Built motion from commit 0d364609.|2.5.33
authorAndrea Amorese <andrea.amorese@xenialab.it>
Wed, 6 Oct 2021 14:14:14 +0000 (16:14 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Wed, 6 Oct 2021 14:14:14 +0000 (16:14 +0200)
1261 files changed:
apidoc/api_data.js
apidoc/api_data.json
apidoc/api_project.js
apidoc/api_project.json
package.json
public/app/forgot/i18n/de.json
public/app/login/i18n/de.json
public/app/main/apps/analytics/i18n/de.json
public/app/main/apps/chat/i18n/de.json
public/app/main/apps/contactmanager/i18n/de.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/mail/i18n/de.json
public/app/main/apps/marketplace/i18n/ar.json
public/app/main/apps/marketplace/i18n/cs.json
public/app/main/apps/marketplace/i18n/da.json
public/app/main/apps/marketplace/i18n/de.json
public/app/main/apps/marketplace/i18n/en.json
public/app/main/apps/marketplace/i18n/es.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/marketplace/i18n/fa.json
public/app/main/apps/marketplace/i18n/fi.json
public/app/main/apps/marketplace/i18n/fr.json
public/app/main/apps/marketplace/i18n/he.json
public/app/main/apps/marketplace/i18n/hi.json
public/app/main/apps/marketplace/i18n/id.json
public/app/main/apps/marketplace/i18n/it.json
public/app/main/apps/marketplace/i18n/ja.json
public/app/main/apps/marketplace/i18n/ko.json
public/app/main/apps/marketplace/i18n/lt.json
public/app/main/apps/marketplace/i18n/lv.json
public/app/main/apps/marketplace/i18n/nl.json
public/app/main/apps/marketplace/i18n/no.json
public/app/main/apps/marketplace/i18n/pl.json
public/app/main/apps/marketplace/i18n/pt-BR.json
public/app/main/apps/marketplace/i18n/pt-PT.json
public/app/main/apps/marketplace/i18n/ru.json
public/app/main/apps/marketplace/i18n/sv.json
public/app/main/apps/marketplace/i18n/tr.json
public/app/main/apps/marketplace/i18n/zh-CN.json
public/app/main/apps/marketplace/i18n/zh-TW.json
public/app/main/apps/openchannel/i18n/de.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/tools/i18n/en.json
public/app/main/apps/tools/i18n/it.json
public/app/main/apps/voice/i18n/ar.json
public/app/main/apps/voice/i18n/cs.json
public/app/main/apps/voice/i18n/da.json
public/app/main/apps/voice/i18n/de.json
public/app/main/apps/voice/i18n/en.json
public/app/main/apps/voice/i18n/es.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/voice/i18n/fa.json
public/app/main/apps/voice/i18n/fi.json
public/app/main/apps/voice/i18n/fr.json
public/app/main/apps/voice/i18n/he.json
public/app/main/apps/voice/i18n/hi.json
public/app/main/apps/voice/i18n/id.json
public/app/main/apps/voice/i18n/it.json
public/app/main/apps/voice/i18n/ja.json
public/app/main/apps/voice/i18n/ko.json
public/app/main/apps/voice/i18n/lt.json
public/app/main/apps/voice/i18n/lv.json
public/app/main/apps/voice/i18n/nl.json
public/app/main/apps/voice/i18n/no.json
public/app/main/apps/voice/i18n/pl.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/voice/i18n/pt-PT.json
public/app/main/apps/voice/i18n/ru.json
public/app/main/apps/voice/i18n/sv.json
public/app/main/apps/voice/i18n/tr.json
public/app/main/apps/voice/i18n/zh-CN.json
public/app/main/apps/voice/i18n/zh-TW.json
public/app/main/apps/whatsapp/i18n/ar.json
public/app/main/apps/whatsapp/i18n/cs.json
public/app/main/apps/whatsapp/i18n/da.json
public/app/main/apps/whatsapp/i18n/de.json
public/app/main/apps/whatsapp/i18n/en.json
public/app/main/apps/whatsapp/i18n/es.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/main/apps/whatsapp/i18n/fa.json
public/app/main/apps/whatsapp/i18n/fi.json
public/app/main/apps/whatsapp/i18n/fr.json
public/app/main/apps/whatsapp/i18n/he.json
public/app/main/apps/whatsapp/i18n/hi.json
public/app/main/apps/whatsapp/i18n/id.json
public/app/main/apps/whatsapp/i18n/it.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.79e08137.js [moved from public/scripts/app.402e83f6.js with 52% similarity]
public/styles/app.91ca40ed.css [new file with mode: 0644]
public/styles/app.d488371f.css [deleted file]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/realtime/realtime.model.js [moved from server/api/userVoicePrefix/userVoicePrefix.attributes.js with 59% similarity]
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js [deleted file]
server/api/teamVoicePrefix/teamVoicePrefix.model.js [deleted file]
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.model.js [deleted file]
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/index.js
server/migrations/2.5.34.js [deleted file]
server/migrations/2.5.35.js [deleted file]
server/migrations/2.5.36.js [deleted file]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/safe-template.js [deleted file]
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 e3d4a53..0d008a3 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.36",
+  "version": "2.5.33",
   "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-10-06T13:27:58.293Z",
+    "time": "2021-10-06T14:00:08.243Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 6e775ac..3928990 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.36",
+  "version": "2.5.33",
   "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-10-06T13:27:58.293Z",
+    "time": "2021-10-06T14:00:08.243Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 7fc4a60..2bfed03 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.36",
+  "version": "2.5.33",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
@@ -35,7 +35,7 @@
   "license": "EULA",
   "scripts": {
     "start": "nodemon server/app.js",
-    "js-beautify": "js-beautify `node -p \"require('glob').sync('./**/*.{js,html}', { nodir: true, ignore: ['./node_modules/**', './client/bower_components/**', './bower_components/**', './client/assets/**', './snippet/**', './dist/**', './.tmp/**', './server/files/**'] }).join('\\n')\"`",
+    "js-beautify": "js-beautify `node -p \"require('glob').sync('./**/*.{js,html}', { nodir: true, ignore: ['./node_modules/**', './client/bower_components/**', './bower_components/**', './client/assets/**', './snippet/**', './dist/**', './.tmp/**'] }).join('\\n')\"`",
     "eslint:check": "eslint .",
     "eslint:fix": "eslint --fix .",
     "prettier:check": "prettier --check './**/*'",
     "aws-sdk": "2.610.0",
     "bimedia-machine-uuid": "1.0.1",
     "bluebird": "3.7.2",
-    "html-entities": "2.3.2",
     "body-parser": "1.19.0",
     "compare-versions": "3.6.0",
     "composable-middleware": "0.3.0",
     "connect-timeout": "1.9.0",
     "cookie-parser": "1.4.5",
     "cors": "2.8.5",
-    "cron-job-manager": "1.0.7",
     "crypto-js": "3.1.9-1",
+    "cron-job-manager": "1.0.7",
     "desk.js": "0.1.4",
     "dialogflow": "0.8.2",
     "ejs": "2.7.4",
index 5c4734e..53a27fb 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
+    "TITLE": "Ihr Passwort wiederherstellen",
+    "EMAIL_ADRESS": "E-mail Adresse",
     "SEND_RESET_LINK": "LINK ZUM ZURÜCKSETZEN SENDEN",
     "GO_BACK": "Zurück zum Login",
     "LINK_SENT": "Link gesendet",
-    "LINNK_SENT_MESSAGE": "Eine E-Mail mit einem Link zum Zurücksetzen des Passwortes wurde an Ihre Adresse gesendet.",
-    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
+    "LINNK_SENT_MESSAGE": "Eine e-Mail mit einem Link zum Zurücksetzen des Kennworts wurde an Ihre Adresse gesendet!",
+    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
-      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
+      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
     }
   }
 }
index bced170..c090dfa 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Bitte mit Ihrem Konto anmelden",
+    "TITLE": "Melden Sie sich bei Ihrem Konto an",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Anmeldedaten merken",
+    "REMEMBER_ME": "Erinnere Dich an Mich",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "ANMELDEN",
+    "LOG_IN": "LOG IN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Anmeldung mit Google",
-    "WITH_FACEBOOK": "Anmeldung mit Facebook",
+    "WITH_GOOGLE": "Melden Sie sich mit Google",
+    "WITH_FACEBOOK": "Mit Facebook anmelden",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Konto erstellen",
+    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Abbrechen",
-    "SELECT": "Auswählen",
+    "CANCEL": "Stornieren",
+    "SELECT": "Wählen",
     "TELEPHONES": "Telefone"
   }
 }
index e6b577a..e60162b 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
+      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Operator",
+    "OPERATOR": "Betreiber",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "Ergebins begrenzt",
+    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Sortieren nach",
+    "ORDER_BY": "Bestellung von",
     "ADD_REPORTFIELD": "Feld hinzufügen",
     "EDIT_REPORTFIELD": "Feld bearbeiten",
     "DELETE_REPORTFIELD": "Feld löschen",
     "NO_METRIC_FOUND": "Keine Metrik gefunden",
     "NO_AVAILABLE_INFO": "keine Informationen verfügbar",
     "CUSTOM_METRIC": "Benutzerdefinierte Metrik",
-    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
+    "DELETE_EXTRACTEDREPORT": "Löschen extrahierte Berichte",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
+    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 02f4f10..4bc9896 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl der Zeiten pro Interaktion",
+    "TIMES": "Anzahl von Malen pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
+    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
+    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Schlüssel",
+    "KEY": "Key",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
-    "NONE": "Nichts",
+    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
+    "NONE": "Keine",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
+    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Webseiten-Skript",
+    "WEBSITESCRIPT": "Website-Script",
     "DELETE_OFFLINEMESSAGE": "Löschen",
     "OFFLINEMESSAGES": "Offline Nachrichten",
     "FORWARD_OFFLINE": "Offline weiterleiten",
     "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
     "CLOSINGFORM": "Formular schließen",
     "ENABLERATING": "Bewertung aktivieren",
-    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
+    "ENABLECUSTOMERWRITING": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Abschluss Nachricht",
-    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
+    "CLOSINGMESSAGE": "Nachricht schließen",
+    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Wahre Priorität",
+    "TRUEPRIORITY": "Echte Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "SENDUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "SKIPUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WEBSITEALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SENDUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SKIPUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "WEBSITEALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
       "AGENT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "CONDITION_REQUIRED": "Pflichtfeld",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "REJECTURL_MUST_VALID_URL": "Falsches Format",
       "CLOSEURL_MUST_VALID_URL": "Falsches Format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "KEY_REQUIRED": "Pflichtfeld",
-      "WAITINGMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WAITINGTITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "HEADER_OFFLINE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "CLOSINGQUESTION_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WAITINGMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "WAITINGTITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "HEADER_OFFLINE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CLOSINGQUESTION_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "NOTETITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "NOTETITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "VERTICALPOSITION_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "TAG_REQUIRED": "Pflichtfeld",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "MESSAGEFONTSIZE_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "CM_FIELD": "Kontaktmanager-Feld",
-    "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
-    "NEW_CHATPROACTIVEACTION": "Neue proaktive Anfrage",
-    "EDIT_CHATPROACTIVEACTION": "Proaktive Anfrage bearbeiten",
-    "DELETE_CHATPROACTIVEACTION": "Proaktive Anfrage löschen",
-    "ADD_CHATPROACTIVEACTION": "Proaktive Anfrage hinzufügen",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Anfragen verfügbar",
+    "CM_FIELD": "Kontakt Manager Feld",
+    "CHATPROACTIVEACTIONS": "Proaktive Aktionen",
+    "NEW_CHATPROACTIVEACTION": "Neue proaktive Aktion",
+    "EDIT_CHATPROACTIVEACTION": "Proaktive Aktion bearbeiten",
+    "DELETE_CHATPROACTIVEACTION": "Proaktive Aktion löschen",
+    "ADD_CHATPROACTIVEACTION": "Proaktive Aktion hinzufügen",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Aktionen verfügbar",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Mouse-Over",
+    "MOUSEOVER": "Maus über",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Selektion",
+    "SELECTOR": "Wählschalter",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Nach Oben",
-    "DOWN": "Nach Unten",
-    "COLLAPSE": "Einklappen",
-    "PROACTIVEACTIONS": "Proaktive Anfragen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "UP": "Bis",
+    "DOWN": "Unten",
+    "COLLAPSE": "Zusammenklappen",
+    "PROACTIVEACTIONS": "Proaktive Aktionen",
+    "DISPOSITIONS": "Dispositionen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Darstellung",
+    "APPEARANCE": "Aussehen",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Buttonfarbe",
+    "BUTTONCOLOR": "Tastenfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "NAME_TITLE": "Name Titel",
-    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
-    "EMAIL_TITLE": "E-Mail Titel",
-    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail Adresse",
-    "START_CHAT_BUTTON": "'Chat starten' Button",
-    "AGENTS_BUSY": "Agenten besetzt",
+    "NAME_TITLE": "Name Eingabebezeichnung",
+    "USERNAME_PLACEHOLDER": "Benutzername Eingabe Platzhalter",
+    "EMAIL_TITLE": "E-Mail-Eingabe Label",
+    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail-Eingabe",
+    "START_CHAT_BUTTON": "'Chat starten' Taste",
+    "AGENTS_BUSY": "Meldung für besetzte Agenten",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachricht Titel",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
-    "ENQUIRY_BUTTON": "Anfrage-Button",
+    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
+    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Button Bewertung senden",
-    "RATING_SKIP": "Button Bewertung überspringen",
+    "RATING_SEND": "Bewertung Senden Tasten-Text",
+    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktiv",
+    "PROACTIVE": "Proaktive",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
+    "CLOSE": "Schliessen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbetten",
+    "EMBEDDING": "Einbettung",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "HELP": {
-      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
-      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
-      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
+      "MAPKEY": "Das folgende Motion Contact Manager-Feld:",
+      "FROMKEY": "Wird in Ihrem Motion Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generiertes Token, das im Skript verwendet wird",
       "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie den Skripttext und fügen Sie ihn in Ihre Website ein",
       "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "Das Feld muss das folgende Format haben: ≪protocol>://<IP-Adresse>[:<port>]. Beispiel: https://X.Y.Z.W",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: ≪Protocol>:// ≪IP-Adresse>: ≪port>]. Beispiel: https://X.Y.Z.W",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
+      "LIST": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
-      "TIMEZONE": "Zeitzone auswählen (Standard = lokale Zeitzone)",
-      "ENABLERATING": "Bewertung nach Chat durch Kunden aktivieren",
-      "ENABLEFEEDBACK": "Feedback nach Chat durch Kunden aktivieren (Max. 150 Zeichen)",
-      "FORWARDTRANSCRIPT": "Chatprotokoll nach Abschluss per E-Mail senden",
-      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht bearbeitet geschlossen werden sollen, sofern kein Agent verfügbar ist.",
-      "ENABLEUNMANAGEDNOTE": "Automatische Nachricht an den Kunden, wenn alle Agenten besetzt sind und somit der Chat nicht verfügbar ist",
-      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmmt. Hinweis: Dadurch kein Status \"unbearbeitet\"",
-      "INTERVAL": "Bitte aus der Liste wählen",
+      "INTEVAL": "Wird aus der Liste der verfügbaren Intervalle ausgewählt",
+      "TIMEZONE": "Wählen Sie eine aus der Liste aus (Standard = lokale Zeitzone)",
+      "ENABLERATING": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher die Interaktion am Ende bewerten kann",
+      "ENABLEFEEDBACK": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher am Ende ein Feedback (bis zu 150 Zeichen) senden kann",
+      "FORWARDTRANSCRIPT": "Aktivieren Sie diese Option, wenn der Webbesucher aufgefordert wird, ein Chat-Protokoll per E-Mail zu erhalten",
+      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht verwaltet geschlossen werden sollen, wenn kein Agent verfügbar ist. Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Aktivieren Sie diese Option, wenn dem Besucher eine Nachricht angezeigt werden soll, wenn alle Agenten besetzt sind und der Chat nicht mehr verwaltet wird",
+      "ENABLECUSTOMERWRITING": "Aktivieren Sie es, wenn der Chat gestartet werden soll, ohne auf einen verfügbaren Agenten zu warten (Achtung: Wenn Sie ihn aktivieren, werden Ihre Chats niemals nicht verwaltet). Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/ Chat + Websites # ChatWebsites-Snippet ",
+      "INTERVAL": "Wählen Sie eins aus der Liste aus",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
       "WEBSITEALIAS": "Ein Präfix, mit dem der Agentenname (Präfix + Agenten-ID) erstellt wird, der dem Webbesucher während der Chat-Sitzung angezeigt wird",
-      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
-      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "VERTICALPOSITION": "Stellt den Abstand in Prozent von oben dar",
+      "WELCOMEMESSAGE": "Lassen Sie das Feld leer, wenn Sie keine Willkommensnachricht senden möchten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
-    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Dispositionen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
+    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
+    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
+    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Rundes Design",
-    "SQUARED": "Eckiges Design",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ROUNDED": "Abgerundet",
+    "SQUARED": "Quadratisch",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
-    "OPEN": "Offen",
+    "OPENED": "Öffnen",
+    "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alles",
-    "SELECT_STATUS": "Status auswählen",
+    "ALL": "Alle",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Ausgewählte Webseite",
+    "SELECTED_WEBSITE": "Wählen Sie eine Website",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Webseite auswählen",
+    "SELECT_WEBSITE": "Wählen Sie eine Website",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Titel während Warten",
-    "WAITINGMESSAGE": "Wartenachricht",
+    "WAITINGTITLE": "Wartetitel",
+    "WAITINGMESSAGE": "Wartende Nachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "in Pause",
+    "PAUSED": "Pausiert",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "WRITING": "am Schreiben",
+    "WAITING": "Warten",
+    "WRITING": "Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "VOICE": "Anrufe",
+    "IN_USE": "Im Einsatz",
+    "VOICE": "Sprache",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
+    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agenten-Avatar",
-    "SPYINTERACTION": "Mitlesen",
+    "AGENTAVATAR": "Agent Avatar",
+    "SPYINTERACTION": "Spion",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Abschlussfrage",
+    "CLOSINGQUESTION": "Frage schließen",
     "WEBSCRIPT": "Webskript",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_CHATCANNEDANSWER": "Neue Textvorlage",
-    "ADD_CHATCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
-    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht bei Offline",
-    "OFFLINEMESSAGEBODY": "Test der Nachricht bei Offline",
-    "FORMSUBMITSUCCESSMESSAGE": "Meldung Formular erfolgreich gesendet",
-    "FORMSUBMITFAILUREMESSAGE": "Meldung Fehler beim Senden des Formulars",
-    "PLACEHOLDERMESSAGE": "Nachricht für Platzhalter",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_CHATCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_CHATCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CHATCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CHATCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht",
+    "OFFLINEMESSAGEBODY": "Nachrichtentext",
+    "FORMSUBMITSUCCESSMESSAGE": "Erfolgsmeldung beim Absenden des Formulars",
+    "FORMSUBMITFAILUREMESSAGE": "Fehlermeldung beim Absenden des Formulars",
+    "PLACEHOLDERMESSAGE": "Platzhalter für Nachrichten",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSOUND": "Ton",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
-    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
+    "HIDEWHENOFFLINE": "Ausblenden",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Transfer in Warteschlange",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CHATCANNEDANSWERS": "Textvorlagen",
+    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot-Name",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
-    "ENABLESENDBUTTON": "Senden-Button aktivieren",
+    "TEAMS_ASSOCIATION": "Teams Verband",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ENABLESENDBUTTON": "Sendetaste aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Key",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Betreff",
+    "SUBJECT": "Gegenstand",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "NOTE": "Notiz",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "NOTE": "Hinweis",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index 3c27f23..da8b00a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
-    "CAMPAIGNID": "Kampagnen-ID",
-    "STATE": "Status",
+    "VOICEQUEUEID": "Sprachwarteschlange ID",
+    "CAMPAIGNID": "Kampagne ID",
+    "STATE": "Zustand",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper final",
-    "HISTORY": "Hopper historisch",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper Geschichte",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
     "DELETE_HOPPER": "Hopper löschen",
     "RELOAD": "Neu laden",
     "NO_COMPANIES": "Kein Unternehmen",
-    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
+    "NO_AVAILABLE_ITEMS": "Keine verfügbaren Artikel",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
+      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
-    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositionen",
+    "VOICEDISPOSITIONS": "Sprachdispositionen",
+    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "COMPANIES": "Unternehmen",
     "EDIT_COMPANY": "Unternehmen bearbeiten",
     "DELETE_COMPANY": "Unternehmen löschen",
@@ -76,7 +76,7 @@
     "STREET": "Straße",
     "POSTALCODE": "Postleitzahl",
     "DELETE": "Löschen",
-    "DELETE_ALL": "Alles Löschen",
+    "DELETE_ALL": "Alle Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Beenden",
-    "SUCCESS": "Erfolg",
+    "FINISH": "Fertig",
+    "SUCCESS": "Erfolgreich",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Anrufqualifizierung verfügbar",
-    "ADD_VOICEDISPOSITION": "Anrufqualifizierung hinzufügen",
-    "EDIT_VOICEDISPOSITION": "Anrufqualifizierung bearbeiten",
-    "DELETE_VOICEDISPOSITION": "Anrufqualifizierung löschen",
-    "VAT": "Ust-ID.",
-    "COMPANYID": "Unternehmens-ID",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Sprachdispositionen verfügbar",
+    "ADD_VOICEDISPOSITION": "Sprachdisposition hinzufügen",
+    "EDIT_VOICEDISPOSITION": "Sprachdisposition bearbeiten",
+    "DELETE_VOICEDISPOSITION": "Sprachdisposition löschen",
+    "VAT": "Mwst.",
+    "COMPANYID": "Ihre Unternehmens-ID",
     "WEBSITE": "Website",
     "EMAIL_DOMAIN": "E-Mail Domain",
     "ADDRESS": "Adresse",
     "GOTOCONTACTS_COMPANY": "Kontakte anzeigen",
     "ADD_AGENT_TO_LIST": "Agenten zur Liste hinzufügen",
     "AGENTADD_LIST": "Agenten zur Liste hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "NONE": "Nichts",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NONE": "Keine",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "auf Duplikate prüfen",
+    "CHECK_DUPLICATES": "Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV-Datei",
+    "UPLOAD_CSV": "Hochladen von CSV",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "SELECT_LIST": "Liste auswählen",
-    "SELECT_COMPANY": "Unternehmen auswählen",
-    "SELECT_TAGS": "Tags auswählen",
+    "SELECT_LIST": "Wählen Sie eine Liste aus",
+    "SELECT_COMPANY": "Wählen Sie ein Unternehmen aus",
+    "SELECT_TAGS": "Wählen Sie ein oder mehrere Tags aus",
     "HELP": {
-      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist",
-      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist"
+      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler-Log exportieren",
+    "EXPORT_ERRORS": "Fehler exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei auswählen",
+    "SELECT_FILE": "Datei aussuchen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
-    "SELECT_TAG": "Tag auswählen",
+    "CUSTOMER_JOURNEY": "Kundenreise",
+    "SELECT_TAG": "Wählen Sie Tags aus",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftag",
+    "EXPIREDAY": "Ablauftage",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
-    "RECALLME": "Rückruf anfordern",
+    "VATNUMBER_CF": "Codice Fiscale / VAT",
+    "RECALLME": "Ruf mich zurück",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Klicken für Aktion"
+    "CLICKTOACTION": "Zur Aktion klicken"
   }
 }
index dbfb7c7..df9fabe 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Startseite",
+    "HOME": "Home",
     "CHAT": "Chat",
-    "MAIL": "E-Mail",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "MAIL": "Email",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Betriebssystem Name",
-    "OS_VERSION": "Betriebssystem Version",
+    "OS_NAME": "Name des Betriebssystems",
+    "OS_VERSION": "Version des Betriebssystems",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Rückruf anfordern",
-    "DROP_RATE": "Abbruchrate Anrufe",
+    "RECALLME": "Ruf mich zurück",
+    "DROP_RATE": "Abgebrochene Anrufrate",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufzeichnungen",
-    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
+    "RECORDINGS": "Aufnahmen",
+    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Qualifizieren",
+    "DISPOSE": "Entsorgen",
     "QUEUES": "Warteschlangen",
-    "DIALER_CALL": "Dialer-Anruf",
+    "DIALER_CALL": "Dialer Anruf",
     "ELAPSED_TIME": "Abgelaufene Zeit",
     "EDIT": "Bearbeiten",
     "MERGE": "Zusammenführen",
     "DUPLICATE": "Duplizieren",
     "UNIQUEID": "Eindeutige ID",
     "CAMPAIGN": "Kampagne",
-    "NONE": "Nichts",
+    "NONE": "Keine",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Speziell",
+    "SPECIAL": "Spezielle",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "erneut Planen",
+    "RESCHEDULE": "Verschieben",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobilnummer",
+    "MOBILE": "Mobile",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Sprache",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
-    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
-    "WAITING": "Anrufe in Warteschlange",
+    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
+    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
+    "WAITING": "Anrufe in der Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen eingehend",
-    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
-    "ABANDONED": "Abgebrochen",
-    "TOTAL_OFFERED": "Gesamt angeboten",
+    "INBOUND_ANSWERED": "Angenommen",
+    "OUTBOUND_ANSWERED": "Angenommen",
+    "ABANDONED": "Verlassen",
+    "TOTAL_OFFERED": "Insgesamt",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
-    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
-    "ABANDON_RATE": "Abbruchrate",
-    "UNMANAGED": "Nicht bearbeitet",
-    "TOTAL": "Gesamt",
+    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "ABANDON_RATE": "Verlassene Anrufrate",
+    "UNMANAGED": "Nicht verwaltete",
+    "TOTAL": "Insgesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
-      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
-      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
-      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
-      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
-      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
-      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
-      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
-      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
-      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
-      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
-      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
-      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
-      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
-      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
-      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
-      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
-      "OPENED": "Gesamtzahl der aktiven Interaktionen",
-      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
-      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
-      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
-      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
-      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
-      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
-      "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
-      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
+      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/Limitiert",
+      "DROPPED": "Die Gesamtzahl abgebrochener Anrufe aus der Warteschlange",
+      "DROP_RATE": "Die Rate aller abgebrochener Anrufe aus der Warteschlange",
+      "WAITING": "Die Gesamtzahl der wartenden Anrufe aus der Warteschlange",
+      "OUTBOUND_ANSWERED": "Die Gesamtzahl der angenommenen ausgehenden Anrufe",
+      "ABANDONED": "Die Gesamtzahl der abgebrochenen Anrufe aus der Warteschlange",
+      "TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
+      "AVG_HOLD_TIME": "Die durchschnittliche Interaktionswartezeit, d.h. die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Interaktionen.",
+      "OUTBOUND_ANSWER_RATE": "Die Rate aller angenommenen ausgehenden Anrufe",
+      "ABANDON_RATE": "Die Rate aller verlassenen Anrufe aus der Warteschlange",
+      "UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "TOTAL": "Die Gesamtzahl der ausgehenden Anrufe",
+      "TOT_DURATION": "Die Gesamtdauer aller ausgehenden Anrufe",
+      "AVG_DURATION": "Die durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
+      "ORIGINATED": "Die Gesamtzahl der in den Warteschlangenkampagnen gewählten Anrufe",
+      "ABANDONED_RATE": "Die Rate aller abgebrochenen Interaktionen",
+      "AVG_MANAGED_TIME": "Die durchschnittliche verwaltete Interaktionszeit, nämlich die durchschnittliche Zeit, die während des Gesprächs verbracht wird",
+      "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
+      "MANAGED_RATE": "Die verwaltete Rate aller Interaktionen",
+      "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
+      "UNMANAGED_RATE": "Die nicht verwaltete Rate aller Interaktionen",
+      "VOICE_ABANDONED": "Die Gesamtzahl der aufgegebenen Warteschlangenanrufe unter Berücksichtigung aller vorhandenen Warteschlangen. Beachten Sie, dass Anrufe, die wegen Timeout und joinempty abgebrochen werden, nicht berücksichtigt werden",
+      "VOICE_ANSWERED": "Die Gesamtzahl der abgeschlossenen Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "VOICE_ANSWER_RATE": "Die Antwortrate aller Warteschlangenanrufe",
+      "VOICE_AVG_HOLD_TIME": "Die durchschnittliche Wartezeit für Warteschlangen, nämlich die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Warteschlangen",
+      "VOICE_AVG_TALK_TIME": "Die durchschnittliche Gesprächszeit in der Warteschlange, nämlich die durchschnittliche Gesprächszeit für alle vorhandenen Warteschlangen",
+      "VOICE_TALKING": "Die Gesamtzahl der aktiven Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
+      "VOICE_UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "VOICE_WAITING": "Die Gesamtanzahl der wartenden Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "MANDATORY_DISPOSITION_ENABLED": "Obligatorische Disposition für dieses Konto aktiviert",
+      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung",
+      "LIKE_FILTER": "Suchen Sie nach dem angegebenen Muster"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
-    "WELCOME_TO_MOTION": "Willkommen zu Motion",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "WELCOME_TO_MOTION": "Willkommen bei Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Kontaktmanager",
+    "CONTACTMANAGER": "Contact Manager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
+    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu Laden",
+    "RELOAD": "Neu laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "TALKING_TEXT": "Aktive Anrufe",
-    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
-    "ABANDONED_TEXT": "Abgebrochene Anrufe",
-    "DROP_RATE_TEXT": "Abbruchrate",
-    "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
-    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
-    "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
-    "INBOUND_ANSWER_RATE_TEXT": "Antwortrate ",
-    "UNMANAGED_TEXT": "Nicht bearbeitete Interaktionen",
-    "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
-    "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
+    "TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
+    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
+    "ABANDONED_TEXT": "Verlassene Anrufe in der Warteschlange",
+    "DROP_RATE_TEXT": "Rate abgebrochener Anrufe in der Warteschlange",
+    "TOTAL_OFFERED_TEXT": "Gesamtzahl der Interaktionen",
+    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit der Interaktionen",
+    "AVG_TALK_TIME_TEXT": "Gesprächszeit der Warteschlangenanrufe",
+    "INBOUND_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange ",
+    "UNMANAGED_TEXT": "Nicht verwaltete Interaktionen",
+    "TOTAL_TEXT": "Gesamtzahl ausgehender Anrufe",
+    "OUTBOUND_ANSWERED_TEXT": "Ausgehende angenommene Anrufe ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
     "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
     "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
+    "OF": "Von",
+    "REPLY_PLACEHOLDER": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
-    "DISPOSITIONS": "Qualifizierungen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
-    "ACCEPT": "Annehmen",
+    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
+    "DISPOSITIONS": "Dispositionen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
+    "ACCEPT": "Akzeptieren",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Information",
+    "INFO": "Info",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
+    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
     "ATTENTION": "Achtung",
     "SOCIAL": "Sozial",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "SELECT_WEBSITE": "Webseite auswählen",
-    "ALL": "Alles",
+    "SELECT_WEBSITE": "Wählen Sie die Webseite",
+    "ALL": "Alle",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Begonnen am",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Anzeigen",
+    "SHOW": "Zeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Benutzer auswählen",
+    "SELECT_USER": "Wählen Sie einen Benutzer",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Beendet am",
+    "END_AT": "Ende am",
     "DURATION": "Dauer",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
     "PENDING": "Ausstehend",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
-    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
-    "LOADING_INTERACTION": "Interaktion wird geladen",
+    "FILTER_VOICE_QUEUES": "Sprachwarteschlangen filtern",
+    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "MARCH": "März",
     "SELECT_DATE": "Datum auswählen",
     "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
     "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anrufen",
+    "CALL_NUMBER": "Anruf",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf erfolgreich gespeichert",
-    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
-    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
+    "CALL_SAVED": "Anruf richtig gespeichert",
+    "CALL_DISPOSED": "Anruf richtig entsorgt",
+    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "von",
+    "CHANNEL_FROM": "Von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Agenten auswählen",
+    "SELECT_AGENT": "Wählen Sie den Agenten aus",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
+    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Abgebrochen",
-    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
+    "ABANDONAT": "Verlassen",
+    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Warteschlange auswählen",
+    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
+    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
+    "CUSTOMER_JOURNEY": "Kundenreise",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
-    "ABANDONED_RATE": "Abbruchrate",
-    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
-    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
-    "MANAGED": "Bearbeitet",
-    "MANAGED_RATE": "Bearbeitungsrate",
-    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
-    "MANAGED_TEXT": "Interaktionen bearbeitet",
-    "OPENED_TEXT": "Interaktionen geöffnet",
+    "NO_DISPOSITION_SET": "Keine Disposition festgelegt",
+    "ABANDONED_RATE": "Verlassene Rate",
+    "ABANDONED_RATE_TEXT": "Rate verlassener Interaktionen",
+    "AVG_MANAGED_TIME": " Durchschnittliche Verwaltungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Verwaltungszeit der Interkationen",
+    "MANAGED": "Verwaltet",
+    "MANAGED_RATE": "Verwaltete Rate",
+    "MANAGED_RATE_TEXT": "Verwaltete Interaktionsrate",
+    "MANAGED_TEXT": "Verwaltete Interaktionen",
+    "OPENED_TEXT": "Geöffnete Interaktionen",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "UNMANAGED_RATE": "Rate nicht Bearbeitet",
-    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
-    "VOICE_ABANDONED": "Abgebrochen",
-    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
-    "VOICE_ABANDON_RATE": "Abbruchrate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "UNMANAGED_RATE": "Nicht verwaltete Rate",
+    "UNMANAGED_RATE_TEXT": "Nicht verwaltete Interaktionsate",
+    "VOICE_ABANDONED": "Verlassen",
+    "VOICE_ABANDONED_TEXT": "Verlassene Warteschlangenanrufe",
+    "VOICE_ABANDON_RATE": "Verlassene Rate",
+    "VOICE_ABANDON_RATE_TEXT": "Rate verlassener Warteschlangenanrufe",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Antwortrate",
+    "VOICE_ANSWER_RATE": "Angenommene Rate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
+    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
-    "VOICE_UNMANAGED": "Nicht bearbeitet",
-    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED": "Insgesamt",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED": "Nicht verwaltet",
+    "VOICE_UNMANAGED_TEXT": "Nicht verwaltete Anrufe in der Warteschlange",
     "VOICE_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Persönlich",
+    "PRIVATE": "Privat",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
+    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
     "VISIBILITY": "Sichtbarkeit",
-    "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
-    "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
-    "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
-    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
-    "SELECT_ALL": "Alles auswählen",
+    "INTERACTION_CLOSED": "Interaktion korrekt geschlossen",
+    "INTERACTION_CLOSED_DISPOSED": "Interaktion korrekt geschlossen und entsorgt",
+    "INTERACTION_DISPOSED": "Interaktion korrekt entsorgt",
+    "ASSIGNED_TO_OTHERS": "An andere zugewiesen",
+    "SELECT_ALL": "Alle auswählen",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "ID",
+    "ID": "Id",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "CANCEL": "Abbrechen",
-    "DRAFT": "Entwurf speichern",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
+    "CANCEL": "Stornieren",
+    "DRAFT": "Entwurf",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Sind Sie sicher, dass Sie ihn überschreiben möchten?",
     "DRAFT_SAVE_WARNING_TITLE": "Vorhandenen Entwurf überschreiben?",
     "OVERWRITE": "Überschreiben",
     "SAVE_AS_DRAFT": "Als Entwurf speichern",
     "UNTITLED": "Ohne Titel",
     "UPDATE_DRAFT": "Entwurf aktualisieren",
     "NO_AVAILABLE_INTERACTION": "Keine Interaktionen verfügbar",
-    "ACCOUNTINGDOC": "Abrechnungsdokumente",
+    "ACCOUNTINGDOC": "Buchhaltung",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alles",
-    "ALL_STATUS": "Alles",
-    "ALL_STEP": "Alles",
+    "ALL_PRODUCTS": "Alle",
+    "ALL_STATUS": "Alle",
+    "ALL_STEP": "Alle",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "SALDO",
+    "BALANCE": "BALANCE",
     "BY": "Durch",
     "CLONEPROFORMA": "Klon",
     "COMPANIES": "Unternehmen",
     "DOSSIERS": "Dossiers",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
-    "FROM": "von",
+    "FROM": "Von",
     "GRAPHINVOICES": "Diagramm der Rechnungsemission",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEPAYED": "Bezahlt",
     "INVOICES": "RECHNUNGEN",
     "INVOICESTATUS": "Status",
-    "INVOICETOTAL": "Gesamt",
+    "INVOICETOTAL": "Insgesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Gesamt",
+    "QUOTATIONTOTAL": "Insgesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Gesamt",
+    "QUOTATIONTOTALS": "Insgesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Arbeitsablauf wählen",
+    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
     "YEARS": "Jahre",
     "CUSTOMER_IP": "Ursprüngliche IP-Adresse",
     "CUSTOMER_PORT": "Ursprünglicher TCP-Port",
     "ADVANCED_SEARCH": "Erweiterte Suche",
-    "AND": "und",
+    "AND": "Und",
     "APPLY": "Anwenden",
-    "CONTAINS": "enthält",
+    "CONTAINS": "Enthält",
     "DISABLED": "Deaktiviert",
     "ENABLED": "Aktiviert",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
-    "ENDS_WITH": "endet mit",
-    "EQUALS": "gleich",
-    "IS_AMONG": "ist unter",
-    "IS_BETWEEN": "ist zwischen",
-    "IS_GREATER_THAN": "ist größer als",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "ist größer oder gleich",
-    "IS_LESS_THAN": "ist kleiner als",
-    "IS_LESS_THAN_OR_EQUAL_TO": "ist kleiner oder gleich",
-    "IS_NOT_AMONG": "ist nicht innerhalb",
-    "IS_NOT_EQUAL": "ist nicht gleich",
+    "ENDS_WITH": "Endet mit",
+    "EQUALS": "Gleich",
+    "IS_AMONG": "Ist unter",
+    "IS_BETWEEN": "Ist zwischen",
+    "IS_GREATER_THAN": "Ist größer als",
+    "IS_GREATER_THAN_OR_EQUAL_TO": "Ist größer oder gleich",
+    "IS_LESS_THAN": "Ist kleiner als",
+    "IS_LESS_THAN_OR_EQUAL_TO": "Ist kleiner oder gleich",
+    "IS_NOT_AMONG": "Ist nicht unter",
+    "IS_NOT_EQUAL": "Ist nicht gleich",
     "MEET_ALL_CONDITIONS": "Alle Bedingungen erfüllen",
     "MEET_ANY_CONDITIONS": "Mindestens eine Bedingung erfüllen",
     "NEW_CONDITION": "Neue Bedingung",
     "SELECT_OPERATOR": "Operator auswählen",
     "STARTING_DATE": "Startdatum",
     "STARTING_VALUE": "Startwert",
-    "STARTS_WITH": "beginnt mit",
+    "STARTS_WITH": "Beginnt mit",
     "VALUE": "Wert",
     "VALUES": "Werte",
     "VALUE_RANGE_CHECK": "Wert muss größer sein als",
-    "CHOOSE": "Auswählen",
+    "CHOOSE": "Wählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Warteschlange auswählen",
+    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
+    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
     "CREATEDAT": "Hergestellt in",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
-    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte überprüfe deine Internetverbindung.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
-    "AGENT_PRESENCE": "Bereitschaftsstatus",
-    "SELECT_TEAM": "Team auswählen"
+    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
+    "AGENT_PRESENCE": "Agentenpräsenz",
+    "SELECT_TEAM": "Team auswählen",
+    "AVAILABLE": "Erhältlich"
   }
 }
index fd1c6a8..4b2f44e 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "An",
+    "TO": "Zu",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "CC",
-    "REPLY": "Antworten",
+    "CC": "Cc",
+    "REPLY": "Antwort",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Weiterleiten",
+    "FORWARD": "Vorwärts",
     "SUBJECT": "Betreff",
-    "BCC": "BCC",
+    "BCC": "Bcc",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
-      "EMAIL_ADDRESS_REQUIRED": "E-Mail-Adresse ist erforderlich",
-      "EMAIL_ADDRESS_MUST_VALID": "E-Mail ungültiges Format",
-      "HOST_REQUIRED": "Host wird benötigt",
-      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
-      "PORT_REQUIRED": "Port ist erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "EMAIL_ADDRESS_REQUIRED": "Die E-Mail-Adresse ist erforderlich",
+      "EMAIL_ADDRESS_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "PORT_REQUIRED": "Der Port ist erforderlich",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "AUTHTIMEOUT_REQUIRED": "Zeitlimit für die Authentifizierung ist erforderlich",
-      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
-      "AGENT_REQUIRED": "Agent ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
-      "DISPOSITION_REQUIRED": "Qualifizierung ist erforderlich",
-      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wahre Priorität muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Falsche Priorität muss größer oder gleich sein als",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
-      "QUEUE_REQUIRED": "Warteschlange ist erforderlich",
-      "LIST_REQUIRED": "Liste ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "SERVICE_REQUIRED": "Dienst ist erforderlich,",
-      "IMAP_HOST_REQUIRED": "IMAP-Host ist erforderlich",
-      "IMAP_PORT_REQUIRED": "IMAP-Port erforderlich",
-      "SMTP_HOST_REQUIRED": "SMTP-Host ist erforderlich",
-      "SMTP_PORT_REQUIRED": "SMTP-Port ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
+      "AUTHTIMEOUT_REQUIRED": "Das Zeitlimit für die Authentifizierung erforderlich ist",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "AGENT_REQUIRED": "Der Agent ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich",
+      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
+      "LIST_REQUIRED": "Die Liste ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "SERVICE_REQUIRED": "Der Dienst ist erforderlich,",
+      "IMAP_HOST_REQUIRED": "Der IMAP-Host wird benötigt",
+      "IMAP_PORT_REQUIRED": "Der IMAP-Anschluss erforderlich",
+      "SMTP_HOST_REQUIRED": "Der SMTP-Host ist erforderlich",
+      "SMTP_PORT_REQUIRED": "Der SMTP-Port ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter nicht übereinstimmen",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "FONT_SIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "REPLY_TYPE_REQUIRED": "Pflichtfeld"
@@ -93,9 +93,9 @@
     "MAILACCOUNTS": "E-Mail Konten",
     "EMAIL_ADDRESS": "E-Mail Adresse",
     "ADD_MAILACCOUNT": "E-Mail Konto hinzufügen",
-    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
-    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Signatur",
+    "SIGNATURE": "Unterschrift",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Port",
+    "PORT": "Hafen",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail Qualifizierung verfügbar",
-    "ADD_MAILDISPOSITION": "Qualifizierung hinzufügen",
-    "NEW_MAILDISPOSITION": "Neue E-Mail Qualifizierung",
-    "EDIT_MAILDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_MAILDISPOSITION": "Qualifizierung löschen",
-    "MAILDISPOSITIONS": "E-Mail Qualifizierungen",
+    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail zur Verfügung Verfügungen",
+    "ADD_MAILDISPOSITION": "E-Mail hinzufügen Disposition",
+    "NEW_MAILDISPOSITION": "Neue E-Mail zur Verfügung",
+    "EDIT_MAILDISPOSITION": "Bearbeiten von E-Mail zur Verfügung",
+    "DELETE_MAILDISPOSITION": "Löschen von E-Mail zur Verfügung",
+    "MAILDISPOSITIONS": "E-Mail Verfügungen",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "USERNAME": "Benutzername für die Authentifizierung",
-      "PASSWORD": "Passwort für die Authentifizierung",
-      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zum Server aufgebaut wird",
-      "FONT_FAMILY": "Standard-Schriften",
+      "USERNAME": "Benutzername für die Authentifizierung verwendet werden",
+      "PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
+      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
+      "FONT_FAMILY": "Standardschriftfamilie",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "MARK_AS_UNREAD": "Agent aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "OF": "Von",
+    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "DISPOSITION": "Qualifizierung",
-    "GOTOIF": "GoToIf",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "DISPOSITION": "Disposition",
+    "GOTOIF": "GotoIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Startdatum",
+    "INTERACTIONS": "Wechselwirkungen",
+    "STARTEDAT": "Gestartet am",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sicher",
+    "SECURE": "Sichere",
     "AUTHENTICATION": "Authentifizierung",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_PORT": "SMTP-Port",
     "IMAP_PORT": "IMAP-Port",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "SELECT_STATUS": "Status auswählen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "VOICE": "Anrufe",
+    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
+    "VOICE": "Voice",
     "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Channel öffnen",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Voller Name",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "TOTAL": "Gesamt",
-    "IN": "Eingehend",
-    "OUT": "Ausgehend",
+    "WAITING": "Warten",
+    "TOTAL": "Insgesamt",
+    "IN": "In",
+    "OUT": "Aus",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Noch nicht verifiziert",
+    "NEVER_VERIFIED": "Nie verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
+    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
-    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
-    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
+    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
+    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "INFO": "Information",
+    "IN_USE": "Im Einsatz",
+    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
+    "INFO": "Info",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Mithören",
+    "SPYINTERACTION": "Spy",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz",
+    "NOTE": "Hinweis",
     "TAGS": "Tags",
-    "INTERACTIONS_MAILACCOUNT": "Zu den Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "PENDING": "Warten auf Rückmeldung",
-    "SEND_AS_PENDING": "Senden und auf Rückmeldung warten",
-    "SEND_AND_CLOSE": "Senden und schließen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_MAILCANNEDANSWER": "Neue Textvorlage",
-    "ADD_MAILCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_MAILCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_MAILCANNEDANSWER": "Textvorlage löschen",
+    "INTERACTIONS_MAILACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "PENDING": "Ausstehend",
+    "SEND_AS_PENDING": "Senden als Ausstehend",
+    "SEND_AND_CLOSE": "Senden und Schließen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_MAILCANNEDANSWER": "Neue vordefinierte Antowrt",
+    "ADD_MAILCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_MAILCANNEDANSWER": "Vordefiierte Antwort bearbeiten",
+    "DELETE_MAILCANNEDANSWER": "Vordefinierte Antwort löschen",
     "SHOW_ORIGINAL_MESSAGE": "Ursprüngliche Nachricht anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "ACCEPTED": "Akzeptiert",
     "FONT_FAMILY": "Schriftfamilie",
     "FONT_SIZE": "Schriftgröße",
-    "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "ADD_MAILSUBSTATUS": "SubStatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "SubStatus löschen",
-    "EDIT_MAILSUBSTATUS": "SubStatus bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail SubStatus",
-    "NEW_MAILSUBSTATUS": "Neuer SubStatus",
-    "SEND_AS": "Senden als",
-    "COMMAND": "Eingabe",
+    "MARK_AS_UNREAD": "als ungelesen markieren",
+    "ADD_MAILSUBSTATUS": "Unterstatus hinzufügen",
+    "DELETE_MAILSUBSTATUS": "Löschen",
+    "EDIT_MAILSUBSTATUS": "Bearbeiten",
+    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
+    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
+    "SEND_AS": "Senden Als",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTTRANSFER": "Weiterleitung Agent",
-    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "AGENTADD_MAILACCOUNT": "Agenten zum E-Mail Konto hinzufügen",
+    "TAG": "Etikett",
+    "AGENTTRANSFER": "Agentenübertragung",
+    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agentenübertragungen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "TRANSFER": "Transfer",
+    "AGENTADD_MAILACCOUNT": "Fügen Sie dem E-Mail-Konto Agent hinzu",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Textvorlagen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DOWNLOAD": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
-    "ADVANCED": "Erweitert",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhang",
-    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ADVANCED": "Fortgeschritten",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 97c6fe2..235afae 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 495ea1e..3bd5ad2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop til upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index 054564e..f150ff2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschreibung",
     "DOWNLOAD_PLUGIN": "Plugin herunterladen",
     "DROP_TO_UPLOAD": "Hochladen",
-    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 56d6276..a85d3cb 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descripción",
     "DOWNLOAD_PLUGIN": "Descargar plugin",
     "DROP_TO_UPLOAD": "Suelta para subir",
-    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 0202268..bf299e5 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index b934012..be3860b 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Kuvaus",
     "DOWNLOAD_PLUGIN": "Lataa laajennus",
     "DROP_TO_UPLOAD": "Pudota lähetettäväksi",
-    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 4 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index bbf8e7b..edbcd90 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "La description",
     "DOWNLOAD_PLUGIN": "Télécharger le plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 4 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index d5a9a13..c3cb181 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 043d58e..1170227 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index 86fb87a..c4fbe7e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Deskripsi",
     "DOWNLOAD_PLUGIN": "Unduh plugin",
     "DROP_TO_UPLOAD": "Jatuhkan Untuk Mengunggah",
-    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 212fdff..68e0c53 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Salva",
     "INSTALLING": "Installazione in corso",
     "DROP_TO_UPLOAD": "Trascina il file da caricare",
-    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 190c600..3fd4f57 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index a3774d1..29c0869 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index aad4d13..154c0b7 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Apraksts",
     "DOWNLOAD_PLUGIN": "Lejupielādēt spraudni",
     "DROP_TO_UPLOAD": "Pārvelciet šeit, lai augšupielādētu",
-    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 0ab1946..361f77e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschrijving",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index 0fbd637..d49bd20 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Last ned plugin",
     "DROP_TO_UPLOAD": "Drop til opplasting",
-    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index 2bda13c..d694357 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Opis",
     "DOWNLOAD_PLUGIN": "Pobierz wtyczkę",
     "DROP_TO_UPLOAD": "Upuść, aby przesłać",
-    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index e93ddba..ac5383c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descrição",
     "DOWNLOAD_PLUGIN": "Download do plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 534d51d..39efe9f 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 4085544..171327a 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivning",
     "DOWNLOAD_PLUGIN": "Hämta plugin",
     "DROP_TO_UPLOAD": "Släpp för att ladda upp",
-    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 0c17adc..4646459 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Açıklama",
     "DOWNLOAD_PLUGIN": "Eklentiyi indir",
     "DROP_TO_UPLOAD": "Yüklenmeye Bırak",
-    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index ac2f84c..18246b8 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 98dc201..2956f0d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index d002733..0ef1225 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Adresse ungültiges Format",
-      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
-      "REPLYURI_REQUIRED": "Antwort-URL ungültiges Format",
-      "REPLYURI_MUST_VALID_URL": "Antwort-URL ungültiges Format",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "REPLYURI_REQUIRED": "Die Antwort URL ist erforderlich",
+      "REPLYURI_MUST_VALID_URL": "Die Antwort URL muss im gültigen Format geschrieben werden",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
       "LIST_REQUIRED": "Pflichtfeld",
       "KEY_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Format ungültig",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "NAME_MUST_VALID_PATTERN": "Falsches Format",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
+      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agenteb bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten",
-    "EDIT_NOOP": "Noop bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_GOTO": "Bearbeiten Gehe zu",
+    "EDIT_NOOP": "Bearbeiten Noop",
+    "EDIT_GOTOIF": "Bearbeiten Gotoif",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
-    "PENALTY": "Verzögerung",
+    "ADD_OPENCHANNELQUEUE": "Fügen Sie im Offenen Kanal Warteschlange",
+    "EDIT_OPENCHANNELQUEUE": "Offener Kanal Warteschlange bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Löschen der Warteschlange im Offenen Kanal",
+    "PENALTY": "Strafe",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
+    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
+    "ADD_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account löschen.",
     "API": "API",
-    "DISPOSITIONS": "Qualifizierungen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
-    "SELECTED": "Ausgewählt",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
+    "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Qualifizierungen offener Kanal",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
-    "NEW_OPENCHANNELDISPOSITION": "Neue Qualifizierung",
-    "ADD_OPENCHANNELDISPOSITION": "Qualifizierung offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_OPENCHANNELDISPOSITION": "Qualifizierung löschen",
-    "NEW_OPENCHANNELQUEUE": "Neue Warteschlange offener Kanal",
-    "NEW_OPENCHANNELACCOUNT": "Neues Konto offener Kanal",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "OPENCHANNELDISPOSITIONS": "Offener Kanal Verfügungen",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine offenen Kanal Dispositionen verfügbar",
+    "NEW_OPENCHANNELDISPOSITION": "Neue Offene Kanal inspektion",
+    "ADD_OPENCHANNELDISPOSITION": "Fügen Sie im Offenen Kanal inspektion",
+    "EDIT_OPENCHANNELDISPOSITION": "Bearbeiten Sie im Offenen Kanal inspektion",
+    "DELETE_OPENCHANNELDISPOSITION": "Löschen Sie im Offenen Kanal inspektion",
+    "NEW_OPENCHANNELQUEUE": "Neue Offene Kanal Warteschlange",
+    "NEW_OPENCHANNELACCOUNT": "Neue Open Channel Account",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "RECEIVEURI": "Automatisch generierter API-String, um die Nachrichten über den offenen Kanal zu erhalten (POST-Methode). Zum Kopieren in die Zwischenablage klicken",
-      "REPLYURI": "URL des offenen Kanals zum Senden und Empfangen von Nachrichten",
+      "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
+      "REPLYURI": "Dies ist die URL der Offene Kanal wird beim Senden oder Beantworten von Nachrichten",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "TOKEN": "Fügen Sie diese Eigenschaft als Abfragezeichenfolge in Ihrer Web-Service-URL hinzu. Weitere Informationen finden Sie im Dokument doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/New Channels Configuration Steps",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+      "WELCOMEMESSAGE": "Dies ist die erste Nachricht, die an das Schütz gesendet wird"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Startdatum",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Interaktionen",
+    "INTERACTIONS": "Wechselwirkungen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Status auswählen",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Qualifizierung",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "SELECT_ACCOUNT": "Konto auswählen",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "INFO": "Information",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "INFO": "Info",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
+    "IN_USE": "Im Einsatz",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "VOICE": "Anrufe",
+    "WAITING": "Warten",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Mithören",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "SPYINTERACTION": "Spy",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
     "DELETE": "Löschen",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_OPENCHANNELCANNEDANSWER": "Neue Textvorlage",
-    "ADD_OPENCHANNELCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Textvorlage löschen",
-    "DELIVERYREPORTURL": "URL für Zustellungsbericht",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschritten",
     "PROXY": "Proxy",
-    "TOKEN": "Token",
+    "TOKEN": "Zeichen",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "MAPKEY": "MAP-KEY",
+    "TAG": "Etikett",
+    "AGENTADD_OPENCHANNELACCOUNT": "Fügen Sie Agent zu Openchannel Account hinzu",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "MAPKEY": "Karten Schlüssel",
     "SEND": "Senden",
-    "TO": "An",
-    "AGENTTRANSFER": "Weiterleitung Agent",
+    "TO": "Zu",
+    "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "CANNEDANSWERS": "Textvorlagen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "TRANSFER": "Transfer",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "OPENCHANNELCANNEDANSWERS": "Textvorlagen offener Kanal",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
-    "DIALOGFLOW": "DialogFlow",
-    "EDIT_DIALOGFLOW": "DialogFlow bearbeiten",
+    "OPENCHANNELCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "DIALOGFLOW": "Dialogablauf",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die Dialogflow-Konfiguration",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommensnachricht",
+    "WELCOMEMESSAGE": "Willkommen Messsage",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Botname",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
-    "LEXREGION": "Lex Region",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
+    "BOTNAME": "Bot-Name",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "LEXREGION": "Region",
+    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz"
+    "NOTE": "Hinweis"
   }
 }
index ee88755..b5e8a7a 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
+    "RINGINUSE": "Ring im Einsatz",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TOGGLE_SIDENAV": "Um sidenav",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "SELECTED": "Ausgewählt",
+    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählte",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "A_TO_Z": "(A bis Z)",
     "Z_TO_A": "(Z bis A)",
     "MORE": "Mehr",
     "DELETE_USER": "Benutzer löschen",
     "EDIT_USER": "Benutzer bearbeiten",
-    "DELETE_AGENT": "Agenten löschen",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "DELETE_AGENT": "Bedienplatz löschen",
+    "EDIT_AGENT": "Agent bearbeiten",
     "DELETE": "Löschen",
     "SAVE": "Speichern",
     "ADD_USER": "Benutzer hinzufügen",
     "ADD_AGENT": "AGENT HINZUFÜGEN",
-    "NO_RESULTS": "Keine Ergebnisse",
+    "NO_RESULTS": "Keine Ergebnisse.",
     "CLOSE_DIALOG": "Dialog schließen",
-    "NAME_REQUIRED": "Name (erforderlich)",
+    "NAME_REQUIRED": "Name (erforderlich).",
     "USERNAME": "Benutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
-      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
-      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
-      "ACCOUNTNAME_REQUIRED": "Konto ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "HOST_REQUIRED": "Host ist erforderlich",
-      "CHATCAPACITY_REQUIRED": "Kapazität Chat ist erforderlich",
-      "MAILCAPACITY_REQUIRED": "Kapazität E-Msil ist erforderlich",
-      "FAXCAPACITY_REQUIRED": "Kapazität Fax ist erforderlich",
-      "SMSCAPACITY_REQUIRED": "Kapazität SMS ist erforderlich",
-      "OPENCHANNELCAPACITY_REQUIRED": "Kapazität offener Kanal ist erforderlich",
-      "SIPEXPIRES_REQUIRED": "SIP-Ablaufdatum ist erforderlich",
-      "SIPPORT_REQUIRED": "SIP-Port ist erforderlich",
-      "UNCONDITIONALNUMBER_REQUIRED": "Zielrufnummer ist erforderlich",
-      "NOREPLYNUMBER_REQUIRED": "Nummer bei keiner Antwort ist erforderlich",
-      "BUSYNUMBER_REQUIRED": "Nummer bei Besetzt ist erforderlich",
-      "USERNAME_MUST_VALID_PATTERN": "Benutzername ungültig {{regex}}.",
-      "REMOTECONTROLPORT_REQUIRED": "Port für Remote ist erforderlich",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Chat muss größer oder gleich sein als",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität E-Mail muss größer oder gleich sein als",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Fax muss größer oder gleich sein als",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität offener Kanal muss größer oder gleich sein als",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FULLNAME_REQUIRED": "Der Fullname ist erforderlich",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "ACCOUNTNAME_REQUIRED": "Der Account ist erforderlich.",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "CHATCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "MAILCAPACITY_REQUIRED": "Die E-Mail Kapazität erforderlich ist",
+      "FAXCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "SMSCAPACITY_REQUIRED": "Die SMS-Kapazität erforderlich ist",
+      "OPENCHANNELCAPACITY_REQUIRED": "Der Offene Kanal Kapazität erforderlich ist",
+      "SIPEXPIRES_REQUIRED": "Der SIP-Ablauf ist erforderlich",
+      "SIPPORT_REQUIRED": "Die SIP-Port erforderlich.",
+      "UNCONDITIONALNUMBER_REQUIRED": "Die Zielrufnummer ist erforderlich",
+      "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich",
+      "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich",
+      "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.",
+      "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
       "AUTOANSWERDELAY_REQUIRED": "Pflichtfeld",
       "MONITOREXTENSION_REQUIRED": "Pflichtfeld",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "DTLSCERTFILE_REQUIRED": "Pflichtfeld",
       "DTLSPRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Anrufe",
+    "VOICE": "Voice",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Informationen",
+    "PERSONAL_INFO": "Persönliche Infos",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern",
+    "CHANGE_AVATAR": "Avatar ändern.",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Intern",
-    "TRANSPORT": "Transport",
+    "INTERNAL": "Interne",
+    "TRANSPORT": "Verkehr",
     "ALLOWCODECS": "Codecs erlaubt",
     "HELP": {
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen um das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
-      "SIPEXPIRES": "Standardeinstellung: 160",
+      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen. Wenn Sie möchten, dass das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "SIPEXPIRES": "Standardeinstellung: 120",
       "SIPPORT": "Standardeinstellung: 5160",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: eingehende Authentifizierung - Peer: für ausgehende Anrufe - Freund: Deckt beide Eigenschaften",
-      "CHATCAPACITY": "0 für unbegrenzt",
-      "MAILCAPACITY": "0 für unbegrenzt",
-      "FAXCAPACITY": "0 für unbegrenzt",
-      "SMSCAPACITY": "0 für unbegrenzt",
-      "OPENCHANNELCAPACITY": "0 für unbegrenzt",
-      "CALLGROUP": "Anrufgruppe",
-      "PICKUPGROUP": "Übernahmegruppe",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "CHATCAPACITY": "Null bedeutet unbegrenzt.",
+      "MAILCAPACITY": "Null bedeutet unbegrenzt.",
+      "FAXCAPACITY": "Null bedeutet unbegrenzt.",
+      "SMSCAPACITY": "Null bedeutet unbegrenzt.",
+      "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.",
+      "CALLGROUP": "Legt der Agent callgroup",
+      "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können",
       "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "LAST_PASSWORD_RESET_AT": "Letztes Datum und Uhrzeit, zu der das Passwort geändert wurde. Wenn die Allgemeinen Einstellungen für Secure Suite aktiviert sind, läuft das Passwort nach 90 Tagen ab.",
       "DTLSCERTFILE": "Verknüpfen Sie mit dem gültigen TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Verknüpfen Sie mit dem privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Änderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "ENABLEAUTOMATICSCREENRECORDING": "Funktionalität ist nur für Sprachkanäle verfügbar",
-      "BLOCKED": "Zugriff sperren/entsperren",
-      "DISABLED": "Auswählen zum Aktivieren",
-      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Whatsapp-Interaktionen pro Agent (0 = unbegrenzt)",
+      "ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
+      "BLOCKED": "Zugriff sperren / entsperren",
+      "DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
+      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)",
       "MASK_SENSITIVE_DATA": "Maskieren Sie vertrauliche Daten in der gesamten Anwendung (z. B. Telefonnummern und E-Mail-Adressen).",
       "WSS_PORT": "Standard: 8089"
     },
-    "NEW_PASSWORD": "Neues Passwort",
+    "NEW_PASSWORD": "Neues Kennwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Agent",
-    "CHANGEPASSWORD_USER": "Nutzer",
-    "CHANGEPASSWORD_TELEPHONE": "Telefon",
-    "LOGININPAUSE": "Pause nach Anmelden",
+    "CHANGEPASSWORD_AGENT": "Passwort ändern",
+    "CHANGEPASSWORD_USER": "Passwort ändern",
+    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
+    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "Listen-In",
+    "CHANSPY": "ChanSpy",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Kapazität Chats",
-    "MAILCAPACITY": "Kapazität E-Mail",
-    "FAXCAPACITY": "Kapazität Fax",
-    "SMSCAPACITY": "Kapazität SMSW",
-    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
+    "CHATCAPACITY": "Chat Kapazität",
+    "MAILCAPACITY": "E-Kapazität",
+    "FAXCAPACITY": "Fax Kapazität",
+    "SMSCAPACITY": "Sms-Kapazität",
+    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "Auto-Antwort",
+    "AUTOANSWER": "\"Autom. Antwort\"",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "UNCONDITIONAL": "Generell",
-    "UNCONDITIONALNUMBER": "Nummer Weiterleitung generell",
-    "NOREPLY": "Bei keiner Antwort",
-    "NOREPLYNUMBER": "Nummer Weiterleitung keine Antwort",
-    "BUSY": "Bei Besetzt",
-    "BUSYNUMBER": "Nummer Weiterleitung Besetzt",
-    "REMOTE_CONTROL": "Remote-Nebenstelle",
-    "REMOTECONTROL": "Remote-Nebenstelle",
-    "REMOTECONTROLPORT": "Port Remote-Nebenstelle",
+    "UNCONDITIONAL": "Unbedingte",
+    "UNCONDITIONALNUMBER": "Uneingeschränkte Anzahl",
+    "NOREPLY": "Keine Antwort",
+    "NOREPLYNUMBER": "\"Keine Antwort\"-Nummer",
+    "BUSY": "Besetzt",
+    "BUSYNUMBER": "Nummer besetzt",
+    "REMOTE_CONTROL": "Fernbedienung",
+    "REMOTECONTROL": "Fernbedienung",
+    "REMOTECONTROLPORT": "Fernbedienung",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP-Ablaufdatum",
+    "SIPEXPIRES": "SIP läuft [sec]",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Verzögerung",
+    "PENALTY": "Strafe",
     "ACCOUNTNAME": "Account Name",
     "ADD_TELEPHONE": "Telefon hinzufügen",
     "EDIT_TELEPHONE": "Telefon bearbeiten",
     "DELETE_TELEPHONE": "Telefon löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
-    "EDIT_TEAM": "Team bearbeiten",
+    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "EDIT_TEAM": "Team bearbeiten.",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefonnummern",
-    "CALLERID": "Anrufer-ID",
-    "ENABLERECORDING": "Aufzeichnung aktiv",
+    "TELEPHONES": "Telefone",
+    "CALLERID": "Die Anrufer-ID",
+    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
     "STAFF": "Personal",
-    "ID": "ID",
+    "ID": "Id",
     "NEW_USER": "Neuer Benutzer",
     "NEW_AGENT": "Neuer Agent",
     "NEW_TELEPHONE": "Neues Telefon",
     "NEW_TEAM": "Neues Team",
     "ADD_TEAM": "Team hinzufügen",
-    "JOIN_QUEUE": "In Warteschlange beitreten",
+    "JOIN_QUEUE": "Melden Sie Warteschlange",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
-    "TEAMADD_AGENT": "Zum Team hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenanruf",
+    "CALLGROUP": "Gruppenruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agenten hinzufügen - ausgehende Anrufe",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agenten hinzufügen - eingehende Anrufe",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agenten hinzufügen - Chat-Warteschlangen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agenten hinzufügen - E-Mail-Warteschlangen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agenten hinzufügen - SMS-Warteschlangen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agenten hinzufügen - offener Kanal-Warteschlangen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agenten hinzufügen - Fax-Warteschlangen",
-    "QUEUEADD_USER_VOICE_INBOUND": "Nutzer hinzufügen - eingehende Anrufe",
-    "QUEUEADD_USER_CHAT_INBOUND": "Nutzer hinzufügen - eingehende Chats",
-    "QUEUEADD_USER_MAIL_INBOUND": "Nutzer hinzufügen - eingehende E-Mails",
-    "QUEUEADD_USER_SMS_INBOUND": "Nutzer hinzufügen - eingehende SMS",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Nutzer hinzufügen - eingehender offener Kanal",
-    "QUEUEADD_USER_FAX_INBOUND": "Nutzer hinzufügen - eingehende Faxe",
-    "ALL_TEAMS": "Alle Teams",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent in der Warteschlange Kampagnen hinzufügen",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Agent Voice Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Agent zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Agent Mail Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Agent sms-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agent zu offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Agent fax Warteschlangen hinzufügen",
+    "QUEUEADD_USER_VOICE_INBOUND": "Benutzer stimme Warteschlangen hinzufügen",
+    "QUEUEADD_USER_CHAT_INBOUND": "Benutzer zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_USER_MAIL_INBOUND": "Benutzer Mail Warteschlangen hinzufügen",
+    "QUEUEADD_USER_SMS_INBOUND": "Benutzer von SMS-Warteschlangen hinzufügen",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Benutzer zum offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_USER_FAX_INBOUND": "Benutzer fax Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Warteschlangen - ausgehende Anrufe",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Gewählte Warteschlangen - ausgehende Anrufe",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen - eingehende Anrufe",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Warteschlangen - eingehende Anrufe",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Warteschlangen - Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Warteschlangen - Chat",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle Warteschlangen - E-Mail",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Warteschlangen - E-Mail",
-    "ALL_QUEUES_SMS_INBOUND": "Alle Warteschlangen - SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte Warteschlangen - SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle Warteschlangen - offener Kanal",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählte Warteschlangen - offener Kanal",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Warteschlangen - Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Warteschlangen - Fax",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Queue Kampagnen",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Ausgewählte Warteschlange Kampagnen",
+    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Voice Warteschlangen",
+    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat Warteschlangen",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Chat-warteschlangen",
+    "ALL_QUEUES_MAIL_INBOUND": "Alle E-Mail-Warteschlangen",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Mail Warteschlangen",
+    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-Warteschlangen",
+    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte SMS-Warteschlangen",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle offenen Kanal Warteschlangen",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählten Offenen Kanal Warteschlangen",
+    "ALL_QUEUES_FAX_INBOUND": "Alle Fax Warteschlangen",
+    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Fax Warteschlangen",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "WebControl anzeigen",
+    "SHOWWEBCONTROL": "Anzeigen Web Control",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Nicht stören",
-    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
-    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
-    "AUTOANSWERDELAY": "Automatische Antwort nach",
+    "DND": "Während der Pause nicht stören",
+    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
+    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
+    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "SMS",
+    "SMS": "Sms",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
-    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
+    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
-    "SIP_WEBRTC": "SIP/WebRTC",
-    "SETTINGS_WEBRTC": "Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
+    "SIP_WEBRTC": "Schluck",
+    "SETTINGS_WEBRTC": "die Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "DTLSPRIVATEKEY": "Privater Schlüssel des TLS-Zertifikats",
-    "EDITPERMISSIONS": "Berechtigungen verwalten",
-    "READANDEDIT": "Lesen und Bearbeiten",
-    "READANDEDITANDDELETE": "Lesen, Bearbeiten und Löschen",
-    "GENERAL_PERMISSIONS": "Allgemein",
-    "ENABLEMESSENGER": "Internen Messenger aktivieren",
-    "OUTBOUNDPROXY": "Outbound-Proxy",
+    "DTLSPRIVATEKEY": "Der private Schlüssel des TLS-Zertifikats",
+    "EDITPERMISSIONS": "Bearbeiten von Berechtigungen",
+    "READANDEDIT": "Lesen, Bearbeiten",
+    "READANDEDITANDDELETE": "Lesen, Bearbeiten, Löschen",
+    "GENERAL_PERMISSIONS": "Allgemeines",
+    "ENABLEMESSENGER": "Aktivieren Sie den internen Messenger",
+    "OUTBOUNDPROXY": "Oubound-Proxy",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
+    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
+    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
     "ALL_PROJECTS": "Alle Cally Square-Projekte",
     "ALL_QUEUECAMPAIGNS": "Alle Queue-Kampagnen",
     "ALL_SMSACCOUNTS": "Alle SMS-Konten",
     "SELECTED_CHATQUEUES": "Ausgewählte E-Mail-Warteschlangen",
     "SELECTED_CHATWEBSITES": "Ausgewählte Chat-Websites",
     "SELECTED_FAXACCOUNTS": "Ausgewählte Faxkonten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
     "SELECTED_PROJECTS": "Ausgewählte Projekte von Cally Square",
     "SELECTED_QUEUECAMPAIGNS": "Ausgewählte Queue-Kampagnen",
     "SELECTED_SMSACCOUNTS": "Ausgewählte SMS-Konten",
     "SELECTED_SMSQUEUES": "Ausgewählte SMS-Warteschlangen",
-    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
     "USERADD_CHATQUEUES": "Chat-Warteschlange zum Benutzer hinzufügen",
     "USERADD_CHATWEBSITES": "Chat-Website zum Benutzer hinzufügen",
     "USERADD_FAXACCOUNTS": "Faxkonto zum Benutzer hinzufügen",
-    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
     "USERADD_PROJECTS": "Cally Square-Projekt zum Benutzer hinzufügen",
     "USERADD_QUEUECAMPAIGNS": "Queue-Kampagne zum Benutzer hinzufügen",
     "USERADD_SMSACCOUNTS": "SMS-Konto zum Benutzer hinzufügen",
     "USERADD_SMSQUEUES": "SMS-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Wechselnder Arbeitsplatz",
+    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Heißer Schreibtisch",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "CLONE_USERPROFILE": "Benutzerprofil klonen",
     "CLOSE": "Schließen",
     "CONFIRM": "Bestätigen",
     "PERMISSIONS_SELECTED_RESOURCES": "Ausgewählte Ressourcen",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Wählen Sie den Berichtstyp",
     "PERMISSIONS_SELECT_SECTION": "Wählen Sie einen Abschnitt aus",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
+    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
+    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
-    "VIDEOSUPPORT": "Unterstützt Video",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
+    "VIDEOSUPPORT": "Video-Unterstützung",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "Erneut generieren",
+    "GENERATE": "(Regenerieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Entfernen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
-    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
-    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
+    "REMOVE": "Löschen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
+    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
+    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Erneut generieren",
+    "REGENERATE": "Regenerieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Benutzer zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
     "SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
     "USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
-    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
+    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
+    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
-    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
+    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
+    "VOICE_RECORDINGS": "Sprachaufnahmen"
   }
 }
index d62768d..6207bf0 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TRUNKS": "Amtsleitungen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "HOST_REQUIRED": "Host wird benötigt",
-      "DEFAULTUSER_REQUIRED": "Standardbenutzer ist erforderlich",
-      "CALLERID_REQUIRED": "Anrufer-ID ist erforderlich",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "VALIDITYSTART_REQUIRED": "Startzeit ist erforderlich",
-      "VALIDITYEND_REQUIRED": "Endzeit ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
+      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht übereinstimmen",
+      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
+      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
       "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "HOUR_REQUIRED": "Stunde ist erforderlich",
-      "CONTENT_REQUIRED": "Inhalt ist erforderlich",
-      "URL_REQUIRED": "URL ist erforderlich",
-      "URL_MUST_VALID_URL": "URL ungültiges Format",
-      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
-      "ARGUMENTS_REQUIRED": "Bedingungen sind erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Name ungültiges Format",
-      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall ist erforderlich",
-      "TITLE_REQUIRED": "Titel ist erforderlich",
-      "EMAILADDRESS_REQUIRED": "E-Mail Adresse ist erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Variablen sind erforderlich",
-      "TYPE_REQUIRED": "Typ ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
-      "ACCOUNT_REQUIRED": "Konto ist erforderlich",
-      "FIELD_REQUIRED": "Feld ist erforderlich",
-      "INTEGRATION_REQUIRED": "Integration ist erforderlich",
-      "LIST_REQUIRED": "Liste ist erforderlich",
-      "TEMPLATE_REQUIRED": "Vorlage ist erforderlich",
-      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
-      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
-      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
-      "MONTH_DAYS_TO_REQUIRED": "Tage des Monats erforderlich",
-      "MONTH_TO_REQUIRED": "Monat erforderlich",
+      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
+      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
+      "URL_REQUIRED": "Die URL ist erforderlich",
+      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
+      "TITLE_REQUIRED": "Der Titel ist erforderlich",
+      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
+      "TYPE_REQUIRED": "Pflichtfeld",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "ACCOUNT_REQUIRED": "Pflichtfeld",
+      "FIELD_REQUIRED": "Pflichtfeld",
+      "INTEGRATION_REQUIRED": "Pflichtfeld",
+      "LIST_REQUIRED": "Pflichtfeld",
+      "TEMPLATE_REQUIRED": "Pflichtfeld",
+      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
+      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
+      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_TO_REQUIRED": "Pflichtfeld",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "ACTION_REQUIRED": "Aktion erforderlich",
-      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
-      "PROJECT_REQUIRED": "Projekt erforderlich",
-      "LOCATION_REQUIRED": "Standort erforderlich",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
-      "PATH_REQUIRED": "Pfad erforderlich",
-      "FORMAT_REQUIRED": "Format erforderlich",
-      "REPORT_REQUIRED": "Report erforderlich",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "REFRESH_REQUIRED": "Aktualisieren erforderlich",
-      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge haben von {{max}} ",
-      "NAME_MAX_LENGTH": "Name darf eine maximale Länge haben von {{max}} ",
-      "OUTPUT_REQUIRED": "Ausgabe erforderlich",
-      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
-      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
-      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "INFO_REQUIRED": "Information erforderlich",
-      "SCRIPT_REQUIRED": "Skript erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "TIMEOUT_REQUIRED": "Timeout erforderlich",
-      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich"
+      "ACTION_REQUIRED": "Pflichtfeld",
+      "CONFIGURATION_REQUIRED": "Pflichtfeld",
+      "PROJECT_REQUIRED": "Pflichtfeld",
+      "LOCATION_REQUIRED": "Pflichtfeld",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONTSIZE_REQUIRED": "Pflichtfeld",
+      "PATH_REQUIRED": "Pflichtfeld",
+      "FORMAT_REQUIRED": "Pflichtfeld",
+      "REPORT_REQUIRED": "Pflichtfeld",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "REFRESH_REQUIRED": "Pflichtfeld",
+      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "OUTPUT_REQUIRED": "Pflichtfeld",
+      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTTYPE_REQUIRED": "Pflichtfeld",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "INFO_REQUIRED": "Pflichtfeld",
+      "SCRIPT_REQUIRED": "Pflichtfeld",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_REQUIRED": "Pflichtfeld",
+      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Standardnutzer",
+    "SECRET": "Geheimnis",
+    "DEFAULTUSER": "Default User",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Trunk hinzufügen",
+    "ADD_TRUNK": "Amtsleitung hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
       "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die SIP-Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
-      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
+      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
+      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
       "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
-      "CONTEXT": "Die nutzbaren Kontext für den Trunk.",
-      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Freund: Beide Eigenschaften werden erfüllt",
-      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird über RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, über die Lautsprecher hörbar. Erfordert eine höhere CPU-Last.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn \"Nein\", ignoriert der Asterisk alle anderen Einstellungen und die nat=No.",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
+      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird über die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
-      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen ein- und ausgehenden Anrufe",
-      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
-      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
-      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
-      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
-      "ENCRYPTION": "Legt fest, ob die Verbindung über SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
+      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
+      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
+      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
+      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
+      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
+      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
+      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Trunks conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
-      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
+      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
+      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Trunk löschen",
+    "DELETE_TRUNK": "Löschen Sie Trunk",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Erweiterte",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Anrufer-ID",
+    "CALLERID": "Die Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "DTMF-Modus",
+    "DTMFMODE": "Mfv-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direct Media",
+    "DIRECTMEDIA": "Direkte Medien",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From Nutzer",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
+    "FROMDOMAIN": "Aus der Domäne",
+    "FROMUSER": "Vom Benutzer",
+    "OUTBOUNDPROXY": "Ausgehender Proxy",
+    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
+    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Port",
-    "TRANSPORT": "Transport",
+    "PORT": "Hafen",
+    "TRANSPORT": "Verkehr",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "TAGS": "Tags",
-    "ADD_TAG": "Tag hinzufügen",
-    "EDIT_TAG": "Tag bearbeiten",
-    "DELETE_TAG": "Tag löschen",
+    "ADD_TAG": "Variable hinzufügen",
+    "EDIT_TAG": "Variable bearbeiten",
+    "DELETE_TAG": "Variable löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CANNEDANSWER": "Testvorlage löschen",
+    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Audiodateien",
-    "EDIT_SOUND": "Audiodatei bearbeiten",
-    "DELETE_SOUND": "Audiodatei löschen",
-    "FINISH": "Abschließen",
+    "SOUNDS": "Sounds",
+    "EDIT_SOUND": "Ton bearbeiten",
+    "DELETE_SOUND": "Sound löschen",
+    "FINISH": "Fertig stellen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Trigger bearbeiten",
-    "DELETE_TRIGGER": "Trigger löschen",
+    "EDIT_TRIGGER": "Auslöser bearbeiten",
+    "DELETE_TRIGGER": "Auslöser löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automation",
-    "EDIT_AUTOMATION": "Automation bearbeiten",
+    "AUTOMATIONS": "Automatisierungen",
+    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall löschen",
+    "DELETE_INTERVAL": "Intervall für Löschen.",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "ID",
+    "ID": "Id",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
-    "UPLOAD_SOUND": "Audiodatei hochladen",
+    "DOWNLOAD_SOUND": "Download Sound",
+    "UPLOAD_SOUND": "Werkzeuge",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
-    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
-    "ACTIONS": "Aktionen",
+    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
+    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
+    "ACTIONS": "Aktionen:",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe limitieren",
-    "OTHERFIELDS": "Weitere Felder",
+    "CALL_LIMIT": "Anrufe beschränken",
+    "OTHERFIELDS": "Andere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue Textvorlage",
+    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neuer Trunk",
-    "FROM": "von",
-    "TO": "an",
-    "WEEKDAY": "Wochentag",
-    "MONTHDAY": "Monatstag",
+    "NEW_TRUNK": "Neue Leitung",
+    "FROM": "Von",
+    "TO": "Zu",
+    "WEEKDAY": "Woche Tag",
+    "MONTHDAY": "Monat Tag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
-    "SCHEDULER": "Berichtsplanung",
-    "NEW_SCHEDULE": "Neue Planung",
-    "ADD_SCHEDULE": "Planung hinzufügen",
-    "EDIT_SCHEDULE": "Planung bearbeiten",
-    "DELETE_SCHEDULE": "Planung löschen",
+    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
+    "SCHEDULER": "Scheduler",
+    "NEW_SCHEDULE": "Neuer Zeitplan",
+    "ADD_SCHEDULE": "Zeitplan hinzufügen",
+    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
+    "DELETE_SCHEDULE": "Zeitplan löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgabe",
+    "OUTPUT": "Ausgang",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Bereich",
+    "REPORTRANGE": "Berichtsbereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
+    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Wochentage",
+    "WEEKDAYS": "Woche Tage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Aktion",
+    "NEW_ACTION": "Neue Maßnahme",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Ausgehende Routen",
-    "EQUALS": "ist gleich",
-    "NOT_EQUALS": "ist nicht gleich",
-    "CONTACT_MANAGER": "Kontaktmanager",
+    "OUTBOUNDROUTE": "Abgehende Routen",
+    "EQUALS": "Ist gleich",
+    "NOT_EQUALS": "Nicht gleich",
+    "CONTACT_MANAGER": "Contacts Manager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL-Weiterleitung",
-    "WEB_POPUP": "Web-Popup",
+    "URL_FORWARD": "URL Weiterleitung",
+    "WEB_POPUP": "Web Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "OPERATOR": "Betreiber",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Nein",
+    "NO": "Keine",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Information",
+    "INFO": "Info",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Wochentage",
-    "MONTH_DAYS": "Monatstage",
+    "WEEK_DAYS": "Woche Tage",
+    "MONTH_DAYS": "Monat Tage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
+    "DASHBOARD": "Armaturenbrett",
+    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
-    "EDIT_WIDGET": "Widget bearbeiten",
-    "DELETE_WIDGET": "Widget löschen",
-    "FLIP_WIDGET": "Widget drehen",
+    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
+    "EDIT_WIDGET": "Bearbeiten Widget",
+    "DELETE_WIDGET": "Löschen Widget",
+    "FLIP_WIDGET": "Flip Widget",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Hell",
+    "LIGHT": "Licht",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitales Datumsformat",
+    "DIGITAL_FORMAT": "Digitale Datum Format",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen Sie",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
-    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
-    "CRON": "CrOn",
+    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
+    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
+    "CRON": "Cron",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Zur Sekunde",
-    "HOUR_ON_MINUTE": "Stunde zur Minute",
-    "AND_SECOND": "und Sekunde",
-    "DAY_AT": "Am Tag",
+    "ON_SECOND": "Im 2.",
+    "HOUR_ON_MINUTE": "Stunde Minute",
+    "AND_SECOND": "Und 2.",
+    "DAY_AT": "Tag an",
     "START_TIME": "Startzeit",
-    "ON_THE": "Am",
-    "OF_EVERY": "An jedem",
+    "ON_THE": "Auf der",
+    "OF_EVERY": "Jedes",
     "MONTH_AT": "Monat",
-    "AT": "Um",
+    "AT": "An",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "von",
+    "OF": "Von",
     "PAST_THE_HOUR": "Nach der vollen Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Am",
+    "ON": "Auf",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Ausgehende Routen",
-    "EVENTVARIABLES": "Event-Variablen",
+    "OUTBOUND_ROUTE": "Abgehende Routen",
+    "EVENTVARIABLES": "Bei Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
+    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
     "COLOR": "Farbe",
-    "LOCATION": "Standort",
-    "NEW_TAB": "Neuer Tab",
+    "LOCATION": "Lage",
+    "NEW_TAB": "Neue Registerkarte",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fensterbreite (px)",
+    "WINDOWWIDTH": "Fenster Breite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Abgebrochen",
+    "ABANDONED": "Verlassen",
     "WAITING": "Warten",
-    "TALKING": "im Gespräch",
-    "ANSWERED": "Beantwortet",
-    "UNMANAGED": "Nicht bearbeitet",
+    "TALKING": "Reden",
+    "ANSWERED": "Antwortete",
+    "UNMANAGED": "Nicht verwaltet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
     "ALL_USERS": "Alle Nutzer",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster Kontakt",
+    "NEXTCONTACT": "Nächster",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "BCC",
-    "EMAILCCADDRESS": "CC",
-    "RUN_SCHEDULE": "Zeitplanung ausführen",
-    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
-    "DELETE_DISPOSITION": "Qualifizierung löschen",
-    "DISPOSITIONS": "Qualifizierungen",
-    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
-    "NEW_DISPOSITION": "Neue Qualifizierung",
-    "CLONE_TRUNK": "Trunk klonen",
-    "BODY": "Textinhalt",
-    "CANNEDANSWERS": "Textvorlagen",
+    "EMAILBCCADDRESS": "Bcc",
+    "EMAILCCADDRESS": "Cc",
+    "RUN_SCHEDULE": "Zeitplan ausführen",
+    "ADD_DISPOSITION": "Disposition hinzufügen",
+    "DELETE_DISPOSITION": "Disposition löschen",
+    "DISPOSITIONS": "Dispositionen",
+    "EDIT_DISPOSITION": "Disposition bearbeiten",
+    "NEW_DISPOSITION": "Neue Disposition",
+    "CLONE_TRUNK": "Klon-Trunk",
+    "BODY": "Karosserie",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner",
-    "PREVIOUSCONTACT": "Vorherigen Kontakt",
+    "REPORTSUBFOLDER": "Unterordner melden",
+    "PREVIOUSCONTACT": "Bisherige",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Information",
+    "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globale Werte",
+    "GLOBALS": "Globals",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
-    "FIRST_LEVEL_DISPOSITION": "Qualifizierung der ersten Ebene",
-    "LEVEL": "Ebene",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "SELECT_LEVEL": "Ebene auswählen",
-    "TITLEFONTSIZE": "Schriftgröße Titel"
+    "ALL_DISPOSITIONS": "Alle Dispositionen",
+    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
+    "LEVEL": "Niveau",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "SELECT_LEVEL": "Wählen Sie eine Ebene",
+    "TITLEFONTSIZE": "Schrifttitelgröße"
   }
 }
index b0c7106..bf0d36b 100644 (file)
@@ -20,7 +20,6 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
-    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
     "NONE": "None",
     "TOTAL": "Total",
     "ABANDONED": "Abandoned",
@@ -75,7 +74,6 @@
       "TYPE_REQUIRED": "Mandatory field",
       "VALUE_REQUIRED": "Mandatory field",
       "ACCOUNT_REQUIRED": "Mandatory field",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignore dialer contact Id field is required",
       "FIELD_REQUIRED": "Mandatory field",
       "NAME_REQUIRED": "Mandatory field",
       "HOST_REQUIRED": "Mandatory field",
index 1e98efe..c6b75fe 100644 (file)
@@ -19,7 +19,6 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
-    "IGNOREDIALERCONTACTID": "Ignora il contact Id del dialer",
     "NONE": "Nessuno",
     "TOTAL": "Totale",
     "ABANDONED": "Abbandonate",
@@ -99,7 +98,6 @@
       "TYPE_REQUIRED": "Campo obbligatorio",
       "VALUE_REQUIRED": "Campo obbligatorio",
       "ACCOUNT_REQUIRED": "Campo obbligatorio",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Campo obbligatorio",
       "FIELD_REQUIRED": "Campo obbligatorio",
       "TIME_RANGE_TO_REQUIRED": "Campo obbligatorio",
       "WEEK_DAYS_TO_REQUIRED": "Campo obbligatorio",
index 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 3a1952e..0920067 100644 (file)
@@ -30,7 +30,6 @@
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Auto Reply",
     "BACK": "Back",
-    "BASEURL": "Base URL",
     "BOTNAME": "Bot Name",
     "BUSY": "Busy",
     "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
@@ -87,7 +86,6 @@
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
       "AUTHTOKEN_REQUIRED": "Mandatory Field",
-      "BASEURL_REQUIRED": "Mandatory Field",
       "BOTNAME_REQUIRED": "Mandatory Field",
       "COMMAND_REQUIRED": "Mandatory Field",
       "CONDITION_REQUIRED": "Mandatory Field",
     "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",
     "READY": "Ready",
     "REALTIME": "Realtime",
     "RECEIVEURL": "Receive URL",
-    "DELIVERYREPORTURL": "Delivery report URL",
     "REFRESH_INTERACTIONS": "Refresh Interactions",
     "REMOTE": "Remote",
     "ROWSPERPAGE": "Rows per page",
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 39dd215..213b97e 100644 (file)
     "DELETE_WHATSAPPDISPOSITION": "Elimina la disposizione di WhatsApp",
     "DIALOGFLOW": "DialogFlow",
     "DISPOSITION": "Disposizione",
-    "DISPOSITIONS": "Disposizioni",
+    "DISPOSITIONS": "disposizioni",
     "DOWNLOAD_INTERACTION": "Scarica",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Scarica senza allegati",
     "DOWNLOAD_WITH_ATTACHMENTS": "Scarica con allegati",
     "FALSEPRIORITY": "Priorità falsa",
     "GOTOP": "Andare in cima",
     "GO_TO_WHATSAPPACCOUNTS": "Vai all'account",
-    "INTERACTIONS": "Interazioni",
+    "INTERACTIONS": "interazioni",
     "INTERACTIONS_WHATSAPPACCOUNT": "Vai a Interazioni",
     "KEY": "Chiave",
     "LEXREGION": "Regione",
     "QUEUETRANSFER": "Trasferimento in coda",
     "QUEUETRANSFERTIMEOUT": "Timeout trasferimento coda",
     "RECEIVEURL": "Ricevi URL",
-    "DELIVERYREPORTURL": "Consegna URL",
     "REFRESH_INTERACTIONS": "Aggiorna interazioni",
     "REMOTE": "A distanza",
     "SECRETACCESSKEY": "Chiave di accesso segreta",
     "TOKEN": "Gettone",
     "TRANSFER": "Trasferimento",
     "TRUEPRIORITY": "Vera priorità",
-    "TYPE": "Genere",
+    "TYPE": "genere",
     "VALUE": "Valore",
     "VARIABLE": "Variabile",
     "WAITFORTHEASSIGNEDAGENT": "Attendi l'agente assegnato",
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 ee347d0..aa48e51 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.d488371f.css">
+  <link rel="stylesheet" href="styles/app.91ca40ed.css">
 
   <!-- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic'
               rel='stylesheet' type='text/css'> -->
@@ -68,7 +68,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.402e83f6.js"></script>
+  <script src="scripts/app.79e08137.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.402e83f6.js
rename to public/scripts/app.79e08137.js
index 5702029..19b40ec 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver","Auth",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",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,baseUrl",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 o.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("realtimeManager",function(){var a=["loggedIn","available","waiting","talking","paused"],i=["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"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e){return!_.every([e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause],function(e){return e})}return{updateBusyCounter:s,isPartialPause:o,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?o(e)||!e[a+"Pause"]||t.paused?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}}})}(),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;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.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:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.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:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:u.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.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:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.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:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.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:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.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:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.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:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.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:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.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}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.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:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.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:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.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:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.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:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:"bull"===c.channel?"voice":c.channel,type:c.direction,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:c.direction,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentqueueaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.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:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.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:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.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:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.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:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],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(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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=[],v(),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!":""}),h(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=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(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!"}),h(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=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],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(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n              </div>\n\n              <form name="scriptForm" flex="100" novalidate>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n              </form>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'CHAT.PAGE' | translate}}:', rowsPerPage: '{{'CHAT.ROWSPERPAGE' | translate}}:', of: '{{'CHAT.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-init="vm.getCustomFields(vm.contact.ListId)" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n\n          <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <md-input-container ng-if="!vm.dialerCall" class="md-block">\n          <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n          <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n            <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</md-option>\n          </md-select>\n          <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'FAX.PAGE' | translate}}:', rowsPerPage: '{{'FAX.ROWSPERPAGE' | translate}}:', of: '{{'FAX.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MAIL.PAGE' | translate}}:', rowsPerPage: '{{'MAIL.ROWSPERPAGE' | translate}}:', of: '{{'MAIL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'SMS.PAGE' | translate}}:', rowsPerPage: '{{'SMS.ROWSPERPAGE' | translate}}:', of: '{{'SMS.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name ">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email ">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone ">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile ">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal ">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</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-option ng-value="\'sinch\'">Sinch</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\' || vm.whatsappAccount.type == \'sinch\'" 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\' || vm.whatsappAccount.type == \'sinch\'" 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\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n     \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\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\n\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        <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\'  || vm.whatsappAccount.type == \'sinch\'" 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                <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\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" 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\n\n<label>{{vm.whatsappAccount.baseUrl}}</label>\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n    \n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\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                <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\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 class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span translate="{{lang.translation}}">{{lang.title}}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\n        <div class="md-padding md-margin" layout="column" flex="30">\n          <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.ID">ID</label>\n            <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n            <label translate="VOICE.QUEUE">Queue</label>\n            <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <input type="text" ng-model="vm.preview.List.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.TAGS">Tags</label>\n            <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n          </md-input-container>\n        </div>\n        <md-divider></md-divider>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n            <input type="text" ng-model="value" disabled="true" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\n        </div>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ vm.customFieldsMap[key] || key }}</label>\n            <input type="text" ng-model="value" disabled="true">\n          </md-input-container>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver","Auth",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){new Promise(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function x(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(l.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=x,u.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n){var t=this;function a(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return Promise.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n)return n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)});c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(n){var a={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose"+o+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:u.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get().$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get().$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeChat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=2,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:"bull"===c.channel?"voice":c.channel,type:c.direction,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:c.direction,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentqueueaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function c(e){switch(e){case"sound":if(!l.application.appdata)return;return[{key:"save_name",value:l.application.appdata.split("/").pop()}];case"squareProject":if(!l.application.project)return;return[{key:"name",value:l.application.project.split(",")[1]}];case"tag":if(!l.application.tag)return;return[{key:"name",value:l.application.tag}];case"trunk":if(!l.application.trunk)return;return[{key:"name",value:l.application.trunk}];case"user":if(!l.application.user&&!l.application.users)return;return l.application.user?[{key:"name",value:l.application.user.split("/")[1]}]:_.map(l.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!l.application.name)return;return[{key:"name",value:l.application.name}];case"voiceContext":if(!l.application.context)return;return[{key:"name",value:l.application.context}];case"voiceMail":if(!l.application.voiceMail)return;return[{key:"mailbox",value:l.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!l.application.queue)return;return[{key:"name",value:l.application.queue}]}}function m(){s.getResourcesByRole(l.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},c("trunk")).then(function(e){l.trunks=e}).catch(function(){i.error({title:$translate.instant("TOOLS.TRUNKS"),msg:$translate.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function u(){s.getResourcesByRole(l.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},c("sound")).then(function(e){l.sounds=e}).catch(function(){i.error({title:$translate.instant("TOOLS.SOUNDS"),msg:$translate.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function p(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=c("user"),t=[s.getResourcesByRole(l.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),s.getResourcesByRole(l.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();l.users={rows:n,count:n.length}}).catch(function(){i.error({title:$translate.instant("STAFF.USERS"),msg:$translate.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function g(){l.application.appdata&&e.hide(l.application),e.hide()}l.currentUser=o.getCurrentUser(),l.application=angular.copy(n),l.crudPermissions=r,l.errors=[],l.init=function(){l.application.appdata&&function(){var e=[];switch(l.application.appType){case"agi":l.application.project=l.application.appdata;break;case"dial":e=l.application.appdata.split(","),l.application.tech=d(e[0]),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"externalDial":e=l.application.appdata.split(","),l.application.trunk=e[0].split("/")[1],l.application.phone=e[0].split("/")[2],l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"goTo":e=l.application.appdata.split(","),l.application.context=d(e[0]),l.application.extension=d(e[1]),l.application.priority=d(e[2]);break;case"internalDial":e=l.application.appdata.split(","),l.application.user=d(e[0]),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"outboundDial":e=l.application.appdata.split(","),l.application.trunk=e[0].split("/")[1],l.application.phone=e[0].split("/")[2],l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]),l.application.prefix=l.application.phone?l.application.phone.split("$")[0]:void 0,l.application.callerId=l.application.callerID?"CALLERID(all)="+l.application.callerID:void 0;break;case"playback":e=l.application.appdata.split(","),l.application.appdata=d(e[0]),l.application.options=d(e[1]);break;case"queue":e=l.application.appdata.split(","),l.application.queue=d(e[0]),l.application.options=d(e[1]),l.application.URL=d(e[2]),l.application.sound=d(e[3]),l.application.timeout=d(e[4]),l.application.agi=d(e[5]),l.application.macro=d(e[6]),l.application.gosub=d(e[7]),l.application.rule=d(e[8]),l.application.position=d(e[9]);break;case"ringGroup":e=l.application.appdata.split(","),l.application.users=e[0].split("&"),l.application.timeout=d(e[1]),l.application.options=d(e[2]),l.application.url=d(e[3]);break;case"set":e=l.application.appdata.split("="),l.application.name=e[0],l.application.value=e[1];break;case"voicemail":e=l.application.appdata.split(","),l.application.voiceMail=d(e[0]),l.application.options=d(e[1])}}();switch(l.application.appType){case"agi":s.getResourcesByRole(l.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},c("squareProject")).then(function(e){l.projects=e}).catch(function(){i.error({title:$translate.instant("CALLYSQUARE.CALLYSQUARE")+" "+$translate.instant("CALLYSQUARE.PROJECTS"),msg:$translate.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":m();break;case"goTo":s.getResourcesByRole(l.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},c("voiceContext")).then(function(e){l.contexts=e}).catch(function(){i.error({title:$translate.instant("VOICE.CONTEXTS"),msg:$translate.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":p();break;case"outboundDial":s.getResourcesByRole(l.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},c("tag")).then(function(e){l.tags=e}).catch(function(){i.error({title:$translate.instant("TOOLS.TAGS"),msg:$translate.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),m();break;case"playback":u();break;case"queue":u(),s.getResourcesByRole(l.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},c("voiceQueue")).then(function(e){l.queues=e}).catch(function(){i.error({title:$translate.instant("VOICE.VOICEQUEUES"),msg:$translate.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":p();break;case"set":s.getResourcesByRole(l.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},c("variable")).then(function(e){l.variables=e}).catch(function(){i.error({title:$translate.instant("TOOLS.VARIABLES"),msg:$translate.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":s.getResourcesByRole(l.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},c("voiceMail")).then(function(e){l.voiceMails=e}).catch(function(){i.error({title:$translate.instant("VOICE.VOICEMAILS"),msg:$translate.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},l.saveRoutingApp=function(){l.errors=[],function(){var e=[];switch(l.application.appType){case"agi":l.application.appdata=l.application.project;break;case"dial":e[0]=l.application.tech,e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",l.application.trunk,l.application.phone].join("/"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"goTo":e[0]=l.application.context,e[1]=l.application.extension,e[2]=l.application.priority,l.application.appdata=e.join(",");break;case"internalDial":e[0]=l.application.user,e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"outboundDial":l.application.phone=t.cutdigits?(l.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(l.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?l.application.options=l.application.options.replace("U(xcally-mixmonitor-context)",""):l.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",l.application.trunk,l.application.phone].join("/"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"playback":e[0]=l.application.appdata,e[1]=l.application.options,l.application.appdata=e.join(",");break;case"queue":e[0]=l.application.queue,e[1]=l.application.options,e[2]=l.application.URL,e[3]=l.application.sound,e[4]=l.application.timeout,e[5]=l.application.agi,e[6]=l.application.macro,e[7]=l.application.gosub,e[8]=l.application.rule,e[9]=l.application.position,l.application.appdata=e.join(",");break;case"ringGroup":e[0]=l.application.users.join("&"),e[1]=l.application.timeout,e[2]=l.application.options,e[3]=l.application.url,l.application.appdata=e.join(",");break;case"set":e[0]=l.application.name,e[1]=l.application.value,l.application.appdata=e.join("=");break;case"voicemail":e[0]=l.application.voiceMail,e[1]=l.application.options,l.application.appdata=e.join(",")}}(),g()},l.closeDialog=g}e.$inject=["$mdDialog","$q","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;function d(){var e=[{key:"name",value:l.interval.IntervalId}];i.getResourcesByRole(l.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){l.intervals=e}).catch(function(){a.error({title:$translate.instant("TOOLS.INTERVALS"),msg:$translate.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function c(e){n.hide(e)}l.currentUser=s.getCurrentUser(),l.interval=angular.copy(e),l.intervals=t||{rows:[],count:0},l.types=["always","custom","list"],l.crudPermissions=o,l.errors=[],l.daysOfWeek=r.getDaysOfWeek(),l.monthNumber=r.getMonthNumber(),l.monthName=r.getMonthName(),l.daysOfMonth=r.getDaysOfMonth(),l.initialize=function(){if("*,*,*,*"===l.interval.interval)return l.type=l.interval.IntervalId&&l.interval.application?"list":"always",void("list"===l.type&&d());l.type="custom";var e=l.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),l.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),l.timeRangeTo=s}"*"!==t&&(l.dayOfWeekFrom=t.split("-")[0],l.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(l.monthDayFrom=a.split("-")[0],l.monthDayTo=a.split("-")[1]);"*"!==i&&(l.monthFrom=i.split("-")[0],l.monthTo=i.split("-")[1])},l.onTypeChange=function(){"list"===l.type&&0===l.intervals.count&&d()},l.saveInterval=function(){l.errors=[],l.interval.interval=function(){if(["always","list"].includes(l.type))return"*,*,*,*";var e=[];if("*"!==l.timeRangeFrom&&l.timeRangeFrom&&l.timeRangeTo){var n=(l.timeRangeFrom.getHours()<10?"0":"")+l.timeRangeFrom.getHours()+":"+(l.timeRangeFrom.getMinutes()<10?"0":"")+l.timeRangeFrom.getMinutes(),t=(l.timeRangeTo.getHours()<10?"0":"")+l.timeRangeTo.getHours()+":"+(l.timeRangeTo.getMinutes()<10?"0":"")+l.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return l.dayOfWeekFrom?l.dayOfWeekTo?e.push(l.dayOfWeekFrom+"-"+l.dayOfWeekTo):e.push(l.dayOfWeekFrom):e.push("*"),l.monthDayFrom?l.monthDayTo?e.push(l.monthDayFrom+"-"+l.monthDayTo):e.push(l.monthDayFrom):e.push("*"),l.monthFrom?l.monthTo?e.push(l.monthFrom+"-"+l.monthTo):e.push(l.monthFrom):e.push("*"),e.join()}(),"list"!==l.type&&(l.interval.IntervalId=null);c(l.interval)},l.closeDialog=c}e.$inject=["$mdDialog","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata!==e.appdata&&p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata!==e.appdata&&p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata!==e.appdata&&p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(n.disconnect(),n.connect(),a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),v(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n              </div>\n\n              <form name="scriptForm" flex="100" novalidate>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n              </form>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'CHAT.PAGE' | translate}}:', rowsPerPage: '{{'CHAT.ROWSPERPAGE' | translate}}:', of: '{{'CHAT.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-init="vm.getCustomFields(vm.contact.ListId)" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n\n          <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row">\n          <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n            <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n            <md-card-header layout="row" layout-align="space-between">\n              <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                <timer start-time="call.answertime"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                </md-tooltip>\n              </span>\n              <span ng-if="call.disposedAt" class="text-boxed amber-200-bg mr-0">\n                <timer start-time="call.disposedAt"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                </md-tooltip>\n              </span>\n            </md-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="mr-16">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="mr-8">\n                  </md-icon>\n                  <span class="h1" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                </div>\n\n                <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                  <md-icon md-font-icon="icon-account"></md-icon>\n                  Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                </div>\n\n                <div class="text h4 pt-8" ng-if="call.queue">\n                  <md-icon md-font-icon="icon-stackoverflow"></md-icon>\n                  Queue: {{call.queue}}\n                </div>\n                <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                  <md-icon md-font-icon="icon-minus"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <md-input-container ng-if="!vm.dialerCall" class="md-block">\n          <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n          <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n            <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</md-option>\n          </md-select>\n          <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeChat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",'<md-dialog class="compose-dialog-fax" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          \x3c!-- <input ng-model="vm.message.subject" type="text"> --\x3e\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n            \x3c!-- <md-icon md-font-icon="icon-close" class="s16"></md-icon> --\x3e\n          </md-button>\n        </div>\n      </div>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-style="{\n    \'max-width\':  {true: \'620px\', false: \'90%\'}[ vm.secret ],\n    \'width\': {true: \'620px\', false: \'100%\'}[ vm.secret ],\n    \'max-height\': {true: undefined, false: \'97%\'}[ vm.secret ]\n  }">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'FAX.PAGE' | translate}}:', rowsPerPage: '{{'FAX.ROWSPERPAGE' | translate}}:', of: '{{'FAX.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MAIL.PAGE' | translate}}:', rowsPerPage: '{{'MAIL.ROWSPERPAGE' | translate}}:', of: '{{'MAIL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'SMS.PAGE' | translate}}:', rowsPerPage: '{{'SMS.ROWSPERPAGE' | translate}}:', of: '{{'SMS.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name ">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email ">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone ">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile ">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal ">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'WHATSAPP.PAGE' | translate}}:', rowsPerPage: '{{'WHATSAPP.ROWSPERPAGE' | translate}}:', of: '{{'WHATSAPP.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span translate="{{lang.translation}}">{{lang.title}}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\n        <div class="md-padding md-margin" layout="column" flex="30">\n          <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.ID">ID</label>\n            <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n            <label translate="VOICE.QUEUE">Queue</label>\n            <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <input type="text" ng-model="vm.preview.List.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.TAGS">Tags</label>\n            <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n          </md-input-container>\n        </div>\n        <md-divider></md-divider>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n            <input type="text" ng-model="value" disabled="true" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\n        </div>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ vm.customFieldsMap[key] || key }}</label>\n            <input type="text" ng-model="value" disabled="true">\n          </md-input-container>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
diff --git a/public/styles/app.91ca40ed.css b/public/styles/app.91ca40ed.css
new file mode 100644 (file)
index 0000000..e941370
--- /dev/null
@@ -0,0 +1 @@
+[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:absolute;top:0;right:0;bottom:0;left:0}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content{padding:24px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-scroll{overflow:hidden!important}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{visibility:hidden;width:500px;position:absolute;white-space:pre-line;left:100%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:200px}#agent-general md-card.call-info-card div.reload-container{position:relative}#agent-general md-card.call-info-card button.reload-button{position:absolute;right:-16px}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog-fax{max-width:720px;width:720px;max-height:450px;height:450px}md-dialog.compose-dialog-fax md-dialog-content{display:block;position:relative}md-dialog.compose-dialog-fax md-toolbar .title{font-size:17px}md-dialog.compose-dialog-fax md-chips md-chip{font-size:12px}md-dialog.compose-dialog-fax md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog-fax .to{position:relative}md-dialog.compose-dialog-fax .attachment-list{font-size:13px}md-dialog.compose-dialog-fax .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog-fax .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog-fax .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog-fax .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog-fax .error-list{font-size:13px}md-dialog.compose-dialog-fax .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog-fax .error-list .error .message{font-weight:500}md-dialog.compose-dialog-fax .error-list .error .md-button{margin:0}md-dialog.compose-dialog-fax .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog-fax md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{min-height:250px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
diff --git a/public/styles/app.d488371f.css b/public/styles/app.d488371f.css
deleted file mode 100644 (file)
index 6c43793..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}#toasty.toasty-position-top-right{top:64px}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:absolute;top:0;right:0;bottom:0;left:0}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content{padding:24px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-scroll{overflow:hidden!important}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{visibility:hidden;width:500px;position:fixed;white-space:pre-line;left:28%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
index d03a511..5f6d52d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8420=['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[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','sequelize','exports','getDataValue','action','STRING','contactManager','integration','motionbar'];(function(_0x23c164,_0xe4d8f8){var _0xc2666c=function(_0x7cecf2){while(--_0x7cecf2){_0x23c164['push'](_0x23c164['shift']());}};_0xc2666c(++_0xe4d8f8);}(_0x8420,0xbe));var _0x0842=function(_0x27f3a4,_0x246b29){_0x27f3a4=_0x27f3a4-0x0;var _0x462541=_0x8420[_0x27f3a4];return _0x462541;};'use strict';var Sequelize=require(_0x0842('0x0'));module[_0x0842('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x515af2){return this[_0x0842('0x2')](_0x0842('0x3'));}},'action':{'type':Sequelize[_0x0842('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x0842('0x5'),_0x0842('0x6'),_0x0842('0x7'),_0x0842('0x8'),_0x0842('0x9'),_0x0842('0xa'),_0x0842('0xb'),_0x0842('0xc')]],'msg':_0x0842('0xd')}},'comment':_0x0842('0xd')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x0842('0xe')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x0842('0xf')},'data3':{'type':Sequelize[_0x0842('0x4')](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize[_0x0842('0x4')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0x0842('0x4')](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize['STRING'],'comments':_0x0842('0x10')},'data7':{'type':Sequelize[_0x0842('0x11')],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0x3d68=['jscripty','urlForward','browser','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[ListId],\x20integration[intName(zendesk)],\x20motionbar[Popup(0),URL(1),WinApp(2)],\x20urlForward[GET,POST],\x20browser[TemplateId(0),URL(1)]','integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20urlForward[URL]','motionbar[NULL,NULL,WinAppArguments]','TEXT','VIRTUAL','getDataValue','action','STRING','contactManager','integration','motionbar'];(function(_0x4f550,_0x3edd72){var _0xd18547=function(_0x33dec3){while(--_0x33dec3){_0x4f550['push'](_0x4f550['shift']());}};_0xd18547(++_0x3edd72);}(_0x3d68,0x1e9));var _0x83d6=function(_0x4e8d75,_0x56d786){_0x4e8d75=_0x4e8d75-0x0;var _0x42e450=_0x3d68[_0x4e8d75];return _0x42e450;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x83d6('0x0')],'get':function(_0x1babc8){return this[_0x83d6('0x1')](_0x83d6('0x2'));}},'action':{'type':Sequelize[_0x83d6('0x3')],'allowNull':![],'validate':{'isIn':{'args':[[_0x83d6('0x4'),_0x83d6('0x5'),_0x83d6('0x6'),_0x83d6('0x7'),_0x83d6('0x8'),_0x83d6('0x9'),_0x83d6('0xa'),'script']],'msg':_0x83d6('0xb')}},'comment':_0x83d6('0xb')},'data1':{'type':Sequelize[_0x83d6('0x3')](0x1000),'comment':_0x83d6('0xc')},'data2':{'type':Sequelize[_0x83d6('0x3')](0x1000),'comment':_0x83d6('0xd')},'data3':{'type':Sequelize[_0x83d6('0x3')](0x1000),'comment':_0x83d6('0xe')},'data4':{'type':Sequelize[_0x83d6('0x3')](0x1000)},'data5':{'type':Sequelize[_0x83d6('0x3')](0x1000)},'data6':{'type':Sequelize[_0x83d6('0x3')]},'data7':{'type':Sequelize[_0x83d6('0xf')]}};
\ No newline at end of file
index 7c61acb..280dbf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5281=['offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','body','find','params','catch','eml-format','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','end','json'];(function(_0x91143b,_0x4eb071){var _0x283b44=function(_0x22d73a){while(--_0x22d73a){_0x91143b['push'](_0x91143b['shift']());}};_0x283b44(++_0x4eb071);}(_0x5281,0x1d6));var _0x1528=function(_0xca80bb,_0x5bdfb1){_0xca80bb=_0xca80bb-0x0;var _0x2cf377=_0x5281[_0xca80bb];return _0x2cf377;};'use strict';var emlformat=require(_0x1528('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1528('0x1'));var moment=require(_0x1528('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x1528('0x3'));var util=require(_0x1528('0x4'));var path=require(_0x1528('0x5'));var sox=require(_0x1528('0x6'));var csv=require('to-csv');var ejs=require(_0x1528('0x7'));var fs=require('fs');var fs_extra=require(_0x1528('0x8'));var _=require(_0x1528('0x9'));var squel=require('squel');var crypto=require(_0x1528('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1528('0xb'));var querystring=require(_0x1528('0xc'));var Papa=require(_0x1528('0xd'));var Redis=require(_0x1528('0xe'));var authService=require(_0x1528('0xf'));var qs=require(_0x1528('0x10'));var as=require(_0x1528('0x11'));var hardwareService=require(_0x1528('0x12'));var logger=require(_0x1528('0x13'))('api');var utils=require(_0x1528('0x14'));var config=require(_0x1528('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c5c4b,_0x1c4f1e){_0x1c4f1e=_0x1c4f1e||0xcc;return function(_0x1e63b6){if(_0x1e63b6){return _0x2c5c4b[_0x1528('0x16')](_0x1c4f1e);}return _0x2c5c4b['status'](_0x1c4f1e)[_0x1528('0x17')]();};}function respondWithResult(_0x581308,_0xe7b708){_0xe7b708=_0xe7b708||0xc8;return function(_0x4876b2){if(_0x4876b2){return _0x581308['status'](_0xe7b708)[_0x1528('0x18')](_0x4876b2);}};}function respondWithFilteredResult(_0x1d3d42,_0x18134f){return function(_0x1a636d){if(_0x1a636d){var _0x1d7675=typeof _0x18134f[_0x1528('0x19')]===_0x1528('0x1a')&&typeof _0x18134f[_0x1528('0x1b')]===_0x1528('0x1a');var _0x5b8be5=_0x1a636d[_0x1528('0x1c')];var _0x3e65c4=_0x1d7675?0x0:_0x18134f[_0x1528('0x19')];var _0x2ecbdf=_0x1d7675?_0x1a636d['count']:_0x18134f[_0x1528('0x19')]+_0x18134f[_0x1528('0x1b')];var _0x23f47b;if(_0x2ecbdf>=_0x5b8be5){_0x2ecbdf=_0x5b8be5;_0x23f47b=0xc8;}else{_0x23f47b=0xce;}_0x1d3d42[_0x1528('0x1d')](_0x23f47b);return _0x1d3d42['set'](_0x1528('0x1e'),_0x3e65c4+'-'+_0x2ecbdf+'/'+_0x5b8be5)[_0x1528('0x18')](_0x1a636d);}return null;};}function patchUpdates(_0x405a8e){return function(_0x372b09){try{jsonpatch[_0x1528('0x1f')](_0x372b09,_0x405a8e,!![]);}catch(_0x545a02){return BPromise[_0x1528('0x20')](_0x545a02);}return _0x372b09[_0x1528('0x21')]();};}function saveUpdates(_0x52c7e7,_0x2867a0){return function(_0xa9fa4d){if(_0xa9fa4d){return _0xa9fa4d[_0x1528('0x22')](_0x52c7e7)[_0x1528('0x23')](function(_0x4b18c5){return _0x4b18c5;});}return null;};}function removeEntity(_0x42830e,_0x281adc){return function(_0x12746c){if(_0x12746c){return _0x12746c[_0x1528('0x24')]()['then'](function(){_0x42830e[_0x1528('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x167ba6,_0x1f33a0){return function(_0x17e24f){if(!_0x17e24f){_0x167ba6[_0x1528('0x16')](0x194);}return _0x17e24f;};}function handleError(_0x4537a5,_0x54e993){_0x54e993=_0x54e993||0x1f4;return function(_0x3e7868){logger[_0x1528('0x25')](_0x3e7868[_0x1528('0x26')]);if(_0x3e7868[_0x1528('0x27')]){delete _0x3e7868[_0x1528('0x27')];}_0x4537a5[_0x1528('0x1d')](_0x54e993)[_0x1528('0x28')](_0x3e7868);};}exports[_0x1528('0x22')]=function(_0x3a6766,_0x2ac4b3){if(_0x3a6766['body']['id']){delete _0x3a6766[_0x1528('0x29')]['id'];}return db['Action'][_0x1528('0x2a')]({'where':{'id':_0x3a6766[_0x1528('0x2b')]['id']}})['then'](handleEntityNotFound(_0x2ac4b3,null))[_0x1528('0x23')](saveUpdates(_0x3a6766[_0x1528('0x29')],null))[_0x1528('0x23')](respondWithResult(_0x2ac4b3,null))[_0x1528('0x2c')](handleError(_0x2ac4b3,null));};exports[_0x1528('0x24')]=function(_0x5859ac,_0x2f3e7f){return db['Action'][_0x1528('0x2a')]({'where':{'id':_0x5859ac['params']['id']}})[_0x1528('0x23')](handleEntityNotFound(_0x2f3e7f,null))[_0x1528('0x23')](removeEntity(_0x2f3e7f,null))[_0x1528('0x2c')](handleError(_0x2f3e7f,null));};
\ No newline at end of file
+var _0xee08=['sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','body','Action','find','params','catch','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xee08,0x1da));var _0x8ee0=function(_0x41fa41,_0x579d94){_0x41fa41=_0x41fa41-0x0;var _0x1809de=_0xee08[_0x41fa41];return _0x1809de;};'use strict';var emlformat=require(_0x8ee0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8ee0('0x1'));var jsonpatch=require(_0x8ee0('0x2'));var rp=require(_0x8ee0('0x3'));var moment=require(_0x8ee0('0x4'));var BPromise=require(_0x8ee0('0x5'));var Mustache=require(_0x8ee0('0x6'));var util=require('util');var path=require('path');var sox=require(_0x8ee0('0x7'));var csv=require('to-csv');var ejs=require(_0x8ee0('0x8'));var fs=require('fs');var fs_extra=require(_0x8ee0('0x9'));var _=require(_0x8ee0('0xa'));var squel=require(_0x8ee0('0xb'));var crypto=require(_0x8ee0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8ee0('0xd'));var toCsv=require(_0x8ee0('0xe'));var querystring=require(_0x8ee0('0xf'));var Papa=require(_0x8ee0('0x10'));var Redis=require(_0x8ee0('0x11'));var authService=require(_0x8ee0('0x12'));var qs=require(_0x8ee0('0x13'));var as=require(_0x8ee0('0x14'));var hardwareService=require(_0x8ee0('0x15'));var logger=require(_0x8ee0('0x16'))('api');var utils=require(_0x8ee0('0x17'));var config=require(_0x8ee0('0x18'));var licenseUtil=require(_0x8ee0('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x265baa,_0xca9dd6){_0xca9dd6=_0xca9dd6||0xcc;return function(_0x316d05){if(_0x316d05){return _0x265baa[_0x8ee0('0x1a')](_0xca9dd6);}return _0x265baa['status'](_0xca9dd6)[_0x8ee0('0x1b')]();};}function respondWithResult(_0x4359ed,_0x485e8c){_0x485e8c=_0x485e8c||0xc8;return function(_0x507c8f){if(_0x507c8f){return _0x4359ed[_0x8ee0('0x1c')](_0x485e8c)[_0x8ee0('0x1d')](_0x507c8f);}};}function respondWithFilteredResult(_0x3e2771,_0x5c21e8){return function(_0x10bc95){if(_0x10bc95){var _0x3a6795=typeof _0x5c21e8[_0x8ee0('0x1e')]===_0x8ee0('0x1f')&&typeof _0x5c21e8[_0x8ee0('0x20')]===_0x8ee0('0x1f');var _0x1e4fd9=_0x10bc95[_0x8ee0('0x21')];var _0x58e2c1=_0x3a6795?0x0:_0x5c21e8[_0x8ee0('0x1e')];var _0x59937c=_0x3a6795?_0x10bc95[_0x8ee0('0x21')]:_0x5c21e8['offset']+_0x5c21e8[_0x8ee0('0x20')];var _0x2a272d;if(_0x59937c>=_0x1e4fd9){_0x59937c=_0x1e4fd9;_0x2a272d=0xc8;}else{_0x2a272d=0xce;}_0x3e2771[_0x8ee0('0x1c')](_0x2a272d);return _0x3e2771[_0x8ee0('0x22')](_0x8ee0('0x23'),_0x58e2c1+'-'+_0x59937c+'/'+_0x1e4fd9)['json'](_0x10bc95);}return null;};}function patchUpdates(_0x4a7939){return function(_0x2bd91b){try{jsonpatch[_0x8ee0('0x24')](_0x2bd91b,_0x4a7939,!![]);}catch(_0x1c5733){return BPromise[_0x8ee0('0x25')](_0x1c5733);}return _0x2bd91b[_0x8ee0('0x26')]();};}function saveUpdates(_0x36fa20,_0x33f103){return function(_0x85d867){if(_0x85d867){return _0x85d867[_0x8ee0('0x27')](_0x36fa20)[_0x8ee0('0x28')](function(_0x3b4afe){return _0x3b4afe;});}return null;};}function removeEntity(_0x388a7b,_0x27c1fc){return function(_0x5c642f){if(_0x5c642f){return _0x5c642f[_0x8ee0('0x29')]()['then'](function(){_0x388a7b[_0x8ee0('0x1c')](0xcc)[_0x8ee0('0x1b')]();});}};}function handleEntityNotFound(_0x1a506c,_0x5ddb51){return function(_0xe49ffd){if(!_0xe49ffd){_0x1a506c[_0x8ee0('0x1a')](0x194);}return _0xe49ffd;};}function handleError(_0x533183,_0x42438c){_0x42438c=_0x42438c||0x1f4;return function(_0x379b1c){logger[_0x8ee0('0x2a')](_0x379b1c['stack']);if(_0x379b1c[_0x8ee0('0x2b')]){delete _0x379b1c['name'];}_0x533183[_0x8ee0('0x1c')](_0x42438c)[_0x8ee0('0x2c')](_0x379b1c);};}exports[_0x8ee0('0x27')]=function(_0xf52ee3,_0xc2a6c6){if(_0xf52ee3[_0x8ee0('0x2d')]['id']){delete _0xf52ee3[_0x8ee0('0x2d')]['id'];}return db[_0x8ee0('0x2e')][_0x8ee0('0x2f')]({'where':{'id':_0xf52ee3[_0x8ee0('0x30')]['id']}})['then'](handleEntityNotFound(_0xc2a6c6,null))[_0x8ee0('0x28')](saveUpdates(_0xf52ee3['body'],null))[_0x8ee0('0x28')](respondWithResult(_0xc2a6c6,null))[_0x8ee0('0x31')](handleError(_0xc2a6c6,null));};exports['destroy']=function(_0x4feac9,_0x4e1ad8){return db[_0x8ee0('0x2e')][_0x8ee0('0x2f')]({'where':{'id':_0x4feac9[_0x8ee0('0x30')]['id']}})[_0x8ee0('0x28')](handleEntityNotFound(_0x4e1ad8,null))[_0x8ee0('0x28')](removeEntity(_0x4e1ad8,null))[_0x8ee0('0x31')](handleError(_0x4e1ad8,null));};
\ No newline at end of file
index 2aeda96..b347446 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x238e=['request-promise','rimraf','exports','define','Action','lodash','util','../../config/logger','moment','bluebird'];(function(_0x594983,_0x52e4ea){var _0x4e63d4=function(_0x2913d7){while(--_0x2913d7){_0x594983['push'](_0x594983['shift']());}};_0x4e63d4(++_0x52e4ea);}(_0x238e,0x69));var _0xe238=function(_0x44bac8,_0x4d3691){_0x44bac8=_0x44bac8-0x0;var _0x13f823=_0x238e[_0x44bac8];return _0x13f823;};'use strict';var _=require(_0xe238('0x0'));var util=require(_0xe238('0x1'));var logger=require(_0xe238('0x2'))('api');var moment=require(_0xe238('0x3'));var BPromise=require(_0xe238('0x4'));var rp=require(_0xe238('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe238('0x6'));var config=require('../../config/environment');var attributes=require('./action.attributes');module[_0xe238('0x7')]=function(_0x54d40c,_0x3de486){return _0x54d40c[_0xe238('0x8')](_0xe238('0x9'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4be=['rimraf','./action.attributes','define','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0xc4be,0x1ed));var _0xec4b=function(_0x26305f,_0x3e504e){_0x26305f=_0x26305f-0x0;var _0x3abce5=_0xc4be[_0x26305f];return _0x3abce5;};'use strict';var _=require(_0xec4b('0x0'));var util=require(_0xec4b('0x1'));var logger=require('../../config/logger')(_0xec4b('0x2'));var moment=require(_0xec4b('0x3'));var BPromise=require(_0xec4b('0x4'));var rp=require(_0xec4b('0x5'));var fs=require('fs');var path=require(_0xec4b('0x6'));var rimraf=require(_0xec4b('0x7'));var config=require('../../config/environment');var attributes=require(_0xec4b('0x8'));module['exports']=function(_0x2b2685,_0x27be0c){return _0x2b2685[_0xec4b('0x9')]('Action',attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4e02c91..74cd488 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','Action,\x20%s,\x20%s','debug','Action,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x58dc25,_0x49b9d5){var _0x21b0a7=function(_0x38a186){while(--_0x38a186){_0x58dc25['push'](_0x58dc25['shift']());}};_0x21b0a7(++_0x49b9d5);}(_0x7217,0x19e));var _0x7721=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x7217[_0x484e36];return _0xafc85d;};'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')]('Action,\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']('Action,\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 _0x7a54=['info','Action,\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(_0x2ea462,_0xaf4fe9){_0x2ea462=_0x2ea462-0x0;var _0x548738=_0x7a54[_0x2ea462];return _0x548738;};'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')]('Action,\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 ca80377..0f688c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2900=['Router','../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated','delete','destroy','exports'];(function(_0x332998,_0x2d99c7){var _0x460be7=function(_0x1a4d24){while(--_0x1a4d24){_0x332998['push'](_0x332998['shift']());}};_0x460be7(++_0x2d99c7);}(_0x2900,0x18c));var _0x0290=function(_0x3e8cae,_0x4cb96a){_0x3e8cae=_0x3e8cae-0x0;var _0x45c4d6=_0x2900[_0x3e8cae];return _0x45c4d6;};'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[_0x0290('0x0')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0290('0x1'));var config=require(_0x0290('0x2'));var controller=require('./action.controller');router[_0x0290('0x3')](_0x0290('0x4'),auth[_0x0290('0x5')](),controller['update']);router[_0x0290('0x6')](_0x0290('0x4'),auth[_0x0290('0x5')](),controller[_0x0290('0x7')]);module[_0x0290('0x8')]=router;
\ No newline at end of file
+var _0x18d0=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','put','/:id','delete','destroy','exports','multer','util'];(function(_0x2c2980,_0x34282a){var _0x2a20a9=function(_0x537b18){while(--_0x537b18){_0x2c2980['push'](_0x2c2980['shift']());}};_0x2a20a9(++_0x34282a);}(_0x18d0,0x6e));var _0x018d=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0x18d0[_0xaa1b3e];return _0x454d7d;};'use strict';var multer=require(_0x018d('0x0'));var util=require(_0x018d('0x1'));var path=require(_0x018d('0x2'));var timeout=require(_0x018d('0x3'));var express=require(_0x018d('0x4'));var router=express[_0x018d('0x5')]();var fs_extra=require(_0x018d('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x018d('0x7'));var config=require(_0x018d('0x8'));var controller=require('./action.controller');router[_0x018d('0x9')](_0x018d('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x018d('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x018d('0xc')]);module[_0x018d('0xd')]=router;
\ No newline at end of file
index 72eb8f7..d6f61ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['sequelize','exports','STRING','TEXT'];(function(_0x3cea78,_0x4a6751){var _0x33b66b=function(_0x1f45cd){while(--_0x1f45cd){_0x3cea78['push'](_0x3cea78['shift']());}};_0x33b66b(++_0x4a6751);}(_0x46ed,0x168));var _0xd46e=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x46ed[_0x29d94e];return _0x106237;};'use strict';var Sequelize=require(_0xd46e('0x0'));module[_0xd46e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xd46e('0x2')]},'parent':{'type':Sequelize[_0xd46e('0x2')]},'table':{'type':Sequelize[_0xd46e('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xd46e('0x3')]}};
\ No newline at end of file
+var _0xb4c7=['STRING','TEXT','sequelize','exports'];(function(_0x3c4737,_0x2329ec){var _0x2bb926=function(_0x3b9605){while(--_0x3b9605){_0x3c4737['push'](_0x3c4737['shift']());}};_0x2bb926(++_0x2329ec);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x72a548,_0x34b6b1){_0x72a548=_0x72a548-0x0;var _0x123cd3=_0xb4c7[_0x72a548];return _0x123cd3;};'use strict';var Sequelize=require(_0x7b4c('0x0'));module[_0x7b4c('0x1')]={'name':{'type':Sequelize[_0x7b4c('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x7b4c('0x2')]},'parent':{'type':Sequelize[_0x7b4c('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0x7b4c('0x3')]},'joins':{'type':Sequelize[_0x7b4c('0x3')]}};
\ No newline at end of file
index 9a2451b..082877d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf777=['querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','then','destroy','get','CustomReports','error','stack','name','index','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','sort','where','pick','merge','filter','options','AnalyticCustomReport','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','right_join','cross_join','COUNT(%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)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','function','replace','format','groupBy','orderBy','order','DESC','alias','joins','parse','includes','foreignTable','foreignKey','parentKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','left_join','SUM(%s)','GROUP_CONCAT(%s)','IS\x20NOT\x20NULL','operator','findAll','metric','%s.%s\x20=\x20%s.%s','web','fullPath','%s-%s.%s','randomstring','generate','csv','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','child_process','fork','../../components/export/','output','../../files/reports','savename','countTable','COUNT(*)','QueryTypes','SELECT','run','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','jsforce','desk.js'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0xf777,0x1e9));var _0x7f77=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf777[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x7f77('0x0'));var rimraf=require(_0x7f77('0x1'));var zipdir=require(_0x7f77('0x2'));var jsonpatch=require(_0x7f77('0x3'));var rp=require(_0x7f77('0x4'));var moment=require(_0x7f77('0x5'));var BPromise=require(_0x7f77('0x6'));var Mustache=require(_0x7f77('0x7'));var util=require(_0x7f77('0x8'));var path=require('path');var sox=require(_0x7f77('0x9'));var csv=require(_0x7f77('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7f77('0xb'));var _=require('lodash');var squel=require(_0x7f77('0xc'));var crypto=require('crypto');var jsforce=require(_0x7f77('0xd'));var deskjs=require(_0x7f77('0xe'));var toCsv=require(_0x7f77('0xa'));var querystring=require(_0x7f77('0xf'));var Papa=require(_0x7f77('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7f77('0x11'));var as=require(_0x7f77('0x12'));var hardwareService=require(_0x7f77('0x13'));var logger=require(_0x7f77('0x14'))(_0x7f77('0x15'));var utils=require('../../config/utils');var config=require(_0x7f77('0x16'));var licenseUtil=require(_0x7f77('0x17'));var db=require(_0x7f77('0x18'))['db'];var dbH=require(_0x7f77('0x18'))[_0x7f77('0x19')];function respondWithStatusCode(_0x484018,_0x505975){_0x505975=_0x505975||0xcc;return function(_0x1c275e){if(_0x1c275e){return _0x484018[_0x7f77('0x1a')](_0x505975);}return _0x484018[_0x7f77('0x1b')](_0x505975)[_0x7f77('0x1c')]();};}function respondWithResult(_0xe15bf7,_0x194b15){_0x194b15=_0x194b15||0xc8;return function(_0x1f0729){if(_0x1f0729){return _0xe15bf7[_0x7f77('0x1b')](_0x194b15)[_0x7f77('0x1d')](_0x1f0729);}};}function respondWithFilteredResult(_0x3d8a45,_0x2c104a){return function(_0x29d2cb){if(_0x29d2cb){var _0x186f7a=typeof _0x2c104a[_0x7f77('0x1e')]===_0x7f77('0x1f')&&typeof _0x2c104a[_0x7f77('0x20')]==='undefined';var _0x5b2c85=_0x29d2cb[_0x7f77('0x21')];var _0x53ec10=_0x186f7a?0x0:_0x2c104a[_0x7f77('0x1e')];var _0x50eb96=_0x186f7a?_0x29d2cb[_0x7f77('0x21')]:_0x2c104a[_0x7f77('0x1e')]+_0x2c104a[_0x7f77('0x20')];var _0x5306ae;if(_0x50eb96>=_0x5b2c85){_0x50eb96=_0x5b2c85;_0x5306ae=0xc8;}else{_0x5306ae=0xce;}_0x3d8a45[_0x7f77('0x1b')](_0x5306ae);return _0x3d8a45[_0x7f77('0x22')]('Content-Range',_0x53ec10+'-'+_0x50eb96+'/'+_0x5b2c85)[_0x7f77('0x1d')](_0x29d2cb);}return null;};}function patchUpdates(_0x58df31){return function(_0x2d7654){try{jsonpatch['apply'](_0x2d7654,_0x58df31,!![]);}catch(_0x24fac0){return BPromise['reject'](_0x24fac0);}return _0x2d7654['save']();};}function saveUpdates(_0xcb6a79,_0x30c54c){return function(_0x583faf){if(_0x583faf){return _0x583faf['update'](_0xcb6a79)[_0x7f77('0x23')](function(_0x87e6b6){return _0x87e6b6;});}return null;};}function removeEntity(_0x1d8fe3,_0x596139){return function(_0x5e03a3){if(_0x5e03a3){return _0x5e03a3[_0x7f77('0x24')]()[_0x7f77('0x23')](function(){var _0x303043=_0x5e03a3[_0x7f77('0x25')]({'plain':!![]});var _0xd78c83=_0x7f77('0x26');return db['UserProfileResource'][_0x7f77('0x24')]({'where':{'type':_0xd78c83,'resourceId':_0x303043['id']}})['then'](function(){return _0x5e03a3;});})[_0x7f77('0x23')](function(){_0x1d8fe3[_0x7f77('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2bd7e0,_0x386842){return function(_0x51437e){if(!_0x51437e){_0x2bd7e0[_0x7f77('0x1a')](0x194);}return _0x51437e;};}function handleError(_0x53ac60,_0x341b5a){_0x341b5a=_0x341b5a||0x1f4;return function(_0x25fcae){logger[_0x7f77('0x27')](_0x25fcae[_0x7f77('0x28')]);if(_0x25fcae[_0x7f77('0x29')]){delete _0x25fcae[_0x7f77('0x29')];}_0x53ac60[_0x7f77('0x1b')](_0x341b5a)['send'](_0x25fcae);};}exports[_0x7f77('0x2a')]=function(_0x26c84c,_0x19d93f){var _0x41be46={},_0x473c5f={},_0x429729={'count':0x0,'rows':[]};var _0x2c64db=_['map'](db['AnalyticCustomReport']['rawAttributes'],function(_0x11723e){return{'name':_0x11723e[_0x7f77('0x2b')],'type':_0x11723e[_0x7f77('0x2c')][_0x7f77('0x2d')]};});_0x473c5f[_0x7f77('0x2e')]=_[_0x7f77('0x2f')](_0x2c64db,_0x7f77('0x29'));_0x473c5f[_0x7f77('0x30')]=_[_0x7f77('0x31')](_0x26c84c[_0x7f77('0x30')]);_0x473c5f[_0x7f77('0x32')]=_['intersection'](_0x473c5f[_0x7f77('0x2e')],_0x473c5f[_0x7f77('0x30')]);_0x41be46[_0x7f77('0x33')]=_[_0x7f77('0x34')](_0x473c5f[_0x7f77('0x2e')],qs[_0x7f77('0x35')](_0x26c84c[_0x7f77('0x30')][_0x7f77('0x35')]));_0x41be46[_0x7f77('0x33')]=_0x41be46[_0x7f77('0x33')]['length']?_0x41be46[_0x7f77('0x33')]:_0x473c5f['model'];if(!_0x26c84c[_0x7f77('0x30')][_0x7f77('0x36')]('nolimit')){_0x41be46['limit']=qs[_0x7f77('0x20')](_0x26c84c[_0x7f77('0x30')]['limit']);_0x41be46[_0x7f77('0x1e')]=qs['offset'](_0x26c84c[_0x7f77('0x30')][_0x7f77('0x1e')]);}_0x41be46['order']=qs[_0x7f77('0x37')](_0x26c84c[_0x7f77('0x30')][_0x7f77('0x37')]);_0x41be46[_0x7f77('0x38')]=qs[_0x7f77('0x32')](_[_0x7f77('0x39')](_0x26c84c[_0x7f77('0x30')],_0x473c5f[_0x7f77('0x32')]),_0x2c64db);if(_0x26c84c[_0x7f77('0x30')]['filter']){_0x41be46[_0x7f77('0x38')]=_[_0x7f77('0x3a')](_0x41be46[_0x7f77('0x38')],{'$or':_[_0x7f77('0x2f')](_0x2c64db,function(_0x42c189){if(_0x42c189[_0x7f77('0x2c')]!=='VIRTUAL'){var _0x41614b={};_0x41614b[_0x42c189['name']]={'$like':'%'+_0x26c84c[_0x7f77('0x30')][_0x7f77('0x3b')]+'%'};return _0x41614b;}})});}_0x41be46=_['merge']({},_0x41be46,_0x26c84c[_0x7f77('0x3c')]);var _0x59aaf9={'where':_0x41be46[_0x7f77('0x38')]};return db[_0x7f77('0x3d')][_0x7f77('0x21')](_0x59aaf9)[_0x7f77('0x23')](function(_0x2540e0){_0x429729['count']=_0x2540e0;if(_0x26c84c[_0x7f77('0x30')][_0x7f77('0x3e')]){_0x41be46[_0x7f77('0x3f')]=[{'all':!![]}];}return db[_0x7f77('0x3d')]['findAll'](_0x41be46);})[_0x7f77('0x23')](function(_0x212707){_0x429729[_0x7f77('0x40')]=_0x212707;return _0x429729;})['then'](respondWithFilteredResult(_0x19d93f,_0x41be46))[_0x7f77('0x41')](handleError(_0x19d93f,null));};exports[_0x7f77('0x42')]=function(_0x4b90e1,_0x2c1516){var _0x53c93d={'raw':![],'where':{'id':_0x4b90e1[_0x7f77('0x43')]['id']}},_0x56948d={};_0x56948d[_0x7f77('0x2e')]=_['keys'](db[_0x7f77('0x3d')][_0x7f77('0x44')]);_0x56948d[_0x7f77('0x30')]=_[_0x7f77('0x31')](_0x4b90e1['query']);_0x56948d[_0x7f77('0x32')]=_[_0x7f77('0x34')](_0x56948d[_0x7f77('0x2e')],_0x56948d[_0x7f77('0x30')]);_0x53c93d['attributes']=_[_0x7f77('0x34')](_0x56948d[_0x7f77('0x2e')],qs[_0x7f77('0x35')](_0x4b90e1['query'][_0x7f77('0x35')]));_0x53c93d['attributes']=_0x53c93d[_0x7f77('0x33')][_0x7f77('0x45')]?_0x53c93d[_0x7f77('0x33')]:_0x56948d['model'];if(_0x4b90e1['query'][_0x7f77('0x3e')]){_0x53c93d[_0x7f77('0x3f')]=[{'all':!![]}];}_0x53c93d=_[_0x7f77('0x3a')]({},_0x53c93d,_0x4b90e1[_0x7f77('0x3c')]);return db[_0x7f77('0x3d')][_0x7f77('0x46')](_0x53c93d)[_0x7f77('0x23')](handleEntityNotFound(_0x2c1516,null))[_0x7f77('0x23')](respondWithResult(_0x2c1516,null))[_0x7f77('0x41')](handleError(_0x2c1516,null));};exports[_0x7f77('0x47')]=function(_0x34a835,_0x1ef96c){return db['AnalyticCustomReport'][_0x7f77('0x47')](_0x34a835[_0x7f77('0x48')],{})[_0x7f77('0x23')](function(_0x1edb18){var _0x2a27f0=_0x34a835[_0x7f77('0x49')][_0x7f77('0x25')]({'plain':!![]});if(!_0x2a27f0)throw new Error(_0x7f77('0x4a'));if(_0x2a27f0[_0x7f77('0x4b')]===_0x7f77('0x49')){var _0x1ba85b=_0x1edb18['get']({'plain':!![]});var _0x4cd8ee=_0x7f77('0x4c');return db[_0x7f77('0x4d')][_0x7f77('0x46')]({'where':{'name':_0x4cd8ee,'userProfileId':_0x2a27f0[_0x7f77('0x4e')]},'raw':!![]})['then'](function(_0x186c1b){if(_0x186c1b&&_0x186c1b['autoAssociation']===0x0){return db[_0x7f77('0x4f')][_0x7f77('0x47')]({'name':_0x1ba85b[_0x7f77('0x29')],'resourceId':_0x1ba85b['id'],'type':_0x7f77('0x26'),'sectionId':_0x186c1b['id']},{})[_0x7f77('0x23')](function(){return _0x1edb18;});}else{return _0x1edb18;}})['catch'](function(_0x11b484){logger['error'](_0x7f77('0x50'),_0x11b484);throw _0x11b484;});}return _0x1edb18;})['then'](respondWithResult(_0x1ef96c,0xc9))[_0x7f77('0x41')](handleError(_0x1ef96c,null));};exports[_0x7f77('0x51')]=function(_0xa31ce6,_0x230fd0){if(_0xa31ce6[_0x7f77('0x48')]['id']){delete _0xa31ce6['body']['id'];}return db['AnalyticCustomReport'][_0x7f77('0x46')]({'where':{'id':_0xa31ce6[_0x7f77('0x43')]['id']}})['then'](handleEntityNotFound(_0x230fd0,null))[_0x7f77('0x23')](saveUpdates(_0xa31ce6[_0x7f77('0x48')],null))['then'](respondWithResult(_0x230fd0,null))[_0x7f77('0x41')](handleError(_0x230fd0,null));};exports[_0x7f77('0x24')]=function(_0x30d2c9,_0xa4d4d8){return db[_0x7f77('0x3d')][_0x7f77('0x46')]({'where':{'id':_0x30d2c9[_0x7f77('0x43')]['id']}})['then'](handleEntityNotFound(_0xa4d4d8,null))[_0x7f77('0x23')](removeEntity(_0xa4d4d8,null))[_0x7f77('0x41')](handleError(_0xa4d4d8,null));};exports[_0x7f77('0x52')]=function(_0x5462ca,_0x2d49a7){var _0x2ad58b=0xa;var _0x3e4a5e=[_0x7f77('0x53'),'left_join',_0x7f77('0x54'),_0x7f77('0x55')];var _0x1dcaf7={'SUM':'SUM(%s)','COUNT':_0x7f77('0x56'),'COUNT DISTINCT':_0x7f77('0x57'),'MAX':_0x7f77('0x58'),'MIN':_0x7f77('0x59'),'AVG':_0x7f77('0x5a'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x7f77('0x5b'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x49499c={'SEC_TO_TIME':_0x7f77('0x5c'),'DATE':_0x7f77('0x5d'),'HOUR':_0x7f77('0x5e'),'ROUND':_0x7f77('0x5f'),'UNIX_TIMESTAMP':_0x7f77('0x60')};var _0x35eaed=function(_0x5c79cd){return!_['includes']([_0x7f77('0x61'),'IS\x20NOT\x20NULL',_0x7f77('0x62'),_0x7f77('0x63')],_0x5c79cd);};var _0xfc37e8=function(_0x1a234a){if(!_0x1a234a||!_0x1a234a[_0x7f77('0x64')][_0x7f77('0x45')]){return'';}for(var _0x281e5f='(',_0x16a777=0x0;_0x16a777<_0x1a234a[_0x7f77('0x64')][_0x7f77('0x45')];_0x16a777+=0x1){_0x16a777>0x0&&(_0x281e5f+='\x20'+_0x1a234a['operator']+'\x20');_0x281e5f+=_0x1a234a[_0x7f77('0x64')][_0x16a777][_0x7f77('0x65')]?_0xfc37e8(_0x1a234a[_0x7f77('0x64')][_0x16a777][_0x7f77('0x65')]):_0x1a234a[_0x7f77('0x64')][_0x16a777][_0x7f77('0x66')]+'\x20'+_0x1a234a['rules'][_0x16a777][_0x7f77('0x67')]+(_0x35eaed(_0x1a234a[_0x7f77('0x64')][_0x16a777][_0x7f77('0x67')])?'\x20'+_0x1a234a[_0x7f77('0x64')][_0x16a777][_0x7f77('0x68')]:'');}return _0x281e5f+')';};var _0x458905={'where':{'id':_0x5462ca[_0x7f77('0x43')]['id']}},_0x511b5c,_0x420b01,_0x2c3894,_0x43d724,_0x4fc2f2;_0x458905=_[_0x7f77('0x3a')]({},_0x458905,_0x5462ca[_0x7f77('0x3c')]);return db[_0x7f77('0x3d')][_0x7f77('0x46')](_0x458905)[_0x7f77('0x23')](function(_0x19e222){if(_0x19e222){_0x511b5c=_0x19e222;return _0x19e222[_0x7f77('0x69')]();}return null;})[_0x7f77('0x23')](function(_0x2f9e64){if(_0x2f9e64){if(!_0x2f9e64[_0x7f77('0x45')]){throw new db[(_0x7f77('0x6a'))][(_0x7f77('0x6b'))](_0x7f77('0x6c'),0x193);}_0x420b01=_0x2f9e64;return db[_0x7f77('0x6d')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x1d327b){if(_0x1d327b){_0x2c3894=_[_0x7f77('0x6e')](_0x1d327b,'id');var _0xd25feb;var _0x553964=squel[_0x7f77('0x6f')]();_0x553964[_0x7f77('0x70')](_0x511b5c[_0x7f77('0x71')]);for(var _0x55f4d3=0x0;_0x55f4d3<_0x420b01[_0x7f77('0x45')];_0x55f4d3+=0x1){_0xd25feb=_0x420b01[_0x55f4d3][_0x7f77('0x72')]?_0x2c3894[_0x420b01[_0x55f4d3][_0x7f77('0x72')]]['metric']:_0x420b01[_0x55f4d3][_0x7f77('0x66')];_0xd25feb=_0x420b01[_0x55f4d3][_0x7f77('0x73')]?_[_0x7f77('0x74')](_0x1dcaf7[_0x420b01[_0x55f4d3][_0x7f77('0x73')]],'%s',_0xd25feb):_0xd25feb;_0xd25feb=_0x420b01[_0x55f4d3][_0x7f77('0x75')]?_[_0x7f77('0x74')](_0x49499c[_0x420b01[_0x55f4d3][_0x7f77('0x75')]],'%s',_0xd25feb):_0xd25feb;if(_0x420b01[_0x55f4d3][_0x7f77('0x76')]){_0x553964[_0x7f77('0x65')](_0xd25feb);}_0x420b01[_0x55f4d3][_0x7f77('0x77')]&&_0x553964[_0x7f77('0x78')](_0xd25feb,_0x420b01[_0x55f4d3]['orderBy']===_0x7f77('0x79')?![]:!![]);_0x553964[_0x7f77('0x66')](_0xd25feb,_0x420b01[_0x55f4d3][_0x7f77('0x7a')]||_0xd25feb);}if(_0x511b5c[_0x7f77('0x7b')]){_0x511b5c[_0x7f77('0x7b')]=JSON[_0x7f77('0x7c')](_0x511b5c[_0x7f77('0x7b')]);for(var _0x537eff=0x0;_0x537eff<_0x511b5c['joins'][_0x7f77('0x45')];_0x537eff+=0x1){if(_0x511b5c[_0x7f77('0x7b')][_0x537eff]['type']&&_[_0x7f77('0x7d')](_0x3e4a5e,_0x511b5c[_0x7f77('0x7b')][_0x537eff][_0x7f77('0x2c')])&&_0x511b5c['joins'][_0x537eff]['parentKey']&&_0x511b5c[_0x7f77('0x7b')][_0x537eff][_0x7f77('0x7e')]&&_0x511b5c[_0x7f77('0x7b')][_0x537eff][_0x7f77('0x7f')]){_0x553964[_0x511b5c[_0x7f77('0x7b')][_0x537eff][_0x7f77('0x2c')]](_0x511b5c['joins'][_0x537eff][_0x7f77('0x7e')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x511b5c[_0x7f77('0x71')],_0x511b5c[_0x7f77('0x7b')][_0x537eff][_0x7f77('0x80')],_0x511b5c[_0x7f77('0x7b')][_0x537eff]['foreignTable'],_0x511b5c[_0x7f77('0x7b')][_0x537eff][_0x7f77('0x7f')]));}}}if(_0x511b5c[_0x7f77('0x81')]){_0x511b5c[_0x7f77('0x81')]=JSON[_0x7f77('0x7c')](_0x511b5c[_0x7f77('0x81')]);_0x553964[_0x7f77('0x38')](_0xfc37e8(_0x511b5c[_0x7f77('0x81')][_0x7f77('0x65')]));}_0x4fc2f2=_0x553964[_0x7f77('0x82')]();_0x553964[_0x7f77('0x20')](_0x2ad58b);_0x553964[_0x7f77('0x1e')](0x0);logger[_0x7f77('0x83')](_0x7f77('0x84'),_0x553964[_0x7f77('0x85')]());return dbH['sequelize'][_0x7f77('0x30')](_0x553964[_0x7f77('0x85')](),{'type':dbH[_0x7f77('0x86')]['QueryTypes']['SELECT']});}})['then'](respondWithResult(_0x2d49a7,null))[_0x7f77('0x41')](handleError(_0x2d49a7,null));};function runReport(_0x29c8ee,_0x4fd9c1,_0xed5c26){var _0x2dbcbc=_0x4fd9c1['name'];var _0x518488=0xa;var _0x5e8a01=[_0x7f77('0x53'),_0x7f77('0x87'),_0x7f77('0x54'),_0x7f77('0x55')];var _0x27aea6={'SUM':_0x7f77('0x88'),'COUNT':_0x7f77('0x56'),'COUNT DISTINCT':_0x7f77('0x57'),'MAX':_0x7f77('0x58'),'MIN':_0x7f77('0x59'),'AVG':_0x7f77('0x5a'),'GROUP_CONCAT':_0x7f77('0x89'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x2bfd98={'SEC_TO_TIME':_0x7f77('0x5c'),'DATE':_0x7f77('0x5d'),'HOUR':_0x7f77('0x5e'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x7f77('0x60')};var _0x42ccb0=function(_0x30f988){return!_[_0x7f77('0x7d')]([_0x7f77('0x61'),_0x7f77('0x8a'),_0x7f77('0x62'),_0x7f77('0x63')],_0x30f988);};var _0x179607=function(_0x20c952){if(!_0x20c952||!_0x20c952[_0x7f77('0x64')][_0x7f77('0x45')]){return'';}for(var _0x29e63a='(',_0x38535d=0x0;_0x38535d<_0x20c952[_0x7f77('0x64')][_0x7f77('0x45')];_0x38535d+=0x1){_0x38535d>0x0&&(_0x29e63a+='\x20'+_0x20c952[_0x7f77('0x8b')]+'\x20');_0x29e63a+=_0x20c952[_0x7f77('0x64')][_0x38535d][_0x7f77('0x65')]?_0x179607(_0x20c952[_0x7f77('0x64')][_0x38535d][_0x7f77('0x65')]):_0x20c952[_0x7f77('0x64')][_0x38535d][_0x7f77('0x66')]+'\x20'+_0x20c952[_0x7f77('0x64')][_0x38535d][_0x7f77('0x67')]+(_0x42ccb0(_0x20c952[_0x7f77('0x64')][_0x38535d][_0x7f77('0x67')])?'\x20'+_0x20c952['rules'][_0x38535d][_0x7f77('0x68')]:'');}return _0x29e63a+')';};var _0x320d4b={'where':{'id':_0x29c8ee['id']}},_0x1c9d92,_0x28fa4c,_0x20b49e,_0x20847d,_0x362d16;_0x320d4b=_[_0x7f77('0x3a')]({},_0x320d4b,_0xed5c26);return db[_0x7f77('0x3d')][_0x7f77('0x46')](_0x320d4b)[_0x7f77('0x23')](function(_0x3640d0){if(_0x3640d0){_0x1c9d92=_0x3640d0;return _0x3640d0[_0x7f77('0x69')]();}return null;})['then'](function(_0x4411fe){if(_0x4411fe){if(!_0x4411fe[_0x7f77('0x45')]){throw new db[(_0x7f77('0x6a'))][(_0x7f77('0x6b'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x28fa4c=_0x4411fe;return db[_0x7f77('0x6d')][_0x7f77('0x8c')]({'raw':!![]});}return null;})[_0x7f77('0x23')](function(_0x530316){if(_0x530316){_0x20b49e=_[_0x7f77('0x6e')](_0x530316,'id');var _0x5773c5;var _0x5c58cb=squel[_0x7f77('0x6f')]();_0x5c58cb[_0x7f77('0x70')](_0x1c9d92[_0x7f77('0x71')]);for(var _0x41c78c=0x0;_0x41c78c<_0x28fa4c['length'];_0x41c78c+=0x1){_0x5773c5=_0x28fa4c[_0x41c78c][_0x7f77('0x72')]?_0x20b49e[_0x28fa4c[_0x41c78c]['MetricId']][_0x7f77('0x8d')]:_0x28fa4c[_0x41c78c]['field'];_0x5773c5=_0x28fa4c[_0x41c78c][_0x7f77('0x73')]?_[_0x7f77('0x74')](_0x27aea6[_0x28fa4c[_0x41c78c]['function']],'%s',_0x5773c5):_0x5773c5;_0x5773c5=_0x28fa4c[_0x41c78c][_0x7f77('0x75')]?_[_0x7f77('0x74')](_0x2bfd98[_0x28fa4c[_0x41c78c][_0x7f77('0x75')]],'%s',_0x5773c5):_0x5773c5;if(_0x28fa4c[_0x41c78c]['groupBy']){_0x5c58cb[_0x7f77('0x65')](_0x5773c5);}_0x28fa4c[_0x41c78c]['orderBy']&&_0x5c58cb['order'](_0x5773c5,_0x28fa4c[_0x41c78c][_0x7f77('0x77')]==='DESC'?![]:!![]);_0x5c58cb[_0x7f77('0x66')](_0x5773c5,_0x28fa4c[_0x41c78c][_0x7f77('0x7a')]||_0x5773c5);}if(_0x1c9d92[_0x7f77('0x7b')]){_0x1c9d92['joins']=JSON['parse'](_0x1c9d92[_0x7f77('0x7b')]);for(var _0x527cea=0x0;_0x527cea<_0x1c9d92[_0x7f77('0x7b')][_0x7f77('0x45')];_0x527cea+=0x1){if(_0x1c9d92['joins'][_0x527cea][_0x7f77('0x2c')]&&_[_0x7f77('0x7d')](_0x5e8a01,_0x1c9d92[_0x7f77('0x7b')][_0x527cea][_0x7f77('0x2c')])&&_0x1c9d92[_0x7f77('0x7b')][_0x527cea][_0x7f77('0x80')]&&_0x1c9d92[_0x7f77('0x7b')][_0x527cea][_0x7f77('0x7e')]&&_0x1c9d92['joins'][_0x527cea][_0x7f77('0x7f')]){_0x5c58cb[_0x1c9d92[_0x7f77('0x7b')][_0x527cea]['type']](_0x1c9d92[_0x7f77('0x7b')][_0x527cea]['foreignTable'],null,util[_0x7f77('0x75')](_0x7f77('0x8e'),_0x1c9d92[_0x7f77('0x71')],_0x1c9d92[_0x7f77('0x7b')][_0x527cea]['parentKey'],_0x1c9d92['joins'][_0x527cea][_0x7f77('0x7e')],_0x1c9d92[_0x7f77('0x7b')][_0x527cea][_0x7f77('0x7f')]));}}}if(_0x1c9d92[_0x7f77('0x81')]){_0x1c9d92[_0x7f77('0x81')]=JSON[_0x7f77('0x7c')](_0x1c9d92[_0x7f77('0x81')]);_0x5c58cb['where'](_0x179607(_0x1c9d92[_0x7f77('0x81')][_0x7f77('0x65')]));}_0x362d16=_0x5c58cb['clone']();_0x5c58cb['limit'](_0x518488);_0x5c58cb[_0x7f77('0x1e')](0x0);return;}})['then'](function(){if(_0x4fd9c1['output']===_0x7f77('0x8f')){return null;}var _0x2ea72b=_[_0x7f77('0x3a')](_0x4fd9c1,{'name':_0x4fd9c1[_0x7f77('0x90')]||_0x4fd9c1[_0x7f77('0x29')]||_0x1c9d92['name'],'basename':_0x2dbcbc,'savename':util[_0x7f77('0x75')](_0x7f77('0x91'),_0x4fd9c1[_0x7f77('0x29')]||_0x1c9d92[_0x7f77('0x29')],require(_0x7f77('0x92'))[_0x7f77('0x93')](0x4),_0x4fd9c1['output']||_0x7f77('0x94')),'reportId':_0x1c9d92['id'],'reportType':'custom'});return db['AnalyticExtractedReport'][_0x7f77('0x47')](_0x2ea72b,{'raw':!![]});})[_0x7f77('0x23')](function(_0x233794){if(_0x1c9d92[_0x7f77('0x71')]===_0x7f77('0x95')){_0x362d16['where'](_0x1c9d92['table']+_0x7f77('0x96'),_0x4fd9c1['startDate'],_0x4fd9c1['endDate']);}else{_0x362d16[_0x7f77('0x38')](_0x1c9d92[_0x7f77('0x71')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x4fd9c1[_0x7f77('0x97')],_0x4fd9c1[_0x7f77('0x98')]);}if(_0x233794){logger[_0x7f77('0x99')](_0x7f77('0x9a'),_0x362d16[_0x7f77('0x85')]());require(_0x7f77('0x9b'))[_0x7f77('0x9c')](path[_0x7f77('0x53')](__dirname,_0x7f77('0x9d'),_0x233794[_0x7f77('0x9e')]),[_0x233794['id'],_0x362d16[_0x7f77('0x85')](),path[_0x7f77('0x53')](__dirname,_0x7f77('0x9f'),_0x233794[_0x7f77('0xa0')]),_0x2dbcbc]);return _0x233794;}else{var _0xe8a5bb=squel[_0x7f77('0x6f')]();_0xe8a5bb['from']('('+_0x362d16[_0x7f77('0x85')]()+')',_0x7f77('0xa1'));_0xe8a5bb['field'](_0x7f77('0xa2'),_0x7f77('0x21'));_0x362d16[_0x7f77('0x20')](_0x4fd9c1[_0x7f77('0x20')]||_0x518488);_0x362d16[_0x7f77('0x1e')](_0x4fd9c1[_0x7f77('0x1e')]||0x0);return dbH['sequelize']['query'](_0xe8a5bb[_0x7f77('0x85')](),{'type':dbH[_0x7f77('0x86')][_0x7f77('0xa3')][_0x7f77('0xa4')]})[_0x7f77('0x23')](function(_0x549d2f){if(!_0x549d2f[_0x7f77('0x45')]){_0x20847d=0x0;}else{_0x20847d=_0x549d2f[0x0]['count']||0x0;}return dbH['sequelize']['query'](_0x362d16[_0x7f77('0x85')](),{'type':dbH[_0x7f77('0x86')][_0x7f77('0xa3')][_0x7f77('0xa4')]});})[_0x7f77('0x23')](function(_0x2102c8){return{'rows':_0x2102c8||[],'count':_0x20847d};});}});}exports[_0x7f77('0xa5')]=function(_0x3d121a,_0x9c4f60){return runReport(_0x3d121a['params'],_0x3d121a[_0x7f77('0x30')],_0x3d121a[_0x7f77('0x3c')])['then'](respondWithResult(_0x9c4f60,null))[_0x7f77('0x41')](handleError(_0x9c4f60,null));};exports[_0x7f77('0xa6')]=runReport;exports['query']=function(_0x250182,_0x44a44a){var _0x19d184=0xa;var _0x4ab224=['join','left_join','right_join',_0x7f77('0x55')];var _0x55a505={'SUM':'SUM(%s)','COUNT':_0x7f77('0x56'),'COUNT DISTINCT':_0x7f77('0x57'),'MAX':'MAX(%s)','MIN':_0x7f77('0x59'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x7f77('0x89'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x7f77('0xa7')};var _0x2e8b9e={'SEC_TO_TIME':_0x7f77('0x5c'),'DATE':_0x7f77('0x5d'),'HOUR':_0x7f77('0x5e'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x133d1b=function(_0x2138a8){return!_[_0x7f77('0x7d')]([_0x7f77('0x61'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x7f77('0x63')],_0x2138a8);};var _0x4cf8a4=function(_0x6d25b7){if(!_0x6d25b7||!_0x6d25b7[_0x7f77('0x64')]['length']){return'';}for(var _0x9ed789='(',_0x2b3669=0x0;_0x2b3669<_0x6d25b7[_0x7f77('0x64')][_0x7f77('0x45')];_0x2b3669+=0x1){_0x2b3669>0x0&&(_0x9ed789+='\x20'+_0x6d25b7[_0x7f77('0x8b')]+'\x20');_0x9ed789+=_0x6d25b7[_0x7f77('0x64')][_0x2b3669][_0x7f77('0x65')]?_0x4cf8a4(_0x6d25b7[_0x7f77('0x64')][_0x2b3669]['group']):_0x6d25b7[_0x7f77('0x64')][_0x2b3669][_0x7f77('0x66')]+'\x20'+_0x6d25b7[_0x7f77('0x64')][_0x2b3669]['condition']+(_0x133d1b(_0x6d25b7[_0x7f77('0x64')][_0x2b3669][_0x7f77('0x67')])?'\x20'+_0x6d25b7[_0x7f77('0x64')][_0x2b3669][_0x7f77('0x68')]:'');}return _0x9ed789+')';};var _0x27882b={'where':{'id':_0x250182[_0x7f77('0x43')]['id']}},_0x506b2b,_0x4b0293,_0x57f54a,_0x361c14,_0x1d2bc7;_0x27882b=_[_0x7f77('0x3a')]({},_0x27882b,_0x250182['options']);return db['AnalyticCustomReport'][_0x7f77('0x46')](_0x27882b)['then'](function(_0x57ed43){if(_0x57ed43){_0x506b2b=_0x57ed43;return _0x57ed43[_0x7f77('0x69')]();}return null;})[_0x7f77('0x23')](function(_0xa3f91e){if(_0xa3f91e){if(!_0xa3f91e['length']){throw new db['Sequelize'][(_0x7f77('0x6b'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x4b0293=_0xa3f91e;return db[_0x7f77('0x6d')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x4f3faa){if(_0x4f3faa){_0x57f54a=_[_0x7f77('0x6e')](_0x4f3faa,'id');var _0x30b47c;var _0x5b5437=squel['select']();_0x5b5437[_0x7f77('0x70')](_0x506b2b[_0x7f77('0x71')]);for(var _0x3f238d=0x0;_0x3f238d<_0x4b0293['length'];_0x3f238d+=0x1){_0x30b47c=_0x4b0293[_0x3f238d][_0x7f77('0x72')]?_0x57f54a[_0x4b0293[_0x3f238d]['MetricId']][_0x7f77('0x8d')]:_0x4b0293[_0x3f238d]['field'];_0x30b47c=_0x4b0293[_0x3f238d][_0x7f77('0x73')]?_[_0x7f77('0x74')](_0x55a505[_0x4b0293[_0x3f238d][_0x7f77('0x73')]],'%s',_0x30b47c):_0x30b47c;_0x30b47c=_0x4b0293[_0x3f238d][_0x7f77('0x75')]?_[_0x7f77('0x74')](_0x2e8b9e[_0x4b0293[_0x3f238d][_0x7f77('0x75')]],'%s',_0x30b47c):_0x30b47c;if(_0x4b0293[_0x3f238d][_0x7f77('0x76')]){_0x5b5437['group'](_0x30b47c);}_0x4b0293[_0x3f238d][_0x7f77('0x77')]&&_0x5b5437[_0x7f77('0x78')](_0x30b47c,_0x4b0293[_0x3f238d]['orderBy']===_0x7f77('0x79')?![]:!![]);_0x5b5437[_0x7f77('0x66')](_0x30b47c,_0x4b0293[_0x3f238d][_0x7f77('0x7a')]||_0x30b47c);}if(_0x506b2b[_0x7f77('0x7b')]){_0x506b2b[_0x7f77('0x7b')]=JSON['parse'](_0x506b2b[_0x7f77('0x7b')]);for(var _0x308a17=0x0;_0x308a17<_0x506b2b[_0x7f77('0x7b')]['length'];_0x308a17+=0x1){if(_0x506b2b[_0x7f77('0x7b')][_0x308a17][_0x7f77('0x2c')]&&_[_0x7f77('0x7d')](_0x4ab224,_0x506b2b[_0x7f77('0x7b')][_0x308a17][_0x7f77('0x2c')])&&_0x506b2b[_0x7f77('0x7b')][_0x308a17]['parentKey']&&_0x506b2b[_0x7f77('0x7b')][_0x308a17][_0x7f77('0x7e')]&&_0x506b2b[_0x7f77('0x7b')][_0x308a17][_0x7f77('0x7f')]){_0x5b5437[_0x506b2b[_0x7f77('0x7b')][_0x308a17][_0x7f77('0x2c')]](_0x506b2b[_0x7f77('0x7b')][_0x308a17][_0x7f77('0x7e')],null,util['format'](_0x7f77('0x8e'),_0x506b2b[_0x7f77('0x71')],_0x506b2b[_0x7f77('0x7b')][_0x308a17]['parentKey'],_0x506b2b[_0x7f77('0x7b')][_0x308a17][_0x7f77('0x7e')],_0x506b2b['joins'][_0x308a17][_0x7f77('0x7f')]));}}}if(_0x506b2b[_0x7f77('0x81')]){_0x506b2b[_0x7f77('0x81')]=JSON[_0x7f77('0x7c')](_0x506b2b[_0x7f77('0x81')]);_0x5b5437[_0x7f77('0x38')](_0x4cf8a4(_0x506b2b[_0x7f77('0x81')][_0x7f77('0x65')]));}_0x1d2bc7=_0x5b5437[_0x7f77('0x82')]();_0x5b5437[_0x7f77('0x20')](_0x19d184);_0x5b5437[_0x7f77('0x1e')](0x0);logger[_0x7f77('0x83')]('Limited\x20Query:',_0x5b5437[_0x7f77('0x85')]());return dbH[_0x7f77('0x86')]['query'](_0x5b5437[_0x7f77('0x85')](),{'type':dbH[_0x7f77('0x86')][_0x7f77('0xa3')][_0x7f77('0xa4')]});}})[_0x7f77('0x23')](function(){return{'sql':_0x1d2bc7['toString']()};})[_0x7f77('0x23')](respondWithResult(_0x44a44a,null))[_0x7f77('0x41')](handleError(_0x44a44a,null));};
\ No newline at end of file
+var _0x8a8c=['UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','table','MetricId','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','includes','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','clone','Limited\x20Query:','toString','sequelize','QueryTypes','left_join','MIN(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','HOUR(%s)','value','Sequelize','from','metric','parentKey','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','child_process','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','SELECT','run','runReport','GROUP_CONCAT(%s)','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','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','dbH','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','then','get','UserProfileResource','destroy','end','error','name','send','index','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','order','sort','where','VIRTUAL','filter','merge','AnalyticCustomReport','includeAll','include','rows','catch','show','params','rawAttributes','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','UserProfileSection','userProfileId','autoAssociation','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','ROUND(%s)'];(function(_0x4d768f,_0x2cec25){var _0x144fed=function(_0x109d60){while(--_0x109d60){_0x4d768f['push'](_0x4d768f['shift']());}};_0x144fed(++_0x2cec25);}(_0x8a8c,0x1a0));var _0xc8a8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8a8c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc8a8('0x0'));var rimraf=require(_0xc8a8('0x1'));var zipdir=require(_0xc8a8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc8a8('0x3'));var BPromise=require(_0xc8a8('0x4'));var Mustache=require(_0xc8a8('0x5'));var util=require('util');var path=require(_0xc8a8('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc8a8('0x7'));var fs=require('fs');var fs_extra=require(_0xc8a8('0x8'));var _=require(_0xc8a8('0x9'));var squel=require(_0xc8a8('0xa'));var crypto=require(_0xc8a8('0xb'));var jsforce=require(_0xc8a8('0xc'));var deskjs=require(_0xc8a8('0xd'));var toCsv=require(_0xc8a8('0xe'));var querystring=require(_0xc8a8('0xf'));var Papa=require(_0xc8a8('0x10'));var Redis=require(_0xc8a8('0x11'));var authService=require(_0xc8a8('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc8a8('0x13'));var hardwareService=require(_0xc8a8('0x14'));var logger=require(_0xc8a8('0x15'))(_0xc8a8('0x16'));var utils=require(_0xc8a8('0x17'));var config=require(_0xc8a8('0x18'));var licenseUtil=require(_0xc8a8('0x19'));var db=require('../../mysqldb')['db'];var dbH=require(_0xc8a8('0x1a'))[_0xc8a8('0x1b')];function respondWithStatusCode(_0x492810,_0x22cecc){_0x22cecc=_0x22cecc||0xcc;return function(_0x4bb46e){if(_0x4bb46e){return _0x492810[_0xc8a8('0x1c')](_0x22cecc);}return _0x492810[_0xc8a8('0x1d')](_0x22cecc)['end']();};}function respondWithResult(_0x10a60f,_0x484375){_0x484375=_0x484375||0xc8;return function(_0x51bd39){if(_0x51bd39){return _0x10a60f['status'](_0x484375)[_0xc8a8('0x1e')](_0x51bd39);}};}function respondWithFilteredResult(_0x33a450,_0x2b5e3a){return function(_0x2bdd56){if(_0x2bdd56){var _0x46e183=typeof _0x2b5e3a[_0xc8a8('0x1f')]===_0xc8a8('0x20')&&typeof _0x2b5e3a['limit']===_0xc8a8('0x20');var _0x11e55e=_0x2bdd56[_0xc8a8('0x21')];var _0xdfbf84=_0x46e183?0x0:_0x2b5e3a[_0xc8a8('0x1f')];var _0x56b00f=_0x46e183?_0x2bdd56[_0xc8a8('0x21')]:_0x2b5e3a['offset']+_0x2b5e3a[_0xc8a8('0x22')];var _0x5f52d7;if(_0x56b00f>=_0x11e55e){_0x56b00f=_0x11e55e;_0x5f52d7=0xc8;}else{_0x5f52d7=0xce;}_0x33a450[_0xc8a8('0x1d')](_0x5f52d7);return _0x33a450['set'](_0xc8a8('0x23'),_0xdfbf84+'-'+_0x56b00f+'/'+_0x11e55e)[_0xc8a8('0x1e')](_0x2bdd56);}return null;};}function patchUpdates(_0x10c23e){return function(_0x26f2f4){try{jsonpatch[_0xc8a8('0x24')](_0x26f2f4,_0x10c23e,!![]);}catch(_0x52d7b0){return BPromise['reject'](_0x52d7b0);}return _0x26f2f4['save']();};}function saveUpdates(_0x1cd034,_0x52f659){return function(_0x47df7e){if(_0x47df7e){return _0x47df7e['update'](_0x1cd034)[_0xc8a8('0x25')](function(_0x343f07){return _0x343f07;});}return null;};}function removeEntity(_0x329b9e,_0x3c596e){return function(_0x3e8d7d){if(_0x3e8d7d){return _0x3e8d7d['destroy']()['then'](function(){var _0x5cd87c=_0x3e8d7d[_0xc8a8('0x26')]({'plain':!![]});var _0x150e27='CustomReports';return db[_0xc8a8('0x27')][_0xc8a8('0x28')]({'where':{'type':_0x150e27,'resourceId':_0x5cd87c['id']}})[_0xc8a8('0x25')](function(){return _0x3e8d7d;});})['then'](function(){_0x329b9e[_0xc8a8('0x1d')](0xcc)[_0xc8a8('0x29')]();});}};}function handleEntityNotFound(_0xca7114,_0x396840){return function(_0x3842cc){if(!_0x3842cc){_0xca7114['sendStatus'](0x194);}return _0x3842cc;};}function handleError(_0x5a76f7,_0x37016a){_0x37016a=_0x37016a||0x1f4;return function(_0x588ce1){logger[_0xc8a8('0x2a')](_0x588ce1['stack']);if(_0x588ce1['name']){delete _0x588ce1[_0xc8a8('0x2b')];}_0x5a76f7['status'](_0x37016a)[_0xc8a8('0x2c')](_0x588ce1);};}exports[_0xc8a8('0x2d')]=function(_0x44baa7,_0x3265ef){var _0x59a95f={},_0xbf053a={},_0x101084={'count':0x0,'rows':[]};var _0x4b99af=_['map'](db['AnalyticCustomReport']['rawAttributes'],function(_0x30229f){return{'name':_0x30229f[_0xc8a8('0x2e')],'type':_0x30229f[_0xc8a8('0x2f')][_0xc8a8('0x30')]};});_0xbf053a[_0xc8a8('0x31')]=_[_0xc8a8('0x32')](_0x4b99af,_0xc8a8('0x2b'));_0xbf053a[_0xc8a8('0x33')]=_[_0xc8a8('0x34')](_0x44baa7[_0xc8a8('0x33')]);_0xbf053a[_0xc8a8('0x35')]=_[_0xc8a8('0x36')](_0xbf053a[_0xc8a8('0x31')],_0xbf053a[_0xc8a8('0x33')]);_0x59a95f['attributes']=_[_0xc8a8('0x36')](_0xbf053a['model'],qs[_0xc8a8('0x37')](_0x44baa7[_0xc8a8('0x33')][_0xc8a8('0x37')]));_0x59a95f[_0xc8a8('0x38')]=_0x59a95f[_0xc8a8('0x38')][_0xc8a8('0x39')]?_0x59a95f[_0xc8a8('0x38')]:_0xbf053a['model'];if(!_0x44baa7[_0xc8a8('0x33')]['hasOwnProperty']('nolimit')){_0x59a95f[_0xc8a8('0x22')]=qs[_0xc8a8('0x22')](_0x44baa7[_0xc8a8('0x33')][_0xc8a8('0x22')]);_0x59a95f[_0xc8a8('0x1f')]=qs['offset'](_0x44baa7['query']['offset']);}_0x59a95f[_0xc8a8('0x3a')]=qs[_0xc8a8('0x3b')](_0x44baa7[_0xc8a8('0x33')][_0xc8a8('0x3b')]);_0x59a95f[_0xc8a8('0x3c')]=qs[_0xc8a8('0x35')](_['pick'](_0x44baa7[_0xc8a8('0x33')],_0xbf053a[_0xc8a8('0x35')]),_0x4b99af);if(_0x44baa7[_0xc8a8('0x33')]['filter']){_0x59a95f['where']=_['merge'](_0x59a95f[_0xc8a8('0x3c')],{'$or':_['map'](_0x4b99af,function(_0x1387d7){if(_0x1387d7['type']!==_0xc8a8('0x3d')){var _0x315065={};_0x315065[_0x1387d7[_0xc8a8('0x2b')]]={'$like':'%'+_0x44baa7[_0xc8a8('0x33')][_0xc8a8('0x3e')]+'%'};return _0x315065;}})});}_0x59a95f=_[_0xc8a8('0x3f')]({},_0x59a95f,_0x44baa7['options']);var _0x2784a3={'where':_0x59a95f[_0xc8a8('0x3c')]};return db[_0xc8a8('0x40')]['count'](_0x2784a3)[_0xc8a8('0x25')](function(_0x1fb0de){_0x101084['count']=_0x1fb0de;if(_0x44baa7[_0xc8a8('0x33')][_0xc8a8('0x41')]){_0x59a95f[_0xc8a8('0x42')]=[{'all':!![]}];}return db[_0xc8a8('0x40')]['findAll'](_0x59a95f);})[_0xc8a8('0x25')](function(_0x3b7adb){_0x101084[_0xc8a8('0x43')]=_0x3b7adb;return _0x101084;})[_0xc8a8('0x25')](respondWithFilteredResult(_0x3265ef,_0x59a95f))[_0xc8a8('0x44')](handleError(_0x3265ef,null));};exports[_0xc8a8('0x45')]=function(_0x5c0844,_0x353ed3){var _0x4b0f65={'raw':![],'where':{'id':_0x5c0844[_0xc8a8('0x46')]['id']}},_0x2efbe8={};_0x2efbe8[_0xc8a8('0x31')]=_[_0xc8a8('0x34')](db[_0xc8a8('0x40')][_0xc8a8('0x47')]);_0x2efbe8[_0xc8a8('0x33')]=_['keys'](_0x5c0844[_0xc8a8('0x33')]);_0x2efbe8['filters']=_[_0xc8a8('0x36')](_0x2efbe8[_0xc8a8('0x31')],_0x2efbe8[_0xc8a8('0x33')]);_0x4b0f65[_0xc8a8('0x38')]=_['intersection'](_0x2efbe8[_0xc8a8('0x31')],qs[_0xc8a8('0x37')](_0x5c0844[_0xc8a8('0x33')][_0xc8a8('0x37')]));_0x4b0f65[_0xc8a8('0x38')]=_0x4b0f65[_0xc8a8('0x38')][_0xc8a8('0x39')]?_0x4b0f65[_0xc8a8('0x38')]:_0x2efbe8[_0xc8a8('0x31')];if(_0x5c0844['query'][_0xc8a8('0x41')]){_0x4b0f65[_0xc8a8('0x42')]=[{'all':!![]}];}_0x4b0f65=_['merge']({},_0x4b0f65,_0x5c0844[_0xc8a8('0x48')]);return db[_0xc8a8('0x40')][_0xc8a8('0x49')](_0x4b0f65)[_0xc8a8('0x25')](handleEntityNotFound(_0x353ed3,null))[_0xc8a8('0x25')](respondWithResult(_0x353ed3,null))[_0xc8a8('0x44')](handleError(_0x353ed3,null));};exports[_0xc8a8('0x4a')]=function(_0x35b1dc,_0x5ef597){return db[_0xc8a8('0x40')][_0xc8a8('0x4a')](_0x35b1dc['body'],{})[_0xc8a8('0x25')](function(_0xf6198e){var _0x10aaed=_0x35b1dc['user'][_0xc8a8('0x26')]({'plain':!![]});if(!_0x10aaed)throw new Error(_0xc8a8('0x4b'));if(_0x10aaed[_0xc8a8('0x4c')]===_0xc8a8('0x4d')){var _0x1b5a19=_0xf6198e[_0xc8a8('0x26')]({'plain':!![]});var _0x1c03cd=_0xc8a8('0x4e');return db[_0xc8a8('0x4f')][_0xc8a8('0x49')]({'where':{'name':_0x1c03cd,'userProfileId':_0x10aaed[_0xc8a8('0x50')]},'raw':!![]})[_0xc8a8('0x25')](function(_0x4dfd10){if(_0x4dfd10&&_0x4dfd10[_0xc8a8('0x51')]===0x0){return db[_0xc8a8('0x27')]['create']({'name':_0x1b5a19[_0xc8a8('0x2b')],'resourceId':_0x1b5a19['id'],'type':_0xc8a8('0x52'),'sectionId':_0x4dfd10['id']},{})[_0xc8a8('0x25')](function(){return _0xf6198e;});}else{return _0xf6198e;}})['catch'](function(_0x117117){logger['error'](_0xc8a8('0x53'),_0x117117);throw _0x117117;});}return _0xf6198e;})['then'](respondWithResult(_0x5ef597,0xc9))['catch'](handleError(_0x5ef597,null));};exports[_0xc8a8('0x54')]=function(_0x22716c,_0x37e0d9){if(_0x22716c['body']['id']){delete _0x22716c['body']['id'];}return db['AnalyticCustomReport'][_0xc8a8('0x49')]({'where':{'id':_0x22716c[_0xc8a8('0x46')]['id']}})[_0xc8a8('0x25')](handleEntityNotFound(_0x37e0d9,null))[_0xc8a8('0x25')](saveUpdates(_0x22716c[_0xc8a8('0x55')],null))[_0xc8a8('0x25')](respondWithResult(_0x37e0d9,null))[_0xc8a8('0x44')](handleError(_0x37e0d9,null));};exports[_0xc8a8('0x28')]=function(_0x5b93e1,_0x5dba6a){return db[_0xc8a8('0x40')][_0xc8a8('0x49')]({'where':{'id':_0x5b93e1['params']['id']}})[_0xc8a8('0x25')](handleEntityNotFound(_0x5dba6a,null))['then'](removeEntity(_0x5dba6a,null))[_0xc8a8('0x44')](handleError(_0x5dba6a,null));};exports['preview']=function(_0xff18b4,_0x1f91f0){var _0x31bc22=0xa;var _0x536129=[_0xc8a8('0x56'),'left_join',_0xc8a8('0x57'),_0xc8a8('0x58')];var _0x359957={'SUM':_0xc8a8('0x59'),'COUNT':_0xc8a8('0x5a'),'COUNT DISTINCT':_0xc8a8('0x5b'),'MAX':_0xc8a8('0x5c'),'MIN':'MIN(%s)','AVG':_0xc8a8('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xc8a8('0x5e')};var _0x5081f6={'SEC_TO_TIME':_0xc8a8('0x5f'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xc8a8('0x60'),'UNIX_TIMESTAMP':_0xc8a8('0x61')};var _0x9ff3c1=function(_0x17d1c6){return!_['includes']([_0xc8a8('0x62'),_0xc8a8('0x63'),_0xc8a8('0x64'),_0xc8a8('0x65')],_0x17d1c6);};var _0x4f0b88=function(_0x280f23){if(!_0x280f23||!_0x280f23[_0xc8a8('0x66')][_0xc8a8('0x39')]){return'';}for(var _0x20bea2='(',_0xf34188=0x0;_0xf34188<_0x280f23[_0xc8a8('0x66')][_0xc8a8('0x39')];_0xf34188+=0x1){_0xf34188>0x0&&(_0x20bea2+='\x20'+_0x280f23[_0xc8a8('0x67')]+'\x20');_0x20bea2+=_0x280f23[_0xc8a8('0x66')][_0xf34188][_0xc8a8('0x68')]?_0x4f0b88(_0x280f23['rules'][_0xf34188][_0xc8a8('0x68')]):_0x280f23[_0xc8a8('0x66')][_0xf34188][_0xc8a8('0x69')]+'\x20'+_0x280f23[_0xc8a8('0x66')][_0xf34188]['condition']+(_0x9ff3c1(_0x280f23[_0xc8a8('0x66')][_0xf34188][_0xc8a8('0x6a')])?'\x20'+_0x280f23[_0xc8a8('0x66')][_0xf34188]['value']:'');}return _0x20bea2+')';};var _0x2583ba={'where':{'id':_0xff18b4['params']['id']}},_0x9f3ebe,_0x5b68cf,_0x33dcb7,_0x2bbe9c,_0x47de5b;_0x2583ba=_[_0xc8a8('0x3f')]({},_0x2583ba,_0xff18b4[_0xc8a8('0x48')]);return db[_0xc8a8('0x40')][_0xc8a8('0x49')](_0x2583ba)[_0xc8a8('0x25')](function(_0x66d3d4){if(_0x66d3d4){_0x9f3ebe=_0x66d3d4;return _0x66d3d4[_0xc8a8('0x6b')]();}return null;})[_0xc8a8('0x25')](function(_0x6807d9){if(_0x6807d9){if(!_0x6807d9[_0xc8a8('0x39')]){throw new db['Sequelize'][(_0xc8a8('0x6c'))](_0xc8a8('0x6d'),0x193);}_0x5b68cf=_0x6807d9;return db[_0xc8a8('0x6e')][_0xc8a8('0x6f')]({'raw':!![]});}return null;})[_0xc8a8('0x25')](function(_0x4a976a){if(_0x4a976a){_0x33dcb7=_[_0xc8a8('0x70')](_0x4a976a,'id');var _0x242f8f;var _0x456a83=squel[_0xc8a8('0x71')]();_0x456a83['from'](_0x9f3ebe[_0xc8a8('0x72')]);for(var _0x5f5a2b=0x0;_0x5f5a2b<_0x5b68cf[_0xc8a8('0x39')];_0x5f5a2b+=0x1){_0x242f8f=_0x5b68cf[_0x5f5a2b][_0xc8a8('0x73')]?_0x33dcb7[_0x5b68cf[_0x5f5a2b]['MetricId']]['metric']:_0x5b68cf[_0x5f5a2b][_0xc8a8('0x69')];_0x242f8f=_0x5b68cf[_0x5f5a2b][_0xc8a8('0x74')]?_[_0xc8a8('0x75')](_0x359957[_0x5b68cf[_0x5f5a2b][_0xc8a8('0x74')]],'%s',_0x242f8f):_0x242f8f;_0x242f8f=_0x5b68cf[_0x5f5a2b][_0xc8a8('0x76')]?_[_0xc8a8('0x75')](_0x5081f6[_0x5b68cf[_0x5f5a2b][_0xc8a8('0x76')]],'%s',_0x242f8f):_0x242f8f;if(_0x5b68cf[_0x5f5a2b][_0xc8a8('0x77')]){_0x456a83[_0xc8a8('0x68')](_0x242f8f);}_0x5b68cf[_0x5f5a2b][_0xc8a8('0x78')]&&_0x456a83['order'](_0x242f8f,_0x5b68cf[_0x5f5a2b][_0xc8a8('0x78')]===_0xc8a8('0x79')?![]:!![]);_0x456a83[_0xc8a8('0x69')](_0x242f8f,_0x5b68cf[_0x5f5a2b][_0xc8a8('0x7a')]||_0x242f8f);}if(_0x9f3ebe[_0xc8a8('0x7b')]){_0x9f3ebe[_0xc8a8('0x7b')]=JSON[_0xc8a8('0x7c')](_0x9f3ebe[_0xc8a8('0x7b')]);for(var _0x52390b=0x0;_0x52390b<_0x9f3ebe[_0xc8a8('0x7b')][_0xc8a8('0x39')];_0x52390b+=0x1){if(_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b][_0xc8a8('0x2f')]&&_[_0xc8a8('0x7d')](_0x536129,_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b][_0xc8a8('0x2f')])&&_0x9f3ebe['joins'][_0x52390b]['parentKey']&&_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b]['foreignTable']&&_0x9f3ebe['joins'][_0x52390b][_0xc8a8('0x7e')]){_0x456a83[_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b]['type']](_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b][_0xc8a8('0x7f')],null,util['format'](_0xc8a8('0x80'),_0x9f3ebe[_0xc8a8('0x72')],_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b]['parentKey'],_0x9f3ebe['joins'][_0x52390b][_0xc8a8('0x7f')],_0x9f3ebe[_0xc8a8('0x7b')][_0x52390b]['foreignKey']));}}}if(_0x9f3ebe[_0xc8a8('0x81')]){_0x9f3ebe[_0xc8a8('0x81')]=JSON[_0xc8a8('0x7c')](_0x9f3ebe[_0xc8a8('0x81')]);_0x456a83['where'](_0x4f0b88(_0x9f3ebe[_0xc8a8('0x81')][_0xc8a8('0x68')]));}_0x47de5b=_0x456a83[_0xc8a8('0x82')]();_0x456a83['limit'](_0x31bc22);_0x456a83[_0xc8a8('0x1f')](0x0);logger['debug'](_0xc8a8('0x83'),_0x456a83[_0xc8a8('0x84')]());return dbH[_0xc8a8('0x85')]['query'](_0x456a83[_0xc8a8('0x84')](),{'type':dbH[_0xc8a8('0x85')][_0xc8a8('0x86')]['SELECT']});}})[_0xc8a8('0x25')](respondWithResult(_0x1f91f0,null))['catch'](handleError(_0x1f91f0,null));};function runReport(_0x43b5ac,_0x3600c0,_0x5d2b06){var _0x4613d1=_0x3600c0[_0xc8a8('0x2b')];var _0x59ccae=0xa;var _0x17adde=[_0xc8a8('0x56'),_0xc8a8('0x87'),_0xc8a8('0x57'),'cross_join'];var _0x202cc4={'SUM':_0xc8a8('0x59'),'COUNT':_0xc8a8('0x5a'),'COUNT DISTINCT':_0xc8a8('0x5b'),'MAX':_0xc8a8('0x5c'),'MIN':_0xc8a8('0x88'),'AVG':_0xc8a8('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc8a8('0x89'),'GROUP_CONCAT DESC':_0xc8a8('0x5e')};var _0x24d1f1={'SEC_TO_TIME':_0xc8a8('0x5f'),'DATE':_0xc8a8('0x8a'),'HOUR':_0xc8a8('0x8b'),'ROUND':_0xc8a8('0x60'),'UNIX_TIMESTAMP':_0xc8a8('0x61')};var _0x1ce0e5=function(_0x45296e){return!_['includes'](['IS\x20NULL',_0xc8a8('0x63'),_0xc8a8('0x64'),_0xc8a8('0x65')],_0x45296e);};var _0x3e2a4a=function(_0x3e4b8d){if(!_0x3e4b8d||!_0x3e4b8d['rules'][_0xc8a8('0x39')]){return'';}for(var _0x3e9d51='(',_0xd05ca9=0x0;_0xd05ca9<_0x3e4b8d['rules'][_0xc8a8('0x39')];_0xd05ca9+=0x1){_0xd05ca9>0x0&&(_0x3e9d51+='\x20'+_0x3e4b8d[_0xc8a8('0x67')]+'\x20');_0x3e9d51+=_0x3e4b8d[_0xc8a8('0x66')][_0xd05ca9][_0xc8a8('0x68')]?_0x3e2a4a(_0x3e4b8d[_0xc8a8('0x66')][_0xd05ca9][_0xc8a8('0x68')]):_0x3e4b8d[_0xc8a8('0x66')][_0xd05ca9]['field']+'\x20'+_0x3e4b8d['rules'][_0xd05ca9][_0xc8a8('0x6a')]+(_0x1ce0e5(_0x3e4b8d[_0xc8a8('0x66')][_0xd05ca9][_0xc8a8('0x6a')])?'\x20'+_0x3e4b8d[_0xc8a8('0x66')][_0xd05ca9][_0xc8a8('0x8c')]:'');}return _0x3e9d51+')';};var _0x34d624={'where':{'id':_0x43b5ac['id']}},_0x1b23c1,_0x1917d8,_0x566ed0,_0x2f5468,_0x2587a6;_0x34d624=_[_0xc8a8('0x3f')]({},_0x34d624,_0x5d2b06);return db[_0xc8a8('0x40')][_0xc8a8('0x49')](_0x34d624)[_0xc8a8('0x25')](function(_0xbbe423){if(_0xbbe423){_0x1b23c1=_0xbbe423;return _0xbbe423[_0xc8a8('0x6b')]();}return null;})[_0xc8a8('0x25')](function(_0x1df336){if(_0x1df336){if(!_0x1df336[_0xc8a8('0x39')]){throw new db[(_0xc8a8('0x8d'))][(_0xc8a8('0x6c'))](_0xc8a8('0x6d'),0x193);}_0x1917d8=_0x1df336;return db[_0xc8a8('0x6e')]['findAll']({'raw':!![]});}return null;})[_0xc8a8('0x25')](function(_0x4fc30b){if(_0x4fc30b){_0x566ed0=_[_0xc8a8('0x70')](_0x4fc30b,'id');var _0x5e680f;var _0x239bde=squel[_0xc8a8('0x71')]();_0x239bde[_0xc8a8('0x8e')](_0x1b23c1['table']);for(var _0x43acd1=0x0;_0x43acd1<_0x1917d8[_0xc8a8('0x39')];_0x43acd1+=0x1){_0x5e680f=_0x1917d8[_0x43acd1][_0xc8a8('0x73')]?_0x566ed0[_0x1917d8[_0x43acd1][_0xc8a8('0x73')]][_0xc8a8('0x8f')]:_0x1917d8[_0x43acd1][_0xc8a8('0x69')];_0x5e680f=_0x1917d8[_0x43acd1][_0xc8a8('0x74')]?_[_0xc8a8('0x75')](_0x202cc4[_0x1917d8[_0x43acd1][_0xc8a8('0x74')]],'%s',_0x5e680f):_0x5e680f;_0x5e680f=_0x1917d8[_0x43acd1][_0xc8a8('0x76')]?_[_0xc8a8('0x75')](_0x24d1f1[_0x1917d8[_0x43acd1][_0xc8a8('0x76')]],'%s',_0x5e680f):_0x5e680f;if(_0x1917d8[_0x43acd1]['groupBy']){_0x239bde['group'](_0x5e680f);}_0x1917d8[_0x43acd1][_0xc8a8('0x78')]&&_0x239bde[_0xc8a8('0x3a')](_0x5e680f,_0x1917d8[_0x43acd1][_0xc8a8('0x78')]===_0xc8a8('0x79')?![]:!![]);_0x239bde[_0xc8a8('0x69')](_0x5e680f,_0x1917d8[_0x43acd1][_0xc8a8('0x7a')]||_0x5e680f);}if(_0x1b23c1['joins']){_0x1b23c1[_0xc8a8('0x7b')]=JSON[_0xc8a8('0x7c')](_0x1b23c1[_0xc8a8('0x7b')]);for(var _0x2e7495=0x0;_0x2e7495<_0x1b23c1['joins'][_0xc8a8('0x39')];_0x2e7495+=0x1){if(_0x1b23c1['joins'][_0x2e7495][_0xc8a8('0x2f')]&&_[_0xc8a8('0x7d')](_0x17adde,_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495]['type'])&&_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495]['parentKey']&&_0x1b23c1['joins'][_0x2e7495][_0xc8a8('0x7f')]&&_0x1b23c1['joins'][_0x2e7495]['foreignKey']){_0x239bde[_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495][_0xc8a8('0x2f')]](_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495][_0xc8a8('0x7f')],null,util[_0xc8a8('0x76')]('%s.%s\x20=\x20%s.%s',_0x1b23c1['table'],_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495][_0xc8a8('0x90')],_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495]['foreignTable'],_0x1b23c1[_0xc8a8('0x7b')][_0x2e7495][_0xc8a8('0x7e')]));}}}if(_0x1b23c1['conditions']){_0x1b23c1[_0xc8a8('0x81')]=JSON[_0xc8a8('0x7c')](_0x1b23c1['conditions']);_0x239bde['where'](_0x3e2a4a(_0x1b23c1[_0xc8a8('0x81')][_0xc8a8('0x68')]));}_0x2587a6=_0x239bde['clone']();_0x239bde[_0xc8a8('0x22')](_0x59ccae);_0x239bde[_0xc8a8('0x1f')](0x0);return;}})['then'](function(){if(_0x3600c0[_0xc8a8('0x91')]===_0xc8a8('0x92')){return null;}var _0x3c70a6=_[_0xc8a8('0x3f')](_0x3600c0,{'name':_0x3600c0[_0xc8a8('0x93')]||_0x3600c0['name']||_0x1b23c1[_0xc8a8('0x2b')],'basename':_0x4613d1,'savename':util['format'](_0xc8a8('0x94'),_0x3600c0[_0xc8a8('0x2b')]||_0x1b23c1[_0xc8a8('0x2b')],require(_0xc8a8('0x95'))[_0xc8a8('0x96')](0x4),_0x3600c0[_0xc8a8('0x91')]||_0xc8a8('0x97')),'reportId':_0x1b23c1['id'],'reportType':_0xc8a8('0x98')});return db[_0xc8a8('0x99')]['create'](_0x3c70a6,{'raw':!![]});})['then'](function(_0x867395){if(_0x1b23c1[_0xc8a8('0x72')]===_0xc8a8('0x9a')){_0x2587a6['where'](_0x1b23c1[_0xc8a8('0x72')]+_0xc8a8('0x9b'),_0x3600c0[_0xc8a8('0x9c')],_0x3600c0['endDate']);}else{_0x2587a6[_0xc8a8('0x3c')](_0x1b23c1[_0xc8a8('0x72')]+_0xc8a8('0x9d'),_0x3600c0[_0xc8a8('0x9c')],_0x3600c0[_0xc8a8('0x9e')]);}if(_0x867395){logger[_0xc8a8('0x9f')](_0xc8a8('0xa0'),_0x2587a6[_0xc8a8('0x84')]());require(_0xc8a8('0xa1'))['fork'](path[_0xc8a8('0x56')](__dirname,_0xc8a8('0xa2'),_0x867395[_0xc8a8('0x91')]),[_0x867395['id'],_0x2587a6[_0xc8a8('0x84')](),path[_0xc8a8('0x56')](__dirname,_0xc8a8('0xa3'),_0x867395[_0xc8a8('0xa4')]),_0x4613d1]);return _0x867395;}else{var _0x49e30b=squel[_0xc8a8('0x71')]();_0x49e30b[_0xc8a8('0x8e')]('('+_0x2587a6['toString']()+')',_0xc8a8('0xa5'));_0x49e30b[_0xc8a8('0x69')](_0xc8a8('0xa6'),'count');_0x2587a6[_0xc8a8('0x22')](_0x3600c0[_0xc8a8('0x22')]||_0x59ccae);_0x2587a6[_0xc8a8('0x1f')](_0x3600c0[_0xc8a8('0x1f')]||0x0);return dbH['sequelize']['query'](_0x49e30b[_0xc8a8('0x84')](),{'type':dbH['sequelize'][_0xc8a8('0x86')][_0xc8a8('0xa7')]})[_0xc8a8('0x25')](function(_0x5213e5){if(!_0x5213e5[_0xc8a8('0x39')]){_0x2f5468=0x0;}else{_0x2f5468=_0x5213e5[0x0][_0xc8a8('0x21')]||0x0;}return dbH['sequelize'][_0xc8a8('0x33')](_0x2587a6[_0xc8a8('0x84')](),{'type':dbH[_0xc8a8('0x85')][_0xc8a8('0x86')]['SELECT']});})['then'](function(_0x45e97f){return{'rows':_0x45e97f||[],'count':_0x2f5468};});}});}exports[_0xc8a8('0xa8')]=function(_0xc0d592,_0x2b2f91){return runReport(_0xc0d592[_0xc8a8('0x46')],_0xc0d592[_0xc8a8('0x33')],_0xc0d592[_0xc8a8('0x48')])['then'](respondWithResult(_0x2b2f91,null))['catch'](handleError(_0x2b2f91,null));};exports[_0xc8a8('0xa9')]=runReport;exports[_0xc8a8('0x33')]=function(_0x34da14,_0x4a2fd7){var _0xdaf5f7=0xa;var _0x2d74df=['join',_0xc8a8('0x87'),_0xc8a8('0x57'),_0xc8a8('0x58')];var _0x38789a={'SUM':_0xc8a8('0x59'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc8a8('0x5b'),'MAX':_0xc8a8('0x5c'),'MIN':_0xc8a8('0x88'),'AVG':_0xc8a8('0x5d'),'GROUP_CONCAT':_0xc8a8('0xaa'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xc8a8('0x5e')};var _0x1b6c55={'SEC_TO_TIME':_0xc8a8('0x5f'),'DATE':_0xc8a8('0x8a'),'HOUR':_0xc8a8('0x8b'),'ROUND':_0xc8a8('0x60'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x436e51=function(_0x20038b){return!_[_0xc8a8('0x7d')]([_0xc8a8('0x62'),_0xc8a8('0x63'),'IS\x20EMPTY',_0xc8a8('0x65')],_0x20038b);};var _0xa3724=function(_0x5f0b16){if(!_0x5f0b16||!_0x5f0b16[_0xc8a8('0x66')][_0xc8a8('0x39')]){return'';}for(var _0x99fe47='(',_0x2aa253=0x0;_0x2aa253<_0x5f0b16[_0xc8a8('0x66')][_0xc8a8('0x39')];_0x2aa253+=0x1){_0x2aa253>0x0&&(_0x99fe47+='\x20'+_0x5f0b16[_0xc8a8('0x67')]+'\x20');_0x99fe47+=_0x5f0b16[_0xc8a8('0x66')][_0x2aa253][_0xc8a8('0x68')]?_0xa3724(_0x5f0b16['rules'][_0x2aa253][_0xc8a8('0x68')]):_0x5f0b16[_0xc8a8('0x66')][_0x2aa253][_0xc8a8('0x69')]+'\x20'+_0x5f0b16[_0xc8a8('0x66')][_0x2aa253][_0xc8a8('0x6a')]+(_0x436e51(_0x5f0b16[_0xc8a8('0x66')][_0x2aa253][_0xc8a8('0x6a')])?'\x20'+_0x5f0b16[_0xc8a8('0x66')][_0x2aa253]['value']:'');}return _0x99fe47+')';};var _0x43463d={'where':{'id':_0x34da14[_0xc8a8('0x46')]['id']}},_0x42e18f,_0x22623e,_0x125fdb,_0x4fd25e,_0x307410;_0x43463d=_[_0xc8a8('0x3f')]({},_0x43463d,_0x34da14[_0xc8a8('0x48')]);return db[_0xc8a8('0x40')]['find'](_0x43463d)[_0xc8a8('0x25')](function(_0xfd0c54){if(_0xfd0c54){_0x42e18f=_0xfd0c54;return _0xfd0c54[_0xc8a8('0x6b')]();}return null;})[_0xc8a8('0x25')](function(_0x51d4a2){if(_0x51d4a2){if(!_0x51d4a2[_0xc8a8('0x39')]){throw new db[(_0xc8a8('0x8d'))]['ValidationErrorItem'](_0xc8a8('0x6d'),0x193);}_0x22623e=_0x51d4a2;return db[_0xc8a8('0x6e')][_0xc8a8('0x6f')]({'raw':!![]});}return null;})[_0xc8a8('0x25')](function(_0x527509){if(_0x527509){_0x125fdb=_[_0xc8a8('0x70')](_0x527509,'id');var _0x1f919b;var _0x32a7df=squel[_0xc8a8('0x71')]();_0x32a7df[_0xc8a8('0x8e')](_0x42e18f[_0xc8a8('0x72')]);for(var _0x57c9b8=0x0;_0x57c9b8<_0x22623e[_0xc8a8('0x39')];_0x57c9b8+=0x1){_0x1f919b=_0x22623e[_0x57c9b8][_0xc8a8('0x73')]?_0x125fdb[_0x22623e[_0x57c9b8][_0xc8a8('0x73')]][_0xc8a8('0x8f')]:_0x22623e[_0x57c9b8][_0xc8a8('0x69')];_0x1f919b=_0x22623e[_0x57c9b8][_0xc8a8('0x74')]?_[_0xc8a8('0x75')](_0x38789a[_0x22623e[_0x57c9b8][_0xc8a8('0x74')]],'%s',_0x1f919b):_0x1f919b;_0x1f919b=_0x22623e[_0x57c9b8][_0xc8a8('0x76')]?_[_0xc8a8('0x75')](_0x1b6c55[_0x22623e[_0x57c9b8][_0xc8a8('0x76')]],'%s',_0x1f919b):_0x1f919b;if(_0x22623e[_0x57c9b8][_0xc8a8('0x77')]){_0x32a7df[_0xc8a8('0x68')](_0x1f919b);}_0x22623e[_0x57c9b8][_0xc8a8('0x78')]&&_0x32a7df[_0xc8a8('0x3a')](_0x1f919b,_0x22623e[_0x57c9b8][_0xc8a8('0x78')]===_0xc8a8('0x79')?![]:!![]);_0x32a7df[_0xc8a8('0x69')](_0x1f919b,_0x22623e[_0x57c9b8]['alias']||_0x1f919b);}if(_0x42e18f['joins']){_0x42e18f[_0xc8a8('0x7b')]=JSON[_0xc8a8('0x7c')](_0x42e18f[_0xc8a8('0x7b')]);for(var _0x50f83c=0x0;_0x50f83c<_0x42e18f[_0xc8a8('0x7b')]['length'];_0x50f83c+=0x1){if(_0x42e18f['joins'][_0x50f83c]['type']&&_[_0xc8a8('0x7d')](_0x2d74df,_0x42e18f[_0xc8a8('0x7b')][_0x50f83c][_0xc8a8('0x2f')])&&_0x42e18f[_0xc8a8('0x7b')][_0x50f83c][_0xc8a8('0x90')]&&_0x42e18f[_0xc8a8('0x7b')][_0x50f83c][_0xc8a8('0x7f')]&&_0x42e18f['joins'][_0x50f83c]['foreignKey']){_0x32a7df[_0x42e18f[_0xc8a8('0x7b')][_0x50f83c][_0xc8a8('0x2f')]](_0x42e18f[_0xc8a8('0x7b')][_0x50f83c]['foreignTable'],null,util['format'](_0xc8a8('0x80'),_0x42e18f[_0xc8a8('0x72')],_0x42e18f['joins'][_0x50f83c][_0xc8a8('0x90')],_0x42e18f[_0xc8a8('0x7b')][_0x50f83c][_0xc8a8('0x7f')],_0x42e18f['joins'][_0x50f83c][_0xc8a8('0x7e')]));}}}if(_0x42e18f['conditions']){_0x42e18f[_0xc8a8('0x81')]=JSON[_0xc8a8('0x7c')](_0x42e18f[_0xc8a8('0x81')]);_0x32a7df['where'](_0xa3724(_0x42e18f[_0xc8a8('0x81')][_0xc8a8('0x68')]));}_0x307410=_0x32a7df[_0xc8a8('0x82')]();_0x32a7df[_0xc8a8('0x22')](_0xdaf5f7);_0x32a7df[_0xc8a8('0x1f')](0x0);logger['debug'](_0xc8a8('0x83'),_0x32a7df['toString']());return dbH[_0xc8a8('0x85')]['query'](_0x32a7df['toString'](),{'type':dbH[_0xc8a8('0x85')][_0xc8a8('0x86')][_0xc8a8('0xa7')]});}})['then'](function(){return{'sql':_0x307410[_0xc8a8('0x84')]()};})[_0xc8a8('0x25')](respondWithResult(_0x4a2fd7,null))['catch'](handleError(_0x4a2fd7,null));};
\ No newline at end of file
index 5cb65ae..52cfe0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8873=['./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x2c913a,_0x10aad3){var _0x33c2f8=function(_0x48929c){while(--_0x48929c){_0x2c913a['push'](_0x2c913a['shift']());}};_0x33c2f8(++_0x10aad3);}(_0x8873,0x9f));var _0x3887=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x8873[_0x1928c9];return _0x51b5fb;};'use strict';var _=require(_0x3887('0x0'));var util=require(_0x3887('0x1'));var logger=require(_0x3887('0x2'))(_0x3887('0x3'));var moment=require(_0x3887('0x4'));var BPromise=require(_0x3887('0x5'));var rp=require(_0x3887('0x6'));var fs=require('fs');var path=require(_0x3887('0x7'));var rimraf=require('rimraf');var config=require(_0x3887('0x8'));var attributes=require(_0x3887('0x9'));module[_0x3887('0xa')]=function(_0x46ff7f,_0x4087e8){return _0x46ff7f[_0x3887('0xb')](_0x3887('0xc'),attributes,{'tableName':_0x3887('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb530=['define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports'];(function(_0x276064,_0xf56b91){var _0x125aff=function(_0x4e0b43){while(--_0x4e0b43){_0x276064['push'](_0x276064['shift']());}};_0x125aff(++_0xf56b91);}(_0xb530,0x8a));var _0x0b53=function(_0x5a3783,_0x298d4f){_0x5a3783=_0x5a3783-0x0;var _0x5791e9=_0xb530[_0x5a3783];return _0x5791e9;};'use strict';var _=require(_0x0b53('0x0'));var util=require(_0x0b53('0x1'));var logger=require(_0x0b53('0x2'))(_0x0b53('0x3'));var moment=require(_0x0b53('0x4'));var BPromise=require(_0x0b53('0x5'));var rp=require(_0x0b53('0x6'));var fs=require('fs');var path=require(_0x0b53('0x7'));var rimraf=require(_0x0b53('0x8'));var config=require(_0x0b53('0x9'));var attributes=require(_0x0b53('0xa'));module[_0x0b53('0xb')]=function(_0x5bc512,_0x28925f){return _0x5bc512[_0x0b53('0xc')](_0x0b53('0xd'),attributes,{'tableName':_0x0b53('0xe'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8fb0fcf..3cd8d4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe135=['rpc','client','http','request','then','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','code','AnalyticCustomReport,\x20%s,\x20%s','message','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x345bd5,_0x2c7ae2){var _0x4c32a1=function(_0x7de583){while(--_0x7de583){_0x345bd5['push'](_0x345bd5['shift']());}};_0x4c32a1(++_0x2c7ae2);}(_0xe135,0x10a));var _0x5e13=function(_0x35af53,_0x5966b1){_0x35af53=_0x35af53-0x0;var _0x6bbbce=_0xe135[_0x35af53];return _0x6bbbce;};'use strict';var _=require(_0x5e13('0x0'));var util=require('util');var moment=require(_0x5e13('0x1'));var BPromise=require('bluebird');var rs=require(_0x5e13('0x2'));var fs=require('fs');var Redis=require(_0x5e13('0x3'));var db=require(_0x5e13('0x4'))['db'];var utils=require(_0x5e13('0x5'));var logger=require('../../config/logger')(_0x5e13('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5e13('0x7')][_0x5e13('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4ba531,_0x59bdbf,_0x196d22){return new BPromise(function(_0x5506c2,_0x28168f){return client[_0x5e13('0x9')](_0x4ba531,_0x196d22)[_0x5e13('0xa')](function(_0x4bc2be){logger['info']('AnalyticCustomReport,\x20%s,\x20%s',_0x59bdbf,_0x5e13('0xb'));logger['debug'](_0x5e13('0xc'),_0x59bdbf,'request\x20sent',JSON['stringify'](_0x4bc2be));if(_0x4bc2be[_0x5e13('0xd')]){if(_0x4bc2be[_0x5e13('0xd')][_0x5e13('0xe')]===0x1f4){logger[_0x5e13('0xd')](_0x5e13('0xf'),_0x59bdbf,_0x4bc2be[_0x5e13('0xd')][_0x5e13('0x10')]);return _0x28168f(_0x4bc2be[_0x5e13('0xd')][_0x5e13('0x10')]);}logger[_0x5e13('0xd')](_0x5e13('0xf'),_0x59bdbf,_0x4bc2be[_0x5e13('0xd')]['message']);return _0x5506c2(_0x4bc2be['error']['message']);}else{logger['info'](_0x5e13('0xf'),_0x59bdbf,_0x5e13('0xb'));_0x5506c2(_0x4bc2be['result'][_0x5e13('0x10')]);}})['catch'](function(_0x2318ce){logger[_0x5e13('0xd')](_0x5e13('0xf'),_0x59bdbf,_0x2318ce);_0x28168f(_0x2318ce);});});}
\ No newline at end of file
+var _0xf9e4=['randomstring','../../config/utils','rpc','jayson/promise','client','http','request','then','info','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','AnalyticCustomReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment'];(function(_0x2bec9d,_0x1961a4){var _0x5efd82=function(_0x2777ad){while(--_0x2777ad){_0x2bec9d['push'](_0x2bec9d['shift']());}};_0x5efd82(++_0x1961a4);}(_0xf9e4,0x10e));var _0x4f9e=function(_0x5c5c25,_0x143ae6){_0x5c5c25=_0x5c5c25-0x0;var _0x2a7c2f=_0xf9e4[_0x5c5c25];return _0x2a7c2f;};'use strict';var _=require(_0x4f9e('0x0'));var util=require(_0x4f9e('0x1'));var moment=require(_0x4f9e('0x2'));var BPromise=require('bluebird');var rs=require(_0x4f9e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4f9e('0x4'));var logger=require('../../config/logger')(_0x4f9e('0x5'));var config=require('../../config/environment');var jayson=require(_0x4f9e('0x6'));var client=jayson[_0x4f9e('0x7')][_0x4f9e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x465e05,_0x311a92,_0x10fc3d){return new BPromise(function(_0x2d107b,_0x502999){return client[_0x4f9e('0x9')](_0x465e05,_0x10fc3d)[_0x4f9e('0xa')](function(_0x5c7085){logger[_0x4f9e('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x311a92,'request\x20sent');logger[_0x4f9e('0xc')](_0x4f9e('0xd'),_0x311a92,_0x4f9e('0xe'),JSON[_0x4f9e('0xf')](_0x5c7085));if(_0x5c7085['error']){if(_0x5c7085[_0x4f9e('0x10')]['code']===0x1f4){logger[_0x4f9e('0x10')](_0x4f9e('0x11'),_0x311a92,_0x5c7085['error'][_0x4f9e('0x12')]);return _0x502999(_0x5c7085[_0x4f9e('0x10')][_0x4f9e('0x12')]);}logger[_0x4f9e('0x10')](_0x4f9e('0x11'),_0x311a92,_0x5c7085[_0x4f9e('0x10')][_0x4f9e('0x12')]);return _0x2d107b(_0x5c7085['error']['message']);}else{logger[_0x4f9e('0xb')](_0x4f9e('0x11'),_0x311a92,_0x4f9e('0xe'));_0x2d107b(_0x5c7085[_0x4f9e('0x13')][_0x4f9e('0x12')]);}})[_0x4f9e('0x14')](function(_0x1dddf8){logger[_0x4f9e('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x311a92,_0x1dddf8);_0x502999(_0x1dddf8);});});}
\ No newline at end of file
index 17bae6e..c1726c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fb6=['/:id/query','query','post','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','/:id/preview','preview','/:id/run'];(function(_0x5b1b10,_0x508e2f){var _0x46eaa0=function(_0x50d837){while(--_0x50d837){_0x5b1b10['push'](_0x5b1b10['shift']());}};_0x46eaa0(++_0x508e2f);}(_0x6fb6,0x1d0));var _0x66fb=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0x6fb6[_0x481bf7];return _0x461787;};'use strict';var multer=require(_0x66fb('0x0'));var util=require('util');var path=require(_0x66fb('0x1'));var timeout=require(_0x66fb('0x2'));var express=require(_0x66fb('0x3'));var router=express[_0x66fb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x66fb('0x5'));var interaction=require(_0x66fb('0x6'));var config=require(_0x66fb('0x7'));var controller=require(_0x66fb('0x8'));router[_0x66fb('0x9')]('/',auth[_0x66fb('0xa')](),controller[_0x66fb('0xb')]);router[_0x66fb('0x9')](_0x66fb('0xc'),auth[_0x66fb('0xa')](),controller['show']);router[_0x66fb('0x9')](_0x66fb('0xd'),auth[_0x66fb('0xa')](),controller[_0x66fb('0xe')]);router[_0x66fb('0x9')](_0x66fb('0xf'),auth['isAuthenticated'](),controller['run']);router[_0x66fb('0x9')](_0x66fb('0x10'),auth[_0x66fb('0xa')](),controller[_0x66fb('0x11')]);router[_0x66fb('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x66fb('0x13')]('/:id',auth[_0x66fb('0xa')](),controller[_0x66fb('0x14')]);router[_0x66fb('0x15')](_0x66fb('0xc'),auth[_0x66fb('0xa')](),controller[_0x66fb('0x16')]);module[_0x66fb('0x17')]=router;
\ No newline at end of file
+var _0x7250=['get','/:id/preview','/:id/run','query','create','put','/:id','destroy','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','./analyticCustomReport.controller','isAuthenticated','index'];(function(_0x4685f3,_0x30c308){var _0x29ea07=function(_0x1d4135){while(--_0x1d4135){_0x4685f3['push'](_0x4685f3['shift']());}};_0x29ea07(++_0x30c308);}(_0x7250,0xaa));var _0x0725=function(_0x1ac725,_0x19994f){_0x1ac725=_0x1ac725-0x0;var _0x52e93d=_0x7250[_0x1ac725];return _0x52e93d;};'use strict';var multer=require(_0x0725('0x0'));var util=require(_0x0725('0x1'));var path=require(_0x0725('0x2'));var timeout=require(_0x0725('0x3'));var express=require(_0x0725('0x4'));var router=express['Router']();var fs_extra=require(_0x0725('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0725('0x6'));var controller=require(_0x0725('0x7'));router['get']('/',auth[_0x0725('0x8')](),controller[_0x0725('0x9')]);router[_0x0725('0xa')]('/:id',auth[_0x0725('0x8')](),controller['show']);router[_0x0725('0xa')](_0x0725('0xb'),auth[_0x0725('0x8')](),controller['preview']);router['get'](_0x0725('0xc'),auth[_0x0725('0x8')](),controller['run']);router[_0x0725('0xa')]('/:id/query',auth[_0x0725('0x8')](),controller[_0x0725('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x0725('0xe')]);router[_0x0725('0xf')](_0x0725('0x10'),auth[_0x0725('0x8')](),controller['update']);router['delete'](_0x0725('0x10'),auth['isAuthenticated'](),controller[_0x0725('0x11')]);module['exports']=router;
\ No newline at end of file
index 776642b..625b8f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['TEXT','sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1cb9,0x14e));var _0x91cb=function(_0x1e597a,_0x4834d6){_0x1e597a=_0x1e597a-0x0;var _0x5979c6=_0x1cb9[_0x1e597a];return _0x5979c6;};'use strict';var Sequelize=require(_0x91cb('0x0'));module['exports']={'name':{'type':Sequelize[_0x91cb('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x91cb('0x1')]},'parent':{'type':Sequelize[_0x91cb('0x1')]},'table':{'type':Sequelize[_0x91cb('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x91cb('0x2')]}};
\ No newline at end of file
+var _0xd8fb=['TEXT','sequelize','exports','STRING'];(function(_0x257e36,_0x284596){var _0x1887cd=function(_0x987aa2){while(--_0x987aa2){_0x257e36['push'](_0x257e36['shift']());}};_0x1887cd(++_0x284596);}(_0xd8fb,0x99));var _0xbd8f=function(_0x5d30fa,_0xe76b29){_0x5d30fa=_0x5d30fa-0x0;var _0x456859=_0xd8fb[_0x5d30fa];return _0x456859;};'use strict';var Sequelize=require(_0xbd8f('0x0'));module[_0xbd8f('0x1')]={'name':{'type':Sequelize[_0xbd8f('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xbd8f('0x2')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xbd8f('0x3')]}};
\ No newline at end of file
index e4ab294..1b425cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['QueryTypes','right_join','HOUR(%s)','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','dbH','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','get','DefaultReports','destroy','error','stack','name','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','params','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','rules','operator','group','field','condition','value','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','groupBy','orderBy','order','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','format','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','sequelize','toString','SELECT','GROUP_CONCAT(%s)','SEC_TO_TIME(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20EMPTY','getFields','ValidationErrorItem','fullPath','%s-%s.%s','generate','output','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','child_process','fork','../../components/export/','../../files/reports','countTable','COUNT(*)'];(function(_0x40bc53,_0x23d242){var _0x287a92=function(_0x1784a1){while(--_0x1784a1){_0x40bc53['push'](_0x40bc53['shift']());}};_0x287a92(++_0x23d242);}(_0x5fc3,0xa8));var _0x35fc=function(_0x22868f,_0x450f48){_0x22868f=_0x22868f-0x0;var _0x97bc75=_0x5fc3[_0x22868f];return _0x97bc75;};'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'];var dbH=require('../../mysqldb')[_0x35fc('0x17')];function respondWithStatusCode(_0x5d462a,_0x397738){_0x397738=_0x397738||0xcc;return function(_0x22055e){if(_0x22055e){return _0x5d462a[_0x35fc('0x18')](_0x397738);}return _0x5d462a[_0x35fc('0x19')](_0x397738)[_0x35fc('0x1a')]();};}function respondWithResult(_0x5cfe94,_0x59507a){_0x59507a=_0x59507a||0xc8;return function(_0x5eac0f){if(_0x5eac0f){return _0x5cfe94['status'](_0x59507a)[_0x35fc('0x1b')](_0x5eac0f);}};}function respondWithFilteredResult(_0x229d56,_0x53b898){return function(_0x154958){if(_0x154958){var _0x227a49=typeof _0x53b898[_0x35fc('0x1c')]==='undefined'&&typeof _0x53b898[_0x35fc('0x1d')]===_0x35fc('0x1e');var _0x553677=_0x154958[_0x35fc('0x1f')];var _0x363e47=_0x227a49?0x0:_0x53b898[_0x35fc('0x1c')];var _0x5f56c6=_0x227a49?_0x154958[_0x35fc('0x1f')]:_0x53b898[_0x35fc('0x1c')]+_0x53b898[_0x35fc('0x1d')];var _0x488234;if(_0x5f56c6>=_0x553677){_0x5f56c6=_0x553677;_0x488234=0xc8;}else{_0x488234=0xce;}_0x229d56[_0x35fc('0x19')](_0x488234);return _0x229d56[_0x35fc('0x20')](_0x35fc('0x21'),_0x363e47+'-'+_0x5f56c6+'/'+_0x553677)[_0x35fc('0x1b')](_0x154958);}return null;};}function patchUpdates(_0x20ffde){return function(_0x21f1a9){try{jsonpatch[_0x35fc('0x22')](_0x21f1a9,_0x20ffde,!![]);}catch(_0x3b05b0){return BPromise[_0x35fc('0x23')](_0x3b05b0);}return _0x21f1a9[_0x35fc('0x24')]();};}function saveUpdates(_0x5bd2b8,_0x323aee){return function(_0xd5399f){if(_0xd5399f){return _0xd5399f[_0x35fc('0x25')](_0x5bd2b8)[_0x35fc('0x26')](function(_0x3b4743){return _0x3b4743;});}return null;};}function removeEntity(_0x55e9e7,_0x33f5e8){return function(_0x4c587a){if(_0x4c587a){return _0x4c587a['destroy']()[_0x35fc('0x26')](function(){var _0x5a93df=_0x4c587a[_0x35fc('0x27')]({'plain':!![]});var _0x51cfec=_0x35fc('0x28');return db['UserProfileResource'][_0x35fc('0x29')]({'where':{'type':_0x51cfec,'resourceId':_0x5a93df['id']}})[_0x35fc('0x26')](function(){return _0x4c587a;});})['then'](function(){_0x55e9e7['status'](0xcc)[_0x35fc('0x1a')]();});}};}function handleEntityNotFound(_0x58edb6,_0x274208){return function(_0x1a5d92){if(!_0x1a5d92){_0x58edb6['sendStatus'](0x194);}return _0x1a5d92;};}function handleError(_0x26b7cb,_0x645eac){_0x645eac=_0x645eac||0x1f4;return function(_0x383837){logger[_0x35fc('0x2a')](_0x383837[_0x35fc('0x2b')]);if(_0x383837[_0x35fc('0x2c')]){delete _0x383837[_0x35fc('0x2c')];}_0x26b7cb[_0x35fc('0x19')](_0x645eac)['send'](_0x383837);};}exports[_0x35fc('0x2d')]=function(_0x220931,_0x22af18){var _0x52acc5={},_0xe79f52={},_0x16f067={'count':0x0,'rows':[]};var _0x3822a8=_[_0x35fc('0x2e')](db[_0x35fc('0x2f')][_0x35fc('0x30')],function(_0x222ddb){return{'name':_0x222ddb[_0x35fc('0x31')],'type':_0x222ddb[_0x35fc('0x32')][_0x35fc('0x33')]};});_0xe79f52['model']=_['map'](_0x3822a8,_0x35fc('0x2c'));_0xe79f52['query']=_[_0x35fc('0x34')](_0x220931[_0x35fc('0x35')]);_0xe79f52[_0x35fc('0x36')]=_[_0x35fc('0x37')](_0xe79f52[_0x35fc('0x38')],_0xe79f52[_0x35fc('0x35')]);_0x52acc5['attributes']=_[_0x35fc('0x37')](_0xe79f52[_0x35fc('0x38')],qs[_0x35fc('0x39')](_0x220931[_0x35fc('0x35')][_0x35fc('0x39')]));_0x52acc5[_0x35fc('0x3a')]=_0x52acc5['attributes'][_0x35fc('0x3b')]?_0x52acc5[_0x35fc('0x3a')]:_0xe79f52[_0x35fc('0x38')];if(!_0x220931['query'][_0x35fc('0x3c')]('nolimit')){_0x52acc5[_0x35fc('0x1d')]=qs[_0x35fc('0x1d')](_0x220931[_0x35fc('0x35')][_0x35fc('0x1d')]);_0x52acc5['offset']=qs['offset'](_0x220931['query'][_0x35fc('0x1c')]);}_0x52acc5['order']=qs[_0x35fc('0x3d')](_0x220931['query'][_0x35fc('0x3d')]);_0x52acc5[_0x35fc('0x3e')]=qs[_0x35fc('0x36')](_[_0x35fc('0x3f')](_0x220931[_0x35fc('0x35')],_0xe79f52[_0x35fc('0x36')]),_0x3822a8);if(_0x220931[_0x35fc('0x35')]['filter']){_0x52acc5[_0x35fc('0x3e')]=_[_0x35fc('0x40')](_0x52acc5['where'],{'$or':_[_0x35fc('0x2e')](_0x3822a8,function(_0x1ccc41){if(_0x1ccc41[_0x35fc('0x32')]!==_0x35fc('0x41')){var _0x813866={};_0x813866[_0x1ccc41[_0x35fc('0x2c')]]={'$like':'%'+_0x220931['query'][_0x35fc('0x42')]+'%'};return _0x813866;}})});}_0x52acc5=_[_0x35fc('0x40')]({},_0x52acc5,_0x220931[_0x35fc('0x43')]);var _0x52543b={'where':_0x52acc5[_0x35fc('0x3e')]};return db[_0x35fc('0x2f')]['count'](_0x52543b)[_0x35fc('0x26')](function(_0x280af1){_0x16f067[_0x35fc('0x1f')]=_0x280af1;if(_0x220931[_0x35fc('0x35')][_0x35fc('0x44')]){_0x52acc5[_0x35fc('0x45')]=[{'all':!![]}];}return db[_0x35fc('0x2f')][_0x35fc('0x46')](_0x52acc5);})['then'](function(_0x596e83){_0x16f067[_0x35fc('0x47')]=_0x596e83;return _0x16f067;})[_0x35fc('0x26')](respondWithFilteredResult(_0x22af18,_0x52acc5))['catch'](handleError(_0x22af18,null));};exports['show']=function(_0x4ff202,_0x79677d){var _0x10f98b={'raw':!![],'where':{'id':_0x4ff202[_0x35fc('0x48')]['id']}},_0x4e56ed={};_0x4e56ed[_0x35fc('0x38')]=_[_0x35fc('0x34')](db[_0x35fc('0x2f')]['rawAttributes']);_0x4e56ed['query']=_['keys'](_0x4ff202['query']);_0x4e56ed['filters']=_[_0x35fc('0x37')](_0x4e56ed[_0x35fc('0x38')],_0x4e56ed['query']);_0x10f98b[_0x35fc('0x3a')]=_['intersection'](_0x4e56ed[_0x35fc('0x38')],qs[_0x35fc('0x39')](_0x4ff202[_0x35fc('0x35')][_0x35fc('0x39')]));_0x10f98b[_0x35fc('0x3a')]=_0x10f98b['attributes'][_0x35fc('0x3b')]?_0x10f98b[_0x35fc('0x3a')]:_0x4e56ed['model'];if(_0x4ff202[_0x35fc('0x35')][_0x35fc('0x44')]){_0x10f98b[_0x35fc('0x45')]=[{'all':!![]}];}_0x10f98b=_[_0x35fc('0x40')]({},_0x10f98b,_0x4ff202['options']);return db[_0x35fc('0x2f')]['find'](_0x10f98b)['then'](handleEntityNotFound(_0x79677d,null))[_0x35fc('0x26')](respondWithResult(_0x79677d,null))[_0x35fc('0x49')](handleError(_0x79677d,null));};exports[_0x35fc('0x4a')]=function(_0xca8aef,_0xf2ca20){return db[_0x35fc('0x2f')][_0x35fc('0x4a')](_0xca8aef[_0x35fc('0x4b')],{})['then'](function(_0x3e2961){var _0x91d7c0=_0xca8aef[_0x35fc('0x4c')][_0x35fc('0x27')]({'plain':!![]});if(!_0x91d7c0)throw new Error(_0x35fc('0x4d'));if(_0x91d7c0[_0x35fc('0x4e')]===_0x35fc('0x4c')){var _0x347a4a=_0x3e2961[_0x35fc('0x27')]({'plain':!![]});var _0xe6eb6a=_0x35fc('0x4f');return db[_0x35fc('0x50')][_0x35fc('0x51')]({'where':{'name':_0xe6eb6a,'userProfileId':_0x91d7c0[_0x35fc('0x52')]},'raw':!![]})['then'](function(_0x553ed6){if(_0x553ed6&&_0x553ed6[_0x35fc('0x53')]===0x0){return db[_0x35fc('0x54')][_0x35fc('0x4a')]({'name':_0x347a4a[_0x35fc('0x2c')],'resourceId':_0x347a4a['id'],'type':_0x35fc('0x28'),'sectionId':_0x553ed6['id']},{})[_0x35fc('0x26')](function(){return _0x3e2961;});}else{return _0x3e2961;}})['catch'](function(_0x4f024c){logger[_0x35fc('0x2a')](_0x35fc('0x55'),_0x4f024c);throw _0x4f024c;});}return _0x3e2961;})[_0x35fc('0x26')](respondWithResult(_0xf2ca20,0xc9))[_0x35fc('0x49')](handleError(_0xf2ca20,null));};exports['update']=function(_0x467980,_0x13281f){if(_0x467980['body']['id']){delete _0x467980[_0x35fc('0x4b')]['id'];}return db[_0x35fc('0x2f')]['find']({'where':{'id':_0x467980[_0x35fc('0x48')]['id']}})[_0x35fc('0x26')](handleEntityNotFound(_0x13281f,null))[_0x35fc('0x26')](saveUpdates(_0x467980[_0x35fc('0x4b')],null))['then'](respondWithResult(_0x13281f,null))['catch'](handleError(_0x13281f,null));};exports['destroy']=function(_0x240338,_0x2ea8d6){return db['AnalyticDefaultReport'][_0x35fc('0x51')]({'where':{'id':_0x240338[_0x35fc('0x48')]['id']}})[_0x35fc('0x26')](handleEntityNotFound(_0x2ea8d6,null))[_0x35fc('0x26')](removeEntity(_0x2ea8d6,null))[_0x35fc('0x49')](handleError(_0x2ea8d6,null));};exports['preview']=function(_0x2d9d45,_0x757aa6){var _0x39d470=0xa;var _0x509e77=[_0x35fc('0x56'),_0x35fc('0x57'),'right_join',_0x35fc('0x58')];var _0x164c7b={'SUM':_0x35fc('0x59'),'COUNT':_0x35fc('0x5a'),'COUNT DISTINCT':_0x35fc('0x5b'),'MAX':_0x35fc('0x5c'),'MIN':_0x35fc('0x5d'),'AVG':_0x35fc('0x5e'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x35fc('0x5f'),'GROUP_CONCAT DESC':_0x35fc('0x60')};var _0x303927={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x35fc('0x61'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x23b54f=function(_0xb1c68a){return!_[_0x35fc('0x62')]([_0x35fc('0x63'),_0x35fc('0x64'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0xb1c68a);};var _0x5353ea=function(_0x4faef4){if(!_0x4faef4||!_0x4faef4['rules'][_0x35fc('0x3b')]){return'';}for(var _0x44250b='(',_0xd470e8=0x0;_0xd470e8<_0x4faef4[_0x35fc('0x65')]['length'];_0xd470e8+=0x1){_0xd470e8>0x0&&(_0x44250b+='\x20'+_0x4faef4[_0x35fc('0x66')]+'\x20');_0x44250b+=_0x4faef4[_0x35fc('0x65')][_0xd470e8][_0x35fc('0x67')]?_0x5353ea(_0x4faef4[_0x35fc('0x65')][_0xd470e8][_0x35fc('0x67')]):_0x4faef4[_0x35fc('0x65')][_0xd470e8][_0x35fc('0x68')]+'\x20'+_0x4faef4[_0x35fc('0x65')][_0xd470e8][_0x35fc('0x69')]+(_0x23b54f(_0x4faef4['rules'][_0xd470e8][_0x35fc('0x69')])?'\x20'+_0x4faef4['rules'][_0xd470e8][_0x35fc('0x6a')]:'');}return _0x44250b+')';};var _0x9029e3={'where':{'id':_0x2d9d45['params']['id']}},_0x2ac8e1,_0x2bc76c,_0x4bdde7,_0x465c14,_0x4af592;_0x9029e3=_['merge']({},_0x9029e3,_0x2d9d45[_0x35fc('0x43')]);return db['AnalyticDefaultReport'][_0x35fc('0x51')](_0x9029e3)['then'](function(_0x11717){if(_0x11717){_0x2ac8e1=_0x11717;return _0x11717['getFields']();}return null;})[_0x35fc('0x26')](function(_0x455b84){if(_0x455b84){if(!_0x455b84[_0x35fc('0x3b')]){throw new db[(_0x35fc('0x6b'))]['ValidationErrorItem'](_0x35fc('0x6c'),0x193);}_0x2bc76c=_0x455b84;return db[_0x35fc('0x6d')][_0x35fc('0x46')]({'raw':!![]});}return null;})['then'](function(_0x3aa7fa){if(_0x3aa7fa){_0x4bdde7=_[_0x35fc('0x6e')](_0x3aa7fa,'id');var _0x37764b;var _0x3c1b56=squel[_0x35fc('0x6f')]();_0x3c1b56[_0x35fc('0x70')](_0x2ac8e1[_0x35fc('0x71')]);for(var _0x4464d5=0x0;_0x4464d5<_0x2bc76c['length'];_0x4464d5+=0x1){_0x37764b=_0x2bc76c[_0x4464d5][_0x35fc('0x72')]?_0x4bdde7[_0x2bc76c[_0x4464d5][_0x35fc('0x72')]][_0x35fc('0x73')]:_0x2bc76c[_0x4464d5]['field'];_0x37764b=_0x2bc76c[_0x4464d5][_0x35fc('0x74')]?_[_0x35fc('0x75')](_0x164c7b[_0x2bc76c[_0x4464d5]['function']],'%s',_0x37764b):_0x37764b;_0x37764b=_0x2bc76c[_0x4464d5]['format']?_[_0x35fc('0x75')](_0x303927[_0x2bc76c[_0x4464d5]['format']],'%s',_0x37764b):_0x37764b;if(_0x2bc76c[_0x4464d5][_0x35fc('0x76')]){_0x3c1b56[_0x35fc('0x67')](_0x37764b);}_0x2bc76c[_0x4464d5][_0x35fc('0x77')]&&_0x3c1b56[_0x35fc('0x78')](_0x37764b,_0x2bc76c[_0x4464d5][_0x35fc('0x77')]===_0x35fc('0x79')?![]:!![]);_0x3c1b56[_0x35fc('0x68')](_0x37764b,_0x2bc76c[_0x4464d5][_0x35fc('0x7a')]||_0x37764b);}if(_0x2ac8e1[_0x35fc('0x7b')]){_0x2ac8e1[_0x35fc('0x7b')]=JSON[_0x35fc('0x7c')](_0x2ac8e1[_0x35fc('0x7b')]);for(var _0x29f2b9=0x0;_0x29f2b9<_0x2ac8e1[_0x35fc('0x7b')][_0x35fc('0x3b')];_0x29f2b9+=0x1){if(_0x2ac8e1[_0x35fc('0x7b')][_0x29f2b9][_0x35fc('0x32')]&&_[_0x35fc('0x62')](_0x509e77,_0x2ac8e1[_0x35fc('0x7b')][_0x29f2b9][_0x35fc('0x32')])&&_0x2ac8e1['joins'][_0x29f2b9][_0x35fc('0x7d')]&&_0x2ac8e1['joins'][_0x29f2b9][_0x35fc('0x7e')]&&_0x2ac8e1[_0x35fc('0x7b')][_0x29f2b9][_0x35fc('0x7f')]){_0x3c1b56[_0x2ac8e1[_0x35fc('0x7b')][_0x29f2b9][_0x35fc('0x32')]](_0x2ac8e1[_0x35fc('0x7b')][_0x29f2b9][_0x35fc('0x7e')],null,util[_0x35fc('0x80')](_0x35fc('0x81'),_0x2ac8e1[_0x35fc('0x71')],_0x2ac8e1[_0x35fc('0x7b')][_0x29f2b9]['parentKey'],_0x2ac8e1[_0x35fc('0x7b')][_0x29f2b9][_0x35fc('0x7e')],_0x2ac8e1[_0x35fc('0x7b')][_0x29f2b9][_0x35fc('0x7f')]));}}}if(_0x2ac8e1[_0x35fc('0x82')]){_0x2ac8e1[_0x35fc('0x82')]=JSON['parse'](_0x2ac8e1[_0x35fc('0x82')]);_0x3c1b56[_0x35fc('0x3e')](_0x5353ea(_0x2ac8e1[_0x35fc('0x82')][_0x35fc('0x67')]));}_0x4af592=_0x3c1b56[_0x35fc('0x83')]();_0x3c1b56[_0x35fc('0x1d')](_0x39d470);_0x3c1b56[_0x35fc('0x1c')](0x0);logger[_0x35fc('0x84')](_0x35fc('0x85'),_0x3c1b56['toString']());return dbH[_0x35fc('0x86')]['query'](_0x3c1b56[_0x35fc('0x87')](),{'type':dbH[_0x35fc('0x86')]['QueryTypes'][_0x35fc('0x88')]});}})[_0x35fc('0x26')](respondWithResult(_0x757aa6,null))[_0x35fc('0x49')](handleError(_0x757aa6,null));};function runReport(_0x4274d6,_0x4026cc,_0x1a765f){var _0x42f87e=_0x4026cc[_0x35fc('0x2c')];var _0x25ee61=0xa;var _0x5806bf=['join','left_join','right_join',_0x35fc('0x58')];var _0x23cf84={'SUM':_0x35fc('0x59'),'COUNT':_0x35fc('0x5a'),'COUNT DISTINCT':_0x35fc('0x5b'),'MAX':'MAX(%s)','MIN':_0x35fc('0x5d'),'AVG':_0x35fc('0x5e'),'GROUP_CONCAT':_0x35fc('0x89'),'GROUP_CONCAT ASC':_0x35fc('0x5f'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x15e936={'SEC_TO_TIME':_0x35fc('0x8a'),'DATE':_0x35fc('0x61'),'HOUR':'HOUR(%s)','ROUND':_0x35fc('0x8b'),'UNIX_TIMESTAMP':_0x35fc('0x8c')};var _0x319033=function(_0x9fe765){return!_[_0x35fc('0x62')]([_0x35fc('0x63'),_0x35fc('0x64'),_0x35fc('0x8d'),'IS\x20NOT\x20EMPTY'],_0x9fe765);};var _0x2faff7=function(_0xa2c5f8){if(!_0xa2c5f8||!_0xa2c5f8[_0x35fc('0x65')][_0x35fc('0x3b')]){return'';}for(var _0x221c5b='(',_0x1fcd36=0x0;_0x1fcd36<_0xa2c5f8['rules'][_0x35fc('0x3b')];_0x1fcd36+=0x1){_0x1fcd36>0x0&&(_0x221c5b+='\x20'+_0xa2c5f8['operator']+'\x20');_0x221c5b+=_0xa2c5f8['rules'][_0x1fcd36][_0x35fc('0x67')]?_0x2faff7(_0xa2c5f8['rules'][_0x1fcd36][_0x35fc('0x67')]):_0xa2c5f8[_0x35fc('0x65')][_0x1fcd36][_0x35fc('0x68')]+'\x20'+_0xa2c5f8['rules'][_0x1fcd36][_0x35fc('0x69')]+(_0x319033(_0xa2c5f8[_0x35fc('0x65')][_0x1fcd36][_0x35fc('0x69')])?'\x20'+_0xa2c5f8[_0x35fc('0x65')][_0x1fcd36][_0x35fc('0x6a')]:'');}return _0x221c5b+')';};var _0x5abdf9={'where':{'id':_0x4274d6['id']}},_0x5512f6,_0x487cb5,_0x23b261,_0x4c742c,_0x2fae26;_0x5abdf9=_[_0x35fc('0x40')]({},_0x5abdf9,_0x1a765f);return db[_0x35fc('0x2f')][_0x35fc('0x51')](_0x5abdf9)['then'](function(_0x28e80d){if(_0x28e80d){_0x5512f6=_0x28e80d;return _0x28e80d[_0x35fc('0x8e')]();}return null;})[_0x35fc('0x26')](function(_0x47c507){if(_0x47c507){if(!_0x47c507[_0x35fc('0x3b')]){throw new db[(_0x35fc('0x6b'))][(_0x35fc('0x8f'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x487cb5=_0x47c507;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x35fc('0x26')](function(_0x2edb1b){if(_0x2edb1b){_0x23b261=_[_0x35fc('0x6e')](_0x2edb1b,'id');var _0x3858a9;var _0x4859be=squel[_0x35fc('0x6f')]();_0x4859be[_0x35fc('0x70')](_0x5512f6['table']);for(var _0x5849a0=0x0;_0x5849a0<_0x487cb5[_0x35fc('0x3b')];_0x5849a0+=0x1){_0x3858a9=_0x487cb5[_0x5849a0][_0x35fc('0x72')]?_0x23b261[_0x487cb5[_0x5849a0][_0x35fc('0x72')]]['metric']:_0x487cb5[_0x5849a0]['field'];_0x3858a9=_0x487cb5[_0x5849a0][_0x35fc('0x74')]?_[_0x35fc('0x75')](_0x23cf84[_0x487cb5[_0x5849a0]['function']],'%s',_0x3858a9):_0x3858a9;_0x3858a9=_0x487cb5[_0x5849a0][_0x35fc('0x80')]?_[_0x35fc('0x75')](_0x15e936[_0x487cb5[_0x5849a0][_0x35fc('0x80')]],'%s',_0x3858a9):_0x3858a9;if(_0x487cb5[_0x5849a0]['groupBy']){_0x4859be[_0x35fc('0x67')](_0x3858a9);}_0x487cb5[_0x5849a0][_0x35fc('0x77')]&&_0x4859be[_0x35fc('0x78')](_0x3858a9,_0x487cb5[_0x5849a0][_0x35fc('0x77')]==='DESC'?![]:!![]);_0x4859be[_0x35fc('0x68')](_0x3858a9,_0x487cb5[_0x5849a0][_0x35fc('0x7a')]||_0x3858a9);}if(_0x5512f6[_0x35fc('0x7b')]){_0x5512f6['joins']=JSON[_0x35fc('0x7c')](_0x5512f6[_0x35fc('0x7b')]);for(var _0x425f72=0x0;_0x425f72<_0x5512f6['joins'][_0x35fc('0x3b')];_0x425f72+=0x1){if(_0x5512f6[_0x35fc('0x7b')][_0x425f72]['type']&&_[_0x35fc('0x62')](_0x5806bf,_0x5512f6[_0x35fc('0x7b')][_0x425f72][_0x35fc('0x32')])&&_0x5512f6[_0x35fc('0x7b')][_0x425f72][_0x35fc('0x7d')]&&_0x5512f6[_0x35fc('0x7b')][_0x425f72][_0x35fc('0x7e')]&&_0x5512f6[_0x35fc('0x7b')][_0x425f72][_0x35fc('0x7f')]){_0x4859be[_0x5512f6['joins'][_0x425f72][_0x35fc('0x32')]](_0x5512f6[_0x35fc('0x7b')][_0x425f72][_0x35fc('0x7e')],null,util[_0x35fc('0x80')]('%s.%s\x20=\x20%s.%s',_0x5512f6[_0x35fc('0x71')],_0x5512f6[_0x35fc('0x7b')][_0x425f72][_0x35fc('0x7d')],_0x5512f6[_0x35fc('0x7b')][_0x425f72][_0x35fc('0x7e')],_0x5512f6[_0x35fc('0x7b')][_0x425f72][_0x35fc('0x7f')]));}}}if(_0x5512f6[_0x35fc('0x82')]){_0x5512f6['conditions']=JSON['parse'](_0x5512f6[_0x35fc('0x82')]);_0x4859be[_0x35fc('0x3e')](_0x2faff7(_0x5512f6[_0x35fc('0x82')]['group']));}_0x2fae26=_0x4859be[_0x35fc('0x83')]();_0x4859be[_0x35fc('0x1d')](_0x25ee61);_0x4859be[_0x35fc('0x1c')](0x0);return;}})[_0x35fc('0x26')](function(){if(_0x4026cc['output']==='web'){return null;}var _0x379650=_['merge'](_0x4026cc,{'name':_0x4026cc[_0x35fc('0x90')]||_0x4026cc[_0x35fc('0x2c')]||_0x5512f6['name'],'basename':_0x42f87e,'savename':util['format'](_0x35fc('0x91'),_0x4026cc[_0x35fc('0x2c')]||_0x5512f6[_0x35fc('0x2c')],require('randomstring')[_0x35fc('0x92')](0x4),_0x4026cc[_0x35fc('0x93')]||_0x35fc('0x94')),'reportId':_0x5512f6['id'],'reportType':'default'});return db[_0x35fc('0x95')][_0x35fc('0x4a')](_0x379650,{'raw':!![]});})[_0x35fc('0x26')](function(_0x328e90){if(_0x5512f6['table']===_0x35fc('0x96')){_0x2fae26[_0x35fc('0x3e')](_0x5512f6[_0x35fc('0x71')]+_0x35fc('0x97'),_0x4026cc[_0x35fc('0x98')],_0x4026cc[_0x35fc('0x99')]);}else{_0x2fae26['where'](_0x5512f6[_0x35fc('0x71')]+_0x35fc('0x9a'),_0x4026cc['startDate'],_0x4026cc[_0x35fc('0x99')]);}if(_0x328e90){logger[_0x35fc('0x9b')]('Run\x20Query:',_0x2fae26[_0x35fc('0x87')]());require(_0x35fc('0x9c'))[_0x35fc('0x9d')](path[_0x35fc('0x56')](__dirname,_0x35fc('0x9e'),_0x328e90['output']),[_0x328e90['id'],_0x2fae26[_0x35fc('0x87')](),path[_0x35fc('0x56')](__dirname,_0x35fc('0x9f'),_0x328e90['savename']),_0x42f87e]);return _0x328e90;}else{var _0x1224cd=squel['select']();_0x1224cd['from']('('+_0x2fae26[_0x35fc('0x87')]()+')',_0x35fc('0xa0'));_0x1224cd[_0x35fc('0x68')](_0x35fc('0xa1'),_0x35fc('0x1f'));_0x2fae26['limit'](_0x4026cc[_0x35fc('0x1d')]||_0x25ee61);_0x2fae26[_0x35fc('0x1c')](_0x4026cc[_0x35fc('0x1c')]||0x0);return dbH['sequelize'][_0x35fc('0x35')](_0x1224cd[_0x35fc('0x87')](),{'type':dbH[_0x35fc('0x86')][_0x35fc('0xa2')][_0x35fc('0x88')]})['then'](function(_0x1a2d73){if(!_0x1a2d73[_0x35fc('0x3b')]){_0x4c742c=0x0;}else{_0x4c742c=_0x1a2d73[0x0]['count']||0x0;}return dbH['sequelize'][_0x35fc('0x35')](_0x2fae26[_0x35fc('0x87')](),{'type':dbH[_0x35fc('0x86')][_0x35fc('0xa2')][_0x35fc('0x88')]});})[_0x35fc('0x26')](function(_0x8c80ca){return{'rows':_0x8c80ca||[],'count':_0x4c742c};});}});}exports['run']=function(_0x5dc286,_0x146ce1){return runReport(_0x5dc286[_0x35fc('0x48')],_0x5dc286[_0x35fc('0x35')],_0x5dc286[_0x35fc('0x43')])[_0x35fc('0x26')](respondWithResult(_0x146ce1,null))['catch'](handleError(_0x146ce1,null));};exports['runReport']=runReport;exports[_0x35fc('0x35')]=function(_0x2451f2,_0x3fff79){var _0x1c6ce9=0xa;var _0x4b2079=['join',_0x35fc('0x57'),_0x35fc('0xa3'),_0x35fc('0x58')];var _0xd46d64={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x35fc('0x5b'),'MAX':_0x35fc('0x5c'),'MIN':'MIN(%s)','AVG':_0x35fc('0x5e'),'GROUP_CONCAT':_0x35fc('0x89'),'GROUP_CONCAT ASC':_0x35fc('0x5f'),'GROUP_CONCAT DESC':_0x35fc('0x60')};var _0x274337={'SEC_TO_TIME':_0x35fc('0x8a'),'DATE':_0x35fc('0x61'),'HOUR':_0x35fc('0xa4'),'ROUND':_0x35fc('0x8b'),'UNIX_TIMESTAMP':_0x35fc('0x8c')};var _0x19ae76=function(_0x366a3b){return!_[_0x35fc('0x62')]([_0x35fc('0x63'),_0x35fc('0x64'),_0x35fc('0x8d'),'IS\x20NOT\x20EMPTY'],_0x366a3b);};var _0x345026=function(_0x553f7d){if(!_0x553f7d||!_0x553f7d[_0x35fc('0x65')]['length']){return'';}for(var _0x5aa072='(',_0x3c96ef=0x0;_0x3c96ef<_0x553f7d[_0x35fc('0x65')][_0x35fc('0x3b')];_0x3c96ef+=0x1){_0x3c96ef>0x0&&(_0x5aa072+='\x20'+_0x553f7d['operator']+'\x20');_0x5aa072+=_0x553f7d[_0x35fc('0x65')][_0x3c96ef][_0x35fc('0x67')]?_0x345026(_0x553f7d[_0x35fc('0x65')][_0x3c96ef][_0x35fc('0x67')]):_0x553f7d[_0x35fc('0x65')][_0x3c96ef][_0x35fc('0x68')]+'\x20'+_0x553f7d['rules'][_0x3c96ef]['condition']+(_0x19ae76(_0x553f7d[_0x35fc('0x65')][_0x3c96ef]['condition'])?'\x20'+_0x553f7d['rules'][_0x3c96ef][_0x35fc('0x6a')]:'');}return _0x5aa072+')';};var _0x48b826={'where':{'id':_0x2451f2[_0x35fc('0x48')]['id']}},_0x556f9a,_0x5ae83f,_0x450769,_0x5d461c,_0x355154;_0x48b826=_[_0x35fc('0x40')]({},_0x48b826,_0x2451f2[_0x35fc('0x43')]);return db[_0x35fc('0x2f')][_0x35fc('0x51')](_0x48b826)['then'](function(_0x522ff2){if(_0x522ff2){_0x556f9a=_0x522ff2;return _0x522ff2[_0x35fc('0x8e')]();}return null;})['then'](function(_0x233c94){if(_0x233c94){if(!_0x233c94[_0x35fc('0x3b')]){throw new db['Sequelize']['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x5ae83f=_0x233c94;return db[_0x35fc('0x6d')][_0x35fc('0x46')]({'raw':!![]});}return null;})[_0x35fc('0x26')](function(_0x135e18){if(_0x135e18){_0x450769=_[_0x35fc('0x6e')](_0x135e18,'id');var _0x28525f;var _0x9116b1=squel[_0x35fc('0x6f')]();_0x9116b1['from'](_0x556f9a['table']);for(var _0x5cefdb=0x0;_0x5cefdb<_0x5ae83f['length'];_0x5cefdb+=0x1){_0x28525f=_0x5ae83f[_0x5cefdb][_0x35fc('0x72')]?_0x450769[_0x5ae83f[_0x5cefdb]['MetricId']][_0x35fc('0x73')]:_0x5ae83f[_0x5cefdb]['field'];_0x28525f=_0x5ae83f[_0x5cefdb][_0x35fc('0x74')]?_[_0x35fc('0x75')](_0xd46d64[_0x5ae83f[_0x5cefdb]['function']],'%s',_0x28525f):_0x28525f;_0x28525f=_0x5ae83f[_0x5cefdb]['format']?_[_0x35fc('0x75')](_0x274337[_0x5ae83f[_0x5cefdb][_0x35fc('0x80')]],'%s',_0x28525f):_0x28525f;if(_0x5ae83f[_0x5cefdb][_0x35fc('0x76')]){_0x9116b1[_0x35fc('0x67')](_0x28525f);}_0x5ae83f[_0x5cefdb][_0x35fc('0x77')]&&_0x9116b1['order'](_0x28525f,_0x5ae83f[_0x5cefdb]['orderBy']===_0x35fc('0x79')?![]:!![]);_0x9116b1['field'](_0x28525f,_0x5ae83f[_0x5cefdb][_0x35fc('0x7a')]||_0x28525f);}if(_0x556f9a['joins']){_0x556f9a[_0x35fc('0x7b')]=JSON[_0x35fc('0x7c')](_0x556f9a[_0x35fc('0x7b')]);for(var _0x10e30e=0x0;_0x10e30e<_0x556f9a['joins'][_0x35fc('0x3b')];_0x10e30e+=0x1){if(_0x556f9a['joins'][_0x10e30e][_0x35fc('0x32')]&&_['includes'](_0x4b2079,_0x556f9a['joins'][_0x10e30e][_0x35fc('0x32')])&&_0x556f9a['joins'][_0x10e30e][_0x35fc('0x7d')]&&_0x556f9a[_0x35fc('0x7b')][_0x10e30e][_0x35fc('0x7e')]&&_0x556f9a[_0x35fc('0x7b')][_0x10e30e][_0x35fc('0x7f')]){_0x9116b1[_0x556f9a[_0x35fc('0x7b')][_0x10e30e][_0x35fc('0x32')]](_0x556f9a[_0x35fc('0x7b')][_0x10e30e][_0x35fc('0x7e')],null,util['format'](_0x35fc('0x81'),_0x556f9a[_0x35fc('0x71')],_0x556f9a[_0x35fc('0x7b')][_0x10e30e][_0x35fc('0x7d')],_0x556f9a[_0x35fc('0x7b')][_0x10e30e][_0x35fc('0x7e')],_0x556f9a[_0x35fc('0x7b')][_0x10e30e][_0x35fc('0x7f')]));}}}if(_0x556f9a['conditions']){_0x556f9a['conditions']=JSON['parse'](_0x556f9a['conditions']);_0x9116b1['where'](_0x345026(_0x556f9a[_0x35fc('0x82')][_0x35fc('0x67')]));}_0x355154=_0x9116b1[_0x35fc('0x83')]();_0x9116b1[_0x35fc('0x1d')](_0x1c6ce9);_0x9116b1[_0x35fc('0x1c')](0x0);logger['debug'](_0x35fc('0x85'),_0x9116b1[_0x35fc('0x87')]());return dbH[_0x35fc('0x86')][_0x35fc('0x35')](_0x9116b1[_0x35fc('0x87')](),{'type':dbH['sequelize'][_0x35fc('0xa2')][_0x35fc('0x88')]});}})[_0x35fc('0x26')](function(){return{'sql':_0x355154['toString']()};})[_0x35fc('0x26')](respondWithResult(_0x3fff79,null))[_0x35fc('0x49')](handleError(_0x3fff79,null));};
\ No newline at end of file
+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(_0x478087,_0x109fb2){var _0x54bff1=function(_0x4589b3){while(--_0x4589b3){_0x478087['push'](_0x478087['shift']());}};_0x54bff1(++_0x109fb2);}(_0xba34,0x119));var _0x4ba3=function(_0x484a5b,_0x5f4ef7){_0x484a5b=_0x484a5b-0x0;var _0xd90ab8=_0xba34[_0x484a5b];return _0xd90ab8;};'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
index 6d80280..35d0201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11bc=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','lodash','util'];(function(_0x182e98,_0x4f29b2){var _0x5e9d50=function(_0x4971a7){while(--_0x4971a7){_0x182e98['push'](_0x182e98['shift']());}};_0x5e9d50(++_0x4f29b2);}(_0x11bc,0x191));var _0xc11b=function(_0x50fe49,_0x550ebe){_0x50fe49=_0x50fe49-0x0;var _0x416d2f=_0x11bc[_0x50fe49];return _0x416d2f;};'use strict';var _=require(_0xc11b('0x0'));var util=require(_0xc11b('0x1'));var logger=require(_0xc11b('0x2'))('api');var moment=require(_0xc11b('0x3'));var BPromise=require(_0xc11b('0x4'));var rp=require(_0xc11b('0x5'));var fs=require('fs');var path=require(_0xc11b('0x6'));var rimraf=require(_0xc11b('0x7'));var config=require(_0xc11b('0x8'));var attributes=require(_0xc11b('0x9'));module[_0xc11b('0xa')]=function(_0x438a95,_0x5650ba){return _0x438a95[_0xc11b('0xb')](_0xc11b('0xc'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x61cf=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','analytics_default_reports'];(function(_0xe480f0,_0x4c0dc1){var _0x57b198=function(_0x4d8304){while(--_0x4d8304){_0xe480f0['push'](_0xe480f0['shift']());}};_0x57b198(++_0x4c0dc1);}(_0x61cf,0x17a));var _0xf61c=function(_0x184bb8,_0x4044d4){_0x184bb8=_0x184bb8-0x0;var _0x1523d7=_0x61cf[_0x184bb8];return _0x1523d7;};'use strict';var _=require(_0xf61c('0x0'));var util=require('util');var logger=require(_0xf61c('0x1'))(_0xf61c('0x2'));var moment=require(_0xf61c('0x3'));var BPromise=require(_0xf61c('0x4'));var rp=require(_0xf61c('0x5'));var fs=require('fs');var path=require(_0xf61c('0x6'));var rimraf=require(_0xf61c('0x7'));var config=require(_0xf61c('0x8'));var attributes=require(_0xf61c('0x9'));module[_0xf61c('0xa')]=function(_0x9b94c5,_0x66b224){return _0x9b94c5[_0xf61c('0xb')](_0xf61c('0xc'),attributes,{'tableName':_0xf61c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e0406c..15b32af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf364=['code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0xf364,0x1df));var _0x4f36=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xf364[_0x580576];return _0x3f55a0;};'use strict';var _=require(_0x4f36('0x0'));var util=require('util');var moment=require(_0x4f36('0x1'));var BPromise=require(_0x4f36('0x2'));var rs=require(_0x4f36('0x3'));var fs=require('fs');var Redis=require(_0x4f36('0x4'));var db=require(_0x4f36('0x5'))['db'];var utils=require(_0x4f36('0x6'));var logger=require('../../config/logger')(_0x4f36('0x7'));var config=require(_0x4f36('0x8'));var jayson=require(_0x4f36('0x9'));var client=jayson[_0x4f36('0xa')][_0x4f36('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x884e31,_0x19addd,_0x5980e7){return new BPromise(function(_0x4350cb,_0x22bcdb){return client[_0x4f36('0xc')](_0x884e31,_0x5980e7)[_0x4f36('0xd')](function(_0x28aced){logger[_0x4f36('0xe')](_0x4f36('0xf'),_0x19addd,_0x4f36('0x10'));logger[_0x4f36('0x11')](_0x4f36('0x12'),_0x19addd,_0x4f36('0x10'),JSON[_0x4f36('0x13')](_0x28aced));if(_0x28aced[_0x4f36('0x14')]){if(_0x28aced[_0x4f36('0x14')][_0x4f36('0x15')]===0x1f4){logger[_0x4f36('0x14')](_0x4f36('0xf'),_0x19addd,_0x28aced[_0x4f36('0x14')][_0x4f36('0x16')]);return _0x22bcdb(_0x28aced[_0x4f36('0x14')][_0x4f36('0x16')]);}logger[_0x4f36('0x14')](_0x4f36('0xf'),_0x19addd,_0x28aced[_0x4f36('0x14')][_0x4f36('0x16')]);return _0x4350cb(_0x28aced[_0x4f36('0x14')][_0x4f36('0x16')]);}else{logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x19addd,_0x4f36('0x10'));_0x4350cb(_0x28aced[_0x4f36('0x17')]['message']);}})[_0x4f36('0x18')](function(_0x55448c){logger[_0x4f36('0x14')](_0x4f36('0xf'),_0x19addd,_0x55448c);_0x22bcdb(_0x55448c);});});}
\ No newline at end of file
+var _0x224b=['message','result','catch','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x342501,_0xd9babb){var _0x45394f=function(_0x1096c9){while(--_0x1096c9){_0x342501['push'](_0x342501['shift']());}};_0x45394f(++_0xd9babb);}(_0x224b,0x1bc));var _0xb224=function(_0x1d6dc7,_0x28f730){_0x1d6dc7=_0x1d6dc7-0x0;var _0xc51c3=_0x224b[_0x1d6dc7];return _0xc51c3;};'use strict';var _=require('lodash');var util=require(_0xb224('0x0'));var moment=require(_0xb224('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb224('0x2'));var db=require(_0xb224('0x3'))['db'];var utils=require(_0xb224('0x4'));var logger=require(_0xb224('0x5'))('rpc');var config=require(_0xb224('0x6'));var jayson=require(_0xb224('0x7'));var client=jayson[_0xb224('0x8')][_0xb224('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x20bb2c,_0x3beb10,_0x4c8834){return new BPromise(function(_0x542b47,_0x324620){return client[_0xb224('0xa')](_0x20bb2c,_0x4c8834)[_0xb224('0xb')](function(_0x40d076){logger[_0xb224('0xc')](_0xb224('0xd'),_0x3beb10,_0xb224('0xe'));logger['debug'](_0xb224('0xf'),_0x3beb10,_0xb224('0xe'),JSON[_0xb224('0x10')](_0x40d076));if(_0x40d076['error']){if(_0x40d076[_0xb224('0x11')]['code']===0x1f4){logger[_0xb224('0x11')](_0xb224('0xd'),_0x3beb10,_0x40d076['error'][_0xb224('0x12')]);return _0x324620(_0x40d076[_0xb224('0x11')][_0xb224('0x12')]);}logger[_0xb224('0x11')](_0xb224('0xd'),_0x3beb10,_0x40d076[_0xb224('0x11')][_0xb224('0x12')]);return _0x542b47(_0x40d076[_0xb224('0x11')]['message']);}else{logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x3beb10,'request\x20sent');_0x542b47(_0x40d076[_0xb224('0x13')][_0xb224('0x12')]);}})[_0xb224('0x14')](function(_0x50c420){logger[_0xb224('0x11')](_0xb224('0xd'),_0x3beb10,_0x50c420);_0x324620(_0x50c420);});});}
\ No newline at end of file
index 748da30..952e05b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf3e=['post','create','update','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','./analyticDefaultReport.controller','isAuthenticated','get','show','/:id/preview','/:id/run','run','/:id/query','query'];(function(_0x49d41c,_0x2bdc35){var _0xb64c5f=function(_0x28f535){while(--_0x28f535){_0x49d41c['push'](_0x49d41c['shift']());}};_0xb64c5f(++_0x2bdc35);}(_0xcf3e,0x1b9));var _0xecf3=function(_0x37f649,_0xb0c292){_0x37f649=_0x37f649-0x0;var _0x1c29d8=_0xcf3e[_0x37f649];return _0x1c29d8;};'use strict';var multer=require(_0xecf3('0x0'));var util=require(_0xecf3('0x1'));var path=require(_0xecf3('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xecf3('0x3')]();var fs_extra=require(_0xecf3('0x4'));var auth=require(_0xecf3('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xecf3('0x6'));router['get']('/',auth[_0xecf3('0x7')](),controller['index']);router[_0xecf3('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xecf3('0x9')]);router[_0xecf3('0x8')](_0xecf3('0xa'),auth[_0xecf3('0x7')](),controller['preview']);router[_0xecf3('0x8')](_0xecf3('0xb'),auth[_0xecf3('0x7')](),controller[_0xecf3('0xc')]);router[_0xecf3('0x8')](_0xecf3('0xd'),auth[_0xecf3('0x7')](),controller[_0xecf3('0xe')]);router[_0xecf3('0xf')]('/',auth[_0xecf3('0x7')](),controller[_0xecf3('0x10')]);router['put']('/:id',auth[_0xecf3('0x7')](),controller[_0xecf3('0x11')]);router['delete']('/:id',auth[_0xecf3('0x7')](),controller[_0xecf3('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x3fab=['update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticDefaultReport.controller','get','index','/:id','show','/:id/preview','preview','/:id/run','isAuthenticated','run','/:id/query','post','create','put'];(function(_0x5dbaa7,_0x1f6d4a){var _0x481319=function(_0x116e27){while(--_0x116e27){_0x5dbaa7['push'](_0x5dbaa7['shift']());}};_0x481319(++_0x1f6d4a);}(_0x3fab,0x1a4));var _0xb3fa=function(_0x25e296,_0x25daa0){_0x25e296=_0x25e296-0x0;var _0x1d799a=_0x3fab[_0x25e296];return _0x1d799a;};'use strict';var multer=require(_0xb3fa('0x0'));var util=require(_0xb3fa('0x1'));var path=require(_0xb3fa('0x2'));var timeout=require('connect-timeout');var express=require(_0xb3fa('0x3'));var router=express[_0xb3fa('0x4')]();var fs_extra=require(_0xb3fa('0x5'));var auth=require(_0xb3fa('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb3fa('0x7'));var controller=require(_0xb3fa('0x8'));router[_0xb3fa('0x9')]('/',auth['isAuthenticated'](),controller[_0xb3fa('0xa')]);router['get'](_0xb3fa('0xb'),auth['isAuthenticated'](),controller[_0xb3fa('0xc')]);router[_0xb3fa('0x9')](_0xb3fa('0xd'),auth['isAuthenticated'](),controller[_0xb3fa('0xe')]);router[_0xb3fa('0x9')](_0xb3fa('0xf'),auth[_0xb3fa('0x10')](),controller[_0xb3fa('0x11')]);router[_0xb3fa('0x9')](_0xb3fa('0x12'),auth['isAuthenticated'](),controller['query']);router[_0xb3fa('0x13')]('/',auth[_0xb3fa('0x10')](),controller[_0xb3fa('0x14')]);router[_0xb3fa('0x15')](_0xb3fa('0xb'),auth[_0xb3fa('0x10')](),controller[_0xb3fa('0x16')]);router[_0xb3fa('0x17')](_0xb3fa('0xb'),auth[_0xb3fa('0x10')](),controller[_0xb3fa('0x18')]);module[_0xb3fa('0x19')]=router;
\ No newline at end of file
index 80561b0..09cb850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf30a=['pdf','xlsx','DATE','Loading','manual','scheduled','INTEGER','UNSIGNED','sequelize','STRING','ENUM','csv'];(function(_0x454f50,_0x620d0e){var _0x3cdeb1=function(_0x28cc3e){while(--_0x28cc3e){_0x454f50['push'](_0x454f50['shift']());}};_0x3cdeb1(++_0x620d0e);}(_0xf30a,0x80));var _0xaf30=function(_0x8f3973,_0x236bfc){_0x8f3973=_0x8f3973-0x0;var _0x1b3c76=_0xf30a[_0x8f3973];return _0x1b3c76;};'use strict';var Sequelize=require(_0xaf30('0x0'));var moment=require('moment');module['exports']={'name':{'type':Sequelize[_0xaf30('0x1')],'allowNull':![]},'basename':{'type':Sequelize[_0xaf30('0x1')],'allowNull':![]},'output':{'type':Sequelize[_0xaf30('0x2')](_0xaf30('0x3'),_0xaf30('0x4'),_0xaf30('0x5')),'allowNull':![],'defaultValue':_0xaf30('0x3')},'savename':{'type':Sequelize[_0xaf30('0x1')],'allowNull':![]},'startDate':{'type':Sequelize[_0xaf30('0x6')]},'endDate':{'type':Sequelize[_0xaf30('0x6')]},'status':{'type':Sequelize[_0xaf30('0x1')],'defaultValue':_0xaf30('0x7')},'type':{'type':Sequelize['ENUM'](_0xaf30('0x8'),_0xaf30('0x9')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0xaf30('0xa')](0xb)[_0xaf30('0xb')]},'reportType':{'type':Sequelize[_0xaf30('0x1')]}};
\ No newline at end of file
+var _0xbd50=['moment','exports','STRING','ENUM','csv','xlsx','DATE','Loading','manual','UNSIGNED','sequelize'];(function(_0x4099ee,_0x38495a){var _0x1b7bfc=function(_0x5f5388){while(--_0x5f5388){_0x4099ee['push'](_0x4099ee['shift']());}};_0x1b7bfc(++_0x38495a);}(_0xbd50,0x1e3));var _0x0bd5=function(_0x55206c,_0x500d88){_0x55206c=_0x55206c-0x0;var _0x1fc57=_0xbd50[_0x55206c];return _0x1fc57;};'use strict';var Sequelize=require(_0x0bd5('0x0'));var moment=require(_0x0bd5('0x1'));module[_0x0bd5('0x2')]={'name':{'type':Sequelize[_0x0bd5('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x0bd5('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x0bd5('0x4')](_0x0bd5('0x5'),'pdf',_0x0bd5('0x6')),'allowNull':![],'defaultValue':_0x0bd5('0x5')},'savename':{'type':Sequelize[_0x0bd5('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x0bd5('0x7')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x0bd5('0x3')],'defaultValue':_0x0bd5('0x8')},'type':{'type':Sequelize[_0x0bd5('0x4')](_0x0bd5('0x9'),'scheduled'),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0x0bd5('0xa')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d89dce8..44a9977 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74d4=['ValidationError','Report\x20not\x20found\x20or\x20empty','exists','download','format','%s.%s','toLowerCase','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','update','destroy','then','get','ExtractedReports','UserProfileResource','sendStatus','error','stack','name','index','AnalyticExtractedReport','type','model','map','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','rawAttributes','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','basename','output','existsSync','join','root','savename','Sequelize'];(function(_0x2b46a9,_0x56f304){var _0x4e03cd=function(_0x88e7dd){while(--_0x88e7dd){_0x2b46a9['push'](_0x2b46a9['shift']());}};_0x4e03cd(++_0x56f304);}(_0x74d4,0x1d8));var _0x474d=function(_0x4fa1c5,_0x186201){_0x4fa1c5=_0x4fa1c5-0x0;var _0x1dd3d0=_0x74d4[_0x4fa1c5];return _0x1dd3d0;};'use strict';var emlformat=require(_0x474d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x474d('0x1'));var jsonpatch=require(_0x474d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x474d('0x3'));var Mustache=require(_0x474d('0x4'));var util=require(_0x474d('0x5'));var path=require('path');var sox=require(_0x474d('0x6'));var csv=require('to-csv');var ejs=require(_0x474d('0x7'));var fs=require('fs');var fs_extra=require(_0x474d('0x8'));var _=require(_0x474d('0x9'));var squel=require(_0x474d('0xa'));var crypto=require('crypto');var jsforce=require(_0x474d('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x474d('0xc'));var querystring=require(_0x474d('0xd'));var Papa=require(_0x474d('0xe'));var Redis=require(_0x474d('0xf'));var authService=require(_0x474d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x474d('0x11'));var hardwareService=require(_0x474d('0x12'));var logger=require(_0x474d('0x13'))(_0x474d('0x14'));var utils=require('../../config/utils');var config=require(_0x474d('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x474d('0x16'))['db'];function respondWithStatusCode(_0x5b6740,_0xdf8369){_0xdf8369=_0xdf8369||0xcc;return function(_0x3692f4){if(_0x3692f4){return _0x5b6740['sendStatus'](_0xdf8369);}return _0x5b6740[_0x474d('0x17')](_0xdf8369)[_0x474d('0x18')]();};}function respondWithResult(_0x437da6,_0x55b1e4){_0x55b1e4=_0x55b1e4||0xc8;return function(_0x2e732d){if(_0x2e732d){return _0x437da6[_0x474d('0x17')](_0x55b1e4)[_0x474d('0x19')](_0x2e732d);}};}function respondWithFilteredResult(_0x1cb71a,_0x53b2fe){return function(_0x49c7ae){if(_0x49c7ae){var _0x16bdb5=typeof _0x53b2fe['offset']===_0x474d('0x1a')&&typeof _0x53b2fe[_0x474d('0x1b')]==='undefined';var _0x98bede=_0x49c7ae[_0x474d('0x1c')];var _0x36f78e=_0x16bdb5?0x0:_0x53b2fe[_0x474d('0x1d')];var _0x197591=_0x16bdb5?_0x49c7ae[_0x474d('0x1c')]:_0x53b2fe['offset']+_0x53b2fe['limit'];var _0x29de1f;if(_0x197591>=_0x98bede){_0x197591=_0x98bede;_0x29de1f=0xc8;}else{_0x29de1f=0xce;}_0x1cb71a['status'](_0x29de1f);return _0x1cb71a[_0x474d('0x1e')]('Content-Range',_0x36f78e+'-'+_0x197591+'/'+_0x98bede)[_0x474d('0x19')](_0x49c7ae);}return null;};}function patchUpdates(_0x4a18ec){return function(_0x4ae36d){try{jsonpatch[_0x474d('0x1f')](_0x4ae36d,_0x4a18ec,!![]);}catch(_0x1db236){return BPromise['reject'](_0x1db236);}return _0x4ae36d['save']();};}function saveUpdates(_0x4c5523,_0x4d4237){return function(_0x540ee8){if(_0x540ee8){return _0x540ee8[_0x474d('0x20')](_0x4c5523)['then'](function(_0x17fb91){return _0x17fb91;});}return null;};}function removeEntity(_0x4bcb51,_0x34be47){return function(_0x144ef2){if(_0x144ef2){return _0x144ef2[_0x474d('0x21')]()[_0x474d('0x22')](function(){var _0x915bcc=_0x144ef2[_0x474d('0x23')]({'plain':!![]});var _0x17feb8=_0x474d('0x24');return db[_0x474d('0x25')]['destroy']({'where':{'type':_0x17feb8,'resourceId':_0x915bcc['id']}})['then'](function(){return _0x144ef2;});})[_0x474d('0x22')](function(){_0x4bcb51[_0x474d('0x17')](0xcc)[_0x474d('0x18')]();});}};}function handleEntityNotFound(_0x323a61,_0x10b01a){return function(_0x58da09){if(!_0x58da09){_0x323a61[_0x474d('0x26')](0x194);}return _0x58da09;};}function handleError(_0x44a628,_0x454d96){_0x454d96=_0x454d96||0x1f4;return function(_0x210560){logger[_0x474d('0x27')](_0x210560[_0x474d('0x28')]);if(_0x210560['name']){delete _0x210560[_0x474d('0x29')];}_0x44a628[_0x474d('0x17')](_0x454d96)['send'](_0x210560);};}exports[_0x474d('0x2a')]=function(_0x4931d0,_0x3cc38b){var _0x5a59cf={},_0x4fc87d={},_0x34c15e={'count':0x0,'rows':[]};var _0x4b38bf=_['map'](db[_0x474d('0x2b')]['rawAttributes'],function(_0x1c8f4a){return{'name':_0x1c8f4a['fieldName'],'type':_0x1c8f4a[_0x474d('0x2c')]['key']};});_0x4fc87d[_0x474d('0x2d')]=_[_0x474d('0x2e')](_0x4b38bf,'name');_0x4fc87d['query']=_[_0x474d('0x2f')](_0x4931d0[_0x474d('0x30')]);_0x4fc87d[_0x474d('0x31')]=_[_0x474d('0x32')](_0x4fc87d['model'],_0x4fc87d[_0x474d('0x30')]);_0x5a59cf['attributes']=_['intersection'](_0x4fc87d[_0x474d('0x2d')],qs['fields'](_0x4931d0[_0x474d('0x30')][_0x474d('0x33')]));_0x5a59cf[_0x474d('0x34')]=_0x5a59cf[_0x474d('0x34')][_0x474d('0x35')]?_0x5a59cf['attributes']:_0x4fc87d['model'];if(!_0x4931d0[_0x474d('0x30')]['hasOwnProperty'](_0x474d('0x36'))){_0x5a59cf['limit']=qs[_0x474d('0x1b')](_0x4931d0[_0x474d('0x30')][_0x474d('0x1b')]);_0x5a59cf['offset']=qs[_0x474d('0x1d')](_0x4931d0[_0x474d('0x30')]['offset']);}_0x5a59cf[_0x474d('0x37')]=qs[_0x474d('0x38')](_0x4931d0[_0x474d('0x30')][_0x474d('0x38')]);_0x5a59cf[_0x474d('0x39')]=qs[_0x474d('0x31')](_[_0x474d('0x3a')](_0x4931d0[_0x474d('0x30')],_0x4fc87d[_0x474d('0x31')]),_0x4b38bf);if(_0x4931d0[_0x474d('0x30')][_0x474d('0x3b')]){_0x5a59cf[_0x474d('0x39')]=_[_0x474d('0x3c')](_0x5a59cf[_0x474d('0x39')],{'$or':_['map'](_0x4b38bf,function(_0x167e81){if(_0x167e81[_0x474d('0x2c')]!==_0x474d('0x3d')){var _0x12224e={};_0x12224e[_0x167e81[_0x474d('0x29')]]={'$like':'%'+_0x4931d0['query'][_0x474d('0x3b')]+'%'};return _0x12224e;}})});}_0x5a59cf=_[_0x474d('0x3c')]({},_0x5a59cf,_0x4931d0[_0x474d('0x3e')]);var _0x2e0286={'where':_0x5a59cf[_0x474d('0x39')]};return db[_0x474d('0x2b')][_0x474d('0x1c')](_0x2e0286)[_0x474d('0x22')](function(_0xfc9ab9){_0x34c15e[_0x474d('0x1c')]=_0xfc9ab9;if(_0x4931d0[_0x474d('0x30')][_0x474d('0x3f')]){_0x5a59cf[_0x474d('0x40')]=[{'all':!![]}];}return db[_0x474d('0x2b')]['findAll'](_0x5a59cf);})['then'](function(_0x24f867){_0x34c15e[_0x474d('0x41')]=_0x24f867;return _0x34c15e;})[_0x474d('0x22')](respondWithFilteredResult(_0x3cc38b,_0x5a59cf))[_0x474d('0x42')](handleError(_0x3cc38b,null));};exports['show']=function(_0x49e5db,_0x5e61bb){var _0x3540da={'raw':!![],'where':{'id':_0x49e5db[_0x474d('0x43')]['id']}},_0x3c3a80={};_0x3c3a80[_0x474d('0x2d')]=_[_0x474d('0x2f')](db[_0x474d('0x2b')][_0x474d('0x44')]);_0x3c3a80[_0x474d('0x30')]=_[_0x474d('0x2f')](_0x49e5db[_0x474d('0x30')]);_0x3c3a80['filters']=_[_0x474d('0x32')](_0x3c3a80['model'],_0x3c3a80[_0x474d('0x30')]);_0x3540da[_0x474d('0x34')]=_['intersection'](_0x3c3a80[_0x474d('0x2d')],qs[_0x474d('0x33')](_0x49e5db[_0x474d('0x30')][_0x474d('0x33')]));_0x3540da[_0x474d('0x34')]=_0x3540da[_0x474d('0x34')][_0x474d('0x35')]?_0x3540da[_0x474d('0x34')]:_0x3c3a80[_0x474d('0x2d')];if(_0x49e5db[_0x474d('0x30')]['includeAll']){_0x3540da[_0x474d('0x40')]=[{'all':!![]}];}_0x3540da=_[_0x474d('0x3c')]({},_0x3540da,_0x49e5db[_0x474d('0x3e')]);return db[_0x474d('0x2b')]['find'](_0x3540da)[_0x474d('0x22')](handleEntityNotFound(_0x5e61bb,null))[_0x474d('0x22')](respondWithResult(_0x5e61bb,null))[_0x474d('0x42')](handleError(_0x5e61bb,null));};exports[_0x474d('0x45')]=function(_0x34d98f,_0x16770e){return db[_0x474d('0x2b')][_0x474d('0x45')](_0x34d98f[_0x474d('0x46')],{})['then'](function(_0x4d81f7){var _0x3a35c9=_0x34d98f['user'][_0x474d('0x23')]({'plain':!![]});if(!_0x3a35c9)throw new Error(_0x474d('0x47'));if(_0x3a35c9[_0x474d('0x48')]===_0x474d('0x49')){var _0xf5d7ca=_0x4d81f7[_0x474d('0x23')]({'plain':!![]});var _0x4c61fc=_0x474d('0x24');return db[_0x474d('0x4a')][_0x474d('0x4b')]({'where':{'name':_0x4c61fc,'userProfileId':_0x3a35c9[_0x474d('0x4c')]},'raw':!![]})[_0x474d('0x22')](function(_0x3cea10){if(_0x3cea10&&_0x3cea10[_0x474d('0x4d')]===0x0){return db['UserProfileResource']['create']({'name':_0xf5d7ca[_0x474d('0x29')],'resourceId':_0xf5d7ca['id'],'type':_0x3cea10[_0x474d('0x29')],'sectionId':_0x3cea10['id']},{})[_0x474d('0x22')](function(){return _0x4d81f7;});}else{return _0x4d81f7;}})[_0x474d('0x42')](function(_0x1766b4){logger[_0x474d('0x27')](_0x474d('0x4e'),_0x1766b4);throw _0x1766b4;});}return _0x4d81f7;})[_0x474d('0x22')](respondWithResult(_0x16770e,0xc9))[_0x474d('0x42')](handleError(_0x16770e,null));};exports[_0x474d('0x20')]=function(_0x43f70a,_0x30eebb){if(_0x43f70a['body']['id']){delete _0x43f70a[_0x474d('0x46')]['id'];}return db[_0x474d('0x2b')][_0x474d('0x4b')]({'where':{'id':_0x43f70a[_0x474d('0x43')]['id']}})[_0x474d('0x22')](handleEntityNotFound(_0x30eebb,null))[_0x474d('0x22')](saveUpdates(_0x43f70a[_0x474d('0x46')],null))[_0x474d('0x22')](respondWithResult(_0x30eebb,null))[_0x474d('0x42')](handleError(_0x30eebb,null));};exports[_0x474d('0x21')]=function(_0x109be1,_0x547718){return db['AnalyticExtractedReport']['find']({'where':{'id':_0x109be1[_0x474d('0x43')]['id']}})['then'](handleEntityNotFound(_0x547718,null))['then'](removeEntity(_0x547718,null))[_0x474d('0x42')](handleError(_0x547718,null));};exports['download']=function(_0x4845e6,_0x500e5d,_0x29b9ff){return db[_0x474d('0x2b')][_0x474d('0x4b')]({'where':{'id':_0x4845e6['params']['id']},'attributes':[_0x474d('0x29'),_0x474d('0x4f'),'savename',_0x474d('0x50')],'raw':!![]})[_0x474d('0x22')](handleEntityNotFound(_0x500e5d,null))['then'](function(_0x40526d){if(_0x40526d){if(!fs[_0x474d('0x51')](path[_0x474d('0x52')](config[_0x474d('0x53')],'server/files/reports',_0x40526d[_0x474d('0x54')]))){throw new db[(_0x474d('0x55'))][(_0x474d('0x56'))](_0x474d('0x57'));}if(_0x4845e6[_0x474d('0x30')][_0x474d('0x58')]){return _0x500e5d['sendStatus'](0xc8);}return _0x500e5d[_0x474d('0x59')](path[_0x474d('0x52')](config[_0x474d('0x53')],'server/files/reports',_0x40526d[_0x474d('0x54')]),util[_0x474d('0x5a')](_0x474d('0x5b'),_0x40526d[_0x474d('0x4f')]||_0x40526d['name'],_0x40526d[_0x474d('0x50')][_0x474d('0x5c')]()));}})[_0x474d('0x42')](handleError(_0x500e5d,null));};
\ No newline at end of file
+var _0xd630=['sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','destroy','then','get','ExtractedReports','UserProfileResource','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','options','include','findAll','show','includeAll','merge','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','find','download','basename','savename','output','join','root','server/files/reports','Report\x20not\x20found\x20or\x20empty','format','%s.%s','toLowerCase','eml-format','rimraf','fast-json-patch','moment','mustache'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0xd630,0xb3));var _0x0d63=function(_0x1cb49a,_0x1030c4){_0x1cb49a=_0x1cb49a-0x0;var _0x2e3458=_0xd630[_0x1cb49a];return _0x2e3458;};'use strict';var emlformat=require(_0x0d63('0x0'));var rimraf=require(_0x0d63('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0d63('0x2'));var rp=require('request-promise');var moment=require(_0x0d63('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0d63('0x4'));var util=require('util');var path=require('path');var sox=require(_0x0d63('0x5'));var csv=require(_0x0d63('0x6'));var ejs=require(_0x0d63('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0d63('0x8'));var squel=require(_0x0d63('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0d63('0xa'));var toCsv=require('to-csv');var querystring=require(_0x0d63('0xb'));var Papa=require(_0x0d63('0xc'));var Redis=require(_0x0d63('0xd'));var authService=require(_0x0d63('0xe'));var qs=require(_0x0d63('0xf'));var as=require(_0x0d63('0x10'));var hardwareService=require(_0x0d63('0x11'));var logger=require(_0x0d63('0x12'))(_0x0d63('0x13'));var utils=require(_0x0d63('0x14'));var config=require(_0x0d63('0x15'));var licenseUtil=require(_0x0d63('0x16'));var db=require(_0x0d63('0x17'))['db'];function respondWithStatusCode(_0x194c20,_0xb475f1){_0xb475f1=_0xb475f1||0xcc;return function(_0xcc8eb3){if(_0xcc8eb3){return _0x194c20[_0x0d63('0x18')](_0xb475f1);}return _0x194c20[_0x0d63('0x19')](_0xb475f1)[_0x0d63('0x1a')]();};}function respondWithResult(_0xbfa426,_0xa04562){_0xa04562=_0xa04562||0xc8;return function(_0x22a1f1){if(_0x22a1f1){return _0xbfa426[_0x0d63('0x19')](_0xa04562)['json'](_0x22a1f1);}};}function respondWithFilteredResult(_0x5d2c1e,_0x17179a){return function(_0x31a5f1){if(_0x31a5f1){var _0x26d5ef=typeof _0x17179a[_0x0d63('0x1b')]===_0x0d63('0x1c')&&typeof _0x17179a[_0x0d63('0x1d')]===_0x0d63('0x1c');var _0x429fa2=_0x31a5f1[_0x0d63('0x1e')];var _0x42ed94=_0x26d5ef?0x0:_0x17179a[_0x0d63('0x1b')];var _0xb08153=_0x26d5ef?_0x31a5f1[_0x0d63('0x1e')]:_0x17179a[_0x0d63('0x1b')]+_0x17179a[_0x0d63('0x1d')];var _0x3ff440;if(_0xb08153>=_0x429fa2){_0xb08153=_0x429fa2;_0x3ff440=0xc8;}else{_0x3ff440=0xce;}_0x5d2c1e[_0x0d63('0x19')](_0x3ff440);return _0x5d2c1e['set']('Content-Range',_0x42ed94+'-'+_0xb08153+'/'+_0x429fa2)[_0x0d63('0x1f')](_0x31a5f1);}return null;};}function patchUpdates(_0xaa8262){return function(_0x472b2f){try{jsonpatch[_0x0d63('0x20')](_0x472b2f,_0xaa8262,!![]);}catch(_0x4055e2){return BPromise[_0x0d63('0x21')](_0x4055e2);}return _0x472b2f['save']();};}function saveUpdates(_0x58aa5c,_0x58daca){return function(_0x3f2d8e){if(_0x3f2d8e){return _0x3f2d8e['update'](_0x58aa5c)['then'](function(_0x572323){return _0x572323;});}return null;};}function removeEntity(_0x51742c,_0x9e71b0){return function(_0x5b352b){if(_0x5b352b){return _0x5b352b[_0x0d63('0x22')]()[_0x0d63('0x23')](function(){var _0x126255=_0x5b352b[_0x0d63('0x24')]({'plain':!![]});var _0x23ff8f=_0x0d63('0x25');return db[_0x0d63('0x26')]['destroy']({'where':{'type':_0x23ff8f,'resourceId':_0x126255['id']}})['then'](function(){return _0x5b352b;});})[_0x0d63('0x23')](function(){_0x51742c[_0x0d63('0x19')](0xcc)[_0x0d63('0x1a')]();});}};}function handleEntityNotFound(_0x228caf,_0x14c22d){return function(_0x4d3b2d){if(!_0x4d3b2d){_0x228caf[_0x0d63('0x18')](0x194);}return _0x4d3b2d;};}function handleError(_0x49c8f0,_0x431989){_0x431989=_0x431989||0x1f4;return function(_0xb61aef){logger[_0x0d63('0x27')](_0xb61aef[_0x0d63('0x28')]);if(_0xb61aef[_0x0d63('0x29')]){delete _0xb61aef[_0x0d63('0x29')];}_0x49c8f0[_0x0d63('0x19')](_0x431989)[_0x0d63('0x2a')](_0xb61aef);};}exports[_0x0d63('0x2b')]=function(_0x2a21e5,_0x1cc590){var _0xb5fd54={},_0x3b6df2={},_0x4345da={'count':0x0,'rows':[]};var _0x4dd13e=_[_0x0d63('0x2c')](db[_0x0d63('0x2d')][_0x0d63('0x2e')],function(_0x54828c){return{'name':_0x54828c[_0x0d63('0x2f')],'type':_0x54828c[_0x0d63('0x30')]['key']};});_0x3b6df2[_0x0d63('0x31')]=_[_0x0d63('0x2c')](_0x4dd13e,_0x0d63('0x29'));_0x3b6df2['query']=_[_0x0d63('0x32')](_0x2a21e5[_0x0d63('0x33')]);_0x3b6df2[_0x0d63('0x34')]=_['intersection'](_0x3b6df2[_0x0d63('0x31')],_0x3b6df2[_0x0d63('0x33')]);_0xb5fd54[_0x0d63('0x35')]=_[_0x0d63('0x36')](_0x3b6df2[_0x0d63('0x31')],qs[_0x0d63('0x37')](_0x2a21e5[_0x0d63('0x33')][_0x0d63('0x37')]));_0xb5fd54[_0x0d63('0x35')]=_0xb5fd54['attributes'][_0x0d63('0x38')]?_0xb5fd54[_0x0d63('0x35')]:_0x3b6df2[_0x0d63('0x31')];if(!_0x2a21e5[_0x0d63('0x33')][_0x0d63('0x39')](_0x0d63('0x3a'))){_0xb5fd54['limit']=qs['limit'](_0x2a21e5[_0x0d63('0x33')][_0x0d63('0x1d')]);_0xb5fd54[_0x0d63('0x1b')]=qs[_0x0d63('0x1b')](_0x2a21e5[_0x0d63('0x33')][_0x0d63('0x1b')]);}_0xb5fd54[_0x0d63('0x3b')]=qs['sort'](_0x2a21e5[_0x0d63('0x33')][_0x0d63('0x3c')]);_0xb5fd54[_0x0d63('0x3d')]=qs[_0x0d63('0x34')](_['pick'](_0x2a21e5[_0x0d63('0x33')],_0x3b6df2[_0x0d63('0x34')]),_0x4dd13e);if(_0x2a21e5['query'][_0x0d63('0x3e')]){_0xb5fd54['where']=_['merge'](_0xb5fd54[_0x0d63('0x3d')],{'$or':_[_0x0d63('0x2c')](_0x4dd13e,function(_0x54d082){if(_0x54d082[_0x0d63('0x30')]!==_0x0d63('0x3f')){var _0x15b765={};_0x15b765[_0x54d082[_0x0d63('0x29')]]={'$like':'%'+_0x2a21e5['query']['filter']+'%'};return _0x15b765;}})});}_0xb5fd54=_['merge']({},_0xb5fd54,_0x2a21e5[_0x0d63('0x40')]);var _0x515b4a={'where':_0xb5fd54[_0x0d63('0x3d')]};return db[_0x0d63('0x2d')]['count'](_0x515b4a)['then'](function(_0x449338){_0x4345da[_0x0d63('0x1e')]=_0x449338;if(_0x2a21e5[_0x0d63('0x33')]['includeAll']){_0xb5fd54[_0x0d63('0x41')]=[{'all':!![]}];}return db[_0x0d63('0x2d')][_0x0d63('0x42')](_0xb5fd54);})[_0x0d63('0x23')](function(_0x20d3b4){_0x4345da['rows']=_0x20d3b4;return _0x4345da;})['then'](respondWithFilteredResult(_0x1cc590,_0xb5fd54))['catch'](handleError(_0x1cc590,null));};exports[_0x0d63('0x43')]=function(_0x4b8abd,_0x54c2ce){var _0x334101={'raw':!![],'where':{'id':_0x4b8abd['params']['id']}},_0x1ff4a8={};_0x1ff4a8['model']=_[_0x0d63('0x32')](db[_0x0d63('0x2d')]['rawAttributes']);_0x1ff4a8['query']=_[_0x0d63('0x32')](_0x4b8abd['query']);_0x1ff4a8[_0x0d63('0x34')]=_[_0x0d63('0x36')](_0x1ff4a8[_0x0d63('0x31')],_0x1ff4a8['query']);_0x334101[_0x0d63('0x35')]=_[_0x0d63('0x36')](_0x1ff4a8[_0x0d63('0x31')],qs[_0x0d63('0x37')](_0x4b8abd[_0x0d63('0x33')]['fields']));_0x334101[_0x0d63('0x35')]=_0x334101[_0x0d63('0x35')][_0x0d63('0x38')]?_0x334101[_0x0d63('0x35')]:_0x1ff4a8[_0x0d63('0x31')];if(_0x4b8abd[_0x0d63('0x33')][_0x0d63('0x44')]){_0x334101[_0x0d63('0x41')]=[{'all':!![]}];}_0x334101=_[_0x0d63('0x45')]({},_0x334101,_0x4b8abd[_0x0d63('0x40')]);return db[_0x0d63('0x2d')]['find'](_0x334101)[_0x0d63('0x23')](handleEntityNotFound(_0x54c2ce,null))[_0x0d63('0x23')](respondWithResult(_0x54c2ce,null))[_0x0d63('0x46')](handleError(_0x54c2ce,null));};exports[_0x0d63('0x47')]=function(_0x3524af,_0xfdaed2){return db[_0x0d63('0x2d')][_0x0d63('0x47')](_0x3524af['body'],{})['then'](function(_0x5e6fac){var _0x16be67=_0x3524af[_0x0d63('0x48')][_0x0d63('0x24')]({'plain':!![]});if(!_0x16be67)throw new Error(_0x0d63('0x49'));if(_0x16be67[_0x0d63('0x4a')]===_0x0d63('0x48')){var _0x16fbee=_0x5e6fac[_0x0d63('0x24')]({'plain':!![]});var _0x3e4584=_0x0d63('0x25');return db[_0x0d63('0x4b')]['find']({'where':{'name':_0x3e4584,'userProfileId':_0x16be67['userProfileId']},'raw':!![]})['then'](function(_0x3136d8){if(_0x3136d8&&_0x3136d8[_0x0d63('0x4c')]===0x0){return db[_0x0d63('0x26')]['create']({'name':_0x16fbee['name'],'resourceId':_0x16fbee['id'],'type':_0x3136d8['name'],'sectionId':_0x3136d8['id']},{})[_0x0d63('0x23')](function(){return _0x5e6fac;});}else{return _0x5e6fac;}})[_0x0d63('0x46')](function(_0x491505){logger['error'](_0x0d63('0x4d'),_0x491505);throw _0x491505;});}return _0x5e6fac;})[_0x0d63('0x23')](respondWithResult(_0xfdaed2,0xc9))[_0x0d63('0x46')](handleError(_0xfdaed2,null));};exports['update']=function(_0x33082f,_0x46c2d7){if(_0x33082f[_0x0d63('0x4e')]['id']){delete _0x33082f['body']['id'];}return db[_0x0d63('0x2d')]['find']({'where':{'id':_0x33082f[_0x0d63('0x4f')]['id']}})['then'](handleEntityNotFound(_0x46c2d7,null))['then'](saveUpdates(_0x33082f[_0x0d63('0x4e')],null))['then'](respondWithResult(_0x46c2d7,null))[_0x0d63('0x46')](handleError(_0x46c2d7,null));};exports[_0x0d63('0x22')]=function(_0x3552bd,_0xee34cc){return db[_0x0d63('0x2d')][_0x0d63('0x50')]({'where':{'id':_0x3552bd[_0x0d63('0x4f')]['id']}})[_0x0d63('0x23')](handleEntityNotFound(_0xee34cc,null))[_0x0d63('0x23')](removeEntity(_0xee34cc,null))[_0x0d63('0x46')](handleError(_0xee34cc,null));};exports[_0x0d63('0x51')]=function(_0x14cdfc,_0x34f5d8,_0x48ab37){return db[_0x0d63('0x2d')]['find']({'where':{'id':_0x14cdfc[_0x0d63('0x4f')]['id']},'attributes':[_0x0d63('0x29'),_0x0d63('0x52'),_0x0d63('0x53'),_0x0d63('0x54')],'raw':!![]})[_0x0d63('0x23')](handleEntityNotFound(_0x34f5d8,null))[_0x0d63('0x23')](function(_0x435b75){if(_0x435b75){if(!fs['existsSync'](path[_0x0d63('0x55')](config[_0x0d63('0x56')],_0x0d63('0x57'),_0x435b75[_0x0d63('0x53')]))){throw new db['Sequelize']['ValidationError'](_0x0d63('0x58'));}if(_0x14cdfc[_0x0d63('0x33')]['exists']){return _0x34f5d8['sendStatus'](0xc8);}return _0x34f5d8[_0x0d63('0x51')](path[_0x0d63('0x55')](config[_0x0d63('0x56')],_0x0d63('0x57'),_0x435b75[_0x0d63('0x53')]),util[_0x0d63('0x59')](_0x0d63('0x5a'),_0x435b75[_0x0d63('0x52')]||_0x435b75[_0x0d63('0x29')],_0x435b75[_0x0d63('0x54')][_0x0d63('0x5b')]()));}})[_0x0d63('0x46')](handleError(_0x34f5d8,null));};
\ No newline at end of file
index f524988..133a1e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dad=['./analyticExtractedReport.attributes','define','AnalyticExtractedReport','analytics_extracted_reports','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2f39cf,_0x3c59ec){var _0xd0ece8=function(_0x4ffc0f){while(--_0x4ffc0f){_0x2f39cf['push'](_0x2f39cf['shift']());}};_0xd0ece8(++_0x3c59ec);}(_0x5dad,0xb8));var _0xd5da=function(_0x94f458,_0x16606d){_0x94f458=_0x94f458-0x0;var _0x1ddcda=_0x5dad[_0x94f458];return _0x1ddcda;};'use strict';var _=require('lodash');var util=require(_0xd5da('0x0'));var logger=require(_0xd5da('0x1'))(_0xd5da('0x2'));var moment=require('moment');var BPromise=require(_0xd5da('0x3'));var rp=require(_0xd5da('0x4'));var fs=require('fs');var path=require(_0xd5da('0x5'));var rimraf=require(_0xd5da('0x6'));var config=require(_0xd5da('0x7'));var attributes=require(_0xd5da('0x8'));module['exports']=function(_0x2cd169,_0x1af437){return _0x2cd169[_0xd5da('0x9')](_0xd5da('0xa'),attributes,{'tableName':_0xd5da('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c62=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport'];(function(_0x4a896d,_0x9f778d){var _0x1f09c8=function(_0x1f33c3){while(--_0x1f33c3){_0x4a896d['push'](_0x4a896d['shift']());}};_0x1f09c8(++_0x9f778d);}(_0x1c62,0x11e));var _0x21c6=function(_0x5519a9,_0x1c5147){_0x5519a9=_0x5519a9-0x0;var _0x32f2cc=_0x1c62[_0x5519a9];return _0x32f2cc;};'use strict';var _=require(_0x21c6('0x0'));var util=require(_0x21c6('0x1'));var logger=require('../../config/logger')(_0x21c6('0x2'));var moment=require(_0x21c6('0x3'));var BPromise=require(_0x21c6('0x4'));var rp=require(_0x21c6('0x5'));var fs=require('fs');var path=require(_0x21c6('0x6'));var rimraf=require(_0x21c6('0x7'));var config=require(_0x21c6('0x8'));var attributes=require(_0x21c6('0x9'));module[_0x21c6('0xa')]=function(_0x25f0f3,_0x38842a){return _0x25f0f3[_0x21c6('0xb')](_0x21c6('0xc'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 88f3bf9..bd6849f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ce8=['error','message','info','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','AnalyticExtractedReport,\x20%s,\x20%s','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x6cdf4f,_0x28aa59){var _0x284852=function(_0x4d0c08){while(--_0x4d0c08){_0x6cdf4f['push'](_0x6cdf4f['shift']());}};_0x284852(++_0x28aa59);}(_0x7ce8,0x165));var _0x87ce=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x7ce8[_0x37c22c];return _0x119d79;};'use strict';var _=require(_0x87ce('0x0'));var util=require(_0x87ce('0x1'));var moment=require(_0x87ce('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x87ce('0x3'));var db=require(_0x87ce('0x4'))['db'];var utils=require(_0x87ce('0x5'));var logger=require(_0x87ce('0x6'))(_0x87ce('0x7'));var config=require(_0x87ce('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x87ce('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2903b5,_0x54dbdb,_0x53fa9e){return new BPromise(function(_0x3a9598,_0x43f500){return client[_0x87ce('0xa')](_0x2903b5,_0x53fa9e)[_0x87ce('0xb')](function(_0x36b92a){logger['info'](_0x87ce('0xc'),_0x54dbdb,'request\x20sent');logger[_0x87ce('0xd')](_0x87ce('0xe'),_0x54dbdb,_0x87ce('0xf'),JSON[_0x87ce('0x10')](_0x36b92a));if(_0x36b92a[_0x87ce('0x11')]){if(_0x36b92a[_0x87ce('0x11')]['code']===0x1f4){logger['error'](_0x87ce('0xc'),_0x54dbdb,_0x36b92a[_0x87ce('0x11')][_0x87ce('0x12')]);return _0x43f500(_0x36b92a['error'][_0x87ce('0x12')]);}logger['error'](_0x87ce('0xc'),_0x54dbdb,_0x36b92a[_0x87ce('0x11')][_0x87ce('0x12')]);return _0x3a9598(_0x36b92a[_0x87ce('0x11')][_0x87ce('0x12')]);}else{logger[_0x87ce('0x13')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x54dbdb,_0x87ce('0xf'));_0x3a9598(_0x36b92a[_0x87ce('0x14')][_0x87ce('0x12')]);}})[_0x87ce('0x15')](function(_0x4cf8b6){logger[_0x87ce('0x11')](_0x87ce('0xc'),_0x54dbdb,_0x4cf8b6);_0x43f500(_0x4cf8b6);});});}
\ No newline at end of file
+var _0xcaa9=['message','result','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0xe595de,_0x25ebd6){var _0x2f2a9d=function(_0x42f7ec){while(--_0x42f7ec){_0xe595de['push'](_0xe595de['shift']());}};_0x2f2a9d(++_0x25ebd6);}(_0xcaa9,0x1d0));var _0x9caa=function(_0x2f7c58,_0x284ce2){_0x2f7c58=_0x2f7c58-0x0;var _0x2c1513=_0xcaa9[_0x2f7c58];return _0x2c1513;};'use strict';var _=require(_0x9caa('0x0'));var util=require(_0x9caa('0x1'));var moment=require(_0x9caa('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9caa('0x3'));var db=require(_0x9caa('0x4'))['db'];var utils=require(_0x9caa('0x5'));var logger=require(_0x9caa('0x6'))(_0x9caa('0x7'));var config=require(_0x9caa('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9caa('0x9')][_0x9caa('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3fe4da,_0x2cd68e,_0x26b163){return new BPromise(function(_0x3db5c7,_0x4f07ea){return client[_0x9caa('0xb')](_0x3fe4da,_0x26b163)[_0x9caa('0xc')](function(_0x389c96){logger[_0x9caa('0xd')](_0x9caa('0xe'),_0x2cd68e,'request\x20sent');logger['debug'](_0x9caa('0xf'),_0x2cd68e,_0x9caa('0x10'),JSON[_0x9caa('0x11')](_0x389c96));if(_0x389c96[_0x9caa('0x12')]){if(_0x389c96[_0x9caa('0x12')][_0x9caa('0x13')]===0x1f4){logger[_0x9caa('0x12')](_0x9caa('0xe'),_0x2cd68e,_0x389c96[_0x9caa('0x12')][_0x9caa('0x14')]);return _0x4f07ea(_0x389c96[_0x9caa('0x12')]['message']);}logger['error'](_0x9caa('0xe'),_0x2cd68e,_0x389c96[_0x9caa('0x12')][_0x9caa('0x14')]);return _0x3db5c7(_0x389c96[_0x9caa('0x12')][_0x9caa('0x14')]);}else{logger[_0x9caa('0xd')](_0x9caa('0xe'),_0x2cd68e,_0x9caa('0x10'));_0x3db5c7(_0x389c96[_0x9caa('0x15')][_0x9caa('0x14')]);}})['catch'](function(_0x2ae562){logger[_0x9caa('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2cd68e,_0x2ae562);_0x4f07ea(_0x2ae562);});});}
\ No newline at end of file
index 76eca91..ee2d246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5db=['update','delete','destroy','multer','path','Router','../../components/auth/service','../../components/interaction/service','get','index','isAuthenticated','/:id/download','download','/:id'];(function(_0x4bb675,_0x569a01){var _0x4064c5=function(_0x4a409e){while(--_0x4a409e){_0x4bb675['push'](_0x4bb675['shift']());}};_0x4064c5(++_0x569a01);}(_0xe5db,0xf1));var _0xbe5d=function(_0x1f16de,_0x548eb9){_0x1f16de=_0x1f16de-0x0;var _0x36cd80=_0xe5db[_0x1f16de];return _0x36cd80;};'use strict';var multer=require(_0xbe5d('0x0'));var util=require('util');var path=require(_0xbe5d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbe5d('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xbe5d('0x3'));var interaction=require(_0xbe5d('0x4'));var config=require('../../config/environment');var controller=require('./analyticExtractedReport.controller');router[_0xbe5d('0x5')]('/',auth['isAuthenticated'](),controller[_0xbe5d('0x6')]);router[_0xbe5d('0x5')]('/:id',auth[_0xbe5d('0x7')](),controller['show']);router[_0xbe5d('0x5')](_0xbe5d('0x8'),auth[_0xbe5d('0x7')](),controller[_0xbe5d('0x9')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xbe5d('0xa'),auth[_0xbe5d('0x7')](),controller[_0xbe5d('0xb')]);router[_0xbe5d('0xc')](_0xbe5d('0xa'),auth['isAuthenticated'](),controller[_0xbe5d('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0xc3df=['../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xc3df,0x1f4));var _0xfc3d=function(_0x4eac77,_0x1a5c7c){_0x4eac77=_0x4eac77-0x0;var _0x36655c=_0xc3df[_0x4eac77];return _0x36655c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xfc3d('0x0'));var timeout=require(_0xfc3d('0x1'));var express=require(_0xfc3d('0x2'));var router=express[_0xfc3d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xfc3d('0x4'));var interaction=require(_0xfc3d('0x5'));var config=require('../../config/environment');var controller=require(_0xfc3d('0x6'));router[_0xfc3d('0x7')]('/',auth[_0xfc3d('0x8')](),controller[_0xfc3d('0x9')]);router[_0xfc3d('0x7')](_0xfc3d('0xa'),auth[_0xfc3d('0x8')](),controller[_0xfc3d('0xb')]);router[_0xfc3d('0x7')](_0xfc3d('0xc'),auth['isAuthenticated'](),controller[_0xfc3d('0xd')]);router[_0xfc3d('0xe')]('/',auth[_0xfc3d('0x8')](),controller[_0xfc3d('0xf')]);router[_0xfc3d('0x10')]('/:id',auth[_0xfc3d('0x8')](),controller[_0xfc3d('0x11')]);router[_0xfc3d('0x12')](_0xfc3d('0xa'),auth[_0xfc3d('0x8')](),controller[_0xfc3d('0x13')]);module[_0xfc3d('0x14')]=router;
\ No newline at end of file
index b1d1e90..2feb317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d8=['STRING','BOOLEAN','exports','TEXT'];(function(_0x99ab5a,_0x12f418){var _0x12cba8=function(_0x3096ec){while(--_0x3096ec){_0x99ab5a['push'](_0x99ab5a['shift']());}};_0x12cba8(++_0x12f418);}(_0x78d8,0x112));var _0x878d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x78d8[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0x878d('0x0')]={'field':{'type':Sequelize[_0x878d('0x1')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x878d('0x2')]},'format':{'type':Sequelize[_0x878d('0x2')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x878d('0x2')]},'custom':{'type':Sequelize[_0x878d('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe214=['sequelize','exports','STRING','BOOLEAN'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe214,0x160));var _0x4e21=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xe214[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0x4e21('0x0'));module[_0x4e21('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x4e21('0x2')]},'function':{'type':Sequelize[_0x4e21('0x2')]},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x4e21('0x2')]},'custom':{'type':Sequelize[_0x4e21('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 4a0e665..40f2f6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06e0=['error','name','send','index','AnalyticFieldReport','rawAttributes','fieldName','type','model','map','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','bulkCreate','bulkDestroy','destroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','CustomReportId','zip-dir','request-promise','moment','to-csv','ejs','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','sendStatus'];(function(_0x30c48d,_0x25e828){var _0x2c64aa=function(_0x244ae6){while(--_0x244ae6){_0x30c48d['push'](_0x30c48d['shift']());}};_0x2c64aa(++_0x25e828);}(_0x06e0,0x10f));var _0x006e=function(_0x4b70a2,_0x5d0fbd){_0x4b70a2=_0x4b70a2-0x0;var _0x2170fa=_0x06e0[_0x4b70a2];return _0x2170fa;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x006e('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x006e('0x1'));var moment=require(_0x006e('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x006e('0x3'));var ejs=require(_0x006e('0x4'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x006e('0x5'));var jsforce=require(_0x006e('0x6'));var deskjs=require('desk.js');var toCsv=require(_0x006e('0x3'));var querystring=require(_0x006e('0x7'));var Papa=require(_0x006e('0x8'));var Redis=require('ioredis');var authService=require(_0x006e('0x9'));var qs=require(_0x006e('0xa'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x006e('0xb'));var logger=require(_0x006e('0xc'))('api');var utils=require(_0x006e('0xd'));var config=require('../../config/environment');var licenseUtil=require(_0x006e('0xe'));var db=require(_0x006e('0xf'))['db'];function respondWithStatusCode(_0x4b3c29,_0x53c690){_0x53c690=_0x53c690||0xcc;return function(_0x2680e6){if(_0x2680e6){return _0x4b3c29['sendStatus'](_0x53c690);}return _0x4b3c29[_0x006e('0x10')](_0x53c690)[_0x006e('0x11')]();};}function respondWithResult(_0x264594,_0xed37ea){_0xed37ea=_0xed37ea||0xc8;return function(_0x5b5060){if(_0x5b5060){return _0x264594[_0x006e('0x10')](_0xed37ea)[_0x006e('0x12')](_0x5b5060);}};}function respondWithFilteredResult(_0x5c8074,_0x3af4fc){return function(_0x5eb4c9){if(_0x5eb4c9){var _0x1b2778=typeof _0x3af4fc[_0x006e('0x13')]===_0x006e('0x14')&&typeof _0x3af4fc[_0x006e('0x15')]===_0x006e('0x14');var _0x595fa0=_0x5eb4c9[_0x006e('0x16')];var _0x2a6c30=_0x1b2778?0x0:_0x3af4fc[_0x006e('0x13')];var _0x25824f=_0x1b2778?_0x5eb4c9[_0x006e('0x16')]:_0x3af4fc[_0x006e('0x13')]+_0x3af4fc[_0x006e('0x15')];var _0x6295cb;if(_0x25824f>=_0x595fa0){_0x25824f=_0x595fa0;_0x6295cb=0xc8;}else{_0x6295cb=0xce;}_0x5c8074[_0x006e('0x10')](_0x6295cb);return _0x5c8074[_0x006e('0x17')](_0x006e('0x18'),_0x2a6c30+'-'+_0x25824f+'/'+_0x595fa0)['json'](_0x5eb4c9);}return null;};}function patchUpdates(_0x27bfe9){return function(_0x5c8930){try{jsonpatch['apply'](_0x5c8930,_0x27bfe9,!![]);}catch(_0x4894c8){return BPromise[_0x006e('0x19')](_0x4894c8);}return _0x5c8930['save']();};}function saveUpdates(_0x5bbf51,_0x42bf94){return function(_0x3e0119){if(_0x3e0119){return _0x3e0119[_0x006e('0x1a')](_0x5bbf51)['then'](function(_0x59006f){return _0x59006f;});}return null;};}function removeEntity(_0x2935cd,_0xe212d3){return function(_0x7fd0a6){if(_0x7fd0a6){return _0x7fd0a6['destroy']()[_0x006e('0x1b')](function(){_0x2935cd['status'](0xcc)[_0x006e('0x11')]();});}};}function handleEntityNotFound(_0x5c874e,_0x4d50b0){return function(_0x6320d1){if(!_0x6320d1){_0x5c874e[_0x006e('0x1c')](0x194);}return _0x6320d1;};}function handleError(_0x354e63,_0x17e665){_0x17e665=_0x17e665||0x1f4;return function(_0x13e213){logger[_0x006e('0x1d')](_0x13e213['stack']);if(_0x13e213[_0x006e('0x1e')]){delete _0x13e213[_0x006e('0x1e')];}_0x354e63[_0x006e('0x10')](_0x17e665)[_0x006e('0x1f')](_0x13e213);};}exports[_0x006e('0x20')]=function(_0x1f32b3,_0x35298f){var _0xb1b8a8={},_0x15a081={},_0x1d9234={'count':0x0,'rows':[]};var _0x246a3f=_['map'](db[_0x006e('0x21')][_0x006e('0x22')],function(_0x29aa3e){return{'name':_0x29aa3e[_0x006e('0x23')],'type':_0x29aa3e[_0x006e('0x24')]['key']};});_0x15a081[_0x006e('0x25')]=_[_0x006e('0x26')](_0x246a3f,_0x006e('0x1e'));_0x15a081[_0x006e('0x27')]=_['keys'](_0x1f32b3[_0x006e('0x27')]);_0x15a081['filters']=_[_0x006e('0x28')](_0x15a081[_0x006e('0x25')],_0x15a081[_0x006e('0x27')]);_0xb1b8a8['attributes']=_['intersection'](_0x15a081[_0x006e('0x25')],qs[_0x006e('0x29')](_0x1f32b3[_0x006e('0x27')][_0x006e('0x29')]));_0xb1b8a8[_0x006e('0x2a')]=_0xb1b8a8[_0x006e('0x2a')]['length']?_0xb1b8a8['attributes']:_0x15a081['model'];if(!_0x1f32b3[_0x006e('0x27')][_0x006e('0x2b')](_0x006e('0x2c'))){_0xb1b8a8['limit']=qs['limit'](_0x1f32b3[_0x006e('0x27')]['limit']);_0xb1b8a8[_0x006e('0x13')]=qs[_0x006e('0x13')](_0x1f32b3[_0x006e('0x27')]['offset']);}_0xb1b8a8[_0x006e('0x2d')]=qs[_0x006e('0x2e')](_0x1f32b3[_0x006e('0x27')][_0x006e('0x2e')]);_0xb1b8a8['where']=qs[_0x006e('0x2f')](_[_0x006e('0x30')](_0x1f32b3[_0x006e('0x27')],_0x15a081[_0x006e('0x2f')]),_0x246a3f);if(_0x1f32b3[_0x006e('0x27')]['filter']){_0xb1b8a8[_0x006e('0x31')]=_[_0x006e('0x32')](_0xb1b8a8[_0x006e('0x31')],{'$or':_[_0x006e('0x26')](_0x246a3f,function(_0x29ccb8){if(_0x29ccb8['type']!==_0x006e('0x33')){var _0x33979c={};_0x33979c[_0x29ccb8[_0x006e('0x1e')]]={'$like':'%'+_0x1f32b3[_0x006e('0x27')][_0x006e('0x34')]+'%'};return _0x33979c;}})});}_0xb1b8a8=_['merge']({},_0xb1b8a8,_0x1f32b3[_0x006e('0x35')]);var _0x49f716={'where':_0xb1b8a8['where']};return db[_0x006e('0x21')][_0x006e('0x16')](_0x49f716)['then'](function(_0x123df7){_0x1d9234[_0x006e('0x16')]=_0x123df7;if(_0x1f32b3[_0x006e('0x27')][_0x006e('0x36')]){_0xb1b8a8[_0x006e('0x37')]=[{'all':!![]}];}return db[_0x006e('0x21')][_0x006e('0x38')](_0xb1b8a8);})[_0x006e('0x1b')](function(_0x5b5f0a){_0x1d9234[_0x006e('0x39')]=_0x5b5f0a;return _0x1d9234;})['then'](respondWithFilteredResult(_0x35298f,_0xb1b8a8))[_0x006e('0x3a')](handleError(_0x35298f,null));};exports[_0x006e('0x3b')]=function(_0x26fdaa,_0x53e377){var _0x51d1c2={'raw':![],'where':{'id':_0x26fdaa[_0x006e('0x3c')]['id']}},_0x907f6a={};_0x907f6a[_0x006e('0x25')]=_['keys'](db[_0x006e('0x21')]['rawAttributes']);_0x907f6a['query']=_[_0x006e('0x3d')](_0x26fdaa[_0x006e('0x27')]);_0x907f6a[_0x006e('0x2f')]=_[_0x006e('0x28')](_0x907f6a[_0x006e('0x25')],_0x907f6a[_0x006e('0x27')]);_0x51d1c2['attributes']=_[_0x006e('0x28')](_0x907f6a[_0x006e('0x25')],qs['fields'](_0x26fdaa['query']['fields']));_0x51d1c2[_0x006e('0x2a')]=_0x51d1c2[_0x006e('0x2a')][_0x006e('0x3e')]?_0x51d1c2['attributes']:_0x907f6a[_0x006e('0x25')];if(_0x26fdaa['query']['includeAll']){_0x51d1c2[_0x006e('0x37')]=[{'all':!![]}];}_0x51d1c2=_[_0x006e('0x32')]({},_0x51d1c2,_0x26fdaa['options']);return db[_0x006e('0x21')][_0x006e('0x3f')](_0x51d1c2)[_0x006e('0x1b')](handleEntityNotFound(_0x53e377,null))['then'](respondWithResult(_0x53e377,null))[_0x006e('0x3a')](handleError(_0x53e377,null));};exports['create']=function(_0x42519e,_0x427d42){return db[_0x006e('0x21')][_0x006e('0x40')](_0x42519e[_0x006e('0x41')],{})[_0x006e('0x1b')](respondWithResult(_0x427d42,0xc9))['catch'](handleError(_0x427d42,null));};exports[_0x006e('0x42')]=function(_0x5cc51a,_0x1bf323){return db[_0x006e('0x21')][_0x006e('0x42')](_0x5cc51a[_0x006e('0x41')],{'raw':![],'individualHooks':!![]})[_0x006e('0x1b')](respondWithResult(_0x1bf323,0xc9))[_0x006e('0x3a')](handleError(_0x1bf323,null));};exports[_0x006e('0x1a')]=function(_0xeb1c70,_0xb06d56){if(_0xeb1c70[_0x006e('0x41')]['id']){delete _0xeb1c70[_0x006e('0x41')]['id'];}return db[_0x006e('0x21')][_0x006e('0x3f')]({'where':{'id':_0xeb1c70[_0x006e('0x3c')]['id']}})[_0x006e('0x1b')](handleEntityNotFound(_0xb06d56,null))['then'](saveUpdates(_0xeb1c70[_0x006e('0x41')],null))[_0x006e('0x1b')](respondWithResult(_0xb06d56,null))[_0x006e('0x3a')](handleError(_0xb06d56,null));};exports['destroy']=function(_0x160c29,_0x400471){return db['AnalyticFieldReport'][_0x006e('0x3f')]({'where':{'id':_0x160c29[_0x006e('0x3c')]['id']}})['then'](handleEntityNotFound(_0x400471,null))[_0x006e('0x1b')](removeEntity(_0x400471,null))['catch'](handleError(_0x400471,null));};exports[_0x006e('0x43')]=function(_0xb0f8de,_0x56e658){return db[_0x006e('0x21')][_0x006e('0x44')]({'where':{'id':_0xb0f8de[_0x006e('0x27')][_0x006e('0x45')]||[]},'raw':![],'individualHooks':!![]})[_0x006e('0x1b')](respondWithResult(_0x56e658,0xcc))[_0x006e('0x3a')](handleError(_0x56e658,null));};exports[_0x006e('0x46')]=function(_0x511167,_0x32ec07,_0x4555ef){return db[_0x006e('0x47')][_0x006e('0x48')]({'where':{'id':_0x511167[_0x006e('0x3c')]['id']}})[_0x006e('0x1b')](handleEntityNotFound(_0x32ec07,null))['then'](function(_0x29cc33){if(_0x29cc33){return db[_0x006e('0x49')]['transaction'](function(_0x4edf0e){return db[_0x006e('0x21')]['destroy']({'where':{'CustomReportId':_0x511167['params']['id']},'transaction':_0x4edf0e})[_0x006e('0x1b')](function(_0x3eaa67){var _0x5761b8=_[_0x006e('0x26')](_0x511167['body'],function(_0x317c0d){delete _0x317c0d['id'];_0x317c0d[_0x006e('0x4a')]=_0x511167[_0x006e('0x3c')]['id'];return _0x317c0d;});return db['AnalyticFieldReport']['bulkCreate'](_0x5761b8,{'transaction':_0x4edf0e});});})[_0x006e('0x1b')](function(){return db[_0x006e('0x21')][_0x006e('0x38')]({'where':{'CustomReportId':_0x511167[_0x006e('0x3c')]['id']}});});}})[_0x006e('0x1b')](respondWithResult(_0x32ec07,null))[_0x006e('0x3a')](handleError(_0x32ec07,null));};
\ No newline at end of file
+var _0x8eb1=['eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','stack','name','index','AnalyticFieldReport','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','bulkCreate','bulkDestroy','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x8eb1,0x1a9));var _0x18eb=function(_0x4acba1,_0x166f12){_0x4acba1=_0x4acba1-0x0;var _0x3d12e9=_0x8eb1[_0x4acba1];return _0x3d12e9;};'use strict';var emlformat=require(_0x18eb('0x0'));var rimraf=require(_0x18eb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x18eb('0x2'));var moment=require(_0x18eb('0x3'));var BPromise=require(_0x18eb('0x4'));var Mustache=require(_0x18eb('0x5'));var util=require('util');var path=require(_0x18eb('0x6'));var sox=require(_0x18eb('0x7'));var csv=require(_0x18eb('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x18eb('0x9'));var _=require(_0x18eb('0xa'));var squel=require(_0x18eb('0xb'));var crypto=require(_0x18eb('0xc'));var jsforce=require(_0x18eb('0xd'));var deskjs=require(_0x18eb('0xe'));var toCsv=require(_0x18eb('0x8'));var querystring=require('querystring');var Papa=require(_0x18eb('0xf'));var Redis=require(_0x18eb('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x18eb('0x11'));var as=require(_0x18eb('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x18eb('0x13'))(_0x18eb('0x14'));var utils=require(_0x18eb('0x15'));var config=require(_0x18eb('0x16'));var licenseUtil=require(_0x18eb('0x17'));var db=require(_0x18eb('0x18'))['db'];function respondWithStatusCode(_0x6c9b76,_0x32d657){_0x32d657=_0x32d657||0xcc;return function(_0x3c5890){if(_0x3c5890){return _0x6c9b76[_0x18eb('0x19')](_0x32d657);}return _0x6c9b76[_0x18eb('0x1a')](_0x32d657)[_0x18eb('0x1b')]();};}function respondWithResult(_0x3a8eb6,_0x1557f4){_0x1557f4=_0x1557f4||0xc8;return function(_0x21fed5){if(_0x21fed5){return _0x3a8eb6[_0x18eb('0x1a')](_0x1557f4)[_0x18eb('0x1c')](_0x21fed5);}};}function respondWithFilteredResult(_0x2d9172,_0x4f78c9){return function(_0x25cb35){if(_0x25cb35){var _0x5b05fb=typeof _0x4f78c9[_0x18eb('0x1d')]===_0x18eb('0x1e')&&typeof _0x4f78c9['limit']==='undefined';var _0x8a0e1e=_0x25cb35['count'];var _0x3bfd5c=_0x5b05fb?0x0:_0x4f78c9[_0x18eb('0x1d')];var _0x177a85=_0x5b05fb?_0x25cb35[_0x18eb('0x1f')]:_0x4f78c9[_0x18eb('0x1d')]+_0x4f78c9['limit'];var _0x420c3c;if(_0x177a85>=_0x8a0e1e){_0x177a85=_0x8a0e1e;_0x420c3c=0xc8;}else{_0x420c3c=0xce;}_0x2d9172[_0x18eb('0x1a')](_0x420c3c);return _0x2d9172[_0x18eb('0x20')](_0x18eb('0x21'),_0x3bfd5c+'-'+_0x177a85+'/'+_0x8a0e1e)[_0x18eb('0x1c')](_0x25cb35);}return null;};}function patchUpdates(_0xd063fd){return function(_0x42e4f4){try{jsonpatch[_0x18eb('0x22')](_0x42e4f4,_0xd063fd,!![]);}catch(_0x13f141){return BPromise['reject'](_0x13f141);}return _0x42e4f4[_0x18eb('0x23')]();};}function saveUpdates(_0x8bde85,_0x504f63){return function(_0x57626e){if(_0x57626e){return _0x57626e[_0x18eb('0x24')](_0x8bde85)[_0x18eb('0x25')](function(_0x1f5869){return _0x1f5869;});}return null;};}function removeEntity(_0x3adfd2,_0x8b41a){return function(_0x165a10){if(_0x165a10){return _0x165a10[_0x18eb('0x26')]()['then'](function(){_0x3adfd2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x24221d,_0x3c1d2f){return function(_0x1db90c){if(!_0x1db90c){_0x24221d[_0x18eb('0x19')](0x194);}return _0x1db90c;};}function handleError(_0x1dad1d,_0x27b4a5){_0x27b4a5=_0x27b4a5||0x1f4;return function(_0x338327){logger['error'](_0x338327[_0x18eb('0x27')]);if(_0x338327[_0x18eb('0x28')]){delete _0x338327['name'];}_0x1dad1d[_0x18eb('0x1a')](_0x27b4a5)['send'](_0x338327);};}exports[_0x18eb('0x29')]=function(_0x39b706,_0x5d0832){var _0x1472e2={},_0x358027={},_0x567ebf={'count':0x0,'rows':[]};var _0x299d47=_['map'](db[_0x18eb('0x2a')][_0x18eb('0x2b')],function(_0x4d2308){return{'name':_0x4d2308[_0x18eb('0x2c')],'type':_0x4d2308[_0x18eb('0x2d')][_0x18eb('0x2e')]};});_0x358027['model']=_[_0x18eb('0x2f')](_0x299d47,_0x18eb('0x28'));_0x358027[_0x18eb('0x30')]=_[_0x18eb('0x31')](_0x39b706[_0x18eb('0x30')]);_0x358027[_0x18eb('0x32')]=_[_0x18eb('0x33')](_0x358027[_0x18eb('0x34')],_0x358027[_0x18eb('0x30')]);_0x1472e2[_0x18eb('0x35')]=_['intersection'](_0x358027[_0x18eb('0x34')],qs[_0x18eb('0x36')](_0x39b706['query'][_0x18eb('0x36')]));_0x1472e2['attributes']=_0x1472e2[_0x18eb('0x35')][_0x18eb('0x37')]?_0x1472e2[_0x18eb('0x35')]:_0x358027['model'];if(!_0x39b706[_0x18eb('0x30')][_0x18eb('0x38')](_0x18eb('0x39'))){_0x1472e2['limit']=qs[_0x18eb('0x3a')](_0x39b706[_0x18eb('0x30')][_0x18eb('0x3a')]);_0x1472e2['offset']=qs[_0x18eb('0x1d')](_0x39b706[_0x18eb('0x30')][_0x18eb('0x1d')]);}_0x1472e2[_0x18eb('0x3b')]=qs[_0x18eb('0x3c')](_0x39b706[_0x18eb('0x30')][_0x18eb('0x3c')]);_0x1472e2['where']=qs[_0x18eb('0x32')](_[_0x18eb('0x3d')](_0x39b706['query'],_0x358027[_0x18eb('0x32')]),_0x299d47);if(_0x39b706['query'][_0x18eb('0x3e')]){_0x1472e2[_0x18eb('0x3f')]=_['merge'](_0x1472e2[_0x18eb('0x3f')],{'$or':_[_0x18eb('0x2f')](_0x299d47,function(_0x525892){if(_0x525892['type']!==_0x18eb('0x40')){var _0x1cd90f={};_0x1cd90f[_0x525892[_0x18eb('0x28')]]={'$like':'%'+_0x39b706['query'][_0x18eb('0x3e')]+'%'};return _0x1cd90f;}})});}_0x1472e2=_[_0x18eb('0x41')]({},_0x1472e2,_0x39b706[_0x18eb('0x42')]);var _0x1726a3={'where':_0x1472e2[_0x18eb('0x3f')]};return db[_0x18eb('0x2a')]['count'](_0x1726a3)[_0x18eb('0x25')](function(_0x197a17){_0x567ebf[_0x18eb('0x1f')]=_0x197a17;if(_0x39b706[_0x18eb('0x30')][_0x18eb('0x43')]){_0x1472e2[_0x18eb('0x44')]=[{'all':!![]}];}return db[_0x18eb('0x2a')][_0x18eb('0x45')](_0x1472e2);})[_0x18eb('0x25')](function(_0x2cefff){_0x567ebf[_0x18eb('0x46')]=_0x2cefff;return _0x567ebf;})['then'](respondWithFilteredResult(_0x5d0832,_0x1472e2))[_0x18eb('0x47')](handleError(_0x5d0832,null));};exports[_0x18eb('0x48')]=function(_0x9b3527,_0x1f78fd){var _0x4232e8={'raw':![],'where':{'id':_0x9b3527[_0x18eb('0x49')]['id']}},_0x118c4b={};_0x118c4b[_0x18eb('0x34')]=_[_0x18eb('0x31')](db[_0x18eb('0x2a')][_0x18eb('0x2b')]);_0x118c4b[_0x18eb('0x30')]=_[_0x18eb('0x31')](_0x9b3527[_0x18eb('0x30')]);_0x118c4b[_0x18eb('0x32')]=_[_0x18eb('0x33')](_0x118c4b[_0x18eb('0x34')],_0x118c4b[_0x18eb('0x30')]);_0x4232e8[_0x18eb('0x35')]=_['intersection'](_0x118c4b['model'],qs['fields'](_0x9b3527[_0x18eb('0x30')][_0x18eb('0x36')]));_0x4232e8[_0x18eb('0x35')]=_0x4232e8[_0x18eb('0x35')]['length']?_0x4232e8[_0x18eb('0x35')]:_0x118c4b[_0x18eb('0x34')];if(_0x9b3527['query'][_0x18eb('0x43')]){_0x4232e8['include']=[{'all':!![]}];}_0x4232e8=_[_0x18eb('0x41')]({},_0x4232e8,_0x9b3527[_0x18eb('0x42')]);return db[_0x18eb('0x2a')][_0x18eb('0x4a')](_0x4232e8)[_0x18eb('0x25')](handleEntityNotFound(_0x1f78fd,null))[_0x18eb('0x25')](respondWithResult(_0x1f78fd,null))[_0x18eb('0x47')](handleError(_0x1f78fd,null));};exports['create']=function(_0x593ad0,_0x1064b6){return db[_0x18eb('0x2a')][_0x18eb('0x4b')](_0x593ad0[_0x18eb('0x4c')],{})['then'](respondWithResult(_0x1064b6,0xc9))[_0x18eb('0x47')](handleError(_0x1064b6,null));};exports['bulkCreate']=function(_0x3e3ff1,_0x15de4c){return db[_0x18eb('0x2a')][_0x18eb('0x4d')](_0x3e3ff1[_0x18eb('0x4c')],{'raw':![],'individualHooks':!![]})[_0x18eb('0x25')](respondWithResult(_0x15de4c,0xc9))[_0x18eb('0x47')](handleError(_0x15de4c,null));};exports[_0x18eb('0x24')]=function(_0x4a593d,_0x11cca7){if(_0x4a593d[_0x18eb('0x4c')]['id']){delete _0x4a593d[_0x18eb('0x4c')]['id'];}return db[_0x18eb('0x2a')][_0x18eb('0x4a')]({'where':{'id':_0x4a593d['params']['id']}})['then'](handleEntityNotFound(_0x11cca7,null))['then'](saveUpdates(_0x4a593d[_0x18eb('0x4c')],null))[_0x18eb('0x25')](respondWithResult(_0x11cca7,null))['catch'](handleError(_0x11cca7,null));};exports['destroy']=function(_0x385b87,_0x3621fc){return db[_0x18eb('0x2a')][_0x18eb('0x4a')]({'where':{'id':_0x385b87[_0x18eb('0x49')]['id']}})['then'](handleEntityNotFound(_0x3621fc,null))['then'](removeEntity(_0x3621fc,null))[_0x18eb('0x47')](handleError(_0x3621fc,null));};exports[_0x18eb('0x4e')]=function(_0x2409cb,_0x4dd28a){return db['AnalyticFieldReport'][_0x18eb('0x26')]({'where':{'id':_0x2409cb[_0x18eb('0x30')]['ids']||[]},'raw':![],'individualHooks':!![]})[_0x18eb('0x25')](respondWithResult(_0x4dd28a,0xcc))[_0x18eb('0x47')](handleError(_0x4dd28a,null));};exports[_0x18eb('0x4f')]=function(_0x484439,_0x33bcbd,_0xe38f28){return db[_0x18eb('0x50')][_0x18eb('0x51')]({'where':{'id':_0x484439[_0x18eb('0x49')]['id']}})[_0x18eb('0x25')](handleEntityNotFound(_0x33bcbd,null))['then'](function(_0x40a3a4){if(_0x40a3a4){return db[_0x18eb('0x52')][_0x18eb('0x53')](function(_0x22295f){return db[_0x18eb('0x2a')][_0x18eb('0x26')]({'where':{'CustomReportId':_0x484439['params']['id']},'transaction':_0x22295f})['then'](function(_0x3a53c4){var _0x212d3b=_[_0x18eb('0x2f')](_0x484439[_0x18eb('0x4c')],function(_0x2414a3){delete _0x2414a3['id'];_0x2414a3[_0x18eb('0x54')]=_0x484439[_0x18eb('0x49')]['id'];return _0x2414a3;});return db['AnalyticFieldReport'][_0x18eb('0x4d')](_0x212d3b,{'transaction':_0x22295f});});})[_0x18eb('0x25')](function(){return db[_0x18eb('0x2a')][_0x18eb('0x45')]({'where':{'CustomReportId':_0x484439[_0x18eb('0x49')]['id']}});});}})[_0x18eb('0x25')](respondWithResult(_0x33bcbd,null))[_0x18eb('0x47')](handleError(_0x33bcbd,null));};
\ No newline at end of file
index 3786651..37836e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c60=['util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport','lodash'];(function(_0x5d972b,_0x5c5530){var _0x2b449d=function(_0x174422){while(--_0x174422){_0x5d972b['push'](_0x5d972b['shift']());}};_0x2b449d(++_0x5c5530);}(_0x9c60,0xfb));var _0x09c6=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x9c60[_0x56482c];return _0x5aae7a;};'use strict';var _=require(_0x09c6('0x0'));var util=require(_0x09c6('0x1'));var logger=require(_0x09c6('0x2'))(_0x09c6('0x3'));var moment=require('moment');var BPromise=require(_0x09c6('0x4'));var rp=require(_0x09c6('0x5'));var fs=require('fs');var path=require(_0x09c6('0x6'));var rimraf=require('rimraf');var config=require(_0x09c6('0x7'));var attributes=require(_0x09c6('0x8'));module[_0x09c6('0x9')]=function(_0x276e81,_0x3fb145){return _0x276e81[_0x09c6('0xa')](_0x09c6('0xb'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe4f7=['rimraf','../../config/environment','./analyticFieldReport.attributes','define','AnalyticFieldReport','analytics_report_fields','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x63c794,_0x14f52c){var _0x16f319=function(_0x149940){while(--_0x149940){_0x63c794['push'](_0x63c794['shift']());}};_0x16f319(++_0x14f52c);}(_0xe4f7,0x17f));var _0x7e4f=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe4f7[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x7e4f('0x0'));var util=require(_0x7e4f('0x1'));var logger=require('../../config/logger')(_0x7e4f('0x2'));var moment=require(_0x7e4f('0x3'));var BPromise=require(_0x7e4f('0x4'));var rp=require(_0x7e4f('0x5'));var fs=require('fs');var path=require(_0x7e4f('0x6'));var rimraf=require(_0x7e4f('0x7'));var config=require(_0x7e4f('0x8'));var attributes=require(_0x7e4f('0x9'));module['exports']=function(_0x5d7379,_0x54f101){return _0x5d7379[_0x7e4f('0xa')](_0x7e4f('0xb'),attributes,{'tableName':_0x7e4f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dbd6175..5617485 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30a5=['util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x30a5,0xa8));var _0x530a=function(_0x190148,_0xda6bdd){_0x190148=_0x190148-0x0;var _0x5009de=_0x30a5[_0x190148];return _0x5009de;};'use strict';var _=require('lodash');var util=require(_0x530a('0x0'));var moment=require(_0x530a('0x1'));var BPromise=require(_0x530a('0x2'));var rs=require(_0x530a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x530a('0x4'))(_0x530a('0x5'));var config=require(_0x530a('0x6'));var jayson=require(_0x530a('0x7'));var client=jayson[_0x530a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x547a48,_0x34c50d,_0x26b19f){return new BPromise(function(_0x3387d8,_0x1f5445){return client[_0x530a('0x9')](_0x547a48,_0x26b19f)[_0x530a('0xa')](function(_0x5bdf6f){logger[_0x530a('0xb')](_0x530a('0xc'),_0x34c50d,_0x530a('0xd'));logger[_0x530a('0xe')](_0x530a('0xf'),_0x34c50d,_0x530a('0xd'),JSON[_0x530a('0x10')](_0x5bdf6f));if(_0x5bdf6f[_0x530a('0x11')]){if(_0x5bdf6f['error']['code']===0x1f4){logger[_0x530a('0x11')](_0x530a('0xc'),_0x34c50d,_0x5bdf6f[_0x530a('0x11')]['message']);return _0x1f5445(_0x5bdf6f[_0x530a('0x11')][_0x530a('0x12')]);}logger[_0x530a('0x11')]('AnalyticFieldReport,\x20%s,\x20%s',_0x34c50d,_0x5bdf6f[_0x530a('0x11')][_0x530a('0x12')]);return _0x3387d8(_0x5bdf6f[_0x530a('0x11')][_0x530a('0x12')]);}else{logger[_0x530a('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0x34c50d,'request\x20sent');_0x3387d8(_0x5bdf6f[_0x530a('0x13')][_0x530a('0x12')]);}})[_0x530a('0x14')](function(_0x33e888){logger['error'](_0x530a('0xc'),_0x34c50d,_0x33e888);_0x1f5445(_0x33e888);});});}
\ No newline at end of file
+var _0x9079=['rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','../../config/logger'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x9079,0xd8));var _0x9907=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9079[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9907('0x0'));var util=require('util');var moment=require(_0x9907('0x1'));var BPromise=require(_0x9907('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9907('0x3'))(_0x9907('0x4'));var config=require(_0x9907('0x5'));var jayson=require(_0x9907('0x6'));var client=jayson['client'][_0x9907('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2013b6,_0x270c1f,_0x1d92bc){return new BPromise(function(_0xcfd863,_0x4e5120){return client[_0x9907('0x8')](_0x2013b6,_0x1d92bc)[_0x9907('0x9')](function(_0x4c0387){logger[_0x9907('0xa')](_0x9907('0xb'),_0x270c1f,_0x9907('0xc'));logger[_0x9907('0xd')](_0x9907('0xe'),_0x270c1f,_0x9907('0xc'),JSON[_0x9907('0xf')](_0x4c0387));if(_0x4c0387['error']){if(_0x4c0387[_0x9907('0x10')][_0x9907('0x11')]===0x1f4){logger['error'](_0x9907('0xb'),_0x270c1f,_0x4c0387[_0x9907('0x10')][_0x9907('0x12')]);return _0x4e5120(_0x4c0387[_0x9907('0x10')][_0x9907('0x12')]);}logger[_0x9907('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x270c1f,_0x4c0387[_0x9907('0x10')][_0x9907('0x12')]);return _0xcfd863(_0x4c0387[_0x9907('0x10')][_0x9907('0x12')]);}else{logger[_0x9907('0xa')](_0x9907('0xb'),_0x270c1f,_0x9907('0xc'));_0xcfd863(_0x4c0387[_0x9907('0x13')][_0x9907('0x12')]);}})['catch'](function(_0x4b9ff7){logger[_0x9907('0x10')](_0x9907('0xb'),_0x270c1f,_0x4b9ff7);_0x4e5120(_0x4b9ff7);});});}
\ No newline at end of file
index 6c4f9bf..cddb7e5 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(_0x22add5,_0x346816){var _0x39c293=function(_0x496ebf){while(--_0x496ebf){_0x22add5['push'](_0x22add5['shift']());}};_0x39c293(++_0x346816);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));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(_0x555b57,_0x1f1a30){var _0x3629d6=function(_0x33300e){while(--_0x33300e){_0x555b57['push'](_0x555b57['shift']());}};_0x3629d6(++_0x1f1a30);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'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 8c03142..c6b1404 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x544a=['sequelize','exports','STRING','TEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x544a,0x118));var _0xa544=function(_0x44a4a9,_0x40ff99){_0x44a4a9=_0x44a4a9-0x0;var _0x5c4547=_0x544a[_0x44a4a9];return _0x5c4547;};'use strict';var Sequelize=require(_0xa544('0x0'));module[_0xa544('0x1')]={'name':{'type':Sequelize[_0xa544('0x2')],'allowNull':![],'unique':'name'},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0xa544('0x3')]},'description':{'type':Sequelize[_0xa544('0x2')]}};
\ No newline at end of file
+var _0xcbde=['TEXT','sequelize','STRING','name'];(function(_0x19babd,_0x1d4ef7){var _0x314eaf=function(_0x24ea35){while(--_0x24ea35){_0x19babd['push'](_0x19babd['shift']());}};_0x314eaf(++_0x1d4ef7);}(_0xcbde,0x141));var _0xecbd=function(_0x464299,_0x52e05d){_0x464299=_0x464299-0x0;var _0x4d5db5=_0xcbde[_0x464299];return _0x4d5db5;};'use strict';var Sequelize=require(_0xecbd('0x0'));module['exports']={'name':{'type':Sequelize[_0xecbd('0x1')],'allowNull':![],'unique':_0xecbd('0x2')},'table':{'type':Sequelize[_0xecbd('0x1')]},'metric':{'type':Sequelize[_0xecbd('0x3')]},'description':{'type':Sequelize[_0xecbd('0x1')]}};
\ No newline at end of file
index cc2d0ba..83068d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','Metrics','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','type','keys','query','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','params','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json'];(function(_0x5d8b28,_0x93ca8e){var _0x460737=function(_0x55303b){while(--_0x55303b){_0x5d8b28['push'](_0x5d8b28['shift']());}};_0x460737(++_0x93ca8e);}(_0xe5b3,0x133));var _0x3e5b=function(_0x591a97,_0x3f0693){_0x591a97=_0x591a97-0x0;var _0x36e8ed=_0xe5b3[_0x591a97];return _0x36e8ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3e5b('0x0'));var zipdir=require(_0x3e5b('0x1'));var jsonpatch=require(_0x3e5b('0x2'));var rp=require(_0x3e5b('0x3'));var moment=require(_0x3e5b('0x4'));var BPromise=require(_0x3e5b('0x5'));var Mustache=require(_0x3e5b('0x6'));var util=require(_0x3e5b('0x7'));var path=require(_0x3e5b('0x8'));var sox=require(_0x3e5b('0x9'));var csv=require(_0x3e5b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3e5b('0xb'));var _=require(_0x3e5b('0xc'));var squel=require('squel');var crypto=require(_0x3e5b('0xd'));var jsforce=require(_0x3e5b('0xe'));var deskjs=require(_0x3e5b('0xf'));var toCsv=require(_0x3e5b('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3e5b('0x10'));var authService=require(_0x3e5b('0x11'));var qs=require(_0x3e5b('0x12'));var as=require(_0x3e5b('0x13'));var hardwareService=require(_0x3e5b('0x14'));var logger=require('../../config/logger')(_0x3e5b('0x15'));var utils=require('../../config/utils');var config=require(_0x3e5b('0x16'));var licenseUtil=require(_0x3e5b('0x17'));var db=require(_0x3e5b('0x18'))['db'];function respondWithStatusCode(_0x374068,_0x20b97b){_0x20b97b=_0x20b97b||0xcc;return function(_0x3c4eb1){if(_0x3c4eb1){return _0x374068[_0x3e5b('0x19')](_0x20b97b);}return _0x374068['status'](_0x20b97b)[_0x3e5b('0x1a')]();};}function respondWithResult(_0x5f2f9c,_0x51a188){_0x51a188=_0x51a188||0xc8;return function(_0x4d71a3){if(_0x4d71a3){return _0x5f2f9c[_0x3e5b('0x1b')](_0x51a188)[_0x3e5b('0x1c')](_0x4d71a3);}};}function respondWithFilteredResult(_0x17aaa3,_0x4fb471){return function(_0x1f81a7){if(_0x1f81a7){var _0x59ddc0=typeof _0x4fb471['offset']===_0x3e5b('0x1d')&&typeof _0x4fb471[_0x3e5b('0x1e')]==='undefined';var _0x3d58a4=_0x1f81a7[_0x3e5b('0x1f')];var _0x555002=_0x59ddc0?0x0:_0x4fb471[_0x3e5b('0x20')];var _0x3365dd=_0x59ddc0?_0x1f81a7['count']:_0x4fb471['offset']+_0x4fb471[_0x3e5b('0x1e')];var _0x20806a;if(_0x3365dd>=_0x3d58a4){_0x3365dd=_0x3d58a4;_0x20806a=0xc8;}else{_0x20806a=0xce;}_0x17aaa3[_0x3e5b('0x1b')](_0x20806a);return _0x17aaa3[_0x3e5b('0x21')](_0x3e5b('0x22'),_0x555002+'-'+_0x3365dd+'/'+_0x3d58a4)[_0x3e5b('0x1c')](_0x1f81a7);}return null;};}function patchUpdates(_0x447d36){return function(_0x21fc32){try{jsonpatch[_0x3e5b('0x23')](_0x21fc32,_0x447d36,!![]);}catch(_0x3d95f3){return BPromise[_0x3e5b('0x24')](_0x3d95f3);}return _0x21fc32[_0x3e5b('0x25')]();};}function saveUpdates(_0x2d77cc,_0x402873){return function(_0x5b46d4){if(_0x5b46d4){return _0x5b46d4[_0x3e5b('0x26')](_0x2d77cc)[_0x3e5b('0x27')](function(_0x2146d4){return _0x2146d4;});}return null;};}function removeEntity(_0x150674,_0x50039b){return function(_0x1eb80f){if(_0x1eb80f){return _0x1eb80f['destroy']()[_0x3e5b('0x27')](function(){var _0x36d960=_0x1eb80f['get']({'plain':!![]});var _0x41b684=_0x3e5b('0x28');return db[_0x3e5b('0x29')][_0x3e5b('0x2a')]({'where':{'type':_0x41b684,'resourceId':_0x36d960['id']}})[_0x3e5b('0x27')](function(){return _0x1eb80f;});})[_0x3e5b('0x27')](function(){_0x150674[_0x3e5b('0x1b')](0xcc)[_0x3e5b('0x1a')]();});}};}function handleEntityNotFound(_0x4c4b89,_0x1c7278){return function(_0x505f40){if(!_0x505f40){_0x4c4b89[_0x3e5b('0x19')](0x194);}return _0x505f40;};}function handleError(_0x4fd64b,_0x101653){_0x101653=_0x101653||0x1f4;return function(_0x1f6473){logger[_0x3e5b('0x2b')](_0x1f6473[_0x3e5b('0x2c')]);if(_0x1f6473[_0x3e5b('0x2d')]){delete _0x1f6473[_0x3e5b('0x2d')];}_0x4fd64b[_0x3e5b('0x1b')](_0x101653)[_0x3e5b('0x2e')](_0x1f6473);};}exports[_0x3e5b('0x2f')]=function(_0x112dc0,_0x1e1565){var _0x489221={},_0x21bc10={},_0x1882aa={'count':0x0,'rows':[]};var _0xa8760b=_[_0x3e5b('0x30')](db[_0x3e5b('0x31')][_0x3e5b('0x32')],function(_0x345927){return{'name':_0x345927['fieldName'],'type':_0x345927[_0x3e5b('0x33')]['key']};});_0x21bc10['model']=_[_0x3e5b('0x30')](_0xa8760b,_0x3e5b('0x2d'));_0x21bc10['query']=_[_0x3e5b('0x34')](_0x112dc0[_0x3e5b('0x35')]);_0x21bc10[_0x3e5b('0x36')]=_[_0x3e5b('0x37')](_0x21bc10[_0x3e5b('0x38')],_0x21bc10[_0x3e5b('0x35')]);_0x489221[_0x3e5b('0x39')]=_[_0x3e5b('0x37')](_0x21bc10[_0x3e5b('0x38')],qs[_0x3e5b('0x3a')](_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x3a')]));_0x489221['attributes']=_0x489221[_0x3e5b('0x39')][_0x3e5b('0x3b')]?_0x489221['attributes']:_0x21bc10['model'];if(!_0x112dc0[_0x3e5b('0x35')]['hasOwnProperty'](_0x3e5b('0x3c'))){_0x489221[_0x3e5b('0x1e')]=qs[_0x3e5b('0x1e')](_0x112dc0[_0x3e5b('0x35')]['limit']);_0x489221[_0x3e5b('0x20')]=qs['offset'](_0x112dc0[_0x3e5b('0x35')]['offset']);}_0x489221['order']=qs['sort'](_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x3d')]);_0x489221[_0x3e5b('0x3e')]=qs[_0x3e5b('0x36')](_[_0x3e5b('0x3f')](_0x112dc0[_0x3e5b('0x35')],_0x21bc10['filters']),_0xa8760b);if(_0x112dc0['query']['filter']){_0x489221['where']=_['merge'](_0x489221['where'],{'$or':_['map'](_0xa8760b,function(_0x182bc4){if(_0x182bc4[_0x3e5b('0x33')]!==_0x3e5b('0x40')){var _0x1aafd5={};_0x1aafd5[_0x182bc4[_0x3e5b('0x2d')]]={'$like':'%'+_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x41')]+'%'};return _0x1aafd5;}})});}_0x489221=_[_0x3e5b('0x42')]({},_0x489221,_0x112dc0[_0x3e5b('0x43')]);var _0xbbc6b={'where':_0x489221[_0x3e5b('0x3e')]};return db['AnalyticMetric'][_0x3e5b('0x1f')](_0xbbc6b)[_0x3e5b('0x27')](function(_0x1e8075){_0x1882aa[_0x3e5b('0x1f')]=_0x1e8075;if(_0x112dc0[_0x3e5b('0x35')][_0x3e5b('0x44')]){_0x489221[_0x3e5b('0x45')]=[{'all':!![]}];}return db[_0x3e5b('0x31')][_0x3e5b('0x46')](_0x489221);})[_0x3e5b('0x27')](function(_0x13c8d5){_0x1882aa['rows']=_0x13c8d5;return _0x1882aa;})['then'](respondWithFilteredResult(_0x1e1565,_0x489221))['catch'](handleError(_0x1e1565,null));};exports['show']=function(_0xa99d75,_0x21ee8a){var _0x9fc025={'raw':!![],'where':{'id':_0xa99d75[_0x3e5b('0x47')]['id']}},_0x24c416={};_0x24c416[_0x3e5b('0x38')]=_[_0x3e5b('0x34')](db[_0x3e5b('0x31')][_0x3e5b('0x32')]);_0x24c416[_0x3e5b('0x35')]=_['keys'](_0xa99d75[_0x3e5b('0x35')]);_0x24c416[_0x3e5b('0x36')]=_[_0x3e5b('0x37')](_0x24c416[_0x3e5b('0x38')],_0x24c416[_0x3e5b('0x35')]);_0x9fc025['attributes']=_['intersection'](_0x24c416['model'],qs[_0x3e5b('0x3a')](_0xa99d75[_0x3e5b('0x35')][_0x3e5b('0x3a')]));_0x9fc025['attributes']=_0x9fc025['attributes'][_0x3e5b('0x3b')]?_0x9fc025[_0x3e5b('0x39')]:_0x24c416[_0x3e5b('0x38')];if(_0xa99d75['query']['includeAll']){_0x9fc025[_0x3e5b('0x45')]=[{'all':!![]}];}_0x9fc025=_['merge']({},_0x9fc025,_0xa99d75[_0x3e5b('0x43')]);return db[_0x3e5b('0x31')][_0x3e5b('0x48')](_0x9fc025)[_0x3e5b('0x27')](handleEntityNotFound(_0x21ee8a,null))[_0x3e5b('0x27')](respondWithResult(_0x21ee8a,null))[_0x3e5b('0x49')](handleError(_0x21ee8a,null));};exports[_0x3e5b('0x4a')]=function(_0x3ea5aa,_0x339852){return db['AnalyticMetric'][_0x3e5b('0x4a')](_0x3ea5aa['body'],{})[_0x3e5b('0x27')](function(_0x2e7047){var _0x26e11e=_0x3ea5aa[_0x3e5b('0x4b')][_0x3e5b('0x4c')]({'plain':!![]});if(!_0x26e11e)throw new Error(_0x3e5b('0x4d'));if(_0x26e11e[_0x3e5b('0x4e')]===_0x3e5b('0x4b')){var _0x2b5d3d=_0x2e7047[_0x3e5b('0x4c')]({'plain':!![]});var _0xf6ca5b=_0x3e5b('0x28');return db[_0x3e5b('0x4f')]['find']({'where':{'name':_0xf6ca5b,'userProfileId':_0x26e11e[_0x3e5b('0x50')]},'raw':!![]})[_0x3e5b('0x27')](function(_0x2ca33b){if(_0x2ca33b&&_0x2ca33b[_0x3e5b('0x51')]===0x0){return db[_0x3e5b('0x29')][_0x3e5b('0x4a')]({'name':_0x2b5d3d['name'],'resourceId':_0x2b5d3d['id'],'type':_0x2ca33b[_0x3e5b('0x2d')],'sectionId':_0x2ca33b['id']},{})[_0x3e5b('0x27')](function(){return _0x2e7047;});}else{return _0x2e7047;}})[_0x3e5b('0x49')](function(_0x314d42){logger[_0x3e5b('0x2b')](_0x3e5b('0x52'),_0x314d42);throw _0x314d42;});}return _0x2e7047;})[_0x3e5b('0x27')](respondWithResult(_0x339852,0xc9))[_0x3e5b('0x49')](handleError(_0x339852,null));};exports['update']=function(_0x1e6403,_0x5e702f){if(_0x1e6403['body']['id']){delete _0x1e6403[_0x3e5b('0x53')]['id'];}return db['AnalyticMetric'][_0x3e5b('0x48')]({'where':{'id':_0x1e6403[_0x3e5b('0x47')]['id']}})[_0x3e5b('0x27')](handleEntityNotFound(_0x5e702f,null))[_0x3e5b('0x27')](saveUpdates(_0x1e6403['body'],null))['then'](respondWithResult(_0x5e702f,null))['catch'](handleError(_0x5e702f,null));};exports['destroy']=function(_0x2ab5f3,_0x999518){return db[_0x3e5b('0x31')][_0x3e5b('0x48')]({'where':{'id':_0x2ab5f3[_0x3e5b('0x47')]['id']}})['then'](handleEntityNotFound(_0x999518,null))['then'](removeEntity(_0x999518,null))[_0x3e5b('0x49')](handleError(_0x999518,null));};
\ No newline at end of file
+var _0x9c5a=['update','then','get','Metrics','UserProfileResource','destroy','error','stack','name','send','AnalyticMetric','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','length','include','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','save'];(function(_0x4e7fc1,_0x100df3){var _0x5db4a4=function(_0x229dde){while(--_0x229dde){_0x4e7fc1['push'](_0x4e7fc1['shift']());}};_0x5db4a4(++_0x100df3);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x4d9991,_0x32a539){_0x4d9991=_0x4d9991-0x0;var _0x555cd3=_0x9c5a[_0x4d9991];return _0x555cd3;};'use strict';var emlformat=require(_0xa9c5('0x0'));var rimraf=require(_0xa9c5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa9c5('0x2'));var rp=require(_0xa9c5('0x3'));var moment=require(_0xa9c5('0x4'));var BPromise=require(_0xa9c5('0x5'));var Mustache=require('mustache');var util=require(_0xa9c5('0x6'));var path=require(_0xa9c5('0x7'));var sox=require('sox');var csv=require(_0xa9c5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa9c5('0x9'));var _=require(_0xa9c5('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa9c5('0xb'));var deskjs=require(_0xa9c5('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa9c5('0xd'));var Papa=require(_0xa9c5('0xe'));var Redis=require('ioredis');var authService=require(_0xa9c5('0xf'));var qs=require(_0xa9c5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa9c5('0x11'))(_0xa9c5('0x12'));var utils=require(_0xa9c5('0x13'));var config=require(_0xa9c5('0x14'));var licenseUtil=require(_0xa9c5('0x15'));var db=require(_0xa9c5('0x16'))['db'];function respondWithStatusCode(_0x51c8d,_0x42d5cf){_0x42d5cf=_0x42d5cf||0xcc;return function(_0x3c5ac7){if(_0x3c5ac7){return _0x51c8d[_0xa9c5('0x17')](_0x42d5cf);}return _0x51c8d['status'](_0x42d5cf)[_0xa9c5('0x18')]();};}function respondWithResult(_0x1276d2,_0x7df76d){_0x7df76d=_0x7df76d||0xc8;return function(_0x3806c4){if(_0x3806c4){return _0x1276d2[_0xa9c5('0x19')](_0x7df76d)[_0xa9c5('0x1a')](_0x3806c4);}};}function respondWithFilteredResult(_0x251099,_0x40b001){return function(_0x19a43e){if(_0x19a43e){var _0xcf13f2=typeof _0x40b001['offset']===_0xa9c5('0x1b')&&typeof _0x40b001[_0xa9c5('0x1c')]===_0xa9c5('0x1b');var _0x55cce5=_0x19a43e[_0xa9c5('0x1d')];var _0x1142d9=_0xcf13f2?0x0:_0x40b001[_0xa9c5('0x1e')];var _0x3b8cf7=_0xcf13f2?_0x19a43e[_0xa9c5('0x1d')]:_0x40b001[_0xa9c5('0x1e')]+_0x40b001[_0xa9c5('0x1c')];var _0x1e5ce6;if(_0x3b8cf7>=_0x55cce5){_0x3b8cf7=_0x55cce5;_0x1e5ce6=0xc8;}else{_0x1e5ce6=0xce;}_0x251099[_0xa9c5('0x19')](_0x1e5ce6);return _0x251099[_0xa9c5('0x1f')](_0xa9c5('0x20'),_0x1142d9+'-'+_0x3b8cf7+'/'+_0x55cce5)[_0xa9c5('0x1a')](_0x19a43e);}return null;};}function patchUpdates(_0x54f8b9){return function(_0x1115ad){try{jsonpatch[_0xa9c5('0x21')](_0x1115ad,_0x54f8b9,!![]);}catch(_0x541c77){return BPromise['reject'](_0x541c77);}return _0x1115ad[_0xa9c5('0x22')]();};}function saveUpdates(_0x366f5c,_0x10b208){return function(_0x3b497a){if(_0x3b497a){return _0x3b497a[_0xa9c5('0x23')](_0x366f5c)[_0xa9c5('0x24')](function(_0x48e2cb){return _0x48e2cb;});}return null;};}function removeEntity(_0x4fa280,_0x3d4e1b){return function(_0x11d395){if(_0x11d395){return _0x11d395['destroy']()[_0xa9c5('0x24')](function(){var _0x424b4c=_0x11d395[_0xa9c5('0x25')]({'plain':!![]});var _0x32fc7d=_0xa9c5('0x26');return db[_0xa9c5('0x27')][_0xa9c5('0x28')]({'where':{'type':_0x32fc7d,'resourceId':_0x424b4c['id']}})['then'](function(){return _0x11d395;});})['then'](function(){_0x4fa280[_0xa9c5('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1762ac,_0x830bad){return function(_0x4caefa){if(!_0x4caefa){_0x1762ac[_0xa9c5('0x17')](0x194);}return _0x4caefa;};}function handleError(_0x320dc0,_0x5f468b){_0x5f468b=_0x5f468b||0x1f4;return function(_0x413edf){logger[_0xa9c5('0x29')](_0x413edf[_0xa9c5('0x2a')]);if(_0x413edf[_0xa9c5('0x2b')]){delete _0x413edf[_0xa9c5('0x2b')];}_0x320dc0['status'](_0x5f468b)[_0xa9c5('0x2c')](_0x413edf);};}exports['index']=function(_0x3c3da7,_0x1ef388){var _0x2eeed1={},_0x541475={},_0xc6d0c1={'count':0x0,'rows':[]};var _0xbe29c5=_['map'](db[_0xa9c5('0x2d')][_0xa9c5('0x2e')],function(_0x431e07){return{'name':_0x431e07[_0xa9c5('0x2f')],'type':_0x431e07[_0xa9c5('0x30')][_0xa9c5('0x31')]};});_0x541475[_0xa9c5('0x32')]=_['map'](_0xbe29c5,_0xa9c5('0x2b'));_0x541475[_0xa9c5('0x33')]=_[_0xa9c5('0x34')](_0x3c3da7[_0xa9c5('0x33')]);_0x541475[_0xa9c5('0x35')]=_[_0xa9c5('0x36')](_0x541475[_0xa9c5('0x32')],_0x541475[_0xa9c5('0x33')]);_0x2eeed1['attributes']=_['intersection'](_0x541475[_0xa9c5('0x32')],qs[_0xa9c5('0x37')](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x37')]));_0x2eeed1[_0xa9c5('0x38')]=_0x2eeed1[_0xa9c5('0x38')]['length']?_0x2eeed1['attributes']:_0x541475['model'];if(!_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x39')]('nolimit')){_0x2eeed1[_0xa9c5('0x1c')]=qs['limit'](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x1c')]);_0x2eeed1[_0xa9c5('0x1e')]=qs[_0xa9c5('0x1e')](_0x3c3da7['query'][_0xa9c5('0x1e')]);}_0x2eeed1[_0xa9c5('0x3a')]=qs[_0xa9c5('0x3b')](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3b')]);_0x2eeed1[_0xa9c5('0x3c')]=qs[_0xa9c5('0x35')](_[_0xa9c5('0x3d')](_0x3c3da7['query'],_0x541475[_0xa9c5('0x35')]),_0xbe29c5);if(_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3e')]){_0x2eeed1[_0xa9c5('0x3c')]=_[_0xa9c5('0x3f')](_0x2eeed1[_0xa9c5('0x3c')],{'$or':_['map'](_0xbe29c5,function(_0x307736){if(_0x307736['type']!==_0xa9c5('0x40')){var _0x5c89e7={};_0x5c89e7[_0x307736[_0xa9c5('0x2b')]]={'$like':'%'+_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3e')]+'%'};return _0x5c89e7;}})});}_0x2eeed1=_['merge']({},_0x2eeed1,_0x3c3da7[_0xa9c5('0x41')]);var _0x1ddd72={'where':_0x2eeed1[_0xa9c5('0x3c')]};return db[_0xa9c5('0x2d')]['count'](_0x1ddd72)[_0xa9c5('0x24')](function(_0x97803f){_0xc6d0c1[_0xa9c5('0x1d')]=_0x97803f;if(_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x42')]){_0x2eeed1['include']=[{'all':!![]}];}return db[_0xa9c5('0x2d')]['findAll'](_0x2eeed1);})[_0xa9c5('0x24')](function(_0x397614){_0xc6d0c1[_0xa9c5('0x43')]=_0x397614;return _0xc6d0c1;})[_0xa9c5('0x24')](respondWithFilteredResult(_0x1ef388,_0x2eeed1))[_0xa9c5('0x44')](handleError(_0x1ef388,null));};exports[_0xa9c5('0x45')]=function(_0xf35cb3,_0x3e8633){var _0x1f895a={'raw':!![],'where':{'id':_0xf35cb3['params']['id']}},_0xc28b1a={};_0xc28b1a[_0xa9c5('0x32')]=_[_0xa9c5('0x34')](db[_0xa9c5('0x2d')][_0xa9c5('0x2e')]);_0xc28b1a[_0xa9c5('0x33')]=_[_0xa9c5('0x34')](_0xf35cb3['query']);_0xc28b1a[_0xa9c5('0x35')]=_[_0xa9c5('0x36')](_0xc28b1a['model'],_0xc28b1a['query']);_0x1f895a['attributes']=_['intersection'](_0xc28b1a['model'],qs[_0xa9c5('0x37')](_0xf35cb3[_0xa9c5('0x33')][_0xa9c5('0x37')]));_0x1f895a[_0xa9c5('0x38')]=_0x1f895a[_0xa9c5('0x38')][_0xa9c5('0x46')]?_0x1f895a[_0xa9c5('0x38')]:_0xc28b1a[_0xa9c5('0x32')];if(_0xf35cb3[_0xa9c5('0x33')][_0xa9c5('0x42')]){_0x1f895a[_0xa9c5('0x47')]=[{'all':!![]}];}_0x1f895a=_[_0xa9c5('0x3f')]({},_0x1f895a,_0xf35cb3[_0xa9c5('0x41')]);return db['AnalyticMetric'][_0xa9c5('0x48')](_0x1f895a)['then'](handleEntityNotFound(_0x3e8633,null))[_0xa9c5('0x24')](respondWithResult(_0x3e8633,null))[_0xa9c5('0x44')](handleError(_0x3e8633,null));};exports['create']=function(_0x5cbd33,_0xf00970){return db[_0xa9c5('0x2d')][_0xa9c5('0x49')](_0x5cbd33['body'],{})['then'](function(_0x2333c4){var _0xd03cec=_0x5cbd33['user'][_0xa9c5('0x25')]({'plain':!![]});if(!_0xd03cec)throw new Error(_0xa9c5('0x4a'));if(_0xd03cec[_0xa9c5('0x4b')]===_0xa9c5('0x4c')){var _0x34020f=_0x2333c4[_0xa9c5('0x25')]({'plain':!![]});var _0x4b6fc9='Metrics';return db['UserProfileSection'][_0xa9c5('0x48')]({'where':{'name':_0x4b6fc9,'userProfileId':_0xd03cec[_0xa9c5('0x4d')]},'raw':!![]})[_0xa9c5('0x24')](function(_0xef4d2){if(_0xef4d2&&_0xef4d2[_0xa9c5('0x4e')]===0x0){return db[_0xa9c5('0x27')]['create']({'name':_0x34020f[_0xa9c5('0x2b')],'resourceId':_0x34020f['id'],'type':_0xef4d2[_0xa9c5('0x2b')],'sectionId':_0xef4d2['id']},{})[_0xa9c5('0x24')](function(){return _0x2333c4;});}else{return _0x2333c4;}})[_0xa9c5('0x44')](function(_0xa0b458){logger[_0xa9c5('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xa0b458);throw _0xa0b458;});}return _0x2333c4;})['then'](respondWithResult(_0xf00970,0xc9))[_0xa9c5('0x44')](handleError(_0xf00970,null));};exports['update']=function(_0x1b158f,_0x5ea9b0){if(_0x1b158f[_0xa9c5('0x4f')]['id']){delete _0x1b158f[_0xa9c5('0x4f')]['id'];}return db[_0xa9c5('0x2d')]['find']({'where':{'id':_0x1b158f[_0xa9c5('0x50')]['id']}})[_0xa9c5('0x24')](handleEntityNotFound(_0x5ea9b0,null))[_0xa9c5('0x24')](saveUpdates(_0x1b158f[_0xa9c5('0x4f')],null))['then'](respondWithResult(_0x5ea9b0,null))['catch'](handleError(_0x5ea9b0,null));};exports[_0xa9c5('0x28')]=function(_0x2b66ee,_0x3205f2){return db['AnalyticMetric'][_0xa9c5('0x48')]({'where':{'id':_0x2b66ee[_0xa9c5('0x50')]['id']}})[_0xa9c5('0x24')](handleEntityNotFound(_0x3205f2,null))[_0xa9c5('0x24')](removeEntity(_0x3205f2,null))[_0xa9c5('0x44')](handleError(_0x3205f2,null));};
\ No newline at end of file
index ff36530..0a603ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb242=['./analyticMetric.attributes','exports','define','AnalyticMetric','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x25be49,_0x543a40){var _0xdb79d8=function(_0x26b724){while(--_0x26b724){_0x25be49['push'](_0x25be49['shift']());}};_0xdb79d8(++_0x543a40);}(_0xb242,0x1f3));var _0x2b24=function(_0x3b3210,_0x25e8ed){_0x3b3210=_0x3b3210-0x0;var _0x5b5484=_0xb242[_0x3b3210];return _0x5b5484;};'use strict';var _=require('lodash');var util=require(_0x2b24('0x0'));var logger=require(_0x2b24('0x1'))(_0x2b24('0x2'));var moment=require(_0x2b24('0x3'));var BPromise=require(_0x2b24('0x4'));var rp=require(_0x2b24('0x5'));var fs=require('fs');var path=require(_0x2b24('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2b24('0x7'));module[_0x2b24('0x8')]=function(_0x5c1f57,_0x341c66){return _0x5c1f57[_0x2b24('0x9')](_0x2b24('0xa'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2eb2=['moment','bluebird','request-promise','rimraf','exports','define','AnalyticMetric','analytics_metrics','util','../../config/logger','api'];(function(_0x27bd53,_0x4cb40c){var _0x4eb180=function(_0x16b5b2){while(--_0x16b5b2){_0x27bd53['push'](_0x27bd53['shift']());}};_0x4eb180(++_0x4cb40c);}(_0x2eb2,0x19f));var _0x22eb=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0x2eb2[_0x1c546c];return _0x2cc384;};'use strict';var _=require('lodash');var util=require(_0x22eb('0x0'));var logger=require(_0x22eb('0x1'))(_0x22eb('0x2'));var moment=require(_0x22eb('0x3'));var BPromise=require(_0x22eb('0x4'));var rp=require(_0x22eb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x22eb('0x6'));var config=require('../../config/environment');var attributes=require('./analyticMetric.attributes');module[_0x22eb('0x7')]=function(_0x10e116,_0x35dd5b){return _0x10e116[_0x22eb('0x8')](_0x22eb('0x9'),attributes,{'tableName':_0x22eb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c846738..6af33ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa401=['jayson/promise','client','then','info','debug','error','code','AnalyticMetric,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x5251db,_0x4090f6){var _0x5671e5=function(_0x2b8b4f){while(--_0x2b8b4f){_0x5251db['push'](_0x5251db['shift']());}};_0x5671e5(++_0x4090f6);}(_0xa401,0x1ec));var _0x1a40=function(_0x31beb3,_0x34e44f){_0x31beb3=_0x31beb3-0x0;var _0x5457a8=_0xa401[_0x31beb3];return _0x5457a8;};'use strict';var _=require(_0x1a40('0x0'));var util=require(_0x1a40('0x1'));var moment=require(_0x1a40('0x2'));var BPromise=require(_0x1a40('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1a40('0x4'));var db=require(_0x1a40('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1a40('0x6'))(_0x1a40('0x7'));var config=require('../../config/environment');var jayson=require(_0x1a40('0x8'));var client=jayson[_0x1a40('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31a57f,_0x584be8,_0x289ca9){return new BPromise(function(_0x9ba190,_0x536dae){return client['request'](_0x31a57f,_0x289ca9)[_0x1a40('0xa')](function(_0x4c2c62){logger[_0x1a40('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0x584be8,'request\x20sent');logger[_0x1a40('0xc')]('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x584be8,'request\x20sent',JSON['stringify'](_0x4c2c62));if(_0x4c2c62[_0x1a40('0xd')]){if(_0x4c2c62[_0x1a40('0xd')][_0x1a40('0xe')]===0x1f4){logger[_0x1a40('0xd')](_0x1a40('0xf'),_0x584be8,_0x4c2c62[_0x1a40('0xd')][_0x1a40('0x10')]);return _0x536dae(_0x4c2c62[_0x1a40('0xd')]['message']);}logger[_0x1a40('0xd')](_0x1a40('0xf'),_0x584be8,_0x4c2c62[_0x1a40('0xd')][_0x1a40('0x10')]);return _0x9ba190(_0x4c2c62[_0x1a40('0xd')]['message']);}else{logger[_0x1a40('0xb')](_0x1a40('0xf'),_0x584be8,_0x1a40('0x11'));_0x9ba190(_0x4c2c62[_0x1a40('0x12')][_0x1a40('0x10')]);}})[_0x1a40('0x13')](function(_0x5ca131){logger[_0x1a40('0xd')](_0x1a40('0xf'),_0x584be8,_0x5ca131);_0x536dae(_0x5ca131);});});}
\ No newline at end of file
+var _0x7b90=['client','request','info','AnalyticMetric,\x20%s,\x20%s','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise'];(function(_0x525b28,_0x5cf5a0){var _0x180178=function(_0x43e066){while(--_0x43e066){_0x525b28['push'](_0x525b28['shift']());}};_0x180178(++_0x5cf5a0);}(_0x7b90,0x1c5));var _0x07b9=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x7b90[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x07b9('0x0'));var util=require('util');var moment=require(_0x07b9('0x1'));var BPromise=require(_0x07b9('0x2'));var rs=require(_0x07b9('0x3'));var fs=require('fs');var Redis=require(_0x07b9('0x4'));var db=require(_0x07b9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x07b9('0x6'))('rpc');var config=require(_0x07b9('0x7'));var jayson=require(_0x07b9('0x8'));var client=jayson[_0x07b9('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ff0ce,_0x3e2c70,_0x5b531d){return new BPromise(function(_0x15b26d,_0x191d4b){return client[_0x07b9('0xa')](_0x4ff0ce,_0x5b531d)['then'](function(_0x4eda42){logger[_0x07b9('0xb')](_0x07b9('0xc'),_0x3e2c70,'request\x20sent');logger[_0x07b9('0xd')](_0x07b9('0xe'),_0x3e2c70,'request\x20sent',JSON[_0x07b9('0xf')](_0x4eda42));if(_0x4eda42[_0x07b9('0x10')]){if(_0x4eda42['error'][_0x07b9('0x11')]===0x1f4){logger[_0x07b9('0x10')](_0x07b9('0xc'),_0x3e2c70,_0x4eda42[_0x07b9('0x10')][_0x07b9('0x12')]);return _0x191d4b(_0x4eda42[_0x07b9('0x10')][_0x07b9('0x12')]);}logger[_0x07b9('0x10')](_0x07b9('0xc'),_0x3e2c70,_0x4eda42['error'][_0x07b9('0x12')]);return _0x15b26d(_0x4eda42[_0x07b9('0x10')]['message']);}else{logger[_0x07b9('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0x3e2c70,_0x07b9('0x13'));_0x15b26d(_0x4eda42[_0x07b9('0x14')][_0x07b9('0x12')]);}})['catch'](function(_0x58ad4a){logger[_0x07b9('0x10')](_0x07b9('0xc'),_0x3e2c70,_0x58ad4a);_0x191d4b(_0x58ad4a);});});}
\ No newline at end of file
index a471147..15d486d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','exports','multer','util'];(function(_0x2eae1f,_0x4884bc){var _0x1110dc=function(_0x338ded){while(--_0x338ded){_0x2eae1f['push'](_0x2eae1f['shift']());}};_0x1110dc(++_0x4884bc);}(_0x814b,0x1a2));var _0xb814=function(_0xb096ef,_0x20ebdf){_0xb096ef=_0xb096ef-0x0;var _0x5ac5b=_0x814b[_0xb096ef];return _0x5ac5b;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xe')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0x10')](_0xb814('0xc'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0x12')](_0xb814('0xc'),auth[_0xb814('0xb')](),controller['destroy']);module[_0xb814('0x13')]=router;
\ No newline at end of file
+var _0x24ca=['../../components/auth/service','../../config/environment','./analyticMetric.controller','get','/:id','isAuthenticated','show','post','create','update','destroy','exports','multer','connect-timeout','Router','fs-extra'];(function(_0x20b29c,_0xe22528){var _0x20d81b=function(_0xd63a71){while(--_0xd63a71){_0x20b29c['push'](_0x20b29c['shift']());}};_0x20d81b(++_0xe22528);}(_0x24ca,0x8c));var _0xa24c=function(_0x492af5,_0xd51471){_0x492af5=_0x492af5-0x0;var _0x59f529=_0x24ca[_0x492af5];return _0x59f529;};'use strict';var multer=require(_0xa24c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa24c('0x1'));var express=require('express');var router=express[_0xa24c('0x2')]();var fs_extra=require(_0xa24c('0x3'));var auth=require(_0xa24c('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa24c('0x5'));var controller=require(_0xa24c('0x6'));router[_0xa24c('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xa24c('0x8'),auth[_0xa24c('0x9')](),controller[_0xa24c('0xa')]);router[_0xa24c('0xb')]('/',auth[_0xa24c('0x9')](),controller[_0xa24c('0xc')]);router['put'](_0xa24c('0x8'),auth[_0xa24c('0x9')](),controller[_0xa24c('0xd')]);router['delete']('/:id',auth[_0xa24c('0x9')](),controller[_0xa24c('0xe')]);module[_0xa24c('0xf')]=router;
\ No newline at end of file
index 16ff3d1..14411d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4992=['TEXT'];(function(_0x3c6cf7,_0x3bd3e2){var _0x22c6ac=function(_0x57beb0){while(--_0x57beb0){_0x3c6cf7['push'](_0x3c6cf7['shift']());}};_0x22c6ac(++_0x3bd3e2);}(_0x4992,0xf1));var _0x2499=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0x4992[_0x263a74];return _0x2aa86c;};'use strict';var Sequelize=require('sequelize');module['exports']={'tree':{'type':Sequelize[_0x2499('0x0')],'allowNull':![]}};
\ No newline at end of file
+var _0x28e8=['exports','TEXT','sequelize'];(function(_0x2d1cf5,_0x8212d4){var _0x3edb6e=function(_0x55854e){while(--_0x55854e){_0x2d1cf5['push'](_0x2d1cf5['shift']());}};_0x3edb6e(++_0x8212d4);}(_0x28e8,0x1e2));var _0x828e=function(_0x12e249,_0x41c55c){_0x12e249=_0x12e249-0x0;var _0x556f45=_0x28e8[_0x12e249];return _0x556f45;};'use strict';var Sequelize=require(_0x828e('0x0'));module[_0x828e('0x1')]={'tree':{'type':Sequelize[_0x828e('0x2')],'allowNull':![]}};
\ No newline at end of file
index 242138f..75b7b12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd888=['where','options','include','rows','show','params','includeAll','create','body','find','catch','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/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','AnalyticTreeReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge'];(function(_0x4052f5,_0x3c3b52){var _0x13451e=function(_0x581b91){while(--_0x581b91){_0x4052f5['push'](_0x4052f5['shift']());}};_0x13451e(++_0x3c3b52);}(_0xd888,0x1cd));var _0x8d88=function(_0x16995f,_0x326c0f){_0x16995f=_0x16995f-0x0;var _0x37931a=_0xd888[_0x16995f];return _0x37931a;};'use strict';var emlformat=require(_0x8d88('0x0'));var rimraf=require(_0x8d88('0x1'));var zipdir=require(_0x8d88('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8d88('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8d88('0x4'));var util=require(_0x8d88('0x5'));var path=require(_0x8d88('0x6'));var sox=require(_0x8d88('0x7'));var csv=require(_0x8d88('0x8'));var ejs=require(_0x8d88('0x9'));var fs=require('fs');var fs_extra=require(_0x8d88('0xa'));var _=require(_0x8d88('0xb'));var squel=require(_0x8d88('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x8d88('0xd'));var toCsv=require(_0x8d88('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8d88('0xe'));var authService=require(_0x8d88('0xf'));var qs=require(_0x8d88('0x10'));var as=require(_0x8d88('0x11'));var hardwareService=require(_0x8d88('0x12'));var logger=require(_0x8d88('0x13'))(_0x8d88('0x14'));var utils=require('../../config/utils');var config=require(_0x8d88('0x15'));var licenseUtil=require(_0x8d88('0x16'));var db=require(_0x8d88('0x17'))['db'];function respondWithStatusCode(_0x5a5b1f,_0x534e9c){_0x534e9c=_0x534e9c||0xcc;return function(_0x19f06){if(_0x19f06){return _0x5a5b1f[_0x8d88('0x18')](_0x534e9c);}return _0x5a5b1f[_0x8d88('0x19')](_0x534e9c)[_0x8d88('0x1a')]();};}function respondWithResult(_0x525145,_0x2877d6){_0x2877d6=_0x2877d6||0xc8;return function(_0x3566cc){if(_0x3566cc){return _0x525145['status'](_0x2877d6)[_0x8d88('0x1b')](_0x3566cc);}};}function respondWithFilteredResult(_0x301b02,_0x4b6c9c){return function(_0x24a57a){if(_0x24a57a){var _0x173f56=typeof _0x4b6c9c[_0x8d88('0x1c')]===_0x8d88('0x1d')&&typeof _0x4b6c9c[_0x8d88('0x1e')]===_0x8d88('0x1d');var _0x52b903=_0x24a57a[_0x8d88('0x1f')];var _0x4e7d64=_0x173f56?0x0:_0x4b6c9c[_0x8d88('0x1c')];var _0x55a51a=_0x173f56?_0x24a57a[_0x8d88('0x1f')]:_0x4b6c9c[_0x8d88('0x1c')]+_0x4b6c9c['limit'];var _0x241b3c;if(_0x55a51a>=_0x52b903){_0x55a51a=_0x52b903;_0x241b3c=0xc8;}else{_0x241b3c=0xce;}_0x301b02[_0x8d88('0x19')](_0x241b3c);return _0x301b02[_0x8d88('0x20')](_0x8d88('0x21'),_0x4e7d64+'-'+_0x55a51a+'/'+_0x52b903)['json'](_0x24a57a);}return null;};}function patchUpdates(_0x3be7cf){return function(_0x5d049a){try{jsonpatch[_0x8d88('0x22')](_0x5d049a,_0x3be7cf,!![]);}catch(_0xa8169d){return BPromise[_0x8d88('0x23')](_0xa8169d);}return _0x5d049a[_0x8d88('0x24')]();};}function saveUpdates(_0x57857c,_0x21d763){return function(_0x2f7c56){if(_0x2f7c56){return _0x2f7c56[_0x8d88('0x25')](_0x57857c)[_0x8d88('0x26')](function(_0x3e33ee){return _0x3e33ee;});}return null;};}function removeEntity(_0x45a50a,_0x20101b){return function(_0x4c9367){if(_0x4c9367){return _0x4c9367[_0x8d88('0x27')]()['then'](function(){_0x45a50a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x42309b,_0x447283){return function(_0x4f4a3d){if(!_0x4f4a3d){_0x42309b[_0x8d88('0x18')](0x194);}return _0x4f4a3d;};}function handleError(_0x2e5f76,_0x2efe68){_0x2efe68=_0x2efe68||0x1f4;return function(_0x28acfb){logger['error'](_0x28acfb[_0x8d88('0x28')]);if(_0x28acfb[_0x8d88('0x29')]){delete _0x28acfb[_0x8d88('0x29')];}_0x2e5f76[_0x8d88('0x19')](_0x2efe68)[_0x8d88('0x2a')](_0x28acfb);};}exports[_0x8d88('0x2b')]=function(_0x2cc2ae,_0x281aee){var _0x4d4e48={},_0x34c4c2={},_0x4a65a9={'count':0x0,'rows':[]};var _0x4d8d8b=_[_0x8d88('0x2c')](db[_0x8d88('0x2d')][_0x8d88('0x2e')],function(_0x3fd583){return{'name':_0x3fd583[_0x8d88('0x2f')],'type':_0x3fd583[_0x8d88('0x30')][_0x8d88('0x31')]};});_0x34c4c2[_0x8d88('0x32')]=_[_0x8d88('0x2c')](_0x4d8d8b,_0x8d88('0x29'));_0x34c4c2[_0x8d88('0x33')]=_[_0x8d88('0x34')](_0x2cc2ae[_0x8d88('0x33')]);_0x34c4c2[_0x8d88('0x35')]=_[_0x8d88('0x36')](_0x34c4c2[_0x8d88('0x32')],_0x34c4c2[_0x8d88('0x33')]);_0x4d4e48['attributes']=_[_0x8d88('0x36')](_0x34c4c2[_0x8d88('0x32')],qs[_0x8d88('0x37')](_0x2cc2ae[_0x8d88('0x33')][_0x8d88('0x37')]));_0x4d4e48['attributes']=_0x4d4e48[_0x8d88('0x38')][_0x8d88('0x39')]?_0x4d4e48[_0x8d88('0x38')]:_0x34c4c2[_0x8d88('0x32')];if(!_0x2cc2ae[_0x8d88('0x33')][_0x8d88('0x3a')](_0x8d88('0x3b'))){_0x4d4e48[_0x8d88('0x1e')]=qs[_0x8d88('0x1e')](_0x2cc2ae[_0x8d88('0x33')][_0x8d88('0x1e')]);_0x4d4e48[_0x8d88('0x1c')]=qs[_0x8d88('0x1c')](_0x2cc2ae[_0x8d88('0x33')][_0x8d88('0x1c')]);}_0x4d4e48[_0x8d88('0x3c')]=qs[_0x8d88('0x3d')](_0x2cc2ae[_0x8d88('0x33')][_0x8d88('0x3d')]);_0x4d4e48['where']=qs[_0x8d88('0x35')](_['pick'](_0x2cc2ae[_0x8d88('0x33')],_0x34c4c2[_0x8d88('0x35')]),_0x4d8d8b);if(_0x2cc2ae[_0x8d88('0x33')][_0x8d88('0x3e')]){_0x4d4e48['where']=_[_0x8d88('0x3f')](_0x4d4e48[_0x8d88('0x40')],{'$or':_['map'](_0x4d8d8b,function(_0x3a300c){if(_0x3a300c['type']!=='VIRTUAL'){var _0x9720b4={};_0x9720b4[_0x3a300c['name']]={'$like':'%'+_0x2cc2ae[_0x8d88('0x33')][_0x8d88('0x3e')]+'%'};return _0x9720b4;}})});}_0x4d4e48=_[_0x8d88('0x3f')]({},_0x4d4e48,_0x2cc2ae[_0x8d88('0x41')]);var _0x3b2e64={'where':_0x4d4e48[_0x8d88('0x40')]};return db[_0x8d88('0x2d')]['count'](_0x3b2e64)[_0x8d88('0x26')](function(_0x1486e3){_0x4a65a9[_0x8d88('0x1f')]=_0x1486e3;if(_0x2cc2ae[_0x8d88('0x33')]['includeAll']){_0x4d4e48[_0x8d88('0x42')]=[{'all':!![]}];}return db['AnalyticTreeReport']['findAll'](_0x4d4e48);})[_0x8d88('0x26')](function(_0x130674){_0x4a65a9[_0x8d88('0x43')]=_0x130674;return _0x4a65a9;})[_0x8d88('0x26')](respondWithFilteredResult(_0x281aee,_0x4d4e48))['catch'](handleError(_0x281aee,null));};exports[_0x8d88('0x44')]=function(_0x492715,_0x299575){var _0x3031fb={'raw':!![],'where':{'id':_0x492715[_0x8d88('0x45')]['id']}},_0x2461f3={};_0x2461f3[_0x8d88('0x32')]=_['keys'](db[_0x8d88('0x2d')][_0x8d88('0x2e')]);_0x2461f3['query']=_[_0x8d88('0x34')](_0x492715[_0x8d88('0x33')]);_0x2461f3[_0x8d88('0x35')]=_[_0x8d88('0x36')](_0x2461f3[_0x8d88('0x32')],_0x2461f3[_0x8d88('0x33')]);_0x3031fb[_0x8d88('0x38')]=_[_0x8d88('0x36')](_0x2461f3[_0x8d88('0x32')],qs['fields'](_0x492715[_0x8d88('0x33')][_0x8d88('0x37')]));_0x3031fb[_0x8d88('0x38')]=_0x3031fb[_0x8d88('0x38')][_0x8d88('0x39')]?_0x3031fb[_0x8d88('0x38')]:_0x2461f3[_0x8d88('0x32')];if(_0x492715[_0x8d88('0x33')][_0x8d88('0x46')]){_0x3031fb[_0x8d88('0x42')]=[{'all':!![]}];}_0x3031fb=_['merge']({},_0x3031fb,_0x492715[_0x8d88('0x41')]);return db[_0x8d88('0x2d')]['find'](_0x3031fb)[_0x8d88('0x26')](handleEntityNotFound(_0x299575,null))['then'](respondWithResult(_0x299575,null))['catch'](handleError(_0x299575,null));};exports[_0x8d88('0x47')]=function(_0xd080ed,_0x285c45){return db[_0x8d88('0x2d')][_0x8d88('0x47')](_0xd080ed['body'],{})[_0x8d88('0x26')](respondWithResult(_0x285c45,0xc9))['catch'](handleError(_0x285c45,null));};exports[_0x8d88('0x25')]=function(_0x4c6a50,_0x378cc3){if(_0x4c6a50[_0x8d88('0x48')]['id']){delete _0x4c6a50[_0x8d88('0x48')]['id'];}return db['AnalyticTreeReport'][_0x8d88('0x49')]({'where':{'id':_0x4c6a50[_0x8d88('0x45')]['id']}})[_0x8d88('0x26')](handleEntityNotFound(_0x378cc3,null))[_0x8d88('0x26')](saveUpdates(_0x4c6a50[_0x8d88('0x48')],null))[_0x8d88('0x26')](respondWithResult(_0x378cc3,null))[_0x8d88('0x4a')](handleError(_0x378cc3,null));};exports[_0x8d88('0x27')]=function(_0x51170e,_0x1117fc){return db[_0x8d88('0x2d')][_0x8d88('0x49')]({'where':{'id':_0x51170e[_0x8d88('0x45')]['id']}})[_0x8d88('0x26')](handleEntityNotFound(_0x1117fc,null))[_0x8d88('0x26')](removeEntity(_0x1117fc,null))[_0x8d88('0x4a')](handleError(_0x1117fc,null));};
\ No newline at end of file
+var _0xfe0f=['../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','send','index','map','AnalyticTreeReport','rawAttributes','type','key','name','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','keys','fields','includeAll','find','create','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util'];(function(_0x3f1431,_0x361a12){var _0x3e780f=function(_0x492c68){while(--_0x492c68){_0x3f1431['push'](_0x3f1431['shift']());}};_0x3e780f(++_0x361a12);}(_0xfe0f,0x1bd));var _0xffe0=function(_0x33e483,_0x3678f9){_0x33e483=_0x33e483-0x0;var _0x2d34dc=_0xfe0f[_0x33e483];return _0x2d34dc;};'use strict';var emlformat=require(_0xffe0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xffe0('0x1'));var jsonpatch=require(_0xffe0('0x2'));var rp=require('request-promise');var moment=require(_0xffe0('0x3'));var BPromise=require(_0xffe0('0x4'));var Mustache=require(_0xffe0('0x5'));var util=require(_0xffe0('0x6'));var path=require(_0xffe0('0x7'));var sox=require(_0xffe0('0x8'));var csv=require('to-csv');var ejs=require(_0xffe0('0x9'));var fs=require('fs');var fs_extra=require(_0xffe0('0xa'));var _=require(_0xffe0('0xb'));var squel=require(_0xffe0('0xc'));var crypto=require('crypto');var jsforce=require(_0xffe0('0xd'));var deskjs=require(_0xffe0('0xe'));var toCsv=require(_0xffe0('0xf'));var querystring=require(_0xffe0('0x10'));var Papa=require(_0xffe0('0x11'));var Redis=require(_0xffe0('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xffe0('0x13'));var as=require(_0xffe0('0x14'));var hardwareService=require(_0xffe0('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xffe0('0x16'));var db=require(_0xffe0('0x17'))['db'];function respondWithStatusCode(_0x5ccb81,_0x47db5a){_0x47db5a=_0x47db5a||0xcc;return function(_0x52c8e5){if(_0x52c8e5){return _0x5ccb81['sendStatus'](_0x47db5a);}return _0x5ccb81[_0xffe0('0x18')](_0x47db5a)[_0xffe0('0x19')]();};}function respondWithResult(_0x1f4a21,_0x292ec0){_0x292ec0=_0x292ec0||0xc8;return function(_0x227fc1){if(_0x227fc1){return _0x1f4a21[_0xffe0('0x18')](_0x292ec0)[_0xffe0('0x1a')](_0x227fc1);}};}function respondWithFilteredResult(_0xace243,_0xa6fffa){return function(_0x4e8a80){if(_0x4e8a80){var _0x3b3a9c=typeof _0xa6fffa[_0xffe0('0x1b')]===_0xffe0('0x1c')&&typeof _0xa6fffa['limit']===_0xffe0('0x1c');var _0x2f87db=_0x4e8a80[_0xffe0('0x1d')];var _0x279e89=_0x3b3a9c?0x0:_0xa6fffa[_0xffe0('0x1b')];var _0x10681b=_0x3b3a9c?_0x4e8a80['count']:_0xa6fffa['offset']+_0xa6fffa['limit'];var _0x2b415b;if(_0x10681b>=_0x2f87db){_0x10681b=_0x2f87db;_0x2b415b=0xc8;}else{_0x2b415b=0xce;}_0xace243['status'](_0x2b415b);return _0xace243[_0xffe0('0x1e')](_0xffe0('0x1f'),_0x279e89+'-'+_0x10681b+'/'+_0x2f87db)['json'](_0x4e8a80);}return null;};}function patchUpdates(_0x761227){return function(_0x4be9bd){try{jsonpatch[_0xffe0('0x20')](_0x4be9bd,_0x761227,!![]);}catch(_0xa6d48e){return BPromise[_0xffe0('0x21')](_0xa6d48e);}return _0x4be9bd[_0xffe0('0x22')]();};}function saveUpdates(_0x255857,_0x3e4f66){return function(_0x2da2fc){if(_0x2da2fc){return _0x2da2fc[_0xffe0('0x23')](_0x255857)[_0xffe0('0x24')](function(_0x5a3745){return _0x5a3745;});}return null;};}function removeEntity(_0x149d2a,_0x1b5e19){return function(_0x3f673e){if(_0x3f673e){return _0x3f673e[_0xffe0('0x25')]()[_0xffe0('0x24')](function(){_0x149d2a['status'](0xcc)[_0xffe0('0x19')]();});}};}function handleEntityNotFound(_0x416fac,_0x80f716){return function(_0x2417ab){if(!_0x2417ab){_0x416fac[_0xffe0('0x26')](0x194);}return _0x2417ab;};}function handleError(_0x32cdca,_0x2935c6){_0x2935c6=_0x2935c6||0x1f4;return function(_0x5293a7){logger[_0xffe0('0x27')](_0x5293a7[_0xffe0('0x28')]);if(_0x5293a7['name']){delete _0x5293a7['name'];}_0x32cdca['status'](_0x2935c6)[_0xffe0('0x29')](_0x5293a7);};}exports[_0xffe0('0x2a')]=function(_0x85d180,_0x5e34b6){var _0x4223e4={},_0x12a105={},_0x74e89={'count':0x0,'rows':[]};var _0x27e638=_[_0xffe0('0x2b')](db[_0xffe0('0x2c')][_0xffe0('0x2d')],function(_0x5b7e4f){return{'name':_0x5b7e4f['fieldName'],'type':_0x5b7e4f[_0xffe0('0x2e')][_0xffe0('0x2f')]};});_0x12a105['model']=_['map'](_0x27e638,_0xffe0('0x30'));_0x12a105[_0xffe0('0x31')]=_['keys'](_0x85d180[_0xffe0('0x31')]);_0x12a105[_0xffe0('0x32')]=_[_0xffe0('0x33')](_0x12a105[_0xffe0('0x34')],_0x12a105[_0xffe0('0x31')]);_0x4223e4['attributes']=_[_0xffe0('0x33')](_0x12a105[_0xffe0('0x34')],qs['fields'](_0x85d180[_0xffe0('0x31')]['fields']));_0x4223e4[_0xffe0('0x35')]=_0x4223e4[_0xffe0('0x35')][_0xffe0('0x36')]?_0x4223e4[_0xffe0('0x35')]:_0x12a105[_0xffe0('0x34')];if(!_0x85d180[_0xffe0('0x31')][_0xffe0('0x37')](_0xffe0('0x38'))){_0x4223e4[_0xffe0('0x39')]=qs[_0xffe0('0x39')](_0x85d180[_0xffe0('0x31')][_0xffe0('0x39')]);_0x4223e4[_0xffe0('0x1b')]=qs[_0xffe0('0x1b')](_0x85d180[_0xffe0('0x31')][_0xffe0('0x1b')]);}_0x4223e4[_0xffe0('0x3a')]=qs[_0xffe0('0x3b')](_0x85d180[_0xffe0('0x31')][_0xffe0('0x3b')]);_0x4223e4[_0xffe0('0x3c')]=qs[_0xffe0('0x32')](_[_0xffe0('0x3d')](_0x85d180[_0xffe0('0x31')],_0x12a105[_0xffe0('0x32')]),_0x27e638);if(_0x85d180[_0xffe0('0x31')]['filter']){_0x4223e4[_0xffe0('0x3c')]=_[_0xffe0('0x3e')](_0x4223e4[_0xffe0('0x3c')],{'$or':_[_0xffe0('0x2b')](_0x27e638,function(_0x19f4b0){if(_0x19f4b0[_0xffe0('0x2e')]!==_0xffe0('0x3f')){var _0xe0bcf9={};_0xe0bcf9[_0x19f4b0[_0xffe0('0x30')]]={'$like':'%'+_0x85d180[_0xffe0('0x31')][_0xffe0('0x40')]+'%'};return _0xe0bcf9;}})});}_0x4223e4=_[_0xffe0('0x3e')]({},_0x4223e4,_0x85d180[_0xffe0('0x41')]);var _0x42295e={'where':_0x4223e4[_0xffe0('0x3c')]};return db['AnalyticTreeReport'][_0xffe0('0x1d')](_0x42295e)[_0xffe0('0x24')](function(_0x32f6a9){_0x74e89[_0xffe0('0x1d')]=_0x32f6a9;if(_0x85d180[_0xffe0('0x31')]['includeAll']){_0x4223e4[_0xffe0('0x42')]=[{'all':!![]}];}return db[_0xffe0('0x2c')][_0xffe0('0x43')](_0x4223e4);})[_0xffe0('0x24')](function(_0x3149ac){_0x74e89[_0xffe0('0x44')]=_0x3149ac;return _0x74e89;})['then'](respondWithFilteredResult(_0x5e34b6,_0x4223e4))[_0xffe0('0x45')](handleError(_0x5e34b6,null));};exports[_0xffe0('0x46')]=function(_0x537e9c,_0xeb78aa){var _0x5aaaaa={'raw':!![],'where':{'id':_0x537e9c[_0xffe0('0x47')]['id']}},_0x38411f={};_0x38411f[_0xffe0('0x34')]=_['keys'](db[_0xffe0('0x2c')][_0xffe0('0x2d')]);_0x38411f[_0xffe0('0x31')]=_[_0xffe0('0x48')](_0x537e9c[_0xffe0('0x31')]);_0x38411f[_0xffe0('0x32')]=_['intersection'](_0x38411f['model'],_0x38411f[_0xffe0('0x31')]);_0x5aaaaa['attributes']=_['intersection'](_0x38411f[_0xffe0('0x34')],qs[_0xffe0('0x49')](_0x537e9c[_0xffe0('0x31')]['fields']));_0x5aaaaa['attributes']=_0x5aaaaa[_0xffe0('0x35')]['length']?_0x5aaaaa[_0xffe0('0x35')]:_0x38411f[_0xffe0('0x34')];if(_0x537e9c[_0xffe0('0x31')][_0xffe0('0x4a')]){_0x5aaaaa[_0xffe0('0x42')]=[{'all':!![]}];}_0x5aaaaa=_[_0xffe0('0x3e')]({},_0x5aaaaa,_0x537e9c[_0xffe0('0x41')]);return db[_0xffe0('0x2c')][_0xffe0('0x4b')](_0x5aaaaa)[_0xffe0('0x24')](handleEntityNotFound(_0xeb78aa,null))[_0xffe0('0x24')](respondWithResult(_0xeb78aa,null))[_0xffe0('0x45')](handleError(_0xeb78aa,null));};exports[_0xffe0('0x4c')]=function(_0x2093ef,_0x4fff91){return db[_0xffe0('0x2c')][_0xffe0('0x4c')](_0x2093ef[_0xffe0('0x4d')],{})[_0xffe0('0x24')](respondWithResult(_0x4fff91,0xc9))[_0xffe0('0x45')](handleError(_0x4fff91,null));};exports[_0xffe0('0x23')]=function(_0xdf1a63,_0x3a1396){if(_0xdf1a63[_0xffe0('0x4d')]['id']){delete _0xdf1a63[_0xffe0('0x4d')]['id'];}return db[_0xffe0('0x2c')][_0xffe0('0x4b')]({'where':{'id':_0xdf1a63[_0xffe0('0x47')]['id']}})['then'](handleEntityNotFound(_0x3a1396,null))[_0xffe0('0x24')](saveUpdates(_0xdf1a63[_0xffe0('0x4d')],null))[_0xffe0('0x24')](respondWithResult(_0x3a1396,null))['catch'](handleError(_0x3a1396,null));};exports[_0xffe0('0x25')]=function(_0x121d6e,_0xe705ca){return db[_0xffe0('0x2c')][_0xffe0('0x4b')]({'where':{'id':_0x121d6e[_0xffe0('0x47')]['id']}})[_0xffe0('0x24')](handleEntityNotFound(_0xe705ca,null))[_0xffe0('0x24')](removeEntity(_0xe705ca,null))['catch'](handleError(_0xe705ca,null));};
\ No newline at end of file
index 988196a..faa25d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d85=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','analytics_report_trees','util'];(function(_0x5ee7b4,_0x7eb24f){var _0x5bbf00=function(_0x2a6957){while(--_0x2a6957){_0x5ee7b4['push'](_0x5ee7b4['shift']());}};_0x5bbf00(++_0x7eb24f);}(_0x4d85,0x1c6));var _0x54d8=function(_0x143698,_0x3b736f){_0x143698=_0x143698-0x0;var _0x319aa6=_0x4d85[_0x143698];return _0x319aa6;};'use strict';var _=require('lodash');var util=require(_0x54d8('0x0'));var logger=require(_0x54d8('0x1'))(_0x54d8('0x2'));var moment=require(_0x54d8('0x3'));var BPromise=require(_0x54d8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x54d8('0x5'));var rimraf=require(_0x54d8('0x6'));var config=require(_0x54d8('0x7'));var attributes=require(_0x54d8('0x8'));module[_0x54d8('0x9')]=function(_0x8f5843,_0x3e1698){return _0x8f5843[_0x54d8('0xa')](_0x54d8('0xb'),attributes,{'tableName':_0x54d8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x76ce=['rimraf','exports','define','AnalyticTreeReport','lodash','util','api','moment','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x76ce,0x126));var _0xe76c=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0x76ce[_0x34bf97];return _0x292719;};'use strict';var _=require(_0xe76c('0x0'));var util=require(_0xe76c('0x1'));var logger=require('../../config/logger')(_0xe76c('0x2'));var moment=require(_0xe76c('0x3'));var BPromise=require('bluebird');var rp=require(_0xe76c('0x4'));var fs=require('fs');var path=require(_0xe76c('0x5'));var rimraf=require(_0xe76c('0x6'));var config=require('../../config/environment');var attributes=require('./analyticTreeReport.attributes');module[_0xe76c('0x7')]=function(_0x2147e5,_0x448e1b){return _0x2147e5[_0xe76c('0x8')](_0xe76c('0x9'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5843d1b..aef9698 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x3530e1,_0x1c9d26){var _0x94c8=function(_0x53534b){while(--_0x53534b){_0x3530e1['push'](_0x3530e1['shift']());}};_0x94c8(++_0x1c9d26);}(_0x5f66,0x1a0));var _0x65f6=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x5f66[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('AnalyticTreeReport,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
+var _0x1261=['then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','AnalyticTreeReport,\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(_0x91f898,_0x5d45f1){var _0x40ca6c=function(_0x1ea7d2){while(--_0x1ea7d2){_0x91f898['push'](_0x91f898['shift']());}};_0x40ca6c(++_0x5d45f1);}(_0x1261,0x144));var _0x1126=function(_0x186222,_0x3bdfb0){_0x186222=_0x186222-0x0;var _0x226a38=_0x1261[_0x186222];return _0x226a38;};'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')]('AnalyticTreeReport,\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 6cebfe9..d950ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x731c=['/:id','show','put','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','index','get'];(function(_0x2709fa,_0x372a67){var _0x112e87=function(_0x44799f){while(--_0x44799f){_0x2709fa['push'](_0x2709fa['shift']());}};_0x112e87(++_0x372a67);}(_0x731c,0x138));var _0xc731=function(_0x60ee66,_0x3ff0a6){_0x60ee66=_0x60ee66-0x0;var _0x369e2f=_0x731c[_0x60ee66];return _0x369e2f;};'use strict';var multer=require('multer');var util=require(_0xc731('0x0'));var path=require(_0xc731('0x1'));var timeout=require(_0xc731('0x2'));var express=require('express');var router=express[_0xc731('0x3')]();var fs_extra=require(_0xc731('0x4'));var auth=require(_0xc731('0x5'));var interaction=require(_0xc731('0x6'));var config=require(_0xc731('0x7'));var controller=require(_0xc731('0x8'));router['get']('/',auth[_0xc731('0x9')](),controller[_0xc731('0xa')]);router[_0xc731('0xb')](_0xc731('0xc'),auth[_0xc731('0x9')](),controller[_0xc731('0xd')]);router['post']('/',auth[_0xc731('0x9')](),controller['create']);router[_0xc731('0xe')](_0xc731('0xc'),auth[_0xc731('0x9')](),controller[_0xc731('0xf')]);router['delete'](_0xc731('0xc'),auth[_0xc731('0x9')](),controller[_0xc731('0x10')]);module[_0xc731('0x11')]=router;
\ No newline at end of file
+var _0xcde1=['fs-extra','../../components/auth/service','../../components/interaction/service','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','show','post','create','destroy','multer','util','path','express','Router'];(function(_0x545e64,_0x356844){var _0x13dbef=function(_0x516ff6){while(--_0x516ff6){_0x545e64['push'](_0x545e64['shift']());}};_0x13dbef(++_0x356844);}(_0xcde1,0xfa));var _0x1cde=function(_0x1b7ca4,_0xa3654a){_0x1b7ca4=_0x1b7ca4-0x0;var _0x577dbd=_0xcde1[_0x1b7ca4];return _0x577dbd;};'use strict';var multer=require(_0x1cde('0x0'));var util=require(_0x1cde('0x1'));var path=require(_0x1cde('0x2'));var timeout=require('connect-timeout');var express=require(_0x1cde('0x3'));var router=express[_0x1cde('0x4')]();var fs_extra=require(_0x1cde('0x5'));var auth=require(_0x1cde('0x6'));var interaction=require(_0x1cde('0x7'));var config=require('../../config/environment');var controller=require(_0x1cde('0x8'));router[_0x1cde('0x9')]('/',auth[_0x1cde('0xa')](),controller[_0x1cde('0xb')]);router[_0x1cde('0x9')](_0x1cde('0xc'),auth[_0x1cde('0xa')](),controller[_0x1cde('0xd')]);router[_0x1cde('0xe')]('/',auth['isAuthenticated'](),controller[_0x1cde('0xf')]);router['put'](_0x1cde('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x1cde('0xc'),auth[_0x1cde('0xa')](),controller[_0x1cde('0x10')]);module['exports']=router;
\ No newline at end of file
index aff8b56..bdfc377 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc678=['STRING'];(function(_0xc3d6fc,_0x32ca0b){var _0x4d2acc=function(_0xda09){while(--_0xda09){_0xc3d6fc['push'](_0xc3d6fc['shift']());}};_0x4d2acc(++_0x32ca0b);}(_0xc678,0x1b4));var _0x8c67=function(_0x4346bf,_0x4ddc61){_0x4346bf=_0x4346bf-0x0;var _0x3541f9=_0xc678[_0x4346bf];return _0x3541f9;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8c67('0x0')]},'basename':{'type':Sequelize[_0x8c67('0x0')]},'type':{'type':Sequelize[_0x8c67('0x0')]}};
\ No newline at end of file
+var _0xc17f=['STRING','sequelize','exports'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc17f,0xb8));var _0xfc17=function(_0x2edbf9,_0x1f52a9){_0x2edbf9=_0x2edbf9-0x0;var _0x3f0791=_0xc17f[_0x2edbf9];return _0x3f0791;};'use strict';var Sequelize=require(_0xfc17('0x0'));module[_0xfc17('0x1')]={'name':{'type':Sequelize[_0xfc17('0x2')]},'basename':{'type':Sequelize[_0xfc17('0x2')]},'type':{'type':Sequelize[_0xfc17('0x2')]}};
\ No newline at end of file
index b1800b5..1a55795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56e7=['VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','keys','options','find','get','omit','createdAt','updatedAt','body','params','create','file','originalname','basename','filename','mimetype','download','findOne','root','server/files/attachments/','join','offline-chat/','rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','index','map','Attachment','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter'];(function(_0x45f6a3,_0x5667f5){var _0x379fd2=function(_0x17d8ef){while(--_0x17d8ef){_0x45f6a3['push'](_0x45f6a3['shift']());}};_0x379fd2(++_0x5667f5);}(_0x56e7,0xcd));var _0x756e=function(_0x28f105,_0x1c5ba0){_0x28f105=_0x28f105-0x0;var _0x33aa8a=_0x56e7[_0x28f105];return _0x33aa8a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x756e('0x0'));var zipdir=require(_0x756e('0x1'));var jsonpatch=require(_0x756e('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x756e('0x3'));var path=require(_0x756e('0x4'));var sox=require(_0x756e('0x5'));var csv=require(_0x756e('0x6'));var ejs=require(_0x756e('0x7'));var fs=require('fs');var fs_extra=require(_0x756e('0x8'));var _=require('lodash');var squel=require(_0x756e('0x9'));var crypto=require(_0x756e('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x756e('0xb'));var toCsv=require('to-csv');var querystring=require(_0x756e('0xc'));var Papa=require(_0x756e('0xd'));var Redis=require(_0x756e('0xe'));var authService=require(_0x756e('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x756e('0x10'));var hardwareService=require(_0x756e('0x11'));var logger=require(_0x756e('0x12'))('api');var utils=require(_0x756e('0x13'));var config=require(_0x756e('0x14'));var licenseUtil=require(_0x756e('0x15'));var db=require(_0x756e('0x16'))['db'];function respondWithStatusCode(_0x5a204f,_0x59dc58){_0x59dc58=_0x59dc58||0xcc;return function(_0x1c669e){if(_0x1c669e){return _0x5a204f[_0x756e('0x17')](_0x59dc58);}return _0x5a204f[_0x756e('0x18')](_0x59dc58)[_0x756e('0x19')]();};}function respondWithResult(_0x5b7762,_0xe80944){_0xe80944=_0xe80944||0xc8;return function(_0x6ac509){if(_0x6ac509){return _0x5b7762[_0x756e('0x18')](_0xe80944)['json'](_0x6ac509);}};}function respondWithFilteredResult(_0xfeb1c6,_0x1f3906){return function(_0x2269d6){if(_0x2269d6){var _0x14c251=typeof _0x1f3906[_0x756e('0x1a')]===_0x756e('0x1b')&&typeof _0x1f3906[_0x756e('0x1c')]===_0x756e('0x1b');var _0x10752e=_0x2269d6[_0x756e('0x1d')];var _0x35e89a=_0x14c251?0x0:_0x1f3906[_0x756e('0x1a')];var _0xf7368a=_0x14c251?_0x2269d6[_0x756e('0x1d')]:_0x1f3906[_0x756e('0x1a')]+_0x1f3906[_0x756e('0x1c')];var _0x581c48;if(_0xf7368a>=_0x10752e){_0xf7368a=_0x10752e;_0x581c48=0xc8;}else{_0x581c48=0xce;}_0xfeb1c6[_0x756e('0x18')](_0x581c48);return _0xfeb1c6[_0x756e('0x1e')](_0x756e('0x1f'),_0x35e89a+'-'+_0xf7368a+'/'+_0x10752e)[_0x756e('0x20')](_0x2269d6);}return null;};}function patchUpdates(_0x3faf33){return function(_0xeb09b1){try{jsonpatch['apply'](_0xeb09b1,_0x3faf33,!![]);}catch(_0x40e1f0){return BPromise[_0x756e('0x21')](_0x40e1f0);}return _0xeb09b1[_0x756e('0x22')]();};}function saveUpdates(_0x3668a4,_0x3c10bb){return function(_0x102c85){if(_0x102c85){return _0x102c85[_0x756e('0x23')](_0x3668a4)[_0x756e('0x24')](function(_0x49ae1c){return _0x49ae1c;});}return null;};}function removeEntity(_0x5f461a,_0x56c7e4){return function(_0x4c7282){if(_0x4c7282){return _0x4c7282[_0x756e('0x25')]()[_0x756e('0x24')](function(){_0x5f461a[_0x756e('0x18')](0xcc)[_0x756e('0x19')]();});}};}function handleEntityNotFound(_0x829905,_0xd94eba){return function(_0x4b952a){if(!_0x4b952a){_0x829905[_0x756e('0x17')](0x194);}return _0x4b952a;};}function handleError(_0x172b6b,_0x46a86b){_0x46a86b=_0x46a86b||0x1f4;return function(_0x3c3129){logger[_0x756e('0x26')](_0x3c3129[_0x756e('0x27')]);if(_0x3c3129['name']){delete _0x3c3129[_0x756e('0x28')];}_0x172b6b[_0x756e('0x18')](_0x46a86b)['send'](_0x3c3129);};}exports[_0x756e('0x29')]=function(_0x511796,_0x4bd1f9){var _0x19a140={},_0x5c670a={},_0x264a76={'count':0x0,'rows':[]};var _0x3178fb=_[_0x756e('0x2a')](db[_0x756e('0x2b')][_0x756e('0x2c')],function(_0x11fc02){return{'name':_0x11fc02[_0x756e('0x2d')],'type':_0x11fc02[_0x756e('0x2e')]['key']};});_0x5c670a[_0x756e('0x2f')]=_[_0x756e('0x2a')](_0x3178fb,'name');_0x5c670a[_0x756e('0x30')]=_['keys'](_0x511796['query']);_0x5c670a[_0x756e('0x31')]=_[_0x756e('0x32')](_0x5c670a[_0x756e('0x2f')],_0x5c670a[_0x756e('0x30')]);_0x19a140[_0x756e('0x33')]=_['intersection'](_0x5c670a[_0x756e('0x2f')],qs[_0x756e('0x34')](_0x511796['query'][_0x756e('0x34')]));_0x19a140[_0x756e('0x33')]=_0x19a140[_0x756e('0x33')][_0x756e('0x35')]?_0x19a140[_0x756e('0x33')]:_0x5c670a[_0x756e('0x2f')];if(!_0x511796['query'][_0x756e('0x36')]('nolimit')){_0x19a140[_0x756e('0x1c')]=qs[_0x756e('0x1c')](_0x511796['query'][_0x756e('0x1c')]);_0x19a140[_0x756e('0x1a')]=qs[_0x756e('0x1a')](_0x511796[_0x756e('0x30')][_0x756e('0x1a')]);}_0x19a140['order']=qs[_0x756e('0x37')](_0x511796['query'][_0x756e('0x37')]);_0x19a140[_0x756e('0x38')]=qs[_0x756e('0x31')](_[_0x756e('0x39')](_0x511796[_0x756e('0x30')],_0x5c670a[_0x756e('0x31')]),_0x3178fb);if(_0x511796[_0x756e('0x30')][_0x756e('0x3a')]){_0x19a140[_0x756e('0x38')]=_['merge'](_0x19a140[_0x756e('0x38')],{'$or':_[_0x756e('0x2a')](_0x3178fb,function(_0x39d45a){if(_0x39d45a[_0x756e('0x2e')]!==_0x756e('0x3b')){var _0x15acc0={};_0x15acc0[_0x39d45a['name']]={'$like':'%'+_0x511796['query'][_0x756e('0x3a')]+'%'};return _0x15acc0;}})});}_0x19a140=_[_0x756e('0x3c')]({},_0x19a140,_0x511796['options']);var _0x4c7482={'where':_0x19a140['where']};return db[_0x756e('0x2b')][_0x756e('0x1d')](_0x4c7482)[_0x756e('0x24')](function(_0x4b48f2){_0x264a76[_0x756e('0x1d')]=_0x4b48f2;if(_0x511796[_0x756e('0x30')][_0x756e('0x3d')]){_0x19a140[_0x756e('0x3e')]=[{'all':!![]}];}return db['Attachment'][_0x756e('0x3f')](_0x19a140);})['then'](function(_0x43e8f7){_0x264a76[_0x756e('0x40')]=_0x43e8f7;return _0x264a76;})['then'](respondWithFilteredResult(_0x4bd1f9,_0x19a140))[_0x756e('0x41')](handleError(_0x4bd1f9,null));};exports[_0x756e('0x42')]=function(_0x51aa09,_0x4de975){var _0x22c7dd={'raw':!![],'where':{'id':_0x51aa09['params']['id']}},_0x3fa8e1={};_0x3fa8e1[_0x756e('0x2f')]=_['keys'](db[_0x756e('0x2b')][_0x756e('0x2c')]);_0x3fa8e1['query']=_[_0x756e('0x43')](_0x51aa09[_0x756e('0x30')]);_0x3fa8e1[_0x756e('0x31')]=_['intersection'](_0x3fa8e1['model'],_0x3fa8e1[_0x756e('0x30')]);_0x22c7dd[_0x756e('0x33')]=_['intersection'](_0x3fa8e1['model'],qs[_0x756e('0x34')](_0x51aa09[_0x756e('0x30')][_0x756e('0x34')]));_0x22c7dd[_0x756e('0x33')]=_0x22c7dd['attributes'][_0x756e('0x35')]?_0x22c7dd[_0x756e('0x33')]:_0x3fa8e1['model'];if(_0x51aa09['query'][_0x756e('0x3d')]){_0x22c7dd[_0x756e('0x3e')]=[{'all':!![]}];}_0x22c7dd=_[_0x756e('0x3c')]({},_0x22c7dd,_0x51aa09[_0x756e('0x44')]);return db['Attachment']['find'](_0x22c7dd)[_0x756e('0x24')](handleEntityNotFound(_0x4de975,null))[_0x756e('0x24')](respondWithResult(_0x4de975,null))[_0x756e('0x41')](handleError(_0x4de975,null));};exports['clone']=function(_0x42d452,_0x37a917){var _0x4a8f17={'where':{'id':_0x42d452['params']['id']}},_0x22017f={};_0x22017f[_0x756e('0x2f')]=_['keys'](db[_0x756e('0x2b')][_0x756e('0x2c')]);_0x4a8f17['attributes']=_[_0x756e('0x32')](_0x22017f[_0x756e('0x2f')],qs[_0x756e('0x34')](_0x42d452['query'][_0x756e('0x34')]));_0x4a8f17[_0x756e('0x33')]=_0x4a8f17['attributes'][_0x756e('0x35')]?_0x4a8f17[_0x756e('0x33')]:_0x22017f[_0x756e('0x2f')];if(_0x42d452['query']['includeAll']){_0x4a8f17['include']=[{'all':!![]}];}_0x4a8f17=_['merge']({},_0x4a8f17,_0x42d452[_0x756e('0x44')]);return db[_0x756e('0x2b')][_0x756e('0x45')](_0x4a8f17)['then'](handleEntityNotFound(_0x37a917,null))[_0x756e('0x24')](function(_0x13efd3){if(_0x13efd3){var _0x4dce5a=_0x13efd3[_0x756e('0x46')]({'plain':!![]});_0x4dce5a=qs[_0x756e('0x47')](_0x4dce5a,['id',_0x756e('0x48'),_0x756e('0x49')]);_0x42d452[_0x756e('0x4a')]=_['omit'](_0x42d452[_0x756e('0x4a')],['id',_0x756e('0x48'),_0x756e('0x49')]);return db[_0x756e('0x2b')]['create'](_[_0x756e('0x3c')](_0x4dce5a,_0x42d452[_0x756e('0x4a')]),{'include':_0x42d452[_0x756e('0x30')]['includeAll']?[{'all':!![]}]:undefined});}})[_0x756e('0x24')](respondWithResult(_0x37a917,0xc9))[_0x756e('0x41')](handleError(_0x37a917,null));};exports[_0x756e('0x23')]=function(_0x21b17f,_0x2d3f53){if(_0x21b17f[_0x756e('0x4a')]['id']){delete _0x21b17f[_0x756e('0x4a')]['id'];}return db[_0x756e('0x2b')][_0x756e('0x45')]({'where':{'id':_0x21b17f[_0x756e('0x4b')]['id']}})[_0x756e('0x24')](handleEntityNotFound(_0x2d3f53,null))[_0x756e('0x24')](saveUpdates(_0x21b17f['body'],null))[_0x756e('0x24')](respondWithResult(_0x2d3f53,null))[_0x756e('0x41')](handleError(_0x2d3f53,null));};exports[_0x756e('0x25')]=function(_0x10c6aa,_0x58d5d7){return db[_0x756e('0x2b')]['find']({'where':{'id':_0x10c6aa[_0x756e('0x4b')]['id']}})[_0x756e('0x24')](handleEntityNotFound(_0x58d5d7,null))[_0x756e('0x24')](removeEntity(_0x58d5d7,null))[_0x756e('0x41')](handleError(_0x58d5d7,null));};exports[_0x756e('0x4c')]=function(_0x2f7a17,_0x55c6ac,_0xa3714d){_0x2f7a17[_0x756e('0x4a')]['name']=_0x2f7a17[_0x756e('0x4d')][_0x756e('0x4e')];_0x2f7a17[_0x756e('0x4a')][_0x756e('0x4f')]=_0x2f7a17[_0x756e('0x4d')][_0x756e('0x50')];_0x2f7a17[_0x756e('0x4a')][_0x756e('0x2e')]=_0x2f7a17[_0x756e('0x4d')][_0x756e('0x51')];return db[_0x756e('0x2b')][_0x756e('0x4c')](_0x2f7a17['body'])[_0x756e('0x24')](respondWithResult(_0x55c6ac,0xc9))[_0x756e('0x41')](handleError(_0x55c6ac,null));};exports[_0x756e('0x52')]=function(_0x5928cc,_0x4bb954,_0xa1d230){return db[_0x756e('0x2b')][_0x756e('0x53')]({'where':{'id':_0x5928cc[_0x756e('0x4b')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x4bb954,null))[_0x756e('0x24')](function(_0x30929c){if(_0x30929c){var _0x455d69=_0x30929c['ChatOfflineMessageId']!==null;var _0x3cf51c=path['join'](config[_0x756e('0x54')],_0x756e('0x55'));if(_0x455d69){_0x3cf51c=path[_0x756e('0x56')](_0x3cf51c,_0x756e('0x57'));}var _0x1dac29=path[_0x756e('0x56')](_0x3cf51c,_0x30929c[_0x756e('0x4f')]);return _0x4bb954[_0x756e('0x52')](_0x1dac29);}})[_0x756e('0x41')](handleError(_0x4bb954,null));};
\ No newline at end of file
+var _0x7c67=['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','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','stack','name','index','map','Attachment','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','show','params','rawAttributes','intersection','find','catch','clone','get','createdAt','updatedAt','body','omit','create','destroy','file','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x11c93f,_0x2d876a){var _0x47160e=function(_0xcf45fd){while(--_0xcf45fd){_0x11c93f['push'](_0x11c93f['shift']());}};_0x47160e(++_0x2d876a);}(_0x7c67,0x1ba));var _0x77c6=function(_0x35ae04,_0x2b95a6){_0x35ae04=_0x35ae04-0x0;var _0x31c457=_0x7c67[_0x35ae04];return _0x31c457;};'use strict';var emlformat=require(_0x77c6('0x0'));var rimraf=require(_0x77c6('0x1'));var zipdir=require(_0x77c6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x77c6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x77c6('0x4'));var util=require(_0x77c6('0x5'));var path=require(_0x77c6('0x6'));var sox=require('sox');var csv=require(_0x77c6('0x7'));var ejs=require(_0x77c6('0x8'));var fs=require('fs');var fs_extra=require(_0x77c6('0x9'));var _=require(_0x77c6('0xa'));var squel=require(_0x77c6('0xb'));var crypto=require(_0x77c6('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x77c6('0xd'));var toCsv=require(_0x77c6('0x7'));var querystring=require(_0x77c6('0xe'));var Papa=require(_0x77c6('0xf'));var Redis=require(_0x77c6('0x10'));var authService=require(_0x77c6('0x11'));var qs=require(_0x77c6('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77c6('0x13'));var logger=require(_0x77c6('0x14'))(_0x77c6('0x15'));var utils=require(_0x77c6('0x16'));var config=require(_0x77c6('0x17'));var licenseUtil=require(_0x77c6('0x18'));var db=require(_0x77c6('0x19'))['db'];function respondWithStatusCode(_0x303924,_0x458bd8){_0x458bd8=_0x458bd8||0xcc;return function(_0x5dfed7){if(_0x5dfed7){return _0x303924[_0x77c6('0x1a')](_0x458bd8);}return _0x303924[_0x77c6('0x1b')](_0x458bd8)[_0x77c6('0x1c')]();};}function respondWithResult(_0x5ec396,_0x5f476a){_0x5f476a=_0x5f476a||0xc8;return function(_0x4e992f){if(_0x4e992f){return _0x5ec396[_0x77c6('0x1b')](_0x5f476a)['json'](_0x4e992f);}};}function respondWithFilteredResult(_0x15420e,_0x711f43){return function(_0x4a0d63){if(_0x4a0d63){var _0x4e805e=typeof _0x711f43[_0x77c6('0x1d')]===_0x77c6('0x1e')&&typeof _0x711f43[_0x77c6('0x1f')]===_0x77c6('0x1e');var _0x3144a9=_0x4a0d63[_0x77c6('0x20')];var _0xd63804=_0x4e805e?0x0:_0x711f43[_0x77c6('0x1d')];var _0x53dcd6=_0x4e805e?_0x4a0d63[_0x77c6('0x20')]:_0x711f43[_0x77c6('0x1d')]+_0x711f43['limit'];var _0x4f8ed9;if(_0x53dcd6>=_0x3144a9){_0x53dcd6=_0x3144a9;_0x4f8ed9=0xc8;}else{_0x4f8ed9=0xce;}_0x15420e['status'](_0x4f8ed9);return _0x15420e[_0x77c6('0x21')](_0x77c6('0x22'),_0xd63804+'-'+_0x53dcd6+'/'+_0x3144a9)[_0x77c6('0x23')](_0x4a0d63);}return null;};}function patchUpdates(_0x60929c){return function(_0x201779){try{jsonpatch[_0x77c6('0x24')](_0x201779,_0x60929c,!![]);}catch(_0x38f582){return BPromise['reject'](_0x38f582);}return _0x201779[_0x77c6('0x25')]();};}function saveUpdates(_0x6e7938,_0x505015){return function(_0x56bbd8){if(_0x56bbd8){return _0x56bbd8[_0x77c6('0x26')](_0x6e7938)[_0x77c6('0x27')](function(_0x95781f){return _0x95781f;});}return null;};}function removeEntity(_0x458abd,_0x2a6a5e){return function(_0x2b51d4){if(_0x2b51d4){return _0x2b51d4['destroy']()[_0x77c6('0x27')](function(){_0x458abd[_0x77c6('0x1b')](0xcc)[_0x77c6('0x1c')]();});}};}function handleEntityNotFound(_0x3c2a5e,_0x5e1ffc){return function(_0xcb436b){if(!_0xcb436b){_0x3c2a5e[_0x77c6('0x1a')](0x194);}return _0xcb436b;};}function handleError(_0x5c992e,_0x4b2619){_0x4b2619=_0x4b2619||0x1f4;return function(_0x2fd6c3){logger['error'](_0x2fd6c3[_0x77c6('0x28')]);if(_0x2fd6c3[_0x77c6('0x29')]){delete _0x2fd6c3[_0x77c6('0x29')];}_0x5c992e[_0x77c6('0x1b')](_0x4b2619)['send'](_0x2fd6c3);};}exports[_0x77c6('0x2a')]=function(_0xd10cc0,_0x22e3e9){var _0x13c4a0={},_0x34a002={},_0x2438a7={'count':0x0,'rows':[]};var _0x376734=_[_0x77c6('0x2b')](db[_0x77c6('0x2c')]['rawAttributes'],function(_0x33b38a){return{'name':_0x33b38a[_0x77c6('0x2d')],'type':_0x33b38a[_0x77c6('0x2e')][_0x77c6('0x2f')]};});_0x34a002[_0x77c6('0x30')]=_[_0x77c6('0x2b')](_0x376734,_0x77c6('0x29'));_0x34a002[_0x77c6('0x31')]=_[_0x77c6('0x32')](_0xd10cc0[_0x77c6('0x31')]);_0x34a002[_0x77c6('0x33')]=_['intersection'](_0x34a002['model'],_0x34a002[_0x77c6('0x31')]);_0x13c4a0[_0x77c6('0x34')]=_['intersection'](_0x34a002['model'],qs[_0x77c6('0x35')](_0xd10cc0[_0x77c6('0x31')]['fields']));_0x13c4a0[_0x77c6('0x34')]=_0x13c4a0[_0x77c6('0x34')][_0x77c6('0x36')]?_0x13c4a0['attributes']:_0x34a002[_0x77c6('0x30')];if(!_0xd10cc0[_0x77c6('0x31')][_0x77c6('0x37')]('nolimit')){_0x13c4a0[_0x77c6('0x1f')]=qs[_0x77c6('0x1f')](_0xd10cc0[_0x77c6('0x31')]['limit']);_0x13c4a0[_0x77c6('0x1d')]=qs['offset'](_0xd10cc0['query'][_0x77c6('0x1d')]);}_0x13c4a0[_0x77c6('0x38')]=qs[_0x77c6('0x39')](_0xd10cc0[_0x77c6('0x31')][_0x77c6('0x39')]);_0x13c4a0[_0x77c6('0x3a')]=qs[_0x77c6('0x33')](_[_0x77c6('0x3b')](_0xd10cc0[_0x77c6('0x31')],_0x34a002[_0x77c6('0x33')]),_0x376734);if(_0xd10cc0['query'][_0x77c6('0x3c')]){_0x13c4a0['where']=_[_0x77c6('0x3d')](_0x13c4a0[_0x77c6('0x3a')],{'$or':_[_0x77c6('0x2b')](_0x376734,function(_0x20dcc3){if(_0x20dcc3[_0x77c6('0x2e')]!==_0x77c6('0x3e')){var _0x3dc909={};_0x3dc909[_0x20dcc3[_0x77c6('0x29')]]={'$like':'%'+_0xd10cc0[_0x77c6('0x31')]['filter']+'%'};return _0x3dc909;}})});}_0x13c4a0=_[_0x77c6('0x3d')]({},_0x13c4a0,_0xd10cc0[_0x77c6('0x3f')]);var _0x355c5a={'where':_0x13c4a0[_0x77c6('0x3a')]};return db[_0x77c6('0x2c')]['count'](_0x355c5a)[_0x77c6('0x27')](function(_0x4189d8){_0x2438a7[_0x77c6('0x20')]=_0x4189d8;if(_0xd10cc0[_0x77c6('0x31')][_0x77c6('0x40')]){_0x13c4a0[_0x77c6('0x41')]=[{'all':!![]}];}return db[_0x77c6('0x2c')]['findAll'](_0x13c4a0);})['then'](function(_0x3d5590){_0x2438a7['rows']=_0x3d5590;return _0x2438a7;})['then'](respondWithFilteredResult(_0x22e3e9,_0x13c4a0))['catch'](handleError(_0x22e3e9,null));};exports[_0x77c6('0x42')]=function(_0x4982d2,_0xa8520c){var _0x44731d={'raw':!![],'where':{'id':_0x4982d2[_0x77c6('0x43')]['id']}},_0x5d7c2f={};_0x5d7c2f[_0x77c6('0x30')]=_[_0x77c6('0x32')](db[_0x77c6('0x2c')][_0x77c6('0x44')]);_0x5d7c2f[_0x77c6('0x31')]=_[_0x77c6('0x32')](_0x4982d2['query']);_0x5d7c2f[_0x77c6('0x33')]=_[_0x77c6('0x45')](_0x5d7c2f[_0x77c6('0x30')],_0x5d7c2f[_0x77c6('0x31')]);_0x44731d['attributes']=_[_0x77c6('0x45')](_0x5d7c2f['model'],qs[_0x77c6('0x35')](_0x4982d2[_0x77c6('0x31')]['fields']));_0x44731d[_0x77c6('0x34')]=_0x44731d[_0x77c6('0x34')][_0x77c6('0x36')]?_0x44731d[_0x77c6('0x34')]:_0x5d7c2f[_0x77c6('0x30')];if(_0x4982d2[_0x77c6('0x31')]['includeAll']){_0x44731d[_0x77c6('0x41')]=[{'all':!![]}];}_0x44731d=_[_0x77c6('0x3d')]({},_0x44731d,_0x4982d2[_0x77c6('0x3f')]);return db['Attachment'][_0x77c6('0x46')](_0x44731d)[_0x77c6('0x27')](handleEntityNotFound(_0xa8520c,null))[_0x77c6('0x27')](respondWithResult(_0xa8520c,null))[_0x77c6('0x47')](handleError(_0xa8520c,null));};exports[_0x77c6('0x48')]=function(_0x9a4971,_0x54c392){var _0x3f7dea={'where':{'id':_0x9a4971['params']['id']}},_0x4ffe3e={};_0x4ffe3e[_0x77c6('0x30')]=_[_0x77c6('0x32')](db[_0x77c6('0x2c')][_0x77c6('0x44')]);_0x3f7dea[_0x77c6('0x34')]=_[_0x77c6('0x45')](_0x4ffe3e[_0x77c6('0x30')],qs[_0x77c6('0x35')](_0x9a4971[_0x77c6('0x31')][_0x77c6('0x35')]));_0x3f7dea[_0x77c6('0x34')]=_0x3f7dea['attributes']['length']?_0x3f7dea['attributes']:_0x4ffe3e['model'];if(_0x9a4971[_0x77c6('0x31')][_0x77c6('0x40')]){_0x3f7dea[_0x77c6('0x41')]=[{'all':!![]}];}_0x3f7dea=_['merge']({},_0x3f7dea,_0x9a4971[_0x77c6('0x3f')]);return db['Attachment'][_0x77c6('0x46')](_0x3f7dea)['then'](handleEntityNotFound(_0x54c392,null))[_0x77c6('0x27')](function(_0x5b3cae){if(_0x5b3cae){var _0x2f22de=_0x5b3cae[_0x77c6('0x49')]({'plain':!![]});_0x2f22de=qs['omit'](_0x2f22de,['id',_0x77c6('0x4a'),_0x77c6('0x4b')]);_0x9a4971[_0x77c6('0x4c')]=_[_0x77c6('0x4d')](_0x9a4971['body'],['id',_0x77c6('0x4a'),_0x77c6('0x4b')]);return db[_0x77c6('0x2c')][_0x77c6('0x4e')](_[_0x77c6('0x3d')](_0x2f22de,_0x9a4971[_0x77c6('0x4c')]),{'include':_0x9a4971[_0x77c6('0x31')][_0x77c6('0x40')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x54c392,0xc9))[_0x77c6('0x47')](handleError(_0x54c392,null));};exports[_0x77c6('0x26')]=function(_0x35ea90,_0x344331){if(_0x35ea90['body']['id']){delete _0x35ea90[_0x77c6('0x4c')]['id'];}return db[_0x77c6('0x2c')][_0x77c6('0x46')]({'where':{'id':_0x35ea90[_0x77c6('0x43')]['id']}})[_0x77c6('0x27')](handleEntityNotFound(_0x344331,null))['then'](saveUpdates(_0x35ea90[_0x77c6('0x4c')],null))[_0x77c6('0x27')](respondWithResult(_0x344331,null))[_0x77c6('0x47')](handleError(_0x344331,null));};exports[_0x77c6('0x4f')]=function(_0x36d493,_0x127370){return db[_0x77c6('0x2c')][_0x77c6('0x46')]({'where':{'id':_0x36d493['params']['id']}})[_0x77c6('0x27')](handleEntityNotFound(_0x127370,null))[_0x77c6('0x27')](removeEntity(_0x127370,null))[_0x77c6('0x47')](handleError(_0x127370,null));};exports[_0x77c6('0x4e')]=function(_0x2f6172,_0x10ee38,_0x3d810e){_0x2f6172['body']['name']=_0x2f6172[_0x77c6('0x50')]['originalname'];_0x2f6172[_0x77c6('0x4c')][_0x77c6('0x51')]=_0x2f6172['file'][_0x77c6('0x52')];_0x2f6172[_0x77c6('0x4c')][_0x77c6('0x2e')]=_0x2f6172[_0x77c6('0x50')][_0x77c6('0x53')];return db[_0x77c6('0x2c')][_0x77c6('0x4e')](_0x2f6172[_0x77c6('0x4c')])[_0x77c6('0x27')](respondWithResult(_0x10ee38,0xc9))[_0x77c6('0x47')](handleError(_0x10ee38,null));};exports[_0x77c6('0x54')]=function(_0x4a495e,_0x31167c,_0x203a99){return db[_0x77c6('0x2c')][_0x77c6('0x55')]({'where':{'id':_0x4a495e[_0x77c6('0x43')]['id']},'raw':!![]})[_0x77c6('0x27')](handleEntityNotFound(_0x31167c,null))[_0x77c6('0x27')](function(_0x117ac2){if(_0x117ac2){var _0xad5d01=_0x117ac2[_0x77c6('0x56')]!==null;var _0x44af45=path[_0x77c6('0x57')](config[_0x77c6('0x58')],_0x77c6('0x59'));if(_0xad5d01){_0x44af45=path[_0x77c6('0x57')](_0x44af45,_0x77c6('0x5a'));}var _0x334937=path[_0x77c6('0x57')](_0x44af45,_0x117ac2[_0x77c6('0x51')]);return _0x31167c['download'](_0x334937);}})['catch'](handleError(_0x31167c,null));};
\ No newline at end of file
index 3fa21d4..d33e27c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7726=['request-promise','rimraf','../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash','util','../../config/logger','api','bluebird'];(function(_0x39f6a8,_0x47a635){var _0x26ed2c=function(_0x5dedbf){while(--_0x5dedbf){_0x39f6a8['push'](_0x39f6a8['shift']());}};_0x26ed2c(++_0x47a635);}(_0x7726,0xff));var _0x6772=function(_0x3585e9,_0x54b683){_0x3585e9=_0x3585e9-0x0;var _0x2d88dd=_0x7726[_0x3585e9];return _0x2d88dd;};'use strict';var _=require(_0x6772('0x0'));var util=require(_0x6772('0x1'));var logger=require(_0x6772('0x2'))(_0x6772('0x3'));var moment=require('moment');var BPromise=require(_0x6772('0x4'));var rp=require(_0x6772('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6772('0x6'));var config=require(_0x6772('0x7'));var attributes=require(_0x6772('0x8'));module[_0x6772('0x9')]=function(_0x533638,_0x50410d){return _0x533638[_0x6772('0xa')](_0x6772('0xb'),attributes,{'tableName':_0x6772('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9687=['path','rimraf','../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5cc85f,_0x57bcc4){var _0x29d3cc=function(_0x2b2dc7){while(--_0x2b2dc7){_0x5cc85f['push'](_0x5cc85f['shift']());}};_0x29d3cc(++_0x57bcc4);}(_0x9687,0xda));var _0x7968=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x9687[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x7968('0x0'));var util=require(_0x7968('0x1'));var logger=require(_0x7968('0x2'))(_0x7968('0x3'));var moment=require(_0x7968('0x4'));var BPromise=require(_0x7968('0x5'));var rp=require(_0x7968('0x6'));var fs=require('fs');var path=require(_0x7968('0x7'));var rimraf=require(_0x7968('0x8'));var config=require(_0x7968('0x9'));var attributes=require(_0x7968('0xa'));module[_0x7968('0xb')]=function(_0x3945f1,_0x36b28a){return _0x3945f1[_0x7968('0xc')](_0x7968('0xd'),attributes,{'tableName':_0x7968('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 836fd20..7899bac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8868=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','Attachment,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','CreateAttachment','Attachment','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x8868,0x1ca));var _0x8886=function(_0x26c119,_0x2fbdb8){_0x26c119=_0x26c119-0x0;var _0x316deb=_0x8868[_0x26c119];return _0x316deb;};'use strict';var _=require(_0x8886('0x0'));var util=require(_0x8886('0x1'));var moment=require(_0x8886('0x2'));var BPromise=require(_0x8886('0x3'));var rs=require(_0x8886('0x4'));var fs=require('fs');var Redis=require(_0x8886('0x5'));var db=require(_0x8886('0x6'))['db'];var utils=require(_0x8886('0x7'));var logger=require(_0x8886('0x8'))(_0x8886('0x9'));var config=require(_0x8886('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8886('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x26b94d,_0x5e2a73,_0x1a85e1){return new BPromise(function(_0x56b9fa,_0x147fc9){return client[_0x8886('0xc')](_0x26b94d,_0x1a85e1)[_0x8886('0xd')](function(_0x39036d){logger[_0x8886('0xe')](_0x8886('0xf'),_0x5e2a73,'request\x20sent');logger[_0x8886('0x10')]('Attachment,\x20%s,\x20%s,\x20%s',_0x5e2a73,'request\x20sent',JSON[_0x8886('0x11')](_0x39036d));if(_0x39036d['error']){if(_0x39036d[_0x8886('0x12')][_0x8886('0x13')]===0x1f4){logger[_0x8886('0x12')](_0x8886('0xf'),_0x5e2a73,_0x39036d['error'][_0x8886('0x14')]);return _0x147fc9(_0x39036d[_0x8886('0x12')]['message']);}logger[_0x8886('0x12')]('Attachment,\x20%s,\x20%s',_0x5e2a73,_0x39036d[_0x8886('0x12')][_0x8886('0x14')]);return _0x56b9fa(_0x39036d[_0x8886('0x12')][_0x8886('0x14')]);}else{logger['info']('Attachment,\x20%s,\x20%s',_0x5e2a73,_0x8886('0x15'));_0x56b9fa(_0x39036d[_0x8886('0x16')]['message']);}})['catch'](function(_0x563a82){logger['error'](_0x8886('0xf'),_0x5e2a73,_0x563a82);_0x147fc9(_0x563a82);});});}exports[_0x8886('0x17')]=function(_0x1d47a6){var _0x5504ab=this;return new Promise(function(_0xb13c62,_0x20072e){return db[_0x8886('0x18')][_0x8886('0x19')](_0x1d47a6[_0x8886('0x1a')],{'raw':_0x1d47a6[_0x8886('0x1b')]?_0x1d47a6[_0x8886('0x1b')][_0x8886('0x1c')]===undefined?!![]:![]:!![]})[_0x8886('0xd')](function(_0x19f0ef){logger['info'](_0x8886('0x17'),_0x1d47a6);logger['debug'](_0x8886('0x17'),_0x1d47a6,JSON[_0x8886('0x11')](_0x19f0ef));_0xb13c62(_0x19f0ef);})['catch'](function(_0x3894a0){logger[_0x8886('0x12')](_0x8886('0x17'),_0x3894a0[_0x8886('0x14')],_0x1d47a6);_0x20072e(_0x5504ab[_0x8886('0x12')](0x1f4,_0x3894a0[_0x8886('0x14')]));});});};
\ No newline at end of file
+var _0xff96=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Attachment,\x20%s,\x20%s','catch','body','options','raw','CreateAttachment'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xff96,0x179));var _0x6ff9=function(_0x536380,_0x3f79d5){_0x536380=_0x536380-0x0;var _0xd2229d=_0xff96[_0x536380];return _0xd2229d;};'use strict';var _=require(_0x6ff9('0x0'));var util=require(_0x6ff9('0x1'));var moment=require(_0x6ff9('0x2'));var BPromise=require(_0x6ff9('0x3'));var rs=require(_0x6ff9('0x4'));var fs=require('fs');var Redis=require(_0x6ff9('0x5'));var db=require(_0x6ff9('0x6'))['db'];var utils=require(_0x6ff9('0x7'));var logger=require(_0x6ff9('0x8'))(_0x6ff9('0x9'));var config=require(_0x6ff9('0xa'));var jayson=require(_0x6ff9('0xb'));var client=jayson['client'][_0x6ff9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5509ee,_0x502cf2,_0x4f982b){return new BPromise(function(_0x5d56f4,_0x2b1b7d){return client[_0x6ff9('0xd')](_0x5509ee,_0x4f982b)[_0x6ff9('0xe')](function(_0x1ce5a3){logger[_0x6ff9('0xf')]('Attachment,\x20%s,\x20%s',_0x502cf2,_0x6ff9('0x10'));logger[_0x6ff9('0x11')](_0x6ff9('0x12'),_0x502cf2,_0x6ff9('0x10'),JSON[_0x6ff9('0x13')](_0x1ce5a3));if(_0x1ce5a3[_0x6ff9('0x14')]){if(_0x1ce5a3[_0x6ff9('0x14')][_0x6ff9('0x15')]===0x1f4){logger[_0x6ff9('0x14')]('Attachment,\x20%s,\x20%s',_0x502cf2,_0x1ce5a3['error'][_0x6ff9('0x16')]);return _0x2b1b7d(_0x1ce5a3['error'][_0x6ff9('0x16')]);}logger[_0x6ff9('0x14')](_0x6ff9('0x17'),_0x502cf2,_0x1ce5a3['error']['message']);return _0x5d56f4(_0x1ce5a3[_0x6ff9('0x14')][_0x6ff9('0x16')]);}else{logger[_0x6ff9('0xf')](_0x6ff9('0x17'),_0x502cf2,'request\x20sent');_0x5d56f4(_0x1ce5a3['result'][_0x6ff9('0x16')]);}})[_0x6ff9('0x18')](function(_0x3d4268){logger[_0x6ff9('0x14')](_0x6ff9('0x17'),_0x502cf2,_0x3d4268);_0x2b1b7d(_0x3d4268);});});}exports['CreateAttachment']=function(_0xc00da6){var _0x4756be=this;return new Promise(function(_0xc7724f,_0x5b0a94){return db['Attachment']['create'](_0xc00da6[_0x6ff9('0x19')],{'raw':_0xc00da6[_0x6ff9('0x1a')]?_0xc00da6[_0x6ff9('0x1a')][_0x6ff9('0x1b')]===undefined?!![]:![]:!![]})[_0x6ff9('0xe')](function(_0x4e926e){logger[_0x6ff9('0xf')](_0x6ff9('0x1c'),_0xc00da6);logger[_0x6ff9('0x11')](_0x6ff9('0x1c'),_0xc00da6,JSON[_0x6ff9('0x13')](_0x4e926e));_0xc7724f(_0x4e926e);})[_0x6ff9('0x18')](function(_0x50f207){logger[_0x6ff9('0x14')](_0x6ff9('0x1c'),_0x50f207['message'],_0xc00da6);_0x5b0a94(_0x4756be[_0x6ff9('0x14')](0x1f4,_0x50f207[_0x6ff9('0x16')]));});});};
\ No newline at end of file
index 84b44d3..00494bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x287a47,_0x2f731c){var _0x3fb726=function(_0xbedc33){while(--_0xbedc33){_0x287a47['push'](_0x287a47['shift']());}};_0x3fb726(++_0x2f731c);}(_0x5f66,0x1a0));var _0x65f6=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x5f66[_0x580576];return _0x3f55a0;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
+var _0x0b0e=['/:id/clone','clone','diskStorage','join','server/files/attachments/','format','now','originalname','replace','single','create','/:id','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','isAuthenticated','index','show','/:id/download','post'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x0b0e,0x187));var _0xe0b0=function(_0x367361,_0x311488){_0x367361=_0x367361-0x0;var _0x195d2d=_0x0b0e[_0x367361];return _0x195d2d;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['download']);router[_0xe0b0('0xe')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x10')]);var upload=multer({'storage':multer[_0xe0b0('0x11')]({'destination':function(_0x574d96,_0x399320,_0x2cdad2){_0x2cdad2(null,path[_0xe0b0('0x12')](config['root'],_0xe0b0('0x13')));},'filename':function(_0x1c358a,_0x3cc19a,_0x45f914){_0x45f914(null,util[_0xe0b0('0x14')]('%s-%s',Date[_0xe0b0('0x15')](),_0x3cc19a[_0xe0b0('0x16')][_0xe0b0('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xe0b0('0xe')]('/',upload[_0xe0b0('0x18')]('file'),controller[_0xe0b0('0x19')]);router['put'](_0xe0b0('0x1a'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x1b')]('/:id',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x1c')]);module['exports']=router;
\ No newline at end of file
index bb37a39..de7bd75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74bd=['Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','add','minutes','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb','../../config/environment','../../components/auth/service','../../config/utils','login','google','/login','authenticate','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','blockDuration','then','find','map','emails','value','admin','user','agent','disabled'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x74bd,0x97));var _0xd74b=function(_0x2c3255,_0x4e00ae){_0x2c3255=_0x2c3255-0x0;var _0x282aba=_0x74bd[_0x2c3255];return _0x282aba;};'use strict';var _=require(_0xd74b('0x0'));var passport=require(_0xd74b('0x1'));var GoogleStrategy=require(_0xd74b('0x2'))[_0xd74b('0x3')];var moment=require('moment');var db=require(_0xd74b('0x4'))['db'];var config=require(_0xd74b('0x5'));var signToken=require(_0xd74b('0x6'))['signToken'];var utils=require(_0xd74b('0x7'));exports[_0xd74b('0x8')]=passport['authenticate'](_0xd74b('0x9'),{'failureRedirect':_0xd74b('0xa'),'scope':['profile','email'],'session':![]});exports['callback']=passport[_0xd74b('0xb')](_0xd74b('0x9'),{'failureRedirect':_0xd74b('0xa'),'session':![]});passport['use'](new GoogleStrategy({'clientID':config[_0xd74b('0x9')]?config[_0xd74b('0x9')][_0xd74b('0xc')]:'id','clientSecret':config[_0xd74b('0x9')]?config['google'][_0xd74b('0xd')]:_0xd74b('0xe'),'callbackURL':config['google']?config[_0xd74b('0x9')][_0xd74b('0xf')]:''},function(_0x1abce6,_0x49802c,_0x47dc90,_0x4e4d12){var _0x9530a4,_0x51a2f8;return db[_0xd74b('0x10')][_0xd74b('0x11')]({'where':{'id':0x1},'attributes':[_0xd74b('0x12'),_0xd74b('0x13')],'raw':!![]})[_0xd74b('0x14')](function(_0x52d066){_0x9530a4=_0x52d066;return db['User'][_0xd74b('0x15')]({'where':{'email':_[_0xd74b('0x16')](_0x47dc90[_0xd74b('0x17')],_0xd74b('0x18')),'role':{'$or':[_0xd74b('0x19'),_0xd74b('0x1a'),_0xd74b('0x1b')]}}});})['then'](function(_0x23e3c3){_0x51a2f8=_0x23e3c3;if(_0x51a2f8){if(_0x51a2f8[_0xd74b('0x1c')]){return _0x4e4d12(_0xd74b('0x1d'));}else if(_0x9530a4['blockDuration']>0x0){if(_0x51a2f8[_0xd74b('0x1e')]){if(moment(_0x51a2f8[_0xd74b('0x1f')])[_0xd74b('0x20')](_0x9530a4['blockDuration'],_0xd74b('0x21'))>moment()){return _0x4e4d12(_0xd74b('0x1d'));}else{return utils['clearBlockUser'](_0x51a2f8,0x0,![],null)[_0xd74b('0x14')](function(){return utils[_0xd74b('0x22')](_0x51a2f8);})[_0xd74b('0x14')](function(){return _0x4e4d12(null,_0x51a2f8);});}}else{return utils[_0xd74b('0x22')](_0x51a2f8)[_0xd74b('0x14')](function(){return _0x4e4d12(null,_0x51a2f8);});}}else{return utils[_0xd74b('0x22')](_0x51a2f8)['then'](function(){return _0x4e4d12(null,_0x51a2f8);});}}return _0x4e4d12('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0xd74b('0x23')](function(_0x6e280c){_0x4e4d12(_0x6e280c);});}));
\ No newline at end of file
+var _0x4f6b=['profile','email','callback','use','clientID','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','add','clearBlockUser','getLicense','catch','passport','Strategy','moment','../../mysqldb','../../config/environment','signToken','../../config/utils','authenticate','google','/login'];(function(_0x19635f,_0x564859){var _0x482132=function(_0x177ea7){while(--_0x177ea7){_0x19635f['push'](_0x19635f['shift']());}};_0x482132(++_0x564859);}(_0x4f6b,0x16c));var _0xb4f6=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x4f6b[_0x160c73];return _0xd9302;};'use strict';var _=require('lodash');var passport=require(_0xb4f6('0x0'));var GoogleStrategy=require('passport-google-oauth20')[_0xb4f6('0x1')];var moment=require(_0xb4f6('0x2'));var db=require(_0xb4f6('0x3'))['db'];var config=require(_0xb4f6('0x4'));var signToken=require('../../components/auth/service')[_0xb4f6('0x5')];var utils=require(_0xb4f6('0x6'));exports['login']=passport[_0xb4f6('0x7')](_0xb4f6('0x8'),{'failureRedirect':_0xb4f6('0x9'),'scope':[_0xb4f6('0xa'),_0xb4f6('0xb')],'session':![]});exports[_0xb4f6('0xc')]=passport[_0xb4f6('0x7')]('google',{'failureRedirect':_0xb4f6('0x9'),'session':![]});passport[_0xb4f6('0xd')](new GoogleStrategy({'clientID':config['google']?config[_0xb4f6('0x8')][_0xb4f6('0xe')]:'id','clientSecret':config[_0xb4f6('0x8')]?config[_0xb4f6('0x8')]['clientSecret']:'secret','callbackURL':config[_0xb4f6('0x8')]?config[_0xb4f6('0x8')][_0xb4f6('0xf')]:''},function(_0xf6a990,_0x5a488c,_0x26b0da,_0xddad96){var _0x986ef3,_0x4831de;return db['Setting'][_0xb4f6('0x10')]({'where':{'id':0x1},'attributes':[_0xb4f6('0x11'),_0xb4f6('0x12')],'raw':!![]})[_0xb4f6('0x13')](function(_0xa1cec5){_0x986ef3=_0xa1cec5;return db[_0xb4f6('0x14')][_0xb4f6('0x15')]({'where':{'email':_[_0xb4f6('0x16')](_0x26b0da['emails'],_0xb4f6('0x17')),'role':{'$or':[_0xb4f6('0x18'),'user',_0xb4f6('0x19')]}}});})[_0xb4f6('0x13')](function(_0x11def9){_0x4831de=_0x11def9;if(_0x4831de){if(_0x4831de[_0xb4f6('0x1a')]){return _0xddad96(_0xb4f6('0x1b'));}else if(_0x986ef3[_0xb4f6('0x12')]>0x0){if(_0x4831de[_0xb4f6('0x1c')]){if(moment(_0x4831de[_0xb4f6('0x1d')])[_0xb4f6('0x1e')](_0x986ef3[_0xb4f6('0x12')],'minutes')>moment()){return _0xddad96('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{return utils[_0xb4f6('0x1f')](_0x4831de,0x0,![],null)[_0xb4f6('0x13')](function(){return utils['getLicense'](_0x4831de);})[_0xb4f6('0x13')](function(){return _0xddad96(null,_0x4831de);});}}else{return utils[_0xb4f6('0x20')](_0x4831de)[_0xb4f6('0x13')](function(){return _0xddad96(null,_0x4831de);});}}else{return utils[_0xb4f6('0x20')](_0x4831de)['then'](function(){return _0xddad96(null,_0x4831de);});}}return _0xddad96(_0xb4f6('0x1b'));})[_0xb4f6('0x21')](function(_0x143281){_0xddad96(_0x143281);});}));
\ No newline at end of file
index 3d49cbf..4c407bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd24f=['Router','login','callback','isMiddleware','setTokenCookie','exports','express','passport'];(function(_0x7b357d,_0x4837fc){var _0x5beed9=function(_0x1ac193){while(--_0x1ac193){_0x7b357d['push'](_0x7b357d['shift']());}};_0x5beed9(++_0x4837fc);}(_0xd24f,0x16e));var _0xfd24=function(_0x12c3d1,_0x3c6ae7){_0x12c3d1=_0x12c3d1-0x0;var _0x282840=_0xd24f[_0x12c3d1];return _0x282840;};'use strict';var express=require(_0xfd24('0x0'));var passport=require(_0xfd24('0x1'));var router=express[_0xfd24('0x2')]();var controller=require('./authGoogle.controller');var userController=require('../user/user.controller.js');var authService=require('../../components/auth/service');router['get']('/',controller[_0xfd24('0x3')]);router['get']('/callback',controller[_0xfd24('0x4')],authService[_0xfd24('0x5')],userController[_0xfd24('0x3')],authService[_0xfd24('0x6')]);module[_0xfd24('0x7')]=router;
\ No newline at end of file
+var _0x20a5=['login','callback','isMiddleware','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js','get'];(function(_0x1f5939,_0x402d39){var _0x5b695c=function(_0x39f54f){while(--_0x39f54f){_0x1f5939['push'](_0x1f5939['shift']());}};_0x5b695c(++_0x402d39);}(_0x20a5,0x7e));var _0x520a=function(_0x4be83e,_0x788cc4){_0x4be83e=_0x4be83e-0x0;var _0xfe8106=_0x20a5[_0x4be83e];return _0xfe8106;};'use strict';var express=require(_0x520a('0x0'));var passport=require(_0x520a('0x1'));var router=express[_0x520a('0x2')]();var controller=require(_0x520a('0x3'));var userController=require(_0x520a('0x4'));var authService=require('../../components/auth/service');router[_0x520a('0x5')]('/',controller[_0x520a('0x6')]);router[_0x520a('0x5')]('/callback',controller[_0x520a('0x7')],authService[_0x520a('0x8')],userController['login'],authService[_0x520a('0x9')]);module[_0x520a('0xa')]=router;
\ No newline at end of file
index 5e6bc4a..ae39317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04a8=['client','http','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','disabled','blocked','blockedAt','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','MailServerOut','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','Smtp','service','host','port','secure','authentication','auth','pass','format','email','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','authenticate','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','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','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','reset','params','token','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','Password\x20reset!','use','util','passport-local','Strategy','jayson/promise','lodash','moment','../../mysqldb','../../components/auth/service','../../config/utils'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x04a8,0x153));var _0x804a=function(_0x3e375c,_0x166f56){_0x3e375c=_0x3e375c-0x0;var _0xce96e3=_0x04a8[_0x3e375c];return _0xce96e3;};'use strict';var util=require(_0x804a('0x0'));var passport=require('passport');var LocalStrategy=require(_0x804a('0x1'))[_0x804a('0x2')];var jayson=require(_0x804a('0x3'));var _=require(_0x804a('0x4'));var rs=require('randomstring');var moment=require(_0x804a('0x5'));var db=require(_0x804a('0x6'))['db'];var authService=require(_0x804a('0x7'));var utils=require(_0x804a('0x8'));var client=jayson[_0x804a('0x9')][_0x804a('0xa')]({'port':0x232b});function localAuthenticate(_0x34189b,_0x5c35b6,_0x2f02c3,_0x5a12c1){var _0x3f470f,_0x1bd66a;return db[_0x804a('0xb')][_0x804a('0xc')]({'where':{'id':0x1},'attributes':[_0x804a('0xd'),_0x804a('0xe')],'raw':!![]})[_0x804a('0xf')](function(_0xd069f7){_0x3f470f=_0xd069f7;return _0x34189b[_0x804a('0xc')]({'attributes':['id',_0x804a('0x10'),_0x804a('0x11'),_0x804a('0x12'),'role',_0x804a('0x13'),_0x804a('0x14'),_0x804a('0x15'),_0x804a('0x16')],'where':{'name':_0x5c35b6,'role':{'$or':[_0x804a('0x17'),_0x804a('0x18'),_0x804a('0x19')]}}});})['then'](function(_0x2f2e37){if(!_0x2f2e37||_0x2f2e37&&_0x2f2e37[_0x804a('0x10')]!==_0x5c35b6){throw new Error(_0x804a('0x1a'));}else{_0x1bd66a=_0x2f2e37;return _0x1bd66a;}})[_0x804a('0xf')](function(){_0x1bd66a['authenticate'](_0x2f02c3,function(_0x42a555,_0x5170c2){var _0x5e8f6b=_0x1bd66a['loginAttempts']+0x1;if(_0x42a555){return _0x5a12c1(_0x42a555);}else if(!_0x5170c2){if(_0x1bd66a[_0x804a('0x13')]){return _0x5a12c1(null,![],{'message':_0x804a('0x1a')});}else if(_0x3f470f[_0x804a('0xd')]>0x0){if(_0x1bd66a['blocked']){if(_0x3f470f[_0x804a('0xe')]>0x0){if(moment(_0x1bd66a['blockedAt'])[_0x804a('0x1b')](_0x3f470f[_0x804a('0xe')],_0x804a('0x1c'))>moment()){return _0x5a12c1(null,![],{'message':_0x804a('0x1a')});}else{return utils[_0x804a('0x1d')](_0x1bd66a,_0x5e8f6b,![],null)[_0x804a('0xf')](function(){return _0x5a12c1(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x5a12c1(null,![],{'message':_0x804a('0x1a')});}}else{if(_0x5e8f6b>=_0x3f470f[_0x804a('0xd')]){return utils[_0x804a('0x1d')](_0x1bd66a,0x0,!![],moment())[_0x804a('0xf')](function(){return _0x5a12c1(null,![],{'message':_0x804a('0x1a')});});}else{return utils[_0x804a('0x1d')](_0x1bd66a,_0x5e8f6b,![],null)[_0x804a('0xf')](function(){return _0x5a12c1(null,![],{'message':_0x804a('0x1a')});});}}}else{return _0x5a12c1(null,![],{'message':_0x804a('0x1a')});}}else{if(_0x1bd66a[_0x804a('0x13')]){return _0x5a12c1(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x3f470f[_0x804a('0xd')]>0x0){if(_0x1bd66a[_0x804a('0x14')]){if(_0x3f470f['blockDuration']>0x0){if(moment(_0x1bd66a[_0x804a('0x15')])[_0x804a('0x1b')](_0x3f470f['blockDuration'],_0x804a('0x1c'))>moment()){return _0x5a12c1(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x1bd66a,0x0,![],null)[_0x804a('0xf')](function(){return utils[_0x804a('0x1e')](_0x1bd66a);})[_0x804a('0xf')](function(){return _0x5a12c1(null,_0x1bd66a);});}}else{return _0x5a12c1(null,![],{'message':_0x804a('0x1a')});}}else{return utils['clearBlockUser'](_0x1bd66a,0x0,![],null)[_0x804a('0xf')](function(){return utils['getLicense'](_0x1bd66a);})[_0x804a('0xf')](function(){return _0x5a12c1(null,_0x1bd66a);})['catch'](function(_0x2862d5){return _0x5a12c1(null,![],_0x2862d5);});}}else{if(_0x1bd66a[_0x804a('0x14')]){return _0x5a12c1(null,![],{'message':_0x804a('0x1a')});}else{return utils[_0x804a('0x1e')](_0x1bd66a)[_0x804a('0xf')](function(){return _0x5a12c1(null,_0x1bd66a);});}}}});})[_0x804a('0x1f')](function(_0x291eb2){return _0x5a12c1(null,![],_0x291eb2);});}function sendServiceMail(_0xf823ec){return db[_0x804a('0x20')][_0x804a('0x21')]({'where':{'service':!![]},'attributes':['id',_0x804a('0x10'),'email'],'include':[{'model':db[_0x804a('0x22')],'as':'Smtp'}]})[_0x804a('0xf')](function(_0x1a02b9){if(!_0x1a02b9){throw new Error(_0x804a('0x23'));}var _0x4cc615={'tls':{'rejectUnauthorized':![]}};if(_0x1a02b9[_0x804a('0x24')]['service']){_0x4cc615[_0x804a('0x25')]=_0x1a02b9[_0x804a('0x24')]['service'];}else{_0x4cc615['host']=_0x1a02b9[_0x804a('0x24')][_0x804a('0x26')];_0x4cc615[_0x804a('0x27')]=_0x1a02b9[_0x804a('0x24')]['port'];_0x4cc615[_0x804a('0x28')]=_0x1a02b9['Smtp'][_0x804a('0x28')];}if(_0x1a02b9[_0x804a('0x24')][_0x804a('0x29')]){_0x4cc615[_0x804a('0x2a')]={'user':_0x1a02b9['Smtp']['user'],'pass':_0x1a02b9['Smtp'][_0x804a('0x2b')]};}var _0x3c942c={'account':_0x4cc615,'message':_['merge']({'from':util[_0x804a('0x2c')]('\x22%s\x22\x20<%s>',_0x1a02b9['name'],_0x1a02b9[_0x804a('0x2d')]||_0x1a02b9[_0x804a('0x24')][_0x804a('0x18')])},_0xf823ec)};return client['request'](_0x804a('0x2e'),_0x3c942c);})[_0x804a('0xf')](function(_0x1dcea8){if(_0x1dcea8[_0x804a('0x2f')]){throw new Error(util[_0x804a('0x2c')](_0x804a('0x30'),_0x1dcea8[_0x804a('0x2f')][_0x804a('0x31')]||JSON[_0x804a('0x32')](_0x1dcea8['error'])));}return!![];});}function handleError(_0x3ea1bc,_0x25995b,_0x58e94b){return _0x3ea1bc[_0x804a('0x33')](_0x25995b||0x1f4)[_0x804a('0x34')]({'message':_0x58e94b?_0x58e94b[_0x804a('0x31')]||_0x58e94b:''});}exports['login']=function(_0x6a123e,_0x528165,_0xab488f){passport[_0x804a('0x35')]('local',function(_0x33d2df,_0x314b88,_0x397721){var _0x599a1f=_0x33d2df||_0x397721;if(_0x599a1f){return handleError(_0x528165,0x191,_0x599a1f);}if(!_0x314b88){return handleError(_0x528165,0x194,{'message':_0x804a('0x36')});}else{var _0x210817={'payload':{'id':_0x314b88['id'],'role':_0x314b88[_0x804a('0x37')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x210817)[_0x804a('0xf')](function(_0xb6bc9e){_0x528165['json']({'id':_0x314b88['id'],'token':_0xb6bc9e,'statusCall':'','isAlreadyLogged':_0x314b88[_0x804a('0x38')]});});}})(_0x6a123e,_0x528165,_0xab488f);};exports[_0x804a('0x39')]=function(_0x2fec14,_0x420b41,_0xdccd79){if(!_0x2fec14['body'][_0x804a('0x2d')]){return handleError(_0x420b41,0x1f4,{'message':_0x804a('0x3a')});}var _0xd75d82=rs[_0x804a('0x3b')]();_0x2fec14['body']['email']=_0x2fec14[_0x804a('0x3c')]['email'][_0x804a('0x3d')]()[_0x804a('0x3e')]();var _0x1846f7;return db[_0x804a('0xb')][_0x804a('0xc')]({'where':{'id':0x1},'attributes':[_0x804a('0xd'),'blockDuration'],'raw':!![]})[_0x804a('0xf')](function(_0x5e3807){_0x1846f7=_0x5e3807;return db[_0x804a('0x3f')][_0x804a('0x21')]({'where':{'email':_0x2fec14['body']['email']}});})[_0x804a('0xf')](function(_0x24a921){if(!_0x24a921){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x24a921[_0x804a('0x13')]){throw new Error(_0x804a('0x40'));}if(_0x24a921['blocked']){if(moment(_0x24a921[_0x804a('0x15')])[_0x804a('0x1b')](_0x1846f7[_0x804a('0xe')],_0x804a('0x1c'))>moment()){throw new Error(_0x804a('0x41'));}else{_0x24a921[_0x804a('0x14')]=![];_0x24a921[_0x804a('0x15')]=null;}}_0x24a921[_0x804a('0x42')]=_0xd75d82;_0x24a921[_0x804a('0x43')]=Date[_0x804a('0x44')]()+0x36ee80;return _0x24a921[_0x804a('0x45')]();})[_0x804a('0xf')](function(){return sendServiceMail({'to':_0x2fec14[_0x804a('0x3c')]['email'],'subject':_0x804a('0x46'),'text':_0x804a('0x47')+_0x804a('0x48')+'https://'+_0x2fec14[_0x804a('0x49')]['host']+_0x804a('0x4a')+_0xd75d82+'\x0a\x0a'+_0x804a('0x4b')});})[_0x804a('0xf')](function(){_0x420b41[_0x804a('0x33')](0xc8)[_0x804a('0x34')]({'message':'Reset\x20Email\x20sent!'});})[_0x804a('0x1f')](function(_0x29cd81){return handleError(_0x420b41,0x1f4,_0x29cd81);});};exports[_0x804a('0x4c')]=function(_0x1a78f4,_0x26d709,_0x3b74d7){return db[_0x804a('0x3f')]['find']({'where':{'resetPasswordToken':_0x1a78f4[_0x804a('0x4d')][_0x804a('0x4e')],'resetPasswordExpires':{'$gt':Date[_0x804a('0x44')]()}}})[_0x804a('0xf')](function(_0x28d135){if(!_0x28d135){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0x804a('0xb')][_0x804a('0xc')]({'attributes':['id',_0x804a('0x4f'),_0x804a('0x50'),_0x804a('0x51')]})['then'](function(_0xc2ea4b){if(_0xc2ea4b['securePassword'])authService[_0x804a('0x52')](_0x1a78f4[_0x804a('0x3c')][_0x804a('0x11')]);if(!_0xc2ea4b[_0x804a('0x50')]||!_0x28d135[_0x804a('0x53')])return _0x28d135;authService[_0x804a('0x54')](_0x1a78f4['body'][_0x804a('0x11')],_0x28d135[_0x804a('0x53')],_0xc2ea4b[_0x804a('0x51')]);return _0x28d135;})['then'](function(){_0x28d135['password']=_0x1a78f4[_0x804a('0x3c')][_0x804a('0x11')];_0x28d135[_0x804a('0x42')]=null;_0x28d135[_0x804a('0x43')]=null;return _0x28d135[_0x804a('0x45')]();});})['then'](function(){_0x26d709['status'](0xc8)['send']({'message':_0x804a('0x55')});})[_0x804a('0x1f')](function(_0x42b7b9){return handleError(_0x26d709,0x1f4,_0x42b7b9);});};passport[_0x804a('0x56')](new LocalStrategy({'usernameField':_0x804a('0x10'),'passwordField':_0x804a('0x11')},function(_0x542d8c,_0x34db15,_0x52196c){return localAuthenticate(db['User'],_0x542d8c,_0x34db15,_0x52196c);}));
\ No newline at end of file
+var _0x9336=['allowedLoginAttempts','getLicense','catch','MailAccount','find','email','MailServerOut','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','Smtp','service','host','port','secure','authentication','auth','user','pass','merge','\x22%s\x22\x20<%s>','request','SendMail','error','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','status','local','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','toLowerCase','Setting','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','send','Reset\x20Email\x20sent!','reset','params','token','now','securePassword','enforcePasswordHistory','validatePasswordPattern','validatePasswordHistory','passwordHistoryLimit','Password\x20reset!','use','util','passport','passport-local','Strategy','lodash','randomstring','moment','../../mysqldb','../../config/utils','client','http','findOne','name','password','salt','role','disabled','blocked','loginAttempts','admin','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','then','authenticate','blockedAt','add','blockDuration','minutes','clearBlockUser'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x9336,0x1a5));var _0x6933=function(_0x55e019,_0x4d0746){_0x55e019=_0x55e019-0x0;var _0x12abff=_0x9336[_0x55e019];return _0x12abff;};'use strict';var util=require(_0x6933('0x0'));var passport=require(_0x6933('0x1'));var LocalStrategy=require(_0x6933('0x2'))[_0x6933('0x3')];var jayson=require('jayson/promise');var _=require(_0x6933('0x4'));var rs=require(_0x6933('0x5'));var moment=require(_0x6933('0x6'));var db=require(_0x6933('0x7'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x6933('0x8'));var client=jayson[_0x6933('0x9')][_0x6933('0xa')]({'port':0x232b});function localAuthenticate(_0x16d1e3,_0x121a58,_0x247436,_0x3c95ab){var _0x3ed9b2,_0x3b7df7;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})['then'](function(_0x17a965){_0x3ed9b2=_0x17a965;return _0x16d1e3[_0x6933('0xb')]({'attributes':['id',_0x6933('0xc'),_0x6933('0xd'),_0x6933('0xe'),_0x6933('0xf'),_0x6933('0x10'),_0x6933('0x11'),'blockedAt',_0x6933('0x12')],'where':{'name':_0x121a58,'role':{'$or':[_0x6933('0x13'),'user',_0x6933('0x14')]}}});})['then'](function(_0x28be49){if(!_0x28be49||_0x28be49&&_0x28be49[_0x6933('0xc')]!==_0x121a58){throw new Error(_0x6933('0x15'));}else{_0x3b7df7=_0x28be49;return _0x3b7df7;}})[_0x6933('0x16')](function(){_0x3b7df7[_0x6933('0x17')](_0x247436,function(_0x1e6ec8,_0x2fcba2){var _0x9cc7d=_0x3b7df7[_0x6933('0x12')]+0x1;if(_0x1e6ec8){return _0x3c95ab(_0x1e6ec8);}else if(!_0x2fcba2){if(_0x3b7df7['disabled']){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}else if(_0x3ed9b2['allowedLoginAttempts']>0x0){if(_0x3b7df7[_0x6933('0x11')]){if(_0x3ed9b2['blockDuration']>0x0){if(moment(_0x3b7df7[_0x6933('0x18')])[_0x6933('0x19')](_0x3ed9b2[_0x6933('0x1a')],_0x6933('0x1b'))>moment()){return _0x3c95ab(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x3b7df7,_0x9cc7d,![],null)[_0x6933('0x16')](function(){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});});}}else{return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}}else{if(_0x9cc7d>=_0x3ed9b2['allowedLoginAttempts']){return utils[_0x6933('0x1c')](_0x3b7df7,0x0,!![],moment())[_0x6933('0x16')](function(){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});});}else{return utils[_0x6933('0x1c')](_0x3b7df7,_0x9cc7d,![],null)[_0x6933('0x16')](function(){return _0x3c95ab(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}}else{if(_0x3b7df7['disabled']){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}else if(_0x3ed9b2[_0x6933('0x1d')]>0x0){if(_0x3b7df7['blocked']){if(_0x3ed9b2[_0x6933('0x1a')]>0x0){if(moment(_0x3b7df7[_0x6933('0x18')])[_0x6933('0x19')](_0x3ed9b2[_0x6933('0x1a')],_0x6933('0x1b'))>moment()){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}else{return utils[_0x6933('0x1c')](_0x3b7df7,0x0,![],null)['then'](function(){return utils[_0x6933('0x1e')](_0x3b7df7);})[_0x6933('0x16')](function(){return _0x3c95ab(null,_0x3b7df7);});}}else{return _0x3c95ab(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x6933('0x1c')](_0x3b7df7,0x0,![],null)[_0x6933('0x16')](function(){return utils[_0x6933('0x1e')](_0x3b7df7);})[_0x6933('0x16')](function(){return _0x3c95ab(null,_0x3b7df7);})['catch'](function(_0x3c5635){return _0x3c95ab(null,![],_0x3c5635);});}}else{if(_0x3b7df7['blocked']){return _0x3c95ab(null,![],{'message':_0x6933('0x15')});}else{return utils['getLicense'](_0x3b7df7)[_0x6933('0x16')](function(){return _0x3c95ab(null,_0x3b7df7);});}}}});})[_0x6933('0x1f')](function(_0x5dea96){return _0x3c95ab(null,![],_0x5dea96);});}function sendServiceMail(_0x4785e9){return db[_0x6933('0x20')][_0x6933('0x21')]({'where':{'service':!![]},'attributes':['id',_0x6933('0xc'),_0x6933('0x22')],'include':[{'model':db[_0x6933('0x23')],'as':'Smtp'}]})['then'](function(_0x345a54){if(!_0x345a54){throw new Error(_0x6933('0x24'));}var _0x14f245={'tls':{'rejectUnauthorized':![]}};if(_0x345a54[_0x6933('0x25')]['service']){_0x14f245[_0x6933('0x26')]=_0x345a54[_0x6933('0x25')][_0x6933('0x26')];}else{_0x14f245[_0x6933('0x27')]=_0x345a54[_0x6933('0x25')][_0x6933('0x27')];_0x14f245[_0x6933('0x28')]=_0x345a54['Smtp'][_0x6933('0x28')];_0x14f245[_0x6933('0x29')]=_0x345a54[_0x6933('0x25')][_0x6933('0x29')];}if(_0x345a54['Smtp'][_0x6933('0x2a')]){_0x14f245[_0x6933('0x2b')]={'user':_0x345a54[_0x6933('0x25')][_0x6933('0x2c')],'pass':_0x345a54[_0x6933('0x25')][_0x6933('0x2d')]};}var _0x51c095={'account':_0x14f245,'message':_[_0x6933('0x2e')]({'from':util['format'](_0x6933('0x2f'),_0x345a54[_0x6933('0xc')],_0x345a54[_0x6933('0x22')]||_0x345a54[_0x6933('0x25')]['user'])},_0x4785e9)};return client[_0x6933('0x30')](_0x6933('0x31'),_0x51c095);})[_0x6933('0x16')](function(_0x3009ae){if(_0x3009ae[_0x6933('0x32')]){throw new Error(util[_0x6933('0x33')](_0x6933('0x34'),_0x3009ae[_0x6933('0x32')][_0x6933('0x35')]||JSON['stringify'](_0x3009ae[_0x6933('0x32')])));}return!![];});}function handleError(_0xabc672,_0x26ae29,_0x14f2e1){return _0xabc672[_0x6933('0x36')](_0x26ae29||0x1f4)['send']({'message':_0x14f2e1?_0x14f2e1[_0x6933('0x35')]||_0x14f2e1:''});}exports['login']=function(_0x24c10e,_0x20c3ee,_0x55603f){passport[_0x6933('0x17')](_0x6933('0x37'),function(_0x941c47,_0x27fe33,_0x5512ee){var _0x410923=_0x941c47||_0x5512ee;if(_0x410923){return handleError(_0x20c3ee,0x191,_0x410923);}if(!_0x27fe33){return handleError(_0x20c3ee,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x49a938={'payload':{'id':_0x27fe33['id'],'role':_0x27fe33['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x49a938)[_0x6933('0x16')](function(_0x5d8cd){_0x20c3ee[_0x6933('0x38')]({'id':_0x27fe33['id'],'token':_0x5d8cd,'statusCall':'','isAlreadyLogged':_0x27fe33[_0x6933('0x39')]});});}})(_0x24c10e,_0x20c3ee,_0x55603f);};exports[_0x6933('0x3a')]=function(_0x58b8b7,_0x159130,_0x40f477){if(!_0x58b8b7[_0x6933('0x3b')][_0x6933('0x22')]){return handleError(_0x159130,0x1f4,{'message':_0x6933('0x3c')});}var _0x5e5cd4=rs[_0x6933('0x3d')]();_0x58b8b7['body'][_0x6933('0x22')]=_0x58b8b7['body']['email']['trim']()[_0x6933('0x3e')]();var _0x12b24e;return db[_0x6933('0x3f')][_0x6933('0xb')]({'where':{'id':0x1},'attributes':[_0x6933('0x1d'),_0x6933('0x1a')],'raw':!![]})[_0x6933('0x16')](function(_0x47d165){_0x12b24e=_0x47d165;return db[_0x6933('0x40')][_0x6933('0x21')]({'where':{'email':_0x58b8b7['body'][_0x6933('0x22')]}});})[_0x6933('0x16')](function(_0x386e70){if(!_0x386e70){throw new Error(_0x6933('0x41'));}if(_0x386e70[_0x6933('0x10')]){throw new Error(_0x6933('0x42'));}if(_0x386e70['blocked']){if(moment(_0x386e70[_0x6933('0x18')])[_0x6933('0x19')](_0x12b24e[_0x6933('0x1a')],_0x6933('0x1b'))>moment()){throw new Error(_0x6933('0x43'));}else{_0x386e70[_0x6933('0x11')]=![];_0x386e70[_0x6933('0x18')]=null;}}_0x386e70[_0x6933('0x44')]=_0x5e5cd4;_0x386e70[_0x6933('0x45')]=Date['now']()+0x36ee80;return _0x386e70[_0x6933('0x46')]();})[_0x6933('0x16')](function(){return sendServiceMail({'to':_0x58b8b7['body'][_0x6933('0x22')],'subject':_0x6933('0x47'),'text':_0x6933('0x48')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0x6933('0x49')+_0x58b8b7[_0x6933('0x4a')][_0x6933('0x27')]+_0x6933('0x4b')+_0x5e5cd4+'\x0a\x0a'+_0x6933('0x4c')});})[_0x6933('0x16')](function(){_0x159130['status'](0xc8)[_0x6933('0x4d')]({'message':_0x6933('0x4e')});})[_0x6933('0x1f')](function(_0x17c137){return handleError(_0x159130,0x1f4,_0x17c137);});};exports[_0x6933('0x4f')]=function(_0x55072d,_0x35afa5,_0x160f74){return db[_0x6933('0x40')][_0x6933('0x21')]({'where':{'resetPasswordToken':_0x55072d[_0x6933('0x50')][_0x6933('0x51')],'resetPasswordExpires':{'$gt':Date[_0x6933('0x52')]()}}})[_0x6933('0x16')](function(_0x220005){if(!_0x220005){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0x6933('0x3f')][_0x6933('0xb')]({'attributes':['id',_0x6933('0x53'),_0x6933('0x54'),'passwordHistoryLimit']})[_0x6933('0x16')](function(_0x122f85){if(_0x122f85[_0x6933('0x53')])authService[_0x6933('0x55')](_0x55072d['body'][_0x6933('0xd')]);if(!_0x122f85[_0x6933('0x54')]||!_0x220005['previousPasswords'])return _0x220005;authService[_0x6933('0x56')](_0x55072d[_0x6933('0x3b')][_0x6933('0xd')],_0x220005['previousPasswords'],_0x122f85[_0x6933('0x57')]);return _0x220005;})['then'](function(){_0x220005[_0x6933('0xd')]=_0x55072d[_0x6933('0x3b')][_0x6933('0xd')];_0x220005['resetPasswordToken']=null;_0x220005['resetPasswordExpires']=null;return _0x220005[_0x6933('0x46')]();});})[_0x6933('0x16')](function(){_0x35afa5[_0x6933('0x36')](0xc8)[_0x6933('0x4d')]({'message':_0x6933('0x58')});})['catch'](function(_0x135221){return handleError(_0x35afa5,0x1f4,_0x135221);});};passport[_0x6933('0x59')](new LocalStrategy({'usernameField':_0x6933('0xc'),'passwordField':'password'},function(_0x1cbde8,_0x3c22dd,_0x1e5f02){return localAuthenticate(db[_0x6933('0x40')],_0x1cbde8,_0x3c22dd,_0x1e5f02);}));
\ No newline at end of file
index 9f42679..aa5a84a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa132=['/forgot','forgot','/reset/:token','express','Router','./authLocal.controller','post','login'];(function(_0x28019c,_0x67743){var _0x48ca39=function(_0x4c161e){while(--_0x4c161e){_0x28019c['push'](_0x28019c['shift']());}};_0x48ca39(++_0x67743);}(_0xa132,0xeb));var _0x2a13=function(_0x3facf4,_0xa30b2e){_0x3facf4=_0x3facf4-0x0;var _0x2f4515=_0xa132[_0x3facf4];return _0x2f4515;};'use strict';var express=require(_0x2a13('0x0'));var router=express[_0x2a13('0x1')]();var controller=require(_0x2a13('0x2'));router[_0x2a13('0x3')]('/',controller[_0x2a13('0x4')]);router[_0x2a13('0x3')](_0x2a13('0x5'),controller[_0x2a13('0x6')]);router[_0x2a13('0x3')](_0x2a13('0x7'),controller['reset']);module['exports']=router;
\ No newline at end of file
+var _0xb9d2=['express','Router','./authLocal.controller','post','login','/forgot','forgot','reset'];(function(_0xd92914,_0x22e7cf){var _0x41b1f6=function(_0x365e93){while(--_0x365e93){_0xd92914['push'](_0xd92914['shift']());}};_0x41b1f6(++_0x22e7cf);}(_0xb9d2,0xf0));var _0x2b9d=function(_0x552720,_0xa47e76){_0x552720=_0x552720-0x0;var _0x284205=_0xb9d2[_0x552720];return _0x284205;};'use strict';var express=require(_0x2b9d('0x0'));var router=express[_0x2b9d('0x1')]();var controller=require(_0x2b9d('0x2'));router[_0x2b9d('0x3')]('/',controller[_0x2b9d('0x4')]);router['post'](_0x2b9d('0x5'),controller[_0x2b9d('0x6')]);router[_0x2b9d('0x3')]('/reset/:token',controller[_0x2b9d('0x7')]);module['exports']=router;
\ No newline at end of file
index a43a350..ec56674 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdce6=['STRING','BOOLEAN','INTEGER','sequelize','exports'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xdce6,0xad));var _0x6dce=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xdce6[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0x6dce('0x0'));module[_0x6dce('0x1')]={'name':{'type':Sequelize[_0x6dce('0x2')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6dce('0x2')]},'status':{'type':Sequelize[_0x6dce('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x6dce('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x9026=['BOOLEAN','INTEGER','sequelize','STRING'];(function(_0x4bfb11,_0x4ad756){var _0x33a01a=function(_0x5b5651){while(--_0x5b5651){_0x4bfb11['push'](_0x4bfb11['shift']());}};_0x33a01a(++_0x4ad756);}(_0x9026,0xb6));var _0x6902=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x9026[_0x24f31b];return _0x488401;};'use strict';var Sequelize=require(_0x6902('0x0'));module['exports']={'name':{'type':Sequelize[_0x6902('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x6902('0x1')]},'description':{'type':Sequelize[_0x6902('0x1')]},'status':{'type':Sequelize[_0x6902('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x6902('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index d460ed4..091e216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb34b=['catch','show','keys','includeAll','options','create','update','body','find','params','Condition','ids','omit','findOne','order','getConditions','addActions','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','name','send','index','map','Automation','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','include','findAll'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0xb34b,0x162));var _0xbb34=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xb34b[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0xbb34('0x0'));var rimraf=require(_0xbb34('0x1'));var zipdir=require(_0xbb34('0x2'));var jsonpatch=require(_0xbb34('0x3'));var rp=require(_0xbb34('0x4'));var moment=require(_0xbb34('0x5'));var BPromise=require(_0xbb34('0x6'));var Mustache=require(_0xbb34('0x7'));var util=require('util');var path=require(_0xbb34('0x8'));var sox=require(_0xbb34('0x9'));var csv=require(_0xbb34('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbb34('0xb'));var squel=require(_0xbb34('0xc'));var crypto=require(_0xbb34('0xd'));var jsforce=require(_0xbb34('0xe'));var deskjs=require(_0xbb34('0xf'));var toCsv=require(_0xbb34('0xa'));var querystring=require(_0xbb34('0x10'));var Papa=require(_0xbb34('0x11'));var Redis=require(_0xbb34('0x12'));var authService=require(_0xbb34('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xbb34('0x14'));var hardwareService=require(_0xbb34('0x15'));var logger=require('../../config/logger')(_0xbb34('0x16'));var utils=require(_0xbb34('0x17'));var config=require(_0xbb34('0x18'));var licenseUtil=require(_0xbb34('0x19'));var db=require(_0xbb34('0x1a'))['db'];function respondWithStatusCode(_0xa12904,_0x23ef75){_0x23ef75=_0x23ef75||0xcc;return function(_0xb88717){if(_0xb88717){return _0xa12904[_0xbb34('0x1b')](_0x23ef75);}return _0xa12904[_0xbb34('0x1c')](_0x23ef75)[_0xbb34('0x1d')]();};}function respondWithResult(_0x49fe8c,_0x491e2b){_0x491e2b=_0x491e2b||0xc8;return function(_0x3c15fc){if(_0x3c15fc){return _0x49fe8c[_0xbb34('0x1c')](_0x491e2b)[_0xbb34('0x1e')](_0x3c15fc);}};}function respondWithFilteredResult(_0x108af5,_0xa3c4a3){return function(_0x5c2111){if(_0x5c2111){var _0x536671=typeof _0xa3c4a3['offset']===_0xbb34('0x1f')&&typeof _0xa3c4a3[_0xbb34('0x20')]===_0xbb34('0x1f');var _0x181ce=_0x5c2111[_0xbb34('0x21')];var _0x902cbd=_0x536671?0x0:_0xa3c4a3[_0xbb34('0x22')];var _0x3c8b6f=_0x536671?_0x5c2111['count']:_0xa3c4a3[_0xbb34('0x22')]+_0xa3c4a3['limit'];var _0x53ec99;if(_0x3c8b6f>=_0x181ce){_0x3c8b6f=_0x181ce;_0x53ec99=0xc8;}else{_0x53ec99=0xce;}_0x108af5[_0xbb34('0x1c')](_0x53ec99);return _0x108af5[_0xbb34('0x23')](_0xbb34('0x24'),_0x902cbd+'-'+_0x3c8b6f+'/'+_0x181ce)[_0xbb34('0x1e')](_0x5c2111);}return null;};}function patchUpdates(_0x39731d){return function(_0x4ac2e9){try{jsonpatch[_0xbb34('0x25')](_0x4ac2e9,_0x39731d,!![]);}catch(_0x44ba39){return BPromise[_0xbb34('0x26')](_0x44ba39);}return _0x4ac2e9['save']();};}function saveUpdates(_0x4fcea2,_0x2d67b6){return function(_0x2ab214){if(_0x2ab214){return _0x2ab214['update'](_0x4fcea2)[_0xbb34('0x27')](function(_0x3c337b){return _0x3c337b;});}return null;};}function removeEntity(_0x43bcb3,_0x39be0c){return function(_0x63330f){if(_0x63330f){return _0x63330f[_0xbb34('0x28')]()[_0xbb34('0x27')](function(){_0x43bcb3['status'](0xcc)[_0xbb34('0x1d')]();});}};}function handleEntityNotFound(_0x365711,_0x2a5124){return function(_0x1c74dc){if(!_0x1c74dc){_0x365711[_0xbb34('0x1b')](0x194);}return _0x1c74dc;};}function handleError(_0x59d49b,_0x49a9cb){_0x49a9cb=_0x49a9cb||0x1f4;return function(_0x168cff){logger['error'](_0x168cff['stack']);if(_0x168cff[_0xbb34('0x29')]){delete _0x168cff['name'];}_0x59d49b[_0xbb34('0x1c')](_0x49a9cb)[_0xbb34('0x2a')](_0x168cff);};}exports[_0xbb34('0x2b')]=function(_0x3b4e9b,_0x439995){var _0x57d074={},_0x1d7830={},_0x28898c={'count':0x0,'rows':[]};var _0x2eeea5=_[_0xbb34('0x2c')](db[_0xbb34('0x2d')][_0xbb34('0x2e')],function(_0x3ee455){return{'name':_0x3ee455['fieldName'],'type':_0x3ee455[_0xbb34('0x2f')][_0xbb34('0x30')]};});_0x1d7830['model']=_[_0xbb34('0x2c')](_0x2eeea5,_0xbb34('0x29'));_0x1d7830[_0xbb34('0x31')]=_['keys'](_0x3b4e9b[_0xbb34('0x31')]);_0x1d7830[_0xbb34('0x32')]=_[_0xbb34('0x33')](_0x1d7830[_0xbb34('0x34')],_0x1d7830[_0xbb34('0x31')]);_0x57d074[_0xbb34('0x35')]=_['intersection'](_0x1d7830['model'],qs[_0xbb34('0x36')](_0x3b4e9b['query']['fields']));_0x57d074['attributes']=_0x57d074[_0xbb34('0x35')][_0xbb34('0x37')]?_0x57d074[_0xbb34('0x35')]:_0x1d7830['model'];if(!_0x3b4e9b[_0xbb34('0x31')][_0xbb34('0x38')](_0xbb34('0x39'))){_0x57d074[_0xbb34('0x20')]=qs[_0xbb34('0x20')](_0x3b4e9b[_0xbb34('0x31')][_0xbb34('0x20')]);_0x57d074[_0xbb34('0x22')]=qs['offset'](_0x3b4e9b[_0xbb34('0x31')][_0xbb34('0x22')]);}_0x57d074['order']=qs['sort'](_0x3b4e9b['query'][_0xbb34('0x3a')]);_0x57d074[_0xbb34('0x3b')]=qs[_0xbb34('0x32')](_[_0xbb34('0x3c')](_0x3b4e9b['query'],_0x1d7830[_0xbb34('0x32')]),_0x2eeea5);if(_0x3b4e9b[_0xbb34('0x31')][_0xbb34('0x3d')]){_0x57d074['where']=_['merge'](_0x57d074[_0xbb34('0x3b')],{'$or':_[_0xbb34('0x2c')](_0x2eeea5,function(_0x4976a2){if(_0x4976a2[_0xbb34('0x2f')]!==_0xbb34('0x3e')){var _0x294525={};_0x294525[_0x4976a2[_0xbb34('0x29')]]={'$like':'%'+_0x3b4e9b[_0xbb34('0x31')]['filter']+'%'};return _0x294525;}})});}_0x57d074=_[_0xbb34('0x3f')]({},_0x57d074,_0x3b4e9b['options']);var _0x104310={'where':_0x57d074[_0xbb34('0x3b')]};return db[_0xbb34('0x2d')]['count'](_0x104310)[_0xbb34('0x27')](function(_0x219bb2){_0x28898c['count']=_0x219bb2;if(_0x3b4e9b[_0xbb34('0x31')]['includeAll']){_0x57d074[_0xbb34('0x40')]=[{'all':!![]}];}return db[_0xbb34('0x2d')][_0xbb34('0x41')](_0x57d074);})[_0xbb34('0x27')](function(_0x445bdf){_0x28898c['rows']=_0x445bdf;return _0x28898c;})['then'](respondWithFilteredResult(_0x439995,_0x57d074))[_0xbb34('0x42')](handleError(_0x439995,null));};exports[_0xbb34('0x43')]=function(_0x95ff58,_0x5ddbda){var _0x8e5575={'raw':![],'where':{'id':_0x95ff58['params']['id']}},_0x3a8646={};_0x3a8646[_0xbb34('0x34')]=_[_0xbb34('0x44')](db['Automation'][_0xbb34('0x2e')]);_0x3a8646[_0xbb34('0x31')]=_[_0xbb34('0x44')](_0x95ff58['query']);_0x3a8646[_0xbb34('0x32')]=_[_0xbb34('0x33')](_0x3a8646['model'],_0x3a8646[_0xbb34('0x31')]);_0x8e5575[_0xbb34('0x35')]=_['intersection'](_0x3a8646[_0xbb34('0x34')],qs[_0xbb34('0x36')](_0x95ff58[_0xbb34('0x31')][_0xbb34('0x36')]));_0x8e5575[_0xbb34('0x35')]=_0x8e5575['attributes'][_0xbb34('0x37')]?_0x8e5575[_0xbb34('0x35')]:_0x3a8646[_0xbb34('0x34')];if(_0x95ff58['query'][_0xbb34('0x45')]){_0x8e5575[_0xbb34('0x40')]=[{'all':!![]}];}_0x8e5575=_['merge']({},_0x8e5575,_0x95ff58[_0xbb34('0x46')]);return db[_0xbb34('0x2d')]['find'](_0x8e5575)[_0xbb34('0x27')](handleEntityNotFound(_0x5ddbda,null))[_0xbb34('0x27')](respondWithResult(_0x5ddbda,null))[_0xbb34('0x42')](handleError(_0x5ddbda,null));};exports['create']=function(_0x363639,_0x5b374c){return db[_0xbb34('0x2d')][_0xbb34('0x47')](_0x363639['body'],{})[_0xbb34('0x27')](respondWithResult(_0x5b374c,0xc9))[_0xbb34('0x42')](handleError(_0x5b374c,null));};exports[_0xbb34('0x48')]=function(_0x226fb1,_0x23d4ad){if(_0x226fb1[_0xbb34('0x49')]['id']){delete _0x226fb1[_0xbb34('0x49')]['id'];}return db[_0xbb34('0x2d')][_0xbb34('0x4a')]({'where':{'id':_0x226fb1[_0xbb34('0x4b')]['id']}})[_0xbb34('0x27')](handleEntityNotFound(_0x23d4ad,null))[_0xbb34('0x27')](saveUpdates(_0x226fb1[_0xbb34('0x49')],null))['then'](respondWithResult(_0x23d4ad,null))['catch'](handleError(_0x23d4ad,null));};exports[_0xbb34('0x28')]=function(_0x4319ef,_0x42fbba){return db[_0xbb34('0x2d')][_0xbb34('0x4a')]({'where':{'id':_0x4319ef[_0xbb34('0x4b')]['id']}})[_0xbb34('0x27')](handleEntityNotFound(_0x42fbba,null))[_0xbb34('0x27')](removeEntity(_0x42fbba,null))[_0xbb34('0x42')](handleError(_0x42fbba,null));};exports['addConditions']=function(_0x7976a6,_0x2fc396,_0x16023e){return db[_0xbb34('0x4c')][_0xbb34('0x4a')]({'where':{'id':_0x7976a6[_0xbb34('0x4b')]['id']}})[_0xbb34('0x27')](handleEntityNotFound(_0x2fc396,null))[_0xbb34('0x27')](function(_0x3a8c2d){if(_0x3a8c2d){return _0x3a8c2d['addConditions'](_0x7976a6[_0xbb34('0x49')][_0xbb34('0x4d')],_[_0xbb34('0x4e')](_0x7976a6[_0xbb34('0x49')],[_0xbb34('0x4d'),'id'])||{});}})[_0xbb34('0x27')](respondWithResult(_0x2fc396,null))['catch'](handleError(_0x2fc396,null));};exports['getConditions']=function(_0x590c82,_0x49e1cc,_0x430f4a){var _0x2241e9={};var _0x3891cf={};var _0x3ed8ea;var _0x5979c5;return db[_0xbb34('0x2d')][_0xbb34('0x4f')]({'where':{'id':_0x590c82[_0xbb34('0x4b')]['id']}})[_0xbb34('0x27')](handleEntityNotFound(_0x49e1cc,null))[_0xbb34('0x27')](function(_0x213c71){if(_0x213c71){_0x3ed8ea=_0x213c71;_0x3891cf[_0xbb34('0x34')]=_[_0xbb34('0x44')](db[_0xbb34('0x4c')][_0xbb34('0x2e')]);_0x3891cf[_0xbb34('0x31')]=_[_0xbb34('0x44')](_0x590c82[_0xbb34('0x31')]);_0x3891cf['filters']=_[_0xbb34('0x33')](_0x3891cf[_0xbb34('0x34')],_0x3891cf[_0xbb34('0x31')]);_0x2241e9[_0xbb34('0x35')]=_[_0xbb34('0x33')](_0x3891cf[_0xbb34('0x34')],qs[_0xbb34('0x36')](_0x590c82[_0xbb34('0x31')][_0xbb34('0x36')]));_0x2241e9[_0xbb34('0x35')]=_0x2241e9['attributes'][_0xbb34('0x37')]?_0x2241e9[_0xbb34('0x35')]:_0x3891cf[_0xbb34('0x34')];_0x2241e9[_0xbb34('0x50')]=qs['sort'](_0x590c82[_0xbb34('0x31')]['sort']);_0x2241e9[_0xbb34('0x3b')]=qs[_0xbb34('0x32')](_[_0xbb34('0x3c')](_0x590c82[_0xbb34('0x31')],_0x3891cf['filters']));if(_0x590c82['query'][_0xbb34('0x3d')]){_0x2241e9[_0xbb34('0x3b')]=_[_0xbb34('0x3f')](_0x2241e9[_0xbb34('0x3b')],{'$or':_[_0xbb34('0x2c')](_0x2241e9['attributes'],function(_0x496d5e){var _0x589523={};_0x589523[_0x496d5e]={'$like':'%'+_0x590c82[_0xbb34('0x31')][_0xbb34('0x3d')]+'%'};return _0x589523;})});}_0x2241e9=_[_0xbb34('0x3f')]({},_0x2241e9,_0x590c82[_0xbb34('0x46')]);return _0x3ed8ea[_0xbb34('0x51')](_0x2241e9);}})[_0xbb34('0x27')](function(_0x1fe6b2){if(_0x1fe6b2){_0x5979c5=_0x1fe6b2[_0xbb34('0x37')];if(!_0x590c82[_0xbb34('0x31')][_0xbb34('0x38')](_0xbb34('0x39'))){_0x2241e9['limit']=qs[_0xbb34('0x20')](_0x590c82[_0xbb34('0x31')][_0xbb34('0x20')]);_0x2241e9[_0xbb34('0x22')]=qs[_0xbb34('0x22')](_0x590c82[_0xbb34('0x31')][_0xbb34('0x22')]);}return _0x3ed8ea[_0xbb34('0x51')](_0x2241e9);}})[_0xbb34('0x27')](function(_0x59a575){if(_0x59a575){return _0x59a575?{'count':_0x5979c5,'rows':_0x59a575}:null;}})[_0xbb34('0x27')](respondWithResult(_0x49e1cc,null))[_0xbb34('0x42')](handleError(_0x49e1cc,null));};exports[_0xbb34('0x52')]=function(_0xdd1a2f,_0x70f2c7,_0x2e4bae){return db['Action'][_0xbb34('0x4a')]({'where':{'id':_0xdd1a2f[_0xbb34('0x4b')]['id']}})[_0xbb34('0x27')](handleEntityNotFound(_0x70f2c7,null))[_0xbb34('0x27')](function(_0x58cfd8){if(_0x58cfd8){return _0x58cfd8[_0xbb34('0x52')](_0xdd1a2f[_0xbb34('0x49')][_0xbb34('0x4d')],_[_0xbb34('0x4e')](_0xdd1a2f['body'],[_0xbb34('0x4d'),'id'])||{});}})['then'](respondWithResult(_0x70f2c7,null))[_0xbb34('0x42')](handleError(_0x70f2c7,null));};exports[_0xbb34('0x53')]=function(_0x1e0269,_0x409cdb,_0x1bee10){var _0x5e1ebd={};var _0x17964c={};var _0x3a3bd0;var _0x5284c2;return db[_0xbb34('0x2d')]['findOne']({'where':{'id':_0x1e0269[_0xbb34('0x4b')]['id']}})[_0xbb34('0x27')](handleEntityNotFound(_0x409cdb,null))[_0xbb34('0x27')](function(_0x345969){if(_0x345969){_0x3a3bd0=_0x345969;_0x17964c[_0xbb34('0x34')]=_[_0xbb34('0x44')](db['Action'][_0xbb34('0x2e')]);_0x17964c[_0xbb34('0x31')]=_[_0xbb34('0x44')](_0x1e0269[_0xbb34('0x31')]);_0x17964c[_0xbb34('0x32')]=_[_0xbb34('0x33')](_0x17964c['model'],_0x17964c[_0xbb34('0x31')]);_0x5e1ebd[_0xbb34('0x35')]=_[_0xbb34('0x33')](_0x17964c[_0xbb34('0x34')],qs[_0xbb34('0x36')](_0x1e0269['query']['fields']));_0x5e1ebd[_0xbb34('0x35')]=_0x5e1ebd[_0xbb34('0x35')][_0xbb34('0x37')]?_0x5e1ebd[_0xbb34('0x35')]:_0x17964c['model'];_0x5e1ebd['order']=qs[_0xbb34('0x3a')](_0x1e0269['query'][_0xbb34('0x3a')]);_0x5e1ebd[_0xbb34('0x3b')]=qs[_0xbb34('0x32')](_[_0xbb34('0x3c')](_0x1e0269['query'],_0x17964c[_0xbb34('0x32')]));if(_0x1e0269['query']['filter']){_0x5e1ebd[_0xbb34('0x3b')]=_[_0xbb34('0x3f')](_0x5e1ebd['where'],{'$or':_[_0xbb34('0x2c')](_0x5e1ebd[_0xbb34('0x35')],function(_0x1822ed){var _0x449925={};_0x449925[_0x1822ed]={'$like':'%'+_0x1e0269[_0xbb34('0x31')]['filter']+'%'};return _0x449925;})});}_0x5e1ebd=_[_0xbb34('0x3f')]({},_0x5e1ebd,_0x1e0269['options']);return _0x3a3bd0[_0xbb34('0x53')](_0x5e1ebd);}})['then'](function(_0x110562){if(_0x110562){_0x5284c2=_0x110562[_0xbb34('0x37')];if(!_0x1e0269[_0xbb34('0x31')][_0xbb34('0x38')](_0xbb34('0x39'))){_0x5e1ebd[_0xbb34('0x20')]=qs[_0xbb34('0x20')](_0x1e0269[_0xbb34('0x31')]['limit']);_0x5e1ebd[_0xbb34('0x22')]=qs[_0xbb34('0x22')](_0x1e0269[_0xbb34('0x31')][_0xbb34('0x22')]);}return _0x3a3bd0[_0xbb34('0x53')](_0x5e1ebd);}})[_0xbb34('0x27')](function(_0x56ef4e){if(_0x56ef4e){return _0x56ef4e?{'count':_0x5284c2,'rows':_0x56ef4e}:null;}})[_0xbb34('0x27')](respondWithResult(_0x409cdb,null))[_0xbb34('0x42')](handleError(_0x409cdb,null));};
\ No newline at end of file
+var _0x9c0b=['Content-Range','update','then','destroy','error','stack','name','send','index','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','map','type','options','include','Automation','findAll','rows','catch','show','params','includeAll','find','create','body','addConditions','Condition','findOne','hasOwnProperty','getConditions','addActions','ids','omit','getActions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','count','limit'];(function(_0x302854,_0x503b53){var _0x3588b8=function(_0x531035){while(--_0x531035){_0x302854['push'](_0x302854['shift']());}};_0x3588b8(++_0x503b53);}(_0x9c0b,0xd4));var _0xb9c0=function(_0xd9c489,_0x3dfdc3){_0xd9c489=_0xd9c489-0x0;var _0x5504eb=_0x9c0b[_0xd9c489];return _0x5504eb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb9c0('0x0'));var zipdir=require(_0xb9c0('0x1'));var jsonpatch=require(_0xb9c0('0x2'));var rp=require(_0xb9c0('0x3'));var moment=require(_0xb9c0('0x4'));var BPromise=require(_0xb9c0('0x5'));var Mustache=require('mustache');var util=require(_0xb9c0('0x6'));var path=require(_0xb9c0('0x7'));var sox=require(_0xb9c0('0x8'));var csv=require(_0xb9c0('0x9'));var ejs=require(_0xb9c0('0xa'));var fs=require('fs');var fs_extra=require(_0xb9c0('0xb'));var _=require(_0xb9c0('0xc'));var squel=require(_0xb9c0('0xd'));var crypto=require('crypto');var jsforce=require(_0xb9c0('0xe'));var deskjs=require(_0xb9c0('0xf'));var toCsv=require(_0xb9c0('0x9'));var querystring=require(_0xb9c0('0x10'));var Papa=require(_0xb9c0('0x11'));var Redis=require(_0xb9c0('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb9c0('0x13'));var as=require(_0xb9c0('0x14'));var hardwareService=require(_0xb9c0('0x15'));var logger=require(_0xb9c0('0x16'))(_0xb9c0('0x17'));var utils=require(_0xb9c0('0x18'));var config=require(_0xb9c0('0x19'));var licenseUtil=require(_0xb9c0('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x385d99,_0xbae2f7){_0xbae2f7=_0xbae2f7||0xcc;return function(_0x4fb2d2){if(_0x4fb2d2){return _0x385d99[_0xb9c0('0x1b')](_0xbae2f7);}return _0x385d99[_0xb9c0('0x1c')](_0xbae2f7)[_0xb9c0('0x1d')]();};}function respondWithResult(_0x51f868,_0x40b296){_0x40b296=_0x40b296||0xc8;return function(_0x37921a){if(_0x37921a){return _0x51f868['status'](_0x40b296)[_0xb9c0('0x1e')](_0x37921a);}};}function respondWithFilteredResult(_0x52b17a,_0xb5ca8c){return function(_0x308739){if(_0x308739){var _0x27b718=typeof _0xb5ca8c[_0xb9c0('0x1f')]==='undefined'&&typeof _0xb5ca8c['limit']==='undefined';var _0x2901e0=_0x308739['count'];var _0xadce07=_0x27b718?0x0:_0xb5ca8c['offset'];var _0x5f19e2=_0x27b718?_0x308739[_0xb9c0('0x20')]:_0xb5ca8c[_0xb9c0('0x1f')]+_0xb5ca8c[_0xb9c0('0x21')];var _0x4e6ace;if(_0x5f19e2>=_0x2901e0){_0x5f19e2=_0x2901e0;_0x4e6ace=0xc8;}else{_0x4e6ace=0xce;}_0x52b17a['status'](_0x4e6ace);return _0x52b17a['set'](_0xb9c0('0x22'),_0xadce07+'-'+_0x5f19e2+'/'+_0x2901e0)[_0xb9c0('0x1e')](_0x308739);}return null;};}function patchUpdates(_0x5d327b){return function(_0x2c7946){try{jsonpatch['apply'](_0x2c7946,_0x5d327b,!![]);}catch(_0x4bf870){return BPromise['reject'](_0x4bf870);}return _0x2c7946['save']();};}function saveUpdates(_0x48de07,_0x53fcc9){return function(_0x3cfb13){if(_0x3cfb13){return _0x3cfb13[_0xb9c0('0x23')](_0x48de07)[_0xb9c0('0x24')](function(_0x457295){return _0x457295;});}return null;};}function removeEntity(_0x2b61fe,_0x21a9ee){return function(_0x4f6cf6){if(_0x4f6cf6){return _0x4f6cf6[_0xb9c0('0x25')]()[_0xb9c0('0x24')](function(){_0x2b61fe['status'](0xcc)[_0xb9c0('0x1d')]();});}};}function handleEntityNotFound(_0x2ad8e0,_0x5e48d8){return function(_0xc1d95c){if(!_0xc1d95c){_0x2ad8e0[_0xb9c0('0x1b')](0x194);}return _0xc1d95c;};}function handleError(_0x2b5a4d,_0x43699d){_0x43699d=_0x43699d||0x1f4;return function(_0x612820){logger[_0xb9c0('0x26')](_0x612820[_0xb9c0('0x27')]);if(_0x612820['name']){delete _0x612820[_0xb9c0('0x28')];}_0x2b5a4d['status'](_0x43699d)[_0xb9c0('0x29')](_0x612820);};}exports[_0xb9c0('0x2a')]=function(_0xbecf7e,_0x5dcdb1){var _0x37ab4d={},_0x1ef937={},_0x5249ef={'count':0x0,'rows':[]};var _0x53f31b=_['map'](db['Automation'][_0xb9c0('0x2b')],function(_0x5f54bd){return{'name':_0x5f54bd['fieldName'],'type':_0x5f54bd['type']['key']};});_0x1ef937[_0xb9c0('0x2c')]=_['map'](_0x53f31b,_0xb9c0('0x28'));_0x1ef937[_0xb9c0('0x2d')]=_[_0xb9c0('0x2e')](_0xbecf7e[_0xb9c0('0x2d')]);_0x1ef937[_0xb9c0('0x2f')]=_[_0xb9c0('0x30')](_0x1ef937[_0xb9c0('0x2c')],_0x1ef937[_0xb9c0('0x2d')]);_0x37ab4d[_0xb9c0('0x31')]=_[_0xb9c0('0x30')](_0x1ef937['model'],qs[_0xb9c0('0x32')](_0xbecf7e[_0xb9c0('0x2d')]['fields']));_0x37ab4d['attributes']=_0x37ab4d[_0xb9c0('0x31')][_0xb9c0('0x33')]?_0x37ab4d[_0xb9c0('0x31')]:_0x1ef937[_0xb9c0('0x2c')];if(!_0xbecf7e[_0xb9c0('0x2d')]['hasOwnProperty'](_0xb9c0('0x34'))){_0x37ab4d[_0xb9c0('0x21')]=qs[_0xb9c0('0x21')](_0xbecf7e[_0xb9c0('0x2d')][_0xb9c0('0x21')]);_0x37ab4d['offset']=qs[_0xb9c0('0x1f')](_0xbecf7e['query'][_0xb9c0('0x1f')]);}_0x37ab4d[_0xb9c0('0x35')]=qs[_0xb9c0('0x36')](_0xbecf7e[_0xb9c0('0x2d')][_0xb9c0('0x36')]);_0x37ab4d[_0xb9c0('0x37')]=qs['filters'](_[_0xb9c0('0x38')](_0xbecf7e[_0xb9c0('0x2d')],_0x1ef937[_0xb9c0('0x2f')]),_0x53f31b);if(_0xbecf7e[_0xb9c0('0x2d')][_0xb9c0('0x39')]){_0x37ab4d['where']=_[_0xb9c0('0x3a')](_0x37ab4d[_0xb9c0('0x37')],{'$or':_[_0xb9c0('0x3b')](_0x53f31b,function(_0x19131d){if(_0x19131d[_0xb9c0('0x3c')]!=='VIRTUAL'){var _0x13afc1={};_0x13afc1[_0x19131d['name']]={'$like':'%'+_0xbecf7e[_0xb9c0('0x2d')][_0xb9c0('0x39')]+'%'};return _0x13afc1;}})});}_0x37ab4d=_[_0xb9c0('0x3a')]({},_0x37ab4d,_0xbecf7e[_0xb9c0('0x3d')]);var _0x545a07={'where':_0x37ab4d[_0xb9c0('0x37')]};return db['Automation'][_0xb9c0('0x20')](_0x545a07)[_0xb9c0('0x24')](function(_0x5b5fd3){_0x5249ef[_0xb9c0('0x20')]=_0x5b5fd3;if(_0xbecf7e[_0xb9c0('0x2d')]['includeAll']){_0x37ab4d[_0xb9c0('0x3e')]=[{'all':!![]}];}return db[_0xb9c0('0x3f')][_0xb9c0('0x40')](_0x37ab4d);})[_0xb9c0('0x24')](function(_0x56c5ae){_0x5249ef[_0xb9c0('0x41')]=_0x56c5ae;return _0x5249ef;})['then'](respondWithFilteredResult(_0x5dcdb1,_0x37ab4d))[_0xb9c0('0x42')](handleError(_0x5dcdb1,null));};exports[_0xb9c0('0x43')]=function(_0x485d64,_0x120922){var _0x4a130b={'raw':![],'where':{'id':_0x485d64[_0xb9c0('0x44')]['id']}},_0x491e17={};_0x491e17['model']=_[_0xb9c0('0x2e')](db['Automation'][_0xb9c0('0x2b')]);_0x491e17[_0xb9c0('0x2d')]=_['keys'](_0x485d64['query']);_0x491e17[_0xb9c0('0x2f')]=_['intersection'](_0x491e17[_0xb9c0('0x2c')],_0x491e17[_0xb9c0('0x2d')]);_0x4a130b[_0xb9c0('0x31')]=_['intersection'](_0x491e17['model'],qs[_0xb9c0('0x32')](_0x485d64[_0xb9c0('0x2d')][_0xb9c0('0x32')]));_0x4a130b[_0xb9c0('0x31')]=_0x4a130b[_0xb9c0('0x31')][_0xb9c0('0x33')]?_0x4a130b[_0xb9c0('0x31')]:_0x491e17['model'];if(_0x485d64[_0xb9c0('0x2d')][_0xb9c0('0x45')]){_0x4a130b['include']=[{'all':!![]}];}_0x4a130b=_[_0xb9c0('0x3a')]({},_0x4a130b,_0x485d64[_0xb9c0('0x3d')]);return db['Automation'][_0xb9c0('0x46')](_0x4a130b)[_0xb9c0('0x24')](handleEntityNotFound(_0x120922,null))[_0xb9c0('0x24')](respondWithResult(_0x120922,null))[_0xb9c0('0x42')](handleError(_0x120922,null));};exports[_0xb9c0('0x47')]=function(_0x6bd84c,_0x14e496){return db[_0xb9c0('0x3f')][_0xb9c0('0x47')](_0x6bd84c['body'],{})[_0xb9c0('0x24')](respondWithResult(_0x14e496,0xc9))[_0xb9c0('0x42')](handleError(_0x14e496,null));};exports['update']=function(_0xcfc607,_0x3d4624){if(_0xcfc607['body']['id']){delete _0xcfc607[_0xb9c0('0x48')]['id'];}return db[_0xb9c0('0x3f')][_0xb9c0('0x46')]({'where':{'id':_0xcfc607[_0xb9c0('0x44')]['id']}})[_0xb9c0('0x24')](handleEntityNotFound(_0x3d4624,null))[_0xb9c0('0x24')](saveUpdates(_0xcfc607[_0xb9c0('0x48')],null))[_0xb9c0('0x24')](respondWithResult(_0x3d4624,null))[_0xb9c0('0x42')](handleError(_0x3d4624,null));};exports[_0xb9c0('0x25')]=function(_0x4b1d93,_0x3f5f6e){return db[_0xb9c0('0x3f')][_0xb9c0('0x46')]({'where':{'id':_0x4b1d93[_0xb9c0('0x44')]['id']}})['then'](handleEntityNotFound(_0x3f5f6e,null))[_0xb9c0('0x24')](removeEntity(_0x3f5f6e,null))[_0xb9c0('0x42')](handleError(_0x3f5f6e,null));};exports[_0xb9c0('0x49')]=function(_0x51280f,_0x454b58,_0x5786f8){return db[_0xb9c0('0x4a')][_0xb9c0('0x46')]({'where':{'id':_0x51280f[_0xb9c0('0x44')]['id']}})[_0xb9c0('0x24')](handleEntityNotFound(_0x454b58,null))[_0xb9c0('0x24')](function(_0x5cc8fa){if(_0x5cc8fa){return _0x5cc8fa[_0xb9c0('0x49')](_0x51280f[_0xb9c0('0x48')]['ids'],_['omit'](_0x51280f[_0xb9c0('0x48')],['ids','id'])||{});}})[_0xb9c0('0x24')](respondWithResult(_0x454b58,null))[_0xb9c0('0x42')](handleError(_0x454b58,null));};exports['getConditions']=function(_0x4d123f,_0x2f0667,_0x250fb7){var _0x3d09cd={};var _0xfcb605={};var _0x51a89d;var _0x34dc46;return db['Automation'][_0xb9c0('0x4b')]({'where':{'id':_0x4d123f[_0xb9c0('0x44')]['id']}})[_0xb9c0('0x24')](handleEntityNotFound(_0x2f0667,null))[_0xb9c0('0x24')](function(_0x24510e){if(_0x24510e){_0x51a89d=_0x24510e;_0xfcb605['model']=_[_0xb9c0('0x2e')](db['Condition'][_0xb9c0('0x2b')]);_0xfcb605[_0xb9c0('0x2d')]=_['keys'](_0x4d123f['query']);_0xfcb605[_0xb9c0('0x2f')]=_[_0xb9c0('0x30')](_0xfcb605[_0xb9c0('0x2c')],_0xfcb605[_0xb9c0('0x2d')]);_0x3d09cd[_0xb9c0('0x31')]=_[_0xb9c0('0x30')](_0xfcb605[_0xb9c0('0x2c')],qs[_0xb9c0('0x32')](_0x4d123f['query'][_0xb9c0('0x32')]));_0x3d09cd['attributes']=_0x3d09cd[_0xb9c0('0x31')]['length']?_0x3d09cd['attributes']:_0xfcb605[_0xb9c0('0x2c')];_0x3d09cd[_0xb9c0('0x35')]=qs[_0xb9c0('0x36')](_0x4d123f['query']['sort']);_0x3d09cd[_0xb9c0('0x37')]=qs[_0xb9c0('0x2f')](_['pick'](_0x4d123f[_0xb9c0('0x2d')],_0xfcb605[_0xb9c0('0x2f')]));if(_0x4d123f[_0xb9c0('0x2d')][_0xb9c0('0x39')]){_0x3d09cd[_0xb9c0('0x37')]=_[_0xb9c0('0x3a')](_0x3d09cd[_0xb9c0('0x37')],{'$or':_[_0xb9c0('0x3b')](_0x3d09cd[_0xb9c0('0x31')],function(_0x1c0607){var _0x256a35={};_0x256a35[_0x1c0607]={'$like':'%'+_0x4d123f[_0xb9c0('0x2d')]['filter']+'%'};return _0x256a35;})});}_0x3d09cd=_[_0xb9c0('0x3a')]({},_0x3d09cd,_0x4d123f['options']);return _0x51a89d['getConditions'](_0x3d09cd);}})[_0xb9c0('0x24')](function(_0x1c0a13){if(_0x1c0a13){_0x34dc46=_0x1c0a13[_0xb9c0('0x33')];if(!_0x4d123f[_0xb9c0('0x2d')][_0xb9c0('0x4c')](_0xb9c0('0x34'))){_0x3d09cd[_0xb9c0('0x21')]=qs[_0xb9c0('0x21')](_0x4d123f[_0xb9c0('0x2d')][_0xb9c0('0x21')]);_0x3d09cd['offset']=qs[_0xb9c0('0x1f')](_0x4d123f[_0xb9c0('0x2d')]['offset']);}return _0x51a89d[_0xb9c0('0x4d')](_0x3d09cd);}})[_0xb9c0('0x24')](function(_0x48d55b){if(_0x48d55b){return _0x48d55b?{'count':_0x34dc46,'rows':_0x48d55b}:null;}})[_0xb9c0('0x24')](respondWithResult(_0x2f0667,null))[_0xb9c0('0x42')](handleError(_0x2f0667,null));};exports[_0xb9c0('0x4e')]=function(_0x445002,_0x402fa5,_0x3ed47c){return db['Action'][_0xb9c0('0x46')]({'where':{'id':_0x445002['params']['id']}})[_0xb9c0('0x24')](handleEntityNotFound(_0x402fa5,null))[_0xb9c0('0x24')](function(_0x3c07ee){if(_0x3c07ee){return _0x3c07ee[_0xb9c0('0x4e')](_0x445002['body'][_0xb9c0('0x4f')],_[_0xb9c0('0x50')](_0x445002[_0xb9c0('0x48')],[_0xb9c0('0x4f'),'id'])||{});}})[_0xb9c0('0x24')](respondWithResult(_0x402fa5,null))['catch'](handleError(_0x402fa5,null));};exports[_0xb9c0('0x51')]=function(_0x4fd37f,_0x4f94fd,_0x167339){var _0x5b3422={};var _0xb7139b={};var _0x36e33f;var _0x1c2d5b;return db[_0xb9c0('0x3f')][_0xb9c0('0x4b')]({'where':{'id':_0x4fd37f[_0xb9c0('0x44')]['id']}})[_0xb9c0('0x24')](handleEntityNotFound(_0x4f94fd,null))[_0xb9c0('0x24')](function(_0x524879){if(_0x524879){_0x36e33f=_0x524879;_0xb7139b[_0xb9c0('0x2c')]=_[_0xb9c0('0x2e')](db['Action'][_0xb9c0('0x2b')]);_0xb7139b[_0xb9c0('0x2d')]=_['keys'](_0x4fd37f[_0xb9c0('0x2d')]);_0xb7139b['filters']=_[_0xb9c0('0x30')](_0xb7139b[_0xb9c0('0x2c')],_0xb7139b[_0xb9c0('0x2d')]);_0x5b3422[_0xb9c0('0x31')]=_[_0xb9c0('0x30')](_0xb7139b['model'],qs[_0xb9c0('0x32')](_0x4fd37f['query'][_0xb9c0('0x32')]));_0x5b3422[_0xb9c0('0x31')]=_0x5b3422['attributes'][_0xb9c0('0x33')]?_0x5b3422[_0xb9c0('0x31')]:_0xb7139b[_0xb9c0('0x2c')];_0x5b3422[_0xb9c0('0x35')]=qs[_0xb9c0('0x36')](_0x4fd37f['query'][_0xb9c0('0x36')]);_0x5b3422[_0xb9c0('0x37')]=qs[_0xb9c0('0x2f')](_[_0xb9c0('0x38')](_0x4fd37f[_0xb9c0('0x2d')],_0xb7139b[_0xb9c0('0x2f')]));if(_0x4fd37f[_0xb9c0('0x2d')]['filter']){_0x5b3422[_0xb9c0('0x37')]=_['merge'](_0x5b3422[_0xb9c0('0x37')],{'$or':_['map'](_0x5b3422['attributes'],function(_0x2b4d55){var _0x571094={};_0x571094[_0x2b4d55]={'$like':'%'+_0x4fd37f[_0xb9c0('0x2d')][_0xb9c0('0x39')]+'%'};return _0x571094;})});}_0x5b3422=_[_0xb9c0('0x3a')]({},_0x5b3422,_0x4fd37f[_0xb9c0('0x3d')]);return _0x36e33f[_0xb9c0('0x51')](_0x5b3422);}})[_0xb9c0('0x24')](function(_0x1cc1e5){if(_0x1cc1e5){_0x1c2d5b=_0x1cc1e5[_0xb9c0('0x33')];if(!_0x4fd37f[_0xb9c0('0x2d')][_0xb9c0('0x4c')](_0xb9c0('0x34'))){_0x5b3422[_0xb9c0('0x21')]=qs[_0xb9c0('0x21')](_0x4fd37f[_0xb9c0('0x2d')][_0xb9c0('0x21')]);_0x5b3422['offset']=qs[_0xb9c0('0x1f')](_0x4fd37f[_0xb9c0('0x2d')][_0xb9c0('0x1f')]);}return _0x36e33f[_0xb9c0('0x51')](_0x5b3422);}})[_0xb9c0('0x24')](function(_0x5905fc){if(_0x5905fc){return _0x5905fc?{'count':_0x1c2d5b,'rows':_0x5905fc}:null;}})[_0xb9c0('0x24')](respondWithResult(_0x4f94fd,null))[_0xb9c0('0x42')](handleError(_0x4f94fd,null));};
\ No newline at end of file
index d9ee22c..cd7b0dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1edf=['./automation.attributes','exports','Automation','tools_automations','lodash','util','api','moment','request-promise','path','rimraf'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1edf,0x117));var _0xf1ed=function(_0x1f4ea4,_0x4613a5){_0x1f4ea4=_0x1f4ea4-0x0;var _0x132975=_0x1edf[_0x1f4ea4];return _0x132975;};'use strict';var _=require(_0xf1ed('0x0'));var util=require(_0xf1ed('0x1'));var logger=require('../../config/logger')(_0xf1ed('0x2'));var moment=require(_0xf1ed('0x3'));var BPromise=require('bluebird');var rp=require(_0xf1ed('0x4'));var fs=require('fs');var path=require(_0xf1ed('0x5'));var rimraf=require(_0xf1ed('0x6'));var config=require('../../config/environment');var attributes=require(_0xf1ed('0x7'));module[_0xf1ed('0x8')]=function(_0x21173e,_0xc7f2a6){return _0x21173e['define'](_0xf1ed('0x9'),attributes,{'tableName':_0xf1ed('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d16=['request-promise','path','rimraf','../../config/environment','./automation.attributes','exports','define','Automation','util','../../config/logger','api','bluebird'];(function(_0x357702,_0x203968){var _0x4dd94a=function(_0x11bc16){while(--_0x11bc16){_0x357702['push'](_0x357702['shift']());}};_0x4dd94a(++_0x203968);}(_0x5d16,0x1a0));var _0x65d1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d16[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x65d1('0x0'));var logger=require(_0x65d1('0x1'))(_0x65d1('0x2'));var moment=require('moment');var BPromise=require(_0x65d1('0x3'));var rp=require(_0x65d1('0x4'));var fs=require('fs');var path=require(_0x65d1('0x5'));var rimraf=require(_0x65d1('0x6'));var config=require(_0x65d1('0x7'));var attributes=require(_0x65d1('0x8'));module[_0x65d1('0x9')]=function(_0x53c7ff,_0xdae273){return _0x53c7ff[_0x65d1('0xa')](_0x65d1('0xb'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd4695f..fe62a46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa988=['../../config/environment','jayson/promise','client','http','request','info','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x401554,_0x34b410){var _0x5b70e9=function(_0x4240c1){while(--_0x4240c1){_0x401554['push'](_0x401554['shift']());}};_0x5b70e9(++_0x34b410);}(_0xa988,0x1a7));var _0x8a98=function(_0x5a0945,_0x17a689){_0x5a0945=_0x5a0945-0x0;var _0x28fd9a=_0xa988[_0x5a0945];return _0x28fd9a;};'use strict';var _=require(_0x8a98('0x0'));var util=require(_0x8a98('0x1'));var moment=require(_0x8a98('0x2'));var BPromise=require(_0x8a98('0x3'));var rs=require(_0x8a98('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8a98('0x5'))['db'];var utils=require(_0x8a98('0x6'));var logger=require(_0x8a98('0x7'))(_0x8a98('0x8'));var config=require(_0x8a98('0x9'));var jayson=require(_0x8a98('0xa'));var client=jayson[_0x8a98('0xb')][_0x8a98('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4ef481,_0x27db7a,_0x336f5f){return new BPromise(function(_0x5f3abf,_0xfa3168){return client[_0x8a98('0xd')](_0x4ef481,_0x336f5f)['then'](function(_0x5552b2){logger[_0x8a98('0xe')](_0x8a98('0xf'),_0x27db7a,'request\x20sent');logger[_0x8a98('0x10')](_0x8a98('0x11'),_0x27db7a,_0x8a98('0x12'),JSON['stringify'](_0x5552b2));if(_0x5552b2[_0x8a98('0x13')]){if(_0x5552b2[_0x8a98('0x13')][_0x8a98('0x14')]===0x1f4){logger['error'](_0x8a98('0xf'),_0x27db7a,_0x5552b2['error']['message']);return _0xfa3168(_0x5552b2['error'][_0x8a98('0x15')]);}logger['error']('Automation,\x20%s,\x20%s',_0x27db7a,_0x5552b2['error'][_0x8a98('0x15')]);return _0x5f3abf(_0x5552b2['error'][_0x8a98('0x15')]);}else{logger[_0x8a98('0xe')](_0x8a98('0xf'),_0x27db7a,_0x8a98('0x12'));_0x5f3abf(_0x5552b2[_0x8a98('0x16')][_0x8a98('0x15')]);}})[_0x8a98('0x17')](function(_0x92a1e8){logger['error']('Automation,\x20%s,\x20%s',_0x27db7a,_0x92a1e8);_0xfa3168(_0x92a1e8);});});}
\ No newline at end of file
+var _0x5242=['stringify','error','Automation,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s'];(function(_0x232b67,_0x3dc89e){var _0x39fcc0=function(_0x3e20c6){while(--_0x3e20c6){_0x232b67['push'](_0x232b67['shift']());}};_0x39fcc0(++_0x3dc89e);}(_0x5242,0x148));var _0x2524=function(_0x4acb8c,_0x2ae660){_0x4acb8c=_0x4acb8c-0x0;var _0x48d682=_0x5242[_0x4acb8c];return _0x48d682;};'use strict';var _=require(_0x2524('0x0'));var util=require(_0x2524('0x1'));var moment=require(_0x2524('0x2'));var BPromise=require(_0x2524('0x3'));var rs=require(_0x2524('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2524('0x5'))['db'];var utils=require(_0x2524('0x6'));var logger=require(_0x2524('0x7'))(_0x2524('0x8'));var config=require(_0x2524('0x9'));var jayson=require(_0x2524('0xa'));var client=jayson[_0x2524('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b070c,_0x1eca6b,_0x91975b){return new BPromise(function(_0x9f927c,_0x5729dd){return client['request'](_0x2b070c,_0x91975b)[_0x2524('0xc')](function(_0x2ecd8f){logger[_0x2524('0xd')]('Automation,\x20%s,\x20%s',_0x1eca6b,_0x2524('0xe'));logger[_0x2524('0xf')](_0x2524('0x10'),_0x1eca6b,_0x2524('0xe'),JSON[_0x2524('0x11')](_0x2ecd8f));if(_0x2ecd8f[_0x2524('0x12')]){if(_0x2ecd8f[_0x2524('0x12')]['code']===0x1f4){logger['error'](_0x2524('0x13'),_0x1eca6b,_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);return _0x5729dd(_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);}logger[_0x2524('0x12')](_0x2524('0x13'),_0x1eca6b,_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);return _0x9f927c(_0x2ecd8f[_0x2524('0x12')][_0x2524('0x14')]);}else{logger[_0x2524('0xd')](_0x2524('0x13'),_0x1eca6b,_0x2524('0xe'));_0x9f927c(_0x2ecd8f[_0x2524('0x15')][_0x2524('0x14')]);}})[_0x2524('0x16')](function(_0x14c347){logger[_0x2524('0x12')]('Automation,\x20%s,\x20%s',_0x1eca6b,_0x14c347);_0x5729dd(_0x14c347);});});}
\ No newline at end of file
index a9e6e6a..1fe6245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95f7=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','/:id','/:id/conditions','getConditions','/:id/actions','getActions','post','create','addActions','put','update','delete','destroy','exports'];(function(_0x5bdeb2,_0x381819){var _0xbc81e=function(_0x2ede43){while(--_0x2ede43){_0x5bdeb2['push'](_0x5bdeb2['shift']());}};_0xbc81e(++_0x381819);}(_0x95f7,0x68));var _0x795f=function(_0x3a00af,_0x507f1){_0x3a00af=_0x3a00af-0x0;var _0x27ffe4=_0x95f7[_0x3a00af];return _0x27ffe4;};'use strict';var multer=require(_0x795f('0x0'));var util=require(_0x795f('0x1'));var path=require(_0x795f('0x2'));var timeout=require(_0x795f('0x3'));var express=require(_0x795f('0x4'));var router=express[_0x795f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x795f('0x6'));var interaction=require(_0x795f('0x7'));var config=require(_0x795f('0x8'));var controller=require(_0x795f('0x9'));router[_0x795f('0xa')]('/',auth[_0x795f('0xb')](),controller[_0x795f('0xc')]);router[_0x795f('0xa')](_0x795f('0xd'),auth[_0x795f('0xb')](),controller['show']);router[_0x795f('0xa')](_0x795f('0xe'),auth[_0x795f('0xb')](),controller[_0x795f('0xf')]);router[_0x795f('0xa')](_0x795f('0x10'),auth[_0x795f('0xb')](),controller[_0x795f('0x11')]);router[_0x795f('0x12')]('/',auth[_0x795f('0xb')](),controller[_0x795f('0x13')]);router[_0x795f('0x12')]('/:id/conditions',auth['isAuthenticated'](),controller['addConditions']);router['post'](_0x795f('0x10'),auth['isAuthenticated'](),controller[_0x795f('0x14')]);router[_0x795f('0x15')](_0x795f('0xd'),auth[_0x795f('0xb')](),controller[_0x795f('0x16')]);router[_0x795f('0x17')](_0x795f('0xd'),auth[_0x795f('0xb')](),controller[_0x795f('0x18')]);module[_0x795f('0x19')]=router;
\ No newline at end of file
+var _0x0bde=['post','create','addConditions','addActions','put','update','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./automation.controller','get','isAuthenticated','index','/:id','show','/:id/conditions','getConditions','/:id/actions'];(function(_0x57a960,_0x22d68f){var _0x59a019=function(_0x599053){while(--_0x599053){_0x57a960['push'](_0x57a960['shift']());}};_0x59a019(++_0x22d68f);}(_0x0bde,0x110));var _0xe0bd=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0bde[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0xe0bd('0x0'));var util=require('util');var path=require(_0xe0bd('0x1'));var timeout=require(_0xe0bd('0x2'));var express=require('express');var router=express[_0xe0bd('0x3')]();var fs_extra=require(_0xe0bd('0x4'));var auth=require(_0xe0bd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe0bd('0x6'));var controller=require(_0xe0bd('0x7'));router[_0xe0bd('0x8')]('/',auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xa')]);router[_0xe0bd('0x8')](_0xe0bd('0xb'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xc')]);router[_0xe0bd('0x8')](_0xe0bd('0xd'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xe')]);router['get'](_0xe0bd('0xf'),auth[_0xe0bd('0x9')](),controller['getActions']);router[_0xe0bd('0x10')]('/',auth['isAuthenticated'](),controller[_0xe0bd('0x11')]);router[_0xe0bd('0x10')](_0xe0bd('0xd'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0x12')]);router[_0xe0bd('0x10')](_0xe0bd('0xf'),auth['isAuthenticated'](),controller[_0xe0bd('0x13')]);router[_0xe0bd('0x14')](_0xe0bd('0xb'),auth['isAuthenticated'](),controller[_0xe0bd('0x15')]);router['delete'](_0xe0bd('0xb'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0x16')]);module[_0xe0bd('0x17')]=router;
\ No newline at end of file
index 59cb9eb..83a9ecc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01cc=['#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','name','ENUM','ivr','BOOLEAN','INTEGER','UNSIGNED','Max\x20200\x20calls.','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x2d69e1,_0x1843a3){var _0x3016b7=function(_0x2675a8){while(--_0x2675a8){_0x2d69e1['push'](_0x2d69e1['shift']());}};_0x3016b7(++_0x1843a3);}(_0x01cc,0x109));var _0xc01c=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0x01cc[_0xf50820];return _0x2a9b10;};'use strict';var Sequelize=require(_0xc01c('0x0'));module[_0xc01c('0x1')]={'name':{'type':Sequelize[_0xc01c('0x2')],'unique':_0xc01c('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xc01c('0x4')](_0xc01c('0x5')),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize[_0xc01c('0x2')]},'active':{'type':Sequelize[_0xc01c('0x6')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0xc01c('0x7')](0x4)[_0xc01c('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xc01c('0x9')},'dialOriginateCallerIdName':{'type':Sequelize[_0xc01c('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0xc01c('0x7')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0xc01c('0x7')](0x3)[_0xc01c('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc01c('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xc01c('0x7')](0x5)[_0xc01c('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc01c('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0xc01c('0x7')](0x3)[_0xc01c('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc01c('0xc')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc01c('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc01c('0x8')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xc01c('0x7')](0x5)[_0xc01c('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc01c('0xe')},'dialGlobalMaxRetry':{'type':Sequelize[_0xc01c('0x7')](0x3)[_0xc01c('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xc01c('0xf')},'dialTimezone':{'type':Sequelize[_0xc01c('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xc01c('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0xc01c('0x4')](_0xc01c('0x10'),_0xc01c('0x11'),_0xc01c('0x12')),'defaultValue':_0xc01c('0x10')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xc01c('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0xc01c('0x7')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc01c('0x14')},'dialAMDGreeting':{'type':Sequelize[_0xc01c('0x7')](0x9)[_0xc01c('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xc01c('0x7')](0x9)[_0xc01c('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xc01c('0x7')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc01c('0x15')},'dialAMDMinWordLength':{'type':Sequelize[_0xc01c('0x7')](0x9)[_0xc01c('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc01c('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xc01c('0x16')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xc01c('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xc01c('0x17')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc01c('0x7')](0x5)[_0xc01c('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc01c('0x18')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xc01c('0x7')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc01c('0x19')},'dialOrderByScheduledAt':{'type':Sequelize[_0xc01c('0x4')](_0xc01c('0x1a'),_0xc01c('0x1b')),'defaultValue':_0xc01c('0x1a')},'dialPrefix':{'type':Sequelize[_0xc01c('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc01c('0x7')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc01c('0x1c')},'dialCutDigit':{'type':Sequelize[_0xc01c('0x7')](0x3)[_0xc01c('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc01c('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xc01c('0x7')](0x5)[_0xc01c('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc01c('0x1e')},'dialDropMaxRetry':{'type':Sequelize[_0xc01c('0x7')](0x3)[_0xc01c('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc01c('0x1f')},'dialDropRetryFrequency':{'type':Sequelize[_0xc01c('0x7')](0x5)[_0xc01c('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc01c('0x20')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc01c('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xc01c('0x7')](0x5)[_0xc01c('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xc01c('0x7')](0x3)[_0xc01c('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc01c('0x21')},'dialMachineRetryFrequency':{'type':Sequelize[_0xc01c('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc01c('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xc01c('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc01c('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xc01c('0x7')](0x5)[_0xc01c('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc01c('0x24')}};
\ No newline at end of file
+var _0x2085=['#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','name','ENUM','ivr','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x2085,0x13f));var _0x5208=function(_0x5e343c,_0x5d5c6a){_0x5e343c=_0x5e343c-0x0;var _0x497243=_0x2085[_0x5e343c];return _0x497243;};'use strict';var Sequelize=require(_0x5208('0x0'));module[_0x5208('0x1')]={'name':{'type':Sequelize[_0x5208('0x2')],'unique':_0x5208('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x5208('0x4')](_0x5208('0x5')),'allowNull':![],'defaultValue':_0x5208('0x5')},'description':{'type':Sequelize[_0x5208('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x5208('0x6')},'limitCalls':{'type':Sequelize[_0x5208('0x7')](0x4)[_0x5208('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x5208('0x9')},'dialOriginateCallerIdName':{'type':Sequelize[_0x5208('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x5208('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x5208('0x7')](0x3)[_0x5208('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5208('0xa')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x5208('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5208('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0xc')},'dialBusyMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)[_0x5208('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5208('0xd')},'dialBusyRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0xe')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x5208('0x10')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x5208('0x2')],'defaultValue':_0x5208('0x11')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x5208('0x12'),_0x5208('0x13'),_0x5208('0x14')),'defaultValue':_0x5208('0x12')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x5208('0x15')},'dialAMDGreeting':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x5208('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x5208('0x17')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5208('0x18')},'dialAMDMinWordLength':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x5208('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x5208('0x19')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x5208('0x1a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x5208('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x5208('0x7')](0x9)[_0x5208('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5208('0x1c')},'dialOrderByScheduledAt':{'type':Sequelize[_0x5208('0x4')](_0x5208('0x1d'),_0x5208('0x1e')),'defaultValue':_0x5208('0x1d')},'dialPrefix':{'type':Sequelize[_0x5208('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x5208('0x7')](0x3)[_0x5208('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x5208('0x7')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5208('0x1f')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)[_0x5208('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0x20')},'dialDropMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5208('0x21')},'dialDropRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0x22')},'dialMachineMaxRetry':{'type':Sequelize[_0x5208('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0x23')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5208('0x24')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x5208('0x7')](0x5)[_0x5208('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5208('0x25')}};
\ No newline at end of file
index 31e4018..6d580ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1271=['to-csv','fs-extra','crypto','desk.js','papaparse','../../components/auth/service','../../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','IvrCampaigns','UserProfileResource','destroy','error','stack','name','send','index','map','Campaign','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','keys','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','params','getHoppers','findOne','CmHopper','CampaignId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','CmList','getLists','addLists','ids','spread','dialCheckDuplicateType','always','cm_hopper','phone','scheduledAt','select','field','NOW()','ContactId','CmListId','toString','ListId','updatedAt','from','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','into','fromQuery','phone\x20IS\x20NOT\x20NULL','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','ListId\x20=\x20?','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox'];(function(_0x52ecd0,_0x4bea49){var _0x588d37=function(_0xf78a8d){while(--_0xf78a8d){_0x52ecd0['push'](_0x52ecd0['shift']());}};_0x588d37(++_0x4bea49);}(_0x1271,0x18b));var _0x1127=function(_0x5c633,_0x22508b){_0x5c633=_0x5c633-0x0;var _0x3ae88b=_0x1271[_0x5c633];return _0x3ae88b;};'use strict';var emlformat=require(_0x1127('0x0'));var rimraf=require(_0x1127('0x1'));var zipdir=require(_0x1127('0x2'));var jsonpatch=require(_0x1127('0x3'));var rp=require(_0x1127('0x4'));var moment=require(_0x1127('0x5'));var BPromise=require(_0x1127('0x6'));var Mustache=require('mustache');var util=require(_0x1127('0x7'));var path=require(_0x1127('0x8'));var sox=require(_0x1127('0x9'));var csv=require(_0x1127('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1127('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1127('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1127('0xd'));var toCsv=require(_0x1127('0xa'));var querystring=require('querystring');var Papa=require(_0x1127('0xe'));var Redis=require('ioredis');var authService=require(_0x1127('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1127('0x10'))(_0x1127('0x11'));var utils=require(_0x1127('0x12'));var config=require(_0x1127('0x13'));var licenseUtil=require(_0x1127('0x14'));var db=require(_0x1127('0x15'))['db'];function respondWithStatusCode(_0x37429d,_0x26f7f8){_0x26f7f8=_0x26f7f8||0xcc;return function(_0x4d70e5){if(_0x4d70e5){return _0x37429d[_0x1127('0x16')](_0x26f7f8);}return _0x37429d[_0x1127('0x17')](_0x26f7f8)['end']();};}function respondWithResult(_0xbc867e,_0xde0522){_0xde0522=_0xde0522||0xc8;return function(_0x55c651){if(_0x55c651){return _0xbc867e[_0x1127('0x17')](_0xde0522)[_0x1127('0x18')](_0x55c651);}};}function respondWithFilteredResult(_0x3ecd75,_0x238c89){return function(_0x40fc32){if(_0x40fc32){var _0x50581e=typeof _0x238c89[_0x1127('0x19')]===_0x1127('0x1a')&&typeof _0x238c89[_0x1127('0x1b')]===_0x1127('0x1a');var _0x3100a2=_0x40fc32['count'];var _0x37a0c9=_0x50581e?0x0:_0x238c89[_0x1127('0x19')];var _0x8c0bf2=_0x50581e?_0x40fc32[_0x1127('0x1c')]:_0x238c89[_0x1127('0x19')]+_0x238c89[_0x1127('0x1b')];var _0x5424e6;if(_0x8c0bf2>=_0x3100a2){_0x8c0bf2=_0x3100a2;_0x5424e6=0xc8;}else{_0x5424e6=0xce;}_0x3ecd75[_0x1127('0x17')](_0x5424e6);return _0x3ecd75[_0x1127('0x1d')](_0x1127('0x1e'),_0x37a0c9+'-'+_0x8c0bf2+'/'+_0x3100a2)[_0x1127('0x18')](_0x40fc32);}return null;};}function patchUpdates(_0x481108){return function(_0x3862d0){try{jsonpatch[_0x1127('0x1f')](_0x3862d0,_0x481108,!![]);}catch(_0x372a5e){return BPromise['reject'](_0x372a5e);}return _0x3862d0[_0x1127('0x20')]();};}function saveUpdates(_0x1d2f82,_0xb2a103){return function(_0x86314c){if(_0x86314c){return _0x86314c[_0x1127('0x21')](_0x1d2f82)[_0x1127('0x22')](function(_0x37f884){return _0x37f884;});}return null;};}function removeEntity(_0xc09086,_0x5ea41f){return function(_0x2d0d7a){if(_0x2d0d7a){return _0x2d0d7a['destroy']()['then'](function(){var _0x2a24b9=_0x2d0d7a['get']({'plain':!![]});var _0x3fc7e0=_0x1127('0x23');return db[_0x1127('0x24')][_0x1127('0x25')]({'where':{'type':_0x3fc7e0,'resourceId':_0x2a24b9['id']}})['then'](function(){return _0x2d0d7a;});})[_0x1127('0x22')](function(){_0xc09086['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x59d0de,_0x2607eb){return function(_0x4a6928){if(!_0x4a6928){_0x59d0de[_0x1127('0x16')](0x194);}return _0x4a6928;};}function handleError(_0x728cc1,_0x44c99e){_0x44c99e=_0x44c99e||0x1f4;return function(_0x1443f7){logger[_0x1127('0x26')](_0x1443f7[_0x1127('0x27')]);if(_0x1443f7[_0x1127('0x28')]){delete _0x1443f7[_0x1127('0x28')];}_0x728cc1[_0x1127('0x17')](_0x44c99e)[_0x1127('0x29')](_0x1443f7);};}exports[_0x1127('0x2a')]=function(_0x3f14aa,_0x31af48){var _0xf6685b={},_0x4f0838={},_0x1ac8c8={'count':0x0,'rows':[]};var _0x38bc8a=_[_0x1127('0x2b')](db[_0x1127('0x2c')][_0x1127('0x2d')],function(_0x4d62cc){return{'name':_0x4d62cc[_0x1127('0x2e')],'type':_0x4d62cc[_0x1127('0x2f')][_0x1127('0x30')]};});_0x4f0838[_0x1127('0x31')]=_[_0x1127('0x2b')](_0x38bc8a,_0x1127('0x28'));_0x4f0838[_0x1127('0x32')]=_['keys'](_0x3f14aa[_0x1127('0x32')]);_0x4f0838[_0x1127('0x33')]=_[_0x1127('0x34')](_0x4f0838['model'],_0x4f0838[_0x1127('0x32')]);_0xf6685b[_0x1127('0x35')]=_[_0x1127('0x34')](_0x4f0838['model'],qs[_0x1127('0x36')](_0x3f14aa[_0x1127('0x32')]['fields']));_0xf6685b[_0x1127('0x35')]=_0xf6685b['attributes'][_0x1127('0x37')]?_0xf6685b[_0x1127('0x35')]:_0x4f0838['model'];if(!_0x3f14aa[_0x1127('0x32')][_0x1127('0x38')](_0x1127('0x39'))){_0xf6685b[_0x1127('0x1b')]=qs[_0x1127('0x1b')](_0x3f14aa[_0x1127('0x32')][_0x1127('0x1b')]);_0xf6685b[_0x1127('0x19')]=qs[_0x1127('0x19')](_0x3f14aa[_0x1127('0x32')][_0x1127('0x19')]);}_0xf6685b[_0x1127('0x3a')]=qs[_0x1127('0x3b')](_0x3f14aa[_0x1127('0x32')][_0x1127('0x3b')]);_0xf6685b[_0x1127('0x3c')]=qs[_0x1127('0x33')](_[_0x1127('0x3d')](_0x3f14aa[_0x1127('0x32')],_0x4f0838[_0x1127('0x33')]),_0x38bc8a);if(_0x3f14aa[_0x1127('0x32')][_0x1127('0x3e')]){_0xf6685b[_0x1127('0x3c')]=_[_0x1127('0x3f')](_0xf6685b[_0x1127('0x3c')],{'$or':_['map'](_0x38bc8a,function(_0x7308b7){if(_0x7308b7[_0x1127('0x2f')]!=='VIRTUAL'){var _0x1d6026={};_0x1d6026[_0x7308b7[_0x1127('0x28')]]={'$like':'%'+_0x3f14aa['query']['filter']+'%'};return _0x1d6026;}})});}_0xf6685b=_[_0x1127('0x3f')]({},_0xf6685b,_0x3f14aa[_0x1127('0x40')]);var _0xf7ecd2={'where':_0xf6685b[_0x1127('0x3c')]};return db[_0x1127('0x2c')]['count'](_0xf7ecd2)['then'](function(_0x3b5676){_0x1ac8c8[_0x1127('0x1c')]=_0x3b5676;if(_0x3f14aa[_0x1127('0x32')]['includeAll']){_0xf6685b[_0x1127('0x41')]=[{'all':!![]}];}return db[_0x1127('0x2c')][_0x1127('0x42')](_0xf6685b);})[_0x1127('0x22')](function(_0x36e70e){_0x1ac8c8[_0x1127('0x43')]=_0x36e70e;return _0x1ac8c8;})[_0x1127('0x22')](respondWithFilteredResult(_0x31af48,_0xf6685b))['catch'](handleError(_0x31af48,null));};exports['show']=function(_0x56bd8c,_0x3056eb){var _0x31943e={'raw':![],'where':{'id':_0x56bd8c['params']['id']}},_0x2dc6c2={};_0x2dc6c2['model']=_['keys'](db[_0x1127('0x2c')][_0x1127('0x2d')]);_0x2dc6c2[_0x1127('0x32')]=_[_0x1127('0x44')](_0x56bd8c[_0x1127('0x32')]);_0x2dc6c2['filters']=_['intersection'](_0x2dc6c2[_0x1127('0x31')],_0x2dc6c2[_0x1127('0x32')]);_0x31943e[_0x1127('0x35')]=_[_0x1127('0x34')](_0x2dc6c2[_0x1127('0x31')],qs[_0x1127('0x36')](_0x56bd8c[_0x1127('0x32')][_0x1127('0x36')]));_0x31943e[_0x1127('0x35')]=_0x31943e[_0x1127('0x35')][_0x1127('0x37')]?_0x31943e[_0x1127('0x35')]:_0x2dc6c2[_0x1127('0x31')];if(_0x56bd8c[_0x1127('0x32')][_0x1127('0x45')]){_0x31943e['include']=[{'all':!![]}];}_0x31943e=_[_0x1127('0x3f')]({},_0x31943e,_0x56bd8c['options']);return db[_0x1127('0x2c')][_0x1127('0x46')](_0x31943e)[_0x1127('0x22')](handleEntityNotFound(_0x3056eb,null))[_0x1127('0x22')](respondWithResult(_0x3056eb,null))['catch'](handleError(_0x3056eb,null));};exports[_0x1127('0x47')]=function(_0x330e59,_0x25099d){return db[_0x1127('0x2c')][_0x1127('0x47')](_0x330e59[_0x1127('0x48')],{})[_0x1127('0x22')](function(_0x3df9de){var _0x58ff0d=_0x330e59[_0x1127('0x49')]['get']({'plain':!![]});if(!_0x58ff0d)throw new Error(_0x1127('0x4a'));if(_0x58ff0d[_0x1127('0x4b')]==='user'){var _0x11437e=_0x3df9de[_0x1127('0x4c')]({'plain':!![]});var _0x5e4e58=_0x1127('0x23');return db[_0x1127('0x4d')]['find']({'where':{'name':_0x5e4e58,'userProfileId':_0x58ff0d[_0x1127('0x4e')]},'raw':!![]})['then'](function(_0x4c2bf3){if(_0x4c2bf3&&_0x4c2bf3[_0x1127('0x4f')]===0x0){return db['UserProfileResource'][_0x1127('0x47')]({'name':_0x11437e[_0x1127('0x28')],'resourceId':_0x11437e['id'],'type':_0x4c2bf3['name'],'sectionId':_0x4c2bf3['id']},{})[_0x1127('0x22')](function(){return _0x3df9de;});}else{return _0x3df9de;}})[_0x1127('0x50')](function(_0x43574e){logger['error'](_0x1127('0x51'),_0x43574e);throw _0x43574e;});}return _0x3df9de;})[_0x1127('0x22')](respondWithResult(_0x25099d,0xc9))[_0x1127('0x50')](handleError(_0x25099d,null));};exports[_0x1127('0x52')]=function(_0x236684,_0x2876e8){var _0x5368f1={'where':{'id':_0x236684['params']['id']}},_0x5dcd7f={};_0x5dcd7f[_0x1127('0x31')]=_[_0x1127('0x44')](db[_0x1127('0x2c')][_0x1127('0x2d')]);_0x5368f1['attributes']=_[_0x1127('0x34')](_0x5dcd7f[_0x1127('0x31')],qs[_0x1127('0x36')](_0x236684['query'][_0x1127('0x36')]));_0x5368f1[_0x1127('0x35')]=_0x5368f1['attributes'][_0x1127('0x37')]?_0x5368f1[_0x1127('0x35')]:_0x5dcd7f[_0x1127('0x31')];if(_0x236684[_0x1127('0x32')]['includeAll']){_0x5368f1[_0x1127('0x41')]=[{'all':!![]}];}_0x5368f1=_[_0x1127('0x3f')]({},_0x5368f1,_0x236684[_0x1127('0x40')]);return db[_0x1127('0x2c')][_0x1127('0x46')](_0x5368f1)[_0x1127('0x22')](handleEntityNotFound(_0x2876e8,null))[_0x1127('0x22')](function(_0x397ff4){if(_0x397ff4){var _0x2493d0=_0x397ff4[_0x1127('0x4c')]({'plain':!![]});_0x2493d0=qs[_0x1127('0x53')](_0x2493d0,['id',_0x1127('0x54'),'updatedAt']);_0x236684[_0x1127('0x48')]=_['omit'](_0x236684[_0x1127('0x48')],['id',_0x1127('0x54'),'updatedAt']);return db[_0x1127('0x2c')][_0x1127('0x47')](_[_0x1127('0x3f')](_0x2493d0,_0x236684[_0x1127('0x48')]),{'include':_0x236684[_0x1127('0x32')][_0x1127('0x45')]?[{'all':!![]}]:undefined})[_0x1127('0x22')](function(_0x504615){var _0x504f17=_0x236684[_0x1127('0x49')][_0x1127('0x4c')]({'plain':!![]});if(!_0x504f17)throw new Error(_0x1127('0x4a'));if(_0x504f17[_0x1127('0x4b')]===_0x1127('0x49')){var _0x30fdc4=_0x504615[_0x1127('0x4c')]({'plain':!![]});var _0x2c481a=_0x1127('0x23');return db[_0x1127('0x4d')][_0x1127('0x46')]({'where':{'name':_0x2c481a,'userProfileId':_0x504f17[_0x1127('0x4e')]},'raw':!![]})[_0x1127('0x22')](function(_0x5ce2dd){if(_0x5ce2dd&&_0x5ce2dd[_0x1127('0x4f')]===0x0){return db['UserProfileResource'][_0x1127('0x47')]({'name':_0x30fdc4['name'],'resourceId':_0x30fdc4['id'],'type':_0x5ce2dd[_0x1127('0x28')],'sectionId':_0x5ce2dd['id']},{})['then'](function(){return _0x504615;});}else{return _0x504615;}})[_0x1127('0x50')](function(_0x2b78a0){logger[_0x1127('0x26')](_0x1127('0x51'),_0x2b78a0);throw _0x2b78a0;});}return _0x504615;});}})['then'](respondWithResult(_0x2876e8,0xc9))['catch'](handleError(_0x2876e8,null));};exports[_0x1127('0x21')]=function(_0x44dc3e,_0x421d58){if(_0x44dc3e['body']['id']){delete _0x44dc3e[_0x1127('0x48')]['id'];}return db[_0x1127('0x2c')]['find']({'where':{'id':_0x44dc3e[_0x1127('0x55')]['id']}})[_0x1127('0x22')](handleEntityNotFound(_0x421d58,null))[_0x1127('0x22')](saveUpdates(_0x44dc3e['body'],null))['then'](respondWithResult(_0x421d58,null))[_0x1127('0x50')](handleError(_0x421d58,null));};exports[_0x1127('0x25')]=function(_0x2b9fbc,_0x28601b){return db[_0x1127('0x2c')]['find']({'where':{'id':_0x2b9fbc[_0x1127('0x55')]['id']}})[_0x1127('0x22')](handleEntityNotFound(_0x28601b,null))[_0x1127('0x22')](removeEntity(_0x28601b,null))[_0x1127('0x50')](handleError(_0x28601b,null));};exports[_0x1127('0x56')]=function(_0x21580e,_0x56fc0b,_0x14e984){var _0x3c7c73={'raw':!![],'where':{}};var _0x3b629f={};var _0x4c4a23={'count':0x0,'rows':[]};return db[_0x1127('0x2c')][_0x1127('0x57')]({'where':{'id':_0x21580e[_0x1127('0x55')]['id']}})[_0x1127('0x22')](handleEntityNotFound(_0x56fc0b,null))[_0x1127('0x22')](function(_0x167b49){if(_0x167b49){_0x3b629f['model']=_[_0x1127('0x44')](db[_0x1127('0x58')]['rawAttributes']);_0x3b629f[_0x1127('0x32')]=_[_0x1127('0x44')](_0x21580e['query']);_0x3b629f[_0x1127('0x33')]=_[_0x1127('0x34')](_0x3b629f[_0x1127('0x31')],_0x3b629f[_0x1127('0x32')]);_0x3c7c73[_0x1127('0x35')]=_['intersection'](_0x3b629f['model'],qs[_0x1127('0x36')](_0x21580e[_0x1127('0x32')][_0x1127('0x36')]));_0x3c7c73[_0x1127('0x35')]=_0x3c7c73[_0x1127('0x35')]['length']?_0x3c7c73[_0x1127('0x35')]:_0x3b629f[_0x1127('0x31')];if(!_0x21580e[_0x1127('0x32')][_0x1127('0x38')](_0x1127('0x39'))){_0x3c7c73[_0x1127('0x1b')]=qs[_0x1127('0x1b')](_0x21580e[_0x1127('0x32')][_0x1127('0x1b')]);_0x3c7c73[_0x1127('0x19')]=qs[_0x1127('0x19')](_0x21580e[_0x1127('0x32')]['offset']);}_0x3c7c73[_0x1127('0x3a')]=qs[_0x1127('0x3b')](_0x21580e['query'][_0x1127('0x3b')]);_0x3c7c73['where']=qs['filters'](_[_0x1127('0x3d')](_0x21580e[_0x1127('0x32')],_0x3b629f['filters']));_0x3c7c73[_0x1127('0x3c')][_0x1127('0x59')]=_0x167b49['id'];if(_0x21580e[_0x1127('0x32')]['filter']){_0x3c7c73['where']=_[_0x1127('0x3f')](_0x3c7c73[_0x1127('0x3c')],{'$or':_[_0x1127('0x2b')](_0x3c7c73['attributes'],function(_0x5353e1){var _0x460788={};_0x460788[_0x5353e1]={'$like':'%'+_0x21580e[_0x1127('0x32')][_0x1127('0x3e')]+'%'};return _0x460788;})});}_0x3c7c73=_[_0x1127('0x3f')]({},_0x3c7c73,_0x21580e[_0x1127('0x40')]);return db[_0x1127('0x58')][_0x1127('0x1c')]({'where':_0x3c7c73[_0x1127('0x3c')]})[_0x1127('0x22')](function(_0x3fae61){_0x4c4a23['count']=_0x3fae61;if(_0x21580e[_0x1127('0x32')][_0x1127('0x45')]){_0x3c7c73['include']=[{'all':!![]}];}return db[_0x1127('0x58')][_0x1127('0x42')](_0x3c7c73);})['then'](function(_0x4c7cb6){_0x4c4a23[_0x1127('0x43')]=_0x4c7cb6;return _0x4c4a23;});}})[_0x1127('0x22')](respondWithFilteredResult(_0x56fc0b,_0x3c7c73))[_0x1127('0x50')](handleError(_0x56fc0b,null));};exports[_0x1127('0x5a')]=function(_0x306f71,_0x365e8e,_0x2adfef){var _0x43b809={'raw':!![],'where':{}};var _0x24c7e4={};var _0x2d1d1a={'count':0x0,'rows':[]};return db[_0x1127('0x2c')][_0x1127('0x57')]({'where':{'id':_0x306f71[_0x1127('0x55')]['id']}})['then'](handleEntityNotFound(_0x365e8e,null))['then'](function(_0x1cc9b5){if(_0x1cc9b5){_0x24c7e4[_0x1127('0x31')]=_['keys'](db[_0x1127('0x5b')][_0x1127('0x2d')]);_0x24c7e4[_0x1127('0x32')]=_[_0x1127('0x44')](_0x306f71[_0x1127('0x32')]);_0x24c7e4[_0x1127('0x33')]=_['intersection'](_0x24c7e4[_0x1127('0x31')],_0x24c7e4['query']);_0x43b809[_0x1127('0x35')]=_[_0x1127('0x34')](_0x24c7e4['model'],qs[_0x1127('0x36')](_0x306f71[_0x1127('0x32')][_0x1127('0x36')]));_0x43b809['attributes']=_0x43b809['attributes'][_0x1127('0x37')]?_0x43b809[_0x1127('0x35')]:_0x24c7e4['model'];if(!_0x306f71[_0x1127('0x32')][_0x1127('0x38')](_0x1127('0x39'))){_0x43b809[_0x1127('0x1b')]=qs[_0x1127('0x1b')](_0x306f71[_0x1127('0x32')][_0x1127('0x1b')]);_0x43b809['offset']=qs['offset'](_0x306f71[_0x1127('0x32')]['offset']);}_0x43b809[_0x1127('0x3a')]=qs[_0x1127('0x3b')](_0x306f71[_0x1127('0x32')][_0x1127('0x3b')]);_0x43b809[_0x1127('0x3c')]=qs[_0x1127('0x33')](_[_0x1127('0x3d')](_0x306f71[_0x1127('0x32')],_0x24c7e4[_0x1127('0x33')]));_0x43b809[_0x1127('0x3c')]['CampaignId']=_0x1cc9b5['id'];if(_0x306f71[_0x1127('0x32')][_0x1127('0x3e')]){_0x43b809[_0x1127('0x3c')]=_[_0x1127('0x3f')](_0x43b809[_0x1127('0x3c')],{'$or':_[_0x1127('0x2b')](_0x43b809[_0x1127('0x35')],function(_0x325f6b){var _0x1302dc={};_0x1302dc[_0x325f6b]={'$like':'%'+_0x306f71['query'][_0x1127('0x3e')]+'%'};return _0x1302dc;})});}_0x43b809=_[_0x1127('0x3f')]({},_0x43b809,_0x306f71[_0x1127('0x40')]);return db[_0x1127('0x5b')]['count']({'where':_0x43b809[_0x1127('0x3c')]})[_0x1127('0x22')](function(_0x44bd04){_0x2d1d1a[_0x1127('0x1c')]=_0x44bd04;if(_0x306f71['query'][_0x1127('0x45')]){_0x43b809[_0x1127('0x41')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x1127('0x42')](_0x43b809);})[_0x1127('0x22')](function(_0x1b771b){_0x2d1d1a[_0x1127('0x43')]=_0x1b771b;return _0x2d1d1a;});}})['then'](respondWithFilteredResult(_0x365e8e,_0x43b809))[_0x1127('0x50')](handleError(_0x365e8e,null));};exports[_0x1127('0x5c')]=function(_0x589de9,_0x2eabd9,_0x1c818b){var _0x1b3fd3={'raw':!![],'where':{}};var _0x41469d={};var _0x4b7328={'count':0x0,'rows':[]};return db[_0x1127('0x2c')][_0x1127('0x57')]({'where':{'id':_0x589de9[_0x1127('0x55')]['id']}})['then'](handleEntityNotFound(_0x2eabd9,null))['then'](function(_0x1c88de){if(_0x1c88de){_0x41469d[_0x1127('0x31')]=_['keys'](db[_0x1127('0x5d')][_0x1127('0x2d')]);_0x41469d[_0x1127('0x32')]=_[_0x1127('0x44')](_0x589de9[_0x1127('0x32')]);_0x41469d['filters']=_[_0x1127('0x34')](_0x41469d[_0x1127('0x31')],_0x41469d[_0x1127('0x32')]);_0x1b3fd3['attributes']=_['intersection'](_0x41469d[_0x1127('0x31')],qs[_0x1127('0x36')](_0x589de9[_0x1127('0x32')][_0x1127('0x36')]));_0x1b3fd3[_0x1127('0x35')]=_0x1b3fd3[_0x1127('0x35')][_0x1127('0x37')]?_0x1b3fd3['attributes']:_0x41469d[_0x1127('0x31')];if(!_0x589de9['query'][_0x1127('0x38')]('nolimit')){_0x1b3fd3[_0x1127('0x1b')]=qs[_0x1127('0x1b')](_0x589de9[_0x1127('0x32')]['limit']);_0x1b3fd3['offset']=qs['offset'](_0x589de9[_0x1127('0x32')]['offset']);}_0x1b3fd3[_0x1127('0x3a')]=qs[_0x1127('0x3b')](_0x589de9[_0x1127('0x32')]['sort']);_0x1b3fd3[_0x1127('0x3c')]=qs[_0x1127('0x33')](_[_0x1127('0x3d')](_0x589de9[_0x1127('0x32')],_0x41469d['filters']));_0x1b3fd3[_0x1127('0x3c')][_0x1127('0x59')]=_0x1c88de['id'];if(_0x589de9[_0x1127('0x32')][_0x1127('0x3e')]){_0x1b3fd3[_0x1127('0x3c')]=_[_0x1127('0x3f')](_0x1b3fd3[_0x1127('0x3c')],{'$or':_[_0x1127('0x2b')](_0x1b3fd3[_0x1127('0x35')],function(_0x76af79){var _0x48fd82={};_0x48fd82[_0x76af79]={'$like':'%'+_0x589de9[_0x1127('0x32')][_0x1127('0x3e')]+'%'};return _0x48fd82;})});}_0x1b3fd3=_['merge']({},_0x1b3fd3,_0x589de9['options']);return db[_0x1127('0x5d')][_0x1127('0x1c')]({'where':_0x1b3fd3[_0x1127('0x3c')]})[_0x1127('0x22')](function(_0x95b80e){_0x4b7328['count']=_0x95b80e;if(_0x589de9[_0x1127('0x32')]['includeAll']){_0x1b3fd3[_0x1127('0x41')]=[{'all':!![]}];}return db[_0x1127('0x5d')]['findAll'](_0x1b3fd3);})[_0x1127('0x22')](function(_0x20f544){_0x4b7328[_0x1127('0x43')]=_0x20f544;return _0x4b7328;});}})[_0x1127('0x22')](respondWithFilteredResult(_0x2eabd9,_0x1b3fd3))['catch'](handleError(_0x2eabd9,null));};exports[_0x1127('0x5e')]=function(_0x11dfbd,_0x4b920c,_0x5396a2){var _0x337f7={'raw':!![],'where':{}};var _0x523cb6={};var _0xd14d86={'count':0x0,'rows':[]};return db[_0x1127('0x2c')][_0x1127('0x57')]({'where':{'id':_0x11dfbd[_0x1127('0x55')]['id']}})['then'](handleEntityNotFound(_0x4b920c,null))[_0x1127('0x22')](function(_0x9d4369){if(_0x9d4369){_0x523cb6[_0x1127('0x31')]=_[_0x1127('0x44')](db[_0x1127('0x5f')][_0x1127('0x2d')]);_0x523cb6[_0x1127('0x32')]=_[_0x1127('0x44')](_0x11dfbd[_0x1127('0x32')]);_0x523cb6[_0x1127('0x33')]=_[_0x1127('0x34')](_0x523cb6[_0x1127('0x31')],_0x523cb6[_0x1127('0x32')]);_0x337f7['attributes']=_[_0x1127('0x34')](_0x523cb6['model'],qs[_0x1127('0x36')](_0x11dfbd[_0x1127('0x32')][_0x1127('0x36')]));_0x337f7[_0x1127('0x35')]=_0x337f7[_0x1127('0x35')][_0x1127('0x37')]?_0x337f7['attributes']:_0x523cb6[_0x1127('0x31')];if(!_0x11dfbd[_0x1127('0x32')][_0x1127('0x38')](_0x1127('0x39'))){_0x337f7[_0x1127('0x1b')]=qs[_0x1127('0x1b')](_0x11dfbd[_0x1127('0x32')]['limit']);_0x337f7[_0x1127('0x19')]=qs[_0x1127('0x19')](_0x11dfbd[_0x1127('0x32')][_0x1127('0x19')]);}_0x337f7[_0x1127('0x3a')]=qs[_0x1127('0x3b')](_0x11dfbd['query'][_0x1127('0x3b')]);_0x337f7[_0x1127('0x3c')]=qs[_0x1127('0x33')](_['pick'](_0x11dfbd[_0x1127('0x32')],_0x523cb6[_0x1127('0x33')]));_0x337f7[_0x1127('0x3c')][_0x1127('0x59')]=_0x9d4369['id'];if(_0x11dfbd[_0x1127('0x32')]['filter']){_0x337f7[_0x1127('0x3c')]=_[_0x1127('0x3f')](_0x337f7[_0x1127('0x3c')],{'$or':_[_0x1127('0x2b')](_0x337f7['attributes'],function(_0x1197cd){var _0x47ce0e={};_0x47ce0e[_0x1197cd]={'$like':'%'+_0x11dfbd[_0x1127('0x32')][_0x1127('0x3e')]+'%'};return _0x47ce0e;})});}_0x337f7=_[_0x1127('0x3f')]({},_0x337f7,_0x11dfbd[_0x1127('0x40')]);return db[_0x1127('0x5f')][_0x1127('0x1c')]({'where':_0x337f7[_0x1127('0x3c')]})[_0x1127('0x22')](function(_0x64d296){_0xd14d86['count']=_0x64d296;if(_0x11dfbd[_0x1127('0x32')]['includeAll']){_0x337f7['include']=[{'all':!![]}];}return db[_0x1127('0x5f')]['findAll'](_0x337f7);})[_0x1127('0x22')](function(_0x4357ec){_0xd14d86['rows']=_0x4357ec;return _0xd14d86;});}})['then'](respondWithFilteredResult(_0x4b920c,_0x337f7))[_0x1127('0x50')](handleError(_0x4b920c,null));};exports['getLists']=function(_0x1d638e,_0x3f7b4d,_0x4a1889){var _0x3175d8={};var _0x3fd841={};var _0x4deabd;var _0x59a4bd;return db[_0x1127('0x2c')][_0x1127('0x57')]({'where':{'id':_0x1d638e[_0x1127('0x55')]['id']}})['then'](handleEntityNotFound(_0x3f7b4d,null))[_0x1127('0x22')](function(_0x45ceb9){if(_0x45ceb9){_0x4deabd=_0x45ceb9;_0x3fd841[_0x1127('0x31')]=_[_0x1127('0x44')](db[_0x1127('0x60')][_0x1127('0x2d')]);_0x3fd841[_0x1127('0x32')]=_[_0x1127('0x44')](_0x1d638e[_0x1127('0x32')]);_0x3fd841[_0x1127('0x33')]=_[_0x1127('0x34')](_0x3fd841['model'],_0x3fd841['query']);_0x3175d8['attributes']=_['intersection'](_0x3fd841[_0x1127('0x31')],qs['fields'](_0x1d638e['query']['fields']));_0x3175d8['attributes']=_0x3175d8[_0x1127('0x35')]['length']?_0x3175d8[_0x1127('0x35')]:_0x3fd841['model'];_0x3175d8['order']=qs[_0x1127('0x3b')](_0x1d638e[_0x1127('0x32')][_0x1127('0x3b')]);_0x3175d8['where']=qs[_0x1127('0x33')](_[_0x1127('0x3d')](_0x1d638e['query'],_0x3fd841['filters']));if(_0x1d638e['query'][_0x1127('0x3e')]){_0x3175d8[_0x1127('0x3c')]=_[_0x1127('0x3f')](_0x3175d8[_0x1127('0x3c')],{'$or':_['map'](_0x3175d8[_0x1127('0x35')],function(_0x289543){var _0x229f5c={};_0x229f5c[_0x289543]={'$like':'%'+_0x1d638e['query']['filter']+'%'};return _0x229f5c;})});}_0x3175d8=_[_0x1127('0x3f')]({},_0x3175d8,_0x1d638e[_0x1127('0x40')]);return _0x4deabd[_0x1127('0x61')](_0x3175d8);}})['then'](function(_0x1a9897){if(_0x1a9897){_0x59a4bd=_0x1a9897[_0x1127('0x37')];if(!_0x1d638e[_0x1127('0x32')]['hasOwnProperty'](_0x1127('0x39'))){_0x3175d8['limit']=qs['limit'](_0x1d638e[_0x1127('0x32')][_0x1127('0x1b')]);_0x3175d8['offset']=qs[_0x1127('0x19')](_0x1d638e[_0x1127('0x32')][_0x1127('0x19')]);}return _0x4deabd[_0x1127('0x61')](_0x3175d8);}})['then'](function(_0x7c9592){if(_0x7c9592){return _0x7c9592?{'count':_0x59a4bd,'rows':_0x7c9592}:null;}})['then'](respondWithResult(_0x3f7b4d,null))[_0x1127('0x50')](handleError(_0x3f7b4d,null));};exports[_0x1127('0x62')]=function(_0x3d8bc9,_0x2fbab4,_0xfa3419){var _0x57654d,_0x683555;return db['Campaign'][_0x1127('0x46')]({'where':{'id':_0x3d8bc9['params']['id']}})[_0x1127('0x22')](handleEntityNotFound(_0x2fbab4,null))['then'](function(_0x4ba4f7){if(_0x4ba4f7){_0x683555=_0x4ba4f7;return _0x4ba4f7[_0x1127('0x62')](_0x3d8bc9[_0x1127('0x48')][_0x1127('0x63')],_[_0x1127('0x53')](_0x3d8bc9['body'],['ids','id'])||{});}return null;})[_0x1127('0x64')](function(_0x5c82bb){var _0x49a1b8;_0x57654d=_0x5c82bb||[];var _0x5c0710=[];if(_0x5c82bb){for(var _0x3bece3=0x0;_0x3bece3<_0x5c82bb['length'];_0x3bece3+=0x1){var _0x408116=_0x5c82bb[_0x3bece3][_0x1127('0x4c')]({'plain':!![]});_0x683555['dialCheckDuplicateType']=_0x3d8bc9['body'][_0x1127('0x65')]?_0x3d8bc9['body']['dialCheckDuplicateType']:_0x683555[_0x1127('0x65')];switch(_0x683555[_0x1127('0x65')]){case _0x1127('0x66'):_0x49a1b8=squel['insert']()['into'](_0x1127('0x67'))['fromQuery']([_0x1127('0x68'),_0x1127('0x69'),'ContactId','ListId',_0x1127('0x59'),'createdAt','updatedAt'],squel[_0x1127('0x6a')]()['field'](_0x1127('0x68'),_0x1127('0x68'))[_0x1127('0x6b')](_0x1127('0x6c'),_0x1127('0x69'))[_0x1127('0x6b')]('id',_0x1127('0x6d'))['field'](_0x408116[_0x1127('0x6e')][_0x1127('0x6f')](),_0x1127('0x70'))[_0x1127('0x6b')](_0x3d8bc9['params']['id'][_0x1127('0x6f')](),_0x1127('0x59'))[_0x1127('0x6b')]('NOW()','createdAt')[_0x1127('0x6b')]('NOW()',_0x1127('0x71'))[_0x1127('0x72')](_0x1127('0x73'))[_0x1127('0x3c')](_0x1127('0x74'))[_0x1127('0x3c')]('ListId\x20=\x20?',_0x408116[_0x1127('0x6e')][_0x1127('0x6f')]())[_0x1127('0x3c')]('phone\x20IS\x20NOT\x20NULL')[_0x1127('0x3c')](_0x1127('0x75'),squel[_0x1127('0x6a')]()[_0x1127('0x6b')](_0x1127('0x76'))[_0x1127('0x72')]('cm_hopper_final')[_0x1127('0x3c')](_0x1127('0x77'),_0x3d8bc9[_0x1127('0x55')]['id'][_0x1127('0x6f')]()))[_0x1127('0x3c')](_0x1127('0x75'),squel['select']()[_0x1127('0x6b')](_0x1127('0x78'))[_0x1127('0x72')]('cm_hopper')[_0x1127('0x3c')](_0x1127('0x77'),_0x3d8bc9['params']['id'][_0x1127('0x6f')]())))['toString']();break;case _0x1127('0x79'):_0x49a1b8=squel[_0x1127('0x7a')]()[_0x1127('0x7b')](_0x1127('0x67'))[_0x1127('0x7c')]([_0x1127('0x68'),_0x1127('0x69'),'ContactId','ListId',_0x1127('0x59'),_0x1127('0x54'),'updatedAt'],squel[_0x1127('0x6a')]()[_0x1127('0x6b')](_0x1127('0x68'),_0x1127('0x68'))[_0x1127('0x6b')](_0x1127('0x6c'),_0x1127('0x69'))['field']('id',_0x1127('0x6d'))[_0x1127('0x6b')](_0x408116[_0x1127('0x6e')]['toString'](),_0x1127('0x70'))[_0x1127('0x6b')](_0x3d8bc9['params']['id'][_0x1127('0x6f')](),_0x1127('0x59'))[_0x1127('0x6b')](_0x1127('0x6c'),'createdAt')[_0x1127('0x6b')]('NOW()',_0x1127('0x71'))['from'](_0x1127('0x73'))[_0x1127('0x3c')]('deletedAt\x20IS\x20NULL')[_0x1127('0x3c')]('ListId\x20=\x20?',_0x408116[_0x1127('0x6e')][_0x1127('0x6f')]())[_0x1127('0x3c')](_0x1127('0x7d'))['where'](_0x1127('0x75'),squel[_0x1127('0x6a')]()[_0x1127('0x6b')](_0x1127('0x78'))[_0x1127('0x72')](_0x1127('0x67'))[_0x1127('0x3c')](_0x1127('0x77'),_0x3d8bc9[_0x1127('0x55')]['id'][_0x1127('0x6f')]())))[_0x1127('0x6f')]();break;default:_0x49a1b8=squel[_0x1127('0x7a')]()[_0x1127('0x7b')](_0x1127('0x67'))[_0x1127('0x7c')]([_0x1127('0x68'),_0x1127('0x69'),_0x1127('0x6d'),_0x1127('0x70'),_0x1127('0x59'),_0x1127('0x54'),_0x1127('0x71')],squel[_0x1127('0x6a')]()[_0x1127('0x6b')](_0x1127('0x68'),_0x1127('0x68'))['field'](_0x1127('0x6c'),_0x1127('0x69'))[_0x1127('0x6b')]('id',_0x1127('0x6d'))['field'](_0x408116[_0x1127('0x6e')][_0x1127('0x6f')](),_0x1127('0x70'))[_0x1127('0x6b')](_0x3d8bc9[_0x1127('0x55')]['id'][_0x1127('0x6f')](),_0x1127('0x59'))[_0x1127('0x6b')](_0x1127('0x6c'),_0x1127('0x54'))[_0x1127('0x6b')](_0x1127('0x6c'),_0x1127('0x71'))[_0x1127('0x72')](_0x1127('0x73'))['where'](_0x1127('0x74'))[_0x1127('0x3c')]('ListId\x20=\x20?',_0x408116[_0x1127('0x6e')][_0x1127('0x6f')]())[_0x1127('0x3c')](_0x1127('0x7d')))[_0x1127('0x6f')]();}_0x5c0710[_0x1127('0x7e')](db[_0x1127('0x7f')][_0x1127('0x32')](_0x49a1b8));}return BPromise[_0x1127('0x80')](_0x5c0710);}})[_0x1127('0x22')](function(){return _0x57654d;})[_0x1127('0x22')](respondWithResult(_0x2fbab4,null))[_0x1127('0x50')](handleError(_0x2fbab4,null));};exports[_0x1127('0x81')]=function(_0x5a314b,_0xaa55b0,_0x1b8107){return db['Campaign'][_0x1127('0x46')]({'where':{'id':_0x5a314b[_0x1127('0x55')]['id']}})[_0x1127('0x22')](handleEntityNotFound(_0xaa55b0,null))[_0x1127('0x22')](function(_0x30b74e){if(_0x30b74e){return _0x30b74e[_0x1127('0x81')](_0x5a314b[_0x1127('0x32')][_0x1127('0x63')]);}})[_0x1127('0x22')](function(_0x11d23b){if(_0x11d23b){return db[_0x1127('0x58')][_0x1127('0x25')]({'where':{'ListId':_0x5a314b['query'][_0x1127('0x63')],'CampaignId':_0x5a314b['params']['id']}})[_0x1127('0x22')](function(){return _0x11d23b;});}})[_0x1127('0x22')](respondWithStatusCode(_0xaa55b0,null))['catch'](handleError(_0xaa55b0,null));};exports['getBlackLists']=function(_0x5df206,_0x369f7a,_0x51aa8d){var _0x2b47be={};var _0x3be162={};var _0x5d4560;var _0x5259e2;return db[_0x1127('0x2c')][_0x1127('0x57')]({'where':{'id':_0x5df206[_0x1127('0x55')]['id']}})[_0x1127('0x22')](handleEntityNotFound(_0x369f7a,null))[_0x1127('0x22')](function(_0x1aa4ac){if(_0x1aa4ac){_0x5d4560=_0x1aa4ac;_0x3be162['model']=_[_0x1127('0x44')](db[_0x1127('0x60')][_0x1127('0x2d')]);_0x3be162[_0x1127('0x32')]=_[_0x1127('0x44')](_0x5df206['query']);_0x3be162[_0x1127('0x33')]=_[_0x1127('0x34')](_0x3be162[_0x1127('0x31')],_0x3be162[_0x1127('0x32')]);_0x2b47be[_0x1127('0x35')]=_[_0x1127('0x34')](_0x3be162[_0x1127('0x31')],qs['fields'](_0x5df206[_0x1127('0x32')][_0x1127('0x36')]));_0x2b47be[_0x1127('0x35')]=_0x2b47be['attributes']['length']?_0x2b47be[_0x1127('0x35')]:_0x3be162[_0x1127('0x31')];_0x2b47be[_0x1127('0x3a')]=qs[_0x1127('0x3b')](_0x5df206[_0x1127('0x32')]['sort']);_0x2b47be['where']=qs['filters'](_['pick'](_0x5df206[_0x1127('0x32')],_0x3be162[_0x1127('0x33')]));if(_0x5df206[_0x1127('0x32')][_0x1127('0x3e')]){_0x2b47be[_0x1127('0x3c')]=_[_0x1127('0x3f')](_0x2b47be[_0x1127('0x3c')],{'$or':_['map'](_0x2b47be[_0x1127('0x35')],function(_0x37194c){var _0x27714f={};_0x27714f[_0x37194c]={'$like':'%'+_0x5df206[_0x1127('0x32')][_0x1127('0x3e')]+'%'};return _0x27714f;})});}_0x2b47be=_[_0x1127('0x3f')]({},_0x2b47be,_0x5df206[_0x1127('0x40')]);return _0x5d4560['getBlackLists'](_0x2b47be);}})[_0x1127('0x22')](function(_0x46660c){if(_0x46660c){_0x5259e2=_0x46660c['length'];if(!_0x5df206[_0x1127('0x32')][_0x1127('0x38')](_0x1127('0x39'))){_0x2b47be[_0x1127('0x1b')]=qs[_0x1127('0x1b')](_0x5df206[_0x1127('0x32')][_0x1127('0x1b')]);_0x2b47be[_0x1127('0x19')]=qs[_0x1127('0x19')](_0x5df206[_0x1127('0x32')][_0x1127('0x19')]);}return _0x5d4560[_0x1127('0x82')](_0x2b47be);}})[_0x1127('0x22')](function(_0xa71f0b){if(_0xa71f0b){return _0xa71f0b?{'count':_0x5259e2,'rows':_0xa71f0b}:null;}})[_0x1127('0x22')](respondWithResult(_0x369f7a,null))[_0x1127('0x50')](handleError(_0x369f7a,null));};exports[_0x1127('0x83')]=function(_0x28224e,_0x3fc6ea,_0x3e0bf9){var _0x5b2c99,_0x44514b;return db[_0x1127('0x2c')][_0x1127('0x46')]({'where':{'id':_0x28224e[_0x1127('0x55')]['id']}})['then'](handleEntityNotFound(_0x3fc6ea,null))[_0x1127('0x22')](function(_0x2e618d){if(_0x2e618d){_0x44514b=_0x2e618d;return _0x2e618d[_0x1127('0x83')](_0x28224e[_0x1127('0x48')]['ids'],_[_0x1127('0x53')](_0x28224e[_0x1127('0x48')],[_0x1127('0x63'),'id'])||{});}return null;})[_0x1127('0x64')](function(_0x21ada7){var _0x3c8fdc;_0x5b2c99=_0x21ada7||[];var _0x5a469f=[];if(_0x21ada7){for(var _0x3ad1b5=0x0;_0x3ad1b5<_0x21ada7[_0x1127('0x37')];_0x3ad1b5+=0x1){var _0x5f4721=_0x21ada7[_0x3ad1b5][_0x1127('0x4c')]({'plain':!![]});_0x3c8fdc=squel['insert']()['into'](_0x1127('0x84'))[_0x1127('0x7c')](['phone',_0x1127('0x6d'),'ListId',_0x1127('0x59'),_0x1127('0x54'),_0x1127('0x71')],squel[_0x1127('0x6a')]()[_0x1127('0x6b')](_0x1127('0x68'),_0x1127('0x68'))[_0x1127('0x6b')]('id',_0x1127('0x6d'))[_0x1127('0x6b')](_0x5f4721[_0x1127('0x6e')]['toString'](),_0x1127('0x70'))[_0x1127('0x6b')](_0x28224e[_0x1127('0x55')]['id'][_0x1127('0x6f')](),_0x1127('0x59'))['field'](_0x1127('0x6c'),_0x1127('0x54'))[_0x1127('0x6b')](_0x1127('0x6c'),_0x1127('0x71'))[_0x1127('0x72')]('cm_contacts')[_0x1127('0x3c')]('deletedAt\x20IS\x20NULL')[_0x1127('0x3c')](_0x1127('0x85'),_0x5f4721['CmListId'][_0x1127('0x6f')]())['where'](_0x1127('0x7d')))[_0x1127('0x6f')]();_0x5a469f[_0x1127('0x7e')](db[_0x1127('0x7f')][_0x1127('0x32')](_0x3c8fdc));}return BPromise[_0x1127('0x80')](_0x5a469f);}})[_0x1127('0x22')](function(){return _0x5b2c99;})[_0x1127('0x22')](respondWithResult(_0x3fc6ea,null))[_0x1127('0x50')](handleError(_0x3fc6ea,null));};exports[_0x1127('0x86')]=function(_0x20e41a,_0x50db3e,_0x3d99cd){return db['Campaign'][_0x1127('0x46')]({'where':{'id':_0x20e41a['params']['id']}})[_0x1127('0x22')](handleEntityNotFound(_0x50db3e,null))['then'](function(_0x392458){if(_0x392458){return _0x392458[_0x1127('0x86')](_0x20e41a['query'][_0x1127('0x63')]);}})[_0x1127('0x22')](function(_0xef4dc9){if(_0xef4dc9){return db[_0x1127('0x5f')][_0x1127('0x25')]({'where':{'ListId':_0x20e41a['query']['ids'],'CampaignId':_0x20e41a[_0x1127('0x55')]['id']}})[_0x1127('0x22')](function(){return _0xef4dc9;});}})[_0x1127('0x22')](respondWithStatusCode(_0x50db3e,null))[_0x1127('0x50')](handleError(_0x50db3e,null));};
\ No newline at end of file
+var _0xcb77=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','save','then','destroy','get','name','index','map','rawAttributes','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','merge','VIRTUAL','options','Campaign','count','include','findAll','rows','catch','show','params','includeAll','create','body','user','role','IvrCampaigns','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','UserProfileSection','userProfileId','UserProfileResource','error','update','findOne','CmHopper','order','CampaignId','filter','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','CmList','getLists','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','updatedAt','select','phone','field','NOW()','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','onlyIfOpen','COALESCE(phone,\x27\x27)','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0xcb77,0x18c));var _0x7cb7=function(_0x46d87a,_0x5183db){_0x46d87a=_0x46d87a-0x0;var _0x115296=_0xcb77[_0x46d87a];return _0x115296;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7cb7('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7cb7('0x1'));var rp=require(_0x7cb7('0x2'));var moment=require(_0x7cb7('0x3'));var BPromise=require(_0x7cb7('0x4'));var Mustache=require(_0x7cb7('0x5'));var util=require(_0x7cb7('0x6'));var path=require(_0x7cb7('0x7'));var sox=require(_0x7cb7('0x8'));var csv=require('to-csv');var ejs=require(_0x7cb7('0x9'));var fs=require('fs');var fs_extra=require(_0x7cb7('0xa'));var _=require(_0x7cb7('0xb'));var squel=require(_0x7cb7('0xc'));var crypto=require(_0x7cb7('0xd'));var jsforce=require(_0x7cb7('0xe'));var deskjs=require(_0x7cb7('0xf'));var toCsv=require(_0x7cb7('0x10'));var querystring=require(_0x7cb7('0x11'));var Papa=require(_0x7cb7('0x12'));var Redis=require(_0x7cb7('0x13'));var authService=require(_0x7cb7('0x14'));var qs=require(_0x7cb7('0x15'));var as=require(_0x7cb7('0x16'));var hardwareService=require(_0x7cb7('0x17'));var logger=require(_0x7cb7('0x18'))(_0x7cb7('0x19'));var utils=require(_0x7cb7('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x7cb7('0x1b'));var db=require(_0x7cb7('0x1c'))['db'];function respondWithStatusCode(_0x4603fa,_0x8ba97d){_0x8ba97d=_0x8ba97d||0xcc;return function(_0x127651){if(_0x127651){return _0x4603fa[_0x7cb7('0x1d')](_0x8ba97d);}return _0x4603fa[_0x7cb7('0x1e')](_0x8ba97d)[_0x7cb7('0x1f')]();};}function respondWithResult(_0x5d97c5,_0x54d7bd){_0x54d7bd=_0x54d7bd||0xc8;return function(_0xa43a0f){if(_0xa43a0f){return _0x5d97c5[_0x7cb7('0x1e')](_0x54d7bd)[_0x7cb7('0x20')](_0xa43a0f);}};}function respondWithFilteredResult(_0x414dee,_0x1c9fac){return function(_0x2e16e2){if(_0x2e16e2){var _0x32833e=typeof _0x1c9fac['offset']===_0x7cb7('0x21')&&typeof _0x1c9fac[_0x7cb7('0x22')]===_0x7cb7('0x21');var _0x3fb472=_0x2e16e2['count'];var _0x53c06e=_0x32833e?0x0:_0x1c9fac[_0x7cb7('0x23')];var _0x25f0d1=_0x32833e?_0x2e16e2['count']:_0x1c9fac[_0x7cb7('0x23')]+_0x1c9fac[_0x7cb7('0x22')];var _0x1d8598;if(_0x25f0d1>=_0x3fb472){_0x25f0d1=_0x3fb472;_0x1d8598=0xc8;}else{_0x1d8598=0xce;}_0x414dee[_0x7cb7('0x1e')](_0x1d8598);return _0x414dee[_0x7cb7('0x24')](_0x7cb7('0x25'),_0x53c06e+'-'+_0x25f0d1+'/'+_0x3fb472)['json'](_0x2e16e2);}return null;};}function patchUpdates(_0x3728e4){return function(_0x4338af){try{jsonpatch[_0x7cb7('0x26')](_0x4338af,_0x3728e4,!![]);}catch(_0x169d24){return BPromise[_0x7cb7('0x27')](_0x169d24);}return _0x4338af[_0x7cb7('0x28')]();};}function saveUpdates(_0x409ce8,_0x503f67){return function(_0x2c0beb){if(_0x2c0beb){return _0x2c0beb['update'](_0x409ce8)[_0x7cb7('0x29')](function(_0x2252b7){return _0x2252b7;});}return null;};}function removeEntity(_0xb01bcd,_0x58502f){return function(_0x3de0c3){if(_0x3de0c3){return _0x3de0c3[_0x7cb7('0x2a')]()[_0x7cb7('0x29')](function(){var _0x115fe1=_0x3de0c3[_0x7cb7('0x2b')]({'plain':!![]});var _0x40741d='IvrCampaigns';return db['UserProfileResource'][_0x7cb7('0x2a')]({'where':{'type':_0x40741d,'resourceId':_0x115fe1['id']}})[_0x7cb7('0x29')](function(){return _0x3de0c3;});})[_0x7cb7('0x29')](function(){_0xb01bcd[_0x7cb7('0x1e')](0xcc)[_0x7cb7('0x1f')]();});}};}function handleEntityNotFound(_0x51970d,_0x15b8f0){return function(_0x59e7b2){if(!_0x59e7b2){_0x51970d['sendStatus'](0x194);}return _0x59e7b2;};}function handleError(_0x537b8b,_0x5e6179){_0x5e6179=_0x5e6179||0x1f4;return function(_0x5bb20f){logger['error'](_0x5bb20f['stack']);if(_0x5bb20f[_0x7cb7('0x2c')]){delete _0x5bb20f[_0x7cb7('0x2c')];}_0x537b8b['status'](_0x5e6179)['send'](_0x5bb20f);};}exports[_0x7cb7('0x2d')]=function(_0x17d1a0,_0x14ee55){var _0x36ef67={},_0x5b48e2={},_0x52f166={'count':0x0,'rows':[]};var _0x2b13e4=_[_0x7cb7('0x2e')](db['Campaign'][_0x7cb7('0x2f')],function(_0xc24a62){return{'name':_0xc24a62['fieldName'],'type':_0xc24a62[_0x7cb7('0x30')][_0x7cb7('0x31')]};});_0x5b48e2['model']=_[_0x7cb7('0x2e')](_0x2b13e4,_0x7cb7('0x2c'));_0x5b48e2[_0x7cb7('0x32')]=_[_0x7cb7('0x33')](_0x17d1a0[_0x7cb7('0x32')]);_0x5b48e2['filters']=_['intersection'](_0x5b48e2[_0x7cb7('0x34')],_0x5b48e2[_0x7cb7('0x32')]);_0x36ef67[_0x7cb7('0x35')]=_[_0x7cb7('0x36')](_0x5b48e2['model'],qs[_0x7cb7('0x37')](_0x17d1a0[_0x7cb7('0x32')]['fields']));_0x36ef67[_0x7cb7('0x35')]=_0x36ef67[_0x7cb7('0x35')][_0x7cb7('0x38')]?_0x36ef67['attributes']:_0x5b48e2[_0x7cb7('0x34')];if(!_0x17d1a0[_0x7cb7('0x32')][_0x7cb7('0x39')](_0x7cb7('0x3a'))){_0x36ef67[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x17d1a0[_0x7cb7('0x32')][_0x7cb7('0x22')]);_0x36ef67[_0x7cb7('0x23')]=qs[_0x7cb7('0x23')](_0x17d1a0[_0x7cb7('0x32')][_0x7cb7('0x23')]);}_0x36ef67['order']=qs[_0x7cb7('0x3b')](_0x17d1a0[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x36ef67[_0x7cb7('0x3c')]=qs['filters'](_[_0x7cb7('0x3d')](_0x17d1a0['query'],_0x5b48e2[_0x7cb7('0x3e')]),_0x2b13e4);if(_0x17d1a0[_0x7cb7('0x32')]['filter']){_0x36ef67['where']=_[_0x7cb7('0x3f')](_0x36ef67[_0x7cb7('0x3c')],{'$or':_[_0x7cb7('0x2e')](_0x2b13e4,function(_0x45ddb1){if(_0x45ddb1[_0x7cb7('0x30')]!==_0x7cb7('0x40')){var _0x1d2a71={};_0x1d2a71[_0x45ddb1[_0x7cb7('0x2c')]]={'$like':'%'+_0x17d1a0[_0x7cb7('0x32')]['filter']+'%'};return _0x1d2a71;}})});}_0x36ef67=_['merge']({},_0x36ef67,_0x17d1a0[_0x7cb7('0x41')]);var _0x23f7a3={'where':_0x36ef67[_0x7cb7('0x3c')]};return db[_0x7cb7('0x42')][_0x7cb7('0x43')](_0x23f7a3)[_0x7cb7('0x29')](function(_0x203e17){_0x52f166[_0x7cb7('0x43')]=_0x203e17;if(_0x17d1a0['query']['includeAll']){_0x36ef67[_0x7cb7('0x44')]=[{'all':!![]}];}return db[_0x7cb7('0x42')][_0x7cb7('0x45')](_0x36ef67);})[_0x7cb7('0x29')](function(_0x4afd68){_0x52f166[_0x7cb7('0x46')]=_0x4afd68;return _0x52f166;})['then'](respondWithFilteredResult(_0x14ee55,_0x36ef67))[_0x7cb7('0x47')](handleError(_0x14ee55,null));};exports[_0x7cb7('0x48')]=function(_0xb46e6a,_0x474b33){var _0x24bee2={'raw':![],'where':{'id':_0xb46e6a[_0x7cb7('0x49')]['id']}},_0x547b07={};_0x547b07[_0x7cb7('0x34')]=_[_0x7cb7('0x33')](db[_0x7cb7('0x42')][_0x7cb7('0x2f')]);_0x547b07[_0x7cb7('0x32')]=_['keys'](_0xb46e6a[_0x7cb7('0x32')]);_0x547b07['filters']=_[_0x7cb7('0x36')](_0x547b07['model'],_0x547b07[_0x7cb7('0x32')]);_0x24bee2[_0x7cb7('0x35')]=_['intersection'](_0x547b07[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0xb46e6a[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x24bee2[_0x7cb7('0x35')]=_0x24bee2[_0x7cb7('0x35')]['length']?_0x24bee2['attributes']:_0x547b07[_0x7cb7('0x34')];if(_0xb46e6a[_0x7cb7('0x32')][_0x7cb7('0x4a')]){_0x24bee2[_0x7cb7('0x44')]=[{'all':!![]}];}_0x24bee2=_[_0x7cb7('0x3f')]({},_0x24bee2,_0xb46e6a['options']);return db[_0x7cb7('0x42')]['find'](_0x24bee2)[_0x7cb7('0x29')](handleEntityNotFound(_0x474b33,null))[_0x7cb7('0x29')](respondWithResult(_0x474b33,null))['catch'](handleError(_0x474b33,null));};exports[_0x7cb7('0x4b')]=function(_0x15685a,_0x17f9b1){return db['Campaign'][_0x7cb7('0x4b')](_0x15685a[_0x7cb7('0x4c')],{})[_0x7cb7('0x29')](function(_0x4b7fb0){var _0x3e0f65=_0x15685a[_0x7cb7('0x4d')][_0x7cb7('0x2b')]({'plain':!![]});if(!_0x3e0f65)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3e0f65[_0x7cb7('0x4e')]===_0x7cb7('0x4d')){var _0x479380=_0x4b7fb0[_0x7cb7('0x2b')]({'plain':!![]});var _0xf65e9f=_0x7cb7('0x4f');return db['UserProfileSection'][_0x7cb7('0x50')]({'where':{'name':_0xf65e9f,'userProfileId':_0x3e0f65['userProfileId']},'raw':!![]})['then'](function(_0x59fb5c){if(_0x59fb5c&&_0x59fb5c[_0x7cb7('0x51')]===0x0){return db['UserProfileResource'][_0x7cb7('0x4b')]({'name':_0x479380[_0x7cb7('0x2c')],'resourceId':_0x479380['id'],'type':_0x59fb5c[_0x7cb7('0x2c')],'sectionId':_0x59fb5c['id']},{})[_0x7cb7('0x29')](function(){return _0x4b7fb0;});}else{return _0x4b7fb0;}})[_0x7cb7('0x47')](function(_0x1186cc){logger['error'](_0x7cb7('0x52'),_0x1186cc);throw _0x1186cc;});}return _0x4b7fb0;})['then'](respondWithResult(_0x17f9b1,0xc9))[_0x7cb7('0x47')](handleError(_0x17f9b1,null));};exports[_0x7cb7('0x53')]=function(_0x4ccf70,_0x5aff50){var _0x25ed41={'where':{'id':_0x4ccf70['params']['id']}},_0x2c77c9={};_0x2c77c9[_0x7cb7('0x34')]=_['keys'](db['Campaign'][_0x7cb7('0x2f')]);_0x25ed41[_0x7cb7('0x35')]=_[_0x7cb7('0x36')](_0x2c77c9[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0x4ccf70[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x25ed41[_0x7cb7('0x35')]=_0x25ed41[_0x7cb7('0x35')]['length']?_0x25ed41[_0x7cb7('0x35')]:_0x2c77c9[_0x7cb7('0x34')];if(_0x4ccf70[_0x7cb7('0x32')]['includeAll']){_0x25ed41[_0x7cb7('0x44')]=[{'all':!![]}];}_0x25ed41=_[_0x7cb7('0x3f')]({},_0x25ed41,_0x4ccf70['options']);return db['Campaign']['find'](_0x25ed41)[_0x7cb7('0x29')](handleEntityNotFound(_0x5aff50,null))['then'](function(_0x2c2d66){if(_0x2c2d66){var _0x2d966e=_0x2c2d66[_0x7cb7('0x2b')]({'plain':!![]});_0x2d966e=qs[_0x7cb7('0x54')](_0x2d966e,['id',_0x7cb7('0x55'),'updatedAt']);_0x4ccf70['body']=_[_0x7cb7('0x54')](_0x4ccf70[_0x7cb7('0x4c')],['id','createdAt','updatedAt']);return db[_0x7cb7('0x42')]['create'](_['merge'](_0x2d966e,_0x4ccf70[_0x7cb7('0x4c')]),{'include':_0x4ccf70[_0x7cb7('0x32')][_0x7cb7('0x4a')]?[{'all':!![]}]:undefined})[_0x7cb7('0x29')](function(_0xec24bf){var _0x57817e=_0x4ccf70[_0x7cb7('0x4d')][_0x7cb7('0x2b')]({'plain':!![]});if(!_0x57817e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x57817e['role']==='user'){var _0x15e21c=_0xec24bf['get']({'plain':!![]});var _0xaa1446=_0x7cb7('0x4f');return db[_0x7cb7('0x56')][_0x7cb7('0x50')]({'where':{'name':_0xaa1446,'userProfileId':_0x57817e[_0x7cb7('0x57')]},'raw':!![]})['then'](function(_0x20cf4f){if(_0x20cf4f&&_0x20cf4f[_0x7cb7('0x51')]===0x0){return db[_0x7cb7('0x58')][_0x7cb7('0x4b')]({'name':_0x15e21c[_0x7cb7('0x2c')],'resourceId':_0x15e21c['id'],'type':_0x20cf4f[_0x7cb7('0x2c')],'sectionId':_0x20cf4f['id']},{})['then'](function(){return _0xec24bf;});}else{return _0xec24bf;}})['catch'](function(_0xc68500){logger[_0x7cb7('0x59')](_0x7cb7('0x52'),_0xc68500);throw _0xc68500;});}return _0xec24bf;});}})[_0x7cb7('0x29')](respondWithResult(_0x5aff50,0xc9))[_0x7cb7('0x47')](handleError(_0x5aff50,null));};exports[_0x7cb7('0x5a')]=function(_0x1d5de9,_0xca2f31){if(_0x1d5de9[_0x7cb7('0x4c')]['id']){delete _0x1d5de9[_0x7cb7('0x4c')]['id'];}return db[_0x7cb7('0x42')]['find']({'where':{'id':_0x1d5de9[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0xca2f31,null))[_0x7cb7('0x29')](saveUpdates(_0x1d5de9[_0x7cb7('0x4c')],null))[_0x7cb7('0x29')](respondWithResult(_0xca2f31,null))['catch'](handleError(_0xca2f31,null));};exports['destroy']=function(_0x27cde5,_0x53b6fb){return db[_0x7cb7('0x42')][_0x7cb7('0x50')]({'where':{'id':_0x27cde5['params']['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x53b6fb,null))[_0x7cb7('0x29')](removeEntity(_0x53b6fb,null))[_0x7cb7('0x47')](handleError(_0x53b6fb,null));};exports['getHoppers']=function(_0x19f05e,_0x5d15e0,_0x4132c4){var _0x26046e={'raw':!![],'where':{}};var _0x3e1f58={};var _0x7ec59b={'count':0x0,'rows':[]};return db[_0x7cb7('0x42')][_0x7cb7('0x5b')]({'where':{'id':_0x19f05e[_0x7cb7('0x49')]['id']}})['then'](handleEntityNotFound(_0x5d15e0,null))[_0x7cb7('0x29')](function(_0x16ec1b){if(_0x16ec1b){_0x3e1f58[_0x7cb7('0x34')]=_[_0x7cb7('0x33')](db[_0x7cb7('0x5c')][_0x7cb7('0x2f')]);_0x3e1f58[_0x7cb7('0x32')]=_['keys'](_0x19f05e[_0x7cb7('0x32')]);_0x3e1f58[_0x7cb7('0x3e')]=_[_0x7cb7('0x36')](_0x3e1f58['model'],_0x3e1f58['query']);_0x26046e['attributes']=_['intersection'](_0x3e1f58[_0x7cb7('0x34')],qs['fields'](_0x19f05e[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x26046e[_0x7cb7('0x35')]=_0x26046e['attributes'][_0x7cb7('0x38')]?_0x26046e[_0x7cb7('0x35')]:_0x3e1f58[_0x7cb7('0x34')];if(!_0x19f05e['query']['hasOwnProperty']('nolimit')){_0x26046e[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x19f05e[_0x7cb7('0x32')][_0x7cb7('0x22')]);_0x26046e[_0x7cb7('0x23')]=qs['offset'](_0x19f05e[_0x7cb7('0x32')]['offset']);}_0x26046e[_0x7cb7('0x5d')]=qs[_0x7cb7('0x3b')](_0x19f05e[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x26046e[_0x7cb7('0x3c')]=qs['filters'](_[_0x7cb7('0x3d')](_0x19f05e[_0x7cb7('0x32')],_0x3e1f58[_0x7cb7('0x3e')]));_0x26046e[_0x7cb7('0x3c')][_0x7cb7('0x5e')]=_0x16ec1b['id'];if(_0x19f05e['query'][_0x7cb7('0x5f')]){_0x26046e['where']=_[_0x7cb7('0x3f')](_0x26046e['where'],{'$or':_[_0x7cb7('0x2e')](_0x26046e[_0x7cb7('0x35')],function(_0x4a0656){var _0x21e4b0={};_0x21e4b0[_0x4a0656]={'$like':'%'+_0x19f05e[_0x7cb7('0x32')][_0x7cb7('0x5f')]+'%'};return _0x21e4b0;})});}_0x26046e=_[_0x7cb7('0x3f')]({},_0x26046e,_0x19f05e[_0x7cb7('0x41')]);return db[_0x7cb7('0x5c')][_0x7cb7('0x43')]({'where':_0x26046e[_0x7cb7('0x3c')]})[_0x7cb7('0x29')](function(_0x5d003a){_0x7ec59b['count']=_0x5d003a;if(_0x19f05e[_0x7cb7('0x32')]['includeAll']){_0x26046e[_0x7cb7('0x44')]=[{'all':!![]}];}return db[_0x7cb7('0x5c')]['findAll'](_0x26046e);})['then'](function(_0x478596){_0x7ec59b[_0x7cb7('0x46')]=_0x478596;return _0x7ec59b;});}})[_0x7cb7('0x29')](respondWithFilteredResult(_0x5d15e0,_0x26046e))[_0x7cb7('0x47')](handleError(_0x5d15e0,null));};exports[_0x7cb7('0x60')]=function(_0x859ee,_0x306909,_0x24bad6){var _0x2361db={'raw':!![],'where':{}};var _0x1aedb0={};var _0x5a9c40={'count':0x0,'rows':[]};return db[_0x7cb7('0x42')][_0x7cb7('0x5b')]({'where':{'id':_0x859ee[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x306909,null))[_0x7cb7('0x29')](function(_0x2754eb){if(_0x2754eb){_0x1aedb0[_0x7cb7('0x34')]=_['keys'](db[_0x7cb7('0x61')]['rawAttributes']);_0x1aedb0[_0x7cb7('0x32')]=_[_0x7cb7('0x33')](_0x859ee[_0x7cb7('0x32')]);_0x1aedb0[_0x7cb7('0x3e')]=_[_0x7cb7('0x36')](_0x1aedb0[_0x7cb7('0x34')],_0x1aedb0[_0x7cb7('0x32')]);_0x2361db[_0x7cb7('0x35')]=_['intersection'](_0x1aedb0[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x2361db[_0x7cb7('0x35')]=_0x2361db[_0x7cb7('0x35')][_0x7cb7('0x38')]?_0x2361db[_0x7cb7('0x35')]:_0x1aedb0[_0x7cb7('0x34')];if(!_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x39')](_0x7cb7('0x3a'))){_0x2361db[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x859ee['query'][_0x7cb7('0x22')]);_0x2361db[_0x7cb7('0x23')]=qs['offset'](_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x23')]);}_0x2361db['order']=qs[_0x7cb7('0x3b')](_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x2361db['where']=qs[_0x7cb7('0x3e')](_[_0x7cb7('0x3d')](_0x859ee['query'],_0x1aedb0[_0x7cb7('0x3e')]));_0x2361db['where'][_0x7cb7('0x5e')]=_0x2754eb['id'];if(_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x5f')]){_0x2361db['where']=_[_0x7cb7('0x3f')](_0x2361db[_0x7cb7('0x3c')],{'$or':_[_0x7cb7('0x2e')](_0x2361db[_0x7cb7('0x35')],function(_0x47a4f5){var _0xa679db={};_0xa679db[_0x47a4f5]={'$like':'%'+_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x5f')]+'%'};return _0xa679db;})});}_0x2361db=_['merge']({},_0x2361db,_0x859ee['options']);return db[_0x7cb7('0x61')][_0x7cb7('0x43')]({'where':_0x2361db[_0x7cb7('0x3c')]})[_0x7cb7('0x29')](function(_0x2faf7b){_0x5a9c40[_0x7cb7('0x43')]=_0x2faf7b;if(_0x859ee[_0x7cb7('0x32')][_0x7cb7('0x4a')]){_0x2361db[_0x7cb7('0x44')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x7cb7('0x45')](_0x2361db);})['then'](function(_0x3123fc){_0x5a9c40[_0x7cb7('0x46')]=_0x3123fc;return _0x5a9c40;});}})[_0x7cb7('0x29')](respondWithFilteredResult(_0x306909,_0x2361db))['catch'](handleError(_0x306909,null));};exports[_0x7cb7('0x62')]=function(_0x42d4fa,_0x8f80a,_0x421887){var _0x2d8186={'raw':!![],'where':{}};var _0x3a3dae={};var _0x1ba955={'count':0x0,'rows':[]};return db[_0x7cb7('0x42')]['findOne']({'where':{'id':_0x42d4fa[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x8f80a,null))['then'](function(_0x2bee63){if(_0x2bee63){_0x3a3dae[_0x7cb7('0x34')]=_[_0x7cb7('0x33')](db['CmHopperFinal'][_0x7cb7('0x2f')]);_0x3a3dae['query']=_[_0x7cb7('0x33')](_0x42d4fa['query']);_0x3a3dae[_0x7cb7('0x3e')]=_['intersection'](_0x3a3dae[_0x7cb7('0x34')],_0x3a3dae[_0x7cb7('0x32')]);_0x2d8186[_0x7cb7('0x35')]=_[_0x7cb7('0x36')](_0x3a3dae[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x2d8186[_0x7cb7('0x35')]=_0x2d8186[_0x7cb7('0x35')][_0x7cb7('0x38')]?_0x2d8186[_0x7cb7('0x35')]:_0x3a3dae[_0x7cb7('0x34')];if(!_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x39')](_0x7cb7('0x3a'))){_0x2d8186[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x22')]);_0x2d8186[_0x7cb7('0x23')]=qs[_0x7cb7('0x23')](_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x23')]);}_0x2d8186['order']=qs['sort'](_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x2d8186[_0x7cb7('0x3c')]=qs['filters'](_[_0x7cb7('0x3d')](_0x42d4fa['query'],_0x3a3dae['filters']));_0x2d8186['where']['CampaignId']=_0x2bee63['id'];if(_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x5f')]){_0x2d8186[_0x7cb7('0x3c')]=_[_0x7cb7('0x3f')](_0x2d8186[_0x7cb7('0x3c')],{'$or':_[_0x7cb7('0x2e')](_0x2d8186[_0x7cb7('0x35')],function(_0x22cee9){var _0x2a93bb={};_0x2a93bb[_0x22cee9]={'$like':'%'+_0x42d4fa[_0x7cb7('0x32')]['filter']+'%'};return _0x2a93bb;})});}_0x2d8186=_['merge']({},_0x2d8186,_0x42d4fa[_0x7cb7('0x41')]);return db[_0x7cb7('0x63')][_0x7cb7('0x43')]({'where':_0x2d8186['where']})[_0x7cb7('0x29')](function(_0x4540c6){_0x1ba955['count']=_0x4540c6;if(_0x42d4fa[_0x7cb7('0x32')][_0x7cb7('0x4a')]){_0x2d8186[_0x7cb7('0x44')]=[{'all':!![]}];}return db[_0x7cb7('0x63')][_0x7cb7('0x45')](_0x2d8186);})[_0x7cb7('0x29')](function(_0x442303){_0x1ba955[_0x7cb7('0x46')]=_0x442303;return _0x1ba955;});}})[_0x7cb7('0x29')](respondWithFilteredResult(_0x8f80a,_0x2d8186))[_0x7cb7('0x47')](handleError(_0x8f80a,null));};exports['getHopperBlacks']=function(_0x52c97e,_0x4ddc21,_0x56f42d){var _0x5dba97={'raw':!![],'where':{}};var _0x11c205={};var _0x451015={'count':0x0,'rows':[]};return db[_0x7cb7('0x42')][_0x7cb7('0x5b')]({'where':{'id':_0x52c97e[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x4ddc21,null))['then'](function(_0x838d95){if(_0x838d95){_0x11c205[_0x7cb7('0x34')]=_['keys'](db['CmHopperBlack'][_0x7cb7('0x2f')]);_0x11c205['query']=_[_0x7cb7('0x33')](_0x52c97e[_0x7cb7('0x32')]);_0x11c205['filters']=_[_0x7cb7('0x36')](_0x11c205[_0x7cb7('0x34')],_0x11c205['query']);_0x5dba97[_0x7cb7('0x35')]=_[_0x7cb7('0x36')](_0x11c205[_0x7cb7('0x34')],qs['fields'](_0x52c97e['query'][_0x7cb7('0x37')]));_0x5dba97['attributes']=_0x5dba97[_0x7cb7('0x35')][_0x7cb7('0x38')]?_0x5dba97[_0x7cb7('0x35')]:_0x11c205[_0x7cb7('0x34')];if(!_0x52c97e[_0x7cb7('0x32')][_0x7cb7('0x39')]('nolimit')){_0x5dba97[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x52c97e['query'][_0x7cb7('0x22')]);_0x5dba97['offset']=qs[_0x7cb7('0x23')](_0x52c97e['query'][_0x7cb7('0x23')]);}_0x5dba97['order']=qs[_0x7cb7('0x3b')](_0x52c97e[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x5dba97[_0x7cb7('0x3c')]=qs[_0x7cb7('0x3e')](_[_0x7cb7('0x3d')](_0x52c97e[_0x7cb7('0x32')],_0x11c205[_0x7cb7('0x3e')]));_0x5dba97[_0x7cb7('0x3c')][_0x7cb7('0x5e')]=_0x838d95['id'];if(_0x52c97e[_0x7cb7('0x32')][_0x7cb7('0x5f')]){_0x5dba97[_0x7cb7('0x3c')]=_[_0x7cb7('0x3f')](_0x5dba97[_0x7cb7('0x3c')],{'$or':_[_0x7cb7('0x2e')](_0x5dba97[_0x7cb7('0x35')],function(_0xb6d6b){var _0x3dc770={};_0x3dc770[_0xb6d6b]={'$like':'%'+_0x52c97e[_0x7cb7('0x32')][_0x7cb7('0x5f')]+'%'};return _0x3dc770;})});}_0x5dba97=_['merge']({},_0x5dba97,_0x52c97e[_0x7cb7('0x41')]);return db[_0x7cb7('0x64')]['count']({'where':_0x5dba97[_0x7cb7('0x3c')]})['then'](function(_0x51fb0a){_0x451015[_0x7cb7('0x43')]=_0x51fb0a;if(_0x52c97e['query'][_0x7cb7('0x4a')]){_0x5dba97[_0x7cb7('0x44')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x7cb7('0x45')](_0x5dba97);})[_0x7cb7('0x29')](function(_0xcb5649){_0x451015[_0x7cb7('0x46')]=_0xcb5649;return _0x451015;});}})[_0x7cb7('0x29')](respondWithFilteredResult(_0x4ddc21,_0x5dba97))['catch'](handleError(_0x4ddc21,null));};exports['getLists']=function(_0x33abb5,_0x539240,_0x3d0f79){var _0x353e76={};var _0x21a538={};var _0x45451c;var _0x485e7f;return db[_0x7cb7('0x42')]['findOne']({'where':{'id':_0x33abb5[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x539240,null))[_0x7cb7('0x29')](function(_0xedfbbe){if(_0xedfbbe){_0x45451c=_0xedfbbe;_0x21a538['model']=_[_0x7cb7('0x33')](db[_0x7cb7('0x65')][_0x7cb7('0x2f')]);_0x21a538[_0x7cb7('0x32')]=_['keys'](_0x33abb5[_0x7cb7('0x32')]);_0x21a538['filters']=_[_0x7cb7('0x36')](_0x21a538[_0x7cb7('0x34')],_0x21a538[_0x7cb7('0x32')]);_0x353e76[_0x7cb7('0x35')]=_[_0x7cb7('0x36')](_0x21a538[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x37')]));_0x353e76['attributes']=_0x353e76[_0x7cb7('0x35')][_0x7cb7('0x38')]?_0x353e76[_0x7cb7('0x35')]:_0x21a538[_0x7cb7('0x34')];_0x353e76[_0x7cb7('0x5d')]=qs[_0x7cb7('0x3b')](_0x33abb5[_0x7cb7('0x32')]['sort']);_0x353e76[_0x7cb7('0x3c')]=qs[_0x7cb7('0x3e')](_[_0x7cb7('0x3d')](_0x33abb5[_0x7cb7('0x32')],_0x21a538[_0x7cb7('0x3e')]));if(_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x5f')]){_0x353e76['where']=_[_0x7cb7('0x3f')](_0x353e76[_0x7cb7('0x3c')],{'$or':_['map'](_0x353e76['attributes'],function(_0x34c8e9){var _0x5546e5={};_0x5546e5[_0x34c8e9]={'$like':'%'+_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x5f')]+'%'};return _0x5546e5;})});}_0x353e76=_['merge']({},_0x353e76,_0x33abb5[_0x7cb7('0x41')]);return _0x45451c[_0x7cb7('0x66')](_0x353e76);}})[_0x7cb7('0x29')](function(_0xa2466f){if(_0xa2466f){_0x485e7f=_0xa2466f[_0x7cb7('0x38')];if(!_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x39')](_0x7cb7('0x3a'))){_0x353e76['limit']=qs[_0x7cb7('0x22')](_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x22')]);_0x353e76[_0x7cb7('0x23')]=qs[_0x7cb7('0x23')](_0x33abb5[_0x7cb7('0x32')][_0x7cb7('0x23')]);}return _0x45451c['getLists'](_0x353e76);}})['then'](function(_0x319c36){if(_0x319c36){return _0x319c36?{'count':_0x485e7f,'rows':_0x319c36}:null;}})[_0x7cb7('0x29')](respondWithResult(_0x539240,null))[_0x7cb7('0x47')](handleError(_0x539240,null));};exports[_0x7cb7('0x67')]=function(_0x242ade,_0x21e867,_0x2ee4c1){var _0x2a1882,_0x26f84d;return db[_0x7cb7('0x42')][_0x7cb7('0x50')]({'where':{'id':_0x242ade[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x21e867,null))[_0x7cb7('0x29')](function(_0x13e0d3){if(_0x13e0d3){_0x26f84d=_0x13e0d3;return _0x13e0d3[_0x7cb7('0x67')](_0x242ade[_0x7cb7('0x4c')][_0x7cb7('0x68')],_[_0x7cb7('0x54')](_0x242ade['body'],[_0x7cb7('0x68'),'id'])||{});}return null;})[_0x7cb7('0x69')](function(_0x22b4b9){var _0x595de0;_0x2a1882=_0x22b4b9||[];var _0x345a0b=[];if(_0x22b4b9){for(var _0x15d526=0x0;_0x15d526<_0x22b4b9[_0x7cb7('0x38')];_0x15d526+=0x1){var _0x44cb72=_0x22b4b9[_0x15d526]['get']({'plain':!![]});_0x26f84d['dialCheckDuplicateType']=_0x242ade[_0x7cb7('0x4c')][_0x7cb7('0x6a')]?_0x242ade[_0x7cb7('0x4c')]['dialCheckDuplicateType']:_0x26f84d['dialCheckDuplicateType'];switch(_0x26f84d[_0x7cb7('0x6a')]){case _0x7cb7('0x6b'):_0x595de0=squel[_0x7cb7('0x6c')]()[_0x7cb7('0x6d')](_0x7cb7('0x6e'))[_0x7cb7('0x6f')](['phone',_0x7cb7('0x70'),_0x7cb7('0x71'),_0x7cb7('0x72'),'CampaignId',_0x7cb7('0x55'),_0x7cb7('0x73')],squel[_0x7cb7('0x74')]()['field'](_0x7cb7('0x75'),_0x7cb7('0x75'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x70'))[_0x7cb7('0x76')]('id','ContactId')[_0x7cb7('0x76')](_0x44cb72[_0x7cb7('0x78')][_0x7cb7('0x79')](),_0x7cb7('0x72'))[_0x7cb7('0x76')](_0x242ade[_0x7cb7('0x49')]['id'][_0x7cb7('0x79')](),_0x7cb7('0x5e'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x55'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x73'))[_0x7cb7('0x7a')](_0x7cb7('0x7b'))[_0x7cb7('0x3c')](_0x7cb7('0x7c'))[_0x7cb7('0x3c')](_0x7cb7('0x7d'),_0x44cb72[_0x7cb7('0x78')]['toString']())[_0x7cb7('0x3c')](_0x7cb7('0x7e'))[_0x7cb7('0x3c')](_0x7cb7('0x7f'),squel[_0x7cb7('0x74')]()[_0x7cb7('0x76')](_0x7cb7('0x80'))['from'](_0x7cb7('0x81'))[_0x7cb7('0x3c')](_0x7cb7('0x82'),_0x242ade[_0x7cb7('0x49')]['id']['toString']()))[_0x7cb7('0x3c')](_0x7cb7('0x7f'),squel[_0x7cb7('0x74')]()['field']('COALESCE(phone,\x27\x27)')['from']('cm_hopper')['where'](_0x7cb7('0x82'),_0x242ade[_0x7cb7('0x49')]['id']['toString']())))['toString']();break;case _0x7cb7('0x83'):_0x595de0=squel['insert']()[_0x7cb7('0x6d')](_0x7cb7('0x6e'))[_0x7cb7('0x6f')]([_0x7cb7('0x75'),_0x7cb7('0x70'),_0x7cb7('0x71'),'ListId',_0x7cb7('0x5e'),'createdAt',_0x7cb7('0x73')],squel[_0x7cb7('0x74')]()[_0x7cb7('0x76')](_0x7cb7('0x75'),'phone')[_0x7cb7('0x76')](_0x7cb7('0x77'),'scheduledAt')[_0x7cb7('0x76')]('id','ContactId')[_0x7cb7('0x76')](_0x44cb72['CmListId']['toString'](),_0x7cb7('0x72'))[_0x7cb7('0x76')](_0x242ade['params']['id'][_0x7cb7('0x79')](),_0x7cb7('0x5e'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x55'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x73'))['from']('cm_contacts')[_0x7cb7('0x3c')](_0x7cb7('0x7c'))[_0x7cb7('0x3c')](_0x7cb7('0x7d'),_0x44cb72[_0x7cb7('0x78')][_0x7cb7('0x79')]())[_0x7cb7('0x3c')]('phone\x20IS\x20NOT\x20NULL')['where'](_0x7cb7('0x7f'),squel[_0x7cb7('0x74')]()[_0x7cb7('0x76')](_0x7cb7('0x84'))['from'](_0x7cb7('0x6e'))[_0x7cb7('0x3c')]('CampaignId\x20=\x20?',_0x242ade[_0x7cb7('0x49')]['id'][_0x7cb7('0x79')]())))['toString']();break;default:_0x595de0=squel[_0x7cb7('0x6c')]()[_0x7cb7('0x6d')](_0x7cb7('0x6e'))[_0x7cb7('0x6f')](['phone',_0x7cb7('0x70'),'ContactId',_0x7cb7('0x72'),_0x7cb7('0x5e'),'createdAt',_0x7cb7('0x73')],squel['select']()[_0x7cb7('0x76')]('phone',_0x7cb7('0x75'))[_0x7cb7('0x76')]('NOW()',_0x7cb7('0x70'))[_0x7cb7('0x76')]('id','ContactId')[_0x7cb7('0x76')](_0x44cb72[_0x7cb7('0x78')][_0x7cb7('0x79')](),_0x7cb7('0x72'))['field'](_0x242ade[_0x7cb7('0x49')]['id'][_0x7cb7('0x79')](),_0x7cb7('0x5e'))['field']('NOW()',_0x7cb7('0x55'))[_0x7cb7('0x76')](_0x7cb7('0x77'),'updatedAt')['from'](_0x7cb7('0x7b'))[_0x7cb7('0x3c')](_0x7cb7('0x7c'))[_0x7cb7('0x3c')](_0x7cb7('0x7d'),_0x44cb72[_0x7cb7('0x78')]['toString']())[_0x7cb7('0x3c')]('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0x345a0b[_0x7cb7('0x85')](db[_0x7cb7('0x86')][_0x7cb7('0x32')](_0x595de0));}return BPromise[_0x7cb7('0x87')](_0x345a0b);}})['then'](function(){return _0x2a1882;})[_0x7cb7('0x29')](respondWithResult(_0x21e867,null))[_0x7cb7('0x47')](handleError(_0x21e867,null));};exports[_0x7cb7('0x88')]=function(_0x12598d,_0x491132,_0x50ae36){return db[_0x7cb7('0x42')][_0x7cb7('0x50')]({'where':{'id':_0x12598d[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x491132,null))[_0x7cb7('0x29')](function(_0x2ac1b6){if(_0x2ac1b6){return _0x2ac1b6[_0x7cb7('0x88')](_0x12598d['query'][_0x7cb7('0x68')]);}})['then'](function(_0x1ddf00){if(_0x1ddf00){return db[_0x7cb7('0x5c')][_0x7cb7('0x2a')]({'where':{'ListId':_0x12598d[_0x7cb7('0x32')][_0x7cb7('0x68')],'CampaignId':_0x12598d['params']['id']}})[_0x7cb7('0x29')](function(){return _0x1ddf00;});}})['then'](respondWithStatusCode(_0x491132,null))['catch'](handleError(_0x491132,null));};exports[_0x7cb7('0x89')]=function(_0x17620f,_0x1a7ed0,_0x51017c){var _0x5c8147={};var _0x5cd2ed={};var _0x71b9a0;var _0x45853d;return db['Campaign'][_0x7cb7('0x5b')]({'where':{'id':_0x17620f[_0x7cb7('0x49')]['id']}})['then'](handleEntityNotFound(_0x1a7ed0,null))[_0x7cb7('0x29')](function(_0x460e22){if(_0x460e22){_0x71b9a0=_0x460e22;_0x5cd2ed['model']=_[_0x7cb7('0x33')](db[_0x7cb7('0x65')][_0x7cb7('0x2f')]);_0x5cd2ed[_0x7cb7('0x32')]=_['keys'](_0x17620f[_0x7cb7('0x32')]);_0x5cd2ed[_0x7cb7('0x3e')]=_[_0x7cb7('0x36')](_0x5cd2ed['model'],_0x5cd2ed['query']);_0x5c8147['attributes']=_['intersection'](_0x5cd2ed[_0x7cb7('0x34')],qs[_0x7cb7('0x37')](_0x17620f['query'][_0x7cb7('0x37')]));_0x5c8147[_0x7cb7('0x35')]=_0x5c8147[_0x7cb7('0x35')]['length']?_0x5c8147['attributes']:_0x5cd2ed[_0x7cb7('0x34')];_0x5c8147[_0x7cb7('0x5d')]=qs[_0x7cb7('0x3b')](_0x17620f[_0x7cb7('0x32')][_0x7cb7('0x3b')]);_0x5c8147[_0x7cb7('0x3c')]=qs[_0x7cb7('0x3e')](_[_0x7cb7('0x3d')](_0x17620f['query'],_0x5cd2ed['filters']));if(_0x17620f[_0x7cb7('0x32')][_0x7cb7('0x5f')]){_0x5c8147[_0x7cb7('0x3c')]=_[_0x7cb7('0x3f')](_0x5c8147[_0x7cb7('0x3c')],{'$or':_[_0x7cb7('0x2e')](_0x5c8147[_0x7cb7('0x35')],function(_0x22c0e9){var _0x42fb50={};_0x42fb50[_0x22c0e9]={'$like':'%'+_0x17620f[_0x7cb7('0x32')][_0x7cb7('0x5f')]+'%'};return _0x42fb50;})});}_0x5c8147=_[_0x7cb7('0x3f')]({},_0x5c8147,_0x17620f[_0x7cb7('0x41')]);return _0x71b9a0['getBlackLists'](_0x5c8147);}})[_0x7cb7('0x29')](function(_0x13ce15){if(_0x13ce15){_0x45853d=_0x13ce15[_0x7cb7('0x38')];if(!_0x17620f[_0x7cb7('0x32')][_0x7cb7('0x39')]('nolimit')){_0x5c8147[_0x7cb7('0x22')]=qs[_0x7cb7('0x22')](_0x17620f[_0x7cb7('0x32')][_0x7cb7('0x22')]);_0x5c8147[_0x7cb7('0x23')]=qs[_0x7cb7('0x23')](_0x17620f['query'][_0x7cb7('0x23')]);}return _0x71b9a0[_0x7cb7('0x89')](_0x5c8147);}})[_0x7cb7('0x29')](function(_0x487bb1){if(_0x487bb1){return _0x487bb1?{'count':_0x45853d,'rows':_0x487bb1}:null;}})['then'](respondWithResult(_0x1a7ed0,null))[_0x7cb7('0x47')](handleError(_0x1a7ed0,null));};exports['addBlackLists']=function(_0x3fc688,_0x9a0cd5,_0x57d238){var _0x40650d,_0x2520ab;return db[_0x7cb7('0x42')][_0x7cb7('0x50')]({'where':{'id':_0x3fc688[_0x7cb7('0x49')]['id']}})['then'](handleEntityNotFound(_0x9a0cd5,null))['then'](function(_0x3e78c9){if(_0x3e78c9){_0x2520ab=_0x3e78c9;return _0x3e78c9[_0x7cb7('0x8a')](_0x3fc688[_0x7cb7('0x4c')][_0x7cb7('0x68')],_['omit'](_0x3fc688[_0x7cb7('0x4c')],[_0x7cb7('0x68'),'id'])||{});}return null;})[_0x7cb7('0x69')](function(_0x11c21e){var _0x25dd09;_0x40650d=_0x11c21e||[];var _0x3bc2e6=[];if(_0x11c21e){for(var _0x1fc339=0x0;_0x1fc339<_0x11c21e[_0x7cb7('0x38')];_0x1fc339+=0x1){var _0x459c13=_0x11c21e[_0x1fc339][_0x7cb7('0x2b')]({'plain':!![]});_0x25dd09=squel[_0x7cb7('0x6c')]()[_0x7cb7('0x6d')](_0x7cb7('0x8b'))[_0x7cb7('0x6f')]([_0x7cb7('0x75'),'ContactId',_0x7cb7('0x72'),_0x7cb7('0x5e'),_0x7cb7('0x55'),_0x7cb7('0x73')],squel[_0x7cb7('0x74')]()[_0x7cb7('0x76')](_0x7cb7('0x75'),_0x7cb7('0x75'))[_0x7cb7('0x76')]('id','ContactId')[_0x7cb7('0x76')](_0x459c13[_0x7cb7('0x78')]['toString'](),_0x7cb7('0x72'))['field'](_0x3fc688[_0x7cb7('0x49')]['id'][_0x7cb7('0x79')](),'CampaignId')[_0x7cb7('0x76')]('NOW()',_0x7cb7('0x55'))[_0x7cb7('0x76')](_0x7cb7('0x77'),_0x7cb7('0x73'))[_0x7cb7('0x7a')]('cm_contacts')['where'](_0x7cb7('0x7c'))[_0x7cb7('0x3c')](_0x7cb7('0x7d'),_0x459c13[_0x7cb7('0x78')][_0x7cb7('0x79')]())[_0x7cb7('0x3c')](_0x7cb7('0x7e')))[_0x7cb7('0x79')]();_0x3bc2e6[_0x7cb7('0x85')](db[_0x7cb7('0x86')][_0x7cb7('0x32')](_0x25dd09));}return BPromise[_0x7cb7('0x87')](_0x3bc2e6);}})['then'](function(){return _0x40650d;})[_0x7cb7('0x29')](respondWithResult(_0x9a0cd5,null))[_0x7cb7('0x47')](handleError(_0x9a0cd5,null));};exports[_0x7cb7('0x8c')]=function(_0x592037,_0x45ee41,_0x1f1c83){return db[_0x7cb7('0x42')][_0x7cb7('0x50')]({'where':{'id':_0x592037[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](handleEntityNotFound(_0x45ee41,null))[_0x7cb7('0x29')](function(_0x3e9107){if(_0x3e9107){return _0x3e9107[_0x7cb7('0x8c')](_0x592037['query'][_0x7cb7('0x68')]);}})[_0x7cb7('0x29')](function(_0x3c3eee){if(_0x3c3eee){return db[_0x7cb7('0x64')][_0x7cb7('0x2a')]({'where':{'ListId':_0x592037['query'][_0x7cb7('0x68')],'CampaignId':_0x592037[_0x7cb7('0x49')]['id']}})[_0x7cb7('0x29')](function(){return _0x3c3eee;});}})[_0x7cb7('0x29')](respondWithStatusCode(_0x45ee41,null))['catch'](handleError(_0x45ee41,null));};
\ No newline at end of file
index bfb2ca3..38557d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x5709ea,_0x5c0089){var _0x1998b4=function(_0x3bab6b){while(--_0x3bab6b){_0x5709ea['push'](_0x5709ea['shift']());}};_0x1998b4(++_0x5c0089);}(_0x7a54,0x106));var _0x47a5=function(_0x8bbe2,_0x182597){_0x8bbe2=_0x8bbe2-0x0;var _0x4f0f9f=_0x7a54[_0x8bbe2];return _0x4f0f9f;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e5bf22b..21fc2c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9e=['where','attributes','limit','include','model','map','lodash','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','Campaign,\x20%s,\x20%s','message','catch','GetCampaign','Campaign','findAll','options'];(function(_0x303c30,_0x16edcb){var _0x43161b=function(_0x3330ff){while(--_0x3330ff){_0x303c30['push'](_0x303c30['shift']());}};_0x43161b(++_0x16edcb);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x56f8f1,_0x1a97ec){_0x56f8f1=_0x56f8f1-0x0;var _0x344052=_0x4d9e[_0x56f8f1];return _0x344052;};'use strict';var _=require(_0xe4d9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe4d9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe4d9('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xe4d9('0x3'));var logger=require(_0xe4d9('0x4'))('rpc');var config=require(_0xe4d9('0x5'));var jayson=require(_0xe4d9('0x6'));var client=jayson[_0xe4d9('0x7')][_0xe4d9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x125dbc,_0x32222c,_0x54a63a){return new BPromise(function(_0x36316f,_0x1d3810){return client[_0xe4d9('0x9')](_0x125dbc,_0x54a63a)[_0xe4d9('0xa')](function(_0x3f8937){logger[_0xe4d9('0xb')]('Campaign,\x20%s,\x20%s',_0x32222c,_0xe4d9('0xc'));logger[_0xe4d9('0xd')](_0xe4d9('0xe'),_0x32222c,_0xe4d9('0xc'),JSON[_0xe4d9('0xf')](_0x3f8937));if(_0x3f8937[_0xe4d9('0x10')]){if(_0x3f8937[_0xe4d9('0x10')]['code']===0x1f4){logger['error']('Campaign,\x20%s,\x20%s',_0x32222c,_0x3f8937['error']['message']);return _0x1d3810(_0x3f8937['error']['message']);}logger['error'](_0xe4d9('0x11'),_0x32222c,_0x3f8937[_0xe4d9('0x10')][_0xe4d9('0x12')]);return _0x36316f(_0x3f8937['error'][_0xe4d9('0x12')]);}else{logger[_0xe4d9('0xb')](_0xe4d9('0x11'),_0x32222c,_0xe4d9('0xc'));_0x36316f(_0x3f8937['result'][_0xe4d9('0x12')]);}})[_0xe4d9('0x13')](function(_0x4687f8){logger['error']('Campaign,\x20%s,\x20%s',_0x32222c,_0x4687f8);_0x1d3810(_0x4687f8);});});}exports[_0xe4d9('0x14')]=function(_0x112315){var _0x5ab3d1=this;return new Promise(function(_0x2e1490,_0x4f8dba){return db[_0xe4d9('0x15')][_0xe4d9('0x16')]({'raw':_0x112315[_0xe4d9('0x17')]?_0x112315[_0xe4d9('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x112315[_0xe4d9('0x17')]?_0x112315[_0xe4d9('0x17')][_0xe4d9('0x18')]||null:null,'attributes':_0x112315[_0xe4d9('0x17')]?_0x112315[_0xe4d9('0x17')][_0xe4d9('0x19')]||null:null,'limit':_0x112315[_0xe4d9('0x17')]?_0x112315[_0xe4d9('0x17')][_0xe4d9('0x1a')]||null:null,'include':_0x112315['options']?_0x112315[_0xe4d9('0x17')][_0xe4d9('0x1b')]?_['map'](_0x112315[_0xe4d9('0x17')]['include'],function(_0x14f3d7){return{'model':db[_0x14f3d7[_0xe4d9('0x1c')]],'as':_0x14f3d7['as'],'attributes':_0x14f3d7['attributes'],'include':_0x14f3d7[_0xe4d9('0x1b')]?_[_0xe4d9('0x1d')](_0x14f3d7['include'],function(_0xc5be1b){return{'model':db[_0xc5be1b[_0xe4d9('0x1c')]],'as':_0xc5be1b['as'],'attributes':_0xc5be1b[_0xe4d9('0x19')],'include':_0xc5be1b['include']?_['map'](_0xc5be1b[_0xe4d9('0x1b')],function(_0x2846e2){return{'model':db[_0x2846e2['model']],'as':_0x2846e2['as'],'attributes':_0x2846e2['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x529e2b){logger[_0xe4d9('0xb')]('GetCampaign',_0x112315);logger[_0xe4d9('0xd')](_0xe4d9('0x14'),_0x112315,JSON[_0xe4d9('0xf')](_0x529e2b));_0x2e1490(_0x529e2b);})['catch'](function(_0xec8d64){logger[_0xe4d9('0x10')](_0xe4d9('0x14'),_0xec8d64[_0xe4d9('0x12')],_0x112315);_0x4f8dba(_0x5ab3d1[_0xe4d9('0x10')](0x1f4,_0xec8d64[_0xe4d9('0x12')]));});});};
\ No newline at end of file
+var _0xbefe=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCampaign','Campaign','findAll','options','raw','where','limit','include','map','model','attributes','util','bluebird','randomstring'];(function(_0x42ecfa,_0x302560){var _0x141c3e=function(_0x202ceb){while(--_0x202ceb){_0x42ecfa['push'](_0x42ecfa['shift']());}};_0x141c3e(++_0x302560);}(_0xbefe,0x168));var _0xebef=function(_0x2c0d7b,_0x4ec918){_0x2c0d7b=_0x2c0d7b-0x0;var _0x3c769f=_0xbefe[_0x2c0d7b];return _0x3c769f;};'use strict';var _=require('lodash');var util=require(_0xebef('0x0'));var moment=require('moment');var BPromise=require(_0xebef('0x1'));var rs=require(_0xebef('0x2'));var fs=require('fs');var Redis=require(_0xebef('0x3'));var db=require(_0xebef('0x4'))['db'];var utils=require(_0xebef('0x5'));var logger=require(_0xebef('0x6'))(_0xebef('0x7'));var config=require(_0xebef('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xebef('0x9')][_0xebef('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e89ca,_0x4fb4fa,_0x4286bf){return new BPromise(function(_0x2fbd2c,_0x598d6d){return client['request'](_0x3e89ca,_0x4286bf)[_0xebef('0xb')](function(_0xa0a8ef){logger[_0xebef('0xc')](_0xebef('0xd'),_0x4fb4fa,_0xebef('0xe'));logger[_0xebef('0xf')](_0xebef('0x10'),_0x4fb4fa,_0xebef('0xe'),JSON['stringify'](_0xa0a8ef));if(_0xa0a8ef[_0xebef('0x11')]){if(_0xa0a8ef[_0xebef('0x11')][_0xebef('0x12')]===0x1f4){logger[_0xebef('0x11')](_0xebef('0xd'),_0x4fb4fa,_0xa0a8ef['error']['message']);return _0x598d6d(_0xa0a8ef['error']['message']);}logger[_0xebef('0x11')](_0xebef('0xd'),_0x4fb4fa,_0xa0a8ef[_0xebef('0x11')][_0xebef('0x13')]);return _0x2fbd2c(_0xa0a8ef[_0xebef('0x11')][_0xebef('0x13')]);}else{logger['info'](_0xebef('0xd'),_0x4fb4fa,_0xebef('0xe'));_0x2fbd2c(_0xa0a8ef[_0xebef('0x14')][_0xebef('0x13')]);}})[_0xebef('0x15')](function(_0x8e7044){logger[_0xebef('0x11')](_0xebef('0xd'),_0x4fb4fa,_0x8e7044);_0x598d6d(_0x8e7044);});});}exports[_0xebef('0x16')]=function(_0x16856f){var _0x458e83=this;return new Promise(function(_0x5161f1,_0x1a99ba){return db[_0xebef('0x17')][_0xebef('0x18')]({'raw':_0x16856f['options']?_0x16856f[_0xebef('0x19')][_0xebef('0x1a')]===undefined?!![]:![]:!![],'where':_0x16856f[_0xebef('0x19')]?_0x16856f[_0xebef('0x19')][_0xebef('0x1b')]||null:null,'attributes':_0x16856f[_0xebef('0x19')]?_0x16856f[_0xebef('0x19')]['attributes']||null:null,'limit':_0x16856f['options']?_0x16856f['options'][_0xebef('0x1c')]||null:null,'include':_0x16856f[_0xebef('0x19')]?_0x16856f[_0xebef('0x19')][_0xebef('0x1d')]?_[_0xebef('0x1e')](_0x16856f[_0xebef('0x19')][_0xebef('0x1d')],function(_0x5c5091){return{'model':db[_0x5c5091[_0xebef('0x1f')]],'as':_0x5c5091['as'],'attributes':_0x5c5091[_0xebef('0x20')],'include':_0x5c5091[_0xebef('0x1d')]?_[_0xebef('0x1e')](_0x5c5091[_0xebef('0x1d')],function(_0x27f212){return{'model':db[_0x27f212[_0xebef('0x1f')]],'as':_0x27f212['as'],'attributes':_0x27f212[_0xebef('0x20')],'include':_0x27f212[_0xebef('0x1d')]?_[_0xebef('0x1e')](_0x27f212[_0xebef('0x1d')],function(_0x4fb77f){return{'model':db[_0x4fb77f[_0xebef('0x1f')]],'as':_0x4fb77f['as'],'attributes':_0x4fb77f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x56b67e){logger['info']('GetCampaign',_0x16856f);logger['debug']('GetCampaign',_0x16856f,JSON['stringify'](_0x56b67e));_0x5161f1(_0x56b67e);})['catch'](function(_0x5a9249){logger['error'](_0xebef('0x16'),_0x5a9249['message'],_0x16856f);_0x1a99ba(_0x458e83[_0xebef('0x11')](0x1f4,_0x5a9249['message']));});});};
\ No newline at end of file
index 68065eb..aebce0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18c9=['put','update','delete','removeBlackLists','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','index','get','/:id','isAuthenticated','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','/:id/hopper_black','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addBlackLists'];(function(_0x5302fb,_0x1a2db3){var _0x43e6a4=function(_0x324ae6){while(--_0x324ae6){_0x5302fb['push'](_0x5302fb['shift']());}};_0x43e6a4(++_0x1a2db3);}(_0x18c9,0x1bf));var _0x918c=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x18c9[_0x31e29a];return _0x32d892;};'use strict';var multer=require(_0x918c('0x0'));var util=require(_0x918c('0x1'));var path=require(_0x918c('0x2'));var timeout=require(_0x918c('0x3'));var express=require(_0x918c('0x4'));var router=express[_0x918c('0x5')]();var fs_extra=require(_0x918c('0x6'));var auth=require(_0x918c('0x7'));var interaction=require(_0x918c('0x8'));var config=require(_0x918c('0x9'));var controller=require(_0x918c('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x918c('0xb')]);router[_0x918c('0xc')](_0x918c('0xd'),auth[_0x918c('0xe')](),controller['show']);router['get'](_0x918c('0xf'),auth[_0x918c('0xe')](),controller[_0x918c('0x10')]);router[_0x918c('0xc')](_0x918c('0x11'),auth[_0x918c('0xe')](),controller[_0x918c('0x12')]);router['get'](_0x918c('0x13'),auth[_0x918c('0xe')](),controller['getHopperFinals']);router[_0x918c('0xc')](_0x918c('0x14'),auth['isAuthenticated'](),controller['getHopperBlacks']);router[_0x918c('0xc')](_0x918c('0x15'),auth['isAuthenticated'](),controller['getLists']);router[_0x918c('0xc')](_0x918c('0x16'),auth[_0x918c('0xe')](),controller[_0x918c('0x17')]);router[_0x918c('0x18')]('/',auth[_0x918c('0xe')](),controller[_0x918c('0x19')]);router[_0x918c('0x18')](_0x918c('0x1a'),auth['isAuthenticated'](),controller[_0x918c('0x1b')]);router[_0x918c('0x18')]('/:id/lists',auth[_0x918c('0xe')](),controller['addLists']);router[_0x918c('0x18')]('/:id/blacklists',auth[_0x918c('0xe')](),controller[_0x918c('0x1c')]);router[_0x918c('0x1d')]('/:id',auth['isAuthenticated'](),controller[_0x918c('0x1e')]);router[_0x918c('0x1f')](_0x918c('0xd'),auth[_0x918c('0xe')](),controller['destroy']);router[_0x918c('0x1f')]('/:id/lists',auth['isAuthenticated'](),controller['removeLists']);router[_0x918c('0x1f')](_0x918c('0x16'),auth[_0x918c('0xe')](),controller[_0x918c('0x20')]);module[_0x918c('0x21')]=router;
\ No newline at end of file
+var _0xe65d=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./campaign.controller','get','isAuthenticated','index','/:id','show','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','post','create','addLists','put','update','delete','destroy','removeLists','exports','multer','util','path'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0xe65d,0x1dd));var _0xde65=function(_0x563643,_0x467b94){_0x563643=_0x563643-0x0;var _0x1aaad1=_0xe65d[_0x563643];return _0x1aaad1;};'use strict';var multer=require(_0xde65('0x0'));var util=require(_0xde65('0x1'));var path=require(_0xde65('0x2'));var timeout=require('connect-timeout');var express=require(_0xde65('0x3'));var router=express[_0xde65('0x4')]();var fs_extra=require(_0xde65('0x5'));var auth=require(_0xde65('0x6'));var interaction=require(_0xde65('0x7'));var config=require('../../config/environment');var controller=require(_0xde65('0x8'));router[_0xde65('0x9')]('/',auth[_0xde65('0xa')](),controller[_0xde65('0xb')]);router[_0xde65('0x9')](_0xde65('0xc'),auth['isAuthenticated'](),controller[_0xde65('0xd')]);router[_0xde65('0x9')]('/:id/hoppers',auth[_0xde65('0xa')](),controller[_0xde65('0xe')]);router[_0xde65('0x9')](_0xde65('0xf'),auth[_0xde65('0xa')](),controller[_0xde65('0x10')]);router[_0xde65('0x9')]('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0xde65('0x11')]);router[_0xde65('0x9')](_0xde65('0x12'),auth[_0xde65('0xa')](),controller[_0xde65('0x13')]);router['get'](_0xde65('0x14'),auth['isAuthenticated'](),controller[_0xde65('0x15')]);router['get'](_0xde65('0x16'),auth['isAuthenticated'](),controller['getBlackLists']);router[_0xde65('0x17')]('/',auth[_0xde65('0xa')](),controller[_0xde65('0x18')]);router[_0xde65('0x17')]('/:id/clone',auth[_0xde65('0xa')](),controller['clone']);router[_0xde65('0x17')]('/:id/lists',auth[_0xde65('0xa')](),controller[_0xde65('0x19')]);router[_0xde65('0x17')](_0xde65('0x16'),auth[_0xde65('0xa')](),controller['addBlackLists']);router[_0xde65('0x1a')](_0xde65('0xc'),auth[_0xde65('0xa')](),controller[_0xde65('0x1b')]);router[_0xde65('0x1c')]('/:id',auth[_0xde65('0xa')](),controller[_0xde65('0x1d')]);router[_0xde65('0x1c')](_0xde65('0x14'),auth[_0xde65('0xa')](),controller[_0xde65('0x1e')]);router[_0xde65('0x1c')]('/:id/blacklists',auth[_0xde65('0xa')](),controller['removeBlackLists']);module[_0xde65('0x1f')]=router;
\ No newline at end of file
index d8da6cd..7e8ce23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9207=['key','exports','STRING','getDataValue'];(function(_0x5e2283,_0x1ed2f8){var _0x14bdce=function(_0x20c9c5){while(--_0x20c9c5){_0x5e2283['push'](_0x5e2283['shift']());}};_0x14bdce(++_0x1ed2f8);}(_0x9207,0x11d));var _0x7920=function(_0x204047,_0x2df7af){_0x204047=_0x204047-0x0;var _0x5956d2=_0x9207[_0x204047];return _0x5956d2;};'use strict';var Sequelize=require('sequelize');module[_0x7920('0x0')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0x7920('0x1')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x7920('0x2')](_0x7920('0x3'));}}};
\ No newline at end of file
+var _0xabca=['STRING','VIRTUAL','getDataValue','key','sequelize','exports'];(function(_0x1dc301,_0x4e3051){var _0x1b112e=function(_0x516245){while(--_0x516245){_0x1dc301['push'](_0x1dc301['shift']());}};_0x1b112e(++_0x4e3051);}(_0xabca,0x18a));var _0xaabc=function(_0x5413bb,_0x471620){_0x5413bb=_0x5413bb-0x0;var _0x38f74c=_0xabca[_0x5413bb];return _0x38f74c;};'use strict';var Sequelize=require(_0xaabc('0x0'));module[_0xaabc('0x1')]={'key':{'type':Sequelize[_0xaabc('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0xaabc('0x2')]},'name':{'type':Sequelize[_0xaabc('0x3')],'get':function(){return this[_0xaabc('0x4')](_0xaabc('0x5'));}}};
\ No newline at end of file
index f125586..1850e95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7712=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','then','CannedAnswers','end','error','stack','send','index','rawAttributes','type','key','model','map','name','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','options','CannedAnswer','include','findAll','rows','params','includeAll','catch','body','find','destroy','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x4bf5aa,_0x350306){var _0x2e3073=function(_0x3d1b21){while(--_0x3d1b21){_0x4bf5aa['push'](_0x4bf5aa['shift']());}};_0x2e3073(++_0x350306);}(_0x7712,0x1d0));var _0x2771=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x7712[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0x2771('0x0'));var rimraf=require(_0x2771('0x1'));var zipdir=require(_0x2771('0x2'));var jsonpatch=require(_0x2771('0x3'));var rp=require(_0x2771('0x4'));var moment=require(_0x2771('0x5'));var BPromise=require(_0x2771('0x6'));var Mustache=require(_0x2771('0x7'));var util=require(_0x2771('0x8'));var path=require(_0x2771('0x9'));var sox=require(_0x2771('0xa'));var csv=require(_0x2771('0xb'));var ejs=require(_0x2771('0xc'));var fs=require('fs');var fs_extra=require(_0x2771('0xd'));var _=require(_0x2771('0xe'));var squel=require(_0x2771('0xf'));var crypto=require(_0x2771('0x10'));var jsforce=require(_0x2771('0x11'));var deskjs=require(_0x2771('0x12'));var toCsv=require(_0x2771('0xb'));var querystring=require(_0x2771('0x13'));var Papa=require('papaparse');var Redis=require(_0x2771('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x2771('0x15'));var as=require(_0x2771('0x16'));var hardwareService=require(_0x2771('0x17'));var logger=require(_0x2771('0x18'))('api');var utils=require(_0x2771('0x19'));var config=require(_0x2771('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ff9c8,_0x2a6a35){_0x2a6a35=_0x2a6a35||0xcc;return function(_0x460bf9){if(_0x460bf9){return _0x4ff9c8[_0x2771('0x1b')](_0x2a6a35);}return _0x4ff9c8[_0x2771('0x1c')](_0x2a6a35)['end']();};}function respondWithResult(_0x38a9e7,_0x321c8b){_0x321c8b=_0x321c8b||0xc8;return function(_0x5cd167){if(_0x5cd167){return _0x38a9e7[_0x2771('0x1c')](_0x321c8b)['json'](_0x5cd167);}};}function respondWithFilteredResult(_0x283544,_0x3ac7d0){return function(_0x1a9e48){if(_0x1a9e48){var _0x4f7c5b=typeof _0x3ac7d0[_0x2771('0x1d')]===_0x2771('0x1e')&&typeof _0x3ac7d0['limit']===_0x2771('0x1e');var _0x53b54b=_0x1a9e48[_0x2771('0x1f')];var _0x311920=_0x4f7c5b?0x0:_0x3ac7d0['offset'];var _0x3850d3=_0x4f7c5b?_0x1a9e48['count']:_0x3ac7d0['offset']+_0x3ac7d0['limit'];var _0x40cc4e;if(_0x3850d3>=_0x53b54b){_0x3850d3=_0x53b54b;_0x40cc4e=0xc8;}else{_0x40cc4e=0xce;}_0x283544[_0x2771('0x1c')](_0x40cc4e);return _0x283544[_0x2771('0x20')](_0x2771('0x21'),_0x311920+'-'+_0x3850d3+'/'+_0x53b54b)[_0x2771('0x22')](_0x1a9e48);}return null;};}function patchUpdates(_0x4f0504){return function(_0x1dceeb){try{jsonpatch[_0x2771('0x23')](_0x1dceeb,_0x4f0504,!![]);}catch(_0x4ee310){return BPromise[_0x2771('0x24')](_0x4ee310);}return _0x1dceeb[_0x2771('0x25')]();};}function saveUpdates(_0x52e0a7,_0x52f209){return function(_0x542816){if(_0x542816){return _0x542816[_0x2771('0x26')](_0x52e0a7)[_0x2771('0x27')](function(_0x364a27){return _0x364a27;});}return null;};}function removeEntity(_0x204864,_0x44bee7){return function(_0x23f57f){if(_0x23f57f){return _0x23f57f['destroy']()[_0x2771('0x27')](function(){var _0x4f96d4=_0x23f57f['get']({'plain':!![]});var _0x541103=_0x2771('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x541103,'resourceId':_0x4f96d4['id']}})[_0x2771('0x27')](function(){return _0x23f57f;});})[_0x2771('0x27')](function(){_0x204864[_0x2771('0x1c')](0xcc)[_0x2771('0x29')]();});}};}function handleEntityNotFound(_0x88bc5e,_0xa7a06){return function(_0x103697){if(!_0x103697){_0x88bc5e['sendStatus'](0x194);}return _0x103697;};}function handleError(_0xd9938a,_0x5d51e1){_0x5d51e1=_0x5d51e1||0x1f4;return function(_0x55c81a){logger[_0x2771('0x2a')](_0x55c81a[_0x2771('0x2b')]);if(_0x55c81a['name']){delete _0x55c81a['name'];}_0xd9938a[_0x2771('0x1c')](_0x5d51e1)[_0x2771('0x2c')](_0x55c81a);};}exports[_0x2771('0x2d')]=function(_0x10294f,_0x3a18be){var _0x16d962={},_0xa1b5b6={},_0x3238cc={'count':0x0,'rows':[]};var _0x633c36=_['map'](db['CannedAnswer'][_0x2771('0x2e')],function(_0x272179){return{'name':_0x272179['fieldName'],'type':_0x272179[_0x2771('0x2f')][_0x2771('0x30')]};});_0xa1b5b6[_0x2771('0x31')]=_[_0x2771('0x32')](_0x633c36,_0x2771('0x33'));_0xa1b5b6[_0x2771('0x34')]=_['keys'](_0x10294f['query']);_0xa1b5b6[_0x2771('0x35')]=_['intersection'](_0xa1b5b6[_0x2771('0x31')],_0xa1b5b6[_0x2771('0x34')]);_0x16d962[_0x2771('0x36')]=_[_0x2771('0x37')](_0xa1b5b6[_0x2771('0x31')],qs[_0x2771('0x38')](_0x10294f['query'][_0x2771('0x38')]));_0x16d962[_0x2771('0x36')]=_0x16d962['attributes'][_0x2771('0x39')]?_0x16d962[_0x2771('0x36')]:_0xa1b5b6[_0x2771('0x31')];if(!_0x10294f[_0x2771('0x34')][_0x2771('0x3a')](_0x2771('0x3b'))){_0x16d962[_0x2771('0x3c')]=qs[_0x2771('0x3c')](_0x10294f[_0x2771('0x34')]['limit']);_0x16d962[_0x2771('0x1d')]=qs[_0x2771('0x1d')](_0x10294f[_0x2771('0x34')][_0x2771('0x1d')]);}_0x16d962[_0x2771('0x3d')]=qs[_0x2771('0x3e')](_0x10294f[_0x2771('0x34')][_0x2771('0x3e')]);_0x16d962[_0x2771('0x3f')]=qs[_0x2771('0x35')](_[_0x2771('0x40')](_0x10294f['query'],_0xa1b5b6[_0x2771('0x35')]),_0x633c36);if(_0x10294f[_0x2771('0x34')][_0x2771('0x41')]){_0x16d962[_0x2771('0x3f')]=_[_0x2771('0x42')](_0x16d962[_0x2771('0x3f')],{'$or':[{'key':{'$like':'%'+_0x10294f[_0x2771('0x34')][_0x2771('0x41')]+'%'}},{'value':{'$like':'%'+_0x10294f[_0x2771('0x34')][_0x2771('0x41')]+'%'}}]});}_0x16d962=_[_0x2771('0x42')]({},_0x16d962,_0x10294f[_0x2771('0x43')]);var _0x3bc394={'where':_0x16d962[_0x2771('0x3f')]};return db[_0x2771('0x44')]['count'](_0x3bc394)[_0x2771('0x27')](function(_0x12b8ab){_0x3238cc[_0x2771('0x1f')]=_0x12b8ab;if(_0x10294f[_0x2771('0x34')]['includeAll']){_0x16d962[_0x2771('0x45')]=[{'all':!![]}];}return db[_0x2771('0x44')][_0x2771('0x46')](_0x16d962);})['then'](function(_0x5c8cbc){_0x3238cc[_0x2771('0x47')]=_0x5c8cbc;return _0x3238cc;})['then'](respondWithFilteredResult(_0x3a18be,_0x16d962))['catch'](handleError(_0x3a18be,null));};exports['show']=function(_0x49cf89,_0x4ca57a){var _0x379f72={'raw':!![],'where':{'id':_0x49cf89[_0x2771('0x48')]['id']}},_0x2b0466={};_0x2b0466[_0x2771('0x31')]=_['keys'](db['CannedAnswer']['rawAttributes']);_0x2b0466[_0x2771('0x34')]=_['keys'](_0x49cf89[_0x2771('0x34')]);_0x2b0466[_0x2771('0x35')]=_[_0x2771('0x37')](_0x2b0466[_0x2771('0x31')],_0x2b0466[_0x2771('0x34')]);_0x379f72[_0x2771('0x36')]=_['intersection'](_0x2b0466[_0x2771('0x31')],qs[_0x2771('0x38')](_0x49cf89[_0x2771('0x34')][_0x2771('0x38')]));_0x379f72['attributes']=_0x379f72[_0x2771('0x36')][_0x2771('0x39')]?_0x379f72[_0x2771('0x36')]:_0x2b0466['model'];if(_0x49cf89[_0x2771('0x34')][_0x2771('0x49')]){_0x379f72['include']=[{'all':!![]}];}_0x379f72=_[_0x2771('0x42')]({},_0x379f72,_0x49cf89[_0x2771('0x43')]);return db[_0x2771('0x44')]['find'](_0x379f72)[_0x2771('0x27')](handleEntityNotFound(_0x4ca57a,null))['then'](respondWithResult(_0x4ca57a,null))[_0x2771('0x4a')](handleError(_0x4ca57a,null));};exports[_0x2771('0x26')]=function(_0x4cb3b4,_0x33aded){if(_0x4cb3b4['body']['id']){delete _0x4cb3b4[_0x2771('0x4b')]['id'];}return db[_0x2771('0x44')][_0x2771('0x4c')]({'where':{'id':_0x4cb3b4[_0x2771('0x48')]['id']}})[_0x2771('0x27')](handleEntityNotFound(_0x33aded,null))[_0x2771('0x27')](saveUpdates(_0x4cb3b4[_0x2771('0x4b')],null))[_0x2771('0x27')](respondWithResult(_0x33aded,null))[_0x2771('0x4a')](handleError(_0x33aded,null));};exports[_0x2771('0x4d')]=function(_0x297fc3,_0x259dda){return db['CannedAnswer']['find']({'where':{'id':_0x297fc3[_0x2771('0x48')]['id']}})[_0x2771('0x27')](handleEntityNotFound(_0x259dda,null))['then'](removeEntity(_0x259dda,null))[_0x2771('0x4a')](handleError(_0x259dda,null));};exports['create']=function(_0x2074ad,_0x355ba6){var _0x354317={'key':_0x2074ad[_0x2771('0x4b')][_0x2771('0x30')]};if(_0x2074ad['body']['MailAccountId']){_0x354317[_0x2771('0x4e')]=_0x2074ad[_0x2771('0x4b')][_0x2771('0x4e')];}else if(_0x2074ad[_0x2771('0x4b')][_0x2771('0x4f')]){_0x354317[_0x2771('0x4f')]=_0x2074ad[_0x2771('0x4b')]['SmsAccountId'];}else if(_0x2074ad[_0x2771('0x4b')][_0x2771('0x50')]){_0x354317['OpenchannelAccountId']=_0x2074ad[_0x2771('0x4b')]['OpenchannelAccountId'];}else if(_0x2074ad['body']['ChatWebsiteId']){_0x354317['ChatWebsiteId']=_0x2074ad[_0x2771('0x4b')][_0x2771('0x51')];}return db[_0x2771('0x44')][_0x2771('0x4c')]({'where':_0x354317})[_0x2771('0x27')](function(_0x343b18){if(_0x343b18){throw new db[(_0x2771('0x52'))][(_0x2771('0x53'))](_0x2771('0x54'));}return db[_0x2771('0x44')]['create'](_0x2074ad[_0x2771('0x4b')]);})['then'](function(_0x2c927d){var _0x1efe2d=_0x2074ad[_0x2771('0x55')][_0x2771('0x56')]({'plain':!![]});if(!_0x1efe2d)throw new Error(_0x2771('0x57'));if(_0x1efe2d[_0x2771('0x58')]===_0x2771('0x55')){var _0x12800b=_0x2c927d['get']({'plain':!![]});return db[_0x2771('0x59')]['find']({'where':{'name':_0x2771('0x28'),'userProfileId':_0x1efe2d[_0x2771('0x5a')]},'raw':!![]})[_0x2771('0x27')](function(_0x41fb45){if(_0x41fb45&&_0x41fb45[_0x2771('0x5b')]===0x0){return db[_0x2771('0x5c')][_0x2771('0x5d')]({'name':_0x12800b['name'],'resourceId':_0x12800b['id'],'type':_0x41fb45[_0x2771('0x33')],'sectionId':_0x41fb45['id']},{})[_0x2771('0x27')](function(){return _0x2c927d;});}else{return _0x2c927d;}})[_0x2771('0x4a')](function(_0x5bc319){logger['error'](_0x2771('0x5e'),_0x5bc319);throw _0x5bc319;});}return _0x2c927d;})[_0x2771('0x27')](respondWithResult(_0x355ba6,0xc9))['catch'](handleError(_0x355ba6,null));};
\ No newline at end of file
+var _0xfef5=['mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','reject','save','update','destroy','get','UserProfileResource','then','stack','name','index','CannedAnswer','fieldName','type','map','keys','filters','intersection','model','attributes','fields','query','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','count','rows','catch','params','rawAttributes','includeAll','include','find','body','create','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CannedAnswers','userProfileId','autoAssociation','error','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xfef5,0x105));var _0x5fef=function(_0x217288,_0x530688){_0x217288=_0x217288-0x0;var _0x270fc3=_0xfef5[_0x217288];return _0x270fc3;};'use strict';var emlformat=require(_0x5fef('0x0'));var rimraf=require(_0x5fef('0x1'));var zipdir=require(_0x5fef('0x2'));var jsonpatch=require(_0x5fef('0x3'));var rp=require(_0x5fef('0x4'));var moment=require(_0x5fef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5fef('0x6'));var util=require(_0x5fef('0x7'));var path=require(_0x5fef('0x8'));var sox=require(_0x5fef('0x9'));var csv=require('to-csv');var ejs=require(_0x5fef('0xa'));var fs=require('fs');var fs_extra=require(_0x5fef('0xb'));var _=require(_0x5fef('0xc'));var squel=require(_0x5fef('0xd'));var crypto=require(_0x5fef('0xe'));var jsforce=require(_0x5fef('0xf'));var deskjs=require(_0x5fef('0x10'));var toCsv=require(_0x5fef('0x11'));var querystring=require(_0x5fef('0x12'));var Papa=require('papaparse');var Redis=require(_0x5fef('0x13'));var authService=require(_0x5fef('0x14'));var qs=require(_0x5fef('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5fef('0x16'));var logger=require(_0x5fef('0x17'))(_0x5fef('0x18'));var utils=require(_0x5fef('0x19'));var config=require(_0x5fef('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x5fef('0x1b'))['db'];function respondWithStatusCode(_0x4ef540,_0x5b98a4){_0x5b98a4=_0x5b98a4||0xcc;return function(_0x1b553e){if(_0x1b553e){return _0x4ef540[_0x5fef('0x1c')](_0x5b98a4);}return _0x4ef540[_0x5fef('0x1d')](_0x5b98a4)[_0x5fef('0x1e')]();};}function respondWithResult(_0x47df4d,_0x372332){_0x372332=_0x372332||0xc8;return function(_0x57b0c9){if(_0x57b0c9){return _0x47df4d[_0x5fef('0x1d')](_0x372332)[_0x5fef('0x1f')](_0x57b0c9);}};}function respondWithFilteredResult(_0x36bbcb,_0x4907d5){return function(_0x570132){if(_0x570132){var _0x2b2a92=typeof _0x4907d5[_0x5fef('0x20')]==='undefined'&&typeof _0x4907d5[_0x5fef('0x21')]===_0x5fef('0x22');var _0x2aa2bb=_0x570132['count'];var _0x52724b=_0x2b2a92?0x0:_0x4907d5[_0x5fef('0x20')];var _0x300fbf=_0x2b2a92?_0x570132['count']:_0x4907d5['offset']+_0x4907d5[_0x5fef('0x21')];var _0x1ff802;if(_0x300fbf>=_0x2aa2bb){_0x300fbf=_0x2aa2bb;_0x1ff802=0xc8;}else{_0x1ff802=0xce;}_0x36bbcb['status'](_0x1ff802);return _0x36bbcb[_0x5fef('0x23')](_0x5fef('0x24'),_0x52724b+'-'+_0x300fbf+'/'+_0x2aa2bb)[_0x5fef('0x1f')](_0x570132);}return null;};}function patchUpdates(_0xd6f367){return function(_0x352a50){try{jsonpatch['apply'](_0x352a50,_0xd6f367,!![]);}catch(_0x1150b5){return BPromise[_0x5fef('0x25')](_0x1150b5);}return _0x352a50[_0x5fef('0x26')]();};}function saveUpdates(_0x4dd42e,_0x25f356){return function(_0xb8561a){if(_0xb8561a){return _0xb8561a[_0x5fef('0x27')](_0x4dd42e)['then'](function(_0x36ad0d){return _0x36ad0d;});}return null;};}function removeEntity(_0x466f4c,_0x59c951){return function(_0x60e626){if(_0x60e626){return _0x60e626[_0x5fef('0x28')]()['then'](function(){var _0xbc0566=_0x60e626[_0x5fef('0x29')]({'plain':!![]});var _0x3a8e80='CannedAnswers';return db[_0x5fef('0x2a')]['destroy']({'where':{'type':_0x3a8e80,'resourceId':_0xbc0566['id']}})['then'](function(){return _0x60e626;});})[_0x5fef('0x2b')](function(){_0x466f4c[_0x5fef('0x1d')](0xcc)[_0x5fef('0x1e')]();});}};}function handleEntityNotFound(_0xd65ea7,_0x458ad0){return function(_0x299ff5){if(!_0x299ff5){_0xd65ea7[_0x5fef('0x1c')](0x194);}return _0x299ff5;};}function handleError(_0x929300,_0x37b214){_0x37b214=_0x37b214||0x1f4;return function(_0x294f87){logger['error'](_0x294f87[_0x5fef('0x2c')]);if(_0x294f87[_0x5fef('0x2d')]){delete _0x294f87[_0x5fef('0x2d')];}_0x929300[_0x5fef('0x1d')](_0x37b214)['send'](_0x294f87);};}exports[_0x5fef('0x2e')]=function(_0x14d0e6,_0x21e1bf){var _0x1d03d3={},_0xa6af5b={},_0x1e9e72={'count':0x0,'rows':[]};var _0x5ba6a8=_['map'](db[_0x5fef('0x2f')]['rawAttributes'],function(_0x96733c){return{'name':_0x96733c[_0x5fef('0x30')],'type':_0x96733c[_0x5fef('0x31')]['key']};});_0xa6af5b['model']=_[_0x5fef('0x32')](_0x5ba6a8,'name');_0xa6af5b['query']=_[_0x5fef('0x33')](_0x14d0e6['query']);_0xa6af5b[_0x5fef('0x34')]=_[_0x5fef('0x35')](_0xa6af5b[_0x5fef('0x36')],_0xa6af5b['query']);_0x1d03d3[_0x5fef('0x37')]=_['intersection'](_0xa6af5b[_0x5fef('0x36')],qs[_0x5fef('0x38')](_0x14d0e6[_0x5fef('0x39')]['fields']));_0x1d03d3[_0x5fef('0x37')]=_0x1d03d3[_0x5fef('0x37')][_0x5fef('0x3a')]?_0x1d03d3[_0x5fef('0x37')]:_0xa6af5b[_0x5fef('0x36')];if(!_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x3b')](_0x5fef('0x3c'))){_0x1d03d3['limit']=qs['limit'](_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x21')]);_0x1d03d3['offset']=qs[_0x5fef('0x20')](_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x20')]);}_0x1d03d3['order']=qs[_0x5fef('0x3d')](_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x3d')]);_0x1d03d3['where']=qs[_0x5fef('0x34')](_[_0x5fef('0x3e')](_0x14d0e6[_0x5fef('0x39')],_0xa6af5b['filters']),_0x5ba6a8);if(_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x3f')]){_0x1d03d3[_0x5fef('0x40')]=_['merge'](_0x1d03d3[_0x5fef('0x40')],{'$or':[{'key':{'$like':'%'+_0x14d0e6[_0x5fef('0x39')][_0x5fef('0x3f')]+'%'}},{'value':{'$like':'%'+_0x14d0e6['query'][_0x5fef('0x3f')]+'%'}}]});}_0x1d03d3=_[_0x5fef('0x41')]({},_0x1d03d3,_0x14d0e6[_0x5fef('0x42')]);var _0x354b6c={'where':_0x1d03d3[_0x5fef('0x40')]};return db[_0x5fef('0x2f')][_0x5fef('0x43')](_0x354b6c)[_0x5fef('0x2b')](function(_0x1d32d9){_0x1e9e72['count']=_0x1d32d9;if(_0x14d0e6[_0x5fef('0x39')]['includeAll']){_0x1d03d3['include']=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x1d03d3);})['then'](function(_0x471fbd){_0x1e9e72[_0x5fef('0x44')]=_0x471fbd;return _0x1e9e72;})[_0x5fef('0x2b')](respondWithFilteredResult(_0x21e1bf,_0x1d03d3))[_0x5fef('0x45')](handleError(_0x21e1bf,null));};exports['show']=function(_0x3d0571,_0x5122ab){var _0x541437={'raw':!![],'where':{'id':_0x3d0571[_0x5fef('0x46')]['id']}},_0x5bba57={};_0x5bba57[_0x5fef('0x36')]=_[_0x5fef('0x33')](db[_0x5fef('0x2f')][_0x5fef('0x47')]);_0x5bba57['query']=_[_0x5fef('0x33')](_0x3d0571[_0x5fef('0x39')]);_0x5bba57[_0x5fef('0x34')]=_[_0x5fef('0x35')](_0x5bba57[_0x5fef('0x36')],_0x5bba57[_0x5fef('0x39')]);_0x541437[_0x5fef('0x37')]=_[_0x5fef('0x35')](_0x5bba57[_0x5fef('0x36')],qs[_0x5fef('0x38')](_0x3d0571['query'][_0x5fef('0x38')]));_0x541437[_0x5fef('0x37')]=_0x541437['attributes'][_0x5fef('0x3a')]?_0x541437[_0x5fef('0x37')]:_0x5bba57[_0x5fef('0x36')];if(_0x3d0571[_0x5fef('0x39')][_0x5fef('0x48')]){_0x541437[_0x5fef('0x49')]=[{'all':!![]}];}_0x541437=_[_0x5fef('0x41')]({},_0x541437,_0x3d0571[_0x5fef('0x42')]);return db[_0x5fef('0x2f')][_0x5fef('0x4a')](_0x541437)[_0x5fef('0x2b')](handleEntityNotFound(_0x5122ab,null))[_0x5fef('0x2b')](respondWithResult(_0x5122ab,null))[_0x5fef('0x45')](handleError(_0x5122ab,null));};exports[_0x5fef('0x27')]=function(_0x2df933,_0x16a123){if(_0x2df933['body']['id']){delete _0x2df933[_0x5fef('0x4b')]['id'];}return db[_0x5fef('0x2f')][_0x5fef('0x4a')]({'where':{'id':_0x2df933['params']['id']}})['then'](handleEntityNotFound(_0x16a123,null))[_0x5fef('0x2b')](saveUpdates(_0x2df933[_0x5fef('0x4b')],null))[_0x5fef('0x2b')](respondWithResult(_0x16a123,null))[_0x5fef('0x45')](handleError(_0x16a123,null));};exports['destroy']=function(_0x4f9d4c,_0xb2d352){return db[_0x5fef('0x2f')][_0x5fef('0x4a')]({'where':{'id':_0x4f9d4c[_0x5fef('0x46')]['id']}})[_0x5fef('0x2b')](handleEntityNotFound(_0xb2d352,null))[_0x5fef('0x2b')](removeEntity(_0xb2d352,null))[_0x5fef('0x45')](handleError(_0xb2d352,null));};exports[_0x5fef('0x4c')]=function(_0x5883e8,_0x495cc4){var _0x217af2={'key':_0x5883e8[_0x5fef('0x4b')][_0x5fef('0x4d')]};if(_0x5883e8[_0x5fef('0x4b')][_0x5fef('0x4e')]){_0x217af2['MailAccountId']=_0x5883e8['body'][_0x5fef('0x4e')];}else if(_0x5883e8['body'][_0x5fef('0x4f')]){_0x217af2[_0x5fef('0x4f')]=_0x5883e8[_0x5fef('0x4b')][_0x5fef('0x4f')];}else if(_0x5883e8[_0x5fef('0x4b')][_0x5fef('0x50')]){_0x217af2[_0x5fef('0x50')]=_0x5883e8[_0x5fef('0x4b')]['OpenchannelAccountId'];}else if(_0x5883e8['body'][_0x5fef('0x51')]){_0x217af2['ChatWebsiteId']=_0x5883e8[_0x5fef('0x4b')]['ChatWebsiteId'];}return db[_0x5fef('0x2f')]['find']({'where':_0x217af2})[_0x5fef('0x2b')](function(_0x400b92){if(_0x400b92){throw new db['Sequelize']['ValidationError']('The\x20inserted\x20key\x20already\x20exists.');}return db['CannedAnswer'][_0x5fef('0x4c')](_0x5883e8['body']);})[_0x5fef('0x2b')](function(_0x4aec95){var _0x2e5e93=_0x5883e8[_0x5fef('0x52')][_0x5fef('0x29')]({'plain':!![]});if(!_0x2e5e93)throw new Error(_0x5fef('0x53'));if(_0x2e5e93[_0x5fef('0x54')]===_0x5fef('0x52')){var _0xbc59e2=_0x4aec95['get']({'plain':!![]});return db['UserProfileSection'][_0x5fef('0x4a')]({'where':{'name':_0x5fef('0x55'),'userProfileId':_0x2e5e93[_0x5fef('0x56')]},'raw':!![]})['then'](function(_0x464eee){if(_0x464eee&&_0x464eee[_0x5fef('0x57')]===0x0){return db['UserProfileResource'][_0x5fef('0x4c')]({'name':_0xbc59e2[_0x5fef('0x2d')],'resourceId':_0xbc59e2['id'],'type':_0x464eee[_0x5fef('0x2d')],'sectionId':_0x464eee['id']},{})[_0x5fef('0x2b')](function(){return _0x4aec95;});}else{return _0x4aec95;}})[_0x5fef('0x45')](function(_0x56597a){logger[_0x5fef('0x58')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x56597a);throw _0x56597a;});}return _0x4aec95;})['then'](respondWithResult(_0x495cc4,0xc9))['catch'](handleError(_0x495cc4,null));};
\ No newline at end of file
index ab8535b..9c2a22f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7566=['../../config/environment','./cannedAnswer.attributes','exports','define','tools_canned_answers','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0x7566,0x164));var _0x6756=function(_0x525b28,_0x5cf5a0){_0x525b28=_0x525b28-0x0;var _0x180178=_0x7566[_0x525b28];return _0x180178;};'use strict';var _=require(_0x6756('0x0'));var util=require(_0x6756('0x1'));var logger=require(_0x6756('0x2'))(_0x6756('0x3'));var moment=require(_0x6756('0x4'));var BPromise=require('bluebird');var rp=require(_0x6756('0x5'));var fs=require('fs');var path=require(_0x6756('0x6'));var rimraf=require(_0x6756('0x7'));var config=require(_0x6756('0x8'));var attributes=require(_0x6756('0x9'));module[_0x6756('0xa')]=function(_0x5dda34,_0x493cbb){return _0x5dda34[_0x6756('0xb')]('CannedAnswer',attributes,{'tableName':_0x6756('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6756('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xe0d3=['tools_canned_answers','utf8mb4','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','CannedAnswer'];(function(_0x3f2397,_0x154b0b){var _0x3d4ed5=function(_0x5ef9db){while(--_0x5ef9db){_0x3f2397['push'](_0x3f2397['shift']());}};_0x3d4ed5(++_0x154b0b);}(_0xe0d3,0x1a2));var _0x3e0d=function(_0x5ac683,_0x3dbeda){_0x5ac683=_0x5ac683-0x0;var _0x282d8b=_0xe0d3[_0x5ac683];return _0x282d8b;};'use strict';var _=require(_0x3e0d('0x0'));var util=require(_0x3e0d('0x1'));var logger=require('../../config/logger')(_0x3e0d('0x2'));var moment=require(_0x3e0d('0x3'));var BPromise=require(_0x3e0d('0x4'));var rp=require(_0x3e0d('0x5'));var fs=require('fs');var path=require(_0x3e0d('0x6'));var rimraf=require(_0x3e0d('0x7'));var config=require(_0x3e0d('0x8'));var attributes=require('./cannedAnswer.attributes');module[_0x3e0d('0x9')]=function(_0x354067,_0x3cb914){return _0x354067['define'](_0x3e0d('0xa'),attributes,{'tableName':_0x3e0d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3e0d('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 93a617c..6a917c8 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(_0x17272f,_0x1d774b){var _0x188642=function(_0x2e49bb){while(--_0x2e49bb){_0x17272f['push'](_0x17272f['shift']());}};_0x188642(++_0x1d774b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+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(_0x3ad38a,_0x1095d0){var _0x33c118=function(_0x4661b6){while(--_0x4661b6){_0x3ad38a['push'](_0x3ad38a['shift']());}};_0x33c118(++_0x1095d0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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 957c3ab..55c1711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9651=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','isAuthenticated','create','/:id','update','delete','exports','multer'];(function(_0x3d79fc,_0x28b55a){var _0x554ea3=function(_0x18c2ac){while(--_0x18c2ac){_0x3d79fc['push'](_0x3d79fc['shift']());}};_0x554ea3(++_0x28b55a);}(_0x9651,0xa9));var _0x1965=function(_0x1b8745,_0x4deb89){_0x1b8745=_0x1b8745-0x0;var _0x1111a2=_0x9651[_0x1b8745];return _0x1111a2;};'use strict';var multer=require(_0x1965('0x0'));var util=require(_0x1965('0x1'));var path=require(_0x1965('0x2'));var timeout=require(_0x1965('0x3'));var express=require(_0x1965('0x4'));var router=express[_0x1965('0x5')]();var fs_extra=require(_0x1965('0x6'));var auth=require(_0x1965('0x7'));var interaction=require(_0x1965('0x8'));var config=require(_0x1965('0x9'));var controller=require(_0x1965('0xa'));router['get']('/',auth[_0x1965('0xb')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x1965('0xb')](),controller[_0x1965('0xc')]);router['put'](_0x1965('0xd'),auth['isAuthenticated'](),controller[_0x1965('0xe')]);router[_0x1965('0xf')]('/:id',auth[_0x1965('0xb')](),controller['destroy']);module[_0x1965('0x10')]=router;
\ No newline at end of file
+var _0xc6fd=['../../components/interaction/service','../../config/environment','./cannedAnswer.controller','index','get','/:id','post','isAuthenticated','put','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra'];(function(_0x3c9e74,_0x4334c5){var _0x4fea21=function(_0x5a2cbb){while(--_0x5a2cbb){_0x3c9e74['push'](_0x3c9e74['shift']());}};_0x4fea21(++_0x4334c5);}(_0xc6fd,0x13f));var _0xdc6f=function(_0x385e17,_0x5dc032){_0x385e17=_0x385e17-0x0;var _0x5eed25=_0xc6fd[_0x385e17];return _0x5eed25;};'use strict';var multer=require(_0xdc6f('0x0'));var util=require('util');var path=require(_0xdc6f('0x1'));var timeout=require(_0xdc6f('0x2'));var express=require(_0xdc6f('0x3'));var router=express['Router']();var fs_extra=require(_0xdc6f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xdc6f('0x5'));var config=require(_0xdc6f('0x6'));var controller=require(_0xdc6f('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xdc6f('0x8')]);router[_0xdc6f('0x9')](_0xdc6f('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xdc6f('0xb')]('/',auth[_0xdc6f('0xc')](),controller['create']);router[_0xdc6f('0xd')](_0xdc6f('0xa'),auth[_0xdc6f('0xc')](),controller[_0xdc6f('0xe')]);router[_0xdc6f('0xf')](_0xdc6f('0xa'),auth[_0xdc6f('0xc')](),controller[_0xdc6f('0x10')]);module[_0xdc6f('0x11')]=router;
\ No newline at end of file
index 27a656e..f7eb593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12c9=['DATE','STRING','INTEGER','sequelize'];(function(_0x5771c0,_0x129ef8){var _0x25b40b=function(_0x2d3671){while(--_0x2d3671){_0x5771c0['push'](_0x5771c0['shift']());}};_0x25b40b(++_0x129ef8);}(_0x12c9,0x9f));var _0x912c=function(_0x439fdf,_0x25d7d9){_0x439fdf=_0x439fdf-0x0;var _0x32c992=_0x12c9[_0x439fdf];return _0x32c992;};'use strict';var Sequelize=require(_0x912c('0x0'));module['exports']={'calldate':{'type':Sequelize[_0x912c('0x1')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x912c('0x2')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x912c('0x2')]},'dcontext':{'type':Sequelize[_0x912c('0x2')]},'channel':{'type':Sequelize[_0x912c('0x2')]},'dstchannel':{'type':Sequelize[_0x912c('0x2')]},'lastapp':{'type':Sequelize[_0x912c('0x2')]},'lastdata':{'type':Sequelize[_0x912c('0x2')]},'duration':{'type':Sequelize[_0x912c('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x912c('0x2')]},'amaflags':{'type':Sequelize[_0x912c('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x912c('0x2')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x912c('0x2')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0x912c('0x2')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd757=['exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER','sequelize'];(function(_0x549d5d,_0x8d94a8){var _0x405436=function(_0x2c9329){while(--_0x2c9329){_0x549d5d['push'](_0x549d5d['shift']());}};_0x405436(++_0x8d94a8);}(_0xd757,0x1e5));var _0x7d75=function(_0x606beb,_0x6b7c72){_0x606beb=_0x606beb-0x0;var _0x291b14=_0xd757[_0x606beb];return _0x291b14;};'use strict';var Sequelize=require(_0x7d75('0x0'));module[_0x7d75('0x1')]={'calldate':{'type':Sequelize[_0x7d75('0x2')],'allowNull':![],'defaultValue':_0x7d75('0x3')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x7d75('0x4')]},'dcontext':{'type':Sequelize[_0x7d75('0x4')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x7d75('0x4')]},'lastapp':{'type':Sequelize[_0x7d75('0x4')]},'lastdata':{'type':Sequelize[_0x7d75('0x4')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x7d75('0x4')]},'amaflags':{'type':Sequelize[_0x7d75('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x7d75('0x4')]},'userfield':{'type':Sequelize[_0x7d75('0x4')]},'uniqueid':{'type':Sequelize[_0x7d75('0x4')]},'linkedid':{'type':Sequelize[_0x7d75('0x4')]},'sequence':{'type':Sequelize[_0x7d75('0x4')]},'peeraccount':{'type':Sequelize[_0x7d75('0x4')]},'type':{'type':Sequelize[_0x7d75('0x4')]},'tag':{'type':Sequelize[_0x7d75('0x4')]}};
\ No newline at end of file
index 94be441..1f4cfe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9009=['stack','name','index','Cdr','rawAttributes','fieldName','type','key','query','keys','model','attributes','intersection','fields','length','nolimit','order','sort','filters','pick','filter','merge','where','map','VIRTUAL','catch','show','params','includeAll','include','options','find','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','error'];(function(_0x4fbb15,_0x21be0c){var _0x436338=function(_0x3b5a05){while(--_0x3b5a05){_0x4fbb15['push'](_0x4fbb15['shift']());}};_0x436338(++_0x21be0c);}(_0x9009,0x1d4));var _0x9900=function(_0x2bf3ac,_0x212f21){_0x2bf3ac=_0x2bf3ac-0x0;var _0x40ada=_0x9009[_0x2bf3ac];return _0x40ada;};'use strict';var emlformat=require(_0x9900('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9900('0x1'));var jsonpatch=require(_0x9900('0x2'));var rp=require('request-promise');var moment=require(_0x9900('0x3'));var BPromise=require(_0x9900('0x4'));var Mustache=require(_0x9900('0x5'));var util=require(_0x9900('0x6'));var path=require('path');var sox=require(_0x9900('0x7'));var csv=require(_0x9900('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9900('0x9'));var squel=require(_0x9900('0xa'));var crypto=require('crypto');var jsforce=require(_0x9900('0xb'));var deskjs=require(_0x9900('0xc'));var toCsv=require(_0x9900('0x8'));var querystring=require(_0x9900('0xd'));var Papa=require('papaparse');var Redis=require(_0x9900('0xe'));var authService=require(_0x9900('0xf'));var qs=require(_0x9900('0x10'));var as=require(_0x9900('0x11'));var hardwareService=require(_0x9900('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x9900('0x13'));var config=require(_0x9900('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17070a,_0x4e8312){_0x4e8312=_0x4e8312||0xcc;return function(_0x6bd4da){if(_0x6bd4da){return _0x17070a[_0x9900('0x15')](_0x4e8312);}return _0x17070a[_0x9900('0x16')](_0x4e8312)[_0x9900('0x17')]();};}function respondWithResult(_0x318fa5,_0x1014e8){_0x1014e8=_0x1014e8||0xc8;return function(_0x2eaf32){if(_0x2eaf32){return _0x318fa5[_0x9900('0x16')](_0x1014e8)[_0x9900('0x18')](_0x2eaf32);}};}function respondWithFilteredResult(_0x209b4d,_0x375ee0){return function(_0xce2dd6){if(_0xce2dd6){var _0x154e22=typeof _0x375ee0[_0x9900('0x19')]===_0x9900('0x1a')&&typeof _0x375ee0[_0x9900('0x1b')]===_0x9900('0x1a');var _0x5d9ec9=_0xce2dd6['count'];var _0x1017a5=_0x154e22?0x0:_0x375ee0[_0x9900('0x19')];var _0x1bd7a3=_0x154e22?_0xce2dd6[_0x9900('0x1c')]:_0x375ee0['offset']+_0x375ee0[_0x9900('0x1b')];var _0x57ae85;if(_0x1bd7a3>=_0x5d9ec9){_0x1bd7a3=_0x5d9ec9;_0x57ae85=0xc8;}else{_0x57ae85=0xce;}_0x209b4d['status'](_0x57ae85);return _0x209b4d[_0x9900('0x1d')]('Content-Range',_0x1017a5+'-'+_0x1bd7a3+'/'+_0x5d9ec9)[_0x9900('0x18')](_0xce2dd6);}return null;};}function patchUpdates(_0x596eff){return function(_0x48d6df){try{jsonpatch[_0x9900('0x1e')](_0x48d6df,_0x596eff,!![]);}catch(_0x2892ce){return BPromise[_0x9900('0x1f')](_0x2892ce);}return _0x48d6df[_0x9900('0x20')]();};}function saveUpdates(_0x5ee4ad,_0x215bd4){return function(_0x3e4cee){if(_0x3e4cee){return _0x3e4cee[_0x9900('0x21')](_0x5ee4ad)[_0x9900('0x22')](function(_0x45c0d0){return _0x45c0d0;});}return null;};}function removeEntity(_0x5368bf,_0x37842b){return function(_0x218d7e){if(_0x218d7e){return _0x218d7e['destroy']()[_0x9900('0x22')](function(){_0x5368bf[_0x9900('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x54a015,_0x43ed24){return function(_0x2ac147){if(!_0x2ac147){_0x54a015['sendStatus'](0x194);}return _0x2ac147;};}function handleError(_0x285d51,_0x4507a9){_0x4507a9=_0x4507a9||0x1f4;return function(_0x5e3e21){logger[_0x9900('0x23')](_0x5e3e21[_0x9900('0x24')]);if(_0x5e3e21[_0x9900('0x25')]){delete _0x5e3e21[_0x9900('0x25')];}_0x285d51[_0x9900('0x16')](_0x4507a9)['send'](_0x5e3e21);};}exports[_0x9900('0x26')]=function(_0x44d775,_0x10fbae){var _0x32e343={},_0x3b1b94={},_0x50f16a={'count':0x0,'rows':[]};var _0x4cef1f=_['map'](db[_0x9900('0x27')][_0x9900('0x28')],function(_0x4ef405){return{'name':_0x4ef405[_0x9900('0x29')],'type':_0x4ef405[_0x9900('0x2a')][_0x9900('0x2b')]};});_0x3b1b94['model']=_['map'](_0x4cef1f,_0x9900('0x25'));_0x3b1b94[_0x9900('0x2c')]=_[_0x9900('0x2d')](_0x44d775[_0x9900('0x2c')]);_0x3b1b94['filters']=_['intersection'](_0x3b1b94[_0x9900('0x2e')],_0x3b1b94[_0x9900('0x2c')]);_0x32e343[_0x9900('0x2f')]=_[_0x9900('0x30')](_0x3b1b94[_0x9900('0x2e')],qs[_0x9900('0x31')](_0x44d775[_0x9900('0x2c')][_0x9900('0x31')]));_0x32e343[_0x9900('0x2f')]=_0x32e343[_0x9900('0x2f')][_0x9900('0x32')]?_0x32e343[_0x9900('0x2f')]:_0x3b1b94[_0x9900('0x2e')];if(!_0x44d775['query']['hasOwnProperty'](_0x9900('0x33'))){_0x32e343['limit']=qs[_0x9900('0x1b')](_0x44d775[_0x9900('0x2c')][_0x9900('0x1b')]);_0x32e343[_0x9900('0x19')]=qs[_0x9900('0x19')](_0x44d775[_0x9900('0x2c')][_0x9900('0x19')]);}_0x32e343[_0x9900('0x34')]=qs[_0x9900('0x35')](_0x44d775['query']['sort']);_0x32e343['where']=qs[_0x9900('0x36')](_[_0x9900('0x37')](_0x44d775['query'],_0x3b1b94[_0x9900('0x36')]),_0x4cef1f);if(_0x44d775[_0x9900('0x2c')][_0x9900('0x38')]){_0x32e343['where']=_[_0x9900('0x39')](_0x32e343[_0x9900('0x3a')],{'$or':_[_0x9900('0x3b')](_0x4cef1f,function(_0x141131){if(_0x141131[_0x9900('0x2a')]!==_0x9900('0x3c')){var _0x510d6a={};_0x510d6a[_0x141131[_0x9900('0x25')]]={'$like':'%'+_0x44d775[_0x9900('0x2c')]['filter']+'%'};return _0x510d6a;}})});}_0x32e343=_[_0x9900('0x39')]({},_0x32e343,_0x44d775['options']);var _0x2cee90={'where':_0x32e343[_0x9900('0x3a')]};return db['Cdr'][_0x9900('0x1c')](_0x2cee90)[_0x9900('0x22')](function(_0x2595cc){_0x50f16a[_0x9900('0x1c')]=_0x2595cc;if(_0x44d775[_0x9900('0x2c')]['includeAll']){_0x32e343['include']=[{'all':!![]}];}return db[_0x9900('0x27')]['findAll'](_0x32e343);})['then'](function(_0x5e2765){_0x50f16a['rows']=_0x5e2765;return _0x50f16a;})['then'](respondWithFilteredResult(_0x10fbae,_0x32e343))[_0x9900('0x3d')](handleError(_0x10fbae,null));};exports[_0x9900('0x3e')]=function(_0x3c8f30,_0x42849a){var _0x31c003={'raw':!![],'where':{'id':_0x3c8f30[_0x9900('0x3f')]['id']}},_0xb94a40={};_0xb94a40[_0x9900('0x2e')]=_['keys'](db[_0x9900('0x27')][_0x9900('0x28')]);_0xb94a40['query']=_['keys'](_0x3c8f30[_0x9900('0x2c')]);_0xb94a40[_0x9900('0x36')]=_[_0x9900('0x30')](_0xb94a40[_0x9900('0x2e')],_0xb94a40[_0x9900('0x2c')]);_0x31c003[_0x9900('0x2f')]=_[_0x9900('0x30')](_0xb94a40[_0x9900('0x2e')],qs['fields'](_0x3c8f30[_0x9900('0x2c')][_0x9900('0x31')]));_0x31c003['attributes']=_0x31c003[_0x9900('0x2f')][_0x9900('0x32')]?_0x31c003[_0x9900('0x2f')]:_0xb94a40[_0x9900('0x2e')];if(_0x3c8f30['query'][_0x9900('0x40')]){_0x31c003[_0x9900('0x41')]=[{'all':!![]}];}_0x31c003=_['merge']({},_0x31c003,_0x3c8f30[_0x9900('0x42')]);return db[_0x9900('0x27')][_0x9900('0x43')](_0x31c003)['then'](handleEntityNotFound(_0x42849a,null))[_0x9900('0x22')](respondWithResult(_0x42849a,null))['catch'](handleError(_0x42849a,null));};exports[_0x9900('0x44')]=function(_0x5ea06a,_0x1409a0){return db[_0x9900('0x27')][_0x9900('0x44')](_0x5ea06a['body'],{})[_0x9900('0x22')](respondWithResult(_0x1409a0,0xc9))['catch'](handleError(_0x1409a0,null));};exports[_0x9900('0x21')]=function(_0x11be07,_0x5ac239){if(_0x11be07[_0x9900('0x45')]['id']){delete _0x11be07[_0x9900('0x45')]['id'];}return db['Cdr'][_0x9900('0x43')]({'where':{'id':_0x11be07[_0x9900('0x3f')]['id']}})[_0x9900('0x22')](handleEntityNotFound(_0x5ac239,null))[_0x9900('0x22')](saveUpdates(_0x11be07[_0x9900('0x45')],null))['then'](respondWithResult(_0x5ac239,null))['catch'](handleError(_0x5ac239,null));};exports[_0x9900('0x46')]=function(_0x43cf2c,_0x2aa081){return db[_0x9900('0x27')][_0x9900('0x43')]({'where':{'id':_0x43cf2c['params']['id']}})[_0x9900('0x22')](handleEntityNotFound(_0x2aa081,null))[_0x9900('0x22')](removeEntity(_0x2aa081,null))[_0x9900('0x3d')](handleError(_0x2aa081,null));};exports[_0x9900('0x47')]=function(_0x2f7f74,_0xb5512f){return db[_0x9900('0x27')]['describe']()[_0x9900('0x22')](respondWithResult(_0xb5512f,null))['catch'](handleError(_0xb5512f,null));};
\ No newline at end of file
+var _0x9335=['hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','include','findAll','then','rows','show','params','rawAttributes','includeAll','options','find','create','catch','update','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','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','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','save','error','name','send','map','Cdr','type','key','query','keys','filters','model','attributes','intersection','fields'];(function(_0x437498,_0x226e08){var _0x540b34=function(_0x40e114){while(--_0x40e114){_0x437498['push'](_0x437498['shift']());}};_0x540b34(++_0x226e08);}(_0x9335,0xab));var _0x5933=function(_0x5b3c57,_0x549c8f){_0x5b3c57=_0x5b3c57-0x0;var _0x36317f=_0x9335[_0x5b3c57];return _0x36317f;};'use strict';var emlformat=require(_0x5933('0x0'));var rimraf=require(_0x5933('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5933('0x2'));var rp=require(_0x5933('0x3'));var moment=require(_0x5933('0x4'));var BPromise=require(_0x5933('0x5'));var Mustache=require(_0x5933('0x6'));var util=require(_0x5933('0x7'));var path=require(_0x5933('0x8'));var sox=require('sox');var csv=require(_0x5933('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5933('0xa'));var squel=require(_0x5933('0xb'));var crypto=require(_0x5933('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5933('0xd'));var toCsv=require(_0x5933('0x9'));var querystring=require(_0x5933('0xe'));var Papa=require(_0x5933('0xf'));var Redis=require(_0x5933('0x10'));var authService=require(_0x5933('0x11'));var qs=require(_0x5933('0x12'));var as=require(_0x5933('0x13'));var hardwareService=require(_0x5933('0x14'));var logger=require(_0x5933('0x15'))(_0x5933('0x16'));var utils=require(_0x5933('0x17'));var config=require(_0x5933('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x5933('0x19'))['db'];function respondWithStatusCode(_0x5af679,_0x8b6bad){_0x8b6bad=_0x8b6bad||0xcc;return function(_0x1b4428){if(_0x1b4428){return _0x5af679[_0x5933('0x1a')](_0x8b6bad);}return _0x5af679['status'](_0x8b6bad)[_0x5933('0x1b')]();};}function respondWithResult(_0x542448,_0x1ab3d0){_0x1ab3d0=_0x1ab3d0||0xc8;return function(_0x4fc51d){if(_0x4fc51d){return _0x542448[_0x5933('0x1c')](_0x1ab3d0)['json'](_0x4fc51d);}};}function respondWithFilteredResult(_0xf6321f,_0x5e91da){return function(_0x404555){if(_0x404555){var _0x34c035=typeof _0x5e91da[_0x5933('0x1d')]==='undefined'&&typeof _0x5e91da['limit']===_0x5933('0x1e');var _0x2a2532=_0x404555[_0x5933('0x1f')];var _0x51a525=_0x34c035?0x0:_0x5e91da['offset'];var _0x15263f=_0x34c035?_0x404555['count']:_0x5e91da[_0x5933('0x1d')]+_0x5e91da[_0x5933('0x20')];var _0x21b1d7;if(_0x15263f>=_0x2a2532){_0x15263f=_0x2a2532;_0x21b1d7=0xc8;}else{_0x21b1d7=0xce;}_0xf6321f['status'](_0x21b1d7);return _0xf6321f[_0x5933('0x21')](_0x5933('0x22'),_0x51a525+'-'+_0x15263f+'/'+_0x2a2532)[_0x5933('0x23')](_0x404555);}return null;};}function patchUpdates(_0x4d661c){return function(_0x59a2cd){try{jsonpatch['apply'](_0x59a2cd,_0x4d661c,!![]);}catch(_0x36d602){return BPromise['reject'](_0x36d602);}return _0x59a2cd[_0x5933('0x24')]();};}function saveUpdates(_0x4a5252,_0x2d0fb7){return function(_0x50026f){if(_0x50026f){return _0x50026f['update'](_0x4a5252)['then'](function(_0x4a1901){return _0x4a1901;});}return null;};}function removeEntity(_0x3d70ef,_0x5639c7){return function(_0x1a2f5d){if(_0x1a2f5d){return _0x1a2f5d['destroy']()['then'](function(){_0x3d70ef[_0x5933('0x1c')](0xcc)[_0x5933('0x1b')]();});}};}function handleEntityNotFound(_0x297b15,_0x56e8a9){return function(_0xd2320){if(!_0xd2320){_0x297b15[_0x5933('0x1a')](0x194);}return _0xd2320;};}function handleError(_0x2348bc,_0x5a0de4){_0x5a0de4=_0x5a0de4||0x1f4;return function(_0x1e24f6){logger[_0x5933('0x25')](_0x1e24f6['stack']);if(_0x1e24f6[_0x5933('0x26')]){delete _0x1e24f6[_0x5933('0x26')];}_0x2348bc['status'](_0x5a0de4)[_0x5933('0x27')](_0x1e24f6);};}exports['index']=function(_0x51dbae,_0x45039b){var _0x1af598={},_0x4adb80={},_0x255ed5={'count':0x0,'rows':[]};var _0x51e2d6=_[_0x5933('0x28')](db[_0x5933('0x29')]['rawAttributes'],function(_0x4fc086){return{'name':_0x4fc086['fieldName'],'type':_0x4fc086[_0x5933('0x2a')][_0x5933('0x2b')]};});_0x4adb80['model']=_[_0x5933('0x28')](_0x51e2d6,_0x5933('0x26'));_0x4adb80[_0x5933('0x2c')]=_[_0x5933('0x2d')](_0x51dbae['query']);_0x4adb80[_0x5933('0x2e')]=_['intersection'](_0x4adb80[_0x5933('0x2f')],_0x4adb80['query']);_0x1af598[_0x5933('0x30')]=_[_0x5933('0x31')](_0x4adb80[_0x5933('0x2f')],qs[_0x5933('0x32')](_0x51dbae['query'][_0x5933('0x32')]));_0x1af598[_0x5933('0x30')]=_0x1af598['attributes']['length']?_0x1af598[_0x5933('0x30')]:_0x4adb80['model'];if(!_0x51dbae['query'][_0x5933('0x33')](_0x5933('0x34'))){_0x1af598[_0x5933('0x20')]=qs[_0x5933('0x20')](_0x51dbae['query']['limit']);_0x1af598['offset']=qs['offset'](_0x51dbae[_0x5933('0x2c')]['offset']);}_0x1af598['order']=qs['sort'](_0x51dbae[_0x5933('0x2c')][_0x5933('0x35')]);_0x1af598[_0x5933('0x36')]=qs[_0x5933('0x2e')](_[_0x5933('0x37')](_0x51dbae[_0x5933('0x2c')],_0x4adb80[_0x5933('0x2e')]),_0x51e2d6);if(_0x51dbae[_0x5933('0x2c')][_0x5933('0x38')]){_0x1af598[_0x5933('0x36')]=_['merge'](_0x1af598[_0x5933('0x36')],{'$or':_[_0x5933('0x28')](_0x51e2d6,function(_0x6e2a66){if(_0x6e2a66[_0x5933('0x2a')]!==_0x5933('0x39')){var _0x2c1484={};_0x2c1484[_0x6e2a66[_0x5933('0x26')]]={'$like':'%'+_0x51dbae[_0x5933('0x2c')][_0x5933('0x38')]+'%'};return _0x2c1484;}})});}_0x1af598=_[_0x5933('0x3a')]({},_0x1af598,_0x51dbae['options']);var _0x5c2bd0={'where':_0x1af598[_0x5933('0x36')]};return db[_0x5933('0x29')][_0x5933('0x1f')](_0x5c2bd0)['then'](function(_0x5d07da){_0x255ed5[_0x5933('0x1f')]=_0x5d07da;if(_0x51dbae[_0x5933('0x2c')]['includeAll']){_0x1af598[_0x5933('0x3b')]=[{'all':!![]}];}return db[_0x5933('0x29')][_0x5933('0x3c')](_0x1af598);})[_0x5933('0x3d')](function(_0x192576){_0x255ed5[_0x5933('0x3e')]=_0x192576;return _0x255ed5;})['then'](respondWithFilteredResult(_0x45039b,_0x1af598))['catch'](handleError(_0x45039b,null));};exports[_0x5933('0x3f')]=function(_0x1aef52,_0x36d072){var _0x293845={'raw':!![],'where':{'id':_0x1aef52[_0x5933('0x40')]['id']}},_0x247c65={};_0x247c65['model']=_[_0x5933('0x2d')](db[_0x5933('0x29')][_0x5933('0x41')]);_0x247c65['query']=_[_0x5933('0x2d')](_0x1aef52[_0x5933('0x2c')]);_0x247c65[_0x5933('0x2e')]=_[_0x5933('0x31')](_0x247c65[_0x5933('0x2f')],_0x247c65[_0x5933('0x2c')]);_0x293845[_0x5933('0x30')]=_[_0x5933('0x31')](_0x247c65[_0x5933('0x2f')],qs[_0x5933('0x32')](_0x1aef52['query'][_0x5933('0x32')]));_0x293845['attributes']=_0x293845['attributes']['length']?_0x293845[_0x5933('0x30')]:_0x247c65['model'];if(_0x1aef52['query'][_0x5933('0x42')]){_0x293845[_0x5933('0x3b')]=[{'all':!![]}];}_0x293845=_['merge']({},_0x293845,_0x1aef52[_0x5933('0x43')]);return db['Cdr'][_0x5933('0x44')](_0x293845)[_0x5933('0x3d')](handleEntityNotFound(_0x36d072,null))['then'](respondWithResult(_0x36d072,null))['catch'](handleError(_0x36d072,null));};exports[_0x5933('0x45')]=function(_0x4622bd,_0x38e713){return db[_0x5933('0x29')][_0x5933('0x45')](_0x4622bd['body'],{})[_0x5933('0x3d')](respondWithResult(_0x38e713,0xc9))[_0x5933('0x46')](handleError(_0x38e713,null));};exports[_0x5933('0x47')]=function(_0x4c2e69,_0x2d5fd4){if(_0x4c2e69[_0x5933('0x48')]['id']){delete _0x4c2e69[_0x5933('0x48')]['id'];}return db[_0x5933('0x29')]['find']({'where':{'id':_0x4c2e69[_0x5933('0x40')]['id']}})[_0x5933('0x3d')](handleEntityNotFound(_0x2d5fd4,null))[_0x5933('0x3d')](saveUpdates(_0x4c2e69[_0x5933('0x48')],null))['then'](respondWithResult(_0x2d5fd4,null))[_0x5933('0x46')](handleError(_0x2d5fd4,null));};exports[_0x5933('0x49')]=function(_0x41be67,_0x38f681){return db[_0x5933('0x29')][_0x5933('0x44')]({'where':{'id':_0x41be67[_0x5933('0x40')]['id']}})[_0x5933('0x3d')](handleEntityNotFound(_0x38f681,null))[_0x5933('0x3d')](removeEntity(_0x38f681,null))[_0x5933('0x46')](handleError(_0x38f681,null));};exports['describe']=function(_0x3fdd78,_0x4d0bb8){return db[_0x5933('0x29')]['describe']()[_0x5933('0x3d')](respondWithResult(_0x4d0bb8,null))['catch'](handleError(_0x4d0bb8,null));};
\ No newline at end of file
index 0469071..722fdeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x143d46,_0x35d5b8){var _0x3f8c5c=function(_0x28feec){while(--_0x28feec){_0x143d46['push'](_0x143d46['shift']());}};_0x3f8c5c(++_0x35d5b8);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x115dc2,_0x272b45){var _0x58ae32=function(_0x293f57){while(--_0x293f57){_0x115dc2['push'](_0x115dc2['shift']());}};_0x58ae32(++_0x272b45);}(_0x7a54,0x106));var _0x47a5=function(_0x296b7c,_0x1eeeb0){_0x296b7c=_0x296b7c-0x0;var _0x28924a=_0x7a54[_0x296b7c];return _0x28924a;};'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 b34fcf7..a76c306 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bf0=['client','then','info','Cdr,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x11c609,_0x4873c9){var _0xb3b638=function(_0x458eca){while(--_0x458eca){_0x11c609['push'](_0x11c609['shift']());}};_0xb3b638(++_0x4873c9);}(_0x2bf0,0xee));var _0x02bf=function(_0x342625,_0x4895ad){_0x342625=_0x342625-0x0;var _0x1d1900=_0x2bf0[_0x342625];return _0x1d1900;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x02bf('0x0'));var BPromise=require(_0x02bf('0x1'));var rs=require(_0x02bf('0x2'));var fs=require('fs');var Redis=require(_0x02bf('0x3'));var db=require(_0x02bf('0x4'))['db'];var utils=require(_0x02bf('0x5'));var logger=require(_0x02bf('0x6'))(_0x02bf('0x7'));var config=require('../../config/environment');var jayson=require(_0x02bf('0x8'));var client=jayson[_0x02bf('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f2b8e,_0x4183ed,_0x3d5bea){return new BPromise(function(_0x2cc437,_0x44b208){return client['request'](_0x3f2b8e,_0x3d5bea)[_0x02bf('0xa')](function(_0x228bed){logger[_0x02bf('0xb')](_0x02bf('0xc'),_0x4183ed,_0x02bf('0xd'));logger['debug']('Cdr,\x20%s,\x20%s,\x20%s',_0x4183ed,'request\x20sent',JSON['stringify'](_0x228bed));if(_0x228bed[_0x02bf('0xe')]){if(_0x228bed['error'][_0x02bf('0xf')]===0x1f4){logger[_0x02bf('0xe')](_0x02bf('0xc'),_0x4183ed,_0x228bed[_0x02bf('0xe')][_0x02bf('0x10')]);return _0x44b208(_0x228bed['error'][_0x02bf('0x10')]);}logger[_0x02bf('0xe')](_0x02bf('0xc'),_0x4183ed,_0x228bed[_0x02bf('0xe')][_0x02bf('0x10')]);return _0x2cc437(_0x228bed['error'][_0x02bf('0x10')]);}else{logger['info'](_0x02bf('0xc'),_0x4183ed,'request\x20sent');_0x2cc437(_0x228bed[_0x02bf('0x11')][_0x02bf('0x10')]);}})[_0x02bf('0x12')](function(_0x50c457){logger[_0x02bf('0xe')](_0x02bf('0xc'),_0x4183ed,_0x50c457);_0x44b208(_0x50c457);});});}
\ No newline at end of file
+var _0xf854=['client','http','request','then','info','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','code','message','error','Cdr,\x20%s,\x20%s','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x169e70,_0x20dbe2){var _0x97cfbd=function(_0x21f4a5){while(--_0x21f4a5){_0x169e70['push'](_0x169e70['shift']());}};_0x97cfbd(++_0x20dbe2);}(_0xf854,0xd7));var _0x4f85=function(_0x110047,_0x553d9b){_0x110047=_0x110047-0x0;var _0x44aebe=_0xf854[_0x110047];return _0x44aebe;};'use strict';var _=require(_0x4f85('0x0'));var util=require(_0x4f85('0x1'));var moment=require(_0x4f85('0x2'));var BPromise=require(_0x4f85('0x3'));var rs=require(_0x4f85('0x4'));var fs=require('fs');var Redis=require(_0x4f85('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4f85('0x6'))(_0x4f85('0x7'));var config=require(_0x4f85('0x8'));var jayson=require(_0x4f85('0x9'));var client=jayson[_0x4f85('0xa')][_0x4f85('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c28bf,_0x2ff0f2,_0x5d3ce8){return new BPromise(function(_0x3f04a2,_0x2dd510){return client[_0x4f85('0xc')](_0x1c28bf,_0x5d3ce8)[_0x4f85('0xd')](function(_0x1f8af6){logger[_0x4f85('0xe')]('Cdr,\x20%s,\x20%s',_0x2ff0f2,'request\x20sent');logger[_0x4f85('0xf')](_0x4f85('0x10'),_0x2ff0f2,'request\x20sent',JSON[_0x4f85('0x11')](_0x1f8af6));if(_0x1f8af6['error']){if(_0x1f8af6['error'][_0x4f85('0x12')]===0x1f4){logger['error']('Cdr,\x20%s,\x20%s',_0x2ff0f2,_0x1f8af6['error'][_0x4f85('0x13')]);return _0x2dd510(_0x1f8af6[_0x4f85('0x14')][_0x4f85('0x13')]);}logger[_0x4f85('0x14')](_0x4f85('0x15'),_0x2ff0f2,_0x1f8af6[_0x4f85('0x14')]['message']);return _0x3f04a2(_0x1f8af6[_0x4f85('0x14')][_0x4f85('0x13')]);}else{logger[_0x4f85('0xe')](_0x4f85('0x15'),_0x2ff0f2,_0x4f85('0x16'));_0x3f04a2(_0x1f8af6[_0x4f85('0x17')][_0x4f85('0x13')]);}})[_0x4f85('0x18')](function(_0x59f389){logger['error']('Cdr,\x20%s,\x20%s',_0x2ff0f2,_0x59f389);_0x2dd510(_0x59f389);});});}
\ No newline at end of file
index f611012..3f0dc53 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(_0x56756b,_0x3e8cc7){var _0xa3002=function(_0x5f1386){while(--_0x5f1386){_0x56756b['push'](_0x56756b['shift']());}};_0xa3002(++_0x3e8cc7);}(_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(_0x282f96,_0x2be4be){var _0x12d02b=function(_0x51cc9d){while(--_0x51cc9d){_0x282f96['push'](_0x282f96['shift']());}};_0x12d02b(++_0x2be4be);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./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 46e4465..503c9f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc801=['*,*,*,*','sequelize','INTEGER','STRING','noop','TEXT'];(function(_0x29f476,_0x2db883){var _0x18ded1=function(_0x221cc6){while(--_0x221cc6){_0x29f476['push'](_0x29f476['shift']());}};_0x18ded1(++_0x2db883);}(_0xc801,0x9d));var _0x1c80=function(_0x166d93,_0x301f09){_0x166d93=_0x166d93-0x0;var _0xba708=_0xc801[_0x166d93];return _0xba708;};'use strict';var Sequelize=require(_0x1c80('0x0'));module['exports']={'priority':{'type':Sequelize[_0x1c80('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x1c80('0x2')],'allowNull':![],'defaultValue':_0x1c80('0x3')},'appdata':{'type':Sequelize[_0x1c80('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x1c80('0x2')],'defaultValue':_0x1c80('0x5')}};
\ No newline at end of file
+var _0xb150=['exports','STRING','noop','*,*,*,*','sequelize'];(function(_0x1b76e6,_0x598520){var _0x333b53=function(_0x106e6a){while(--_0x106e6a){_0x1b76e6['push'](_0x1b76e6['shift']());}};_0x333b53(++_0x598520);}(_0xb150,0x153));var _0x0b15=function(_0x47c969,_0x340d6d){_0x47c969=_0x47c969-0x0;var _0x33d86c=_0xb150[_0x47c969];return _0x33d86c;};'use strict';var Sequelize=require(_0x0b15('0x0'));module[_0x0b15('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x0b15('0x2')],'allowNull':![],'defaultValue':_0x0b15('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x0b15('0x2')],'defaultValue':_0x0b15('0x4')}};
\ No newline at end of file
index d36eb08..9bc718c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43fd=['papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','count','limit','set','reject','then','destroy','error','stack','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','fields','attributes','includeAll','include','merge','options','find','catch','body','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x4cdd51,_0x57f86e){var _0x5c9687=function(_0x32fd20){while(--_0x32fd20){_0x4cdd51['push'](_0x4cdd51['shift']());}};_0x5c9687(++_0x57f86e);}(_0x43fd,0x150));var _0xd43f=function(_0x26287d,_0x328a9f){_0x26287d=_0x26287d-0x0;var _0x4f053f=_0x43fd[_0x26287d];return _0x4f053f;};'use strict';var emlformat=require(_0xd43f('0x0'));var rimraf=require(_0xd43f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd43f('0x2'));var rp=require('request-promise');var moment=require(_0xd43f('0x3'));var BPromise=require(_0xd43f('0x4'));var Mustache=require(_0xd43f('0x5'));var util=require(_0xd43f('0x6'));var path=require(_0xd43f('0x7'));var sox=require(_0xd43f('0x8'));var csv=require(_0xd43f('0x9'));var ejs=require(_0xd43f('0xa'));var fs=require('fs');var fs_extra=require(_0xd43f('0xb'));var _=require(_0xd43f('0xc'));var squel=require(_0xd43f('0xd'));var crypto=require(_0xd43f('0xe'));var jsforce=require(_0xd43f('0xf'));var deskjs=require(_0xd43f('0x10'));var toCsv=require('to-csv');var querystring=require(_0xd43f('0x11'));var Papa=require(_0xd43f('0x12'));var Redis=require(_0xd43f('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xd43f('0x14'));var as=require(_0xd43f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd43f('0x16'))(_0xd43f('0x17'));var utils=require(_0xd43f('0x18'));var config=require(_0xd43f('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3be74e,_0xed42ff){_0xed42ff=_0xed42ff||0xcc;return function(_0x5b90a7){if(_0x5b90a7){return _0x3be74e[_0xd43f('0x1a')](_0xed42ff);}return _0x3be74e['status'](_0xed42ff)['end']();};}function respondWithResult(_0x28fe2d,_0x12bd82){_0x12bd82=_0x12bd82||0xc8;return function(_0x568087){if(_0x568087){return _0x28fe2d[_0xd43f('0x1b')](_0x12bd82)[_0xd43f('0x1c')](_0x568087);}};}function respondWithFilteredResult(_0x54f136,_0x229f81){return function(_0x351c9c){if(_0x351c9c){var _0x10f584=typeof _0x229f81[_0xd43f('0x1d')]===_0xd43f('0x1e')&&typeof _0x229f81['limit']==='undefined';var _0x5c03a6=_0x351c9c[_0xd43f('0x1f')];var _0x22d86f=_0x10f584?0x0:_0x229f81[_0xd43f('0x1d')];var _0x2e2396=_0x10f584?_0x351c9c['count']:_0x229f81[_0xd43f('0x1d')]+_0x229f81[_0xd43f('0x20')];var _0x263e9a;if(_0x2e2396>=_0x5c03a6){_0x2e2396=_0x5c03a6;_0x263e9a=0xc8;}else{_0x263e9a=0xce;}_0x54f136[_0xd43f('0x1b')](_0x263e9a);return _0x54f136[_0xd43f('0x21')]('Content-Range',_0x22d86f+'-'+_0x2e2396+'/'+_0x5c03a6)[_0xd43f('0x1c')](_0x351c9c);}return null;};}function patchUpdates(_0x5bae9e){return function(_0x1ad9d3){try{jsonpatch['apply'](_0x1ad9d3,_0x5bae9e,!![]);}catch(_0x1ce702){return BPromise[_0xd43f('0x22')](_0x1ce702);}return _0x1ad9d3['save']();};}function saveUpdates(_0x37da4a,_0x1c79b8){return function(_0x15a7d9){if(_0x15a7d9){return _0x15a7d9['update'](_0x37da4a)[_0xd43f('0x23')](function(_0x51c68c){return _0x51c68c;});}return null;};}function removeEntity(_0x3ff3dc,_0x4646c2){return function(_0x1bf18d){if(_0x1bf18d){return _0x1bf18d[_0xd43f('0x24')]()[_0xd43f('0x23')](function(){_0x3ff3dc[_0xd43f('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3cf19f,_0x4750c3){return function(_0x30d7a3){if(!_0x30d7a3){_0x3cf19f[_0xd43f('0x1a')](0x194);}return _0x30d7a3;};}function handleError(_0x3381b6,_0x2f7769){_0x2f7769=_0x2f7769||0x1f4;return function(_0x2df5b4){logger[_0xd43f('0x25')](_0x2df5b4[_0xd43f('0x26')]);if(_0x2df5b4[_0xd43f('0x27')]){delete _0x2df5b4['name'];}_0x3381b6[_0xd43f('0x1b')](_0x2f7769)[_0xd43f('0x28')](_0x2df5b4);};}exports[_0xd43f('0x29')]=function(_0x1215cf,_0x82103b){var _0x30d1dc={'raw':!![],'where':{'id':_0x1215cf[_0xd43f('0x2a')]['id']}},_0x4efdb5={};_0x4efdb5[_0xd43f('0x2b')]=_[_0xd43f('0x2c')](db[_0xd43f('0x2d')][_0xd43f('0x2e')]);_0x4efdb5[_0xd43f('0x2f')]=_[_0xd43f('0x2c')](_0x1215cf[_0xd43f('0x2f')]);_0x4efdb5[_0xd43f('0x30')]=_['intersection'](_0x4efdb5[_0xd43f('0x2b')],_0x4efdb5[_0xd43f('0x2f')]);_0x30d1dc['attributes']=_[_0xd43f('0x31')](_0x4efdb5['model'],qs[_0xd43f('0x32')](_0x1215cf['query'][_0xd43f('0x32')]));_0x30d1dc['attributes']=_0x30d1dc[_0xd43f('0x33')]['length']?_0x30d1dc[_0xd43f('0x33')]:_0x4efdb5[_0xd43f('0x2b')];if(_0x1215cf['query'][_0xd43f('0x34')]){_0x30d1dc[_0xd43f('0x35')]=[{'all':!![]}];}_0x30d1dc=_[_0xd43f('0x36')]({},_0x30d1dc,_0x1215cf[_0xd43f('0x37')]);return db[_0xd43f('0x2d')][_0xd43f('0x38')](_0x30d1dc)['then'](handleEntityNotFound(_0x82103b,null))[_0xd43f('0x23')](respondWithResult(_0x82103b,null))[_0xd43f('0x39')](handleError(_0x82103b,null));};exports['update']=function(_0x12f22f,_0x15759d){if(_0x12f22f[_0xd43f('0x3a')]['id']){delete _0x12f22f[_0xd43f('0x3a')]['id'];}return db[_0xd43f('0x2d')]['find']({'where':{'id':_0x12f22f[_0xd43f('0x2a')]['id']}})['then'](handleEntityNotFound(_0x15759d,null))[_0xd43f('0x23')](saveUpdates(_0x12f22f[_0xd43f('0x3a')],null))[_0xd43f('0x23')](respondWithResult(_0x15759d,null))[_0xd43f('0x39')](handleError(_0x15759d,null));};exports[_0xd43f('0x24')]=function(_0x400fa5,_0x4b6608){return db[_0xd43f('0x2d')][_0xd43f('0x38')]({'where':{'id':_0x400fa5['params']['id']}})[_0xd43f('0x23')](handleEntityNotFound(_0x4b6608,null))[_0xd43f('0x23')](removeEntity(_0x4b6608,null))[_0xd43f('0x39')](handleError(_0x4b6608,null));};
\ No newline at end of file
+var _0x3402=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','update','then','error','stack','name','send','show','params','keys','ChatApplication','rawAttributes','query','filters','intersection','model','attributes','fields','includeAll','include','merge','options','find','catch','body','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x512e9a,_0x10b047){var _0x261608=function(_0x230334){while(--_0x230334){_0x512e9a['push'](_0x512e9a['shift']());}};_0x261608(++_0x10b047);}(_0x3402,0x1f0));var _0x2340=function(_0x35db41,_0x56bfc8){_0x35db41=_0x35db41-0x0;var _0x5328cf=_0x3402[_0x35db41];return _0x5328cf;};'use strict';var emlformat=require(_0x2340('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2340('0x1'));var jsonpatch=require(_0x2340('0x2'));var rp=require(_0x2340('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2340('0x4'));var util=require(_0x2340('0x5'));var path=require(_0x2340('0x6'));var sox=require(_0x2340('0x7'));var csv=require(_0x2340('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2340('0x9'));var squel=require(_0x2340('0xa'));var crypto=require(_0x2340('0xb'));var jsforce=require(_0x2340('0xc'));var deskjs=require(_0x2340('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2340('0xe'));var Papa=require(_0x2340('0xf'));var Redis=require(_0x2340('0x10'));var authService=require(_0x2340('0x11'));var qs=require(_0x2340('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2340('0x13'));var logger=require(_0x2340('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x2340('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2340('0x16'))['db'];function respondWithStatusCode(_0x5cc478,_0x35baa8){_0x35baa8=_0x35baa8||0xcc;return function(_0x42c154){if(_0x42c154){return _0x5cc478[_0x2340('0x17')](_0x35baa8);}return _0x5cc478[_0x2340('0x18')](_0x35baa8)[_0x2340('0x19')]();};}function respondWithResult(_0x7e51a5,_0xcab834){_0xcab834=_0xcab834||0xc8;return function(_0x491814){if(_0x491814){return _0x7e51a5[_0x2340('0x18')](_0xcab834)[_0x2340('0x1a')](_0x491814);}};}function respondWithFilteredResult(_0x3642e0,_0x5aff27){return function(_0x173678){if(_0x173678){var _0x119a05=typeof _0x5aff27[_0x2340('0x1b')]===_0x2340('0x1c')&&typeof _0x5aff27['limit']===_0x2340('0x1c');var _0x3ce1fa=_0x173678[_0x2340('0x1d')];var _0x9723dd=_0x119a05?0x0:_0x5aff27[_0x2340('0x1b')];var _0x51524b=_0x119a05?_0x173678['count']:_0x5aff27[_0x2340('0x1b')]+_0x5aff27[_0x2340('0x1e')];var _0x434a59;if(_0x51524b>=_0x3ce1fa){_0x51524b=_0x3ce1fa;_0x434a59=0xc8;}else{_0x434a59=0xce;}_0x3642e0['status'](_0x434a59);return _0x3642e0['set'](_0x2340('0x1f'),_0x9723dd+'-'+_0x51524b+'/'+_0x3ce1fa)[_0x2340('0x1a')](_0x173678);}return null;};}function patchUpdates(_0x1b3822){return function(_0xb2b57a){try{jsonpatch['apply'](_0xb2b57a,_0x1b3822,!![]);}catch(_0x567de5){return BPromise[_0x2340('0x20')](_0x567de5);}return _0xb2b57a['save']();};}function saveUpdates(_0x3f9f54,_0x44622a){return function(_0x28a812){if(_0x28a812){return _0x28a812[_0x2340('0x21')](_0x3f9f54)[_0x2340('0x22')](function(_0x32e08b){return _0x32e08b;});}return null;};}function removeEntity(_0x8f1d89,_0x130944){return function(_0x49c77e){if(_0x49c77e){return _0x49c77e['destroy']()[_0x2340('0x22')](function(){_0x8f1d89[_0x2340('0x18')](0xcc)[_0x2340('0x19')]();});}};}function handleEntityNotFound(_0x44680e,_0x320c1b){return function(_0x27e903){if(!_0x27e903){_0x44680e[_0x2340('0x17')](0x194);}return _0x27e903;};}function handleError(_0x5b61a7,_0x3fe07f){_0x3fe07f=_0x3fe07f||0x1f4;return function(_0x46d5cb){logger[_0x2340('0x23')](_0x46d5cb[_0x2340('0x24')]);if(_0x46d5cb[_0x2340('0x25')]){delete _0x46d5cb[_0x2340('0x25')];}_0x5b61a7[_0x2340('0x18')](_0x3fe07f)[_0x2340('0x26')](_0x46d5cb);};}exports[_0x2340('0x27')]=function(_0x229a00,_0x360d59){var _0x5e697b={'raw':!![],'where':{'id':_0x229a00[_0x2340('0x28')]['id']}},_0x336ffe={};_0x336ffe['model']=_[_0x2340('0x29')](db[_0x2340('0x2a')][_0x2340('0x2b')]);_0x336ffe[_0x2340('0x2c')]=_[_0x2340('0x29')](_0x229a00['query']);_0x336ffe[_0x2340('0x2d')]=_[_0x2340('0x2e')](_0x336ffe[_0x2340('0x2f')],_0x336ffe[_0x2340('0x2c')]);_0x5e697b[_0x2340('0x30')]=_['intersection'](_0x336ffe[_0x2340('0x2f')],qs[_0x2340('0x31')](_0x229a00[_0x2340('0x2c')]['fields']));_0x5e697b[_0x2340('0x30')]=_0x5e697b[_0x2340('0x30')]['length']?_0x5e697b[_0x2340('0x30')]:_0x336ffe[_0x2340('0x2f')];if(_0x229a00['query'][_0x2340('0x32')]){_0x5e697b[_0x2340('0x33')]=[{'all':!![]}];}_0x5e697b=_[_0x2340('0x34')]({},_0x5e697b,_0x229a00[_0x2340('0x35')]);return db[_0x2340('0x2a')][_0x2340('0x36')](_0x5e697b)['then'](handleEntityNotFound(_0x360d59,null))[_0x2340('0x22')](respondWithResult(_0x360d59,null))[_0x2340('0x37')](handleError(_0x360d59,null));};exports[_0x2340('0x21')]=function(_0x48b7dc,_0x1c8ea9){if(_0x48b7dc[_0x2340('0x38')]['id']){delete _0x48b7dc[_0x2340('0x38')]['id'];}return db[_0x2340('0x2a')][_0x2340('0x36')]({'where':{'id':_0x48b7dc[_0x2340('0x28')]['id']}})[_0x2340('0x22')](handleEntityNotFound(_0x1c8ea9,null))[_0x2340('0x22')](saveUpdates(_0x48b7dc[_0x2340('0x38')],null))[_0x2340('0x22')](respondWithResult(_0x1c8ea9,null))[_0x2340('0x37')](handleError(_0x1c8ea9,null));};exports['destroy']=function(_0x14da4a,_0x5b4f71){return db['ChatApplication'][_0x2340('0x36')]({'where':{'id':_0x14da4a['params']['id']}})[_0x2340('0x22')](handleEntityNotFound(_0x5b4f71,null))[_0x2340('0x22')](removeEntity(_0x5b4f71,null))['catch'](handleError(_0x5b4f71,null));};
\ No newline at end of file
index ed78dea..1b3ffc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0590=['define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','./chatApplication.attributes','exports'];(function(_0x239cee,_0xf786c8){var _0x4fe6b6=function(_0x2d6a20){while(--_0x2d6a20){_0x239cee['push'](_0x239cee['shift']());}};_0x4fe6b6(++_0xf786c8);}(_0x0590,0x1d3));var _0x0059=function(_0x5fe8c3,_0x112516){_0x5fe8c3=_0x5fe8c3-0x0;var _0x3c7559=_0x0590[_0x5fe8c3];return _0x3c7559;};'use strict';var _=require(_0x0059('0x0'));var util=require(_0x0059('0x1'));var logger=require('../../config/logger')(_0x0059('0x2'));var moment=require(_0x0059('0x3'));var BPromise=require(_0x0059('0x4'));var rp=require(_0x0059('0x5'));var fs=require('fs');var path=require(_0x0059('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0059('0x7'));module[_0x0059('0x8')]=function(_0x2df387,_0x4e0aa3){return _0x2df387[_0x0059('0x9')](_0x0059('0xa'),attributes,{'tableName':_0x0059('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0059('0xc'),'collate':_0x0059('0xd')});};
\ No newline at end of file
+var _0xa8f0=['./chatApplication.attributes','exports','define','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x44fad9,_0x181b2c){var _0x572646=function(_0xfda931){while(--_0xfda931){_0x44fad9['push'](_0x44fad9['shift']());}};_0x572646(++_0x181b2c);}(_0xa8f0,0x123));var _0x0a8f=function(_0x514038,_0x450ef3){_0x514038=_0x514038-0x0;var _0x589720=_0xa8f0[_0x514038];return _0x589720;};'use strict';var _=require(_0x0a8f('0x0'));var util=require(_0x0a8f('0x1'));var logger=require(_0x0a8f('0x2'))('api');var moment=require(_0x0a8f('0x3'));var BPromise=require(_0x0a8f('0x4'));var rp=require(_0x0a8f('0x5'));var fs=require('fs');var path=require(_0x0a8f('0x6'));var rimraf=require(_0x0a8f('0x7'));var config=require(_0x0a8f('0x8'));var attributes=require(_0x0a8f('0x9'));module[_0x0a8f('0xa')]=function(_0x22128b,_0x539811){return _0x22128b[_0x0a8f('0xb')]('ChatApplication',attributes,{'tableName':_0x0a8f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0a8f('0xd'),'collate':_0x0a8f('0xe')});};
\ No newline at end of file
index 0348b8d..9a84cfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x414b=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatApplication,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x1c3430,_0x5cf19f){var _0x255c4b=function(_0x402307){while(--_0x402307){_0x1c3430['push'](_0x1c3430['shift']());}};_0x255c4b(++_0x5cf19f);}(_0x414b,0x14b));var _0xb414=function(_0x2e1f9e,_0x2e5322){_0x2e1f9e=_0x2e1f9e-0x0;var _0x40d80a=_0x414b[_0x2e1f9e];return _0x40d80a;};'use strict';var _=require(_0xb414('0x0'));var util=require('util');var moment=require(_0xb414('0x1'));var BPromise=require(_0xb414('0x2'));var rs=require(_0xb414('0x3'));var fs=require('fs');var Redis=require(_0xb414('0x4'));var db=require(_0xb414('0x5'))['db'];var utils=require(_0xb414('0x6'));var logger=require(_0xb414('0x7'))(_0xb414('0x8'));var config=require(_0xb414('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb414('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf5656d,_0x232039,_0x2c29e9){return new BPromise(function(_0x594cf5,_0x1a94d5){return client[_0xb414('0xb')](_0xf5656d,_0x2c29e9)[_0xb414('0xc')](function(_0x19a902){logger[_0xb414('0xd')]('ChatApplication,\x20%s,\x20%s',_0x232039,_0xb414('0xe'));logger[_0xb414('0xf')](_0xb414('0x10'),_0x232039,_0xb414('0xe'),JSON[_0xb414('0x11')](_0x19a902));if(_0x19a902[_0xb414('0x12')]){if(_0x19a902[_0xb414('0x12')][_0xb414('0x13')]===0x1f4){logger[_0xb414('0x12')](_0xb414('0x14'),_0x232039,_0x19a902[_0xb414('0x12')]['message']);return _0x1a94d5(_0x19a902[_0xb414('0x12')]['message']);}logger[_0xb414('0x12')]('ChatApplication,\x20%s,\x20%s',_0x232039,_0x19a902[_0xb414('0x12')][_0xb414('0x15')]);return _0x594cf5(_0x19a902['error'][_0xb414('0x15')]);}else{logger[_0xb414('0xd')](_0xb414('0x14'),_0x232039,'request\x20sent');_0x594cf5(_0x19a902[_0xb414('0x16')][_0xb414('0x15')]);}})[_0xb414('0x17')](function(_0x5ee7d8){logger[_0xb414('0x12')]('ChatApplication,\x20%s,\x20%s',_0x232039,_0x5ee7d8);_0x1a94d5(_0x5ee7d8);});});}
\ No newline at end of file
+var _0xaedc=['debug','stringify','error','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0xaedc,0x1be));var _0xcaed=function(_0x339fef,_0x4b15e3){_0x339fef=_0x339fef-0x0;var _0x7036b=_0xaedc[_0x339fef];return _0x7036b;};'use strict';var _=require('lodash');var util=require(_0xcaed('0x0'));var moment=require(_0xcaed('0x1'));var BPromise=require(_0xcaed('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcaed('0x3'));var db=require(_0xcaed('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xcaed('0x5'))(_0xcaed('0x6'));var config=require(_0xcaed('0x7'));var jayson=require(_0xcaed('0x8'));var client=jayson[_0xcaed('0x9')][_0xcaed('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x285271,_0x540ef2,_0x1a033e){return new BPromise(function(_0x25415e,_0x49ed4a){return client[_0xcaed('0xb')](_0x285271,_0x1a033e)[_0xcaed('0xc')](function(_0x4622a3){logger[_0xcaed('0xd')](_0xcaed('0xe'),_0x540ef2,_0xcaed('0xf'));logger[_0xcaed('0x10')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x540ef2,_0xcaed('0xf'),JSON[_0xcaed('0x11')](_0x4622a3));if(_0x4622a3['error']){if(_0x4622a3[_0xcaed('0x12')]['code']===0x1f4){logger[_0xcaed('0x12')](_0xcaed('0xe'),_0x540ef2,_0x4622a3[_0xcaed('0x12')][_0xcaed('0x13')]);return _0x49ed4a(_0x4622a3[_0xcaed('0x12')][_0xcaed('0x13')]);}logger[_0xcaed('0x12')](_0xcaed('0xe'),_0x540ef2,_0x4622a3[_0xcaed('0x12')][_0xcaed('0x13')]);return _0x25415e(_0x4622a3[_0xcaed('0x12')]['message']);}else{logger[_0xcaed('0xd')](_0xcaed('0xe'),_0x540ef2,_0xcaed('0xf'));_0x25415e(_0x4622a3[_0xcaed('0x14')][_0xcaed('0x13')]);}})[_0xcaed('0x15')](function(_0x5c0f87){logger['error'](_0xcaed('0xe'),_0x540ef2,_0x5c0f87);_0x49ed4a(_0x5c0f87);});});}
\ No newline at end of file
index 1c31e1c..de90341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x239c=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','delete'];(function(_0x4af856,_0x3990fd){var _0xdb6d15=function(_0x45af83){while(--_0x45af83){_0x4af856['push'](_0x4af856['shift']());}};_0xdb6d15(++_0x3990fd);}(_0x239c,0x146));var _0xc239=function(_0x1e526c,_0x43a2ad){_0x1e526c=_0x1e526c-0x0;var _0x210c5a=_0x239c[_0x1e526c];return _0x210c5a;};'use strict';var multer=require(_0xc239('0x0'));var util=require('util');var path=require(_0xc239('0x1'));var timeout=require(_0xc239('0x2'));var express=require(_0xc239('0x3'));var router=express[_0xc239('0x4')]();var fs_extra=require(_0xc239('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc239('0x6'));var config=require(_0xc239('0x7'));var controller=require(_0xc239('0x8'));router[_0xc239('0x9')](_0xc239('0xa'),auth[_0xc239('0xb')](),controller[_0xc239('0xc')]);router[_0xc239('0xd')]('/:id',auth[_0xc239('0xb')](),controller[_0xc239('0xe')]);router[_0xc239('0xf')](_0xc239('0xa'),auth[_0xc239('0xb')](),controller[_0xc239('0x10')]);module[_0xc239('0x11')]=router;
\ No newline at end of file
+var _0xe9ad=['../../components/auth/service','../../config/environment','./chatApplication.controller','get','/:id','show','put','isAuthenticated','delete','destroy','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x449491,_0x1b971f){var _0x127193=function(_0x5d309d){while(--_0x5d309d){_0x449491['push'](_0x449491['shift']());}};_0x127193(++_0x1b971f);}(_0xe9ad,0x15a));var _0xde9a=function(_0x32917a,_0x3559ea){_0x32917a=_0x32917a-0x0;var _0x1881e1=_0xe9ad[_0x32917a];return _0x1881e1;};'use strict';var multer=require('multer');var util=require(_0xde9a('0x0'));var path=require(_0xde9a('0x1'));var timeout=require(_0xde9a('0x2'));var express=require(_0xde9a('0x3'));var router=express[_0xde9a('0x4')]();var fs_extra=require(_0xde9a('0x5'));var auth=require(_0xde9a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xde9a('0x7'));var controller=require(_0xde9a('0x8'));router[_0xde9a('0x9')](_0xde9a('0xa'),auth['isAuthenticated'](),controller[_0xde9a('0xb')]);router[_0xde9a('0xc')](_0xde9a('0xa'),auth[_0xde9a('0xd')](),controller['update']);router[_0xde9a('0xe')](_0xde9a('0xa'),auth['isAuthenticated'](),controller[_0xde9a('0xf')]);module['exports']=router;
\ No newline at end of file
index 1cac8a3..c3aeef8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf17a=['STRING','BOOLEAN','sequelize','exports'];(function(_0x19b3f9,_0xade753){var _0x18c3f6=function(_0x21439f){while(--_0x21439f){_0x19b3f9['push'](_0x19b3f9['shift']());}};_0x18c3f6(++_0xade753);}(_0xf17a,0x136));var _0xaf17=function(_0x486be6,_0x9e907b){_0x486be6=_0x486be6-0x0;var _0x1181e4=_0xf17a[_0x486be6];return _0x1181e4;};'use strict';var Sequelize=require(_0xaf17('0x0'));module[_0xaf17('0x1')]={'name':{'type':Sequelize[_0xaf17('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xaf17('0x2')]},'write':{'type':Sequelize[_0xaf17('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3b40=['STRING','BOOLEAN','exports'];(function(_0x6eff5b,_0x3976fa){var _0x40af9f=function(_0x43f5d9){while(--_0x43f5d9){_0x6eff5b['push'](_0x6eff5b['shift']());}};_0x40af9f(++_0x3976fa);}(_0x3b40,0x13a));var _0x03b4=function(_0x4e5cb1,_0x142e36){_0x4e5cb1=_0x4e5cb1-0x0;var _0x31e419=_0x3b40[_0x4e5cb1];return _0x31e419;};'use strict';var Sequelize=require('sequelize');module[_0x03b4('0x0')]={'name':{'type':Sequelize[_0x03b4('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x03b4('0x1')]},'write':{'type':Sequelize[_0x03b4('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index f1b4471..d79425e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31df=['getUnread','ChatInternalMessage','user','addMembers','ids','omit','getMembers','User','pick','removeMembers','ChatGroupId','getMessages','findOne','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','socket.io-emitter','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','include','ChatGroup','findAll','rows','catch','rawAttributes','create','body','find','params','describe'];(function(_0x25efa6,_0x387223){var _0x384a62=function(_0x568790){while(--_0x568790){_0x25efa6['push'](_0x25efa6['shift']());}};_0x384a62(++_0x387223);}(_0x31df,0x1f1));var _0xf31d=function(_0x59b380,_0x4e3151){_0x59b380=_0x59b380-0x0;var _0x1b8bcc=_0x31df[_0x59b380];return _0x1b8bcc;};'use strict';var emlformat=require(_0xf31d('0x0'));var rimraf=require(_0xf31d('0x1'));var zipdir=require(_0xf31d('0x2'));var jsonpatch=require(_0xf31d('0x3'));var rp=require(_0xf31d('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf31d('0x5'));var util=require(_0xf31d('0x6'));var path=require(_0xf31d('0x7'));var sox=require(_0xf31d('0x8'));var csv=require(_0xf31d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf31d('0xa'));var _=require('lodash');var squel=require(_0xf31d('0xb'));var crypto=require(_0xf31d('0xc'));var jsforce=require(_0xf31d('0xd'));var deskjs=require(_0xf31d('0xe'));var toCsv=require(_0xf31d('0x9'));var querystring=require(_0xf31d('0xf'));var Papa=require('papaparse');var Redis=require(_0xf31d('0x10'));var authService=require(_0xf31d('0x11'));var qs=require(_0xf31d('0x12'));var as=require(_0xf31d('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf31d('0x14'))('api');var utils=require(_0xf31d('0x15'));var config=require(_0xf31d('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xf31d('0x17'))['db'];config['redis']=_['defaults'](config[_0xf31d('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xf31d('0x19'))(new Redis(config[_0xf31d('0x18')]));require('./chatGroup.socket')['register'](socket);function respondWithStatusCode(_0x2736bb,_0x389adc){_0x389adc=_0x389adc||0xcc;return function(_0x41c057){if(_0x41c057){return _0x2736bb[_0xf31d('0x1a')](_0x389adc);}return _0x2736bb[_0xf31d('0x1b')](_0x389adc)[_0xf31d('0x1c')]();};}function respondWithResult(_0x274f9d,_0x491dbb){_0x491dbb=_0x491dbb||0xc8;return function(_0x4cd1c2){if(_0x4cd1c2){return _0x274f9d[_0xf31d('0x1b')](_0x491dbb)[_0xf31d('0x1d')](_0x4cd1c2);}};}function respondWithFilteredResult(_0x437d4b,_0x45ccbd){return function(_0x4beada){if(_0x4beada){var _0xc24f72=typeof _0x45ccbd[_0xf31d('0x1e')]===_0xf31d('0x1f')&&typeof _0x45ccbd['limit']===_0xf31d('0x1f');var _0x220936=_0x4beada[_0xf31d('0x20')];var _0x4441e4=_0xc24f72?0x0:_0x45ccbd[_0xf31d('0x1e')];var _0x4309ef=_0xc24f72?_0x4beada[_0xf31d('0x20')]:_0x45ccbd[_0xf31d('0x1e')]+_0x45ccbd[_0xf31d('0x21')];var _0x1f9a74;if(_0x4309ef>=_0x220936){_0x4309ef=_0x220936;_0x1f9a74=0xc8;}else{_0x1f9a74=0xce;}_0x437d4b[_0xf31d('0x1b')](_0x1f9a74);return _0x437d4b[_0xf31d('0x22')](_0xf31d('0x23'),_0x4441e4+'-'+_0x4309ef+'/'+_0x220936)['json'](_0x4beada);}return null;};}function patchUpdates(_0x412709){return function(_0x5436f4){try{jsonpatch[_0xf31d('0x24')](_0x5436f4,_0x412709,!![]);}catch(_0x13cc74){return BPromise[_0xf31d('0x25')](_0x13cc74);}return _0x5436f4[_0xf31d('0x26')]();};}function saveUpdates(_0x4538f2,_0x405bb3){return function(_0x1227a9){if(_0x1227a9){return _0x1227a9[_0xf31d('0x27')](_0x4538f2)[_0xf31d('0x28')](function(_0x3ee078){return _0x3ee078;});}return null;};}function removeEntity(_0xb2f787,_0xc8fc13){return function(_0x3438e9){if(_0x3438e9){return _0x3438e9[_0xf31d('0x29')]()[_0xf31d('0x28')](function(){_0xb2f787['status'](0xcc)[_0xf31d('0x1c')]();});}};}function handleEntityNotFound(_0x108051,_0x4a9d43){return function(_0x4a8ec9){if(!_0x4a8ec9){_0x108051[_0xf31d('0x1a')](0x194);}return _0x4a8ec9;};}function handleError(_0x57e4ae,_0x17fbcd){_0x17fbcd=_0x17fbcd||0x1f4;return function(_0x5e0f8a){logger['error'](_0x5e0f8a[_0xf31d('0x2a')]);if(_0x5e0f8a[_0xf31d('0x2b')]){delete _0x5e0f8a['name'];}_0x57e4ae[_0xf31d('0x1b')](_0x17fbcd)[_0xf31d('0x2c')](_0x5e0f8a);};}exports[_0xf31d('0x2d')]=function(_0x1a3a0f,_0x2a59aa){var _0x4de393={},_0x130998={},_0x4dfe55={'count':0x0,'rows':[]};var _0xe82888=_[_0xf31d('0x2e')](db['ChatGroup']['rawAttributes'],function(_0x17a9b8){return{'name':_0x17a9b8[_0xf31d('0x2f')],'type':_0x17a9b8[_0xf31d('0x30')][_0xf31d('0x31')]};});_0x130998[_0xf31d('0x32')]=_[_0xf31d('0x2e')](_0xe82888,_0xf31d('0x2b'));_0x130998[_0xf31d('0x33')]=_[_0xf31d('0x34')](_0x1a3a0f[_0xf31d('0x33')]);_0x130998['filters']=_[_0xf31d('0x35')](_0x130998[_0xf31d('0x32')],_0x130998[_0xf31d('0x33')]);_0x4de393[_0xf31d('0x36')]=_[_0xf31d('0x35')](_0x130998[_0xf31d('0x32')],qs[_0xf31d('0x37')](_0x1a3a0f[_0xf31d('0x33')][_0xf31d('0x37')]));_0x4de393[_0xf31d('0x36')]=_0x4de393['attributes'][_0xf31d('0x38')]?_0x4de393[_0xf31d('0x36')]:_0x130998[_0xf31d('0x32')];if(!_0x1a3a0f[_0xf31d('0x33')][_0xf31d('0x39')](_0xf31d('0x3a'))){_0x4de393[_0xf31d('0x21')]=qs[_0xf31d('0x21')](_0x1a3a0f[_0xf31d('0x33')][_0xf31d('0x21')]);_0x4de393['offset']=qs[_0xf31d('0x1e')](_0x1a3a0f[_0xf31d('0x33')]['offset']);}_0x4de393[_0xf31d('0x3b')]=qs[_0xf31d('0x3c')](_0x1a3a0f[_0xf31d('0x33')][_0xf31d('0x3c')]);_0x4de393[_0xf31d('0x3d')]=qs[_0xf31d('0x3e')](_['pick'](_0x1a3a0f['query'],_0x130998['filters']),_0xe82888);if(_0x1a3a0f[_0xf31d('0x33')][_0xf31d('0x3f')]){_0x4de393[_0xf31d('0x3d')]=_['merge'](_0x4de393[_0xf31d('0x3d')],{'$or':_['map'](_0xe82888,function(_0x29fad6){if(_0x29fad6[_0xf31d('0x30')]!==_0xf31d('0x40')){var _0x100c70={};_0x100c70[_0x29fad6['name']]={'$like':'%'+_0x1a3a0f[_0xf31d('0x33')][_0xf31d('0x3f')]+'%'};return _0x100c70;}})});}_0x4de393=_[_0xf31d('0x41')]({},_0x4de393,_0x1a3a0f[_0xf31d('0x42')]);var _0x5203ce={'where':_0x4de393[_0xf31d('0x3d')]};return db['ChatGroup'][_0xf31d('0x20')](_0x5203ce)[_0xf31d('0x28')](function(_0x1be19e){_0x4dfe55[_0xf31d('0x20')]=_0x1be19e;if(_0x1a3a0f[_0xf31d('0x33')][_0xf31d('0x43')]){_0x4de393[_0xf31d('0x44')]=[{'all':!![]}];}return db[_0xf31d('0x45')][_0xf31d('0x46')](_0x4de393);})[_0xf31d('0x28')](function(_0xf95305){_0x4dfe55[_0xf31d('0x47')]=_0xf95305;return _0x4dfe55;})[_0xf31d('0x28')](respondWithFilteredResult(_0x2a59aa,_0x4de393))[_0xf31d('0x48')](handleError(_0x2a59aa,null));};exports['show']=function(_0x3bc22d,_0x285917){var _0xbb92ad={'raw':!![],'where':{'id':_0x3bc22d['params']['id']}},_0x266459={};_0x266459['model']=_['keys'](db['ChatGroup'][_0xf31d('0x49')]);_0x266459[_0xf31d('0x33')]=_['keys'](_0x3bc22d['query']);_0x266459[_0xf31d('0x3e')]=_[_0xf31d('0x35')](_0x266459[_0xf31d('0x32')],_0x266459[_0xf31d('0x33')]);_0xbb92ad[_0xf31d('0x36')]=_[_0xf31d('0x35')](_0x266459[_0xf31d('0x32')],qs['fields'](_0x3bc22d[_0xf31d('0x33')][_0xf31d('0x37')]));_0xbb92ad[_0xf31d('0x36')]=_0xbb92ad[_0xf31d('0x36')]['length']?_0xbb92ad[_0xf31d('0x36')]:_0x266459['model'];if(_0x3bc22d[_0xf31d('0x33')]['includeAll']){_0xbb92ad[_0xf31d('0x44')]=[{'all':!![]}];}_0xbb92ad=_[_0xf31d('0x41')]({},_0xbb92ad,_0x3bc22d[_0xf31d('0x42')]);return db[_0xf31d('0x45')]['find'](_0xbb92ad)['then'](handleEntityNotFound(_0x285917,null))[_0xf31d('0x28')](respondWithResult(_0x285917,null))[_0xf31d('0x48')](handleError(_0x285917,null));};exports['create']=function(_0x18c737,_0x1e0779){return db[_0xf31d('0x45')][_0xf31d('0x4a')](_0x18c737[_0xf31d('0x4b')],{})[_0xf31d('0x28')](respondWithResult(_0x1e0779,0xc9))[_0xf31d('0x48')](handleError(_0x1e0779,null));};exports[_0xf31d('0x27')]=function(_0x38f198,_0x2b10ea){if(_0x38f198[_0xf31d('0x4b')]['id']){delete _0x38f198['body']['id'];}return db['ChatGroup'][_0xf31d('0x4c')]({'where':{'id':_0x38f198[_0xf31d('0x4d')]['id']}})[_0xf31d('0x28')](handleEntityNotFound(_0x2b10ea,null))[_0xf31d('0x28')](saveUpdates(_0x38f198[_0xf31d('0x4b')],null))[_0xf31d('0x28')](respondWithResult(_0x2b10ea,null))['catch'](handleError(_0x2b10ea,null));};exports[_0xf31d('0x29')]=function(_0x3f5acb,_0x5f3e2b){return db[_0xf31d('0x45')]['find']({'where':{'id':_0x3f5acb[_0xf31d('0x4d')]['id']}})[_0xf31d('0x28')](handleEntityNotFound(_0x5f3e2b,null))[_0xf31d('0x28')](removeEntity(_0x5f3e2b,null))[_0xf31d('0x48')](handleError(_0x5f3e2b,null));};exports['describe']=function(_0x2cb7dd,_0x42ee7c){return db['ChatGroup'][_0xf31d('0x4e')]()['then'](respondWithResult(_0x42ee7c,null))[_0xf31d('0x48')](handleError(_0x42ee7c,null));};exports[_0xf31d('0x4f')]=function(_0x502bbd,_0x31fe38,_0xbe9ce3){return db[_0xf31d('0x50')][_0xf31d('0x20')]({'where':{'ChatGroupId':_0x502bbd[_0xf31d('0x4d')]['id'],'ToId':_0x502bbd[_0xf31d('0x51')]['id'],'read':![]}})['then'](function(_0x4020f3){return{'id':_['toInteger'](_0x502bbd[_0xf31d('0x4d')]['id']),'count':_0x4020f3};})[_0xf31d('0x28')](respondWithResult(_0x31fe38,null))[_0xf31d('0x48')](handleError(_0x31fe38,null));};exports[_0xf31d('0x52')]=function(_0x928420,_0x5129ac,_0xbea01e){return db[_0xf31d('0x45')][_0xf31d('0x4c')]({'where':{'id':_0x928420[_0xf31d('0x4d')]['id']}})[_0xf31d('0x28')](handleEntityNotFound(_0x5129ac,null))[_0xf31d('0x28')](function(_0x4b6199){if(_0x4b6199){return _0x4b6199[_0xf31d('0x52')](_0x928420[_0xf31d('0x4b')][_0xf31d('0x53')],_[_0xf31d('0x54')](_0x928420[_0xf31d('0x4b')],[_0xf31d('0x53'),'id'])||{});}})[_0xf31d('0x28')](respondWithResult(_0x5129ac,null))[_0xf31d('0x48')](handleError(_0x5129ac,null));};exports[_0xf31d('0x55')]=function(_0x3bb815,_0x3a9906,_0x9a94d8){var _0x54bd38={};var _0x151610={};var _0x177eb5;var _0x8c98be;return db[_0xf31d('0x45')]['findOne']({'where':{'id':_0x3bb815[_0xf31d('0x4d')]['id']}})[_0xf31d('0x28')](handleEntityNotFound(_0x3a9906,null))['then'](function(_0x237e54){if(_0x237e54){_0x177eb5=_0x237e54;_0x151610[_0xf31d('0x32')]=_[_0xf31d('0x34')](db[_0xf31d('0x56')]['rawAttributes']);_0x151610['query']=_['keys'](_0x3bb815[_0xf31d('0x33')]);_0x151610[_0xf31d('0x3e')]=_[_0xf31d('0x35')](_0x151610[_0xf31d('0x32')],_0x151610['query']);_0x54bd38[_0xf31d('0x36')]=_[_0xf31d('0x35')](_0x151610[_0xf31d('0x32')],qs[_0xf31d('0x37')](_0x3bb815[_0xf31d('0x33')][_0xf31d('0x37')]));_0x54bd38[_0xf31d('0x36')]=_0x54bd38[_0xf31d('0x36')][_0xf31d('0x38')]?_0x54bd38[_0xf31d('0x36')]:_0x151610['model'];_0x54bd38[_0xf31d('0x3b')]=qs['sort'](_0x3bb815[_0xf31d('0x33')][_0xf31d('0x3c')]);_0x54bd38[_0xf31d('0x3d')]=qs[_0xf31d('0x3e')](_[_0xf31d('0x57')](_0x3bb815[_0xf31d('0x33')],_0x151610['filters']));if(_0x3bb815[_0xf31d('0x33')][_0xf31d('0x3f')]){_0x54bd38[_0xf31d('0x3d')]=_[_0xf31d('0x41')](_0x54bd38[_0xf31d('0x3d')],{'$or':_[_0xf31d('0x2e')](_0x54bd38[_0xf31d('0x36')],function(_0x3549b9){var _0x374a7e={};_0x374a7e[_0x3549b9]={'$like':'%'+_0x3bb815[_0xf31d('0x33')][_0xf31d('0x3f')]+'%'};return _0x374a7e;})});}_0x54bd38=_[_0xf31d('0x41')]({},_0x54bd38,_0x3bb815[_0xf31d('0x42')]);return _0x177eb5[_0xf31d('0x55')](_0x54bd38);}})[_0xf31d('0x28')](function(_0x476b9b){if(_0x476b9b){_0x8c98be=_0x476b9b['length'];if(!_0x3bb815[_0xf31d('0x33')][_0xf31d('0x39')](_0xf31d('0x3a'))){_0x54bd38[_0xf31d('0x21')]=qs[_0xf31d('0x21')](_0x3bb815[_0xf31d('0x33')][_0xf31d('0x21')]);_0x54bd38['offset']=qs[_0xf31d('0x1e')](_0x3bb815[_0xf31d('0x33')][_0xf31d('0x1e')]);}return _0x177eb5[_0xf31d('0x55')](_0x54bd38);}})[_0xf31d('0x28')](function(_0x378b34){if(_0x378b34){return _0x378b34?{'count':_0x8c98be,'rows':_0x378b34}:null;}})['then'](respondWithResult(_0x3a9906,null))[_0xf31d('0x48')](handleError(_0x3a9906,null));};exports[_0xf31d('0x58')]=function(_0x12ec61,_0x1bd22c,_0xb62efd){return db[_0xf31d('0x45')][_0xf31d('0x4c')]({'where':{'id':_0x12ec61[_0xf31d('0x4d')]['id']}})[_0xf31d('0x28')](handleEntityNotFound(_0x1bd22c,null))[_0xf31d('0x28')](function(_0x26d86e){if(_0x26d86e){return _0x26d86e[_0xf31d('0x58')](_0x12ec61[_0xf31d('0x33')]['ids']);}})[_0xf31d('0x28')](respondWithStatusCode(_0x1bd22c,null))[_0xf31d('0x48')](handleError(_0x1bd22c,null));};exports['addMessage']=function(_0x202701,_0x3d8546,_0x282106){if(_0x202701[_0xf31d('0x4b')]['id']){delete _0x202701['body']['id'];}return db[_0xf31d('0x45')][_0xf31d('0x4c')]({'where':{'id':_0x202701[_0xf31d('0x4d')]['id']}})[_0xf31d('0x28')](handleEntityNotFound(_0x3d8546,null))['then'](function(_0x20dbca){if(_0x20dbca){_0x202701[_0xf31d('0x4b')][_0xf31d('0x59')]=_0x20dbca['id'];return db[_0xf31d('0x50')][_0xf31d('0x4a')](_0x202701['body']);}})[_0xf31d('0x28')](respondWithResult(_0x3d8546,null))[_0xf31d('0x48')](handleError(_0x3d8546,null));};exports[_0xf31d('0x5a')]=function(_0xd8dc8c,_0x4c2524,_0x12554d){var _0x5007b7={};var _0x328873={};var _0xd01c5a;var _0x33cb5a;return db[_0xf31d('0x45')][_0xf31d('0x5b')]({'where':{'id':_0xd8dc8c[_0xf31d('0x4d')]['id']}})[_0xf31d('0x28')](handleEntityNotFound(_0x4c2524,null))[_0xf31d('0x28')](function(_0x27d53b){if(_0x27d53b){_0xd01c5a=_0x27d53b;_0x328873[_0xf31d('0x32')]=_[_0xf31d('0x34')](db[_0xf31d('0x50')][_0xf31d('0x49')]);_0x328873[_0xf31d('0x33')]=_[_0xf31d('0x34')](_0xd8dc8c[_0xf31d('0x33')]);_0x328873[_0xf31d('0x3e')]=_[_0xf31d('0x35')](_0x328873[_0xf31d('0x32')],_0x328873[_0xf31d('0x33')]);_0x5007b7[_0xf31d('0x36')]=_[_0xf31d('0x35')](_0x328873['model'],qs['fields'](_0xd8dc8c[_0xf31d('0x33')]['fields']));_0x5007b7[_0xf31d('0x36')]=_0x5007b7[_0xf31d('0x36')][_0xf31d('0x38')]?_0x5007b7[_0xf31d('0x36')]:_0x328873[_0xf31d('0x32')];_0x5007b7[_0xf31d('0x3b')]=qs['sort'](_0xd8dc8c[_0xf31d('0x33')]['sort']);_0x5007b7['where']=qs[_0xf31d('0x3e')](_[_0xf31d('0x57')](_0xd8dc8c[_0xf31d('0x33')],_0x328873[_0xf31d('0x3e')]));if(_0xd8dc8c[_0xf31d('0x33')][_0xf31d('0x3f')]){_0x5007b7['where']=_['merge'](_0x5007b7[_0xf31d('0x3d')],{'$or':_['map'](_0x5007b7[_0xf31d('0x36')],function(_0x1bd6da){var _0x1dae62={};_0x1dae62[_0x1bd6da]={'$like':'%'+_0xd8dc8c[_0xf31d('0x33')]['filter']+'%'};return _0x1dae62;})});}if(_0xd8dc8c[_0xf31d('0x33')]['$gte']){var _0x4a1f55=_0xd8dc8c['query'][_0xf31d('0x5c')][_0xf31d('0x5d')](',');var _0x24e615={};_0x24e615[_0x4a1f55[0x0]]={'$gte':moment(_0x4a1f55[0x1])[_0xf31d('0x5e')](_0xf31d('0x5f'))};_0x5007b7[_0xf31d('0x3d')]=_[_0xf31d('0x41')](_0x5007b7[_0xf31d('0x3d')],_0x24e615);}_0x5007b7=_['merge']({},_0x5007b7,_0xd8dc8c[_0xf31d('0x42')]);return _0xd01c5a['getMessages'](_0x5007b7);}})[_0xf31d('0x28')](function(_0x10e752){if(_0x10e752){_0x33cb5a=_0x10e752[_0xf31d('0x38')];if(!_0xd8dc8c[_0xf31d('0x33')]['hasOwnProperty'](_0xf31d('0x3a'))){_0x5007b7['limit']=qs[_0xf31d('0x21')](_0xd8dc8c[_0xf31d('0x33')][_0xf31d('0x21')]);_0x5007b7[_0xf31d('0x1e')]=qs[_0xf31d('0x1e')](_0xd8dc8c[_0xf31d('0x33')][_0xf31d('0x1e')]);}return _0xd01c5a[_0xf31d('0x5a')](_0x5007b7);}})['then'](function(_0x4994e3){if(_0x4994e3){return _0x4994e3?{'count':_0x33cb5a,'rows':_0x4994e3}:null;}})[_0xf31d('0x28')](respondWithResult(_0x4c2524,null))[_0xf31d('0x48')](handleError(_0x4c2524,null));};
\ No newline at end of file
+var _0xc8ab=['ids','User','options','getMembers','nolimit','removeMembers','addMessage','ChatGroupId','getMessages','findOne','$gte','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','destroy','stack','name','send','index','ChatGroup','rawAttributes','fieldName','type','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','includeAll','create','body','find','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers'];(function(_0x3e179a,_0x233eee){var _0x55eb9b=function(_0x3533c2){while(--_0x3533c2){_0x3e179a['push'](_0x3e179a['shift']());}};_0x55eb9b(++_0x233eee);}(_0xc8ab,0xca));var _0xbc8a=function(_0x2f53dc,_0x29e13a){_0x2f53dc=_0x2f53dc-0x0;var _0x5c66a8=_0xc8ab[_0x2f53dc];return _0x5c66a8;};'use strict';var emlformat=require(_0xbc8a('0x0'));var rimraf=require(_0xbc8a('0x1'));var zipdir=require(_0xbc8a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbc8a('0x3'));var moment=require('moment');var BPromise=require(_0xbc8a('0x4'));var Mustache=require(_0xbc8a('0x5'));var util=require(_0xbc8a('0x6'));var path=require(_0xbc8a('0x7'));var sox=require('sox');var csv=require(_0xbc8a('0x8'));var ejs=require(_0xbc8a('0x9'));var fs=require('fs');var fs_extra=require(_0xbc8a('0xa'));var _=require('lodash');var squel=require(_0xbc8a('0xb'));var crypto=require('crypto');var jsforce=require(_0xbc8a('0xc'));var deskjs=require(_0xbc8a('0xd'));var toCsv=require(_0xbc8a('0x8'));var querystring=require(_0xbc8a('0xe'));var Papa=require(_0xbc8a('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xbc8a('0x10'));var as=require(_0xbc8a('0x11'));var hardwareService=require(_0xbc8a('0x12'));var logger=require('../../config/logger')(_0xbc8a('0x13'));var utils=require(_0xbc8a('0x14'));var config=require(_0xbc8a('0x15'));var licenseUtil=require(_0xbc8a('0x16'));var db=require(_0xbc8a('0x17'))['db'];config['redis']=_[_0xbc8a('0x18')](config['redis'],{'host':_0xbc8a('0x19'),'port':0x18eb});var socket=require(_0xbc8a('0x1a'))(new Redis(config['redis']));require('./chatGroup.socket')[_0xbc8a('0x1b')](socket);function respondWithStatusCode(_0x1f3165,_0xfbaeeb){_0xfbaeeb=_0xfbaeeb||0xcc;return function(_0x8c500f){if(_0x8c500f){return _0x1f3165[_0xbc8a('0x1c')](_0xfbaeeb);}return _0x1f3165[_0xbc8a('0x1d')](_0xfbaeeb)[_0xbc8a('0x1e')]();};}function respondWithResult(_0x1d89ec,_0x2adf71){_0x2adf71=_0x2adf71||0xc8;return function(_0x5b44b7){if(_0x5b44b7){return _0x1d89ec[_0xbc8a('0x1d')](_0x2adf71)['json'](_0x5b44b7);}};}function respondWithFilteredResult(_0x4ab20a,_0x53bfaa){return function(_0xda1897){if(_0xda1897){var _0x5ad514=typeof _0x53bfaa[_0xbc8a('0x1f')]===_0xbc8a('0x20')&&typeof _0x53bfaa[_0xbc8a('0x21')]===_0xbc8a('0x20');var _0x575832=_0xda1897[_0xbc8a('0x22')];var _0x137853=_0x5ad514?0x0:_0x53bfaa[_0xbc8a('0x1f')];var _0xa15fa5=_0x5ad514?_0xda1897[_0xbc8a('0x22')]:_0x53bfaa['offset']+_0x53bfaa[_0xbc8a('0x21')];var _0x187c49;if(_0xa15fa5>=_0x575832){_0xa15fa5=_0x575832;_0x187c49=0xc8;}else{_0x187c49=0xce;}_0x4ab20a[_0xbc8a('0x1d')](_0x187c49);return _0x4ab20a[_0xbc8a('0x23')](_0xbc8a('0x24'),_0x137853+'-'+_0xa15fa5+'/'+_0x575832)[_0xbc8a('0x25')](_0xda1897);}return null;};}function patchUpdates(_0x5719ca){return function(_0x5b6fa8){try{jsonpatch[_0xbc8a('0x26')](_0x5b6fa8,_0x5719ca,!![]);}catch(_0x1a4b5b){return BPromise[_0xbc8a('0x27')](_0x1a4b5b);}return _0x5b6fa8['save']();};}function saveUpdates(_0x269a80,_0x92f3ef){return function(_0x108b5e){if(_0x108b5e){return _0x108b5e['update'](_0x269a80)[_0xbc8a('0x28')](function(_0x2a537f){return _0x2a537f;});}return null;};}function removeEntity(_0x561508,_0x1cadc2){return function(_0x396daa){if(_0x396daa){return _0x396daa[_0xbc8a('0x29')]()[_0xbc8a('0x28')](function(){_0x561508['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x46d1eb,_0x2c816e){return function(_0x376058){if(!_0x376058){_0x46d1eb[_0xbc8a('0x1c')](0x194);}return _0x376058;};}function handleError(_0x3e2828,_0x505628){_0x505628=_0x505628||0x1f4;return function(_0x43e3de){logger['error'](_0x43e3de[_0xbc8a('0x2a')]);if(_0x43e3de[_0xbc8a('0x2b')]){delete _0x43e3de[_0xbc8a('0x2b')];}_0x3e2828[_0xbc8a('0x1d')](_0x505628)[_0xbc8a('0x2c')](_0x43e3de);};}exports[_0xbc8a('0x2d')]=function(_0x48f13a,_0x51f452){var _0xb38e23={},_0x45cc9d={},_0x352d91={'count':0x0,'rows':[]};var _0x559fb6=_['map'](db[_0xbc8a('0x2e')][_0xbc8a('0x2f')],function(_0x1e4a47){return{'name':_0x1e4a47[_0xbc8a('0x30')],'type':_0x1e4a47[_0xbc8a('0x31')]['key']};});_0x45cc9d[_0xbc8a('0x32')]=_[_0xbc8a('0x33')](_0x559fb6,_0xbc8a('0x2b'));_0x45cc9d[_0xbc8a('0x34')]=_[_0xbc8a('0x35')](_0x48f13a['query']);_0x45cc9d['filters']=_['intersection'](_0x45cc9d[_0xbc8a('0x32')],_0x45cc9d[_0xbc8a('0x34')]);_0xb38e23[_0xbc8a('0x36')]=_[_0xbc8a('0x37')](_0x45cc9d['model'],qs[_0xbc8a('0x38')](_0x48f13a[_0xbc8a('0x34')][_0xbc8a('0x38')]));_0xb38e23[_0xbc8a('0x36')]=_0xb38e23['attributes'][_0xbc8a('0x39')]?_0xb38e23['attributes']:_0x45cc9d['model'];if(!_0x48f13a[_0xbc8a('0x34')][_0xbc8a('0x3a')]('nolimit')){_0xb38e23[_0xbc8a('0x21')]=qs[_0xbc8a('0x21')](_0x48f13a[_0xbc8a('0x34')]['limit']);_0xb38e23[_0xbc8a('0x1f')]=qs[_0xbc8a('0x1f')](_0x48f13a['query'][_0xbc8a('0x1f')]);}_0xb38e23[_0xbc8a('0x3b')]=qs[_0xbc8a('0x3c')](_0x48f13a[_0xbc8a('0x34')][_0xbc8a('0x3c')]);_0xb38e23[_0xbc8a('0x3d')]=qs[_0xbc8a('0x3e')](_[_0xbc8a('0x3f')](_0x48f13a[_0xbc8a('0x34')],_0x45cc9d['filters']),_0x559fb6);if(_0x48f13a[_0xbc8a('0x34')][_0xbc8a('0x40')]){_0xb38e23[_0xbc8a('0x3d')]=_[_0xbc8a('0x41')](_0xb38e23[_0xbc8a('0x3d')],{'$or':_['map'](_0x559fb6,function(_0x1a832b){if(_0x1a832b['type']!==_0xbc8a('0x42')){var _0x3f3e2a={};_0x3f3e2a[_0x1a832b['name']]={'$like':'%'+_0x48f13a[_0xbc8a('0x34')][_0xbc8a('0x40')]+'%'};return _0x3f3e2a;}})});}_0xb38e23=_['merge']({},_0xb38e23,_0x48f13a['options']);var _0x10d2f1={'where':_0xb38e23[_0xbc8a('0x3d')]};return db[_0xbc8a('0x2e')]['count'](_0x10d2f1)[_0xbc8a('0x28')](function(_0x48a7af){_0x352d91[_0xbc8a('0x22')]=_0x48a7af;if(_0x48f13a[_0xbc8a('0x34')]['includeAll']){_0xb38e23[_0xbc8a('0x43')]=[{'all':!![]}];}return db['ChatGroup'][_0xbc8a('0x44')](_0xb38e23);})['then'](function(_0x47d202){_0x352d91[_0xbc8a('0x45')]=_0x47d202;return _0x352d91;})[_0xbc8a('0x28')](respondWithFilteredResult(_0x51f452,_0xb38e23))[_0xbc8a('0x46')](handleError(_0x51f452,null));};exports[_0xbc8a('0x47')]=function(_0x3f899d,_0xb07d89){var _0x1e30a8={'raw':!![],'where':{'id':_0x3f899d[_0xbc8a('0x48')]['id']}},_0x3cc98b={};_0x3cc98b[_0xbc8a('0x32')]=_[_0xbc8a('0x35')](db[_0xbc8a('0x2e')][_0xbc8a('0x2f')]);_0x3cc98b[_0xbc8a('0x34')]=_['keys'](_0x3f899d[_0xbc8a('0x34')]);_0x3cc98b[_0xbc8a('0x3e')]=_[_0xbc8a('0x37')](_0x3cc98b[_0xbc8a('0x32')],_0x3cc98b[_0xbc8a('0x34')]);_0x1e30a8[_0xbc8a('0x36')]=_[_0xbc8a('0x37')](_0x3cc98b['model'],qs[_0xbc8a('0x38')](_0x3f899d[_0xbc8a('0x34')][_0xbc8a('0x38')]));_0x1e30a8[_0xbc8a('0x36')]=_0x1e30a8['attributes'][_0xbc8a('0x39')]?_0x1e30a8[_0xbc8a('0x36')]:_0x3cc98b[_0xbc8a('0x32')];if(_0x3f899d['query'][_0xbc8a('0x49')]){_0x1e30a8['include']=[{'all':!![]}];}_0x1e30a8=_['merge']({},_0x1e30a8,_0x3f899d['options']);return db['ChatGroup']['find'](_0x1e30a8)['then'](handleEntityNotFound(_0xb07d89,null))[_0xbc8a('0x28')](respondWithResult(_0xb07d89,null))[_0xbc8a('0x46')](handleError(_0xb07d89,null));};exports[_0xbc8a('0x4a')]=function(_0xa3d943,_0x2b4404){return db[_0xbc8a('0x2e')][_0xbc8a('0x4a')](_0xa3d943[_0xbc8a('0x4b')],{})[_0xbc8a('0x28')](respondWithResult(_0x2b4404,0xc9))[_0xbc8a('0x46')](handleError(_0x2b4404,null));};exports['update']=function(_0x21d1de,_0x4270e0){if(_0x21d1de[_0xbc8a('0x4b')]['id']){delete _0x21d1de[_0xbc8a('0x4b')]['id'];}return db['ChatGroup'][_0xbc8a('0x4c')]({'where':{'id':_0x21d1de[_0xbc8a('0x48')]['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x4270e0,null))[_0xbc8a('0x28')](saveUpdates(_0x21d1de[_0xbc8a('0x4b')],null))[_0xbc8a('0x28')](respondWithResult(_0x4270e0,null))['catch'](handleError(_0x4270e0,null));};exports[_0xbc8a('0x29')]=function(_0x201e0a,_0x2609a7){return db[_0xbc8a('0x2e')][_0xbc8a('0x4c')]({'where':{'id':_0x201e0a[_0xbc8a('0x48')]['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x2609a7,null))[_0xbc8a('0x28')](removeEntity(_0x2609a7,null))['catch'](handleError(_0x2609a7,null));};exports[_0xbc8a('0x4d')]=function(_0x42e6ac,_0x109956){return db[_0xbc8a('0x2e')][_0xbc8a('0x4d')]()[_0xbc8a('0x28')](respondWithResult(_0x109956,null))[_0xbc8a('0x46')](handleError(_0x109956,null));};exports[_0xbc8a('0x4e')]=function(_0x4a5918,_0x4983af,_0x165f71){return db[_0xbc8a('0x4f')][_0xbc8a('0x22')]({'where':{'ChatGroupId':_0x4a5918[_0xbc8a('0x48')]['id'],'ToId':_0x4a5918[_0xbc8a('0x50')]['id'],'read':![]}})[_0xbc8a('0x28')](function(_0x1b81a3){return{'id':_[_0xbc8a('0x51')](_0x4a5918[_0xbc8a('0x48')]['id']),'count':_0x1b81a3};})[_0xbc8a('0x28')](respondWithResult(_0x4983af,null))[_0xbc8a('0x46')](handleError(_0x4983af,null));};exports[_0xbc8a('0x52')]=function(_0x30c513,_0x32dbfd,_0x1ad1e4){return db[_0xbc8a('0x2e')][_0xbc8a('0x4c')]({'where':{'id':_0x30c513[_0xbc8a('0x48')]['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x32dbfd,null))[_0xbc8a('0x28')](function(_0x2ef01b){if(_0x2ef01b){return _0x2ef01b[_0xbc8a('0x52')](_0x30c513[_0xbc8a('0x4b')][_0xbc8a('0x53')],_['omit'](_0x30c513[_0xbc8a('0x4b')],[_0xbc8a('0x53'),'id'])||{});}})[_0xbc8a('0x28')](respondWithResult(_0x32dbfd,null))[_0xbc8a('0x46')](handleError(_0x32dbfd,null));};exports['getMembers']=function(_0x255267,_0x21c5ad,_0x1632c5){var _0x12dec3={};var _0x131885={};var _0x44a775;var _0x1a835d;return db[_0xbc8a('0x2e')]['findOne']({'where':{'id':_0x255267['params']['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x21c5ad,null))[_0xbc8a('0x28')](function(_0x5c1858){if(_0x5c1858){_0x44a775=_0x5c1858;_0x131885[_0xbc8a('0x32')]=_[_0xbc8a('0x35')](db[_0xbc8a('0x54')]['rawAttributes']);_0x131885[_0xbc8a('0x34')]=_[_0xbc8a('0x35')](_0x255267[_0xbc8a('0x34')]);_0x131885[_0xbc8a('0x3e')]=_[_0xbc8a('0x37')](_0x131885['model'],_0x131885[_0xbc8a('0x34')]);_0x12dec3[_0xbc8a('0x36')]=_[_0xbc8a('0x37')](_0x131885[_0xbc8a('0x32')],qs[_0xbc8a('0x38')](_0x255267['query'][_0xbc8a('0x38')]));_0x12dec3[_0xbc8a('0x36')]=_0x12dec3[_0xbc8a('0x36')][_0xbc8a('0x39')]?_0x12dec3[_0xbc8a('0x36')]:_0x131885[_0xbc8a('0x32')];_0x12dec3[_0xbc8a('0x3b')]=qs[_0xbc8a('0x3c')](_0x255267[_0xbc8a('0x34')][_0xbc8a('0x3c')]);_0x12dec3[_0xbc8a('0x3d')]=qs['filters'](_['pick'](_0x255267[_0xbc8a('0x34')],_0x131885[_0xbc8a('0x3e')]));if(_0x255267[_0xbc8a('0x34')][_0xbc8a('0x40')]){_0x12dec3[_0xbc8a('0x3d')]=_[_0xbc8a('0x41')](_0x12dec3[_0xbc8a('0x3d')],{'$or':_[_0xbc8a('0x33')](_0x12dec3[_0xbc8a('0x36')],function(_0x324e0a){var _0x1175a6={};_0x1175a6[_0x324e0a]={'$like':'%'+_0x255267[_0xbc8a('0x34')][_0xbc8a('0x40')]+'%'};return _0x1175a6;})});}_0x12dec3=_['merge']({},_0x12dec3,_0x255267[_0xbc8a('0x55')]);return _0x44a775[_0xbc8a('0x56')](_0x12dec3);}})[_0xbc8a('0x28')](function(_0x2a2c5c){if(_0x2a2c5c){_0x1a835d=_0x2a2c5c[_0xbc8a('0x39')];if(!_0x255267[_0xbc8a('0x34')]['hasOwnProperty'](_0xbc8a('0x57'))){_0x12dec3[_0xbc8a('0x21')]=qs[_0xbc8a('0x21')](_0x255267[_0xbc8a('0x34')][_0xbc8a('0x21')]);_0x12dec3[_0xbc8a('0x1f')]=qs[_0xbc8a('0x1f')](_0x255267[_0xbc8a('0x34')][_0xbc8a('0x1f')]);}return _0x44a775[_0xbc8a('0x56')](_0x12dec3);}})[_0xbc8a('0x28')](function(_0x1a304e){if(_0x1a304e){return _0x1a304e?{'count':_0x1a835d,'rows':_0x1a304e}:null;}})[_0xbc8a('0x28')](respondWithResult(_0x21c5ad,null))['catch'](handleError(_0x21c5ad,null));};exports[_0xbc8a('0x58')]=function(_0x122717,_0x5cd303,_0x225cd1){return db[_0xbc8a('0x2e')][_0xbc8a('0x4c')]({'where':{'id':_0x122717[_0xbc8a('0x48')]['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x5cd303,null))[_0xbc8a('0x28')](function(_0x41e83a){if(_0x41e83a){return _0x41e83a[_0xbc8a('0x58')](_0x122717[_0xbc8a('0x34')][_0xbc8a('0x53')]);}})['then'](respondWithStatusCode(_0x5cd303,null))['catch'](handleError(_0x5cd303,null));};exports[_0xbc8a('0x59')]=function(_0xcdf434,_0x125397,_0x235e03){if(_0xcdf434[_0xbc8a('0x4b')]['id']){delete _0xcdf434[_0xbc8a('0x4b')]['id'];}return db[_0xbc8a('0x2e')][_0xbc8a('0x4c')]({'where':{'id':_0xcdf434[_0xbc8a('0x48')]['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x125397,null))[_0xbc8a('0x28')](function(_0x3f5afe){if(_0x3f5afe){_0xcdf434['body'][_0xbc8a('0x5a')]=_0x3f5afe['id'];return db['ChatInternalMessage']['create'](_0xcdf434[_0xbc8a('0x4b')]);}})['then'](respondWithResult(_0x125397,null))[_0xbc8a('0x46')](handleError(_0x125397,null));};exports[_0xbc8a('0x5b')]=function(_0x5da8ad,_0x5c59a8,_0x4367ca){var _0x469b27={};var _0xae1108={};var _0x3cece4;var _0x1d283d;return db[_0xbc8a('0x2e')][_0xbc8a('0x5c')]({'where':{'id':_0x5da8ad['params']['id']}})[_0xbc8a('0x28')](handleEntityNotFound(_0x5c59a8,null))[_0xbc8a('0x28')](function(_0x4e59ec){if(_0x4e59ec){_0x3cece4=_0x4e59ec;_0xae1108['model']=_[_0xbc8a('0x35')](db[_0xbc8a('0x4f')][_0xbc8a('0x2f')]);_0xae1108[_0xbc8a('0x34')]=_[_0xbc8a('0x35')](_0x5da8ad[_0xbc8a('0x34')]);_0xae1108[_0xbc8a('0x3e')]=_['intersection'](_0xae1108[_0xbc8a('0x32')],_0xae1108[_0xbc8a('0x34')]);_0x469b27[_0xbc8a('0x36')]=_[_0xbc8a('0x37')](_0xae1108[_0xbc8a('0x32')],qs[_0xbc8a('0x38')](_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x38')]));_0x469b27[_0xbc8a('0x36')]=_0x469b27[_0xbc8a('0x36')][_0xbc8a('0x39')]?_0x469b27[_0xbc8a('0x36')]:_0xae1108[_0xbc8a('0x32')];_0x469b27['order']=qs[_0xbc8a('0x3c')](_0x5da8ad['query'][_0xbc8a('0x3c')]);_0x469b27[_0xbc8a('0x3d')]=qs['filters'](_[_0xbc8a('0x3f')](_0x5da8ad[_0xbc8a('0x34')],_0xae1108[_0xbc8a('0x3e')]));if(_0x5da8ad['query']['filter']){_0x469b27[_0xbc8a('0x3d')]=_[_0xbc8a('0x41')](_0x469b27[_0xbc8a('0x3d')],{'$or':_[_0xbc8a('0x33')](_0x469b27[_0xbc8a('0x36')],function(_0x4dd8fd){var _0x521787={};_0x521787[_0x4dd8fd]={'$like':'%'+_0x5da8ad['query'][_0xbc8a('0x40')]+'%'};return _0x521787;})});}if(_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x5d')]){var _0x443c7b=_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x5d')]['split'](',');var _0x2d9d90={};_0x2d9d90[_0x443c7b[0x0]]={'$gte':moment(_0x443c7b[0x1])['format'](_0xbc8a('0x5e'))};_0x469b27[_0xbc8a('0x3d')]=_[_0xbc8a('0x41')](_0x469b27[_0xbc8a('0x3d')],_0x2d9d90);}_0x469b27=_['merge']({},_0x469b27,_0x5da8ad['options']);return _0x3cece4[_0xbc8a('0x5b')](_0x469b27);}})['then'](function(_0x4ac658){if(_0x4ac658){_0x1d283d=_0x4ac658[_0xbc8a('0x39')];if(!_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x3a')](_0xbc8a('0x57'))){_0x469b27[_0xbc8a('0x21')]=qs[_0xbc8a('0x21')](_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x21')]);_0x469b27[_0xbc8a('0x1f')]=qs['offset'](_0x5da8ad[_0xbc8a('0x34')][_0xbc8a('0x1f')]);}return _0x3cece4[_0xbc8a('0x5b')](_0x469b27);}})[_0xbc8a('0x28')](function(_0x5a3c22){if(_0x5a3c22){return _0x5a3c22?{'count':_0x1d283d,'rows':_0x5a3c22}:null;}})['then'](respondWithResult(_0x5c59a8,null))[_0xbc8a('0x46')](handleError(_0x5c59a8,null));};
\ No newline at end of file
index 8bd751d..918194a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8fb=['hook','events','ChatGroup','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x31a371,_0x50828e){var _0x2a5bd6=function(_0x2fb481){while(--_0x2fb481){_0x31a371['push'](_0x31a371['shift']());}};_0x2a5bd6(++_0x50828e);}(_0xf8fb,0x184));var _0xbf8f=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xf8fb[_0x8c43de];return _0xa6591b;};'use strict';var EventEmitter=require(_0xbf8f('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0xbf8f('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xbf8f('0x2')](0x0);var events={'afterCreate':_0xbf8f('0x3'),'afterUpdate':_0xbf8f('0x4'),'afterDestroy':_0xbf8f('0x5')};function emitEvent(_0x54cde4){return function(_0xf0aaeb,_0x41d662,_0x1e073a){ChatGroupEvents[_0xbf8f('0x6')](_0x54cde4+':'+_0xf0aaeb['id'],_0xf0aaeb);ChatGroupEvents[_0xbf8f('0x6')](_0x54cde4,_0xf0aaeb);_0x1e073a(null);};}for(var e in events){if(events[_0xbf8f('0x7')](e)){var event=events[e];ChatGroup[_0xbf8f('0x8')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0xb88c=['setMaxListeners','save','update','remove','emit','exports','events','../../mysqldb','ChatGroup'];(function(_0x14311a,_0x4fa562){var _0x4b798b=function(_0x5b3a89){while(--_0x5b3a89){_0x14311a['push'](_0x14311a['shift']());}};_0x4b798b(++_0x4fa562);}(_0xb88c,0xd5));var _0xcb88=function(_0x554047,_0x46ec41){_0x554047=_0x554047-0x0;var _0x5d11e4=_0xb88c[_0x554047];return _0x5d11e4;};'use strict';var EventEmitter=require(_0xcb88('0x0'));var ChatGroup=require(_0xcb88('0x1'))['db'][_0xcb88('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xcb88('0x3')](0x0);var events={'afterCreate':_0xcb88('0x4'),'afterUpdate':_0xcb88('0x5'),'afterDestroy':_0xcb88('0x6')};function emitEvent(_0x2e5d61){return function(_0x3dc59f,_0x51a059,_0x40614e){ChatGroupEvents[_0xcb88('0x7')](_0x2e5d61+':'+_0x3dc59f['id'],_0x3dc59f);ChatGroupEvents[_0xcb88('0x7')](_0x2e5d61,_0x3dc59f);_0x40614e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xcb88('0x8')]=ChatGroupEvents;
\ No newline at end of file
index 2fc775d..237d232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa3=['../../config/environment','define','ChatGroup','chat_groups','lodash','moment','bluebird','request-promise','path','rimraf'];(function(_0x277e95,_0x21e0d8){var _0x5634dc=function(_0x136578){while(--_0x136578){_0x277e95['push'](_0x277e95['shift']());}};_0x5634dc(++_0x21e0d8);}(_0x6aa3,0xae));var _0x36aa=function(_0x33c603,_0x6d0ce4){_0x33c603=_0x33c603-0x0;var _0xae96f4=_0x6aa3[_0x33c603];return _0xae96f4;};'use strict';var _=require(_0x36aa('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x36aa('0x1'));var BPromise=require(_0x36aa('0x2'));var rp=require(_0x36aa('0x3'));var fs=require('fs');var path=require(_0x36aa('0x4'));var rimraf=require(_0x36aa('0x5'));var config=require(_0x36aa('0x6'));var attributes=require('./chatGroup.attributes');module['exports']=function(_0x908b65,_0x34d93e){return _0x908b65[_0x36aa('0x7')](_0x36aa('0x8'),attributes,{'tableName':_0x36aa('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0830=['moment','bluebird','request-promise','../../config/environment','./chatGroup.attributes','exports','define','chat_groups','util','../../config/logger'];(function(_0x1dad70,_0x156649){var _0x14771d=function(_0x4186d5){while(--_0x4186d5){_0x1dad70['push'](_0x1dad70['shift']());}};_0x14771d(++_0x156649);}(_0x0830,0x1ac));var _0x0083=function(_0x5ca4a0,_0x44b1d6){_0x5ca4a0=_0x5ca4a0-0x0;var _0x32e3af=_0x0830[_0x5ca4a0];return _0x32e3af;};'use strict';var _=require('lodash');var util=require(_0x0083('0x0'));var logger=require(_0x0083('0x1'))('api');var moment=require(_0x0083('0x2'));var BPromise=require(_0x0083('0x3'));var rp=require(_0x0083('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0083('0x5'));var attributes=require(_0x0083('0x6'));module[_0x0083('0x7')]=function(_0x1489eb,_0x20906b){return _0x1489eb[_0x0083('0x8')]('ChatGroup',attributes,{'tableName':_0x0083('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4986f43..21e616f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc300=['error','code','ChatGroup,\x20%s,\x20%s','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./chatGroup.socket','info','debug','ChatGroup,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x3e9edb,_0x464c8f){var _0x2a1e74=function(_0x104505){while(--_0x104505){_0x3e9edb['push'](_0x3e9edb['shift']());}};_0x2a1e74(++_0x464c8f);}(_0xc300,0x132));var _0x0c30=function(_0x91bf20,_0x37ee1c){_0x91bf20=_0x91bf20-0x0;var _0x13de6c=_0xc300[_0x91bf20];return _0x13de6c;};'use strict';var _=require(_0x0c30('0x0'));var util=require(_0x0c30('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0c30('0x2'));var fs=require('fs');var Redis=require(_0x0c30('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0c30('0x4'));var logger=require(_0x0c30('0x5'))(_0x0c30('0x6'));var config=require(_0x0c30('0x7'));var jayson=require(_0x0c30('0x8'));var client=jayson[_0x0c30('0x9')][_0x0c30('0xa')]({'port':0x232a});config[_0x0c30('0xb')]=_['defaults'](config[_0x0c30('0xb')],{'host':_0x0c30('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0c30('0xb')]));require(_0x0c30('0xd'))['register'](socket);function respondWithRpcPromise(_0x351cca,_0x2d077e,_0x1c8c00){return new BPromise(function(_0x104032,_0x1421b8){return client['request'](_0x351cca,_0x1c8c00)['then'](function(_0x1481d9){logger[_0x0c30('0xe')]('ChatGroup,\x20%s,\x20%s',_0x2d077e,'request\x20sent');logger[_0x0c30('0xf')](_0x0c30('0x10'),_0x2d077e,_0x0c30('0x11'),JSON[_0x0c30('0x12')](_0x1481d9));if(_0x1481d9[_0x0c30('0x13')]){if(_0x1481d9['error'][_0x0c30('0x14')]===0x1f4){logger['error'](_0x0c30('0x15'),_0x2d077e,_0x1481d9[_0x0c30('0x13')][_0x0c30('0x16')]);return _0x1421b8(_0x1481d9[_0x0c30('0x13')][_0x0c30('0x16')]);}logger[_0x0c30('0x13')]('ChatGroup,\x20%s,\x20%s',_0x2d077e,_0x1481d9[_0x0c30('0x13')]['message']);return _0x104032(_0x1481d9[_0x0c30('0x13')][_0x0c30('0x16')]);}else{logger[_0x0c30('0xe')]('ChatGroup,\x20%s,\x20%s',_0x2d077e,_0x0c30('0x11'));_0x104032(_0x1481d9[_0x0c30('0x17')][_0x0c30('0x16')]);}})[_0x0c30('0x18')](function(_0x5c04d9){logger[_0x0c30('0x13')](_0x0c30('0x15'),_0x2d077e,_0x5c04d9);_0x1421b8(_0x5c04d9);});});}
\ No newline at end of file
+var _0xf555=['request\x20sent','error','code','ChatGroup,\x20%s,\x20%s','message','info','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','request','then'];(function(_0x11c12d,_0x5d7fb3){var _0x1d4bce=function(_0x58e060){while(--_0x58e060){_0x11c12d['push'](_0x11c12d['shift']());}};_0x1d4bce(++_0x5d7fb3);}(_0xf555,0x97));var _0x5f55=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf555[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5f55('0x0'));var util=require(_0x5f55('0x1'));var moment=require('moment');var BPromise=require(_0x5f55('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5f55('0x3'));var db=require(_0x5f55('0x4'))['db'];var utils=require(_0x5f55('0x5'));var logger=require('../../config/logger')(_0x5f55('0x6'));var config=require(_0x5f55('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5f55('0x8')][_0x5f55('0x9')]({'port':0x232a});config[_0x5f55('0xa')]=_[_0x5f55('0xb')](config[_0x5f55('0xa')],{'host':_0x5f55('0xc'),'port':0x18eb});var socket=require(_0x5f55('0xd'))(new Redis(config[_0x5f55('0xa')]));require(_0x5f55('0xe'))['register'](socket);function respondWithRpcPromise(_0x123c3d,_0x3ab5b2,_0xdfa6af){return new BPromise(function(_0x13f7c4,_0x5a95a9){return client[_0x5f55('0xf')](_0x123c3d,_0xdfa6af)[_0x5f55('0x10')](function(_0x5d8cab){logger['info']('ChatGroup,\x20%s,\x20%s',_0x3ab5b2,_0x5f55('0x11'));logger['debug']('ChatGroup,\x20%s,\x20%s,\x20%s',_0x3ab5b2,'request\x20sent',JSON['stringify'](_0x5d8cab));if(_0x5d8cab[_0x5f55('0x12')]){if(_0x5d8cab[_0x5f55('0x12')][_0x5f55('0x13')]===0x1f4){logger[_0x5f55('0x12')](_0x5f55('0x14'),_0x3ab5b2,_0x5d8cab[_0x5f55('0x12')][_0x5f55('0x15')]);return _0x5a95a9(_0x5d8cab['error'][_0x5f55('0x15')]);}logger['error'](_0x5f55('0x14'),_0x3ab5b2,_0x5d8cab[_0x5f55('0x12')][_0x5f55('0x15')]);return _0x13f7c4(_0x5d8cab['error'][_0x5f55('0x15')]);}else{logger[_0x5f55('0x16')](_0x5f55('0x14'),_0x3ab5b2,'request\x20sent');_0x13f7c4(_0x5d8cab[_0x5f55('0x17')][_0x5f55('0x15')]);}})['catch'](function(_0xe1cb1d){logger[_0x5f55('0x12')]('ChatGroup,\x20%s,\x20%s',_0x3ab5b2,_0xe1cb1d);_0x5a95a9(_0xe1cb1d);});});}
\ No newline at end of file
index 72d4667..cb430b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb846=['emit','register','length','chatGroup:','./chatGroup.events','save','update'];(function(_0x3c1113,_0xdc9aa7){var _0x18a2a6=function(_0x958423){while(--_0x958423){_0x3c1113['push'](_0x3c1113['shift']());}};_0x18a2a6(++_0xdc9aa7);}(_0xb846,0x162));var _0x6b84=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xb846[_0x465028];return _0xb783d4;};'use strict';var ChatGroupEvents=require(_0x6b84('0x0'));var events=[_0x6b84('0x1'),'remove',_0x6b84('0x2')];function createListener(_0x1a886e,_0x3eaa40){return function(_0x1f8c79){_0x3eaa40[_0x6b84('0x3')](_0x1a886e,_0x1f8c79);};}function removeListener(_0x32eac3,_0x3797a3){return function(){ChatGroupEvents['removeListener'](_0x32eac3,_0x3797a3);};}exports[_0x6b84('0x4')]=function(_0x780d90){for(var _0x38a87f=0x0,_0x3b3a9e=events[_0x6b84('0x5')];_0x38a87f<_0x3b3a9e;_0x38a87f++){var _0x4f2913=events[_0x38a87f];var _0x3ffdb9=createListener(_0x6b84('0x6')+_0x4f2913,_0x780d90);ChatGroupEvents['on'](_0x4f2913,_0x3ffdb9);}};
\ No newline at end of file
+var _0xd98b=['chatGroup:','save','remove','update','register','length'];(function(_0x360156,_0x3c0760){var _0x2e6091=function(_0x44bdd3){while(--_0x44bdd3){_0x360156['push'](_0x360156['shift']());}};_0x2e6091(++_0x3c0760);}(_0xd98b,0x1d5));var _0xbd98=function(_0x583829,_0x188b0e){_0x583829=_0x583829-0x0;var _0x34d994=_0xd98b[_0x583829];return _0x34d994;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0xbd98('0x0'),_0xbd98('0x1'),_0xbd98('0x2')];function createListener(_0xcd7b2e,_0x219ccc){return function(_0x458e3e){_0x219ccc['emit'](_0xcd7b2e,_0x458e3e);};}function removeListener(_0x4a83e2,_0x486ae7){return function(){ChatGroupEvents['removeListener'](_0x4a83e2,_0x486ae7);};}exports[_0xbd98('0x3')]=function(_0xf30e24){for(var _0x57bf6e=0x0,_0x456ef5=events[_0xbd98('0x4')];_0x57bf6e<_0x456ef5;_0x57bf6e++){var _0x30afd1=events[_0x57bf6e];var _0x4ce7d8=createListener(_0xbd98('0x5')+_0x30afd1,_0xf30e24);ChatGroupEvents['on'](_0x30afd1,_0x4ce7d8);}};
\ No newline at end of file
index 38ef468..5ef6871 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32d5=['multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','post','addMembers','addMessage','put','/:id','update','delete','removeMembers','exports'];(function(_0x2bf460,_0x12ca5d){var _0x559af3=function(_0x4fa7ac){while(--_0x4fa7ac){_0x2bf460['push'](_0x2bf460['shift']());}};_0x559af3(++_0x12ca5d);}(_0x32d5,0x16c));var _0x532d=function(_0x550e6f,_0x3e639b){_0x550e6f=_0x550e6f-0x0;var _0x1ec4b3=_0x32d5[_0x550e6f];return _0x1ec4b3;};'use strict';var multer=require(_0x532d('0x0'));var util=require('util');var path=require(_0x532d('0x1'));var timeout=require(_0x532d('0x2'));var express=require(_0x532d('0x3'));var router=express[_0x532d('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x532d('0x5'));var config=require(_0x532d('0x6'));var controller=require(_0x532d('0x7'));router[_0x532d('0x8')]('/',auth[_0x532d('0x9')](),controller[_0x532d('0xa')]);router[_0x532d('0x8')](_0x532d('0xb'),auth[_0x532d('0x9')](),controller[_0x532d('0xc')]);router[_0x532d('0x8')]('/:id',auth[_0x532d('0x9')](),controller[_0x532d('0xd')]);router[_0x532d('0x8')](_0x532d('0xe'),auth[_0x532d('0x9')](),controller[_0x532d('0xf')]);router[_0x532d('0x8')](_0x532d('0x10'),auth[_0x532d('0x9')](),controller[_0x532d('0x11')]);router['get'](_0x532d('0x12'),auth[_0x532d('0x9')](),controller['getMessages']);router[_0x532d('0x13')]('/',auth['isAuthenticated'](),controller['create']);router[_0x532d('0x13')]('/:id/members',auth[_0x532d('0x9')](),controller[_0x532d('0x14')]);router[_0x532d('0x13')](_0x532d('0x12'),auth['isAuthenticated'](),controller[_0x532d('0x15')]);router[_0x532d('0x16')](_0x532d('0x17'),auth[_0x532d('0x9')](),controller[_0x532d('0x18')]);router['delete'](_0x532d('0x17'),auth['isAuthenticated'](),controller['destroy']);router[_0x532d('0x19')](_0x532d('0x10'),auth[_0x532d('0x9')](),controller[_0x532d('0x1a')]);module[_0x532d('0x1b')]=router;
\ No newline at end of file
+var _0xb55f=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','/describe','describe','/:id','/:id/unread','getUnread','/:id/members','getMembers','getMessages','post','addMembers','update','removeMembers','exports','multer','express'];(function(_0x39b949,_0x6d78cb){var _0x137dd7=function(_0x2fdfda){while(--_0x2fdfda){_0x39b949['push'](_0x39b949['shift']());}};_0x137dd7(++_0x6d78cb);}(_0xb55f,0x1cc));var _0xfb55=function(_0x1c069c,_0x4f293d){_0x1c069c=_0x1c069c-0x0;var _0x349fbf=_0xb55f[_0x1c069c];return _0x349fbf;};'use strict';var multer=require(_0xfb55('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfb55('0x1'));var router=express[_0xfb55('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xfb55('0x3'));var interaction=require(_0xfb55('0x4'));var config=require(_0xfb55('0x5'));var controller=require(_0xfb55('0x6'));router[_0xfb55('0x7')]('/',auth[_0xfb55('0x8')](),controller['index']);router[_0xfb55('0x7')](_0xfb55('0x9'),auth[_0xfb55('0x8')](),controller[_0xfb55('0xa')]);router['get'](_0xfb55('0xb'),auth[_0xfb55('0x8')](),controller['show']);router['get'](_0xfb55('0xc'),auth['isAuthenticated'](),controller[_0xfb55('0xd')]);router[_0xfb55('0x7')](_0xfb55('0xe'),auth[_0xfb55('0x8')](),controller[_0xfb55('0xf')]);router['get']('/:id/messages',auth[_0xfb55('0x8')](),controller[_0xfb55('0x10')]);router[_0xfb55('0x11')]('/',auth[_0xfb55('0x8')](),controller['create']);router[_0xfb55('0x11')](_0xfb55('0xe'),auth[_0xfb55('0x8')](),controller[_0xfb55('0x12')]);router[_0xfb55('0x11')]('/:id/messages',auth[_0xfb55('0x8')](),controller['addMessage']);router['put'](_0xfb55('0xb'),auth[_0xfb55('0x8')](),controller[_0xfb55('0x13')]);router['delete'](_0xfb55('0xb'),auth[_0xfb55('0x8')](),controller['destroy']);router['delete'](_0xfb55('0xe'),auth['isAuthenticated'](),controller[_0xfb55('0x14')]);module[_0xfb55('0x15')]=router;
\ No newline at end of file
index dea2fe8..a8a7ebf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0db9=['long','DATE','BOOLEAN','sequelize','ENUM','star','TEXT','STRING'];(function(_0x1d7c54,_0x1ac0f7){var _0xdd6e7a=function(_0x4890fd){while(--_0x4890fd){_0x1d7c54['push'](_0x1d7c54['shift']());}};_0xdd6e7a(++_0x1ac0f7);}(_0x0db9,0xa3));var _0x90db=function(_0x164af1,_0x3cf772){_0x164af1=_0x164af1-0x0;var _0x5d81a2=_0x0db9[_0x164af1];return _0x5d81a2;};'use strict';var Sequelize=require(_0x90db('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x90db('0x1')](_0x90db('0x2'),'thumb'),'defaultValue':_0x90db('0x2')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x90db('0x3')]},'mailTranscript':{'type':Sequelize[_0x90db('0x4')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x90db('0x4')]},'secondDisposition':{'type':Sequelize[_0x90db('0x4')]},'thirdDisposition':{'type':Sequelize[_0x90db('0x4')]},'note':{'type':Sequelize[_0x90db('0x4')]},'browserName':{'type':Sequelize[_0x90db('0x4')]},'browserVersion':{'type':Sequelize[_0x90db('0x4')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x90db('0x4')]},'deviceModel':{'type':Sequelize[_0x90db('0x4')]},'deviceVendor':{'type':Sequelize[_0x90db('0x4')]},'deviceType':{'type':Sequelize[_0x90db('0x4')]},'referer':{'type':Sequelize[_0x90db('0x3')]},'customerIp':{'type':Sequelize[_0x90db('0x4')]},'formData':{'type':Sequelize[_0x90db('0x3')](_0x90db('0x5'))},'read1stAt':{'type':Sequelize[_0x90db('0x6')]},'lastMsgAt':{'type':Sequelize[_0x90db('0x6')]},'lastMsgDirection':{'type':Sequelize[_0x90db('0x1')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x90db('0x4')]},'customerPort':{'type':Sequelize[_0x90db('0x4')]},'vidaooSessionId':{'type':Sequelize[_0x90db('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x90db('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0xfd7b=['STRING','DATE','sequelize','exports','BOOLEAN','ENUM','star','thumb','TEXT'];(function(_0xf2662b,_0x4d8f41){var _0x257dc7=function(_0x46b1d1){while(--_0x46b1d1){_0xf2662b['push'](_0xf2662b['shift']());}};_0x257dc7(++_0x4d8f41);}(_0xfd7b,0xd1));var _0xbfd7=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xfd7b[_0x1da04e];return _0xdd8c41;};'use strict';var Sequelize=require(_0xbfd7('0x0'));module[_0xbfd7('0x1')]={'closed':{'type':Sequelize[_0xbfd7('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0xbfd7('0x3')](_0xbfd7('0x4'),_0xbfd7('0x5')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0xbfd7('0x6')]},'pathTranscript':{'type':Sequelize[_0xbfd7('0x6')]},'mailTranscript':{'type':Sequelize[_0xbfd7('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xbfd7('0x7')]},'secondDisposition':{'type':Sequelize[_0xbfd7('0x7')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xbfd7('0x7')]},'browserName':{'type':Sequelize[_0xbfd7('0x7')]},'browserVersion':{'type':Sequelize[_0xbfd7('0x7')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0xbfd7('0x7')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0xbfd7('0x7')]},'referer':{'type':Sequelize[_0xbfd7('0x6')]},'customerIp':{'type':Sequelize[_0xbfd7('0x7')]},'formData':{'type':Sequelize[_0xbfd7('0x6')]('long')},'read1stAt':{'type':Sequelize[_0xbfd7('0x8')]},'lastMsgAt':{'type':Sequelize[_0xbfd7('0x8')]},'lastMsgDirection':{'type':Sequelize[_0xbfd7('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xbfd7('0x7')]},'customerPort':{'type':Sequelize[_0xbfd7('0x7')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0xbfd7('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 573e000..6818b5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7916=['../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatInteraction.socket','jayson/promise','http','client','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','undefined','limit','offset','count','set','Content-Range','json','reject','save','end','name','render','merge','body','agent','interaction','Users','map','fullname','TagIds','Tags','split','forEach','push','index','ChatInteraction','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','select','field','color','tools_tags','u.id','u.fullname','ui.ChatInteractionId','from','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','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)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','start','union','User','operator','UserId','some','isEmpty','ChatWebsiteId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','`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?','group','QueryTypes','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','t.id\x20IN\x20?','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','i.ChatWebsiteId\x20IN\x20?','sequelize','toString','length','keyBy','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','Contact.mobile','Contact.fax','o.fullname','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','catch','show','params','includeAll','include','options','create','destroy','describe','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','email','contact','account','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','Error\x20in\x20Vidaoo\x20configuration','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','Attachment','attachmentDownload','Unauthorized','attachId','join','offline-chat/','close','mailTranscript','root','server/files/chat/upload/','format','transcript-%s.txt','Messages','ChatWebsite','CmContact','%s%d','agentAlias','System','Visitor','agentIdentifier','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','pass','SendMail','sendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','getMyMessages','includeAgent','addTags','spread','Tag','emit','removeTags','download','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','read','Account','Owner','get','mkdirSync','Chat','N.A.','closedAt','browserName','osName','referer','customerIp','customerPort','tail','createReadStream','createWriteStream','out','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x4665b8,_0x234a28){var _0x54ba4c=function(_0x38064a){while(--_0x38064a){_0x4665b8['push'](_0x4665b8['shift']());}};_0x54ba4c(++_0x234a28);}(_0x7916,0x128));var _0x6791=function(_0x189989,_0x392303){_0x189989=_0x189989-0x0;var _0x289565=_0x7916[_0x189989];return _0x289565;};'use strict';var emlformat=require(_0x6791('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6791('0x1'));var jsonpatch=require(_0x6791('0x2'));var rp=require('request-promise');var moment=require(_0x6791('0x3'));var BPromise=require(_0x6791('0x4'));var Mustache=require(_0x6791('0x5'));var util=require(_0x6791('0x6'));var path=require('path');var sox=require(_0x6791('0x7'));var csv=require('to-csv');var ejs=require(_0x6791('0x8'));var fs=require('fs');var fs_extra=require(_0x6791('0x9'));var _=require('lodash');var squel=require(_0x6791('0xa'));var crypto=require('crypto');var jsforce=require(_0x6791('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6791('0xc'));var Papa=require(_0x6791('0xd'));var Redis=require('ioredis');var authService=require(_0x6791('0xe'));var qs=require(_0x6791('0xf'));var as=require(_0x6791('0x10'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x6791('0x11'));var logger=require(_0x6791('0x12'))(_0x6791('0x13'));var utils=require(_0x6791('0x14'));var config=require(_0x6791('0x15'));var licenseUtil=require(_0x6791('0x16'));var db=require(_0x6791('0x17'))['db'];config[_0x6791('0x18')]=_[_0x6791('0x19')](config[_0x6791('0x18')],{'host':_0x6791('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6791('0x1b'))['register'](socket);var jayson=require(_0x6791('0x1c'));var client=jayson['client'][_0x6791('0x1d')]({'port':0x232b});var client9004=jayson[_0x6791('0x1e')]['http']({'port':0x232c});function respondWithRpcPromise(_0x3e4792,_0x4b80ed,_0x3856ac,_0x150d1f){return new BPromise(function(_0x596a06,_0xbc35d){var _0x36d7a1=_0x150d1f||client;return _0x36d7a1['request'](_0x3e4792,_0x3856ac)[_0x6791('0x1f')](function(_0x4d8a79){logger[_0x6791('0x20')](_0x6791('0x21'),_0x4b80ed,_0x6791('0x22'));logger[_0x6791('0x23')](_0x6791('0x24'),_0x4b80ed,_0x6791('0x22'),JSON[_0x6791('0x25')](_0x4d8a79));if(_0x4d8a79['error']){if(_0x4d8a79[_0x6791('0x26')][_0x6791('0x27')]===0x1f4){logger['error'](_0x6791('0x21'),_0x4b80ed,_0x4d8a79[_0x6791('0x26')]['message']);return _0xbc35d(_0x4d8a79[_0x6791('0x26')][_0x6791('0x28')]);}logger[_0x6791('0x26')](_0x6791('0x21'),_0x4b80ed,_0x4d8a79['error'][_0x6791('0x28')]);return _0x596a06(_0x4d8a79[_0x6791('0x26')]['message']);}else{logger['info']('ChatInteraction,\x20%s,\x20%s',_0x4b80ed,_0x6791('0x22'));_0x596a06(_0x4d8a79['result'][_0x6791('0x28')]);}})['catch'](function(_0x54a092){logger['error'](_0x6791('0x21'),_0x4b80ed,_0x54a092);_0xbc35d(_0x54a092);});});}function respondWithStatusCode(_0x23442e,_0xd49b84){_0xd49b84=_0xd49b84||0xcc;return function(_0x56a74e){if(_0x56a74e){return _0x23442e[_0x6791('0x29')](_0xd49b84);}return _0x23442e[_0x6791('0x2a')](_0xd49b84)['end']();};}function respondWithResult(_0x342107,_0x5cbb79){_0x5cbb79=_0x5cbb79||0xc8;return function(_0x424b0e){if(_0x424b0e){return _0x342107['status'](_0x5cbb79)['json'](_0x424b0e);}};}function respondWithFilteredResult(_0x270a1d,_0x551718){return function(_0x2f56a2){if(_0x2f56a2){var _0x34b006=typeof _0x551718['offset']===_0x6791('0x2b')&&typeof _0x551718[_0x6791('0x2c')]===_0x6791('0x2b');var _0xd36448=_0x2f56a2['count'];var _0x4f91d6=_0x34b006?0x0:_0x551718[_0x6791('0x2d')];var _0x5e5ac3=_0x34b006?_0x2f56a2[_0x6791('0x2e')]:_0x551718[_0x6791('0x2d')]+_0x551718[_0x6791('0x2c')];var _0x2b98b8;if(_0x5e5ac3>=_0xd36448){_0x5e5ac3=_0xd36448;_0x2b98b8=0xc8;}else{_0x2b98b8=0xce;}_0x270a1d[_0x6791('0x2a')](_0x2b98b8);return _0x270a1d[_0x6791('0x2f')](_0x6791('0x30'),_0x4f91d6+'-'+_0x5e5ac3+'/'+_0xd36448)[_0x6791('0x31')](_0x2f56a2);}return null;};}function patchUpdates(_0x152751){return function(_0x100210){try{jsonpatch['apply'](_0x100210,_0x152751,!![]);}catch(_0x28b3d4){return BPromise[_0x6791('0x32')](_0x28b3d4);}return _0x100210[_0x6791('0x33')]();};}function saveUpdates(_0xa1ed41,_0x19cd22){return function(_0x36f673){if(_0x36f673){return _0x36f673['update'](_0xa1ed41)['then'](function(_0x551357){return _0x551357;});}return null;};}function removeEntity(_0x1de770,_0x21a9cf){return function(_0x252916){if(_0x252916){return _0x252916['destroy']()['then'](function(){_0x1de770[_0x6791('0x2a')](0xcc)[_0x6791('0x34')]();});}};}function handleEntityNotFound(_0x31a525,_0x42deeb){return function(_0x50db2b){if(!_0x50db2b){_0x31a525[_0x6791('0x29')](0x194);}return _0x50db2b;};}function handleError(_0xee6b68,_0x2068a5){_0x2068a5=_0x2068a5||0x1f4;return function(_0x56d8c8){logger[_0x6791('0x26')](_0x56d8c8['stack']);if(_0x56d8c8['name']){delete _0x56d8c8[_0x6791('0x35')];}_0xee6b68[_0x6791('0x2a')](_0x2068a5)['send'](_0x56d8c8);};}function getMustacheRender(_0x764f15,_0x70b2b7){return Mustache[_0x6791('0x36')](_0x764f15,_[_0x6791('0x37')](_0x70b2b7[_0x6791('0x38')],{'contact':_0x70b2b7['contact'],'message':_0x70b2b7[_0x6791('0x28')],'agent':_0x70b2b7[_0x6791('0x39')],'interaction':_0x70b2b7[_0x6791('0x3a')],'account':_0x70b2b7['account']}))||'';}function getInteractionUsers(_0x3a6062,_0x24955c){return new BPromise(function(_0x2349b0,_0x577006){try{if(_0x24955c[_0x3a6062['id']]){_0x3a6062[_0x6791('0x3b')]=_[_0x6791('0x3c')](_0x24955c[_0x3a6062['id']],function(_0x13be81){return{'id':_0x13be81['id'],'fullname':_0x13be81[_0x6791('0x3d')]};});}}catch(_0x593fda){_0x577006(_0x593fda);}_0x2349b0(_0x3a6062);});}function getInteractionTags(_0x18c478,_0x1a4b64){return new BPromise(function(_0x3e95b6,_0xd0f1c){try{if(_0x18c478[_0x6791('0x3e')]){_0x18c478[_0x6791('0x3f')]=[];_0x18c478[_0x6791('0x3e')][_0x6791('0x40')](',')[_0x6791('0x41')](function(_0x4e4004){_0x18c478['Tags'][_0x6791('0x42')](_0x1a4b64[_0x4e4004]);});}delete _0x18c478[_0x6791('0x3e')];}catch(_0x5900b6){_0xd0f1c(_0x5900b6);}_0x3e95b6(_0x18c478);});}function updateChatInteraction(_0x39dcb7,_0x1c9913,_0x1c6803){return new BPromise(function(_0x3edb86,_0x1a922e){return getInteractionUsers(_0x39dcb7,_0x1c6803)[_0x6791('0x1f')](function(_0x44e0ba){return getInteractionTags(_0x44e0ba,_0x1c9913);})['then'](function(_0xb3bea8){_0x3edb86(_0xb3bea8);})['catch'](function(_0x17ecf0){_0x1a922e(_0x17ecf0);});});}exports[_0x6791('0x43')]=function(_0x16f26c,_0xbd6326){var _0x573e38={},_0xe55ee={},_0x4f0e2d={'count':0x0,'rows':[]};var _0xeb9d45=_[_0x6791('0x3c')](db[_0x6791('0x44')][_0x6791('0x45')],function(_0x91a161){return{'name':_0x91a161[_0x6791('0x46')],'type':_0x91a161['type'][_0x6791('0x47')]};});_0xe55ee[_0x6791('0x48')]=_[_0x6791('0x3c')](_0xeb9d45,_0x6791('0x35'));_0xe55ee['query']=_[_0x6791('0x49')](_0x16f26c[_0x6791('0x4a')]);_0xe55ee['filters']=_[_0x6791('0x4b')](_0xe55ee['model'],_0xe55ee[_0x6791('0x4a')]);_0x573e38[_0x6791('0x4c')]=_[_0x6791('0x4b')](_0xe55ee[_0x6791('0x48')],qs[_0x6791('0x4d')](_0x16f26c[_0x6791('0x4a')][_0x6791('0x4d')]));_0x573e38[_0x6791('0x4c')]=_0x573e38[_0x6791('0x4c')]['length']?_0x573e38[_0x6791('0x4c')]:_0xe55ee['model'];if(!_0x16f26c[_0x6791('0x4a')][_0x6791('0x4e')](_0x6791('0x4f'))){_0x573e38[_0x6791('0x2c')]=qs[_0x6791('0x2c')](_0x16f26c['query'][_0x6791('0x2c')]);_0x573e38[_0x6791('0x2d')]=qs[_0x6791('0x2d')](_0x16f26c[_0x6791('0x4a')][_0x6791('0x2d')]);}_0x573e38['order']=qs[_0x6791('0x50')](_0x16f26c[_0x6791('0x4a')]['sort']);_0x573e38[_0x6791('0x51')]=qs['filters'](_[_0x6791('0x52')](_0x16f26c[_0x6791('0x4a')],_0xe55ee[_0x6791('0x53')]),_0xeb9d45);var _0x37e360=[];var _0x558069=squel[_0x6791('0x54')]()[_0x6791('0x55')]('id')['field'](_0x6791('0x35'))[_0x6791('0x55')](_0x6791('0x56'))['from'](_0x6791('0x57'));var _0x166b9a=squel['select']()[_0x6791('0x55')](_0x6791('0x58'))['field'](_0x6791('0x59'))[_0x6791('0x55')](_0x6791('0x5a'))[_0x6791('0x5b')]('user_has_chat_interactions','ui')[_0x6791('0x5c')](_0x6791('0x5d'),'u',_0x6791('0x5e'));var _0x5b534b=squel['select']()[_0x6791('0x5b')](_0x6791('0x5f'),'i')[_0x6791('0x5c')](_0x6791('0x60'),'c',_0x6791('0x61'))['left_join']('users','o',_0x6791('0x62'))['left_join']('chat_websites','a',_0x6791('0x63'))[_0x6791('0x5c')](_0x6791('0x64'),'me',_0x6791('0x65'))[_0x6791('0x5c')](_0x6791('0x66'),'it','it.ChatInteractionId\x20=\x20i.id')['left_join'](_0x6791('0x57'),'t',_0x6791('0x67'));var _0x56e424=squel[_0x6791('0x68')]();var _0x535ecf=[];var _0x473443=squel[_0x6791('0x68')]();var _0x50cf85;if(_0x16f26c[_0x6791('0x4a')][_0x6791('0x69')]){_0x50cf85=as[_0x6791('0x6a')](_0x16f26c['query'][_0x6791('0x69')]);var _0x2c6316=_0x50cf85[_0x6791('0x6b')];for(var _0x383853=0x0;_0x383853<_0x50cf85[_0x6791('0x6c')]['length'];_0x383853++){var _0x54d0ba=_0x50cf85[_0x6791('0x6c')][_0x383853];var _0x13430e='i';var _0x5d2668=_[_0x6791('0x6d')](_0xeb9d45,[_0x6791('0x35'),_0x54d0ba[_0x6791('0x55')]]);if(!_0x5d2668){switch(_0x54d0ba[_0x6791('0x55')]){case _0x6791('0x6e'):if(_0x54d0ba[_0x6791('0x6f')]==0x1){_0x5b534b[_0x6791('0x70')]('`'+_0x54d0ba[_0x6791('0x55')]+'`\x20=\x200');}else{_0x5b534b[_0x6791('0x70')]('`'+_0x54d0ba[_0x6791('0x55')]+_0x6791('0x71'));}break;case _0x6791('0x72'):if(_0x54d0ba['operator']===_0x6791('0x73')){if(_0x54d0ba[_0x6791('0x6f')][_0x6791('0x40')]('\x20')['length']>0x1){_0x56e424[_0x2c6316](_0x6791('0x74'),qs[_0x6791('0x75')](_0x54d0ba[_0x6791('0x6f')]),null);}else{var _0x11df6b='%'+_0x54d0ba['value']+'%';_0x56e424[_0x2c6316](_0x6791('0x76'),_0x11df6b,_0x11df6b,_0x11df6b);}}else{_0x5d2668=_[_0x6791('0x6d')](_0xeb9d45,['name',_0x6791('0x77')]);_0x54d0ba[_0x6791('0x55')]=_0x6791('0x77');_0xbd55d7=as[_0x6791('0x78')](_0x13430e,_0x5d2668[_0x6791('0x79')],_0x54d0ba);_0x56e424[_0x2c6316](_0xbd55d7[_0x6791('0x7a')],_0xbd55d7['value'][_0x6791('0x7b')],_0xbd55d7[_0x6791('0x6f')][_0x6791('0x34')]);}break;case'Tag':var _0x2d487e=_0x54d0ba['value'][_0x6791('0x40')](',')[_0x6791('0x3c')](function(_0xf0941a){return Number(_0xf0941a);});_0x2d487e[_0x6791('0x41')](function(_0x28d86b){_0x473443['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x28d86b+',%');});_0x535ecf=_[_0x6791('0x7c')](_0x535ecf,_0x2d487e);break;case _0x6791('0x7d'):if(_0x54d0ba[_0x6791('0x7e')]===_0x6791('0x73')){_0x56e424[_0x2c6316]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x54d0ba[_0x6791('0x6f')]+'%',null);}else{_0x5d2668=_[_0x6791('0x6d')](_0xeb9d45,['name',_0x6791('0x7f')]);_0x54d0ba[_0x6791('0x55')]='UserId';_0xbd55d7=as[_0x6791('0x78')](_0x13430e,_0x5d2668[_0x6791('0x79')],_0x54d0ba);_0x56e424[_0x2c6316](_0xbd55d7[_0x6791('0x7a')],_0xbd55d7[_0x6791('0x6f')]['start'],_0xbd55d7[_0x6791('0x6f')][_0x6791('0x34')]);}break;case'body':_0xbd55d7=as[_0x6791('0x78')]('me',null,_0x54d0ba);_0x56e424[_0x2c6316](_0xbd55d7[_0x6791('0x7a')],_0xbd55d7[_0x6791('0x6f')][_0x6791('0x7b')],_0xbd55d7[_0x6791('0x6f')]['end']);break;}}else{var _0xbd55d7=as[_0x6791('0x78')](_0x13430e,_0x5d2668['type'],_0x54d0ba);_0x56e424[_0x2c6316](_0xbd55d7[_0x6791('0x7a')],_0xbd55d7[_0x6791('0x6f')][_0x6791('0x7b')],_0xbd55d7['value'][_0x6791('0x34')]);}}}else{var _0x165899=_(_0x16f26c[_0x6791('0x4a')])[_0x6791('0x49')]()[_0x6791('0x3c')](function(_0x1a1c3b){return _[_0x6791('0x80')](_0xeb9d45,[_0x6791('0x35'),_0x1a1c3b])?_0x1a1c3b:undefined;})['compact']()[_0x6791('0x6f')]();if(!_[_0x6791('0x81')](_0x165899)){_0x165899['forEach'](function(_0x48909c){if(_0x48909c===_0x6791('0x82')){_0x5b534b[_0x6791('0x51')]('i.ChatWebsiteId\x20IN\x20?',[][_0x6791('0x83')](_0x16f26c['query'][_0x48909c]));}else if(_0x48909c===_0x6791('0x84')){var _0x304e2a=JSON[_0x6791('0x85')](_0x16f26c[_0x6791('0x4a')][_0x48909c])[_0x6791('0x86')];var _0x2d15b5=JSON[_0x6791('0x85')](_0x16f26c[_0x6791('0x4a')][_0x48909c])[_0x6791('0x87')];_0x5b534b[_0x6791('0x51')](_0x6791('0x88'),_0x304e2a,_0x2d15b5);}else{if(_0x16f26c[_0x6791('0x4a')][_0x48909c]===_0x6791('0x89')){_0x5b534b[_0x6791('0x51')]('i.'+_0x48909c+_0x6791('0x8a'));}else{_0x5b534b[_0x6791('0x51')]('i.'+_0x48909c+_0x6791('0x8b'),_0x16f26c[_0x6791('0x4a')][_0x48909c]);}}});}if(_0x16f26c[_0x6791('0x4a')]['read']){if(_0x16f26c['query']['read']==0x1){_0x5b534b[_0x6791('0x70')](_0x6791('0x8c'));}else{_0x5b534b[_0x6791('0x70')](_0x6791('0x8d'));}}if(_0x16f26c[_0x6791('0x4a')][_0x6791('0x8e')]){_0x535ecf=_[_0x6791('0x8f')](_0x16f26c[_0x6791('0x4a')][_0x6791('0x8e')])?_0x16f26c[_0x6791('0x4a')][_0x6791('0x8e')]:new Array(_0x16f26c[_0x6791('0x4a')][_0x6791('0x8e')]);_0x535ecf[_0x6791('0x41')](function(_0x2dafe6){_0x473443['or'](_0x6791('0x90'),'%,'+_0x2dafe6+',%');});}if(_0x16f26c[_0x6791('0x4a')][_0x6791('0x91')]){var _0x159544=_0x16f26c[_0x6791('0x4a')][_0x6791('0x91')][_0x6791('0x92')]('\x5c','\x5c\x5c')[_0x6791('0x92')](/'/g,'\x27\x27');if(qs[_0x6791('0x93')](_0x159544)){_0x56e424['or'](_0x6791('0x94'),_0x159544+'%');}else{_0x56e424['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x6791('0x75')](_0x159544))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x159544+'%');}}}_0x5b534b[_0x6791('0x51')](_0x56e424);_0x5b534b[_0x6791('0x95')]('i.id');var _0x1c2864={'type':db['Sequelize'][_0x6791('0x96')][_0x6791('0x97')],'raw':!![]};var _0x5945cb=_0x5b534b[_0x6791('0x98')]();_0x5945cb[_0x6791('0x55')](_0x6791('0x99'));_0x5945cb['field'](_0x6791('0x9a'),_0x6791('0x6e'));if(_0x573e38[_0x6791('0x9b')]){_0x573e38[_0x6791('0x9b')][_0x6791('0x41')](function(_0x35cd1b){var _0x52ab63=_0x35cd1b[0x0]===_0x6791('0x9c')?_0x35cd1b[0x0]:'i.'+_0x35cd1b[0x0];_0x5b534b[_0x6791('0x9b')](_0x52ab63,_0x35cd1b[0x1]===_0x6791('0x9d')?![]:!![]);});}if(!_[_0x6791('0x81')](_0x535ecf)){_0x5b534b[_0x6791('0x70')](_0x473443);_0x5945cb[_0x6791('0x51')](_0x6791('0x9e'),_0x535ecf);}BPromise['resolve']()[_0x6791('0x1f')](function(){if(!_0x50cf85){if(_0x16f26c['query'][_0x6791('0x82')])return;_0x5945cb['where'](_0x6791('0x9f'));_0x5b534b[_0x6791('0x51')](_0x6791('0x9f'));return;}if(_0x16f26c[_0x6791('0xa0')][_0x6791('0xa1')]!==_0x6791('0x39'))return;return _0x16f26c['user'][_0x6791('0xa2')]({'attributes':['id'],'raw':!![]})['then'](function(_0x2f2f6d){if(_['isEmpty'](_0x2f2f6d)){_0x5945cb['where']('i.ChatWebsiteId\x20IS\x20NULL');_0x5b534b[_0x6791('0x51')](_0x6791('0xa3'));}else{_0x5945cb['where'](_0x6791('0xa4'),_['map'](_0x2f2f6d,'id'));_0x5b534b[_0x6791('0x51')](_0x6791('0xa4'),_['map'](_0x2f2f6d,'id'));}});})['then'](function(){if(_0x16f26c['user'][_0x6791('0xa1')]===_0x6791('0x39')&&!_0x50cf85&&!_0x16f26c[_0x6791('0x4a')]['ChatWebsiteId'])return[];return db[_0x6791('0xa5')][_0x6791('0x4a')](_0x5945cb[_0x6791('0xa6')](),_0x1c2864);})[_0x6791('0x1f')](function(_0xaf50fd){_0x4f0e2d['count']=_0xaf50fd[_0x6791('0xa7')];if(_0x4f0e2d[_0x6791('0x2e')]===0x0)return[];return db[_0x6791('0xa5')][_0x6791('0x4a')](_0x558069[_0x6791('0xa6')](),_0x1c2864)['then'](function(_0x6ef225){_0x37e360=_[_0x6791('0xa8')](_0x6ef225,'id');_0x1c2864=_['merge'](_0x1c2864,{'model':db[_0x6791('0x44')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x16f26c[_0x6791('0x4a')][_0x6791('0x4d')]){_0x573e38[_0x6791('0x4c')]['forEach'](function(_0x29e2a0){_0x5b534b[_0x6791('0x55')]('i.'+_0x29e2a0);});}else{_0x5b534b[_0x6791('0x55')](_0x6791('0x9a'),_0x6791('0x6e'));_0x5b534b[_0x6791('0x55')](_0x6791('0xa9'),_0x6791('0xaa'));_0x5b534b['field']('a.mandatoryDisposition',_0x6791('0xab'));_0x5b534b[_0x6791('0x55')](_0x6791('0xac'),'contactName');_0x5b534b[_0x6791('0x55')]('i.*');_0x5b534b[_0x6791('0x55')](_0x6791('0xad'),'Contact.firstName');_0x5b534b[_0x6791('0x55')](_0x6791('0xae'),_0x6791('0xaf'));_0x5b534b[_0x6791('0x55')](_0x6791('0xb0'),'Contact.email');_0x5b534b[_0x6791('0x55')](_0x6791('0xb1'),_0x6791('0xb2'));_0x5b534b['field']('c.mobile',_0x6791('0xb3'));_0x5b534b[_0x6791('0x55')]('c.fax',_0x6791('0xb4'));_0x5b534b[_0x6791('0x55')](_0x6791('0xb5'),'Owner.fullname');_0x5b534b[_0x6791('0x55')]('o.internal','Owner.internal');_0x5b534b[_0x6791('0x55')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x6791('0x3e'));}if(_0x573e38[_0x6791('0x2c')])_0x5b534b[_0x6791('0x2c')](_0x573e38[_0x6791('0x2c')]);if(_0x573e38[_0x6791('0x2d')])_0x5b534b[_0x6791('0x2d')](_0x573e38['offset']);return db[_0x6791('0xa5')]['query'](_0x5b534b[_0x6791('0xa6')](),_0x1c2864);})['then'](function(_0x599f9f){if(_0x599f9f[_0x6791('0xa7')]>0x0)_0x166b9a[_0x6791('0x51')](_0x6791('0xb6'),_[_0x6791('0x3c')](_0x599f9f,'id'));return db[_0x6791('0xa5')][_0x6791('0x4a')](_0x166b9a[_0x6791('0xa6')](),_0x1c2864)[_0x6791('0x1f')](function(_0x1bdeab){var _0x1d7926=_[_0x6791('0xb7')](_0x1bdeab,_0x6791('0xb8'));var _0x2bb01f=[];_0x599f9f[_0x6791('0x41')](function(_0x386f26){_0x2bb01f[_0x6791('0x42')](updateChatInteraction(_0x386f26,_0x37e360,_0x1d7926));});return BPromise[_0x6791('0xb9')](_0x2bb01f);});});})[_0x6791('0x1f')](function(_0x153fd1){_0x4f0e2d['rows']=_0x153fd1;return _0x4f0e2d;})[_0x6791('0x1f')](respondWithFilteredResult(_0xbd6326,_0x573e38))[_0x6791('0xba')](handleError(_0xbd6326,null));};exports[_0x6791('0xbb')]=function(_0x4dc5e1,_0x4c6eb1){var _0x4bce1d={'raw':![],'where':{'id':_0x4dc5e1[_0x6791('0xbc')]['id']}},_0x42d7fb={};_0x42d7fb['model']=_[_0x6791('0x49')](db[_0x6791('0x44')][_0x6791('0x45')]);_0x42d7fb[_0x6791('0x4a')]=_[_0x6791('0x49')](_0x4dc5e1[_0x6791('0x4a')]);_0x42d7fb[_0x6791('0x53')]=_[_0x6791('0x4b')](_0x42d7fb['model'],_0x42d7fb[_0x6791('0x4a')]);_0x4bce1d['attributes']=_[_0x6791('0x4b')](_0x42d7fb[_0x6791('0x48')],qs[_0x6791('0x4d')](_0x4dc5e1['query']['fields']));_0x4bce1d['attributes']=_0x4bce1d[_0x6791('0x4c')][_0x6791('0xa7')]?_0x4bce1d[_0x6791('0x4c')]:_0x42d7fb[_0x6791('0x48')];if(_0x4dc5e1['query'][_0x6791('0xbd')]){_0x4bce1d[_0x6791('0xbe')]=[{'all':!![]}];}_0x4bce1d=_[_0x6791('0x37')]({},_0x4bce1d,_0x4dc5e1[_0x6791('0xbf')]);return db['ChatInteraction']['find'](_0x4bce1d)['then'](handleEntityNotFound(_0x4c6eb1,null))[_0x6791('0x1f')](respondWithResult(_0x4c6eb1,null))['catch'](handleError(_0x4c6eb1,null));};exports[_0x6791('0xc0')]=function(_0x416812,_0xfb6287){return db[_0x6791('0x44')][_0x6791('0xc0')](_0x416812[_0x6791('0x38')],{})[_0x6791('0x1f')](respondWithResult(_0xfb6287,0xc9))[_0x6791('0xba')](handleError(_0xfb6287,null));};exports['update']=function(_0x38fa5c,_0x300c8b){if(_0x38fa5c['body']['id']){delete _0x38fa5c[_0x6791('0x38')]['id'];}return db[_0x6791('0x44')][_0x6791('0x6d')]({'where':{'id':_0x38fa5c[_0x6791('0xbc')]['id']}})['then'](handleEntityNotFound(_0x300c8b,null))[_0x6791('0x1f')](saveUpdates(_0x38fa5c[_0x6791('0x38')],null))[_0x6791('0x1f')](respondWithResult(_0x300c8b,null))[_0x6791('0xba')](handleError(_0x300c8b,null));};exports[_0x6791('0xc1')]=function(_0x201cfc,_0x456077){return db[_0x6791('0x44')][_0x6791('0x6d')]({'where':{'id':_0x201cfc['params']['id']}})[_0x6791('0x1f')](handleEntityNotFound(_0x456077,null))[_0x6791('0x1f')](removeEntity(_0x456077,null))[_0x6791('0xba')](handleError(_0x456077,null));};exports[_0x6791('0xc2')]=function(_0x19cb72,_0x5aad37){return db['ChatInteraction'][_0x6791('0xc2')]()[_0x6791('0x1f')](respondWithResult(_0x5aad37,null))['catch'](handleError(_0x5aad37,null));};exports[_0x6791('0xc3')]=function(_0x355c3a,_0x409f15){var _0x3fffd9=_0x355c3a[_0x6791('0xbc')]['id'];var _0xccd935;var _0x16b1d2;var _0x21a12c;return db[_0x6791('0x44')]['findOne']({'where':{'id':_0x3fffd9}})[_0x6791('0x1f')](function(_0x323f3c){_0xccd935=_0x323f3c;return db['ChatWebsite'][_0x6791('0xc4')]({'where':{'id':_0x323f3c['ChatWebsiteId']},'attributes':['id',_0x6791('0xc5'),_0x6791('0xc6'),_0x6791('0xc7'),_0x6791('0xc8'),_0x6791('0xc9')],'raw':!![]});})[_0x6791('0x1f')](function(_0x3a6ce4){if(_0x3a6ce4&&_0x3a6ce4[_0x6791('0xc5')]&&_0x3a6ce4[_0x6791('0xc6')]){_0x16b1d2=_0x3a6ce4;var _0x1ee4d7={'interaction':{'id':_0x3fffd9},'agent':{'id':_0x355c3a[_0x6791('0xa0')]['id'],'name':_0x355c3a[_0x6791('0xa0')][_0x6791('0x35')],'fullname':_0x355c3a[_0x6791('0xa0')][_0x6791('0x3d')],'email':_0x355c3a[_0x6791('0xa0')][_0x6791('0xca')]},'contact':_0x355c3a[_0x6791('0x38')][_0x6791('0xcb')],'account':_0x355c3a['body'][_0x6791('0xcc')]};var _0x5f52f8={'rejectUnauthorized':![],'method':_0x6791('0xcd'),'url':_0x6791('0xce'),'headers':{'X-APIKEY':_0x3a6ce4[_0x6791('0xc5')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x355c3a[_0x6791('0xa0')][_0x6791('0xca')]],'buttons':null,'topic':_0x16b1d2[_0x6791('0xc7')],'note':_[_0x6791('0xcf')](_0x16b1d2[_0x6791('0xc8')])?null:getMustacheRender(_0x16b1d2['vidaooNote'],_0x1ee4d7),'metadata':null},'redirect':_0x6791('0xd0'),'json':!![]};try{if(!_['isNull'](_0x16b1d2['vidaooMetadata'])){var _0x37bb87=getMustacheRender(_0x16b1d2[_0x6791('0xc9')],_0x1ee4d7);var _0x371229=JSON[_0x6791('0x85')](_0x37bb87);_0x5f52f8[_0x6791('0x38')][_0x6791('0xd1')]=_0x371229;}}catch(_0x2e8d88){throw new db['Sequelize'][(_0x6791('0xd2'))](_0x6791('0xd3'));}return rp(_0x5f52f8);}else{throw new db[(_0x6791('0xd4'))][(_0x6791('0xd2'))](_0x6791('0xd5'));}})[_0x6791('0x1f')](function(_0x550c19){_0x21a12c=_0x550c19;if(_0x21a12c['id']){var _0x3a6909={'body':_0x21a12c[_0x6791('0xd6')],'ChatWebsiteId':_0x16b1d2['id'],'ChatInteractionId':_0xccd935['id'],'direction':'out','UserId':_0x355c3a[_0x6791('0xa0')]['id']};return db[_0x6791('0xd7')][_0x6791('0xc0')](_0x3a6909,{});}else{throw new db[(_0x6791('0xd4'))]['ValidationError'](_0x6791('0xd8'));}})[_0x6791('0x1f')](function(){return _0xccd935[_0x6791('0xd9')]({'vidaooSessionId':_0x21a12c['id']});})[_0x6791('0x1f')](respondWithResult(_0x409f15,null))['catch'](handleError(_0x409f15,null));};exports['customUpdate']=function(_0x46b51c,_0x3b618b){if(_0x46b51c[_0x6791('0x38')]['id']){delete _0x46b51c['body']['id'];}return db[_0x6791('0x44')][_0x6791('0x6d')]({'where':{'id':_0x46b51c[_0x6791('0xbc')]['id']},'include':[{'model':db['CmContact'],'as':'Contact'}]})['then'](handleEntityNotFound(_0x3b618b,null))[_0x6791('0x1f')](saveUpdates(_0x46b51c['body'],null))[_0x6791('0x1f')](respondWithResult(_0x3b618b,null))[_0x6791('0xba')](handleError(_0x3b618b,null));};exports[_0x6791('0xda')]=function(_0x576b1c,_0x348f18,_0x51538c){if(_0x576b1c[_0x6791('0x38')]['id']){delete _0x576b1c['body']['id'];}return db[_0x6791('0x44')]['find']({'where':{'id':_0x576b1c[_0x6791('0xbc')]['id']}})[_0x6791('0x1f')](function(_0x181b92){if(!_0x181b92){logger[_0x6791('0x26')](_0x6791('0xdb'),'abandon',0x194,_0x6791('0xdc'));_0x348f18['sendStatus'](0x194);}else{if(_0x181b92[_0x6791('0x7f')]){throw new db['Sequelize'][(_0x6791('0xd2'))](_0x6791('0xdd'));}}return _0x181b92;})[_0x6791('0x1f')](function(_0x105823){if(_0x105823){return _0x105823['update']({'closed':_0x576b1c['body'][_0x6791('0xde')],'disposition':_0x576b1c[_0x6791('0x38')][_0x6791('0xdf')]})[_0x6791('0x1f')](function(_0x5932ab){return _0x5932ab;});}})[_0x6791('0x1f')](function(_0x56389f){return respondWithRpcPromise(_0x6791('0xe0'),_0x6791('0xda'),_0x576b1c[_0x6791('0x38')],client9004);})[_0x6791('0x1f')](respondWithResult(_0x348f18,null))[_0x6791('0xba')](handleError(_0x348f18,null));};exports[_0x6791('0xe1')]=function(_0x3312c4,_0x5cd7c8,_0x3213a4){_0x3312c4[_0x6791('0x38')][_0x6791('0x35')]=_0x3312c4[_0x6791('0xe2')][_0x6791('0xe3')];_0x3312c4[_0x6791('0x38')][_0x6791('0xe4')]=_0x3312c4[_0x6791('0xe2')][_0x6791('0xe5')];_0x3312c4[_0x6791('0x38')][_0x6791('0x79')]=_0x3312c4[_0x6791('0xe2')]['mimetype'];return db[_0x6791('0xe6')][_0x6791('0xc0')](_0x3312c4['body'])[_0x6791('0x1f')](respondWithResult(_0x5cd7c8,0xc9))[_0x6791('0xba')](handleError(_0x5cd7c8,null));};exports[_0x6791('0xe7')]=function(_0x4e7de0,_0x5ad60f,_0x405363){return db[_0x6791('0x44')][_0x6791('0xc4')]({'where':{'id':_0x4e7de0[_0x6791('0xbc')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x5ad60f,null))['then'](function(_0x1ea78e){if(_0x1ea78e){if(_0x1ea78e[_0x6791('0xde')]){return _0x5ad60f[_0x6791('0x2a')](0x193)[_0x6791('0x31')]({'status':0x193,'message':_0x6791('0xe8')});}return db[_0x6791('0xe6')][_0x6791('0xc4')]({'where':{'id':_0x4e7de0[_0x6791('0x4a')][_0x6791('0xe9')]},'raw':!![]})[_0x6791('0x1f')](handleEntityNotFound(_0x5ad60f,null));}})[_0x6791('0x1f')](function(_0x51e0ff){if(_0x51e0ff){var _0x40ced1=_0x51e0ff['ChatOfflineMessageId']!==null;var _0x2bbbf6=path[_0x6791('0xea')](config['root'],'server/files/attachments/');if(_0x40ced1){_0x2bbbf6=path[_0x6791('0xea')](_0x2bbbf6,_0x6791('0xeb'));}var _0x50b575=path[_0x6791('0xea')](_0x2bbbf6,_0x51e0ff[_0x6791('0xe4')]);return _0x5ad60f['download'](_0x50b575);}})[_0x6791('0xba')](handleError(_0x5ad60f,null));};exports[_0x6791('0xec')]=function(_0x217690,_0x3f8140){var _0x216b49=null;var _0x104b7d=null;var _0x1d1840=null;var _0xeeee25=null;if(_0x217690[_0x6791('0x38')]['id']){delete _0x217690['body']['id'];}if(_0x217690[_0x6791('0x38')][_0x6791('0xed')]){_0xeeee25=path[_0x6791('0xea')](config[_0x6791('0xee')],_0x6791('0xef'),util[_0x6791('0xf0')](_0x6791('0xf1'),Date['now']()));_0x217690[_0x6791('0x38')]['pathTranscript']=_0xeeee25;}return db[_0x6791('0x44')]['find']({'where':{'id':_0x217690[_0x6791('0xbc')]['id']},'include':[{'model':db[_0x6791('0xd7')],'as':_0x6791('0xf2'),'include':[{'model':db['User'],'as':'User'}]}]})[_0x6791('0x1f')](handleEntityNotFound(_0x3f8140,null))[_0x6791('0x1f')](saveUpdates(_0x217690[_0x6791('0x38')],null))[_0x6791('0x1f')](function(_0x749c0b){if(_0x749c0b){_0x216b49=_0x749c0b;return db[_0x6791('0xf3')][_0x6791('0x6d')]({'where':{'id':_0x216b49[_0x6791('0x82')]}});}})['then'](function(_0x2df0f3){if(_0x2df0f3){_0x1d1840=_0x2df0f3;return db[_0x6791('0xf4')][_0x6791('0x6d')]({'where':{'id':_0x216b49[_0x6791('0x77')]}});}})[_0x6791('0x1f')](function(_0x206dda){if(_0x206dda){_0x104b7d=_0x206dda;if(_0xeeee25){var _0x13ab4d=null;for(var _0x4685f1=0x1;_0x4685f1<_0x216b49['Messages'][_0x6791('0xa7')];++_0x4685f1){_0x13ab4d=_0x216b49[_0x6791('0xf2')][_0x4685f1];var _0x7f7b0d=_0x13ab4d[_0x6791('0x7f')]?util[_0x6791('0xf0')](_0x6791('0xf5'),_0x1d1840[_0x6791('0xf6')],_0x13ab4d[_0x6791('0x7f')]):_0x6791('0xf7');var _0x54f969=_0x217690['body']['customer']||util[_0x6791('0xf0')]('%s%d',_0x6791('0xf8'),_0x13ab4d[_0x6791('0x77')]);switch(_0x1d1840[_0x6791('0xf9')]){case'website_alias':_0x7f7b0d=_0x13ab4d[_0x6791('0x7f')]?util['format']('%s%d',_0x1d1840[_0x6791('0xf6')],_0x13ab4d[_0x6791('0x7f')]):_0x6791('0xf7');break;case _0x6791('0xfa'):_0x7f7b0d=_0x13ab4d[_0x6791('0x7f')]?_0x13ab4d[_0x6791('0x7d')][_0x6791('0xfb')]||_0x13ab4d[_0x6791('0x7d')][_0x6791('0x3d')]:_0x6791('0xf7');break;case _0x6791('0xfc'):_0x7f7b0d=_0x13ab4d[_0x6791('0x7f')]?_0x13ab4d[_0x6791('0x7d')]['fullname']:_0x6791('0xf7');break;default:_0x7f7b0d=_0x13ab4d[_0x6791('0x7f')]?util[_0x6791('0xf0')](_0x6791('0xf5'),_0x1d1840[_0x6791('0xf6')],_0x13ab4d[_0x6791('0x7f')]):_0x6791('0xf7');}var _0xd5e51f=util[_0x6791('0xf0')](_0x6791('0xfd'),moment(_0x13ab4d[_0x6791('0x84')])['format'](_0x6791('0xfe')),_0x13ab4d[_0x6791('0xff')]==='in'?_0x54f969:_0x7f7b0d,_0x13ab4d[_0x6791('0x38')]);if(!_0x13ab4d[_0x6791('0x100')]){fs[_0x6791('0x101')](_0xeeee25,_0xd5e51f);}}return db['MailAccount'][_0x6791('0xc4')]({'where':{'service':!![]},'include':[{'model':db[_0x6791('0x102')],'as':_0x6791('0x103'),'raw':!![]}]});}}})['then'](function(_0x287f0){if(_0x287f0&&_0x287f0[_0x6791('0x103')]&&_0x217690['body']){var _0x505914={'tls':{'rejectUnauthorized':![]}};if(_0x287f0[_0x6791('0x103')][_0x6791('0x104')]){_0x505914[_0x6791('0x104')]=_0x287f0['Smtp'][_0x6791('0x104')];}else{_0x505914['host']=_0x287f0[_0x6791('0x103')][_0x6791('0x105')];_0x505914[_0x6791('0x106')]=_0x287f0[_0x6791('0x103')][_0x6791('0x106')];_0x505914[_0x6791('0x107')]=_0x287f0[_0x6791('0x103')][_0x6791('0x107')];}if(_0x287f0['Smtp'][_0x6791('0x108')]){_0x505914['auth']={'user':_0x287f0[_0x6791('0x103')][_0x6791('0xa0')],'pass':_0x287f0[_0x6791('0x103')][_0x6791('0x109')]};}return respondWithRpcPromise(_0x6791('0x10a'),_0x6791('0x10b'),{'account':_0x505914,'message':{'from':util[_0x6791('0xf0')]('\x22%s\x22\x20<%s>',_0x287f0[_0x6791('0x35')],_0x287f0['email']||_0x287f0['Smtp'][_0x6791('0xa0')]),'to':_0x217690[_0x6791('0x38')][_0x6791('0xed')],'subject':_0x6791('0x10c'),'text':util[_0x6791('0xf0')](_0x6791('0x10d'),_0x217690['body'][_0x6791('0xed')]),'attachments':[{'path':_0xeeee25}]}})[_0x6791('0x1f')](function(){return _0x216b49;})[_0x6791('0xba')](function(_0x598e2a){console[_0x6791('0x26')](_0x598e2a);});}else{return _0x216b49;}})[_0x6791('0x1f')](respondWithStatusCode(_0x3f8140,0xc8))[_0x6791('0xba')](handleError(_0x3f8140,null));};exports[_0x6791('0x10e')]=function(_0x1c5b2e,_0x2d5291,_0x881fc6){return db[_0x6791('0xd7')][_0x6791('0x6d')]({'where':{'id':_0x1c5b2e['params']['id']}})[_0x6791('0x1f')](handleEntityNotFound(_0x2d5291,null))[_0x6791('0x1f')](function(_0x5096ae){if(_0x5096ae){return _0x5096ae['addMessage'](_0x1c5b2e['body'][_0x6791('0x10f')],_[_0x6791('0x110')](_0x1c5b2e[_0x6791('0x38')],[_0x6791('0x10f'),'id'])||{});}})[_0x6791('0x1f')](respondWithResult(_0x2d5291,null))[_0x6791('0xba')](handleError(_0x2d5291,null));};exports['getMessages']=function(_0x541ee8,_0x4876ef,_0x48d62f){var _0x2e5b68={'raw':![],'where':{}};var _0x56fadd={};var _0x5ad2f9={'count':0x0,'rows':[]};return db[_0x6791('0x44')][_0x6791('0xc4')]({'where':{'id':_0x541ee8[_0x6791('0xbc')]['id']}})['then'](handleEntityNotFound(_0x4876ef,null))[_0x6791('0x1f')](function(_0x117382){if(_0x117382){_0x56fadd['model']=_[_0x6791('0x49')](db[_0x6791('0xd7')][_0x6791('0x45')]);_0x56fadd['query']=_[_0x6791('0x49')](_0x541ee8[_0x6791('0x4a')]);_0x56fadd[_0x6791('0x53')]=_[_0x6791('0x4b')](_0x56fadd[_0x6791('0x48')],_0x56fadd[_0x6791('0x4a')]);_0x2e5b68[_0x6791('0x4c')]=_['intersection'](_0x56fadd['model'],qs[_0x6791('0x4d')](_0x541ee8[_0x6791('0x4a')][_0x6791('0x4d')]));_0x2e5b68[_0x6791('0x4c')]=_0x2e5b68[_0x6791('0x4c')]['length']?_0x2e5b68[_0x6791('0x4c')]:_0x56fadd[_0x6791('0x48')];if(!_0x541ee8[_0x6791('0x4a')][_0x6791('0x4e')]('nolimit')){_0x2e5b68['limit']=qs[_0x6791('0x2c')](_0x541ee8[_0x6791('0x4a')][_0x6791('0x2c')]);_0x2e5b68[_0x6791('0x2d')]=qs[_0x6791('0x2d')](_0x541ee8[_0x6791('0x4a')][_0x6791('0x2d')]);}_0x2e5b68['order']=qs[_0x6791('0x50')](_0x541ee8[_0x6791('0x4a')]['sort']);_0x2e5b68[_0x6791('0x51')]=qs[_0x6791('0x53')](_[_0x6791('0x52')](_0x541ee8['query'],_0x56fadd[_0x6791('0x53')]));_0x2e5b68[_0x6791('0x51')][_0x6791('0xb8')]=_0x117382['id'];if(_0x541ee8[_0x6791('0x4a')]['filter']){_0x2e5b68[_0x6791('0x51')]=_[_0x6791('0x37')](_0x2e5b68[_0x6791('0x51')],{'$or':_[_0x6791('0x3c')](_0x2e5b68['attributes'],function(_0x1b96a8){var _0x4f2e87={};_0x4f2e87[_0x1b96a8]={'$like':'%'+_0x541ee8[_0x6791('0x4a')][_0x6791('0x91')]+'%'};return _0x4f2e87;})});}if(_0x541ee8[_0x6791('0x4a')][_0x6791('0x86')]){var _0x267d3f=_0x541ee8[_0x6791('0x4a')]['$gte'][_0x6791('0x40')](',');var _0x1fe4f3={};_0x1fe4f3[_0x267d3f[0x0]]={'$gte':moment(_0x267d3f[0x1])[_0x6791('0xf0')](_0x6791('0x111'))};_0x2e5b68['where']=_['merge'](_0x2e5b68['where'],_0x1fe4f3);}_0x2e5b68=_['merge']({},_0x2e5b68,_0x541ee8[_0x6791('0xbf')]);return db[_0x6791('0xd7')][_0x6791('0x2e')]({'where':_0x2e5b68[_0x6791('0x51')]})[_0x6791('0x1f')](function(_0x28265e){_0x5ad2f9[_0x6791('0x2e')]=_0x28265e;if(_0x541ee8['query'][_0x6791('0xbd')]){_0x2e5b68['include']=[{'all':!![]}];}return db[_0x6791('0xd7')][_0x6791('0x112')](_0x2e5b68);})[_0x6791('0x1f')](function(_0x5a1d1d){_0x5ad2f9[_0x6791('0x113')]=_0x5a1d1d;return _0x5ad2f9;});}})[_0x6791('0x1f')](respondWithFilteredResult(_0x4876ef,_0x2e5b68))[_0x6791('0xba')](handleError(_0x4876ef,null));};exports[_0x6791('0x114')]=function(_0x202f0a,_0x2f4e6f,_0x4dd36a){var _0x42370c={'where':{}},_0x5a23ba={},_0x5088cd={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x6791('0xc4')]({'where':{'id':_0x202f0a[_0x6791('0xbc')]['id']}})[_0x6791('0x1f')](handleEntityNotFound(_0x2f4e6f,null))[_0x6791('0x1f')](function(_0xe4951){if(_0xe4951){_0x5a23ba[_0x6791('0x48')]=_[_0x6791('0x49')](db[_0x6791('0xd7')][_0x6791('0x45')]);_0x5a23ba['query']=_[_0x6791('0x49')](_0x202f0a['query']);_0x5a23ba[_0x6791('0x53')]=_[_0x6791('0x4b')](_0x5a23ba[_0x6791('0x48')],_0x5a23ba[_0x6791('0x4a')]);_0x42370c[_0x6791('0x4c')]=_[_0x6791('0x4b')](_0x5a23ba[_0x6791('0x48')],qs['fields'](_0x202f0a[_0x6791('0x4a')]['fields']));_0x42370c['attributes']=_0x42370c[_0x6791('0x4c')][_0x6791('0xa7')]?_0x42370c['attributes']:_0x5a23ba[_0x6791('0x48')];if(!_0x202f0a[_0x6791('0x4a')][_0x6791('0x4e')](_0x6791('0x4f'))){_0x42370c[_0x6791('0x2c')]=qs['limit'](_0x202f0a[_0x6791('0x4a')][_0x6791('0x2c')]);_0x42370c[_0x6791('0x2d')]=qs[_0x6791('0x2d')](_0x202f0a[_0x6791('0x4a')]['offset']);}_0x42370c[_0x6791('0x9b')]=qs['sort'](_0x202f0a['query'][_0x6791('0x50')]);_0x42370c['where']=qs[_0x6791('0x53')](_['pick'](_0x202f0a[_0x6791('0x4a')],_0x5a23ba[_0x6791('0x53')]));_0x42370c[_0x6791('0x51')][_0x6791('0xb8')]=_0xe4951['id'];if(_0x202f0a[_0x6791('0x4a')][_0x6791('0x91')]){_0x42370c[_0x6791('0x51')]=_[_0x6791('0x37')](_0x42370c[_0x6791('0x51')],{'$or':_['map'](_0x42370c['attributes'],function(_0x50e02c){var _0x2d7581={};_0x2d7581[_0x50e02c]={'$like':'%'+_0x202f0a[_0x6791('0x4a')][_0x6791('0x91')]+'%'};return _0x2d7581;})});}_0x42370c[_0x6791('0x51')][_0x6791('0x100')]=![];if(_0x202f0a[_0x6791('0x4a')]['id']){_0x42370c['where']['id']={'$gt':_0x202f0a['query']['id']};}_0x42370c=_[_0x6791('0x37')]({},_0x42370c,_0x202f0a[_0x6791('0xbf')]);return db[_0x6791('0xd7')]['count']({'where':_0x42370c[_0x6791('0x51')]})[_0x6791('0x1f')](function(_0x4a143f){_0x5088cd['count']=_0x4a143f;_0x42370c[_0x6791('0xbe')]=[];if(_0x202f0a[_0x6791('0x4a')][_0x6791('0x115')]){_0x42370c[_0x6791('0xbe')][_0x6791('0x42')]({'model':db[_0x6791('0x7d')],'as':_0x6791('0x7d'),'attributes':['id',_0x6791('0x3d'),_0x6791('0xfb')]});}if(_0x202f0a[_0x6791('0x4a')][_0x6791('0xbd')]){_0x42370c[_0x6791('0xbe')]=[{'all':!![]}];}return db[_0x6791('0xd7')][_0x6791('0x112')](_0x42370c);})[_0x6791('0x1f')](function(_0x44dc2a){_0x5088cd['rows']=_0x44dc2a;return _0x5088cd;});}})[_0x6791('0x1f')](respondWithFilteredResult(_0x2f4e6f,_0x42370c))['catch'](handleError(_0x2f4e6f,null));};exports[_0x6791('0x116')]=function(_0x9c2cb,_0x5038f2,_0x7e30d9){return db[_0x6791('0x44')]['find']({'where':{'id':_0x9c2cb[_0x6791('0xbc')]['id']}})['then'](handleEntityNotFound(_0x5038f2,null))[_0x6791('0x1f')](function(_0xd53708){if(_0xd53708){return _0xd53708['setTags'](_0x9c2cb['body']['ids'],_[_0x6791('0x110')](_0x9c2cb[_0x6791('0x38')],['ids','id'])||{})[_0x6791('0x117')](function(){return db[_0x6791('0x118')][_0x6791('0x112')]({'attributes':['id','name',_0x6791('0x56')],'where':{'id':_0x9c2cb[_0x6791('0x38')][_0x6791('0x10f')]}});})[_0x6791('0x1f')](function(_0x5e3c66){socket[_0x6791('0x119')]('chatInteractionTags:save',{'id':Number(_0x9c2cb[_0x6791('0xbc')]['id']),'tags':_0x5e3c66||[]});return{'id':Number(_0x9c2cb[_0x6791('0xbc')]['id']),'tags':_0x5e3c66||[]};});}})[_0x6791('0x1f')](respondWithResult(_0x5038f2,null))['catch'](handleError(_0x5038f2,null));};exports[_0x6791('0x11a')]=function(_0x10530c,_0x521cae,_0x3f4172){return db[_0x6791('0x44')]['find']({'where':{'id':_0x10530c[_0x6791('0xbc')]['id']}})[_0x6791('0x1f')](handleEntityNotFound(_0x521cae,null))[_0x6791('0x1f')](function(_0x926ee4){if(_0x926ee4){return _0x926ee4[_0x6791('0x11a')](_0x10530c[_0x6791('0x4a')][_0x6791('0x10f')]);}})['then'](respondWithStatusCode(_0x521cae,null))[_0x6791('0xba')](handleError(_0x521cae,null));};exports[_0x6791('0x11b')]=function(_0x22dbd0,_0x1cc5c3){var _0x1d2613=moment()[_0x6791('0x11c')]()[_0x6791('0xa6')]();var _0x1d3607=path[_0x6791('0xea')](config[_0x6791('0xee')],_0x6791('0x11d'),_0x6791('0x11e'),_0x6791('0x11f'));var _0x3b3363=path[_0x6791('0xea')](config['root'],'server',_0x6791('0x11e'),_0x6791('0x120'));var _0x56d353=path[_0x6791('0xea')](_0x1d3607,_0x1d2613);var _0x481b70=util[_0x6791('0xf0')](_0x6791('0x121'),_0x22dbd0[_0x6791('0xbc')]['id'],_0x1d2613);var _0x1caa00=path[_0x6791('0xea')](_0x1d3607,_0x481b70);var _0x14d7e3=[];_0x14d7e3[_0x6791('0x42')]({'model':db[_0x6791('0x7d')],'as':_0x6791('0x7d'),'attributes':['id',_0x6791('0x3d')],'raw':!![]});_0x14d7e3[_0x6791('0x42')]({'model':db[_0x6791('0xf4')],'as':'Contact','attributes':['id',_0x6791('0x122'),_0x6791('0x123')],'raw':!![]});if(_0x22dbd0[_0x6791('0x4a')][_0x6791('0x120')]){_0x14d7e3[_0x6791('0x42')]({'model':db[_0x6791('0xe6')],'as':_0x6791('0xe6'),'raw':!![]});}var _0xb8d13a=[{'model':db[_0x6791('0xd7')],'as':_0x6791('0xf2'),'attributes':['id',_0x6791('0x38'),_0x6791('0x84'),_0x6791('0xff'),_0x6791('0x100'),_0x6791('0x124')],'include':_0x14d7e3}];_0xb8d13a[_0x6791('0x42')]({'model':db[_0x6791('0xf3')],'as':_0x6791('0x125'),'attributes':['id','name']});_0xb8d13a[_0x6791('0x42')]({'model':db['User'],'as':_0x6791('0x126'),'attributes':['id','fullname']});return db[_0x6791('0x44')][_0x6791('0x6d')]({'where':{'id':_0x22dbd0['params']['id']},'include':_0xb8d13a})[_0x6791('0x1f')](handleEntityNotFound(_0x1cc5c3,null))[_0x6791('0x1f')](function(_0x3c7b66){if(_0x3c7b66){var _0x3d7e1f=_0x3c7b66[_0x6791('0x127')]({'plain':!![]});fs[_0x6791('0x128')](_0x56d353);var _0x2e6bc5={'channel':_0x6791('0x129'),'account':_0x3d7e1f[_0x6791('0x125')][_0x6791('0x35')],'agent':_0x3d7e1f[_0x6791('0x126')]?_0x3d7e1f[_0x6791('0x126')][_0x6791('0x3d')]:_0x6791('0x12a'),'createdAt':moment(_0x3d7e1f[_0x6791('0x84')])[_0x6791('0xf0')](_0x6791('0x111'))[_0x6791('0xa6')](),'closedAt':_0x3d7e1f[_0x6791('0xde')]?moment(_0x3d7e1f[_0x6791('0x12b')])[_0x6791('0xf0')](_0x6791('0x111'))['toString']():'','disposition':_0x3d7e1f[_0x6791('0xdf')],'chatInfo':{'browser':_0x3d7e1f[_0x6791('0x12c')],'os':_0x3d7e1f[_0x6791('0x12d')],'referer':_0x3d7e1f[_0x6791('0x12e')],'customerIp':_0x3d7e1f[_0x6791('0x12f')],'customerPort':_0x3d7e1f[_0x6791('0x130')]?_0x3d7e1f[_0x6791('0x130')]:_0x6791('0x12a')},'messages':_(_0x3d7e1f[_0x6791('0xf2')])[_0x6791('0x131')]()[_0x6791('0x91')]({'secret':![]})[_0x6791('0x3c')](function(_0x449a9f){if(_0x449a9f[_0x6791('0xe6')]){var _0xc6d9ba=path[_0x6791('0xea')](_0x3b3363,_0x449a9f[_0x6791('0xe6')][_0x6791('0xe4')]);if(fs['existsSync'](_0xc6d9ba)){fs[_0x6791('0x132')](_0xc6d9ba)['pipe'](fs[_0x6791('0x133')](path['join'](_0x56d353,_0x449a9f[_0x6791('0xe6')][_0x6791('0xe4')])));}}return{'date':moment(_0x449a9f[_0x6791('0x84')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x6791('0xa6')](),'sender':_0x449a9f[_0x6791('0xff')]===_0x6791('0x134')?_0x449a9f[_0x6791('0x7d')]?_0x449a9f['User'][_0x6791('0x3d')]:'System':_0x449a9f['Contact'][_0x6791('0x122')]+(_0x449a9f[_0x6791('0x72')][_0x6791('0x123')]?'\x20'+_0x449a9f[_0x6791('0x72')][_0x6791('0x123')]:''),'body':_0x449a9f[_0x6791('0xe6')]?_0x449a9f[_0x6791('0xe6')]['basename']:_0x449a9f[_0x6791('0x38')],'direction':_0x449a9f['direction']===_0x6791('0x134')?'A':'C','secret':_0x449a9f['secret'],'read':_0x449a9f[_0x6791('0x124')],'attachment':_0x449a9f[_0x6791('0xe6')]};})[_0x6791('0x6f')]()};return ejs['renderFile'](path[_0x6791('0xea')](config[_0x6791('0xee')],_0x6791('0x11d'),_0x6791('0x135'),_0x6791('0x136')),{'interaction':_0x2e6bc5})[_0x6791('0x1f')](function(_0x2946bd){var _0x4ede2f=path[_0x6791('0xea')](_0x56d353,_0x6791('0x137')+_0x3d7e1f['id']+'-'+_0x1d2613+_0x6791('0x138'));var _0x2a8d18={'path':_0x4ede2f,'channel':_0x6791('0x129'),'interactionId':_0x3d7e1f['id']};return pdf[_0x6791('0x139')](_0x2946bd,_0x2a8d18);})[_0x6791('0x1f')](function(){return new BPromise(function(_0x192f05,_0x1e661a){zipdir(_0x56d353,{'saveTo':_0x1caa00},function(_0x102182,_0x2f15a2){if(_0x102182)return _0x1e661a(_0x102182);return _0x192f05(_0x2f15a2);});})[_0x6791('0x1f')](function(){return new BPromise(function(_0x2aa871,_0x59376b){rimraf(_0x56d353,function(_0xefb45b){if(_0xefb45b)_0x59376b(_0xefb45b);return _0x2aa871();});});})[_0x6791('0x1f')](function(){return _0x1cc5c3['download'](_0x1caa00,_0x481b70,function(_0x4c3ef2){if(_0x4c3ef2){console[_0x6791('0x13a')](_0x6791('0x13b'),_0x4c3ef2);}else{fs[_0x6791('0x13c')](_0x1caa00);}});});});}else{return _0x1cc5c3[_0x6791('0x29')](0xc8);}})['catch'](handleError(_0x1cc5c3,null));};
\ No newline at end of file
+var _0x955f=['CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','resolve','ChatWebsiteId','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','keyBy','ChatInteraction','a.key','Account.key','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','groupBy','ChatInteractionId','all','rows','includeAll','include','options','create','params','describe','createVidaooSession','ChatWebsite','vidaooApiKey','vidaooNote','vidaooMetadata','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','follow','isNull','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','update','disposition','AbandonInteraction','attachmentUpload','originalname','file','mimetype','attachmentDownload','findOne','closed','Unauthorized','Attachment','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','basename','download','close','mailTranscript','root','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','Messages','User','%s%d','agentAlias','System','customer','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','createdAt','MM/DD/YYYY\x20HH:mm:ss','secret','MailAccount','MailServerOut','Smtp','service','host','port','secure','auth','sendMail','\x22%s\x22\x20<%s>','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','pick','includeAgent','findAll','addTags','setTags','spread','Tag','chatInteractionTags:save','removeTags','unix','server','files','attachments','transcript-%d-%s.zip','firstName','direction','Account','get','mkdirSync','Chat','Owner','N.A.','closedAt','browserName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','YYYY-MM-DD\x20HH:mm:ss','lastName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/license/util','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatInteraction,\x20%s,\x20%s','result','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','destroy','stack','name','merge','body','contact','agent','interaction','account','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','index','rawAttributes','fieldName','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','field','color','from','tools_tags','select','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','keys','some','compact','isEmpty','i.ChatWebsiteId\x20IN\x20?','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)'];(function(_0x1124c0,_0x543a5f){var _0x553887=function(_0x1ccd49){while(--_0x1ccd49){_0x1124c0['push'](_0x1124c0['shift']());}};_0x553887(++_0x543a5f);}(_0x955f,0x1eb));var _0xf955=function(_0x377fce,_0x3c3db5){_0x377fce=_0x377fce-0x0;var _0x75d6a0=_0x955f[_0x377fce];return _0x75d6a0;};'use strict';var emlformat=require(_0xf955('0x0'));var rimraf=require(_0xf955('0x1'));var zipdir=require(_0xf955('0x2'));var jsonpatch=require(_0xf955('0x3'));var rp=require(_0xf955('0x4'));var moment=require('moment');var BPromise=require(_0xf955('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf955('0x6'));var sox=require('sox');var csv=require(_0xf955('0x7'));var ejs=require(_0xf955('0x8'));var fs=require('fs');var fs_extra=require(_0xf955('0x9'));var _=require('lodash');var squel=require(_0xf955('0xa'));var crypto=require(_0xf955('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf955('0xc'));var toCsv=require(_0xf955('0x7'));var querystring=require(_0xf955('0xd'));var Papa=require(_0xf955('0xe'));var Redis=require(_0xf955('0xf'));var authService=require(_0xf955('0x10'));var qs=require(_0xf955('0x11'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xf955('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf955('0x13'))(_0xf955('0x14'));var utils=require(_0xf955('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf955('0x16'));var db=require('../../mysqldb')['db'];config[_0xf955('0x17')]=_['defaults'](config[_0xf955('0x17')],{'host':_0xf955('0x18'),'port':0x18eb});var socket=require(_0xf955('0x19'))(new Redis(config[_0xf955('0x17')]));require(_0xf955('0x1a'))[_0xf955('0x1b')](socket);var jayson=require(_0xf955('0x1c'));var client=jayson[_0xf955('0x1d')][_0xf955('0x1e')]({'port':0x232b});var client9004=jayson[_0xf955('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0xc29b35,_0x54e60b,_0x3139d5,_0x3a814f){return new BPromise(function(_0x2f881b,_0x15c07c){var _0x50930d=_0x3a814f||client;return _0x50930d['request'](_0xc29b35,_0x3139d5)[_0xf955('0x1f')](function(_0xe6de5c){logger[_0xf955('0x20')]('ChatInteraction,\x20%s,\x20%s',_0x54e60b,_0xf955('0x21'));logger[_0xf955('0x22')](_0xf955('0x23'),_0x54e60b,_0xf955('0x21'),JSON[_0xf955('0x24')](_0xe6de5c));if(_0xe6de5c['error']){if(_0xe6de5c[_0xf955('0x25')][_0xf955('0x26')]===0x1f4){logger[_0xf955('0x25')]('ChatInteraction,\x20%s,\x20%s',_0x54e60b,_0xe6de5c[_0xf955('0x25')]['message']);return _0x15c07c(_0xe6de5c[_0xf955('0x25')][_0xf955('0x27')]);}logger[_0xf955('0x25')](_0xf955('0x28'),_0x54e60b,_0xe6de5c[_0xf955('0x25')]['message']);return _0x2f881b(_0xe6de5c[_0xf955('0x25')][_0xf955('0x27')]);}else{logger[_0xf955('0x20')](_0xf955('0x28'),_0x54e60b,_0xf955('0x21'));_0x2f881b(_0xe6de5c[_0xf955('0x29')][_0xf955('0x27')]);}})['catch'](function(_0x18f435){logger[_0xf955('0x25')](_0xf955('0x28'),_0x54e60b,_0x18f435);_0x15c07c(_0x18f435);});});}function respondWithStatusCode(_0x406632,_0x2dcd55){_0x2dcd55=_0x2dcd55||0xcc;return function(_0x13a86d){if(_0x13a86d){return _0x406632[_0xf955('0x2a')](_0x2dcd55);}return _0x406632['status'](_0x2dcd55)[_0xf955('0x2b')]();};}function respondWithResult(_0x145098,_0x41c9f6){_0x41c9f6=_0x41c9f6||0xc8;return function(_0xbd0b74){if(_0xbd0b74){return _0x145098[_0xf955('0x2c')](_0x41c9f6)[_0xf955('0x2d')](_0xbd0b74);}};}function respondWithFilteredResult(_0x4d4af0,_0x2232a7){return function(_0x1e5d37){if(_0x1e5d37){var _0x4ec3e8=typeof _0x2232a7[_0xf955('0x2e')]===_0xf955('0x2f')&&typeof _0x2232a7[_0xf955('0x30')]===_0xf955('0x2f');var _0x59bfb5=_0x1e5d37[_0xf955('0x31')];var _0x518fb3=_0x4ec3e8?0x0:_0x2232a7[_0xf955('0x2e')];var _0x2c222a=_0x4ec3e8?_0x1e5d37[_0xf955('0x31')]:_0x2232a7[_0xf955('0x2e')]+_0x2232a7[_0xf955('0x30')];var _0x32121b;if(_0x2c222a>=_0x59bfb5){_0x2c222a=_0x59bfb5;_0x32121b=0xc8;}else{_0x32121b=0xce;}_0x4d4af0[_0xf955('0x2c')](_0x32121b);return _0x4d4af0[_0xf955('0x32')]('Content-Range',_0x518fb3+'-'+_0x2c222a+'/'+_0x59bfb5)[_0xf955('0x2d')](_0x1e5d37);}return null;};}function patchUpdates(_0x165cc4){return function(_0x3964d3){try{jsonpatch[_0xf955('0x33')](_0x3964d3,_0x165cc4,!![]);}catch(_0x4fea0c){return BPromise[_0xf955('0x34')](_0x4fea0c);}return _0x3964d3[_0xf955('0x35')]();};}function saveUpdates(_0x3c81bc,_0xe1b436){return function(_0xdbc53e){if(_0xdbc53e){return _0xdbc53e['update'](_0x3c81bc)['then'](function(_0x5480db){return _0x5480db;});}return null;};}function removeEntity(_0x2626cb,_0x3783dc){return function(_0x374e95){if(_0x374e95){return _0x374e95[_0xf955('0x36')]()[_0xf955('0x1f')](function(){_0x2626cb[_0xf955('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3acc4b,_0x515dc6){return function(_0x8f842f){if(!_0x8f842f){_0x3acc4b[_0xf955('0x2a')](0x194);}return _0x8f842f;};}function handleError(_0xe33ef2,_0x51762d){_0x51762d=_0x51762d||0x1f4;return function(_0x60a421){logger['error'](_0x60a421[_0xf955('0x37')]);if(_0x60a421[_0xf955('0x38')]){delete _0x60a421[_0xf955('0x38')];}_0xe33ef2[_0xf955('0x2c')](_0x51762d)['send'](_0x60a421);};}function getMustacheRender(_0xf35170,_0x118c92){return Mustache['render'](_0xf35170,_[_0xf955('0x39')](_0x118c92[_0xf955('0x3a')],{'contact':_0x118c92[_0xf955('0x3b')],'message':_0x118c92['message'],'agent':_0x118c92[_0xf955('0x3c')],'interaction':_0x118c92[_0xf955('0x3d')],'account':_0x118c92[_0xf955('0x3e')]}))||'';}function getInteractionUsers(_0x488b6e,_0x97e8ff){return new BPromise(function(_0x195faa,_0x21e4a6){try{if(_0x97e8ff[_0x488b6e['id']]){_0x488b6e[_0xf955('0x3f')]=_[_0xf955('0x40')](_0x97e8ff[_0x488b6e['id']],function(_0x3c4b29){return{'id':_0x3c4b29['id'],'fullname':_0x3c4b29[_0xf955('0x41')]};});}}catch(_0x228dae){_0x21e4a6(_0x228dae);}_0x195faa(_0x488b6e);});}function getInteractionTags(_0x5671c7,_0x8fa41b){return new BPromise(function(_0x7123c1,_0x2aacdf){try{if(_0x5671c7[_0xf955('0x42')]){_0x5671c7[_0xf955('0x43')]=[];_0x5671c7[_0xf955('0x42')][_0xf955('0x44')](',')[_0xf955('0x45')](function(_0x47651b){_0x5671c7[_0xf955('0x43')][_0xf955('0x46')](_0x8fa41b[_0x47651b]);});}delete _0x5671c7[_0xf955('0x42')];}catch(_0x40d7e9){_0x2aacdf(_0x40d7e9);}_0x7123c1(_0x5671c7);});}function updateChatInteraction(_0x159ae3,_0x3557b5,_0x248f60){return new BPromise(function(_0x356ec2,_0x34f0f1){return getInteractionUsers(_0x159ae3,_0x248f60)[_0xf955('0x1f')](function(_0x5dd300){return getInteractionTags(_0x5dd300,_0x3557b5);})[_0xf955('0x1f')](function(_0x25d809){_0x356ec2(_0x25d809);})[_0xf955('0x47')](function(_0x5f0ef9){_0x34f0f1(_0x5f0ef9);});});}exports[_0xf955('0x48')]=function(_0x485e77,_0x398224){var _0x56a4ca={},_0x103ac2={},_0x24cb74={'count':0x0,'rows':[]};var _0x213136=_[_0xf955('0x40')](db['ChatInteraction'][_0xf955('0x49')],function(_0xdb1cc){return{'name':_0xdb1cc[_0xf955('0x4a')],'type':_0xdb1cc['type']['key']};});_0x103ac2[_0xf955('0x4b')]=_[_0xf955('0x40')](_0x213136,_0xf955('0x38'));_0x103ac2[_0xf955('0x4c')]=_['keys'](_0x485e77[_0xf955('0x4c')]);_0x103ac2[_0xf955('0x4d')]=_[_0xf955('0x4e')](_0x103ac2['model'],_0x103ac2[_0xf955('0x4c')]);_0x56a4ca['attributes']=_[_0xf955('0x4e')](_0x103ac2[_0xf955('0x4b')],qs[_0xf955('0x4f')](_0x485e77['query'][_0xf955('0x4f')]));_0x56a4ca[_0xf955('0x50')]=_0x56a4ca[_0xf955('0x50')][_0xf955('0x51')]?_0x56a4ca['attributes']:_0x103ac2[_0xf955('0x4b')];if(!_0x485e77[_0xf955('0x4c')][_0xf955('0x52')](_0xf955('0x53'))){_0x56a4ca[_0xf955('0x30')]=qs['limit'](_0x485e77[_0xf955('0x4c')]['limit']);_0x56a4ca[_0xf955('0x2e')]=qs['offset'](_0x485e77[_0xf955('0x4c')]['offset']);}_0x56a4ca['order']=qs[_0xf955('0x54')](_0x485e77[_0xf955('0x4c')]['sort']);_0x56a4ca[_0xf955('0x55')]=qs['filters'](_['pick'](_0x485e77['query'],_0x103ac2['filters']),_0x213136);var _0x3c37e2=[];var _0x1abe1c=squel['select']()['field']('id')[_0xf955('0x56')](_0xf955('0x38'))[_0xf955('0x56')](_0xf955('0x57'))[_0xf955('0x58')](_0xf955('0x59'));var _0x190500=squel[_0xf955('0x5a')]()[_0xf955('0x56')](_0xf955('0x5b'))[_0xf955('0x56')](_0xf955('0x5c'))['field'](_0xf955('0x5d'))[_0xf955('0x58')](_0xf955('0x5e'),'ui')[_0xf955('0x5f')](_0xf955('0x60'),'u','u.id\x20=\x20ui.UserId');var _0xf5d575=squel[_0xf955('0x5a')]()[_0xf955('0x58')](_0xf955('0x61'),'i')[_0xf955('0x5f')](_0xf955('0x62'),'c',_0xf955('0x63'))[_0xf955('0x5f')](_0xf955('0x60'),'o',_0xf955('0x64'))['left_join'](_0xf955('0x65'),'a',_0xf955('0x66'))[_0xf955('0x5f')](_0xf955('0x67'),'me',_0xf955('0x68'))[_0xf955('0x5f')](_0xf955('0x69'),'it',_0xf955('0x6a'))[_0xf955('0x5f')](_0xf955('0x59'),'t',_0xf955('0x6b'));var _0x2b8173=squel['expr']();var _0x1388a0=[];var _0x452de9=squel[_0xf955('0x6c')]();var _0x3eb727;if(_0x485e77[_0xf955('0x4c')][_0xf955('0x6d')]){_0x3eb727=as[_0xf955('0x6e')](_0x485e77['query']['search']);var _0x5e73ff=_0x3eb727[_0xf955('0x6f')];for(var _0x530ec7=0x0;_0x530ec7<_0x3eb727['conditions'][_0xf955('0x51')];_0x530ec7++){var _0x533e0f=_0x3eb727[_0xf955('0x70')][_0x530ec7];var _0x3fa5b5='i';var _0x158469=_[_0xf955('0x71')](_0x213136,['name',_0x533e0f[_0xf955('0x56')]]);if(!_0x158469){switch(_0x533e0f[_0xf955('0x56')]){case _0xf955('0x72'):if(_0x533e0f[_0xf955('0x73')]==0x1){_0xf5d575[_0xf955('0x74')]('`'+_0x533e0f['field']+_0xf955('0x75'));}else{_0xf5d575['having']('`'+_0x533e0f[_0xf955('0x56')]+_0xf955('0x76'));}break;case _0xf955('0x77'):if(_0x533e0f['operator']===_0xf955('0x78')){if(_0x533e0f[_0xf955('0x73')][_0xf955('0x44')]('\x20')[_0xf955('0x51')]>0x1){_0x2b8173[_0x5e73ff](_0xf955('0x79'),qs[_0xf955('0x7a')](_0x533e0f[_0xf955('0x73')]),null);}else{var _0x47e5de='%'+_0x533e0f['value']+'%';_0x2b8173[_0x5e73ff](_0xf955('0x7b'),_0x47e5de,_0x47e5de,_0x47e5de);}}else{_0x158469=_[_0xf955('0x71')](_0x213136,[_0xf955('0x38'),_0xf955('0x7c')]);_0x533e0f[_0xf955('0x56')]=_0xf955('0x7c');_0x4b85c2=as[_0xf955('0x7d')](_0x3fa5b5,_0x158469[_0xf955('0x7e')],_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2[_0xf955('0x73')][_0xf955('0x80')],_0x4b85c2['value'][_0xf955('0x2b')]);}break;case'Tag':var _0x431729=_0x533e0f['value']['split'](',')[_0xf955('0x40')](function(_0x20f11c){return Number(_0x20f11c);});_0x431729['forEach'](function(_0x1e95c3){_0x452de9['or'](_0xf955('0x81'),'%,'+_0x1e95c3+',%');});_0x1388a0=_['union'](_0x1388a0,_0x431729);break;case'User':if(_0x533e0f[_0xf955('0x82')]===_0xf955('0x78')){_0x2b8173[_0x5e73ff](_0xf955('0x83'),'%'+_0x533e0f['value']+'%',null);}else{_0x158469=_[_0xf955('0x71')](_0x213136,[_0xf955('0x38'),_0xf955('0x84')]);_0x533e0f[_0xf955('0x56')]=_0xf955('0x84');_0x4b85c2=as[_0xf955('0x7d')](_0x3fa5b5,_0x158469[_0xf955('0x7e')],_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2['value'][_0xf955('0x80')],_0x4b85c2[_0xf955('0x73')]['end']);}break;case _0xf955('0x3a'):_0x4b85c2=as[_0xf955('0x7d')]('me',null,_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2[_0xf955('0x73')]['start'],_0x4b85c2[_0xf955('0x73')][_0xf955('0x2b')]);break;}}else{var _0x4b85c2=as['buildExpression'](_0x3fa5b5,_0x158469[_0xf955('0x7e')],_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2[_0xf955('0x73')][_0xf955('0x80')],_0x4b85c2['value'][_0xf955('0x2b')]);}}}else{var _0x430571=_(_0x485e77[_0xf955('0x4c')])[_0xf955('0x85')]()[_0xf955('0x40')](function(_0x3e9c6e){return _[_0xf955('0x86')](_0x213136,[_0xf955('0x38'),_0x3e9c6e])?_0x3e9c6e:undefined;})[_0xf955('0x87')]()[_0xf955('0x73')]();if(!_[_0xf955('0x88')](_0x430571)){_0x430571[_0xf955('0x45')](function(_0x4254a2){if(_0x4254a2==='ChatWebsiteId'){_0xf5d575[_0xf955('0x55')](_0xf955('0x89'),[][_0xf955('0x8a')](_0x485e77[_0xf955('0x4c')][_0x4254a2]));}else if(_0x4254a2==='createdAt'){var _0xcf6900=JSON[_0xf955('0x8b')](_0x485e77[_0xf955('0x4c')][_0x4254a2])[_0xf955('0x8c')];var _0x2b266d=JSON[_0xf955('0x8b')](_0x485e77[_0xf955('0x4c')][_0x4254a2])[_0xf955('0x8d')];_0xf5d575[_0xf955('0x55')](_0xf955('0x8e'),_0xcf6900,_0x2b266d);}else{if(_0x485e77[_0xf955('0x4c')][_0x4254a2]==='null'){_0xf5d575[_0xf955('0x55')]('i.'+_0x4254a2+_0xf955('0x8f'));}else{_0xf5d575[_0xf955('0x55')]('i.'+_0x4254a2+_0xf955('0x90'),_0x485e77[_0xf955('0x4c')][_0x4254a2]);}}});}if(_0x485e77[_0xf955('0x4c')][_0xf955('0x91')]){if(_0x485e77['query'][_0xf955('0x91')]==0x1){_0xf5d575['having'](_0xf955('0x92'));}else{_0xf5d575['having'](_0xf955('0x93'));}}if(_0x485e77[_0xf955('0x4c')][_0xf955('0x94')]){_0x1388a0=_[_0xf955('0x95')](_0x485e77[_0xf955('0x4c')][_0xf955('0x94')])?_0x485e77['query'][_0xf955('0x94')]:new Array(_0x485e77[_0xf955('0x4c')][_0xf955('0x94')]);_0x1388a0['forEach'](function(_0x526346){_0x452de9['or'](_0xf955('0x81'),'%,'+_0x526346+',%');});}if(_0x485e77[_0xf955('0x4c')][_0xf955('0x96')]){var _0x595d60=_0x485e77[_0xf955('0x4c')]['filter'][_0xf955('0x97')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xf955('0x98')](_0x595d60)){_0x2b8173['or'](_0xf955('0x99'),_0x595d60+'%');}else{_0x2b8173['or'](_0xf955('0x9a'),qs['getFullTextValue'](_0x595d60))['or'](_0xf955('0x9b'),_0x595d60+'%');}}}_0xf5d575[_0xf955('0x55')](_0x2b8173);_0xf5d575[_0xf955('0x9c')]('i.id');var _0xba62d0={'type':db[_0xf955('0x9d')][_0xf955('0x9e')][_0xf955('0x9f')],'raw':!![]};var _0x419da5=_0xf5d575[_0xf955('0xa0')]();_0x419da5[_0xf955('0x56')]('i.id');_0x419da5[_0xf955('0x56')](_0xf955('0xa1'),_0xf955('0x72'));if(_0x56a4ca[_0xf955('0xa2')]){_0x56a4ca[_0xf955('0xa2')]['forEach'](function(_0x15c3e1){var _0x23f90c=_0x15c3e1[0x0]==='contactName'?_0x15c3e1[0x0]:'i.'+_0x15c3e1[0x0];_0xf5d575['order'](_0x23f90c,_0x15c3e1[0x1]===_0xf955('0xa3')?![]:!![]);});}if(!_[_0xf955('0x88')](_0x1388a0)){_0xf5d575[_0xf955('0x74')](_0x452de9);_0x419da5[_0xf955('0x55')]('t.id\x20IN\x20?',_0x1388a0);}BPromise[_0xf955('0xa4')]()['then'](function(){if(!_0x3eb727){if(_0x485e77['query'][_0xf955('0xa5')])return;_0x419da5[_0xf955('0x55')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0xf5d575['where'](_0xf955('0xa6'));return;}if(_0x485e77[_0xf955('0xa7')][_0xf955('0xa8')]!=='agent')return;return _0x485e77['user'][_0xf955('0xa9')]({'attributes':['id'],'raw':!![]})[_0xf955('0x1f')](function(_0x15fc7e){if(_['isEmpty'](_0x15fc7e)){_0x419da5['where']('i.ChatWebsiteId\x20IS\x20NULL');_0xf5d575['where'](_0xf955('0xaa'));}else{_0x419da5['where'](_0xf955('0x89'),_[_0xf955('0x40')](_0x15fc7e,'id'));_0xf5d575[_0xf955('0x55')](_0xf955('0x89'),_[_0xf955('0x40')](_0x15fc7e,'id'));}});})['then'](function(){if(_0x485e77[_0xf955('0xa7')][_0xf955('0xa8')]===_0xf955('0x3c')&&!_0x3eb727&&!_0x485e77[_0xf955('0x4c')]['ChatWebsiteId'])return[];return db[_0xf955('0xab')][_0xf955('0x4c')](_0x419da5['toString'](),_0xba62d0);})[_0xf955('0x1f')](function(_0x1819f6){_0x24cb74[_0xf955('0x31')]=_0x1819f6[_0xf955('0x51')];if(_0x24cb74[_0xf955('0x31')]===0x0)return[];return db[_0xf955('0xab')]['query'](_0x1abe1c['toString'](),_0xba62d0)[_0xf955('0x1f')](function(_0x545275){_0x3c37e2=_[_0xf955('0xac')](_0x545275,'id');_0xba62d0=_[_0xf955('0x39')](_0xba62d0,{'model':db[_0xf955('0xad')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x485e77[_0xf955('0x4c')]['fields']){_0x56a4ca['attributes'][_0xf955('0x45')](function(_0x12b9f8){_0xf5d575[_0xf955('0x56')]('i.'+_0x12b9f8);});}else{_0xf5d575[_0xf955('0x56')](_0xf955('0xa1'),'unreadMessages');_0xf5d575[_0xf955('0x56')](_0xf955('0xae'),_0xf955('0xaf'));_0xf5d575[_0xf955('0x56')]('a.mandatoryDisposition','Account.mandatoryDisposition');_0xf5d575[_0xf955('0x56')](_0xf955('0xb0'),'contactName');_0xf5d575[_0xf955('0x56')](_0xf955('0xb1'));_0xf5d575[_0xf955('0x56')](_0xf955('0xb2'),'Contact.firstName');_0xf5d575[_0xf955('0x56')](_0xf955('0xb3'),_0xf955('0xb4'));_0xf5d575[_0xf955('0x56')](_0xf955('0xb5'),_0xf955('0xb6'));_0xf5d575[_0xf955('0x56')]('c.phone','Contact.phone');_0xf5d575['field'](_0xf955('0xb7'),_0xf955('0xb8'));_0xf5d575[_0xf955('0x56')](_0xf955('0xb9'),_0xf955('0xba'));_0xf5d575[_0xf955('0x56')](_0xf955('0xbb'),'Owner.fullname');_0xf5d575[_0xf955('0x56')](_0xf955('0xbc'),'Owner.internal');_0xf5d575[_0xf955('0x56')](_0xf955('0xbd'),_0xf955('0x42'));}if(_0x56a4ca[_0xf955('0x30')])_0xf5d575[_0xf955('0x30')](_0x56a4ca[_0xf955('0x30')]);if(_0x56a4ca[_0xf955('0x2e')])_0xf5d575[_0xf955('0x2e')](_0x56a4ca['offset']);return db['sequelize']['query'](_0xf5d575[_0xf955('0xbe')](),_0xba62d0);})[_0xf955('0x1f')](function(_0x210666){if(_0x210666[_0xf955('0x51')]>0x0)_0x190500[_0xf955('0x55')]('ui.ChatInteractionId\x20IN\x20?',_[_0xf955('0x40')](_0x210666,'id'));return db[_0xf955('0xab')][_0xf955('0x4c')](_0x190500[_0xf955('0xbe')](),_0xba62d0)[_0xf955('0x1f')](function(_0x36731b){var _0x11f6f8=_[_0xf955('0xbf')](_0x36731b,_0xf955('0xc0'));var _0x4a71e5=[];_0x210666[_0xf955('0x45')](function(_0x47daca){_0x4a71e5[_0xf955('0x46')](updateChatInteraction(_0x47daca,_0x3c37e2,_0x11f6f8));});return BPromise[_0xf955('0xc1')](_0x4a71e5);});});})[_0xf955('0x1f')](function(_0x427ab9){_0x24cb74[_0xf955('0xc2')]=_0x427ab9;return _0x24cb74;})[_0xf955('0x1f')](respondWithFilteredResult(_0x398224,_0x56a4ca))[_0xf955('0x47')](handleError(_0x398224,null));};exports['show']=function(_0x1ef189,_0x4bb590){var _0x222df2={'raw':![],'where':{'id':_0x1ef189['params']['id']}},_0x40d7c7={};_0x40d7c7[_0xf955('0x4b')]=_[_0xf955('0x85')](db[_0xf955('0xad')][_0xf955('0x49')]);_0x40d7c7[_0xf955('0x4c')]=_[_0xf955('0x85')](_0x1ef189[_0xf955('0x4c')]);_0x40d7c7['filters']=_[_0xf955('0x4e')](_0x40d7c7[_0xf955('0x4b')],_0x40d7c7['query']);_0x222df2[_0xf955('0x50')]=_[_0xf955('0x4e')](_0x40d7c7['model'],qs['fields'](_0x1ef189[_0xf955('0x4c')][_0xf955('0x4f')]));_0x222df2[_0xf955('0x50')]=_0x222df2['attributes'][_0xf955('0x51')]?_0x222df2[_0xf955('0x50')]:_0x40d7c7[_0xf955('0x4b')];if(_0x1ef189[_0xf955('0x4c')][_0xf955('0xc3')]){_0x222df2[_0xf955('0xc4')]=[{'all':!![]}];}_0x222df2=_[_0xf955('0x39')]({},_0x222df2,_0x1ef189[_0xf955('0xc5')]);return db[_0xf955('0xad')][_0xf955('0x71')](_0x222df2)[_0xf955('0x1f')](handleEntityNotFound(_0x4bb590,null))[_0xf955('0x1f')](respondWithResult(_0x4bb590,null))[_0xf955('0x47')](handleError(_0x4bb590,null));};exports[_0xf955('0xc6')]=function(_0x490981,_0x58464d){return db[_0xf955('0xad')][_0xf955('0xc6')](_0x490981[_0xf955('0x3a')],{})[_0xf955('0x1f')](respondWithResult(_0x58464d,0xc9))[_0xf955('0x47')](handleError(_0x58464d,null));};exports['update']=function(_0x161d06,_0x3bab0d){if(_0x161d06['body']['id']){delete _0x161d06[_0xf955('0x3a')]['id'];}return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0x161d06[_0xf955('0xc7')]['id']}})['then'](handleEntityNotFound(_0x3bab0d,null))[_0xf955('0x1f')](saveUpdates(_0x161d06['body'],null))[_0xf955('0x1f')](respondWithResult(_0x3bab0d,null))[_0xf955('0x47')](handleError(_0x3bab0d,null));};exports[_0xf955('0x36')]=function(_0xe9f9a8,_0x5aff59){return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0xe9f9a8[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x5aff59,null))[_0xf955('0x1f')](removeEntity(_0x5aff59,null))['catch'](handleError(_0x5aff59,null));};exports[_0xf955('0xc8')]=function(_0x1f38db,_0x395013){return db['ChatInteraction'][_0xf955('0xc8')]()[_0xf955('0x1f')](respondWithResult(_0x395013,null))[_0xf955('0x47')](handleError(_0x395013,null));};exports[_0xf955('0xc9')]=function(_0x19665c,_0x437020){var _0x12d158=_0x19665c['params']['id'];var _0x5a6abe;var _0x4e3013;var _0x345a7c;return db[_0xf955('0xad')]['findOne']({'where':{'id':_0x12d158}})[_0xf955('0x1f')](function(_0x42ba43){_0x5a6abe=_0x42ba43;return db[_0xf955('0xca')]['findOne']({'where':{'id':_0x42ba43[_0xf955('0xa5')]},'attributes':['id',_0xf955('0xcb'),'vidaooEscalation','vidaooTopic',_0xf955('0xcc'),_0xf955('0xcd')],'raw':!![]});})[_0xf955('0x1f')](function(_0x30baa1){if(_0x30baa1&&_0x30baa1[_0xf955('0xcb')]&&_0x30baa1['vidaooEscalation']){_0x4e3013=_0x30baa1;var _0xc881d4={'interaction':{'id':_0x12d158},'agent':{'id':_0x19665c[_0xf955('0xa7')]['id'],'name':_0x19665c[_0xf955('0xa7')][_0xf955('0x38')],'fullname':_0x19665c[_0xf955('0xa7')]['fullname'],'email':_0x19665c[_0xf955('0xa7')][_0xf955('0xce')]},'contact':_0x19665c[_0xf955('0x3a')][_0xf955('0x3b')],'account':_0x19665c['body'][_0xf955('0x3e')]};var _0x410d1f={'rejectUnauthorized':![],'method':_0xf955('0xcf'),'url':_0xf955('0xd0'),'headers':{'X-APIKEY':_0x30baa1[_0xf955('0xcb')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x19665c['user'][_0xf955('0xce')]],'buttons':null,'topic':_0x4e3013[_0xf955('0xd1')],'note':_['isNull'](_0x4e3013[_0xf955('0xcc')])?null:getMustacheRender(_0x4e3013[_0xf955('0xcc')],_0xc881d4),'metadata':null},'redirect':_0xf955('0xd2'),'json':!![]};try{if(!_[_0xf955('0xd3')](_0x4e3013[_0xf955('0xcd')])){var _0x38e031=getMustacheRender(_0x4e3013[_0xf955('0xcd')],_0xc881d4);var _0x4f53ef=JSON[_0xf955('0x8b')](_0x38e031);_0x410d1f[_0xf955('0x3a')]['metadata']=_0x4f53ef;}}catch(_0x5395aa){throw new db[(_0xf955('0x9d'))][(_0xf955('0xd4'))](_0xf955('0xd5'));}return rp(_0x410d1f);}else{throw new db[(_0xf955('0x9d'))]['ValidationError'](_0xf955('0xd6'));}})[_0xf955('0x1f')](function(_0x57e0d7){_0x345a7c=_0x57e0d7;if(_0x345a7c['id']){var _0x54903a={'body':_0x345a7c[_0xf955('0xd7')],'ChatWebsiteId':_0x4e3013['id'],'ChatInteractionId':_0x5a6abe['id'],'direction':_0xf955('0xd8'),'UserId':_0x19665c[_0xf955('0xa7')]['id']};return db[_0xf955('0xd9')]['create'](_0x54903a,{});}else{throw new db[(_0xf955('0x9d'))][(_0xf955('0xd4'))](_0xf955('0xda'));}})[_0xf955('0x1f')](function(){return _0x5a6abe[_0xf955('0xdb')]({'vidaooSessionId':_0x345a7c['id']});})[_0xf955('0x1f')](respondWithResult(_0x437020,null))[_0xf955('0x47')](handleError(_0x437020,null));};exports[_0xf955('0xdc')]=function(_0x4c7a54,_0xde084e){if(_0x4c7a54[_0xf955('0x3a')]['id']){delete _0x4c7a54[_0xf955('0x3a')]['id'];}return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0x4c7a54[_0xf955('0xc7')]['id']},'include':[{'model':db[_0xf955('0xdd')],'as':_0xf955('0x77')}]})[_0xf955('0x1f')](handleEntityNotFound(_0xde084e,null))[_0xf955('0x1f')](saveUpdates(_0x4c7a54['body'],null))[_0xf955('0x1f')](respondWithResult(_0xde084e,null))[_0xf955('0x47')](handleError(_0xde084e,null));};exports[_0xf955('0xde')]=function(_0x27391f,_0x269ae2,_0x3250df){if(_0x27391f[_0xf955('0x3a')]['id']){delete _0x27391f['body']['id'];}return db[_0xf955('0xad')]['find']({'where':{'id':_0x27391f[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](function(_0x14cde9){if(!_0x14cde9){logger[_0xf955('0x25')](_0xf955('0xdf'),_0xf955('0xde'),0x194,_0xf955('0xe0'));_0x269ae2[_0xf955('0x2a')](0x194);}else{if(_0x14cde9[_0xf955('0x84')]){throw new db['Sequelize'][(_0xf955('0xd4'))](_0xf955('0xe1'));}}return _0x14cde9;})[_0xf955('0x1f')](function(_0x3d5c15){if(_0x3d5c15){return _0x3d5c15[_0xf955('0xe2')]({'closed':_0x27391f[_0xf955('0x3a')]['closed'],'disposition':_0x27391f[_0xf955('0x3a')][_0xf955('0xe3')]})[_0xf955('0x1f')](function(_0x5c8a3f){return _0x5c8a3f;});}})[_0xf955('0x1f')](function(_0x471223){return respondWithRpcPromise(_0xf955('0xe4'),_0xf955('0xde'),_0x27391f[_0xf955('0x3a')],client9004);})[_0xf955('0x1f')](respondWithResult(_0x269ae2,null))['catch'](handleError(_0x269ae2,null));};exports[_0xf955('0xe5')]=function(_0x4775bd,_0x2a862f,_0x42e3eb){_0x4775bd[_0xf955('0x3a')][_0xf955('0x38')]=_0x4775bd['file'][_0xf955('0xe6')];_0x4775bd['body']['basename']=_0x4775bd['file']['filename'];_0x4775bd[_0xf955('0x3a')]['type']=_0x4775bd[_0xf955('0xe7')][_0xf955('0xe8')];return db['Attachment'][_0xf955('0xc6')](_0x4775bd['body'])[_0xf955('0x1f')](respondWithResult(_0x2a862f,0xc9))['catch'](handleError(_0x2a862f,null));};exports[_0xf955('0xe9')]=function(_0x267963,_0x28ce39,_0x43a5c3){return db['ChatInteraction'][_0xf955('0xea')]({'where':{'id':_0x267963['params']['id']},'raw':!![]})[_0xf955('0x1f')](handleEntityNotFound(_0x28ce39,null))[_0xf955('0x1f')](function(_0x30fd01){if(_0x30fd01){if(_0x30fd01[_0xf955('0xeb')]){return _0x28ce39[_0xf955('0x2c')](0x193)[_0xf955('0x2d')]({'status':0x193,'message':_0xf955('0xec')});}return db[_0xf955('0xed')][_0xf955('0xea')]({'where':{'id':_0x267963[_0xf955('0x4c')]['attachId']},'raw':!![]})[_0xf955('0x1f')](handleEntityNotFound(_0x28ce39,null));}})[_0xf955('0x1f')](function(_0x444e24){if(_0x444e24){var _0x2fb11a=_0x444e24[_0xf955('0xee')]!==null;var _0x2ce35c=path[_0xf955('0xef')](config['root'],_0xf955('0xf0'));if(_0x2fb11a){_0x2ce35c=path[_0xf955('0xef')](_0x2ce35c,_0xf955('0xf1'));}var _0x1e35d7=path[_0xf955('0xef')](_0x2ce35c,_0x444e24[_0xf955('0xf2')]);return _0x28ce39[_0xf955('0xf3')](_0x1e35d7);}})[_0xf955('0x47')](handleError(_0x28ce39,null));};exports[_0xf955('0xf4')]=function(_0x38016a,_0x52ad4d){var _0x1620ec=null;var _0x2c8e49=null;var _0x2b3deb=null;var _0x1ae12a=null;if(_0x38016a[_0xf955('0x3a')]['id']){delete _0x38016a[_0xf955('0x3a')]['id'];}if(_0x38016a[_0xf955('0x3a')][_0xf955('0xf5')]){_0x1ae12a=path['join'](config[_0xf955('0xf6')],_0xf955('0xf7'),util[_0xf955('0xf8')](_0xf955('0xf9'),Date[_0xf955('0xfa')]()));_0x38016a[_0xf955('0x3a')][_0xf955('0xfb')]=_0x1ae12a;}return db[_0xf955('0xad')]['find']({'where':{'id':_0x38016a['params']['id']},'include':[{'model':db[_0xf955('0xd9')],'as':_0xf955('0xfc'),'include':[{'model':db[_0xf955('0xfd')],'as':_0xf955('0xfd')}]}]})['then'](handleEntityNotFound(_0x52ad4d,null))['then'](saveUpdates(_0x38016a[_0xf955('0x3a')],null))[_0xf955('0x1f')](function(_0x4860ad){if(_0x4860ad){_0x1620ec=_0x4860ad;return db[_0xf955('0xca')][_0xf955('0x71')]({'where':{'id':_0x1620ec[_0xf955('0xa5')]}});}})[_0xf955('0x1f')](function(_0x1c0211){if(_0x1c0211){_0x2b3deb=_0x1c0211;return db['CmContact'][_0xf955('0x71')]({'where':{'id':_0x1620ec[_0xf955('0x7c')]}});}})[_0xf955('0x1f')](function(_0x106640){if(_0x106640){_0x2c8e49=_0x106640;if(_0x1ae12a){var _0x101722=null;for(var _0x479dc0=0x1;_0x479dc0<_0x1620ec[_0xf955('0xfc')]['length'];++_0x479dc0){_0x101722=_0x1620ec[_0xf955('0xfc')][_0x479dc0];var _0x570005=_0x101722[_0xf955('0x84')]?util[_0xf955('0xf8')](_0xf955('0xfe'),_0x2b3deb[_0xf955('0xff')],_0x101722[_0xf955('0x84')]):_0xf955('0x100');var _0x85661f=_0x38016a[_0xf955('0x3a')][_0xf955('0x101')]||util[_0xf955('0xf8')]('%s%d','Visitor',_0x101722[_0xf955('0x7c')]);switch(_0x2b3deb[_0xf955('0x102')]){case _0xf955('0x103'):_0x570005=_0x101722[_0xf955('0x84')]?util['format']('%s%d',_0x2b3deb[_0xf955('0xff')],_0x101722['UserId']):'System';break;case _0xf955('0x104'):_0x570005=_0x101722['UserId']?_0x101722[_0xf955('0xfd')][_0xf955('0x105')]||_0x101722['User']['fullname']:_0xf955('0x100');break;case _0xf955('0x106'):_0x570005=_0x101722[_0xf955('0x84')]?_0x101722[_0xf955('0xfd')][_0xf955('0x41')]:'System';break;default:_0x570005=_0x101722[_0xf955('0x84')]?util['format']('%s%d',_0x2b3deb['agentAlias'],_0x101722[_0xf955('0x84')]):_0xf955('0x100');}var _0x23d382=util['format']('[%s]\x20%s:\x20%s\x0a',moment(_0x101722[_0xf955('0x107')])['format'](_0xf955('0x108')),_0x101722['direction']==='in'?_0x85661f:_0x570005,_0x101722[_0xf955('0x3a')]);if(!_0x101722[_0xf955('0x109')]){fs['appendFileSync'](_0x1ae12a,_0x23d382);}}return db[_0xf955('0x10a')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xf955('0x10b')],'as':_0xf955('0x10c'),'raw':!![]}]});}}})[_0xf955('0x1f')](function(_0x1e6165){if(_0x1e6165&&_0x1e6165[_0xf955('0x10c')]&&_0x38016a['body']){var _0x4a6338={'tls':{'rejectUnauthorized':![]}};if(_0x1e6165[_0xf955('0x10c')][_0xf955('0x10d')]){_0x4a6338[_0xf955('0x10d')]=_0x1e6165[_0xf955('0x10c')][_0xf955('0x10d')];}else{_0x4a6338[_0xf955('0x10e')]=_0x1e6165[_0xf955('0x10c')][_0xf955('0x10e')];_0x4a6338[_0xf955('0x10f')]=_0x1e6165['Smtp'][_0xf955('0x10f')];_0x4a6338[_0xf955('0x110')]=_0x1e6165[_0xf955('0x10c')][_0xf955('0x110')];}if(_0x1e6165[_0xf955('0x10c')]['authentication']){_0x4a6338[_0xf955('0x111')]={'user':_0x1e6165[_0xf955('0x10c')]['user'],'pass':_0x1e6165[_0xf955('0x10c')]['pass']};}return respondWithRpcPromise('SendMail',_0xf955('0x112'),{'account':_0x4a6338,'message':{'from':util[_0xf955('0xf8')](_0xf955('0x113'),_0x1e6165[_0xf955('0x38')],_0x1e6165['email']||_0x1e6165[_0xf955('0x10c')][_0xf955('0xa7')]),'to':_0x38016a[_0xf955('0x3a')][_0xf955('0xf5')],'subject':'Mail\x20Transcript','text':util[_0xf955('0xf8')](_0xf955('0x114'),_0x38016a['body'][_0xf955('0xf5')]),'attachments':[{'path':_0x1ae12a}]}})[_0xf955('0x1f')](function(){return _0x1620ec;})[_0xf955('0x47')](function(_0x50502a){console[_0xf955('0x25')](_0x50502a);});}else{return _0x1620ec;}})[_0xf955('0x1f')](respondWithStatusCode(_0x52ad4d,0xc8))[_0xf955('0x47')](handleError(_0x52ad4d,null));};exports['addMessage']=function(_0x1d2e9c,_0x49718e,_0x5aeba7){return db['ChatMessage'][_0xf955('0x71')]({'where':{'id':_0x1d2e9c[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x49718e,null))[_0xf955('0x1f')](function(_0x10cd8e){if(_0x10cd8e){return _0x10cd8e[_0xf955('0x115')](_0x1d2e9c['body'][_0xf955('0x116')],_[_0xf955('0x117')](_0x1d2e9c[_0xf955('0x3a')],[_0xf955('0x116'),'id'])||{});}})[_0xf955('0x1f')](respondWithResult(_0x49718e,null))[_0xf955('0x47')](handleError(_0x49718e,null));};exports[_0xf955('0x118')]=function(_0x287adf,_0x38177d,_0x56a307){var _0x49c6ca={'raw':![],'where':{}};var _0x36f3b3={};var _0x252118={'count':0x0,'rows':[]};return db[_0xf955('0xad')]['findOne']({'where':{'id':_0x287adf['params']['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x38177d,null))['then'](function(_0x1dd4b4){if(_0x1dd4b4){_0x36f3b3[_0xf955('0x4b')]=_[_0xf955('0x85')](db[_0xf955('0xd9')]['rawAttributes']);_0x36f3b3[_0xf955('0x4c')]=_[_0xf955('0x85')](_0x287adf[_0xf955('0x4c')]);_0x36f3b3['filters']=_[_0xf955('0x4e')](_0x36f3b3['model'],_0x36f3b3[_0xf955('0x4c')]);_0x49c6ca[_0xf955('0x50')]=_[_0xf955('0x4e')](_0x36f3b3[_0xf955('0x4b')],qs['fields'](_0x287adf[_0xf955('0x4c')][_0xf955('0x4f')]));_0x49c6ca[_0xf955('0x50')]=_0x49c6ca['attributes'][_0xf955('0x51')]?_0x49c6ca['attributes']:_0x36f3b3[_0xf955('0x4b')];if(!_0x287adf['query'][_0xf955('0x52')]('nolimit')){_0x49c6ca[_0xf955('0x30')]=qs['limit'](_0x287adf['query']['limit']);_0x49c6ca[_0xf955('0x2e')]=qs['offset'](_0x287adf['query'][_0xf955('0x2e')]);}_0x49c6ca[_0xf955('0xa2')]=qs[_0xf955('0x54')](_0x287adf[_0xf955('0x4c')][_0xf955('0x54')]);_0x49c6ca[_0xf955('0x55')]=qs[_0xf955('0x4d')](_[_0xf955('0x119')](_0x287adf['query'],_0x36f3b3[_0xf955('0x4d')]));_0x49c6ca[_0xf955('0x55')][_0xf955('0xc0')]=_0x1dd4b4['id'];if(_0x287adf[_0xf955('0x4c')][_0xf955('0x96')]){_0x49c6ca[_0xf955('0x55')]=_[_0xf955('0x39')](_0x49c6ca[_0xf955('0x55')],{'$or':_[_0xf955('0x40')](_0x49c6ca['attributes'],function(_0x1d1df4){var _0x1b7a62={};_0x1b7a62[_0x1d1df4]={'$like':'%'+_0x287adf[_0xf955('0x4c')][_0xf955('0x96')]+'%'};return _0x1b7a62;})});}if(_0x287adf[_0xf955('0x4c')][_0xf955('0x8c')]){var _0x547464=_0x287adf[_0xf955('0x4c')][_0xf955('0x8c')][_0xf955('0x44')](',');var _0x280d1c={};_0x280d1c[_0x547464[0x0]]={'$gte':moment(_0x547464[0x1])[_0xf955('0xf8')]('YYYY-MM-DD\x20HH:mm:ss')};_0x49c6ca[_0xf955('0x55')]=_[_0xf955('0x39')](_0x49c6ca['where'],_0x280d1c);}_0x49c6ca=_['merge']({},_0x49c6ca,_0x287adf['options']);return db[_0xf955('0xd9')][_0xf955('0x31')]({'where':_0x49c6ca[_0xf955('0x55')]})[_0xf955('0x1f')](function(_0x14bed6){_0x252118[_0xf955('0x31')]=_0x14bed6;if(_0x287adf[_0xf955('0x4c')][_0xf955('0xc3')]){_0x49c6ca[_0xf955('0xc4')]=[{'all':!![]}];}return db[_0xf955('0xd9')]['findAll'](_0x49c6ca);})[_0xf955('0x1f')](function(_0x7996b8){_0x252118[_0xf955('0xc2')]=_0x7996b8;return _0x252118;});}})[_0xf955('0x1f')](respondWithFilteredResult(_0x38177d,_0x49c6ca))[_0xf955('0x47')](handleError(_0x38177d,null));};exports['getMyMessages']=function(_0xac8cdf,_0x70fa9f,_0x5e650f){var _0x39d911={'where':{}},_0x2fbf0c={},_0x1612e4={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xf955('0xea')]({'where':{'id':_0xac8cdf[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x70fa9f,null))[_0xf955('0x1f')](function(_0x1a7da8){if(_0x1a7da8){_0x2fbf0c[_0xf955('0x4b')]=_[_0xf955('0x85')](db['ChatMessage'][_0xf955('0x49')]);_0x2fbf0c['query']=_['keys'](_0xac8cdf['query']);_0x2fbf0c[_0xf955('0x4d')]=_[_0xf955('0x4e')](_0x2fbf0c[_0xf955('0x4b')],_0x2fbf0c[_0xf955('0x4c')]);_0x39d911[_0xf955('0x50')]=_[_0xf955('0x4e')](_0x2fbf0c[_0xf955('0x4b')],qs['fields'](_0xac8cdf['query'][_0xf955('0x4f')]));_0x39d911[_0xf955('0x50')]=_0x39d911['attributes']['length']?_0x39d911[_0xf955('0x50')]:_0x2fbf0c[_0xf955('0x4b')];if(!_0xac8cdf[_0xf955('0x4c')]['hasOwnProperty']('nolimit')){_0x39d911[_0xf955('0x30')]=qs[_0xf955('0x30')](_0xac8cdf[_0xf955('0x4c')][_0xf955('0x30')]);_0x39d911[_0xf955('0x2e')]=qs['offset'](_0xac8cdf['query'][_0xf955('0x2e')]);}_0x39d911[_0xf955('0xa2')]=qs[_0xf955('0x54')](_0xac8cdf[_0xf955('0x4c')]['sort']);_0x39d911[_0xf955('0x55')]=qs[_0xf955('0x4d')](_[_0xf955('0x119')](_0xac8cdf[_0xf955('0x4c')],_0x2fbf0c[_0xf955('0x4d')]));_0x39d911[_0xf955('0x55')]['ChatInteractionId']=_0x1a7da8['id'];if(_0xac8cdf['query'][_0xf955('0x96')]){_0x39d911['where']=_[_0xf955('0x39')](_0x39d911[_0xf955('0x55')],{'$or':_['map'](_0x39d911['attributes'],function(_0x4a3d8c){var _0x170ea7={};_0x170ea7[_0x4a3d8c]={'$like':'%'+_0xac8cdf[_0xf955('0x4c')][_0xf955('0x96')]+'%'};return _0x170ea7;})});}_0x39d911[_0xf955('0x55')][_0xf955('0x109')]=![];if(_0xac8cdf[_0xf955('0x4c')]['id']){_0x39d911[_0xf955('0x55')]['id']={'$gt':_0xac8cdf[_0xf955('0x4c')]['id']};}_0x39d911=_[_0xf955('0x39')]({},_0x39d911,_0xac8cdf['options']);return db[_0xf955('0xd9')]['count']({'where':_0x39d911['where']})[_0xf955('0x1f')](function(_0x36327c){_0x1612e4[_0xf955('0x31')]=_0x36327c;_0x39d911[_0xf955('0xc4')]=[];if(_0xac8cdf['query'][_0xf955('0x11a')]){_0x39d911['include'][_0xf955('0x46')]({'model':db[_0xf955('0xfd')],'as':_0xf955('0xfd'),'attributes':['id',_0xf955('0x41'),'alias']});}if(_0xac8cdf[_0xf955('0x4c')][_0xf955('0xc3')]){_0x39d911[_0xf955('0xc4')]=[{'all':!![]}];}return db[_0xf955('0xd9')][_0xf955('0x11b')](_0x39d911);})[_0xf955('0x1f')](function(_0x3e4239){_0x1612e4[_0xf955('0xc2')]=_0x3e4239;return _0x1612e4;});}})[_0xf955('0x1f')](respondWithFilteredResult(_0x70fa9f,_0x39d911))['catch'](handleError(_0x70fa9f,null));};exports[_0xf955('0x11c')]=function(_0x11a228,_0x2d37c2,_0x932b98){return db[_0xf955('0xad')]['find']({'where':{'id':_0x11a228[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x2d37c2,null))[_0xf955('0x1f')](function(_0x147f3c){if(_0x147f3c){return _0x147f3c[_0xf955('0x11d')](_0x11a228[_0xf955('0x3a')]['ids'],_[_0xf955('0x117')](_0x11a228[_0xf955('0x3a')],[_0xf955('0x116'),'id'])||{})[_0xf955('0x11e')](function(){return db[_0xf955('0x11f')]['findAll']({'attributes':['id',_0xf955('0x38'),_0xf955('0x57')],'where':{'id':_0x11a228[_0xf955('0x3a')]['ids']}});})[_0xf955('0x1f')](function(_0xfcaf21){socket['emit'](_0xf955('0x120'),{'id':Number(_0x11a228[_0xf955('0xc7')]['id']),'tags':_0xfcaf21||[]});return{'id':Number(_0x11a228[_0xf955('0xc7')]['id']),'tags':_0xfcaf21||[]};});}})[_0xf955('0x1f')](respondWithResult(_0x2d37c2,null))[_0xf955('0x47')](handleError(_0x2d37c2,null));};exports['removeTags']=function(_0x572efd,_0x357dbc,_0x2b9880){return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0x572efd[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x357dbc,null))['then'](function(_0x23968f){if(_0x23968f){return _0x23968f[_0xf955('0x121')](_0x572efd[_0xf955('0x4c')][_0xf955('0x116')]);}})['then'](respondWithStatusCode(_0x357dbc,null))[_0xf955('0x47')](handleError(_0x357dbc,null));};exports[_0xf955('0xf3')]=function(_0x3842e1,_0x204e4e){var _0x47b877=moment()[_0xf955('0x122')]()[_0xf955('0xbe')]();var _0x1624e9=path[_0xf955('0xef')](config[_0xf955('0xf6')],_0xf955('0x123'),_0xf955('0x124'),'tmp');var _0x3ccc35=path[_0xf955('0xef')](config[_0xf955('0xf6')],_0xf955('0x123'),_0xf955('0x124'),_0xf955('0x125'));var _0x72b500=path[_0xf955('0xef')](_0x1624e9,_0x47b877);var _0x1d4aa6=util[_0xf955('0xf8')](_0xf955('0x126'),_0x3842e1[_0xf955('0xc7')]['id'],_0x47b877);var _0x4896ae=path[_0xf955('0xef')](_0x1624e9,_0x1d4aa6);var _0x3b67e3=[];_0x3b67e3[_0xf955('0x46')]({'model':db['User'],'as':_0xf955('0xfd'),'attributes':['id','fullname'],'raw':!![]});_0x3b67e3[_0xf955('0x46')]({'model':db[_0xf955('0xdd')],'as':_0xf955('0x77'),'attributes':['id',_0xf955('0x127'),'lastName'],'raw':!![]});if(_0x3842e1['query']['attachments']){_0x3b67e3[_0xf955('0x46')]({'model':db[_0xf955('0xed')],'as':_0xf955('0xed'),'raw':!![]});}var _0x21b589=[{'model':db[_0xf955('0xd9')],'as':'Messages','attributes':['id',_0xf955('0x3a'),_0xf955('0x107'),_0xf955('0x128'),_0xf955('0x109'),'read'],'include':_0x3b67e3}];_0x21b589[_0xf955('0x46')]({'model':db[_0xf955('0xca')],'as':_0xf955('0x129'),'attributes':['id',_0xf955('0x38')]});_0x21b589[_0xf955('0x46')]({'model':db[_0xf955('0xfd')],'as':'Owner','attributes':['id',_0xf955('0x41')]});return db['ChatInteraction'][_0xf955('0x71')]({'where':{'id':_0x3842e1['params']['id']},'include':_0x21b589})[_0xf955('0x1f')](handleEntityNotFound(_0x204e4e,null))[_0xf955('0x1f')](function(_0x1ed31c){if(_0x1ed31c){var _0x2e8dc2=_0x1ed31c[_0xf955('0x12a')]({'plain':!![]});fs[_0xf955('0x12b')](_0x72b500);var _0x58b727={'channel':_0xf955('0x12c'),'account':_0x2e8dc2[_0xf955('0x129')][_0xf955('0x38')],'agent':_0x2e8dc2[_0xf955('0x12d')]?_0x2e8dc2[_0xf955('0x12d')][_0xf955('0x41')]:_0xf955('0x12e'),'createdAt':moment(_0x2e8dc2['createdAt'])[_0xf955('0xf8')]('YYYY-MM-DD\x20HH:mm:ss')[_0xf955('0xbe')](),'closedAt':_0x2e8dc2['closed']?moment(_0x2e8dc2[_0xf955('0x12f')])[_0xf955('0xf8')]('YYYY-MM-DD\x20HH:mm:ss')[_0xf955('0xbe')]():'','disposition':_0x2e8dc2['disposition'],'chatInfo':{'browser':_0x2e8dc2[_0xf955('0x130')],'os':_0x2e8dc2['osName'],'referer':_0x2e8dc2[_0xf955('0x131')],'customerIp':_0x2e8dc2[_0xf955('0x132')],'customerPort':_0x2e8dc2[_0xf955('0x133')]?_0x2e8dc2[_0xf955('0x133')]:'N.A.'},'messages':_(_0x2e8dc2[_0xf955('0xfc')])[_0xf955('0x134')]()[_0xf955('0x96')]({'secret':![]})[_0xf955('0x40')](function(_0x1307a6){if(_0x1307a6[_0xf955('0xed')]){var _0x3328b9=path[_0xf955('0xef')](_0x3ccc35,_0x1307a6['Attachment'][_0xf955('0xf2')]);if(fs[_0xf955('0x135')](_0x3328b9)){fs[_0xf955('0x136')](_0x3328b9)[_0xf955('0x137')](fs['createWriteStream'](path[_0xf955('0xef')](_0x72b500,_0x1307a6[_0xf955('0xed')][_0xf955('0xf2')])));}}return{'date':moment(_0x1307a6[_0xf955('0x107')])[_0xf955('0xf8')](_0xf955('0x138'))['toString'](),'sender':_0x1307a6[_0xf955('0x128')]===_0xf955('0xd8')?_0x1307a6['User']?_0x1307a6[_0xf955('0xfd')][_0xf955('0x41')]:_0xf955('0x100'):_0x1307a6[_0xf955('0x77')][_0xf955('0x127')]+(_0x1307a6[_0xf955('0x77')][_0xf955('0x139')]?'\x20'+_0x1307a6['Contact'][_0xf955('0x139')]:''),'body':_0x1307a6[_0xf955('0xed')]?_0x1307a6[_0xf955('0xed')][_0xf955('0xf2')]:_0x1307a6[_0xf955('0x3a')],'direction':_0x1307a6[_0xf955('0x128')]===_0xf955('0xd8')?'A':'C','secret':_0x1307a6['secret'],'read':_0x1307a6[_0xf955('0x91')],'attachment':_0x1307a6[_0xf955('0xed')]};})[_0xf955('0x73')]()};return ejs[_0xf955('0x13a')](path[_0xf955('0xef')](config[_0xf955('0xf6')],'server',_0xf955('0x13b'),_0xf955('0x13c')),{'interaction':_0x58b727})[_0xf955('0x1f')](function(_0x385676){var _0x5a9193=path['join'](_0x72b500,_0xf955('0x13d')+_0x2e8dc2['id']+'-'+_0x47b877+_0xf955('0x13e'));var _0x157508={'path':_0x5a9193,'channel':'Chat','interactionId':_0x2e8dc2['id']};return pdf[_0xf955('0x13f')](_0x385676,_0x157508);})['then'](function(){return new BPromise(function(_0x37bdd4,_0x4f8fc8){zipdir(_0x72b500,{'saveTo':_0x4896ae},function(_0x5f3e0f,_0x4ad147){if(_0x5f3e0f)return _0x4f8fc8(_0x5f3e0f);return _0x37bdd4(_0x4ad147);});})[_0xf955('0x1f')](function(){return new BPromise(function(_0x2dc607,_0x355871){rimraf(_0x72b500,function(_0x1c5b1d){if(_0x1c5b1d)_0x355871(_0x1c5b1d);return _0x2dc607();});});})[_0xf955('0x1f')](function(){return _0x204e4e[_0xf955('0xf3')](_0x4896ae,_0x1d4aa6,function(_0x5eac2b){if(_0x5eac2b){console[_0xf955('0x140')](_0xf955('0x141'),_0x5eac2b);}else{fs[_0xf955('0x142')](_0x4896ae);}});});});}else{return _0x204e4e[_0xf955('0x2a')](0xc8);}})[_0xf955('0x47')](handleError(_0x204e4e,null));};
\ No newline at end of file
index 3e2c479..adf5ae0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe446=['Users','map','findAll','unreadMessages','length','emit','exports','../../mysqldb','ChatInteraction','save','update','remove','getUsers','then','setDataValue'];(function(_0x26bd9d,_0xa80cf7){var _0x3192d8=function(_0xcee2be){while(--_0xcee2be){_0x26bd9d['push'](_0x26bd9d['shift']());}};_0x3192d8(++_0xa80cf7);}(_0xe446,0x16f));var _0x6e44=function(_0x190abb,_0x5c356d){_0x190abb=_0x190abb-0x0;var _0x31fe0f=_0xe446[_0x190abb];return _0x31fe0f;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0x6e44('0x0'))['db'][_0x6e44('0x1')];var ChatMessage=require('../../mysqldb')['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6e44('0x2'),'afterUpdate':_0x6e44('0x3'),'afterDestroy':_0x6e44('0x4')};function emitEvent(_0x4813c6){return function(_0x59c436,_0x33835c,_0x364793){_0x59c436[_0x6e44('0x5')]({'attributes':['id'],'raw':!![]})[_0x6e44('0x6')](function(_0xd82de4){_0x59c436[_0x6e44('0x7')](_0x6e44('0x8'),_0xd82de4[_0x6e44('0x9')](function(_0x27f75c){return{'id':_0x27f75c['id']};}));return ChatMessage[_0x6e44('0xa')]({'where':{'ChatInteractionId':_0x59c436['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x3d61dc){_0x59c436[_0x6e44('0x7')](_0x6e44('0xb'),_0x3d61dc[_0x6e44('0xc')]);ChatInteractionEvents[_0x6e44('0xd')](_0x4813c6+':'+_0x59c436['id'],_0x59c436);ChatInteractionEvents[_0x6e44('0xd')](_0x4813c6,_0x59c436);_0x364793(null);})['catch'](_0x364793(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x6e44('0xe')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x2280=['hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','update','getUsers','then','Users','map','findAll','unreadMessages','length','emit','hasOwnProperty'];(function(_0x51bcb0,_0x536f31){var _0xd700c8=function(_0x453f0d){while(--_0x453f0d){_0x51bcb0['push'](_0x51bcb0['shift']());}};_0xd700c8(++_0x536f31);}(_0x2280,0xd2));var _0x0228=function(_0x3dfff5,_0x567b17){_0x3dfff5=_0x3dfff5-0x0;var _0x4ad39b=_0x2280[_0x3dfff5];return _0x4ad39b;};'use strict';var EventEmitter=require(_0x0228('0x0'));var ChatInteraction=require(_0x0228('0x1'))['db'][_0x0228('0x2')];var ChatMessage=require(_0x0228('0x1'))['db'][_0x0228('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x0228('0x4'),'afterDestroy':'remove'};function emitEvent(_0x24435b){return function(_0x306d10,_0xd7cde5,_0x22db5c){_0x306d10[_0x0228('0x5')]({'attributes':['id'],'raw':!![]})[_0x0228('0x6')](function(_0x4f7627){_0x306d10['setDataValue'](_0x0228('0x7'),_0x4f7627[_0x0228('0x8')](function(_0x23082d){return{'id':_0x23082d['id']};}));return ChatMessage[_0x0228('0x9')]({'where':{'ChatInteractionId':_0x306d10['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x4cb344){_0x306d10['setDataValue'](_0x0228('0xa'),_0x4cb344[_0x0228('0xb')]);ChatInteractionEvents[_0x0228('0xc')](_0x24435b+':'+_0x306d10['id'],_0x306d10);ChatInteractionEvents['emit'](_0x24435b,_0x306d10);_0x22db5c(null);})['catch'](_0x22db5c(null));};}for(var e in events){if(events[_0x0228('0xd')](e)){var event=events[e];ChatInteraction[_0x0228('0xe')](e,emitEvent(event));}}module[_0x0228('0xf')]=ChatInteractionEvents;
\ No newline at end of file
index 768ec6d..0fb9403 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x640d=['closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./chatInteraction.attributes','ChatInteraction','chat_interactions','changed'];(function(_0x516f6b,_0x48ba9e){var _0xb4607=function(_0x175e74){while(--_0x175e74){_0x516f6b['push'](_0x516f6b['shift']());}};_0xb4607(++_0x48ba9e);}(_0x640d,0xdd));var _0xd640=function(_0x8359e,_0x43c33f){_0x8359e=_0x8359e-0x0;var _0x4ee946=_0x640d[_0x8359e];return _0x4ee946;};'use strict';var _=require(_0xd640('0x0'));var util=require(_0xd640('0x1'));var logger=require(_0xd640('0x2'))(_0xd640('0x3'));var moment=require(_0xd640('0x4'));var BPromise=require(_0xd640('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd640('0x6'));var rimraf=require(_0xd640('0x7'));var config=require(_0xd640('0x8'));var attributes=require(_0xd640('0x9'));module['exports']=function(_0x2793e5,_0x2957dd){return _0x2793e5['define'](_0xd640('0xa'),attributes,{'tableName':_0xd640('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x66ca95,_0xeb071e,_0x7db407){if(_0x66ca95[_0xd640('0xc')](_0xd640('0xd'))){_0x66ca95[_0xd640('0xe')]=moment()[_0xd640('0xf')](_0xd640('0x10'));}_0x7db407(null,_0x66ca95);}},'charset':'utf8mb4','collate':_0xd640('0x11')});};
\ No newline at end of file
+var _0x9963=['request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','util','../../config/logger','api','moment'];(function(_0x24e1ce,_0x4a7103){var _0x12b011=function(_0x3f9e07){while(--_0x3f9e07){_0x24e1ce['push'](_0x24e1ce['shift']());}};_0x12b011(++_0x4a7103);}(_0x9963,0x9b));var _0x3996=function(_0x549d16,_0x4d069a){_0x549d16=_0x549d16-0x0;var _0x344ccc=_0x9963[_0x549d16];return _0x344ccc;};'use strict';var _=require(_0x3996('0x0'));var util=require(_0x3996('0x1'));var logger=require(_0x3996('0x2'))(_0x3996('0x3'));var moment=require(_0x3996('0x4'));var BPromise=require('bluebird');var rp=require(_0x3996('0x5'));var fs=require('fs');var path=require(_0x3996('0x6'));var rimraf=require(_0x3996('0x7'));var config=require(_0x3996('0x8'));var attributes=require(_0x3996('0x9'));module[_0x3996('0xa')]=function(_0x27ed1c,_0x29f36d){return _0x27ed1c[_0x3996('0xb')](_0x3996('0xc'),attributes,{'tableName':_0x3996('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2c101d,_0x525a3,_0xffddd9){if(_0x2c101d[_0x3996('0xe')](_0x3996('0xf'))){_0x2c101d[_0x3996('0x10')]=moment()[_0x3996('0x11')](_0x3996('0x12'));}_0xffddd9(null,_0x2c101d);}},'charset':_0x3996('0x13'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 82cef93..2aa5e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1cf=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw','where','attributes','limit','then','debug','AddTagsToChatInteraction','addTags','omit','ids','AddTags'];(function(_0x2b51dc,_0x3b6e45){var _0x4bda0e=function(_0x5e9a16){while(--_0x5e9a16){_0x2b51dc['push'](_0x2b51dc['shift']());}};_0x4bda0e(++_0x3b6e45);}(_0xd1cf,0x126));var _0xfd1c=function(_0x42020e,_0x4b92fb){_0x42020e=_0x42020e-0x0;var _0x561551=_0xd1cf[_0x42020e];return _0x561551;};'use strict';var _=require(_0xfd1c('0x0'));var util=require('util');var moment=require(_0xfd1c('0x1'));var BPromise=require(_0xfd1c('0x2'));var rs=require(_0xfd1c('0x3'));var fs=require('fs');var Redis=require(_0xfd1c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfd1c('0x5'));var logger=require(_0xfd1c('0x6'))('rpc');var config=require(_0xfd1c('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xfd1c('0x8')][_0xfd1c('0x9')]({'port':0x232a});config[_0xfd1c('0xa')]=_['defaults'](config[_0xfd1c('0xa')],{'host':_0xfd1c('0xb'),'port':0x18eb});var socket=require(_0xfd1c('0xc'))(new Redis(config[_0xfd1c('0xa')]));require(_0xfd1c('0xd'))[_0xfd1c('0xe')](socket);function respondWithRpcPromise(_0x45e01d,_0x37cf00,_0x3a3b18){return new BPromise(function(_0x29b001,_0x1bf524){return client[_0xfd1c('0xf')](_0x45e01d,_0x3a3b18)['then'](function(_0x36e500){logger[_0xfd1c('0x10')](_0xfd1c('0x11'),_0x37cf00,_0xfd1c('0x12'));logger['debug'](_0xfd1c('0x13'),_0x37cf00,'request\x20sent',JSON[_0xfd1c('0x14')](_0x36e500));if(_0x36e500[_0xfd1c('0x15')]){if(_0x36e500[_0xfd1c('0x15')][_0xfd1c('0x16')]===0x1f4){logger[_0xfd1c('0x15')](_0xfd1c('0x11'),_0x37cf00,_0x36e500['error'][_0xfd1c('0x17')]);return _0x1bf524(_0x36e500[_0xfd1c('0x15')][_0xfd1c('0x17')]);}logger[_0xfd1c('0x15')](_0xfd1c('0x11'),_0x37cf00,_0x36e500[_0xfd1c('0x15')]['message']);return _0x29b001(_0x36e500[_0xfd1c('0x15')][_0xfd1c('0x17')]);}else{logger[_0xfd1c('0x10')](_0xfd1c('0x11'),_0x37cf00,_0xfd1c('0x12'));_0x29b001(_0x36e500[_0xfd1c('0x18')][_0xfd1c('0x17')]);}})[_0xfd1c('0x19')](function(_0x3f2ca8){logger[_0xfd1c('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x37cf00,_0x3f2ca8);_0x1bf524(_0x3f2ca8);});});}exports[_0xfd1c('0x1a')]=function(_0x11719f){var _0x559a2c=this;return new Promise(function(_0x297f79,_0x51a8da){return db[_0xfd1c('0x1b')][_0xfd1c('0x1c')](_0x11719f[_0xfd1c('0x1d')],{'raw':_0x11719f[_0xfd1c('0x1e')]?_0x11719f[_0xfd1c('0x1e')][_0xfd1c('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11719f[_0xfd1c('0x1e')]?_0x11719f[_0xfd1c('0x1e')][_0xfd1c('0x20')]||null:null,'attributes':_0x11719f['options']?_0x11719f[_0xfd1c('0x1e')][_0xfd1c('0x21')]||null:null,'limit':_0x11719f[_0xfd1c('0x1e')]?_0x11719f[_0xfd1c('0x1e')][_0xfd1c('0x22')]||null:null})[_0xfd1c('0x23')](function(_0x510668){logger[_0xfd1c('0x10')](_0xfd1c('0x1a'),_0x11719f);logger[_0xfd1c('0x24')](_0xfd1c('0x1a'),_0x11719f,JSON[_0xfd1c('0x14')](_0x510668));_0x297f79(_0x510668);})[_0xfd1c('0x19')](function(_0x2e116f){logger[_0xfd1c('0x15')](_0xfd1c('0x1a'),_0x2e116f[_0xfd1c('0x17')],_0x11719f);_0x51a8da(_0x559a2c['error'](0x1f4,_0x2e116f[_0xfd1c('0x17')]));});});};exports[_0xfd1c('0x25')]=function(_0x886368){return new Promise(function(_0x35e58a,_0x2bf9a9){return db[_0xfd1c('0x1b')]['find']({'where':_0x886368[_0xfd1c('0x1e')]?_0x886368[_0xfd1c('0x1e')][_0xfd1c('0x20')]||null:null})[_0xfd1c('0x23')](function(_0x4dc86d){if(_0x4dc86d){return _0x4dc86d[_0xfd1c('0x26')](_0x886368[_0xfd1c('0x1d')]['ids'],_[_0xfd1c('0x27')](_0x886368[_0xfd1c('0x1d')],[_0xfd1c('0x28'),'id'])||{});}})['spread'](function(_0x3e74cb){logger[_0xfd1c('0x10')]('AddTags',_0x886368);logger[_0xfd1c('0x24')]('AddTags',_0x886368,JSON[_0xfd1c('0x14')](_0x3e74cb));_0x35e58a(_0x3e74cb);})[_0xfd1c('0x19')](function(_0x4df8d4){logger['error'](_0xfd1c('0x29'),_0x4df8d4[_0xfd1c('0x17')],_0x886368);_0x2bf9a9(_this[_0xfd1c('0x15')](0x1f4,_0x4df8d4['message']));});});};
\ No newline at end of file
+var _0x29d2=['addTags','ids','omit','spread','AddTags','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','request','then','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','update','body','options','where','limit','UpdateChatInteraction','AddTagsToChatInteraction','ChatInteraction','find'];(function(_0x34fb71,_0x2e2652){var _0x5ae560=function(_0x438157){while(--_0x438157){_0x34fb71['push'](_0x34fb71['shift']());}};_0x5ae560(++_0x2e2652);}(_0x29d2,0xcd));var _0x229d=function(_0x870840,_0x5da3ce){_0x870840=_0x870840-0x0;var _0xa81d7d=_0x29d2[_0x870840];return _0xa81d7d;};'use strict';var _=require('lodash');var util=require(_0x229d('0x0'));var moment=require('moment');var BPromise=require(_0x229d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x229d('0x2'))['db'];var utils=require(_0x229d('0x3'));var logger=require(_0x229d('0x4'))(_0x229d('0x5'));var config=require(_0x229d('0x6'));var jayson=require(_0x229d('0x7'));var client=jayson[_0x229d('0x8')][_0x229d('0x9')]({'port':0x232a});config['redis']=_[_0x229d('0xa')](config[_0x229d('0xb')],{'host':_0x229d('0xc'),'port':0x18eb});var socket=require(_0x229d('0xd'))(new Redis(config[_0x229d('0xb')]));require('./chatInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x10a2b2,_0x57ee6e,_0x548fdb){return new BPromise(function(_0x23a329,_0x2cdfad){return client[_0x229d('0xe')](_0x10a2b2,_0x548fdb)[_0x229d('0xf')](function(_0x591b23){logger[_0x229d('0x10')](_0x229d('0x11'),_0x57ee6e,'request\x20sent');logger[_0x229d('0x12')](_0x229d('0x13'),_0x57ee6e,_0x229d('0x14'),JSON[_0x229d('0x15')](_0x591b23));if(_0x591b23['error']){if(_0x591b23['error'][_0x229d('0x16')]===0x1f4){logger[_0x229d('0x17')](_0x229d('0x11'),_0x57ee6e,_0x591b23[_0x229d('0x17')][_0x229d('0x18')]);return _0x2cdfad(_0x591b23[_0x229d('0x17')][_0x229d('0x18')]);}logger[_0x229d('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x57ee6e,_0x591b23[_0x229d('0x17')][_0x229d('0x18')]);return _0x23a329(_0x591b23[_0x229d('0x17')]['message']);}else{logger[_0x229d('0x10')](_0x229d('0x11'),_0x57ee6e,'request\x20sent');_0x23a329(_0x591b23['result'][_0x229d('0x18')]);}})[_0x229d('0x19')](function(_0x4872a4){logger[_0x229d('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x57ee6e,_0x4872a4);_0x2cdfad(_0x4872a4);});});}exports['UpdateChatInteraction']=function(_0x6e0319){var _0x29d92e=this;return new Promise(function(_0xa130c2,_0x1425f9){return db['ChatInteraction'][_0x229d('0x1a')](_0x6e0319[_0x229d('0x1b')],{'raw':_0x6e0319[_0x229d('0x1c')]?_0x6e0319[_0x229d('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6e0319['options']?_0x6e0319[_0x229d('0x1c')][_0x229d('0x1d')]||null:null,'attributes':_0x6e0319[_0x229d('0x1c')]?_0x6e0319['options']['attributes']||null:null,'limit':_0x6e0319['options']?_0x6e0319['options'][_0x229d('0x1e')]||null:null})[_0x229d('0xf')](function(_0x1f1199){logger[_0x229d('0x10')](_0x229d('0x1f'),_0x6e0319);logger[_0x229d('0x12')]('UpdateChatInteraction',_0x6e0319,JSON[_0x229d('0x15')](_0x1f1199));_0xa130c2(_0x1f1199);})[_0x229d('0x19')](function(_0x7a864d){logger[_0x229d('0x17')](_0x229d('0x1f'),_0x7a864d[_0x229d('0x18')],_0x6e0319);_0x1425f9(_0x29d92e[_0x229d('0x17')](0x1f4,_0x7a864d[_0x229d('0x18')]));});});};exports[_0x229d('0x20')]=function(_0x4081b5){return new Promise(function(_0x199766,_0x95541d){return db[_0x229d('0x21')][_0x229d('0x22')]({'where':_0x4081b5[_0x229d('0x1c')]?_0x4081b5['options'][_0x229d('0x1d')]||null:null})[_0x229d('0xf')](function(_0x1f0340){if(_0x1f0340){return _0x1f0340[_0x229d('0x23')](_0x4081b5[_0x229d('0x1b')][_0x229d('0x24')],_[_0x229d('0x25')](_0x4081b5[_0x229d('0x1b')],[_0x229d('0x24'),'id'])||{});}})[_0x229d('0x26')](function(_0x2940e7){logger[_0x229d('0x10')]('AddTags',_0x4081b5);logger[_0x229d('0x12')](_0x229d('0x27'),_0x4081b5,JSON[_0x229d('0x15')](_0x2940e7));_0x199766(_0x2940e7);})['catch'](function(_0x3e4736){logger[_0x229d('0x17')](_0x229d('0x27'),_0x3e4736[_0x229d('0x18')],_0x4081b5);_0x95541d(_this[_0x229d('0x17')](0x1f4,_0x3e4736[_0x229d('0x18')]));});});};
\ No newline at end of file
index c4d2e7a..7f76ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d95=['register','length','chatInteraction:','./chatInteraction.events','save','update','emit'];(function(_0x33c974,_0x3ce56d){var _0x12778b=function(_0x35ebc6){while(--_0x35ebc6){_0x33c974['push'](_0x33c974['shift']());}};_0x12778b(++_0x3ce56d);}(_0x5d95,0x161));var _0x55d9=function(_0x56702d,_0x14b2e9){_0x56702d=_0x56702d-0x0;var _0x107a02=_0x5d95[_0x56702d];return _0x107a02;};'use strict';var ChatInteractionEvents=require(_0x55d9('0x0'));var events=[_0x55d9('0x1'),'remove',_0x55d9('0x2')];function createListener(_0x2135ff,_0x29e725){return function(_0x266634){_0x29e725[_0x55d9('0x3')](_0x2135ff,_0x266634);};}function removeListener(_0x5b0d8b,_0x4e5305){return function(){ChatInteractionEvents['removeListener'](_0x5b0d8b,_0x4e5305);};}exports[_0x55d9('0x4')]=function(_0x3f057d){for(var _0x4c1b2f=0x0,_0x50d0db=events[_0x55d9('0x5')];_0x4c1b2f<_0x50d0db;_0x4c1b2f++){var _0x22af9a=events[_0x4c1b2f];var _0x5cd22d=createListener(_0x55d9('0x6')+_0x22af9a,_0x3f057d);ChatInteractionEvents['on'](_0x22af9a,_0x5cd22d);}};
\ No newline at end of file
+var _0x91a4=['remove','update','removeListener','register','length','chatInteraction:','./chatInteraction.events','save'];(function(_0x1a2b00,_0x49c0d6){var _0x5c3cfb=function(_0x5ecd11){while(--_0x5ecd11){_0x1a2b00['push'](_0x1a2b00['shift']());}};_0x5c3cfb(++_0x49c0d6);}(_0x91a4,0xa6));var _0x491a=function(_0x1ae605,_0x4ba9cb){_0x1ae605=_0x1ae605-0x0;var _0x33f96e=_0x91a4[_0x1ae605];return _0x33f96e;};'use strict';var ChatInteractionEvents=require(_0x491a('0x0'));var events=[_0x491a('0x1'),_0x491a('0x2'),_0x491a('0x3')];function createListener(_0x15feec,_0x157185){return function(_0x18eaad){_0x157185['emit'](_0x15feec,_0x18eaad);};}function removeListener(_0x23a72c,_0xf35b27){return function(){ChatInteractionEvents[_0x491a('0x4')](_0x23a72c,_0xf35b27);};}exports[_0x491a('0x5')]=function(_0x1078bb){for(var _0x470ea4=0x0,_0x302d05=events[_0x491a('0x6')];_0x470ea4<_0x302d05;_0x470ea4++){var _0x29e6d7=events[_0x470ea4];var _0x60dbfe=createListener(_0x491a('0x7')+_0x29e6d7,_0x1078bb);ChatInteractionEvents['on'](_0x29e6d7,_0x60dbfe);}};
\ No newline at end of file
index f3edae7..afa05ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0a2=['chatinteraction:addtags','addTags','put','tracked','chatinteraction:update','/:id/custom_update','customUpdate','/:id/abandon','/:id/close','chatinteraction:destroy','delete','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','isAuthenticated','get','/describe','describe','/:id','isChatInteractionAuthorized','show','/:id/messages','/:id/my_messages','getMyMessages','/:id/download','download','post','create','/:id/vidaoo','createVidaooSession','diskStorage','join','format','originalname','single','file','attachmentUpload','addMessage','/:id/tags','chat'];(function(_0x1e6035,_0x5496f9){var _0x30cb59=function(_0x28a86d){while(--_0x28a86d){_0x1e6035['push'](_0x1e6035['shift']());}};_0x30cb59(++_0x5496f9);}(_0xd0a2,0x71));var _0x2d0a=function(_0x888385,_0x9cdc66){_0x888385=_0x888385-0x0;var _0x22d5c2=_0xd0a2[_0x888385];return _0x22d5c2;};'use strict';var multer=require(_0x2d0a('0x0'));var util=require(_0x2d0a('0x1'));var path=require(_0x2d0a('0x2'));var timeout=require(_0x2d0a('0x3'));var express=require(_0x2d0a('0x4'));var router=express[_0x2d0a('0x5')]();var fs_extra=require(_0x2d0a('0x6'));var auth=require(_0x2d0a('0x7'));var interaction=require(_0x2d0a('0x8'));var config=require(_0x2d0a('0x9'));var controller=require(_0x2d0a('0xa'));router['get']('/',auth[_0x2d0a('0xb')](),controller['index']);router[_0x2d0a('0xc')](_0x2d0a('0xd'),auth['isAuthenticated'](),controller[_0x2d0a('0xe')]);router['get'](_0x2d0a('0xf'),auth[_0x2d0a('0x10')](),controller[_0x2d0a('0x11')]);router[_0x2d0a('0xc')]('/:id/attachment_download',auth[_0x2d0a('0x10')](),controller['attachmentDownload']);router[_0x2d0a('0xc')](_0x2d0a('0x12'),auth[_0x2d0a('0xb')](),controller['getMessages']);router[_0x2d0a('0xc')](_0x2d0a('0x13'),auth[_0x2d0a('0x10')](),controller[_0x2d0a('0x14')]);router['get'](_0x2d0a('0x15'),auth[_0x2d0a('0xb')](),controller[_0x2d0a('0x16')]);router[_0x2d0a('0x17')]('/',auth['isAuthenticated'](),controller[_0x2d0a('0x18')]);router[_0x2d0a('0x17')](_0x2d0a('0x19'),auth[_0x2d0a('0xb')](),controller[_0x2d0a('0x1a')]);var upload=multer({'storage':multer[_0x2d0a('0x1b')]({'destination':function(_0x52b8fb,_0x5de826,_0x44087a){_0x44087a(null,path[_0x2d0a('0x1c')](config['root'],'server/files/attachments/'));},'filename':function(_0x602f15,_0x26e923,_0x3a476a){_0x3a476a(null,util[_0x2d0a('0x1d')]('%s-%s',Date['now'](),_0x26e923[_0x2d0a('0x1e')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2d0a('0x17')]('/:id/attachment_upload',upload[_0x2d0a('0x1f')](_0x2d0a('0x20')),controller[_0x2d0a('0x21')]);router[_0x2d0a('0x17')]('/:id/messages',auth[_0x2d0a('0x10')](),controller[_0x2d0a('0x22')]);router[_0x2d0a('0x17')](_0x2d0a('0x23'),auth[_0x2d0a('0xb')](),interaction['tracked'](_0x2d0a('0x24'),_0x2d0a('0x25')),controller[_0x2d0a('0x26')]);router[_0x2d0a('0x27')](_0x2d0a('0xf'),auth['isAuthenticated'](),interaction[_0x2d0a('0x28')](_0x2d0a('0x24'),_0x2d0a('0x29')),controller['update']);router[_0x2d0a('0x27')](_0x2d0a('0x2a'),controller[_0x2d0a('0x2b')]);router[_0x2d0a('0x27')](_0x2d0a('0x2c'),auth[_0x2d0a('0x10')](),controller['abandon']);router['put'](_0x2d0a('0x2d'),controller['close']);router['delete'](_0x2d0a('0xf'),auth[_0x2d0a('0xb')](),interaction[_0x2d0a('0x28')](_0x2d0a('0x24'),_0x2d0a('0x2e')),controller['destroy']);router[_0x2d0a('0x2f')](_0x2d0a('0x23'),auth[_0x2d0a('0xb')](),controller[_0x2d0a('0x30')]);module[_0x2d0a('0x31')]=router;
\ No newline at end of file
+var _0x48ad=['removeTags','multer','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','/describe','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','getMyMessages','/:id/download','post','create','root','server/files/attachments/','%s-%s','now','replace','/:id/attachment_upload','single','file','attachmentUpload','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/custom_update','/:id/abandon','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy'];(function(_0x582965,_0x58da5a){var _0x361185=function(_0x416939){while(--_0x416939){_0x582965['push'](_0x582965['shift']());}};_0x361185(++_0x58da5a);}(_0x48ad,0x127));var _0xd48a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x48ad[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd48a('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd48a('0x1'));var router=express['Router']();var fs_extra=require(_0xd48a('0x2'));var auth=require(_0xd48a('0x3'));var interaction=require(_0xd48a('0x4'));var config=require(_0xd48a('0x5'));var controller=require(_0xd48a('0x6'));router[_0xd48a('0x7')]('/',auth[_0xd48a('0x8')](),controller['index']);router['get'](_0xd48a('0x9'),auth[_0xd48a('0x8')](),controller[_0xd48a('0xa')]);router['get'](_0xd48a('0xb'),auth[_0xd48a('0xc')](),controller[_0xd48a('0xd')]);router[_0xd48a('0x7')](_0xd48a('0xe'),auth[_0xd48a('0xc')](),controller[_0xd48a('0xf')]);router[_0xd48a('0x7')](_0xd48a('0x10'),auth['isAuthenticated'](),controller[_0xd48a('0x11')]);router[_0xd48a('0x7')](_0xd48a('0x12'),auth[_0xd48a('0xc')](),controller[_0xd48a('0x13')]);router['get'](_0xd48a('0x14'),auth[_0xd48a('0x8')](),controller['download']);router[_0xd48a('0x15')]('/',auth[_0xd48a('0x8')](),controller[_0xd48a('0x16')]);router[_0xd48a('0x15')]('/:id/vidaoo',auth['isAuthenticated'](),controller['createVidaooSession']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x34cc64,_0x3446ab,_0x397604){_0x397604(null,path['join'](config[_0xd48a('0x17')],_0xd48a('0x18')));},'filename':function(_0x38a4f2,_0x41b479,_0x5340bb){_0x5340bb(null,util['format'](_0xd48a('0x19'),Date[_0xd48a('0x1a')](),_0x41b479['originalname'][_0xd48a('0x1b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xd48a('0x15')](_0xd48a('0x1c'),upload[_0xd48a('0x1d')](_0xd48a('0x1e')),controller[_0xd48a('0x1f')]);router['post'](_0xd48a('0x10'),auth[_0xd48a('0xc')](),controller['addMessage']);router[_0xd48a('0x15')](_0xd48a('0x20'),auth[_0xd48a('0x8')](),interaction[_0xd48a('0x21')](_0xd48a('0x22'),_0xd48a('0x23')),controller[_0xd48a('0x24')]);router[_0xd48a('0x25')]('/:id',auth[_0xd48a('0x8')](),interaction[_0xd48a('0x21')]('chat',_0xd48a('0x26')),controller[_0xd48a('0x27')]);router[_0xd48a('0x25')](_0xd48a('0x28'),controller['customUpdate']);router['put'](_0xd48a('0x29'),auth[_0xd48a('0xc')](),controller[_0xd48a('0x2a')]);router[_0xd48a('0x25')](_0xd48a('0x2b'),controller[_0xd48a('0x2c')]);router[_0xd48a('0x2d')](_0xd48a('0xb'),auth[_0xd48a('0x8')](),interaction[_0xd48a('0x21')]('chat',_0xd48a('0x2e')),controller[_0xd48a('0x2f')]);router[_0xd48a('0x2d')](_0xd48a('0x20'),auth[_0xd48a('0x8')](),controller[_0xd48a('0x30')]);module['exports']=router;
\ No newline at end of file
index 7345cf1..dfde26d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dbe=['medium','sequelize','exports','TEXT'];(function(_0x311df2,_0x5b6291){var _0x2d70d7=function(_0x11d81b){while(--_0x11d81b){_0x311df2['push'](_0x311df2['shift']());}};_0x2d70d7(++_0x5b6291);}(_0x8dbe,0xb1));var _0xe8db=function(_0x58c8b6,_0x547708){_0x58c8b6=_0x58c8b6-0x0;var _0x2b05cf=_0x8dbe[_0x58c8b6];return _0x2b05cf;};'use strict';var Sequelize=require(_0xe8db('0x0'));module[_0xe8db('0x1')]={'body':{'type':Sequelize[_0xe8db('0x2')](_0xe8db('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x42bc=['sequelize','TEXT','medium','BOOLEAN'];(function(_0x1e3c02,_0x5c07a2){var _0x4d26d7=function(_0x367ed9){while(--_0x367ed9){_0x1e3c02['push'](_0x1e3c02['shift']());}};_0x4d26d7(++_0x5c07a2);}(_0x42bc,0x164));var _0xc42b=function(_0x599dc3,_0x406b27){_0x599dc3=_0x599dc3-0x0;var _0x13c968=_0x42bc[_0x599dc3];return _0x13c968;};'use strict';var Sequelize=require(_0xc42b('0x0'));module['exports']={'body':{'type':Sequelize[_0xc42b('0x1')](_0xc42b('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xc42b('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 3b99ab1..e7e706f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82a7=['undefined','count','set','Content-Range','apply','reject','then','destroy','stack','send','index','map','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','ChatInternalMessage','includeAll','findAll','rows','catch','show','params','include','find','create','update','body','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','User','agent','fullname','role','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','isEmpty','push','FromId','ToId','read','all','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','sendStatus','status','end','json','offset','limit'];(function(_0x369faa,_0x1d9fae){var _0x2f4a5e=function(_0x33efbb){while(--_0x33efbb){_0x369faa['push'](_0x369faa['shift']());}};_0x2f4a5e(++_0x1d9fae);}(_0x82a7,0x131));var _0x782a=function(_0x172457,_0x4c489a){_0x172457=_0x172457-0x0;var _0x381e24=_0x82a7[_0x172457];return _0x381e24;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x782a('0x0'));var zipdir=require(_0x782a('0x1'));var jsonpatch=require(_0x782a('0x2'));var rp=require('request-promise');var moment=require(_0x782a('0x3'));var BPromise=require(_0x782a('0x4'));var Mustache=require(_0x782a('0x5'));var util=require(_0x782a('0x6'));var path=require(_0x782a('0x7'));var sox=require('sox');var csv=require(_0x782a('0x8'));var ejs=require(_0x782a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x782a('0xa'));var squel=require(_0x782a('0xb'));var crypto=require(_0x782a('0xc'));var jsforce=require(_0x782a('0xd'));var deskjs=require(_0x782a('0xe'));var toCsv=require(_0x782a('0x8'));var querystring=require(_0x782a('0xf'));var Papa=require(_0x782a('0x10'));var Redis=require(_0x782a('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x782a('0x12'));var as=require(_0x782a('0x13'));var hardwareService=require(_0x782a('0x14'));var logger=require(_0x782a('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x782a('0x16'));var licenseUtil=require(_0x782a('0x17'));var db=require(_0x782a('0x18'))['db'];config[_0x782a('0x19')]=_['defaults'](config[_0x782a('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x782a('0x1a'))(new Redis(config[_0x782a('0x19')]));require('./chatInternalMessage.socket')[_0x782a('0x1b')](socket);function respondWithStatusCode(_0x3f8ff5,_0x4ff3a4){_0x4ff3a4=_0x4ff3a4||0xcc;return function(_0x3a125e){if(_0x3a125e){return _0x3f8ff5[_0x782a('0x1c')](_0x4ff3a4);}return _0x3f8ff5[_0x782a('0x1d')](_0x4ff3a4)[_0x782a('0x1e')]();};}function respondWithResult(_0x5ab537,_0x1254b6){_0x1254b6=_0x1254b6||0xc8;return function(_0x250c8f){if(_0x250c8f){return _0x5ab537[_0x782a('0x1d')](_0x1254b6)[_0x782a('0x1f')](_0x250c8f);}};}function respondWithFilteredResult(_0x2289f8,_0x143a66){return function(_0x1b8ca8){if(_0x1b8ca8){var _0x22e2ad=typeof _0x143a66[_0x782a('0x20')]==='undefined'&&typeof _0x143a66[_0x782a('0x21')]===_0x782a('0x22');var _0x2f0232=_0x1b8ca8['count'];var _0x18b4e1=_0x22e2ad?0x0:_0x143a66[_0x782a('0x20')];var _0x4ded3e=_0x22e2ad?_0x1b8ca8[_0x782a('0x23')]:_0x143a66[_0x782a('0x20')]+_0x143a66[_0x782a('0x21')];var _0x4d3739;if(_0x4ded3e>=_0x2f0232){_0x4ded3e=_0x2f0232;_0x4d3739=0xc8;}else{_0x4d3739=0xce;}_0x2289f8[_0x782a('0x1d')](_0x4d3739);return _0x2289f8[_0x782a('0x24')](_0x782a('0x25'),_0x18b4e1+'-'+_0x4ded3e+'/'+_0x2f0232)['json'](_0x1b8ca8);}return null;};}function patchUpdates(_0x5c18f9){return function(_0x4ff6e6){try{jsonpatch[_0x782a('0x26')](_0x4ff6e6,_0x5c18f9,!![]);}catch(_0x50e108){return BPromise[_0x782a('0x27')](_0x50e108);}return _0x4ff6e6['save']();};}function saveUpdates(_0x226259,_0x55eed9){return function(_0x36b362){if(_0x36b362){return _0x36b362['update'](_0x226259)[_0x782a('0x28')](function(_0xd1ef28){return _0xd1ef28;});}return null;};}function removeEntity(_0x2722f2,_0x41b067){return function(_0x3fd78d){if(_0x3fd78d){return _0x3fd78d[_0x782a('0x29')]()[_0x782a('0x28')](function(){_0x2722f2['status'](0xcc)[_0x782a('0x1e')]();});}};}function handleEntityNotFound(_0x256f43,_0x43fc36){return function(_0x579cf0){if(!_0x579cf0){_0x256f43[_0x782a('0x1c')](0x194);}return _0x579cf0;};}function handleError(_0x1e68a0,_0x106929){_0x106929=_0x106929||0x1f4;return function(_0x277f41){logger['error'](_0x277f41[_0x782a('0x2a')]);if(_0x277f41['name']){delete _0x277f41['name'];}_0x1e68a0['status'](_0x106929)[_0x782a('0x2b')](_0x277f41);};}exports[_0x782a('0x2c')]=function(_0x31ea72,_0x2f8a01){var _0x314263={},_0x37bfe2={},_0x3844c4={'count':0x0,'rows':[]};var _0x151006=_[_0x782a('0x2d')](db['ChatInternalMessage'][_0x782a('0x2e')],function(_0x191c7f){return{'name':_0x191c7f[_0x782a('0x2f')],'type':_0x191c7f[_0x782a('0x30')][_0x782a('0x31')]};});_0x37bfe2[_0x782a('0x32')]=_[_0x782a('0x2d')](_0x151006,_0x782a('0x33'));_0x37bfe2[_0x782a('0x34')]=_[_0x782a('0x35')](_0x31ea72[_0x782a('0x34')]);_0x37bfe2[_0x782a('0x36')]=_[_0x782a('0x37')](_0x37bfe2[_0x782a('0x32')],_0x37bfe2[_0x782a('0x34')]);_0x314263[_0x782a('0x38')]=_[_0x782a('0x37')](_0x37bfe2['model'],qs['fields'](_0x31ea72['query'][_0x782a('0x39')]));_0x314263['attributes']=_0x314263[_0x782a('0x38')][_0x782a('0x3a')]?_0x314263[_0x782a('0x38')]:_0x37bfe2['model'];if(!_0x31ea72[_0x782a('0x34')][_0x782a('0x3b')](_0x782a('0x3c'))){_0x314263[_0x782a('0x21')]=qs[_0x782a('0x21')](_0x31ea72[_0x782a('0x34')][_0x782a('0x21')]);_0x314263[_0x782a('0x20')]=qs[_0x782a('0x20')](_0x31ea72['query'][_0x782a('0x20')]);}_0x314263[_0x782a('0x3d')]=qs[_0x782a('0x3e')](_0x31ea72[_0x782a('0x34')][_0x782a('0x3e')]);_0x314263[_0x782a('0x3f')]=qs['filters'](_[_0x782a('0x40')](_0x31ea72[_0x782a('0x34')],_0x37bfe2[_0x782a('0x36')]),_0x151006);if(_0x31ea72[_0x782a('0x34')][_0x782a('0x41')]){_0x314263[_0x782a('0x3f')]=_[_0x782a('0x42')](_0x314263[_0x782a('0x3f')],{'$or':_['map'](_0x151006,function(_0x3ac4b1){if(_0x3ac4b1[_0x782a('0x30')]!=='VIRTUAL'){var _0x28b98c={};_0x28b98c[_0x3ac4b1[_0x782a('0x33')]]={'$like':'%'+_0x31ea72[_0x782a('0x34')][_0x782a('0x41')]+'%'};return _0x28b98c;}})});}_0x314263=_[_0x782a('0x42')]({},_0x314263,_0x31ea72[_0x782a('0x43')]);var _0x5245dd={'where':_0x314263[_0x782a('0x3f')]};return db[_0x782a('0x44')][_0x782a('0x23')](_0x5245dd)[_0x782a('0x28')](function(_0x35cde5){_0x3844c4[_0x782a('0x23')]=_0x35cde5;if(_0x31ea72[_0x782a('0x34')][_0x782a('0x45')]){_0x314263['include']=[{'all':!![]}];}return db[_0x782a('0x44')][_0x782a('0x46')](_0x314263);})[_0x782a('0x28')](function(_0x25e359){_0x3844c4[_0x782a('0x47')]=_0x25e359;return _0x3844c4;})['then'](respondWithFilteredResult(_0x2f8a01,_0x314263))[_0x782a('0x48')](handleError(_0x2f8a01,null));};exports[_0x782a('0x49')]=function(_0x11ce6a,_0x3133bc){var _0x3b4a85={'raw':!![],'where':{'id':_0x11ce6a[_0x782a('0x4a')]['id']}},_0x279303={};_0x279303[_0x782a('0x32')]=_[_0x782a('0x35')](db['ChatInternalMessage'][_0x782a('0x2e')]);_0x279303[_0x782a('0x34')]=_[_0x782a('0x35')](_0x11ce6a[_0x782a('0x34')]);_0x279303[_0x782a('0x36')]=_['intersection'](_0x279303['model'],_0x279303['query']);_0x3b4a85[_0x782a('0x38')]=_[_0x782a('0x37')](_0x279303[_0x782a('0x32')],qs['fields'](_0x11ce6a['query'][_0x782a('0x39')]));_0x3b4a85[_0x782a('0x38')]=_0x3b4a85[_0x782a('0x38')][_0x782a('0x3a')]?_0x3b4a85['attributes']:_0x279303[_0x782a('0x32')];if(_0x11ce6a[_0x782a('0x34')][_0x782a('0x45')]){_0x3b4a85[_0x782a('0x4b')]=[{'all':!![]}];}_0x3b4a85=_[_0x782a('0x42')]({},_0x3b4a85,_0x11ce6a['options']);return db['ChatInternalMessage'][_0x782a('0x4c')](_0x3b4a85)[_0x782a('0x28')](handleEntityNotFound(_0x3133bc,null))[_0x782a('0x28')](respondWithResult(_0x3133bc,null))['catch'](handleError(_0x3133bc,null));};exports['create']=function(_0x52c6b6,_0x47221f){return db['ChatInternalMessage'][_0x782a('0x4d')](_0x52c6b6['body'],{})[_0x782a('0x28')](respondWithResult(_0x47221f,0xc9))[_0x782a('0x48')](handleError(_0x47221f,null));};exports[_0x782a('0x4e')]=function(_0x3134b9,_0x470cff){if(_0x3134b9['body']['id']){delete _0x3134b9[_0x782a('0x4f')]['id'];}return db[_0x782a('0x44')][_0x782a('0x4c')]({'where':{'id':_0x3134b9[_0x782a('0x4a')]['id']}})[_0x782a('0x28')](handleEntityNotFound(_0x470cff,null))['then'](saveUpdates(_0x3134b9[_0x782a('0x4f')],null))[_0x782a('0x28')](respondWithResult(_0x470cff,null))['catch'](handleError(_0x470cff,null));};exports[_0x782a('0x29')]=function(_0x1c534d,_0x4b1334){return db[_0x782a('0x44')][_0x782a('0x4c')]({'where':{'id':_0x1c534d['params']['id']}})[_0x782a('0x28')](handleEntityNotFound(_0x4b1334,null))[_0x782a('0x28')](removeEntity(_0x4b1334,null))[_0x782a('0x48')](handleError(_0x4b1334,null));};exports['describe']=function(_0x328321,_0x1463ad){return db[_0x782a('0x44')][_0x782a('0x50')]()['then'](respondWithResult(_0x1463ad,null))[_0x782a('0x48')](handleError(_0x1463ad,null));};function wrapUser(_0x1f4a13){return function(_0x17c12){var _0x384ea5=_0x1f4a13[_0x782a('0x51')]({'plain':!![]});_0x384ea5[_0x782a('0x52')]=[];if(_0x17c12){_0x384ea5[_0x782a('0x53')]=_0x17c12[_0x782a('0x54')];_0x384ea5[_0x782a('0x55')]=_0x17c12;}else{_0x384ea5[_0x782a('0x53')]=moment(0x0)[_0x782a('0x56')](_0x782a('0x57'));_0x384ea5[_0x782a('0x55')]={};}return _0x384ea5;};}exports['getUsers']=function(_0x19b061,_0x1254bb,_0x607cb7){var _0x3f4cb9=[];return db[_0x782a('0x58')]['findAll']({'where':{'role':[_0x782a('0x59'),'admin','user']},'attributes':['id',_0x782a('0x5a'),'name',_0x782a('0x5b'),_0x782a('0x5c'),_0x782a('0x5d'),_0x782a('0x5e'),_0x782a('0x5f'),_0x782a('0x60'),_0x782a('0x61')],'order':qs['sort'](_0x782a('0x62')),'include':[{'model':db[_0x782a('0x63')],'as':_0x782a('0x64'),'attributes':['id',_0x782a('0x33'),'type'],'through':{'attributes':[]}}]})[_0x782a('0x28')](function(_0x52c672){if(_0x52c672){var _0x498514=_0x19b061[_0x782a('0x65')][_0x782a('0x51')]({'plain':!![]});if(!_0x498514)throw new Error(_0x782a('0x66'));if(_0x498514[_0x782a('0x5b')]==='user'){return db[_0x782a('0x67')][_0x782a('0x4c')]({'where':{'name':'Agents','userProfileId':_0x498514[_0x782a('0x68')]},'raw':!![]})[_0x782a('0x28')](function(_0x4f52e4){if(_0x4f52e4){if(_0x4f52e4[_0x782a('0x69')]===0x0){return db[_0x782a('0x6a')][_0x782a('0x46')]({'where':{'sectionId':_0x4f52e4['id']},'raw':!![]})[_0x782a('0x28')](function(_0x1e7baf){var _0x559635=[];if(_[_0x782a('0x6b')](_0x1e7baf)){_0x559635=_[_0x782a('0x41')](_0x52c672,function(_0x5d33fb){if(_0x5d33fb[_0x782a('0x5b')]!==_0x782a('0x59')){return _0x5d33fb;}});return _0x559635;}else{for(var _0x20e4bd=0x0;_0x20e4bd<_0x52c672[_0x782a('0x3a')];_0x20e4bd++){var _0x134d8d=_0x52c672[_0x20e4bd];if(_0x134d8d[_0x782a('0x5b')]==='agent'){var _0x2e8039=_[_0x782a('0x4c')](_0x1e7baf,function(_0x413fe1){return _0x413fe1['resourceId']===_0x134d8d['id'];});if(_0x2e8039)_0x559635[_0x782a('0x6c')](_0x134d8d);}else{_0x559635['push'](_0x134d8d);}}return _0x559635;}});}else{return _0x52c672;}}else{var _0x1c80d2=_[_0x782a('0x41')](_0x52c672,function(_0x2be889){if(_0x2be889[_0x782a('0x5b')]!==_0x782a('0x59')){return _0x2be889;}});return _0x1c80d2;}});}else{return _0x52c672;}}})[_0x782a('0x28')](function(_0x5496c4){var _0x5edad3=[];if(_0x5496c4){_0x3f4cb9=_0x5496c4;for(var _0x14ef71=0x0;_0x14ef71<_0x5496c4[_0x782a('0x3a')];_0x14ef71+=0x1){_0x3f4cb9[_0x14ef71][_0x782a('0x52')]=[];_0x5edad3[_0x782a('0x6c')](db[_0x782a('0x44')][_0x782a('0x4c')]({'where':{'FromId':[_0x19b061[_0x782a('0x65')]['id'],_0x5496c4[_0x14ef71]['id']],'ToId':[_0x19b061[_0x782a('0x65')]['id'],_0x5496c4[_0x14ef71]['id']],'ChatGroupId':null},'attributes':['id',_0x782a('0x54'),_0x782a('0x6d'),_0x782a('0x6e'),_0x782a('0x6f'),_0x782a('0x4f')],'order':qs[_0x782a('0x3e')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0x782a('0x28')](wrapUser(_0x5496c4[_0x14ef71])));}return BPromise[_0x782a('0x70')](_0x5edad3);}return[];})[_0x782a('0x28')](function(_0x528ee8){return{'rows':_0x528ee8,'count':_0x528ee8[_0x782a('0x3a')]};})[_0x782a('0x28')](respondWithResult(_0x1254bb,null))[_0x782a('0x48')](handleError(_0x1254bb,null));};
\ No newline at end of file
+var _0x1969=['localhost','socket.io-emitter','register','status','end','undefined','count','offset','limit','set','Content-Range','json','save','update','then','sendStatus','error','stack','name','index','map','ChatInternalMessage','type','key','model','query','keys','fields','length','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','rows','show','params','rawAttributes','filters','includeAll','find','catch','create','body','destroy','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','getUsers','User','findAll','agent','admin','user','fullname','role','userpic','internal','lastLoginAt','allowmessenger','showWebBar','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','-createdAt','all','eml-format','rimraf','zip-dir','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis'];(function(_0x4b5413,_0x22a962){var _0x5224d9=function(_0x2607b8){while(--_0x2607b8){_0x4b5413['push'](_0x4b5413['shift']());}};_0x5224d9(++_0x22a962);}(_0x1969,0x19f));var _0x9196=function(_0x804fac,_0xed2b96){_0x804fac=_0x804fac-0x0;var _0x5bc92d=_0x1969[_0x804fac];return _0x5bc92d;};'use strict';var emlformat=require(_0x9196('0x0'));var rimraf=require(_0x9196('0x1'));var zipdir=require(_0x9196('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9196('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9196('0x4'));var path=require(_0x9196('0x5'));var sox=require(_0x9196('0x6'));var csv=require(_0x9196('0x7'));var ejs=require(_0x9196('0x8'));var fs=require('fs');var fs_extra=require(_0x9196('0x9'));var _=require(_0x9196('0xa'));var squel=require(_0x9196('0xb'));var crypto=require('crypto');var jsforce=require(_0x9196('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9196('0xd'));var Redis=require(_0x9196('0xe'));var authService=require(_0x9196('0xf'));var qs=require(_0x9196('0x10'));var as=require(_0x9196('0x11'));var hardwareService=require(_0x9196('0x12'));var logger=require(_0x9196('0x13'))(_0x9196('0x14'));var utils=require(_0x9196('0x15'));var config=require(_0x9196('0x16'));var licenseUtil=require(_0x9196('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x9196('0x18')],{'host':_0x9196('0x19'),'port':0x18eb});var socket=require(_0x9196('0x1a'))(new Redis(config['redis']));require('./chatInternalMessage.socket')[_0x9196('0x1b')](socket);function respondWithStatusCode(_0x414818,_0x3b48b5){_0x3b48b5=_0x3b48b5||0xcc;return function(_0x31c409){if(_0x31c409){return _0x414818['sendStatus'](_0x3b48b5);}return _0x414818[_0x9196('0x1c')](_0x3b48b5)[_0x9196('0x1d')]();};}function respondWithResult(_0x22189d,_0xa9c20f){_0xa9c20f=_0xa9c20f||0xc8;return function(_0x1d09f1){if(_0x1d09f1){return _0x22189d[_0x9196('0x1c')](_0xa9c20f)['json'](_0x1d09f1);}};}function respondWithFilteredResult(_0x40fcd2,_0x8d6f5d){return function(_0x43c839){if(_0x43c839){var _0xdb349=typeof _0x8d6f5d['offset']==='undefined'&&typeof _0x8d6f5d['limit']===_0x9196('0x1e');var _0x3893f8=_0x43c839[_0x9196('0x1f')];var _0x29fef1=_0xdb349?0x0:_0x8d6f5d['offset'];var _0x281d0f=_0xdb349?_0x43c839[_0x9196('0x1f')]:_0x8d6f5d[_0x9196('0x20')]+_0x8d6f5d[_0x9196('0x21')];var _0x36aba5;if(_0x281d0f>=_0x3893f8){_0x281d0f=_0x3893f8;_0x36aba5=0xc8;}else{_0x36aba5=0xce;}_0x40fcd2[_0x9196('0x1c')](_0x36aba5);return _0x40fcd2[_0x9196('0x22')](_0x9196('0x23'),_0x29fef1+'-'+_0x281d0f+'/'+_0x3893f8)[_0x9196('0x24')](_0x43c839);}return null;};}function patchUpdates(_0x42c109){return function(_0x181cc2){try{jsonpatch['apply'](_0x181cc2,_0x42c109,!![]);}catch(_0x4728f5){return BPromise['reject'](_0x4728f5);}return _0x181cc2[_0x9196('0x25')]();};}function saveUpdates(_0x1398d3,_0x2f2df1){return function(_0x31d51a){if(_0x31d51a){return _0x31d51a[_0x9196('0x26')](_0x1398d3)[_0x9196('0x27')](function(_0x1ec469){return _0x1ec469;});}return null;};}function removeEntity(_0x48d0ff,_0x32bfc9){return function(_0x242238){if(_0x242238){return _0x242238['destroy']()[_0x9196('0x27')](function(){_0x48d0ff[_0x9196('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f1f11,_0x293e4f){return function(_0x4f96d8){if(!_0x4f96d8){_0x4f1f11[_0x9196('0x28')](0x194);}return _0x4f96d8;};}function handleError(_0x3ed7e3,_0x3c2b5f){_0x3c2b5f=_0x3c2b5f||0x1f4;return function(_0x1fe08f){logger[_0x9196('0x29')](_0x1fe08f[_0x9196('0x2a')]);if(_0x1fe08f[_0x9196('0x2b')]){delete _0x1fe08f['name'];}_0x3ed7e3[_0x9196('0x1c')](_0x3c2b5f)['send'](_0x1fe08f);};}exports[_0x9196('0x2c')]=function(_0x183a72,_0x33e4d1){var _0x46e8e5={},_0x4610e3={},_0x270a63={'count':0x0,'rows':[]};var _0x4e98c7=_[_0x9196('0x2d')](db[_0x9196('0x2e')]['rawAttributes'],function(_0x31ca9a){return{'name':_0x31ca9a['fieldName'],'type':_0x31ca9a[_0x9196('0x2f')][_0x9196('0x30')]};});_0x4610e3[_0x9196('0x31')]=_[_0x9196('0x2d')](_0x4e98c7,'name');_0x4610e3[_0x9196('0x32')]=_[_0x9196('0x33')](_0x183a72['query']);_0x4610e3['filters']=_['intersection'](_0x4610e3[_0x9196('0x31')],_0x4610e3['query']);_0x46e8e5['attributes']=_['intersection'](_0x4610e3[_0x9196('0x31')],qs[_0x9196('0x34')](_0x183a72[_0x9196('0x32')]['fields']));_0x46e8e5['attributes']=_0x46e8e5['attributes'][_0x9196('0x35')]?_0x46e8e5[_0x9196('0x36')]:_0x4610e3['model'];if(!_0x183a72['query'][_0x9196('0x37')](_0x9196('0x38'))){_0x46e8e5[_0x9196('0x21')]=qs[_0x9196('0x21')](_0x183a72[_0x9196('0x32')]['limit']);_0x46e8e5[_0x9196('0x20')]=qs[_0x9196('0x20')](_0x183a72[_0x9196('0x32')][_0x9196('0x20')]);}_0x46e8e5[_0x9196('0x39')]=qs[_0x9196('0x3a')](_0x183a72['query']['sort']);_0x46e8e5['where']=qs['filters'](_[_0x9196('0x3b')](_0x183a72[_0x9196('0x32')],_0x4610e3['filters']),_0x4e98c7);if(_0x183a72[_0x9196('0x32')][_0x9196('0x3c')]){_0x46e8e5[_0x9196('0x3d')]=_[_0x9196('0x3e')](_0x46e8e5['where'],{'$or':_[_0x9196('0x2d')](_0x4e98c7,function(_0xd491b5){if(_0xd491b5[_0x9196('0x2f')]!==_0x9196('0x3f')){var _0x460377={};_0x460377[_0xd491b5[_0x9196('0x2b')]]={'$like':'%'+_0x183a72[_0x9196('0x32')][_0x9196('0x3c')]+'%'};return _0x460377;}})});}_0x46e8e5=_[_0x9196('0x3e')]({},_0x46e8e5,_0x183a72[_0x9196('0x40')]);var _0xfbf23b={'where':_0x46e8e5[_0x9196('0x3d')]};return db[_0x9196('0x2e')][_0x9196('0x1f')](_0xfbf23b)['then'](function(_0x4054a1){_0x270a63[_0x9196('0x1f')]=_0x4054a1;if(_0x183a72[_0x9196('0x32')]['includeAll']){_0x46e8e5[_0x9196('0x41')]=[{'all':!![]}];}return db[_0x9196('0x2e')]['findAll'](_0x46e8e5);})['then'](function(_0x25bdc8){_0x270a63[_0x9196('0x42')]=_0x25bdc8;return _0x270a63;})[_0x9196('0x27')](respondWithFilteredResult(_0x33e4d1,_0x46e8e5))['catch'](handleError(_0x33e4d1,null));};exports[_0x9196('0x43')]=function(_0x10570d,_0x31cb69){var _0x4e5998={'raw':!![],'where':{'id':_0x10570d[_0x9196('0x44')]['id']}},_0x51f5eb={};_0x51f5eb[_0x9196('0x31')]=_[_0x9196('0x33')](db[_0x9196('0x2e')][_0x9196('0x45')]);_0x51f5eb[_0x9196('0x32')]=_[_0x9196('0x33')](_0x10570d[_0x9196('0x32')]);_0x51f5eb[_0x9196('0x46')]=_['intersection'](_0x51f5eb['model'],_0x51f5eb[_0x9196('0x32')]);_0x4e5998[_0x9196('0x36')]=_['intersection'](_0x51f5eb[_0x9196('0x31')],qs[_0x9196('0x34')](_0x10570d[_0x9196('0x32')][_0x9196('0x34')]));_0x4e5998[_0x9196('0x36')]=_0x4e5998['attributes'][_0x9196('0x35')]?_0x4e5998[_0x9196('0x36')]:_0x51f5eb[_0x9196('0x31')];if(_0x10570d[_0x9196('0x32')][_0x9196('0x47')]){_0x4e5998[_0x9196('0x41')]=[{'all':!![]}];}_0x4e5998=_[_0x9196('0x3e')]({},_0x4e5998,_0x10570d[_0x9196('0x40')]);return db[_0x9196('0x2e')][_0x9196('0x48')](_0x4e5998)[_0x9196('0x27')](handleEntityNotFound(_0x31cb69,null))[_0x9196('0x27')](respondWithResult(_0x31cb69,null))[_0x9196('0x49')](handleError(_0x31cb69,null));};exports[_0x9196('0x4a')]=function(_0x4d5a66,_0x10717c){return db['ChatInternalMessage']['create'](_0x4d5a66['body'],{})[_0x9196('0x27')](respondWithResult(_0x10717c,0xc9))[_0x9196('0x49')](handleError(_0x10717c,null));};exports['update']=function(_0x2fb63e,_0x566e3b){if(_0x2fb63e[_0x9196('0x4b')]['id']){delete _0x2fb63e[_0x9196('0x4b')]['id'];}return db[_0x9196('0x2e')][_0x9196('0x48')]({'where':{'id':_0x2fb63e['params']['id']}})[_0x9196('0x27')](handleEntityNotFound(_0x566e3b,null))[_0x9196('0x27')](saveUpdates(_0x2fb63e[_0x9196('0x4b')],null))[_0x9196('0x27')](respondWithResult(_0x566e3b,null))[_0x9196('0x49')](handleError(_0x566e3b,null));};exports[_0x9196('0x4c')]=function(_0x4ee8a5,_0x12d22c){return db[_0x9196('0x2e')][_0x9196('0x48')]({'where':{'id':_0x4ee8a5['params']['id']}})['then'](handleEntityNotFound(_0x12d22c,null))[_0x9196('0x27')](removeEntity(_0x12d22c,null))[_0x9196('0x49')](handleError(_0x12d22c,null));};exports[_0x9196('0x4d')]=function(_0xb62cea,_0x1dd00d){return db['ChatInternalMessage'][_0x9196('0x4d')]()[_0x9196('0x27')](respondWithResult(_0x1dd00d,null))['catch'](handleError(_0x1dd00d,null));};function wrapUser(_0x203e94){return function(_0x34305a){var _0x1db0db=_0x203e94[_0x9196('0x4e')]({'plain':!![]});_0x1db0db[_0x9196('0x4f')]=[];if(_0x34305a){_0x1db0db[_0x9196('0x50')]=_0x34305a[_0x9196('0x51')];_0x1db0db[_0x9196('0x52')]=_0x34305a;}else{_0x1db0db[_0x9196('0x50')]=moment(0x0)[_0x9196('0x53')]('YYYY-MM-DD\x20HH:mm:ss');_0x1db0db[_0x9196('0x52')]={};}return _0x1db0db;};}exports[_0x9196('0x54')]=function(_0x56a505,_0x4b0f78,_0x423d69){var _0x2ce692=[];return db[_0x9196('0x55')][_0x9196('0x56')]({'where':{'role':[_0x9196('0x57'),_0x9196('0x58'),_0x9196('0x59')]},'attributes':['id',_0x9196('0x5a'),_0x9196('0x2b'),_0x9196('0x5b'),_0x9196('0x5c'),_0x9196('0x5d'),'online',_0x9196('0x5e'),_0x9196('0x5f'),_0x9196('0x60')],'order':qs[_0x9196('0x3a')]('-online'),'include':[{'model':db[_0x9196('0x61')],'as':_0x9196('0x62'),'attributes':['id',_0x9196('0x2b'),_0x9196('0x2f')],'through':{'attributes':[]}}]})[_0x9196('0x27')](function(_0x11fb7b){if(_0x11fb7b){var _0x3a3c0c=_0x56a505[_0x9196('0x59')][_0x9196('0x4e')]({'plain':!![]});if(!_0x3a3c0c)throw new Error(_0x9196('0x63'));if(_0x3a3c0c[_0x9196('0x5b')]===_0x9196('0x59')){return db[_0x9196('0x64')][_0x9196('0x48')]({'where':{'name':'Agents','userProfileId':_0x3a3c0c[_0x9196('0x65')]},'raw':!![]})['then'](function(_0x4df5d5){if(_0x4df5d5){if(_0x4df5d5[_0x9196('0x66')]===0x0){return db[_0x9196('0x67')][_0x9196('0x56')]({'where':{'sectionId':_0x4df5d5['id']},'raw':!![]})[_0x9196('0x27')](function(_0x3f340a){var _0x201a61=[];if(_[_0x9196('0x68')](_0x3f340a)){_0x201a61=_[_0x9196('0x3c')](_0x11fb7b,function(_0x351f72){if(_0x351f72['role']!==_0x9196('0x57')){return _0x351f72;}});return _0x201a61;}else{for(var _0x8fa085=0x0;_0x8fa085<_0x11fb7b[_0x9196('0x35')];_0x8fa085++){var _0x4290b0=_0x11fb7b[_0x8fa085];if(_0x4290b0[_0x9196('0x5b')]===_0x9196('0x57')){var _0xfb3785=_[_0x9196('0x48')](_0x3f340a,function(_0xcaa7f9){return _0xcaa7f9[_0x9196('0x69')]===_0x4290b0['id'];});if(_0xfb3785)_0x201a61[_0x9196('0x6a')](_0x4290b0);}else{_0x201a61['push'](_0x4290b0);}}return _0x201a61;}});}else{return _0x11fb7b;}}else{var _0x277438=_[_0x9196('0x3c')](_0x11fb7b,function(_0x4f797a){if(_0x4f797a['role']!==_0x9196('0x57')){return _0x4f797a;}});return _0x277438;}});}else{return _0x11fb7b;}}})[_0x9196('0x27')](function(_0x432013){var _0x4564af=[];if(_0x432013){_0x2ce692=_0x432013;for(var _0x6b529e=0x0;_0x6b529e<_0x432013['length'];_0x6b529e+=0x1){_0x2ce692[_0x6b529e][_0x9196('0x4f')]=[];_0x4564af['push'](db[_0x9196('0x2e')][_0x9196('0x48')]({'where':{'FromId':[_0x56a505[_0x9196('0x59')]['id'],_0x432013[_0x6b529e]['id']],'ToId':[_0x56a505['user']['id'],_0x432013[_0x6b529e]['id']],'ChatGroupId':null},'attributes':['id',_0x9196('0x51'),_0x9196('0x6b'),'ToId','read',_0x9196('0x4b')],'order':qs[_0x9196('0x3a')](_0x9196('0x6c')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x432013[_0x6b529e])));}return BPromise[_0x9196('0x6d')](_0x4564af);}return[];})[_0x9196('0x27')](function(_0x17d115){return{'rows':_0x17d115,'count':_0x17d115['length']};})[_0x9196('0x27')](respondWithResult(_0x4b0f78,null))[_0x9196('0x49')](handleError(_0x4b0f78,null));};
\ No newline at end of file
index 63946de..5c6f9ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc584=['ChatInternalMessage','save','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0xb691c,_0x39ab28){var _0x134e84=function(_0x21d419){while(--_0x21d419){_0xb691c['push'](_0xb691c['shift']());}};_0x134e84(++_0x39ab28);}(_0xc584,0x1e7));var _0x4c58=function(_0x469ae2,_0x24cd30){_0x469ae2=_0x469ae2-0x0;var _0x5e33e4=_0xc584[_0x469ae2];return _0x5e33e4;};'use strict';var EventEmitter=require(_0x4c58('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x4c58('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4c58('0x2'),'afterUpdate':'update','afterDestroy':_0x4c58('0x3')};function emitEvent(_0x68c037){return function(_0x547ada,_0x2ec00a,_0x2ec4af){ChatInternalMessageEvents[_0x4c58('0x4')](_0x68c037+':'+_0x547ada['id'],_0x547ada);ChatInternalMessageEvents[_0x4c58('0x4')](_0x68c037,_0x547ada);_0x2ec4af(null);};}for(var e in events){if(events[_0x4c58('0x5')](e)){var event=events[e];ChatInternalMessage[_0x4c58('0x6')](e,emitEvent(event));}}module[_0x4c58('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x4fe5=['events','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x1f8ee9,_0x521f85){var _0x24c8a9=function(_0x351d5a){while(--_0x351d5a){_0x1f8ee9['push'](_0x1f8ee9['shift']());}};_0x24c8a9(++_0x521f85);}(_0x4fe5,0x171));var _0x54fe=function(_0x50f37d,_0x1eb3a8){_0x50f37d=_0x50f37d-0x0;var _0x102113=_0x4fe5[_0x50f37d];return _0x102113;};'use strict';var EventEmitter=require(_0x54fe('0x0'));var ChatInternalMessage=require('../../mysqldb')['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x54fe('0x1')](0x0);var events={'afterCreate':_0x54fe('0x2'),'afterUpdate':_0x54fe('0x3'),'afterDestroy':_0x54fe('0x4')};function emitEvent(_0x4c04e5){return function(_0x6eada3,_0x2697e9,_0x488bd3){ChatInternalMessageEvents[_0x54fe('0x5')](_0x4c04e5+':'+_0x6eada3['id'],_0x6eada3);ChatInternalMessageEvents[_0x54fe('0x5')](_0x4c04e5,_0x6eada3);_0x488bd3(null);};}for(var e in events){if(events[_0x54fe('0x6')](e)){var event=events[e];ChatInternalMessage[_0x54fe('0x7')](e,emitEvent(event));}}module[_0x54fe('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index f1ea563..f872c9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5773=['lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','define','chat_internal_messages','utf8mb4'];(function(_0x4d995b,_0x3ab30c){var _0x2e7a07=function(_0x33fc28){while(--_0x33fc28){_0x4d995b['push'](_0x4d995b['shift']());}};_0x2e7a07(++_0x3ab30c);}(_0x5773,0x168));var _0x3577=function(_0x1787a5,_0x8b3d8f){_0x1787a5=_0x1787a5-0x0;var _0xfe1519=_0x5773[_0x1787a5];return _0xfe1519;};'use strict';var _=require(_0x3577('0x0'));var util=require(_0x3577('0x1'));var logger=require(_0x3577('0x2'))('api');var moment=require(_0x3577('0x3'));var BPromise=require('bluebird');var rp=require(_0x3577('0x4'));var fs=require('fs');var path=require(_0x3577('0x5'));var rimraf=require('rimraf');var config=require(_0x3577('0x6'));var attributes=require('./chatInternalMessage.attributes');module['exports']=function(_0x46c495,_0x2d6fae){return _0x46c495[_0x3577('0x7')]('ChatInternalMessage',attributes,{'tableName':_0x3577('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3577('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xc057=['rimraf','../../config/environment','exports','define','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0xaf29da,_0x117f5a){var _0x295c51=function(_0x3feaf4){while(--_0x3feaf4){_0xaf29da['push'](_0xaf29da['shift']());}};_0x295c51(++_0x117f5a);}(_0xc057,0x151));var _0x7c05=function(_0x166b6a,_0x2487d1){_0x166b6a=_0x166b6a-0x0;var _0x57f88f=_0xc057[_0x166b6a];return _0x57f88f;};'use strict';var _=require(_0x7c05('0x0'));var util=require(_0x7c05('0x1'));var logger=require(_0x7c05('0x2'))(_0x7c05('0x3'));var moment=require(_0x7c05('0x4'));var BPromise=require(_0x7c05('0x5'));var rp=require(_0x7c05('0x6'));var fs=require('fs');var path=require(_0x7c05('0x7'));var rimraf=require(_0x7c05('0x8'));var config=require(_0x7c05('0x9'));var attributes=require('./chatInternalMessage.attributes');module[_0x7c05('0xa')]=function(_0x202bfe,_0x466abf){return _0x202bfe[_0x7c05('0xb')](_0x7c05('0xc'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7c05('0xd'),'collate':_0x7c05('0xe')});};
\ No newline at end of file
index 78c6b36..e111969 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bf5=['../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x55ced2,_0x352f9c){var _0x2c2788=function(_0x4c38d8){while(--_0x4c38d8){_0x55ced2['push'](_0x55ced2['shift']());}};_0x2c2788(++_0x352f9c);}(_0x8bf5,0x172));var _0x58bf=function(_0x20008a,_0x362490){_0x20008a=_0x20008a-0x0;var _0x5d0f1c=_0x8bf5[_0x20008a];return _0x5d0f1c;};'use strict';var _=require('lodash');var util=require(_0x58bf('0x0'));var moment=require(_0x58bf('0x1'));var BPromise=require(_0x58bf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x58bf('0x3'));var db=require(_0x58bf('0x4'))['db'];var utils=require(_0x58bf('0x5'));var logger=require(_0x58bf('0x6'))(_0x58bf('0x7'));var config=require(_0x58bf('0x8'));var jayson=require(_0x58bf('0x9'));var client=jayson[_0x58bf('0xa')]['http']({'port':0x232a});config[_0x58bf('0xb')]=_[_0x58bf('0xc')](config['redis'],{'host':_0x58bf('0xd'),'port':0x18eb});var socket=require(_0x58bf('0xe'))(new Redis(config[_0x58bf('0xb')]));require(_0x58bf('0xf'))['register'](socket);function respondWithRpcPromise(_0x201528,_0xd67bbd,_0x5aba24){return new BPromise(function(_0x5d453e,_0x1cca09){return client[_0x58bf('0x10')](_0x201528,_0x5aba24)[_0x58bf('0x11')](function(_0x5303e9){logger[_0x58bf('0x12')](_0x58bf('0x13'),_0xd67bbd,_0x58bf('0x14'));logger[_0x58bf('0x15')](_0x58bf('0x16'),_0xd67bbd,'request\x20sent',JSON[_0x58bf('0x17')](_0x5303e9));if(_0x5303e9[_0x58bf('0x18')]){if(_0x5303e9['error']['code']===0x1f4){logger['error'](_0x58bf('0x13'),_0xd67bbd,_0x5303e9[_0x58bf('0x18')]['message']);return _0x1cca09(_0x5303e9[_0x58bf('0x18')][_0x58bf('0x19')]);}logger[_0x58bf('0x18')](_0x58bf('0x13'),_0xd67bbd,_0x5303e9[_0x58bf('0x18')][_0x58bf('0x19')]);return _0x5d453e(_0x5303e9[_0x58bf('0x18')][_0x58bf('0x19')]);}else{logger[_0x58bf('0x12')](_0x58bf('0x13'),_0xd67bbd,_0x58bf('0x14'));_0x5d453e(_0x5303e9[_0x58bf('0x1a')]['message']);}})['catch'](function(_0x233e49){logger['error'](_0x58bf('0x13'),_0xd67bbd,_0x233e49);_0x1cca09(_0x233e49);});});}
\ No newline at end of file
+var _0x28e0=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2413a5,_0x276649){var _0x56ad9a=function(_0x941ef3){while(--_0x941ef3){_0x2413a5['push'](_0x2413a5['shift']());}};_0x56ad9a(++_0x276649);}(_0x28e0,0x126));var _0x028e=function(_0x1a3e02,_0x3da60c){_0x1a3e02=_0x1a3e02-0x0;var _0x5d3a3e=_0x28e0[_0x1a3e02];return _0x5d3a3e;};'use strict';var _=require(_0x028e('0x0'));var util=require(_0x028e('0x1'));var moment=require(_0x028e('0x2'));var BPromise=require(_0x028e('0x3'));var rs=require(_0x028e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x028e('0x5'))['db'];var utils=require(_0x028e('0x6'));var logger=require(_0x028e('0x7'))(_0x028e('0x8'));var config=require(_0x028e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x028e('0xa')][_0x028e('0xb')]({'port':0x232a});config[_0x028e('0xc')]=_[_0x028e('0xd')](config[_0x028e('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x028e('0xe'))(new Redis(config[_0x028e('0xc')]));require(_0x028e('0xf'))[_0x028e('0x10')](socket);function respondWithRpcPromise(_0x5854de,_0x20aec9,_0x471fa6){return new BPromise(function(_0x183512,_0xbf765f){return client['request'](_0x5854de,_0x471fa6)[_0x028e('0x11')](function(_0x447ea4){logger[_0x028e('0x12')](_0x028e('0x13'),_0x20aec9,_0x028e('0x14'));logger[_0x028e('0x15')](_0x028e('0x16'),_0x20aec9,_0x028e('0x14'),JSON[_0x028e('0x17')](_0x447ea4));if(_0x447ea4[_0x028e('0x18')]){if(_0x447ea4[_0x028e('0x18')][_0x028e('0x19')]===0x1f4){logger['error'](_0x028e('0x13'),_0x20aec9,_0x447ea4[_0x028e('0x18')][_0x028e('0x1a')]);return _0xbf765f(_0x447ea4[_0x028e('0x18')]['message']);}logger[_0x028e('0x18')]('ChatInternalMessage,\x20%s,\x20%s',_0x20aec9,_0x447ea4[_0x028e('0x18')][_0x028e('0x1a')]);return _0x183512(_0x447ea4[_0x028e('0x18')]['message']);}else{logger[_0x028e('0x12')](_0x028e('0x13'),_0x20aec9,_0x028e('0x14'));_0x183512(_0x447ea4[_0x028e('0x1b')]['message']);}})[_0x028e('0x1c')](function(_0x5d4bf6){logger[_0x028e('0x18')]('ChatInternalMessage,\x20%s,\x20%s',_0x20aec9,_0x5d4bf6);_0xbf765f(_0x5d4bf6);});});}
\ No newline at end of file
index 1c87e59..1ccb6d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d3=['update','removeListener','register','./chatInternalMessage.events','save','remove'];(function(_0x3bbcb9,_0x2836c3){var _0x4860ff=function(_0x227e5f){while(--_0x227e5f){_0x3bbcb9['push'](_0x3bbcb9['shift']());}};_0x4860ff(++_0x2836c3);}(_0xf4d3,0x1b9));var _0x3f4d=function(_0x45f637,_0x2eee9b){_0x45f637=_0x45f637-0x0;var _0x26f64e=_0xf4d3[_0x45f637];return _0x26f64e;};'use strict';var ChatInternalMessageEvents=require(_0x3f4d('0x0'));var events=[_0x3f4d('0x1'),_0x3f4d('0x2'),_0x3f4d('0x3')];function createListener(_0x3fe48a,_0x53ebd6){return function(_0x34d965){_0x53ebd6['emit'](_0x3fe48a,_0x34d965);};}function removeListener(_0x35e7e1,_0x57f2a1){return function(){ChatInternalMessageEvents[_0x3f4d('0x4')](_0x35e7e1,_0x57f2a1);};}exports[_0x3f4d('0x5')]=function(_0x22fa66){for(var _0x3a983d=0x0,_0x55c134=events['length'];_0x3a983d<_0x55c134;_0x3a983d++){var _0x3a953d=events[_0x3a983d];var _0x5c0052=createListener('chatInternalMessage:'+_0x3a953d,_0x22fa66);ChatInternalMessageEvents['on'](_0x3a953d,_0x5c0052);}};
\ No newline at end of file
+var _0x6e02=['length','./chatInternalMessage.events','remove','update','emit','removeListener','register'];(function(_0x4314bc,_0x323bd1){var _0x28f457=function(_0x3dccde){while(--_0x3dccde){_0x4314bc['push'](_0x4314bc['shift']());}};_0x28f457(++_0x323bd1);}(_0x6e02,0xef));var _0x26e0=function(_0x84a85,_0x54e55c){_0x84a85=_0x84a85-0x0;var _0x1c2943=_0x6e02[_0x84a85];return _0x1c2943;};'use strict';var ChatInternalMessageEvents=require(_0x26e0('0x0'));var events=['save',_0x26e0('0x1'),_0x26e0('0x2')];function createListener(_0x395180,_0xbdc7f0){return function(_0x362388){_0xbdc7f0[_0x26e0('0x3')](_0x395180,_0x362388);};}function removeListener(_0x3526ae,_0x3b1be4){return function(){ChatInternalMessageEvents[_0x26e0('0x4')](_0x3526ae,_0x3b1be4);};}exports[_0x26e0('0x5')]=function(_0x37ec68){for(var _0x216cb2=0x0,_0x5c080a=events[_0x26e0('0x6')];_0x216cb2<_0x5c080a;_0x216cb2++){var _0x5b5213=events[_0x216cb2];var _0x1a4a93=createListener('chatInternalMessage:'+_0x5b5213,_0x37ec68);ChatInternalMessageEvents['on'](_0x5b5213,_0x1a4a93);}};
\ No newline at end of file
index b6efd36..e647f8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb49=['post','create','put','update','delete','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInternalMessage.controller','get','index','/describe','isAuthenticated','describe','getUsers','/:id','show'];(function(_0x58a76c,_0x45461a){var _0x10dcf3=function(_0x263fbc){while(--_0x263fbc){_0x58a76c['push'](_0x58a76c['shift']());}};_0x10dcf3(++_0x45461a);}(_0xfb49,0x13a));var _0x9fb4=function(_0x4ae58a,_0x72bd08){_0x4ae58a=_0x4ae58a-0x0;var _0x3c0445=_0xfb49[_0x4ae58a];return _0x3c0445;};'use strict';var multer=require(_0x9fb4('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9fb4('0x1'));var express=require(_0x9fb4('0x2'));var router=express[_0x9fb4('0x3')]();var fs_extra=require(_0x9fb4('0x4'));var auth=require(_0x9fb4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9fb4('0x6'));var controller=require(_0x9fb4('0x7'));router[_0x9fb4('0x8')]('/',auth['isAuthenticated'](),controller[_0x9fb4('0x9')]);router[_0x9fb4('0x8')](_0x9fb4('0xa'),auth[_0x9fb4('0xb')](),controller[_0x9fb4('0xc')]);router[_0x9fb4('0x8')]('/users',auth[_0x9fb4('0xb')](),controller[_0x9fb4('0xd')]);router[_0x9fb4('0x8')](_0x9fb4('0xe'),auth['isAuthenticated'](),controller[_0x9fb4('0xf')]);router[_0x9fb4('0x10')]('/',auth[_0x9fb4('0xb')](),controller[_0x9fb4('0x11')]);router[_0x9fb4('0x12')]('/:id',controller[_0x9fb4('0x13')]);router[_0x9fb4('0x14')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x9fb4('0x15')]=router;
\ No newline at end of file
+var _0x9121=['put','delete','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatInternalMessage.controller','get','isAuthenticated','/describe','describe','/users','/:id','post','create'];(function(_0x1a3e44,_0x5cc37a){var _0x3d912b=function(_0x1ef4af){while(--_0x1ef4af){_0x1a3e44['push'](_0x1a3e44['shift']());}};_0x3d912b(++_0x5cc37a);}(_0x9121,0x134));var _0x1912=function(_0xa64102,_0x181eb4){_0xa64102=_0xa64102-0x0;var _0x2437b8=_0x9121[_0xa64102];return _0x2437b8;};'use strict';var multer=require(_0x1912('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x1912('0x1'));var express=require('express');var router=express[_0x1912('0x2')]();var fs_extra=require(_0x1912('0x3'));var auth=require(_0x1912('0x4'));var interaction=require(_0x1912('0x5'));var config=require('../../config/environment');var controller=require(_0x1912('0x6'));router[_0x1912('0x7')]('/',auth[_0x1912('0x8')](),controller['index']);router[_0x1912('0x7')](_0x1912('0x9'),auth[_0x1912('0x8')](),controller[_0x1912('0xa')]);router['get'](_0x1912('0xb'),auth['isAuthenticated'](),controller['getUsers']);router[_0x1912('0x7')](_0x1912('0xc'),auth[_0x1912('0x8')](),controller['show']);router[_0x1912('0xd')]('/',auth[_0x1912('0x8')](),controller[_0x1912('0xe')]);router[_0x1912('0xf')](_0x1912('0xc'),controller['update']);router[_0x1912('0x10')](_0x1912('0xc'),auth['isAuthenticated'](),controller[_0x1912('0x11')]);module[_0x1912('0x12')]=router;
\ No newline at end of file
index a270ee6..5045623 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3264=['STRING','exports','TEXT','medium','BOOLEAN','out'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3264,0x7f));var _0x4326=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x3264[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require('sequelize');module[_0x4326('0x0')]={'body':{'type':Sequelize[_0x4326('0x1')](_0x4326('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4326('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x4326('0x4')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x4326('0x5')]},'providerResponse':{'type':Sequelize[_0x4326('0x1')]}};
\ No newline at end of file
+var _0xea5b=['out','STRING','sequelize','exports','TEXT','BOOLEAN','ENUM'];(function(_0x5a7dd3,_0x26b7cf){var _0x2f4d07=function(_0x280510){while(--_0x280510){_0x5a7dd3['push'](_0x5a7dd3['shift']());}};_0x2f4d07(++_0x26b7cf);}(_0xea5b,0x152));var _0xbea5=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xea5b[_0x5f309e];return _0x487b5e;};'use strict';var Sequelize=require(_0xbea5('0x0'));module[_0xbea5('0x1')]={'body':{'type':Sequelize[_0xbea5('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0xbea5('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xbea5('0x4')]('in',_0xbea5('0x5')),'defaultValue':_0xbea5('0x5'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0xbea5('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 6c6e489..8e01fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe391=['type','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','offset','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','length','options','find','create','body','describe','chat-interactions','accept','chat','read','format','YYYY-MM-DD\x20HH:mm:ss','user','agent','UserId','get','ChatInteraction','ChatInteractionId','isNil','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','parse','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','SELECT','User','email','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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/environment','../../mysqldb','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','status','undefined','limit','count','Content-Range','json','apply','reject','save','update','destroy','sendStatus','stack','name','ChatMessage','rawAttributes','fieldName'];(function(_0x2813ef,_0x16b003){var _0x579162=function(_0x55bc04){while(--_0x55bc04){_0x2813ef['push'](_0x2813ef['shift']());}};_0x579162(++_0x16b003);}(_0xe391,0x156));var _0x1e39=function(_0x220afa,_0xf5f6cc){_0x220afa=_0x220afa-0x0;var _0x1b79d1=_0xe391[_0x220afa];return _0x1b79d1;};'use strict';var emlformat=require(_0x1e39('0x0'));var rimraf=require(_0x1e39('0x1'));var zipdir=require(_0x1e39('0x2'));var jsonpatch=require(_0x1e39('0x3'));var rp=require(_0x1e39('0x4'));var moment=require('moment');var BPromise=require(_0x1e39('0x5'));var Mustache=require(_0x1e39('0x6'));var util=require('util');var path=require(_0x1e39('0x7'));var sox=require(_0x1e39('0x8'));var csv=require(_0x1e39('0x9'));var ejs=require(_0x1e39('0xa'));var fs=require('fs');var fs_extra=require(_0x1e39('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1e39('0xc'));var jsforce=require(_0x1e39('0xd'));var deskjs=require(_0x1e39('0xe'));var toCsv=require(_0x1e39('0x9'));var querystring=require(_0x1e39('0xf'));var Papa=require(_0x1e39('0x10'));var Redis=require(_0x1e39('0x11'));var authService=require(_0x1e39('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1e39('0x13'));var hardwareService=require(_0x1e39('0x14'));var logger=require(_0x1e39('0x15'))(_0x1e39('0x16'));var utils=require(_0x1e39('0x17'));var config=require(_0x1e39('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x1e39('0x19'))['db'];config[_0x1e39('0x1a')]=_[_0x1e39('0x1b')](config[_0x1e39('0x1a')],{'host':_0x1e39('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1e39('0x1a')]));require(_0x1e39('0x1d'))[_0x1e39('0x1e')](socket);var jayson=require(_0x1e39('0x1f'));var client=jayson[_0x1e39('0x20')][_0x1e39('0x21')]({'port':0x232c});var client9002=jayson[_0x1e39('0x20')]['http']({'port':0x232a});function respondWithRpcPromise(_0x367f89,_0x6f0670,_0x2791bb,_0xed29f7){return new BPromise(function(_0x3ae14d,_0x52e270){var _0x133f46=_0xed29f7||client;return _0x133f46[_0x1e39('0x22')](_0x367f89,_0x2791bb)[_0x1e39('0x23')](function(_0x113467){logger[_0x1e39('0x24')](_0x1e39('0x25'),_0x6f0670,_0x1e39('0x26'));logger[_0x1e39('0x27')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x6f0670,'request\x20sent',JSON[_0x1e39('0x28')](_0x113467));if(_0x113467[_0x1e39('0x29')]){if(_0x113467[_0x1e39('0x29')][_0x1e39('0x2a')]===0x1f4){logger[_0x1e39('0x29')]('ChatMessage,\x20%s,\x20%s',_0x6f0670,_0x113467[_0x1e39('0x29')][_0x1e39('0x2b')]);return _0x52e270(_0x113467[_0x1e39('0x29')][_0x1e39('0x2b')]);}logger[_0x1e39('0x29')]('ChatMessage,\x20%s,\x20%s',_0x6f0670,_0x113467[_0x1e39('0x29')]['message']);return _0x3ae14d(_0x113467[_0x1e39('0x29')][_0x1e39('0x2b')]);}else{logger[_0x1e39('0x24')](_0x1e39('0x25'),_0x6f0670,'request\x20sent');_0x3ae14d(_0x113467[_0x1e39('0x2c')]['message']);}})[_0x1e39('0x2d')](function(_0x1d5e99){logger[_0x1e39('0x29')]('ChatMessage,\x20%s,\x20%s',_0x6f0670,_0x1d5e99);_0x52e270(_0x1d5e99);});});}function respondWithStatusCode(_0x3f3c2e,_0x426d84){_0x426d84=_0x426d84||0xcc;return function(_0x5fc46){if(_0x5fc46){return _0x3f3c2e['sendStatus'](_0x426d84);}return _0x3f3c2e[_0x1e39('0x2e')](_0x426d84)['end']();};}function respondWithResult(_0x203ae4,_0xd7b600){_0xd7b600=_0xd7b600||0xc8;return function(_0x303964){if(_0x303964){return _0x203ae4[_0x1e39('0x2e')](_0xd7b600)['json'](_0x303964);}};}function respondWithFilteredResult(_0x364ae1,_0x5e5d7b){return function(_0x1a991d){if(_0x1a991d){var _0x3d5126=typeof _0x5e5d7b['offset']===_0x1e39('0x2f')&&typeof _0x5e5d7b[_0x1e39('0x30')]==='undefined';var _0x4d7a71=_0x1a991d[_0x1e39('0x31')];var _0x420ce4=_0x3d5126?0x0:_0x5e5d7b['offset'];var _0x480a0c=_0x3d5126?_0x1a991d[_0x1e39('0x31')]:_0x5e5d7b['offset']+_0x5e5d7b['limit'];var _0x3ae223;if(_0x480a0c>=_0x4d7a71){_0x480a0c=_0x4d7a71;_0x3ae223=0xc8;}else{_0x3ae223=0xce;}_0x364ae1[_0x1e39('0x2e')](_0x3ae223);return _0x364ae1['set'](_0x1e39('0x32'),_0x420ce4+'-'+_0x480a0c+'/'+_0x4d7a71)[_0x1e39('0x33')](_0x1a991d);}return null;};}function patchUpdates(_0x57743c){return function(_0x25db95){try{jsonpatch[_0x1e39('0x34')](_0x25db95,_0x57743c,!![]);}catch(_0x1355a4){return BPromise[_0x1e39('0x35')](_0x1355a4);}return _0x25db95[_0x1e39('0x36')]();};}function saveUpdates(_0x251820,_0x141dd0){return function(_0x384d26){if(_0x384d26){return _0x384d26[_0x1e39('0x37')](_0x251820)['then'](function(_0xddfd5a){return _0xddfd5a;});}return null;};}function removeEntity(_0x26c9ce,_0x13001d){return function(_0x25fdd7){if(_0x25fdd7){return _0x25fdd7[_0x1e39('0x38')]()[_0x1e39('0x23')](function(){_0x26c9ce[_0x1e39('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfca777,_0x316ce4){return function(_0xb4cbbb){if(!_0xb4cbbb){_0xfca777[_0x1e39('0x39')](0x194);}return _0xb4cbbb;};}function handleError(_0x4be5fa,_0x1b4054){_0x1b4054=_0x1b4054||0x1f4;return function(_0x317e48){logger[_0x1e39('0x29')](_0x317e48[_0x1e39('0x3a')]);if(_0x317e48[_0x1e39('0x3b')]){delete _0x317e48[_0x1e39('0x3b')];}_0x4be5fa[_0x1e39('0x2e')](_0x1b4054)['send'](_0x317e48);};}exports['index']=function(_0x18cadb,_0x3c2262){var _0x4e9727={},_0x190016={},_0x45a676={'count':0x0,'rows':[]};var _0x4ef7e7=_['map'](db[_0x1e39('0x3c')][_0x1e39('0x3d')],function(_0x5b0fc7){return{'name':_0x5b0fc7[_0x1e39('0x3e')],'type':_0x5b0fc7[_0x1e39('0x3f')][_0x1e39('0x40')]};});_0x190016[_0x1e39('0x41')]=_[_0x1e39('0x42')](_0x4ef7e7,_0x1e39('0x3b'));_0x190016['query']=_[_0x1e39('0x43')](_0x18cadb[_0x1e39('0x44')]);_0x190016[_0x1e39('0x45')]=_[_0x1e39('0x46')](_0x190016[_0x1e39('0x41')],_0x190016[_0x1e39('0x44')]);_0x4e9727[_0x1e39('0x47')]=_[_0x1e39('0x46')](_0x190016[_0x1e39('0x41')],qs[_0x1e39('0x48')](_0x18cadb['query'][_0x1e39('0x48')]));_0x4e9727[_0x1e39('0x47')]=_0x4e9727[_0x1e39('0x47')]['length']?_0x4e9727[_0x1e39('0x47')]:_0x190016[_0x1e39('0x41')];if(!_0x18cadb[_0x1e39('0x44')][_0x1e39('0x49')](_0x1e39('0x4a'))){_0x4e9727[_0x1e39('0x30')]=qs['limit'](_0x18cadb[_0x1e39('0x44')][_0x1e39('0x30')]);_0x4e9727['offset']=qs[_0x1e39('0x4b')](_0x18cadb[_0x1e39('0x44')][_0x1e39('0x4b')]);}_0x4e9727['order']=qs['sort'](_0x18cadb[_0x1e39('0x44')][_0x1e39('0x4c')]);_0x4e9727[_0x1e39('0x4d')]=qs[_0x1e39('0x45')](_[_0x1e39('0x4e')](_0x18cadb[_0x1e39('0x44')],_0x190016[_0x1e39('0x45')]),_0x4ef7e7);if(_0x18cadb[_0x1e39('0x44')][_0x1e39('0x4f')]){_0x4e9727['where']=_[_0x1e39('0x50')](_0x4e9727[_0x1e39('0x4d')],{'$or':_[_0x1e39('0x42')](_0x4ef7e7,function(_0x59a475){if(_0x59a475[_0x1e39('0x3f')]!==_0x1e39('0x51')){var _0x3ea547={};_0x3ea547[_0x59a475[_0x1e39('0x3b')]]={'$like':'%'+_0x18cadb[_0x1e39('0x44')][_0x1e39('0x4f')]+'%'};return _0x3ea547;}})});}_0x4e9727=_[_0x1e39('0x50')]({},_0x4e9727,_0x18cadb['options']);var _0x2c3f8c={'where':_0x4e9727[_0x1e39('0x4d')]};return db['ChatMessage']['count'](_0x2c3f8c)[_0x1e39('0x23')](function(_0x2248da){_0x45a676[_0x1e39('0x31')]=_0x2248da;if(_0x18cadb[_0x1e39('0x44')][_0x1e39('0x52')]){_0x4e9727[_0x1e39('0x53')]=[{'all':!![]}];}return db[_0x1e39('0x3c')][_0x1e39('0x54')](_0x4e9727);})['then'](function(_0x3debc5){_0x45a676[_0x1e39('0x55')]=_0x3debc5;return _0x45a676;})[_0x1e39('0x23')](respondWithFilteredResult(_0x3c2262,_0x4e9727))['catch'](handleError(_0x3c2262,null));};exports[_0x1e39('0x56')]=function(_0x4a3c44,_0x42a27a){var _0x1625d5={'raw':!![],'where':{'id':_0x4a3c44[_0x1e39('0x57')]['id']}},_0x1c8f3a={};_0x1c8f3a['model']=_[_0x1e39('0x43')](db[_0x1e39('0x3c')][_0x1e39('0x3d')]);_0x1c8f3a['query']=_[_0x1e39('0x43')](_0x4a3c44[_0x1e39('0x44')]);_0x1c8f3a[_0x1e39('0x45')]=_[_0x1e39('0x46')](_0x1c8f3a[_0x1e39('0x41')],_0x1c8f3a[_0x1e39('0x44')]);_0x1625d5[_0x1e39('0x47')]=_['intersection'](_0x1c8f3a[_0x1e39('0x41')],qs[_0x1e39('0x48')](_0x4a3c44['query']['fields']));_0x1625d5['attributes']=_0x1625d5['attributes'][_0x1e39('0x58')]?_0x1625d5[_0x1e39('0x47')]:_0x1c8f3a[_0x1e39('0x41')];if(_0x4a3c44[_0x1e39('0x44')]['includeAll']){_0x1625d5[_0x1e39('0x53')]=[{'all':!![]}];}_0x1625d5=_['merge']({},_0x1625d5,_0x4a3c44[_0x1e39('0x59')]);return db[_0x1e39('0x3c')][_0x1e39('0x5a')](_0x1625d5)[_0x1e39('0x23')](handleEntityNotFound(_0x42a27a,null))[_0x1e39('0x23')](respondWithResult(_0x42a27a,null))[_0x1e39('0x2d')](handleError(_0x42a27a,null));};exports[_0x1e39('0x5b')]=function(_0x1b5d65,_0x157441){return db['ChatMessage'][_0x1e39('0x5b')](_0x1b5d65[_0x1e39('0x5c')],{})[_0x1e39('0x23')](respondWithResult(_0x157441,0xc9))[_0x1e39('0x2d')](handleError(_0x157441,null));};exports[_0x1e39('0x37')]=function(_0x578e36,_0x12edbb){if(_0x578e36[_0x1e39('0x5c')]['id']){delete _0x578e36[_0x1e39('0x5c')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x578e36[_0x1e39('0x57')]['id']}})[_0x1e39('0x23')](handleEntityNotFound(_0x12edbb,null))[_0x1e39('0x23')](saveUpdates(_0x578e36[_0x1e39('0x5c')],null))[_0x1e39('0x23')](respondWithResult(_0x12edbb,null))[_0x1e39('0x2d')](handleError(_0x12edbb,null));};exports[_0x1e39('0x38')]=function(_0x4ddfa3,_0xa32eb4){return db['ChatMessage'][_0x1e39('0x5a')]({'where':{'id':_0x4ddfa3[_0x1e39('0x57')]['id']}})['then'](handleEntityNotFound(_0xa32eb4,null))[_0x1e39('0x23')](removeEntity(_0xa32eb4,null))['catch'](handleError(_0xa32eb4,null));};exports[_0x1e39('0x5d')]=function(_0xf1120a,_0xc3a6b9){return db['ChatMessage']['describe']()[_0x1e39('0x23')](respondWithResult(_0xc3a6b9,null))['catch'](handleError(_0xc3a6b9,null));};var interaction_log=require(_0x1e39('0x15'))(_0x1e39('0x5e'));exports[_0x1e39('0x5f')]=function(_0x399c40,_0x2df461,_0x55724c){var _0xe90245={'agent':{},'channel':_0x1e39('0x60')};if(_0x399c40[_0x1e39('0x5c')]['id']){delete _0x399c40[_0x1e39('0x5c')]['id'];}_0x399c40[_0x1e39('0x5c')][_0x1e39('0x61')]=!![];_0x399c40['body']['readAt']=moment()[_0x1e39('0x62')](_0x1e39('0x63'));_0x399c40[_0x1e39('0x5c')]['UserId']=_0x399c40[_0x1e39('0x5c')]['UserId']||_0x399c40[_0x1e39('0x64')]['id'];_0xe90245[_0x1e39('0x65')]['id']=_0x399c40['body'][_0x1e39('0x66')];return db[_0x1e39('0x3c')]['find']({'where':{'id':_0x399c40[_0x1e39('0x57')]['id'],'UserId':null}})[_0x1e39('0x23')](handleEntityNotFound(_0x2df461,null))[_0x1e39('0x23')](saveUpdates(_0x399c40[_0x1e39('0x5c')],null))['then'](function(_0x3d258c){if(_0x3d258c){_0xe90245['message']=_0x3d258c[_0x1e39('0x67')]({'plain':!![]});return db[_0x1e39('0x68')][_0x1e39('0x5a')]({'where':{'id':_0x3d258c[_0x1e39('0x69')]}});}return null;})['then'](handleEntityNotFound(_0x2df461,null))[_0x1e39('0x23')](function(_0x4d56b2){if(_0x4d56b2){return _0x4d56b2['update']({'UserId':_0x399c40['body'][_0x1e39('0x66')],'read1stAt':_[_0x1e39('0x6a')](_0x4d56b2['read1stAt'])?moment()[_0x1e39('0x62')](_0x1e39('0x63')):undefined});}return null;})[_0x1e39('0x23')](function(_0x49a2a9){if(_0x49a2a9){_0xe90245[_0x1e39('0x6b')]=_0x49a2a9['get']({'plain':!![]});interaction_log[_0x1e39('0x24')](_0x1e39('0x6c'),_0x399c40[_0x1e39('0x64')]['id'],_0x399c40['user']['name'],_0x399c40[_0x1e39('0x64')]['role'],_0xe90245[_0x1e39('0x6b')]['id'],_0x399c40[_0x1e39('0x5c')]?JSON[_0x1e39('0x28')](_0x399c40[_0x1e39('0x5c')]):_0x1e39('0x6d'));return respondWithRpcPromise(_0x1e39('0x6e'),'acceptMessage',_0xe90245);}return null;})[_0x1e39('0x23')](function(_0x9f9503){var _0x149327=_0x1e39('0x6f')+_0x9f9503[_0x1e39('0x2b')][_0x1e39('0x70')];return db[_0x1e39('0x71')][_0x1e39('0x44')](_0x149327,{'type':db[_0x1e39('0x72')][_0x1e39('0x73')]['SELECT'],'raw':!![]})[_0x1e39('0x23')](function(_0x311c10){return _0x311c10;});})[_0x1e39('0x23')](function(_0x25708f){if(_0x25708f){_0xe90245[_0x1e39('0x2b')][_0x1e39('0x74')]=_0x25708f[0x0];if(!_0x399c40[_0x1e39('0x5c')][_0x1e39('0x66')])return;return db['User'][_0x1e39('0x5a')]({'where':{'id':_0x399c40[_0x1e39('0x5c')][_0x1e39('0x66')],'role':'agent'},'attributes':['id','name',_0x1e39('0x75'),'email',_0x1e39('0x76')],'raw':!![]});}return null;})[_0x1e39('0x23')](function(_0x2ef86b){if(!_0x2ef86b)return null;_0xe90245[_0x1e39('0x2b')][_0x1e39('0x65')]=_0x2ef86b;return _0xe90245;})[_0x1e39('0x23')](function(_0x35d6d9){if(_0x35d6d9){if(_0x399c40[_0x1e39('0x5c')][_0x1e39('0x77')]){_0xe90245[_0x1e39('0x2b')][_0x1e39('0x78')]=util[_0x1e39('0x62')](_0x1e39('0x79'),_0x399c40['user']['name']);_0xe90245[_0x1e39('0x2b')][_0x1e39('0x7a')]=_0xe90245[_0x1e39('0x7a')];_0xe90245['message'][_0x1e39('0x7b')]=_0xe90245[_0x1e39('0x7a')];_0xe90245['message'][_0x1e39('0x7c')]=_0x1e39('0x5f');return respondWithRpcPromise('EventManager',_0x1e39('0x7d'),{'event':'acceptmessage','message':_['merge'](_0xe90245['message'],JSON[_0x1e39('0x7e')](_0xe90245[_0x1e39('0x6b')][_0x1e39('0x7f')]))},client9002)[_0x1e39('0x23')](function(){return _0xe90245;});}return _0xe90245;}return null;})[_0x1e39('0x23')](respondWithResult(_0x2df461,null))[_0x1e39('0x2d')](handleError(_0x2df461,null));};var interaction_log=require('../../config/logger')(_0x1e39('0x5e'));exports[_0x1e39('0x35')]=function(_0x1bf11c,_0xe94775,_0x358571){var _0x4c4fe8={'agent':{},'channel':_0x1e39('0x60')};if(_0x1bf11c[_0x1e39('0x5c')]['id']){delete _0x1bf11c[_0x1e39('0x5c')]['id'];}_0x1bf11c[_0x1e39('0x5c')][_0x1e39('0x66')]=_0x1bf11c[_0x1e39('0x5c')][_0x1e39('0x66')]||_0x1bf11c['user']['id'];_0x4c4fe8[_0x1e39('0x65')]['id']=_0x1bf11c[_0x1e39('0x5c')][_0x1e39('0x66')];return db[_0x1e39('0x3c')]['find']({'where':{'id':_0x1bf11c[_0x1e39('0x57')]['id'],'UserId':null}})[_0x1e39('0x23')](handleEntityNotFound(_0xe94775,null))[_0x1e39('0x23')](function(_0x52c6bd){if(_0x52c6bd){_0x4c4fe8['message']=_0x52c6bd['get']({'plain':!![]});return db[_0x1e39('0x68')]['find']({'where':{'id':_0x52c6bd[_0x1e39('0x69')]}});}return null;})[_0x1e39('0x23')](handleEntityNotFound(_0xe94775,null))['then'](function(_0xae8212){if(_0xae8212){_0x4c4fe8['interaction']=_0xae8212[_0x1e39('0x67')]({'plain':!![]});interaction_log[_0x1e39('0x24')](_0x1e39('0x80'),_0x1bf11c['user']['id'],_0x1bf11c[_0x1e39('0x64')]['name'],_0x1bf11c[_0x1e39('0x64')][_0x1e39('0x81')],_0x4c4fe8[_0x1e39('0x6b')]['id'],_0x1bf11c['body']?JSON[_0x1e39('0x28')](_0x1bf11c[_0x1e39('0x5c')]):_0x1e39('0x6d'));return respondWithRpcPromise('RejectMessage',_0x1e39('0x82'),_0x4c4fe8);}return null;})[_0x1e39('0x23')](function(_0x2e993f){var _0x3209b0=_0x1e39('0x6f')+_0x2e993f[_0x1e39('0x2b')][_0x1e39('0x70')];return db[_0x1e39('0x71')][_0x1e39('0x44')](_0x3209b0,{'type':db[_0x1e39('0x72')][_0x1e39('0x73')][_0x1e39('0x83')],'raw':!![]})[_0x1e39('0x23')](function(_0xc28706){return _0xc28706;});})['then'](function(_0x1c63eb){if(_0x1c63eb){_0x4c4fe8['message']['contact']=_0x1c63eb[0x0];if(!_0x1bf11c[_0x1e39('0x5c')][_0x1e39('0x66')])return;return db[_0x1e39('0x84')][_0x1e39('0x5a')]({'where':{'id':_0x1bf11c[_0x1e39('0x5c')][_0x1e39('0x66')],'role':_0x1e39('0x65')},'attributes':['id',_0x1e39('0x3b'),_0x1e39('0x75'),_0x1e39('0x85'),'internal'],'raw':!![]});}return null;})[_0x1e39('0x23')](function(_0x15db87){if(!_0x15db87)return null;_0x4c4fe8[_0x1e39('0x2b')][_0x1e39('0x65')]=_0x15db87;return _0x4c4fe8;})['then'](function(_0x2109f8){if(_0x2109f8){_0x2109f8[_0x1e39('0x2b')][_0x1e39('0x78')]=util[_0x1e39('0x62')]('SIP/%s',_0x1bf11c[_0x1e39('0x64')][_0x1e39('0x3b')]);_0x2109f8['message'][_0x1e39('0x7a')]=_0x4c4fe8[_0x1e39('0x7a')];_0x2109f8[_0x1e39('0x2b')][_0x1e39('0x7b')]=_0x4c4fe8['channel'];_0x2109f8['message'][_0x1e39('0x7c')]=_0x1e39('0x35');respondWithRpcPromise('EventManager',_0x1e39('0x7d'),{'event':_0x1e39('0x86'),'message':_[_0x1e39('0x50')](_0x4c4fe8[_0x1e39('0x2b')],JSON[_0x1e39('0x7e')](_0x4c4fe8[_0x1e39('0x6b')]['formData']))},client9002);return _0x4c4fe8;}return null;})[_0x1e39('0x23')](respondWithResult(_0xe94775,null))[_0x1e39('0x2d')](handleError(_0xe94775,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(_0x1050f7,_0x3aacff){var _0x27e2d9=function(_0x36f7b4){while(--_0x36f7b4){_0x1050f7['push'](_0x1050f7['shift']());}};_0x27e2d9(++_0x3aacff);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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 7bc2e2b..3a01e3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b2a=['exports','../../mysqldb','ChatMessage','setMaxListeners','save','update','remove','hasOwnProperty','hook'];(function(_0x34eb31,_0x8f0f70){var _0x254994=function(_0xbec9a3){while(--_0xbec9a3){_0x34eb31['push'](_0x34eb31['shift']());}};_0x254994(++_0x8f0f70);}(_0x9b2a,0x1e7));var _0xa9b2=function(_0x2e2e17,_0x1366f6){_0x2e2e17=_0x2e2e17-0x0;var _0x2dff2f=_0x9b2a[_0x2e2e17];return _0x2dff2f;};'use strict';var EventEmitter=require('events');var ChatMessage=require(_0xa9b2('0x0'))['db'][_0xa9b2('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xa9b2('0x2')](0x0);var events={'afterCreate':_0xa9b2('0x3'),'afterUpdate':_0xa9b2('0x4'),'afterDestroy':_0xa9b2('0x5')};function emitEvent(_0x5aa243){return function(_0x7cd48e,_0x299308,_0x2e6593){ChatMessageEvents['emit'](_0x5aa243+':'+_0x7cd48e['id'],_0x7cd48e);ChatMessageEvents['emit'](_0x5aa243,_0x7cd48e);_0x2e6593(null);};}for(var e in events){if(events[_0xa9b2('0x6')](e)){var event=events[e];ChatMessage[_0xa9b2('0x7')](e,emitEvent(event));}}module[_0xa9b2('0x8')]=ChatMessageEvents;
\ No newline at end of file
+var _0xa841=['hook','exports','events','../../mysqldb','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x461efd,_0x228cc7){var _0x325d18=function(_0x63ae7a){while(--_0x63ae7a){_0x461efd['push'](_0x461efd['shift']());}};_0x325d18(++_0x228cc7);}(_0xa841,0xb2));var _0x1a84=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xa841[_0x57b54c];return _0x59cc19;};'use strict';var EventEmitter=require(_0x1a84('0x0'));var ChatMessage=require(_0x1a84('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x1a84('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1a84('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4188b4){return function(_0x39f512,_0x1e456f,_0x2d500b){ChatMessageEvents[_0x1a84('0x4')](_0x4188b4+':'+_0x39f512['id'],_0x39f512);ChatMessageEvents[_0x1a84('0x4')](_0x4188b4,_0x39f512);_0x2d500b(null);};}for(var e in events){if(events[_0x1a84('0x5')](e)){var event=events[e];ChatMessage[_0x1a84('0x6')](e,emitEvent(event));}}module[_0x1a84('0x7')]=ChatMessageEvents;
\ No newline at end of file
index 8f38df0..acbad3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96a5=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','update','error','utf8mb4','lodash'];(function(_0x24afae,_0xc1e4eb){var _0x5713b5=function(_0x2a29dd){while(--_0x2a29dd){_0x24afae['push'](_0x24afae['shift']());}};_0x5713b5(++_0xc1e4eb);}(_0x96a5,0x17f));var _0x596a=function(_0xbee9b3,_0x344eab){_0xbee9b3=_0xbee9b3-0x0;var _0x26960e=_0x96a5[_0xbee9b3];return _0x26960e;};'use strict';var _=require(_0x596a('0x0'));var util=require(_0x596a('0x1'));var logger=require(_0x596a('0x2'))(_0x596a('0x3'));var moment=require(_0x596a('0x4'));var BPromise=require(_0x596a('0x5'));var rp=require(_0x596a('0x6'));var fs=require('fs');var path=require(_0x596a('0x7'));var rimraf=require(_0x596a('0x8'));var config=require(_0x596a('0x9'));var attributes=require(_0x596a('0xa'));module[_0x596a('0xb')]=function(_0x3d7f33,_0x276f2d){return _0x3d7f33[_0x596a('0xc')](_0x596a('0xd'),attributes,{'tableName':_0x596a('0xe'),'paranoid':![],'indexes':[{'name':_0x596a('0xf'),'fields':[_0x596a('0x10')],'type':_0x596a('0x11')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xe56c80,_0x9e477,_0x160b97){var _0x3f7fb1=_0x3d7f33[_0x596a('0x12')];var _0x12e2b0=_0xe56c80[_0x596a('0x13')]({'plain':!![]});if(_0x12e2b0[_0x596a('0x14')][_0x596a('0x15')]()==='in'||_0x12e2b0['direction']['toLowerCase']()===_0x596a('0x16')&&!_0x12e2b0[_0x596a('0x17')]&&!_[_0x596a('0x18')](_0x12e2b0[_0x596a('0x19')])){_0x3f7fb1[_0x596a('0x1a')][_0x596a('0x1b')]({'where':{'id':_0x12e2b0[_0x596a('0x1c')]}})['then'](function(_0x52801c){if(_0x52801c){_0x52801c[_0x596a('0x1d')]({'lastMsgAt':_0x12e2b0['createdAt'],'lastMsgDirection':_0x12e2b0[_0x596a('0x14')][_0x596a('0x15')]()});}})['catch'](function(_0x27f885){console[_0x596a('0x1e')](_0x27f885);});}_0x160b97();}},'charset':_0x596a('0x1f'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xdd12=['../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','direction','toLowerCase','out','secret','isNil','ChatInteraction','findOne','ChatInteractionId','then','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','path'];(function(_0x438869,_0x166201){var _0xf903ab=function(_0x4e8a8d){while(--_0x4e8a8d){_0x438869['push'](_0x438869['shift']());}};_0xf903ab(++_0x166201);}(_0xdd12,0xf6));var _0x2dd1=function(_0x516029,_0x2771c9){_0x516029=_0x516029-0x0;var _0x3af984=_0xdd12[_0x516029];return _0x3af984;};'use strict';var _=require(_0x2dd1('0x0'));var util=require(_0x2dd1('0x1'));var logger=require('../../config/logger')(_0x2dd1('0x2'));var moment=require(_0x2dd1('0x3'));var BPromise=require('bluebird');var rp=require(_0x2dd1('0x4'));var fs=require('fs');var path=require(_0x2dd1('0x5'));var rimraf=require('rimraf');var config=require(_0x2dd1('0x6'));var attributes=require(_0x2dd1('0x7'));module[_0x2dd1('0x8')]=function(_0x482a83,_0x4f3bc6){return _0x482a83[_0x2dd1('0x9')](_0x2dd1('0xa'),attributes,{'tableName':_0x2dd1('0xb'),'paranoid':![],'indexes':[{'name':_0x2dd1('0xc'),'fields':[_0x2dd1('0xd')],'type':_0x2dd1('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4723e3,_0x595157,_0x419e6f){var _0x142a5d=_0x482a83['models'];var _0x1e17c0=_0x4723e3['get']({'plain':!![]});if(_0x1e17c0[_0x2dd1('0xf')]['toLowerCase']()==='in'||_0x1e17c0[_0x2dd1('0xf')][_0x2dd1('0x10')]()===_0x2dd1('0x11')&&!_0x1e17c0[_0x2dd1('0x12')]&&!_[_0x2dd1('0x13')](_0x1e17c0['UserId'])){_0x142a5d[_0x2dd1('0x14')][_0x2dd1('0x15')]({'where':{'id':_0x1e17c0[_0x2dd1('0x16')]}})[_0x2dd1('0x17')](function(_0x52edc8){if(_0x52edc8){_0x52edc8['update']({'lastMsgAt':_0x1e17c0['createdAt'],'lastMsgDirection':_0x1e17c0[_0x2dd1('0xf')][_0x2dd1('0x10')]()});}})[_0x2dd1('0x18')](function(_0xb3cd58){console[_0x2dd1('0x19')](_0xb3cd58);});}_0x419e6f();}},'charset':_0x2dd1('0x1a'),'collate':_0x2dd1('0x1b')});};
\ No newline at end of file
index 93ed2eb..0cc4a25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e6f=['socket.io-emitter','./chatMessage.socket','register','info','debug','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','ChatMessage,\x20%s,\x20%s','error','message','catch','CreateChatMessage','create','body','options','raw','then','lodash','util','moment','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost'];(function(_0x95916a,_0x3707d7){var _0x2a0ac4=function(_0x4754c4){while(--_0x4754c4){_0x95916a['push'](_0x95916a['shift']());}};_0x2a0ac4(++_0x3707d7);}(_0x5e6f,0x1c5));var _0xf5e6=function(_0x5deb0a,_0xc192bb){_0x5deb0a=_0x5deb0a-0x0;var _0x33d0ce=_0x5e6f[_0x5deb0a];return _0x33d0ce;};'use strict';var _=require(_0xf5e6('0x0'));var util=require(_0xf5e6('0x1'));var moment=require(_0xf5e6('0x2'));var BPromise=require('bluebird');var rs=require(_0xf5e6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf5e6('0x4'))(_0xf5e6('0x5'));var config=require(_0xf5e6('0x6'));var jayson=require(_0xf5e6('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0xf5e6('0x8')]=_[_0xf5e6('0x9')](config[_0xf5e6('0x8')],{'host':_0xf5e6('0xa'),'port':0x18eb});var socket=require(_0xf5e6('0xb'))(new Redis(config[_0xf5e6('0x8')]));require(_0xf5e6('0xc'))[_0xf5e6('0xd')](socket);function respondWithRpcPromise(_0x303a4f,_0x2c4443,_0x3f038f){return new BPromise(function(_0x38d06c,_0x59929f){return client['request'](_0x303a4f,_0x3f038f)['then'](function(_0x25c256){logger[_0xf5e6('0xe')]('ChatMessage,\x20%s,\x20%s',_0x2c4443,'request\x20sent');logger[_0xf5e6('0xf')](_0xf5e6('0x10'),_0x2c4443,_0xf5e6('0x11'),JSON[_0xf5e6('0x12')](_0x25c256));if(_0x25c256['error']){if(_0x25c256['error']['code']===0x1f4){logger['error'](_0xf5e6('0x13'),_0x2c4443,_0x25c256[_0xf5e6('0x14')][_0xf5e6('0x15')]);return _0x59929f(_0x25c256[_0xf5e6('0x14')][_0xf5e6('0x15')]);}logger[_0xf5e6('0x14')]('ChatMessage,\x20%s,\x20%s',_0x2c4443,_0x25c256[_0xf5e6('0x14')][_0xf5e6('0x15')]);return _0x38d06c(_0x25c256[_0xf5e6('0x14')][_0xf5e6('0x15')]);}else{logger['info'](_0xf5e6('0x13'),_0x2c4443,_0xf5e6('0x11'));_0x38d06c(_0x25c256['result']['message']);}})[_0xf5e6('0x16')](function(_0x5cfbe0){logger[_0xf5e6('0x14')]('ChatMessage,\x20%s,\x20%s',_0x2c4443,_0x5cfbe0);_0x59929f(_0x5cfbe0);});});}exports[_0xf5e6('0x17')]=function(_0x590e59){var _0x6070a4=this;return new Promise(function(_0x3d53d1,_0x235d89){return db['ChatMessage'][_0xf5e6('0x18')](_0x590e59[_0xf5e6('0x19')],{'raw':_0x590e59[_0xf5e6('0x1a')]?_0x590e59[_0xf5e6('0x1a')][_0xf5e6('0x1b')]===undefined?!![]:![]:!![]})[_0xf5e6('0x1c')](function(_0x4859f4){logger[_0xf5e6('0xe')](_0xf5e6('0x17'),_0x590e59);logger[_0xf5e6('0xf')](_0xf5e6('0x17'),_0x590e59,JSON[_0xf5e6('0x12')](_0x4859f4));_0x3d53d1(_0x4859f4);})[_0xf5e6('0x16')](function(_0x3ce649){logger[_0xf5e6('0x14')]('CreateChatMessage',_0x3ce649[_0xf5e6('0x15')],_0x590e59);_0x235d89(_0x6070a4[_0xf5e6('0x14')](0x1f4,_0x3ce649['message']));});});};
\ No newline at end of file
+var _0xa65e=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','socket.io-emitter','register','request','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateChatMessage','ChatMessage','create','body','options','raw','catch'];(function(_0x4a248b,_0x29e290){var _0x565f8c=function(_0x3944b1){while(--_0x3944b1){_0x4a248b['push'](_0x4a248b['shift']());}};_0x565f8c(++_0x29e290);}(_0xa65e,0x1ed));var _0xea65=function(_0x506d2f,_0x5ab76e){_0x506d2f=_0x506d2f-0x0;var _0x101255=_0xa65e[_0x506d2f];return _0x101255;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xea65('0x0'));var BPromise=require('bluebird');var rs=require(_0xea65('0x1'));var fs=require('fs');var Redis=require(_0xea65('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xea65('0x3'));var logger=require(_0xea65('0x4'))(_0xea65('0x5'));var config=require(_0xea65('0x6'));var jayson=require(_0xea65('0x7'));var client=jayson['client'][_0xea65('0x8')]({'port':0x232a});config['redis']=_['defaults'](config[_0xea65('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xea65('0xa'))(new Redis(config[_0xea65('0x9')]));require('./chatMessage.socket')[_0xea65('0xb')](socket);function respondWithRpcPromise(_0x391db0,_0x38b4cb,_0x5d8eb2){return new BPromise(function(_0x489973,_0x328964){return client[_0xea65('0xc')](_0x391db0,_0x5d8eb2)['then'](function(_0xea0987){logger[_0xea65('0xd')](_0xea65('0xe'),_0x38b4cb,_0xea65('0xf'));logger[_0xea65('0x10')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x38b4cb,'request\x20sent',JSON[_0xea65('0x11')](_0xea0987));if(_0xea0987[_0xea65('0x12')]){if(_0xea0987[_0xea65('0x12')][_0xea65('0x13')]===0x1f4){logger[_0xea65('0x12')](_0xea65('0xe'),_0x38b4cb,_0xea0987['error']['message']);return _0x328964(_0xea0987[_0xea65('0x12')][_0xea65('0x14')]);}logger[_0xea65('0x12')](_0xea65('0xe'),_0x38b4cb,_0xea0987[_0xea65('0x12')][_0xea65('0x14')]);return _0x489973(_0xea0987['error'][_0xea65('0x14')]);}else{logger['info'](_0xea65('0xe'),_0x38b4cb,'request\x20sent');_0x489973(_0xea0987[_0xea65('0x15')][_0xea65('0x14')]);}})['catch'](function(_0x509625){logger[_0xea65('0x12')](_0xea65('0xe'),_0x38b4cb,_0x509625);_0x328964(_0x509625);});});}exports[_0xea65('0x16')]=function(_0x29bf0d){var _0x64248e=this;return new Promise(function(_0x3b1edc,_0x399c86){return db[_0xea65('0x17')][_0xea65('0x18')](_0x29bf0d[_0xea65('0x19')],{'raw':_0x29bf0d[_0xea65('0x1a')]?_0x29bf0d[_0xea65('0x1a')][_0xea65('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x59c558){logger[_0xea65('0xd')](_0xea65('0x16'),_0x29bf0d);logger[_0xea65('0x10')](_0xea65('0x16'),_0x29bf0d,JSON['stringify'](_0x59c558));_0x3b1edc(_0x59c558);})[_0xea65('0x1c')](function(_0xf5173){logger['error'](_0xea65('0x16'),_0xf5173[_0xea65('0x14')],_0x29bf0d);_0x399c86(_0x64248e[_0xea65('0x12')](0x1f4,_0xf5173[_0xea65('0x14')]));});});};
\ No newline at end of file
index fd839c7..a9fd043 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea31=['register','chatMessage:','./chatMessage.events','remove','update','emit','removeListener'];(function(_0x225f50,_0x48a77d){var _0x19d003=function(_0x58965d){while(--_0x58965d){_0x225f50['push'](_0x225f50['shift']());}};_0x19d003(++_0x48a77d);}(_0xea31,0x6b));var _0x1ea3=function(_0x38b0d8,_0x17c058){_0x38b0d8=_0x38b0d8-0x0;var _0x427965=_0xea31[_0x38b0d8];return _0x427965;};'use strict';var ChatMessageEvents=require(_0x1ea3('0x0'));var events=['save',_0x1ea3('0x1'),_0x1ea3('0x2')];function createListener(_0x3b1d99,_0x153625){return function(_0x2dc24e){_0x153625[_0x1ea3('0x3')](_0x3b1d99,_0x2dc24e);};}function removeListener(_0x1142f1,_0x555620){return function(){ChatMessageEvents[_0x1ea3('0x4')](_0x1142f1,_0x555620);};}exports[_0x1ea3('0x5')]=function(_0x6810da){for(var _0x27c695=0x0,_0x13e6fb=events['length'];_0x27c695<_0x13e6fb;_0x27c695++){var _0x1fa3a8=events[_0x27c695];var _0x1b578e=createListener(_0x1ea3('0x6')+_0x1fa3a8,_0x6810da);ChatMessageEvents['on'](_0x1fa3a8,_0x1b578e);}};
\ No newline at end of file
+var _0x98a8=['save','remove','update','removeListener','register','chatMessage:','./chatMessage.events'];(function(_0x4ab5ed,_0x31a779){var _0x851b24=function(_0xd3c3b9){while(--_0xd3c3b9){_0x4ab5ed['push'](_0x4ab5ed['shift']());}};_0x851b24(++_0x31a779);}(_0x98a8,0x12c));var _0x898a=function(_0x480ec9,_0x1d8014){_0x480ec9=_0x480ec9-0x0;var _0x18478c=_0x98a8[_0x480ec9];return _0x18478c;};'use strict';var ChatMessageEvents=require(_0x898a('0x0'));var events=[_0x898a('0x1'),_0x898a('0x2'),_0x898a('0x3')];function createListener(_0x213c5d,_0x226db7){return function(_0x69c61f){_0x226db7['emit'](_0x213c5d,_0x69c61f);};}function removeListener(_0x2bb3e2,_0xf84a19){return function(){ChatMessageEvents[_0x898a('0x4')](_0x2bb3e2,_0xf84a19);};}exports[_0x898a('0x5')]=function(_0x3e7ddd){for(var _0x5d7e59=0x0,_0x3aadc2=events['length'];_0x5d7e59<_0x3aadc2;_0x5d7e59++){var _0xfa8c50=events[_0x5d7e59];var _0x4fbce5=createListener(_0x898a('0x6')+_0xfa8c50,_0x3e7ddd);ChatMessageEvents['on'](_0xfa8c50,_0x4fbce5);}};
\ No newline at end of file
index fd227cc..3d6a6d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a95=['../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','post','chat','chatmessage:create','put','/:id/accept','accept','reject','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra'];(function(_0x1a20be,_0x2c18b8){var _0x147494=function(_0xe4fe4f){while(--_0xe4fe4f){_0x1a20be['push'](_0x1a20be['shift']());}};_0x147494(++_0x2c18b8);}(_0x5a95,0xd3));var _0x55a9=function(_0x370242,_0x17144a){_0x370242=_0x370242-0x0;var _0x2ccd21=_0x5a95[_0x370242];return _0x2ccd21;};'use strict';var multer=require(_0x55a9('0x0'));var util=require('util');var path=require(_0x55a9('0x1'));var timeout=require(_0x55a9('0x2'));var express=require(_0x55a9('0x3'));var router=express['Router']();var fs_extra=require(_0x55a9('0x4'));var auth=require(_0x55a9('0x5'));var interaction=require(_0x55a9('0x6'));var config=require(_0x55a9('0x7'));var controller=require('./chatMessage.controller');router['get']('/',auth[_0x55a9('0x8')](),controller[_0x55a9('0x9')]);router[_0x55a9('0xa')](_0x55a9('0xb'),auth[_0x55a9('0x8')](),controller[_0x55a9('0xc')]);router['get'](_0x55a9('0xd'),auth[_0x55a9('0x8')](),controller['show']);router[_0x55a9('0xe')]('/',auth[_0x55a9('0x8')](),interaction['tracked'](_0x55a9('0xf'),_0x55a9('0x10')),controller['create']);router['put'](_0x55a9('0xd'),controller['update']);router[_0x55a9('0x11')](_0x55a9('0x12'),auth[_0x55a9('0x8')](),controller[_0x55a9('0x13')]);router[_0x55a9('0x11')]('/:id/reject',auth[_0x55a9('0x8')](),controller[_0x55a9('0x14')]);router[_0x55a9('0x15')](_0x55a9('0xd'),auth[_0x55a9('0x8')](),controller[_0x55a9('0x16')]);module[_0x55a9('0x17')]=router;
\ No newline at end of file
+var _0xae50=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','chat','put','accept','/:id/reject','reject','delete','destroy','multer','util','path'];(function(_0x330e56,_0x175f5a){var _0x589c07=function(_0x1639a7){while(--_0x1639a7){_0x330e56['push'](_0x330e56['shift']());}};_0x589c07(++_0x175f5a);}(_0xae50,0x7a));var _0x0ae5=function(_0x1ac6e5,_0x40f47f){_0x1ac6e5=_0x1ac6e5-0x0;var _0x5877dc=_0xae50[_0x1ac6e5];return _0x5877dc;};'use strict';var multer=require(_0x0ae5('0x0'));var util=require(_0x0ae5('0x1'));var path=require(_0x0ae5('0x2'));var timeout=require(_0x0ae5('0x3'));var express=require('express');var router=express[_0x0ae5('0x4')]();var fs_extra=require(_0x0ae5('0x5'));var auth=require(_0x0ae5('0x6'));var interaction=require(_0x0ae5('0x7'));var config=require(_0x0ae5('0x8'));var controller=require('./chatMessage.controller');router[_0x0ae5('0x9')]('/',auth[_0x0ae5('0xa')](),controller[_0x0ae5('0xb')]);router[_0x0ae5('0x9')](_0x0ae5('0xc'),auth[_0x0ae5('0xa')](),controller[_0x0ae5('0xd')]);router['get'](_0x0ae5('0xe'),auth[_0x0ae5('0xa')](),controller[_0x0ae5('0xf')]);router[_0x0ae5('0x10')]('/',auth['isAuthenticated'](),interaction[_0x0ae5('0x11')](_0x0ae5('0x12'),'chatmessage:create'),controller['create']);router[_0x0ae5('0x13')](_0x0ae5('0xe'),controller['update']);router['put']('/:id/accept',auth['isAuthenticated'](),controller[_0x0ae5('0x14')]);router[_0x0ae5('0x13')](_0x0ae5('0x15'),auth[_0x0ae5('0xa')](),controller[_0x0ae5('0x16')]);router[_0x0ae5('0x17')](_0x0ae5('0xe'),auth[_0x0ae5('0xa')](),controller[_0x0ae5('0x18')]);module['exports']=router;
\ No newline at end of file
index e85ec63..df8e904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f92=['sequelize','exports','TEXT','medium'];(function(_0x2fcda1,_0x3f6814){var _0x243a92=function(_0x2d7043){while(--_0x2d7043){_0x2fcda1['push'](_0x2fcda1['shift']());}};_0x243a92(++_0x3f6814);}(_0x7f92,0x64));var _0x27f9=function(_0xe2d608,_0x31508c){_0xe2d608=_0xe2d608-0x0;var _0x27ca38=_0x7f92[_0xe2d608];return _0x27ca38;};'use strict';var Sequelize=require(_0x27f9('0x0'));module[_0x27f9('0x1')]={'body':{'type':Sequelize[_0x27f9('0x2')](_0x27f9('0x3')),'allowNull':![]}};
\ No newline at end of file
+var _0xa08e=['medium','exports'];(function(_0x2a3b70,_0x137f86){var _0x376380=function(_0x46ac67){while(--_0x46ac67){_0x2a3b70['push'](_0x2a3b70['shift']());}};_0x376380(++_0x137f86);}(_0xa08e,0x13f));var _0xea08=function(_0x4d2993,_0x1c9473){_0x4d2993=_0x4d2993-0x0;var _0x427374=_0xa08e[_0x4d2993];return _0x427374;};'use strict';var Sequelize=require('sequelize');module[_0xea08('0x0')]={'body':{'type':Sequelize['TEXT'](_0xea08('0x1')),'allowNull':![]}};
\ No newline at end of file
index 9c67fe8..2e586fc 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(_0x23b129,_0x12030c){var _0x1a4c39=function(_0x540d2a){while(--_0x540d2a){_0x23b129['push'](_0x23b129['shift']());}};_0x1a4c39(++_0x12030c);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
+var _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(_0x392d4a,_0x1a3872){var _0x1edd3a=function(_0x18c37f){while(--_0x18c37f){_0x392d4a['push'](_0x392d4a['shift']());}};_0x1edd3a(++_0x1a3872);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'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 825c1d5..1d1afd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x112c=['utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./chatOfflineMessage.attributes','exports','define','chat_offline_messages','utf8mb4'];(function(_0x2aa48b,_0x5a4446){var _0x48caf8=function(_0x13230c){while(--_0x13230c){_0x2aa48b['push'](_0x2aa48b['shift']());}};_0x48caf8(++_0x5a4446);}(_0x112c,0xef));var _0xc112=function(_0x1a5db7,_0x35760a){_0x1a5db7=_0x1a5db7-0x0;var _0x624a34=_0x112c[_0x1a5db7];return _0x624a34;};'use strict';var _=require(_0xc112('0x0'));var util=require('util');var logger=require(_0xc112('0x1'))(_0xc112('0x2'));var moment=require(_0xc112('0x3'));var BPromise=require(_0xc112('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc112('0x5'));var rimraf=require(_0xc112('0x6'));var config=require(_0xc112('0x7'));var attributes=require(_0xc112('0x8'));module[_0xc112('0x9')]=function(_0x1da3b8,_0x5decc4){return _0x1da3b8[_0xc112('0xa')]('ChatOfflineMessage',attributes,{'tableName':_0xc112('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc112('0xc'),'collate':_0xc112('0xd')});};
\ No newline at end of file
+var _0x32cb=['exports','define','ChatOfflineMessage','chat_offline_messages','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./chatOfflineMessage.attributes'];(function(_0x2d40f1,_0x105608){var _0x2a9e19=function(_0x342df1){while(--_0x342df1){_0x2d40f1['push'](_0x2d40f1['shift']());}};_0x2a9e19(++_0x105608);}(_0x32cb,0x1cb));var _0xb32c=function(_0x4fc1e9,_0x275e2e){_0x4fc1e9=_0x4fc1e9-0x0;var _0x47d4aa=_0x32cb[_0x4fc1e9];return _0x47d4aa;};'use strict';var _=require(_0xb32c('0x0'));var util=require(_0xb32c('0x1'));var logger=require(_0xb32c('0x2'))(_0xb32c('0x3'));var moment=require(_0xb32c('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb32c('0x5'));var rimraf=require(_0xb32c('0x6'));var config=require(_0xb32c('0x7'));var attributes=require(_0xb32c('0x8'));module[_0xb32c('0x9')]=function(_0x4c838f,_0x46380e){return _0x4c838f[_0xb32c('0xa')](_0xb32c('0xb'),attributes,{'tableName':_0xb32c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index edfd0de..596b56c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3826=['request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','ChatOfflineMessage,\x20%s,\x20%s'];(function(_0x44607e,_0x117dcc){var _0x45db3e=function(_0x2d8eeb){while(--_0x2d8eeb){_0x44607e['push'](_0x44607e['shift']());}};_0x45db3e(++_0x117dcc);}(_0x3826,0x190));var _0x6382=function(_0x2df7c7,_0x5ec3eb){_0x2df7c7=_0x2df7c7-0x0;var _0x42995b=_0x3826[_0x2df7c7];return _0x42995b;};'use strict';var _=require(_0x6382('0x0'));var util=require(_0x6382('0x1'));var moment=require('moment');var BPromise=require(_0x6382('0x2'));var rs=require(_0x6382('0x3'));var fs=require('fs');var Redis=require(_0x6382('0x4'));var db=require(_0x6382('0x5'))['db'];var utils=require(_0x6382('0x6'));var logger=require(_0x6382('0x7'))('rpc');var config=require(_0x6382('0x8'));var jayson=require(_0x6382('0x9'));var client=jayson[_0x6382('0xa')][_0x6382('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x357b87,_0x8c9f1a,_0x3be9b9){return new BPromise(function(_0x4f5e31,_0xca0750){return client['request'](_0x357b87,_0x3be9b9)['then'](function(_0x37f373){logger[_0x6382('0xc')](_0x6382('0xd'),_0x8c9f1a,_0x6382('0xe'));logger[_0x6382('0xf')](_0x6382('0x10'),_0x8c9f1a,_0x6382('0xe'),JSON[_0x6382('0x11')](_0x37f373));if(_0x37f373['error']){if(_0x37f373[_0x6382('0x12')][_0x6382('0x13')]===0x1f4){logger[_0x6382('0x12')](_0x6382('0xd'),_0x8c9f1a,_0x37f373[_0x6382('0x12')][_0x6382('0x14')]);return _0xca0750(_0x37f373[_0x6382('0x12')][_0x6382('0x14')]);}logger[_0x6382('0x12')](_0x6382('0xd'),_0x8c9f1a,_0x37f373[_0x6382('0x12')][_0x6382('0x14')]);return _0x4f5e31(_0x37f373[_0x6382('0x12')]['message']);}else{logger[_0x6382('0xc')]('ChatOfflineMessage,\x20%s,\x20%s',_0x8c9f1a,_0x6382('0xe'));_0x4f5e31(_0x37f373[_0x6382('0x15')]['message']);}})[_0x6382('0x16')](function(_0x22b9b4){logger[_0x6382('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x8c9f1a,_0x22b9b4);_0xca0750(_0x22b9b4);});});}
\ No newline at end of file
+var _0xe29d=['code','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3ac4be,_0x2a02f8){var _0x94f1d3=function(_0x4f9035){while(--_0x4f9035){_0x3ac4be['push'](_0x3ac4be['shift']());}};_0x94f1d3(++_0x2a02f8);}(_0xe29d,0x1a7));var _0xde29=function(_0x387e58,_0x16a12e){_0x387e58=_0x387e58-0x0;var _0x344dfd=_0xe29d[_0x387e58];return _0x344dfd;};'use strict';var _=require(_0xde29('0x0'));var util=require(_0xde29('0x1'));var moment=require(_0xde29('0x2'));var BPromise=require('bluebird');var rs=require(_0xde29('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xde29('0x4'))['db'];var utils=require(_0xde29('0x5'));var logger=require(_0xde29('0x6'))('rpc');var config=require(_0xde29('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xde29('0x8')][_0xde29('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x29b12e,_0x2ebef9,_0x2d6e06){return new BPromise(function(_0x2b2843,_0x1133fc){return client[_0xde29('0xa')](_0x29b12e,_0x2d6e06)[_0xde29('0xb')](function(_0x10e3d5){logger[_0xde29('0xc')](_0xde29('0xd'),_0x2ebef9,_0xde29('0xe'));logger['debug'](_0xde29('0xf'),_0x2ebef9,_0xde29('0xe'),JSON[_0xde29('0x10')](_0x10e3d5));if(_0x10e3d5[_0xde29('0x11')]){if(_0x10e3d5[_0xde29('0x11')][_0xde29('0x12')]===0x1f4){logger[_0xde29('0x11')]('ChatOfflineMessage,\x20%s,\x20%s',_0x2ebef9,_0x10e3d5[_0xde29('0x11')][_0xde29('0x13')]);return _0x1133fc(_0x10e3d5[_0xde29('0x11')][_0xde29('0x13')]);}logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x2ebef9,_0x10e3d5[_0xde29('0x11')]['message']);return _0x2b2843(_0x10e3d5[_0xde29('0x11')][_0xde29('0x13')]);}else{logger[_0xde29('0xc')](_0xde29('0xd'),_0x2ebef9,_0xde29('0xe'));_0x2b2843(_0x10e3d5['result'][_0xde29('0x13')]);}})[_0xde29('0x14')](function(_0x147960){logger[_0xde29('0x11')](_0xde29('0xd'),_0x2ebef9,_0x147960);_0x1133fc(_0x147960);});});}
\ No newline at end of file
index afea147..afd22fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4593=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','isAuthenticated','get','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','path'];(function(_0x83b169,_0x392d60){var _0x8f726c=function(_0xe18fe5){while(--_0xe18fe5){_0x83b169['push'](_0x83b169['shift']());}};_0x8f726c(++_0x392d60);}(_0x4593,0x12f));var _0x3459=function(_0x468b0f,_0x408566){_0x468b0f=_0x468b0f-0x0;var _0x3e74d9=_0x4593[_0x468b0f];return _0x3e74d9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3459('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3459('0x1')]();var fs_extra=require(_0x3459('0x2'));var auth=require(_0x3459('0x3'));var interaction=require(_0x3459('0x4'));var config=require(_0x3459('0x5'));var controller=require(_0x3459('0x6'));router['get']('/',auth[_0x3459('0x7')](),controller['index']);router[_0x3459('0x8')](_0x3459('0x9'),auth['isAuthenticated'](),controller[_0x3459('0xa')]);router['get'](_0x3459('0xb'),auth['isAuthenticated'](),controller[_0x3459('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3459('0xd')]);router[_0x3459('0xe')]('/:id',auth[_0x3459('0x7')](),controller[_0x3459('0xf')]);router[_0x3459('0x10')](_0x3459('0xb'),auth[_0x3459('0x7')](),controller[_0x3459('0x11')]);module[_0x3459('0x12')]=router;
\ No newline at end of file
+var _0x230b=['put','update','delete','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','/describe','/:id','show','post'];(function(_0x59e7e0,_0x3ec148){var _0x26b058=function(_0x212ee2){while(--_0x212ee2){_0x59e7e0['push'](_0x59e7e0['shift']());}};_0x26b058(++_0x3ec148);}(_0x230b,0x1a6));var _0xb230=function(_0x43b151,_0x16ac3a){_0x43b151=_0x43b151-0x0;var _0x8eba96=_0x230b[_0x43b151];return _0x8eba96;};'use strict';var multer=require('multer');var util=require(_0xb230('0x0'));var path=require(_0xb230('0x1'));var timeout=require('connect-timeout');var express=require(_0xb230('0x2'));var router=express[_0xb230('0x3')]();var fs_extra=require(_0xb230('0x4'));var auth=require(_0xb230('0x5'));var interaction=require(_0xb230('0x6'));var config=require(_0xb230('0x7'));var controller=require(_0xb230('0x8'));router[_0xb230('0x9')]('/',auth[_0xb230('0xa')](),controller['index']);router[_0xb230('0x9')](_0xb230('0xb'),auth[_0xb230('0xa')](),controller['describe']);router[_0xb230('0x9')](_0xb230('0xc'),auth[_0xb230('0xa')](),controller[_0xb230('0xd')]);router[_0xb230('0xe')]('/',auth[_0xb230('0xa')](),controller['create']);router[_0xb230('0xf')](_0xb230('0xc'),auth['isAuthenticated'](),controller[_0xb230('0x10')]);router[_0xb230('0x11')](_0xb230('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xb230('0x12')]=router;
\ No newline at end of file
index 7291dbf..d845ed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05ca=['timeout','INTEGER','sequelize','exports','STRING','mouseOver'];(function(_0x4db3ac,_0x2aebb8){var _0x59a635=function(_0x2d888a){while(--_0x2d888a){_0x4db3ac['push'](_0x4db3ac['shift']());}};_0x59a635(++_0x2aebb8);}(_0x05ca,0x9e));var _0xa05c=function(_0x825d94,_0x2e8884){_0x825d94=_0x825d94-0x0;var _0x2cdd0d=_0x05ca[_0x825d94];return _0x2cdd0d;};'use strict';var Sequelize=require(_0xa05c('0x0'));module[_0xa05c('0x1')]={'name':{'type':Sequelize[_0xa05c('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xa05c('0x3'),_0xa05c('0x4')),'defaultValue':_0xa05c('0x3')},'selector':{'type':Sequelize[_0xa05c('0x2')]},'timeout':{'type':Sequelize[_0xa05c('0x5')]}};
\ No newline at end of file
+var _0xbf22=['sequelize','exports','ENUM','timeout','STRING','INTEGER'];(function(_0x57d8b1,_0x102b40){var _0x489ef1=function(_0x1a48a5){while(--_0x1a48a5){_0x57d8b1['push'](_0x57d8b1['shift']());}};_0x489ef1(++_0x102b40);}(_0xbf22,0x15c));var _0x2bf2=function(_0x44f89a,_0x3f0a4b){_0x44f89a=_0x44f89a-0x0;var _0x3ba3c5=_0xbf22[_0x44f89a];return _0x3ba3c5;};'use strict';var Sequelize=require(_0x2bf2('0x0'));module[_0x2bf2('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x2bf2('0x2')]('mouseOver',_0x2bf2('0x3')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize[_0x2bf2('0x4')]},'timeout':{'type':Sequelize[_0x2bf2('0x5')]}};
\ No newline at end of file
index aef7148..83bbf54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95d9=['update','then','destroy','error','stack','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save'];(function(_0x2bc836,_0x5c1a7f){var _0x382fbd=function(_0x280b1d){while(--_0x280b1d){_0x2bc836['push'](_0x2bc836['shift']());}};_0x382fbd(++_0x5c1a7f);}(_0x95d9,0x97));var _0x995d=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0x95d9[_0x2ec461];return _0x28603d;};'use strict';var emlformat=require(_0x995d('0x0'));var rimraf=require(_0x995d('0x1'));var zipdir=require(_0x995d('0x2'));var jsonpatch=require(_0x995d('0x3'));var rp=require('request-promise');var moment=require(_0x995d('0x4'));var BPromise=require(_0x995d('0x5'));var Mustache=require(_0x995d('0x6'));var util=require('util');var path=require(_0x995d('0x7'));var sox=require(_0x995d('0x8'));var csv=require(_0x995d('0x9'));var ejs=require(_0x995d('0xa'));var fs=require('fs');var fs_extra=require(_0x995d('0xb'));var _=require('lodash');var squel=require(_0x995d('0xc'));var crypto=require(_0x995d('0xd'));var jsforce=require(_0x995d('0xe'));var deskjs=require(_0x995d('0xf'));var toCsv=require(_0x995d('0x9'));var querystring=require(_0x995d('0x10'));var Papa=require('papaparse');var Redis=require(_0x995d('0x11'));var authService=require(_0x995d('0x12'));var qs=require(_0x995d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x995d('0x14'));var config=require(_0x995d('0x15'));var licenseUtil=require(_0x995d('0x16'));var db=require(_0x995d('0x17'))['db'];function respondWithStatusCode(_0x2dc477,_0x5134f6){_0x5134f6=_0x5134f6||0xcc;return function(_0x2f9e79){if(_0x2f9e79){return _0x2dc477[_0x995d('0x18')](_0x5134f6);}return _0x2dc477[_0x995d('0x19')](_0x5134f6)[_0x995d('0x1a')]();};}function respondWithResult(_0x543a98,_0x38b03c){_0x38b03c=_0x38b03c||0xc8;return function(_0x4f12ba){if(_0x4f12ba){return _0x543a98[_0x995d('0x19')](_0x38b03c)['json'](_0x4f12ba);}};}function respondWithFilteredResult(_0x54f1d8,_0x7f4e07){return function(_0x53d041){if(_0x53d041){var _0x44230d=typeof _0x7f4e07[_0x995d('0x1b')]===_0x995d('0x1c')&&typeof _0x7f4e07[_0x995d('0x1d')]===_0x995d('0x1c');var _0x294efb=_0x53d041[_0x995d('0x1e')];var _0xa3ca7a=_0x44230d?0x0:_0x7f4e07[_0x995d('0x1b')];var _0x2c3ed4=_0x44230d?_0x53d041[_0x995d('0x1e')]:_0x7f4e07[_0x995d('0x1b')]+_0x7f4e07[_0x995d('0x1d')];var _0x2705cf;if(_0x2c3ed4>=_0x294efb){_0x2c3ed4=_0x294efb;_0x2705cf=0xc8;}else{_0x2705cf=0xce;}_0x54f1d8[_0x995d('0x19')](_0x2705cf);return _0x54f1d8[_0x995d('0x1f')](_0x995d('0x20'),_0xa3ca7a+'-'+_0x2c3ed4+'/'+_0x294efb)['json'](_0x53d041);}return null;};}function patchUpdates(_0x2ec018){return function(_0x14c706){try{jsonpatch['apply'](_0x14c706,_0x2ec018,!![]);}catch(_0x317d76){return BPromise[_0x995d('0x21')](_0x317d76);}return _0x14c706[_0x995d('0x22')]();};}function saveUpdates(_0x542aae,_0x30a59c){return function(_0x511cb3){if(_0x511cb3){return _0x511cb3[_0x995d('0x23')](_0x542aae)[_0x995d('0x24')](function(_0x11f1e3){return _0x11f1e3;});}return null;};}function removeEntity(_0x3754a2,_0x380359){return function(_0x539208){if(_0x539208){return _0x539208[_0x995d('0x25')]()[_0x995d('0x24')](function(){_0x3754a2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x18f4bb,_0x488503){return function(_0x5aa2ba){if(!_0x5aa2ba){_0x18f4bb['sendStatus'](0x194);}return _0x5aa2ba;};}function handleError(_0x19e68d,_0x260ffa){_0x260ffa=_0x260ffa||0x1f4;return function(_0x27e402){logger[_0x995d('0x26')](_0x27e402[_0x995d('0x27')]);if(_0x27e402['name']){delete _0x27e402[_0x995d('0x28')];}_0x19e68d[_0x995d('0x19')](_0x260ffa)[_0x995d('0x29')](_0x27e402);};}exports[_0x995d('0x2a')]=function(_0x534f01,_0x28be92){var _0x373e79={'raw':!![],'where':{'id':_0x534f01[_0x995d('0x2b')]['id']}},_0x5c2e1c={};_0x5c2e1c[_0x995d('0x2c')]=_[_0x995d('0x2d')](db[_0x995d('0x2e')][_0x995d('0x2f')]);_0x5c2e1c[_0x995d('0x30')]=_['keys'](_0x534f01['query']);_0x5c2e1c[_0x995d('0x31')]=_['intersection'](_0x5c2e1c[_0x995d('0x2c')],_0x5c2e1c[_0x995d('0x30')]);_0x373e79[_0x995d('0x32')]=_[_0x995d('0x33')](_0x5c2e1c[_0x995d('0x2c')],qs['fields'](_0x534f01[_0x995d('0x30')][_0x995d('0x34')]));_0x373e79[_0x995d('0x32')]=_0x373e79['attributes'][_0x995d('0x35')]?_0x373e79['attributes']:_0x5c2e1c[_0x995d('0x2c')];if(_0x534f01[_0x995d('0x30')][_0x995d('0x36')]){_0x373e79[_0x995d('0x37')]=[{'all':!![]}];}_0x373e79=_[_0x995d('0x38')]({},_0x373e79,_0x534f01[_0x995d('0x39')]);return db[_0x995d('0x2e')][_0x995d('0x3a')](_0x373e79)[_0x995d('0x24')](handleEntityNotFound(_0x28be92,null))[_0x995d('0x24')](respondWithResult(_0x28be92,null))[_0x995d('0x3b')](handleError(_0x28be92,null));};exports[_0x995d('0x3c')]=function(_0x383ea4,_0x27e238){return db[_0x995d('0x2e')][_0x995d('0x3c')](_0x383ea4[_0x995d('0x3d')],{})[_0x995d('0x24')](respondWithResult(_0x27e238,0xc9))['catch'](handleError(_0x27e238,null));};exports[_0x995d('0x23')]=function(_0x1a5386,_0x2dcd8a){if(_0x1a5386['body']['id']){delete _0x1a5386['body']['id'];}return db['ChatProactiveAction']['find']({'where':{'id':_0x1a5386[_0x995d('0x2b')]['id']}})[_0x995d('0x24')](handleEntityNotFound(_0x2dcd8a,null))[_0x995d('0x24')](saveUpdates(_0x1a5386[_0x995d('0x3d')],null))['then'](respondWithResult(_0x2dcd8a,null))[_0x995d('0x3b')](handleError(_0x2dcd8a,null));};exports[_0x995d('0x25')]=function(_0x5dfb1f,_0x43a34b){return db[_0x995d('0x2e')][_0x995d('0x3a')]({'where':{'id':_0x5dfb1f[_0x995d('0x2b')]['id']}})[_0x995d('0x24')](handleEntityNotFound(_0x43a34b,null))['then'](removeEntity(_0x43a34b,null))[_0x995d('0x3b')](handleError(_0x43a34b,null));};
\ No newline at end of file
+var _0xd5b2=['sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save','update','then','stack','name','send','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','model','fields','attributes','length','options','find','catch','create','body','destroy','params','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','fs-extra','squel','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','../../mysqldb'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xd5b2,0x10e));var _0x2d5b=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0xd5b2[_0x3ff085];return _0x2b68c3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2d5b('0x0'));var zipdir=require(_0x2d5b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2d5b('0x2'));var moment=require(_0x2d5b('0x3'));var BPromise=require(_0x2d5b('0x4'));var Mustache=require(_0x2d5b('0x5'));var util=require(_0x2d5b('0x6'));var path=require(_0x2d5b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2d5b('0x8'));var _=require('lodash');var squel=require(_0x2d5b('0x9'));var crypto=require('crypto');var jsforce=require(_0x2d5b('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x2d5b('0xb'));var querystring=require(_0x2d5b('0xc'));var Papa=require(_0x2d5b('0xd'));var Redis=require(_0x2d5b('0xe'));var authService=require(_0x2d5b('0xf'));var qs=require(_0x2d5b('0x10'));var as=require(_0x2d5b('0x11'));var hardwareService=require(_0x2d5b('0x12'));var logger=require(_0x2d5b('0x13'))(_0x2d5b('0x14'));var utils=require(_0x2d5b('0x15'));var config=require(_0x2d5b('0x16'));var licenseUtil=require(_0x2d5b('0x17'));var db=require(_0x2d5b('0x18'))['db'];function respondWithStatusCode(_0x594fad,_0x4a45b6){_0x4a45b6=_0x4a45b6||0xcc;return function(_0x327b75){if(_0x327b75){return _0x594fad[_0x2d5b('0x19')](_0x4a45b6);}return _0x594fad[_0x2d5b('0x1a')](_0x4a45b6)[_0x2d5b('0x1b')]();};}function respondWithResult(_0x40ec2c,_0x461969){_0x461969=_0x461969||0xc8;return function(_0x48d993){if(_0x48d993){return _0x40ec2c[_0x2d5b('0x1a')](_0x461969)['json'](_0x48d993);}};}function respondWithFilteredResult(_0x1a5624,_0x3ffe86){return function(_0x5e22bf){if(_0x5e22bf){var _0x1c5ee6=typeof _0x3ffe86[_0x2d5b('0x1c')]==='undefined'&&typeof _0x3ffe86[_0x2d5b('0x1d')]===_0x2d5b('0x1e');var _0x4cecb5=_0x5e22bf[_0x2d5b('0x1f')];var _0x2d4715=_0x1c5ee6?0x0:_0x3ffe86[_0x2d5b('0x1c')];var _0x8c32cc=_0x1c5ee6?_0x5e22bf[_0x2d5b('0x1f')]:_0x3ffe86[_0x2d5b('0x1c')]+_0x3ffe86[_0x2d5b('0x1d')];var _0x4f81db;if(_0x8c32cc>=_0x4cecb5){_0x8c32cc=_0x4cecb5;_0x4f81db=0xc8;}else{_0x4f81db=0xce;}_0x1a5624[_0x2d5b('0x1a')](_0x4f81db);return _0x1a5624[_0x2d5b('0x20')](_0x2d5b('0x21'),_0x2d4715+'-'+_0x8c32cc+'/'+_0x4cecb5)[_0x2d5b('0x22')](_0x5e22bf);}return null;};}function patchUpdates(_0x4a5201){return function(_0x13a713){try{jsonpatch['apply'](_0x13a713,_0x4a5201,!![]);}catch(_0xc3bd09){return BPromise[_0x2d5b('0x23')](_0xc3bd09);}return _0x13a713[_0x2d5b('0x24')]();};}function saveUpdates(_0x1f4902,_0x4521b3){return function(_0x52cd78){if(_0x52cd78){return _0x52cd78[_0x2d5b('0x25')](_0x1f4902)[_0x2d5b('0x26')](function(_0x5e93a5){return _0x5e93a5;});}return null;};}function removeEntity(_0x4e8372,_0x30336e){return function(_0x3089ac){if(_0x3089ac){return _0x3089ac['destroy']()['then'](function(){_0x4e8372[_0x2d5b('0x1a')](0xcc)[_0x2d5b('0x1b')]();});}};}function handleEntityNotFound(_0x52363c,_0x1cb328){return function(_0x1ce508){if(!_0x1ce508){_0x52363c[_0x2d5b('0x19')](0x194);}return _0x1ce508;};}function handleError(_0x110207,_0x365d82){_0x365d82=_0x365d82||0x1f4;return function(_0x51e47c){logger['error'](_0x51e47c[_0x2d5b('0x27')]);if(_0x51e47c[_0x2d5b('0x28')]){delete _0x51e47c[_0x2d5b('0x28')];}_0x110207[_0x2d5b('0x1a')](_0x365d82)[_0x2d5b('0x29')](_0x51e47c);};}exports['show']=function(_0x8e8fbc,_0x3a3966){var _0x3e30ae={'raw':!![],'where':{'id':_0x8e8fbc['params']['id']}},_0x2254d0={};_0x2254d0['model']=_[_0x2d5b('0x2a')](db[_0x2d5b('0x2b')][_0x2d5b('0x2c')]);_0x2254d0[_0x2d5b('0x2d')]=_[_0x2d5b('0x2a')](_0x8e8fbc[_0x2d5b('0x2d')]);_0x2254d0[_0x2d5b('0x2e')]=_[_0x2d5b('0x2f')](_0x2254d0['model'],_0x2254d0[_0x2d5b('0x2d')]);_0x3e30ae['attributes']=_[_0x2d5b('0x2f')](_0x2254d0[_0x2d5b('0x30')],qs['fields'](_0x8e8fbc[_0x2d5b('0x2d')][_0x2d5b('0x31')]));_0x3e30ae[_0x2d5b('0x32')]=_0x3e30ae[_0x2d5b('0x32')][_0x2d5b('0x33')]?_0x3e30ae[_0x2d5b('0x32')]:_0x2254d0['model'];if(_0x8e8fbc[_0x2d5b('0x2d')]['includeAll']){_0x3e30ae['include']=[{'all':!![]}];}_0x3e30ae=_['merge']({},_0x3e30ae,_0x8e8fbc[_0x2d5b('0x34')]);return db[_0x2d5b('0x2b')][_0x2d5b('0x35')](_0x3e30ae)[_0x2d5b('0x26')](handleEntityNotFound(_0x3a3966,null))[_0x2d5b('0x26')](respondWithResult(_0x3a3966,null))[_0x2d5b('0x36')](handleError(_0x3a3966,null));};exports[_0x2d5b('0x37')]=function(_0x55ea7b,_0x5f0b1a){return db[_0x2d5b('0x2b')][_0x2d5b('0x37')](_0x55ea7b[_0x2d5b('0x38')],{})['then'](respondWithResult(_0x5f0b1a,0xc9))[_0x2d5b('0x36')](handleError(_0x5f0b1a,null));};exports[_0x2d5b('0x25')]=function(_0x586891,_0x22aeb4){if(_0x586891[_0x2d5b('0x38')]['id']){delete _0x586891[_0x2d5b('0x38')]['id'];}return db[_0x2d5b('0x2b')]['find']({'where':{'id':_0x586891['params']['id']}})[_0x2d5b('0x26')](handleEntityNotFound(_0x22aeb4,null))['then'](saveUpdates(_0x586891[_0x2d5b('0x38')],null))[_0x2d5b('0x26')](respondWithResult(_0x22aeb4,null))[_0x2d5b('0x36')](handleError(_0x22aeb4,null));};exports[_0x2d5b('0x39')]=function(_0x2482a4,_0x292d02){return db[_0x2d5b('0x2b')][_0x2d5b('0x35')]({'where':{'id':_0x2482a4[_0x2d5b('0x3a')]['id']}})['then'](handleEntityNotFound(_0x292d02,null))[_0x2d5b('0x26')](removeEntity(_0x292d02,null))['catch'](handleError(_0x292d02,null));};
\ No newline at end of file
index 17c63a5..7a8db5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dbd=['request-promise','rimraf','./chatProactiveAction.attributes','exports','lodash','util','../../config/logger','api','moment'];(function(_0x5756c6,_0x58290a){var _0x4b5806=function(_0x193246){while(--_0x193246){_0x5756c6['push'](_0x5756c6['shift']());}};_0x4b5806(++_0x58290a);}(_0x5dbd,0x109));var _0xd5db=function(_0x315cda,_0x464236){_0x315cda=_0x315cda-0x0;var _0x41560c=_0x5dbd[_0x315cda];return _0x41560c;};'use strict';var _=require(_0xd5db('0x0'));var util=require(_0xd5db('0x1'));var logger=require(_0xd5db('0x2'))(_0xd5db('0x3'));var moment=require(_0xd5db('0x4'));var BPromise=require('bluebird');var rp=require(_0xd5db('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd5db('0x6'));var config=require('../../config/environment');var attributes=require(_0xd5db('0x7'));module[_0xd5db('0x8')]=function(_0x3a90e5,_0x3c7d3a){return _0x3a90e5['define']('ChatProactiveAction',attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7dd8=['rimraf','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xd96342,_0x495404){var _0x211562=function(_0x551c7b){while(--_0x551c7b){_0xd96342['push'](_0xd96342['shift']());}};_0x211562(++_0x495404);}(_0x7dd8,0x1c0));var _0x87dd=function(_0x1d0499,_0x23e22f){_0x1d0499=_0x1d0499-0x0;var _0x153fb3=_0x7dd8[_0x1d0499];return _0x153fb3;};'use strict';var _=require(_0x87dd('0x0'));var util=require(_0x87dd('0x1'));var logger=require(_0x87dd('0x2'))(_0x87dd('0x3'));var moment=require(_0x87dd('0x4'));var BPromise=require(_0x87dd('0x5'));var rp=require(_0x87dd('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x87dd('0x7'));var config=require(_0x87dd('0x8'));var attributes=require(_0x87dd('0x9'));module[_0x87dd('0xa')]=function(_0x11452d,_0x298914){return _0x11452d[_0x87dd('0xb')](_0x87dd('0xc'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dd42e94..2df68c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc026=['debug','stringify','error','code','message','result','catch','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent'];(function(_0x31abd7,_0x4cd79d){var _0x58c8ae=function(_0x48ceb5){while(--_0x48ceb5){_0x31abd7['push'](_0x31abd7['shift']());}};_0x58c8ae(++_0x4cd79d);}(_0xc026,0x111));var _0x6c02=function(_0x20a330,_0x4b6f2b){_0x20a330=_0x20a330-0x0;var _0xf218e1=_0xc026[_0x20a330];return _0xf218e1;};'use strict';var _=require('lodash');var util=require(_0x6c02('0x0'));var moment=require(_0x6c02('0x1'));var BPromise=require('bluebird');var rs=require(_0x6c02('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6c02('0x3'))['db'];var utils=require(_0x6c02('0x4'));var logger=require(_0x6c02('0x5'))(_0x6c02('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x6c02('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xc39db0,_0x42976c,_0x10c8de){return new BPromise(function(_0x28ab72,_0x1458c3){return client[_0x6c02('0x8')](_0xc39db0,_0x10c8de)['then'](function(_0x4198f3){logger[_0x6c02('0x9')](_0x6c02('0xa'),_0x42976c,_0x6c02('0xb'));logger[_0x6c02('0xc')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x42976c,_0x6c02('0xb'),JSON[_0x6c02('0xd')](_0x4198f3));if(_0x4198f3['error']){if(_0x4198f3[_0x6c02('0xe')][_0x6c02('0xf')]===0x1f4){logger[_0x6c02('0xe')](_0x6c02('0xa'),_0x42976c,_0x4198f3[_0x6c02('0xe')]['message']);return _0x1458c3(_0x4198f3['error']['message']);}logger[_0x6c02('0xe')]('ChatProactiveAction,\x20%s,\x20%s',_0x42976c,_0x4198f3[_0x6c02('0xe')][_0x6c02('0x10')]);return _0x28ab72(_0x4198f3[_0x6c02('0xe')][_0x6c02('0x10')]);}else{logger[_0x6c02('0x9')]('ChatProactiveAction,\x20%s,\x20%s',_0x42976c,_0x6c02('0xb'));_0x28ab72(_0x4198f3[_0x6c02('0x11')][_0x6c02('0x10')]);}})[_0x6c02('0x12')](function(_0x443192){logger[_0x6c02('0xe')](_0x6c02('0xa'),_0x42976c,_0x443192);_0x1458c3(_0x443192);});});}
\ No newline at end of file
+var _0xd1e2=['stringify','error','ChatProactiveAction,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s'];(function(_0x36038c,_0x6af7a2){var _0x5168b3=function(_0x4aadc3){while(--_0x4aadc3){_0x36038c['push'](_0x36038c['shift']());}};_0x5168b3(++_0x6af7a2);}(_0xd1e2,0x74));var _0x2d1e=function(_0x44c0c2,_0x29d866){_0x44c0c2=_0x44c0c2-0x0;var _0x5b2eb8=_0xd1e2[_0x44c0c2];return _0x5b2eb8;};'use strict';var _=require(_0x2d1e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2d1e('0x1'));var rs=require(_0x2d1e('0x2'));var fs=require('fs');var Redis=require(_0x2d1e('0x3'));var db=require(_0x2d1e('0x4'))['db'];var utils=require(_0x2d1e('0x5'));var logger=require(_0x2d1e('0x6'))(_0x2d1e('0x7'));var config=require('../../config/environment');var jayson=require(_0x2d1e('0x8'));var client=jayson[_0x2d1e('0x9')][_0x2d1e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x45f531,_0x54d929,_0x523d33){return new BPromise(function(_0x4bdc64,_0x227835){return client[_0x2d1e('0xb')](_0x45f531,_0x523d33)['then'](function(_0x16cc20){logger[_0x2d1e('0xc')]('ChatProactiveAction,\x20%s,\x20%s',_0x54d929,_0x2d1e('0xd'));logger[_0x2d1e('0xe')](_0x2d1e('0xf'),_0x54d929,'request\x20sent',JSON[_0x2d1e('0x10')](_0x16cc20));if(_0x16cc20[_0x2d1e('0x11')]){if(_0x16cc20['error']['code']===0x1f4){logger['error'](_0x2d1e('0x12'),_0x54d929,_0x16cc20[_0x2d1e('0x11')][_0x2d1e('0x13')]);return _0x227835(_0x16cc20['error'][_0x2d1e('0x13')]);}logger[_0x2d1e('0x11')](_0x2d1e('0x12'),_0x54d929,_0x16cc20[_0x2d1e('0x11')][_0x2d1e('0x13')]);return _0x4bdc64(_0x16cc20[_0x2d1e('0x11')]['message']);}else{logger[_0x2d1e('0xc')](_0x2d1e('0x12'),_0x54d929,_0x2d1e('0xd'));_0x4bdc64(_0x16cc20[_0x2d1e('0x14')][_0x2d1e('0x13')]);}})[_0x2d1e('0x15')](function(_0x5069cd){logger['error'](_0x2d1e('0x12'),_0x54d929,_0x5069cd);_0x227835(_0x5069cd);});});}
\ No newline at end of file
index 3a2d34b..242ff8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c09=['delete','/:id','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','show','post','isAuthenticated','create','put'];(function(_0x3f787e,_0x951303){var _0x26242d=function(_0x58622a){while(--_0x58622a){_0x3f787e['push'](_0x3f787e['shift']());}};_0x26242d(++_0x951303);}(_0x7c09,0x102));var _0x97c0=function(_0x50280c,_0x34e3ea){_0x50280c=_0x50280c-0x0;var _0x45dff7=_0x7c09[_0x50280c];return _0x45dff7;};'use strict';var multer=require('multer');var util=require(_0x97c0('0x0'));var path=require(_0x97c0('0x1'));var timeout=require('connect-timeout');var express=require(_0x97c0('0x2'));var router=express[_0x97c0('0x3')]();var fs_extra=require(_0x97c0('0x4'));var auth=require(_0x97c0('0x5'));var interaction=require(_0x97c0('0x6'));var config=require(_0x97c0('0x7'));var controller=require(_0x97c0('0x8'));router['get']('/:id',auth['isAuthenticated'](),controller[_0x97c0('0x9')]);router[_0x97c0('0xa')]('/',auth[_0x97c0('0xb')](),controller[_0x97c0('0xc')]);router[_0x97c0('0xd')]('/:id',auth[_0x97c0('0xb')](),controller['update']);router[_0x97c0('0xe')](_0x97c0('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x97c0('0x10')]=router;
\ No newline at end of file
+var _0x8ef6=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','show','post','isAuthenticated','put','/:id','update','delete'];(function(_0x2308db,_0x2e95c9){var _0x38d5de=function(_0x553804){while(--_0x553804){_0x2308db['push'](_0x2308db['shift']());}};_0x38d5de(++_0x2e95c9);}(_0x8ef6,0xf2));var _0x68ef=function(_0x5d5b7b,_0x3f5342){_0x5d5b7b=_0x5d5b7b-0x0;var _0x5c0b4e=_0x8ef6[_0x5d5b7b];return _0x5c0b4e;};'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')]('/:id',auth['isAuthenticated'](),controller[_0x68ef('0xb')]);router[_0x68ef('0xc')]('/',auth[_0x68ef('0xd')](),controller['create']);router[_0x68ef('0xe')](_0x68ef('0xf'),auth[_0x68ef('0xd')](),controller[_0x68ef('0x10')]);router[_0x68ef('0x11')](_0x68ef('0xf'),auth[_0x68ef('0xd')](),controller[_0x68ef('0x12')]);module[_0x68ef('0x13')]=router;
\ No newline at end of file
index b29fccb..7959095 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda7e=['name','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING'];(function(_0x2318b4,_0xa63f2a){var _0x1aeee6=function(_0x4a0284){while(--_0x4a0284){_0x2318b4['push'](_0x2318b4['shift']());}};_0x1aeee6(++_0xa63f2a);}(_0xda7e,0x7d));var _0xeda7=function(_0x146a85,_0x529b52){_0x146a85=_0x146a85-0x0;var _0x1b59bf=_0xda7e[_0x146a85];return _0x1b59bf;};'use strict';var Sequelize=require(_0xeda7('0x0'));module[_0xeda7('0x1')]={'name':{'type':Sequelize[_0xeda7('0x2')],'unique':_0xeda7('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xeda7('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xeda7('0x4')](_0xeda7('0x5'),_0xeda7('0x6'),_0xeda7('0x7'))}};
\ No newline at end of file
+var _0x2d73=['sequelize','exports','STRING','name','INTEGER','rrmemory','roundrobin'];(function(_0x492126,_0x46fec9){var _0x1a71db=function(_0x1376d1){while(--_0x1376d1){_0x492126['push'](_0x492126['shift']());}};_0x1a71db(++_0x46fec9);}(_0x2d73,0x1c0));var _0x32d7=function(_0x1a2635,_0x2a33a8){_0x1a2635=_0x1a2635-0x0;var _0x2ccd92=_0x2d73[_0x1a2635];return _0x2ccd92;};'use strict';var Sequelize=require(_0x32d7('0x0'));module[_0x32d7('0x1')]={'name':{'type':Sequelize[_0x32d7('0x2')],'unique':_0x32d7('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x32d7('0x2')]},'timeout':{'type':Sequelize[_0x32d7('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x32d7('0x5'),'beepall',_0x32d7('0x6'))}};
\ No newline at end of file
index 4870e5b..8c4bcf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03aa=['sequelize','QueryTypes','SELECT','every','TeamId','includes','all','union','value','removeTeams','isEmpty','removeAgents','emit','userChatQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','end','status','json','undefined','limit','count','offset','set','apply','update','destroy','get','UserProfileResource','name','index','map','ChatQueue','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','length','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','UserChatQueue','rawAttributes','keys','ChatQueueId','User','findAndCountAll','agent','chatPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','findOne','Team','filter','addTeams','ids','Agents','online','interface','flatMap','transaction','each','forEach','userChatQueue:save','select','field','tq.TeamId','from','team_has_chat_queues','join','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString'];(function(_0x41815e,_0x2b538d){var _0x2de5d0=function(_0x36175f){while(--_0x36175f){_0x41815e['push'](_0x41815e['shift']());}};_0x2de5d0(++_0x2b538d);}(_0x03aa,0xab));var _0xa03a=function(_0x3d2fc9,_0x5ed7ed){_0x3d2fc9=_0x3d2fc9-0x0;var _0x10016f=_0x03aa[_0x3d2fc9];return _0x10016f;};'use strict';var emlformat=require(_0xa03a('0x0'));var rimraf=require(_0xa03a('0x1'));var zipdir=require(_0xa03a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa03a('0x3'));var BPromise=require(_0xa03a('0x4'));var Mustache=require(_0xa03a('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa03a('0x6'));var fs=require('fs');var fs_extra=require(_0xa03a('0x7'));var _=require(_0xa03a('0x8'));var squel=require('squel');var crypto=require(_0xa03a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xa03a('0xa'));var toCsv=require(_0xa03a('0xb'));var querystring=require(_0xa03a('0xc'));var Papa=require(_0xa03a('0xd'));var Redis=require(_0xa03a('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xa03a('0xf'));var as=require(_0xa03a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa03a('0x11'))('api');var utils=require(_0xa03a('0x12'));var config=require(_0xa03a('0x13'));var licenseUtil=require(_0xa03a('0x14'));var db=require(_0xa03a('0x15'))['db'];config[_0xa03a('0x16')]=_[_0xa03a('0x17')](config['redis'],{'host':_0xa03a('0x18'),'port':0x18eb});var socket=require(_0xa03a('0x19'))(new Redis(config[_0xa03a('0x16')]));require(_0xa03a('0x1a'))[_0xa03a('0x1b')](socket);var jayson=require(_0xa03a('0x1c'));var client=jayson[_0xa03a('0x1d')][_0xa03a('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x21505c,_0x3cbe85,_0x1e6b84,_0x3d5990){return new BPromise(function(_0x31357c,_0x21dfff){var _0x5b7e54=_0x3d5990||client;return _0x5b7e54[_0xa03a('0x1f')](_0x21505c,_0x1e6b84)[_0xa03a('0x20')](function(_0x1be9d0){logger['info'](_0xa03a('0x21'),_0x3cbe85,_0xa03a('0x22'));logger[_0xa03a('0x23')](_0xa03a('0x24'),_0x3cbe85,'request\x20sent',JSON[_0xa03a('0x25')](_0x1be9d0));if(_0x1be9d0['error']){if(_0x1be9d0[_0xa03a('0x26')][_0xa03a('0x27')]===0x1f4){logger['error'](_0xa03a('0x21'),_0x3cbe85,_0x1be9d0[_0xa03a('0x26')][_0xa03a('0x28')]);return _0x21dfff(_0x1be9d0[_0xa03a('0x26')][_0xa03a('0x28')]);}logger['error'](_0xa03a('0x21'),_0x3cbe85,_0x1be9d0[_0xa03a('0x26')][_0xa03a('0x28')]);return _0x31357c(_0x1be9d0[_0xa03a('0x26')][_0xa03a('0x28')]);}else{logger[_0xa03a('0x29')](_0xa03a('0x21'),_0x3cbe85,'request\x20sent');_0x31357c(_0x1be9d0[_0xa03a('0x2a')][_0xa03a('0x28')]);}})[_0xa03a('0x2b')](function(_0x50eff9){logger[_0xa03a('0x26')](_0xa03a('0x21'),_0x3cbe85,_0x50eff9);_0x21dfff(_0x50eff9);});});}function respondWithStatusCode(_0x57b4a7,_0x130031){_0x130031=_0x130031||0xcc;return function(_0xb6dfd5){if(_0xb6dfd5){return _0x57b4a7[_0xa03a('0x2c')](_0x130031);}return _0x57b4a7['status'](_0x130031)[_0xa03a('0x2d')]();};}function respondWithResult(_0x325003,_0x1c8b65){_0x1c8b65=_0x1c8b65||0xc8;return function(_0x3765a9){if(_0x3765a9){return _0x325003[_0xa03a('0x2e')](_0x1c8b65)[_0xa03a('0x2f')](_0x3765a9);}};}function respondWithFilteredResult(_0x451d06,_0x4ee8a8){return function(_0x27c410){if(_0x27c410){var _0x22e297=typeof _0x4ee8a8['offset']===_0xa03a('0x30')&&typeof _0x4ee8a8[_0xa03a('0x31')]===_0xa03a('0x30');var _0x47ab70=_0x27c410[_0xa03a('0x32')];var _0x392e03=_0x22e297?0x0:_0x4ee8a8['offset'];var _0x1305d5=_0x22e297?_0x27c410[_0xa03a('0x32')]:_0x4ee8a8[_0xa03a('0x33')]+_0x4ee8a8[_0xa03a('0x31')];var _0x5b8667;if(_0x1305d5>=_0x47ab70){_0x1305d5=_0x47ab70;_0x5b8667=0xc8;}else{_0x5b8667=0xce;}_0x451d06['status'](_0x5b8667);return _0x451d06[_0xa03a('0x34')]('Content-Range',_0x392e03+'-'+_0x1305d5+'/'+_0x47ab70)[_0xa03a('0x2f')](_0x27c410);}return null;};}function patchUpdates(_0xe0a252){return function(_0x3fdbd3){try{jsonpatch[_0xa03a('0x35')](_0x3fdbd3,_0xe0a252,!![]);}catch(_0x1fa526){return BPromise['reject'](_0x1fa526);}return _0x3fdbd3['save']();};}function saveUpdates(_0x16f9f6,_0x382e1){return function(_0x1a5622){if(_0x1a5622){return _0x1a5622[_0xa03a('0x36')](_0x16f9f6)[_0xa03a('0x20')](function(_0x48ee3b){return _0x48ee3b;});}return null;};}function removeEntity(_0x49e9ba,_0x332579){return function(_0x26fc1e){if(_0x26fc1e){return _0x26fc1e[_0xa03a('0x37')]()[_0xa03a('0x20')](function(){var _0x109d1b=_0x26fc1e[_0xa03a('0x38')]({'plain':!![]});var _0xf5de64='ChatQueues';return db[_0xa03a('0x39')]['destroy']({'where':{'type':_0xf5de64,'resourceId':_0x109d1b['id']}})[_0xa03a('0x20')](function(){return _0x26fc1e;});})['then'](function(){_0x49e9ba[_0xa03a('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e7c99,_0x5b046d){return function(_0x408d74){if(!_0x408d74){_0x5e7c99['sendStatus'](0x194);}return _0x408d74;};}function handleError(_0x11883c,_0x2f2450){_0x2f2450=_0x2f2450||0x1f4;return function(_0x3f36cd){logger[_0xa03a('0x26')](_0x3f36cd['stack']);if(_0x3f36cd['name']){delete _0x3f36cd[_0xa03a('0x3a')];}_0x11883c[_0xa03a('0x2e')](_0x2f2450)['send'](_0x3f36cd);};}exports[_0xa03a('0x3b')]=function(_0x4dfd4b,_0x1236b0){var _0x576870={},_0xe9cb2f={},_0x2d15cb={'count':0x0,'rows':[]};var _0x310fb4=_[_0xa03a('0x3c')](db[_0xa03a('0x3d')]['rawAttributes'],function(_0x5a0bda){return{'name':_0x5a0bda[_0xa03a('0x3e')],'type':_0x5a0bda[_0xa03a('0x3f')][_0xa03a('0x40')]};});_0xe9cb2f[_0xa03a('0x41')]=_[_0xa03a('0x3c')](_0x310fb4,_0xa03a('0x3a'));_0xe9cb2f[_0xa03a('0x42')]=_['keys'](_0x4dfd4b[_0xa03a('0x42')]);_0xe9cb2f[_0xa03a('0x43')]=_[_0xa03a('0x44')](_0xe9cb2f[_0xa03a('0x41')],_0xe9cb2f[_0xa03a('0x42')]);_0x576870[_0xa03a('0x45')]=_[_0xa03a('0x44')](_0xe9cb2f[_0xa03a('0x41')],qs[_0xa03a('0x46')](_0x4dfd4b[_0xa03a('0x42')][_0xa03a('0x46')]));_0x576870[_0xa03a('0x45')]=_0x576870[_0xa03a('0x45')]['length']?_0x576870[_0xa03a('0x45')]:_0xe9cb2f[_0xa03a('0x41')];if(!_0x4dfd4b[_0xa03a('0x42')][_0xa03a('0x47')](_0xa03a('0x48'))){_0x576870[_0xa03a('0x31')]=qs['limit'](_0x4dfd4b['query'][_0xa03a('0x31')]);_0x576870[_0xa03a('0x33')]=qs['offset'](_0x4dfd4b[_0xa03a('0x42')]['offset']);}_0x576870[_0xa03a('0x49')]=qs[_0xa03a('0x4a')](_0x4dfd4b[_0xa03a('0x42')][_0xa03a('0x4a')]);_0x576870[_0xa03a('0x4b')]=qs[_0xa03a('0x43')](_[_0xa03a('0x4c')](_0x4dfd4b[_0xa03a('0x42')],_0xe9cb2f[_0xa03a('0x43')]),_0x310fb4);if(_0x4dfd4b[_0xa03a('0x42')]['filter']){_0x576870['where']=_['merge'](_0x576870[_0xa03a('0x4b')],{'$or':_['map'](_0x310fb4,function(_0x3cfb7c){if(_0x3cfb7c['type']!==_0xa03a('0x4d')){var _0x50ac1e={};_0x50ac1e[_0x3cfb7c[_0xa03a('0x3a')]]={'$like':'%'+_0x4dfd4b[_0xa03a('0x42')]['filter']+'%'};return _0x50ac1e;}})});}_0x576870=_[_0xa03a('0x4e')]({},_0x576870,_0x4dfd4b[_0xa03a('0x4f')]);var _0x21695b={'where':_0x576870[_0xa03a('0x4b')]};return db[_0xa03a('0x3d')][_0xa03a('0x32')](_0x21695b)['then'](function(_0x9edda){_0x2d15cb[_0xa03a('0x32')]=_0x9edda;if(_0x4dfd4b['query'][_0xa03a('0x50')]){_0x576870[_0xa03a('0x51')]=[{'all':!![]}];}return db['ChatQueue'][_0xa03a('0x52')](_0x576870);})[_0xa03a('0x20')](function(_0x33b1fb){_0x2d15cb[_0xa03a('0x53')]=_0x33b1fb;return _0x2d15cb;})[_0xa03a('0x20')](respondWithFilteredResult(_0x1236b0,_0x576870))[_0xa03a('0x2b')](handleError(_0x1236b0,null));};exports[_0xa03a('0x54')]=function(_0x5c08da,_0x1fda4e){var _0x41f86a={'raw':!![],'where':{'id':_0x5c08da['params']['id']}},_0x2b352f={};_0x2b352f['model']=_['keys'](db[_0xa03a('0x3d')]['rawAttributes']);_0x2b352f[_0xa03a('0x42')]=_['keys'](_0x5c08da[_0xa03a('0x42')]);_0x2b352f[_0xa03a('0x43')]=_[_0xa03a('0x44')](_0x2b352f[_0xa03a('0x41')],_0x2b352f[_0xa03a('0x42')]);_0x41f86a[_0xa03a('0x45')]=_[_0xa03a('0x44')](_0x2b352f[_0xa03a('0x41')],qs[_0xa03a('0x46')](_0x5c08da[_0xa03a('0x42')][_0xa03a('0x46')]));_0x41f86a[_0xa03a('0x45')]=_0x41f86a['attributes'][_0xa03a('0x55')]?_0x41f86a[_0xa03a('0x45')]:_0x2b352f['model'];if(_0x5c08da[_0xa03a('0x42')][_0xa03a('0x50')]){_0x41f86a[_0xa03a('0x51')]=[{'all':!![]}];}_0x41f86a=_[_0xa03a('0x4e')]({},_0x41f86a,_0x5c08da[_0xa03a('0x4f')]);return db[_0xa03a('0x3d')]['find'](_0x41f86a)[_0xa03a('0x20')](handleEntityNotFound(_0x1fda4e,null))[_0xa03a('0x20')](respondWithResult(_0x1fda4e,null))[_0xa03a('0x2b')](handleError(_0x1fda4e,null));};exports['create']=function(_0x383bcc,_0x19a091){return db[_0xa03a('0x3d')][_0xa03a('0x56')](_0x383bcc[_0xa03a('0x57')],{})['then'](function(_0x2cf7cf){var _0x444b6c=_0x383bcc['user']['get']({'plain':!![]});if(!_0x444b6c)throw new Error(_0xa03a('0x58'));if(_0x444b6c[_0xa03a('0x59')]===_0xa03a('0x5a')){var _0x5b13ee=_0x2cf7cf[_0xa03a('0x38')]({'plain':!![]});var _0x5af5f8='ChatQueues';return db[_0xa03a('0x5b')][_0xa03a('0x5c')]({'where':{'name':_0x5af5f8,'userProfileId':_0x444b6c['userProfileId']},'raw':!![]})[_0xa03a('0x20')](function(_0x7b1360){if(_0x7b1360&&_0x7b1360['autoAssociation']===0x0){return db[_0xa03a('0x39')][_0xa03a('0x56')]({'name':_0x5b13ee[_0xa03a('0x3a')],'resourceId':_0x5b13ee['id'],'type':_0x7b1360[_0xa03a('0x3a')],'sectionId':_0x7b1360['id']},{})[_0xa03a('0x20')](function(){return _0x2cf7cf;});}else{return _0x2cf7cf;}})['catch'](function(_0x4cbfbb){logger['error'](_0xa03a('0x5d'),_0x4cbfbb);throw _0x4cbfbb;});}return _0x2cf7cf;})['then'](respondWithResult(_0x19a091,0xc9))[_0xa03a('0x2b')](handleError(_0x19a091,null));};exports[_0xa03a('0x36')]=function(_0x26e9cf,_0x5251e0){if(_0x26e9cf[_0xa03a('0x57')]['id']){delete _0x26e9cf[_0xa03a('0x57')]['id'];}return db['ChatQueue'][_0xa03a('0x5c')]({'where':{'id':_0x26e9cf[_0xa03a('0x5e')]['id']}})[_0xa03a('0x20')](handleEntityNotFound(_0x5251e0,null))[_0xa03a('0x20')](saveUpdates(_0x26e9cf[_0xa03a('0x57')],null))['then'](respondWithResult(_0x5251e0,null))['catch'](handleError(_0x5251e0,null));};exports[_0xa03a('0x37')]=function(_0x569d70,_0x34a56b){return db[_0xa03a('0x3d')]['find']({'where':{'id':_0x569d70[_0xa03a('0x5e')]['id']}})[_0xa03a('0x20')](handleEntityNotFound(_0x34a56b,null))[_0xa03a('0x20')](removeEntity(_0x34a56b,null))[_0xa03a('0x2b')](handleError(_0x34a56b,null));};exports[_0xa03a('0x5f')]=function(_0xc1d0c3,_0x247458){return db[_0xa03a('0x3d')][_0xa03a('0x5f')]()['then'](respondWithResult(_0x247458,null))['catch'](handleError(_0x247458,null));};exports[_0xa03a('0x60')]=function(_0x30e227,_0x2fdf0b,_0x92d04e){var _0x5a4480={'raw':!![],'where':{}},_0x4532e0={},_0x57f3b0;return db[_0xa03a('0x3d')]['findOne']({'where':{'id':_0x30e227[_0xa03a('0x5e')]['id']}})[_0xa03a('0x20')](handleEntityNotFound(_0x2fdf0b,null))[_0xa03a('0x20')](function(_0x828977){if(_0x828977){_0x57f3b0=_0x828977['get']({'plain':!![]});_0x4532e0[_0xa03a('0x41')]=_['keys'](db[_0xa03a('0x61')][_0xa03a('0x62')]);_0x4532e0[_0xa03a('0x42')]=_[_0xa03a('0x63')](_0x30e227[_0xa03a('0x42')]);_0x4532e0[_0xa03a('0x43')]=_[_0xa03a('0x44')](_0x4532e0[_0xa03a('0x41')],_0x4532e0[_0xa03a('0x42')]);_0x5a4480[_0xa03a('0x45')]=_['intersection'](_0x4532e0['model'],qs[_0xa03a('0x46')](_0x30e227[_0xa03a('0x42')][_0xa03a('0x46')]));_0x5a4480[_0xa03a('0x45')]=_0x5a4480[_0xa03a('0x45')][_0xa03a('0x55')]?_0x5a4480['attributes']:_0x4532e0[_0xa03a('0x41')];if(!_0x30e227[_0xa03a('0x42')][_0xa03a('0x47')](_0xa03a('0x48'))){_0x5a4480[_0xa03a('0x31')]=qs[_0xa03a('0x31')](_0x30e227[_0xa03a('0x42')]['limit']);_0x5a4480['offset']=qs[_0xa03a('0x33')](_0x30e227['query']['offset']);}_0x5a4480[_0xa03a('0x49')]=qs[_0xa03a('0x4a')](_0x30e227[_0xa03a('0x42')][_0xa03a('0x4a')]);_0x5a4480[_0xa03a('0x4b')]=qs['filters'](_[_0xa03a('0x4c')](_0x30e227['query'],_0x4532e0[_0xa03a('0x43')]));_0x5a4480[_0xa03a('0x4b')][_0xa03a('0x64')]=_0x828977['id'];if(_0x30e227[_0xa03a('0x42')]['filter']){_0x5a4480['where']=_[_0xa03a('0x4e')](_0x5a4480[_0xa03a('0x4b')],{'$or':_[_0xa03a('0x3c')](_0x5a4480['attributes'],function(_0x5678c3){var _0x2c4ce2={};_0x2c4ce2[_0x5678c3]={'$like':'%'+_0x30e227[_0xa03a('0x42')]['filter']+'%'};return _0x2c4ce2;})});}_0x5a4480=_[_0xa03a('0x4e')]({},_0x5a4480,_0x30e227[_0xa03a('0x4f')]);return db[_0xa03a('0x61')][_0xa03a('0x52')](_0x5a4480);}})[_0xa03a('0x20')](function(_0x36c860){if(_0x36c860){return db[_0xa03a('0x65')][_0xa03a('0x66')]({'where':{'id':_[_0xa03a('0x3c')](_0x36c860,'UserId'),'role':_0xa03a('0x67')},'attributes':['id',_0xa03a('0x3a'),_0xa03a('0x68'),'updatedAt',_0xa03a('0x69')]});}})[_0xa03a('0x20')](function(_0x3d6a7a){if(_0x3d6a7a){return{'count':_0x3d6a7a[_0xa03a('0x32')],'rows':_['map'](_0x3d6a7a[_0xa03a('0x53')],function(_0x494e4d){return{'membername':_0x494e4d['name'],'UserId':_0x494e4d['id'],'queue_name':_0x57f3b0[_0xa03a('0x3a')],'ChatQueueId':_0x57f3b0['id'],'interface':util[_0xa03a('0x6a')](_0xa03a('0x6b'),_0xa03a('0x6c'),_0x494e4d[_0xa03a('0x3a')]),'penalty':0x0,'paused':_0x494e4d[_0xa03a('0x68')],'createdAt':_0x494e4d[_0xa03a('0x69')],'updatedAt':_0x494e4d[_0xa03a('0x6d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xa03a('0x20')](respondWithFilteredResult(_0x2fdf0b,_0x5a4480))[_0xa03a('0x2b')](handleError(_0x2fdf0b,null));};exports[_0xa03a('0x6e')]=function(_0x662751,_0x50f8cd,_0x1bc801){var _0x400ce5={};var _0x1fbca7={};var _0x400e39;var _0x4ad4fd;return db['ChatQueue'][_0xa03a('0x6f')]({'where':{'id':_0x662751[_0xa03a('0x5e')]['id']}})[_0xa03a('0x20')](handleEntityNotFound(_0x50f8cd,null))[_0xa03a('0x20')](function(_0x33aa18){if(_0x33aa18){_0x400e39=_0x33aa18;_0x1fbca7[_0xa03a('0x41')]=_[_0xa03a('0x63')](db[_0xa03a('0x70')][_0xa03a('0x62')]);_0x1fbca7[_0xa03a('0x42')]=_[_0xa03a('0x63')](_0x662751[_0xa03a('0x42')]);_0x1fbca7['filters']=_['intersection'](_0x1fbca7[_0xa03a('0x41')],_0x1fbca7[_0xa03a('0x42')]);_0x400ce5['attributes']=_[_0xa03a('0x44')](_0x1fbca7['model'],qs[_0xa03a('0x46')](_0x662751[_0xa03a('0x42')][_0xa03a('0x46')]));_0x400ce5[_0xa03a('0x45')]=_0x400ce5['attributes'][_0xa03a('0x55')]?_0x400ce5[_0xa03a('0x45')]:_0x1fbca7[_0xa03a('0x41')];_0x400ce5[_0xa03a('0x49')]=qs[_0xa03a('0x4a')](_0x662751[_0xa03a('0x42')][_0xa03a('0x4a')]);_0x400ce5[_0xa03a('0x4b')]=qs[_0xa03a('0x43')](_[_0xa03a('0x4c')](_0x662751['query'],_0x1fbca7[_0xa03a('0x43')]));if(_0x662751[_0xa03a('0x42')][_0xa03a('0x71')]){_0x400ce5[_0xa03a('0x4b')]=_[_0xa03a('0x4e')](_0x400ce5[_0xa03a('0x4b')],{'$or':_['map'](_0x400ce5[_0xa03a('0x45')],function(_0x412608){var _0x10f7ea={};_0x10f7ea[_0x412608]={'$like':'%'+_0x662751[_0xa03a('0x42')][_0xa03a('0x71')]+'%'};return _0x10f7ea;})});}_0x400ce5=_[_0xa03a('0x4e')]({},_0x400ce5,_0x662751['options']);return _0x400e39[_0xa03a('0x6e')](_0x400ce5);}})['then'](function(_0x8a0281){if(_0x8a0281){_0x4ad4fd=_0x8a0281[_0xa03a('0x55')];if(!_0x662751[_0xa03a('0x42')][_0xa03a('0x47')](_0xa03a('0x48'))){_0x400ce5[_0xa03a('0x31')]=qs[_0xa03a('0x31')](_0x662751[_0xa03a('0x42')][_0xa03a('0x31')]);_0x400ce5[_0xa03a('0x33')]=qs[_0xa03a('0x33')](_0x662751['query'][_0xa03a('0x33')]);}return _0x400e39[_0xa03a('0x6e')](_0x400ce5);}})[_0xa03a('0x20')](function(_0x32fe35){if(_0x32fe35){return _0x32fe35?{'count':_0x4ad4fd,'rows':_0x32fe35}:null;}})[_0xa03a('0x20')](respondWithResult(_0x50f8cd,null))[_0xa03a('0x2b')](handleError(_0x50f8cd,null));};exports[_0xa03a('0x72')]=function(_0x44cc97,_0x3dcce1,_0x47486f){var _0xb516d7=_0x44cc97[_0xa03a('0x57')][_0xa03a('0x73')];return db[_0xa03a('0x70')][_0xa03a('0x52')]({'where':{'id':_0xb516d7},'attributes':['id'],'include':[{'model':db[_0xa03a('0x65')],'as':_0xa03a('0x74'),'attributes':['id',_0xa03a('0x3a'),_0xa03a('0x75'),'voicePause',_0xa03a('0x76')],'raw':!![]}]})[_0xa03a('0x20')](function(_0x2cad90){if(_0x2cad90){var _0x1bb398=_[_0xa03a('0x77')](_0x2cad90,function(_0x41eb0f){var _0x4be040=_0x41eb0f['get']({'plain':!![]});return _0x4be040[_0xa03a('0x74')];});return db['ChatQueue']['find']({'where':{'id':_0x44cc97[_0xa03a('0x5e')]['id']}})[_0xa03a('0x20')](function(_0x316a81){return db['sequelize'][_0xa03a('0x78')](function(_0x479236){return _0x316a81[_0xa03a('0x72')](_0xb516d7,{'transaction':_0x479236})['then'](function(){return BPromise[_0xa03a('0x79')](_0x1bb398,function(_0x38d981){return db[_0xa03a('0x61')]['findOrCreate']({'where':{'UserId':_0x38d981['id'],'ChatQueueId':_0x44cc97[_0xa03a('0x5e')]['id']},'transaction':_0x479236});});})[_0xa03a('0x20')](function(){_0x1bb398[_0xa03a('0x7a')](function(_0x58b45e){socket['emit'](_0xa03a('0x7b'),{'UserId':_0x58b45e['id'],'ChatQueueId':_0x316a81['id']});});});});});}})['then'](respondWithStatusCode(_0x3dcce1,null))['catch'](handleError(_0x3dcce1,null));};exports['removeTeams']=function(_0xf1840a,_0x3a077d,_0x3a139b){return db[_0xa03a('0x70')][_0xa03a('0x52')]({'where':{'id':_0xf1840a[_0xa03a('0x42')][_0xa03a('0x73')]},'attributes':['id'],'include':[{'model':db[_0xa03a('0x65')],'as':_0xa03a('0x74'),'attributes':['id'],'raw':!![]}]})[_0xa03a('0x20')](handleEntityNotFound(_0x3a077d,null))[_0xa03a('0x20')](function(_0x3a900b){var _0x3ff615=_[_0xa03a('0x3c')](_0x3a900b,'id');var _0x2755de=[];var _0x5ef17f=[];var _0x57b478=squel[_0xa03a('0x7c')]();_0x57b478[_0xa03a('0x7d')](_0xa03a('0x7e'))[_0xa03a('0x7f')](_0xa03a('0x80'),'tq')[_0xa03a('0x81')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0xa03a('0x4b')](_0xa03a('0x82'),_0xf1840a[_0xa03a('0x5e')]['id']);for(var _0x49e4f5=0x0;_0x49e4f5<_0x3a900b['length'];_0x49e4f5+=0x1){let _0xe64d15=_0x3a900b[_0x49e4f5];for(var _0x4608fe=0x0;_0x4608fe<_0xe64d15[_0xa03a('0x74')][_0xa03a('0x55')];_0x4608fe+=0x1){let _0x3b97d2=_0xe64d15[_0xa03a('0x74')][_0x4608fe];var _0x1ec386=_0x57b478[_0xa03a('0x83')]();_0x1ec386[_0xa03a('0x4b')](_0xa03a('0x84'),_0x3b97d2['id']);_0x5ef17f[_0xa03a('0x85')](db['sequelize'][_0xa03a('0x42')](_0x1ec386[_0xa03a('0x86')](),{'type':db[_0xa03a('0x87')][_0xa03a('0x88')][_0xa03a('0x89')]})[_0xa03a('0x20')](function(_0x5d018a){if(_0x5d018a[_0xa03a('0x55')]===0x1){return _0x3b97d2['id'];}else{var _0x51723e=_[_0xa03a('0x8a')](_[_0xa03a('0x3c')](_0x5d018a,_0xa03a('0x8b')),function(_0x3d12ad){return _[_0xa03a('0x8c')](_0x3ff615,_0x3d12ad);});if(_0x51723e){return _0x3b97d2['id'];}}}));}}return BPromise[_0xa03a('0x8d')](_0x5ef17f)['then'](function(_0x2a63a3){_0x2755de=_(_0x2755de)[_0xa03a('0x8e')](_0x2a63a3)['compact']()[_0xa03a('0x8f')]();return db[_0xa03a('0x3d')][_0xa03a('0x5c')]({'where':{'id':_0xf1840a['params']['id']}})[_0xa03a('0x20')](function(_0xd45054){return db['sequelize'][_0xa03a('0x78')](function(_0x594ca7){return _0xd45054[_0xa03a('0x90')](_0xf1840a['query'][_0xa03a('0x73')],{'transaction':_0x594ca7})['then'](function(){if(!_[_0xa03a('0x91')](_0x2755de)){return _0xd45054[_0xa03a('0x92')](_0x2755de,{'transaction':_0x594ca7});}})[_0xa03a('0x20')](function(){_0x2755de[_0xa03a('0x7a')](function(_0x10df18){socket[_0xa03a('0x93')](_0xa03a('0x94'),{'UserId':_0x10df18,'ChatQueueId':_0xd45054['id']});});});});});});})[_0xa03a('0x20')](respondWithStatusCode(_0x3a077d,null))['catch'](handleError(_0x3a077d,null));};exports['addAgents']=function(_0x43b0c7,_0xb5540f,_0x44ab49){return db[_0xa03a('0x3d')]['find']({'where':{'id':_0x43b0c7[_0xa03a('0x5e')]['id']}})[_0xa03a('0x20')](handleEntityNotFound(_0xb5540f,null))[_0xa03a('0x20')](function(_0x3988bc){if(_0x3988bc){return _0x3988bc[_0xa03a('0x95')](_0x43b0c7[_0xa03a('0x57')][_0xa03a('0x73')],_[_0xa03a('0x96')](_0x43b0c7[_0xa03a('0x57')],[_0xa03a('0x73'),'id'])||{})[_0xa03a('0x97')](function(_0x247d8e){for(var _0x521676=0x0;_0x521676<_0x43b0c7[_0xa03a('0x57')]['ids'][_0xa03a('0x55')];_0x521676+=0x1){socket[_0xa03a('0x93')](_0xa03a('0x7b'),{'UserId':Number(_0x43b0c7[_0xa03a('0x57')][_0xa03a('0x73')][_0x521676]),'ChatQueueId':Number(_0x43b0c7[_0xa03a('0x5e')]['id'])});}return _0x247d8e;});}})[_0xa03a('0x20')](respondWithResult(_0xb5540f,null))[_0xa03a('0x2b')](handleError(_0xb5540f,null));};exports[_0xa03a('0x92')]=function(_0x2077d8,_0x74e912,_0x562880){return db['ChatQueue'][_0xa03a('0x5c')]({'where':{'id':_0x2077d8[_0xa03a('0x5e')]['id']}})[_0xa03a('0x20')](handleEntityNotFound(_0x74e912,null))['then'](function(_0x26eee1){if(_0x26eee1){return _0x26eee1['removeAgents'](_0x2077d8[_0xa03a('0x42')][_0xa03a('0x73')])[_0xa03a('0x20')](function(){if(_['isArray'](_0x2077d8['query'][_0xa03a('0x73')])){for(var _0x2781fb=0x0;_0x2781fb<_0x2077d8[_0xa03a('0x42')][_0xa03a('0x73')][_0xa03a('0x55')];_0x2781fb+=0x1){socket[_0xa03a('0x93')]('userChatQueue:remove',{'UserId':Number(_0x2077d8['query']['ids'][_0x2781fb]),'ChatQueueId':Number(_0x2077d8[_0xa03a('0x5e')]['id'])});}}else{socket[_0xa03a('0x93')](_0xa03a('0x94'),{'UserId':Number(_0x2077d8[_0xa03a('0x42')]['ids']),'ChatQueueId':Number(_0x2077d8[_0xa03a('0x5e')]['id'])});}});}})[_0xa03a('0x20')](respondWithStatusCode(_0x74e912,null))['catch'](handleError(_0x74e912,null));};exports[_0xa03a('0x98')]=function(_0x8ff75b,_0x5bd307,_0x37c6ea){var _0xf4368e={};var _0x39c2a8={};var _0x42bb79;var _0x3dfd14;return db[_0xa03a('0x3d')][_0xa03a('0x6f')]({'where':{'id':_0x8ff75b[_0xa03a('0x5e')]['id']}})[_0xa03a('0x20')](handleEntityNotFound(_0x5bd307,null))[_0xa03a('0x20')](function(_0xc78f57){if(_0xc78f57){_0x42bb79=_0xc78f57;_0x39c2a8[_0xa03a('0x41')]=_[_0xa03a('0x63')](db[_0xa03a('0x65')]['rawAttributes']);_0x39c2a8[_0xa03a('0x42')]=_[_0xa03a('0x63')](_0x8ff75b[_0xa03a('0x42')]);_0x39c2a8[_0xa03a('0x43')]=_[_0xa03a('0x44')](_0x39c2a8[_0xa03a('0x41')],_0x39c2a8[_0xa03a('0x42')]);_0xf4368e[_0xa03a('0x45')]=_['intersection'](_0x39c2a8[_0xa03a('0x41')],qs[_0xa03a('0x46')](_0x8ff75b[_0xa03a('0x42')][_0xa03a('0x46')]));_0xf4368e[_0xa03a('0x45')]=_0xf4368e[_0xa03a('0x45')]['length']?_0xf4368e['attributes']:_0x39c2a8['model'];_0xf4368e['order']=qs[_0xa03a('0x4a')](_0x8ff75b[_0xa03a('0x42')]['sort']);_0xf4368e[_0xa03a('0x4b')]=qs[_0xa03a('0x43')](_['pick'](_0x8ff75b[_0xa03a('0x42')],_0x39c2a8[_0xa03a('0x43')]));if(_0x8ff75b[_0xa03a('0x42')][_0xa03a('0x71')]){_0xf4368e[_0xa03a('0x4b')]=_['merge'](_0xf4368e[_0xa03a('0x4b')],{'$or':_[_0xa03a('0x3c')](_0xf4368e[_0xa03a('0x45')],function(_0x7829f7){var _0x5e3fec={};_0x5e3fec[_0x7829f7]={'$like':'%'+_0x8ff75b[_0xa03a('0x42')][_0xa03a('0x71')]+'%'};return _0x5e3fec;})});}_0xf4368e=_[_0xa03a('0x4e')]({},_0xf4368e,_0x8ff75b[_0xa03a('0x4f')]);return _0x42bb79[_0xa03a('0x98')](_0xf4368e);}})[_0xa03a('0x20')](function(_0x43c54f){if(_0x43c54f){_0x3dfd14=_0x43c54f['length'];if(!_0x8ff75b['query'][_0xa03a('0x47')]('nolimit')){_0xf4368e[_0xa03a('0x31')]=qs[_0xa03a('0x31')](_0x8ff75b[_0xa03a('0x42')]['limit']);_0xf4368e[_0xa03a('0x33')]=qs['offset'](_0x8ff75b['query'][_0xa03a('0x33')]);}return _0x42bb79[_0xa03a('0x98')](_0xf4368e);}})['then'](function(_0x4cbc33){if(_0x4cbc33){return _0x4cbc33?{'count':_0x3dfd14,'rows':_0x4cbc33}:null;}})[_0xa03a('0x20')](respondWithResult(_0x5bd307,null))['catch'](handleError(_0x5bd307,null));};
\ No newline at end of file
+var _0xb04e=['fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','jayson/promise','client','request','then','info','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','destroy','ChatQueues','UserProfileResource','stack','name','send','index','map','ChatQueue','rawAttributes','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','findAll','rows','params','includeAll','include','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','UserChatQueue','ChatQueueId','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','SIP','chatPause','getTeams','findOne','Team','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','forEach','emit','userChatQueue:save','removeTeams','select','field','team_has_chat_queues','join','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','all','union','value','isEmpty','removeAgents','omit','spread','isArray','userChatQueue:remove','getAgents','eml-format','zip-dir'];(function(_0x291954,_0x2d70b8){var _0x2bf676=function(_0x593f57){while(--_0x593f57){_0x291954['push'](_0x291954['shift']());}};_0x2bf676(++_0x2d70b8);}(_0xb04e,0x99));var _0xeb04=function(_0x2cc569,_0x4e9568){_0x2cc569=_0x2cc569-0x0;var _0x1bfc2e=_0xb04e[_0x2cc569];return _0x1bfc2e;};'use strict';var emlformat=require(_0xeb04('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeb04('0x1'));var jsonpatch=require(_0xeb04('0x2'));var rp=require('request-promise');var moment=require(_0xeb04('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xeb04('0x4'));var util=require(_0xeb04('0x5'));var path=require(_0xeb04('0x6'));var sox=require(_0xeb04('0x7'));var csv=require(_0xeb04('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeb04('0x9'));var _=require(_0xeb04('0xa'));var squel=require(_0xeb04('0xb'));var crypto=require(_0xeb04('0xc'));var jsforce=require(_0xeb04('0xd'));var deskjs=require(_0xeb04('0xe'));var toCsv=require(_0xeb04('0x8'));var querystring=require('querystring');var Papa=require(_0xeb04('0xf'));var Redis=require(_0xeb04('0x10'));var authService=require(_0xeb04('0x11'));var qs=require(_0xeb04('0x12'));var as=require(_0xeb04('0x13'));var hardwareService=require(_0xeb04('0x14'));var logger=require(_0xeb04('0x15'))(_0xeb04('0x16'));var utils=require(_0xeb04('0x17'));var config=require(_0xeb04('0x18'));var licenseUtil=require(_0xeb04('0x19'));var db=require(_0xeb04('0x1a'))['db'];config[_0xeb04('0x1b')]=_[_0xeb04('0x1c')](config[_0xeb04('0x1b')],{'host':_0xeb04('0x1d'),'port':0x18eb});var socket=require(_0xeb04('0x1e'))(new Redis(config[_0xeb04('0x1b')]));require(_0xeb04('0x1f'))['register'](socket);var jayson=require(_0xeb04('0x20'));var client=jayson[_0xeb04('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2db421,_0x276281,_0x5d1a1b,_0x5150ae){return new BPromise(function(_0x3009c1,_0x4a4a2b){var _0x370598=_0x5150ae||client;return _0x370598[_0xeb04('0x22')](_0x2db421,_0x5d1a1b)[_0xeb04('0x23')](function(_0x5cb527){logger[_0xeb04('0x24')]('ChatQueue,\x20%s,\x20%s',_0x276281,'request\x20sent');logger[_0xeb04('0x25')](_0xeb04('0x26'),_0x276281,_0xeb04('0x27'),JSON[_0xeb04('0x28')](_0x5cb527));if(_0x5cb527[_0xeb04('0x29')]){if(_0x5cb527[_0xeb04('0x29')][_0xeb04('0x2a')]===0x1f4){logger[_0xeb04('0x29')](_0xeb04('0x2b'),_0x276281,_0x5cb527[_0xeb04('0x29')][_0xeb04('0x2c')]);return _0x4a4a2b(_0x5cb527[_0xeb04('0x29')][_0xeb04('0x2c')]);}logger[_0xeb04('0x29')](_0xeb04('0x2b'),_0x276281,_0x5cb527['error'][_0xeb04('0x2c')]);return _0x3009c1(_0x5cb527[_0xeb04('0x29')]['message']);}else{logger[_0xeb04('0x24')](_0xeb04('0x2b'),_0x276281,_0xeb04('0x27'));_0x3009c1(_0x5cb527[_0xeb04('0x2d')]['message']);}})[_0xeb04('0x2e')](function(_0x4203b3){logger[_0xeb04('0x29')](_0xeb04('0x2b'),_0x276281,_0x4203b3);_0x4a4a2b(_0x4203b3);});});}function respondWithStatusCode(_0x3de3ab,_0x4d3dc3){_0x4d3dc3=_0x4d3dc3||0xcc;return function(_0x524560){if(_0x524560){return _0x3de3ab[_0xeb04('0x2f')](_0x4d3dc3);}return _0x3de3ab[_0xeb04('0x30')](_0x4d3dc3)[_0xeb04('0x31')]();};}function respondWithResult(_0x270308,_0x2b323a){_0x2b323a=_0x2b323a||0xc8;return function(_0x2744ec){if(_0x2744ec){return _0x270308[_0xeb04('0x30')](_0x2b323a)['json'](_0x2744ec);}};}function respondWithFilteredResult(_0xcc298c,_0x5114cf){return function(_0x27f922){if(_0x27f922){var _0x250b7a=typeof _0x5114cf[_0xeb04('0x32')]==='undefined'&&typeof _0x5114cf['limit']===_0xeb04('0x33');var _0x822d60=_0x27f922[_0xeb04('0x34')];var _0x23548f=_0x250b7a?0x0:_0x5114cf[_0xeb04('0x32')];var _0x2beb63=_0x250b7a?_0x27f922['count']:_0x5114cf['offset']+_0x5114cf['limit'];var _0x5c88c4;if(_0x2beb63>=_0x822d60){_0x2beb63=_0x822d60;_0x5c88c4=0xc8;}else{_0x5c88c4=0xce;}_0xcc298c[_0xeb04('0x30')](_0x5c88c4);return _0xcc298c[_0xeb04('0x35')](_0xeb04('0x36'),_0x23548f+'-'+_0x2beb63+'/'+_0x822d60)[_0xeb04('0x37')](_0x27f922);}return null;};}function patchUpdates(_0x65272e){return function(_0x1fc0f5){try{jsonpatch['apply'](_0x1fc0f5,_0x65272e,!![]);}catch(_0x3ad010){return BPromise['reject'](_0x3ad010);}return _0x1fc0f5['save']();};}function saveUpdates(_0x14665d,_0x4c7a38){return function(_0x111ffa){if(_0x111ffa){return _0x111ffa['update'](_0x14665d)[_0xeb04('0x23')](function(_0x43a402){return _0x43a402;});}return null;};}function removeEntity(_0x45a432,_0x4b6596){return function(_0x59c84e){if(_0x59c84e){return _0x59c84e[_0xeb04('0x38')]()[_0xeb04('0x23')](function(){var _0x57386c=_0x59c84e['get']({'plain':!![]});var _0x4d7a37=_0xeb04('0x39');return db[_0xeb04('0x3a')][_0xeb04('0x38')]({'where':{'type':_0x4d7a37,'resourceId':_0x57386c['id']}})[_0xeb04('0x23')](function(){return _0x59c84e;});})[_0xeb04('0x23')](function(){_0x45a432[_0xeb04('0x30')](0xcc)[_0xeb04('0x31')]();});}};}function handleEntityNotFound(_0x2bfee3,_0x32a3f5){return function(_0x698d8f){if(!_0x698d8f){_0x2bfee3['sendStatus'](0x194);}return _0x698d8f;};}function handleError(_0x372565,_0x454301){_0x454301=_0x454301||0x1f4;return function(_0x6e7f4e){logger[_0xeb04('0x29')](_0x6e7f4e[_0xeb04('0x3b')]);if(_0x6e7f4e[_0xeb04('0x3c')]){delete _0x6e7f4e[_0xeb04('0x3c')];}_0x372565[_0xeb04('0x30')](_0x454301)[_0xeb04('0x3d')](_0x6e7f4e);};}exports[_0xeb04('0x3e')]=function(_0x37e672,_0x546ca0){var _0x1cd9c4={},_0x17a3ae={},_0x34168a={'count':0x0,'rows':[]};var _0x10b1b8=_[_0xeb04('0x3f')](db[_0xeb04('0x40')][_0xeb04('0x41')],function(_0x1ab7ab){return{'name':_0x1ab7ab['fieldName'],'type':_0x1ab7ab['type'][_0xeb04('0x42')]};});_0x17a3ae['model']=_[_0xeb04('0x3f')](_0x10b1b8,_0xeb04('0x3c'));_0x17a3ae['query']=_[_0xeb04('0x43')](_0x37e672[_0xeb04('0x44')]);_0x17a3ae[_0xeb04('0x45')]=_[_0xeb04('0x46')](_0x17a3ae['model'],_0x17a3ae['query']);_0x1cd9c4[_0xeb04('0x47')]=_[_0xeb04('0x46')](_0x17a3ae[_0xeb04('0x48')],qs[_0xeb04('0x49')](_0x37e672[_0xeb04('0x44')][_0xeb04('0x49')]));_0x1cd9c4[_0xeb04('0x47')]=_0x1cd9c4[_0xeb04('0x47')][_0xeb04('0x4a')]?_0x1cd9c4['attributes']:_0x17a3ae[_0xeb04('0x48')];if(!_0x37e672[_0xeb04('0x44')][_0xeb04('0x4b')](_0xeb04('0x4c'))){_0x1cd9c4['limit']=qs['limit'](_0x37e672[_0xeb04('0x44')][_0xeb04('0x4d')]);_0x1cd9c4[_0xeb04('0x32')]=qs['offset'](_0x37e672[_0xeb04('0x44')][_0xeb04('0x32')]);}_0x1cd9c4[_0xeb04('0x4e')]=qs[_0xeb04('0x4f')](_0x37e672['query'][_0xeb04('0x4f')]);_0x1cd9c4[_0xeb04('0x50')]=qs[_0xeb04('0x45')](_[_0xeb04('0x51')](_0x37e672[_0xeb04('0x44')],_0x17a3ae[_0xeb04('0x45')]),_0x10b1b8);if(_0x37e672[_0xeb04('0x44')][_0xeb04('0x52')]){_0x1cd9c4['where']=_[_0xeb04('0x53')](_0x1cd9c4[_0xeb04('0x50')],{'$or':_[_0xeb04('0x3f')](_0x10b1b8,function(_0x1e8e03){if(_0x1e8e03[_0xeb04('0x54')]!=='VIRTUAL'){var _0x1660c8={};_0x1660c8[_0x1e8e03[_0xeb04('0x3c')]]={'$like':'%'+_0x37e672['query']['filter']+'%'};return _0x1660c8;}})});}_0x1cd9c4=_[_0xeb04('0x53')]({},_0x1cd9c4,_0x37e672['options']);var _0x20e862={'where':_0x1cd9c4[_0xeb04('0x50')]};return db['ChatQueue']['count'](_0x20e862)[_0xeb04('0x23')](function(_0x37df72){_0x34168a[_0xeb04('0x34')]=_0x37df72;if(_0x37e672[_0xeb04('0x44')]['includeAll']){_0x1cd9c4['include']=[{'all':!![]}];}return db['ChatQueue'][_0xeb04('0x55')](_0x1cd9c4);})[_0xeb04('0x23')](function(_0x5a030c){_0x34168a[_0xeb04('0x56')]=_0x5a030c;return _0x34168a;})[_0xeb04('0x23')](respondWithFilteredResult(_0x546ca0,_0x1cd9c4))['catch'](handleError(_0x546ca0,null));};exports['show']=function(_0x189402,_0x9b7384){var _0x3faa5d={'raw':!![],'where':{'id':_0x189402[_0xeb04('0x57')]['id']}},_0x174bbe={};_0x174bbe[_0xeb04('0x48')]=_[_0xeb04('0x43')](db[_0xeb04('0x40')][_0xeb04('0x41')]);_0x174bbe[_0xeb04('0x44')]=_[_0xeb04('0x43')](_0x189402[_0xeb04('0x44')]);_0x174bbe[_0xeb04('0x45')]=_['intersection'](_0x174bbe[_0xeb04('0x48')],_0x174bbe[_0xeb04('0x44')]);_0x3faa5d[_0xeb04('0x47')]=_['intersection'](_0x174bbe[_0xeb04('0x48')],qs['fields'](_0x189402['query']['fields']));_0x3faa5d['attributes']=_0x3faa5d[_0xeb04('0x47')][_0xeb04('0x4a')]?_0x3faa5d[_0xeb04('0x47')]:_0x174bbe[_0xeb04('0x48')];if(_0x189402['query'][_0xeb04('0x58')]){_0x3faa5d[_0xeb04('0x59')]=[{'all':!![]}];}_0x3faa5d=_[_0xeb04('0x53')]({},_0x3faa5d,_0x189402[_0xeb04('0x5a')]);return db[_0xeb04('0x40')][_0xeb04('0x5b')](_0x3faa5d)[_0xeb04('0x23')](handleEntityNotFound(_0x9b7384,null))[_0xeb04('0x23')](respondWithResult(_0x9b7384,null))['catch'](handleError(_0x9b7384,null));};exports[_0xeb04('0x5c')]=function(_0x1aad68,_0x6a7458){return db['ChatQueue']['create'](_0x1aad68['body'],{})[_0xeb04('0x23')](function(_0x35a8ce){var _0x32de8f=_0x1aad68[_0xeb04('0x5d')]['get']({'plain':!![]});if(!_0x32de8f)throw new Error(_0xeb04('0x5e'));if(_0x32de8f[_0xeb04('0x5f')]==='user'){var _0x540793=_0x35a8ce[_0xeb04('0x60')]({'plain':!![]});var _0x750855=_0xeb04('0x39');return db[_0xeb04('0x61')][_0xeb04('0x5b')]({'where':{'name':_0x750855,'userProfileId':_0x32de8f[_0xeb04('0x62')]},'raw':!![]})[_0xeb04('0x23')](function(_0x49d426){if(_0x49d426&&_0x49d426[_0xeb04('0x63')]===0x0){return db['UserProfileResource'][_0xeb04('0x5c')]({'name':_0x540793[_0xeb04('0x3c')],'resourceId':_0x540793['id'],'type':_0x49d426['name'],'sectionId':_0x49d426['id']},{})[_0xeb04('0x23')](function(){return _0x35a8ce;});}else{return _0x35a8ce;}})[_0xeb04('0x2e')](function(_0x578a4a){logger[_0xeb04('0x29')](_0xeb04('0x64'),_0x578a4a);throw _0x578a4a;});}return _0x35a8ce;})[_0xeb04('0x23')](respondWithResult(_0x6a7458,0xc9))[_0xeb04('0x2e')](handleError(_0x6a7458,null));};exports['update']=function(_0x4c2791,_0x24bb29){if(_0x4c2791[_0xeb04('0x65')]['id']){delete _0x4c2791[_0xeb04('0x65')]['id'];}return db[_0xeb04('0x40')]['find']({'where':{'id':_0x4c2791[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x24bb29,null))[_0xeb04('0x23')](saveUpdates(_0x4c2791[_0xeb04('0x65')],null))[_0xeb04('0x23')](respondWithResult(_0x24bb29,null))['catch'](handleError(_0x24bb29,null));};exports[_0xeb04('0x38')]=function(_0x3c2100,_0x545b67){return db['ChatQueue'][_0xeb04('0x5b')]({'where':{'id':_0x3c2100[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x545b67,null))[_0xeb04('0x23')](removeEntity(_0x545b67,null))[_0xeb04('0x2e')](handleError(_0x545b67,null));};exports[_0xeb04('0x66')]=function(_0x5cde82,_0x4238ab){return db['ChatQueue'][_0xeb04('0x66')]()[_0xeb04('0x23')](respondWithResult(_0x4238ab,null))[_0xeb04('0x2e')](handleError(_0x4238ab,null));};exports[_0xeb04('0x67')]=function(_0x47ca01,_0x4d806f,_0x471905){var _0x2478d7={'raw':!![],'where':{}},_0x14ab42={},_0x47938a;return db['ChatQueue']['findOne']({'where':{'id':_0x47ca01['params']['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x4d806f,null))[_0xeb04('0x23')](function(_0x1b671b){if(_0x1b671b){_0x47938a=_0x1b671b[_0xeb04('0x60')]({'plain':!![]});_0x14ab42[_0xeb04('0x48')]=_['keys'](db[_0xeb04('0x68')][_0xeb04('0x41')]);_0x14ab42[_0xeb04('0x44')]=_['keys'](_0x47ca01[_0xeb04('0x44')]);_0x14ab42[_0xeb04('0x45')]=_[_0xeb04('0x46')](_0x14ab42[_0xeb04('0x48')],_0x14ab42[_0xeb04('0x44')]);_0x2478d7[_0xeb04('0x47')]=_['intersection'](_0x14ab42['model'],qs[_0xeb04('0x49')](_0x47ca01[_0xeb04('0x44')][_0xeb04('0x49')]));_0x2478d7['attributes']=_0x2478d7[_0xeb04('0x47')]['length']?_0x2478d7[_0xeb04('0x47')]:_0x14ab42[_0xeb04('0x48')];if(!_0x47ca01['query'][_0xeb04('0x4b')]('nolimit')){_0x2478d7['limit']=qs['limit'](_0x47ca01[_0xeb04('0x44')][_0xeb04('0x4d')]);_0x2478d7['offset']=qs[_0xeb04('0x32')](_0x47ca01[_0xeb04('0x44')][_0xeb04('0x32')]);}_0x2478d7[_0xeb04('0x4e')]=qs[_0xeb04('0x4f')](_0x47ca01[_0xeb04('0x44')]['sort']);_0x2478d7['where']=qs['filters'](_['pick'](_0x47ca01[_0xeb04('0x44')],_0x14ab42[_0xeb04('0x45')]));_0x2478d7[_0xeb04('0x50')][_0xeb04('0x69')]=_0x1b671b['id'];if(_0x47ca01['query'][_0xeb04('0x52')]){_0x2478d7[_0xeb04('0x50')]=_[_0xeb04('0x53')](_0x2478d7['where'],{'$or':_[_0xeb04('0x3f')](_0x2478d7[_0xeb04('0x47')],function(_0xdf4026){var _0x230926={};_0x230926[_0xdf4026]={'$like':'%'+_0x47ca01[_0xeb04('0x44')][_0xeb04('0x52')]+'%'};return _0x230926;})});}_0x2478d7=_[_0xeb04('0x53')]({},_0x2478d7,_0x47ca01[_0xeb04('0x5a')]);return db[_0xeb04('0x68')][_0xeb04('0x55')](_0x2478d7);}})[_0xeb04('0x23')](function(_0x2aaee4){if(_0x2aaee4){return db[_0xeb04('0x6a')][_0xeb04('0x6b')]({'where':{'id':_[_0xeb04('0x3f')](_0x2aaee4,_0xeb04('0x6c')),'role':_0xeb04('0x6d')},'attributes':['id',_0xeb04('0x3c'),'chatPause',_0xeb04('0x6e'),_0xeb04('0x6f')]});}})[_0xeb04('0x23')](function(_0x1c9bb5){if(_0x1c9bb5){return{'count':_0x1c9bb5['count'],'rows':_[_0xeb04('0x3f')](_0x1c9bb5['rows'],function(_0x1b7935){return{'membername':_0x1b7935[_0xeb04('0x3c')],'UserId':_0x1b7935['id'],'queue_name':_0x47938a[_0xeb04('0x3c')],'ChatQueueId':_0x47938a['id'],'interface':util[_0xeb04('0x70')]('%s/%s',_0xeb04('0x71'),_0x1b7935[_0xeb04('0x3c')]),'penalty':0x0,'paused':_0x1b7935[_0xeb04('0x72')],'createdAt':_0x1b7935[_0xeb04('0x6f')],'updatedAt':_0x1b7935[_0xeb04('0x6e')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4d806f,_0x2478d7))['catch'](handleError(_0x4d806f,null));};exports[_0xeb04('0x73')]=function(_0x3253a4,_0x2f382f,_0xf93082){var _0x92f2e4={};var _0x4294b4={};var _0x5c45b3;var _0x1decc2;return db[_0xeb04('0x40')][_0xeb04('0x74')]({'where':{'id':_0x3253a4[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x2f382f,null))[_0xeb04('0x23')](function(_0xe2b758){if(_0xe2b758){_0x5c45b3=_0xe2b758;_0x4294b4[_0xeb04('0x48')]=_[_0xeb04('0x43')](db[_0xeb04('0x75')][_0xeb04('0x41')]);_0x4294b4[_0xeb04('0x44')]=_[_0xeb04('0x43')](_0x3253a4[_0xeb04('0x44')]);_0x4294b4[_0xeb04('0x45')]=_[_0xeb04('0x46')](_0x4294b4[_0xeb04('0x48')],_0x4294b4[_0xeb04('0x44')]);_0x92f2e4[_0xeb04('0x47')]=_['intersection'](_0x4294b4[_0xeb04('0x48')],qs[_0xeb04('0x49')](_0x3253a4[_0xeb04('0x44')][_0xeb04('0x49')]));_0x92f2e4[_0xeb04('0x47')]=_0x92f2e4[_0xeb04('0x47')]['length']?_0x92f2e4[_0xeb04('0x47')]:_0x4294b4[_0xeb04('0x48')];_0x92f2e4[_0xeb04('0x4e')]=qs['sort'](_0x3253a4['query'][_0xeb04('0x4f')]);_0x92f2e4[_0xeb04('0x50')]=qs[_0xeb04('0x45')](_[_0xeb04('0x51')](_0x3253a4['query'],_0x4294b4['filters']));if(_0x3253a4[_0xeb04('0x44')][_0xeb04('0x52')]){_0x92f2e4[_0xeb04('0x50')]=_[_0xeb04('0x53')](_0x92f2e4['where'],{'$or':_['map'](_0x92f2e4[_0xeb04('0x47')],function(_0x29c5b0){var _0x4beb3f={};_0x4beb3f[_0x29c5b0]={'$like':'%'+_0x3253a4[_0xeb04('0x44')][_0xeb04('0x52')]+'%'};return _0x4beb3f;})});}_0x92f2e4=_[_0xeb04('0x53')]({},_0x92f2e4,_0x3253a4[_0xeb04('0x5a')]);return _0x5c45b3['getTeams'](_0x92f2e4);}})[_0xeb04('0x23')](function(_0x2feae1){if(_0x2feae1){_0x1decc2=_0x2feae1[_0xeb04('0x4a')];if(!_0x3253a4[_0xeb04('0x44')][_0xeb04('0x4b')](_0xeb04('0x4c'))){_0x92f2e4['limit']=qs['limit'](_0x3253a4[_0xeb04('0x44')][_0xeb04('0x4d')]);_0x92f2e4['offset']=qs[_0xeb04('0x32')](_0x3253a4[_0xeb04('0x44')][_0xeb04('0x32')]);}return _0x5c45b3[_0xeb04('0x73')](_0x92f2e4);}})[_0xeb04('0x23')](function(_0x17e8fc){if(_0x17e8fc){return _0x17e8fc?{'count':_0x1decc2,'rows':_0x17e8fc}:null;}})[_0xeb04('0x23')](respondWithResult(_0x2f382f,null))[_0xeb04('0x2e')](handleError(_0x2f382f,null));};exports[_0xeb04('0x76')]=function(_0x476d17,_0x5ec84f,_0x208280){var _0x58ca0d=_0x476d17[_0xeb04('0x65')][_0xeb04('0x77')];return db[_0xeb04('0x75')]['findAll']({'where':{'id':_0x58ca0d},'attributes':['id'],'include':[{'model':db[_0xeb04('0x6a')],'as':_0xeb04('0x78'),'attributes':['id',_0xeb04('0x3c'),'online',_0xeb04('0x79'),_0xeb04('0x7a')],'raw':!![]}]})['then'](function(_0x37f126){if(_0x37f126){var _0x1b4f0f=_[_0xeb04('0x7b')](_0x37f126,function(_0x4f5fbe){var _0xa9f12a=_0x4f5fbe[_0xeb04('0x60')]({'plain':!![]});return _0xa9f12a[_0xeb04('0x78')];});return db['ChatQueue'][_0xeb04('0x5b')]({'where':{'id':_0x476d17[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](function(_0x4a77c1){return db[_0xeb04('0x7c')][_0xeb04('0x7d')](function(_0x176384){return _0x4a77c1[_0xeb04('0x76')](_0x58ca0d,{'transaction':_0x176384})[_0xeb04('0x23')](function(){return BPromise[_0xeb04('0x7e')](_0x1b4f0f,function(_0x6ce079){return db[_0xeb04('0x68')]['findOrCreate']({'where':{'UserId':_0x6ce079['id'],'ChatQueueId':_0x476d17['params']['id']},'transaction':_0x176384});});})['then'](function(){_0x1b4f0f[_0xeb04('0x7f')](function(_0x2a4fa9){socket[_0xeb04('0x80')](_0xeb04('0x81'),{'UserId':_0x2a4fa9['id'],'ChatQueueId':_0x4a77c1['id']});});});});});}})['then'](respondWithStatusCode(_0x5ec84f,null))[_0xeb04('0x2e')](handleError(_0x5ec84f,null));};exports[_0xeb04('0x82')]=function(_0x2eb6ab,_0x46c657,_0x4c25e5){return db['Team']['findAll']({'where':{'id':_0x2eb6ab[_0xeb04('0x44')]['ids']},'attributes':['id'],'include':[{'model':db[_0xeb04('0x6a')],'as':_0xeb04('0x78'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x46c657,null))[_0xeb04('0x23')](function(_0x594325){var _0x23c85e=_[_0xeb04('0x3f')](_0x594325,'id');var _0x3015ed=[];var _0x208007=[];var _0x348a95=squel[_0xeb04('0x83')]();_0x348a95[_0xeb04('0x84')]('tq.TeamId')['from'](_0xeb04('0x85'),'tq')[_0xeb04('0x86')]('user_has_teams','ut',_0xeb04('0x87'))['where'](_0xeb04('0x88'),_0x2eb6ab[_0xeb04('0x57')]['id']);for(var _0x326662=0x0;_0x326662<_0x594325[_0xeb04('0x4a')];_0x326662+=0x1){let _0x48925e=_0x594325[_0x326662];for(var _0x11d96f=0x0;_0x11d96f<_0x48925e[_0xeb04('0x78')][_0xeb04('0x4a')];_0x11d96f+=0x1){let _0x573413=_0x48925e[_0xeb04('0x78')][_0x11d96f];var _0x2d2760=_0x348a95[_0xeb04('0x89')]();_0x2d2760[_0xeb04('0x50')](_0xeb04('0x8a'),_0x573413['id']);_0x208007[_0xeb04('0x8b')](db[_0xeb04('0x7c')][_0xeb04('0x44')](_0x2d2760[_0xeb04('0x8c')](),{'type':db[_0xeb04('0x7c')][_0xeb04('0x8d')][_0xeb04('0x8e')]})[_0xeb04('0x23')](function(_0x88b1a6){if(_0x88b1a6['length']===0x1){return _0x573413['id'];}else{var _0x2cafae=_[_0xeb04('0x8f')](_[_0xeb04('0x3f')](_0x88b1a6,'TeamId'),function(_0x314db9){return _[_0xeb04('0x90')](_0x23c85e,_0x314db9);});if(_0x2cafae){return _0x573413['id'];}}}));}}return BPromise[_0xeb04('0x91')](_0x208007)[_0xeb04('0x23')](function(_0x5dcf45){_0x3015ed=_(_0x3015ed)[_0xeb04('0x92')](_0x5dcf45)['compact']()[_0xeb04('0x93')]();return db[_0xeb04('0x40')][_0xeb04('0x5b')]({'where':{'id':_0x2eb6ab[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](function(_0x2c23d8){return db['sequelize'][_0xeb04('0x7d')](function(_0x3babfc){return _0x2c23d8[_0xeb04('0x82')](_0x2eb6ab['query']['ids'],{'transaction':_0x3babfc})[_0xeb04('0x23')](function(){if(!_[_0xeb04('0x94')](_0x3015ed)){return _0x2c23d8[_0xeb04('0x95')](_0x3015ed,{'transaction':_0x3babfc});}})['then'](function(){_0x3015ed[_0xeb04('0x7f')](function(_0x52a6ca){socket[_0xeb04('0x80')]('userChatQueue:remove',{'UserId':_0x52a6ca,'ChatQueueId':_0x2c23d8['id']});});});});});});})['then'](respondWithStatusCode(_0x46c657,null))[_0xeb04('0x2e')](handleError(_0x46c657,null));};exports['addAgents']=function(_0x134b36,_0x41ab3e,_0x48e074){return db[_0xeb04('0x40')][_0xeb04('0x5b')]({'where':{'id':_0x134b36['params']['id']}})['then'](handleEntityNotFound(_0x41ab3e,null))[_0xeb04('0x23')](function(_0x57c8ab){if(_0x57c8ab){return _0x57c8ab['addAgents'](_0x134b36[_0xeb04('0x65')]['ids'],_[_0xeb04('0x96')](_0x134b36[_0xeb04('0x65')],['ids','id'])||{})[_0xeb04('0x97')](function(_0x18470b){for(var _0x325e4c=0x0;_0x325e4c<_0x134b36[_0xeb04('0x65')][_0xeb04('0x77')][_0xeb04('0x4a')];_0x325e4c+=0x1){socket[_0xeb04('0x80')](_0xeb04('0x81'),{'UserId':Number(_0x134b36['body'][_0xeb04('0x77')][_0x325e4c]),'ChatQueueId':Number(_0x134b36[_0xeb04('0x57')]['id'])});}return _0x18470b;});}})[_0xeb04('0x23')](respondWithResult(_0x41ab3e,null))[_0xeb04('0x2e')](handleError(_0x41ab3e,null));};exports[_0xeb04('0x95')]=function(_0x2d77b9,_0x1fb3b5,_0x55aa6e){return db[_0xeb04('0x40')][_0xeb04('0x5b')]({'where':{'id':_0x2d77b9[_0xeb04('0x57')]['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x1fb3b5,null))[_0xeb04('0x23')](function(_0x6ca52b){if(_0x6ca52b){return _0x6ca52b[_0xeb04('0x95')](_0x2d77b9[_0xeb04('0x44')][_0xeb04('0x77')])['then'](function(){if(_[_0xeb04('0x98')](_0x2d77b9[_0xeb04('0x44')]['ids'])){for(var _0x454a89=0x0;_0x454a89<_0x2d77b9['query']['ids'][_0xeb04('0x4a')];_0x454a89+=0x1){socket[_0xeb04('0x80')](_0xeb04('0x99'),{'UserId':Number(_0x2d77b9[_0xeb04('0x44')][_0xeb04('0x77')][_0x454a89]),'ChatQueueId':Number(_0x2d77b9[_0xeb04('0x57')]['id'])});}}else{socket[_0xeb04('0x80')]('userChatQueue:remove',{'UserId':Number(_0x2d77b9[_0xeb04('0x44')][_0xeb04('0x77')]),'ChatQueueId':Number(_0x2d77b9[_0xeb04('0x57')]['id'])});}});}})[_0xeb04('0x23')](respondWithStatusCode(_0x1fb3b5,null))['catch'](handleError(_0x1fb3b5,null));};exports[_0xeb04('0x9a')]=function(_0x5785f0,_0x21fdb4,_0x8ce5ea){var _0x538c99={};var _0x58422b={};var _0x5d59da;var _0x8face7;return db[_0xeb04('0x40')][_0xeb04('0x74')]({'where':{'id':_0x5785f0['params']['id']}})[_0xeb04('0x23')](handleEntityNotFound(_0x21fdb4,null))['then'](function(_0x39a375){if(_0x39a375){_0x5d59da=_0x39a375;_0x58422b['model']=_[_0xeb04('0x43')](db['User'][_0xeb04('0x41')]);_0x58422b[_0xeb04('0x44')]=_['keys'](_0x5785f0[_0xeb04('0x44')]);_0x58422b[_0xeb04('0x45')]=_[_0xeb04('0x46')](_0x58422b[_0xeb04('0x48')],_0x58422b[_0xeb04('0x44')]);_0x538c99[_0xeb04('0x47')]=_[_0xeb04('0x46')](_0x58422b[_0xeb04('0x48')],qs['fields'](_0x5785f0[_0xeb04('0x44')][_0xeb04('0x49')]));_0x538c99[_0xeb04('0x47')]=_0x538c99['attributes'][_0xeb04('0x4a')]?_0x538c99[_0xeb04('0x47')]:_0x58422b[_0xeb04('0x48')];_0x538c99['order']=qs[_0xeb04('0x4f')](_0x5785f0[_0xeb04('0x44')][_0xeb04('0x4f')]);_0x538c99['where']=qs[_0xeb04('0x45')](_[_0xeb04('0x51')](_0x5785f0[_0xeb04('0x44')],_0x58422b[_0xeb04('0x45')]));if(_0x5785f0[_0xeb04('0x44')][_0xeb04('0x52')]){_0x538c99[_0xeb04('0x50')]=_[_0xeb04('0x53')](_0x538c99['where'],{'$or':_['map'](_0x538c99[_0xeb04('0x47')],function(_0x26899f){var _0x5c0e53={};_0x5c0e53[_0x26899f]={'$like':'%'+_0x5785f0[_0xeb04('0x44')]['filter']+'%'};return _0x5c0e53;})});}_0x538c99=_[_0xeb04('0x53')]({},_0x538c99,_0x5785f0['options']);return _0x5d59da[_0xeb04('0x9a')](_0x538c99);}})['then'](function(_0x329850){if(_0x329850){_0x8face7=_0x329850[_0xeb04('0x4a')];if(!_0x5785f0[_0xeb04('0x44')][_0xeb04('0x4b')](_0xeb04('0x4c'))){_0x538c99[_0xeb04('0x4d')]=qs[_0xeb04('0x4d')](_0x5785f0[_0xeb04('0x44')][_0xeb04('0x4d')]);_0x538c99['offset']=qs['offset'](_0x5785f0[_0xeb04('0x44')][_0xeb04('0x32')]);}return _0x5d59da[_0xeb04('0x9a')](_0x538c99);}})[_0xeb04('0x23')](function(_0x1fca4e){if(_0x1fca4e){return _0x1fca4e?{'count':_0x8face7,'rows':_0x1fca4e}:null;}})['then'](respondWithResult(_0x21fdb4,null))['catch'](handleError(_0x21fdb4,null));};
\ No newline at end of file
index 60aee43..cba8aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0e7=['setMaxListeners','update','remove','emit','hook','exports','events','../../mysqldb','ChatQueue'];(function(_0x4e6d53,_0x5a3c61){var _0x2f3c03=function(_0x1395c3){while(--_0x1395c3){_0x4e6d53['push'](_0x4e6d53['shift']());}};_0x2f3c03(++_0x5a3c61);}(_0xa0e7,0x141));var _0x7a0e=function(_0x59327f,_0xd14aac){_0x59327f=_0x59327f-0x0;var _0x5b7632=_0xa0e7[_0x59327f];return _0x5b7632;};'use strict';var EventEmitter=require(_0x7a0e('0x0'));var ChatQueue=require(_0x7a0e('0x1'))['db'][_0x7a0e('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x7a0e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7a0e('0x4'),'afterDestroy':_0x7a0e('0x5')};function emitEvent(_0x278fab){return function(_0x1d29c7,_0x2e5ec0,_0x3718e3){ChatQueueEvents[_0x7a0e('0x6')](_0x278fab+':'+_0x1d29c7['id'],_0x1d29c7);ChatQueueEvents[_0x7a0e('0x6')](_0x278fab,_0x1d29c7);_0x3718e3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0x7a0e('0x7')](e,emitEvent(event));}}module[_0x7a0e('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0x7fc4=['../../mysqldb','ChatQueue','setMaxListeners','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x1ca636,_0x413c88){var _0x576e92=function(_0xa48670){while(--_0xa48670){_0x1ca636['push'](_0x1ca636['shift']());}};_0x576e92(++_0x413c88);}(_0x7fc4,0x8f));var _0x47fc=function(_0x4185f2,_0x515cd6){_0x4185f2=_0x4185f2-0x0;var _0x1feac5=_0x7fc4[_0x4185f2];return _0x1feac5;};'use strict';var EventEmitter=require(_0x47fc('0x0'));var ChatQueue=require(_0x47fc('0x1'))['db'][_0x47fc('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x47fc('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x47fc('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2148f7){return function(_0x3724b6,_0x3bcb71,_0x52f167){ChatQueueEvents[_0x47fc('0x5')](_0x2148f7+':'+_0x3724b6['id'],_0x3724b6);ChatQueueEvents['emit'](_0x2148f7,_0x3724b6);_0x52f167(null);};}for(var e in events){if(events[_0x47fc('0x6')](e)){var event=events[e];ChatQueue[_0x47fc('0x7')](e,emitEvent(event));}}module[_0x47fc('0x8')]=ChatQueueEvents;
\ No newline at end of file
index adbd633..d56e9a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8014=['../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','lodash','../../config/logger','api','moment','bluebird','rimraf'];(function(_0x310481,_0x5eeee3){var _0x3c9d8f=function(_0x1bfe3f){while(--_0x1bfe3f){_0x310481['push'](_0x310481['shift']());}};_0x3c9d8f(++_0x5eeee3);}(_0x8014,0x96));var _0x4801=function(_0x502953,_0x28de83){_0x502953=_0x502953-0x0;var _0x2fa32d=_0x8014[_0x502953];return _0x2fa32d;};'use strict';var _=require(_0x4801('0x0'));var util=require('util');var logger=require(_0x4801('0x1'))(_0x4801('0x2'));var moment=require(_0x4801('0x3'));var BPromise=require(_0x4801('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4801('0x5'));var config=require(_0x4801('0x6'));var attributes=require(_0x4801('0x7'));module[_0x4801('0x8')]=function(_0x126e8e,_0x3fffe3){return _0x126e8e[_0x4801('0x9')](_0x4801('0xa'),attributes,{'tableName':_0x4801('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d7a=['request-promise','path','rimraf','../../config/environment','define','ChatQueue','util','../../config/logger','api'];(function(_0x3c6a93,_0x408ed6){var _0x396500=function(_0x1fa8c1){while(--_0x1fa8c1){_0x3c6a93['push'](_0x3c6a93['shift']());}};_0x396500(++_0x408ed6);}(_0x5d7a,0x16e));var _0xa5d7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x5d7a[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xa5d7('0x0'));var logger=require(_0xa5d7('0x1'))(_0xa5d7('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa5d7('0x3'));var fs=require('fs');var path=require(_0xa5d7('0x4'));var rimraf=require(_0xa5d7('0x5'));var config=require(_0xa5d7('0x6'));var attributes=require('./chatQueue.attributes');module['exports']=function(_0x5e52f2,_0x257faf){return _0x5e52f2[_0xa5d7('0x7')](_0xa5d7('0x8'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e81ae56..6b16af7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a4d=['error','code','message','info','result','GetChatQueue','ChatQueue','findAll','options','attributes','include','map','model','ShowChatQueue','find','where','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x27fbfc,_0x4ec14f){var _0x27fb46=function(_0x5de8cd){while(--_0x5de8cd){_0x27fbfc['push'](_0x27fbfc['shift']());}};_0x27fb46(++_0x4ec14f);}(_0x9a4d,0xa8));var _0xd9a4=function(_0x18cf9a,_0xb19502){_0x18cf9a=_0x18cf9a-0x0;var _0x1203f7=_0x9a4d[_0x18cf9a];return _0x1203f7;};'use strict';var _=require(_0xd9a4('0x0'));var util=require(_0xd9a4('0x1'));var moment=require(_0xd9a4('0x2'));var BPromise=require(_0xd9a4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd9a4('0x4'));var logger=require(_0xd9a4('0x5'))(_0xd9a4('0x6'));var config=require(_0xd9a4('0x7'));var jayson=require(_0xd9a4('0x8'));var client=jayson['client'][_0xd9a4('0x9')]({'port':0x232a});config[_0xd9a4('0xa')]=_[_0xd9a4('0xb')](config[_0xd9a4('0xa')],{'host':_0xd9a4('0xc'),'port':0x18eb});var socket=require(_0xd9a4('0xd'))(new Redis(config['redis']));require(_0xd9a4('0xe'))[_0xd9a4('0xf')](socket);function respondWithRpcPromise(_0x45d15b,_0x30e4a,_0x50e04e){return new BPromise(function(_0x432050,_0x3c0e79){return client[_0xd9a4('0x10')](_0x45d15b,_0x50e04e)[_0xd9a4('0x11')](function(_0x303a2b){logger['info'](_0xd9a4('0x12'),_0x30e4a,_0xd9a4('0x13'));logger[_0xd9a4('0x14')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x30e4a,_0xd9a4('0x13'),JSON[_0xd9a4('0x15')](_0x303a2b));if(_0x303a2b[_0xd9a4('0x16')]){if(_0x303a2b[_0xd9a4('0x16')][_0xd9a4('0x17')]===0x1f4){logger[_0xd9a4('0x16')](_0xd9a4('0x12'),_0x30e4a,_0x303a2b[_0xd9a4('0x16')][_0xd9a4('0x18')]);return _0x3c0e79(_0x303a2b['error'][_0xd9a4('0x18')]);}logger[_0xd9a4('0x16')]('ChatQueue,\x20%s,\x20%s',_0x30e4a,_0x303a2b[_0xd9a4('0x16')][_0xd9a4('0x18')]);return _0x432050(_0x303a2b[_0xd9a4('0x16')][_0xd9a4('0x18')]);}else{logger[_0xd9a4('0x19')]('ChatQueue,\x20%s,\x20%s',_0x30e4a,_0xd9a4('0x13'));_0x432050(_0x303a2b[_0xd9a4('0x1a')][_0xd9a4('0x18')]);}})['catch'](function(_0x59e9d7){logger['error'](_0xd9a4('0x12'),_0x30e4a,_0x59e9d7);_0x3c0e79(_0x59e9d7);});});}exports[_0xd9a4('0x1b')]=function(_0x2103d9){var _0x459fe3=this;return new Promise(function(_0x1b28d4,_0x25ef52){return db[_0xd9a4('0x1c')][_0xd9a4('0x1d')]({'raw':_0x2103d9['options']?_0x2103d9['options']['raw']===undefined?!![]:![]:!![],'where':_0x2103d9[_0xd9a4('0x1e')]?_0x2103d9[_0xd9a4('0x1e')]['where']||null:null,'attributes':_0x2103d9[_0xd9a4('0x1e')]?_0x2103d9[_0xd9a4('0x1e')][_0xd9a4('0x1f')]||null:null,'limit':_0x2103d9[_0xd9a4('0x1e')]?_0x2103d9[_0xd9a4('0x1e')]['limit']||null:null,'include':_0x2103d9[_0xd9a4('0x1e')]?_0x2103d9['options'][_0xd9a4('0x20')]?_[_0xd9a4('0x21')](_0x2103d9[_0xd9a4('0x1e')][_0xd9a4('0x20')],function(_0x191b85){return{'model':db[_0x191b85[_0xd9a4('0x22')]],'as':_0x191b85['as'],'attributes':_0x191b85['attributes'],'include':_0x191b85[_0xd9a4('0x20')]?_[_0xd9a4('0x21')](_0x191b85[_0xd9a4('0x20')],function(_0x3dcc4d){return{'model':db[_0x3dcc4d[_0xd9a4('0x22')]],'as':_0x3dcc4d['as'],'attributes':_0x3dcc4d[_0xd9a4('0x1f')],'include':_0x3dcc4d[_0xd9a4('0x20')]?_[_0xd9a4('0x21')](_0x3dcc4d[_0xd9a4('0x20')],function(_0x48bc1a){return{'model':db[_0x48bc1a['model']],'as':_0x48bc1a['as'],'attributes':_0x48bc1a[_0xd9a4('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xd9a4('0x11')](function(_0x3d5bd1){logger['info'](_0xd9a4('0x1b'),_0x2103d9);logger['debug'](_0xd9a4('0x1b'),_0x2103d9,JSON[_0xd9a4('0x15')](_0x3d5bd1));_0x1b28d4(_0x3d5bd1);})['catch'](function(_0x2e5bd9){logger['error'](_0xd9a4('0x1b'),_0x2e5bd9[_0xd9a4('0x18')],_0x2103d9);_0x25ef52(_0x459fe3[_0xd9a4('0x16')](0x1f4,_0x2e5bd9[_0xd9a4('0x18')]));});});};exports[_0xd9a4('0x23')]=function(_0x4cc9ba){var _0x576427=this;return new Promise(function(_0xd8b3cc,_0x5ba340){return db[_0xd9a4('0x1c')][_0xd9a4('0x24')]({'raw':_0x4cc9ba[_0xd9a4('0x1e')]?_0x4cc9ba['options']['raw']===undefined?!![]:![]:!![],'where':_0x4cc9ba[_0xd9a4('0x1e')]?_0x4cc9ba[_0xd9a4('0x1e')][_0xd9a4('0x25')]||null:null,'attributes':_0x4cc9ba[_0xd9a4('0x1e')]?_0x4cc9ba[_0xd9a4('0x1e')][_0xd9a4('0x1f')]||null:null,'include':_0x4cc9ba[_0xd9a4('0x1e')]?_0x4cc9ba['options'][_0xd9a4('0x20')]?_[_0xd9a4('0x21')](_0x4cc9ba[_0xd9a4('0x1e')][_0xd9a4('0x20')],function(_0x223cb3){return{'model':db[_0x223cb3[_0xd9a4('0x22')]],'as':_0x223cb3['as'],'attributes':_0x223cb3[_0xd9a4('0x1f')],'include':_0x223cb3['include']?_[_0xd9a4('0x21')](_0x223cb3[_0xd9a4('0x20')],function(_0xaca7c0){return{'model':db[_0xaca7c0['model']],'as':_0xaca7c0['as'],'attributes':_0xaca7c0['attributes'],'include':_0xaca7c0[_0xd9a4('0x20')]?_[_0xd9a4('0x21')](_0xaca7c0['include'],function(_0x9dcdfe){return{'model':db[_0x9dcdfe[_0xd9a4('0x22')]],'as':_0x9dcdfe['as'],'attributes':_0x9dcdfe[_0xd9a4('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xd9a4('0x11')](function(_0x561c02){logger[_0xd9a4('0x19')](_0xd9a4('0x23'),_0x4cc9ba);logger['debug'](_0xd9a4('0x23'),_0x4cc9ba,JSON['stringify'](_0x561c02));_0xd8b3cc(_0x561c02);})['catch'](function(_0x2b8409){logger[_0xd9a4('0x16')](_0xd9a4('0x23'),_0x2b8409['message'],_0x4cc9ba);_0x5ba340(_0x576427['error'](0x1f4,_0x2b8409[_0xd9a4('0x18')]));});});};
\ No newline at end of file
+var _0x77ff=['options','where','attributes','limit','include','map','model','ChatQueue','raw','ShowChatQueue','util','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatQueue,\x20%s,\x20%s','info','result','catch','GetChatQueue'];(function(_0x3429d0,_0x267e26){var _0x3d1059=function(_0x4fa72b){while(--_0x4fa72b){_0x3429d0['push'](_0x3429d0['shift']());}};_0x3d1059(++_0x267e26);}(_0x77ff,0x168));var _0xf77f=function(_0x534817,_0x55cc0a){_0x534817=_0x534817-0x0;var _0x4e3ecb=_0x77ff[_0x534817];return _0x4e3ecb;};'use strict';var _=require('lodash');var util=require(_0xf77f('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf77f('0x1'))['db'];var utils=require(_0xf77f('0x2'));var logger=require(_0xf77f('0x3'))('rpc');var config=require(_0xf77f('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf77f('0x5')]({'port':0x232a});config['redis']=_['defaults'](config[_0xf77f('0x6')],{'host':_0xf77f('0x7'),'port':0x18eb});var socket=require(_0xf77f('0x8'))(new Redis(config['redis']));require(_0xf77f('0x9'))[_0xf77f('0xa')](socket);function respondWithRpcPromise(_0x53aead,_0x27412c,_0x41dcee){return new BPromise(function(_0x66def4,_0x257499){return client[_0xf77f('0xb')](_0x53aead,_0x41dcee)[_0xf77f('0xc')](function(_0x1d8bca){logger['info']('ChatQueue,\x20%s,\x20%s',_0x27412c,_0xf77f('0xd'));logger[_0xf77f('0xe')](_0xf77f('0xf'),_0x27412c,_0xf77f('0xd'),JSON[_0xf77f('0x10')](_0x1d8bca));if(_0x1d8bca[_0xf77f('0x11')]){if(_0x1d8bca['error'][_0xf77f('0x12')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x27412c,_0x1d8bca[_0xf77f('0x11')][_0xf77f('0x13')]);return _0x257499(_0x1d8bca[_0xf77f('0x11')][_0xf77f('0x13')]);}logger[_0xf77f('0x11')](_0xf77f('0x14'),_0x27412c,_0x1d8bca[_0xf77f('0x11')][_0xf77f('0x13')]);return _0x66def4(_0x1d8bca[_0xf77f('0x11')]['message']);}else{logger[_0xf77f('0x15')]('ChatQueue,\x20%s,\x20%s',_0x27412c,_0xf77f('0xd'));_0x66def4(_0x1d8bca[_0xf77f('0x16')][_0xf77f('0x13')]);}})[_0xf77f('0x17')](function(_0x31a99f){logger[_0xf77f('0x11')](_0xf77f('0x14'),_0x27412c,_0x31a99f);_0x257499(_0x31a99f);});});}exports[_0xf77f('0x18')]=function(_0x28fc63){var _0x220606=this;return new Promise(function(_0x331db7,_0x4db2c2){return db['ChatQueue']['findAll']({'raw':_0x28fc63[_0xf77f('0x19')]?_0x28fc63[_0xf77f('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x28fc63[_0xf77f('0x19')]?_0x28fc63['options'][_0xf77f('0x1a')]||null:null,'attributes':_0x28fc63['options']?_0x28fc63[_0xf77f('0x19')][_0xf77f('0x1b')]||null:null,'limit':_0x28fc63[_0xf77f('0x19')]?_0x28fc63[_0xf77f('0x19')][_0xf77f('0x1c')]||null:null,'include':_0x28fc63[_0xf77f('0x19')]?_0x28fc63['options'][_0xf77f('0x1d')]?_[_0xf77f('0x1e')](_0x28fc63[_0xf77f('0x19')]['include'],function(_0x45bbe6){return{'model':db[_0x45bbe6['model']],'as':_0x45bbe6['as'],'attributes':_0x45bbe6[_0xf77f('0x1b')],'include':_0x45bbe6['include']?_['map'](_0x45bbe6['include'],function(_0x53aa0c){return{'model':db[_0x53aa0c[_0xf77f('0x1f')]],'as':_0x53aa0c['as'],'attributes':_0x53aa0c[_0xf77f('0x1b')],'include':_0x53aa0c['include']?_[_0xf77f('0x1e')](_0x53aa0c[_0xf77f('0x1d')],function(_0x534fee){return{'model':db[_0x534fee['model']],'as':_0x534fee['as'],'attributes':_0x534fee[_0xf77f('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xba82b){logger['info'](_0xf77f('0x18'),_0x28fc63);logger[_0xf77f('0xe')](_0xf77f('0x18'),_0x28fc63,JSON[_0xf77f('0x10')](_0xba82b));_0x331db7(_0xba82b);})['catch'](function(_0x5cd804){logger[_0xf77f('0x11')]('GetChatQueue',_0x5cd804[_0xf77f('0x13')],_0x28fc63);_0x4db2c2(_0x220606[_0xf77f('0x11')](0x1f4,_0x5cd804[_0xf77f('0x13')]));});});};exports['ShowChatQueue']=function(_0xd49582){var _0x1fd637=this;return new Promise(function(_0x418a94,_0x275daf){return db[_0xf77f('0x20')]['find']({'raw':_0xd49582[_0xf77f('0x19')]?_0xd49582['options'][_0xf77f('0x21')]===undefined?!![]:![]:!![],'where':_0xd49582[_0xf77f('0x19')]?_0xd49582[_0xf77f('0x19')]['where']||null:null,'attributes':_0xd49582[_0xf77f('0x19')]?_0xd49582[_0xf77f('0x19')][_0xf77f('0x1b')]||null:null,'include':_0xd49582[_0xf77f('0x19')]?_0xd49582[_0xf77f('0x19')][_0xf77f('0x1d')]?_[_0xf77f('0x1e')](_0xd49582[_0xf77f('0x19')][_0xf77f('0x1d')],function(_0x4f3ae2){return{'model':db[_0x4f3ae2['model']],'as':_0x4f3ae2['as'],'attributes':_0x4f3ae2[_0xf77f('0x1b')],'include':_0x4f3ae2[_0xf77f('0x1d')]?_[_0xf77f('0x1e')](_0x4f3ae2['include'],function(_0x4cf629){return{'model':db[_0x4cf629[_0xf77f('0x1f')]],'as':_0x4cf629['as'],'attributes':_0x4cf629[_0xf77f('0x1b')],'include':_0x4cf629['include']?_[_0xf77f('0x1e')](_0x4cf629[_0xf77f('0x1d')],function(_0x3c369a){return{'model':db[_0x3c369a[_0xf77f('0x1f')]],'as':_0x3c369a['as'],'attributes':_0x3c369a[_0xf77f('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1a8959){logger[_0xf77f('0x15')]('ShowChatQueue',_0xd49582);logger[_0xf77f('0xe')](_0xf77f('0x22'),_0xd49582,JSON[_0xf77f('0x10')](_0x1a8959));_0x418a94(_0x1a8959);})['catch'](function(_0x10a289){logger[_0xf77f('0x11')](_0xf77f('0x22'),_0x10a289[_0xf77f('0x13')],_0xd49582);_0x275daf(_0x1fd637[_0xf77f('0x11')](0x1f4,_0x10a289[_0xf77f('0x13')]));});});};
\ No newline at end of file
index fb2abf8..579555a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6334=['length','chatQueue:','./chatQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x182e85,_0x3c4f39){var _0x3196f5=function(_0x57ca9b){while(--_0x57ca9b){_0x182e85['push'](_0x182e85['shift']());}};_0x3196f5(++_0x3c4f39);}(_0x6334,0x119));var _0x4633=function(_0x2c3255,_0x4e00ae){_0x2c3255=_0x2c3255-0x0;var _0x282aba=_0x6334[_0x2c3255];return _0x282aba;};'use strict';var ChatQueueEvents=require(_0x4633('0x0'));var events=[_0x4633('0x1'),_0x4633('0x2'),_0x4633('0x3')];function createListener(_0x1e53a0,_0x47254b){return function(_0x5109db){_0x47254b[_0x4633('0x4')](_0x1e53a0,_0x5109db);};}function removeListener(_0x205442,_0x2a2b3c){return function(){ChatQueueEvents[_0x4633('0x5')](_0x205442,_0x2a2b3c);};}exports[_0x4633('0x6')]=function(_0x6493dc){for(var _0x175e14=0x0,_0x4a8997=events[_0x4633('0x7')];_0x175e14<_0x4a8997;_0x175e14++){var _0x56891d=events[_0x175e14];var _0x21af74=createListener(_0x4633('0x8')+_0x56891d,_0x6493dc);ChatQueueEvents['on'](_0x56891d,_0x21af74);}};
\ No newline at end of file
+var _0xbd50=['length','./chatQueue.events','save','remove','emit'];(function(_0x3f8eb3,_0x2d6da9){var _0x380176=function(_0x45951e){while(--_0x45951e){_0x3f8eb3['push'](_0x3f8eb3['shift']());}};_0x380176(++_0x2d6da9);}(_0xbd50,0x196));var _0x0bd5=function(_0x39d2ad,_0x53645b){_0x39d2ad=_0x39d2ad-0x0;var _0x37d85a=_0xbd50[_0x39d2ad];return _0x37d85a;};'use strict';var ChatQueueEvents=require(_0x0bd5('0x0'));var events=[_0x0bd5('0x1'),_0x0bd5('0x2'),'update'];function createListener(_0x44fcb9,_0x167372){return function(_0x37acba){_0x167372[_0x0bd5('0x3')](_0x44fcb9,_0x37acba);};}function removeListener(_0x15620d,_0x4c17ee){return function(){ChatQueueEvents['removeListener'](_0x15620d,_0x4c17ee);};}exports['register']=function(_0x376024){for(var _0x2ef1d0=0x0,_0xcc6cfa=events[_0x0bd5('0x4')];_0x2ef1d0<_0xcc6cfa;_0x2ef1d0++){var _0x1b99f3=events[_0x2ef1d0];var _0x5ebe64=createListener('chatQueue:'+_0x1b99f3,_0x376024);ChatQueueEvents['on'](_0x1b99f3,_0x5ebe64);}};
\ No newline at end of file
index 404a976..3f54fd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','addAgents','put','delete','removeTeams','/:id/users','removeAgents','exports','multer','path','connect-timeout','express','../../components/auth/service'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x3e74,0x175));var _0x43e7=function(_0xa66c6,_0x13e61e){_0xa66c6=_0xa66c6-0x0;var _0x337852=_0x3e74[_0xa66c6];return _0x337852;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/members',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x13')]);router['post']('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router[_0x43e7('0x15')](_0x43e7('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x43e7('0x16')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller['destroy']);router['delete'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x17')]);router[_0x43e7('0x16')](_0x43e7('0x18'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x19')]);module[_0x43e7('0x1a')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','/:id/teams','removeTeams','multer','util','path'];(function(_0x38987f,_0xc79720){var _0x4cb697=function(_0x1af5ae){while(--_0x1af5ae){_0x38987f['push'](_0x38987f['shift']());}};_0x4cb697(++_0xc79720);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/teams',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x14')](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x17')]);router[_0x7995('0x18')](_0x7995('0x19'),auth[_0x7995('0xa')](),controller['update']);router[_0x7995('0x1a')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0x1b')]);router[_0x7995('0x1a')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router['delete']('/:id/users',auth[_0x7995('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 5482d91..d1d36fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eea=['DATE','moment','sequelize','exports','STRING'];(function(_0x3a5ad3,_0x3187fc){var _0x5292fc=function(_0x256879){while(--_0x256879){_0x3a5ad3['push'](_0x3a5ad3['shift']());}};_0x5292fc(++_0x3187fc);}(_0x7eea,0x7e));var _0xa7ee=function(_0x1c420a,_0x4e8f10){_0x1c420a=_0x1c420a-0x0;var _0x1f531d=_0x7eea[_0x1c420a];return _0x1f531d;};'use strict';var moment=require(_0xa7ee('0x0'));var Sequelize=require(_0xa7ee('0x1'));module[_0xa7ee('0x2')]={'uniqueid':{'type':Sequelize[_0xa7ee('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xa7ee('0x3')]},'joinAt':{'type':Sequelize[_0xa7ee('0x4')]},'leaveAt':{'type':Sequelize[_0xa7ee('0x4')]},'acceptAt':{'type':Sequelize[_0xa7ee('0x4')]},'exitAt':{'type':Sequelize[_0xa7ee('0x4')]},'reason':{'type':Sequelize[_0xa7ee('0x3')]}};
\ No newline at end of file
+var _0x7233=['sequelize','exports','STRING','DATE','moment'];(function(_0x19750c,_0x3619de){var _0x168482=function(_0x355a30){while(--_0x355a30){_0x19750c['push'](_0x19750c['shift']());}};_0x168482(++_0x3619de);}(_0x7233,0x1b2));var _0x3723=function(_0x25443b,_0x5209dc){_0x25443b=_0x25443b-0x0;var _0x16857f=_0x7233[_0x25443b];return _0x16857f;};'use strict';var moment=require(_0x3723('0x0'));var Sequelize=require(_0x3723('0x1'));module[_0x3723('0x2')]={'uniqueid':{'type':Sequelize[_0x3723('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x3723('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x3723('0x4')]},'exitAt':{'type':Sequelize[_0x3723('0x4')]},'reason':{'type':Sequelize[_0x3723('0x3')]}};
\ No newline at end of file
index 7d05c9e..f918018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf0d=['../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','end','error','name','send','map','ChatQueueReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','options','include','show','length','catch','create','body','find','params','describe','rimraf','zip-dir','util','path','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xaf0d,0x6d));var _0xdaf0=function(_0x323464,_0x22141b){_0x323464=_0x323464-0x0;var _0x1a8699=_0xaf0d[_0x323464];return _0x1a8699;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdaf0('0x0'));var zipdir=require(_0xdaf0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xdaf0('0x2'));var path=require(_0xdaf0('0x3'));var sox=require(_0xdaf0('0x4'));var csv=require('to-csv');var ejs=require(_0xdaf0('0x5'));var fs=require('fs');var fs_extra=require(_0xdaf0('0x6'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xdaf0('0x7'));var jsforce=require(_0xdaf0('0x8'));var deskjs=require(_0xdaf0('0x9'));var toCsv=require(_0xdaf0('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xdaf0('0xb'));var as=require(_0xdaf0('0xc'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdaf0('0xd'))(_0xdaf0('0xe'));var utils=require(_0xdaf0('0xf'));var config=require(_0xdaf0('0x10'));var licenseUtil=require('../../config/license/util');var db=require(_0xdaf0('0x11'))['db'];function respondWithStatusCode(_0x149261,_0x1e7a70){_0x1e7a70=_0x1e7a70||0xcc;return function(_0x4fbd9c){if(_0x4fbd9c){return _0x149261[_0xdaf0('0x12')](_0x1e7a70);}return _0x149261[_0xdaf0('0x13')](_0x1e7a70)['end']();};}function respondWithResult(_0x557f8b,_0x48ea31){_0x48ea31=_0x48ea31||0xc8;return function(_0x4f0b4a){if(_0x4f0b4a){return _0x557f8b['status'](_0x48ea31)[_0xdaf0('0x14')](_0x4f0b4a);}};}function respondWithFilteredResult(_0x4ab77b,_0x4296fc){return function(_0x56bc8e){if(_0x56bc8e){var _0x499482=typeof _0x4296fc[_0xdaf0('0x15')]===_0xdaf0('0x16')&&typeof _0x4296fc[_0xdaf0('0x17')]==='undefined';var _0x806153=_0x56bc8e[_0xdaf0('0x18')];var _0x21db47=_0x499482?0x0:_0x4296fc['offset'];var _0x5a2180=_0x499482?_0x56bc8e[_0xdaf0('0x18')]:_0x4296fc[_0xdaf0('0x15')]+_0x4296fc[_0xdaf0('0x17')];var _0x15d2a9;if(_0x5a2180>=_0x806153){_0x5a2180=_0x806153;_0x15d2a9=0xc8;}else{_0x15d2a9=0xce;}_0x4ab77b[_0xdaf0('0x13')](_0x15d2a9);return _0x4ab77b[_0xdaf0('0x19')](_0xdaf0('0x1a'),_0x21db47+'-'+_0x5a2180+'/'+_0x806153)['json'](_0x56bc8e);}return null;};}function patchUpdates(_0x353229){return function(_0x350f65){try{jsonpatch[_0xdaf0('0x1b')](_0x350f65,_0x353229,!![]);}catch(_0x452bb6){return BPromise['reject'](_0x452bb6);}return _0x350f65[_0xdaf0('0x1c')]();};}function saveUpdates(_0x320d6e,_0x100817){return function(_0xdc104f){if(_0xdc104f){return _0xdc104f['update'](_0x320d6e)[_0xdaf0('0x1d')](function(_0x3f886f){return _0x3f886f;});}return null;};}function removeEntity(_0xd94acb,_0x13abfc){return function(_0xb921d5){if(_0xb921d5){return _0xb921d5[_0xdaf0('0x1e')]()[_0xdaf0('0x1d')](function(){_0xd94acb['status'](0xcc)[_0xdaf0('0x1f')]();});}};}function handleEntityNotFound(_0x33e5c2,_0xe41671){return function(_0x401a58){if(!_0x401a58){_0x33e5c2[_0xdaf0('0x12')](0x194);}return _0x401a58;};}function handleError(_0x688451,_0x2efd93){_0x2efd93=_0x2efd93||0x1f4;return function(_0x4d3347){logger[_0xdaf0('0x20')](_0x4d3347['stack']);if(_0x4d3347[_0xdaf0('0x21')]){delete _0x4d3347[_0xdaf0('0x21')];}_0x688451['status'](_0x2efd93)[_0xdaf0('0x22')](_0x4d3347);};}exports['index']=function(_0x28e230,_0xd78a51){var _0x5dbb6d={},_0xaf86cb={},_0x2378ae={'count':0x0,'rows':[]};var _0x2fb05b=_[_0xdaf0('0x23')](db[_0xdaf0('0x24')]['rawAttributes'],function(_0xb1a379){return{'name':_0xb1a379[_0xdaf0('0x25')],'type':_0xb1a379[_0xdaf0('0x26')]['key']};});_0xaf86cb[_0xdaf0('0x27')]=_[_0xdaf0('0x23')](_0x2fb05b,'name');_0xaf86cb[_0xdaf0('0x28')]=_[_0xdaf0('0x29')](_0x28e230['query']);_0xaf86cb[_0xdaf0('0x2a')]=_[_0xdaf0('0x2b')](_0xaf86cb[_0xdaf0('0x27')],_0xaf86cb[_0xdaf0('0x28')]);_0x5dbb6d[_0xdaf0('0x2c')]=_[_0xdaf0('0x2b')](_0xaf86cb[_0xdaf0('0x27')],qs[_0xdaf0('0x2d')](_0x28e230[_0xdaf0('0x28')][_0xdaf0('0x2d')]));_0x5dbb6d[_0xdaf0('0x2c')]=_0x5dbb6d['attributes']['length']?_0x5dbb6d['attributes']:_0xaf86cb[_0xdaf0('0x27')];if(!_0x28e230[_0xdaf0('0x28')]['hasOwnProperty'](_0xdaf0('0x2e'))){_0x5dbb6d[_0xdaf0('0x17')]=qs[_0xdaf0('0x17')](_0x28e230[_0xdaf0('0x28')][_0xdaf0('0x17')]);_0x5dbb6d[_0xdaf0('0x15')]=qs[_0xdaf0('0x15')](_0x28e230[_0xdaf0('0x28')][_0xdaf0('0x15')]);}_0x5dbb6d[_0xdaf0('0x2f')]=qs[_0xdaf0('0x30')](_0x28e230[_0xdaf0('0x28')][_0xdaf0('0x30')]);_0x5dbb6d[_0xdaf0('0x31')]=qs[_0xdaf0('0x2a')](_[_0xdaf0('0x32')](_0x28e230[_0xdaf0('0x28')],_0xaf86cb['filters']),_0x2fb05b);if(_0x28e230[_0xdaf0('0x28')][_0xdaf0('0x33')]){_0x5dbb6d[_0xdaf0('0x31')]=_[_0xdaf0('0x34')](_0x5dbb6d[_0xdaf0('0x31')],{'$or':_[_0xdaf0('0x23')](_0x2fb05b,function(_0x380912){if(_0x380912[_0xdaf0('0x26')]!=='VIRTUAL'){var _0x514d1c={};_0x514d1c[_0x380912[_0xdaf0('0x21')]]={'$like':'%'+_0x28e230[_0xdaf0('0x28')][_0xdaf0('0x33')]+'%'};return _0x514d1c;}})});}_0x5dbb6d=_['merge']({},_0x5dbb6d,_0x28e230[_0xdaf0('0x35')]);var _0x4c4d39={'where':_0x5dbb6d[_0xdaf0('0x31')]};return db[_0xdaf0('0x24')][_0xdaf0('0x18')](_0x4c4d39)[_0xdaf0('0x1d')](function(_0x161913){_0x2378ae[_0xdaf0('0x18')]=_0x161913;if(_0x28e230[_0xdaf0('0x28')]['includeAll']){_0x5dbb6d[_0xdaf0('0x36')]=[{'all':!![]}];}return db[_0xdaf0('0x24')]['findAll'](_0x5dbb6d);})[_0xdaf0('0x1d')](function(_0x5b5f3b){_0x2378ae['rows']=_0x5b5f3b;return _0x2378ae;})[_0xdaf0('0x1d')](respondWithFilteredResult(_0xd78a51,_0x5dbb6d))['catch'](handleError(_0xd78a51,null));};exports[_0xdaf0('0x37')]=function(_0x50f02e,_0x1fe74f){var _0x51cf56={'raw':!![],'where':{'id':_0x50f02e['params']['id']}},_0x23dfc1={};_0x23dfc1[_0xdaf0('0x27')]=_[_0xdaf0('0x29')](db[_0xdaf0('0x24')]['rawAttributes']);_0x23dfc1[_0xdaf0('0x28')]=_[_0xdaf0('0x29')](_0x50f02e[_0xdaf0('0x28')]);_0x23dfc1[_0xdaf0('0x2a')]=_[_0xdaf0('0x2b')](_0x23dfc1[_0xdaf0('0x27')],_0x23dfc1[_0xdaf0('0x28')]);_0x51cf56[_0xdaf0('0x2c')]=_['intersection'](_0x23dfc1[_0xdaf0('0x27')],qs[_0xdaf0('0x2d')](_0x50f02e['query'][_0xdaf0('0x2d')]));_0x51cf56[_0xdaf0('0x2c')]=_0x51cf56[_0xdaf0('0x2c')][_0xdaf0('0x38')]?_0x51cf56[_0xdaf0('0x2c')]:_0x23dfc1[_0xdaf0('0x27')];if(_0x50f02e[_0xdaf0('0x28')]['includeAll']){_0x51cf56[_0xdaf0('0x36')]=[{'all':!![]}];}_0x51cf56=_[_0xdaf0('0x34')]({},_0x51cf56,_0x50f02e['options']);return db['ChatQueueReport']['find'](_0x51cf56)[_0xdaf0('0x1d')](handleEntityNotFound(_0x1fe74f,null))[_0xdaf0('0x1d')](respondWithResult(_0x1fe74f,null))[_0xdaf0('0x39')](handleError(_0x1fe74f,null));};exports[_0xdaf0('0x3a')]=function(_0x1ea13a,_0x2e8736){return db[_0xdaf0('0x24')][_0xdaf0('0x3a')](_0x1ea13a[_0xdaf0('0x3b')],{})[_0xdaf0('0x1d')](respondWithResult(_0x2e8736,0xc9))[_0xdaf0('0x39')](handleError(_0x2e8736,null));};exports['update']=function(_0xb112b4,_0x44fd2a){if(_0xb112b4[_0xdaf0('0x3b')]['id']){delete _0xb112b4['body']['id'];}return db[_0xdaf0('0x24')][_0xdaf0('0x3c')]({'where':{'id':_0xb112b4['params']['id']}})[_0xdaf0('0x1d')](handleEntityNotFound(_0x44fd2a,null))[_0xdaf0('0x1d')](saveUpdates(_0xb112b4['body'],null))[_0xdaf0('0x1d')](respondWithResult(_0x44fd2a,null))[_0xdaf0('0x39')](handleError(_0x44fd2a,null));};exports[_0xdaf0('0x1e')]=function(_0x2438e0,_0x2e2696){return db['ChatQueueReport'][_0xdaf0('0x3c')]({'where':{'id':_0x2438e0[_0xdaf0('0x3d')]['id']}})[_0xdaf0('0x1d')](handleEntityNotFound(_0x2e2696,null))[_0xdaf0('0x1d')](removeEntity(_0x2e2696,null))[_0xdaf0('0x39')](handleError(_0x2e2696,null));};exports[_0xdaf0('0x3e')]=function(_0x50f2b6,_0x8dac49){return db[_0xdaf0('0x24')][_0xdaf0('0x3e')]()[_0xdaf0('0x1d')](respondWithResult(_0x8dac49,null))[_0xdaf0('0x39')](handleError(_0x8dac49,null));};
\ No newline at end of file
+var _0xe225=['length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','options','ChatQueueReport','includeAll','include','catch','show','params','find','create','body','rimraf','zip-dir','bluebird','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes'];(function(_0x4659b5,_0xd07142){var _0x2cd685=function(_0x89afc){while(--_0x89afc){_0x4659b5['push'](_0x4659b5['shift']());}};_0x2cd685(++_0xd07142);}(_0xe225,0x1bd));var _0x5e22=function(_0x191b2d,_0x15f3d9){_0x191b2d=_0x191b2d-0x0;var _0x364d36=_0xe225[_0x191b2d];return _0x364d36;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5e22('0x0'));var zipdir=require(_0x5e22('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5e22('0x2'));var Mustache=require('mustache');var util=require(_0x5e22('0x3'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5e22('0x4'));var fs=require('fs');var fs_extra=require(_0x5e22('0x5'));var _=require(_0x5e22('0x6'));var squel=require(_0x5e22('0x7'));var crypto=require(_0x5e22('0x8'));var jsforce=require(_0x5e22('0x9'));var deskjs=require(_0x5e22('0xa'));var toCsv=require(_0x5e22('0xb'));var querystring=require(_0x5e22('0xc'));var Papa=require(_0x5e22('0xd'));var Redis=require(_0x5e22('0xe'));var authService=require(_0x5e22('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x5e22('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e22('0x11'))(_0x5e22('0x12'));var utils=require(_0x5e22('0x13'));var config=require(_0x5e22('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x5e22('0x15'))['db'];function respondWithStatusCode(_0x5e8b51,_0x3f96be){_0x3f96be=_0x3f96be||0xcc;return function(_0x3dd24c){if(_0x3dd24c){return _0x5e8b51[_0x5e22('0x16')](_0x3f96be);}return _0x5e8b51[_0x5e22('0x17')](_0x3f96be)[_0x5e22('0x18')]();};}function respondWithResult(_0x598d29,_0x1eb276){_0x1eb276=_0x1eb276||0xc8;return function(_0x4795ae){if(_0x4795ae){return _0x598d29[_0x5e22('0x17')](_0x1eb276)[_0x5e22('0x19')](_0x4795ae);}};}function respondWithFilteredResult(_0x1e9eff,_0xbae23a){return function(_0x34de3d){if(_0x34de3d){var _0x32bce1=typeof _0xbae23a[_0x5e22('0x1a')]===_0x5e22('0x1b')&&typeof _0xbae23a[_0x5e22('0x1c')]===_0x5e22('0x1b');var _0x1c4b6c=_0x34de3d['count'];var _0x545723=_0x32bce1?0x0:_0xbae23a[_0x5e22('0x1a')];var _0x48c441=_0x32bce1?_0x34de3d[_0x5e22('0x1d')]:_0xbae23a[_0x5e22('0x1a')]+_0xbae23a[_0x5e22('0x1c')];var _0xe3ed1e;if(_0x48c441>=_0x1c4b6c){_0x48c441=_0x1c4b6c;_0xe3ed1e=0xc8;}else{_0xe3ed1e=0xce;}_0x1e9eff[_0x5e22('0x17')](_0xe3ed1e);return _0x1e9eff[_0x5e22('0x1e')](_0x5e22('0x1f'),_0x545723+'-'+_0x48c441+'/'+_0x1c4b6c)[_0x5e22('0x19')](_0x34de3d);}return null;};}function patchUpdates(_0x280988){return function(_0x26509c){try{jsonpatch['apply'](_0x26509c,_0x280988,!![]);}catch(_0x193a42){return BPromise[_0x5e22('0x20')](_0x193a42);}return _0x26509c[_0x5e22('0x21')]();};}function saveUpdates(_0x303f19,_0x1b5d41){return function(_0x310978){if(_0x310978){return _0x310978[_0x5e22('0x22')](_0x303f19)[_0x5e22('0x23')](function(_0x29f733){return _0x29f733;});}return null;};}function removeEntity(_0x495a17,_0x2a5411){return function(_0x5d0a07){if(_0x5d0a07){return _0x5d0a07[_0x5e22('0x24')]()[_0x5e22('0x23')](function(){_0x495a17[_0x5e22('0x17')](0xcc)[_0x5e22('0x18')]();});}};}function handleEntityNotFound(_0x1f0b7d,_0x3564d2){return function(_0x482825){if(!_0x482825){_0x1f0b7d[_0x5e22('0x16')](0x194);}return _0x482825;};}function handleError(_0x8c7950,_0x38b414){_0x38b414=_0x38b414||0x1f4;return function(_0xf7c5e6){logger[_0x5e22('0x25')](_0xf7c5e6[_0x5e22('0x26')]);if(_0xf7c5e6[_0x5e22('0x27')]){delete _0xf7c5e6['name'];}_0x8c7950['status'](_0x38b414)[_0x5e22('0x28')](_0xf7c5e6);};}exports[_0x5e22('0x29')]=function(_0x3c0561,_0x53d5d5){var _0x1a0bb7={},_0x5a4ad1={},_0x50d048={'count':0x0,'rows':[]};var _0x3bd85d=_[_0x5e22('0x2a')](db['ChatQueueReport'][_0x5e22('0x2b')],function(_0x537574){return{'name':_0x537574['fieldName'],'type':_0x537574['type'][_0x5e22('0x2c')]};});_0x5a4ad1[_0x5e22('0x2d')]=_[_0x5e22('0x2a')](_0x3bd85d,'name');_0x5a4ad1[_0x5e22('0x2e')]=_[_0x5e22('0x2f')](_0x3c0561[_0x5e22('0x2e')]);_0x5a4ad1[_0x5e22('0x30')]=_[_0x5e22('0x31')](_0x5a4ad1[_0x5e22('0x2d')],_0x5a4ad1[_0x5e22('0x2e')]);_0x1a0bb7['attributes']=_[_0x5e22('0x31')](_0x5a4ad1[_0x5e22('0x2d')],qs[_0x5e22('0x32')](_0x3c0561[_0x5e22('0x2e')][_0x5e22('0x32')]));_0x1a0bb7[_0x5e22('0x33')]=_0x1a0bb7[_0x5e22('0x33')][_0x5e22('0x34')]?_0x1a0bb7[_0x5e22('0x33')]:_0x5a4ad1['model'];if(!_0x3c0561[_0x5e22('0x2e')][_0x5e22('0x35')](_0x5e22('0x36'))){_0x1a0bb7[_0x5e22('0x1c')]=qs[_0x5e22('0x1c')](_0x3c0561[_0x5e22('0x2e')][_0x5e22('0x1c')]);_0x1a0bb7[_0x5e22('0x1a')]=qs[_0x5e22('0x1a')](_0x3c0561['query'][_0x5e22('0x1a')]);}_0x1a0bb7[_0x5e22('0x37')]=qs[_0x5e22('0x38')](_0x3c0561['query'][_0x5e22('0x38')]);_0x1a0bb7[_0x5e22('0x39')]=qs['filters'](_['pick'](_0x3c0561[_0x5e22('0x2e')],_0x5a4ad1[_0x5e22('0x30')]),_0x3bd85d);if(_0x3c0561[_0x5e22('0x2e')][_0x5e22('0x3a')]){_0x1a0bb7[_0x5e22('0x39')]=_[_0x5e22('0x3b')](_0x1a0bb7['where'],{'$or':_['map'](_0x3bd85d,function(_0x583ebd){if(_0x583ebd[_0x5e22('0x3c')]!=='VIRTUAL'){var _0x33b83a={};_0x33b83a[_0x583ebd[_0x5e22('0x27')]]={'$like':'%'+_0x3c0561['query'][_0x5e22('0x3a')]+'%'};return _0x33b83a;}})});}_0x1a0bb7=_['merge']({},_0x1a0bb7,_0x3c0561[_0x5e22('0x3d')]);var _0x21f509={'where':_0x1a0bb7['where']};return db[_0x5e22('0x3e')][_0x5e22('0x1d')](_0x21f509)[_0x5e22('0x23')](function(_0x30a88f){_0x50d048['count']=_0x30a88f;if(_0x3c0561['query'][_0x5e22('0x3f')]){_0x1a0bb7[_0x5e22('0x40')]=[{'all':!![]}];}return db[_0x5e22('0x3e')]['findAll'](_0x1a0bb7);})[_0x5e22('0x23')](function(_0x4feb13){_0x50d048['rows']=_0x4feb13;return _0x50d048;})['then'](respondWithFilteredResult(_0x53d5d5,_0x1a0bb7))[_0x5e22('0x41')](handleError(_0x53d5d5,null));};exports[_0x5e22('0x42')]=function(_0x16e361,_0x235b65){var _0x536d73={'raw':!![],'where':{'id':_0x16e361[_0x5e22('0x43')]['id']}},_0x59c399={};_0x59c399[_0x5e22('0x2d')]=_[_0x5e22('0x2f')](db['ChatQueueReport'][_0x5e22('0x2b')]);_0x59c399[_0x5e22('0x2e')]=_[_0x5e22('0x2f')](_0x16e361[_0x5e22('0x2e')]);_0x59c399['filters']=_[_0x5e22('0x31')](_0x59c399[_0x5e22('0x2d')],_0x59c399['query']);_0x536d73['attributes']=_[_0x5e22('0x31')](_0x59c399['model'],qs[_0x5e22('0x32')](_0x16e361['query'][_0x5e22('0x32')]));_0x536d73[_0x5e22('0x33')]=_0x536d73[_0x5e22('0x33')]['length']?_0x536d73[_0x5e22('0x33')]:_0x59c399['model'];if(_0x16e361[_0x5e22('0x2e')][_0x5e22('0x3f')]){_0x536d73['include']=[{'all':!![]}];}_0x536d73=_['merge']({},_0x536d73,_0x16e361[_0x5e22('0x3d')]);return db[_0x5e22('0x3e')][_0x5e22('0x44')](_0x536d73)['then'](handleEntityNotFound(_0x235b65,null))[_0x5e22('0x23')](respondWithResult(_0x235b65,null))[_0x5e22('0x41')](handleError(_0x235b65,null));};exports[_0x5e22('0x45')]=function(_0x23f854,_0x45ad69){return db[_0x5e22('0x3e')][_0x5e22('0x45')](_0x23f854['body'],{})[_0x5e22('0x23')](respondWithResult(_0x45ad69,0xc9))[_0x5e22('0x41')](handleError(_0x45ad69,null));};exports['update']=function(_0x3cb7de,_0x5e7a90){if(_0x3cb7de[_0x5e22('0x46')]['id']){delete _0x3cb7de[_0x5e22('0x46')]['id'];}return db['ChatQueueReport'][_0x5e22('0x44')]({'where':{'id':_0x3cb7de[_0x5e22('0x43')]['id']}})[_0x5e22('0x23')](handleEntityNotFound(_0x5e7a90,null))[_0x5e22('0x23')](saveUpdates(_0x3cb7de[_0x5e22('0x46')],null))[_0x5e22('0x23')](respondWithResult(_0x5e7a90,null))[_0x5e22('0x41')](handleError(_0x5e7a90,null));};exports[_0x5e22('0x24')]=function(_0xe75dc,_0xf755c9){return db['ChatQueueReport'][_0x5e22('0x44')]({'where':{'id':_0xe75dc[_0x5e22('0x43')]['id']}})[_0x5e22('0x23')](handleEntityNotFound(_0xf755c9,null))[_0x5e22('0x23')](removeEntity(_0xf755c9,null))[_0x5e22('0x41')](handleError(_0xf755c9,null));};exports['describe']=function(_0x3c1f59,_0x16c8b3){return db['ChatQueueReport']['describe']()[_0x5e22('0x23')](respondWithResult(_0x16c8b3,null))[_0x5e22('0x41')](handleError(_0x16c8b3,null));};
\ No newline at end of file
index e095fa0..586dce6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0x374f88,_0x1c20e8){var _0x569b79=function(_0x29fc96){while(--_0x29fc96){_0x374f88['push'](_0x374f88['shift']());}};_0x569b79(++_0x1c20e8);}(_0xbaf0,0x12a));var _0x0baf=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xbaf0[_0x19e35c];return _0x3e1fe8;};'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':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid','lodash','util'];(function(_0x5e465a,_0x3e0f32){var _0x52c7db=function(_0x2c9dea){while(--_0x2c9dea){_0x5e465a['push'](_0x5e465a['shift']());}};_0x52c7db(++_0x3e0f32);}(_0xe706,0xa3));var _0x6e70=function(_0x124331,_0x4a0e03){_0x124331=_0x124331-0x0;var _0x2f9514=_0xe706[_0x124331];return _0x2f9514;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 934dfea..d3baec9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ec8=['UpdateChatQueueReport','update','body','limit','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','ChatQueueReport,\x20%s,\x20%s','result','catch','CreateChatQueueReport','ChatQueueReport','options','raw'];(function(_0x34217f,_0x4954d9){var _0x533721=function(_0x5ea689){while(--_0x5ea689){_0x34217f['push'](_0x34217f['shift']());}};_0x533721(++_0x4954d9);}(_0x6ec8,0x18a));var _0x86ec=function(_0x3725ee,_0x543bd9){_0x3725ee=_0x3725ee-0x0;var _0x399c71=_0x6ec8[_0x3725ee];return _0x399c71;};'use strict';var _=require('lodash');var util=require(_0x86ec('0x0'));var moment=require('moment');var BPromise=require(_0x86ec('0x1'));var rs=require(_0x86ec('0x2'));var fs=require('fs');var Redis=require(_0x86ec('0x3'));var db=require(_0x86ec('0x4'))['db'];var utils=require(_0x86ec('0x5'));var logger=require(_0x86ec('0x6'))('rpc');var config=require(_0x86ec('0x7'));var jayson=require(_0x86ec('0x8'));var client=jayson[_0x86ec('0x9')][_0x86ec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4ad761,_0x5ee31f,_0x5adef5){return new BPromise(function(_0x447f94,_0x48c542){return client['request'](_0x4ad761,_0x5adef5)[_0x86ec('0xb')](function(_0x37ba88){logger[_0x86ec('0xc')]('ChatQueueReport,\x20%s,\x20%s',_0x5ee31f,_0x86ec('0xd'));logger[_0x86ec('0xe')](_0x86ec('0xf'),_0x5ee31f,_0x86ec('0xd'),JSON[_0x86ec('0x10')](_0x37ba88));if(_0x37ba88[_0x86ec('0x11')]){if(_0x37ba88[_0x86ec('0x11')]['code']===0x1f4){logger[_0x86ec('0x11')]('ChatQueueReport,\x20%s,\x20%s',_0x5ee31f,_0x37ba88[_0x86ec('0x11')][_0x86ec('0x12')]);return _0x48c542(_0x37ba88[_0x86ec('0x11')][_0x86ec('0x12')]);}logger[_0x86ec('0x11')](_0x86ec('0x13'),_0x5ee31f,_0x37ba88[_0x86ec('0x11')][_0x86ec('0x12')]);return _0x447f94(_0x37ba88[_0x86ec('0x11')][_0x86ec('0x12')]);}else{logger[_0x86ec('0xc')](_0x86ec('0x13'),_0x5ee31f,_0x86ec('0xd'));_0x447f94(_0x37ba88[_0x86ec('0x14')][_0x86ec('0x12')]);}})[_0x86ec('0x15')](function(_0x21855d){logger[_0x86ec('0x11')]('ChatQueueReport,\x20%s,\x20%s',_0x5ee31f,_0x21855d);_0x48c542(_0x21855d);});});}exports[_0x86ec('0x16')]=function(_0x3563a5){var _0x436289=this;return new Promise(function(_0x3b44b9,_0x234d76){return db[_0x86ec('0x17')]['create'](_0x3563a5['body'],{'raw':_0x3563a5['options']?_0x3563a5[_0x86ec('0x18')][_0x86ec('0x19')]===undefined?!![]:![]:!![]})[_0x86ec('0xb')](function(_0x16a6f7){logger[_0x86ec('0xc')]('CreateChatQueueReport',_0x3563a5);logger['debug']('CreateChatQueueReport',_0x3563a5,JSON['stringify'](_0x16a6f7));_0x3b44b9(_0x16a6f7);})[_0x86ec('0x15')](function(_0x15674c){logger[_0x86ec('0x11')](_0x86ec('0x16'),_0x15674c[_0x86ec('0x12')],_0x3563a5);_0x234d76(_0x436289[_0x86ec('0x11')](0x1f4,_0x15674c['message']));});});};exports[_0x86ec('0x1a')]=function(_0x1ac510){var _0x2d56f1=this;return new Promise(function(_0x48380e,_0x33d99b){return db[_0x86ec('0x17')][_0x86ec('0x1b')](_0x1ac510[_0x86ec('0x1c')],{'raw':_0x1ac510[_0x86ec('0x18')]?_0x1ac510[_0x86ec('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ac510[_0x86ec('0x18')]?_0x1ac510[_0x86ec('0x18')]['where']||null:null,'attributes':_0x1ac510[_0x86ec('0x18')]?_0x1ac510[_0x86ec('0x18')]['attributes']||null:null,'limit':_0x1ac510[_0x86ec('0x18')]?_0x1ac510[_0x86ec('0x18')][_0x86ec('0x1d')]||null:null})[_0x86ec('0xb')](function(_0x836c80){logger[_0x86ec('0xc')](_0x86ec('0x1a'),_0x1ac510);logger[_0x86ec('0xe')](_0x86ec('0x1a'),_0x1ac510,JSON[_0x86ec('0x10')](_0x836c80));_0x48380e(_0x836c80);})[_0x86ec('0x15')](function(_0x435849){logger[_0x86ec('0x11')](_0x86ec('0x1a'),_0x435849['message'],_0x1ac510);_0x33d99b(_0x2d56f1[_0x86ec('0x11')](0x1f4,_0x435849['message']));});});};
\ No newline at end of file
+var _0x4fd5=['http','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateChatQueueReport','create','options','raw','ChatQueueReport','update','attributes','limit','UpdateChatQueueReport','lodash','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x516be9,_0x3f4787){var _0x158bf0=function(_0x82f5b4){while(--_0x82f5b4){_0x516be9['push'](_0x516be9['shift']());}};_0x158bf0(++_0x3f4787);}(_0x4fd5,0x89));var _0x54fd=function(_0x1df6a4,_0x2b9751){_0x1df6a4=_0x1df6a4-0x0;var _0x2b6076=_0x4fd5[_0x1df6a4];return _0x2b6076;};'use strict';var _=require(_0x54fd('0x0'));var util=require(_0x54fd('0x1'));var moment=require(_0x54fd('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x54fd('0x3'))['db'];var utils=require(_0x54fd('0x4'));var logger=require('../../config/logger')(_0x54fd('0x5'));var config=require(_0x54fd('0x6'));var jayson=require(_0x54fd('0x7'));var client=jayson['client'][_0x54fd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x6bd35,_0x4b91c7,_0x4b0053){return new BPromise(function(_0x4c0274,_0xac5f66){return client['request'](_0x6bd35,_0x4b0053)[_0x54fd('0x9')](function(_0x214c9b){logger[_0x54fd('0xa')](_0x54fd('0xb'),_0x4b91c7,_0x54fd('0xc'));logger[_0x54fd('0xd')](_0x54fd('0xe'),_0x4b91c7,_0x54fd('0xc'),JSON[_0x54fd('0xf')](_0x214c9b));if(_0x214c9b[_0x54fd('0x10')]){if(_0x214c9b['error']['code']===0x1f4){logger[_0x54fd('0x10')](_0x54fd('0xb'),_0x4b91c7,_0x214c9b['error'][_0x54fd('0x11')]);return _0xac5f66(_0x214c9b['error']['message']);}logger[_0x54fd('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x4b91c7,_0x214c9b[_0x54fd('0x10')]['message']);return _0x4c0274(_0x214c9b['error']['message']);}else{logger[_0x54fd('0xa')]('ChatQueueReport,\x20%s,\x20%s',_0x4b91c7,_0x54fd('0xc'));_0x4c0274(_0x214c9b[_0x54fd('0x12')][_0x54fd('0x11')]);}})[_0x54fd('0x13')](function(_0x4b644f){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0x4b91c7,_0x4b644f);_0xac5f66(_0x4b644f);});});}exports[_0x54fd('0x14')]=function(_0x249b94){var _0x2fb22a=this;return new Promise(function(_0x1af7ef,_0x14ed9e){return db['ChatQueueReport'][_0x54fd('0x15')](_0x249b94['body'],{'raw':_0x249b94[_0x54fd('0x16')]?_0x249b94['options'][_0x54fd('0x17')]===undefined?!![]:![]:!![]})[_0x54fd('0x9')](function(_0x44f1d7){logger['info'](_0x54fd('0x14'),_0x249b94);logger['debug'](_0x54fd('0x14'),_0x249b94,JSON['stringify'](_0x44f1d7));_0x1af7ef(_0x44f1d7);})[_0x54fd('0x13')](function(_0x195ab6){logger[_0x54fd('0x10')](_0x54fd('0x14'),_0x195ab6['message'],_0x249b94);_0x14ed9e(_0x2fb22a['error'](0x1f4,_0x195ab6[_0x54fd('0x11')]));});});};exports['UpdateChatQueueReport']=function(_0x266de9){var _0x3c62c8=this;return new Promise(function(_0xe6904,_0x8e16af){return db[_0x54fd('0x18')][_0x54fd('0x19')](_0x266de9['body'],{'raw':_0x266de9[_0x54fd('0x16')]?_0x266de9['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x266de9[_0x54fd('0x16')]?_0x266de9[_0x54fd('0x16')]['where']||null:null,'attributes':_0x266de9[_0x54fd('0x16')]?_0x266de9[_0x54fd('0x16')][_0x54fd('0x1a')]||null:null,'limit':_0x266de9[_0x54fd('0x16')]?_0x266de9[_0x54fd('0x16')][_0x54fd('0x1b')]||null:null})[_0x54fd('0x9')](function(_0x40a0ea){logger['info'](_0x54fd('0x1c'),_0x266de9);logger[_0x54fd('0xd')](_0x54fd('0x1c'),_0x266de9,JSON['stringify'](_0x40a0ea));_0xe6904(_0x40a0ea);})['catch'](function(_0x2b6f3e){logger[_0x54fd('0x10')](_0x54fd('0x1c'),_0x2b6f3e[_0x54fd('0x11')],_0x266de9);_0x8e16af(_0x3c62c8[_0x54fd('0x10')](0x1f4,_0x2b6f3e['message']));});});};
\ No newline at end of file
index a58d3d1..ab72571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78af=['get','index','isAuthenticated','describe','/:id','show','post','update','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x78af,0x190));var _0xf78a=function(_0x41c381,_0x1176bd){_0x41c381=_0x41c381-0x0;var _0x427981=_0x78af[_0x41c381];return _0x427981;};'use strict';var multer=require(_0xf78a('0x0'));var util=require('util');var path=require(_0xf78a('0x1'));var timeout=require(_0xf78a('0x2'));var express=require(_0xf78a('0x3'));var router=express['Router']();var fs_extra=require(_0xf78a('0x4'));var auth=require(_0xf78a('0x5'));var interaction=require(_0xf78a('0x6'));var config=require(_0xf78a('0x7'));var controller=require('./chatQueueReport.controller');router[_0xf78a('0x8')]('/',auth['isAuthenticated'](),controller[_0xf78a('0x9')]);router[_0xf78a('0x8')]('/describe',auth[_0xf78a('0xa')](),controller[_0xf78a('0xb')]);router[_0xf78a('0x8')](_0xf78a('0xc'),auth[_0xf78a('0xa')](),controller[_0xf78a('0xd')]);router[_0xf78a('0xe')]('/',auth[_0xf78a('0xa')](),controller['create']);router['put'](_0xf78a('0xc'),auth[_0xf78a('0xa')](),controller[_0xf78a('0xf')]);router['delete'](_0xf78a('0xc'),auth[_0xf78a('0xa')](),controller['destroy']);module[_0xf78a('0x10')]=router;
\ No newline at end of file
+var _0x5215=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete','destroy','exports','multer','util','path'];(function(_0x2d2ccc,_0x30f2fe){var _0x54dc55=function(_0x378643){while(--_0x378643){_0x2d2ccc['push'](_0x2d2ccc['shift']());}};_0x54dc55(++_0x30f2fe);}(_0x5215,0xe4));var _0x5521=function(_0x177305,_0x23d11a){_0x177305=_0x177305-0x0;var _0x5e3fb5=_0x5215[_0x177305];return _0x5e3fb5;};'use strict';var multer=require(_0x5521('0x0'));var util=require(_0x5521('0x1'));var path=require(_0x5521('0x2'));var timeout=require(_0x5521('0x3'));var express=require(_0x5521('0x4'));var router=express['Router']();var fs_extra=require(_0x5521('0x5'));var auth=require(_0x5521('0x6'));var interaction=require(_0x5521('0x7'));var config=require(_0x5521('0x8'));var controller=require(_0x5521('0x9'));router['get']('/',auth[_0x5521('0xa')](),controller[_0x5521('0xb')]);router['get'](_0x5521('0xc'),auth['isAuthenticated'](),controller[_0x5521('0xd')]);router['get'](_0x5521('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x5521('0xf')]('/',auth['isAuthenticated'](),controller[_0x5521('0x10')]);router['put'](_0x5521('0xe'),auth[_0x5521('0xa')](),controller[_0x5521('0x11')]);router[_0x5521('0x12')](_0x5521('0xe'),auth[_0x5521('0xa')](),controller[_0x5521('0x13')]);module[_0x5521('0x14')]=router;
\ No newline at end of file
index 2cc3871..6e9ae8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x279b1a,_0x2bb6df){var _0x316364=function(_0x67247f){while(--_0x67247f){_0x279b1a['push'](_0x279b1a['shift']());}};_0x316364(++_0x2bb6df);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
+var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x5820ab,_0x574e4c){var _0x35d734=function(_0x237516){while(--_0x237516){_0x5820ab['push'](_0x5820ab['shift']());}};_0x35d734(++_0x574e4c);}(_0x00bb,0x1d8));var _0xb00b=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x00bb[_0x2bf141];return _0x48277b;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
index 1680675..83c3f56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd69=['reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','ChatTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','rows','catch','show','params','length','includeAll','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range'];(function(_0x4a8da6,_0x34605f){var _0x9b346b=function(_0x46d8a8){while(--_0x46d8a8){_0x4a8da6['push'](_0x4a8da6['shift']());}};_0x9b346b(++_0x34605f);}(_0xcd69,0x1a7));var _0x9cd6=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xcd69[_0x46e363];return _0x3fb059;};'use strict';var emlformat=require(_0x9cd6('0x0'));var rimraf=require(_0x9cd6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9cd6('0x2'));var rp=require(_0x9cd6('0x3'));var moment=require(_0x9cd6('0x4'));var BPromise=require(_0x9cd6('0x5'));var Mustache=require(_0x9cd6('0x6'));var util=require(_0x9cd6('0x7'));var path=require(_0x9cd6('0x8'));var sox=require(_0x9cd6('0x9'));var csv=require(_0x9cd6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9cd6('0xb'));var _=require(_0x9cd6('0xc'));var squel=require(_0x9cd6('0xd'));var crypto=require('crypto');var jsforce=require(_0x9cd6('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x9cd6('0xa'));var querystring=require(_0x9cd6('0xf'));var Papa=require(_0x9cd6('0x10'));var Redis=require(_0x9cd6('0x11'));var authService=require(_0x9cd6('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9cd6('0x13'));var logger=require(_0x9cd6('0x14'))(_0x9cd6('0x15'));var utils=require('../../config/utils');var config=require(_0x9cd6('0x16'));var licenseUtil=require(_0x9cd6('0x17'));var db=require(_0x9cd6('0x18'))['db'];function respondWithStatusCode(_0x4890b3,_0x5bed42){_0x5bed42=_0x5bed42||0xcc;return function(_0x2ce95a){if(_0x2ce95a){return _0x4890b3['sendStatus'](_0x5bed42);}return _0x4890b3[_0x9cd6('0x19')](_0x5bed42)[_0x9cd6('0x1a')]();};}function respondWithResult(_0x3e0ac9,_0xfae2fd){_0xfae2fd=_0xfae2fd||0xc8;return function(_0x4a35ef){if(_0x4a35ef){return _0x3e0ac9['status'](_0xfae2fd)[_0x9cd6('0x1b')](_0x4a35ef);}};}function respondWithFilteredResult(_0x4d1bb1,_0x3029d5){return function(_0x204c7b){if(_0x204c7b){var _0x305b2c=typeof _0x3029d5[_0x9cd6('0x1c')]===_0x9cd6('0x1d')&&typeof _0x3029d5[_0x9cd6('0x1e')]===_0x9cd6('0x1d');var _0x5a1b04=_0x204c7b[_0x9cd6('0x1f')];var _0x5729cf=_0x305b2c?0x0:_0x3029d5['offset'];var _0x42e007=_0x305b2c?_0x204c7b[_0x9cd6('0x1f')]:_0x3029d5[_0x9cd6('0x1c')]+_0x3029d5[_0x9cd6('0x1e')];var _0x1b861d;if(_0x42e007>=_0x5a1b04){_0x42e007=_0x5a1b04;_0x1b861d=0xc8;}else{_0x1b861d=0xce;}_0x4d1bb1[_0x9cd6('0x19')](_0x1b861d);return _0x4d1bb1['set'](_0x9cd6('0x20'),_0x5729cf+'-'+_0x42e007+'/'+_0x5a1b04)[_0x9cd6('0x1b')](_0x204c7b);}return null;};}function patchUpdates(_0x57fb4d){return function(_0x21b4dc){try{jsonpatch['apply'](_0x21b4dc,_0x57fb4d,!![]);}catch(_0x25639b){return BPromise[_0x9cd6('0x21')](_0x25639b);}return _0x21b4dc[_0x9cd6('0x22')]();};}function saveUpdates(_0x2d89ae,_0x50bc6b){return function(_0x496dbd){if(_0x496dbd){return _0x496dbd[_0x9cd6('0x23')](_0x2d89ae)[_0x9cd6('0x24')](function(_0x48f344){return _0x48f344;});}return null;};}function removeEntity(_0x320192,_0x4c1b00){return function(_0x178989){if(_0x178989){return _0x178989[_0x9cd6('0x25')]()[_0x9cd6('0x24')](function(){_0x320192[_0x9cd6('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x193c59,_0x158bb6){return function(_0x1553df){if(!_0x1553df){_0x193c59[_0x9cd6('0x26')](0x194);}return _0x1553df;};}function handleError(_0x16beee,_0x55a7b2){_0x55a7b2=_0x55a7b2||0x1f4;return function(_0x2c4dd4){logger['error'](_0x2c4dd4[_0x9cd6('0x27')]);if(_0x2c4dd4[_0x9cd6('0x28')]){delete _0x2c4dd4[_0x9cd6('0x28')];}_0x16beee[_0x9cd6('0x19')](_0x55a7b2)[_0x9cd6('0x29')](_0x2c4dd4);};}exports[_0x9cd6('0x2a')]=function(_0x194fc3,_0x43648c){var _0x180838={},_0x1900df={},_0x49da5b={'count':0x0,'rows':[]};var _0x346d68=_[_0x9cd6('0x2b')](db[_0x9cd6('0x2c')][_0x9cd6('0x2d')],function(_0x5ce16d){return{'name':_0x5ce16d['fieldName'],'type':_0x5ce16d[_0x9cd6('0x2e')][_0x9cd6('0x2f')]};});_0x1900df[_0x9cd6('0x30')]=_[_0x9cd6('0x2b')](_0x346d68,_0x9cd6('0x28'));_0x1900df[_0x9cd6('0x31')]=_[_0x9cd6('0x32')](_0x194fc3[_0x9cd6('0x31')]);_0x1900df[_0x9cd6('0x33')]=_[_0x9cd6('0x34')](_0x1900df['model'],_0x1900df[_0x9cd6('0x31')]);_0x180838['attributes']=_['intersection'](_0x1900df[_0x9cd6('0x30')],qs[_0x9cd6('0x35')](_0x194fc3[_0x9cd6('0x31')][_0x9cd6('0x35')]));_0x180838['attributes']=_0x180838['attributes']['length']?_0x180838[_0x9cd6('0x36')]:_0x1900df[_0x9cd6('0x30')];if(!_0x194fc3[_0x9cd6('0x31')][_0x9cd6('0x37')](_0x9cd6('0x38'))){_0x180838[_0x9cd6('0x1e')]=qs['limit'](_0x194fc3[_0x9cd6('0x31')][_0x9cd6('0x1e')]);_0x180838[_0x9cd6('0x1c')]=qs[_0x9cd6('0x1c')](_0x194fc3[_0x9cd6('0x31')]['offset']);}_0x180838[_0x9cd6('0x39')]=qs[_0x9cd6('0x3a')](_0x194fc3[_0x9cd6('0x31')][_0x9cd6('0x3a')]);_0x180838[_0x9cd6('0x3b')]=qs[_0x9cd6('0x33')](_[_0x9cd6('0x3c')](_0x194fc3['query'],_0x1900df[_0x9cd6('0x33')]),_0x346d68);if(_0x194fc3[_0x9cd6('0x31')][_0x9cd6('0x3d')]){_0x180838['where']=_['merge'](_0x180838[_0x9cd6('0x3b')],{'$or':_['map'](_0x346d68,function(_0x26a07d){if(_0x26a07d[_0x9cd6('0x2e')]!==_0x9cd6('0x3e')){var _0x2fbab2={};_0x2fbab2[_0x26a07d[_0x9cd6('0x28')]]={'$like':'%'+_0x194fc3[_0x9cd6('0x31')]['filter']+'%'};return _0x2fbab2;}})});}_0x180838=_[_0x9cd6('0x3f')]({},_0x180838,_0x194fc3[_0x9cd6('0x40')]);var _0x4658cb={'where':_0x180838[_0x9cd6('0x3b')]};return db[_0x9cd6('0x2c')][_0x9cd6('0x1f')](_0x4658cb)[_0x9cd6('0x24')](function(_0x1c6976){_0x49da5b[_0x9cd6('0x1f')]=_0x1c6976;if(_0x194fc3[_0x9cd6('0x31')]['includeAll']){_0x180838[_0x9cd6('0x41')]=[{'all':!![]}];}return db[_0x9cd6('0x2c')]['findAll'](_0x180838);})['then'](function(_0x8ee273){_0x49da5b[_0x9cd6('0x42')]=_0x8ee273;return _0x49da5b;})[_0x9cd6('0x24')](respondWithFilteredResult(_0x43648c,_0x180838))[_0x9cd6('0x43')](handleError(_0x43648c,null));};exports[_0x9cd6('0x44')]=function(_0x396889,_0x28dfe4){var _0x1bece4={'raw':!![],'where':{'id':_0x396889[_0x9cd6('0x45')]['id']}},_0x1e22ce={};_0x1e22ce['model']=_[_0x9cd6('0x32')](db[_0x9cd6('0x2c')][_0x9cd6('0x2d')]);_0x1e22ce[_0x9cd6('0x31')]=_['keys'](_0x396889[_0x9cd6('0x31')]);_0x1e22ce[_0x9cd6('0x33')]=_[_0x9cd6('0x34')](_0x1e22ce[_0x9cd6('0x30')],_0x1e22ce[_0x9cd6('0x31')]);_0x1bece4['attributes']=_[_0x9cd6('0x34')](_0x1e22ce[_0x9cd6('0x30')],qs[_0x9cd6('0x35')](_0x396889[_0x9cd6('0x31')][_0x9cd6('0x35')]));_0x1bece4[_0x9cd6('0x36')]=_0x1bece4[_0x9cd6('0x36')][_0x9cd6('0x46')]?_0x1bece4[_0x9cd6('0x36')]:_0x1e22ce[_0x9cd6('0x30')];if(_0x396889[_0x9cd6('0x31')][_0x9cd6('0x47')]){_0x1bece4['include']=[{'all':!![]}];}_0x1bece4=_[_0x9cd6('0x3f')]({},_0x1bece4,_0x396889[_0x9cd6('0x40')]);return db[_0x9cd6('0x2c')][_0x9cd6('0x48')](_0x1bece4)[_0x9cd6('0x24')](handleEntityNotFound(_0x28dfe4,null))[_0x9cd6('0x24')](respondWithResult(_0x28dfe4,null))[_0x9cd6('0x43')](handleError(_0x28dfe4,null));};exports['create']=function(_0x2a883f,_0x45de50){return db[_0x9cd6('0x2c')][_0x9cd6('0x49')](_0x2a883f[_0x9cd6('0x4a')],{})['then'](respondWithResult(_0x45de50,0xc9))[_0x9cd6('0x43')](handleError(_0x45de50,null));};exports[_0x9cd6('0x23')]=function(_0x38b68c,_0x3e5777){if(_0x38b68c[_0x9cd6('0x4a')]['id']){delete _0x38b68c[_0x9cd6('0x4a')]['id'];}return db[_0x9cd6('0x2c')][_0x9cd6('0x48')]({'where':{'id':_0x38b68c[_0x9cd6('0x45')]['id']}})[_0x9cd6('0x24')](handleEntityNotFound(_0x3e5777,null))[_0x9cd6('0x24')](saveUpdates(_0x38b68c[_0x9cd6('0x4a')],null))[_0x9cd6('0x24')](respondWithResult(_0x3e5777,null))[_0x9cd6('0x43')](handleError(_0x3e5777,null));};exports[_0x9cd6('0x25')]=function(_0x2727d9,_0x3f4b8c){return db['ChatTransferReport']['find']({'where':{'id':_0x2727d9[_0x9cd6('0x45')]['id']}})[_0x9cd6('0x24')](handleEntityNotFound(_0x3f4b8c,null))[_0x9cd6('0x24')](removeEntity(_0x3f4b8c,null))[_0x9cd6('0x43')](handleError(_0x3f4b8c,null));};exports['describe']=function(_0x212dfe,_0x4e43ed){return db[_0x9cd6('0x2c')][_0x9cd6('0x4b')]()['then'](respondWithResult(_0x4e43ed,null))[_0x9cd6('0x43')](handleError(_0x4e43ed,null));};
\ No newline at end of file
+var _0x2f1e=['query','filters','model','attributes','intersection','fields','hasOwnProperty','order','sort','pick','filter','where','type','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','length','include','merge','catch','create','body','find','describe','zip-dir','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','error','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','key'];(function(_0x338a33,_0x4c90ac){var _0x46c9ea=function(_0xea8ff0){while(--_0xea8ff0){_0x338a33['push'](_0x338a33['shift']());}};_0x46c9ea(++_0x4c90ac);}(_0x2f1e,0x1d3));var _0xe2f1=function(_0xa9071b,_0x45e375){_0xa9071b=_0xa9071b-0x0;var _0x32d5c3=_0x2f1e[_0xa9071b];return _0x32d5c3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe2f1('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe2f1('0x1'));var moment=require('moment');var BPromise=require(_0xe2f1('0x2'));var Mustache=require(_0xe2f1('0x3'));var util=require(_0xe2f1('0x4'));var path=require(_0xe2f1('0x5'));var sox=require(_0xe2f1('0x6'));var csv=require('to-csv');var ejs=require(_0xe2f1('0x7'));var fs=require('fs');var fs_extra=require(_0xe2f1('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe2f1('0x9'));var toCsv=require(_0xe2f1('0xa'));var querystring=require(_0xe2f1('0xb'));var Papa=require(_0xe2f1('0xc'));var Redis=require('ioredis');var authService=require(_0xe2f1('0xd'));var qs=require(_0xe2f1('0xe'));var as=require(_0xe2f1('0xf'));var hardwareService=require(_0xe2f1('0x10'));var logger=require('../../config/logger')(_0xe2f1('0x11'));var utils=require(_0xe2f1('0x12'));var config=require(_0xe2f1('0x13'));var licenseUtil=require(_0xe2f1('0x14'));var db=require(_0xe2f1('0x15'))['db'];function respondWithStatusCode(_0xc804ac,_0x2ee267){_0x2ee267=_0x2ee267||0xcc;return function(_0x4a7d01){if(_0x4a7d01){return _0xc804ac[_0xe2f1('0x16')](_0x2ee267);}return _0xc804ac['status'](_0x2ee267)['end']();};}function respondWithResult(_0x4b45e8,_0x58eea3){_0x58eea3=_0x58eea3||0xc8;return function(_0x43f6ad){if(_0x43f6ad){return _0x4b45e8[_0xe2f1('0x17')](_0x58eea3)[_0xe2f1('0x18')](_0x43f6ad);}};}function respondWithFilteredResult(_0x1014bd,_0x58c086){return function(_0x5dd7ab){if(_0x5dd7ab){var _0xe37516=typeof _0x58c086[_0xe2f1('0x19')]===_0xe2f1('0x1a')&&typeof _0x58c086[_0xe2f1('0x1b')]==='undefined';var _0x2c85cf=_0x5dd7ab[_0xe2f1('0x1c')];var _0x5c1b60=_0xe37516?0x0:_0x58c086['offset'];var _0x382061=_0xe37516?_0x5dd7ab[_0xe2f1('0x1c')]:_0x58c086[_0xe2f1('0x19')]+_0x58c086['limit'];var _0x1e8683;if(_0x382061>=_0x2c85cf){_0x382061=_0x2c85cf;_0x1e8683=0xc8;}else{_0x1e8683=0xce;}_0x1014bd['status'](_0x1e8683);return _0x1014bd[_0xe2f1('0x1d')](_0xe2f1('0x1e'),_0x5c1b60+'-'+_0x382061+'/'+_0x2c85cf)[_0xe2f1('0x18')](_0x5dd7ab);}return null;};}function patchUpdates(_0x1a1e37){return function(_0xd82ee){try{jsonpatch[_0xe2f1('0x1f')](_0xd82ee,_0x1a1e37,!![]);}catch(_0x29bffb){return BPromise[_0xe2f1('0x20')](_0x29bffb);}return _0xd82ee['save']();};}function saveUpdates(_0x4f2bf5,_0x6e97c1){return function(_0x15c95b){if(_0x15c95b){return _0x15c95b['update'](_0x4f2bf5)[_0xe2f1('0x21')](function(_0x1a70d4){return _0x1a70d4;});}return null;};}function removeEntity(_0x160cd7,_0x1e5cfe){return function(_0x256d5c){if(_0x256d5c){return _0x256d5c[_0xe2f1('0x22')]()['then'](function(){_0x160cd7[_0xe2f1('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ac3c7,_0x181834){return function(_0xa7aa98){if(!_0xa7aa98){_0x4ac3c7[_0xe2f1('0x16')](0x194);}return _0xa7aa98;};}function handleError(_0x236647,_0x405e85){_0x405e85=_0x405e85||0x1f4;return function(_0x2051c1){logger[_0xe2f1('0x23')](_0x2051c1['stack']);if(_0x2051c1['name']){delete _0x2051c1[_0xe2f1('0x24')];}_0x236647[_0xe2f1('0x17')](_0x405e85)[_0xe2f1('0x25')](_0x2051c1);};}exports[_0xe2f1('0x26')]=function(_0x6952aa,_0x154842){var _0x351344={},_0x2ccf1a={},_0x428ba6={'count':0x0,'rows':[]};var _0x29b9c1=_[_0xe2f1('0x27')](db[_0xe2f1('0x28')][_0xe2f1('0x29')],function(_0x549cc8){return{'name':_0x549cc8[_0xe2f1('0x2a')],'type':_0x549cc8['type'][_0xe2f1('0x2b')]};});_0x2ccf1a['model']=_[_0xe2f1('0x27')](_0x29b9c1,_0xe2f1('0x24'));_0x2ccf1a[_0xe2f1('0x2c')]=_['keys'](_0x6952aa['query']);_0x2ccf1a[_0xe2f1('0x2d')]=_['intersection'](_0x2ccf1a[_0xe2f1('0x2e')],_0x2ccf1a[_0xe2f1('0x2c')]);_0x351344[_0xe2f1('0x2f')]=_[_0xe2f1('0x30')](_0x2ccf1a[_0xe2f1('0x2e')],qs[_0xe2f1('0x31')](_0x6952aa[_0xe2f1('0x2c')][_0xe2f1('0x31')]));_0x351344[_0xe2f1('0x2f')]=_0x351344['attributes']['length']?_0x351344['attributes']:_0x2ccf1a['model'];if(!_0x6952aa[_0xe2f1('0x2c')][_0xe2f1('0x32')]('nolimit')){_0x351344[_0xe2f1('0x1b')]=qs[_0xe2f1('0x1b')](_0x6952aa[_0xe2f1('0x2c')][_0xe2f1('0x1b')]);_0x351344[_0xe2f1('0x19')]=qs[_0xe2f1('0x19')](_0x6952aa[_0xe2f1('0x2c')][_0xe2f1('0x19')]);}_0x351344[_0xe2f1('0x33')]=qs[_0xe2f1('0x34')](_0x6952aa['query'][_0xe2f1('0x34')]);_0x351344['where']=qs[_0xe2f1('0x2d')](_[_0xe2f1('0x35')](_0x6952aa[_0xe2f1('0x2c')],_0x2ccf1a['filters']),_0x29b9c1);if(_0x6952aa['query'][_0xe2f1('0x36')]){_0x351344[_0xe2f1('0x37')]=_['merge'](_0x351344['where'],{'$or':_[_0xe2f1('0x27')](_0x29b9c1,function(_0x1e3e9e){if(_0x1e3e9e[_0xe2f1('0x38')]!==_0xe2f1('0x39')){var _0x266683={};_0x266683[_0x1e3e9e[_0xe2f1('0x24')]]={'$like':'%'+_0x6952aa[_0xe2f1('0x2c')][_0xe2f1('0x36')]+'%'};return _0x266683;}})});}_0x351344=_['merge']({},_0x351344,_0x6952aa[_0xe2f1('0x3a')]);var _0x33a488={'where':_0x351344[_0xe2f1('0x37')]};return db[_0xe2f1('0x28')][_0xe2f1('0x1c')](_0x33a488)['then'](function(_0x583c78){_0x428ba6['count']=_0x583c78;if(_0x6952aa['query'][_0xe2f1('0x3b')]){_0x351344['include']=[{'all':!![]}];}return db['ChatTransferReport'][_0xe2f1('0x3c')](_0x351344);})[_0xe2f1('0x21')](function(_0x2f15ec){_0x428ba6[_0xe2f1('0x3d')]=_0x2f15ec;return _0x428ba6;})[_0xe2f1('0x21')](respondWithFilteredResult(_0x154842,_0x351344))['catch'](handleError(_0x154842,null));};exports[_0xe2f1('0x3e')]=function(_0x5ad2d7,_0x1a92ca){var _0x3f720f={'raw':!![],'where':{'id':_0x5ad2d7[_0xe2f1('0x3f')]['id']}},_0x23efa1={};_0x23efa1[_0xe2f1('0x2e')]=_[_0xe2f1('0x40')](db[_0xe2f1('0x28')][_0xe2f1('0x29')]);_0x23efa1[_0xe2f1('0x2c')]=_['keys'](_0x5ad2d7['query']);_0x23efa1[_0xe2f1('0x2d')]=_[_0xe2f1('0x30')](_0x23efa1[_0xe2f1('0x2e')],_0x23efa1[_0xe2f1('0x2c')]);_0x3f720f[_0xe2f1('0x2f')]=_[_0xe2f1('0x30')](_0x23efa1[_0xe2f1('0x2e')],qs['fields'](_0x5ad2d7[_0xe2f1('0x2c')]['fields']));_0x3f720f[_0xe2f1('0x2f')]=_0x3f720f[_0xe2f1('0x2f')][_0xe2f1('0x41')]?_0x3f720f[_0xe2f1('0x2f')]:_0x23efa1['model'];if(_0x5ad2d7[_0xe2f1('0x2c')][_0xe2f1('0x3b')]){_0x3f720f[_0xe2f1('0x42')]=[{'all':!![]}];}_0x3f720f=_[_0xe2f1('0x43')]({},_0x3f720f,_0x5ad2d7['options']);return db[_0xe2f1('0x28')]['find'](_0x3f720f)[_0xe2f1('0x21')](handleEntityNotFound(_0x1a92ca,null))[_0xe2f1('0x21')](respondWithResult(_0x1a92ca,null))[_0xe2f1('0x44')](handleError(_0x1a92ca,null));};exports[_0xe2f1('0x45')]=function(_0x34dd37,_0x3079ba){return db[_0xe2f1('0x28')][_0xe2f1('0x45')](_0x34dd37[_0xe2f1('0x46')],{})['then'](respondWithResult(_0x3079ba,0xc9))[_0xe2f1('0x44')](handleError(_0x3079ba,null));};exports['update']=function(_0x308f3d,_0x4a7478){if(_0x308f3d[_0xe2f1('0x46')]['id']){delete _0x308f3d[_0xe2f1('0x46')]['id'];}return db[_0xe2f1('0x28')][_0xe2f1('0x47')]({'where':{'id':_0x308f3d[_0xe2f1('0x3f')]['id']}})[_0xe2f1('0x21')](handleEntityNotFound(_0x4a7478,null))[_0xe2f1('0x21')](saveUpdates(_0x308f3d[_0xe2f1('0x46')],null))[_0xe2f1('0x21')](respondWithResult(_0x4a7478,null))['catch'](handleError(_0x4a7478,null));};exports[_0xe2f1('0x22')]=function(_0x5e380d,_0x546285){return db[_0xe2f1('0x28')][_0xe2f1('0x47')]({'where':{'id':_0x5e380d[_0xe2f1('0x3f')]['id']}})['then'](handleEntityNotFound(_0x546285,null))['then'](removeEntity(_0x546285,null))[_0xe2f1('0x44')](handleError(_0x546285,null));};exports['describe']=function(_0x106327,_0x2ce8f5){return db[_0xe2f1('0x28')][_0xe2f1('0x48')]()[_0xe2f1('0x21')](respondWithResult(_0x2ce8f5,null))[_0xe2f1('0x44')](handleError(_0x2ce8f5,null));};
\ No newline at end of file
index 8c4273b..c7a1bb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e12=['moment','bluebird','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','api'];(function(_0x222cb5,_0x936e92){var _0x3fedf2=function(_0xe7433a){while(--_0xe7433a){_0x222cb5['push'](_0x222cb5['shift']());}};_0x3fedf2(++_0x936e92);}(_0x0e12,0x1ae));var _0x20e1=function(_0x352d28,_0x444033){_0x352d28=_0x352d28-0x0;var _0x387d7e=_0x0e12[_0x352d28];return _0x387d7e;};'use strict';var _=require(_0x20e1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x20e1('0x1'));var moment=require(_0x20e1('0x2'));var BPromise=require(_0x20e1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x20e1('0x4'));var config=require(_0x20e1('0x5'));var attributes=require(_0x20e1('0x6'));module[_0x20e1('0x7')]=function(_0x45a0e8,_0x403c63){return _0x45a0e8[_0x20e1('0x8')](_0x20e1('0x9'),attributes,{'tableName':_0x20e1('0xa'),'paranoid':![],'indexes':[{'name':_0x20e1('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc7f2=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','report_chat_transfer'];(function(_0x4ebd89,_0x52a101){var _0x187f97=function(_0x5a7e17){while(--_0x5a7e17){_0x4ebd89['push'](_0x4ebd89['shift']());}};_0x187f97(++_0x52a101);}(_0xc7f2,0x153));var _0x2c7f=function(_0x444d90,_0x11c679){_0x444d90=_0x444d90-0x0;var _0x3a8344=_0xc7f2[_0x444d90];return _0x3a8344;};'use strict';var _=require(_0x2c7f('0x0'));var util=require(_0x2c7f('0x1'));var logger=require(_0x2c7f('0x2'))(_0x2c7f('0x3'));var moment=require(_0x2c7f('0x4'));var BPromise=require(_0x2c7f('0x5'));var rp=require(_0x2c7f('0x6'));var fs=require('fs');var path=require(_0x2c7f('0x7'));var rimraf=require(_0x2c7f('0x8'));var config=require('../../config/environment');var attributes=require('./chatTransferReport.attributes');module[_0x2c7f('0x9')]=function(_0x582d92,_0x9d6da){return _0x582d92[_0x2c7f('0xa')]('ChatTransferReport',attributes,{'tableName':_0x2c7f('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x2c7f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index a54627b..84dc6d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0d2=['ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0xc0d2,0x1b5));var _0x2c0d=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xc0d2[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x2c0d('0x0'));var util=require(_0x2c0d('0x1'));var moment=require(_0x2c0d('0x2'));var BPromise=require(_0x2c0d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2c0d('0x4'));var db=require(_0x2c0d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2c0d('0x6'))(_0x2c0d('0x7'));var config=require('../../config/environment');var jayson=require(_0x2c0d('0x8'));var client=jayson['client'][_0x2c0d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1ed708,_0x4a9ccc,_0x5b25aa){return new BPromise(function(_0x3467e3,_0x200fa3){return client['request'](_0x1ed708,_0x5b25aa)[_0x2c0d('0xa')](function(_0x589715){logger[_0x2c0d('0xb')](_0x2c0d('0xc'),_0x4a9ccc,_0x2c0d('0xd'));logger[_0x2c0d('0xe')](_0x2c0d('0xf'),_0x4a9ccc,_0x2c0d('0xd'),JSON['stringify'](_0x589715));if(_0x589715[_0x2c0d('0x10')]){if(_0x589715[_0x2c0d('0x10')][_0x2c0d('0x11')]===0x1f4){logger[_0x2c0d('0x10')](_0x2c0d('0xc'),_0x4a9ccc,_0x589715['error'][_0x2c0d('0x12')]);return _0x200fa3(_0x589715[_0x2c0d('0x10')][_0x2c0d('0x12')]);}logger[_0x2c0d('0x10')]('ChatTransferReport,\x20%s,\x20%s',_0x4a9ccc,_0x589715[_0x2c0d('0x10')][_0x2c0d('0x12')]);return _0x3467e3(_0x589715[_0x2c0d('0x10')][_0x2c0d('0x12')]);}else{logger['info'](_0x2c0d('0xc'),_0x4a9ccc,_0x2c0d('0xd'));_0x3467e3(_0x589715[_0x2c0d('0x13')]['message']);}})[_0x2c0d('0x14')](function(_0x124329){logger[_0x2c0d('0x10')](_0x2c0d('0xc'),_0x4a9ccc,_0x124329);_0x200fa3(_0x124329);});});}
\ No newline at end of file
+var _0x3bc5=['ChatTransferReport,\x20%s,\x20%s','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x5cb820,_0x16904e){var _0x309374=function(_0x5be27c){while(--_0x5be27c){_0x5cb820['push'](_0x5cb820['shift']());}};_0x309374(++_0x16904e);}(_0x3bc5,0x163));var _0x53bc=function(_0x126e25,_0x4f26f3){_0x126e25=_0x126e25-0x0;var _0x180fea=_0x3bc5[_0x126e25];return _0x180fea;};'use strict';var _=require('lodash');var util=require(_0x53bc('0x0'));var moment=require(_0x53bc('0x1'));var BPromise=require('bluebird');var rs=require(_0x53bc('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x53bc('0x3'))['db'];var utils=require(_0x53bc('0x4'));var logger=require(_0x53bc('0x5'))(_0x53bc('0x6'));var config=require(_0x53bc('0x7'));var jayson=require(_0x53bc('0x8'));var client=jayson[_0x53bc('0x9')][_0x53bc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11414c,_0x5694d2,_0x4cb634){return new BPromise(function(_0x223bf0,_0x5e003b){return client[_0x53bc('0xb')](_0x11414c,_0x4cb634)[_0x53bc('0xc')](function(_0xbd1545){logger['info'](_0x53bc('0xd'),_0x5694d2,'request\x20sent');logger[_0x53bc('0xe')](_0x53bc('0xf'),_0x5694d2,_0x53bc('0x10'),JSON[_0x53bc('0x11')](_0xbd1545));if(_0xbd1545[_0x53bc('0x12')]){if(_0xbd1545[_0x53bc('0x12')][_0x53bc('0x13')]===0x1f4){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x5694d2,_0xbd1545[_0x53bc('0x12')]['message']);return _0x5e003b(_0xbd1545[_0x53bc('0x12')][_0x53bc('0x14')]);}logger[_0x53bc('0x12')](_0x53bc('0xd'),_0x5694d2,_0xbd1545[_0x53bc('0x12')][_0x53bc('0x14')]);return _0x223bf0(_0xbd1545[_0x53bc('0x12')]['message']);}else{logger[_0x53bc('0x15')](_0x53bc('0xd'),_0x5694d2,_0x53bc('0x10'));_0x223bf0(_0xbd1545[_0x53bc('0x16')]['message']);}})['catch'](function(_0x57d82e){logger[_0x53bc('0x12')](_0x53bc('0xd'),_0x5694d2,_0x57d82e);_0x5e003b(_0x57d82e);});});}
\ No newline at end of file
index 952c392..968d10e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf645=['index','/describe','get','show','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated'];(function(_0x119280,_0x439c3e){var _0x481797=function(_0x4265cb){while(--_0x4265cb){_0x119280['push'](_0x119280['shift']());}};_0x481797(++_0x439c3e);}(_0xf645,0x14c));var _0x5f64=function(_0x18de6c,_0x4cb805){_0x18de6c=_0x18de6c-0x0;var _0x54b14d=_0xf645[_0x18de6c];return _0x54b14d;};'use strict';var multer=require('multer');var util=require(_0x5f64('0x0'));var path=require(_0x5f64('0x1'));var timeout=require(_0x5f64('0x2'));var express=require(_0x5f64('0x3'));var router=express['Router']();var fs_extra=require(_0x5f64('0x4'));var auth=require(_0x5f64('0x5'));var interaction=require(_0x5f64('0x6'));var config=require('../../config/environment');var controller=require('./chatTransferReport.controller');router['get']('/',auth[_0x5f64('0x7')](),controller[_0x5f64('0x8')]);router['get'](_0x5f64('0x9'),auth[_0x5f64('0x7')](),controller['describe']);router[_0x5f64('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x5f64('0xb')]);router[_0x5f64('0xc')]('/',auth[_0x5f64('0x7')](),controller[_0x5f64('0xd')]);router[_0x5f64('0xe')](_0x5f64('0xf'),auth[_0x5f64('0x7')](),controller[_0x5f64('0x10')]);router[_0x5f64('0x11')](_0x5f64('0xf'),auth[_0x5f64('0x7')](),controller[_0x5f64('0x12')]);module[_0x5f64('0x13')]=router;
\ No newline at end of file
+var _0x971c=['./chatTransferReport.controller','index','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x1a72f3,_0x217011){var _0x57ef47=function(_0x20123d){while(--_0x20123d){_0x1a72f3['push'](_0x1a72f3['shift']());}};_0x57ef47(++_0x217011);}(_0x971c,0xbf));var _0xc971=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x971c[_0x4fc9e6];return _0x551d28;};'use strict';var multer=require(_0xc971('0x0'));var util=require('util');var path=require(_0xc971('0x1'));var timeout=require(_0xc971('0x2'));var express=require('express');var router=express[_0xc971('0x3')]();var fs_extra=require(_0xc971('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc971('0x5'));var config=require(_0xc971('0x6'));var controller=require(_0xc971('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xc971('0x8')]);router[_0xc971('0x9')](_0xc971('0xa'),auth[_0xc971('0xb')](),controller[_0xc971('0xc')]);router[_0xc971('0x9')](_0xc971('0xd'),auth['isAuthenticated'](),controller[_0xc971('0xe')]);router[_0xc971('0xf')]('/',auth[_0xc971('0xb')](),controller[_0xc971('0x10')]);router[_0xc971('0x11')](_0xc971('0xd'),auth[_0xc971('0xb')](),controller[_0xc971('0x12')]);router[_0xc971('0x13')](_0xc971('0xd'),auth[_0xc971('0xb')](),controller[_0xc971('0x14')]);module[_0xc971('0x15')]=router;
\ No newline at end of file
index 582b636..584191d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c38=['Send','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Skip','BOOLEAN','thumb','star','stringify','text','name','input','getDataValue','onlineForm','parse','setDataValue','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','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','#fafafa','System','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','exports','STRING','address','email','Agent','#ffffff','INTEGER','ENUM','rounded','squared','Chat'];(function(_0xa3c315,_0x721d2a){var _0x4ab5fc=function(_0x5cf36e){while(--_0x5cf36e){_0xa3c315['push'](_0xa3c315['shift']());}};_0x4ab5fc(++_0x721d2a);}(_0x5c38,0x145));var _0x85c3=function(_0x3e1f1b,_0x1edf50){_0x3e1f1b=_0x3e1f1b-0x0;var _0x45962f=_0x5c38[_0x3e1f1b];return _0x45962f;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0x85c3('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize[_0x85c3('0x1')],'allowNull':![],'unique':_0x85c3('0x2')},'description':{'type':Sequelize[_0x85c3('0x1')]},'mapKey':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x3')},'mapKeyOffline':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x3')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x4')},'customerAlias':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x85c3('0x1')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x85c3('0x1')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x85c3('0x1')],'allowNull':![],'defaultValue':_0x85c3('0x5'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x85c3('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x85c3('0x1')]},'animation':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x85c3('0x7')](_0x85c3('0x8'),_0x85c3('0x9')),'defaultValue':_0x85c3('0x8')},'header_online':{'type':Sequelize['STRING'],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0xa')},'offline_chat_button':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0xb')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x85c3('0xc')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x85c3('0x6')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x85c3('0xd')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0x85c3('0xe')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0xf')},'noteTitle':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x10')},'placeholderMessage':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x11')},'closingMessage':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x85c3('0x12')},'conditionAgreement':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize['ENUM']('star',_0x85c3('0x14')),'defaultValue':_0x85c3('0x15')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x85c3('0xd')],'defaultValue':function(){return JSON[_0x85c3('0x16')]({'items':[{'type':'input','variable':null,'config':{'placeholder':'name','type':_0x85c3('0x17'),'required':!![]},'props':{'title':_0x85c3('0x18'),'helpText':''}},{'type':_0x85c3('0x19'),'props':{'title':_0x85c3('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x85c3('0x3'),'type':_0x85c3('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x85c3('0x1a')](_0x85c3('0x1b'))?JSON[_0x85c3('0x1c')](this[_0x85c3('0x1a')](_0x85c3('0x1b'))):{};},'set':function(_0x58e902){return this[_0x85c3('0x1d')]('onlineForm',JSON[_0x85c3('0x16')](_0x58e902));}},'offlineForm':{'type':Sequelize[_0x85c3('0xd')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x85c3('0x19'),'props':{'title':_0x85c3('0x3'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':'email'},'variable':null},{'type':_0x85c3('0x1e'),'config':{'placeholder':_0x85c3('0x1f')},'props':{'title':'Comments','helpText':_0x85c3('0x20')}}],'fromKey':0x0});},'get':function(){return this[_0x85c3('0x1a')](_0x85c3('0x21'))?JSON[_0x85c3('0x1c')](this[_0x85c3('0x1a')](_0x85c3('0x21'))):{};},'set':function(_0x2f03d5){return this[_0x85c3('0x1d')](_0x85c3('0x21'),JSON[_0x85c3('0x16')](_0x2f03d5));}},'token':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':function(){return rs[_0x85c3('0x22')]();}},'autoclose':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x85c3('0x1')]},'forwardOffline':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x85c3('0x1')]},'waitingTitle':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x23')},'waitingMessage':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x24')},'offlineMessageSubject':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x25')},'offlineMessageBody':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x26')},'enableUnmanagedNote':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x12')},'sendUnmanaged':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0xb')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x85c3('0x1')]},'notificationTemplate':{'type':Sequelize[_0x85c3('0xd')],'defaultValue':function(){return _0x85c3('0x27');}},'notificationSound':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x28')},'waitForTheAssignedAgent':{'type':Sequelize[_0x85c3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x29')},'verticalAlignment':{'type':Sequelize[_0x85c3('0x6')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0x85c3('0x1')]},'customerAvatar':{'type':Sequelize[_0x85c3('0xd')]},'showCustomerAvatar':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x85c3('0x6')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x85c3('0x1')],'allowNull':![],'defaultValue':_0x85c3('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x85c3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x85c3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x85c3('0x1')],'defaultValue':_0x85c3('0x2b')},'systemAvatar':{'type':Sequelize[_0x85c3('0xd')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x85c3('0x6')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x48fe35){if(!_0x48fe35)this[_0x85c3('0x1d')](_0x85c3('0x2c'),null);this['setDataValue'](_0x85c3('0x2d'),_0x48fe35);}},'vidaooEscalation':{'type':Sequelize[_0x85c3('0x13')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x85c3('0x1')]},'vidaooTopic':{'type':Sequelize[_0x85c3('0x1')],'allowNull':![],'defaultValue':_0x85c3('0x2e')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x85c3('0x2f');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xf492=['address','email','#011F6A','#ffffff','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','INTEGER','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Thanks\x20you\x20for\x20your\x20time!','star','thumb','name','input','getDataValue','parse','onlineForm','setDataValue','stringify','Comments','offlineForm','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.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','bottom_right','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING'];(function(_0x3900b6,_0x97c2eb){var _0x585dda=function(_0x53b7f1){while(--_0x53b7f1){_0x3900b6['push'](_0x3900b6['shift']());}};_0x585dda(++_0x97c2eb);}(_0xf492,0x184));var _0x2f49=function(_0x4f2bb8,_0x405a44){_0x4f2bb8=_0x4f2bb8-0x0;var _0x33ecad=_0xf492[_0x4f2bb8];return _0x33ecad;};'use strict';var Sequelize=require(_0x2f49('0x0'));var rs=require(_0x2f49('0x1'));module[_0x2f49('0x2')]={'name':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![],'unique':_0x2f49('0x4')},'description':{'type':Sequelize[_0x2f49('0x3')]},'mapKey':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x5')},'mapKeyOffline':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x5')},'key':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2f49('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![],'defaultValue':_0x2f49('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![],'defaultValue':_0x2f49('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x2f49('0x3')]},'animation':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x2f49('0x9')](_0x2f49('0xa'),_0x2f49('0xb')),'defaultValue':_0x2f49('0xa')},'header_online':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xc')},'start_chat_button':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xd')},'offline_chat_button':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xe')},'header_offline':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xf')},'download_transcript':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x2f49('0x10')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x2f49('0x11')]},'closingQuestion':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x12')},'formSubmitSuccessMessage':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x13')},'formSubmitFailureMessage':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x14')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0x2f49('0x15')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x2f49('0x16')},'closingMessageButton':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xe')},'skipMessageButton':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize['ENUM'](_0x2f49('0x17'),_0x2f49('0x18')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize[_0x2f49('0x10')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x2f49('0x11')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x2f49('0x19'),'type':'text','required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x2f49('0x1a'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x2f49('0x5'),'type':_0x2f49('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x2f49('0x1b')]('onlineForm')?JSON[_0x2f49('0x1c')](this['getDataValue'](_0x2f49('0x1d'))):{};},'set':function(_0x5d3cc8){return this[_0x2f49('0x1e')](_0x2f49('0x1d'),JSON[_0x2f49('0x1f')](_0x5d3cc8));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x2f49('0x1f')]({'items':[{'type':_0x2f49('0x1a'),'props':{'title':_0x2f49('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x2f49('0x5'),'type':'email'},'variable':null},{'type':'textarea','config':{'placeholder':_0x2f49('0x20')},'props':{'title':'Comments','helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x2f49('0x21'))?JSON['parse'](this[_0x2f49('0x1b')](_0x2f49('0x21'))):{};},'set':function(_0x28a850){return this['setDataValue']('offlineForm',JSON[_0x2f49('0x1f')](_0x28a850));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x2f49('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x22')},'offlineMessageSubject':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x23')},'offlineMessageBody':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x24')},'enableUnmanagedNote':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x25')},'skipUnmanaged':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x26')},'sendUnmanaged':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0xe')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x2f49('0x11')],'defaultValue':function(){return _0x2f49('0x27');}},'notificationSound':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize[_0x2f49('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x28')},'verticalAlignment':{'type':Sequelize[_0x2f49('0x10')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x29')},'defaultTitle':{'type':Sequelize[_0x2f49('0x3')]},'customerAvatar':{'type':Sequelize[_0x2f49('0x11')]},'showCustomerAvatar':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x2f49('0x10')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2f49('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2f49('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2f49('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':_0x2f49('0x2b')},'systemAvatar':{'type':Sequelize[_0x2f49('0x11')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2f49('0x10')],'comment':_0x2f49('0x2c')},'mandatoryDisposition':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![],'comment':_0x2f49('0x2d'),'set':function(_0x37b140){if(!_0x37b140)this[_0x2f49('0x1e')]('mandatoryDispositionPauseId',null);this[_0x2f49('0x1e')](_0x2f49('0x2e'),_0x37b140);}},'vidaooEscalation':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0x2f49('0x3')],'allowNull':![],'defaultValue':_0x2f49('0x2f')},'vidaooNote':{'type':Sequelize[_0x2f49('0x3')],'defaultValue':function(){return _0x2f49('0x30');}},'vidaooMetadata':{'type':Sequelize[_0x2f49('0x11')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x2f49('0x8')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x2f49('0x11')]}};
\ No newline at end of file
index 174d6ff..9b95085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93c4=['browser','version','format','%s\x20%s','unknown','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','files','CompanyId','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','server','attachments','basename','sequelize','transaction','Attachment','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','openNewInteraction','MailAccountId','mimetype','subjectOffline','toPairsIn','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','Contact','Owner','fullname','Tag','color','tag','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','virtual','License','increment','all','some','readFileSync','remote','stringify','x-real-ip','referer','alignment','verticalAlignment','textColor','color_button','backgroundColor','addApplications','bulkCreate','ChatApplication','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','online','offlineForm','items','fromKey','getOfflineMessages','addAgents','emit','isArray','userChatWebsite:remove','getAgents','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','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','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','code','error','message','ChatWebsite,\x20%s,\x20%s','catch','sendStatus','status','json','undefined','limit','count','offset','Content-Range','save','get','ChatWebsites','UserProfileResource','end','stack','name','send','mandatoryDispositionPause','map','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','ChatWebsite','includeAll','include','findAll','rows','Pause','keys','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','destroy','describe','addDisposition','Disposition','getDispositions','findOne','nolimit','ChatWebsiteId','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addLogo','file','filename','addAvatar','addCustomerAvatar','addSystemAvatar','getLogo','join','server/files/images/logos/default_logo.svg','sitepic','../../config/license/util','isNil','root','server/files/images/logos/','download','getAvatar','agentAvatar','existsSync','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','customerAvatar','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','systemAvatar','user-agent-parser','setUA','headers','CmContact','no\x20available\x20attributes','updatedAt','difference','createdAt','from','Sequelize','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','Applications','account','applications','orderBy','priority','asc','ListId','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port'];(function(_0x4e33e5,_0x5aacc1){var _0x2de058=function(_0x2eea19){while(--_0x2eea19){_0x4e33e5['push'](_0x4e33e5['shift']());}};_0x2de058(++_0x5aacc1);}(_0x93c4,0x1b3));var _0x493c=function(_0x5997ee,_0x2870ed){_0x5997ee=_0x5997ee-0x0;var _0x2d7b69=_0x93c4[_0x5997ee];return _0x2d7b69;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x493c('0x0'));var zipdir=require(_0x493c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x493c('0x2'));var moment=require('moment');var BPromise=require(_0x493c('0x3'));var Mustache=require(_0x493c('0x4'));var util=require(_0x493c('0x5'));var path=require(_0x493c('0x6'));var sox=require(_0x493c('0x7'));var csv=require('to-csv');var ejs=require(_0x493c('0x8'));var fs=require('fs');var fs_extra=require(_0x493c('0x9'));var _=require(_0x493c('0xa'));var squel=require('squel');var crypto=require(_0x493c('0xb'));var jsforce=require(_0x493c('0xc'));var deskjs=require(_0x493c('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x493c('0xe'));var authService=require(_0x493c('0xf'));var qs=require(_0x493c('0x10'));var as=require(_0x493c('0x11'));var hardwareService=require(_0x493c('0x12'));var logger=require(_0x493c('0x13'))(_0x493c('0x14'));var utils=require(_0x493c('0x15'));var config=require(_0x493c('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x493c('0x17')]=_[_0x493c('0x18')](config[_0x493c('0x17')],{'host':_0x493c('0x19'),'port':0x18eb});var socket=require(_0x493c('0x1a'))(new Redis(config['redis']));require(_0x493c('0x1b'))[_0x493c('0x1c')](socket);var jayson=require(_0x493c('0x1d'));var client=jayson[_0x493c('0x1e')][_0x493c('0x1f')]({'port':0x232c});var client9002=jayson[_0x493c('0x1e')][_0x493c('0x1f')]({'port':0x232a});var client9003=jayson['client'][_0x493c('0x1f')]({'port':0x232b});var client9001=jayson[_0x493c('0x1e')][_0x493c('0x1f')]({'port':0x2329});function respondWithRpcPromise(_0x161329,_0x327123,_0x119f6f,_0x4837ba){return new BPromise(function(_0xac39b0,_0x7e7a5){var _0x55b6bb=_0x4837ba||client;return _0x55b6bb[_0x493c('0x20')](_0x161329,_0x119f6f)[_0x493c('0x21')](function(_0x310688){logger[_0x493c('0x22')]('ChatWebsite,\x20%s,\x20%s',_0x327123,_0x493c('0x23'));logger[_0x493c('0x24')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x327123,_0x493c('0x23'),JSON['stringify'](_0x310688));if(_0x310688['error']){if(_0x310688['error'][_0x493c('0x25')]===0x1f4){logger[_0x493c('0x26')]('ChatWebsite,\x20%s,\x20%s',_0x327123,_0x310688['error'][_0x493c('0x27')]);return _0x7e7a5(_0x310688[_0x493c('0x26')][_0x493c('0x27')]);}logger[_0x493c('0x26')](_0x493c('0x28'),_0x327123,_0x310688[_0x493c('0x26')][_0x493c('0x27')]);return _0xac39b0(_0x310688[_0x493c('0x26')][_0x493c('0x27')]);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x327123,_0x493c('0x23'));_0xac39b0(_0x310688['result'][_0x493c('0x27')]);}})[_0x493c('0x29')](function(_0x5141c0){logger[_0x493c('0x26')](_0x493c('0x28'),_0x327123,_0x5141c0);_0x7e7a5(_0x5141c0);});});}function respondWithStatusCode(_0x222f29,_0x26f2ab){_0x26f2ab=_0x26f2ab||0xcc;return function(_0x2739b3){if(_0x2739b3){return _0x222f29[_0x493c('0x2a')](_0x26f2ab);}return _0x222f29[_0x493c('0x2b')](_0x26f2ab)['end']();};}function respondWithResult(_0x1dd287,_0x419795){_0x419795=_0x419795||0xc8;return function(_0x54b8d8){if(_0x54b8d8){return _0x1dd287[_0x493c('0x2b')](_0x419795)[_0x493c('0x2c')](_0x54b8d8);}};}function respondWithFilteredResult(_0x37910a,_0x1b403d){return function(_0x2a2a4c){if(_0x2a2a4c){var _0x3d30f0=typeof _0x1b403d['offset']===_0x493c('0x2d')&&typeof _0x1b403d[_0x493c('0x2e')]==='undefined';var _0x1d4825=_0x2a2a4c[_0x493c('0x2f')];var _0x23067a=_0x3d30f0?0x0:_0x1b403d[_0x493c('0x30')];var _0x418b24=_0x3d30f0?_0x2a2a4c['count']:_0x1b403d[_0x493c('0x30')]+_0x1b403d[_0x493c('0x2e')];var _0x2d9b27;if(_0x418b24>=_0x1d4825){_0x418b24=_0x1d4825;_0x2d9b27=0xc8;}else{_0x2d9b27=0xce;}_0x37910a[_0x493c('0x2b')](_0x2d9b27);return _0x37910a['set'](_0x493c('0x31'),_0x23067a+'-'+_0x418b24+'/'+_0x1d4825)['json'](_0x2a2a4c);}return null;};}function patchUpdates(_0x191c80){return function(_0xada99e){try{jsonpatch['apply'](_0xada99e,_0x191c80,!![]);}catch(_0x417de8){return BPromise['reject'](_0x417de8);}return _0xada99e[_0x493c('0x32')]();};}function saveUpdates(_0x481345,_0x2f0d50){return function(_0x1aaaf1){if(_0x1aaaf1){return _0x1aaaf1['update'](_0x481345)[_0x493c('0x21')](function(_0x1e61c2){return _0x1e61c2;});}return null;};}function removeEntity(_0x4176de,_0x3e7c5d){return function(_0x3ead82){if(_0x3ead82){return _0x3ead82['destroy']()[_0x493c('0x21')](function(){var _0x36b1ff=_0x3ead82[_0x493c('0x33')]({'plain':!![]});var _0xce6562=_0x493c('0x34');return db[_0x493c('0x35')]['destroy']({'where':{'type':_0xce6562,'resourceId':_0x36b1ff['id']}})[_0x493c('0x21')](function(){return _0x3ead82;});})[_0x493c('0x21')](function(){_0x4176de[_0x493c('0x2b')](0xcc)[_0x493c('0x36')]();});}};}function handleEntityNotFound(_0x5f2b92,_0x4a704b){return function(_0x41fe59){if(!_0x41fe59){_0x5f2b92[_0x493c('0x2a')](0x194);}return _0x41fe59;};}function handleError(_0x3cfcfc,_0x42c715){_0x42c715=_0x42c715||0x1f4;return function(_0x23bf2e){logger[_0x493c('0x26')](_0x23bf2e[_0x493c('0x37')]);if(_0x23bf2e[_0x493c('0x38')]){delete _0x23bf2e[_0x493c('0x38')];}_0x3cfcfc['status'](_0x42c715)[_0x493c('0x39')](_0x23bf2e);};}exports['index']=function(_0xe4ce0a,_0x10c5a2){var _0xfc53d6={'include':[{'model':db['Pause'],'as':_0x493c('0x3a')}]},_0x140fad={},_0x1293a2={'count':0x0,'rows':[]};var _0x407b12=_[_0x493c('0x3b')](db['ChatWebsite'][_0x493c('0x3c')],function(_0x11df0e){return{'name':_0x11df0e['fieldName'],'type':_0x11df0e[_0x493c('0x3d')][_0x493c('0x3e')]};});_0x140fad[_0x493c('0x3f')]=_[_0x493c('0x3b')](_0x407b12,_0x493c('0x38'));_0x140fad[_0x493c('0x40')]=_['keys'](_0xe4ce0a['query']);_0x140fad[_0x493c('0x41')]=_[_0x493c('0x42')](_0x140fad[_0x493c('0x3f')],_0x140fad[_0x493c('0x40')]);_0xfc53d6[_0x493c('0x43')]=_[_0x493c('0x42')](_0x140fad[_0x493c('0x3f')],qs[_0x493c('0x44')](_0xe4ce0a['query'][_0x493c('0x44')]));_0xfc53d6[_0x493c('0x43')]=_0xfc53d6[_0x493c('0x43')]['length']?_0xfc53d6['attributes']:_0x140fad[_0x493c('0x3f')];if(!_0xe4ce0a[_0x493c('0x40')][_0x493c('0x45')]('nolimit')){_0xfc53d6['limit']=qs['limit'](_0xe4ce0a['query'][_0x493c('0x2e')]);_0xfc53d6[_0x493c('0x30')]=qs[_0x493c('0x30')](_0xe4ce0a[_0x493c('0x40')][_0x493c('0x30')]);}_0xfc53d6[_0x493c('0x46')]=qs[_0x493c('0x47')](_0xe4ce0a[_0x493c('0x40')][_0x493c('0x47')]);_0xfc53d6[_0x493c('0x48')]=qs['filters'](_[_0x493c('0x49')](_0xe4ce0a[_0x493c('0x40')],_0x140fad[_0x493c('0x41')]),_0x407b12);if(_0xe4ce0a[_0x493c('0x40')][_0x493c('0x4a')]){_0xfc53d6[_0x493c('0x48')]=_[_0x493c('0x4b')](_0xfc53d6[_0x493c('0x48')],{'$or':_[_0x493c('0x3b')](_0x407b12,function(_0x74d470){if(_0x74d470['type']!==_0x493c('0x4c')){var _0x65aa2b={};_0x65aa2b[_0x74d470['name']]={'$like':'%'+_0xe4ce0a[_0x493c('0x40')][_0x493c('0x4a')]+'%'};return _0x65aa2b;}})});}_0xfc53d6=_[_0x493c('0x4b')]({},_0xfc53d6,_0xe4ce0a[_0x493c('0x4d')]);var _0x3c9661={'where':_0xfc53d6[_0x493c('0x48')]};return db[_0x493c('0x4e')][_0x493c('0x2f')](_0x3c9661)['then'](function(_0x50275c){_0x1293a2[_0x493c('0x2f')]=_0x50275c;if(_0xe4ce0a[_0x493c('0x40')][_0x493c('0x4f')]){_0xfc53d6[_0x493c('0x50')]=[{'all':!![]}];}return db[_0x493c('0x4e')][_0x493c('0x51')](_0xfc53d6);})[_0x493c('0x21')](function(_0x51fc6c){_0x1293a2[_0x493c('0x52')]=_0x51fc6c;return _0x1293a2;})[_0x493c('0x21')](respondWithFilteredResult(_0x10c5a2,_0xfc53d6))[_0x493c('0x29')](handleError(_0x10c5a2,null));};exports['show']=function(_0x3cf487,_0x4f626d){var _0x2ab8f7={'raw':![],'where':{'id':_0x3cf487['params']['id']},'include':[{'model':db[_0x493c('0x53')],'as':_0x493c('0x3a')}]},_0x5b8cce={};_0x5b8cce[_0x493c('0x3f')]=_[_0x493c('0x54')](db[_0x493c('0x4e')][_0x493c('0x3c')]);_0x5b8cce[_0x493c('0x40')]=_[_0x493c('0x54')](_0x3cf487[_0x493c('0x40')]);_0x5b8cce[_0x493c('0x41')]=_[_0x493c('0x42')](_0x5b8cce['model'],_0x5b8cce['query']);_0x2ab8f7[_0x493c('0x43')]=_[_0x493c('0x42')](_0x5b8cce[_0x493c('0x3f')],qs[_0x493c('0x44')](_0x3cf487[_0x493c('0x40')]['fields']));_0x2ab8f7[_0x493c('0x43')]=_0x2ab8f7[_0x493c('0x43')][_0x493c('0x55')]?_0x2ab8f7[_0x493c('0x43')]:_0x5b8cce[_0x493c('0x3f')];if(_0x3cf487[_0x493c('0x40')][_0x493c('0x4f')]){_0x2ab8f7[_0x493c('0x50')]=[{'all':!![]}];}_0x2ab8f7=_['merge']({},_0x2ab8f7,_0x3cf487['options']);return db[_0x493c('0x4e')][_0x493c('0x56')](_0x2ab8f7)['then'](handleEntityNotFound(_0x4f626d,null))['then'](respondWithResult(_0x4f626d,null))[_0x493c('0x29')](handleError(_0x4f626d,null));};exports[_0x493c('0x57')]=function(_0x92021a,_0x18fa80){return db[_0x493c('0x4e')]['create'](_0x92021a[_0x493c('0x58')],{})['then'](function(_0x29d2a6){var _0x50da10=_0x92021a[_0x493c('0x59')][_0x493c('0x33')]({'plain':!![]});if(!_0x50da10)throw new Error(_0x493c('0x5a'));if(_0x50da10[_0x493c('0x5b')]===_0x493c('0x59')){var _0x2f9537=_0x29d2a6['get']({'plain':!![]});var _0x106e37='ChatWebsites';return db[_0x493c('0x5c')][_0x493c('0x56')]({'where':{'name':_0x106e37,'userProfileId':_0x50da10['userProfileId']},'raw':!![]})[_0x493c('0x21')](function(_0x2b6fc3){if(_0x2b6fc3&&_0x2b6fc3[_0x493c('0x5d')]===0x0){return db['UserProfileResource'][_0x493c('0x57')]({'name':_0x2f9537[_0x493c('0x38')],'resourceId':_0x2f9537['id'],'type':_0x2b6fc3[_0x493c('0x38')],'sectionId':_0x2b6fc3['id']},{})[_0x493c('0x21')](function(){return _0x29d2a6;});}else{return _0x29d2a6;}})[_0x493c('0x29')](function(_0x3ac7dc){logger[_0x493c('0x26')](_0x493c('0x5e'),_0x3ac7dc);throw _0x3ac7dc;});}return _0x29d2a6;})[_0x493c('0x21')](respondWithResult(_0x18fa80,0xc9))[_0x493c('0x29')](handleError(_0x18fa80,null));};exports[_0x493c('0x5f')]=function(_0x1cbf23,_0x1dc565){if(_0x1cbf23[_0x493c('0x58')]['id']){delete _0x1cbf23[_0x493c('0x58')]['id'];}return db[_0x493c('0x4e')][_0x493c('0x56')]({'where':{'id':_0x1cbf23[_0x493c('0x60')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x493c('0x21')](handleEntityNotFound(_0x1dc565,null))['then'](saveUpdates(_0x1cbf23[_0x493c('0x58')],null))['then'](respondWithResult(_0x1dc565,null))[_0x493c('0x29')](handleError(_0x1dc565,null));};exports[_0x493c('0x61')]=function(_0x1cff76,_0x47d8d0){return db['ChatWebsite'][_0x493c('0x56')]({'where':{'id':_0x1cff76[_0x493c('0x60')]['id']}})['then'](handleEntityNotFound(_0x47d8d0,null))['then'](removeEntity(_0x47d8d0,null))[_0x493c('0x29')](handleError(_0x47d8d0,null));};exports[_0x493c('0x62')]=function(_0x59a25f,_0x1a8efc){return db['ChatWebsite'][_0x493c('0x62')]()['then'](respondWithResult(_0x1a8efc,null))[_0x493c('0x29')](handleError(_0x1a8efc,null));};exports[_0x493c('0x63')]=function(_0x10cf50,_0x306592,_0x12272a){if(_0x10cf50['body']['id']){delete _0x10cf50[_0x493c('0x58')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x10cf50[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x306592,null))[_0x493c('0x21')](function(_0x17d555){if(_0x17d555){_0x10cf50[_0x493c('0x58')]['ChatWebsiteId']=_0x17d555['id'];return db[_0x493c('0x64')][_0x493c('0x57')](_0x10cf50['body']);}})[_0x493c('0x21')](respondWithResult(_0x306592,null))[_0x493c('0x29')](handleError(_0x306592,null));};exports[_0x493c('0x65')]=function(_0x3c7c55,_0x113475,_0x246a18){var _0xe01c37={'raw':![],'where':{}};var _0x120ab0={};var _0x109097={'count':0x0,'rows':[]};return db[_0x493c('0x4e')][_0x493c('0x66')]({'where':{'id':_0x3c7c55[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x113475,null))[_0x493c('0x21')](function(_0x2cf702){if(_0x2cf702){_0x120ab0[_0x493c('0x3f')]=_[_0x493c('0x54')](db['Disposition'][_0x493c('0x3c')]);_0x120ab0[_0x493c('0x40')]=_[_0x493c('0x54')](_0x3c7c55[_0x493c('0x40')]);_0x120ab0[_0x493c('0x41')]=_['intersection'](_0x120ab0[_0x493c('0x3f')],_0x120ab0['query']);_0xe01c37[_0x493c('0x43')]=_[_0x493c('0x42')](_0x120ab0[_0x493c('0x3f')],qs[_0x493c('0x44')](_0x3c7c55['query']['fields']));_0xe01c37['attributes']=_0xe01c37['attributes']['length']?_0xe01c37[_0x493c('0x43')]:_0x120ab0['model'];if(!_0x3c7c55[_0x493c('0x40')][_0x493c('0x45')](_0x493c('0x67'))){_0xe01c37[_0x493c('0x2e')]=qs[_0x493c('0x2e')](_0x3c7c55[_0x493c('0x40')]['limit']);_0xe01c37[_0x493c('0x30')]=qs['offset'](_0x3c7c55[_0x493c('0x40')][_0x493c('0x30')]);}_0xe01c37[_0x493c('0x46')]=qs['sort'](_0x3c7c55[_0x493c('0x40')][_0x493c('0x47')]);_0xe01c37[_0x493c('0x48')]=qs['filters'](_['pick'](_0x3c7c55[_0x493c('0x40')],_0x120ab0[_0x493c('0x41')]));_0xe01c37[_0x493c('0x48')][_0x493c('0x68')]=_0x2cf702['id'];if(_0x3c7c55['query']['filter']){_0xe01c37[_0x493c('0x48')]=_[_0x493c('0x4b')](_0xe01c37[_0x493c('0x48')],{'$or':_[_0x493c('0x3b')](_0xe01c37[_0x493c('0x43')],function(_0x44a57b){var _0x349cc3={};_0x349cc3[_0x44a57b]={'$like':'%'+_0x3c7c55[_0x493c('0x40')][_0x493c('0x4a')]+'%'};return _0x349cc3;})});}_0xe01c37=_['merge']({},_0xe01c37,_0x3c7c55['options']);return db[_0x493c('0x64')][_0x493c('0x2f')]({'where':_0xe01c37['where']})[_0x493c('0x21')](function(_0x500763){_0x109097['count']=_0x500763;if(_0x3c7c55[_0x493c('0x40')][_0x493c('0x4f')]){_0xe01c37[_0x493c('0x50')]=[{'all':!![]}];}return db[_0x493c('0x64')][_0x493c('0x51')](_0xe01c37);})['then'](function(_0x4fb277){_0x109097[_0x493c('0x52')]=_0x4fb277;return _0x109097;});}})[_0x493c('0x21')](respondWithFilteredResult(_0x113475,_0xe01c37))['catch'](handleError(_0x113475,null));};exports[_0x493c('0x69')]=function(_0x28d14f,_0x4aee79,_0x11bea6){return db[_0x493c('0x4e')][_0x493c('0x56')]({'where':{'id':_0x28d14f['params']['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x4aee79,null))['then'](function(_0x594565){if(_0x594565){return _0x594565[_0x493c('0x69')](_0x28d14f['query']['ids']);}})[_0x493c('0x21')](respondWithStatusCode(_0x4aee79,null))[_0x493c('0x29')](handleError(_0x4aee79,null));};exports[_0x493c('0x6a')]=function(_0x24fefb,_0x5973c2,_0x40e550){if(_0x24fefb[_0x493c('0x58')]['id']){delete _0x24fefb['body']['id'];}return db[_0x493c('0x4e')][_0x493c('0x56')]({'where':{'id':_0x24fefb[_0x493c('0x60')]['id']}})['then'](handleEntityNotFound(_0x5973c2,null))['then'](function(_0x31f1d2){if(_0x31f1d2){_0x24fefb[_0x493c('0x58')][_0x493c('0x68')]=_0x31f1d2['id'];return db[_0x493c('0x6b')][_0x493c('0x57')](_0x24fefb[_0x493c('0x58')]);}})[_0x493c('0x21')](respondWithResult(_0x5973c2,null))[_0x493c('0x29')](handleError(_0x5973c2,null));};exports[_0x493c('0x6c')]=function(_0x4082a4,_0x3ae094,_0x54fb8a){var _0x3ea62f={'raw':![],'where':{}};var _0x589590={};var _0x5077e2={'count':0x0,'rows':[]};return db[_0x493c('0x4e')][_0x493c('0x66')]({'where':{'id':_0x4082a4[_0x493c('0x60')]['id']}})['then'](handleEntityNotFound(_0x3ae094,null))[_0x493c('0x21')](function(_0x1282b3){if(_0x1282b3){_0x589590[_0x493c('0x3f')]=_['keys'](db[_0x493c('0x6b')]['rawAttributes']);_0x589590[_0x493c('0x40')]=_[_0x493c('0x54')](_0x4082a4[_0x493c('0x40')]);_0x589590[_0x493c('0x41')]=_[_0x493c('0x42')](_0x589590[_0x493c('0x3f')],_0x589590[_0x493c('0x40')]);_0x3ea62f[_0x493c('0x43')]=_['intersection'](_0x589590['model'],qs[_0x493c('0x44')](_0x4082a4['query'][_0x493c('0x44')]));_0x3ea62f['attributes']=_0x3ea62f['attributes'][_0x493c('0x55')]?_0x3ea62f[_0x493c('0x43')]:_0x589590[_0x493c('0x3f')];if(!_0x4082a4[_0x493c('0x40')][_0x493c('0x45')](_0x493c('0x67'))){_0x3ea62f[_0x493c('0x2e')]=qs[_0x493c('0x2e')](_0x4082a4['query'][_0x493c('0x2e')]);_0x3ea62f[_0x493c('0x30')]=qs[_0x493c('0x30')](_0x4082a4[_0x493c('0x40')]['offset']);}_0x3ea62f[_0x493c('0x46')]=qs['sort'](_0x4082a4[_0x493c('0x40')]['sort']);_0x3ea62f['where']=qs[_0x493c('0x41')](_[_0x493c('0x49')](_0x4082a4[_0x493c('0x40')],_0x589590[_0x493c('0x41')]));_0x3ea62f['where'][_0x493c('0x68')]=_0x1282b3['id'];if(_0x4082a4[_0x493c('0x40')][_0x493c('0x4a')]){_0x3ea62f[_0x493c('0x48')]=_[_0x493c('0x4b')](_0x3ea62f[_0x493c('0x48')],{'$or':_[_0x493c('0x3b')](_0x3ea62f[_0x493c('0x43')],function(_0x4d9bb4){var _0x3a3e3d={};_0x3a3e3d[_0x4d9bb4]={'$like':'%'+_0x4082a4[_0x493c('0x40')][_0x493c('0x4a')]+'%'};return _0x3a3e3d;})});}_0x3ea62f=_[_0x493c('0x4b')]({},_0x3ea62f,_0x4082a4[_0x493c('0x4d')]);return db[_0x493c('0x6b')][_0x493c('0x2f')]({'where':_0x3ea62f[_0x493c('0x48')]})[_0x493c('0x21')](function(_0x4dd0c5){_0x5077e2[_0x493c('0x2f')]=_0x4dd0c5;if(_0x4082a4[_0x493c('0x40')][_0x493c('0x4f')]){_0x3ea62f[_0x493c('0x50')]=[{'all':!![]}];}return db[_0x493c('0x6b')][_0x493c('0x51')](_0x3ea62f);})[_0x493c('0x21')](function(_0x9afb59){_0x5077e2[_0x493c('0x52')]=_0x9afb59;return _0x5077e2;});}})[_0x493c('0x21')](respondWithFilteredResult(_0x3ae094,_0x3ea62f))[_0x493c('0x29')](handleError(_0x3ae094,null));};exports[_0x493c('0x6d')]=function(_0xa9df3e,_0x3de19f,_0xc27e65){return db[_0x493c('0x4e')][_0x493c('0x56')]({'where':{'id':_0xa9df3e['params']['id']}})['then'](handleEntityNotFound(_0x3de19f,null))['then'](function(_0x1d4a06){if(_0x1d4a06){return _0x1d4a06[_0x493c('0x6d')](_0xa9df3e['query'][_0x493c('0x6e')]);}})['then'](respondWithStatusCode(_0x3de19f,null))[_0x493c('0x29')](handleError(_0x3de19f,null));};exports[_0x493c('0x6f')]=function(_0x5c72e6,_0x4de7b0,_0x3bee36){_0x5c72e6['body']['sitepic']=_0x5c72e6[_0x493c('0x70')][_0x493c('0x71')];return db[_0x493c('0x4e')][_0x493c('0x56')]({'where':{'id':_0x5c72e6[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x4de7b0,null))[_0x493c('0x21')](saveUpdates(_0x5c72e6[_0x493c('0x58')],null))[_0x493c('0x21')](respondWithResult(_0x4de7b0,null))[_0x493c('0x29')](handleError(_0x4de7b0,null));};exports[_0x493c('0x72')]=function(_0x2260e0,_0x59664e,_0xb6cd0f){_0x2260e0['body']['agentAvatar']=_0x2260e0[_0x493c('0x70')]['filename'];return db['ChatWebsite'][_0x493c('0x56')]({'where':{'id':_0x2260e0[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x59664e,null))[_0x493c('0x21')](saveUpdates(_0x2260e0[_0x493c('0x58')],null))[_0x493c('0x21')](respondWithResult(_0x59664e,null))[_0x493c('0x29')](handleError(_0x59664e,null));};exports[_0x493c('0x73')]=function(_0x566beb,_0x39f6f0,_0x11aef2){_0x566beb[_0x493c('0x58')]['customerAvatar']=_0x566beb[_0x493c('0x70')][_0x493c('0x71')];return db[_0x493c('0x4e')][_0x493c('0x56')]({'where':{'id':_0x566beb[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x39f6f0,null))['then'](saveUpdates(_0x566beb[_0x493c('0x58')],null))[_0x493c('0x21')](respondWithResult(_0x39f6f0,null))[_0x493c('0x29')](handleError(_0x39f6f0,null));};exports[_0x493c('0x74')]=function(_0x4ee109,_0x287f3c,_0x85c8f){_0x4ee109[_0x493c('0x58')]['systemAvatar']=_0x4ee109['file']['filename'];return db[_0x493c('0x4e')][_0x493c('0x56')]({'where':{'id':_0x4ee109[_0x493c('0x60')]['id']}})['then'](handleEntityNotFound(_0x287f3c,null))[_0x493c('0x21')](saveUpdates(_0x4ee109[_0x493c('0x58')],null))[_0x493c('0x21')](respondWithResult(_0x287f3c,null))[_0x493c('0x29')](handleError(_0x287f3c,null));};exports[_0x493c('0x75')]=function(_0x3cd826,_0x2c0654,_0xac2cb9){var _0x596a02=path[_0x493c('0x76')](config['root'],_0x493c('0x77'));var _0x10f4fd={'where':{'id':_0x3cd826[_0x493c('0x60')]['id']},'attributes':['id',_0x493c('0x78')],'raw':!![]};var _0x2c6f74=![];return require(_0x493c('0x79'))['getLicense']()[_0x493c('0x21')](function(_0x399668){if(_0x399668){_0x2c6f74=_0x399668['custom'];}})[_0x493c('0x21')](function(){return db['ChatWebsite'][_0x493c('0x56')](_0x10f4fd);})['then'](handleEntityNotFound(_0x2c0654,null))['then'](function(_0x13cdf6){if(_0x13cdf6){if(!_[_0x493c('0x7a')](_0x13cdf6[_0x493c('0x78')])){if(fs['existsSync'](path[_0x493c('0x76')](config[_0x493c('0x7b')],_0x493c('0x7c'),_0x13cdf6[_0x493c('0x78')]))&&_0x2c6f74){_0x596a02=path['join'](config[_0x493c('0x7b')],_0x493c('0x7c'),_0x13cdf6[_0x493c('0x78')]);}}return _0x2c0654[_0x493c('0x7d')](_0x596a02);}})[_0x493c('0x29')](handleError(_0x2c0654,null));};exports[_0x493c('0x7e')]=function(_0x5ad92b,_0x2a09d5,_0x5608eb){var _0x1da6f6=path[_0x493c('0x76')](config[_0x493c('0x7b')],'server/files/images/avatars/default_avatar.png');var _0x852d0f={'where':{'id':_0x5ad92b[_0x493c('0x60')]['id']},'attributes':['id',_0x493c('0x7f')],'raw':!![]};return db[_0x493c('0x4e')][_0x493c('0x56')](_0x852d0f)[_0x493c('0x21')](handleEntityNotFound(_0x2a09d5,null))['then'](function(_0x1cda2d){if(_0x1cda2d){if(!_[_0x493c('0x7a')](_0x1cda2d[_0x493c('0x7f')])){if(fs[_0x493c('0x80')](path[_0x493c('0x76')](config['root'],_0x493c('0x81'),_0x1cda2d[_0x493c('0x7f')]))){_0x1da6f6=path['join'](config['root'],_0x493c('0x81'),_0x1cda2d[_0x493c('0x7f')]);}}return _0x2a09d5['download'](_0x1da6f6);}})['catch'](handleError(_0x2a09d5,null));};exports[_0x493c('0x82')]=function(_0x200a33,_0x41388b,_0x38e971){var _0x2954f0=path[_0x493c('0x76')](config[_0x493c('0x7b')],_0x493c('0x83'));var _0x16d44c={'where':{'id':_0x200a33['params']['id']},'attributes':['id',_0x493c('0x84'),_0x493c('0x85')],'raw':!![]};return db[_0x493c('0x4e')][_0x493c('0x56')](_0x16d44c)[_0x493c('0x21')](handleEntityNotFound(_0x41388b,null))['then'](function(_0x3b3d07){if(_0x3b3d07){if(!_[_0x493c('0x7a')](_0x3b3d07['customerAvatar'])){if(fs[_0x493c('0x80')](path[_0x493c('0x76')](config['root'],_0x493c('0x81'),_0x3b3d07[_0x493c('0x84')]))&&_0x3b3d07[_0x493c('0x85')]){_0x2954f0=path[_0x493c('0x76')](config[_0x493c('0x7b')],_0x493c('0x81'),_0x3b3d07['customerAvatar']);}}return _0x41388b['download'](_0x2954f0);}})[_0x493c('0x29')](handleError(_0x41388b,null));};exports[_0x493c('0x86')]=function(_0x34d88c,_0x5ba2b5,_0x155026){var _0x5b5a1e=path[_0x493c('0x76')](config['root'],_0x493c('0x87'));var _0x7188c0={'where':{'id':_0x34d88c[_0x493c('0x60')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x493c('0x4e')][_0x493c('0x56')](_0x7188c0)[_0x493c('0x21')](handleEntityNotFound(_0x5ba2b5,null))[_0x493c('0x21')](function(_0x164cc9){if(_0x164cc9){if(!_[_0x493c('0x7a')](_0x164cc9[_0x493c('0x88')])){if(fs[_0x493c('0x80')](path['join'](config[_0x493c('0x7b')],_0x493c('0x81'),_0x164cc9[_0x493c('0x88')]))){_0x5b5a1e=path[_0x493c('0x76')](config['root'],_0x493c('0x81'),_0x164cc9['systemAvatar']);}}return _0x5ba2b5[_0x493c('0x7d')](_0x5b5a1e);}})[_0x493c('0x29')](handleError(_0x5ba2b5,null));};exports['notify']=function(_0x5700f1,_0x39821a,_0x440fed){var _0x1e7818=require(_0x493c('0x89'));var _0x27c837=new _0x1e7818();var _0x1028c1=_0x27c837[_0x493c('0x8a')](_0x5700f1[_0x493c('0x8b')]['user-agent'])['getResult']();var _0x1ff9fb={'body':_0x5700f1[_0x493c('0x58')],'channel':'chat'};var _0x4363c1=[];var _0x2e1f4d=[];var _0x169e17={};var _0x5994ae=![];return db[_0x493c('0x8c')][_0x493c('0x62')]()['then'](function(_0x534ea5){if(!_0x534ea5){throw new db['Sequelize']['ValidationError'](_0x493c('0x8d'));}_0x4363c1=_['difference'](_[_0x493c('0x54')](_0x534ea5),['createdAt',_0x493c('0x8e')]);_0x2e1f4d=_[_0x493c('0x8f')](_[_0x493c('0x54')](_0x534ea5),[_0x493c('0x90'),_0x493c('0x8e'),'CompanyId','ListId']);if(_0x5700f1[_0x493c('0x58')]['id']){delete _0x5700f1[_0x493c('0x58')]['id'];}if(_[_0x493c('0x7a')](_0x5700f1[_0x493c('0x58')][_0x493c('0x91')])){throw new db[(_0x493c('0x92'))][(_0x493c('0x93'))](_0x493c('0x94'));}if(_['isNil'](_0x5700f1[_0x493c('0x58')]['body'])||_0x5700f1[_0x493c('0x58')]['body']===''){throw new db[(_0x493c('0x92'))]['ValidationError'](_0x493c('0x95'));}if(_[_0x493c('0x7a')](_0x5700f1[_0x493c('0x58')][_0x493c('0x96')])){throw new db[(_0x493c('0x92'))][(_0x493c('0x93'))](_0x493c('0x97')+_0x2e1f4d);}if(!_[_0x493c('0x98')](_0x2e1f4d,_0x5700f1[_0x493c('0x58')][_0x493c('0x96')])){throw new db[(_0x493c('0x92'))][(_0x493c('0x93'))](_0x493c('0x99')+_0x2e1f4d);}_0x169e17[_0x5700f1[_0x493c('0x58')]['mapKey']]=_0x5700f1['body'][_0x493c('0x91')];})[_0x493c('0x21')](function(){return db[_0x493c('0x4e')]['find']({'where':{'id':_0x5700f1['params']['id']},'include':[{'model':db[_0x493c('0x9a')],'as':_0x493c('0x9b'),'include':[{'model':db[_0x493c('0x8c')],'as':_0x493c('0x9c'),'where':_0x169e17,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db['ChatApplication'],'as':_0x493c('0x9d')}]});})[_0x493c('0x21')](handleEntityNotFound(_0x39821a,null))[_0x493c('0x21')](function(_0x21afed){if(_0x21afed&&_0x21afed[_0x493c('0x9b')]){_0x1ff9fb[_0x493c('0x9e')]=_0x21afed;_0x1ff9fb[_0x493c('0x9f')]=_0x21afed['Applications'];_0x1ff9fb['list']=_0x21afed[_0x493c('0x9b')];_0x1ff9fb[_0x493c('0x9f')]=_[_0x493c('0xa0')](_0x1ff9fb[_0x493c('0x9f')],[_0x493c('0xa1')],[_0x493c('0xa2')]);if(_0x1ff9fb[_0x493c('0x9e')][_0x493c('0x9d')]){delete _0x1ff9fb[_0x493c('0x9e')][_0x493c('0x9d')];}if(_0x1ff9fb['account'][_0x493c('0x9b')]&&_0x1ff9fb[_0x493c('0x9e')][_0x493c('0x9b')][_0x493c('0x9c')][_0x493c('0x55')]){return _0x1ff9fb[_0x493c('0x9e')][_0x493c('0x9b')][_0x493c('0x9c')][0x0];}var _0x4dfb7e=_[_0x493c('0x18')](_0x5700f1[_0x493c('0x58')],{'firstName':_0x5700f1[_0x493c('0x58')][_0x493c('0x91')],'ListId':_0x21afed[_0x493c('0xa3')]});_0x4dfb7e[_0x5700f1['body'][_0x493c('0x96')]]=_0x5700f1['body']['from'];return db['CmContact'][_0x493c('0x57')](_0x4dfb7e,{'fields':_0x4363c1,'raw':!![]});}})['then'](handleEntityNotFound(_0x39821a,null))[_0x493c('0x21')](function(_0x13df01){_0x1ff9fb[_0x493c('0xa4')]=_0x13df01;var _0x7f0cfa=_0x5700f1['body'][_0x493c('0xa5')];if(_0x5700f1[_0x493c('0x8b')][_0x493c('0xa6')]){_0x7f0cfa=_0x5700f1[_0x493c('0x8b')][_0x493c('0xa6')];}else if(_0x5700f1[_0x493c('0x8b')][_0x493c('0xa7')]){_0x7f0cfa=_[_0x493c('0xa8')](_0x5700f1[_0x493c('0x8b')][_0x493c('0xa7')][_0x493c('0xa9')](','));}if(_0x13df01){var _0x49a97e={'ContactId':_0x13df01['id'],'ChatWebsiteId':_0x5700f1[_0x493c('0x60')]['id'],'from':(_0x13df01[_0x493c('0xaa')]||'')+'\x20'+(_0x13df01[_0x493c('0xab')]||''),'customerIp':_0x7f0cfa,'customerPort':_0x5700f1[_0x493c('0x8b')][_0x493c('0xac')]?_0x5700f1['headers'][_0x493c('0xac')]:null,'referer':_0x5700f1[_0x493c('0x58')]['referer'],'browserName':_0x1028c1[_0x493c('0xad')][_0x493c('0x38')]&&_0x1028c1[_0x493c('0xad')][_0x493c('0xae')]?util[_0x493c('0xaf')](_0x493c('0xb0'),_0x1028c1[_0x493c('0xad')]['name'],_0x1028c1['browser'][_0x493c('0xae')]):_0x493c('0xb1'),'browserVersion':_0x1028c1[_0x493c('0xad')][_0x493c('0xae')]||_0x493c('0xb1'),'osName':util[_0x493c('0xaf')](_0x493c('0xb0'),_0x1028c1['os'][_0x493c('0x38')],_0x1028c1['os']['version']),'osVersion':_0x1028c1['os']['version'],'deviceModel':_0x1028c1[_0x493c('0xb2')]['model']&&_0x1028c1[_0x493c('0xb2')][_0x493c('0xb3')]?util[_0x493c('0xaf')](_0x493c('0xb4'),_0x1028c1[_0x493c('0xb2')][_0x493c('0x3f')],_0x1028c1['device'][_0x493c('0xb3')],_0x1028c1['device']['type']):null,'deviceVendor':_0x1028c1[_0x493c('0xb2')][_0x493c('0xb3')],'deviceType':_0x1028c1['device']['type'],'formData':JSON['stringify'](_0x5700f1[_0x493c('0x58')])};var _0x824453={'ChatWebsiteId':_0x5700f1[_0x493c('0x60')]['id'],'closed':![]};if(_0x5700f1[_0x493c('0x58')][_0x493c('0xb5')]){_0x824453[_0x493c('0xb5')]=_0x5700f1[_0x493c('0x58')]['threadId'];return db[_0x493c('0xb6')][_0x493c('0x56')]({'where':_0x824453})[_0x493c('0x21')](function(_0x1d1e36){if(_0x1d1e36){return[_0x1d1e36,![]];}_0x49a97e[_0x493c('0xb5')]=_0x5700f1[_0x493c('0x58')][_0x493c('0xb5')];_0x49a97e['externalUrl']=_0x5700f1['body'][_0x493c('0xb7')];return db['ChatInteraction'][_0x493c('0x57')](_0x49a97e)['then'](function(_0x86eb56){return[_0x86eb56,!![]];});});}_0x824453[_0x493c('0xb8')]=_0x13df01['id'];if(_0x5700f1[_0x493c('0x58')][_0x493c('0xb9')]&&_0x5700f1[_0x493c('0x58')][_0x493c('0xb9')]['id']){_0x824453['id']=_0x5700f1['body']['interaction']['id'];return db['ChatInteraction'][_0x493c('0x56')]({'where':_0x824453})[_0x493c('0x21')](function(_0x4531b5){if(_0x4531b5){return[_0x4531b5,![]];}return db['ChatInteraction']['create'](_0x49a97e)[_0x493c('0x21')](function(_0x3f49e1){return[_0x3f49e1,!![]];});});}return db[_0x493c('0xb6')][_0x493c('0x57')](_0x49a97e)['then'](function(_0x4930b0){return[_0x4930b0,!![]];});}})[_0x493c('0xba')](function(_0x45ebcf,_0x593866){if(_0x45ebcf){_0x5994ae=_0x593866;if(!_0x593866){var _0x12f152={'from':(_0x1ff9fb[_0x493c('0xa4')][_0x493c('0xaa')]||'')+'\x20'+(_0x1ff9fb[_0x493c('0xa4')][_0x493c('0xab')]||'')};if(_0x5700f1['body'][_0x493c('0xb5')]&&_0x5700f1['body'][_0x493c('0xbb')]&&_0x5700f1[_0x493c('0x58')][_0x493c('0xb5')]!=_0x5700f1[_0x493c('0x58')][_0x493c('0xbb')]){_0x12f152[_0x493c('0xb5')]=_0x5700f1[_0x493c('0x58')][_0x493c('0xbb')];}return _0x45ebcf[_0x493c('0x5f')](_0x12f152);}else{return _0x45ebcf;}}})[_0x493c('0x21')](function(_0x2daa2b){_0x1ff9fb[_0x493c('0xb9')]=_0x2daa2b[_0x493c('0x33')]({'plain':!![]});_0x1ff9fb['interaction'][_0x493c('0xbc')]=_0x5994ae;if(_0x1ff9fb[_0x493c('0xb9')][_0x493c('0xbc')]){if(_0x1ff9fb[_0x493c('0x9e')][_0x493c('0xbd')]){_0x1ff9fb[_0x493c('0x9f')][_0x493c('0xbe')]({'id':0x0,'priority':_0x1ff9fb[_0x493c('0x9f')][_0x493c('0x55')]+0x1,'app':_0x493c('0xbf'),'appdata':_0x493c('0xc0'),'interval':_0x493c('0xc1')});}}return db['ChatMessage']['create']({'body':_0x5700f1[_0x493c('0x58')][_0x493c('0x58')],'ChatWebsiteId':_0x5700f1[_0x493c('0x60')]['id'],'ChatInteractionId':_0x2daa2b['id'],'direction':'in','ContactId':_0x1ff9fb['contact']['id'],'AttachmentId':_0x5700f1['body'][_0x493c('0xc2')]});})['then'](function(_0x473b89){_0x1ff9fb[_0x493c('0x27')]=_0x473b89;if(_0x1ff9fb['interaction'][_0x493c('0xc3')]){return db[_0x493c('0xc4')]['find']({'attributes':['id','name'],'where':{'id':_0x1ff9fb[_0x493c('0xb9')][_0x493c('0xc3')]}})[_0x493c('0x21')](function(_0x38753c){if(_0x38753c){_0x1ff9fb['applications'][_0x493c('0xc5')]({'id':0x0,'priority':0x0,'app':_0x493c('0xc6'),'appdata':_0x38753c[_0x493c('0x38')]+','+(_0x1ff9fb[_0x493c('0x9e')][_0x493c('0xc7')]||0xa),'interval':_0x493c('0xc1')});_0x1ff9fb[_0x493c('0xc8')]=!![];}return respondWithRpcPromise(_0x493c('0xc9'),'startRouting',_0x1ff9fb);});}return respondWithRpcPromise(_0x493c('0xc9'),_0x493c('0xca'),_0x1ff9fb);})['then'](function(_0x32a95c){respondWithRpcPromise(_0x493c('0xcb'),_0x493c('0xcb'),{'event':'notify','message':_0x32a95c},client9002);return _0x32a95c;})[_0x493c('0x21')](respondWithResult(_0x39821a,null))['catch'](handleError(_0x39821a,null));};exports[_0x493c('0xcc')]=function(_0x19bbb1,_0x78dbda,_0x1edd01){var _0x3e7c87,_0x59af64,_0x458657;var _0x438c2a=[];var _0x50a5c4=[];var _0x9d1d9e={};var _0x5f25f9=_0x19bbb1[_0x493c('0xcd')]||[];var _0x21b2e7=[];var _0x2b6e3e;return db[_0x493c('0x8c')][_0x493c('0x62')]()[_0x493c('0x21')](function(_0x2dee4e){if(!_0x2dee4e){throw new db[(_0x493c('0x92'))][(_0x493c('0x93'))]('no\x20available\x20attributes');}_0x50a5c4=_[_0x493c('0x8f')](_[_0x493c('0x54')](_0x2dee4e),[_0x493c('0x90'),_0x493c('0x8e')]);_0x438c2a=_['difference'](_[_0x493c('0x54')](_0x2dee4e),[_0x493c('0x90'),'updatedAt',_0x493c('0xce'),_0x493c('0xa3')]);if(_0x19bbb1[_0x493c('0x58')]['id']){delete _0x19bbb1[_0x493c('0x58')]['id'];}if(_['isNil'](_0x19bbb1[_0x493c('0x58')][_0x493c('0x91')])){throw _0x78dbda[_0x493c('0x2b')](0x1f4)[_0x493c('0x39')](new db[(_0x493c('0x92'))][(_0x493c('0x93'))](_0x493c('0x94')));}if(_['isNil'](_0x19bbb1['body']['body'])||_0x19bbb1[_0x493c('0x58')][_0x493c('0x58')]===''){throw _0x78dbda[_0x493c('0x2b')](0x1f4)[_0x493c('0x39')](new db['Sequelize'][(_0x493c('0x93'))](_0x493c('0x95')));}if(_['isNil'](_0x19bbb1[_0x493c('0x58')]['mapKeyOffline'])){throw _0x78dbda['status'](0x1f4)[_0x493c('0x39')](new db['Sequelize'][(_0x493c('0x93'))](_0x493c('0xcf')+_0x438c2a));}if(!_['includes'](_0x438c2a,_0x19bbb1['body'][_0x493c('0xd0')])){throw _0x78dbda[_0x493c('0x2b')](0x1f4)[_0x493c('0x39')](new db[(_0x493c('0x92'))][(_0x493c('0x93'))](_0x493c('0xd1')+_0x438c2a));}_0x9d1d9e[_0x19bbb1[_0x493c('0x58')][_0x493c('0xd0')]]=_0x19bbb1[_0x493c('0x58')][_0x493c('0x91')];})[_0x493c('0x21')](function(){return db[_0x493c('0x4e')]['find']({'where':{'id':_0x19bbb1['params']['id']},'include':[{'model':db[_0x493c('0x9a')],'as':_0x493c('0x9b')},{'model':db[_0x493c('0xd2')],'as':_0x493c('0xd2')}]});})[_0x493c('0x21')](handleEntityNotFound(_0x78dbda,null))[_0x493c('0x21')](function(_0x5a14d9){if(_0x5a14d9&&_0x5a14d9[_0x493c('0x9b')]){_0x59af64=_0x5a14d9;var _0x48fd9d=_[_0x493c('0x18')](_0x19bbb1['body'],{'firstName':_0x19bbb1[_0x493c('0x58')][_0x493c('0x91')],'phone':_0x19bbb1[_0x493c('0x58')]['from'],'ListId':_0x5a14d9[_0x493c('0xa3')]});_0x48fd9d[_0x19bbb1[_0x493c('0x58')][_0x493c('0xd0')]]=_0x19bbb1[_0x493c('0x58')][_0x493c('0x91')];return db[_0x493c('0x8c')][_0x493c('0xd3')]({'where':_0x9d1d9e,'defaults':_0x48fd9d});}})[_0x493c('0xba')](function(_0x889ffb){if(_0x889ffb){_0x458657=_0x889ffb;var _0xfe3a49=fs['readFileSync'](path[_0x493c('0x76')](config[_0x493c('0x7b')],_0x493c('0xd4')),_0x493c('0xd5'));var _0x50fbec=ejs[_0x493c('0xd6')](_0xfe3a49,{'body':_[_0x493c('0xd7')](_0x19bbb1[_0x493c('0x58')][_0x493c('0x58')]),'bodyTitle':_0x59af64[_0x493c('0xd8')]});return db[_0x493c('0xd9')][_0x493c('0x57')]({'body':_0x50fbec,'ContactId':_0x889ffb['id'],'ChatWebsiteId':_0x59af64['id']});}})[_0x493c('0x21')](function(_0x3fe5a4){_0x2b6e3e=_0x3fe5a4;if(_0x5f25f9['length']){var _0x5f2ccf=_0x5f25f9['map'](function(_0x59f60d){return{'name':_0x59f60d[_0x493c('0xda')],'basename':_0x59f60d[_0x493c('0x71')],'type':_0x59f60d['mimetype'],'ChatOfflineMessageId':_0x3fe5a4['id']};});_0x21b2e7=_0x5f2ccf[_0x493c('0x3b')](_0x25db40=>{var _0x4a14eb={'filename':_0x25db40['name'],'path':path[_0x493c('0x76')](config['root'],_0x493c('0xdb'),_0x493c('0xcd'),_0x493c('0xdc'),'offline-chat',_0x25db40[_0x493c('0xdd')])};return _0x4a14eb;});if(!_0x59af64['openNewInteraction']){return db[_0x493c('0xde')][_0x493c('0xdf')](function(_0x33bbe3){return db[_0x493c('0xe0')]['bulkCreate'](_0x5f2ccf,{'transaction':_0x33bbe3});});}}})[_0x493c('0x21')](function(){if(_0x2b6e3e){_0x3e7c87=_0x2b6e3e;return db[_0x493c('0xd2')][_0x493c('0x66')]({'where':{'active':!![]},'include':[{'model':db[_0x493c('0xe1')],'as':_0x493c('0xe2'),'raw':!![]}]});}})['then'](function(_0x3ed42e){if(_0x3ed42e&&_0x3ed42e[_0x493c('0xe2')]&&_0x59af64[_0x493c('0xe3')]&&_0x59af64[_0x493c('0xe4')]){var _0x112341={'tls':{'rejectUnauthorized':![]}};if(_0x3ed42e[_0x493c('0xe2')][_0x493c('0xe5')]){_0x112341[_0x493c('0xe5')]=_0x3ed42e[_0x493c('0xe2')]['service'];}else{_0x112341[_0x493c('0xe6')]=_0x3ed42e[_0x493c('0xe2')][_0x493c('0xe6')];_0x112341[_0x493c('0xe7')]=_0x3ed42e['Smtp']['port'];_0x112341['secure']=_0x3ed42e[_0x493c('0xe2')]['secure'];}if(_0x3ed42e[_0x493c('0xe2')][_0x493c('0xe8')]){_0x112341[_0x493c('0xe9')]={'user':_0x3ed42e[_0x493c('0xe2')][_0x493c('0x59')],'pass':_0x3ed42e[_0x493c('0xe2')][_0x493c('0xea')]};}return respondWithRpcPromise(_0x493c('0xeb'),_0x493c('0xec'),{'account':_0x112341,'message':{'from':util[_0x493c('0xaf')](_0x493c('0xed'),_0x3ed42e[_0x493c('0x38')],_0x3ed42e[_0x493c('0xee')]||_0x3ed42e[_0x493c('0xe2')][_0x493c('0x59')]),'to':_0x59af64[_0x493c('0xe4')],'subject':_0x59af64[_0x493c('0xef')],'html':_0x3e7c87[_0x493c('0x58')],'attachments':_0x21b2e7}},client9003)['then'](function(){return _0x3e7c87;})[_0x493c('0x29')](function(_0x446717){console[_0x493c('0x26')](_0x446717);});}})[_0x493c('0x21')](function(){if(_0x59af64&&_0x59af64[_0x493c('0xf0')]&&_0x59af64[_0x493c('0xf1')]){var _0x2a43cb=[];if(_0x5f25f9[_0x493c('0x55')]){_0x2a43cb=_0x5f25f9[_0x493c('0x3b')](function(_0x13eddd){return{'name':_0x13eddd[_0x493c('0xda')],'basename':_0x13eddd[_0x493c('0x71')],'type':_0x13eddd[_0x493c('0xf2')],'ChatOfflineMessageId':_0x2b6e3e['id']};});}var _0x38baf6;if(!_[_0x493c('0x7a')](_0x59af64[_0x493c('0xf3')])){var _0x2a92bc=_[_0x493c('0x3b')](_0x19bbb1[_0x493c('0x58')],function(_0x19d1db){return _0x19d1db;});var _0x4532b1=_[_0x493c('0xf4')](_0x2a92bc)[0x0];var _0x152d10=_['mapValues'](_0x4532b1,function(_0x2a4917){return _0x2a4917;});_0x38baf6=_0x152d10[0x1][_0x59af64[_0x493c('0xf3')]];}var _0x3d6d16={'from':_0x458657['email'],'firstName':_0x458657[_0x493c('0xaa')],'lastName':_0x458657[_0x493c('0xab')],'mapKey':_0x493c('0xee'),'message':{'from':_0x458657[_0x493c('0xee')],'to':_0x59af64[_0x493c('0xd2')][_0x493c('0xee')],'cc':'','subject':_[_0x493c('0x7a')](_0x38baf6)?_0x59af64[_0x493c('0xef')]:_0x38baf6,'messageId':'','sentAt':new Date(),'attach':_0x2a43cb['length'],'attachments':_0x2a43cb,'originChannel':_0x493c('0xf5'),'ChatWebsiteId':_0x59af64['id'],'ChatOfflineMessageId':_0x3e7c87['id'],'originTo':_0x59af64[_0x493c('0xd2')]['email']},'body':_0x3e7c87[_0x493c('0x58')]};var _0x158a31={'account':{'id':_0x59af64[_0x493c('0xf1')]},'body':_0x3d6d16,'log':_0x493c('0xf6')};return respondWithRpcPromise(_0x493c('0xf6'),_0x493c('0xf7'),_0x158a31,client9001)['then'](function(){return _0x3e7c87;})[_0x493c('0x29')](function(_0x27bd9a){console[_0x493c('0x26')](_0x27bd9a);});}return;})[_0x493c('0x21')](function(){if(_0x3e7c87){return _0x3e7c87;}})['then'](respondWithResult(_0x78dbda,null))[_0x493c('0x29')](function(_0x3cb34c){console[_0x493c('0x26')](_0x493c('0x29'),_0x3cb34c);for(var _0x17635b of _0x5f25f9){var _0x2cee33=path[_0x493c('0x76')](config[_0x493c('0x7b')],_0x493c('0xdb'),_0x493c('0xcd'),_0x493c('0xdc'),'offline-chat',_0x17635b[_0x493c('0x71')]);fs_extra[_0x493c('0xf8')](_0x2cee33)['catch'](function(_0x8ec41a){console['error'](_0x493c('0xf9'),_0x2cee33,_0x8ec41a);});}});};exports['addInteraction']=function(_0x50905c,_0x4960e4,_0x2adfb8){return db[_0x493c('0xb6')][_0x493c('0x56')]({'where':{'id':_0x50905c[_0x493c('0x60')]['id']}})['then'](handleEntityNotFound(_0x4960e4,null))[_0x493c('0x21')](function(_0x110b96){if(_0x110b96){return _0x110b96[_0x493c('0xfa')](_0x50905c[_0x493c('0x58')][_0x493c('0x6e')],_[_0x493c('0xfb')](_0x50905c[_0x493c('0x58')],['ids','id'])||{});}})[_0x493c('0x21')](respondWithResult(_0x4960e4,null))[_0x493c('0x29')](handleError(_0x4960e4,null));};exports['getInteractions']=function(_0x223d66,_0x45d9bc,_0x4191c9){var _0x77c2e8={'raw':![],'where':{}};var _0x2fbfca={};var _0x4b3436={'count':0x0,'rows':[]};return db[_0x493c('0x4e')][_0x493c('0x66')]({'where':{'id':_0x223d66[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x45d9bc,null))[_0x493c('0x21')](function(_0x5b04f4){if(_0x5b04f4){_0x2fbfca['model']=_[_0x493c('0x54')](db[_0x493c('0xb6')][_0x493c('0x3c')]);_0x2fbfca[_0x493c('0x40')]=_[_0x493c('0x54')](_0x223d66[_0x493c('0x40')]);_0x2fbfca['filters']=_[_0x493c('0x42')](_0x2fbfca[_0x493c('0x3f')],_0x2fbfca[_0x493c('0x40')]);_0x77c2e8[_0x493c('0x43')]=_['intersection'](_0x2fbfca[_0x493c('0x3f')],qs[_0x493c('0x44')](_0x223d66[_0x493c('0x40')][_0x493c('0x44')]));_0x77c2e8['attributes']=_0x77c2e8[_0x493c('0x43')][_0x493c('0x55')]?_0x77c2e8['attributes']:_0x2fbfca[_0x493c('0x3f')];if(!_0x223d66[_0x493c('0x40')][_0x493c('0x45')](_0x493c('0x67'))){_0x77c2e8[_0x493c('0x2e')]=qs['limit'](_0x223d66[_0x493c('0x40')][_0x493c('0x2e')]);_0x77c2e8[_0x493c('0x30')]=qs[_0x493c('0x30')](_0x223d66[_0x493c('0x40')][_0x493c('0x30')]);}_0x77c2e8[_0x493c('0x46')]=qs[_0x493c('0x47')](_0x223d66[_0x493c('0x40')]['sort']);_0x77c2e8['where']=qs['filters'](_[_0x493c('0x49')](_0x223d66[_0x493c('0x40')],_0x2fbfca[_0x493c('0x41')]));_0x77c2e8['where']['ChatWebsiteId']=_0x5b04f4['id'];if(_0x223d66[_0x493c('0x40')][_0x493c('0x4a')]){_0x77c2e8[_0x493c('0x48')]=_[_0x493c('0x4b')](_0x77c2e8[_0x493c('0x48')],{'$or':_['map'](_0x77c2e8[_0x493c('0x43')],function(_0x44a0b4){var _0x4d723f={};_0x4d723f[_0x44a0b4]={'$like':'%'+_0x223d66['query'][_0x493c('0x4a')]+'%'};return _0x4d723f;})});}_0x77c2e8=_[_0x493c('0x4b')]({},_0x77c2e8,_0x223d66[_0x493c('0x4d')]);return db[_0x493c('0xb6')][_0x493c('0x2f')]({'where':_0x77c2e8[_0x493c('0x48')]})[_0x493c('0x21')](function(_0x4a1c39){_0x4b3436['count']=_0x4a1c39;if(_0x223d66[_0x493c('0x40')]['includeAll']){_0x77c2e8['include']=[{'model':db[_0x493c('0x8c')],'as':_0x493c('0xfc'),'required':![]},{'model':db[_0x493c('0xc4')],'as':_0x493c('0xfd'),'attributes':[_0x493c('0x38'),_0x493c('0xfe'),'internal'],'required':![]},{'model':db[_0x493c('0xff')],'as':'Tags','attributes':['id',_0x493c('0x38'),_0x493c('0x100')],'where':_0x223d66['query']['tag']?{'id':_0x223d66[_0x493c('0x40')][_0x493c('0x101')]}:undefined,'required':_0x223d66['query'][_0x493c('0x101')]?!![]:![]}];}return db[_0x493c('0xb6')][_0x493c('0x51')](_0x77c2e8);})[_0x493c('0x21')](function(_0x1496f8){_0x4b3436[_0x493c('0x52')]=_0x1496f8;return _0x4b3436;});}})[_0x493c('0x21')](respondWithFilteredResult(_0x45d9bc,_0x77c2e8))[_0x493c('0x29')](handleError(_0x45d9bc,null));};function iftimePromise(_0x49ad3d,_0x313b3a){return respondWithRpcPromise('Command',_0x493c('0x102'),{'command':_0x313b3a[_0x493c('0x103')]?util['format'](_0x493c('0x104'),_0x49ad3d[_0x493c('0x105')],_0x313b3a[_0x493c('0x103')]):util[_0x493c('0xaf')](_0x493c('0x106'),_0x49ad3d[_0x493c('0x105')])},client9002)[_0x493c('0x21')](function(_0x200f3f){var _0xd9c246=_0x200f3f&&_0x200f3f[_0x493c('0x107')](_0x493c('0x108'))>=0x0?!![]:![];logger[_0x493c('0x22')](_0x493c('0x109'),_0x313b3a['id'],_0x49ad3d['id'],_0x49ad3d['interval'],_0xd9c246?'ONLINE':_0x493c('0x10a'),_0x313b3a[_0x493c('0x103')]?_0x313b3a[_0x493c('0x103')]:_0x493c('0x10b'));return _0xd9c246;})[_0x493c('0x29')](function(_0x4cd911){logger[_0x493c('0x26')](_0x493c('0x109'),_0x313b3a['id'],_0x49ad3d['id'],_0x49ad3d['interval'],util[_0x493c('0x10c')](_0x4cd911,{'showHidden':![],'depth':null}),_0x313b3a[_0x493c('0x103')]?_0x313b3a[_0x493c('0x103')]:_0x493c('0x10b'));return![];});}exports[_0x493c('0x102')]=function(_0x1cba4e,_0x3b8031,_0x30cbf3){var _0x280296=0x0;var _0x4e26f3=0x0;var _0x41a591=![];var _0x1655f4;var _0x159d3c;return db['ChatWebsite'][_0x493c('0x56')]({'where':{'id':_0x1cba4e[_0x493c('0x60')]['id']},'include':[{'model':db[_0x493c('0x10d')],'as':'Interval','include':[{'model':db[_0x493c('0x10d')],'as':_0x493c('0x10e'),'attributes':['id',_0x493c('0x105')],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x3b8031,null))[_0x493c('0x21')](function(_0x2c1854){if(_0x2c1854){_0x1655f4=_0x2c1854;return _0x2c1854[_0x493c('0x10f')]({'raw':!![]});}})[_0x493c('0x21')](function(_0x53d0c8){if(_0x1655f4){if(_0x53d0c8){_0x159d3c=_0x53d0c8;}}return require('../../config/license/util')['getLicense']();})[_0x493c('0x21')](function(_0x5a3fef){if(_0x5a3fef){_0x4e26f3=_0x5a3fef[_0x493c('0x110')];_0x41a591=_0x5a3fef['custom'];}})['then'](function(){return db['ChatInteraction'][_0x493c('0x2f')]({'where':{'closed':![]}});})[_0x493c('0x21')](function(_0x1aba3b){_0x280296=_0x1aba3b;if(_0x4e26f3&&_0x1aba3b>_0x4e26f3){return db[_0x493c('0x111')][_0x493c('0x66')]({'where':{'id':0x1}})[_0x493c('0x21')](function(_0x1823ba){if(_0x1823ba){_0x1823ba[_0x493c('0x112')]('chatLicenseExceeded');}});}})[_0x493c('0x21')](function(){if(_0x1655f4[_0x493c('0x10d')]&&_0x1655f4[_0x493c('0x10d')][_0x493c('0x10e')]){var _0x283012=[];for(var _0x55fc09=0x0;_0x55fc09<_0x1655f4[_0x493c('0x10d')][_0x493c('0x10e')][_0x493c('0x55')];_0x55fc09++){var _0x1a3a13=_0x1655f4['Interval'][_0x493c('0x10e')][_0x55fc09]['get']({'plain':!![]});_0x283012[_0x493c('0xbe')](iftimePromise(_0x1a3a13,_0x1655f4));}return BPromise[_0x493c('0x113')](_0x283012)['then'](function(_0x784146){return _[_0x493c('0x114')](_0x784146);});}else{return!![];}})['then'](function(_0x56235e){var _0x52d138=fs[_0x493c('0x115')](path[_0x493c('0x76')](config[_0x493c('0x7b')],'server/files/chat/iframe.ejs'),_0x493c('0xd5'));var _0x480f2e={'remote':_0x1655f4[_0x493c('0x116')],'query':querystring[_0x493c('0x117')](_['merge'](_0x1655f4[_0x493c('0x33')]({'plain':!![]}),{'customerIp':_0x1cba4e[_0x493c('0x8b')][_0x493c('0xa7')]||_0x1cba4e[_0x493c('0x8b')][_0x493c('0x118')]||_0x1cba4e['connection']['remoteAddress']||_0x1cba4e['ip'],'referer':_0x1cba4e['headers'][_0x493c('0x119')],'openedInteractions':_0x280296,'maxInteractions':_0x4e26f3,'virtual':_0x41a591[_0x493c('0x110')],'online':_0x56235e,'custom':_0x41a591}))['replace'](/'/g,'\x5c\x27')};_0x3b8031[_0x493c('0x39')](ejs['render'](Mustache['render'](_0x52d138,_0x480f2e),{'proactiveActions':_0x159d3c,'alignment':_0x1655f4[_0x493c('0x11a')],'verticalAlignment':_0x1655f4[_0x493c('0x11b')],'div_color':_0x1655f4[_0x493c('0x100')],'text_color':_0x1655f4[_0x493c('0x11c')],'button_color':_0x1655f4[_0x493c('0x11d')],'background_color':_0x1655f4[_0x493c('0x11e')]}));})[_0x493c('0x29')](handleError(_0x3b8031,null));};exports[_0x493c('0x11f')]=function(_0xa71670,_0x3c122d,_0xef9fc8){return db[_0x493c('0x4e')][_0x493c('0x66')]({'where':{'id':_0xa71670[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x3c122d,null))[_0x493c('0x21')](function(_0x3e1ab6){if(_0x3e1ab6){return db[_0x493c('0xde')][_0x493c('0xdf')](function(_0x47c78d){return db['ChatApplication'][_0x493c('0x61')]({'where':{'ChatWebsiteId':_0xa71670[_0x493c('0x60')]['id']},'transaction':_0x47c78d})[_0x493c('0x21')](function(_0x40b28d){var _0x209286=_['map'](_0xa71670[_0x493c('0x58')],function(_0x524d17){_0x524d17[_0x493c('0x68')]=_0xa71670[_0x493c('0x60')]['id'];return _0x524d17;});return db['ChatApplication'][_0x493c('0x120')](_0x209286,{'transaction':_0x47c78d});});})[_0x493c('0x21')](function(){return db[_0x493c('0x121')]['findAndCountAll']({'where':{'ChatWebsiteId':_0xa71670[_0x493c('0x60')]['id']},'order':_0x493c('0xa1')});});}})['then'](respondWithResult(_0x3c122d,null))[_0x493c('0x29')](handleError(_0x3c122d,null));};exports['getApplications']=function(_0x58f4c7,_0x29d84f,_0x477e2c){var _0x3661ca={};var _0x5d8a2b={};var _0x1986ca;var _0x59f188;return db[_0x493c('0x4e')][_0x493c('0x66')]({'where':{'id':_0x58f4c7[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x29d84f,null))['then'](function(_0x2d8a38){if(_0x2d8a38){_0x1986ca=_0x2d8a38;_0x5d8a2b[_0x493c('0x3f')]=_[_0x493c('0x54')](db[_0x493c('0x121')]['rawAttributes']);_0x5d8a2b[_0x493c('0x40')]=_[_0x493c('0x54')](_0x58f4c7['query']);_0x5d8a2b[_0x493c('0x41')]=_[_0x493c('0x42')](_0x5d8a2b[_0x493c('0x3f')],_0x5d8a2b[_0x493c('0x40')]);_0x3661ca[_0x493c('0x43')]=_[_0x493c('0x42')](_0x5d8a2b['model'],qs[_0x493c('0x44')](_0x58f4c7[_0x493c('0x40')]['fields']));_0x3661ca[_0x493c('0x43')]=_0x3661ca['attributes'][_0x493c('0x55')]?_0x3661ca[_0x493c('0x43')]:_0x5d8a2b[_0x493c('0x3f')];_0x3661ca['order']=qs[_0x493c('0x47')](_0x58f4c7['query'][_0x493c('0x47')]);_0x3661ca['where']=qs[_0x493c('0x41')](_[_0x493c('0x49')](_0x58f4c7[_0x493c('0x40')],_0x5d8a2b[_0x493c('0x41')]));if(_0x58f4c7[_0x493c('0x40')][_0x493c('0x4a')]){_0x3661ca[_0x493c('0x48')]=_['merge'](_0x3661ca[_0x493c('0x48')],{'$or':_['map'](_0x3661ca[_0x493c('0x43')],function(_0x37e297){var _0x2fdeac={};_0x2fdeac[_0x37e297]={'$like':'%'+_0x58f4c7[_0x493c('0x40')][_0x493c('0x4a')]+'%'};return _0x2fdeac;})});}_0x3661ca=_['merge']({},_0x3661ca,_0x58f4c7[_0x493c('0x4d')]);return _0x1986ca[_0x493c('0x122')](_0x3661ca);}})[_0x493c('0x21')](function(_0x18604d){if(_0x18604d){_0x59f188=_0x18604d['length'];if(!_0x58f4c7[_0x493c('0x40')][_0x493c('0x45')](_0x493c('0x67'))){_0x3661ca[_0x493c('0x2e')]=qs['limit'](_0x58f4c7[_0x493c('0x40')][_0x493c('0x2e')]);_0x3661ca[_0x493c('0x30')]=qs[_0x493c('0x30')](_0x58f4c7[_0x493c('0x40')][_0x493c('0x30')]);}return _0x1986ca['getApplications'](_0x3661ca);}})[_0x493c('0x21')](function(_0x37094c){if(_0x37094c){return _0x37094c?{'count':_0x59f188,'rows':_0x37094c}:null;}})[_0x493c('0x21')](respondWithResult(_0x29d84f,null))[_0x493c('0x29')](handleError(_0x29d84f,null));};exports[_0x493c('0x123')]=function(_0x5c62b1,_0x153860,_0x830eee){return db[_0x493c('0x124')]['find']({'where':{'id':_0x5c62b1[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x153860,null))[_0x493c('0x21')](function(_0x4d3ba9){if(_0x4d3ba9){return _0x4d3ba9[_0x493c('0x123')](_0x5c62b1[_0x493c('0x58')]['ids'],_[_0x493c('0xfb')](_0x5c62b1[_0x493c('0x58')],[_0x493c('0x6e'),'id'])||{});}})[_0x493c('0x21')](respondWithResult(_0x153860,null))[_0x493c('0x29')](handleError(_0x153860,null));};exports[_0x493c('0x10f')]=function(_0x158704,_0x4707e8,_0x627b7e){var _0x1ed736={};var _0x2fdc80={};var _0x29aafc;var _0x4a3d1c;return db[_0x493c('0x4e')][_0x493c('0x66')]({'where':{'id':_0x158704[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x4707e8,null))[_0x493c('0x21')](function(_0x8ed121){if(_0x8ed121){_0x29aafc=_0x8ed121;_0x2fdc80['model']=_[_0x493c('0x54')](db[_0x493c('0x125')][_0x493c('0x3c')]);_0x2fdc80['query']=_['keys'](_0x158704['query']);_0x2fdc80[_0x493c('0x41')]=_[_0x493c('0x42')](_0x2fdc80[_0x493c('0x3f')],_0x2fdc80[_0x493c('0x40')]);_0x1ed736[_0x493c('0x43')]=_[_0x493c('0x42')](_0x2fdc80[_0x493c('0x3f')],qs[_0x493c('0x44')](_0x158704[_0x493c('0x40')][_0x493c('0x44')]));_0x1ed736[_0x493c('0x43')]=_0x1ed736['attributes']['length']?_0x1ed736[_0x493c('0x43')]:_0x2fdc80[_0x493c('0x3f')];_0x1ed736[_0x493c('0x46')]=qs[_0x493c('0x47')](_0x158704['query'][_0x493c('0x47')]);_0x1ed736[_0x493c('0x48')]=qs['filters'](_[_0x493c('0x49')](_0x158704['query'],_0x2fdc80[_0x493c('0x41')]));if(_0x158704[_0x493c('0x40')]['filter']){_0x1ed736[_0x493c('0x48')]=_[_0x493c('0x4b')](_0x1ed736['where'],{'$or':_[_0x493c('0x3b')](_0x1ed736['attributes'],function(_0x5cc5d8){var _0x3dca59={};_0x3dca59[_0x5cc5d8]={'$like':'%'+_0x158704[_0x493c('0x40')]['filter']+'%'};return _0x3dca59;})});}_0x1ed736=_[_0x493c('0x4b')]({},_0x1ed736,_0x158704[_0x493c('0x4d')]);return _0x29aafc[_0x493c('0x10f')](_0x1ed736);}})[_0x493c('0x21')](function(_0x4a149d){if(_0x4a149d){_0x4a3d1c=_0x4a149d['length'];if(!_0x158704['query'][_0x493c('0x45')](_0x493c('0x67'))){_0x1ed736[_0x493c('0x2e')]=qs[_0x493c('0x2e')](_0x158704[_0x493c('0x40')][_0x493c('0x2e')]);_0x1ed736['offset']=qs[_0x493c('0x30')](_0x158704[_0x493c('0x40')][_0x493c('0x30')]);}return _0x29aafc[_0x493c('0x10f')](_0x1ed736);}})[_0x493c('0x21')](function(_0x1fd20a){if(_0x1fd20a){return _0x1fd20a?{'count':_0x4a3d1c,'rows':_0x1fd20a}:null;}})['then'](respondWithResult(_0x4707e8,null))['catch'](handleError(_0x4707e8,null));};exports['getFields']=function(_0x2ef228,_0x168a66,_0x5529f0){var _0x306c57=_0x2ef228[_0x493c('0x40')][_0x493c('0x126')]==='false'?_0x493c('0x127'):'onlineForm';return db[_0x493c('0x4e')][_0x493c('0x56')]({'attributes':['id',_0x306c57],'where':{'id':_0x2ef228[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x168a66,null))['then'](function(_0xc8bc18){if(_0xc8bc18){var _0x184996=_0xc8bc18[_0x306c57];var _0x46914d=_0x184996&&_0x184996['items']?_0x184996[_0x493c('0x128')]:[];_0x168a66[_0x493c('0x39')]({'fromKey':_['isNil'](_0x184996[_0x493c('0x129')])?undefined:_0x184996[_0x493c('0x129')],'count':_0x46914d[_0x493c('0x55')],'rows':_0x46914d});}})[_0x493c('0x29')](handleError(_0x168a66,null));};exports[_0x493c('0x12a')]=function(_0x1d49f6,_0x40e3ea,_0x2170fa){var _0x1e8a41={'raw':![],'where':{}};var _0x35d965={};var _0x58b79c={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x1d49f6[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x40e3ea,null))[_0x493c('0x21')](function(_0xab97d0){if(_0xab97d0){_0x35d965[_0x493c('0x3f')]=_[_0x493c('0x54')](db[_0x493c('0xd9')]['rawAttributes']);_0x35d965[_0x493c('0x40')]=_[_0x493c('0x54')](_0x1d49f6['query']);_0x35d965[_0x493c('0x41')]=_[_0x493c('0x42')](_0x35d965[_0x493c('0x3f')],_0x35d965[_0x493c('0x40')]);_0x1e8a41['attributes']=_[_0x493c('0x42')](_0x35d965[_0x493c('0x3f')],qs[_0x493c('0x44')](_0x1d49f6[_0x493c('0x40')][_0x493c('0x44')]));_0x1e8a41[_0x493c('0x43')]=_0x1e8a41[_0x493c('0x43')]['length']?_0x1e8a41[_0x493c('0x43')]:_0x35d965[_0x493c('0x3f')];if(!_0x1d49f6[_0x493c('0x40')][_0x493c('0x45')]('nolimit')){_0x1e8a41[_0x493c('0x2e')]=qs[_0x493c('0x2e')](_0x1d49f6[_0x493c('0x40')][_0x493c('0x2e')]);_0x1e8a41[_0x493c('0x30')]=qs[_0x493c('0x30')](_0x1d49f6[_0x493c('0x40')][_0x493c('0x30')]);}_0x1e8a41[_0x493c('0x46')]=qs[_0x493c('0x47')](_0x1d49f6[_0x493c('0x40')][_0x493c('0x47')]);_0x1e8a41[_0x493c('0x48')]=qs[_0x493c('0x41')](_[_0x493c('0x49')](_0x1d49f6['query'],_0x35d965[_0x493c('0x41')]));_0x1e8a41['where'][_0x493c('0x68')]=_0xab97d0['id'];if(_0x1d49f6[_0x493c('0x40')][_0x493c('0x4a')]){_0x1e8a41[_0x493c('0x48')]=_[_0x493c('0x4b')](_0x1e8a41[_0x493c('0x48')],{'$or':_[_0x493c('0x3b')](_0x1e8a41[_0x493c('0x43')],function(_0x32fa0f){var _0xd649e9={};_0xd649e9[_0x32fa0f]={'$like':'%'+_0x1d49f6[_0x493c('0x40')]['filter']+'%'};return _0xd649e9;})});}_0x1e8a41=_[_0x493c('0x4b')]({},_0x1e8a41,_0x1d49f6[_0x493c('0x4d')]);return db[_0x493c('0xd9')][_0x493c('0x2f')]({'where':_0x1e8a41[_0x493c('0x48')]})[_0x493c('0x21')](function(_0x208bfa){_0x58b79c['count']=_0x208bfa;if(_0x1d49f6[_0x493c('0x40')][_0x493c('0x4f')]){_0x1e8a41[_0x493c('0x50')]=[{'all':!![]}];}else{_0x1e8a41['include']=[{'model':db['CmContact'],'as':_0x493c('0xfc'),'required':![]},{'model':db[_0x493c('0xe0')],'as':'Attachments','required':![]}];}return db[_0x493c('0xd9')][_0x493c('0x51')](_0x1e8a41);})[_0x493c('0x21')](function(_0x3d9747){_0x58b79c[_0x493c('0x52')]=_0x3d9747;return _0x58b79c;});}})[_0x493c('0x21')](respondWithFilteredResult(_0x40e3ea,_0x1e8a41))['catch'](handleError(_0x40e3ea,null));};exports[_0x493c('0x12b')]=function(_0x12103e,_0x41344b,_0x4dd6ff){return db[_0x493c('0x4e')]['find']({'where':{'id':_0x12103e['params']['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x41344b,null))[_0x493c('0x21')](function(_0x36a767){if(_0x36a767){return _0x36a767[_0x493c('0x12b')](_0x12103e['body'][_0x493c('0x6e')],_[_0x493c('0xfb')](_0x12103e[_0x493c('0x58')],[_0x493c('0x6e'),'id'])||{})[_0x493c('0xba')](function(_0x533e7e){for(var _0x127a64=0x0;_0x127a64<_0x12103e[_0x493c('0x58')][_0x493c('0x6e')][_0x493c('0x55')];_0x127a64+=0x1){socket[_0x493c('0x12c')]('userChatWebsite:save',{'UserId':Number(_0x12103e[_0x493c('0x58')][_0x493c('0x6e')][_0x127a64]),'ChatWebsiteId':Number(_0x12103e['params']['id'])});}return _0x533e7e;});}})[_0x493c('0x21')](respondWithResult(_0x41344b,null))['catch'](handleError(_0x41344b,null));};exports['removeAgents']=function(_0x438861,_0x1193d2,_0x258af2){return db[_0x493c('0x4e')][_0x493c('0x56')]({'where':{'id':_0x438861[_0x493c('0x60')]['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x1193d2,null))[_0x493c('0x21')](function(_0x3c992e){if(_0x3c992e){return _0x3c992e['removeAgents'](_0x438861[_0x493c('0x40')][_0x493c('0x6e')])[_0x493c('0x21')](function(){if(_[_0x493c('0x12d')](_0x438861[_0x493c('0x40')][_0x493c('0x6e')])){for(var _0x454d20=0x0;_0x454d20<_0x438861[_0x493c('0x40')][_0x493c('0x6e')][_0x493c('0x55')];_0x454d20+=0x1){socket[_0x493c('0x12c')](_0x493c('0x12e'),{'UserId':Number(_0x438861[_0x493c('0x40')][_0x493c('0x6e')][_0x454d20]),'ChatWebsiteId':Number(_0x438861[_0x493c('0x60')]['id'])});}}else{socket[_0x493c('0x12c')]('userChatWebsite:remove',{'UserId':Number(_0x438861[_0x493c('0x40')]['ids']),'ChatWebsiteId':Number(_0x438861[_0x493c('0x60')]['id'])});}});}})[_0x493c('0x21')](respondWithStatusCode(_0x1193d2,null))[_0x493c('0x29')](handleError(_0x1193d2,null));};exports['getAgents']=function(_0x379842,_0x1a7e52,_0x2c85c9){var _0x2b7c4e={};var _0x25c410={};var _0x228870;var _0x3e8e42;return db[_0x493c('0x4e')][_0x493c('0x66')]({'where':{'id':_0x379842['params']['id']}})[_0x493c('0x21')](handleEntityNotFound(_0x1a7e52,null))[_0x493c('0x21')](function(_0x532e21){if(_0x532e21){_0x228870=_0x532e21;_0x25c410[_0x493c('0x3f')]=_['keys'](db[_0x493c('0xc4')]['rawAttributes']);_0x25c410[_0x493c('0x40')]=_[_0x493c('0x54')](_0x379842[_0x493c('0x40')]);_0x25c410[_0x493c('0x41')]=_[_0x493c('0x42')](_0x25c410[_0x493c('0x3f')],_0x25c410[_0x493c('0x40')]);_0x2b7c4e[_0x493c('0x43')]=_[_0x493c('0x42')](_0x25c410['model'],qs['fields'](_0x379842[_0x493c('0x40')][_0x493c('0x44')]));_0x2b7c4e[_0x493c('0x43')]=_0x2b7c4e[_0x493c('0x43')]['length']?_0x2b7c4e[_0x493c('0x43')]:_0x25c410[_0x493c('0x3f')];_0x2b7c4e['order']=qs[_0x493c('0x47')](_0x379842['query'][_0x493c('0x47')]);_0x2b7c4e[_0x493c('0x48')]=qs[_0x493c('0x41')](_['pick'](_0x379842[_0x493c('0x40')],_0x25c410[_0x493c('0x41')]));if(_0x379842['query'][_0x493c('0x4a')]){_0x2b7c4e[_0x493c('0x48')]=_[_0x493c('0x4b')](_0x2b7c4e['where'],{'$or':_[_0x493c('0x3b')](_0x2b7c4e[_0x493c('0x43')],function(_0x2a295e){var _0x4ba149={};_0x4ba149[_0x2a295e]={'$like':'%'+_0x379842['query'][_0x493c('0x4a')]+'%'};return _0x4ba149;})});}_0x2b7c4e=_[_0x493c('0x4b')]({},_0x2b7c4e,_0x379842[_0x493c('0x4d')]);return _0x228870['getAgents'](_0x2b7c4e);}})[_0x493c('0x21')](function(_0x44abb6){if(_0x44abb6){_0x3e8e42=_0x44abb6[_0x493c('0x55')];if(!_0x379842[_0x493c('0x40')][_0x493c('0x45')](_0x493c('0x67'))){_0x2b7c4e[_0x493c('0x2e')]=qs['limit'](_0x379842[_0x493c('0x40')]['limit']);_0x2b7c4e[_0x493c('0x30')]=qs['offset'](_0x379842[_0x493c('0x40')]['offset']);}return _0x228870[_0x493c('0x12f')](_0x2b7c4e);}})[_0x493c('0x21')](function(_0x5dcb30){if(_0x5dcb30){return _0x5dcb30?{'count':_0x3e8e42,'rows':_0x5dcb30}:null;}})[_0x493c('0x21')](respondWithResult(_0x1a7e52,null))['catch'](handleError(_0x1a7e52,null));};
\ No newline at end of file
+var _0xf797=['ChatMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','EventManager','offline','files','createdAt','CompanyId','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','offlineMessageBody','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','MailServerOut','forwardOffline','forwardOfflineAddress','Smtp','service','port','secure','authentication','auth','pass','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','MailAccountId','toPairsIn','mapValues','Chat','NotifyMailAccount','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','fullname','internal','Tag','Tags','color','tag','timezone','iftime\x20%s,%s','iftime\x20%s','interval','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','No\x20timezone','getSnippet','Interval','Intervals','getProactiveActions','virtual','increment','chatLicenseExceeded','all','server/files/chat/iframe.ejs','x-real-ip','remoteAddress','referer','replace','render','alignment','textColor','backgroundColor','addApplications','ChatApplication','findAndCountAll','getApplications','addProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','ChatOfflineMessage','Contact','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./chatWebsite.socket','register','jayson/promise','http','client','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','findAll','params','include','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','body','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','rawAttributes','rows','removeDispositions','ids','CannedAnswer','getAnswers','findOne','removeAnswers','addLogo','sitepic','file','filename','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','server/files/images/logos/default_logo.svg','getLicense','custom','isNil','existsSync','server/files/images/logos/','getAvatar','server/files/images/avatars/','getCustomerAvatar','root','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','download','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','user-agent','getResult','chat','CmContact','Sequelize','no\x20available\x20attributes','difference','updatedAt','ListId','from','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','Contacts','DESC','applications','Applications','orderBy','account','contact','customerIp','headers','cf-connecting-ip','x-forwarded-for','firstName','lastName','x-real-port','browser','format','%s\x20%s','unknown','version','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','interaction','spread','messageId','created','push','close','unmanaged','*,*,*,*'];(function(_0x55807b,_0x3c7611){var _0x352c7b=function(_0x2bedaf){while(--_0x2bedaf){_0x55807b['push'](_0x55807b['shift']());}};_0x352c7b(++_0x3c7611);}(_0xf797,0x70));var _0x7f79=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0xf797[_0x819464];return _0x49dcc0;};'use strict';var emlformat=require(_0x7f79('0x0'));var rimraf=require(_0x7f79('0x1'));var zipdir=require(_0x7f79('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7f79('0x3'));var BPromise=require(_0x7f79('0x4'));var Mustache=require(_0x7f79('0x5'));var util=require(_0x7f79('0x6'));var path=require('path');var sox=require(_0x7f79('0x7'));var csv=require(_0x7f79('0x8'));var ejs=require(_0x7f79('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7f79('0xa'));var squel=require(_0x7f79('0xb'));var crypto=require(_0x7f79('0xc'));var jsforce=require(_0x7f79('0xd'));var deskjs=require(_0x7f79('0xe'));var toCsv=require(_0x7f79('0x8'));var querystring=require(_0x7f79('0xf'));var Papa=require(_0x7f79('0x10'));var Redis=require(_0x7f79('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7f79('0x12'));var logger=require(_0x7f79('0x13'))(_0x7f79('0x14'));var utils=require(_0x7f79('0x15'));var config=require(_0x7f79('0x16'));var licenseUtil=require(_0x7f79('0x17'));var db=require('../../mysqldb')['db'];config[_0x7f79('0x18')]=_[_0x7f79('0x19')](config[_0x7f79('0x18')],{'host':_0x7f79('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7f79('0x1b'))[_0x7f79('0x1c')](socket);var jayson=require(_0x7f79('0x1d'));var client=jayson['client'][_0x7f79('0x1e')]({'port':0x232c});var client9002=jayson[_0x7f79('0x1f')]['http']({'port':0x232a});var client9003=jayson[_0x7f79('0x1f')][_0x7f79('0x1e')]({'port':0x232b});var client9001=jayson[_0x7f79('0x1f')][_0x7f79('0x1e')]({'port':0x2329});function respondWithRpcPromise(_0x4e3c30,_0x420d44,_0x2a5865,_0x11bab5){return new BPromise(function(_0x3824f5,_0x4d22a6){var _0x308096=_0x11bab5||client;return _0x308096[_0x7f79('0x20')](_0x4e3c30,_0x2a5865)[_0x7f79('0x21')](function(_0x4fb8ae){logger[_0x7f79('0x22')](_0x7f79('0x23'),_0x420d44,'request\x20sent');logger[_0x7f79('0x24')](_0x7f79('0x25'),_0x420d44,_0x7f79('0x26'),JSON[_0x7f79('0x27')](_0x4fb8ae));if(_0x4fb8ae[_0x7f79('0x28')]){if(_0x4fb8ae['error'][_0x7f79('0x29')]===0x1f4){logger[_0x7f79('0x28')](_0x7f79('0x23'),_0x420d44,_0x4fb8ae[_0x7f79('0x28')][_0x7f79('0x2a')]);return _0x4d22a6(_0x4fb8ae[_0x7f79('0x28')][_0x7f79('0x2a')]);}logger['error'](_0x7f79('0x23'),_0x420d44,_0x4fb8ae[_0x7f79('0x28')][_0x7f79('0x2a')]);return _0x3824f5(_0x4fb8ae['error'][_0x7f79('0x2a')]);}else{logger[_0x7f79('0x22')]('ChatWebsite,\x20%s,\x20%s',_0x420d44,_0x7f79('0x26'));_0x3824f5(_0x4fb8ae[_0x7f79('0x2b')]['message']);}})[_0x7f79('0x2c')](function(_0x4c0c73){logger[_0x7f79('0x28')](_0x7f79('0x23'),_0x420d44,_0x4c0c73);_0x4d22a6(_0x4c0c73);});});}function respondWithStatusCode(_0x4c052d,_0x141fb5){_0x141fb5=_0x141fb5||0xcc;return function(_0x359342){if(_0x359342){return _0x4c052d[_0x7f79('0x2d')](_0x141fb5);}return _0x4c052d[_0x7f79('0x2e')](_0x141fb5)[_0x7f79('0x2f')]();};}function respondWithResult(_0x55254e,_0x1c60e9){_0x1c60e9=_0x1c60e9||0xc8;return function(_0x13db11){if(_0x13db11){return _0x55254e[_0x7f79('0x2e')](_0x1c60e9)[_0x7f79('0x30')](_0x13db11);}};}function respondWithFilteredResult(_0x4645da,_0x448776){return function(_0x2e2d3f){if(_0x2e2d3f){var _0x43dc41=typeof _0x448776[_0x7f79('0x31')]===_0x7f79('0x32')&&typeof _0x448776['limit']==='undefined';var _0x5527ff=_0x2e2d3f[_0x7f79('0x33')];var _0x392533=_0x43dc41?0x0:_0x448776[_0x7f79('0x31')];var _0x3ef9f7=_0x43dc41?_0x2e2d3f[_0x7f79('0x33')]:_0x448776[_0x7f79('0x31')]+_0x448776[_0x7f79('0x34')];var _0x1f3a49;if(_0x3ef9f7>=_0x5527ff){_0x3ef9f7=_0x5527ff;_0x1f3a49=0xc8;}else{_0x1f3a49=0xce;}_0x4645da[_0x7f79('0x2e')](_0x1f3a49);return _0x4645da[_0x7f79('0x35')](_0x7f79('0x36'),_0x392533+'-'+_0x3ef9f7+'/'+_0x5527ff)[_0x7f79('0x30')](_0x2e2d3f);}return null;};}function patchUpdates(_0x100bd7){return function(_0x4cdf87){try{jsonpatch[_0x7f79('0x37')](_0x4cdf87,_0x100bd7,!![]);}catch(_0xf2d149){return BPromise[_0x7f79('0x38')](_0xf2d149);}return _0x4cdf87[_0x7f79('0x39')]();};}function saveUpdates(_0x2d25eb,_0x266a18){return function(_0x356bc0){if(_0x356bc0){return _0x356bc0[_0x7f79('0x3a')](_0x2d25eb)[_0x7f79('0x21')](function(_0x28c798){return _0x28c798;});}return null;};}function removeEntity(_0xf248dd,_0x272db9){return function(_0x4d3874){if(_0x4d3874){return _0x4d3874[_0x7f79('0x3b')]()['then'](function(){var _0x3ce5f2=_0x4d3874[_0x7f79('0x3c')]({'plain':!![]});var _0x4683bf='ChatWebsites';return db[_0x7f79('0x3d')][_0x7f79('0x3b')]({'where':{'type':_0x4683bf,'resourceId':_0x3ce5f2['id']}})[_0x7f79('0x21')](function(){return _0x4d3874;});})[_0x7f79('0x21')](function(){_0xf248dd['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f9032,_0x36efce){return function(_0x386a95){if(!_0x386a95){_0x3f9032[_0x7f79('0x2d')](0x194);}return _0x386a95;};}function handleError(_0x411165,_0x2369cc){_0x2369cc=_0x2369cc||0x1f4;return function(_0xb316a6){logger[_0x7f79('0x28')](_0xb316a6[_0x7f79('0x3e')]);if(_0xb316a6[_0x7f79('0x3f')]){delete _0xb316a6['name'];}_0x411165[_0x7f79('0x2e')](_0x2369cc)[_0x7f79('0x40')](_0xb316a6);};}exports[_0x7f79('0x41')]=function(_0x32c638,_0x57b629){var _0x78e261={'include':[{'model':db[_0x7f79('0x42')],'as':_0x7f79('0x43')}]},_0x33c18b={},_0x2681fe={'count':0x0,'rows':[]};var _0x17c4ed=_[_0x7f79('0x44')](db[_0x7f79('0x45')]['rawAttributes'],function(_0x57fb42){return{'name':_0x57fb42[_0x7f79('0x46')],'type':_0x57fb42[_0x7f79('0x47')][_0x7f79('0x48')]};});_0x33c18b[_0x7f79('0x49')]=_['map'](_0x17c4ed,_0x7f79('0x3f'));_0x33c18b[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x32c638[_0x7f79('0x4a')]);_0x33c18b[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x33c18b[_0x7f79('0x49')],_0x33c18b[_0x7f79('0x4a')]);_0x78e261[_0x7f79('0x4e')]=_['intersection'](_0x33c18b[_0x7f79('0x49')],qs[_0x7f79('0x4f')](_0x32c638[_0x7f79('0x4a')][_0x7f79('0x4f')]));_0x78e261[_0x7f79('0x4e')]=_0x78e261[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x78e261[_0x7f79('0x4e')]:_0x33c18b['model'];if(!_0x32c638['query'][_0x7f79('0x51')](_0x7f79('0x52'))){_0x78e261['limit']=qs[_0x7f79('0x34')](_0x32c638[_0x7f79('0x4a')]['limit']);_0x78e261[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x32c638[_0x7f79('0x4a')][_0x7f79('0x31')]);}_0x78e261[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x32c638[_0x7f79('0x4a')]['sort']);_0x78e261[_0x7f79('0x55')]=qs['filters'](_[_0x7f79('0x56')](_0x32c638[_0x7f79('0x4a')],_0x33c18b[_0x7f79('0x4c')]),_0x17c4ed);if(_0x32c638[_0x7f79('0x4a')]['filter']){_0x78e261[_0x7f79('0x55')]=_[_0x7f79('0x57')](_0x78e261['where'],{'$or':_['map'](_0x17c4ed,function(_0x195866){if(_0x195866[_0x7f79('0x47')]!==_0x7f79('0x58')){var _0x82ff={};_0x82ff[_0x195866[_0x7f79('0x3f')]]={'$like':'%'+_0x32c638['query'][_0x7f79('0x59')]+'%'};return _0x82ff;}})});}_0x78e261=_[_0x7f79('0x57')]({},_0x78e261,_0x32c638['options']);var _0x4ad5e1={'where':_0x78e261[_0x7f79('0x55')]};return db[_0x7f79('0x45')][_0x7f79('0x33')](_0x4ad5e1)['then'](function(_0x4d5158){_0x2681fe[_0x7f79('0x33')]=_0x4d5158;if(_0x32c638['query'][_0x7f79('0x5a')]){_0x78e261['include']=[{'all':!![]}];}return db[_0x7f79('0x45')][_0x7f79('0x5b')](_0x78e261);})[_0x7f79('0x21')](function(_0x193f7e){_0x2681fe['rows']=_0x193f7e;return _0x2681fe;})[_0x7f79('0x21')](respondWithFilteredResult(_0x57b629,_0x78e261))[_0x7f79('0x2c')](handleError(_0x57b629,null));};exports['show']=function(_0x37d89d,_0x491ff6){var _0x19f28b={'raw':![],'where':{'id':_0x37d89d[_0x7f79('0x5c')]['id']},'include':[{'model':db[_0x7f79('0x42')],'as':_0x7f79('0x43')}]},_0x3ccf99={};_0x3ccf99[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db[_0x7f79('0x45')]['rawAttributes']);_0x3ccf99['query']=_[_0x7f79('0x4b')](_0x37d89d[_0x7f79('0x4a')]);_0x3ccf99[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x3ccf99[_0x7f79('0x49')],_0x3ccf99[_0x7f79('0x4a')]);_0x19f28b['attributes']=_[_0x7f79('0x4d')](_0x3ccf99[_0x7f79('0x49')],qs['fields'](_0x37d89d[_0x7f79('0x4a')][_0x7f79('0x4f')]));_0x19f28b[_0x7f79('0x4e')]=_0x19f28b[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x19f28b['attributes']:_0x3ccf99[_0x7f79('0x49')];if(_0x37d89d['query'][_0x7f79('0x5a')]){_0x19f28b[_0x7f79('0x5d')]=[{'all':!![]}];}_0x19f28b=_['merge']({},_0x19f28b,_0x37d89d[_0x7f79('0x5e')]);return db['ChatWebsite']['find'](_0x19f28b)[_0x7f79('0x21')](handleEntityNotFound(_0x491ff6,null))[_0x7f79('0x21')](respondWithResult(_0x491ff6,null))[_0x7f79('0x2c')](handleError(_0x491ff6,null));};exports[_0x7f79('0x5f')]=function(_0x310a8c,_0x18fd1f){return db['ChatWebsite'][_0x7f79('0x5f')](_0x310a8c['body'],{})['then'](function(_0x2f26b7){var _0x409710=_0x310a8c[_0x7f79('0x60')][_0x7f79('0x3c')]({'plain':!![]});if(!_0x409710)throw new Error(_0x7f79('0x61'));if(_0x409710[_0x7f79('0x62')]===_0x7f79('0x60')){var _0x4e213e=_0x2f26b7['get']({'plain':!![]});var _0x51d056='ChatWebsites';return db[_0x7f79('0x63')][_0x7f79('0x64')]({'where':{'name':_0x51d056,'userProfileId':_0x409710[_0x7f79('0x65')]},'raw':!![]})[_0x7f79('0x21')](function(_0x52689a){if(_0x52689a&&_0x52689a[_0x7f79('0x66')]===0x0){return db['UserProfileResource'][_0x7f79('0x5f')]({'name':_0x4e213e[_0x7f79('0x3f')],'resourceId':_0x4e213e['id'],'type':_0x52689a[_0x7f79('0x3f')],'sectionId':_0x52689a['id']},{})[_0x7f79('0x21')](function(){return _0x2f26b7;});}else{return _0x2f26b7;}})['catch'](function(_0x35cca9){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x35cca9);throw _0x35cca9;});}return _0x2f26b7;})[_0x7f79('0x21')](respondWithResult(_0x18fd1f,0xc9))[_0x7f79('0x2c')](handleError(_0x18fd1f,null));};exports[_0x7f79('0x3a')]=function(_0x30c6ef,_0x5afe82){if(_0x30c6ef[_0x7f79('0x67')]['id']){delete _0x30c6ef[_0x7f79('0x67')]['id'];}return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x30c6ef['params']['id']},'include':[{'model':db[_0x7f79('0x42')],'as':_0x7f79('0x43')}]})[_0x7f79('0x21')](handleEntityNotFound(_0x5afe82,null))[_0x7f79('0x21')](saveUpdates(_0x30c6ef[_0x7f79('0x67')],null))[_0x7f79('0x21')](respondWithResult(_0x5afe82,null))['catch'](handleError(_0x5afe82,null));};exports['destroy']=function(_0x1170f4,_0xaad800){return db['ChatWebsite'][_0x7f79('0x64')]({'where':{'id':_0x1170f4[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0xaad800,null))['then'](removeEntity(_0xaad800,null))[_0x7f79('0x2c')](handleError(_0xaad800,null));};exports[_0x7f79('0x68')]=function(_0x38f5c4,_0x5965cc){return db[_0x7f79('0x45')][_0x7f79('0x68')]()[_0x7f79('0x21')](respondWithResult(_0x5965cc,null))['catch'](handleError(_0x5965cc,null));};exports[_0x7f79('0x69')]=function(_0x20a6e6,_0x57579a,_0x11d1fd){if(_0x20a6e6['body']['id']){delete _0x20a6e6[_0x7f79('0x67')]['id'];}return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x20a6e6[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x57579a,null))[_0x7f79('0x21')](function(_0xcd892){if(_0xcd892){_0x20a6e6[_0x7f79('0x67')][_0x7f79('0x6a')]=_0xcd892['id'];return db[_0x7f79('0x6b')][_0x7f79('0x5f')](_0x20a6e6['body']);}})[_0x7f79('0x21')](respondWithResult(_0x57579a,null))[_0x7f79('0x2c')](handleError(_0x57579a,null));};exports[_0x7f79('0x6c')]=function(_0x20e15b,_0x190740,_0x5777f0){var _0x327dec={'raw':![],'where':{}};var _0x45555f={};var _0x150176={'count':0x0,'rows':[]};return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x20e15b[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x190740,null))[_0x7f79('0x21')](function(_0x2c010d){if(_0x2c010d){_0x45555f[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db[_0x7f79('0x6b')][_0x7f79('0x6d')]);_0x45555f[_0x7f79('0x4a')]=_['keys'](_0x20e15b['query']);_0x45555f[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x45555f[_0x7f79('0x49')],_0x45555f['query']);_0x327dec['attributes']=_[_0x7f79('0x4d')](_0x45555f[_0x7f79('0x49')],qs['fields'](_0x20e15b[_0x7f79('0x4a')]['fields']));_0x327dec[_0x7f79('0x4e')]=_0x327dec['attributes'][_0x7f79('0x50')]?_0x327dec[_0x7f79('0x4e')]:_0x45555f[_0x7f79('0x49')];if(!_0x20e15b['query'][_0x7f79('0x51')](_0x7f79('0x52'))){_0x327dec[_0x7f79('0x34')]=qs[_0x7f79('0x34')](_0x20e15b[_0x7f79('0x4a')]['limit']);_0x327dec[_0x7f79('0x31')]=qs['offset'](_0x20e15b[_0x7f79('0x4a')][_0x7f79('0x31')]);}_0x327dec[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x20e15b[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x327dec[_0x7f79('0x55')]=qs['filters'](_[_0x7f79('0x56')](_0x20e15b['query'],_0x45555f['filters']));_0x327dec[_0x7f79('0x55')][_0x7f79('0x6a')]=_0x2c010d['id'];if(_0x20e15b['query'][_0x7f79('0x59')]){_0x327dec[_0x7f79('0x55')]=_['merge'](_0x327dec[_0x7f79('0x55')],{'$or':_[_0x7f79('0x44')](_0x327dec[_0x7f79('0x4e')],function(_0x50989f){var _0x6c0dd6={};_0x6c0dd6[_0x50989f]={'$like':'%'+_0x20e15b['query'][_0x7f79('0x59')]+'%'};return _0x6c0dd6;})});}_0x327dec=_[_0x7f79('0x57')]({},_0x327dec,_0x20e15b['options']);return db[_0x7f79('0x6b')][_0x7f79('0x33')]({'where':_0x327dec[_0x7f79('0x55')]})[_0x7f79('0x21')](function(_0x2035df){_0x150176[_0x7f79('0x33')]=_0x2035df;if(_0x20e15b['query']['includeAll']){_0x327dec[_0x7f79('0x5d')]=[{'all':!![]}];}return db[_0x7f79('0x6b')][_0x7f79('0x5b')](_0x327dec);})[_0x7f79('0x21')](function(_0x22828c){_0x150176[_0x7f79('0x6e')]=_0x22828c;return _0x150176;});}})['then'](respondWithFilteredResult(_0x190740,_0x327dec))[_0x7f79('0x2c')](handleError(_0x190740,null));};exports[_0x7f79('0x6f')]=function(_0x3dcc60,_0x2004cc,_0xd7479d){return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x3dcc60['params']['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x2004cc,null))[_0x7f79('0x21')](function(_0x56d054){if(_0x56d054){return _0x56d054[_0x7f79('0x6f')](_0x3dcc60[_0x7f79('0x4a')][_0x7f79('0x70')]);}})['then'](respondWithStatusCode(_0x2004cc,null))[_0x7f79('0x2c')](handleError(_0x2004cc,null));};exports['addAnswer']=function(_0x3d8448,_0x1aa65a,_0x5d3ab2){if(_0x3d8448[_0x7f79('0x67')]['id']){delete _0x3d8448[_0x7f79('0x67')]['id'];}return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x3d8448[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x1aa65a,null))[_0x7f79('0x21')](function(_0x6ccf97){if(_0x6ccf97){_0x3d8448['body'][_0x7f79('0x6a')]=_0x6ccf97['id'];return db[_0x7f79('0x71')][_0x7f79('0x5f')](_0x3d8448[_0x7f79('0x67')]);}})[_0x7f79('0x21')](respondWithResult(_0x1aa65a,null))[_0x7f79('0x2c')](handleError(_0x1aa65a,null));};exports[_0x7f79('0x72')]=function(_0x3d7c05,_0x5d5ef5,_0x46a263){var _0x5ac242={'raw':![],'where':{}};var _0x5f102a={};var _0x468278={'count':0x0,'rows':[]};return db[_0x7f79('0x45')][_0x7f79('0x73')]({'where':{'id':_0x3d7c05[_0x7f79('0x5c')]['id']}})['then'](handleEntityNotFound(_0x5d5ef5,null))[_0x7f79('0x21')](function(_0x4fab88){if(_0x4fab88){_0x5f102a[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db['CannedAnswer'][_0x7f79('0x6d')]);_0x5f102a[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x3d7c05[_0x7f79('0x4a')]);_0x5f102a[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x5f102a[_0x7f79('0x49')],_0x5f102a[_0x7f79('0x4a')]);_0x5ac242[_0x7f79('0x4e')]=_[_0x7f79('0x4d')](_0x5f102a['model'],qs[_0x7f79('0x4f')](_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x4f')]));_0x5ac242[_0x7f79('0x4e')]=_0x5ac242['attributes'][_0x7f79('0x50')]?_0x5ac242['attributes']:_0x5f102a[_0x7f79('0x49')];if(!_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x51')](_0x7f79('0x52'))){_0x5ac242[_0x7f79('0x34')]=qs[_0x7f79('0x34')](_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x34')]);_0x5ac242[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x3d7c05[_0x7f79('0x4a')]['offset']);}_0x5ac242['order']=qs[_0x7f79('0x54')](_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x5ac242[_0x7f79('0x55')]=qs['filters'](_[_0x7f79('0x56')](_0x3d7c05[_0x7f79('0x4a')],_0x5f102a['filters']));_0x5ac242[_0x7f79('0x55')][_0x7f79('0x6a')]=_0x4fab88['id'];if(_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x59')]){_0x5ac242[_0x7f79('0x55')]=_['merge'](_0x5ac242[_0x7f79('0x55')],{'$or':_[_0x7f79('0x44')](_0x5ac242[_0x7f79('0x4e')],function(_0x24a568){var _0x192c68={};_0x192c68[_0x24a568]={'$like':'%'+_0x3d7c05[_0x7f79('0x4a')][_0x7f79('0x59')]+'%'};return _0x192c68;})});}_0x5ac242=_[_0x7f79('0x57')]({},_0x5ac242,_0x3d7c05['options']);return db['CannedAnswer'][_0x7f79('0x33')]({'where':_0x5ac242[_0x7f79('0x55')]})['then'](function(_0x4313bd){_0x468278[_0x7f79('0x33')]=_0x4313bd;if(_0x3d7c05['query']['includeAll']){_0x5ac242['include']=[{'all':!![]}];}return db[_0x7f79('0x71')][_0x7f79('0x5b')](_0x5ac242);})[_0x7f79('0x21')](function(_0xec7ed2){_0x468278[_0x7f79('0x6e')]=_0xec7ed2;return _0x468278;});}})['then'](respondWithFilteredResult(_0x5d5ef5,_0x5ac242))[_0x7f79('0x2c')](handleError(_0x5d5ef5,null));};exports['removeAnswers']=function(_0x2d6e5b,_0x4eae97,_0x154171){return db[_0x7f79('0x45')]['find']({'where':{'id':_0x2d6e5b[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x4eae97,null))[_0x7f79('0x21')](function(_0x42d3c3){if(_0x42d3c3){return _0x42d3c3[_0x7f79('0x74')](_0x2d6e5b['query']['ids']);}})[_0x7f79('0x21')](respondWithStatusCode(_0x4eae97,null))[_0x7f79('0x2c')](handleError(_0x4eae97,null));};exports[_0x7f79('0x75')]=function(_0xdb3cbf,_0x301697,_0x4a2401){_0xdb3cbf[_0x7f79('0x67')][_0x7f79('0x76')]=_0xdb3cbf[_0x7f79('0x77')][_0x7f79('0x78')];return db[_0x7f79('0x45')]['find']({'where':{'id':_0xdb3cbf[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x301697,null))[_0x7f79('0x21')](saveUpdates(_0xdb3cbf[_0x7f79('0x67')],null))['then'](respondWithResult(_0x301697,null))[_0x7f79('0x2c')](handleError(_0x301697,null));};exports['addAvatar']=function(_0x4699af,_0x2bce88,_0x221485){_0x4699af[_0x7f79('0x67')][_0x7f79('0x79')]=_0x4699af[_0x7f79('0x77')][_0x7f79('0x78')];return db['ChatWebsite'][_0x7f79('0x64')]({'where':{'id':_0x4699af[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x2bce88,null))[_0x7f79('0x21')](saveUpdates(_0x4699af[_0x7f79('0x67')],null))['then'](respondWithResult(_0x2bce88,null))[_0x7f79('0x2c')](handleError(_0x2bce88,null));};exports[_0x7f79('0x7a')]=function(_0x581bfe,_0x30e7f2,_0xbde3df){_0x581bfe[_0x7f79('0x67')][_0x7f79('0x7b')]=_0x581bfe[_0x7f79('0x77')]['filename'];return db[_0x7f79('0x45')]['find']({'where':{'id':_0x581bfe[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x30e7f2,null))[_0x7f79('0x21')](saveUpdates(_0x581bfe[_0x7f79('0x67')],null))[_0x7f79('0x21')](respondWithResult(_0x30e7f2,null))['catch'](handleError(_0x30e7f2,null));};exports[_0x7f79('0x7c')]=function(_0x54343b,_0xca20fe,_0x4a6b40){_0x54343b[_0x7f79('0x67')][_0x7f79('0x7d')]=_0x54343b[_0x7f79('0x77')][_0x7f79('0x78')];return db['ChatWebsite']['find']({'where':{'id':_0x54343b['params']['id']}})['then'](handleEntityNotFound(_0xca20fe,null))['then'](saveUpdates(_0x54343b[_0x7f79('0x67')],null))[_0x7f79('0x21')](respondWithResult(_0xca20fe,null))[_0x7f79('0x2c')](handleError(_0xca20fe,null));};exports[_0x7f79('0x7e')]=function(_0x12ab8e,_0x24df66,_0x30044d){var _0x39727c=path[_0x7f79('0x7f')](config['root'],_0x7f79('0x80'));var _0x2cb2d8={'where':{'id':_0x12ab8e[_0x7f79('0x5c')]['id']},'attributes':['id',_0x7f79('0x76')],'raw':!![]};var _0x39d5a1=![];return require(_0x7f79('0x17'))[_0x7f79('0x81')]()[_0x7f79('0x21')](function(_0x1c2432){if(_0x1c2432){_0x39d5a1=_0x1c2432[_0x7f79('0x82')];}})[_0x7f79('0x21')](function(){return db[_0x7f79('0x45')]['find'](_0x2cb2d8);})[_0x7f79('0x21')](handleEntityNotFound(_0x24df66,null))[_0x7f79('0x21')](function(_0xc9e02c){if(_0xc9e02c){if(!_[_0x7f79('0x83')](_0xc9e02c[_0x7f79('0x76')])){if(fs[_0x7f79('0x84')](path[_0x7f79('0x7f')](config['root'],_0x7f79('0x85'),_0xc9e02c['sitepic']))&&_0x39d5a1){_0x39727c=path['join'](config['root'],'server/files/images/logos/',_0xc9e02c[_0x7f79('0x76')]);}}return _0x24df66['download'](_0x39727c);}})[_0x7f79('0x2c')](handleError(_0x24df66,null));};exports[_0x7f79('0x86')]=function(_0x193e6e,_0x229ffb,_0x18adbf){var _0x3bbc8e=path[_0x7f79('0x7f')](config['root'],'server/files/images/avatars/default_avatar.png');var _0x4ac4f1={'where':{'id':_0x193e6e[_0x7f79('0x5c')]['id']},'attributes':['id',_0x7f79('0x79')],'raw':!![]};return db['ChatWebsite'][_0x7f79('0x64')](_0x4ac4f1)['then'](handleEntityNotFound(_0x229ffb,null))['then'](function(_0x2000eb){if(_0x2000eb){if(!_[_0x7f79('0x83')](_0x2000eb[_0x7f79('0x79')])){if(fs['existsSync'](path['join'](config['root'],_0x7f79('0x87'),_0x2000eb[_0x7f79('0x79')]))){_0x3bbc8e=path[_0x7f79('0x7f')](config['root'],_0x7f79('0x87'),_0x2000eb[_0x7f79('0x79')]);}}return _0x229ffb['download'](_0x3bbc8e);}})[_0x7f79('0x2c')](handleError(_0x229ffb,null));};exports[_0x7f79('0x88')]=function(_0x226de2,_0x513992,_0x28f6bf){var _0x5202f0=path['join'](config[_0x7f79('0x89')],_0x7f79('0x8a'));var _0x2eb30d={'where':{'id':_0x226de2[_0x7f79('0x5c')]['id']},'attributes':['id',_0x7f79('0x7b'),'showCustomerAvatar'],'raw':!![]};return db[_0x7f79('0x45')][_0x7f79('0x64')](_0x2eb30d)[_0x7f79('0x21')](handleEntityNotFound(_0x513992,null))['then'](function(_0xd305b8){if(_0xd305b8){if(!_[_0x7f79('0x83')](_0xd305b8[_0x7f79('0x7b')])){if(fs['existsSync'](path[_0x7f79('0x7f')](config['root'],'server/files/images/avatars/',_0xd305b8['customerAvatar']))&&_0xd305b8[_0x7f79('0x8b')]){_0x5202f0=path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0x87'),_0xd305b8[_0x7f79('0x7b')]);}}return _0x513992[_0x7f79('0x8c')](_0x5202f0);}})[_0x7f79('0x2c')](handleError(_0x513992,null));};exports[_0x7f79('0x8d')]=function(_0x4c8a24,_0x393968,_0x3caeeb){var _0x3dde9b=path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0x8e'));var _0x463c89={'where':{'id':_0x4c8a24[_0x7f79('0x5c')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x7f79('0x45')][_0x7f79('0x64')](_0x463c89)['then'](handleEntityNotFound(_0x393968,null))[_0x7f79('0x21')](function(_0xda0933){if(_0xda0933){if(!_[_0x7f79('0x83')](_0xda0933[_0x7f79('0x7d')])){if(fs[_0x7f79('0x84')](path[_0x7f79('0x7f')](config['root'],_0x7f79('0x87'),_0xda0933[_0x7f79('0x7d')]))){_0x3dde9b=path[_0x7f79('0x7f')](config['root'],_0x7f79('0x87'),_0xda0933['systemAvatar']);}}return _0x393968[_0x7f79('0x8c')](_0x3dde9b);}})[_0x7f79('0x2c')](handleError(_0x393968,null));};exports[_0x7f79('0x8f')]=function(_0x294fa4,_0x390b7d,_0x166ee6){var _0x4a2df8=require(_0x7f79('0x90'));var _0xb68019=new _0x4a2df8();var _0x28e660=_0xb68019[_0x7f79('0x91')](_0x294fa4['headers'][_0x7f79('0x92')])[_0x7f79('0x93')]();var _0x490a1b={'body':_0x294fa4[_0x7f79('0x67')],'channel':_0x7f79('0x94')};var _0x417149=[];var _0x5550c7=[];var _0x4fb265={};var _0x17f020=![];return db[_0x7f79('0x95')][_0x7f79('0x68')]()[_0x7f79('0x21')](function(_0x28adf8){if(!_0x28adf8){throw new db[(_0x7f79('0x96'))]['ValidationError'](_0x7f79('0x97'));}_0x417149=_[_0x7f79('0x98')](_[_0x7f79('0x4b')](_0x28adf8),['createdAt','updatedAt']);_0x5550c7=_[_0x7f79('0x98')](_[_0x7f79('0x4b')](_0x28adf8),['createdAt',_0x7f79('0x99'),'CompanyId',_0x7f79('0x9a')]);if(_0x294fa4[_0x7f79('0x67')]['id']){delete _0x294fa4['body']['id'];}if(_[_0x7f79('0x83')](_0x294fa4[_0x7f79('0x67')][_0x7f79('0x9b')])){throw new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0x9d'));}if(_[_0x7f79('0x83')](_0x294fa4[_0x7f79('0x67')][_0x7f79('0x67')])||_0x294fa4[_0x7f79('0x67')][_0x7f79('0x67')]===''){throw new db['Sequelize'][(_0x7f79('0x9c'))](_0x7f79('0x9e'));}if(_[_0x7f79('0x83')](_0x294fa4[_0x7f79('0x67')][_0x7f79('0x9f')])){throw new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0xa0')+_0x5550c7);}if(!_[_0x7f79('0xa1')](_0x5550c7,_0x294fa4[_0x7f79('0x67')][_0x7f79('0x9f')])){throw new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0xa2')+_0x5550c7);}_0x4fb265[_0x294fa4['body']['mapKey']]=_0x294fa4['body'][_0x7f79('0x9b')];})[_0x7f79('0x21')](function(){return db[_0x7f79('0x45')]['find']({'where':{'id':_0x294fa4[_0x7f79('0x5c')]['id']},'include':[{'model':db['CmList'],'as':_0x7f79('0xa3'),'include':[{'model':db[_0x7f79('0x95')],'as':_0x7f79('0xa4'),'where':_0x4fb265,'limit':0x1,'order':[[_0x7f79('0x99'),_0x7f79('0xa5')]]}]},{'model':db['ChatApplication'],'as':'Applications'}]});})[_0x7f79('0x21')](handleEntityNotFound(_0x390b7d,null))[_0x7f79('0x21')](function(_0x2751a0){if(_0x2751a0&&_0x2751a0[_0x7f79('0xa3')]){_0x490a1b['account']=_0x2751a0;_0x490a1b[_0x7f79('0xa6')]=_0x2751a0[_0x7f79('0xa7')];_0x490a1b['list']=_0x2751a0['List'];_0x490a1b['applications']=_[_0x7f79('0xa8')](_0x490a1b['applications'],['priority'],['asc']);if(_0x490a1b['account'][_0x7f79('0xa7')]){delete _0x490a1b['account'][_0x7f79('0xa7')];}if(_0x490a1b[_0x7f79('0xa9')][_0x7f79('0xa3')]&&_0x490a1b[_0x7f79('0xa9')][_0x7f79('0xa3')][_0x7f79('0xa4')]['length']){return _0x490a1b['account'][_0x7f79('0xa3')][_0x7f79('0xa4')][0x0];}var _0x17108d=_['defaults'](_0x294fa4['body'],{'firstName':_0x294fa4[_0x7f79('0x67')][_0x7f79('0x9b')],'ListId':_0x2751a0['ListId']});_0x17108d[_0x294fa4['body'][_0x7f79('0x9f')]]=_0x294fa4[_0x7f79('0x67')]['from'];return db[_0x7f79('0x95')][_0x7f79('0x5f')](_0x17108d,{'fields':_0x417149,'raw':!![]});}})[_0x7f79('0x21')](handleEntityNotFound(_0x390b7d,null))[_0x7f79('0x21')](function(_0x28fa4d){_0x490a1b[_0x7f79('0xaa')]=_0x28fa4d;var _0x470571=_0x294fa4[_0x7f79('0x67')][_0x7f79('0xab')];if(_0x294fa4[_0x7f79('0xac')][_0x7f79('0xad')]){_0x470571=_0x294fa4['headers'][_0x7f79('0xad')];}else if(_0x294fa4[_0x7f79('0xac')]['x-forwarded-for']){_0x470571=_['first'](_0x294fa4[_0x7f79('0xac')][_0x7f79('0xae')]['split'](','));}if(_0x28fa4d){var _0x43554c={'ContactId':_0x28fa4d['id'],'ChatWebsiteId':_0x294fa4['params']['id'],'from':(_0x28fa4d[_0x7f79('0xaf')]||'')+'\x20'+(_0x28fa4d[_0x7f79('0xb0')]||''),'customerIp':_0x470571,'customerPort':_0x294fa4[_0x7f79('0xac')][_0x7f79('0xb1')]?_0x294fa4[_0x7f79('0xac')][_0x7f79('0xb1')]:null,'referer':_0x294fa4['body']['referer'],'browserName':_0x28e660[_0x7f79('0xb2')]['name']&&_0x28e660[_0x7f79('0xb2')]['version']?util[_0x7f79('0xb3')](_0x7f79('0xb4'),_0x28e660[_0x7f79('0xb2')][_0x7f79('0x3f')],_0x28e660[_0x7f79('0xb2')]['version']):_0x7f79('0xb5'),'browserVersion':_0x28e660['browser'][_0x7f79('0xb6')]||_0x7f79('0xb5'),'osName':util[_0x7f79('0xb3')](_0x7f79('0xb4'),_0x28e660['os']['name'],_0x28e660['os'][_0x7f79('0xb6')]),'osVersion':_0x28e660['os'][_0x7f79('0xb6')],'deviceModel':_0x28e660[_0x7f79('0xb7')][_0x7f79('0x49')]&&_0x28e660['device'][_0x7f79('0xb8')]?util[_0x7f79('0xb3')](_0x7f79('0xb9'),_0x28e660['device'][_0x7f79('0x49')],_0x28e660['device']['vendor'],_0x28e660[_0x7f79('0xb7')][_0x7f79('0x47')]):null,'deviceVendor':_0x28e660[_0x7f79('0xb7')]['vendor'],'deviceType':_0x28e660[_0x7f79('0xb7')]['type'],'formData':JSON[_0x7f79('0x27')](_0x294fa4[_0x7f79('0x67')])};var _0x21dfb8={'ChatWebsiteId':_0x294fa4[_0x7f79('0x5c')]['id'],'closed':![]};if(_0x294fa4['body'][_0x7f79('0xba')]){_0x21dfb8[_0x7f79('0xba')]=_0x294fa4['body'][_0x7f79('0xba')];return db[_0x7f79('0xbb')][_0x7f79('0x64')]({'where':_0x21dfb8})['then'](function(_0x17b3c1){if(_0x17b3c1){return[_0x17b3c1,![]];}_0x43554c[_0x7f79('0xba')]=_0x294fa4[_0x7f79('0x67')][_0x7f79('0xba')];_0x43554c[_0x7f79('0xbc')]=_0x294fa4[_0x7f79('0x67')][_0x7f79('0xbc')];return db[_0x7f79('0xbb')][_0x7f79('0x5f')](_0x43554c)[_0x7f79('0x21')](function(_0x1a9bfc){return[_0x1a9bfc,!![]];});});}_0x21dfb8['ContactId']=_0x28fa4d['id'];if(_0x294fa4['body'][_0x7f79('0xbd')]&&_0x294fa4[_0x7f79('0x67')][_0x7f79('0xbd')]['id']){_0x21dfb8['id']=_0x294fa4['body'][_0x7f79('0xbd')]['id'];return db[_0x7f79('0xbb')][_0x7f79('0x64')]({'where':_0x21dfb8})['then'](function(_0x4ef587){if(_0x4ef587){return[_0x4ef587,![]];}return db[_0x7f79('0xbb')][_0x7f79('0x5f')](_0x43554c)['then'](function(_0x16c015){return[_0x16c015,!![]];});});}return db[_0x7f79('0xbb')][_0x7f79('0x5f')](_0x43554c)[_0x7f79('0x21')](function(_0x1e95f6){return[_0x1e95f6,!![]];});}})[_0x7f79('0xbe')](function(_0x219539,_0x430d99){if(_0x219539){_0x17f020=_0x430d99;if(!_0x430d99){var _0x888ad6={'from':(_0x490a1b[_0x7f79('0xaa')][_0x7f79('0xaf')]||'')+'\x20'+(_0x490a1b['contact'][_0x7f79('0xb0')]||'')};if(_0x294fa4[_0x7f79('0x67')][_0x7f79('0xba')]&&_0x294fa4['body'][_0x7f79('0xbf')]&&_0x294fa4[_0x7f79('0x67')][_0x7f79('0xba')]!=_0x294fa4[_0x7f79('0x67')][_0x7f79('0xbf')]){_0x888ad6[_0x7f79('0xba')]=_0x294fa4[_0x7f79('0x67')]['messageId'];}return _0x219539[_0x7f79('0x3a')](_0x888ad6);}else{return _0x219539;}}})[_0x7f79('0x21')](function(_0x37fd43){_0x490a1b[_0x7f79('0xbd')]=_0x37fd43['get']({'plain':!![]});_0x490a1b[_0x7f79('0xbd')][_0x7f79('0xc0')]=_0x17f020;if(_0x490a1b[_0x7f79('0xbd')][_0x7f79('0xc0')]){if(_0x490a1b['account']['autoclose']){_0x490a1b['applications'][_0x7f79('0xc1')]({'id':0x0,'priority':_0x490a1b['applications'][_0x7f79('0x50')]+0x1,'app':_0x7f79('0xc2'),'appdata':_0x7f79('0xc3'),'interval':_0x7f79('0xc4')});}}return db[_0x7f79('0xc5')]['create']({'body':_0x294fa4[_0x7f79('0x67')][_0x7f79('0x67')],'ChatWebsiteId':_0x294fa4[_0x7f79('0x5c')]['id'],'ChatInteractionId':_0x37fd43['id'],'direction':'in','ContactId':_0x490a1b[_0x7f79('0xaa')]['id'],'AttachmentId':_0x294fa4['body'][_0x7f79('0xc6')]});})[_0x7f79('0x21')](function(_0x4321eb){_0x490a1b['message']=_0x4321eb;if(_0x490a1b[_0x7f79('0xbd')][_0x7f79('0xc7')]){return db[_0x7f79('0xc8')]['find']({'attributes':['id',_0x7f79('0x3f')],'where':{'id':_0x490a1b[_0x7f79('0xbd')][_0x7f79('0xc7')]}})[_0x7f79('0x21')](function(_0x5c718d){if(_0x5c718d){_0x490a1b[_0x7f79('0xa6')][_0x7f79('0xc9')]({'id':0x0,'priority':0x0,'app':_0x7f79('0xca'),'appdata':_0x5c718d['name']+','+(_0x490a1b[_0x7f79('0xa9')][_0x7f79('0xcb')]||0xa),'interval':_0x7f79('0xc4')});_0x490a1b[_0x7f79('0xcc')]=!![];}return respondWithRpcPromise(_0x7f79('0xcd'),'startRouting',_0x490a1b);});}return respondWithRpcPromise(_0x7f79('0xcd'),'startRouting',_0x490a1b);})[_0x7f79('0x21')](function(_0x1aa52f){respondWithRpcPromise(_0x7f79('0xce'),_0x7f79('0xce'),{'event':_0x7f79('0x8f'),'message':_0x1aa52f},client9002);return _0x1aa52f;})['then'](respondWithResult(_0x390b7d,null))[_0x7f79('0x2c')](handleError(_0x390b7d,null));};exports[_0x7f79('0xcf')]=function(_0x50e761,_0x35a7b4,_0x37a919){var _0x383d78,_0x2d96c1,_0x4ef646;var _0x543d79=[];var _0x2abf73=[];var _0x4392f5={};var _0x117024=_0x50e761[_0x7f79('0xd0')]||[];var _0x123a7e=[];var _0x2da3ad;return db[_0x7f79('0x95')]['describe']()[_0x7f79('0x21')](function(_0x9f7248){if(!_0x9f7248){throw new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0x97'));}_0x2abf73=_['difference'](_[_0x7f79('0x4b')](_0x9f7248),['createdAt',_0x7f79('0x99')]);_0x543d79=_[_0x7f79('0x98')](_[_0x7f79('0x4b')](_0x9f7248),[_0x7f79('0xd1'),_0x7f79('0x99'),_0x7f79('0xd2'),_0x7f79('0x9a')]);if(_0x50e761[_0x7f79('0x67')]['id']){delete _0x50e761['body']['id'];}if(_['isNil'](_0x50e761[_0x7f79('0x67')][_0x7f79('0x9b')])){throw _0x35a7b4[_0x7f79('0x2e')](0x1f4)[_0x7f79('0x40')](new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0x9d')));}if(_[_0x7f79('0x83')](_0x50e761['body'][_0x7f79('0x67')])||_0x50e761['body']['body']===''){throw _0x35a7b4[_0x7f79('0x2e')](0x1f4)[_0x7f79('0x40')](new db[(_0x7f79('0x96'))]['ValidationError'](_0x7f79('0x9e')));}if(_['isNil'](_0x50e761['body'][_0x7f79('0xd3')])){throw _0x35a7b4[_0x7f79('0x2e')](0x1f4)['send'](new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0xd4')+_0x543d79));}if(!_['includes'](_0x543d79,_0x50e761[_0x7f79('0x67')][_0x7f79('0xd3')])){throw _0x35a7b4[_0x7f79('0x2e')](0x1f4)['send'](new db[(_0x7f79('0x96'))][(_0x7f79('0x9c'))](_0x7f79('0xd5')+_0x543d79));}_0x4392f5[_0x50e761['body'][_0x7f79('0xd3')]]=_0x50e761[_0x7f79('0x67')]['from'];})[_0x7f79('0x21')](function(){return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x50e761[_0x7f79('0x5c')]['id']},'include':[{'model':db[_0x7f79('0xd6')],'as':_0x7f79('0xa3')},{'model':db[_0x7f79('0xd7')],'as':'MailAccount'}]});})[_0x7f79('0x21')](handleEntityNotFound(_0x35a7b4,null))[_0x7f79('0x21')](function(_0x2a34a4){if(_0x2a34a4&&_0x2a34a4[_0x7f79('0xa3')]){_0x2d96c1=_0x2a34a4;var _0x457189=_[_0x7f79('0x19')](_0x50e761['body'],{'firstName':_0x50e761[_0x7f79('0x67')]['from'],'phone':_0x50e761['body'][_0x7f79('0x9b')],'ListId':_0x2a34a4[_0x7f79('0x9a')]});_0x457189[_0x50e761['body']['mapKeyOffline']]=_0x50e761['body'][_0x7f79('0x9b')];return db[_0x7f79('0x95')][_0x7f79('0xd8')]({'where':_0x4392f5,'defaults':_0x457189});}})[_0x7f79('0xbe')](function(_0x2937d1){if(_0x2937d1){_0x4ef646=_0x2937d1;var _0x3e63b9=fs[_0x7f79('0xd9')](path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0xda')),_0x7f79('0xdb'));var _0x125174=ejs['render'](_0x3e63b9,{'body':_[_0x7f79('0xdc')](_0x50e761[_0x7f79('0x67')]['body']),'bodyTitle':_0x2d96c1[_0x7f79('0xdd')]});return db['ChatOfflineMessage'][_0x7f79('0x5f')]({'body':_0x125174,'ContactId':_0x2937d1['id'],'ChatWebsiteId':_0x2d96c1['id']});}})[_0x7f79('0x21')](function(_0x1b25d5){_0x2da3ad=_0x1b25d5;if(_0x117024[_0x7f79('0x50')]){var _0x3208eb=_0x117024['map'](function(_0xac1fa2){return{'name':_0xac1fa2[_0x7f79('0xde')],'basename':_0xac1fa2[_0x7f79('0x78')],'type':_0xac1fa2[_0x7f79('0xdf')],'ChatOfflineMessageId':_0x1b25d5['id']};});_0x123a7e=_0x3208eb[_0x7f79('0x44')](_0x141239=>{var _0xe6f372={'filename':_0x141239[_0x7f79('0x3f')],'path':path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0xe0'),_0x7f79('0xd0'),_0x7f79('0xe1'),_0x7f79('0xe2'),_0x141239[_0x7f79('0xe3')])};return _0xe6f372;});if(!_0x2d96c1[_0x7f79('0xe4')]){return db[_0x7f79('0xe5')][_0x7f79('0xe6')](function(_0x1f9e48){return db['Attachment']['bulkCreate'](_0x3208eb,{'transaction':_0x1f9e48});});}}})[_0x7f79('0x21')](function(){if(_0x2da3ad){_0x383d78=_0x2da3ad;return db[_0x7f79('0xd7')][_0x7f79('0x73')]({'where':{'active':!![]},'include':[{'model':db[_0x7f79('0xe7')],'as':'Smtp','raw':!![]}]});}})[_0x7f79('0x21')](function(_0x1cd43b){if(_0x1cd43b&&_0x1cd43b['Smtp']&&_0x2d96c1[_0x7f79('0xe8')]&&_0x2d96c1[_0x7f79('0xe9')]){var _0x18b43e={'tls':{'rejectUnauthorized':![]}};if(_0x1cd43b[_0x7f79('0xea')][_0x7f79('0xeb')]){_0x18b43e[_0x7f79('0xeb')]=_0x1cd43b['Smtp'][_0x7f79('0xeb')];}else{_0x18b43e['host']=_0x1cd43b[_0x7f79('0xea')]['host'];_0x18b43e[_0x7f79('0xec')]=_0x1cd43b[_0x7f79('0xea')][_0x7f79('0xec')];_0x18b43e['secure']=_0x1cd43b[_0x7f79('0xea')][_0x7f79('0xed')];}if(_0x1cd43b[_0x7f79('0xea')][_0x7f79('0xee')]){_0x18b43e[_0x7f79('0xef')]={'user':_0x1cd43b[_0x7f79('0xea')][_0x7f79('0x60')],'pass':_0x1cd43b[_0x7f79('0xea')][_0x7f79('0xf0')]};}return respondWithRpcPromise('SendMail',_0x7f79('0xf1'),{'account':_0x18b43e,'message':{'from':util[_0x7f79('0xb3')](_0x7f79('0xf2'),_0x1cd43b[_0x7f79('0x3f')],_0x1cd43b[_0x7f79('0xf3')]||_0x1cd43b[_0x7f79('0xea')][_0x7f79('0x60')]),'to':_0x2d96c1[_0x7f79('0xe9')],'subject':_0x2d96c1[_0x7f79('0xf4')],'html':_0x383d78['body'],'attachments':_0x123a7e}},client9003)[_0x7f79('0x21')](function(){return _0x383d78;})[_0x7f79('0x2c')](function(_0x44b954){console[_0x7f79('0x28')](_0x44b954);});}})[_0x7f79('0x21')](function(){if(_0x2d96c1&&_0x2d96c1[_0x7f79('0xe4')]&&_0x2d96c1[_0x7f79('0xf5')]){var _0x18a2c7=[];if(_0x117024[_0x7f79('0x50')]){_0x18a2c7=_0x117024[_0x7f79('0x44')](function(_0x3088e6){return{'name':_0x3088e6[_0x7f79('0xde')],'basename':_0x3088e6[_0x7f79('0x78')],'type':_0x3088e6[_0x7f79('0xdf')],'ChatOfflineMessageId':_0x2da3ad['id']};});}var _0x319c90;if(!_['isNil'](_0x2d96c1['subjectOffline'])){var _0x3cce56=_[_0x7f79('0x44')](_0x50e761[_0x7f79('0x67')],function(_0x27ebb0){return _0x27ebb0;});var _0x1c4116=_[_0x7f79('0xf6')](_0x3cce56)[0x0];var _0x4ce886=_[_0x7f79('0xf7')](_0x1c4116,function(_0x1acc67){return _0x1acc67;});_0x319c90=_0x4ce886[0x1][_0x2d96c1['subjectOffline']];}var _0x1144d7={'from':_0x4ef646[_0x7f79('0xf3')],'firstName':_0x4ef646['firstName'],'lastName':_0x4ef646['lastName'],'mapKey':'email','message':{'from':_0x4ef646[_0x7f79('0xf3')],'to':_0x2d96c1[_0x7f79('0xd7')][_0x7f79('0xf3')],'cc':'','subject':_[_0x7f79('0x83')](_0x319c90)?_0x2d96c1[_0x7f79('0xf4')]:_0x319c90,'messageId':'','sentAt':new Date(),'attach':_0x18a2c7[_0x7f79('0x50')],'attachments':_0x18a2c7,'originChannel':_0x7f79('0xf8'),'ChatWebsiteId':_0x2d96c1['id'],'ChatOfflineMessageId':_0x383d78['id'],'originTo':_0x2d96c1[_0x7f79('0xd7')][_0x7f79('0xf3')]},'body':_0x383d78['body']};var _0xc44309={'account':{'id':_0x2d96c1[_0x7f79('0xf5')]},'body':_0x1144d7,'log':_0x7f79('0xf9')};return respondWithRpcPromise('NotifyMailAccount','notifyMail',_0xc44309,client9001)[_0x7f79('0x21')](function(){return _0x383d78;})[_0x7f79('0x2c')](function(_0x22855d){console['error'](_0x22855d);});}return;})[_0x7f79('0x21')](function(){if(_0x383d78){return _0x383d78;}})[_0x7f79('0x21')](respondWithResult(_0x35a7b4,null))[_0x7f79('0x2c')](function(_0x3bed5f){console[_0x7f79('0x28')]('catch',_0x3bed5f);for(var _0x4d1de5 of _0x117024){var _0x3c849d=path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0xe0'),_0x7f79('0xd0'),_0x7f79('0xe1'),_0x7f79('0xe2'),_0x4d1de5[_0x7f79('0x78')]);fs_extra['remove'](_0x3c849d)[_0x7f79('0x2c')](function(_0x5b6c13){console[_0x7f79('0x28')](_0x7f79('0xfa'),_0x3c849d,_0x5b6c13);});}});};exports[_0x7f79('0xfb')]=function(_0x5044fc,_0x39b15b,_0x4ec008){return db[_0x7f79('0xbb')][_0x7f79('0x64')]({'where':{'id':_0x5044fc[_0x7f79('0x5c')]['id']}})['then'](handleEntityNotFound(_0x39b15b,null))[_0x7f79('0x21')](function(_0x3aa339){if(_0x3aa339){return _0x3aa339[_0x7f79('0xfb')](_0x5044fc[_0x7f79('0x67')][_0x7f79('0x70')],_[_0x7f79('0xfc')](_0x5044fc[_0x7f79('0x67')],['ids','id'])||{});}})[_0x7f79('0x21')](respondWithResult(_0x39b15b,null))[_0x7f79('0x2c')](handleError(_0x39b15b,null));};exports['getInteractions']=function(_0x401e5b,_0x41e2d4,_0x313e2d){var _0x1112e4={'raw':![],'where':{}};var _0x126b4b={};var _0x385f0d={'count':0x0,'rows':[]};return db[_0x7f79('0x45')][_0x7f79('0x73')]({'where':{'id':_0x401e5b[_0x7f79('0x5c')]['id']}})['then'](handleEntityNotFound(_0x41e2d4,null))['then'](function(_0x2de675){if(_0x2de675){_0x126b4b[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db[_0x7f79('0xbb')][_0x7f79('0x6d')]);_0x126b4b[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x401e5b[_0x7f79('0x4a')]);_0x126b4b['filters']=_[_0x7f79('0x4d')](_0x126b4b[_0x7f79('0x49')],_0x126b4b['query']);_0x1112e4[_0x7f79('0x4e')]=_[_0x7f79('0x4d')](_0x126b4b['model'],qs['fields'](_0x401e5b['query'][_0x7f79('0x4f')]));_0x1112e4[_0x7f79('0x4e')]=_0x1112e4[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x1112e4['attributes']:_0x126b4b[_0x7f79('0x49')];if(!_0x401e5b[_0x7f79('0x4a')][_0x7f79('0x51')](_0x7f79('0x52'))){_0x1112e4[_0x7f79('0x34')]=qs['limit'](_0x401e5b[_0x7f79('0x4a')][_0x7f79('0x34')]);_0x1112e4[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x401e5b['query'][_0x7f79('0x31')]);}_0x1112e4[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x401e5b[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x1112e4[_0x7f79('0x55')]=qs[_0x7f79('0x4c')](_['pick'](_0x401e5b[_0x7f79('0x4a')],_0x126b4b[_0x7f79('0x4c')]));_0x1112e4[_0x7f79('0x55')][_0x7f79('0x6a')]=_0x2de675['id'];if(_0x401e5b['query'][_0x7f79('0x59')]){_0x1112e4[_0x7f79('0x55')]=_[_0x7f79('0x57')](_0x1112e4[_0x7f79('0x55')],{'$or':_['map'](_0x1112e4[_0x7f79('0x4e')],function(_0x561c26){var _0x30d45e={};_0x30d45e[_0x561c26]={'$like':'%'+_0x401e5b['query'][_0x7f79('0x59')]+'%'};return _0x30d45e;})});}_0x1112e4=_[_0x7f79('0x57')]({},_0x1112e4,_0x401e5b[_0x7f79('0x5e')]);return db['ChatInteraction'][_0x7f79('0x33')]({'where':_0x1112e4[_0x7f79('0x55')]})[_0x7f79('0x21')](function(_0x44f2f0){_0x385f0d[_0x7f79('0x33')]=_0x44f2f0;if(_0x401e5b[_0x7f79('0x4a')]['includeAll']){_0x1112e4[_0x7f79('0x5d')]=[{'model':db[_0x7f79('0x95')],'as':'Contact','required':![]},{'model':db[_0x7f79('0xc8')],'as':'Owner','attributes':[_0x7f79('0x3f'),_0x7f79('0xfd'),_0x7f79('0xfe')],'required':![]},{'model':db[_0x7f79('0xff')],'as':_0x7f79('0x100'),'attributes':['id','name',_0x7f79('0x101')],'where':_0x401e5b[_0x7f79('0x4a')][_0x7f79('0x102')]?{'id':_0x401e5b[_0x7f79('0x4a')][_0x7f79('0x102')]}:undefined,'required':_0x401e5b['query'][_0x7f79('0x102')]?!![]:![]}];}return db[_0x7f79('0xbb')][_0x7f79('0x5b')](_0x1112e4);})[_0x7f79('0x21')](function(_0x2ef33a){_0x385f0d[_0x7f79('0x6e')]=_0x2ef33a;return _0x385f0d;});}})[_0x7f79('0x21')](respondWithFilteredResult(_0x41e2d4,_0x1112e4))[_0x7f79('0x2c')](handleError(_0x41e2d4,null));};function iftimePromise(_0x12dbfc,_0x21c4d1){return respondWithRpcPromise('Command','getSnippet',{'command':_0x21c4d1[_0x7f79('0x103')]?util['format'](_0x7f79('0x104'),_0x12dbfc['interval'],_0x21c4d1[_0x7f79('0x103')]):util[_0x7f79('0xb3')](_0x7f79('0x105'),_0x12dbfc[_0x7f79('0x106')])},client9002)['then'](function(_0x91c2cf){var _0x2504c1=_0x91c2cf&&_0x91c2cf[_0x7f79('0x107')](_0x7f79('0x108'))>=0x0?!![]:![];logger[_0x7f79('0x22')](_0x7f79('0x109'),_0x21c4d1['id'],_0x12dbfc['id'],_0x12dbfc[_0x7f79('0x106')],_0x2504c1?_0x7f79('0x10a'):'OFFLINE',_0x21c4d1[_0x7f79('0x103')]?_0x21c4d1['timezone']:_0x7f79('0x10b'));return _0x2504c1;})['catch'](function(_0x3b4d40){logger['error'](_0x7f79('0x109'),_0x21c4d1['id'],_0x12dbfc['id'],_0x12dbfc['interval'],util['inspect'](_0x3b4d40,{'showHidden':![],'depth':null}),_0x21c4d1[_0x7f79('0x103')]?_0x21c4d1[_0x7f79('0x103')]:_0x7f79('0x10b'));return![];});}exports[_0x7f79('0x10c')]=function(_0x4c2d83,_0xf24a54,_0x5a86b9){var _0x5b8ec1=0x0;var _0x4214f2=0x0;var _0x4dd11f=![];var _0x64aa31;var _0x3397b4;return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x4c2d83[_0x7f79('0x5c')]['id']},'include':[{'model':db['Interval'],'as':'Interval','include':[{'model':db[_0x7f79('0x10d')],'as':_0x7f79('0x10e'),'attributes':['id','interval'],'raw':!![]}]}]})[_0x7f79('0x21')](handleEntityNotFound(_0xf24a54,null))[_0x7f79('0x21')](function(_0x54cd73){if(_0x54cd73){_0x64aa31=_0x54cd73;return _0x54cd73[_0x7f79('0x10f')]({'raw':!![]});}})[_0x7f79('0x21')](function(_0x60a619){if(_0x64aa31){if(_0x60a619){_0x3397b4=_0x60a619;}}return require(_0x7f79('0x17'))[_0x7f79('0x81')]();})['then'](function(_0x453d9e){if(_0x453d9e){_0x4214f2=_0x453d9e[_0x7f79('0x110')];_0x4dd11f=_0x453d9e[_0x7f79('0x82')];}})[_0x7f79('0x21')](function(){return db[_0x7f79('0xbb')][_0x7f79('0x33')]({'where':{'closed':![]}});})[_0x7f79('0x21')](function(_0x3c19f1){_0x5b8ec1=_0x3c19f1;if(_0x4214f2&&_0x3c19f1>_0x4214f2){return db['License'][_0x7f79('0x73')]({'where':{'id':0x1}})['then'](function(_0x2ec2db){if(_0x2ec2db){_0x2ec2db[_0x7f79('0x111')](_0x7f79('0x112'));}});}})['then'](function(){if(_0x64aa31[_0x7f79('0x10d')]&&_0x64aa31[_0x7f79('0x10d')][_0x7f79('0x10e')]){var _0x38830a=[];for(var _0x283607=0x0;_0x283607<_0x64aa31[_0x7f79('0x10d')][_0x7f79('0x10e')]['length'];_0x283607++){var _0x5b9f1f=_0x64aa31[_0x7f79('0x10d')]['Intervals'][_0x283607][_0x7f79('0x3c')]({'plain':!![]});_0x38830a['push'](iftimePromise(_0x5b9f1f,_0x64aa31));}return BPromise[_0x7f79('0x113')](_0x38830a)[_0x7f79('0x21')](function(_0x1e600d){return _['some'](_0x1e600d);});}else{return!![];}})[_0x7f79('0x21')](function(_0x5507d1){var _0x1c7cf4=fs[_0x7f79('0xd9')](path[_0x7f79('0x7f')](config[_0x7f79('0x89')],_0x7f79('0x114')),_0x7f79('0xdb'));var _0x5a7500={'remote':_0x64aa31['remote'],'query':querystring[_0x7f79('0x27')](_[_0x7f79('0x57')](_0x64aa31[_0x7f79('0x3c')]({'plain':!![]}),{'customerIp':_0x4c2d83[_0x7f79('0xac')]['x-forwarded-for']||_0x4c2d83[_0x7f79('0xac')][_0x7f79('0x115')]||_0x4c2d83['connection'][_0x7f79('0x116')]||_0x4c2d83['ip'],'referer':_0x4c2d83[_0x7f79('0xac')][_0x7f79('0x117')],'openedInteractions':_0x5b8ec1,'maxInteractions':_0x4214f2,'virtual':_0x4dd11f['virtual'],'online':_0x5507d1,'custom':_0x4dd11f}))[_0x7f79('0x118')](/'/g,'\x5c\x27')};_0xf24a54[_0x7f79('0x40')](ejs['render'](Mustache[_0x7f79('0x119')](_0x1c7cf4,_0x5a7500),{'proactiveActions':_0x3397b4,'alignment':_0x64aa31[_0x7f79('0x11a')],'verticalAlignment':_0x64aa31['verticalAlignment'],'div_color':_0x64aa31[_0x7f79('0x101')],'text_color':_0x64aa31[_0x7f79('0x11b')],'button_color':_0x64aa31['color_button'],'background_color':_0x64aa31[_0x7f79('0x11c')]}));})[_0x7f79('0x2c')](handleError(_0xf24a54,null));};exports[_0x7f79('0x11d')]=function(_0x45d610,_0x3cbc02,_0x114874){return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x45d610[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x3cbc02,null))[_0x7f79('0x21')](function(_0xb399f){if(_0xb399f){return db[_0x7f79('0xe5')][_0x7f79('0xe6')](function(_0x4a8087){return db[_0x7f79('0x11e')][_0x7f79('0x3b')]({'where':{'ChatWebsiteId':_0x45d610[_0x7f79('0x5c')]['id']},'transaction':_0x4a8087})[_0x7f79('0x21')](function(_0x388be3){var _0x390bf8=_[_0x7f79('0x44')](_0x45d610[_0x7f79('0x67')],function(_0x3b08d1){_0x3b08d1['ChatWebsiteId']=_0x45d610[_0x7f79('0x5c')]['id'];return _0x3b08d1;});return db[_0x7f79('0x11e')]['bulkCreate'](_0x390bf8,{'transaction':_0x4a8087});});})['then'](function(){return db[_0x7f79('0x11e')][_0x7f79('0x11f')]({'where':{'ChatWebsiteId':_0x45d610['params']['id']},'order':'priority'});});}})[_0x7f79('0x21')](respondWithResult(_0x3cbc02,null))[_0x7f79('0x2c')](handleError(_0x3cbc02,null));};exports[_0x7f79('0x120')]=function(_0x32e01d,_0x3f040d,_0x2d679a){var _0x19afea={};var _0x22b920={};var _0xe3a061;var _0x1a82ff;return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x32e01d[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x3f040d,null))[_0x7f79('0x21')](function(_0x463a44){if(_0x463a44){_0xe3a061=_0x463a44;_0x22b920[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db[_0x7f79('0x11e')][_0x7f79('0x6d')]);_0x22b920[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x32e01d[_0x7f79('0x4a')]);_0x22b920[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x22b920['model'],_0x22b920['query']);_0x19afea[_0x7f79('0x4e')]=_[_0x7f79('0x4d')](_0x22b920[_0x7f79('0x49')],qs[_0x7f79('0x4f')](_0x32e01d[_0x7f79('0x4a')]['fields']));_0x19afea[_0x7f79('0x4e')]=_0x19afea[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x19afea[_0x7f79('0x4e')]:_0x22b920['model'];_0x19afea[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x32e01d[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x19afea[_0x7f79('0x55')]=qs[_0x7f79('0x4c')](_[_0x7f79('0x56')](_0x32e01d[_0x7f79('0x4a')],_0x22b920['filters']));if(_0x32e01d['query'][_0x7f79('0x59')]){_0x19afea[_0x7f79('0x55')]=_[_0x7f79('0x57')](_0x19afea['where'],{'$or':_['map'](_0x19afea['attributes'],function(_0x2a0d52){var _0x28a445={};_0x28a445[_0x2a0d52]={'$like':'%'+_0x32e01d['query'][_0x7f79('0x59')]+'%'};return _0x28a445;})});}_0x19afea=_[_0x7f79('0x57')]({},_0x19afea,_0x32e01d[_0x7f79('0x5e')]);return _0xe3a061[_0x7f79('0x120')](_0x19afea);}})[_0x7f79('0x21')](function(_0x746111){if(_0x746111){_0x1a82ff=_0x746111[_0x7f79('0x50')];if(!_0x32e01d['query']['hasOwnProperty'](_0x7f79('0x52'))){_0x19afea[_0x7f79('0x34')]=qs[_0x7f79('0x34')](_0x32e01d[_0x7f79('0x4a')][_0x7f79('0x34')]);_0x19afea[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x32e01d[_0x7f79('0x4a')]['offset']);}return _0xe3a061[_0x7f79('0x120')](_0x19afea);}})[_0x7f79('0x21')](function(_0xa5bccc){if(_0xa5bccc){return _0xa5bccc?{'count':_0x1a82ff,'rows':_0xa5bccc}:null;}})['then'](respondWithResult(_0x3f040d,null))[_0x7f79('0x2c')](handleError(_0x3f040d,null));};exports['addProactiveActions']=function(_0x3e38e4,_0x47b9c2,_0x577913){return db['chatProactiveAction'][_0x7f79('0x64')]({'where':{'id':_0x3e38e4[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x47b9c2,null))['then'](function(_0x468727){if(_0x468727){return _0x468727[_0x7f79('0x121')](_0x3e38e4[_0x7f79('0x67')]['ids'],_['omit'](_0x3e38e4['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x47b9c2,null))['catch'](handleError(_0x47b9c2,null));};exports[_0x7f79('0x10f')]=function(_0x53b941,_0x5dcfed,_0x4c67a7){var _0x2f8e2c={};var _0x29dd5f={};var _0x88a5d8;var _0x2e3c8f;return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x53b941['params']['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x5dcfed,null))[_0x7f79('0x21')](function(_0x459c88){if(_0x459c88){_0x88a5d8=_0x459c88;_0x29dd5f['model']=_[_0x7f79('0x4b')](db[_0x7f79('0x122')]['rawAttributes']);_0x29dd5f['query']=_[_0x7f79('0x4b')](_0x53b941[_0x7f79('0x4a')]);_0x29dd5f[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x29dd5f[_0x7f79('0x49')],_0x29dd5f[_0x7f79('0x4a')]);_0x2f8e2c['attributes']=_[_0x7f79('0x4d')](_0x29dd5f[_0x7f79('0x49')],qs[_0x7f79('0x4f')](_0x53b941[_0x7f79('0x4a')]['fields']));_0x2f8e2c[_0x7f79('0x4e')]=_0x2f8e2c[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x2f8e2c[_0x7f79('0x4e')]:_0x29dd5f['model'];_0x2f8e2c[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x53b941[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x2f8e2c[_0x7f79('0x55')]=qs[_0x7f79('0x4c')](_[_0x7f79('0x56')](_0x53b941[_0x7f79('0x4a')],_0x29dd5f[_0x7f79('0x4c')]));if(_0x53b941['query']['filter']){_0x2f8e2c[_0x7f79('0x55')]=_[_0x7f79('0x57')](_0x2f8e2c['where'],{'$or':_[_0x7f79('0x44')](_0x2f8e2c['attributes'],function(_0x112e78){var _0x1b1731={};_0x1b1731[_0x112e78]={'$like':'%'+_0x53b941['query'][_0x7f79('0x59')]+'%'};return _0x1b1731;})});}_0x2f8e2c=_['merge']({},_0x2f8e2c,_0x53b941[_0x7f79('0x5e')]);return _0x88a5d8[_0x7f79('0x10f')](_0x2f8e2c);}})[_0x7f79('0x21')](function(_0x516366){if(_0x516366){_0x2e3c8f=_0x516366[_0x7f79('0x50')];if(!_0x53b941[_0x7f79('0x4a')][_0x7f79('0x51')]('nolimit')){_0x2f8e2c[_0x7f79('0x34')]=qs[_0x7f79('0x34')](_0x53b941[_0x7f79('0x4a')][_0x7f79('0x34')]);_0x2f8e2c[_0x7f79('0x31')]=qs['offset'](_0x53b941[_0x7f79('0x4a')]['offset']);}return _0x88a5d8['getProactiveActions'](_0x2f8e2c);}})['then'](function(_0x2cd722){if(_0x2cd722){return _0x2cd722?{'count':_0x2e3c8f,'rows':_0x2cd722}:null;}})[_0x7f79('0x21')](respondWithResult(_0x5dcfed,null))[_0x7f79('0x2c')](handleError(_0x5dcfed,null));};exports[_0x7f79('0x123')]=function(_0xce7d77,_0x2d344e,_0x4271f7){var _0x1a10ad=_0xce7d77[_0x7f79('0x4a')][_0x7f79('0x124')]===_0x7f79('0x125')?_0x7f79('0x126'):_0x7f79('0x127');return db[_0x7f79('0x45')][_0x7f79('0x64')]({'attributes':['id',_0x1a10ad],'where':{'id':_0xce7d77[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x2d344e,null))[_0x7f79('0x21')](function(_0x146823){if(_0x146823){var _0x45b2f9=_0x146823[_0x1a10ad];var _0x46c727=_0x45b2f9&&_0x45b2f9[_0x7f79('0x128')]?_0x45b2f9[_0x7f79('0x128')]:[];_0x2d344e[_0x7f79('0x40')]({'fromKey':_[_0x7f79('0x83')](_0x45b2f9['fromKey'])?undefined:_0x45b2f9[_0x7f79('0x129')],'count':_0x46c727[_0x7f79('0x50')],'rows':_0x46c727});}})[_0x7f79('0x2c')](handleError(_0x2d344e,null));};exports[_0x7f79('0x12a')]=function(_0x4efccc,_0x4b3919,_0x419b5b){var _0x22cb23={'raw':![],'where':{}};var _0xfea96a={};var _0x498439={'count':0x0,'rows':[]};return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x4efccc[_0x7f79('0x5c')]['id']}})['then'](handleEntityNotFound(_0x4b3919,null))[_0x7f79('0x21')](function(_0x23e8e1){if(_0x23e8e1){_0xfea96a[_0x7f79('0x49')]=_[_0x7f79('0x4b')](db[_0x7f79('0x12b')][_0x7f79('0x6d')]);_0xfea96a[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x4efccc[_0x7f79('0x4a')]);_0xfea96a[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0xfea96a[_0x7f79('0x49')],_0xfea96a[_0x7f79('0x4a')]);_0x22cb23['attributes']=_['intersection'](_0xfea96a['model'],qs[_0x7f79('0x4f')](_0x4efccc[_0x7f79('0x4a')][_0x7f79('0x4f')]));_0x22cb23['attributes']=_0x22cb23[_0x7f79('0x4e')][_0x7f79('0x50')]?_0x22cb23[_0x7f79('0x4e')]:_0xfea96a['model'];if(!_0x4efccc[_0x7f79('0x4a')]['hasOwnProperty'](_0x7f79('0x52'))){_0x22cb23['limit']=qs[_0x7f79('0x34')](_0x4efccc['query'][_0x7f79('0x34')]);_0x22cb23[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x4efccc[_0x7f79('0x4a')][_0x7f79('0x31')]);}_0x22cb23['order']=qs[_0x7f79('0x54')](_0x4efccc[_0x7f79('0x4a')][_0x7f79('0x54')]);_0x22cb23[_0x7f79('0x55')]=qs[_0x7f79('0x4c')](_['pick'](_0x4efccc[_0x7f79('0x4a')],_0xfea96a[_0x7f79('0x4c')]));_0x22cb23['where']['ChatWebsiteId']=_0x23e8e1['id'];if(_0x4efccc[_0x7f79('0x4a')][_0x7f79('0x59')]){_0x22cb23['where']=_[_0x7f79('0x57')](_0x22cb23['where'],{'$or':_[_0x7f79('0x44')](_0x22cb23['attributes'],function(_0x14437c){var _0x1c6211={};_0x1c6211[_0x14437c]={'$like':'%'+_0x4efccc['query'][_0x7f79('0x59')]+'%'};return _0x1c6211;})});}_0x22cb23=_[_0x7f79('0x57')]({},_0x22cb23,_0x4efccc[_0x7f79('0x5e')]);return db[_0x7f79('0x12b')]['count']({'where':_0x22cb23[_0x7f79('0x55')]})[_0x7f79('0x21')](function(_0x4a7e0f){_0x498439[_0x7f79('0x33')]=_0x4a7e0f;if(_0x4efccc[_0x7f79('0x4a')]['includeAll']){_0x22cb23[_0x7f79('0x5d')]=[{'all':!![]}];}else{_0x22cb23[_0x7f79('0x5d')]=[{'model':db['CmContact'],'as':_0x7f79('0x12c'),'required':![]},{'model':db['Attachment'],'as':_0x7f79('0x12d'),'required':![]}];}return db[_0x7f79('0x12b')][_0x7f79('0x5b')](_0x22cb23);})['then'](function(_0x437cb4){_0x498439['rows']=_0x437cb4;return _0x498439;});}})['then'](respondWithFilteredResult(_0x4b3919,_0x22cb23))[_0x7f79('0x2c')](handleError(_0x4b3919,null));};exports[_0x7f79('0x12e')]=function(_0x3be82c,_0x3d3319,_0x49713f){return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x3be82c['params']['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x3d3319,null))[_0x7f79('0x21')](function(_0x393bd5){if(_0x393bd5){return _0x393bd5[_0x7f79('0x12e')](_0x3be82c[_0x7f79('0x67')][_0x7f79('0x70')],_[_0x7f79('0xfc')](_0x3be82c[_0x7f79('0x67')],[_0x7f79('0x70'),'id'])||{})[_0x7f79('0xbe')](function(_0x9d1854){for(var _0x5bb39e=0x0;_0x5bb39e<_0x3be82c[_0x7f79('0x67')][_0x7f79('0x70')][_0x7f79('0x50')];_0x5bb39e+=0x1){socket[_0x7f79('0x12f')](_0x7f79('0x130'),{'UserId':Number(_0x3be82c[_0x7f79('0x67')][_0x7f79('0x70')][_0x5bb39e]),'ChatWebsiteId':Number(_0x3be82c[_0x7f79('0x5c')]['id'])});}return _0x9d1854;});}})[_0x7f79('0x21')](respondWithResult(_0x3d3319,null))[_0x7f79('0x2c')](handleError(_0x3d3319,null));};exports['removeAgents']=function(_0x3cc759,_0x4441f6,_0x7c3bfe){return db[_0x7f79('0x45')][_0x7f79('0x64')]({'where':{'id':_0x3cc759['params']['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x4441f6,null))[_0x7f79('0x21')](function(_0x3095ae){if(_0x3095ae){return _0x3095ae[_0x7f79('0x131')](_0x3cc759[_0x7f79('0x4a')][_0x7f79('0x70')])[_0x7f79('0x21')](function(){if(_[_0x7f79('0x132')](_0x3cc759[_0x7f79('0x4a')][_0x7f79('0x70')])){for(var _0x65383=0x0;_0x65383<_0x3cc759[_0x7f79('0x4a')][_0x7f79('0x70')][_0x7f79('0x50')];_0x65383+=0x1){socket['emit'](_0x7f79('0x133'),{'UserId':Number(_0x3cc759[_0x7f79('0x4a')][_0x7f79('0x70')][_0x65383]),'ChatWebsiteId':Number(_0x3cc759[_0x7f79('0x5c')]['id'])});}}else{socket[_0x7f79('0x12f')](_0x7f79('0x133'),{'UserId':Number(_0x3cc759[_0x7f79('0x4a')]['ids']),'ChatWebsiteId':Number(_0x3cc759['params']['id'])});}});}})[_0x7f79('0x21')](respondWithStatusCode(_0x4441f6,null))['catch'](handleError(_0x4441f6,null));};exports[_0x7f79('0x134')]=function(_0x20eba9,_0x4f5a6c,_0x567865){var _0x460994={};var _0x38f6b3={};var _0x596625;var _0x3fcf1b;return db[_0x7f79('0x45')]['findOne']({'where':{'id':_0x20eba9[_0x7f79('0x5c')]['id']}})[_0x7f79('0x21')](handleEntityNotFound(_0x4f5a6c,null))['then'](function(_0x49e0b5){if(_0x49e0b5){_0x596625=_0x49e0b5;_0x38f6b3[_0x7f79('0x49')]=_['keys'](db[_0x7f79('0xc8')][_0x7f79('0x6d')]);_0x38f6b3[_0x7f79('0x4a')]=_[_0x7f79('0x4b')](_0x20eba9[_0x7f79('0x4a')]);_0x38f6b3[_0x7f79('0x4c')]=_[_0x7f79('0x4d')](_0x38f6b3['model'],_0x38f6b3[_0x7f79('0x4a')]);_0x460994['attributes']=_[_0x7f79('0x4d')](_0x38f6b3[_0x7f79('0x49')],qs[_0x7f79('0x4f')](_0x20eba9[_0x7f79('0x4a')][_0x7f79('0x4f')]));_0x460994[_0x7f79('0x4e')]=_0x460994['attributes']['length']?_0x460994[_0x7f79('0x4e')]:_0x38f6b3[_0x7f79('0x49')];_0x460994[_0x7f79('0x53')]=qs[_0x7f79('0x54')](_0x20eba9['query'][_0x7f79('0x54')]);_0x460994[_0x7f79('0x55')]=qs[_0x7f79('0x4c')](_[_0x7f79('0x56')](_0x20eba9[_0x7f79('0x4a')],_0x38f6b3['filters']));if(_0x20eba9[_0x7f79('0x4a')][_0x7f79('0x59')]){_0x460994['where']=_[_0x7f79('0x57')](_0x460994[_0x7f79('0x55')],{'$or':_[_0x7f79('0x44')](_0x460994[_0x7f79('0x4e')],function(_0x307826){var _0x571f84={};_0x571f84[_0x307826]={'$like':'%'+_0x20eba9['query'][_0x7f79('0x59')]+'%'};return _0x571f84;})});}_0x460994=_['merge']({},_0x460994,_0x20eba9[_0x7f79('0x5e')]);return _0x596625[_0x7f79('0x134')](_0x460994);}})[_0x7f79('0x21')](function(_0x4f9637){if(_0x4f9637){_0x3fcf1b=_0x4f9637['length'];if(!_0x20eba9['query']['hasOwnProperty']('nolimit')){_0x460994['limit']=qs[_0x7f79('0x34')](_0x20eba9[_0x7f79('0x4a')][_0x7f79('0x34')]);_0x460994[_0x7f79('0x31')]=qs[_0x7f79('0x31')](_0x20eba9[_0x7f79('0x4a')][_0x7f79('0x31')]);}return _0x596625[_0x7f79('0x134')](_0x460994);}})['then'](function(_0x439b2e){if(_0x439b2e){return _0x439b2e?{'count':_0x3fcf1b,'rows':_0x439b2e}:null;}})[_0x7f79('0x21')](respondWithResult(_0x4f5a6c,null))[_0x7f79('0x2c')](handleError(_0x4f5a6c,null));};
\ No newline at end of file
index 9500c16..7569dc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f90=['save','emit','hasOwnProperty','hook','events','../../mysqldb','ChatWebsite','setMaxListeners'];(function(_0x5d1044,_0x18f656){var _0x3cd90e=function(_0x3c40be){while(--_0x3c40be){_0x5d1044['push'](_0x5d1044['shift']());}};_0x3cd90e(++_0x18f656);}(_0x7f90,0xf4));var _0x07f9=function(_0x2a27eb,_0x2451c8){_0x2a27eb=_0x2a27eb-0x0;var _0x3e8594=_0x7f90[_0x2a27eb];return _0x3e8594;};'use strict';var EventEmitter=require(_0x07f9('0x0'));var ChatWebsite=require(_0x07f9('0x1'))['db'][_0x07f9('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x07f9('0x3')](0x0);var events={'afterCreate':_0x07f9('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x15b548){return function(_0x132ae4,_0x574e7d,_0x36a0f1){ChatWebsiteEvents[_0x07f9('0x5')](_0x15b548+':'+_0x132ae4['id'],_0x132ae4);ChatWebsiteEvents[_0x07f9('0x5')](_0x15b548,_0x132ae4);_0x36a0f1(null);};}for(var e in events){if(events[_0x07f9('0x6')](e)){var event=events[e];ChatWebsite[_0x07f9('0x7')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0xb138=['setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','ChatWebsite'];(function(_0x1876b2,_0x5d0225){var _0x9fb1e0=function(_0x29b099){while(--_0x29b099){_0x1876b2['push'](_0x1876b2['shift']());}};_0x9fb1e0(++_0x5d0225);}(_0xb138,0x1dd));var _0x8b13=function(_0x2333d9,_0x1758e6){_0x2333d9=_0x2333d9-0x0;var _0x436c45=_0xb138[_0x2333d9];return _0x436c45;};'use strict';var EventEmitter=require(_0x8b13('0x0'));var ChatWebsite=require(_0x8b13('0x1'))['db'][_0x8b13('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x8b13('0x3')](0x0);var events={'afterCreate':_0x8b13('0x4'),'afterUpdate':_0x8b13('0x5'),'afterDestroy':_0x8b13('0x6')};function emitEvent(_0x5369d4){return function(_0x4411a0,_0x241acb,_0x3af81a){ChatWebsiteEvents['emit'](_0x5369d4+':'+_0x4411a0['id'],_0x4411a0);ChatWebsiteEvents[_0x8b13('0x7')](_0x5369d4,_0x4411a0);_0x3af81a(null);};}for(var e in events){if(events[_0x8b13('0x8')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module[_0x8b13('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
index a20271b..71de49e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbab8=['ChatWebsite','chat_websites','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./chatWebsite.attributes','exports','define'];(function(_0x21b359,_0x4dc80e){var _0x57b8e7=function(_0x135adb){while(--_0x135adb){_0x21b359['push'](_0x21b359['shift']());}};_0x57b8e7(++_0x4dc80e);}(_0xbab8,0x9c));var _0x8bab=function(_0x2aea64,_0x32a66f){_0x2aea64=_0x2aea64-0x0;var _0x375247=_0xbab8[_0x2aea64];return _0x375247;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8bab('0x0'))(_0x8bab('0x1'));var moment=require(_0x8bab('0x2'));var BPromise=require(_0x8bab('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8bab('0x4'));var config=require(_0x8bab('0x5'));var attributes=require(_0x8bab('0x6'));module[_0x8bab('0x7')]=function(_0x432135,_0xa24f97){return _0x432135[_0x8bab('0x8')](_0x8bab('0x9'),attributes,{'tableName':_0x8bab('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7476=['path','../../config/environment','ChatWebsite','chat_websites','lodash','moment','bluebird'];(function(_0x4e3c8a,_0x1c5385){var _0x397301=function(_0x1b68a7){while(--_0x1b68a7){_0x4e3c8a['push'](_0x4e3c8a['shift']());}};_0x397301(++_0x1c5385);}(_0x7476,0x107));var _0x6747=function(_0x5ef905,_0x564b87){_0x5ef905=_0x5ef905-0x0;var _0x367808=_0x7476[_0x5ef905];return _0x367808;};'use strict';var _=require(_0x6747('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x6747('0x1'));var BPromise=require(_0x6747('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6747('0x3'));var rimraf=require('rimraf');var config=require(_0x6747('0x4'));var attributes=require('./chatWebsite.attributes');module['exports']=function(_0x2391eb,_0x2d0b76){return _0x2391eb['define'](_0x6747('0x5'),attributes,{'tableName':_0x6747('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 24e953f..542c85a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6880=['request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','register','request','then','info','ChatWebsite,\x20%s,\x20%s'];(function(_0xd2b574,_0x2b42ed){var _0x413ee1=function(_0x299ac8){while(--_0x299ac8){_0xd2b574['push'](_0xd2b574['shift']());}};_0x413ee1(++_0x2b42ed);}(_0x6880,0x17d));var _0x0688=function(_0x25e923,_0x2c15c7){_0x25e923=_0x25e923-0x0;var _0x34a4bc=_0x6880[_0x25e923];return _0x34a4bc;};'use strict';var _=require(_0x0688('0x0'));var util=require(_0x0688('0x1'));var moment=require(_0x0688('0x2'));var BPromise=require(_0x0688('0x3'));var rs=require(_0x0688('0x4'));var fs=require('fs');var Redis=require(_0x0688('0x5'));var db=require(_0x0688('0x6'))['db'];var utils=require(_0x0688('0x7'));var logger=require(_0x0688('0x8'))(_0x0688('0x9'));var config=require(_0x0688('0xa'));var jayson=require(_0x0688('0xb'));var client=jayson[_0x0688('0xc')]['http']({'port':0x232a});config['redis']=_[_0x0688('0xd')](config[_0x0688('0xe')],{'host':_0x0688('0xf'),'port':0x18eb});var socket=require(_0x0688('0x10'))(new Redis(config[_0x0688('0xe')]));require('./chatWebsite.socket')[_0x0688('0x11')](socket);function respondWithRpcPromise(_0xdfad1f,_0xc685ea,_0x2934b1){return new BPromise(function(_0x586f32,_0x55d69c){return client[_0x0688('0x12')](_0xdfad1f,_0x2934b1)[_0x0688('0x13')](function(_0x1b295b){logger[_0x0688('0x14')](_0x0688('0x15'),_0xc685ea,_0x0688('0x16'));logger[_0x0688('0x17')](_0x0688('0x18'),_0xc685ea,_0x0688('0x16'),JSON[_0x0688('0x19')](_0x1b295b));if(_0x1b295b[_0x0688('0x1a')]){if(_0x1b295b[_0x0688('0x1a')][_0x0688('0x1b')]===0x1f4){logger[_0x0688('0x1a')](_0x0688('0x15'),_0xc685ea,_0x1b295b[_0x0688('0x1a')][_0x0688('0x1c')]);return _0x55d69c(_0x1b295b['error'][_0x0688('0x1c')]);}logger[_0x0688('0x1a')](_0x0688('0x15'),_0xc685ea,_0x1b295b[_0x0688('0x1a')]['message']);return _0x586f32(_0x1b295b[_0x0688('0x1a')][_0x0688('0x1c')]);}else{logger[_0x0688('0x14')](_0x0688('0x15'),_0xc685ea,_0x0688('0x16'));_0x586f32(_0x1b295b[_0x0688('0x1d')][_0x0688('0x1c')]);}})[_0x0688('0x1e')](function(_0x2be4ca){logger['error'](_0x0688('0x15'),_0xc685ea,_0x2be4ca);_0x55d69c(_0x2be4ca);});});}
\ No newline at end of file
+var _0xb644=['client','http','./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x367253,_0x15d9fb){var _0x150e8e=function(_0xbf3e57){while(--_0xbf3e57){_0x367253['push'](_0x367253['shift']());}};_0x150e8e(++_0x15d9fb);}(_0xb644,0x16c));var _0x4b64=function(_0x2fd812,_0x3638a9){_0x2fd812=_0x2fd812-0x0;var _0x12212d=_0xb644[_0x2fd812];return _0x12212d;};'use strict';var _=require(_0x4b64('0x0'));var util=require(_0x4b64('0x1'));var moment=require(_0x4b64('0x2'));var BPromise=require(_0x4b64('0x3'));var rs=require(_0x4b64('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4b64('0x5'))['db'];var utils=require(_0x4b64('0x6'));var logger=require(_0x4b64('0x7'))(_0x4b64('0x8'));var config=require(_0x4b64('0x9'));var jayson=require(_0x4b64('0xa'));var client=jayson[_0x4b64('0xb')][_0x4b64('0xc')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4b64('0xd'))[_0x4b64('0xe')](socket);function respondWithRpcPromise(_0x56d364,_0x59817c,_0x49996f){return new BPromise(function(_0x5665d0,_0x138a22){return client['request'](_0x56d364,_0x49996f)[_0x4b64('0xf')](function(_0x33cfb7){logger[_0x4b64('0x10')](_0x4b64('0x11'),_0x59817c,_0x4b64('0x12'));logger[_0x4b64('0x13')](_0x4b64('0x14'),_0x59817c,_0x4b64('0x12'),JSON[_0x4b64('0x15')](_0x33cfb7));if(_0x33cfb7[_0x4b64('0x16')]){if(_0x33cfb7[_0x4b64('0x16')][_0x4b64('0x17')]===0x1f4){logger['error'](_0x4b64('0x11'),_0x59817c,_0x33cfb7[_0x4b64('0x16')][_0x4b64('0x18')]);return _0x138a22(_0x33cfb7[_0x4b64('0x16')][_0x4b64('0x18')]);}logger[_0x4b64('0x16')](_0x4b64('0x11'),_0x59817c,_0x33cfb7['error'][_0x4b64('0x18')]);return _0x5665d0(_0x33cfb7[_0x4b64('0x16')][_0x4b64('0x18')]);}else{logger['info'](_0x4b64('0x11'),_0x59817c,_0x4b64('0x12'));_0x5665d0(_0x33cfb7['result'][_0x4b64('0x18')]);}})['catch'](function(_0x44e2d0){logger[_0x4b64('0x16')](_0x4b64('0x11'),_0x59817c,_0x44e2d0);_0x138a22(_0x44e2d0);});});}
\ No newline at end of file
index 604cdd6..e7631de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bfa=['update','emit','removeListener','register','length','chatWebsite:','./chatWebsite.events','save'];(function(_0x3a04ab,_0x31b9fd){var _0x4bff6d=function(_0x125f7e){while(--_0x125f7e){_0x3a04ab['push'](_0x3a04ab['shift']());}};_0x4bff6d(++_0x31b9fd);}(_0x9bfa,0xf6));var _0xa9bf=function(_0x4628c6,_0x2e68e5){_0x4628c6=_0x4628c6-0x0;var _0x5b9a47=_0x9bfa[_0x4628c6];return _0x5b9a47;};'use strict';var ChatWebsiteEvents=require(_0xa9bf('0x0'));var events=[_0xa9bf('0x1'),'remove',_0xa9bf('0x2')];function createListener(_0x6da1a5,_0x24da9a){return function(_0x34ab1c){_0x24da9a[_0xa9bf('0x3')](_0x6da1a5,_0x34ab1c);};}function removeListener(_0x9ea807,_0x317cd2){return function(){ChatWebsiteEvents[_0xa9bf('0x4')](_0x9ea807,_0x317cd2);};}exports[_0xa9bf('0x5')]=function(_0x584573){for(var _0x3a0767=0x0,_0x43073d=events[_0xa9bf('0x6')];_0x3a0767<_0x43073d;_0x3a0767++){var _0x1007b4=events[_0x3a0767];var _0x732aae=createListener(_0xa9bf('0x7')+_0x1007b4,_0x584573);ChatWebsiteEvents['on'](_0x1007b4,_0x732aae);}};
\ No newline at end of file
+var _0x9f35=['length','chatWebsite:','./chatWebsite.events','save','remove','update','emit'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9f35,0x1b4));var _0x59f3=function(_0x420a16,_0x2e3ba9){_0x420a16=_0x420a16-0x0;var _0x87a709=_0x9f35[_0x420a16];return _0x87a709;};'use strict';var ChatWebsiteEvents=require(_0x59f3('0x0'));var events=[_0x59f3('0x1'),_0x59f3('0x2'),_0x59f3('0x3')];function createListener(_0x283f94,_0x433f99){return function(_0x595eb5){_0x433f99[_0x59f3('0x4')](_0x283f94,_0x595eb5);};}function removeListener(_0x2f7794,_0x2fdcd7){return function(){ChatWebsiteEvents['removeListener'](_0x2f7794,_0x2fdcd7);};}exports['register']=function(_0x22f994){for(var _0x406f1a=0x0,_0x589fe5=events[_0x59f3('0x5')];_0x406f1a<_0x589fe5;_0x406f1a++){var _0x2f00e5=events[_0x406f1a];var _0x379046=createListener(_0x59f3('0x6')+_0x2f00e5,_0x22f994);ChatWebsiteEvents['on'](_0x2f00e5,_0x379046);}};
\ No newline at end of file
index 3fa40b3..db6eeef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03fa=['getOfflineMessages','create','post','addDisposition','addAnswer','diskStorage','join','server/files/images/logos/','%s-%s','now','originalname','single','file','addLogo','root','server/files/images/avatars/','format','addAvatar','addSystemAvatar','/:id/notify','notify','server/files','offline-chat','ensureDir','replace','extname','/:id/offline','any','offline','/:id/interactions','addInteraction','addApplications','addProactiveActions','addAgents','update','delete','destroy','removeDispositions','removeAnswers','/:id/users','exports','multer','path','connect-timeout','express','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','getFields'];(function(_0x2fb3db,_0x2960bf){var _0x5a358f=function(_0x573434){while(--_0x573434){_0x2fb3db['push'](_0x2fb3db['shift']());}};_0x5a358f(++_0x2960bf);}(_0x03fa,0xfe));var _0xa03f=function(_0x3fc1ed,_0x34a9b4){_0x3fc1ed=_0x3fc1ed-0x0;var _0xf93288=_0x03fa[_0x3fc1ed];return _0xf93288;};'use strict';var multer=require(_0xa03f('0x0'));var util=require('util');var path=require(_0xa03f('0x1'));var timeout=require(_0xa03f('0x2'));var express=require(_0xa03f('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa03f('0x4'));var config=require(_0xa03f('0x5'));var controller=require('./chatWebsite.controller');router[_0xa03f('0x6')]('/',auth[_0xa03f('0x7')](),controller[_0xa03f('0x8')]);router['get'](_0xa03f('0x9'),auth[_0xa03f('0x7')](),controller['describe']);router[_0xa03f('0x6')](_0xa03f('0xa'),auth[_0xa03f('0x7')](),controller[_0xa03f('0xb')]);router[_0xa03f('0x6')](_0xa03f('0xc'),auth[_0xa03f('0x7')](),controller[_0xa03f('0xd')]);router[_0xa03f('0x6')](_0xa03f('0xe'),auth[_0xa03f('0x7')](),controller['getAnswers']);router['get'](_0xa03f('0xf'),controller[_0xa03f('0x10')]);router[_0xa03f('0x6')](_0xa03f('0x11'),controller[_0xa03f('0x12')]);router[_0xa03f('0x6')](_0xa03f('0x13'),controller[_0xa03f('0x14')]);router[_0xa03f('0x6')](_0xa03f('0x15'),controller['getSystemAvatar']);router[_0xa03f('0x6')]('/:id/interactions',auth[_0xa03f('0x7')](),controller[_0xa03f('0x16')]);router[_0xa03f('0x6')](_0xa03f('0x17'),controller[_0xa03f('0x18')]);router[_0xa03f('0x6')](_0xa03f('0x19'),auth['isAuthenticated'](),controller[_0xa03f('0x1a')]);router[_0xa03f('0x6')](_0xa03f('0x1b'),auth['isAuthenticated'](),controller[_0xa03f('0x1c')]);router['get']('/:id/fields',controller[_0xa03f('0x1d')]);router[_0xa03f('0x6')]('/:id/offline_messages',auth['isAuthenticated'](),controller[_0xa03f('0x1e')]);router['get']('/:id/users',auth[_0xa03f('0x7')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0xa03f('0x1f')]);router[_0xa03f('0x20')](_0xa03f('0xc'),auth['isAuthenticated'](),controller[_0xa03f('0x21')]);router[_0xa03f('0x20')](_0xa03f('0xe'),auth[_0xa03f('0x7')](),controller[_0xa03f('0x22')]);var upload=multer({'storage':multer[_0xa03f('0x23')]({'destination':function(_0x38d937,_0x423c08,_0xf0c362){_0xf0c362(null,path[_0xa03f('0x24')](config['root'],_0xa03f('0x25')));},'filename':function(_0xfeec58,_0x39018e,_0x46110e){_0x46110e(null,util['format'](_0xa03f('0x26'),Date[_0xa03f('0x27')](),_0x39018e[_0xa03f('0x28')]));}})});router[_0xa03f('0x20')](_0xa03f('0xf'),upload[_0xa03f('0x29')](_0xa03f('0x2a')),controller[_0xa03f('0x2b')]);var upload=multer({'storage':multer[_0xa03f('0x23')]({'destination':function(_0x1704ec,_0x3e0fe5,_0x4fc68b){_0x4fc68b(null,path[_0xa03f('0x24')](config[_0xa03f('0x2c')],_0xa03f('0x2d')));},'filename':function(_0x59d185,_0x26e0be,_0x46126e){_0x46126e(null,util[_0xa03f('0x2e')](_0xa03f('0x26'),Date[_0xa03f('0x27')](),_0x26e0be[_0xa03f('0x28')]));}})});router[_0xa03f('0x20')](_0xa03f('0x11'),upload[_0xa03f('0x29')]('file'),controller[_0xa03f('0x2f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x139f35,_0x138f7d,_0x5b19d4){_0x5b19d4(null,path[_0xa03f('0x24')](config[_0xa03f('0x2c')],'server/files/images/avatars/'));},'filename':function(_0x1c803e,_0x15d083,_0x48bffb){_0x48bffb(null,util[_0xa03f('0x2e')]('%s-%s',Date[_0xa03f('0x27')](),_0x15d083[_0xa03f('0x28')]));}})});router['post'](_0xa03f('0x13'),upload[_0xa03f('0x29')](_0xa03f('0x2a')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0xa03f('0x23')]({'destination':function(_0x1f4543,_0xeabf3b,_0xad1d21){_0xad1d21(null,path[_0xa03f('0x24')](config[_0xa03f('0x2c')],'server/files/images/avatars/'));},'filename':function(_0x4b639d,_0x2c9816,_0x145745){_0x145745(null,util['format'](_0xa03f('0x26'),Date[_0xa03f('0x27')](),_0x2c9816[_0xa03f('0x28')]));}})});router[_0xa03f('0x20')](_0xa03f('0x15'),upload[_0xa03f('0x29')](_0xa03f('0x2a')),controller[_0xa03f('0x30')]);router['post'](_0xa03f('0x31'),controller[_0xa03f('0x32')]);const offlineUploadMulter=multer({'storage':multer[_0xa03f('0x23')]({'destination':function(_0x174686,_0x23e6d5,_0x34e07b){const _0x10dc84=path['join'](config['root'],_0xa03f('0x33'),'attachments',_0xa03f('0x34'));fs_extra[_0xa03f('0x35')](_0x10dc84,function(){_0x34e07b(null,_0x10dc84);});},'filename':function(_0x2a76d5,_0x2043cb,_0x12041d){const _0x209320=_0x2043cb[_0xa03f('0x28')][_0xa03f('0x36')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x59e61e=path[_0xa03f('0x37')](_0x209320);const _0x13047d=Date[_0xa03f('0x27')]()+'-'+_0x209320[_0xa03f('0x36')](_0x59e61e,'')+_0x59e61e;_0x12041d(null,_0x13047d);}})});router['post'](_0xa03f('0x38'),offlineUploadMulter[_0xa03f('0x39')](),controller[_0xa03f('0x3a')]);router[_0xa03f('0x20')](_0xa03f('0x3b'),auth[_0xa03f('0x7')](),controller[_0xa03f('0x3c')]);router[_0xa03f('0x20')](_0xa03f('0x19'),auth[_0xa03f('0x7')](),controller[_0xa03f('0x3d')]);router[_0xa03f('0x20')](_0xa03f('0x1b'),auth[_0xa03f('0x7')](),controller[_0xa03f('0x3e')]);router[_0xa03f('0x20')]('/:id/users',auth[_0xa03f('0x7')](),controller[_0xa03f('0x3f')]);router['put'](_0xa03f('0xa'),auth[_0xa03f('0x7')](),controller[_0xa03f('0x40')]);router[_0xa03f('0x41')]('/:id',auth['isAuthenticated'](),controller[_0xa03f('0x42')]);router[_0xa03f('0x41')](_0xa03f('0xc'),auth[_0xa03f('0x7')](),controller[_0xa03f('0x43')]);router[_0xa03f('0x41')](_0xa03f('0xe'),auth[_0xa03f('0x7')](),controller[_0xa03f('0x44')]);router['delete'](_0xa03f('0x45'),auth[_0xa03f('0x7')](),controller['removeAgents']);module[_0xa03f('0x46')]=router;
\ No newline at end of file
+var _0xe3b2=['ensureDir','replace','/:id/offline','any','offline','addInteraction','/:id/applications','/:id/proactive_actions','addProactiveActions','addAgents','delete','removeDispositions','removeAnswers','removeAgents','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','getApplications','getProactiveActions','/:id/fields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','create','/:id/dispositions','addAnswer','diskStorage','join','server/files/images/logos/','format','originalname','single','file','root','server/files/images/avatars/','%s-%s','now','addCustomerAvatar','/:id/notify','notify','server/files','attachments'];(function(_0x144f50,_0x185941){var _0x4ec659=function(_0x5edb31){while(--_0x5edb31){_0x144f50['push'](_0x144f50['shift']());}};_0x4ec659(++_0x185941);}(_0xe3b2,0x1b9));var _0x2e3b=function(_0x2d4eba,_0x348848){_0x2d4eba=_0x2d4eba-0x0;var _0x21141d=_0xe3b2[_0x2d4eba];return _0x21141d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2e3b('0x0'));var timeout=require(_0x2e3b('0x1'));var express=require('express');var router=express[_0x2e3b('0x2')]();var fs_extra=require(_0x2e3b('0x3'));var auth=require(_0x2e3b('0x4'));var interaction=require(_0x2e3b('0x5'));var config=require(_0x2e3b('0x6'));var controller=require(_0x2e3b('0x7'));router[_0x2e3b('0x8')]('/',auth[_0x2e3b('0x9')](),controller[_0x2e3b('0xa')]);router['get'](_0x2e3b('0xb'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0xc')]);router['get'](_0x2e3b('0xd'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0xe')]);router[_0x2e3b('0x8')]('/:id/dispositions',auth[_0x2e3b('0x9')](),controller[_0x2e3b('0xf')]);router[_0x2e3b('0x8')](_0x2e3b('0x10'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x11')]);router[_0x2e3b('0x8')](_0x2e3b('0x12'),controller[_0x2e3b('0x13')]);router[_0x2e3b('0x8')](_0x2e3b('0x14'),controller['getAvatar']);router[_0x2e3b('0x8')](_0x2e3b('0x15'),controller[_0x2e3b('0x16')]);router[_0x2e3b('0x8')](_0x2e3b('0x17'),controller[_0x2e3b('0x18')]);router[_0x2e3b('0x8')](_0x2e3b('0x19'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x1a')]);router[_0x2e3b('0x8')](_0x2e3b('0x1b'),controller[_0x2e3b('0x1c')]);router[_0x2e3b('0x8')]('/:id/applications',auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x1d')]);router[_0x2e3b('0x8')]('/:id/proactive_actions',auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x1e')]);router[_0x2e3b('0x8')](_0x2e3b('0x1f'),controller['getFields']);router[_0x2e3b('0x8')](_0x2e3b('0x20'),auth['isAuthenticated'](),controller[_0x2e3b('0x21')]);router[_0x2e3b('0x8')](_0x2e3b('0x22'),auth['isAuthenticated'](),controller[_0x2e3b('0x23')]);router[_0x2e3b('0x24')]('/',auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x25')]);router[_0x2e3b('0x24')](_0x2e3b('0x26'),auth[_0x2e3b('0x9')](),controller['addDisposition']);router['post'](_0x2e3b('0x10'),auth['isAuthenticated'](),controller[_0x2e3b('0x27')]);var upload=multer({'storage':multer[_0x2e3b('0x28')]({'destination':function(_0x354c7b,_0x37cd0a,_0x50914c){_0x50914c(null,path[_0x2e3b('0x29')](config['root'],_0x2e3b('0x2a')));},'filename':function(_0xb26b88,_0x5ba189,_0x2bd493){_0x2bd493(null,util[_0x2e3b('0x2b')]('%s-%s',Date['now'](),_0x5ba189[_0x2e3b('0x2c')]));}})});router[_0x2e3b('0x24')](_0x2e3b('0x12'),upload[_0x2e3b('0x2d')](_0x2e3b('0x2e')),controller['addLogo']);var upload=multer({'storage':multer[_0x2e3b('0x28')]({'destination':function(_0x44e33b,_0x2664b7,_0x30442b){_0x30442b(null,path[_0x2e3b('0x29')](config[_0x2e3b('0x2f')],_0x2e3b('0x30')));},'filename':function(_0xbb5a38,_0x2b7569,_0x452859){_0x452859(null,util[_0x2e3b('0x2b')](_0x2e3b('0x31'),Date[_0x2e3b('0x32')](),_0x2b7569[_0x2e3b('0x2c')]));}})});router[_0x2e3b('0x24')](_0x2e3b('0x14'),upload[_0x2e3b('0x2d')](_0x2e3b('0x2e')),controller['addAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x10435b,_0x56d104,_0x167530){_0x167530(null,path[_0x2e3b('0x29')](config['root'],_0x2e3b('0x30')));},'filename':function(_0x14c389,_0xa2b7ef,_0x20d7a1){_0x20d7a1(null,util[_0x2e3b('0x2b')](_0x2e3b('0x31'),Date[_0x2e3b('0x32')](),_0xa2b7ef[_0x2e3b('0x2c')]));}})});router[_0x2e3b('0x24')](_0x2e3b('0x15'),upload[_0x2e3b('0x2d')](_0x2e3b('0x2e')),controller[_0x2e3b('0x33')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3e4a64,_0x3f767b,_0x2c77aa){_0x2c77aa(null,path[_0x2e3b('0x29')](config[_0x2e3b('0x2f')],'server/files/images/avatars/'));},'filename':function(_0x3f8a30,_0x44d1eb,_0x5c958c){_0x5c958c(null,util[_0x2e3b('0x2b')](_0x2e3b('0x31'),Date['now'](),_0x44d1eb[_0x2e3b('0x2c')]));}})});router['post']('/:id/system_avatar',upload['single'](_0x2e3b('0x2e')),controller['addSystemAvatar']);router['post'](_0x2e3b('0x34'),controller[_0x2e3b('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0x2e3b('0x28')]({'destination':function(_0xbbc1a,_0x1241f7,_0x22e9fa){const _0x32be7f=path[_0x2e3b('0x29')](config[_0x2e3b('0x2f')],_0x2e3b('0x36'),_0x2e3b('0x37'),'offline-chat');fs_extra[_0x2e3b('0x38')](_0x32be7f,function(){_0x22e9fa(null,_0x32be7f);});},'filename':function(_0x51599b,_0x1dd376,_0x21258b){const _0x553ea7=_0x1dd376['originalname'][_0x2e3b('0x39')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x3dbf75=path['extname'](_0x553ea7);const _0x53362f=Date[_0x2e3b('0x32')]()+'-'+_0x553ea7['replace'](_0x3dbf75,'')+_0x3dbf75;_0x21258b(null,_0x53362f);}})});router[_0x2e3b('0x24')](_0x2e3b('0x3a'),offlineUploadMulter[_0x2e3b('0x3b')](),controller[_0x2e3b('0x3c')]);router[_0x2e3b('0x24')](_0x2e3b('0x19'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x3d')]);router[_0x2e3b('0x24')](_0x2e3b('0x3e'),auth['isAuthenticated'](),controller['addApplications']);router[_0x2e3b('0x24')](_0x2e3b('0x3f'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x40')]);router[_0x2e3b('0x24')](_0x2e3b('0x22'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x41')]);router['put'](_0x2e3b('0xd'),auth[_0x2e3b('0x9')](),controller['update']);router[_0x2e3b('0x42')](_0x2e3b('0xd'),auth[_0x2e3b('0x9')](),controller['destroy']);router[_0x2e3b('0x42')](_0x2e3b('0x26'),auth['isAuthenticated'](),controller[_0x2e3b('0x43')]);router['delete'](_0x2e3b('0x10'),auth[_0x2e3b('0x9')](),controller[_0x2e3b('0x44')]);router['delete'](_0x2e3b('0x22'),auth['isAuthenticated'](),controller[_0x2e3b('0x45')]);module[_0x2e3b('0x46')]=router;
\ No newline at end of file
index 9a1db61..f8c9837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x972c=['ENUM','Google','STRING'];(function(_0x32b5ea,_0x53edec){var _0x4358ae=function(_0x4d303a){while(--_0x4d303a){_0x32b5ea['push'](_0x32b5ea['shift']());}};_0x4358ae(++_0x53edec);}(_0x972c,0xf2));var _0xc972=function(_0x2bcc2b,_0x2981f4){_0x2bcc2b=_0x2bcc2b-0x0;var _0x3f198e=_0x972c[_0x2bcc2b];return _0x3f198e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc972('0x0')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xc972('0x1')]('AmazonAWS',_0xc972('0x2')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xc972('0x0')]},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf96b=['Google','sequelize','exports','STRING','ENUM','AmazonAWS'];(function(_0x2c7483,_0x2cc8b5){var _0x4930c5=function(_0x4622ac){while(--_0x4622ac){_0x2c7483['push'](_0x2c7483['shift']());}};_0x4930c5(++_0x2cc8b5);}(_0xf96b,0x109));var _0xbf96=function(_0x3b1740,_0x148c0f){_0x3b1740=_0x3b1740-0x0;var _0x32725f=_0xf96b[_0x3b1740];return _0x32725f;};'use strict';var Sequelize=require(_0xbf96('0x0'));module[_0xbf96('0x1')]={'name':{'type':Sequelize[_0xbf96('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xbf96('0x3')](_0xbf96('0x4'),_0xbf96('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xbf96('0x2')]},'data2':{'type':Sequelize[_0xbf96('0x2')]}};
\ No newline at end of file
index 6bfdd78..4895512 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','CloudProvider','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x27a911,_0x2a3255){var _0x110ef2=function(_0x5d37a6){while(--_0x5d37a6){_0x27a911['push'](_0x27a911['shift']());}};_0x110ef2(++_0x2a3255);}(_0x7a54,0x106));var _0x47a5=function(_0x13a07d,_0x3ab6c2){_0x13a07d=_0x13a07d-0x0;var _0x1589c4=_0x7a54[_0x13a07d];return _0x1589c4;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['CloudProvider'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['CloudProvider']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['CloudProvider']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};
\ No newline at end of file
+var _0x0b0e=['hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','findAll','rows','catch','show','include','find','create','body','params','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','CloudProvider','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length'];(function(_0x1346f7,_0x4ef4f8){var _0xfbc40e=function(_0x1ef74e){while(--_0x1ef74e){_0x1346f7['push'](_0x1346f7['shift']());}};_0xfbc40e(++_0x4ef4f8);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4d093a,_0x15d59c){_0x4d093a=_0x4d093a-0x0;var _0x5d7227=_0x0b0e[_0x4d093a];return _0x5d7227;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['CloudProvider'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'all':!![]}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x41')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x402a0e){_0x36d137[_0xe0b0('0x42')]=_0x402a0e;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))[_0xe0b0('0x43')](handleError(_0x5b7a64,null));};exports[_0xe0b0('0x44')]=function(_0x52ffe4,_0x2aad80){var _0x309bbf={'raw':!![],'where':{'id':_0x52ffe4['params']['id']}},_0x528818={};_0x528818[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db['CloudProvider'][_0xe0b0('0x2b')]);_0x528818[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x52ffe4[_0xe0b0('0x2e')]);_0x528818[_0xe0b0('0x39')]=_['intersection'](_0x528818['model'],_0x528818['query']);_0x309bbf[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x528818['model'],qs[_0xe0b0('0x33')](_0x52ffe4[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x309bbf[_0xe0b0('0x32')]=_0x309bbf[_0xe0b0('0x32')]['length']?_0x309bbf['attributes']:_0x528818[_0xe0b0('0x31')];if(_0x52ffe4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x309bbf[_0xe0b0('0x45')]=[{'all':!![]}];}_0x309bbf=_[_0xe0b0('0x3b')]({},_0x309bbf,_0x52ffe4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x46')](_0x309bbf)['then'](handleEntityNotFound(_0x2aad80,null))['then'](respondWithResult(_0x2aad80,null))['catch'](handleError(_0x2aad80,null));};exports[_0xe0b0('0x47')]=function(_0x2184d3,_0x2419ce){return db[_0xe0b0('0x2a')]['create'](_0x2184d3[_0xe0b0('0x48')],{})[_0xe0b0('0x23')](respondWithResult(_0x2419ce,0xc9))['catch'](handleError(_0x2419ce,null));};exports['update']=function(_0x2365be,_0x1bc6e0){if(_0x2365be['body']['id']){delete _0x2365be[_0xe0b0('0x48')]['id'];}return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x2365be['params']['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x1bc6e0,null))['then'](saveUpdates(_0x2365be[_0xe0b0('0x48')],null))[_0xe0b0('0x23')](respondWithResult(_0x1bc6e0,null))[_0xe0b0('0x43')](handleError(_0x1bc6e0,null));};exports[_0xe0b0('0x24')]=function(_0x19ee71,_0xf9e694){return db['CloudProvider']['find']({'where':{'id':_0x19ee71[_0xe0b0('0x49')]['id']}})['then'](handleEntityNotFound(_0xf9e694,null))['then'](removeEntity(_0xf9e694,null))[_0xe0b0('0x43')](handleError(_0xf9e694,null));};
\ No newline at end of file
index a8d8b4c..822c8b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x935d=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','cloud_providers'];(function(_0x343899,_0x128a38){var _0x8982ac=function(_0x548da5){while(--_0x548da5){_0x343899['push'](_0x343899['shift']());}};_0x8982ac(++_0x128a38);}(_0x935d,0xb4));var _0xd935=function(_0x3fa296,_0x2bd315){_0x3fa296=_0x3fa296-0x0;var _0x10b19f=_0x935d[_0x3fa296];return _0x10b19f;};'use strict';var _=require(_0xd935('0x0'));var util=require(_0xd935('0x1'));var logger=require(_0xd935('0x2'))(_0xd935('0x3'));var moment=require(_0xd935('0x4'));var BPromise=require(_0xd935('0x5'));var rp=require(_0xd935('0x6'));var fs=require('fs');var path=require(_0xd935('0x7'));var rimraf=require(_0xd935('0x8'));var config=require(_0xd935('0x9'));var attributes=require('./cloudProvider.attributes');module[_0xd935('0xa')]=function(_0x12f6b1,_0x4ca65f){return _0x12f6b1['define']('CloudProvider',attributes,{'tableName':_0xd935('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb17c=['moment','bluebird','request-promise','path','../../config/environment','./cloudProvider.attributes','exports','define','util','../../config/logger','api'];(function(_0x419523,_0x31c326){var _0x5f06e9=function(_0x1c2e52){while(--_0x1c2e52){_0x419523['push'](_0x419523['shift']());}};_0x5f06e9(++_0x31c326);}(_0xb17c,0x1e1));var _0xcb17=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0xb17c[_0x500419];return _0x241c1a;};'use strict';var _=require('lodash');var util=require(_0xcb17('0x0'));var logger=require(_0xcb17('0x1'))(_0xcb17('0x2'));var moment=require(_0xcb17('0x3'));var BPromise=require(_0xcb17('0x4'));var rp=require(_0xcb17('0x5'));var fs=require('fs');var path=require(_0xcb17('0x6'));var rimraf=require('rimraf');var config=require(_0xcb17('0x7'));var attributes=require(_0xcb17('0x8'));module[_0xcb17('0x9')]=function(_0x472fdf,_0x400192){return _0x472fdf[_0xcb17('0xa')]('CloudProvider',attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd4cfd2..b7df3c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13b6=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash'];(function(_0x26bbd1,_0xb274f3){var _0x26b1eb=function(_0x4cf794){while(--_0x4cf794){_0x26bbd1['push'](_0x26bbd1['shift']());}};_0x26b1eb(++_0xb274f3);}(_0x13b6,0x97));var _0x613b=function(_0xea6957,_0xf3bd27){_0xea6957=_0xea6957-0x0;var _0xbe6a78=_0x13b6[_0xea6957];return _0xbe6a78;};'use strict';var _=require(_0x613b('0x0'));var util=require('util');var moment=require(_0x613b('0x1'));var BPromise=require(_0x613b('0x2'));var rs=require(_0x613b('0x3'));var fs=require('fs');var Redis=require(_0x613b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x613b('0x5'));var logger=require(_0x613b('0x6'))(_0x613b('0x7'));var config=require('../../config/environment');var jayson=require(_0x613b('0x8'));var client=jayson[_0x613b('0x9')][_0x613b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x593a18,_0x31a96f,_0x4e576a){return new BPromise(function(_0xf83c34,_0x4abb96){return client['request'](_0x593a18,_0x4e576a)[_0x613b('0xb')](function(_0x37dbc7){logger[_0x613b('0xc')](_0x613b('0xd'),_0x31a96f,_0x613b('0xe'));logger['debug']('CloudProvider,\x20%s,\x20%s,\x20%s',_0x31a96f,_0x613b('0xe'),JSON['stringify'](_0x37dbc7));if(_0x37dbc7[_0x613b('0xf')]){if(_0x37dbc7['error']['code']===0x1f4){logger[_0x613b('0xf')](_0x613b('0xd'),_0x31a96f,_0x37dbc7[_0x613b('0xf')]['message']);return _0x4abb96(_0x37dbc7[_0x613b('0xf')][_0x613b('0x10')]);}logger[_0x613b('0xf')](_0x613b('0xd'),_0x31a96f,_0x37dbc7[_0x613b('0xf')][_0x613b('0x10')]);return _0xf83c34(_0x37dbc7[_0x613b('0xf')][_0x613b('0x10')]);}else{logger[_0x613b('0xc')](_0x613b('0xd'),_0x31a96f,'request\x20sent');_0xf83c34(_0x37dbc7[_0x613b('0x11')][_0x613b('0x10')]);}})[_0x613b('0x12')](function(_0x4cafe9){logger['error'](_0x613b('0xd'),_0x31a96f,_0x4cafe9);_0x4abb96(_0x4cafe9);});});}
\ No newline at end of file
+var _0xb90a=['request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','bluebird','rpc','../../config/environment','http'];(function(_0x289ba0,_0x13b0f9){var _0x1dbe18=function(_0xae91ce){while(--_0xae91ce){_0x289ba0['push'](_0x289ba0['shift']());}};_0x1dbe18(++_0x13b0f9);}(_0xb90a,0x12a));var _0xab90=function(_0x300d4d,_0xdaaaa8){_0x300d4d=_0x300d4d-0x0;var _0x398ebd=_0xb90a[_0x300d4d];return _0x398ebd;};'use strict';var _=require(_0xab90('0x0'));var util=require(_0xab90('0x1'));var moment=require('moment');var BPromise=require(_0xab90('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xab90('0x3'));var config=require(_0xab90('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0xab90('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x426588,_0x275bf7,_0x4b28a6){return new BPromise(function(_0x2406e1,_0xc5ca04){return client[_0xab90('0x6')](_0x426588,_0x4b28a6)[_0xab90('0x7')](function(_0x93af2f){logger[_0xab90('0x8')](_0xab90('0x9'),_0x275bf7,_0xab90('0xa'));logger['debug'](_0xab90('0xb'),_0x275bf7,_0xab90('0xa'),JSON[_0xab90('0xc')](_0x93af2f));if(_0x93af2f[_0xab90('0xd')]){if(_0x93af2f[_0xab90('0xd')]['code']===0x1f4){logger[_0xab90('0xd')](_0xab90('0x9'),_0x275bf7,_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);return _0xc5ca04(_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);}logger[_0xab90('0xd')](_0xab90('0x9'),_0x275bf7,_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);return _0x2406e1(_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);}else{logger[_0xab90('0x8')]('CloudProvider,\x20%s,\x20%s',_0x275bf7,_0xab90('0xa'));_0x2406e1(_0x93af2f['result'][_0xab90('0xe')]);}})[_0xab90('0xf')](function(_0x526bee){logger[_0xab90('0xd')](_0xab90('0x9'),_0x275bf7,_0x526bee);_0xc5ca04(_0x526bee);});});}
\ No newline at end of file
index 8da691d..15b39d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9931=['exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller','get','isAuthenticated','index','/:id','show','post','update','delete','destroy'];(function(_0x25592c,_0x14f27c){var _0x5ac6c4=function(_0x218ee1){while(--_0x218ee1){_0x25592c['push'](_0x25592c['shift']());}};_0x5ac6c4(++_0x14f27c);}(_0x9931,0x1b6));var _0x1993=function(_0x17bbc4,_0x198dd9){_0x17bbc4=_0x17bbc4-0x0;var _0x2b23f4=_0x9931[_0x17bbc4];return _0x2b23f4;};'use strict';var multer=require('multer');var util=require(_0x1993('0x0'));var path=require('path');var timeout=require(_0x1993('0x1'));var express=require(_0x1993('0x2'));var router=express[_0x1993('0x3')]();var fs_extra=require(_0x1993('0x4'));var auth=require(_0x1993('0x5'));var interaction=require(_0x1993('0x6'));var config=require(_0x1993('0x7'));var controller=require(_0x1993('0x8'));router[_0x1993('0x9')]('/',auth[_0x1993('0xa')](),controller[_0x1993('0xb')]);router[_0x1993('0x9')](_0x1993('0xc'),auth[_0x1993('0xa')](),controller[_0x1993('0xd')]);router[_0x1993('0xe')]('/',auth[_0x1993('0xa')](),controller['create']);router['put'](_0x1993('0xc'),auth[_0x1993('0xa')](),controller[_0x1993('0xf')]);router[_0x1993('0x10')](_0x1993('0xc'),auth[_0x1993('0xa')](),controller[_0x1993('0x11')]);module[_0x1993('0x12')]=router;
\ No newline at end of file
+var _0xbbdd=['post','create','put','/:id','update','delete','destroy','util','connect-timeout','express','../../components/interaction/service','get','isAuthenticated','index','show'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbbdd,0x1ba));var _0xdbbd=function(_0x1a9204,_0x1c9e00){_0x1a9204=_0x1a9204-0x0;var _0x17ca68=_0xbbdd[_0x1a9204];return _0x17ca68;};'use strict';var multer=require('multer');var util=require(_0xdbbd('0x0'));var path=require('path');var timeout=require(_0xdbbd('0x1'));var express=require(_0xdbbd('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xdbbd('0x3'));var config=require('../../config/environment');var controller=require('./cloudProvider.controller');router[_0xdbbd('0x4')]('/',auth[_0xdbbd('0x5')](),controller[_0xdbbd('0x6')]);router[_0xdbbd('0x4')]('/:id',auth[_0xdbbd('0x5')](),controller[_0xdbbd('0x7')]);router[_0xdbbd('0x8')]('/',auth[_0xdbbd('0x5')](),controller[_0xdbbd('0x9')]);router[_0xdbbd('0xa')](_0xdbbd('0xb'),auth[_0xdbbd('0x5')](),controller[_0xdbbd('0xc')]);router[_0xdbbd('0xd')]('/:id',auth[_0xdbbd('0x5')](),controller[_0xdbbd('0xe')]);module['exports']=router;
\ No newline at end of file
index 178b057..6e601a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c07=['exports','STRING','name','sequelize'];(function(_0x55afc4,_0x26d115){var _0x217834=function(_0x2892c5){while(--_0x2892c5){_0x55afc4['push'](_0x55afc4['shift']());}};_0x217834(++_0x26d115);}(_0x9c07,0x163));var _0x79c0=function(_0x46b2b4,_0x285429){_0x46b2b4=_0x46b2b4-0x0;var _0x477b19=_0x9c07[_0x46b2b4];return _0x477b19;};'use strict';var Sequelize=require(_0x79c0('0x0'));module[_0x79c0('0x1')]={'name':{'type':Sequelize[_0x79c0('0x2')],'unique':_0x79c0('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x79c0('0x2')]},'companyId':{'type':Sequelize[_0x79c0('0x2')]},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x79c0('0x2')]},'fax':{'type':Sequelize[_0x79c0('0x2')]},'type':{'type':Sequelize[_0x79c0('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x79c0('0x2')]},'city':{'type':Sequelize[_0x79c0('0x2')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x79c0('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x79c0('0x2')]},'sCity':{'type':Sequelize[_0x79c0('0x2')]},'sCountry':{'type':Sequelize[_0x79c0('0x2')]},'description':{'type':Sequelize[_0x79c0('0x2')]}};
\ No newline at end of file
+var _0x10d3=['exports','STRING','name'];(function(_0x236437,_0x541f5d){var _0x11698b=function(_0x2009d2){while(--_0x2009d2){_0x236437['push'](_0x236437['shift']());}};_0x11698b(++_0x541f5d);}(_0x10d3,0x7e));var _0x310d=function(_0x25581d,_0x211ce8){_0x25581d=_0x25581d-0x0;var _0x1cf610=_0x10d3[_0x25581d];return _0x1cf610;};'use strict';var Sequelize=require('sequelize');module[_0x310d('0x0')]={'name':{'type':Sequelize[_0x310d('0x1')],'unique':_0x310d('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x310d('0x1')]},'website':{'type':Sequelize[_0x310d('0x1')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x310d('0x1')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x310d('0x1')]},'postalCode':{'type':Sequelize[_0x310d('0x1')]},'city':{'type':Sequelize[_0x310d('0x1')]},'country':{'type':Sequelize[_0x310d('0x1')]},'email':{'type':Sequelize[_0x310d('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x310d('0x1')]},'sCity':{'type':Sequelize[_0x310d('0x1')]},'sCountry':{'type':Sequelize[_0x310d('0x1')]},'description':{'type':Sequelize[_0x310d('0x1')]}};
\ No newline at end of file
index d361a50..ad86549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd988=['nolimit','order','sort','where','pick','filter','merge','map','includeAll','include','CmCompany','findAll','rows','catch','show','params','rawAttributes','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','CmContact','addContacts','ids','omit','getContacts','findOne','eml-format','rimraf','zip-dir','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','get','Companies','end','stack','name','send','index','describe','model','keys','query','filters','intersection','attributes','fields','length'];(function(_0x19050b,_0x26d9f6){var _0x267f98=function(_0x566562){while(--_0x566562){_0x19050b['push'](_0x19050b['shift']());}};_0x267f98(++_0x26d9f6);}(_0xd988,0xd2));var _0x8d98=function(_0x50e383,_0xd95cd){_0x50e383=_0x50e383-0x0;var _0x523095=_0xd988[_0x50e383];return _0x523095;};'use strict';var emlformat=require(_0x8d98('0x0'));var rimraf=require(_0x8d98('0x1'));var zipdir=require(_0x8d98('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8d98('0x3'));var moment=require('moment');var BPromise=require(_0x8d98('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8d98('0x5'));var sox=require(_0x8d98('0x6'));var csv=require(_0x8d98('0x7'));var ejs=require(_0x8d98('0x8'));var fs=require('fs');var fs_extra=require(_0x8d98('0x9'));var _=require(_0x8d98('0xa'));var squel=require(_0x8d98('0xb'));var crypto=require('crypto');var jsforce=require(_0x8d98('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8d98('0xd'));var authService=require(_0x8d98('0xe'));var qs=require(_0x8d98('0xf'));var as=require(_0x8d98('0x10'));var hardwareService=require(_0x8d98('0x11'));var logger=require(_0x8d98('0x12'))(_0x8d98('0x13'));var utils=require(_0x8d98('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x8d98('0x15'))['db'];function respondWithStatusCode(_0x5303e5,_0x12b2da){_0x12b2da=_0x12b2da||0xcc;return function(_0x110ecf){if(_0x110ecf){return _0x5303e5[_0x8d98('0x16')](_0x12b2da);}return _0x5303e5[_0x8d98('0x17')](_0x12b2da)['end']();};}function respondWithResult(_0x36d6c8,_0x44d666){_0x44d666=_0x44d666||0xc8;return function(_0x116f26){if(_0x116f26){return _0x36d6c8[_0x8d98('0x17')](_0x44d666)[_0x8d98('0x18')](_0x116f26);}};}function respondWithFilteredResult(_0x23732c,_0x207f10){return function(_0x48b558){if(_0x48b558){var _0xb08729=typeof _0x207f10[_0x8d98('0x19')]===_0x8d98('0x1a')&&typeof _0x207f10[_0x8d98('0x1b')]===_0x8d98('0x1a');var _0xd2e1d9=_0x48b558[_0x8d98('0x1c')];var _0x2ff64a=_0xb08729?0x0:_0x207f10[_0x8d98('0x19')];var _0x227d7b=_0xb08729?_0x48b558[_0x8d98('0x1c')]:_0x207f10['offset']+_0x207f10[_0x8d98('0x1b')];var _0x8d739c;if(_0x227d7b>=_0xd2e1d9){_0x227d7b=_0xd2e1d9;_0x8d739c=0xc8;}else{_0x8d739c=0xce;}_0x23732c[_0x8d98('0x17')](_0x8d739c);return _0x23732c[_0x8d98('0x1d')]('Content-Range',_0x2ff64a+'-'+_0x227d7b+'/'+_0xd2e1d9)[_0x8d98('0x18')](_0x48b558);}return null;};}function patchUpdates(_0x193a9f){return function(_0x266096){try{jsonpatch[_0x8d98('0x1e')](_0x266096,_0x193a9f,!![]);}catch(_0xaf83e0){return BPromise['reject'](_0xaf83e0);}return _0x266096[_0x8d98('0x1f')]();};}function saveUpdates(_0x4516c0,_0x213c84){return function(_0x1b75cc){if(_0x1b75cc){return _0x1b75cc[_0x8d98('0x20')](_0x4516c0)[_0x8d98('0x21')](function(_0x34dde8){return _0x34dde8;});}return null;};}function removeEntity(_0x50b4c6,_0x4b4386){return function(_0x47665f){if(_0x47665f){return _0x47665f[_0x8d98('0x22')]()['then'](function(){var _0x51233b=_0x47665f[_0x8d98('0x23')]({'plain':!![]});var _0x5264ee=_0x8d98('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x5264ee,'resourceId':_0x51233b['id']}})[_0x8d98('0x21')](function(){return _0x47665f;});})[_0x8d98('0x21')](function(){_0x50b4c6[_0x8d98('0x17')](0xcc)[_0x8d98('0x25')]();});}};}function handleEntityNotFound(_0x128668,_0x6fa42b){return function(_0x3a8fd6){if(!_0x3a8fd6){_0x128668[_0x8d98('0x16')](0x194);}return _0x3a8fd6;};}function handleError(_0x2da954,_0x44428c){_0x44428c=_0x44428c||0x1f4;return function(_0x272f2c){logger['error'](_0x272f2c[_0x8d98('0x26')]);if(_0x272f2c['name']){delete _0x272f2c[_0x8d98('0x27')];}_0x2da954[_0x8d98('0x17')](_0x44428c)[_0x8d98('0x28')](_0x272f2c);};}exports[_0x8d98('0x29')]=function(_0xd8b8db,_0x43ac6f){var _0x2c0af7={},_0x2535b3={},_0x253275={'count':0x0,'rows':[]};return db['CmCompany'][_0x8d98('0x2a')]()[_0x8d98('0x21')](function(_0x5c5662){_0x2535b3[_0x8d98('0x2b')]=_[_0x8d98('0x2c')](_0x5c5662);_0x2535b3[_0x8d98('0x2d')]=_[_0x8d98('0x2c')](_0xd8b8db[_0x8d98('0x2d')]);_0x2535b3[_0x8d98('0x2e')]=_[_0x8d98('0x2f')](_0x2535b3[_0x8d98('0x2b')],_0x2535b3[_0x8d98('0x2d')]);_0x2c0af7[_0x8d98('0x30')]=_['intersection'](_0x2535b3[_0x8d98('0x2b')],qs[_0x8d98('0x31')](_0xd8b8db[_0x8d98('0x2d')][_0x8d98('0x31')]));_0x2c0af7[_0x8d98('0x30')]=_0x2c0af7['attributes'][_0x8d98('0x32')]?_0x2c0af7[_0x8d98('0x30')]:_0x2535b3[_0x8d98('0x2b')];if(!_0xd8b8db['query']['hasOwnProperty'](_0x8d98('0x33'))){_0x2c0af7['limit']=qs[_0x8d98('0x1b')](_0xd8b8db[_0x8d98('0x2d')][_0x8d98('0x1b')]);_0x2c0af7['offset']=qs[_0x8d98('0x19')](_0xd8b8db[_0x8d98('0x2d')][_0x8d98('0x19')]);}_0x2c0af7[_0x8d98('0x34')]=qs['sort'](_0xd8b8db[_0x8d98('0x2d')][_0x8d98('0x35')]);_0x2c0af7[_0x8d98('0x36')]=qs[_0x8d98('0x2e')](_[_0x8d98('0x37')](_0xd8b8db[_0x8d98('0x2d')],_0x2535b3[_0x8d98('0x2e')]),_0x5c5662);if(_0xd8b8db['query'][_0x8d98('0x38')]){_0x2c0af7[_0x8d98('0x36')]=_[_0x8d98('0x39')](_0x2c0af7[_0x8d98('0x36')],{'$or':_[_0x8d98('0x3a')](_0x2c0af7[_0x8d98('0x30')],function(_0x5b6604){var _0x57b6f7={};_0x57b6f7[_0x5b6604]={'$like':'%'+_0xd8b8db['query'][_0x8d98('0x38')]+'%'};return _0x57b6f7;})});}_0x2c0af7=_[_0x8d98('0x39')]({},_0x2c0af7,_0xd8b8db['options']);var _0x1577e5={'where':_0x2c0af7['where']};return db['CmCompany'][_0x8d98('0x1c')](_0x1577e5)['then'](function(_0x4be3a7){_0x253275[_0x8d98('0x1c')]=_0x4be3a7;if(_0xd8b8db[_0x8d98('0x2d')][_0x8d98('0x3b')]){_0x2c0af7[_0x8d98('0x3c')]=[{'all':!![]}];}return db[_0x8d98('0x3d')][_0x8d98('0x3e')](_0x2c0af7);})[_0x8d98('0x21')](function(_0xf12333){_0x253275[_0x8d98('0x3f')]=_0xf12333;return _0x253275;})[_0x8d98('0x21')](respondWithFilteredResult(_0x43ac6f,_0x2c0af7))[_0x8d98('0x40')](handleError(_0x43ac6f,null));})['catch'](handleError(_0x43ac6f,null));};exports[_0x8d98('0x41')]=function(_0x142271,_0x167a18){var _0x21246b={'raw':![],'where':{'id':_0x142271[_0x8d98('0x42')]['id']}},_0x174af8={};_0x174af8[_0x8d98('0x2b')]=_['keys'](db['CmCompany'][_0x8d98('0x43')]);_0x174af8[_0x8d98('0x2d')]=_[_0x8d98('0x2c')](_0x142271['query']);_0x174af8[_0x8d98('0x2e')]=_[_0x8d98('0x2f')](_0x174af8[_0x8d98('0x2b')],_0x174af8[_0x8d98('0x2d')]);_0x21246b[_0x8d98('0x30')]=_['intersection'](_0x174af8['model'],qs[_0x8d98('0x31')](_0x142271[_0x8d98('0x2d')][_0x8d98('0x31')]));_0x21246b[_0x8d98('0x30')]=_0x21246b[_0x8d98('0x30')][_0x8d98('0x32')]?_0x21246b['attributes']:_0x174af8[_0x8d98('0x2b')];if(_0x142271[_0x8d98('0x2d')][_0x8d98('0x3b')]){_0x21246b[_0x8d98('0x3c')]=[{'all':!![]}];}_0x21246b=_[_0x8d98('0x39')]({},_0x21246b,_0x142271[_0x8d98('0x44')]);return db[_0x8d98('0x3d')][_0x8d98('0x45')](_0x21246b)['then'](handleEntityNotFound(_0x167a18,null))[_0x8d98('0x21')](respondWithResult(_0x167a18,null))[_0x8d98('0x40')](handleError(_0x167a18,null));};exports[_0x8d98('0x46')]=function(_0x18bb9a,_0x262637){return db['CmCompany']['create'](_0x18bb9a['body'],{})['then'](function(_0x1a0cc0){var _0x2013e6=_0x18bb9a[_0x8d98('0x47')]['get']({'plain':!![]});if(!_0x2013e6)throw new Error(_0x8d98('0x48'));if(_0x2013e6[_0x8d98('0x49')]==='user'){var _0x5b5c05=_0x1a0cc0['get']({'plain':!![]});var _0x56b8b5='Companies';return db[_0x8d98('0x4a')][_0x8d98('0x45')]({'where':{'name':_0x56b8b5,'userProfileId':_0x2013e6[_0x8d98('0x4b')]},'raw':!![]})[_0x8d98('0x21')](function(_0x3e8cb0){if(_0x3e8cb0&&_0x3e8cb0[_0x8d98('0x4c')]===0x0){return db[_0x8d98('0x4d')][_0x8d98('0x46')]({'name':_0x5b5c05[_0x8d98('0x27')],'resourceId':_0x5b5c05['id'],'type':_0x3e8cb0['name'],'sectionId':_0x3e8cb0['id']},{})[_0x8d98('0x21')](function(){return _0x1a0cc0;});}else{return _0x1a0cc0;}})[_0x8d98('0x40')](function(_0x55d84f){logger[_0x8d98('0x4e')](_0x8d98('0x4f'),_0x55d84f);throw _0x55d84f;});}return _0x1a0cc0;})[_0x8d98('0x21')](respondWithResult(_0x262637,0xc9))[_0x8d98('0x40')](handleError(_0x262637,null));};exports[_0x8d98('0x20')]=function(_0x1da66a,_0x576067){if(_0x1da66a[_0x8d98('0x50')]['id']){delete _0x1da66a['body']['id'];}return db[_0x8d98('0x3d')]['find']({'where':{'id':_0x1da66a[_0x8d98('0x42')]['id']}})[_0x8d98('0x21')](handleEntityNotFound(_0x576067,null))[_0x8d98('0x21')](saveUpdates(_0x1da66a['body'],null))[_0x8d98('0x21')](respondWithResult(_0x576067,null))[_0x8d98('0x40')](handleError(_0x576067,null));};exports[_0x8d98('0x22')]=function(_0x1c278a,_0x396f80){return db['CmCompany'][_0x8d98('0x45')]({'where':{'id':_0x1c278a[_0x8d98('0x42')]['id']}})[_0x8d98('0x21')](handleEntityNotFound(_0x396f80,null))[_0x8d98('0x21')](removeEntity(_0x396f80,null))[_0x8d98('0x40')](handleError(_0x396f80,null));};exports['describe']=function(_0x5d9683,_0xab54f6){return db[_0x8d98('0x3d')][_0x8d98('0x2a')]()[_0x8d98('0x21')](respondWithResult(_0xab54f6,null))[_0x8d98('0x40')](handleError(_0xab54f6,null));};exports['addContacts']=function(_0x3e36fc,_0x5451b2,_0x522e95){return db[_0x8d98('0x51')][_0x8d98('0x45')]({'where':{'id':_0x3e36fc['params']['id']}})['then'](handleEntityNotFound(_0x5451b2,null))[_0x8d98('0x21')](function(_0x20a5b2){if(_0x20a5b2){return _0x20a5b2[_0x8d98('0x52')](_0x3e36fc['body'][_0x8d98('0x53')],_[_0x8d98('0x54')](_0x3e36fc[_0x8d98('0x50')],[_0x8d98('0x53'),'id'])||{});}})[_0x8d98('0x21')](respondWithResult(_0x5451b2,null))[_0x8d98('0x40')](handleError(_0x5451b2,null));};exports[_0x8d98('0x55')]=function(_0x5f19a8,_0x59320b,_0x36ada2){var _0x503bab={};var _0x14023e={};var _0x5a0b54;var _0x1b71fd;return db['CmCompany'][_0x8d98('0x56')]({'where':{'id':_0x5f19a8[_0x8d98('0x42')]['id']}})[_0x8d98('0x21')](handleEntityNotFound(_0x59320b,null))[_0x8d98('0x21')](function(_0x2a762e){if(_0x2a762e){_0x5a0b54=_0x2a762e;_0x14023e[_0x8d98('0x2b')]=_[_0x8d98('0x2c')](db['CmContact'][_0x8d98('0x43')]);_0x14023e[_0x8d98('0x2d')]=_[_0x8d98('0x2c')](_0x5f19a8[_0x8d98('0x2d')]);_0x14023e[_0x8d98('0x2e')]=_[_0x8d98('0x2f')](_0x14023e['model'],_0x14023e[_0x8d98('0x2d')]);_0x503bab['attributes']=_[_0x8d98('0x2f')](_0x14023e[_0x8d98('0x2b')],qs[_0x8d98('0x31')](_0x5f19a8['query'][_0x8d98('0x31')]));_0x503bab[_0x8d98('0x30')]=_0x503bab['attributes']['length']?_0x503bab[_0x8d98('0x30')]:_0x14023e[_0x8d98('0x2b')];_0x503bab['order']=qs[_0x8d98('0x35')](_0x5f19a8[_0x8d98('0x2d')][_0x8d98('0x35')]);_0x503bab[_0x8d98('0x36')]=qs[_0x8d98('0x2e')](_[_0x8d98('0x37')](_0x5f19a8[_0x8d98('0x2d')],_0x14023e[_0x8d98('0x2e')]));if(_0x5f19a8[_0x8d98('0x2d')][_0x8d98('0x38')]){_0x503bab[_0x8d98('0x36')]=_[_0x8d98('0x39')](_0x503bab[_0x8d98('0x36')],{'$or':_['map'](_0x503bab[_0x8d98('0x30')],function(_0x53e7cd){var _0x1a712a={};_0x1a712a[_0x53e7cd]={'$like':'%'+_0x5f19a8[_0x8d98('0x2d')]['filter']+'%'};return _0x1a712a;})});}_0x503bab=_['merge']({},_0x503bab,_0x5f19a8[_0x8d98('0x44')]);return _0x5a0b54[_0x8d98('0x55')](_0x503bab);}})[_0x8d98('0x21')](function(_0x106c12){if(_0x106c12){_0x1b71fd=_0x106c12[_0x8d98('0x32')];if(!_0x5f19a8['query']['hasOwnProperty'](_0x8d98('0x33'))){_0x503bab['limit']=qs['limit'](_0x5f19a8[_0x8d98('0x2d')][_0x8d98('0x1b')]);_0x503bab[_0x8d98('0x19')]=qs[_0x8d98('0x19')](_0x5f19a8[_0x8d98('0x2d')][_0x8d98('0x19')]);}return _0x5a0b54[_0x8d98('0x55')](_0x503bab);}})[_0x8d98('0x21')](function(_0x439a1c){if(_0x439a1c){return _0x439a1c?{'count':_0x1b71fd,'rows':_0x439a1c}:null;}})[_0x8d98('0x21')](respondWithResult(_0x59320b,null))[_0x8d98('0x40')](handleError(_0x59320b,null));};
\ No newline at end of file
+var _0x3607=['getContacts','findOne','eml-format','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','set','apply','save','update','then','destroy','UserProfileResource','error','stack','name','index','CmCompany','describe','keys','query','intersection','attributes','model','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','map','options','count','includeAll','include','findAll','rows','catch','params','rawAttributes','fields','merge','find','create','body','user','get','role','Companies','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','CmContact','ids'];(function(_0x2fc284,_0x5d271c){var _0x221234=function(_0x39fb00){while(--_0x39fb00){_0x2fc284['push'](_0x2fc284['shift']());}};_0x221234(++_0x5d271c);}(_0x3607,0x1f4));var _0x7360=function(_0x1b92c3,_0x37e4ce){_0x1b92c3=_0x1b92c3-0x0;var _0x306e29=_0x3607[_0x1b92c3];return _0x306e29;};'use strict';var emlformat=require(_0x7360('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7360('0x1'));var moment=require('moment');var BPromise=require(_0x7360('0x2'));var Mustache=require(_0x7360('0x3'));var util=require(_0x7360('0x4'));var path=require(_0x7360('0x5'));var sox=require(_0x7360('0x6'));var csv=require(_0x7360('0x7'));var ejs=require(_0x7360('0x8'));var fs=require('fs');var fs_extra=require(_0x7360('0x9'));var _=require(_0x7360('0xa'));var squel=require(_0x7360('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x7360('0x7'));var querystring=require('querystring');var Papa=require(_0x7360('0xc'));var Redis=require(_0x7360('0xd'));var authService=require(_0x7360('0xe'));var qs=require(_0x7360('0xf'));var as=require(_0x7360('0x10'));var hardwareService=require(_0x7360('0x11'));var logger=require('../../config/logger')(_0x7360('0x12'));var utils=require(_0x7360('0x13'));var config=require(_0x7360('0x14'));var licenseUtil=require(_0x7360('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xcf212c,_0x5d7869){_0x5d7869=_0x5d7869||0xcc;return function(_0x17ab16){if(_0x17ab16){return _0xcf212c[_0x7360('0x16')](_0x5d7869);}return _0xcf212c['status'](_0x5d7869)[_0x7360('0x17')]();};}function respondWithResult(_0x52807c,_0x11c830){_0x11c830=_0x11c830||0xc8;return function(_0x54281e){if(_0x54281e){return _0x52807c[_0x7360('0x18')](_0x11c830)[_0x7360('0x19')](_0x54281e);}};}function respondWithFilteredResult(_0x47dbef,_0x3dfe76){return function(_0x425a10){if(_0x425a10){var _0x1ec127=typeof _0x3dfe76[_0x7360('0x1a')]===_0x7360('0x1b')&&typeof _0x3dfe76[_0x7360('0x1c')]===_0x7360('0x1b');var _0x1c0218=_0x425a10['count'];var _0x5cef2e=_0x1ec127?0x0:_0x3dfe76['offset'];var _0xe3c300=_0x1ec127?_0x425a10['count']:_0x3dfe76['offset']+_0x3dfe76[_0x7360('0x1c')];var _0x3b0fa8;if(_0xe3c300>=_0x1c0218){_0xe3c300=_0x1c0218;_0x3b0fa8=0xc8;}else{_0x3b0fa8=0xce;}_0x47dbef[_0x7360('0x18')](_0x3b0fa8);return _0x47dbef[_0x7360('0x1d')]('Content-Range',_0x5cef2e+'-'+_0xe3c300+'/'+_0x1c0218)[_0x7360('0x19')](_0x425a10);}return null;};}function patchUpdates(_0x3b1d67){return function(_0x12f9db){try{jsonpatch[_0x7360('0x1e')](_0x12f9db,_0x3b1d67,!![]);}catch(_0x33de5b){return BPromise['reject'](_0x33de5b);}return _0x12f9db[_0x7360('0x1f')]();};}function saveUpdates(_0xa4b64a,_0xd6833c){return function(_0x13cca3){if(_0x13cca3){return _0x13cca3[_0x7360('0x20')](_0xa4b64a)[_0x7360('0x21')](function(_0x1a931f){return _0x1a931f;});}return null;};}function removeEntity(_0x2723c2,_0x1e41a3){return function(_0x16feba){if(_0x16feba){return _0x16feba[_0x7360('0x22')]()[_0x7360('0x21')](function(){var _0x3debf0=_0x16feba['get']({'plain':!![]});var _0x23c780='Companies';return db[_0x7360('0x23')][_0x7360('0x22')]({'where':{'type':_0x23c780,'resourceId':_0x3debf0['id']}})[_0x7360('0x21')](function(){return _0x16feba;});})[_0x7360('0x21')](function(){_0x2723c2[_0x7360('0x18')](0xcc)[_0x7360('0x17')]();});}};}function handleEntityNotFound(_0x20a72d,_0x7a6532){return function(_0x576c15){if(!_0x576c15){_0x20a72d[_0x7360('0x16')](0x194);}return _0x576c15;};}function handleError(_0x3f619c,_0x23f56d){_0x23f56d=_0x23f56d||0x1f4;return function(_0x23d2fc){logger[_0x7360('0x24')](_0x23d2fc[_0x7360('0x25')]);if(_0x23d2fc[_0x7360('0x26')]){delete _0x23d2fc[_0x7360('0x26')];}_0x3f619c[_0x7360('0x18')](_0x23f56d)['send'](_0x23d2fc);};}exports[_0x7360('0x27')]=function(_0x2394a6,_0x35c233){var _0x149890={},_0x20e5b0={},_0x281d58={'count':0x0,'rows':[]};return db[_0x7360('0x28')][_0x7360('0x29')]()[_0x7360('0x21')](function(_0x33d495){_0x20e5b0['model']=_[_0x7360('0x2a')](_0x33d495);_0x20e5b0[_0x7360('0x2b')]=_['keys'](_0x2394a6[_0x7360('0x2b')]);_0x20e5b0['filters']=_[_0x7360('0x2c')](_0x20e5b0['model'],_0x20e5b0[_0x7360('0x2b')]);_0x149890[_0x7360('0x2d')]=_[_0x7360('0x2c')](_0x20e5b0[_0x7360('0x2e')],qs['fields'](_0x2394a6[_0x7360('0x2b')]['fields']));_0x149890['attributes']=_0x149890[_0x7360('0x2d')][_0x7360('0x2f')]?_0x149890[_0x7360('0x2d')]:_0x20e5b0['model'];if(!_0x2394a6[_0x7360('0x2b')][_0x7360('0x30')](_0x7360('0x31'))){_0x149890[_0x7360('0x1c')]=qs[_0x7360('0x1c')](_0x2394a6[_0x7360('0x2b')][_0x7360('0x1c')]);_0x149890['offset']=qs[_0x7360('0x1a')](_0x2394a6[_0x7360('0x2b')][_0x7360('0x1a')]);}_0x149890[_0x7360('0x32')]=qs['sort'](_0x2394a6[_0x7360('0x2b')][_0x7360('0x33')]);_0x149890[_0x7360('0x34')]=qs[_0x7360('0x35')](_[_0x7360('0x36')](_0x2394a6['query'],_0x20e5b0['filters']),_0x33d495);if(_0x2394a6[_0x7360('0x2b')][_0x7360('0x37')]){_0x149890['where']=_['merge'](_0x149890[_0x7360('0x34')],{'$or':_[_0x7360('0x38')](_0x149890[_0x7360('0x2d')],function(_0x17930c){var _0xbf7319={};_0xbf7319[_0x17930c]={'$like':'%'+_0x2394a6[_0x7360('0x2b')][_0x7360('0x37')]+'%'};return _0xbf7319;})});}_0x149890=_['merge']({},_0x149890,_0x2394a6[_0x7360('0x39')]);var _0x7fa5eb={'where':_0x149890[_0x7360('0x34')]};return db[_0x7360('0x28')][_0x7360('0x3a')](_0x7fa5eb)[_0x7360('0x21')](function(_0x3252c7){_0x281d58['count']=_0x3252c7;if(_0x2394a6[_0x7360('0x2b')][_0x7360('0x3b')]){_0x149890[_0x7360('0x3c')]=[{'all':!![]}];}return db[_0x7360('0x28')][_0x7360('0x3d')](_0x149890);})[_0x7360('0x21')](function(_0x39bcae){_0x281d58[_0x7360('0x3e')]=_0x39bcae;return _0x281d58;})['then'](respondWithFilteredResult(_0x35c233,_0x149890))['catch'](handleError(_0x35c233,null));})[_0x7360('0x3f')](handleError(_0x35c233,null));};exports['show']=function(_0x4bab1e,_0x321d99){var _0x72ebbc={'raw':![],'where':{'id':_0x4bab1e[_0x7360('0x40')]['id']}},_0x3bddcd={};_0x3bddcd[_0x7360('0x2e')]=_['keys'](db[_0x7360('0x28')][_0x7360('0x41')]);_0x3bddcd[_0x7360('0x2b')]=_[_0x7360('0x2a')](_0x4bab1e[_0x7360('0x2b')]);_0x3bddcd[_0x7360('0x35')]=_['intersection'](_0x3bddcd['model'],_0x3bddcd['query']);_0x72ebbc[_0x7360('0x2d')]=_[_0x7360('0x2c')](_0x3bddcd[_0x7360('0x2e')],qs[_0x7360('0x42')](_0x4bab1e[_0x7360('0x2b')][_0x7360('0x42')]));_0x72ebbc['attributes']=_0x72ebbc[_0x7360('0x2d')][_0x7360('0x2f')]?_0x72ebbc[_0x7360('0x2d')]:_0x3bddcd['model'];if(_0x4bab1e[_0x7360('0x2b')][_0x7360('0x3b')]){_0x72ebbc['include']=[{'all':!![]}];}_0x72ebbc=_[_0x7360('0x43')]({},_0x72ebbc,_0x4bab1e['options']);return db[_0x7360('0x28')][_0x7360('0x44')](_0x72ebbc)[_0x7360('0x21')](handleEntityNotFound(_0x321d99,null))['then'](respondWithResult(_0x321d99,null))[_0x7360('0x3f')](handleError(_0x321d99,null));};exports[_0x7360('0x45')]=function(_0x46d49c,_0x422283){return db[_0x7360('0x28')][_0x7360('0x45')](_0x46d49c[_0x7360('0x46')],{})[_0x7360('0x21')](function(_0x2cca09){var _0x44feb3=_0x46d49c[_0x7360('0x47')][_0x7360('0x48')]({'plain':!![]});if(!_0x44feb3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x44feb3[_0x7360('0x49')]==='user'){var _0x1da2be=_0x2cca09[_0x7360('0x48')]({'plain':!![]});var _0x30b4e1=_0x7360('0x4a');return db[_0x7360('0x4b')][_0x7360('0x44')]({'where':{'name':_0x30b4e1,'userProfileId':_0x44feb3['userProfileId']},'raw':!![]})[_0x7360('0x21')](function(_0x376342){if(_0x376342&&_0x376342[_0x7360('0x4c')]===0x0){return db[_0x7360('0x23')][_0x7360('0x45')]({'name':_0x1da2be[_0x7360('0x26')],'resourceId':_0x1da2be['id'],'type':_0x376342[_0x7360('0x26')],'sectionId':_0x376342['id']},{})[_0x7360('0x21')](function(){return _0x2cca09;});}else{return _0x2cca09;}})[_0x7360('0x3f')](function(_0x547a4d){logger[_0x7360('0x24')](_0x7360('0x4d'),_0x547a4d);throw _0x547a4d;});}return _0x2cca09;})['then'](respondWithResult(_0x422283,0xc9))[_0x7360('0x3f')](handleError(_0x422283,null));};exports[_0x7360('0x20')]=function(_0x15cc73,_0x5512cb){if(_0x15cc73[_0x7360('0x46')]['id']){delete _0x15cc73[_0x7360('0x46')]['id'];}return db['CmCompany'][_0x7360('0x44')]({'where':{'id':_0x15cc73[_0x7360('0x40')]['id']}})[_0x7360('0x21')](handleEntityNotFound(_0x5512cb,null))[_0x7360('0x21')](saveUpdates(_0x15cc73[_0x7360('0x46')],null))[_0x7360('0x21')](respondWithResult(_0x5512cb,null))[_0x7360('0x3f')](handleError(_0x5512cb,null));};exports[_0x7360('0x22')]=function(_0x52d88d,_0x44403a){return db[_0x7360('0x28')]['find']({'where':{'id':_0x52d88d['params']['id']}})[_0x7360('0x21')](handleEntityNotFound(_0x44403a,null))[_0x7360('0x21')](removeEntity(_0x44403a,null))[_0x7360('0x3f')](handleError(_0x44403a,null));};exports['describe']=function(_0x21bdc1,_0x91750f){return db[_0x7360('0x28')][_0x7360('0x29')]()[_0x7360('0x21')](respondWithResult(_0x91750f,null))[_0x7360('0x3f')](handleError(_0x91750f,null));};exports[_0x7360('0x4e')]=function(_0x5e474,_0x2f7405,_0x4dd272){return db[_0x7360('0x4f')]['find']({'where':{'id':_0x5e474['params']['id']}})['then'](handleEntityNotFound(_0x2f7405,null))[_0x7360('0x21')](function(_0x1a8904){if(_0x1a8904){return _0x1a8904['addContacts'](_0x5e474['body'][_0x7360('0x50')],_['omit'](_0x5e474['body'],[_0x7360('0x50'),'id'])||{});}})[_0x7360('0x21')](respondWithResult(_0x2f7405,null))[_0x7360('0x3f')](handleError(_0x2f7405,null));};exports[_0x7360('0x51')]=function(_0x16920f,_0x27556b,_0x3823d7){var _0x1fe8a2={};var _0x366896={};var _0x2df15f;var _0x6dea06;return db[_0x7360('0x28')][_0x7360('0x52')]({'where':{'id':_0x16920f['params']['id']}})['then'](handleEntityNotFound(_0x27556b,null))['then'](function(_0x19ec51){if(_0x19ec51){_0x2df15f=_0x19ec51;_0x366896['model']=_[_0x7360('0x2a')](db[_0x7360('0x4f')]['rawAttributes']);_0x366896[_0x7360('0x2b')]=_[_0x7360('0x2a')](_0x16920f[_0x7360('0x2b')]);_0x366896[_0x7360('0x35')]=_[_0x7360('0x2c')](_0x366896[_0x7360('0x2e')],_0x366896['query']);_0x1fe8a2[_0x7360('0x2d')]=_[_0x7360('0x2c')](_0x366896[_0x7360('0x2e')],qs[_0x7360('0x42')](_0x16920f['query'][_0x7360('0x42')]));_0x1fe8a2[_0x7360('0x2d')]=_0x1fe8a2[_0x7360('0x2d')]['length']?_0x1fe8a2['attributes']:_0x366896[_0x7360('0x2e')];_0x1fe8a2[_0x7360('0x32')]=qs[_0x7360('0x33')](_0x16920f[_0x7360('0x2b')]['sort']);_0x1fe8a2['where']=qs[_0x7360('0x35')](_['pick'](_0x16920f[_0x7360('0x2b')],_0x366896[_0x7360('0x35')]));if(_0x16920f[_0x7360('0x2b')][_0x7360('0x37')]){_0x1fe8a2[_0x7360('0x34')]=_[_0x7360('0x43')](_0x1fe8a2[_0x7360('0x34')],{'$or':_[_0x7360('0x38')](_0x1fe8a2[_0x7360('0x2d')],function(_0x4559a4){var _0x5712e1={};_0x5712e1[_0x4559a4]={'$like':'%'+_0x16920f[_0x7360('0x2b')]['filter']+'%'};return _0x5712e1;})});}_0x1fe8a2=_[_0x7360('0x43')]({},_0x1fe8a2,_0x16920f[_0x7360('0x39')]);return _0x2df15f[_0x7360('0x51')](_0x1fe8a2);}})[_0x7360('0x21')](function(_0x314fdf){if(_0x314fdf){_0x6dea06=_0x314fdf[_0x7360('0x2f')];if(!_0x16920f['query'][_0x7360('0x30')](_0x7360('0x31'))){_0x1fe8a2['limit']=qs[_0x7360('0x1c')](_0x16920f[_0x7360('0x2b')][_0x7360('0x1c')]);_0x1fe8a2[_0x7360('0x1a')]=qs[_0x7360('0x1a')](_0x16920f[_0x7360('0x2b')][_0x7360('0x1a')]);}return _0x2df15f[_0x7360('0x51')](_0x1fe8a2);}})['then'](function(_0x3fcbe2){if(_0x3fcbe2){return _0x3fcbe2?{'count':_0x6dea06,'rows':_0x3fcbe2}:null;}})[_0x7360('0x21')](respondWithResult(_0x27556b,null))['catch'](handleError(_0x27556b,null));};
\ No newline at end of file
index 72fad3b..9d3e1b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x726f=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes','exports','define','cm_companies'];(function(_0x19e777,_0x1a59ec){var _0x2e91f1=function(_0x320dfb){while(--_0x320dfb){_0x19e777['push'](_0x19e777['shift']());}};_0x2e91f1(++_0x1a59ec);}(_0x726f,0xc3));var _0xf726=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x726f[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xf726('0x0'));var util=require(_0xf726('0x1'));var logger=require(_0xf726('0x2'))(_0xf726('0x3'));var moment=require('moment');var BPromise=require(_0xf726('0x4'));var rp=require(_0xf726('0x5'));var fs=require('fs');var path=require(_0xf726('0x6'));var rimraf=require(_0xf726('0x7'));var config=require(_0xf726('0x8'));var attributes=require(_0xf726('0x9'));module[_0xf726('0xa')]=function(_0x348b49,_0xd8a692){return _0x348b49[_0xf726('0xb')]('CmCompany',attributes,{'tableName':_0xf726('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5391=['CmCompany','cm_companies','lodash','util','../../config/logger','bluebird','request-promise','path','exports'];(function(_0x22e73b,_0x84d1d5){var _0x216df9=function(_0x4a4f0a){while(--_0x4a4f0a){_0x22e73b['push'](_0x22e73b['shift']());}};_0x216df9(++_0x84d1d5);}(_0x5391,0x119));var _0x1539=function(_0x212173,_0x322e73){_0x212173=_0x212173-0x0;var _0x3a74ec=_0x5391[_0x212173];return _0x3a74ec;};'use strict';var _=require(_0x1539('0x0'));var util=require(_0x1539('0x1'));var logger=require(_0x1539('0x2'))('api');var moment=require('moment');var BPromise=require(_0x1539('0x3'));var rp=require(_0x1539('0x4'));var fs=require('fs');var path=require(_0x1539('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmCompany.attributes');module[_0x1539('0x6')]=function(_0x9a590e,_0x1abea3){return _0x9a590e['define'](_0x1539('0x7'),attributes,{'tableName':_0x1539('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f54aa03..4d36ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35ea=['then','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','CmCompany,\x20%s,\x20%s','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x59f860,_0x24716c){var _0x2d558a=function(_0x474b8a){while(--_0x474b8a){_0x59f860['push'](_0x59f860['shift']());}};_0x2d558a(++_0x24716c);}(_0x35ea,0x1d8));var _0xa35e=function(_0xa270f3,_0x293fd){_0xa270f3=_0xa270f3-0x0;var _0x48767f=_0x35ea[_0xa270f3];return _0x48767f;};'use strict';var _=require('lodash');var util=require(_0xa35e('0x0'));var moment=require(_0xa35e('0x1'));var BPromise=require(_0xa35e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa35e('0x3'));var db=require(_0xa35e('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa35e('0x5'))(_0xa35e('0x6'));var config=require(_0xa35e('0x7'));var jayson=require(_0xa35e('0x8'));var client=jayson[_0xa35e('0x9')][_0xa35e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x337a92,_0x5827b8,_0x1df997){return new BPromise(function(_0x1a2986,_0x1b58c9){return client[_0xa35e('0xb')](_0x337a92,_0x1df997)[_0xa35e('0xc')](function(_0xb2dd18){logger['info']('CmCompany,\x20%s,\x20%s',_0x5827b8,_0xa35e('0xd'));logger[_0xa35e('0xe')](_0xa35e('0xf'),_0x5827b8,_0xa35e('0xd'),JSON[_0xa35e('0x10')](_0xb2dd18));if(_0xb2dd18['error']){if(_0xb2dd18['error'][_0xa35e('0x11')]===0x1f4){logger[_0xa35e('0x12')]('CmCompany,\x20%s,\x20%s',_0x5827b8,_0xb2dd18[_0xa35e('0x12')][_0xa35e('0x13')]);return _0x1b58c9(_0xb2dd18[_0xa35e('0x12')][_0xa35e('0x13')]);}logger[_0xa35e('0x12')]('CmCompany,\x20%s,\x20%s',_0x5827b8,_0xb2dd18[_0xa35e('0x12')]['message']);return _0x1a2986(_0xb2dd18[_0xa35e('0x12')][_0xa35e('0x13')]);}else{logger[_0xa35e('0x14')]('CmCompany,\x20%s,\x20%s',_0x5827b8,_0xa35e('0xd'));_0x1a2986(_0xb2dd18['result']['message']);}})['catch'](function(_0x1c1e53){logger[_0xa35e('0x12')](_0xa35e('0x15'),_0x5827b8,_0x1c1e53);_0x1b58c9(_0x1c1e53);});});}
\ No newline at end of file
+var _0x4eec=['info','request\x20sent','CmCompany,\x20%s,\x20%s,\x20%s','error','code','CmCompany,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then'];(function(_0xf71120,_0x25b7f9){var _0xbe2fd3=function(_0x1acbdd){while(--_0x1acbdd){_0xf71120['push'](_0xf71120['shift']());}};_0xbe2fd3(++_0x25b7f9);}(_0x4eec,0xb1));var _0xc4ee=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4eec[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xc4ee('0x0'));var moment=require('moment');var BPromise=require(_0xc4ee('0x1'));var rs=require(_0xc4ee('0x2'));var fs=require('fs');var Redis=require(_0xc4ee('0x3'));var db=require(_0xc4ee('0x4'))['db'];var utils=require(_0xc4ee('0x5'));var logger=require(_0xc4ee('0x6'))(_0xc4ee('0x7'));var config=require('../../config/environment');var jayson=require(_0xc4ee('0x8'));var client=jayson[_0xc4ee('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x451f3f,_0xb6201d,_0x35f5cf){return new BPromise(function(_0x3715cd,_0x31d7b1){return client[_0xc4ee('0xa')](_0x451f3f,_0x35f5cf)[_0xc4ee('0xb')](function(_0x22224e){logger[_0xc4ee('0xc')]('CmCompany,\x20%s,\x20%s',_0xb6201d,_0xc4ee('0xd'));logger['debug'](_0xc4ee('0xe'),_0xb6201d,_0xc4ee('0xd'),JSON['stringify'](_0x22224e));if(_0x22224e[_0xc4ee('0xf')]){if(_0x22224e[_0xc4ee('0xf')][_0xc4ee('0x10')]===0x1f4){logger[_0xc4ee('0xf')](_0xc4ee('0x11'),_0xb6201d,_0x22224e[_0xc4ee('0xf')][_0xc4ee('0x12')]);return _0x31d7b1(_0x22224e['error'][_0xc4ee('0x12')]);}logger[_0xc4ee('0xf')](_0xc4ee('0x11'),_0xb6201d,_0x22224e[_0xc4ee('0xf')][_0xc4ee('0x12')]);return _0x3715cd(_0x22224e[_0xc4ee('0xf')][_0xc4ee('0x12')]);}else{logger[_0xc4ee('0xc')](_0xc4ee('0x11'),_0xb6201d,'request\x20sent');_0x3715cd(_0x22224e[_0xc4ee('0x13')]['message']);}})[_0xc4ee('0x14')](function(_0x253eee){logger['error'](_0xc4ee('0x11'),_0xb6201d,_0x253eee);_0x31d7b1(_0x253eee);});});}
\ No newline at end of file
index 545175d..aeafdd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61e0=['post','create','addContacts','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','/:id/contacts','getContacts'];(function(_0x11ce46,_0x177a85){var _0x368a1e=function(_0x425454){while(--_0x425454){_0x11ce46['push'](_0x11ce46['shift']());}};_0x368a1e(++_0x177a85);}(_0x61e0,0x187));var _0x061e=function(_0xa2374f,_0x392586){_0xa2374f=_0xa2374f-0x0;var _0x3751fb=_0x61e0[_0xa2374f];return _0x3751fb;};'use strict';var multer=require(_0x061e('0x0'));var util=require(_0x061e('0x1'));var path=require(_0x061e('0x2'));var timeout=require('connect-timeout');var express=require(_0x061e('0x3'));var router=express[_0x061e('0x4')]();var fs_extra=require(_0x061e('0x5'));var auth=require(_0x061e('0x6'));var interaction=require(_0x061e('0x7'));var config=require(_0x061e('0x8'));var controller=require('./cmCompany.controller');router[_0x061e('0x9')]('/',auth[_0x061e('0xa')](),controller[_0x061e('0xb')]);router[_0x061e('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x061e('0xc')]);router[_0x061e('0x9')](_0x061e('0xd'),auth[_0x061e('0xa')](),controller[_0x061e('0xe')]);router[_0x061e('0x9')](_0x061e('0xf'),auth[_0x061e('0xa')](),controller[_0x061e('0x10')]);router[_0x061e('0x11')]('/',auth[_0x061e('0xa')](),controller[_0x061e('0x12')]);router['post'](_0x061e('0xf'),auth[_0x061e('0xa')](),controller[_0x061e('0x13')]);router[_0x061e('0x14')](_0x061e('0xd'),auth[_0x061e('0xa')](),controller[_0x061e('0x15')]);router[_0x061e('0x16')](_0x061e('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x061e('0x17')]=router;
\ No newline at end of file
+var _0x0916=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','show','/:id/contacts','getContacts','post','create','addContacts','put','/:id','delete','destroy','exports'];(function(_0x3c9966,_0x3a6060){var _0x4a7ff4=function(_0x21c26a){while(--_0x21c26a){_0x3c9966['push'](_0x3c9966['shift']());}};_0x4a7ff4(++_0x3a6060);}(_0x0916,0x14a));var _0x6091=function(_0x2b9afa,_0xb29837){_0x2b9afa=_0x2b9afa-0x0;var _0x1abd63=_0x0916[_0x2b9afa];return _0x1abd63;};'use strict';var multer=require('multer');var util=require(_0x6091('0x0'));var path=require(_0x6091('0x1'));var timeout=require(_0x6091('0x2'));var express=require('express');var router=express[_0x6091('0x3')]();var fs_extra=require(_0x6091('0x4'));var auth=require(_0x6091('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6091('0x6'));var controller=require('./cmCompany.controller');router[_0x6091('0x7')]('/',auth[_0x6091('0x8')](),controller[_0x6091('0x9')]);router['get'](_0x6091('0xa'),auth[_0x6091('0x8')](),controller['describe']);router['get']('/:id',auth[_0x6091('0x8')](),controller[_0x6091('0xb')]);router[_0x6091('0x7')](_0x6091('0xc'),auth[_0x6091('0x8')](),controller[_0x6091('0xd')]);router[_0x6091('0xe')]('/',auth[_0x6091('0x8')](),controller[_0x6091('0xf')]);router[_0x6091('0xe')](_0x6091('0xc'),auth[_0x6091('0x8')](),controller[_0x6091('0x10')]);router[_0x6091('0x11')](_0x6091('0x12'),auth[_0x6091('0x8')](),controller['update']);router[_0x6091('0x13')](_0x6091('0x12'),auth[_0x6091('0x8')](),controller[_0x6091('0x14')]);module[_0x6091('0x15')]=router;
\ No newline at end of file
index 82f48b3..14ad1c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ffe=['NOW','lodash','sequelize','exports','STRING','INTEGER','UNSIGNED','DATE'];(function(_0x202570,_0x2d7b65){var _0x1a0277=function(_0x2f5f55){while(--_0x2f5f55){_0x202570['push'](_0x202570['shift']());}};_0x1a0277(++_0x2d7b65);}(_0x8ffe,0x1b9));var _0xe8ff=function(_0x482e66,_0x93401f){_0x482e66=_0x482e66-0x0;var _0x8905a3=_0x8ffe[_0x482e66];return _0x8905a3;};'use strict';var _=require(_0xe8ff('0x0'));var Sequelize=require(_0xe8ff('0x1'));module[_0xe8ff('0x2')]={'firstName':{'type':Sequelize[_0xe8ff('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xe8ff('0x3')]},'street':{'type':Sequelize[_0xe8ff('0x3')]},'postalCode':{'type':Sequelize[_0xe8ff('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xe8ff('0x3')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0xe8ff('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xe8ff('0x3')]},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize[_0xe8ff('0x3')]},'fb_data':{'type':Sequelize[_0xe8ff('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0xe8ff('0x3')]},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize[_0xe8ff('0x3')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0xe8ff('0x4')]},'priority':{'type':Sequelize[_0xe8ff('0x4')](0x2)[_0xe8ff('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xe8ff('0x6')],'defaultValue':Sequelize[_0xe8ff('0x7')]}};
\ No newline at end of file
+var _0x2cf9=['sequelize','exports','STRING','TEXT','INTEGER','UNSIGNED','lodash'];(function(_0x5ac105,_0x85de85){var _0x564a72=function(_0x187542){while(--_0x187542){_0x5ac105['push'](_0x5ac105['shift']());}};_0x564a72(++_0x85de85);}(_0x2cf9,0x187));var _0x92cf=function(_0x6a0110,_0x570bd1){_0x6a0110=_0x6a0110-0x0;var _0x5d6f3c=_0x2cf9[_0x6a0110];return _0x5d6f3c;};'use strict';var _=require(_0x92cf('0x0'));var Sequelize=require(_0x92cf('0x1'));module[_0x92cf('0x2')]={'firstName':{'type':Sequelize[_0x92cf('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x92cf('0x3')]},'street':{'type':Sequelize[_0x92cf('0x3')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0x92cf('0x3')]},'description':{'type':Sequelize[_0x92cf('0x4')]},'phone':{'type':Sequelize[_0x92cf('0x3')]},'mobile':{'type':Sequelize[_0x92cf('0x3')]},'fax':{'type':Sequelize[_0x92cf('0x3')]},'email':{'type':Sequelize[_0x92cf('0x3')]},'url':{'type':Sequelize[_0x92cf('0x3')]},'facebook':{'type':Sequelize[_0x92cf('0x3')]},'fb_data':{'type':Sequelize[_0x92cf('0x3')]},'twitter':{'type':Sequelize[_0x92cf('0x3')]},'skype':{'type':Sequelize[_0x92cf('0x3')]},'teams':{'type':Sequelize[_0x92cf('0x3')]},'viber':{'type':Sequelize[_0x92cf('0x3')]},'line':{'type':Sequelize[_0x92cf('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x92cf('0x3')]},'UserId':{'type':Sequelize[_0x92cf('0x5')]},'priority':{'type':Sequelize[_0x92cf('0x5')](0x2)[_0x92cf('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index c0319cf..1a92c0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x037e=['FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','bulkCreate','each','duplicates','$or','findOrCreate','spread','show','Tag','$and','isNil','omit','cf_%d','pickBy','table','setFields','phone','getTags','rawAttributes','pick','options','setTags','ids','ContactId','includeAll','include','getHopperHistories','CmHopperHistory','getHopperFinals','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','file','filename','child_process','fork','CompanyId','File\x20uploaded\x20correctly!','pid','createReadStream','parse','binding','No\x20firstName\x20column\x20specified','../../components/import/cm/csv2','stringify','message','exit','error\x20child\x20process','mail','sms','fax','-createdAt','channel','includes','Invalid\x20channel','toLowerCase','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','uniqueid','source','callerid','starttime','duration','note','createdAt','userDisposition','userSecondDisposition','UserId','range','VoiceCallReport','findAndCountAll','fullname','startCase','chat','Website','Account','closed','closedAt','disposition','key','Owner','browserName','customerIp','customerPort','osName','ratingMessage','ratingType','ratingValue','referer','subject','openchannel','externalUrl','threadId','flatten','sortBy','reverse','moment','bluebird','util','path','lodash','squel','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','redis','localhost','socket.io-emitter','./cmContact.socket','register','status','json','offset','undefined','limit','count','Content-Range','update','end','sendStatus','stack','name','send','index','CmContact','describe','keys','length','startsWith','cf_','findOne','all','then','fieldType','model','query','filters','intersection','attributes','fields','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','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','value','split','map','forEach','union','User','and','uc.UserId\x20=\x20?','dateOfBirth','datetime','DATE','buildExpression','text','start','Contact','isEmpty','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','tag','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.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','QueryTypes','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','some','getLists','c.ListId\x20IS\x20NULL','ListId','sequelize','toString','merge','c.firstName','c.lastName','c.phone','c.email','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','push','rows','catch','find','params','tags','columnName','displayName','analytics','CmCustomField','findAll','alias','type','values','body','get','isArray','join','info','CmHopper','destroy','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','ChatQueueReport'];(function(_0x10eb6b,_0x3fe155){var _0x3a3ab1=function(_0x467f24){while(--_0x467f24){_0x10eb6b['push'](_0x10eb6b['shift']());}};_0x3a3ab1(++_0x3fe155);}(_0x037e,0x181));var _0xe037=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x037e[_0x20a584];return _0x4b41a8;};'use strict';var moment=require(_0xe037('0x0'));var BPromise=require(_0xe037('0x1'));var util=require(_0xe037('0x2'));var path=require(_0xe037('0x3'));var fs=require('fs');var _=require(_0xe037('0x4'));var squel=require(_0xe037('0x5'));var Papa=require(_0xe037('0x6'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var as=require(_0xe037('0x7'));var logger=require(_0xe037('0x8'))(_0xe037('0x9'));var config=require(_0xe037('0xa'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xe037('0xb')],{'host':_0xe037('0xc'),'port':0x18eb});var socket=require(_0xe037('0xd'))(new Redis(config['redis']));require(_0xe037('0xe'))[_0xe037('0xf')](socket);function respondWithResult(_0x9b067f,_0x237406){_0x237406=_0x237406||0xc8;return function(_0x40c0d6){if(_0x40c0d6){return _0x9b067f[_0xe037('0x10')](_0x237406)[_0xe037('0x11')](_0x40c0d6);}};}function respondWithFilteredResult(_0x12a375,_0x57b0bd){return function(_0x4a95f7){if(_0x4a95f7){var _0x302cd1=typeof _0x57b0bd[_0xe037('0x12')]===_0xe037('0x13')&&typeof _0x57b0bd[_0xe037('0x14')]===_0xe037('0x13');var _0x5d4149=_0x4a95f7['count'];var _0x225824=_0x302cd1?0x0:_0x57b0bd[_0xe037('0x12')];var _0x59f54c=_0x302cd1?_0x4a95f7[_0xe037('0x15')]:_0x57b0bd[_0xe037('0x12')]+_0x57b0bd[_0xe037('0x14')];var _0x300074;if(_0x59f54c>=_0x5d4149){_0x59f54c=_0x5d4149;_0x300074=0xc8;}else{_0x300074=0xce;}_0x12a375['status'](_0x300074);return _0x12a375['set'](_0xe037('0x16'),_0x225824+'-'+_0x59f54c+'/'+_0x5d4149)[_0xe037('0x11')](_0x4a95f7);}return null;};}function saveUpdates(_0xa4a401){return function(_0x255388){if(_0x255388){return _0x255388[_0xe037('0x17')](_0xa4a401)['then'](function(_0xa12858){return _0xa12858;});}return null;};}function removeEntity(_0x1dda2b){return function(_0x1034b6){if(_0x1034b6){return _0x1034b6['destroy']()['then'](function(){_0x1dda2b[_0xe037('0x10')](0xcc)[_0xe037('0x18')]();});}};}function handleEntityNotFound(_0x26fa05){return function(_0x81cae){if(!_0x81cae){_0x26fa05[_0xe037('0x19')](0x194);}return _0x81cae;};}function handleError(_0x4b54c6,_0x5d2677){_0x5d2677=_0x5d2677||0x1f4;return function(_0x1365f7){logger['error'](_0x1365f7[_0xe037('0x1a')]);if(_0x1365f7['name']){delete _0x1365f7[_0xe037('0x1b')];}_0x4b54c6[_0xe037('0x10')](_0x5d2677)[_0xe037('0x1c')](_0x1365f7);};}exports[_0xe037('0x1d')]=function(_0x571adf,_0x4b6fe0){var _0x204a03={},_0x188ee5={},_0x2637f6={'count':0x0,'rows':[]};return db[_0xe037('0x1e')][_0xe037('0x1f')]()['then'](function(_0x1286ba){var _0x13b840=[];for(var _0x117214=0x0;_0x117214<Object[_0xe037('0x20')](_0x1286ba)[_0xe037('0x21')];_0x117214++){var _0x564a70=Object['keys'](_0x1286ba)[_0x117214];if(_[_0xe037('0x22')](_0x564a70,_0xe037('0x23'))){_0x13b840['push'](db['CmCustomField'][_0xe037('0x24')]({'where':{'id':_['trimStart'](_0x564a70,'cf_')},'raw':!![]}));}}return BPromise[_0xe037('0x25')](_0x13b840)[_0xe037('0x26')](function(_0x2256a8){for(var _0x5201a9=0x0;_0x5201a9<_0x2256a8[_0xe037('0x21')];_0x5201a9++){if(_0x2256a8[_0x5201a9]){var _0x52df6c=_0xe037('0x23')+_0x2256a8[_0x5201a9]['id'];var _0x1fbaee=_0x1286ba[_0x52df6c];_0x1fbaee[_0xe037('0x27')]=_0x2256a8[_0x5201a9]['type'];}}return _0x1286ba;});})[_0xe037('0x26')](function(_0x4fb90c){_0x188ee5[_0xe037('0x28')]=_['keys'](_0x4fb90c);_0x188ee5[_0xe037('0x29')]=_[_0xe037('0x20')](_0x571adf['query']);_0x188ee5[_0xe037('0x2a')]=_[_0xe037('0x2b')](_0x188ee5[_0xe037('0x28')],_0x188ee5['query']);_0x204a03[_0xe037('0x2c')]=_[_0xe037('0x2b')](_0x188ee5[_0xe037('0x28')],qs[_0xe037('0x2d')](_0x571adf[_0xe037('0x29')][_0xe037('0x2d')]));_0x204a03['attributes']=_0x204a03[_0xe037('0x2c')][_0xe037('0x21')]?_0x204a03[_0xe037('0x2c')]:_0x188ee5[_0xe037('0x28')];if(!_0x571adf[_0xe037('0x29')][_0xe037('0x2e')](_0xe037('0x2f'))){_0x204a03[_0xe037('0x14')]=qs[_0xe037('0x14')](_0x571adf[_0xe037('0x29')]['limit']);_0x204a03[_0xe037('0x12')]=qs[_0xe037('0x12')](_0x571adf[_0xe037('0x29')]['offset']);}_0x204a03[_0xe037('0x30')]=qs[_0xe037('0x31')](_0x571adf['query'][_0xe037('0x31')]);_0x204a03[_0xe037('0x32')]=qs[_0xe037('0x2a')](_['pick'](_0x571adf[_0xe037('0x29')],_0x188ee5[_0xe037('0x2a')]),_0x4fb90c);var _0x36ec77=[];var _0x248b47=squel[_0xe037('0x33')]()[_0xe037('0x34')]('id')[_0xe037('0x34')](_0xe037('0x1b'))[_0xe037('0x34')](_0xe037('0x35'))[_0xe037('0x36')](_0xe037('0x37'));var _0x2c9291=squel['select']()[_0xe037('0x36')](_0xe037('0x38'),'c')[_0xe037('0x39')](_0xe037('0x3a'),'uc',_0xe037('0x3b'))[_0xe037('0x39')](_0xe037('0x3c'),'ct',_0xe037('0x3d'))[_0xe037('0x39')](_0xe037('0x37'),'t','t.id\x20=\x20ct.TagId')['where'](_0xe037('0x3e'));var _0x4c8b3a=squel[_0xe037('0x3f')]();var _0x4848aa=[];var _0x28d11f=squel[_0xe037('0x3f')]();var _0x3b2527;if(_0x571adf[_0xe037('0x29')][_0xe037('0x40')]){_0x3b2527=as[_0xe037('0x41')](_0x571adf[_0xe037('0x29')][_0xe037('0x40')]);var _0x30785b=_0x3b2527[_0xe037('0x42')];for(var _0x4b3fcc=0x0;_0x4b3fcc<_0x3b2527[_0xe037('0x43')][_0xe037('0x21')];_0x4b3fcc++){var _0x2137ad=_0x3b2527[_0xe037('0x43')][_0x4b3fcc];var _0x943249='c';var _0x417bbe=_(_0x4fb90c)[_0xe037('0x20')]()['find'](function(_0x1ae5d7){return _0x1ae5d7===_0x2137ad[_0xe037('0x34')];});if(_0x417bbe)_0x417bbe=_0x4fb90c[_0x2137ad['field']];if(!_0x417bbe){if(_0x2137ad['field']==='Tag'){var _0x376c33=_0x2137ad[_0xe037('0x44')][_0xe037('0x45')](',')[_0xe037('0x46')](function(_0x4e8699){return Number(_0x4e8699);});_0x376c33[_0xe037('0x47')](function(_0x311e7c){_0x28d11f['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x311e7c+',%');});_0x4848aa=_[_0xe037('0x48')](_0x4848aa,_0x376c33);}else if(_0x2137ad[_0xe037('0x34')]===_0xe037('0x49')){_0x4c8b3a[_0xe037('0x4a')](_0xe037('0x4b'),_0x2137ad[_0xe037('0x44')]);}}else{if(_0x2137ad[_0xe037('0x34')]===_0xe037('0x4c')||_0x417bbe[_0xe037('0x27')]===_0xe037('0x4d'))_0x2137ad['castTo']=_0xe037('0x4e');var _0x1a5b78=as[_0xe037('0x4f')](_0x943249,_0x417bbe['type'],_0x2137ad);_0x4c8b3a[_0x30785b](_0x1a5b78[_0xe037('0x50')],_0x1a5b78[_0xe037('0x44')][_0xe037('0x51')],_0x1a5b78['value'][_0xe037('0x18')]);}}}else{var _0x169deb=_(Object[_0xe037('0x20')](_0x571adf['query']))[_0xe037('0x46')](function(_0x48cd6e){return _0x4fb90c[_0xe037('0x2e')](_0x48cd6e)?_0x48cd6e:undefined;})['filter'](function(_0xdd1b8){return!_['isNil'](_0xdd1b8);})[_0xe037('0x44')]();if(_0x571adf[_0xe037('0x29')][_0xe037('0x52')])_0x169deb['push'](_0xe037('0x52'));if(!_[_0xe037('0x53')](_0x169deb)){_0x169deb[_0xe037('0x47')](function(_0x2a2dc7){if(_0x2a2dc7==='ListId'){_0x2c9291[_0xe037('0x32')](_0xe037('0x54'),[][_0xe037('0x55')](_0x571adf['query'][_0x2a2dc7]));}else if(_0x2a2dc7===_0xe037('0x52')){var _0x1937e1='%'+_0x571adf[_0xe037('0x29')][_0x2a2dc7]+'%';_0x2c9291[_0xe037('0x32')](_0xe037('0x56'),_0x1937e1);}else{_0x2c9291[_0xe037('0x32')]('c.'+_0x2a2dc7+'\x20=\x20?',_0x571adf[_0xe037('0x29')][_0x2a2dc7]);}});}if(_0x571adf['query'][_0xe037('0x57')]){_0x4848aa=_['isArray'](_0x571adf[_0xe037('0x29')]['tag'])?_0x571adf[_0xe037('0x29')][_0xe037('0x57')]:new Array(_0x571adf['query'][_0xe037('0x57')]);_0x4848aa[_0xe037('0x47')](function(_0x4c1236){_0x28d11f['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4c1236+',%');});}if(_0x571adf['query'][_0xe037('0x58')]){var _0x494eac=_0x571adf[_0xe037('0x29')]['filter'][_0xe037('0x59')]('\x5c','\x5c\x5c')[_0xe037('0x59')](/'/g,'\x27\x27');if(_0x494eac[_0xe037('0x45')]('\x20')['length']>0x1){_0x4c8b3a['or'](_0xe037('0x5a'),qs[_0xe037('0x5b')](_0x494eac),null);}else{if(qs[_0xe037('0x5c')](_0x494eac)){_0x4c8b3a['or'](_0xe037('0x5d'),_0x494eac+'%');_0x4c8b3a['or'](_0xe037('0x5e'),_0x494eac+'%');_0x4c8b3a['or']('c.mobile\x20LIKE\x20?',_0x494eac+'%');_0x4c8b3a['or'](_0xe037('0x5f'),_0x494eac+'%');}else if(qs['isEmail'](_0x494eac)){_0x4c8b3a['or'](_0xe037('0x60'),_0x494eac+'%');}else{_0x4c8b3a['or'](_0xe037('0x61'),'%'+_0x494eac+'%');_0x4c8b3a['or'](_0xe037('0x62'),'%'+_0x494eac+'%');_0x4c8b3a['or'](_0xe037('0x60'),'%'+_0x494eac+'%');}}}}_0x2c9291[_0xe037('0x32')](_0x4c8b3a);_0x2c9291[_0xe037('0x63')](_0xe037('0x64'));var _0x17a7de={'type':db['Sequelize'][_0xe037('0x65')]['SELECT'],'raw':!![]};var _0x3179bc=_0x2c9291['clone']()[_0xe037('0x34')](_0xe037('0x64'));if(_0x204a03[_0xe037('0x30')]){_0x204a03[_0xe037('0x30')][_0xe037('0x47')](function(_0x134551){_0x2c9291['order']('c.'+_0x134551[0x0],_0x134551[0x1]===_0xe037('0x66')?![]:!![]);});}if(!_[_0xe037('0x53')](_0x4848aa)){_0x2c9291[_0xe037('0x67')](_0x28d11f);_0x3179bc[_0xe037('0x32')](_0xe037('0x68'),_0x4848aa);}BPromise[_0xe037('0x69')]()[_0xe037('0x26')](function(){if(!_0x3b2527)return;if(_0x571adf[_0xe037('0x6a')][_0xe037('0x6b')]!==_0xe037('0x6c'))return;if(!_[_0xe037('0x6d')](_0x3b2527['conditions'],['field',_0xe037('0x49')])){return _0x571adf['user'][_0xe037('0x6e')]({'attributes':['id'],'raw':!![]})[_0xe037('0x26')](function(_0x2f2021){if(_[_0xe037('0x53')](_0x2f2021)){_0x3179bc[_0xe037('0x32')](_0xe037('0x6f'));_0x2c9291['where'](_0xe037('0x6f'));}else{_0x3179bc[_0xe037('0x32')]('c.ListId\x20IN\x20?',_['map'](_0x2f2021,'id'));_0x2c9291[_0xe037('0x32')](_0xe037('0x54'),_['map'](_0x2f2021,'id'));}});}})[_0xe037('0x26')](function(){if(_0x571adf[_0xe037('0x6a')][_0xe037('0x6b')]==='agent'&&!_0x3b2527&&!_0x571adf['query'][_0xe037('0x70')])return[];return db[_0xe037('0x71')][_0xe037('0x29')](_0x3179bc[_0xe037('0x72')](),_0x17a7de);})[_0xe037('0x26')](function(_0x38ea44){_0x2637f6[_0xe037('0x15')]=_0x38ea44[_0xe037('0x21')];if(_0x2637f6[_0xe037('0x15')]===0x0)return[];return db[_0xe037('0x71')][_0xe037('0x29')](_0x248b47[_0xe037('0x72')](),_0x17a7de)['then'](function(_0x543f51){_0x36ec77=_['keyBy'](_0x543f51,'id');_0x17a7de=_[_0xe037('0x73')](_0x17a7de,{'model':db[_0xe037('0x1e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x571adf[_0xe037('0x29')][_0xe037('0x2d')]){_0x204a03[_0xe037('0x2c')][_0xe037('0x47')](function(_0x4151f1){_0x2c9291[_0xe037('0x34')]('c.'+_0x4151f1);});}else{_0x2c9291[_0xe037('0x34')]('c.id');_0x2c9291[_0xe037('0x34')](_0xe037('0x74'));_0x2c9291[_0xe037('0x34')](_0xe037('0x75'));_0x2c9291['field'](_0xe037('0x76'));_0x2c9291[_0xe037('0x34')]('c.mobile');_0x2c9291['field']('c.fax');_0x2c9291[_0xe037('0x34')](_0xe037('0x77'));_0x2c9291['field']('c.ListId');_0x2c9291[_0xe037('0x34')](_0xe037('0x78'));_0x2c9291['field'](_0xe037('0x79'));_0x2c9291[_0xe037('0x34')](_0xe037('0x7a'));_0x2c9291[_0xe037('0x34')](_0xe037('0x7b'),'TagIds');}if(_0x204a03[_0xe037('0x14')])_0x2c9291[_0xe037('0x14')](_0x204a03[_0xe037('0x14')]);if(_0x204a03['offset'])_0x2c9291[_0xe037('0x12')](_0x204a03[_0xe037('0x12')]);return db['sequelize'][_0xe037('0x29')](_0x2c9291[_0xe037('0x72')](),_0x17a7de);});})[_0xe037('0x26')](function(_0x1c2c25){_0x1c2c25['forEach'](function(_0x39b6fd){if(_0x39b6fd[_0xe037('0x7c')]){_0x39b6fd[_0xe037('0x7d')]=[];_0x39b6fd['TagIds'][_0xe037('0x45')](',')[_0xe037('0x47')](function(_0x211201){_0x39b6fd['Tags'][_0xe037('0x7e')](_0x36ec77[_0x211201]);});}delete _0x39b6fd[_0xe037('0x7c')];});_0x2637f6[_0xe037('0x7f')]=_0x1c2c25;return _0x2637f6;})[_0xe037('0x26')](respondWithFilteredResult(_0x4b6fe0,_0x204a03));})[_0xe037('0x80')](handleError(_0x4b6fe0,null));};exports['destroy']=function(_0x3e7899,_0x2f644d){return db[_0xe037('0x1e')][_0xe037('0x81')]({'where':{'id':_0x3e7899[_0xe037('0x82')]['id']}})[_0xe037('0x26')](handleEntityNotFound(_0x2f644d,null))[_0xe037('0x26')](removeEntity(_0x2f644d,null))[_0xe037('0x80')](handleError(_0x2f644d,null));};exports[_0xe037('0x1f')]=function(_0x352808,_0x4a7d20){return db[_0xe037('0x1e')]['describe']()[_0xe037('0x26')](function(_0x3606fd){delete _0x3606fd[_0xe037('0x83')];for(var _0x1087e6=0x0;_0x1087e6<Object[_0xe037('0x20')](_0x3606fd)['length'];_0x1087e6++){var _0x107e60=Object[_0xe037('0x20')](_0x3606fd)[_0x1087e6];if(!_[_0xe037('0x22')](_0x107e60,_0xe037('0x23'))){_0x3606fd[_0x107e60][_0xe037('0x84')]=_0x107e60;_0x3606fd[_0x107e60][_0xe037('0x85')]=_0x107e60;}}return _0x3606fd;})[_0xe037('0x26')](function(_0x3d9d99){var _0x3548ff={'where':Boolean(_0x352808[_0xe037('0x29')][_0xe037('0x86')])===!![]?undefined:{'$or':[{'ListId':_0x352808[_0xe037('0x29')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xe037('0x87')][_0xe037('0x88')](_0x3548ff)[_0xe037('0x26')](function(_0x3dd3d8){for(var _0x1eaa87=0x0;_0x1eaa87<_0x3dd3d8[_0xe037('0x21')];_0x1eaa87++){var _0x33e107=_0xe037('0x23')+_0x3dd3d8[_0x1eaa87]['id'];_0x3d9d99[_0x33e107][_0xe037('0x84')]=_0x33e107;_0x3d9d99[_0x33e107]['displayName']=_0x3dd3d8[_0x1eaa87][_0xe037('0x89')];_0x3d9d99[_0x33e107]['custom']={'type':_0x3dd3d8[_0x1eaa87][_0xe037('0x8a')],'values':_0x3dd3d8[_0x1eaa87][_0xe037('0x8b')]};}Object['keys'](_0x3d9d99)[_0xe037('0x47')](function(_0x1d2521){if(!_0x3d9d99[_0x1d2521]['hasOwnProperty'](_0xe037('0x84'))){delete _0x3d9d99[_0x1d2521];}});return _0x3d9d99;});})[_0xe037('0x26')](respondWithResult(_0x4a7d20,null))['catch'](handleError(_0x4a7d20,null));};exports[_0xe037('0x73')]=function(_0x2fd147,_0x2b4445){var _0x6bbcb8;var _0x170584;var _0x176712;if(_0x2fd147[_0xe037('0x8c')]['id']){delete _0x2fd147[_0xe037('0x8c')]['id'];}return db[_0xe037('0x1e')][_0xe037('0x88')]({'where':{'id':[_0x2fd147['body']['to'],_0x2fd147[_0xe037('0x8c')][_0xe037('0x36')]]}})['then'](function(_0x43d44b){if(_0x43d44b){if(_0x43d44b[_0xe037('0x21')]!==0x2){return null;}_0x43d44b[0x0]=_0x43d44b[0x0][_0xe037('0x8d')]({'plain':!![]});_0x43d44b[0x1]=_0x43d44b[0x1][_0xe037('0x8d')]({'plain':!![]});delete _0x43d44b[0x0]['id'];delete _0x43d44b[0x1]['id'];return _['mergeWith'](_0x43d44b[0x0],_0x43d44b[0x1],function(_0x124d08,_0x55496a){if(Array['isArray'](_0x55496a)&&!_0x55496a['length']){return _0x124d08;}else if(!_0x55496a){return _0x124d08;}});}})['then'](handleEntityNotFound(_0x2b4445,null))[_0xe037('0x26')](function(_0x41aa49){if(_0x41aa49){if(_0x41aa49[_0xe037('0x83')]&&_[_0xe037('0x8e')](_0x41aa49[_0xe037('0x83')])){_0x41aa49[_0xe037('0x83')]=_0x41aa49[_0xe037('0x83')][_0xe037('0x8f')]();}logger[_0xe037('0x90')]('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x2fd147['body']['to'],_0x2fd147[_0xe037('0x8c')]['from']);return db[_0xe037('0x91')][_0xe037('0x92')]({'where':{'ContactId':[_0x2fd147['body']['to'],_0x2fd147[_0xe037('0x8c')][_0xe037('0x36')]]}})[_0xe037('0x26')](function(_0x194a26){logger[_0xe037('0x90')]('[CmContact][merge][destroy][CmHopper],\x20%s',_0x194a26);return db[_0xe037('0x93')][_0xe037('0x92')]({'where':{'ContactId':[_0x2fd147[_0xe037('0x8c')]['to'],_0x2fd147[_0xe037('0x8c')][_0xe037('0x36')]]}})[_0xe037('0x26')](function(_0x25d077){logger['info'](_0xe037('0x94'),_0x25d077);return db[_0xe037('0x1e')][_0xe037('0x95')](_0x41aa49);});});}})[_0xe037('0x26')](function(_0x324db3){if(_0x324db3){_0x6bbcb8=_0x324db3;_0x170584={'ContactId':_0x6bbcb8['id']};_0x176712={'where':{'ContactId':[_0x2fd147[_0xe037('0x8c')]['to'],_0x2fd147[_0xe037('0x8c')][_0xe037('0x36')]]}};return db[_0xe037('0x96')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db['ChatMessage'][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0x97')]['update'](_0x170584,_0x176712);}})['then'](function(){if(_0x6bbcb8){return db[_0xe037('0x98')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0x99')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0x98')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db['MailMessage']['update'](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0x9a')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db['SmsMessage'][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db['FaxInteraction']['update'](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db['FaxMessage']['update'](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0x9b')]['update'](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0x9c')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0x9d')]['update'](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db['CmHopperHistory'][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db['ReportAgentPreview'][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db['VoiceCallReport'][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0x9e')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0x9f')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0xa0')]['update'](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0xa1')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0xa2')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0xa3')]['update'](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0xa4')][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db[_0xe037('0xa5')][_0xe037('0x17')](_0x170584,_0x176712);}})['then'](function(){if(_0x6bbcb8){return db['WhatsappQueueReport'][_0xe037('0x17')](_0x170584,_0x176712);}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return db['CmContact'][_0xe037('0x92')]({'where':{'id':[_0x2fd147[_0xe037('0x8c')]['to'],_0x2fd147[_0xe037('0x8c')][_0xe037('0x36')]]}});}})[_0xe037('0x26')](function(){if(_0x6bbcb8){return _0x6bbcb8;}})[_0xe037('0x26')](respondWithResult(_0x2b4445,null))[_0xe037('0x80')](handleError(_0x2b4445,null));};exports[_0xe037('0x95')]=function(_0x541bdf,_0x3b158a){return db[_0xe037('0x1e')][_0xe037('0x1f')]()[_0xe037('0x26')](function(_0x178c03){if(_0x541bdf[_0xe037('0x8c')]['tags']&&_[_0xe037('0x8e')](_0x541bdf[_0xe037('0x8c')][_0xe037('0x83')])){if(_0x541bdf[_0xe037('0x8c')][_0xe037('0x83')]['length']){_0x541bdf['body']['tags']=_0x541bdf[_0xe037('0x8c')][_0xe037('0x83')][_0xe037('0x8f')](';')+';';}else{_0x541bdf[_0xe037('0x8c')]['tags']=null;}}else{_0x541bdf[_0xe037('0x8c')][_0xe037('0x83')]=null;}return db[_0xe037('0x1e')][_0xe037('0x95')](_0x541bdf[_0xe037('0x8c')],{'fields':_[_0xe037('0x20')](_0x178c03),'raw':!![]});})[_0xe037('0x26')](respondWithResult(_0x3b158a,0xc9))[_0xe037('0x80')](handleError(_0x3b158a,null));};exports[_0xe037('0xa6')]=function(_0x31dcca,_0x528deb){var _0x36de26=0x0;var _0x2292ea=0x0;var _0x57340f=0x0;return db[_0xe037('0x1e')][_0xe037('0x1f')]()[_0xe037('0x26')](function(_0x408951){return BPromise[_0xe037('0xa7')](_0x31dcca[_0xe037('0x8c')],function(_0x2b69f7){var _0x3dd3c0={'where':{'$or':[]},'defaults':_0x2b69f7,'fields':_['keys'](_0x408951),'raw':!![]};if(_0x2b69f7[_0xe037('0xa8')]){for(var _0x35b71a=0x0;_0x35b71a<_0x2b69f7[_0xe037('0xa8')][_0xe037('0x21')];_0x35b71a++){var _0x4a5a0b={};_0x4a5a0b[_0x2b69f7[_0xe037('0xa8')][_0x35b71a]]=_0x2b69f7[_0x2b69f7[_0xe037('0xa8')][_0x35b71a]];_0x3dd3c0['where'][_0xe037('0xa9')][_0xe037('0x7e')](_0x4a5a0b);}_0x3dd3c0[_0xe037('0x32')][_0xe037('0x70')]=_0x2b69f7[_0xe037('0x70')];}return db[_0xe037('0x1e')][_0xe037('0xaa')](_0x3dd3c0)[_0xe037('0xab')](function(_0x219388,_0x381fba){if(_0x381fba){_0x36de26++;}else{_0x57340f++;}})[_0xe037('0x80')](function(){_0x2292ea++;});});})[_0xe037('0x26')](function(_0x179e7a){if(_0x179e7a){return{'success':_0x36de26,'failure':_0x2292ea,'duplicates':_0x57340f};}})[_0xe037('0x26')](respondWithResult(_0x528deb,0xc9))[_0xe037('0x80')](handleError(_0x528deb,null));};exports[_0xe037('0xac')]=function(_0x589e14,_0xe0e71a){var _0x48532e;return db['CmContact'][_0xe037('0x1f')]()[_0xe037('0x26')](function(_0x6a22a7){return db[_0xe037('0x1e')]['find']({'where':{'id':_0x589e14[_0xe037('0x82')]['id']},'include':[{'model':db[_0xe037('0xad')],'as':_0xe037('0x7d'),'attributes':['id',_0xe037('0x1b'),'color'],'required':_0x589e14['query'][_0xe037('0x57')]?!![]:![]}],'attributes':_[_0xe037('0x20')](_0x6a22a7)});})['then'](function(_0x50a1d6){if(!_['isNil'](_0x50a1d6)){_0x48532e=_0x50a1d6[_0xe037('0x8d')]({'plain':!![]});var _0x522b00={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x50a1d6&&_0x50a1d6[_0xe037('0x70')]){if(_0x50a1d6[_0xe037('0x70')]){_0x522b00[_0xe037('0x32')][_0xe037('0xae')][_0xe037('0x7e')]({'ListId':{'$ne':_0x50a1d6[_0xe037('0x70')]}});}}return db[_0xe037('0x87')][_0xe037('0x88')](_0x522b00);}})[_0xe037('0x26')](function(_0x71c728){if(!_[_0xe037('0xaf')](_0x71c728)){return _[_0xe037('0xb0')](_0x48532e,_[_0xe037('0x46')](_0x71c728,function(_0x1b4204){return util['format'](_0xe037('0xb1'),_0x1b4204['id']);}));}})[_0xe037('0x26')](handleEntityNotFound(_0xe0e71a,null))[_0xe037('0x26')](respondWithResult(_0xe0e71a,null))[_0xe037('0x80')](handleError(_0xe0e71a,null));};exports[_0xe037('0x17')]=function(_0x1bd466,_0x385fb9){var _0x15da65;if(_0x1bd466[_0xe037('0x8c')]['id']){delete _0x1bd466[_0xe037('0x8c')]['id'];}return db['CmContact'][_0xe037('0x81')]({'where':{'id':_0x1bd466['params']['id']}})[_0xe037('0x26')](handleEntityNotFound(_0x385fb9,null))[_0xe037('0x26')](saveUpdates(_0x1bd466[_0xe037('0x8c')],null))[_0xe037('0x26')](function(_0x2107ab){_0x15da65=_0x2107ab;var _0x37095f={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x2107ab&&_0x2107ab[_0xe037('0x70')]){if(_0x2107ab['ListId']){_0x37095f[_0xe037('0x32')][_0xe037('0xae')][_0xe037('0x7e')]({'ListId':{'$ne':_0x2107ab[_0xe037('0x70')]}});}}return db[_0xe037('0x87')][_0xe037('0x88')](_0x37095f);})['then'](function(_0x1056b3){if(_0x1056b3){return _[_0xe037('0xb0')](_[_0xe037('0xb2')](_0x1bd466[_0xe037('0x8c')],function(_0x18cc26,_0x457a72){return _['startsWith'](_0x457a72,_0xe037('0x23'));}),_[_0xe037('0x46')](_0x1056b3,function(_0xf1898c){return util['format']('cf_%d',_0xf1898c['id']);}));}})[_0xe037('0x26')](function(_0x4ad597){if(_0x4ad597&&!_[_0xe037('0x53')](_0x4ad597)){var _0x3b81a2=squel[_0xe037('0x17')]()[_0xe037('0xb3')]('cm_contacts')[_0xe037('0xb4')](_0x4ad597)[_0xe037('0x32')]('id\x20=\x20?',_0x1bd466[_0xe037('0x82')]['id'])['toParam']();return db['sequelize'][_0xe037('0x29')](_0x3b81a2[_0xe037('0x50')],{'replacements':_0x3b81a2[_0xe037('0x8b')]});}})[_0xe037('0x26')](function(){if(_0x1bd466[_0xe037('0x8c')]['phone']&&_0x15da65){return db[_0xe037('0x91')][_0xe037('0x17')]({'phone':_0x1bd466[_0xe037('0x8c')][_0xe037('0xb5')]},{'where':{'ContactId':_0x15da65['id']}});}})['then'](function(){return _0x15da65;})[_0xe037('0x26')](respondWithResult(_0x385fb9,null))['catch'](handleError(_0x385fb9,null));};exports[_0xe037('0xb6')]=function(_0x4c820e,_0x3b6102){var _0x143951={};var _0x4a062d={};var _0xcaeac6;var _0x19434a;return db[_0xe037('0x1e')][_0xe037('0x24')]({'where':{'id':_0x4c820e[_0xe037('0x82')]['id']}})[_0xe037('0x26')](handleEntityNotFound(_0x3b6102,null))['then'](function(_0x42ce6f){if(_0x42ce6f){_0xcaeac6=_0x42ce6f;_0x4a062d[_0xe037('0x28')]=_[_0xe037('0x20')](db[_0xe037('0xad')][_0xe037('0xb7')]);_0x4a062d[_0xe037('0x29')]=_[_0xe037('0x20')](_0x4c820e['query']);_0x4a062d[_0xe037('0x2a')]=_[_0xe037('0x2b')](_0x4a062d[_0xe037('0x28')],_0x4a062d[_0xe037('0x29')]);_0x143951[_0xe037('0x2c')]=_['intersection'](_0x4a062d['model'],qs[_0xe037('0x2d')](_0x4c820e[_0xe037('0x29')][_0xe037('0x2d')]));_0x143951[_0xe037('0x2c')]=_0x143951[_0xe037('0x2c')]['length']?_0x143951['attributes']:_0x4a062d['model'];_0x143951[_0xe037('0x30')]=qs[_0xe037('0x31')](_0x4c820e[_0xe037('0x29')][_0xe037('0x31')]);_0x143951[_0xe037('0x32')]=qs[_0xe037('0x2a')](_[_0xe037('0xb8')](_0x4c820e['query'],_0x4a062d['filters']));if(_0x4c820e[_0xe037('0x29')][_0xe037('0x58')]){_0x143951['where']=_[_0xe037('0x73')](_0x143951[_0xe037('0x32')],{'$or':_[_0xe037('0x46')](_0x143951[_0xe037('0x2c')],function(_0x411e74){var _0x2a5712={};_0x2a5712[_0x411e74]={'$like':'%'+_0x4c820e[_0xe037('0x29')][_0xe037('0x58')]+'%'};return _0x2a5712;})});}_0x143951=_['merge']({},_0x143951,_0x4c820e[_0xe037('0xb9')]);return _0xcaeac6[_0xe037('0xb6')](_0x143951);}})['then'](function(_0x3d5357){if(_0x3d5357){_0x19434a=_0x3d5357['length'];if(!_0x4c820e[_0xe037('0x29')]['hasOwnProperty'](_0xe037('0x2f'))){_0x143951[_0xe037('0x14')]=qs[_0xe037('0x14')](_0x4c820e['query']['limit']);_0x143951['offset']=qs[_0xe037('0x12')](_0x4c820e[_0xe037('0x29')][_0xe037('0x12')]);}return _0xcaeac6[_0xe037('0xb6')](_0x143951);}})[_0xe037('0x26')](function(_0x1d5523){if(_0x1d5523){return _0x1d5523?{'count':_0x19434a,'rows':_0x1d5523}:null;}})[_0xe037('0x26')](respondWithResult(_0x3b6102,null))[_0xe037('0x80')](handleError(_0x3b6102,null));};exports[_0xe037('0xba')]=function(_0x4521e7,_0x57d876){if(_0x4521e7[_0xe037('0x8c')]['id']){delete _0x4521e7[_0xe037('0x8c')]['id'];}return db[_0xe037('0x1e')]['findOne']({'where':{'id':_0x4521e7['params']['id']}})[_0xe037('0x26')](handleEntityNotFound(_0x57d876,null))[_0xe037('0x26')](function(_0x28ed55){if(_0x28ed55){return _0x28ed55[_0xe037('0xba')](_0x4521e7[_0xe037('0x8c')][_0xe037('0xbb')]||[]);}return null;})['then'](respondWithResult(_0x57d876,null))[_0xe037('0x80')](handleError(_0x57d876,null));};exports['getHoppers']=function(_0x1f40e2,_0x162656){var _0x54423b={'raw':![],'where':{}};var _0x1c3e06={};var _0x55de26={'count':0x0,'rows':[]};return db[_0xe037('0x1e')][_0xe037('0x24')]({'where':{'id':_0x1f40e2['params']['id']}})[_0xe037('0x26')](handleEntityNotFound(_0x162656,null))[_0xe037('0x26')](function(_0x563636){if(_0x563636){_0x1c3e06[_0xe037('0x28')]=_[_0xe037('0x20')](db[_0xe037('0x91')][_0xe037('0xb7')]);_0x1c3e06[_0xe037('0x29')]=_[_0xe037('0x20')](_0x1f40e2[_0xe037('0x29')]);_0x1c3e06[_0xe037('0x2a')]=_[_0xe037('0x2b')](_0x1c3e06[_0xe037('0x28')],_0x1c3e06['query']);_0x54423b[_0xe037('0x2c')]=_['intersection'](_0x1c3e06['model'],qs[_0xe037('0x2d')](_0x1f40e2[_0xe037('0x29')][_0xe037('0x2d')]));_0x54423b[_0xe037('0x2c')]=_0x54423b[_0xe037('0x2c')][_0xe037('0x21')]?_0x54423b[_0xe037('0x2c')]:_0x1c3e06['model'];if(!_0x1f40e2[_0xe037('0x29')][_0xe037('0x2e')](_0xe037('0x2f'))){_0x54423b[_0xe037('0x14')]=qs['limit'](_0x1f40e2[_0xe037('0x29')][_0xe037('0x14')]);_0x54423b[_0xe037('0x12')]=qs[_0xe037('0x12')](_0x1f40e2[_0xe037('0x29')][_0xe037('0x12')]);}_0x54423b['order']=qs[_0xe037('0x31')](_0x1f40e2[_0xe037('0x29')][_0xe037('0x31')]);_0x54423b[_0xe037('0x32')]=qs['filters'](_[_0xe037('0xb8')](_0x1f40e2['query'],_0x1c3e06[_0xe037('0x2a')]));_0x54423b['where'][_0xe037('0xbc')]=_0x563636['id'];if(_0x1f40e2[_0xe037('0x29')]['filter']){_0x54423b[_0xe037('0x32')]=_['merge'](_0x54423b[_0xe037('0x32')],{'$or':_[_0xe037('0x46')](_0x54423b[_0xe037('0x2c')],function(_0x1da082){var _0x58369e={};_0x58369e[_0x1da082]={'$like':'%'+_0x1f40e2[_0xe037('0x29')]['filter']+'%'};return _0x58369e;})});}_0x54423b=_['merge']({},_0x54423b,_0x1f40e2[_0xe037('0xb9')]);return db[_0xe037('0x91')][_0xe037('0x15')]({'where':_0x54423b['where']})[_0xe037('0x26')](function(_0x40ce25){_0x55de26[_0xe037('0x15')]=_0x40ce25;if(_0x1f40e2['query'][_0xe037('0xbd')]){_0x54423b[_0xe037('0xbe')]=[{'all':!![]}];}return db[_0xe037('0x91')][_0xe037('0x88')](_0x54423b);})[_0xe037('0x26')](function(_0x4ac9df){_0x55de26['rows']=_0x4ac9df;return _0x55de26;});}})['then'](respondWithFilteredResult(_0x162656,_0x54423b))['catch'](handleError(_0x162656,null));};exports[_0xe037('0xbf')]=function(_0x30b37c,_0x3ad4de){var _0x3de627={'raw':!![],'where':{}};var _0x2765ee={};var _0x9be74f={'count':0x0,'rows':[]};return db[_0xe037('0x1e')][_0xe037('0x24')]({'where':{'id':_0x30b37c[_0xe037('0x82')]['id']}})[_0xe037('0x26')](handleEntityNotFound(_0x3ad4de,null))[_0xe037('0x26')](function(_0x5c450e){if(_0x5c450e){_0x2765ee['model']=_[_0xe037('0x20')](db[_0xe037('0xc0')][_0xe037('0xb7')]);_0x2765ee[_0xe037('0x29')]=_[_0xe037('0x20')](_0x30b37c[_0xe037('0x29')]);_0x2765ee[_0xe037('0x2a')]=_['intersection'](_0x2765ee['model'],_0x2765ee[_0xe037('0x29')]);_0x3de627[_0xe037('0x2c')]=_[_0xe037('0x2b')](_0x2765ee['model'],qs['fields'](_0x30b37c[_0xe037('0x29')][_0xe037('0x2d')]));_0x3de627[_0xe037('0x2c')]=_0x3de627[_0xe037('0x2c')]['length']?_0x3de627[_0xe037('0x2c')]:_0x2765ee[_0xe037('0x28')];if(!_0x30b37c[_0xe037('0x29')]['hasOwnProperty'](_0xe037('0x2f'))){_0x3de627[_0xe037('0x14')]=qs[_0xe037('0x14')](_0x30b37c['query'][_0xe037('0x14')]);_0x3de627['offset']=qs['offset'](_0x30b37c[_0xe037('0x29')][_0xe037('0x12')]);}_0x3de627[_0xe037('0x30')]=qs[_0xe037('0x31')](_0x30b37c[_0xe037('0x29')]['sort']);_0x3de627['where']=qs['filters'](_[_0xe037('0xb8')](_0x30b37c[_0xe037('0x29')],_0x2765ee['filters']));_0x3de627[_0xe037('0x32')]['ContactId']=_0x5c450e['id'];if(_0x30b37c[_0xe037('0x29')][_0xe037('0x58')]){_0x3de627[_0xe037('0x32')]=_[_0xe037('0x73')](_0x3de627[_0xe037('0x32')],{'$or':_[_0xe037('0x46')](_0x3de627[_0xe037('0x2c')],function(_0x4bfef3){var _0xde624f={};_0xde624f[_0x4bfef3]={'$like':'%'+_0x30b37c[_0xe037('0x29')][_0xe037('0x58')]+'%'};return _0xde624f;})});}_0x3de627=_[_0xe037('0x73')]({},_0x3de627,_0x30b37c[_0xe037('0xb9')]);return db[_0xe037('0xc0')]['count']({'where':_0x3de627[_0xe037('0x32')]})['then'](function(_0x6c376b){_0x9be74f[_0xe037('0x15')]=_0x6c376b;if(_0x30b37c[_0xe037('0x29')][_0xe037('0xbd')]){_0x3de627['include']=[{'all':!![]}];}return db[_0xe037('0xc0')][_0xe037('0x88')](_0x3de627);})[_0xe037('0x26')](function(_0x7575c8){_0x9be74f[_0xe037('0x7f')]=_0x7575c8;return _0x9be74f;});}})[_0xe037('0x26')](respondWithFilteredResult(_0x3ad4de,_0x3de627))[_0xe037('0x80')](handleError(_0x3ad4de,null));};exports[_0xe037('0xc1')]=function(_0x1c12b4,_0x4d803d){var _0x155fac={'raw':!![],'where':{}};var _0x3963b8={};var _0x1d5f17={'count':0x0,'rows':[]};return db[_0xe037('0x1e')][_0xe037('0x24')]({'where':{'id':_0x1c12b4[_0xe037('0x82')]['id']}})[_0xe037('0x26')](handleEntityNotFound(_0x4d803d,null))[_0xe037('0x26')](function(_0x46cd5a){if(_0x46cd5a){_0x3963b8[_0xe037('0x28')]=_['keys'](db[_0xe037('0x9d')][_0xe037('0xb7')]);_0x3963b8[_0xe037('0x29')]=_[_0xe037('0x20')](_0x1c12b4[_0xe037('0x29')]);_0x3963b8['filters']=_['intersection'](_0x3963b8[_0xe037('0x28')],_0x3963b8['query']);_0x155fac[_0xe037('0x2c')]=_[_0xe037('0x2b')](_0x3963b8[_0xe037('0x28')],qs[_0xe037('0x2d')](_0x1c12b4[_0xe037('0x29')][_0xe037('0x2d')]));_0x155fac['attributes']=_0x155fac[_0xe037('0x2c')][_0xe037('0x21')]?_0x155fac[_0xe037('0x2c')]:_0x3963b8[_0xe037('0x28')];if(!_0x1c12b4['query'][_0xe037('0x2e')](_0xe037('0x2f'))){_0x155fac[_0xe037('0x14')]=qs[_0xe037('0x14')](_0x1c12b4['query']['limit']);_0x155fac[_0xe037('0x12')]=qs[_0xe037('0x12')](_0x1c12b4[_0xe037('0x29')][_0xe037('0x12')]);}_0x155fac[_0xe037('0x30')]=qs[_0xe037('0x31')](_0x1c12b4[_0xe037('0x29')][_0xe037('0x31')]);_0x155fac['where']=qs[_0xe037('0x2a')](_[_0xe037('0xb8')](_0x1c12b4[_0xe037('0x29')],_0x3963b8['filters']));_0x155fac['where'][_0xe037('0xbc')]=_0x46cd5a['id'];if(_0x1c12b4['query'][_0xe037('0x58')]){_0x155fac[_0xe037('0x32')]=_[_0xe037('0x73')](_0x155fac['where'],{'$or':_['map'](_0x155fac[_0xe037('0x2c')],function(_0x5b123a){var _0x1f61d1={};_0x1f61d1[_0x5b123a]={'$like':'%'+_0x1c12b4[_0xe037('0x29')][_0xe037('0x58')]+'%'};return _0x1f61d1;})});}_0x155fac=_[_0xe037('0x73')]({},_0x155fac,_0x1c12b4[_0xe037('0xb9')]);return db[_0xe037('0x9d')][_0xe037('0x15')]({'where':_0x155fac[_0xe037('0x32')]})[_0xe037('0x26')](function(_0x16601c){_0x1d5f17[_0xe037('0x15')]=_0x16601c;if(_0x1c12b4[_0xe037('0x29')][_0xe037('0xbd')]){_0x155fac[_0xe037('0xbe')]=[{'all':!![]}];}return db[_0xe037('0x9d')][_0xe037('0x88')](_0x155fac);})[_0xe037('0x26')](function(_0x1ea9da){_0x1d5f17[_0xe037('0x7f')]=_0x1ea9da;return _0x1d5f17;});}})[_0xe037('0x26')](respondWithFilteredResult(_0x4d803d,_0x155fac))['catch'](handleError(_0x4d803d,null));};exports[_0xe037('0xc2')]=function(_0x4430f5,_0x33254c){var _0x4bf33f={'raw':!![],'where':{}};var _0x13b095={};var _0x21ce80={'count':0x0,'rows':[]};return db[_0xe037('0x1e')]['findOne']({'where':{'id':_0x4430f5[_0xe037('0x82')]['id']}})[_0xe037('0x26')](handleEntityNotFound(_0x33254c,null))[_0xe037('0x26')](function(_0x5b439a){if(_0x5b439a){_0x13b095['model']=_[_0xe037('0x20')](db[_0xe037('0xa3')][_0xe037('0xb7')]);_0x13b095[_0xe037('0x29')]=_[_0xe037('0x20')](_0x4430f5[_0xe037('0x29')]);_0x13b095[_0xe037('0x2a')]=_[_0xe037('0x2b')](_0x13b095[_0xe037('0x28')],_0x13b095[_0xe037('0x29')]);_0x4bf33f['attributes']=_[_0xe037('0x2b')](_0x13b095[_0xe037('0x28')],qs['fields'](_0x4430f5['query'][_0xe037('0x2d')]));_0x4bf33f[_0xe037('0x2c')]=_0x4bf33f[_0xe037('0x2c')][_0xe037('0x21')]?_0x4bf33f[_0xe037('0x2c')]:_0x13b095['model'];if(!_0x4430f5[_0xe037('0x29')][_0xe037('0x2e')]('nolimit')){_0x4bf33f['limit']=qs[_0xe037('0x14')](_0x4430f5['query'][_0xe037('0x14')]);_0x4bf33f['offset']=qs['offset'](_0x4430f5[_0xe037('0x29')][_0xe037('0x12')]);}_0x4bf33f[_0xe037('0x30')]=qs['sort'](_0x4430f5[_0xe037('0x29')][_0xe037('0x31')]);_0x4bf33f[_0xe037('0x32')]=qs[_0xe037('0x2a')](_[_0xe037('0xb8')](_0x4430f5['query'],_0x13b095[_0xe037('0x2a')]));_0x4bf33f[_0xe037('0x32')]['ContactId']=_0x5b439a['id'];if(_0x4430f5['query'][_0xe037('0x58')]){_0x4bf33f[_0xe037('0x32')]=_[_0xe037('0x73')](_0x4bf33f[_0xe037('0x32')],{'$or':_[_0xe037('0x46')](_0x4bf33f[_0xe037('0x2c')],function(_0x4078c3){var _0x4c942c={};_0x4c942c[_0x4078c3]={'$like':'%'+_0x4430f5[_0xe037('0x29')][_0xe037('0x58')]+'%'};return _0x4c942c;})});}_0x4bf33f=_['merge']({},_0x4bf33f,_0x4430f5[_0xe037('0xb9')]);return db[_0xe037('0xa3')]['count']({'where':_0x4bf33f[_0xe037('0x32')]})[_0xe037('0x26')](function(_0x223702){_0x21ce80[_0xe037('0x15')]=_0x223702;if(_0x4430f5[_0xe037('0x29')][_0xe037('0xbd')]){_0x4bf33f[_0xe037('0xbe')]=[{'all':!![]}];}return db[_0xe037('0xa3')][_0xe037('0x88')](_0x4bf33f);})['then'](function(_0x5ba5c5){_0x21ce80[_0xe037('0x7f')]=_0x5ba5c5;return _0x21ce80;});}})[_0xe037('0x26')](respondWithFilteredResult(_0x33254c,_0x4bf33f))['catch'](handleError(_0x33254c,null));};exports[_0xe037('0xc3')]=function(_0x77d338,_0xdba74d){try{if(!_0x77d338[_0xe037('0x8c')][_0xe037('0x70')]){throw new Error(_0xe037('0xc4'));}if(!_0x77d338[_0xe037('0x8c')][_0xe037('0xc5')]){throw new Error(_0xe037('0xc6'));}if(!_0x77d338[_0xe037('0x8c')][_0xe037('0xc7')]){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x77d338[_0xe037('0x8c')][_0xe037('0xc8')]){throw new Error(_0xe037('0xc9'));}var _0x42221c=_0x77d338['body'][_0xe037('0xc5')]['split'](',');var _0x4a5135=_0x77d338[_0xe037('0x8c')][_0xe037('0xc7')]['split'](',');if(!_0x42221c[_0xe037('0x21')]||!_0x4a5135['length']||_0x42221c[_0xe037('0x21')]!==_0x4a5135[_0xe037('0x21')]){throw new Error(_0xe037('0xca'));}_0x77d338[_0xe037('0x8c')][_0xe037('0x2d')]=_[_0xe037('0xcb')](_0x42221c,_0x4a5135);if(!_0x77d338[_0xe037('0x8c')][_0xe037('0x2d')][_0xe037('0xb5')]){throw new Error(_0xe037('0xcc'));}if(!_0x77d338['body'][_0xe037('0x2d')][_0xe037('0xcd')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x633be8=path[_0xe037('0x8f')](config['root'],'server/files/tmp',_0x77d338[_0xe037('0xce')][_0xe037('0xcf')]);fs['chmodSync'](_0x633be8,parseInt('0777',0x8));var _0x3d4208=require(_0xe037('0xd0'))[_0xe037('0xd1')](path[_0xe037('0x8f')](__dirname,'../../components/import/cm/csv'),[_0x633be8,_0x77d338[_0xe037('0x8c')][_0xe037('0xc5')],_0x77d338[_0xe037('0x8c')][_0xe037('0xc7')],_0x77d338[_0xe037('0x8c')][_0xe037('0x70')],_0x77d338[_0xe037('0x8c')][_0xe037('0xd2')],_0x77d338[_0xe037('0x8c')][_0xe037('0xa8')],_0x77d338[_0xe037('0x8c')][_0xe037('0xc8')]]);return _0xdba74d[_0xe037('0x10')](0xc8)[_0xe037('0x11')]({'message':_0xe037('0xd3'),'pid':_0x3d4208[_0xe037('0xd4')]});}catch(_0x4505a7){return _0xdba74d[_0xe037('0x10')](0x1f4)[_0xe037('0x1c')](_0x4505a7);}};exports['upload']=function(_0x53bf31,_0x521a3c){var _0x417290=fs[_0xe037('0xd5')](_0x53bf31[_0xe037('0xce')][_0xe037('0x3')]);Papa[_0xe037('0xd6')](_0x417290,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x2d99a2){return _0x521a3c[_0xe037('0x10')](0xc8)[_0xe037('0x11')]({'file':_0x53bf31[_0xe037('0xce')],'fields':_0x2d99a2['meta'][_0xe037('0x2d')]});}});};exports['import']=function(_0x28ac9a,_0x260c63){return db[_0xe037('0x49')][_0xe037('0x88')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0xe037('0x26')](function(_0x2e38f0){var _0x4626a9=![];if(!_0x28ac9a[_0xe037('0x8c')][_0xe037('0x70')]){throw new Error('No\x20ListId\x20specified');}if(!_0x28ac9a['body'][_0xe037('0xd7')][_0xe037('0xb5')]){throw new Error(_0xe037('0xcc'));}if(!_0x28ac9a[_0xe037('0x8c')][_0xe037('0xd7')][_0xe037('0xcd')]){throw new Error(_0xe037('0xd8'));}if(!_0x28ac9a[_0xe037('0x8c')][_0xe037('0xc8')]){throw new Error(_0xe037('0xc9'));}var _0x4c9ebe=require('child_process')[_0xe037('0xd1')](path[_0xe037('0x8f')](__dirname,_0xe037('0xd9')),[_0x28ac9a['params']['id'],JSON[_0xe037('0xda')](_0x28ac9a['body']),JSON['stringify'](_0x2e38f0)]);_0x4c9ebe['on'](_0xe037('0xdb'),function(){_0x4626a9=!![];return _0x260c63[_0xe037('0x10')](0xc8)['json']({'message':'start\x20child\x20process\x20correctly!','pid':_0x4c9ebe[_0xe037('0xd4')]});});_0x4c9ebe['on'](_0xe037('0xdc'),function(_0x52f0d3){if(_0x52f0d3&&!_0x4626a9){return _0x260c63[_0xe037('0x10')](0x1f4)[_0xe037('0x11')]({'message':_0xe037('0xdd'),'pid':_0x4c9ebe[_0xe037('0xd4')]});}});})[_0xe037('0x80')](handleError(_0x260c63,null));};exports['getJourney']=function(_0xe65edb,_0x1627d4){var _0x410807=[_0xe037('0xde'),'chat',_0xe037('0xdf'),'openchannel',_0xe037('0xe0'),'whatsapp','voice'];var _0x1f05a2={'offset':0x0,'order':qs[_0xe037('0x31')](_0xe037('0xe1'))},_0x2035f1={'count':0x0,'rows':[]};Promise[_0xe037('0x69')]()['then'](function(){if(_0xe65edb[_0xe037('0x29')][_0xe037('0xe2')]){if(!_[_0xe037('0xe3')](_0x410807,_0xe65edb[_0xe037('0x29')][_0xe037('0xe2')]['toLowerCase']())){throw new Error(_0xe037('0xe4'));}_0x410807=[_0xe65edb['query']['channel'][_0xe037('0xe5')]()];}if(_0xe65edb[_0xe037('0x29')]['range']){try{var _0x16c7f2=JSON['parse'](_0xe65edb[_0xe037('0x29')]['range']);if(!moment(_0x16c7f2['from'])[_0xe037('0xe6')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x16c7f2['to'])[_0xe037('0xe6')]()){throw new Error(_0xe037('0xe7'));}}catch(_0xc82ca4){throw new Error(_0xe037('0xe8'));}}if(!_0xe65edb[_0xe037('0x29')]['hasOwnProperty'](_0xe037('0x2f'))){_0x1f05a2['limit']=qs[_0xe037('0x14')](_0xe65edb['query'][_0xe037('0x14')]||0xa);_0x1f05a2[_0xe037('0x12')]=qs[_0xe037('0x12')](_0xe65edb[_0xe037('0x29')][_0xe037('0x12')]);}var _0x530306=_0x410807[_0xe037('0x46')](function(_0x2ac78a){if(_0x2ac78a===_0xe037('0xe9')){var _0x54c3f6={'attributes':['id',_0xe037('0xea'),'type',_0xe037('0xeb'),'destination',_0xe037('0xec'),_0xe037('0xed'),'endtime',_0xe037('0xee'),_0xe037('0xef'),_0xe037('0xf0'),_0xe037('0xf1'),_0xe037('0xf2'),'userThirdDisposition',_0xe037('0xf3')],'where':{'ContactId':_0xe65edb['params']['id']},'include':[{'model':db[_0xe037('0x49')],'as':'User','attributes':['id',_0xe037('0x1b'),'fullname',_0xe037('0x89')]}],'order':[['createdAt',_0xe037('0x66')]]};if(_0xe65edb[_0xe037('0x29')][_0xe037('0xf4')]){_0x54c3f6[_0xe037('0x32')][_0xe037('0xf0')]={'$gte':_0x16c7f2['from'],'$lte':_0x16c7f2['to']};}return db[_0xe037('0xf5')][_0xe037('0xf6')](_0x54c3f6)[_0xe037('0x26')](function(_0xf81649){_0x2035f1['count']+=_0xf81649[_0xe037('0x15')];return _[_0xe037('0x46')](_0xf81649[_0xe037('0x7f')],function(_0xda4b5f){var _0x40910b=_0xda4b5f[_0xe037('0x8d')]({'plain':!![]});_0x40910b[_0xe037('0xe2')]=_0x2ac78a;if(_0x40910b['User']){_0x40910b[_0xe037('0x49')]={'id':_0x40910b['User']['id'],'name':_0x40910b[_0xe037('0x49')][_0xe037('0x1b')],'fullname':_0x40910b[_0xe037('0x49')][_0xe037('0xf7')],'alias':_0x40910b[_0xe037('0x49')][_0xe037('0x89')]};}return _0x40910b;});});}else{var _0x47a203=_[_0xe037('0xf8')](_0x2ac78a)+(_0x2ac78a===_0xe037('0xf9')?_0xe037('0xfa'):_0xe037('0xfb'));var _0x4df301={'attributes':['id',_0xe037('0xfc'),_0xe037('0xfd'),'createdAt',_0xe037('0xef'),_0xe037('0xfe'),'secondDisposition','thirdDisposition',_0xe037('0xf3'),_0x47a203+'Id'],'where':{'ContactId':_0xe65edb[_0xe037('0x82')]['id']},'include':[{'model':db[_0x47a203],'as':_0xe037('0xfb'),'attributes':['id','name',_0xe037('0xff')]},{'model':db[_0xe037('0x49')],'as':_0xe037('0x100'),'attributes':['id',_0xe037('0x1b'),_0xe037('0xf7')]},{'model':db[_0xe037('0xad')],'as':_0xe037('0x7d'),'attributes':['id',_0xe037('0x1b'),_0xe037('0x35')],'through':{'attributes':[]}}],'order':[[_0xe037('0xf0'),_0xe037('0x66')]]};if(_0xe65edb['query'][_0xe037('0xf4')]){_0x4df301[_0xe037('0x32')][_0xe037('0xf0')]={'$gte':_0x16c7f2[_0xe037('0x36')],'$lte':_0x16c7f2['to']};}switch(_0x2ac78a){case'chat':_0x4df301[_0xe037('0x2c')][_0xe037('0x7e')](_0xe037('0x101'),_0xe037('0x102'),_0xe037('0x103'),'deviceModel',_0xe037('0x104'),_0xe037('0x105'),_0xe037('0x106'),_0xe037('0x107'),_0xe037('0x108'));break;case'mail':_0x4df301[_0xe037('0x2c')][_0xe037('0x7e')](_0xe037('0x109'),'substatus');break;case _0xe037('0x10a'):_0x4df301[_0xe037('0x2c')][_0xe037('0x7e')](_0xe037('0x10b'),_0xe037('0x10c'));break;}return db[_[_0xe037('0xf8')](_0x2ac78a)+'Interaction'][_0xe037('0xf6')](_0x4df301)[_0xe037('0x26')](function(_0x4c395c){_0x2035f1['count']+=_0x4c395c[_0xe037('0x15')];return _[_0xe037('0x46')](_0x4c395c[_0xe037('0x7f')],function(_0x4c20a2){var _0x3004fa=_0x4c20a2[_0xe037('0x8d')]({'plain':!![]});_0x3004fa[_0xe037('0xe2')]=_0x2ac78a;if(_0x3004fa[_0xe037('0x100')]){_0x3004fa[_0xe037('0x100')]={'id':_0x3004fa[_0xe037('0x100')]['id'],'name':_0x3004fa[_0xe037('0x100')][_0xe037('0x1b')],'fullname':_0x3004fa[_0xe037('0x100')][_0xe037('0xf7')]};}return _0x3004fa;});});}});return Promise[_0xe037('0x25')](_0x530306);})[_0xe037('0x26')](function(_0x37a6a4){return _(_0x37a6a4)[_0xe037('0x10d')]()[_0xe037('0x10e')]('createdAt')[_0xe037('0x10f')]()[_0xe037('0x44')]();})[_0xe037('0x26')](function(_0x4dd7b0){_0x2035f1['rows']=_0x1f05a2[_0xe037('0x14')]?_0x4dd7b0['slice'](_0x1f05a2[_0xe037('0x12')],_0x1f05a2['offset']+_0x1f05a2['limit']):_0x4dd7b0;return _0x2035f1;})[_0xe037('0x26')](respondWithFilteredResult(_0x1627d4,_0x1f05a2))[_0xe037('0x80')](handleError(_0x1627d4,null));};
\ No newline at end of file
+var _0xd129=['c.ListId','c.deletedAt','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','destroy','find','params','tags','displayName','columnName','alias','values','body','findAll','get','mergeWith','isArray','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsMessage','FaxInteraction','FaxMessage','OpenchannelMessage','CmHopperHistory','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','create','bulkCreate','each','duplicates','$or','findOrCreate','spread','show','$and','format','cf_%d','omit','setFields','id\x20=\x20?','toParam','text','phone','rawAttributes','options','getTags','setTags','ids','getHoppers','pick','ContactId','includeAll','getHopperHistories','include','getHopperFinals','CmHopperFinal','uploadCsv','No\x20ListId\x20specified','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','socket_timestamp','binding_keys','binding_values','Incorrect\x20binding\x20parameters\x20passed!','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','join','root','server/files/tmp','file','filename','0777','../../components/import/cm/csv','File\x20uploaded\x20correctly!','upload','meta','import','binding','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','child_process','fork','stringify','start\x20child\x20process\x20correctly!','pid','exit','error\x20child\x20process','getJourney','mail','chat','fax','channel','includes','toLowerCase','range','parse','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','uniqueid','source','destination','callerid','starttime','createdAt','userDisposition','fullname','findAndCountAll','startCase','Website','Account','closed','closedAt','note','disposition','key','Owner','customerIp','customerPort','osName','ratingMessage','ratingType','referer','subject','substatus','openchannel','threadId','Interaction','flatten','reverse','slice','eml-format','rimraf','fast-json-patch','moment','mustache','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','error','stack','name','describe','keys','length','startsWith','cf_','push','CmCustomField','findOne','trimStart','all','fieldType','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','select','field','color','tools_tags','from','cm_contacts','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','parseSearch','search','conditions','Tag','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','value','dateOfBirth','datetime','castTo','DATE','buildExpression','start','filter','isNil','Contact','isEmpty','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','replace','split','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?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','clone','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','some','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','ListId','sequelize','toString','keyBy','merge','CmContact','c.lastName','c.fax','c.email'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd129,0x1bb));var _0x9d12=function(_0xaf5cc3,_0x16528a){_0xaf5cc3=_0xaf5cc3-0x0;var _0x22ac9f=_0xd129[_0xaf5cc3];return _0x22ac9f;};'use strict';var emlformat=require(_0x9d12('0x0'));var rimraf=require(_0x9d12('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9d12('0x2'));var rp=require('request-promise');var moment=require(_0x9d12('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9d12('0x4'));var util=require('util');var path=require('path');var sox=require(_0x9d12('0x5'));var csv=require(_0x9d12('0x6'));var ejs=require(_0x9d12('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9d12('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9d12('0x9'));var deskjs=require(_0x9d12('0xa'));var toCsv=require('to-csv');var querystring=require(_0x9d12('0xb'));var Papa=require(_0x9d12('0xc'));var Redis=require(_0x9d12('0xd'));var authService=require(_0x9d12('0xe'));var qs=require(_0x9d12('0xf'));var as=require(_0x9d12('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d12('0x11'))('api');var utils=require(_0x9d12('0x12'));var config=require(_0x9d12('0x13'));var licenseUtil=require(_0x9d12('0x14'));var db=require('../../mysqldb')['db'];config[_0x9d12('0x15')]=_[_0x9d12('0x16')](config['redis'],{'host':_0x9d12('0x17'),'port':0x18eb});var socket=require(_0x9d12('0x18'))(new Redis(config[_0x9d12('0x15')]));require(_0x9d12('0x19'))['register'](socket);function respondWithStatusCode(_0x261f4d,_0x2b2153){_0x2b2153=_0x2b2153||0xcc;return function(_0x37ca70){if(_0x37ca70){return _0x261f4d[_0x9d12('0x1a')](_0x2b2153);}return _0x261f4d[_0x9d12('0x1b')](_0x2b2153)[_0x9d12('0x1c')]();};}function respondWithResult(_0x407bc6,_0xf939bc){_0xf939bc=_0xf939bc||0xc8;return function(_0xb6af96){if(_0xb6af96){return _0x407bc6[_0x9d12('0x1b')](_0xf939bc)[_0x9d12('0x1d')](_0xb6af96);}};}function respondWithFilteredResult(_0x275995,_0x3d46fd){return function(_0x48261e){if(_0x48261e){var _0x3b6dd2=typeof _0x3d46fd[_0x9d12('0x1e')]===_0x9d12('0x1f')&&typeof _0x3d46fd[_0x9d12('0x20')]===_0x9d12('0x1f');var _0x439ee2=_0x48261e[_0x9d12('0x21')];var _0x4c6739=_0x3b6dd2?0x0:_0x3d46fd[_0x9d12('0x1e')];var _0x5a40df=_0x3b6dd2?_0x48261e[_0x9d12('0x21')]:_0x3d46fd[_0x9d12('0x1e')]+_0x3d46fd[_0x9d12('0x20')];var _0x5ab2d4;if(_0x5a40df>=_0x439ee2){_0x5a40df=_0x439ee2;_0x5ab2d4=0xc8;}else{_0x5ab2d4=0xce;}_0x275995[_0x9d12('0x1b')](_0x5ab2d4);return _0x275995[_0x9d12('0x22')]('Content-Range',_0x4c6739+'-'+_0x5a40df+'/'+_0x439ee2)[_0x9d12('0x1d')](_0x48261e);}return null;};}function patchUpdates(_0x3b04cd){return function(_0x4fba02){try{jsonpatch[_0x9d12('0x23')](_0x4fba02,_0x3b04cd,!![]);}catch(_0x2e1270){return BPromise[_0x9d12('0x24')](_0x2e1270);}return _0x4fba02['save']();};}function saveUpdates(_0x20035f,_0x1757d3){return function(_0x13b77c){if(_0x13b77c){return _0x13b77c[_0x9d12('0x25')](_0x20035f)[_0x9d12('0x26')](function(_0xf79f17){return _0xf79f17;});}return null;};}function removeEntity(_0x3f8078,_0x5a58c7){return function(_0x114ad8){if(_0x114ad8){return _0x114ad8['destroy']()[_0x9d12('0x26')](function(){_0x3f8078[_0x9d12('0x1b')](0xcc)[_0x9d12('0x1c')]();});}};}function handleEntityNotFound(_0x299437,_0x3a8462){return function(_0x2cd2ef){if(!_0x2cd2ef){_0x299437[_0x9d12('0x1a')](0x194);}return _0x2cd2ef;};}function handleError(_0x4fb35e,_0x499b00){_0x499b00=_0x499b00||0x1f4;return function(_0x8b4e7){logger[_0x9d12('0x27')](_0x8b4e7[_0x9d12('0x28')]);if(_0x8b4e7[_0x9d12('0x29')]){delete _0x8b4e7[_0x9d12('0x29')];}_0x4fb35e['status'](_0x499b00)['send'](_0x8b4e7);};}exports['index']=function(_0x5443e8,_0x4a779c){var _0x26a772={},_0x358979={},_0x37e9f0={'count':0x0,'rows':[]};return db['CmContact'][_0x9d12('0x2a')]()[_0x9d12('0x26')](function(_0x51ace5){var _0x2a3dd9=[];for(var _0x9df677=0x0;_0x9df677<Object[_0x9d12('0x2b')](_0x51ace5)[_0x9d12('0x2c')];_0x9df677++){var _0x4d9e2b=Object[_0x9d12('0x2b')](_0x51ace5)[_0x9df677];if(_[_0x9d12('0x2d')](_0x4d9e2b,_0x9d12('0x2e'))){_0x2a3dd9[_0x9d12('0x2f')](db[_0x9d12('0x30')][_0x9d12('0x31')]({'where':{'id':_[_0x9d12('0x32')](_0x4d9e2b,'cf_')},'raw':!![]}));}}return BPromise[_0x9d12('0x33')](_0x2a3dd9)['then'](function(_0x322a3b){for(var _0x1df09b=0x0;_0x1df09b<_0x322a3b['length'];_0x1df09b++){if(_0x322a3b[_0x1df09b]){var _0x4e87ab='cf_'+_0x322a3b[_0x1df09b]['id'];var _0x26465=_0x51ace5[_0x4e87ab];_0x26465[_0x9d12('0x34')]=_0x322a3b[_0x1df09b][_0x9d12('0x35')];}}return _0x51ace5;});})[_0x9d12('0x26')](function(_0x14ca63){_0x358979[_0x9d12('0x36')]=_[_0x9d12('0x2b')](_0x14ca63);_0x358979[_0x9d12('0x37')]=_['keys'](_0x5443e8[_0x9d12('0x37')]);_0x358979[_0x9d12('0x38')]=_[_0x9d12('0x39')](_0x358979[_0x9d12('0x36')],_0x358979[_0x9d12('0x37')]);_0x26a772[_0x9d12('0x3a')]=_[_0x9d12('0x39')](_0x358979[_0x9d12('0x36')],qs['fields'](_0x5443e8[_0x9d12('0x37')][_0x9d12('0x3b')]));_0x26a772[_0x9d12('0x3a')]=_0x26a772[_0x9d12('0x3a')][_0x9d12('0x2c')]?_0x26a772[_0x9d12('0x3a')]:_0x358979[_0x9d12('0x36')];if(!_0x5443e8[_0x9d12('0x37')][_0x9d12('0x3c')](_0x9d12('0x3d'))){_0x26a772[_0x9d12('0x20')]=qs[_0x9d12('0x20')](_0x5443e8[_0x9d12('0x37')][_0x9d12('0x20')]);_0x26a772[_0x9d12('0x1e')]=qs['offset'](_0x5443e8['query']['offset']);}_0x26a772[_0x9d12('0x3e')]=qs[_0x9d12('0x3f')](_0x5443e8[_0x9d12('0x37')][_0x9d12('0x3f')]);_0x26a772[_0x9d12('0x40')]=qs['filters'](_['pick'](_0x5443e8[_0x9d12('0x37')],_0x358979[_0x9d12('0x38')]),_0x14ca63);var _0x4cfe82=[];var _0x4fc147=squel[_0x9d12('0x41')]()[_0x9d12('0x42')]('id')[_0x9d12('0x42')](_0x9d12('0x29'))[_0x9d12('0x42')](_0x9d12('0x43'))['from'](_0x9d12('0x44'));var _0x38c28e=squel[_0x9d12('0x41')]()[_0x9d12('0x45')](_0x9d12('0x46'),'c')[_0x9d12('0x47')](_0x9d12('0x48'),'uc',_0x9d12('0x49'))['left_join'](_0x9d12('0x4a'),'ct',_0x9d12('0x4b'))[_0x9d12('0x47')](_0x9d12('0x44'),'t',_0x9d12('0x4c'))[_0x9d12('0x40')](_0x9d12('0x4d'));var _0x376764=squel['expr']();var _0x56baac=[];var _0x1f327e=squel[_0x9d12('0x4e')]();var _0x896ad5;if(_0x5443e8['query']['search']){_0x896ad5=as[_0x9d12('0x4f')](_0x5443e8[_0x9d12('0x37')][_0x9d12('0x50')]);var _0x478fe2=_0x896ad5['sqlOperator'];for(var _0x5758af=0x0;_0x5758af<_0x896ad5[_0x9d12('0x51')][_0x9d12('0x2c')];_0x5758af++){var _0x355bfe=_0x896ad5['conditions'][_0x5758af];var _0x2cc398='c';var _0x488813=_(_0x14ca63)[_0x9d12('0x2b')]()['find'](function(_0x1f9a79){return _0x1f9a79===_0x355bfe[_0x9d12('0x42')];});if(_0x488813)_0x488813=_0x14ca63[_0x355bfe['field']];if(!_0x488813){if(_0x355bfe[_0x9d12('0x42')]===_0x9d12('0x52')){var _0x5d489a=_0x355bfe['value']['split'](',')[_0x9d12('0x53')](function(_0x489410){return Number(_0x489410);});_0x5d489a[_0x9d12('0x54')](function(_0x270fcf){_0x1f327e['or'](_0x9d12('0x55'),'%,'+_0x270fcf+',%');});_0x56baac=_[_0x9d12('0x56')](_0x56baac,_0x5d489a);}else if(_0x355bfe[_0x9d12('0x42')]===_0x9d12('0x57')){_0x376764['and']('uc.UserId\x20=\x20?',_0x355bfe[_0x9d12('0x58')]);}}else{if(_0x355bfe[_0x9d12('0x42')]===_0x9d12('0x59')||_0x488813[_0x9d12('0x34')]===_0x9d12('0x5a'))_0x355bfe[_0x9d12('0x5b')]=_0x9d12('0x5c');var _0x5ab48a=as[_0x9d12('0x5d')](_0x2cc398,_0x488813[_0x9d12('0x35')],_0x355bfe);_0x376764[_0x478fe2](_0x5ab48a['text'],_0x5ab48a[_0x9d12('0x58')][_0x9d12('0x5e')],_0x5ab48a[_0x9d12('0x58')]['end']);}}}else{var _0x31e5c7=_(Object[_0x9d12('0x2b')](_0x5443e8[_0x9d12('0x37')]))[_0x9d12('0x53')](function(_0x11c552){return _0x14ca63['hasOwnProperty'](_0x11c552)?_0x11c552:undefined;})[_0x9d12('0x5f')](function(_0x31d3a2){return!_[_0x9d12('0x60')](_0x31d3a2);})[_0x9d12('0x58')]();if(_0x5443e8['query'][_0x9d12('0x61')])_0x31e5c7[_0x9d12('0x2f')]('Contact');if(!_[_0x9d12('0x62')](_0x31e5c7)){_0x31e5c7['forEach'](function(_0x33ce61){if(_0x33ce61==='ListId'){_0x38c28e[_0x9d12('0x40')]('c.ListId\x20IN\x20?',[][_0x9d12('0x63')](_0x5443e8['query'][_0x33ce61]));}else if(_0x33ce61===_0x9d12('0x61')){var _0x43d8d2='%'+_0x5443e8[_0x9d12('0x37')][_0x33ce61]+'%';_0x38c28e[_0x9d12('0x40')](_0x9d12('0x64'),_0x43d8d2);}else{_0x38c28e[_0x9d12('0x40')]('c.'+_0x33ce61+_0x9d12('0x65'),_0x5443e8[_0x9d12('0x37')][_0x33ce61]);}});}if(_0x5443e8[_0x9d12('0x37')][_0x9d12('0x66')]){_0x56baac=_['isArray'](_0x5443e8[_0x9d12('0x37')]['tag'])?_0x5443e8[_0x9d12('0x37')][_0x9d12('0x66')]:new Array(_0x5443e8[_0x9d12('0x37')]['tag']);_0x56baac[_0x9d12('0x54')](function(_0x5565f0){_0x1f327e['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5565f0+',%');});}if(_0x5443e8[_0x9d12('0x37')][_0x9d12('0x5f')]){var _0x2a3c23=_0x5443e8[_0x9d12('0x37')][_0x9d12('0x5f')][_0x9d12('0x67')]('\x5c','\x5c\x5c')[_0x9d12('0x67')](/'/g,'\x27\x27');if(_0x2a3c23[_0x9d12('0x68')]('\x20')['length']>0x1){_0x376764['or'](_0x9d12('0x69'),qs[_0x9d12('0x6a')](_0x2a3c23),null);}else{if(qs[_0x9d12('0x6b')](_0x2a3c23)){_0x376764['or'](_0x9d12('0x6c'),_0x2a3c23+'%');_0x376764['or'](_0x9d12('0x6d'),_0x2a3c23+'%');_0x376764['or'](_0x9d12('0x6e'),_0x2a3c23+'%');_0x376764['or']('c.fax\x20LIKE\x20?',_0x2a3c23+'%');}else if(qs[_0x9d12('0x6f')](_0x2a3c23)){_0x376764['or'](_0x9d12('0x70'),_0x2a3c23+'%');}else{_0x376764['or'](_0x9d12('0x71'),'%'+_0x2a3c23+'%');_0x376764['or'](_0x9d12('0x72'),'%'+_0x2a3c23+'%');_0x376764['or'](_0x9d12('0x70'),'%'+_0x2a3c23+'%');}}}}_0x38c28e[_0x9d12('0x40')](_0x376764);_0x38c28e[_0x9d12('0x73')](_0x9d12('0x74'));var _0x36ef6f={'type':db[_0x9d12('0x75')][_0x9d12('0x76')]['SELECT'],'raw':!![]};var _0x582484=_0x38c28e[_0x9d12('0x77')]()['field']('c.id');if(_0x26a772[_0x9d12('0x3e')]){_0x26a772[_0x9d12('0x3e')]['forEach'](function(_0x6c2134){_0x38c28e[_0x9d12('0x3e')]('c.'+_0x6c2134[0x0],_0x6c2134[0x1]===_0x9d12('0x78')?![]:!![]);});}if(!_[_0x9d12('0x62')](_0x56baac)){_0x38c28e[_0x9d12('0x79')](_0x1f327e);_0x582484[_0x9d12('0x40')](_0x9d12('0x7a'),_0x56baac);}BPromise[_0x9d12('0x7b')]()[_0x9d12('0x26')](function(){if(!_0x896ad5)return;if(_0x5443e8[_0x9d12('0x7c')][_0x9d12('0x7d')]!==_0x9d12('0x7e'))return;if(!_[_0x9d12('0x7f')](_0x896ad5[_0x9d12('0x51')],[_0x9d12('0x42'),_0x9d12('0x57')])){return _0x5443e8[_0x9d12('0x7c')]['getLists']({'attributes':['id'],'raw':!![]})[_0x9d12('0x26')](function(_0x1dc6e5){if(_['isEmpty'](_0x1dc6e5)){_0x582484['where'](_0x9d12('0x80'));_0x38c28e['where'](_0x9d12('0x80'));}else{_0x582484['where'](_0x9d12('0x81'),_[_0x9d12('0x53')](_0x1dc6e5,'id'));_0x38c28e[_0x9d12('0x40')]('c.ListId\x20IN\x20?',_[_0x9d12('0x53')](_0x1dc6e5,'id'));}});}})['then'](function(){if(_0x5443e8['user'][_0x9d12('0x7d')]===_0x9d12('0x7e')&&!_0x896ad5&&!_0x5443e8['query'][_0x9d12('0x82')])return[];return db[_0x9d12('0x83')][_0x9d12('0x37')](_0x582484[_0x9d12('0x84')](),_0x36ef6f);})[_0x9d12('0x26')](function(_0x4e6bb9){_0x37e9f0[_0x9d12('0x21')]=_0x4e6bb9[_0x9d12('0x2c')];if(_0x37e9f0[_0x9d12('0x21')]===0x0)return[];return db[_0x9d12('0x83')][_0x9d12('0x37')](_0x4fc147[_0x9d12('0x84')](),_0x36ef6f)['then'](function(_0x2a8c70){_0x4cfe82=_[_0x9d12('0x85')](_0x2a8c70,'id');_0x36ef6f=_[_0x9d12('0x86')](_0x36ef6f,{'model':db[_0x9d12('0x87')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5443e8[_0x9d12('0x37')][_0x9d12('0x3b')]){_0x26a772[_0x9d12('0x3a')][_0x9d12('0x54')](function(_0x1344a3){_0x38c28e[_0x9d12('0x42')]('c.'+_0x1344a3);});}else{_0x38c28e[_0x9d12('0x42')](_0x9d12('0x74'));_0x38c28e['field']('c.firstName');_0x38c28e[_0x9d12('0x42')](_0x9d12('0x88'));_0x38c28e['field']('c.phone');_0x38c28e[_0x9d12('0x42')]('c.mobile');_0x38c28e[_0x9d12('0x42')](_0x9d12('0x89'));_0x38c28e['field'](_0x9d12('0x8a'));_0x38c28e['field'](_0x9d12('0x8b'));_0x38c28e['field']('c.createdAt');_0x38c28e['field'](_0x9d12('0x8c'));_0x38c28e[_0x9d12('0x42')]('c.CompanyId');_0x38c28e['field'](_0x9d12('0x8d'),_0x9d12('0x8e'));}if(_0x26a772[_0x9d12('0x20')])_0x38c28e['limit'](_0x26a772['limit']);if(_0x26a772['offset'])_0x38c28e[_0x9d12('0x1e')](_0x26a772[_0x9d12('0x1e')]);return db['sequelize'][_0x9d12('0x37')](_0x38c28e[_0x9d12('0x84')](),_0x36ef6f);});})['then'](function(_0x2e242d){_0x2e242d['forEach'](function(_0x4932f4){if(_0x4932f4['TagIds']){_0x4932f4[_0x9d12('0x8f')]=[];_0x4932f4['TagIds']['split'](',')['forEach'](function(_0x378d77){_0x4932f4['Tags'][_0x9d12('0x2f')](_0x4cfe82[_0x378d77]);});}delete _0x4932f4['TagIds'];});_0x37e9f0[_0x9d12('0x90')]=_0x2e242d;return _0x37e9f0;})['then'](respondWithFilteredResult(_0x4a779c,_0x26a772));})[_0x9d12('0x91')](handleError(_0x4a779c,null));};exports[_0x9d12('0x92')]=function(_0x4bd2,_0x19f779){return db[_0x9d12('0x87')][_0x9d12('0x93')]({'where':{'id':_0x4bd2[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x19f779,null))[_0x9d12('0x26')](removeEntity(_0x19f779,null))[_0x9d12('0x91')](handleError(_0x19f779,null));};exports[_0x9d12('0x2a')]=function(_0x2c0263,_0xa0f07c){return db[_0x9d12('0x87')][_0x9d12('0x2a')]()[_0x9d12('0x26')](function(_0x4ee137){delete _0x4ee137[_0x9d12('0x95')];for(var _0x467256=0x0;_0x467256<Object['keys'](_0x4ee137)[_0x9d12('0x2c')];_0x467256++){var _0x4426d4=Object[_0x9d12('0x2b')](_0x4ee137)[_0x467256];if(!_[_0x9d12('0x2d')](_0x4426d4,_0x9d12('0x2e'))){_0x4ee137[_0x4426d4]['columnName']=_0x4426d4;_0x4ee137[_0x4426d4][_0x9d12('0x96')]=_0x4426d4;}}return _0x4ee137;})['then'](function(_0x189b09){var _0x50569a={'where':{'$or':[{'ListId':_0x2c0263[_0x9d12('0x37')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x9d12('0x30')]['findAll'](_0x50569a)[_0x9d12('0x26')](function(_0x21207a){for(var _0xa84253=0x0;_0xa84253<_0x21207a[_0x9d12('0x2c')];_0xa84253++){var _0x2a5475=_0x9d12('0x2e')+_0x21207a[_0xa84253]['id'];_0x189b09[_0x2a5475][_0x9d12('0x97')]=_0x2a5475;_0x189b09[_0x2a5475]['displayName']=_0x21207a[_0xa84253][_0x9d12('0x98')];_0x189b09[_0x2a5475]['custom']={'type':_0x21207a[_0xa84253][_0x9d12('0x35')],'values':_0x21207a[_0xa84253][_0x9d12('0x99')]};}Object[_0x9d12('0x2b')](_0x189b09)[_0x9d12('0x54')](function(_0x42f6e3){if(!_0x189b09[_0x42f6e3][_0x9d12('0x3c')](_0x9d12('0x97'))){delete _0x189b09[_0x42f6e3];}});return _0x189b09;});})[_0x9d12('0x26')](respondWithResult(_0xa0f07c,null))[_0x9d12('0x91')](handleError(_0xa0f07c,null));};exports['merge']=function(_0x5e8b7a,_0x2891c1){var _0x4381ea;var _0x3fe885;var _0x1d3613;if(_0x5e8b7a['body']['id']){delete _0x5e8b7a[_0x9d12('0x9a')]['id'];}return db[_0x9d12('0x87')][_0x9d12('0x9b')]({'where':{'id':[_0x5e8b7a['body']['to'],_0x5e8b7a[_0x9d12('0x9a')][_0x9d12('0x45')]]}})[_0x9d12('0x26')](function(_0x3b8c0f){if(_0x3b8c0f){if(_0x3b8c0f[_0x9d12('0x2c')]!==0x2){return null;}_0x3b8c0f[0x0]=_0x3b8c0f[0x0][_0x9d12('0x9c')]({'plain':!![]});_0x3b8c0f[0x1]=_0x3b8c0f[0x1]['get']({'plain':!![]});delete _0x3b8c0f[0x0]['id'];delete _0x3b8c0f[0x1]['id'];return _[_0x9d12('0x9d')](_0x3b8c0f[0x0],_0x3b8c0f[0x1],function(_0x2ca9b4,_0xa56551){if(Array[_0x9d12('0x9e')](_0xa56551)&&!_0xa56551[_0x9d12('0x2c')]){return _0x2ca9b4;}else if(!_0xa56551){return _0x2ca9b4;}});}})[_0x9d12('0x26')](handleEntityNotFound(_0x2891c1,null))['then'](function(_0x3c9216){if(_0x3c9216){if(_0x3c9216[_0x9d12('0x95')]&&_[_0x9d12('0x9e')](_0x3c9216['tags'])){_0x3c9216[_0x9d12('0x95')]=_0x3c9216[_0x9d12('0x95')]['join']();}logger[_0x9d12('0x9f')](_0x9d12('0xa0'),_0x5e8b7a[_0x9d12('0x9a')]['to'],_0x5e8b7a[_0x9d12('0x9a')][_0x9d12('0x45')]);return db[_0x9d12('0xa1')][_0x9d12('0x92')]({'where':{'ContactId':[_0x5e8b7a[_0x9d12('0x9a')]['to'],_0x5e8b7a['body']['from']]}})['then'](function(_0x5c1478){logger[_0x9d12('0x9f')](_0x9d12('0xa2'),_0x5c1478);return db[_0x9d12('0xa3')][_0x9d12('0x92')]({'where':{'ContactId':[_0x5e8b7a[_0x9d12('0x9a')]['to'],_0x5e8b7a[_0x9d12('0x9a')]['from']]}})['then'](function(_0x20acab){logger[_0x9d12('0x9f')](_0x9d12('0xa4'),_0x20acab);return db[_0x9d12('0x87')]['create'](_0x3c9216);});});}})[_0x9d12('0x26')](function(_0x3019ed){if(_0x3019ed){_0x4381ea=_0x3019ed;_0x3fe885={'ContactId':_0x4381ea['id']};_0x1d3613={'where':{'ContactId':[_0x5e8b7a[_0x9d12('0x9a')]['to'],_0x5e8b7a['body'][_0x9d12('0x45')]]}};return db[_0x9d12('0xa5')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xa6')]['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xa7')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db[_0x9d12('0xa8')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xa9')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xa8')]['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xa9')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db['SmsInteraction']['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xaa')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xab')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db[_0x9d12('0xac')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db['OpenchannelInteraction'][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db[_0x9d12('0xad')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db['CmHopperFinal'][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db[_0x9d12('0xae')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db['ReportAgentPreview']['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xaf')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})['then'](function(){if(_0x4381ea){return db[_0x9d12('0xb0')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db['FaxQueueReport']['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb1')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb2')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb3')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb4')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb5')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb6')]['update'](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0xb7')][_0x9d12('0x25')](_0x3fe885,_0x1d3613);}})[_0x9d12('0x26')](function(){if(_0x4381ea){return db[_0x9d12('0x87')][_0x9d12('0x92')]({'where':{'id':[_0x5e8b7a[_0x9d12('0x9a')]['to'],_0x5e8b7a[_0x9d12('0x9a')]['from']]}});}})['then'](function(){if(_0x4381ea){return _0x4381ea;}})[_0x9d12('0x26')](respondWithResult(_0x2891c1,null))[_0x9d12('0x91')](handleError(_0x2891c1,null));};exports[_0x9d12('0xb8')]=function(_0x6d963c,_0x5112f2){return db[_0x9d12('0x87')]['describe']()[_0x9d12('0x26')](function(_0x431cb2){if(_0x6d963c[_0x9d12('0x9a')][_0x9d12('0x95')]&&_[_0x9d12('0x9e')](_0x6d963c[_0x9d12('0x9a')][_0x9d12('0x95')])){if(_0x6d963c[_0x9d12('0x9a')][_0x9d12('0x95')][_0x9d12('0x2c')]){_0x6d963c[_0x9d12('0x9a')][_0x9d12('0x95')]=_0x6d963c['body'][_0x9d12('0x95')]['join'](';')+';';}else{_0x6d963c[_0x9d12('0x9a')][_0x9d12('0x95')]=null;}}else{_0x6d963c['body'][_0x9d12('0x95')]=null;}return db[_0x9d12('0x87')][_0x9d12('0xb8')](_0x6d963c[_0x9d12('0x9a')],{'fields':_[_0x9d12('0x2b')](_0x431cb2),'raw':!![]});})[_0x9d12('0x26')](respondWithResult(_0x5112f2,0xc9))[_0x9d12('0x91')](handleError(_0x5112f2,null));};exports[_0x9d12('0xb9')]=function(_0x48b0ff,_0xe15d43){var _0x7745d3=[];var _0x1f9fb2=0x0;var _0x378fdd=0x0;var _0x1f97e0=0x0;return db[_0x9d12('0x87')]['describe']()[_0x9d12('0x26')](function(_0x1ef278){return BPromise[_0x9d12('0xba')](_0x48b0ff['body'],function(_0x52ee38){var _0x5b24e5={'where':{'$or':[]},'defaults':_0x52ee38,'fields':_[_0x9d12('0x2b')](_0x1ef278),'raw':!![]};if(_0x52ee38[_0x9d12('0xbb')]){for(var _0xe2699e=0x0;_0xe2699e<_0x52ee38[_0x9d12('0xbb')]['length'];_0xe2699e++){var _0x53bef7={};_0x53bef7[_0x52ee38['duplicates'][_0xe2699e]]=_0x52ee38[_0x52ee38[_0x9d12('0xbb')][_0xe2699e]];_0x5b24e5[_0x9d12('0x40')][_0x9d12('0xbc')][_0x9d12('0x2f')](_0x53bef7);}_0x5b24e5[_0x9d12('0x40')]['ListId']=_0x52ee38['ListId'];}return db[_0x9d12('0x87')][_0x9d12('0xbd')](_0x5b24e5)[_0x9d12('0xbe')](function(_0x43bbd9,_0x1cf0b9){if(_0x1cf0b9){_0x1f9fb2++;}else{_0x1f97e0++;}})[_0x9d12('0x91')](function(_0x5638c1){console[_0x9d12('0x27')](_0x5638c1);_0x378fdd++;});});})[_0x9d12('0x26')](function(_0x2acac9){if(_0x2acac9){return{'success':_0x1f9fb2,'failure':_0x378fdd,'duplicates':_0x1f97e0};}})['then'](respondWithResult(_0xe15d43,0xc9))[_0x9d12('0x91')](handleError(_0xe15d43,null));};exports[_0x9d12('0xbf')]=function(_0x4ed861,_0x545a38,_0x15c727){var _0x29a01c;return db[_0x9d12('0x87')][_0x9d12('0x2a')]()[_0x9d12('0x26')](function(_0x335e89){return db[_0x9d12('0x87')][_0x9d12('0x93')]({'where':{'id':_0x4ed861[_0x9d12('0x94')]['id']},'include':[{'model':db[_0x9d12('0x52')],'as':'Tags','attributes':['id','name',_0x9d12('0x43')],'required':_0x4ed861[_0x9d12('0x37')]['tag']?!![]:![]}],'attributes':_['keys'](_0x335e89)});})[_0x9d12('0x26')](function(_0x354c39){_0x29a01c=_0x354c39[_0x9d12('0x9c')]({'plain':!![]});var _0x540ae7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x354c39&&_0x354c39[_0x9d12('0x82')]){if(_0x354c39[_0x9d12('0x82')]){_0x540ae7[_0x9d12('0x40')][_0x9d12('0xc0')]['push']({'ListId':{'$ne':_0x354c39[_0x9d12('0x82')]}});}}return db[_0x9d12('0x30')][_0x9d12('0x9b')](_0x540ae7);})[_0x9d12('0x26')](function(_0x39d279){return _['omit'](_0x29a01c,_['map'](_0x39d279,function(_0x2f574e){return util[_0x9d12('0xc1')](_0x9d12('0xc2'),_0x2f574e['id']);}));})[_0x9d12('0x26')](handleEntityNotFound(_0x545a38,null))[_0x9d12('0x26')](respondWithResult(_0x545a38,null))[_0x9d12('0x91')](handleError(_0x545a38,null));};exports[_0x9d12('0x25')]=function(_0x2e872a,_0x3468cf){var _0x49a2e6;if(_0x2e872a[_0x9d12('0x9a')]['id']){delete _0x2e872a[_0x9d12('0x9a')]['id'];}return db[_0x9d12('0x87')][_0x9d12('0x93')]({'where':{'id':_0x2e872a[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x3468cf,null))['then'](saveUpdates(_0x2e872a['body'],null))[_0x9d12('0x26')](function(_0x6dae56){_0x49a2e6=_0x6dae56;var _0x3d9417={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x6dae56&&_0x6dae56[_0x9d12('0x82')]){if(_0x6dae56['ListId']){_0x3d9417['where'][_0x9d12('0xc0')][_0x9d12('0x2f')]({'ListId':{'$ne':_0x6dae56[_0x9d12('0x82')]}});}}return db['CmCustomField'][_0x9d12('0x9b')](_0x3d9417);})[_0x9d12('0x26')](function(_0x185ecb){if(_0x185ecb){return _[_0x9d12('0xc3')](_['pickBy'](_0x2e872a[_0x9d12('0x9a')],function(_0x15635d,_0x4da22a){return _[_0x9d12('0x2d')](_0x4da22a,_0x9d12('0x2e'));}),_[_0x9d12('0x53')](_0x185ecb,function(_0x5ec77d){return util[_0x9d12('0xc1')](_0x9d12('0xc2'),_0x5ec77d['id']);}));}})[_0x9d12('0x26')](function(_0x4fef25){if(_0x4fef25&&!_['isEmpty'](_0x4fef25)){var _0x1c3183=squel['update']()['table'](_0x9d12('0x46'))[_0x9d12('0xc4')](_0x4fef25)['where'](_0x9d12('0xc5'),_0x2e872a[_0x9d12('0x94')]['id'])[_0x9d12('0xc6')]();return db[_0x9d12('0x83')]['query'](_0x1c3183[_0x9d12('0xc7')],{'replacements':_0x1c3183['values']});}})[_0x9d12('0x26')](function(){if(_0x2e872a[_0x9d12('0x9a')][_0x9d12('0xc8')]&&_0x49a2e6){return db[_0x9d12('0xa1')][_0x9d12('0x25')]({'phone':_0x2e872a[_0x9d12('0x9a')]['phone']},{'where':{'ContactId':_0x49a2e6['id']}});}})[_0x9d12('0x26')](function(){return _0x49a2e6;})[_0x9d12('0x26')](respondWithResult(_0x3468cf,null))[_0x9d12('0x91')](handleError(_0x3468cf,null));};exports['getTags']=function(_0x44f2e6,_0x233d32,_0x57c332){var _0x567833={};var _0x451ab6={};var _0x4d725f;var _0x10847c;return db[_0x9d12('0x87')][_0x9d12('0x31')]({'where':{'id':_0x44f2e6[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x233d32,null))[_0x9d12('0x26')](function(_0x4a4ed6){if(_0x4a4ed6){_0x4d725f=_0x4a4ed6;_0x451ab6[_0x9d12('0x36')]=_[_0x9d12('0x2b')](db[_0x9d12('0x52')][_0x9d12('0xc9')]);_0x451ab6[_0x9d12('0x37')]=_['keys'](_0x44f2e6[_0x9d12('0x37')]);_0x451ab6[_0x9d12('0x38')]=_[_0x9d12('0x39')](_0x451ab6['model'],_0x451ab6[_0x9d12('0x37')]);_0x567833[_0x9d12('0x3a')]=_[_0x9d12('0x39')](_0x451ab6[_0x9d12('0x36')],qs[_0x9d12('0x3b')](_0x44f2e6['query']['fields']));_0x567833['attributes']=_0x567833[_0x9d12('0x3a')][_0x9d12('0x2c')]?_0x567833['attributes']:_0x451ab6[_0x9d12('0x36')];_0x567833[_0x9d12('0x3e')]=qs['sort'](_0x44f2e6[_0x9d12('0x37')][_0x9d12('0x3f')]);_0x567833['where']=qs[_0x9d12('0x38')](_['pick'](_0x44f2e6['query'],_0x451ab6[_0x9d12('0x38')]));if(_0x44f2e6[_0x9d12('0x37')]['filter']){_0x567833['where']=_[_0x9d12('0x86')](_0x567833[_0x9d12('0x40')],{'$or':_[_0x9d12('0x53')](_0x567833[_0x9d12('0x3a')],function(_0x217a1a){var _0x15acd6={};_0x15acd6[_0x217a1a]={'$like':'%'+_0x44f2e6['query'][_0x9d12('0x5f')]+'%'};return _0x15acd6;})});}_0x567833=_[_0x9d12('0x86')]({},_0x567833,_0x44f2e6[_0x9d12('0xca')]);return _0x4d725f[_0x9d12('0xcb')](_0x567833);}})[_0x9d12('0x26')](function(_0x4cb348){if(_0x4cb348){_0x10847c=_0x4cb348[_0x9d12('0x2c')];if(!_0x44f2e6[_0x9d12('0x37')]['hasOwnProperty']('nolimit')){_0x567833['limit']=qs[_0x9d12('0x20')](_0x44f2e6[_0x9d12('0x37')][_0x9d12('0x20')]);_0x567833['offset']=qs['offset'](_0x44f2e6[_0x9d12('0x37')][_0x9d12('0x1e')]);}return _0x4d725f[_0x9d12('0xcb')](_0x567833);}})[_0x9d12('0x26')](function(_0x55af0f){if(_0x55af0f){return _0x55af0f?{'count':_0x10847c,'rows':_0x55af0f}:null;}})[_0x9d12('0x26')](respondWithResult(_0x233d32,null))[_0x9d12('0x91')](handleError(_0x233d32,null));};exports[_0x9d12('0xcc')]=function(_0x26446a,_0x1713cb,_0x3e6b96){if(_0x26446a[_0x9d12('0x9a')]['id']){delete _0x26446a[_0x9d12('0x9a')]['id'];}return db[_0x9d12('0x87')]['findOne']({'where':{'id':_0x26446a[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x1713cb,null))[_0x9d12('0x26')](function(_0x8fb138){if(_0x8fb138){return _0x8fb138['setTags'](_0x26446a[_0x9d12('0x9a')][_0x9d12('0xcd')]||[]);}return null;})[_0x9d12('0x26')](respondWithResult(_0x1713cb,null))[_0x9d12('0x91')](handleError(_0x1713cb,null));};exports[_0x9d12('0xce')]=function(_0x1d033e,_0x326d41,_0x461029){var _0x35771d={'raw':![],'where':{}};var _0x2ed753={};var _0x1bf201={'count':0x0,'rows':[]};return db[_0x9d12('0x87')]['findOne']({'where':{'id':_0x1d033e[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x326d41,null))[_0x9d12('0x26')](function(_0x201580){if(_0x201580){_0x2ed753[_0x9d12('0x36')]=_[_0x9d12('0x2b')](db[_0x9d12('0xa1')][_0x9d12('0xc9')]);_0x2ed753['query']=_[_0x9d12('0x2b')](_0x1d033e[_0x9d12('0x37')]);_0x2ed753['filters']=_[_0x9d12('0x39')](_0x2ed753['model'],_0x2ed753['query']);_0x35771d[_0x9d12('0x3a')]=_[_0x9d12('0x39')](_0x2ed753[_0x9d12('0x36')],qs[_0x9d12('0x3b')](_0x1d033e[_0x9d12('0x37')]['fields']));_0x35771d[_0x9d12('0x3a')]=_0x35771d[_0x9d12('0x3a')]['length']?_0x35771d[_0x9d12('0x3a')]:_0x2ed753[_0x9d12('0x36')];if(!_0x1d033e[_0x9d12('0x37')][_0x9d12('0x3c')](_0x9d12('0x3d'))){_0x35771d['limit']=qs[_0x9d12('0x20')](_0x1d033e[_0x9d12('0x37')][_0x9d12('0x20')]);_0x35771d[_0x9d12('0x1e')]=qs[_0x9d12('0x1e')](_0x1d033e[_0x9d12('0x37')]['offset']);}_0x35771d['order']=qs['sort'](_0x1d033e[_0x9d12('0x37')]['sort']);_0x35771d['where']=qs[_0x9d12('0x38')](_[_0x9d12('0xcf')](_0x1d033e[_0x9d12('0x37')],_0x2ed753[_0x9d12('0x38')]));_0x35771d[_0x9d12('0x40')][_0x9d12('0xd0')]=_0x201580['id'];if(_0x1d033e[_0x9d12('0x37')][_0x9d12('0x5f')]){_0x35771d['where']=_[_0x9d12('0x86')](_0x35771d[_0x9d12('0x40')],{'$or':_[_0x9d12('0x53')](_0x35771d[_0x9d12('0x3a')],function(_0x5d17ff){var _0x23f0ac={};_0x23f0ac[_0x5d17ff]={'$like':'%'+_0x1d033e[_0x9d12('0x37')][_0x9d12('0x5f')]+'%'};return _0x23f0ac;})});}_0x35771d=_[_0x9d12('0x86')]({},_0x35771d,_0x1d033e[_0x9d12('0xca')]);return db[_0x9d12('0xa1')][_0x9d12('0x21')]({'where':_0x35771d[_0x9d12('0x40')]})['then'](function(_0x23cee8){_0x1bf201[_0x9d12('0x21')]=_0x23cee8;if(_0x1d033e[_0x9d12('0x37')][_0x9d12('0xd1')]){_0x35771d['include']=[{'all':!![]}];}return db[_0x9d12('0xa1')][_0x9d12('0x9b')](_0x35771d);})['then'](function(_0x168e6a){_0x1bf201[_0x9d12('0x90')]=_0x168e6a;return _0x1bf201;});}})[_0x9d12('0x26')](respondWithFilteredResult(_0x326d41,_0x35771d))[_0x9d12('0x91')](handleError(_0x326d41,null));};exports[_0x9d12('0xd2')]=function(_0x41ea8f,_0x1b9d2b,_0xbbb264){var _0xadc19e={'raw':!![],'where':{}};var _0x1ef344={};var _0x460ff7={'count':0x0,'rows':[]};return db[_0x9d12('0x87')][_0x9d12('0x31')]({'where':{'id':_0x41ea8f[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x1b9d2b,null))[_0x9d12('0x26')](function(_0x119d2b){if(_0x119d2b){_0x1ef344['model']=_[_0x9d12('0x2b')](db['CmHopperHistory']['rawAttributes']);_0x1ef344[_0x9d12('0x37')]=_[_0x9d12('0x2b')](_0x41ea8f['query']);_0x1ef344[_0x9d12('0x38')]=_[_0x9d12('0x39')](_0x1ef344[_0x9d12('0x36')],_0x1ef344['query']);_0xadc19e[_0x9d12('0x3a')]=_[_0x9d12('0x39')](_0x1ef344[_0x9d12('0x36')],qs[_0x9d12('0x3b')](_0x41ea8f[_0x9d12('0x37')]['fields']));_0xadc19e[_0x9d12('0x3a')]=_0xadc19e['attributes'][_0x9d12('0x2c')]?_0xadc19e[_0x9d12('0x3a')]:_0x1ef344[_0x9d12('0x36')];if(!_0x41ea8f['query'][_0x9d12('0x3c')](_0x9d12('0x3d'))){_0xadc19e[_0x9d12('0x20')]=qs[_0x9d12('0x20')](_0x41ea8f[_0x9d12('0x37')]['limit']);_0xadc19e[_0x9d12('0x1e')]=qs[_0x9d12('0x1e')](_0x41ea8f[_0x9d12('0x37')][_0x9d12('0x1e')]);}_0xadc19e['order']=qs['sort'](_0x41ea8f[_0x9d12('0x37')]['sort']);_0xadc19e[_0x9d12('0x40')]=qs[_0x9d12('0x38')](_[_0x9d12('0xcf')](_0x41ea8f[_0x9d12('0x37')],_0x1ef344[_0x9d12('0x38')]));_0xadc19e['where']['ContactId']=_0x119d2b['id'];if(_0x41ea8f[_0x9d12('0x37')][_0x9d12('0x5f')]){_0xadc19e['where']=_[_0x9d12('0x86')](_0xadc19e[_0x9d12('0x40')],{'$or':_['map'](_0xadc19e['attributes'],function(_0x32c812){var _0x195f4c={};_0x195f4c[_0x32c812]={'$like':'%'+_0x41ea8f[_0x9d12('0x37')]['filter']+'%'};return _0x195f4c;})});}_0xadc19e=_[_0x9d12('0x86')]({},_0xadc19e,_0x41ea8f[_0x9d12('0xca')]);return db[_0x9d12('0xae')][_0x9d12('0x21')]({'where':_0xadc19e[_0x9d12('0x40')]})['then'](function(_0x3ec0e3){_0x460ff7[_0x9d12('0x21')]=_0x3ec0e3;if(_0x41ea8f['query'][_0x9d12('0xd1')]){_0xadc19e[_0x9d12('0xd3')]=[{'all':!![]}];}return db[_0x9d12('0xae')][_0x9d12('0x9b')](_0xadc19e);})['then'](function(_0xa4b741){_0x460ff7[_0x9d12('0x90')]=_0xa4b741;return _0x460ff7;});}})[_0x9d12('0x26')](respondWithFilteredResult(_0x1b9d2b,_0xadc19e))[_0x9d12('0x91')](handleError(_0x1b9d2b,null));};exports[_0x9d12('0xd4')]=function(_0x4339ae,_0x57f833,_0x4114a7){var _0x12b201={'raw':!![],'where':{}};var _0x1731a5={};var _0xefeb2f={'count':0x0,'rows':[]};return db[_0x9d12('0x87')][_0x9d12('0x31')]({'where':{'id':_0x4339ae[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x57f833,null))['then'](function(_0x1eaaf9){if(_0x1eaaf9){_0x1731a5[_0x9d12('0x36')]=_[_0x9d12('0x2b')](db[_0x9d12('0xd5')][_0x9d12('0xc9')]);_0x1731a5['query']=_[_0x9d12('0x2b')](_0x4339ae[_0x9d12('0x37')]);_0x1731a5[_0x9d12('0x38')]=_[_0x9d12('0x39')](_0x1731a5[_0x9d12('0x36')],_0x1731a5[_0x9d12('0x37')]);_0x12b201[_0x9d12('0x3a')]=_['intersection'](_0x1731a5[_0x9d12('0x36')],qs['fields'](_0x4339ae[_0x9d12('0x37')][_0x9d12('0x3b')]));_0x12b201[_0x9d12('0x3a')]=_0x12b201[_0x9d12('0x3a')][_0x9d12('0x2c')]?_0x12b201[_0x9d12('0x3a')]:_0x1731a5['model'];if(!_0x4339ae['query'][_0x9d12('0x3c')](_0x9d12('0x3d'))){_0x12b201[_0x9d12('0x20')]=qs[_0x9d12('0x20')](_0x4339ae[_0x9d12('0x37')][_0x9d12('0x20')]);_0x12b201[_0x9d12('0x1e')]=qs['offset'](_0x4339ae[_0x9d12('0x37')]['offset']);}_0x12b201[_0x9d12('0x3e')]=qs[_0x9d12('0x3f')](_0x4339ae['query'][_0x9d12('0x3f')]);_0x12b201[_0x9d12('0x40')]=qs[_0x9d12('0x38')](_[_0x9d12('0xcf')](_0x4339ae['query'],_0x1731a5[_0x9d12('0x38')]));_0x12b201[_0x9d12('0x40')][_0x9d12('0xd0')]=_0x1eaaf9['id'];if(_0x4339ae[_0x9d12('0x37')][_0x9d12('0x5f')]){_0x12b201['where']=_[_0x9d12('0x86')](_0x12b201[_0x9d12('0x40')],{'$or':_[_0x9d12('0x53')](_0x12b201[_0x9d12('0x3a')],function(_0x425669){var _0x34fb7f={};_0x34fb7f[_0x425669]={'$like':'%'+_0x4339ae[_0x9d12('0x37')][_0x9d12('0x5f')]+'%'};return _0x34fb7f;})});}_0x12b201=_[_0x9d12('0x86')]({},_0x12b201,_0x4339ae[_0x9d12('0xca')]);return db[_0x9d12('0xd5')][_0x9d12('0x21')]({'where':_0x12b201[_0x9d12('0x40')]})['then'](function(_0x50b895){_0xefeb2f[_0x9d12('0x21')]=_0x50b895;if(_0x4339ae[_0x9d12('0x37')][_0x9d12('0xd1')]){_0x12b201[_0x9d12('0xd3')]=[{'all':!![]}];}return db[_0x9d12('0xd5')][_0x9d12('0x9b')](_0x12b201);})[_0x9d12('0x26')](function(_0x48fa66){_0xefeb2f['rows']=_0x48fa66;return _0xefeb2f;});}})[_0x9d12('0x26')](respondWithFilteredResult(_0x57f833,_0x12b201))[_0x9d12('0x91')](handleError(_0x57f833,null));};exports['getJscriptySessions']=function(_0x54a66b,_0x4dac8d,_0x50d077){var _0x2d4b45={'raw':!![],'where':{}};var _0x679d30={};var _0x56408c={'count':0x0,'rows':[]};return db[_0x9d12('0x87')][_0x9d12('0x31')]({'where':{'id':_0x54a66b[_0x9d12('0x94')]['id']}})[_0x9d12('0x26')](handleEntityNotFound(_0x4dac8d,null))['then'](function(_0x5ef8d7){if(_0x5ef8d7){_0x679d30[_0x9d12('0x36')]=_['keys'](db[_0x9d12('0xb4')]['rawAttributes']);_0x679d30[_0x9d12('0x37')]=_[_0x9d12('0x2b')](_0x54a66b['query']);_0x679d30[_0x9d12('0x38')]=_[_0x9d12('0x39')](_0x679d30[_0x9d12('0x36')],_0x679d30[_0x9d12('0x37')]);_0x2d4b45[_0x9d12('0x3a')]=_[_0x9d12('0x39')](_0x679d30[_0x9d12('0x36')],qs[_0x9d12('0x3b')](_0x54a66b[_0x9d12('0x37')][_0x9d12('0x3b')]));_0x2d4b45['attributes']=_0x2d4b45[_0x9d12('0x3a')][_0x9d12('0x2c')]?_0x2d4b45['attributes']:_0x679d30[_0x9d12('0x36')];if(!_0x54a66b[_0x9d12('0x37')]['hasOwnProperty'](_0x9d12('0x3d'))){_0x2d4b45['limit']=qs['limit'](_0x54a66b[_0x9d12('0x37')][_0x9d12('0x20')]);_0x2d4b45[_0x9d12('0x1e')]=qs[_0x9d12('0x1e')](_0x54a66b[_0x9d12('0x37')][_0x9d12('0x1e')]);}_0x2d4b45[_0x9d12('0x3e')]=qs['sort'](_0x54a66b['query'][_0x9d12('0x3f')]);_0x2d4b45['where']=qs['filters'](_[_0x9d12('0xcf')](_0x54a66b[_0x9d12('0x37')],_0x679d30[_0x9d12('0x38')]));_0x2d4b45[_0x9d12('0x40')][_0x9d12('0xd0')]=_0x5ef8d7['id'];if(_0x54a66b[_0x9d12('0x37')][_0x9d12('0x5f')]){_0x2d4b45['where']=_[_0x9d12('0x86')](_0x2d4b45[_0x9d12('0x40')],{'$or':_['map'](_0x2d4b45[_0x9d12('0x3a')],function(_0x4e92fb){var _0x1fb452={};_0x1fb452[_0x4e92fb]={'$like':'%'+_0x54a66b[_0x9d12('0x37')][_0x9d12('0x5f')]+'%'};return _0x1fb452;})});}_0x2d4b45=_[_0x9d12('0x86')]({},_0x2d4b45,_0x54a66b[_0x9d12('0xca')]);return db[_0x9d12('0xb4')][_0x9d12('0x21')]({'where':_0x2d4b45[_0x9d12('0x40')]})[_0x9d12('0x26')](function(_0x1ac560){_0x56408c['count']=_0x1ac560;if(_0x54a66b[_0x9d12('0x37')]['includeAll']){_0x2d4b45[_0x9d12('0xd3')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x9d12('0x9b')](_0x2d4b45);})[_0x9d12('0x26')](function(_0x285685){_0x56408c[_0x9d12('0x90')]=_0x285685;return _0x56408c;});}})['then'](respondWithFilteredResult(_0x4dac8d,_0x2d4b45))[_0x9d12('0x91')](handleError(_0x4dac8d,null));};exports[_0x9d12('0xd6')]=function(_0x49dee2,_0x3f09ac,_0x5353ca){try{if(!_0x49dee2[_0x9d12('0x9a')][_0x9d12('0x82')]){throw new Error(_0x9d12('0xd7'));}if(!_0x49dee2[_0x9d12('0x9a')]['binding_keys']){throw new Error(_0x9d12('0xd8'));}if(!_0x49dee2['body']['binding_values']){throw new Error(_0x9d12('0xd9'));}if(!_0x49dee2['body'][_0x9d12('0xda')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0xd997cf=_0x49dee2[_0x9d12('0x9a')][_0x9d12('0xdb')][_0x9d12('0x68')](',');var _0x1380ae=_0x49dee2[_0x9d12('0x9a')][_0x9d12('0xdc')][_0x9d12('0x68')](',');if(!_0xd997cf['length']||!_0x1380ae[_0x9d12('0x2c')]||_0xd997cf[_0x9d12('0x2c')]!==_0x1380ae[_0x9d12('0x2c')]){throw new Error(_0x9d12('0xdd'));}_0x49dee2[_0x9d12('0x9a')][_0x9d12('0x3b')]=_['zipObject'](_0xd997cf,_0x1380ae);if(!_0x49dee2[_0x9d12('0x9a')][_0x9d12('0x3b')][_0x9d12('0xc8')]){throw new Error(_0x9d12('0xde'));}if(!_0x49dee2[_0x9d12('0x9a')]['fields'][_0x9d12('0xdf')]){throw new Error(_0x9d12('0xe0'));}var _0x2bee66=path[_0x9d12('0xe1')](config[_0x9d12('0xe2')],_0x9d12('0xe3'),_0x49dee2[_0x9d12('0xe4')][_0x9d12('0xe5')]);fs['chmodSync'](_0x2bee66,parseInt(_0x9d12('0xe6'),0x8));var _0x219697=require('child_process')['fork'](path[_0x9d12('0xe1')](__dirname,_0x9d12('0xe7')),[_0x2bee66,_0x49dee2[_0x9d12('0x9a')][_0x9d12('0xdb')],_0x49dee2['body'][_0x9d12('0xdc')],_0x49dee2['body'][_0x9d12('0x82')],_0x49dee2[_0x9d12('0x9a')]['CompanyId'],_0x49dee2[_0x9d12('0x9a')][_0x9d12('0xbb')],_0x49dee2[_0x9d12('0x9a')]['socket_timestamp']]);return _0x3f09ac['status'](0xc8)[_0x9d12('0x1d')]({'message':_0x9d12('0xe8'),'pid':_0x219697['pid']});}catch(_0x5b8547){return _0x3f09ac[_0x9d12('0x1b')](0x1f4)['send'](_0x5b8547);}};exports[_0x9d12('0xe9')]=function(_0x50ba18,_0x1742e8,_0x1ca0b6){var _0x2e3965=fs['createReadStream'](_0x50ba18[_0x9d12('0xe4')]['path']);Papa['parse'](_0x2e3965,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x4547ac){return _0x1742e8[_0x9d12('0x1b')](0xc8)[_0x9d12('0x1d')]({'file':_0x50ba18[_0x9d12('0xe4')],'fields':_0x4547ac[_0x9d12('0xea')][_0x9d12('0x3b')]});}});};exports[_0x9d12('0xeb')]=function(_0x5eb270,_0x31018d,_0x33ad85){return db[_0x9d12('0x57')][_0x9d12('0x9b')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})['then'](function(_0xcb83d8){var _0x2fd02b=![];if(!_0x5eb270[_0x9d12('0x9a')][_0x9d12('0x82')]){throw new Error(_0x9d12('0xd7'));}if(!_0x5eb270['body']['binding'][_0x9d12('0xc8')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x5eb270[_0x9d12('0x9a')][_0x9d12('0xec')][_0x9d12('0xdf')]){throw new Error(_0x9d12('0xe0'));}if(!_0x5eb270[_0x9d12('0x9a')][_0x9d12('0xda')]){throw new Error(_0x9d12('0xed'));}var _0xba5139=require(_0x9d12('0xee'))[_0x9d12('0xef')](path['join'](__dirname,'../../components/import/cm/csv2'),[_0x5eb270['params']['id'],JSON[_0x9d12('0xf0')](_0x5eb270[_0x9d12('0x9a')]),JSON['stringify'](_0xcb83d8)]);_0xba5139['on']('message',function(_0x1d4332){_0x2fd02b=!![];return _0x31018d['status'](0xc8)['json']({'message':_0x9d12('0xf1'),'pid':_0xba5139[_0x9d12('0xf2')]});});_0xba5139['on'](_0x9d12('0xf3'),function(_0x3e6f69){if(_0x3e6f69&&!_0x2fd02b){return _0x31018d['status'](0x1f4)['json']({'message':_0x9d12('0xf4'),'pid':_0xba5139[_0x9d12('0xf2')]});}});})['catch'](handleError(_0x31018d,null));};exports[_0x9d12('0xf5')]=function(_0x293145,_0x1bf511){var _0x343d71=[_0x9d12('0xf6'),_0x9d12('0xf7'),'sms','openchannel',_0x9d12('0xf8'),'whatsapp','voice'];var _0x342107={'offset':0x0,'order':qs[_0x9d12('0x3f')]('-createdAt')},_0x422185={'count':0x0,'rows':[]};Promise[_0x9d12('0x7b')]()[_0x9d12('0x26')](function(){if(_0x293145['query'][_0x9d12('0xf9')]){if(!_[_0x9d12('0xfa')](_0x343d71,_0x293145[_0x9d12('0x37')][_0x9d12('0xf9')][_0x9d12('0xfb')]())){throw new Error('Invalid\x20channel');}_0x343d71=[_0x293145[_0x9d12('0x37')][_0x9d12('0xf9')][_0x9d12('0xfb')]()];}if(_0x293145[_0x9d12('0x37')][_0x9d12('0xfc')]){try{var _0x5b5a9d=JSON[_0x9d12('0xfd')](_0x293145['query']['range']);if(!moment(_0x5b5a9d[_0x9d12('0x45')])[_0x9d12('0xfe')]()){throw new Error(_0x9d12('0xff'));}if(!moment(_0x5b5a9d['to'])['isValid']()){throw new Error(_0x9d12('0x100'));}}catch(_0xf5e216){throw new Error(_0x9d12('0x101'));}}if(!_0x293145[_0x9d12('0x37')][_0x9d12('0x3c')](_0x9d12('0x3d'))){_0x342107[_0x9d12('0x20')]=qs[_0x9d12('0x20')](_0x293145[_0x9d12('0x37')][_0x9d12('0x20')]||0xa);_0x342107[_0x9d12('0x1e')]=qs['offset'](_0x293145[_0x9d12('0x37')][_0x9d12('0x1e')]);}var _0x4f3d5f=_0x343d71['map'](function(_0x2e25df){if(_0x2e25df===_0x9d12('0x102')){var _0x3fca48={'attributes':['id',_0x9d12('0x103'),_0x9d12('0x35'),_0x9d12('0x104'),_0x9d12('0x105'),_0x9d12('0x106'),_0x9d12('0x107'),'endtime','duration','note',_0x9d12('0x108'),_0x9d12('0x109'),'userSecondDisposition','userThirdDisposition','UserId'],'where':{'ContactId':_0x293145['params']['id']},'include':[{'model':db[_0x9d12('0x57')],'as':'User','attributes':['id','name',_0x9d12('0x10a'),_0x9d12('0x98')]}],'order':[[_0x9d12('0x108'),_0x9d12('0x78')]]};if(_0x293145[_0x9d12('0x37')][_0x9d12('0xfc')]){_0x3fca48[_0x9d12('0x40')][_0x9d12('0x108')]={'$gte':_0x5b5a9d[_0x9d12('0x45')],'$lte':_0x5b5a9d['to']};}return db['VoiceCallReport'][_0x9d12('0x10b')](_0x3fca48)[_0x9d12('0x26')](function(_0x25cd21){_0x422185[_0x9d12('0x21')]+=_0x25cd21['count'];return _['map'](_0x25cd21[_0x9d12('0x90')],function(_0x457061){var _0x4b1e23=_0x457061[_0x9d12('0x9c')]({'plain':!![]});_0x4b1e23[_0x9d12('0xf9')]=_0x2e25df;if(_0x4b1e23[_0x9d12('0x57')]){_0x4b1e23[_0x9d12('0x57')]={'id':_0x4b1e23[_0x9d12('0x57')]['id'],'name':_0x4b1e23[_0x9d12('0x57')][_0x9d12('0x29')],'fullname':_0x4b1e23['User'][_0x9d12('0x10a')],'alias':_0x4b1e23[_0x9d12('0x57')][_0x9d12('0x98')]};}return _0x4b1e23;});});}else{var _0x983903=_[_0x9d12('0x10c')](_0x2e25df)+(_0x2e25df===_0x9d12('0xf7')?_0x9d12('0x10d'):_0x9d12('0x10e'));var _0x17a72d={'attributes':['id',_0x9d12('0x10f'),_0x9d12('0x110'),_0x9d12('0x108'),_0x9d12('0x111'),_0x9d12('0x112'),'secondDisposition','thirdDisposition','UserId',_0x983903+'Id'],'where':{'ContactId':_0x293145[_0x9d12('0x94')]['id']},'include':[{'model':db[_0x983903],'as':'Account','attributes':['id',_0x9d12('0x29'),_0x9d12('0x113')]},{'model':db['User'],'as':_0x9d12('0x114'),'attributes':['id',_0x9d12('0x29'),_0x9d12('0x10a')]},{'model':db[_0x9d12('0x52')],'as':_0x9d12('0x8f'),'attributes':['id',_0x9d12('0x29'),_0x9d12('0x43')],'through':{'attributes':[]}}],'order':[[_0x9d12('0x108'),_0x9d12('0x78')]]};if(_0x293145[_0x9d12('0x37')][_0x9d12('0xfc')]){_0x17a72d['where'][_0x9d12('0x108')]={'$gte':_0x5b5a9d[_0x9d12('0x45')],'$lte':_0x5b5a9d['to']};}switch(_0x2e25df){case'chat':_0x17a72d[_0x9d12('0x3a')][_0x9d12('0x2f')]('browserName',_0x9d12('0x115'),_0x9d12('0x116'),'deviceModel',_0x9d12('0x117'),_0x9d12('0x118'),_0x9d12('0x119'),'ratingValue',_0x9d12('0x11a'));break;case _0x9d12('0xf6'):_0x17a72d[_0x9d12('0x3a')]['push'](_0x9d12('0x11b'),_0x9d12('0x11c'));break;case _0x9d12('0x11d'):_0x17a72d['attributes']['push']('externalUrl',_0x9d12('0x11e'));break;}return db[_[_0x9d12('0x10c')](_0x2e25df)+_0x9d12('0x11f')][_0x9d12('0x10b')](_0x17a72d)[_0x9d12('0x26')](function(_0x23e5d3){_0x422185[_0x9d12('0x21')]+=_0x23e5d3[_0x9d12('0x21')];return _[_0x9d12('0x53')](_0x23e5d3['rows'],function(_0x1dbac6){var _0xe9d22b=_0x1dbac6[_0x9d12('0x9c')]({'plain':!![]});_0xe9d22b[_0x9d12('0xf9')]=_0x2e25df;if(_0xe9d22b[_0x9d12('0x114')]){_0xe9d22b[_0x9d12('0x114')]={'id':_0xe9d22b[_0x9d12('0x114')]['id'],'name':_0xe9d22b[_0x9d12('0x114')][_0x9d12('0x29')],'fullname':_0xe9d22b[_0x9d12('0x114')][_0x9d12('0x10a')]};}return _0xe9d22b;});});}});return Promise[_0x9d12('0x33')](_0x4f3d5f);})[_0x9d12('0x26')](function(_0x5c9c24){return _(_0x5c9c24)[_0x9d12('0x120')]()['sortBy'](_0x9d12('0x108'))[_0x9d12('0x121')]()[_0x9d12('0x58')]();})['then'](function(_0x2c54fe){_0x422185[_0x9d12('0x90')]=_0x342107[_0x9d12('0x20')]?_0x2c54fe[_0x9d12('0x122')](_0x342107[_0x9d12('0x1e')],_0x342107['offset']+_0x342107[_0x9d12('0x20')]):_0x2c54fe;return _0x422185;})['then'](respondWithFilteredResult(_0x1bf511,_0x342107))['catch'](handleError(_0x1bf511,null));};
\ No newline at end of file
index 7a71e22..aad8590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c84=['emit','hasOwnProperty','hook','../../mysqldb','CmContact','setMaxListeners','save','update','remove'];(function(_0x1cd47d,_0x55bc75){var _0x29d52f=function(_0x37737a){while(--_0x37737a){_0x1cd47d['push'](_0x1cd47d['shift']());}};_0x29d52f(++_0x55bc75);}(_0x7c84,0x111));var _0x47c8=function(_0x3fa0f4,_0x52aa41){_0x3fa0f4=_0x3fa0f4-0x0;var _0x3d933f=_0x7c84[_0x3fa0f4];return _0x3d933f;};'use strict';var EventEmitter=require('events');var CmContact=require(_0x47c8('0x0'))['db'][_0x47c8('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x47c8('0x2')](0x0);var events={'afterCreate':_0x47c8('0x3'),'afterUpdate':_0x47c8('0x4'),'afterDestroy':_0x47c8('0x5')};function emitEvent(_0x4d2c62){return function(_0x37227d,_0x397f02,_0x5767d1){CmContactEvents[_0x47c8('0x6')](_0x4d2c62+':'+_0x37227d['id'],_0x37227d);CmContactEvents[_0x47c8('0x6')](_0x4d2c62,_0x37227d);_0x5767d1(null);};}for(var e in events){if(events[_0x47c8('0x7')](e)){var event=events[e];CmContact[_0x47c8('0x8')](e,emitEvent(event));}}module['exports']=CmContactEvents;
\ No newline at end of file
+var _0xccfa=['hook','exports','events','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x5c4504,_0x43bd6d){var _0xa9e952=function(_0x28b57e){while(--_0x28b57e){_0x5c4504['push'](_0x5c4504['shift']());}};_0xa9e952(++_0x43bd6d);}(_0xccfa,0x1ea));var _0xaccf=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0xccfa[_0x12fc8d];return _0x3f9d04;};'use strict';var EventEmitter=require(_0xaccf('0x0'));var CmContact=require('../../mysqldb')['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xaccf('0x1')](0x0);var events={'afterCreate':_0xaccf('0x2'),'afterUpdate':'update','afterDestroy':_0xaccf('0x3')};function emitEvent(_0x3e952e){return function(_0x3a3a2b,_0x30882e,_0x4a43c9){CmContactEvents[_0xaccf('0x4')](_0x3e952e+':'+_0x3a3a2b['id'],_0x3a3a2b);CmContactEvents['emit'](_0x3e952e,_0x3a3a2b);_0x4a43c9(null);};}for(var e in events){if(events[_0xaccf('0x5')](e)){var event=events[e];CmContact[_0xaccf('0x6')](e,emitEvent(event));}}module[_0xaccf('0x7')]=CmContactEvents;
\ No newline at end of file
index b514c4a..a5d6e17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44ec=['isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','CmHopper','then','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','afterCreate','inspect','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','dialCheckDuplicateType','always','outbound','CmList','BlackLists','length','cmContact,\x20%s,\x20%s','Lists','onlyIfOpen','Campaign','CmHopperBlack','message','error','List\x20not\x20found','destroy','ContactId','VoiceQueueId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','fax','email','FULLTEXT','utf8mb4_unicode_ci','get','cmContact','findOne'];(function(_0x306682,_0x39bcd4){var _0x4a7522=function(_0x9c67a7){while(--_0x9c67a7){_0x306682['push'](_0x306682['shift']());}};_0x4a7522(++_0x39bcd4);}(_0x44ec,0x73));var _0xc44e=function(_0x4a5642,_0x18c3f9){_0x4a5642=_0x4a5642-0x0;var _0x4ecc72=_0x44ec[_0x4a5642];return _0x4ecc72;};'use strict';var _=require(_0xc44e('0x0'));var util=require(_0xc44e('0x1'));var logger=require(_0xc44e('0x2'))(_0xc44e('0x3'));var moment=require(_0xc44e('0x4'));var BPromise=require('bluebird');var rp=require(_0xc44e('0x5'));var fs=require('fs');var path=require(_0xc44e('0x6'));var rimraf=require(_0xc44e('0x7'));var config=require(_0xc44e('0x8'));var attributes=require('./cmContact.attributes');module[_0xc44e('0x9')]=function(_0x4bb3e8,_0x10b508){return _0x4bb3e8['define'](_0xc44e('0xa'),attributes,{'tableName':_0xc44e('0xb'),'paranoid':!![],'indexes':[{'name':_0xc44e('0xc'),'fields':[_0xc44e('0xc')]},{'name':_0xc44e('0xd'),'fields':[_0xc44e('0xe'),_0xc44e('0xf'),'phone','mobile',_0xc44e('0x10'),_0xc44e('0x11')],'type':_0xc44e('0x12')}],'timestamps':!![],'charset':'utf8mb4','collate':_0xc44e('0x13'),'hooks':{'afterCreate':function(_0x2c014c,_0x5dea48,_0x48daa0){var _0x3b604a=_0x4bb3e8['models'];var _0x58716d=_0x2c014c[_0xc44e('0x14')]({'plain':!![]});function _0x16284b(){return function(_0x46af33){logger['error'](_0xc44e('0x15'),'afterCreate',util['inspect'](_0x46af33,{'showHidden':![],'depth':null}));};}var _0x187abf=function(_0x1f44fd){return new BPromise(function(_0x287a97,_0x2f9f82){_0x3b604a['CmHopper'][_0xc44e('0x16')]({'where':{'phone':_0x58716d[_0xc44e('0xc')],'VoiceQueueId':_0x1f44fd['id']}})['then'](function(_0x33d42a){if(!_[_0xc44e('0x17')](_0x33d42a)){throw new Error(_0xc44e('0x18')+_0x58716d[_0xc44e('0xc')]+_0xc44e('0x19')+_0x1f44fd['id']);}return _0x3b604a['CmHopper'][_0xc44e('0x1a')]({'phone':_0x58716d[_0xc44e('0xc')],'ContactId':_0x58716d['id'],'ListId':_0x58716d[_0xc44e('0x1b')],'priority':_0x58716d[_0xc44e('0x1c')]?_0x58716d['priority']:0x2,'scheduledat':_0x58716d['scheduledat']?_0x58716d[_0xc44e('0x1d')]:moment()[_0xc44e('0x1e')](_0xc44e('0x1f')),'callback':_0x58716d[_0xc44e('0x20')]?!![]:![],'callbackuniqueid':_0x58716d['callbackUniqueid']?_0x58716d[_0xc44e('0x20')]:undefined,'callbackat':_0x58716d[_0xc44e('0x20')]?moment()['format'](_0xc44e('0x1f')):undefined,'VoiceQueueId':_0x1f44fd['id']});})[_0xc44e('0x21')](function(_0x2eb101){_0x2f9f82(_0x2eb101);});});};var _0x29d0d4=function(_0x3e552e){return new BPromise(function(_0x428025,_0x14df89){_0x3b604a[_0xc44e('0x22')][_0xc44e('0x16')]({'where':{'phone':_0x58716d['phone'],'VoiceQueueId':_0x3e552e['id']}})[_0xc44e('0x23')](function(_0x78ff78){if(!_['isNil'](_0x78ff78)){throw new Error(_0xc44e('0x18')+_0x58716d[_0xc44e('0xc')]+_0xc44e('0x24')+_0x3e552e['id']);}return _0x3b604a[_0xc44e('0x25')][_0xc44e('0x16')]({'where':{'calleridnum':_0x58716d[_0xc44e('0xc')],'VoiceQueueId':_0x3e552e['id']}});})[_0xc44e('0x23')](function(_0x4bbbe3){if(!_[_0xc44e('0x17')](_0x4bbbe3)){throw new Error(_0xc44e('0x26')+_0x58716d[_0xc44e('0xc')]+_0xc44e('0x27')+_0x3e552e['id']);}return _0x3b604a['CmHopper'][_0xc44e('0x1a')]({'phone':_0x58716d[_0xc44e('0xc')],'ContactId':_0x58716d['id'],'ListId':_0x58716d[_0xc44e('0x1b')],'priority':_0x58716d[_0xc44e('0x1c')]?_0x58716d['priority']:0x2,'scheduledat':_0x58716d[_0xc44e('0x1d')]?_0x58716d[_0xc44e('0x1d')]:moment()[_0xc44e('0x1e')](_0xc44e('0x1f')),'callback':_0x58716d[_0xc44e('0x20')]?!![]:![],'callbackuniqueid':_0x58716d[_0xc44e('0x20')]?_0x58716d[_0xc44e('0x20')]:undefined,'callbackat':_0x58716d['callbackUniqueid']?moment()[_0xc44e('0x1e')](_0xc44e('0x1f')):undefined,'VoiceQueueId':_0x3e552e['id']});})[_0xc44e('0x21')](function(_0x6fedd4){_0x14df89(_0x6fedd4);});});};function _0x24ec30(){return function(_0x16fbc9){logger['error'](_0xc44e('0x15'),_0xc44e('0x28'),util[_0xc44e('0x29')](_0x16fbc9,{'showHidden':![],'depth':null}));};}var _0x52553a=function(_0x347974){return new BPromise(function(_0x1cf45e,_0x52dd76){_0x3b604a[_0xc44e('0x22')][_0xc44e('0x16')]({'where':{'phone':_0x58716d[_0xc44e('0xc')],'CampaignId':_0x347974['id']}})['then'](function(_0x1a8a6b){if(!_['isNil'](_0x1a8a6b)){throw new Error(_0xc44e('0x18')+_0x58716d['phone']+_0xc44e('0x2a')+_0x347974['id']);}return _0x3b604a[_0xc44e('0x22')][_0xc44e('0x1a')]({'phone':_0x58716d[_0xc44e('0xc')],'ContactId':_0x58716d['id'],'ListId':_0x58716d[_0xc44e('0x1b')],'priority':_0x58716d[_0xc44e('0x1c')]?_0x58716d[_0xc44e('0x1c')]:0x2,'scheduledat':_0x58716d['scheduledat']?_0x58716d[_0xc44e('0x1d')]:moment()[_0xc44e('0x1e')](_0xc44e('0x1f')),'callback':_0x58716d['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x58716d[_0xc44e('0x20')]?_0x58716d[_0xc44e('0x20')]:undefined,'callbackat':_0x58716d[_0xc44e('0x20')]?moment()[_0xc44e('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x347974['id']});})[_0xc44e('0x21')](function(_0x1a6df5){_0x52dd76(_0x1a6df5);});});};var _0x29d9de=function(_0x15e1c5){return new BPromise(function(_0x5d3de6,_0x50fd77){_0x3b604a[_0xc44e('0x22')][_0xc44e('0x16')]({'where':{'phone':_0x58716d[_0xc44e('0xc')],'CampaignId':_0x15e1c5['id']}})['then'](function(_0x3c10c3){if(!_[_0xc44e('0x17')](_0x3c10c3)){throw new Error(_0xc44e('0x18')+_0x58716d['phone']+_0xc44e('0x2b')+_0x15e1c5['id']);}return _0x3b604a[_0xc44e('0x25')][_0xc44e('0x16')]({'where':{'calleridnum':_0x58716d[_0xc44e('0xc')],'CampaignId':_0x15e1c5['id']}});})[_0xc44e('0x23')](function(_0x3241ba){if(!_[_0xc44e('0x17')](_0x3241ba)){throw new Error(_0xc44e('0x26')+_0x58716d[_0xc44e('0xc')]+_0xc44e('0x2c')+_0x15e1c5['id']);}return _0x3b604a['CmHopper'][_0xc44e('0x1a')]({'phone':_0x58716d[_0xc44e('0xc')],'ContactId':_0x58716d['id'],'ListId':_0x58716d['ListId'],'priority':_0x58716d[_0xc44e('0x1c')]?_0x58716d[_0xc44e('0x1c')]:0x2,'scheduledat':_0x58716d[_0xc44e('0x1d')]?_0x58716d['scheduledat']:moment()[_0xc44e('0x1e')](_0xc44e('0x1f')),'callback':_0x58716d['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x58716d[_0xc44e('0x20')]?_0x58716d[_0xc44e('0x20')]:undefined,'callbackat':_0x58716d['callbackUniqueid']?moment()[_0xc44e('0x1e')](_0xc44e('0x1f')):undefined,'CampaignId':_0x15e1c5['id']});})[_0xc44e('0x21')](function(_0x5a1870){_0x50fd77(_0x5a1870);});});};if(_0x58716d[_0xc44e('0x1b')]){_0x3b604a[_0xc44e('0x2d')][_0xc44e('0x2e')]({'where':{'type':'outbound'},'attributes':['id',_0xc44e('0x2f')],'include':[{'model':_0x3b604a['CmList'],'as':'Lists','where':{'id':_0x58716d[_0xc44e('0x1b')]}}]})[_0xc44e('0x23')](function(_0x32f859){if(_0x32f859){var _0x546095=[];for(var _0x3cf3f7=0x0,_0x31f48f;_0x3cf3f7<_0x32f859['length'];_0x3cf3f7+=0x1){_0x31f48f=_0x32f859[_0x3cf3f7]['get']({'plain':!![]});switch(_0x31f48f[_0xc44e('0x2f')]){case _0xc44e('0x30'):_0x29d0d4(_0x31f48f)[_0xc44e('0x21')](_0x16284b());break;case'onlyIfOpen':_0x187abf(_0x31f48f)['catch'](_0x16284b());break;default:_0x3b604a[_0xc44e('0x22')][_0xc44e('0x1a')]({'phone':_0x58716d[_0xc44e('0xc')],'ContactId':_0x58716d['id'],'ListId':_0x58716d[_0xc44e('0x1b')],'scheduledat':_0x58716d['scheduledat']?_0x58716d['scheduledat']:moment()[_0xc44e('0x1e')](_0xc44e('0x1f')),'priority':_0x58716d[_0xc44e('0x1c')]?_0x58716d[_0xc44e('0x1c')]:0x2,'callback':_0x58716d[_0xc44e('0x20')]?!![]:![],'callbackuniqueid':_0x58716d[_0xc44e('0x20')]?_0x58716d[_0xc44e('0x20')]:undefined,'callbackat':_0x58716d[_0xc44e('0x20')]?moment()[_0xc44e('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x31f48f['id']})[_0xc44e('0x21')](_0x16284b());}}}})[_0xc44e('0x23')](function(){return _0x3b604a[_0xc44e('0x2d')]['findAll']({'where':{'type':_0xc44e('0x31')},'attributes':['id'],'include':[{'model':_0x3b604a[_0xc44e('0x32')],'as':_0xc44e('0x33'),'where':{'id':_0x58716d['ListId']}}]})[_0xc44e('0x23')](function(_0x43174f){if(_0x43174f){var _0x62dadd=[];for(var _0x4b0d7f=0x0,_0x2855ac;_0x4b0d7f<_0x43174f[_0xc44e('0x34')];_0x4b0d7f+=0x1){_0x2855ac=_0x43174f[_0x4b0d7f][_0xc44e('0x14')]({'plain':!![]});_0x3b604a['CmHopperBlack'][_0xc44e('0x1a')]({'phone':_0x58716d[_0xc44e('0xc')],'ContactId':_0x58716d['id'],'ListId':_0x58716d['ListId'],'VoiceQueueId':_0x2855ac['id']})[_0xc44e('0x21')](function(_0x1fb2ed){logger['error'](_0xc44e('0x35'),_0xc44e('0x28'),_0x1fb2ed['message']);});}}});})['then'](function(){return _0x3b604a['Campaign'][_0xc44e('0x2e')]({'attributes':['id',_0xc44e('0x2f')],'include':[{'model':_0x3b604a[_0xc44e('0x32')],'as':_0xc44e('0x36'),'where':{'id':_0x58716d[_0xc44e('0x1b')]}}]})[_0xc44e('0x23')](function(_0x3ea1dd){if(_0x3ea1dd){var _0x2dd59d=[];for(var _0x2b6a6c=0x0,_0x481a3d;_0x2b6a6c<_0x3ea1dd['length'];_0x2b6a6c+=0x1){_0x481a3d=_0x3ea1dd[_0x2b6a6c][_0xc44e('0x14')]({'plain':!![]});switch(_0x481a3d[_0xc44e('0x2f')]){case _0xc44e('0x30'):_0x29d9de(_0x481a3d)[_0xc44e('0x21')](_0x24ec30());break;case _0xc44e('0x37'):_0x52553a(_0x481a3d)[_0xc44e('0x21')](_0x24ec30());break;default:_0x3b604a['CmHopper']['create']({'phone':_0x58716d[_0xc44e('0xc')],'ContactId':_0x58716d['id'],'ListId':_0x58716d[_0xc44e('0x1b')],'scheduledat':_0x58716d[_0xc44e('0x1d')]?_0x58716d[_0xc44e('0x1d')]:moment()[_0xc44e('0x1e')](_0xc44e('0x1f')),'priority':_0x58716d[_0xc44e('0x1c')]?_0x58716d['priority']:0x2,'callback':_0x58716d[_0xc44e('0x20')]?!![]:![],'callbackuniqueid':_0x58716d['callbackUniqueid']?_0x58716d[_0xc44e('0x20')]:undefined,'callbackat':_0x58716d[_0xc44e('0x20')]?moment()[_0xc44e('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x481a3d['id']})[_0xc44e('0x21')](_0x24ec30());}}}});})[_0xc44e('0x23')](function(){return _0x3b604a[_0xc44e('0x38')]['findAll']({'attributes':['id'],'include':[{'model':_0x3b604a[_0xc44e('0x32')],'as':_0xc44e('0x33'),'where':{'id':_0x58716d['ListId']}}]})[_0xc44e('0x23')](function(_0x31f98e){if(_0x31f98e){var _0x5634f5=[];for(var _0x575809=0x0,_0x4ad352;_0x575809<_0x31f98e['length'];_0x575809+=0x1){_0x4ad352=_0x31f98e[_0x575809][_0xc44e('0x14')]({'plain':!![]});_0x3b604a[_0xc44e('0x39')][_0xc44e('0x1a')]({'phone':_0x58716d[_0xc44e('0xc')],'ContactId':_0x58716d['id'],'ListId':_0x58716d[_0xc44e('0x1b')],'CampaignId':_0x4ad352['id']})['catch'](function(_0x136fd0){logger['error'](_0xc44e('0x35'),_0xc44e('0x28'),_0x136fd0[_0xc44e('0x3a')]);});}}});})[_0xc44e('0x23')](function(){_0x48daa0();})['catch'](function(_0x3ba0ca){logger[_0xc44e('0x3b')](_0xc44e('0x35'),_0xc44e('0x28'),_0x3ba0ca['message']);_0x48daa0(_0x3ba0ca);});}else{_0x48daa0(new Error(_0xc44e('0x3c')));}},'afterDestroy':function(_0x19e4c3,_0x46a776,_0x27fb36){var _0x10be15=_0x4bb3e8['models'];var _0x539e58=_0x19e4c3[_0xc44e('0x14')]({'plain':!![]});return _0x10be15[_0xc44e('0x22')][_0xc44e('0x2e')]({'raw':!![],'where':{'ListId':_0x539e58[_0xc44e('0x1b')],'ContactId':_0x539e58['id']}})[_0xc44e('0x23')](function(_0x244538){if(!_['isEmpty'](_0x244538)){var _0x2a5792=[];for(var _0x202ee5=0x0;_0x202ee5<_0x244538[_0xc44e('0x34')];_0x202ee5+=0x1){var _0x4a7df1=_0x10be15[_0xc44e('0x22')][_0xc44e('0x3d')]({'where':{'ListId':_0x244538[_0x202ee5][_0xc44e('0x1b')],'ContactId':_0x244538[_0x202ee5][_0xc44e('0x3e')],'VoiceQueueId':_0x244538[_0x202ee5][_0xc44e('0x3f')],'CampaignId':_0x244538[_0x202ee5]['CampaignId']}});_0x2a5792[_0xc44e('0x40')](_0x4a7df1);}return BPromise[_0xc44e('0x41')](_0x2a5792);}})[_0xc44e('0x23')](function(_0x38f282){logger[_0xc44e('0x42')](_0xc44e('0x43'),util[_0xc44e('0x29')](_0x38f282,{'showHidden':![],'depth':null}));_0x27fb36();})[_0xc44e('0x21')](function(_0x214df2){logger[_0xc44e('0x3b')](_0xc44e('0x44'),util[_0xc44e('0x29')](_0x214df2,{'showHidden':![],'depth':null}));_0x27fb36(_0x214df2);});}}});};
\ No newline at end of file
+var _0xc794=['always','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Error]','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','lastName','mobile','fax','email','FULLTEXT','utf8mb4_unicode_ci','models','cmContact','afterCreate','inspect','CmHopper','findOne','then','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','error','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','get','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign'];(function(_0x4a9beb,_0x159482){var _0x2d4c58=function(_0x28dabf){while(--_0x28dabf){_0x4a9beb['push'](_0x4a9beb['shift']());}};_0x2d4c58(++_0x159482);}(_0xc794,0x95));var _0x4c79=function(_0x4252be,_0x182dc8){_0x4252be=_0x4252be-0x0;var _0x2c2ef5=_0xc794[_0x4252be];return _0x2c2ef5;};'use strict';var _=require('lodash');var util=require(_0x4c79('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x4c79('0x1'));var BPromise=require(_0x4c79('0x2'));var rp=require(_0x4c79('0x3'));var fs=require('fs');var path=require(_0x4c79('0x4'));var rimraf=require(_0x4c79('0x5'));var config=require(_0x4c79('0x6'));var attributes=require(_0x4c79('0x7'));module[_0x4c79('0x8')]=function(_0x32a445,_0x1e6dbb){return _0x32a445[_0x4c79('0x9')](_0x4c79('0xa'),attributes,{'tableName':_0x4c79('0xb'),'paranoid':!![],'indexes':[{'name':_0x4c79('0xc'),'fields':[_0x4c79('0xc')]},{'name':_0x4c79('0xd'),'fields':['firstName',_0x4c79('0xe'),'phone',_0x4c79('0xf'),_0x4c79('0x10'),_0x4c79('0x11')],'type':_0x4c79('0x12')}],'timestamps':!![],'charset':'utf8mb4','collate':_0x4c79('0x13'),'hooks':{'afterCreate':function(_0x41e045,_0x5635dd,_0x3a4d88){var _0x47d86c=_0x32a445[_0x4c79('0x14')];var _0x192f2b=_0x41e045['get']({'plain':!![]});function _0x42cf8e(){return function(_0x194974){logger['error'](_0x4c79('0x15'),_0x4c79('0x16'),util[_0x4c79('0x17')](_0x194974,{'showHidden':![],'depth':null}));};}var _0x5d0ce8=function(_0x5ca858){return new BPromise(function(_0x4f54fa,_0x5d5caf){_0x47d86c[_0x4c79('0x18')][_0x4c79('0x19')]({'where':{'phone':_0x192f2b[_0x4c79('0xc')],'VoiceQueueId':_0x5ca858['id']}})[_0x4c79('0x1a')](function(_0x754010){if(!_[_0x4c79('0x1b')](_0x754010)){throw new Error(_0x4c79('0x1c')+_0x192f2b[_0x4c79('0xc')]+_0x4c79('0x1d')+_0x5ca858['id']);}return _0x47d86c['CmHopper'][_0x4c79('0x1e')]({'phone':_0x192f2b['phone'],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'priority':_0x192f2b[_0x4c79('0x20')]?_0x192f2b['priority']:0x2,'scheduledat':_0x192f2b[_0x4c79('0x21')]?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')](_0x4c79('0x23')),'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b['callbackUniqueid']:undefined,'callbackat':_0x192f2b['callbackUniqueid']?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'VoiceQueueId':_0x5ca858['id']});})[_0x4c79('0x25')](function(_0x376145){_0x5d5caf(_0x376145);});});};var _0x57503a=function(_0x1f09b0){return new BPromise(function(_0xd73569,_0x5e5f59){_0x47d86c[_0x4c79('0x18')][_0x4c79('0x19')]({'where':{'phone':_0x192f2b['phone'],'VoiceQueueId':_0x1f09b0['id']}})[_0x4c79('0x1a')](function(_0x60bd5d){if(!_['isNil'](_0x60bd5d)){throw new Error(_0x4c79('0x1c')+_0x192f2b['phone']+_0x4c79('0x26')+_0x1f09b0['id']);}return _0x47d86c[_0x4c79('0x27')]['findOne']({'where':{'calleridnum':_0x192f2b[_0x4c79('0xc')],'VoiceQueueId':_0x1f09b0['id']}});})[_0x4c79('0x1a')](function(_0x4a7230){if(!_[_0x4c79('0x1b')](_0x4a7230)){throw new Error(_0x4c79('0x28')+_0x192f2b['phone']+_0x4c79('0x29')+_0x1f09b0['id']);}return _0x47d86c[_0x4c79('0x18')][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'priority':_0x192f2b[_0x4c79('0x20')]?_0x192f2b[_0x4c79('0x20')]:0x2,'scheduledat':_0x192f2b[_0x4c79('0x21')]?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')](_0x4c79('0x23')),'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b[_0x4c79('0x24')]:undefined,'callbackat':_0x192f2b['callbackUniqueid']?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'VoiceQueueId':_0x1f09b0['id']});})[_0x4c79('0x25')](function(_0x533a7e){_0x5e5f59(_0x533a7e);});});};function _0x100119(){return function(_0x2a3d12){logger[_0x4c79('0x2a')](_0x4c79('0x15'),_0x4c79('0x16'),util[_0x4c79('0x17')](_0x2a3d12,{'showHidden':![],'depth':null}));};}var _0xd5cf37=function(_0x487a62){return new BPromise(function(_0x47b45c,_0x2e8c79){_0x47d86c[_0x4c79('0x18')]['findOne']({'where':{'phone':_0x192f2b['phone'],'CampaignId':_0x487a62['id']}})[_0x4c79('0x1a')](function(_0x4cd6f9){if(!_['isNil'](_0x4cd6f9)){throw new Error(_0x4c79('0x1c')+_0x192f2b['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x487a62['id']);}return _0x47d86c[_0x4c79('0x18')][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'priority':_0x192f2b['priority']?_0x192f2b[_0x4c79('0x20')]:0x2,'scheduledat':_0x192f2b['scheduledat']?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b['callbackUniqueid']:undefined,'callbackat':_0x192f2b[_0x4c79('0x24')]?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'CampaignId':_0x487a62['id']});})['catch'](function(_0x28640e){_0x2e8c79(_0x28640e);});});};var _0x78fd05=function(_0x48a93d){return new BPromise(function(_0xf9d452,_0x424302){_0x47d86c[_0x4c79('0x18')][_0x4c79('0x19')]({'where':{'phone':_0x192f2b[_0x4c79('0xc')],'CampaignId':_0x48a93d['id']}})[_0x4c79('0x1a')](function(_0x355ea3){if(!_['isNil'](_0x355ea3)){throw new Error(_0x4c79('0x1c')+_0x192f2b[_0x4c79('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x48a93d['id']);}return _0x47d86c[_0x4c79('0x27')][_0x4c79('0x19')]({'where':{'calleridnum':_0x192f2b[_0x4c79('0xc')],'CampaignId':_0x48a93d['id']}});})['then'](function(_0x4da63a){if(!_['isNil'](_0x4da63a)){throw new Error(_0x4c79('0x28')+_0x192f2b[_0x4c79('0xc')]+_0x4c79('0x2b')+_0x48a93d['id']);}return _0x47d86c[_0x4c79('0x18')][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'priority':_0x192f2b[_0x4c79('0x20')]?_0x192f2b[_0x4c79('0x20')]:0x2,'scheduledat':_0x192f2b[_0x4c79('0x21')]?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')](_0x4c79('0x23')),'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b['callbackUniqueid']:undefined,'callbackat':_0x192f2b['callbackUniqueid']?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'CampaignId':_0x48a93d['id']});})['catch'](function(_0x52d25f){_0x424302(_0x52d25f);});});};if(_0x192f2b[_0x4c79('0x1f')]){_0x47d86c[_0x4c79('0x2c')][_0x4c79('0x2d')]({'where':{'type':_0x4c79('0x2e')},'attributes':['id',_0x4c79('0x2f')],'include':[{'model':_0x47d86c[_0x4c79('0x30')],'as':_0x4c79('0x31'),'where':{'id':_0x192f2b[_0x4c79('0x1f')]}}]})[_0x4c79('0x1a')](function(_0x36a1e8){if(_0x36a1e8){var _0x573f50=[];for(var _0x39483e=0x0,_0x238167;_0x39483e<_0x36a1e8[_0x4c79('0x32')];_0x39483e+=0x1){_0x238167=_0x36a1e8[_0x39483e][_0x4c79('0x33')]({'plain':!![]});switch(_0x238167[_0x4c79('0x2f')]){case'always':_0x57503a(_0x238167)[_0x4c79('0x25')](_0x42cf8e());break;case _0x4c79('0x34'):_0x5d0ce8(_0x238167)[_0x4c79('0x25')](_0x42cf8e());break;default:_0x47d86c['CmHopper'][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'scheduledat':_0x192f2b[_0x4c79('0x21')]?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')](_0x4c79('0x23')),'priority':_0x192f2b[_0x4c79('0x20')]?_0x192f2b[_0x4c79('0x20')]:0x2,'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b['callbackUniqueid']:undefined,'callbackat':_0x192f2b[_0x4c79('0x24')]?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'VoiceQueueId':_0x238167['id']})[_0x4c79('0x25')](_0x42cf8e());}}}})[_0x4c79('0x1a')](function(){return _0x47d86c[_0x4c79('0x2c')][_0x4c79('0x2d')]({'where':{'type':_0x4c79('0x2e')},'attributes':['id'],'include':[{'model':_0x47d86c[_0x4c79('0x30')],'as':_0x4c79('0x35'),'where':{'id':_0x192f2b[_0x4c79('0x1f')]}}]})['then'](function(_0x21dc60){if(_0x21dc60){var _0x4d3206=[];for(var _0xb808b5=0x0,_0x57cb5b;_0xb808b5<_0x21dc60[_0x4c79('0x32')];_0xb808b5+=0x1){_0x57cb5b=_0x21dc60[_0xb808b5][_0x4c79('0x33')]({'plain':!![]});_0x47d86c[_0x4c79('0x36')][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'VoiceQueueId':_0x57cb5b['id']})['catch'](function(_0x5c006e){logger[_0x4c79('0x2a')](_0x4c79('0x37'),'afterCreate',_0x5c006e[_0x4c79('0x38')]);});}}});})[_0x4c79('0x1a')](function(){return _0x47d86c[_0x4c79('0x39')][_0x4c79('0x2d')]({'attributes':['id',_0x4c79('0x2f')],'include':[{'model':_0x47d86c[_0x4c79('0x30')],'as':_0x4c79('0x31'),'where':{'id':_0x192f2b[_0x4c79('0x1f')]}}]})[_0x4c79('0x1a')](function(_0x57bb8a){if(_0x57bb8a){var _0x1c77e4=[];for(var _0x2df44b=0x0,_0x52bbe3;_0x2df44b<_0x57bb8a['length'];_0x2df44b+=0x1){_0x52bbe3=_0x57bb8a[_0x2df44b]['get']({'plain':!![]});switch(_0x52bbe3['dialCheckDuplicateType']){case _0x4c79('0x3a'):_0x78fd05(_0x52bbe3)[_0x4c79('0x25')](_0x100119());break;case _0x4c79('0x34'):_0xd5cf37(_0x52bbe3)['catch'](_0x100119());break;default:_0x47d86c[_0x4c79('0x18')][_0x4c79('0x1e')]({'phone':_0x192f2b[_0x4c79('0xc')],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'scheduledat':_0x192f2b[_0x4c79('0x21')]?_0x192f2b[_0x4c79('0x21')]:moment()[_0x4c79('0x22')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x192f2b[_0x4c79('0x20')]?_0x192f2b['priority']:0x2,'callback':_0x192f2b[_0x4c79('0x24')]?!![]:![],'callbackuniqueid':_0x192f2b[_0x4c79('0x24')]?_0x192f2b[_0x4c79('0x24')]:undefined,'callbackat':_0x192f2b[_0x4c79('0x24')]?moment()[_0x4c79('0x22')](_0x4c79('0x23')):undefined,'CampaignId':_0x52bbe3['id']})[_0x4c79('0x25')](_0x100119());}}}});})['then'](function(){return _0x47d86c[_0x4c79('0x39')][_0x4c79('0x2d')]({'attributes':['id'],'include':[{'model':_0x47d86c[_0x4c79('0x30')],'as':'BlackLists','where':{'id':_0x192f2b[_0x4c79('0x1f')]}}]})[_0x4c79('0x1a')](function(_0x3473d8){if(_0x3473d8){var _0x335464=[];for(var _0x2072b1=0x0,_0x40c3c0;_0x2072b1<_0x3473d8[_0x4c79('0x32')];_0x2072b1+=0x1){_0x40c3c0=_0x3473d8[_0x2072b1]['get']({'plain':!![]});_0x47d86c[_0x4c79('0x36')][_0x4c79('0x1e')]({'phone':_0x192f2b['phone'],'ContactId':_0x192f2b['id'],'ListId':_0x192f2b[_0x4c79('0x1f')],'CampaignId':_0x40c3c0['id']})[_0x4c79('0x25')](function(_0x4599bd){logger[_0x4c79('0x2a')](_0x4c79('0x37'),_0x4c79('0x16'),_0x4599bd[_0x4c79('0x38')]);});}}});})[_0x4c79('0x1a')](function(){_0x3a4d88();})[_0x4c79('0x25')](function(_0x5a0b3b){logger[_0x4c79('0x2a')](_0x4c79('0x37'),_0x4c79('0x16'),_0x5a0b3b[_0x4c79('0x38')]);_0x3a4d88(_0x5a0b3b);});}else{_0x3a4d88(new Error(_0x4c79('0x3b')));}},'afterDestroy':function(_0x494869,_0x54d3f9,_0x36d80c){var _0x528055=_0x32a445[_0x4c79('0x14')];var _0x59aba1=_0x494869[_0x4c79('0x33')]({'plain':!![]});return _0x528055[_0x4c79('0x18')][_0x4c79('0x2d')]({'raw':!![],'where':{'ListId':_0x59aba1[_0x4c79('0x1f')],'ContactId':_0x59aba1['id']}})['then'](function(_0x2228ff){if(!_[_0x4c79('0x3c')](_0x2228ff)){var _0x557f40=[];for(var _0x6c161b=0x0;_0x6c161b<_0x2228ff[_0x4c79('0x32')];_0x6c161b+=0x1){var _0x424779=_0x528055[_0x4c79('0x18')][_0x4c79('0x3d')]({'where':{'ListId':_0x2228ff[_0x6c161b][_0x4c79('0x1f')],'ContactId':_0x2228ff[_0x6c161b][_0x4c79('0x3e')],'VoiceQueueId':_0x2228ff[_0x6c161b][_0x4c79('0x3f')],'CampaignId':_0x2228ff[_0x6c161b][_0x4c79('0x40')]}});_0x557f40[_0x4c79('0x41')](_0x424779);}return BPromise[_0x4c79('0x42')](_0x557f40);}})[_0x4c79('0x1a')](function(_0x458ecf){logger[_0x4c79('0x43')]('[CmContact][afterDestroy][Succesfull]',util[_0x4c79('0x17')](_0x458ecf,{'showHidden':![],'depth':null}));_0x36d80c();})[_0x4c79('0x25')](function(_0x51d9c2){logger[_0x4c79('0x2a')](_0x4c79('0x44'),util[_0x4c79('0x17')](_0x51d9c2,{'showHidden':![],'depth':null}));_0x36d80c(_0x51d9c2);});}}});};
\ No newline at end of file
index 3c41b70..f582b1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4799=['sequelize','query','lodash','util','moment','randomstring','ioredis','squel','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','register','request','info','CmContact,\x20%s,\x20%s','request\x20sent','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','attributes','limit','include','map','model','debug','stringify','CreateCmContact','create','body','raw','then','keys','length','cf_','table','cm_contacts','set','id\x20=\x20?'];(function(_0x51674a,_0x77ccff){var _0x13fca6=function(_0x3d6c27){while(--_0x3d6c27){_0x51674a['push'](_0x51674a['shift']());}};_0x13fca6(++_0x77ccff);}(_0x4799,0x10b));var _0x9479=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x4799[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x9479('0x0'));var util=require(_0x9479('0x1'));var moment=require(_0x9479('0x2'));var BPromise=require('bluebird');var rs=require(_0x9479('0x3'));var fs=require('fs');var Redis=require(_0x9479('0x4'));var squel=require(_0x9479('0x5'));var db=require(_0x9479('0x6'))['db'];var utils=require(_0x9479('0x7'));var logger=require(_0x9479('0x8'))('rpc');var config=require(_0x9479('0x9'));var jayson=require(_0x9479('0xa'));var client=jayson[_0x9479('0xb')][_0x9479('0xc')]({'port':0x232a});config[_0x9479('0xd')]=_[_0x9479('0xe')](config[_0x9479('0xd')],{'host':_0x9479('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9479('0xd')]));require('./cmContact.socket')[_0x9479('0x10')](socket);function respondWithRpcPromise(_0x4896dc,_0x20809b,_0x5a1797){return new BPromise(function(_0x1ed42c,_0x5b9312){return client[_0x9479('0x11')](_0x4896dc,_0x5a1797)['then'](function(_0x206cdc){logger[_0x9479('0x12')](_0x9479('0x13'),_0x20809b,_0x9479('0x14'));logger['debug'](_0x9479('0x15'),_0x20809b,_0x9479('0x14'),JSON['stringify'](_0x206cdc));if(_0x206cdc['error']){if(_0x206cdc[_0x9479('0x16')][_0x9479('0x17')]===0x1f4){logger[_0x9479('0x16')](_0x9479('0x13'),_0x20809b,_0x206cdc['error'][_0x9479('0x18')]);return _0x5b9312(_0x206cdc[_0x9479('0x16')]['message']);}logger[_0x9479('0x16')]('CmContact,\x20%s,\x20%s',_0x20809b,_0x206cdc[_0x9479('0x16')]['message']);return _0x1ed42c(_0x206cdc['error'][_0x9479('0x18')]);}else{logger[_0x9479('0x12')](_0x9479('0x13'),_0x20809b,_0x9479('0x14'));_0x1ed42c(_0x206cdc[_0x9479('0x19')]['message']);}})[_0x9479('0x1a')](function(_0x13e030){logger[_0x9479('0x16')](_0x9479('0x13'),_0x20809b,_0x13e030);_0x5b9312(_0x13e030);});});}exports[_0x9479('0x1b')]=function(_0xe146dc){var _0x4370e8=this;return new Promise(function(_0x2a5204,_0x38066a){return db[_0x9479('0x1c')][_0x9479('0x1d')]({'raw':_0xe146dc[_0x9479('0x1e')]?_0xe146dc[_0x9479('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0xe146dc[_0x9479('0x1e')]?_0xe146dc[_0x9479('0x1e')][_0x9479('0x1f')]||null:null,'attributes':_0xe146dc[_0x9479('0x1e')]?_0xe146dc['options'][_0x9479('0x20')]||null:null,'limit':_0xe146dc[_0x9479('0x1e')]?_0xe146dc['options'][_0x9479('0x21')]||null:null,'include':_0xe146dc[_0x9479('0x1e')]?_0xe146dc[_0x9479('0x1e')][_0x9479('0x22')]?_[_0x9479('0x23')](_0xe146dc['options'][_0x9479('0x22')],function(_0x85d944){return{'model':db[_0x85d944['model']],'as':_0x85d944['as'],'attributes':_0x85d944[_0x9479('0x20')],'include':_0x85d944[_0x9479('0x22')]?_[_0x9479('0x23')](_0x85d944[_0x9479('0x22')],function(_0x3d7e0e){return{'model':db[_0x3d7e0e['model']],'as':_0x3d7e0e['as'],'attributes':_0x3d7e0e[_0x9479('0x20')],'include':_0x3d7e0e[_0x9479('0x22')]?_[_0x9479('0x23')](_0x3d7e0e['include'],function(_0x299e84){return{'model':db[_0x299e84[_0x9479('0x24')]],'as':_0x299e84['as'],'attributes':_0x299e84[_0x9479('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4df043){logger[_0x9479('0x12')]('GetCmContact',_0xe146dc);logger[_0x9479('0x25')]('GetCmContact',_0xe146dc,JSON[_0x9479('0x26')](_0x4df043));_0x2a5204(_0x4df043);})[_0x9479('0x1a')](function(_0x1069c){logger[_0x9479('0x16')](_0x9479('0x1b'),_0x1069c[_0x9479('0x18')],_0xe146dc);_0x38066a(_0x4370e8[_0x9479('0x16')](0x1f4,_0x1069c[_0x9479('0x18')]));});});};exports[_0x9479('0x27')]=function(_0x1df552){var _0x170819=this;return new Promise(function(_0x1020dd,_0x53c7ab){return db[_0x9479('0x1c')][_0x9479('0x28')](_0x1df552[_0x9479('0x29')],{'raw':_0x1df552[_0x9479('0x1e')]?_0x1df552[_0x9479('0x1e')][_0x9479('0x2a')]===undefined?!![]:![]:!![]})[_0x9479('0x2b')](function(_0x317baf){var _0x5c9c5e;for(var _0x4c7daf=0x0;_0x4c7daf<Object[_0x9479('0x2c')](_0x1df552['body'])[_0x9479('0x2d')];_0x4c7daf++){var _0x5dcd1e=Object[_0x9479('0x2c')](_0x1df552[_0x9479('0x29')])[_0x4c7daf];if(_0x5dcd1e['startsWith'](_0x9479('0x2e'))){_0x5c9c5e=squel['update']()[_0x9479('0x2f')](_0x9479('0x30'))[_0x9479('0x31')](_0x5dcd1e,_0x1df552[_0x9479('0x29')][_0x5dcd1e])['where'](_0x9479('0x32'),_0x317baf['id'])['toString']();break;}}if(!_0x5c9c5e)return _0x317baf;return db[_0x9479('0x33')][_0x9479('0x34')](_0x5c9c5e)[_0x9479('0x2b')](function(){return _0x317baf;});})[_0x9479('0x2b')](function(_0x3270b0){logger['info'](_0x9479('0x27'),_0x1df552);logger[_0x9479('0x25')](_0x9479('0x27'),_0x1df552,JSON[_0x9479('0x26')](_0x3270b0));_0x1020dd(_0x3270b0);})[_0x9479('0x1a')](function(_0x3133a6){logger[_0x9479('0x16')](_0x9479('0x27'),_0x3133a6[_0x9479('0x18')],_0x1df552);_0x53c7ab(_0x170819[_0x9479('0x16')](0x1f4,_0x3133a6[_0x9479('0x18')]));});});};
\ No newline at end of file
+var _0x0aa1=['toString','sequelize','query','CreateCmContact','lodash','util','moment','randomstring','ioredis','squel','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','request','info','CmContact,\x20%s,\x20%s','debug','CmContact,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetCmContact','CmContact','findAll','raw','options','limit','include','model','map','attributes','then','keys','body','length','startsWith','update','table','set','where','id\x20=\x20?'];(function(_0x40e44,_0x47c229){var _0x3c8678=function(_0x3145b4){while(--_0x3145b4){_0x40e44['push'](_0x40e44['shift']());}};_0x3c8678(++_0x47c229);}(_0x0aa1,0x6c));var _0x10aa=function(_0x69e52c,_0x4291d5){_0x69e52c=_0x69e52c-0x0;var _0x26260e=_0x0aa1[_0x69e52c];return _0x26260e;};'use strict';var _=require(_0x10aa('0x0'));var util=require(_0x10aa('0x1'));var moment=require(_0x10aa('0x2'));var BPromise=require('bluebird');var rs=require(_0x10aa('0x3'));var fs=require('fs');var Redis=require(_0x10aa('0x4'));var squel=require(_0x10aa('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x10aa('0x6'))(_0x10aa('0x7'));var config=require(_0x10aa('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x10aa('0x9')]['http']({'port':0x232a});config[_0x10aa('0xa')]=_[_0x10aa('0xb')](config[_0x10aa('0xa')],{'host':_0x10aa('0xc'),'port':0x18eb});var socket=require(_0x10aa('0xd'))(new Redis(config[_0x10aa('0xa')]));require(_0x10aa('0xe'))[_0x10aa('0xf')](socket);function respondWithRpcPromise(_0x31c118,_0x7cb17b,_0x3a6352){return new BPromise(function(_0x36db0d,_0x40f7b8){return client[_0x10aa('0x10')](_0x31c118,_0x3a6352)['then'](function(_0x13a14c){logger[_0x10aa('0x11')](_0x10aa('0x12'),_0x7cb17b,'request\x20sent');logger[_0x10aa('0x13')](_0x10aa('0x14'),_0x7cb17b,_0x10aa('0x15'),JSON[_0x10aa('0x16')](_0x13a14c));if(_0x13a14c[_0x10aa('0x17')]){if(_0x13a14c[_0x10aa('0x17')][_0x10aa('0x18')]===0x1f4){logger[_0x10aa('0x17')]('CmContact,\x20%s,\x20%s',_0x7cb17b,_0x13a14c[_0x10aa('0x17')]['message']);return _0x40f7b8(_0x13a14c[_0x10aa('0x17')][_0x10aa('0x19')]);}logger['error']('CmContact,\x20%s,\x20%s',_0x7cb17b,_0x13a14c[_0x10aa('0x17')]['message']);return _0x36db0d(_0x13a14c[_0x10aa('0x17')]['message']);}else{logger[_0x10aa('0x11')](_0x10aa('0x12'),_0x7cb17b,_0x10aa('0x15'));_0x36db0d(_0x13a14c[_0x10aa('0x1a')][_0x10aa('0x19')]);}})[_0x10aa('0x1b')](function(_0x25d8b1){logger[_0x10aa('0x17')](_0x10aa('0x12'),_0x7cb17b,_0x25d8b1);_0x40f7b8(_0x25d8b1);});});}exports[_0x10aa('0x1c')]=function(_0xfe96e6){var _0x4f4b3d=this;return new Promise(function(_0x2155be,_0x50061e){return db[_0x10aa('0x1d')][_0x10aa('0x1e')]({'raw':_0xfe96e6['options']?_0xfe96e6['options'][_0x10aa('0x1f')]===undefined?!![]:![]:!![],'where':_0xfe96e6[_0x10aa('0x20')]?_0xfe96e6['options']['where']||null:null,'attributes':_0xfe96e6[_0x10aa('0x20')]?_0xfe96e6[_0x10aa('0x20')]['attributes']||null:null,'limit':_0xfe96e6[_0x10aa('0x20')]?_0xfe96e6[_0x10aa('0x20')][_0x10aa('0x21')]||null:null,'include':_0xfe96e6['options']?_0xfe96e6['options']['include']?_['map'](_0xfe96e6[_0x10aa('0x20')][_0x10aa('0x22')],function(_0x526b44){return{'model':db[_0x526b44[_0x10aa('0x23')]],'as':_0x526b44['as'],'attributes':_0x526b44['attributes'],'include':_0x526b44[_0x10aa('0x22')]?_['map'](_0x526b44[_0x10aa('0x22')],function(_0xfcc232){return{'model':db[_0xfcc232[_0x10aa('0x23')]],'as':_0xfcc232['as'],'attributes':_0xfcc232['attributes'],'include':_0xfcc232[_0x10aa('0x22')]?_[_0x10aa('0x24')](_0xfcc232[_0x10aa('0x22')],function(_0x36ff10){return{'model':db[_0x36ff10[_0x10aa('0x23')]],'as':_0x36ff10['as'],'attributes':_0x36ff10[_0x10aa('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5ce6d3){logger[_0x10aa('0x11')]('GetCmContact',_0xfe96e6);logger['debug'](_0x10aa('0x1c'),_0xfe96e6,JSON[_0x10aa('0x16')](_0x5ce6d3));_0x2155be(_0x5ce6d3);})['catch'](function(_0x5d9f3f){logger[_0x10aa('0x17')](_0x10aa('0x1c'),_0x5d9f3f[_0x10aa('0x19')],_0xfe96e6);_0x50061e(_0x4f4b3d['error'](0x1f4,_0x5d9f3f[_0x10aa('0x19')]));});});};exports['CreateCmContact']=function(_0x4ff6d5){var _0x229b67=this;return new Promise(function(_0x253705,_0x2c8841){return db['CmContact']['create'](_0x4ff6d5['body'],{'raw':_0x4ff6d5[_0x10aa('0x20')]?_0x4ff6d5[_0x10aa('0x20')][_0x10aa('0x1f')]===undefined?!![]:![]:!![]})[_0x10aa('0x26')](function(_0x3f9ad5){var _0x2bf142;for(var _0x1e2fe1=0x0;_0x1e2fe1<Object[_0x10aa('0x27')](_0x4ff6d5[_0x10aa('0x28')])[_0x10aa('0x29')];_0x1e2fe1++){var _0x4edede=Object[_0x10aa('0x27')](_0x4ff6d5[_0x10aa('0x28')])[_0x1e2fe1];if(_0x4edede[_0x10aa('0x2a')]('cf_')){_0x2bf142=squel[_0x10aa('0x2b')]()[_0x10aa('0x2c')]('cm_contacts')[_0x10aa('0x2d')](_0x4edede,_0x4ff6d5[_0x10aa('0x28')][_0x4edede])[_0x10aa('0x2e')](_0x10aa('0x2f'),_0x3f9ad5['id'])[_0x10aa('0x30')]();break;}}if(!_0x2bf142)return _0x3f9ad5;return db[_0x10aa('0x31')][_0x10aa('0x32')](_0x2bf142)[_0x10aa('0x26')](function(){return _0x3f9ad5;});})[_0x10aa('0x26')](function(_0x9a572b){logger[_0x10aa('0x11')]('CreateCmContact',_0x4ff6d5);logger[_0x10aa('0x13')](_0x10aa('0x33'),_0x4ff6d5,JSON[_0x10aa('0x16')](_0x9a572b));_0x253705(_0x9a572b);})['catch'](function(_0x526904){logger[_0x10aa('0x17')](_0x10aa('0x33'),_0x526904[_0x10aa('0x19')],_0x4ff6d5);_0x2c8841(_0x229b67[_0x10aa('0x17')](0x1f4,_0x526904[_0x10aa('0x19')]));});});};
\ No newline at end of file
index 7f303a8..cdec0c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 2459691..6cf6736 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09e5=['single','file','server/files/tmp','/upload','import','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','getTags','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','/create_many','bulkCreate','/:id/tags','setTags','join','root','originalname','replace','format','%s-%s%s','basename','now','extname','/csv'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x09e5,0x1a8));var _0x509e=function(_0x196c66,_0x64f618){_0x196c66=_0x196c66-0x0;var _0x27c9bf=_0x09e5[_0x196c66];return _0x27c9bf;};'use strict';var multer=require(_0x509e('0x0'));var util=require(_0x509e('0x1'));var path=require(_0x509e('0x2'));var timeout=require(_0x509e('0x3'));var express=require(_0x509e('0x4'));var router=express[_0x509e('0x5')]();var fs_extra=require(_0x509e('0x6'));var auth=require(_0x509e('0x7'));var interaction=require(_0x509e('0x8'));var config=require(_0x509e('0x9'));var controller=require('./cmContact.controller');router[_0x509e('0xa')]('/',auth[_0x509e('0xb')](),controller[_0x509e('0xc')]);router[_0x509e('0xa')]('/describe',auth[_0x509e('0xb')](),controller[_0x509e('0xd')]);router['get'](_0x509e('0xe'),auth[_0x509e('0xb')](),controller[_0x509e('0xf')]);router['get']('/:id/tags',auth[_0x509e('0xb')](),controller[_0x509e('0x10')]);router['get'](_0x509e('0x11'),auth[_0x509e('0xb')](),controller[_0x509e('0x12')]);router[_0x509e('0xa')]('/:id/hopper_histories',auth[_0x509e('0xb')](),controller[_0x509e('0x13')]);router[_0x509e('0xa')](_0x509e('0x14'),auth[_0x509e('0xb')](),controller[_0x509e('0x15')]);router[_0x509e('0xa')](_0x509e('0x16'),auth[_0x509e('0xb')](),controller[_0x509e('0x17')]);router[_0x509e('0xa')](_0x509e('0x18'),auth[_0x509e('0xb')](),controller[_0x509e('0x19')]);router[_0x509e('0x1a')](_0x509e('0x1b'),auth[_0x509e('0xb')](),controller[_0x509e('0x1c')]);router[_0x509e('0x1a')]('/',auth['isAuthenticated'](),controller[_0x509e('0x1d')]);router[_0x509e('0x1a')](_0x509e('0x1e'),auth[_0x509e('0xb')](),controller[_0x509e('0x1f')]);router[_0x509e('0x1a')](_0x509e('0x20'),auth[_0x509e('0xb')](),controller[_0x509e('0x21')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x54642e,_0x4e37bf,_0x231134){_0x231134(null,path[_0x509e('0x22')](config[_0x509e('0x23')],'server/files/tmp'));},'filename':function(_0x18b174,_0x5d51e4,_0x1eb133){_0x5d51e4['originalname']=_0x5d51e4[_0x509e('0x24')][_0x509e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1eb133(null,util[_0x509e('0x26')](_0x509e('0x27'),path[_0x509e('0x28')](_0x5d51e4[_0x509e('0x24')],path['extname'](_0x5d51e4['originalname'])),Date[_0x509e('0x29')](),path[_0x509e('0x2a')](_0x5d51e4[_0x509e('0x24')])));}})});router[_0x509e('0x1a')](_0x509e('0x2b'),upload[_0x509e('0x2c')](_0x509e('0x2d')),controller['uploadCsv']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x302a31,_0x35a378,_0x36bc73){_0x36bc73(null,path['join'](config[_0x509e('0x23')],_0x509e('0x2e')));},'filename':function(_0x1c90c8,_0x19bf98,_0x3fd843){_0x19bf98[_0x509e('0x24')]=_0x19bf98[_0x509e('0x24')][_0x509e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3fd843(null,util[_0x509e('0x26')](_0x509e('0x27'),path[_0x509e('0x28')](_0x19bf98[_0x509e('0x24')],path['extname'](_0x19bf98[_0x509e('0x24')])),Date['now'](),path[_0x509e('0x2a')](_0x19bf98[_0x509e('0x24')])));}})});router[_0x509e('0x1a')](_0x509e('0x2f'),upload[_0x509e('0x2c')]('file'),controller['upload']);router[_0x509e('0x1a')]('/upload/:id',auth[_0x509e('0xb')](),controller[_0x509e('0x30')]);router[_0x509e('0x31')](_0x509e('0xe'),auth[_0x509e('0xb')](),controller[_0x509e('0x32')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x509e('0x33')]=router;
\ No newline at end of file
+var _0xed89=['getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','/create_many','bulkCreate','join','root','server/files/tmp','originalname','replace','extname','now','/csv','single','file','uploadCsv','diskStorage','format','%s-%s%s','basename','/upload','upload','/upload/:id','import','put','update','delete','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','./cmContact.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions'];(function(_0x19566c,_0x285ed7){var _0xcbe110=function(_0x2587f6){while(--_0x2587f6){_0x19566c['push'](_0x19566c['shift']());}};_0xcbe110(++_0x285ed7);}(_0xed89,0x89));var _0x9ed8=function(_0x4c589f,_0x37ff18){_0x4c589f=_0x4c589f-0x0;var _0xbf2358=_0xed89[_0x4c589f];return _0xbf2358;};'use strict';var multer=require(_0x9ed8('0x0'));var util=require(_0x9ed8('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9ed8('0x2'));var router=express[_0x9ed8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9ed8('0x4'));var interaction=require(_0x9ed8('0x5'));var config=require('../../config/environment');var controller=require(_0x9ed8('0x6'));router[_0x9ed8('0x7')]('/',auth['isAuthenticated'](),controller[_0x9ed8('0x8')]);router[_0x9ed8('0x7')](_0x9ed8('0x9'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0xb')]);router[_0x9ed8('0x7')](_0x9ed8('0xc'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0xd')]);router['get'](_0x9ed8('0xe'),auth['isAuthenticated'](),controller[_0x9ed8('0xf')]);router['get'](_0x9ed8('0x10'),auth['isAuthenticated'](),controller[_0x9ed8('0x11')]);router[_0x9ed8('0x7')](_0x9ed8('0x12'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0x9ed8('0x7')](_0x9ed8('0x13'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x14')]);router[_0x9ed8('0x7')](_0x9ed8('0x15'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x16')]);router[_0x9ed8('0x7')](_0x9ed8('0x17'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x18')]);router[_0x9ed8('0x19')](_0x9ed8('0x1a'),auth['isAuthenticated'](),controller[_0x9ed8('0x1b')]);router['post']('/',auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x1c')]);router[_0x9ed8('0x19')](_0x9ed8('0x1d'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x1e')]);router['post'](_0x9ed8('0xe'),auth[_0x9ed8('0xa')](),controller['setTags']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1437f3,_0x175ab0,_0x556d5f){_0x556d5f(null,path[_0x9ed8('0x1f')](config[_0x9ed8('0x20')],_0x9ed8('0x21')));},'filename':function(_0x3839cb,_0x333b49,_0x5d93ea){_0x333b49[_0x9ed8('0x22')]=_0x333b49['originalname'][_0x9ed8('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5d93ea(null,util['format']('%s-%s%s',path['basename'](_0x333b49[_0x9ed8('0x22')],path[_0x9ed8('0x24')](_0x333b49['originalname'])),Date[_0x9ed8('0x25')](),path['extname'](_0x333b49[_0x9ed8('0x22')])));}})});router[_0x9ed8('0x19')](_0x9ed8('0x26'),upload[_0x9ed8('0x27')](_0x9ed8('0x28')),controller[_0x9ed8('0x29')]);var upload=multer({'storage':multer[_0x9ed8('0x2a')]({'destination':function(_0x2f6fd7,_0x5c3c05,_0x1ca22a){_0x1ca22a(null,path[_0x9ed8('0x1f')](config[_0x9ed8('0x20')],_0x9ed8('0x21')));},'filename':function(_0xed9011,_0x381e7b,_0x2bfbdf){_0x381e7b[_0x9ed8('0x22')]=_0x381e7b['originalname'][_0x9ed8('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2bfbdf(null,util[_0x9ed8('0x2b')](_0x9ed8('0x2c'),path[_0x9ed8('0x2d')](_0x381e7b['originalname'],path[_0x9ed8('0x24')](_0x381e7b[_0x9ed8('0x22')])),Date[_0x9ed8('0x25')](),path[_0x9ed8('0x24')](_0x381e7b[_0x9ed8('0x22')])));}})});router[_0x9ed8('0x19')](_0x9ed8('0x2e'),upload[_0x9ed8('0x27')](_0x9ed8('0x28')),controller[_0x9ed8('0x2f')]);router[_0x9ed8('0x19')](_0x9ed8('0x30'),auth[_0x9ed8('0xa')](),controller[_0x9ed8('0x31')]);router[_0x9ed8('0x32')]('/:id',auth['isAuthenticated'](),controller[_0x9ed8('0x33')]);router[_0x9ed8('0x34')](_0x9ed8('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b16b1f2..5961922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6521=['stringify','BOOLEAN','ENUM','voice','sequelize','lodash','exports','VIRTUAL','getDataValue','alias','STRING','name','type','select','parse','values','isArray','setDataValue'];(function(_0x45b232,_0x41e26a){var _0x4df393=function(_0x1e9f3e){while(--_0x1e9f3e){_0x45b232['push'](_0x45b232['shift']());}};_0x4df393(++_0x41e26a);}(_0x6521,0x100));var _0x1652=function(_0x3de8a2,_0x1c8615){_0x3de8a2=_0x3de8a2-0x0;var _0x267573=_0x6521[_0x3de8a2];return _0x267573;};'use strict';var Sequelize=require(_0x1652('0x0'));var _=require(_0x1652('0x1'));module[_0x1652('0x2')]={'name':{'type':Sequelize[_0x1652('0x3')],'get':function(_0x79ec70){return this[_0x1652('0x4')](_0x1652('0x5'));}},'alias':{'type':Sequelize[_0x1652('0x6')],'allowNull':![],'set':function(_0x3efabf){this['setDataValue'](_0x1652('0x5'),_0x3efabf?_0x3efabf:this[_0x1652('0x4')](_0x1652('0x7')));}},'type':{'type':Sequelize[_0x1652('0x6')],'allowNull':![]},'values':{'type':Sequelize['TEXT']('long'),'get':function(){if(this[_0x1652('0x4')](_0x1652('0x8'))===_0x1652('0x9')){return JSON[_0x1652('0xa')](this['getDataValue'](_0x1652('0xb')));}else{return this['getDataValue'](_0x1652('0xb'));}},'set':function(_0x43270f){if(Array[_0x1652('0xc')](_0x43270f)){this[_0x1652('0xd')](_0x1652('0xb'),JSON[_0x1652('0xe')](_0x43270f));}else{this[_0x1652('0xd')]('values',_0x43270f);}}},'required':{'type':Sequelize[_0x1652('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x1652('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x1652('0x10')](_0x1652('0x11'))}};
\ No newline at end of file
+var _0xe873=['values','stringify','BOOLEAN','sequelize','exports','VIRTUAL','alias','STRING','setDataValue','getDataValue','TEXT','long','type','select','parse'];(function(_0x26ff41,_0x539fc2){var _0x1908a9=function(_0x125a30){while(--_0x125a30){_0x26ff41['push'](_0x26ff41['shift']());}};_0x1908a9(++_0x539fc2);}(_0xe873,0xf3));var _0x3e87=function(_0x57fa4a,_0x3919f6){_0x57fa4a=_0x57fa4a-0x0;var _0x4c4237=_0xe873[_0x57fa4a];return _0x4c4237;};'use strict';var Sequelize=require(_0x3e87('0x0'));var _=require('lodash');module[_0x3e87('0x1')]={'name':{'type':Sequelize[_0x3e87('0x2')],'get':function(_0x453342){return this['getDataValue'](_0x3e87('0x3'));}},'alias':{'type':Sequelize[_0x3e87('0x4')],'allowNull':![],'set':function(_0x30faa7){this[_0x3e87('0x5')](_0x3e87('0x3'),_0x30faa7?_0x30faa7:this[_0x3e87('0x6')]('name'));}},'type':{'type':Sequelize[_0x3e87('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0x3e87('0x7')](_0x3e87('0x8')),'get':function(){if(this[_0x3e87('0x6')](_0x3e87('0x9'))===_0x3e87('0xa')){return JSON[_0x3e87('0xb')](this['getDataValue'](_0x3e87('0xc')));}else{return this[_0x3e87('0x6')]('values');}},'set':function(_0x415994){if(Array['isArray'](_0x415994)){this['setDataValue'](_0x3e87('0xc'),JSON[_0x3e87('0xd')](_0x415994));}else{this[_0x3e87('0x5')]('values',_0x415994);}}},'required':{'type':Sequelize[_0x3e87('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x3e87('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM']('voice')}};
\ No newline at end of file
index a4cd1c0..c83b4b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e7c=['limit','count','status','set','Content-Range','apply','save','update','then','error','stack','name','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','filter','where','merge','VIRTUAL','options','includeAll','show','params','length','include','find','catch','body','destroy','create','sequelize','transaction','TEXT','Sequelize','number','INTEGER','switch','defaultValue','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset','undefined'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5e7c,0x91));var _0xc5e7=function(_0x5b4cc1,_0x20f414){_0x5b4cc1=_0x5b4cc1-0x0;var _0x4f012c=_0x5e7c[_0x5b4cc1];return _0x4f012c;};'use strict';var emlformat=require(_0xc5e7('0x0'));var rimraf=require(_0xc5e7('0x1'));var zipdir=require(_0xc5e7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc5e7('0x3'));var moment=require(_0xc5e7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc5e7('0x5'));var util=require(_0xc5e7('0x6'));var path=require(_0xc5e7('0x7'));var sox=require(_0xc5e7('0x8'));var csv=require(_0xc5e7('0x9'));var ejs=require(_0xc5e7('0xa'));var fs=require('fs');var fs_extra=require(_0xc5e7('0xb'));var _=require(_0xc5e7('0xc'));var squel=require('squel');var crypto=require(_0xc5e7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc5e7('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc5e7('0xf'));var Papa=require(_0xc5e7('0x10'));var Redis=require(_0xc5e7('0x11'));var authService=require(_0xc5e7('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc5e7('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc5e7('0x14'));var utils=require(_0xc5e7('0x15'));var config=require(_0xc5e7('0x16'));var licenseUtil=require(_0xc5e7('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x146089,_0x25422d){_0x25422d=_0x25422d||0xcc;return function(_0x3107a5){if(_0x3107a5){return _0x146089[_0xc5e7('0x18')](_0x25422d);}return _0x146089['status'](_0x25422d)[_0xc5e7('0x19')]();};}function respondWithResult(_0x41d0b7,_0x2b3844){_0x2b3844=_0x2b3844||0xc8;return function(_0x4ae392){if(_0x4ae392){return _0x41d0b7['status'](_0x2b3844)[_0xc5e7('0x1a')](_0x4ae392);}};}function respondWithFilteredResult(_0x5436d0,_0x36c097){return function(_0x35a410){if(_0x35a410){var _0x324388=typeof _0x36c097[_0xc5e7('0x1b')]===_0xc5e7('0x1c')&&typeof _0x36c097[_0xc5e7('0x1d')]===_0xc5e7('0x1c');var _0x380c99=_0x35a410[_0xc5e7('0x1e')];var _0x29c70d=_0x324388?0x0:_0x36c097[_0xc5e7('0x1b')];var _0x49115d=_0x324388?_0x35a410[_0xc5e7('0x1e')]:_0x36c097['offset']+_0x36c097['limit'];var _0x5d1b56;if(_0x49115d>=_0x380c99){_0x49115d=_0x380c99;_0x5d1b56=0xc8;}else{_0x5d1b56=0xce;}_0x5436d0[_0xc5e7('0x1f')](_0x5d1b56);return _0x5436d0[_0xc5e7('0x20')](_0xc5e7('0x21'),_0x29c70d+'-'+_0x49115d+'/'+_0x380c99)[_0xc5e7('0x1a')](_0x35a410);}return null;};}function patchUpdates(_0x824d2f){return function(_0x1a089f){try{jsonpatch[_0xc5e7('0x22')](_0x1a089f,_0x824d2f,!![]);}catch(_0x4bf462){return BPromise['reject'](_0x4bf462);}return _0x1a089f[_0xc5e7('0x23')]();};}function saveUpdates(_0x2e6e6d,_0xb25a51){return function(_0x2d9eeb){if(_0x2d9eeb){return _0x2d9eeb[_0xc5e7('0x24')](_0x2e6e6d)['then'](function(_0x29bbdf){return _0x29bbdf;});}return null;};}function removeEntity(_0x29b473,_0x35eeb8){return function(_0x30ad90){if(_0x30ad90){return _0x30ad90['destroy']()[_0xc5e7('0x25')](function(){_0x29b473[_0xc5e7('0x1f')](0xcc)[_0xc5e7('0x19')]();});}};}function handleEntityNotFound(_0x548ae3,_0x2d0439){return function(_0x3b6ec1){if(!_0x3b6ec1){_0x548ae3['sendStatus'](0x194);}return _0x3b6ec1;};}function handleError(_0x4aec38,_0x52f88d){_0x52f88d=_0x52f88d||0x1f4;return function(_0x1b109c){logger[_0xc5e7('0x26')](_0x1b109c[_0xc5e7('0x27')]);if(_0x1b109c[_0xc5e7('0x28')]){delete _0x1b109c[_0xc5e7('0x28')];}_0x4aec38['status'](_0x52f88d)['send'](_0x1b109c);};}exports[_0xc5e7('0x29')]=function(_0x10bb87,_0x45fb43){var _0x1d0622={},_0x5acb30={},_0x16fc38={'count':0x0,'rows':[]};var _0x5ab6e7=_[_0xc5e7('0x2a')](db[_0xc5e7('0x2b')][_0xc5e7('0x2c')],function(_0x5135f4){return{'name':_0x5135f4[_0xc5e7('0x2d')],'type':_0x5135f4[_0xc5e7('0x2e')][_0xc5e7('0x2f')]};});_0x5acb30[_0xc5e7('0x30')]=_[_0xc5e7('0x31')](_[_0xc5e7('0x2a')](_0x5ab6e7,_0xc5e7('0x28')),['name']);_0x5acb30[_0xc5e7('0x32')]=_[_0xc5e7('0x33')](_0x10bb87[_0xc5e7('0x32')]);_0x5acb30[_0xc5e7('0x34')]=_['intersection'](_0x5acb30[_0xc5e7('0x30')],_0x5acb30[_0xc5e7('0x32')]);_0x1d0622[_0xc5e7('0x35')]=_[_0xc5e7('0x36')](_0x5acb30['model'],qs[_0xc5e7('0x37')](_0x10bb87['query'][_0xc5e7('0x37')]));_0x1d0622[_0xc5e7('0x35')]=_0x1d0622[_0xc5e7('0x35')]['length']?_0x1d0622[_0xc5e7('0x35')]:_0x5acb30[_0xc5e7('0x30')];if(!_0x10bb87[_0xc5e7('0x32')][_0xc5e7('0x38')](_0xc5e7('0x39'))){_0x1d0622[_0xc5e7('0x1d')]=qs['limit'](_0x10bb87[_0xc5e7('0x32')][_0xc5e7('0x1d')]);_0x1d0622[_0xc5e7('0x1b')]=qs[_0xc5e7('0x1b')](_0x10bb87['query'][_0xc5e7('0x1b')]);}_0x1d0622['order']=qs[_0xc5e7('0x3a')](_0x10bb87['query'][_0xc5e7('0x3a')]);_0x1d0622['where']=qs['filters'](_['pick'](_0x10bb87[_0xc5e7('0x32')],_0x5acb30[_0xc5e7('0x34')]),_0x5ab6e7);if(_0x10bb87['query'][_0xc5e7('0x3b')]){_0x1d0622[_0xc5e7('0x3c')]=_[_0xc5e7('0x3d')](_0x1d0622['where'],{'$or':_[_0xc5e7('0x2a')](_0x5ab6e7,function(_0x4ffbe5){if(_0x4ffbe5[_0xc5e7('0x2e')]!==_0xc5e7('0x3e')){var _0x582247={};_0x582247[_0x4ffbe5[_0xc5e7('0x28')]]={'$like':'%'+_0x10bb87['query'][_0xc5e7('0x3b')]+'%'};return _0x582247;}})});}_0x1d0622=_[_0xc5e7('0x3d')]({},_0x1d0622,_0x10bb87[_0xc5e7('0x3f')]);var _0x240d56={'where':_0x1d0622[_0xc5e7('0x3c')]};return db['CmCustomField'][_0xc5e7('0x1e')](_0x240d56)[_0xc5e7('0x25')](function(_0x95835e){_0x16fc38[_0xc5e7('0x1e')]=_0x95835e;if(_0x10bb87['query'][_0xc5e7('0x40')]){_0x1d0622['include']=[{'all':!![]}];}return db[_0xc5e7('0x2b')]['findAll'](_0x1d0622);})[_0xc5e7('0x25')](function(_0x5796b8){_0x16fc38['rows']=_0x5796b8;return _0x16fc38;})[_0xc5e7('0x25')](respondWithFilteredResult(_0x45fb43,_0x1d0622))['catch'](handleError(_0x45fb43,null));};exports[_0xc5e7('0x41')]=function(_0x19b23c,_0x366159){var _0x393ace={'raw':!![],'where':{'id':_0x19b23c[_0xc5e7('0x42')]['id']}},_0x560866={};_0x560866[_0xc5e7('0x30')]=_[_0xc5e7('0x33')](db[_0xc5e7('0x2b')][_0xc5e7('0x2c')]);_0x560866['query']=_['keys'](_0x19b23c['query']);_0x560866[_0xc5e7('0x34')]=_['intersection'](_0x560866[_0xc5e7('0x30')],_0x560866[_0xc5e7('0x32')]);_0x393ace[_0xc5e7('0x35')]=_[_0xc5e7('0x36')](_0x560866[_0xc5e7('0x30')],qs[_0xc5e7('0x37')](_0x19b23c['query'][_0xc5e7('0x37')]));_0x393ace['attributes']=_0x393ace[_0xc5e7('0x35')][_0xc5e7('0x43')]?_0x393ace[_0xc5e7('0x35')]:_0x560866['model'];if(_0x19b23c[_0xc5e7('0x32')][_0xc5e7('0x40')]){_0x393ace[_0xc5e7('0x44')]=[{'all':!![]}];}_0x393ace=_[_0xc5e7('0x3d')]({},_0x393ace,_0x19b23c['options']);return db[_0xc5e7('0x2b')][_0xc5e7('0x45')](_0x393ace)[_0xc5e7('0x25')](handleEntityNotFound(_0x366159,null))[_0xc5e7('0x25')](respondWithResult(_0x366159,null))[_0xc5e7('0x46')](handleError(_0x366159,null));};exports[_0xc5e7('0x24')]=function(_0x2f34f7,_0x255d47){if(_0x2f34f7[_0xc5e7('0x47')]['id']){delete _0x2f34f7[_0xc5e7('0x47')]['id'];}return db['CmCustomField'][_0xc5e7('0x45')]({'where':{'id':_0x2f34f7[_0xc5e7('0x42')]['id']}})[_0xc5e7('0x25')](handleEntityNotFound(_0x255d47,null))[_0xc5e7('0x25')](saveUpdates(_0x2f34f7[_0xc5e7('0x47')],null))[_0xc5e7('0x25')](respondWithResult(_0x255d47,null))['catch'](handleError(_0x255d47,null));};exports[_0xc5e7('0x48')]=function(_0x54e21e,_0x477507){return db[_0xc5e7('0x2b')][_0xc5e7('0x45')]({'where':{'id':_0x54e21e[_0xc5e7('0x42')]['id']}})[_0xc5e7('0x25')](handleEntityNotFound(_0x477507,null))[_0xc5e7('0x25')](removeEntity(_0x477507,null))[_0xc5e7('0x46')](handleError(_0x477507,null));};exports[_0xc5e7('0x49')]=function(_0x8f2244,_0x57c16f){var _0x3867cc;return db[_0xc5e7('0x4a')][_0xc5e7('0x4b')](function(_0x34f0f7){return db[_0xc5e7('0x2b')][_0xc5e7('0x49')](_0x8f2244['body'],{'transaction':_0x34f0f7})[_0xc5e7('0x25')](function(_0x46141c){_0x3867cc=_0x46141c;var _0x5799f6={'type':db['Sequelize'][_0xc5e7('0x4c')],'transaction':_0x34f0f7};switch(_0x8f2244[_0xc5e7('0x47')]['type']){case'text':_0x5799f6[_0xc5e7('0x2e')]=db[_0xc5e7('0x4d')][_0xc5e7('0x4c')];break;case _0xc5e7('0x4e'):_0x5799f6[_0xc5e7('0x2e')]=db[_0xc5e7('0x4d')][_0xc5e7('0x4f')];break;case _0xc5e7('0x50'):_0x5799f6[_0xc5e7('0x2e')]=db[_0xc5e7('0x4d')]['BOOLEAN'];_0x5799f6[_0xc5e7('0x51')]=![];break;default:}return db[_0xc5e7('0x4a')][_0xc5e7('0x52')][_0xc5e7('0x53')](_0xc5e7('0x54'),util[_0xc5e7('0x55')](_0xc5e7('0x56'),_0x3867cc['id']),_0x5799f6);})[_0xc5e7('0x25')](function(){return _0x3867cc;});})['then'](respondWithResult(_0x57c16f,0xc9))[_0xc5e7('0x46')](handleError(_0x57c16f,null));};
\ No newline at end of file
+var _0xf686=['query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','find','body','sequelize','transaction','create','Sequelize','TEXT','number','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','map'];(function(_0xcd17a2,_0x488a0e){var _0x486d30=function(_0x198a8c){while(--_0x198a8c){_0xcd17a2['push'](_0xcd17a2['shift']());}};_0x486d30(++_0x488a0e);}(_0xf686,0x76));var _0x6f68=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf686[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x6f68('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6f68('0x1'));var jsonpatch=require(_0x6f68('0x2'));var rp=require('request-promise');var moment=require(_0x6f68('0x3'));var BPromise=require(_0x6f68('0x4'));var Mustache=require('mustache');var util=require(_0x6f68('0x5'));var path=require(_0x6f68('0x6'));var sox=require('sox');var csv=require(_0x6f68('0x7'));var ejs=require(_0x6f68('0x8'));var fs=require('fs');var fs_extra=require(_0x6f68('0x9'));var _=require(_0x6f68('0xa'));var squel=require('squel');var crypto=require(_0x6f68('0xb'));var jsforce=require(_0x6f68('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6f68('0x7'));var querystring=require('querystring');var Papa=require(_0x6f68('0xd'));var Redis=require('ioredis');var authService=require(_0x6f68('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x6f68('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6f68('0x10'))(_0x6f68('0x11'));var utils=require('../../config/utils');var config=require(_0x6f68('0x12'));var licenseUtil=require(_0x6f68('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2ff771,_0xfb75a){_0xfb75a=_0xfb75a||0xcc;return function(_0x4f1e5c){if(_0x4f1e5c){return _0x2ff771[_0x6f68('0x14')](_0xfb75a);}return _0x2ff771[_0x6f68('0x15')](_0xfb75a)[_0x6f68('0x16')]();};}function respondWithResult(_0x2c7183,_0x5df0a5){_0x5df0a5=_0x5df0a5||0xc8;return function(_0x5733df){if(_0x5733df){return _0x2c7183[_0x6f68('0x15')](_0x5df0a5)[_0x6f68('0x17')](_0x5733df);}};}function respondWithFilteredResult(_0x5ed84b,_0x40543d){return function(_0x1b8709){if(_0x1b8709){var _0x481811=typeof _0x40543d['offset']===_0x6f68('0x18')&&typeof _0x40543d['limit']===_0x6f68('0x18');var _0x357705=_0x1b8709[_0x6f68('0x19')];var _0x3210f9=_0x481811?0x0:_0x40543d[_0x6f68('0x1a')];var _0x5fe0ab=_0x481811?_0x1b8709['count']:_0x40543d[_0x6f68('0x1a')]+_0x40543d[_0x6f68('0x1b')];var _0x275632;if(_0x5fe0ab>=_0x357705){_0x5fe0ab=_0x357705;_0x275632=0xc8;}else{_0x275632=0xce;}_0x5ed84b['status'](_0x275632);return _0x5ed84b[_0x6f68('0x1c')]('Content-Range',_0x3210f9+'-'+_0x5fe0ab+'/'+_0x357705)[_0x6f68('0x17')](_0x1b8709);}return null;};}function patchUpdates(_0x3e4309){return function(_0x516eb2){try{jsonpatch[_0x6f68('0x1d')](_0x516eb2,_0x3e4309,!![]);}catch(_0x456bc7){return BPromise[_0x6f68('0x1e')](_0x456bc7);}return _0x516eb2[_0x6f68('0x1f')]();};}function saveUpdates(_0x3f53ab,_0x504577){return function(_0x30b0f8){if(_0x30b0f8){return _0x30b0f8[_0x6f68('0x20')](_0x3f53ab)[_0x6f68('0x21')](function(_0x11df7a){return _0x11df7a;});}return null;};}function removeEntity(_0x35077b,_0x15777d){return function(_0x2fbf93){if(_0x2fbf93){return _0x2fbf93[_0x6f68('0x22')]()[_0x6f68('0x21')](function(){_0x35077b[_0x6f68('0x15')](0xcc)[_0x6f68('0x16')]();});}};}function handleEntityNotFound(_0xd677ae,_0x5a948c){return function(_0x1762fc){if(!_0x1762fc){_0xd677ae['sendStatus'](0x194);}return _0x1762fc;};}function handleError(_0x5deac3,_0x1b980b){_0x1b980b=_0x1b980b||0x1f4;return function(_0x5456f4){logger[_0x6f68('0x23')](_0x5456f4[_0x6f68('0x24')]);if(_0x5456f4['name']){delete _0x5456f4[_0x6f68('0x25')];}_0x5deac3[_0x6f68('0x15')](_0x1b980b)[_0x6f68('0x26')](_0x5456f4);};}exports[_0x6f68('0x27')]=function(_0x1a4d55,_0x33af14){var _0x5c2e71={},_0x388eb2={},_0x5db88f={'count':0x0,'rows':[]};var _0x4270cc=_['map'](db[_0x6f68('0x28')][_0x6f68('0x29')],function(_0x538d4e){return{'name':_0x538d4e[_0x6f68('0x2a')],'type':_0x538d4e[_0x6f68('0x2b')][_0x6f68('0x2c')]};});_0x388eb2[_0x6f68('0x2d')]=_[_0x6f68('0x2e')](_[_0x6f68('0x2f')](_0x4270cc,_0x6f68('0x25')),[_0x6f68('0x25')]);_0x388eb2[_0x6f68('0x30')]=_['keys'](_0x1a4d55['query']);_0x388eb2[_0x6f68('0x31')]=_[_0x6f68('0x32')](_0x388eb2[_0x6f68('0x2d')],_0x388eb2[_0x6f68('0x30')]);_0x5c2e71[_0x6f68('0x33')]=_['intersection'](_0x388eb2[_0x6f68('0x2d')],qs['fields'](_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x34')]));_0x5c2e71['attributes']=_0x5c2e71['attributes'][_0x6f68('0x35')]?_0x5c2e71[_0x6f68('0x33')]:_0x388eb2[_0x6f68('0x2d')];if(!_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x36')]('nolimit')){_0x5c2e71[_0x6f68('0x1b')]=qs['limit'](_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x1b')]);_0x5c2e71[_0x6f68('0x1a')]=qs[_0x6f68('0x1a')](_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x1a')]);}_0x5c2e71['order']=qs[_0x6f68('0x37')](_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x37')]);_0x5c2e71[_0x6f68('0x38')]=qs[_0x6f68('0x31')](_['pick'](_0x1a4d55[_0x6f68('0x30')],_0x388eb2[_0x6f68('0x31')]),_0x4270cc);if(_0x1a4d55['query'][_0x6f68('0x39')]){_0x5c2e71[_0x6f68('0x38')]=_[_0x6f68('0x3a')](_0x5c2e71[_0x6f68('0x38')],{'$or':_[_0x6f68('0x2f')](_0x4270cc,function(_0x571c1e){if(_0x571c1e['type']!==_0x6f68('0x3b')){var _0x24442d={};_0x24442d[_0x571c1e[_0x6f68('0x25')]]={'$like':'%'+_0x1a4d55[_0x6f68('0x30')][_0x6f68('0x39')]+'%'};return _0x24442d;}})});}_0x5c2e71=_[_0x6f68('0x3a')]({},_0x5c2e71,_0x1a4d55[_0x6f68('0x3c')]);var _0x7c1b7e={'where':_0x5c2e71['where']};return db[_0x6f68('0x28')][_0x6f68('0x19')](_0x7c1b7e)[_0x6f68('0x21')](function(_0x5b9b16){_0x5db88f['count']=_0x5b9b16;if(_0x1a4d55['query'][_0x6f68('0x3d')]){_0x5c2e71[_0x6f68('0x3e')]=[{'all':!![]}];}return db[_0x6f68('0x28')][_0x6f68('0x3f')](_0x5c2e71);})['then'](function(_0x2a9796){_0x5db88f[_0x6f68('0x40')]=_0x2a9796;return _0x5db88f;})[_0x6f68('0x21')](respondWithFilteredResult(_0x33af14,_0x5c2e71))[_0x6f68('0x41')](handleError(_0x33af14,null));};exports[_0x6f68('0x42')]=function(_0x3558b5,_0x5baf2c){var _0x5d01a1={'raw':!![],'where':{'id':_0x3558b5['params']['id']}},_0x4a3ecb={};_0x4a3ecb[_0x6f68('0x2d')]=_[_0x6f68('0x43')](db['CmCustomField']['rawAttributes']);_0x4a3ecb['query']=_[_0x6f68('0x43')](_0x3558b5[_0x6f68('0x30')]);_0x4a3ecb[_0x6f68('0x31')]=_[_0x6f68('0x32')](_0x4a3ecb[_0x6f68('0x2d')],_0x4a3ecb['query']);_0x5d01a1[_0x6f68('0x33')]=_['intersection'](_0x4a3ecb[_0x6f68('0x2d')],qs[_0x6f68('0x34')](_0x3558b5[_0x6f68('0x30')][_0x6f68('0x34')]));_0x5d01a1[_0x6f68('0x33')]=_0x5d01a1[_0x6f68('0x33')][_0x6f68('0x35')]?_0x5d01a1[_0x6f68('0x33')]:_0x4a3ecb[_0x6f68('0x2d')];if(_0x3558b5['query'][_0x6f68('0x3d')]){_0x5d01a1[_0x6f68('0x3e')]=[{'all':!![]}];}_0x5d01a1=_[_0x6f68('0x3a')]({},_0x5d01a1,_0x3558b5[_0x6f68('0x3c')]);return db[_0x6f68('0x28')][_0x6f68('0x44')](_0x5d01a1)[_0x6f68('0x21')](handleEntityNotFound(_0x5baf2c,null))[_0x6f68('0x21')](respondWithResult(_0x5baf2c,null))['catch'](handleError(_0x5baf2c,null));};exports[_0x6f68('0x20')]=function(_0x575f57,_0xb932a7){if(_0x575f57[_0x6f68('0x45')]['id']){delete _0x575f57[_0x6f68('0x45')]['id'];}return db[_0x6f68('0x28')]['find']({'where':{'id':_0x575f57['params']['id']}})[_0x6f68('0x21')](handleEntityNotFound(_0xb932a7,null))['then'](saveUpdates(_0x575f57['body'],null))[_0x6f68('0x21')](respondWithResult(_0xb932a7,null))[_0x6f68('0x41')](handleError(_0xb932a7,null));};exports[_0x6f68('0x22')]=function(_0x12ac7e,_0x6e47bd){return db[_0x6f68('0x28')][_0x6f68('0x44')]({'where':{'id':_0x12ac7e['params']['id']}})['then'](handleEntityNotFound(_0x6e47bd,null))['then'](removeEntity(_0x6e47bd,null))[_0x6f68('0x41')](handleError(_0x6e47bd,null));};exports['create']=function(_0x7687f,_0x4f57db){var _0x4b22a7;return db[_0x6f68('0x46')][_0x6f68('0x47')](function(_0x5cc347){return db[_0x6f68('0x28')][_0x6f68('0x48')](_0x7687f[_0x6f68('0x45')],{'transaction':_0x5cc347})['then'](function(_0x4daa80){_0x4b22a7=_0x4daa80;var _0x14266e={'type':db[_0x6f68('0x49')][_0x6f68('0x4a')],'transaction':_0x5cc347};switch(_0x7687f['body']['type']){case'text':_0x14266e['type']=db['Sequelize']['TEXT'];break;case _0x6f68('0x4b'):_0x14266e[_0x6f68('0x2b')]=db['Sequelize']['INTEGER'];break;case _0x6f68('0x4c'):_0x14266e['type']=db[_0x6f68('0x49')][_0x6f68('0x4d')];_0x14266e['defaultValue']=![];break;default:}return db['sequelize'][_0x6f68('0x4e')][_0x6f68('0x4f')](_0x6f68('0x50'),util[_0x6f68('0x51')](_0x6f68('0x52'),_0x4b22a7['id']),_0x14266e);})[_0x6f68('0x21')](function(){return _0x4b22a7;});})[_0x6f68('0x21')](respondWithResult(_0x4f57db,0xc9))[_0x6f68('0x41')](handleError(_0x4f57db,null));};
\ No newline at end of file
index 6789236..dffb3f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d22=['../../config/logger','bluebird','request-promise','path','./cmCustomField.attributes','exports','define','CmCustomField','cm_custom_fields','lodash','util'];(function(_0x2eedac,_0xf93796){var _0x5ea9dc=function(_0x5723f3){while(--_0x5723f3){_0x2eedac['push'](_0x2eedac['shift']());}};_0x5ea9dc(++_0xf93796);}(_0x1d22,0x132));var _0x21d2=function(_0xdff0a3,_0x119dca){_0xdff0a3=_0xdff0a3-0x0;var _0x3949d2=_0x1d22[_0xdff0a3];return _0x3949d2;};'use strict';var _=require(_0x21d2('0x0'));var util=require(_0x21d2('0x1'));var logger=require(_0x21d2('0x2'))('api');var moment=require('moment');var BPromise=require(_0x21d2('0x3'));var rp=require(_0x21d2('0x4'));var fs=require('fs');var path=require(_0x21d2('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x21d2('0x6'));module[_0x21d2('0x7')]=function(_0x3e5763,_0x4498b0){return _0x3e5763[_0x21d2('0x8')](_0x21d2('0x9'),attributes,{'tableName':_0x21d2('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4728=['CmCustomField','cm_custom_fields','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./cmCustomField.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4728,0x122));var _0x8472=function(_0x190c2a,_0x2a593c){_0x190c2a=_0x190c2a-0x0;var _0x5f0a60=_0x4728[_0x190c2a];return _0x5f0a60;};'use strict';var _=require(_0x8472('0x0'));var util=require(_0x8472('0x1'));var logger=require(_0x8472('0x2'))('api');var moment=require(_0x8472('0x3'));var BPromise=require(_0x8472('0x4'));var rp=require(_0x8472('0x5'));var fs=require('fs');var path=require(_0x8472('0x6'));var rimraf=require('rimraf');var config=require(_0x8472('0x7'));var attributes=require(_0x8472('0x8'));module[_0x8472('0x9')]=function(_0x2284bf,_0x5c7bc8){return _0x2284bf['define'](_0x8472('0xa'),attributes,{'tableName':_0x8472('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 62ea011..836ba28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8047=['lodash','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x27ba60,_0x59ede7){var _0x50456d=function(_0x52758d){while(--_0x52758d){_0x27ba60['push'](_0x27ba60['shift']());}};_0x50456d(++_0x59ede7);}(_0x8047,0x1ee));var _0x7804=function(_0x1f9773,_0x4365fb){_0x1f9773=_0x1f9773-0x0;var _0x3fc947=_0x8047[_0x1f9773];return _0x3fc947;};'use strict';var _=require(_0x7804('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7804('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7804('0x2'));var db=require(_0x7804('0x3'))['db'];var utils=require(_0x7804('0x4'));var logger=require('../../config/logger')(_0x7804('0x5'));var config=require(_0x7804('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1d0fab,_0x26d38a,_0x636ed7){return new BPromise(function(_0x4899f2,_0x1b3f9d){return client[_0x7804('0x7')](_0x1d0fab,_0x636ed7)[_0x7804('0x8')](function(_0x2947ff){logger[_0x7804('0x9')](_0x7804('0xa'),_0x26d38a,_0x7804('0xb'));logger[_0x7804('0xc')](_0x7804('0xd'),_0x26d38a,_0x7804('0xb'),JSON[_0x7804('0xe')](_0x2947ff));if(_0x2947ff[_0x7804('0xf')]){if(_0x2947ff['error'][_0x7804('0x10')]===0x1f4){logger[_0x7804('0xf')](_0x7804('0xa'),_0x26d38a,_0x2947ff[_0x7804('0xf')][_0x7804('0x11')]);return _0x1b3f9d(_0x2947ff[_0x7804('0xf')][_0x7804('0x11')]);}logger[_0x7804('0xf')](_0x7804('0xa'),_0x26d38a,_0x2947ff['error'][_0x7804('0x11')]);return _0x4899f2(_0x2947ff['error'][_0x7804('0x11')]);}else{logger[_0x7804('0x9')]('CmCustomField,\x20%s,\x20%s',_0x26d38a,_0x7804('0xb'));_0x4899f2(_0x2947ff[_0x7804('0x12')]['message']);}})['catch'](function(_0x21f04f){logger[_0x7804('0xf')](_0x7804('0xa'),_0x26d38a,_0x21f04f);_0x1b3f9d(_0x21f04f);});});}
\ No newline at end of file
+var _0x46cb=['debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent'];(function(_0x2e8d35,_0x4c3c40){var _0x1c7784=function(_0x1fa641){while(--_0x1fa641){_0x2e8d35['push'](_0x2e8d35['shift']());}};_0x1c7784(++_0x4c3c40);}(_0x46cb,0x84));var _0xb46c=function(_0x114356,_0x561b7a){_0x114356=_0x114356-0x0;var _0xd46fa7=_0x46cb[_0x114356];return _0xd46fa7;};'use strict';var _=require(_0xb46c('0x0'));var util=require(_0xb46c('0x1'));var moment=require(_0xb46c('0x2'));var BPromise=require(_0xb46c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb46c('0x4'));var db=require(_0xb46c('0x5'))['db'];var utils=require(_0xb46c('0x6'));var logger=require(_0xb46c('0x7'))('rpc');var config=require(_0xb46c('0x8'));var jayson=require(_0xb46c('0x9'));var client=jayson[_0xb46c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16554f,_0x595776,_0xc2a7af){return new BPromise(function(_0x2bf067,_0x5d6405){return client['request'](_0x16554f,_0xc2a7af)[_0xb46c('0xb')](function(_0x12a113){logger[_0xb46c('0xc')](_0xb46c('0xd'),_0x595776,_0xb46c('0xe'));logger[_0xb46c('0xf')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0x595776,_0xb46c('0xe'),JSON[_0xb46c('0x10')](_0x12a113));if(_0x12a113[_0xb46c('0x11')]){if(_0x12a113[_0xb46c('0x11')]['code']===0x1f4){logger[_0xb46c('0x11')](_0xb46c('0xd'),_0x595776,_0x12a113[_0xb46c('0x11')]['message']);return _0x5d6405(_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);}logger['error'](_0xb46c('0xd'),_0x595776,_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);return _0x2bf067(_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);}else{logger[_0xb46c('0xc')](_0xb46c('0xd'),_0x595776,'request\x20sent');_0x2bf067(_0x12a113[_0xb46c('0x13')][_0xb46c('0x12')]);}})[_0xb46c('0x14')](function(_0x118f95){logger[_0xb46c('0x11')](_0xb46c('0xd'),_0x595776,_0x118f95);_0x5d6405(_0x118f95);});});}
\ No newline at end of file
index a85c8d8..e5cf25f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08d9=['fs-extra','../../config/environment','./cmCustomField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','path','express','Router'];(function(_0x389c94,_0x2a93d9){var _0x1455cb=function(_0x5903d6){while(--_0x5903d6){_0x389c94['push'](_0x389c94['shift']());}};_0x1455cb(++_0x2a93d9);}(_0x08d9,0xc2));var _0x908d=function(_0x839b19,_0x262038){_0x839b19=_0x839b19-0x0;var _0x4efa92=_0x08d9[_0x839b19];return _0x4efa92;};'use strict';var multer=require(_0x908d('0x0'));var util=require('util');var path=require(_0x908d('0x1'));var timeout=require('connect-timeout');var express=require(_0x908d('0x2'));var router=express[_0x908d('0x3')]();var fs_extra=require(_0x908d('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x908d('0x5'));var controller=require(_0x908d('0x6'));router[_0x908d('0x7')]('/',auth[_0x908d('0x8')](),controller[_0x908d('0x9')]);router['get'](_0x908d('0xa'),auth[_0x908d('0x8')](),controller[_0x908d('0xb')]);router[_0x908d('0xc')]('/',auth[_0x908d('0x8')](),controller[_0x908d('0xd')]);router[_0x908d('0xe')](_0x908d('0xa'),auth[_0x908d('0x8')](),controller[_0x908d('0xf')]);router['delete'](_0x908d('0xa'),auth[_0x908d('0x8')](),controller[_0x908d('0x10')]);module[_0x908d('0x11')]=router;
\ No newline at end of file
+var _0x2409=['get','index','/:id','isAuthenticated','create','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller'];(function(_0xe28dbb,_0x1a7178){var _0xfdc07=function(_0x95207c){while(--_0x95207c){_0xe28dbb['push'](_0xe28dbb['shift']());}};_0xfdc07(++_0x1a7178);}(_0x2409,0x128));var _0x9240=function(_0xe72c11,_0x1f1f2d){_0xe72c11=_0xe72c11-0x0;var _0x56e6ae=_0x2409[_0xe72c11];return _0x56e6ae;};'use strict';var multer=require(_0x9240('0x0'));var util=require(_0x9240('0x1'));var path=require(_0x9240('0x2'));var timeout=require(_0x9240('0x3'));var express=require(_0x9240('0x4'));var router=express[_0x9240('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x9240('0x6'));var interaction=require(_0x9240('0x7'));var config=require(_0x9240('0x8'));var controller=require(_0x9240('0x9'));router[_0x9240('0xa')]('/',auth['isAuthenticated'](),controller[_0x9240('0xb')]);router[_0x9240('0xa')](_0x9240('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x9240('0xd')](),controller[_0x9240('0xe')]);router['put'](_0x9240('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x9240('0xf')]('/:id',auth[_0x9240('0xd')](),controller[_0x9240('0x10')]);module[_0x9240('0x11')]=router;
\ No newline at end of file
index 273a8b7..127ba5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1298=['BOOLEAN','DATE','INTEGER','UNSIGNED','contactListQueue','moment','sequelize','exports'];(function(_0x14a34a,_0x424129){var _0x4d921e=function(_0x1982be){while(--_0x1982be){_0x14a34a['push'](_0x14a34a['shift']());}};_0x4d921e(++_0x424129);}(_0x1298,0x1d5));var _0x8129=function(_0x11f1df,_0x536b25){_0x11f1df=_0x11f1df-0x0;var _0xcd2281=_0x1298[_0x11f1df];return _0xcd2281;};'use strict';var moment=require(_0x8129('0x0'));var Sequelize=require(_0x8129('0x1'));module[_0x8129('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize[_0x8129('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x8129('0x4')],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x8129('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x8129('0x4')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x8129('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x8129('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x8129('0x7')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x8129('0x7')},'UserId':{'type':Sequelize[_0x8129('0x5')]},'VoiceQueueId':{'type':Sequelize[_0x8129('0x5')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0x8129('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x8129('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x8129('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x8129('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x8129('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x277a=['format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','STRING','BOOLEAN','DATE'];(function(_0x491e85,_0x4b64f9){var _0x446493=function(_0x2e417e){while(--_0x2e417e){_0x491e85['push'](_0x491e85['shift']());}};_0x446493(++_0x4b64f9);}(_0x277a,0x1a5));var _0xa277=function(_0x1f7a50,_0x2d553c){_0x1f7a50=_0x1f7a50-0x0;var _0xfc7668=_0x277a[_0x1f7a50];return _0xfc7668;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize[_0xa277('0x0')],'allowNull':![]},'active':{'type':Sequelize[_0xa277('0x1')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xa277('0x2')],'defaultValue':moment()[_0xa277('0x3')](_0xa277('0x4'))},'countbusyretry':{'type':Sequelize[_0xa277('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xa277('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xa277('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize[_0xa277('0x1')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xa277('0x0')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xa277('0x2')]},'priority':{'type':Sequelize[_0xa277('0x5')](0x2)[_0xa277('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xa277('0x1')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xa277('0x7')},'ListId':{'type':Sequelize[_0xa277('0x5')],'unique':_0xa277('0x7')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0xa277('0x5')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0xa277('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xa277('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xa277('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 24008c0..6a40ee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe446=['dialActive','length','isNumber','entity\x20not\x20found','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','sendStatus','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$between','$notBetween','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','fields','attributes','order','where','pick','filter','VIRTUAL','options','include','CmHopper','findAll','rows','catch','show','params','merge','find','create','body','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','createdAt','updatedAt','state','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','queue','ivr','CmContact','ContactId','firstName','isNil','lastName','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','direction','prev','isEmpty','hopperIds','priority','scheduledAt','ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Contact','Company','CmList','List','Queue'];(function(_0x4a4185,_0x2c3c3e){var _0x4eaf26=function(_0x456264){while(--_0x456264){_0x4a4185['push'](_0x4a4185['shift']());}};_0x4eaf26(++_0x2c3c3e);}(_0xe446,0x95));var _0x6e44=function(_0x37ade8,_0x3a71d0){_0x37ade8=_0x37ade8-0x0;var _0x14184b=_0xe446[_0x37ade8];return _0x14184b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6e44('0x0'));var zipdir=require(_0x6e44('0x1'));var jsonpatch=require(_0x6e44('0x2'));var rp=require(_0x6e44('0x3'));var moment=require(_0x6e44('0x4'));var BPromise=require(_0x6e44('0x5'));var Mustache=require(_0x6e44('0x6'));var util=require(_0x6e44('0x7'));var path=require(_0x6e44('0x8'));var sox=require(_0x6e44('0x9'));var csv=require(_0x6e44('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6e44('0xb'));var _=require('lodash');var squel=require(_0x6e44('0xc'));var crypto=require(_0x6e44('0xd'));var jsforce=require(_0x6e44('0xe'));var deskjs=require(_0x6e44('0xf'));var toCsv=require(_0x6e44('0xa'));var querystring=require(_0x6e44('0x10'));var Papa=require(_0x6e44('0x11'));var Redis=require(_0x6e44('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6e44('0x13'));var logger=require(_0x6e44('0x14'))(_0x6e44('0x15'));var utils=require(_0x6e44('0x16'));var config=require(_0x6e44('0x17'));var licenseUtil=require(_0x6e44('0x18'));var db=require(_0x6e44('0x19'))['db'];function respondWithStatusCode(_0x43ee96,_0x580bff){_0x580bff=_0x580bff||0xcc;return function(_0x188448){if(_0x188448){return _0x43ee96['sendStatus'](_0x580bff);}return _0x43ee96[_0x6e44('0x1a')](_0x580bff)[_0x6e44('0x1b')]();};}function respondWithResult(_0x1cb80a,_0x1952e4){_0x1952e4=_0x1952e4||0xc8;return function(_0x1a427f){if(_0x1a427f){return _0x1cb80a['status'](_0x1952e4)[_0x6e44('0x1c')](_0x1a427f);}};}function respondWithFilteredResult(_0x5797e1,_0x5705ed){return function(_0x123ce5){if(_0x123ce5){var _0x2d73c1=typeof _0x5705ed[_0x6e44('0x1d')]===_0x6e44('0x1e')&&typeof _0x5705ed[_0x6e44('0x1f')]===_0x6e44('0x1e');var _0x1b8168=_0x123ce5['count'];var _0x6be8a8=_0x2d73c1?0x0:_0x5705ed['offset'];var _0x1a2cfa=_0x2d73c1?_0x123ce5[_0x6e44('0x20')]:_0x5705ed['offset']+_0x5705ed[_0x6e44('0x1f')];var _0x128178;if(_0x1a2cfa>=_0x1b8168){_0x1a2cfa=_0x1b8168;_0x128178=0xc8;}else{_0x128178=0xce;}_0x5797e1['status'](_0x128178);return _0x5797e1[_0x6e44('0x21')](_0x6e44('0x22'),_0x6be8a8+'-'+_0x1a2cfa+'/'+_0x1b8168)[_0x6e44('0x1c')](_0x123ce5);}return null;};}function patchUpdates(_0x2abafe){return function(_0x105fb3){try{jsonpatch[_0x6e44('0x23')](_0x105fb3,_0x2abafe,!![]);}catch(_0x43ea00){return BPromise['reject'](_0x43ea00);}return _0x105fb3[_0x6e44('0x24')]();};}function saveUpdates(_0x619034,_0xbf8016){return function(_0x4a44f6){if(_0x4a44f6){return _0x4a44f6[_0x6e44('0x25')](_0x619034)[_0x6e44('0x26')](function(_0x4d306a){return _0x4d306a;});}return null;};}function removeEntity(_0x1b4c7c,_0x19b43d){return function(_0x50378a){if(_0x50378a){return _0x50378a[_0x6e44('0x27')]()['then'](function(){_0x1b4c7c[_0x6e44('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4370ba,_0x5784cb){return function(_0x3df293){if(!_0x3df293){_0x4370ba[_0x6e44('0x28')](0x194);}return _0x3df293;};}function handleError(_0x3dfaa9,_0x36013a){_0x36013a=_0x36013a||0x1f4;return function(_0x294073){logger['error'](_0x294073[_0x6e44('0x29')]);if(_0x294073[_0x6e44('0x2a')]){delete _0x294073['name'];}_0x3dfaa9[_0x6e44('0x1a')](_0x36013a)['send'](_0x294073);};}exports[_0x6e44('0x2b')]=function(_0x2ed36d,_0x8cdf1e){var _0x61b03f={},_0x4bf11e={},_0x3ec3fd={'count':0x0,'rows':[]};var _0x5b14fc=_[_0x6e44('0x2c')](db['CmHopper'][_0x6e44('0x2d')],function(_0x5f18ec){return{'name':_0x5f18ec[_0x6e44('0x2e')],'type':_0x5f18ec[_0x6e44('0x2f')][_0x6e44('0x30')]};});_0x4bf11e[_0x6e44('0x31')]=_[_0x6e44('0x2c')](_0x5b14fc,'name');_0x4bf11e[_0x6e44('0x32')]=_[_0x6e44('0x33')](_0x2ed36d['query']);_0x4bf11e[_0x6e44('0x34')]=_[_0x6e44('0x35')](_0x4bf11e['model'],_0x4bf11e[_0x6e44('0x32')]);_0x4bf11e[_0x6e44('0x34')]=_['concat'](_0x4bf11e[_0x6e44('0x34')],[_0x6e44('0x36'),_0x6e44('0x37'),_0x6e44('0x38'),_0x6e44('0x39'),_0x6e44('0x3a'),_0x6e44('0x3b'),_0x6e44('0x3c'),_0x6e44('0x3d'),'$not',_0x6e44('0x3e'),_0x6e44('0x3f'),'$in',_0x6e44('0x40'),_0x6e44('0x41'),_0x6e44('0x42'),_0x6e44('0x43'),_0x6e44('0x44'),'$like',_0x6e44('0x45'),_0x6e44('0x46'),'$contained',_0x6e44('0x47')]);_0x61b03f['attributes']=_['intersection'](_0x4bf11e['model'],qs['fields'](_0x2ed36d['query'][_0x6e44('0x48')]));_0x61b03f[_0x6e44('0x49')]=_0x61b03f[_0x6e44('0x49')]['length']?_0x61b03f[_0x6e44('0x49')]:_0x4bf11e[_0x6e44('0x31')];if(!_0x2ed36d[_0x6e44('0x32')]['hasOwnProperty']('nolimit')){_0x61b03f[_0x6e44('0x1f')]=qs[_0x6e44('0x1f')](_0x2ed36d[_0x6e44('0x32')][_0x6e44('0x1f')]);_0x61b03f['offset']=qs['offset'](_0x2ed36d[_0x6e44('0x32')]['offset']);}_0x61b03f[_0x6e44('0x4a')]=qs['sort'](_0x2ed36d[_0x6e44('0x32')]['sort']);_0x61b03f[_0x6e44('0x4b')]=qs[_0x6e44('0x34')](_[_0x6e44('0x4c')](_0x2ed36d[_0x6e44('0x32')],_0x4bf11e['filters']),_0x5b14fc);if(_0x2ed36d['query'][_0x6e44('0x4d')]){_0x61b03f[_0x6e44('0x4b')]=_['merge'](_0x61b03f[_0x6e44('0x4b')],{'$or':_[_0x6e44('0x2c')](_0x5b14fc,function(_0x1534b2){if(_0x1534b2[_0x6e44('0x2f')]!==_0x6e44('0x4e')){var _0x3982d6={};_0x3982d6[_0x1534b2[_0x6e44('0x2a')]]={'$like':'%'+_0x2ed36d['query'][_0x6e44('0x4d')]+'%'};return _0x3982d6;}})});}_0x61b03f=_['merge']({},_0x61b03f,_0x2ed36d[_0x6e44('0x4f')]);var _0x1ee226={'where':_0x61b03f[_0x6e44('0x4b')]};return db['CmHopper']['count'](_0x1ee226)[_0x6e44('0x26')](function(_0x1b7858){_0x3ec3fd[_0x6e44('0x20')]=_0x1b7858;if(_0x2ed36d[_0x6e44('0x32')]['includeAll']){_0x61b03f[_0x6e44('0x50')]=[{'all':!![]}];}return db[_0x6e44('0x51')][_0x6e44('0x52')](_0x61b03f);})['then'](function(_0x7bd5e6){_0x3ec3fd[_0x6e44('0x53')]=_0x7bd5e6;return _0x3ec3fd;})[_0x6e44('0x26')](respondWithFilteredResult(_0x8cdf1e,_0x61b03f))[_0x6e44('0x54')](handleError(_0x8cdf1e,null));};exports[_0x6e44('0x55')]=function(_0x581841,_0x3a6e22){var _0x3a3a57={'raw':!![],'where':{'id':_0x581841[_0x6e44('0x56')]['id']}},_0x26d4ae={};_0x26d4ae['model']=_[_0x6e44('0x33')](db[_0x6e44('0x51')][_0x6e44('0x2d')]);_0x26d4ae[_0x6e44('0x32')]=_[_0x6e44('0x33')](_0x581841[_0x6e44('0x32')]);_0x26d4ae['filters']=_['intersection'](_0x26d4ae[_0x6e44('0x31')],_0x26d4ae['query']);_0x3a3a57['attributes']=_[_0x6e44('0x35')](_0x26d4ae['model'],qs[_0x6e44('0x48')](_0x581841['query'][_0x6e44('0x48')]));_0x3a3a57['attributes']=_0x3a3a57[_0x6e44('0x49')]['length']?_0x3a3a57[_0x6e44('0x49')]:_0x26d4ae[_0x6e44('0x31')];if(_0x581841[_0x6e44('0x32')]['includeAll']){_0x3a3a57['include']=[{'all':!![]}];}_0x3a3a57=_[_0x6e44('0x57')]({},_0x3a3a57,_0x581841['options']);return db[_0x6e44('0x51')][_0x6e44('0x58')](_0x3a3a57)[_0x6e44('0x26')](handleEntityNotFound(_0x3a6e22,null))['then'](respondWithResult(_0x3a6e22,null))['catch'](handleError(_0x3a6e22,null));};exports[_0x6e44('0x59')]=function(_0x56be0f,_0x188b36){return db[_0x6e44('0x51')][_0x6e44('0x59')](_0x56be0f[_0x6e44('0x5a')],{})[_0x6e44('0x26')](respondWithResult(_0x188b36,0xc9))[_0x6e44('0x54')](handleError(_0x188b36,null));};exports['update']=function(_0x3b6e96,_0x4195e9){if(_0x3b6e96[_0x6e44('0x5a')]['id']){delete _0x3b6e96[_0x6e44('0x5a')]['id'];}return db[_0x6e44('0x51')]['find']({'where':{'id':_0x3b6e96[_0x6e44('0x56')]['id']}})[_0x6e44('0x26')](handleEntityNotFound(_0x4195e9,null))[_0x6e44('0x26')](saveUpdates(_0x3b6e96['body'],null))[_0x6e44('0x26')](respondWithResult(_0x4195e9,null))['catch'](handleError(_0x4195e9,null));};exports['describe']=function(_0x11db57,_0x1b7747){return db[_0x6e44('0x51')][_0x6e44('0x5b')]()[_0x6e44('0x26')](respondWithResult(_0x1b7747,null))[_0x6e44('0x54')](handleError(_0x1b7747,null));};exports[_0x6e44('0x27')]=function(_0x19ef6a,_0x28cc20){var _0x5da41d;return db['CmHopper']['find']({'where':{'id':_0x19ef6a[_0x6e44('0x56')]['id']}})[_0x6e44('0x26')](handleEntityNotFound(_0x28cc20,null))[_0x6e44('0x26')](function(_0x505bdf){if(_0x505bdf){return _0x505bdf[_0x6e44('0x27')]()[_0x6e44('0x26')](function(_0x4867bc){return _0x4867bc;});}})[_0x6e44('0x26')](function(_0x2264e){_0x5da41d=_0x2264e;if(_0x2264e){if(_0x2264e[_0x6e44('0x5c')]||_0x2264e[_0x6e44('0x5d')]){return db[_0x2264e[_0x6e44('0x5c')]?_0x6e44('0x5e'):_0x6e44('0x5f')][_0x6e44('0x58')]({'where':{'id':_0x2264e[_0x6e44('0x5c')]?_0x2264e['VoiceQueueId']:_0x2264e[_0x6e44('0x5d')]},'attributes':['id',_0x6e44('0x2a')],'raw':!![]});}}})[_0x6e44('0x26')](function(_0x73de32){var _0x227677={};if(_0x73de32){_[_0x6e44('0x57')](_0x227677,_[_0x6e44('0x60')](_0x5da41d['dataValues'],[_0x6e44('0x61'),_0x6e44('0x62'),'id']));_0x227677[_0x6e44('0x63')]=0x15;_0x227677['statedesc']=_0x6e44('0x64');_0x227677[_0x6e44('0x65')]=_0x73de32[_0x6e44('0x2a')];_0x227677[_0x6e44('0x66')]=_0x19ef6a[_0x6e44('0x67')][_0x6e44('0x2a')];_0x227677[_0x6e44('0x68')]=_0x19ef6a[_0x6e44('0x67')]['id'];_0x227677['deleted']=!![];_0x227677[_0x6e44('0x69')]=moment()[_0x6e44('0x6a')](_0x6e44('0x6b'));_0x227677[_0x6e44('0x6c')]=_0x5da41d['phone'];_0x227677['campaigntype']=_0x5da41d[_0x6e44('0x5c')]?_0x6e44('0x6d'):_0x6e44('0x6e');return db[_0x6e44('0x6f')][_0x6e44('0x58')]({'where':{'id':_0x227677[_0x6e44('0x70')]},'attributes':[_0x6e44('0x71'),'lastName']})[_0x6e44('0x26')](function(_0x172011){if(!_[_0x6e44('0x72')](_0x28cc20)&&!_[_0x6e44('0x72')](_0x172011[_0x6e44('0x71')])){_0x227677['calleridname']=_0x172011['firstName'];if(!_[_0x6e44('0x72')](_0x172011[_0x6e44('0x73')])){_0x227677['calleridname']+='\x20'+_0x172011[_0x6e44('0x73')];}}})['finally'](function(){return db[_0x6e44('0x74')][_0x6e44('0x59')](_0x227677);});}})[_0x6e44('0x26')](function(){return _0x28cc20[_0x6e44('0x1a')](0xcc)[_0x6e44('0x1b')]();})[_0x6e44('0x54')](handleError(_0x28cc20,null));};exports[_0x6e44('0x75')]=function(_0x2b6290,_0x42cda8,_0x2794a6){var _0x4251de=[];return db[_0x6e44('0x6f')][_0x6e44('0x5b')]()['then'](function(_0xaeee62){_0x4251de=_[_0x6e44('0x33')](_0xaeee62);return _0x2b6290[_0x6e44('0x67')][_0x6e44('0x76')]({'where':{'type':_0x6e44('0x77'),'dialActive':!![],'dialMethod':_0x6e44('0x78')},'attributes':['id',_0x6e44('0x79')],'raw':!![]});})[_0x6e44('0x26')](function(_0x177161){if(_0x177161&&_0x177161['length']){return db[_0x6e44('0x7a')]['transaction'](function(_0x522517){var _0x1e5241={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x6e44('0x6a')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x6e44('0x2c')](_0x177161,'id')},'$or':[{'UserId':null},{'UserId':_0x2b6290[_0x6e44('0x67')]['id']}]};var _0x1691ec=[];if(_0x2b6290[_0x6e44('0x5a')][_0x6e44('0x7b')]&&_0x2b6290[_0x6e44('0x5a')][_0x6e44('0x7b')]===_0x6e44('0x7c')){if(!_[_0x6e44('0x7d')](_0x2b6290[_0x6e44('0x5a')][_0x6e44('0x7e')])){_0x1e5241['id']={'$in':_0x2b6290[_0x6e44('0x5a')]['hopperIds']};}_0x1691ec=[[_0x6e44('0x7f'),'ASC'],[_0x6e44('0x80'),_0x177161[0x0][_0x6e44('0x79')]===_0x6e44('0x81')?_0x6e44('0x82'):_0x6e44('0x81')],db['sequelize']['literal'](_0x6e44('0x83')),['id',_0x6e44('0x82')]];}else{if(!_['isEmpty'](_0x2b6290['body'][_0x6e44('0x7e')])){_0x1e5241['id']={'$notIn':_0x2b6290['body']['hopperIds']};}_0x1691ec=[[_0x6e44('0x7f'),_0x6e44('0x82')],[_0x6e44('0x80'),_0x177161[0x0][_0x6e44('0x79')]],db[_0x6e44('0x7a')]['literal'](_0x6e44('0x84')),['id','ASC']];}return db[_0x6e44('0x51')][_0x6e44('0x85')]({'attributes':['id',_0x6e44('0x86')],'where':_0x1e5241,'order':_0x1691ec,'transaction':_0x522517,'lock':_0x522517[_0x6e44('0x87')]['UPDATE'],'include':[{'model':db[_0x6e44('0x6f')],'as':_0x6e44('0x88'),'attributes':_0x4251de,'include':[{'model':db['CmCompany'],'as':_0x6e44('0x89'),'attributes':['id',_0x6e44('0x2a')]}]},{'model':db[_0x6e44('0x8a')],'as':_0x6e44('0x8b'),'attributes':['id',_0x6e44('0x2a')]},{'model':db[_0x6e44('0x5e')],'as':_0x6e44('0x8c'),'attributes':['id',_0x6e44('0x2a'),_0x6e44('0x8d')]}]})[_0x6e44('0x26')](function(_0x17450a){if(_0x17450a){return _0x17450a['update']({'UserId':_0x2b6290[_0x6e44('0x67')]['id']},{'transaction':_0x522517});}});});}})[_0x6e44('0x26')](handleEntityNotFound(_0x42cda8,null))['then'](respondWithResult(_0x42cda8,null))[_0x6e44('0x54')](handleError(_0x42cda8,null));};exports['getOpenContacts']=function(_0xe39cfd,_0x322c6e,_0x1871b3){return _0xe39cfd[_0x6e44('0x67')][_0x6e44('0x76')]({'where':{'type':_0x6e44('0x77'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})['then'](function(_0x14df4c){if(_0x14df4c&&_0x14df4c[_0x6e44('0x8e')]){return db[_0x6e44('0x51')][_0x6e44('0x20')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x6e44('0x6a')](_0x6e44('0x6b'))},'VoiceQueueId':{'$in':_[_0x6e44('0x2c')](_0x14df4c,'id')},'$or':[{'UserId':null},{'UserId':_0xe39cfd[_0x6e44('0x67')]['id']}]}});}return 0x0;})[_0x6e44('0x26')](function(_0x3255cf){if(!_[_0x6e44('0x72')](_0x3255cf)&&_[_0x6e44('0x8f')](_0x3255cf)){return _0x322c6e[_0x6e44('0x1a')](0xc8)[_0x6e44('0x1c')]({'contacts':_0x3255cf});}else{logger['error']('CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts',0x194,_0x6e44('0x90'));_0x322c6e[_0x6e44('0x28')](0x194);}})[_0x6e44('0x54')](handleError(_0x322c6e,null));};
\ No newline at end of file
+var _0x7801=['fs-extra','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','CmHopper','fieldName','type','key','model','query','keys','filters','$and','$or','$gte','$lte','$ne','$eq','$not','$between','$notBetween','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','update','describe','VoiceQueueId','CampaignId','Campaign','omit','dataValues','createdAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','ivr','ContactId','firstName','lastName','isNil','calleridname','CmHopperFinal','getPreview','CmContact','getVoiceQueues','outbound','preview','sequelize','transaction','format','direction','prev','hopperIds','ASC','scheduledAt','dialOrderByScheduledAt','DESC','literal','isEmpty','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','VoiceQueue','dialActive','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs'];(function(_0x53670f,_0x2d4ac0){var _0x3b5374=function(_0x551b88){while(--_0x551b88){_0x53670f['push'](_0x53670f['shift']());}};_0x3b5374(++_0x2d4ac0);}(_0x7801,0x11c));var _0x1780=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x7801[_0x4d613c];return _0x301fe3;};'use strict';var emlformat=require(_0x1780('0x0'));var rimraf=require(_0x1780('0x1'));var zipdir=require(_0x1780('0x2'));var jsonpatch=require(_0x1780('0x3'));var rp=require(_0x1780('0x4'));var moment=require(_0x1780('0x5'));var BPromise=require(_0x1780('0x6'));var Mustache=require(_0x1780('0x7'));var util=require(_0x1780('0x8'));var path=require('path');var sox=require(_0x1780('0x9'));var csv=require(_0x1780('0xa'));var ejs=require(_0x1780('0xb'));var fs=require('fs');var fs_extra=require(_0x1780('0xc'));var _=require(_0x1780('0xd'));var squel=require(_0x1780('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1780('0xf'));var toCsv=require(_0x1780('0xa'));var querystring=require('querystring');var Papa=require(_0x1780('0x10'));var Redis=require('ioredis');var authService=require(_0x1780('0x11'));var qs=require(_0x1780('0x12'));var as=require(_0x1780('0x13'));var hardwareService=require(_0x1780('0x14'));var logger=require(_0x1780('0x15'))(_0x1780('0x16'));var utils=require(_0x1780('0x17'));var config=require(_0x1780('0x18'));var licenseUtil=require(_0x1780('0x19'));var db=require(_0x1780('0x1a'))['db'];function respondWithStatusCode(_0x590b16,_0x2d45dc){_0x2d45dc=_0x2d45dc||0xcc;return function(_0x549569){if(_0x549569){return _0x590b16['sendStatus'](_0x2d45dc);}return _0x590b16[_0x1780('0x1b')](_0x2d45dc)[_0x1780('0x1c')]();};}function respondWithResult(_0x1272c1,_0x649b){_0x649b=_0x649b||0xc8;return function(_0xd26f8f){if(_0xd26f8f){return _0x1272c1['status'](_0x649b)[_0x1780('0x1d')](_0xd26f8f);}};}function respondWithFilteredResult(_0x10dcd5,_0x1d71d5){return function(_0x5258a){if(_0x5258a){var _0x3a942d=typeof _0x1d71d5[_0x1780('0x1e')]===_0x1780('0x1f')&&typeof _0x1d71d5[_0x1780('0x20')]==='undefined';var _0x1e2602=_0x5258a[_0x1780('0x21')];var _0x448256=_0x3a942d?0x0:_0x1d71d5[_0x1780('0x1e')];var _0x1f46d1=_0x3a942d?_0x5258a['count']:_0x1d71d5[_0x1780('0x1e')]+_0x1d71d5[_0x1780('0x20')];var _0x38d693;if(_0x1f46d1>=_0x1e2602){_0x1f46d1=_0x1e2602;_0x38d693=0xc8;}else{_0x38d693=0xce;}_0x10dcd5[_0x1780('0x1b')](_0x38d693);return _0x10dcd5['set'](_0x1780('0x22'),_0x448256+'-'+_0x1f46d1+'/'+_0x1e2602)[_0x1780('0x1d')](_0x5258a);}return null;};}function patchUpdates(_0x12299a){return function(_0x3eb9cb){try{jsonpatch[_0x1780('0x23')](_0x3eb9cb,_0x12299a,!![]);}catch(_0x57306e){return BPromise[_0x1780('0x24')](_0x57306e);}return _0x3eb9cb[_0x1780('0x25')]();};}function saveUpdates(_0x51c0ce,_0x5790d1){return function(_0x3ecc23){if(_0x3ecc23){return _0x3ecc23['update'](_0x51c0ce)[_0x1780('0x26')](function(_0x3b098f){return _0x3b098f;});}return null;};}function removeEntity(_0x26d653,_0x58c078){return function(_0x441843){if(_0x441843){return _0x441843[_0x1780('0x27')]()[_0x1780('0x26')](function(){_0x26d653['status'](0xcc)[_0x1780('0x1c')]();});}};}function handleEntityNotFound(_0x1f36bf,_0x323d78){return function(_0x127fe9){if(!_0x127fe9){_0x1f36bf[_0x1780('0x28')](0x194);}return _0x127fe9;};}function handleError(_0x5bb676,_0x48d46b){_0x48d46b=_0x48d46b||0x1f4;return function(_0x5183bd){logger[_0x1780('0x29')](_0x5183bd[_0x1780('0x2a')]);if(_0x5183bd[_0x1780('0x2b')]){delete _0x5183bd[_0x1780('0x2b')];}_0x5bb676[_0x1780('0x1b')](_0x48d46b)[_0x1780('0x2c')](_0x5183bd);};}exports[_0x1780('0x2d')]=function(_0x57b5f3,_0x235a36){var _0x504ef3={},_0x1bd7a4={},_0xba4830={'count':0x0,'rows':[]};var _0x3cc0e2=_[_0x1780('0x2e')](db[_0x1780('0x2f')]['rawAttributes'],function(_0x185d95){return{'name':_0x185d95[_0x1780('0x30')],'type':_0x185d95[_0x1780('0x31')][_0x1780('0x32')]};});_0x1bd7a4[_0x1780('0x33')]=_['map'](_0x3cc0e2,'name');_0x1bd7a4[_0x1780('0x34')]=_[_0x1780('0x35')](_0x57b5f3[_0x1780('0x34')]);_0x1bd7a4[_0x1780('0x36')]=_['intersection'](_0x1bd7a4[_0x1780('0x33')],_0x1bd7a4[_0x1780('0x34')]);_0x1bd7a4[_0x1780('0x36')]=_['concat'](_0x1bd7a4[_0x1780('0x36')],[_0x1780('0x37'),_0x1780('0x38'),'$gt',_0x1780('0x39'),'$lt',_0x1780('0x3a'),_0x1780('0x3b'),_0x1780('0x3c'),_0x1780('0x3d'),_0x1780('0x3e'),_0x1780('0x3f'),'$in','$notIn',_0x1780('0x40'),_0x1780('0x41'),_0x1780('0x42'),_0x1780('0x43'),_0x1780('0x40'),'$overlap',_0x1780('0x44'),_0x1780('0x45'),_0x1780('0x46')]);_0x504ef3[_0x1780('0x47')]=_[_0x1780('0x48')](_0x1bd7a4['model'],qs[_0x1780('0x49')](_0x57b5f3[_0x1780('0x34')]['fields']));_0x504ef3['attributes']=_0x504ef3[_0x1780('0x47')][_0x1780('0x4a')]?_0x504ef3[_0x1780('0x47')]:_0x1bd7a4[_0x1780('0x33')];if(!_0x57b5f3[_0x1780('0x34')][_0x1780('0x4b')](_0x1780('0x4c'))){_0x504ef3[_0x1780('0x20')]=qs[_0x1780('0x20')](_0x57b5f3[_0x1780('0x34')][_0x1780('0x20')]);_0x504ef3[_0x1780('0x1e')]=qs[_0x1780('0x1e')](_0x57b5f3['query']['offset']);}_0x504ef3[_0x1780('0x4d')]=qs[_0x1780('0x4e')](_0x57b5f3[_0x1780('0x34')][_0x1780('0x4e')]);_0x504ef3[_0x1780('0x4f')]=qs[_0x1780('0x36')](_[_0x1780('0x50')](_0x57b5f3['query'],_0x1bd7a4['filters']),_0x3cc0e2);if(_0x57b5f3[_0x1780('0x34')][_0x1780('0x51')]){_0x504ef3['where']=_['merge'](_0x504ef3[_0x1780('0x4f')],{'$or':_[_0x1780('0x2e')](_0x3cc0e2,function(_0x418a3e){if(_0x418a3e[_0x1780('0x31')]!==_0x1780('0x52')){var _0x4d0a55={};_0x4d0a55[_0x418a3e[_0x1780('0x2b')]]={'$like':'%'+_0x57b5f3[_0x1780('0x34')]['filter']+'%'};return _0x4d0a55;}})});}_0x504ef3=_[_0x1780('0x53')]({},_0x504ef3,_0x57b5f3['options']);var _0x311ebd={'where':_0x504ef3[_0x1780('0x4f')]};return db['CmHopper']['count'](_0x311ebd)[_0x1780('0x26')](function(_0x3d02f5){_0xba4830[_0x1780('0x21')]=_0x3d02f5;if(_0x57b5f3[_0x1780('0x34')][_0x1780('0x54')]){_0x504ef3[_0x1780('0x55')]=[{'all':!![]}];}return db[_0x1780('0x2f')][_0x1780('0x56')](_0x504ef3);})[_0x1780('0x26')](function(_0x5f1997){_0xba4830[_0x1780('0x57')]=_0x5f1997;return _0xba4830;})[_0x1780('0x26')](respondWithFilteredResult(_0x235a36,_0x504ef3))[_0x1780('0x58')](handleError(_0x235a36,null));};exports[_0x1780('0x59')]=function(_0x422f36,_0x499fd5){var _0x4d4890={'raw':!![],'where':{'id':_0x422f36[_0x1780('0x5a')]['id']}},_0x3ab90e={};_0x3ab90e[_0x1780('0x33')]=_[_0x1780('0x35')](db[_0x1780('0x2f')][_0x1780('0x5b')]);_0x3ab90e[_0x1780('0x34')]=_[_0x1780('0x35')](_0x422f36[_0x1780('0x34')]);_0x3ab90e['filters']=_[_0x1780('0x48')](_0x3ab90e['model'],_0x3ab90e[_0x1780('0x34')]);_0x4d4890['attributes']=_[_0x1780('0x48')](_0x3ab90e[_0x1780('0x33')],qs[_0x1780('0x49')](_0x422f36['query'][_0x1780('0x49')]));_0x4d4890['attributes']=_0x4d4890[_0x1780('0x47')]['length']?_0x4d4890[_0x1780('0x47')]:_0x3ab90e[_0x1780('0x33')];if(_0x422f36[_0x1780('0x34')][_0x1780('0x54')]){_0x4d4890['include']=[{'all':!![]}];}_0x4d4890=_[_0x1780('0x53')]({},_0x4d4890,_0x422f36[_0x1780('0x5c')]);return db[_0x1780('0x2f')][_0x1780('0x5d')](_0x4d4890)[_0x1780('0x26')](handleEntityNotFound(_0x499fd5,null))[_0x1780('0x26')](respondWithResult(_0x499fd5,null))[_0x1780('0x58')](handleError(_0x499fd5,null));};exports[_0x1780('0x5e')]=function(_0x5c43b3,_0xf2b431){return db[_0x1780('0x2f')][_0x1780('0x5e')](_0x5c43b3[_0x1780('0x5f')],{})[_0x1780('0x26')](respondWithResult(_0xf2b431,0xc9))[_0x1780('0x58')](handleError(_0xf2b431,null));};exports[_0x1780('0x60')]=function(_0xab8887,_0x24bda3){if(_0xab8887[_0x1780('0x5f')]['id']){delete _0xab8887[_0x1780('0x5f')]['id'];}return db[_0x1780('0x2f')][_0x1780('0x5d')]({'where':{'id':_0xab8887[_0x1780('0x5a')]['id']}})['then'](handleEntityNotFound(_0x24bda3,null))['then'](saveUpdates(_0xab8887[_0x1780('0x5f')],null))[_0x1780('0x26')](respondWithResult(_0x24bda3,null))[_0x1780('0x58')](handleError(_0x24bda3,null));};exports[_0x1780('0x61')]=function(_0x21375b,_0x35c00d){return db['CmHopper'][_0x1780('0x61')]()['then'](respondWithResult(_0x35c00d,null))[_0x1780('0x58')](handleError(_0x35c00d,null));};exports[_0x1780('0x27')]=function(_0x445da6,_0x53ef30){var _0x19164;return db['CmHopper']['find']({'where':{'id':_0x445da6[_0x1780('0x5a')]['id']}})['then'](handleEntityNotFound(_0x53ef30,null))[_0x1780('0x26')](function(_0x531b2c){if(_0x531b2c){return _0x531b2c[_0x1780('0x27')]()[_0x1780('0x26')](function(_0x1ac7ff){return _0x1ac7ff;});}})['then'](function(_0x182a76){_0x19164=_0x182a76;if(_0x182a76){if(_0x182a76[_0x1780('0x62')]||_0x182a76[_0x1780('0x63')]){return db[_0x182a76['VoiceQueueId']?'VoiceQueue':_0x1780('0x64')][_0x1780('0x5d')]({'where':{'id':_0x182a76[_0x1780('0x62')]?_0x182a76[_0x1780('0x62')]:_0x182a76['CampaignId']},'attributes':['id',_0x1780('0x2b')],'raw':!![]});}}})[_0x1780('0x26')](function(_0x2843ae){var _0x2f30b6={};if(_0x2843ae){_[_0x1780('0x53')](_0x2f30b6,_[_0x1780('0x65')](_0x19164[_0x1780('0x66')],[_0x1780('0x67'),'updatedAt','id']));_0x2f30b6[_0x1780('0x68')]=0x15;_0x2f30b6[_0x1780('0x69')]=_0x1780('0x6a');_0x2f30b6[_0x1780('0x6b')]=_0x2843ae[_0x1780('0x2b')];_0x2f30b6[_0x1780('0x6c')]=_0x445da6[_0x1780('0x6d')][_0x1780('0x2b')];_0x2f30b6[_0x1780('0x6e')]=_0x445da6['user']['id'];_0x2f30b6[_0x1780('0x6a')]=!![];_0x2f30b6[_0x1780('0x6f')]=moment()['format'](_0x1780('0x70'));_0x2f30b6[_0x1780('0x71')]=_0x19164['phone'];_0x2f30b6['campaigntype']=_0x19164[_0x1780('0x62')]?'queue':_0x1780('0x72');return db['CmContact'][_0x1780('0x5d')]({'where':{'id':_0x2f30b6[_0x1780('0x73')]},'attributes':[_0x1780('0x74'),_0x1780('0x75')]})['then'](function(_0x529da2){if(!_[_0x1780('0x76')](_0x53ef30)&&!_[_0x1780('0x76')](_0x529da2[_0x1780('0x74')])){_0x2f30b6[_0x1780('0x77')]=_0x529da2['firstName'];if(!_[_0x1780('0x76')](_0x529da2[_0x1780('0x75')])){_0x2f30b6['calleridname']+='\x20'+_0x529da2[_0x1780('0x75')];}}})['finally'](function(){return db[_0x1780('0x78')][_0x1780('0x5e')](_0x2f30b6);});}})[_0x1780('0x26')](function(){return _0x53ef30[_0x1780('0x1b')](0xcc)[_0x1780('0x1c')]();})[_0x1780('0x58')](handleError(_0x53ef30,null));};exports[_0x1780('0x79')]=function(_0x1f811b,_0x11b974,_0x457399){var _0x5f2684=[];return db[_0x1780('0x7a')][_0x1780('0x61')]()[_0x1780('0x26')](function(_0x1de263){_0x5f2684=_[_0x1780('0x35')](_0x1de263);return _0x1f811b[_0x1780('0x6d')][_0x1780('0x7b')]({'where':{'type':_0x1780('0x7c'),'dialActive':!![],'dialMethod':_0x1780('0x7d')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0x1780('0x26')](function(_0x453d43){if(_0x453d43&&_0x453d43[_0x1780('0x4a')]){return db[_0x1780('0x7e')][_0x1780('0x7f')](function(_0x5246be){var _0x37521b={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x1780('0x80')](_0x1780('0x70'))},'VoiceQueueId':{'$in':_[_0x1780('0x2e')](_0x453d43,'id')},'$or':[{'UserId':null},{'UserId':_0x1f811b[_0x1780('0x6d')]['id']}]};var _0x3f4c56=[];if(_0x1f811b['body']['direction']&&_0x1f811b['body'][_0x1780('0x81')]===_0x1780('0x82')){if(!_['isEmpty'](_0x1f811b[_0x1780('0x5f')][_0x1780('0x83')])){_0x37521b['id']={'$in':_0x1f811b[_0x1780('0x5f')][_0x1780('0x83')]};}_0x3f4c56=[['priority',_0x1780('0x84')],[_0x1780('0x85'),_0x453d43[0x0][_0x1780('0x86')]===_0x1780('0x84')?_0x1780('0x87'):_0x1780('0x84')],db[_0x1780('0x7e')][_0x1780('0x88')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x1780('0x87')]];}else{if(!_[_0x1780('0x89')](_0x1f811b[_0x1780('0x5f')][_0x1780('0x83')])){_0x37521b['id']={'$notIn':_0x1f811b[_0x1780('0x5f')][_0x1780('0x83')]};}_0x3f4c56=[['priority',_0x1780('0x87')],[_0x1780('0x85'),_0x453d43[0x0][_0x1780('0x86')]],db[_0x1780('0x7e')][_0x1780('0x88')](_0x1780('0x8a')),['id','ASC']];}return db[_0x1780('0x2f')][_0x1780('0x8b')]({'attributes':['id',_0x1780('0x8c')],'where':_0x37521b,'order':_0x3f4c56,'transaction':_0x5246be,'lock':_0x5246be[_0x1780('0x8d')][_0x1780('0x8e')],'include':[{'model':db[_0x1780('0x7a')],'as':'Contact','attributes':_0x5f2684,'include':[{'model':db['CmCompany'],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':'List','attributes':['id',_0x1780('0x2b')]},{'model':db[_0x1780('0x8f')],'as':'Queue','attributes':['id','name',_0x1780('0x90')]}]})[_0x1780('0x26')](function(_0x4874e7){if(_0x4874e7){return _0x4874e7[_0x1780('0x60')]({'UserId':_0x1f811b[_0x1780('0x6d')]['id']},{'transaction':_0x5246be});}});});}})['then'](handleEntityNotFound(_0x11b974,null))[_0x1780('0x26')](respondWithResult(_0x11b974,null))[_0x1780('0x58')](handleError(_0x11b974,null));};exports['getOpenContacts']=function(_0x2ee6fd,_0x5dee76,_0x32afa9){return _0x2ee6fd['user'][_0x1780('0x7b')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x1780('0x7d')},'attributes':['id'],'raw':!![]})[_0x1780('0x26')](function(_0x347fb3){if(_0x347fb3&&_0x347fb3[_0x1780('0x4a')]){return db[_0x1780('0x2f')][_0x1780('0x21')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x1780('0x80')](_0x1780('0x70'))},'VoiceQueueId':{'$in':_[_0x1780('0x2e')](_0x347fb3,'id')},'$or':[{'UserId':null},{'UserId':_0x2ee6fd[_0x1780('0x6d')]['id']}]}});}return 0x0;})[_0x1780('0x26')](function(_0x56bfb9){if(!_[_0x1780('0x76')](_0x56bfb9)&&_[_0x1780('0x91')](_0x56bfb9)){return _0x5dee76[_0x1780('0x1b')](0xc8)[_0x1780('0x1d')]({'contacts':_0x56bfb9});}else{logger[_0x1780('0x29')](_0x1780('0x92'),'getOpenContacts',0x194,_0x1780('0x93'));_0x5dee76[_0x1780('0x28')](0x194);}})[_0x1780('0x58')](handleError(_0x5dee76,null));};
\ No newline at end of file
index 05307a4..4b68776 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd8=['CmHopper','cm_hopper','scheduledat','phone','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cmHopper.attributes','exports','define'];(function(_0x3197b2,_0x56dcba){var _0x8bfb0=function(_0x3cb529){while(--_0x3cb529){_0x3197b2['push'](_0x3197b2['shift']());}};_0x8bfb0(++_0x56dcba);}(_0x2bd8,0x130));var _0x82bd=function(_0x519c40,_0x499209){_0x519c40=_0x519c40-0x0;var _0x150fb3=_0x2bd8[_0x519c40];return _0x150fb3;};'use strict';var _=require(_0x82bd('0x0'));var util=require('util');var logger=require(_0x82bd('0x1'))(_0x82bd('0x2'));var moment=require(_0x82bd('0x3'));var BPromise=require(_0x82bd('0x4'));var rp=require(_0x82bd('0x5'));var fs=require('fs');var path=require(_0x82bd('0x6'));var rimraf=require(_0x82bd('0x7'));var config=require('../../config/environment');var attributes=require(_0x82bd('0x8'));module[_0x82bd('0x9')]=function(_0x3bf810,_0x5ceb60){return _0x3bf810[_0x82bd('0xa')](_0x82bd('0xb'),attributes,{'tableName':_0x82bd('0xc'),'paranoid':![],'indexes':[{'name':_0x82bd('0xd'),'fields':['scheduledat']},{'name':_0x82bd('0xe'),'fields':['phone']},{'name':'priority','fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4c60=['../../config/logger','api','bluebird','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c60,0xc1));var _0x04c6=function(_0x4fc529,_0xcc6efc){_0x4fc529=_0x4fc529-0x0;var _0x58c5e1=_0x4c60[_0x4fc529];return _0x58c5e1;};'use strict';var _=require(_0x04c6('0x0'));var util=require(_0x04c6('0x1'));var logger=require(_0x04c6('0x2'))(_0x04c6('0x3'));var moment=require('moment');var BPromise=require(_0x04c6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x04c6('0x5'));module[_0x04c6('0x6')]=function(_0x2054da,_0x12bd5d){return _0x2054da[_0x04c6('0x7')](_0x04c6('0x8'),attributes,{'tableName':_0x04c6('0x9'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':[_0x04c6('0xa')]},{'name':_0x04c6('0xb'),'fields':[_0x04c6('0xb')]},{'name':_0x04c6('0xc'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
index 280b555..b3f2982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ac8=['options','raw','where','attributes','map','model','include','stringify','ShowCmHopper','CmHopper','find','CreateCmHopper','create','update','limit','UpdateCmHopper','DestroyCmHopper','destroy','GetContactDialer','describe','sequelize','transaction','findAll','LOCK','UPDATE','CmContact','Contact','Agent','name','voicePause','length','UserId','push','body','includes','MoveContactManagedDialer','CmHopperFinal','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','GetContactRecallMe','all','GetCmHopperPreview','keys','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','error','code','CmHopper,\x20%s,\x20%s','message','catch','GetCmHopper'];(function(_0x4f7481,_0x59b10c){var _0x4b2368=function(_0x4e10c0){while(--_0x4e10c0){_0x4f7481['push'](_0x4f7481['shift']());}};_0x4b2368(++_0x59b10c);}(_0x1ac8,0x199));var _0x81ac=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1ac8[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x81ac('0x0'));var util=require(_0x81ac('0x1'));var moment=require(_0x81ac('0x2'));var BPromise=require(_0x81ac('0x3'));var rs=require(_0x81ac('0x4'));var fs=require('fs');var Redis=require(_0x81ac('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x81ac('0x6'));var logger=require(_0x81ac('0x7'))(_0x81ac('0x8'));var config=require('../../config/environment');var jayson=require(_0x81ac('0x9'));var client=jayson[_0x81ac('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f0091,_0x4ec900,_0x561866){return new BPromise(function(_0x14a8e2,_0x47a99c){return client[_0x81ac('0xb')](_0x2f0091,_0x561866)[_0x81ac('0xc')](function(_0x105204){logger[_0x81ac('0xd')]('CmHopper,\x20%s,\x20%s',_0x4ec900,_0x81ac('0xe'));logger[_0x81ac('0xf')](_0x81ac('0x10'),_0x4ec900,_0x81ac('0xe'),JSON['stringify'](_0x105204));if(_0x105204[_0x81ac('0x11')]){if(_0x105204['error'][_0x81ac('0x12')]===0x1f4){logger[_0x81ac('0x11')](_0x81ac('0x13'),_0x4ec900,_0x105204[_0x81ac('0x11')][_0x81ac('0x14')]);return _0x47a99c(_0x105204[_0x81ac('0x11')][_0x81ac('0x14')]);}logger[_0x81ac('0x11')](_0x81ac('0x13'),_0x4ec900,_0x105204[_0x81ac('0x11')]['message']);return _0x14a8e2(_0x105204[_0x81ac('0x11')][_0x81ac('0x14')]);}else{logger['info'](_0x81ac('0x13'),_0x4ec900,'request\x20sent');_0x14a8e2(_0x105204['result'][_0x81ac('0x14')]);}})[_0x81ac('0x15')](function(_0x2e4f76){logger[_0x81ac('0x11')](_0x81ac('0x13'),_0x4ec900,_0x2e4f76);_0x47a99c(_0x2e4f76);});});}exports[_0x81ac('0x16')]=function(_0x3da50d){var _0x3330d0=this;return new Promise(function(_0x5c7f5a,_0x30846d){return db['CmHopper']['findAll']({'raw':_0x3da50d[_0x81ac('0x17')]?_0x3da50d[_0x81ac('0x17')][_0x81ac('0x18')]===undefined?!![]:![]:!![],'where':_0x3da50d[_0x81ac('0x17')]?_0x3da50d[_0x81ac('0x17')][_0x81ac('0x19')]||null:null,'attributes':_0x3da50d[_0x81ac('0x17')]?_0x3da50d[_0x81ac('0x17')][_0x81ac('0x1a')]||null:null,'limit':_0x3da50d[_0x81ac('0x17')]?_0x3da50d[_0x81ac('0x17')]['limit']||null:null,'include':_0x3da50d[_0x81ac('0x17')]?_0x3da50d[_0x81ac('0x17')]['include']?_[_0x81ac('0x1b')](_0x3da50d[_0x81ac('0x17')]['include'],function(_0x445799){return{'model':db[_0x445799[_0x81ac('0x1c')]],'as':_0x445799['as'],'attributes':_0x445799[_0x81ac('0x1a')],'include':_0x445799[_0x81ac('0x1d')]?_[_0x81ac('0x1b')](_0x445799['include'],function(_0xb86508){return{'model':db[_0xb86508['model']],'as':_0xb86508['as'],'attributes':_0xb86508[_0x81ac('0x1a')],'include':_0xb86508[_0x81ac('0x1d')]?_[_0x81ac('0x1b')](_0xb86508[_0x81ac('0x1d')],function(_0x5c7d7f){return{'model':db[_0x5c7d7f[_0x81ac('0x1c')]],'as':_0x5c7d7f['as'],'attributes':_0x5c7d7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x81ac('0xc')](function(_0x5cfb85){logger[_0x81ac('0xd')](_0x81ac('0x16'),_0x3da50d);logger[_0x81ac('0xf')](_0x81ac('0x16'),_0x3da50d,JSON[_0x81ac('0x1e')](_0x5cfb85));_0x5c7f5a(_0x5cfb85);})['catch'](function(_0x29cf65){logger[_0x81ac('0x11')](_0x81ac('0x16'),_0x29cf65[_0x81ac('0x14')],_0x3da50d);_0x30846d(_0x3330d0[_0x81ac('0x11')](0x1f4,_0x29cf65['message']));});});};exports[_0x81ac('0x1f')]=function(_0x5e632b){var _0xd131bb=this;return new Promise(function(_0x48f63a,_0x26654d){return db[_0x81ac('0x20')][_0x81ac('0x21')]({'raw':_0x5e632b[_0x81ac('0x17')]?_0x5e632b[_0x81ac('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x5e632b[_0x81ac('0x17')]?_0x5e632b[_0x81ac('0x17')][_0x81ac('0x19')]||null:null,'attributes':_0x5e632b[_0x81ac('0x17')]?_0x5e632b['options']['attributes']||null:null,'include':_0x5e632b[_0x81ac('0x17')]?_0x5e632b[_0x81ac('0x17')]['include']?_[_0x81ac('0x1b')](_0x5e632b[_0x81ac('0x17')][_0x81ac('0x1d')],function(_0x217852){return{'model':db[_0x217852[_0x81ac('0x1c')]],'as':_0x217852['as'],'attributes':_0x217852[_0x81ac('0x1a')],'include':_0x217852[_0x81ac('0x1d')]?_[_0x81ac('0x1b')](_0x217852[_0x81ac('0x1d')],function(_0x54275d){return{'model':db[_0x54275d['model']],'as':_0x54275d['as'],'attributes':_0x54275d[_0x81ac('0x1a')],'include':_0x54275d['include']?_[_0x81ac('0x1b')](_0x54275d[_0x81ac('0x1d')],function(_0x54c4f5){return{'model':db[_0x54c4f5['model']],'as':_0x54c4f5['as'],'attributes':_0x54c4f5[_0x81ac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x81ac('0xc')](function(_0x4d5f43){logger['info'](_0x81ac('0x1f'),_0x5e632b);logger[_0x81ac('0xf')](_0x81ac('0x1f'),_0x5e632b,JSON['stringify'](_0x4d5f43));_0x48f63a(_0x4d5f43);})[_0x81ac('0x15')](function(_0x5799b3){logger[_0x81ac('0x11')](_0x81ac('0x1f'),_0x5799b3[_0x81ac('0x14')],_0x5e632b);_0x26654d(_0xd131bb[_0x81ac('0x11')](0x1f4,_0x5799b3['message']));});});};exports[_0x81ac('0x22')]=function(_0x32177c){var _0xe6a868=this;return new Promise(function(_0x39913a,_0x1b2efa){return db[_0x81ac('0x20')][_0x81ac('0x23')](_0x32177c['body'],{'raw':_0x32177c['options']?_0x32177c[_0x81ac('0x17')][_0x81ac('0x18')]===undefined?!![]:![]:!![]})[_0x81ac('0xc')](function(_0x32714d){logger[_0x81ac('0xd')]('CreateCmHopper',_0x32177c);logger[_0x81ac('0xf')](_0x81ac('0x22'),_0x32177c,JSON[_0x81ac('0x1e')](_0x32714d));_0x39913a(_0x32714d);})[_0x81ac('0x15')](function(_0x3c4cf1){logger['error'](_0x81ac('0x22'),_0x3c4cf1[_0x81ac('0x14')],_0x32177c);_0x1b2efa(_0xe6a868[_0x81ac('0x11')](0x1f4,_0x3c4cf1['message']));});});};exports['UpdateCmHopper']=function(_0x86f38){var _0x173f80=this;return new Promise(function(_0x3ea806,_0x4c5ad7){return db[_0x81ac('0x20')][_0x81ac('0x24')](_0x86f38['body'],{'raw':_0x86f38[_0x81ac('0x17')]?_0x86f38[_0x81ac('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x86f38['options']?_0x86f38[_0x81ac('0x17')][_0x81ac('0x19')]||null:null,'attributes':_0x86f38[_0x81ac('0x17')]?_0x86f38[_0x81ac('0x17')][_0x81ac('0x1a')]||null:null,'limit':_0x86f38[_0x81ac('0x17')]?_0x86f38[_0x81ac('0x17')][_0x81ac('0x25')]||null:null})[_0x81ac('0xc')](function(_0x223320){logger[_0x81ac('0xd')](_0x81ac('0x26'),_0x86f38);logger[_0x81ac('0xf')](_0x81ac('0x26'),_0x86f38,JSON[_0x81ac('0x1e')](_0x223320));_0x3ea806(_0x223320);})['catch'](function(_0x57c4f3){logger[_0x81ac('0x11')](_0x81ac('0x26'),_0x57c4f3['message'],_0x86f38);_0x4c5ad7(_0x173f80[_0x81ac('0x11')](0x1f4,_0x57c4f3[_0x81ac('0x14')]));});});};exports[_0x81ac('0x27')]=function(_0x331b32){var _0x1237ea=this;return new Promise(function(_0x2c30ed,_0x5edb1b){return db['CmHopper'][_0x81ac('0x28')]({'where':_0x331b32[_0x81ac('0x17')]?_0x331b32[_0x81ac('0x17')][_0x81ac('0x19')]||null:null})[_0x81ac('0xc')](function(_0x12394a){logger[_0x81ac('0xd')](_0x81ac('0x27'),_0x331b32);logger[_0x81ac('0xf')](_0x81ac('0x27'),_0x331b32,JSON[_0x81ac('0x1e')](_0x12394a));_0x2c30ed(_0x12394a);})[_0x81ac('0x15')](function(_0xa85394){logger[_0x81ac('0x11')](_0x81ac('0x27'),_0xa85394[_0x81ac('0x14')],_0x331b32);_0x5edb1b(_0x1237ea[_0x81ac('0x11')](0x1f4,_0xa85394[_0x81ac('0x14')]));});});};exports[_0x81ac('0x29')]=function(_0x53255a){var _0x5317b6=this;return new Promise(function(_0x2fbf57,_0x46d954){return db['CmContact'][_0x81ac('0x2a')]()[_0x81ac('0xc')](function(_0x1f4415){return db[_0x81ac('0x2b')][_0x81ac('0x2c')](function(_0x5e7700){return db[_0x81ac('0x20')][_0x81ac('0x2d')]({'where':_0x53255a['options']?_0x53255a[_0x81ac('0x17')][_0x81ac('0x19')]||null:null,'attributes':_0x53255a[_0x81ac('0x17')]?_0x53255a[_0x81ac('0x17')]['attributes']||null:null,'limit':_0x53255a[_0x81ac('0x17')]?_0x53255a['options'][_0x81ac('0x25')]||null:null,'order':_0x53255a[_0x81ac('0x17')]?_0x53255a['options']['order']||null:null,'transaction':_0x5e7700,'lock':_0x5e7700[_0x81ac('0x2e')][_0x81ac('0x2f')],'include':[{'model':db[_0x81ac('0x30')],'as':_0x81ac('0x31'),'attributes':_['keys'](_0x1f4415)},{'model':db['User'],'as':_0x81ac('0x32'),'attributes':['id',_0x81ac('0x33'),_0x81ac('0x34')]}]})['then'](function(_0x1cc5e6){var _0x19d583=[];var _0x1aee61=[];for(var _0x26498a=0x0;_0x26498a<_0x1cc5e6[_0x81ac('0x35')];_0x26498a+=0x1){var _0x1ef550=_0x1cc5e6[_0x26498a][_0x81ac('0x36')];if(_0x1ef550===null){_0x19d583[_0x81ac('0x37')](_0x1cc5e6[_0x26498a][_0x81ac('0x24')](_0x53255a[_0x81ac('0x38')],{'transaction':_0x5e7700}));}else if(!_0x1aee61[_0x81ac('0x39')](_0x1ef550)){_0x1aee61[_0x81ac('0x37')](_0x1ef550);_0x19d583['push'](_0x1cc5e6[_0x26498a][_0x81ac('0x24')](_0x53255a[_0x81ac('0x38')],{'transaction':_0x5e7700}));}}return BPromise['all'](_0x19d583);});})['then'](function(_0x2ce30c){logger[_0x81ac('0xd')](_0x81ac('0x29'),_0x53255a);logger[_0x81ac('0xf')](_0x81ac('0x29'),_0x53255a,JSON[_0x81ac('0x1e')](_0x2ce30c));_0x2fbf57(_0x2ce30c);})['catch'](function(_0x1e9401){logger[_0x81ac('0x11')](_0x81ac('0x29'),_0x1e9401[_0x81ac('0x14')],_0x53255a);_0x46d954(_0x5317b6[_0x81ac('0x11')](0x1f4,_0x1e9401[_0x81ac('0x14')]));});});});};exports[_0x81ac('0x3a')]=function(_0x3b7820){var _0x567f75=this;return new Promise(function(_0x421c1e,_0x324850){return db[_0x81ac('0x2b')]['transaction'](function(_0x5c619b){return db[_0x81ac('0x3b')]['create'](_0x3b7820[_0x81ac('0x38')],{'raw':_0x3b7820[_0x81ac('0x17')]?_0x3b7820[_0x81ac('0x17')][_0x81ac('0x18')]===undefined?!![]:![]:!![],'transaction':_0x5c619b})[_0x81ac('0xc')](function(){return db[_0x81ac('0x20')][_0x81ac('0x28')]({'where':_0x3b7820[_0x81ac('0x17')]?_0x3b7820[_0x81ac('0x17')][_0x81ac('0x19')]||null:null,'transaction':_0x5c619b});});})['then'](function(_0x155492){logger[_0x81ac('0xd')](_0x81ac('0x3a'),_0x3b7820);logger[_0x81ac('0xf')]('MoveContactManagedDialer',_0x3b7820,JSON[_0x81ac('0x1e')](_0x155492));_0x421c1e(_0x155492);})[_0x81ac('0x15')](function(_0x13e6b1){logger[_0x81ac('0x11')]('MoveContactManagedDialer',_0x13e6b1[_0x81ac('0x14')],_0x3b7820);_0x324850(_0x567f75[_0x81ac('0x11')](0x1f4,_0x13e6b1[_0x81ac('0x14')]));});});};exports[_0x81ac('0x3c')]=function(_0x58c5e7){var _0x38f191=this;return new Promise(function(_0x23cc44,_0x4c2fd2){return db[_0x81ac('0x20')][_0x81ac('0x2d')]({'raw':_0x58c5e7[_0x81ac('0x17')]?_0x58c5e7[_0x81ac('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x58c5e7[_0x81ac('0x17')]?_0x58c5e7[_0x81ac('0x17')][_0x81ac('0x19')]||null:null,'attributes':[[db[_0x81ac('0x2b')]['fn'](_0x81ac('0x3d'),db[_0x81ac('0x2b')]['fn']('IF',db['sequelize'][_0x81ac('0x3e')](_0x81ac('0x3f')+util[_0x81ac('0x40')](_0x81ac('0x41'),moment()[_0x81ac('0x40')](_0x81ac('0x42')))+'\x20,\x201,\x20null'))),_0x81ac('0x43')]]})[_0x81ac('0xc')](function(_0x5bbcd7){logger[_0x81ac('0xd')](_0x81ac('0x3c'),_0x58c5e7);logger[_0x81ac('0xf')]('CountReScheduled',_0x58c5e7,JSON[_0x81ac('0x1e')](_0x5bbcd7));_0x23cc44(_0x5bbcd7);})[_0x81ac('0x15')](function(_0x30e869){logger[_0x81ac('0x11')]('CountReScheduled',_0x30e869[_0x81ac('0x14')],_0x58c5e7);_0x4c2fd2(_0x38f191[_0x81ac('0x11')](0x1f4,_0x30e869[_0x81ac('0x14')]));});});};exports[_0x81ac('0x44')]=function(_0x58ad14){var _0x1a9227=this;return new Promise(function(_0x2e1888,_0x10cf3f){return db[_0x81ac('0x30')][_0x81ac('0x2a')]()['then'](function(_0x10f62a){return db[_0x81ac('0x2b')]['transaction'](function(_0x45d6cc){return db[_0x81ac('0x20')][_0x81ac('0x2d')]({'where':_0x58ad14['options']?_0x58ad14[_0x81ac('0x17')]['where']||null:null,'attributes':_0x58ad14[_0x81ac('0x17')]?_0x58ad14[_0x81ac('0x17')][_0x81ac('0x1a')]||null:null,'limit':0x1,'order':_0x58ad14['options']?_0x58ad14[_0x81ac('0x17')]['order']||null:null,'group':db[_0x81ac('0x20')][_0x81ac('0x36')],'transaction':_0x45d6cc,'lock':_0x45d6cc['LOCK'][_0x81ac('0x2f')],'include':_0x58ad14[_0x81ac('0x17')]?_0x58ad14[_0x81ac('0x17')][_0x81ac('0x1d')]?_['map'](_0x58ad14[_0x81ac('0x17')][_0x81ac('0x1d')],function(_0x1aed0c){return{'model':db[_0x1aed0c['model']],'as':_0x1aed0c['as'],'attributes':_0x1aed0c[_0x81ac('0x1a')],'include':_0x1aed0c[_0x81ac('0x1d')]?_['map'](_0x1aed0c[_0x81ac('0x1d')],function(_0x2f4677){return{'model':db[_0x2f4677[_0x81ac('0x1c')]],'as':_0x2f4677['as'],'attributes':_0x2f4677[_0x81ac('0x1a')],'include':_0x2f4677[_0x81ac('0x1d')]?_['map'](_0x2f4677[_0x81ac('0x1d')],function(_0x124175){return{'model':db[_0x124175['model']],'as':_0x124175['as'],'attributes':_0x124175['attributes']};}):[]};}):[]};}):[]:[]})[_0x81ac('0xc')](function(_0x73247e){var _0x51a94d=[];for(var _0xa78219=0x0;_0xa78219<_0x73247e[_0x81ac('0x35')];_0xa78219+=0x1){_0x51a94d[_0x81ac('0x37')](_0x73247e[_0xa78219][_0x81ac('0x24')](_0x58ad14[_0x81ac('0x38')],{'transaction':_0x45d6cc}));}return BPromise[_0x81ac('0x45')](_0x51a94d);});})[_0x81ac('0xc')](function(_0x9ed439){logger[_0x81ac('0xd')]('GetContactRecallMe',_0x58ad14);logger['debug'](_0x81ac('0x44'),_0x58ad14,JSON[_0x81ac('0x1e')](_0x9ed439));_0x2e1888(_0x9ed439);})['catch'](function(_0xf764be){logger[_0x81ac('0x11')](_0x81ac('0x44'),_0xf764be['message'],_0x58ad14);_0x10cf3f(_0x1a9227[_0x81ac('0x11')](0x1f4,_0xf764be[_0x81ac('0x14')]));});});});};exports[_0x81ac('0x46')]=function(_0x4da4a2){var _0xe6cc62=this;return new Promise(function(_0x141fd6,_0x5b6ae2){db[_0x81ac('0x30')][_0x81ac('0x2a')]()[_0x81ac('0xc')](function(_0x1bf366){return db['CmHopper'][_0x81ac('0x2d')]({'raw':_0x4da4a2['options']?_0x4da4a2[_0x81ac('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x4da4a2[_0x81ac('0x17')]?_0x4da4a2['options'][_0x81ac('0x19')]||null:null,'attributes':_0x4da4a2[_0x81ac('0x17')]?_0x4da4a2[_0x81ac('0x17')][_0x81ac('0x1a')]||null:null,'limit':_0x4da4a2[_0x81ac('0x17')]?_0x4da4a2[_0x81ac('0x17')][_0x81ac('0x25')]||null:null,'include':_0x4da4a2['options']?_0x4da4a2['options'][_0x81ac('0x1d')]?_['map'](_0x4da4a2['options'][_0x81ac('0x1d')],function(_0x42f76c){return{'model':db[_0x42f76c[_0x81ac('0x1c')]],'as':_0x42f76c['as'],'attributes':_0x42f76c['as']===_0x81ac('0x31')?_[_0x81ac('0x47')](_0x1bf366):_0x42f76c[_0x81ac('0x1a')],'include':_0x42f76c['include']?_[_0x81ac('0x1b')](_0x42f76c[_0x81ac('0x1d')],function(_0x3dba15){return{'model':db[_0x3dba15[_0x81ac('0x1c')]],'as':_0x3dba15['as'],'attributes':_0x3dba15[_0x81ac('0x1a')],'include':_0x3dba15['include']?_[_0x81ac('0x1b')](_0x3dba15['include'],function(_0x134951){return{'model':db[_0x134951[_0x81ac('0x1c')]],'as':_0x134951['as'],'attributes':_0x134951[_0x81ac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x81ac('0xc')](function(_0x26bdb0){logger[_0x81ac('0xd')](_0x81ac('0x16'),_0x4da4a2);logger[_0x81ac('0xf')]('GetCmHopper',_0x4da4a2,JSON['stringify'](_0x26bdb0));_0x141fd6(_0x26bdb0);})['catch'](function(_0x56f115){logger[_0x81ac('0x11')](_0x81ac('0x16'),_0x56f115['message'],_0x4da4a2);_0x5b6ae2(_0xe6cc62[_0x81ac('0x11')](0x1f4,_0x56f115[_0x81ac('0x14')]));});});});};
\ No newline at end of file
+var _0xc823=['map','catch','find','ShowCmHopper','create','body','CreateCmHopper','UpdateCmHopper','update','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','transaction','order','UPDATE','name','voicePause','UserId','includes','push','all','length','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','MoveContactManagedDialer','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','COUNT','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','CountReScheduled','GetContactRecallMe','LOCK','GetCmHopperPreview','keys','ResetActiveCalls','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','limit','include','model'];(function(_0x2603b1,_0x3d9a8b){var _0x31d5d8=function(_0xf6df1c){while(--_0xf6df1c){_0x2603b1['push'](_0x2603b1['shift']());}};_0x31d5d8(++_0x3d9a8b);}(_0xc823,0xc0));var _0x3c82=function(_0x3fe4c7,_0x3441d5){_0x3fe4c7=_0x3fe4c7-0x0;var _0x141bda=_0xc823[_0x3fe4c7];return _0x141bda;};'use strict';var _=require(_0x3c82('0x0'));var util=require(_0x3c82('0x1'));var moment=require(_0x3c82('0x2'));var BPromise=require(_0x3c82('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3c82('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3c82('0x5'))(_0x3c82('0x6'));var config=require(_0x3c82('0x7'));var jayson=require(_0x3c82('0x8'));var client=jayson[_0x3c82('0x9')][_0x3c82('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x275486,_0x1b0607,_0x3ca64f){return new BPromise(function(_0x57fc29,_0x291000){return client['request'](_0x275486,_0x3ca64f)[_0x3c82('0xb')](function(_0x650850){logger[_0x3c82('0xc')](_0x3c82('0xd'),_0x1b0607,_0x3c82('0xe'));logger[_0x3c82('0xf')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x1b0607,_0x3c82('0xe'),JSON[_0x3c82('0x10')](_0x650850));if(_0x650850[_0x3c82('0x11')]){if(_0x650850[_0x3c82('0x11')][_0x3c82('0x12')]===0x1f4){logger[_0x3c82('0x11')](_0x3c82('0xd'),_0x1b0607,_0x650850['error'][_0x3c82('0x13')]);return _0x291000(_0x650850[_0x3c82('0x11')]['message']);}logger[_0x3c82('0x11')](_0x3c82('0xd'),_0x1b0607,_0x650850[_0x3c82('0x11')][_0x3c82('0x13')]);return _0x57fc29(_0x650850[_0x3c82('0x11')][_0x3c82('0x13')]);}else{logger['info'](_0x3c82('0xd'),_0x1b0607,_0x3c82('0xe'));_0x57fc29(_0x650850['result'][_0x3c82('0x13')]);}})['catch'](function(_0xfd557a){logger[_0x3c82('0x11')](_0x3c82('0xd'),_0x1b0607,_0xfd557a);_0x291000(_0xfd557a);});});}exports[_0x3c82('0x14')]=function(_0x5a38f0){var _0x520862=this;return new Promise(function(_0x475e7a,_0x36625f){return db[_0x3c82('0x15')][_0x3c82('0x16')]({'raw':_0x5a38f0[_0x3c82('0x17')]?_0x5a38f0[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![],'where':_0x5a38f0[_0x3c82('0x17')]?_0x5a38f0['options'][_0x3c82('0x19')]||null:null,'attributes':_0x5a38f0[_0x3c82('0x17')]?_0x5a38f0[_0x3c82('0x17')][_0x3c82('0x1a')]||null:null,'limit':_0x5a38f0['options']?_0x5a38f0[_0x3c82('0x17')][_0x3c82('0x1b')]||null:null,'include':_0x5a38f0[_0x3c82('0x17')]?_0x5a38f0['options'][_0x3c82('0x1c')]?_['map'](_0x5a38f0['options'][_0x3c82('0x1c')],function(_0x5205f0){return{'model':db[_0x5205f0[_0x3c82('0x1d')]],'as':_0x5205f0['as'],'attributes':_0x5205f0[_0x3c82('0x1a')],'include':_0x5205f0['include']?_[_0x3c82('0x1e')](_0x5205f0[_0x3c82('0x1c')],function(_0x12deda){return{'model':db[_0x12deda[_0x3c82('0x1d')]],'as':_0x12deda['as'],'attributes':_0x12deda['attributes'],'include':_0x12deda[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x12deda['include'],function(_0xbefeb){return{'model':db[_0xbefeb[_0x3c82('0x1d')]],'as':_0xbefeb['as'],'attributes':_0xbefeb[_0x3c82('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3c82('0xb')](function(_0x780852){logger[_0x3c82('0xc')](_0x3c82('0x14'),_0x5a38f0);logger[_0x3c82('0xf')](_0x3c82('0x14'),_0x5a38f0,JSON[_0x3c82('0x10')](_0x780852));_0x475e7a(_0x780852);})[_0x3c82('0x1f')](function(_0x152ef7){logger[_0x3c82('0x11')](_0x3c82('0x14'),_0x152ef7['message'],_0x5a38f0);_0x36625f(_0x520862[_0x3c82('0x11')](0x1f4,_0x152ef7[_0x3c82('0x13')]));});});};exports['ShowCmHopper']=function(_0x111a80){var _0x42b128=this;return new Promise(function(_0x3dfc84,_0x4dedae){return db[_0x3c82('0x15')][_0x3c82('0x20')]({'raw':_0x111a80[_0x3c82('0x17')]?_0x111a80[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![],'where':_0x111a80[_0x3c82('0x17')]?_0x111a80['options'][_0x3c82('0x19')]||null:null,'attributes':_0x111a80['options']?_0x111a80[_0x3c82('0x17')][_0x3c82('0x1a')]||null:null,'include':_0x111a80[_0x3c82('0x17')]?_0x111a80[_0x3c82('0x17')]['include']?_['map'](_0x111a80[_0x3c82('0x17')][_0x3c82('0x1c')],function(_0x207fc6){return{'model':db[_0x207fc6[_0x3c82('0x1d')]],'as':_0x207fc6['as'],'attributes':_0x207fc6['attributes'],'include':_0x207fc6[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x207fc6[_0x3c82('0x1c')],function(_0x2c1095){return{'model':db[_0x2c1095[_0x3c82('0x1d')]],'as':_0x2c1095['as'],'attributes':_0x2c1095['attributes'],'include':_0x2c1095[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x2c1095[_0x3c82('0x1c')],function(_0x5ecfde){return{'model':db[_0x5ecfde[_0x3c82('0x1d')]],'as':_0x5ecfde['as'],'attributes':_0x5ecfde[_0x3c82('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3c82('0xb')](function(_0x148547){logger['info'](_0x3c82('0x21'),_0x111a80);logger['debug']('ShowCmHopper',_0x111a80,JSON[_0x3c82('0x10')](_0x148547));_0x3dfc84(_0x148547);})[_0x3c82('0x1f')](function(_0x1a7ea8){logger[_0x3c82('0x11')](_0x3c82('0x21'),_0x1a7ea8['message'],_0x111a80);_0x4dedae(_0x42b128[_0x3c82('0x11')](0x1f4,_0x1a7ea8[_0x3c82('0x13')]));});});};exports['CreateCmHopper']=function(_0x5b6875){var _0x585d14=this;return new Promise(function(_0x347542,_0x41b5d6){return db[_0x3c82('0x15')][_0x3c82('0x22')](_0x5b6875[_0x3c82('0x23')],{'raw':_0x5b6875[_0x3c82('0x17')]?_0x5b6875[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![]})[_0x3c82('0xb')](function(_0x1221e6){logger[_0x3c82('0xc')](_0x3c82('0x24'),_0x5b6875);logger['debug'](_0x3c82('0x24'),_0x5b6875,JSON[_0x3c82('0x10')](_0x1221e6));_0x347542(_0x1221e6);})[_0x3c82('0x1f')](function(_0x240706){logger['error']('CreateCmHopper',_0x240706['message'],_0x5b6875);_0x41b5d6(_0x585d14[_0x3c82('0x11')](0x1f4,_0x240706[_0x3c82('0x13')]));});});};exports[_0x3c82('0x25')]=function(_0x4fe07e){var _0x424aec=this;return new Promise(function(_0x212c08,_0x1c5bef){return db[_0x3c82('0x15')][_0x3c82('0x26')](_0x4fe07e[_0x3c82('0x23')],{'raw':_0x4fe07e['options']?_0x4fe07e[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4fe07e['options']?_0x4fe07e[_0x3c82('0x17')][_0x3c82('0x19')]||null:null,'attributes':_0x4fe07e[_0x3c82('0x17')]?_0x4fe07e['options'][_0x3c82('0x1a')]||null:null,'limit':_0x4fe07e[_0x3c82('0x17')]?_0x4fe07e[_0x3c82('0x17')][_0x3c82('0x1b')]||null:null})[_0x3c82('0xb')](function(_0x3d9563){logger[_0x3c82('0xc')](_0x3c82('0x25'),_0x4fe07e);logger[_0x3c82('0xc')](_0x3c82('0x27'),JSON[_0x3c82('0x10')](_0x4fe07e['options'][_0x3c82('0x19')]),_0x4fe07e['body'][_0x3c82('0x28')]);logger[_0x3c82('0xf')]('UpdateCmHopper',_0x4fe07e,JSON[_0x3c82('0x10')](_0x3d9563));_0x212c08(_0x3d9563);})[_0x3c82('0x1f')](function(_0x298892){logger['error']('UpdateCmHopper',_0x298892['message'],_0x4fe07e);_0x1c5bef(_0x424aec['error'](0x1f4,_0x298892[_0x3c82('0x13')]));});});};exports[_0x3c82('0x29')]=function(_0x114d84){var _0x1cfccc=this;return new Promise(function(_0x7a162,_0x2a926e){return db['CmHopper'][_0x3c82('0x2a')]({'where':_0x114d84[_0x3c82('0x17')]?_0x114d84[_0x3c82('0x17')][_0x3c82('0x19')]||null:null})['then'](function(_0x3a64d7){logger[_0x3c82('0xc')](_0x3c82('0x29'),_0x114d84);logger[_0x3c82('0xf')](_0x3c82('0x29'),_0x114d84,JSON[_0x3c82('0x10')](_0x3a64d7));_0x7a162(_0x3a64d7);})[_0x3c82('0x1f')](function(_0x173e3d){logger[_0x3c82('0x11')](_0x3c82('0x29'),_0x173e3d['message'],_0x114d84);_0x2a926e(_0x1cfccc[_0x3c82('0x11')](0x1f4,_0x173e3d[_0x3c82('0x13')]));});});};exports[_0x3c82('0x2b')]=function(_0x41983d){var _0x5bef79=this;return new Promise(function(_0x554107,_0x2ca0a8){return db[_0x3c82('0x2c')][_0x3c82('0x2d')]()[_0x3c82('0xb')](function(_0x3fc6c1){return db[_0x3c82('0x2e')][_0x3c82('0x2f')](function(_0x47f1fa){return db[_0x3c82('0x15')][_0x3c82('0x16')]({'where':_0x41983d[_0x3c82('0x17')]?_0x41983d[_0x3c82('0x17')]['where']||null:null,'attributes':_0x41983d[_0x3c82('0x17')]?_0x41983d[_0x3c82('0x17')][_0x3c82('0x1a')]||null:null,'limit':_0x41983d[_0x3c82('0x17')]?_0x41983d[_0x3c82('0x17')][_0x3c82('0x1b')]||null:null,'order':_0x41983d[_0x3c82('0x17')]?_0x41983d[_0x3c82('0x17')][_0x3c82('0x30')]||null:null,'transaction':_0x47f1fa,'lock':_0x47f1fa['LOCK'][_0x3c82('0x31')],'include':[{'model':db[_0x3c82('0x2c')],'as':'Contact','attributes':_['keys'](_0x3fc6c1)},{'model':db['User'],'as':'Agent','attributes':['id',_0x3c82('0x32'),_0x3c82('0x33')]}]})['then'](function(_0x5df68b){var _0x32a612=[];var _0x491da6=[];for(var _0x4cc0cd=0x0;_0x4cc0cd<_0x5df68b['length'];_0x4cc0cd+=0x1){var _0x37f7f6=_0x5df68b[_0x4cc0cd][_0x3c82('0x34')];if(_0x37f7f6===null){_0x32a612['push'](_0x5df68b[_0x4cc0cd][_0x3c82('0x26')](_0x41983d[_0x3c82('0x23')],{'transaction':_0x47f1fa}));}else if(!_0x491da6[_0x3c82('0x35')](_0x37f7f6)){_0x491da6[_0x3c82('0x36')](_0x37f7f6);_0x32a612['push'](_0x5df68b[_0x4cc0cd][_0x3c82('0x26')](_0x41983d['body'],{'transaction':_0x47f1fa}));}}return BPromise[_0x3c82('0x37')](_0x32a612);});})[_0x3c82('0xb')](function(_0x1c4d38){logger[_0x3c82('0xc')]('GetContactDialer',_0x41983d);if(_0x1c4d38[_0x3c82('0x38')]>0x0){logger[_0x3c82('0xc')](_0x3c82('0x39'),_0x1c4d38[0x0][_0x3c82('0x3a')]['id'],_0x1c4d38[0x0][_0x3c82('0x3a')]['ContactId'],_0x1c4d38[0x0][_0x3c82('0x3a')][_0x3c82('0x28')]);}logger['debug'](_0x3c82('0x2b'),_0x41983d,JSON['stringify'](_0x1c4d38));_0x554107(_0x1c4d38);})[_0x3c82('0x1f')](function(_0x5d8d0c){logger[_0x3c82('0x11')](_0x3c82('0x2b'),_0x5d8d0c[_0x3c82('0x13')],_0x41983d);_0x2ca0a8(_0x5bef79[_0x3c82('0x11')](0x1f4,_0x5d8d0c['message']));});});});};exports[_0x3c82('0x3b')]=function(_0x141581){var _0x3179b4=this;return new Promise(function(_0x3d4d75,_0xb661c0){return db['sequelize']['transaction'](function(_0x149e48){return db[_0x3c82('0x3c')][_0x3c82('0x22')](_0x141581[_0x3c82('0x23')],{'raw':_0x141581[_0x3c82('0x17')]?_0x141581[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![],'transaction':_0x149e48})[_0x3c82('0xb')](function(){logger[_0x3c82('0xc')](_0x3c82('0x3d'),JSON[_0x3c82('0x10')](_0x141581['options']['where']),_0x141581[_0x3c82('0x17')]['where'][_0x3c82('0x28')]);return db['CmHopper']['destroy']({'where':_0x141581[_0x3c82('0x17')]?_0x141581[_0x3c82('0x17')][_0x3c82('0x19')]||null:null,'transaction':_0x149e48});});})[_0x3c82('0xb')](function(_0x421268){logger[_0x3c82('0xc')](_0x3c82('0x3b'),_0x141581);logger[_0x3c82('0xf')](_0x3c82('0x3b'),_0x141581,JSON[_0x3c82('0x10')](_0x421268));_0x3d4d75(_0x421268);})['catch'](function(_0x389cda){logger[_0x3c82('0x11')](_0x3c82('0x3b'),_0x389cda[_0x3c82('0x13')],_0x141581);_0xb661c0(_0x3179b4[_0x3c82('0x11')](0x1f4,_0x389cda[_0x3c82('0x13')]));});});};exports['CountReScheduled']=function(_0x5debce){var _0x4a1e33=this;return new Promise(function(_0x26cc09,_0x1a56d3){return db[_0x3c82('0x15')]['findAll']({'raw':_0x5debce[_0x3c82('0x17')]?_0x5debce[_0x3c82('0x17')][_0x3c82('0x18')]===undefined?!![]:![]:!![],'where':_0x5debce[_0x3c82('0x17')]?_0x5debce['options']['where']||null:null,'attributes':[[db[_0x3c82('0x2e')]['fn'](_0x3c82('0x3e'),db[_0x3c82('0x2e')]['fn']('IF',db['sequelize']['literal'](_0x3c82('0x3f')+util[_0x3c82('0x40')](_0x3c82('0x41'),moment()[_0x3c82('0x40')](_0x3c82('0x42')))+'\x20,\x201,\x20null'))),_0x3c82('0x43')]]})[_0x3c82('0xb')](function(_0x179fce){logger[_0x3c82('0xc')]('CountReScheduled',_0x5debce);logger[_0x3c82('0xf')](_0x3c82('0x44'),_0x5debce,JSON[_0x3c82('0x10')](_0x179fce));_0x26cc09(_0x179fce);})['catch'](function(_0x9a0f65){logger['error']('CountReScheduled',_0x9a0f65['message'],_0x5debce);_0x1a56d3(_0x4a1e33[_0x3c82('0x11')](0x1f4,_0x9a0f65['message']));});});};exports[_0x3c82('0x45')]=function(_0x2e3e69){var _0x4c77fe=this;return new Promise(function(_0x2faee1,_0x1eb71b){return db['CmContact'][_0x3c82('0x2d')]()[_0x3c82('0xb')](function(_0x357a75){return db['sequelize']['transaction'](function(_0x30a198){return db['CmHopper']['findAll']({'where':_0x2e3e69[_0x3c82('0x17')]?_0x2e3e69[_0x3c82('0x17')][_0x3c82('0x19')]||null:null,'attributes':_0x2e3e69[_0x3c82('0x17')]?_0x2e3e69['options'][_0x3c82('0x1a')]||null:null,'limit':0x1,'order':_0x2e3e69[_0x3c82('0x17')]?_0x2e3e69[_0x3c82('0x17')][_0x3c82('0x30')]||null:null,'group':db[_0x3c82('0x15')][_0x3c82('0x34')],'transaction':_0x30a198,'lock':_0x30a198[_0x3c82('0x46')]['UPDATE'],'include':_0x2e3e69['options']?_0x2e3e69['options'][_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x2e3e69[_0x3c82('0x17')][_0x3c82('0x1c')],function(_0x82a612){return{'model':db[_0x82a612[_0x3c82('0x1d')]],'as':_0x82a612['as'],'attributes':_0x82a612[_0x3c82('0x1a')],'include':_0x82a612[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x82a612[_0x3c82('0x1c')],function(_0x1a7702){return{'model':db[_0x1a7702[_0x3c82('0x1d')]],'as':_0x1a7702['as'],'attributes':_0x1a7702[_0x3c82('0x1a')],'include':_0x1a7702[_0x3c82('0x1c')]?_['map'](_0x1a7702[_0x3c82('0x1c')],function(_0x259cdc){return{'model':db[_0x259cdc[_0x3c82('0x1d')]],'as':_0x259cdc['as'],'attributes':_0x259cdc[_0x3c82('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3c82('0xb')](function(_0x1fb5c9){var _0x494527=[];for(var _0x4261a1=0x0;_0x4261a1<_0x1fb5c9[_0x3c82('0x38')];_0x4261a1+=0x1){_0x494527[_0x3c82('0x36')](_0x1fb5c9[_0x4261a1][_0x3c82('0x26')](_0x2e3e69['body'],{'transaction':_0x30a198}));}return BPromise[_0x3c82('0x37')](_0x494527);});})['then'](function(_0x4d5fe9){logger[_0x3c82('0xc')]('GetContactRecallMe',_0x2e3e69);logger[_0x3c82('0xf')](_0x3c82('0x45'),_0x2e3e69,JSON[_0x3c82('0x10')](_0x4d5fe9));_0x2faee1(_0x4d5fe9);})[_0x3c82('0x1f')](function(_0x4dc33c){logger[_0x3c82('0x11')](_0x3c82('0x45'),_0x4dc33c[_0x3c82('0x13')],_0x2e3e69);_0x1eb71b(_0x4c77fe['error'](0x1f4,_0x4dc33c[_0x3c82('0x13')]));});});});};exports[_0x3c82('0x47')]=function(_0x84ff74){var _0x52594c=this;return new Promise(function(_0x2d95a8,_0x56f539){db[_0x3c82('0x2c')]['describe']()[_0x3c82('0xb')](function(_0x2c848f){return db[_0x3c82('0x15')][_0x3c82('0x16')]({'raw':_0x84ff74['options']?_0x84ff74['options'][_0x3c82('0x18')]===undefined?!![]:![]:!![],'where':_0x84ff74[_0x3c82('0x17')]?_0x84ff74[_0x3c82('0x17')]['where']||null:null,'attributes':_0x84ff74[_0x3c82('0x17')]?_0x84ff74[_0x3c82('0x17')][_0x3c82('0x1a')]||null:null,'limit':_0x84ff74[_0x3c82('0x17')]?_0x84ff74['options'][_0x3c82('0x1b')]||null:null,'include':_0x84ff74['options']?_0x84ff74[_0x3c82('0x17')][_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x84ff74['options'][_0x3c82('0x1c')],function(_0x860a56){return{'model':db[_0x860a56[_0x3c82('0x1d')]],'as':_0x860a56['as'],'attributes':_0x860a56['as']==='Contact'?_[_0x3c82('0x48')](_0x2c848f):_0x860a56[_0x3c82('0x1a')],'include':_0x860a56[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x860a56[_0x3c82('0x1c')],function(_0x3b338f){return{'model':db[_0x3b338f[_0x3c82('0x1d')]],'as':_0x3b338f['as'],'attributes':_0x3b338f[_0x3c82('0x1a')],'include':_0x3b338f[_0x3c82('0x1c')]?_[_0x3c82('0x1e')](_0x3b338f['include'],function(_0x2b2b53){return{'model':db[_0x2b2b53[_0x3c82('0x1d')]],'as':_0x2b2b53['as'],'attributes':_0x2b2b53[_0x3c82('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3c82('0xb')](function(_0x26b6de){logger['info']('GetCmHopper',_0x84ff74);logger[_0x3c82('0xf')](_0x3c82('0x14'),_0x84ff74,JSON['stringify'](_0x26b6de));_0x2d95a8(_0x26b6de);})['catch'](function(_0x5de6af){logger[_0x3c82('0x11')]('GetCmHopper',_0x5de6af[_0x3c82('0x13')],_0x84ff74);_0x56f539(_0x52594c[_0x3c82('0x11')](0x1f4,_0x5de6af[_0x3c82('0x13')]));});});});};exports['ResetActiveCalls']=function(_0x37bb3a){var _0x3d65c9=this;return new Promise(function(_0xf681ce,_0x16ce18){return db[_0x3c82('0x2e')]['transaction'](function(_0x549eb2){return db[_0x3c82('0x15')]['update']({'active':![]},{'where':{},'transaction':_0x549eb2})['then'](function(_0x264c7e){logger[_0x3c82('0xc')]('ResetActiveCalls',_0x37bb3a);logger[_0x3c82('0xf')](_0x3c82('0x49'),_0x37bb3a,JSON[_0x3c82('0x10')](_0x264c7e));_0xf681ce(_0x264c7e);})[_0x3c82('0x1f')](function(_0x3a4ba7){logger[_0x3c82('0x11')](_0x3c82('0x49'),_0x3a4ba7['message'],_0x37bb3a);_0x16ce18(_0x3d65c9[_0x3c82('0x11')](0x1f4,_0x3a4ba7[_0x3c82('0x13')]));});});});};
\ No newline at end of file
index 7e7c43c..f9e9a55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f70=['getPreview','put','destroy','multer','util','path','fs-extra','../../config/environment','./cmHopper.controller','get','isAuthenticated','index','/describe','describe','/opencontacts','/:id','show','post','create','/preview'];(function(_0x1da06b,_0x295519){var _0x541dfe=function(_0x161d70){while(--_0x161d70){_0x1da06b['push'](_0x1da06b['shift']());}};_0x541dfe(++_0x295519);}(_0x8f70,0xdf));var _0x08f7=function(_0x1ea71e,_0x5df6d0){_0x1ea71e=_0x1ea71e-0x0;var _0x3ac787=_0x8f70[_0x1ea71e];return _0x3ac787;};'use strict';var multer=require(_0x08f7('0x0'));var util=require(_0x08f7('0x1'));var path=require(_0x08f7('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x08f7('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x08f7('0x4'));var controller=require(_0x08f7('0x5'));router[_0x08f7('0x6')]('/',auth[_0x08f7('0x7')](),controller[_0x08f7('0x8')]);router[_0x08f7('0x6')](_0x08f7('0x9'),auth[_0x08f7('0x7')](),controller[_0x08f7('0xa')]);router[_0x08f7('0x6')](_0x08f7('0xb'),auth[_0x08f7('0x7')](),controller['getOpenContacts']);router[_0x08f7('0x6')](_0x08f7('0xc'),auth[_0x08f7('0x7')](),controller[_0x08f7('0xd')]);router[_0x08f7('0xe')]('/',auth[_0x08f7('0x7')](),controller[_0x08f7('0xf')]);router[_0x08f7('0xe')](_0x08f7('0x10'),auth['isAuthenticated'](),controller[_0x08f7('0x11')]);router[_0x08f7('0x12')](_0x08f7('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x08f7('0xc'),auth[_0x08f7('0x7')](),controller[_0x08f7('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x20a4=['express','Router','fs-extra','../../components/interaction/service','./cmHopper.controller','get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/:id','show','post','/preview','getPreview','put','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x20a4,0x129));var _0x420a=function(_0x2225c9,_0xe99b2e){_0x2225c9=_0x2225c9-0x0;var _0xe7b099=_0x20a4[_0x2225c9];return _0xe7b099;};'use strict';var multer=require(_0x420a('0x0'));var util=require(_0x420a('0x1'));var path=require('path');var timeout=require(_0x420a('0x2'));var express=require(_0x420a('0x3'));var router=express[_0x420a('0x4')]();var fs_extra=require(_0x420a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x420a('0x6'));var config=require('../../config/environment');var controller=require(_0x420a('0x7'));router[_0x420a('0x8')]('/',auth[_0x420a('0x9')](),controller[_0x420a('0xa')]);router['get'](_0x420a('0xb'),auth[_0x420a('0x9')](),controller[_0x420a('0xc')]);router[_0x420a('0x8')](_0x420a('0xd'),auth[_0x420a('0x9')](),controller[_0x420a('0xe')]);router[_0x420a('0x8')](_0x420a('0xf'),auth[_0x420a('0x9')](),controller[_0x420a('0x10')]);router[_0x420a('0x11')]('/',auth[_0x420a('0x9')](),controller['create']);router[_0x420a('0x11')](_0x420a('0x12'),auth[_0x420a('0x9')](),controller[_0x420a('0x13')]);router[_0x420a('0x14')](_0x420a('0xf'),auth['isAuthenticated'](),controller[_0x420a('0x15')]);router[_0x420a('0x16')](_0x420a('0xf'),auth['isAuthenticated'](),controller[_0x420a('0x17')]);module[_0x420a('0x18')]=router;
\ No newline at end of file
index f05c416..32089e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x377e=['moment','INTEGER','contactListQueue'];(function(_0x4db46b,_0xadcb1a){var _0x565be8=function(_0x5d2e50){while(--_0x5d2e50){_0x4db46b['push'](_0x4db46b['shift']());}};_0x565be8(++_0xadcb1a);}(_0x377e,0x1e9));var _0xe377=function(_0x165718,_0x49ae0b){_0x165718=_0x165718-0x0;var _0x2e57b2=_0x377e[_0x165718];return _0x2e57b2;};'use strict';var moment=require(_0xe377('0x0'));var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0xe377('0x1')],'unique':_0xe377('0x2')},'ListId':{'type':Sequelize[_0xe377('0x1')],'unique':_0xe377('0x2')},'VoiceQueueId':{'type':Sequelize[_0xe377('0x1')],'unique':_0xe377('0x2')}};
\ No newline at end of file
+var _0x5b20=['INTEGER','contactListQueue','moment','sequelize','exports','STRING'];(function(_0x26fba0,_0x81977){var _0xb159c9=function(_0x1ca3e9){while(--_0x1ca3e9){_0x26fba0['push'](_0x26fba0['shift']());}};_0xb159c9(++_0x81977);}(_0x5b20,0x86));var _0x05b2=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x5b20[_0x122ef9];return _0x42fba0;};'use strict';var moment=require(_0x05b2('0x0'));var Sequelize=require(_0x05b2('0x1'));module[_0x05b2('0x2')]={'phone':{'type':Sequelize[_0x05b2('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x05b2('0x4')],'unique':_0x05b2('0x5')},'ListId':{'type':Sequelize[_0x05b2('0x4')],'unique':_0x05b2('0x5')},'VoiceQueueId':{'type':Sequelize[_0x05b2('0x4')],'unique':_0x05b2('0x5')}};
\ No newline at end of file
index f73a7f0..d793086 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a44=['sox','to-csv','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','stack','name','CmHopperBlack','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','findAll','then','rows','catch','show','params','options','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path'];(function(_0x3d9565,_0x5db973){var _0x546f66=function(_0x137352){while(--_0x137352){_0x3d9565['push'](_0x3d9565['shift']());}};_0x546f66(++_0x5db973);}(_0x7a44,0x157));var _0x47a4=function(_0x27d9a2,_0x2fdec8){_0x27d9a2=_0x27d9a2-0x0;var _0x20e1fa=_0x7a44[_0x27d9a2];return _0x20e1fa;};'use strict';var emlformat=require(_0x47a4('0x0'));var rimraf=require(_0x47a4('0x1'));var zipdir=require(_0x47a4('0x2'));var jsonpatch=require(_0x47a4('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x47a4('0x4'));var util=require(_0x47a4('0x5'));var path=require(_0x47a4('0x6'));var sox=require(_0x47a4('0x7'));var csv=require(_0x47a4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a4('0x9'));var _=require('lodash');var squel=require(_0x47a4('0xa'));var crypto=require('crypto');var jsforce=require(_0x47a4('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x47a4('0xc'));var Papa=require(_0x47a4('0xd'));var Redis=require(_0x47a4('0xe'));var authService=require(_0x47a4('0xf'));var qs=require(_0x47a4('0x10'));var as=require(_0x47a4('0x11'));var hardwareService=require(_0x47a4('0x12'));var logger=require('../../config/logger')(_0x47a4('0x13'));var utils=require('../../config/utils');var config=require(_0x47a4('0x14'));var licenseUtil=require(_0x47a4('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x19d6f7,_0x2b4f7c){_0x2b4f7c=_0x2b4f7c||0xcc;return function(_0x470ac3){if(_0x470ac3){return _0x19d6f7[_0x47a4('0x16')](_0x2b4f7c);}return _0x19d6f7['status'](_0x2b4f7c)[_0x47a4('0x17')]();};}function respondWithResult(_0x4122e3,_0x3eda87){_0x3eda87=_0x3eda87||0xc8;return function(_0x5647d1){if(_0x5647d1){return _0x4122e3[_0x47a4('0x18')](_0x3eda87)[_0x47a4('0x19')](_0x5647d1);}};}function respondWithFilteredResult(_0x1eeb81,_0x419218){return function(_0x40af48){if(_0x40af48){var _0x2fdb17=typeof _0x419218['offset']==='undefined'&&typeof _0x419218['limit']===_0x47a4('0x1a');var _0x28f5e3=_0x40af48[_0x47a4('0x1b')];var _0x5c773c=_0x2fdb17?0x0:_0x419218[_0x47a4('0x1c')];var _0xdb9f5f=_0x2fdb17?_0x40af48['count']:_0x419218['offset']+_0x419218[_0x47a4('0x1d')];var _0x1bf995;if(_0xdb9f5f>=_0x28f5e3){_0xdb9f5f=_0x28f5e3;_0x1bf995=0xc8;}else{_0x1bf995=0xce;}_0x1eeb81[_0x47a4('0x18')](_0x1bf995);return _0x1eeb81[_0x47a4('0x1e')](_0x47a4('0x1f'),_0x5c773c+'-'+_0xdb9f5f+'/'+_0x28f5e3)[_0x47a4('0x19')](_0x40af48);}return null;};}function patchUpdates(_0x19ed34){return function(_0x27d2da){try{jsonpatch[_0x47a4('0x20')](_0x27d2da,_0x19ed34,!![]);}catch(_0x61134){return BPromise[_0x47a4('0x21')](_0x61134);}return _0x27d2da[_0x47a4('0x22')]();};}function saveUpdates(_0x582339,_0x187567){return function(_0x4a9d63){if(_0x4a9d63){return _0x4a9d63[_0x47a4('0x23')](_0x582339)['then'](function(_0x26c049){return _0x26c049;});}return null;};}function removeEntity(_0x55d34f,_0x5c3b57){return function(_0x2fa374){if(_0x2fa374){return _0x2fa374[_0x47a4('0x24')]()['then'](function(){_0x55d34f[_0x47a4('0x18')](0xcc)[_0x47a4('0x17')]();});}};}function handleEntityNotFound(_0x28157f,_0x409a9f){return function(_0xddac96){if(!_0xddac96){_0x28157f[_0x47a4('0x16')](0x194);}return _0xddac96;};}function handleError(_0x229bfe,_0x4b89ed){_0x4b89ed=_0x4b89ed||0x1f4;return function(_0x40bff0){logger['error'](_0x40bff0[_0x47a4('0x25')]);if(_0x40bff0['name']){delete _0x40bff0[_0x47a4('0x26')];}_0x229bfe[_0x47a4('0x18')](_0x4b89ed)['send'](_0x40bff0);};}exports['index']=function(_0x47fdaa,_0x227b42){var _0x362c99={},_0x286dde={},_0x22ec87={'count':0x0,'rows':[]};var _0x5cf00e=_['map'](db[_0x47a4('0x27')][_0x47a4('0x28')],function(_0x32fcd6){return{'name':_0x32fcd6[_0x47a4('0x29')],'type':_0x32fcd6[_0x47a4('0x2a')][_0x47a4('0x2b')]};});_0x286dde[_0x47a4('0x2c')]=_[_0x47a4('0x2d')](_0x5cf00e,_0x47a4('0x26'));_0x286dde[_0x47a4('0x2e')]=_[_0x47a4('0x2f')](_0x47fdaa[_0x47a4('0x2e')]);_0x286dde[_0x47a4('0x30')]=_[_0x47a4('0x31')](_0x286dde[_0x47a4('0x2c')],_0x286dde[_0x47a4('0x2e')]);_0x362c99[_0x47a4('0x32')]=_[_0x47a4('0x31')](_0x286dde[_0x47a4('0x2c')],qs[_0x47a4('0x33')](_0x47fdaa[_0x47a4('0x2e')]['fields']));_0x362c99[_0x47a4('0x32')]=_0x362c99['attributes'][_0x47a4('0x34')]?_0x362c99['attributes']:_0x286dde['model'];if(!_0x47fdaa[_0x47a4('0x2e')]['hasOwnProperty'](_0x47a4('0x35'))){_0x362c99[_0x47a4('0x1d')]=qs[_0x47a4('0x1d')](_0x47fdaa[_0x47a4('0x2e')][_0x47a4('0x1d')]);_0x362c99[_0x47a4('0x1c')]=qs['offset'](_0x47fdaa['query'][_0x47a4('0x1c')]);}_0x362c99['order']=qs[_0x47a4('0x36')](_0x47fdaa['query'][_0x47a4('0x36')]);_0x362c99[_0x47a4('0x37')]=qs['filters'](_[_0x47a4('0x38')](_0x47fdaa['query'],_0x286dde[_0x47a4('0x30')]),_0x5cf00e);if(_0x47fdaa['query']['filter']){_0x362c99[_0x47a4('0x37')]=_[_0x47a4('0x39')](_0x362c99[_0x47a4('0x37')],{'$or':_[_0x47a4('0x2d')](_0x5cf00e,function(_0x32155a){if(_0x32155a[_0x47a4('0x2a')]!==_0x47a4('0x3a')){var _0x47f6ef={};_0x47f6ef[_0x32155a[_0x47a4('0x26')]]={'$like':'%'+_0x47fdaa[_0x47a4('0x2e')][_0x47a4('0x3b')]+'%'};return _0x47f6ef;}})});}_0x362c99=_[_0x47a4('0x39')]({},_0x362c99,_0x47fdaa['options']);var _0x395d52={'where':_0x362c99[_0x47a4('0x37')]};return db['CmHopperBlack'][_0x47a4('0x1b')](_0x395d52)['then'](function(_0xf15944){_0x22ec87[_0x47a4('0x1b')]=_0xf15944;if(_0x47fdaa[_0x47a4('0x2e')]['includeAll']){_0x362c99['include']=[{'all':!![]}];}return db[_0x47a4('0x27')][_0x47a4('0x3c')](_0x362c99);})[_0x47a4('0x3d')](function(_0x1f1c28){_0x22ec87[_0x47a4('0x3e')]=_0x1f1c28;return _0x22ec87;})[_0x47a4('0x3d')](respondWithFilteredResult(_0x227b42,_0x362c99))[_0x47a4('0x3f')](handleError(_0x227b42,null));};exports[_0x47a4('0x40')]=function(_0x49c52f,_0x5ca45f){var _0x23056c={'raw':!![],'where':{'id':_0x49c52f[_0x47a4('0x41')]['id']}},_0x3ab545={};_0x3ab545[_0x47a4('0x2c')]=_['keys'](db['CmHopperBlack'][_0x47a4('0x28')]);_0x3ab545['query']=_[_0x47a4('0x2f')](_0x49c52f[_0x47a4('0x2e')]);_0x3ab545[_0x47a4('0x30')]=_[_0x47a4('0x31')](_0x3ab545[_0x47a4('0x2c')],_0x3ab545[_0x47a4('0x2e')]);_0x23056c[_0x47a4('0x32')]=_[_0x47a4('0x31')](_0x3ab545['model'],qs[_0x47a4('0x33')](_0x49c52f['query']['fields']));_0x23056c[_0x47a4('0x32')]=_0x23056c[_0x47a4('0x32')][_0x47a4('0x34')]?_0x23056c[_0x47a4('0x32')]:_0x3ab545[_0x47a4('0x2c')];if(_0x49c52f[_0x47a4('0x2e')]['includeAll']){_0x23056c['include']=[{'all':!![]}];}_0x23056c=_['merge']({},_0x23056c,_0x49c52f[_0x47a4('0x42')]);return db[_0x47a4('0x27')][_0x47a4('0x43')](_0x23056c)['then'](handleEntityNotFound(_0x5ca45f,null))[_0x47a4('0x3d')](respondWithResult(_0x5ca45f,null))['catch'](handleError(_0x5ca45f,null));};exports[_0x47a4('0x23')]=function(_0x190956,_0x31e0b2){if(_0x190956[_0x47a4('0x44')]['id']){delete _0x190956['body']['id'];}return db[_0x47a4('0x27')][_0x47a4('0x43')]({'where':{'id':_0x190956[_0x47a4('0x41')]['id']}})[_0x47a4('0x3d')](handleEntityNotFound(_0x31e0b2,null))[_0x47a4('0x3d')](saveUpdates(_0x190956[_0x47a4('0x44')],null))[_0x47a4('0x3d')](respondWithResult(_0x31e0b2,null))[_0x47a4('0x3f')](handleError(_0x31e0b2,null));};exports[_0x47a4('0x24')]=function(_0x36333b,_0x115d03){return db[_0x47a4('0x27')][_0x47a4('0x43')]({'where':{'id':_0x36333b['params']['id']}})[_0x47a4('0x3d')](handleEntityNotFound(_0x115d03,null))['then'](removeEntity(_0x115d03,null))['catch'](handleError(_0x115d03,null));};exports[_0x47a4('0x45')]=function(_0x3762f4,_0x3a4735){return db[_0x47a4('0x27')]['describe']()[_0x47a4('0x3d')](respondWithResult(_0x3a4735,null))['catch'](handleError(_0x3a4735,null));};
\ No newline at end of file
+var _0xe1c4=['jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','CmHopperBlack','type','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','rawAttributes','find','body','eml-format','rimraf','zip-dir','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xe1c4,0x1ec));var _0x4e1c=function(_0x19a631,_0x2bcdbe){_0x19a631=_0x19a631-0x0;var _0x590361=_0xe1c4[_0x19a631];return _0x590361;};'use strict';var emlformat=require(_0x4e1c('0x0'));var rimraf=require(_0x4e1c('0x1'));var zipdir=require(_0x4e1c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4e1c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4e1c('0x4'));var util=require(_0x4e1c('0x5'));var path=require(_0x4e1c('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4e1c('0x7'));var fs=require('fs');var fs_extra=require(_0x4e1c('0x8'));var _=require(_0x4e1c('0x9'));var squel=require(_0x4e1c('0xa'));var crypto=require(_0x4e1c('0xb'));var jsforce=require(_0x4e1c('0xc'));var deskjs=require(_0x4e1c('0xd'));var toCsv=require(_0x4e1c('0xe'));var querystring=require(_0x4e1c('0xf'));var Papa=require(_0x4e1c('0x10'));var Redis=require(_0x4e1c('0x11'));var authService=require(_0x4e1c('0x12'));var qs=require(_0x4e1c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4e1c('0x14'));var logger=require(_0x4e1c('0x15'))('api');var utils=require(_0x4e1c('0x16'));var config=require(_0x4e1c('0x17'));var licenseUtil=require(_0x4e1c('0x18'));var db=require(_0x4e1c('0x19'))['db'];function respondWithStatusCode(_0x54b2d1,_0xb4a030){_0xb4a030=_0xb4a030||0xcc;return function(_0x12178d){if(_0x12178d){return _0x54b2d1[_0x4e1c('0x1a')](_0xb4a030);}return _0x54b2d1[_0x4e1c('0x1b')](_0xb4a030)['end']();};}function respondWithResult(_0x531159,_0x550f27){_0x550f27=_0x550f27||0xc8;return function(_0x12e7fe){if(_0x12e7fe){return _0x531159[_0x4e1c('0x1b')](_0x550f27)[_0x4e1c('0x1c')](_0x12e7fe);}};}function respondWithFilteredResult(_0x201779,_0x4d47ec){return function(_0x2cd5bc){if(_0x2cd5bc){var _0x374c78=typeof _0x4d47ec[_0x4e1c('0x1d')]===_0x4e1c('0x1e')&&typeof _0x4d47ec[_0x4e1c('0x1f')]===_0x4e1c('0x1e');var _0x58d9e3=_0x2cd5bc[_0x4e1c('0x20')];var _0x399bcc=_0x374c78?0x0:_0x4d47ec[_0x4e1c('0x1d')];var _0x46a887=_0x374c78?_0x2cd5bc[_0x4e1c('0x20')]:_0x4d47ec[_0x4e1c('0x1d')]+_0x4d47ec[_0x4e1c('0x1f')];var _0x544b08;if(_0x46a887>=_0x58d9e3){_0x46a887=_0x58d9e3;_0x544b08=0xc8;}else{_0x544b08=0xce;}_0x201779[_0x4e1c('0x1b')](_0x544b08);return _0x201779[_0x4e1c('0x21')](_0x4e1c('0x22'),_0x399bcc+'-'+_0x46a887+'/'+_0x58d9e3)[_0x4e1c('0x1c')](_0x2cd5bc);}return null;};}function patchUpdates(_0x33da37){return function(_0x427cc1){try{jsonpatch[_0x4e1c('0x23')](_0x427cc1,_0x33da37,!![]);}catch(_0x53a020){return BPromise[_0x4e1c('0x24')](_0x53a020);}return _0x427cc1[_0x4e1c('0x25')]();};}function saveUpdates(_0xc57bcc,_0x169b4e){return function(_0x3dde0d){if(_0x3dde0d){return _0x3dde0d[_0x4e1c('0x26')](_0xc57bcc)[_0x4e1c('0x27')](function(_0x19ed77){return _0x19ed77;});}return null;};}function removeEntity(_0x45c13e,_0x5ada14){return function(_0x46ad33){if(_0x46ad33){return _0x46ad33[_0x4e1c('0x28')]()[_0x4e1c('0x27')](function(){_0x45c13e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x17f5a5,_0x551d50){return function(_0x25cc93){if(!_0x25cc93){_0x17f5a5[_0x4e1c('0x1a')](0x194);}return _0x25cc93;};}function handleError(_0x2a2ccb,_0x564b30){_0x564b30=_0x564b30||0x1f4;return function(_0x12364d){logger[_0x4e1c('0x29')](_0x12364d['stack']);if(_0x12364d[_0x4e1c('0x2a')]){delete _0x12364d[_0x4e1c('0x2a')];}_0x2a2ccb[_0x4e1c('0x1b')](_0x564b30)[_0x4e1c('0x2b')](_0x12364d);};}exports[_0x4e1c('0x2c')]=function(_0x5ef2f7,_0xeccf79){var _0x8e3e14={},_0x1b5ba8={},_0x1c4c4a={'count':0x0,'rows':[]};var _0x504259=_[_0x4e1c('0x2d')](db[_0x4e1c('0x2e')]['rawAttributes'],function(_0x46d181){return{'name':_0x46d181['fieldName'],'type':_0x46d181[_0x4e1c('0x2f')][_0x4e1c('0x30')]};});_0x1b5ba8[_0x4e1c('0x31')]=_[_0x4e1c('0x2d')](_0x504259,'name');_0x1b5ba8[_0x4e1c('0x32')]=_['keys'](_0x5ef2f7[_0x4e1c('0x32')]);_0x1b5ba8['filters']=_[_0x4e1c('0x33')](_0x1b5ba8[_0x4e1c('0x31')],_0x1b5ba8['query']);_0x8e3e14[_0x4e1c('0x34')]=_['intersection'](_0x1b5ba8[_0x4e1c('0x31')],qs[_0x4e1c('0x35')](_0x5ef2f7[_0x4e1c('0x32')][_0x4e1c('0x35')]));_0x8e3e14[_0x4e1c('0x34')]=_0x8e3e14[_0x4e1c('0x34')][_0x4e1c('0x36')]?_0x8e3e14[_0x4e1c('0x34')]:_0x1b5ba8[_0x4e1c('0x31')];if(!_0x5ef2f7[_0x4e1c('0x32')]['hasOwnProperty'](_0x4e1c('0x37'))){_0x8e3e14[_0x4e1c('0x1f')]=qs[_0x4e1c('0x1f')](_0x5ef2f7[_0x4e1c('0x32')][_0x4e1c('0x1f')]);_0x8e3e14[_0x4e1c('0x1d')]=qs['offset'](_0x5ef2f7['query'][_0x4e1c('0x1d')]);}_0x8e3e14[_0x4e1c('0x38')]=qs[_0x4e1c('0x39')](_0x5ef2f7[_0x4e1c('0x32')]['sort']);_0x8e3e14[_0x4e1c('0x3a')]=qs[_0x4e1c('0x3b')](_['pick'](_0x5ef2f7[_0x4e1c('0x32')],_0x1b5ba8[_0x4e1c('0x3b')]),_0x504259);if(_0x5ef2f7[_0x4e1c('0x32')]['filter']){_0x8e3e14[_0x4e1c('0x3a')]=_[_0x4e1c('0x3c')](_0x8e3e14['where'],{'$or':_[_0x4e1c('0x2d')](_0x504259,function(_0x128ddd){if(_0x128ddd[_0x4e1c('0x2f')]!==_0x4e1c('0x3d')){var _0x1cb1a3={};_0x1cb1a3[_0x128ddd[_0x4e1c('0x2a')]]={'$like':'%'+_0x5ef2f7['query']['filter']+'%'};return _0x1cb1a3;}})});}_0x8e3e14=_[_0x4e1c('0x3c')]({},_0x8e3e14,_0x5ef2f7[_0x4e1c('0x3e')]);var _0x390d05={'where':_0x8e3e14[_0x4e1c('0x3a')]};return db[_0x4e1c('0x2e')][_0x4e1c('0x20')](_0x390d05)[_0x4e1c('0x27')](function(_0x6838bc){_0x1c4c4a[_0x4e1c('0x20')]=_0x6838bc;if(_0x5ef2f7[_0x4e1c('0x32')][_0x4e1c('0x3f')]){_0x8e3e14['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0x4e1c('0x40')](_0x8e3e14);})[_0x4e1c('0x27')](function(_0xe26367){_0x1c4c4a[_0x4e1c('0x41')]=_0xe26367;return _0x1c4c4a;})[_0x4e1c('0x27')](respondWithFilteredResult(_0xeccf79,_0x8e3e14))[_0x4e1c('0x42')](handleError(_0xeccf79,null));};exports['show']=function(_0x18d021,_0x1da617){var _0x827f0a={'raw':!![],'where':{'id':_0x18d021[_0x4e1c('0x43')]['id']}},_0xdfb6d7={};_0xdfb6d7[_0x4e1c('0x31')]=_[_0x4e1c('0x44')](db[_0x4e1c('0x2e')][_0x4e1c('0x45')]);_0xdfb6d7[_0x4e1c('0x32')]=_[_0x4e1c('0x44')](_0x18d021['query']);_0xdfb6d7[_0x4e1c('0x3b')]=_[_0x4e1c('0x33')](_0xdfb6d7[_0x4e1c('0x31')],_0xdfb6d7[_0x4e1c('0x32')]);_0x827f0a[_0x4e1c('0x34')]=_[_0x4e1c('0x33')](_0xdfb6d7[_0x4e1c('0x31')],qs[_0x4e1c('0x35')](_0x18d021['query'][_0x4e1c('0x35')]));_0x827f0a['attributes']=_0x827f0a[_0x4e1c('0x34')][_0x4e1c('0x36')]?_0x827f0a['attributes']:_0xdfb6d7[_0x4e1c('0x31')];if(_0x18d021[_0x4e1c('0x32')]['includeAll']){_0x827f0a['include']=[{'all':!![]}];}_0x827f0a=_[_0x4e1c('0x3c')]({},_0x827f0a,_0x18d021[_0x4e1c('0x3e')]);return db[_0x4e1c('0x2e')][_0x4e1c('0x46')](_0x827f0a)['then'](handleEntityNotFound(_0x1da617,null))[_0x4e1c('0x27')](respondWithResult(_0x1da617,null))[_0x4e1c('0x42')](handleError(_0x1da617,null));};exports[_0x4e1c('0x26')]=function(_0x6fae67,_0x488fe4){if(_0x6fae67[_0x4e1c('0x47')]['id']){delete _0x6fae67[_0x4e1c('0x47')]['id'];}return db[_0x4e1c('0x2e')][_0x4e1c('0x46')]({'where':{'id':_0x6fae67[_0x4e1c('0x43')]['id']}})[_0x4e1c('0x27')](handleEntityNotFound(_0x488fe4,null))[_0x4e1c('0x27')](saveUpdates(_0x6fae67[_0x4e1c('0x47')],null))[_0x4e1c('0x27')](respondWithResult(_0x488fe4,null))['catch'](handleError(_0x488fe4,null));};exports[_0x4e1c('0x28')]=function(_0x50e872,_0x3b9baf){return db[_0x4e1c('0x2e')][_0x4e1c('0x46')]({'where':{'id':_0x50e872['params']['id']}})['then'](handleEntityNotFound(_0x3b9baf,null))[_0x4e1c('0x27')](removeEntity(_0x3b9baf,null))[_0x4e1c('0x42')](handleError(_0x3b9baf,null));};exports['describe']=function(_0x304b74,_0x304419){return db['CmHopperBlack']['describe']()[_0x4e1c('0x27')](respondWithResult(_0x304419,null))['catch'](handleError(_0x304419,null));};
\ No newline at end of file
index 1e3a784..dd52013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75f1=['lodash','util','api','bluebird','request-promise','exports','CmHopperBlack','cm_hopper_black'];(function(_0xb0b922,_0x183826){var _0x5dc41e=function(_0x461183){while(--_0x461183){_0xb0b922['push'](_0xb0b922['shift']());}};_0x5dc41e(++_0x183826);}(_0x75f1,0x158));var _0x175f=function(_0x47f719,_0x2e559d){_0x47f719=_0x47f719-0x0;var _0x407f4e=_0x75f1[_0x47f719];return _0x407f4e;};'use strict';var _=require(_0x175f('0x0'));var util=require(_0x175f('0x1'));var logger=require('../../config/logger')(_0x175f('0x2'));var moment=require('moment');var BPromise=require(_0x175f('0x3'));var rp=require(_0x175f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmHopperBlack.attributes');module[_0x175f('0x5')]=function(_0x57387d,_0x19baec){return _0x57387d['define'](_0x175f('0x6'),attributes,{'tableName':_0x175f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x20da=['exports','define','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes'];(function(_0x2412a0,_0x10d1dc){var _0x5c2a3c=function(_0x530292){while(--_0x530292){_0x2412a0['push'](_0x2412a0['shift']());}};_0x5c2a3c(++_0x10d1dc);}(_0x20da,0x1af));var _0xa20d=function(_0x471fb,_0x4ff148){_0x471fb=_0x471fb-0x0;var _0x572226=_0x20da[_0x471fb];return _0x572226;};'use strict';var _=require(_0xa20d('0x0'));var util=require(_0xa20d('0x1'));var logger=require('../../config/logger')(_0xa20d('0x2'));var moment=require(_0xa20d('0x3'));var BPromise=require('bluebird');var rp=require(_0xa20d('0x4'));var fs=require('fs');var path=require(_0xa20d('0x5'));var rimraf=require(_0xa20d('0x6'));var config=require(_0xa20d('0x7'));var attributes=require(_0xa20d('0x8'));module[_0xa20d('0x9')]=function(_0x345a1c,_0x374564){return _0x345a1c[_0xa20d('0xa')]('CmHopperBlack',attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c05210c..963b468 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d23=['../../config/logger','rpc','../../config/environment','client','http','request','CmHopperBlack,\x20%s,\x20%s','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','error','code','message','info','request\x20sent','result','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes','limit','include','map','model','then','stringify','catch','update','body','UpdateCmHopperBlack','DestroyCmHopperBlack','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x403115,_0x2d6d03){var _0x596ef3=function(_0x145d97){while(--_0x145d97){_0x403115['push'](_0x403115['shift']());}};_0x596ef3(++_0x2d6d03);}(_0x2d23,0x189));var _0x32d2=function(_0x3fa2f5,_0x4a1608){_0x3fa2f5=_0x3fa2f5-0x0;var _0x44ab92=_0x2d23[_0x3fa2f5];return _0x44ab92;};'use strict';var _=require(_0x32d2('0x0'));var util=require('util');var moment=require(_0x32d2('0x1'));var BPromise=require(_0x32d2('0x2'));var rs=require(_0x32d2('0x3'));var fs=require('fs');var Redis=require(_0x32d2('0x4'));var db=require(_0x32d2('0x5'))['db'];var utils=require(_0x32d2('0x6'));var logger=require(_0x32d2('0x7'))(_0x32d2('0x8'));var config=require(_0x32d2('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x32d2('0xa')][_0x32d2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ed832,_0x388b64,_0xf15741){return new BPromise(function(_0x363ffb,_0x490c62){return client[_0x32d2('0xc')](_0x5ed832,_0xf15741)['then'](function(_0x15642a){logger['info'](_0x32d2('0xd'),_0x388b64,'request\x20sent');logger[_0x32d2('0xe')](_0x32d2('0xf'),_0x388b64,'request\x20sent',JSON['stringify'](_0x15642a));if(_0x15642a[_0x32d2('0x10')]){if(_0x15642a[_0x32d2('0x10')][_0x32d2('0x11')]===0x1f4){logger[_0x32d2('0x10')](_0x32d2('0xd'),_0x388b64,_0x15642a[_0x32d2('0x10')]['message']);return _0x490c62(_0x15642a['error'][_0x32d2('0x12')]);}logger[_0x32d2('0x10')]('CmHopperBlack,\x20%s,\x20%s',_0x388b64,_0x15642a['error'][_0x32d2('0x12')]);return _0x363ffb(_0x15642a[_0x32d2('0x10')][_0x32d2('0x12')]);}else{logger[_0x32d2('0x13')](_0x32d2('0xd'),_0x388b64,_0x32d2('0x14'));_0x363ffb(_0x15642a[_0x32d2('0x15')]['message']);}})['catch'](function(_0xb76e6d){logger[_0x32d2('0x10')](_0x32d2('0xd'),_0x388b64,_0xb76e6d);_0x490c62(_0xb76e6d);});});}exports[_0x32d2('0x16')]=function(_0x13a2d6){var _0x1697e7=this;return new Promise(function(_0x42d8d8,_0x498f67){return db[_0x32d2('0x17')][_0x32d2('0x18')]({'raw':_0x13a2d6[_0x32d2('0x19')]?_0x13a2d6['options'][_0x32d2('0x1a')]===undefined?!![]:![]:!![],'where':_0x13a2d6[_0x32d2('0x19')]?_0x13a2d6[_0x32d2('0x19')][_0x32d2('0x1b')]||null:null,'attributes':_0x13a2d6[_0x32d2('0x19')]?_0x13a2d6['options'][_0x32d2('0x1c')]||null:null,'limit':_0x13a2d6['options']?_0x13a2d6[_0x32d2('0x19')][_0x32d2('0x1d')]||null:null,'include':_0x13a2d6[_0x32d2('0x19')]?_0x13a2d6['options'][_0x32d2('0x1e')]?_[_0x32d2('0x1f')](_0x13a2d6['options'][_0x32d2('0x1e')],function(_0x1130d1){return{'model':db[_0x1130d1['model']],'as':_0x1130d1['as'],'attributes':_0x1130d1[_0x32d2('0x1c')],'include':_0x1130d1['include']?_['map'](_0x1130d1[_0x32d2('0x1e')],function(_0x56a70b){return{'model':db[_0x56a70b[_0x32d2('0x20')]],'as':_0x56a70b['as'],'attributes':_0x56a70b[_0x32d2('0x1c')],'include':_0x56a70b[_0x32d2('0x1e')]?_[_0x32d2('0x1f')](_0x56a70b[_0x32d2('0x1e')],function(_0x2029e8){return{'model':db[_0x2029e8[_0x32d2('0x20')]],'as':_0x2029e8['as'],'attributes':_0x2029e8[_0x32d2('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x32d2('0x21')](function(_0x20399f){logger[_0x32d2('0x13')](_0x32d2('0x16'),_0x13a2d6);logger[_0x32d2('0xe')](_0x32d2('0x16'),_0x13a2d6,JSON[_0x32d2('0x22')](_0x20399f));_0x42d8d8(_0x20399f);})[_0x32d2('0x23')](function(_0x1f0a06){logger[_0x32d2('0x10')]('GetCmHopperBlack',_0x1f0a06[_0x32d2('0x12')],_0x13a2d6);_0x498f67(_0x1697e7[_0x32d2('0x10')](0x1f4,_0x1f0a06[_0x32d2('0x12')]));});});};exports['UpdateCmHopperBlack']=function(_0x1ce6b1){var _0x332331=this;return new Promise(function(_0x35a0d5,_0x13719c){return db[_0x32d2('0x17')][_0x32d2('0x24')](_0x1ce6b1[_0x32d2('0x25')],{'raw':_0x1ce6b1[_0x32d2('0x19')]?_0x1ce6b1[_0x32d2('0x19')][_0x32d2('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ce6b1[_0x32d2('0x19')]?_0x1ce6b1[_0x32d2('0x19')][_0x32d2('0x1b')]||null:null,'attributes':_0x1ce6b1[_0x32d2('0x19')]?_0x1ce6b1['options'][_0x32d2('0x1c')]||null:null,'limit':_0x1ce6b1[_0x32d2('0x19')]?_0x1ce6b1[_0x32d2('0x19')][_0x32d2('0x1d')]||null:null})[_0x32d2('0x21')](function(_0x1da91b){logger['info'](_0x32d2('0x26'),_0x1ce6b1);logger['debug'](_0x32d2('0x26'),_0x1ce6b1,JSON['stringify'](_0x1da91b));_0x35a0d5(_0x1da91b);})[_0x32d2('0x23')](function(_0x32fc75){logger[_0x32d2('0x10')](_0x32d2('0x26'),_0x32fc75[_0x32d2('0x12')],_0x1ce6b1);_0x13719c(_0x332331[_0x32d2('0x10')](0x1f4,_0x32fc75[_0x32d2('0x12')]));});});};exports[_0x32d2('0x27')]=function(_0x5f9f21){var _0x57e425=this;return new Promise(function(_0x3e5de5,_0x2e93a6){return db[_0x32d2('0x17')]['destroy']({'where':_0x5f9f21[_0x32d2('0x19')]?_0x5f9f21[_0x32d2('0x19')]['where']||null:null})[_0x32d2('0x21')](function(_0x22a746){logger[_0x32d2('0x13')](_0x32d2('0x27'),_0x5f9f21);logger[_0x32d2('0xe')](_0x32d2('0x27'),_0x5f9f21,JSON[_0x32d2('0x22')](_0x22a746));_0x3e5de5(_0x22a746);})[_0x32d2('0x23')](function(_0x29fc77){logger[_0x32d2('0x10')]('DestroyCmHopperBlack',_0x29fc77[_0x32d2('0x12')],_0x5f9f21);_0x2e93a6(_0x57e425[_0x32d2('0x10')](0x1f4,_0x29fc77[_0x32d2('0x12')]));});});};
\ No newline at end of file
+var _0x51ff=['debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','request\x20sent','error','CmHopperBlack,\x20%s,\x20%s','message','CmHopperBlack','findAll','options','limit','map','include','attributes','model','GetCmHopperBlack','stringify','catch','UpdateCmHopperBlack','update','body','raw','where','DestroyCmHopperBlack','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info'];(function(_0x5a9655,_0x460ed6){var _0x4ad2b8=function(_0x56411e){while(--_0x56411e){_0x5a9655['push'](_0x5a9655['shift']());}};_0x4ad2b8(++_0x460ed6);}(_0x51ff,0x11a));var _0xf51f=function(_0x421bca,_0x3f1361){_0x421bca=_0x421bca-0x0;var _0x57b845=_0x51ff[_0x421bca];return _0x57b845;};'use strict';var _=require(_0xf51f('0x0'));var util=require('util');var moment=require(_0xf51f('0x1'));var BPromise=require(_0xf51f('0x2'));var rs=require(_0xf51f('0x3'));var fs=require('fs');var Redis=require(_0xf51f('0x4'));var db=require(_0xf51f('0x5'))['db'];var utils=require(_0xf51f('0x6'));var logger=require('../../config/logger')(_0xf51f('0x7'));var config=require('../../config/environment');var jayson=require(_0xf51f('0x8'));var client=jayson[_0xf51f('0x9')][_0xf51f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x392157,_0x54211f,_0x3d7482){return new BPromise(function(_0x438d58,_0x72f131){return client[_0xf51f('0xb')](_0x392157,_0x3d7482)[_0xf51f('0xc')](function(_0x302c71){logger[_0xf51f('0xd')]('CmHopperBlack,\x20%s,\x20%s',_0x54211f,'request\x20sent');logger[_0xf51f('0xe')](_0xf51f('0xf'),_0x54211f,_0xf51f('0x10'),JSON['stringify'](_0x302c71));if(_0x302c71[_0xf51f('0x11')]){if(_0x302c71[_0xf51f('0x11')]['code']===0x1f4){logger[_0xf51f('0x11')](_0xf51f('0x12'),_0x54211f,_0x302c71[_0xf51f('0x11')]['message']);return _0x72f131(_0x302c71['error'][_0xf51f('0x13')]);}logger[_0xf51f('0x11')](_0xf51f('0x12'),_0x54211f,_0x302c71[_0xf51f('0x11')][_0xf51f('0x13')]);return _0x438d58(_0x302c71[_0xf51f('0x11')][_0xf51f('0x13')]);}else{logger[_0xf51f('0xd')](_0xf51f('0x12'),_0x54211f,_0xf51f('0x10'));_0x438d58(_0x302c71['result'][_0xf51f('0x13')]);}})['catch'](function(_0x1f6547){logger[_0xf51f('0x11')](_0xf51f('0x12'),_0x54211f,_0x1f6547);_0x72f131(_0x1f6547);});});}exports['GetCmHopperBlack']=function(_0x13d684){var _0x5f58b4=this;return new Promise(function(_0x99945b,_0x324eb0){return db[_0xf51f('0x14')][_0xf51f('0x15')]({'raw':_0x13d684['options']?_0x13d684[_0xf51f('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x13d684[_0xf51f('0x16')]?_0x13d684[_0xf51f('0x16')]['where']||null:null,'attributes':_0x13d684[_0xf51f('0x16')]?_0x13d684['options']['attributes']||null:null,'limit':_0x13d684[_0xf51f('0x16')]?_0x13d684[_0xf51f('0x16')][_0xf51f('0x17')]||null:null,'include':_0x13d684['options']?_0x13d684[_0xf51f('0x16')]['include']?_[_0xf51f('0x18')](_0x13d684['options'][_0xf51f('0x19')],function(_0x5e02c0){return{'model':db[_0x5e02c0['model']],'as':_0x5e02c0['as'],'attributes':_0x5e02c0[_0xf51f('0x1a')],'include':_0x5e02c0[_0xf51f('0x19')]?_[_0xf51f('0x18')](_0x5e02c0['include'],function(_0x1f5c36){return{'model':db[_0x1f5c36[_0xf51f('0x1b')]],'as':_0x1f5c36['as'],'attributes':_0x1f5c36[_0xf51f('0x1a')],'include':_0x1f5c36[_0xf51f('0x19')]?_[_0xf51f('0x18')](_0x1f5c36[_0xf51f('0x19')],function(_0x195353){return{'model':db[_0x195353['model']],'as':_0x195353['as'],'attributes':_0x195353['attributes']};}):[]};}):[]};}):[]:[]})[_0xf51f('0xc')](function(_0x4bce62){logger[_0xf51f('0xd')](_0xf51f('0x1c'),_0x13d684);logger[_0xf51f('0xe')](_0xf51f('0x1c'),_0x13d684,JSON[_0xf51f('0x1d')](_0x4bce62));_0x99945b(_0x4bce62);})[_0xf51f('0x1e')](function(_0x34498d){logger[_0xf51f('0x11')]('GetCmHopperBlack',_0x34498d[_0xf51f('0x13')],_0x13d684);_0x324eb0(_0x5f58b4[_0xf51f('0x11')](0x1f4,_0x34498d['message']));});});};exports[_0xf51f('0x1f')]=function(_0x5d345c){var _0x36e096=this;return new Promise(function(_0x465031,_0x31de4f){return db[_0xf51f('0x14')][_0xf51f('0x20')](_0x5d345c[_0xf51f('0x21')],{'raw':_0x5d345c[_0xf51f('0x16')]?_0x5d345c[_0xf51f('0x16')][_0xf51f('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d345c[_0xf51f('0x16')]?_0x5d345c[_0xf51f('0x16')][_0xf51f('0x23')]||null:null,'attributes':_0x5d345c[_0xf51f('0x16')]?_0x5d345c[_0xf51f('0x16')][_0xf51f('0x1a')]||null:null,'limit':_0x5d345c[_0xf51f('0x16')]?_0x5d345c['options'][_0xf51f('0x17')]||null:null})[_0xf51f('0xc')](function(_0x211478){logger[_0xf51f('0xd')](_0xf51f('0x1f'),_0x5d345c);logger[_0xf51f('0xe')](_0xf51f('0x1f'),_0x5d345c,JSON[_0xf51f('0x1d')](_0x211478));_0x465031(_0x211478);})[_0xf51f('0x1e')](function(_0x4a99ac){logger[_0xf51f('0x11')](_0xf51f('0x1f'),_0x4a99ac['message'],_0x5d345c);_0x31de4f(_0x36e096[_0xf51f('0x11')](0x1f4,_0x4a99ac[_0xf51f('0x13')]));});});};exports['DestroyCmHopperBlack']=function(_0x56eb25){var _0xb74c7c=this;return new Promise(function(_0x43a89f,_0x52b28b){return db[_0xf51f('0x14')]['destroy']({'where':_0x56eb25['options']?_0x56eb25[_0xf51f('0x16')][_0xf51f('0x23')]||null:null})['then'](function(_0x2d4a0d){logger[_0xf51f('0xd')](_0xf51f('0x24'),_0x56eb25);logger[_0xf51f('0xe')](_0xf51f('0x24'),_0x56eb25,JSON[_0xf51f('0x1d')](_0x2d4a0d));_0x43a89f(_0x2d4a0d);})[_0xf51f('0x1e')](function(_0x288b8b){logger[_0xf51f('0x11')](_0xf51f('0x24'),_0x288b8b[_0xf51f('0x13')],_0x56eb25);_0x52b28b(_0xb74c7c['error'](0x1f4,_0x288b8b['message']));});});};
\ No newline at end of file
index 23ee1ae..a828dbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','/describe','show','put','/:id','delete','exports'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0x32f4,0x154));var _0x432f=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x32f4[_0x5c351c];return _0x26f3b3;};'use strict';var multer=require(_0x432f('0x0'));var util=require(_0x432f('0x1'));var path=require(_0x432f('0x2'));var timeout=require(_0x432f('0x3'));var express=require('express');var router=express[_0x432f('0x4')]();var fs_extra=require(_0x432f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x432f('0x6'));var config=require(_0x432f('0x7'));var controller=require(_0x432f('0x8'));router[_0x432f('0x9')]('/',auth[_0x432f('0xa')](),controller['index']);router['get'](_0x432f('0xb'),auth[_0x432f('0xa')](),controller['describe']);router[_0x432f('0x9')]('/:id',auth[_0x432f('0xa')](),controller[_0x432f('0xc')]);router[_0x432f('0xd')](_0x432f('0xe'),auth[_0x432f('0xa')](),controller['update']);router[_0x432f('0xf')]('/:id',auth[_0x432f('0xa')](),controller['destroy']);module[_0x432f('0x10')]=router;
\ No newline at end of file
+var _0x32f4=['multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','/describe','show','put','/:id','delete','exports'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x32f4,0x154));var _0x432f=function(_0x141b7b,_0x5b1c34){_0x141b7b=_0x141b7b-0x0;var _0x1bbf2f=_0x32f4[_0x141b7b];return _0x1bbf2f;};'use strict';var multer=require(_0x432f('0x0'));var util=require(_0x432f('0x1'));var path=require(_0x432f('0x2'));var timeout=require(_0x432f('0x3'));var express=require('express');var router=express[_0x432f('0x4')]();var fs_extra=require(_0x432f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x432f('0x6'));var config=require(_0x432f('0x7'));var controller=require(_0x432f('0x8'));router[_0x432f('0x9')]('/',auth[_0x432f('0xa')](),controller['index']);router['get'](_0x432f('0xb'),auth[_0x432f('0xa')](),controller['describe']);router[_0x432f('0x9')]('/:id',auth[_0x432f('0xa')](),controller[_0x432f('0xc')]);router[_0x432f('0xd')](_0x432f('0xe'),auth[_0x432f('0xa')](),controller['update']);router[_0x432f('0xf')]('/:id',auth[_0x432f('0xa')](),controller['destroy']);module[_0x432f('0x10')]=router;
\ No newline at end of file
index 13152fb..e927368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f37=['sequelize','exports','INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','followuptime','diff','seconds','dispositionat','BOOLEAN'];(function(_0x453304,_0x1b41a2){var _0x159843=function(_0x153882){while(--_0x153882){_0x453304['push'](_0x453304['shift']());}};_0x159843(++_0x1b41a2);}(_0x0f37,0xdd));var _0x70f3=function(_0x5a9e32,_0x3197fd){_0x5a9e32=_0x5a9e32-0x0;var _0x521b3f=_0x0f37[_0x5a9e32];return _0x521b3f;};'use strict';var Sequelize=require(_0x70f3('0x0'));var moment=require('moment');module[_0x70f3('0x1')]={'state':{'type':Sequelize[_0x70f3('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x70f3('0x3')]},'scheduledat':{'type':Sequelize[_0x70f3('0x4')]},'countbusyretry':{'type':Sequelize[_0x70f3('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x70f3('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x70f3('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x70f3('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x70f3('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x70f3('0x3')]},'calleridname':{'type':Sequelize[_0x70f3('0x3')]},'starttime':{'type':Sequelize[_0x70f3('0x4')]},'responsetime':{'type':Sequelize[_0x70f3('0x4')]},'answertime':{'type':Sequelize[_0x70f3('0x4')]},'droptime':{'type':Sequelize[_0x70f3('0x4')]},'endtime':{'type':Sequelize[_0x70f3('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x70f3('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x70f3('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x70f3('0x3')]},'membername':{'type':Sequelize[_0x70f3('0x3')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x70f3('0x3')]},'secondDisposition':{'type':Sequelize[_0x70f3('0x3')]},'thirdDisposition':{'type':Sequelize[_0x70f3('0x3')]},'dispositionat':{'type':Sequelize[_0x70f3('0x4')],'set':function(_0x1e9efd){var _0x2805bf=this[_0x70f3('0x5')](_0x70f3('0x6'));if(_0x2805bf&&_0x1e9efd){this[_0x70f3('0x7')](_0x70f3('0x8'),moment(_0x1e9efd)[_0x70f3('0x9')](moment(_0x2805bf),_0x70f3('0xa')));}return this['setDataValue'](_0x70f3('0xb'),_0x1e9efd);}},'amd':{'type':Sequelize[_0x70f3('0xc')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x70f3('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x70f3('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x70f3('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x70f3('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x70f3('0x4')]},'deleted':{'type':Sequelize[_0x70f3('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x70f3('0xc')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x70f3('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x70f3('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x70f3('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x70f3('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6e9e=['STRING','DATE','INTEGER','getDataValue','endtime','setDataValue','followuptime','diff','seconds','BOOLEAN','sequelize','moment','exports'];(function(_0x40399b,_0x2d670){var _0x4fce11=function(_0x375c96){while(--_0x375c96){_0x40399b['push'](_0x40399b['shift']());}};_0x4fce11(++_0x2d670);}(_0x6e9e,0xc0));var _0xe6e9=function(_0x36d25e,_0x1a047d){_0x36d25e=_0x36d25e-0x0;var _0x4b95b8=_0x6e9e[_0x36d25e];return _0x4b95b8;};'use strict';var Sequelize=require(_0xe6e9('0x0'));var moment=require(_0xe6e9('0x1'));module[_0xe6e9('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xe6e9('0x3')]},'scheduledat':{'type':Sequelize[_0xe6e9('0x4')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xe6e9('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xe6e9('0x3')]},'originatecalleridname':{'type':Sequelize[_0xe6e9('0x3')]},'calleridnum':{'type':Sequelize[_0xe6e9('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xe6e9('0x4')]},'responsetime':{'type':Sequelize[_0xe6e9('0x4')]},'answertime':{'type':Sequelize[_0xe6e9('0x4')]},'droptime':{'type':Sequelize[_0xe6e9('0x4')]},'endtime':{'type':Sequelize[_0xe6e9('0x4')]},'ringtime':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xe6e9('0x3')]},'campaign':{'type':Sequelize[_0xe6e9('0x3')]},'campaigntype':{'type':Sequelize[_0xe6e9('0x3')]},'membername':{'type':Sequelize[_0xe6e9('0x3')]},'reason':{'type':Sequelize[_0xe6e9('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xe6e9('0x3')]},'thirdDisposition':{'type':Sequelize[_0xe6e9('0x3')]},'dispositionat':{'type':Sequelize[_0xe6e9('0x4')],'set':function(_0x5f5aa7){var _0x173057=this[_0xe6e9('0x6')](_0xe6e9('0x7'));if(_0x173057&&_0x5f5aa7){this[_0xe6e9('0x8')](_0xe6e9('0x9'),moment(_0x5f5aa7)[_0xe6e9('0xa')](moment(_0x173057),_0xe6e9('0xb')));}return this['setDataValue']('dispositionat',_0x5f5aa7);}},'amd':{'type':Sequelize[_0xe6e9('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0xe6e9('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0xe6e9('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xe6e9('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0xe6e9('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xe6e9('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe6e9('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index d87e9e1..c9a978a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','dropContacts','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','insert','into','cm_hopper','phone','scheduledAt','ListId','createdAt','select','ANY_VALUE(calleridnum)','field','NOW()','ContactId','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId','cm_hopper_final','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','from','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','VoiceQueueId\x20=\x20?','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','updatedAt','ANY_VALUE(ContactId)','ANY_VALUE(CampaignId)','CampaignId','CampaignId\x20=\x20?','checkContactHopper','findOne','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','options','CmHopperFinal','findAll','rows','catch','show','params','length','find','describe','body','uniqueid','sequelize','COUNT','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts'];(function(_0x3465b8,_0x224c67){var _0x2686ba=function(_0x793c39){while(--_0x793c39){_0x3465b8['push'](_0x3465b8['shift']());}};_0x2686ba(++_0x224c67);}(_0x1623,0xab));var _0x3162=function(_0x19bc3e,_0x2dfdc8){_0x19bc3e=_0x19bc3e-0x0;var _0x3ee1b1=_0x1623[_0x19bc3e];return _0x3ee1b1;};'use strict';var emlformat=require(_0x3162('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3162('0x1'));var rp=require(_0x3162('0x2'));var moment=require(_0x3162('0x3'));var BPromise=require(_0x3162('0x4'));var Mustache=require(_0x3162('0x5'));var util=require('util');var path=require('path');var sox=require(_0x3162('0x6'));var csv=require('to-csv');var ejs=require(_0x3162('0x7'));var fs=require('fs');var fs_extra=require(_0x3162('0x8'));var _=require('lodash');var squel=require(_0x3162('0x9'));var crypto=require(_0x3162('0xa'));var jsforce=require(_0x3162('0xb'));var deskjs=require(_0x3162('0xc'));var toCsv=require(_0x3162('0xd'));var querystring=require(_0x3162('0xe'));var Papa=require(_0x3162('0xf'));var Redis=require(_0x3162('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3162('0x11'));var hardwareService=require(_0x3162('0x12'));var logger=require(_0x3162('0x13'))(_0x3162('0x14'));var utils=require(_0x3162('0x15'));var config=require(_0x3162('0x16'));var licenseUtil=require(_0x3162('0x17'));var db=require(_0x3162('0x18'))['db'];function respondWithStatusCode(_0x157ab8,_0x4c3625){_0x4c3625=_0x4c3625||0xcc;return function(_0x2d11c5){if(_0x2d11c5){return _0x157ab8['sendStatus'](_0x4c3625);}return _0x157ab8[_0x3162('0x19')](_0x4c3625)[_0x3162('0x1a')]();};}function respondWithResult(_0x49d1ad,_0x4a393a){_0x4a393a=_0x4a393a||0xc8;return function(_0x198764){if(_0x198764){return _0x49d1ad[_0x3162('0x19')](_0x4a393a)[_0x3162('0x1b')](_0x198764);}};}function respondWithFilteredResult(_0x4b8a3b,_0x15e348){return function(_0x3d0bea){if(_0x3d0bea){var _0x2705d1=typeof _0x15e348['offset']===_0x3162('0x1c')&&typeof _0x15e348[_0x3162('0x1d')]===_0x3162('0x1c');var _0xc3ee06=_0x3d0bea[_0x3162('0x1e')];var _0x1eed46=_0x2705d1?0x0:_0x15e348[_0x3162('0x1f')];var _0x4b2bf3=_0x2705d1?_0x3d0bea[_0x3162('0x1e')]:_0x15e348[_0x3162('0x1f')]+_0x15e348[_0x3162('0x1d')];var _0x36ca97;if(_0x4b2bf3>=_0xc3ee06){_0x4b2bf3=_0xc3ee06;_0x36ca97=0xc8;}else{_0x36ca97=0xce;}_0x4b8a3b['status'](_0x36ca97);return _0x4b8a3b[_0x3162('0x20')]('Content-Range',_0x1eed46+'-'+_0x4b2bf3+'/'+_0xc3ee06)['json'](_0x3d0bea);}return null;};}function patchUpdates(_0xa5c62b){return function(_0x3e4d23){try{jsonpatch[_0x3162('0x21')](_0x3e4d23,_0xa5c62b,!![]);}catch(_0x523fab){return BPromise['reject'](_0x523fab);}return _0x3e4d23[_0x3162('0x22')]();};}function saveUpdates(_0x396372,_0x32c051){return function(_0x26c90d){if(_0x26c90d){return _0x26c90d[_0x3162('0x23')](_0x396372)[_0x3162('0x24')](function(_0x52ae25){return _0x52ae25;});}return null;};}function removeEntity(_0x1b2713,_0x5a4994){return function(_0xd283d6){if(_0xd283d6){return _0xd283d6[_0x3162('0x25')]()[_0x3162('0x24')](function(){_0x1b2713[_0x3162('0x19')](0xcc)[_0x3162('0x1a')]();});}};}function handleEntityNotFound(_0x3c543e,_0x30552f){return function(_0x5f8f7){if(!_0x5f8f7){_0x3c543e[_0x3162('0x26')](0x194);}return _0x5f8f7;};}function handleError(_0x356c5d,_0x8fa09f){_0x8fa09f=_0x8fa09f||0x1f4;return function(_0x2f62d7){logger[_0x3162('0x27')](_0x2f62d7['stack']);if(_0x2f62d7[_0x3162('0x28')]){delete _0x2f62d7['name'];}_0x356c5d[_0x3162('0x19')](_0x8fa09f)[_0x3162('0x29')](_0x2f62d7);};}exports[_0x3162('0x2a')]=function(_0x57f567,_0x4903e7){var _0xda0389={},_0xaa1f35={},_0x14df16={'count':0x0,'rows':[]};var _0x399148=_[_0x3162('0x2b')](db['CmHopperFinal'][_0x3162('0x2c')],function(_0x4e3cc2){return{'name':_0x4e3cc2[_0x3162('0x2d')],'type':_0x4e3cc2[_0x3162('0x2e')][_0x3162('0x2f')]};});_0xaa1f35[_0x3162('0x30')]=_[_0x3162('0x2b')](_0x399148,_0x3162('0x28'));_0xaa1f35[_0x3162('0x31')]=_[_0x3162('0x32')](_0x57f567['query']);_0xaa1f35[_0x3162('0x33')]=_[_0x3162('0x34')](_0xaa1f35['model'],_0xaa1f35[_0x3162('0x31')]);_0xda0389[_0x3162('0x35')]=_['intersection'](_0xaa1f35['model'],qs[_0x3162('0x36')](_0x57f567['query'][_0x3162('0x36')]));_0xda0389[_0x3162('0x35')]=_0xda0389[_0x3162('0x35')]['length']?_0xda0389['attributes']:_0xaa1f35[_0x3162('0x30')];if(!_0x57f567[_0x3162('0x31')]['hasOwnProperty'](_0x3162('0x37'))){_0xda0389['limit']=qs[_0x3162('0x1d')](_0x57f567[_0x3162('0x31')][_0x3162('0x1d')]);_0xda0389[_0x3162('0x1f')]=qs[_0x3162('0x1f')](_0x57f567[_0x3162('0x31')][_0x3162('0x1f')]);}_0xda0389[_0x3162('0x38')]=qs[_0x3162('0x39')](_0x57f567[_0x3162('0x31')][_0x3162('0x39')]);_0xda0389['where']=qs[_0x3162('0x33')](_[_0x3162('0x3a')](_0x57f567[_0x3162('0x31')],_0xaa1f35['filters']),_0x399148);if(_0x57f567['query'][_0x3162('0x3b')]){_0xda0389[_0x3162('0x3c')]=_[_0x3162('0x3d')](_0xda0389[_0x3162('0x3c')],{'$or':_['map'](_0x399148,function(_0x4186b6){if(_0x4186b6['type']!=='VIRTUAL'){var _0x5dee49={};_0x5dee49[_0x4186b6[_0x3162('0x28')]]={'$like':'%'+_0x57f567[_0x3162('0x31')][_0x3162('0x3b')]+'%'};return _0x5dee49;}})});}_0xda0389=_['merge']({},_0xda0389,_0x57f567[_0x3162('0x3e')]);var _0x2ce9c6={'where':_0xda0389[_0x3162('0x3c')]};return db[_0x3162('0x3f')][_0x3162('0x1e')](_0x2ce9c6)['then'](function(_0x5447d6){_0x14df16[_0x3162('0x1e')]=_0x5447d6;if(_0x57f567[_0x3162('0x31')]['includeAll']){_0xda0389['include']=[{'all':!![]}];}return db[_0x3162('0x3f')][_0x3162('0x40')](_0xda0389);})[_0x3162('0x24')](function(_0x4883ac){_0x14df16[_0x3162('0x41')]=_0x4883ac;return _0x14df16;})[_0x3162('0x24')](respondWithFilteredResult(_0x4903e7,_0xda0389))[_0x3162('0x42')](handleError(_0x4903e7,null));};exports[_0x3162('0x43')]=function(_0x534708,_0x2617d3){var _0x282e3e={'raw':!![],'where':{'id':_0x534708[_0x3162('0x44')]['id']}},_0x522cce={};_0x522cce[_0x3162('0x30')]=_['keys'](db[_0x3162('0x3f')][_0x3162('0x2c')]);_0x522cce['query']=_[_0x3162('0x32')](_0x534708['query']);_0x522cce[_0x3162('0x33')]=_[_0x3162('0x34')](_0x522cce[_0x3162('0x30')],_0x522cce[_0x3162('0x31')]);_0x282e3e[_0x3162('0x35')]=_[_0x3162('0x34')](_0x522cce['model'],qs[_0x3162('0x36')](_0x534708[_0x3162('0x31')][_0x3162('0x36')]));_0x282e3e['attributes']=_0x282e3e[_0x3162('0x35')][_0x3162('0x45')]?_0x282e3e['attributes']:_0x522cce[_0x3162('0x30')];if(_0x534708['query']['includeAll']){_0x282e3e['include']=[{'all':!![]}];}_0x282e3e=_[_0x3162('0x3d')]({},_0x282e3e,_0x534708[_0x3162('0x3e')]);return db[_0x3162('0x3f')][_0x3162('0x46')](_0x282e3e)[_0x3162('0x24')](handleEntityNotFound(_0x2617d3,null))[_0x3162('0x24')](respondWithResult(_0x2617d3,null))[_0x3162('0x42')](handleError(_0x2617d3,null));};exports[_0x3162('0x47')]=function(_0x3d2958,_0x28865c){return db[_0x3162('0x3f')][_0x3162('0x47')]()[_0x3162('0x24')](respondWithResult(_0x28865c,null))['catch'](handleError(_0x28865c,null));};exports[_0x3162('0x23')]=function(_0x48cb8f,_0x4f1dde){if(_0x48cb8f[_0x3162('0x48')][_0x3162('0x49')]){delete _0x48cb8f[_0x3162('0x48')][_0x3162('0x49')];}return db['CmHopperFinal'][_0x3162('0x46')]({'where':{'uniqueid':_0x48cb8f['params']['id']}})[_0x3162('0x24')](handleEntityNotFound(_0x4f1dde,null))[_0x3162('0x24')](saveUpdates(_0x48cb8f['body'],null))[_0x3162('0x24')](respondWithResult(_0x4f1dde,null))['catch'](handleError(_0x4f1dde,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x13e7c4,_0x22c0a2,_0x160364){return db[_0x3162('0x3f')][_0x3162('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x13e7c4[_0x3162('0x44')]['id']},'attributes':[[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x3162('0x4c')))),_0x3162('0x4d')],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')]('`state`\x20=\x203,\x201,\x20null'))),_0x3162('0x4f')],[db['sequelize']['fn'](_0x3162('0x4b'),db['sequelize']['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x50')))),_0x3162('0x51')],[db['sequelize']['fn']('COUNT',db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x52')))),_0x3162('0x53')],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db['sequelize'][_0x3162('0x4e')](_0x3162('0x54')))),'dropContacts'],[db['sequelize']['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x55')))),_0x3162('0x56')],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db['sequelize']['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')]('`state`\x20=\x2022,\x201,\x20null'))),_0x3162('0x57')],[db['sequelize']['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x58')))),_0x3162('0x59')]]})[_0x3162('0x24')](handleEntityNotFound(_0x22c0a2,null))[_0x3162('0x24')](respondWithResult(_0x22c0a2,null))[_0x3162('0x42')](handleError(_0x22c0a2,null));};exports[_0x3162('0x5a')]=function(_0x4b5729,_0x4a42ea,_0x520b1a){return db[_0x3162('0x3f')]['findAll']({'raw':![],'where':{'CampaignId':_0x4b5729[_0x3162('0x44')]['id']},'attributes':[[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal']('`state`\x20=\x200,\x201,\x20null'))),_0x3162('0x4d')],[db[_0x3162('0x4a')]['fn']('COUNT',db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')](_0x3162('0x5b')))),_0x3162('0x4f')],[db['sequelize']['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')](_0x3162('0x50')))),'busyContacts'],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x52')))),_0x3162('0x53')],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')](_0x3162('0x54')))),_0x3162('0x5c')],[db[_0x3162('0x4a')]['fn']('COUNT',db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x55')))),'abandonedContacts'],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')](_0x3162('0x5d')))),'reCallContacts'],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')](_0x3162('0x58')))),'answeringMachine']]})[_0x3162('0x24')](handleEntityNotFound(_0x4a42ea,null))[_0x3162('0x24')](respondWithResult(_0x4a42ea,null))[_0x3162('0x42')](handleError(_0x4a42ea,null));};exports[_0x3162('0x5e')]=function(_0x8a75ca,_0x33c39d,_0xb3d824){return db['VoiceQueue']['find']({'where':{'id':_0x8a75ca['params']['id']}})[_0x3162('0x24')](handleEntityNotFound(_0x33c39d,null))[_0x3162('0x24')](function(_0x59b3f7){var _0x129005;if(_0x59b3f7){_0x129005=squel[_0x3162('0x5f')]()[_0x3162('0x60')](_0x3162('0x61'))['fromQuery']([_0x3162('0x62'),_0x3162('0x63'),'ContactId',_0x3162('0x64'),'VoiceQueueId',_0x3162('0x65'),'updatedAt'],squel[_0x3162('0x66')]()['field'](_0x3162('0x67'),_0x3162('0x62'))[_0x3162('0x68')](_0x3162('0x69'),_0x3162('0x63'))[_0x3162('0x68')]('ANY_VALUE(ContactId)',_0x3162('0x6a'))[_0x3162('0x68')](_0x3162('0x6b'),'ListId')[_0x3162('0x68')](_0x3162('0x6c'),_0x3162('0x6d'))[_0x3162('0x68')](_0x3162('0x69'),'createdAt')[_0x3162('0x68')](_0x3162('0x69'),'updatedAt')['from'](_0x3162('0x6e'))[_0x3162('0x3c')]('VoiceQueueId\x20=\x20?',_0x8a75ca[_0x3162('0x44')]['id'][_0x3162('0x6f')]())[_0x3162('0x3c')](_0x3162('0x70'),_0x8a75ca[_0x3162('0x48')][_0x3162('0x71')][_0x3162('0x6f')]())[_0x3162('0x3c')](_0x3162('0x72'))['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x3162('0x66')]()[_0x3162('0x68')]('phone')[_0x3162('0x73')]('cm_hopper')['where']('VoiceQueueId\x20=\x20?',_0x8a75ca[_0x3162('0x44')]['id']['toString']()))[_0x3162('0x3c')](_0x3162('0x74'),squel[_0x3162('0x66')]()[_0x3162('0x68')](_0x3162('0x75'))[_0x3162('0x73')](_0x3162('0x6e'))[_0x3162('0x3c')](_0x3162('0x76'),_0x8a75ca[_0x3162('0x44')]['id'][_0x3162('0x6f')]())['where'](_0x3162('0x77')))[_0x3162('0x78')](_0x3162('0x6a')))[_0x3162('0x6f')]();return db[_0x3162('0x4a')][_0x3162('0x31')](_0x129005);}return[];})[_0x3162('0x24')](respondWithResult(_0x33c39d,null))[_0x3162('0x42')](handleError(_0x33c39d,null));};exports[_0x3162('0x79')]=function(_0x3f37fa,_0x1d242f,_0x190f91){return db['Campaign'][_0x3162('0x46')]({'where':{'id':_0x3f37fa[_0x3162('0x44')]['id']}})[_0x3162('0x24')](handleEntityNotFound(_0x1d242f,null))['then'](function(_0x3d7bd1){var _0x5cdbb0;if(_0x3d7bd1){_0x5cdbb0=squel[_0x3162('0x5f')]()[_0x3162('0x60')]('cm_hopper')['fromQuery']([_0x3162('0x62'),_0x3162('0x63'),'ContactId',_0x3162('0x64'),'CampaignId',_0x3162('0x65'),_0x3162('0x7a')],squel[_0x3162('0x66')]()[_0x3162('0x68')](_0x3162('0x67'),_0x3162('0x62'))[_0x3162('0x68')](_0x3162('0x69'),_0x3162('0x63'))['field'](_0x3162('0x7b'),'ContactId')[_0x3162('0x68')](_0x3162('0x6b'),'ListId')[_0x3162('0x68')](_0x3162('0x7c'),_0x3162('0x7d'))[_0x3162('0x68')](_0x3162('0x69'),_0x3162('0x65'))[_0x3162('0x68')]('NOW()',_0x3162('0x7a'))[_0x3162('0x73')](_0x3162('0x6e'))['where'](_0x3162('0x7e'),_0x3f37fa[_0x3162('0x44')]['id'][_0x3162('0x6f')]())[_0x3162('0x3c')](_0x3162('0x70'),_0x3f37fa[_0x3162('0x48')]['state'][_0x3162('0x6f')]())[_0x3162('0x3c')](_0x3162('0x72'))[_0x3162('0x3c')](_0x3162('0x74'),squel['select']()[_0x3162('0x68')]('phone')[_0x3162('0x73')](_0x3162('0x61'))['where'](_0x3162('0x7e'),_0x3f37fa[_0x3162('0x44')]['id'][_0x3162('0x6f')]()))['where'](_0x3162('0x74'),squel['select']()['field'](_0x3162('0x75'))[_0x3162('0x73')](_0x3162('0x6e'))[_0x3162('0x3c')](_0x3162('0x7e'),_0x3f37fa[_0x3162('0x44')]['id'][_0x3162('0x6f')]())['where']('state\x20=\x204'))['group'](_0x3162('0x6a')))[_0x3162('0x6f')]();return db['sequelize']['query'](_0x5cdbb0);}return[];})[_0x3162('0x24')](respondWithResult(_0x1d242f,null))['catch'](handleError(_0x1d242f,null));};exports[_0x3162('0x7f')]=function(_0x35d9f0,_0x4408db,_0x377edb){return db['CmHopper'][_0x3162('0x80')]({'where':{'VoiceQueueId':_0x35d9f0[_0x3162('0x48')][_0x3162('0x6d')],'CampaignId':_0x35d9f0['body'][_0x3162('0x7d')],'ContactId':_0x35d9f0['body'][_0x3162('0x6a')]}})['then'](handleEntityNotFound(_0x4408db,null))[_0x3162('0x24')](function(_0x3d414f){if(_0x3d414f){return _0x3d414f;}return null;})[_0x3162('0x24')](respondWithResult(_0x4408db,null))['catch'](handleError(_0x4408db,null));};
\ No newline at end of file
+var _0x1967=['sendStatus','end','json','offset','undefined','limit','count','set','apply','save','update','then','status','error','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','CmHopperFinal','includeAll','include','findAll','rows','show','params','fields','options','find','catch','describe','uniqueid','body','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','reCallContacts','answeringMachine','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','from','toString','state\x20=\x20?','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','VoiceQueueId\x20=\x20?','state\x20=\x204','moveContactsIvrCampaignHopperFinal','Campaign','into','CampaignId','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','cm_hopper_final','CampaignId\x20=\x20?','state','calleridnum','group','checkContactHopper','findOne','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x297dae,_0x51d147){var _0x1240a2=function(_0x3327f8){while(--_0x3327f8){_0x297dae['push'](_0x297dae['shift']());}};_0x1240a2(++_0x51d147);}(_0x1967,0x173));var _0x7196=function(_0x2b79ea,_0x395076){_0x2b79ea=_0x2b79ea-0x0;var _0x566b06=_0x1967[_0x2b79ea];return _0x566b06;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7196('0x0'));var zipdir=require(_0x7196('0x1'));var jsonpatch=require(_0x7196('0x2'));var rp=require(_0x7196('0x3'));var moment=require(_0x7196('0x4'));var BPromise=require(_0x7196('0x5'));var Mustache=require(_0x7196('0x6'));var util=require(_0x7196('0x7'));var path=require(_0x7196('0x8'));var sox=require(_0x7196('0x9'));var csv=require('to-csv');var ejs=require(_0x7196('0xa'));var fs=require('fs');var fs_extra=require(_0x7196('0xb'));var _=require(_0x7196('0xc'));var squel=require(_0x7196('0xd'));var crypto=require(_0x7196('0xe'));var jsforce=require(_0x7196('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x7196('0x10'));var querystring=require(_0x7196('0x11'));var Papa=require(_0x7196('0x12'));var Redis=require(_0x7196('0x13'));var authService=require(_0x7196('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7196('0x15'));var logger=require(_0x7196('0x16'))(_0x7196('0x17'));var utils=require(_0x7196('0x18'));var config=require(_0x7196('0x19'));var licenseUtil=require(_0x7196('0x1a'));var db=require(_0x7196('0x1b'))['db'];function respondWithStatusCode(_0x325641,_0x24f1c3){_0x24f1c3=_0x24f1c3||0xcc;return function(_0xba707b){if(_0xba707b){return _0x325641[_0x7196('0x1c')](_0x24f1c3);}return _0x325641['status'](_0x24f1c3)[_0x7196('0x1d')]();};}function respondWithResult(_0x3feccd,_0x3545aa){_0x3545aa=_0x3545aa||0xc8;return function(_0xf098c1){if(_0xf098c1){return _0x3feccd['status'](_0x3545aa)[_0x7196('0x1e')](_0xf098c1);}};}function respondWithFilteredResult(_0x539414,_0xe32933){return function(_0x2590a6){if(_0x2590a6){var _0xf7e97=typeof _0xe32933[_0x7196('0x1f')]===_0x7196('0x20')&&typeof _0xe32933[_0x7196('0x21')]===_0x7196('0x20');var _0x1ed296=_0x2590a6[_0x7196('0x22')];var _0x32fe2b=_0xf7e97?0x0:_0xe32933[_0x7196('0x1f')];var _0x5b716a=_0xf7e97?_0x2590a6['count']:_0xe32933[_0x7196('0x1f')]+_0xe32933[_0x7196('0x21')];var _0x40418d;if(_0x5b716a>=_0x1ed296){_0x5b716a=_0x1ed296;_0x40418d=0xc8;}else{_0x40418d=0xce;}_0x539414['status'](_0x40418d);return _0x539414[_0x7196('0x23')]('Content-Range',_0x32fe2b+'-'+_0x5b716a+'/'+_0x1ed296)['json'](_0x2590a6);}return null;};}function patchUpdates(_0x296e07){return function(_0x627223){try{jsonpatch[_0x7196('0x24')](_0x627223,_0x296e07,!![]);}catch(_0x4ddf78){return BPromise['reject'](_0x4ddf78);}return _0x627223[_0x7196('0x25')]();};}function saveUpdates(_0x3cd8ff,_0x598a26){return function(_0x18649b){if(_0x18649b){return _0x18649b[_0x7196('0x26')](_0x3cd8ff)[_0x7196('0x27')](function(_0x18d389){return _0x18d389;});}return null;};}function removeEntity(_0x38b3d6,_0x549f34){return function(_0x3f8178){if(_0x3f8178){return _0x3f8178['destroy']()[_0x7196('0x27')](function(){_0x38b3d6[_0x7196('0x28')](0xcc)[_0x7196('0x1d')]();});}};}function handleEntityNotFound(_0xa69810,_0x70aa65){return function(_0x43f6a2){if(!_0x43f6a2){_0xa69810['sendStatus'](0x194);}return _0x43f6a2;};}function handleError(_0x57c404,_0x1482e5){_0x1482e5=_0x1482e5||0x1f4;return function(_0x2d284f){logger[_0x7196('0x29')](_0x2d284f['stack']);if(_0x2d284f['name']){delete _0x2d284f[_0x7196('0x2a')];}_0x57c404[_0x7196('0x28')](_0x1482e5)[_0x7196('0x2b')](_0x2d284f);};}exports['index']=function(_0x35eef9,_0x4ecea1){var _0x4fd339={},_0x59d79d={},_0x30151f={'count':0x0,'rows':[]};var _0x985727=_[_0x7196('0x2c')](db['CmHopperFinal'][_0x7196('0x2d')],function(_0x45d567){return{'name':_0x45d567[_0x7196('0x2e')],'type':_0x45d567[_0x7196('0x2f')]['key']};});_0x59d79d[_0x7196('0x30')]=_[_0x7196('0x2c')](_0x985727,_0x7196('0x2a'));_0x59d79d[_0x7196('0x31')]=_[_0x7196('0x32')](_0x35eef9[_0x7196('0x31')]);_0x59d79d[_0x7196('0x33')]=_[_0x7196('0x34')](_0x59d79d[_0x7196('0x30')],_0x59d79d[_0x7196('0x31')]);_0x4fd339[_0x7196('0x35')]=_['intersection'](_0x59d79d[_0x7196('0x30')],qs['fields'](_0x35eef9[_0x7196('0x31')]['fields']));_0x4fd339[_0x7196('0x35')]=_0x4fd339[_0x7196('0x35')]['length']?_0x4fd339[_0x7196('0x35')]:_0x59d79d[_0x7196('0x30')];if(!_0x35eef9[_0x7196('0x31')][_0x7196('0x36')](_0x7196('0x37'))){_0x4fd339['limit']=qs[_0x7196('0x21')](_0x35eef9[_0x7196('0x31')][_0x7196('0x21')]);_0x4fd339[_0x7196('0x1f')]=qs[_0x7196('0x1f')](_0x35eef9[_0x7196('0x31')]['offset']);}_0x4fd339[_0x7196('0x38')]=qs[_0x7196('0x39')](_0x35eef9[_0x7196('0x31')]['sort']);_0x4fd339[_0x7196('0x3a')]=qs[_0x7196('0x33')](_[_0x7196('0x3b')](_0x35eef9[_0x7196('0x31')],_0x59d79d[_0x7196('0x33')]),_0x985727);if(_0x35eef9[_0x7196('0x31')][_0x7196('0x3c')]){_0x4fd339[_0x7196('0x3a')]=_[_0x7196('0x3d')](_0x4fd339[_0x7196('0x3a')],{'$or':_['map'](_0x985727,function(_0x257754){if(_0x257754[_0x7196('0x2f')]!=='VIRTUAL'){var _0x186efe={};_0x186efe[_0x257754['name']]={'$like':'%'+_0x35eef9['query'][_0x7196('0x3c')]+'%'};return _0x186efe;}})});}_0x4fd339=_[_0x7196('0x3d')]({},_0x4fd339,_0x35eef9['options']);var _0x587f6f={'where':_0x4fd339[_0x7196('0x3a')]};return db[_0x7196('0x3e')][_0x7196('0x22')](_0x587f6f)['then'](function(_0x36a990){_0x30151f[_0x7196('0x22')]=_0x36a990;if(_0x35eef9[_0x7196('0x31')][_0x7196('0x3f')]){_0x4fd339[_0x7196('0x40')]=[{'all':!![]}];}return db[_0x7196('0x3e')][_0x7196('0x41')](_0x4fd339);})[_0x7196('0x27')](function(_0x5cd903){_0x30151f[_0x7196('0x42')]=_0x5cd903;return _0x30151f;})[_0x7196('0x27')](respondWithFilteredResult(_0x4ecea1,_0x4fd339))['catch'](handleError(_0x4ecea1,null));};exports[_0x7196('0x43')]=function(_0x43d4c0,_0x48178f){var _0x471915={'raw':!![],'where':{'id':_0x43d4c0[_0x7196('0x44')]['id']}},_0x471bb2={};_0x471bb2['model']=_[_0x7196('0x32')](db[_0x7196('0x3e')]['rawAttributes']);_0x471bb2[_0x7196('0x31')]=_[_0x7196('0x32')](_0x43d4c0['query']);_0x471bb2[_0x7196('0x33')]=_['intersection'](_0x471bb2['model'],_0x471bb2['query']);_0x471915['attributes']=_['intersection'](_0x471bb2[_0x7196('0x30')],qs['fields'](_0x43d4c0[_0x7196('0x31')][_0x7196('0x45')]));_0x471915[_0x7196('0x35')]=_0x471915[_0x7196('0x35')]['length']?_0x471915[_0x7196('0x35')]:_0x471bb2['model'];if(_0x43d4c0[_0x7196('0x31')][_0x7196('0x3f')]){_0x471915[_0x7196('0x40')]=[{'all':!![]}];}_0x471915=_['merge']({},_0x471915,_0x43d4c0[_0x7196('0x46')]);return db[_0x7196('0x3e')][_0x7196('0x47')](_0x471915)['then'](handleEntityNotFound(_0x48178f,null))['then'](respondWithResult(_0x48178f,null))[_0x7196('0x48')](handleError(_0x48178f,null));};exports['describe']=function(_0x29c7e8,_0x582884){return db['CmHopperFinal'][_0x7196('0x49')]()['then'](respondWithResult(_0x582884,null))['catch'](handleError(_0x582884,null));};exports['update']=function(_0x2299e2,_0x5052ee){if(_0x2299e2['body'][_0x7196('0x4a')]){delete _0x2299e2[_0x7196('0x4b')][_0x7196('0x4a')];}return db[_0x7196('0x3e')]['find']({'where':{'uniqueid':_0x2299e2[_0x7196('0x44')]['id']}})['then'](handleEntityNotFound(_0x5052ee,null))[_0x7196('0x27')](saveUpdates(_0x2299e2[_0x7196('0x4b')],null))['then'](respondWithResult(_0x5052ee,null))[_0x7196('0x48')](handleError(_0x5052ee,null));};exports[_0x7196('0x4c')]=function(_0x3fe092,_0x4fa18f,_0x317ab6){return db['CmHopperFinal'][_0x7196('0x41')]({'raw':![],'where':{'VoiceQueueId':_0x3fe092[_0x7196('0x44')]['id']},'attributes':[[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x50')))),'noSuchContacts'],[db['sequelize']['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')]('`state`\x20=\x203,\x201,\x20null'))),_0x7196('0x51')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x52')))),_0x7196('0x53')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db['sequelize'][_0x7196('0x4f')](_0x7196('0x54')))),_0x7196('0x55')],[db['sequelize']['fn'](_0x7196('0x4e'),db['sequelize']['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x56')))),_0x7196('0x57')],[db[_0x7196('0x4d')]['fn']('COUNT',db[_0x7196('0x4d')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x7196('0x58')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x59')))),'reCallContacts'],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')]('`state`\x20=\x2019,\x201,\x20null'))),'answeringMachine']]})[_0x7196('0x27')](handleEntityNotFound(_0x4fa18f,null))[_0x7196('0x27')](respondWithResult(_0x4fa18f,null))[_0x7196('0x48')](handleError(_0x4fa18f,null));};exports[_0x7196('0x5a')]=function(_0x14cb38,_0x43b9ac,_0xe3fb61){return db[_0x7196('0x3e')][_0x7196('0x41')]({'raw':![],'where':{'CampaignId':_0x14cb38[_0x7196('0x44')]['id']},'attributes':[[db[_0x7196('0x4d')]['fn']('COUNT',db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x50')))),'noSuchContacts'],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x5b')))),_0x7196('0x51')],[db['sequelize']['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')]('`state`\x20=\x205,\x201,\x20null'))),_0x7196('0x53')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x54')))),'congestionContacts'],[db['sequelize']['fn']('COUNT',db[_0x7196('0x4d')]['fn']('IF',db['sequelize'][_0x7196('0x4f')](_0x7196('0x56')))),_0x7196('0x57')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x5c')))),'abandonedContacts'],[db['sequelize']['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x59')))),_0x7196('0x5d')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db['sequelize']['fn']('IF',db['sequelize'][_0x7196('0x4f')]('`state`\x20=\x2019,\x201,\x20null'))),_0x7196('0x5e')]]})['then'](handleEntityNotFound(_0x43b9ac,null))[_0x7196('0x27')](respondWithResult(_0x43b9ac,null))[_0x7196('0x48')](handleError(_0x43b9ac,null));};exports[_0x7196('0x5f')]=function(_0x267903,_0x5ab6ae,_0x5a786a){return db[_0x7196('0x60')]['find']({'where':{'id':_0x267903[_0x7196('0x44')]['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x5ab6ae,null))[_0x7196('0x27')](function(_0x38c1b3){var _0xd4c784;if(_0x38c1b3){_0xd4c784=squel[_0x7196('0x61')]()['into'](_0x7196('0x62'))[_0x7196('0x63')]([_0x7196('0x64'),_0x7196('0x65'),_0x7196('0x66'),_0x7196('0x67'),_0x7196('0x68'),_0x7196('0x69'),_0x7196('0x6a')],squel[_0x7196('0x6b')]()[_0x7196('0x6c')](_0x7196('0x6d'),'phone')[_0x7196('0x6c')](_0x7196('0x6e'),'scheduledAt')['field'](_0x7196('0x6f'),_0x7196('0x66'))[_0x7196('0x6c')]('ANY_VALUE(ListId)',_0x7196('0x67'))['field'](_0x7196('0x70'),_0x7196('0x68'))['field'](_0x7196('0x6e'),'createdAt')['field'](_0x7196('0x6e'),_0x7196('0x6a'))[_0x7196('0x71')]('cm_hopper_final')[_0x7196('0x3a')]('VoiceQueueId\x20=\x20?',_0x267903[_0x7196('0x44')]['id'][_0x7196('0x72')]())[_0x7196('0x3a')](_0x7196('0x73'),_0x267903[_0x7196('0x4b')]['state'][_0x7196('0x72')]())[_0x7196('0x3a')](_0x7196('0x74'))[_0x7196('0x3a')](_0x7196('0x75'),squel[_0x7196('0x6b')]()[_0x7196('0x6c')](_0x7196('0x64'))['from'](_0x7196('0x62'))[_0x7196('0x3a')](_0x7196('0x76'),_0x267903[_0x7196('0x44')]['id']['toString']()))[_0x7196('0x3a')](_0x7196('0x75'),squel['select']()[_0x7196('0x6c')]('calleridnum')[_0x7196('0x71')]('cm_hopper_final')[_0x7196('0x3a')](_0x7196('0x76'),_0x267903['params']['id'][_0x7196('0x72')]())[_0x7196('0x3a')](_0x7196('0x77')))['group']('ContactId'))[_0x7196('0x72')]();return db['sequelize']['query'](_0xd4c784);}return[];})[_0x7196('0x27')](respondWithResult(_0x5ab6ae,null))[_0x7196('0x48')](handleError(_0x5ab6ae,null));};exports[_0x7196('0x78')]=function(_0x509c4a,_0x35c5b3,_0x59370b){return db[_0x7196('0x79')][_0x7196('0x47')]({'where':{'id':_0x509c4a[_0x7196('0x44')]['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x35c5b3,null))[_0x7196('0x27')](function(_0x8673e){var _0x32ba47;if(_0x8673e){_0x32ba47=squel[_0x7196('0x61')]()[_0x7196('0x7a')]('cm_hopper')['fromQuery']([_0x7196('0x64'),'scheduledAt','ContactId',_0x7196('0x67'),_0x7196('0x7b'),_0x7196('0x69'),_0x7196('0x6a')],squel['select']()['field'](_0x7196('0x6d'),_0x7196('0x64'))[_0x7196('0x6c')](_0x7196('0x6e'),'scheduledAt')[_0x7196('0x6c')]('ANY_VALUE(ContactId)','ContactId')[_0x7196('0x6c')](_0x7196('0x7c'),_0x7196('0x67'))['field'](_0x7196('0x7d'),_0x7196('0x7b'))[_0x7196('0x6c')](_0x7196('0x6e'),_0x7196('0x69'))[_0x7196('0x6c')](_0x7196('0x6e'),_0x7196('0x6a'))['from'](_0x7196('0x7e'))[_0x7196('0x3a')](_0x7196('0x7f'),_0x509c4a[_0x7196('0x44')]['id'][_0x7196('0x72')]())['where'](_0x7196('0x73'),_0x509c4a[_0x7196('0x4b')][_0x7196('0x80')]['toString']())[_0x7196('0x3a')]('calleridnum\x20IS\x20NOT\x20NULL')['where'](_0x7196('0x75'),squel[_0x7196('0x6b')]()['field'](_0x7196('0x64'))[_0x7196('0x71')]('cm_hopper')[_0x7196('0x3a')](_0x7196('0x7f'),_0x509c4a[_0x7196('0x44')]['id'][_0x7196('0x72')]()))[_0x7196('0x3a')](_0x7196('0x75'),squel['select']()[_0x7196('0x6c')](_0x7196('0x81'))[_0x7196('0x71')]('cm_hopper_final')['where']('CampaignId\x20=\x20?',_0x509c4a[_0x7196('0x44')]['id'][_0x7196('0x72')]())[_0x7196('0x3a')]('state\x20=\x204'))[_0x7196('0x82')]('ContactId'))[_0x7196('0x72')]();return db['sequelize'][_0x7196('0x31')](_0x32ba47);}return[];})[_0x7196('0x27')](respondWithResult(_0x35c5b3,null))[_0x7196('0x48')](handleError(_0x35c5b3,null));};exports[_0x7196('0x83')]=function(_0x37290e,_0x10b628,_0x43e7d5){return db['CmHopper'][_0x7196('0x84')]({'where':{'VoiceQueueId':_0x37290e['body']['VoiceQueueId'],'CampaignId':_0x37290e['body']['CampaignId'],'ContactId':_0x37290e['body'][_0x7196('0x66')]}})[_0x7196('0x27')](handleEntityNotFound(_0x10b628,null))[_0x7196('0x27')](function(_0x5bab25){if(_0x5bab25){return _0x5bab25;}return null;})[_0x7196('0x27')](respondWithResult(_0x10b628,null))['catch'](handleError(_0x10b628,null));};
\ No newline at end of file
index 46f340d..cae07d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87b4=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','calleridnum','uniqueid','lodash','util','api'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x87b4,0x107));var _0x487b=function(_0x35c179,_0x3516ee){_0x35c179=_0x35c179-0x0;var _0x5dbc37=_0x87b4[_0x35c179];return _0x5dbc37;};'use strict';var _=require(_0x487b('0x0'));var util=require(_0x487b('0x1'));var logger=require('../../config/logger')(_0x487b('0x2'));var moment=require(_0x487b('0x3'));var BPromise=require(_0x487b('0x4'));var rp=require(_0x487b('0x5'));var fs=require('fs');var path=require(_0x487b('0x6'));var rimraf=require(_0x487b('0x7'));var config=require(_0x487b('0x8'));var attributes=require(_0x487b('0x9'));module[_0x487b('0xa')]=function(_0xbf65b,_0x531f5b){return _0xbf65b[_0x487b('0xb')]('CmHopperFinal',attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':'calleridnum','fields':[_0x487b('0xc')]},{'name':_0x487b('0xd'),'fields':[_0x487b('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x54ea=['CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./cmHopperFinal.attributes','exports','define'];(function(_0x2b2ab7,_0x2a2f6b){var _0x44f5db=function(_0x170b1f){while(--_0x170b1f){_0x2b2ab7['push'](_0x2b2ab7['shift']());}};_0x44f5db(++_0x2a2f6b);}(_0x54ea,0xe5));var _0xa54e=function(_0x1a95e1,_0x57a208){_0x1a95e1=_0x1a95e1-0x0;var _0x3f100c=_0x54ea[_0x1a95e1];return _0x3f100c;};'use strict';var _=require(_0xa54e('0x0'));var util=require(_0xa54e('0x1'));var logger=require(_0xa54e('0x2'))(_0xa54e('0x3'));var moment=require(_0xa54e('0x4'));var BPromise=require(_0xa54e('0x5'));var rp=require(_0xa54e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa54e('0x7'));var attributes=require(_0xa54e('0x8'));module[_0xa54e('0x9')]=function(_0x1b06a0,_0xf395f0){return _0x1b06a0[_0xa54e('0xa')](_0xa54e('0xb'),attributes,{'tableName':_0xa54e('0xc'),'paranoid':![],'indexes':[{'name':_0xa54e('0xd'),'fields':[_0xa54e('0xd')]},{'name':_0xa54e('0xe'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index c29c8e2..feab8f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x3eec58,_0x146439){var _0x5ee827=function(_0x8709cc){while(--_0x8709cc){_0x3eec58['push'](_0x3eec58['shift']());}};_0x5ee827(++_0x146439);}(_0xb10b,0x12a));var _0xbb10=function(_0x3c414c,_0x399dbb){_0x3c414c=_0x3c414c-0x0;var _0x4f3062=_0xb10b[_0x3c414c];return _0x4f3062;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x619d4b,_0x29a1ca){var _0x93fb06=function(_0x4f214a){while(--_0x4f214a){_0x619d4b['push'](_0x619d4b['shift']());}};_0x93fb06(++_0x29a1ca);}(_0xb10b,0x12a));var _0xbb10=function(_0x4503f6,_0x3babaf){_0x4503f6=_0x4503f6-0x0;var _0x2277d1=_0xb10b[_0x4503f6];return _0x2277d1;};'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 46dbe05..e5f69b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda16=['update','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','checkContactHopper','/:id'];(function(_0x38298e,_0x180183){var _0x1ba885=function(_0x159e48){while(--_0x159e48){_0x38298e['push'](_0x38298e['shift']());}};_0x1ba885(++_0x180183);}(_0xda16,0x1cf));var _0x6da1=function(_0x3fc1c1,_0x1f038d){_0x3fc1c1=_0x3fc1c1-0x0;var _0x1353db=_0xda16[_0x3fc1c1];return _0x1353db;};'use strict';var multer=require(_0x6da1('0x0'));var util=require(_0x6da1('0x1'));var path=require(_0x6da1('0x2'));var timeout=require(_0x6da1('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6da1('0x4'));var interaction=require(_0x6da1('0x5'));var config=require(_0x6da1('0x6'));var controller=require('./cmHopperFinal.controller');router[_0x6da1('0x7')]('/',auth[_0x6da1('0x8')](),controller[_0x6da1('0x9')]);router[_0x6da1('0x7')]('/describe',auth[_0x6da1('0x8')](),controller['describe']);router[_0x6da1('0x7')]('/:id',auth[_0x6da1('0x8')](),controller[_0x6da1('0xa')]);router[_0x6da1('0x7')](_0x6da1('0xb'),auth[_0x6da1('0x8')](),controller[_0x6da1('0xc')]);router['get'](_0x6da1('0xd'),auth[_0x6da1('0x8')](),controller[_0x6da1('0xe')]);router[_0x6da1('0xf')](_0x6da1('0x10'),auth[_0x6da1('0x8')](),controller[_0x6da1('0x11')]);router[_0x6da1('0xf')]('/voice/campaign/moveContacts/:id',auth['isAuthenticated'](),controller[_0x6da1('0x12')]);router[_0x6da1('0xf')]('/checkContactHopper',auth[_0x6da1('0x8')](),controller[_0x6da1('0x13')]);router['put'](_0x6da1('0x14'),auth[_0x6da1('0x8')](),controller[_0x6da1('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x753e=['put','/:id','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','/checkContactHopper'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x753e,0x18c));var _0xe753=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x753e[_0x3e5086];return _0xfeb102;};'use strict';var multer=require(_0xe753('0x0'));var util=require(_0xe753('0x1'));var path=require(_0xe753('0x2'));var timeout=require(_0xe753('0x3'));var express=require(_0xe753('0x4'));var router=express[_0xe753('0x5')]();var fs_extra=require(_0xe753('0x6'));var auth=require(_0xe753('0x7'));var interaction=require(_0xe753('0x8'));var config=require(_0xe753('0x9'));var controller=require(_0xe753('0xa'));router[_0xe753('0xb')]('/',auth[_0xe753('0xc')](),controller[_0xe753('0xd')]);router[_0xe753('0xb')]('/describe',auth[_0xe753('0xc')](),controller[_0xe753('0xe')]);router[_0xe753('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xe753('0xf')]);router['get'](_0xe753('0x10'),auth[_0xe753('0xc')](),controller[_0xe753('0x11')]);router[_0xe753('0xb')](_0xe753('0x12'),auth[_0xe753('0xc')](),controller['countContactsIvrCampaignHopperFinal']);router[_0xe753('0x13')](_0xe753('0x14'),auth[_0xe753('0xc')](),controller[_0xe753('0x15')]);router[_0xe753('0x13')](_0xe753('0x16'),auth['isAuthenticated'](),controller['moveContactsIvrCampaignHopperFinal']);router['post'](_0xe753('0x17'),auth[_0xe753('0xc')](),controller['checkContactHopper']);router[_0xe753('0x18')](_0xe753('0x19'),auth[_0xe753('0xc')](),controller[_0xe753('0x1a')]);module[_0xe753('0x1b')]=router;
\ No newline at end of file
index 1509430..e32d4a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc128=['STRING','DATE','INTEGER','BOOLEAN','sequelize','exports'];(function(_0x3f9f39,_0x39d8c2){var _0x3de0b8=function(_0x4e9efe){while(--_0x4e9efe){_0x3f9f39['push'](_0x3f9f39['shift']());}};_0x3de0b8(++_0x39d8c2);}(_0xc128,0x160));var _0x8c12=function(_0x4b70bc,_0x4568a3){_0x4b70bc=_0x4b70bc-0x0;var _0x59e4b5=_0xc128[_0x4b70bc];return _0x59e4b5;};'use strict';var Sequelize=require(_0x8c12('0x0'));module[_0x8c12('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x8c12('0x2')]},'scheduledat':{'type':Sequelize[_0x8c12('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x8c12('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x8c12('0x2')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x8c12('0x2')]},'calleridname':{'type':Sequelize[_0x8c12('0x2')]},'starttime':{'type':Sequelize[_0x8c12('0x3')]},'responsetime':{'type':Sequelize[_0x8c12('0x3')]},'answertime':{'type':Sequelize[_0x8c12('0x3')]},'droptime':{'type':Sequelize[_0x8c12('0x3')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x8c12('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x8c12('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x8c12('0x4')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x8c12('0x2')]},'campaign':{'type':Sequelize[_0x8c12('0x2')]},'campaigntype':{'type':Sequelize[_0x8c12('0x2')]},'membername':{'type':Sequelize[_0x8c12('0x2')]},'reason':{'type':Sequelize[_0x8c12('0x2')]},'amd':{'type':Sequelize[_0x8c12('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x8c12('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x8c12('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x8c12('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x8c12('0x3')]},'edited':{'type':Sequelize[_0x8c12('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x8c12('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x8c12('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6948=['BOOLEAN','sequelize','exports','DATE','INTEGER','STRING'];(function(_0x102b2b,_0xb0c4b8){var _0x47574e=function(_0x2ef1f2){while(--_0x2ef1f2){_0x102b2b['push'](_0x102b2b['shift']());}};_0x47574e(++_0xb0c4b8);}(_0x6948,0x9d));var _0x8694=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x6948[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require(_0x8694('0x0'));module[_0x8694('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x8694('0x2')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x8694('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x8694('0x4')]},'originatecalleridname':{'type':Sequelize[_0x8694('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x8694('0x4')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x8694('0x2')]},'answertime':{'type':Sequelize[_0x8694('0x2')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x8694('0x2')]},'ringtime':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x8694('0x4')]},'campaign':{'type':Sequelize[_0x8694('0x4')]},'campaigntype':{'type':Sequelize[_0x8694('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x8694('0x4')]},'amd':{'type':Sequelize[_0x8694('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x8694('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x8694('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x8694('0x2')]},'recallme':{'type':Sequelize[_0x8694('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x8694('0x2')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x8694('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index cf53170..379e322 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46a1=['sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','end','error','stack','name','index','CmHopperHistory','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','type','include','rows','catch','show','keys','includeAll','create','body','update','uniqueid','params','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x46a1,0x1e7));var _0x146a=function(_0x3d0e0c,_0x3c4f7b){_0x3d0e0c=_0x3d0e0c-0x0;var _0x2cad75=_0x46a1[_0x3d0e0c];return _0x2cad75;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x146a('0x0'));var jsonpatch=require(_0x146a('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x146a('0x2'));var Mustache=require(_0x146a('0x3'));var util=require(_0x146a('0x4'));var path=require('path');var sox=require(_0x146a('0x5'));var csv=require(_0x146a('0x6'));var ejs=require(_0x146a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x146a('0x8'));var squel=require(_0x146a('0x9'));var crypto=require(_0x146a('0xa'));var jsforce=require(_0x146a('0xb'));var deskjs=require(_0x146a('0xc'));var toCsv=require('to-csv');var querystring=require(_0x146a('0xd'));var Papa=require(_0x146a('0xe'));var Redis=require(_0x146a('0xf'));var authService=require(_0x146a('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x146a('0x11'));var hardwareService=require(_0x146a('0x12'));var logger=require(_0x146a('0x13'))(_0x146a('0x14'));var utils=require('../../config/utils');var config=require(_0x146a('0x15'));var licenseUtil=require(_0x146a('0x16'));var db=require(_0x146a('0x17'))['db'];function respondWithStatusCode(_0x39498c,_0x5a0d42){_0x5a0d42=_0x5a0d42||0xcc;return function(_0x5574cc){if(_0x5574cc){return _0x39498c[_0x146a('0x18')](_0x5a0d42);}return _0x39498c[_0x146a('0x19')](_0x5a0d42)['end']();};}function respondWithResult(_0x4644f1,_0x2c5763){_0x2c5763=_0x2c5763||0xc8;return function(_0x34bdfb){if(_0x34bdfb){return _0x4644f1[_0x146a('0x19')](_0x2c5763)[_0x146a('0x1a')](_0x34bdfb);}};}function respondWithFilteredResult(_0x12ef31,_0x2c8c39){return function(_0x38c679){if(_0x38c679){var _0xf16372=typeof _0x2c8c39[_0x146a('0x1b')]==='undefined'&&typeof _0x2c8c39[_0x146a('0x1c')]===_0x146a('0x1d');var _0x51ea8a=_0x38c679['count'];var _0x1c28b8=_0xf16372?0x0:_0x2c8c39[_0x146a('0x1b')];var _0x11a1d7=_0xf16372?_0x38c679[_0x146a('0x1e')]:_0x2c8c39[_0x146a('0x1b')]+_0x2c8c39[_0x146a('0x1c')];var _0x499feb;if(_0x11a1d7>=_0x51ea8a){_0x11a1d7=_0x51ea8a;_0x499feb=0xc8;}else{_0x499feb=0xce;}_0x12ef31[_0x146a('0x19')](_0x499feb);return _0x12ef31[_0x146a('0x1f')](_0x146a('0x20'),_0x1c28b8+'-'+_0x11a1d7+'/'+_0x51ea8a)[_0x146a('0x1a')](_0x38c679);}return null;};}function patchUpdates(_0x580f3f){return function(_0x3eefef){try{jsonpatch[_0x146a('0x21')](_0x3eefef,_0x580f3f,!![]);}catch(_0xc0b8b5){return BPromise[_0x146a('0x22')](_0xc0b8b5);}return _0x3eefef[_0x146a('0x23')]();};}function saveUpdates(_0x33cee4,_0xeb3220){return function(_0x154871){if(_0x154871){return _0x154871['update'](_0x33cee4)[_0x146a('0x24')](function(_0x24ead6){return _0x24ead6;});}return null;};}function removeEntity(_0x938d29,_0x282a17){return function(_0x5775bf){if(_0x5775bf){return _0x5775bf['destroy']()[_0x146a('0x24')](function(){_0x938d29[_0x146a('0x19')](0xcc)[_0x146a('0x25')]();});}};}function handleEntityNotFound(_0x3a9ec1,_0x5ee2b8){return function(_0x3eae1d){if(!_0x3eae1d){_0x3a9ec1['sendStatus'](0x194);}return _0x3eae1d;};}function handleError(_0x28e25c,_0x148c2d){_0x148c2d=_0x148c2d||0x1f4;return function(_0x308dc5){logger[_0x146a('0x26')](_0x308dc5[_0x146a('0x27')]);if(_0x308dc5[_0x146a('0x28')]){delete _0x308dc5[_0x146a('0x28')];}_0x28e25c['status'](_0x148c2d)['send'](_0x308dc5);};}exports[_0x146a('0x29')]=function(_0x4f7383,_0x243730){var _0x1b79a9={},_0x3f4877={},_0x9679e9={'count':0x0,'rows':[]};var _0x55ba97=_['map'](db[_0x146a('0x2a')][_0x146a('0x2b')],function(_0x4de3ba){return{'name':_0x4de3ba[_0x146a('0x2c')],'type':_0x4de3ba['type'][_0x146a('0x2d')]};});_0x3f4877['model']=_['map'](_0x55ba97,_0x146a('0x28'));_0x3f4877[_0x146a('0x2e')]=_['keys'](_0x4f7383['query']);_0x3f4877[_0x146a('0x2f')]=_[_0x146a('0x30')](_0x3f4877[_0x146a('0x31')],_0x3f4877[_0x146a('0x2e')]);_0x1b79a9[_0x146a('0x32')]=_['intersection'](_0x3f4877[_0x146a('0x31')],qs[_0x146a('0x33')](_0x4f7383['query']['fields']));_0x1b79a9[_0x146a('0x32')]=_0x1b79a9[_0x146a('0x32')][_0x146a('0x34')]?_0x1b79a9[_0x146a('0x32')]:_0x3f4877[_0x146a('0x31')];if(!_0x4f7383['query'][_0x146a('0x35')](_0x146a('0x36'))){_0x1b79a9[_0x146a('0x1c')]=qs[_0x146a('0x1c')](_0x4f7383[_0x146a('0x2e')][_0x146a('0x1c')]);_0x1b79a9[_0x146a('0x1b')]=qs[_0x146a('0x1b')](_0x4f7383['query']['offset']);}_0x1b79a9[_0x146a('0x37')]=qs[_0x146a('0x38')](_0x4f7383['query'][_0x146a('0x38')]);_0x1b79a9[_0x146a('0x39')]=qs[_0x146a('0x2f')](_['pick'](_0x4f7383[_0x146a('0x2e')],_0x3f4877['filters']),_0x55ba97);if(_0x4f7383[_0x146a('0x2e')][_0x146a('0x3a')]){_0x1b79a9[_0x146a('0x39')]=_[_0x146a('0x3b')](_0x1b79a9['where'],{'$or':_[_0x146a('0x3c')](_0x55ba97,function(_0x2110e2){if(_0x2110e2[_0x146a('0x3d')]!=='VIRTUAL'){var _0x2eb555={};_0x2eb555[_0x2110e2[_0x146a('0x28')]]={'$like':'%'+_0x4f7383[_0x146a('0x2e')]['filter']+'%'};return _0x2eb555;}})});}_0x1b79a9=_[_0x146a('0x3b')]({},_0x1b79a9,_0x4f7383['options']);var _0x217a6d={'where':_0x1b79a9[_0x146a('0x39')]};return db[_0x146a('0x2a')][_0x146a('0x1e')](_0x217a6d)['then'](function(_0x2b124c){_0x9679e9[_0x146a('0x1e')]=_0x2b124c;if(_0x4f7383['query']['includeAll']){_0x1b79a9[_0x146a('0x3e')]=[{'all':!![]}];}return db[_0x146a('0x2a')]['findAll'](_0x1b79a9);})[_0x146a('0x24')](function(_0x1a9edc){_0x9679e9[_0x146a('0x3f')]=_0x1a9edc;return _0x9679e9;})[_0x146a('0x24')](respondWithFilteredResult(_0x243730,_0x1b79a9))[_0x146a('0x40')](handleError(_0x243730,null));};exports[_0x146a('0x41')]=function(_0x39648f,_0x3eb40c){var _0x910e5c={'raw':!![],'where':{'id':_0x39648f['params']['id']}},_0x446110={};_0x446110[_0x146a('0x31')]=_[_0x146a('0x42')](db['CmHopperHistory'][_0x146a('0x2b')]);_0x446110[_0x146a('0x2e')]=_[_0x146a('0x42')](_0x39648f[_0x146a('0x2e')]);_0x446110[_0x146a('0x2f')]=_['intersection'](_0x446110[_0x146a('0x31')],_0x446110['query']);_0x910e5c[_0x146a('0x32')]=_['intersection'](_0x446110[_0x146a('0x31')],qs[_0x146a('0x33')](_0x39648f['query'][_0x146a('0x33')]));_0x910e5c[_0x146a('0x32')]=_0x910e5c[_0x146a('0x32')][_0x146a('0x34')]?_0x910e5c[_0x146a('0x32')]:_0x446110[_0x146a('0x31')];if(_0x39648f[_0x146a('0x2e')][_0x146a('0x43')]){_0x910e5c[_0x146a('0x3e')]=[{'all':!![]}];}_0x910e5c=_[_0x146a('0x3b')]({},_0x910e5c,_0x39648f['options']);return db['CmHopperHistory']['find'](_0x910e5c)[_0x146a('0x24')](handleEntityNotFound(_0x3eb40c,null))[_0x146a('0x24')](respondWithResult(_0x3eb40c,null))['catch'](handleError(_0x3eb40c,null));};exports[_0x146a('0x44')]=function(_0x3be99c,_0x5af8f5){return db[_0x146a('0x2a')][_0x146a('0x44')](_0x3be99c[_0x146a('0x45')],{})[_0x146a('0x24')](respondWithResult(_0x5af8f5,0xc9))[_0x146a('0x40')](handleError(_0x5af8f5,null));};exports['describe']=function(_0xd275dc,_0x3205c2){return db['CmHopperHistory']['describe']()[_0x146a('0x24')](respondWithResult(_0x3205c2,null))[_0x146a('0x40')](handleError(_0x3205c2,null));};exports[_0x146a('0x46')]=function(_0x271edb,_0x578263){if(_0x271edb[_0x146a('0x45')]['uniqueid']){delete _0x271edb['body'][_0x146a('0x47')];}return db[_0x146a('0x2a')]['find']({'where':{'uniqueid':_0x271edb[_0x146a('0x48')]['id']}})[_0x146a('0x24')](handleEntityNotFound(_0x578263,null))['then'](saveUpdates(_0x271edb[_0x146a('0x45')],null))[_0x146a('0x24')](respondWithResult(_0x578263,null))[_0x146a('0x40')](handleError(_0x578263,null));};
\ No newline at end of file
+var _0xf60a=['update','then','destroy','end','error','stack','name','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','find','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save'];(function(_0x22d7e6,_0xa620e7){var _0x72bc58=function(_0x2c75f6){while(--_0x2c75f6){_0x22d7e6['push'](_0x22d7e6['shift']());}};_0x72bc58(++_0xa620e7);}(_0xf60a,0x116));var _0xaf60=function(_0x8036e9,_0xb2a199){_0x8036e9=_0x8036e9-0x0;var _0x34a8eb=_0xf60a[_0x8036e9];return _0x34a8eb;};'use strict';var emlformat=require(_0xaf60('0x0'));var rimraf=require(_0xaf60('0x1'));var zipdir=require(_0xaf60('0x2'));var jsonpatch=require(_0xaf60('0x3'));var rp=require(_0xaf60('0x4'));var moment=require(_0xaf60('0x5'));var BPromise=require(_0xaf60('0x6'));var Mustache=require(_0xaf60('0x7'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xaf60('0x8'));var ejs=require(_0xaf60('0x9'));var fs=require('fs');var fs_extra=require(_0xaf60('0xa'));var _=require('lodash');var squel=require(_0xaf60('0xb'));var crypto=require(_0xaf60('0xc'));var jsforce=require(_0xaf60('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xaf60('0x8'));var querystring=require(_0xaf60('0xe'));var Papa=require(_0xaf60('0xf'));var Redis=require(_0xaf60('0x10'));var authService=require(_0xaf60('0x11'));var qs=require(_0xaf60('0x12'));var as=require(_0xaf60('0x13'));var hardwareService=require(_0xaf60('0x14'));var logger=require(_0xaf60('0x15'))(_0xaf60('0x16'));var utils=require(_0xaf60('0x17'));var config=require(_0xaf60('0x18'));var licenseUtil=require(_0xaf60('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1eb82a,_0x1480e7){_0x1480e7=_0x1480e7||0xcc;return function(_0x589970){if(_0x589970){return _0x1eb82a[_0xaf60('0x1a')](_0x1480e7);}return _0x1eb82a[_0xaf60('0x1b')](_0x1480e7)['end']();};}function respondWithResult(_0xd2689b,_0x22fd3e){_0x22fd3e=_0x22fd3e||0xc8;return function(_0x4bd255){if(_0x4bd255){return _0xd2689b[_0xaf60('0x1b')](_0x22fd3e)[_0xaf60('0x1c')](_0x4bd255);}};}function respondWithFilteredResult(_0x4eabd7,_0x1f926a){return function(_0x28003a){if(_0x28003a){var _0x49bb85=typeof _0x1f926a['offset']===_0xaf60('0x1d')&&typeof _0x1f926a[_0xaf60('0x1e')]==='undefined';var _0x208d50=_0x28003a['count'];var _0x18d7cc=_0x49bb85?0x0:_0x1f926a[_0xaf60('0x1f')];var _0x361920=_0x49bb85?_0x28003a[_0xaf60('0x20')]:_0x1f926a[_0xaf60('0x1f')]+_0x1f926a[_0xaf60('0x1e')];var _0x1fb589;if(_0x361920>=_0x208d50){_0x361920=_0x208d50;_0x1fb589=0xc8;}else{_0x1fb589=0xce;}_0x4eabd7['status'](_0x1fb589);return _0x4eabd7[_0xaf60('0x21')](_0xaf60('0x22'),_0x18d7cc+'-'+_0x361920+'/'+_0x208d50)[_0xaf60('0x1c')](_0x28003a);}return null;};}function patchUpdates(_0x1b7b69){return function(_0x1197d9){try{jsonpatch[_0xaf60('0x23')](_0x1197d9,_0x1b7b69,!![]);}catch(_0x5c16e7){return BPromise[_0xaf60('0x24')](_0x5c16e7);}return _0x1197d9[_0xaf60('0x25')]();};}function saveUpdates(_0x399614,_0x452adb){return function(_0x390be0){if(_0x390be0){return _0x390be0[_0xaf60('0x26')](_0x399614)[_0xaf60('0x27')](function(_0x232d22){return _0x232d22;});}return null;};}function removeEntity(_0x5d48ff,_0x3ec6dc){return function(_0x3fea62){if(_0x3fea62){return _0x3fea62[_0xaf60('0x28')]()[_0xaf60('0x27')](function(){_0x5d48ff['status'](0xcc)[_0xaf60('0x29')]();});}};}function handleEntityNotFound(_0x2a6d03,_0x4d61d6){return function(_0x182d5c){if(!_0x182d5c){_0x2a6d03[_0xaf60('0x1a')](0x194);}return _0x182d5c;};}function handleError(_0x3cb096,_0x15a3ea){_0x15a3ea=_0x15a3ea||0x1f4;return function(_0x14d633){logger[_0xaf60('0x2a')](_0x14d633[_0xaf60('0x2b')]);if(_0x14d633[_0xaf60('0x2c')]){delete _0x14d633[_0xaf60('0x2c')];}_0x3cb096['status'](_0x15a3ea)['send'](_0x14d633);};}exports[_0xaf60('0x2d')]=function(_0x32c175,_0x32c1d7){var _0x20eb50={},_0x269fd2={},_0x13b72e={'count':0x0,'rows':[]};var _0x536197=_[_0xaf60('0x2e')](db[_0xaf60('0x2f')][_0xaf60('0x30')],function(_0x2b9e7c){return{'name':_0x2b9e7c[_0xaf60('0x31')],'type':_0x2b9e7c[_0xaf60('0x32')][_0xaf60('0x33')]};});_0x269fd2[_0xaf60('0x34')]=_[_0xaf60('0x2e')](_0x536197,_0xaf60('0x2c'));_0x269fd2[_0xaf60('0x35')]=_[_0xaf60('0x36')](_0x32c175[_0xaf60('0x35')]);_0x269fd2[_0xaf60('0x37')]=_['intersection'](_0x269fd2['model'],_0x269fd2['query']);_0x20eb50[_0xaf60('0x38')]=_[_0xaf60('0x39')](_0x269fd2['model'],qs[_0xaf60('0x3a')](_0x32c175[_0xaf60('0x35')][_0xaf60('0x3a')]));_0x20eb50[_0xaf60('0x38')]=_0x20eb50[_0xaf60('0x38')]['length']?_0x20eb50[_0xaf60('0x38')]:_0x269fd2[_0xaf60('0x34')];if(!_0x32c175['query'][_0xaf60('0x3b')](_0xaf60('0x3c'))){_0x20eb50[_0xaf60('0x1e')]=qs[_0xaf60('0x1e')](_0x32c175[_0xaf60('0x35')]['limit']);_0x20eb50[_0xaf60('0x1f')]=qs[_0xaf60('0x1f')](_0x32c175['query']['offset']);}_0x20eb50[_0xaf60('0x3d')]=qs[_0xaf60('0x3e')](_0x32c175[_0xaf60('0x35')][_0xaf60('0x3e')]);_0x20eb50[_0xaf60('0x3f')]=qs[_0xaf60('0x37')](_[_0xaf60('0x40')](_0x32c175[_0xaf60('0x35')],_0x269fd2[_0xaf60('0x37')]),_0x536197);if(_0x32c175[_0xaf60('0x35')][_0xaf60('0x41')]){_0x20eb50[_0xaf60('0x3f')]=_[_0xaf60('0x42')](_0x20eb50[_0xaf60('0x3f')],{'$or':_[_0xaf60('0x2e')](_0x536197,function(_0xff0d75){if(_0xff0d75[_0xaf60('0x32')]!==_0xaf60('0x43')){var _0x3faa8f={};_0x3faa8f[_0xff0d75['name']]={'$like':'%'+_0x32c175[_0xaf60('0x35')]['filter']+'%'};return _0x3faa8f;}})});}_0x20eb50=_[_0xaf60('0x42')]({},_0x20eb50,_0x32c175[_0xaf60('0x44')]);var _0x2ae840={'where':_0x20eb50[_0xaf60('0x3f')]};return db[_0xaf60('0x2f')]['count'](_0x2ae840)[_0xaf60('0x27')](function(_0x9c6a68){_0x13b72e[_0xaf60('0x20')]=_0x9c6a68;if(_0x32c175[_0xaf60('0x35')][_0xaf60('0x45')]){_0x20eb50['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0xaf60('0x46')](_0x20eb50);})[_0xaf60('0x27')](function(_0x52bffe){_0x13b72e[_0xaf60('0x47')]=_0x52bffe;return _0x13b72e;})[_0xaf60('0x27')](respondWithFilteredResult(_0x32c1d7,_0x20eb50))[_0xaf60('0x48')](handleError(_0x32c1d7,null));};exports['show']=function(_0x42bffb,_0x364433){var _0x1f7a60={'raw':!![],'where':{'id':_0x42bffb[_0xaf60('0x49')]['id']}},_0x53533b={};_0x53533b['model']=_[_0xaf60('0x36')](db[_0xaf60('0x2f')]['rawAttributes']);_0x53533b[_0xaf60('0x35')]=_['keys'](_0x42bffb[_0xaf60('0x35')]);_0x53533b[_0xaf60('0x37')]=_[_0xaf60('0x39')](_0x53533b[_0xaf60('0x34')],_0x53533b[_0xaf60('0x35')]);_0x1f7a60[_0xaf60('0x38')]=_['intersection'](_0x53533b['model'],qs['fields'](_0x42bffb[_0xaf60('0x35')]['fields']));_0x1f7a60['attributes']=_0x1f7a60[_0xaf60('0x38')]['length']?_0x1f7a60[_0xaf60('0x38')]:_0x53533b[_0xaf60('0x34')];if(_0x42bffb[_0xaf60('0x35')][_0xaf60('0x45')]){_0x1f7a60['include']=[{'all':!![]}];}_0x1f7a60=_['merge']({},_0x1f7a60,_0x42bffb[_0xaf60('0x44')]);return db[_0xaf60('0x2f')][_0xaf60('0x4a')](_0x1f7a60)[_0xaf60('0x27')](handleEntityNotFound(_0x364433,null))['then'](respondWithResult(_0x364433,null))[_0xaf60('0x48')](handleError(_0x364433,null));};exports['create']=function(_0x4ae7a1,_0x57853f){return db['CmHopperHistory'][_0xaf60('0x4b')](_0x4ae7a1[_0xaf60('0x4c')],{})[_0xaf60('0x27')](respondWithResult(_0x57853f,0xc9))['catch'](handleError(_0x57853f,null));};exports[_0xaf60('0x4d')]=function(_0x2070a3,_0x4e17ad){return db[_0xaf60('0x2f')][_0xaf60('0x4d')]()['then'](respondWithResult(_0x4e17ad,null))[_0xaf60('0x48')](handleError(_0x4e17ad,null));};exports['update']=function(_0x10b9aa,_0x552498){if(_0x10b9aa[_0xaf60('0x4c')][_0xaf60('0x4e')]){delete _0x10b9aa[_0xaf60('0x4c')]['uniqueid'];}return db['CmHopperHistory']['find']({'where':{'uniqueid':_0x10b9aa[_0xaf60('0x49')]['id']}})[_0xaf60('0x27')](handleEntityNotFound(_0x552498,null))[_0xaf60('0x27')](saveUpdates(_0x10b9aa['body'],null))[_0xaf60('0x27')](respondWithResult(_0x552498,null))[_0xaf60('0x48')](handleError(_0x552498,null));};
\ No newline at end of file
index 45d409b..71787ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0598=['cm_hopper_history','endtime','lodash','util','api','request-promise','path','exports','CmHopperHistory'];(function(_0x442492,_0x5ed9e8){var _0x453345=function(_0x39d11c){while(--_0x39d11c){_0x442492['push'](_0x442492['shift']());}};_0x453345(++_0x5ed9e8);}(_0x0598,0x92));var _0x8059=function(_0x4e72ec,_0x495320){_0x4e72ec=_0x4e72ec-0x0;var _0x53fdd1=_0x0598[_0x4e72ec];return _0x53fdd1;};'use strict';var _=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var logger=require('../../config/logger')(_0x8059('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8059('0x3'));var fs=require('fs');var path=require(_0x8059('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmHopperHistory.attributes');module[_0x8059('0x5')]=function(_0xa7d7c1,_0x512c0f){return _0xa7d7c1['define'](_0x8059('0x6'),attributes,{'tableName':_0x8059('0x7'),'paranoid':![],'indexes':[{'name':_0x8059('0x8'),'fields':[_0x8059('0x8')]},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf40b=['rimraf','../../config/environment','./cmHopperHistory.attributes','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','util','../../config/logger','api','moment','request-promise','path'];(function(_0xf83ffc,_0x37e10c){var _0x2509a4=function(_0x19b8f5){while(--_0x19b8f5){_0xf83ffc['push'](_0xf83ffc['shift']());}};_0x2509a4(++_0x37e10c);}(_0xf40b,0xb0));var _0xbf40=function(_0x13e724,_0x296739){_0x13e724=_0x13e724-0x0;var _0x334a44=_0xf40b[_0x13e724];return _0x334a44;};'use strict';var _=require('lodash');var util=require(_0xbf40('0x0'));var logger=require(_0xbf40('0x1'))(_0xbf40('0x2'));var moment=require(_0xbf40('0x3'));var BPromise=require('bluebird');var rp=require(_0xbf40('0x4'));var fs=require('fs');var path=require(_0xbf40('0x5'));var rimraf=require(_0xbf40('0x6'));var config=require(_0xbf40('0x7'));var attributes=require(_0xbf40('0x8'));module['exports']=function(_0x2e74b5,_0xbe1c47){return _0x2e74b5[_0xbf40('0x9')](_0xbf40('0xa'),attributes,{'tableName':_0xbf40('0xb'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0xbf40('0xc')]},{'name':_0xbf40('0xd'),'fields':[_0xbf40('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 593559f..e4b2b1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6be1=['`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','campaign','name','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateCmHopperHistory','CmHopperHistory','create','options','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','AvgHandleTime','GetVoiceQueueHopperHistory','findAll','raw','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit'];(function(_0x15930e,_0x33812b){var _0x36093a=function(_0x4729aa){while(--_0x4729aa){_0x15930e['push'](_0x15930e['shift']());}};_0x36093a(++_0x33812b);}(_0x6be1,0x12f));var _0x16be=function(_0xea76e7,_0x2444d1){_0xea76e7=_0xea76e7-0x0;var _0x8525f9=_0x6be1[_0xea76e7];return _0x8525f9;};'use strict';var _=require(_0x16be('0x0'));var util=require(_0x16be('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x16be('0x2'))['db'];var utils=require(_0x16be('0x3'));var logger=require(_0x16be('0x4'))(_0x16be('0x5'));var config=require(_0x16be('0x6'));var jayson=require(_0x16be('0x7'));var client=jayson[_0x16be('0x8')][_0x16be('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f6c26,_0x1c5e94,_0x4eaedb){return new BPromise(function(_0x36438c,_0x32ff9a){return client[_0x16be('0xa')](_0x2f6c26,_0x4eaedb)[_0x16be('0xb')](function(_0x1a820e){logger[_0x16be('0xc')](_0x16be('0xd'),_0x1c5e94,_0x16be('0xe'));logger[_0x16be('0xf')](_0x16be('0x10'),_0x1c5e94,_0x16be('0xe'),JSON[_0x16be('0x11')](_0x1a820e));if(_0x1a820e[_0x16be('0x12')]){if(_0x1a820e[_0x16be('0x12')][_0x16be('0x13')]===0x1f4){logger[_0x16be('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x1c5e94,_0x1a820e[_0x16be('0x12')][_0x16be('0x14')]);return _0x32ff9a(_0x1a820e[_0x16be('0x12')][_0x16be('0x14')]);}logger[_0x16be('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x1c5e94,_0x1a820e[_0x16be('0x12')][_0x16be('0x14')]);return _0x36438c(_0x1a820e['error'][_0x16be('0x14')]);}else{logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x1c5e94,'request\x20sent');_0x36438c(_0x1a820e[_0x16be('0x15')][_0x16be('0x14')]);}})[_0x16be('0x16')](function(_0x5e8eeb){logger[_0x16be('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x1c5e94,_0x5e8eeb);_0x32ff9a(_0x5e8eeb);});});}exports[_0x16be('0x17')]=function(_0x173da3){var _0x10ee4e=this;return new Promise(function(_0x26d381,_0x47d49d){return db[_0x16be('0x18')][_0x16be('0x19')](_0x173da3['body'],{'raw':_0x173da3[_0x16be('0x1a')]?_0x173da3[_0x16be('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x16be('0xb')](function(_0xac15db){logger['info'](_0x16be('0x17'),_0x173da3);logger[_0x16be('0xf')]('CreateCmHopperHistory',_0x173da3,JSON['stringify'](_0xac15db));_0x26d381(_0xac15db);})[_0x16be('0x16')](function(_0xd99f60){logger['error'](_0x16be('0x17'),_0xd99f60[_0x16be('0x14')],_0x173da3);_0x47d49d(_0x10ee4e[_0x16be('0x12')](0x1f4,_0xd99f60[_0x16be('0x14')]));});});};exports['AvgHandleTime']=function(_0x71a798){var _0x4525a2=this;return new Promise(function(_0x4c6c3a,_0x14ba98){return db['CmHopperHistory']['findAll']({'raw':_0x71a798[_0x16be('0x1a')]?_0x71a798[_0x16be('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x71a798[_0x16be('0x1a')]?_0x71a798[_0x16be('0x1a')][_0x16be('0x1b')]||null:null,'attributes':[[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')][_0x16be('0x1e')]('id')),_0x16be('0x1f')],[db['sequelize']['fn'](_0x16be('0x1d'),db['sequelize']['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')](_0x16be('0x21')))),_0x16be('0x22')],[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db['sequelize']['fn']('IF',db['sequelize'][_0x16be('0x20')](_0x16be('0x23')))),_0x16be('0x24')],[db[_0x16be('0x1c')]['fn']('COUNT',db[_0x16be('0x1c')]['fn']('IF',db['sequelize'][_0x16be('0x20')](_0x16be('0x25')))),_0x16be('0x26')],[db[_0x16be('0x1c')]['fn'](_0x16be('0x27'),db[_0x16be('0x1c')]['fn']('IF',db['sequelize'][_0x16be('0x20')](_0x16be('0x28')))),_0x16be('0x29')],[db['sequelize']['fn']('AVG',db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')](_0x16be('0x2a')))),_0x16be('0x2b')]]})[_0x16be('0xb')](function(_0x24d842){logger['info']('AvgHandleTime',_0x71a798);logger[_0x16be('0xf')](_0x16be('0x2c'),_0x71a798,JSON[_0x16be('0x11')](_0x24d842));_0x4c6c3a(_0x24d842);})[_0x16be('0x16')](function(_0x49246b){logger[_0x16be('0x12')](_0x16be('0x2c'),_0x49246b[_0x16be('0x14')],_0x71a798);_0x14ba98(_0x4525a2[_0x16be('0x12')](0x1f4,_0x49246b['message']));});});};exports[_0x16be('0x2d')]=function(_0x4a11a2){var _0x56e0c7=this;return new Promise(function(_0x38f3d1,_0x1a215c){return db['CmHopperHistory'][_0x16be('0x2e')]({'raw':_0x4a11a2[_0x16be('0x1a')]?_0x4a11a2[_0x16be('0x1a')][_0x16be('0x2f')]===undefined?!![]:![]:!![],'where':_0x4a11a2[_0x16be('0x1a')]?_0x4a11a2['options'][_0x16be('0x1b')]||null:null,'attributes':[['campaign','name'],[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')]['fn']('IF',db['sequelize'][_0x16be('0x20')](_0x16be('0x30')))),'outboundNoSuchCallsDay'],[db[_0x16be('0x1c')]['fn']('COUNT',db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')](_0x16be('0x31')))),_0x16be('0x32')],[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')]('`state`\x20=\x204,\x201,\x20null'))),_0x16be('0x33')],[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db['sequelize']['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')](_0x16be('0x34')))),'outboundBusyCallsDay'],[db[_0x16be('0x1c')]['fn']('COUNT',db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')]['literal'](_0x16be('0x35')))),'outboundCongestionCallsDay'],[db[_0x16be('0x1c')]['fn']('COUNT',db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x16be('0x36')],[db['sequelize']['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')]['fn']('IF',db['sequelize'][_0x16be('0x20')](_0x16be('0x37')))),_0x16be('0x38')],[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')]['literal'](_0x16be('0x39')))),_0x16be('0x3a')],[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')]['fn']('IF',db['sequelize'][_0x16be('0x20')](_0x16be('0x3b')))),_0x16be('0x3c')],[db[_0x16be('0x1c')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')]('`state`\x20=\x2014,\x201,\x20null'))),'outboundOriginateFailureCallsDay'],[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')](_0x16be('0x3d')))),_0x16be('0x3e')],[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')]['literal'](_0x16be('0x3f')))),_0x16be('0x40')],[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')](_0x16be('0x41')))),_0x16be('0x3e')],[db[_0x16be('0x1c')]['fn']('COUNT',db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')](_0x16be('0x42')))),'outboundReCallsDay']],'group':[_0x16be('0x43')]})[_0x16be('0xb')](function(_0x2897b1){logger[_0x16be('0xc')](_0x16be('0x2d'),_0x4a11a2);logger[_0x16be('0xf')]('GetVoiceQueueHopperHistory',_0x4a11a2,JSON[_0x16be('0x11')](_0x2897b1));_0x38f3d1(_0x2897b1);})['catch'](function(_0x189522){logger[_0x16be('0x12')]('GetVoiceQueueHopperHistory',_0x189522['message'],_0x4a11a2);_0x1a215c(_0x56e0c7['error'](0x1f4,_0x189522['message']));});});};exports['GetCampaignHopperHistory']=function(_0x5728ba){var _0x163913=this;return new Promise(function(_0x558b76,_0x1d6436){return db['CmHopperHistory'][_0x16be('0x2e')]({'raw':_0x5728ba['options']?_0x5728ba[_0x16be('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x5728ba[_0x16be('0x1a')]?_0x5728ba[_0x16be('0x1a')][_0x16be('0x1b')]||null:null,'attributes':[[_0x16be('0x43'),_0x16be('0x44')],[db[_0x16be('0x1c')]['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')][_0x16be('0x1e')]('id')),_0x16be('0x45')],[db['sequelize']['fn'](_0x16be('0x1d'),db[_0x16be('0x1c')]['fn']('IF',db[_0x16be('0x1c')][_0x16be('0x20')](_0x16be('0x21')))),_0x16be('0x46')]],'group':[_0x16be('0x43')]})[_0x16be('0xb')](function(_0xe5c135){logger[_0x16be('0xc')](_0x16be('0x47'),_0x5728ba);logger[_0x16be('0xf')](_0x16be('0x47'),_0x5728ba,JSON[_0x16be('0x11')](_0xe5c135));_0x558b76(_0xe5c135);})[_0x16be('0x16')](function(_0x1f844d){logger[_0x16be('0x12')]('GetCampaignHopperHistory',_0x1f844d[_0x16be('0x14')],_0x5728ba);_0x1d6436(_0x163913[_0x16be('0x12')](0x1f4,_0x1f844d[_0x16be('0x14')]));});});};
\ No newline at end of file
+var _0x33a1=['jayson/promise','client','request','then','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','CmHopperHistory,\x20%s,\x20%s','info','CreateCmHopperHistory','create','options','raw','catch','AvgHandleTime','CmHopperHistory','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','findAll','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','outboundNoAnswerCallsDay','`state`\x20=\x204,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','outboundAnswerAgiCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrAnswerCallsDay','lodash','util','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x599ff9,_0x4d6e57){var _0x5d11d7=function(_0x46cf4d){while(--_0x46cf4d){_0x599ff9['push'](_0x599ff9['shift']());}};_0x5d11d7(++_0x4d6e57);}(_0x33a1,0x7c));var _0x133a=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x33a1[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x133a('0x0'));var util=require(_0x133a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x133a('0x2'))['db'];var utils=require(_0x133a('0x3'));var logger=require(_0x133a('0x4'))('rpc');var config=require(_0x133a('0x5'));var jayson=require(_0x133a('0x6'));var client=jayson[_0x133a('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x13fe1d,_0x1a6b64,_0x31409d){return new BPromise(function(_0x5f3a8f,_0x37e7cc){return client[_0x133a('0x8')](_0x13fe1d,_0x31409d)[_0x133a('0x9')](function(_0x43974a){logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x1a6b64,'request\x20sent');logger[_0x133a('0xa')](_0x133a('0xb'),_0x1a6b64,_0x133a('0xc'),JSON[_0x133a('0xd')](_0x43974a));if(_0x43974a[_0x133a('0xe')]){if(_0x43974a['error']['code']===0x1f4){logger[_0x133a('0xe')]('CmHopperHistory,\x20%s,\x20%s',_0x1a6b64,_0x43974a['error'][_0x133a('0xf')]);return _0x37e7cc(_0x43974a[_0x133a('0xe')]['message']);}logger[_0x133a('0xe')](_0x133a('0x10'),_0x1a6b64,_0x43974a[_0x133a('0xe')]['message']);return _0x5f3a8f(_0x43974a['error'][_0x133a('0xf')]);}else{logger[_0x133a('0x11')](_0x133a('0x10'),_0x1a6b64,_0x133a('0xc'));_0x5f3a8f(_0x43974a['result']['message']);}})['catch'](function(_0x2f85f1){logger['error'](_0x133a('0x10'),_0x1a6b64,_0x2f85f1);_0x37e7cc(_0x2f85f1);});});}exports[_0x133a('0x12')]=function(_0x4fb80f){var _0xb91a9e=this;return new Promise(function(_0x1489c9,_0x5483dc){return db['CmHopperHistory'][_0x133a('0x13')](_0x4fb80f['body'],{'raw':_0x4fb80f[_0x133a('0x14')]?_0x4fb80f[_0x133a('0x14')][_0x133a('0x15')]===undefined?!![]:![]:!![]})[_0x133a('0x9')](function(_0x86ba96){logger[_0x133a('0x11')]('CreateCmHopperHistory',_0x4fb80f);logger[_0x133a('0xa')](_0x133a('0x12'),_0x4fb80f,JSON[_0x133a('0xd')](_0x86ba96));_0x1489c9(_0x86ba96);})[_0x133a('0x16')](function(_0x122405){logger[_0x133a('0xe')]('CreateCmHopperHistory',_0x122405['message'],_0x4fb80f);_0x5483dc(_0xb91a9e['error'](0x1f4,_0x122405['message']));});});};exports[_0x133a('0x17')]=function(_0x63f401){var _0x1d4035=this;return new Promise(function(_0x49097d,_0x33c486){return db[_0x133a('0x18')]['findAll']({'raw':_0x63f401[_0x133a('0x14')]?_0x63f401[_0x133a('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x63f401[_0x133a('0x14')]?_0x63f401[_0x133a('0x14')][_0x133a('0x19')]||null:null,'attributes':[[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')][_0x133a('0x1c')]('id')),_0x133a('0x1d')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db['sequelize'][_0x133a('0x1e')]('`state`\x20=\x204,\x201,\x20null'))),_0x133a('0x1f')],[db['sequelize']['fn'](_0x133a('0x1b'),db['sequelize']['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x20')))),_0x133a('0x21')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x22')))),_0x133a('0x23')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x24'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x25')))),_0x133a('0x26')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x24'),db['sequelize']['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x27')))),_0x133a('0x28')]]})['then'](function(_0x7fdbe2){logger[_0x133a('0x11')](_0x133a('0x17'),_0x63f401);logger['debug'](_0x133a('0x17'),_0x63f401,JSON[_0x133a('0xd')](_0x7fdbe2));_0x49097d(_0x7fdbe2);})[_0x133a('0x16')](function(_0x2cb442){logger[_0x133a('0xe')](_0x133a('0x17'),_0x2cb442[_0x133a('0xf')],_0x63f401);_0x33c486(_0x1d4035[_0x133a('0xe')](0x1f4,_0x2cb442[_0x133a('0xf')]));});});};exports[_0x133a('0x29')]=function(_0x4dc487){var _0x48b7f=this;return new Promise(function(_0x2acdee,_0x144f72){return db[_0x133a('0x18')][_0x133a('0x2a')]({'raw':_0x4dc487['options']?_0x4dc487[_0x133a('0x14')][_0x133a('0x15')]===undefined?!![]:![]:!![],'where':_0x4dc487['options']?_0x4dc487[_0x133a('0x14')][_0x133a('0x19')]||null:null,'attributes':[['campaign',_0x133a('0x2b')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db['sequelize']['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x2c')))),_0x133a('0x2d')],[db['sequelize']['fn']('COUNT',db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')]('`state`\x20=\x203,\x201,\x20null'))),_0x133a('0x2e')],[db['sequelize']['fn']('COUNT',db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x2f')))),_0x133a('0x30')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')]['literal']('`state`\x20=\x205,\x201,\x20null'))),'outboundBusyCallsDay'],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x31')))),_0x133a('0x32')],[db['sequelize']['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')]['literal']('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x133a('0x33')],[db['sequelize']['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x133a('0x34')],[db[_0x133a('0x1a')]['fn']('COUNT',db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')]['literal']('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x35')))),_0x133a('0x36')],[db['sequelize']['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db['sequelize'][_0x133a('0x1e')](_0x133a('0x37')))),_0x133a('0x38')],[db['sequelize']['fn']('COUNT',db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')]['literal'](_0x133a('0x39')))),_0x133a('0x3a')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')]('`state`\x20=\x2016,\x201,\x20null'))),_0x133a('0x3b')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db['sequelize'][_0x133a('0x1e')]('`state`\x20=\x2020,\x201,\x20null'))),_0x133a('0x3a')],[db[_0x133a('0x1a')]['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x3c')))),_0x133a('0x3d')]],'group':[_0x133a('0x3e')]})[_0x133a('0x9')](function(_0x216aad){logger[_0x133a('0x11')](_0x133a('0x29'),_0x4dc487);logger[_0x133a('0xa')](_0x133a('0x29'),_0x4dc487,JSON['stringify'](_0x216aad));_0x2acdee(_0x216aad);})[_0x133a('0x16')](function(_0x5b41ca){logger[_0x133a('0xe')](_0x133a('0x29'),_0x5b41ca[_0x133a('0xf')],_0x4dc487);_0x144f72(_0x48b7f['error'](0x1f4,_0x5b41ca[_0x133a('0xf')]));});});};exports[_0x133a('0x3f')]=function(_0x543fc2){var _0x511128=this;return new Promise(function(_0x2ec856,_0x8d3f01){return db['CmHopperHistory']['findAll']({'raw':_0x543fc2[_0x133a('0x14')]?_0x543fc2[_0x133a('0x14')][_0x133a('0x15')]===undefined?!![]:![]:!![],'where':_0x543fc2['options']?_0x543fc2[_0x133a('0x14')][_0x133a('0x19')]||null:null,'attributes':[['campaign',_0x133a('0x2b')],[db['sequelize']['fn'](_0x133a('0x1b'),db[_0x133a('0x1a')][_0x133a('0x1c')]('id')),'ivrTotalCallsDays'],[db[_0x133a('0x1a')]['fn']('COUNT',db[_0x133a('0x1a')]['fn']('IF',db[_0x133a('0x1a')][_0x133a('0x1e')](_0x133a('0x2f')))),_0x133a('0x40')]],'group':['campaign']})[_0x133a('0x9')](function(_0xec69a1){logger['info'](_0x133a('0x3f'),_0x543fc2);logger[_0x133a('0xa')](_0x133a('0x3f'),_0x543fc2,JSON['stringify'](_0xec69a1));_0x2ec856(_0xec69a1);})[_0x133a('0x16')](function(_0x4ed930){logger[_0x133a('0xe')](_0x133a('0x3f'),_0x4ed930['message'],_0x543fc2);_0x8d3f01(_0x511128[_0x133a('0xe')](0x1f4,_0x4ed930[_0x133a('0xf')]));});});};
\ No newline at end of file
index 0a4bb9f..e866eb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f1b=['../../components/interaction/service','../../config/environment','index','/describe','isAuthenticated','describe','/:id','show','post','put','update','exports','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x3c391f,_0x2163ce){var _0x5c0b55=function(_0x72a8b8){while(--_0x72a8b8){_0x3c391f['push'](_0x3c391f['shift']());}};_0x5c0b55(++_0x2163ce);}(_0x9f1b,0x1bc));var _0xb9f1=function(_0x30458a,_0x545963){_0x30458a=_0x30458a-0x0;var _0x1bd192=_0x9f1b[_0x30458a];return _0x1bd192;};'use strict';var multer=require('multer');var util=require(_0xb9f1('0x0'));var path=require(_0xb9f1('0x1'));var timeout=require(_0xb9f1('0x2'));var express=require(_0xb9f1('0x3'));var router=express[_0xb9f1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb9f1('0x5'));var interaction=require(_0xb9f1('0x6'));var config=require(_0xb9f1('0x7'));var controller=require('./cmHopperHistory.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xb9f1('0x8')]);router['get'](_0xb9f1('0x9'),auth[_0xb9f1('0xa')](),controller[_0xb9f1('0xb')]);router['get'](_0xb9f1('0xc'),auth[_0xb9f1('0xa')](),controller[_0xb9f1('0xd')]);router[_0xb9f1('0xe')]('/',auth[_0xb9f1('0xa')](),controller['create']);router[_0xb9f1('0xf')](_0xb9f1('0xc'),auth['isAuthenticated'](),controller[_0xb9f1('0x10')]);module[_0xb9f1('0x11')]=router;
\ No newline at end of file
+var _0xbc57=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','exports'];(function(_0x547456,_0x1de17e){var _0xc1fd7b=function(_0x12be35){while(--_0x12be35){_0x547456['push'](_0x547456['shift']());}};_0xc1fd7b(++_0x1de17e);}(_0xbc57,0x132));var _0x7bc5=function(_0x4bb969,_0x41e27a){_0x4bb969=_0x4bb969-0x0;var _0x5c8857=_0xbc57[_0x4bb969];return _0x5c8857;};'use strict';var multer=require(_0x7bc5('0x0'));var util=require(_0x7bc5('0x1'));var path=require('path');var timeout=require(_0x7bc5('0x2'));var express=require(_0x7bc5('0x3'));var router=express[_0x7bc5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7bc5('0x5'));var interaction=require(_0x7bc5('0x6'));var config=require(_0x7bc5('0x7'));var controller=require(_0x7bc5('0x8'));router[_0x7bc5('0x9')]('/',auth[_0x7bc5('0xa')](),controller['index']);router['get'](_0x7bc5('0xb'),auth['isAuthenticated'](),controller[_0x7bc5('0xc')]);router[_0x7bc5('0x9')](_0x7bc5('0xd'),auth['isAuthenticated'](),controller[_0x7bc5('0xe')]);router[_0x7bc5('0xf')]('/',auth[_0x7bc5('0xa')](),controller[_0x7bc5('0x10')]);router['put']('/:id',auth[_0x7bc5('0xa')](),controller['update']);module[_0x7bc5('0x11')]=router;
\ No newline at end of file
index 5b4ff38..eca7eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe799=['sequelize','STRING'];(function(_0x309f8d,_0x2b7314){var _0x19ccf7=function(_0x4c45bd){while(--_0x4c45bd){_0x309f8d['push'](_0x309f8d['shift']());}};_0x19ccf7(++_0x2b7314);}(_0xe799,0x170));var _0x9e79=function(_0x2a0aa9,_0x24f3d0){_0x2a0aa9=_0x2a0aa9-0x0;var _0x5163fc=_0xe799[_0x2a0aa9];return _0x5163fc;};'use strict';var Sequelize=require(_0x9e79('0x0'));module['exports']={'name':{'type':Sequelize[_0x9e79('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9e79('0x1')]},'dialPrefix':{'type':Sequelize[_0x9e79('0x1')]}};
\ No newline at end of file
+var _0xdf70=['exports','STRING','sequelize'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xdf70,0x86));var _0x0df7=function(_0x459ace,_0x468dea){_0x459ace=_0x459ace-0x0;var _0x2d83a2=_0xdf70[_0x459ace];return _0x2d83a2;};'use strict';var Sequelize=require(_0x0df7('0x0'));module[_0x0df7('0x1')]={'name':{'type':Sequelize[_0x0df7('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x0df7('0x2')]},'dialPrefix':{'type':Sequelize[_0x0df7('0x2')]}};
\ No newline at end of file
index 6c18998..1c4a2d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb0e=['model','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','ListId','Disposition','findOne','keys','findAll','removeDispositions','addContacts','isArray','tags','push','each','CmContact','omit','ids','errors','message','CmCustomField','CustomFields','format','cf_%d','order','raw','getContactsCsv','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','download','sendStatus','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','type','text','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:remove','getAgents','User','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','Lists','UserProfileResource','error','name','send','map','CmList','rawAttributes','fieldName','key','query','filters','intersection','attributes'];(function(_0x14fd54,_0x139fed){var _0x25eb06=function(_0x31e0a7){while(--_0x31e0a7){_0x14fd54['push'](_0x14fd54['shift']());}};_0x25eb06(++_0x139fed);}(_0xeb0e,0x1e5));var _0xeeb0=function(_0x120b75,_0x357dc9){_0x120b75=_0x120b75-0x0;var _0x4f9c47=_0xeb0e[_0x120b75];return _0x4f9c47;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeeb0('0x0'));var zipdir=require(_0xeeb0('0x1'));var jsonpatch=require(_0xeeb0('0x2'));var rp=require(_0xeeb0('0x3'));var moment=require('moment');var BPromise=require(_0xeeb0('0x4'));var Mustache=require(_0xeeb0('0x5'));var util=require(_0xeeb0('0x6'));var path=require(_0xeeb0('0x7'));var sox=require(_0xeeb0('0x8'));var csv=require('to-csv');var ejs=require(_0xeeb0('0x9'));var fs=require('fs');var fs_extra=require(_0xeeb0('0xa'));var _=require(_0xeeb0('0xb'));var squel=require('squel');var crypto=require(_0xeeb0('0xc'));var jsforce=require(_0xeeb0('0xd'));var deskjs=require(_0xeeb0('0xe'));var toCsv=require(_0xeeb0('0xf'));var querystring=require('querystring');var Papa=require(_0xeeb0('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xeeb0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xeeb0('0x12'));var config=require(_0xeeb0('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xeeb0('0x14'))['db'];config[_0xeeb0('0x15')]=_[_0xeeb0('0x16')](config['redis'],{'host':_0xeeb0('0x17'),'port':0x18eb});var socket=require(_0xeeb0('0x18'))(new Redis(config[_0xeeb0('0x15')]));require(_0xeeb0('0x19'))[_0xeeb0('0x1a')](socket);function respondWithStatusCode(_0x489895,_0x1d542c){_0x1d542c=_0x1d542c||0xcc;return function(_0x600fb2){if(_0x600fb2){return _0x489895['sendStatus'](_0x1d542c);}return _0x489895[_0xeeb0('0x1b')](_0x1d542c)[_0xeeb0('0x1c')]();};}function respondWithResult(_0x2493ee,_0x21e085){_0x21e085=_0x21e085||0xc8;return function(_0x3d8ecd){if(_0x3d8ecd){return _0x2493ee[_0xeeb0('0x1b')](_0x21e085)[_0xeeb0('0x1d')](_0x3d8ecd);}};}function respondWithFilteredResult(_0x51053f,_0x53abea){return function(_0x29fd00){if(_0x29fd00){var _0x1e86c9=typeof _0x53abea[_0xeeb0('0x1e')]===_0xeeb0('0x1f')&&typeof _0x53abea[_0xeeb0('0x20')]===_0xeeb0('0x1f');var _0x135a68=_0x29fd00[_0xeeb0('0x21')];var _0x2a1d80=_0x1e86c9?0x0:_0x53abea[_0xeeb0('0x1e')];var _0x5e6a4f=_0x1e86c9?_0x29fd00['count']:_0x53abea[_0xeeb0('0x1e')]+_0x53abea['limit'];var _0xbb7d4d;if(_0x5e6a4f>=_0x135a68){_0x5e6a4f=_0x135a68;_0xbb7d4d=0xc8;}else{_0xbb7d4d=0xce;}_0x51053f[_0xeeb0('0x1b')](_0xbb7d4d);return _0x51053f[_0xeeb0('0x22')](_0xeeb0('0x23'),_0x2a1d80+'-'+_0x5e6a4f+'/'+_0x135a68)[_0xeeb0('0x1d')](_0x29fd00);}return null;};}function patchUpdates(_0x2b0766){return function(_0x4ace1d){try{jsonpatch[_0xeeb0('0x24')](_0x4ace1d,_0x2b0766,!![]);}catch(_0x29862b){return BPromise['reject'](_0x29862b);}return _0x4ace1d[_0xeeb0('0x25')]();};}function saveUpdates(_0x2fcf33,_0x33afb7){return function(_0x7019f4){if(_0x7019f4){return _0x7019f4['update'](_0x2fcf33)[_0xeeb0('0x26')](function(_0x38846e){return _0x38846e;});}return null;};}function removeEntity(_0x27efe8,_0x2d2ae5){return function(_0x25a6c0){if(_0x25a6c0){return _0x25a6c0[_0xeeb0('0x27')]()[_0xeeb0('0x26')](function(){var _0x24eb88=_0x25a6c0[_0xeeb0('0x28')]({'plain':!![]});var _0x16dc73=_0xeeb0('0x29');return db[_0xeeb0('0x2a')][_0xeeb0('0x27')]({'where':{'type':_0x16dc73,'resourceId':_0x24eb88['id']}})['then'](function(){return _0x25a6c0;});})[_0xeeb0('0x26')](function(){_0x27efe8[_0xeeb0('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa13ca2,_0x2efd21){return function(_0x3147db){if(!_0x3147db){_0xa13ca2['sendStatus'](0x194);}return _0x3147db;};}function handleError(_0x20691d,_0xee144b){_0xee144b=_0xee144b||0x1f4;return function(_0x3de6fc){logger[_0xeeb0('0x2b')](_0x3de6fc['stack']);if(_0x3de6fc['name']){delete _0x3de6fc[_0xeeb0('0x2c')];}_0x20691d[_0xeeb0('0x1b')](_0xee144b)[_0xeeb0('0x2d')](_0x3de6fc);};}exports['index']=function(_0x168298,_0x55b880){var _0x185b5c={},_0x50e71a={},_0x133bdd={'count':0x0,'rows':[]};var _0xbba654=_[_0xeeb0('0x2e')](db[_0xeeb0('0x2f')][_0xeeb0('0x30')],function(_0x170cee){return{'name':_0x170cee[_0xeeb0('0x31')],'type':_0x170cee['type'][_0xeeb0('0x32')]};});_0x50e71a['model']=_['map'](_0xbba654,_0xeeb0('0x2c'));_0x50e71a[_0xeeb0('0x33')]=_['keys'](_0x168298[_0xeeb0('0x33')]);_0x50e71a[_0xeeb0('0x34')]=_[_0xeeb0('0x35')](_0x50e71a['model'],_0x50e71a[_0xeeb0('0x33')]);_0x185b5c[_0xeeb0('0x36')]=_[_0xeeb0('0x35')](_0x50e71a[_0xeeb0('0x37')],qs[_0xeeb0('0x38')](_0x168298[_0xeeb0('0x33')][_0xeeb0('0x38')]));_0x185b5c[_0xeeb0('0x36')]=_0x185b5c[_0xeeb0('0x36')][_0xeeb0('0x39')]?_0x185b5c[_0xeeb0('0x36')]:_0x50e71a[_0xeeb0('0x37')];if(!_0x168298[_0xeeb0('0x33')][_0xeeb0('0x3a')](_0xeeb0('0x3b'))){_0x185b5c[_0xeeb0('0x20')]=qs[_0xeeb0('0x20')](_0x168298[_0xeeb0('0x33')][_0xeeb0('0x20')]);_0x185b5c[_0xeeb0('0x1e')]=qs['offset'](_0x168298['query'][_0xeeb0('0x1e')]);}_0x185b5c['order']=qs['sort'](_0x168298[_0xeeb0('0x33')][_0xeeb0('0x3c')]);_0x185b5c[_0xeeb0('0x3d')]=qs[_0xeeb0('0x34')](_[_0xeeb0('0x3e')](_0x168298['query'],_0x50e71a[_0xeeb0('0x34')]),_0xbba654);if(_0x168298[_0xeeb0('0x33')][_0xeeb0('0x3f')]){_0x185b5c[_0xeeb0('0x3d')]=_[_0xeeb0('0x40')](_0x185b5c['where'],{'$or':_[_0xeeb0('0x2e')](_0xbba654,function(_0x8b4ae5){if(_0x8b4ae5['type']!==_0xeeb0('0x41')){var _0x49f497={};_0x49f497[_0x8b4ae5[_0xeeb0('0x2c')]]={'$like':'%'+_0x168298[_0xeeb0('0x33')][_0xeeb0('0x3f')]+'%'};return _0x49f497;}})});}_0x185b5c=_[_0xeeb0('0x40')]({},_0x185b5c,_0x168298[_0xeeb0('0x42')]);var _0x18b716={'where':_0x185b5c[_0xeeb0('0x3d')]};return db[_0xeeb0('0x2f')][_0xeeb0('0x21')](_0x18b716)['then'](function(_0x1f95ab){_0x133bdd['count']=_0x1f95ab;if(_0x168298[_0xeeb0('0x33')]['includeAll']){_0x185b5c[_0xeeb0('0x43')]=[{'all':!![]}];}return db[_0xeeb0('0x2f')]['findAll'](_0x185b5c);})['then'](function(_0x57a630){_0x133bdd[_0xeeb0('0x44')]=_0x57a630;return _0x133bdd;})[_0xeeb0('0x26')](respondWithFilteredResult(_0x55b880,_0x185b5c))[_0xeeb0('0x45')](handleError(_0x55b880,null));};exports['show']=function(_0x3665e0,_0x543786){var _0x4dbd92={'raw':![],'where':{'id':_0x3665e0[_0xeeb0('0x46')]['id']}},_0x495608={};_0x495608['model']=_['keys'](db['CmList'][_0xeeb0('0x30')]);_0x495608[_0xeeb0('0x33')]=_['keys'](_0x3665e0[_0xeeb0('0x33')]);_0x495608[_0xeeb0('0x34')]=_[_0xeeb0('0x35')](_0x495608[_0xeeb0('0x37')],_0x495608[_0xeeb0('0x33')]);_0x4dbd92['attributes']=_[_0xeeb0('0x35')](_0x495608['model'],qs[_0xeeb0('0x38')](_0x3665e0[_0xeeb0('0x33')][_0xeeb0('0x38')]));_0x4dbd92[_0xeeb0('0x36')]=_0x4dbd92['attributes'][_0xeeb0('0x39')]?_0x4dbd92['attributes']:_0x495608[_0xeeb0('0x37')];if(_0x3665e0['query'][_0xeeb0('0x47')]){_0x4dbd92[_0xeeb0('0x43')]=[{'all':!![]}];}_0x4dbd92=_[_0xeeb0('0x40')]({},_0x4dbd92,_0x3665e0[_0xeeb0('0x42')]);return db[_0xeeb0('0x2f')][_0xeeb0('0x48')](_0x4dbd92)['then'](handleEntityNotFound(_0x543786,null))[_0xeeb0('0x26')](respondWithResult(_0x543786,null))[_0xeeb0('0x45')](handleError(_0x543786,null));};exports[_0xeeb0('0x49')]=function(_0x27fcc4,_0x271d46){return db[_0xeeb0('0x2f')]['create'](_0x27fcc4['body'],{})[_0xeeb0('0x26')](function(_0x29e73a){var _0x5d8dab=_0x27fcc4[_0xeeb0('0x4a')]['get']({'plain':!![]});if(!_0x5d8dab)throw new Error(_0xeeb0('0x4b'));if(_0x5d8dab['role']===_0xeeb0('0x4a')){var _0x32c040=_0x29e73a[_0xeeb0('0x28')]({'plain':!![]});var _0x1e65fa=_0xeeb0('0x29');return db['UserProfileSection'][_0xeeb0('0x48')]({'where':{'name':_0x1e65fa,'userProfileId':_0x5d8dab['userProfileId']},'raw':!![]})[_0xeeb0('0x26')](function(_0x16c36c){if(_0x16c36c&&_0x16c36c[_0xeeb0('0x4c')]===0x0){return db[_0xeeb0('0x2a')][_0xeeb0('0x49')]({'name':_0x32c040['name'],'resourceId':_0x32c040['id'],'type':_0x16c36c[_0xeeb0('0x2c')],'sectionId':_0x16c36c['id']},{})[_0xeeb0('0x26')](function(){return _0x29e73a;});}else{return _0x29e73a;}})['catch'](function(_0x1bde6d){logger['error'](_0xeeb0('0x4d'),_0x1bde6d);throw _0x1bde6d;});}return _0x29e73a;})['then'](respondWithResult(_0x271d46,0xc9))[_0xeeb0('0x45')](handleError(_0x271d46,null));};exports['update']=function(_0x4e8a2c,_0x515225){if(_0x4e8a2c['body']['id']){delete _0x4e8a2c['body']['id'];}return db['CmList'][_0xeeb0('0x48')]({'where':{'id':_0x4e8a2c['params']['id']}})[_0xeeb0('0x26')](handleEntityNotFound(_0x515225,null))[_0xeeb0('0x26')](saveUpdates(_0x4e8a2c[_0xeeb0('0x4e')],null))[_0xeeb0('0x26')](respondWithResult(_0x515225,null))['catch'](handleError(_0x515225,null));};exports[_0xeeb0('0x27')]=function(_0x541a2c,_0x466864){return db['CmList'][_0xeeb0('0x48')]({'where':{'id':_0x541a2c[_0xeeb0('0x46')]['id']}})['then'](handleEntityNotFound(_0x466864,null))['then'](removeEntity(_0x466864,null))[_0xeeb0('0x45')](handleError(_0x466864,null));};exports[_0xeeb0('0x4f')]=function(_0x21ce51,_0x30183c){return db[_0xeeb0('0x2f')][_0xeeb0('0x4f')]()[_0xeeb0('0x26')](respondWithResult(_0x30183c,null))[_0xeeb0('0x45')](handleError(_0x30183c,null));};exports['addDisposition']=function(_0x5873cd,_0x416c13,_0x56866f){if(_0x5873cd[_0xeeb0('0x4e')]['id']){delete _0x5873cd[_0xeeb0('0x4e')]['id'];}return db[_0xeeb0('0x2f')]['find']({'where':{'id':_0x5873cd[_0xeeb0('0x46')]['id']}})[_0xeeb0('0x26')](handleEntityNotFound(_0x416c13,null))['then'](function(_0x54dfe7){if(_0x54dfe7){_0x5873cd[_0xeeb0('0x4e')][_0xeeb0('0x50')]=_0x54dfe7['id'];return db[_0xeeb0('0x51')][_0xeeb0('0x49')](_0x5873cd[_0xeeb0('0x4e')]);}})[_0xeeb0('0x26')](respondWithResult(_0x416c13,null))[_0xeeb0('0x45')](handleError(_0x416c13,null));};exports['getDispositions']=function(_0x1b483c,_0xd35c80,_0x3ebb5f){var _0x4ee6cb={'raw':![],'where':{}};var _0x21ac02={};var _0x432df2={'count':0x0,'rows':[]};return db['CmList'][_0xeeb0('0x52')]({'where':{'id':_0x1b483c[_0xeeb0('0x46')]['id']}})['then'](handleEntityNotFound(_0xd35c80,null))['then'](function(_0x106daf){if(_0x106daf){_0x21ac02[_0xeeb0('0x37')]=_[_0xeeb0('0x53')](db[_0xeeb0('0x51')][_0xeeb0('0x30')]);_0x21ac02[_0xeeb0('0x33')]=_['keys'](_0x1b483c['query']);_0x21ac02[_0xeeb0('0x34')]=_[_0xeeb0('0x35')](_0x21ac02[_0xeeb0('0x37')],_0x21ac02['query']);_0x4ee6cb['attributes']=_['intersection'](_0x21ac02[_0xeeb0('0x37')],qs['fields'](_0x1b483c['query'][_0xeeb0('0x38')]));_0x4ee6cb[_0xeeb0('0x36')]=_0x4ee6cb[_0xeeb0('0x36')]['length']?_0x4ee6cb[_0xeeb0('0x36')]:_0x21ac02[_0xeeb0('0x37')];if(!_0x1b483c[_0xeeb0('0x33')][_0xeeb0('0x3a')](_0xeeb0('0x3b'))){_0x4ee6cb['limit']=qs['limit'](_0x1b483c['query']['limit']);_0x4ee6cb[_0xeeb0('0x1e')]=qs[_0xeeb0('0x1e')](_0x1b483c[_0xeeb0('0x33')][_0xeeb0('0x1e')]);}_0x4ee6cb['order']=qs[_0xeeb0('0x3c')](_0x1b483c[_0xeeb0('0x33')][_0xeeb0('0x3c')]);_0x4ee6cb[_0xeeb0('0x3d')]=qs['filters'](_[_0xeeb0('0x3e')](_0x1b483c['query'],_0x21ac02[_0xeeb0('0x34')]));_0x4ee6cb[_0xeeb0('0x3d')][_0xeeb0('0x50')]=_0x106daf['id'];if(_0x1b483c[_0xeeb0('0x33')][_0xeeb0('0x3f')]){_0x4ee6cb[_0xeeb0('0x3d')]=_[_0xeeb0('0x40')](_0x4ee6cb[_0xeeb0('0x3d')],{'$or':_['map'](_0x4ee6cb[_0xeeb0('0x36')],function(_0x96a275){var _0x125c1e={};_0x125c1e[_0x96a275]={'$like':'%'+_0x1b483c['query'][_0xeeb0('0x3f')]+'%'};return _0x125c1e;})});}_0x4ee6cb=_[_0xeeb0('0x40')]({},_0x4ee6cb,_0x1b483c[_0xeeb0('0x42')]);return db[_0xeeb0('0x51')][_0xeeb0('0x21')]({'where':_0x4ee6cb[_0xeeb0('0x3d')]})['then'](function(_0x5cbfc6){_0x432df2['count']=_0x5cbfc6;if(_0x1b483c[_0xeeb0('0x33')][_0xeeb0('0x47')]){_0x4ee6cb[_0xeeb0('0x43')]=[{'all':!![]}];}return db[_0xeeb0('0x51')][_0xeeb0('0x54')](_0x4ee6cb);})['then'](function(_0x59732e){_0x432df2[_0xeeb0('0x44')]=_0x59732e;return _0x432df2;});}})[_0xeeb0('0x26')](respondWithFilteredResult(_0xd35c80,_0x4ee6cb))[_0xeeb0('0x45')](handleError(_0xd35c80,null));};exports[_0xeeb0('0x55')]=function(_0x595a65,_0x5289c5,_0x48168d){return db[_0xeeb0('0x2f')]['find']({'where':{'id':_0x595a65[_0xeeb0('0x46')]['id']}})[_0xeeb0('0x26')](handleEntityNotFound(_0x5289c5,null))['then'](function(_0x145ede){if(_0x145ede){return _0x145ede['removeDispositions'](_0x595a65[_0xeeb0('0x33')]['ids']);}})[_0xeeb0('0x26')](respondWithStatusCode(_0x5289c5,null))[_0xeeb0('0x45')](handleError(_0x5289c5,null));};exports[_0xeeb0('0x56')]=function(_0x1ce262,_0x25ec3b,_0x7af969){return db['CmList'][_0xeeb0('0x48')]({'where':{'id':_0x1ce262[_0xeeb0('0x46')]['id']}})['then'](handleEntityNotFound(_0x25ec3b,null))[_0xeeb0('0x26')](function(_0x3bf190){if(_0x3bf190){var _0x4515ca=[];var _0x356433={'success':[],'errors':[]};return db['CmContact']['describe']()[_0xeeb0('0x26')](function(_0x449d6e){if(_0x1ce262[_0xeeb0('0x4e')]['tags']&&_[_0xeeb0('0x57')](_0x1ce262[_0xeeb0('0x4e')][_0xeeb0('0x58')])){if(_0x1ce262[_0xeeb0('0x4e')][_0xeeb0('0x58')]['length']){_0x1ce262[_0xeeb0('0x4e')][_0xeeb0('0x58')]=_0x1ce262[_0xeeb0('0x4e')]['tags']['join'](';')+';';}else{_0x1ce262[_0xeeb0('0x4e')]['tags']=null;}}else{_0x1ce262['body'][_0xeeb0('0x58')]=null;}if(_0x1ce262[_0xeeb0('0x4e')]&&_[_0xeeb0('0x57')](_0x1ce262[_0xeeb0('0x4e')])){for(var _0x5dd28c=0x0;_0x5dd28c<_0x1ce262[_0xeeb0('0x4e')]['length'];_0x5dd28c+=0x1){_0x1ce262['body'][_0x5dd28c][_0xeeb0('0x50')]=_0x1ce262[_0xeeb0('0x46')]['id'];_0x4515ca[_0xeeb0('0x59')](_0x1ce262[_0xeeb0('0x4e')][_0x5dd28c]);}return BPromise[_0xeeb0('0x5a')](_0x4515ca,function(_0x2fede7){return db[_0xeeb0('0x5b')]['create'](_[_0xeeb0('0x5c')](_0x2fede7,[_0xeeb0('0x5d'),'id'])||{},{'fields':_['keys'](_0x449d6e),'raw':!![]})[_0xeeb0('0x26')](function(_0x43b18e){_0x356433['success'][_0xeeb0('0x59')](_0x43b18e['dataValues']);})[_0xeeb0('0x45')](function(_0x55b8e0){_0x356433[_0xeeb0('0x5e')][_0xeeb0('0x59')]({'data':_0x2fede7,'error':_0x55b8e0[_0xeeb0('0x5f')]});});})[_0xeeb0('0x26')](function(_0x4a30bd){return _0x356433;})['catch'](function(_0x35b760){return _0x35b760;});}else{_0x25ec3b[_0xeeb0('0x1b')](0x190)[_0xeeb0('0x1d')]({'message':'Malformed\x20request\x20syntax'});}});}})[_0xeeb0('0x26')](respondWithResult(_0x25ec3b,null))['catch'](handleError(_0x25ec3b,null));};exports['getContacts']=function(_0xf8f2e0,_0x2ee877,_0x3a3caf){var _0x29ff7d;return db['CmList']['find']({'where':{'id':_0xf8f2e0[_0xeeb0('0x46')]['id']},'include':[{'model':db[_0xeeb0('0x60')],'as':_0xeeb0('0x61')}]})['then'](handleEntityNotFound(_0x2ee877,null))[_0xeeb0('0x26')](function(_0x8a6517){if(_0x8a6517){_0x29ff7d=_0x8a6517;return db[_0xeeb0('0x5b')][_0xeeb0('0x30')];}})[_0xeeb0('0x26')](function(_0x1eeb7e){if(_0x1eeb7e){var _0x4739e0={};var _0x2bb416={};_0x2bb416[_0xeeb0('0x37')]=_['concat'](_[_0xeeb0('0x53')](_0x1eeb7e),_[_0xeeb0('0x2e')](_0x29ff7d['CustomFields'],function(_0xfeca08){return util[_0xeeb0('0x62')](_0xeeb0('0x63'),_0xfeca08['id']);}));_0x2bb416[_0xeeb0('0x33')]=_['keys'](_0xf8f2e0[_0xeeb0('0x33')]);_0x2bb416[_0xeeb0('0x34')]=_['intersection'](_0x2bb416[_0xeeb0('0x37')],_0x2bb416[_0xeeb0('0x33')]);_0x4739e0[_0xeeb0('0x36')]=_[_0xeeb0('0x35')](_0x2bb416[_0xeeb0('0x37')],qs[_0xeeb0('0x38')](_0xf8f2e0[_0xeeb0('0x33')][_0xeeb0('0x38')]));_0x4739e0[_0xeeb0('0x36')]=_0x4739e0[_0xeeb0('0x36')][_0xeeb0('0x39')]?_0x4739e0[_0xeeb0('0x36')]:_0x2bb416[_0xeeb0('0x37')];if(!_0xf8f2e0[_0xeeb0('0x33')]['hasOwnProperty']('nolimit')){_0x4739e0[_0xeeb0('0x20')]=qs['limit'](_0xf8f2e0[_0xeeb0('0x33')][_0xeeb0('0x20')]);_0x4739e0['offset']=qs[_0xeeb0('0x1e')](_0xf8f2e0[_0xeeb0('0x33')][_0xeeb0('0x1e')]);}_0x4739e0[_0xeeb0('0x64')]=qs[_0xeeb0('0x3c')](_0xf8f2e0['query']['sort']);_0x4739e0[_0xeeb0('0x3d')]=qs[_0xeeb0('0x34')](_[_0xeeb0('0x3e')](_0xf8f2e0[_0xeeb0('0x33')],_0x2bb416['filters']));_0x4739e0[_0xeeb0('0x65')]=!![];if(_0xf8f2e0[_0xeeb0('0x33')][_0xeeb0('0x3f')]){_0x4739e0[_0xeeb0('0x3d')]=_[_0xeeb0('0x40')](_0x4739e0[_0xeeb0('0x3d')],{'$or':_['map'](_0x4739e0[_0xeeb0('0x36')],function(_0x58720a){var _0x11bdab={};_0x11bdab[_0x58720a]={'$like':'%'+_0xf8f2e0[_0xeeb0('0x33')]['filter']+'%'};return _0x11bdab;})});}_0x4739e0=_['merge']({},_0x4739e0,_0xf8f2e0[_0xeeb0('0x42')]);return _0x29ff7d['getContacts'](_0x4739e0);}})[_0xeeb0('0x26')](respondWithResult(_0x2ee877,null))[_0xeeb0('0x45')](handleError(_0x2ee877,null));};exports[_0xeeb0('0x66')]=function(_0x2c522e,_0x5e4c7a,_0xef1c9){var _0x2f0a91;return db['CmList'][_0xeeb0('0x48')]({'where':{'id':_0x2c522e['params']['id']},'include':[{'model':db[_0xeeb0('0x60')],'as':'CustomFields'}]})['then'](handleEntityNotFound(_0x5e4c7a,null))[_0xeeb0('0x26')](function(_0x154d57){if(_0x154d57){_0x2f0a91=_0x154d57;return db[_0xeeb0('0x5b')]['rawAttributes'];}})[_0xeeb0('0x26')](function(_0x37ca50){if(_0x37ca50){var _0x33470c={};var _0x143b0b={};_0x143b0b[_0xeeb0('0x37')]=_['concat'](_['keys'](_0x37ca50),_[_0xeeb0('0x2e')](_0x2f0a91[_0xeeb0('0x61')],function(_0x4a245d){return util[_0xeeb0('0x62')](_0xeeb0('0x63'),_0x4a245d['id']);}));_0x143b0b[_0xeeb0('0x33')]=_[_0xeeb0('0x53')](_0x2c522e[_0xeeb0('0x33')]);_0x143b0b[_0xeeb0('0x34')]=_[_0xeeb0('0x35')](_0x143b0b['model'],_0x143b0b[_0xeeb0('0x33')]);_0x33470c[_0xeeb0('0x36')]=_[_0xeeb0('0x35')](_0x143b0b[_0xeeb0('0x37')],qs[_0xeeb0('0x38')](_0x2c522e[_0xeeb0('0x33')]['fields']));_0x33470c[_0xeeb0('0x36')]=_0x33470c[_0xeeb0('0x36')]['length']?_0x33470c[_0xeeb0('0x36')]:_0x143b0b['model'];if(!_0x2c522e['query'][_0xeeb0('0x3a')]('nolimit')){_0x33470c[_0xeeb0('0x20')]=qs[_0xeeb0('0x20')](_0x2c522e[_0xeeb0('0x33')][_0xeeb0('0x20')]);_0x33470c[_0xeeb0('0x1e')]=qs[_0xeeb0('0x1e')](_0x2c522e[_0xeeb0('0x33')]['offset']);}_0x33470c[_0xeeb0('0x64')]=qs[_0xeeb0('0x3c')](_0x2c522e[_0xeeb0('0x33')]['sort']);_0x33470c[_0xeeb0('0x3d')]=qs[_0xeeb0('0x34')](_[_0xeeb0('0x3e')](_0x2c522e[_0xeeb0('0x33')],_0x143b0b[_0xeeb0('0x34')]));_0x33470c[_0xeeb0('0x65')]=!![];if(_0x2c522e[_0xeeb0('0x33')][_0xeeb0('0x3f')]){_0x33470c['where']=_['merge'](_0x33470c[_0xeeb0('0x3d')],{'$or':_[_0xeeb0('0x2e')](_0x33470c[_0xeeb0('0x36')],function(_0xb2daa2){var _0xf61fc={};_0xf61fc[_0xb2daa2]={'$like':'%'+_0x2c522e[_0xeeb0('0x33')]['filter']+'%'};return _0xf61fc;})});}_0x33470c=_[_0xeeb0('0x40')]({},_0x33470c,_0x2c522e[_0xeeb0('0x42')]);return _0x2f0a91['getContacts'](_0x33470c);}})['then'](function(_0xd69446){if(!_['isEmpty'](_0xd69446)){var _0x26255e=toCsv(_0xd69446);var _0x142fe7=Date['now']();fs[_0xeeb0('0x67')](util[_0xeeb0('0x62')](_0xeeb0('0x68'),_0x2f0a91['id'],_0x142fe7),_0x26255e);_0x5e4c7a[_0xeeb0('0x69')](_0xeeb0('0x6a'),_0xeeb0('0x6b')+util[_0xeeb0('0x62')](_0xeeb0('0x6c'),_0x2f0a91['id'],_0x142fe7));_0x5e4c7a['setHeader']('Content-type','text/csv');return _0x5e4c7a[_0xeeb0('0x6d')](util[_0xeeb0('0x62')]('/tmp/list_%d_%s.csv',_0x2f0a91['id'],_0x142fe7));}else{return _0x5e4c7a[_0xeeb0('0x6e')](0xcc);}})[_0xeeb0('0x45')](handleError(_0x5e4c7a,null));};exports[_0xeeb0('0x6f')]=function(_0x5533df,_0x36543f,_0x4c9f3b){var _0x645d5d;delete _0x5533df[_0xeeb0('0x4e')]['id'];return db[_0xeeb0('0x2f')][_0xeeb0('0x52')]({'where':{'id':_0x5533df[_0xeeb0('0x46')]['id']}})['then'](handleEntityNotFound(_0x36543f,null))['then'](function(_0x44be23){if(_0x44be23){return db[_0xeeb0('0x70')][_0xeeb0('0x71')](function(_0x2ab1b3){return db['CmCustomField']['create'](_0x5533df[_0xeeb0('0x4e')],{'transaction':_0x2ab1b3})[_0xeeb0('0x26')](function(_0xae5519){_0x645d5d=_0xae5519;return _0x44be23[_0xeeb0('0x72')](_0xae5519,{'transaction':_0x2ab1b3});})[_0xeeb0('0x26')](function(){var _0x106ee9={'type':db[_0xeeb0('0x73')][_0xeeb0('0x74')],'transaction':_0x2ab1b3};switch(_0x5533df[_0xeeb0('0x4e')][_0xeeb0('0x75')]){case _0xeeb0('0x76'):_0x106ee9[_0xeeb0('0x75')]=db[_0xeeb0('0x73')]['TEXT'];break;case _0xeeb0('0x77'):_0x106ee9[_0xeeb0('0x75')]=db[_0xeeb0('0x73')][_0xeeb0('0x78')];break;case _0xeeb0('0x79'):_0x106ee9[_0xeeb0('0x75')]=db[_0xeeb0('0x73')][_0xeeb0('0x7a')];_0x106ee9[_0xeeb0('0x7b')]=![];break;default:}return db[_0xeeb0('0x70')][_0xeeb0('0x7c')][_0xeeb0('0x7d')]('cm_contacts',util[_0xeeb0('0x62')](_0xeeb0('0x7e'),_0x645d5d['id']),_0x106ee9);})[_0xeeb0('0x26')](function(){return _0x645d5d;});});}})['then'](respondWithResult(_0x36543f,null))[_0xeeb0('0x45')](handleError(_0x36543f,null));};exports[_0xeeb0('0x7f')]=function(_0x487db6,_0x9eaae5,_0x30b50d){var _0x3dec24={};var _0x4964ae={};var _0x1be2dd;var _0x3ba9d8;return db[_0xeeb0('0x2f')][_0xeeb0('0x52')]({'where':{'id':_0x487db6['params']['id']}})[_0xeeb0('0x26')](handleEntityNotFound(_0x9eaae5,null))[_0xeeb0('0x26')](function(_0x423df2){if(_0x423df2){_0x1be2dd=_0x423df2;_0x4964ae[_0xeeb0('0x37')]=_[_0xeeb0('0x53')](db[_0xeeb0('0x60')][_0xeeb0('0x30')]);_0x4964ae['query']=_[_0xeeb0('0x53')](_0x487db6[_0xeeb0('0x33')]);_0x4964ae[_0xeeb0('0x34')]=_[_0xeeb0('0x35')](_0x4964ae[_0xeeb0('0x37')],_0x4964ae['query']);_0x3dec24[_0xeeb0('0x36')]=_[_0xeeb0('0x35')](_0x4964ae[_0xeeb0('0x37')],qs['fields'](_0x487db6[_0xeeb0('0x33')][_0xeeb0('0x38')]));_0x3dec24['attributes']=_0x3dec24[_0xeeb0('0x36')][_0xeeb0('0x39')]?_0x3dec24[_0xeeb0('0x36')]:_0x4964ae[_0xeeb0('0x37')];_0x3dec24['order']=qs[_0xeeb0('0x3c')](_0x487db6[_0xeeb0('0x33')][_0xeeb0('0x3c')]);_0x3dec24['where']=qs[_0xeeb0('0x34')](_[_0xeeb0('0x3e')](_0x487db6[_0xeeb0('0x33')],_0x4964ae[_0xeeb0('0x34')]));_0x3dec24[_0xeeb0('0x3d')]=_[_0xeeb0('0x40')](_0x3dec24[_0xeeb0('0x3d')],{'$or':[{'ListId':_0x423df2['id']},{'ListId':null}]});if(_0x487db6['query'][_0xeeb0('0x3f')]){_0x3dec24['where']=_[_0xeeb0('0x40')](_0x3dec24[_0xeeb0('0x3d')],{'$or':_[_0xeeb0('0x2e')](_0x3dec24['attributes'],function(_0x4509fd){var _0x15ab77={};_0x15ab77[_0x4509fd]={'$like':'%'+_0x487db6['query'][_0xeeb0('0x3f')]+'%'};return _0x15ab77;})});}_0x3dec24=_[_0xeeb0('0x40')]({},_0x3dec24,_0x487db6[_0xeeb0('0x42')]);return db[_0xeeb0('0x60')][_0xeeb0('0x80')](_0x3dec24);}})[_0xeeb0('0x26')](respondWithResult(_0x9eaae5,null))[_0xeeb0('0x45')](handleError(_0x9eaae5,null));};exports[_0xeeb0('0x81')]=function(_0x50163a,_0x37f48d,_0x2880b4){return db['CmList'][_0xeeb0('0x48')]({'where':{'id':_0x50163a[_0xeeb0('0x46')]['id']}})[_0xeeb0('0x26')](handleEntityNotFound(_0x37f48d,null))['then'](function(_0x28c483){if(_0x28c483){return _0x28c483[_0xeeb0('0x81')](_0x50163a[_0xeeb0('0x4e')][_0xeeb0('0x5d')],_[_0xeeb0('0x5c')](_0x50163a['body'],[_0xeeb0('0x5d'),'id'])||{})[_0xeeb0('0x82')](function(_0x30ad7a){for(var _0x23e940=0x0;_0x23e940<_0x50163a[_0xeeb0('0x4e')][_0xeeb0('0x5d')][_0xeeb0('0x39')];_0x23e940+=0x1){socket[_0xeeb0('0x83')]('userCmList:save',{'UserId':Number(_0x50163a[_0xeeb0('0x4e')]['ids'][_0x23e940]),'CmListId':Number(_0x50163a[_0xeeb0('0x46')]['id'])});}return _0x30ad7a;});}})[_0xeeb0('0x26')](respondWithResult(_0x37f48d,null))[_0xeeb0('0x45')](handleError(_0x37f48d,null));};exports['removeAgents']=function(_0x348877,_0x379386,_0x49fc57){return db[_0xeeb0('0x2f')][_0xeeb0('0x48')]({'where':{'id':_0x348877[_0xeeb0('0x46')]['id']}})[_0xeeb0('0x26')](handleEntityNotFound(_0x379386,null))[_0xeeb0('0x26')](function(_0x4891e8){if(_0x4891e8){return _0x4891e8['removeAgents'](_0x348877['query']['ids'])['then'](function(){if(_[_0xeeb0('0x57')](_0x348877[_0xeeb0('0x33')][_0xeeb0('0x5d')])){for(var _0x228d64=0x0;_0x228d64<_0x348877[_0xeeb0('0x33')][_0xeeb0('0x5d')][_0xeeb0('0x39')];_0x228d64+=0x1){socket[_0xeeb0('0x83')]('userCmList:remove',{'UserId':Number(_0x348877[_0xeeb0('0x33')][_0xeeb0('0x5d')][_0x228d64]),'CmListId':Number(_0x348877['params']['id'])});}}else{socket['emit'](_0xeeb0('0x84'),{'UserId':Number(_0x348877[_0xeeb0('0x33')][_0xeeb0('0x5d')]),'CmListId':Number(_0x348877['params']['id'])});}});}})[_0xeeb0('0x26')](respondWithStatusCode(_0x379386,null))[_0xeeb0('0x45')](handleError(_0x379386,null));};exports[_0xeeb0('0x85')]=function(_0x509e51,_0x45885d,_0xab17e){var _0x25e556={};var _0x32f5ca={};var _0x461a65;var _0x3220fc;return db[_0xeeb0('0x2f')][_0xeeb0('0x52')]({'where':{'id':_0x509e51['params']['id']}})[_0xeeb0('0x26')](handleEntityNotFound(_0x45885d,null))[_0xeeb0('0x26')](function(_0x1bd8d1){if(_0x1bd8d1){_0x461a65=_0x1bd8d1;_0x32f5ca[_0xeeb0('0x37')]=_['keys'](db[_0xeeb0('0x86')][_0xeeb0('0x30')]);_0x32f5ca['query']=_[_0xeeb0('0x53')](_0x509e51[_0xeeb0('0x33')]);_0x32f5ca[_0xeeb0('0x34')]=_[_0xeeb0('0x35')](_0x32f5ca[_0xeeb0('0x37')],_0x32f5ca['query']);_0x25e556[_0xeeb0('0x36')]=_[_0xeeb0('0x35')](_0x32f5ca[_0xeeb0('0x37')],qs[_0xeeb0('0x38')](_0x509e51[_0xeeb0('0x33')][_0xeeb0('0x38')]));_0x25e556[_0xeeb0('0x36')]=_0x25e556[_0xeeb0('0x36')][_0xeeb0('0x39')]?_0x25e556['attributes']:_0x32f5ca[_0xeeb0('0x37')];_0x25e556[_0xeeb0('0x64')]=qs[_0xeeb0('0x3c')](_0x509e51[_0xeeb0('0x33')]['sort']);_0x25e556[_0xeeb0('0x3d')]=qs[_0xeeb0('0x34')](_['pick'](_0x509e51[_0xeeb0('0x33')],_0x32f5ca[_0xeeb0('0x34')]));if(_0x509e51[_0xeeb0('0x33')]['filter']){_0x25e556[_0xeeb0('0x3d')]=_[_0xeeb0('0x40')](_0x25e556[_0xeeb0('0x3d')],{'$or':_[_0xeeb0('0x2e')](_0x25e556['attributes'],function(_0x53c18d){var _0x30d2e2={};_0x30d2e2[_0x53c18d]={'$like':'%'+_0x509e51[_0xeeb0('0x33')]['filter']+'%'};return _0x30d2e2;})});}_0x25e556=_[_0xeeb0('0x40')]({},_0x25e556,_0x509e51[_0xeeb0('0x42')]);return _0x461a65['getAgents'](_0x25e556);}})[_0xeeb0('0x26')](function(_0x5b0ab9){if(_0x5b0ab9){_0x3220fc=_0x5b0ab9[_0xeeb0('0x39')];if(!_0x509e51[_0xeeb0('0x33')]['hasOwnProperty'](_0xeeb0('0x3b'))){_0x25e556[_0xeeb0('0x20')]=qs[_0xeeb0('0x20')](_0x509e51[_0xeeb0('0x33')][_0xeeb0('0x20')]);_0x25e556[_0xeeb0('0x1e')]=qs['offset'](_0x509e51['query'][_0xeeb0('0x1e')]);}return _0x461a65[_0xeeb0('0x85')](_0x25e556);}})['then'](function(_0x125963){if(_0x125963){return _0x125963?{'count':_0x3220fc,'rows':_0x125963}:null;}})[_0xeeb0('0x26')](respondWithResult(_0x45885d,null))['catch'](handleError(_0x45885d,null));};
\ No newline at end of file
+var _0x9d1e=['removeAgents','userCmList:remove','getAgents','User','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','get','Lists','UserProfileResource','error','stack','name','send','map','CmList','rawAttributes','fieldName','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','type','includeAll','findAll','rows','catch','show','params','intersection','include','options','find','create','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','Disposition','getDispositions','findOne','hasOwnProperty','ListId','removeDispositions','ids','CmContact','tags','isArray','push','each','omit','success','dataValues','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','raw','getContactsCsv','cf_%d','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','emit'];(function(_0x4a4c35,_0x1b3ee5){var _0xb0b7a2=function(_0x487842){while(--_0x487842){_0x4a4c35['push'](_0x4a4c35['shift']());}};_0xb0b7a2(++_0x1b3ee5);}(_0x9d1e,0x120));var _0xe9d1=function(_0x3ab34f,_0x31610d){_0x3ab34f=_0x3ab34f-0x0;var _0x163efb=_0x9d1e[_0x3ab34f];return _0x163efb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9d1('0x0'));var zipdir=require(_0xe9d1('0x1'));var jsonpatch=require(_0xe9d1('0x2'));var rp=require(_0xe9d1('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe9d1('0x4'));var util=require(_0xe9d1('0x5'));var path=require(_0xe9d1('0x6'));var sox=require(_0xe9d1('0x7'));var csv=require(_0xe9d1('0x8'));var ejs=require(_0xe9d1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe9d1('0xa'));var squel=require(_0xe9d1('0xb'));var crypto=require(_0xe9d1('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe9d1('0xd'));var toCsv=require(_0xe9d1('0x8'));var querystring=require(_0xe9d1('0xe'));var Papa=require(_0xe9d1('0xf'));var Redis=require(_0xe9d1('0x10'));var authService=require(_0xe9d1('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe9d1('0x12'))('api');var utils=require(_0xe9d1('0x13'));var config=require(_0xe9d1('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xe9d1('0x15'))['db'];config['redis']=_['defaults'](config[_0xe9d1('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xe9d1('0x17'))(new Redis(config[_0xe9d1('0x16')]));require(_0xe9d1('0x18'))[_0xe9d1('0x19')](socket);function respondWithStatusCode(_0x21e0d4,_0x2ed91d){_0x2ed91d=_0x2ed91d||0xcc;return function(_0x5e7eea){if(_0x5e7eea){return _0x21e0d4[_0xe9d1('0x1a')](_0x2ed91d);}return _0x21e0d4[_0xe9d1('0x1b')](_0x2ed91d)[_0xe9d1('0x1c')]();};}function respondWithResult(_0x4f4d60,_0x2adb0e){_0x2adb0e=_0x2adb0e||0xc8;return function(_0x5a1158){if(_0x5a1158){return _0x4f4d60[_0xe9d1('0x1b')](_0x2adb0e)[_0xe9d1('0x1d')](_0x5a1158);}};}function respondWithFilteredResult(_0x216809,_0x5d65e3){return function(_0x564175){if(_0x564175){var _0x4de2d4=typeof _0x5d65e3['offset']===_0xe9d1('0x1e')&&typeof _0x5d65e3[_0xe9d1('0x1f')]===_0xe9d1('0x1e');var _0x5cf335=_0x564175[_0xe9d1('0x20')];var _0xcaadf4=_0x4de2d4?0x0:_0x5d65e3['offset'];var _0x276fbd=_0x4de2d4?_0x564175[_0xe9d1('0x20')]:_0x5d65e3[_0xe9d1('0x21')]+_0x5d65e3[_0xe9d1('0x1f')];var _0x57d769;if(_0x276fbd>=_0x5cf335){_0x276fbd=_0x5cf335;_0x57d769=0xc8;}else{_0x57d769=0xce;}_0x216809[_0xe9d1('0x1b')](_0x57d769);return _0x216809[_0xe9d1('0x22')]('Content-Range',_0xcaadf4+'-'+_0x276fbd+'/'+_0x5cf335)[_0xe9d1('0x1d')](_0x564175);}return null;};}function patchUpdates(_0x51d630){return function(_0x77cca1){try{jsonpatch[_0xe9d1('0x23')](_0x77cca1,_0x51d630,!![]);}catch(_0x303cff){return BPromise[_0xe9d1('0x24')](_0x303cff);}return _0x77cca1[_0xe9d1('0x25')]();};}function saveUpdates(_0x45271e,_0x7fd59d){return function(_0x2357ac){if(_0x2357ac){return _0x2357ac['update'](_0x45271e)[_0xe9d1('0x26')](function(_0x1dd3f9){return _0x1dd3f9;});}return null;};}function removeEntity(_0x55d270,_0x4cf562){return function(_0x4eddd5){if(_0x4eddd5){return _0x4eddd5[_0xe9d1('0x27')]()[_0xe9d1('0x26')](function(){var _0x42f29e=_0x4eddd5[_0xe9d1('0x28')]({'plain':!![]});var _0x220a48=_0xe9d1('0x29');return db[_0xe9d1('0x2a')][_0xe9d1('0x27')]({'where':{'type':_0x220a48,'resourceId':_0x42f29e['id']}})[_0xe9d1('0x26')](function(){return _0x4eddd5;});})[_0xe9d1('0x26')](function(){_0x55d270[_0xe9d1('0x1b')](0xcc)[_0xe9d1('0x1c')]();});}};}function handleEntityNotFound(_0x41634f,_0x2e67dd){return function(_0x4ff897){if(!_0x4ff897){_0x41634f[_0xe9d1('0x1a')](0x194);}return _0x4ff897;};}function handleError(_0x1f169a,_0x40cbd8){_0x40cbd8=_0x40cbd8||0x1f4;return function(_0x1f7c97){logger[_0xe9d1('0x2b')](_0x1f7c97[_0xe9d1('0x2c')]);if(_0x1f7c97['name']){delete _0x1f7c97[_0xe9d1('0x2d')];}_0x1f169a['status'](_0x40cbd8)[_0xe9d1('0x2e')](_0x1f7c97);};}exports['index']=function(_0x2e4e74,_0x14347a){var _0x333fa4={},_0x576ac3={},_0x5cf9f3={'count':0x0,'rows':[]};var _0x672eb6=_[_0xe9d1('0x2f')](db[_0xe9d1('0x30')][_0xe9d1('0x31')],function(_0x4983fe){return{'name':_0x4983fe[_0xe9d1('0x32')],'type':_0x4983fe['type']['key']};});_0x576ac3[_0xe9d1('0x33')]=_[_0xe9d1('0x2f')](_0x672eb6,_0xe9d1('0x2d'));_0x576ac3[_0xe9d1('0x34')]=_[_0xe9d1('0x35')](_0x2e4e74[_0xe9d1('0x34')]);_0x576ac3[_0xe9d1('0x36')]=_['intersection'](_0x576ac3[_0xe9d1('0x33')],_0x576ac3[_0xe9d1('0x34')]);_0x333fa4[_0xe9d1('0x37')]=_['intersection'](_0x576ac3[_0xe9d1('0x33')],qs[_0xe9d1('0x38')](_0x2e4e74[_0xe9d1('0x34')]['fields']));_0x333fa4[_0xe9d1('0x37')]=_0x333fa4[_0xe9d1('0x37')][_0xe9d1('0x39')]?_0x333fa4[_0xe9d1('0x37')]:_0x576ac3[_0xe9d1('0x33')];if(!_0x2e4e74[_0xe9d1('0x34')]['hasOwnProperty'](_0xe9d1('0x3a'))){_0x333fa4['limit']=qs[_0xe9d1('0x1f')](_0x2e4e74[_0xe9d1('0x34')][_0xe9d1('0x1f')]);_0x333fa4[_0xe9d1('0x21')]=qs['offset'](_0x2e4e74[_0xe9d1('0x34')][_0xe9d1('0x21')]);}_0x333fa4[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x2e4e74[_0xe9d1('0x34')]['sort']);_0x333fa4['where']=qs[_0xe9d1('0x36')](_[_0xe9d1('0x3d')](_0x2e4e74[_0xe9d1('0x34')],_0x576ac3['filters']),_0x672eb6);if(_0x2e4e74['query'][_0xe9d1('0x3e')]){_0x333fa4['where']=_[_0xe9d1('0x3f')](_0x333fa4[_0xe9d1('0x40')],{'$or':_[_0xe9d1('0x2f')](_0x672eb6,function(_0x30f4e5){if(_0x30f4e5[_0xe9d1('0x41')]!=='VIRTUAL'){var _0x1feb2d={};_0x1feb2d[_0x30f4e5[_0xe9d1('0x2d')]]={'$like':'%'+_0x2e4e74[_0xe9d1('0x34')][_0xe9d1('0x3e')]+'%'};return _0x1feb2d;}})});}_0x333fa4=_[_0xe9d1('0x3f')]({},_0x333fa4,_0x2e4e74['options']);var _0x57fdd8={'where':_0x333fa4[_0xe9d1('0x40')]};return db[_0xe9d1('0x30')][_0xe9d1('0x20')](_0x57fdd8)[_0xe9d1('0x26')](function(_0x89c1a0){_0x5cf9f3[_0xe9d1('0x20')]=_0x89c1a0;if(_0x2e4e74[_0xe9d1('0x34')][_0xe9d1('0x42')]){_0x333fa4['include']=[{'all':!![]}];}return db['CmList'][_0xe9d1('0x43')](_0x333fa4);})['then'](function(_0x37acbc){_0x5cf9f3[_0xe9d1('0x44')]=_0x37acbc;return _0x5cf9f3;})[_0xe9d1('0x26')](respondWithFilteredResult(_0x14347a,_0x333fa4))[_0xe9d1('0x45')](handleError(_0x14347a,null));};exports[_0xe9d1('0x46')]=function(_0x43834b,_0x1246d0){var _0x369ffd={'raw':![],'where':{'id':_0x43834b[_0xe9d1('0x47')]['id']}},_0x440571={};_0x440571[_0xe9d1('0x33')]=_[_0xe9d1('0x35')](db[_0xe9d1('0x30')]['rawAttributes']);_0x440571[_0xe9d1('0x34')]=_[_0xe9d1('0x35')](_0x43834b['query']);_0x440571[_0xe9d1('0x36')]=_[_0xe9d1('0x48')](_0x440571[_0xe9d1('0x33')],_0x440571[_0xe9d1('0x34')]);_0x369ffd[_0xe9d1('0x37')]=_['intersection'](_0x440571[_0xe9d1('0x33')],qs[_0xe9d1('0x38')](_0x43834b[_0xe9d1('0x34')][_0xe9d1('0x38')]));_0x369ffd[_0xe9d1('0x37')]=_0x369ffd['attributes'][_0xe9d1('0x39')]?_0x369ffd[_0xe9d1('0x37')]:_0x440571[_0xe9d1('0x33')];if(_0x43834b['query'][_0xe9d1('0x42')]){_0x369ffd[_0xe9d1('0x49')]=[{'all':!![]}];}_0x369ffd=_['merge']({},_0x369ffd,_0x43834b[_0xe9d1('0x4a')]);return db[_0xe9d1('0x30')][_0xe9d1('0x4b')](_0x369ffd)['then'](handleEntityNotFound(_0x1246d0,null))['then'](respondWithResult(_0x1246d0,null))[_0xe9d1('0x45')](handleError(_0x1246d0,null));};exports[_0xe9d1('0x4c')]=function(_0x5cf1f6,_0x3d452f){return db['CmList']['create'](_0x5cf1f6['body'],{})[_0xe9d1('0x26')](function(_0x567b38){var _0xa51614=_0x5cf1f6[_0xe9d1('0x4d')][_0xe9d1('0x28')]({'plain':!![]});if(!_0xa51614)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xa51614['role']==='user'){var _0x5d2b7f=_0x567b38[_0xe9d1('0x28')]({'plain':!![]});var _0x333d1e='Lists';return db[_0xe9d1('0x4e')]['find']({'where':{'name':_0x333d1e,'userProfileId':_0xa51614[_0xe9d1('0x4f')]},'raw':!![]})['then'](function(_0x4daef4){if(_0x4daef4&&_0x4daef4['autoAssociation']===0x0){return db['UserProfileResource'][_0xe9d1('0x4c')]({'name':_0x5d2b7f[_0xe9d1('0x2d')],'resourceId':_0x5d2b7f['id'],'type':_0x4daef4[_0xe9d1('0x2d')],'sectionId':_0x4daef4['id']},{})[_0xe9d1('0x26')](function(){return _0x567b38;});}else{return _0x567b38;}})['catch'](function(_0x5b377e){logger[_0xe9d1('0x2b')](_0xe9d1('0x50'),_0x5b377e);throw _0x5b377e;});}return _0x567b38;})[_0xe9d1('0x26')](respondWithResult(_0x3d452f,0xc9))[_0xe9d1('0x45')](handleError(_0x3d452f,null));};exports['update']=function(_0x182e62,_0x4a1165){if(_0x182e62[_0xe9d1('0x51')]['id']){delete _0x182e62[_0xe9d1('0x51')]['id'];}return db[_0xe9d1('0x30')]['find']({'where':{'id':_0x182e62[_0xe9d1('0x47')]['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x4a1165,null))[_0xe9d1('0x26')](saveUpdates(_0x182e62[_0xe9d1('0x51')],null))[_0xe9d1('0x26')](respondWithResult(_0x4a1165,null))['catch'](handleError(_0x4a1165,null));};exports['destroy']=function(_0x4dee34,_0x4504b1){return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x4dee34[_0xe9d1('0x47')]['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x4504b1,null))[_0xe9d1('0x26')](removeEntity(_0x4504b1,null))[_0xe9d1('0x45')](handleError(_0x4504b1,null));};exports['describe']=function(_0x3a8500,_0x5ddcbe){return db['CmList'][_0xe9d1('0x52')]()[_0xe9d1('0x26')](respondWithResult(_0x5ddcbe,null))['catch'](handleError(_0x5ddcbe,null));};exports[_0xe9d1('0x53')]=function(_0x2ca305,_0x101910,_0x4bba4d){if(_0x2ca305[_0xe9d1('0x51')]['id']){delete _0x2ca305['body']['id'];}return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x2ca305['params']['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x101910,null))[_0xe9d1('0x26')](function(_0x14774a){if(_0x14774a){_0x2ca305[_0xe9d1('0x51')]['ListId']=_0x14774a['id'];return db[_0xe9d1('0x54')][_0xe9d1('0x4c')](_0x2ca305[_0xe9d1('0x51')]);}})[_0xe9d1('0x26')](respondWithResult(_0x101910,null))[_0xe9d1('0x45')](handleError(_0x101910,null));};exports[_0xe9d1('0x55')]=function(_0x13516e,_0x42281f,_0x3cc99e){var _0x473d49={'raw':![],'where':{}};var _0x26483c={};var _0x427504={'count':0x0,'rows':[]};return db['CmList'][_0xe9d1('0x56')]({'where':{'id':_0x13516e[_0xe9d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x42281f,null))[_0xe9d1('0x26')](function(_0x2ee302){if(_0x2ee302){_0x26483c['model']=_[_0xe9d1('0x35')](db[_0xe9d1('0x54')][_0xe9d1('0x31')]);_0x26483c[_0xe9d1('0x34')]=_[_0xe9d1('0x35')](_0x13516e['query']);_0x26483c['filters']=_[_0xe9d1('0x48')](_0x26483c[_0xe9d1('0x33')],_0x26483c[_0xe9d1('0x34')]);_0x473d49['attributes']=_[_0xe9d1('0x48')](_0x26483c[_0xe9d1('0x33')],qs[_0xe9d1('0x38')](_0x13516e[_0xe9d1('0x34')][_0xe9d1('0x38')]));_0x473d49[_0xe9d1('0x37')]=_0x473d49[_0xe9d1('0x37')][_0xe9d1('0x39')]?_0x473d49['attributes']:_0x26483c[_0xe9d1('0x33')];if(!_0x13516e[_0xe9d1('0x34')][_0xe9d1('0x57')](_0xe9d1('0x3a'))){_0x473d49[_0xe9d1('0x1f')]=qs[_0xe9d1('0x1f')](_0x13516e[_0xe9d1('0x34')][_0xe9d1('0x1f')]);_0x473d49['offset']=qs[_0xe9d1('0x21')](_0x13516e['query'][_0xe9d1('0x21')]);}_0x473d49[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x13516e[_0xe9d1('0x34')]['sort']);_0x473d49[_0xe9d1('0x40')]=qs['filters'](_[_0xe9d1('0x3d')](_0x13516e[_0xe9d1('0x34')],_0x26483c[_0xe9d1('0x36')]));_0x473d49['where'][_0xe9d1('0x58')]=_0x2ee302['id'];if(_0x13516e[_0xe9d1('0x34')][_0xe9d1('0x3e')]){_0x473d49[_0xe9d1('0x40')]=_[_0xe9d1('0x3f')](_0x473d49[_0xe9d1('0x40')],{'$or':_[_0xe9d1('0x2f')](_0x473d49['attributes'],function(_0x27b54e){var _0x15f36b={};_0x15f36b[_0x27b54e]={'$like':'%'+_0x13516e[_0xe9d1('0x34')]['filter']+'%'};return _0x15f36b;})});}_0x473d49=_[_0xe9d1('0x3f')]({},_0x473d49,_0x13516e[_0xe9d1('0x4a')]);return db[_0xe9d1('0x54')][_0xe9d1('0x20')]({'where':_0x473d49[_0xe9d1('0x40')]})[_0xe9d1('0x26')](function(_0x158421){_0x427504['count']=_0x158421;if(_0x13516e[_0xe9d1('0x34')][_0xe9d1('0x42')]){_0x473d49[_0xe9d1('0x49')]=[{'all':!![]}];}return db[_0xe9d1('0x54')]['findAll'](_0x473d49);})[_0xe9d1('0x26')](function(_0x3a2ea9){_0x427504[_0xe9d1('0x44')]=_0x3a2ea9;return _0x427504;});}})[_0xe9d1('0x26')](respondWithFilteredResult(_0x42281f,_0x473d49))[_0xe9d1('0x45')](handleError(_0x42281f,null));};exports[_0xe9d1('0x59')]=function(_0x5c234c,_0x46d405,_0x5f5dc4){return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x5c234c[_0xe9d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x46d405,null))[_0xe9d1('0x26')](function(_0x117e28){if(_0x117e28){return _0x117e28[_0xe9d1('0x59')](_0x5c234c['query'][_0xe9d1('0x5a')]);}})[_0xe9d1('0x26')](respondWithStatusCode(_0x46d405,null))[_0xe9d1('0x45')](handleError(_0x46d405,null));};exports['addContacts']=function(_0x1cb2a9,_0x373691,_0x760daa){return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x1cb2a9['params']['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x373691,null))[_0xe9d1('0x26')](function(_0x4ca249){if(_0x4ca249){var _0x5bc453=[];var _0x21175e={'success':[],'errors':[]};return db[_0xe9d1('0x5b')][_0xe9d1('0x52')]()[_0xe9d1('0x26')](function(_0x3a74fe){if(_0x1cb2a9[_0xe9d1('0x51')][_0xe9d1('0x5c')]&&_[_0xe9d1('0x5d')](_0x1cb2a9['body'][_0xe9d1('0x5c')])){if(_0x1cb2a9[_0xe9d1('0x51')]['tags'][_0xe9d1('0x39')]){_0x1cb2a9['body'][_0xe9d1('0x5c')]=_0x1cb2a9[_0xe9d1('0x51')]['tags']['join'](';')+';';}else{_0x1cb2a9['body']['tags']=null;}}else{_0x1cb2a9[_0xe9d1('0x51')][_0xe9d1('0x5c')]=null;}if(_0x1cb2a9['body']&&_[_0xe9d1('0x5d')](_0x1cb2a9[_0xe9d1('0x51')])){for(var _0x2e2bf5=0x0;_0x2e2bf5<_0x1cb2a9['body'][_0xe9d1('0x39')];_0x2e2bf5+=0x1){_0x1cb2a9[_0xe9d1('0x51')][_0x2e2bf5][_0xe9d1('0x58')]=_0x1cb2a9[_0xe9d1('0x47')]['id'];_0x5bc453[_0xe9d1('0x5e')](_0x1cb2a9['body'][_0x2e2bf5]);}return BPromise[_0xe9d1('0x5f')](_0x5bc453,function(_0x49cd61){return db[_0xe9d1('0x5b')][_0xe9d1('0x4c')](_[_0xe9d1('0x60')](_0x49cd61,[_0xe9d1('0x5a'),'id'])||{},{'fields':_[_0xe9d1('0x35')](_0x3a74fe),'raw':!![]})[_0xe9d1('0x26')](function(_0x23f653){_0x21175e[_0xe9d1('0x61')][_0xe9d1('0x5e')](_0x23f653[_0xe9d1('0x62')]);})[_0xe9d1('0x45')](function(_0x40b558){_0x21175e['errors'][_0xe9d1('0x5e')]({'data':_0x49cd61,'error':_0x40b558[_0xe9d1('0x63')]});});})[_0xe9d1('0x26')](function(_0x518de5){return _0x21175e;})[_0xe9d1('0x45')](function(_0x43b972){return _0x43b972;});}else{_0x373691[_0xe9d1('0x1b')](0x190)[_0xe9d1('0x1d')]({'message':_0xe9d1('0x64')});}});}})[_0xe9d1('0x26')](respondWithResult(_0x373691,null))[_0xe9d1('0x45')](handleError(_0x373691,null));};exports[_0xe9d1('0x65')]=function(_0x10816a,_0xad1ecc,_0x50b5af){var _0x577b23;return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x10816a[_0xe9d1('0x47')]['id']},'include':[{'model':db[_0xe9d1('0x66')],'as':_0xe9d1('0x67')}]})[_0xe9d1('0x26')](handleEntityNotFound(_0xad1ecc,null))[_0xe9d1('0x26')](function(_0x491a79){if(_0x491a79){_0x577b23=_0x491a79;return db[_0xe9d1('0x5b')][_0xe9d1('0x31')];}})[_0xe9d1('0x26')](function(_0x36420f){if(_0x36420f){var _0x34b7c9={};var _0x416ada={};_0x416ada[_0xe9d1('0x33')]=_[_0xe9d1('0x68')](_['keys'](_0x36420f),_['map'](_0x577b23[_0xe9d1('0x67')],function(_0x11fcfc){return util[_0xe9d1('0x69')]('cf_%d',_0x11fcfc['id']);}));_0x416ada[_0xe9d1('0x34')]=_[_0xe9d1('0x35')](_0x10816a['query']);_0x416ada[_0xe9d1('0x36')]=_[_0xe9d1('0x48')](_0x416ada[_0xe9d1('0x33')],_0x416ada[_0xe9d1('0x34')]);_0x34b7c9[_0xe9d1('0x37')]=_[_0xe9d1('0x48')](_0x416ada[_0xe9d1('0x33')],qs[_0xe9d1('0x38')](_0x10816a[_0xe9d1('0x34')][_0xe9d1('0x38')]));_0x34b7c9[_0xe9d1('0x37')]=_0x34b7c9[_0xe9d1('0x37')][_0xe9d1('0x39')]?_0x34b7c9[_0xe9d1('0x37')]:_0x416ada[_0xe9d1('0x33')];if(!_0x10816a[_0xe9d1('0x34')]['hasOwnProperty']('nolimit')){_0x34b7c9[_0xe9d1('0x1f')]=qs[_0xe9d1('0x1f')](_0x10816a['query'][_0xe9d1('0x1f')]);_0x34b7c9[_0xe9d1('0x21')]=qs[_0xe9d1('0x21')](_0x10816a[_0xe9d1('0x34')][_0xe9d1('0x21')]);}_0x34b7c9[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x10816a[_0xe9d1('0x34')][_0xe9d1('0x3c')]);_0x34b7c9['where']=qs['filters'](_[_0xe9d1('0x3d')](_0x10816a[_0xe9d1('0x34')],_0x416ada[_0xe9d1('0x36')]));_0x34b7c9[_0xe9d1('0x6a')]=!![];if(_0x10816a[_0xe9d1('0x34')]['filter']){_0x34b7c9[_0xe9d1('0x40')]=_[_0xe9d1('0x3f')](_0x34b7c9['where'],{'$or':_[_0xe9d1('0x2f')](_0x34b7c9[_0xe9d1('0x37')],function(_0x601476){var _0xa4aca={};_0xa4aca[_0x601476]={'$like':'%'+_0x10816a[_0xe9d1('0x34')][_0xe9d1('0x3e')]+'%'};return _0xa4aca;})});}_0x34b7c9=_[_0xe9d1('0x3f')]({},_0x34b7c9,_0x10816a[_0xe9d1('0x4a')]);return _0x577b23[_0xe9d1('0x65')](_0x34b7c9);}})[_0xe9d1('0x26')](respondWithResult(_0xad1ecc,null))[_0xe9d1('0x45')](handleError(_0xad1ecc,null));};exports[_0xe9d1('0x6b')]=function(_0x8a7a5a,_0x19f1b3,_0x2d0fbe){var _0x58cc64;return db['CmList'][_0xe9d1('0x4b')]({'where':{'id':_0x8a7a5a[_0xe9d1('0x47')]['id']},'include':[{'model':db['CmCustomField'],'as':_0xe9d1('0x67')}]})[_0xe9d1('0x26')](handleEntityNotFound(_0x19f1b3,null))['then'](function(_0x489c45){if(_0x489c45){_0x58cc64=_0x489c45;return db[_0xe9d1('0x5b')][_0xe9d1('0x31')];}})[_0xe9d1('0x26')](function(_0x478af8){if(_0x478af8){var _0x5c1e0f={};var _0x3f7bd8={};_0x3f7bd8[_0xe9d1('0x33')]=_[_0xe9d1('0x68')](_[_0xe9d1('0x35')](_0x478af8),_[_0xe9d1('0x2f')](_0x58cc64[_0xe9d1('0x67')],function(_0x11f204){return util[_0xe9d1('0x69')](_0xe9d1('0x6c'),_0x11f204['id']);}));_0x3f7bd8[_0xe9d1('0x34')]=_['keys'](_0x8a7a5a[_0xe9d1('0x34')]);_0x3f7bd8[_0xe9d1('0x36')]=_['intersection'](_0x3f7bd8[_0xe9d1('0x33')],_0x3f7bd8[_0xe9d1('0x34')]);_0x5c1e0f['attributes']=_[_0xe9d1('0x48')](_0x3f7bd8['model'],qs[_0xe9d1('0x38')](_0x8a7a5a[_0xe9d1('0x34')][_0xe9d1('0x38')]));_0x5c1e0f[_0xe9d1('0x37')]=_0x5c1e0f[_0xe9d1('0x37')][_0xe9d1('0x39')]?_0x5c1e0f[_0xe9d1('0x37')]:_0x3f7bd8['model'];if(!_0x8a7a5a[_0xe9d1('0x34')][_0xe9d1('0x57')](_0xe9d1('0x3a'))){_0x5c1e0f['limit']=qs['limit'](_0x8a7a5a['query'][_0xe9d1('0x1f')]);_0x5c1e0f[_0xe9d1('0x21')]=qs[_0xe9d1('0x21')](_0x8a7a5a['query']['offset']);}_0x5c1e0f[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x8a7a5a['query'][_0xe9d1('0x3c')]);_0x5c1e0f[_0xe9d1('0x40')]=qs[_0xe9d1('0x36')](_['pick'](_0x8a7a5a[_0xe9d1('0x34')],_0x3f7bd8['filters']));_0x5c1e0f[_0xe9d1('0x6a')]=!![];if(_0x8a7a5a[_0xe9d1('0x34')][_0xe9d1('0x3e')]){_0x5c1e0f[_0xe9d1('0x40')]=_[_0xe9d1('0x3f')](_0x5c1e0f[_0xe9d1('0x40')],{'$or':_['map'](_0x5c1e0f[_0xe9d1('0x37')],function(_0x6582e9){var _0x34eec9={};_0x34eec9[_0x6582e9]={'$like':'%'+_0x8a7a5a[_0xe9d1('0x34')][_0xe9d1('0x3e')]+'%'};return _0x34eec9;})});}_0x5c1e0f=_['merge']({},_0x5c1e0f,_0x8a7a5a['options']);return _0x58cc64['getContacts'](_0x5c1e0f);}})[_0xe9d1('0x26')](function(_0x31f0ee){if(!_[_0xe9d1('0x6d')](_0x31f0ee)){var _0x46fa02=toCsv(_0x31f0ee);var _0x1b9afc=Date[_0xe9d1('0x6e')]();fs[_0xe9d1('0x6f')](util['format'](_0xe9d1('0x70'),_0x58cc64['id'],_0x1b9afc),_0x46fa02);_0x19f1b3[_0xe9d1('0x71')]('Content-disposition','attachment;\x20filename='+util[_0xe9d1('0x69')](_0xe9d1('0x72'),_0x58cc64['id'],_0x1b9afc));_0x19f1b3['setHeader'](_0xe9d1('0x73'),_0xe9d1('0x74'));return _0x19f1b3[_0xe9d1('0x75')](util[_0xe9d1('0x69')](_0xe9d1('0x70'),_0x58cc64['id'],_0x1b9afc));}else{return _0x19f1b3[_0xe9d1('0x1a')](0xcc);}})[_0xe9d1('0x45')](handleError(_0x19f1b3,null));};exports[_0xe9d1('0x76')]=function(_0xb5607e,_0x4c55c2,_0x5e6f43){var _0x53ed7d;delete _0xb5607e[_0xe9d1('0x51')]['id'];return db['CmList'][_0xe9d1('0x56')]({'where':{'id':_0xb5607e[_0xe9d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x4c55c2,null))[_0xe9d1('0x26')](function(_0xcb4bec){if(_0xcb4bec){return db[_0xe9d1('0x77')][_0xe9d1('0x78')](function(_0x428d3e){return db[_0xe9d1('0x66')][_0xe9d1('0x4c')](_0xb5607e[_0xe9d1('0x51')],{'transaction':_0x428d3e})['then'](function(_0x19f3a5){_0x53ed7d=_0x19f3a5;return _0xcb4bec[_0xe9d1('0x79')](_0x19f3a5,{'transaction':_0x428d3e});})['then'](function(){var _0x32becf={'type':db[_0xe9d1('0x7a')][_0xe9d1('0x7b')],'transaction':_0x428d3e};switch(_0xb5607e['body']['type']){case _0xe9d1('0x7c'):_0x32becf[_0xe9d1('0x41')]=db[_0xe9d1('0x7a')][_0xe9d1('0x7b')];break;case _0xe9d1('0x7d'):_0x32becf['type']=db[_0xe9d1('0x7a')][_0xe9d1('0x7e')];break;case _0xe9d1('0x7f'):_0x32becf[_0xe9d1('0x41')]=db[_0xe9d1('0x7a')][_0xe9d1('0x80')];_0x32becf['defaultValue']=![];break;default:}return db[_0xe9d1('0x77')][_0xe9d1('0x81')][_0xe9d1('0x82')](_0xe9d1('0x83'),util[_0xe9d1('0x69')](_0xe9d1('0x84'),_0x53ed7d['id']),_0x32becf);})[_0xe9d1('0x26')](function(){return _0x53ed7d;});});}})[_0xe9d1('0x26')](respondWithResult(_0x4c55c2,null))[_0xe9d1('0x45')](handleError(_0x4c55c2,null));};exports[_0xe9d1('0x85')]=function(_0x240ffe,_0x21a166,_0x3c1576){var _0x56ae9a={};var _0x5d4035={};var _0x51f405;var _0x461875;return db['CmList'][_0xe9d1('0x56')]({'where':{'id':_0x240ffe[_0xe9d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x21a166,null))['then'](function(_0x56e336){if(_0x56e336){_0x51f405=_0x56e336;_0x5d4035[_0xe9d1('0x33')]=_[_0xe9d1('0x35')](db[_0xe9d1('0x66')][_0xe9d1('0x31')]);_0x5d4035['query']=_[_0xe9d1('0x35')](_0x240ffe[_0xe9d1('0x34')]);_0x5d4035['filters']=_[_0xe9d1('0x48')](_0x5d4035[_0xe9d1('0x33')],_0x5d4035[_0xe9d1('0x34')]);_0x56ae9a[_0xe9d1('0x37')]=_[_0xe9d1('0x48')](_0x5d4035[_0xe9d1('0x33')],qs[_0xe9d1('0x38')](_0x240ffe[_0xe9d1('0x34')]['fields']));_0x56ae9a[_0xe9d1('0x37')]=_0x56ae9a[_0xe9d1('0x37')]['length']?_0x56ae9a[_0xe9d1('0x37')]:_0x5d4035[_0xe9d1('0x33')];_0x56ae9a[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x240ffe[_0xe9d1('0x34')][_0xe9d1('0x3c')]);_0x56ae9a['where']=qs[_0xe9d1('0x36')](_[_0xe9d1('0x3d')](_0x240ffe[_0xe9d1('0x34')],_0x5d4035['filters']));_0x56ae9a[_0xe9d1('0x40')]=_['merge'](_0x56ae9a[_0xe9d1('0x40')],{'$or':[{'ListId':_0x56e336['id']},{'ListId':null}]});if(_0x240ffe[_0xe9d1('0x34')]['filter']){_0x56ae9a[_0xe9d1('0x40')]=_[_0xe9d1('0x3f')](_0x56ae9a[_0xe9d1('0x40')],{'$or':_[_0xe9d1('0x2f')](_0x56ae9a[_0xe9d1('0x37')],function(_0x1314d5){var _0xb53626={};_0xb53626[_0x1314d5]={'$like':'%'+_0x240ffe[_0xe9d1('0x34')][_0xe9d1('0x3e')]+'%'};return _0xb53626;})});}_0x56ae9a=_[_0xe9d1('0x3f')]({},_0x56ae9a,_0x240ffe['options']);return db[_0xe9d1('0x66')][_0xe9d1('0x86')](_0x56ae9a);}})['then'](respondWithResult(_0x21a166,null))[_0xe9d1('0x45')](handleError(_0x21a166,null));};exports['addAgents']=function(_0x1bf2ee,_0x253826,_0x171ef7){return db['CmList'][_0xe9d1('0x4b')]({'where':{'id':_0x1bf2ee[_0xe9d1('0x47')]['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x253826,null))[_0xe9d1('0x26')](function(_0x3f7f89){if(_0x3f7f89){return _0x3f7f89[_0xe9d1('0x87')](_0x1bf2ee[_0xe9d1('0x51')][_0xe9d1('0x5a')],_[_0xe9d1('0x60')](_0x1bf2ee[_0xe9d1('0x51')],['ids','id'])||{})[_0xe9d1('0x88')](function(_0x9dcac7){for(var _0x4b67df=0x0;_0x4b67df<_0x1bf2ee['body'][_0xe9d1('0x5a')][_0xe9d1('0x39')];_0x4b67df+=0x1){socket[_0xe9d1('0x89')]('userCmList:save',{'UserId':Number(_0x1bf2ee[_0xe9d1('0x51')]['ids'][_0x4b67df]),'CmListId':Number(_0x1bf2ee['params']['id'])});}return _0x9dcac7;});}})[_0xe9d1('0x26')](respondWithResult(_0x253826,null))[_0xe9d1('0x45')](handleError(_0x253826,null));};exports[_0xe9d1('0x8a')]=function(_0x5673f0,_0x48804e,_0x432d03){return db[_0xe9d1('0x30')][_0xe9d1('0x4b')]({'where':{'id':_0x5673f0[_0xe9d1('0x47')]['id']}})[_0xe9d1('0x26')](handleEntityNotFound(_0x48804e,null))[_0xe9d1('0x26')](function(_0x48273f){if(_0x48273f){return _0x48273f[_0xe9d1('0x8a')](_0x5673f0['query'][_0xe9d1('0x5a')])['then'](function(){if(_[_0xe9d1('0x5d')](_0x5673f0[_0xe9d1('0x34')]['ids'])){for(var _0x39cc4f=0x0;_0x39cc4f<_0x5673f0['query']['ids'][_0xe9d1('0x39')];_0x39cc4f+=0x1){socket[_0xe9d1('0x89')](_0xe9d1('0x8b'),{'UserId':Number(_0x5673f0[_0xe9d1('0x34')][_0xe9d1('0x5a')][_0x39cc4f]),'CmListId':Number(_0x5673f0[_0xe9d1('0x47')]['id'])});}}else{socket[_0xe9d1('0x89')](_0xe9d1('0x8b'),{'UserId':Number(_0x5673f0[_0xe9d1('0x34')][_0xe9d1('0x5a')]),'CmListId':Number(_0x5673f0['params']['id'])});}});}})['then'](respondWithStatusCode(_0x48804e,null))[_0xe9d1('0x45')](handleError(_0x48804e,null));};exports[_0xe9d1('0x8c')]=function(_0x118e52,_0x22721d,_0x9df397){var _0x85066={};var _0x36eb33={};var _0x1ea8f1;var _0x2b1f66;return db[_0xe9d1('0x30')][_0xe9d1('0x56')]({'where':{'id':_0x118e52[_0xe9d1('0x47')]['id']}})['then'](handleEntityNotFound(_0x22721d,null))[_0xe9d1('0x26')](function(_0x1bd96a){if(_0x1bd96a){_0x1ea8f1=_0x1bd96a;_0x36eb33['model']=_[_0xe9d1('0x35')](db[_0xe9d1('0x8d')][_0xe9d1('0x31')]);_0x36eb33[_0xe9d1('0x34')]=_[_0xe9d1('0x35')](_0x118e52[_0xe9d1('0x34')]);_0x36eb33['filters']=_[_0xe9d1('0x48')](_0x36eb33[_0xe9d1('0x33')],_0x36eb33['query']);_0x85066[_0xe9d1('0x37')]=_[_0xe9d1('0x48')](_0x36eb33['model'],qs['fields'](_0x118e52[_0xe9d1('0x34')][_0xe9d1('0x38')]));_0x85066['attributes']=_0x85066[_0xe9d1('0x37')][_0xe9d1('0x39')]?_0x85066['attributes']:_0x36eb33[_0xe9d1('0x33')];_0x85066[_0xe9d1('0x3b')]=qs[_0xe9d1('0x3c')](_0x118e52[_0xe9d1('0x34')][_0xe9d1('0x3c')]);_0x85066[_0xe9d1('0x40')]=qs[_0xe9d1('0x36')](_[_0xe9d1('0x3d')](_0x118e52['query'],_0x36eb33[_0xe9d1('0x36')]));if(_0x118e52[_0xe9d1('0x34')][_0xe9d1('0x3e')]){_0x85066[_0xe9d1('0x40')]=_[_0xe9d1('0x3f')](_0x85066[_0xe9d1('0x40')],{'$or':_[_0xe9d1('0x2f')](_0x85066[_0xe9d1('0x37')],function(_0x1b6d6d){var _0x10084e={};_0x10084e[_0x1b6d6d]={'$like':'%'+_0x118e52[_0xe9d1('0x34')][_0xe9d1('0x3e')]+'%'};return _0x10084e;})});}_0x85066=_[_0xe9d1('0x3f')]({},_0x85066,_0x118e52['options']);return _0x1ea8f1['getAgents'](_0x85066);}})[_0xe9d1('0x26')](function(_0x3dda16){if(_0x3dda16){_0x2b1f66=_0x3dda16[_0xe9d1('0x39')];if(!_0x118e52[_0xe9d1('0x34')][_0xe9d1('0x57')](_0xe9d1('0x3a'))){_0x85066[_0xe9d1('0x1f')]=qs[_0xe9d1('0x1f')](_0x118e52[_0xe9d1('0x34')]['limit']);_0x85066[_0xe9d1('0x21')]=qs['offset'](_0x118e52[_0xe9d1('0x34')]['offset']);}return _0x1ea8f1[_0xe9d1('0x8c')](_0x85066);}})[_0xe9d1('0x26')](function(_0x56aa8f){if(_0x56aa8f){return _0x56aa8f?{'count':_0x2b1f66,'rows':_0x56aa8f}:null;}})[_0xe9d1('0x26')](respondWithResult(_0x22721d,null))[_0xe9d1('0x45')](handleError(_0x22721d,null));};
\ No newline at end of file
index b1e3d9a..3e4f90a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x3932eb,_0x43b210){var _0x5316e5=function(_0x1744e8){while(--_0x1744e8){_0x3932eb['push'](_0x3932eb['shift']());}};_0x5316e5(++_0x43b210);}(_0x5fc3,0xa8));var _0x35fc=function(_0x4d1ee9,_0x394a78){_0x4d1ee9=_0x4d1ee9-0x0;var _0x9a5456=_0x5fc3[_0x4d1ee9];return _0x9a5456;};'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
+var _0x3e74=['hasOwnProperty','exports','events','CmList','setMaxListeners','save','emit'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x3e74,0x175));var _0x43e7=function(_0x51bc96,_0x4bf0de){_0x51bc96=_0x51bc96-0x0;var _0x187642=_0x3e74[_0x51bc96];return _0x187642;};'use strict';var EventEmitter=require(_0x43e7('0x0'));var CmList=require('../../mysqldb')['db'][_0x43e7('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x43e7('0x2')](0x0);var events={'afterCreate':_0x43e7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc58479){return function(_0x4f9bbe,_0x128b0f,_0xe838b4){CmListEvents[_0x43e7('0x4')](_0xc58479+':'+_0x4f9bbe['id'],_0x4f9bbe);CmListEvents[_0x43e7('0x4')](_0xc58479,_0x4f9bbe);_0xe838b4(null);};}for(var e in events){if(events[_0x43e7('0x5')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module[_0x43e7('0x6')]=CmListEvents;
\ No newline at end of file
index d1bbda2..14705ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702d=['exports','define','CmList','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x5db59c,_0x41f295){var _0xd9acfc=function(_0x1f4e72){while(--_0x1f4e72){_0x5db59c['push'](_0x5db59c['shift']());}};_0xd9acfc(++_0x41f295);}(_0x702d,0x147));var _0xd702=function(_0x51f8b7,_0x1ba641){_0x51f8b7=_0x51f8b7-0x0;var _0x1c4fa8=_0x702d[_0x51f8b7];return _0x1c4fa8;};'use strict';var _=require(_0xd702('0x0'));var util=require(_0xd702('0x1'));var logger=require(_0xd702('0x2'))(_0xd702('0x3'));var moment=require(_0xd702('0x4'));var BPromise=require('bluebird');var rp=require(_0xd702('0x5'));var fs=require('fs');var path=require(_0xd702('0x6'));var rimraf=require(_0xd702('0x7'));var config=require(_0xd702('0x8'));var attributes=require('./cmList.attributes');module[_0xd702('0x9')]=function(_0x544e94,_0x1aecfc){return _0x544e94[_0xd702('0xa')](_0xd702('0xb'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdace=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','CmList','cm_lists','lodash'];(function(_0x45a106,_0x40f99f){var _0x318090=function(_0x9c724b){while(--_0x9c724b){_0x45a106['push'](_0x45a106['shift']());}};_0x318090(++_0x40f99f);}(_0xdace,0xc5));var _0xedac=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0xdace[_0x39096d];return _0x13da4f;};'use strict';var _=require(_0xedac('0x0'));var util=require('util');var logger=require(_0xedac('0x1'))(_0xedac('0x2'));var moment=require(_0xedac('0x3'));var BPromise=require('bluebird');var rp=require(_0xedac('0x4'));var fs=require('fs');var path=require(_0xedac('0x5'));var rimraf=require(_0xedac('0x6'));var config=require(_0xedac('0x7'));var attributes=require('./cmList.attributes');module[_0xedac('0x8')]=function(_0x1cba89,_0x39328a){return _0x1cba89['define'](_0xedac('0x9'),attributes,{'tableName':_0xedac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 80ab2a4..6670b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fff=['CmList,\x20%s,\x20%s','debug','request\x20sent','error','code','message','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','info'];(function(_0x3b39df,_0x2187a1){var _0x514167=function(_0x3b6b0e){while(--_0x3b6b0e){_0x3b39df['push'](_0x3b39df['shift']());}};_0x514167(++_0x2187a1);}(_0x3fff,0x19f));var _0xf3ff=function(_0x2de5cf,_0x4668fc){_0x2de5cf=_0x2de5cf-0x0;var _0x131b2b=_0x3fff[_0x2de5cf];return _0x131b2b;};'use strict';var _=require('lodash');var util=require(_0xf3ff('0x0'));var moment=require(_0xf3ff('0x1'));var BPromise=require(_0xf3ff('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf3ff('0x3'));var db=require(_0xf3ff('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf3ff('0x5'))('rpc');var config=require(_0xf3ff('0x6'));var jayson=require(_0xf3ff('0x7'));var client=jayson[_0xf3ff('0x8')][_0xf3ff('0x9')]({'port':0x232a});config[_0xf3ff('0xa')]=_[_0xf3ff('0xb')](config[_0xf3ff('0xa')],{'host':_0xf3ff('0xc'),'port':0x18eb});var socket=require(_0xf3ff('0xd'))(new Redis(config[_0xf3ff('0xa')]));require('./cmList.socket')[_0xf3ff('0xe')](socket);function respondWithRpcPromise(_0x38b9aa,_0x26cca2,_0x32e42c){return new BPromise(function(_0x4dd117,_0x1a9dd4){return client['request'](_0x38b9aa,_0x32e42c)[_0xf3ff('0xf')](function(_0x5b6de3){logger[_0xf3ff('0x10')](_0xf3ff('0x11'),_0x26cca2,'request\x20sent');logger[_0xf3ff('0x12')]('CmList,\x20%s,\x20%s,\x20%s',_0x26cca2,_0xf3ff('0x13'),JSON['stringify'](_0x5b6de3));if(_0x5b6de3[_0xf3ff('0x14')]){if(_0x5b6de3['error'][_0xf3ff('0x15')]===0x1f4){logger[_0xf3ff('0x14')](_0xf3ff('0x11'),_0x26cca2,_0x5b6de3[_0xf3ff('0x14')]['message']);return _0x1a9dd4(_0x5b6de3[_0xf3ff('0x14')][_0xf3ff('0x16')]);}logger[_0xf3ff('0x14')](_0xf3ff('0x11'),_0x26cca2,_0x5b6de3['error']['message']);return _0x4dd117(_0x5b6de3[_0xf3ff('0x14')][_0xf3ff('0x16')]);}else{logger['info'](_0xf3ff('0x11'),_0x26cca2,_0xf3ff('0x13'));_0x4dd117(_0x5b6de3['result']['message']);}})[_0xf3ff('0x17')](function(_0x4db6f0){logger[_0xf3ff('0x14')](_0xf3ff('0x11'),_0x26cca2,_0x4db6f0);_0x1a9dd4(_0x4db6f0);});});}
\ No newline at end of file
+var _0xf8ed=['request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','localhost','./cmList.socket','register','then','info','CmList,\x20%s,\x20%s'];(function(_0x11cbbd,_0x5d4106){var _0x153af2=function(_0xd8cb94){while(--_0xd8cb94){_0x11cbbd['push'](_0x11cbbd['shift']());}};_0x153af2(++_0x5d4106);}(_0xf8ed,0x70));var _0xdf8e=function(_0x469b69,_0x4ab72a){_0x469b69=_0x469b69-0x0;var _0xa5fc5f=_0xf8ed[_0x469b69];return _0xa5fc5f;};'use strict';var _=require(_0xdf8e('0x0'));var util=require(_0xdf8e('0x1'));var moment=require(_0xdf8e('0x2'));var BPromise=require(_0xdf8e('0x3'));var rs=require(_0xdf8e('0x4'));var fs=require('fs');var Redis=require(_0xdf8e('0x5'));var db=require(_0xdf8e('0x6'))['db'];var utils=require(_0xdf8e('0x7'));var logger=require(_0xdf8e('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xdf8e('0x9'));var client=jayson['client'][_0xdf8e('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xdf8e('0xb')],{'host':_0xdf8e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdf8e('0xb')]));require(_0xdf8e('0xd'))[_0xdf8e('0xe')](socket);function respondWithRpcPromise(_0x58a5a6,_0x341341,_0x191f92){return new BPromise(function(_0x12fbd4,_0x1a6109){return client['request'](_0x58a5a6,_0x191f92)[_0xdf8e('0xf')](function(_0x5c0fa5){logger[_0xdf8e('0x10')](_0xdf8e('0x11'),_0x341341,_0xdf8e('0x12'));logger[_0xdf8e('0x13')](_0xdf8e('0x14'),_0x341341,'request\x20sent',JSON[_0xdf8e('0x15')](_0x5c0fa5));if(_0x5c0fa5['error']){if(_0x5c0fa5[_0xdf8e('0x16')][_0xdf8e('0x17')]===0x1f4){logger[_0xdf8e('0x16')](_0xdf8e('0x11'),_0x341341,_0x5c0fa5[_0xdf8e('0x16')][_0xdf8e('0x18')]);return _0x1a6109(_0x5c0fa5[_0xdf8e('0x16')]['message']);}logger['error'](_0xdf8e('0x11'),_0x341341,_0x5c0fa5['error'][_0xdf8e('0x18')]);return _0x12fbd4(_0x5c0fa5[_0xdf8e('0x16')]['message']);}else{logger['info'](_0xdf8e('0x11'),_0x341341,_0xdf8e('0x12'));_0x12fbd4(_0x5c0fa5['result'][_0xdf8e('0x18')]);}})[_0xdf8e('0x19')](function(_0x367d0e){logger[_0xdf8e('0x16')](_0xdf8e('0x11'),_0x341341,_0x367d0e);_0x1a6109(_0x367d0e);});});}
\ No newline at end of file
index edd35a3..a99f418 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x827e=['length','cmList:','save','remove','update','emit','removeListener'];(function(_0x44ae1b,_0x2cc392){var _0xd17918=function(_0x3a641a){while(--_0x3a641a){_0x44ae1b['push'](_0x44ae1b['shift']());}};_0xd17918(++_0x2cc392);}(_0x827e,0x1e5));var _0xe827=function(_0x68108e,_0x9cfc45){_0x68108e=_0x68108e-0x0;var _0x4c770a=_0x827e[_0x68108e];return _0x4c770a;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0xe827('0x0'),_0xe827('0x1'),_0xe827('0x2')];function createListener(_0x25e5d0,_0x289e02){return function(_0x50bc35){_0x289e02[_0xe827('0x3')](_0x25e5d0,_0x50bc35);};}function removeListener(_0x1b488c,_0x265255){return function(){CmListEvents[_0xe827('0x4')](_0x1b488c,_0x265255);};}exports['register']=function(_0x58d1dc){for(var _0x1a314f=0x0,_0x3e8fb4=events[_0xe827('0x5')];_0x1a314f<_0x3e8fb4;_0x1a314f++){var _0xabddef=events[_0x1a314f];var _0x3a040e=createListener(_0xe827('0x6')+_0xabddef,_0x58d1dc);CmListEvents['on'](_0xabddef,_0x3a040e);}};
\ No newline at end of file
+var _0x0c7a=['cmList:','./cmList.events','save','remove','emit','register','length'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x0c7a,0xef));var _0xa0c7=function(_0xdbf69d,_0x39efbe){_0xdbf69d=_0xdbf69d-0x0;var _0x48df0e=_0x0c7a[_0xdbf69d];return _0x48df0e;};'use strict';var CmListEvents=require(_0xa0c7('0x0'));var events=[_0xa0c7('0x1'),_0xa0c7('0x2'),'update'];function createListener(_0x33a1d8,_0x25ea55){return function(_0x542a56){_0x25ea55[_0xa0c7('0x3')](_0x33a1d8,_0x542a56);};}function removeListener(_0x5db684,_0x2f7436){return function(){CmListEvents['removeListener'](_0x5db684,_0x2f7436);};}exports[_0xa0c7('0x4')]=function(_0x2023e9){for(var _0x5d92a1=0x0,_0x56ae49=events[_0xa0c7('0x5')];_0x5d92a1<_0x56ae49;_0x5d92a1++){var _0x3fc2a0=events[_0x5d92a1];var _0x2861c9=createListener(_0xa0c7('0x6')+_0x3fc2a0,_0x2023e9);CmListEvents['on'](_0x3fc2a0,_0x2861c9);}};
\ No newline at end of file
index 26d0450..425a690 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3a9=['post','/:id/fields','addCustomField','/:id/users','addAgents','put','update','destroy','delete','removeDispositions','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','getAgents'];(function(_0x576170,_0x1712ae){var _0x397c70=function(_0x2eb9de){while(--_0x2eb9de){_0x576170['push'](_0x576170['shift']());}};_0x397c70(++_0x1712ae);}(_0xb3a9,0x14c));var _0x9b3a=function(_0x827b9a,_0x3b1f72){_0x827b9a=_0x827b9a-0x0;var _0x25d5a6=_0xb3a9[_0x827b9a];return _0x25d5a6;};'use strict';var multer=require(_0x9b3a('0x0'));var util=require('util');var path=require(_0x9b3a('0x1'));var timeout=require(_0x9b3a('0x2'));var express=require(_0x9b3a('0x3'));var router=express[_0x9b3a('0x4')]();var fs_extra=require(_0x9b3a('0x5'));var auth=require(_0x9b3a('0x6'));var interaction=require(_0x9b3a('0x7'));var config=require('../../config/environment');var controller=require('./cmList.controller');router[_0x9b3a('0x8')]('/',auth[_0x9b3a('0x9')](),controller[_0x9b3a('0xa')]);router[_0x9b3a('0x8')](_0x9b3a('0xb'),auth[_0x9b3a('0x9')](),controller[_0x9b3a('0xc')]);router[_0x9b3a('0x8')](_0x9b3a('0xd'),auth[_0x9b3a('0x9')](),controller[_0x9b3a('0xe')]);router[_0x9b3a('0x8')](_0x9b3a('0xf'),auth[_0x9b3a('0x9')](),controller[_0x9b3a('0x10')]);router[_0x9b3a('0x8')](_0x9b3a('0x11'),auth[_0x9b3a('0x9')](),controller[_0x9b3a('0x12')]);router[_0x9b3a('0x8')]('/:id/contacts/csv',auth[_0x9b3a('0x9')](),controller['getContactsCsv']);router[_0x9b3a('0x8')]('/:id/fields',auth['isAuthenticated'](),controller['getCustomFields']);router[_0x9b3a('0x8')]('/:id/users',auth[_0x9b3a('0x9')](),controller[_0x9b3a('0x13')]);router[_0x9b3a('0x14')]('/',auth[_0x9b3a('0x9')](),controller['create']);router[_0x9b3a('0x14')](_0x9b3a('0xf'),auth[_0x9b3a('0x9')](),controller['addDisposition']);router[_0x9b3a('0x14')]('/:id/contacts',auth[_0x9b3a('0x9')](),controller['addContacts']);router[_0x9b3a('0x14')](_0x9b3a('0x15'),auth[_0x9b3a('0x9')](),controller[_0x9b3a('0x16')]);router[_0x9b3a('0x14')](_0x9b3a('0x17'),auth['isAuthenticated'](),controller[_0x9b3a('0x18')]);router[_0x9b3a('0x19')](_0x9b3a('0xd'),auth[_0x9b3a('0x9')](),controller[_0x9b3a('0x1a')]);router['delete'](_0x9b3a('0xd'),auth[_0x9b3a('0x9')](),controller[_0x9b3a('0x1b')]);router[_0x9b3a('0x1c')](_0x9b3a('0xf'),auth[_0x9b3a('0x9')](),controller[_0x9b3a('0x1d')]);router[_0x9b3a('0x1c')]('/:id/users',auth[_0x9b3a('0x9')](),controller[_0x9b3a('0x1e')]);module[_0x9b3a('0x1f')]=router;
\ No newline at end of file
+var _0x222a=['/:id','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','create','post','addDisposition','addContacts','addCustomField','/:id/users','put','delete','removeDispositions','exports','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe'];(function(_0x1508e9,_0x5dfaec){var _0x5a0bf5=function(_0x1e2a64){while(--_0x1e2a64){_0x1508e9['push'](_0x1508e9['shift']());}};_0x5a0bf5(++_0x5dfaec);}(_0x222a,0x1e3));var _0xa222=function(_0x3d4e7c,_0x3fc5b1){_0x3d4e7c=_0x3d4e7c-0x0;var _0x30c9d5=_0x222a[_0x3d4e7c];return _0x30c9d5;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xa222('0x0'));var express=require('express');var router=express[_0xa222('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xa222('0x2'));var interaction=require(_0xa222('0x3'));var config=require(_0xa222('0x4'));var controller=require('./cmList.controller');router[_0xa222('0x5')]('/',auth[_0xa222('0x6')](),controller[_0xa222('0x7')]);router[_0xa222('0x5')](_0xa222('0x8'),auth['isAuthenticated'](),controller[_0xa222('0x9')]);router[_0xa222('0x5')](_0xa222('0xa'),auth[_0xa222('0x6')](),controller['show']);router[_0xa222('0x5')](_0xa222('0xb'),auth[_0xa222('0x6')](),controller[_0xa222('0xc')]);router['get'](_0xa222('0xd'),auth[_0xa222('0x6')](),controller[_0xa222('0xe')]);router['get'](_0xa222('0xf'),auth['isAuthenticated'](),controller[_0xa222('0x10')]);router[_0xa222('0x5')](_0xa222('0x11'),auth[_0xa222('0x6')](),controller[_0xa222('0x12')]);router[_0xa222('0x5')]('/:id/users',auth[_0xa222('0x6')](),controller['getAgents']);router['post']('/',auth[_0xa222('0x6')](),controller[_0xa222('0x13')]);router[_0xa222('0x14')](_0xa222('0xb'),auth[_0xa222('0x6')](),controller[_0xa222('0x15')]);router[_0xa222('0x14')](_0xa222('0xd'),auth[_0xa222('0x6')](),controller[_0xa222('0x16')]);router[_0xa222('0x14')]('/:id/fields',auth[_0xa222('0x6')](),controller[_0xa222('0x17')]);router[_0xa222('0x14')](_0xa222('0x18'),auth[_0xa222('0x6')](),controller['addAgents']);router[_0xa222('0x19')](_0xa222('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xa222('0x1a')]('/:id',auth[_0xa222('0x6')](),controller['destroy']);router[_0xa222('0x1a')](_0xa222('0xb'),auth[_0xa222('0x6')](),controller[_0xa222('0x1b')]);router[_0xa222('0x1a')](_0xa222('0x18'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xa222('0x1c')]=router;
\ No newline at end of file
index 1285520..6167603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e41=['sequelize','exports','VIRTUAL','getDataValue','field','STRING'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x0e41,0x108));var _0x10e4=function(_0x3671aa,_0x4d4271){_0x3671aa=_0x3671aa-0x0;var _0x22b568=_0x0e41[_0x3671aa];return _0x22b568;};'use strict';var Sequelize=require(_0x10e4('0x0'));module[_0x10e4('0x1')]={'name':{'type':Sequelize[_0x10e4('0x2')],'get':function(_0xb4ccb5){return this[_0x10e4('0x3')](_0x10e4('0x4'));}},'field':{'type':Sequelize[_0x10e4('0x5')],'allowNull':![]},'operator':{'type':Sequelize[_0x10e4('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x10e4('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0xe928=['VIRTUAL','field','STRING','exports'];(function(_0x576d8a,_0x2d7bde){var _0x3dc3ef=function(_0xc76758){while(--_0xc76758){_0x576d8a['push'](_0x576d8a['shift']());}};_0x3dc3ef(++_0x2d7bde);}(_0xe928,0x1e7));var _0x8e92=function(_0x426258,_0x22e200){_0x426258=_0x426258-0x0;var _0x40f83f=_0xe928[_0x426258];return _0x40f83f;};'use strict';var Sequelize=require('sequelize');module[_0x8e92('0x0')]={'name':{'type':Sequelize[_0x8e92('0x1')],'get':function(_0x331703){return this['getDataValue'](_0x8e92('0x2'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x8e92('0x3')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 7456121..e16c6e5 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(_0x3bcdc3,_0x520f29){var _0x3db304=function(_0x265e85){while(--_0x265e85){_0x3bcdc3['push'](_0x3bcdc3['shift']());}};_0x3db304(++_0x520f29);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+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(_0x2741d1,_0x15fbf5){var _0x5dbba7=function(_0x590204){while(--_0x590204){_0x2741d1['push'](_0x2741d1['shift']());}};_0x5dbba7(++_0x15fbf5);}(_0x7a54,0x106));var _0x47a5=function(_0x1767bf,_0x6a47ae){_0x1767bf=_0x1767bf-0x0;var _0x5cfe92=_0x7a54[_0x1767bf];return _0x5cfe92;};'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 8224524..cafcf8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd53=['api','moment','request-promise','path','./condition.attributes','exports','define','Condition','tools_conditions','lodash','util'];(function(_0xf79bae,_0x263b2a){var _0x5d2cb7=function(_0x27c86b){while(--_0x27c86b){_0xf79bae['push'](_0xf79bae['shift']());}};_0x5d2cb7(++_0x263b2a);}(_0xfd53,0xae));var _0x3fd5=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0xfd53[_0x47aa64];return _0x549c7a;};'use strict';var _=require(_0x3fd5('0x0'));var util=require(_0x3fd5('0x1'));var logger=require('../../config/logger')(_0x3fd5('0x2'));var moment=require(_0x3fd5('0x3'));var BPromise=require('bluebird');var rp=require(_0x3fd5('0x4'));var fs=require('fs');var path=require(_0x3fd5('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3fd5('0x6'));module[_0x3fd5('0x7')]=function(_0x14f194,_0x1bf93e){return _0x14f194[_0x3fd5('0x8')](_0x3fd5('0x9'),attributes,{'tableName':_0x3fd5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb80f=['path','rimraf','../../config/environment','./condition.attributes','lodash','util','../../config/logger','moment','bluebird'];(function(_0x2f8f34,_0x32d6e4){var _0x426efc=function(_0x4bdee0){while(--_0x4bdee0){_0x2f8f34['push'](_0x2f8f34['shift']());}};_0x426efc(++_0x32d6e4);}(_0xb80f,0x148));var _0xfb80=function(_0x1ffc2e,_0x2d627a){_0x1ffc2e=_0x1ffc2e-0x0;var _0x3aa5d4=_0xb80f[_0x1ffc2e];return _0x3aa5d4;};'use strict';var _=require(_0xfb80('0x0'));var util=require(_0xfb80('0x1'));var logger=require(_0xfb80('0x2'))('api');var moment=require(_0xfb80('0x3'));var BPromise=require(_0xfb80('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfb80('0x5'));var rimraf=require(_0xfb80('0x6'));var config=require(_0xfb80('0x7'));var attributes=require(_0xfb80('0x8'));module['exports']=function(_0x4170bd,_0x1eb6d3){return _0x4170bd['define']('Condition',attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d4a20ad..677c9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db4=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Condition,\x20%s,\x20%s','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','util','moment','bluebird','ioredis'];(function(_0x3cd4a3,_0x192a4d){var _0x3eba9b=function(_0x402286){while(--_0x402286){_0x3cd4a3['push'](_0x3cd4a3['shift']());}};_0x3eba9b(++_0x192a4d);}(_0x5db4,0x1b1));var _0x45db=function(_0x540885,_0x1390e2){_0x540885=_0x540885-0x0;var _0x338d05=_0x5db4[_0x540885];return _0x338d05;};'use strict';var _=require('lodash');var util=require(_0x45db('0x0'));var moment=require(_0x45db('0x1'));var BPromise=require(_0x45db('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x45db('0x3'));var db=require(_0x45db('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x45db('0x5'))(_0x45db('0x6'));var config=require(_0x45db('0x7'));var jayson=require(_0x45db('0x8'));var client=jayson[_0x45db('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x36ff78,_0x2ebaa7,_0x16ff42){return new BPromise(function(_0x4472ae,_0x20f171){return client[_0x45db('0xa')](_0x36ff78,_0x16ff42)[_0x45db('0xb')](function(_0x468ca7){logger[_0x45db('0xc')](_0x45db('0xd'),_0x2ebaa7,'request\x20sent');logger[_0x45db('0xe')](_0x45db('0xf'),_0x2ebaa7,'request\x20sent',JSON[_0x45db('0x10')](_0x468ca7));if(_0x468ca7[_0x45db('0x11')]){if(_0x468ca7[_0x45db('0x11')][_0x45db('0x12')]===0x1f4){logger[_0x45db('0x11')]('Condition,\x20%s,\x20%s',_0x2ebaa7,_0x468ca7['error'][_0x45db('0x13')]);return _0x20f171(_0x468ca7[_0x45db('0x11')][_0x45db('0x13')]);}logger[_0x45db('0x11')](_0x45db('0xd'),_0x2ebaa7,_0x468ca7[_0x45db('0x11')]['message']);return _0x4472ae(_0x468ca7[_0x45db('0x11')][_0x45db('0x13')]);}else{logger['info'](_0x45db('0xd'),_0x2ebaa7,_0x45db('0x14'));_0x4472ae(_0x468ca7[_0x45db('0x15')][_0x45db('0x13')]);}})[_0x45db('0x16')](function(_0x27a7bc){logger[_0x45db('0x11')](_0x45db('0xd'),_0x2ebaa7,_0x27a7bc);_0x20f171(_0x27a7bc);});});}
\ No newline at end of file
+var _0x3d96=['rpc','jayson/promise','http','request','then','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5f025e,_0x463bee){var _0x559540=function(_0x5afd34){while(--_0x5afd34){_0x5f025e['push'](_0x5f025e['shift']());}};_0x559540(++_0x463bee);}(_0x3d96,0xaf));var _0x63d9=function(_0x1df8df,_0xc945){_0x1df8df=_0x1df8df-0x0;var _0x3517e6=_0x3d96[_0x1df8df];return _0x3517e6;};'use strict';var _=require(_0x63d9('0x0'));var util=require(_0x63d9('0x1'));var moment=require(_0x63d9('0x2'));var BPromise=require(_0x63d9('0x3'));var rs=require(_0x63d9('0x4'));var fs=require('fs');var Redis=require(_0x63d9('0x5'));var db=require(_0x63d9('0x6'))['db'];var utils=require(_0x63d9('0x7'));var logger=require(_0x63d9('0x8'))(_0x63d9('0x9'));var config=require('../../config/environment');var jayson=require(_0x63d9('0xa'));var client=jayson['client'][_0x63d9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x36acfd,_0x150675,_0x3fa84a){return new BPromise(function(_0x21cb4d,_0x2c9ee8){return client[_0x63d9('0xc')](_0x36acfd,_0x3fa84a)[_0x63d9('0xd')](function(_0x35fedc){logger['info'](_0x63d9('0xe'),_0x150675,_0x63d9('0xf'));logger[_0x63d9('0x10')](_0x63d9('0x11'),_0x150675,_0x63d9('0xf'),JSON['stringify'](_0x35fedc));if(_0x35fedc[_0x63d9('0x12')]){if(_0x35fedc['error'][_0x63d9('0x13')]===0x1f4){logger[_0x63d9('0x12')]('Condition,\x20%s,\x20%s',_0x150675,_0x35fedc[_0x63d9('0x12')][_0x63d9('0x14')]);return _0x2c9ee8(_0x35fedc['error'][_0x63d9('0x14')]);}logger[_0x63d9('0x12')](_0x63d9('0xe'),_0x150675,_0x35fedc[_0x63d9('0x12')][_0x63d9('0x14')]);return _0x21cb4d(_0x35fedc[_0x63d9('0x12')][_0x63d9('0x14')]);}else{logger[_0x63d9('0x15')](_0x63d9('0xe'),_0x150675,_0x63d9('0xf'));_0x21cb4d(_0x35fedc[_0x63d9('0x16')][_0x63d9('0x14')]);}})['catch'](function(_0x377654){logger[_0x63d9('0x12')](_0x63d9('0xe'),_0x150675,_0x377654);_0x2c9ee8(_0x377654);});});}
\ No newline at end of file
index 8206d7a..40221b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58da=['../../components/interaction/service','../../config/environment','/:id','isAuthenticated','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service'];(function(_0x7d8569,_0x2810c8){var _0x1b7291=function(_0x59fa3){while(--_0x59fa3){_0x7d8569['push'](_0x7d8569['shift']());}};_0x1b7291(++_0x2810c8);}(_0x58da,0xcb));var _0xa58d=function(_0x185746,_0x139349){_0x185746=_0x185746-0x0;var _0xfe27ed=_0x58da[_0x185746];return _0xfe27ed;};'use strict';var multer=require(_0xa58d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa58d('0x1'));var router=express[_0xa58d('0x2')]();var fs_extra=require(_0xa58d('0x3'));var auth=require(_0xa58d('0x4'));var interaction=require(_0xa58d('0x5'));var config=require(_0xa58d('0x6'));var controller=require('./condition.controller');router['put'](_0xa58d('0x7'),auth[_0xa58d('0x8')](),controller[_0xa58d('0x9')]);router[_0xa58d('0xa')](_0xa58d('0x7'),auth[_0xa58d('0x8')](),controller[_0xa58d('0xb')]);module[_0xa58d('0xc')]=router;
\ No newline at end of file
+var _0x0c6a=['isAuthenticated','/:id','exports','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./condition.controller'];(function(_0x54325b,_0x30c6ea){var _0x1525e5=function(_0x31e7a6){while(--_0x31e7a6){_0x54325b['push'](_0x54325b['shift']());}};_0x1525e5(++_0x30c6ea);}(_0x0c6a,0x157));var _0xa0c6=function(_0x354d04,_0x2b4aa3){_0x354d04=_0x354d04-0x0;var _0x51eb0b=_0x0c6a[_0x354d04];return _0x51eb0b;};'use strict';var multer=require('multer');var util=require(_0xa0c6('0x0'));var path=require('path');var timeout=require(_0xa0c6('0x1'));var express=require('express');var router=express[_0xa0c6('0x2')]();var fs_extra=require(_0xa0c6('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa0c6('0x4'));var config=require(_0xa0c6('0x5'));var controller=require(_0xa0c6('0x6'));router['put']('/:id',auth[_0xa0c6('0x7')](),controller['update']);router['delete'](_0xa0c6('0x8'),auth[_0xa0c6('0x7')](),controller['destroy']);module[_0xa0c6('0x9')]=router;
\ No newline at end of file
index bfe7635..45d477e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0x574088,_0x11d0cd){var _0xc563c8=function(_0x31faf5){while(--_0x31faf5){_0x574088['push'](_0x574088['shift']());}};_0xc563c8(++_0x11d0cd);}(_0xb10b,0x12a));var _0xbb10=function(_0x4c4a8b,_0x402020){_0x4c4a8b=_0x4c4a8b-0x0;var _0x20fa14=_0xb10b[_0x4c4a8b];return _0x20fa14;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
+var _0x757a=['exports','STRING'];(function(_0x350064,_0x3cda38){var _0x4ce37b=function(_0x4e155b){while(--_0x4e155b){_0x350064['push'](_0x350064['shift']());}};_0x4ce37b(++_0x3cda38);}(_0x757a,0xde));var _0xa757=function(_0x4d1b78,_0x4b1a04){_0x4d1b78=_0x4d1b78-0x0;var _0x499e58=_0x757a[_0x4d1b78];return _0x499e58;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ad2b72d..4170d39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c3a=['getItems','findOne','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomDashboards','error','stack','name','index','rawAttributes','fieldName','key','model','map','keys','filters','intersection','fields','query','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','Dashboard','includeAll','include','findAll','rows','show','params','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','updatedAt','omit','body','createdAt','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3c3a,0x180));var _0xa3c3=function(_0x593ee1,_0x55167f){_0x593ee1=_0x593ee1-0x0;var _0x1d2613=_0x3c3a[_0x593ee1];return _0x1d2613;};'use strict';var emlformat=require(_0xa3c3('0x0'));var rimraf=require(_0xa3c3('0x1'));var zipdir=require(_0xa3c3('0x2'));var jsonpatch=require(_0xa3c3('0x3'));var rp=require(_0xa3c3('0x4'));var moment=require(_0xa3c3('0x5'));var BPromise=require(_0xa3c3('0x6'));var Mustache=require('mustache');var util=require(_0xa3c3('0x7'));var path=require(_0xa3c3('0x8'));var sox=require(_0xa3c3('0x9'));var csv=require(_0xa3c3('0xa'));var ejs=require(_0xa3c3('0xb'));var fs=require('fs');var fs_extra=require(_0xa3c3('0xc'));var _=require('lodash');var squel=require(_0xa3c3('0xd'));var crypto=require(_0xa3c3('0xe'));var jsforce=require(_0xa3c3('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa3c3('0x10'));var Papa=require('papaparse');var Redis=require(_0xa3c3('0x11'));var authService=require(_0xa3c3('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xa3c3('0x13'));var hardwareService=require(_0xa3c3('0x14'));var logger=require(_0xa3c3('0x15'))(_0xa3c3('0x16'));var utils=require('../../config/utils');var config=require(_0xa3c3('0x17'));var licenseUtil=require(_0xa3c3('0x18'));var db=require(_0xa3c3('0x19'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xa3c3('0x1a'),'port':0x18eb});var socket=require(_0xa3c3('0x1b'))(new Redis(config['redis']));require(_0xa3c3('0x1c'))[_0xa3c3('0x1d')](socket);function respondWithStatusCode(_0x29073c,_0x1c10aa){_0x1c10aa=_0x1c10aa||0xcc;return function(_0x24068e){if(_0x24068e){return _0x29073c[_0xa3c3('0x1e')](_0x1c10aa);}return _0x29073c[_0xa3c3('0x1f')](_0x1c10aa)[_0xa3c3('0x20')]();};}function respondWithResult(_0x150183,_0x3a9471){_0x3a9471=_0x3a9471||0xc8;return function(_0x591b13){if(_0x591b13){return _0x150183[_0xa3c3('0x1f')](_0x3a9471)[_0xa3c3('0x21')](_0x591b13);}};}function respondWithFilteredResult(_0x3c849a,_0x3ec957){return function(_0x591897){if(_0x591897){var _0x2c079e=typeof _0x3ec957[_0xa3c3('0x22')]===_0xa3c3('0x23')&&typeof _0x3ec957[_0xa3c3('0x24')]==='undefined';var _0x279ee8=_0x591897[_0xa3c3('0x25')];var _0x1e3287=_0x2c079e?0x0:_0x3ec957[_0xa3c3('0x22')];var _0x1d02a1=_0x2c079e?_0x591897[_0xa3c3('0x25')]:_0x3ec957['offset']+_0x3ec957['limit'];var _0x3d93e4;if(_0x1d02a1>=_0x279ee8){_0x1d02a1=_0x279ee8;_0x3d93e4=0xc8;}else{_0x3d93e4=0xce;}_0x3c849a['status'](_0x3d93e4);return _0x3c849a[_0xa3c3('0x26')](_0xa3c3('0x27'),_0x1e3287+'-'+_0x1d02a1+'/'+_0x279ee8)[_0xa3c3('0x21')](_0x591897);}return null;};}function patchUpdates(_0x132e62){return function(_0x133c80){try{jsonpatch[_0xa3c3('0x28')](_0x133c80,_0x132e62,!![]);}catch(_0x36be91){return BPromise[_0xa3c3('0x29')](_0x36be91);}return _0x133c80[_0xa3c3('0x2a')]();};}function saveUpdates(_0x4527fc,_0x1892ac){return function(_0x57da6c){if(_0x57da6c){return _0x57da6c[_0xa3c3('0x2b')](_0x4527fc)[_0xa3c3('0x2c')](function(_0x43142d){return _0x43142d;});}return null;};}function removeEntity(_0x29dc99,_0x3e70bf){return function(_0x443c3a){if(_0x443c3a){return _0x443c3a[_0xa3c3('0x2d')]()['then'](function(){var _0x3bfa4f=_0x443c3a[_0xa3c3('0x2e')]({'plain':!![]});var _0x2022aa=_0xa3c3('0x2f');return db['UserProfileResource'][_0xa3c3('0x2d')]({'where':{'type':_0x2022aa,'resourceId':_0x3bfa4f['id']}})['then'](function(){return _0x443c3a;});})[_0xa3c3('0x2c')](function(){_0x29dc99[_0xa3c3('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24b905,_0x58492c){return function(_0x310475){if(!_0x310475){_0x24b905[_0xa3c3('0x1e')](0x194);}return _0x310475;};}function handleError(_0x37ba02,_0x21d1a9){_0x21d1a9=_0x21d1a9||0x1f4;return function(_0xde644f){logger[_0xa3c3('0x30')](_0xde644f[_0xa3c3('0x31')]);if(_0xde644f[_0xa3c3('0x32')]){delete _0xde644f[_0xa3c3('0x32')];}_0x37ba02[_0xa3c3('0x1f')](_0x21d1a9)['send'](_0xde644f);};}exports[_0xa3c3('0x33')]=function(_0x30a70d,_0x24fba1){var _0x35ca11={},_0x23f9d4={},_0x279a59={'count':0x0,'rows':[]};var _0x3d3237=_['map'](db['Dashboard'][_0xa3c3('0x34')],function(_0x58345f){return{'name':_0x58345f[_0xa3c3('0x35')],'type':_0x58345f['type'][_0xa3c3('0x36')]};});_0x23f9d4[_0xa3c3('0x37')]=_[_0xa3c3('0x38')](_0x3d3237,'name');_0x23f9d4['query']=_[_0xa3c3('0x39')](_0x30a70d['query']);_0x23f9d4[_0xa3c3('0x3a')]=_[_0xa3c3('0x3b')](_0x23f9d4[_0xa3c3('0x37')],_0x23f9d4['query']);_0x35ca11['attributes']=_[_0xa3c3('0x3b')](_0x23f9d4[_0xa3c3('0x37')],qs[_0xa3c3('0x3c')](_0x30a70d[_0xa3c3('0x3d')][_0xa3c3('0x3c')]));_0x35ca11[_0xa3c3('0x3e')]=_0x35ca11['attributes'][_0xa3c3('0x3f')]?_0x35ca11[_0xa3c3('0x3e')]:_0x23f9d4[_0xa3c3('0x37')];if(!_0x30a70d[_0xa3c3('0x3d')][_0xa3c3('0x40')]('nolimit')){_0x35ca11[_0xa3c3('0x24')]=qs['limit'](_0x30a70d[_0xa3c3('0x3d')][_0xa3c3('0x24')]);_0x35ca11['offset']=qs[_0xa3c3('0x22')](_0x30a70d[_0xa3c3('0x3d')][_0xa3c3('0x22')]);}_0x35ca11[_0xa3c3('0x41')]=qs['sort'](_0x30a70d[_0xa3c3('0x3d')][_0xa3c3('0x42')]);_0x35ca11[_0xa3c3('0x43')]=qs[_0xa3c3('0x3a')](_[_0xa3c3('0x44')](_0x30a70d[_0xa3c3('0x3d')],_0x23f9d4['filters']),_0x3d3237);if(_0x30a70d[_0xa3c3('0x3d')][_0xa3c3('0x45')]){_0x35ca11[_0xa3c3('0x43')]=_[_0xa3c3('0x46')](_0x35ca11[_0xa3c3('0x43')],{'$or':_[_0xa3c3('0x38')](_0x3d3237,function(_0x4cd625){if(_0x4cd625[_0xa3c3('0x47')]!=='VIRTUAL'){var _0x3a1ea3={};_0x3a1ea3[_0x4cd625[_0xa3c3('0x32')]]={'$like':'%'+_0x30a70d[_0xa3c3('0x3d')][_0xa3c3('0x45')]+'%'};return _0x3a1ea3;}})});}_0x35ca11=_['merge']({},_0x35ca11,_0x30a70d['options']);var _0x347460={'where':_0x35ca11[_0xa3c3('0x43')]};return db[_0xa3c3('0x48')][_0xa3c3('0x25')](_0x347460)[_0xa3c3('0x2c')](function(_0x49dc05){_0x279a59[_0xa3c3('0x25')]=_0x49dc05;if(_0x30a70d['query'][_0xa3c3('0x49')]){_0x35ca11[_0xa3c3('0x4a')]=[{'all':!![]}];}return db['Dashboard'][_0xa3c3('0x4b')](_0x35ca11);})[_0xa3c3('0x2c')](function(_0xa6a283){_0x279a59[_0xa3c3('0x4c')]=_0xa6a283;return _0x279a59;})[_0xa3c3('0x2c')](respondWithFilteredResult(_0x24fba1,_0x35ca11))['catch'](handleError(_0x24fba1,null));};exports[_0xa3c3('0x4d')]=function(_0x21e49c,_0x255cf6){var _0x2d87f4={'raw':![],'where':{'id':_0x21e49c[_0xa3c3('0x4e')]['id']}},_0x45f5cb={};_0x45f5cb[_0xa3c3('0x37')]=_[_0xa3c3('0x39')](db[_0xa3c3('0x48')][_0xa3c3('0x34')]);_0x45f5cb[_0xa3c3('0x3d')]=_[_0xa3c3('0x39')](_0x21e49c['query']);_0x45f5cb[_0xa3c3('0x3a')]=_[_0xa3c3('0x3b')](_0x45f5cb[_0xa3c3('0x37')],_0x45f5cb[_0xa3c3('0x3d')]);_0x2d87f4[_0xa3c3('0x3e')]=_[_0xa3c3('0x3b')](_0x45f5cb[_0xa3c3('0x37')],qs[_0xa3c3('0x3c')](_0x21e49c[_0xa3c3('0x3d')][_0xa3c3('0x3c')]));_0x2d87f4['attributes']=_0x2d87f4['attributes']['length']?_0x2d87f4[_0xa3c3('0x3e')]:_0x45f5cb[_0xa3c3('0x37')];if(_0x21e49c['query'][_0xa3c3('0x49')]){_0x2d87f4['include']=[{'all':!![]}];}_0x2d87f4=_[_0xa3c3('0x46')]({},_0x2d87f4,_0x21e49c['options']);return db['Dashboard']['find'](_0x2d87f4)['then'](handleEntityNotFound(_0x255cf6,null))[_0xa3c3('0x2c')](respondWithResult(_0x255cf6,null))['catch'](handleError(_0x255cf6,null));};exports[_0xa3c3('0x4f')]=function(_0x3f1b62,_0x2ac61e){return db['Dashboard'][_0xa3c3('0x4f')](_0x3f1b62['body'],{})['then'](function(_0x27402c){var _0x3f922a=_0x3f1b62[_0xa3c3('0x50')][_0xa3c3('0x2e')]({'plain':!![]});if(!_0x3f922a)throw new Error(_0xa3c3('0x51'));if(_0x3f922a[_0xa3c3('0x52')]===_0xa3c3('0x50')){var _0x478c33=_0x27402c[_0xa3c3('0x2e')]({'plain':!![]});var _0x157413=_0xa3c3('0x2f');return db[_0xa3c3('0x53')][_0xa3c3('0x54')]({'where':{'name':_0x157413,'userProfileId':_0x3f922a[_0xa3c3('0x55')]},'raw':!![]})['then'](function(_0x125f44){if(_0x125f44&&_0x125f44[_0xa3c3('0x56')]===0x0){return db[_0xa3c3('0x57')][_0xa3c3('0x4f')]({'name':_0x478c33[_0xa3c3('0x32')],'resourceId':_0x478c33['id'],'type':_0x125f44['name'],'sectionId':_0x125f44['id']},{})[_0xa3c3('0x2c')](function(){return _0x27402c;});}else{return _0x27402c;}})[_0xa3c3('0x58')](function(_0x52dd42){logger[_0xa3c3('0x30')](_0xa3c3('0x59'),_0x52dd42);throw _0x52dd42;});}return _0x27402c;})[_0xa3c3('0x2c')](respondWithResult(_0x2ac61e,0xc9))[_0xa3c3('0x58')](handleError(_0x2ac61e,null));};exports['clone']=function(_0x6fb8e3,_0x792362){var _0x505d7={'where':{'id':_0x6fb8e3[_0xa3c3('0x4e')]['id']}},_0x2d11f7={};_0x2d11f7['model']=_[_0xa3c3('0x39')](db[_0xa3c3('0x48')][_0xa3c3('0x34')]);_0x505d7[_0xa3c3('0x3e')]=_[_0xa3c3('0x3b')](_0x2d11f7['model'],qs[_0xa3c3('0x3c')](_0x6fb8e3[_0xa3c3('0x3d')]['fields']));_0x505d7['attributes']=_0x505d7[_0xa3c3('0x3e')][_0xa3c3('0x3f')]?_0x505d7[_0xa3c3('0x3e')]:_0x2d11f7[_0xa3c3('0x37')];if(_0x6fb8e3[_0xa3c3('0x3d')]['includeAll']){_0x505d7[_0xa3c3('0x4a')]=[{'all':!![]}];}_0x505d7=_[_0xa3c3('0x46')]({},_0x505d7,_0x6fb8e3['options']);return db[_0xa3c3('0x48')][_0xa3c3('0x54')](_0x505d7)[_0xa3c3('0x2c')](handleEntityNotFound(_0x792362,null))[_0xa3c3('0x2c')](function(_0x3fe448){if(_0x3fe448){var _0x42599a=_0x3fe448[_0xa3c3('0x2e')]({'plain':!![]});_0x42599a=qs['omit'](_0x42599a,['id','createdAt',_0xa3c3('0x5a')]);_0x6fb8e3['body']=_[_0xa3c3('0x5b')](_0x6fb8e3[_0xa3c3('0x5c')],['id',_0xa3c3('0x5d'),_0xa3c3('0x5a')]);return db[_0xa3c3('0x48')][_0xa3c3('0x4f')](_['merge'](_0x42599a,_0x6fb8e3[_0xa3c3('0x5c')]),{'include':_0x6fb8e3['query']['includeAll']?[{'all':!![]}]:undefined})[_0xa3c3('0x2c')](function(_0x805a6f){var _0x5d41d1=_0x6fb8e3['user']['get']({'plain':!![]});if(!_0x5d41d1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5d41d1[_0xa3c3('0x52')]===_0xa3c3('0x50')){var _0x2bd92d=_0x805a6f[_0xa3c3('0x2e')]({'plain':!![]});var _0x46e8b7=_0xa3c3('0x2f');return db[_0xa3c3('0x53')]['find']({'where':{'name':_0x46e8b7,'userProfileId':_0x5d41d1['userProfileId']},'raw':!![]})[_0xa3c3('0x2c')](function(_0x1c29f5){if(_0x1c29f5&&_0x1c29f5[_0xa3c3('0x56')]===0x0){return db['UserProfileResource'][_0xa3c3('0x4f')]({'name':_0x2bd92d['name'],'resourceId':_0x2bd92d['id'],'type':_0x1c29f5['name'],'sectionId':_0x1c29f5['id']},{})['then'](function(){return _0x805a6f;});}else{return _0x805a6f;}})[_0xa3c3('0x58')](function(_0x5f12e0){logger[_0xa3c3('0x30')](_0xa3c3('0x59'),_0x5f12e0);throw _0x5f12e0;});}return _0x805a6f;});}})[_0xa3c3('0x2c')](respondWithResult(_0x792362,0xc9))[_0xa3c3('0x58')](handleError(_0x792362,null));};exports[_0xa3c3('0x2b')]=function(_0xb8aa85,_0x1139c3){if(_0xb8aa85[_0xa3c3('0x5c')]['id']){delete _0xb8aa85[_0xa3c3('0x5c')]['id'];}return db['Dashboard']['find']({'where':{'id':_0xb8aa85['params']['id']}})[_0xa3c3('0x2c')](handleEntityNotFound(_0x1139c3,null))[_0xa3c3('0x2c')](saveUpdates(_0xb8aa85[_0xa3c3('0x5c')],null))['then'](respondWithResult(_0x1139c3,null))[_0xa3c3('0x58')](handleError(_0x1139c3,null));};exports[_0xa3c3('0x2d')]=function(_0x3afc60,_0x298734){return db['Dashboard']['find']({'where':{'id':_0x3afc60[_0xa3c3('0x4e')]['id']}})[_0xa3c3('0x2c')](handleEntityNotFound(_0x298734,null))['then'](removeEntity(_0x298734,null))[_0xa3c3('0x58')](handleError(_0x298734,null));};function widgetAttributes(_0x3c1133){try{switch(_0x3c1133['type']){case _0xa3c3('0x5e'):return[{'name':_0xa3c3('0x5f'),'value':_0x3c1133[_0xa3c3('0x5f')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133[_0xa3c3('0x60')][0x0]?_0x3c1133['attrs'][0x0][_0xa3c3('0x61')]:undefined)||_0xa3c3('0x62')}];case _0xa3c3('0x63'):return[{'name':_0xa3c3('0x64'),'value':_0x3c1133[_0xa3c3('0x64')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133[_0xa3c3('0x60')][0x0]?_0x3c1133[_0xa3c3('0x60')][0x0][_0xa3c3('0x61')]:undefined)||''}];case _0xa3c3('0x65'):return[{'name':_0xa3c3('0x66'),'value':_0x3c1133[_0xa3c3('0x66')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133[_0xa3c3('0x60')][0x0]?_0x3c1133['attrs'][0x0][_0xa3c3('0x61')]:undefined)||_0xa3c3('0x67')},{'name':_0xa3c3('0x68'),'value':_0x3c1133[_0xa3c3('0x68')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133['attrs'][0x1]?_0x3c1133[_0xa3c3('0x60')][0x1][_0xa3c3('0x61')]:undefined)||_0xa3c3('0x69')},{'name':'attrFontSize','value':_0x3c1133[_0xa3c3('0x6a')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133[_0xa3c3('0x60')][0x2]?_0x3c1133[_0xa3c3('0x60')][0x2][_0xa3c3('0x61')]:undefined)||0xc}];case _0xa3c3('0x6b'):return[{'name':_0xa3c3('0x6c'),'value':_0x3c1133[_0xa3c3('0x6c')]||(_0x3c1133['attrs']&&_0x3c1133[_0xa3c3('0x60')][0x0]?_0x3c1133[_0xa3c3('0x60')][0x0][_0xa3c3('0x61')]:undefined)||_0xa3c3('0x6d')},{'name':_0xa3c3('0x6e'),'value':_0x3c1133[_0xa3c3('0x6e')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133[_0xa3c3('0x60')][0x1]?_0x3c1133[_0xa3c3('0x60')][0x1][_0xa3c3('0x61')]:undefined)||[]},{'name':_0xa3c3('0x6a'),'value':_0x3c1133[_0xa3c3('0x6a')]||(_0x3c1133['attrs']&&_0x3c1133[_0xa3c3('0x60')][0x2]?_0x3c1133[_0xa3c3('0x60')][0x2][_0xa3c3('0x61')]:undefined)||0x14}];case _0xa3c3('0x6f'):case'pie-chart':return[{'name':_0xa3c3('0x70'),'value':_0x3c1133[_0xa3c3('0x70')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133['attrs'][0x0]?_0x3c1133[_0xa3c3('0x60')][0x0][_0xa3c3('0x61')]:undefined)||_0xa3c3('0x6d')},{'name':_0xa3c3('0x71'),'value':_0x3c1133[_0xa3c3('0x71')]||(_0x3c1133['attrs']&&_0x3c1133[_0xa3c3('0x60')][0x1]?_0x3c1133['attrs'][0x1][_0xa3c3('0x61')]:undefined)||null},{'name':'attrSerie3','value':_0x3c1133[_0xa3c3('0x72')]||(_0x3c1133['attrs']&&_0x3c1133[_0xa3c3('0x60')][0x2]?_0x3c1133['attrs'][0x2][_0xa3c3('0x61')]:undefined)||null},{'name':_0xa3c3('0x6e'),'value':_0x3c1133[_0xa3c3('0x6e')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133[_0xa3c3('0x60')][0x3]?_0x3c1133[_0xa3c3('0x60')][0x3]['value']:undefined)||[]}];case _0xa3c3('0x73'):return[{'name':_0xa3c3('0x74'),'type':_0x3c1133[_0xa3c3('0x75')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133['attrs'][0x0]?_0x3c1133['attrs'][0x0][_0xa3c3('0x47')]:undefined)||null,'value':_0x3c1133[_0xa3c3('0x74')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133['attrs'][0x0]?_0x3c1133[_0xa3c3('0x60')][0x0][_0xa3c3('0x61')]:undefined)||null},{'name':'attrRefresh','value':_0x3c1133[_0xa3c3('0x76')]||(_0x3c1133[_0xa3c3('0x60')]&&_0x3c1133[_0xa3c3('0x60')][0x1]?_0x3c1133[_0xa3c3('0x60')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x180ad3){logger[_0xa3c3('0x30')](_0xa3c3('0x77'),JSON[_0xa3c3('0x78')](_0x180ad3));return[];}}exports[_0xa3c3('0x79')]=function(_0x442661,_0xa96f97,_0x42cec0){if(_0x442661[_0xa3c3('0x5c')]['id']){delete _0x442661[_0xa3c3('0x5c')]['id'];}return db[_0xa3c3('0x48')][_0xa3c3('0x54')]({'where':{'id':_0x442661[_0xa3c3('0x4e')]['id']}})[_0xa3c3('0x2c')](handleEntityNotFound(_0xa96f97,null))[_0xa3c3('0x2c')](function(_0x1de6e0){if(_0x1de6e0){_0x442661[_0xa3c3('0x5c')][_0xa3c3('0x7a')]=_0x1de6e0['id'];_0x442661[_0xa3c3('0x5c')][_0xa3c3('0x60')]=widgetAttributes(_0x442661[_0xa3c3('0x5c')]);return db[_0xa3c3('0x7b')][_0xa3c3('0x4f')](_0x442661[_0xa3c3('0x5c')]);}})[_0xa3c3('0x2c')](respondWithResult(_0xa96f97,null))['catch'](handleError(_0xa96f97,null));};exports[_0xa3c3('0x7c')]=function(_0x3a3d64,_0x3b2111,_0x43c9d1){var _0x15cbe8={};var _0x33101f={};var _0x12d029;var _0x2a2d22;return db['Dashboard'][_0xa3c3('0x7d')]({'where':{'id':_0x3a3d64[_0xa3c3('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3b2111,null))[_0xa3c3('0x2c')](function(_0x5b90a7){if(_0x5b90a7){_0x12d029=_0x5b90a7;_0x33101f[_0xa3c3('0x37')]=_[_0xa3c3('0x39')](db[_0xa3c3('0x7b')][_0xa3c3('0x34')]);_0x33101f[_0xa3c3('0x3d')]=_[_0xa3c3('0x39')](_0x3a3d64[_0xa3c3('0x3d')]);_0x33101f[_0xa3c3('0x3a')]=_[_0xa3c3('0x3b')](_0x33101f[_0xa3c3('0x37')],_0x33101f[_0xa3c3('0x3d')]);_0x15cbe8[_0xa3c3('0x3e')]=_[_0xa3c3('0x3b')](_0x33101f[_0xa3c3('0x37')],qs[_0xa3c3('0x3c')](_0x3a3d64[_0xa3c3('0x3d')][_0xa3c3('0x3c')]));_0x15cbe8[_0xa3c3('0x3e')]=_0x15cbe8[_0xa3c3('0x3e')][_0xa3c3('0x3f')]?_0x15cbe8[_0xa3c3('0x3e')]:_0x33101f[_0xa3c3('0x37')];_0x15cbe8[_0xa3c3('0x41')]=qs[_0xa3c3('0x42')](_0x3a3d64[_0xa3c3('0x3d')][_0xa3c3('0x42')]);_0x15cbe8[_0xa3c3('0x43')]=qs['filters'](_[_0xa3c3('0x44')](_0x3a3d64[_0xa3c3('0x3d')],_0x33101f['filters']));if(_0x3a3d64['query']['filter']){_0x15cbe8[_0xa3c3('0x43')]=_['merge'](_0x15cbe8[_0xa3c3('0x43')],{'$or':_[_0xa3c3('0x38')](_0x15cbe8[_0xa3c3('0x3e')],function(_0x23ee3f){var _0x4a6557={};_0x4a6557[_0x23ee3f]={'$like':'%'+_0x3a3d64[_0xa3c3('0x3d')]['filter']+'%'};return _0x4a6557;})});}_0x15cbe8=_['merge']({},_0x15cbe8,_0x3a3d64['options']);return _0x12d029[_0xa3c3('0x7c')](_0x15cbe8);}})[_0xa3c3('0x2c')](function(_0x5cfd8f){if(_0x5cfd8f){_0x2a2d22=_0x5cfd8f[_0xa3c3('0x3f')];if(!_0x3a3d64[_0xa3c3('0x3d')][_0xa3c3('0x40')](_0xa3c3('0x7e'))){_0x15cbe8[_0xa3c3('0x24')]=qs['limit'](_0x3a3d64['query'][_0xa3c3('0x24')]);_0x15cbe8['offset']=qs[_0xa3c3('0x22')](_0x3a3d64[_0xa3c3('0x3d')]['offset']);}return _0x12d029[_0xa3c3('0x7c')](_0x15cbe8);}})[_0xa3c3('0x2c')](function(_0x266688){if(_0x266688){return _0x266688?{'count':_0x2a2d22,'rows':_0x266688}:null;}})[_0xa3c3('0x2c')](respondWithResult(_0x3b2111,null))[_0xa3c3('0x58')](handleError(_0x3b2111,null));};
\ No newline at end of file
+var _0x3cc9=['create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','autoAssociation','iframe','attrUrl','attrs','https://','custom','attrPath','value','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','DashboardItem','getItems','order','hasOwnProperty','nolimit','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./dashboard.socket','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','save','update','destroy','get','CustomDashboards','UserProfileResource','then','error','stack','name','send','index','map','Dashboard','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','limit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','rawAttributes','find'];(function(_0x296c0a,_0xf78c8b){var _0x2d5e2d=function(_0x1896c0){while(--_0x1896c0){_0x296c0a['push'](_0x296c0a['shift']());}};_0x2d5e2d(++_0xf78c8b);}(_0x3cc9,0x120));var _0x93cc=function(_0x40e3fa,_0x4d33e2){_0x40e3fa=_0x40e3fa-0x0;var _0x157fd2=_0x3cc9[_0x40e3fa];return _0x157fd2;};'use strict';var emlformat=require(_0x93cc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x93cc('0x1'));var jsonpatch=require(_0x93cc('0x2'));var rp=require(_0x93cc('0x3'));var moment=require(_0x93cc('0x4'));var BPromise=require(_0x93cc('0x5'));var Mustache=require(_0x93cc('0x6'));var util=require(_0x93cc('0x7'));var path=require(_0x93cc('0x8'));var sox=require(_0x93cc('0x9'));var csv=require(_0x93cc('0xa'));var ejs=require(_0x93cc('0xb'));var fs=require('fs');var fs_extra=require(_0x93cc('0xc'));var _=require(_0x93cc('0xd'));var squel=require(_0x93cc('0xe'));var crypto=require(_0x93cc('0xf'));var jsforce=require(_0x93cc('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x93cc('0xa'));var querystring=require(_0x93cc('0x11'));var Papa=require(_0x93cc('0x12'));var Redis=require('ioredis');var authService=require(_0x93cc('0x13'));var qs=require(_0x93cc('0x14'));var as=require(_0x93cc('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x93cc('0x16'))(_0x93cc('0x17'));var utils=require('../../config/utils');var config=require(_0x93cc('0x18'));var licenseUtil=require(_0x93cc('0x19'));var db=require(_0x93cc('0x1a'))['db'];config['redis']=_[_0x93cc('0x1b')](config[_0x93cc('0x1c')],{'host':_0x93cc('0x1d'),'port':0x18eb});var socket=require(_0x93cc('0x1e'))(new Redis(config[_0x93cc('0x1c')]));require(_0x93cc('0x1f'))['register'](socket);function respondWithStatusCode(_0x3366b6,_0x29b51f){_0x29b51f=_0x29b51f||0xcc;return function(_0x30736e){if(_0x30736e){return _0x3366b6[_0x93cc('0x20')](_0x29b51f);}return _0x3366b6[_0x93cc('0x21')](_0x29b51f)['end']();};}function respondWithResult(_0x52b185,_0x4de8d2){_0x4de8d2=_0x4de8d2||0xc8;return function(_0x3174a0){if(_0x3174a0){return _0x52b185['status'](_0x4de8d2)[_0x93cc('0x22')](_0x3174a0);}};}function respondWithFilteredResult(_0x8fa26f,_0x4a7a75){return function(_0x2941b9){if(_0x2941b9){var _0x359bce=typeof _0x4a7a75[_0x93cc('0x23')]===_0x93cc('0x24')&&typeof _0x4a7a75['limit']==='undefined';var _0x29ded7=_0x2941b9[_0x93cc('0x25')];var _0x8c6c16=_0x359bce?0x0:_0x4a7a75[_0x93cc('0x23')];var _0xb0ace3=_0x359bce?_0x2941b9['count']:_0x4a7a75[_0x93cc('0x23')]+_0x4a7a75['limit'];var _0x51ce18;if(_0xb0ace3>=_0x29ded7){_0xb0ace3=_0x29ded7;_0x51ce18=0xc8;}else{_0x51ce18=0xce;}_0x8fa26f[_0x93cc('0x21')](_0x51ce18);return _0x8fa26f[_0x93cc('0x26')](_0x93cc('0x27'),_0x8c6c16+'-'+_0xb0ace3+'/'+_0x29ded7)['json'](_0x2941b9);}return null;};}function patchUpdates(_0x433195){return function(_0x4ff4da){try{jsonpatch[_0x93cc('0x28')](_0x4ff4da,_0x433195,!![]);}catch(_0x561515){return BPromise['reject'](_0x561515);}return _0x4ff4da[_0x93cc('0x29')]();};}function saveUpdates(_0x135d45,_0x550082){return function(_0x5eaf8d){if(_0x5eaf8d){return _0x5eaf8d[_0x93cc('0x2a')](_0x135d45)['then'](function(_0x7571ff){return _0x7571ff;});}return null;};}function removeEntity(_0x476f5f,_0x11eb35){return function(_0x37939a){if(_0x37939a){return _0x37939a[_0x93cc('0x2b')]()['then'](function(){var _0x33beb5=_0x37939a[_0x93cc('0x2c')]({'plain':!![]});var _0x52d5a1=_0x93cc('0x2d');return db[_0x93cc('0x2e')][_0x93cc('0x2b')]({'where':{'type':_0x52d5a1,'resourceId':_0x33beb5['id']}})['then'](function(){return _0x37939a;});})[_0x93cc('0x2f')](function(){_0x476f5f[_0x93cc('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd3d46a,_0x1885fc){return function(_0x1de21a){if(!_0x1de21a){_0xd3d46a[_0x93cc('0x20')](0x194);}return _0x1de21a;};}function handleError(_0x3b70c2,_0x187317){_0x187317=_0x187317||0x1f4;return function(_0x62f133){logger[_0x93cc('0x30')](_0x62f133[_0x93cc('0x31')]);if(_0x62f133[_0x93cc('0x32')]){delete _0x62f133['name'];}_0x3b70c2[_0x93cc('0x21')](_0x187317)[_0x93cc('0x33')](_0x62f133);};}exports[_0x93cc('0x34')]=function(_0x24f003,_0x2bb15f){var _0x3b7c56={},_0x444353={},_0x387b74={'count':0x0,'rows':[]};var _0x413851=_[_0x93cc('0x35')](db[_0x93cc('0x36')]['rawAttributes'],function(_0x30bece){return{'name':_0x30bece[_0x93cc('0x37')],'type':_0x30bece[_0x93cc('0x38')][_0x93cc('0x39')]};});_0x444353['model']=_[_0x93cc('0x35')](_0x413851,_0x93cc('0x32'));_0x444353[_0x93cc('0x3a')]=_[_0x93cc('0x3b')](_0x24f003['query']);_0x444353[_0x93cc('0x3c')]=_[_0x93cc('0x3d')](_0x444353[_0x93cc('0x3e')],_0x444353[_0x93cc('0x3a')]);_0x3b7c56[_0x93cc('0x3f')]=_[_0x93cc('0x3d')](_0x444353['model'],qs[_0x93cc('0x40')](_0x24f003[_0x93cc('0x3a')][_0x93cc('0x40')]));_0x3b7c56[_0x93cc('0x3f')]=_0x3b7c56[_0x93cc('0x3f')][_0x93cc('0x41')]?_0x3b7c56[_0x93cc('0x3f')]:_0x444353[_0x93cc('0x3e')];if(!_0x24f003[_0x93cc('0x3a')]['hasOwnProperty']('nolimit')){_0x3b7c56['limit']=qs[_0x93cc('0x42')](_0x24f003[_0x93cc('0x3a')][_0x93cc('0x42')]);_0x3b7c56['offset']=qs[_0x93cc('0x23')](_0x24f003[_0x93cc('0x3a')][_0x93cc('0x23')]);}_0x3b7c56['order']=qs[_0x93cc('0x43')](_0x24f003[_0x93cc('0x3a')]['sort']);_0x3b7c56[_0x93cc('0x44')]=qs[_0x93cc('0x3c')](_[_0x93cc('0x45')](_0x24f003['query'],_0x444353[_0x93cc('0x3c')]),_0x413851);if(_0x24f003[_0x93cc('0x3a')][_0x93cc('0x46')]){_0x3b7c56['where']=_[_0x93cc('0x47')](_0x3b7c56[_0x93cc('0x44')],{'$or':_[_0x93cc('0x35')](_0x413851,function(_0x49625e){if(_0x49625e[_0x93cc('0x38')]!==_0x93cc('0x48')){var _0x46e296={};_0x46e296[_0x49625e[_0x93cc('0x32')]]={'$like':'%'+_0x24f003[_0x93cc('0x3a')][_0x93cc('0x46')]+'%'};return _0x46e296;}})});}_0x3b7c56=_['merge']({},_0x3b7c56,_0x24f003[_0x93cc('0x49')]);var _0x4404ca={'where':_0x3b7c56['where']};return db['Dashboard'][_0x93cc('0x25')](_0x4404ca)['then'](function(_0x175890){_0x387b74['count']=_0x175890;if(_0x24f003[_0x93cc('0x3a')][_0x93cc('0x4a')]){_0x3b7c56[_0x93cc('0x4b')]=[{'all':!![]}];}return db[_0x93cc('0x36')]['findAll'](_0x3b7c56);})['then'](function(_0x2cc2fd){_0x387b74[_0x93cc('0x4c')]=_0x2cc2fd;return _0x387b74;})[_0x93cc('0x2f')](respondWithFilteredResult(_0x2bb15f,_0x3b7c56))[_0x93cc('0x4d')](handleError(_0x2bb15f,null));};exports['show']=function(_0x4051e7,_0x8a06ff){var _0x4a567b={'raw':![],'where':{'id':_0x4051e7[_0x93cc('0x4e')]['id']}},_0x370873={};_0x370873['model']=_[_0x93cc('0x3b')](db[_0x93cc('0x36')][_0x93cc('0x4f')]);_0x370873[_0x93cc('0x3a')]=_[_0x93cc('0x3b')](_0x4051e7['query']);_0x370873[_0x93cc('0x3c')]=_[_0x93cc('0x3d')](_0x370873[_0x93cc('0x3e')],_0x370873[_0x93cc('0x3a')]);_0x4a567b[_0x93cc('0x3f')]=_[_0x93cc('0x3d')](_0x370873[_0x93cc('0x3e')],qs[_0x93cc('0x40')](_0x4051e7[_0x93cc('0x3a')][_0x93cc('0x40')]));_0x4a567b[_0x93cc('0x3f')]=_0x4a567b[_0x93cc('0x3f')][_0x93cc('0x41')]?_0x4a567b[_0x93cc('0x3f')]:_0x370873[_0x93cc('0x3e')];if(_0x4051e7[_0x93cc('0x3a')][_0x93cc('0x4a')]){_0x4a567b[_0x93cc('0x4b')]=[{'all':!![]}];}_0x4a567b=_[_0x93cc('0x47')]({},_0x4a567b,_0x4051e7['options']);return db[_0x93cc('0x36')][_0x93cc('0x50')](_0x4a567b)['then'](handleEntityNotFound(_0x8a06ff,null))[_0x93cc('0x2f')](respondWithResult(_0x8a06ff,null))[_0x93cc('0x4d')](handleError(_0x8a06ff,null));};exports['create']=function(_0xf9a866,_0x52dc07){return db[_0x93cc('0x36')][_0x93cc('0x51')](_0xf9a866[_0x93cc('0x52')],{})[_0x93cc('0x2f')](function(_0x1be1da){var _0x28135a=_0xf9a866[_0x93cc('0x53')][_0x93cc('0x2c')]({'plain':!![]});if(!_0x28135a)throw new Error(_0x93cc('0x54'));if(_0x28135a[_0x93cc('0x55')]==='user'){var _0x245430=_0x1be1da['get']({'plain':!![]});var _0x316237=_0x93cc('0x2d');return db[_0x93cc('0x56')]['find']({'where':{'name':_0x316237,'userProfileId':_0x28135a[_0x93cc('0x57')]},'raw':!![]})[_0x93cc('0x2f')](function(_0x4fa653){if(_0x4fa653&&_0x4fa653['autoAssociation']===0x0){return db[_0x93cc('0x2e')]['create']({'name':_0x245430['name'],'resourceId':_0x245430['id'],'type':_0x4fa653['name'],'sectionId':_0x4fa653['id']},{})['then'](function(){return _0x1be1da;});}else{return _0x1be1da;}})[_0x93cc('0x4d')](function(_0x4ab79a){logger[_0x93cc('0x30')](_0x93cc('0x58'),_0x4ab79a);throw _0x4ab79a;});}return _0x1be1da;})[_0x93cc('0x2f')](respondWithResult(_0x52dc07,0xc9))[_0x93cc('0x4d')](handleError(_0x52dc07,null));};exports[_0x93cc('0x59')]=function(_0x435c3d,_0x4c7148){var _0x10c6a5={'where':{'id':_0x435c3d[_0x93cc('0x4e')]['id']}},_0x2d39da={};_0x2d39da[_0x93cc('0x3e')]=_[_0x93cc('0x3b')](db['Dashboard']['rawAttributes']);_0x10c6a5[_0x93cc('0x3f')]=_['intersection'](_0x2d39da[_0x93cc('0x3e')],qs[_0x93cc('0x40')](_0x435c3d['query'][_0x93cc('0x40')]));_0x10c6a5[_0x93cc('0x3f')]=_0x10c6a5[_0x93cc('0x3f')][_0x93cc('0x41')]?_0x10c6a5[_0x93cc('0x3f')]:_0x2d39da[_0x93cc('0x3e')];if(_0x435c3d['query']['includeAll']){_0x10c6a5[_0x93cc('0x4b')]=[{'all':!![]}];}_0x10c6a5=_[_0x93cc('0x47')]({},_0x10c6a5,_0x435c3d['options']);return db[_0x93cc('0x36')][_0x93cc('0x50')](_0x10c6a5)[_0x93cc('0x2f')](handleEntityNotFound(_0x4c7148,null))['then'](function(_0x40b60f){if(_0x40b60f){var _0x1d5f01=_0x40b60f[_0x93cc('0x2c')]({'plain':!![]});_0x1d5f01=qs['omit'](_0x1d5f01,['id','createdAt','updatedAt']);_0x435c3d[_0x93cc('0x52')]=_['omit'](_0x435c3d[_0x93cc('0x52')],['id',_0x93cc('0x5a'),'updatedAt']);return db[_0x93cc('0x36')][_0x93cc('0x51')](_[_0x93cc('0x47')](_0x1d5f01,_0x435c3d[_0x93cc('0x52')]),{'include':_0x435c3d[_0x93cc('0x3a')][_0x93cc('0x4a')]?[{'all':!![]}]:undefined})[_0x93cc('0x2f')](function(_0xfb5ee){var _0x3dccaf=_0x435c3d[_0x93cc('0x53')][_0x93cc('0x2c')]({'plain':!![]});if(!_0x3dccaf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3dccaf[_0x93cc('0x55')]===_0x93cc('0x53')){var _0x6cae38=_0xfb5ee[_0x93cc('0x2c')]({'plain':!![]});var _0x5b3b57=_0x93cc('0x2d');return db['UserProfileSection'][_0x93cc('0x50')]({'where':{'name':_0x5b3b57,'userProfileId':_0x3dccaf[_0x93cc('0x57')]},'raw':!![]})[_0x93cc('0x2f')](function(_0x208dd6){if(_0x208dd6&&_0x208dd6[_0x93cc('0x5b')]===0x0){return db['UserProfileResource']['create']({'name':_0x6cae38[_0x93cc('0x32')],'resourceId':_0x6cae38['id'],'type':_0x208dd6['name'],'sectionId':_0x208dd6['id']},{})[_0x93cc('0x2f')](function(){return _0xfb5ee;});}else{return _0xfb5ee;}})['catch'](function(_0x7c0fb7){logger[_0x93cc('0x30')](_0x93cc('0x58'),_0x7c0fb7);throw _0x7c0fb7;});}return _0xfb5ee;});}})['then'](respondWithResult(_0x4c7148,0xc9))['catch'](handleError(_0x4c7148,null));};exports['update']=function(_0x5dcf46,_0x30d429){if(_0x5dcf46[_0x93cc('0x52')]['id']){delete _0x5dcf46[_0x93cc('0x52')]['id'];}return db['Dashboard'][_0x93cc('0x50')]({'where':{'id':_0x5dcf46['params']['id']}})['then'](handleEntityNotFound(_0x30d429,null))[_0x93cc('0x2f')](saveUpdates(_0x5dcf46[_0x93cc('0x52')],null))[_0x93cc('0x2f')](respondWithResult(_0x30d429,null))[_0x93cc('0x4d')](handleError(_0x30d429,null));};exports[_0x93cc('0x2b')]=function(_0xa64fea,_0xda6ee5){return db[_0x93cc('0x36')][_0x93cc('0x50')]({'where':{'id':_0xa64fea[_0x93cc('0x4e')]['id']}})[_0x93cc('0x2f')](handleEntityNotFound(_0xda6ee5,null))['then'](removeEntity(_0xda6ee5,null))[_0x93cc('0x4d')](handleError(_0xda6ee5,null));};function widgetAttributes(_0x114f53){try{switch(_0x114f53[_0x93cc('0x38')]){case _0x93cc('0x5c'):return[{'name':'attrUrl','value':_0x114f53[_0x93cc('0x5d')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0]['value']:undefined)||_0x93cc('0x5f')}];case _0x93cc('0x60'):return[{'name':'attrPath','value':_0x114f53[_0x93cc('0x61')]||(_0x114f53['attrs']&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0][_0x93cc('0x62')]:undefined)||''}];case'clock':return[{'name':_0x93cc('0x63'),'value':_0x114f53[_0x93cc('0x63')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0][_0x93cc('0x62')]:undefined)||_0x93cc('0x64')},{'name':_0x93cc('0x65'),'value':_0x114f53[_0x93cc('0x65')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x1]?_0x114f53[_0x93cc('0x5e')][0x1][_0x93cc('0x62')]:undefined)||_0x93cc('0x66')},{'name':_0x93cc('0x67'),'value':_0x114f53[_0x93cc('0x67')]||(_0x114f53['attrs']&&_0x114f53[_0x93cc('0x5e')][0x2]?_0x114f53[_0x93cc('0x5e')][0x2]['value']:undefined)||0xc}];case _0x93cc('0x68'):return[{'name':_0x93cc('0x69'),'value':_0x114f53[_0x93cc('0x69')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0][_0x93cc('0x62')]:undefined)||_0x93cc('0x6a')},{'name':_0x93cc('0x6b'),'value':_0x114f53[_0x93cc('0x6b')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x1]?_0x114f53['attrs'][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x114f53['attrFontSize']||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x2]?_0x114f53[_0x93cc('0x5e')][0x2][_0x93cc('0x62')]:undefined)||0x14}];case'multibar-chart':case _0x93cc('0x6c'):return[{'name':'attrSerie1','value':_0x114f53[_0x93cc('0x6d')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0][_0x93cc('0x62')]:undefined)||_0x93cc('0x6a')},{'name':_0x93cc('0x6e'),'value':_0x114f53[_0x93cc('0x6e')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x1]?_0x114f53[_0x93cc('0x5e')][0x1]['value']:undefined)||null},{'name':_0x93cc('0x6f'),'value':_0x114f53['attrSerie3']||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53['attrs'][0x2]?_0x114f53['attrs'][0x2][_0x93cc('0x62')]:undefined)||null},{'name':_0x93cc('0x6b'),'value':_0x114f53[_0x93cc('0x6b')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x3]?_0x114f53[_0x93cc('0x5e')][0x3][_0x93cc('0x62')]:undefined)||[]}];case _0x93cc('0x70'):return[{'name':_0x93cc('0x71'),'type':_0x114f53[_0x93cc('0x72')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53['attrs'][0x0]?_0x114f53['attrs'][0x0][_0x93cc('0x38')]:undefined)||null,'value':_0x114f53[_0x93cc('0x71')]||(_0x114f53[_0x93cc('0x5e')]&&_0x114f53[_0x93cc('0x5e')][0x0]?_0x114f53[_0x93cc('0x5e')][0x0][_0x93cc('0x62')]:undefined)||null},{'name':_0x93cc('0x73'),'value':_0x114f53[_0x93cc('0x73')]||(_0x114f53['attrs']&&_0x114f53[_0x93cc('0x5e')][0x1]?_0x114f53[_0x93cc('0x5e')][0x1][_0x93cc('0x62')]:undefined)||0x0}];default:return[];}}catch(_0x566687){logger[_0x93cc('0x30')](_0x93cc('0x74'),JSON[_0x93cc('0x75')](_0x566687));return[];}}exports['addItem']=function(_0x1f4a42,_0x472f9e,_0x17d2e7){if(_0x1f4a42[_0x93cc('0x52')]['id']){delete _0x1f4a42[_0x93cc('0x52')]['id'];}return db[_0x93cc('0x36')][_0x93cc('0x50')]({'where':{'id':_0x1f4a42['params']['id']}})[_0x93cc('0x2f')](handleEntityNotFound(_0x472f9e,null))[_0x93cc('0x2f')](function(_0x2360e3){if(_0x2360e3){_0x1f4a42['body']['DashboardId']=_0x2360e3['id'];_0x1f4a42[_0x93cc('0x52')]['attrs']=widgetAttributes(_0x1f4a42[_0x93cc('0x52')]);return db[_0x93cc('0x76')][_0x93cc('0x51')](_0x1f4a42['body']);}})['then'](respondWithResult(_0x472f9e,null))['catch'](handleError(_0x472f9e,null));};exports[_0x93cc('0x77')]=function(_0x3dc590,_0x55cebb,_0x5f31c9){var _0x4f3304={};var _0xceffd8={};var _0x32f1db;var _0x6b108a;return db[_0x93cc('0x36')]['findOne']({'where':{'id':_0x3dc590[_0x93cc('0x4e')]['id']}})[_0x93cc('0x2f')](handleEntityNotFound(_0x55cebb,null))[_0x93cc('0x2f')](function(_0x44821a){if(_0x44821a){_0x32f1db=_0x44821a;_0xceffd8[_0x93cc('0x3e')]=_[_0x93cc('0x3b')](db[_0x93cc('0x76')][_0x93cc('0x4f')]);_0xceffd8['query']=_[_0x93cc('0x3b')](_0x3dc590['query']);_0xceffd8['filters']=_[_0x93cc('0x3d')](_0xceffd8[_0x93cc('0x3e')],_0xceffd8['query']);_0x4f3304[_0x93cc('0x3f')]=_['intersection'](_0xceffd8[_0x93cc('0x3e')],qs['fields'](_0x3dc590[_0x93cc('0x3a')][_0x93cc('0x40')]));_0x4f3304[_0x93cc('0x3f')]=_0x4f3304[_0x93cc('0x3f')][_0x93cc('0x41')]?_0x4f3304[_0x93cc('0x3f')]:_0xceffd8[_0x93cc('0x3e')];_0x4f3304[_0x93cc('0x78')]=qs[_0x93cc('0x43')](_0x3dc590[_0x93cc('0x3a')][_0x93cc('0x43')]);_0x4f3304[_0x93cc('0x44')]=qs[_0x93cc('0x3c')](_[_0x93cc('0x45')](_0x3dc590['query'],_0xceffd8[_0x93cc('0x3c')]));if(_0x3dc590['query']['filter']){_0x4f3304['where']=_['merge'](_0x4f3304[_0x93cc('0x44')],{'$or':_[_0x93cc('0x35')](_0x4f3304[_0x93cc('0x3f')],function(_0x55752e){var _0x4e7131={};_0x4e7131[_0x55752e]={'$like':'%'+_0x3dc590['query'][_0x93cc('0x46')]+'%'};return _0x4e7131;})});}_0x4f3304=_['merge']({},_0x4f3304,_0x3dc590['options']);return _0x32f1db[_0x93cc('0x77')](_0x4f3304);}})[_0x93cc('0x2f')](function(_0xdef9a2){if(_0xdef9a2){_0x6b108a=_0xdef9a2[_0x93cc('0x41')];if(!_0x3dc590[_0x93cc('0x3a')][_0x93cc('0x79')](_0x93cc('0x7a'))){_0x4f3304[_0x93cc('0x42')]=qs[_0x93cc('0x42')](_0x3dc590[_0x93cc('0x3a')][_0x93cc('0x42')]);_0x4f3304[_0x93cc('0x23')]=qs[_0x93cc('0x23')](_0x3dc590['query'][_0x93cc('0x23')]);}return _0x32f1db[_0x93cc('0x77')](_0x4f3304);}})['then'](function(_0x59bde5){if(_0x59bde5){return _0x59bde5?{'count':_0x6b108a,'rows':_0x59bde5}:null;}})[_0x93cc('0x2f')](respondWithResult(_0x55cebb,null))['catch'](handleError(_0x55cebb,null));};
\ No newline at end of file
index 8d09200..a0ceb6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d1d=['remove','emit','hook','exports','Dashboard','setMaxListeners','save'];(function(_0x415be3,_0x26aed5){var _0x44d987=function(_0x380411){while(--_0x380411){_0x415be3['push'](_0x415be3['shift']());}};_0x44d987(++_0x26aed5);}(_0x2d1d,0x10e));var _0xd2d1=function(_0xcffc1,_0x2bd0d6){_0xcffc1=_0xcffc1-0x0;var _0x34a376=_0x2d1d[_0xcffc1];return _0x34a376;};'use strict';var EventEmitter=require('events');var Dashboard=require('../../mysqldb')['db'][_0xd2d1('0x0')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xd2d1('0x1')](0x0);var events={'afterCreate':_0xd2d1('0x2'),'afterUpdate':'update','afterDestroy':_0xd2d1('0x3')};function emitEvent(_0x3438a5){return function(_0x30c0f0,_0x40b9d5,_0x5979f9){DashboardEvents['emit'](_0x3438a5+':'+_0x30c0f0['id'],_0x30c0f0);DashboardEvents[_0xd2d1('0x4')](_0x3438a5,_0x30c0f0);_0x5979f9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xd2d1('0x5')](e,emitEvent(event));}}module[_0xd2d1('0x6')]=DashboardEvents;
\ No newline at end of file
+var _0x2b1f=['events','Dashboard','setMaxListeners','emit','hook'];(function(_0x26f702,_0x3919bf){var _0x11417d=function(_0x1aa3e8){while(--_0x1aa3e8){_0x26f702['push'](_0x26f702['shift']());}};_0x11417d(++_0x3919bf);}(_0x2b1f,0x1b8));var _0xf2b1=function(_0x4d3b24,_0x32d325){_0x4d3b24=_0x4d3b24-0x0;var _0x45eab1=_0x2b1f[_0x4d3b24];return _0x45eab1;};'use strict';var EventEmitter=require(_0xf2b1('0x0'));var Dashboard=require('../../mysqldb')['db'][_0xf2b1('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xf2b1('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3a17b6){return function(_0x2e786f,_0x1e90e8,_0x54121f){DashboardEvents[_0xf2b1('0x3')](_0x3a17b6+':'+_0x2e786f['id'],_0x2e786f);DashboardEvents['emit'](_0x3a17b6,_0x2e786f);_0x54121f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xf2b1('0x4')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
index 43130f2..95aaecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6a5=['../../config/environment','./dashboard.attributes','define','Dashboard','dashboards','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x584b9d,_0x1cb5c5){var _0x172053=function(_0x5036ec){while(--_0x5036ec){_0x584b9d['push'](_0x584b9d['shift']());}};_0x172053(++_0x1cb5c5);}(_0xf6a5,0x16d));var _0x5f6a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf6a5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5f6a('0x0'));var util=require(_0x5f6a('0x1'));var logger=require(_0x5f6a('0x2'))('api');var moment=require('moment');var BPromise=require(_0x5f6a('0x3'));var rp=require(_0x5f6a('0x4'));var fs=require('fs');var path=require(_0x5f6a('0x5'));var rimraf=require(_0x5f6a('0x6'));var config=require(_0x5f6a('0x7'));var attributes=require(_0x5f6a('0x8'));module['exports']=function(_0x2c0954,_0x59c438){return _0x2c0954[_0x5f6a('0x9')](_0x5f6a('0xa'),attributes,{'tableName':_0x5f6a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc171=['moment','bluebird','request-promise','path','rimraf','./dashboard.attributes','define','Dashboard','dashboards','../../config/logger','api'];(function(_0x365be9,_0x3c88b9){var _0x185c12=function(_0xbadbbf){while(--_0xbadbbf){_0x365be9['push'](_0x365be9['shift']());}};_0x185c12(++_0x3c88b9);}(_0xc171,0x6c));var _0x1c17=function(_0x4a489f,_0x5402ab){_0x4a489f=_0x4a489f-0x0;var _0x4a4137=_0xc171[_0x4a489f];return _0x4a4137;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1c17('0x0'))(_0x1c17('0x1'));var moment=require(_0x1c17('0x2'));var BPromise=require(_0x1c17('0x3'));var rp=require(_0x1c17('0x4'));var fs=require('fs');var path=require(_0x1c17('0x5'));var rimraf=require(_0x1c17('0x6'));var config=require('../../config/environment');var attributes=require(_0x1c17('0x7'));module['exports']=function(_0x56ca24,_0xbc390a){return _0x56ca24[_0x1c17('0x8')](_0x1c17('0x9'),attributes,{'tableName':_0x1c17('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 849533c..148425e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x351b=['../../config/utils','../../config/logger','rpc','client','http','redis','defaults','./dashboard.socket','register','request','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb'];(function(_0x467e57,_0x4b6ed4){var _0x431608=function(_0x21cc72){while(--_0x21cc72){_0x467e57['push'](_0x467e57['shift']());}};_0x431608(++_0x4b6ed4);}(_0x351b,0x17b));var _0xb351=function(_0x5193df,_0xee6ab5){_0x5193df=_0x5193df-0x0;var _0xf911fd=_0x351b[_0x5193df];return _0xf911fd;};'use strict';var _=require(_0xb351('0x0'));var util=require('util');var moment=require(_0xb351('0x1'));var BPromise=require('bluebird');var rs=require(_0xb351('0x2'));var fs=require('fs');var Redis=require(_0xb351('0x3'));var db=require(_0xb351('0x4'))['db'];var utils=require(_0xb351('0x5'));var logger=require(_0xb351('0x6'))(_0xb351('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb351('0x8')][_0xb351('0x9')]({'port':0x232a});config[_0xb351('0xa')]=_[_0xb351('0xb')](config[_0xb351('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb351('0xa')]));require(_0xb351('0xc'))[_0xb351('0xd')](socket);function respondWithRpcPromise(_0x2b634b,_0x4dfe2e,_0x4ee622){return new BPromise(function(_0x39244e,_0x233d8f){return client[_0xb351('0xe')](_0x2b634b,_0x4ee622)['then'](function(_0x2372c9){logger[_0xb351('0xf')](_0xb351('0x10'),_0x4dfe2e,_0xb351('0x11'));logger[_0xb351('0x12')](_0xb351('0x13'),_0x4dfe2e,_0xb351('0x11'),JSON['stringify'](_0x2372c9));if(_0x2372c9[_0xb351('0x14')]){if(_0x2372c9['error']['code']===0x1f4){logger[_0xb351('0x14')](_0xb351('0x10'),_0x4dfe2e,_0x2372c9[_0xb351('0x14')][_0xb351('0x15')]);return _0x233d8f(_0x2372c9[_0xb351('0x14')]['message']);}logger[_0xb351('0x14')](_0xb351('0x10'),_0x4dfe2e,_0x2372c9[_0xb351('0x14')][_0xb351('0x15')]);return _0x39244e(_0x2372c9['error'][_0xb351('0x15')]);}else{logger[_0xb351('0xf')](_0xb351('0x10'),_0x4dfe2e,_0xb351('0x11'));_0x39244e(_0x2372c9[_0xb351('0x16')][_0xb351('0x15')]);}})[_0xb351('0x17')](function(_0x4d73cb){logger[_0xb351('0x14')]('Dashboard,\x20%s,\x20%s',_0x4dfe2e,_0x4d73cb);_0x233d8f(_0x4d73cb);});});}
\ No newline at end of file
+var _0xb391=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','request','then','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xb391,0x178));var _0x1b39=function(_0x409186,_0x4b8b73){_0x409186=_0x409186-0x0;var _0x3deb43=_0xb391[_0x409186];return _0x3deb43;};'use strict';var _=require(_0x1b39('0x0'));var util=require(_0x1b39('0x1'));var moment=require(_0x1b39('0x2'));var BPromise=require('bluebird');var rs=require(_0x1b39('0x3'));var fs=require('fs');var Redis=require(_0x1b39('0x4'));var db=require(_0x1b39('0x5'))['db'];var utils=require(_0x1b39('0x6'));var logger=require(_0x1b39('0x7'))(_0x1b39('0x8'));var config=require(_0x1b39('0x9'));var jayson=require(_0x1b39('0xa'));var client=jayson[_0x1b39('0xb')][_0x1b39('0xc')]({'port':0x232a});config[_0x1b39('0xd')]=_[_0x1b39('0xe')](config[_0x1b39('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x1b39('0xf'))(new Redis(config[_0x1b39('0xd')]));require('./dashboard.socket')['register'](socket);function respondWithRpcPromise(_0x77006f,_0x843947,_0x2da33c){return new BPromise(function(_0x426d32,_0x432ece){return client[_0x1b39('0x10')](_0x77006f,_0x2da33c)[_0x1b39('0x11')](function(_0x510a43){logger['info'](_0x1b39('0x12'),_0x843947,_0x1b39('0x13'));logger[_0x1b39('0x14')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x843947,_0x1b39('0x13'),JSON[_0x1b39('0x15')](_0x510a43));if(_0x510a43['error']){if(_0x510a43[_0x1b39('0x16')]['code']===0x1f4){logger['error']('Dashboard,\x20%s,\x20%s',_0x843947,_0x510a43[_0x1b39('0x16')][_0x1b39('0x17')]);return _0x432ece(_0x510a43[_0x1b39('0x16')][_0x1b39('0x17')]);}logger['error'](_0x1b39('0x12'),_0x843947,_0x510a43['error'][_0x1b39('0x17')]);return _0x426d32(_0x510a43[_0x1b39('0x16')][_0x1b39('0x17')]);}else{logger['info'](_0x1b39('0x12'),_0x843947,_0x1b39('0x13'));_0x426d32(_0x510a43['result'][_0x1b39('0x17')]);}})[_0x1b39('0x18')](function(_0x4045b8){logger[_0x1b39('0x16')](_0x1b39('0x12'),_0x843947,_0x4045b8);_0x432ece(_0x4045b8);});});}
\ No newline at end of file
index e1543f1..6b62a2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29a5=['dashboard:','./dashboard.events','save','update','removeListener','register','length'];(function(_0x5ce96b,_0x44f094){var _0xbe18=function(_0x52c8d1){while(--_0x52c8d1){_0x5ce96b['push'](_0x5ce96b['shift']());}};_0xbe18(++_0x44f094);}(_0x29a5,0x166));var _0x529a=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x29a5[_0x8c43de];return _0xa6591b;};'use strict';var DashboardEvents=require(_0x529a('0x0'));var events=[_0x529a('0x1'),'remove',_0x529a('0x2')];function createListener(_0x59a193,_0x4f7202){return function(_0x30ce90){_0x4f7202['emit'](_0x59a193,_0x30ce90);};}function removeListener(_0x1e7d30,_0x472b91){return function(){DashboardEvents[_0x529a('0x3')](_0x1e7d30,_0x472b91);};}exports[_0x529a('0x4')]=function(_0x5ae510){for(var _0x5ece11=0x0,_0x1009db=events[_0x529a('0x5')];_0x5ece11<_0x1009db;_0x5ece11++){var _0x320878=events[_0x5ece11];var _0x6a099f=createListener(_0x529a('0x6')+_0x320878,_0x5ae510);DashboardEvents['on'](_0x320878,_0x6a099f);}};
\ No newline at end of file
+var _0xd0c5=['emit','register','dashboard:','./dashboard.events','save'];(function(_0x12e90b,_0xbb857b){var _0x188e39=function(_0x296227){while(--_0x296227){_0x12e90b['push'](_0x12e90b['shift']());}};_0x188e39(++_0xbb857b);}(_0xd0c5,0x1bb));var _0x5d0c=function(_0x1615b5,_0x4b642c){_0x1615b5=_0x1615b5-0x0;var _0x311e75=_0xd0c5[_0x1615b5];return _0x311e75;};'use strict';var DashboardEvents=require(_0x5d0c('0x0'));var events=[_0x5d0c('0x1'),'remove','update'];function createListener(_0x350d0f,_0xbf4ff8){return function(_0x115987){_0xbf4ff8[_0x5d0c('0x2')](_0x350d0f,_0x115987);};}function removeListener(_0x946bb0,_0x3ec0c7){return function(){DashboardEvents['removeListener'](_0x946bb0,_0x3ec0c7);};}exports[_0x5d0c('0x3')]=function(_0x459b6f){for(var _0x372ba9=0x0,_0x446475=events['length'];_0x372ba9<_0x446475;_0x372ba9++){var _0x457b57=events[_0x372ba9];var _0x27ab1a=createListener(_0x5d0c('0x4')+_0x457b57,_0x459b6f);DashboardEvents['on'](_0x457b57,_0x27ab1a);}};
\ No newline at end of file
index 3b8012a..96147e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9636=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','show','/:id/items','getItems','post','/:id/clone','clone','addItem','put','/:id','delete','destroy','exports','path'];(function(_0x1c5385,_0x3aba1a){var _0x478ddb=function(_0x7ca4a6){while(--_0x7ca4a6){_0x1c5385['push'](_0x1c5385['shift']());}};_0x478ddb(++_0x3aba1a);}(_0x9636,0x133));var _0x6963=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x9636[_0x1035c1];return _0x308d67;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6963('0x0'));var timeout=require(_0x6963('0x1'));var express=require(_0x6963('0x2'));var router=express[_0x6963('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6963('0x4'));var interaction=require(_0x6963('0x5'));var config=require(_0x6963('0x6'));var controller=require(_0x6963('0x7'));router[_0x6963('0x8')]('/',auth[_0x6963('0x9')](),controller['index']);router[_0x6963('0x8')]('/:id',auth[_0x6963('0x9')](),controller[_0x6963('0xa')]);router[_0x6963('0x8')](_0x6963('0xb'),auth[_0x6963('0x9')](),controller[_0x6963('0xc')]);router[_0x6963('0xd')]('/',auth[_0x6963('0x9')](),controller['create']);router[_0x6963('0xd')](_0x6963('0xe'),auth['isAuthenticated'](),controller[_0x6963('0xf')]);router[_0x6963('0xd')](_0x6963('0xb'),auth[_0x6963('0x9')](),controller[_0x6963('0x10')]);router[_0x6963('0x11')](_0x6963('0x12'),auth[_0x6963('0x9')](),controller['update']);router[_0x6963('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x6963('0x14')]);module[_0x6963('0x15')]=router;
\ No newline at end of file
+var _0x2505=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/items','post','create','/:id/clone','clone','put','update','delete','destroy','exports','multer','util'];(function(_0x4bf711,_0x35fea1){var _0x305ef5=function(_0x13bd54){while(--_0x13bd54){_0x4bf711['push'](_0x4bf711['shift']());}};_0x305ef5(++_0x35fea1);}(_0x2505,0x76));var _0x5250=function(_0x55b4a7,_0x40bb05){_0x55b4a7=_0x55b4a7-0x0;var _0xcd7cfc=_0x2505[_0x55b4a7];return _0xcd7cfc;};'use strict';var multer=require(_0x5250('0x0'));var util=require(_0x5250('0x1'));var path=require('path');var timeout=require(_0x5250('0x2'));var express=require(_0x5250('0x3'));var router=express[_0x5250('0x4')]();var fs_extra=require(_0x5250('0x5'));var auth=require(_0x5250('0x6'));var interaction=require(_0x5250('0x7'));var config=require(_0x5250('0x8'));var controller=require('./dashboard.controller');router['get']('/',auth[_0x5250('0x9')](),controller[_0x5250('0xa')]);router[_0x5250('0xb')](_0x5250('0xc'),auth[_0x5250('0x9')](),controller[_0x5250('0xd')]);router['get'](_0x5250('0xe'),auth[_0x5250('0x9')](),controller['getItems']);router[_0x5250('0xf')]('/',auth[_0x5250('0x9')](),controller[_0x5250('0x10')]);router[_0x5250('0xf')](_0x5250('0x11'),auth[_0x5250('0x9')](),controller[_0x5250('0x12')]);router[_0x5250('0xf')](_0x5250('0xe'),auth[_0x5250('0x9')](),controller['addItem']);router[_0x5250('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x5250('0x14')]);router[_0x5250('0x15')]('/:id',auth[_0x5250('0x9')](),controller[_0x5250('0x16')]);module[_0x5250('0x17')]=router;
\ No newline at end of file
index b6eb204..36b1218 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf4=['lodash','exports','STRING','TEXT','long','parse','attrs','setDataValue','stringify','INTEGER','#2196f3'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xacf4,0xe7));var _0x4acf=function(_0xdb5b37,_0x2ddbc4){_0xdb5b37=_0xdb5b37-0x0;var _0x16b9ab=_0xacf4[_0xdb5b37];return _0x16b9ab;};'use strict';var Sequelize=require('sequelize');var squel=require('squel');var _=require(_0x4acf('0x0'));module[_0x4acf('0x1')]={'title':{'type':Sequelize[_0x4acf('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x4acf('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x4acf('0x3')](_0x4acf('0x4')),'get':function(){try{return JSON[_0x4acf('0x5')](this['getDataValue'](_0x4acf('0x6')));}catch(_0x2124c8){return[];}},'set':function(_0x4e0c43){try{this[_0x4acf('0x7')](_0x4acf('0x6'),JSON[_0x4acf('0x8')](_0x4e0c43));}catch(_0x45a5a4){this[_0x4acf('0x7')]('attrs',JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x4acf('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x4acf('0x9')]},'col':{'type':Sequelize[_0x4acf('0x9')]},'background':{'type':Sequelize[_0x4acf('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x4acf('0x2')],'allowNull':![],'defaultValue':_0x4acf('0xa'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0x0295=['#ffffff','sequelize','exports','TEXT','long','parse','getDataValue','attrs','setDataValue','INTEGER','STRING'];(function(_0x252328,_0x4c22f0){var _0xaa85b7=function(_0x2623d0){while(--_0x2623d0){_0x252328['push'](_0x252328['shift']());}};_0xaa85b7(++_0x4c22f0);}(_0x0295,0x1f0));var _0x5029=function(_0x36888d,_0x22988e){_0x36888d=_0x36888d-0x0;var _0x14f524=_0x0295[_0x36888d];return _0x14f524;};'use strict';var Sequelize=require(_0x5029('0x0'));var squel=require('squel');var _=require('lodash');module[_0x5029('0x1')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x5029('0x2')](_0x5029('0x3')),'get':function(){try{return JSON[_0x5029('0x4')](this[_0x5029('0x5')](_0x5029('0x6')));}catch(_0x69a497){return[];}},'set':function(_0x200217){try{this[_0x5029('0x7')](_0x5029('0x6'),JSON['stringify'](_0x200217));}catch(_0x54978f){this['setDataValue'](_0x5029('0x6'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x5029('0x8')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x5029('0x8')]},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize[_0x5029('0x9')],'allowNull':![],'defaultValue':_0x5029('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x5029('0x9')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x5029('0x9')]},'titleFontSize':{'type':Sequelize[_0x5029('0x8')],'defaultValue':0xc}};
\ No newline at end of file
index 1c5349d..46f3988 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7055=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','params','model','keys','rawAttributes','query','attributes','intersection','fields','length','includeAll','include','merge','options','find','DashboardItem','type','attrUrl','attrs','value','https://','attrPath','clock','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrSerie1','attrSerie2','attrSerie3','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','body','create','catch','eml-format','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x4dfecb,_0x8d2259){var _0x4fc85c=function(_0x10bcf7){while(--_0x10bcf7){_0x4dfecb['push'](_0x4dfecb['shift']());}};_0x4fc85c(++_0x8d2259);}(_0x7055,0x1a8));var _0x5705=function(_0xf5d71c,_0x2613a6){_0xf5d71c=_0xf5d71c-0x0;var _0x5af672=_0x7055[_0xf5d71c];return _0x5af672;};'use strict';var emlformat=require(_0x5705('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5705('0x1'));var jsonpatch=require(_0x5705('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5705('0x3'));var util=require(_0x5705('0x4'));var path=require('path');var sox=require(_0x5705('0x5'));var csv=require(_0x5705('0x6'));var ejs=require(_0x5705('0x7'));var fs=require('fs');var fs_extra=require(_0x5705('0x8'));var _=require('lodash');var squel=require(_0x5705('0x9'));var crypto=require(_0x5705('0xa'));var jsforce=require(_0x5705('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x5705('0x6'));var querystring=require(_0x5705('0xc'));var Papa=require(_0x5705('0xd'));var Redis=require('ioredis');var authService=require(_0x5705('0xe'));var qs=require(_0x5705('0xf'));var as=require(_0x5705('0x10'));var hardwareService=require(_0x5705('0x11'));var logger=require(_0x5705('0x12'))(_0x5705('0x13'));var utils=require(_0x5705('0x14'));var config=require(_0x5705('0x15'));var licenseUtil=require(_0x5705('0x16'));var db=require(_0x5705('0x17'))['db'];config['redis']=_[_0x5705('0x18')](config[_0x5705('0x19')],{'host':_0x5705('0x1a'),'port':0x18eb});var socket=require(_0x5705('0x1b'))(new Redis(config[_0x5705('0x19')]));require(_0x5705('0x1c'))[_0x5705('0x1d')](socket);function respondWithStatusCode(_0x290480,_0x1a0e66){_0x1a0e66=_0x1a0e66||0xcc;return function(_0x339095){if(_0x339095){return _0x290480[_0x5705('0x1e')](_0x1a0e66);}return _0x290480['status'](_0x1a0e66)['end']();};}function respondWithResult(_0x6fabf2,_0xdcc5ec){_0xdcc5ec=_0xdcc5ec||0xc8;return function(_0x24cd17){if(_0x24cd17){return _0x6fabf2['status'](_0xdcc5ec)[_0x5705('0x1f')](_0x24cd17);}};}function respondWithFilteredResult(_0x45991e,_0x39a3fd){return function(_0x2c20b2){if(_0x2c20b2){var _0x42aaa5=typeof _0x39a3fd['offset']===_0x5705('0x20')&&typeof _0x39a3fd[_0x5705('0x21')]==='undefined';var _0x46fb7d=_0x2c20b2[_0x5705('0x22')];var _0x2e7df6=_0x42aaa5?0x0:_0x39a3fd[_0x5705('0x23')];var _0x4b8a5b=_0x42aaa5?_0x2c20b2[_0x5705('0x22')]:_0x39a3fd[_0x5705('0x23')]+_0x39a3fd[_0x5705('0x21')];var _0x778e1c;if(_0x4b8a5b>=_0x46fb7d){_0x4b8a5b=_0x46fb7d;_0x778e1c=0xc8;}else{_0x778e1c=0xce;}_0x45991e[_0x5705('0x24')](_0x778e1c);return _0x45991e[_0x5705('0x25')](_0x5705('0x26'),_0x2e7df6+'-'+_0x4b8a5b+'/'+_0x46fb7d)[_0x5705('0x1f')](_0x2c20b2);}return null;};}function patchUpdates(_0x1a77b4){return function(_0x11a632){try{jsonpatch[_0x5705('0x27')](_0x11a632,_0x1a77b4,!![]);}catch(_0x4af306){return BPromise[_0x5705('0x28')](_0x4af306);}return _0x11a632[_0x5705('0x29')]();};}function saveUpdates(_0x2c5ee8,_0x1935e2){return function(_0x1ab197){if(_0x1ab197){return _0x1ab197[_0x5705('0x2a')](_0x2c5ee8)[_0x5705('0x2b')](function(_0x1836ef){return _0x1836ef;});}return null;};}function removeEntity(_0x392162,_0xf44d2a){return function(_0x5886c9){if(_0x5886c9){return _0x5886c9[_0x5705('0x2c')]()['then'](function(){_0x392162[_0x5705('0x24')](0xcc)[_0x5705('0x2d')]();});}};}function handleEntityNotFound(_0x4b2c3e,_0x21a515){return function(_0x19be02){if(!_0x19be02){_0x4b2c3e[_0x5705('0x1e')](0x194);}return _0x19be02;};}function handleError(_0x21e2a5,_0xb02683){_0xb02683=_0xb02683||0x1f4;return function(_0x34194c){logger[_0x5705('0x2e')](_0x34194c[_0x5705('0x2f')]);if(_0x34194c[_0x5705('0x30')]){delete _0x34194c[_0x5705('0x30')];}_0x21e2a5[_0x5705('0x24')](_0xb02683)['send'](_0x34194c);};}exports['show']=function(_0x34db28,_0x344bbf){var _0x52865a={'raw':![],'where':{'id':_0x34db28[_0x5705('0x31')]['id']}},_0x44315b={};_0x44315b[_0x5705('0x32')]=_[_0x5705('0x33')](db['DashboardItem'][_0x5705('0x34')]);_0x44315b[_0x5705('0x35')]=_[_0x5705('0x33')](_0x34db28[_0x5705('0x35')]);_0x44315b['filters']=_['intersection'](_0x44315b['model'],_0x44315b[_0x5705('0x35')]);_0x52865a[_0x5705('0x36')]=_[_0x5705('0x37')](_0x44315b[_0x5705('0x32')],qs[_0x5705('0x38')](_0x34db28[_0x5705('0x35')][_0x5705('0x38')]));_0x52865a[_0x5705('0x36')]=_0x52865a[_0x5705('0x36')][_0x5705('0x39')]?_0x52865a[_0x5705('0x36')]:_0x44315b[_0x5705('0x32')];if(_0x34db28[_0x5705('0x35')][_0x5705('0x3a')]){_0x52865a[_0x5705('0x3b')]=[{'all':!![]}];}_0x52865a=_[_0x5705('0x3c')]({},_0x52865a,_0x34db28[_0x5705('0x3d')]);return db['DashboardItem'][_0x5705('0x3e')](_0x52865a)[_0x5705('0x2b')](handleEntityNotFound(_0x344bbf,null))[_0x5705('0x2b')](respondWithResult(_0x344bbf,null))['catch'](handleError(_0x344bbf,null));};exports['destroy']=function(_0x261f94,_0x1ce52e){return db[_0x5705('0x3f')]['find']({'where':{'id':_0x261f94[_0x5705('0x31')]['id']}})[_0x5705('0x2b')](handleEntityNotFound(_0x1ce52e,null))[_0x5705('0x2b')](removeEntity(_0x1ce52e,null))['catch'](handleError(_0x1ce52e,null));};function widgetAttributes(_0x50f6ac){try{switch(_0x50f6ac[_0x5705('0x40')]){case'iframe':return[{'name':'attrUrl','value':_0x50f6ac[_0x5705('0x41')]||(_0x50f6ac['attrs']&&_0x50f6ac[_0x5705('0x42')][0x0]?_0x50f6ac[_0x5705('0x42')][0x0][_0x5705('0x43')]:undefined)||_0x5705('0x44')}];case'custom':return[{'name':'attrPath','value':_0x50f6ac[_0x5705('0x45')]||(_0x50f6ac[_0x5705('0x42')]&&_0x50f6ac[_0x5705('0x42')][0x0]?_0x50f6ac['attrs'][0x0][_0x5705('0x43')]:undefined)||''}];case _0x5705('0x46'):return[{'name':'attrHourFormat','value':_0x50f6ac['attrHourFormat']||(_0x50f6ac[_0x5705('0x42')]&&_0x50f6ac[_0x5705('0x42')][0x0]?_0x50f6ac[_0x5705('0x42')][0x0][_0x5705('0x43')]:undefined)||_0x5705('0x47')},{'name':_0x5705('0x48'),'value':_0x50f6ac[_0x5705('0x48')]||(_0x50f6ac['attrs']&&_0x50f6ac[_0x5705('0x42')][0x1]?_0x50f6ac[_0x5705('0x42')][0x1][_0x5705('0x43')]:undefined)||'0.00'},{'name':_0x5705('0x49'),'value':_0x50f6ac['attrFontSize']||(_0x50f6ac[_0x5705('0x42')]&&_0x50f6ac['attrs'][0x2]?_0x50f6ac[_0x5705('0x42')][0x2][_0x5705('0x43')]:undefined)||0xc}];case _0x5705('0x4a'):return[{'name':_0x5705('0x4b'),'value':_0x50f6ac[_0x5705('0x4b')]||(_0x50f6ac[_0x5705('0x42')]&&_0x50f6ac[_0x5705('0x42')][0x0]?_0x50f6ac[_0x5705('0x42')][0x0][_0x5705('0x43')]:undefined)||_0x5705('0x4c')},{'name':'attrVoiceQueues','value':_0x50f6ac[_0x5705('0x4d')]||(_0x50f6ac[_0x5705('0x42')]&&_0x50f6ac[_0x5705('0x42')][0x1]?_0x50f6ac['attrs'][0x1][_0x5705('0x43')]:undefined)||[]},{'name':_0x5705('0x49'),'value':_0x50f6ac['attrFontSize']||(_0x50f6ac[_0x5705('0x42')]&&_0x50f6ac[_0x5705('0x42')][0x2]?_0x50f6ac[_0x5705('0x42')][0x2][_0x5705('0x43')]:undefined)||0x14}];case'multibar-chart':case'pie-chart':return[{'name':_0x5705('0x4e'),'value':_0x50f6ac[_0x5705('0x4e')]||(_0x50f6ac[_0x5705('0x42')]&&_0x50f6ac[_0x5705('0x42')][0x0]?_0x50f6ac[_0x5705('0x42')][0x0]['value']:undefined)||_0x5705('0x4c')},{'name':_0x5705('0x4f'),'value':_0x50f6ac[_0x5705('0x4f')]||(_0x50f6ac['attrs']&&_0x50f6ac['attrs'][0x1]?_0x50f6ac[_0x5705('0x42')][0x1][_0x5705('0x43')]:undefined)||null},{'name':_0x5705('0x50'),'value':_0x50f6ac[_0x5705('0x50')]||(_0x50f6ac[_0x5705('0x42')]&&_0x50f6ac[_0x5705('0x42')][0x2]?_0x50f6ac[_0x5705('0x42')][0x2]['value']:undefined)||null},{'name':'attrVoiceQueues','value':_0x50f6ac[_0x5705('0x4d')]||(_0x50f6ac['attrs']&&_0x50f6ac[_0x5705('0x42')][0x3]?_0x50f6ac[_0x5705('0x42')][0x3][_0x5705('0x43')]:undefined)||[]}];case'web-report':return[{'name':'attrReport','type':_0x50f6ac['reportType']||(_0x50f6ac['attrs']&&_0x50f6ac[_0x5705('0x42')][0x0]?_0x50f6ac[_0x5705('0x42')][0x0][_0x5705('0x40')]:undefined)||null,'value':_0x50f6ac[_0x5705('0x51')]||(_0x50f6ac[_0x5705('0x42')]&&_0x50f6ac[_0x5705('0x42')][0x0]?_0x50f6ac[_0x5705('0x42')][0x0]['value']:undefined)||null},{'name':_0x5705('0x52'),'value':_0x50f6ac[_0x5705('0x52')]||(_0x50f6ac[_0x5705('0x42')]&&_0x50f6ac[_0x5705('0x42')][0x1]?_0x50f6ac['attrs'][0x1][_0x5705('0x43')]:undefined)||0x0}];default:return[];}}catch(_0x53f052){logger[_0x5705('0x2e')](_0x5705('0x53'),JSON[_0x5705('0x54')](_0x53f052));return[];}}exports['create']=function(_0x16d386,_0x168165){if(_0x16d386['body']){_0x16d386[_0x5705('0x55')][_0x5705('0x42')]=widgetAttributes(_0x16d386['body']);}return db[_0x5705('0x3f')][_0x5705('0x56')](_0x16d386[_0x5705('0x55')],{})['then'](respondWithResult(_0x168165,0xc9))[_0x5705('0x57')](handleError(_0x168165,null));};exports[_0x5705('0x2a')]=function(_0x2e0722,_0x57f8ec){if(_0x2e0722[_0x5705('0x55')]['id']){delete _0x2e0722[_0x5705('0x55')]['id'];}_0x2e0722[_0x5705('0x55')]['attrs']=widgetAttributes(_0x2e0722['body']);return db['DashboardItem'][_0x5705('0x3e')]({'where':{'id':_0x2e0722['params']['id']}})[_0x5705('0x2b')](handleEntityNotFound(_0x57f8ec,null))[_0x5705('0x2b')](saveUpdates(_0x2e0722[_0x5705('0x55')],null))['then'](respondWithResult(_0x57f8ec,null))[_0x5705('0x57')](handleError(_0x57f8ec,null));};
\ No newline at end of file
+var _0x4d9e=['register','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','save','update','then','error','name','send','show','params','model','keys','rawAttributes','query','filters','intersection','fields','length','attributes','includeAll','merge','options','DashboardItem','find','catch','destroy','type','iframe','attrUrl','attrs','attrPath','value','clock','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','attrReport','attrRefresh','create','body','eml-format','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','./dashboardItem.socket'];(function(_0x3cd133,_0x222fcb){var _0x2512c8=function(_0x484491){while(--_0x484491){_0x3cd133['push'](_0x3cd133['shift']());}};_0x2512c8(++_0x222fcb);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x3a0d11,_0x5944f2){_0x3a0d11=_0x3a0d11-0x0;var _0x3a7821=_0x4d9e[_0x3a0d11];return _0x3a7821;};'use strict';var emlformat=require(_0xe4d9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe4d9('0x1'));var rp=require('request-promise');var moment=require(_0xe4d9('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xe4d9('0x3'));var util=require(_0xe4d9('0x4'));var path=require('path');var sox=require(_0xe4d9('0x5'));var csv=require(_0xe4d9('0x6'));var ejs=require(_0xe4d9('0x7'));var fs=require('fs');var fs_extra=require(_0xe4d9('0x8'));var _=require(_0xe4d9('0x9'));var squel=require(_0xe4d9('0xa'));var crypto=require('crypto');var jsforce=require(_0xe4d9('0xb'));var deskjs=require(_0xe4d9('0xc'));var toCsv=require(_0xe4d9('0x6'));var querystring=require(_0xe4d9('0xd'));var Papa=require(_0xe4d9('0xe'));var Redis=require(_0xe4d9('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe4d9('0x10'));var as=require(_0xe4d9('0x11'));var hardwareService=require(_0xe4d9('0x12'));var logger=require(_0xe4d9('0x13'))(_0xe4d9('0x14'));var utils=require(_0xe4d9('0x15'));var config=require(_0xe4d9('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe4d9('0x17'))[_0xe4d9('0x18')](socket);function respondWithStatusCode(_0x3f884c,_0x4bfbd5){_0x4bfbd5=_0x4bfbd5||0xcc;return function(_0x9f0442){if(_0x9f0442){return _0x3f884c[_0xe4d9('0x19')](_0x4bfbd5);}return _0x3f884c[_0xe4d9('0x1a')](_0x4bfbd5)[_0xe4d9('0x1b')]();};}function respondWithResult(_0x58d0cf,_0x331ef3){_0x331ef3=_0x331ef3||0xc8;return function(_0x35cbc2){if(_0x35cbc2){return _0x58d0cf[_0xe4d9('0x1a')](_0x331ef3)['json'](_0x35cbc2);}};}function respondWithFilteredResult(_0x4d2afd,_0x7abb80){return function(_0x112315){if(_0x112315){var _0x5ab3d1=typeof _0x7abb80[_0xe4d9('0x1c')]==='undefined'&&typeof _0x7abb80[_0xe4d9('0x1d')]===_0xe4d9('0x1e');var _0x1ea096=_0x112315[_0xe4d9('0x1f')];var _0x503570=_0x5ab3d1?0x0:_0x7abb80[_0xe4d9('0x1c')];var _0x3c2017=_0x5ab3d1?_0x112315[_0xe4d9('0x1f')]:_0x7abb80[_0xe4d9('0x1c')]+_0x7abb80[_0xe4d9('0x1d')];var _0x1146fc;if(_0x3c2017>=_0x1ea096){_0x3c2017=_0x1ea096;_0x1146fc=0xc8;}else{_0x1146fc=0xce;}_0x4d2afd[_0xe4d9('0x1a')](_0x1146fc);return _0x4d2afd[_0xe4d9('0x20')](_0xe4d9('0x21'),_0x503570+'-'+_0x3c2017+'/'+_0x1ea096)['json'](_0x112315);}return null;};}function patchUpdates(_0x44f1aa){return function(_0x26b0b2){try{jsonpatch['apply'](_0x26b0b2,_0x44f1aa,!![]);}catch(_0x189dad){return BPromise['reject'](_0x189dad);}return _0x26b0b2[_0xe4d9('0x22')]();};}function saveUpdates(_0x125320,_0x5b494d){return function(_0xfacee3){if(_0xfacee3){return _0xfacee3[_0xe4d9('0x23')](_0x125320)['then'](function(_0xc5be1b){return _0xc5be1b;});}return null;};}function removeEntity(_0x2af9b0,_0x36444c){return function(_0x5bb43b){if(_0x5bb43b){return _0x5bb43b['destroy']()[_0xe4d9('0x24')](function(){_0x2af9b0[_0xe4d9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dddd2,_0x4954b5){return function(_0x529e2b){if(!_0x529e2b){_0x5dddd2[_0xe4d9('0x19')](0x194);}return _0x529e2b;};}function handleError(_0x48d481,_0x40ffd0){_0x40ffd0=_0x40ffd0||0x1f4;return function(_0x1f3d90){logger[_0xe4d9('0x25')](_0x1f3d90['stack']);if(_0x1f3d90[_0xe4d9('0x26')]){delete _0x1f3d90[_0xe4d9('0x26')];}_0x48d481[_0xe4d9('0x1a')](_0x40ffd0)[_0xe4d9('0x27')](_0x1f3d90);};}exports[_0xe4d9('0x28')]=function(_0x1904d1,_0x21b7a9){var _0x449cb8={'raw':![],'where':{'id':_0x1904d1[_0xe4d9('0x29')]['id']}},_0x1fb637={};_0x1fb637[_0xe4d9('0x2a')]=_[_0xe4d9('0x2b')](db['DashboardItem'][_0xe4d9('0x2c')]);_0x1fb637[_0xe4d9('0x2d')]=_[_0xe4d9('0x2b')](_0x1904d1[_0xe4d9('0x2d')]);_0x1fb637[_0xe4d9('0x2e')]=_[_0xe4d9('0x2f')](_0x1fb637['model'],_0x1fb637['query']);_0x449cb8['attributes']=_[_0xe4d9('0x2f')](_0x1fb637[_0xe4d9('0x2a')],qs[_0xe4d9('0x30')](_0x1904d1['query']['fields']));_0x449cb8['attributes']=_0x449cb8['attributes'][_0xe4d9('0x31')]?_0x449cb8[_0xe4d9('0x32')]:_0x1fb637['model'];if(_0x1904d1[_0xe4d9('0x2d')][_0xe4d9('0x33')]){_0x449cb8['include']=[{'all':!![]}];}_0x449cb8=_[_0xe4d9('0x34')]({},_0x449cb8,_0x1904d1[_0xe4d9('0x35')]);return db[_0xe4d9('0x36')][_0xe4d9('0x37')](_0x449cb8)[_0xe4d9('0x24')](handleEntityNotFound(_0x21b7a9,null))[_0xe4d9('0x24')](respondWithResult(_0x21b7a9,null))[_0xe4d9('0x38')](handleError(_0x21b7a9,null));};exports[_0xe4d9('0x39')]=function(_0x3fd26a,_0x20cc89){return db[_0xe4d9('0x36')][_0xe4d9('0x37')]({'where':{'id':_0x3fd26a[_0xe4d9('0x29')]['id']}})[_0xe4d9('0x24')](handleEntityNotFound(_0x20cc89,null))['then'](removeEntity(_0x20cc89,null))[_0xe4d9('0x38')](handleError(_0x20cc89,null));};function widgetAttributes(_0x20aef6){try{switch(_0x20aef6[_0xe4d9('0x3a')]){case _0xe4d9('0x3b'):return[{'name':_0xe4d9('0x3c'),'value':_0x20aef6[_0xe4d9('0x3c')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0]['value']:undefined)||'https://'}];case'custom':return[{'name':_0xe4d9('0x3e'),'value':_0x20aef6[_0xe4d9('0x3e')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0][_0xe4d9('0x3f')]:undefined)||''}];case _0xe4d9('0x40'):return[{'name':'attrHourFormat','value':_0x20aef6['attrHourFormat']||(_0x20aef6['attrs']&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0]['value']:undefined)||_0xe4d9('0x41')},{'name':_0xe4d9('0x42'),'value':_0x20aef6[_0xe4d9('0x42')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6['attrs'][0x1]?_0x20aef6[_0xe4d9('0x3d')][0x1][_0xe4d9('0x3f')]:undefined)||_0xe4d9('0x43')},{'name':_0xe4d9('0x44'),'value':_0x20aef6[_0xe4d9('0x44')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x2]?_0x20aef6[_0xe4d9('0x3d')][0x2][_0xe4d9('0x3f')]:undefined)||0xc}];case _0xe4d9('0x45'):return[{'name':_0xe4d9('0x46'),'value':_0x20aef6['attrMetric']||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0][_0xe4d9('0x3f')]:undefined)||_0xe4d9('0x47')},{'name':'attrVoiceQueues','value':_0x20aef6[_0xe4d9('0x48')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x1]?_0x20aef6[_0xe4d9('0x3d')][0x1][_0xe4d9('0x3f')]:undefined)||[]},{'name':_0xe4d9('0x44'),'value':_0x20aef6[_0xe4d9('0x44')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x2]?_0x20aef6[_0xe4d9('0x3d')][0x2]['value']:undefined)||0x14}];case _0xe4d9('0x49'):case _0xe4d9('0x4a'):return[{'name':_0xe4d9('0x4b'),'value':_0x20aef6['attrSerie1']||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0][_0xe4d9('0x3f')]:undefined)||_0xe4d9('0x47')},{'name':_0xe4d9('0x4c'),'value':_0x20aef6[_0xe4d9('0x4c')]||(_0x20aef6['attrs']&&_0x20aef6[_0xe4d9('0x3d')][0x1]?_0x20aef6[_0xe4d9('0x3d')][0x1][_0xe4d9('0x3f')]:undefined)||null},{'name':_0xe4d9('0x4d'),'value':_0x20aef6[_0xe4d9('0x4d')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6['attrs'][0x2]?_0x20aef6[_0xe4d9('0x3d')][0x2][_0xe4d9('0x3f')]:undefined)||null},{'name':_0xe4d9('0x48'),'value':_0x20aef6[_0xe4d9('0x48')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6[_0xe4d9('0x3d')][0x3]?_0x20aef6['attrs'][0x3][_0xe4d9('0x3f')]:undefined)||[]}];case _0xe4d9('0x4e'):return[{'name':'attrReport','type':_0x20aef6[_0xe4d9('0x4f')]||(_0x20aef6['attrs']&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0]['type']:undefined)||null,'value':_0x20aef6[_0xe4d9('0x50')]||(_0x20aef6['attrs']&&_0x20aef6[_0xe4d9('0x3d')][0x0]?_0x20aef6[_0xe4d9('0x3d')][0x0][_0xe4d9('0x3f')]:undefined)||null},{'name':'attrRefresh','value':_0x20aef6[_0xe4d9('0x51')]||(_0x20aef6[_0xe4d9('0x3d')]&&_0x20aef6['attrs'][0x1]?_0x20aef6[_0xe4d9('0x3d')][0x1][_0xe4d9('0x3f')]:undefined)||0x0}];default:return[];}}catch(_0x37af58){logger[_0xe4d9('0x25')]('widgetAttributes:\x20%s',JSON['stringify'](_0x37af58));return[];}}exports[_0xe4d9('0x52')]=function(_0x40674d,_0x13d5a3){if(_0x40674d[_0xe4d9('0x53')]){_0x40674d[_0xe4d9('0x53')][_0xe4d9('0x3d')]=widgetAttributes(_0x40674d['body']);}return db['DashboardItem'][_0xe4d9('0x52')](_0x40674d[_0xe4d9('0x53')],{})[_0xe4d9('0x24')](respondWithResult(_0x13d5a3,0xc9))[_0xe4d9('0x38')](handleError(_0x13d5a3,null));};exports[_0xe4d9('0x23')]=function(_0x390e64,_0x5893cb){if(_0x390e64[_0xe4d9('0x53')]['id']){delete _0x390e64[_0xe4d9('0x53')]['id'];}_0x390e64[_0xe4d9('0x53')]['attrs']=widgetAttributes(_0x390e64[_0xe4d9('0x53')]);return db[_0xe4d9('0x36')][_0xe4d9('0x37')]({'where':{'id':_0x390e64['params']['id']}})[_0xe4d9('0x24')](handleEntityNotFound(_0x5893cb,null))['then'](saveUpdates(_0x390e64[_0xe4d9('0x53')],null))[_0xe4d9('0x24')](respondWithResult(_0x5893cb,null))[_0xe4d9('0x38')](handleError(_0x5893cb,null));};
\ No newline at end of file
index 5666b00..c73a16e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a6e=['hasOwnProperty','exports','events','DashboardItem','setMaxListeners','save','remove','emit'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x3a6e,0x12a));var _0xe3a6=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x3a6e[_0x19950b];return _0x3c6b41;};'use strict';var EventEmitter=require(_0xe3a6('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0xe3a6('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xe3a6('0x2')](0x0);var events={'afterCreate':_0xe3a6('0x3'),'afterUpdate':'update','afterDestroy':_0xe3a6('0x4')};function emitEvent(_0x2d74c3){return function(_0x281fd3,_0x4471fc,_0x5f38af){DashboardItemEvents['emit'](_0x2d74c3+':'+_0x281fd3['id'],_0x281fd3);DashboardItemEvents[_0xe3a6('0x5')](_0x2d74c3,_0x281fd3);_0x5f38af(null);};}for(var e in events){if(events[_0xe3a6('0x6')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0xe3a6('0x7')]=DashboardItemEvents;
\ No newline at end of file
+var _0x6a0b=['save','remove','emit','hasOwnProperty','hook','exports','events','setMaxListeners'];(function(_0x57c49f,_0xcb8a68){var _0x22340c=function(_0x5d75d5){while(--_0x5d75d5){_0x57c49f['push'](_0x57c49f['shift']());}};_0x22340c(++_0xcb8a68);}(_0x6a0b,0xf6));var _0xb6a0=function(_0x2c41c8,_0x33d894){_0x2c41c8=_0x2c41c8-0x0;var _0xed347d=_0x6a0b[_0x2c41c8];return _0xed347d;};'use strict';var EventEmitter=require(_0xb6a0('0x0'));var DashboardItem=require('../../mysqldb')['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xb6a0('0x1')](0x0);var events={'afterCreate':_0xb6a0('0x2'),'afterUpdate':'update','afterDestroy':_0xb6a0('0x3')};function emitEvent(_0x3e5b73){return function(_0x1505b1,_0x557a99,_0x4652da){DashboardItemEvents['emit'](_0x3e5b73+':'+_0x1505b1['id'],_0x1505b1);DashboardItemEvents[_0xb6a0('0x4')](_0x3e5b73,_0x1505b1);_0x4652da(null);};}for(var e in events){if(events[_0xb6a0('0x5')](e)){var event=events[e];DashboardItem[_0xb6a0('0x6')](e,emitEvent(event));}}module[_0xb6a0('0x7')]=DashboardItemEvents;
\ No newline at end of file
index 46a570c..098d67a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc459=['exports','define','DashboardItem','util','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x526e00,_0xfb8be4){var _0x33ed12=function(_0x3540d7){while(--_0x3540d7){_0x526e00['push'](_0x526e00['shift']());}};_0x33ed12(++_0xfb8be4);}(_0xc459,0x1d9));var _0x9c45=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc459[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x9c45('0x0'));var logger=require('../../config/logger')(_0x9c45('0x1'));var moment=require('moment');var BPromise=require(_0x9c45('0x2'));var rp=require(_0x9c45('0x3'));var fs=require('fs');var path=require(_0x9c45('0x4'));var rimraf=require(_0x9c45('0x5'));var config=require(_0x9c45('0x6'));var attributes=require('./dashboardItem.attributes');module[_0x9c45('0x7')]=function(_0x3fcb9f,_0x4ae79d){return _0x3fcb9f[_0x9c45('0x8')](_0x9c45('0x9'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4a1=['dashboard_items','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem'];(function(_0xf33ea3,_0x50c4be){var _0x99f38a=function(_0x241c0f){while(--_0x241c0f){_0xf33ea3['push'](_0xf33ea3['shift']());}};_0x99f38a(++_0x50c4be);}(_0xc4a1,0x1ef));var _0x1c4a=function(_0x366b05,_0x1afe70){_0x366b05=_0x366b05-0x0;var _0x393ffb=_0xc4a1[_0x366b05];return _0x393ffb;};'use strict';var _=require(_0x1c4a('0x0'));var util=require('util');var logger=require(_0x1c4a('0x1'))(_0x1c4a('0x2'));var moment=require(_0x1c4a('0x3'));var BPromise=require('bluebird');var rp=require(_0x1c4a('0x4'));var fs=require('fs');var path=require(_0x1c4a('0x5'));var rimraf=require(_0x1c4a('0x6'));var config=require(_0x1c4a('0x7'));var attributes=require(_0x1c4a('0x8'));module[_0x1c4a('0x9')]=function(_0x2685b1,_0x4732b2){return _0x2685b1[_0x1c4a('0xa')](_0x1c4a('0xb'),attributes,{'tableName':_0x1c4a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be4be9f..2c59943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe787=['./dashboardItem.socket','register','request','then','request\x20sent','debug','stringify','error','message','info','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x5e0c74,_0x379142){var _0x1df578=function(_0x28e480){while(--_0x28e480){_0x5e0c74['push'](_0x5e0c74['shift']());}};_0x1df578(++_0x379142);}(_0xe787,0x183));var _0x7e78=function(_0x571c1d,_0x3b0586){_0x571c1d=_0x571c1d-0x0;var _0x33c609=_0xe787[_0x571c1d];return _0x33c609;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7e78('0x0'));var BPromise=require(_0x7e78('0x1'));var rs=require(_0x7e78('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7e78('0x3'))['db'];var utils=require(_0x7e78('0x4'));var logger=require(_0x7e78('0x5'))('rpc');var config=require(_0x7e78('0x6'));var jayson=require(_0x7e78('0x7'));var client=jayson['client'][_0x7e78('0x8')]({'port':0x232a});config[_0x7e78('0x9')]=_[_0x7e78('0xa')](config['redis'],{'host':_0x7e78('0xb'),'port':0x18eb});var socket=require(_0x7e78('0xc'))(new Redis(config[_0x7e78('0x9')]));require(_0x7e78('0xd'))[_0x7e78('0xe')](socket);function respondWithRpcPromise(_0x51889a,_0x9fdf8d,_0x4c176f){return new BPromise(function(_0x5aa340,_0x147236){return client[_0x7e78('0xf')](_0x51889a,_0x4c176f)[_0x7e78('0x10')](function(_0x4e902b){logger['info']('DashboardItem,\x20%s,\x20%s',_0x9fdf8d,_0x7e78('0x11'));logger[_0x7e78('0x12')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0x9fdf8d,_0x7e78('0x11'),JSON[_0x7e78('0x13')](_0x4e902b));if(_0x4e902b[_0x7e78('0x14')]){if(_0x4e902b[_0x7e78('0x14')]['code']===0x1f4){logger[_0x7e78('0x14')]('DashboardItem,\x20%s,\x20%s',_0x9fdf8d,_0x4e902b[_0x7e78('0x14')][_0x7e78('0x15')]);return _0x147236(_0x4e902b[_0x7e78('0x14')][_0x7e78('0x15')]);}logger[_0x7e78('0x14')]('DashboardItem,\x20%s,\x20%s',_0x9fdf8d,_0x4e902b[_0x7e78('0x14')][_0x7e78('0x15')]);return _0x5aa340(_0x4e902b[_0x7e78('0x14')]['message']);}else{logger[_0x7e78('0x16')]('DashboardItem,\x20%s,\x20%s',_0x9fdf8d,_0x7e78('0x11'));_0x5aa340(_0x4e902b[_0x7e78('0x17')][_0x7e78('0x15')]);}})[_0x7e78('0x18')](function(_0x5482ae){logger['error']('DashboardItem,\x20%s,\x20%s',_0x9fdf8d,_0x5482ae);_0x147236(_0x5482ae);});});}
\ No newline at end of file
+var _0x41c8=['error','code','message','result','lodash','util','moment','bluebird','../../config/logger','../../config/environment','defaults','redis','localhost','socket.io-emitter','register','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4c55f0,_0x6b710d){var _0x24c6db=function(_0x1274ff){while(--_0x1274ff){_0x4c55f0['push'](_0x4c55f0['shift']());}};_0x24c6db(++_0x6b710d);}(_0x41c8,0xa5));var _0x841c=function(_0x312af1,_0x4e8934){_0x312af1=_0x312af1-0x0;var _0x44e008=_0x41c8[_0x312af1];return _0x44e008;};'use strict';var _=require(_0x841c('0x0'));var util=require(_0x841c('0x1'));var moment=require(_0x841c('0x2'));var BPromise=require(_0x841c('0x3'));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(_0x841c('0x4'))('rpc');var config=require(_0x841c('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x841c('0x6')](config[_0x841c('0x7')],{'host':_0x841c('0x8'),'port':0x18eb});var socket=require(_0x841c('0x9'))(new Redis(config[_0x841c('0x7')]));require('./dashboardItem.socket')[_0x841c('0xa')](socket);function respondWithRpcPromise(_0x21b754,_0x5d1cda,_0x8f5f65){return new BPromise(function(_0x50313a,_0x2af8fa){return client[_0x841c('0xb')](_0x21b754,_0x8f5f65)[_0x841c('0xc')](function(_0x17c46a){logger[_0x841c('0xd')](_0x841c('0xe'),_0x5d1cda,_0x841c('0xf'));logger[_0x841c('0x10')](_0x841c('0x11'),_0x5d1cda,_0x841c('0xf'),JSON[_0x841c('0x12')](_0x17c46a));if(_0x17c46a[_0x841c('0x13')]){if(_0x17c46a[_0x841c('0x13')][_0x841c('0x14')]===0x1f4){logger[_0x841c('0x13')]('DashboardItem,\x20%s,\x20%s',_0x5d1cda,_0x17c46a[_0x841c('0x13')][_0x841c('0x15')]);return _0x2af8fa(_0x17c46a['error'][_0x841c('0x15')]);}logger['error'](_0x841c('0xe'),_0x5d1cda,_0x17c46a[_0x841c('0x13')][_0x841c('0x15')]);return _0x50313a(_0x17c46a[_0x841c('0x13')][_0x841c('0x15')]);}else{logger['info'](_0x841c('0xe'),_0x5d1cda,'request\x20sent');_0x50313a(_0x17c46a[_0x841c('0x16')][_0x841c('0x15')]);}})['catch'](function(_0xac3f99){logger['error'](_0x841c('0xe'),_0x5d1cda,_0xac3f99);_0x2af8fa(_0xac3f99);});});}
\ No newline at end of file
index 488190d..5f972e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4421=['update','removeListener','length','./dashboardItem.events','save','remove'];(function(_0x572791,_0x29f9cf){var _0x28078e=function(_0x382410){while(--_0x382410){_0x572791['push'](_0x572791['shift']());}};_0x28078e(++_0x29f9cf);}(_0x4421,0x123));var _0x1442=function(_0xe0645b,_0x5c5430){_0xe0645b=_0xe0645b-0x0;var _0x4f1db3=_0x4421[_0xe0645b];return _0x4f1db3;};'use strict';var DashboardItemEvents=require(_0x1442('0x0'));var events=[_0x1442('0x1'),_0x1442('0x2'),_0x1442('0x3')];function createListener(_0x1bb364,_0x3ef8d8){return function(_0x4866ac){_0x3ef8d8['emit'](_0x1bb364,_0x4866ac);};}function removeListener(_0xf11971,_0x477ef7){return function(){DashboardItemEvents[_0x1442('0x4')](_0xf11971,_0x477ef7);};}exports['register']=function(_0x1727ce){for(var _0x3b960d=0x0,_0x3d4277=events[_0x1442('0x5')];_0x3b960d<_0x3d4277;_0x3b960d++){var _0x1e77e7=events[_0x3b960d];var _0x32eaf1=createListener('dashboardItem:'+_0x1e77e7,_0x1727ce);DashboardItemEvents['on'](_0x1e77e7,_0x32eaf1);}};
\ No newline at end of file
+var _0xee64=['dashboardItem:','./dashboardItem.events','save','remove','update','register','length'];(function(_0x14102c,_0x1cb214){var _0x13297b=function(_0x1f4372){while(--_0x1f4372){_0x14102c['push'](_0x14102c['shift']());}};_0x13297b(++_0x1cb214);}(_0xee64,0x19e));var _0x4ee6=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xee64[_0x4b369d];return _0x571a98;};'use strict';var DashboardItemEvents=require(_0x4ee6('0x0'));var events=[_0x4ee6('0x1'),_0x4ee6('0x2'),_0x4ee6('0x3')];function createListener(_0x1ebad4,_0x341601){return function(_0xfaea17){_0x341601['emit'](_0x1ebad4,_0xfaea17);};}function removeListener(_0x28ebe9,_0x30f379){return function(){DashboardItemEvents['removeListener'](_0x28ebe9,_0x30f379);};}exports[_0x4ee6('0x4')]=function(_0x46d871){for(var _0x123f18=0x0,_0x3b20d9=events[_0x4ee6('0x5')];_0x123f18<_0x3b20d9;_0x123f18++){var _0x5ae574=events[_0x123f18];var _0x1444c2=createListener(_0x4ee6('0x6')+_0x5ae574,_0x46d871);DashboardItemEvents['on'](_0x5ae574,_0x1444c2);}};
\ No newline at end of file
index 7bbbcaf..9f72381 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x638f=['/:id','show','create','put','delete','isAuthenticated','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get'];(function(_0x3cbe1c,_0x4bcabd){var _0x5ee08b=function(_0x5c53e6){while(--_0x5c53e6){_0x3cbe1c['push'](_0x3cbe1c['shift']());}};_0x5ee08b(++_0x4bcabd);}(_0x638f,0x1bd));var _0xf638=function(_0x5dd6ab,_0x10d8e8){_0x5dd6ab=_0x5dd6ab-0x0;var _0xd9265f=_0x638f[_0x5dd6ab];return _0xd9265f;};'use strict';var multer=require(_0xf638('0x0'));var util=require('util');var path=require(_0xf638('0x1'));var timeout=require(_0xf638('0x2'));var express=require(_0xf638('0x3'));var router=express[_0xf638('0x4')]();var fs_extra=require(_0xf638('0x5'));var auth=require(_0xf638('0x6'));var interaction=require(_0xf638('0x7'));var config=require(_0xf638('0x8'));var controller=require(_0xf638('0x9'));router[_0xf638('0xa')](_0xf638('0xb'),auth['isAuthenticated'](),controller[_0xf638('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf638('0xd')]);router[_0xf638('0xe')](_0xf638('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xf638('0xf')]('/:id',auth[_0xf638('0x10')](),controller[_0xf638('0x11')]);module[_0xf638('0x12')]=router;
\ No newline at end of file
+var _0xecea=['/:id','isAuthenticated','post','create','put','delete','destroy','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboardItem.controller','get'];(function(_0x1deb72,_0x3f6338){var _0x18bbdf=function(_0x1b4b9b){while(--_0x1b4b9b){_0x1deb72['push'](_0x1deb72['shift']());}};_0x18bbdf(++_0x3f6338);}(_0xecea,0x18d));var _0xaece=function(_0x37d30d,_0x45ebd2){_0x37d30d=_0x37d30d-0x0;var _0x40faa5=_0xecea[_0x37d30d];return _0x40faa5;};'use strict';var multer=require(_0xaece('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xaece('0x1'));var express=require(_0xaece('0x2'));var router=express['Router']();var fs_extra=require(_0xaece('0x3'));var auth=require(_0xaece('0x4'));var interaction=require(_0xaece('0x5'));var config=require('../../config/environment');var controller=require(_0xaece('0x6'));router[_0xaece('0x7')](_0xaece('0x8'),auth[_0xaece('0x9')](),controller['show']);router[_0xaece('0xa')]('/',auth['isAuthenticated'](),controller[_0xaece('0xb')]);router[_0xaece('0xc')](_0xaece('0x8'),auth['isAuthenticated'](),controller['update']);router[_0xaece('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xaece('0xe')]);module['exports']=router;
\ No newline at end of file
index d747307..1432588 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6298=['first','third','STRING','exports','ENUM'];(function(_0x1557f2,_0x355782){var _0xa0d19a=function(_0x52f395){while(--_0x52f395){_0x1557f2['push'](_0x1557f2['shift']());}};_0xa0d19a(++_0x355782);}(_0x6298,0x71));var _0x8629=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6298[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x8629('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0x8629('0x1')](_0x8629('0x2'),'second',_0x8629('0x3')),'allowNull':![],'defaultValue':_0x8629('0x2')},'description':{'type':Sequelize[_0x8629('0x4')]}};
\ No newline at end of file
+var _0xb254=['STRING','sequelize','third','first'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb254,0xed));var _0x4b25=function(_0x2e8e63,_0x444a48){_0x2e8e63=_0x2e8e63-0x0;var _0x300643=_0xb254[_0x2e8e63];return _0x300643;};'use strict';var Sequelize=require(_0x4b25('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize['ENUM']('first','second',_0x4b25('0x1')),'allowNull':![],'defaultValue':_0x4b25('0x2')},'description':{'type':Sequelize[_0x4b25('0x3')]}};
\ No newline at end of file
index 171a1e9..b9cf5ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91e7=['find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','request-promise','moment','bluebird','mustache','util','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','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','destroy','get','Dispositions','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','Disposition','create','user','UserProfileSection'];(function(_0x552204,_0x222864){var _0x24988d=function(_0x5d893b){while(--_0x5d893b){_0x552204['push'](_0x552204['shift']());}};_0x24988d(++_0x222864);}(_0x91e7,0xf9));var _0x791e=function(_0x4d82ea,_0x4d459f){_0x4d82ea=_0x4d82ea-0x0;var _0x257f4a=_0x91e7[_0x4d82ea];return _0x257f4a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x791e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x791e('0x1'));var moment=require(_0x791e('0x2'));var BPromise=require(_0x791e('0x3'));var Mustache=require(_0x791e('0x4'));var util=require(_0x791e('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x791e('0x6'));var ejs=require(_0x791e('0x7'));var fs=require('fs');var fs_extra=require(_0x791e('0x8'));var _=require(_0x791e('0x9'));var squel=require('squel');var crypto=require(_0x791e('0xa'));var jsforce=require(_0x791e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x791e('0x6'));var querystring=require(_0x791e('0xc'));var Papa=require(_0x791e('0xd'));var Redis=require(_0x791e('0xe'));var authService=require(_0x791e('0xf'));var qs=require(_0x791e('0x10'));var as=require(_0x791e('0x11'));var hardwareService=require(_0x791e('0x12'));var logger=require(_0x791e('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x791e('0x14'));var licenseUtil=require(_0x791e('0x15'));var db=require(_0x791e('0x16'))['db'];function respondWithStatusCode(_0x5db3f1,_0x19c1c3){_0x19c1c3=_0x19c1c3||0xcc;return function(_0x15e8b3){if(_0x15e8b3){return _0x5db3f1['sendStatus'](_0x19c1c3);}return _0x5db3f1['status'](_0x19c1c3)['end']();};}function respondWithResult(_0x3f5c61,_0x291967){_0x291967=_0x291967||0xc8;return function(_0x58018f){if(_0x58018f){return _0x3f5c61[_0x791e('0x17')](_0x291967)[_0x791e('0x18')](_0x58018f);}};}function respondWithFilteredResult(_0x27acb3,_0x24514e){return function(_0x499c05){if(_0x499c05){var _0x5be547=typeof _0x24514e[_0x791e('0x19')]==='undefined'&&typeof _0x24514e[_0x791e('0x1a')]===_0x791e('0x1b');var _0x45349b=_0x499c05[_0x791e('0x1c')];var _0x2388e2=_0x5be547?0x0:_0x24514e[_0x791e('0x19')];var _0x4a4753=_0x5be547?_0x499c05['count']:_0x24514e[_0x791e('0x19')]+_0x24514e['limit'];var _0x44dd15;if(_0x4a4753>=_0x45349b){_0x4a4753=_0x45349b;_0x44dd15=0xc8;}else{_0x44dd15=0xce;}_0x27acb3[_0x791e('0x17')](_0x44dd15);return _0x27acb3['set'](_0x791e('0x1d'),_0x2388e2+'-'+_0x4a4753+'/'+_0x45349b)[_0x791e('0x18')](_0x499c05);}return null;};}function patchUpdates(_0x2958ac){return function(_0x3b26ae){try{jsonpatch['apply'](_0x3b26ae,_0x2958ac,!![]);}catch(_0x378efb){return BPromise[_0x791e('0x1e')](_0x378efb);}return _0x3b26ae[_0x791e('0x1f')]();};}function saveUpdates(_0x54bf3b,_0x506987){return function(_0x3016b7){if(_0x3016b7){return _0x3016b7[_0x791e('0x20')](_0x54bf3b)[_0x791e('0x21')](function(_0x37596e){return _0x37596e;});}return null;};}function removeEntity(_0x1ba250,_0x584054){return function(_0x545394){if(_0x545394){return _0x545394[_0x791e('0x22')]()[_0x791e('0x21')](function(){var _0x2a2a04=_0x545394[_0x791e('0x23')]({'plain':!![]});var _0x51a478=_0x791e('0x24');return db['UserProfileResource'][_0x791e('0x22')]({'where':{'type':_0x51a478,'resourceId':_0x2a2a04['id']}})[_0x791e('0x21')](function(){return _0x545394;});})[_0x791e('0x21')](function(){_0x1ba250[_0x791e('0x17')](0xcc)[_0x791e('0x25')]();});}};}function handleEntityNotFound(_0x166505,_0x2f88f6){return function(_0x5a7c7f){if(!_0x5a7c7f){_0x166505['sendStatus'](0x194);}return _0x5a7c7f;};}function handleError(_0x1545f4,_0x5307da){_0x5307da=_0x5307da||0x1f4;return function(_0x444c1d){logger[_0x791e('0x26')](_0x444c1d[_0x791e('0x27')]);if(_0x444c1d['name']){delete _0x444c1d[_0x791e('0x28')];}_0x1545f4[_0x791e('0x17')](_0x5307da)[_0x791e('0x29')](_0x444c1d);};}exports[_0x791e('0x2a')]=function(_0x39541a,_0x34a4e5){var _0x35b201={},_0xf947ca={},_0x1189f0={'count':0x0,'rows':[]};var _0x277da5=_[_0x791e('0x2b')](db['Disposition'][_0x791e('0x2c')],function(_0x194867){return{'name':_0x194867[_0x791e('0x2d')],'type':_0x194867[_0x791e('0x2e')][_0x791e('0x2f')]};});_0xf947ca[_0x791e('0x30')]=_[_0x791e('0x2b')](_0x277da5,_0x791e('0x28'));_0xf947ca[_0x791e('0x31')]=_['keys'](_0x39541a[_0x791e('0x31')]);_0xf947ca[_0x791e('0x32')]=_[_0x791e('0x33')](_0xf947ca[_0x791e('0x30')],_0xf947ca[_0x791e('0x31')]);_0x35b201['attributes']=_[_0x791e('0x33')](_0xf947ca[_0x791e('0x30')],qs[_0x791e('0x34')](_0x39541a[_0x791e('0x31')]['fields']));_0x35b201['attributes']=_0x35b201[_0x791e('0x35')][_0x791e('0x36')]?_0x35b201[_0x791e('0x35')]:_0xf947ca[_0x791e('0x30')];if(!_0x39541a[_0x791e('0x31')]['hasOwnProperty'](_0x791e('0x37'))){_0x35b201[_0x791e('0x1a')]=qs[_0x791e('0x1a')](_0x39541a[_0x791e('0x31')][_0x791e('0x1a')]);_0x35b201[_0x791e('0x19')]=qs[_0x791e('0x19')](_0x39541a['query']['offset']);}_0x35b201[_0x791e('0x38')]=qs[_0x791e('0x39')](_0x39541a[_0x791e('0x31')][_0x791e('0x39')]);_0x35b201[_0x791e('0x3a')]=qs[_0x791e('0x32')](_[_0x791e('0x3b')](_0x39541a[_0x791e('0x31')],_0xf947ca[_0x791e('0x32')]),_0x277da5);if(_0x39541a[_0x791e('0x31')][_0x791e('0x3c')]){_0x35b201[_0x791e('0x3a')]=_['merge'](_0x35b201[_0x791e('0x3a')],{'$or':_[_0x791e('0x2b')](_0x277da5,function(_0x9e310f){if(_0x9e310f[_0x791e('0x2e')]!=='VIRTUAL'){var _0xb6501={};_0xb6501[_0x9e310f[_0x791e('0x28')]]={'$like':'%'+_0x39541a['query'][_0x791e('0x3c')]+'%'};return _0xb6501;}})});}_0x35b201=_[_0x791e('0x3d')]({},_0x35b201,_0x39541a[_0x791e('0x3e')]);var _0x523040={'where':_0x35b201[_0x791e('0x3a')]};return db['Disposition']['count'](_0x523040)[_0x791e('0x21')](function(_0x1687f4){_0x1189f0[_0x791e('0x1c')]=_0x1687f4;if(_0x39541a[_0x791e('0x31')][_0x791e('0x3f')]){_0x35b201[_0x791e('0x40')]=[{'all':!![]}];}return db['Disposition'][_0x791e('0x41')](_0x35b201);})['then'](function(_0x598543){_0x1189f0[_0x791e('0x42')]=_0x598543;return _0x1189f0;})['then'](respondWithFilteredResult(_0x34a4e5,_0x35b201))[_0x791e('0x43')](handleError(_0x34a4e5,null));};exports[_0x791e('0x44')]=function(_0x160299,_0x222fa8){var _0x24a343={'raw':!![],'where':{'id':_0x160299[_0x791e('0x45')]['id']}},_0x3e1536={};_0x3e1536[_0x791e('0x30')]=_[_0x791e('0x46')](db[_0x791e('0x47')][_0x791e('0x2c')]);_0x3e1536[_0x791e('0x31')]=_[_0x791e('0x46')](_0x160299['query']);_0x3e1536[_0x791e('0x32')]=_[_0x791e('0x33')](_0x3e1536[_0x791e('0x30')],_0x3e1536['query']);_0x24a343['attributes']=_[_0x791e('0x33')](_0x3e1536[_0x791e('0x30')],qs[_0x791e('0x34')](_0x160299[_0x791e('0x31')][_0x791e('0x34')]));_0x24a343[_0x791e('0x35')]=_0x24a343[_0x791e('0x35')]['length']?_0x24a343[_0x791e('0x35')]:_0x3e1536[_0x791e('0x30')];if(_0x160299[_0x791e('0x31')][_0x791e('0x3f')]){_0x24a343[_0x791e('0x40')]=[{'all':!![]}];}_0x24a343=_[_0x791e('0x3d')]({},_0x24a343,_0x160299[_0x791e('0x3e')]);return db['Disposition']['find'](_0x24a343)['then'](handleEntityNotFound(_0x222fa8,null))[_0x791e('0x21')](respondWithResult(_0x222fa8,null))[_0x791e('0x43')](handleError(_0x222fa8,null));};exports[_0x791e('0x48')]=function(_0x1681a5,_0x3d1fca){return db[_0x791e('0x47')][_0x791e('0x48')](_0x1681a5['body'],{})[_0x791e('0x21')](function(_0x1ec72a){var _0x129dda=_0x1681a5[_0x791e('0x49')][_0x791e('0x23')]({'plain':!![]});if(!_0x129dda)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x129dda['role']==='user'){var _0x58e6e0=_0x1ec72a[_0x791e('0x23')]({'plain':!![]});var _0x7703b1=_0x791e('0x24');return db[_0x791e('0x4a')][_0x791e('0x4b')]({'where':{'name':_0x7703b1,'userProfileId':_0x129dda[_0x791e('0x4c')]},'raw':!![]})['then'](function(_0x4bf1a6){if(_0x4bf1a6&&_0x4bf1a6[_0x791e('0x4d')]===0x0){return db[_0x791e('0x4e')][_0x791e('0x48')]({'name':_0x58e6e0[_0x791e('0x28')],'resourceId':_0x58e6e0['id'],'type':_0x4bf1a6[_0x791e('0x28')],'sectionId':_0x4bf1a6['id']},{})[_0x791e('0x21')](function(){return _0x1ec72a;});}else{return _0x1ec72a;}})['catch'](function(_0x32c0fc){logger[_0x791e('0x26')](_0x791e('0x4f'),_0x32c0fc);throw _0x32c0fc;});}return _0x1ec72a;})[_0x791e('0x21')](respondWithResult(_0x3d1fca,0xc9))[_0x791e('0x43')](handleError(_0x3d1fca,null));};exports['update']=function(_0x59743c,_0x33a436){if(_0x59743c['body']['id']){delete _0x59743c['body']['id'];}return db[_0x791e('0x47')]['find']({'where':{'id':_0x59743c[_0x791e('0x45')]['id']}})['then'](handleEntityNotFound(_0x33a436,null))[_0x791e('0x21')](saveUpdates(_0x59743c[_0x791e('0x50')],null))[_0x791e('0x21')](respondWithResult(_0x33a436,null))[_0x791e('0x43')](handleError(_0x33a436,null));};exports[_0x791e('0x22')]=function(_0x34e23d,_0x428b7f){return db[_0x791e('0x47')][_0x791e('0x4b')]({'where':{'id':_0x34e23d[_0x791e('0x45')]['id']}})[_0x791e('0x21')](handleEntityNotFound(_0x428b7f,null))[_0x791e('0x21')](removeEntity(_0x428b7f,null))[_0x791e('0x43')](handleError(_0x428b7f,null));};
\ No newline at end of file
+var _0xb72d=['attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','reject','update','destroy','then','get','Dispositions','error','stack','name','send','map','Disposition','rawAttributes','fieldName','type','key','query','keys','model','intersection','fields'];(function(_0x1c9398,_0x223be8){var _0x5187af=function(_0xcde780){while(--_0xcde780){_0x1c9398['push'](_0x1c9398['shift']());}};_0x5187af(++_0x223be8);}(_0xb72d,0xc4));var _0xdb72=function(_0x32a630,_0x3f834b){_0x32a630=_0x32a630-0x0;var _0xa30ad5=_0xb72d[_0x32a630];return _0xa30ad5;};'use strict';var emlformat=require(_0xdb72('0x0'));var rimraf=require(_0xdb72('0x1'));var zipdir=require(_0xdb72('0x2'));var jsonpatch=require(_0xdb72('0x3'));var rp=require('request-promise');var moment=require(_0xdb72('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xdb72('0x5'));var util=require(_0xdb72('0x6'));var path=require(_0xdb72('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdb72('0x8'));var fs=require('fs');var fs_extra=require(_0xdb72('0x9'));var _=require(_0xdb72('0xa'));var squel=require(_0xdb72('0xb'));var crypto=require(_0xdb72('0xc'));var jsforce=require(_0xdb72('0xd'));var deskjs=require(_0xdb72('0xe'));var toCsv=require(_0xdb72('0xf'));var querystring=require(_0xdb72('0x10'));var Papa=require(_0xdb72('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xdb72('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdb72('0x13'));var logger=require(_0xdb72('0x14'))(_0xdb72('0x15'));var utils=require(_0xdb72('0x16'));var config=require(_0xdb72('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xdb72('0x18'))['db'];function respondWithStatusCode(_0x3d468e,_0x4f89d1){_0x4f89d1=_0x4f89d1||0xcc;return function(_0x39ffb4){if(_0x39ffb4){return _0x3d468e['sendStatus'](_0x4f89d1);}return _0x3d468e[_0xdb72('0x19')](_0x4f89d1)[_0xdb72('0x1a')]();};}function respondWithResult(_0x33a9af,_0x485a34){_0x485a34=_0x485a34||0xc8;return function(_0x223f54){if(_0x223f54){return _0x33a9af['status'](_0x485a34)[_0xdb72('0x1b')](_0x223f54);}};}function respondWithFilteredResult(_0x5f2e42,_0xf66112){return function(_0x3e9332){if(_0x3e9332){var _0x28fa28=typeof _0xf66112[_0xdb72('0x1c')]===_0xdb72('0x1d')&&typeof _0xf66112[_0xdb72('0x1e')]===_0xdb72('0x1d');var _0x584df1=_0x3e9332[_0xdb72('0x1f')];var _0x320165=_0x28fa28?0x0:_0xf66112['offset'];var _0x204703=_0x28fa28?_0x3e9332[_0xdb72('0x1f')]:_0xf66112['offset']+_0xf66112['limit'];var _0x31a174;if(_0x204703>=_0x584df1){_0x204703=_0x584df1;_0x31a174=0xc8;}else{_0x31a174=0xce;}_0x5f2e42[_0xdb72('0x19')](_0x31a174);return _0x5f2e42['set']('Content-Range',_0x320165+'-'+_0x204703+'/'+_0x584df1)[_0xdb72('0x1b')](_0x3e9332);}return null;};}function patchUpdates(_0x209de7){return function(_0x41bf7b){try{jsonpatch['apply'](_0x41bf7b,_0x209de7,!![]);}catch(_0x5c6625){return BPromise[_0xdb72('0x20')](_0x5c6625);}return _0x41bf7b['save']();};}function saveUpdates(_0x378086,_0x49c2f1){return function(_0x5e6a50){if(_0x5e6a50){return _0x5e6a50[_0xdb72('0x21')](_0x378086)['then'](function(_0x159981){return _0x159981;});}return null;};}function removeEntity(_0x3897f1,_0x7a5f0f){return function(_0x15fa6d){if(_0x15fa6d){return _0x15fa6d[_0xdb72('0x22')]()[_0xdb72('0x23')](function(){var _0x4b1aff=_0x15fa6d[_0xdb72('0x24')]({'plain':!![]});var _0x5de151=_0xdb72('0x25');return db['UserProfileResource'][_0xdb72('0x22')]({'where':{'type':_0x5de151,'resourceId':_0x4b1aff['id']}})[_0xdb72('0x23')](function(){return _0x15fa6d;});})['then'](function(){_0x3897f1[_0xdb72('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23c7bc,_0x99196f){return function(_0x2e54e0){if(!_0x2e54e0){_0x23c7bc['sendStatus'](0x194);}return _0x2e54e0;};}function handleError(_0x101a45,_0x2ba4ef){_0x2ba4ef=_0x2ba4ef||0x1f4;return function(_0x5dcf22){logger[_0xdb72('0x26')](_0x5dcf22[_0xdb72('0x27')]);if(_0x5dcf22['name']){delete _0x5dcf22[_0xdb72('0x28')];}_0x101a45[_0xdb72('0x19')](_0x2ba4ef)[_0xdb72('0x29')](_0x5dcf22);};}exports['index']=function(_0x2aa080,_0x5dc222){var _0x55a974={},_0x486898={},_0x93c4fa={'count':0x0,'rows':[]};var _0x551f53=_[_0xdb72('0x2a')](db[_0xdb72('0x2b')][_0xdb72('0x2c')],function(_0x4eac3f){return{'name':_0x4eac3f[_0xdb72('0x2d')],'type':_0x4eac3f[_0xdb72('0x2e')][_0xdb72('0x2f')]};});_0x486898['model']=_['map'](_0x551f53,_0xdb72('0x28'));_0x486898[_0xdb72('0x30')]=_[_0xdb72('0x31')](_0x2aa080[_0xdb72('0x30')]);_0x486898['filters']=_['intersection'](_0x486898[_0xdb72('0x32')],_0x486898[_0xdb72('0x30')]);_0x55a974['attributes']=_[_0xdb72('0x33')](_0x486898[_0xdb72('0x32')],qs[_0xdb72('0x34')](_0x2aa080[_0xdb72('0x30')][_0xdb72('0x34')]));_0x55a974[_0xdb72('0x35')]=_0x55a974[_0xdb72('0x35')]['length']?_0x55a974[_0xdb72('0x35')]:_0x486898['model'];if(!_0x2aa080[_0xdb72('0x30')][_0xdb72('0x36')](_0xdb72('0x37'))){_0x55a974[_0xdb72('0x1e')]=qs[_0xdb72('0x1e')](_0x2aa080[_0xdb72('0x30')][_0xdb72('0x1e')]);_0x55a974[_0xdb72('0x1c')]=qs[_0xdb72('0x1c')](_0x2aa080[_0xdb72('0x30')][_0xdb72('0x1c')]);}_0x55a974[_0xdb72('0x38')]=qs[_0xdb72('0x39')](_0x2aa080[_0xdb72('0x30')][_0xdb72('0x39')]);_0x55a974[_0xdb72('0x3a')]=qs[_0xdb72('0x3b')](_[_0xdb72('0x3c')](_0x2aa080['query'],_0x486898['filters']),_0x551f53);if(_0x2aa080[_0xdb72('0x30')][_0xdb72('0x3d')]){_0x55a974['where']=_[_0xdb72('0x3e')](_0x55a974[_0xdb72('0x3a')],{'$or':_[_0xdb72('0x2a')](_0x551f53,function(_0x155f89){if(_0x155f89[_0xdb72('0x2e')]!==_0xdb72('0x3f')){var _0x1c8530={};_0x1c8530[_0x155f89[_0xdb72('0x28')]]={'$like':'%'+_0x2aa080[_0xdb72('0x30')][_0xdb72('0x3d')]+'%'};return _0x1c8530;}})});}_0x55a974=_[_0xdb72('0x3e')]({},_0x55a974,_0x2aa080[_0xdb72('0x40')]);var _0x2f6e4d={'where':_0x55a974[_0xdb72('0x3a')]};return db[_0xdb72('0x2b')][_0xdb72('0x1f')](_0x2f6e4d)['then'](function(_0x539e72){_0x93c4fa[_0xdb72('0x1f')]=_0x539e72;if(_0x2aa080[_0xdb72('0x30')][_0xdb72('0x41')]){_0x55a974[_0xdb72('0x42')]=[{'all':!![]}];}return db[_0xdb72('0x2b')][_0xdb72('0x43')](_0x55a974);})['then'](function(_0x798fe3){_0x93c4fa[_0xdb72('0x44')]=_0x798fe3;return _0x93c4fa;})[_0xdb72('0x23')](respondWithFilteredResult(_0x5dc222,_0x55a974))['catch'](handleError(_0x5dc222,null));};exports[_0xdb72('0x45')]=function(_0x47e971,_0x1085d3){var _0xa0b7e9={'raw':!![],'where':{'id':_0x47e971[_0xdb72('0x46')]['id']}},_0x783f61={};_0x783f61['model']=_[_0xdb72('0x31')](db[_0xdb72('0x2b')]['rawAttributes']);_0x783f61[_0xdb72('0x30')]=_['keys'](_0x47e971[_0xdb72('0x30')]);_0x783f61['filters']=_[_0xdb72('0x33')](_0x783f61['model'],_0x783f61[_0xdb72('0x30')]);_0xa0b7e9[_0xdb72('0x35')]=_[_0xdb72('0x33')](_0x783f61[_0xdb72('0x32')],qs[_0xdb72('0x34')](_0x47e971[_0xdb72('0x30')][_0xdb72('0x34')]));_0xa0b7e9[_0xdb72('0x35')]=_0xa0b7e9[_0xdb72('0x35')][_0xdb72('0x47')]?_0xa0b7e9[_0xdb72('0x35')]:_0x783f61[_0xdb72('0x32')];if(_0x47e971[_0xdb72('0x30')][_0xdb72('0x41')]){_0xa0b7e9[_0xdb72('0x42')]=[{'all':!![]}];}_0xa0b7e9=_[_0xdb72('0x3e')]({},_0xa0b7e9,_0x47e971[_0xdb72('0x40')]);return db['Disposition']['find'](_0xa0b7e9)['then'](handleEntityNotFound(_0x1085d3,null))[_0xdb72('0x23')](respondWithResult(_0x1085d3,null))[_0xdb72('0x48')](handleError(_0x1085d3,null));};exports['create']=function(_0x5b8a15,_0x2b8a0a){return db[_0xdb72('0x2b')][_0xdb72('0x49')](_0x5b8a15[_0xdb72('0x4a')],{})[_0xdb72('0x23')](function(_0x3afefb){var _0x3e8182=_0x5b8a15[_0xdb72('0x4b')][_0xdb72('0x24')]({'plain':!![]});if(!_0x3e8182)throw new Error(_0xdb72('0x4c'));if(_0x3e8182['role']===_0xdb72('0x4b')){var _0x38b81b=_0x3afefb[_0xdb72('0x24')]({'plain':!![]});var _0x1dea90=_0xdb72('0x25');return db[_0xdb72('0x4d')][_0xdb72('0x4e')]({'where':{'name':_0x1dea90,'userProfileId':_0x3e8182[_0xdb72('0x4f')]},'raw':!![]})[_0xdb72('0x23')](function(_0x33e0de){if(_0x33e0de&&_0x33e0de[_0xdb72('0x50')]===0x0){return db[_0xdb72('0x51')][_0xdb72('0x49')]({'name':_0x38b81b[_0xdb72('0x28')],'resourceId':_0x38b81b['id'],'type':_0x33e0de[_0xdb72('0x28')],'sectionId':_0x33e0de['id']},{})[_0xdb72('0x23')](function(){return _0x3afefb;});}else{return _0x3afefb;}})[_0xdb72('0x48')](function(_0x19c305){logger[_0xdb72('0x26')](_0xdb72('0x52'),_0x19c305);throw _0x19c305;});}return _0x3afefb;})[_0xdb72('0x23')](respondWithResult(_0x2b8a0a,0xc9))[_0xdb72('0x48')](handleError(_0x2b8a0a,null));};exports[_0xdb72('0x21')]=function(_0x2e6b5f,_0xe92578){if(_0x2e6b5f['body']['id']){delete _0x2e6b5f[_0xdb72('0x4a')]['id'];}return db['Disposition'][_0xdb72('0x4e')]({'where':{'id':_0x2e6b5f[_0xdb72('0x46')]['id']}})[_0xdb72('0x23')](handleEntityNotFound(_0xe92578,null))['then'](saveUpdates(_0x2e6b5f[_0xdb72('0x4a')],null))[_0xdb72('0x23')](respondWithResult(_0xe92578,null))['catch'](handleError(_0xe92578,null));};exports[_0xdb72('0x22')]=function(_0x21c66b,_0x33e9d2){return db[_0xdb72('0x2b')]['find']({'where':{'id':_0x21c66b[_0xdb72('0x46')]['id']}})[_0xdb72('0x23')](handleEntityNotFound(_0x33e9d2,null))[_0xdb72('0x23')](removeEntity(_0x33e9d2,null))[_0xdb72('0x48')](handleError(_0x33e9d2,null));};
\ No newline at end of file
index 6339223..f30b962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70fa=['exports','define','Disposition','name_voice','name','ListId','name_chat','ChatWebsiteId','name_mail','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','name_whatsapp','WhatsappAccountId','util','api','moment','bluebird','request-promise','./disposition.attributes'];(function(_0x4571fc,_0x3c7af8){var _0x4a9a0e=function(_0x258afb){while(--_0x258afb){_0x4571fc['push'](_0x4571fc['shift']());}};_0x4a9a0e(++_0x3c7af8);}(_0x70fa,0x15a));var _0xa70f=function(_0x58c20f,_0x4cdb1b){_0x58c20f=_0x58c20f-0x0;var _0x3b0318=_0x70fa[_0x58c20f];return _0x3b0318;};'use strict';var _=require('lodash');var util=require(_0xa70f('0x0'));var logger=require('../../config/logger')(_0xa70f('0x1'));var moment=require(_0xa70f('0x2'));var BPromise=require(_0xa70f('0x3'));var rp=require(_0xa70f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa70f('0x5'));module[_0xa70f('0x6')]=function(_0x529d9d,_0x133ddd){return _0x529d9d[_0xa70f('0x7')](_0xa70f('0x8'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0xa70f('0x9'),'fields':[_0xa70f('0xa'),_0xa70f('0xb')]},{'unique':!![],'name':_0xa70f('0xc'),'fields':['name',_0xa70f('0xd')]},{'unique':!![],'name':_0xa70f('0xe'),'fields':[_0xa70f('0xa'),'MailAccountId']},{'unique':!![],'name':_0xa70f('0xf'),'fields':[_0xa70f('0xa'),_0xa70f('0x10')]},{'unique':!![],'name':_0xa70f('0x11'),'fields':[_0xa70f('0xa'),_0xa70f('0x12')]},{'unique':!![],'name':_0xa70f('0x13'),'fields':['name','OpenchannelAccountId']},{'unique':!![],'name':_0xa70f('0x14'),'fields':[_0xa70f('0xa'),_0xa70f('0x15')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7379=['tools_dispositions','name_voice','name','ListId','name_chat','ChatWebsiteId','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./disposition.attributes','exports','define','Disposition'];(function(_0x264ca3,_0x65b645){var _0x156d1e=function(_0x3c2990){while(--_0x3c2990){_0x264ca3['push'](_0x264ca3['shift']());}};_0x156d1e(++_0x65b645);}(_0x7379,0x8f));var _0x9737=function(_0x49cd8d,_0x222915){_0x49cd8d=_0x49cd8d-0x0;var _0x8c7e74=_0x7379[_0x49cd8d];return _0x8c7e74;};'use strict';var _=require(_0x9737('0x0'));var util=require(_0x9737('0x1'));var logger=require(_0x9737('0x2'))(_0x9737('0x3'));var moment=require(_0x9737('0x4'));var BPromise=require(_0x9737('0x5'));var rp=require(_0x9737('0x6'));var fs=require('fs');var path=require(_0x9737('0x7'));var rimraf=require(_0x9737('0x8'));var config=require('../../config/environment');var attributes=require(_0x9737('0x9'));module[_0x9737('0xa')]=function(_0x9ee41,_0xb3ddd6){return _0x9ee41[_0x9737('0xb')](_0x9737('0xc'),attributes,{'tableName':_0x9737('0xd'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x9737('0xe'),'fields':[_0x9737('0xf'),_0x9737('0x10')]},{'unique':!![],'name':_0x9737('0x11'),'fields':[_0x9737('0xf'),_0x9737('0x12')]},{'unique':!![],'name':'name_mail','fields':[_0x9737('0xf'),_0x9737('0x13')]},{'unique':!![],'name':_0x9737('0x14'),'fields':[_0x9737('0xf'),_0x9737('0x15')]},{'unique':!![],'name':_0x9737('0x16'),'fields':['name',_0x9737('0x17')]},{'unique':!![],'name':'name_openchannel','fields':[_0x9737('0xf'),'OpenchannelAccountId']},{'unique':!![],'name':_0x9737('0x18'),'fields':['name',_0x9737('0x19')]}],'timestamps':!![]});};
\ No newline at end of file
index 5cdaf1d..a6a48bc 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(_0x22f971,_0x28989b){var _0x1a831d=function(_0x20663f){while(--_0x20663f){_0x22f971['push'](_0x22f971['shift']());}};_0x1a831d(++_0x28989b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'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(_0x313ce2,_0x42185e){var _0x220139=function(_0x221e2c){while(--_0x221e2c){_0x313ce2['push'](_0x313ce2['shift']());}};_0x220139(++_0x42185e);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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 7aea6e9..1534d11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x842d=['destroy','exports','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','./disposition.controller','get','index','/:id','isAuthenticated','show','post','create','put','delete'];(function(_0x526c13,_0x5d5bbf){var _0x107079=function(_0x435c92){while(--_0x435c92){_0x526c13['push'](_0x526c13['shift']());}};_0x107079(++_0x5d5bbf);}(_0x842d,0xbd));var _0xd842=function(_0x25b24a,_0x1c0163){_0x25b24a=_0x25b24a-0x0;var _0x224e68=_0x842d[_0x25b24a];return _0x224e68;};'use strict';var multer=require('multer');var util=require(_0xd842('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd842('0x1'));var router=express['Router']();var fs_extra=require(_0xd842('0x2'));var auth=require(_0xd842('0x3'));var interaction=require(_0xd842('0x4'));var config=require('../../config/environment');var controller=require(_0xd842('0x5'));router[_0xd842('0x6')]('/',auth['isAuthenticated'](),controller[_0xd842('0x7')]);router[_0xd842('0x6')](_0xd842('0x8'),auth[_0xd842('0x9')](),controller[_0xd842('0xa')]);router[_0xd842('0xb')]('/',auth[_0xd842('0x9')](),controller[_0xd842('0xc')]);router[_0xd842('0xd')](_0xd842('0x8'),auth[_0xd842('0x9')](),controller['update']);router[_0xd842('0xe')](_0xd842('0x8'),auth[_0xd842('0x9')](),controller[_0xd842('0xf')]);module[_0xd842('0x10')]=router;
\ No newline at end of file
+var _0x1499=['./disposition.controller','get','/:id','isAuthenticated','show','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment'];(function(_0x17167a,_0x3c3a46){var _0x32ffed=function(_0x2a6b6){while(--_0x2a6b6){_0x17167a['push'](_0x17167a['shift']());}};_0x32ffed(++_0x3c3a46);}(_0x1499,0x118));var _0x9149=function(_0x5752ce,_0xf55e34){_0x5752ce=_0x5752ce-0x0;var _0xe2ba99=_0x1499[_0x5752ce];return _0xe2ba99;};'use strict';var multer=require(_0x9149('0x0'));var util=require(_0x9149('0x1'));var path=require(_0x9149('0x2'));var timeout=require(_0x9149('0x3'));var express=require(_0x9149('0x4'));var router=express[_0x9149('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9149('0x6'));var config=require(_0x9149('0x7'));var controller=require(_0x9149('0x8'));router[_0x9149('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9149('0x9')](_0x9149('0xa'),auth[_0x9149('0xb')](),controller[_0x9149('0xc')]);router['post']('/',auth[_0x9149('0xb')](),controller['create']);router['put'](_0x9149('0xa'),auth[_0x9149('0xb')](),controller[_0x9149('0xd')]);router['delete'](_0x9149('0xa'),auth[_0x9149('0xb')](),controller[_0x9149('0xe')]);module[_0x9149('0xf')]=router;
\ No newline at end of file
index 81107d9..758f9c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99ce=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','sequelize','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','2400','4800','7200','9600','12000','14400','v17,v27,v29','INTEGER','IAX','KHOMP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0x99ce,0x168));var _0xe99c=function(_0x38e6cd,_0x32637b){_0x38e6cd=_0x38e6cd-0x0;var _0x2fa526=_0x99ce[_0x38e6cd];return _0x2fa526;};'use strict';var Sequelize=require(_0xe99c('0x0'));module['exports']={'name':{'type':Sequelize[_0xe99c('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xe99c('0x1')]},'ecm':{'type':Sequelize[_0xe99c('0x2')](_0xe99c('0x3'),'no'),'defaultValue':_0xe99c('0x3')},'headerinfo':{'type':Sequelize[_0xe99c('0x1')],'defaultValue':_0xe99c('0x4')},'localstationid':{'type':Sequelize['STRING'],'unique':'localstationid'},'minrate':{'type':Sequelize[_0xe99c('0x2')](_0xe99c('0x5'),_0xe99c('0x6'),_0xe99c('0x7'),_0xe99c('0x8'),_0xe99c('0x9'),_0xe99c('0xa')),'defaultValue':_0xe99c('0x6')},'maxrate':{'type':Sequelize[_0xe99c('0x2')](_0xe99c('0x5'),_0xe99c('0x6'),_0xe99c('0x7'),_0xe99c('0x8'),_0xe99c('0x9'),'14400'),'defaultValue':'14400'},'modem':{'type':Sequelize[_0xe99c('0x1')],'defaultValue':_0xe99c('0xb')},'gateway':{'type':Sequelize[_0xe99c('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xe99c('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xe99c('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM']('SIP',_0xe99c('0xd'),'DADHI',_0xe99c('0xe')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0xe99c('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xe99c('0xf');}},'notificationSound':{'type':Sequelize[_0xe99c('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xe99c('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xe99c('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe99c('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xe99c('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xe99c('0xc')],'allowNull':!![],'defaultValue':null,'comment':_0xe99c('0x11')},'mandatoryDisposition':{'type':Sequelize[_0xe99c('0x10')],'defaultValue':![],'comment':_0xe99c('0x12'),'set':function(_0x341ca4){if(!_0x341ca4)this['setDataValue'](_0xe99c('0x13'),null);this[_0xe99c('0x14')]('mandatoryDisposition',_0x341ca4);}}};
\ No newline at end of file
+var _0x9290=['SIP','IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','yes','localstationid','ENUM','2400','4800','7200','9600','14400','v17,v27,v29','INTEGER'];(function(_0xbe3ef8,_0x2a9242){var _0x191461=function(_0x2dcabf){while(--_0x2dcabf){_0xbe3ef8['push'](_0xbe3ef8['shift']());}};_0x191461(++_0x2a9242);}(_0x9290,0x1c2));var _0x0929=function(_0x5c9865,_0x1a299a){_0x5c9865=_0x5c9865-0x0;var _0x54c22b=_0x9290[_0x5c9865];return _0x54c22b;};'use strict';var Sequelize=require('sequelize');module[_0x0929('0x0')]={'name':{'type':Sequelize[_0x0929('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x0929('0x1')]},'ecm':{'type':Sequelize['ENUM'](_0x0929('0x2'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x0929('0x1')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0x0929('0x1')],'unique':_0x0929('0x3')},'minrate':{'type':Sequelize[_0x0929('0x4')](_0x0929('0x5'),_0x0929('0x6'),_0x0929('0x7'),_0x0929('0x8'),'12000',_0x0929('0x9')),'defaultValue':_0x0929('0x6')},'maxrate':{'type':Sequelize[_0x0929('0x4')](_0x0929('0x5'),_0x0929('0x6'),_0x0929('0x7'),_0x0929('0x8'),'12000',_0x0929('0x9')),'defaultValue':_0x0929('0x9')},'modem':{'type':Sequelize[_0x0929('0x1')],'defaultValue':_0x0929('0xa')},'gateway':{'type':Sequelize[_0x0929('0x1')],'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[_0x0929('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x0929('0x4')](_0x0929('0xc'),_0x0929('0xd'),_0x0929('0xe'),_0x0929('0xf')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0x0929('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x0929('0x10')],'defaultValue':function(){return _0x0929('0x11');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0929('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0929('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0929('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0929('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0929('0xb')],'allowNull':!![],'defaultValue':null,'comment':_0x0929('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x0929('0x12')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1fd58e){if(!_0x1fd58e)this['setDataValue'](_0x0929('0x14'),null);this['setDataValue'](_0x0929('0x15'),_0x1fd58e);}}};
\ No newline at end of file
index 45bc529..1220ceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ed5=['eml-format','rimraf','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./faxAccount.socket','client','http','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','stack','send','index','Pause','map','FaxAccount','rawAttributes','fieldName','type','key','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','mandatoryDispositionPause','keys','includeAll','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','FaxAccounts','find','userProfileId','autoAssociation','describe','FaxAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addInteraction','FaxInteraction','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','tag','addApplications','sequelize','transaction','FaxApplication','findAndCountAll','priority','getApplications','from-voip-provider','exten','localstationid','app','system','description','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','headerinfo','maxrate','minrate','modem','t38timeout','FAXOPT(','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','addAccountApplications','bulkCreate','updateAccountApplications','VoiceExtension','updatedAt','TrunkId','ListId','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','List','Contacts','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','Send\x20Fax\x20failed','out','filename','spread','ContactId','dataValues','Messages','SendFax','omit','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents'];(function(_0xe54217,_0x173067){var _0x2f7dbb=function(_0x2b9e34){while(--_0x2b9e34){_0xe54217['push'](_0xe54217['shift']());}};_0x2f7dbb(++_0x173067);}(_0x8ed5,0x182));var _0x58ed=function(_0x16dec6,_0x3e1cf3){_0x16dec6=_0x16dec6-0x0;var _0x234932=_0x8ed5[_0x16dec6];return _0x234932;};'use strict';var emlformat=require(_0x58ed('0x0'));var rimraf=require(_0x58ed('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x58ed('0x2'));var moment=require(_0x58ed('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x58ed('0x4'));var util=require(_0x58ed('0x5'));var path=require(_0x58ed('0x6'));var sox=require(_0x58ed('0x7'));var csv=require('to-csv');var ejs=require(_0x58ed('0x8'));var fs=require('fs');var fs_extra=require(_0x58ed('0x9'));var _=require(_0x58ed('0xa'));var squel=require('squel');var crypto=require(_0x58ed('0xb'));var jsforce=require(_0x58ed('0xc'));var deskjs=require(_0x58ed('0xd'));var toCsv=require('to-csv');var querystring=require(_0x58ed('0xe'));var Papa=require(_0x58ed('0xf'));var Redis=require(_0x58ed('0x10'));var authService=require(_0x58ed('0x11'));var qs=require(_0x58ed('0x12'));var as=require(_0x58ed('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x58ed('0x14'));var utils=require(_0x58ed('0x15'));var config=require(_0x58ed('0x16'));var licenseUtil=require(_0x58ed('0x17'));var db=require(_0x58ed('0x18'))['db'];config['redis']=_[_0x58ed('0x19')](config[_0x58ed('0x1a')],{'host':_0x58ed('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x58ed('0x1a')]));require(_0x58ed('0x1c'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x58ed('0x1d')]['http']({'port':0x232c});var client9002=jayson['client'][_0x58ed('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x5dcda5,_0xa534c8,_0xf56ba0,_0x40be6c){return new BPromise(function(_0x4a16ef,_0x4980d7){var _0x40f835=_0x40be6c||client;return _0x40f835[_0x58ed('0x1f')](_0x5dcda5,_0xf56ba0)['then'](function(_0x2ca1ab){logger[_0x58ed('0x20')](_0x58ed('0x21'),_0xa534c8,_0x58ed('0x22'));logger[_0x58ed('0x23')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0xa534c8,_0x58ed('0x22'),JSON[_0x58ed('0x24')](_0x2ca1ab));if(_0x2ca1ab[_0x58ed('0x25')]){if(_0x2ca1ab['error'][_0x58ed('0x26')]===0x1f4){logger[_0x58ed('0x25')](_0x58ed('0x21'),_0xa534c8,_0x2ca1ab[_0x58ed('0x25')][_0x58ed('0x27')]);return _0x4980d7(_0x2ca1ab[_0x58ed('0x25')][_0x58ed('0x27')]);}logger[_0x58ed('0x25')](_0x58ed('0x21'),_0xa534c8,_0x2ca1ab['error']['message']);return _0x4a16ef(_0x2ca1ab[_0x58ed('0x25')][_0x58ed('0x27')]);}else{logger[_0x58ed('0x20')](_0x58ed('0x21'),_0xa534c8,'request\x20sent');_0x4a16ef(_0x2ca1ab['result'][_0x58ed('0x27')]);}})['catch'](function(_0x1c5440){logger[_0x58ed('0x25')]('FaxAccount,\x20%s,\x20%s',_0xa534c8,_0x1c5440);_0x4980d7(_0x1c5440);});});}function respondWithStatusCode(_0x2c9047,_0x3716d6){_0x3716d6=_0x3716d6||0xcc;return function(_0x51d7e8){if(_0x51d7e8){return _0x2c9047[_0x58ed('0x28')](_0x3716d6);}return _0x2c9047[_0x58ed('0x29')](_0x3716d6)[_0x58ed('0x2a')]();};}function respondWithResult(_0x4b557a,_0x34abac){_0x34abac=_0x34abac||0xc8;return function(_0xf88cb){if(_0xf88cb){return _0x4b557a[_0x58ed('0x29')](_0x34abac)[_0x58ed('0x2b')](_0xf88cb);}};}function respondWithFilteredResult(_0x371025,_0x467437){return function(_0x86cf92){if(_0x86cf92){var _0x28f725=typeof _0x467437[_0x58ed('0x2c')]==='undefined'&&typeof _0x467437['limit']===_0x58ed('0x2d');var _0x28b922=_0x86cf92[_0x58ed('0x2e')];var _0x2a0639=_0x28f725?0x0:_0x467437[_0x58ed('0x2c')];var _0x3dff91=_0x28f725?_0x86cf92[_0x58ed('0x2e')]:_0x467437[_0x58ed('0x2c')]+_0x467437['limit'];var _0x4dc3d2;if(_0x3dff91>=_0x28b922){_0x3dff91=_0x28b922;_0x4dc3d2=0xc8;}else{_0x4dc3d2=0xce;}_0x371025[_0x58ed('0x29')](_0x4dc3d2);return _0x371025[_0x58ed('0x2f')](_0x58ed('0x30'),_0x2a0639+'-'+_0x3dff91+'/'+_0x28b922)[_0x58ed('0x2b')](_0x86cf92);}return null;};}function patchUpdates(_0x4efd8f){return function(_0xde5ee){try{jsonpatch[_0x58ed('0x31')](_0xde5ee,_0x4efd8f,!![]);}catch(_0x1d8e8f){return BPromise[_0x58ed('0x32')](_0x1d8e8f);}return _0xde5ee['save']();};}function saveUpdates(_0x870b6f,_0x197dec){return function(_0x46ec53){if(_0x46ec53){return _0x46ec53[_0x58ed('0x33')](_0x870b6f)[_0x58ed('0x34')](function(_0x2fd7f7){return _0x2fd7f7;});}return null;};}function removeEntity(_0x20fc6a,_0x2d9c7a){return function(_0x429a4e){if(_0x429a4e){return _0x429a4e[_0x58ed('0x35')]()[_0x58ed('0x34')](function(){var _0x3e1475=_0x429a4e[_0x58ed('0x36')]({'plain':!![]});var _0x2941df='FaxAccounts';return db[_0x58ed('0x37')][_0x58ed('0x35')]({'where':{'type':_0x2941df,'resourceId':_0x3e1475['id']}})[_0x58ed('0x34')](function(){return _0x429a4e;});})[_0x58ed('0x34')](function(){_0x20fc6a[_0x58ed('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37b9be,_0xb87b83){return function(_0x3a784f){if(!_0x3a784f){_0x37b9be['sendStatus'](0x194);}return _0x3a784f;};}function handleError(_0x56f3fc,_0x3d97bb){_0x3d97bb=_0x3d97bb||0x1f4;return function(_0x250380){logger[_0x58ed('0x25')](_0x250380[_0x58ed('0x38')]);if(_0x250380['name']){delete _0x250380['name'];}_0x56f3fc[_0x58ed('0x29')](_0x3d97bb)[_0x58ed('0x39')](_0x250380);};}exports[_0x58ed('0x3a')]=function(_0x2d1d1a,_0x38760a){var _0x19529f={'include':[{'model':db[_0x58ed('0x3b')],'as':'mandatoryDispositionPause'}]},_0x2db1fb={},_0x148bbb={'count':0x0,'rows':[]};var _0xca1af9=_[_0x58ed('0x3c')](db[_0x58ed('0x3d')][_0x58ed('0x3e')],function(_0x43bba9){return{'name':_0x43bba9[_0x58ed('0x3f')],'type':_0x43bba9[_0x58ed('0x40')][_0x58ed('0x41')]};});_0x2db1fb[_0x58ed('0x42')]=_[_0x58ed('0x3c')](_0xca1af9,_0x58ed('0x43'));_0x2db1fb['query']=_['keys'](_0x2d1d1a[_0x58ed('0x44')]);_0x2db1fb[_0x58ed('0x45')]=_[_0x58ed('0x46')](_0x2db1fb[_0x58ed('0x42')],_0x2db1fb[_0x58ed('0x44')]);_0x19529f[_0x58ed('0x47')]=_['intersection'](_0x2db1fb[_0x58ed('0x42')],qs[_0x58ed('0x48')](_0x2d1d1a[_0x58ed('0x44')][_0x58ed('0x48')]));_0x19529f['attributes']=_0x19529f[_0x58ed('0x47')][_0x58ed('0x49')]?_0x19529f[_0x58ed('0x47')]:_0x2db1fb[_0x58ed('0x42')];if(!_0x2d1d1a[_0x58ed('0x44')][_0x58ed('0x4a')](_0x58ed('0x4b'))){_0x19529f[_0x58ed('0x4c')]=qs['limit'](_0x2d1d1a[_0x58ed('0x44')]['limit']);_0x19529f[_0x58ed('0x2c')]=qs[_0x58ed('0x2c')](_0x2d1d1a[_0x58ed('0x44')]['offset']);}_0x19529f[_0x58ed('0x4d')]=qs[_0x58ed('0x4e')](_0x2d1d1a[_0x58ed('0x44')][_0x58ed('0x4e')]);_0x19529f[_0x58ed('0x4f')]=qs['filters'](_[_0x58ed('0x50')](_0x2d1d1a[_0x58ed('0x44')],_0x2db1fb[_0x58ed('0x45')]),_0xca1af9);if(_0x2d1d1a[_0x58ed('0x44')][_0x58ed('0x51')]){_0x19529f[_0x58ed('0x4f')]=_[_0x58ed('0x52')](_0x19529f[_0x58ed('0x4f')],{'$or':_[_0x58ed('0x3c')](_0xca1af9,function(_0x2c9cd){if(_0x2c9cd['type']!==_0x58ed('0x53')){var _0x2f6c10={};_0x2f6c10[_0x2c9cd[_0x58ed('0x43')]]={'$like':'%'+_0x2d1d1a['query'][_0x58ed('0x51')]+'%'};return _0x2f6c10;}})});}_0x19529f=_[_0x58ed('0x52')]({},_0x19529f,_0x2d1d1a[_0x58ed('0x54')]);var _0xadf095={'where':_0x19529f[_0x58ed('0x4f')]};return db[_0x58ed('0x3d')][_0x58ed('0x2e')](_0xadf095)[_0x58ed('0x34')](function(_0x1e52aa){_0x148bbb[_0x58ed('0x2e')]=_0x1e52aa;if(_0x2d1d1a[_0x58ed('0x44')]['includeAll']){_0x19529f[_0x58ed('0x55')]=[{'all':!![]}];}return db['FaxAccount'][_0x58ed('0x56')](_0x19529f);})[_0x58ed('0x34')](function(_0x1a2367){_0x148bbb[_0x58ed('0x57')]=_0x1a2367;return _0x148bbb;})[_0x58ed('0x34')](respondWithFilteredResult(_0x38760a,_0x19529f))['catch'](handleError(_0x38760a,null));};exports[_0x58ed('0x58')]=function(_0x987d6a,_0x1c0021){var _0x3b7031={'raw':![],'where':{'id':_0x987d6a[_0x58ed('0x59')]['id']},'include':[{'model':db[_0x58ed('0x3b')],'as':_0x58ed('0x5a')}]},_0x1c7804={};_0x1c7804[_0x58ed('0x42')]=_[_0x58ed('0x5b')](db[_0x58ed('0x3d')]['rawAttributes']);_0x1c7804['query']=_[_0x58ed('0x5b')](_0x987d6a['query']);_0x1c7804[_0x58ed('0x45')]=_[_0x58ed('0x46')](_0x1c7804[_0x58ed('0x42')],_0x1c7804[_0x58ed('0x44')]);_0x3b7031[_0x58ed('0x47')]=_[_0x58ed('0x46')](_0x1c7804[_0x58ed('0x42')],qs[_0x58ed('0x48')](_0x987d6a[_0x58ed('0x44')][_0x58ed('0x48')]));_0x3b7031[_0x58ed('0x47')]=_0x3b7031['attributes'][_0x58ed('0x49')]?_0x3b7031[_0x58ed('0x47')]:_0x1c7804['model'];if(_0x987d6a[_0x58ed('0x44')][_0x58ed('0x5c')]){_0x3b7031[_0x58ed('0x55')]=[{'all':!![]}];}_0x3b7031=_[_0x58ed('0x52')]({},_0x3b7031,_0x987d6a['options']);return db['FaxAccount']['find'](_0x3b7031)[_0x58ed('0x34')](handleEntityNotFound(_0x1c0021,null))[_0x58ed('0x34')](respondWithResult(_0x1c0021,null))[_0x58ed('0x5d')](handleError(_0x1c0021,null));};exports[_0x58ed('0x5e')]=function(_0x30e16f,_0x5bbb6b){return db[_0x58ed('0x3d')][_0x58ed('0x5e')](_0x30e16f[_0x58ed('0x5f')],{})[_0x58ed('0x34')](function(_0x117cdd){var _0x389e2f=_0x30e16f[_0x58ed('0x60')][_0x58ed('0x36')]({'plain':!![]});if(!_0x389e2f)throw new Error(_0x58ed('0x61'));if(_0x389e2f['role']===_0x58ed('0x60')){var _0x23c677=_0x117cdd['get']({'plain':!![]});var _0xf5003f=_0x58ed('0x62');return db['UserProfileSection'][_0x58ed('0x63')]({'where':{'name':_0xf5003f,'userProfileId':_0x389e2f[_0x58ed('0x64')]},'raw':!![]})[_0x58ed('0x34')](function(_0x497908){if(_0x497908&&_0x497908[_0x58ed('0x65')]===0x0){return db['UserProfileResource'][_0x58ed('0x5e')]({'name':_0x23c677[_0x58ed('0x43')],'resourceId':_0x23c677['id'],'type':_0x497908[_0x58ed('0x43')],'sectionId':_0x497908['id']},{})['then'](function(){return _0x117cdd;});}else{return _0x117cdd;}})[_0x58ed('0x5d')](function(_0x1ede98){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ede98);throw _0x1ede98;});}return _0x117cdd;})['then'](respondWithResult(_0x5bbb6b,0xc9))['catch'](handleError(_0x5bbb6b,null));};exports[_0x58ed('0x33')]=function(_0x300714,_0x4cb368){if(_0x300714[_0x58ed('0x5f')]['id']){delete _0x300714[_0x58ed('0x5f')]['id'];}return db['FaxAccount'][_0x58ed('0x63')]({'where':{'id':_0x300714[_0x58ed('0x59')]['id']},'include':[{'model':db[_0x58ed('0x3b')],'as':_0x58ed('0x5a')}]})[_0x58ed('0x34')](handleEntityNotFound(_0x4cb368,null))[_0x58ed('0x34')](saveUpdates(_0x300714[_0x58ed('0x5f')],null))['then'](respondWithResult(_0x4cb368,null))[_0x58ed('0x5d')](handleError(_0x4cb368,null));};exports[_0x58ed('0x35')]=function(_0x551181,_0x134819){return db[_0x58ed('0x3d')]['find']({'where':{'id':_0x551181[_0x58ed('0x59')]['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0x134819,null))[_0x58ed('0x34')](removeEntity(_0x134819,null))[_0x58ed('0x5d')](handleError(_0x134819,null));};exports[_0x58ed('0x66')]=function(_0x525b54,_0x533069){return db[_0x58ed('0x3d')][_0x58ed('0x66')]()[_0x58ed('0x34')](respondWithResult(_0x533069,null))[_0x58ed('0x5d')](handleError(_0x533069,null));};exports['addDisposition']=function(_0x24427a,_0x2147e5,_0x251106){if(_0x24427a['body']['id']){delete _0x24427a[_0x58ed('0x5f')]['id'];}return db[_0x58ed('0x3d')]['find']({'where':{'id':_0x24427a['params']['id']}})['then'](handleEntityNotFound(_0x2147e5,null))[_0x58ed('0x34')](function(_0x571073){if(_0x571073){_0x24427a[_0x58ed('0x5f')][_0x58ed('0x67')]=_0x571073['id'];return db[_0x58ed('0x68')][_0x58ed('0x5e')](_0x24427a[_0x58ed('0x5f')]);}})[_0x58ed('0x34')](respondWithResult(_0x2147e5,null))['catch'](handleError(_0x2147e5,null));};exports[_0x58ed('0x69')]=function(_0x5dce6b,_0x2a8360,_0x508869){var _0x59a8a0={'raw':![],'where':{}};var _0xd7ff61={};var _0x5e6a50={'count':0x0,'rows':[]};return db['FaxAccount'][_0x58ed('0x6a')]({'where':{'id':_0x5dce6b[_0x58ed('0x59')]['id']}})['then'](handleEntityNotFound(_0x2a8360,null))[_0x58ed('0x34')](function(_0x2237f1){if(_0x2237f1){_0xd7ff61[_0x58ed('0x42')]=_[_0x58ed('0x5b')](db[_0x58ed('0x68')][_0x58ed('0x3e')]);_0xd7ff61[_0x58ed('0x44')]=_[_0x58ed('0x5b')](_0x5dce6b['query']);_0xd7ff61['filters']=_['intersection'](_0xd7ff61[_0x58ed('0x42')],_0xd7ff61['query']);_0x59a8a0[_0x58ed('0x47')]=_['intersection'](_0xd7ff61[_0x58ed('0x42')],qs[_0x58ed('0x48')](_0x5dce6b[_0x58ed('0x44')][_0x58ed('0x48')]));_0x59a8a0[_0x58ed('0x47')]=_0x59a8a0['attributes']['length']?_0x59a8a0[_0x58ed('0x47')]:_0xd7ff61[_0x58ed('0x42')];if(!_0x5dce6b[_0x58ed('0x44')][_0x58ed('0x4a')]('nolimit')){_0x59a8a0[_0x58ed('0x4c')]=qs['limit'](_0x5dce6b[_0x58ed('0x44')][_0x58ed('0x4c')]);_0x59a8a0[_0x58ed('0x2c')]=qs[_0x58ed('0x2c')](_0x5dce6b[_0x58ed('0x44')][_0x58ed('0x2c')]);}_0x59a8a0['order']=qs[_0x58ed('0x4e')](_0x5dce6b['query']['sort']);_0x59a8a0['where']=qs[_0x58ed('0x45')](_['pick'](_0x5dce6b[_0x58ed('0x44')],_0xd7ff61[_0x58ed('0x45')]));_0x59a8a0[_0x58ed('0x4f')][_0x58ed('0x67')]=_0x2237f1['id'];if(_0x5dce6b['query'][_0x58ed('0x51')]){_0x59a8a0[_0x58ed('0x4f')]=_[_0x58ed('0x52')](_0x59a8a0['where'],{'$or':_[_0x58ed('0x3c')](_0x59a8a0[_0x58ed('0x47')],function(_0xa24fd5){var _0x1b7b59={};_0x1b7b59[_0xa24fd5]={'$like':'%'+_0x5dce6b[_0x58ed('0x44')]['filter']+'%'};return _0x1b7b59;})});}_0x59a8a0=_[_0x58ed('0x52')]({},_0x59a8a0,_0x5dce6b[_0x58ed('0x54')]);return db[_0x58ed('0x68')][_0x58ed('0x2e')]({'where':_0x59a8a0[_0x58ed('0x4f')]})[_0x58ed('0x34')](function(_0x5a7137){_0x5e6a50[_0x58ed('0x2e')]=_0x5a7137;if(_0x5dce6b[_0x58ed('0x44')]['includeAll']){_0x59a8a0['include']=[{'all':!![]}];}return db['Disposition'][_0x58ed('0x56')](_0x59a8a0);})[_0x58ed('0x34')](function(_0x48925c){_0x5e6a50[_0x58ed('0x57')]=_0x48925c;return _0x5e6a50;});}})[_0x58ed('0x34')](respondWithFilteredResult(_0x2a8360,_0x59a8a0))[_0x58ed('0x5d')](handleError(_0x2a8360,null));};exports[_0x58ed('0x6b')]=function(_0xb043da,_0x297f51,_0x297796){return db['FaxAccount'][_0x58ed('0x63')]({'where':{'id':_0xb043da[_0x58ed('0x59')]['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0x297f51,null))['then'](function(_0x39ffae){if(_0x39ffae){return _0x39ffae[_0x58ed('0x6b')](_0xb043da['query'][_0x58ed('0x6c')]);}})['then'](respondWithStatusCode(_0x297f51,null))['catch'](handleError(_0x297f51,null));};exports[_0x58ed('0x6d')]=function(_0x398942,_0x53745d,_0x49eae5){if(_0x398942[_0x58ed('0x5f')]['id']){delete _0x398942[_0x58ed('0x5f')]['id'];}return db['FaxAccount'][_0x58ed('0x63')]({'where':{'id':_0x398942[_0x58ed('0x59')]['id']}})['then'](handleEntityNotFound(_0x53745d,null))[_0x58ed('0x34')](function(_0x554e61){if(_0x554e61){_0x398942[_0x58ed('0x5f')][_0x58ed('0x67')]=_0x554e61['id'];return db[_0x58ed('0x6e')][_0x58ed('0x5e')](_0x398942[_0x58ed('0x5f')]);}})[_0x58ed('0x34')](respondWithResult(_0x53745d,null))[_0x58ed('0x5d')](handleError(_0x53745d,null));};exports[_0x58ed('0x6f')]=function(_0x3b3e0c,_0x4c2040,_0x5945bb){var _0x221844={'raw':![],'where':{}};var _0x13dbde={};var _0x4e3471={'count':0x0,'rows':[]};return db[_0x58ed('0x3d')][_0x58ed('0x6a')]({'where':{'id':_0x3b3e0c[_0x58ed('0x59')]['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0x4c2040,null))['then'](function(_0x299a40){if(_0x299a40){_0x13dbde[_0x58ed('0x42')]=_[_0x58ed('0x5b')](db[_0x58ed('0x6e')][_0x58ed('0x3e')]);_0x13dbde[_0x58ed('0x44')]=_[_0x58ed('0x5b')](_0x3b3e0c[_0x58ed('0x44')]);_0x13dbde[_0x58ed('0x45')]=_[_0x58ed('0x46')](_0x13dbde[_0x58ed('0x42')],_0x13dbde[_0x58ed('0x44')]);_0x221844[_0x58ed('0x47')]=_[_0x58ed('0x46')](_0x13dbde['model'],qs['fields'](_0x3b3e0c[_0x58ed('0x44')][_0x58ed('0x48')]));_0x221844[_0x58ed('0x47')]=_0x221844[_0x58ed('0x47')]['length']?_0x221844[_0x58ed('0x47')]:_0x13dbde[_0x58ed('0x42')];if(!_0x3b3e0c[_0x58ed('0x44')][_0x58ed('0x4a')](_0x58ed('0x4b'))){_0x221844[_0x58ed('0x4c')]=qs[_0x58ed('0x4c')](_0x3b3e0c[_0x58ed('0x44')][_0x58ed('0x4c')]);_0x221844[_0x58ed('0x2c')]=qs[_0x58ed('0x2c')](_0x3b3e0c[_0x58ed('0x44')][_0x58ed('0x2c')]);}_0x221844[_0x58ed('0x4d')]=qs[_0x58ed('0x4e')](_0x3b3e0c[_0x58ed('0x44')]['sort']);_0x221844[_0x58ed('0x4f')]=qs[_0x58ed('0x45')](_[_0x58ed('0x50')](_0x3b3e0c[_0x58ed('0x44')],_0x13dbde[_0x58ed('0x45')]));_0x221844[_0x58ed('0x4f')][_0x58ed('0x67')]=_0x299a40['id'];if(_0x3b3e0c[_0x58ed('0x44')][_0x58ed('0x51')]){_0x221844['where']=_[_0x58ed('0x52')](_0x221844[_0x58ed('0x4f')],{'$or':_[_0x58ed('0x3c')](_0x221844[_0x58ed('0x47')],function(_0x3ca1d5){var _0x4f9aa0={};_0x4f9aa0[_0x3ca1d5]={'$like':'%'+_0x3b3e0c['query'][_0x58ed('0x51')]+'%'};return _0x4f9aa0;})});}_0x221844=_['merge']({},_0x221844,_0x3b3e0c[_0x58ed('0x54')]);return db['CannedAnswer'][_0x58ed('0x2e')]({'where':_0x221844[_0x58ed('0x4f')]})[_0x58ed('0x34')](function(_0x37d177){_0x4e3471[_0x58ed('0x2e')]=_0x37d177;if(_0x3b3e0c[_0x58ed('0x44')][_0x58ed('0x5c')]){_0x221844['include']=[{'all':!![]}];}return db[_0x58ed('0x6e')][_0x58ed('0x56')](_0x221844);})[_0x58ed('0x34')](function(_0xc0d4dd){_0x4e3471[_0x58ed('0x57')]=_0xc0d4dd;return _0x4e3471;});}})[_0x58ed('0x34')](respondWithFilteredResult(_0x4c2040,_0x221844))[_0x58ed('0x5d')](handleError(_0x4c2040,null));};exports[_0x58ed('0x70')]=function(_0x815523,_0x7b8a1b,_0x30ad24){return db[_0x58ed('0x3d')][_0x58ed('0x63')]({'where':{'id':_0x815523['params']['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0x7b8a1b,null))[_0x58ed('0x34')](function(_0x3d8799){if(_0x3d8799){return _0x3d8799[_0x58ed('0x70')](_0x815523[_0x58ed('0x44')]['ids']);}})[_0x58ed('0x34')](respondWithStatusCode(_0x7b8a1b,null))[_0x58ed('0x5d')](handleError(_0x7b8a1b,null));};exports[_0x58ed('0x71')]=function(_0x5e71c9,_0x495c0b,_0x4b1542){return db[_0x58ed('0x72')][_0x58ed('0x63')]({'where':{'id':_0x5e71c9[_0x58ed('0x59')]['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0x495c0b,null))[_0x58ed('0x34')](function(_0x3d4cb7){if(_0x3d4cb7){return _0x3d4cb7[_0x58ed('0x71')](_0x5e71c9['body']['ids'],_['omit'](_0x5e71c9[_0x58ed('0x5f')],[_0x58ed('0x6c'),'id'])||{});}})[_0x58ed('0x34')](respondWithResult(_0x495c0b,null))[_0x58ed('0x5d')](handleError(_0x495c0b,null));};exports[_0x58ed('0x73')]=function(_0xaf99d4,_0x23f3b8,_0x164372){var _0xaa97a7={'raw':![],'where':{}};var _0x1a4c6a={};var _0x3b65eb={'count':0x0,'rows':[]};return db[_0x58ed('0x3d')]['findOne']({'where':{'id':_0xaf99d4[_0x58ed('0x59')]['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0x23f3b8,null))['then'](function(_0x1e599f){if(_0x1e599f){_0x1a4c6a[_0x58ed('0x42')]=_[_0x58ed('0x5b')](db[_0x58ed('0x72')]['rawAttributes']);_0x1a4c6a[_0x58ed('0x44')]=_[_0x58ed('0x5b')](_0xaf99d4[_0x58ed('0x44')]);_0x1a4c6a['filters']=_[_0x58ed('0x46')](_0x1a4c6a[_0x58ed('0x42')],_0x1a4c6a[_0x58ed('0x44')]);_0xaa97a7['attributes']=_[_0x58ed('0x46')](_0x1a4c6a[_0x58ed('0x42')],qs[_0x58ed('0x48')](_0xaf99d4['query'][_0x58ed('0x48')]));_0xaa97a7[_0x58ed('0x47')]=_0xaa97a7[_0x58ed('0x47')][_0x58ed('0x49')]?_0xaa97a7[_0x58ed('0x47')]:_0x1a4c6a[_0x58ed('0x42')];if(!_0xaf99d4[_0x58ed('0x44')][_0x58ed('0x4a')](_0x58ed('0x4b'))){_0xaa97a7[_0x58ed('0x4c')]=qs[_0x58ed('0x4c')](_0xaf99d4[_0x58ed('0x44')]['limit']);_0xaa97a7['offset']=qs['offset'](_0xaf99d4[_0x58ed('0x44')][_0x58ed('0x2c')]);}_0xaa97a7['order']=qs['sort'](_0xaf99d4[_0x58ed('0x44')][_0x58ed('0x4e')]);_0xaa97a7[_0x58ed('0x4f')]=qs[_0x58ed('0x45')](_['pick'](_0xaf99d4[_0x58ed('0x44')],_0x1a4c6a[_0x58ed('0x45')]));_0xaa97a7['where']['FaxAccountId']=_0x1e599f['id'];if(_0xaf99d4[_0x58ed('0x44')][_0x58ed('0x51')]){_0xaa97a7[_0x58ed('0x4f')]=_['merge'](_0xaa97a7[_0x58ed('0x4f')],{'$or':_[_0x58ed('0x3c')](_0xaa97a7['attributes'],function(_0x34fb8a){var _0x526a2c={};_0x526a2c[_0x34fb8a]={'$like':'%'+_0xaf99d4[_0x58ed('0x44')][_0x58ed('0x51')]+'%'};return _0x526a2c;})});}_0xaa97a7=_[_0x58ed('0x52')]({},_0xaa97a7,_0xaf99d4[_0x58ed('0x54')]);return db[_0x58ed('0x72')]['count']({'where':_0xaa97a7[_0x58ed('0x4f')]})[_0x58ed('0x34')](function(_0x4bfb1c){_0x3b65eb[_0x58ed('0x2e')]=_0x4bfb1c;if(_0xaf99d4[_0x58ed('0x44')][_0x58ed('0x5c')]){_0xaa97a7[_0x58ed('0x55')]=[{'model':db[_0x58ed('0x74')],'as':_0x58ed('0x75'),'required':![]},{'model':db[_0x58ed('0x76')],'as':_0x58ed('0x77'),'attributes':[_0x58ed('0x43'),_0x58ed('0x78'),_0x58ed('0x79')],'required':![]},{'model':db[_0x58ed('0x7a')],'as':_0x58ed('0x7b'),'attributes':['id','name','color'],'where':_0xaf99d4['query']['tag']?{'id':_0xaf99d4[_0x58ed('0x44')][_0x58ed('0x7c')]}:undefined,'required':_0xaf99d4['query'][_0x58ed('0x7c')]?!![]:![]}];}return db[_0x58ed('0x72')][_0x58ed('0x56')](_0xaa97a7);})[_0x58ed('0x34')](function(_0x3d177e){_0x3b65eb[_0x58ed('0x57')]=_0x3d177e;return _0x3b65eb;});}})[_0x58ed('0x34')](respondWithFilteredResult(_0x23f3b8,_0xaa97a7))[_0x58ed('0x5d')](handleError(_0x23f3b8,null));};exports[_0x58ed('0x7d')]=function(_0x26dda8,_0x432c21,_0x822440){return db[_0x58ed('0x3d')][_0x58ed('0x6a')]({'where':{'id':_0x26dda8[_0x58ed('0x59')]['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0x432c21,null))[_0x58ed('0x34')](function(_0xbb9bae){if(_0xbb9bae){return db[_0x58ed('0x7e')][_0x58ed('0x7f')](function(_0x21e63b){return db[_0x58ed('0x80')][_0x58ed('0x35')]({'where':{'FaxAccountId':_0x26dda8[_0x58ed('0x59')]['id']},'transaction':_0x21e63b})[_0x58ed('0x34')](function(_0x35e87b){var _0x4c286b=_['map'](_0x26dda8[_0x58ed('0x5f')],function(_0x10c2e1){_0x10c2e1[_0x58ed('0x67')]=_0x26dda8['params']['id'];return _0x10c2e1;});return db['FaxApplication']['bulkCreate'](_0x4c286b,{'transaction':_0x21e63b});});})[_0x58ed('0x34')](function(){return db[_0x58ed('0x80')][_0x58ed('0x81')]({'where':{'FaxAccountId':_0x26dda8[_0x58ed('0x59')]['id']},'order':_0x58ed('0x82')});});}})[_0x58ed('0x34')](respondWithResult(_0x432c21,null))['catch'](handleError(_0x432c21,null));};exports[_0x58ed('0x83')]=function(_0x5ed994,_0x1c6b43,_0x40df82){var _0x5b6af9={};var _0x22efb5={};var _0x5821d3;var _0x16eb8c;return db[_0x58ed('0x3d')][_0x58ed('0x6a')]({'where':{'id':_0x5ed994[_0x58ed('0x59')]['id']}})['then'](handleEntityNotFound(_0x1c6b43,null))[_0x58ed('0x34')](function(_0x157700){if(_0x157700){_0x5821d3=_0x157700;_0x22efb5[_0x58ed('0x42')]=_[_0x58ed('0x5b')](db['FaxApplication'][_0x58ed('0x3e')]);_0x22efb5['query']=_[_0x58ed('0x5b')](_0x5ed994[_0x58ed('0x44')]);_0x22efb5['filters']=_[_0x58ed('0x46')](_0x22efb5[_0x58ed('0x42')],_0x22efb5[_0x58ed('0x44')]);_0x5b6af9[_0x58ed('0x47')]=_[_0x58ed('0x46')](_0x22efb5['model'],qs[_0x58ed('0x48')](_0x5ed994['query'][_0x58ed('0x48')]));_0x5b6af9[_0x58ed('0x47')]=_0x5b6af9[_0x58ed('0x47')]['length']?_0x5b6af9[_0x58ed('0x47')]:_0x22efb5['model'];_0x5b6af9['order']=qs[_0x58ed('0x4e')](_0x5ed994['query'][_0x58ed('0x4e')]);_0x5b6af9[_0x58ed('0x4f')]=qs[_0x58ed('0x45')](_[_0x58ed('0x50')](_0x5ed994[_0x58ed('0x44')],_0x22efb5[_0x58ed('0x45')]));if(_0x5ed994[_0x58ed('0x44')][_0x58ed('0x51')]){_0x5b6af9['where']=_[_0x58ed('0x52')](_0x5b6af9[_0x58ed('0x4f')],{'$or':_[_0x58ed('0x3c')](_0x5b6af9[_0x58ed('0x47')],function(_0x3fc7bb){var _0x4cb8a6={};_0x4cb8a6[_0x3fc7bb]={'$like':'%'+_0x5ed994[_0x58ed('0x44')]['filter']+'%'};return _0x4cb8a6;})});}_0x5b6af9=_[_0x58ed('0x52')]({},_0x5b6af9,_0x5ed994[_0x58ed('0x54')]);return _0x5821d3[_0x58ed('0x83')](_0x5b6af9);}})[_0x58ed('0x34')](function(_0x31f051){if(_0x31f051){_0x16eb8c=_0x31f051[_0x58ed('0x49')];if(!_0x5ed994[_0x58ed('0x44')][_0x58ed('0x4a')](_0x58ed('0x4b'))){_0x5b6af9[_0x58ed('0x4c')]=qs[_0x58ed('0x4c')](_0x5ed994[_0x58ed('0x44')]['limit']);_0x5b6af9[_0x58ed('0x2c')]=qs[_0x58ed('0x2c')](_0x5ed994[_0x58ed('0x44')][_0x58ed('0x2c')]);}return _0x5821d3[_0x58ed('0x83')](_0x5b6af9);}})[_0x58ed('0x34')](function(_0x392717){if(_0x392717){return _0x392717?{'count':_0x16eb8c,'rows':_0x392717}:null;}})[_0x58ed('0x34')](respondWithResult(_0x1c6b43,null))['catch'](handleError(_0x1c6b43,null));};function Extension(_0x4ddc7e,_0x1f3072,_0x21011f,_0x3d23ba){this['context']=_0x58ed('0x84');this[_0x58ed('0x85')]=_0x4ddc7e[_0x58ed('0x86')];this[_0x58ed('0x87')]=_0x3d23ba;this[_0x58ed('0x40')]=_0x58ed('0x88');this[_0x58ed('0x89')]=_0x58ed('0x8a');this[_0x58ed('0x67')]=_0x4ddc7e['id'];this[_0x58ed('0x82')]=_0x1f3072;this[_0x58ed('0x8b')]=_0x21011f;}function createExtensionsReciveFax(_0x4c26fe){var _0x57f526=0x1;var _0x1695fe=[];_0x1695fe[_0x58ed('0x8c')](new Extension(_0x4c26fe,_0x57f526,'',_0x58ed('0x8d')));_0x57f526+=0x1;_0x1695fe[_0x58ed('0x8c')](new Extension(_0x4c26fe,_0x57f526,_0x58ed('0x8e'),_0x58ed('0x8f')));_0x57f526+=0x1;for(var _0x2d2925 in _0x4c26fe){if(_0x4c26fe[_0x58ed('0x4a')](_0x2d2925)&&(_0x2d2925===_0x58ed('0x90')||_0x2d2925===_0x58ed('0x86')||_0x2d2925===_0x58ed('0x91')||_0x2d2925==='faxdetect'||_0x2d2925===_0x58ed('0x92')||_0x2d2925===_0x58ed('0x93')||_0x2d2925===_0x58ed('0x94')||_0x2d2925===_0x58ed('0x95')||_0x2d2925===_0x58ed('0x96'))){_0x1695fe[_0x58ed('0x8c')](new Extension(_0x4c26fe,_0x57f526,_0x58ed('0x97')+_0x2d2925+')='+_0x4c26fe[_0x2d2925],_0x58ed('0x8f')));_0x57f526+=0x1;}}_0x1695fe[_0x58ed('0x8c')](new Extension(_0x4c26fe,_0x57f526,'6',_0x58ed('0x98')));_0x57f526+=0x1;_0x1695fe[_0x58ed('0x8c')](new Extension(_0x4c26fe,_0x57f526,_0x58ed('0x99'),'ReceiveFax'));_0x57f526=0x0;return _0x1695fe;}exports[_0x58ed('0x9a')]=function(_0x2e30bf,_0xcf1572,_0xcb5509){var _0x3cceb2;return db['sequelize'][_0x58ed('0x7f')](function(_0x14b16e){return db[_0x58ed('0x3d')][_0x58ed('0x5e')](_0x2e30bf[_0x58ed('0x5f')],{'transaction':_0x14b16e})[_0x58ed('0x34')](function(_0x244b6f){_0x3cceb2=_0x244b6f[_0x58ed('0x36')]({'plain':!![]});return db['VoiceExtension'][_0x58ed('0x9b')](createExtensionsReciveFax(_0x3cceb2),{'transaction':_0x14b16e});});})[_0x58ed('0x34')](function(){return _0x3cceb2;})['then'](respondWithResult(_0xcf1572,null))[_0x58ed('0x5d')](handleError(_0xcf1572,null));};exports[_0x58ed('0x9c')]=function(_0x13a7d7,_0x4c2463,_0xdaa731){var _0x2804ee;return db[_0x58ed('0x7e')][_0x58ed('0x7f')](function(_0x3e8fb9){return db[_0x58ed('0x3d')][_0x58ed('0x33')](_0x13a7d7[_0x58ed('0x5f')],{'where':{'id':_0x13a7d7['body']['id']},'transaction':_0x3e8fb9})[_0x58ed('0x34')](function(_0x1d6aaa){return db[_0x58ed('0x9d')]['destroy']({'where':{'FaxAccountId':_0x13a7d7[_0x58ed('0x5f')]['id']},'transaction':_0x3e8fb9})[_0x58ed('0x34')](function(_0x4de782){return db[_0x58ed('0x9d')][_0x58ed('0x9b')](createExtensionsReciveFax(_['omit'](_0x13a7d7[_0x58ed('0x5f')],['tech','key','createdAt',_0x58ed('0x9e'),_0x58ed('0x9f'),_0x58ed('0xa0')])),{'transaction':_0x3e8fb9});});});})[_0x58ed('0x34')](function(){return db[_0x58ed('0x3d')]['findById'](_0x13a7d7[_0x58ed('0x5f')]['id']);})[_0x58ed('0x34')](respondWithResult(_0x4c2463,null))[_0x58ed('0x5d')](handleError(_0x4c2463,null));};exports[_0x58ed('0xa1')]=function(_0xd65554,_0x13214e,_0x56f984){var _0x2f22c9={'raw':!![],'where':{}};var _0x1ff6d0={};var _0x33c032={'count':0x0,'rows':[]};return db['FaxAccount'][_0x58ed('0x6a')]({'where':{'id':_0xd65554[_0x58ed('0x59')]['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0x13214e,null))[_0x58ed('0x34')](function(_0x285474){if(_0x285474){_0x1ff6d0[_0x58ed('0x42')]=_[_0x58ed('0x5b')](db['FaxMessage'][_0x58ed('0x3e')]);_0x1ff6d0[_0x58ed('0x44')]=_[_0x58ed('0x5b')](_0xd65554[_0x58ed('0x44')]);_0x1ff6d0[_0x58ed('0x45')]=_[_0x58ed('0x46')](_0x1ff6d0[_0x58ed('0x42')],_0x1ff6d0[_0x58ed('0x44')]);_0x2f22c9[_0x58ed('0x47')]=_['intersection'](_0x1ff6d0[_0x58ed('0x42')],qs['fields'](_0xd65554['query'][_0x58ed('0x48')]));_0x2f22c9[_0x58ed('0x47')]=_0x2f22c9[_0x58ed('0x47')][_0x58ed('0x49')]?_0x2f22c9[_0x58ed('0x47')]:_0x1ff6d0[_0x58ed('0x42')];if(!_0xd65554[_0x58ed('0x44')]['hasOwnProperty'](_0x58ed('0x4b'))){_0x2f22c9[_0x58ed('0x4c')]=qs[_0x58ed('0x4c')](_0xd65554[_0x58ed('0x44')][_0x58ed('0x4c')]);_0x2f22c9['offset']=qs[_0x58ed('0x2c')](_0xd65554['query'][_0x58ed('0x2c')]);}_0x2f22c9[_0x58ed('0x4d')]=qs[_0x58ed('0x4e')](_0xd65554['query']['sort']);_0x2f22c9[_0x58ed('0x4f')]=qs[_0x58ed('0x45')](_['pick'](_0xd65554[_0x58ed('0x44')],_0x1ff6d0[_0x58ed('0x45')]));_0x2f22c9[_0x58ed('0x4f')][_0x58ed('0x67')]=_0x285474['id'];if(_0xd65554[_0x58ed('0x44')][_0x58ed('0x51')]){_0x2f22c9['where']=_[_0x58ed('0x52')](_0x2f22c9[_0x58ed('0x4f')],{'$or':_[_0x58ed('0x3c')](_0x2f22c9['attributes'],function(_0x577412){var _0x2b42b5={};_0x2b42b5[_0x577412]={'$like':'%'+_0xd65554[_0x58ed('0x44')]['filter']+'%'};return _0x2b42b5;})});}if(_0xd65554[_0x58ed('0x44')][_0x58ed('0xa2')]){var _0x1381c2=_0xd65554[_0x58ed('0x44')][_0x58ed('0xa2')][_0x58ed('0xa3')](',');var _0x5da498={};_0x5da498[_0x1381c2[0x0]]={'$gte':moment(_0x1381c2[0x1])[_0x58ed('0xa4')](_0x58ed('0xa5'))};_0x2f22c9[_0x58ed('0x4f')]=_[_0x58ed('0x52')](_0x2f22c9[_0x58ed('0x4f')],_0x5da498);}_0x2f22c9=_[_0x58ed('0x52')]({},_0x2f22c9,_0xd65554[_0x58ed('0x54')]);return db[_0x58ed('0xa6')][_0x58ed('0x2e')]({'where':_0x2f22c9['where']})[_0x58ed('0x34')](function(_0x485a79){_0x33c032['count']=_0x485a79;if(_0xd65554[_0x58ed('0x44')][_0x58ed('0x5c')]){_0x2f22c9[_0x58ed('0x55')]=[{'all':!![]}];}return db[_0x58ed('0xa6')][_0x58ed('0x56')](_0x2f22c9);})[_0x58ed('0x34')](function(_0x435ed7){_0x33c032[_0x58ed('0x57')]=_0x435ed7;return _0x33c032;});}})[_0x58ed('0x34')](respondWithFilteredResult(_0x13214e,_0x2f22c9))[_0x58ed('0x5d')](handleError(_0x13214e,null));};exports[_0x58ed('0x39')]=function(_0x5ca482,_0x412ee0,_0x3a0ce8){var _0x49bf49,_0x1a368c={},_0x7cbb2d;if(_0x5ca482[_0x58ed('0x5f')]['to']){_0x7cbb2d=_0x5ca482[_0x58ed('0x5f')]['to'][0x0];}return db['FaxAccount'][_0x58ed('0x63')]({'where':{'id':_0x5ca482['params']['id']},'include':[{'model':db[_0x58ed('0xa7')],'as':_0x58ed('0xa8'),'include':[{'model':db['CmContact'],'as':_0x58ed('0xa9'),'where':{'fax':_0x7cbb2d},'limit':0x1,'order':[[_0x58ed('0x9e'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x412ee0,null))[_0x58ed('0x34')](function(_0x508630){_0x49bf49=_0x508630;if(_0x5ca482['body'][_0x58ed('0xaa')]&&_0x5ca482[_0x58ed('0x5f')][_0x58ed('0xaa')][_0x58ed('0x49')]){for(var _0x586ebb=0x0;_0x586ebb<_0x5ca482[_0x58ed('0x5f')]['attachments'][_0x58ed('0x49')];_0x586ebb+=0x1){_0x5ca482['body'][_0x58ed('0xaa')][_0x586ebb]={'filename':_0x5ca482[_0x58ed('0x5f')]['attachments'][_0x586ebb][_0x58ed('0x43')],'id':_0x5ca482[_0x58ed('0x5f')]['attachments'][_0x586ebb]['id'],'path':path[_0x58ed('0xab')](config[_0x58ed('0xac')],_0x58ed('0xad'),_0x5ca482[_0x58ed('0x5f')][_0x58ed('0xaa')][_0x586ebb][_0x58ed('0xae')])};}}return respondWithRpcPromise(_0x58ed('0xaf'),_0x58ed('0xaf'),{'FaxAccountId':_[_0x58ed('0xb0')](_0x5ca482[_0x58ed('0x59')]['id'])?undefined:_0x5ca482['params']['id'],'path':_['isNil'](_0x5ca482[_0x58ed('0x5f')][_0x58ed('0xaa')][0x0][_0x58ed('0x6')])?undefined:_0x5ca482['body'][_0x58ed('0xaa')][0x0]['path'],'fax':_['isNil'](_0x5ca482[_0x58ed('0x5f')]['to'][0x0])?undefined:_0x5ca482[_0x58ed('0x5f')]['to'][0x0]},client9002);})[_0x58ed('0x34')](function(){if(_0x49bf49){if(_['isNil'](_0x5ca482[_0x58ed('0x5f')][_0x58ed('0xb1')])){_0x5ca482['body']['from']=util[_0x58ed('0xa4')]('\x22%s\x22\x20<%s>',_0x49bf49['name'],_0x49bf49['fax']);}if(_0x49bf49['List']){if(_0x49bf49[_0x58ed('0xa8')]['Contacts'][_0x58ed('0x49')]){return _0x49bf49['List'][_0x58ed('0xa9')][0x0];}else{return db[_0x58ed('0x74')][_0x58ed('0x5e')](_[_0x58ed('0x19')](_0x5ca482[_0x58ed('0x5f')],{'firstName':_0x5ca482[_0x58ed('0x5f')]['to'][0x0],'phone':_0x5ca482[_0x58ed('0x5f')]['to'][0x0],'fax':_0x5ca482[_0x58ed('0x5f')]['to'][0x0],'ListId':_0x49bf49[_0x58ed('0xa0')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0x58ed('0xb2'));}})[_0x58ed('0x34')](function(_0x153bb5){if(_0x153bb5){return db[_0x58ed('0x72')]['find']({'where':{'ContactId':_0x153bb5['id'],'closed':![],'FaxAccountId':_0x49bf49['id']}})[_0x58ed('0x34')](function(_0xefa7fd){if(_0xefa7fd){return[_0xefa7fd,![]];}return db[_0x58ed('0x72')][_0x58ed('0x5e')]({'UserId':_0x5ca482[_0x58ed('0x60')]['id'],'ContactId':_0x153bb5['id'],'FaxAccountId':_0x49bf49['id'],'fax':_0x5ca482[_0x58ed('0x5f')]['to'][0x0],'firstMsgDirection':_0x58ed('0xb3'),'Messages':[_[_0x58ed('0x52')](_0x5ca482[_0x58ed('0x5f')],{'read':![],'body':_0x5ca482['body'][_0x58ed('0xaa')][0x0][_0x58ed('0xb4')],'FaxAccountId':_0x49bf49['id'],'UserId':_0x5ca482[_0x58ed('0x60')]['id'],'ContactId':_0x153bb5['id'],'AttachmentId':_0x5ca482[_0x58ed('0x5f')][_0x58ed('0xaa')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':'Messages'}]})['then'](function(_0x43db47){return[_0x43db47,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x58ed('0xb5')](function(_0x402817,_0x944b45){if(_0x944b45){return _0x402817;}return db[_0x58ed('0xa6')][_0x58ed('0x5e')]({'direction':_0x58ed('0xb3'),'read':![],'body':_0x5ca482[_0x58ed('0x5f')][_0x58ed('0xaa')][0x0][_0x58ed('0xb4')],'FaxAccountId':_0x49bf49['id'],'FaxInteractionId':_0x402817['id'],'UserId':_0x5ca482['user']['id'],'ContactId':_0x402817[_0x58ed('0xb6')],'AttachmentId':_0x5ca482[_0x58ed('0x5f')]['attachments'][0x0]['id']})[_0x58ed('0x34')](function(_0x3b211b){_0x402817[_0x58ed('0xb7')]['Messages']=[];_0x402817['dataValues'][_0x58ed('0xb8')][_0x58ed('0x8c')](_0x3b211b[_0x58ed('0xb7')]);return _0x402817;});})[_0x58ed('0x34')](function(_0x17d43d){respondWithRpcPromise(_0x58ed('0xb9'),_0x58ed('0xb9'),{'FaxAccountId':_[_0x58ed('0xb0')](_0x5ca482[_0x58ed('0x59')]['id'])?undefined:_0x5ca482[_0x58ed('0x59')]['id'],'path':_[_0x58ed('0xb0')](_0x5ca482[_0x58ed('0x5f')][_0x58ed('0xaa')][0x0]['path'])?undefined:_0x5ca482[_0x58ed('0x5f')]['attachments'][0x0][_0x58ed('0x6')],'fax':_[_0x58ed('0xb0')](_0x5ca482[_0x58ed('0x5f')]['to'][0x0])?undefined:_0x5ca482['body']['to'][0x0],'AttachmentId':_0x5ca482[_0x58ed('0x5f')]['attachments'][0x0]['id']},client9002)['then'](function(_0xbc07ee){logger[_0x58ed('0x20')]('SendFaxRpc,\x20%s',_0xbc07ee);})['catch'](function(_0xb0a580){logger[_0x58ed('0x20')]('SendFaxRpc,\x20%s',_0xb0a580);});return _0x17d43d;})[_0x58ed('0x34')](respondWithResult(_0x412ee0,null))[_0x58ed('0x5d')](handleError(_0x412ee0,null));};exports['addAgents']=function(_0x2708f6,_0xab0127,_0x28def7){return db[_0x58ed('0x3d')]['find']({'where':{'id':_0x2708f6[_0x58ed('0x59')]['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0xab0127,null))['then'](function(_0x4868f9){if(_0x4868f9){return _0x4868f9['addAgents'](_0x2708f6[_0x58ed('0x5f')][_0x58ed('0x6c')],_[_0x58ed('0xba')](_0x2708f6['body'],[_0x58ed('0x6c'),'id'])||{})[_0x58ed('0xb5')](function(_0x303446){for(var _0x1b5068=0x0;_0x1b5068<_0x2708f6[_0x58ed('0x5f')][_0x58ed('0x6c')][_0x58ed('0x49')];_0x1b5068+=0x1){socket[_0x58ed('0xbb')](_0x58ed('0xbc'),{'UserId':Number(_0x2708f6[_0x58ed('0x5f')][_0x58ed('0x6c')][_0x1b5068]),'FaxAccountId':Number(_0x2708f6[_0x58ed('0x59')]['id'])});}return _0x303446;});}})[_0x58ed('0x34')](respondWithResult(_0xab0127,null))[_0x58ed('0x5d')](handleError(_0xab0127,null));};exports[_0x58ed('0xbd')]=function(_0xea410c,_0x5ea809,_0x218884){return db[_0x58ed('0x3d')][_0x58ed('0x63')]({'where':{'id':_0xea410c['params']['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0x5ea809,null))[_0x58ed('0x34')](function(_0x4e6606){if(_0x4e6606){return _0x4e6606[_0x58ed('0xbd')](_0xea410c[_0x58ed('0x44')]['ids'])['then'](function(){if(_[_0x58ed('0xbe')](_0xea410c[_0x58ed('0x44')]['ids'])){for(var _0x176d57=0x0;_0x176d57<_0xea410c[_0x58ed('0x44')][_0x58ed('0x6c')]['length'];_0x176d57+=0x1){socket[_0x58ed('0xbb')](_0x58ed('0xbf'),{'UserId':Number(_0xea410c['query'][_0x58ed('0x6c')][_0x176d57]),'FaxAccountId':Number(_0xea410c[_0x58ed('0x59')]['id'])});}}else{socket[_0x58ed('0xbb')](_0x58ed('0xbf'),{'UserId':Number(_0xea410c[_0x58ed('0x44')][_0x58ed('0x6c')]),'FaxAccountId':Number(_0xea410c[_0x58ed('0x59')]['id'])});}});}})['then'](respondWithStatusCode(_0x5ea809,null))[_0x58ed('0x5d')](handleError(_0x5ea809,null));};exports[_0x58ed('0xc0')]=function(_0x1d5cfa,_0x10b1c0,_0x32b9b7){var _0xcd9b1d={};var _0x1680fd={};var _0x229130;var _0x39bc74;return db['FaxAccount'][_0x58ed('0x6a')]({'where':{'id':_0x1d5cfa[_0x58ed('0x59')]['id']}})[_0x58ed('0x34')](handleEntityNotFound(_0x10b1c0,null))['then'](function(_0x49101a){if(_0x49101a){_0x229130=_0x49101a;_0x1680fd[_0x58ed('0x42')]=_[_0x58ed('0x5b')](db[_0x58ed('0x76')][_0x58ed('0x3e')]);_0x1680fd[_0x58ed('0x44')]=_['keys'](_0x1d5cfa[_0x58ed('0x44')]);_0x1680fd['filters']=_[_0x58ed('0x46')](_0x1680fd['model'],_0x1680fd[_0x58ed('0x44')]);_0xcd9b1d[_0x58ed('0x47')]=_[_0x58ed('0x46')](_0x1680fd[_0x58ed('0x42')],qs[_0x58ed('0x48')](_0x1d5cfa[_0x58ed('0x44')][_0x58ed('0x48')]));_0xcd9b1d[_0x58ed('0x47')]=_0xcd9b1d[_0x58ed('0x47')][_0x58ed('0x49')]?_0xcd9b1d[_0x58ed('0x47')]:_0x1680fd[_0x58ed('0x42')];_0xcd9b1d[_0x58ed('0x4d')]=qs[_0x58ed('0x4e')](_0x1d5cfa[_0x58ed('0x44')][_0x58ed('0x4e')]);_0xcd9b1d[_0x58ed('0x4f')]=qs[_0x58ed('0x45')](_[_0x58ed('0x50')](_0x1d5cfa['query'],_0x1680fd['filters']));if(_0x1d5cfa['query'][_0x58ed('0x51')]){_0xcd9b1d[_0x58ed('0x4f')]=_['merge'](_0xcd9b1d['where'],{'$or':_[_0x58ed('0x3c')](_0xcd9b1d[_0x58ed('0x47')],function(_0x4fe651){var _0x59a03a={};_0x59a03a[_0x4fe651]={'$like':'%'+_0x1d5cfa[_0x58ed('0x44')]['filter']+'%'};return _0x59a03a;})});}_0xcd9b1d=_[_0x58ed('0x52')]({},_0xcd9b1d,_0x1d5cfa['options']);return _0x229130[_0x58ed('0xc0')](_0xcd9b1d);}})[_0x58ed('0x34')](function(_0x235880){if(_0x235880){_0x39bc74=_0x235880['length'];if(!_0x1d5cfa[_0x58ed('0x44')][_0x58ed('0x4a')]('nolimit')){_0xcd9b1d[_0x58ed('0x4c')]=qs[_0x58ed('0x4c')](_0x1d5cfa[_0x58ed('0x44')][_0x58ed('0x4c')]);_0xcd9b1d[_0x58ed('0x2c')]=qs[_0x58ed('0x2c')](_0x1d5cfa['query'][_0x58ed('0x2c')]);}return _0x229130[_0x58ed('0xc0')](_0xcd9b1d);}})[_0x58ed('0x34')](function(_0x524861){if(_0x524861){return _0x524861?{'count':_0x39bc74,'rows':_0x524861}:null;}})['then'](respondWithResult(_0x10b1c0,null))[_0x58ed('0x5d')](handleError(_0x10b1c0,null));};
\ No newline at end of file
+var _0x5608=['destroy','get','FaxAccounts','UserProfileResource','stack','name','index','Pause','map','FaxAccount','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','include','show','mandatoryDispositionPause','rawAttributes','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','find','describe','addDisposition','Disposition','order','pick','FaxAccountId','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','rows','removeAnswers','addInteraction','omit','getInteractions','FaxInteraction','hasOwnProperty','CmContact','Contact','User','Owner','fullname','internal','Tags','color','tag','sequelize','FaxApplication','priority','getApplications','context','from-voip-provider','localstationid','app','system','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','minrate','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','transaction','bulkCreate','updateAccountApplications','update','VoiceExtension','tech','createdAt','updatedAt','TrunkId','getMessages','FaxMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','send','CmList','List','Contacts','DESC','attachments','join','root','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Contact\x20not\x20found','spread','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','info','addAgents','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','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','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxAccount.socket','jayson/promise','http','client','request','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','save'];(function(_0x313df3,_0x4fca45){var _0x241d59=function(_0x452786){while(--_0x452786){_0x313df3['push'](_0x313df3['shift']());}};_0x241d59(++_0x4fca45);}(_0x5608,0x8d));var _0x8560=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x5608[_0x432682];return _0x463d05;};'use strict';var emlformat=require(_0x8560('0x0'));var rimraf=require(_0x8560('0x1'));var zipdir=require(_0x8560('0x2'));var jsonpatch=require(_0x8560('0x3'));var rp=require(_0x8560('0x4'));var moment=require(_0x8560('0x5'));var BPromise=require(_0x8560('0x6'));var Mustache=require('mustache');var util=require(_0x8560('0x7'));var path=require(_0x8560('0x8'));var sox=require(_0x8560('0x9'));var csv=require(_0x8560('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8560('0xb'));var _=require(_0x8560('0xc'));var squel=require(_0x8560('0xd'));var crypto=require(_0x8560('0xe'));var jsforce=require(_0x8560('0xf'));var deskjs=require(_0x8560('0x10'));var toCsv=require('to-csv');var querystring=require(_0x8560('0x11'));var Papa=require(_0x8560('0x12'));var Redis=require(_0x8560('0x13'));var authService=require(_0x8560('0x14'));var qs=require(_0x8560('0x15'));var as=require(_0x8560('0x16'));var hardwareService=require(_0x8560('0x17'));var logger=require('../../config/logger')(_0x8560('0x18'));var utils=require('../../config/utils');var config=require(_0x8560('0x19'));var licenseUtil=require(_0x8560('0x1a'));var db=require(_0x8560('0x1b'))['db'];config[_0x8560('0x1c')]=_['defaults'](config[_0x8560('0x1c')],{'host':_0x8560('0x1d'),'port':0x18eb});var socket=require(_0x8560('0x1e'))(new Redis(config[_0x8560('0x1c')]));require(_0x8560('0x1f'))['register'](socket);var jayson=require(_0x8560('0x20'));var client=jayson['client'][_0x8560('0x21')]({'port':0x232c});var client9002=jayson[_0x8560('0x22')][_0x8560('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x59e0b6,_0x4acd40,_0x33509c,_0x5c0c07){return new BPromise(function(_0x42cc3f,_0x39221f){var _0x2c988a=_0x5c0c07||client;return _0x2c988a[_0x8560('0x23')](_0x59e0b6,_0x33509c)[_0x8560('0x24')](function(_0x32e698){logger['info'](_0x8560('0x25'),_0x4acd40,_0x8560('0x26'));logger[_0x8560('0x27')](_0x8560('0x28'),_0x4acd40,'request\x20sent',JSON[_0x8560('0x29')](_0x32e698));if(_0x32e698[_0x8560('0x2a')]){if(_0x32e698[_0x8560('0x2a')][_0x8560('0x2b')]===0x1f4){logger[_0x8560('0x2a')](_0x8560('0x25'),_0x4acd40,_0x32e698[_0x8560('0x2a')]['message']);return _0x39221f(_0x32e698[_0x8560('0x2a')][_0x8560('0x2c')]);}logger[_0x8560('0x2a')](_0x8560('0x25'),_0x4acd40,_0x32e698[_0x8560('0x2a')]['message']);return _0x42cc3f(_0x32e698[_0x8560('0x2a')][_0x8560('0x2c')]);}else{logger['info']('FaxAccount,\x20%s,\x20%s',_0x4acd40,_0x8560('0x26'));_0x42cc3f(_0x32e698[_0x8560('0x2d')]['message']);}})[_0x8560('0x2e')](function(_0x119427){logger[_0x8560('0x2a')]('FaxAccount,\x20%s,\x20%s',_0x4acd40,_0x119427);_0x39221f(_0x119427);});});}function respondWithStatusCode(_0xd63d4f,_0x1d4417){_0x1d4417=_0x1d4417||0xcc;return function(_0x4395d6){if(_0x4395d6){return _0xd63d4f[_0x8560('0x2f')](_0x1d4417);}return _0xd63d4f[_0x8560('0x30')](_0x1d4417)[_0x8560('0x31')]();};}function respondWithResult(_0x25dfdb,_0x58c835){_0x58c835=_0x58c835||0xc8;return function(_0x5b4ddd){if(_0x5b4ddd){return _0x25dfdb[_0x8560('0x30')](_0x58c835)['json'](_0x5b4ddd);}};}function respondWithFilteredResult(_0x40cef4,_0x4fb8a4){return function(_0xc9602c){if(_0xc9602c){var _0x5d9f79=typeof _0x4fb8a4[_0x8560('0x32')]===_0x8560('0x33')&&typeof _0x4fb8a4['limit']==='undefined';var _0x3dc364=_0xc9602c[_0x8560('0x34')];var _0x243925=_0x5d9f79?0x0:_0x4fb8a4[_0x8560('0x32')];var _0x155ac3=_0x5d9f79?_0xc9602c['count']:_0x4fb8a4[_0x8560('0x32')]+_0x4fb8a4[_0x8560('0x35')];var _0x2d6f05;if(_0x155ac3>=_0x3dc364){_0x155ac3=_0x3dc364;_0x2d6f05=0xc8;}else{_0x2d6f05=0xce;}_0x40cef4[_0x8560('0x30')](_0x2d6f05);return _0x40cef4[_0x8560('0x36')]('Content-Range',_0x243925+'-'+_0x155ac3+'/'+_0x3dc364)[_0x8560('0x37')](_0xc9602c);}return null;};}function patchUpdates(_0x24e1e4){return function(_0xc13729){try{jsonpatch[_0x8560('0x38')](_0xc13729,_0x24e1e4,!![]);}catch(_0x968d37){return BPromise['reject'](_0x968d37);}return _0xc13729[_0x8560('0x39')]();};}function saveUpdates(_0x169c7d,_0x365d96){return function(_0x48e3b6){if(_0x48e3b6){return _0x48e3b6['update'](_0x169c7d)['then'](function(_0x4d1b43){return _0x4d1b43;});}return null;};}function removeEntity(_0x359edc,_0x12dd3d){return function(_0x25abcc){if(_0x25abcc){return _0x25abcc[_0x8560('0x3a')]()['then'](function(){var _0xb00b74=_0x25abcc[_0x8560('0x3b')]({'plain':!![]});var _0x3d6eb6=_0x8560('0x3c');return db[_0x8560('0x3d')][_0x8560('0x3a')]({'where':{'type':_0x3d6eb6,'resourceId':_0xb00b74['id']}})[_0x8560('0x24')](function(){return _0x25abcc;});})[_0x8560('0x24')](function(){_0x359edc[_0x8560('0x30')](0xcc)[_0x8560('0x31')]();});}};}function handleEntityNotFound(_0x4db8b7,_0x15c7bc){return function(_0xefc9a0){if(!_0xefc9a0){_0x4db8b7[_0x8560('0x2f')](0x194);}return _0xefc9a0;};}function handleError(_0x5b6640,_0x3ac56d){_0x3ac56d=_0x3ac56d||0x1f4;return function(_0xa8231e){logger[_0x8560('0x2a')](_0xa8231e[_0x8560('0x3e')]);if(_0xa8231e[_0x8560('0x3f')]){delete _0xa8231e[_0x8560('0x3f')];}_0x5b6640['status'](_0x3ac56d)['send'](_0xa8231e);};}exports[_0x8560('0x40')]=function(_0x4f9935,_0x2078dc){var _0x2c18ac={'include':[{'model':db[_0x8560('0x41')],'as':'mandatoryDispositionPause'}]},_0x3fdef1={},_0x4ce15d={'count':0x0,'rows':[]};var _0x4eae80=_[_0x8560('0x42')](db[_0x8560('0x43')]['rawAttributes'],function(_0xef8d9){return{'name':_0xef8d9[_0x8560('0x44')],'type':_0xef8d9[_0x8560('0x45')][_0x8560('0x46')]};});_0x3fdef1['model']=_['map'](_0x4eae80,_0x8560('0x3f'));_0x3fdef1[_0x8560('0x47')]=_[_0x8560('0x48')](_0x4f9935[_0x8560('0x47')]);_0x3fdef1[_0x8560('0x49')]=_[_0x8560('0x4a')](_0x3fdef1[_0x8560('0x4b')],_0x3fdef1[_0x8560('0x47')]);_0x2c18ac[_0x8560('0x4c')]=_[_0x8560('0x4a')](_0x3fdef1['model'],qs[_0x8560('0x4d')](_0x4f9935[_0x8560('0x47')][_0x8560('0x4d')]));_0x2c18ac[_0x8560('0x4c')]=_0x2c18ac[_0x8560('0x4c')][_0x8560('0x4e')]?_0x2c18ac['attributes']:_0x3fdef1[_0x8560('0x4b')];if(!_0x4f9935['query']['hasOwnProperty'](_0x8560('0x4f'))){_0x2c18ac[_0x8560('0x35')]=qs['limit'](_0x4f9935['query'][_0x8560('0x35')]);_0x2c18ac[_0x8560('0x32')]=qs[_0x8560('0x32')](_0x4f9935[_0x8560('0x47')]['offset']);}_0x2c18ac['order']=qs[_0x8560('0x50')](_0x4f9935[_0x8560('0x47')][_0x8560('0x50')]);_0x2c18ac[_0x8560('0x51')]=qs['filters'](_['pick'](_0x4f9935[_0x8560('0x47')],_0x3fdef1[_0x8560('0x49')]),_0x4eae80);if(_0x4f9935[_0x8560('0x47')]['filter']){_0x2c18ac[_0x8560('0x51')]=_[_0x8560('0x52')](_0x2c18ac[_0x8560('0x51')],{'$or':_[_0x8560('0x42')](_0x4eae80,function(_0x3db4d2){if(_0x3db4d2[_0x8560('0x45')]!==_0x8560('0x53')){var _0x5a79f1={};_0x5a79f1[_0x3db4d2[_0x8560('0x3f')]]={'$like':'%'+_0x4f9935[_0x8560('0x47')][_0x8560('0x54')]+'%'};return _0x5a79f1;}})});}_0x2c18ac=_[_0x8560('0x52')]({},_0x2c18ac,_0x4f9935[_0x8560('0x55')]);var _0xcc1f97={'where':_0x2c18ac[_0x8560('0x51')]};return db['FaxAccount'][_0x8560('0x34')](_0xcc1f97)[_0x8560('0x24')](function(_0xf982e2){_0x4ce15d['count']=_0xf982e2;if(_0x4f9935[_0x8560('0x47')][_0x8560('0x56')]){_0x2c18ac[_0x8560('0x57')]=[{'all':!![]}];}return db[_0x8560('0x43')]['findAll'](_0x2c18ac);})['then'](function(_0x5384c7){_0x4ce15d['rows']=_0x5384c7;return _0x4ce15d;})[_0x8560('0x24')](respondWithFilteredResult(_0x2078dc,_0x2c18ac))[_0x8560('0x2e')](handleError(_0x2078dc,null));};exports[_0x8560('0x58')]=function(_0x1460f3,_0x1d9295){var _0xb8df0c={'raw':![],'where':{'id':_0x1460f3['params']['id']},'include':[{'model':db[_0x8560('0x41')],'as':_0x8560('0x59')}]},_0x5f359c={};_0x5f359c['model']=_[_0x8560('0x48')](db[_0x8560('0x43')][_0x8560('0x5a')]);_0x5f359c[_0x8560('0x47')]=_[_0x8560('0x48')](_0x1460f3[_0x8560('0x47')]);_0x5f359c[_0x8560('0x49')]=_[_0x8560('0x4a')](_0x5f359c[_0x8560('0x4b')],_0x5f359c[_0x8560('0x47')]);_0xb8df0c['attributes']=_[_0x8560('0x4a')](_0x5f359c[_0x8560('0x4b')],qs['fields'](_0x1460f3[_0x8560('0x47')][_0x8560('0x4d')]));_0xb8df0c[_0x8560('0x4c')]=_0xb8df0c['attributes']['length']?_0xb8df0c[_0x8560('0x4c')]:_0x5f359c[_0x8560('0x4b')];if(_0x1460f3[_0x8560('0x47')][_0x8560('0x56')]){_0xb8df0c['include']=[{'all':!![]}];}_0xb8df0c=_[_0x8560('0x52')]({},_0xb8df0c,_0x1460f3[_0x8560('0x55')]);return db[_0x8560('0x43')]['find'](_0xb8df0c)[_0x8560('0x24')](handleEntityNotFound(_0x1d9295,null))[_0x8560('0x24')](respondWithResult(_0x1d9295,null))[_0x8560('0x2e')](handleError(_0x1d9295,null));};exports[_0x8560('0x5b')]=function(_0x3ff488,_0x20c6a6){return db['FaxAccount'][_0x8560('0x5b')](_0x3ff488[_0x8560('0x5c')],{})[_0x8560('0x24')](function(_0x3f87d9){var _0x4c9c9b=_0x3ff488[_0x8560('0x5d')][_0x8560('0x3b')]({'plain':!![]});if(!_0x4c9c9b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4c9c9b[_0x8560('0x5e')]===_0x8560('0x5d')){var _0x50bd07=_0x3f87d9[_0x8560('0x3b')]({'plain':!![]});var _0x282472=_0x8560('0x3c');return db[_0x8560('0x5f')]['find']({'where':{'name':_0x282472,'userProfileId':_0x4c9c9b[_0x8560('0x60')]},'raw':!![]})[_0x8560('0x24')](function(_0x21746f){if(_0x21746f&&_0x21746f[_0x8560('0x61')]===0x0){return db[_0x8560('0x3d')][_0x8560('0x5b')]({'name':_0x50bd07[_0x8560('0x3f')],'resourceId':_0x50bd07['id'],'type':_0x21746f[_0x8560('0x3f')],'sectionId':_0x21746f['id']},{})['then'](function(){return _0x3f87d9;});}else{return _0x3f87d9;}})[_0x8560('0x2e')](function(_0x3e9a31){logger[_0x8560('0x2a')](_0x8560('0x62'),_0x3e9a31);throw _0x3e9a31;});}return _0x3f87d9;})[_0x8560('0x24')](respondWithResult(_0x20c6a6,0xc9))[_0x8560('0x2e')](handleError(_0x20c6a6,null));};exports['update']=function(_0x21c3e0,_0x58e0f7){if(_0x21c3e0[_0x8560('0x5c')]['id']){delete _0x21c3e0[_0x8560('0x5c')]['id'];}return db[_0x8560('0x43')]['find']({'where':{'id':_0x21c3e0[_0x8560('0x63')]['id']},'include':[{'model':db['Pause'],'as':_0x8560('0x59')}]})[_0x8560('0x24')](handleEntityNotFound(_0x58e0f7,null))[_0x8560('0x24')](saveUpdates(_0x21c3e0[_0x8560('0x5c')],null))[_0x8560('0x24')](respondWithResult(_0x58e0f7,null))['catch'](handleError(_0x58e0f7,null));};exports[_0x8560('0x3a')]=function(_0x3178ca,_0xe6aa12){return db['FaxAccount'][_0x8560('0x64')]({'where':{'id':_0x3178ca['params']['id']}})[_0x8560('0x24')](handleEntityNotFound(_0xe6aa12,null))[_0x8560('0x24')](removeEntity(_0xe6aa12,null))[_0x8560('0x2e')](handleError(_0xe6aa12,null));};exports[_0x8560('0x65')]=function(_0x38d685,_0x25941a){return db[_0x8560('0x43')][_0x8560('0x65')]()[_0x8560('0x24')](respondWithResult(_0x25941a,null))[_0x8560('0x2e')](handleError(_0x25941a,null));};exports[_0x8560('0x66')]=function(_0xb1c91d,_0x54a2c8,_0x2068ad){if(_0xb1c91d[_0x8560('0x5c')]['id']){delete _0xb1c91d[_0x8560('0x5c')]['id'];}return db[_0x8560('0x43')]['find']({'where':{'id':_0xb1c91d[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x54a2c8,null))[_0x8560('0x24')](function(_0x1b2092){if(_0x1b2092){_0xb1c91d['body']['FaxAccountId']=_0x1b2092['id'];return db[_0x8560('0x67')][_0x8560('0x5b')](_0xb1c91d[_0x8560('0x5c')]);}})[_0x8560('0x24')](respondWithResult(_0x54a2c8,null))['catch'](handleError(_0x54a2c8,null));};exports['getDispositions']=function(_0x343cba,_0xc217e8,_0x19d9ba){var _0x3643bf={'raw':![],'where':{}};var _0x1ab066={};var _0x273cc6={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x343cba[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0xc217e8,null))[_0x8560('0x24')](function(_0x1cb174){if(_0x1cb174){_0x1ab066[_0x8560('0x4b')]=_['keys'](db[_0x8560('0x67')][_0x8560('0x5a')]);_0x1ab066['query']=_[_0x8560('0x48')](_0x343cba['query']);_0x1ab066[_0x8560('0x49')]=_['intersection'](_0x1ab066[_0x8560('0x4b')],_0x1ab066[_0x8560('0x47')]);_0x3643bf['attributes']=_[_0x8560('0x4a')](_0x1ab066[_0x8560('0x4b')],qs[_0x8560('0x4d')](_0x343cba[_0x8560('0x47')][_0x8560('0x4d')]));_0x3643bf[_0x8560('0x4c')]=_0x3643bf['attributes'][_0x8560('0x4e')]?_0x3643bf[_0x8560('0x4c')]:_0x1ab066[_0x8560('0x4b')];if(!_0x343cba[_0x8560('0x47')]['hasOwnProperty'](_0x8560('0x4f'))){_0x3643bf['limit']=qs['limit'](_0x343cba[_0x8560('0x47')][_0x8560('0x35')]);_0x3643bf['offset']=qs[_0x8560('0x32')](_0x343cba[_0x8560('0x47')]['offset']);}_0x3643bf[_0x8560('0x68')]=qs['sort'](_0x343cba[_0x8560('0x47')][_0x8560('0x50')]);_0x3643bf[_0x8560('0x51')]=qs[_0x8560('0x49')](_[_0x8560('0x69')](_0x343cba[_0x8560('0x47')],_0x1ab066['filters']));_0x3643bf['where'][_0x8560('0x6a')]=_0x1cb174['id'];if(_0x343cba[_0x8560('0x47')]['filter']){_0x3643bf[_0x8560('0x51')]=_[_0x8560('0x52')](_0x3643bf[_0x8560('0x51')],{'$or':_[_0x8560('0x42')](_0x3643bf['attributes'],function(_0x4b46cc){var _0x2f64e8={};_0x2f64e8[_0x4b46cc]={'$like':'%'+_0x343cba['query'][_0x8560('0x54')]+'%'};return _0x2f64e8;})});}_0x3643bf=_[_0x8560('0x52')]({},_0x3643bf,_0x343cba[_0x8560('0x55')]);return db[_0x8560('0x67')][_0x8560('0x34')]({'where':_0x3643bf[_0x8560('0x51')]})[_0x8560('0x24')](function(_0x3d4170){_0x273cc6[_0x8560('0x34')]=_0x3d4170;if(_0x343cba[_0x8560('0x47')][_0x8560('0x56')]){_0x3643bf[_0x8560('0x57')]=[{'all':!![]}];}return db[_0x8560('0x67')][_0x8560('0x6b')](_0x3643bf);})['then'](function(_0x5964d2){_0x273cc6['rows']=_0x5964d2;return _0x273cc6;});}})['then'](respondWithFilteredResult(_0xc217e8,_0x3643bf))[_0x8560('0x2e')](handleError(_0xc217e8,null));};exports[_0x8560('0x6c')]=function(_0x26150f,_0x16388a,_0x456d63){return db[_0x8560('0x43')]['find']({'where':{'id':_0x26150f['params']['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x16388a,null))[_0x8560('0x24')](function(_0x35e984){if(_0x35e984){return _0x35e984[_0x8560('0x6c')](_0x26150f['query'][_0x8560('0x6d')]);}})[_0x8560('0x24')](respondWithStatusCode(_0x16388a,null))[_0x8560('0x2e')](handleError(_0x16388a,null));};exports[_0x8560('0x6e')]=function(_0x4da0f9,_0x51b8ed,_0x2ba579){if(_0x4da0f9[_0x8560('0x5c')]['id']){delete _0x4da0f9[_0x8560('0x5c')]['id'];}return db[_0x8560('0x43')][_0x8560('0x64')]({'where':{'id':_0x4da0f9[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x51b8ed,null))[_0x8560('0x24')](function(_0x1efd39){if(_0x1efd39){_0x4da0f9[_0x8560('0x5c')][_0x8560('0x6a')]=_0x1efd39['id'];return db[_0x8560('0x6f')][_0x8560('0x5b')](_0x4da0f9['body']);}})[_0x8560('0x24')](respondWithResult(_0x51b8ed,null))[_0x8560('0x2e')](handleError(_0x51b8ed,null));};exports[_0x8560('0x70')]=function(_0x456c4e,_0x39317f,_0x43d4d2){var _0x28db66={'raw':![],'where':{}};var _0x5dd169={};var _0xf75f9f={'count':0x0,'rows':[]};return db['FaxAccount'][_0x8560('0x71')]({'where':{'id':_0x456c4e[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x39317f,null))[_0x8560('0x24')](function(_0x49a32b){if(_0x49a32b){_0x5dd169[_0x8560('0x4b')]=_['keys'](db['CannedAnswer']['rawAttributes']);_0x5dd169['query']=_['keys'](_0x456c4e['query']);_0x5dd169['filters']=_[_0x8560('0x4a')](_0x5dd169['model'],_0x5dd169[_0x8560('0x47')]);_0x28db66[_0x8560('0x4c')]=_[_0x8560('0x4a')](_0x5dd169['model'],qs[_0x8560('0x4d')](_0x456c4e[_0x8560('0x47')][_0x8560('0x4d')]));_0x28db66[_0x8560('0x4c')]=_0x28db66[_0x8560('0x4c')][_0x8560('0x4e')]?_0x28db66[_0x8560('0x4c')]:_0x5dd169[_0x8560('0x4b')];if(!_0x456c4e['query']['hasOwnProperty'](_0x8560('0x4f'))){_0x28db66['limit']=qs['limit'](_0x456c4e[_0x8560('0x47')][_0x8560('0x35')]);_0x28db66[_0x8560('0x32')]=qs[_0x8560('0x32')](_0x456c4e['query'][_0x8560('0x32')]);}_0x28db66[_0x8560('0x68')]=qs[_0x8560('0x50')](_0x456c4e[_0x8560('0x47')][_0x8560('0x50')]);_0x28db66[_0x8560('0x51')]=qs['filters'](_['pick'](_0x456c4e['query'],_0x5dd169[_0x8560('0x49')]));_0x28db66[_0x8560('0x51')][_0x8560('0x6a')]=_0x49a32b['id'];if(_0x456c4e[_0x8560('0x47')][_0x8560('0x54')]){_0x28db66[_0x8560('0x51')]=_[_0x8560('0x52')](_0x28db66[_0x8560('0x51')],{'$or':_['map'](_0x28db66['attributes'],function(_0x8333e1){var _0x51b1b2={};_0x51b1b2[_0x8333e1]={'$like':'%'+_0x456c4e[_0x8560('0x47')][_0x8560('0x54')]+'%'};return _0x51b1b2;})});}_0x28db66=_[_0x8560('0x52')]({},_0x28db66,_0x456c4e[_0x8560('0x55')]);return db[_0x8560('0x6f')]['count']({'where':_0x28db66[_0x8560('0x51')]})[_0x8560('0x24')](function(_0x5e44e3){_0xf75f9f[_0x8560('0x34')]=_0x5e44e3;if(_0x456c4e['query'][_0x8560('0x56')]){_0x28db66[_0x8560('0x57')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x28db66);})[_0x8560('0x24')](function(_0x42d43d){_0xf75f9f[_0x8560('0x72')]=_0x42d43d;return _0xf75f9f;});}})[_0x8560('0x24')](respondWithFilteredResult(_0x39317f,_0x28db66))['catch'](handleError(_0x39317f,null));};exports[_0x8560('0x73')]=function(_0x2849a5,_0x203194,_0x3f6fe0){return db[_0x8560('0x43')]['find']({'where':{'id':_0x2849a5[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x203194,null))[_0x8560('0x24')](function(_0x53be36){if(_0x53be36){return _0x53be36['removeAnswers'](_0x2849a5[_0x8560('0x47')][_0x8560('0x6d')]);}})[_0x8560('0x24')](respondWithStatusCode(_0x203194,null))[_0x8560('0x2e')](handleError(_0x203194,null));};exports[_0x8560('0x74')]=function(_0x3602c8,_0x145db7,_0x46c8b6){return db['FaxInteraction'][_0x8560('0x64')]({'where':{'id':_0x3602c8['params']['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x145db7,null))[_0x8560('0x24')](function(_0x246590){if(_0x246590){return _0x246590['addInteraction'](_0x3602c8[_0x8560('0x5c')][_0x8560('0x6d')],_[_0x8560('0x75')](_0x3602c8[_0x8560('0x5c')],[_0x8560('0x6d'),'id'])||{});}})[_0x8560('0x24')](respondWithResult(_0x145db7,null))[_0x8560('0x2e')](handleError(_0x145db7,null));};exports[_0x8560('0x76')]=function(_0x3df46e,_0x5667ae,_0x2b660b){var _0x5d8074={'raw':![],'where':{}};var _0x454565={};var _0x2e75dd={'count':0x0,'rows':[]};return db[_0x8560('0x43')]['findOne']({'where':{'id':_0x3df46e['params']['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x5667ae,null))[_0x8560('0x24')](function(_0x39f1e3){if(_0x39f1e3){_0x454565[_0x8560('0x4b')]=_[_0x8560('0x48')](db[_0x8560('0x77')][_0x8560('0x5a')]);_0x454565[_0x8560('0x47')]=_[_0x8560('0x48')](_0x3df46e[_0x8560('0x47')]);_0x454565[_0x8560('0x49')]=_[_0x8560('0x4a')](_0x454565[_0x8560('0x4b')],_0x454565['query']);_0x5d8074[_0x8560('0x4c')]=_[_0x8560('0x4a')](_0x454565['model'],qs[_0x8560('0x4d')](_0x3df46e[_0x8560('0x47')]['fields']));_0x5d8074['attributes']=_0x5d8074['attributes']['length']?_0x5d8074[_0x8560('0x4c')]:_0x454565[_0x8560('0x4b')];if(!_0x3df46e['query'][_0x8560('0x78')](_0x8560('0x4f'))){_0x5d8074[_0x8560('0x35')]=qs[_0x8560('0x35')](_0x3df46e[_0x8560('0x47')]['limit']);_0x5d8074[_0x8560('0x32')]=qs['offset'](_0x3df46e[_0x8560('0x47')]['offset']);}_0x5d8074[_0x8560('0x68')]=qs[_0x8560('0x50')](_0x3df46e[_0x8560('0x47')]['sort']);_0x5d8074[_0x8560('0x51')]=qs[_0x8560('0x49')](_['pick'](_0x3df46e[_0x8560('0x47')],_0x454565[_0x8560('0x49')]));_0x5d8074[_0x8560('0x51')][_0x8560('0x6a')]=_0x39f1e3['id'];if(_0x3df46e[_0x8560('0x47')]['filter']){_0x5d8074[_0x8560('0x51')]=_[_0x8560('0x52')](_0x5d8074['where'],{'$or':_[_0x8560('0x42')](_0x5d8074[_0x8560('0x4c')],function(_0x351e8e){var _0xc8bc64={};_0xc8bc64[_0x351e8e]={'$like':'%'+_0x3df46e[_0x8560('0x47')]['filter']+'%'};return _0xc8bc64;})});}_0x5d8074=_[_0x8560('0x52')]({},_0x5d8074,_0x3df46e[_0x8560('0x55')]);return db[_0x8560('0x77')][_0x8560('0x34')]({'where':_0x5d8074[_0x8560('0x51')]})[_0x8560('0x24')](function(_0x435057){_0x2e75dd[_0x8560('0x34')]=_0x435057;if(_0x3df46e[_0x8560('0x47')]['includeAll']){_0x5d8074[_0x8560('0x57')]=[{'model':db[_0x8560('0x79')],'as':_0x8560('0x7a'),'required':![]},{'model':db[_0x8560('0x7b')],'as':_0x8560('0x7c'),'attributes':[_0x8560('0x3f'),_0x8560('0x7d'),_0x8560('0x7e')],'required':![]},{'model':db['Tag'],'as':_0x8560('0x7f'),'attributes':['id','name',_0x8560('0x80')],'where':_0x3df46e[_0x8560('0x47')][_0x8560('0x81')]?{'id':_0x3df46e[_0x8560('0x47')]['tag']}:undefined,'required':_0x3df46e[_0x8560('0x47')][_0x8560('0x81')]?!![]:![]}];}return db[_0x8560('0x77')][_0x8560('0x6b')](_0x5d8074);})[_0x8560('0x24')](function(_0x3a3263){_0x2e75dd[_0x8560('0x72')]=_0x3a3263;return _0x2e75dd;});}})[_0x8560('0x24')](respondWithFilteredResult(_0x5667ae,_0x5d8074))[_0x8560('0x2e')](handleError(_0x5667ae,null));};exports['addApplications']=function(_0x2bf772,_0x5a6c9c,_0x11a897){return db[_0x8560('0x43')][_0x8560('0x71')]({'where':{'id':_0x2bf772[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x5a6c9c,null))[_0x8560('0x24')](function(_0x10a3dd){if(_0x10a3dd){return db[_0x8560('0x82')]['transaction'](function(_0x5dd5f6){return db[_0x8560('0x83')][_0x8560('0x3a')]({'where':{'FaxAccountId':_0x2bf772['params']['id']},'transaction':_0x5dd5f6})['then'](function(_0x2adffa){var _0x577223=_[_0x8560('0x42')](_0x2bf772[_0x8560('0x5c')],function(_0x1abd4f){_0x1abd4f['FaxAccountId']=_0x2bf772[_0x8560('0x63')]['id'];return _0x1abd4f;});return db[_0x8560('0x83')]['bulkCreate'](_0x577223,{'transaction':_0x5dd5f6});});})[_0x8560('0x24')](function(){return db[_0x8560('0x83')]['findAndCountAll']({'where':{'FaxAccountId':_0x2bf772[_0x8560('0x63')]['id']},'order':_0x8560('0x84')});});}})[_0x8560('0x24')](respondWithResult(_0x5a6c9c,null))[_0x8560('0x2e')](handleError(_0x5a6c9c,null));};exports[_0x8560('0x85')]=function(_0x4617dc,_0x174fad,_0x180706){var _0x533380={};var _0x420d10={};var _0x3bac59;var _0x176886;return db[_0x8560('0x43')]['findOne']({'where':{'id':_0x4617dc[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x174fad,null))[_0x8560('0x24')](function(_0x48f59c){if(_0x48f59c){_0x3bac59=_0x48f59c;_0x420d10[_0x8560('0x4b')]=_[_0x8560('0x48')](db[_0x8560('0x83')][_0x8560('0x5a')]);_0x420d10['query']=_[_0x8560('0x48')](_0x4617dc['query']);_0x420d10[_0x8560('0x49')]=_[_0x8560('0x4a')](_0x420d10[_0x8560('0x4b')],_0x420d10[_0x8560('0x47')]);_0x533380['attributes']=_['intersection'](_0x420d10[_0x8560('0x4b')],qs[_0x8560('0x4d')](_0x4617dc[_0x8560('0x47')][_0x8560('0x4d')]));_0x533380['attributes']=_0x533380[_0x8560('0x4c')][_0x8560('0x4e')]?_0x533380[_0x8560('0x4c')]:_0x420d10['model'];_0x533380['order']=qs[_0x8560('0x50')](_0x4617dc['query'][_0x8560('0x50')]);_0x533380[_0x8560('0x51')]=qs[_0x8560('0x49')](_[_0x8560('0x69')](_0x4617dc[_0x8560('0x47')],_0x420d10[_0x8560('0x49')]));if(_0x4617dc['query'][_0x8560('0x54')]){_0x533380[_0x8560('0x51')]=_[_0x8560('0x52')](_0x533380[_0x8560('0x51')],{'$or':_[_0x8560('0x42')](_0x533380[_0x8560('0x4c')],function(_0x317e66){var _0x3296b1={};_0x3296b1[_0x317e66]={'$like':'%'+_0x4617dc['query'][_0x8560('0x54')]+'%'};return _0x3296b1;})});}_0x533380=_[_0x8560('0x52')]({},_0x533380,_0x4617dc[_0x8560('0x55')]);return _0x3bac59['getApplications'](_0x533380);}})[_0x8560('0x24')](function(_0x173cba){if(_0x173cba){_0x176886=_0x173cba[_0x8560('0x4e')];if(!_0x4617dc[_0x8560('0x47')]['hasOwnProperty'](_0x8560('0x4f'))){_0x533380[_0x8560('0x35')]=qs['limit'](_0x4617dc[_0x8560('0x47')][_0x8560('0x35')]);_0x533380[_0x8560('0x32')]=qs[_0x8560('0x32')](_0x4617dc[_0x8560('0x47')][_0x8560('0x32')]);}return _0x3bac59['getApplications'](_0x533380);}})[_0x8560('0x24')](function(_0x10044d){if(_0x10044d){return _0x10044d?{'count':_0x176886,'rows':_0x10044d}:null;}})[_0x8560('0x24')](respondWithResult(_0x174fad,null))['catch'](handleError(_0x174fad,null));};function Extension(_0x39f4ae,_0x105265,_0x1fc834,_0xc8eeb3){this[_0x8560('0x86')]=_0x8560('0x87');this['exten']=_0x39f4ae[_0x8560('0x88')];this[_0x8560('0x89')]=_0xc8eeb3;this[_0x8560('0x45')]=_0x8560('0x8a');this['description']=_0x8560('0x8b');this[_0x8560('0x6a')]=_0x39f4ae['id'];this[_0x8560('0x84')]=_0x105265;this[_0x8560('0x8c')]=_0x1fc834;}function createExtensionsReciveFax(_0xd5e629){var _0x39f669=0x1;var _0x35e390=[];_0x35e390[_0x8560('0x8d')](new Extension(_0xd5e629,_0x39f669,'',_0x8560('0x8e')));_0x39f669+=0x1;_0x35e390[_0x8560('0x8d')](new Extension(_0xd5e629,_0x39f669,_0x8560('0x8f'),_0x8560('0x90')));_0x39f669+=0x1;for(var _0xfd8db in _0xd5e629){if(_0xd5e629[_0x8560('0x78')](_0xfd8db)&&(_0xfd8db===_0x8560('0x91')||_0xfd8db===_0x8560('0x88')||_0xfd8db===_0x8560('0x92')||_0xfd8db==='faxdetect'||_0xfd8db==='headerinfo'||_0xfd8db==='maxrate'||_0xfd8db===_0x8560('0x93')||_0xfd8db==='modem'||_0xfd8db==='t38timeout')){_0x35e390[_0x8560('0x8d')](new Extension(_0xd5e629,_0x39f669,'FAXOPT('+_0xfd8db+')='+_0xd5e629[_0xfd8db],_0x8560('0x90')));_0x39f669+=0x1;}}_0x35e390[_0x8560('0x8d')](new Extension(_0xd5e629,_0x39f669,'6',_0x8560('0x94')));_0x39f669+=0x1;_0x35e390[_0x8560('0x8d')](new Extension(_0xd5e629,_0x39f669,_0x8560('0x95'),_0x8560('0x96')));_0x39f669=0x0;return _0x35e390;}exports[_0x8560('0x97')]=function(_0x41fdcc,_0x2c2e6b,_0x4b0c63){var _0x1d7fc1;return db[_0x8560('0x82')][_0x8560('0x98')](function(_0x55e2cb){return db[_0x8560('0x43')][_0x8560('0x5b')](_0x41fdcc['body'],{'transaction':_0x55e2cb})['then'](function(_0x4d0077){_0x1d7fc1=_0x4d0077[_0x8560('0x3b')]({'plain':!![]});return db['VoiceExtension'][_0x8560('0x99')](createExtensionsReciveFax(_0x1d7fc1),{'transaction':_0x55e2cb});});})['then'](function(){return _0x1d7fc1;})[_0x8560('0x24')](respondWithResult(_0x2c2e6b,null))[_0x8560('0x2e')](handleError(_0x2c2e6b,null));};exports[_0x8560('0x9a')]=function(_0x523ee1,_0x922473,_0x45cfae){var _0x36349a;return db[_0x8560('0x82')][_0x8560('0x98')](function(_0x3e1a4){return db[_0x8560('0x43')][_0x8560('0x9b')](_0x523ee1[_0x8560('0x5c')],{'where':{'id':_0x523ee1[_0x8560('0x5c')]['id']},'transaction':_0x3e1a4})[_0x8560('0x24')](function(_0x311e84){return db[_0x8560('0x9c')][_0x8560('0x3a')]({'where':{'FaxAccountId':_0x523ee1[_0x8560('0x5c')]['id']},'transaction':_0x3e1a4})[_0x8560('0x24')](function(_0x47e3fe){return db['VoiceExtension'][_0x8560('0x99')](createExtensionsReciveFax(_['omit'](_0x523ee1[_0x8560('0x5c')],[_0x8560('0x9d'),_0x8560('0x46'),_0x8560('0x9e'),_0x8560('0x9f'),_0x8560('0xa0'),'ListId'])),{'transaction':_0x3e1a4});});});})[_0x8560('0x24')](function(){return db[_0x8560('0x43')]['findById'](_0x523ee1['body']['id']);})[_0x8560('0x24')](respondWithResult(_0x922473,null))[_0x8560('0x2e')](handleError(_0x922473,null));};exports[_0x8560('0xa1')]=function(_0xa4c05f,_0x114500,_0x4aa6cf){var _0x355f40={'raw':!![],'where':{}};var _0x29ec3a={};var _0x5e3a2c={'count':0x0,'rows':[]};return db[_0x8560('0x43')]['findOne']({'where':{'id':_0xa4c05f[_0x8560('0x63')]['id']}})['then'](handleEntityNotFound(_0x114500,null))[_0x8560('0x24')](function(_0xa5b7fa){if(_0xa5b7fa){_0x29ec3a[_0x8560('0x4b')]=_[_0x8560('0x48')](db[_0x8560('0xa2')][_0x8560('0x5a')]);_0x29ec3a['query']=_[_0x8560('0x48')](_0xa4c05f[_0x8560('0x47')]);_0x29ec3a[_0x8560('0x49')]=_['intersection'](_0x29ec3a[_0x8560('0x4b')],_0x29ec3a[_0x8560('0x47')]);_0x355f40[_0x8560('0x4c')]=_['intersection'](_0x29ec3a[_0x8560('0x4b')],qs[_0x8560('0x4d')](_0xa4c05f['query'][_0x8560('0x4d')]));_0x355f40['attributes']=_0x355f40['attributes']['length']?_0x355f40['attributes']:_0x29ec3a[_0x8560('0x4b')];if(!_0xa4c05f[_0x8560('0x47')]['hasOwnProperty'](_0x8560('0x4f'))){_0x355f40[_0x8560('0x35')]=qs[_0x8560('0x35')](_0xa4c05f['query'][_0x8560('0x35')]);_0x355f40['offset']=qs[_0x8560('0x32')](_0xa4c05f[_0x8560('0x47')][_0x8560('0x32')]);}_0x355f40[_0x8560('0x68')]=qs[_0x8560('0x50')](_0xa4c05f[_0x8560('0x47')][_0x8560('0x50')]);_0x355f40[_0x8560('0x51')]=qs[_0x8560('0x49')](_[_0x8560('0x69')](_0xa4c05f['query'],_0x29ec3a[_0x8560('0x49')]));_0x355f40['where'][_0x8560('0x6a')]=_0xa5b7fa['id'];if(_0xa4c05f[_0x8560('0x47')][_0x8560('0x54')]){_0x355f40[_0x8560('0x51')]=_['merge'](_0x355f40[_0x8560('0x51')],{'$or':_[_0x8560('0x42')](_0x355f40[_0x8560('0x4c')],function(_0x19c4b8){var _0x567dcb={};_0x567dcb[_0x19c4b8]={'$like':'%'+_0xa4c05f[_0x8560('0x47')]['filter']+'%'};return _0x567dcb;})});}if(_0xa4c05f[_0x8560('0x47')]['$gte']){var _0xe8c726=_0xa4c05f['query'][_0x8560('0xa3')]['split'](',');var _0x4f5948={};_0x4f5948[_0xe8c726[0x0]]={'$gte':moment(_0xe8c726[0x1])[_0x8560('0xa4')](_0x8560('0xa5'))};_0x355f40[_0x8560('0x51')]=_['merge'](_0x355f40[_0x8560('0x51')],_0x4f5948);}_0x355f40=_[_0x8560('0x52')]({},_0x355f40,_0xa4c05f[_0x8560('0x55')]);return db['FaxMessage'][_0x8560('0x34')]({'where':_0x355f40[_0x8560('0x51')]})[_0x8560('0x24')](function(_0x637b75){_0x5e3a2c[_0x8560('0x34')]=_0x637b75;if(_0xa4c05f[_0x8560('0x47')]['includeAll']){_0x355f40[_0x8560('0x57')]=[{'all':!![]}];}return db[_0x8560('0xa2')][_0x8560('0x6b')](_0x355f40);})[_0x8560('0x24')](function(_0x6fef65){_0x5e3a2c[_0x8560('0x72')]=_0x6fef65;return _0x5e3a2c;});}})[_0x8560('0x24')](respondWithFilteredResult(_0x114500,_0x355f40))[_0x8560('0x2e')](handleError(_0x114500,null));};exports[_0x8560('0xa6')]=function(_0x12bc80,_0xf97189,_0x380889){var _0x5e4d1d,_0x171d34={},_0x1da4bb;if(_0x12bc80[_0x8560('0x5c')]['to']){_0x1da4bb=_0x12bc80[_0x8560('0x5c')]['to'][0x0];}return db[_0x8560('0x43')]['find']({'where':{'id':_0x12bc80['params']['id']},'include':[{'model':db[_0x8560('0xa7')],'as':_0x8560('0xa8'),'include':[{'model':db[_0x8560('0x79')],'as':_0x8560('0xa9'),'where':{'fax':_0x1da4bb},'limit':0x1,'order':[['updatedAt',_0x8560('0xaa')]]}]}]})[_0x8560('0x24')](handleEntityNotFound(_0xf97189,null))['then'](function(_0x57c151){_0x5e4d1d=_0x57c151;if(_0x12bc80['body'][_0x8560('0xab')]&&_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')]['length']){for(var _0x171ef7=0x0;_0x171ef7<_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')][_0x8560('0x4e')];_0x171ef7+=0x1){_0x12bc80['body'][_0x8560('0xab')][_0x171ef7]={'filename':_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')][_0x171ef7]['name'],'id':_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')][_0x171ef7]['id'],'path':path[_0x8560('0xac')](config[_0x8560('0xad')],'server/files/attachments',_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')][_0x171ef7][_0x8560('0xae')])};}}return respondWithRpcPromise(_0x8560('0xaf'),'CheckAfterSend',{'FaxAccountId':_[_0x8560('0xb0')](_0x12bc80[_0x8560('0x63')]['id'])?undefined:_0x12bc80[_0x8560('0x63')]['id'],'path':_[_0x8560('0xb0')](_0x12bc80[_0x8560('0x5c')]['attachments'][0x0][_0x8560('0x8')])?undefined:_0x12bc80['body'][_0x8560('0xab')][0x0][_0x8560('0x8')],'fax':_[_0x8560('0xb0')](_0x12bc80[_0x8560('0x5c')]['to'][0x0])?undefined:_0x12bc80[_0x8560('0x5c')]['to'][0x0]},client9002);})['then'](function(){if(_0x5e4d1d){if(_['isNil'](_0x12bc80[_0x8560('0x5c')]['from'])){_0x12bc80[_0x8560('0x5c')][_0x8560('0xb1')]=util['format'](_0x8560('0xb2'),_0x5e4d1d[_0x8560('0x3f')],_0x5e4d1d[_0x8560('0xb3')]);}if(_0x5e4d1d[_0x8560('0xa8')]){if(_0x5e4d1d['List'][_0x8560('0xa9')]['length']){return _0x5e4d1d['List']['Contacts'][0x0];}else{return db[_0x8560('0x79')]['create'](_['defaults'](_0x12bc80[_0x8560('0x5c')],{'firstName':_0x12bc80[_0x8560('0x5c')]['to'][0x0],'phone':_0x12bc80[_0x8560('0x5c')]['to'][0x0],'fax':_0x12bc80[_0x8560('0x5c')]['to'][0x0],'ListId':_0x5e4d1d[_0x8560('0xb4')]}));}}else{throw new Error(_0x8560('0xb5'));}}else{throw new Error(_0x8560('0xb6'));}})[_0x8560('0x24')](function(_0x5f4b86){if(_0x5f4b86){return db[_0x8560('0x77')][_0x8560('0x64')]({'where':{'ContactId':_0x5f4b86['id'],'closed':![],'FaxAccountId':_0x5e4d1d['id']}})[_0x8560('0x24')](function(_0x4bbfe1){if(_0x4bbfe1){return[_0x4bbfe1,![]];}return db[_0x8560('0x77')]['create']({'UserId':_0x12bc80[_0x8560('0x5d')]['id'],'ContactId':_0x5f4b86['id'],'FaxAccountId':_0x5e4d1d['id'],'fax':_0x12bc80['body']['to'][0x0],'firstMsgDirection':_0x8560('0xb7'),'Messages':[_[_0x8560('0x52')](_0x12bc80[_0x8560('0x5c')],{'read':![],'body':_0x12bc80['body'][_0x8560('0xab')][0x0][_0x8560('0xb8')],'FaxAccountId':_0x5e4d1d['id'],'UserId':_0x12bc80[_0x8560('0x5d')]['id'],'ContactId':_0x5f4b86['id'],'AttachmentId':_0x12bc80['body'][_0x8560('0xab')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':'Messages'}]})[_0x8560('0x24')](function(_0x399bf9){return[_0x399bf9,!![]];});});}else{throw new Error(_0x8560('0xb9'));}})[_0x8560('0xba')](function(_0x4d0136,_0x236c28){if(_0x236c28){return _0x4d0136;}return db[_0x8560('0xa2')]['create']({'direction':_0x8560('0xb7'),'read':![],'body':_0x12bc80[_0x8560('0x5c')]['attachments'][0x0][_0x8560('0xb8')],'FaxAccountId':_0x5e4d1d['id'],'FaxInteractionId':_0x4d0136['id'],'UserId':_0x12bc80[_0x8560('0x5d')]['id'],'ContactId':_0x4d0136[_0x8560('0xbb')],'AttachmentId':_0x12bc80[_0x8560('0x5c')][_0x8560('0xab')][0x0]['id']})[_0x8560('0x24')](function(_0x51aecf){_0x4d0136[_0x8560('0xbc')][_0x8560('0xbd')]=[];_0x4d0136['dataValues'][_0x8560('0xbd')][_0x8560('0x8d')](_0x51aecf['dataValues']);return _0x4d0136;});})[_0x8560('0x24')](function(_0x2c6042){respondWithRpcPromise(_0x8560('0xbe'),_0x8560('0xbe'),{'FaxAccountId':_[_0x8560('0xb0')](_0x12bc80[_0x8560('0x63')]['id'])?undefined:_0x12bc80[_0x8560('0x63')]['id'],'path':_['isNil'](_0x12bc80[_0x8560('0x5c')]['attachments'][0x0][_0x8560('0x8')])?undefined:_0x12bc80[_0x8560('0x5c')]['attachments'][0x0][_0x8560('0x8')],'fax':_[_0x8560('0xb0')](_0x12bc80[_0x8560('0x5c')]['to'][0x0])?undefined:_0x12bc80['body']['to'][0x0],'AttachmentId':_0x12bc80[_0x8560('0x5c')]['attachments'][0x0]['id']},client9002)['then'](function(_0x1556db){logger['info'](_0x8560('0xbf'),_0x1556db);})[_0x8560('0x2e')](function(_0x215668){logger[_0x8560('0xc0')](_0x8560('0xbf'),_0x215668);});return _0x2c6042;})[_0x8560('0x24')](respondWithResult(_0xf97189,null))[_0x8560('0x2e')](handleError(_0xf97189,null));};exports[_0x8560('0xc1')]=function(_0x2e59b7,_0x4c005a,_0x3247ea){return db[_0x8560('0x43')][_0x8560('0x64')]({'where':{'id':_0x2e59b7[_0x8560('0x63')]['id']}})['then'](handleEntityNotFound(_0x4c005a,null))[_0x8560('0x24')](function(_0x551084){if(_0x551084){return _0x551084[_0x8560('0xc1')](_0x2e59b7[_0x8560('0x5c')]['ids'],_['omit'](_0x2e59b7[_0x8560('0x5c')],[_0x8560('0x6d'),'id'])||{})[_0x8560('0xba')](function(_0x5deaa1){for(var _0x1239ce=0x0;_0x1239ce<_0x2e59b7[_0x8560('0x5c')][_0x8560('0x6d')]['length'];_0x1239ce+=0x1){socket['emit']('userFaxAccount:save',{'UserId':Number(_0x2e59b7[_0x8560('0x5c')][_0x8560('0x6d')][_0x1239ce]),'FaxAccountId':Number(_0x2e59b7[_0x8560('0x63')]['id'])});}return _0x5deaa1;});}})['then'](respondWithResult(_0x4c005a,null))[_0x8560('0x2e')](handleError(_0x4c005a,null));};exports[_0x8560('0xc2')]=function(_0x36ff94,_0x29b2c5,_0x16c038){return db[_0x8560('0x43')]['find']({'where':{'id':_0x36ff94[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x29b2c5,null))['then'](function(_0x4d7bca){if(_0x4d7bca){return _0x4d7bca['removeAgents'](_0x36ff94[_0x8560('0x47')][_0x8560('0x6d')])[_0x8560('0x24')](function(){if(_[_0x8560('0xc3')](_0x36ff94['query']['ids'])){for(var _0x1f1581=0x0;_0x1f1581<_0x36ff94[_0x8560('0x47')][_0x8560('0x6d')][_0x8560('0x4e')];_0x1f1581+=0x1){socket[_0x8560('0xc4')](_0x8560('0xc5'),{'UserId':Number(_0x36ff94[_0x8560('0x47')]['ids'][_0x1f1581]),'FaxAccountId':Number(_0x36ff94[_0x8560('0x63')]['id'])});}}else{socket[_0x8560('0xc4')]('userFaxAccount:remove',{'UserId':Number(_0x36ff94['query'][_0x8560('0x6d')]),'FaxAccountId':Number(_0x36ff94['params']['id'])});}});}})['then'](respondWithStatusCode(_0x29b2c5,null))[_0x8560('0x2e')](handleError(_0x29b2c5,null));};exports[_0x8560('0xc6')]=function(_0x3291b1,_0x3d58ac,_0x40f28d){var _0xcd2de0={};var _0x5b36c5={};var _0x3f4b11;var _0x118dcf;return db[_0x8560('0x43')][_0x8560('0x71')]({'where':{'id':_0x3291b1[_0x8560('0x63')]['id']}})[_0x8560('0x24')](handleEntityNotFound(_0x3d58ac,null))[_0x8560('0x24')](function(_0x10dbee){if(_0x10dbee){_0x3f4b11=_0x10dbee;_0x5b36c5[_0x8560('0x4b')]=_[_0x8560('0x48')](db[_0x8560('0x7b')][_0x8560('0x5a')]);_0x5b36c5[_0x8560('0x47')]=_['keys'](_0x3291b1[_0x8560('0x47')]);_0x5b36c5['filters']=_['intersection'](_0x5b36c5[_0x8560('0x4b')],_0x5b36c5[_0x8560('0x47')]);_0xcd2de0['attributes']=_[_0x8560('0x4a')](_0x5b36c5['model'],qs['fields'](_0x3291b1[_0x8560('0x47')][_0x8560('0x4d')]));_0xcd2de0['attributes']=_0xcd2de0[_0x8560('0x4c')]['length']?_0xcd2de0['attributes']:_0x5b36c5[_0x8560('0x4b')];_0xcd2de0['order']=qs[_0x8560('0x50')](_0x3291b1[_0x8560('0x47')]['sort']);_0xcd2de0['where']=qs[_0x8560('0x49')](_[_0x8560('0x69')](_0x3291b1[_0x8560('0x47')],_0x5b36c5[_0x8560('0x49')]));if(_0x3291b1[_0x8560('0x47')][_0x8560('0x54')]){_0xcd2de0[_0x8560('0x51')]=_[_0x8560('0x52')](_0xcd2de0[_0x8560('0x51')],{'$or':_[_0x8560('0x42')](_0xcd2de0[_0x8560('0x4c')],function(_0x13e429){var _0x4eb165={};_0x4eb165[_0x13e429]={'$like':'%'+_0x3291b1[_0x8560('0x47')]['filter']+'%'};return _0x4eb165;})});}_0xcd2de0=_[_0x8560('0x52')]({},_0xcd2de0,_0x3291b1[_0x8560('0x55')]);return _0x3f4b11[_0x8560('0xc6')](_0xcd2de0);}})[_0x8560('0x24')](function(_0xb20153){if(_0xb20153){_0x118dcf=_0xb20153[_0x8560('0x4e')];if(!_0x3291b1[_0x8560('0x47')]['hasOwnProperty']('nolimit')){_0xcd2de0[_0x8560('0x35')]=qs[_0x8560('0x35')](_0x3291b1[_0x8560('0x47')][_0x8560('0x35')]);_0xcd2de0[_0x8560('0x32')]=qs['offset'](_0x3291b1[_0x8560('0x47')][_0x8560('0x32')]);}return _0x3f4b11[_0x8560('0xc6')](_0xcd2de0);}})['then'](function(_0x5ab1d7){if(_0x5ab1d7){return _0x5ab1d7?{'count':_0x118dcf,'rows':_0x5ab1d7}:null;}})[_0x8560('0x24')](respondWithResult(_0x3d58ac,null))[_0x8560('0x2e')](handleError(_0x3d58ac,null));};
\ No newline at end of file
index 930cf29..dfc7065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cfa=['remove','emit','hasOwnProperty','hook','exports','events','setMaxListeners','save','update'];(function(_0x91c2d1,_0x580af9){var _0x374617=function(_0x4613e5){while(--_0x4613e5){_0x91c2d1['push'](_0x91c2d1['shift']());}};_0x374617(++_0x580af9);}(_0x7cfa,0x137));var _0xa7cf=function(_0x636a1,_0xf5715){_0x636a1=_0x636a1-0x0;var _0x2b7e4c=_0x7cfa[_0x636a1];return _0x2b7e4c;};'use strict';var EventEmitter=require(_0xa7cf('0x0'));var FaxAccount=require('../../mysqldb')['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xa7cf('0x1')](0x0);var events={'afterCreate':_0xa7cf('0x2'),'afterUpdate':_0xa7cf('0x3'),'afterDestroy':_0xa7cf('0x4')};function emitEvent(_0x541b45){return function(_0x319aed,_0x5c135c,_0xce9fa4){FaxAccountEvents[_0xa7cf('0x5')](_0x541b45+':'+_0x319aed['id'],_0x319aed);FaxAccountEvents[_0xa7cf('0x5')](_0x541b45,_0x319aed);_0xce9fa4(null);};}for(var e in events){if(events[_0xa7cf('0x6')](e)){var event=events[e];FaxAccount[_0xa7cf('0x7')](e,emitEvent(event));}}module[_0xa7cf('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0xa273=['save','remove','emit','hasOwnProperty','hook','exports','events','FaxAccount'];(function(_0x4849f6,_0x104836){var _0x1a3dcd=function(_0x494d3c){while(--_0x494d3c){_0x4849f6['push'](_0x4849f6['shift']());}};_0x1a3dcd(++_0x104836);}(_0xa273,0xf6));var _0x3a27=function(_0x5cce75,_0x13ac3f){_0x5cce75=_0x5cce75-0x0;var _0x1397fb=_0xa273[_0x5cce75];return _0x1397fb;};'use strict';var EventEmitter=require(_0x3a27('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0x3a27('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3a27('0x2'),'afterUpdate':'update','afterDestroy':_0x3a27('0x3')};function emitEvent(_0x20c173){return function(_0x226758,_0x1614e9,_0x42c06f){FaxAccountEvents[_0x3a27('0x4')](_0x20c173+':'+_0x226758['id'],_0x226758);FaxAccountEvents[_0x3a27('0x4')](_0x20c173,_0x226758);_0x42c06f(null);};}for(var e in events){if(events[_0x3a27('0x5')](e)){var event=events[e];FaxAccount[_0x3a27('0x6')](e,emitEvent(event));}}module[_0x3a27('0x7')]=FaxAccountEvents;
\ No newline at end of file
index f70535f..abd2166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84a1=['path','../../config/environment','./faxAccount.attributes','define','fax_accounts','util','../../config/logger','bluebird','request-promise'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0x84a1,0xb0));var _0x184a=function(_0x34f9cf,_0x5db8c7){_0x34f9cf=_0x34f9cf-0x0;var _0x5aa8c5=_0x84a1[_0x34f9cf];return _0x5aa8c5;};'use strict';var _=require('lodash');var util=require(_0x184a('0x0'));var logger=require(_0x184a('0x1'))('api');var moment=require('moment');var BPromise=require(_0x184a('0x2'));var rp=require(_0x184a('0x3'));var fs=require('fs');var path=require(_0x184a('0x4'));var rimraf=require('rimraf');var config=require(_0x184a('0x5'));var attributes=require(_0x184a('0x6'));module['exports']=function(_0x1ffa4d,_0x589b31){return _0x1ffa4d[_0x184a('0x7')]('FaxAccount',attributes,{'tableName':_0x184a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf138=['fax_accounts','lodash','util','../../config/logger','moment','request-promise','path','rimraf','exports','FaxAccount'];(function(_0x539533,_0x59b89b){var _0x3942f3=function(_0x3b386c){while(--_0x3b386c){_0x539533['push'](_0x539533['shift']());}};_0x3942f3(++_0x59b89b);}(_0xf138,0xb5));var _0x8f13=function(_0x3b6852,_0x5dd3f4){_0x3b6852=_0x3b6852-0x0;var _0x3aa9f4=_0xf138[_0x3b6852];return _0x3aa9f4;};'use strict';var _=require(_0x8f13('0x0'));var util=require(_0x8f13('0x1'));var logger=require(_0x8f13('0x2'))('api');var moment=require(_0x8f13('0x3'));var BPromise=require('bluebird');var rp=require(_0x8f13('0x4'));var fs=require('fs');var path=require(_0x8f13('0x5'));var rimraf=require(_0x8f13('0x6'));var config=require('../../config/environment');var attributes=require('./faxAccount.attributes');module[_0x8f13('0x7')]=function(_0x1ba6d4,_0x553709){return _0x1ba6d4['define'](_0x8f13('0x8'),attributes,{'tableName':_0x8f13('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7bd957e..7c86aac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9023=['CompanyId','ListId','isNil','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','from','find','List','Contacts','DESC','FaxApplication','Applications','get','applications','list','orderBy','asc','account','length','FaxInteraction','create','Contact\x20not\x20found','spread','autoclose','push','*,*,*,*','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','FaxAccount','findAll','options','attributes','include','map','model','GetFaxAccount','stringify','NotifyFaxAccount','body','fax','CmContact','describe','Sequelize','no\x20available\x20attributes','difference','keys','createdAt','updatedAt'];(function(_0xa35666,_0x19fb8a){var _0x4b2d2f=function(_0x5d3fca){while(--_0x5d3fca){_0xa35666['push'](_0xa35666['shift']());}};_0x4b2d2f(++_0x19fb8a);}(_0x9023,0xdf));var _0x3902=function(_0x2d837f,_0x5c77d9){_0x2d837f=_0x2d837f-0x0;var _0x453692=_0x9023[_0x2d837f];return _0x453692;};'use strict';var _=require(_0x3902('0x0'));var util=require(_0x3902('0x1'));var moment=require('moment');var BPromise=require(_0x3902('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3902('0x3'));var db=require(_0x3902('0x4'))['db'];var utils=require(_0x3902('0x5'));var logger=require(_0x3902('0x6'))(_0x3902('0x7'));var config=require(_0x3902('0x8'));var jayson=require(_0x3902('0x9'));var client=jayson['client'][_0x3902('0xa')]({'port':0x232c});config[_0x3902('0xb')]=_[_0x3902('0xc')](config[_0x3902('0xb')],{'host':_0x3902('0xd'),'port':0x18eb});var socket=require(_0x3902('0xe'))(new Redis(config[_0x3902('0xb')]));require(_0x3902('0xf'))['register'](socket);function respondWithRpcPromise(_0x12c69b,_0x4d3115,_0x581786){return new BPromise(function(_0x30cfe7,_0xe45f42){return client[_0x3902('0x10')](_0x12c69b,_0x581786)[_0x3902('0x11')](function(_0x25fa75){logger[_0x3902('0x12')](_0x3902('0x13'),_0x4d3115,_0x3902('0x14'));logger[_0x3902('0x15')](_0x3902('0x16'),_0x4d3115,'request\x20sent',JSON['stringify'](_0x25fa75));if(_0x25fa75[_0x3902('0x17')]){if(_0x25fa75[_0x3902('0x17')][_0x3902('0x18')]===0x1f4){logger[_0x3902('0x17')](_0x3902('0x13'),_0x4d3115,_0x25fa75[_0x3902('0x17')][_0x3902('0x19')]);return _0xe45f42(_0x25fa75[_0x3902('0x17')][_0x3902('0x19')]);}logger[_0x3902('0x17')]('FaxAccount,\x20%s,\x20%s',_0x4d3115,_0x25fa75[_0x3902('0x17')][_0x3902('0x19')]);return _0x30cfe7(_0x25fa75[_0x3902('0x17')]['message']);}else{logger['info'](_0x3902('0x13'),_0x4d3115,_0x3902('0x14'));_0x30cfe7(_0x25fa75['result'][_0x3902('0x19')]);}})[_0x3902('0x1a')](function(_0x1fdf62){logger[_0x3902('0x17')](_0x3902('0x13'),_0x4d3115,_0x1fdf62);_0xe45f42(_0x1fdf62);});});}exports['GetFaxAccount']=function(_0x41d13a){var _0x5c1764=this;return new Promise(function(_0x594129,_0x38a754){return db[_0x3902('0x1b')][_0x3902('0x1c')]({'raw':_0x41d13a[_0x3902('0x1d')]?_0x41d13a[_0x3902('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x41d13a['options']?_0x41d13a['options']['where']||null:null,'attributes':_0x41d13a[_0x3902('0x1d')]?_0x41d13a[_0x3902('0x1d')][_0x3902('0x1e')]||null:null,'limit':_0x41d13a[_0x3902('0x1d')]?_0x41d13a[_0x3902('0x1d')]['limit']||null:null,'include':_0x41d13a['options']?_0x41d13a['options'][_0x3902('0x1f')]?_[_0x3902('0x20')](_0x41d13a[_0x3902('0x1d')]['include'],function(_0x1ac260){return{'model':db[_0x1ac260[_0x3902('0x21')]],'as':_0x1ac260['as'],'attributes':_0x1ac260[_0x3902('0x1e')],'include':_0x1ac260[_0x3902('0x1f')]?_[_0x3902('0x20')](_0x1ac260[_0x3902('0x1f')],function(_0x2db989){return{'model':db[_0x2db989[_0x3902('0x21')]],'as':_0x2db989['as'],'attributes':_0x2db989[_0x3902('0x1e')],'include':_0x2db989['include']?_[_0x3902('0x20')](_0x2db989[_0x3902('0x1f')],function(_0x1fc393){return{'model':db[_0x1fc393['model']],'as':_0x1fc393['as'],'attributes':_0x1fc393[_0x3902('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x182a49){logger[_0x3902('0x12')](_0x3902('0x22'),_0x41d13a);logger[_0x3902('0x15')](_0x3902('0x22'),_0x41d13a,JSON[_0x3902('0x23')](_0x182a49));_0x594129(_0x182a49);})[_0x3902('0x1a')](function(_0x3b9cf4){logger['error']('GetFaxAccount',_0x3b9cf4[_0x3902('0x19')],_0x41d13a);_0x38a754(_0x5c1764[_0x3902('0x17')](0x1f4,_0x3b9cf4[_0x3902('0x19')]));});});};exports[_0x3902('0x24')]=function(_0x4a18c4,_0x4199a2,_0x1ababf){var _0x14f9b0=this;return new Promise(function(_0x2abeff,_0x2e961a){var _0xb93f4d={'body':_0x4a18c4[_0x3902('0x25')],'channel':_0x3902('0x26')};var _0x2dc13c=[];var _0x5f02a9=[];var _0x4e7a91={};return db[_0x3902('0x27')][_0x3902('0x28')]()[_0x3902('0x11')](function(_0x49fbd9){if(!_0x49fbd9){throw new db[(_0x3902('0x29'))]['ValidationError'](_0x3902('0x2a'));}_0x2dc13c=_[_0x3902('0x2b')](_[_0x3902('0x2c')](_0x49fbd9),[_0x3902('0x2d'),_0x3902('0x2e')]);_0x5f02a9=_[_0x3902('0x2b')](_['keys'](_0x49fbd9),[_0x3902('0x2d'),_0x3902('0x2e'),_0x3902('0x2f'),_0x3902('0x30')]);if(_0x4a18c4[_0x3902('0x25')]['id']){delete _0x4a18c4[_0x3902('0x25')]['id'];}if(_[_0x3902('0x31')](_0x4a18c4['body']['from'])){throw new db[(_0x3902('0x29'))][(_0x3902('0x32'))]('from\x20is\x20mandatory');}if(_[_0x3902('0x31')](_0x4a18c4[_0x3902('0x25')][_0x3902('0x25')])||_0x4a18c4[_0x3902('0x25')][_0x3902('0x25')]===''){throw new db[(_0x3902('0x29'))][(_0x3902('0x32'))](_0x3902('0x33'));}if(_[_0x3902('0x31')](_0x4a18c4[_0x3902('0x25')][_0x3902('0x34')])){throw new db[(_0x3902('0x29'))][(_0x3902('0x32'))](_0x3902('0x35')+_0x5f02a9);}if(!_[_0x3902('0x36')](_0x5f02a9,_0x4a18c4['body']['mapKey'])){throw new db['Sequelize'][(_0x3902('0x32'))](_0x3902('0x37')+_0x5f02a9);}_0x4e7a91[_0x4a18c4[_0x3902('0x25')][_0x3902('0x34')]]=_0x4a18c4['body'][_0x3902('0x38')];})['then'](function(){return db[_0x3902('0x1b')][_0x3902('0x39')]({'where':{'id':_0x4a18c4['account']['id']},'include':[{'model':db['CmList'],'as':_0x3902('0x3a'),'include':[{'model':db[_0x3902('0x27')],'as':_0x3902('0x3b'),'where':_0x4e7a91,'limit':0x1,'order':[[_0x3902('0x2e'),_0x3902('0x3c')]]}]},{'model':db[_0x3902('0x3d')],'as':_0x3902('0x3e')}]});})[_0x3902('0x11')](function(_0x581208){if(_0x581208&&_0x581208['List']){var _0x428ae2=_0x581208[_0x3902('0x3f')]({'plain':!![]});_0xb93f4d['account']=_0x428ae2;_0xb93f4d[_0x3902('0x40')]=_0x428ae2['Applications'];_0xb93f4d[_0x3902('0x41')]=_0x428ae2[_0x3902('0x3a')];_0xb93f4d[_0x3902('0x40')]=_[_0x3902('0x42')](_0xb93f4d[_0x3902('0x40')],['priority'],[_0x3902('0x43')]);if(_0xb93f4d[_0x3902('0x44')][_0x3902('0x3e')]){delete _0xb93f4d[_0x3902('0x44')]['Applications'];}if(_0xb93f4d['account'][_0x3902('0x3a')]&&_0xb93f4d[_0x3902('0x44')][_0x3902('0x3a')][_0x3902('0x3b')][_0x3902('0x45')]){return _0xb93f4d[_0x3902('0x44')][_0x3902('0x3a')]['Contacts'][0x0];}var _0x512c9b=_['defaults'](_0x4a18c4['body'],{'firstName':_0x4a18c4[_0x3902('0x25')][_0x3902('0x38')],'ListId':_0x428ae2[_0x3902('0x30')]});_0x512c9b[_0x4a18c4[_0x3902('0x25')][_0x3902('0x34')]]=_0x4a18c4['body'][_0x3902('0x38')];return db[_0x3902('0x27')]['create'](_0x512c9b,{'fields':_0x2dc13c,'raw':!![]});}})['then'](function(_0x283a93){_0xb93f4d['contact']=_0x283a93;if(_0x283a93){var _0x173a65={'ContactId':_0x283a93['id'],'FaxAccountId':_0x4a18c4[_0x3902('0x44')]['id'],'fax':_0x283a93[_0x3902('0x26')]};return db[_0x3902('0x46')][_0x3902('0x39')]({'where':{'ContactId':_0x283a93['id'],'closed':![],'FaxAccountId':_0x4a18c4['account']['id']}})[_0x3902('0x11')](function(_0x4ae618){if(_0x4ae618){return[_0x4ae618,![]];}return db[_0x3902('0x46')][_0x3902('0x47')](_0x173a65)[_0x3902('0x11')](function(_0x5bcdc7){return[_0x5bcdc7,!![]];});});}else{throw new Error(_0x3902('0x48'));}})[_0x3902('0x49')](function(_0x2963f8,_0x132559){var _0x457709=_0x2963f8[_0x3902('0x3f')]({'plain':!![]});if(_0x132559){if(_0xb93f4d['account'][_0x3902('0x4a')]){_0xb93f4d[_0x3902('0x40')][_0x3902('0x4b')]({'id':0x0,'priority':_0xb93f4d[_0x3902('0x40')][_0x3902('0x45')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x3902('0x4c')});}_0x457709[_0x3902('0x4d')]=!![];}else{_0x457709[_0x3902('0x4d')]=![];}_0xb93f4d[_0x3902('0x4e')]=_0x457709;return db[_0x3902('0x4f')][_0x3902('0x47')]({'body':_0x4a18c4['body']['body'],'FaxAccountId':_0x4a18c4[_0x3902('0x44')]['id'],'FaxInteractionId':_0x2963f8['id'],'direction':'in','ContactId':_0x2963f8[_0x3902('0x50')],'AttachmentId':_0x4a18c4['body'][_0x3902('0x51')]});})[_0x3902('0x11')](function(_0x195704){_0xb93f4d[_0x3902('0x19')]=_0x195704;if(_0xb93f4d[_0x3902('0x4e')][_0x3902('0x52')]){return db[_0x3902('0x53')][_0x3902('0x39')]({'attributes':['id',_0x3902('0x54')],'where':{'id':_0xb93f4d[_0x3902('0x4e')][_0x3902('0x52')]}})[_0x3902('0x11')](function(_0xe45aed){if(_0xe45aed){_0xb93f4d[_0x3902('0x40')][_0x3902('0x55')]({'id':0x0,'priority':0x0,'app':_0x3902('0x56'),'appdata':_0xe45aed[_0x3902('0x54')]+','+(_0xb93f4d[_0x3902('0x44')][_0x3902('0x57')]||0xa),'interval':_0x3902('0x4c')});}return respondWithRpcPromise(_0x3902('0x58'),'startRouting',_0xb93f4d);});}return respondWithRpcPromise(_0x3902('0x58'),_0x3902('0x59'),_0xb93f4d);})[_0x3902('0x11')](function(_0x3b54df){_0x2abeff(_0x3b54df);})[_0x3902('0x1a')](function(_0x47dbc6){_0x2e961a(_0x14f9b0[_0x3902('0x17')](0x1f4,_0x47dbc6['message']));});});};
\ No newline at end of file
+var _0x2fea=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxAccount.socket','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetFaxAccount','options','raw','where','attributes','include','map','model','debug','body','fax','describe','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','keys','CompanyId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','ValidationError','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','FaxAccount','find','account','CmList','List','CmContact','DESC','FaxApplication','Applications','applications','orderBy','priority','asc','Contacts','length','ListId','FaxInteraction','create','Contact\x20not\x20found','spread','push','unmanaged','*,*,*,*','created','interaction','AttachmentId','name','UserId','agent','waitForTheAssignedAgent','Start','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2adf93,_0x1b1baa){var _0x4a8be9=function(_0x3ea49f){while(--_0x3ea49f){_0x2adf93['push'](_0x2adf93['shift']());}};_0x4a8be9(++_0x1b1baa);}(_0x2fea,0x1f1));var _0xa2fe=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2fea[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa2fe('0x0'));var util=require(_0xa2fe('0x1'));var moment=require(_0xa2fe('0x2'));var BPromise=require('bluebird');var rs=require(_0xa2fe('0x3'));var fs=require('fs');var Redis=require(_0xa2fe('0x4'));var db=require(_0xa2fe('0x5'))['db'];var utils=require(_0xa2fe('0x6'));var logger=require(_0xa2fe('0x7'))(_0xa2fe('0x8'));var config=require(_0xa2fe('0x9'));var jayson=require(_0xa2fe('0xa'));var client=jayson[_0xa2fe('0xb')][_0xa2fe('0xc')]({'port':0x232c});config[_0xa2fe('0xd')]=_[_0xa2fe('0xe')](config['redis'],{'host':_0xa2fe('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa2fe('0xd')]));require(_0xa2fe('0x10'))['register'](socket);function respondWithRpcPromise(_0x4e5eb6,_0x5698c3,_0xc928aa){return new BPromise(function(_0xf5b124,_0xb79847){return client['request'](_0x4e5eb6,_0xc928aa)[_0xa2fe('0x11')](function(_0x27c57f){logger[_0xa2fe('0x12')](_0xa2fe('0x13'),_0x5698c3,_0xa2fe('0x14'));logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x5698c3,_0xa2fe('0x14'),JSON[_0xa2fe('0x15')](_0x27c57f));if(_0x27c57f[_0xa2fe('0x16')]){if(_0x27c57f[_0xa2fe('0x16')][_0xa2fe('0x17')]===0x1f4){logger[_0xa2fe('0x16')]('FaxAccount,\x20%s,\x20%s',_0x5698c3,_0x27c57f[_0xa2fe('0x16')][_0xa2fe('0x18')]);return _0xb79847(_0x27c57f[_0xa2fe('0x16')]['message']);}logger[_0xa2fe('0x16')](_0xa2fe('0x13'),_0x5698c3,_0x27c57f[_0xa2fe('0x16')][_0xa2fe('0x18')]);return _0xf5b124(_0x27c57f[_0xa2fe('0x16')][_0xa2fe('0x18')]);}else{logger[_0xa2fe('0x12')](_0xa2fe('0x13'),_0x5698c3,_0xa2fe('0x14'));_0xf5b124(_0x27c57f['result']['message']);}})[_0xa2fe('0x19')](function(_0x3bb72c){logger['error'](_0xa2fe('0x13'),_0x5698c3,_0x3bb72c);_0xb79847(_0x3bb72c);});});}exports[_0xa2fe('0x1a')]=function(_0x597d68){var _0x2d8fd1=this;return new Promise(function(_0xdfcb04,_0x540d6b){return db['FaxAccount']['findAll']({'raw':_0x597d68['options']?_0x597d68[_0xa2fe('0x1b')][_0xa2fe('0x1c')]===undefined?!![]:![]:!![],'where':_0x597d68[_0xa2fe('0x1b')]?_0x597d68[_0xa2fe('0x1b')][_0xa2fe('0x1d')]||null:null,'attributes':_0x597d68['options']?_0x597d68[_0xa2fe('0x1b')][_0xa2fe('0x1e')]||null:null,'limit':_0x597d68['options']?_0x597d68[_0xa2fe('0x1b')]['limit']||null:null,'include':_0x597d68[_0xa2fe('0x1b')]?_0x597d68[_0xa2fe('0x1b')][_0xa2fe('0x1f')]?_[_0xa2fe('0x20')](_0x597d68['options'][_0xa2fe('0x1f')],function(_0x2ad602){return{'model':db[_0x2ad602[_0xa2fe('0x21')]],'as':_0x2ad602['as'],'attributes':_0x2ad602['attributes'],'include':_0x2ad602[_0xa2fe('0x1f')]?_[_0xa2fe('0x20')](_0x2ad602[_0xa2fe('0x1f')],function(_0x2130a4){return{'model':db[_0x2130a4['model']],'as':_0x2130a4['as'],'attributes':_0x2130a4['attributes'],'include':_0x2130a4['include']?_[_0xa2fe('0x20')](_0x2130a4['include'],function(_0x43c98c){return{'model':db[_0x43c98c[_0xa2fe('0x21')]],'as':_0x43c98c['as'],'attributes':_0x43c98c[_0xa2fe('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b3e90){logger[_0xa2fe('0x12')](_0xa2fe('0x1a'),_0x597d68);logger[_0xa2fe('0x22')](_0xa2fe('0x1a'),_0x597d68,JSON[_0xa2fe('0x15')](_0x3b3e90));_0xdfcb04(_0x3b3e90);})['catch'](function(_0xfd4a0b){logger['error'](_0xa2fe('0x1a'),_0xfd4a0b[_0xa2fe('0x18')],_0x597d68);_0x540d6b(_0x2d8fd1[_0xa2fe('0x16')](0x1f4,_0xfd4a0b[_0xa2fe('0x18')]));});});};exports['NotifyFaxAccount']=function(_0x467e61,_0x9233ee,_0x20d5b3){var _0x1e584a=this;return new Promise(function(_0x2c8407,_0xdbf09f){var _0x5ddb5e={'body':_0x467e61[_0xa2fe('0x23')],'channel':_0xa2fe('0x24')};var _0xaba559=[];var _0x53883b=[];var _0x552f71={};return db['CmContact'][_0xa2fe('0x25')]()[_0xa2fe('0x11')](function(_0x5236a2){if(!_0x5236a2){throw new db[(_0xa2fe('0x26'))]['ValidationError'](_0xa2fe('0x27'));}_0xaba559=_[_0xa2fe('0x28')](_['keys'](_0x5236a2),[_0xa2fe('0x29'),_0xa2fe('0x2a')]);_0x53883b=_[_0xa2fe('0x28')](_[_0xa2fe('0x2b')](_0x5236a2),['createdAt',_0xa2fe('0x2a'),_0xa2fe('0x2c'),'ListId']);if(_0x467e61[_0xa2fe('0x23')]['id']){delete _0x467e61['body']['id'];}if(_[_0xa2fe('0x2d')](_0x467e61['body'][_0xa2fe('0x2e')])){throw new db[(_0xa2fe('0x26'))]['ValidationError'](_0xa2fe('0x2f'));}if(_['isNil'](_0x467e61[_0xa2fe('0x23')][_0xa2fe('0x23')])||_0x467e61[_0xa2fe('0x23')][_0xa2fe('0x23')]===''){throw new db[(_0xa2fe('0x26'))]['ValidationError'](_0xa2fe('0x30'));}if(_[_0xa2fe('0x2d')](_0x467e61[_0xa2fe('0x23')]['mapKey'])){throw new db['Sequelize'][(_0xa2fe('0x31'))](_0xa2fe('0x32')+_0x53883b);}if(!_[_0xa2fe('0x33')](_0x53883b,_0x467e61[_0xa2fe('0x23')][_0xa2fe('0x34')])){throw new db[(_0xa2fe('0x26'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x53883b);}_0x552f71[_0x467e61['body'][_0xa2fe('0x34')]]=_0x467e61[_0xa2fe('0x23')][_0xa2fe('0x2e')];})[_0xa2fe('0x11')](function(){return db[_0xa2fe('0x35')][_0xa2fe('0x36')]({'where':{'id':_0x467e61[_0xa2fe('0x37')]['id']},'include':[{'model':db[_0xa2fe('0x38')],'as':_0xa2fe('0x39'),'include':[{'model':db[_0xa2fe('0x3a')],'as':'Contacts','where':_0x552f71,'limit':0x1,'order':[[_0xa2fe('0x2a'),_0xa2fe('0x3b')]]}]},{'model':db[_0xa2fe('0x3c')],'as':_0xa2fe('0x3d')}]});})[_0xa2fe('0x11')](function(_0x43b62b){if(_0x43b62b&&_0x43b62b[_0xa2fe('0x39')]){var _0x4a972c=_0x43b62b['get']({'plain':!![]});_0x5ddb5e[_0xa2fe('0x37')]=_0x4a972c;_0x5ddb5e[_0xa2fe('0x3e')]=_0x4a972c[_0xa2fe('0x3d')];_0x5ddb5e['list']=_0x4a972c['List'];_0x5ddb5e[_0xa2fe('0x3e')]=_[_0xa2fe('0x3f')](_0x5ddb5e[_0xa2fe('0x3e')],[_0xa2fe('0x40')],[_0xa2fe('0x41')]);if(_0x5ddb5e['account'][_0xa2fe('0x3d')]){delete _0x5ddb5e[_0xa2fe('0x37')]['Applications'];}if(_0x5ddb5e[_0xa2fe('0x37')][_0xa2fe('0x39')]&&_0x5ddb5e[_0xa2fe('0x37')]['List'][_0xa2fe('0x42')][_0xa2fe('0x43')]){return _0x5ddb5e[_0xa2fe('0x37')][_0xa2fe('0x39')][_0xa2fe('0x42')][0x0];}var _0x411b54=_['defaults'](_0x467e61[_0xa2fe('0x23')],{'firstName':_0x467e61[_0xa2fe('0x23')]['from'],'ListId':_0x4a972c[_0xa2fe('0x44')]});_0x411b54[_0x467e61[_0xa2fe('0x23')][_0xa2fe('0x34')]]=_0x467e61['body']['from'];return db[_0xa2fe('0x3a')]['create'](_0x411b54,{'fields':_0xaba559,'raw':!![]});}})[_0xa2fe('0x11')](function(_0xcb487b){_0x5ddb5e['contact']=_0xcb487b;if(_0xcb487b){var _0x5b1c90={'ContactId':_0xcb487b['id'],'FaxAccountId':_0x467e61['account']['id'],'fax':_0xcb487b[_0xa2fe('0x24')]};return db['FaxInteraction']['find']({'where':{'ContactId':_0xcb487b['id'],'closed':![],'FaxAccountId':_0x467e61[_0xa2fe('0x37')]['id']}})['then'](function(_0x35f59f){if(_0x35f59f){return[_0x35f59f,![]];}return db[_0xa2fe('0x45')][_0xa2fe('0x46')](_0x5b1c90)[_0xa2fe('0x11')](function(_0x247aae){return[_0x247aae,!![]];});});}else{throw new Error(_0xa2fe('0x47'));}})[_0xa2fe('0x48')](function(_0x4e0c50,_0x293d01){var _0x4a1513=_0x4e0c50['get']({'plain':!![]});if(_0x293d01){if(_0x5ddb5e[_0xa2fe('0x37')]['autoclose']){_0x5ddb5e[_0xa2fe('0x3e')][_0xa2fe('0x49')]({'id':0x0,'priority':_0x5ddb5e[_0xa2fe('0x3e')]['length']+0x1,'app':'close','appdata':_0xa2fe('0x4a'),'interval':_0xa2fe('0x4b')});}_0x4a1513[_0xa2fe('0x4c')]=!![];}else{_0x4a1513[_0xa2fe('0x4c')]=![];}_0x5ddb5e[_0xa2fe('0x4d')]=_0x4a1513;return db['FaxMessage']['create']({'body':_0x467e61[_0xa2fe('0x23')]['body'],'FaxAccountId':_0x467e61[_0xa2fe('0x37')]['id'],'FaxInteractionId':_0x4e0c50['id'],'direction':'in','ContactId':_0x4e0c50['ContactId'],'AttachmentId':_0x467e61['body'][_0xa2fe('0x4e')]});})[_0xa2fe('0x11')](function(_0x103a8d){_0x5ddb5e[_0xa2fe('0x18')]=_0x103a8d;if(_0x5ddb5e['interaction']['UserId']){return db['User'][_0xa2fe('0x36')]({'attributes':['id',_0xa2fe('0x4f')],'where':{'id':_0x5ddb5e['interaction'][_0xa2fe('0x50')]}})['then'](function(_0x13db6b){if(_0x13db6b){_0x5ddb5e[_0xa2fe('0x3e')]['unshift']({'id':0x0,'priority':0x0,'app':_0xa2fe('0x51'),'appdata':_0x13db6b['name']+','+(_0x5ddb5e[_0xa2fe('0x37')][_0xa2fe('0x52')]||0xa),'interval':_0xa2fe('0x4b')});}return respondWithRpcPromise(_0xa2fe('0x53'),'startRouting',_0x5ddb5e);});}return respondWithRpcPromise('Start','startRouting',_0x5ddb5e);})['then'](function(_0x20ffc7){_0x2c8407(_0x20ffc7);})['catch'](function(_0x3f7508){_0xdbf09f(_0x1e584a[_0xa2fe('0x16')](0x1f4,_0x3f7508[_0xa2fe('0x18')]));});});};
\ No newline at end of file
index a54c586..c36bfa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52e7=['removeListener','register','faxAccount:','./faxAccount.events','save','remove','update','emit'];(function(_0x1a0799,_0x480b86){var _0x42f51=function(_0x521b00){while(--_0x521b00){_0x1a0799['push'](_0x1a0799['shift']());}};_0x42f51(++_0x480b86);}(_0x52e7,0x113));var _0x752e=function(_0x58afd5,_0x534a48){_0x58afd5=_0x58afd5-0x0;var _0x3e503b=_0x52e7[_0x58afd5];return _0x3e503b;};'use strict';var FaxAccountEvents=require(_0x752e('0x0'));var events=[_0x752e('0x1'),_0x752e('0x2'),_0x752e('0x3')];function createListener(_0x5dda2f,_0x3ce0be){return function(_0x4bf9bd){_0x3ce0be[_0x752e('0x4')](_0x5dda2f,_0x4bf9bd);};}function removeListener(_0x5b6fa4,_0x422b2e){return function(){FaxAccountEvents[_0x752e('0x5')](_0x5b6fa4,_0x422b2e);};}exports[_0x752e('0x6')]=function(_0x5645db){for(var _0x252019=0x0,_0x532b56=events['length'];_0x252019<_0x532b56;_0x252019++){var _0x4388ad=events[_0x252019];var _0x25562d=createListener(_0x752e('0x7')+_0x4388ad,_0x5645db);FaxAccountEvents['on'](_0x4388ad,_0x25562d);}};
\ No newline at end of file
+var _0x695a=['faxAccount:','./faxAccount.events','save','remove','update','emit','removeListener','length'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x695a,0x1c9));var _0xa695=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x695a[_0x2641f9];return _0x585741;};'use strict';var FaxAccountEvents=require(_0xa695('0x0'));var events=[_0xa695('0x1'),_0xa695('0x2'),_0xa695('0x3')];function createListener(_0x18ce9d,_0x2cd2ad){return function(_0x3bab52){_0x2cd2ad[_0xa695('0x4')](_0x18ce9d,_0x3bab52);};}function removeListener(_0x36cc55,_0x50ad45){return function(){FaxAccountEvents[_0xa695('0x5')](_0x36cc55,_0x50ad45);};}exports['register']=function(_0x446bf7){for(var _0x1fa332=0x0,_0xf7a249=events[_0xa695('0x6')];_0x1fa332<_0xf7a249;_0x1fa332++){var _0x5e64e4=events[_0x1fa332];var _0x223f91=createListener(_0xa695('0x7')+_0x5e64e4,_0x446bf7);FaxAccountEvents['on'](_0x5e64e4,_0x223f91);}};
\ No newline at end of file
index f682388..c422a11 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(_0x2683d4,_0x1148c2){var _0x493266=function(_0x566c4a){while(--_0x566c4a){_0x2683d4['push'](_0x2683d4['shift']());}};_0x493266(++_0x1148c2);}(_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['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(_0x235f01,_0x7c2ed0){var _0x6e3680=function(_0x42bdfa){while(--_0x42bdfa){_0x235f01['push'](_0x235f01['shift']());}};_0x6e3680(++_0x7c2ed0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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 58cf2cf..c67849f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4269=['STRING','noop','TEXT','*,*,*,*','exports','INTEGER'];(function(_0x538673,_0x2bd911){var _0x97139f=function(_0x4556b6){while(--_0x4556b6){_0x538673['push'](_0x538673['shift']());}};_0x97139f(++_0x2bd911);}(_0x4269,0x172));var _0x9426=function(_0x2a8b21,_0x5cd96b){_0x2a8b21=_0x2a8b21-0x0;var _0x114314=_0x4269[_0x2a8b21];return _0x114314;};'use strict';var Sequelize=require('sequelize');module[_0x9426('0x0')]={'priority':{'type':Sequelize[_0x9426('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x9426('0x2')],'allowNull':![],'defaultValue':_0x9426('0x3')},'appdata':{'type':Sequelize[_0x9426('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x9426('0x2')],'defaultValue':_0x9426('0x5')}};
\ No newline at end of file
+var _0x3cf7=['exports','INTEGER','STRING','noop','*,*,*,*'];(function(_0x35034a,_0x4f1b02){var _0x53b75d=function(_0x44f81c){while(--_0x44f81c){_0x35034a['push'](_0x35034a['shift']());}};_0x53b75d(++_0x4f1b02);}(_0x3cf7,0xc8));var _0x73cf=function(_0xf1af27,_0x598bb1){_0xf1af27=_0xf1af27-0x0;var _0x46b274=_0x3cf7[_0xf1af27];return _0x46b274;};'use strict';var Sequelize=require('sequelize');module[_0x73cf('0x0')]={'priority':{'type':Sequelize[_0x73cf('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x73cf('0x2')],'allowNull':![],'defaultValue':_0x73cf('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x73cf('0x2')]},'interval':{'type':Sequelize[_0x73cf('0x2')],'defaultValue':_0x73cf('0x4')}};
\ No newline at end of file
index d1a29b6..72e65aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x406b=['../../config/utils','../../config/environment','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','name','send','index','map','FaxApplication','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x3d5780,_0x24cd34){var _0x3066ab=function(_0x4537f1){while(--_0x4537f1){_0x3d5780['push'](_0x3d5780['shift']());}};_0x3066ab(++_0x24cd34);}(_0x406b,0x1e1));var _0xb406=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x406b[_0x47b58b];return _0x46bebe;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb406('0x0'));var jsonpatch=require(_0xb406('0x1'));var rp=require(_0xb406('0x2'));var moment=require(_0xb406('0x3'));var BPromise=require(_0xb406('0x4'));var Mustache=require(_0xb406('0x5'));var util=require(_0xb406('0x6'));var path=require(_0xb406('0x7'));var sox=require(_0xb406('0x8'));var csv=require(_0xb406('0x9'));var ejs=require(_0xb406('0xa'));var fs=require('fs');var fs_extra=require(_0xb406('0xb'));var _=require(_0xb406('0xc'));var squel=require(_0xb406('0xd'));var crypto=require('crypto');var jsforce=require(_0xb406('0xe'));var deskjs=require(_0xb406('0xf'));var toCsv=require(_0xb406('0x9'));var querystring=require(_0xb406('0x10'));var Papa=require(_0xb406('0x11'));var Redis=require(_0xb406('0x12'));var authService=require(_0xb406('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xb406('0x14'));var hardwareService=require(_0xb406('0x15'));var logger=require('../../config/logger')(_0xb406('0x16'));var utils=require(_0xb406('0x17'));var config=require(_0xb406('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45f045,_0x9912de){_0x9912de=_0x9912de||0xcc;return function(_0x58e316){if(_0x58e316){return _0x45f045['sendStatus'](_0x9912de);}return _0x45f045[_0xb406('0x19')](_0x9912de)[_0xb406('0x1a')]();};}function respondWithResult(_0x5af7dc,_0x3c59b6){_0x3c59b6=_0x3c59b6||0xc8;return function(_0x3670be){if(_0x3670be){return _0x5af7dc['status'](_0x3c59b6)['json'](_0x3670be);}};}function respondWithFilteredResult(_0x19d0c5,_0x23ef60){return function(_0x1f068b){if(_0x1f068b){var _0x1bb048=typeof _0x23ef60[_0xb406('0x1b')]===_0xb406('0x1c')&&typeof _0x23ef60['limit']===_0xb406('0x1c');var _0x177967=_0x1f068b[_0xb406('0x1d')];var _0x24625f=_0x1bb048?0x0:_0x23ef60[_0xb406('0x1b')];var _0x21c0c0=_0x1bb048?_0x1f068b['count']:_0x23ef60[_0xb406('0x1b')]+_0x23ef60[_0xb406('0x1e')];var _0x819bbb;if(_0x21c0c0>=_0x177967){_0x21c0c0=_0x177967;_0x819bbb=0xc8;}else{_0x819bbb=0xce;}_0x19d0c5[_0xb406('0x19')](_0x819bbb);return _0x19d0c5[_0xb406('0x1f')](_0xb406('0x20'),_0x24625f+'-'+_0x21c0c0+'/'+_0x177967)[_0xb406('0x21')](_0x1f068b);}return null;};}function patchUpdates(_0x282541){return function(_0x228355){try{jsonpatch[_0xb406('0x22')](_0x228355,_0x282541,!![]);}catch(_0x38efef){return BPromise[_0xb406('0x23')](_0x38efef);}return _0x228355[_0xb406('0x24')]();};}function saveUpdates(_0x3b70b8,_0x5c8d50){return function(_0x3931ec){if(_0x3931ec){return _0x3931ec[_0xb406('0x25')](_0x3b70b8)[_0xb406('0x26')](function(_0x1c83d1){return _0x1c83d1;});}return null;};}function removeEntity(_0x3cff78,_0x348911){return function(_0x5bcf84){if(_0x5bcf84){return _0x5bcf84[_0xb406('0x27')]()[_0xb406('0x26')](function(){_0x3cff78[_0xb406('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ba02b,_0x485e88){return function(_0x58dd91){if(!_0x58dd91){_0x2ba02b[_0xb406('0x28')](0x194);}return _0x58dd91;};}function handleError(_0x2a6f41,_0x29736c){_0x29736c=_0x29736c||0x1f4;return function(_0x20b754){logger['error'](_0x20b754['stack']);if(_0x20b754[_0xb406('0x29')]){delete _0x20b754[_0xb406('0x29')];}_0x2a6f41[_0xb406('0x19')](_0x29736c)[_0xb406('0x2a')](_0x20b754);};}exports[_0xb406('0x2b')]=function(_0x5230c4,_0x7ac2d7){var _0x317734={},_0x129d1f={},_0x4a0461={'count':0x0,'rows':[]};var _0x4628ee=_[_0xb406('0x2c')](db[_0xb406('0x2d')]['rawAttributes'],function(_0x4e09d8){return{'name':_0x4e09d8[_0xb406('0x2e')],'type':_0x4e09d8['type'][_0xb406('0x2f')]};});_0x129d1f[_0xb406('0x30')]=_[_0xb406('0x2c')](_0x4628ee,_0xb406('0x29'));_0x129d1f[_0xb406('0x31')]=_[_0xb406('0x32')](_0x5230c4[_0xb406('0x31')]);_0x129d1f[_0xb406('0x33')]=_[_0xb406('0x34')](_0x129d1f[_0xb406('0x30')],_0x129d1f[_0xb406('0x31')]);_0x317734[_0xb406('0x35')]=_[_0xb406('0x34')](_0x129d1f[_0xb406('0x30')],qs[_0xb406('0x36')](_0x5230c4['query']['fields']));_0x317734[_0xb406('0x35')]=_0x317734[_0xb406('0x35')][_0xb406('0x37')]?_0x317734[_0xb406('0x35')]:_0x129d1f[_0xb406('0x30')];if(!_0x5230c4[_0xb406('0x31')]['hasOwnProperty'](_0xb406('0x38'))){_0x317734[_0xb406('0x1e')]=qs[_0xb406('0x1e')](_0x5230c4['query'][_0xb406('0x1e')]);_0x317734[_0xb406('0x1b')]=qs[_0xb406('0x1b')](_0x5230c4[_0xb406('0x31')][_0xb406('0x1b')]);}_0x317734['order']=qs[_0xb406('0x39')](_0x5230c4[_0xb406('0x31')][_0xb406('0x39')]);_0x317734[_0xb406('0x3a')]=qs['filters'](_['pick'](_0x5230c4[_0xb406('0x31')],_0x129d1f[_0xb406('0x33')]),_0x4628ee);if(_0x5230c4[_0xb406('0x31')][_0xb406('0x3b')]){_0x317734['where']=_[_0xb406('0x3c')](_0x317734['where'],{'$or':_['map'](_0x4628ee,function(_0x31dd74){if(_0x31dd74['type']!==_0xb406('0x3d')){var _0x5c7bb5={};_0x5c7bb5[_0x31dd74[_0xb406('0x29')]]={'$like':'%'+_0x5230c4[_0xb406('0x31')]['filter']+'%'};return _0x5c7bb5;}})});}_0x317734=_['merge']({},_0x317734,_0x5230c4[_0xb406('0x3e')]);var _0x1124e2={'where':_0x317734['where']};return db['FaxApplication']['count'](_0x1124e2)[_0xb406('0x26')](function(_0x4fa7f8){_0x4a0461[_0xb406('0x1d')]=_0x4fa7f8;if(_0x5230c4['query'][_0xb406('0x3f')]){_0x317734[_0xb406('0x40')]=[{'all':!![]}];}return db['FaxApplication'][_0xb406('0x41')](_0x317734);})['then'](function(_0x29cfa9){_0x4a0461[_0xb406('0x42')]=_0x29cfa9;return _0x4a0461;})['then'](respondWithFilteredResult(_0x7ac2d7,_0x317734))[_0xb406('0x43')](handleError(_0x7ac2d7,null));};exports[_0xb406('0x44')]=function(_0x5e0a1c,_0xeadacf){var _0x1b9171={'raw':!![],'where':{'id':_0x5e0a1c['params']['id']}},_0x1eb2eb={};_0x1eb2eb['model']=_['keys'](db[_0xb406('0x2d')]['rawAttributes']);_0x1eb2eb['query']=_[_0xb406('0x32')](_0x5e0a1c[_0xb406('0x31')]);_0x1eb2eb[_0xb406('0x33')]=_[_0xb406('0x34')](_0x1eb2eb['model'],_0x1eb2eb['query']);_0x1b9171[_0xb406('0x35')]=_[_0xb406('0x34')](_0x1eb2eb[_0xb406('0x30')],qs[_0xb406('0x36')](_0x5e0a1c[_0xb406('0x31')][_0xb406('0x36')]));_0x1b9171[_0xb406('0x35')]=_0x1b9171[_0xb406('0x35')]['length']?_0x1b9171[_0xb406('0x35')]:_0x1eb2eb[_0xb406('0x30')];if(_0x5e0a1c['query'][_0xb406('0x3f')]){_0x1b9171['include']=[{'all':!![]}];}_0x1b9171=_[_0xb406('0x3c')]({},_0x1b9171,_0x5e0a1c['options']);return db[_0xb406('0x2d')][_0xb406('0x45')](_0x1b9171)[_0xb406('0x26')](handleEntityNotFound(_0xeadacf,null))[_0xb406('0x26')](respondWithResult(_0xeadacf,null))['catch'](handleError(_0xeadacf,null));};exports[_0xb406('0x46')]=function(_0x1be4c8,_0x3ca0dc){return db[_0xb406('0x2d')]['create'](_0x1be4c8[_0xb406('0x47')],{})[_0xb406('0x26')](respondWithResult(_0x3ca0dc,0xc9))[_0xb406('0x43')](handleError(_0x3ca0dc,null));};exports[_0xb406('0x25')]=function(_0x74b92,_0x4aa89a){if(_0x74b92[_0xb406('0x47')]['id']){delete _0x74b92[_0xb406('0x47')]['id'];}return db[_0xb406('0x2d')]['find']({'where':{'id':_0x74b92['params']['id']}})[_0xb406('0x26')](handleEntityNotFound(_0x4aa89a,null))[_0xb406('0x26')](saveUpdates(_0x74b92[_0xb406('0x47')],null))['then'](respondWithResult(_0x4aa89a,null))[_0xb406('0x43')](handleError(_0x4aa89a,null));};exports[_0xb406('0x27')]=function(_0x2a9e43,_0x4a8d3c){return db[_0xb406('0x2d')][_0xb406('0x45')]({'where':{'id':_0x2a9e43['params']['id']}})[_0xb406('0x26')](handleEntityNotFound(_0x4a8d3c,null))[_0xb406('0x26')](removeEntity(_0x4a8d3c,null))['catch'](handleError(_0x4a8d3c,null));};
\ No newline at end of file
+var _0x9575=['sort','where','pick','filter','merge','VIRTUAL','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','Content-Range','json','apply','save','then','destroy','error','stack','name','index','map','FaxApplication','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x3c26e1,_0x5bcbf1){var _0x13a76e=function(_0x4e6938){while(--_0x4e6938){_0x3c26e1['push'](_0x3c26e1['shift']());}};_0x13a76e(++_0x5bcbf1);}(_0x9575,0x1d2));var _0x5957=function(_0x2b6357,_0x1d1ce2){_0x2b6357=_0x2b6357-0x0;var _0x5634bc=_0x9575[_0x2b6357];return _0x5634bc;};'use strict';var emlformat=require(_0x5957('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5957('0x1'));var jsonpatch=require(_0x5957('0x2'));var rp=require(_0x5957('0x3'));var moment=require(_0x5957('0x4'));var BPromise=require(_0x5957('0x5'));var Mustache=require(_0x5957('0x6'));var util=require(_0x5957('0x7'));var path=require(_0x5957('0x8'));var sox=require(_0x5957('0x9'));var csv=require(_0x5957('0xa'));var ejs=require(_0x5957('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x5957('0xc'));var crypto=require(_0x5957('0xd'));var jsforce=require(_0x5957('0xe'));var deskjs=require(_0x5957('0xf'));var toCsv=require(_0x5957('0xa'));var querystring=require(_0x5957('0x10'));var Papa=require(_0x5957('0x11'));var Redis=require(_0x5957('0x12'));var authService=require(_0x5957('0x13'));var qs=require(_0x5957('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5957('0x15'));var logger=require(_0x5957('0x16'))(_0x5957('0x17'));var utils=require(_0x5957('0x18'));var config=require(_0x5957('0x19'));var licenseUtil=require(_0x5957('0x1a'));var db=require(_0x5957('0x1b'))['db'];function respondWithStatusCode(_0x5cf988,_0x4429a0){_0x4429a0=_0x4429a0||0xcc;return function(_0x2c7e71){if(_0x2c7e71){return _0x5cf988[_0x5957('0x1c')](_0x4429a0);}return _0x5cf988[_0x5957('0x1d')](_0x4429a0)['end']();};}function respondWithResult(_0x25035b,_0x4eaaf4){_0x4eaaf4=_0x4eaaf4||0xc8;return function(_0x4020c6){if(_0x4020c6){return _0x25035b[_0x5957('0x1d')](_0x4eaaf4)['json'](_0x4020c6);}};}function respondWithFilteredResult(_0x9c82c3,_0x4bd575){return function(_0x59018f){if(_0x59018f){var _0x3880c8=typeof _0x4bd575[_0x5957('0x1e')]==='undefined'&&typeof _0x4bd575[_0x5957('0x1f')]===_0x5957('0x20');var _0x233c2b=_0x59018f[_0x5957('0x21')];var _0x300514=_0x3880c8?0x0:_0x4bd575[_0x5957('0x1e')];var _0x3739ff=_0x3880c8?_0x59018f['count']:_0x4bd575[_0x5957('0x1e')]+_0x4bd575[_0x5957('0x1f')];var _0x534eba;if(_0x3739ff>=_0x233c2b){_0x3739ff=_0x233c2b;_0x534eba=0xc8;}else{_0x534eba=0xce;}_0x9c82c3['status'](_0x534eba);return _0x9c82c3['set'](_0x5957('0x22'),_0x300514+'-'+_0x3739ff+'/'+_0x233c2b)[_0x5957('0x23')](_0x59018f);}return null;};}function patchUpdates(_0xa60cf9){return function(_0x5508ff){try{jsonpatch[_0x5957('0x24')](_0x5508ff,_0xa60cf9,!![]);}catch(_0x105354){return BPromise['reject'](_0x105354);}return _0x5508ff[_0x5957('0x25')]();};}function saveUpdates(_0x31c29a,_0xb4ff5a){return function(_0x37db8d){if(_0x37db8d){return _0x37db8d['update'](_0x31c29a)[_0x5957('0x26')](function(_0x2bb227){return _0x2bb227;});}return null;};}function removeEntity(_0x1eda07,_0x321b9a){return function(_0x5139cd){if(_0x5139cd){return _0x5139cd[_0x5957('0x27')]()[_0x5957('0x26')](function(){_0x1eda07[_0x5957('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59b2b6,_0x40f45a){return function(_0x3a6d92){if(!_0x3a6d92){_0x59b2b6[_0x5957('0x1c')](0x194);}return _0x3a6d92;};}function handleError(_0x430a96,_0x29d765){_0x29d765=_0x29d765||0x1f4;return function(_0x2961d1){logger[_0x5957('0x28')](_0x2961d1[_0x5957('0x29')]);if(_0x2961d1[_0x5957('0x2a')]){delete _0x2961d1[_0x5957('0x2a')];}_0x430a96['status'](_0x29d765)['send'](_0x2961d1);};}exports[_0x5957('0x2b')]=function(_0x7452d4,_0x49163c){var _0x379603={},_0x5101c2={},_0x575edf={'count':0x0,'rows':[]};var _0x493877=_[_0x5957('0x2c')](db[_0x5957('0x2d')]['rawAttributes'],function(_0x52448b){return{'name':_0x52448b[_0x5957('0x2e')],'type':_0x52448b[_0x5957('0x2f')][_0x5957('0x30')]};});_0x5101c2[_0x5957('0x31')]=_['map'](_0x493877,_0x5957('0x2a'));_0x5101c2['query']=_[_0x5957('0x32')](_0x7452d4[_0x5957('0x33')]);_0x5101c2[_0x5957('0x34')]=_[_0x5957('0x35')](_0x5101c2[_0x5957('0x31')],_0x5101c2[_0x5957('0x33')]);_0x379603[_0x5957('0x36')]=_[_0x5957('0x35')](_0x5101c2[_0x5957('0x31')],qs[_0x5957('0x37')](_0x7452d4[_0x5957('0x33')]['fields']));_0x379603['attributes']=_0x379603[_0x5957('0x36')]['length']?_0x379603[_0x5957('0x36')]:_0x5101c2[_0x5957('0x31')];if(!_0x7452d4[_0x5957('0x33')][_0x5957('0x38')](_0x5957('0x39'))){_0x379603[_0x5957('0x1f')]=qs[_0x5957('0x1f')](_0x7452d4[_0x5957('0x33')]['limit']);_0x379603[_0x5957('0x1e')]=qs[_0x5957('0x1e')](_0x7452d4[_0x5957('0x33')][_0x5957('0x1e')]);}_0x379603[_0x5957('0x3a')]=qs[_0x5957('0x3b')](_0x7452d4[_0x5957('0x33')][_0x5957('0x3b')]);_0x379603[_0x5957('0x3c')]=qs[_0x5957('0x34')](_[_0x5957('0x3d')](_0x7452d4[_0x5957('0x33')],_0x5101c2[_0x5957('0x34')]),_0x493877);if(_0x7452d4['query'][_0x5957('0x3e')]){_0x379603[_0x5957('0x3c')]=_[_0x5957('0x3f')](_0x379603[_0x5957('0x3c')],{'$or':_['map'](_0x493877,function(_0x2b65ba){if(_0x2b65ba[_0x5957('0x2f')]!==_0x5957('0x40')){var _0x52ebef={};_0x52ebef[_0x2b65ba['name']]={'$like':'%'+_0x7452d4['query']['filter']+'%'};return _0x52ebef;}})});}_0x379603=_[_0x5957('0x3f')]({},_0x379603,_0x7452d4['options']);var _0x3a5274={'where':_0x379603['where']};return db[_0x5957('0x2d')][_0x5957('0x21')](_0x3a5274)['then'](function(_0x6187e8){_0x575edf[_0x5957('0x21')]=_0x6187e8;if(_0x7452d4['query']['includeAll']){_0x379603['include']=[{'all':!![]}];}return db[_0x5957('0x2d')][_0x5957('0x41')](_0x379603);})[_0x5957('0x26')](function(_0x49c2a9){_0x575edf[_0x5957('0x42')]=_0x49c2a9;return _0x575edf;})['then'](respondWithFilteredResult(_0x49163c,_0x379603))[_0x5957('0x43')](handleError(_0x49163c,null));};exports[_0x5957('0x44')]=function(_0x341d69,_0x3f39db){var _0x1b67c5={'raw':!![],'where':{'id':_0x341d69[_0x5957('0x45')]['id']}},_0x298359={};_0x298359[_0x5957('0x31')]=_[_0x5957('0x32')](db[_0x5957('0x2d')][_0x5957('0x46')]);_0x298359[_0x5957('0x33')]=_[_0x5957('0x32')](_0x341d69['query']);_0x298359['filters']=_[_0x5957('0x35')](_0x298359['model'],_0x298359[_0x5957('0x33')]);_0x1b67c5[_0x5957('0x36')]=_[_0x5957('0x35')](_0x298359[_0x5957('0x31')],qs[_0x5957('0x37')](_0x341d69[_0x5957('0x33')][_0x5957('0x37')]));_0x1b67c5['attributes']=_0x1b67c5['attributes'][_0x5957('0x47')]?_0x1b67c5['attributes']:_0x298359[_0x5957('0x31')];if(_0x341d69[_0x5957('0x33')]['includeAll']){_0x1b67c5['include']=[{'all':!![]}];}_0x1b67c5=_[_0x5957('0x3f')]({},_0x1b67c5,_0x341d69['options']);return db['FaxApplication'][_0x5957('0x48')](_0x1b67c5)[_0x5957('0x26')](handleEntityNotFound(_0x3f39db,null))[_0x5957('0x26')](respondWithResult(_0x3f39db,null))[_0x5957('0x43')](handleError(_0x3f39db,null));};exports[_0x5957('0x49')]=function(_0x5b666a,_0xc2fa0a){return db[_0x5957('0x2d')][_0x5957('0x49')](_0x5b666a['body'],{})[_0x5957('0x26')](respondWithResult(_0xc2fa0a,0xc9))[_0x5957('0x43')](handleError(_0xc2fa0a,null));};exports['update']=function(_0x1231ac,_0x5851d5){if(_0x1231ac[_0x5957('0x4a')]['id']){delete _0x1231ac['body']['id'];}return db['FaxApplication']['find']({'where':{'id':_0x1231ac[_0x5957('0x45')]['id']}})[_0x5957('0x26')](handleEntityNotFound(_0x5851d5,null))['then'](saveUpdates(_0x1231ac[_0x5957('0x4a')],null))[_0x5957('0x26')](respondWithResult(_0x5851d5,null))['catch'](handleError(_0x5851d5,null));};exports['destroy']=function(_0x99e430,_0x3029c5){return db['FaxApplication']['find']({'where':{'id':_0x99e430[_0x5957('0x45')]['id']}})[_0x5957('0x26')](handleEntityNotFound(_0x3029c5,null))[_0x5957('0x26')](removeEntity(_0x3029c5,null))[_0x5957('0x43')](handleError(_0x3029c5,null));};
\ No newline at end of file
index 7be22df..8e9ba3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbd4=['utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','exports','FaxApplication','fax_applications'];(function(_0x4d1f74,_0x57def8){var _0x3679dd=function(_0x171b5a){while(--_0x171b5a){_0x4d1f74['push'](_0x4d1f74['shift']());}};_0x3679dd(++_0x57def8);}(_0xcbd4,0xb8));var _0x4cbd=function(_0x1e5360,_0x31f7a2){_0x1e5360=_0x1e5360-0x0;var _0xf6a9a9=_0xcbd4[_0x1e5360];return _0xf6a9a9;};'use strict';var _=require(_0x4cbd('0x0'));var util=require(_0x4cbd('0x1'));var logger=require(_0x4cbd('0x2'))(_0x4cbd('0x3'));var moment=require('moment');var BPromise=require(_0x4cbd('0x4'));var rp=require(_0x4cbd('0x5'));var fs=require('fs');var path=require(_0x4cbd('0x6'));var rimraf=require('rimraf');var config=require(_0x4cbd('0x7'));var attributes=require('./faxApplication.attributes');module[_0x4cbd('0x8')]=function(_0x398f80,_0x4a2355){return _0x398f80['define'](_0x4cbd('0x9'),attributes,{'tableName':_0x4cbd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4cbd('0xb'),'collate':_0x4cbd('0xc')});};
\ No newline at end of file
+var _0xb4f6=['exports','define','FaxApplication','fax_applications','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','../../config/environment'];(function(_0x3ef21b,_0x1d20bc){var _0x3d02f5=function(_0x2a48c){while(--_0x2a48c){_0x3ef21b['push'](_0x3ef21b['shift']());}};_0x3d02f5(++_0x1d20bc);}(_0xb4f6,0x19d));var _0x6b4f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb4f6[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6b4f('0x0'));var util=require(_0x6b4f('0x1'));var logger=require(_0x6b4f('0x2'))(_0x6b4f('0x3'));var moment=require(_0x6b4f('0x4'));var BPromise=require(_0x6b4f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6b4f('0x6'));var attributes=require('./faxApplication.attributes');module[_0x6b4f('0x7')]=function(_0x186747,_0x59e89d){return _0x186747[_0x6b4f('0x8')](_0x6b4f('0x9'),attributes,{'tableName':_0x6b4f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6b4f('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 38003cf..50375a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6b3=['FaxApplication','update','options','raw','where','attributes','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','info','FaxApplication,\x20%s,\x20%s','debug','FaxApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','UpdateFaxApplication'];(function(_0x3ae2b2,_0x2d936f){var _0x1dbf00=function(_0x4072e9){while(--_0x4072e9){_0x3ae2b2['push'](_0x3ae2b2['shift']());}};_0x1dbf00(++_0x2d936f);}(_0xf6b3,0x97));var _0x3f6b=function(_0x1f8eb8,_0xfc4345){_0x1f8eb8=_0x1f8eb8-0x0;var _0x37ca05=_0xf6b3[_0x1f8eb8];return _0x37ca05;};'use strict';var _=require(_0x3f6b('0x0'));var util=require('util');var moment=require(_0x3f6b('0x1'));var BPromise=require(_0x3f6b('0x2'));var rs=require(_0x3f6b('0x3'));var fs=require('fs');var Redis=require(_0x3f6b('0x4'));var db=require(_0x3f6b('0x5'))['db'];var utils=require(_0x3f6b('0x6'));var logger=require('../../config/logger')(_0x3f6b('0x7'));var config=require(_0x3f6b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3f6b('0x9')][_0x3f6b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x55917c,_0x3bb158,_0x34a758){return new BPromise(function(_0x3499cf,_0x18a383){return client['request'](_0x55917c,_0x34a758)[_0x3f6b('0xb')](function(_0x23b00b){logger[_0x3f6b('0xc')](_0x3f6b('0xd'),_0x3bb158,'request\x20sent');logger[_0x3f6b('0xe')](_0x3f6b('0xf'),_0x3bb158,_0x3f6b('0x10'),JSON[_0x3f6b('0x11')](_0x23b00b));if(_0x23b00b[_0x3f6b('0x12')]){if(_0x23b00b[_0x3f6b('0x12')][_0x3f6b('0x13')]===0x1f4){logger[_0x3f6b('0x12')](_0x3f6b('0xd'),_0x3bb158,_0x23b00b[_0x3f6b('0x12')][_0x3f6b('0x14')]);return _0x18a383(_0x23b00b[_0x3f6b('0x12')]['message']);}logger['error'](_0x3f6b('0xd'),_0x3bb158,_0x23b00b[_0x3f6b('0x12')]['message']);return _0x3499cf(_0x23b00b[_0x3f6b('0x12')][_0x3f6b('0x14')]);}else{logger['info'](_0x3f6b('0xd'),_0x3bb158,_0x3f6b('0x10'));_0x3499cf(_0x23b00b['result'][_0x3f6b('0x14')]);}})[_0x3f6b('0x15')](function(_0x1fc318){logger[_0x3f6b('0x12')](_0x3f6b('0xd'),_0x3bb158,_0x1fc318);_0x18a383(_0x1fc318);});});}exports[_0x3f6b('0x16')]=function(_0x300999){var _0x59b60d=this;return new Promise(function(_0x1796cc,_0x471ef3){return db[_0x3f6b('0x17')][_0x3f6b('0x18')](_0x300999['body'],{'raw':_0x300999[_0x3f6b('0x19')]?_0x300999[_0x3f6b('0x19')][_0x3f6b('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x300999['options']?_0x300999[_0x3f6b('0x19')][_0x3f6b('0x1b')]||null:null,'attributes':_0x300999[_0x3f6b('0x19')]?_0x300999['options'][_0x3f6b('0x1c')]||null:null,'limit':_0x300999[_0x3f6b('0x19')]?_0x300999[_0x3f6b('0x19')]['limit']||null:null})[_0x3f6b('0xb')](function(_0x26de22){logger[_0x3f6b('0xc')](_0x3f6b('0x16'),_0x300999);logger[_0x3f6b('0xe')](_0x3f6b('0x16'),_0x300999,JSON[_0x3f6b('0x11')](_0x26de22));_0x1796cc(_0x26de22);})['catch'](function(_0x441b16){logger[_0x3f6b('0x12')](_0x3f6b('0x16'),_0x441b16['message'],_0x300999);_0x471ef3(_0x59b60d[_0x3f6b('0x12')](0x1f4,_0x441b16[_0x3f6b('0x14')]));});});};
\ No newline at end of file
+var _0x9048=['FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','update','options','raw','where','attributes','limit','UpdateFaxApplication','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x35027c,_0x4af623){var _0x4bba7d=function(_0x1d84f9){while(--_0x1d84f9){_0x35027c['push'](_0x35027c['shift']());}};_0x4bba7d(++_0x4af623);}(_0x9048,0x1b2));var _0x8904=function(_0x3cd6fd,_0x18a329){_0x3cd6fd=_0x3cd6fd-0x0;var _0x49b8cc=_0x9048[_0x3cd6fd];return _0x49b8cc;};'use strict';var _=require(_0x8904('0x0'));var util=require(_0x8904('0x1'));var moment=require(_0x8904('0x2'));var BPromise=require('bluebird');var rs=require(_0x8904('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8904('0x4'))['db'];var utils=require(_0x8904('0x5'));var logger=require(_0x8904('0x6'))(_0x8904('0x7'));var config=require(_0x8904('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8904('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x32bdf4,_0x374eeb,_0x2234ea){return new BPromise(function(_0x28d870,_0x52d185){return client[_0x8904('0xa')](_0x32bdf4,_0x2234ea)[_0x8904('0xb')](function(_0x51a421){logger[_0x8904('0xc')](_0x8904('0xd'),_0x374eeb,_0x8904('0xe'));logger[_0x8904('0xf')](_0x8904('0x10'),_0x374eeb,_0x8904('0xe'),JSON[_0x8904('0x11')](_0x51a421));if(_0x51a421[_0x8904('0x12')]){if(_0x51a421['error'][_0x8904('0x13')]===0x1f4){logger[_0x8904('0x12')](_0x8904('0xd'),_0x374eeb,_0x51a421[_0x8904('0x12')][_0x8904('0x14')]);return _0x52d185(_0x51a421[_0x8904('0x12')][_0x8904('0x14')]);}logger[_0x8904('0x12')](_0x8904('0xd'),_0x374eeb,_0x51a421[_0x8904('0x12')]['message']);return _0x28d870(_0x51a421[_0x8904('0x12')][_0x8904('0x14')]);}else{logger[_0x8904('0xc')](_0x8904('0xd'),_0x374eeb,_0x8904('0xe'));_0x28d870(_0x51a421[_0x8904('0x15')][_0x8904('0x14')]);}})[_0x8904('0x16')](function(_0x5aedee){logger['error'](_0x8904('0xd'),_0x374eeb,_0x5aedee);_0x52d185(_0x5aedee);});});}exports['UpdateFaxApplication']=function(_0x496363){var _0x360a79=this;return new Promise(function(_0x406de1,_0x3e31b1){return db['FaxApplication'][_0x8904('0x17')](_0x496363['body'],{'raw':_0x496363[_0x8904('0x18')]?_0x496363[_0x8904('0x18')][_0x8904('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x496363[_0x8904('0x18')]?_0x496363[_0x8904('0x18')][_0x8904('0x1a')]||null:null,'attributes':_0x496363[_0x8904('0x18')]?_0x496363[_0x8904('0x18')][_0x8904('0x1b')]||null:null,'limit':_0x496363[_0x8904('0x18')]?_0x496363['options'][_0x8904('0x1c')]||null:null})[_0x8904('0xb')](function(_0x1f1fe2){logger[_0x8904('0xc')](_0x8904('0x1d'),_0x496363);logger[_0x8904('0xf')](_0x8904('0x1d'),_0x496363,JSON[_0x8904('0x11')](_0x1f1fe2));_0x406de1(_0x1f1fe2);})['catch'](function(_0x36b5f8){logger[_0x8904('0x12')](_0x8904('0x1d'),_0x36b5f8[_0x8904('0x14')],_0x496363);_0x3e31b1(_0x360a79[_0x8904('0x12')](0x1f4,_0x36b5f8[_0x8904('0x14')]));});});};
\ No newline at end of file
index 74dc3b3..06504bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','isAuthenticated','index','/:id'];(function(_0x4a3acd,_0x4bf641){var _0x3efdaa=function(_0x32842d){while(--_0x32842d){_0x4a3acd['push'](_0x4a3acd['shift']());}};_0x3efdaa(++_0x4bf641);}(_0x4fc2,0x111));var _0x24fc=function(_0x2eb898,_0x43c47b){_0x2eb898=_0x2eb898-0x0;var _0x58974f=_0x4fc2[_0x2eb898];return _0x58974f;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xe')]);router['put'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xf')]);router[_0x24fc('0x10')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x11')]);module[_0x24fc('0x12')]=router;
\ No newline at end of file
+var _0xe511=['/:id','isAuthenticated','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','index','show','post','put'];(function(_0x50d67d,_0x32f5f8){var _0x5d81e9=function(_0x3657d3){while(--_0x3657d3){_0x50d67d['push'](_0x50d67d['shift']());}};_0x5d81e9(++_0x32f5f8);}(_0xe511,0x16f));var _0x1e51=function(_0x229607,_0x5653a6){_0x229607=_0x229607-0x0;var _0x5ed9a6=_0xe511[_0x229607];return _0x5ed9a6;};'use strict';var multer=require(_0x1e51('0x0'));var util=require(_0x1e51('0x1'));var path=require('path');var timeout=require(_0x1e51('0x2'));var express=require('express');var router=express[_0x1e51('0x3')]();var fs_extra=require(_0x1e51('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1e51('0x5'));var config=require(_0x1e51('0x6'));var controller=require(_0x1e51('0x7'));router[_0x1e51('0x8')]('/',auth['isAuthenticated'](),controller[_0x1e51('0x9')]);router[_0x1e51('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x1e51('0xa')]);router[_0x1e51('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1e51('0xc')](_0x1e51('0xd'),auth[_0x1e51('0xe')](),controller[_0x1e51('0xf')]);router[_0x1e51('0x10')](_0x1e51('0xd'),auth['isAuthenticated'](),controller[_0x1e51('0x11')]);module[_0x1e51('0x12')]=router;
\ No newline at end of file
index b797504..5bf2d0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaaf=['BOOLEAN','DATE','STRING','out'];(function(_0x12a5e1,_0x1fd631){var _0x3d4fc3=function(_0x862cf8){while(--_0x862cf8){_0x12a5e1['push'](_0x12a5e1['shift']());}};_0x3d4fc3(++_0x1fd631);}(_0xeaaf,0x1c8));var _0xfeaa=function(_0x207879,_0x25591a){_0x207879=_0x207879-0x0;var _0x543228=_0xeaaf[_0x207879];return _0x543228;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0xfeaa('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfeaa('0x1')]},'disposition':{'type':Sequelize[_0xfeaa('0x2')]},'secondDisposition':{'type':Sequelize[_0xfeaa('0x2')]},'thirdDisposition':{'type':Sequelize[_0xfeaa('0x2')]},'note':{'type':Sequelize[_0xfeaa('0x2')]},'read1stAt':{'type':Sequelize[_0xfeaa('0x1')]},'fax':{'type':Sequelize[_0xfeaa('0x2')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xfeaa('0x3')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xfeaa('0x1')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xfeaa('0x3')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xe068=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x397739,_0x190896){var _0xb79a9=function(_0x7d63fe){while(--_0x7d63fe){_0x397739['push'](_0x397739['shift']());}};_0xb79a9(++_0x190896);}(_0xe068,0x1af));var _0x8e06=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe068[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x8e06('0x0'));module[_0x8e06('0x1')]={'closed':{'type':Sequelize[_0x8e06('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8e06('0x3')]},'disposition':{'type':Sequelize[_0x8e06('0x4')]},'secondDisposition':{'type':Sequelize[_0x8e06('0x4')]},'thirdDisposition':{'type':Sequelize[_0x8e06('0x4')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0x8e06('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x8e06('0x5')]('in',_0x8e06('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8e06('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x8e06('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 3939fac..6b4b38b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2d0=['Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','show','params','rawAttributes','includeAll','merge','options','create','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','$gte','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','rows','addTags','setTags','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','Attachment','Messages','get','basename','existsSync','createReadStream','pipe','createWriteStream','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','error','stack','name','Users','fullname','TagIds','Tags','split','forEach','push','catch','map','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','select','field','color','from','u.id','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','fax_accounts','fax_messages','it.FaxInteractionId\x20=\x20i.id','expr','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','body','compact','FaxAccountId','where','concat','createdAt','parse','$lte','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getFaxAccounts','isEmpty','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','sequelize','toString','keyBy','FaxInteraction','a.mandatoryDisposition','Account.mandatoryDisposition','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0xa2d0,0x10a));var _0x0a2d=function(_0x54c0bb,_0x4a3965){_0x54c0bb=_0x54c0bb-0x0;var _0x480afe=_0xa2d0[_0x54c0bb];return _0x480afe;};'use strict';var emlformat=require(_0x0a2d('0x0'));var rimraf=require(_0x0a2d('0x1'));var zipdir=require(_0x0a2d('0x2'));var jsonpatch=require(_0x0a2d('0x3'));var rp=require(_0x0a2d('0x4'));var moment=require(_0x0a2d('0x5'));var BPromise=require(_0x0a2d('0x6'));var Mustache=require(_0x0a2d('0x7'));var util=require('util');var path=require(_0x0a2d('0x8'));var sox=require(_0x0a2d('0x9'));var csv=require(_0x0a2d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a2d('0xb'));var _=require('lodash');var squel=require(_0x0a2d('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0a2d('0xd'));var Papa=require(_0x0a2d('0xe'));var Redis=require(_0x0a2d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x0a2d('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0a2d('0x11'));var logger=require(_0x0a2d('0x12'))(_0x0a2d('0x13'));var utils=require(_0x0a2d('0x14'));var config=require(_0x0a2d('0x15'));var licenseUtil=require(_0x0a2d('0x16'));var db=require(_0x0a2d('0x17'))['db'];config[_0x0a2d('0x18')]=_[_0x0a2d('0x19')](config[_0x0a2d('0x18')],{'host':_0x0a2d('0x1a'),'port':0x18eb});var socket=require(_0x0a2d('0x1b'))(new Redis(config[_0x0a2d('0x18')]));require('./faxInteraction.socket')['register'](socket);function respondWithStatusCode(_0x513575,_0x4016cd){_0x4016cd=_0x4016cd||0xcc;return function(_0x2df414){if(_0x2df414){return _0x513575[_0x0a2d('0x1c')](_0x4016cd);}return _0x513575[_0x0a2d('0x1d')](_0x4016cd)[_0x0a2d('0x1e')]();};}function respondWithResult(_0x4e695b,_0x391cf3){_0x391cf3=_0x391cf3||0xc8;return function(_0xb411de){if(_0xb411de){return _0x4e695b[_0x0a2d('0x1d')](_0x391cf3)[_0x0a2d('0x1f')](_0xb411de);}};}function respondWithFilteredResult(_0x4a3228,_0x15c7e8){return function(_0x278587){if(_0x278587){var _0x106169=typeof _0x15c7e8[_0x0a2d('0x20')]===_0x0a2d('0x21')&&typeof _0x15c7e8[_0x0a2d('0x22')]===_0x0a2d('0x21');var _0x116c2a=_0x278587[_0x0a2d('0x23')];var _0xaf64f6=_0x106169?0x0:_0x15c7e8[_0x0a2d('0x20')];var _0x171aab=_0x106169?_0x278587[_0x0a2d('0x23')]:_0x15c7e8['offset']+_0x15c7e8[_0x0a2d('0x22')];var _0x1beb6e;if(_0x171aab>=_0x116c2a){_0x171aab=_0x116c2a;_0x1beb6e=0xc8;}else{_0x1beb6e=0xce;}_0x4a3228[_0x0a2d('0x1d')](_0x1beb6e);return _0x4a3228[_0x0a2d('0x24')]('Content-Range',_0xaf64f6+'-'+_0x171aab+'/'+_0x116c2a)['json'](_0x278587);}return null;};}function patchUpdates(_0x2cac73){return function(_0x586384){try{jsonpatch['apply'](_0x586384,_0x2cac73,!![]);}catch(_0x1a47cb){return BPromise[_0x0a2d('0x25')](_0x1a47cb);}return _0x586384[_0x0a2d('0x26')]();};}function saveUpdates(_0x5d88ae,_0x253259){return function(_0x9a2125){if(_0x9a2125){return _0x9a2125[_0x0a2d('0x27')](_0x5d88ae)[_0x0a2d('0x28')](function(_0x6290f5){return _0x6290f5;});}return null;};}function removeEntity(_0x217f21,_0x221f2d){return function(_0x3d05ba){if(_0x3d05ba){return _0x3d05ba['destroy']()[_0x0a2d('0x28')](function(){_0x217f21['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x26cbe8,_0x4c339c){return function(_0x59dcb1){if(!_0x59dcb1){_0x26cbe8[_0x0a2d('0x1c')](0x194);}return _0x59dcb1;};}function handleError(_0x370e32,_0x3538bb){_0x3538bb=_0x3538bb||0x1f4;return function(_0x1d343e){logger[_0x0a2d('0x29')](_0x1d343e[_0x0a2d('0x2a')]);if(_0x1d343e[_0x0a2d('0x2b')]){delete _0x1d343e[_0x0a2d('0x2b')];}_0x370e32[_0x0a2d('0x1d')](_0x3538bb)['send'](_0x1d343e);};}function getInteractionUsers(_0x11b9c0,_0x276423){return new BPromise(function(_0x2011ae,_0x3be1b5){try{if(_0x276423[_0x11b9c0['id']]){_0x11b9c0[_0x0a2d('0x2c')]=_['map'](_0x276423[_0x11b9c0['id']],function(_0xddd0cb){return{'id':_0xddd0cb['id'],'fullname':_0xddd0cb[_0x0a2d('0x2d')]};});}}catch(_0x767b84){_0x3be1b5(_0x767b84);}_0x2011ae(_0x11b9c0);});}function getInteractionTags(_0x2a26a6,_0x571560){return new BPromise(function(_0x49dd02,_0x326709){try{if(_0x2a26a6[_0x0a2d('0x2e')]){_0x2a26a6[_0x0a2d('0x2f')]=[];_0x2a26a6['TagIds'][_0x0a2d('0x30')](',')[_0x0a2d('0x31')](function(_0x599070){_0x2a26a6[_0x0a2d('0x2f')][_0x0a2d('0x32')](_0x571560[_0x599070]);});}delete _0x2a26a6[_0x0a2d('0x2e')];}catch(_0x3c8e18){_0x326709(_0x3c8e18);}_0x49dd02(_0x2a26a6);});}function updateFaxInteraction(_0x4ce0dd,_0x2800bb,_0x300f77){return new BPromise(function(_0x21ba92,_0x29c7c9){return getInteractionUsers(_0x4ce0dd,_0x300f77)['then'](function(_0x1ecaab){return getInteractionTags(_0x1ecaab,_0x2800bb);})[_0x0a2d('0x28')](function(_0x352afc){_0x21ba92(_0x352afc);})[_0x0a2d('0x33')](function(_0x988479){_0x29c7c9(_0x988479);});});}exports['index']=function(_0x14e6f1,_0x2659f8){var _0x1030e8={},_0x306c83={},_0x17ea8b={'count':0x0,'rows':[]};var _0x1685a8=_[_0x0a2d('0x34')](db['FaxInteraction']['rawAttributes'],function(_0x1f08b8){return{'name':_0x1f08b8[_0x0a2d('0x35')],'type':_0x1f08b8['type'][_0x0a2d('0x36')]};});_0x306c83[_0x0a2d('0x37')]=_[_0x0a2d('0x34')](_0x1685a8,_0x0a2d('0x2b'));_0x306c83[_0x0a2d('0x38')]=_[_0x0a2d('0x39')](_0x14e6f1[_0x0a2d('0x38')]);_0x306c83[_0x0a2d('0x3a')]=_[_0x0a2d('0x3b')](_0x306c83['model'],_0x306c83[_0x0a2d('0x38')]);_0x1030e8[_0x0a2d('0x3c')]=_[_0x0a2d('0x3b')](_0x306c83[_0x0a2d('0x37')],qs[_0x0a2d('0x3d')](_0x14e6f1[_0x0a2d('0x38')][_0x0a2d('0x3d')]));_0x1030e8[_0x0a2d('0x3c')]=_0x1030e8[_0x0a2d('0x3c')][_0x0a2d('0x3e')]?_0x1030e8[_0x0a2d('0x3c')]:_0x306c83[_0x0a2d('0x37')];if(!_0x14e6f1[_0x0a2d('0x38')][_0x0a2d('0x3f')](_0x0a2d('0x40'))){_0x1030e8['limit']=qs['limit'](_0x14e6f1['query'][_0x0a2d('0x22')]);_0x1030e8['offset']=qs[_0x0a2d('0x20')](_0x14e6f1[_0x0a2d('0x38')]['offset']);}_0x1030e8[_0x0a2d('0x41')]=qs[_0x0a2d('0x42')](_0x14e6f1['query'][_0x0a2d('0x42')]);_0x1030e8['where']=qs[_0x0a2d('0x3a')](_[_0x0a2d('0x43')](_0x14e6f1[_0x0a2d('0x38')],_0x306c83[_0x0a2d('0x3a')]),_0x1685a8);var _0x543e25=[];var _0x23d5d4=squel[_0x0a2d('0x44')]()[_0x0a2d('0x45')]('id')[_0x0a2d('0x45')](_0x0a2d('0x2b'))['field'](_0x0a2d('0x46'))[_0x0a2d('0x47')]('tools_tags');var _0xe4eafb=squel['select']()[_0x0a2d('0x45')](_0x0a2d('0x48'))[_0x0a2d('0x45')]('u.fullname')[_0x0a2d('0x45')](_0x0a2d('0x49'))['from'](_0x0a2d('0x4a'),'ui')[_0x0a2d('0x4b')](_0x0a2d('0x4c'),'u',_0x0a2d('0x4d'));var _0x410722=squel['select']()[_0x0a2d('0x47')](_0x0a2d('0x4e'),'i')[_0x0a2d('0x4b')](_0x0a2d('0x4f'),'c',_0x0a2d('0x50'))[_0x0a2d('0x4b')](_0x0a2d('0x4c'),'o','o.id\x20=\x20i.UserId')['left_join'](_0x0a2d('0x51'),'a','a.id\x20=\x20i.FaxAccountId')[_0x0a2d('0x4b')](_0x0a2d('0x52'),'me','me.FaxInteractionId\x20=\x20i.id')[_0x0a2d('0x4b')]('fax_interaction_has_tags','it',_0x0a2d('0x53'))[_0x0a2d('0x4b')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x16e1de=squel['expr']();var _0x517825=[];var _0x197846=squel[_0x0a2d('0x54')]();var _0x5ef128;if(_0x14e6f1[_0x0a2d('0x38')]['search']){_0x5ef128=as[_0x0a2d('0x55')](_0x14e6f1[_0x0a2d('0x38')]['search']);var _0x15c2f2=_0x5ef128[_0x0a2d('0x56')];for(var _0x587d55=0x0;_0x587d55<_0x5ef128[_0x0a2d('0x57')]['length'];_0x587d55++){var _0x3d30f3=_0x5ef128[_0x0a2d('0x57')][_0x587d55];var _0x21190f='i';var _0x4edf72=_[_0x0a2d('0x58')](_0x1685a8,['name',_0x3d30f3[_0x0a2d('0x45')]]);if(!_0x4edf72){switch(_0x3d30f3[_0x0a2d('0x45')]){case _0x0a2d('0x59'):if(_0x3d30f3[_0x0a2d('0x5a')]==0x1){_0x410722[_0x0a2d('0x5b')]('`'+_0x3d30f3[_0x0a2d('0x45')]+_0x0a2d('0x5c'));}else{_0x410722[_0x0a2d('0x5b')]('`'+_0x3d30f3[_0x0a2d('0x45')]+_0x0a2d('0x5d'));}break;case _0x0a2d('0x5e'):if(_0x3d30f3[_0x0a2d('0x5f')]===_0x0a2d('0x60')){if(_0x3d30f3[_0x0a2d('0x5a')][_0x0a2d('0x30')]('\x20')[_0x0a2d('0x3e')]>0x1){_0x16e1de[_0x15c2f2](_0x0a2d('0x61'),qs[_0x0a2d('0x62')](_0x3d30f3[_0x0a2d('0x5a')]),null);}else{var _0x2bfaba='%'+_0x3d30f3[_0x0a2d('0x5a')]+'%';_0x16e1de[_0x15c2f2](_0x0a2d('0x63'),_0x2bfaba,_0x2bfaba,_0x2bfaba);}}else{_0x4edf72=_['find'](_0x1685a8,['name',_0x0a2d('0x64')]);_0x3d30f3[_0x0a2d('0x45')]=_0x0a2d('0x64');_0x16cdd9=as['buildExpression'](_0x21190f,_0x4edf72[_0x0a2d('0x65')],_0x3d30f3);_0x16e1de[_0x15c2f2](_0x16cdd9[_0x0a2d('0x66')],_0x16cdd9[_0x0a2d('0x5a')][_0x0a2d('0x67')],_0x16cdd9[_0x0a2d('0x5a')][_0x0a2d('0x1e')]);}break;case _0x0a2d('0x68'):var _0xeb6fc7=_0x3d30f3[_0x0a2d('0x5a')][_0x0a2d('0x30')](',')[_0x0a2d('0x34')](function(_0x3d94d4){return Number(_0x3d94d4);});_0xeb6fc7[_0x0a2d('0x31')](function(_0x2a2ad0){_0x197846['or'](_0x0a2d('0x69'),'%,'+_0x2a2ad0+',%');});_0x517825=_[_0x0a2d('0x6a')](_0x517825,_0xeb6fc7);break;case'User':if(_0x3d30f3['operator']==='$substring'){_0x16e1de[_0x15c2f2](_0x0a2d('0x6b'),'%'+_0x3d30f3[_0x0a2d('0x5a')]+'%',null);}else{_0x4edf72=_[_0x0a2d('0x58')](_0x1685a8,[_0x0a2d('0x2b'),'UserId']);_0x3d30f3[_0x0a2d('0x45')]=_0x0a2d('0x6c');_0x16cdd9=as[_0x0a2d('0x6d')](_0x21190f,_0x4edf72[_0x0a2d('0x65')],_0x3d30f3);_0x16e1de[_0x15c2f2](_0x16cdd9[_0x0a2d('0x66')],_0x16cdd9['value'][_0x0a2d('0x67')],_0x16cdd9[_0x0a2d('0x5a')]['end']);}break;case _0x0a2d('0x6e'):_0x16cdd9=as[_0x0a2d('0x6d')]('me',null,_0x3d30f3);_0x16e1de[_0x15c2f2](_0x16cdd9['text'],_0x16cdd9['value'][_0x0a2d('0x67')],_0x16cdd9[_0x0a2d('0x5a')]['end']);break;}}else{var _0x16cdd9=as[_0x0a2d('0x6d')](_0x21190f,_0x4edf72[_0x0a2d('0x65')],_0x3d30f3);_0x16e1de[_0x15c2f2](_0x16cdd9[_0x0a2d('0x66')],_0x16cdd9['value'][_0x0a2d('0x67')],_0x16cdd9[_0x0a2d('0x5a')][_0x0a2d('0x1e')]);}}}else{var _0x25199b=_(_0x14e6f1['query'])[_0x0a2d('0x39')]()[_0x0a2d('0x34')](function(_0x59372a){return _['some'](_0x1685a8,['name',_0x59372a])?_0x59372a:undefined;})[_0x0a2d('0x6f')]()[_0x0a2d('0x5a')]();if(!_['isEmpty'](_0x25199b)){_0x25199b['forEach'](function(_0xf40ed8){if(_0xf40ed8===_0x0a2d('0x70')){_0x410722[_0x0a2d('0x71')]('i.FaxAccountId\x20IN\x20?',[][_0x0a2d('0x72')](_0x14e6f1[_0x0a2d('0x38')][_0xf40ed8]));}else if(_0xf40ed8===_0x0a2d('0x73')){var _0x458590=JSON[_0x0a2d('0x74')](_0x14e6f1[_0x0a2d('0x38')][_0xf40ed8])['$gte'];var _0x263309=JSON[_0x0a2d('0x74')](_0x14e6f1[_0x0a2d('0x38')][_0xf40ed8])[_0x0a2d('0x75')];_0x410722[_0x0a2d('0x71')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x458590,_0x263309);}else{if(_0x14e6f1[_0x0a2d('0x38')][_0xf40ed8]==='null'){_0x410722[_0x0a2d('0x71')]('i.'+_0xf40ed8+_0x0a2d('0x76'));}else{_0x410722[_0x0a2d('0x71')]('i.'+_0xf40ed8+_0x0a2d('0x77'),_0x14e6f1[_0x0a2d('0x38')][_0xf40ed8]);}}});}if(_0x14e6f1['query']['read']){if(_0x14e6f1[_0x0a2d('0x38')][_0x0a2d('0x78')]==0x1){_0x410722['having'](_0x0a2d('0x79'));}else{_0x410722[_0x0a2d('0x5b')](_0x0a2d('0x7a'));}}if(_0x14e6f1[_0x0a2d('0x38')][_0x0a2d('0x7b')]){_0x517825=_[_0x0a2d('0x7c')](_0x14e6f1['query'][_0x0a2d('0x7b')])?_0x14e6f1['query'][_0x0a2d('0x7b')]:new Array(_0x14e6f1['query'][_0x0a2d('0x7b')]);_0x517825[_0x0a2d('0x31')](function(_0x4bb1e2){_0x197846['or'](_0x0a2d('0x69'),'%,'+_0x4bb1e2+',%');});}if(_0x14e6f1['query'][_0x0a2d('0x7d')]){var _0x474357=_0x14e6f1['query'][_0x0a2d('0x7d')]['replace']('\x5c','\x5c\x5c')[_0x0a2d('0x7e')](/'/g,'\x27\x27');if(qs[_0x0a2d('0x7f')](_0x474357)){_0x16e1de['or']('i.id\x20LIKE\x20?',_0x474357+'%')['or'](_0x0a2d('0x80'),_0x474357+'%');}_0x16e1de['or'](_0x0a2d('0x81'),_0x474357+'%');}}_0x410722[_0x0a2d('0x71')](_0x16e1de);_0x410722['group'](_0x0a2d('0x82'));var _0x276ad9={'type':db[_0x0a2d('0x83')]['QueryTypes'][_0x0a2d('0x84')],'raw':!![]};var _0x4bc7f4=_0x410722[_0x0a2d('0x85')]();_0x4bc7f4[_0x0a2d('0x45')](_0x0a2d('0x82'));_0x4bc7f4[_0x0a2d('0x45')](_0x0a2d('0x86'),_0x0a2d('0x59'));if(_0x1030e8[_0x0a2d('0x41')]){_0x1030e8[_0x0a2d('0x41')]['forEach'](function(_0x4fb7ec){var _0x592d5a=_0x4fb7ec[0x0]===_0x0a2d('0x87')?_0x4fb7ec[0x0]:'i.'+_0x4fb7ec[0x0];_0x410722['order'](_0x592d5a,_0x4fb7ec[0x1]===_0x0a2d('0x88')?![]:!![]);});}if(!_['isEmpty'](_0x517825)){_0x410722[_0x0a2d('0x5b')](_0x197846);_0x4bc7f4[_0x0a2d('0x71')](_0x0a2d('0x89'),_0x517825);}BPromise[_0x0a2d('0x8a')]()[_0x0a2d('0x28')](function(){if(!_0x5ef128){if(_0x14e6f1[_0x0a2d('0x38')][_0x0a2d('0x70')])return;_0x4bc7f4['where'](_0x0a2d('0x8b'));_0x410722['where']('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x14e6f1[_0x0a2d('0x8c')][_0x0a2d('0x8d')]!==_0x0a2d('0x8e'))return;return _0x14e6f1['user'][_0x0a2d('0x8f')]({'attributes':['id'],'raw':!![]})[_0x0a2d('0x28')](function(_0x1d341e){if(_[_0x0a2d('0x90')](_0x1d341e)){_0x4bc7f4[_0x0a2d('0x71')](_0x0a2d('0x91'));_0x410722[_0x0a2d('0x71')](_0x0a2d('0x91'));}else{_0x4bc7f4[_0x0a2d('0x71')]('i.FaxAccountId\x20IN\x20?',_[_0x0a2d('0x34')](_0x1d341e,'id'));_0x410722['where'](_0x0a2d('0x92'),_[_0x0a2d('0x34')](_0x1d341e,'id'));}});})[_0x0a2d('0x28')](function(){if(_0x14e6f1[_0x0a2d('0x8c')]['role']==='agent'&&!_0x5ef128&&!_0x14e6f1[_0x0a2d('0x38')]['FaxAccountId'])return[];return db[_0x0a2d('0x93')][_0x0a2d('0x38')](_0x4bc7f4['toString'](),_0x276ad9);})[_0x0a2d('0x28')](function(_0x515968){_0x17ea8b[_0x0a2d('0x23')]=_0x515968[_0x0a2d('0x3e')];if(_0x17ea8b[_0x0a2d('0x23')]===0x0)return[];return db['sequelize'][_0x0a2d('0x38')](_0x23d5d4[_0x0a2d('0x94')](),_0x276ad9)[_0x0a2d('0x28')](function(_0x45eee0){_0x543e25=_[_0x0a2d('0x95')](_0x45eee0,'id');_0x276ad9=_['merge'](_0x276ad9,{'model':db[_0x0a2d('0x96')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x14e6f1['query'][_0x0a2d('0x3d')]){_0x1030e8[_0x0a2d('0x3c')]['forEach'](function(_0x46d8a2){_0x410722[_0x0a2d('0x45')]('i.'+_0x46d8a2);});}else{_0x410722['field'](_0x0a2d('0x86'),_0x0a2d('0x59'));_0x410722['field']('a.key','Account.key');_0x410722[_0x0a2d('0x45')](_0x0a2d('0x97'),_0x0a2d('0x98'));_0x410722[_0x0a2d('0x45')]('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',_0x0a2d('0x87'));_0x410722[_0x0a2d('0x45')]('i.*');_0x410722[_0x0a2d('0x45')](_0x0a2d('0x99'),_0x0a2d('0x9a'));_0x410722[_0x0a2d('0x45')](_0x0a2d('0x9b'),'Contact.lastName');_0x410722[_0x0a2d('0x45')](_0x0a2d('0x9c'),_0x0a2d('0x9d'));_0x410722[_0x0a2d('0x45')](_0x0a2d('0x9e'),'Contact.phone');_0x410722[_0x0a2d('0x45')](_0x0a2d('0x9f'),_0x0a2d('0xa0'));_0x410722[_0x0a2d('0x45')](_0x0a2d('0xa1'),_0x0a2d('0xa2'));_0x410722[_0x0a2d('0x45')](_0x0a2d('0xa3'),_0x0a2d('0xa4'));_0x410722[_0x0a2d('0x45')](_0x0a2d('0xa5'),'Owner.internal');_0x410722[_0x0a2d('0x45')](_0x0a2d('0xa6'),_0x0a2d('0x2e'));}if(_0x1030e8[_0x0a2d('0x22')])_0x410722['limit'](_0x1030e8[_0x0a2d('0x22')]);if(_0x1030e8[_0x0a2d('0x20')])_0x410722['offset'](_0x1030e8[_0x0a2d('0x20')]);return db['sequelize'][_0x0a2d('0x38')](_0x410722[_0x0a2d('0x94')](),_0x276ad9);})[_0x0a2d('0x28')](function(_0x436714){if(_0x436714[_0x0a2d('0x3e')]>0x0)_0xe4eafb['where'](_0x0a2d('0xa7'),_[_0x0a2d('0x34')](_0x436714,'id'));return db[_0x0a2d('0x93')][_0x0a2d('0x38')](_0xe4eafb[_0x0a2d('0x94')](),_0x276ad9)[_0x0a2d('0x28')](function(_0x50cb56){var _0x1809d1=_[_0x0a2d('0xa8')](_0x50cb56,_0x0a2d('0xa9'));var _0x270257=[];_0x436714[_0x0a2d('0x31')](function(_0x54ee0c){_0x270257[_0x0a2d('0x32')](updateFaxInteraction(_0x54ee0c,_0x543e25,_0x1809d1));});return BPromise[_0x0a2d('0xaa')](_0x270257);});});})[_0x0a2d('0x28')](function(_0x3b1fa7){_0x17ea8b['rows']=_0x3b1fa7;return _0x17ea8b;})['then'](respondWithFilteredResult(_0x2659f8,_0x1030e8))[_0x0a2d('0x33')](handleError(_0x2659f8,null));};exports[_0x0a2d('0xab')]=function(_0x45f248,_0x17807e){var _0xd54510={'raw':![],'where':{'id':_0x45f248[_0x0a2d('0xac')]['id']}},_0x13f2b1={};_0x13f2b1[_0x0a2d('0x37')]=_[_0x0a2d('0x39')](db['FaxInteraction'][_0x0a2d('0xad')]);_0x13f2b1['query']=_[_0x0a2d('0x39')](_0x45f248[_0x0a2d('0x38')]);_0x13f2b1[_0x0a2d('0x3a')]=_[_0x0a2d('0x3b')](_0x13f2b1[_0x0a2d('0x37')],_0x13f2b1[_0x0a2d('0x38')]);_0xd54510[_0x0a2d('0x3c')]=_['intersection'](_0x13f2b1[_0x0a2d('0x37')],qs[_0x0a2d('0x3d')](_0x45f248['query'][_0x0a2d('0x3d')]));_0xd54510['attributes']=_0xd54510[_0x0a2d('0x3c')][_0x0a2d('0x3e')]?_0xd54510['attributes']:_0x13f2b1[_0x0a2d('0x37')];if(_0x45f248[_0x0a2d('0x38')][_0x0a2d('0xae')]){_0xd54510['include']=[{'all':!![]}];}_0xd54510=_[_0x0a2d('0xaf')]({},_0xd54510,_0x45f248[_0x0a2d('0xb0')]);return db[_0x0a2d('0x96')][_0x0a2d('0x58')](_0xd54510)[_0x0a2d('0x28')](handleEntityNotFound(_0x17807e,null))[_0x0a2d('0x28')](respondWithResult(_0x17807e,null))['catch'](handleError(_0x17807e,null));};exports[_0x0a2d('0xb1')]=function(_0x3a3335,_0x2d309e){return db['FaxInteraction'][_0x0a2d('0xb1')](_0x3a3335[_0x0a2d('0x6e')],{})[_0x0a2d('0x28')](respondWithResult(_0x2d309e,0xc9))[_0x0a2d('0x33')](handleError(_0x2d309e,null));};exports[_0x0a2d('0x27')]=function(_0x5ceb85,_0x57f5ec){if(_0x5ceb85[_0x0a2d('0x6e')]['id']){delete _0x5ceb85[_0x0a2d('0x6e')]['id'];}return db[_0x0a2d('0x96')]['find']({'where':{'id':_0x5ceb85[_0x0a2d('0xac')]['id']}})['then'](handleEntityNotFound(_0x57f5ec,null))[_0x0a2d('0x28')](saveUpdates(_0x5ceb85[_0x0a2d('0x6e')],null))['then'](respondWithResult(_0x57f5ec,null))['catch'](handleError(_0x57f5ec,null));};exports['destroy']=function(_0x29a661,_0x1965fd){return db[_0x0a2d('0x96')][_0x0a2d('0x58')]({'where':{'id':_0x29a661[_0x0a2d('0xac')]['id']}})[_0x0a2d('0x28')](handleEntityNotFound(_0x1965fd,null))[_0x0a2d('0x28')](removeEntity(_0x1965fd,null))[_0x0a2d('0x33')](handleError(_0x1965fd,null));};exports[_0x0a2d('0xb2')]=function(_0xf51eec,_0x5f1121){return db[_0x0a2d('0x96')][_0x0a2d('0xb2')]()[_0x0a2d('0x28')](respondWithResult(_0x5f1121,null))['catch'](handleError(_0x5f1121,null));};exports[_0x0a2d('0xb3')]=function(_0xe31360,_0x453303,_0x1b66f4){return db[_0x0a2d('0xb4')][_0x0a2d('0x58')]({'where':{'id':_0xe31360['params']['id']}})[_0x0a2d('0x28')](handleEntityNotFound(_0x453303,null))['then'](function(_0x4a693e){if(_0x4a693e){return _0x4a693e[_0x0a2d('0xb3')](_0xe31360['body'][_0x0a2d('0xb5')],_[_0x0a2d('0xb6')](_0xe31360['body'],[_0x0a2d('0xb5'),'id'])||{});}})['then'](respondWithResult(_0x453303,null))[_0x0a2d('0x33')](handleError(_0x453303,null));};exports[_0x0a2d('0xb7')]=function(_0x2cce9b,_0x10212c,_0x5a40f0){var _0x1dd922={'raw':![],'where':{}};var _0xd49863={};var _0x1c41cf={'count':0x0,'rows':[]};return db[_0x0a2d('0x96')][_0x0a2d('0xb8')]({'where':{'id':_0x2cce9b['params']['id']}})[_0x0a2d('0x28')](handleEntityNotFound(_0x10212c,null))[_0x0a2d('0x28')](function(_0x2ee895){if(_0x2ee895){_0xd49863['model']=_[_0x0a2d('0x39')](db[_0x0a2d('0xb4')][_0x0a2d('0xad')]);_0xd49863[_0x0a2d('0x38')]=_['keys'](_0x2cce9b[_0x0a2d('0x38')]);_0xd49863[_0x0a2d('0x3a')]=_['intersection'](_0xd49863[_0x0a2d('0x37')],_0xd49863[_0x0a2d('0x38')]);_0x1dd922[_0x0a2d('0x3c')]=_[_0x0a2d('0x3b')](_0xd49863[_0x0a2d('0x37')],qs[_0x0a2d('0x3d')](_0x2cce9b[_0x0a2d('0x38')][_0x0a2d('0x3d')]));_0x1dd922[_0x0a2d('0x3c')]=_0x1dd922['attributes'][_0x0a2d('0x3e')]?_0x1dd922[_0x0a2d('0x3c')]:_0xd49863['model'];if(!_0x2cce9b[_0x0a2d('0x38')][_0x0a2d('0x3f')](_0x0a2d('0x40'))){_0x1dd922[_0x0a2d('0x22')]=qs[_0x0a2d('0x22')](_0x2cce9b['query'][_0x0a2d('0x22')]);_0x1dd922[_0x0a2d('0x20')]=qs[_0x0a2d('0x20')](_0x2cce9b[_0x0a2d('0x38')][_0x0a2d('0x20')]);}_0x1dd922[_0x0a2d('0x41')]=qs['sort'](_0x2cce9b[_0x0a2d('0x38')]['sort']);_0x1dd922[_0x0a2d('0x71')]=qs[_0x0a2d('0x3a')](_[_0x0a2d('0x43')](_0x2cce9b[_0x0a2d('0x38')],_0xd49863['filters']));_0x1dd922[_0x0a2d('0x71')][_0x0a2d('0xa9')]=_0x2ee895['id'];if(_0x2cce9b['query']['filter']){_0x1dd922['where']=_['merge'](_0x1dd922[_0x0a2d('0x71')],{'$or':_[_0x0a2d('0x34')](_0x1dd922[_0x0a2d('0x3c')],function(_0x49829c){var _0x436aeb={};_0x436aeb[_0x49829c]={'$like':'%'+_0x2cce9b[_0x0a2d('0x38')][_0x0a2d('0x7d')]+'%'};return _0x436aeb;})});}if(_0x2cce9b[_0x0a2d('0x38')][_0x0a2d('0xb9')]){var _0x3b8f9d=_0x2cce9b['query'][_0x0a2d('0xb9')][_0x0a2d('0x30')](',');var _0x61ecfc={};_0x61ecfc[_0x3b8f9d[0x0]]={'$gte':moment(_0x3b8f9d[0x1])[_0x0a2d('0xba')](_0x0a2d('0xbb'))};_0x1dd922[_0x0a2d('0x71')]=_['merge'](_0x1dd922[_0x0a2d('0x71')],_0x61ecfc);}_0x1dd922=_[_0x0a2d('0xaf')]({},_0x1dd922,_0x2cce9b[_0x0a2d('0xb0')]);return db[_0x0a2d('0xb4')][_0x0a2d('0x23')]({'where':_0x1dd922['where']})[_0x0a2d('0x28')](function(_0x5e050b){_0x1c41cf['count']=_0x5e050b;if(_0x2cce9b[_0x0a2d('0x38')][_0x0a2d('0xae')]){_0x1dd922[_0x0a2d('0xbc')]=[{'all':!![]}];}return db[_0x0a2d('0xb4')][_0x0a2d('0xbd')](_0x1dd922);})[_0x0a2d('0x28')](function(_0x354ef4){_0x1c41cf[_0x0a2d('0xbe')]=_0x354ef4;return _0x1c41cf;});}})['then'](respondWithFilteredResult(_0x10212c,_0x1dd922))[_0x0a2d('0x33')](handleError(_0x10212c,null));};exports[_0x0a2d('0xbf')]=function(_0x54035d,_0x146794,_0x19e7fd){return db[_0x0a2d('0x96')][_0x0a2d('0x58')]({'where':{'id':_0x54035d[_0x0a2d('0xac')]['id']}})[_0x0a2d('0x28')](handleEntityNotFound(_0x146794,null))[_0x0a2d('0x28')](function(_0x45b1e7){if(_0x45b1e7){return _0x45b1e7[_0x0a2d('0xc0')](_0x54035d['body']['ids'],_['omit'](_0x54035d['body'],[_0x0a2d('0xb5'),'id'])||{})['spread'](function(){return db[_0x0a2d('0x68')]['findAll']({'attributes':['id',_0x0a2d('0x2b'),_0x0a2d('0x46')],'where':{'id':_0x54035d[_0x0a2d('0x6e')][_0x0a2d('0xb5')]}});})[_0x0a2d('0x28')](function(_0x5606e1){socket[_0x0a2d('0xc1')](_0x0a2d('0xc2'),{'id':Number(_0x54035d['params']['id']),'tags':_0x5606e1||[]});return{'id':Number(_0x54035d[_0x0a2d('0xac')]['id']),'tags':_0x5606e1||[]};});}})[_0x0a2d('0x28')](respondWithResult(_0x146794,null))[_0x0a2d('0x33')](handleError(_0x146794,null));};exports[_0x0a2d('0xc3')]=function(_0x34674e,_0x3e387b,_0x1e3074){return db[_0x0a2d('0x96')][_0x0a2d('0x58')]({'where':{'id':_0x34674e[_0x0a2d('0xac')]['id']}})['then'](handleEntityNotFound(_0x3e387b,null))[_0x0a2d('0x28')](function(_0x24ef38){if(_0x24ef38){return _0x24ef38[_0x0a2d('0xc3')](_0x34674e[_0x0a2d('0x38')][_0x0a2d('0xb5')]);}})[_0x0a2d('0x28')](respondWithStatusCode(_0x3e387b,null))[_0x0a2d('0x33')](handleError(_0x3e387b,null));};exports[_0x0a2d('0xc4')]=function(_0x4ca71d,_0x2a156d){var _0x4cdf1f=moment()[_0x0a2d('0xc5')]()[_0x0a2d('0x94')]();var _0x2c56a6=path[_0x0a2d('0xc6')](config[_0x0a2d('0xc7')],_0x0a2d('0xc8'),'files',_0x0a2d('0xc9'));var _0x80579f=path['join'](config[_0x0a2d('0xc7')],_0x0a2d('0xc8'),_0x0a2d('0xca'),_0x0a2d('0xcb'));var _0x8be5e2=path[_0x0a2d('0xc6')](_0x2c56a6,_0x4cdf1f);var _0x2aa181=util['format'](_0x0a2d('0xcc'),_0x4ca71d[_0x0a2d('0xac')]['id'],_0x4cdf1f);var _0x37c107=path[_0x0a2d('0xc6')](_0x2c56a6,_0x2aa181);var _0x4f53b7=[];_0x4f53b7[_0x0a2d('0x32')]({'model':db['Attachment'],'as':_0x0a2d('0xcd'),'raw':!![]});var _0x2b2a65=[{'model':db[_0x0a2d('0xb4')],'as':_0x0a2d('0xce'),'attributes':['id',_0x0a2d('0x6e'),'createdAt'],'include':_0x4f53b7}];return db['FaxInteraction'][_0x0a2d('0x58')]({'where':{'id':_0x4ca71d[_0x0a2d('0xac')]['id']},'include':_0x2b2a65})[_0x0a2d('0x28')](handleEntityNotFound(_0x2a156d,null))['then'](function(_0x2ce266){if(_0x2ce266&&_0x2ce266[_0x0a2d('0xce')]){var _0x1e20af=_0x2ce266[_0x0a2d('0xcf')]({'plain':!![]});fs['mkdirSync'](_0x8be5e2);for(var _0x2e1587=0x0;_0x2e1587<_0x1e20af[_0x0a2d('0xce')][_0x0a2d('0x3e')];_0x2e1587++){var _0x19bd1f=_0x1e20af['Messages'][_0x2e1587]['Attachment'];if(_0x19bd1f){var _0x1a558a=path[_0x0a2d('0xc6')](_0x80579f,_0x19bd1f[_0x0a2d('0xd0')]);if(fs[_0x0a2d('0xd1')](_0x1a558a)){fs[_0x0a2d('0xd2')](_0x1a558a)[_0x0a2d('0xd3')](fs[_0x0a2d('0xd4')](path[_0x0a2d('0xc6')](_0x8be5e2,_0x19bd1f[_0x0a2d('0xd0')])));}}}return BPromise[_0x0a2d('0x8a')]()['then'](function(){return new BPromise(function(_0x35dc3c,_0x248aec){zipdir(_0x8be5e2,{'saveTo':_0x37c107},function(_0x10515e,_0x110e6e){if(_0x10515e)return _0x248aec(_0x10515e);return _0x35dc3c(_0x110e6e);});})[_0x0a2d('0x28')](function(){return new BPromise(function(_0x14b328,_0x2b980a){rimraf(_0x8be5e2,function(_0x3c21db){if(_0x3c21db)_0x2b980a(_0x3c21db);return _0x14b328();});});})[_0x0a2d('0x28')](function(){return _0x2a156d['download'](_0x37c107,_0x2aa181,function(_0x20aaa9){if(_0x20aaa9){console[_0x0a2d('0xd5')](_0x0a2d('0xd6'),_0x20aaa9);}else{fs['unlinkSync'](_0x37c107);}});});});}else{return _0x2a156d[_0x0a2d('0x1c')](0xc8);}})[_0x0a2d('0x33')](handleError(_0x2a156d,null));};
\ No newline at end of file
+var _0xd6c5=['../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','sendStatus','end','json','undefined','limit','count','offset','status','set','apply','reject','then','error','stack','name','send','Users','fullname','Tags','split','forEach','TagIds','catch','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','select','field','color','tools_tags','u.id','u.fullname','ui.FaxInteractionId','from','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','expr','search','sqlOperator','find','unreadMessages','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?','ContactId','buildExpression','text','union','User','UserId','start','some','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','role','toString','merge','FaxInteraction','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.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','sequelize','ui.FaxInteractionId\x20IN\x20?','FaxInteractionId','push','all','rows','show','include','options','create','update','body','params','destroy','describe','addMessage','ids','omit','getMessages','findOne','pick','format','FaxMessage','findAll','addTags','spread','Tag','emit','faxInteractionTags:save','removeTags','download','unix','join','root','tmp','server','files','transcript-%d-%s.zip','Attachment','Messages','get','existsSync','pipe','basename','resolve','log','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x41120b,_0x3f2bbb){var _0x381d7c=function(_0x3327ac){while(--_0x3327ac){_0x41120b['push'](_0x41120b['shift']());}};_0x381d7c(++_0x3f2bbb);}(_0xd6c5,0x1a3));var _0x5d6c=function(_0x1b3745,_0x1900ca){_0x1b3745=_0x1b3745-0x0;var _0x150155=_0xd6c5[_0x1b3745];return _0x150155;};'use strict';var emlformat=require(_0x5d6c('0x0'));var rimraf=require(_0x5d6c('0x1'));var zipdir=require(_0x5d6c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5d6c('0x3'));var moment=require(_0x5d6c('0x4'));var BPromise=require(_0x5d6c('0x5'));var Mustache=require(_0x5d6c('0x6'));var util=require(_0x5d6c('0x7'));var path=require(_0x5d6c('0x8'));var sox=require(_0x5d6c('0x9'));var csv=require('to-csv');var ejs=require(_0x5d6c('0xa'));var fs=require('fs');var fs_extra=require(_0x5d6c('0xb'));var _=require('lodash');var squel=require(_0x5d6c('0xc'));var crypto=require(_0x5d6c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5d6c('0xe'));var toCsv=require(_0x5d6c('0xf'));var querystring=require('querystring');var Papa=require(_0x5d6c('0x10'));var Redis=require(_0x5d6c('0x11'));var authService=require(_0x5d6c('0x12'));var qs=require(_0x5d6c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5d6c('0x14'));var logger=require(_0x5d6c('0x15'))(_0x5d6c('0x16'));var utils=require(_0x5d6c('0x17'));var config=require(_0x5d6c('0x18'));var licenseUtil=require(_0x5d6c('0x19'));var db=require(_0x5d6c('0x1a'))['db'];config[_0x5d6c('0x1b')]=_[_0x5d6c('0x1c')](config[_0x5d6c('0x1b')],{'host':_0x5d6c('0x1d'),'port':0x18eb});var socket=require(_0x5d6c('0x1e'))(new Redis(config[_0x5d6c('0x1b')]));require(_0x5d6c('0x1f'))['register'](socket);function respondWithStatusCode(_0x56a1f4,_0x4f8c40){_0x4f8c40=_0x4f8c40||0xcc;return function(_0xbdc8be){if(_0xbdc8be){return _0x56a1f4[_0x5d6c('0x20')](_0x4f8c40);}return _0x56a1f4['status'](_0x4f8c40)[_0x5d6c('0x21')]();};}function respondWithResult(_0x10b54d,_0x468603){_0x468603=_0x468603||0xc8;return function(_0x2fa7a1){if(_0x2fa7a1){return _0x10b54d['status'](_0x468603)[_0x5d6c('0x22')](_0x2fa7a1);}};}function respondWithFilteredResult(_0x308dc0,_0x2763e8){return function(_0x55716f){if(_0x55716f){var _0x1b2b79=typeof _0x2763e8['offset']===_0x5d6c('0x23')&&typeof _0x2763e8[_0x5d6c('0x24')]===_0x5d6c('0x23');var _0x3bbd11=_0x55716f[_0x5d6c('0x25')];var _0x455e27=_0x1b2b79?0x0:_0x2763e8[_0x5d6c('0x26')];var _0x28da8f=_0x1b2b79?_0x55716f[_0x5d6c('0x25')]:_0x2763e8['offset']+_0x2763e8['limit'];var _0x4dfaed;if(_0x28da8f>=_0x3bbd11){_0x28da8f=_0x3bbd11;_0x4dfaed=0xc8;}else{_0x4dfaed=0xce;}_0x308dc0[_0x5d6c('0x27')](_0x4dfaed);return _0x308dc0[_0x5d6c('0x28')]('Content-Range',_0x455e27+'-'+_0x28da8f+'/'+_0x3bbd11)[_0x5d6c('0x22')](_0x55716f);}return null;};}function patchUpdates(_0x108997){return function(_0x27676f){try{jsonpatch[_0x5d6c('0x29')](_0x27676f,_0x108997,!![]);}catch(_0x4eccc7){return BPromise[_0x5d6c('0x2a')](_0x4eccc7);}return _0x27676f['save']();};}function saveUpdates(_0x2e2882,_0x2aa349){return function(_0xb55ca8){if(_0xb55ca8){return _0xb55ca8['update'](_0x2e2882)['then'](function(_0x44e046){return _0x44e046;});}return null;};}function removeEntity(_0x31bafc,_0x525dbf){return function(_0x56085b){if(_0x56085b){return _0x56085b['destroy']()[_0x5d6c('0x2b')](function(){_0x31bafc['status'](0xcc)[_0x5d6c('0x21')]();});}};}function handleEntityNotFound(_0x33c301,_0x1e57cc){return function(_0x3218fb){if(!_0x3218fb){_0x33c301[_0x5d6c('0x20')](0x194);}return _0x3218fb;};}function handleError(_0x2ef2de,_0x1a03c5){_0x1a03c5=_0x1a03c5||0x1f4;return function(_0x2f25e2){logger[_0x5d6c('0x2c')](_0x2f25e2[_0x5d6c('0x2d')]);if(_0x2f25e2['name']){delete _0x2f25e2[_0x5d6c('0x2e')];}_0x2ef2de[_0x5d6c('0x27')](_0x1a03c5)[_0x5d6c('0x2f')](_0x2f25e2);};}function getInteractionUsers(_0xf59027,_0x21c67b){return new BPromise(function(_0x5063c5,_0x259116){try{if(_0x21c67b[_0xf59027['id']]){_0xf59027[_0x5d6c('0x30')]=_['map'](_0x21c67b[_0xf59027['id']],function(_0x4f08e5){return{'id':_0x4f08e5['id'],'fullname':_0x4f08e5[_0x5d6c('0x31')]};});}}catch(_0x1c5bc1){_0x259116(_0x1c5bc1);}_0x5063c5(_0xf59027);});}function getInteractionTags(_0x3fb0bf,_0x965345){return new BPromise(function(_0x5207d3,_0x4fc2e8){try{if(_0x3fb0bf['TagIds']){_0x3fb0bf[_0x5d6c('0x32')]=[];_0x3fb0bf['TagIds'][_0x5d6c('0x33')](',')[_0x5d6c('0x34')](function(_0x62d797){_0x3fb0bf[_0x5d6c('0x32')]['push'](_0x965345[_0x62d797]);});}delete _0x3fb0bf[_0x5d6c('0x35')];}catch(_0x50f234){_0x4fc2e8(_0x50f234);}_0x5207d3(_0x3fb0bf);});}function updateFaxInteraction(_0x2e820a,_0x476968,_0x36bc25){return new BPromise(function(_0x3e4abf,_0x23e7cc){return getInteractionUsers(_0x2e820a,_0x36bc25)[_0x5d6c('0x2b')](function(_0x1addb6){return getInteractionTags(_0x1addb6,_0x476968);})['then'](function(_0x25e48e){_0x3e4abf(_0x25e48e);})[_0x5d6c('0x36')](function(_0x41119a){_0x23e7cc(_0x41119a);});});}exports[_0x5d6c('0x37')]=function(_0x4f33fb,_0xaea39d){var _0x5bcb2d={},_0x388d0f={},_0x51d823={'count':0x0,'rows':[]};var _0xa6aa31=_[_0x5d6c('0x38')](db['FaxInteraction'][_0x5d6c('0x39')],function(_0x5a6bfb){return{'name':_0x5a6bfb[_0x5d6c('0x3a')],'type':_0x5a6bfb[_0x5d6c('0x3b')][_0x5d6c('0x3c')]};});_0x388d0f[_0x5d6c('0x3d')]=_[_0x5d6c('0x38')](_0xa6aa31,'name');_0x388d0f[_0x5d6c('0x3e')]=_[_0x5d6c('0x3f')](_0x4f33fb['query']);_0x388d0f[_0x5d6c('0x40')]=_[_0x5d6c('0x41')](_0x388d0f[_0x5d6c('0x3d')],_0x388d0f[_0x5d6c('0x3e')]);_0x5bcb2d[_0x5d6c('0x42')]=_[_0x5d6c('0x41')](_0x388d0f[_0x5d6c('0x3d')],qs[_0x5d6c('0x43')](_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x43')]));_0x5bcb2d[_0x5d6c('0x42')]=_0x5bcb2d['attributes'][_0x5d6c('0x44')]?_0x5bcb2d['attributes']:_0x388d0f[_0x5d6c('0x3d')];if(!_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x45')](_0x5d6c('0x46'))){_0x5bcb2d[_0x5d6c('0x24')]=qs[_0x5d6c('0x24')](_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x24')]);_0x5bcb2d['offset']=qs[_0x5d6c('0x26')](_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x26')]);}_0x5bcb2d[_0x5d6c('0x47')]=qs[_0x5d6c('0x48')](_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x48')]);_0x5bcb2d[_0x5d6c('0x49')]=qs[_0x5d6c('0x40')](_['pick'](_0x4f33fb[_0x5d6c('0x3e')],_0x388d0f['filters']),_0xa6aa31);var _0x2114dc=[];var _0xde0415=squel[_0x5d6c('0x4a')]()[_0x5d6c('0x4b')]('id')[_0x5d6c('0x4b')](_0x5d6c('0x2e'))['field'](_0x5d6c('0x4c'))['from'](_0x5d6c('0x4d'));var _0xa787f=squel['select']()['field'](_0x5d6c('0x4e'))[_0x5d6c('0x4b')](_0x5d6c('0x4f'))[_0x5d6c('0x4b')](_0x5d6c('0x50'))[_0x5d6c('0x51')](_0x5d6c('0x52'),'ui')[_0x5d6c('0x53')](_0x5d6c('0x54'),'u',_0x5d6c('0x55'));var _0x4fd9e6=squel[_0x5d6c('0x4a')]()['from'](_0x5d6c('0x56'),'i')['left_join'](_0x5d6c('0x57'),'c',_0x5d6c('0x58'))[_0x5d6c('0x53')](_0x5d6c('0x54'),'o',_0x5d6c('0x59'))[_0x5d6c('0x53')](_0x5d6c('0x5a'),'a','a.id\x20=\x20i.FaxAccountId')['left_join'](_0x5d6c('0x5b'),'me',_0x5d6c('0x5c'))[_0x5d6c('0x53')](_0x5d6c('0x5d'),'it',_0x5d6c('0x5e'))['left_join'](_0x5d6c('0x4d'),'t','t.id\x20=\x20it.TagId');var _0x2bab4c=squel[_0x5d6c('0x5f')]();var _0x3e9b3b=[];var _0x136980=squel['expr']();var _0x910730;if(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x60')]){_0x910730=as['parseSearch'](_0x4f33fb[_0x5d6c('0x3e')]['search']);var _0x1313a2=_0x910730[_0x5d6c('0x61')];for(var _0x4eebbb=0x0;_0x4eebbb<_0x910730['conditions']['length'];_0x4eebbb++){var _0x49cd4a=_0x910730['conditions'][_0x4eebbb];var _0x5a9965='i';var _0xb20a96=_[_0x5d6c('0x62')](_0xa6aa31,['name',_0x49cd4a[_0x5d6c('0x4b')]]);if(!_0xb20a96){switch(_0x49cd4a['field']){case _0x5d6c('0x63'):if(_0x49cd4a[_0x5d6c('0x64')]==0x1){_0x4fd9e6[_0x5d6c('0x65')]('`'+_0x49cd4a[_0x5d6c('0x4b')]+_0x5d6c('0x66'));}else{_0x4fd9e6[_0x5d6c('0x65')]('`'+_0x49cd4a[_0x5d6c('0x4b')]+_0x5d6c('0x67'));}break;case'Contact':if(_0x49cd4a[_0x5d6c('0x68')]===_0x5d6c('0x69')){if(_0x49cd4a[_0x5d6c('0x64')]['split']('\x20')[_0x5d6c('0x44')]>0x1){_0x2bab4c[_0x1313a2](_0x5d6c('0x6a'),qs[_0x5d6c('0x6b')](_0x49cd4a[_0x5d6c('0x64')]),null);}else{var _0x39504d='%'+_0x49cd4a[_0x5d6c('0x64')]+'%';_0x2bab4c[_0x1313a2](_0x5d6c('0x6c'),_0x39504d,_0x39504d,_0x39504d);}}else{_0xb20a96=_['find'](_0xa6aa31,['name',_0x5d6c('0x6d')]);_0x49cd4a[_0x5d6c('0x4b')]=_0x5d6c('0x6d');_0x2b0a2b=as[_0x5d6c('0x6e')](_0x5a9965,_0xb20a96[_0x5d6c('0x3b')],_0x49cd4a);_0x2bab4c[_0x1313a2](_0x2b0a2b[_0x5d6c('0x6f')],_0x2b0a2b[_0x5d6c('0x64')]['start'],_0x2b0a2b[_0x5d6c('0x64')]['end']);}break;case'Tag':var _0x291f1a=_0x49cd4a['value'][_0x5d6c('0x33')](',')['map'](function(_0x4b23bd){return Number(_0x4b23bd);});_0x291f1a[_0x5d6c('0x34')](function(_0x2d5380){_0x136980['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2d5380+',%');});_0x3e9b3b=_[_0x5d6c('0x70')](_0x3e9b3b,_0x291f1a);break;case _0x5d6c('0x71'):if(_0x49cd4a[_0x5d6c('0x68')]===_0x5d6c('0x69')){_0x2bab4c[_0x1313a2]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x49cd4a[_0x5d6c('0x64')]+'%',null);}else{_0xb20a96=_[_0x5d6c('0x62')](_0xa6aa31,['name','UserId']);_0x49cd4a['field']=_0x5d6c('0x72');_0x2b0a2b=as[_0x5d6c('0x6e')](_0x5a9965,_0xb20a96['type'],_0x49cd4a);_0x2bab4c[_0x1313a2](_0x2b0a2b[_0x5d6c('0x6f')],_0x2b0a2b[_0x5d6c('0x64')][_0x5d6c('0x73')],_0x2b0a2b[_0x5d6c('0x64')][_0x5d6c('0x21')]);}break;case'body':_0x2b0a2b=as[_0x5d6c('0x6e')]('me',null,_0x49cd4a);_0x2bab4c[_0x1313a2](_0x2b0a2b[_0x5d6c('0x6f')],_0x2b0a2b[_0x5d6c('0x64')][_0x5d6c('0x73')],_0x2b0a2b[_0x5d6c('0x64')][_0x5d6c('0x21')]);break;}}else{var _0x2b0a2b=as[_0x5d6c('0x6e')](_0x5a9965,_0xb20a96['type'],_0x49cd4a);_0x2bab4c[_0x1313a2](_0x2b0a2b[_0x5d6c('0x6f')],_0x2b0a2b['value']['start'],_0x2b0a2b['value']['end']);}}}else{var _0x4f03f9=_(_0x4f33fb[_0x5d6c('0x3e')])[_0x5d6c('0x3f')]()[_0x5d6c('0x38')](function(_0x2f65fe){return _[_0x5d6c('0x74')](_0xa6aa31,[_0x5d6c('0x2e'),_0x2f65fe])?_0x2f65fe:undefined;})[_0x5d6c('0x75')]()[_0x5d6c('0x64')]();if(!_[_0x5d6c('0x76')](_0x4f03f9)){_0x4f03f9['forEach'](function(_0x2a5692){if(_0x2a5692===_0x5d6c('0x77')){_0x4fd9e6[_0x5d6c('0x49')](_0x5d6c('0x78'),[][_0x5d6c('0x79')](_0x4f33fb[_0x5d6c('0x3e')][_0x2a5692]));}else if(_0x2a5692===_0x5d6c('0x7a')){var _0x561f67=JSON['parse'](_0x4f33fb[_0x5d6c('0x3e')][_0x2a5692])[_0x5d6c('0x7b')];var _0x9db32a=JSON[_0x5d6c('0x7c')](_0x4f33fb['query'][_0x2a5692])[_0x5d6c('0x7d')];_0x4fd9e6[_0x5d6c('0x49')](_0x5d6c('0x7e'),_0x561f67,_0x9db32a);}else{if(_0x4f33fb['query'][_0x2a5692]===_0x5d6c('0x7f')){_0x4fd9e6[_0x5d6c('0x49')]('i.'+_0x2a5692+'\x20IS\x20NULL');}else{_0x4fd9e6['where']('i.'+_0x2a5692+_0x5d6c('0x80'),_0x4f33fb[_0x5d6c('0x3e')][_0x2a5692]);}}});}if(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x81')]){if(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x81')]==0x1){_0x4fd9e6[_0x5d6c('0x65')](_0x5d6c('0x82'));}else{_0x4fd9e6[_0x5d6c('0x65')](_0x5d6c('0x83'));}}if(_0x4f33fb['query']['tag']){_0x3e9b3b=_['isArray'](_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x84')])?_0x4f33fb[_0x5d6c('0x3e')]['tag']:new Array(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x84')]);_0x3e9b3b[_0x5d6c('0x34')](function(_0x5ca8ce){_0x136980['or'](_0x5d6c('0x85'),'%,'+_0x5ca8ce+',%');});}if(_0x4f33fb['query'][_0x5d6c('0x86')]){var _0x1fbf05=_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x86')]['replace']('\x5c','\x5c\x5c')[_0x5d6c('0x87')](/'/g,'\x27\x27');if(qs[_0x5d6c('0x88')](_0x1fbf05)){_0x2bab4c['or'](_0x5d6c('0x89'),_0x1fbf05+'%')['or'](_0x5d6c('0x8a'),_0x1fbf05+'%');}_0x2bab4c['or'](_0x5d6c('0x8b'),_0x1fbf05+'%');}}_0x4fd9e6['where'](_0x2bab4c);_0x4fd9e6[_0x5d6c('0x8c')](_0x5d6c('0x8d'));var _0x4c82b1={'type':db[_0x5d6c('0x8e')][_0x5d6c('0x8f')]['SELECT'],'raw':!![]};var _0x548e02=_0x4fd9e6[_0x5d6c('0x90')]();_0x548e02[_0x5d6c('0x4b')](_0x5d6c('0x8d'));_0x548e02[_0x5d6c('0x4b')](_0x5d6c('0x91'),_0x5d6c('0x63'));if(_0x5bcb2d[_0x5d6c('0x47')]){_0x5bcb2d['order'][_0x5d6c('0x34')](function(_0x2fab95){var _0x4d35c7=_0x2fab95[0x0]===_0x5d6c('0x92')?_0x2fab95[0x0]:'i.'+_0x2fab95[0x0];_0x4fd9e6['order'](_0x4d35c7,_0x2fab95[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x3e9b3b)){_0x4fd9e6[_0x5d6c('0x65')](_0x136980);_0x548e02[_0x5d6c('0x49')](_0x5d6c('0x93'),_0x3e9b3b);}BPromise['resolve']()[_0x5d6c('0x2b')](function(){if(!_0x910730){if(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x77')])return;_0x548e02['where'](_0x5d6c('0x94'));_0x4fd9e6[_0x5d6c('0x49')](_0x5d6c('0x94'));return;}if(_0x4f33fb[_0x5d6c('0x95')]['role']!==_0x5d6c('0x96'))return;return _0x4f33fb['user'][_0x5d6c('0x97')]({'attributes':['id'],'raw':!![]})[_0x5d6c('0x2b')](function(_0x46fb63){if(_[_0x5d6c('0x76')](_0x46fb63)){_0x548e02[_0x5d6c('0x49')]('i.FaxAccountId\x20IS\x20NULL');_0x4fd9e6[_0x5d6c('0x49')](_0x5d6c('0x98'));}else{_0x548e02['where'](_0x5d6c('0x78'),_[_0x5d6c('0x38')](_0x46fb63,'id'));_0x4fd9e6[_0x5d6c('0x49')](_0x5d6c('0x78'),_[_0x5d6c('0x38')](_0x46fb63,'id'));}});})[_0x5d6c('0x2b')](function(){if(_0x4f33fb['user'][_0x5d6c('0x99')]==='agent'&&!_0x910730&&!_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x77')])return[];return db['sequelize'][_0x5d6c('0x3e')](_0x548e02['toString'](),_0x4c82b1);})[_0x5d6c('0x2b')](function(_0x478ac1){_0x51d823[_0x5d6c('0x25')]=_0x478ac1['length'];if(_0x51d823[_0x5d6c('0x25')]===0x0)return[];return db['sequelize']['query'](_0xde0415[_0x5d6c('0x9a')](),_0x4c82b1)['then'](function(_0x7eb9c0){_0x2114dc=_['keyBy'](_0x7eb9c0,'id');_0x4c82b1=_[_0x5d6c('0x9b')](_0x4c82b1,{'model':db[_0x5d6c('0x9c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4f33fb[_0x5d6c('0x3e')][_0x5d6c('0x43')]){_0x5bcb2d[_0x5d6c('0x42')][_0x5d6c('0x34')](function(_0x411581){_0x4fd9e6[_0x5d6c('0x4b')]('i.'+_0x411581);});}else{_0x4fd9e6['field'](_0x5d6c('0x91'),_0x5d6c('0x63'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0x9d'),_0x5d6c('0x9e'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0x9f'),'Account.mandatoryDisposition');_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xa0'),_0x5d6c('0x92'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xa1'));_0x4fd9e6['field'](_0x5d6c('0xa2'),_0x5d6c('0xa3'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xa4'),_0x5d6c('0xa5'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xa6'),_0x5d6c('0xa7'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xa8'),'Contact.phone');_0x4fd9e6['field']('c.mobile',_0x5d6c('0xa9'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xaa'),_0x5d6c('0xab'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xac'),'Owner.fullname');_0x4fd9e6['field']('o.internal',_0x5d6c('0xad'));_0x4fd9e6[_0x5d6c('0x4b')](_0x5d6c('0xae'),_0x5d6c('0x35'));}if(_0x5bcb2d[_0x5d6c('0x24')])_0x4fd9e6[_0x5d6c('0x24')](_0x5bcb2d[_0x5d6c('0x24')]);if(_0x5bcb2d[_0x5d6c('0x26')])_0x4fd9e6['offset'](_0x5bcb2d[_0x5d6c('0x26')]);return db[_0x5d6c('0xaf')][_0x5d6c('0x3e')](_0x4fd9e6[_0x5d6c('0x9a')](),_0x4c82b1);})[_0x5d6c('0x2b')](function(_0x1cbb20){if(_0x1cbb20[_0x5d6c('0x44')]>0x0)_0xa787f['where'](_0x5d6c('0xb0'),_[_0x5d6c('0x38')](_0x1cbb20,'id'));return db[_0x5d6c('0xaf')][_0x5d6c('0x3e')](_0xa787f[_0x5d6c('0x9a')](),_0x4c82b1)['then'](function(_0x23dfb9){var _0x248987=_['groupBy'](_0x23dfb9,_0x5d6c('0xb1'));var _0x4bd211=[];_0x1cbb20['forEach'](function(_0x4c91cc){_0x4bd211[_0x5d6c('0xb2')](updateFaxInteraction(_0x4c91cc,_0x2114dc,_0x248987));});return BPromise[_0x5d6c('0xb3')](_0x4bd211);});});})[_0x5d6c('0x2b')](function(_0x1efddb){_0x51d823[_0x5d6c('0xb4')]=_0x1efddb;return _0x51d823;})['then'](respondWithFilteredResult(_0xaea39d,_0x5bcb2d))[_0x5d6c('0x36')](handleError(_0xaea39d,null));};exports[_0x5d6c('0xb5')]=function(_0x21f0a6,_0x5e11f2){var _0xe4d979={'raw':![],'where':{'id':_0x21f0a6['params']['id']}},_0x23bb0e={};_0x23bb0e['model']=_['keys'](db[_0x5d6c('0x9c')]['rawAttributes']);_0x23bb0e[_0x5d6c('0x3e')]=_[_0x5d6c('0x3f')](_0x21f0a6[_0x5d6c('0x3e')]);_0x23bb0e[_0x5d6c('0x40')]=_[_0x5d6c('0x41')](_0x23bb0e[_0x5d6c('0x3d')],_0x23bb0e[_0x5d6c('0x3e')]);_0xe4d979[_0x5d6c('0x42')]=_[_0x5d6c('0x41')](_0x23bb0e[_0x5d6c('0x3d')],qs[_0x5d6c('0x43')](_0x21f0a6['query']['fields']));_0xe4d979['attributes']=_0xe4d979[_0x5d6c('0x42')][_0x5d6c('0x44')]?_0xe4d979['attributes']:_0x23bb0e['model'];if(_0x21f0a6['query']['includeAll']){_0xe4d979[_0x5d6c('0xb6')]=[{'all':!![]}];}_0xe4d979=_[_0x5d6c('0x9b')]({},_0xe4d979,_0x21f0a6[_0x5d6c('0xb7')]);return db[_0x5d6c('0x9c')][_0x5d6c('0x62')](_0xe4d979)[_0x5d6c('0x2b')](handleEntityNotFound(_0x5e11f2,null))[_0x5d6c('0x2b')](respondWithResult(_0x5e11f2,null))['catch'](handleError(_0x5e11f2,null));};exports[_0x5d6c('0xb8')]=function(_0x2d06fa,_0x50c269){return db[_0x5d6c('0x9c')][_0x5d6c('0xb8')](_0x2d06fa['body'],{})[_0x5d6c('0x2b')](respondWithResult(_0x50c269,0xc9))[_0x5d6c('0x36')](handleError(_0x50c269,null));};exports[_0x5d6c('0xb9')]=function(_0x1a5873,_0x2cadf4){if(_0x1a5873[_0x5d6c('0xba')]['id']){delete _0x1a5873[_0x5d6c('0xba')]['id'];}return db[_0x5d6c('0x9c')]['find']({'where':{'id':_0x1a5873[_0x5d6c('0xbb')]['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x2cadf4,null))[_0x5d6c('0x2b')](saveUpdates(_0x1a5873[_0x5d6c('0xba')],null))['then'](respondWithResult(_0x2cadf4,null))[_0x5d6c('0x36')](handleError(_0x2cadf4,null));};exports[_0x5d6c('0xbc')]=function(_0x495e4d,_0x3edc97){return db[_0x5d6c('0x9c')][_0x5d6c('0x62')]({'where':{'id':_0x495e4d[_0x5d6c('0xbb')]['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x3edc97,null))[_0x5d6c('0x2b')](removeEntity(_0x3edc97,null))[_0x5d6c('0x36')](handleError(_0x3edc97,null));};exports['describe']=function(_0xb2932a,_0x30c75a){return db[_0x5d6c('0x9c')][_0x5d6c('0xbd')]()[_0x5d6c('0x2b')](respondWithResult(_0x30c75a,null))[_0x5d6c('0x36')](handleError(_0x30c75a,null));};exports[_0x5d6c('0xbe')]=function(_0x1695d9,_0x27eb7e,_0x449ae4){return db['FaxMessage'][_0x5d6c('0x62')]({'where':{'id':_0x1695d9[_0x5d6c('0xbb')]['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x27eb7e,null))[_0x5d6c('0x2b')](function(_0x24de1e){if(_0x24de1e){return _0x24de1e[_0x5d6c('0xbe')](_0x1695d9[_0x5d6c('0xba')][_0x5d6c('0xbf')],_[_0x5d6c('0xc0')](_0x1695d9['body'],[_0x5d6c('0xbf'),'id'])||{});}})[_0x5d6c('0x2b')](respondWithResult(_0x27eb7e,null))[_0x5d6c('0x36')](handleError(_0x27eb7e,null));};exports[_0x5d6c('0xc1')]=function(_0x1e9de0,_0x1c8384,_0x33221b){var _0x4412e7={'raw':![],'where':{}};var _0x27668a={};var _0x1f0129={'count':0x0,'rows':[]};return db[_0x5d6c('0x9c')][_0x5d6c('0xc2')]({'where':{'id':_0x1e9de0[_0x5d6c('0xbb')]['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x1c8384,null))[_0x5d6c('0x2b')](function(_0x333d6e){if(_0x333d6e){_0x27668a[_0x5d6c('0x3d')]=_['keys'](db['FaxMessage'][_0x5d6c('0x39')]);_0x27668a[_0x5d6c('0x3e')]=_[_0x5d6c('0x3f')](_0x1e9de0[_0x5d6c('0x3e')]);_0x27668a[_0x5d6c('0x40')]=_[_0x5d6c('0x41')](_0x27668a[_0x5d6c('0x3d')],_0x27668a[_0x5d6c('0x3e')]);_0x4412e7['attributes']=_[_0x5d6c('0x41')](_0x27668a[_0x5d6c('0x3d')],qs[_0x5d6c('0x43')](_0x1e9de0[_0x5d6c('0x3e')][_0x5d6c('0x43')]));_0x4412e7[_0x5d6c('0x42')]=_0x4412e7[_0x5d6c('0x42')]['length']?_0x4412e7[_0x5d6c('0x42')]:_0x27668a[_0x5d6c('0x3d')];if(!_0x1e9de0[_0x5d6c('0x3e')]['hasOwnProperty'](_0x5d6c('0x46'))){_0x4412e7['limit']=qs[_0x5d6c('0x24')](_0x1e9de0[_0x5d6c('0x3e')][_0x5d6c('0x24')]);_0x4412e7['offset']=qs[_0x5d6c('0x26')](_0x1e9de0[_0x5d6c('0x3e')]['offset']);}_0x4412e7[_0x5d6c('0x47')]=qs[_0x5d6c('0x48')](_0x1e9de0[_0x5d6c('0x3e')][_0x5d6c('0x48')]);_0x4412e7['where']=qs['filters'](_[_0x5d6c('0xc3')](_0x1e9de0[_0x5d6c('0x3e')],_0x27668a[_0x5d6c('0x40')]));_0x4412e7[_0x5d6c('0x49')][_0x5d6c('0xb1')]=_0x333d6e['id'];if(_0x1e9de0['query'][_0x5d6c('0x86')]){_0x4412e7[_0x5d6c('0x49')]=_[_0x5d6c('0x9b')](_0x4412e7[_0x5d6c('0x49')],{'$or':_[_0x5d6c('0x38')](_0x4412e7[_0x5d6c('0x42')],function(_0xc0ae50){var _0x454bf8={};_0x454bf8[_0xc0ae50]={'$like':'%'+_0x1e9de0[_0x5d6c('0x3e')]['filter']+'%'};return _0x454bf8;})});}if(_0x1e9de0[_0x5d6c('0x3e')][_0x5d6c('0x7b')]){var _0x338091=_0x1e9de0[_0x5d6c('0x3e')][_0x5d6c('0x7b')]['split'](',');var _0x8863c7={};_0x8863c7[_0x338091[0x0]]={'$gte':moment(_0x338091[0x1])[_0x5d6c('0xc4')]('YYYY-MM-DD\x20HH:mm:ss')};_0x4412e7[_0x5d6c('0x49')]=_['merge'](_0x4412e7['where'],_0x8863c7);}_0x4412e7=_['merge']({},_0x4412e7,_0x1e9de0[_0x5d6c('0xb7')]);return db['FaxMessage']['count']({'where':_0x4412e7['where']})[_0x5d6c('0x2b')](function(_0x445e50){_0x1f0129[_0x5d6c('0x25')]=_0x445e50;if(_0x1e9de0[_0x5d6c('0x3e')]['includeAll']){_0x4412e7[_0x5d6c('0xb6')]=[{'all':!![]}];}return db[_0x5d6c('0xc5')][_0x5d6c('0xc6')](_0x4412e7);})[_0x5d6c('0x2b')](function(_0x155399){_0x1f0129[_0x5d6c('0xb4')]=_0x155399;return _0x1f0129;});}})[_0x5d6c('0x2b')](respondWithFilteredResult(_0x1c8384,_0x4412e7))['catch'](handleError(_0x1c8384,null));};exports[_0x5d6c('0xc7')]=function(_0x199189,_0x8bb727,_0x561375){return db[_0x5d6c('0x9c')][_0x5d6c('0x62')]({'where':{'id':_0x199189['params']['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x8bb727,null))[_0x5d6c('0x2b')](function(_0x349406){if(_0x349406){return _0x349406['setTags'](_0x199189['body'][_0x5d6c('0xbf')],_[_0x5d6c('0xc0')](_0x199189[_0x5d6c('0xba')],[_0x5d6c('0xbf'),'id'])||{})[_0x5d6c('0xc8')](function(){return db[_0x5d6c('0xc9')]['findAll']({'attributes':['id',_0x5d6c('0x2e'),'color'],'where':{'id':_0x199189[_0x5d6c('0xba')][_0x5d6c('0xbf')]}});})[_0x5d6c('0x2b')](function(_0x3f8a83){socket[_0x5d6c('0xca')](_0x5d6c('0xcb'),{'id':Number(_0x199189['params']['id']),'tags':_0x3f8a83||[]});return{'id':Number(_0x199189[_0x5d6c('0xbb')]['id']),'tags':_0x3f8a83||[]};});}})[_0x5d6c('0x2b')](respondWithResult(_0x8bb727,null))[_0x5d6c('0x36')](handleError(_0x8bb727,null));};exports[_0x5d6c('0xcc')]=function(_0x10da5f,_0x3b0508,_0x74a9ed){return db[_0x5d6c('0x9c')][_0x5d6c('0x62')]({'where':{'id':_0x10da5f[_0x5d6c('0xbb')]['id']}})[_0x5d6c('0x2b')](handleEntityNotFound(_0x3b0508,null))[_0x5d6c('0x2b')](function(_0x4b26bf){if(_0x4b26bf){return _0x4b26bf[_0x5d6c('0xcc')](_0x10da5f[_0x5d6c('0x3e')][_0x5d6c('0xbf')]);}})[_0x5d6c('0x2b')](respondWithStatusCode(_0x3b0508,null))[_0x5d6c('0x36')](handleError(_0x3b0508,null));};exports[_0x5d6c('0xcd')]=function(_0x330e6e,_0x1999ad){var _0x32f288=moment()[_0x5d6c('0xce')]()['toString']();var _0x33c3a4=path[_0x5d6c('0xcf')](config[_0x5d6c('0xd0')],'server','files',_0x5d6c('0xd1'));var _0x390e61=path[_0x5d6c('0xcf')](config[_0x5d6c('0xd0')],_0x5d6c('0xd2'),_0x5d6c('0xd3'),'attachments');var _0x2e8e70=path[_0x5d6c('0xcf')](_0x33c3a4,_0x32f288);var _0x265686=util[_0x5d6c('0xc4')](_0x5d6c('0xd4'),_0x330e6e[_0x5d6c('0xbb')]['id'],_0x32f288);var _0x496c6f=path[_0x5d6c('0xcf')](_0x33c3a4,_0x265686);var _0x5e860b=[];_0x5e860b[_0x5d6c('0xb2')]({'model':db[_0x5d6c('0xd5')],'as':_0x5d6c('0xd5'),'raw':!![]});var _0x211efa=[{'model':db[_0x5d6c('0xc5')],'as':_0x5d6c('0xd6'),'attributes':['id',_0x5d6c('0xba'),'createdAt'],'include':_0x5e860b}];return db[_0x5d6c('0x9c')][_0x5d6c('0x62')]({'where':{'id':_0x330e6e[_0x5d6c('0xbb')]['id']},'include':_0x211efa})[_0x5d6c('0x2b')](handleEntityNotFound(_0x1999ad,null))[_0x5d6c('0x2b')](function(_0x4f5451){if(_0x4f5451&&_0x4f5451[_0x5d6c('0xd6')]){var _0x21d7c7=_0x4f5451[_0x5d6c('0xd7')]({'plain':!![]});fs['mkdirSync'](_0x2e8e70);for(var _0x416d27=0x0;_0x416d27<_0x21d7c7['Messages'][_0x5d6c('0x44')];_0x416d27++){var _0x484dd5=_0x21d7c7[_0x5d6c('0xd6')][_0x416d27][_0x5d6c('0xd5')];if(_0x484dd5){var _0x319d70=path[_0x5d6c('0xcf')](_0x390e61,_0x484dd5['basename']);if(fs[_0x5d6c('0xd8')](_0x319d70)){fs['createReadStream'](_0x319d70)[_0x5d6c('0xd9')](fs['createWriteStream'](path['join'](_0x2e8e70,_0x484dd5[_0x5d6c('0xda')])));}}}return BPromise[_0x5d6c('0xdb')]()['then'](function(){return new BPromise(function(_0x40a9ba,_0x20485f){zipdir(_0x2e8e70,{'saveTo':_0x496c6f},function(_0x4460d7,_0x1e0aee){if(_0x4460d7)return _0x20485f(_0x4460d7);return _0x40a9ba(_0x1e0aee);});})[_0x5d6c('0x2b')](function(){return new BPromise(function(_0x1fd6ae,_0x2c6de2){rimraf(_0x2e8e70,function(_0x358708){if(_0x358708)_0x2c6de2(_0x358708);return _0x1fd6ae();});});})['then'](function(){return _0x1999ad[_0x5d6c('0xcd')](_0x496c6f,_0x265686,function(_0x4aadea){if(_0x4aadea){console[_0x5d6c('0xdc')]('err',_0x4aadea);}else{fs[_0x5d6c('0xdd')](_0x496c6f);}});});});}else{return _0x1999ad['sendStatus'](0xc8);}})[_0x5d6c('0x36')](handleError(_0x1999ad,null));};
\ No newline at end of file
index 9ec18c5..be63e07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e7a=['remove','getUsers','Users','map','findAll','then','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','exports','FaxInteraction','../../mysqldb','FaxMessage','setMaxListeners','save'];(function(_0x374226,_0x56ec5c){var _0xb2e1e8=function(_0x3a4412){while(--_0x3a4412){_0x374226['push'](_0x374226['shift']());}};_0xb2e1e8(++_0x56ec5c);}(_0x9e7a,0x163));var _0xa9e7=function(_0xdc3b5f,_0x12b2c8){_0xdc3b5f=_0xdc3b5f-0x0;var _0x7eddfb=_0x9e7a[_0xdc3b5f];return _0x7eddfb;};'use strict';var EventEmitter=require('events');var FaxInteraction=require('../../mysqldb')['db'][_0xa9e7('0x0')];var FaxMessage=require(_0xa9e7('0x1'))['db'][_0xa9e7('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xa9e7('0x3')](0x0);var events={'afterCreate':_0xa9e7('0x4'),'afterUpdate':'update','afterDestroy':_0xa9e7('0x5')};function emitEvent(_0x1dbf1f){return function(_0x244732,_0x5b7a4d,_0x348366){_0x244732[_0xa9e7('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x132875){_0x244732['setDataValue'](_0xa9e7('0x7'),_0x132875[_0xa9e7('0x8')](function(_0x25e896){return{'id':_0x25e896['id']};}));return FaxMessage[_0xa9e7('0x9')]({'where':{'FaxInteractionId':_0x244732['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa9e7('0xa')](function(_0xd2c639){_0x244732[_0xa9e7('0xb')](_0xa9e7('0xc'),_0xd2c639[_0xa9e7('0xd')]);FaxInteractionEvents[_0xa9e7('0xe')](_0x1dbf1f+':'+_0x244732['id'],_0x244732);FaxInteractionEvents[_0xa9e7('0xe')](_0x1dbf1f,_0x244732);_0x348366(null);})[_0xa9e7('0xf')](_0x348366(null));};}for(var e in events){if(events[_0xa9e7('0x10')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0xa9e7('0x11')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x8108=['exports','events','../../mysqldb','FaxInteraction','setMaxListeners','save','update','remove','getUsers','then','setDataValue','map','unreadMessages','length','catch','hook'];(function(_0x1d7671,_0x431817){var _0x12b8cd=function(_0x2a5a13){while(--_0x2a5a13){_0x1d7671['push'](_0x1d7671['shift']());}};_0x12b8cd(++_0x431817);}(_0x8108,0xf1));var _0x8810=function(_0x4489f2,_0x1f9128){_0x4489f2=_0x4489f2-0x0;var _0x5cc527=_0x8108[_0x4489f2];return _0x5cc527;};'use strict';var EventEmitter=require(_0x8810('0x0'));var FaxInteraction=require(_0x8810('0x1'))['db'][_0x8810('0x2')];var FaxMessage=require(_0x8810('0x1'))['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x8810('0x3')](0x0);var events={'afterCreate':_0x8810('0x4'),'afterUpdate':_0x8810('0x5'),'afterDestroy':_0x8810('0x6')};function emitEvent(_0x57d16a){return function(_0x28431f,_0x40cd93,_0x345b04){_0x28431f[_0x8810('0x7')]({'attributes':['id'],'raw':!![]})[_0x8810('0x8')](function(_0x1eac0d){_0x28431f[_0x8810('0x9')]('Users',_0x1eac0d[_0x8810('0xa')](function(_0x1b083a){return{'id':_0x1b083a['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x28431f['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8810('0x8')](function(_0x3ec6f1){_0x28431f['setDataValue'](_0x8810('0xb'),_0x3ec6f1[_0x8810('0xc')]);FaxInteractionEvents['emit'](_0x57d16a+':'+_0x28431f['id'],_0x28431f);FaxInteractionEvents['emit'](_0x57d16a,_0x28431f);_0x345b04(null);})[_0x8810('0xd')](_0x345b04(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction[_0x8810('0xe')](e,emitEvent(event));}}module[_0x8810('0xf')]=FaxInteractionEvents;
\ No newline at end of file
index dae0d5e..02d77ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbac6=['lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','exports','FaxInteraction','fax_interactions','closedAt','format'];(function(_0x1bbb73,_0x4e946b){var _0x3a85df=function(_0x5726e9){while(--_0x5726e9){_0x1bbb73['push'](_0x1bbb73['shift']());}};_0x3a85df(++_0x4e946b);}(_0xbac6,0x1ec));var _0x6bac=function(_0x25e2a5,_0x2d7270){_0x25e2a5=_0x25e2a5-0x0;var _0x429243=_0xbac6[_0x25e2a5];return _0x429243;};'use strict';var _=require(_0x6bac('0x0'));var util=require(_0x6bac('0x1'));var logger=require(_0x6bac('0x2'))('api');var moment=require(_0x6bac('0x3'));var BPromise=require('bluebird');var rp=require(_0x6bac('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6bac('0x5'));var config=require(_0x6bac('0x6'));var attributes=require('./faxInteraction.attributes');module[_0x6bac('0x7')]=function(_0x59da37,_0x178897){return _0x59da37['define'](_0x6bac('0x8'),attributes,{'tableName':_0x6bac('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4add39,_0x4ba90b,_0x4c2aeb){if(_0x4add39['changed']('closed')){_0x4add39[_0x6bac('0xa')]=moment()[_0x6bac('0xb')]('YYYY-MM-DD\x20HH:mm:ss');}_0x4c2aeb(null,_0x4add39);}}});};
\ No newline at end of file
+var _0x42f2=['define','FaxInteraction','fax_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x42f2,0x1f4));var _0x242f=function(_0x1fd4d7,_0x2feafd){_0x1fd4d7=_0x1fd4d7-0x0;var _0x7efe8a=_0x42f2[_0x1fd4d7];return _0x7efe8a;};'use strict';var _=require('lodash');var util=require(_0x242f('0x0'));var logger=require(_0x242f('0x1'))(_0x242f('0x2'));var moment=require(_0x242f('0x3'));var BPromise=require('bluebird');var rp=require(_0x242f('0x4'));var fs=require('fs');var path=require(_0x242f('0x5'));var rimraf=require(_0x242f('0x6'));var config=require(_0x242f('0x7'));var attributes=require(_0x242f('0x8'));module[_0x242f('0x9')]=function(_0x5c3659,_0x1dc55c){return _0x5c3659[_0x242f('0xa')](_0x242f('0xb'),attributes,{'tableName':_0x242f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x56b70a,_0x2a86b0,_0x1a2370){if(_0x56b70a['changed'](_0x242f('0xd'))){_0x56b70a[_0x242f('0xe')]=moment()[_0x242f('0xf')](_0x242f('0x10'));}_0x1a2370(null,_0x56b70a);}}});};
\ No newline at end of file
index 85878c5..a7942c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3597=['attributes','limit','where','then','ids','omit','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','request','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','raw','options'];(function(_0xc80702,_0x18ef50){var _0x4c4c76=function(_0x24ee31){while(--_0x24ee31){_0xc80702['push'](_0xc80702['shift']());}};_0x4c4c76(++_0x18ef50);}(_0x3597,0xab));var _0x7359=function(_0xec2037,_0x2e340a){_0xec2037=_0xec2037-0x0;var _0x24b803=_0x3597[_0xec2037];return _0x24b803;};'use strict';var _=require(_0x7359('0x0'));var util=require('util');var moment=require(_0x7359('0x1'));var BPromise=require(_0x7359('0x2'));var rs=require(_0x7359('0x3'));var fs=require('fs');var Redis=require(_0x7359('0x4'));var db=require(_0x7359('0x5'))['db'];var utils=require(_0x7359('0x6'));var logger=require(_0x7359('0x7'))('rpc');var config=require(_0x7359('0x8'));var jayson=require(_0x7359('0x9'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x7359('0xa')](config[_0x7359('0xb')],{'host':_0x7359('0xc'),'port':0x18eb});var socket=require(_0x7359('0xd'))(new Redis(config[_0x7359('0xb')]));require(_0x7359('0xe'))[_0x7359('0xf')](socket);function respondWithRpcPromise(_0x36a1dc,_0x5fc397,_0x36eaea){return new BPromise(function(_0x462d16,_0x4eeb4b){return client[_0x7359('0x10')](_0x36a1dc,_0x36eaea)['then'](function(_0x17b262){logger[_0x7359('0x11')](_0x7359('0x12'),_0x5fc397,'request\x20sent');logger[_0x7359('0x13')](_0x7359('0x14'),_0x5fc397,_0x7359('0x15'),JSON[_0x7359('0x16')](_0x17b262));if(_0x17b262[_0x7359('0x17')]){if(_0x17b262[_0x7359('0x17')][_0x7359('0x18')]===0x1f4){logger[_0x7359('0x17')](_0x7359('0x12'),_0x5fc397,_0x17b262[_0x7359('0x17')]['message']);return _0x4eeb4b(_0x17b262['error'][_0x7359('0x19')]);}logger[_0x7359('0x17')](_0x7359('0x12'),_0x5fc397,_0x17b262[_0x7359('0x17')][_0x7359('0x19')]);return _0x462d16(_0x17b262[_0x7359('0x17')][_0x7359('0x19')]);}else{logger['info'](_0x7359('0x12'),_0x5fc397,'request\x20sent');_0x462d16(_0x17b262[_0x7359('0x1a')][_0x7359('0x19')]);}})[_0x7359('0x1b')](function(_0x4832f2){logger[_0x7359('0x17')](_0x7359('0x12'),_0x5fc397,_0x4832f2);_0x4eeb4b(_0x4832f2);});});}exports[_0x7359('0x1c')]=function(_0x38e871){var _0x4d5fc0=this;return new Promise(function(_0x4232d4,_0x5c0548){return db[_0x7359('0x1d')][_0x7359('0x1e')](_0x38e871[_0x7359('0x1f')],{'raw':_0x38e871['options']?_0x38e871['options'][_0x7359('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x38e871[_0x7359('0x21')]?_0x38e871[_0x7359('0x21')]['where']||null:null,'attributes':_0x38e871[_0x7359('0x21')]?_0x38e871['options'][_0x7359('0x22')]||null:null,'limit':_0x38e871[_0x7359('0x21')]?_0x38e871[_0x7359('0x21')][_0x7359('0x23')]||null:null})['then'](function(_0x3c90cd){logger[_0x7359('0x11')](_0x7359('0x1c'),_0x38e871);logger['debug'](_0x7359('0x1c'),_0x38e871,JSON[_0x7359('0x16')](_0x3c90cd));_0x4232d4(_0x3c90cd);})[_0x7359('0x1b')](function(_0x37dd42){logger[_0x7359('0x17')](_0x7359('0x1c'),_0x37dd42[_0x7359('0x19')],_0x38e871);_0x5c0548(_0x4d5fc0['error'](0x1f4,_0x37dd42[_0x7359('0x19')]));});});};exports['AddTagsToFaxInteraction']=function(_0x2ba7e3){return new Promise(function(_0x1a8eaa,_0xdede16){return db['FaxInteraction']['find']({'where':_0x2ba7e3[_0x7359('0x21')]?_0x2ba7e3[_0x7359('0x21')][_0x7359('0x24')]||null:null})[_0x7359('0x25')](function(_0x550aee){if(_0x550aee){return _0x550aee['addTags'](_0x2ba7e3[_0x7359('0x1f')][_0x7359('0x26')],_[_0x7359('0x27')](_0x2ba7e3[_0x7359('0x1f')],['ids','id'])||{});}})['spread'](function(_0x1b25f1){logger[_0x7359('0x11')](_0x7359('0x28'),_0x2ba7e3);logger[_0x7359('0x13')]('AddTags',_0x2ba7e3,JSON[_0x7359('0x16')](_0x1b25f1));_0x1a8eaa(_0x1b25f1);})[_0x7359('0x1b')](function(_0x298b14){logger[_0x7359('0x17')]('AddTags',_0x298b14[_0x7359('0x19')],_0x2ba7e3);_0xdede16(_this['error'](0x1f4,_0x298b14[_0x7359('0x19')]));});});};
\ No newline at end of file
+var _0x86de=['catch','UpdateFaxInteraction','update','body','options','raw','where','limit','AddTagsToFaxInteraction','FaxInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','request','then','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x563fc0,_0x556a6a){var _0x39b87a=function(_0x50336e){while(--_0x50336e){_0x563fc0['push'](_0x563fc0['shift']());}};_0x39b87a(++_0x556a6a);}(_0x86de,0x64));var _0xe86d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x86de[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xe86d('0x0'));var util=require(_0xe86d('0x1'));var moment=require('moment');var BPromise=require(_0xe86d('0x2'));var rs=require(_0xe86d('0x3'));var fs=require('fs');var Redis=require(_0xe86d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe86d('0x5'));var logger=require('../../config/logger')(_0xe86d('0x6'));var config=require('../../config/environment');var jayson=require(_0xe86d('0x7'));var client=jayson[_0xe86d('0x8')]['http']({'port':0x232a});config['redis']=_[_0xe86d('0x9')](config[_0xe86d('0xa')],{'host':_0xe86d('0xb'),'port':0x18eb});var socket=require(_0xe86d('0xc'))(new Redis(config[_0xe86d('0xa')]));require(_0xe86d('0xd'))[_0xe86d('0xe')](socket);function respondWithRpcPromise(_0x3f3ffe,_0x38dea9,_0x578938){return new BPromise(function(_0x2edbdd,_0x553bc6){return client[_0xe86d('0xf')](_0x3f3ffe,_0x578938)[_0xe86d('0x10')](function(_0x30a5ad){logger['info'](_0xe86d('0x11'),_0x38dea9,_0xe86d('0x12'));logger[_0xe86d('0x13')](_0xe86d('0x14'),_0x38dea9,_0xe86d('0x12'),JSON[_0xe86d('0x15')](_0x30a5ad));if(_0x30a5ad[_0xe86d('0x16')]){if(_0x30a5ad[_0xe86d('0x16')][_0xe86d('0x17')]===0x1f4){logger[_0xe86d('0x16')](_0xe86d('0x11'),_0x38dea9,_0x30a5ad[_0xe86d('0x16')]['message']);return _0x553bc6(_0x30a5ad['error']['message']);}logger[_0xe86d('0x16')](_0xe86d('0x11'),_0x38dea9,_0x30a5ad[_0xe86d('0x16')][_0xe86d('0x18')]);return _0x2edbdd(_0x30a5ad[_0xe86d('0x16')]['message']);}else{logger[_0xe86d('0x19')](_0xe86d('0x11'),_0x38dea9,_0xe86d('0x12'));_0x2edbdd(_0x30a5ad['result'][_0xe86d('0x18')]);}})[_0xe86d('0x1a')](function(_0x2818b9){logger[_0xe86d('0x16')](_0xe86d('0x11'),_0x38dea9,_0x2818b9);_0x553bc6(_0x2818b9);});});}exports[_0xe86d('0x1b')]=function(_0x4a29ad){var _0x58c90e=this;return new Promise(function(_0x3dcf3c,_0x157bad){return db['FaxInteraction'][_0xe86d('0x1c')](_0x4a29ad[_0xe86d('0x1d')],{'raw':_0x4a29ad[_0xe86d('0x1e')]?_0x4a29ad['options'][_0xe86d('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a29ad['options']?_0x4a29ad[_0xe86d('0x1e')][_0xe86d('0x20')]||null:null,'attributes':_0x4a29ad[_0xe86d('0x1e')]?_0x4a29ad[_0xe86d('0x1e')]['attributes']||null:null,'limit':_0x4a29ad['options']?_0x4a29ad['options'][_0xe86d('0x21')]||null:null})[_0xe86d('0x10')](function(_0x28f709){logger['info']('UpdateFaxInteraction',_0x4a29ad);logger[_0xe86d('0x13')](_0xe86d('0x1b'),_0x4a29ad,JSON[_0xe86d('0x15')](_0x28f709));_0x3dcf3c(_0x28f709);})[_0xe86d('0x1a')](function(_0x46ca37){logger[_0xe86d('0x16')](_0xe86d('0x1b'),_0x46ca37[_0xe86d('0x18')],_0x4a29ad);_0x157bad(_0x58c90e[_0xe86d('0x16')](0x1f4,_0x46ca37[_0xe86d('0x18')]));});});};exports[_0xe86d('0x22')]=function(_0x51e480){return new Promise(function(_0x5a93e1,_0x40199c){return db[_0xe86d('0x23')][_0xe86d('0x24')]({'where':_0x51e480[_0xe86d('0x1e')]?_0x51e480[_0xe86d('0x1e')][_0xe86d('0x20')]||null:null})[_0xe86d('0x10')](function(_0x146946){if(_0x146946){return _0x146946[_0xe86d('0x25')](_0x51e480[_0xe86d('0x1d')][_0xe86d('0x26')],_[_0xe86d('0x27')](_0x51e480[_0xe86d('0x1d')],[_0xe86d('0x26'),'id'])||{});}})[_0xe86d('0x28')](function(_0x121326){logger[_0xe86d('0x19')]('AddTags',_0x51e480);logger[_0xe86d('0x13')]('AddTags',_0x51e480,JSON[_0xe86d('0x15')](_0x121326));_0x5a93e1(_0x121326);})[_0xe86d('0x1a')](function(_0x54ac6c){logger[_0xe86d('0x16')](_0xe86d('0x29'),_0x54ac6c[_0xe86d('0x18')],_0x51e480);_0x40199c(_this['error'](0x1f4,_0x54ac6c[_0xe86d('0x18')]));});});};
\ No newline at end of file
index 0f8175d..122f2b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0572=['update','emit','removeListener','register','length','faxInteraction:','save','remove'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x0572,0x1ce));var _0x2057=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x0572[_0x4a9fb1];return _0x348672;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=[_0x2057('0x0'),_0x2057('0x1'),_0x2057('0x2')];function createListener(_0x2af489,_0x1e49e7){return function(_0xfe2fc7){_0x1e49e7[_0x2057('0x3')](_0x2af489,_0xfe2fc7);};}function removeListener(_0x52c65d,_0x17aadd){return function(){FaxInteractionEvents[_0x2057('0x4')](_0x52c65d,_0x17aadd);};}exports[_0x2057('0x5')]=function(_0x3b276f){for(var _0x40cd46=0x0,_0xad4df0=events[_0x2057('0x6')];_0x40cd46<_0xad4df0;_0x40cd46++){var _0x3ed0a7=events[_0x40cd46];var _0x49be8a=createListener(_0x2057('0x7')+_0x3ed0a7,_0x3b276f);FaxInteractionEvents['on'](_0x3ed0a7,_0x49be8a);}};
\ No newline at end of file
+var _0xb9e5=['save','remove','removeListener','register','length','faxInteraction:'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xb9e5,0x186));var _0x5b9e=function(_0x5499d9,_0x1abd4f){_0x5499d9=_0x5499d9-0x0;var _0x52054c=_0xb9e5[_0x5499d9];return _0x52054c;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=[_0x5b9e('0x0'),_0x5b9e('0x1'),'update'];function createListener(_0x53a746,_0xfb2502){return function(_0xcfa7d4){_0xfb2502['emit'](_0x53a746,_0xcfa7d4);};}function removeListener(_0x3da998,_0x1bb4db){return function(){FaxInteractionEvents[_0x5b9e('0x2')](_0x3da998,_0x1bb4db);};}exports[_0x5b9e('0x3')]=function(_0x494cbe){for(var _0x13a68f=0x0,_0x2023b5=events[_0x5b9e('0x4')];_0x13a68f<_0x2023b5;_0x13a68f++){var _0x10ec54=events[_0x13a68f];var _0x24495c=createListener(_0x5b9e('0x5')+_0x10ec54,_0x494cbe);FaxInteractionEvents['on'](_0x10ec54,_0x24495c);}};
\ No newline at end of file
index 9b9c788..f0c04ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe52=['delete','destroy','removeTags','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','/:id/download','download','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','update'];(function(_0x57fa0b,_0x5df1ce){var _0x18669f=function(_0xb09fcc){while(--_0xb09fcc){_0x57fa0b['push'](_0x57fa0b['shift']());}};_0x18669f(++_0x5df1ce);}(_0xbe52,0x164));var _0x2be5=function(_0x29006f,_0x5bd855){_0x29006f=_0x29006f-0x0;var _0x424bae=_0xbe52[_0x29006f];return _0x424bae;};'use strict';var multer=require(_0x2be5('0x0'));var util=require(_0x2be5('0x1'));var path=require(_0x2be5('0x2'));var timeout=require(_0x2be5('0x3'));var express=require(_0x2be5('0x4'));var router=express['Router']();var fs_extra=require(_0x2be5('0x5'));var auth=require(_0x2be5('0x6'));var interaction=require(_0x2be5('0x7'));var config=require(_0x2be5('0x8'));var controller=require(_0x2be5('0x9'));router[_0x2be5('0xa')]('/',auth[_0x2be5('0xb')](),controller[_0x2be5('0xc')]);router[_0x2be5('0xa')](_0x2be5('0xd'),auth[_0x2be5('0xb')](),controller[_0x2be5('0xe')]);router['get'](_0x2be5('0xf'),auth[_0x2be5('0xb')](),controller[_0x2be5('0x10')]);router['get'](_0x2be5('0x11'),auth['isAuthenticated'](),controller['getMessages']);router[_0x2be5('0xa')](_0x2be5('0x12'),auth[_0x2be5('0xb')](),controller[_0x2be5('0x13')]);router['post']('/',auth[_0x2be5('0xb')](),controller[_0x2be5('0x14')]);router['post']('/:id/messages',auth[_0x2be5('0xb')](),controller[_0x2be5('0x15')]);router['post'](_0x2be5('0x16'),auth[_0x2be5('0xb')](),interaction[_0x2be5('0x17')](_0x2be5('0x18'),_0x2be5('0x19')),controller[_0x2be5('0x1a')]);router['put']('/:id',auth[_0x2be5('0xb')](),interaction['tracked'](_0x2be5('0x18'),'faxinteraction:update'),controller[_0x2be5('0x1b')]);router[_0x2be5('0x1c')](_0x2be5('0xf'),auth['isAuthenticated'](),interaction[_0x2be5('0x17')](_0x2be5('0x18'),'faxinteraction:destroy'),controller[_0x2be5('0x1d')]);router[_0x2be5('0x1c')](_0x2be5('0x16'),auth[_0x2be5('0xb')](),controller[_0x2be5('0x1e')]);module[_0x2be5('0x1f')]=router;
\ No newline at end of file
+var _0x7e2b=['update','delete','removeTags','multer','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','index','/describe','show','post','create','/:id/messages','/:id/tags','fax','faxinteraction:addtags','addTags','/:id','tracked'];(function(_0x330141,_0x1dd290){var _0x1b68a2=function(_0x4e7f3c){while(--_0x4e7f3c){_0x330141['push'](_0x330141['shift']());}};_0x1b68a2(++_0x1dd290);}(_0x7e2b,0x67));var _0xb7e2=function(_0x591080,_0x117e1e){_0x591080=_0x591080-0x0;var _0x666f7e=_0x7e2b[_0x591080];return _0x666f7e;};'use strict';var multer=require(_0xb7e2('0x0'));var util=require(_0xb7e2('0x1'));var path=require(_0xb7e2('0x2'));var timeout=require(_0xb7e2('0x3'));var express=require(_0xb7e2('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb7e2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb7e2('0x6'));var controller=require(_0xb7e2('0x7'));router[_0xb7e2('0x8')]('/',auth[_0xb7e2('0x9')](),controller[_0xb7e2('0xa')]);router['get'](_0xb7e2('0xb'),auth[_0xb7e2('0x9')](),controller['describe']);router[_0xb7e2('0x8')]('/:id',auth[_0xb7e2('0x9')](),controller[_0xb7e2('0xc')]);router['get']('/:id/messages',auth['isAuthenticated'](),controller['getMessages']);router[_0xb7e2('0x8')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0xb7e2('0xd')]('/',auth['isAuthenticated'](),controller[_0xb7e2('0xe')]);router[_0xb7e2('0xd')](_0xb7e2('0xf'),auth['isAuthenticated'](),controller['addMessage']);router[_0xb7e2('0xd')](_0xb7e2('0x10'),auth[_0xb7e2('0x9')](),interaction['tracked'](_0xb7e2('0x11'),_0xb7e2('0x12')),controller[_0xb7e2('0x13')]);router['put'](_0xb7e2('0x14'),auth[_0xb7e2('0x9')](),interaction[_0xb7e2('0x15')]('fax','faxinteraction:update'),controller[_0xb7e2('0x16')]);router['delete'](_0xb7e2('0x14'),auth[_0xb7e2('0x9')](),interaction['tracked']('fax','faxinteraction:destroy'),controller['destroy']);router[_0xb7e2('0x17')](_0xb7e2('0x10'),auth[_0xb7e2('0x9')](),controller[_0xb7e2('0x18')]);module['exports']=router;
\ No newline at end of file
index 01568c3..c8395b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc576=['sequelize','exports','TEXT','medium','BOOLEAN','out','DATE'];(function(_0x5cc483,_0x33483a){var _0x9eea0=function(_0x1f296f){while(--_0x1f296f){_0x5cc483['push'](_0x5cc483['shift']());}};_0x9eea0(++_0x33483a);}(_0xc576,0x1ea));var _0x6c57=function(_0x15c5b8,_0x3b670f){_0x15c5b8=_0x15c5b8-0x0;var _0xd45fe6=_0xc576[_0x15c5b8];return _0xd45fe6;};'use strict';var Sequelize=require(_0x6c57('0x0'));module[_0x6c57('0x1')]={'body':{'type':Sequelize[_0x6c57('0x2')](_0x6c57('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x6c57('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x6c57('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x6c57('0x6')]}};
\ No newline at end of file
+var _0x1d5b=['TEXT','BOOLEAN','out','DATE','sequelize','exports'];(function(_0x57fa33,_0x2b8222){var _0x12e724=function(_0x481a33){while(--_0x481a33){_0x57fa33['push'](_0x57fa33['shift']());}};_0x12e724(++_0x2b8222);}(_0x1d5b,0x13c));var _0xb1d5=function(_0x2d4ec2,_0x13e709){_0x2d4ec2=_0x2d4ec2-0x0;var _0x372ffc=_0x1d5b[_0x2d4ec2];return _0x372ffc;};'use strict';var Sequelize=require(_0xb1d5('0x0'));module[_0xb1d5('0x1')]={'body':{'type':Sequelize[_0xb1d5('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xb1d5('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xb1d5('0x4')),'defaultValue':_0xb1d5('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xb1d5('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0xb1d5('0x5')]}};
\ No newline at end of file
index dd20bfa..5ae17f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cdf=['catch','params','include','find','body','describe','fax-interactions','accept','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','FaxInteractionId','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','channel','motionChannel','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SIP/%s','event','rejectmessage','CmContact','findOne','isNil','Attachment','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','AttachmentId','join','root','server','files','attachments','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','jayson/promise','client','http','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','update','destroy','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','pick','where','merge','filter','options','rows'];(function(_0x40c623,_0x5f45b7){var _0x982e14=function(_0x49dcef){while(--_0x49dcef){_0x40c623['push'](_0x40c623['shift']());}};_0x982e14(++_0x5f45b7);}(_0x9cdf,0x1e5));var _0xf9cd=function(_0x51a041,_0x2b9325){_0x51a041=_0x51a041-0x0;var _0x27984d=_0x9cdf[_0x51a041];return _0x27984d;};'use strict';var emlformat=require(_0xf9cd('0x0'));var rimraf=require(_0xf9cd('0x1'));var zipdir=require(_0xf9cd('0x2'));var jsonpatch=require(_0xf9cd('0x3'));var rp=require(_0xf9cd('0x4'));var moment=require(_0xf9cd('0x5'));var BPromise=require(_0xf9cd('0x6'));var Mustache=require(_0xf9cd('0x7'));var util=require(_0xf9cd('0x8'));var path=require('path');var sox=require(_0xf9cd('0x9'));var csv=require(_0xf9cd('0xa'));var ejs=require(_0xf9cd('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf9cd('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf9cd('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf9cd('0xe'));var Papa=require('papaparse');var Redis=require(_0xf9cd('0xf'));var authService=require(_0xf9cd('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xf9cd('0x11'));var hardwareService=require(_0xf9cd('0x12'));var logger=require(_0xf9cd('0x13'))('api');var utils=require(_0xf9cd('0x14'));var config=require(_0xf9cd('0x15'));var licenseUtil=require(_0xf9cd('0x16'));var db=require(_0xf9cd('0x17'))['db'];config[_0xf9cd('0x18')]=_[_0xf9cd('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf9cd('0x1a'))(new Redis(config[_0xf9cd('0x18')]));require('./faxMessage.socket')['register'](socket);var jayson=require(_0xf9cd('0x1b'));var client=jayson[_0xf9cd('0x1c')]['http']({'port':0x232c});var client9002=jayson[_0xf9cd('0x1c')][_0xf9cd('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x3b887a,_0x4c57dc,_0x143e55,_0x3952af){return new BPromise(function(_0x520c8d,_0x1a0b65){var _0x4b59ec=_0x3952af||client;return _0x4b59ec['request'](_0x3b887a,_0x143e55)[_0xf9cd('0x1e')](function(_0x53724d){logger[_0xf9cd('0x1f')](_0xf9cd('0x20'),_0x4c57dc,_0xf9cd('0x21'));logger[_0xf9cd('0x22')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x4c57dc,'request\x20sent',JSON[_0xf9cd('0x23')](_0x53724d));if(_0x53724d[_0xf9cd('0x24')]){if(_0x53724d[_0xf9cd('0x24')][_0xf9cd('0x25')]===0x1f4){logger['error'](_0xf9cd('0x20'),_0x4c57dc,_0x53724d[_0xf9cd('0x24')]['message']);return _0x1a0b65(_0x53724d[_0xf9cd('0x24')][_0xf9cd('0x26')]);}logger['error']('FaxMessage,\x20%s,\x20%s',_0x4c57dc,_0x53724d['error'][_0xf9cd('0x26')]);return _0x520c8d(_0x53724d[_0xf9cd('0x24')][_0xf9cd('0x26')]);}else{logger[_0xf9cd('0x1f')](_0xf9cd('0x20'),_0x4c57dc,'request\x20sent');_0x520c8d(_0x53724d[_0xf9cd('0x27')][_0xf9cd('0x26')]);}})['catch'](function(_0x58a28c){logger[_0xf9cd('0x24')](_0xf9cd('0x20'),_0x4c57dc,_0x58a28c);_0x1a0b65(_0x58a28c);});});}function respondWithStatusCode(_0x8fdb21,_0x48c60e){_0x48c60e=_0x48c60e||0xcc;return function(_0x449c43){if(_0x449c43){return _0x8fdb21[_0xf9cd('0x28')](_0x48c60e);}return _0x8fdb21['status'](_0x48c60e)[_0xf9cd('0x29')]();};}function respondWithResult(_0x517a71,_0x9c2df3){_0x9c2df3=_0x9c2df3||0xc8;return function(_0x1ea6fa){if(_0x1ea6fa){return _0x517a71[_0xf9cd('0x2a')](_0x9c2df3)[_0xf9cd('0x2b')](_0x1ea6fa);}};}function respondWithFilteredResult(_0x1f99d9,_0x38e32e){return function(_0x3463a6){if(_0x3463a6){var _0x198428=typeof _0x38e32e['offset']==='undefined'&&typeof _0x38e32e[_0xf9cd('0x2c')]===_0xf9cd('0x2d');var _0x7672c=_0x3463a6[_0xf9cd('0x2e')];var _0x5bd779=_0x198428?0x0:_0x38e32e[_0xf9cd('0x2f')];var _0x3f29c2=_0x198428?_0x3463a6[_0xf9cd('0x2e')]:_0x38e32e['offset']+_0x38e32e[_0xf9cd('0x2c')];var _0x16fde0;if(_0x3f29c2>=_0x7672c){_0x3f29c2=_0x7672c;_0x16fde0=0xc8;}else{_0x16fde0=0xce;}_0x1f99d9[_0xf9cd('0x2a')](_0x16fde0);return _0x1f99d9[_0xf9cd('0x30')](_0xf9cd('0x31'),_0x5bd779+'-'+_0x3f29c2+'/'+_0x7672c)['json'](_0x3463a6);}return null;};}function patchUpdates(_0x307462){return function(_0x2386d9){try{jsonpatch[_0xf9cd('0x32')](_0x2386d9,_0x307462,!![]);}catch(_0x291a4c){return BPromise[_0xf9cd('0x33')](_0x291a4c);}return _0x2386d9['save']();};}function saveUpdates(_0x2c08ff,_0xeabfd0){return function(_0x500ce5){if(_0x500ce5){return _0x500ce5[_0xf9cd('0x34')](_0x2c08ff)['then'](function(_0x3160f7){return _0x3160f7;});}return null;};}function removeEntity(_0x1a2077,_0x26221f){return function(_0x59ca56){if(_0x59ca56){return _0x59ca56[_0xf9cd('0x35')]()['then'](function(){_0x1a2077[_0xf9cd('0x2a')](0xcc)[_0xf9cd('0x29')]();});}};}function handleEntityNotFound(_0x2245df,_0x3716e8){return function(_0x2c49a2){if(!_0x2c49a2){_0x2245df[_0xf9cd('0x28')](0x194);}return _0x2c49a2;};}function handleError(_0x27ef8a,_0xc95ab5){_0xc95ab5=_0xc95ab5||0x1f4;return function(_0x127c7b){logger['error'](_0x127c7b[_0xf9cd('0x36')]);if(_0x127c7b[_0xf9cd('0x37')]){delete _0x127c7b['name'];}_0x27ef8a['status'](_0xc95ab5)[_0xf9cd('0x38')](_0x127c7b);};}exports[_0xf9cd('0x39')]=function(_0x153747,_0x4a2525){var _0x3ac842={},_0x8f4476={},_0x4d87ad={'count':0x0,'rows':[]};var _0x203059=_[_0xf9cd('0x3a')](db[_0xf9cd('0x3b')][_0xf9cd('0x3c')],function(_0x2878d9){return{'name':_0x2878d9[_0xf9cd('0x3d')],'type':_0x2878d9[_0xf9cd('0x3e')][_0xf9cd('0x3f')]};});_0x8f4476[_0xf9cd('0x40')]=_[_0xf9cd('0x3a')](_0x203059,_0xf9cd('0x37'));_0x8f4476['query']=_[_0xf9cd('0x41')](_0x153747[_0xf9cd('0x42')]);_0x8f4476[_0xf9cd('0x43')]=_['intersection'](_0x8f4476['model'],_0x8f4476[_0xf9cd('0x42')]);_0x3ac842['attributes']=_[_0xf9cd('0x44')](_0x8f4476[_0xf9cd('0x40')],qs[_0xf9cd('0x45')](_0x153747[_0xf9cd('0x42')][_0xf9cd('0x45')]));_0x3ac842['attributes']=_0x3ac842[_0xf9cd('0x46')]['length']?_0x3ac842[_0xf9cd('0x46')]:_0x8f4476[_0xf9cd('0x40')];if(!_0x153747[_0xf9cd('0x42')][_0xf9cd('0x47')]('nolimit')){_0x3ac842[_0xf9cd('0x2c')]=qs[_0xf9cd('0x2c')](_0x153747['query'][_0xf9cd('0x2c')]);_0x3ac842['offset']=qs[_0xf9cd('0x2f')](_0x153747['query'][_0xf9cd('0x2f')]);}_0x3ac842[_0xf9cd('0x48')]=qs['sort'](_0x153747[_0xf9cd('0x42')]['sort']);_0x3ac842['where']=qs[_0xf9cd('0x43')](_[_0xf9cd('0x49')](_0x153747[_0xf9cd('0x42')],_0x8f4476[_0xf9cd('0x43')]),_0x203059);if(_0x153747[_0xf9cd('0x42')]['filter']){_0x3ac842[_0xf9cd('0x4a')]=_[_0xf9cd('0x4b')](_0x3ac842[_0xf9cd('0x4a')],{'$or':_['map'](_0x203059,function(_0x4418be){if(_0x4418be[_0xf9cd('0x3e')]!=='VIRTUAL'){var _0x511b86={};_0x511b86[_0x4418be[_0xf9cd('0x37')]]={'$like':'%'+_0x153747[_0xf9cd('0x42')][_0xf9cd('0x4c')]+'%'};return _0x511b86;}})});}_0x3ac842=_[_0xf9cd('0x4b')]({},_0x3ac842,_0x153747[_0xf9cd('0x4d')]);var _0x78023={'where':_0x3ac842[_0xf9cd('0x4a')]};return db['FaxMessage'][_0xf9cd('0x2e')](_0x78023)['then'](function(_0x2e686c){_0x4d87ad[_0xf9cd('0x2e')]=_0x2e686c;if(_0x153747['query']['includeAll']){_0x3ac842['include']=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x3ac842);})[_0xf9cd('0x1e')](function(_0x5ec3f0){_0x4d87ad[_0xf9cd('0x4e')]=_0x5ec3f0;return _0x4d87ad;})[_0xf9cd('0x1e')](respondWithFilteredResult(_0x4a2525,_0x3ac842))[_0xf9cd('0x4f')](handleError(_0x4a2525,null));};exports['show']=function(_0x430988,_0x3ce665){var _0x389745={'raw':!![],'where':{'id':_0x430988[_0xf9cd('0x50')]['id']}},_0x54e2b9={};_0x54e2b9['model']=_[_0xf9cd('0x41')](db['FaxMessage']['rawAttributes']);_0x54e2b9['query']=_[_0xf9cd('0x41')](_0x430988[_0xf9cd('0x42')]);_0x54e2b9[_0xf9cd('0x43')]=_[_0xf9cd('0x44')](_0x54e2b9[_0xf9cd('0x40')],_0x54e2b9['query']);_0x389745[_0xf9cd('0x46')]=_[_0xf9cd('0x44')](_0x54e2b9[_0xf9cd('0x40')],qs['fields'](_0x430988[_0xf9cd('0x42')]['fields']));_0x389745[_0xf9cd('0x46')]=_0x389745[_0xf9cd('0x46')]['length']?_0x389745[_0xf9cd('0x46')]:_0x54e2b9[_0xf9cd('0x40')];if(_0x430988['query']['includeAll']){_0x389745[_0xf9cd('0x51')]=[{'all':!![]}];}_0x389745=_[_0xf9cd('0x4b')]({},_0x389745,_0x430988['options']);return db[_0xf9cd('0x3b')][_0xf9cd('0x52')](_0x389745)['then'](handleEntityNotFound(_0x3ce665,null))[_0xf9cd('0x1e')](respondWithResult(_0x3ce665,null))[_0xf9cd('0x4f')](handleError(_0x3ce665,null));};exports[_0xf9cd('0x34')]=function(_0x4224a7,_0x50624b){if(_0x4224a7[_0xf9cd('0x53')]['id']){delete _0x4224a7[_0xf9cd('0x53')]['id'];}return db['FaxMessage'][_0xf9cd('0x52')]({'where':{'id':_0x4224a7[_0xf9cd('0x50')]['id']}})[_0xf9cd('0x1e')](handleEntityNotFound(_0x50624b,null))[_0xf9cd('0x1e')](saveUpdates(_0x4224a7['body'],null))['then'](respondWithResult(_0x50624b,null))[_0xf9cd('0x4f')](handleError(_0x50624b,null));};exports[_0xf9cd('0x35')]=function(_0x37f3b,_0x157694){return db[_0xf9cd('0x3b')][_0xf9cd('0x52')]({'where':{'id':_0x37f3b[_0xf9cd('0x50')]['id']}})[_0xf9cd('0x1e')](handleEntityNotFound(_0x157694,null))['then'](removeEntity(_0x157694,null))['catch'](handleError(_0x157694,null));};exports[_0xf9cd('0x54')]=function(_0x38f4eb,_0xd6fff8){return db['FaxMessage'][_0xf9cd('0x54')]()['then'](respondWithResult(_0xd6fff8,null))[_0xf9cd('0x4f')](handleError(_0xd6fff8,null));};var interaction_log=require(_0xf9cd('0x13'))(_0xf9cd('0x55'));exports[_0xf9cd('0x56')]=function(_0x51fabc,_0xbabeb3,_0x4821df){var _0xf056aa={'agent':{},'channel':_0xf9cd('0x57')};if(_0x51fabc[_0xf9cd('0x53')]['id']){delete _0x51fabc[_0xf9cd('0x53')]['id'];}_0x51fabc[_0xf9cd('0x53')][_0xf9cd('0x58')]=!![];_0x51fabc[_0xf9cd('0x53')][_0xf9cd('0x59')]=moment()[_0xf9cd('0x5a')](_0xf9cd('0x5b'));_0x51fabc[_0xf9cd('0x53')][_0xf9cd('0x5c')]=_0x51fabc[_0xf9cd('0x53')]['UserId']||_0x51fabc[_0xf9cd('0x5d')]['id'];_0xf056aa[_0xf9cd('0x5e')]['id']=_0x51fabc[_0xf9cd('0x53')]['UserId'];return db[_0xf9cd('0x3b')]['find']({'where':{'id':_0x51fabc['params']['id'],'UserId':null}})[_0xf9cd('0x1e')](handleEntityNotFound(_0xbabeb3,null))[_0xf9cd('0x1e')](saveUpdates(_0x51fabc[_0xf9cd('0x53')],null))[_0xf9cd('0x1e')](function(_0xa87b56){if(_0xa87b56){_0xf056aa[_0xf9cd('0x26')]=_0xa87b56[_0xf9cd('0x5f')]({'plain':!![]});return db[_0xf9cd('0x60')][_0xf9cd('0x52')]({'where':{'id':_0xa87b56[_0xf9cd('0x61')]}});}return null;})[_0xf9cd('0x1e')](handleEntityNotFound(_0xbabeb3,null))['then'](function(_0x742043){if(_0x742043){return _0x742043[_0xf9cd('0x34')]({'UserId':_0x51fabc['body']['UserId'],'read1stAt':_['isNil'](_0x742043[_0xf9cd('0x62')])?moment()[_0xf9cd('0x5a')](_0xf9cd('0x5b')):undefined});}return null;})[_0xf9cd('0x1e')](function(_0x3b40fc){if(_0x3b40fc){_0xf056aa[_0xf9cd('0x63')]=_0x3b40fc[_0xf9cd('0x5f')]({'plain':!![]});interaction_log[_0xf9cd('0x1f')](_0xf9cd('0x64'),_0x51fabc[_0xf9cd('0x5d')]['id'],_0x51fabc[_0xf9cd('0x5d')][_0xf9cd('0x37')],_0x51fabc[_0xf9cd('0x5d')][_0xf9cd('0x65')],_0xf056aa[_0xf9cd('0x63')]['id'],_0x51fabc['body']?JSON['stringify'](_0x51fabc[_0xf9cd('0x53')]):_0xf9cd('0x66'));return respondWithRpcPromise(_0xf9cd('0x67'),_0xf9cd('0x68'),_0xf056aa);}return null;})[_0xf9cd('0x1e')](function(_0x1b0279){var _0x44d68a=_0xf9cd('0x69')+_0x1b0279[_0xf9cd('0x26')][_0xf9cd('0x6a')];return db[_0xf9cd('0x6b')][_0xf9cd('0x42')](_0x44d68a,{'type':db[_0xf9cd('0x6c')][_0xf9cd('0x6d')][_0xf9cd('0x6e')],'raw':!![]})[_0xf9cd('0x1e')](function(_0x2633dd){return _0x2633dd;});})['then'](function(_0x32546f){if(_0x32546f){_0xf056aa[_0xf9cd('0x26')][_0xf9cd('0x6f')]=_0x32546f[0x0];if(!_0x51fabc['body'][_0xf9cd('0x5c')])return;return db[_0xf9cd('0x70')][_0xf9cd('0x52')]({'where':{'id':_0x51fabc['body'][_0xf9cd('0x5c')],'role':_0xf9cd('0x5e')},'attributes':['id','name',_0xf9cd('0x71'),_0xf9cd('0x72'),_0xf9cd('0x73')],'raw':!![]});}return null;})[_0xf9cd('0x1e')](function(_0x7eb82f){if(!_0x7eb82f)return null;_0xf056aa['message'][_0xf9cd('0x5e')]=_0x7eb82f;return _0xf056aa;})[_0xf9cd('0x1e')](function(_0x5b7e2a){if(_0x5b7e2a){if(_0x51fabc[_0xf9cd('0x53')][_0xf9cd('0x74')]){_0xf056aa['message']['interface']=util[_0xf9cd('0x5a')]('SIP/%s',_0x51fabc['user']['name']);_0xf056aa[_0xf9cd('0x26')]['channel']=_0xf056aa[_0xf9cd('0x75')];_0xf056aa[_0xf9cd('0x26')][_0xf9cd('0x76')]=_0xf056aa[_0xf9cd('0x75')];_0xf056aa[_0xf9cd('0x26')]['event']=_0xf9cd('0x56');return respondWithRpcPromise(_0xf9cd('0x77'),'EventManager',{'event':_0xf9cd('0x78'),'message':_0xf056aa[_0xf9cd('0x26')]},client9002)[_0xf9cd('0x1e')](function(){return _0xf056aa;});}return _0xf056aa;}return null;})[_0xf9cd('0x1e')](respondWithResult(_0xbabeb3,null))[_0xf9cd('0x4f')](handleError(_0xbabeb3,null));};var interaction_log=require('../../config/logger')(_0xf9cd('0x55'));exports[_0xf9cd('0x33')]=function(_0x78cfad,_0x2b803d,_0x55f1ab){var _0x190f33={'agent':{},'channel':'fax'};if(_0x78cfad[_0xf9cd('0x53')]['id']){delete _0x78cfad[_0xf9cd('0x53')]['id'];}_0x78cfad[_0xf9cd('0x53')][_0xf9cd('0x5c')]=_0x78cfad['body']['UserId']||_0x78cfad['user']['id'];_0x190f33[_0xf9cd('0x5e')]['id']=_0x78cfad[_0xf9cd('0x53')][_0xf9cd('0x5c')];return db[_0xf9cd('0x3b')][_0xf9cd('0x52')]({'where':{'id':_0x78cfad[_0xf9cd('0x50')]['id'],'UserId':null}})[_0xf9cd('0x1e')](handleEntityNotFound(_0x2b803d,null))[_0xf9cd('0x1e')](function(_0x1dcc99){if(_0x1dcc99){_0x190f33['message']=_0x1dcc99[_0xf9cd('0x5f')]({'plain':!![]});return db['FaxInteraction'][_0xf9cd('0x52')]({'where':{'id':_0x1dcc99[_0xf9cd('0x61')]}});}return null;})[_0xf9cd('0x1e')](handleEntityNotFound(_0x2b803d,null))[_0xf9cd('0x1e')](function(_0x4a6012){if(_0x4a6012){_0x190f33[_0xf9cd('0x63')]=_0x4a6012[_0xf9cd('0x5f')]({'plain':!![]});interaction_log[_0xf9cd('0x1f')](_0xf9cd('0x79'),_0x78cfad[_0xf9cd('0x5d')]['id'],_0x78cfad[_0xf9cd('0x5d')][_0xf9cd('0x37')],_0x78cfad[_0xf9cd('0x5d')][_0xf9cd('0x65')],_0x190f33[_0xf9cd('0x63')]['id'],_0x78cfad['body']?JSON[_0xf9cd('0x23')](_0x78cfad[_0xf9cd('0x53')]):_0xf9cd('0x66'));return respondWithRpcPromise(_0xf9cd('0x7a'),_0xf9cd('0x7b'),_0x190f33);}return null;})['then'](function(_0x2cb5ee){var _0x5266e9='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2cb5ee['message'][_0xf9cd('0x6a')];return db['sequelize']['query'](_0x5266e9,{'type':db[_0xf9cd('0x6c')]['QueryTypes'][_0xf9cd('0x6e')],'raw':!![]})[_0xf9cd('0x1e')](function(_0x461581){return _0x461581;});})['then'](function(_0xbe8202){if(_0xbe8202){_0x190f33['message'][_0xf9cd('0x6f')]=_0xbe8202[0x0];if(!_0x78cfad[_0xf9cd('0x53')][_0xf9cd('0x5c')])return;return db[_0xf9cd('0x70')][_0xf9cd('0x52')]({'where':{'id':_0x78cfad[_0xf9cd('0x53')][_0xf9cd('0x5c')],'role':_0xf9cd('0x5e')},'attributes':['id',_0xf9cd('0x37'),_0xf9cd('0x71'),_0xf9cd('0x72'),'internal'],'raw':!![]});}return null;})[_0xf9cd('0x1e')](function(_0x234888){if(!_0x234888)return null;_0x190f33[_0xf9cd('0x26')]['agent']=_0x234888;return _0x190f33;})[_0xf9cd('0x1e')](function(_0x1d2388){if(_0x1d2388){_0x1d2388[_0xf9cd('0x26')]['interface']=util[_0xf9cd('0x5a')](_0xf9cd('0x7c'),_0x78cfad[_0xf9cd('0x5d')][_0xf9cd('0x37')]);_0x1d2388['message'][_0xf9cd('0x75')]=_0x190f33['channel'];_0x1d2388[_0xf9cd('0x26')][_0xf9cd('0x76')]=_0x190f33['channel'];_0x1d2388['message'][_0xf9cd('0x7d')]='reject';respondWithRpcPromise(_0xf9cd('0x77'),'EventManager',{'event':_0xf9cd('0x7e'),'message':_0x1d2388[_0xf9cd('0x26')]},client9002);return _0x190f33;}return null;})[_0xf9cd('0x1e')](respondWithResult(_0x2b803d,null))[_0xf9cd('0x4f')](handleError(_0x2b803d,null));};exports['create']=function(_0x1e7945,_0x2b10d2){var _0x4f160f;return db['FaxMessage']['create'](_0x1e7945[_0xf9cd('0x53')],{})['then'](function(_0x3ed192){_0x4f160f=_0x3ed192;return db[_0xf9cd('0x7f')][_0xf9cd('0x80')]({'where':{'id':_0x4f160f['ContactId']}});})[_0xf9cd('0x1e')](function(_0x57ca8a){if(_[_0xf9cd('0x81')](_0x57ca8a)){return;}else{_0x4f160f[_0xf9cd('0x57')]=_0x57ca8a[_0xf9cd('0x57')];return db[_0xf9cd('0x82')][_0xf9cd('0x80')]({'where':{'id':_0x4f160f['AttachmentId']}});}})[_0xf9cd('0x1e')](function(_0x2b51c9){return respondWithRpcPromise(_0xf9cd('0x83'),'SendFax',{'FaxAccountId':_[_0xf9cd('0x81')](_0x1e7945[_0xf9cd('0x53')])?undefined:_0x1e7945[_0xf9cd('0x53')][_0xf9cd('0x84')],'path':_[_0xf9cd('0x81')](_0x2b51c9)?undefined:util[_0xf9cd('0x5a')](_0xf9cd('0x85'),_0x2b51c9[_0xf9cd('0x86')]),'fax':_[_0xf9cd('0x81')](_0x4f160f[_0xf9cd('0x57')])?undefined:_0x4f160f[_0xf9cd('0x57')],'AttachmentId':_0x4f160f[_0xf9cd('0x87')]},client9002);})[_0xf9cd('0x1e')](respondWithResult(_0x2b10d2,0xc9))[_0xf9cd('0x4f')](handleError(_0x2b10d2,null));};exports['download']=function(_0x1e708f,_0x5d81dc){var _0x4b8d91=path[_0xf9cd('0x88')](config[_0xf9cd('0x89')],_0xf9cd('0x8a'),_0xf9cd('0x8b'),_0xf9cd('0x8c'));return db[_0xf9cd('0x3b')]['find']({'where':{'id':_0x1e708f[_0xf9cd('0x50')]['id']},'include':[{'model':db[_0xf9cd('0x82')],'as':'Attachment'}]})[_0xf9cd('0x1e')](handleEntityNotFound(_0x5d81dc,null))[_0xf9cd('0x1e')](function(_0x1379ba){if(_0x1379ba){return _0x5d81dc['download'](path[_0xf9cd('0x88')](_0x4b8d91,_0x1379ba[_0xf9cd('0x82')]['basename']));}})[_0xf9cd('0x4f')](handleError(_0x5d81dc,null));};
\ No newline at end of file
+var _0x7980=['email','internal','interface','SIP/%s','channel','EventManager','acceptmessage','FaxInteraction','FaxInteractionId','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','sequelize','event','rejectmessage','create','Attachment','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','socket.io-emitter','register','jayson/promise','client','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','end','json','offset','limit','undefined','Content-Range','apply','reject','save','update','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','FaxMessage','count','includeAll','include','rows','catch','show','params','find','body','describe','fax-interactions','accept','fax','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','isNil','read1stAt','format','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','contact','agent','fullname'];(function(_0x56039b,_0x3de8d8){var _0xc90792=function(_0x300c35){while(--_0x300c35){_0x56039b['push'](_0x56039b['shift']());}};_0xc90792(++_0x3de8d8);}(_0x7980,0xaa));var _0x0798=function(_0xdb34f0,_0x43e1e3){_0xdb34f0=_0xdb34f0-0x0;var _0x14d203=_0x7980[_0xdb34f0];return _0x14d203;};'use strict';var emlformat=require(_0x0798('0x0'));var rimraf=require(_0x0798('0x1'));var zipdir=require(_0x0798('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0798('0x3'));var moment=require(_0x0798('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0798('0x5'));var util=require('util');var path=require(_0x0798('0x6'));var sox=require(_0x0798('0x7'));var csv=require(_0x0798('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0798('0x9'));var _=require(_0x0798('0xa'));var squel=require(_0x0798('0xb'));var crypto=require(_0x0798('0xc'));var jsforce=require(_0x0798('0xd'));var deskjs=require(_0x0798('0xe'));var toCsv=require(_0x0798('0x8'));var querystring=require(_0x0798('0xf'));var Papa=require(_0x0798('0x10'));var Redis=require(_0x0798('0x11'));var authService=require(_0x0798('0x12'));var qs=require(_0x0798('0x13'));var as=require(_0x0798('0x14'));var hardwareService=require(_0x0798('0x15'));var logger=require(_0x0798('0x16'))(_0x0798('0x17'));var utils=require(_0x0798('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x0798('0x19'));var db=require('../../mysqldb')['db'];config[_0x0798('0x1a')]=_[_0x0798('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0798('0x1c'))(new Redis(config[_0x0798('0x1a')]));require('./faxMessage.socket')[_0x0798('0x1d')](socket);var jayson=require(_0x0798('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x0798('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x449f33,_0x6e0053,_0x5a53fd,_0x3873fb){return new BPromise(function(_0x3980c1,_0x3eae1e){var _0x3736ff=_0x3873fb||client;return _0x3736ff[_0x0798('0x20')](_0x449f33,_0x5a53fd)[_0x0798('0x21')](function(_0x17c6bf){logger[_0x0798('0x22')](_0x0798('0x23'),_0x6e0053,_0x0798('0x24'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x6e0053,_0x0798('0x24'),JSON[_0x0798('0x25')](_0x17c6bf));if(_0x17c6bf[_0x0798('0x26')]){if(_0x17c6bf[_0x0798('0x26')][_0x0798('0x27')]===0x1f4){logger['error'](_0x0798('0x23'),_0x6e0053,_0x17c6bf[_0x0798('0x26')][_0x0798('0x28')]);return _0x3eae1e(_0x17c6bf['error'][_0x0798('0x28')]);}logger[_0x0798('0x26')](_0x0798('0x23'),_0x6e0053,_0x17c6bf[_0x0798('0x26')][_0x0798('0x28')]);return _0x3980c1(_0x17c6bf['error'][_0x0798('0x28')]);}else{logger[_0x0798('0x22')]('FaxMessage,\x20%s,\x20%s',_0x6e0053,'request\x20sent');_0x3980c1(_0x17c6bf[_0x0798('0x29')][_0x0798('0x28')]);}})['catch'](function(_0x17dea8){logger[_0x0798('0x26')](_0x0798('0x23'),_0x6e0053,_0x17dea8);_0x3eae1e(_0x17dea8);});});}function respondWithStatusCode(_0x22918d,_0x2cc0e8){_0x2cc0e8=_0x2cc0e8||0xcc;return function(_0x2edf6f){if(_0x2edf6f){return _0x22918d[_0x0798('0x2a')](_0x2cc0e8);}return _0x22918d[_0x0798('0x2b')](_0x2cc0e8)[_0x0798('0x2c')]();};}function respondWithResult(_0x1d944f,_0x2356fb){_0x2356fb=_0x2356fb||0xc8;return function(_0x1fa48a){if(_0x1fa48a){return _0x1d944f[_0x0798('0x2b')](_0x2356fb)[_0x0798('0x2d')](_0x1fa48a);}};}function respondWithFilteredResult(_0x50cee5,_0x4dc361){return function(_0x2d77f9){if(_0x2d77f9){var _0x190441=typeof _0x4dc361[_0x0798('0x2e')]==='undefined'&&typeof _0x4dc361[_0x0798('0x2f')]===_0x0798('0x30');var _0xb92aee=_0x2d77f9['count'];var _0x1e2431=_0x190441?0x0:_0x4dc361[_0x0798('0x2e')];var _0x30fbbc=_0x190441?_0x2d77f9['count']:_0x4dc361['offset']+_0x4dc361['limit'];var _0x484df2;if(_0x30fbbc>=_0xb92aee){_0x30fbbc=_0xb92aee;_0x484df2=0xc8;}else{_0x484df2=0xce;}_0x50cee5[_0x0798('0x2b')](_0x484df2);return _0x50cee5['set'](_0x0798('0x31'),_0x1e2431+'-'+_0x30fbbc+'/'+_0xb92aee)[_0x0798('0x2d')](_0x2d77f9);}return null;};}function patchUpdates(_0x8604bf){return function(_0x2ab3a7){try{jsonpatch[_0x0798('0x32')](_0x2ab3a7,_0x8604bf,!![]);}catch(_0x44d606){return BPromise[_0x0798('0x33')](_0x44d606);}return _0x2ab3a7[_0x0798('0x34')]();};}function saveUpdates(_0x219b0d,_0x312a78){return function(_0x46009a){if(_0x46009a){return _0x46009a[_0x0798('0x35')](_0x219b0d)[_0x0798('0x21')](function(_0x51ac0b){return _0x51ac0b;});}return null;};}function removeEntity(_0x5471d7,_0x52443b){return function(_0x570d09){if(_0x570d09){return _0x570d09['destroy']()[_0x0798('0x21')](function(){_0x5471d7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e85fd,_0x139d2c){return function(_0x167488){if(!_0x167488){_0x2e85fd['sendStatus'](0x194);}return _0x167488;};}function handleError(_0x5023f5,_0x453e6b){_0x453e6b=_0x453e6b||0x1f4;return function(_0x2c078b){logger[_0x0798('0x26')](_0x2c078b['stack']);if(_0x2c078b[_0x0798('0x36')]){delete _0x2c078b[_0x0798('0x36')];}_0x5023f5['status'](_0x453e6b)[_0x0798('0x37')](_0x2c078b);};}exports[_0x0798('0x38')]=function(_0x2272e0,_0x195919){var _0x261724={},_0x581d31={},_0x3c0ee5={'count':0x0,'rows':[]};var _0x289fc9=_[_0x0798('0x39')](db['FaxMessage'][_0x0798('0x3a')],function(_0x56d896){return{'name':_0x56d896[_0x0798('0x3b')],'type':_0x56d896['type'][_0x0798('0x3c')]};});_0x581d31[_0x0798('0x3d')]=_[_0x0798('0x39')](_0x289fc9,'name');_0x581d31[_0x0798('0x3e')]=_[_0x0798('0x3f')](_0x2272e0[_0x0798('0x3e')]);_0x581d31[_0x0798('0x40')]=_[_0x0798('0x41')](_0x581d31['model'],_0x581d31[_0x0798('0x3e')]);_0x261724[_0x0798('0x42')]=_[_0x0798('0x41')](_0x581d31['model'],qs[_0x0798('0x43')](_0x2272e0[_0x0798('0x3e')][_0x0798('0x43')]));_0x261724[_0x0798('0x42')]=_0x261724['attributes'][_0x0798('0x44')]?_0x261724[_0x0798('0x42')]:_0x581d31['model'];if(!_0x2272e0[_0x0798('0x3e')][_0x0798('0x45')](_0x0798('0x46'))){_0x261724[_0x0798('0x2f')]=qs['limit'](_0x2272e0[_0x0798('0x3e')][_0x0798('0x2f')]);_0x261724[_0x0798('0x2e')]=qs[_0x0798('0x2e')](_0x2272e0[_0x0798('0x3e')]['offset']);}_0x261724['order']=qs['sort'](_0x2272e0[_0x0798('0x3e')][_0x0798('0x47')]);_0x261724[_0x0798('0x48')]=qs[_0x0798('0x40')](_[_0x0798('0x49')](_0x2272e0[_0x0798('0x3e')],_0x581d31[_0x0798('0x40')]),_0x289fc9);if(_0x2272e0[_0x0798('0x3e')][_0x0798('0x4a')]){_0x261724[_0x0798('0x48')]=_[_0x0798('0x4b')](_0x261724[_0x0798('0x48')],{'$or':_[_0x0798('0x39')](_0x289fc9,function(_0x168fa2){if(_0x168fa2['type']!==_0x0798('0x4c')){var _0x3f079a={};_0x3f079a[_0x168fa2[_0x0798('0x36')]]={'$like':'%'+_0x2272e0[_0x0798('0x3e')][_0x0798('0x4a')]+'%'};return _0x3f079a;}})});}_0x261724=_[_0x0798('0x4b')]({},_0x261724,_0x2272e0[_0x0798('0x4d')]);var _0x22e85e={'where':_0x261724[_0x0798('0x48')]};return db[_0x0798('0x4e')][_0x0798('0x4f')](_0x22e85e)['then'](function(_0x51c49b){_0x3c0ee5[_0x0798('0x4f')]=_0x51c49b;if(_0x2272e0[_0x0798('0x3e')][_0x0798('0x50')]){_0x261724[_0x0798('0x51')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x261724);})[_0x0798('0x21')](function(_0x20550c){_0x3c0ee5[_0x0798('0x52')]=_0x20550c;return _0x3c0ee5;})[_0x0798('0x21')](respondWithFilteredResult(_0x195919,_0x261724))[_0x0798('0x53')](handleError(_0x195919,null));};exports[_0x0798('0x54')]=function(_0x3b3155,_0x3de78f){var _0x6376c2={'raw':!![],'where':{'id':_0x3b3155[_0x0798('0x55')]['id']}},_0x2d036a={};_0x2d036a['model']=_[_0x0798('0x3f')](db['FaxMessage'][_0x0798('0x3a')]);_0x2d036a[_0x0798('0x3e')]=_[_0x0798('0x3f')](_0x3b3155[_0x0798('0x3e')]);_0x2d036a[_0x0798('0x40')]=_[_0x0798('0x41')](_0x2d036a['model'],_0x2d036a[_0x0798('0x3e')]);_0x6376c2[_0x0798('0x42')]=_[_0x0798('0x41')](_0x2d036a[_0x0798('0x3d')],qs[_0x0798('0x43')](_0x3b3155['query'][_0x0798('0x43')]));_0x6376c2['attributes']=_0x6376c2[_0x0798('0x42')][_0x0798('0x44')]?_0x6376c2[_0x0798('0x42')]:_0x2d036a[_0x0798('0x3d')];if(_0x3b3155['query']['includeAll']){_0x6376c2[_0x0798('0x51')]=[{'all':!![]}];}_0x6376c2=_[_0x0798('0x4b')]({},_0x6376c2,_0x3b3155[_0x0798('0x4d')]);return db[_0x0798('0x4e')][_0x0798('0x56')](_0x6376c2)['then'](handleEntityNotFound(_0x3de78f,null))[_0x0798('0x21')](respondWithResult(_0x3de78f,null))[_0x0798('0x53')](handleError(_0x3de78f,null));};exports[_0x0798('0x35')]=function(_0x30a1b1,_0x1f9ef4){if(_0x30a1b1[_0x0798('0x57')]['id']){delete _0x30a1b1[_0x0798('0x57')]['id'];}return db[_0x0798('0x4e')][_0x0798('0x56')]({'where':{'id':_0x30a1b1[_0x0798('0x55')]['id']}})[_0x0798('0x21')](handleEntityNotFound(_0x1f9ef4,null))[_0x0798('0x21')](saveUpdates(_0x30a1b1[_0x0798('0x57')],null))[_0x0798('0x21')](respondWithResult(_0x1f9ef4,null))['catch'](handleError(_0x1f9ef4,null));};exports['destroy']=function(_0x1a3526,_0x173840){return db[_0x0798('0x4e')][_0x0798('0x56')]({'where':{'id':_0x1a3526[_0x0798('0x55')]['id']}})[_0x0798('0x21')](handleEntityNotFound(_0x173840,null))[_0x0798('0x21')](removeEntity(_0x173840,null))[_0x0798('0x53')](handleError(_0x173840,null));};exports[_0x0798('0x58')]=function(_0x5757a1,_0x2a9d9c){return db[_0x0798('0x4e')][_0x0798('0x58')]()[_0x0798('0x21')](respondWithResult(_0x2a9d9c,null))[_0x0798('0x53')](handleError(_0x2a9d9c,null));};var interaction_log=require(_0x0798('0x16'))(_0x0798('0x59'));exports[_0x0798('0x5a')]=function(_0x396686,_0x56cd1f,_0xb90af4){var _0x1cc129={'agent':{},'channel':_0x0798('0x5b')};if(_0x396686[_0x0798('0x57')]['id']){delete _0x396686[_0x0798('0x57')]['id'];}_0x396686['body']['read']=!![];_0x396686[_0x0798('0x57')][_0x0798('0x5c')]=moment()['format'](_0x0798('0x5d'));_0x396686['body'][_0x0798('0x5e')]=_0x396686[_0x0798('0x57')]['UserId']||_0x396686[_0x0798('0x5f')]['id'];_0x1cc129['agent']['id']=_0x396686[_0x0798('0x57')][_0x0798('0x5e')];return db['FaxMessage'][_0x0798('0x56')]({'where':{'id':_0x396686['params']['id'],'UserId':null}})[_0x0798('0x21')](handleEntityNotFound(_0x56cd1f,null))[_0x0798('0x21')](saveUpdates(_0x396686[_0x0798('0x57')],null))[_0x0798('0x21')](function(_0x1ab5d4){if(_0x1ab5d4){_0x1cc129['message']=_0x1ab5d4[_0x0798('0x60')]({'plain':!![]});return db['FaxInteraction'][_0x0798('0x56')]({'where':{'id':_0x1ab5d4['FaxInteractionId']}});}return null;})[_0x0798('0x21')](handleEntityNotFound(_0x56cd1f,null))[_0x0798('0x21')](function(_0x54400f){if(_0x54400f){return _0x54400f['update']({'UserId':_0x396686['body'][_0x0798('0x5e')],'read1stAt':_[_0x0798('0x61')](_0x54400f[_0x0798('0x62')])?moment()[_0x0798('0x63')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x0798('0x21')](function(_0x379416){if(_0x379416){_0x1cc129[_0x0798('0x64')]=_0x379416['get']({'plain':!![]});interaction_log[_0x0798('0x22')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x396686[_0x0798('0x5f')]['id'],_0x396686[_0x0798('0x5f')][_0x0798('0x36')],_0x396686[_0x0798('0x5f')][_0x0798('0x65')],_0x1cc129[_0x0798('0x64')]['id'],_0x396686['body']?JSON[_0x0798('0x25')](_0x396686[_0x0798('0x57')]):_0x0798('0x66'));return respondWithRpcPromise(_0x0798('0x67'),_0x0798('0x68'),_0x1cc129);}return null;})['then'](function(_0x1df645){var _0x5f2fb7=_0x0798('0x69')+_0x1df645[_0x0798('0x28')]['ContactId'];return db['sequelize'][_0x0798('0x3e')](_0x5f2fb7,{'type':db[_0x0798('0x6a')][_0x0798('0x6b')][_0x0798('0x6c')],'raw':!![]})[_0x0798('0x21')](function(_0x1162c4){return _0x1162c4;});})[_0x0798('0x21')](function(_0x428a99){if(_0x428a99){_0x1cc129['message'][_0x0798('0x6d')]=_0x428a99[0x0];if(!_0x396686[_0x0798('0x57')][_0x0798('0x5e')])return;return db['User'][_0x0798('0x56')]({'where':{'id':_0x396686[_0x0798('0x57')][_0x0798('0x5e')],'role':_0x0798('0x6e')},'attributes':['id',_0x0798('0x36'),_0x0798('0x6f'),_0x0798('0x70'),_0x0798('0x71')],'raw':!![]});}return null;})[_0x0798('0x21')](function(_0x1d890f){if(!_0x1d890f)return null;_0x1cc129[_0x0798('0x28')][_0x0798('0x6e')]=_0x1d890f;return _0x1cc129;})[_0x0798('0x21')](function(_0x4fa154){if(_0x4fa154){if(_0x396686[_0x0798('0x57')]['manual']){_0x1cc129[_0x0798('0x28')][_0x0798('0x72')]=util[_0x0798('0x63')](_0x0798('0x73'),_0x396686['user'][_0x0798('0x36')]);_0x1cc129[_0x0798('0x28')][_0x0798('0x74')]=_0x1cc129[_0x0798('0x74')];_0x1cc129['message']['event']='accept';return respondWithRpcPromise(_0x0798('0x75'),_0x0798('0x75'),{'event':_0x0798('0x76'),'message':_0x1cc129['message']},client9002)[_0x0798('0x21')](function(){return _0x1cc129;});}return _0x1cc129;}return null;})[_0x0798('0x21')](respondWithResult(_0x56cd1f,null))[_0x0798('0x53')](handleError(_0x56cd1f,null));};var interaction_log=require(_0x0798('0x16'))(_0x0798('0x59'));exports['reject']=function(_0x831c0,_0x51e9d5,_0x71c91d){var _0x7a9b0d={'agent':{},'channel':_0x0798('0x5b')};if(_0x831c0[_0x0798('0x57')]['id']){delete _0x831c0['body']['id'];}_0x831c0[_0x0798('0x57')][_0x0798('0x5e')]=_0x831c0[_0x0798('0x57')][_0x0798('0x5e')]||_0x831c0[_0x0798('0x5f')]['id'];_0x7a9b0d[_0x0798('0x6e')]['id']=_0x831c0['body'][_0x0798('0x5e')];return db[_0x0798('0x4e')][_0x0798('0x56')]({'where':{'id':_0x831c0[_0x0798('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x51e9d5,null))[_0x0798('0x21')](function(_0x105031){if(_0x105031){_0x7a9b0d[_0x0798('0x28')]=_0x105031[_0x0798('0x60')]({'plain':!![]});return db[_0x0798('0x77')]['find']({'where':{'id':_0x105031[_0x0798('0x78')]}});}return null;})[_0x0798('0x21')](handleEntityNotFound(_0x51e9d5,null))[_0x0798('0x21')](function(_0x205df3){if(_0x205df3){_0x7a9b0d[_0x0798('0x64')]=_0x205df3[_0x0798('0x60')]({'plain':!![]});interaction_log[_0x0798('0x22')](_0x0798('0x79'),_0x831c0['user']['id'],_0x831c0['user'][_0x0798('0x36')],_0x831c0['user'][_0x0798('0x65')],_0x7a9b0d['interaction']['id'],_0x831c0[_0x0798('0x57')]?JSON[_0x0798('0x25')](_0x831c0[_0x0798('0x57')]):'null');return respondWithRpcPromise(_0x0798('0x7a'),_0x0798('0x7b'),_0x7a9b0d);}return null;})[_0x0798('0x21')](function(_0x75f33d){var _0x43c3bc=_0x0798('0x69')+_0x75f33d[_0x0798('0x28')][_0x0798('0x7c')];return db[_0x0798('0x7d')][_0x0798('0x3e')](_0x43c3bc,{'type':db[_0x0798('0x6a')][_0x0798('0x6b')][_0x0798('0x6c')],'raw':!![]})[_0x0798('0x21')](function(_0x3781ea){return _0x3781ea;});})[_0x0798('0x21')](function(_0x302235){if(_0x302235){_0x7a9b0d['message'][_0x0798('0x6d')]=_0x302235[0x0];if(!_0x831c0['body'][_0x0798('0x5e')])return;return db['User']['find']({'where':{'id':_0x831c0['body'][_0x0798('0x5e')],'role':_0x0798('0x6e')},'attributes':['id','name',_0x0798('0x6f'),'email','internal'],'raw':!![]});}return null;})['then'](function(_0x176a66){if(!_0x176a66)return null;_0x7a9b0d[_0x0798('0x28')][_0x0798('0x6e')]=_0x176a66;return _0x7a9b0d;})['then'](function(_0x2e8300){if(_0x2e8300){_0x2e8300[_0x0798('0x28')][_0x0798('0x72')]=util['format'](_0x0798('0x73'),_0x831c0[_0x0798('0x5f')][_0x0798('0x36')]);_0x2e8300[_0x0798('0x28')][_0x0798('0x74')]=_0x7a9b0d[_0x0798('0x74')];_0x2e8300[_0x0798('0x28')][_0x0798('0x7e')]='reject';respondWithRpcPromise(_0x0798('0x75'),'EventManager',{'event':_0x0798('0x7f'),'message':_0x2e8300['message']},client9002);return _0x7a9b0d;}return null;})['then'](respondWithResult(_0x51e9d5,null))['catch'](handleError(_0x51e9d5,null));};exports[_0x0798('0x80')]=function(_0x15a18a,_0x254886){var _0x30ca6d;return db[_0x0798('0x4e')][_0x0798('0x80')](_0x15a18a[_0x0798('0x57')],{})[_0x0798('0x21')](function(_0x5e798b){_0x30ca6d=_0x5e798b;return db['CmContact']['findOne']({'where':{'id':_0x30ca6d['ContactId']}});})[_0x0798('0x21')](function(_0x26e73b){if(_['isNil'](_0x26e73b)){return;}else{_0x30ca6d[_0x0798('0x5b')]=_0x26e73b[_0x0798('0x5b')];return db[_0x0798('0x81')][_0x0798('0x82')]({'where':{'id':_0x30ca6d[_0x0798('0x83')]}});}})[_0x0798('0x21')](function(_0x287070){return respondWithRpcPromise(_0x0798('0x84'),_0x0798('0x84'),{'FaxAccountId':_['isNil'](_0x15a18a[_0x0798('0x57')])?undefined:_0x15a18a[_0x0798('0x57')][_0x0798('0x85')],'path':_[_0x0798('0x61')](_0x287070)?undefined:util[_0x0798('0x63')](_0x0798('0x86'),_0x287070[_0x0798('0x87')]),'fax':_[_0x0798('0x61')](_0x30ca6d[_0x0798('0x5b')])?undefined:_0x30ca6d[_0x0798('0x5b')],'AttachmentId':_0x30ca6d[_0x0798('0x83')]},client9002);})[_0x0798('0x21')](respondWithResult(_0x254886,0xc9))[_0x0798('0x53')](handleError(_0x254886,null));};exports[_0x0798('0x88')]=function(_0xa5dfba,_0x1190ce){var _0x3cba62=path[_0x0798('0x89')](config[_0x0798('0x8a')],_0x0798('0x8b'),_0x0798('0x8c'),'attachments');return db['FaxMessage'][_0x0798('0x56')]({'where':{'id':_0xa5dfba[_0x0798('0x55')]['id']},'include':[{'model':db[_0x0798('0x81')],'as':_0x0798('0x81')}]})[_0x0798('0x21')](handleEntityNotFound(_0x1190ce,null))[_0x0798('0x21')](function(_0x1573a9){if(_0x1573a9){return _0x1190ce[_0x0798('0x88')](path[_0x0798('0x89')](_0x3cba62,_0x1573a9[_0x0798('0x81')][_0x0798('0x87')]));}})[_0x0798('0x53')](handleError(_0x1190ce,null));};
\ No newline at end of file
index 7204a1f..bd79461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b2=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x929c7e,_0x38c4cc){var _0x5de099=function(_0xc4e8d8){while(--_0xc4e8d8){_0x929c7e['push'](_0x929c7e['shift']());}};_0x5de099(++_0x38c4cc);}(_0x15b2,0x145));var _0x215b=function(_0x3df7b8,_0x55db91){_0x3df7b8=_0x3df7b8-0x0;var _0x16f05d=_0x15b2[_0x3df7b8];return _0x16f05d;};'use strict';var EventEmitter=require('events');var FaxMessage=require(_0x215b('0x0'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x215b('0x1')](0x0);var events={'afterCreate':_0x215b('0x2'),'afterUpdate':'update','afterDestroy':_0x215b('0x3')};function emitEvent(_0xe78f2d){return function(_0x62c5ce,_0x506d00,_0x56ada9){FaxMessageEvents[_0x215b('0x4')](_0xe78f2d+':'+_0x62c5ce['id'],_0x62c5ce);FaxMessageEvents['emit'](_0xe78f2d,_0x62c5ce);_0x56ada9(null);};}for(var e in events){if(events[_0x215b('0x5')](e)){var event=events[e];FaxMessage[_0x215b('0x6')](e,emitEvent(event));}}module[_0x215b('0x7')]=FaxMessageEvents;
\ No newline at end of file
+var _0x1410=['FaxMessage','setMaxListeners','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0xce6f11,_0x3c3137){var _0x35b709=function(_0x1755c6){while(--_0x1755c6){_0xce6f11['push'](_0xce6f11['shift']());}};_0x35b709(++_0x3c3137);}(_0x1410,0x130));var _0x0141=function(_0x329a5e,_0x494c71){_0x329a5e=_0x329a5e-0x0;var _0x4467fe=_0x1410[_0x329a5e];return _0x4467fe;};'use strict';var EventEmitter=require(_0x0141('0x0'));var FaxMessage=require(_0x0141('0x1'))['db'][_0x0141('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x0141('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0141('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3c3422){return function(_0x5d2855,_0x194c72,_0x454af1){FaxMessageEvents[_0x0141('0x5')](_0x3c3422+':'+_0x5d2855['id'],_0x5d2855);FaxMessageEvents[_0x0141('0x5')](_0x3c3422,_0x5d2855);_0x454af1(null);};}for(var e in events){if(events[_0x0141('0x6')](e)){var event=events[e];FaxMessage[_0x0141('0x7')](e,emitEvent(event));}}module[_0x0141('0x8')]=FaxMessageEvents;
\ No newline at end of file
index 8903b43..6bdef8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2806=['exports','fax_messages','fti_fax_messages','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','findOne','FaxInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./faxMessage.attributes'];(function(_0x27125a,_0x252d0d){var _0x391f7a=function(_0x4068fb){while(--_0x4068fb){_0x27125a['push'](_0x27125a['shift']());}};_0x391f7a(++_0x252d0d);}(_0x2806,0x12b));var _0x6280=function(_0x51c676,_0x26b35f){_0x51c676=_0x51c676-0x0;var _0x1befa4=_0x2806[_0x51c676];return _0x1befa4;};'use strict';var _=require(_0x6280('0x0'));var util=require(_0x6280('0x1'));var logger=require(_0x6280('0x2'))('api');var moment=require(_0x6280('0x3'));var BPromise=require(_0x6280('0x4'));var rp=require(_0x6280('0x5'));var fs=require('fs');var path=require(_0x6280('0x6'));var rimraf=require(_0x6280('0x7'));var config=require('../../config/environment');var attributes=require(_0x6280('0x8'));module[_0x6280('0x9')]=function(_0x1f02bd,_0x2f769){return _0x1f02bd['define']('FaxMessage',attributes,{'tableName':_0x6280('0xa'),'paranoid':![],'indexes':[{'name':_0x6280('0xb'),'fields':['body'],'type':_0x6280('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5b2b85,_0x3ed483,_0x502c4e){var _0xee85d9=_0x1f02bd[_0x6280('0xd')];var _0x312ec0=_0x5b2b85['get']({'plain':!![]});if(_0x312ec0[_0x6280('0xe')]['toLowerCase']()==='in'||_0x312ec0['direction'][_0x6280('0xf')]()===_0x6280('0x10')&&!_0x312ec0[_0x6280('0x11')]&&!_[_0x6280('0x12')](_0x312ec0[_0x6280('0x13')])){_0xee85d9['FaxInteraction'][_0x6280('0x14')]({'where':{'id':_0x312ec0[_0x6280('0x15')]}})['then'](function(_0x1d0678){if(_0x1d0678){_0x1d0678[_0x6280('0x16')]({'lastMsgAt':_0x312ec0[_0x6280('0x17')],'lastMsgDirection':_0x312ec0[_0x6280('0xe')][_0x6280('0xf')]()});}})[_0x6280('0x18')](function(_0x44602e){console[_0x6280('0x19')](_0x44602e);});}_0x502c4e();}},'charset':_0x6280('0x1a'),'collate':_0x6280('0x1b')});};
\ No newline at end of file
+var _0xf112=['api','moment','bluebird','request-promise','rimraf','../../config/environment','define','FaxMessage','fax_messages','fti_fax_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','then','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x4695e2,_0x3d5f15){var _0x160563=function(_0x5df0a2){while(--_0x5df0a2){_0x4695e2['push'](_0x4695e2['shift']());}};_0x160563(++_0x3d5f15);}(_0xf112,0x71));var _0x2f11=function(_0x5e5b5e,_0x1d4bde){_0x5e5b5e=_0x5e5b5e-0x0;var _0x296489=_0xf112[_0x5e5b5e];return _0x296489;};'use strict';var _=require(_0x2f11('0x0'));var util=require(_0x2f11('0x1'));var logger=require(_0x2f11('0x2'))(_0x2f11('0x3'));var moment=require(_0x2f11('0x4'));var BPromise=require(_0x2f11('0x5'));var rp=require(_0x2f11('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2f11('0x7'));var config=require(_0x2f11('0x8'));var attributes=require('./faxMessage.attributes');module['exports']=function(_0x20b7db,_0x16f182){return _0x20b7db[_0x2f11('0x9')](_0x2f11('0xa'),attributes,{'tableName':_0x2f11('0xb'),'paranoid':![],'indexes':[{'name':_0x2f11('0xc'),'fields':[_0x2f11('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5afb1c,_0x11d3df,_0x51536a){var _0x17965d=_0x20b7db[_0x2f11('0xe')];var _0x911565=_0x5afb1c[_0x2f11('0xf')]({'plain':!![]});if(_0x911565[_0x2f11('0x10')][_0x2f11('0x11')]()==='in'||_0x911565[_0x2f11('0x10')][_0x2f11('0x11')]()===_0x2f11('0x12')&&!_0x911565[_0x2f11('0x13')]&&!_[_0x2f11('0x14')](_0x911565[_0x2f11('0x15')])){_0x17965d[_0x2f11('0x16')]['findOne']({'where':{'id':_0x911565['FaxInteractionId']}})[_0x2f11('0x17')](function(_0x4a0eac){if(_0x4a0eac){_0x4a0eac[_0x2f11('0x18')]({'lastMsgAt':_0x911565[_0x2f11('0x19')],'lastMsgDirection':_0x911565[_0x2f11('0x10')][_0x2f11('0x11')]()});}})['catch'](function(_0x1108ed){console[_0x2f11('0x1a')](_0x1108ed);});}_0x51536a();}},'charset':_0x2f11('0x1b'),'collate':_0x2f11('0x1c')});};
\ No newline at end of file
index 3a822e8..86abc3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4e=['localhost','socket.io-emitter','request','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateFaxMessage','FaxMessage','create','body','options','raw','then','debug','stringify','attributes','limit','UpdateFaxMessage','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults'];(function(_0x30eb08,_0xcd9a6b){var _0x5356df=function(_0x1cf3eb){while(--_0x1cf3eb){_0x30eb08['push'](_0x30eb08['shift']());}};_0x5356df(++_0xcd9a6b);}(_0x4c4e,0x152));var _0xe4c4=function(_0x47deda,_0x703b0e){_0x47deda=_0x47deda-0x0;var _0x250c34=_0x4c4e[_0x47deda];return _0x250c34;};'use strict';var _=require(_0xe4c4('0x0'));var util=require('util');var moment=require(_0xe4c4('0x1'));var BPromise=require(_0xe4c4('0x2'));var rs=require(_0xe4c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe4c4('0x4'))['db'];var utils=require(_0xe4c4('0x5'));var logger=require(_0xe4c4('0x6'))('rpc');var config=require(_0xe4c4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe4c4('0x8')][_0xe4c4('0x9')]({'port':0x232a});config[_0xe4c4('0xa')]=_[_0xe4c4('0xb')](config[_0xe4c4('0xa')],{'host':_0xe4c4('0xc'),'port':0x18eb});var socket=require(_0xe4c4('0xd'))(new Redis(config[_0xe4c4('0xa')]));require('./faxMessage.socket')['register'](socket);function respondWithRpcPromise(_0x31f879,_0x6f2545,_0x27ad42){return new BPromise(function(_0x1bc786,_0x333c08){return client[_0xe4c4('0xe')](_0x31f879,_0x27ad42)['then'](function(_0x303d89){logger[_0xe4c4('0xf')](_0xe4c4('0x10'),_0x6f2545,_0xe4c4('0x11'));logger['debug'](_0xe4c4('0x12'),_0x6f2545,_0xe4c4('0x11'),JSON['stringify'](_0x303d89));if(_0x303d89[_0xe4c4('0x13')]){if(_0x303d89[_0xe4c4('0x13')]['code']===0x1f4){logger[_0xe4c4('0x13')](_0xe4c4('0x10'),_0x6f2545,_0x303d89['error'][_0xe4c4('0x14')]);return _0x333c08(_0x303d89[_0xe4c4('0x13')][_0xe4c4('0x14')]);}logger[_0xe4c4('0x13')](_0xe4c4('0x10'),_0x6f2545,_0x303d89[_0xe4c4('0x13')][_0xe4c4('0x14')]);return _0x1bc786(_0x303d89[_0xe4c4('0x13')][_0xe4c4('0x14')]);}else{logger[_0xe4c4('0xf')](_0xe4c4('0x10'),_0x6f2545,_0xe4c4('0x11'));_0x1bc786(_0x303d89[_0xe4c4('0x15')][_0xe4c4('0x14')]);}})[_0xe4c4('0x16')](function(_0x5a32b5){logger[_0xe4c4('0x13')](_0xe4c4('0x10'),_0x6f2545,_0x5a32b5);_0x333c08(_0x5a32b5);});});}exports[_0xe4c4('0x17')]=function(_0x317cc8){var _0x5da165=this;return new Promise(function(_0x3d5856,_0x1cad5d){return db[_0xe4c4('0x18')][_0xe4c4('0x19')](_0x317cc8[_0xe4c4('0x1a')],{'raw':_0x317cc8[_0xe4c4('0x1b')]?_0x317cc8[_0xe4c4('0x1b')][_0xe4c4('0x1c')]===undefined?!![]:![]:!![]})[_0xe4c4('0x1d')](function(_0x1a7690){logger[_0xe4c4('0xf')](_0xe4c4('0x17'),_0x317cc8);logger[_0xe4c4('0x1e')](_0xe4c4('0x17'),_0x317cc8,JSON[_0xe4c4('0x1f')](_0x1a7690));_0x3d5856(_0x1a7690);})['catch'](function(_0x49cadc){logger[_0xe4c4('0x13')]('CreateFaxMessage',_0x49cadc[_0xe4c4('0x14')],_0x317cc8);_0x1cad5d(_0x5da165['error'](0x1f4,_0x49cadc[_0xe4c4('0x14')]));});});};exports['UpdateFaxMessage']=function(_0x34d667){var _0x583393=this;return new Promise(function(_0xba53ef,_0x4a0199){return db['FaxMessage']['update'](_0x34d667['body'],{'raw':_0x34d667[_0xe4c4('0x1b')]?_0x34d667['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34d667[_0xe4c4('0x1b')]?_0x34d667[_0xe4c4('0x1b')]['where']||null:null,'attributes':_0x34d667['options']?_0x34d667[_0xe4c4('0x1b')][_0xe4c4('0x20')]||null:null,'limit':_0x34d667['options']?_0x34d667[_0xe4c4('0x1b')][_0xe4c4('0x21')]||null:null})[_0xe4c4('0x1d')](function(_0x48060e){logger['info'](_0xe4c4('0x22'),_0x34d667);logger[_0xe4c4('0x1e')](_0xe4c4('0x22'),_0x34d667,JSON[_0xe4c4('0x1f')](_0x48060e));_0xba53ef(_0x48060e);})['catch'](function(_0x49c913){logger[_0xe4c4('0x13')](_0xe4c4('0x22'),_0x49c913['message'],_0x34d667);_0x4a0199(_0x583393[_0xe4c4('0x13')](0x1f4,_0x49c913[_0xe4c4('0x14')]));});});};
\ No newline at end of file
+var _0xac31=['attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','redis','defaults','socket.io-emitter','./faxMessage.socket','register','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateFaxMessage','FaxMessage','create','body','options','raw','UpdateFaxMessage','update','where'];(function(_0x25b500,_0x4fde19){var _0x500b5a=function(_0x1ee45d){while(--_0x1ee45d){_0x25b500['push'](_0x25b500['shift']());}};_0x500b5a(++_0x4fde19);}(_0xac31,0xca));var _0x1ac3=function(_0x264f1e,_0x2b2496){_0x264f1e=_0x264f1e-0x0;var _0x51f8bc=_0xac31[_0x264f1e];return _0x51f8bc;};'use strict';var _=require(_0x1ac3('0x0'));var util=require(_0x1ac3('0x1'));var moment=require(_0x1ac3('0x2'));var BPromise=require(_0x1ac3('0x3'));var rs=require(_0x1ac3('0x4'));var fs=require('fs');var Redis=require(_0x1ac3('0x5'));var db=require(_0x1ac3('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1ac3('0x7'))(_0x1ac3('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1ac3('0x9')][_0x1ac3('0xa')]({'port':0x232a});config[_0x1ac3('0xb')]=_[_0x1ac3('0xc')](config[_0x1ac3('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x1ac3('0xd'))(new Redis(config['redis']));require(_0x1ac3('0xe'))[_0x1ac3('0xf')](socket);function respondWithRpcPromise(_0x344674,_0x53500b,_0xa26c88){return new BPromise(function(_0x1e2642,_0x3e835b){return client[_0x1ac3('0x10')](_0x344674,_0xa26c88)[_0x1ac3('0x11')](function(_0x422d19){logger['info'](_0x1ac3('0x12'),_0x53500b,_0x1ac3('0x13'));logger[_0x1ac3('0x14')](_0x1ac3('0x15'),_0x53500b,'request\x20sent',JSON[_0x1ac3('0x16')](_0x422d19));if(_0x422d19[_0x1ac3('0x17')]){if(_0x422d19[_0x1ac3('0x17')][_0x1ac3('0x18')]===0x1f4){logger['error'](_0x1ac3('0x12'),_0x53500b,_0x422d19[_0x1ac3('0x17')]['message']);return _0x3e835b(_0x422d19[_0x1ac3('0x17')][_0x1ac3('0x19')]);}logger[_0x1ac3('0x17')]('FaxMessage,\x20%s,\x20%s',_0x53500b,_0x422d19[_0x1ac3('0x17')][_0x1ac3('0x19')]);return _0x1e2642(_0x422d19[_0x1ac3('0x17')]['message']);}else{logger[_0x1ac3('0x1a')]('FaxMessage,\x20%s,\x20%s',_0x53500b,_0x1ac3('0x13'));_0x1e2642(_0x422d19[_0x1ac3('0x1b')][_0x1ac3('0x19')]);}})[_0x1ac3('0x1c')](function(_0x18b985){logger['error'](_0x1ac3('0x12'),_0x53500b,_0x18b985);_0x3e835b(_0x18b985);});});}exports[_0x1ac3('0x1d')]=function(_0x296abf){var _0x257f60=this;return new Promise(function(_0x5f1918,_0x48d18a){return db[_0x1ac3('0x1e')][_0x1ac3('0x1f')](_0x296abf[_0x1ac3('0x20')],{'raw':_0x296abf[_0x1ac3('0x21')]?_0x296abf[_0x1ac3('0x21')][_0x1ac3('0x22')]===undefined?!![]:![]:!![]})[_0x1ac3('0x11')](function(_0x10912a){logger[_0x1ac3('0x1a')]('CreateFaxMessage',_0x296abf);logger[_0x1ac3('0x14')](_0x1ac3('0x1d'),_0x296abf,JSON['stringify'](_0x10912a));_0x5f1918(_0x10912a);})[_0x1ac3('0x1c')](function(_0x10f30c){logger['error'](_0x1ac3('0x1d'),_0x10f30c[_0x1ac3('0x19')],_0x296abf);_0x48d18a(_0x257f60[_0x1ac3('0x17')](0x1f4,_0x10f30c[_0x1ac3('0x19')]));});});};exports[_0x1ac3('0x23')]=function(_0x565a0f){var _0x5a2ab2=this;return new Promise(function(_0x503a64,_0x528807){return db['FaxMessage'][_0x1ac3('0x24')](_0x565a0f['body'],{'raw':_0x565a0f[_0x1ac3('0x21')]?_0x565a0f[_0x1ac3('0x21')][_0x1ac3('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x565a0f[_0x1ac3('0x21')]?_0x565a0f['options'][_0x1ac3('0x25')]||null:null,'attributes':_0x565a0f['options']?_0x565a0f[_0x1ac3('0x21')][_0x1ac3('0x26')]||null:null,'limit':_0x565a0f[_0x1ac3('0x21')]?_0x565a0f[_0x1ac3('0x21')][_0x1ac3('0x27')]||null:null})[_0x1ac3('0x11')](function(_0x9c17c2){logger['info'](_0x1ac3('0x23'),_0x565a0f);logger[_0x1ac3('0x14')](_0x1ac3('0x23'),_0x565a0f,JSON[_0x1ac3('0x16')](_0x9c17c2));_0x503a64(_0x9c17c2);})['catch'](function(_0x3591a9){logger[_0x1ac3('0x17')](_0x1ac3('0x23'),_0x3591a9[_0x1ac3('0x19')],_0x565a0f);_0x528807(_0x5a2ab2[_0x1ac3('0x17')](0x1f4,_0x3591a9['message']));});});};
\ No newline at end of file
index 3ca7685..baf1a45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11ff=['length','./faxMessage.events','save','removeListener','register'];(function(_0x58eec7,_0x2353db){var _0x25c5d3=function(_0x1ae895){while(--_0x1ae895){_0x58eec7['push'](_0x58eec7['shift']());}};_0x25c5d3(++_0x2353db);}(_0x11ff,0x169));var _0xf11f=function(_0x278767,_0x5ec013){_0x278767=_0x278767-0x0;var _0x3a99e4=_0x11ff[_0x278767];return _0x3a99e4;};'use strict';var FaxMessageEvents=require(_0xf11f('0x0'));var events=[_0xf11f('0x1'),'remove','update'];function createListener(_0x47e3d7,_0x4de253){return function(_0x139965){_0x4de253['emit'](_0x47e3d7,_0x139965);};}function removeListener(_0x564935,_0x1e626f){return function(){FaxMessageEvents[_0xf11f('0x2')](_0x564935,_0x1e626f);};}exports[_0xf11f('0x3')]=function(_0x37d1f9){for(var _0xc2fac2=0x0,_0x8d9766=events[_0xf11f('0x4')];_0xc2fac2<_0x8d9766;_0xc2fac2++){var _0x5a1449=events[_0xc2fac2];var _0x57852e=createListener('faxMessage:'+_0x5a1449,_0x37d1f9);FaxMessageEvents['on'](_0x5a1449,_0x57852e);}};
\ No newline at end of file
+var _0xee7f=['update','emit','removeListener','register','length','faxMessage:','remove'];(function(_0x23b112,_0x5cc751){var _0x12601c=function(_0x1b0200){while(--_0x1b0200){_0x23b112['push'](_0x23b112['shift']());}};_0x12601c(++_0x5cc751);}(_0xee7f,0xc3));var _0xfee7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xee7f[_0x321bb2];return _0x9c12ed;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=['save',_0xfee7('0x0'),_0xfee7('0x1')];function createListener(_0x3479c5,_0x410305){return function(_0x576bf0){_0x410305[_0xfee7('0x2')](_0x3479c5,_0x576bf0);};}function removeListener(_0xd86e36,_0x39133c){return function(){FaxMessageEvents[_0xfee7('0x3')](_0xd86e36,_0x39133c);};}exports[_0xfee7('0x4')]=function(_0x6681e7){for(var _0x34bf03=0x0,_0x482abf=events[_0xfee7('0x5')];_0x34bf03<_0x482abf;_0x34bf03++){var _0x216bfe=events[_0x34bf03];var _0x481f0e=createListener(_0xfee7('0x6')+_0x216bfe,_0x6681e7);FaxMessageEvents['on'](_0x216bfe,_0x481f0e);}};
\ No newline at end of file
index 2939457..20d5570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x222f=['/:id/reject','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','/:id','show','/:id/download','post','tracked','fax','create','put','update','/:id/accept'];(function(_0x5b2a4f,_0xc77712){var _0x37908e=function(_0x5d524f){while(--_0x5d524f){_0x5b2a4f['push'](_0x5b2a4f['shift']());}};_0x37908e(++_0xc77712);}(_0x222f,0x1a4));var _0xf222=function(_0x3ec501,_0x1d035a){_0x3ec501=_0x3ec501-0x0;var _0x5a3037=_0x222f[_0x3ec501];return _0x5a3037;};'use strict';var multer=require(_0xf222('0x0'));var util=require(_0xf222('0x1'));var path=require(_0xf222('0x2'));var timeout=require(_0xf222('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf222('0x4'));var auth=require(_0xf222('0x5'));var interaction=require(_0xf222('0x6'));var config=require(_0xf222('0x7'));var controller=require('./faxMessage.controller');router[_0xf222('0x8')]('/',auth['isAuthenticated'](),controller[_0xf222('0x9')]);router[_0xf222('0x8')]('/describe',auth[_0xf222('0xa')](),controller[_0xf222('0xb')]);router['get'](_0xf222('0xc'),auth[_0xf222('0xa')](),controller[_0xf222('0xd')]);router[_0xf222('0x8')](_0xf222('0xe'),auth[_0xf222('0xa')](),controller['download']);router[_0xf222('0xf')]('/',auth[_0xf222('0xa')](),interaction[_0xf222('0x10')](_0xf222('0x11'),'faxmessage:create'),controller[_0xf222('0x12')]);router[_0xf222('0x13')](_0xf222('0xc'),auth[_0xf222('0xa')](),controller[_0xf222('0x14')]);router[_0xf222('0x13')](_0xf222('0x15'),auth[_0xf222('0xa')](),controller['accept']);router['put'](_0xf222('0x16'),auth[_0xf222('0xa')](),controller['reject']);router[_0xf222('0x17')](_0xf222('0xc'),auth[_0xf222('0xa')](),controller[_0xf222('0x18')]);module[_0xf222('0x19')]=router;
\ No newline at end of file
+var _0xec56=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','tracked','fax','create','put','update','/:id/accept','reject','delete','exports','multer','connect-timeout','express'];(function(_0x3a0cf7,_0x3c6f9e){var _0x3cdd62=function(_0x2b5296){while(--_0x2b5296){_0x3a0cf7['push'](_0x3a0cf7['shift']());}};_0x3cdd62(++_0x3c6f9e);}(_0xec56,0x1bd));var _0x6ec5=function(_0xf3700d,_0x4d52ba){_0xf3700d=_0xf3700d-0x0;var _0x4f0ce5=_0xec56[_0xf3700d];return _0x4f0ce5;};'use strict';var multer=require(_0x6ec5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6ec5('0x1'));var express=require(_0x6ec5('0x2'));var router=express[_0x6ec5('0x3')]();var fs_extra=require(_0x6ec5('0x4'));var auth=require(_0x6ec5('0x5'));var interaction=require(_0x6ec5('0x6'));var config=require(_0x6ec5('0x7'));var controller=require(_0x6ec5('0x8'));router[_0x6ec5('0x9')]('/',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xb')]);router[_0x6ec5('0x9')](_0x6ec5('0xc'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xd')]);router[_0x6ec5('0x9')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xf')]);router['get'](_0x6ec5('0x10'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x11')]);router[_0x6ec5('0x12')]('/',auth[_0x6ec5('0xa')](),interaction[_0x6ec5('0x13')](_0x6ec5('0x14'),'faxmessage:create'),controller[_0x6ec5('0x15')]);router[_0x6ec5('0x16')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x17')]);router[_0x6ec5('0x16')](_0x6ec5('0x18'),auth[_0x6ec5('0xa')](),controller['accept']);router[_0x6ec5('0x16')]('/:id/reject',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x19')]);router[_0x6ec5('0x1a')](_0x6ec5('0xe'),auth[_0x6ec5('0xa')](),controller['destroy']);module[_0x6ec5('0x1b')]=router;
\ No newline at end of file
index e8a2ed8..47d6e1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8277=['rrmemory','beepall','exports','STRING','INTEGER'];(function(_0x125f0b,_0x2bb4c8){var _0x88d0e=function(_0x65d282){while(--_0x65d282){_0x125f0b['push'](_0x125f0b['shift']());}};_0x88d0e(++_0x2bb4c8);}(_0x8277,0xcf));var _0x7827=function(_0x4fc80b,_0xfe1b3d){_0x4fc80b=_0x4fc80b-0x0;var _0x119dba=_0x8277[_0x4fc80b];return _0x119dba;};'use strict';var Sequelize=require('sequelize');module[_0x7827('0x0')]={'name':{'type':Sequelize[_0x7827('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7827('0x1')]},'timeout':{'type':Sequelize[_0x7827('0x2')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x7827('0x3'),_0x7827('0x4'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x7827('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd1ca=['rrmemory','roundrobin','sequelize','exports','INTEGER','ENUM'];(function(_0x7922cc,_0x307745){var _0x3b8745=function(_0x505190){while(--_0x505190){_0x7922cc['push'](_0x7922cc['shift']());}};_0x3b8745(++_0x307745);}(_0xd1ca,0x140));var _0xad1c=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xd1ca[_0x3b0731];return _0x4204d7;};'use strict';var Sequelize=require(_0xad1c('0x0'));module[_0xad1c('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xad1c('0x2')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xad1c('0x3')](_0xad1c('0x4'),'beepall',_0xad1c('0x5')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 67f75f3..511eb13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cde=['body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMembers','UserFaxQueue','FaxQueueId','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','%s/%s','SIP','getTeams','addTeams','ids','Team','User','Agents','interface','sequelize','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','toString','QueryTypes','SELECT','all','union','compact','value','transaction','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','isArray','findOne','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','end','offset','undefined','count','limit','status','json','reject','save','update','then','get','FaxQueues','UserProfileResource','destroy','error','stack','name','send','index','FaxQueue','rawAttributes','key','map','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','findAll','catch','show','params','includeAll','include','merge','options','find','create'];(function(_0x783834,_0x38c810){var _0x22055f=function(_0x6a6998){while(--_0x6a6998){_0x783834['push'](_0x783834['shift']());}};_0x22055f(++_0x38c810);}(_0x1cde,0x1dc));var _0xe1cd=function(_0x3f0b29,_0x1c9069){_0x3f0b29=_0x3f0b29-0x0;var _0x473abc=_0x1cde[_0x3f0b29];return _0x473abc;};'use strict';var emlformat=require(_0xe1cd('0x0'));var rimraf=require(_0xe1cd('0x1'));var zipdir=require(_0xe1cd('0x2'));var jsonpatch=require(_0xe1cd('0x3'));var rp=require(_0xe1cd('0x4'));var moment=require(_0xe1cd('0x5'));var BPromise=require(_0xe1cd('0x6'));var Mustache=require(_0xe1cd('0x7'));var util=require(_0xe1cd('0x8'));var path=require(_0xe1cd('0x9'));var sox=require(_0xe1cd('0xa'));var csv=require(_0xe1cd('0xb'));var ejs=require(_0xe1cd('0xc'));var fs=require('fs');var fs_extra=require(_0xe1cd('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe1cd('0xe'));var toCsv=require(_0xe1cd('0xb'));var querystring=require(_0xe1cd('0xf'));var Papa=require(_0xe1cd('0x10'));var Redis=require(_0xe1cd('0x11'));var authService=require(_0xe1cd('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xe1cd('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe1cd('0x14'))(_0xe1cd('0x15'));var utils=require(_0xe1cd('0x16'));var config=require(_0xe1cd('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xe1cd('0x18'))['db'];config[_0xe1cd('0x19')]=_['defaults'](config[_0xe1cd('0x19')],{'host':_0xe1cd('0x1a'),'port':0x18eb});var socket=require(_0xe1cd('0x1b'))(new Redis(config[_0xe1cd('0x19')]));require('./faxQueue.socket')['register'](socket);function respondWithStatusCode(_0x2dbcc1,_0x5608ad){_0x5608ad=_0x5608ad||0xcc;return function(_0x4ec109){if(_0x4ec109){return _0x2dbcc1[_0xe1cd('0x1c')](_0x5608ad);}return _0x2dbcc1['status'](_0x5608ad)[_0xe1cd('0x1d')]();};}function respondWithResult(_0xa6deba,_0x29e8c3){_0x29e8c3=_0x29e8c3||0xc8;return function(_0x536dad){if(_0x536dad){return _0xa6deba['status'](_0x29e8c3)['json'](_0x536dad);}};}function respondWithFilteredResult(_0x42e64d,_0x130eb7){return function(_0x4b7207){if(_0x4b7207){var _0x26f061=typeof _0x130eb7[_0xe1cd('0x1e')]===_0xe1cd('0x1f')&&typeof _0x130eb7['limit']==='undefined';var _0x42ee7f=_0x4b7207['count'];var _0x24d728=_0x26f061?0x0:_0x130eb7['offset'];var _0x40b95a=_0x26f061?_0x4b7207[_0xe1cd('0x20')]:_0x130eb7['offset']+_0x130eb7[_0xe1cd('0x21')];var _0x463954;if(_0x40b95a>=_0x42ee7f){_0x40b95a=_0x42ee7f;_0x463954=0xc8;}else{_0x463954=0xce;}_0x42e64d[_0xe1cd('0x22')](_0x463954);return _0x42e64d['set']('Content-Range',_0x24d728+'-'+_0x40b95a+'/'+_0x42ee7f)[_0xe1cd('0x23')](_0x4b7207);}return null;};}function patchUpdates(_0x50abfb){return function(_0x487081){try{jsonpatch['apply'](_0x487081,_0x50abfb,!![]);}catch(_0x17a011){return BPromise[_0xe1cd('0x24')](_0x17a011);}return _0x487081[_0xe1cd('0x25')]();};}function saveUpdates(_0x3b766,_0x1df2c2){return function(_0x3d7581){if(_0x3d7581){return _0x3d7581[_0xe1cd('0x26')](_0x3b766)['then'](function(_0x52f8df){return _0x52f8df;});}return null;};}function removeEntity(_0x3d932a,_0x59cae1){return function(_0x4f1dac){if(_0x4f1dac){return _0x4f1dac['destroy']()[_0xe1cd('0x27')](function(){var _0x3de682=_0x4f1dac[_0xe1cd('0x28')]({'plain':!![]});var _0x381ce7=_0xe1cd('0x29');return db[_0xe1cd('0x2a')][_0xe1cd('0x2b')]({'where':{'type':_0x381ce7,'resourceId':_0x3de682['id']}})[_0xe1cd('0x27')](function(){return _0x4f1dac;});})['then'](function(){_0x3d932a['status'](0xcc)[_0xe1cd('0x1d')]();});}};}function handleEntityNotFound(_0x750a63,_0x441bc6){return function(_0x2e88a3){if(!_0x2e88a3){_0x750a63[_0xe1cd('0x1c')](0x194);}return _0x2e88a3;};}function handleError(_0x1cc1f9,_0x25f9ba){_0x25f9ba=_0x25f9ba||0x1f4;return function(_0x377ac7){logger[_0xe1cd('0x2c')](_0x377ac7[_0xe1cd('0x2d')]);if(_0x377ac7[_0xe1cd('0x2e')]){delete _0x377ac7[_0xe1cd('0x2e')];}_0x1cc1f9['status'](_0x25f9ba)[_0xe1cd('0x2f')](_0x377ac7);};}exports[_0xe1cd('0x30')]=function(_0x31b719,_0x222567){var _0x12ce73={},_0x4e3854={},_0x184059={'count':0x0,'rows':[]};var _0x264f38=_['map'](db[_0xe1cd('0x31')][_0xe1cd('0x32')],function(_0x45e186){return{'name':_0x45e186['fieldName'],'type':_0x45e186['type'][_0xe1cd('0x33')]};});_0x4e3854['model']=_[_0xe1cd('0x34')](_0x264f38,'name');_0x4e3854['query']=_[_0xe1cd('0x35')](_0x31b719[_0xe1cd('0x36')]);_0x4e3854[_0xe1cd('0x37')]=_[_0xe1cd('0x38')](_0x4e3854['model'],_0x4e3854[_0xe1cd('0x36')]);_0x12ce73[_0xe1cd('0x39')]=_[_0xe1cd('0x38')](_0x4e3854[_0xe1cd('0x3a')],qs[_0xe1cd('0x3b')](_0x31b719[_0xe1cd('0x36')][_0xe1cd('0x3b')]));_0x12ce73[_0xe1cd('0x39')]=_0x12ce73[_0xe1cd('0x39')][_0xe1cd('0x3c')]?_0x12ce73[_0xe1cd('0x39')]:_0x4e3854[_0xe1cd('0x3a')];if(!_0x31b719[_0xe1cd('0x36')][_0xe1cd('0x3d')](_0xe1cd('0x3e'))){_0x12ce73[_0xe1cd('0x21')]=qs[_0xe1cd('0x21')](_0x31b719[_0xe1cd('0x36')][_0xe1cd('0x21')]);_0x12ce73[_0xe1cd('0x1e')]=qs[_0xe1cd('0x1e')](_0x31b719[_0xe1cd('0x36')][_0xe1cd('0x1e')]);}_0x12ce73[_0xe1cd('0x3f')]=qs[_0xe1cd('0x40')](_0x31b719[_0xe1cd('0x36')][_0xe1cd('0x40')]);_0x12ce73[_0xe1cd('0x41')]=qs['filters'](_[_0xe1cd('0x42')](_0x31b719[_0xe1cd('0x36')],_0x4e3854[_0xe1cd('0x37')]),_0x264f38);if(_0x31b719[_0xe1cd('0x36')][_0xe1cd('0x43')]){_0x12ce73[_0xe1cd('0x41')]=_['merge'](_0x12ce73['where'],{'$or':_[_0xe1cd('0x34')](_0x264f38,function(_0x1b4f3c){if(_0x1b4f3c[_0xe1cd('0x44')]!==_0xe1cd('0x45')){var _0x3d780f={};_0x3d780f[_0x1b4f3c[_0xe1cd('0x2e')]]={'$like':'%'+_0x31b719['query'][_0xe1cd('0x43')]+'%'};return _0x3d780f;}})});}_0x12ce73=_['merge']({},_0x12ce73,_0x31b719['options']);var _0x32c677={'where':_0x12ce73[_0xe1cd('0x41')]};return db[_0xe1cd('0x31')][_0xe1cd('0x20')](_0x32c677)[_0xe1cd('0x27')](function(_0x1addf1){_0x184059[_0xe1cd('0x20')]=_0x1addf1;if(_0x31b719[_0xe1cd('0x36')]['includeAll']){_0x12ce73['include']=[{'all':!![]}];}return db['FaxQueue'][_0xe1cd('0x46')](_0x12ce73);})[_0xe1cd('0x27')](function(_0x20c4d4){_0x184059['rows']=_0x20c4d4;return _0x184059;})[_0xe1cd('0x27')](respondWithFilteredResult(_0x222567,_0x12ce73))[_0xe1cd('0x47')](handleError(_0x222567,null));};exports[_0xe1cd('0x48')]=function(_0x3e1d25,_0x280aac){var _0xd1fa29={'raw':!![],'where':{'id':_0x3e1d25[_0xe1cd('0x49')]['id']}},_0x5e4b05={};_0x5e4b05[_0xe1cd('0x3a')]=_[_0xe1cd('0x35')](db['FaxQueue'][_0xe1cd('0x32')]);_0x5e4b05[_0xe1cd('0x36')]=_[_0xe1cd('0x35')](_0x3e1d25['query']);_0x5e4b05[_0xe1cd('0x37')]=_['intersection'](_0x5e4b05[_0xe1cd('0x3a')],_0x5e4b05['query']);_0xd1fa29[_0xe1cd('0x39')]=_[_0xe1cd('0x38')](_0x5e4b05['model'],qs[_0xe1cd('0x3b')](_0x3e1d25[_0xe1cd('0x36')][_0xe1cd('0x3b')]));_0xd1fa29[_0xe1cd('0x39')]=_0xd1fa29['attributes'][_0xe1cd('0x3c')]?_0xd1fa29['attributes']:_0x5e4b05[_0xe1cd('0x3a')];if(_0x3e1d25['query'][_0xe1cd('0x4a')]){_0xd1fa29[_0xe1cd('0x4b')]=[{'all':!![]}];}_0xd1fa29=_[_0xe1cd('0x4c')]({},_0xd1fa29,_0x3e1d25[_0xe1cd('0x4d')]);return db[_0xe1cd('0x31')][_0xe1cd('0x4e')](_0xd1fa29)[_0xe1cd('0x27')](handleEntityNotFound(_0x280aac,null))[_0xe1cd('0x27')](respondWithResult(_0x280aac,null))['catch'](handleError(_0x280aac,null));};exports['create']=function(_0x14c8b8,_0x52949f){return db[_0xe1cd('0x31')][_0xe1cd('0x4f')](_0x14c8b8[_0xe1cd('0x50')],{})[_0xe1cd('0x27')](function(_0x428601){var _0x53f54f=_0x14c8b8['user']['get']({'plain':!![]});if(!_0x53f54f)throw new Error(_0xe1cd('0x51'));if(_0x53f54f[_0xe1cd('0x52')]===_0xe1cd('0x53')){var _0x28ac31=_0x428601[_0xe1cd('0x28')]({'plain':!![]});var _0x275800=_0xe1cd('0x29');return db[_0xe1cd('0x54')][_0xe1cd('0x4e')]({'where':{'name':_0x275800,'userProfileId':_0x53f54f[_0xe1cd('0x55')]},'raw':!![]})['then'](function(_0x1facca){if(_0x1facca&&_0x1facca[_0xe1cd('0x56')]===0x0){return db['UserProfileResource']['create']({'name':_0x28ac31['name'],'resourceId':_0x28ac31['id'],'type':_0x1facca[_0xe1cd('0x2e')],'sectionId':_0x1facca['id']},{})[_0xe1cd('0x27')](function(){return _0x428601;});}else{return _0x428601;}})[_0xe1cd('0x47')](function(_0x20f99e){logger[_0xe1cd('0x2c')](_0xe1cd('0x57'),_0x20f99e);throw _0x20f99e;});}return _0x428601;})['then'](respondWithResult(_0x52949f,0xc9))[_0xe1cd('0x47')](handleError(_0x52949f,null));};exports[_0xe1cd('0x26')]=function(_0x1a8fa2,_0x5a7a00){if(_0x1a8fa2['body']['id']){delete _0x1a8fa2['body']['id'];}return db[_0xe1cd('0x31')][_0xe1cd('0x4e')]({'where':{'id':_0x1a8fa2[_0xe1cd('0x49')]['id']}})['then'](handleEntityNotFound(_0x5a7a00,null))['then'](saveUpdates(_0x1a8fa2[_0xe1cd('0x50')],null))['then'](respondWithResult(_0x5a7a00,null))[_0xe1cd('0x47')](handleError(_0x5a7a00,null));};exports['destroy']=function(_0x2988b9,_0x34dd07){return db[_0xe1cd('0x31')][_0xe1cd('0x4e')]({'where':{'id':_0x2988b9['params']['id']}})['then'](handleEntityNotFound(_0x34dd07,null))[_0xe1cd('0x27')](removeEntity(_0x34dd07,null))[_0xe1cd('0x47')](handleError(_0x34dd07,null));};exports['describe']=function(_0x4fae0e,_0x1f515a){return db[_0xe1cd('0x31')]['describe']()[_0xe1cd('0x27')](respondWithResult(_0x1f515a,null))['catch'](handleError(_0x1f515a,null));};exports[_0xe1cd('0x58')]=function(_0x40c3e9,_0x51b8ef,_0x15c067){var _0x2ba83b={'raw':!![],'where':{}},_0x380834={},_0x515527;return db['FaxQueue']['findOne']({'where':{'id':_0x40c3e9[_0xe1cd('0x49')]['id']}})[_0xe1cd('0x27')](handleEntityNotFound(_0x51b8ef,null))[_0xe1cd('0x27')](function(_0x22a086){if(_0x22a086){_0x515527=_0x22a086[_0xe1cd('0x28')]({'plain':!![]});_0x380834['model']=_['keys'](db[_0xe1cd('0x59')]['rawAttributes']);_0x380834[_0xe1cd('0x36')]=_[_0xe1cd('0x35')](_0x40c3e9[_0xe1cd('0x36')]);_0x380834['filters']=_[_0xe1cd('0x38')](_0x380834[_0xe1cd('0x3a')],_0x380834['query']);_0x2ba83b[_0xe1cd('0x39')]=_[_0xe1cd('0x38')](_0x380834['model'],qs['fields'](_0x40c3e9[_0xe1cd('0x36')]['fields']));_0x2ba83b[_0xe1cd('0x39')]=_0x2ba83b[_0xe1cd('0x39')][_0xe1cd('0x3c')]?_0x2ba83b[_0xe1cd('0x39')]:_0x380834[_0xe1cd('0x3a')];if(!_0x40c3e9[_0xe1cd('0x36')][_0xe1cd('0x3d')]('nolimit')){_0x2ba83b[_0xe1cd('0x21')]=qs[_0xe1cd('0x21')](_0x40c3e9[_0xe1cd('0x36')]['limit']);_0x2ba83b[_0xe1cd('0x1e')]=qs['offset'](_0x40c3e9['query'][_0xe1cd('0x1e')]);}_0x2ba83b['order']=qs[_0xe1cd('0x40')](_0x40c3e9[_0xe1cd('0x36')][_0xe1cd('0x40')]);_0x2ba83b['where']=qs[_0xe1cd('0x37')](_[_0xe1cd('0x42')](_0x40c3e9[_0xe1cd('0x36')],_0x380834[_0xe1cd('0x37')]));_0x2ba83b[_0xe1cd('0x41')][_0xe1cd('0x5a')]=_0x22a086['id'];if(_0x40c3e9[_0xe1cd('0x36')]['filter']){_0x2ba83b[_0xe1cd('0x41')]=_[_0xe1cd('0x4c')](_0x2ba83b['where'],{'$or':_[_0xe1cd('0x34')](_0x2ba83b['attributes'],function(_0x238691){var _0x29beda={};_0x29beda[_0x238691]={'$like':'%'+_0x40c3e9[_0xe1cd('0x36')]['filter']+'%'};return _0x29beda;})});}_0x2ba83b=_[_0xe1cd('0x4c')]({},_0x2ba83b,_0x40c3e9[_0xe1cd('0x4d')]);return db[_0xe1cd('0x59')][_0xe1cd('0x46')](_0x2ba83b);}})[_0xe1cd('0x27')](function(_0x1f4d7b){if(_0x1f4d7b){return db['User'][_0xe1cd('0x5b')]({'where':{'id':_['map'](_0x1f4d7b,_0xe1cd('0x5c')),'role':_0xe1cd('0x5d')},'attributes':['id',_0xe1cd('0x2e'),_0xe1cd('0x5e'),_0xe1cd('0x5f'),_0xe1cd('0x60')]});}})['then'](function(_0x119d35){if(_0x119d35){return{'count':_0x119d35[_0xe1cd('0x20')],'rows':_['map'](_0x119d35['rows'],function(_0xfa2d02){return{'membername':_0xfa2d02['name'],'UserId':_0xfa2d02['id'],'queue_name':_0x515527['name'],'FaxQueueId':_0x515527['id'],'interface':util['format'](_0xe1cd('0x61'),_0xe1cd('0x62'),_0xfa2d02['name']),'penalty':0x0,'paused':_0xfa2d02['faxPause'],'createdAt':_0xfa2d02[_0xe1cd('0x60')],'updatedAt':_0xfa2d02['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x51b8ef,_0x2ba83b))[_0xe1cd('0x47')](handleError(_0x51b8ef,null));};exports[_0xe1cd('0x63')]=function(_0x15ab81,_0x14889c,_0x3a1ed4){var _0x45ed2e={};var _0x1ef898={};var _0x4dffec;var _0x67b65;return db[_0xe1cd('0x31')]['findOne']({'where':{'id':_0x15ab81['params']['id']}})['then'](handleEntityNotFound(_0x14889c,null))['then'](function(_0x292243){if(_0x292243){_0x4dffec=_0x292243;_0x1ef898['model']=_[_0xe1cd('0x35')](db['Team'][_0xe1cd('0x32')]);_0x1ef898[_0xe1cd('0x36')]=_[_0xe1cd('0x35')](_0x15ab81['query']);_0x1ef898[_0xe1cd('0x37')]=_[_0xe1cd('0x38')](_0x1ef898[_0xe1cd('0x3a')],_0x1ef898[_0xe1cd('0x36')]);_0x45ed2e[_0xe1cd('0x39')]=_[_0xe1cd('0x38')](_0x1ef898[_0xe1cd('0x3a')],qs[_0xe1cd('0x3b')](_0x15ab81[_0xe1cd('0x36')][_0xe1cd('0x3b')]));_0x45ed2e[_0xe1cd('0x39')]=_0x45ed2e['attributes'][_0xe1cd('0x3c')]?_0x45ed2e[_0xe1cd('0x39')]:_0x1ef898[_0xe1cd('0x3a')];_0x45ed2e[_0xe1cd('0x3f')]=qs['sort'](_0x15ab81[_0xe1cd('0x36')][_0xe1cd('0x40')]);_0x45ed2e['where']=qs[_0xe1cd('0x37')](_[_0xe1cd('0x42')](_0x15ab81[_0xe1cd('0x36')],_0x1ef898[_0xe1cd('0x37')]));if(_0x15ab81[_0xe1cd('0x36')]['filter']){_0x45ed2e[_0xe1cd('0x41')]=_[_0xe1cd('0x4c')](_0x45ed2e[_0xe1cd('0x41')],{'$or':_[_0xe1cd('0x34')](_0x45ed2e[_0xe1cd('0x39')],function(_0x5b4d29){var _0x3b3b35={};_0x3b3b35[_0x5b4d29]={'$like':'%'+_0x15ab81[_0xe1cd('0x36')][_0xe1cd('0x43')]+'%'};return _0x3b3b35;})});}_0x45ed2e=_[_0xe1cd('0x4c')]({},_0x45ed2e,_0x15ab81[_0xe1cd('0x4d')]);return _0x4dffec[_0xe1cd('0x63')](_0x45ed2e);}})[_0xe1cd('0x27')](function(_0x51ab74){if(_0x51ab74){_0x67b65=_0x51ab74['length'];if(!_0x15ab81[_0xe1cd('0x36')][_0xe1cd('0x3d')]('nolimit')){_0x45ed2e['limit']=qs[_0xe1cd('0x21')](_0x15ab81[_0xe1cd('0x36')][_0xe1cd('0x21')]);_0x45ed2e[_0xe1cd('0x1e')]=qs[_0xe1cd('0x1e')](_0x15ab81[_0xe1cd('0x36')][_0xe1cd('0x1e')]);}return _0x4dffec[_0xe1cd('0x63')](_0x45ed2e);}})[_0xe1cd('0x27')](function(_0xa43e54){if(_0xa43e54){return _0xa43e54?{'count':_0x67b65,'rows':_0xa43e54}:null;}})[_0xe1cd('0x27')](respondWithResult(_0x14889c,null))['catch'](handleError(_0x14889c,null));};exports[_0xe1cd('0x64')]=function(_0x833819,_0x3c1a97,_0x3991e3){var _0x2d24d6=_0x833819['body'][_0xe1cd('0x65')];return db[_0xe1cd('0x66')][_0xe1cd('0x46')]({'where':{'id':_0x2d24d6},'attributes':['id'],'include':[{'model':db[_0xe1cd('0x67')],'as':_0xe1cd('0x68'),'attributes':['id','name','online','voicePause',_0xe1cd('0x69')],'raw':!![]}]})[_0xe1cd('0x27')](function(_0x305faf){if(_0x305faf){var _0x3334f1=_['flatMap'](_0x305faf,function(_0x2317a7){var _0x5f3073=_0x2317a7[_0xe1cd('0x28')]({'plain':!![]});return _0x5f3073['Agents'];});return db[_0xe1cd('0x31')]['find']({'where':{'id':_0x833819['params']['id']}})[_0xe1cd('0x27')](function(_0x19d647){return db[_0xe1cd('0x6a')]['transaction'](function(_0x4c576e){return _0x19d647[_0xe1cd('0x64')](_0x2d24d6,{'transaction':_0x4c576e})['then'](function(){return BPromise[_0xe1cd('0x6b')](_0x3334f1,function(_0xa793fb){return db[_0xe1cd('0x59')][_0xe1cd('0x6c')]({'where':{'UserId':_0xa793fb['id'],'FaxQueueId':_0x833819[_0xe1cd('0x49')]['id']},'transaction':_0x4c576e});});})['then'](function(){_0x3334f1[_0xe1cd('0x6d')](function(_0x45e482){socket[_0xe1cd('0x6e')](_0xe1cd('0x6f'),{'UserId':_0x45e482['id'],'FaxQueueId':_0x19d647['id']});});});});});}})['then'](respondWithStatusCode(_0x3c1a97,null))['catch'](handleError(_0x3c1a97,null));};exports[_0xe1cd('0x70')]=function(_0x5da1c2,_0x5c0081,_0x185b7d){return db[_0xe1cd('0x66')]['findAll']({'where':{'id':_0x5da1c2['query']['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe1cd('0x68'),'attributes':['id'],'raw':!![]}]})[_0xe1cd('0x27')](handleEntityNotFound(_0x5c0081,null))[_0xe1cd('0x27')](function(_0x240c37){var _0x1691da=_[_0xe1cd('0x34')](_0x240c37,'id');var _0x39b2cc=[];var _0x7f971c=[];var _0x20f5b6=squel[_0xe1cd('0x71')]();_0x20f5b6[_0xe1cd('0x72')](_0xe1cd('0x73'))[_0xe1cd('0x74')](_0xe1cd('0x75'),'tq')[_0xe1cd('0x76')](_0xe1cd('0x77'),'ut',_0xe1cd('0x78'))[_0xe1cd('0x41')](_0xe1cd('0x79'),_0x5da1c2[_0xe1cd('0x49')]['id']);for(var _0x166b96=0x0;_0x166b96<_0x240c37['length'];_0x166b96+=0x1){let _0xa12b07=_0x240c37[_0x166b96];for(var _0x3df5f7=0x0;_0x3df5f7<_0xa12b07[_0xe1cd('0x68')]['length'];_0x3df5f7+=0x1){let _0x2cbca1=_0xa12b07[_0xe1cd('0x68')][_0x3df5f7];var _0x5c5d4f=_0x20f5b6['clone']();_0x5c5d4f[_0xe1cd('0x41')]('ut.UserId\x20=\x20?',_0x2cbca1['id']);_0x7f971c['push'](db['sequelize'][_0xe1cd('0x36')](_0x5c5d4f[_0xe1cd('0x7a')](),{'type':db[_0xe1cd('0x6a')][_0xe1cd('0x7b')][_0xe1cd('0x7c')]})['then'](function(_0x2afa70){if(_0x2afa70[_0xe1cd('0x3c')]===0x1){return _0x2cbca1['id'];}else{var _0x133509=_['every'](_[_0xe1cd('0x34')](_0x2afa70,'TeamId'),function(_0x3613c4){return _['includes'](_0x1691da,_0x3613c4);});if(_0x133509){return _0x2cbca1['id'];}}}));}}return BPromise[_0xe1cd('0x7d')](_0x7f971c)[_0xe1cd('0x27')](function(_0x4aa589){_0x39b2cc=_(_0x39b2cc)[_0xe1cd('0x7e')](_0x4aa589)[_0xe1cd('0x7f')]()[_0xe1cd('0x80')]();return db[_0xe1cd('0x31')][_0xe1cd('0x4e')]({'where':{'id':_0x5da1c2[_0xe1cd('0x49')]['id']}})[_0xe1cd('0x27')](function(_0x1680e8){return db['sequelize'][_0xe1cd('0x81')](function(_0x1929f5){return _0x1680e8['removeTeams'](_0x5da1c2[_0xe1cd('0x36')][_0xe1cd('0x65')],{'transaction':_0x1929f5})[_0xe1cd('0x27')](function(){if(!_[_0xe1cd('0x82')](_0x39b2cc)){return _0x1680e8[_0xe1cd('0x83')](_0x39b2cc,{'transaction':_0x1929f5});}})[_0xe1cd('0x27')](function(){_0x39b2cc['forEach'](function(_0x221568){socket['emit'](_0xe1cd('0x84'),{'UserId':_0x221568,'FaxQueueId':_0x1680e8['id']});});});});});});})['then'](respondWithStatusCode(_0x5c0081,null))[_0xe1cd('0x47')](handleError(_0x5c0081,null));};exports[_0xe1cd('0x85')]=function(_0x2e1590,_0x2a14c4,_0x16ae6b){return db['FaxQueue'][_0xe1cd('0x4e')]({'where':{'id':_0x2e1590[_0xe1cd('0x49')]['id']}})['then'](handleEntityNotFound(_0x2a14c4,null))[_0xe1cd('0x27')](function(_0x4a9683){if(_0x4a9683){return _0x4a9683[_0xe1cd('0x85')](_0x2e1590[_0xe1cd('0x50')][_0xe1cd('0x65')],_[_0xe1cd('0x86')](_0x2e1590[_0xe1cd('0x50')],[_0xe1cd('0x65'),'id'])||{})[_0xe1cd('0x87')](function(_0x2fac68){for(var _0x3aa0cb=0x0;_0x3aa0cb<_0x2e1590[_0xe1cd('0x50')][_0xe1cd('0x65')][_0xe1cd('0x3c')];_0x3aa0cb+=0x1){socket[_0xe1cd('0x6e')](_0xe1cd('0x6f'),{'UserId':Number(_0x2e1590[_0xe1cd('0x50')][_0xe1cd('0x65')][_0x3aa0cb]),'FaxQueueId':Number(_0x2e1590['params']['id'])});}return _0x2fac68;});}})['then'](respondWithResult(_0x2a14c4,null))[_0xe1cd('0x47')](handleError(_0x2a14c4,null));};exports[_0xe1cd('0x83')]=function(_0x43f54a,_0x553ddc,_0x5ae91){return db['FaxQueue'][_0xe1cd('0x4e')]({'where':{'id':_0x43f54a[_0xe1cd('0x49')]['id']}})[_0xe1cd('0x27')](handleEntityNotFound(_0x553ddc,null))[_0xe1cd('0x27')](function(_0x46aad3){if(_0x46aad3){return _0x46aad3['removeAgents'](_0x43f54a[_0xe1cd('0x36')][_0xe1cd('0x65')])[_0xe1cd('0x27')](function(){if(_[_0xe1cd('0x88')](_0x43f54a[_0xe1cd('0x36')][_0xe1cd('0x65')])){for(var _0x21bc8f=0x0;_0x21bc8f<_0x43f54a['query'][_0xe1cd('0x65')]['length'];_0x21bc8f+=0x1){socket['emit']('userFaxQueue:remove',{'UserId':Number(_0x43f54a[_0xe1cd('0x36')]['ids'][_0x21bc8f]),'FaxQueueId':Number(_0x43f54a['params']['id'])});}}else{socket[_0xe1cd('0x6e')](_0xe1cd('0x84'),{'UserId':Number(_0x43f54a[_0xe1cd('0x36')][_0xe1cd('0x65')]),'FaxQueueId':Number(_0x43f54a[_0xe1cd('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x553ddc,null))[_0xe1cd('0x47')](handleError(_0x553ddc,null));};exports['getAgents']=function(_0x3ce081,_0xb42dc5,_0x4c8341){var _0x19aa1a={};var _0x451b02={};var _0x31ea51;var _0x378634;return db[_0xe1cd('0x31')][_0xe1cd('0x89')]({'where':{'id':_0x3ce081[_0xe1cd('0x49')]['id']}})['then'](handleEntityNotFound(_0xb42dc5,null))[_0xe1cd('0x27')](function(_0xf9330c){if(_0xf9330c){_0x31ea51=_0xf9330c;_0x451b02[_0xe1cd('0x3a')]=_[_0xe1cd('0x35')](db[_0xe1cd('0x67')][_0xe1cd('0x32')]);_0x451b02[_0xe1cd('0x36')]=_['keys'](_0x3ce081[_0xe1cd('0x36')]);_0x451b02[_0xe1cd('0x37')]=_[_0xe1cd('0x38')](_0x451b02[_0xe1cd('0x3a')],_0x451b02['query']);_0x19aa1a[_0xe1cd('0x39')]=_[_0xe1cd('0x38')](_0x451b02['model'],qs[_0xe1cd('0x3b')](_0x3ce081[_0xe1cd('0x36')][_0xe1cd('0x3b')]));_0x19aa1a['attributes']=_0x19aa1a[_0xe1cd('0x39')][_0xe1cd('0x3c')]?_0x19aa1a[_0xe1cd('0x39')]:_0x451b02[_0xe1cd('0x3a')];_0x19aa1a[_0xe1cd('0x3f')]=qs[_0xe1cd('0x40')](_0x3ce081[_0xe1cd('0x36')]['sort']);_0x19aa1a[_0xe1cd('0x41')]=qs['filters'](_['pick'](_0x3ce081[_0xe1cd('0x36')],_0x451b02[_0xe1cd('0x37')]));if(_0x3ce081[_0xe1cd('0x36')][_0xe1cd('0x43')]){_0x19aa1a[_0xe1cd('0x41')]=_['merge'](_0x19aa1a[_0xe1cd('0x41')],{'$or':_[_0xe1cd('0x34')](_0x19aa1a[_0xe1cd('0x39')],function(_0x446554){var _0x2daf24={};_0x2daf24[_0x446554]={'$like':'%'+_0x3ce081['query'][_0xe1cd('0x43')]+'%'};return _0x2daf24;})});}_0x19aa1a=_['merge']({},_0x19aa1a,_0x3ce081['options']);return _0x31ea51[_0xe1cd('0x8a')](_0x19aa1a);}})[_0xe1cd('0x27')](function(_0x51a09a){if(_0x51a09a){_0x378634=_0x51a09a[_0xe1cd('0x3c')];if(!_0x3ce081[_0xe1cd('0x36')][_0xe1cd('0x3d')](_0xe1cd('0x3e'))){_0x19aa1a[_0xe1cd('0x21')]=qs['limit'](_0x3ce081['query'][_0xe1cd('0x21')]);_0x19aa1a['offset']=qs[_0xe1cd('0x1e')](_0x3ce081['query'][_0xe1cd('0x1e')]);}return _0x31ea51[_0xe1cd('0x8a')](_0x19aa1a);}})[_0xe1cd('0x27')](function(_0x3faf96){if(_0x3faf96){return _0x3faf96?{'count':_0x378634,'rows':_0x3faf96}:null;}})[_0xe1cd('0x27')](respondWithResult(_0xb42dc5,null))[_0xe1cd('0x47')](handleError(_0xb42dc5,null));};
\ No newline at end of file
+var _0x0c88=['UserFaxQueue','order','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','getTeams','pick','ids','Team','online','voicePause','interface','flatMap','Agents','transaction','addTeams','each','findOrCreate','forEach','emit','removeTeams','select','field','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','userFaxQueue:save','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','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/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','FaxQueues','error','stack','name','send','map','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','FaxQueue','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','UserProfileResource','describe','getMembers','findOne'];(function(_0x343319,_0x44ad88){var _0x164678=function(_0x527f8c){while(--_0x527f8c){_0x343319['push'](_0x343319['shift']());}};_0x164678(++_0x44ad88);}(_0x0c88,0xc3));var _0x80c8=function(_0x115621,_0x341cde){_0x115621=_0x115621-0x0;var _0x5ef5ce=_0x0c88[_0x115621];return _0x5ef5ce;};'use strict';var emlformat=require(_0x80c8('0x0'));var rimraf=require(_0x80c8('0x1'));var zipdir=require(_0x80c8('0x2'));var jsonpatch=require(_0x80c8('0x3'));var rp=require('request-promise');var moment=require(_0x80c8('0x4'));var BPromise=require(_0x80c8('0x5'));var Mustache=require('mustache');var util=require(_0x80c8('0x6'));var path=require('path');var sox=require(_0x80c8('0x7'));var csv=require(_0x80c8('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x80c8('0x9'));var squel=require(_0x80c8('0xa'));var crypto=require(_0x80c8('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x80c8('0xc'));var toCsv=require(_0x80c8('0x8'));var querystring=require(_0x80c8('0xd'));var Papa=require(_0x80c8('0xe'));var Redis=require(_0x80c8('0xf'));var authService=require(_0x80c8('0x10'));var qs=require(_0x80c8('0x11'));var as=require(_0x80c8('0x12'));var hardwareService=require(_0x80c8('0x13'));var logger=require(_0x80c8('0x14'))(_0x80c8('0x15'));var utils=require(_0x80c8('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x80c8('0x17'));var db=require(_0x80c8('0x18'))['db'];config['redis']=_[_0x80c8('0x19')](config[_0x80c8('0x1a')],{'host':_0x80c8('0x1b'),'port':0x18eb});var socket=require(_0x80c8('0x1c'))(new Redis(config['redis']));require(_0x80c8('0x1d'))[_0x80c8('0x1e')](socket);function respondWithStatusCode(_0x5762a9,_0x479737){_0x479737=_0x479737||0xcc;return function(_0x3059b4){if(_0x3059b4){return _0x5762a9[_0x80c8('0x1f')](_0x479737);}return _0x5762a9[_0x80c8('0x20')](_0x479737)[_0x80c8('0x21')]();};}function respondWithResult(_0x29152c,_0x38f52e){_0x38f52e=_0x38f52e||0xc8;return function(_0x35a65c){if(_0x35a65c){return _0x29152c[_0x80c8('0x20')](_0x38f52e)[_0x80c8('0x22')](_0x35a65c);}};}function respondWithFilteredResult(_0x4c73ad,_0x1b8d1f){return function(_0x19301f){if(_0x19301f){var _0x31b097=typeof _0x1b8d1f[_0x80c8('0x23')]===_0x80c8('0x24')&&typeof _0x1b8d1f[_0x80c8('0x25')]===_0x80c8('0x24');var _0x4ec7fb=_0x19301f[_0x80c8('0x26')];var _0x19523e=_0x31b097?0x0:_0x1b8d1f[_0x80c8('0x23')];var _0x244c62=_0x31b097?_0x19301f[_0x80c8('0x26')]:_0x1b8d1f[_0x80c8('0x23')]+_0x1b8d1f[_0x80c8('0x25')];var _0x44f288;if(_0x244c62>=_0x4ec7fb){_0x244c62=_0x4ec7fb;_0x44f288=0xc8;}else{_0x44f288=0xce;}_0x4c73ad[_0x80c8('0x20')](_0x44f288);return _0x4c73ad[_0x80c8('0x27')](_0x80c8('0x28'),_0x19523e+'-'+_0x244c62+'/'+_0x4ec7fb)[_0x80c8('0x22')](_0x19301f);}return null;};}function patchUpdates(_0x5f4afd){return function(_0x2d2438){try{jsonpatch['apply'](_0x2d2438,_0x5f4afd,!![]);}catch(_0x185aac){return BPromise[_0x80c8('0x29')](_0x185aac);}return _0x2d2438[_0x80c8('0x2a')]();};}function saveUpdates(_0x1f6122,_0x5852f0){return function(_0x162c47){if(_0x162c47){return _0x162c47['update'](_0x1f6122)[_0x80c8('0x2b')](function(_0x4a63eb){return _0x4a63eb;});}return null;};}function removeEntity(_0x40bcfc,_0x265a2d){return function(_0xd40c01){if(_0xd40c01){return _0xd40c01[_0x80c8('0x2c')]()[_0x80c8('0x2b')](function(){var _0x45a077=_0xd40c01['get']({'plain':!![]});var _0x83ec70=_0x80c8('0x2d');return db['UserProfileResource'][_0x80c8('0x2c')]({'where':{'type':_0x83ec70,'resourceId':_0x45a077['id']}})[_0x80c8('0x2b')](function(){return _0xd40c01;});})[_0x80c8('0x2b')](function(){_0x40bcfc['status'](0xcc)[_0x80c8('0x21')]();});}};}function handleEntityNotFound(_0x1c4995,_0x54e325){return function(_0x55ac47){if(!_0x55ac47){_0x1c4995[_0x80c8('0x1f')](0x194);}return _0x55ac47;};}function handleError(_0xb0a117,_0x316f82){_0x316f82=_0x316f82||0x1f4;return function(_0x2c4bdb){logger[_0x80c8('0x2e')](_0x2c4bdb[_0x80c8('0x2f')]);if(_0x2c4bdb['name']){delete _0x2c4bdb[_0x80c8('0x30')];}_0xb0a117['status'](_0x316f82)[_0x80c8('0x31')](_0x2c4bdb);};}exports['index']=function(_0x32c893,_0x18e14f){var _0x4f970c={},_0x3f5e92={},_0x444936={'count':0x0,'rows':[]};var _0x1477bd=_[_0x80c8('0x32')](db['FaxQueue'][_0x80c8('0x33')],function(_0xcbca9f){return{'name':_0xcbca9f['fieldName'],'type':_0xcbca9f[_0x80c8('0x34')]['key']};});_0x3f5e92[_0x80c8('0x35')]=_[_0x80c8('0x32')](_0x1477bd,_0x80c8('0x30'));_0x3f5e92['query']=_['keys'](_0x32c893[_0x80c8('0x36')]);_0x3f5e92[_0x80c8('0x37')]=_[_0x80c8('0x38')](_0x3f5e92[_0x80c8('0x35')],_0x3f5e92[_0x80c8('0x36')]);_0x4f970c[_0x80c8('0x39')]=_[_0x80c8('0x38')](_0x3f5e92[_0x80c8('0x35')],qs[_0x80c8('0x3a')](_0x32c893[_0x80c8('0x36')][_0x80c8('0x3a')]));_0x4f970c['attributes']=_0x4f970c[_0x80c8('0x39')][_0x80c8('0x3b')]?_0x4f970c[_0x80c8('0x39')]:_0x3f5e92['model'];if(!_0x32c893[_0x80c8('0x36')][_0x80c8('0x3c')](_0x80c8('0x3d'))){_0x4f970c[_0x80c8('0x25')]=qs['limit'](_0x32c893[_0x80c8('0x36')][_0x80c8('0x25')]);_0x4f970c['offset']=qs[_0x80c8('0x23')](_0x32c893[_0x80c8('0x36')][_0x80c8('0x23')]);}_0x4f970c['order']=qs[_0x80c8('0x3e')](_0x32c893['query']['sort']);_0x4f970c[_0x80c8('0x3f')]=qs[_0x80c8('0x37')](_['pick'](_0x32c893['query'],_0x3f5e92[_0x80c8('0x37')]),_0x1477bd);if(_0x32c893['query'][_0x80c8('0x40')]){_0x4f970c['where']=_[_0x80c8('0x41')](_0x4f970c[_0x80c8('0x3f')],{'$or':_[_0x80c8('0x32')](_0x1477bd,function(_0x33bb8c){if(_0x33bb8c[_0x80c8('0x34')]!==_0x80c8('0x42')){var _0x10cdd3={};_0x10cdd3[_0x33bb8c[_0x80c8('0x30')]]={'$like':'%'+_0x32c893[_0x80c8('0x36')]['filter']+'%'};return _0x10cdd3;}})});}_0x4f970c=_[_0x80c8('0x41')]({},_0x4f970c,_0x32c893[_0x80c8('0x43')]);var _0x1ab5e4={'where':_0x4f970c[_0x80c8('0x3f')]};return db['FaxQueue']['count'](_0x1ab5e4)[_0x80c8('0x2b')](function(_0x3d9ee2){_0x444936[_0x80c8('0x26')]=_0x3d9ee2;if(_0x32c893[_0x80c8('0x36')][_0x80c8('0x44')]){_0x4f970c['include']=[{'all':!![]}];}return db['FaxQueue'][_0x80c8('0x45')](_0x4f970c);})[_0x80c8('0x2b')](function(_0x18211d){_0x444936[_0x80c8('0x46')]=_0x18211d;return _0x444936;})[_0x80c8('0x2b')](respondWithFilteredResult(_0x18e14f,_0x4f970c))[_0x80c8('0x47')](handleError(_0x18e14f,null));};exports[_0x80c8('0x48')]=function(_0x4be79a,_0x446d82){var _0x278167={'raw':!![],'where':{'id':_0x4be79a[_0x80c8('0x49')]['id']}},_0x32c656={};_0x32c656[_0x80c8('0x35')]=_[_0x80c8('0x4a')](db[_0x80c8('0x4b')][_0x80c8('0x33')]);_0x32c656[_0x80c8('0x36')]=_[_0x80c8('0x4a')](_0x4be79a[_0x80c8('0x36')]);_0x32c656['filters']=_[_0x80c8('0x38')](_0x32c656[_0x80c8('0x35')],_0x32c656[_0x80c8('0x36')]);_0x278167[_0x80c8('0x39')]=_['intersection'](_0x32c656[_0x80c8('0x35')],qs[_0x80c8('0x3a')](_0x4be79a['query'][_0x80c8('0x3a')]));_0x278167['attributes']=_0x278167[_0x80c8('0x39')][_0x80c8('0x3b')]?_0x278167[_0x80c8('0x39')]:_0x32c656[_0x80c8('0x35')];if(_0x4be79a[_0x80c8('0x36')][_0x80c8('0x44')]){_0x278167['include']=[{'all':!![]}];}_0x278167=_[_0x80c8('0x41')]({},_0x278167,_0x4be79a[_0x80c8('0x43')]);return db[_0x80c8('0x4b')]['find'](_0x278167)[_0x80c8('0x2b')](handleEntityNotFound(_0x446d82,null))[_0x80c8('0x2b')](respondWithResult(_0x446d82,null))[_0x80c8('0x47')](handleError(_0x446d82,null));};exports[_0x80c8('0x4c')]=function(_0x4eaedf,_0xc89fb7){return db[_0x80c8('0x4b')]['create'](_0x4eaedf[_0x80c8('0x4d')],{})['then'](function(_0x20d636){var _0x559bae=_0x4eaedf[_0x80c8('0x4e')][_0x80c8('0x4f')]({'plain':!![]});if(!_0x559bae)throw new Error(_0x80c8('0x50'));if(_0x559bae[_0x80c8('0x51')]===_0x80c8('0x4e')){var _0x28ec2a=_0x20d636[_0x80c8('0x4f')]({'plain':!![]});var _0x2b3bdd=_0x80c8('0x2d');return db[_0x80c8('0x52')][_0x80c8('0x53')]({'where':{'name':_0x2b3bdd,'userProfileId':_0x559bae['userProfileId']},'raw':!![]})[_0x80c8('0x2b')](function(_0x4ec818){if(_0x4ec818&&_0x4ec818[_0x80c8('0x54')]===0x0){return db[_0x80c8('0x55')][_0x80c8('0x4c')]({'name':_0x28ec2a[_0x80c8('0x30')],'resourceId':_0x28ec2a['id'],'type':_0x4ec818[_0x80c8('0x30')],'sectionId':_0x4ec818['id']},{})[_0x80c8('0x2b')](function(){return _0x20d636;});}else{return _0x20d636;}})[_0x80c8('0x47')](function(_0x3b4579){logger[_0x80c8('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b4579);throw _0x3b4579;});}return _0x20d636;})[_0x80c8('0x2b')](respondWithResult(_0xc89fb7,0xc9))[_0x80c8('0x47')](handleError(_0xc89fb7,null));};exports['update']=function(_0x193673,_0x2dfafa){if(_0x193673[_0x80c8('0x4d')]['id']){delete _0x193673[_0x80c8('0x4d')]['id'];}return db['FaxQueue'][_0x80c8('0x53')]({'where':{'id':_0x193673[_0x80c8('0x49')]['id']}})[_0x80c8('0x2b')](handleEntityNotFound(_0x2dfafa,null))['then'](saveUpdates(_0x193673[_0x80c8('0x4d')],null))['then'](respondWithResult(_0x2dfafa,null))[_0x80c8('0x47')](handleError(_0x2dfafa,null));};exports[_0x80c8('0x2c')]=function(_0x279e6a,_0x356648){return db[_0x80c8('0x4b')][_0x80c8('0x53')]({'where':{'id':_0x279e6a[_0x80c8('0x49')]['id']}})[_0x80c8('0x2b')](handleEntityNotFound(_0x356648,null))[_0x80c8('0x2b')](removeEntity(_0x356648,null))['catch'](handleError(_0x356648,null));};exports[_0x80c8('0x56')]=function(_0x549ff4,_0x39006a){return db[_0x80c8('0x4b')]['describe']()['then'](respondWithResult(_0x39006a,null))[_0x80c8('0x47')](handleError(_0x39006a,null));};exports[_0x80c8('0x57')]=function(_0x4f1e16,_0x3fac27,_0x51c6f5){var _0x26a769={'raw':!![],'where':{}},_0xf17530={},_0x1f6593;return db[_0x80c8('0x4b')][_0x80c8('0x58')]({'where':{'id':_0x4f1e16[_0x80c8('0x49')]['id']}})[_0x80c8('0x2b')](handleEntityNotFound(_0x3fac27,null))[_0x80c8('0x2b')](function(_0x20ae70){if(_0x20ae70){_0x1f6593=_0x20ae70[_0x80c8('0x4f')]({'plain':!![]});_0xf17530[_0x80c8('0x35')]=_[_0x80c8('0x4a')](db[_0x80c8('0x59')][_0x80c8('0x33')]);_0xf17530[_0x80c8('0x36')]=_[_0x80c8('0x4a')](_0x4f1e16[_0x80c8('0x36')]);_0xf17530[_0x80c8('0x37')]=_[_0x80c8('0x38')](_0xf17530[_0x80c8('0x35')],_0xf17530[_0x80c8('0x36')]);_0x26a769[_0x80c8('0x39')]=_[_0x80c8('0x38')](_0xf17530[_0x80c8('0x35')],qs[_0x80c8('0x3a')](_0x4f1e16[_0x80c8('0x36')][_0x80c8('0x3a')]));_0x26a769[_0x80c8('0x39')]=_0x26a769['attributes'][_0x80c8('0x3b')]?_0x26a769['attributes']:_0xf17530[_0x80c8('0x35')];if(!_0x4f1e16['query'][_0x80c8('0x3c')](_0x80c8('0x3d'))){_0x26a769[_0x80c8('0x25')]=qs[_0x80c8('0x25')](_0x4f1e16[_0x80c8('0x36')][_0x80c8('0x25')]);_0x26a769[_0x80c8('0x23')]=qs[_0x80c8('0x23')](_0x4f1e16[_0x80c8('0x36')][_0x80c8('0x23')]);}_0x26a769[_0x80c8('0x5a')]=qs[_0x80c8('0x3e')](_0x4f1e16[_0x80c8('0x36')][_0x80c8('0x3e')]);_0x26a769[_0x80c8('0x3f')]=qs[_0x80c8('0x37')](_['pick'](_0x4f1e16[_0x80c8('0x36')],_0xf17530['filters']));_0x26a769[_0x80c8('0x3f')]['FaxQueueId']=_0x20ae70['id'];if(_0x4f1e16[_0x80c8('0x36')][_0x80c8('0x40')]){_0x26a769[_0x80c8('0x3f')]=_[_0x80c8('0x41')](_0x26a769[_0x80c8('0x3f')],{'$or':_[_0x80c8('0x32')](_0x26a769[_0x80c8('0x39')],function(_0x407f08){var _0x63974b={};_0x63974b[_0x407f08]={'$like':'%'+_0x4f1e16[_0x80c8('0x36')]['filter']+'%'};return _0x63974b;})});}_0x26a769=_[_0x80c8('0x41')]({},_0x26a769,_0x4f1e16[_0x80c8('0x43')]);return db[_0x80c8('0x59')][_0x80c8('0x45')](_0x26a769);}})[_0x80c8('0x2b')](function(_0x2c97e4){if(_0x2c97e4){return db[_0x80c8('0x5b')][_0x80c8('0x5c')]({'where':{'id':_[_0x80c8('0x32')](_0x2c97e4,_0x80c8('0x5d')),'role':_0x80c8('0x5e')},'attributes':['id',_0x80c8('0x30'),'faxPause',_0x80c8('0x5f'),_0x80c8('0x60')]});}})[_0x80c8('0x2b')](function(_0x378763){if(_0x378763){return{'count':_0x378763[_0x80c8('0x26')],'rows':_[_0x80c8('0x32')](_0x378763['rows'],function(_0x275f49){return{'membername':_0x275f49[_0x80c8('0x30')],'UserId':_0x275f49['id'],'queue_name':_0x1f6593['name'],'FaxQueueId':_0x1f6593['id'],'interface':util[_0x80c8('0x61')](_0x80c8('0x62'),_0x80c8('0x63'),_0x275f49[_0x80c8('0x30')]),'penalty':0x0,'paused':_0x275f49['faxPause'],'createdAt':_0x275f49[_0x80c8('0x60')],'updatedAt':_0x275f49[_0x80c8('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x80c8('0x2b')](respondWithFilteredResult(_0x3fac27,_0x26a769))[_0x80c8('0x47')](handleError(_0x3fac27,null));};exports[_0x80c8('0x64')]=function(_0x1e013a,_0x2aa6f0,_0x3c40a4){var _0x37f287={};var _0xfebe50={};var _0x491e0c;var _0xb829b0;return db[_0x80c8('0x4b')][_0x80c8('0x58')]({'where':{'id':_0x1e013a[_0x80c8('0x49')]['id']}})[_0x80c8('0x2b')](handleEntityNotFound(_0x2aa6f0,null))[_0x80c8('0x2b')](function(_0xdab8c){if(_0xdab8c){_0x491e0c=_0xdab8c;_0xfebe50['model']=_[_0x80c8('0x4a')](db['Team'][_0x80c8('0x33')]);_0xfebe50[_0x80c8('0x36')]=_['keys'](_0x1e013a[_0x80c8('0x36')]);_0xfebe50[_0x80c8('0x37')]=_[_0x80c8('0x38')](_0xfebe50['model'],_0xfebe50[_0x80c8('0x36')]);_0x37f287[_0x80c8('0x39')]=_['intersection'](_0xfebe50[_0x80c8('0x35')],qs[_0x80c8('0x3a')](_0x1e013a[_0x80c8('0x36')][_0x80c8('0x3a')]));_0x37f287[_0x80c8('0x39')]=_0x37f287[_0x80c8('0x39')][_0x80c8('0x3b')]?_0x37f287[_0x80c8('0x39')]:_0xfebe50[_0x80c8('0x35')];_0x37f287[_0x80c8('0x5a')]=qs['sort'](_0x1e013a[_0x80c8('0x36')][_0x80c8('0x3e')]);_0x37f287[_0x80c8('0x3f')]=qs[_0x80c8('0x37')](_[_0x80c8('0x65')](_0x1e013a[_0x80c8('0x36')],_0xfebe50[_0x80c8('0x37')]));if(_0x1e013a['query'][_0x80c8('0x40')]){_0x37f287[_0x80c8('0x3f')]=_[_0x80c8('0x41')](_0x37f287[_0x80c8('0x3f')],{'$or':_[_0x80c8('0x32')](_0x37f287[_0x80c8('0x39')],function(_0x4b63a4){var _0x55da45={};_0x55da45[_0x4b63a4]={'$like':'%'+_0x1e013a[_0x80c8('0x36')]['filter']+'%'};return _0x55da45;})});}_0x37f287=_[_0x80c8('0x41')]({},_0x37f287,_0x1e013a['options']);return _0x491e0c['getTeams'](_0x37f287);}})['then'](function(_0x1b0392){if(_0x1b0392){_0xb829b0=_0x1b0392['length'];if(!_0x1e013a[_0x80c8('0x36')]['hasOwnProperty'](_0x80c8('0x3d'))){_0x37f287[_0x80c8('0x25')]=qs['limit'](_0x1e013a[_0x80c8('0x36')][_0x80c8('0x25')]);_0x37f287['offset']=qs[_0x80c8('0x23')](_0x1e013a['query'][_0x80c8('0x23')]);}return _0x491e0c[_0x80c8('0x64')](_0x37f287);}})[_0x80c8('0x2b')](function(_0x61f279){if(_0x61f279){return _0x61f279?{'count':_0xb829b0,'rows':_0x61f279}:null;}})[_0x80c8('0x2b')](respondWithResult(_0x2aa6f0,null))[_0x80c8('0x47')](handleError(_0x2aa6f0,null));};exports['addTeams']=function(_0x16c09e,_0x518bd2,_0x3beb89){var _0x3a9434=_0x16c09e['body'][_0x80c8('0x66')];return db[_0x80c8('0x67')]['findAll']({'where':{'id':_0x3a9434},'attributes':['id'],'include':[{'model':db[_0x80c8('0x5b')],'as':'Agents','attributes':['id','name',_0x80c8('0x68'),_0x80c8('0x69'),_0x80c8('0x6a')],'raw':!![]}]})[_0x80c8('0x2b')](function(_0x5748dd){if(_0x5748dd){var _0x5a4650=_[_0x80c8('0x6b')](_0x5748dd,function(_0x3bfd3e){var _0x274830=_0x3bfd3e[_0x80c8('0x4f')]({'plain':!![]});return _0x274830[_0x80c8('0x6c')];});return db[_0x80c8('0x4b')]['find']({'where':{'id':_0x16c09e[_0x80c8('0x49')]['id']}})[_0x80c8('0x2b')](function(_0x49dc1c){return db['sequelize'][_0x80c8('0x6d')](function(_0x194a0b){return _0x49dc1c[_0x80c8('0x6e')](_0x3a9434,{'transaction':_0x194a0b})[_0x80c8('0x2b')](function(){return BPromise[_0x80c8('0x6f')](_0x5a4650,function(_0xf0fc21){return db[_0x80c8('0x59')][_0x80c8('0x70')]({'where':{'UserId':_0xf0fc21['id'],'FaxQueueId':_0x16c09e[_0x80c8('0x49')]['id']},'transaction':_0x194a0b});});})[_0x80c8('0x2b')](function(){_0x5a4650[_0x80c8('0x71')](function(_0x47f48b){socket[_0x80c8('0x72')]('userFaxQueue:save',{'UserId':_0x47f48b['id'],'FaxQueueId':_0x49dc1c['id']});});});});});}})['then'](respondWithStatusCode(_0x518bd2,null))[_0x80c8('0x47')](handleError(_0x518bd2,null));};exports[_0x80c8('0x73')]=function(_0x2679f4,_0x59f67d,_0x11ba0c){return db[_0x80c8('0x67')]['findAll']({'where':{'id':_0x2679f4[_0x80c8('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0x80c8('0x5b')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x59f67d,null))[_0x80c8('0x2b')](function(_0x2b8b5a){var _0x3c462a=_[_0x80c8('0x32')](_0x2b8b5a,'id');var _0x4ea8a2=[];var _0x4cd688=[];var _0x27d9dd=squel[_0x80c8('0x74')]();_0x27d9dd[_0x80c8('0x75')]('tq.TeamId')['from']('team_has_fax_queues','tq')['join'](_0x80c8('0x76'),'ut',_0x80c8('0x77'))[_0x80c8('0x3f')](_0x80c8('0x78'),_0x2679f4['params']['id']);for(var _0x52a85a=0x0;_0x52a85a<_0x2b8b5a[_0x80c8('0x3b')];_0x52a85a+=0x1){let _0x5faf6a=_0x2b8b5a[_0x52a85a];for(var _0x4d64b6=0x0;_0x4d64b6<_0x5faf6a[_0x80c8('0x6c')][_0x80c8('0x3b')];_0x4d64b6+=0x1){let _0x46895a=_0x5faf6a[_0x80c8('0x6c')][_0x4d64b6];var _0x3d55f1=_0x27d9dd[_0x80c8('0x79')]();_0x3d55f1[_0x80c8('0x3f')]('ut.UserId\x20=\x20?',_0x46895a['id']);_0x4cd688[_0x80c8('0x7a')](db[_0x80c8('0x7b')]['query'](_0x3d55f1[_0x80c8('0x7c')](),{'type':db[_0x80c8('0x7b')][_0x80c8('0x7d')][_0x80c8('0x7e')]})['then'](function(_0x4e3193){if(_0x4e3193[_0x80c8('0x3b')]===0x1){return _0x46895a['id'];}else{var _0x4dbe5e=_[_0x80c8('0x7f')](_[_0x80c8('0x32')](_0x4e3193,_0x80c8('0x80')),function(_0x3dd51a){return _['includes'](_0x3c462a,_0x3dd51a);});if(_0x4dbe5e){return _0x46895a['id'];}}}));}}return BPromise[_0x80c8('0x81')](_0x4cd688)['then'](function(_0x3dd668){_0x4ea8a2=_(_0x4ea8a2)[_0x80c8('0x82')](_0x3dd668)[_0x80c8('0x83')]()[_0x80c8('0x84')]();return db[_0x80c8('0x4b')][_0x80c8('0x53')]({'where':{'id':_0x2679f4[_0x80c8('0x49')]['id']}})['then'](function(_0x370372){return db[_0x80c8('0x7b')][_0x80c8('0x6d')](function(_0x4b0020){return _0x370372[_0x80c8('0x73')](_0x2679f4[_0x80c8('0x36')][_0x80c8('0x66')],{'transaction':_0x4b0020})[_0x80c8('0x2b')](function(){if(!_[_0x80c8('0x85')](_0x4ea8a2)){return _0x370372[_0x80c8('0x86')](_0x4ea8a2,{'transaction':_0x4b0020});}})[_0x80c8('0x2b')](function(){_0x4ea8a2[_0x80c8('0x71')](function(_0x3964ce){socket[_0x80c8('0x72')]('userFaxQueue:remove',{'UserId':_0x3964ce,'FaxQueueId':_0x370372['id']});});});});});});})[_0x80c8('0x2b')](respondWithStatusCode(_0x59f67d,null))[_0x80c8('0x47')](handleError(_0x59f67d,null));};exports[_0x80c8('0x87')]=function(_0x266f80,_0x249f71,_0x4445de){return db[_0x80c8('0x4b')][_0x80c8('0x53')]({'where':{'id':_0x266f80['params']['id']}})['then'](handleEntityNotFound(_0x249f71,null))[_0x80c8('0x2b')](function(_0xe29adc){if(_0xe29adc){return _0xe29adc[_0x80c8('0x87')](_0x266f80[_0x80c8('0x4d')][_0x80c8('0x66')],_[_0x80c8('0x88')](_0x266f80[_0x80c8('0x4d')],[_0x80c8('0x66'),'id'])||{})[_0x80c8('0x89')](function(_0x385381){for(var _0x395ae9=0x0;_0x395ae9<_0x266f80[_0x80c8('0x4d')][_0x80c8('0x66')][_0x80c8('0x3b')];_0x395ae9+=0x1){socket['emit'](_0x80c8('0x8a'),{'UserId':Number(_0x266f80[_0x80c8('0x4d')][_0x80c8('0x66')][_0x395ae9]),'FaxQueueId':Number(_0x266f80[_0x80c8('0x49')]['id'])});}return _0x385381;});}})['then'](respondWithResult(_0x249f71,null))['catch'](handleError(_0x249f71,null));};exports[_0x80c8('0x86')]=function(_0x3bd736,_0x309b02,_0xa899b7){return db['FaxQueue'][_0x80c8('0x53')]({'where':{'id':_0x3bd736['params']['id']}})[_0x80c8('0x2b')](handleEntityNotFound(_0x309b02,null))['then'](function(_0x14df44){if(_0x14df44){return _0x14df44['removeAgents'](_0x3bd736[_0x80c8('0x36')][_0x80c8('0x66')])['then'](function(){if(_[_0x80c8('0x8b')](_0x3bd736['query'][_0x80c8('0x66')])){for(var _0x2ae757=0x0;_0x2ae757<_0x3bd736[_0x80c8('0x36')][_0x80c8('0x66')][_0x80c8('0x3b')];_0x2ae757+=0x1){socket['emit'](_0x80c8('0x8c'),{'UserId':Number(_0x3bd736[_0x80c8('0x36')]['ids'][_0x2ae757]),'FaxQueueId':Number(_0x3bd736['params']['id'])});}}else{socket[_0x80c8('0x72')]('userFaxQueue:remove',{'UserId':Number(_0x3bd736['query'][_0x80c8('0x66')]),'FaxQueueId':Number(_0x3bd736[_0x80c8('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x309b02,null))['catch'](handleError(_0x309b02,null));};exports[_0x80c8('0x8d')]=function(_0x26fe58,_0x9a0f68,_0x5c86b0){var _0x2ce617={};var _0x3e2c09={};var _0x756a1d;var _0x900d7b;return db[_0x80c8('0x4b')][_0x80c8('0x58')]({'where':{'id':_0x26fe58[_0x80c8('0x49')]['id']}})['then'](handleEntityNotFound(_0x9a0f68,null))[_0x80c8('0x2b')](function(_0x5f0c10){if(_0x5f0c10){_0x756a1d=_0x5f0c10;_0x3e2c09[_0x80c8('0x35')]=_[_0x80c8('0x4a')](db[_0x80c8('0x5b')][_0x80c8('0x33')]);_0x3e2c09['query']=_[_0x80c8('0x4a')](_0x26fe58['query']);_0x3e2c09[_0x80c8('0x37')]=_[_0x80c8('0x38')](_0x3e2c09[_0x80c8('0x35')],_0x3e2c09[_0x80c8('0x36')]);_0x2ce617['attributes']=_[_0x80c8('0x38')](_0x3e2c09[_0x80c8('0x35')],qs[_0x80c8('0x3a')](_0x26fe58[_0x80c8('0x36')][_0x80c8('0x3a')]));_0x2ce617[_0x80c8('0x39')]=_0x2ce617[_0x80c8('0x39')][_0x80c8('0x3b')]?_0x2ce617[_0x80c8('0x39')]:_0x3e2c09[_0x80c8('0x35')];_0x2ce617[_0x80c8('0x5a')]=qs['sort'](_0x26fe58[_0x80c8('0x36')][_0x80c8('0x3e')]);_0x2ce617[_0x80c8('0x3f')]=qs[_0x80c8('0x37')](_[_0x80c8('0x65')](_0x26fe58[_0x80c8('0x36')],_0x3e2c09[_0x80c8('0x37')]));if(_0x26fe58[_0x80c8('0x36')][_0x80c8('0x40')]){_0x2ce617[_0x80c8('0x3f')]=_[_0x80c8('0x41')](_0x2ce617['where'],{'$or':_['map'](_0x2ce617['attributes'],function(_0x9f7ecb){var _0x1ab5c3={};_0x1ab5c3[_0x9f7ecb]={'$like':'%'+_0x26fe58[_0x80c8('0x36')]['filter']+'%'};return _0x1ab5c3;})});}_0x2ce617=_['merge']({},_0x2ce617,_0x26fe58[_0x80c8('0x43')]);return _0x756a1d[_0x80c8('0x8d')](_0x2ce617);}})[_0x80c8('0x2b')](function(_0x2fdb8d){if(_0x2fdb8d){_0x900d7b=_0x2fdb8d[_0x80c8('0x3b')];if(!_0x26fe58['query']['hasOwnProperty'](_0x80c8('0x3d'))){_0x2ce617[_0x80c8('0x25')]=qs[_0x80c8('0x25')](_0x26fe58[_0x80c8('0x36')][_0x80c8('0x25')]);_0x2ce617[_0x80c8('0x23')]=qs[_0x80c8('0x23')](_0x26fe58['query']['offset']);}return _0x756a1d['getAgents'](_0x2ce617);}})[_0x80c8('0x2b')](function(_0x3cf94e){if(_0x3cf94e){return _0x3cf94e?{'count':_0x900d7b,'rows':_0x3cf94e}:null;}})[_0x80c8('0x2b')](respondWithResult(_0x9a0f68,null))['catch'](handleError(_0x9a0f68,null));};
\ No newline at end of file
index e7a73ee..d856f0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da1=['FaxQueue','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x2b95df,_0x51422f){var _0x26bade=function(_0x310d7f){while(--_0x310d7f){_0x2b95df['push'](_0x2b95df['shift']());}};_0x26bade(++_0x51422f);}(_0x3da1,0x170));var _0x13da=function(_0x2a913b,_0x19676e){_0x2a913b=_0x2a913b-0x0;var _0xa143d=_0x3da1[_0x2a913b];return _0xa143d;};'use strict';var EventEmitter=require(_0x13da('0x0'));var FaxQueue=require(_0x13da('0x1'))['db'][_0x13da('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x13da('0x3')](0x0);var events={'afterCreate':_0x13da('0x4'),'afterUpdate':'update','afterDestroy':_0x13da('0x5')};function emitEvent(_0x47b9e0){return function(_0x36a68b,_0x961ec4,_0x51396f){FaxQueueEvents[_0x13da('0x6')](_0x47b9e0+':'+_0x36a68b['id'],_0x36a68b);FaxQueueEvents['emit'](_0x47b9e0,_0x36a68b);_0x51396f(null);};}for(var e in events){if(events[_0x13da('0x7')](e)){var event=events[e];FaxQueue[_0x13da('0x8')](e,emitEvent(event));}}module[_0x13da('0x9')]=FaxQueueEvents;
\ No newline at end of file
+var _0x9d71=['hasOwnProperty','hook','exports','events','../../mysqldb','FaxQueue','setMaxListeners','remove','emit'];(function(_0x394276,_0x7c9deb){var _0x50b13a=function(_0x4f1da0){while(--_0x4f1da0){_0x394276['push'](_0x394276['shift']());}};_0x50b13a(++_0x7c9deb);}(_0x9d71,0x1e9));var _0x19d7=function(_0x100802,_0x5c9b6e){_0x100802=_0x100802-0x0;var _0x7e4dbb=_0x9d71[_0x100802];return _0x7e4dbb;};'use strict';var EventEmitter=require(_0x19d7('0x0'));var FaxQueue=require(_0x19d7('0x1'))['db'][_0x19d7('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x19d7('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x19d7('0x4')};function emitEvent(_0x41420a){return function(_0x3fde1a,_0x52e9bc,_0x37ae79){FaxQueueEvents[_0x19d7('0x5')](_0x41420a+':'+_0x3fde1a['id'],_0x3fde1a);FaxQueueEvents[_0x19d7('0x5')](_0x41420a,_0x3fde1a);_0x37ae79(null);};}for(var e in events){if(events[_0x19d7('0x6')](e)){var event=events[e];FaxQueue[_0x19d7('0x7')](e,emitEvent(event));}}module[_0x19d7('0x8')]=FaxQueueEvents;
\ No newline at end of file
index e90be24..9946204 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe30=['FaxQueue','util','../../config/logger','api','moment','rimraf','./faxQueue.attributes','exports','define'];(function(_0x42fc4b,_0x4f32e2){var _0x3d2704=function(_0x1943b3){while(--_0x1943b3){_0x42fc4b['push'](_0x42fc4b['shift']());}};_0x3d2704(++_0x4f32e2);}(_0xfe30,0x76));var _0x0fe3=function(_0x27530d,_0x46480a){_0x27530d=_0x27530d-0x0;var _0x59e561=_0xfe30[_0x27530d];return _0x59e561;};'use strict';var _=require('lodash');var util=require(_0x0fe3('0x0'));var logger=require(_0x0fe3('0x1'))(_0x0fe3('0x2'));var moment=require(_0x0fe3('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0fe3('0x4'));var config=require('../../config/environment');var attributes=require(_0x0fe3('0x5'));module[_0x0fe3('0x6')]=function(_0x1587ed,_0x523c20){return _0x1587ed[_0x0fe3('0x7')](_0x0fe3('0x8'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x898e=['../../config/environment','./faxQueue.attributes','define','fax_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x48bfc7,_0x5132b7){var _0x300bb5=function(_0x1e33cb){while(--_0x1e33cb){_0x48bfc7['push'](_0x48bfc7['shift']());}};_0x300bb5(++_0x5132b7);}(_0x898e,0xa0));var _0xe898=function(_0x390b69,_0x4c1043){_0x390b69=_0x390b69-0x0;var _0x295e46=_0x898e[_0x390b69];return _0x295e46;};'use strict';var _=require(_0xe898('0x0'));var util=require(_0xe898('0x1'));var logger=require('../../config/logger')(_0xe898('0x2'));var moment=require(_0xe898('0x3'));var BPromise=require(_0xe898('0x4'));var rp=require(_0xe898('0x5'));var fs=require('fs');var path=require(_0xe898('0x6'));var rimraf=require(_0xe898('0x7'));var config=require(_0xe898('0x8'));var attributes=require(_0xe898('0x9'));module['exports']=function(_0x28f321,_0x3c0464){return _0x28f321[_0xe898('0xa')]('FaxQueue',attributes,{'tableName':_0xe898('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index daaa14d..cb4bf68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b19=['error','code','message','catch','FaxQueue','findAll','options','raw','where','limit','map','model','attributes','include','GetFaxQueue','ShowFaxQueue','find','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x131a70,_0x5f53b2){var _0x212967=function(_0x2a43ac){while(--_0x2a43ac){_0x131a70['push'](_0x131a70['shift']());}};_0x212967(++_0x5f53b2);}(_0x6b19,0x65));var _0x96b1=function(_0x475e0a,_0x1366bc){_0x475e0a=_0x475e0a-0x0;var _0x1dacd2=_0x6b19[_0x475e0a];return _0x1dacd2;};'use strict';var _=require(_0x96b1('0x0'));var util=require(_0x96b1('0x1'));var moment=require(_0x96b1('0x2'));var BPromise=require(_0x96b1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x96b1('0x4'));var db=require(_0x96b1('0x5'))['db'];var utils=require(_0x96b1('0x6'));var logger=require(_0x96b1('0x7'))(_0x96b1('0x8'));var config=require(_0x96b1('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x96b1('0xa')][_0x96b1('0xb')]({'port':0x232a});config[_0x96b1('0xc')]=_[_0x96b1('0xd')](config[_0x96b1('0xc')],{'host':_0x96b1('0xe'),'port':0x18eb});var socket=require(_0x96b1('0xf'))(new Redis(config[_0x96b1('0xc')]));require(_0x96b1('0x10'))['register'](socket);function respondWithRpcPromise(_0x1f8226,_0x2756ce,_0x260440){return new BPromise(function(_0x33b485,_0x4f60d3){return client[_0x96b1('0x11')](_0x1f8226,_0x260440)[_0x96b1('0x12')](function(_0x2a4401){logger[_0x96b1('0x13')](_0x96b1('0x14'),_0x2756ce,_0x96b1('0x15'));logger[_0x96b1('0x16')](_0x96b1('0x17'),_0x2756ce,_0x96b1('0x15'),JSON[_0x96b1('0x18')](_0x2a4401));if(_0x2a4401[_0x96b1('0x19')]){if(_0x2a4401['error'][_0x96b1('0x1a')]===0x1f4){logger['error'](_0x96b1('0x14'),_0x2756ce,_0x2a4401[_0x96b1('0x19')]['message']);return _0x4f60d3(_0x2a4401['error'][_0x96b1('0x1b')]);}logger[_0x96b1('0x19')]('FaxQueue,\x20%s,\x20%s',_0x2756ce,_0x2a4401[_0x96b1('0x19')]['message']);return _0x33b485(_0x2a4401[_0x96b1('0x19')]['message']);}else{logger['info'](_0x96b1('0x14'),_0x2756ce,_0x96b1('0x15'));_0x33b485(_0x2a4401['result']['message']);}})[_0x96b1('0x1c')](function(_0x6fb1d2){logger[_0x96b1('0x19')]('FaxQueue,\x20%s,\x20%s',_0x2756ce,_0x6fb1d2);_0x4f60d3(_0x6fb1d2);});});}exports['GetFaxQueue']=function(_0x4f9a7e){var _0x495e35=this;return new Promise(function(_0x162c84,_0x3cce26){return db[_0x96b1('0x1d')][_0x96b1('0x1e')]({'raw':_0x4f9a7e[_0x96b1('0x1f')]?_0x4f9a7e['options'][_0x96b1('0x20')]===undefined?!![]:![]:!![],'where':_0x4f9a7e[_0x96b1('0x1f')]?_0x4f9a7e[_0x96b1('0x1f')][_0x96b1('0x21')]||null:null,'attributes':_0x4f9a7e[_0x96b1('0x1f')]?_0x4f9a7e[_0x96b1('0x1f')]['attributes']||null:null,'limit':_0x4f9a7e[_0x96b1('0x1f')]?_0x4f9a7e[_0x96b1('0x1f')][_0x96b1('0x22')]||null:null,'include':_0x4f9a7e[_0x96b1('0x1f')]?_0x4f9a7e[_0x96b1('0x1f')]['include']?_[_0x96b1('0x23')](_0x4f9a7e[_0x96b1('0x1f')]['include'],function(_0x9ab53b){return{'model':db[_0x9ab53b[_0x96b1('0x24')]],'as':_0x9ab53b['as'],'attributes':_0x9ab53b[_0x96b1('0x25')],'include':_0x9ab53b[_0x96b1('0x26')]?_[_0x96b1('0x23')](_0x9ab53b[_0x96b1('0x26')],function(_0x59823a){return{'model':db[_0x59823a[_0x96b1('0x24')]],'as':_0x59823a['as'],'attributes':_0x59823a[_0x96b1('0x25')],'include':_0x59823a[_0x96b1('0x26')]?_[_0x96b1('0x23')](_0x59823a[_0x96b1('0x26')],function(_0x123d06){return{'model':db[_0x123d06[_0x96b1('0x24')]],'as':_0x123d06['as'],'attributes':_0x123d06['attributes']};}):[]};}):[]};}):[]:[]})[_0x96b1('0x12')](function(_0x17dcc5){logger['info']('GetFaxQueue',_0x4f9a7e);logger['debug'](_0x96b1('0x27'),_0x4f9a7e,JSON[_0x96b1('0x18')](_0x17dcc5));_0x162c84(_0x17dcc5);})[_0x96b1('0x1c')](function(_0x5bbe6f){logger[_0x96b1('0x19')](_0x96b1('0x27'),_0x5bbe6f[_0x96b1('0x1b')],_0x4f9a7e);_0x3cce26(_0x495e35['error'](0x1f4,_0x5bbe6f[_0x96b1('0x1b')]));});});};exports[_0x96b1('0x28')]=function(_0x3a990c){var _0x541fe9=this;return new Promise(function(_0x16aa63,_0x42437e){return db[_0x96b1('0x1d')][_0x96b1('0x29')]({'raw':_0x3a990c[_0x96b1('0x1f')]?_0x3a990c[_0x96b1('0x1f')][_0x96b1('0x20')]===undefined?!![]:![]:!![],'where':_0x3a990c['options']?_0x3a990c['options'][_0x96b1('0x21')]||null:null,'attributes':_0x3a990c[_0x96b1('0x1f')]?_0x3a990c[_0x96b1('0x1f')][_0x96b1('0x25')]||null:null,'include':_0x3a990c['options']?_0x3a990c[_0x96b1('0x1f')]['include']?_[_0x96b1('0x23')](_0x3a990c['options'][_0x96b1('0x26')],function(_0x7c5a13){return{'model':db[_0x7c5a13[_0x96b1('0x24')]],'as':_0x7c5a13['as'],'attributes':_0x7c5a13[_0x96b1('0x25')],'include':_0x7c5a13[_0x96b1('0x26')]?_[_0x96b1('0x23')](_0x7c5a13[_0x96b1('0x26')],function(_0x4ae452){return{'model':db[_0x4ae452[_0x96b1('0x24')]],'as':_0x4ae452['as'],'attributes':_0x4ae452[_0x96b1('0x25')],'include':_0x4ae452[_0x96b1('0x26')]?_[_0x96b1('0x23')](_0x4ae452[_0x96b1('0x26')],function(_0x342a8d){return{'model':db[_0x342a8d['model']],'as':_0x342a8d['as'],'attributes':_0x342a8d[_0x96b1('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4262ce){logger['info'](_0x96b1('0x28'),_0x3a990c);logger[_0x96b1('0x16')]('ShowFaxQueue',_0x3a990c,JSON[_0x96b1('0x18')](_0x4262ce));_0x16aa63(_0x4262ce);})['catch'](function(_0x1c7614){logger[_0x96b1('0x19')](_0x96b1('0x28'),_0x1c7614[_0x96b1('0x1b')],_0x3a990c);_0x42437e(_0x541fe9[_0x96b1('0x19')](0x1f4,_0x1c7614[_0x96b1('0x1b')]));});});};
\ No newline at end of file
+var _0x355b=['options','raw','where','attributes','limit','include','map','model','stringify','catch','ShowFaxQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','client','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','GetFaxQueue','FaxQueue'];(function(_0x19f22b,_0x50f568){var _0x17e4db=function(_0x58dcd1){while(--_0x58dcd1){_0x19f22b['push'](_0x19f22b['shift']());}};_0x17e4db(++_0x50f568);}(_0x355b,0x16b));var _0xb355=function(_0x2750e3,_0x36182f){_0x2750e3=_0x2750e3-0x0;var _0x898335=_0x355b[_0x2750e3];return _0x898335;};'use strict';var _=require('lodash');var util=require(_0xb355('0x0'));var moment=require(_0xb355('0x1'));var BPromise=require(_0xb355('0x2'));var rs=require(_0xb355('0x3'));var fs=require('fs');var Redis=require(_0xb355('0x4'));var db=require(_0xb355('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xb355('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xb355('0x7')]['http']({'port':0x232a});config['redis']=_[_0xb355('0x8')](config[_0xb355('0x9')],{'host':_0xb355('0xa'),'port':0x18eb});var socket=require(_0xb355('0xb'))(new Redis(config[_0xb355('0x9')]));require(_0xb355('0xc'))[_0xb355('0xd')](socket);function respondWithRpcPromise(_0x42915e,_0x4a1819,_0x5f2646){return new BPromise(function(_0x27938d,_0x12c834){return client[_0xb355('0xe')](_0x42915e,_0x5f2646)[_0xb355('0xf')](function(_0x52f04f){logger[_0xb355('0x10')](_0xb355('0x11'),_0x4a1819,_0xb355('0x12'));logger[_0xb355('0x13')](_0xb355('0x14'),_0x4a1819,_0xb355('0x12'),JSON['stringify'](_0x52f04f));if(_0x52f04f[_0xb355('0x15')]){if(_0x52f04f[_0xb355('0x15')][_0xb355('0x16')]===0x1f4){logger['error'](_0xb355('0x11'),_0x4a1819,_0x52f04f['error']['message']);return _0x12c834(_0x52f04f[_0xb355('0x15')][_0xb355('0x17')]);}logger[_0xb355('0x15')](_0xb355('0x11'),_0x4a1819,_0x52f04f[_0xb355('0x15')]['message']);return _0x27938d(_0x52f04f[_0xb355('0x15')][_0xb355('0x17')]);}else{logger[_0xb355('0x10')](_0xb355('0x11'),_0x4a1819,'request\x20sent');_0x27938d(_0x52f04f[_0xb355('0x18')][_0xb355('0x17')]);}})['catch'](function(_0x2bc12f){logger['error'](_0xb355('0x11'),_0x4a1819,_0x2bc12f);_0x12c834(_0x2bc12f);});});}exports[_0xb355('0x19')]=function(_0x299a51){var _0x578d1b=this;return new Promise(function(_0x4ca544,_0x4d6ab2){return db[_0xb355('0x1a')]['findAll']({'raw':_0x299a51[_0xb355('0x1b')]?_0x299a51[_0xb355('0x1b')][_0xb355('0x1c')]===undefined?!![]:![]:!![],'where':_0x299a51[_0xb355('0x1b')]?_0x299a51[_0xb355('0x1b')][_0xb355('0x1d')]||null:null,'attributes':_0x299a51[_0xb355('0x1b')]?_0x299a51[_0xb355('0x1b')][_0xb355('0x1e')]||null:null,'limit':_0x299a51[_0xb355('0x1b')]?_0x299a51[_0xb355('0x1b')][_0xb355('0x1f')]||null:null,'include':_0x299a51['options']?_0x299a51[_0xb355('0x1b')][_0xb355('0x20')]?_[_0xb355('0x21')](_0x299a51[_0xb355('0x1b')]['include'],function(_0x25b286){return{'model':db[_0x25b286['model']],'as':_0x25b286['as'],'attributes':_0x25b286['attributes'],'include':_0x25b286[_0xb355('0x20')]?_[_0xb355('0x21')](_0x25b286[_0xb355('0x20')],function(_0x4bb3c2){return{'model':db[_0x4bb3c2[_0xb355('0x22')]],'as':_0x4bb3c2['as'],'attributes':_0x4bb3c2['attributes'],'include':_0x4bb3c2[_0xb355('0x20')]?_[_0xb355('0x21')](_0x4bb3c2[_0xb355('0x20')],function(_0x4aa37c){return{'model':db[_0x4aa37c['model']],'as':_0x4aa37c['as'],'attributes':_0x4aa37c[_0xb355('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb355('0xf')](function(_0x4558ce){logger[_0xb355('0x10')]('GetFaxQueue',_0x299a51);logger['debug']('GetFaxQueue',_0x299a51,JSON[_0xb355('0x23')](_0x4558ce));_0x4ca544(_0x4558ce);})[_0xb355('0x24')](function(_0x4ea750){logger[_0xb355('0x15')](_0xb355('0x19'),_0x4ea750[_0xb355('0x17')],_0x299a51);_0x4d6ab2(_0x578d1b[_0xb355('0x15')](0x1f4,_0x4ea750[_0xb355('0x17')]));});});};exports[_0xb355('0x25')]=function(_0x23ebc5){var _0x3c8020=this;return new Promise(function(_0x2ef23d,_0x318c4a){return db['FaxQueue'][_0xb355('0x26')]({'raw':_0x23ebc5['options']?_0x23ebc5[_0xb355('0x1b')][_0xb355('0x1c')]===undefined?!![]:![]:!![],'where':_0x23ebc5['options']?_0x23ebc5[_0xb355('0x1b')][_0xb355('0x1d')]||null:null,'attributes':_0x23ebc5[_0xb355('0x1b')]?_0x23ebc5[_0xb355('0x1b')][_0xb355('0x1e')]||null:null,'include':_0x23ebc5['options']?_0x23ebc5[_0xb355('0x1b')][_0xb355('0x20')]?_[_0xb355('0x21')](_0x23ebc5[_0xb355('0x1b')][_0xb355('0x20')],function(_0x35b872){return{'model':db[_0x35b872[_0xb355('0x22')]],'as':_0x35b872['as'],'attributes':_0x35b872[_0xb355('0x1e')],'include':_0x35b872['include']?_['map'](_0x35b872[_0xb355('0x20')],function(_0x1a85bc){return{'model':db[_0x1a85bc[_0xb355('0x22')]],'as':_0x1a85bc['as'],'attributes':_0x1a85bc['attributes'],'include':_0x1a85bc['include']?_[_0xb355('0x21')](_0x1a85bc[_0xb355('0x20')],function(_0xa27088){return{'model':db[_0xa27088[_0xb355('0x22')]],'as':_0xa27088['as'],'attributes':_0xa27088[_0xb355('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb355('0xf')](function(_0x5618de){logger[_0xb355('0x10')](_0xb355('0x25'),_0x23ebc5);logger[_0xb355('0x13')]('ShowFaxQueue',_0x23ebc5,JSON[_0xb355('0x23')](_0x5618de));_0x2ef23d(_0x5618de);})[_0xb355('0x24')](function(_0x57df5c){logger['error']('ShowFaxQueue',_0x57df5c['message'],_0x23ebc5);_0x318c4a(_0x3c8020[_0xb355('0x15')](0x1f4,_0x57df5c[_0xb355('0x17')]));});});};
\ No newline at end of file
index e13c4b3..23394db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb6=['remove','update','length'];(function(_0x4a225c,_0x597c5b){var _0x30835e=function(_0x26fd35){while(--_0x26fd35){_0x4a225c['push'](_0x4a225c['shift']());}};_0x30835e(++_0x597c5b);}(_0x4fb6,0x15f));var _0x64fb=function(_0x1a0c59,_0x3b4dcc){_0x1a0c59=_0x1a0c59-0x0;var _0xed67c9=_0x4fb6[_0x1a0c59];return _0xed67c9;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=['save',_0x64fb('0x0'),_0x64fb('0x1')];function createListener(_0x18cd78,_0x186470){return function(_0x5e0d28){_0x186470['emit'](_0x18cd78,_0x5e0d28);};}function removeListener(_0x5f45f7,_0x1b04ea){return function(){FaxQueueEvents['removeListener'](_0x5f45f7,_0x1b04ea);};}exports['register']=function(_0x2588cb){for(var _0x40ac85=0x0,_0x25599c=events[_0x64fb('0x2')];_0x40ac85<_0x25599c;_0x40ac85++){var _0x2e0297=events[_0x40ac85];var _0x1b3ba0=createListener('faxQueue:'+_0x2e0297,_0x2588cb);FaxQueueEvents['on'](_0x2e0297,_0x1b3ba0);}};
\ No newline at end of file
+var _0x15d7=['save','remove','update','emit','removeListener','register','length','faxQueue:','./faxQueue.events'];(function(_0x3d30c4,_0x4c996b){var _0x48cc87=function(_0x205584){while(--_0x205584){_0x3d30c4['push'](_0x3d30c4['shift']());}};_0x48cc87(++_0x4c996b);}(_0x15d7,0x19d));var _0x715d=function(_0x1fb62b,_0x2bf720){_0x1fb62b=_0x1fb62b-0x0;var _0x513d9d=_0x15d7[_0x1fb62b];return _0x513d9d;};'use strict';var FaxQueueEvents=require(_0x715d('0x0'));var events=[_0x715d('0x1'),_0x715d('0x2'),_0x715d('0x3')];function createListener(_0x3da0d7,_0x4d3d68){return function(_0x4fe476){_0x4d3d68[_0x715d('0x4')](_0x3da0d7,_0x4fe476);};}function removeListener(_0xa1d850,_0x3c4e6b){return function(){FaxQueueEvents[_0x715d('0x5')](_0xa1d850,_0x3c4e6b);};}exports[_0x715d('0x6')]=function(_0x214d3c){for(var _0xee5e43=0x0,_0x31debf=events[_0x715d('0x7')];_0xee5e43<_0x31debf;_0xee5e43++){var _0x3fbb70=events[_0xee5e43];var _0x15e447=createListener(_0x715d('0x8')+_0x3fbb70,_0x214d3c);FaxQueueEvents['on'](_0x3fbb70,_0x15e447);}};
\ No newline at end of file
index 4191f16..822f003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49c1=['put','/:id','update','delete','destroy','removeTeams','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./faxQueue.controller','isAuthenticated','get','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','/:id/teams','addTeams','addAgents'];(function(_0x6f99d3,_0x3d142b){var _0x4e8330=function(_0x49a128){while(--_0x49a128){_0x6f99d3['push'](_0x6f99d3['shift']());}};_0x4e8330(++_0x3d142b);}(_0x49c1,0xef));var _0x149c=function(_0x26304a,_0x415ced){_0x26304a=_0x26304a-0x0;var _0x4b720a=_0x49c1[_0x26304a];return _0x4b720a;};'use strict';var multer=require(_0x149c('0x0'));var util=require('util');var path=require(_0x149c('0x1'));var timeout=require(_0x149c('0x2'));var express=require(_0x149c('0x3'));var router=express['Router']();var fs_extra=require(_0x149c('0x4'));var auth=require(_0x149c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x149c('0x6'));var controller=require(_0x149c('0x7'));router['get']('/',auth[_0x149c('0x8')](),controller['index']);router[_0x149c('0x9')](_0x149c('0xa'),auth['isAuthenticated'](),controller[_0x149c('0xb')]);router[_0x149c('0x9')]('/:id',auth[_0x149c('0x8')](),controller[_0x149c('0xc')]);router['get'](_0x149c('0xd'),auth[_0x149c('0x8')](),controller[_0x149c('0xe')]);router[_0x149c('0x9')]('/:id/teams',auth[_0x149c('0x8')](),controller[_0x149c('0xf')]);router[_0x149c('0x9')](_0x149c('0x10'),auth[_0x149c('0x8')](),controller[_0x149c('0x11')]);router[_0x149c('0x12')]('/',auth[_0x149c('0x8')](),controller['create']);router[_0x149c('0x12')](_0x149c('0x13'),auth['isAuthenticated'](),controller[_0x149c('0x14')]);router['post'](_0x149c('0x10'),auth[_0x149c('0x8')](),controller[_0x149c('0x15')]);router[_0x149c('0x16')](_0x149c('0x17'),auth[_0x149c('0x8')](),controller[_0x149c('0x18')]);router[_0x149c('0x19')](_0x149c('0x17'),auth['isAuthenticated'](),controller[_0x149c('0x1a')]);router[_0x149c('0x19')](_0x149c('0x13'),auth[_0x149c('0x8')](),controller[_0x149c('0x1b')]);router[_0x149c('0x19')](_0x149c('0x10'),auth[_0x149c('0x8')](),controller['removeAgents']);module[_0x149c('0x1c')]=router;
\ No newline at end of file
+var _0xe944=['/:id/teams','getTeams','/:id/users','create','post','addAgents','put','update','delete','destroy','removeTeams','exports','multer','connect-timeout','fs-extra','../../config/environment','./faxQueue.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/members'];(function(_0x5e7c68,_0x5f32fe){var _0x3673ff=function(_0x1f4045){while(--_0x1f4045){_0x5e7c68['push'](_0x5e7c68['shift']());}};_0x3673ff(++_0x5f32fe);}(_0xe944,0x174));var _0x4e94=function(_0x312ac6,_0x2e1df5){_0x312ac6=_0x312ac6-0x0;var _0x26f6e6=_0xe944[_0x312ac6];return _0x26f6e6;};'use strict';var multer=require(_0x4e94('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4e94('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x4e94('0x2'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x4e94('0x3'));var controller=require(_0x4e94('0x4'));router[_0x4e94('0x5')]('/',auth[_0x4e94('0x6')](),controller['index']);router[_0x4e94('0x5')](_0x4e94('0x7'),auth[_0x4e94('0x6')](),controller[_0x4e94('0x8')]);router['get'](_0x4e94('0x9'),auth['isAuthenticated'](),controller[_0x4e94('0xa')]);router[_0x4e94('0x5')](_0x4e94('0xb'),auth[_0x4e94('0x6')](),controller['getMembers']);router[_0x4e94('0x5')](_0x4e94('0xc'),auth[_0x4e94('0x6')](),controller[_0x4e94('0xd')]);router[_0x4e94('0x5')](_0x4e94('0xe'),auth[_0x4e94('0x6')](),controller['getAgents']);router['post']('/',auth[_0x4e94('0x6')](),controller[_0x4e94('0xf')]);router[_0x4e94('0x10')](_0x4e94('0xc'),auth[_0x4e94('0x6')](),controller['addTeams']);router[_0x4e94('0x10')](_0x4e94('0xe'),auth[_0x4e94('0x6')](),controller[_0x4e94('0x11')]);router[_0x4e94('0x12')](_0x4e94('0x9'),auth[_0x4e94('0x6')](),controller[_0x4e94('0x13')]);router[_0x4e94('0x14')](_0x4e94('0x9'),auth[_0x4e94('0x6')](),controller[_0x4e94('0x15')]);router['delete']('/:id/teams',auth[_0x4e94('0x6')](),controller[_0x4e94('0x16')]);router[_0x4e94('0x14')](_0x4e94('0xe'),auth[_0x4e94('0x6')](),controller['removeAgents']);module[_0x4e94('0x17')]=router;
\ No newline at end of file
index 12d6bd9..5ce43f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de9=['exports','STRING','DATE','moment'];(function(_0x50d7c7,_0x3cef1d){var _0x5cb0f5=function(_0x3c157c){while(--_0x3c157c){_0x50d7c7['push'](_0x50d7c7['shift']());}};_0x5cb0f5(++_0x3cef1d);}(_0x3de9,0x143));var _0x93de=function(_0xee3d53,_0x3f4e0b){_0xee3d53=_0xee3d53-0x0;var _0x3797a2=_0x3de9[_0xee3d53];return _0x3797a2;};'use strict';var moment=require(_0x93de('0x0'));var Sequelize=require('sequelize');module[_0x93de('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x93de('0x2')]},'joinAt':{'type':Sequelize[_0x93de('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x93de('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x93de('0x2')]}};
\ No newline at end of file
+var _0x41df=['moment','STRING','DATE'];(function(_0xac5d7a,_0x5a3a86){var _0x7919d1=function(_0x361898){while(--_0x361898){_0xac5d7a['push'](_0xac5d7a['shift']());}};_0x7919d1(++_0x5a3a86);}(_0x41df,0x1da));var _0xf41d=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0x41df[_0x8de54f];return _0x14cba4;};'use strict';var moment=require(_0xf41d('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xf41d('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xf41d('0x1')]},'joinAt':{'type':Sequelize[_0xf41d('0x2')]},'leaveAt':{'type':Sequelize[_0xf41d('0x2')]},'acceptAt':{'type':Sequelize[_0xf41d('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c599d4c..51a21db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e16=['includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','zip-dir','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','set','json','apply','reject','save','update','then','destroy','error','stack','name','index','map','FaxQueueReport','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x6e16,0x1d3));var _0x66e1=function(_0x434428,_0x538af5){_0x434428=_0x434428-0x0;var _0x347369=_0x6e16[_0x434428];return _0x347369;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x66e1('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x66e1('0x1'));var moment=require('moment');var BPromise=require(_0x66e1('0x2'));var Mustache=require(_0x66e1('0x3'));var util=require('util');var path=require(_0x66e1('0x4'));var sox=require('sox');var csv=require(_0x66e1('0x5'));var ejs=require(_0x66e1('0x6'));var fs=require('fs');var fs_extra=require(_0x66e1('0x7'));var _=require('lodash');var squel=require(_0x66e1('0x8'));var crypto=require(_0x66e1('0x9'));var jsforce=require(_0x66e1('0xa'));var deskjs=require(_0x66e1('0xb'));var toCsv=require(_0x66e1('0x5'));var querystring=require(_0x66e1('0xc'));var Papa=require(_0x66e1('0xd'));var Redis=require(_0x66e1('0xe'));var authService=require(_0x66e1('0xf'));var qs=require(_0x66e1('0x10'));var as=require(_0x66e1('0x11'));var hardwareService=require(_0x66e1('0x12'));var logger=require(_0x66e1('0x13'))(_0x66e1('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x66e1('0x15'));var db=require(_0x66e1('0x16'))['db'];function respondWithStatusCode(_0x23e018,_0x497712){_0x497712=_0x497712||0xcc;return function(_0x58c184){if(_0x58c184){return _0x23e018[_0x66e1('0x17')](_0x497712);}return _0x23e018['status'](_0x497712)[_0x66e1('0x18')]();};}function respondWithResult(_0x3e36ff,_0x5b802b){_0x5b802b=_0x5b802b||0xc8;return function(_0x9c17f9){if(_0x9c17f9){return _0x3e36ff[_0x66e1('0x19')](_0x5b802b)['json'](_0x9c17f9);}};}function respondWithFilteredResult(_0x137f52,_0x12ca0b){return function(_0x18e2ab){if(_0x18e2ab){var _0x3a68b3=typeof _0x12ca0b['offset']===_0x66e1('0x1a')&&typeof _0x12ca0b[_0x66e1('0x1b')]===_0x66e1('0x1a');var _0x28e236=_0x18e2ab[_0x66e1('0x1c')];var _0x4f3276=_0x3a68b3?0x0:_0x12ca0b['offset'];var _0x2b5585=_0x3a68b3?_0x18e2ab['count']:_0x12ca0b[_0x66e1('0x1d')]+_0x12ca0b[_0x66e1('0x1b')];var _0x260e87;if(_0x2b5585>=_0x28e236){_0x2b5585=_0x28e236;_0x260e87=0xc8;}else{_0x260e87=0xce;}_0x137f52[_0x66e1('0x19')](_0x260e87);return _0x137f52[_0x66e1('0x1e')]('Content-Range',_0x4f3276+'-'+_0x2b5585+'/'+_0x28e236)[_0x66e1('0x1f')](_0x18e2ab);}return null;};}function patchUpdates(_0x23c6ce){return function(_0xe2822e){try{jsonpatch[_0x66e1('0x20')](_0xe2822e,_0x23c6ce,!![]);}catch(_0x28f6cf){return BPromise[_0x66e1('0x21')](_0x28f6cf);}return _0xe2822e[_0x66e1('0x22')]();};}function saveUpdates(_0x38cf5b,_0x11232c){return function(_0x350b81){if(_0x350b81){return _0x350b81[_0x66e1('0x23')](_0x38cf5b)[_0x66e1('0x24')](function(_0x43686e){return _0x43686e;});}return null;};}function removeEntity(_0x2ea42d,_0x756840){return function(_0x11b7f0){if(_0x11b7f0){return _0x11b7f0[_0x66e1('0x25')]()['then'](function(){_0x2ea42d[_0x66e1('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x203919,_0x414c30){return function(_0x181a7b){if(!_0x181a7b){_0x203919[_0x66e1('0x17')](0x194);}return _0x181a7b;};}function handleError(_0x1e0dfe,_0x4f500e){_0x4f500e=_0x4f500e||0x1f4;return function(_0x5c416d){logger[_0x66e1('0x26')](_0x5c416d[_0x66e1('0x27')]);if(_0x5c416d['name']){delete _0x5c416d[_0x66e1('0x28')];}_0x1e0dfe['status'](_0x4f500e)['send'](_0x5c416d);};}exports[_0x66e1('0x29')]=function(_0x3fcc99,_0xdd2360){var _0x2720af={},_0x218902={},_0xb6a4bf={'count':0x0,'rows':[]};var _0x411f53=_[_0x66e1('0x2a')](db[_0x66e1('0x2b')][_0x66e1('0x2c')],function(_0x87bf90){return{'name':_0x87bf90[_0x66e1('0x2d')],'type':_0x87bf90['type'][_0x66e1('0x2e')]};});_0x218902[_0x66e1('0x2f')]=_['map'](_0x411f53,_0x66e1('0x28'));_0x218902[_0x66e1('0x30')]=_[_0x66e1('0x31')](_0x3fcc99[_0x66e1('0x30')]);_0x218902['filters']=_[_0x66e1('0x32')](_0x218902[_0x66e1('0x2f')],_0x218902[_0x66e1('0x30')]);_0x2720af['attributes']=_[_0x66e1('0x32')](_0x218902['model'],qs['fields'](_0x3fcc99['query'][_0x66e1('0x33')]));_0x2720af[_0x66e1('0x34')]=_0x2720af['attributes'][_0x66e1('0x35')]?_0x2720af[_0x66e1('0x34')]:_0x218902['model'];if(!_0x3fcc99['query'][_0x66e1('0x36')](_0x66e1('0x37'))){_0x2720af[_0x66e1('0x1b')]=qs['limit'](_0x3fcc99[_0x66e1('0x30')][_0x66e1('0x1b')]);_0x2720af[_0x66e1('0x1d')]=qs[_0x66e1('0x1d')](_0x3fcc99['query'][_0x66e1('0x1d')]);}_0x2720af[_0x66e1('0x38')]=qs[_0x66e1('0x39')](_0x3fcc99[_0x66e1('0x30')][_0x66e1('0x39')]);_0x2720af[_0x66e1('0x3a')]=qs[_0x66e1('0x3b')](_[_0x66e1('0x3c')](_0x3fcc99[_0x66e1('0x30')],_0x218902[_0x66e1('0x3b')]),_0x411f53);if(_0x3fcc99[_0x66e1('0x30')][_0x66e1('0x3d')]){_0x2720af[_0x66e1('0x3a')]=_[_0x66e1('0x3e')](_0x2720af[_0x66e1('0x3a')],{'$or':_[_0x66e1('0x2a')](_0x411f53,function(_0x3b4b75){if(_0x3b4b75['type']!==_0x66e1('0x3f')){var _0x2eea39={};_0x2eea39[_0x3b4b75[_0x66e1('0x28')]]={'$like':'%'+_0x3fcc99['query'][_0x66e1('0x3d')]+'%'};return _0x2eea39;}})});}_0x2720af=_[_0x66e1('0x3e')]({},_0x2720af,_0x3fcc99[_0x66e1('0x40')]);var _0x37ae7f={'where':_0x2720af[_0x66e1('0x3a')]};return db[_0x66e1('0x2b')][_0x66e1('0x1c')](_0x37ae7f)[_0x66e1('0x24')](function(_0x4ca55d){_0xb6a4bf[_0x66e1('0x1c')]=_0x4ca55d;if(_0x3fcc99[_0x66e1('0x30')][_0x66e1('0x41')]){_0x2720af[_0x66e1('0x42')]=[{'all':!![]}];}return db[_0x66e1('0x2b')][_0x66e1('0x43')](_0x2720af);})[_0x66e1('0x24')](function(_0x42f58e){_0xb6a4bf[_0x66e1('0x44')]=_0x42f58e;return _0xb6a4bf;})[_0x66e1('0x24')](respondWithFilteredResult(_0xdd2360,_0x2720af))[_0x66e1('0x45')](handleError(_0xdd2360,null));};exports[_0x66e1('0x46')]=function(_0x573936,_0x29bd2a){var _0x180230={'raw':!![],'where':{'id':_0x573936[_0x66e1('0x47')]['id']}},_0x561b89={};_0x561b89[_0x66e1('0x2f')]=_[_0x66e1('0x31')](db[_0x66e1('0x2b')][_0x66e1('0x2c')]);_0x561b89[_0x66e1('0x30')]=_[_0x66e1('0x31')](_0x573936[_0x66e1('0x30')]);_0x561b89['filters']=_[_0x66e1('0x32')](_0x561b89['model'],_0x561b89[_0x66e1('0x30')]);_0x180230['attributes']=_['intersection'](_0x561b89[_0x66e1('0x2f')],qs[_0x66e1('0x33')](_0x573936[_0x66e1('0x30')]['fields']));_0x180230[_0x66e1('0x34')]=_0x180230[_0x66e1('0x34')][_0x66e1('0x35')]?_0x180230[_0x66e1('0x34')]:_0x561b89['model'];if(_0x573936['query'][_0x66e1('0x41')]){_0x180230[_0x66e1('0x42')]=[{'all':!![]}];}_0x180230=_[_0x66e1('0x3e')]({},_0x180230,_0x573936[_0x66e1('0x40')]);return db[_0x66e1('0x2b')]['find'](_0x180230)[_0x66e1('0x24')](handleEntityNotFound(_0x29bd2a,null))['then'](respondWithResult(_0x29bd2a,null))[_0x66e1('0x45')](handleError(_0x29bd2a,null));};exports['create']=function(_0x16088d,_0x4ce4ad){return db[_0x66e1('0x2b')][_0x66e1('0x48')](_0x16088d[_0x66e1('0x49')],{})[_0x66e1('0x24')](respondWithResult(_0x4ce4ad,0xc9))[_0x66e1('0x45')](handleError(_0x4ce4ad,null));};exports[_0x66e1('0x23')]=function(_0x529fe2,_0x317424){if(_0x529fe2['body']['id']){delete _0x529fe2[_0x66e1('0x49')]['id'];}return db[_0x66e1('0x2b')]['find']({'where':{'id':_0x529fe2[_0x66e1('0x47')]['id']}})[_0x66e1('0x24')](handleEntityNotFound(_0x317424,null))[_0x66e1('0x24')](saveUpdates(_0x529fe2[_0x66e1('0x49')],null))[_0x66e1('0x24')](respondWithResult(_0x317424,null))['catch'](handleError(_0x317424,null));};exports[_0x66e1('0x25')]=function(_0x2db8f3,_0x1717bd){return db[_0x66e1('0x2b')][_0x66e1('0x4a')]({'where':{'id':_0x2db8f3[_0x66e1('0x47')]['id']}})[_0x66e1('0x24')](handleEntityNotFound(_0x1717bd,null))[_0x66e1('0x24')](removeEntity(_0x1717bd,null))['catch'](handleError(_0x1717bd,null));};exports[_0x66e1('0x4b')]=function(_0x45cb6c,_0x44ad9f){return db['FaxQueueReport'][_0x66e1('0x4b')]()[_0x66e1('0x24')](respondWithResult(_0x44ad9f,null))['catch'](handleError(_0x44ad9f,null));};
\ No newline at end of file
+var _0xd49c=['request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','FaxQueueReport','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','keys','length','include','options','find','create','update','params','body','describe','rimraf','fast-json-patch'];(function(_0x555db2,_0x35f487){var _0x19e312=function(_0x397395){while(--_0x397395){_0x555db2['push'](_0x555db2['shift']());}};_0x19e312(++_0x35f487);}(_0xd49c,0x1d8));var _0xcd49=function(_0x5f3777,_0x4cdb8a){_0x5f3777=_0x5f3777-0x0;var _0x398fb6=_0xd49c[_0x5f3777];return _0x398fb6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcd49('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcd49('0x1'));var rp=require(_0xcd49('0x2'));var moment=require('moment');var BPromise=require(_0xcd49('0x3'));var Mustache=require('mustache');var util=require(_0xcd49('0x4'));var path=require('path');var sox=require(_0xcd49('0x5'));var csv=require(_0xcd49('0x6'));var ejs=require(_0xcd49('0x7'));var fs=require('fs');var fs_extra=require(_0xcd49('0x8'));var _=require(_0xcd49('0x9'));var squel=require(_0xcd49('0xa'));var crypto=require(_0xcd49('0xb'));var jsforce=require(_0xcd49('0xc'));var deskjs=require(_0xcd49('0xd'));var toCsv=require(_0xcd49('0x6'));var querystring=require(_0xcd49('0xe'));var Papa=require('papaparse');var Redis=require(_0xcd49('0xf'));var authService=require(_0xcd49('0x10'));var qs=require(_0xcd49('0x11'));var as=require(_0xcd49('0x12'));var hardwareService=require(_0xcd49('0x13'));var logger=require(_0xcd49('0x14'))(_0xcd49('0x15'));var utils=require(_0xcd49('0x16'));var config=require(_0xcd49('0x17'));var licenseUtil=require(_0xcd49('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5782e2,_0x5b8c8d){_0x5b8c8d=_0x5b8c8d||0xcc;return function(_0x2e817d){if(_0x2e817d){return _0x5782e2[_0xcd49('0x19')](_0x5b8c8d);}return _0x5782e2['status'](_0x5b8c8d)[_0xcd49('0x1a')]();};}function respondWithResult(_0x4bed3d,_0x5c7d8c){_0x5c7d8c=_0x5c7d8c||0xc8;return function(_0x26f20){if(_0x26f20){return _0x4bed3d[_0xcd49('0x1b')](_0x5c7d8c)[_0xcd49('0x1c')](_0x26f20);}};}function respondWithFilteredResult(_0x3f23e9,_0x1e2275){return function(_0x328755){if(_0x328755){var _0x5a0c6e=typeof _0x1e2275['offset']==='undefined'&&typeof _0x1e2275['limit']===_0xcd49('0x1d');var _0xd0043=_0x328755[_0xcd49('0x1e')];var _0x484900=_0x5a0c6e?0x0:_0x1e2275[_0xcd49('0x1f')];var _0x5f2ecb=_0x5a0c6e?_0x328755[_0xcd49('0x1e')]:_0x1e2275['offset']+_0x1e2275[_0xcd49('0x20')];var _0x78aff9;if(_0x5f2ecb>=_0xd0043){_0x5f2ecb=_0xd0043;_0x78aff9=0xc8;}else{_0x78aff9=0xce;}_0x3f23e9[_0xcd49('0x1b')](_0x78aff9);return _0x3f23e9[_0xcd49('0x21')](_0xcd49('0x22'),_0x484900+'-'+_0x5f2ecb+'/'+_0xd0043)[_0xcd49('0x1c')](_0x328755);}return null;};}function patchUpdates(_0x1c40a6){return function(_0x9475c1){try{jsonpatch[_0xcd49('0x23')](_0x9475c1,_0x1c40a6,!![]);}catch(_0x5b54bc){return BPromise[_0xcd49('0x24')](_0x5b54bc);}return _0x9475c1[_0xcd49('0x25')]();};}function saveUpdates(_0x37aea4,_0x5829d1){return function(_0x4fdab7){if(_0x4fdab7){return _0x4fdab7['update'](_0x37aea4)[_0xcd49('0x26')](function(_0x35d6b5){return _0x35d6b5;});}return null;};}function removeEntity(_0x57bc92,_0x1f649c){return function(_0x400669){if(_0x400669){return _0x400669[_0xcd49('0x27')]()['then'](function(){_0x57bc92[_0xcd49('0x1b')](0xcc)[_0xcd49('0x1a')]();});}};}function handleEntityNotFound(_0x56fcc0,_0x38d05a){return function(_0x22c0ed){if(!_0x22c0ed){_0x56fcc0['sendStatus'](0x194);}return _0x22c0ed;};}function handleError(_0x1ca798,_0xc3897c){_0xc3897c=_0xc3897c||0x1f4;return function(_0x77a7eb){logger[_0xcd49('0x28')](_0x77a7eb[_0xcd49('0x29')]);if(_0x77a7eb[_0xcd49('0x2a')]){delete _0x77a7eb[_0xcd49('0x2a')];}_0x1ca798[_0xcd49('0x1b')](_0xc3897c)[_0xcd49('0x2b')](_0x77a7eb);};}exports[_0xcd49('0x2c')]=function(_0x442c26,_0x5cb1c8){var _0x3be5e6={},_0x567557={},_0x43a448={'count':0x0,'rows':[]};var _0x468029=_['map'](db[_0xcd49('0x2d')][_0xcd49('0x2e')],function(_0x5a5603){return{'name':_0x5a5603[_0xcd49('0x2f')],'type':_0x5a5603[_0xcd49('0x30')][_0xcd49('0x31')]};});_0x567557[_0xcd49('0x32')]=_[_0xcd49('0x33')](_0x468029,_0xcd49('0x2a'));_0x567557['query']=_['keys'](_0x442c26[_0xcd49('0x34')]);_0x567557[_0xcd49('0x35')]=_[_0xcd49('0x36')](_0x567557[_0xcd49('0x32')],_0x567557[_0xcd49('0x34')]);_0x3be5e6[_0xcd49('0x37')]=_[_0xcd49('0x36')](_0x567557[_0xcd49('0x32')],qs[_0xcd49('0x38')](_0x442c26[_0xcd49('0x34')][_0xcd49('0x38')]));_0x3be5e6[_0xcd49('0x37')]=_0x3be5e6[_0xcd49('0x37')]['length']?_0x3be5e6[_0xcd49('0x37')]:_0x567557[_0xcd49('0x32')];if(!_0x442c26['query']['hasOwnProperty'](_0xcd49('0x39'))){_0x3be5e6[_0xcd49('0x20')]=qs['limit'](_0x442c26[_0xcd49('0x34')][_0xcd49('0x20')]);_0x3be5e6[_0xcd49('0x1f')]=qs[_0xcd49('0x1f')](_0x442c26[_0xcd49('0x34')][_0xcd49('0x1f')]);}_0x3be5e6[_0xcd49('0x3a')]=qs['sort'](_0x442c26[_0xcd49('0x34')][_0xcd49('0x3b')]);_0x3be5e6[_0xcd49('0x3c')]=qs[_0xcd49('0x35')](_[_0xcd49('0x3d')](_0x442c26[_0xcd49('0x34')],_0x567557['filters']),_0x468029);if(_0x442c26[_0xcd49('0x34')][_0xcd49('0x3e')]){_0x3be5e6[_0xcd49('0x3c')]=_['merge'](_0x3be5e6[_0xcd49('0x3c')],{'$or':_[_0xcd49('0x33')](_0x468029,function(_0x1893c6){if(_0x1893c6[_0xcd49('0x30')]!==_0xcd49('0x3f')){var _0x2e4e18={};_0x2e4e18[_0x1893c6[_0xcd49('0x2a')]]={'$like':'%'+_0x442c26[_0xcd49('0x34')][_0xcd49('0x3e')]+'%'};return _0x2e4e18;}})});}_0x3be5e6=_[_0xcd49('0x40')]({},_0x3be5e6,_0x442c26['options']);var _0x4c2103={'where':_0x3be5e6[_0xcd49('0x3c')]};return db[_0xcd49('0x2d')][_0xcd49('0x1e')](_0x4c2103)[_0xcd49('0x26')](function(_0x1c6534){_0x43a448['count']=_0x1c6534;if(_0x442c26[_0xcd49('0x34')][_0xcd49('0x41')]){_0x3be5e6['include']=[{'all':!![]}];}return db[_0xcd49('0x2d')][_0xcd49('0x42')](_0x3be5e6);})[_0xcd49('0x26')](function(_0x2ebfb9){_0x43a448[_0xcd49('0x43')]=_0x2ebfb9;return _0x43a448;})[_0xcd49('0x26')](respondWithFilteredResult(_0x5cb1c8,_0x3be5e6))[_0xcd49('0x44')](handleError(_0x5cb1c8,null));};exports['show']=function(_0x1c4832,_0x4f3dd7){var _0x470e4d={'raw':!![],'where':{'id':_0x1c4832['params']['id']}},_0x1a8685={};_0x1a8685[_0xcd49('0x32')]=_[_0xcd49('0x45')](db['FaxQueueReport'][_0xcd49('0x2e')]);_0x1a8685['query']=_[_0xcd49('0x45')](_0x1c4832[_0xcd49('0x34')]);_0x1a8685[_0xcd49('0x35')]=_['intersection'](_0x1a8685[_0xcd49('0x32')],_0x1a8685['query']);_0x470e4d['attributes']=_[_0xcd49('0x36')](_0x1a8685[_0xcd49('0x32')],qs['fields'](_0x1c4832[_0xcd49('0x34')][_0xcd49('0x38')]));_0x470e4d[_0xcd49('0x37')]=_0x470e4d[_0xcd49('0x37')][_0xcd49('0x46')]?_0x470e4d['attributes']:_0x1a8685[_0xcd49('0x32')];if(_0x1c4832[_0xcd49('0x34')][_0xcd49('0x41')]){_0x470e4d[_0xcd49('0x47')]=[{'all':!![]}];}_0x470e4d=_['merge']({},_0x470e4d,_0x1c4832[_0xcd49('0x48')]);return db[_0xcd49('0x2d')][_0xcd49('0x49')](_0x470e4d)[_0xcd49('0x26')](handleEntityNotFound(_0x4f3dd7,null))[_0xcd49('0x26')](respondWithResult(_0x4f3dd7,null))[_0xcd49('0x44')](handleError(_0x4f3dd7,null));};exports[_0xcd49('0x4a')]=function(_0x2c8457,_0x38676b){return db['FaxQueueReport'][_0xcd49('0x4a')](_0x2c8457['body'],{})[_0xcd49('0x26')](respondWithResult(_0x38676b,0xc9))[_0xcd49('0x44')](handleError(_0x38676b,null));};exports[_0xcd49('0x4b')]=function(_0x37f1e9,_0x268cc1){if(_0x37f1e9['body']['id']){delete _0x37f1e9['body']['id'];}return db['FaxQueueReport'][_0xcd49('0x49')]({'where':{'id':_0x37f1e9[_0xcd49('0x4c')]['id']}})['then'](handleEntityNotFound(_0x268cc1,null))[_0xcd49('0x26')](saveUpdates(_0x37f1e9[_0xcd49('0x4d')],null))[_0xcd49('0x26')](respondWithResult(_0x268cc1,null))['catch'](handleError(_0x268cc1,null));};exports['destroy']=function(_0xcb2b2e,_0x5b47d3){return db[_0xcd49('0x2d')][_0xcd49('0x49')]({'where':{'id':_0xcb2b2e[_0xcd49('0x4c')]['id']}})[_0xcd49('0x26')](handleEntityNotFound(_0x5b47d3,null))[_0xcd49('0x26')](removeEntity(_0x5b47d3,null))['catch'](handleError(_0x5b47d3,null));};exports[_0xcd49('0x4e')]=function(_0x17886b,_0x4cbb15){return db[_0xcd49('0x2d')]['describe']()[_0xcd49('0x26')](respondWithResult(_0x4cbb15,null))[_0xcd49('0x44')](handleError(_0x4cbb15,null));};
\ No newline at end of file
index d275e02..9334e08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['bluebird','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','../../config/logger','api','moment'];(function(_0x19f397,_0x501470){var _0x4e4e43=function(_0x1b3e20){while(--_0x1b3e20){_0x19f397['push'](_0x19f397['shift']());}};_0x4e4e43(++_0x501470);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xc4aa[_0x4d613c];return _0x301fe3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','define','report_fax_queue','uniqueid','util'];(function(_0xb1ed68,_0x1f2606){var _0x456735=function(_0x339539){while(--_0x339539){_0xb1ed68['push'](_0xb1ed68['shift']());}};_0x456735(++_0x1f2606);}(_0x1261,0x144));var _0x1126=function(_0x2c34ff,_0x1e8bee){_0x2c34ff=_0x2c34ff-0x0;var _0x476508=_0x1261[_0x2c34ff];return _0x476508;};'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')]('FaxQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 77d02a0..7543cb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bc8=['limit','UpdateFaxQueueReport','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','then','where','attributes'];(function(_0x353a57,_0x5476c9){var _0x333e00=function(_0x2f9851){while(--_0x2f9851){_0x353a57['push'](_0x353a57['shift']());}};_0x333e00(++_0x5476c9);}(_0x2bc8,0x1a6));var _0x82bc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2bc8[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x82bc('0x0'));var moment=require('moment');var BPromise=require(_0x82bc('0x1'));var rs=require(_0x82bc('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x82bc('0x3'));var logger=require(_0x82bc('0x4'))(_0x82bc('0x5'));var config=require('../../config/environment');var jayson=require(_0x82bc('0x6'));var client=jayson[_0x82bc('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c8fc2,_0x59e7cb,_0x49316d){return new BPromise(function(_0x26559d,_0x55209b){return client['request'](_0x1c8fc2,_0x49316d)['then'](function(_0x3ad971){logger['info'](_0x82bc('0x8'),_0x59e7cb,_0x82bc('0x9'));logger[_0x82bc('0xa')](_0x82bc('0xb'),_0x59e7cb,_0x82bc('0x9'),JSON[_0x82bc('0xc')](_0x3ad971));if(_0x3ad971[_0x82bc('0xd')]){if(_0x3ad971['error']['code']===0x1f4){logger[_0x82bc('0xd')](_0x82bc('0x8'),_0x59e7cb,_0x3ad971['error'][_0x82bc('0xe')]);return _0x55209b(_0x3ad971[_0x82bc('0xd')]['message']);}logger['error'](_0x82bc('0x8'),_0x59e7cb,_0x3ad971['error'][_0x82bc('0xe')]);return _0x26559d(_0x3ad971[_0x82bc('0xd')][_0x82bc('0xe')]);}else{logger[_0x82bc('0xf')](_0x82bc('0x8'),_0x59e7cb,'request\x20sent');_0x26559d(_0x3ad971['result'][_0x82bc('0xe')]);}})[_0x82bc('0x10')](function(_0x117ed0){logger[_0x82bc('0xd')](_0x82bc('0x8'),_0x59e7cb,_0x117ed0);_0x55209b(_0x117ed0);});});}exports[_0x82bc('0x11')]=function(_0x13cb97){var _0x4087b2=this;return new Promise(function(_0x1a6993,_0x2ad871){return db[_0x82bc('0x12')][_0x82bc('0x13')](_0x13cb97[_0x82bc('0x14')],{'raw':_0x13cb97['options']?_0x13cb97[_0x82bc('0x15')][_0x82bc('0x16')]===undefined?!![]:![]:!![]})[_0x82bc('0x17')](function(_0x317070){logger[_0x82bc('0xf')]('CreateFaxQueueReport',_0x13cb97);logger[_0x82bc('0xa')](_0x82bc('0x11'),_0x13cb97,JSON[_0x82bc('0xc')](_0x317070));_0x1a6993(_0x317070);})[_0x82bc('0x10')](function(_0x5f102b){logger[_0x82bc('0xd')]('CreateFaxQueueReport',_0x5f102b[_0x82bc('0xe')],_0x13cb97);_0x2ad871(_0x4087b2['error'](0x1f4,_0x5f102b[_0x82bc('0xe')]));});});};exports['UpdateFaxQueueReport']=function(_0x524630){var _0x4659e0=this;return new Promise(function(_0x445688,_0x287ca4){return db['FaxQueueReport']['update'](_0x524630[_0x82bc('0x14')],{'raw':_0x524630[_0x82bc('0x15')]?_0x524630['options'][_0x82bc('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x524630[_0x82bc('0x15')]?_0x524630[_0x82bc('0x15')][_0x82bc('0x18')]||null:null,'attributes':_0x524630[_0x82bc('0x15')]?_0x524630['options'][_0x82bc('0x19')]||null:null,'limit':_0x524630[_0x82bc('0x15')]?_0x524630['options'][_0x82bc('0x1a')]||null:null})[_0x82bc('0x17')](function(_0x32c77a){logger[_0x82bc('0xf')](_0x82bc('0x1b'),_0x524630);logger['debug'](_0x82bc('0x1b'),_0x524630,JSON['stringify'](_0x32c77a));_0x445688(_0x32c77a);})['catch'](function(_0x380927){logger[_0x82bc('0xd')](_0x82bc('0x1b'),_0x380927[_0x82bc('0xe')],_0x524630);_0x287ca4(_0x4659e0[_0x82bc('0xd')](0x1f4,_0x380927['message']));});});};
\ No newline at end of file
+var _0x55d6=['request\x20sent','debug','stringify','error','code','message','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','where','attributes','UpdateFaxQueueReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','http','request','then','info','FaxQueueReport,\x20%s,\x20%s'];(function(_0x4446f0,_0x1dcec1){var _0x5cc013=function(_0x1138fd){while(--_0x1138fd){_0x4446f0['push'](_0x4446f0['shift']());}};_0x5cc013(++_0x1dcec1);}(_0x55d6,0xbe));var _0x655d=function(_0x2f37a8,_0x1a4cd9){_0x2f37a8=_0x2f37a8-0x0;var _0x11155f=_0x55d6[_0x2f37a8];return _0x11155f;};'use strict';var _=require(_0x655d('0x0'));var util=require('util');var moment=require(_0x655d('0x1'));var BPromise=require(_0x655d('0x2'));var rs=require(_0x655d('0x3'));var fs=require('fs');var Redis=require(_0x655d('0x4'));var db=require(_0x655d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x655d('0x6'))('rpc');var config=require(_0x655d('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x655d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x13f129,_0x546f31,_0x29e1d9){return new BPromise(function(_0x451f0f,_0x23da42){return client[_0x655d('0x9')](_0x13f129,_0x29e1d9)[_0x655d('0xa')](function(_0x439873){logger[_0x655d('0xb')](_0x655d('0xc'),_0x546f31,_0x655d('0xd'));logger[_0x655d('0xe')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x546f31,_0x655d('0xd'),JSON[_0x655d('0xf')](_0x439873));if(_0x439873[_0x655d('0x10')]){if(_0x439873[_0x655d('0x10')][_0x655d('0x11')]===0x1f4){logger[_0x655d('0x10')](_0x655d('0xc'),_0x546f31,_0x439873[_0x655d('0x10')][_0x655d('0x12')]);return _0x23da42(_0x439873['error'][_0x655d('0x12')]);}logger['error'](_0x655d('0xc'),_0x546f31,_0x439873[_0x655d('0x10')]['message']);return _0x451f0f(_0x439873['error'][_0x655d('0x12')]);}else{logger[_0x655d('0xb')](_0x655d('0xc'),_0x546f31,_0x655d('0xd'));_0x451f0f(_0x439873['result']['message']);}})[_0x655d('0x13')](function(_0x131839){logger[_0x655d('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x546f31,_0x131839);_0x23da42(_0x131839);});});}exports[_0x655d('0x14')]=function(_0x566499){var _0x13a2a2=this;return new Promise(function(_0x11b9aa,_0x1eea84){return db[_0x655d('0x15')][_0x655d('0x16')](_0x566499[_0x655d('0x17')],{'raw':_0x566499[_0x655d('0x18')]?_0x566499['options'][_0x655d('0x19')]===undefined?!![]:![]:!![]})[_0x655d('0xa')](function(_0x3feee6){logger[_0x655d('0xb')](_0x655d('0x14'),_0x566499);logger['debug'](_0x655d('0x14'),_0x566499,JSON[_0x655d('0xf')](_0x3feee6));_0x11b9aa(_0x3feee6);})[_0x655d('0x13')](function(_0x510fc5){logger[_0x655d('0x10')](_0x655d('0x14'),_0x510fc5[_0x655d('0x12')],_0x566499);_0x1eea84(_0x13a2a2['error'](0x1f4,_0x510fc5[_0x655d('0x12')]));});});};exports['UpdateFaxQueueReport']=function(_0x5794b8){var _0x272415=this;return new Promise(function(_0x3c9fa3,_0xbd1dab){return db['FaxQueueReport']['update'](_0x5794b8[_0x655d('0x17')],{'raw':_0x5794b8['options']?_0x5794b8[_0x655d('0x18')][_0x655d('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5794b8['options']?_0x5794b8['options'][_0x655d('0x1a')]||null:null,'attributes':_0x5794b8[_0x655d('0x18')]?_0x5794b8[_0x655d('0x18')][_0x655d('0x1b')]||null:null,'limit':_0x5794b8[_0x655d('0x18')]?_0x5794b8[_0x655d('0x18')]['limit']||null:null})['then'](function(_0x5f3ba8){logger[_0x655d('0xb')](_0x655d('0x1c'),_0x5794b8);logger['debug'](_0x655d('0x1c'),_0x5794b8,JSON['stringify'](_0x5f3ba8));_0x3c9fa3(_0x5f3ba8);})[_0x655d('0x13')](function(_0x5f263b){logger[_0x655d('0x10')](_0x655d('0x1c'),_0x5f263b['message'],_0x5794b8);_0xbd1dab(_0x272415['error'](0x1f4,_0x5f263b[_0x655d('0x12')]));});});};
\ No newline at end of file
index 3cb0e10..d38f939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18b3=['destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update'];(function(_0x3dc535,_0x594fb9){var _0xbda957=function(_0x4e3775){while(--_0x4e3775){_0x3dc535['push'](_0x3dc535['shift']());}};_0xbda957(++_0x594fb9);}(_0x18b3,0xda));var _0x318b=function(_0x59fde6,_0x20a995){_0x59fde6=_0x59fde6-0x0;var _0x24566b=_0x18b3[_0x59fde6];return _0x24566b;};'use strict';var multer=require(_0x318b('0x0'));var util=require('util');var path=require(_0x318b('0x1'));var timeout=require(_0x318b('0x2'));var express=require('express');var router=express[_0x318b('0x3')]();var fs_extra=require(_0x318b('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x318b('0x5'));var controller=require(_0x318b('0x6'));router[_0x318b('0x7')]('/',auth[_0x318b('0x8')](),controller[_0x318b('0x9')]);router['get']('/describe',auth[_0x318b('0x8')](),controller['describe']);router[_0x318b('0x7')](_0x318b('0xa'),auth[_0x318b('0x8')](),controller[_0x318b('0xb')]);router[_0x318b('0xc')]('/',auth['isAuthenticated'](),controller[_0x318b('0xd')]);router[_0x318b('0xe')](_0x318b('0xa'),auth[_0x318b('0x8')](),controller[_0x318b('0xf')]);router['delete'](_0x318b('0xa'),auth[_0x318b('0x8')](),controller[_0x318b('0x10')]);module[_0x318b('0x11')]=router;
\ No newline at end of file
+var _0xda77=['util','path','connect-timeout','express','fs-extra','./faxQueueReport.controller','index','get','/describe','isAuthenticated','/:id','show','put','update','destroy','multer'];(function(_0x1b62b8,_0x3e78d9){var _0x47a5a0=function(_0x479a5b){while(--_0x479a5b){_0x1b62b8['push'](_0x1b62b8['shift']());}};_0x47a5a0(++_0x3e78d9);}(_0xda77,0x19f));var _0x7da7=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xda77[_0x263a74];return _0x2aa86c;};'use strict';var multer=require(_0x7da7('0x0'));var util=require(_0x7da7('0x1'));var path=require(_0x7da7('0x2'));var timeout=require(_0x7da7('0x3'));var express=require(_0x7da7('0x4'));var router=express['Router']();var fs_extra=require(_0x7da7('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7da7('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7da7('0x7')]);router[_0x7da7('0x8')](_0x7da7('0x9'),auth[_0x7da7('0xa')](),controller['describe']);router['get'](_0x7da7('0xb'),auth[_0x7da7('0xa')](),controller[_0x7da7('0xc')]);router['post']('/',auth[_0x7da7('0xa')](),controller['create']);router[_0x7da7('0xd')](_0x7da7('0xb'),auth[_0x7da7('0xa')](),controller[_0x7da7('0xe')]);router['delete'](_0x7da7('0xb'),auth[_0x7da7('0xa')](),controller[_0x7da7('0xf')]);module['exports']=router;
\ No newline at end of file
index 179a9b2..76d7401 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x2fa7bf,_0x42fd1a){var _0x5a6224=function(_0x5c9721){while(--_0x5c9721){_0x2fa7bf['push'](_0x2fa7bf['shift']());}};_0x5a6224(++_0x42fd1a);}(_0x4b84,0x1cc));var _0x44b8=function(_0x412e27,_0x20a978){_0x412e27=_0x412e27-0x0;var _0x53da42=_0x4b84[_0x412e27];return _0x53da42;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x2899e4,_0x45a511){var _0x11d791=function(_0x53c8a2){while(--_0x53c8a2){_0x2899e4['push'](_0x2899e4['shift']());}};_0x11d791(++_0x45a511);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
index 7e5a31d..b52ed53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7294=['to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','destroy','then','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','pick','filters','where','merge','filter','FaxTransferReport','includeAll','include','catch','show','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox'];(function(_0x77e5d6,_0x16e152){var _0x38b5bb=function(_0x31cb34){while(--_0x31cb34){_0x77e5d6['push'](_0x77e5d6['shift']());}};_0x38b5bb(++_0x16e152);}(_0x7294,0x86));var _0x4729=function(_0x3b4903,_0x4be99b){_0x3b4903=_0x3b4903-0x0;var _0x55202c=_0x7294[_0x3b4903];return _0x55202c;};'use strict';var emlformat=require(_0x4729('0x0'));var rimraf=require(_0x4729('0x1'));var zipdir=require(_0x4729('0x2'));var jsonpatch=require(_0x4729('0x3'));var rp=require(_0x4729('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4729('0x5'));var path=require(_0x4729('0x6'));var sox=require(_0x4729('0x7'));var csv=require(_0x4729('0x8'));var ejs=require(_0x4729('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4729('0xa'));var squel=require(_0x4729('0xb'));var crypto=require(_0x4729('0xc'));var jsforce=require(_0x4729('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4729('0xe'));var Papa=require('papaparse');var Redis=require(_0x4729('0xf'));var authService=require(_0x4729('0x10'));var qs=require(_0x4729('0x11'));var as=require(_0x4729('0x12'));var hardwareService=require(_0x4729('0x13'));var logger=require(_0x4729('0x14'))(_0x4729('0x15'));var utils=require(_0x4729('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x4729('0x17'));var db=require(_0x4729('0x18'))['db'];function respondWithStatusCode(_0xe0b215,_0x103f66){_0x103f66=_0x103f66||0xcc;return function(_0x24dcba){if(_0x24dcba){return _0xe0b215[_0x4729('0x19')](_0x103f66);}return _0xe0b215[_0x4729('0x1a')](_0x103f66)[_0x4729('0x1b')]();};}function respondWithResult(_0x3faa76,_0xe60306){_0xe60306=_0xe60306||0xc8;return function(_0x54d5ee){if(_0x54d5ee){return _0x3faa76[_0x4729('0x1a')](_0xe60306)['json'](_0x54d5ee);}};}function respondWithFilteredResult(_0x3cc662,_0x502c66){return function(_0xffe9b){if(_0xffe9b){var _0x1a293c=typeof _0x502c66[_0x4729('0x1c')]===_0x4729('0x1d')&&typeof _0x502c66[_0x4729('0x1e')]==='undefined';var _0x444a66=_0xffe9b[_0x4729('0x1f')];var _0x2b3210=_0x1a293c?0x0:_0x502c66[_0x4729('0x1c')];var _0x526181=_0x1a293c?_0xffe9b[_0x4729('0x1f')]:_0x502c66['offset']+_0x502c66[_0x4729('0x1e')];var _0x5d8fc0;if(_0x526181>=_0x444a66){_0x526181=_0x444a66;_0x5d8fc0=0xc8;}else{_0x5d8fc0=0xce;}_0x3cc662['status'](_0x5d8fc0);return _0x3cc662[_0x4729('0x20')](_0x4729('0x21'),_0x2b3210+'-'+_0x526181+'/'+_0x444a66)[_0x4729('0x22')](_0xffe9b);}return null;};}function patchUpdates(_0x36df0a){return function(_0x210499){try{jsonpatch[_0x4729('0x23')](_0x210499,_0x36df0a,!![]);}catch(_0x5af12f){return BPromise['reject'](_0x5af12f);}return _0x210499['save']();};}function saveUpdates(_0x1e0922,_0xd2e044){return function(_0x115957){if(_0x115957){return _0x115957[_0x4729('0x24')](_0x1e0922)['then'](function(_0x208f8e){return _0x208f8e;});}return null;};}function removeEntity(_0x25d795,_0x48ff76){return function(_0x30643b){if(_0x30643b){return _0x30643b[_0x4729('0x25')]()[_0x4729('0x26')](function(){_0x25d795['status'](0xcc)[_0x4729('0x1b')]();});}};}function handleEntityNotFound(_0x18dca7,_0x2439e6){return function(_0x1210ed){if(!_0x1210ed){_0x18dca7[_0x4729('0x19')](0x194);}return _0x1210ed;};}function handleError(_0x267f36,_0x166c26){_0x166c26=_0x166c26||0x1f4;return function(_0x1d502f){logger['error'](_0x1d502f[_0x4729('0x27')]);if(_0x1d502f['name']){delete _0x1d502f[_0x4729('0x28')];}_0x267f36['status'](_0x166c26)[_0x4729('0x29')](_0x1d502f);};}exports['index']=function(_0xb430d8,_0x3a0b3d){var _0x268c31={},_0x459401={},_0x9f1948={'count':0x0,'rows':[]};var _0x886d2a=_[_0x4729('0x2a')](db['FaxTransferReport'][_0x4729('0x2b')],function(_0x2e8b4b){return{'name':_0x2e8b4b[_0x4729('0x2c')],'type':_0x2e8b4b[_0x4729('0x2d')]['key']};});_0x459401[_0x4729('0x2e')]=_[_0x4729('0x2a')](_0x886d2a,_0x4729('0x28'));_0x459401[_0x4729('0x2f')]=_[_0x4729('0x30')](_0xb430d8['query']);_0x459401['filters']=_[_0x4729('0x31')](_0x459401[_0x4729('0x2e')],_0x459401['query']);_0x268c31[_0x4729('0x32')]=_['intersection'](_0x459401['model'],qs['fields'](_0xb430d8[_0x4729('0x2f')][_0x4729('0x33')]));_0x268c31[_0x4729('0x32')]=_0x268c31['attributes'][_0x4729('0x34')]?_0x268c31['attributes']:_0x459401[_0x4729('0x2e')];if(!_0xb430d8[_0x4729('0x2f')][_0x4729('0x35')](_0x4729('0x36'))){_0x268c31[_0x4729('0x1e')]=qs[_0x4729('0x1e')](_0xb430d8[_0x4729('0x2f')][_0x4729('0x1e')]);_0x268c31[_0x4729('0x1c')]=qs[_0x4729('0x1c')](_0xb430d8[_0x4729('0x2f')]['offset']);}_0x268c31[_0x4729('0x37')]=qs['sort'](_0xb430d8[_0x4729('0x2f')]['sort']);_0x268c31['where']=qs['filters'](_[_0x4729('0x38')](_0xb430d8[_0x4729('0x2f')],_0x459401[_0x4729('0x39')]),_0x886d2a);if(_0xb430d8[_0x4729('0x2f')]['filter']){_0x268c31[_0x4729('0x3a')]=_[_0x4729('0x3b')](_0x268c31[_0x4729('0x3a')],{'$or':_['map'](_0x886d2a,function(_0x1a3fa3){if(_0x1a3fa3[_0x4729('0x2d')]!=='VIRTUAL'){var _0x4dcbe5={};_0x4dcbe5[_0x1a3fa3['name']]={'$like':'%'+_0xb430d8[_0x4729('0x2f')][_0x4729('0x3c')]+'%'};return _0x4dcbe5;}})});}_0x268c31=_['merge']({},_0x268c31,_0xb430d8['options']);var _0x372460={'where':_0x268c31['where']};return db[_0x4729('0x3d')]['count'](_0x372460)[_0x4729('0x26')](function(_0x5eeb87){_0x9f1948[_0x4729('0x1f')]=_0x5eeb87;if(_0xb430d8[_0x4729('0x2f')][_0x4729('0x3e')]){_0x268c31[_0x4729('0x3f')]=[{'all':!![]}];}return db[_0x4729('0x3d')]['findAll'](_0x268c31);})[_0x4729('0x26')](function(_0x3a247b){_0x9f1948['rows']=_0x3a247b;return _0x9f1948;})[_0x4729('0x26')](respondWithFilteredResult(_0x3a0b3d,_0x268c31))[_0x4729('0x40')](handleError(_0x3a0b3d,null));};exports[_0x4729('0x41')]=function(_0xf4dd3d,_0x1e3501){var _0x1583ad={'raw':!![],'where':{'id':_0xf4dd3d['params']['id']}},_0x5f154d={};_0x5f154d[_0x4729('0x2e')]=_[_0x4729('0x30')](db['FaxTransferReport'][_0x4729('0x2b')]);_0x5f154d[_0x4729('0x2f')]=_[_0x4729('0x30')](_0xf4dd3d[_0x4729('0x2f')]);_0x5f154d[_0x4729('0x39')]=_[_0x4729('0x31')](_0x5f154d[_0x4729('0x2e')],_0x5f154d['query']);_0x1583ad[_0x4729('0x32')]=_[_0x4729('0x31')](_0x5f154d[_0x4729('0x2e')],qs[_0x4729('0x33')](_0xf4dd3d[_0x4729('0x2f')][_0x4729('0x33')]));_0x1583ad[_0x4729('0x32')]=_0x1583ad[_0x4729('0x32')]['length']?_0x1583ad[_0x4729('0x32')]:_0x5f154d['model'];if(_0xf4dd3d[_0x4729('0x2f')][_0x4729('0x3e')]){_0x1583ad[_0x4729('0x3f')]=[{'all':!![]}];}_0x1583ad=_[_0x4729('0x3b')]({},_0x1583ad,_0xf4dd3d['options']);return db[_0x4729('0x3d')][_0x4729('0x42')](_0x1583ad)[_0x4729('0x26')](handleEntityNotFound(_0x1e3501,null))[_0x4729('0x26')](respondWithResult(_0x1e3501,null))[_0x4729('0x40')](handleError(_0x1e3501,null));};exports[_0x4729('0x43')]=function(_0x3d80ff,_0xec0919){return db['FaxTransferReport'][_0x4729('0x43')](_0x3d80ff['body'],{})['then'](respondWithResult(_0xec0919,0xc9))['catch'](handleError(_0xec0919,null));};exports[_0x4729('0x24')]=function(_0x4cde24,_0x1b07eb){if(_0x4cde24[_0x4729('0x44')]['id']){delete _0x4cde24['body']['id'];}return db['FaxTransferReport']['find']({'where':{'id':_0x4cde24[_0x4729('0x45')]['id']}})[_0x4729('0x26')](handleEntityNotFound(_0x1b07eb,null))[_0x4729('0x26')](saveUpdates(_0x4cde24['body'],null))[_0x4729('0x26')](respondWithResult(_0x1b07eb,null))[_0x4729('0x40')](handleError(_0x1b07eb,null));};exports['destroy']=function(_0x2525a9,_0x55fe4d){return db[_0x4729('0x3d')][_0x4729('0x42')]({'where':{'id':_0x2525a9['params']['id']}})[_0x4729('0x26')](handleEntityNotFound(_0x55fe4d,null))[_0x4729('0x26')](removeEntity(_0x55fe4d,null))['catch'](handleError(_0x55fe4d,null));};exports['describe']=function(_0x3bbb9d,_0x422001){return db[_0x4729('0x3d')][_0x4729('0x46')]()[_0x4729('0x26')](respondWithResult(_0x422001,null))[_0x4729('0x40')](handleError(_0x422001,null));};
\ No newline at end of file
+var _0x67e2=['error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','order','sort','where','pick','filter','VIRTUAL','merge','findAll','rows','catch','show','FaxTransferReport','length','include','options','find','then','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','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','offset','undefined','limit','count','set','apply','update','destroy','end','sendStatus'];(function(_0x324eb8,_0x38e919){var _0x337a40=function(_0x283393){while(--_0x283393){_0x324eb8['push'](_0x324eb8['shift']());}};_0x337a40(++_0x38e919);}(_0x67e2,0xc3));var _0x267e=function(_0x4cea3c,_0x407da8){_0x4cea3c=_0x4cea3c-0x0;var _0x32c9bb=_0x67e2[_0x4cea3c];return _0x32c9bb;};'use strict';var emlformat=require(_0x267e('0x0'));var rimraf=require(_0x267e('0x1'));var zipdir=require(_0x267e('0x2'));var jsonpatch=require(_0x267e('0x3'));var rp=require(_0x267e('0x4'));var moment=require(_0x267e('0x5'));var BPromise=require(_0x267e('0x6'));var Mustache=require(_0x267e('0x7'));var util=require(_0x267e('0x8'));var path=require(_0x267e('0x9'));var sox=require(_0x267e('0xa'));var csv=require(_0x267e('0xb'));var ejs=require(_0x267e('0xc'));var fs=require('fs');var fs_extra=require(_0x267e('0xd'));var _=require(_0x267e('0xe'));var squel=require('squel');var crypto=require(_0x267e('0xf'));var jsforce=require(_0x267e('0x10'));var deskjs=require(_0x267e('0x11'));var toCsv=require(_0x267e('0xb'));var querystring=require(_0x267e('0x12'));var Papa=require(_0x267e('0x13'));var Redis=require(_0x267e('0x14'));var authService=require(_0x267e('0x15'));var qs=require(_0x267e('0x16'));var as=require(_0x267e('0x17'));var hardwareService=require(_0x267e('0x18'));var logger=require(_0x267e('0x19'))(_0x267e('0x1a'));var utils=require(_0x267e('0x1b'));var config=require(_0x267e('0x1c'));var licenseUtil=require(_0x267e('0x1d'));var db=require(_0x267e('0x1e'))['db'];function respondWithStatusCode(_0x4f3102,_0x10c34f){_0x10c34f=_0x10c34f||0xcc;return function(_0x1b675f){if(_0x1b675f){return _0x4f3102['sendStatus'](_0x10c34f);}return _0x4f3102[_0x267e('0x1f')](_0x10c34f)['end']();};}function respondWithResult(_0x657dcd,_0x56dbe7){_0x56dbe7=_0x56dbe7||0xc8;return function(_0x43e604){if(_0x43e604){return _0x657dcd[_0x267e('0x1f')](_0x56dbe7)['json'](_0x43e604);}};}function respondWithFilteredResult(_0x45736d,_0x236212){return function(_0x204127){if(_0x204127){var _0x3f0f5f=typeof _0x236212[_0x267e('0x20')]===_0x267e('0x21')&&typeof _0x236212[_0x267e('0x22')]===_0x267e('0x21');var _0x4bb19e=_0x204127[_0x267e('0x23')];var _0x208270=_0x3f0f5f?0x0:_0x236212[_0x267e('0x20')];var _0x5696de=_0x3f0f5f?_0x204127[_0x267e('0x23')]:_0x236212['offset']+_0x236212['limit'];var _0x4f5b82;if(_0x5696de>=_0x4bb19e){_0x5696de=_0x4bb19e;_0x4f5b82=0xc8;}else{_0x4f5b82=0xce;}_0x45736d[_0x267e('0x1f')](_0x4f5b82);return _0x45736d[_0x267e('0x24')]('Content-Range',_0x208270+'-'+_0x5696de+'/'+_0x4bb19e)['json'](_0x204127);}return null;};}function patchUpdates(_0x3e7749){return function(_0x58e242){try{jsonpatch[_0x267e('0x25')](_0x58e242,_0x3e7749,!![]);}catch(_0x2bce7b){return BPromise['reject'](_0x2bce7b);}return _0x58e242['save']();};}function saveUpdates(_0x256890,_0x47aede){return function(_0x2a12f4){if(_0x2a12f4){return _0x2a12f4[_0x267e('0x26')](_0x256890)['then'](function(_0x27d69c){return _0x27d69c;});}return null;};}function removeEntity(_0x1bd7c6,_0x3f01aa){return function(_0x547a46){if(_0x547a46){return _0x547a46[_0x267e('0x27')]()['then'](function(){_0x1bd7c6['status'](0xcc)[_0x267e('0x28')]();});}};}function handleEntityNotFound(_0x521f95,_0x2fd744){return function(_0x34c3ba){if(!_0x34c3ba){_0x521f95[_0x267e('0x29')](0x194);}return _0x34c3ba;};}function handleError(_0x5db037,_0x2a2e20){_0x2a2e20=_0x2a2e20||0x1f4;return function(_0x5ec0c0){logger[_0x267e('0x2a')](_0x5ec0c0[_0x267e('0x2b')]);if(_0x5ec0c0['name']){delete _0x5ec0c0[_0x267e('0x2c')];}_0x5db037['status'](_0x2a2e20)['send'](_0x5ec0c0);};}exports[_0x267e('0x2d')]=function(_0x18e373,_0x2d2bb5){var _0x5b3ef6={},_0x4f4cc8={},_0x4efe21={'count':0x0,'rows':[]};var _0x13e716=_[_0x267e('0x2e')](db['FaxTransferReport'][_0x267e('0x2f')],function(_0x543c74){return{'name':_0x543c74[_0x267e('0x30')],'type':_0x543c74[_0x267e('0x31')][_0x267e('0x32')]};});_0x4f4cc8[_0x267e('0x33')]=_[_0x267e('0x2e')](_0x13e716,_0x267e('0x2c'));_0x4f4cc8[_0x267e('0x34')]=_[_0x267e('0x35')](_0x18e373['query']);_0x4f4cc8[_0x267e('0x36')]=_['intersection'](_0x4f4cc8[_0x267e('0x33')],_0x4f4cc8['query']);_0x5b3ef6[_0x267e('0x37')]=_[_0x267e('0x38')](_0x4f4cc8['model'],qs[_0x267e('0x39')](_0x18e373[_0x267e('0x34')]['fields']));_0x5b3ef6[_0x267e('0x37')]=_0x5b3ef6[_0x267e('0x37')]['length']?_0x5b3ef6[_0x267e('0x37')]:_0x4f4cc8[_0x267e('0x33')];if(!_0x18e373[_0x267e('0x34')]['hasOwnProperty']('nolimit')){_0x5b3ef6['limit']=qs['limit'](_0x18e373[_0x267e('0x34')][_0x267e('0x22')]);_0x5b3ef6['offset']=qs['offset'](_0x18e373[_0x267e('0x34')][_0x267e('0x20')]);}_0x5b3ef6[_0x267e('0x3a')]=qs[_0x267e('0x3b')](_0x18e373['query'][_0x267e('0x3b')]);_0x5b3ef6[_0x267e('0x3c')]=qs[_0x267e('0x36')](_[_0x267e('0x3d')](_0x18e373[_0x267e('0x34')],_0x4f4cc8[_0x267e('0x36')]),_0x13e716);if(_0x18e373[_0x267e('0x34')][_0x267e('0x3e')]){_0x5b3ef6[_0x267e('0x3c')]=_['merge'](_0x5b3ef6['where'],{'$or':_[_0x267e('0x2e')](_0x13e716,function(_0x48d6a4){if(_0x48d6a4[_0x267e('0x31')]!==_0x267e('0x3f')){var _0x44b192={};_0x44b192[_0x48d6a4[_0x267e('0x2c')]]={'$like':'%'+_0x18e373['query'][_0x267e('0x3e')]+'%'};return _0x44b192;}})});}_0x5b3ef6=_[_0x267e('0x40')]({},_0x5b3ef6,_0x18e373['options']);var _0x5a3301={'where':_0x5b3ef6[_0x267e('0x3c')]};return db['FaxTransferReport']['count'](_0x5a3301)['then'](function(_0x102faa){_0x4efe21[_0x267e('0x23')]=_0x102faa;if(_0x18e373[_0x267e('0x34')]['includeAll']){_0x5b3ef6['include']=[{'all':!![]}];}return db['FaxTransferReport'][_0x267e('0x41')](_0x5b3ef6);})['then'](function(_0x3478a5){_0x4efe21[_0x267e('0x42')]=_0x3478a5;return _0x4efe21;})['then'](respondWithFilteredResult(_0x2d2bb5,_0x5b3ef6))[_0x267e('0x43')](handleError(_0x2d2bb5,null));};exports[_0x267e('0x44')]=function(_0x48943e,_0x36cf52){var _0x1236bb={'raw':!![],'where':{'id':_0x48943e['params']['id']}},_0x4accf5={};_0x4accf5[_0x267e('0x33')]=_['keys'](db[_0x267e('0x45')][_0x267e('0x2f')]);_0x4accf5[_0x267e('0x34')]=_[_0x267e('0x35')](_0x48943e[_0x267e('0x34')]);_0x4accf5[_0x267e('0x36')]=_[_0x267e('0x38')](_0x4accf5[_0x267e('0x33')],_0x4accf5['query']);_0x1236bb[_0x267e('0x37')]=_[_0x267e('0x38')](_0x4accf5[_0x267e('0x33')],qs[_0x267e('0x39')](_0x48943e[_0x267e('0x34')][_0x267e('0x39')]));_0x1236bb[_0x267e('0x37')]=_0x1236bb[_0x267e('0x37')][_0x267e('0x46')]?_0x1236bb['attributes']:_0x4accf5[_0x267e('0x33')];if(_0x48943e[_0x267e('0x34')]['includeAll']){_0x1236bb[_0x267e('0x47')]=[{'all':!![]}];}_0x1236bb=_['merge']({},_0x1236bb,_0x48943e[_0x267e('0x48')]);return db[_0x267e('0x45')][_0x267e('0x49')](_0x1236bb)[_0x267e('0x4a')](handleEntityNotFound(_0x36cf52,null))['then'](respondWithResult(_0x36cf52,null))[_0x267e('0x43')](handleError(_0x36cf52,null));};exports[_0x267e('0x4b')]=function(_0x2c4add,_0x159cff){return db['FaxTransferReport'][_0x267e('0x4b')](_0x2c4add[_0x267e('0x4c')],{})[_0x267e('0x4a')](respondWithResult(_0x159cff,0xc9))[_0x267e('0x43')](handleError(_0x159cff,null));};exports[_0x267e('0x26')]=function(_0x1d710c,_0x32e44f){if(_0x1d710c[_0x267e('0x4c')]['id']){delete _0x1d710c[_0x267e('0x4c')]['id'];}return db['FaxTransferReport']['find']({'where':{'id':_0x1d710c[_0x267e('0x4d')]['id']}})[_0x267e('0x4a')](handleEntityNotFound(_0x32e44f,null))[_0x267e('0x4a')](saveUpdates(_0x1d710c[_0x267e('0x4c')],null))['then'](respondWithResult(_0x32e44f,null))[_0x267e('0x43')](handleError(_0x32e44f,null));};exports[_0x267e('0x27')]=function(_0x191c39,_0x4cbe7d){return db[_0x267e('0x45')][_0x267e('0x49')]({'where':{'id':_0x191c39[_0x267e('0x4d')]['id']}})[_0x267e('0x4a')](handleEntityNotFound(_0x4cbe7d,null))[_0x267e('0x4a')](removeEntity(_0x4cbe7d,null))['catch'](handleError(_0x4cbe7d,null));};exports[_0x267e('0x4e')]=function(_0x1092c8,_0x53dcd8){return db[_0x267e('0x45')][_0x267e('0x4e')]()[_0x267e('0x4a')](respondWithResult(_0x53dcd8,null))[_0x267e('0x43')](handleError(_0x53dcd8,null));};
\ No newline at end of file
index fbdd063..cc95a0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb3a=['exports','define','FaxTransferReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./faxTransferReport.attributes'];(function(_0x1bf8f5,_0x28f62c){var _0x36a54e=function(_0x43ba61){while(--_0x43ba61){_0x1bf8f5['push'](_0x1bf8f5['shift']());}};_0x36a54e(++_0x28f62c);}(_0xdb3a,0x163));var _0xadb3=function(_0x44216d,_0x4938a7){_0x44216d=_0x44216d-0x0;var _0xeca523=_0xdb3a[_0x44216d];return _0xeca523;};'use strict';var _=require(_0xadb3('0x0'));var util=require('util');var logger=require(_0xadb3('0x1'))(_0xadb3('0x2'));var moment=require(_0xadb3('0x3'));var BPromise=require(_0xadb3('0x4'));var rp=require(_0xadb3('0x5'));var fs=require('fs');var path=require(_0xadb3('0x6'));var rimraf=require(_0xadb3('0x7'));var config=require('../../config/environment');var attributes=require(_0xadb3('0x8'));module[_0xadb3('0x9')]=function(_0x591f3e,_0x49cef0){return _0x591f3e[_0xadb3('0xa')](_0xadb3('0xb'),attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xadb3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x61c2=['api','request-promise','path','rimraf','exports','report_fax_transfer','uniqueid','lodash','util','../../config/logger'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x61c2,0x11f));var _0x261c=function(_0x453cab,_0x101992){_0x453cab=_0x453cab-0x0;var _0x5dba36=_0x61c2[_0x453cab];return _0x5dba36;};'use strict';var _=require(_0x261c('0x0'));var util=require(_0x261c('0x1'));var logger=require(_0x261c('0x2'))(_0x261c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x261c('0x4'));var fs=require('fs');var path=require(_0x261c('0x5'));var rimraf=require(_0x261c('0x6'));var config=require('../../config/environment');var attributes=require('./faxTransferReport.attributes');module[_0x261c('0x7')]=function(_0x5e5c91,_0x2f0551){return _0x5e5c91['define']('FaxTransferReport',attributes,{'tableName':_0x261c('0x8'),'paranoid':![],'indexes':[{'name':_0x261c('0x9'),'fields':[_0x261c('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 773f135..1ed4dcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0763=['request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x1398b2,_0x2e1739){var _0x1a6ea0=function(_0x31160e){while(--_0x31160e){_0x1398b2['push'](_0x1398b2['shift']());}};_0x1a6ea0(++_0x2e1739);}(_0x0763,0xd7));var _0x3076=function(_0x3ce2c4,_0x4544c1){_0x3ce2c4=_0x3ce2c4-0x0;var _0x4047c1=_0x0763[_0x3ce2c4];return _0x4047c1;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3076('0x0'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3076('0x1'))['db'];var utils=require(_0x3076('0x2'));var logger=require(_0x3076('0x3'))('rpc');var config=require(_0x3076('0x4'));var jayson=require(_0x3076('0x5'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5c34e3,_0x37ccd1,_0xc8ff19){return new BPromise(function(_0x48649e,_0x2bd530){return client[_0x3076('0x6')](_0x5c34e3,_0xc8ff19)[_0x3076('0x7')](function(_0x26086a){logger[_0x3076('0x8')](_0x3076('0x9'),_0x37ccd1,_0x3076('0xa'));logger[_0x3076('0xb')](_0x3076('0xc'),_0x37ccd1,_0x3076('0xa'),JSON['stringify'](_0x26086a));if(_0x26086a[_0x3076('0xd')]){if(_0x26086a[_0x3076('0xd')][_0x3076('0xe')]===0x1f4){logger[_0x3076('0xd')](_0x3076('0x9'),_0x37ccd1,_0x26086a[_0x3076('0xd')][_0x3076('0xf')]);return _0x2bd530(_0x26086a[_0x3076('0xd')]['message']);}logger[_0x3076('0xd')](_0x3076('0x9'),_0x37ccd1,_0x26086a[_0x3076('0xd')][_0x3076('0xf')]);return _0x48649e(_0x26086a[_0x3076('0xd')][_0x3076('0xf')]);}else{logger['info'](_0x3076('0x9'),_0x37ccd1,'request\x20sent');_0x48649e(_0x26086a[_0x3076('0x10')][_0x3076('0xf')]);}})['catch'](function(_0x40e247){logger[_0x3076('0xd')](_0x3076('0x9'),_0x37ccd1,_0x40e247);_0x2bd530(_0x40e247);});});}
\ No newline at end of file
+var _0x387a=['bluebird','ioredis','../../config/logger','../../config/environment','jayson/promise','client','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x387a,0x10b));var _0xa387=function(_0x38080d,_0x4c6217){_0x38080d=_0x38080d-0x0;var _0x25af29=_0x387a[_0x38080d];return _0x25af29;};'use strict';var _=require(_0xa387('0x0'));var util=require(_0xa387('0x1'));var moment=require(_0xa387('0x2'));var BPromise=require(_0xa387('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa387('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa387('0x5'))('rpc');var config=require(_0xa387('0x6'));var jayson=require(_0xa387('0x7'));var client=jayson[_0xa387('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52b253,_0x18dfbc,_0x4bc861){return new BPromise(function(_0x1c4a10,_0x17b155){return client['request'](_0x52b253,_0x4bc861)[_0xa387('0x9')](function(_0xe1549f){logger[_0xa387('0xa')](_0xa387('0xb'),_0x18dfbc,_0xa387('0xc'));logger['debug'](_0xa387('0xd'),_0x18dfbc,_0xa387('0xc'),JSON['stringify'](_0xe1549f));if(_0xe1549f[_0xa387('0xe')]){if(_0xe1549f[_0xa387('0xe')]['code']===0x1f4){logger[_0xa387('0xe')](_0xa387('0xb'),_0x18dfbc,_0xe1549f[_0xa387('0xe')]['message']);return _0x17b155(_0xe1549f[_0xa387('0xe')]['message']);}logger[_0xa387('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0x18dfbc,_0xe1549f[_0xa387('0xe')][_0xa387('0xf')]);return _0x1c4a10(_0xe1549f[_0xa387('0xe')][_0xa387('0xf')]);}else{logger[_0xa387('0xa')]('FaxTransferReport,\x20%s,\x20%s',_0x18dfbc,_0xa387('0xc'));_0x1c4a10(_0xe1549f[_0xa387('0x10')]['message']);}})[_0xa387('0x11')](function(_0x43653e){logger[_0xa387('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0x18dfbc,_0x43653e);_0x17b155(_0x43653e);});});}
\ No newline at end of file
index 50f859c..6ad6ba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x434b=['exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','/describe','/:id','show','create','put','update','delete','destroy'];(function(_0xe09bb6,_0x40fbf5){var _0x1eb76a=function(_0x434097){while(--_0x434097){_0xe09bb6['push'](_0xe09bb6['shift']());}};_0x1eb76a(++_0x40fbf5);}(_0x434b,0xe8));var _0xb434=function(_0x395bfe,_0x4db521){_0x395bfe=_0x395bfe-0x0;var _0x35c81c=_0x434b[_0x395bfe];return _0x35c81c;};'use strict';var multer=require(_0xb434('0x0'));var util=require('util');var path=require(_0xb434('0x1'));var timeout=require('connect-timeout');var express=require(_0xb434('0x2'));var router=express[_0xb434('0x3')]();var fs_extra=require(_0xb434('0x4'));var auth=require(_0xb434('0x5'));var interaction=require(_0xb434('0x6'));var config=require(_0xb434('0x7'));var controller=require(_0xb434('0x8'));router[_0xb434('0x9')]('/',auth[_0xb434('0xa')](),controller[_0xb434('0xb')]);router[_0xb434('0x9')](_0xb434('0xc'),auth[_0xb434('0xa')](),controller['describe']);router[_0xb434('0x9')](_0xb434('0xd'),auth[_0xb434('0xa')](),controller[_0xb434('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb434('0xf')]);router[_0xb434('0x10')](_0xb434('0xd'),auth['isAuthenticated'](),controller[_0xb434('0x11')]);router[_0xb434('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xb434('0x13')]);module[_0xb434('0x14')]=router;
\ No newline at end of file
+var _0x2f15=['index','/describe','show','post','create','put','/:id','delete','destroy','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated'];(function(_0x13c70c,_0x546b34){var _0x50f0f2=function(_0x2a2991){while(--_0x2a2991){_0x13c70c['push'](_0x13c70c['shift']());}};_0x50f0f2(++_0x546b34);}(_0x2f15,0x1e4));var _0x52f1=function(_0x1230b9,_0xc27ede){_0x1230b9=_0x1230b9-0x0;var _0x34ebec=_0x2f15[_0x1230b9];return _0x34ebec;};'use strict';var multer=require('multer');var util=require(_0x52f1('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x52f1('0x1'));var router=express[_0x52f1('0x2')]();var fs_extra=require(_0x52f1('0x3'));var auth=require(_0x52f1('0x4'));var interaction=require(_0x52f1('0x5'));var config=require(_0x52f1('0x6'));var controller=require(_0x52f1('0x7'));router[_0x52f1('0x8')]('/',auth[_0x52f1('0x9')](),controller[_0x52f1('0xa')]);router[_0x52f1('0x8')](_0x52f1('0xb'),auth[_0x52f1('0x9')](),controller['describe']);router[_0x52f1('0x8')]('/:id',auth[_0x52f1('0x9')](),controller[_0x52f1('0xc')]);router[_0x52f1('0xd')]('/',auth['isAuthenticated'](),controller[_0x52f1('0xe')]);router[_0x52f1('0xf')](_0x52f1('0x10'),auth[_0x52f1('0x9')](),controller['update']);router[_0x52f1('0x11')](_0x52f1('0x10'),auth[_0x52f1('0x9')](),controller[_0x52f1('0x12')]);module['exports']=router;
\ No newline at end of file
index 363e329..721d688 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f85=['post','addConfiguration','update','delete','destroy','exports','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','/:id/configurations','/:id/fields','getFields'];(function(_0x101e9c,_0xa6b12b){var _0x50e102=function(_0x1b607a){while(--_0x1b607a){_0x101e9c['push'](_0x101e9c['shift']());}};_0x50e102(++_0xa6b12b);}(_0x1f85,0x65));var _0x51f8=function(_0x322582,_0x56fe47){_0x322582=_0x322582-0x0;var _0x39a016=_0x1f85[_0x322582];return _0x39a016;};'use strict';var multer=require('multer');var util=require(_0x51f8('0x0'));var path=require(_0x51f8('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x51f8('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x51f8('0x3'));var interaction=require(_0x51f8('0x4'));var config=require(_0x51f8('0x5'));var controller=require('./intDeskAccount.controller');router[_0x51f8('0x6')]('/',auth['isAuthenticated'](),controller[_0x51f8('0x7')]);router[_0x51f8('0x6')](_0x51f8('0x8'),auth[_0x51f8('0x9')](),controller['show']);router[_0x51f8('0x6')](_0x51f8('0xa'),auth[_0x51f8('0x9')](),controller['getConfigurations']);router[_0x51f8('0x6')](_0x51f8('0xb'),auth['isAuthenticated'](),controller[_0x51f8('0xc')]);router[_0x51f8('0xd')]('/',auth[_0x51f8('0x9')](),controller['create']);router[_0x51f8('0xd')](_0x51f8('0xa'),auth[_0x51f8('0x9')](),controller[_0x51f8('0xe')]);router['put'](_0x51f8('0x8'),auth[_0x51f8('0x9')](),controller[_0x51f8('0xf')]);router[_0x51f8('0x10')]('/:id',auth[_0x51f8('0x9')](),controller[_0x51f8('0x11')]);module[_0x51f8('0x12')]=router;
\ No newline at end of file
+var _0x3cac=['../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','/:id','/:id/configurations','getConfigurations','post','addConfiguration','put','update','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x3f6ae9,_0x250970){var _0x1a3047=function(_0x516ac8){while(--_0x516ac8){_0x3f6ae9['push'](_0x3f6ae9['shift']());}};_0x1a3047(++_0x250970);}(_0x3cac,0x177));var _0xc3ca=function(_0x341fb7,_0x539206){_0x341fb7=_0x341fb7-0x0;var _0x4e1799=_0x3cac[_0x341fb7];return _0x4e1799;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc3ca('0x0'));var timeout=require(_0xc3ca('0x1'));var express=require(_0xc3ca('0x2'));var router=express['Router']();var fs_extra=require(_0xc3ca('0x3'));var auth=require(_0xc3ca('0x4'));var interaction=require(_0xc3ca('0x5'));var config=require(_0xc3ca('0x6'));var controller=require(_0xc3ca('0x7'));router[_0xc3ca('0x8')]('/',auth[_0xc3ca('0x9')](),controller['index']);router[_0xc3ca('0x8')](_0xc3ca('0xa'),auth['isAuthenticated'](),controller['show']);router['get'](_0xc3ca('0xb'),auth[_0xc3ca('0x9')](),controller[_0xc3ca('0xc')]);router[_0xc3ca('0x8')]('/:id/fields',auth[_0xc3ca('0x9')](),controller['getFields']);router[_0xc3ca('0xd')]('/',auth[_0xc3ca('0x9')](),controller['create']);router[_0xc3ca('0xd')](_0xc3ca('0xb'),auth[_0xc3ca('0x9')](),controller[_0xc3ca('0xe')]);router[_0xc3ca('0xf')]('/:id',auth[_0xc3ca('0x9')](),controller[_0xc3ca('0x10')]);router['delete'](_0xc3ca('0xa'),auth[_0xc3ca('0x9')](),controller[_0xc3ca('0x11')]);module[_0xc3ca('0x12')]=router;
\ No newline at end of file
index 7ea2f2a..ea47c48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38a3=['ENUM','basic','newTab','sequelize','exports','STRING'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x38a3,0x1ad));var _0x338a=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x38a3[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require(_0x338a('0x0'));module[_0x338a('0x1')]={'name':{'type':Sequelize[_0x338a('0x2')]},'description':{'type':Sequelize[_0x338a('0x2')]},'username':{'type':Sequelize[_0x338a('0x2')]},'remoteUri':{'type':Sequelize[_0x338a('0x2')]},'authType':{'type':Sequelize[_0x338a('0x3')](_0x338a('0x4')),'defaultValue':_0x338a('0x4')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0x338a('0x2')]},'token':{'type':Sequelize[_0x338a('0x2')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x338a('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x338a('0x3')]('integrationTab',_0x338a('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x7be3=['STRING','basic','ENUM','integrationTab','newTab','sequelize','exports'];(function(_0x5f0a1a,_0x32c021){var _0x1fa80b=function(_0x258136){while(--_0x258136){_0x5f0a1a['push'](_0x5f0a1a['shift']());}};_0x1fa80b(++_0x32c021);}(_0x7be3,0x98));var _0x37be=function(_0x4acf6f,_0x5072e5){_0x4acf6f=_0x4acf6f-0x0;var _0x3c6d3a=_0x7be3[_0x4acf6f];return _0x3c6d3a;};'use strict';var Sequelize=require(_0x37be('0x0'));module[_0x37be('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x37be('0x2')]},'username':{'type':Sequelize[_0x37be('0x2')]},'remoteUri':{'type':Sequelize[_0x37be('0x2')]},'authType':{'type':Sequelize['ENUM'](_0x37be('0x3')),'defaultValue':_0x37be('0x3')},'password':{'type':Sequelize[_0x37be('0x2')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0x37be('0x2')]},'token':{'type':Sequelize[_0x37be('0x2')]},'tokenSecret':{'type':Sequelize[_0x37be('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x37be('0x4')](_0x37be('0x5'),_0x37be('0x6')),'defaultValue':_0x37be('0x5')}};
\ No newline at end of file
index bb11add..2f284a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5fd=['Authorization','%s:%s','toString','concat','_embedded','entries','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','eml-format','zip-dir','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','end','status','undefined','count','offset','Content-Range','json','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','map','DeskAccount','rawAttributes','type','query','keys','filters','intersection','model','fields','attributes','length','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','DeskConfiguration','options','hasOwnProperty','AccountId','Subjects','channel','Descriptions','DeskField','getFields','priority','remoteUri','username','password','consumerKey','tokenSecret','slice','substring','lastIndexOf','format','%s/custom_fields','application/json','authType','basic','headers'];(function(_0x2a9f4,_0x25c14a){var _0x3c39e0=function(_0x3b8deb){while(--_0x3b8deb){_0x2a9f4['push'](_0x2a9f4['shift']());}};_0x3c39e0(++_0x25c14a);}(_0xa5fd,0x1bc));var _0xda5f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa5fd[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xda5f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xda5f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xda5f('0x2'));var util=require(_0xda5f('0x3'));var path=require(_0xda5f('0x4'));var sox=require(_0xda5f('0x5'));var csv=require(_0xda5f('0x6'));var ejs=require(_0xda5f('0x7'));var fs=require('fs');var fs_extra=require(_0xda5f('0x8'));var _=require('lodash');var squel=require(_0xda5f('0x9'));var crypto=require(_0xda5f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xda5f('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xda5f('0xc'));var Redis=require(_0xda5f('0xd'));var authService=require(_0xda5f('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xda5f('0xf'));var hardwareService=require(_0xda5f('0x10'));var logger=require('../../config/logger')(_0xda5f('0x11'));var utils=require(_0xda5f('0x12'));var config=require(_0xda5f('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xda5f('0x14'))['db'];var integrations=require(_0xda5f('0x15'));function respondWithStatusCode(_0x2bbed3,_0x469aaa){_0x469aaa=_0x469aaa||0xcc;return function(_0x22af39){if(_0x22af39){return _0x2bbed3['sendStatus'](_0x469aaa);}return _0x2bbed3['status'](_0x469aaa)[_0xda5f('0x16')]();};}function respondWithResult(_0x571de2,_0x474429){_0x474429=_0x474429||0xc8;return function(_0x492547){if(_0x492547){return _0x571de2[_0xda5f('0x17')](_0x474429)['json'](_0x492547);}};}function respondWithFilteredResult(_0x9e3885,_0x3b44da){return function(_0x1af6c){if(_0x1af6c){var _0x5d528c=typeof _0x3b44da['offset']==='undefined'&&typeof _0x3b44da['limit']===_0xda5f('0x18');var _0x19a1f1=_0x1af6c[_0xda5f('0x19')];var _0x231fce=_0x5d528c?0x0:_0x3b44da[_0xda5f('0x1a')];var _0x365d45=_0x5d528c?_0x1af6c[_0xda5f('0x19')]:_0x3b44da[_0xda5f('0x1a')]+_0x3b44da['limit'];var _0x32f39a;if(_0x365d45>=_0x19a1f1){_0x365d45=_0x19a1f1;_0x32f39a=0xc8;}else{_0x32f39a=0xce;}_0x9e3885[_0xda5f('0x17')](_0x32f39a);return _0x9e3885['set'](_0xda5f('0x1b'),_0x231fce+'-'+_0x365d45+'/'+_0x19a1f1)[_0xda5f('0x1c')](_0x1af6c);}return null;};}function patchUpdates(_0x44ca59){return function(_0x9e40f3){try{jsonpatch[_0xda5f('0x1d')](_0x9e40f3,_0x44ca59,!![]);}catch(_0x5e1adf){return BPromise[_0xda5f('0x1e')](_0x5e1adf);}return _0x9e40f3[_0xda5f('0x1f')]();};}function saveUpdates(_0x5e8e7b,_0x2e0a63){return function(_0x2a0033){if(_0x2a0033){return _0x2a0033[_0xda5f('0x20')](_0x5e8e7b)['then'](function(_0x118527){return _0x118527;});}return null;};}function removeEntity(_0x462f6f,_0x32ffb7){return function(_0x5ba489){if(_0x5ba489){return _0x5ba489[_0xda5f('0x21')]()[_0xda5f('0x22')](function(){_0x462f6f['status'](0xcc)[_0xda5f('0x16')]();});}};}function handleEntityNotFound(_0x5e6ee2,_0x19fe32){return function(_0x455461){if(!_0x455461){_0x5e6ee2[_0xda5f('0x23')](0x194);}return _0x455461;};}function handleError(_0x14a1d2,_0x2029d4){_0x2029d4=_0x2029d4||0x1f4;return function(_0x40620){logger[_0xda5f('0x24')](_0x40620[_0xda5f('0x25')]);if(_0x40620['name']){delete _0x40620[_0xda5f('0x26')];}_0x14a1d2[_0xda5f('0x17')](_0x2029d4)['send'](_0x40620);};}exports['index']=function(_0xb77d16,_0x1a307e){var _0x221e71={},_0x2f6ade={},_0x478834={'count':0x0,'rows':[]};var _0xaf5fd1=_[_0xda5f('0x27')](db[_0xda5f('0x28')][_0xda5f('0x29')],function(_0x3ffd34){return{'name':_0x3ffd34['fieldName'],'type':_0x3ffd34[_0xda5f('0x2a')]['key']};});_0x2f6ade['model']=_[_0xda5f('0x27')](_0xaf5fd1,_0xda5f('0x26'));_0x2f6ade[_0xda5f('0x2b')]=_[_0xda5f('0x2c')](_0xb77d16['query']);_0x2f6ade[_0xda5f('0x2d')]=_[_0xda5f('0x2e')](_0x2f6ade[_0xda5f('0x2f')],_0x2f6ade[_0xda5f('0x2b')]);_0x221e71['attributes']=_[_0xda5f('0x2e')](_0x2f6ade['model'],qs[_0xda5f('0x30')](_0xb77d16[_0xda5f('0x2b')][_0xda5f('0x30')]));_0x221e71[_0xda5f('0x31')]=_0x221e71[_0xda5f('0x31')][_0xda5f('0x32')]?_0x221e71[_0xda5f('0x31')]:_0x2f6ade['model'];if(!_0xb77d16[_0xda5f('0x2b')]['hasOwnProperty'](_0xda5f('0x33'))){_0x221e71[_0xda5f('0x34')]=qs[_0xda5f('0x34')](_0xb77d16[_0xda5f('0x2b')][_0xda5f('0x34')]);_0x221e71[_0xda5f('0x1a')]=qs['offset'](_0xb77d16[_0xda5f('0x2b')][_0xda5f('0x1a')]);}_0x221e71[_0xda5f('0x35')]=qs[_0xda5f('0x36')](_0xb77d16[_0xda5f('0x2b')][_0xda5f('0x36')]);_0x221e71[_0xda5f('0x37')]=qs[_0xda5f('0x2d')](_[_0xda5f('0x38')](_0xb77d16[_0xda5f('0x2b')],_0x2f6ade['filters']),_0xaf5fd1);if(_0xb77d16['query']['filter']){_0x221e71[_0xda5f('0x37')]=_[_0xda5f('0x39')](_0x221e71[_0xda5f('0x37')],{'$or':_[_0xda5f('0x27')](_0xaf5fd1,function(_0x2e9289){if(_0x2e9289['type']!==_0xda5f('0x3a')){var _0x3a5dcc={};_0x3a5dcc[_0x2e9289[_0xda5f('0x26')]]={'$like':'%'+_0xb77d16[_0xda5f('0x2b')][_0xda5f('0x3b')]+'%'};return _0x3a5dcc;}})});}_0x221e71=_[_0xda5f('0x39')]({},_0x221e71,_0xb77d16['options']);var _0x198c89={'where':_0x221e71[_0xda5f('0x37')]};return db[_0xda5f('0x28')][_0xda5f('0x19')](_0x198c89)['then'](function(_0x5edcd7){_0x478834[_0xda5f('0x19')]=_0x5edcd7;if(_0xb77d16[_0xda5f('0x2b')][_0xda5f('0x3c')]){_0x221e71[_0xda5f('0x3d')]=[{'all':!![]}];}return db[_0xda5f('0x28')][_0xda5f('0x3e')](_0x221e71);})[_0xda5f('0x22')](function(_0x38fa91){_0x478834[_0xda5f('0x3f')]=_0x38fa91;return _0x478834;})[_0xda5f('0x22')](respondWithFilteredResult(_0x1a307e,_0x221e71))[_0xda5f('0x40')](handleError(_0x1a307e,null));};exports[_0xda5f('0x41')]=function(_0x5ce472,_0x339050){var _0x1baaa8={'raw':![],'where':{'id':_0x5ce472[_0xda5f('0x42')]['id']}},_0x14be1f={};_0x14be1f['model']=_[_0xda5f('0x2c')](db[_0xda5f('0x28')][_0xda5f('0x29')]);_0x14be1f[_0xda5f('0x2b')]=_[_0xda5f('0x2c')](_0x5ce472['query']);_0x14be1f[_0xda5f('0x2d')]=_[_0xda5f('0x2e')](_0x14be1f[_0xda5f('0x2f')],_0x14be1f[_0xda5f('0x2b')]);_0x1baaa8[_0xda5f('0x31')]=_['intersection'](_0x14be1f[_0xda5f('0x2f')],qs[_0xda5f('0x30')](_0x5ce472[_0xda5f('0x2b')][_0xda5f('0x30')]));_0x1baaa8[_0xda5f('0x31')]=_0x1baaa8[_0xda5f('0x31')][_0xda5f('0x32')]?_0x1baaa8[_0xda5f('0x31')]:_0x14be1f[_0xda5f('0x2f')];if(_0x5ce472[_0xda5f('0x2b')]['includeAll']){_0x1baaa8[_0xda5f('0x3d')]=[{'all':!![]}];}_0x1baaa8=_[_0xda5f('0x39')]({},_0x1baaa8,_0x5ce472['options']);return db[_0xda5f('0x28')][_0xda5f('0x43')](_0x1baaa8)[_0xda5f('0x22')](handleEntityNotFound(_0x339050,null))['then'](respondWithResult(_0x339050,null))['catch'](handleError(_0x339050,null));};exports[_0xda5f('0x44')]=function(_0x2ae181,_0x28d70f){return db[_0xda5f('0x28')][_0xda5f('0x44')](_0x2ae181[_0xda5f('0x45')],{})[_0xda5f('0x22')](respondWithResult(_0x28d70f,0xc9))[_0xda5f('0x40')](handleError(_0x28d70f,null));};exports['update']=function(_0x4e9ce3,_0x468135){if(_0x4e9ce3['body']['id']){delete _0x4e9ce3[_0xda5f('0x45')]['id'];}return db[_0xda5f('0x28')][_0xda5f('0x43')]({'where':{'id':_0x4e9ce3['params']['id']}})[_0xda5f('0x22')](handleEntityNotFound(_0x468135,null))[_0xda5f('0x22')](saveUpdates(_0x4e9ce3[_0xda5f('0x45')],null))[_0xda5f('0x22')](respondWithResult(_0x468135,null))[_0xda5f('0x40')](handleError(_0x468135,null));};exports[_0xda5f('0x21')]=function(_0x36aacd,_0x5ab613){return db[_0xda5f('0x28')]['find']({'where':{'id':_0x36aacd['params']['id']}})[_0xda5f('0x22')](handleEntityNotFound(_0x5ab613,null))[_0xda5f('0x22')](removeEntity(_0x5ab613,null))[_0xda5f('0x40')](handleError(_0x5ab613,null));};exports[_0xda5f('0x46')]=function(_0x329fb0,_0x975ccc,_0x3c3ad0){var _0x110717={};var _0x5d2772={};var _0x508893;var _0x4ee02e;return db[_0xda5f('0x28')][_0xda5f('0x47')]({'where':{'id':_0x329fb0[_0xda5f('0x42')]['id']}})[_0xda5f('0x22')](handleEntityNotFound(_0x975ccc,null))[_0xda5f('0x22')](function(_0x16d065){if(_0x16d065){_0x508893=_0x16d065;_0x5d2772[_0xda5f('0x2f')]=_[_0xda5f('0x2c')](db[_0xda5f('0x48')][_0xda5f('0x29')]);_0x5d2772[_0xda5f('0x2b')]=_[_0xda5f('0x2c')](_0x329fb0['query']);_0x5d2772[_0xda5f('0x2d')]=_['intersection'](_0x5d2772[_0xda5f('0x2f')],_0x5d2772[_0xda5f('0x2b')]);_0x110717[_0xda5f('0x31')]=_[_0xda5f('0x2e')](_0x5d2772['model'],qs['fields'](_0x329fb0[_0xda5f('0x2b')][_0xda5f('0x30')]));_0x110717[_0xda5f('0x31')]=_0x110717['attributes'][_0xda5f('0x32')]?_0x110717[_0xda5f('0x31')]:_0x5d2772[_0xda5f('0x2f')];_0x110717[_0xda5f('0x35')]=qs[_0xda5f('0x36')](_0x329fb0['query']['sort']);_0x110717['where']=qs['filters'](_[_0xda5f('0x38')](_0x329fb0['query'],_0x5d2772[_0xda5f('0x2d')]));if(_0x329fb0['query'][_0xda5f('0x3b')]){_0x110717[_0xda5f('0x37')]=_[_0xda5f('0x39')](_0x110717[_0xda5f('0x37')],{'$or':_[_0xda5f('0x27')](_0x110717['attributes'],function(_0x2b3b48){var _0x1430f6={};_0x1430f6[_0x2b3b48]={'$like':'%'+_0x329fb0['query'][_0xda5f('0x3b')]+'%'};return _0x1430f6;})});}_0x110717=_[_0xda5f('0x39')]({},_0x110717,_0x329fb0[_0xda5f('0x49')]);return _0x508893[_0xda5f('0x46')](_0x110717);}})[_0xda5f('0x22')](function(_0x1feb26){if(_0x1feb26){_0x4ee02e=_0x1feb26[_0xda5f('0x32')];if(!_0x329fb0[_0xda5f('0x2b')][_0xda5f('0x4a')](_0xda5f('0x33'))){_0x110717['limit']=qs[_0xda5f('0x34')](_0x329fb0['query'][_0xda5f('0x34')]);_0x110717[_0xda5f('0x1a')]=qs[_0xda5f('0x1a')](_0x329fb0[_0xda5f('0x2b')]['offset']);}return _0x508893[_0xda5f('0x46')](_0x110717);}})[_0xda5f('0x22')](function(_0x652124){if(_0x652124){return _0x652124?{'count':_0x4ee02e,'rows':_0x652124}:null;}})[_0xda5f('0x22')](respondWithResult(_0x975ccc,null))[_0xda5f('0x40')](handleError(_0x975ccc,null));};exports['addConfiguration']=function(_0x11be0f,_0x54ab03,_0x3c16da){if(_0x11be0f[_0xda5f('0x45')]['id']){delete _0x11be0f[_0xda5f('0x45')]['id'];}return db[_0xda5f('0x28')]['findOne']({'where':{'id':_0x11be0f['params']['id']}})[_0xda5f('0x22')](handleEntityNotFound(_0x54ab03,null))[_0xda5f('0x22')](function(_0x539121){if(_0x539121){_0x11be0f['body'][_0xda5f('0x4b')]=_0x539121['id'];_0x11be0f[_0xda5f('0x45')][_0xda5f('0x4c')]=integrations['getSubjects'](_0x11be0f[_0xda5f('0x45')][_0xda5f('0x4d')],_0x11be0f[_0xda5f('0x45')][_0xda5f('0x2a')]);_0x11be0f[_0xda5f('0x45')][_0xda5f('0x4e')]=integrations['getDescriptions'](_0x11be0f[_0xda5f('0x45')][_0xda5f('0x4d')],_0x11be0f[_0xda5f('0x45')][_0xda5f('0x2a')]);return db[_0xda5f('0x48')][_0xda5f('0x44')](_0x11be0f['body'],{'include':[{'model':db[_0xda5f('0x4f')],'as':'Subjects'},{'model':db[_0xda5f('0x4f')],'as':_0xda5f('0x4e')}]});}return null;})[_0xda5f('0x22')](respondWithResult(_0x54ab03,null))['catch'](handleError(_0x54ab03,null));};exports[_0xda5f('0x50')]=function(_0x29bc66,_0x5b6436,_0x848d46){var _0x1641cb=[{'name':'priority','label':_0xda5f('0x51'),'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 _0x2defc2='';return db[_0xda5f('0x28')][_0xda5f('0x47')]({'where':{'id':_0x29bc66[_0xda5f('0x42')]['id']},'attributes':['id',_0xda5f('0x52'),'authType',_0xda5f('0x53'),_0xda5f('0x54'),_0xda5f('0x55'),'consumerSecret','token',_0xda5f('0x56')]})[_0xda5f('0x22')](handleEntityNotFound(_0x5b6436,null))['then'](function(_0x4b5dcb){if(_0x4b5dcb){_0x2defc2=_0x4b5dcb[_0xda5f('0x52')];var _0x117e7c=_0x2defc2[_0xda5f('0x57')](-0x1);if(_0x117e7c==='/'){_0x2defc2=_0x2defc2[_0xda5f('0x58')](0x0,_0x2defc2[_0xda5f('0x59')](_0x117e7c));}var _0x5d62dc={'method':'GET','uri':util[_0xda5f('0x5a')](_0xda5f('0x5b'),_0x2defc2),'headers':{'Content-Type':_0xda5f('0x5c'),'Accept':_0xda5f('0x5c')},'json':!![]};if(_0x4b5dcb[_0xda5f('0x5d')]===_0xda5f('0x5e')){_0x5d62dc[_0xda5f('0x5f')][_0xda5f('0x60')]=util['format']('Basic\x20%s',new Buffer(util['format'](_0xda5f('0x61'),_0x4b5dcb['username'],_0x4b5dcb[_0xda5f('0x54')]))[_0xda5f('0x62')]('base64'));}return rp(_0x5d62dc)[_0xda5f('0x22')](function(_0x3008a2){return _0x1641cb[_0xda5f('0x63')](_[_0xda5f('0x27')](_0x3008a2[_0xda5f('0x64')][_0xda5f('0x65')],function(_0x7740b7){return{'id':_0x7740b7[_0xda5f('0x26')],'name':_0x7740b7[_0xda5f('0x26')],'type':_0x7740b7[_0xda5f('0x2a')],'active':_0x7740b7['active'],'label':_0x7740b7[_0xda5f('0x66')],'custom':!![]};}));});}})[_0xda5f('0x22')](function(_0xe2dda){return{'count':_0xe2dda[_0xda5f('0x32')],'rows':_0xe2dda};})['then'](respondWithResult(_0x5b6436,null))[_0xda5f('0x40')](function(_0x20a015){var _0x252a47=_0x29bc66[_0xda5f('0x2b')][_0xda5f('0x67')]?0x1f4:_0x20a015[_0xda5f('0x68')]||0x1f4;logger['error'](_0xda5f('0x69'),_0xda5f('0x50'),_0x252a47,JSON[_0xda5f('0x6a')](_0x20a015));delete _0x20a015['name'];if(_0x252a47===0x191){_0x252a47=0x190;}_0x5b6436['status'](_0x252a47)[_0xda5f('0x6b')](_0x29bc66[_0xda5f('0x2b')][_0xda5f('0x67')]?{'message':'Wrong\x20credentials','statusCode':_0x20a015[_0xda5f('0x68')]}:_0x20a015);});};
\ No newline at end of file
+var _0x8d6a=['include','rows','show','length','find','catch','create','body','params','getConfigurations','findOne','addConfiguration','Subjects','type','Descriptions','channel','DeskConfiguration','DeskField','getFields','priority','username','consumerKey','consumerSecret','token','tokenSecret','remoteUri','lastIndexOf','GET','format','%s/custom_fields','application/json','authType','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','base64','concat','_embedded','active','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../components/integrations/configuration','status','end','json','offset','undefined','count','limit','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','pick','filters','where','merge','VIRTUAL','filter','options','includeAll'];(function(_0x197aee,_0x55f0eb){var _0x453a1b=function(_0x533c39){while(--_0x533c39){_0x197aee['push'](_0x197aee['shift']());}};_0x453a1b(++_0x55f0eb);}(_0x8d6a,0x17c));var _0xa8d6=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x8d6a[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xa8d6('0x0'));var rimraf=require(_0xa8d6('0x1'));var zipdir=require(_0xa8d6('0x2'));var jsonpatch=require(_0xa8d6('0x3'));var rp=require('request-promise');var moment=require(_0xa8d6('0x4'));var BPromise=require(_0xa8d6('0x5'));var Mustache=require(_0xa8d6('0x6'));var util=require(_0xa8d6('0x7'));var path=require(_0xa8d6('0x8'));var sox=require('sox');var csv=require(_0xa8d6('0x9'));var ejs=require(_0xa8d6('0xa'));var fs=require('fs');var fs_extra=require(_0xa8d6('0xb'));var _=require(_0xa8d6('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa8d6('0xd'));var deskjs=require(_0xa8d6('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa8d6('0xf'));var Papa=require(_0xa8d6('0x10'));var Redis=require(_0xa8d6('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa8d6('0x12'));var as=require(_0xa8d6('0x13'));var hardwareService=require(_0xa8d6('0x14'));var logger=require(_0xa8d6('0x15'))('api');var utils=require(_0xa8d6('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xa8d6('0x17'));function respondWithStatusCode(_0x5ae4a9,_0x128154){_0x128154=_0x128154||0xcc;return function(_0x4d4577){if(_0x4d4577){return _0x5ae4a9['sendStatus'](_0x128154);}return _0x5ae4a9[_0xa8d6('0x18')](_0x128154)[_0xa8d6('0x19')]();};}function respondWithResult(_0x1cd317,_0x16aa3b){_0x16aa3b=_0x16aa3b||0xc8;return function(_0x19ff44){if(_0x19ff44){return _0x1cd317[_0xa8d6('0x18')](_0x16aa3b)[_0xa8d6('0x1a')](_0x19ff44);}};}function respondWithFilteredResult(_0x47f462,_0x4ed83d){return function(_0x3efd3f){if(_0x3efd3f){var _0x3af977=typeof _0x4ed83d[_0xa8d6('0x1b')]===_0xa8d6('0x1c')&&typeof _0x4ed83d['limit']===_0xa8d6('0x1c');var _0x3a4e77=_0x3efd3f['count'];var _0x3f74f5=_0x3af977?0x0:_0x4ed83d[_0xa8d6('0x1b')];var _0x1f59d5=_0x3af977?_0x3efd3f[_0xa8d6('0x1d')]:_0x4ed83d[_0xa8d6('0x1b')]+_0x4ed83d[_0xa8d6('0x1e')];var _0x252d65;if(_0x1f59d5>=_0x3a4e77){_0x1f59d5=_0x3a4e77;_0x252d65=0xc8;}else{_0x252d65=0xce;}_0x47f462['status'](_0x252d65);return _0x47f462['set']('Content-Range',_0x3f74f5+'-'+_0x1f59d5+'/'+_0x3a4e77)[_0xa8d6('0x1a')](_0x3efd3f);}return null;};}function patchUpdates(_0x50ce3d){return function(_0x3ced57){try{jsonpatch[_0xa8d6('0x1f')](_0x3ced57,_0x50ce3d,!![]);}catch(_0x14f704){return BPromise['reject'](_0x14f704);}return _0x3ced57[_0xa8d6('0x20')]();};}function saveUpdates(_0x2cab91,_0x8aeaca){return function(_0x336ea9){if(_0x336ea9){return _0x336ea9[_0xa8d6('0x21')](_0x2cab91)[_0xa8d6('0x22')](function(_0x183adf){return _0x183adf;});}return null;};}function removeEntity(_0x567dfe,_0x28a1de){return function(_0x49db27){if(_0x49db27){return _0x49db27[_0xa8d6('0x23')]()['then'](function(){_0x567dfe[_0xa8d6('0x18')](0xcc)[_0xa8d6('0x19')]();});}};}function handleEntityNotFound(_0x45ee54,_0x2ecb17){return function(_0x4c263c){if(!_0x4c263c){_0x45ee54[_0xa8d6('0x24')](0x194);}return _0x4c263c;};}function handleError(_0x5dc02d,_0x9f58d4){_0x9f58d4=_0x9f58d4||0x1f4;return function(_0x5e2294){logger[_0xa8d6('0x25')](_0x5e2294[_0xa8d6('0x26')]);if(_0x5e2294[_0xa8d6('0x27')]){delete _0x5e2294[_0xa8d6('0x27')];}_0x5dc02d[_0xa8d6('0x18')](_0x9f58d4)[_0xa8d6('0x28')](_0x5e2294);};}exports[_0xa8d6('0x29')]=function(_0x5e0517,_0x3d5c0d){var _0x430a39={},_0x52d6e6={},_0x2221a3={'count':0x0,'rows':[]};var _0x181618=_[_0xa8d6('0x2a')](db[_0xa8d6('0x2b')][_0xa8d6('0x2c')],function(_0xf072f0){return{'name':_0xf072f0[_0xa8d6('0x2d')],'type':_0xf072f0['type'][_0xa8d6('0x2e')]};});_0x52d6e6[_0xa8d6('0x2f')]=_['map'](_0x181618,_0xa8d6('0x27'));_0x52d6e6[_0xa8d6('0x30')]=_[_0xa8d6('0x31')](_0x5e0517['query']);_0x52d6e6['filters']=_[_0xa8d6('0x32')](_0x52d6e6[_0xa8d6('0x2f')],_0x52d6e6[_0xa8d6('0x30')]);_0x430a39[_0xa8d6('0x33')]=_[_0xa8d6('0x32')](_0x52d6e6[_0xa8d6('0x2f')],qs[_0xa8d6('0x34')](_0x5e0517[_0xa8d6('0x30')][_0xa8d6('0x34')]));_0x430a39[_0xa8d6('0x33')]=_0x430a39[_0xa8d6('0x33')]['length']?_0x430a39[_0xa8d6('0x33')]:_0x52d6e6['model'];if(!_0x5e0517['query'][_0xa8d6('0x35')]('nolimit')){_0x430a39['limit']=qs[_0xa8d6('0x1e')](_0x5e0517[_0xa8d6('0x30')][_0xa8d6('0x1e')]);_0x430a39[_0xa8d6('0x1b')]=qs['offset'](_0x5e0517[_0xa8d6('0x30')][_0xa8d6('0x1b')]);}_0x430a39[_0xa8d6('0x36')]=qs[_0xa8d6('0x37')](_0x5e0517['query'][_0xa8d6('0x37')]);_0x430a39['where']=qs['filters'](_[_0xa8d6('0x38')](_0x5e0517[_0xa8d6('0x30')],_0x52d6e6[_0xa8d6('0x39')]),_0x181618);if(_0x5e0517[_0xa8d6('0x30')]['filter']){_0x430a39[_0xa8d6('0x3a')]=_[_0xa8d6('0x3b')](_0x430a39[_0xa8d6('0x3a')],{'$or':_['map'](_0x181618,function(_0x285ca9){if(_0x285ca9['type']!==_0xa8d6('0x3c')){var _0x29fc22={};_0x29fc22[_0x285ca9[_0xa8d6('0x27')]]={'$like':'%'+_0x5e0517[_0xa8d6('0x30')][_0xa8d6('0x3d')]+'%'};return _0x29fc22;}})});}_0x430a39=_[_0xa8d6('0x3b')]({},_0x430a39,_0x5e0517[_0xa8d6('0x3e')]);var _0xcd2f13={'where':_0x430a39[_0xa8d6('0x3a')]};return db['DeskAccount']['count'](_0xcd2f13)[_0xa8d6('0x22')](function(_0x426d22){_0x2221a3[_0xa8d6('0x1d')]=_0x426d22;if(_0x5e0517[_0xa8d6('0x30')][_0xa8d6('0x3f')]){_0x430a39[_0xa8d6('0x40')]=[{'all':!![]}];}return db[_0xa8d6('0x2b')]['findAll'](_0x430a39);})['then'](function(_0x3ae479){_0x2221a3[_0xa8d6('0x41')]=_0x3ae479;return _0x2221a3;})[_0xa8d6('0x22')](respondWithFilteredResult(_0x3d5c0d,_0x430a39))['catch'](handleError(_0x3d5c0d,null));};exports[_0xa8d6('0x42')]=function(_0x260a8d,_0x2bff05){var _0x5af05e={'raw':![],'where':{'id':_0x260a8d['params']['id']}},_0x458196={};_0x458196[_0xa8d6('0x2f')]=_[_0xa8d6('0x31')](db[_0xa8d6('0x2b')][_0xa8d6('0x2c')]);_0x458196[_0xa8d6('0x30')]=_['keys'](_0x260a8d[_0xa8d6('0x30')]);_0x458196[_0xa8d6('0x39')]=_[_0xa8d6('0x32')](_0x458196[_0xa8d6('0x2f')],_0x458196[_0xa8d6('0x30')]);_0x5af05e[_0xa8d6('0x33')]=_['intersection'](_0x458196[_0xa8d6('0x2f')],qs[_0xa8d6('0x34')](_0x260a8d[_0xa8d6('0x30')][_0xa8d6('0x34')]));_0x5af05e[_0xa8d6('0x33')]=_0x5af05e[_0xa8d6('0x33')][_0xa8d6('0x43')]?_0x5af05e['attributes']:_0x458196['model'];if(_0x260a8d['query'][_0xa8d6('0x3f')]){_0x5af05e[_0xa8d6('0x40')]=[{'all':!![]}];}_0x5af05e=_['merge']({},_0x5af05e,_0x260a8d['options']);return db[_0xa8d6('0x2b')][_0xa8d6('0x44')](_0x5af05e)[_0xa8d6('0x22')](handleEntityNotFound(_0x2bff05,null))[_0xa8d6('0x22')](respondWithResult(_0x2bff05,null))[_0xa8d6('0x45')](handleError(_0x2bff05,null));};exports[_0xa8d6('0x46')]=function(_0x1b1efd,_0x19e57d){return db[_0xa8d6('0x2b')][_0xa8d6('0x46')](_0x1b1efd[_0xa8d6('0x47')],{})[_0xa8d6('0x22')](respondWithResult(_0x19e57d,0xc9))[_0xa8d6('0x45')](handleError(_0x19e57d,null));};exports[_0xa8d6('0x21')]=function(_0x1385fc,_0x566734){if(_0x1385fc[_0xa8d6('0x47')]['id']){delete _0x1385fc[_0xa8d6('0x47')]['id'];}return db[_0xa8d6('0x2b')][_0xa8d6('0x44')]({'where':{'id':_0x1385fc[_0xa8d6('0x48')]['id']}})[_0xa8d6('0x22')](handleEntityNotFound(_0x566734,null))[_0xa8d6('0x22')](saveUpdates(_0x1385fc[_0xa8d6('0x47')],null))[_0xa8d6('0x22')](respondWithResult(_0x566734,null))[_0xa8d6('0x45')](handleError(_0x566734,null));};exports['destroy']=function(_0x588233,_0x3b7706){return db['DeskAccount'][_0xa8d6('0x44')]({'where':{'id':_0x588233[_0xa8d6('0x48')]['id']}})['then'](handleEntityNotFound(_0x3b7706,null))[_0xa8d6('0x22')](removeEntity(_0x3b7706,null))[_0xa8d6('0x45')](handleError(_0x3b7706,null));};exports[_0xa8d6('0x49')]=function(_0x2a40bb,_0x43335e,_0x226c57){var _0x31b88c={};var _0xb23cf9={};var _0x117824;var _0x28b788;return db['DeskAccount'][_0xa8d6('0x4a')]({'where':{'id':_0x2a40bb[_0xa8d6('0x48')]['id']}})['then'](handleEntityNotFound(_0x43335e,null))[_0xa8d6('0x22')](function(_0x2577e8){if(_0x2577e8){_0x117824=_0x2577e8;_0xb23cf9[_0xa8d6('0x2f')]=_['keys'](db['DeskConfiguration'][_0xa8d6('0x2c')]);_0xb23cf9[_0xa8d6('0x30')]=_['keys'](_0x2a40bb[_0xa8d6('0x30')]);_0xb23cf9['filters']=_[_0xa8d6('0x32')](_0xb23cf9[_0xa8d6('0x2f')],_0xb23cf9[_0xa8d6('0x30')]);_0x31b88c[_0xa8d6('0x33')]=_[_0xa8d6('0x32')](_0xb23cf9[_0xa8d6('0x2f')],qs[_0xa8d6('0x34')](_0x2a40bb[_0xa8d6('0x30')]['fields']));_0x31b88c[_0xa8d6('0x33')]=_0x31b88c['attributes'][_0xa8d6('0x43')]?_0x31b88c['attributes']:_0xb23cf9['model'];_0x31b88c[_0xa8d6('0x36')]=qs['sort'](_0x2a40bb[_0xa8d6('0x30')]['sort']);_0x31b88c[_0xa8d6('0x3a')]=qs[_0xa8d6('0x39')](_[_0xa8d6('0x38')](_0x2a40bb[_0xa8d6('0x30')],_0xb23cf9['filters']));if(_0x2a40bb[_0xa8d6('0x30')]['filter']){_0x31b88c[_0xa8d6('0x3a')]=_[_0xa8d6('0x3b')](_0x31b88c[_0xa8d6('0x3a')],{'$or':_[_0xa8d6('0x2a')](_0x31b88c[_0xa8d6('0x33')],function(_0x13555e){var _0x193a2a={};_0x193a2a[_0x13555e]={'$like':'%'+_0x2a40bb[_0xa8d6('0x30')][_0xa8d6('0x3d')]+'%'};return _0x193a2a;})});}_0x31b88c=_[_0xa8d6('0x3b')]({},_0x31b88c,_0x2a40bb[_0xa8d6('0x3e')]);return _0x117824[_0xa8d6('0x49')](_0x31b88c);}})['then'](function(_0x54cac2){if(_0x54cac2){_0x28b788=_0x54cac2[_0xa8d6('0x43')];if(!_0x2a40bb[_0xa8d6('0x30')][_0xa8d6('0x35')]('nolimit')){_0x31b88c[_0xa8d6('0x1e')]=qs[_0xa8d6('0x1e')](_0x2a40bb['query'][_0xa8d6('0x1e')]);_0x31b88c[_0xa8d6('0x1b')]=qs[_0xa8d6('0x1b')](_0x2a40bb[_0xa8d6('0x30')]['offset']);}return _0x117824[_0xa8d6('0x49')](_0x31b88c);}})[_0xa8d6('0x22')](function(_0x3c3deb){if(_0x3c3deb){return _0x3c3deb?{'count':_0x28b788,'rows':_0x3c3deb}:null;}})[_0xa8d6('0x22')](respondWithResult(_0x43335e,null))[_0xa8d6('0x45')](handleError(_0x43335e,null));};exports[_0xa8d6('0x4b')]=function(_0x276247,_0x6c10c,_0x40a55f){if(_0x276247['body']['id']){delete _0x276247[_0xa8d6('0x47')]['id'];}return db[_0xa8d6('0x2b')]['findOne']({'where':{'id':_0x276247[_0xa8d6('0x48')]['id']}})['then'](handleEntityNotFound(_0x6c10c,null))[_0xa8d6('0x22')](function(_0x4e55fb){if(_0x4e55fb){_0x276247[_0xa8d6('0x47')]['AccountId']=_0x4e55fb['id'];_0x276247[_0xa8d6('0x47')][_0xa8d6('0x4c')]=integrations['getSubjects'](_0x276247['body']['channel'],_0x276247[_0xa8d6('0x47')][_0xa8d6('0x4d')]);_0x276247[_0xa8d6('0x47')][_0xa8d6('0x4e')]=integrations['getDescriptions'](_0x276247['body'][_0xa8d6('0x4f')],_0x276247[_0xa8d6('0x47')][_0xa8d6('0x4d')]);return db[_0xa8d6('0x50')][_0xa8d6('0x46')](_0x276247[_0xa8d6('0x47')],{'include':[{'model':db[_0xa8d6('0x51')],'as':_0xa8d6('0x4c')},{'model':db[_0xa8d6('0x51')],'as':_0xa8d6('0x4e')}]});}return null;})[_0xa8d6('0x22')](respondWithResult(_0x6c10c,null))['catch'](handleError(_0x6c10c,null));};exports[_0xa8d6('0x52')]=function(_0x1b0521,_0x2321ba,_0x3b57ea){var _0x142dc0=[{'name':'priority','label':_0xa8d6('0x53'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x5f20f1='';return db[_0xa8d6('0x2b')][_0xa8d6('0x4a')]({'where':{'id':_0x1b0521['params']['id']},'attributes':['id','remoteUri','authType',_0xa8d6('0x54'),'password',_0xa8d6('0x55'),_0xa8d6('0x56'),_0xa8d6('0x57'),_0xa8d6('0x58')]})[_0xa8d6('0x22')](handleEntityNotFound(_0x2321ba,null))[_0xa8d6('0x22')](function(_0x116f62){if(_0x116f62){_0x5f20f1=_0x116f62[_0xa8d6('0x59')];var _0x3e807e=_0x5f20f1['slice'](-0x1);if(_0x3e807e==='/'){_0x5f20f1=_0x5f20f1['substring'](0x0,_0x5f20f1[_0xa8d6('0x5a')](_0x3e807e));}var _0x22bc5f={'method':_0xa8d6('0x5b'),'uri':util[_0xa8d6('0x5c')](_0xa8d6('0x5d'),_0x5f20f1),'headers':{'Content-Type':_0xa8d6('0x5e'),'Accept':_0xa8d6('0x5e')},'json':!![]};if(_0x116f62[_0xa8d6('0x5f')]===_0xa8d6('0x60')){_0x22bc5f[_0xa8d6('0x61')][_0xa8d6('0x62')]=util[_0xa8d6('0x5c')](_0xa8d6('0x63'),new Buffer(util[_0xa8d6('0x5c')](_0xa8d6('0x64'),_0x116f62['username'],_0x116f62['password']))[_0xa8d6('0x65')](_0xa8d6('0x66')));}return rp(_0x22bc5f)[_0xa8d6('0x22')](function(_0xbf3b34){return _0x142dc0[_0xa8d6('0x67')](_[_0xa8d6('0x2a')](_0xbf3b34[_0xa8d6('0x68')]['entries'],function(_0xf9160c){return{'id':_0xf9160c[_0xa8d6('0x27')],'name':_0xf9160c[_0xa8d6('0x27')],'type':_0xf9160c[_0xa8d6('0x4d')],'active':_0xf9160c[_0xa8d6('0x69')],'label':_0xf9160c['label'],'custom':!![]};}));});}})[_0xa8d6('0x22')](function(_0x19c8f8){return{'count':_0x19c8f8['length'],'rows':_0x19c8f8};})[_0xa8d6('0x22')](respondWithResult(_0x2321ba,null))['catch'](function(_0x1954b3){var _0x30f6cd=_0x1b0521[_0xa8d6('0x30')][_0xa8d6('0x6a')]?0x1f4:_0x1954b3[_0xa8d6('0x6b')]||0x1f4;logger[_0xa8d6('0x25')](_0xa8d6('0x6c'),_0xa8d6('0x52'),_0x30f6cd,JSON[_0xa8d6('0x6d')](_0x1954b3));delete _0x1954b3[_0xa8d6('0x27')];if(_0x30f6cd===0x191){_0x30f6cd=0x190;}_0x2321ba[_0xa8d6('0x18')](_0x30f6cd)[_0xa8d6('0x28')](_0x1b0521[_0xa8d6('0x30')][_0xa8d6('0x6a')]?{'message':_0xa8d6('0x6e'),'statusCode':_0x1954b3[_0xa8d6('0x6b')]}:_0x1954b3);});};
\ No newline at end of file
index 2564750..95e05df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f80=['int_desk_accounts','lodash','util','../../config/logger','api','bluebird','rimraf','../../config/environment','./intDeskAccount.attributes','define','DeskAccount'];(function(_0x166f27,_0x4d36d0){var _0xefb1a8=function(_0x4ea3a8){while(--_0x4ea3a8){_0x166f27['push'](_0x166f27['shift']());}};_0xefb1a8(++_0x4d36d0);}(_0x8f80,0x1f0));var _0x08f8=function(_0x2fcf38,_0x1bea4e){_0x2fcf38=_0x2fcf38-0x0;var _0x170e08=_0x8f80[_0x2fcf38];return _0x170e08;};'use strict';var _=require(_0x08f8('0x0'));var util=require(_0x08f8('0x1'));var logger=require(_0x08f8('0x2'))(_0x08f8('0x3'));var moment=require('moment');var BPromise=require(_0x08f8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x08f8('0x5'));var config=require(_0x08f8('0x6'));var attributes=require(_0x08f8('0x7'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x46238c,_0x2eb5c4){return _0x46238c[_0x08f8('0x8')](_0x08f8('0x9'),attributes,{'tableName':_0x08f8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x45cc=['../../config/environment','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x457b70,_0x4ad72e){var _0x478e0b=function(_0x7c807d){while(--_0x7c807d){_0x457b70['push'](_0x457b70['shift']());}};_0x478e0b(++_0x4ad72e);}(_0x45cc,0xbc));var _0xc45c=function(_0x33f54b,_0x41df7d){_0x33f54b=_0x33f54b-0x0;var _0x191255=_0x45cc[_0x33f54b];return _0x191255;};'use strict';var _=require(_0xc45c('0x0'));var util=require(_0xc45c('0x1'));var logger=require(_0xc45c('0x2'))(_0xc45c('0x3'));var moment=require(_0xc45c('0x4'));var BPromise=require('bluebird');var rp=require(_0xc45c('0x5'));var fs=require('fs');var path=require(_0xc45c('0x6'));var rimraf=require(_0xc45c('0x7'));var config=require(_0xc45c('0x8'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0xc45c('0x9'));module[_0xc45c('0xa')]=function(_0x153d71,_0x13950d){return _0x153d71[_0xc45c('0xb')](_0xc45c('0xc'),attributes,{'tableName':_0xc45c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 47d7f61..52071dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03c1=['http','request','info','request\x20sent','debug','stringify','code','error','DeskAccount,\x20%s,\x20%s','message','result','GetDeskAccount','DeskAccount','findAll','options','raw','limit','include','model','attributes','map','catch','ShowDeskAccount','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client'];(function(_0x48c6e9,_0x88320f){var _0x1def8d=function(_0x426aef){while(--_0x426aef){_0x48c6e9['push'](_0x48c6e9['shift']());}};_0x1def8d(++_0x88320f);}(_0x03c1,0xc2));var _0x103c=function(_0x54b0f3,_0x1fe2f7){_0x54b0f3=_0x54b0f3-0x0;var _0x5ae957=_0x03c1[_0x54b0f3];return _0x5ae957;};'use strict';var _=require(_0x103c('0x0'));var util=require(_0x103c('0x1'));var moment=require('moment');var BPromise=require(_0x103c('0x2'));var rs=require(_0x103c('0x3'));var fs=require('fs');var Redis=require(_0x103c('0x4'));var db=require(_0x103c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x103c('0x6'))(_0x103c('0x7'));var config=require('../../config/environment');var jayson=require(_0x103c('0x8'));var client=jayson[_0x103c('0x9')][_0x103c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x143b48,_0x460d11,_0x398da9){return new BPromise(function(_0x3c63a6,_0x3ed100){return client[_0x103c('0xb')](_0x143b48,_0x398da9)['then'](function(_0xc371cd){logger[_0x103c('0xc')]('DeskAccount,\x20%s,\x20%s',_0x460d11,_0x103c('0xd'));logger[_0x103c('0xe')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x460d11,_0x103c('0xd'),JSON[_0x103c('0xf')](_0xc371cd));if(_0xc371cd['error']){if(_0xc371cd['error'][_0x103c('0x10')]===0x1f4){logger[_0x103c('0x11')](_0x103c('0x12'),_0x460d11,_0xc371cd[_0x103c('0x11')][_0x103c('0x13')]);return _0x3ed100(_0xc371cd[_0x103c('0x11')][_0x103c('0x13')]);}logger['error'](_0x103c('0x12'),_0x460d11,_0xc371cd[_0x103c('0x11')][_0x103c('0x13')]);return _0x3c63a6(_0xc371cd['error'][_0x103c('0x13')]);}else{logger[_0x103c('0xc')](_0x103c('0x12'),_0x460d11,_0x103c('0xd'));_0x3c63a6(_0xc371cd[_0x103c('0x14')][_0x103c('0x13')]);}})['catch'](function(_0x2e49ea){logger['error']('DeskAccount,\x20%s,\x20%s',_0x460d11,_0x2e49ea);_0x3ed100(_0x2e49ea);});});}exports[_0x103c('0x15')]=function(_0x8060ee){var _0x47f79e=this;return new Promise(function(_0x2f5319,_0x16ee41){return db[_0x103c('0x16')][_0x103c('0x17')]({'raw':_0x8060ee[_0x103c('0x18')]?_0x8060ee['options'][_0x103c('0x19')]===undefined?!![]:![]:!![],'where':_0x8060ee[_0x103c('0x18')]?_0x8060ee[_0x103c('0x18')]['where']||null:null,'attributes':_0x8060ee[_0x103c('0x18')]?_0x8060ee[_0x103c('0x18')]['attributes']||null:null,'limit':_0x8060ee[_0x103c('0x18')]?_0x8060ee[_0x103c('0x18')][_0x103c('0x1a')]||null:null,'include':_0x8060ee['options']?_0x8060ee[_0x103c('0x18')]['include']?_['map'](_0x8060ee[_0x103c('0x18')][_0x103c('0x1b')],function(_0x2a23e7){return{'model':db[_0x2a23e7[_0x103c('0x1c')]],'as':_0x2a23e7['as'],'attributes':_0x2a23e7[_0x103c('0x1d')],'include':_0x2a23e7[_0x103c('0x1b')]?_[_0x103c('0x1e')](_0x2a23e7['include'],function(_0x4ea9b1){return{'model':db[_0x4ea9b1['model']],'as':_0x4ea9b1['as'],'attributes':_0x4ea9b1[_0x103c('0x1d')],'include':_0x4ea9b1['include']?_[_0x103c('0x1e')](_0x4ea9b1[_0x103c('0x1b')],function(_0x147926){return{'model':db[_0x147926[_0x103c('0x1c')]],'as':_0x147926['as'],'attributes':_0x147926[_0x103c('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x464cff){logger[_0x103c('0xc')](_0x103c('0x15'),_0x8060ee);logger['debug'](_0x103c('0x15'),_0x8060ee,JSON[_0x103c('0xf')](_0x464cff));_0x2f5319(_0x464cff);})[_0x103c('0x1f')](function(_0x3768ac){logger[_0x103c('0x11')](_0x103c('0x15'),_0x3768ac[_0x103c('0x13')],_0x8060ee);_0x16ee41(_0x47f79e[_0x103c('0x11')](0x1f4,_0x3768ac[_0x103c('0x13')]));});});};exports[_0x103c('0x20')]=function(_0x5f4844){var _0x37f53a=this;return new Promise(function(_0x106036,_0x74a578){return db[_0x103c('0x16')][_0x103c('0x21')]({'raw':_0x5f4844[_0x103c('0x18')]?_0x5f4844[_0x103c('0x18')][_0x103c('0x19')]===undefined?!![]:![]:!![],'where':_0x5f4844[_0x103c('0x18')]?_0x5f4844[_0x103c('0x18')]['where']||null:null,'attributes':_0x5f4844['options']?_0x5f4844[_0x103c('0x18')][_0x103c('0x1d')]||null:null,'include':_0x5f4844[_0x103c('0x18')]?_0x5f4844[_0x103c('0x18')][_0x103c('0x1b')]?_[_0x103c('0x1e')](_0x5f4844[_0x103c('0x18')][_0x103c('0x1b')],function(_0x143205){return{'model':db[_0x143205['model']],'as':_0x143205['as'],'attributes':_0x143205[_0x103c('0x1d')],'include':_0x143205[_0x103c('0x1b')]?_[_0x103c('0x1e')](_0x143205['include'],function(_0x2f4641){return{'model':db[_0x2f4641[_0x103c('0x1c')]],'as':_0x2f4641['as'],'attributes':_0x2f4641[_0x103c('0x1d')],'include':_0x2f4641[_0x103c('0x1b')]?_['map'](_0x2f4641[_0x103c('0x1b')],function(_0x1670b9){return{'model':db[_0x1670b9['model']],'as':_0x1670b9['as'],'attributes':_0x1670b9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1cde46){logger[_0x103c('0xc')](_0x103c('0x20'),_0x5f4844);logger['debug'](_0x103c('0x20'),_0x5f4844,JSON[_0x103c('0xf')](_0x1cde46));_0x106036(_0x1cde46);})[_0x103c('0x1f')](function(_0x1e8bcc){logger['error']('ShowDeskAccount',_0x1e8bcc[_0x103c('0x13')],_0x5f4844);_0x74a578(_0x37f53a[_0x103c('0x11')](0x1f4,_0x1e8bcc['message']));});});};
\ No newline at end of file
+var _0x2379=['debug','lodash','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskAccount,\x20%s,\x20%s','DeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','DeskAccount','findAll','options','raw','where','attributes','limit','include','model','map','GetDeskAccount','stringify','ShowDeskAccount','find'];(function(_0x5b480b,_0x220ed3){var _0x37cea2=function(_0x5381cf){while(--_0x5381cf){_0x5b480b['push'](_0x5b480b['shift']());}};_0x37cea2(++_0x220ed3);}(_0x2379,0x1a5));var _0x9237=function(_0x39b514,_0xc6897c){_0x39b514=_0x39b514-0x0;var _0x1d8416=_0x2379[_0x39b514];return _0x1d8416;};'use strict';var _=require(_0x9237('0x0'));var util=require('util');var moment=require(_0x9237('0x1'));var BPromise=require('bluebird');var rs=require(_0x9237('0x2'));var fs=require('fs');var Redis=require(_0x9237('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9237('0x4'));var logger=require('../../config/logger')(_0x9237('0x5'));var config=require(_0x9237('0x6'));var jayson=require(_0x9237('0x7'));var client=jayson[_0x9237('0x8')][_0x9237('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3c765f,_0x310e4e,_0x58330b){return new BPromise(function(_0x2c59f0,_0x2235a2){return client[_0x9237('0xa')](_0x3c765f,_0x58330b)[_0x9237('0xb')](function(_0x576a26){logger[_0x9237('0xc')](_0x9237('0xd'),_0x310e4e,'request\x20sent');logger['debug'](_0x9237('0xe'),_0x310e4e,_0x9237('0xf'),JSON['stringify'](_0x576a26));if(_0x576a26['error']){if(_0x576a26[_0x9237('0x10')]['code']===0x1f4){logger[_0x9237('0x10')](_0x9237('0xd'),_0x310e4e,_0x576a26[_0x9237('0x10')][_0x9237('0x11')]);return _0x2235a2(_0x576a26[_0x9237('0x10')]['message']);}logger[_0x9237('0x10')](_0x9237('0xd'),_0x310e4e,_0x576a26[_0x9237('0x10')][_0x9237('0x11')]);return _0x2c59f0(_0x576a26[_0x9237('0x10')][_0x9237('0x11')]);}else{logger[_0x9237('0xc')]('DeskAccount,\x20%s,\x20%s',_0x310e4e,_0x9237('0xf'));_0x2c59f0(_0x576a26[_0x9237('0x12')][_0x9237('0x11')]);}})[_0x9237('0x13')](function(_0x5be431){logger[_0x9237('0x10')](_0x9237('0xd'),_0x310e4e,_0x5be431);_0x2235a2(_0x5be431);});});}exports['GetDeskAccount']=function(_0x2d457f){var _0x3afe19=this;return new Promise(function(_0x59b11d,_0x5855e2){return db[_0x9237('0x14')][_0x9237('0x15')]({'raw':_0x2d457f[_0x9237('0x16')]?_0x2d457f[_0x9237('0x16')][_0x9237('0x17')]===undefined?!![]:![]:!![],'where':_0x2d457f[_0x9237('0x16')]?_0x2d457f['options'][_0x9237('0x18')]||null:null,'attributes':_0x2d457f['options']?_0x2d457f[_0x9237('0x16')][_0x9237('0x19')]||null:null,'limit':_0x2d457f[_0x9237('0x16')]?_0x2d457f[_0x9237('0x16')][_0x9237('0x1a')]||null:null,'include':_0x2d457f[_0x9237('0x16')]?_0x2d457f['options'][_0x9237('0x1b')]?_['map'](_0x2d457f['options']['include'],function(_0x562b7a){return{'model':db[_0x562b7a[_0x9237('0x1c')]],'as':_0x562b7a['as'],'attributes':_0x562b7a[_0x9237('0x19')],'include':_0x562b7a[_0x9237('0x1b')]?_[_0x9237('0x1d')](_0x562b7a[_0x9237('0x1b')],function(_0x36f63c){return{'model':db[_0x36f63c[_0x9237('0x1c')]],'as':_0x36f63c['as'],'attributes':_0x36f63c[_0x9237('0x19')],'include':_0x36f63c['include']?_['map'](_0x36f63c[_0x9237('0x1b')],function(_0xea16aa){return{'model':db[_0xea16aa[_0x9237('0x1c')]],'as':_0xea16aa['as'],'attributes':_0xea16aa[_0x9237('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9237('0xb')](function(_0x58d5fb){logger[_0x9237('0xc')](_0x9237('0x1e'),_0x2d457f);logger['debug'](_0x9237('0x1e'),_0x2d457f,JSON[_0x9237('0x1f')](_0x58d5fb));_0x59b11d(_0x58d5fb);})['catch'](function(_0x5f2d3d){logger[_0x9237('0x10')](_0x9237('0x1e'),_0x5f2d3d['message'],_0x2d457f);_0x5855e2(_0x3afe19[_0x9237('0x10')](0x1f4,_0x5f2d3d[_0x9237('0x11')]));});});};exports[_0x9237('0x20')]=function(_0x16c3c6){var _0x4f5460=this;return new Promise(function(_0x11e9d7,_0x3bee56){return db[_0x9237('0x14')][_0x9237('0x21')]({'raw':_0x16c3c6[_0x9237('0x16')]?_0x16c3c6[_0x9237('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x16c3c6[_0x9237('0x16')]?_0x16c3c6[_0x9237('0x16')]['where']||null:null,'attributes':_0x16c3c6[_0x9237('0x16')]?_0x16c3c6[_0x9237('0x16')][_0x9237('0x19')]||null:null,'include':_0x16c3c6['options']?_0x16c3c6[_0x9237('0x16')][_0x9237('0x1b')]?_[_0x9237('0x1d')](_0x16c3c6['options'][_0x9237('0x1b')],function(_0x8e0774){return{'model':db[_0x8e0774[_0x9237('0x1c')]],'as':_0x8e0774['as'],'attributes':_0x8e0774[_0x9237('0x19')],'include':_0x8e0774[_0x9237('0x1b')]?_['map'](_0x8e0774['include'],function(_0x1ac7cb){return{'model':db[_0x1ac7cb[_0x9237('0x1c')]],'as':_0x1ac7cb['as'],'attributes':_0x1ac7cb['attributes'],'include':_0x1ac7cb[_0x9237('0x1b')]?_[_0x9237('0x1d')](_0x1ac7cb[_0x9237('0x1b')],function(_0x407c5d){return{'model':db[_0x407c5d[_0x9237('0x1c')]],'as':_0x407c5d['as'],'attributes':_0x407c5d[_0x9237('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9237('0xb')](function(_0x308dcf){logger['info'](_0x9237('0x20'),_0x16c3c6);logger[_0x9237('0x22')](_0x9237('0x20'),_0x16c3c6,JSON[_0x9237('0x1f')](_0x308dcf));_0x11e9d7(_0x308dcf);})['catch'](function(_0x49b84c){logger[_0x9237('0x10')]('ShowDeskAccount',_0x49b84c[_0x9237('0x11')],_0x16c3c6);_0x3bee56(_0x4f5460[_0x9237('0x10')](0x1f4,_0x49b84c[_0x9237('0x11')]));});});};
\ No newline at end of file
index 6ae9af5..e8491c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['getTags','post','create','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getSubjects','/:id/descriptions','/:id/tags'];(function(_0x239f00,_0x5cd7b4){var _0x3f2ffe=function(_0x3f1b81){while(--_0x3f1b81){_0x239f00['push'](_0x239f00['shift']());}};_0x3f2ffe(++_0x5cd7b4);}(_0xedd9,0xfc));var _0x9edd=function(_0x2aee9e,_0x3b3652){_0x2aee9e=_0x2aee9e-0x0;var _0xcce03e=_0xedd9[_0x2aee9e];return _0xcce03e;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0x9')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller['getFields']);router[_0x9edd('0x9')]('/:id/subjects',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['get'](_0x9edd('0x10'),auth[_0x9edd('0xa')](),controller['getDescriptions']);router[_0x9edd('0x9')](_0x9edd('0x11'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')]('/:id/tags',auth[_0x9edd('0xa')](),controller[_0x9edd('0x15')]);router[_0x9edd('0x16')](_0x9edd('0xc'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x17')]);router[_0x9edd('0x18')](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x19')]);module[_0x9edd('0x1a')]=router;
\ No newline at end of file
+var _0x3e74=['show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','/:id/tags','setTags','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x1569cf,_0x19aae6){var _0x16faed=function(_0x3a1919){while(--_0x3a1919){_0x1569cf['push'](_0x1569cf['shift']());}};_0x16faed(++_0x19aae6);}(_0x3e74,0x175));var _0x43e7=function(_0x451da3,_0x1eb95c){_0x451da3=_0x451da3-0x0;var _0x10aef0=_0x3e74[_0x451da3];return _0x10aef0;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/subjects',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/tags',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0x13'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router['put']('/:id',auth[_0x43e7('0x8')](),controller[_0x43e7('0x15')]);router[_0x43e7('0x16')](_0x43e7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x43e7('0x17')]=router;
\ No newline at end of file
index d6663c7..9eb127a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b0=['STRING','sequelize'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0x15b0,0x109));var _0x015b=function(_0x29df9a,_0x42aff3){_0x29df9a=_0x29df9a-0x0;var _0x3a8e96=_0x15b0[_0x29df9a];return _0x3a8e96;};'use strict';var Sequelize=require(_0x015b('0x0'));module['exports']={'name':{'type':Sequelize[_0x015b('0x1')]},'description':{'type':Sequelize[_0x015b('0x1')]}};
\ No newline at end of file
+var _0xcbb6=['exports','STRING'];(function(_0x453f54,_0x3f7ff0){var _0x4a1a06=function(_0x5a72d9){while(--_0x5a72d9){_0x453f54['push'](_0x453f54['shift']());}};_0x4a1a06(++_0x3f7ff0);}(_0xcbb6,0x126));var _0x6cbb=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xcbb6[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');module[_0x6cbb('0x0')]={'name':{'type':Sequelize[_0x6cbb('0x1')]},'description':{'type':Sequelize[_0x6cbb('0x1')]}};
\ No newline at end of file
index 1ba4847..f57e343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d68=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','DeskConfiguration','includeAll','catch','show','params','include','create','body','destroy','find','getFields','findOne','DeskField','getSubjects','hasOwnProperty','getDescriptions','getTags','setTags','ids'];(function(_0x4c9af1,_0x60a0dc){var _0x250bd4=function(_0x42d893){while(--_0x42d893){_0x4c9af1['push'](_0x4c9af1['shift']());}};_0x250bd4(++_0x60a0dc);}(_0x2d68,0x150));var _0x82d6=function(_0x5049e1,_0x4ac87a){_0x5049e1=_0x5049e1-0x0;var _0x37f162=_0x2d68[_0x5049e1];return _0x37f162;};'use strict';var emlformat=require(_0x82d6('0x0'));var rimraf=require(_0x82d6('0x1'));var zipdir=require(_0x82d6('0x2'));var jsonpatch=require(_0x82d6('0x3'));var rp=require(_0x82d6('0x4'));var moment=require(_0x82d6('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x82d6('0x6'));var path=require(_0x82d6('0x7'));var sox=require(_0x82d6('0x8'));var csv=require(_0x82d6('0x9'));var ejs=require(_0x82d6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x82d6('0xb'));var squel=require(_0x82d6('0xc'));var crypto=require(_0x82d6('0xd'));var jsforce=require(_0x82d6('0xe'));var deskjs=require(_0x82d6('0xf'));var toCsv=require(_0x82d6('0x9'));var querystring=require('querystring');var Papa=require(_0x82d6('0x10'));var Redis=require(_0x82d6('0x11'));var authService=require(_0x82d6('0x12'));var qs=require(_0x82d6('0x13'));var as=require(_0x82d6('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x82d6('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x82d6('0x16'));var licenseUtil=require(_0x82d6('0x17'));var db=require(_0x82d6('0x18'))['db'];function respondWithStatusCode(_0x1ad473,_0x2e58fc){_0x2e58fc=_0x2e58fc||0xcc;return function(_0x30f920){if(_0x30f920){return _0x1ad473['sendStatus'](_0x2e58fc);}return _0x1ad473['status'](_0x2e58fc)['end']();};}function respondWithResult(_0xf0e4f6,_0x4f0037){_0x4f0037=_0x4f0037||0xc8;return function(_0x250e6a){if(_0x250e6a){return _0xf0e4f6[_0x82d6('0x19')](_0x4f0037)[_0x82d6('0x1a')](_0x250e6a);}};}function respondWithFilteredResult(_0xf5ca18,_0x566a05){return function(_0x2fa093){if(_0x2fa093){var _0x549d2d=typeof _0x566a05[_0x82d6('0x1b')]===_0x82d6('0x1c')&&typeof _0x566a05[_0x82d6('0x1d')]==='undefined';var _0x1fd7da=_0x2fa093[_0x82d6('0x1e')];var _0x9de1b5=_0x549d2d?0x0:_0x566a05[_0x82d6('0x1b')];var _0x17470a=_0x549d2d?_0x2fa093[_0x82d6('0x1e')]:_0x566a05['offset']+_0x566a05[_0x82d6('0x1d')];var _0x2d9560;if(_0x17470a>=_0x1fd7da){_0x17470a=_0x1fd7da;_0x2d9560=0xc8;}else{_0x2d9560=0xce;}_0xf5ca18[_0x82d6('0x19')](_0x2d9560);return _0xf5ca18[_0x82d6('0x1f')](_0x82d6('0x20'),_0x9de1b5+'-'+_0x17470a+'/'+_0x1fd7da)[_0x82d6('0x1a')](_0x2fa093);}return null;};}function patchUpdates(_0x232660){return function(_0x23d470){try{jsonpatch['apply'](_0x23d470,_0x232660,!![]);}catch(_0x324316){return BPromise[_0x82d6('0x21')](_0x324316);}return _0x23d470[_0x82d6('0x22')]();};}function saveUpdates(_0x39ae17,_0x21fbd2){return function(_0x4c40a0){if(_0x4c40a0){return _0x4c40a0[_0x82d6('0x23')](_0x39ae17)[_0x82d6('0x24')](function(_0x5f475e){return _0x5f475e;});}return null;};}function removeEntity(_0x5199a4,_0x1d6d48){return function(_0x1558e8){if(_0x1558e8){return _0x1558e8['destroy']()[_0x82d6('0x24')](function(){_0x5199a4['status'](0xcc)[_0x82d6('0x25')]();});}};}function handleEntityNotFound(_0x20d150,_0x899dce){return function(_0x302cfb){if(!_0x302cfb){_0x20d150[_0x82d6('0x26')](0x194);}return _0x302cfb;};}function handleError(_0x32acce,_0x141247){_0x141247=_0x141247||0x1f4;return function(_0x1da057){logger['error'](_0x1da057[_0x82d6('0x27')]);if(_0x1da057[_0x82d6('0x28')]){delete _0x1da057['name'];}_0x32acce['status'](_0x141247)[_0x82d6('0x29')](_0x1da057);};}exports[_0x82d6('0x2a')]=function(_0x26bb81,_0xdc6eaf){var _0x49d880={},_0x497764={},_0x20ce5b={'count':0x0,'rows':[]};var _0x434314=_[_0x82d6('0x2b')](db['DeskConfiguration'][_0x82d6('0x2c')],function(_0x579f0a){return{'name':_0x579f0a[_0x82d6('0x2d')],'type':_0x579f0a[_0x82d6('0x2e')][_0x82d6('0x2f')]};});_0x497764[_0x82d6('0x30')]=_[_0x82d6('0x2b')](_0x434314,_0x82d6('0x28'));_0x497764[_0x82d6('0x31')]=_[_0x82d6('0x32')](_0x26bb81[_0x82d6('0x31')]);_0x497764[_0x82d6('0x33')]=_[_0x82d6('0x34')](_0x497764['model'],_0x497764[_0x82d6('0x31')]);_0x49d880['attributes']=_['intersection'](_0x497764[_0x82d6('0x30')],qs[_0x82d6('0x35')](_0x26bb81[_0x82d6('0x31')][_0x82d6('0x35')]));_0x49d880[_0x82d6('0x36')]=_0x49d880['attributes'][_0x82d6('0x37')]?_0x49d880[_0x82d6('0x36')]:_0x497764[_0x82d6('0x30')];if(!_0x26bb81['query']['hasOwnProperty'](_0x82d6('0x38'))){_0x49d880[_0x82d6('0x1d')]=qs[_0x82d6('0x1d')](_0x26bb81['query'][_0x82d6('0x1d')]);_0x49d880[_0x82d6('0x1b')]=qs[_0x82d6('0x1b')](_0x26bb81[_0x82d6('0x31')][_0x82d6('0x1b')]);}_0x49d880[_0x82d6('0x39')]=qs[_0x82d6('0x3a')](_0x26bb81['query']['sort']);_0x49d880[_0x82d6('0x3b')]=qs[_0x82d6('0x33')](_[_0x82d6('0x3c')](_0x26bb81['query'],_0x497764[_0x82d6('0x33')]),_0x434314);if(_0x26bb81[_0x82d6('0x31')][_0x82d6('0x3d')]){_0x49d880['where']=_['merge'](_0x49d880[_0x82d6('0x3b')],{'$or':_[_0x82d6('0x2b')](_0x434314,function(_0x2b1aef){if(_0x2b1aef[_0x82d6('0x2e')]!==_0x82d6('0x3e')){var _0x359b0f={};_0x359b0f[_0x2b1aef[_0x82d6('0x28')]]={'$like':'%'+_0x26bb81[_0x82d6('0x31')][_0x82d6('0x3d')]+'%'};return _0x359b0f;}})});}_0x49d880=_[_0x82d6('0x3f')]({},_0x49d880,_0x26bb81[_0x82d6('0x40')]);var _0x295977={'where':_0x49d880[_0x82d6('0x3b')]};return db[_0x82d6('0x41')][_0x82d6('0x1e')](_0x295977)[_0x82d6('0x24')](function(_0x386662){_0x20ce5b[_0x82d6('0x1e')]=_0x386662;if(_0x26bb81['query'][_0x82d6('0x42')]){_0x49d880['include']=[{'all':!![]}];}return db[_0x82d6('0x41')]['findAll'](_0x49d880);})['then'](function(_0x2776ce){_0x20ce5b['rows']=_0x2776ce;return _0x20ce5b;})[_0x82d6('0x24')](respondWithFilteredResult(_0xdc6eaf,_0x49d880))[_0x82d6('0x43')](handleError(_0xdc6eaf,null));};exports[_0x82d6('0x44')]=function(_0x24e72f,_0x3ab07c){var _0x42ffce={'raw':![],'where':{'id':_0x24e72f[_0x82d6('0x45')]['id']}},_0x27c81b={};_0x27c81b[_0x82d6('0x30')]=_[_0x82d6('0x32')](db['DeskConfiguration'][_0x82d6('0x2c')]);_0x27c81b[_0x82d6('0x31')]=_[_0x82d6('0x32')](_0x24e72f['query']);_0x27c81b[_0x82d6('0x33')]=_[_0x82d6('0x34')](_0x27c81b[_0x82d6('0x30')],_0x27c81b[_0x82d6('0x31')]);_0x42ffce['attributes']=_[_0x82d6('0x34')](_0x27c81b[_0x82d6('0x30')],qs[_0x82d6('0x35')](_0x24e72f[_0x82d6('0x31')][_0x82d6('0x35')]));_0x42ffce[_0x82d6('0x36')]=_0x42ffce[_0x82d6('0x36')][_0x82d6('0x37')]?_0x42ffce[_0x82d6('0x36')]:_0x27c81b[_0x82d6('0x30')];if(_0x24e72f['query'][_0x82d6('0x42')]){_0x42ffce[_0x82d6('0x46')]=[{'all':!![]}];}_0x42ffce=_[_0x82d6('0x3f')]({},_0x42ffce,_0x24e72f[_0x82d6('0x40')]);return db[_0x82d6('0x41')]['find'](_0x42ffce)[_0x82d6('0x24')](handleEntityNotFound(_0x3ab07c,null))[_0x82d6('0x24')](respondWithResult(_0x3ab07c,null))[_0x82d6('0x43')](handleError(_0x3ab07c,null));};exports[_0x82d6('0x47')]=function(_0x42ca28,_0x24e9ce){return db[_0x82d6('0x41')][_0x82d6('0x47')](_0x42ca28[_0x82d6('0x48')],{})[_0x82d6('0x24')](respondWithResult(_0x24e9ce,0xc9))['catch'](handleError(_0x24e9ce,null));};exports[_0x82d6('0x23')]=function(_0x5ec0a7,_0x4cb602){if(_0x5ec0a7[_0x82d6('0x48')]['id']){delete _0x5ec0a7[_0x82d6('0x48')]['id'];}return db[_0x82d6('0x41')]['find']({'where':{'id':_0x5ec0a7['params']['id']}})['then'](handleEntityNotFound(_0x4cb602,null))[_0x82d6('0x24')](saveUpdates(_0x5ec0a7[_0x82d6('0x48')],null))[_0x82d6('0x24')](respondWithResult(_0x4cb602,null))[_0x82d6('0x43')](handleError(_0x4cb602,null));};exports[_0x82d6('0x49')]=function(_0x2af737,_0x5b9d87){return db[_0x82d6('0x41')][_0x82d6('0x4a')]({'where':{'id':_0x2af737['params']['id']}})[_0x82d6('0x24')](handleEntityNotFound(_0x5b9d87,null))['then'](removeEntity(_0x5b9d87,null))[_0x82d6('0x43')](handleError(_0x5b9d87,null));};exports[_0x82d6('0x4b')]=function(_0x284fac,_0x12d13c,_0x32d2bc){var _0xee04e0={};var _0x453c56={};var _0x2afce7;var _0xdfb728;return db[_0x82d6('0x41')][_0x82d6('0x4c')]({'where':{'id':_0x284fac['params']['id']}})[_0x82d6('0x24')](handleEntityNotFound(_0x12d13c,null))[_0x82d6('0x24')](function(_0xc7cd5c){if(_0xc7cd5c){_0x2afce7=_0xc7cd5c;_0x453c56[_0x82d6('0x30')]=_['keys'](db[_0x82d6('0x4d')]['rawAttributes']);_0x453c56['query']=_[_0x82d6('0x32')](_0x284fac[_0x82d6('0x31')]);_0x453c56[_0x82d6('0x33')]=_[_0x82d6('0x34')](_0x453c56[_0x82d6('0x30')],_0x453c56[_0x82d6('0x31')]);_0xee04e0[_0x82d6('0x36')]=_['intersection'](_0x453c56[_0x82d6('0x30')],qs[_0x82d6('0x35')](_0x284fac[_0x82d6('0x31')]['fields']));_0xee04e0[_0x82d6('0x36')]=_0xee04e0[_0x82d6('0x36')][_0x82d6('0x37')]?_0xee04e0[_0x82d6('0x36')]:_0x453c56['model'];_0xee04e0[_0x82d6('0x39')]=qs[_0x82d6('0x3a')](_0x284fac[_0x82d6('0x31')][_0x82d6('0x3a')]);_0xee04e0['where']=qs[_0x82d6('0x33')](_['pick'](_0x284fac['query'],_0x453c56[_0x82d6('0x33')]));if(_0x284fac[_0x82d6('0x31')]['filter']){_0xee04e0[_0x82d6('0x3b')]=_[_0x82d6('0x3f')](_0xee04e0[_0x82d6('0x3b')],{'$or':_[_0x82d6('0x2b')](_0xee04e0[_0x82d6('0x36')],function(_0x4b344d){var _0x480dfa={};_0x480dfa[_0x4b344d]={'$like':'%'+_0x284fac[_0x82d6('0x31')][_0x82d6('0x3d')]+'%'};return _0x480dfa;})});}_0xee04e0=_[_0x82d6('0x3f')]({},_0xee04e0,_0x284fac[_0x82d6('0x40')]);return _0x2afce7['getFields'](_0xee04e0);}})[_0x82d6('0x24')](function(_0x37e0d2){if(_0x37e0d2){_0xdfb728=_0x37e0d2[_0x82d6('0x37')];if(!_0x284fac['query']['hasOwnProperty']('nolimit')){_0xee04e0[_0x82d6('0x1d')]=qs['limit'](_0x284fac[_0x82d6('0x31')][_0x82d6('0x1d')]);_0xee04e0[_0x82d6('0x1b')]=qs[_0x82d6('0x1b')](_0x284fac['query'][_0x82d6('0x1b')]);}return _0x2afce7['getFields'](_0xee04e0);}})['then'](function(_0x2db33c){if(_0x2db33c){return _0x2db33c?{'count':_0xdfb728,'rows':_0x2db33c}:null;}})[_0x82d6('0x24')](respondWithResult(_0x12d13c,null))[_0x82d6('0x43')](handleError(_0x12d13c,null));};exports[_0x82d6('0x4e')]=function(_0x42650b,_0x201233,_0x27333d){var _0x3a5df9={};var _0x481e35={};var _0xefe7b5;var _0x433188;return db[_0x82d6('0x41')][_0x82d6('0x4c')]({'where':{'id':_0x42650b['params']['id']}})[_0x82d6('0x24')](handleEntityNotFound(_0x201233,null))[_0x82d6('0x24')](function(_0x441271){if(_0x441271){_0xefe7b5=_0x441271;_0x481e35[_0x82d6('0x30')]=_[_0x82d6('0x32')](db[_0x82d6('0x4d')][_0x82d6('0x2c')]);_0x481e35['query']=_[_0x82d6('0x32')](_0x42650b[_0x82d6('0x31')]);_0x481e35[_0x82d6('0x33')]=_[_0x82d6('0x34')](_0x481e35['model'],_0x481e35['query']);_0x3a5df9['attributes']=_[_0x82d6('0x34')](_0x481e35[_0x82d6('0x30')],qs[_0x82d6('0x35')](_0x42650b['query'][_0x82d6('0x35')]));_0x3a5df9['attributes']=_0x3a5df9[_0x82d6('0x36')][_0x82d6('0x37')]?_0x3a5df9[_0x82d6('0x36')]:_0x481e35[_0x82d6('0x30')];_0x3a5df9['order']=qs[_0x82d6('0x3a')](_0x42650b['query'][_0x82d6('0x3a')]);_0x3a5df9[_0x82d6('0x3b')]=qs[_0x82d6('0x33')](_[_0x82d6('0x3c')](_0x42650b[_0x82d6('0x31')],_0x481e35[_0x82d6('0x33')]));if(_0x42650b[_0x82d6('0x31')][_0x82d6('0x3d')]){_0x3a5df9['where']=_[_0x82d6('0x3f')](_0x3a5df9['where'],{'$or':_[_0x82d6('0x2b')](_0x3a5df9['attributes'],function(_0x43c054){var _0x2cf4fc={};_0x2cf4fc[_0x43c054]={'$like':'%'+_0x42650b['query']['filter']+'%'};return _0x2cf4fc;})});}_0x3a5df9=_[_0x82d6('0x3f')]({},_0x3a5df9,_0x42650b[_0x82d6('0x40')]);return _0xefe7b5[_0x82d6('0x4e')](_0x3a5df9);}})[_0x82d6('0x24')](function(_0xcdba44){if(_0xcdba44){_0x433188=_0xcdba44[_0x82d6('0x37')];if(!_0x42650b[_0x82d6('0x31')][_0x82d6('0x4f')]('nolimit')){_0x3a5df9[_0x82d6('0x1d')]=qs[_0x82d6('0x1d')](_0x42650b[_0x82d6('0x31')][_0x82d6('0x1d')]);_0x3a5df9[_0x82d6('0x1b')]=qs[_0x82d6('0x1b')](_0x42650b[_0x82d6('0x31')][_0x82d6('0x1b')]);}return _0xefe7b5[_0x82d6('0x4e')](_0x3a5df9);}})[_0x82d6('0x24')](function(_0x2203c4){if(_0x2203c4){return _0x2203c4?{'count':_0x433188,'rows':_0x2203c4}:null;}})[_0x82d6('0x24')](respondWithResult(_0x201233,null))['catch'](handleError(_0x201233,null));};exports['getDescriptions']=function(_0x3b1ee1,_0x43c26e,_0x1ad9c8){var _0x4ca5c1={};var _0x181593={};var _0x130443;var _0xe08c2b;return db[_0x82d6('0x41')][_0x82d6('0x4c')]({'where':{'id':_0x3b1ee1[_0x82d6('0x45')]['id']}})['then'](handleEntityNotFound(_0x43c26e,null))[_0x82d6('0x24')](function(_0x68003e){if(_0x68003e){_0x130443=_0x68003e;_0x181593[_0x82d6('0x30')]=_[_0x82d6('0x32')](db['DeskField'][_0x82d6('0x2c')]);_0x181593['query']=_[_0x82d6('0x32')](_0x3b1ee1[_0x82d6('0x31')]);_0x181593[_0x82d6('0x33')]=_[_0x82d6('0x34')](_0x181593[_0x82d6('0x30')],_0x181593[_0x82d6('0x31')]);_0x4ca5c1[_0x82d6('0x36')]=_['intersection'](_0x181593[_0x82d6('0x30')],qs[_0x82d6('0x35')](_0x3b1ee1['query'][_0x82d6('0x35')]));_0x4ca5c1[_0x82d6('0x36')]=_0x4ca5c1[_0x82d6('0x36')][_0x82d6('0x37')]?_0x4ca5c1[_0x82d6('0x36')]:_0x181593['model'];_0x4ca5c1[_0x82d6('0x39')]=qs[_0x82d6('0x3a')](_0x3b1ee1[_0x82d6('0x31')][_0x82d6('0x3a')]);_0x4ca5c1['where']=qs['filters'](_[_0x82d6('0x3c')](_0x3b1ee1[_0x82d6('0x31')],_0x181593[_0x82d6('0x33')]));if(_0x3b1ee1[_0x82d6('0x31')]['filter']){_0x4ca5c1[_0x82d6('0x3b')]=_[_0x82d6('0x3f')](_0x4ca5c1[_0x82d6('0x3b')],{'$or':_[_0x82d6('0x2b')](_0x4ca5c1[_0x82d6('0x36')],function(_0x145524){var _0x1cec35={};_0x1cec35[_0x145524]={'$like':'%'+_0x3b1ee1[_0x82d6('0x31')][_0x82d6('0x3d')]+'%'};return _0x1cec35;})});}_0x4ca5c1=_[_0x82d6('0x3f')]({},_0x4ca5c1,_0x3b1ee1[_0x82d6('0x40')]);return _0x130443[_0x82d6('0x50')](_0x4ca5c1);}})[_0x82d6('0x24')](function(_0x2d5e04){if(_0x2d5e04){_0xe08c2b=_0x2d5e04['length'];if(!_0x3b1ee1[_0x82d6('0x31')][_0x82d6('0x4f')](_0x82d6('0x38'))){_0x4ca5c1[_0x82d6('0x1d')]=qs[_0x82d6('0x1d')](_0x3b1ee1[_0x82d6('0x31')]['limit']);_0x4ca5c1[_0x82d6('0x1b')]=qs[_0x82d6('0x1b')](_0x3b1ee1[_0x82d6('0x31')]['offset']);}return _0x130443[_0x82d6('0x50')](_0x4ca5c1);}})[_0x82d6('0x24')](function(_0x9e098e){if(_0x9e098e){return _0x9e098e?{'count':_0xe08c2b,'rows':_0x9e098e}:null;}})[_0x82d6('0x24')](respondWithResult(_0x43c26e,null))[_0x82d6('0x43')](handleError(_0x43c26e,null));};exports[_0x82d6('0x51')]=function(_0x243f35,_0x46d823,_0x1a1afc){var _0x5c259d={};var _0x5075cf={};var _0x5c9c17;var _0x423d3f;return db[_0x82d6('0x41')][_0x82d6('0x4c')]({'where':{'id':_0x243f35[_0x82d6('0x45')]['id']}})['then'](handleEntityNotFound(_0x46d823,null))[_0x82d6('0x24')](function(_0x5055ef){if(_0x5055ef){_0x5c9c17=_0x5055ef;_0x5075cf[_0x82d6('0x30')]=_['keys'](db['Tag'][_0x82d6('0x2c')]);_0x5075cf[_0x82d6('0x31')]=_['keys'](_0x243f35[_0x82d6('0x31')]);_0x5075cf['filters']=_[_0x82d6('0x34')](_0x5075cf[_0x82d6('0x30')],_0x5075cf['query']);_0x5c259d[_0x82d6('0x36')]=_['intersection'](_0x5075cf['model'],qs[_0x82d6('0x35')](_0x243f35[_0x82d6('0x31')][_0x82d6('0x35')]));_0x5c259d[_0x82d6('0x36')]=_0x5c259d[_0x82d6('0x36')][_0x82d6('0x37')]?_0x5c259d[_0x82d6('0x36')]:_0x5075cf['model'];_0x5c259d['order']=qs[_0x82d6('0x3a')](_0x243f35[_0x82d6('0x31')]['sort']);_0x5c259d[_0x82d6('0x3b')]=qs[_0x82d6('0x33')](_[_0x82d6('0x3c')](_0x243f35['query'],_0x5075cf[_0x82d6('0x33')]));if(_0x243f35[_0x82d6('0x31')][_0x82d6('0x3d')]){_0x5c259d[_0x82d6('0x3b')]=_[_0x82d6('0x3f')](_0x5c259d[_0x82d6('0x3b')],{'$or':_[_0x82d6('0x2b')](_0x5c259d[_0x82d6('0x36')],function(_0x2126d0){var _0x2fd491={};_0x2fd491[_0x2126d0]={'$like':'%'+_0x243f35['query']['filter']+'%'};return _0x2fd491;})});}_0x5c259d=_['merge']({},_0x5c259d,_0x243f35[_0x82d6('0x40')]);return _0x5c9c17[_0x82d6('0x51')](_0x5c259d);}})[_0x82d6('0x24')](function(_0x40f87a){if(_0x40f87a){_0x423d3f=_0x40f87a[_0x82d6('0x37')];if(!_0x243f35[_0x82d6('0x31')]['hasOwnProperty'](_0x82d6('0x38'))){_0x5c259d['limit']=qs[_0x82d6('0x1d')](_0x243f35[_0x82d6('0x31')][_0x82d6('0x1d')]);_0x5c259d[_0x82d6('0x1b')]=qs['offset'](_0x243f35[_0x82d6('0x31')]['offset']);}return _0x5c9c17[_0x82d6('0x51')](_0x5c259d);}})[_0x82d6('0x24')](function(_0xe710fb){if(_0xe710fb){return _0xe710fb?{'count':_0x423d3f,'rows':_0xe710fb}:null;}})[_0x82d6('0x24')](respondWithResult(_0x46d823,null))[_0x82d6('0x43')](handleError(_0x46d823,null));};exports[_0x82d6('0x52')]=function(_0x304cc9,_0x380402,_0x20e724){if(_0x304cc9[_0x82d6('0x48')]['id']){delete _0x304cc9[_0x82d6('0x48')]['id'];}return db[_0x82d6('0x41')][_0x82d6('0x4c')]({'where':{'id':_0x304cc9[_0x82d6('0x45')]['id']}})[_0x82d6('0x24')](handleEntityNotFound(_0x380402,null))[_0x82d6('0x24')](function(_0x22604d){if(_0x22604d){return _0x22604d['setTags'](_0x304cc9[_0x82d6('0x48')][_0x82d6('0x53')]||[]);}return null;})['then'](respondWithResult(_0x380402,null))[_0x82d6('0x43')](handleError(_0x380402,null));};
\ No newline at end of file
+var _0xbf53=['include','find','create','body','catch','findOne','DeskField','filter','getFields','getSubjects','pick','getDescriptions','nolimit','getTags','setTags','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','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','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','DeskConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','model','fields','attributes','length','hasOwnProperty','order','sort','merge','where','map','VIRTUAL','options','includeAll','findAll','show','params','intersection'];(function(_0x4b4277,_0x22676f){var _0x1ff405=function(_0x2fa9e2){while(--_0x2fa9e2){_0x4b4277['push'](_0x4b4277['shift']());}};_0x1ff405(++_0x22676f);}(_0xbf53,0x15f));var _0x3bf5=function(_0x25a66a,_0x5f0501){_0x25a66a=_0x25a66a-0x0;var _0x26d7a9=_0xbf53[_0x25a66a];return _0x26d7a9;};'use strict';var emlformat=require(_0x3bf5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3bf5('0x1'));var jsonpatch=require(_0x3bf5('0x2'));var rp=require(_0x3bf5('0x3'));var moment=require('moment');var BPromise=require(_0x3bf5('0x4'));var Mustache=require('mustache');var util=require(_0x3bf5('0x5'));var path=require(_0x3bf5('0x6'));var sox=require(_0x3bf5('0x7'));var csv=require('to-csv');var ejs=require(_0x3bf5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3bf5('0x9'));var squel=require(_0x3bf5('0xa'));var crypto=require(_0x3bf5('0xb'));var jsforce=require(_0x3bf5('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x3bf5('0xd'));var querystring=require(_0x3bf5('0xe'));var Papa=require(_0x3bf5('0xf'));var Redis=require(_0x3bf5('0x10'));var authService=require(_0x3bf5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x3bf5('0x12'));var hardwareService=require(_0x3bf5('0x13'));var logger=require(_0x3bf5('0x14'))(_0x3bf5('0x15'));var utils=require(_0x3bf5('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x3bf5('0x17'));var db=require(_0x3bf5('0x18'))['db'];function respondWithStatusCode(_0x5ceffb,_0xe784db){_0xe784db=_0xe784db||0xcc;return function(_0x5a1522){if(_0x5a1522){return _0x5ceffb[_0x3bf5('0x19')](_0xe784db);}return _0x5ceffb[_0x3bf5('0x1a')](_0xe784db)[_0x3bf5('0x1b')]();};}function respondWithResult(_0x4f17f6,_0x2feaa7){_0x2feaa7=_0x2feaa7||0xc8;return function(_0x22ea39){if(_0x22ea39){return _0x4f17f6[_0x3bf5('0x1a')](_0x2feaa7)[_0x3bf5('0x1c')](_0x22ea39);}};}function respondWithFilteredResult(_0x42ca06,_0x243d51){return function(_0x3f9bfe){if(_0x3f9bfe){var _0x53693b=typeof _0x243d51[_0x3bf5('0x1d')]==='undefined'&&typeof _0x243d51['limit']==='undefined';var _0x3afef5=_0x3f9bfe[_0x3bf5('0x1e')];var _0xf2e99a=_0x53693b?0x0:_0x243d51[_0x3bf5('0x1d')];var _0x57e0cf=_0x53693b?_0x3f9bfe[_0x3bf5('0x1e')]:_0x243d51[_0x3bf5('0x1d')]+_0x243d51[_0x3bf5('0x1f')];var _0xc9e9ad;if(_0x57e0cf>=_0x3afef5){_0x57e0cf=_0x3afef5;_0xc9e9ad=0xc8;}else{_0xc9e9ad=0xce;}_0x42ca06[_0x3bf5('0x1a')](_0xc9e9ad);return _0x42ca06[_0x3bf5('0x20')](_0x3bf5('0x21'),_0xf2e99a+'-'+_0x57e0cf+'/'+_0x3afef5)[_0x3bf5('0x1c')](_0x3f9bfe);}return null;};}function patchUpdates(_0x11ff3b){return function(_0x268d69){try{jsonpatch[_0x3bf5('0x22')](_0x268d69,_0x11ff3b,!![]);}catch(_0x5ca947){return BPromise[_0x3bf5('0x23')](_0x5ca947);}return _0x268d69[_0x3bf5('0x24')]();};}function saveUpdates(_0x274fa4,_0xd2ce93){return function(_0x111b10){if(_0x111b10){return _0x111b10['update'](_0x274fa4)[_0x3bf5('0x25')](function(_0x19d60f){return _0x19d60f;});}return null;};}function removeEntity(_0x56bf8b,_0x4b4874){return function(_0x1b7686){if(_0x1b7686){return _0x1b7686[_0x3bf5('0x26')]()[_0x3bf5('0x25')](function(){_0x56bf8b['status'](0xcc)[_0x3bf5('0x1b')]();});}};}function handleEntityNotFound(_0x22ec0e,_0x512c18){return function(_0x11f011){if(!_0x11f011){_0x22ec0e[_0x3bf5('0x19')](0x194);}return _0x11f011;};}function handleError(_0x4bf93c,_0x5cb890){_0x5cb890=_0x5cb890||0x1f4;return function(_0x246c7c){logger[_0x3bf5('0x27')](_0x246c7c[_0x3bf5('0x28')]);if(_0x246c7c[_0x3bf5('0x29')]){delete _0x246c7c[_0x3bf5('0x29')];}_0x4bf93c[_0x3bf5('0x1a')](_0x5cb890)[_0x3bf5('0x2a')](_0x246c7c);};}exports[_0x3bf5('0x2b')]=function(_0x1d8832,_0x2df9df){var _0x46526d={},_0x587d00={},_0x32aae0={'count':0x0,'rows':[]};var _0x3801fa=_['map'](db[_0x3bf5('0x2c')][_0x3bf5('0x2d')],function(_0x406926){return{'name':_0x406926[_0x3bf5('0x2e')],'type':_0x406926[_0x3bf5('0x2f')][_0x3bf5('0x30')]};});_0x587d00['model']=_['map'](_0x3801fa,'name');_0x587d00[_0x3bf5('0x31')]=_[_0x3bf5('0x32')](_0x1d8832[_0x3bf5('0x31')]);_0x587d00[_0x3bf5('0x33')]=_['intersection'](_0x587d00[_0x3bf5('0x34')],_0x587d00['query']);_0x46526d['attributes']=_['intersection'](_0x587d00[_0x3bf5('0x34')],qs[_0x3bf5('0x35')](_0x1d8832['query'][_0x3bf5('0x35')]));_0x46526d[_0x3bf5('0x36')]=_0x46526d[_0x3bf5('0x36')][_0x3bf5('0x37')]?_0x46526d[_0x3bf5('0x36')]:_0x587d00[_0x3bf5('0x34')];if(!_0x1d8832[_0x3bf5('0x31')][_0x3bf5('0x38')]('nolimit')){_0x46526d[_0x3bf5('0x1f')]=qs[_0x3bf5('0x1f')](_0x1d8832[_0x3bf5('0x31')]['limit']);_0x46526d[_0x3bf5('0x1d')]=qs['offset'](_0x1d8832['query'][_0x3bf5('0x1d')]);}_0x46526d[_0x3bf5('0x39')]=qs['sort'](_0x1d8832[_0x3bf5('0x31')][_0x3bf5('0x3a')]);_0x46526d['where']=qs[_0x3bf5('0x33')](_['pick'](_0x1d8832[_0x3bf5('0x31')],_0x587d00[_0x3bf5('0x33')]),_0x3801fa);if(_0x1d8832[_0x3bf5('0x31')]['filter']){_0x46526d['where']=_[_0x3bf5('0x3b')](_0x46526d[_0x3bf5('0x3c')],{'$or':_[_0x3bf5('0x3d')](_0x3801fa,function(_0x1b9b4a){if(_0x1b9b4a[_0x3bf5('0x2f')]!==_0x3bf5('0x3e')){var _0x586abd={};_0x586abd[_0x1b9b4a[_0x3bf5('0x29')]]={'$like':'%'+_0x1d8832[_0x3bf5('0x31')]['filter']+'%'};return _0x586abd;}})});}_0x46526d=_[_0x3bf5('0x3b')]({},_0x46526d,_0x1d8832[_0x3bf5('0x3f')]);var _0x429c9d={'where':_0x46526d[_0x3bf5('0x3c')]};return db[_0x3bf5('0x2c')]['count'](_0x429c9d)[_0x3bf5('0x25')](function(_0x1925d0){_0x32aae0['count']=_0x1925d0;if(_0x1d8832[_0x3bf5('0x31')][_0x3bf5('0x40')]){_0x46526d['include']=[{'all':!![]}];}return db['DeskConfiguration'][_0x3bf5('0x41')](_0x46526d);})['then'](function(_0x4695a8){_0x32aae0['rows']=_0x4695a8;return _0x32aae0;})[_0x3bf5('0x25')](respondWithFilteredResult(_0x2df9df,_0x46526d))['catch'](handleError(_0x2df9df,null));};exports[_0x3bf5('0x42')]=function(_0xc7903b,_0xa54e9e){var _0x38dbe1={'raw':![],'where':{'id':_0xc7903b[_0x3bf5('0x43')]['id']}},_0x30a23e={};_0x30a23e['model']=_['keys'](db['DeskConfiguration'][_0x3bf5('0x2d')]);_0x30a23e[_0x3bf5('0x31')]=_[_0x3bf5('0x32')](_0xc7903b[_0x3bf5('0x31')]);_0x30a23e['filters']=_[_0x3bf5('0x44')](_0x30a23e['model'],_0x30a23e[_0x3bf5('0x31')]);_0x38dbe1[_0x3bf5('0x36')]=_[_0x3bf5('0x44')](_0x30a23e[_0x3bf5('0x34')],qs['fields'](_0xc7903b[_0x3bf5('0x31')][_0x3bf5('0x35')]));_0x38dbe1[_0x3bf5('0x36')]=_0x38dbe1[_0x3bf5('0x36')][_0x3bf5('0x37')]?_0x38dbe1[_0x3bf5('0x36')]:_0x30a23e[_0x3bf5('0x34')];if(_0xc7903b[_0x3bf5('0x31')][_0x3bf5('0x40')]){_0x38dbe1[_0x3bf5('0x45')]=[{'all':!![]}];}_0x38dbe1=_[_0x3bf5('0x3b')]({},_0x38dbe1,_0xc7903b[_0x3bf5('0x3f')]);return db[_0x3bf5('0x2c')][_0x3bf5('0x46')](_0x38dbe1)['then'](handleEntityNotFound(_0xa54e9e,null))['then'](respondWithResult(_0xa54e9e,null))['catch'](handleError(_0xa54e9e,null));};exports[_0x3bf5('0x47')]=function(_0x101615,_0x4c5be0){return db[_0x3bf5('0x2c')][_0x3bf5('0x47')](_0x101615[_0x3bf5('0x48')],{})[_0x3bf5('0x25')](respondWithResult(_0x4c5be0,0xc9))[_0x3bf5('0x49')](handleError(_0x4c5be0,null));};exports['update']=function(_0x4ae114,_0x4a7fe3){if(_0x4ae114[_0x3bf5('0x48')]['id']){delete _0x4ae114[_0x3bf5('0x48')]['id'];}return db[_0x3bf5('0x2c')][_0x3bf5('0x46')]({'where':{'id':_0x4ae114[_0x3bf5('0x43')]['id']}})['then'](handleEntityNotFound(_0x4a7fe3,null))[_0x3bf5('0x25')](saveUpdates(_0x4ae114[_0x3bf5('0x48')],null))[_0x3bf5('0x25')](respondWithResult(_0x4a7fe3,null))[_0x3bf5('0x49')](handleError(_0x4a7fe3,null));};exports[_0x3bf5('0x26')]=function(_0x4a35d9,_0x43730c){return db[_0x3bf5('0x2c')][_0x3bf5('0x46')]({'where':{'id':_0x4a35d9[_0x3bf5('0x43')]['id']}})[_0x3bf5('0x25')](handleEntityNotFound(_0x43730c,null))[_0x3bf5('0x25')](removeEntity(_0x43730c,null))['catch'](handleError(_0x43730c,null));};exports['getFields']=function(_0x26fe2e,_0x4bb463,_0x1a21d2){var _0x1cf801={};var _0x476ad7={};var _0x13982c;var _0x494fea;return db[_0x3bf5('0x2c')][_0x3bf5('0x4a')]({'where':{'id':_0x26fe2e[_0x3bf5('0x43')]['id']}})['then'](handleEntityNotFound(_0x4bb463,null))['then'](function(_0x479c81){if(_0x479c81){_0x13982c=_0x479c81;_0x476ad7[_0x3bf5('0x34')]=_['keys'](db[_0x3bf5('0x4b')]['rawAttributes']);_0x476ad7['query']=_['keys'](_0x26fe2e['query']);_0x476ad7[_0x3bf5('0x33')]=_[_0x3bf5('0x44')](_0x476ad7['model'],_0x476ad7[_0x3bf5('0x31')]);_0x1cf801[_0x3bf5('0x36')]=_['intersection'](_0x476ad7[_0x3bf5('0x34')],qs['fields'](_0x26fe2e['query'][_0x3bf5('0x35')]));_0x1cf801[_0x3bf5('0x36')]=_0x1cf801[_0x3bf5('0x36')]['length']?_0x1cf801[_0x3bf5('0x36')]:_0x476ad7[_0x3bf5('0x34')];_0x1cf801['order']=qs['sort'](_0x26fe2e['query']['sort']);_0x1cf801[_0x3bf5('0x3c')]=qs[_0x3bf5('0x33')](_['pick'](_0x26fe2e[_0x3bf5('0x31')],_0x476ad7[_0x3bf5('0x33')]));if(_0x26fe2e[_0x3bf5('0x31')][_0x3bf5('0x4c')]){_0x1cf801['where']=_['merge'](_0x1cf801['where'],{'$or':_[_0x3bf5('0x3d')](_0x1cf801[_0x3bf5('0x36')],function(_0x30a391){var _0x4496b3={};_0x4496b3[_0x30a391]={'$like':'%'+_0x26fe2e[_0x3bf5('0x31')][_0x3bf5('0x4c')]+'%'};return _0x4496b3;})});}_0x1cf801=_[_0x3bf5('0x3b')]({},_0x1cf801,_0x26fe2e[_0x3bf5('0x3f')]);return _0x13982c['getFields'](_0x1cf801);}})[_0x3bf5('0x25')](function(_0x2487b2){if(_0x2487b2){_0x494fea=_0x2487b2[_0x3bf5('0x37')];if(!_0x26fe2e[_0x3bf5('0x31')]['hasOwnProperty']('nolimit')){_0x1cf801[_0x3bf5('0x1f')]=qs[_0x3bf5('0x1f')](_0x26fe2e['query'][_0x3bf5('0x1f')]);_0x1cf801['offset']=qs[_0x3bf5('0x1d')](_0x26fe2e[_0x3bf5('0x31')][_0x3bf5('0x1d')]);}return _0x13982c[_0x3bf5('0x4d')](_0x1cf801);}})['then'](function(_0x27341e){if(_0x27341e){return _0x27341e?{'count':_0x494fea,'rows':_0x27341e}:null;}})['then'](respondWithResult(_0x4bb463,null))[_0x3bf5('0x49')](handleError(_0x4bb463,null));};exports[_0x3bf5('0x4e')]=function(_0x3e51fe,_0x3ef92a,_0x1ff75b){var _0x3d7633={};var _0x1efb39={};var _0x59db75;var _0x4a9d79;return db[_0x3bf5('0x2c')][_0x3bf5('0x4a')]({'where':{'id':_0x3e51fe[_0x3bf5('0x43')]['id']}})[_0x3bf5('0x25')](handleEntityNotFound(_0x3ef92a,null))['then'](function(_0x1eb31d){if(_0x1eb31d){_0x59db75=_0x1eb31d;_0x1efb39[_0x3bf5('0x34')]=_[_0x3bf5('0x32')](db[_0x3bf5('0x4b')]['rawAttributes']);_0x1efb39[_0x3bf5('0x31')]=_[_0x3bf5('0x32')](_0x3e51fe[_0x3bf5('0x31')]);_0x1efb39[_0x3bf5('0x33')]=_['intersection'](_0x1efb39['model'],_0x1efb39[_0x3bf5('0x31')]);_0x3d7633[_0x3bf5('0x36')]=_[_0x3bf5('0x44')](_0x1efb39[_0x3bf5('0x34')],qs[_0x3bf5('0x35')](_0x3e51fe[_0x3bf5('0x31')][_0x3bf5('0x35')]));_0x3d7633[_0x3bf5('0x36')]=_0x3d7633[_0x3bf5('0x36')][_0x3bf5('0x37')]?_0x3d7633[_0x3bf5('0x36')]:_0x1efb39[_0x3bf5('0x34')];_0x3d7633['order']=qs[_0x3bf5('0x3a')](_0x3e51fe[_0x3bf5('0x31')][_0x3bf5('0x3a')]);_0x3d7633['where']=qs[_0x3bf5('0x33')](_[_0x3bf5('0x4f')](_0x3e51fe[_0x3bf5('0x31')],_0x1efb39[_0x3bf5('0x33')]));if(_0x3e51fe['query']['filter']){_0x3d7633[_0x3bf5('0x3c')]=_[_0x3bf5('0x3b')](_0x3d7633[_0x3bf5('0x3c')],{'$or':_[_0x3bf5('0x3d')](_0x3d7633[_0x3bf5('0x36')],function(_0x35558c){var _0x4a76cc={};_0x4a76cc[_0x35558c]={'$like':'%'+_0x3e51fe[_0x3bf5('0x31')][_0x3bf5('0x4c')]+'%'};return _0x4a76cc;})});}_0x3d7633=_[_0x3bf5('0x3b')]({},_0x3d7633,_0x3e51fe[_0x3bf5('0x3f')]);return _0x59db75[_0x3bf5('0x4e')](_0x3d7633);}})[_0x3bf5('0x25')](function(_0x15a57c){if(_0x15a57c){_0x4a9d79=_0x15a57c[_0x3bf5('0x37')];if(!_0x3e51fe['query'][_0x3bf5('0x38')]('nolimit')){_0x3d7633[_0x3bf5('0x1f')]=qs[_0x3bf5('0x1f')](_0x3e51fe[_0x3bf5('0x31')]['limit']);_0x3d7633['offset']=qs[_0x3bf5('0x1d')](_0x3e51fe['query'][_0x3bf5('0x1d')]);}return _0x59db75[_0x3bf5('0x4e')](_0x3d7633);}})[_0x3bf5('0x25')](function(_0x502e21){if(_0x502e21){return _0x502e21?{'count':_0x4a9d79,'rows':_0x502e21}:null;}})[_0x3bf5('0x25')](respondWithResult(_0x3ef92a,null))[_0x3bf5('0x49')](handleError(_0x3ef92a,null));};exports[_0x3bf5('0x50')]=function(_0xc6185e,_0x47eae6,_0x592327){var _0x376e2f={};var _0xed3d61={};var _0x577b16;var _0x1a75e4;return db[_0x3bf5('0x2c')]['findOne']({'where':{'id':_0xc6185e[_0x3bf5('0x43')]['id']}})[_0x3bf5('0x25')](handleEntityNotFound(_0x47eae6,null))[_0x3bf5('0x25')](function(_0x269af6){if(_0x269af6){_0x577b16=_0x269af6;_0xed3d61[_0x3bf5('0x34')]=_[_0x3bf5('0x32')](db[_0x3bf5('0x4b')]['rawAttributes']);_0xed3d61['query']=_['keys'](_0xc6185e[_0x3bf5('0x31')]);_0xed3d61['filters']=_[_0x3bf5('0x44')](_0xed3d61[_0x3bf5('0x34')],_0xed3d61['query']);_0x376e2f['attributes']=_['intersection'](_0xed3d61[_0x3bf5('0x34')],qs[_0x3bf5('0x35')](_0xc6185e[_0x3bf5('0x31')][_0x3bf5('0x35')]));_0x376e2f[_0x3bf5('0x36')]=_0x376e2f[_0x3bf5('0x36')][_0x3bf5('0x37')]?_0x376e2f[_0x3bf5('0x36')]:_0xed3d61[_0x3bf5('0x34')];_0x376e2f[_0x3bf5('0x39')]=qs[_0x3bf5('0x3a')](_0xc6185e[_0x3bf5('0x31')][_0x3bf5('0x3a')]);_0x376e2f[_0x3bf5('0x3c')]=qs['filters'](_[_0x3bf5('0x4f')](_0xc6185e['query'],_0xed3d61[_0x3bf5('0x33')]));if(_0xc6185e[_0x3bf5('0x31')]['filter']){_0x376e2f['where']=_['merge'](_0x376e2f['where'],{'$or':_[_0x3bf5('0x3d')](_0x376e2f[_0x3bf5('0x36')],function(_0x555917){var _0x4c976e={};_0x4c976e[_0x555917]={'$like':'%'+_0xc6185e[_0x3bf5('0x31')][_0x3bf5('0x4c')]+'%'};return _0x4c976e;})});}_0x376e2f=_[_0x3bf5('0x3b')]({},_0x376e2f,_0xc6185e['options']);return _0x577b16[_0x3bf5('0x50')](_0x376e2f);}})['then'](function(_0x391f5e){if(_0x391f5e){_0x1a75e4=_0x391f5e[_0x3bf5('0x37')];if(!_0xc6185e[_0x3bf5('0x31')]['hasOwnProperty'](_0x3bf5('0x51'))){_0x376e2f['limit']=qs[_0x3bf5('0x1f')](_0xc6185e[_0x3bf5('0x31')][_0x3bf5('0x1f')]);_0x376e2f[_0x3bf5('0x1d')]=qs[_0x3bf5('0x1d')](_0xc6185e['query'][_0x3bf5('0x1d')]);}return _0x577b16['getDescriptions'](_0x376e2f);}})[_0x3bf5('0x25')](function(_0x10bd44){if(_0x10bd44){return _0x10bd44?{'count':_0x1a75e4,'rows':_0x10bd44}:null;}})[_0x3bf5('0x25')](respondWithResult(_0x47eae6,null))[_0x3bf5('0x49')](handleError(_0x47eae6,null));};exports[_0x3bf5('0x52')]=function(_0x4f28e4,_0x267157,_0x10bf66){var _0x4cd62f={};var _0x1b54fc={};var _0x1d75fc;var _0x3989d7;return db[_0x3bf5('0x2c')][_0x3bf5('0x4a')]({'where':{'id':_0x4f28e4['params']['id']}})[_0x3bf5('0x25')](handleEntityNotFound(_0x267157,null))['then'](function(_0x535332){if(_0x535332){_0x1d75fc=_0x535332;_0x1b54fc[_0x3bf5('0x34')]=_[_0x3bf5('0x32')](db['Tag'][_0x3bf5('0x2d')]);_0x1b54fc[_0x3bf5('0x31')]=_[_0x3bf5('0x32')](_0x4f28e4[_0x3bf5('0x31')]);_0x1b54fc[_0x3bf5('0x33')]=_[_0x3bf5('0x44')](_0x1b54fc[_0x3bf5('0x34')],_0x1b54fc[_0x3bf5('0x31')]);_0x4cd62f[_0x3bf5('0x36')]=_[_0x3bf5('0x44')](_0x1b54fc[_0x3bf5('0x34')],qs[_0x3bf5('0x35')](_0x4f28e4['query'][_0x3bf5('0x35')]));_0x4cd62f[_0x3bf5('0x36')]=_0x4cd62f['attributes'][_0x3bf5('0x37')]?_0x4cd62f[_0x3bf5('0x36')]:_0x1b54fc[_0x3bf5('0x34')];_0x4cd62f[_0x3bf5('0x39')]=qs[_0x3bf5('0x3a')](_0x4f28e4[_0x3bf5('0x31')][_0x3bf5('0x3a')]);_0x4cd62f['where']=qs[_0x3bf5('0x33')](_[_0x3bf5('0x4f')](_0x4f28e4['query'],_0x1b54fc['filters']));if(_0x4f28e4['query']['filter']){_0x4cd62f['where']=_[_0x3bf5('0x3b')](_0x4cd62f['where'],{'$or':_['map'](_0x4cd62f[_0x3bf5('0x36')],function(_0x15183e){var _0xa1fc0c={};_0xa1fc0c[_0x15183e]={'$like':'%'+_0x4f28e4[_0x3bf5('0x31')]['filter']+'%'};return _0xa1fc0c;})});}_0x4cd62f=_[_0x3bf5('0x3b')]({},_0x4cd62f,_0x4f28e4[_0x3bf5('0x3f')]);return _0x1d75fc[_0x3bf5('0x52')](_0x4cd62f);}})[_0x3bf5('0x25')](function(_0x1d2513){if(_0x1d2513){_0x3989d7=_0x1d2513[_0x3bf5('0x37')];if(!_0x4f28e4['query'][_0x3bf5('0x38')](_0x3bf5('0x51'))){_0x4cd62f[_0x3bf5('0x1f')]=qs[_0x3bf5('0x1f')](_0x4f28e4[_0x3bf5('0x31')][_0x3bf5('0x1f')]);_0x4cd62f['offset']=qs[_0x3bf5('0x1d')](_0x4f28e4['query'][_0x3bf5('0x1d')]);}return _0x1d75fc['getTags'](_0x4cd62f);}})['then'](function(_0x388e67){if(_0x388e67){return _0x388e67?{'count':_0x3989d7,'rows':_0x388e67}:null;}})[_0x3bf5('0x25')](respondWithResult(_0x267157,null))[_0x3bf5('0x49')](handleError(_0x267157,null));};exports[_0x3bf5('0x53')]=function(_0x5358c1,_0x4e9968,_0x4d985d){if(_0x5358c1[_0x3bf5('0x48')]['id']){delete _0x5358c1[_0x3bf5('0x48')]['id'];}return db[_0x3bf5('0x2c')][_0x3bf5('0x4a')]({'where':{'id':_0x5358c1[_0x3bf5('0x43')]['id']}})[_0x3bf5('0x25')](handleEntityNotFound(_0x4e9968,null))[_0x3bf5('0x25')](function(_0x55b5b2){if(_0x55b5b2){return _0x55b5b2['setTags'](_0x5358c1[_0x3bf5('0x48')]['ids']||[]);}return null;})[_0x3bf5('0x25')](respondWithResult(_0x4e9968,null))[_0x3bf5('0x49')](handleError(_0x4e9968,null));};
\ No newline at end of file
index b8fbdd3..6dcdc90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x530e=['request-promise','path','rimraf','./intDeskConfiguration.attributes','exports','define','DeskConfiguration','util','../../config/logger','api','moment','bluebird'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x530e,0x193));var _0xe530=function(_0x289dc2,_0x35588b){_0x289dc2=_0x289dc2-0x0;var _0x28e2c3=_0x530e[_0x289dc2];return _0x28e2c3;};'use strict';var _=require('lodash');var util=require(_0xe530('0x0'));var logger=require(_0xe530('0x1'))(_0xe530('0x2'));var moment=require(_0xe530('0x3'));var BPromise=require(_0xe530('0x4'));var rp=require(_0xe530('0x5'));var fs=require('fs');var path=require(_0xe530('0x6'));var rimraf=require(_0xe530('0x7'));var config=require('../../config/environment');var attributes=require(_0xe530('0x8'));module[_0xe530('0x9')]=function(_0x385205,_0x2ebecd){return _0x385205[_0xe530('0xa')](_0xe530('0xb'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xff6d=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','define','int_desk_configurations','lodash','util'];(function(_0x1c83c9,_0x2a0efc){var _0x49c840=function(_0x2945e2){while(--_0x2945e2){_0x1c83c9['push'](_0x1c83c9['shift']());}};_0x49c840(++_0x2a0efc);}(_0xff6d,0xe8));var _0xdff6=function(_0x510f5d,_0x4ac744){_0x510f5d=_0x510f5d-0x0;var _0x1692a7=_0xff6d[_0x510f5d];return _0x1692a7;};'use strict';var _=require(_0xdff6('0x0'));var util=require(_0xdff6('0x1'));var logger=require(_0xdff6('0x2'))('api');var moment=require(_0xdff6('0x3'));var BPromise=require(_0xdff6('0x4'));var rp=require(_0xdff6('0x5'));var fs=require('fs');var path=require(_0xdff6('0x6'));var rimraf=require(_0xdff6('0x7'));var config=require(_0xdff6('0x8'));var attributes=require(_0xdff6('0x9'));module[_0xdff6('0xa')]=function(_0x199459,_0x56a686){return _0x199459[_0xdff6('0xb')]('DeskConfiguration',attributes,{'tableName':_0xdff6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 15fc881..b59cf44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa064=['stringify','error','message','DeskConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x494149,_0x28b12b){var _0x2391dc=function(_0x5f1fde){while(--_0x5f1fde){_0x494149['push'](_0x494149['shift']());}};_0x2391dc(++_0x28b12b);}(_0xa064,0x192));var _0x4a06=function(_0x2f8bc6,_0x4dc869){_0x2f8bc6=_0x2f8bc6-0x0;var _0x2d008a=_0xa064[_0x2f8bc6];return _0x2d008a;};'use strict';var _=require(_0x4a06('0x0'));var util=require(_0x4a06('0x1'));var moment=require(_0x4a06('0x2'));var BPromise=require(_0x4a06('0x3'));var rs=require(_0x4a06('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4a06('0x5'));var logger=require('../../config/logger')(_0x4a06('0x6'));var config=require(_0x4a06('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4a06('0x8')][_0x4a06('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x55d4e3,_0x3b01cc,_0x454574){return new BPromise(function(_0x4c966b,_0x5e3342){return client[_0x4a06('0xa')](_0x55d4e3,_0x454574)[_0x4a06('0xb')](function(_0x3a8db5){logger[_0x4a06('0xc')]('DeskConfiguration,\x20%s,\x20%s',_0x3b01cc,_0x4a06('0xd'));logger[_0x4a06('0xe')](_0x4a06('0xf'),_0x3b01cc,_0x4a06('0xd'),JSON[_0x4a06('0x10')](_0x3a8db5));if(_0x3a8db5[_0x4a06('0x11')]){if(_0x3a8db5[_0x4a06('0x11')]['code']===0x1f4){logger[_0x4a06('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x3b01cc,_0x3a8db5[_0x4a06('0x11')][_0x4a06('0x12')]);return _0x5e3342(_0x3a8db5[_0x4a06('0x11')]['message']);}logger[_0x4a06('0x11')](_0x4a06('0x13'),_0x3b01cc,_0x3a8db5[_0x4a06('0x11')]['message']);return _0x4c966b(_0x3a8db5[_0x4a06('0x11')][_0x4a06('0x12')]);}else{logger[_0x4a06('0xc')]('DeskConfiguration,\x20%s,\x20%s',_0x3b01cc,_0x4a06('0xd'));_0x4c966b(_0x3a8db5[_0x4a06('0x14')][_0x4a06('0x12')]);}})[_0x4a06('0x15')](function(_0x15b067){logger['error'](_0x4a06('0x13'),_0x3b01cc,_0x15b067);_0x5e3342(_0x15b067);});});}
\ No newline at end of file
+var _0xcf3d=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x3b9715,_0x5542ed){var _0x52058a=function(_0x4eb028){while(--_0x4eb028){_0x3b9715['push'](_0x3b9715['shift']());}};_0x52058a(++_0x5542ed);}(_0xcf3d,0x19e));var _0xdcf3=function(_0x4683ee,_0x24696d){_0x4683ee=_0x4683ee-0x0;var _0x1a2b1a=_0xcf3d[_0x4683ee];return _0x1a2b1a;};'use strict';var _=require(_0xdcf3('0x0'));var util=require(_0xdcf3('0x1'));var moment=require(_0xdcf3('0x2'));var BPromise=require(_0xdcf3('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdcf3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xdcf3('0x5'));var logger=require(_0xdcf3('0x6'))(_0xdcf3('0x7'));var config=require(_0xdcf3('0x8'));var jayson=require(_0xdcf3('0x9'));var client=jayson[_0xdcf3('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43f8d5,_0x47dde8,_0x2cd0af){return new BPromise(function(_0x45c5bd,_0x55fe3a){return client['request'](_0x43f8d5,_0x2cd0af)['then'](function(_0x4515a2){logger[_0xdcf3('0xb')](_0xdcf3('0xc'),_0x47dde8,_0xdcf3('0xd'));logger[_0xdcf3('0xe')](_0xdcf3('0xf'),_0x47dde8,_0xdcf3('0xd'),JSON[_0xdcf3('0x10')](_0x4515a2));if(_0x4515a2[_0xdcf3('0x11')]){if(_0x4515a2['error'][_0xdcf3('0x12')]===0x1f4){logger[_0xdcf3('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x47dde8,_0x4515a2[_0xdcf3('0x11')][_0xdcf3('0x13')]);return _0x55fe3a(_0x4515a2[_0xdcf3('0x11')][_0xdcf3('0x13')]);}logger['error'](_0xdcf3('0xc'),_0x47dde8,_0x4515a2[_0xdcf3('0x11')]['message']);return _0x45c5bd(_0x4515a2[_0xdcf3('0x11')]['message']);}else{logger[_0xdcf3('0xb')](_0xdcf3('0xc'),_0x47dde8,_0xdcf3('0xd'));_0x45c5bd(_0x4515a2[_0xdcf3('0x14')]['message']);}})[_0xdcf3('0x15')](function(_0x24cce5){logger['error'](_0xdcf3('0xc'),_0x47dde8,_0x24cce5);_0x55fe3a(_0x24cce5);});});}
\ No newline at end of file
index ae20e7c..65cd59a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd237=['../../components/interaction/service','../../config/environment','./intDeskField.controller','isAuthenticated','show','post','create','put','/:id','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0xd237,0x14f));var _0x7d23=function(_0x3cb2be,_0x51cd28){_0x3cb2be=_0x3cb2be-0x0;var _0x46cae2=_0xd237[_0x3cb2be];return _0x46cae2;};'use strict';var multer=require(_0x7d23('0x0'));var util=require(_0x7d23('0x1'));var path=require(_0x7d23('0x2'));var timeout=require(_0x7d23('0x3'));var express=require('express');var router=express[_0x7d23('0x4')]();var fs_extra=require(_0x7d23('0x5'));var auth=require(_0x7d23('0x6'));var interaction=require(_0x7d23('0x7'));var config=require(_0x7d23('0x8'));var controller=require(_0x7d23('0x9'));router['get']('/',auth[_0x7d23('0xa')](),controller['index']);router['get']('/:id',auth[_0x7d23('0xa')](),controller[_0x7d23('0xb')]);router[_0x7d23('0xc')]('/',auth[_0x7d23('0xa')](),controller[_0x7d23('0xd')]);router[_0x7d23('0xe')](_0x7d23('0xf'),auth[_0x7d23('0xa')](),controller['update']);router[_0x7d23('0x10')](_0x7d23('0xf'),auth[_0x7d23('0xa')](),controller['destroy']);module[_0x7d23('0x11')]=router;
\ No newline at end of file
+var _0x1aa2=['destroy','exports','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','index','/:id','isAuthenticated','post','create','put','update','delete'];(function(_0x40b520,_0x1b198b){var _0x171cb4=function(_0x537f4e){while(--_0x537f4e){_0x40b520['push'](_0x40b520['shift']());}};_0x171cb4(++_0x1b198b);}(_0x1aa2,0x1b7));var _0x21aa=function(_0x19159a,_0x1cb5c3){_0x19159a=_0x19159a-0x0;var _0xa677f4=_0x1aa2[_0x19159a];return _0xa677f4;};'use strict';var multer=require('multer');var util=require(_0x21aa('0x0'));var path=require(_0x21aa('0x1'));var timeout=require('connect-timeout');var express=require(_0x21aa('0x2'));var router=express[_0x21aa('0x3')]();var fs_extra=require(_0x21aa('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x21aa('0x5'));var config=require(_0x21aa('0x6'));var controller=require(_0x21aa('0x7'));router[_0x21aa('0x8')]('/',auth['isAuthenticated'](),controller[_0x21aa('0x9')]);router[_0x21aa('0x8')](_0x21aa('0xa'),auth[_0x21aa('0xb')](),controller['show']);router[_0x21aa('0xc')]('/',auth[_0x21aa('0xb')](),controller[_0x21aa('0xd')]);router[_0x21aa('0xe')](_0x21aa('0xa'),auth[_0x21aa('0xb')](),controller[_0x21aa('0xf')]);router[_0x21aa('0x10')](_0x21aa('0xa'),auth[_0x21aa('0xb')](),controller[_0x21aa('0x11')]);module[_0x21aa('0x12')]=router;
\ No newline at end of file
index c563b5a..a8b7440 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a9=['customVariable','keyValue','STRING','exports','ENUM','string','variable'];(function(_0x298e3d,_0x54ad84){var _0x57b0b6=function(_0x56f03d){while(--_0x56f03d){_0x298e3d['push'](_0x298e3d['shift']());}};_0x57b0b6(++_0x54ad84);}(_0x61a9,0x153));var _0x961a=function(_0x4ee53f,_0x1c2a76){_0x4ee53f=_0x4ee53f-0x0;var _0x3b24fb=_0x61a9[_0x4ee53f];return _0x3b24fb;};'use strict';var Sequelize=require('sequelize');module[_0x961a('0x0')]={'type':{'type':Sequelize[_0x961a('0x1')](_0x961a('0x2'),_0x961a('0x3'),_0x961a('0x4'),_0x961a('0x5'),'picklist'),'defaultValue':_0x961a('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x961a('0x1')](_0x961a('0x2'),_0x961a('0x3'),_0x961a('0x4'))},'keyContent':{'type':Sequelize[_0x961a('0x6')]},'idField':{'type':Sequelize[_0x961a('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x961a('0x6')]}};
\ No newline at end of file
+var _0x15ae=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x320f31,_0x433146){var _0x3c8b72=function(_0x3f02c4){while(--_0x3f02c4){_0x320f31['push'](_0x320f31['shift']());}};_0x3c8b72(++_0x433146);}(_0x15ae,0xbb));var _0xe15a=function(_0x4b06e2,_0x2b1e4a){_0x4b06e2=_0x4b06e2-0x0;var _0x22d4f2=_0x15ae[_0x4b06e2];return _0x22d4f2;};'use strict';var Sequelize=require(_0xe15a('0x0'));module[_0xe15a('0x1')]={'type':{'type':Sequelize[_0xe15a('0x2')](_0xe15a('0x3'),_0xe15a('0x4'),_0xe15a('0x5'),_0xe15a('0x6'),_0xe15a('0x7')),'defaultValue':_0xe15a('0x3')},'content':{'type':Sequelize[_0xe15a('0x8')]},'key':{'type':Sequelize[_0xe15a('0x8')]},'keyType':{'type':Sequelize[_0xe15a('0x2')](_0xe15a('0x3'),_0xe15a('0x4'),_0xe15a('0x5'))},'keyContent':{'type':Sequelize[_0xe15a('0x8')]},'idField':{'type':Sequelize[_0xe15a('0x8')]},'nameField':{'type':Sequelize[_0xe15a('0x8')]},'customField':{'type':Sequelize[_0xe15a('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe15a('0x8')]}};
\ No newline at end of file
index 3e0d313..bfe1da7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x803f=['save','then','sendStatus','error','stack','name','send','index','map','DeskField','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','rows','catch','show','params','include','options','find','create','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','status','end','json','offset','limit','undefined','count','set','apply','reject'];(function(_0x51308d,_0x42cf02){var _0x37cde8=function(_0x527de4){while(--_0x527de4){_0x51308d['push'](_0x51308d['shift']());}};_0x37cde8(++_0x42cf02);}(_0x803f,0x144));var _0xf803=function(_0x54c039,_0x6dab5a){_0x54c039=_0x54c039-0x0;var _0x443f2b=_0x803f[_0x54c039];return _0x443f2b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf803('0x0'));var zipdir=require(_0xf803('0x1'));var jsonpatch=require(_0xf803('0x2'));var rp=require(_0xf803('0x3'));var moment=require(_0xf803('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf803('0x5'));var util=require(_0xf803('0x6'));var path=require(_0xf803('0x7'));var sox=require(_0xf803('0x8'));var csv=require(_0xf803('0x9'));var ejs=require(_0xf803('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf803('0xb'));var squel=require(_0xf803('0xc'));var crypto=require(_0xf803('0xd'));var jsforce=require(_0xf803('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf803('0xf'));var Papa=require('papaparse');var Redis=require(_0xf803('0x10'));var authService=require(_0xf803('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xf803('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf803('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xf803('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ec5b3,_0x2785e2){_0x2785e2=_0x2785e2||0xcc;return function(_0x418246){if(_0x418246){return _0x3ec5b3['sendStatus'](_0x2785e2);}return _0x3ec5b3[_0xf803('0x15')](_0x2785e2)[_0xf803('0x16')]();};}function respondWithResult(_0x47c904,_0x5a34b7){_0x5a34b7=_0x5a34b7||0xc8;return function(_0xaf3d8d){if(_0xaf3d8d){return _0x47c904[_0xf803('0x15')](_0x5a34b7)[_0xf803('0x17')](_0xaf3d8d);}};}function respondWithFilteredResult(_0x30f924,_0x39de2f){return function(_0x369937){if(_0x369937){var _0x56a5db=typeof _0x39de2f[_0xf803('0x18')]==='undefined'&&typeof _0x39de2f[_0xf803('0x19')]===_0xf803('0x1a');var _0x1d645b=_0x369937[_0xf803('0x1b')];var _0x5641a0=_0x56a5db?0x0:_0x39de2f[_0xf803('0x18')];var _0x4d2ce7=_0x56a5db?_0x369937[_0xf803('0x1b')]:_0x39de2f[_0xf803('0x18')]+_0x39de2f[_0xf803('0x19')];var _0x398787;if(_0x4d2ce7>=_0x1d645b){_0x4d2ce7=_0x1d645b;_0x398787=0xc8;}else{_0x398787=0xce;}_0x30f924['status'](_0x398787);return _0x30f924[_0xf803('0x1c')]('Content-Range',_0x5641a0+'-'+_0x4d2ce7+'/'+_0x1d645b)['json'](_0x369937);}return null;};}function patchUpdates(_0x408ea6){return function(_0x140806){try{jsonpatch[_0xf803('0x1d')](_0x140806,_0x408ea6,!![]);}catch(_0xb3e488){return BPromise[_0xf803('0x1e')](_0xb3e488);}return _0x140806[_0xf803('0x1f')]();};}function saveUpdates(_0x5123bf,_0x1f9880){return function(_0x59f6f2){if(_0x59f6f2){return _0x59f6f2['update'](_0x5123bf)[_0xf803('0x20')](function(_0x35d11a){return _0x35d11a;});}return null;};}function removeEntity(_0x3122b3,_0x4cd887){return function(_0x1b998e){if(_0x1b998e){return _0x1b998e['destroy']()[_0xf803('0x20')](function(){_0x3122b3[_0xf803('0x15')](0xcc)[_0xf803('0x16')]();});}};}function handleEntityNotFound(_0x5390a8,_0xf14da4){return function(_0x69c7fc){if(!_0x69c7fc){_0x5390a8[_0xf803('0x21')](0x194);}return _0x69c7fc;};}function handleError(_0x53b084,_0x3f1952){_0x3f1952=_0x3f1952||0x1f4;return function(_0xf28b04){logger[_0xf803('0x22')](_0xf28b04[_0xf803('0x23')]);if(_0xf28b04['name']){delete _0xf28b04[_0xf803('0x24')];}_0x53b084['status'](_0x3f1952)[_0xf803('0x25')](_0xf28b04);};}exports[_0xf803('0x26')]=function(_0x1404de,_0x554d17){var _0x419229={},_0x4b82d3={},_0x33f804={'count':0x0,'rows':[]};var _0x2a3b39=_[_0xf803('0x27')](db[_0xf803('0x28')][_0xf803('0x29')],function(_0x4a8765){return{'name':_0x4a8765[_0xf803('0x2a')],'type':_0x4a8765['type'][_0xf803('0x2b')]};});_0x4b82d3[_0xf803('0x2c')]=_[_0xf803('0x27')](_0x2a3b39,_0xf803('0x24'));_0x4b82d3[_0xf803('0x2d')]=_[_0xf803('0x2e')](_0x1404de[_0xf803('0x2d')]);_0x4b82d3[_0xf803('0x2f')]=_['intersection'](_0x4b82d3[_0xf803('0x2c')],_0x4b82d3[_0xf803('0x2d')]);_0x419229[_0xf803('0x30')]=_[_0xf803('0x31')](_0x4b82d3['model'],qs[_0xf803('0x32')](_0x1404de[_0xf803('0x2d')][_0xf803('0x32')]));_0x419229[_0xf803('0x30')]=_0x419229[_0xf803('0x30')][_0xf803('0x33')]?_0x419229[_0xf803('0x30')]:_0x4b82d3[_0xf803('0x2c')];if(!_0x1404de['query'][_0xf803('0x34')]('nolimit')){_0x419229[_0xf803('0x19')]=qs[_0xf803('0x19')](_0x1404de[_0xf803('0x2d')][_0xf803('0x19')]);_0x419229[_0xf803('0x18')]=qs[_0xf803('0x18')](_0x1404de['query'][_0xf803('0x18')]);}_0x419229[_0xf803('0x35')]=qs['sort'](_0x1404de[_0xf803('0x2d')][_0xf803('0x36')]);_0x419229[_0xf803('0x37')]=qs[_0xf803('0x2f')](_[_0xf803('0x38')](_0x1404de['query'],_0x4b82d3[_0xf803('0x2f')]),_0x2a3b39);if(_0x1404de['query'][_0xf803('0x39')]){_0x419229[_0xf803('0x37')]=_[_0xf803('0x3a')](_0x419229[_0xf803('0x37')],{'$or':_[_0xf803('0x27')](_0x2a3b39,function(_0x19909f){if(_0x19909f[_0xf803('0x3b')]!==_0xf803('0x3c')){var _0x55b549={};_0x55b549[_0x19909f[_0xf803('0x24')]]={'$like':'%'+_0x1404de['query'][_0xf803('0x39')]+'%'};return _0x55b549;}})});}_0x419229=_['merge']({},_0x419229,_0x1404de['options']);var _0x45862a={'where':_0x419229['where']};return db[_0xf803('0x28')][_0xf803('0x1b')](_0x45862a)[_0xf803('0x20')](function(_0x448dd4){_0x33f804[_0xf803('0x1b')]=_0x448dd4;if(_0x1404de[_0xf803('0x2d')]['includeAll']){_0x419229['include']=[{'all':!![]}];}return db[_0xf803('0x28')]['findAll'](_0x419229);})[_0xf803('0x20')](function(_0x34680c){_0x33f804[_0xf803('0x3d')]=_0x34680c;return _0x33f804;})[_0xf803('0x20')](respondWithFilteredResult(_0x554d17,_0x419229))[_0xf803('0x3e')](handleError(_0x554d17,null));};exports[_0xf803('0x3f')]=function(_0x373eb2,_0x4ea211){var _0x9dd6ec={'raw':!![],'where':{'id':_0x373eb2[_0xf803('0x40')]['id']}},_0x117b65={};_0x117b65[_0xf803('0x2c')]=_['keys'](db[_0xf803('0x28')][_0xf803('0x29')]);_0x117b65[_0xf803('0x2d')]=_[_0xf803('0x2e')](_0x373eb2[_0xf803('0x2d')]);_0x117b65[_0xf803('0x2f')]=_['intersection'](_0x117b65[_0xf803('0x2c')],_0x117b65[_0xf803('0x2d')]);_0x9dd6ec[_0xf803('0x30')]=_[_0xf803('0x31')](_0x117b65[_0xf803('0x2c')],qs[_0xf803('0x32')](_0x373eb2['query'][_0xf803('0x32')]));_0x9dd6ec[_0xf803('0x30')]=_0x9dd6ec[_0xf803('0x30')][_0xf803('0x33')]?_0x9dd6ec[_0xf803('0x30')]:_0x117b65[_0xf803('0x2c')];if(_0x373eb2[_0xf803('0x2d')]['includeAll']){_0x9dd6ec[_0xf803('0x41')]=[{'all':!![]}];}_0x9dd6ec=_['merge']({},_0x9dd6ec,_0x373eb2[_0xf803('0x42')]);return db[_0xf803('0x28')][_0xf803('0x43')](_0x9dd6ec)[_0xf803('0x20')](handleEntityNotFound(_0x4ea211,null))[_0xf803('0x20')](respondWithResult(_0x4ea211,null))['catch'](handleError(_0x4ea211,null));};exports[_0xf803('0x44')]=function(_0x44b143,_0x3e9971){return db[_0xf803('0x28')][_0xf803('0x44')](_0x44b143['body'],{})[_0xf803('0x20')](respondWithResult(_0x3e9971,0xc9))[_0xf803('0x3e')](handleError(_0x3e9971,null));};exports['update']=function(_0x810538,_0x1f7fd3){if(_0x810538[_0xf803('0x45')]['id']){delete _0x810538['body']['id'];}return db[_0xf803('0x28')][_0xf803('0x43')]({'where':{'id':_0x810538[_0xf803('0x40')]['id']}})[_0xf803('0x20')](handleEntityNotFound(_0x1f7fd3,null))[_0xf803('0x20')](saveUpdates(_0x810538['body'],null))[_0xf803('0x20')](respondWithResult(_0x1f7fd3,null))[_0xf803('0x3e')](handleError(_0x1f7fd3,null));};exports[_0xf803('0x46')]=function(_0x1108c8,_0xd62958){return db[_0xf803('0x28')][_0xf803('0x43')]({'where':{'id':_0x1108c8[_0xf803('0x40')]['id']}})['then'](handleEntityNotFound(_0xd62958,null))['then'](removeEntity(_0xd62958,null))[_0xf803('0x3e')](handleError(_0xd62958,null));};
\ No newline at end of file
+var _0x598a=['name','send','index','map','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','filter','options','DeskField','include','findAll','rows','show','rawAttributes','includeAll','find','create','body','catch','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error'];(function(_0x323d64,_0x3c698e){var _0x46a468=function(_0x550560){while(--_0x550560){_0x323d64['push'](_0x323d64['shift']());}};_0x46a468(++_0x3c698e);}(_0x598a,0xfb));var _0xa598=function(_0x4a8ddb,_0x4e65e8){_0x4a8ddb=_0x4a8ddb-0x0;var _0x11f103=_0x598a[_0x4a8ddb];return _0x11f103;};'use strict';var emlformat=require(_0xa598('0x0'));var rimraf=require(_0xa598('0x1'));var zipdir=require(_0xa598('0x2'));var jsonpatch=require(_0xa598('0x3'));var rp=require(_0xa598('0x4'));var moment=require('moment');var BPromise=require(_0xa598('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xa598('0x6'));var csv=require(_0xa598('0x7'));var ejs=require(_0xa598('0x8'));var fs=require('fs');var fs_extra=require(_0xa598('0x9'));var _=require(_0xa598('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa598('0xb'));var deskjs=require(_0xa598('0xc'));var toCsv=require(_0xa598('0x7'));var querystring=require(_0xa598('0xd'));var Papa=require(_0xa598('0xe'));var Redis=require(_0xa598('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa598('0x10'));var hardwareService=require(_0xa598('0x11'));var logger=require(_0xa598('0x12'))(_0xa598('0x13'));var utils=require(_0xa598('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa598('0x15'));var db=require(_0xa598('0x16'))['db'];function respondWithStatusCode(_0x468710,_0x5041d4){_0x5041d4=_0x5041d4||0xcc;return function(_0xe8f905){if(_0xe8f905){return _0x468710['sendStatus'](_0x5041d4);}return _0x468710[_0xa598('0x17')](_0x5041d4)[_0xa598('0x18')]();};}function respondWithResult(_0xb3288a,_0x38afa9){_0x38afa9=_0x38afa9||0xc8;return function(_0x1949b5){if(_0x1949b5){return _0xb3288a[_0xa598('0x17')](_0x38afa9)[_0xa598('0x19')](_0x1949b5);}};}function respondWithFilteredResult(_0x41d3fe,_0x28534a){return function(_0x4b100b){if(_0x4b100b){var _0x88df86=typeof _0x28534a[_0xa598('0x1a')]===_0xa598('0x1b')&&typeof _0x28534a[_0xa598('0x1c')]===_0xa598('0x1b');var _0xecb39d=_0x4b100b[_0xa598('0x1d')];var _0x2746e3=_0x88df86?0x0:_0x28534a[_0xa598('0x1a')];var _0x44c872=_0x88df86?_0x4b100b['count']:_0x28534a[_0xa598('0x1a')]+_0x28534a[_0xa598('0x1c')];var _0x3fd5a4;if(_0x44c872>=_0xecb39d){_0x44c872=_0xecb39d;_0x3fd5a4=0xc8;}else{_0x3fd5a4=0xce;}_0x41d3fe[_0xa598('0x17')](_0x3fd5a4);return _0x41d3fe[_0xa598('0x1e')](_0xa598('0x1f'),_0x2746e3+'-'+_0x44c872+'/'+_0xecb39d)['json'](_0x4b100b);}return null;};}function patchUpdates(_0x56fc63){return function(_0x2923d5){try{jsonpatch['apply'](_0x2923d5,_0x56fc63,!![]);}catch(_0x3ac469){return BPromise[_0xa598('0x20')](_0x3ac469);}return _0x2923d5[_0xa598('0x21')]();};}function saveUpdates(_0x2222b0,_0x261868){return function(_0x24f4f0){if(_0x24f4f0){return _0x24f4f0['update'](_0x2222b0)[_0xa598('0x22')](function(_0x46d225){return _0x46d225;});}return null;};}function removeEntity(_0x470663,_0x14643d){return function(_0x802679){if(_0x802679){return _0x802679[_0xa598('0x23')]()[_0xa598('0x22')](function(){_0x470663[_0xa598('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x473d07,_0x414d2c){return function(_0x499565){if(!_0x499565){_0x473d07['sendStatus'](0x194);}return _0x499565;};}function handleError(_0x35b669,_0x559038){_0x559038=_0x559038||0x1f4;return function(_0x527c9f){logger[_0xa598('0x24')](_0x527c9f['stack']);if(_0x527c9f[_0xa598('0x25')]){delete _0x527c9f['name'];}_0x35b669['status'](_0x559038)[_0xa598('0x26')](_0x527c9f);};}exports[_0xa598('0x27')]=function(_0x554d3b,_0x16f00d){var _0x2823f7={},_0x3cdc59={},_0x29bfe3={'count':0x0,'rows':[]};var _0x523392=_[_0xa598('0x28')](db['DeskField']['rawAttributes'],function(_0x587d11){return{'name':_0x587d11[_0xa598('0x29')],'type':_0x587d11['type'][_0xa598('0x2a')]};});_0x3cdc59[_0xa598('0x2b')]=_[_0xa598('0x28')](_0x523392,'name');_0x3cdc59[_0xa598('0x2c')]=_[_0xa598('0x2d')](_0x554d3b[_0xa598('0x2c')]);_0x3cdc59[_0xa598('0x2e')]=_[_0xa598('0x2f')](_0x3cdc59['model'],_0x3cdc59[_0xa598('0x2c')]);_0x2823f7[_0xa598('0x30')]=_[_0xa598('0x2f')](_0x3cdc59[_0xa598('0x2b')],qs['fields'](_0x554d3b[_0xa598('0x2c')][_0xa598('0x31')]));_0x2823f7['attributes']=_0x2823f7['attributes'][_0xa598('0x32')]?_0x2823f7[_0xa598('0x30')]:_0x3cdc59[_0xa598('0x2b')];if(!_0x554d3b['query'][_0xa598('0x33')](_0xa598('0x34'))){_0x2823f7['limit']=qs[_0xa598('0x1c')](_0x554d3b['query'][_0xa598('0x1c')]);_0x2823f7[_0xa598('0x1a')]=qs['offset'](_0x554d3b[_0xa598('0x2c')][_0xa598('0x1a')]);}_0x2823f7['order']=qs[_0xa598('0x35')](_0x554d3b[_0xa598('0x2c')][_0xa598('0x35')]);_0x2823f7['where']=qs[_0xa598('0x2e')](_[_0xa598('0x36')](_0x554d3b[_0xa598('0x2c')],_0x3cdc59['filters']),_0x523392);if(_0x554d3b[_0xa598('0x2c')]['filter']){_0x2823f7[_0xa598('0x37')]=_[_0xa598('0x38')](_0x2823f7[_0xa598('0x37')],{'$or':_['map'](_0x523392,function(_0x5bd98a){if(_0x5bd98a['type']!=='VIRTUAL'){var _0x3358ad={};_0x3358ad[_0x5bd98a[_0xa598('0x25')]]={'$like':'%'+_0x554d3b[_0xa598('0x2c')][_0xa598('0x39')]+'%'};return _0x3358ad;}})});}_0x2823f7=_[_0xa598('0x38')]({},_0x2823f7,_0x554d3b[_0xa598('0x3a')]);var _0x4526d7={'where':_0x2823f7[_0xa598('0x37')]};return db[_0xa598('0x3b')][_0xa598('0x1d')](_0x4526d7)['then'](function(_0x1833fb){_0x29bfe3[_0xa598('0x1d')]=_0x1833fb;if(_0x554d3b[_0xa598('0x2c')]['includeAll']){_0x2823f7[_0xa598('0x3c')]=[{'all':!![]}];}return db[_0xa598('0x3b')][_0xa598('0x3d')](_0x2823f7);})[_0xa598('0x22')](function(_0x307497){_0x29bfe3[_0xa598('0x3e')]=_0x307497;return _0x29bfe3;})['then'](respondWithFilteredResult(_0x16f00d,_0x2823f7))['catch'](handleError(_0x16f00d,null));};exports[_0xa598('0x3f')]=function(_0x10f2f7,_0x5a772d){var _0x45bc68={'raw':!![],'where':{'id':_0x10f2f7['params']['id']}},_0x54bb73={};_0x54bb73[_0xa598('0x2b')]=_['keys'](db[_0xa598('0x3b')][_0xa598('0x40')]);_0x54bb73[_0xa598('0x2c')]=_[_0xa598('0x2d')](_0x10f2f7[_0xa598('0x2c')]);_0x54bb73[_0xa598('0x2e')]=_[_0xa598('0x2f')](_0x54bb73[_0xa598('0x2b')],_0x54bb73[_0xa598('0x2c')]);_0x45bc68[_0xa598('0x30')]=_['intersection'](_0x54bb73[_0xa598('0x2b')],qs[_0xa598('0x31')](_0x10f2f7[_0xa598('0x2c')][_0xa598('0x31')]));_0x45bc68[_0xa598('0x30')]=_0x45bc68[_0xa598('0x30')][_0xa598('0x32')]?_0x45bc68['attributes']:_0x54bb73[_0xa598('0x2b')];if(_0x10f2f7[_0xa598('0x2c')][_0xa598('0x41')]){_0x45bc68[_0xa598('0x3c')]=[{'all':!![]}];}_0x45bc68=_[_0xa598('0x38')]({},_0x45bc68,_0x10f2f7[_0xa598('0x3a')]);return db[_0xa598('0x3b')][_0xa598('0x42')](_0x45bc68)['then'](handleEntityNotFound(_0x5a772d,null))[_0xa598('0x22')](respondWithResult(_0x5a772d,null))['catch'](handleError(_0x5a772d,null));};exports[_0xa598('0x43')]=function(_0x1ec7d8,_0x2710d){return db[_0xa598('0x3b')][_0xa598('0x43')](_0x1ec7d8[_0xa598('0x44')],{})[_0xa598('0x22')](respondWithResult(_0x2710d,0xc9))[_0xa598('0x45')](handleError(_0x2710d,null));};exports[_0xa598('0x46')]=function(_0x51e0e9,_0x57e82c){if(_0x51e0e9[_0xa598('0x44')]['id']){delete _0x51e0e9[_0xa598('0x44')]['id'];}return db[_0xa598('0x3b')][_0xa598('0x42')]({'where':{'id':_0x51e0e9['params']['id']}})['then'](handleEntityNotFound(_0x57e82c,null))['then'](saveUpdates(_0x51e0e9[_0xa598('0x44')],null))[_0xa598('0x22')](respondWithResult(_0x57e82c,null))['catch'](handleError(_0x57e82c,null));};exports['destroy']=function(_0x54b287,_0x315a01){return db[_0xa598('0x3b')][_0xa598('0x42')]({'where':{'id':_0x54b287[_0xa598('0x47')]['id']}})['then'](handleEntityNotFound(_0x315a01,null))[_0xa598('0x22')](removeEntity(_0x315a01,null))[_0xa598('0x45')](handleError(_0x315a01,null));};
\ No newline at end of file
index 0bd3eb7..c127c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5082=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','DeskField','int_desk_fields','idField','FieldId','lodash'];(function(_0x2afbb0,_0x44f16d){var _0x411ff2=function(_0x5edd7e){while(--_0x5edd7e){_0x2afbb0['push'](_0x2afbb0['shift']());}};_0x411ff2(++_0x44f16d);}(_0x5082,0x16f));var _0x2508=function(_0x18d4ec,_0xd10dc1){_0x18d4ec=_0x18d4ec-0x0;var _0x22d467=_0x5082[_0x18d4ec];return _0x22d467;};'use strict';var _=require(_0x2508('0x0'));var util=require(_0x2508('0x1'));var logger=require(_0x2508('0x2'))(_0x2508('0x3'));var moment=require(_0x2508('0x4'));var BPromise=require(_0x2508('0x5'));var rp=require(_0x2508('0x6'));var fs=require('fs');var path=require(_0x2508('0x7'));var rimraf=require(_0x2508('0x8'));var config=require(_0x2508('0x9'));var attributes=require(_0x2508('0xa'));module[_0x2508('0xb')]=function(_0x1f60a0,_0x5a270a){return _0x1f60a0['define'](_0x2508('0xc'),attributes,{'tableName':_0x2508('0xd'),'paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0x2508('0xe'),_0x2508('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3ef9=['util','../../config/logger','api','moment','request-promise','path','../../config/environment','./intDeskField.attributes','exports','define','int_desk_fields','desk_unique_index','idField','lodash'];(function(_0x17e5a6,_0x57c514){var _0x1fcfde=function(_0x4ba07e){while(--_0x4ba07e){_0x17e5a6['push'](_0x17e5a6['shift']());}};_0x1fcfde(++_0x57c514);}(_0x3ef9,0x8b));var _0x93ef=function(_0x4a2b7a,_0x1494c8){_0x4a2b7a=_0x4a2b7a-0x0;var _0x5de1be=_0x3ef9[_0x4a2b7a];return _0x5de1be;};'use strict';var _=require(_0x93ef('0x0'));var util=require(_0x93ef('0x1'));var logger=require(_0x93ef('0x2'))(_0x93ef('0x3'));var moment=require(_0x93ef('0x4'));var BPromise=require('bluebird');var rp=require(_0x93ef('0x5'));var fs=require('fs');var path=require(_0x93ef('0x6'));var rimraf=require('rimraf');var config=require(_0x93ef('0x7'));var attributes=require(_0x93ef('0x8'));module[_0x93ef('0x9')]=function(_0x4b5fd8,_0xe78265){return _0x4b5fd8[_0x93ef('0xa')]('DeskField',attributes,{'tableName':_0x93ef('0xb'),'paranoid':![],'indexes':[{'name':_0x93ef('0xc'),'fields':[_0x93ef('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 972c4f5..ef9e2b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f19=['result','catch','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2b0593,_0x994e00){var _0x4e6bbe=function(_0x276cc1){while(--_0x276cc1){_0x2b0593['push'](_0x2b0593['shift']());}};_0x4e6bbe(++_0x994e00);}(_0x3f19,0x189));var _0x93f1=function(_0x5c365f,_0x3b40ed){_0x5c365f=_0x5c365f-0x0;var _0x295e1b=_0x3f19[_0x5c365f];return _0x295e1b;};'use strict';var _=require('lodash');var util=require(_0x93f1('0x0'));var moment=require(_0x93f1('0x1'));var BPromise=require(_0x93f1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x93f1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x93f1('0x4'));var logger=require('../../config/logger')(_0x93f1('0x5'));var config=require(_0x93f1('0x6'));var jayson=require(_0x93f1('0x7'));var client=jayson[_0x93f1('0x8')][_0x93f1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x175083,_0x4d16c2,_0x293d93){return new BPromise(function(_0x368f63,_0x5d1f2f){return client[_0x93f1('0xa')](_0x175083,_0x293d93)[_0x93f1('0xb')](function(_0x1fcdad){logger[_0x93f1('0xc')](_0x93f1('0xd'),_0x4d16c2,_0x93f1('0xe'));logger[_0x93f1('0xf')](_0x93f1('0x10'),_0x4d16c2,'request\x20sent',JSON[_0x93f1('0x11')](_0x1fcdad));if(_0x1fcdad['error']){if(_0x1fcdad[_0x93f1('0x12')][_0x93f1('0x13')]===0x1f4){logger['error'](_0x93f1('0xd'),_0x4d16c2,_0x1fcdad['error'][_0x93f1('0x14')]);return _0x5d1f2f(_0x1fcdad[_0x93f1('0x12')]['message']);}logger[_0x93f1('0x12')](_0x93f1('0xd'),_0x4d16c2,_0x1fcdad['error'][_0x93f1('0x14')]);return _0x368f63(_0x1fcdad[_0x93f1('0x12')][_0x93f1('0x14')]);}else{logger[_0x93f1('0xc')](_0x93f1('0xd'),_0x4d16c2,'request\x20sent');_0x368f63(_0x1fcdad[_0x93f1('0x15')][_0x93f1('0x14')]);}})[_0x93f1('0x16')](function(_0x87af4f){logger['error'](_0x93f1('0xd'),_0x4d16c2,_0x87af4f);_0x5d1f2f(_0x87af4f);});});}
\ No newline at end of file
+var _0x06ba=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x476c1d,_0x5488e9){var _0x345068=function(_0x5c7632){while(--_0x5c7632){_0x476c1d['push'](_0x476c1d['shift']());}};_0x345068(++_0x5488e9);}(_0x06ba,0x147));var _0xa06b=function(_0x276132,_0xe8959c){_0x276132=_0x276132-0x0;var _0x464be8=_0x06ba[_0x276132];return _0x464be8;};'use strict';var _=require(_0xa06b('0x0'));var util=require(_0xa06b('0x1'));var moment=require(_0xa06b('0x2'));var BPromise=require(_0xa06b('0x3'));var rs=require(_0xa06b('0x4'));var fs=require('fs');var Redis=require(_0xa06b('0x5'));var db=require(_0xa06b('0x6'))['db'];var utils=require(_0xa06b('0x7'));var logger=require(_0xa06b('0x8'))(_0xa06b('0x9'));var config=require(_0xa06b('0xa'));var jayson=require(_0xa06b('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xa080e9,_0x2a88a3,_0x374573){return new BPromise(function(_0x27a868,_0x4af073){return client['request'](_0xa080e9,_0x374573)[_0xa06b('0xc')](function(_0x397b60){logger[_0xa06b('0xd')](_0xa06b('0xe'),_0x2a88a3,_0xa06b('0xf'));logger[_0xa06b('0x10')]('DeskField,\x20%s,\x20%s,\x20%s',_0x2a88a3,_0xa06b('0xf'),JSON[_0xa06b('0x11')](_0x397b60));if(_0x397b60[_0xa06b('0x12')]){if(_0x397b60[_0xa06b('0x12')][_0xa06b('0x13')]===0x1f4){logger[_0xa06b('0x12')]('DeskField,\x20%s,\x20%s',_0x2a88a3,_0x397b60[_0xa06b('0x12')][_0xa06b('0x14')]);return _0x4af073(_0x397b60[_0xa06b('0x12')][_0xa06b('0x14')]);}logger[_0xa06b('0x12')](_0xa06b('0xe'),_0x2a88a3,_0x397b60[_0xa06b('0x12')]['message']);return _0x27a868(_0x397b60[_0xa06b('0x12')]['message']);}else{logger[_0xa06b('0xd')](_0xa06b('0xe'),_0x2a88a3,_0xa06b('0xf'));_0x27a868(_0x397b60['result']['message']);}})[_0xa06b('0x15')](function(_0x59d767){logger[_0xa06b('0x12')]('DeskField,\x20%s,\x20%s',_0x2a88a3,_0x59d767);_0x4af073(_0x59d767);});});}
\ No newline at end of file
index a1ae04d..cc9a8c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa939=['getFields','create','post','/:id/configurations','put','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields'];(function(_0x396261,_0xdaec64){var _0x153b09=function(_0x17c319){while(--_0x17c319){_0x396261['push'](_0x396261['shift']());}};_0x153b09(++_0xdaec64);}(_0xa939,0x14a));var _0x9a93=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa939[_0x34bc30];return _0x5706de;};'use strict';var multer=require('multer');var util=require(_0x9a93('0x0'));var path=require(_0x9a93('0x1'));var timeout=require(_0x9a93('0x2'));var express=require('express');var router=express[_0x9a93('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9a93('0x4'));var interaction=require(_0x9a93('0x5'));var config=require(_0x9a93('0x6'));var controller=require(_0x9a93('0x7'));router[_0x9a93('0x8')]('/',auth[_0x9a93('0x9')](),controller[_0x9a93('0xa')]);router[_0x9a93('0x8')](_0x9a93('0xb'),auth[_0x9a93('0x9')](),controller[_0x9a93('0xc')]);router[_0x9a93('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x9a93('0xd')]);router[_0x9a93('0x8')](_0x9a93('0xe'),auth[_0x9a93('0x9')](),controller[_0x9a93('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9a93('0x10')]);router[_0x9a93('0x11')](_0x9a93('0x12'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x9a93('0x13')](_0x9a93('0xb'),auth[_0x9a93('0x9')](),controller['update']);router[_0x9a93('0x14')](_0x9a93('0xb'),auth[_0x9a93('0x9')](),controller[_0x9a93('0x15')]);module[_0x9a93('0x16')]=router;
\ No newline at end of file
+var _0xc873=['fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','getConfigurations','/:id/fields','getFields','create','/:id/configurations','put','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4f5ab8,_0x5822b4){var _0x35f8e1=function(_0x4c4422){while(--_0x4c4422){_0x4f5ab8['push'](_0x4f5ab8['shift']());}};_0x35f8e1(++_0x5822b4);}(_0xc873,0x10c));var _0x3c87=function(_0x294bf7,_0x2e8656){_0x294bf7=_0x294bf7-0x0;var _0x16a32e=_0xc873[_0x294bf7];return _0x16a32e;};'use strict';var multer=require(_0x3c87('0x0'));var util=require(_0x3c87('0x1'));var path=require(_0x3c87('0x2'));var timeout=require(_0x3c87('0x3'));var express=require(_0x3c87('0x4'));var router=express['Router']();var fs_extra=require(_0x3c87('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3c87('0x6'));var config=require(_0x3c87('0x7'));var controller=require(_0x3c87('0x8'));router[_0x3c87('0x9')]('/',auth[_0x3c87('0xa')](),controller[_0x3c87('0xb')]);router[_0x3c87('0x9')](_0x3c87('0xc'),auth[_0x3c87('0xa')](),controller['show']);router[_0x3c87('0x9')]('/:id/configurations',auth[_0x3c87('0xa')](),controller[_0x3c87('0xd')]);router[_0x3c87('0x9')](_0x3c87('0xe'),auth[_0x3c87('0xa')](),controller[_0x3c87('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3c87('0x10')]);router['post'](_0x3c87('0x11'),auth[_0x3c87('0xa')](),controller['addConfiguration']);router[_0x3c87('0x12')](_0x3c87('0xc'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x3c87('0x13')]);module[_0x3c87('0x14')]=router;
\ No newline at end of file
index 0f12cf1..2a89dc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf615=['sequelize','exports','STRING'];(function(_0x4fa0ea,_0x2cd534){var _0x51d027=function(_0xe67342){while(--_0xe67342){_0x4fa0ea['push'](_0x4fa0ea['shift']());}};_0x51d027(++_0x2cd534);}(_0xf615,0x8d));var _0x5f61=function(_0x87239,_0x38c793){_0x87239=_0x87239-0x0;var _0x53af1e=_0xf615[_0x87239];return _0x53af1e;};'use strict';var Sequelize=require(_0x5f61('0x0'));module[_0x5f61('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x5f61('0x2')]},'remoteUri':{'type':Sequelize[_0x5f61('0x2')]},'tenantId':{'type':Sequelize[_0x5f61('0x2')]},'clientId':{'type':Sequelize[_0x5f61('0x2')]},'clientSecret':{'type':Sequelize[_0x5f61('0x2')]},'serverUrl':{'type':Sequelize[_0x5f61('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x5f61('0x2')]}};
\ No newline at end of file
+var _0xd448=['exports','STRING'];(function(_0x3fbc21,_0x4c9f2c){var _0x38bad8=function(_0x121ce5){while(--_0x121ce5){_0x3fbc21['push'](_0x3fbc21['shift']());}};_0x38bad8(++_0x4c9f2c);}(_0xd448,0x172));var _0x8d44=function(_0x140a7a,_0xa77344){_0x140a7a=_0x140a7a-0x0;var _0x274da4=_0xd448[_0x140a7a];return _0x274da4;};'use strict';var Sequelize=require('sequelize');module[_0x8d44('0x0')]={'name':{'type':Sequelize[_0x8d44('0x1')]},'username':{'type':Sequelize[_0x8d44('0x1')]},'password':{'type':Sequelize[_0x8d44('0x1')]},'remoteUri':{'type':Sequelize[_0x8d44('0x1')]},'tenantId':{'type':Sequelize[_0x8d44('0x1')]},'clientId':{'type':Sequelize[_0x8d44('0x1')]},'clientSecret':{'type':Sequelize[_0x8d44('0x1')]},'serverUrl':{'type':Sequelize[_0x8d44('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x8d44('0x1')]}};
\ No newline at end of file
index c769ca4..9742147 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e00=['send','index','map','Dynamics365Account','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','merge','type','filter','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','getConfigurations','findOne','Dynamics365Configuration','hasOwnProperty','Subjects','channel','Dynamics365Field','incident','Incident','title','description','customerid','ownerid','caseorigincode','subject','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_url','escalatedon','exchangerate','followupby','importsequencenumber','influencescore','lastonholdtime','modifiedbyexternalpartyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','utcconversiontimezonecode','versionnumber','username','password','remoteUri','tenantId','clientId','clientSecret','slice','lastIndexOf','format','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','/oauth2/token','access_token','GET','Bearer\x20','4.0','MetadataId','Attributes','remove','LogicalName','forEach','@odata.type','push','all','isNil','substring','BooleanAttributeMetadata','StringAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','concat','length','statusCode','error','Wrong\x20credentials','EntityDefinitions(',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Label','UserLocalizedLabel','Value',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','true','FalseOption','false','DisplayName',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','rimraf','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name'];(function(_0x21f247,_0x4c5958){var _0x3bbe3e=function(_0x48f7fa){while(--_0x48f7fa){_0x21f247['push'](_0x21f247['shift']());}};_0x3bbe3e(++_0x4c5958);}(_0x4e00,0xa0));var _0x04e0=function(_0x34101c,_0x3fe5d1){_0x34101c=_0x34101c-0x0;var _0x4ca460=_0x4e00[_0x34101c];return _0x4ca460;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x04e0('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x04e0('0x1'));var rp=require(_0x04e0('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x04e0('0x3'));var util=require('util');var path=require(_0x04e0('0x4'));var sox=require(_0x04e0('0x5'));var csv=require(_0x04e0('0x6'));var ejs=require(_0x04e0('0x7'));var fs=require('fs');var fs_extra=require(_0x04e0('0x8'));var _=require(_0x04e0('0x9'));var squel=require(_0x04e0('0xa'));var crypto=require('crypto');var jsforce=require(_0x04e0('0xb'));var deskjs=require(_0x04e0('0xc'));var toCsv=require(_0x04e0('0x6'));var querystring=require(_0x04e0('0xd'));var Papa=require('papaparse');var Redis=require(_0x04e0('0xe'));var authService=require(_0x04e0('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x04e0('0x10'));var logger=require('../../config/logger')(_0x04e0('0x11'));var utils=require(_0x04e0('0x12'));var config=require(_0x04e0('0x13'));var licenseUtil=require(_0x04e0('0x14'));var db=require(_0x04e0('0x15'))['db'];var integrations=require(_0x04e0('0x16'));function respondWithStatusCode(_0x2a620a,_0x323881){_0x323881=_0x323881||0xcc;return function(_0x54f9b9){if(_0x54f9b9){return _0x2a620a[_0x04e0('0x17')](_0x323881);}return _0x2a620a['status'](_0x323881)[_0x04e0('0x18')]();};}function respondWithResult(_0x29f682,_0xdf6702){_0xdf6702=_0xdf6702||0xc8;return function(_0x489096){if(_0x489096){return _0x29f682[_0x04e0('0x19')](_0xdf6702)[_0x04e0('0x1a')](_0x489096);}};}function respondWithFilteredResult(_0x2e28a5,_0x221c66){return function(_0x462cf7){if(_0x462cf7){var _0x25d734=typeof _0x221c66[_0x04e0('0x1b')]===_0x04e0('0x1c')&&typeof _0x221c66[_0x04e0('0x1d')]===_0x04e0('0x1c');var _0x2ec16f=_0x462cf7[_0x04e0('0x1e')];var _0x333298=_0x25d734?0x0:_0x221c66['offset'];var _0x4d0db1=_0x25d734?_0x462cf7['count']:_0x221c66[_0x04e0('0x1b')]+_0x221c66[_0x04e0('0x1d')];var _0x324f3b;if(_0x4d0db1>=_0x2ec16f){_0x4d0db1=_0x2ec16f;_0x324f3b=0xc8;}else{_0x324f3b=0xce;}_0x2e28a5['status'](_0x324f3b);return _0x2e28a5[_0x04e0('0x1f')](_0x04e0('0x20'),_0x333298+'-'+_0x4d0db1+'/'+_0x2ec16f)[_0x04e0('0x1a')](_0x462cf7);}return null;};}function patchUpdates(_0x7bc646){return function(_0x50ba51){try{jsonpatch['apply'](_0x50ba51,_0x7bc646,!![]);}catch(_0x241c16){return BPromise[_0x04e0('0x21')](_0x241c16);}return _0x50ba51[_0x04e0('0x22')]();};}function saveUpdates(_0x310473,_0x9e9020){return function(_0x1ecda1){if(_0x1ecda1){return _0x1ecda1[_0x04e0('0x23')](_0x310473)[_0x04e0('0x24')](function(_0x4566e2){return _0x4566e2;});}return null;};}function removeEntity(_0x133b27,_0x30decd){return function(_0x50598b){if(_0x50598b){return _0x50598b[_0x04e0('0x25')]()[_0x04e0('0x24')](function(){_0x133b27[_0x04e0('0x19')](0xcc)[_0x04e0('0x18')]();});}};}function handleEntityNotFound(_0x207c4c,_0x50416c){return function(_0x4f6a8e){if(!_0x4f6a8e){_0x207c4c[_0x04e0('0x17')](0x194);}return _0x4f6a8e;};}function handleError(_0x47e3be,_0x11e64c){_0x11e64c=_0x11e64c||0x1f4;return function(_0x4d5cf2){logger['error'](_0x4d5cf2[_0x04e0('0x26')]);if(_0x4d5cf2[_0x04e0('0x27')]){delete _0x4d5cf2[_0x04e0('0x27')];}_0x47e3be[_0x04e0('0x19')](_0x11e64c)[_0x04e0('0x28')](_0x4d5cf2);};}exports[_0x04e0('0x29')]=function(_0xafde85,_0x383a94){var _0xce81d5={},_0x4d21a9={},_0x2c0256={'count':0x0,'rows':[]};var _0x45fcfc=_[_0x04e0('0x2a')](db[_0x04e0('0x2b')][_0x04e0('0x2c')],function(_0x44e804){return{'name':_0x44e804[_0x04e0('0x2d')],'type':_0x44e804['type'][_0x04e0('0x2e')]};});_0x4d21a9[_0x04e0('0x2f')]=_['map'](_0x45fcfc,_0x04e0('0x27'));_0x4d21a9[_0x04e0('0x30')]=_[_0x04e0('0x31')](_0xafde85[_0x04e0('0x30')]);_0x4d21a9[_0x04e0('0x32')]=_['intersection'](_0x4d21a9['model'],_0x4d21a9[_0x04e0('0x30')]);_0xce81d5[_0x04e0('0x33')]=_[_0x04e0('0x34')](_0x4d21a9[_0x04e0('0x2f')],qs[_0x04e0('0x35')](_0xafde85[_0x04e0('0x30')]['fields']));_0xce81d5[_0x04e0('0x33')]=_0xce81d5[_0x04e0('0x33')]['length']?_0xce81d5[_0x04e0('0x33')]:_0x4d21a9[_0x04e0('0x2f')];if(!_0xafde85['query']['hasOwnProperty'](_0x04e0('0x36'))){_0xce81d5[_0x04e0('0x1d')]=qs[_0x04e0('0x1d')](_0xafde85[_0x04e0('0x30')][_0x04e0('0x1d')]);_0xce81d5[_0x04e0('0x1b')]=qs['offset'](_0xafde85[_0x04e0('0x30')][_0x04e0('0x1b')]);}_0xce81d5[_0x04e0('0x37')]=qs['sort'](_0xafde85[_0x04e0('0x30')][_0x04e0('0x38')]);_0xce81d5[_0x04e0('0x39')]=qs[_0x04e0('0x32')](_[_0x04e0('0x3a')](_0xafde85[_0x04e0('0x30')],_0x4d21a9[_0x04e0('0x32')]),_0x45fcfc);if(_0xafde85[_0x04e0('0x30')]['filter']){_0xce81d5['where']=_[_0x04e0('0x3b')](_0xce81d5['where'],{'$or':_[_0x04e0('0x2a')](_0x45fcfc,function(_0x2d5d3c){if(_0x2d5d3c[_0x04e0('0x3c')]!=='VIRTUAL'){var _0x53dad0={};_0x53dad0[_0x2d5d3c[_0x04e0('0x27')]]={'$like':'%'+_0xafde85['query'][_0x04e0('0x3d')]+'%'};return _0x53dad0;}})});}_0xce81d5=_[_0x04e0('0x3b')]({},_0xce81d5,_0xafde85[_0x04e0('0x3e')]);var _0x44aa88={'where':_0xce81d5[_0x04e0('0x39')]};return db[_0x04e0('0x2b')][_0x04e0('0x1e')](_0x44aa88)[_0x04e0('0x24')](function(_0x15723c){_0x2c0256[_0x04e0('0x1e')]=_0x15723c;if(_0xafde85[_0x04e0('0x30')][_0x04e0('0x3f')]){_0xce81d5[_0x04e0('0x40')]=[{'all':!![]}];}return db[_0x04e0('0x2b')][_0x04e0('0x41')](_0xce81d5);})[_0x04e0('0x24')](function(_0x5b693a){_0x2c0256[_0x04e0('0x42')]=_0x5b693a;return _0x2c0256;})[_0x04e0('0x24')](respondWithFilteredResult(_0x383a94,_0xce81d5))[_0x04e0('0x43')](handleError(_0x383a94,null));};exports[_0x04e0('0x44')]=function(_0x515507,_0x5506eb){var _0x436e86={'raw':![],'where':{'id':_0x515507['params']['id']}},_0x40d6b8={};_0x40d6b8[_0x04e0('0x2f')]=_[_0x04e0('0x31')](db[_0x04e0('0x2b')][_0x04e0('0x2c')]);_0x40d6b8[_0x04e0('0x30')]=_[_0x04e0('0x31')](_0x515507[_0x04e0('0x30')]);_0x40d6b8[_0x04e0('0x32')]=_['intersection'](_0x40d6b8[_0x04e0('0x2f')],_0x40d6b8[_0x04e0('0x30')]);_0x436e86[_0x04e0('0x33')]=_['intersection'](_0x40d6b8[_0x04e0('0x2f')],qs[_0x04e0('0x35')](_0x515507[_0x04e0('0x30')][_0x04e0('0x35')]));_0x436e86[_0x04e0('0x33')]=_0x436e86[_0x04e0('0x33')]['length']?_0x436e86[_0x04e0('0x33')]:_0x40d6b8[_0x04e0('0x2f')];if(_0x515507['query'][_0x04e0('0x3f')]){_0x436e86['include']=[{'all':!![]}];}_0x436e86=_[_0x04e0('0x3b')]({},_0x436e86,_0x515507[_0x04e0('0x3e')]);return db[_0x04e0('0x2b')][_0x04e0('0x45')](_0x436e86)['then'](handleEntityNotFound(_0x5506eb,null))[_0x04e0('0x24')](respondWithResult(_0x5506eb,null))[_0x04e0('0x43')](handleError(_0x5506eb,null));};exports[_0x04e0('0x46')]=function(_0x15bb21,_0x53bd50){return db[_0x04e0('0x2b')][_0x04e0('0x46')](_0x15bb21['body'],{})[_0x04e0('0x24')](respondWithResult(_0x53bd50,0xc9))[_0x04e0('0x43')](handleError(_0x53bd50,null));};exports[_0x04e0('0x23')]=function(_0x2baf3e,_0x42d826){if(_0x2baf3e[_0x04e0('0x47')]['id']){delete _0x2baf3e['body']['id'];}return db[_0x04e0('0x2b')][_0x04e0('0x45')]({'where':{'id':_0x2baf3e[_0x04e0('0x48')]['id']}})[_0x04e0('0x24')](handleEntityNotFound(_0x42d826,null))[_0x04e0('0x24')](saveUpdates(_0x2baf3e[_0x04e0('0x47')],null))[_0x04e0('0x24')](respondWithResult(_0x42d826,null))[_0x04e0('0x43')](handleError(_0x42d826,null));};exports['destroy']=function(_0x428aba,_0x271090){return db[_0x04e0('0x2b')]['find']({'where':{'id':_0x428aba[_0x04e0('0x48')]['id']}})[_0x04e0('0x24')](handleEntityNotFound(_0x271090,null))[_0x04e0('0x24')](removeEntity(_0x271090,null))[_0x04e0('0x43')](handleError(_0x271090,null));};exports[_0x04e0('0x49')]=function(_0x4e9552,_0x14286b,_0x426fd7){var _0x106c14={};var _0x56fa5e={};var _0x4b4c1c;var _0x1b1de8;return db[_0x04e0('0x2b')][_0x04e0('0x4a')]({'where':{'id':_0x4e9552[_0x04e0('0x48')]['id']}})['then'](handleEntityNotFound(_0x14286b,null))[_0x04e0('0x24')](function(_0x3399aa){if(_0x3399aa){_0x4b4c1c=_0x3399aa;_0x56fa5e[_0x04e0('0x2f')]=_[_0x04e0('0x31')](db[_0x04e0('0x4b')][_0x04e0('0x2c')]);_0x56fa5e[_0x04e0('0x30')]=_[_0x04e0('0x31')](_0x4e9552[_0x04e0('0x30')]);_0x56fa5e[_0x04e0('0x32')]=_['intersection'](_0x56fa5e[_0x04e0('0x2f')],_0x56fa5e[_0x04e0('0x30')]);_0x106c14[_0x04e0('0x33')]=_[_0x04e0('0x34')](_0x56fa5e[_0x04e0('0x2f')],qs[_0x04e0('0x35')](_0x4e9552['query'][_0x04e0('0x35')]));_0x106c14[_0x04e0('0x33')]=_0x106c14[_0x04e0('0x33')]['length']?_0x106c14[_0x04e0('0x33')]:_0x56fa5e[_0x04e0('0x2f')];_0x106c14[_0x04e0('0x37')]=qs[_0x04e0('0x38')](_0x4e9552[_0x04e0('0x30')][_0x04e0('0x38')]);_0x106c14[_0x04e0('0x39')]=qs[_0x04e0('0x32')](_[_0x04e0('0x3a')](_0x4e9552[_0x04e0('0x30')],_0x56fa5e[_0x04e0('0x32')]));if(_0x4e9552[_0x04e0('0x30')][_0x04e0('0x3d')]){_0x106c14[_0x04e0('0x39')]=_[_0x04e0('0x3b')](_0x106c14[_0x04e0('0x39')],{'$or':_['map'](_0x106c14['attributes'],function(_0x14dd28){var _0x3480aa={};_0x3480aa[_0x14dd28]={'$like':'%'+_0x4e9552[_0x04e0('0x30')][_0x04e0('0x3d')]+'%'};return _0x3480aa;})});}_0x106c14=_[_0x04e0('0x3b')]({},_0x106c14,_0x4e9552[_0x04e0('0x3e')]);return _0x4b4c1c[_0x04e0('0x49')](_0x106c14);}})['then'](function(_0x17e113){if(_0x17e113){_0x1b1de8=_0x17e113['length'];if(!_0x4e9552['query'][_0x04e0('0x4c')](_0x04e0('0x36'))){_0x106c14[_0x04e0('0x1d')]=qs['limit'](_0x4e9552['query'][_0x04e0('0x1d')]);_0x106c14['offset']=qs[_0x04e0('0x1b')](_0x4e9552[_0x04e0('0x30')][_0x04e0('0x1b')]);}return _0x4b4c1c[_0x04e0('0x49')](_0x106c14);}})[_0x04e0('0x24')](function(_0x1e432d){if(_0x1e432d){return _0x1e432d?{'count':_0x1b1de8,'rows':_0x1e432d}:null;}})['then'](respondWithResult(_0x14286b,null))[_0x04e0('0x43')](handleError(_0x14286b,null));};exports['addConfiguration']=function(_0x26df8e,_0xb53ea0,_0x31b24d){if(_0x26df8e[_0x04e0('0x47')]['id']){delete _0x26df8e[_0x04e0('0x47')]['id'];}return db['Dynamics365Account'][_0x04e0('0x4a')]({'where':{'id':_0x26df8e[_0x04e0('0x48')]['id']}})['then'](handleEntityNotFound(_0xb53ea0,null))['then'](function(_0x40bc9d){if(_0x40bc9d){_0x26df8e['body']['AccountId']=_0x40bc9d['id'];_0x26df8e['body'][_0x04e0('0x4d')]=integrations['getSubjects'](_0x26df8e['body'][_0x04e0('0x4e')],_0x26df8e[_0x04e0('0x47')][_0x04e0('0x3c')]);_0x26df8e[_0x04e0('0x47')]['Descriptions']=integrations['getDescriptions'](_0x26df8e[_0x04e0('0x47')][_0x04e0('0x4e')],_0x26df8e[_0x04e0('0x47')][_0x04e0('0x3c')]);return db[_0x04e0('0x4b')][_0x04e0('0x46')](_0x26df8e['body'],{'include':[{'model':db['Dynamics365Field'],'as':_0x04e0('0x4d')},{'model':db[_0x04e0('0x4f')],'as':'Descriptions'}]});}return null;})[_0x04e0('0x24')](respondWithResult(_0xb53ea0,null))[_0x04e0('0x43')](handleError(_0xb53ea0,null));};exports['getFields']=function(_0x1b250f,_0x317b0b,_0x53b151){var _0x101a77=_0x1b250f[_0x04e0('0x30')]['ticketType'];var _0x49b865=_0x101a77===_0x04e0('0x50')?_0x04e0('0x51'):'PhoneCall';var _0x3e6a08='';var _0x50284b='';var _0x40bbef='';var _0x2dd52c='';var _0x56ddd1='';var _0x4bb8b3='';var _0x5a56c5='';var _0x18a890='';var _0x2ca93d=[_0x04e0('0x52'),_0x04e0('0x53'),_0x04e0('0x54'),_0x04e0('0x55'),_0x04e0('0x56'),_0x04e0('0x57'),'phonenumber',_0x04e0('0x58'),_0x04e0('0x59'),_0x04e0('0x5a')];var _0x1ef40e=[_0x04e0('0x5b'),'accountidyominame',_0x04e0('0x5c'),_0x04e0('0x5d'),_0x04e0('0x5e'),'contactidyominame',_0x04e0('0x5f'),'contractidname',_0x04e0('0x60'),_0x04e0('0x61'),_0x04e0('0x62'),_0x04e0('0x63'),_0x04e0('0x64'),_0x04e0('0x65'),'createdonbehalfbyyominame',_0x04e0('0x66'),_0x04e0('0x67'),_0x04e0('0x68'),_0x04e0('0x69'),_0x04e0('0x6a'),'entityimage_timestamp',_0x04e0('0x6b'),_0x04e0('0x6c'),_0x04e0('0x6d'),'firstresponsebykpiidname',_0x04e0('0x6e'),_0x04e0('0x6f'),_0x04e0('0x70'),'kbarticleidname',_0x04e0('0x71'),'masteridname',_0x04e0('0x72'),'modifiedbyexternalpartyyominame','modifiedbyname',_0x04e0('0x73'),_0x04e0('0x74'),_0x04e0('0x75'),_0x04e0('0x76'),_0x04e0('0x77'),_0x04e0('0x78'),_0x04e0('0x79'),_0x04e0('0x7a'),_0x04e0('0x7b'),_0x04e0('0x7c'),_0x04e0('0x7d'),_0x04e0('0x7e'),_0x04e0('0x7f'),_0x04e0('0x80'),_0x04e0('0x81'),'prioritycodename','productidname','productserialnumber',_0x04e0('0x82'),_0x04e0('0x83'),_0x04e0('0x84'),_0x04e0('0x85'),_0x04e0('0x86'),_0x04e0('0x87'),_0x04e0('0x88'),_0x04e0('0x89'),_0x04e0('0x8a'),'statecode',_0x04e0('0x8b'),_0x04e0('0x8c'),_0x04e0('0x8d'),_0x04e0('0x8e'),_0x04e0('0x8f'),'traversedpath',_0x04e0('0x90'),_0x04e0('0x91')];var _0x24ff33=_0x2ca93d['concat'](_0x1ef40e);return db[_0x04e0('0x2b')]['findOne']({'where':{'id':_0x1b250f[_0x04e0('0x48')]['id']},'attributes':['id',_0x04e0('0x92'),_0x04e0('0x93'),_0x04e0('0x94'),_0x04e0('0x95'),_0x04e0('0x96'),_0x04e0('0x97')]})[_0x04e0('0x24')](handleEntityNotFound(_0x317b0b,null))['then'](function(_0x58a68e){if(_0x58a68e){_0x18a890=_0x58a68e[_0x04e0('0x94')];var _0x1a55b4=_0x18a890[_0x04e0('0x98')](-0x1);if(_0x1a55b4==='/'){_0x18a890=_0x18a890['substring'](0x0,_0x18a890[_0x04e0('0x99')](_0x1a55b4));}_0x5a56c5=util[_0x04e0('0x9a')](_0x04e0('0x9b'),_0x18a890);var _0x1d6741={'method':_0x04e0('0x9c'),'uri':_0x04e0('0x9d')+_0x58a68e[_0x04e0('0x95')]+_0x04e0('0x9e'),'form':{'client_id':_0x58a68e[_0x04e0('0x96')],'resource':_0x18a890,'username':_0x58a68e[_0x04e0('0x92')],'password':_0x58a68e[_0x04e0('0x93')],'grant_type':_0x04e0('0x93'),'client_secret':_0x58a68e[_0x04e0('0x97')]},'json':!![]};return rp(_0x1d6741);}})[_0x04e0('0x24')](function(_0x972bf5){_0x4bb8b3=_0x972bf5[_0x04e0('0x9f')];var _0x2a2168={'method':_0x04e0('0xa0'),'uri':encodeURI(_0x5a56c5+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x49b865+'\x27'),'headers':{'Authorization':_0x04e0('0xa1')+_0x4bb8b3,'If-None-Match':null,'OData-Version':_0x04e0('0xa2')},'json':!![]};return rp(_0x2a2168);})[_0x04e0('0x24')](function(_0x41c2b8){var _0x5654ed=_0x41c2b8['value'][0x0];var _0x1c767d=_0x5654ed[_0x04e0('0xa3')];var _0x553f35={'method':_0x04e0('0xa0'),'uri':_0x5a56c5+'EntityDefinitions('+_0x1c767d+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0x04e0('0xa1')+_0x4bb8b3,'If-None-Match':null,'OData-Version':_0x04e0('0xa2')},'json':!![]};return rp(_0x553f35);})[_0x04e0('0x24')](function(_0x23984f){_0x3e6a08=_0x23984f;_0x50284b=_0x3e6a08[_0x04e0('0xa4')];_0x50284b=_[_0x04e0('0xa5')](_0x50284b,function(_0x188f9c){return!_0x24ff33['includes'](_0x188f9c[_0x04e0('0xa6')]);});var _0x2dd18d=[];var _0x3b81e7=[];_0x50284b[_0x04e0('0xa7')](function(_0xbcd911){if(_0xbcd911[_0x04e0('0xa8')]){var _0x2ab15b=_0xbcd911[_0x04e0('0xa8')]['substring'](_0xbcd911['@odata.type'][_0x04e0('0x99')]('.')+0x1);if(_0x2ab15b==='PicklistAttributeMetadata'){_0x2dd18d[_0x04e0('0xa9')](getSelectList(_0x5a56c5,_0x101a77,_0x3b81e7,_0x3e6a08['MetadataId'],_0xbcd911[_0x04e0('0xa3')],_0x4bb8b3));}}});return Promise[_0x04e0('0xaa')](_0x2dd18d);})[_0x04e0('0x24')](function(_0x269524){_0x40bbef=_0x269524[0x0];var _0x418641=[];var _0x59a16e=[];_0x50284b[_0x04e0('0xa7')](function(_0x27b3da){if(!_[_0x04e0('0xab')](_0x27b3da[_0x04e0('0xa8')])){var _0x3a7088=_0x27b3da[_0x04e0('0xa8')][_0x04e0('0xac')](_0x27b3da[_0x04e0('0xa8')]['lastIndexOf']('.')+0x1);if(_0x3a7088===_0x04e0('0xad')){_0x418641[_0x04e0('0xa9')](getBooleanList(_0x5a56c5,_0x101a77,_0x59a16e,_0x3e6a08['MetadataId'],_0x27b3da[_0x04e0('0xa3')],_0x4bb8b3));}}});return Promise[_0x04e0('0xaa')](_0x418641);})[_0x04e0('0x24')](function(_0x1573af){_0x2dd52c=_0x1573af[0x0];var _0x8cfb91=[];var _0x557c98=[];_0x50284b['forEach'](function(_0x5d9c2c){if(_0x5d9c2c[_0x04e0('0xa8')]){var _0x23f3c0=_0x5d9c2c['@odata.type'][_0x04e0('0xac')](_0x5d9c2c[_0x04e0('0xa8')]['lastIndexOf']('.')+0x1);if(_0x23f3c0===_0x04e0('0xae')||_0x23f3c0==='DoubleAttributeMetadata'||_0x23f3c0===_0x04e0('0xaf')||_0x23f3c0===_0x04e0('0xb0')||_0x23f3c0===_0x04e0('0xb1')||_0x23f3c0==='DateTimeAttributeMetadata'||_0x23f3c0===_0x04e0('0xb2')||_0x23f3c0===_0x04e0('0xb3')||_0x23f3c0===_0x04e0('0xb4')||_0x23f3c0==='DecimalAttributeMetadata'){_0x8cfb91[_0x04e0('0xa9')](getInputList(_0x5a56c5,_0x101a77,_0x23f3c0,_0x557c98,_0x3e6a08[_0x04e0('0xa3')],_0x5d9c2c['MetadataId'],_0x4bb8b3));}}});return Promise['all'](_0x8cfb91);})[_0x04e0('0x24')](function(_0x28dd44){_0x56ddd1=_0x28dd44[0x0];var _0xc6d0bf=_0x40bbef[_0x04e0('0xb5')](_0x2dd52c)[_0x04e0('0xb5')](_0x56ddd1);var _0x288ffd={'count':_0xc6d0bf[_0x04e0('0xb6')],'rows':_0xc6d0bf};return _0x288ffd;})['then'](respondWithResult(_0x317b0b,null))[_0x04e0('0x43')](function(_0x45a877){var _0x52b0f4=_0x1b250f[_0x04e0('0x30')]['test']?0x1f4:_0x45a877[_0x04e0('0xb7')]||0x1f4;logger[_0x04e0('0xb8')](_0x45a877[_0x04e0('0x26')]);delete _0x45a877[_0x04e0('0x27')];if(_0x52b0f4===0x191){_0x52b0f4=0x190;}_0x317b0b['status'](_0x52b0f4)[_0x04e0('0x28')](_0x1b250f[_0x04e0('0x30')]['test']?{'message':_0x04e0('0xb9'),'statusCode':_0x45a877[_0x04e0('0xb7')]}:_0x45a877);});};function getSelectList(_0x41302e,_0x5f981d,_0x1b4066,_0x3dc27d,_0x19e496,_0x38ddff){var _0x4fee94={'method':_0x04e0('0xa0'),'uri':_0x41302e+_0x04e0('0xba')+_0x3dc27d+_0x04e0('0xbb')+_0x19e496+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x04e0('0xbc'),'headers':{'Authorization':_0x04e0('0xa1')+_0x38ddff,'If-None-Match':null,'OData-Version':_0x04e0('0xa2')},'json':!![]};return rp(_0x4fee94)['then'](function(_0x434e2f){var _0x4a3b7e=[];var _0x3ba8a2=_0x434e2f[_0x04e0('0xbd')]['Options'];_0x3ba8a2[_0x04e0('0xa7')](function(_0x343323){_0x4a3b7e[_0x04e0('0xa9')]({'name':_0x343323[_0x04e0('0xbe')][_0x04e0('0xbf')][_0x04e0('0xbe')],'value':String(_0x343323[_0x04e0('0xc0')])});});var _0xb890b8={'id':_0x5f981d+'_'+_0x434e2f[_0x04e0('0xa6')],'name':_0x434e2f['DisplayName'][_0x04e0('0xbf')][_0x04e0('0xbe')],'custom':![],'options':_0x4a3b7e};_0x1b4066[_0x04e0('0xa9')](_0xb890b8);return _0x1b4066;});}function getBooleanList(_0x24bc9c,_0x27b11e,_0x199859,_0x48aec6,_0x582b8b,_0x41f2ec){var _0x3149a5={'method':_0x04e0('0xa0'),'uri':_0x24bc9c+_0x04e0('0xba')+_0x48aec6+')/Attributes('+_0x582b8b+_0x04e0('0xc1'),'headers':{'Authorization':_0x04e0('0xa1')+_0x41f2ec,'If-None-Match':null,'OData-Version':_0x04e0('0xa2')},'json':!![]};return rp(_0x3149a5)[_0x04e0('0x24')](function(_0x5243bb){var _0x19112e=[];_0x19112e[_0x04e0('0xa9')]({'name':_0x5243bb['OptionSet']['TrueOption'][_0x04e0('0xbe')][_0x04e0('0xbf')]['Label'],'value':_0x04e0('0xc2')},{'name':_0x5243bb[_0x04e0('0xbd')][_0x04e0('0xc3')][_0x04e0('0xbe')][_0x04e0('0xbf')][_0x04e0('0xbe')],'value':_0x04e0('0xc4')});var _0x2e092c={'id':_0x27b11e+'_'+_0x5243bb['LogicalName'],'name':_0x5243bb[_0x04e0('0xc5')][_0x04e0('0xbf')]['Label'],'custom':![],'options':_0x19112e};_0x199859[_0x04e0('0xa9')](_0x2e092c);return _0x199859;});}function getInputList(_0x450553,_0x408c64,_0x44aede,_0x194658,_0x3d6f08,_0x210d3b,_0x4ea675){var _0x4a19b0={'method':_0x04e0('0xa0'),'uri':_0x450553+'EntityDefinitions('+_0x3d6f08+_0x04e0('0xbb')+_0x210d3b+_0x04e0('0xc6')+_0x44aede+_0x04e0('0xc7'),'headers':{'Authorization':_0x04e0('0xa1')+_0x4ea675,'If-None-Match':null,'OData-Version':_0x04e0('0xa2')},'json':!![]};return rp(_0x4a19b0)[_0x04e0('0x24')](function(_0x211e11){var _0x4f46bd={'id':_0x408c64+'_'+_0x211e11['LogicalName'],'name':_0x211e11['DisplayName'][_0x04e0('0xbf')]?_0x211e11[_0x04e0('0xc5')][_0x04e0('0xbf')][_0x04e0('0xbe')]:_0x211e11[_0x04e0('0xa6')],'custom':![],'options':[]};_0x194658[_0x04e0('0xa9')](_0x4f46bd);return _0x194658;});}
\ No newline at end of file
+var _0x87f8=['model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','pick','merge','where','type','VIRTUAL','filter','options','Dynamics365Account','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','getConfigurations','findOne','order','addConfiguration','AccountId','getSubjects','channel','getDescriptions','Dynamics365Configuration','Dynamics365Field','Subjects','getFields','incident','Incident','title','description','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyname','createdonbehalfbyname','customeridname','customeridtype','escalatedon','exchangerate','firstresponsebykpiidname','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyyominame','modifiedbyyominame','modifiedon','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responsiblecontactidname','sentimentvalue','slainvokedidname','socialprofileidname','statecode','statuscode','timezoneruleversionnumber','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','tenantId','clientId','clientSecret','remoteUri','format','POST','https://login.microsoftonline.com/','/oauth2/token','password','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','GET',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','@odata.type','substring','lastIndexOf','PicklistAttributeMetadata','push','forEach','all','StringAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','EntityDefinitions(',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','Label','UserLocalizedLabel','DisplayName','OptionSet','TrueOption','FalseOption',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','reject','update','then','error','name','send','index','map','rawAttributes','fieldName','key'];(function(_0x594867,_0x2ee5d3){var _0x9ac5b1=function(_0x4609ec){while(--_0x4609ec){_0x594867['push'](_0x594867['shift']());}};_0x9ac5b1(++_0x2ee5d3);}(_0x87f8,0x152));var _0x887f=function(_0x384ac3,_0x327f9){_0x384ac3=_0x384ac3-0x0;var _0x4cf673=_0x87f8[_0x384ac3];return _0x4cf673;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x887f('0x0'));var rp=require(_0x887f('0x1'));var moment=require('moment');var BPromise=require(_0x887f('0x2'));var Mustache=require('mustache');var util=require(_0x887f('0x3'));var path=require(_0x887f('0x4'));var sox=require(_0x887f('0x5'));var csv=require(_0x887f('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x887f('0x7'));var _=require(_0x887f('0x8'));var squel=require(_0x887f('0x9'));var crypto=require(_0x887f('0xa'));var jsforce=require(_0x887f('0xb'));var deskjs=require(_0x887f('0xc'));var toCsv=require(_0x887f('0x6'));var querystring=require('querystring');var Papa=require(_0x887f('0xd'));var Redis=require('ioredis');var authService=require(_0x887f('0xe'));var qs=require(_0x887f('0xf'));var as=require(_0x887f('0x10'));var hardwareService=require(_0x887f('0x11'));var logger=require('../../config/logger')(_0x887f('0x12'));var utils=require(_0x887f('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x887f('0x14'))['db'];var integrations=require(_0x887f('0x15'));function respondWithStatusCode(_0x32e050,_0x589e92){_0x589e92=_0x589e92||0xcc;return function(_0x259198){if(_0x259198){return _0x32e050[_0x887f('0x16')](_0x589e92);}return _0x32e050['status'](_0x589e92)[_0x887f('0x17')]();};}function respondWithResult(_0x58152e,_0x59b7ab){_0x59b7ab=_0x59b7ab||0xc8;return function(_0xabcefd){if(_0xabcefd){return _0x58152e[_0x887f('0x18')](_0x59b7ab)['json'](_0xabcefd);}};}function respondWithFilteredResult(_0x3f189a,_0xf69779){return function(_0x9f5d78){if(_0x9f5d78){var _0x486b46=typeof _0xf69779[_0x887f('0x19')]===_0x887f('0x1a')&&typeof _0xf69779['limit']===_0x887f('0x1a');var _0x618c59=_0x9f5d78[_0x887f('0x1b')];var _0x3d3b0c=_0x486b46?0x0:_0xf69779[_0x887f('0x19')];var _0x19a134=_0x486b46?_0x9f5d78[_0x887f('0x1b')]:_0xf69779[_0x887f('0x19')]+_0xf69779[_0x887f('0x1c')];var _0x3964d6;if(_0x19a134>=_0x618c59){_0x19a134=_0x618c59;_0x3964d6=0xc8;}else{_0x3964d6=0xce;}_0x3f189a[_0x887f('0x18')](_0x3964d6);return _0x3f189a[_0x887f('0x1d')](_0x887f('0x1e'),_0x3d3b0c+'-'+_0x19a134+'/'+_0x618c59)['json'](_0x9f5d78);}return null;};}function patchUpdates(_0x129106){return function(_0x3c96c5){try{jsonpatch['apply'](_0x3c96c5,_0x129106,!![]);}catch(_0x11479b){return BPromise[_0x887f('0x1f')](_0x11479b);}return _0x3c96c5['save']();};}function saveUpdates(_0xc09608,_0x56beaa){return function(_0x2234ca){if(_0x2234ca){return _0x2234ca[_0x887f('0x20')](_0xc09608)['then'](function(_0x338777){return _0x338777;});}return null;};}function removeEntity(_0x3af68e,_0x3d6948){return function(_0x9f7131){if(_0x9f7131){return _0x9f7131['destroy']()[_0x887f('0x21')](function(){_0x3af68e[_0x887f('0x18')](0xcc)[_0x887f('0x17')]();});}};}function handleEntityNotFound(_0x1a1657,_0x42c8bd){return function(_0x4fbf9a){if(!_0x4fbf9a){_0x1a1657[_0x887f('0x16')](0x194);}return _0x4fbf9a;};}function handleError(_0x7eef96,_0x108890){_0x108890=_0x108890||0x1f4;return function(_0x4f25b1){logger[_0x887f('0x22')](_0x4f25b1['stack']);if(_0x4f25b1['name']){delete _0x4f25b1[_0x887f('0x23')];}_0x7eef96[_0x887f('0x18')](_0x108890)[_0x887f('0x24')](_0x4f25b1);};}exports[_0x887f('0x25')]=function(_0x1c5ce3,_0x4e1fe1){var _0x59d489={},_0x4238e0={},_0xca31ec={'count':0x0,'rows':[]};var _0x286b0d=_[_0x887f('0x26')](db['Dynamics365Account'][_0x887f('0x27')],function(_0x555db0){return{'name':_0x555db0[_0x887f('0x28')],'type':_0x555db0['type'][_0x887f('0x29')]};});_0x4238e0[_0x887f('0x2a')]=_[_0x887f('0x26')](_0x286b0d,_0x887f('0x23'));_0x4238e0[_0x887f('0x2b')]=_[_0x887f('0x2c')](_0x1c5ce3[_0x887f('0x2b')]);_0x4238e0[_0x887f('0x2d')]=_['intersection'](_0x4238e0[_0x887f('0x2a')],_0x4238e0[_0x887f('0x2b')]);_0x59d489[_0x887f('0x2e')]=_[_0x887f('0x2f')](_0x4238e0[_0x887f('0x2a')],qs[_0x887f('0x30')](_0x1c5ce3['query'][_0x887f('0x30')]));_0x59d489[_0x887f('0x2e')]=_0x59d489[_0x887f('0x2e')][_0x887f('0x31')]?_0x59d489[_0x887f('0x2e')]:_0x4238e0['model'];if(!_0x1c5ce3[_0x887f('0x2b')][_0x887f('0x32')]('nolimit')){_0x59d489[_0x887f('0x1c')]=qs[_0x887f('0x1c')](_0x1c5ce3[_0x887f('0x2b')]['limit']);_0x59d489[_0x887f('0x19')]=qs[_0x887f('0x19')](_0x1c5ce3[_0x887f('0x2b')][_0x887f('0x19')]);}_0x59d489['order']=qs[_0x887f('0x33')](_0x1c5ce3[_0x887f('0x2b')]['sort']);_0x59d489['where']=qs[_0x887f('0x2d')](_[_0x887f('0x34')](_0x1c5ce3[_0x887f('0x2b')],_0x4238e0['filters']),_0x286b0d);if(_0x1c5ce3[_0x887f('0x2b')]['filter']){_0x59d489['where']=_[_0x887f('0x35')](_0x59d489[_0x887f('0x36')],{'$or':_[_0x887f('0x26')](_0x286b0d,function(_0x5e9782){if(_0x5e9782[_0x887f('0x37')]!==_0x887f('0x38')){var _0x2867e6={};_0x2867e6[_0x5e9782['name']]={'$like':'%'+_0x1c5ce3[_0x887f('0x2b')][_0x887f('0x39')]+'%'};return _0x2867e6;}})});}_0x59d489=_['merge']({},_0x59d489,_0x1c5ce3[_0x887f('0x3a')]);var _0x22d90d={'where':_0x59d489[_0x887f('0x36')]};return db[_0x887f('0x3b')][_0x887f('0x1b')](_0x22d90d)[_0x887f('0x21')](function(_0x5b59bd){_0xca31ec[_0x887f('0x1b')]=_0x5b59bd;if(_0x1c5ce3[_0x887f('0x2b')][_0x887f('0x3c')]){_0x59d489[_0x887f('0x3d')]=[{'all':!![]}];}return db[_0x887f('0x3b')][_0x887f('0x3e')](_0x59d489);})[_0x887f('0x21')](function(_0x5ae680){_0xca31ec[_0x887f('0x3f')]=_0x5ae680;return _0xca31ec;})[_0x887f('0x21')](respondWithFilteredResult(_0x4e1fe1,_0x59d489))[_0x887f('0x40')](handleError(_0x4e1fe1,null));};exports[_0x887f('0x41')]=function(_0x55e700,_0x134f2e){var _0x79cf46={'raw':![],'where':{'id':_0x55e700[_0x887f('0x42')]['id']}},_0x4c8cfd={};_0x4c8cfd['model']=_['keys'](db[_0x887f('0x3b')][_0x887f('0x27')]);_0x4c8cfd[_0x887f('0x2b')]=_[_0x887f('0x2c')](_0x55e700[_0x887f('0x2b')]);_0x4c8cfd[_0x887f('0x2d')]=_['intersection'](_0x4c8cfd[_0x887f('0x2a')],_0x4c8cfd[_0x887f('0x2b')]);_0x79cf46[_0x887f('0x2e')]=_[_0x887f('0x2f')](_0x4c8cfd[_0x887f('0x2a')],qs[_0x887f('0x30')](_0x55e700[_0x887f('0x2b')][_0x887f('0x30')]));_0x79cf46[_0x887f('0x2e')]=_0x79cf46[_0x887f('0x2e')]['length']?_0x79cf46[_0x887f('0x2e')]:_0x4c8cfd[_0x887f('0x2a')];if(_0x55e700[_0x887f('0x2b')]['includeAll']){_0x79cf46[_0x887f('0x3d')]=[{'all':!![]}];}_0x79cf46=_[_0x887f('0x35')]({},_0x79cf46,_0x55e700['options']);return db[_0x887f('0x3b')][_0x887f('0x43')](_0x79cf46)[_0x887f('0x21')](handleEntityNotFound(_0x134f2e,null))[_0x887f('0x21')](respondWithResult(_0x134f2e,null))[_0x887f('0x40')](handleError(_0x134f2e,null));};exports[_0x887f('0x44')]=function(_0x22b11f,_0x514e59){return db['Dynamics365Account'][_0x887f('0x44')](_0x22b11f[_0x887f('0x45')],{})['then'](respondWithResult(_0x514e59,0xc9))[_0x887f('0x40')](handleError(_0x514e59,null));};exports[_0x887f('0x20')]=function(_0x2bdd65,_0x26a960){if(_0x2bdd65[_0x887f('0x45')]['id']){delete _0x2bdd65[_0x887f('0x45')]['id'];}return db['Dynamics365Account']['find']({'where':{'id':_0x2bdd65[_0x887f('0x42')]['id']}})['then'](handleEntityNotFound(_0x26a960,null))[_0x887f('0x21')](saveUpdates(_0x2bdd65['body'],null))[_0x887f('0x21')](respondWithResult(_0x26a960,null))[_0x887f('0x40')](handleError(_0x26a960,null));};exports[_0x887f('0x46')]=function(_0x417c8d,_0x4138c2){return db['Dynamics365Account'][_0x887f('0x43')]({'where':{'id':_0x417c8d[_0x887f('0x42')]['id']}})[_0x887f('0x21')](handleEntityNotFound(_0x4138c2,null))[_0x887f('0x21')](removeEntity(_0x4138c2,null))[_0x887f('0x40')](handleError(_0x4138c2,null));};exports[_0x887f('0x47')]=function(_0x320f54,_0xfc352a,_0x4fbdfb){var _0x3c9506={};var _0x39c4f1={};var _0x1cd395;var _0xea296b;return db[_0x887f('0x3b')][_0x887f('0x48')]({'where':{'id':_0x320f54[_0x887f('0x42')]['id']}})[_0x887f('0x21')](handleEntityNotFound(_0xfc352a,null))['then'](function(_0x1a7560){if(_0x1a7560){_0x1cd395=_0x1a7560;_0x39c4f1['model']=_['keys'](db['Dynamics365Configuration']['rawAttributes']);_0x39c4f1['query']=_['keys'](_0x320f54['query']);_0x39c4f1[_0x887f('0x2d')]=_['intersection'](_0x39c4f1[_0x887f('0x2a')],_0x39c4f1[_0x887f('0x2b')]);_0x3c9506['attributes']=_['intersection'](_0x39c4f1['model'],qs[_0x887f('0x30')](_0x320f54[_0x887f('0x2b')][_0x887f('0x30')]));_0x3c9506['attributes']=_0x3c9506[_0x887f('0x2e')]['length']?_0x3c9506[_0x887f('0x2e')]:_0x39c4f1['model'];_0x3c9506[_0x887f('0x49')]=qs['sort'](_0x320f54[_0x887f('0x2b')]['sort']);_0x3c9506['where']=qs[_0x887f('0x2d')](_[_0x887f('0x34')](_0x320f54[_0x887f('0x2b')],_0x39c4f1['filters']));if(_0x320f54[_0x887f('0x2b')][_0x887f('0x39')]){_0x3c9506[_0x887f('0x36')]=_[_0x887f('0x35')](_0x3c9506[_0x887f('0x36')],{'$or':_[_0x887f('0x26')](_0x3c9506[_0x887f('0x2e')],function(_0x43db9c){var _0x172840={};_0x172840[_0x43db9c]={'$like':'%'+_0x320f54[_0x887f('0x2b')][_0x887f('0x39')]+'%'};return _0x172840;})});}_0x3c9506=_[_0x887f('0x35')]({},_0x3c9506,_0x320f54[_0x887f('0x3a')]);return _0x1cd395[_0x887f('0x47')](_0x3c9506);}})[_0x887f('0x21')](function(_0x495f5d){if(_0x495f5d){_0xea296b=_0x495f5d[_0x887f('0x31')];if(!_0x320f54[_0x887f('0x2b')][_0x887f('0x32')]('nolimit')){_0x3c9506['limit']=qs[_0x887f('0x1c')](_0x320f54[_0x887f('0x2b')][_0x887f('0x1c')]);_0x3c9506['offset']=qs[_0x887f('0x19')](_0x320f54[_0x887f('0x2b')][_0x887f('0x19')]);}return _0x1cd395[_0x887f('0x47')](_0x3c9506);}})[_0x887f('0x21')](function(_0x3cfce6){if(_0x3cfce6){return _0x3cfce6?{'count':_0xea296b,'rows':_0x3cfce6}:null;}})[_0x887f('0x21')](respondWithResult(_0xfc352a,null))['catch'](handleError(_0xfc352a,null));};exports[_0x887f('0x4a')]=function(_0x35f98f,_0xe157d1,_0x1f66ca){if(_0x35f98f['body']['id']){delete _0x35f98f[_0x887f('0x45')]['id'];}return db[_0x887f('0x3b')][_0x887f('0x48')]({'where':{'id':_0x35f98f[_0x887f('0x42')]['id']}})[_0x887f('0x21')](handleEntityNotFound(_0xe157d1,null))[_0x887f('0x21')](function(_0x36a8df){if(_0x36a8df){_0x35f98f['body'][_0x887f('0x4b')]=_0x36a8df['id'];_0x35f98f[_0x887f('0x45')]['Subjects']=integrations[_0x887f('0x4c')](_0x35f98f[_0x887f('0x45')][_0x887f('0x4d')],_0x35f98f[_0x887f('0x45')][_0x887f('0x37')]);_0x35f98f[_0x887f('0x45')]['Descriptions']=integrations[_0x887f('0x4e')](_0x35f98f[_0x887f('0x45')]['channel'],_0x35f98f['body'][_0x887f('0x37')]);return db[_0x887f('0x4f')]['create'](_0x35f98f['body'],{'include':[{'model':db[_0x887f('0x50')],'as':_0x887f('0x51')},{'model':db[_0x887f('0x50')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0xe157d1,null))[_0x887f('0x40')](handleError(_0xe157d1,null));};exports[_0x887f('0x52')]=function(_0x5a91f1,_0xf77802,_0xc376cc){var _0x5773a8=_0x5a91f1[_0x887f('0x2b')]['ticketType'];var _0x1ff973=_0x5773a8===_0x887f('0x53')?_0x887f('0x54'):'PhoneCall';var _0x231522='';var _0x3f03b7='';var _0x22a9e9='';var _0x13596f='';var _0x12dde3='';var _0x1fa578='';var _0x19d028='';var _0x72f49f='';var _0x49c2bd=[_0x887f('0x55'),_0x887f('0x56'),_0x887f('0x57'),_0x887f('0x58'),_0x887f('0x59'),_0x887f('0x5a'),_0x887f('0x5b'),_0x887f('0x5c'),'directioncode','phonecall_activity_parties'];var _0x3abf35=['accountidname',_0x887f('0x5d'),_0x887f('0x5e'),_0x887f('0x5f'),_0x887f('0x60'),_0x887f('0x61'),_0x887f('0x62'),'contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame',_0x887f('0x63'),'createdbyyominame','createdon',_0x887f('0x64'),'createdonbehalfbyyominame',_0x887f('0x65'),_0x887f('0x66'),'customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url',_0x887f('0x67'),_0x887f('0x68'),_0x887f('0x69'),'followupby',_0x887f('0x6a'),_0x887f('0x6b'),_0x887f('0x6c'),'lastonholdtime',_0x887f('0x6d'),'modifiedbyexternalpartyname',_0x887f('0x6e'),'modifiedbyname',_0x887f('0x6f'),_0x887f('0x70'),'modifiedonbehalfbyname',_0x887f('0x71'),_0x887f('0x72'),_0x887f('0x73'),_0x887f('0x74'),_0x887f('0x75'),_0x887f('0x76'),_0x887f('0x77'),_0x887f('0x78'),_0x887f('0x79'),_0x887f('0x7a'),'primarycontactidname',_0x887f('0x7b'),_0x887f('0x7c'),_0x887f('0x7d'),_0x887f('0x7e'),_0x887f('0x7f'),_0x887f('0x80'),'responseby',_0x887f('0x81'),'responsiblecontactidyominame',_0x887f('0x82'),_0x887f('0x83'),'slaname',_0x887f('0x84'),_0x887f('0x85'),_0x887f('0x86'),'subjectidname','ticketnumber',_0x887f('0x87'),'transactioncurrencyidname',_0x887f('0x88'),_0x887f('0x89'),_0x887f('0x8a')];var _0x173ab6=_0x49c2bd[_0x887f('0x8b')](_0x3abf35);return db[_0x887f('0x3b')]['findOne']({'where':{'id':_0x5a91f1[_0x887f('0x42')]['id']},'attributes':['id',_0x887f('0x8c'),'password','remoteUri',_0x887f('0x8d'),_0x887f('0x8e'),_0x887f('0x8f')]})[_0x887f('0x21')](handleEntityNotFound(_0xf77802,null))['then'](function(_0x3c326f){if(_0x3c326f){_0x72f49f=_0x3c326f[_0x887f('0x90')];var _0x59d1fc=_0x72f49f['slice'](-0x1);if(_0x59d1fc==='/'){_0x72f49f=_0x72f49f['substring'](0x0,_0x72f49f['lastIndexOf'](_0x59d1fc));}_0x19d028=util[_0x887f('0x91')]('%s/api/data/v9.0/',_0x72f49f);var _0x5bf1d7={'method':_0x887f('0x92'),'uri':_0x887f('0x93')+_0x3c326f['tenantId']+_0x887f('0x94'),'form':{'client_id':_0x3c326f[_0x887f('0x8e')],'resource':_0x72f49f,'username':_0x3c326f[_0x887f('0x8c')],'password':_0x3c326f[_0x887f('0x95')],'grant_type':_0x887f('0x95'),'client_secret':_0x3c326f[_0x887f('0x8f')]},'json':!![]};return rp(_0x5bf1d7);}})[_0x887f('0x21')](function(_0x34deea){_0x1fa578=_0x34deea[_0x887f('0x96')];var _0x1a20a4={'method':'GET','uri':encodeURI(_0x19d028+_0x887f('0x97')+_0x1ff973+'\x27'),'headers':{'Authorization':_0x887f('0x98')+_0x1fa578,'If-None-Match':null,'OData-Version':_0x887f('0x99')},'json':!![]};return rp(_0x1a20a4);})[_0x887f('0x21')](function(_0x597bcb){var _0x4464d1=_0x597bcb[_0x887f('0x9a')][0x0];var _0x51abab=_0x4464d1[_0x887f('0x9b')];var _0x2fb5bb={'method':_0x887f('0x9c'),'uri':_0x19d028+'EntityDefinitions('+_0x51abab+_0x887f('0x9d'),'headers':{'Authorization':'Bearer\x20'+_0x1fa578,'If-None-Match':null,'OData-Version':_0x887f('0x99')},'json':!![]};return rp(_0x2fb5bb);})[_0x887f('0x21')](function(_0x1d8109){_0x231522=_0x1d8109;_0x3f03b7=_0x231522[_0x887f('0x9e')];_0x3f03b7=_[_0x887f('0x9f')](_0x3f03b7,function(_0x1c9553){return!_0x173ab6[_0x887f('0xa0')](_0x1c9553[_0x887f('0xa1')]);});var _0x56bfd7=[];var _0x5eb8c6=[];_0x3f03b7['forEach'](function(_0x1e7d76){if(_0x1e7d76['@odata.type']){var _0x5d046c=_0x1e7d76[_0x887f('0xa2')][_0x887f('0xa3')](_0x1e7d76[_0x887f('0xa2')][_0x887f('0xa4')]('.')+0x1);if(_0x5d046c===_0x887f('0xa5')){_0x56bfd7[_0x887f('0xa6')](getSelectList(_0x19d028,_0x5773a8,_0x5eb8c6,_0x231522[_0x887f('0x9b')],_0x1e7d76[_0x887f('0x9b')],_0x1fa578));}}});return Promise['all'](_0x56bfd7);})['then'](function(_0x58232b){_0x22a9e9=_0x58232b[0x0];var _0x1c489f=[];var _0x3ab267=[];_0x3f03b7[_0x887f('0xa7')](function(_0x337fba){if(!_['isNil'](_0x337fba[_0x887f('0xa2')])){var _0x1df446=_0x337fba['@odata.type'][_0x887f('0xa3')](_0x337fba[_0x887f('0xa2')][_0x887f('0xa4')]('.')+0x1);if(_0x1df446==='BooleanAttributeMetadata'){_0x1c489f[_0x887f('0xa6')](getBooleanList(_0x19d028,_0x5773a8,_0x3ab267,_0x231522[_0x887f('0x9b')],_0x337fba[_0x887f('0x9b')],_0x1fa578));}}});return Promise[_0x887f('0xa8')](_0x1c489f);})[_0x887f('0x21')](function(_0x5aa8a0){_0x13596f=_0x5aa8a0[0x0];var _0x698520=[];var _0x30e62e=[];_0x3f03b7[_0x887f('0xa7')](function(_0x1b5e14){if(_0x1b5e14[_0x887f('0xa2')]){var _0x707e97=_0x1b5e14[_0x887f('0xa2')]['substring'](_0x1b5e14['@odata.type']['lastIndexOf']('.')+0x1);if(_0x707e97===_0x887f('0xa9')||_0x707e97==='DoubleAttributeMetadata'||_0x707e97===_0x887f('0xaa')||_0x707e97===_0x887f('0xab')||_0x707e97===_0x887f('0xac')||_0x707e97==='DateTimeAttributeMetadata'||_0x707e97===_0x887f('0xad')||_0x707e97===_0x887f('0xae')||_0x707e97===_0x887f('0xaf')||_0x707e97===_0x887f('0xb0')){_0x698520[_0x887f('0xa6')](getInputList(_0x19d028,_0x5773a8,_0x707e97,_0x30e62e,_0x231522['MetadataId'],_0x1b5e14[_0x887f('0x9b')],_0x1fa578));}}});return Promise[_0x887f('0xa8')](_0x698520);})[_0x887f('0x21')](function(_0x595de2){_0x12dde3=_0x595de2[0x0];var _0x1851d6=_0x22a9e9[_0x887f('0x8b')](_0x13596f)[_0x887f('0x8b')](_0x12dde3);var _0x244a66={'count':_0x1851d6[_0x887f('0x31')],'rows':_0x1851d6};return _0x244a66;})['then'](respondWithResult(_0xf77802,null))[_0x887f('0x40')](function(_0x5ac951){var _0x1daf1d=_0x5a91f1['query'][_0x887f('0xb1')]?0x1f4:_0x5ac951['statusCode']||0x1f4;logger[_0x887f('0x22')](_0x5ac951['stack']);delete _0x5ac951[_0x887f('0x23')];if(_0x1daf1d===0x191){_0x1daf1d=0x190;}_0xf77802[_0x887f('0x18')](_0x1daf1d)[_0x887f('0x24')](_0x5a91f1['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x5ac951['statusCode']}:_0x5ac951);});};function getSelectList(_0x234d80,_0x4f7d9c,_0x5dcb52,_0xa4e75a,_0x3cb13d,_0x309bdb){var _0x4dc65b={'method':_0x887f('0x9c'),'uri':_0x234d80+_0x887f('0xb2')+_0xa4e75a+_0x887f('0xb3')+_0x3cb13d+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x887f('0xb4'),'headers':{'Authorization':'Bearer\x20'+_0x309bdb,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4dc65b)[_0x887f('0x21')](function(_0x25905e){var _0x47c043=[];var _0xaeae2c=_0x25905e['OptionSet'][_0x887f('0xb5')];_0xaeae2c['forEach'](function(_0x5e0cf8){_0x47c043[_0x887f('0xa6')]({'name':_0x5e0cf8[_0x887f('0xb6')][_0x887f('0xb7')]['Label'],'value':String(_0x5e0cf8['Value'])});});var _0x11b579={'id':_0x4f7d9c+'_'+_0x25905e['LogicalName'],'name':_0x25905e[_0x887f('0xb8')]['UserLocalizedLabel']['Label'],'custom':![],'options':_0x47c043};_0x5dcb52['push'](_0x11b579);return _0x5dcb52;});}function getBooleanList(_0x4ad359,_0x3bd0dc,_0x29f385,_0x43bcc8,_0x323ef2,_0x47ed3a){var _0x186cff={'method':_0x887f('0x9c'),'uri':_0x4ad359+'EntityDefinitions('+_0x43bcc8+')/Attributes('+_0x323ef2+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':'Bearer\x20'+_0x47ed3a,'If-None-Match':null,'OData-Version':_0x887f('0x99')},'json':!![]};return rp(_0x186cff)['then'](function(_0x430786){var _0x24d106=[];_0x24d106[_0x887f('0xa6')]({'name':_0x430786[_0x887f('0xb9')][_0x887f('0xba')][_0x887f('0xb6')][_0x887f('0xb7')][_0x887f('0xb6')],'value':'true'},{'name':_0x430786[_0x887f('0xb9')][_0x887f('0xbb')][_0x887f('0xb6')]['UserLocalizedLabel'][_0x887f('0xb6')],'value':'false'});var _0x1a82a6={'id':_0x3bd0dc+'_'+_0x430786[_0x887f('0xa1')],'name':_0x430786[_0x887f('0xb8')][_0x887f('0xb7')]['Label'],'custom':![],'options':_0x24d106};_0x29f385[_0x887f('0xa6')](_0x1a82a6);return _0x29f385;});}function getInputList(_0xc722d3,_0xb81cbe,_0xe7f623,_0x4dfaee,_0x38de69,_0x58a150,_0x2bcce9){var _0x2c5103={'method':_0x887f('0x9c'),'uri':_0xc722d3+'EntityDefinitions('+_0x38de69+')/Attributes('+_0x58a150+_0x887f('0xbc')+_0xe7f623+_0x887f('0xbd'),'headers':{'Authorization':_0x887f('0x98')+_0x2bcce9,'If-None-Match':null,'OData-Version':_0x887f('0x99')},'json':!![]};return rp(_0x2c5103)[_0x887f('0x21')](function(_0x5091ca){var _0x55277a={'id':_0xb81cbe+'_'+_0x5091ca[_0x887f('0xa1')],'name':_0x5091ca['DisplayName'][_0x887f('0xb7')]?_0x5091ca[_0x887f('0xb8')][_0x887f('0xb7')][_0x887f('0xb6')]:_0x5091ca[_0x887f('0xa1')],'custom':![],'options':[]};_0x4dfaee['push'](_0x55277a);return _0x4dfaee;});}
\ No newline at end of file
index 261c9e4..351c38e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','util'];(function(_0x3b9ca2,_0x4a23af){var _0x34fdbf=function(_0x5cc228){while(--_0x5cc228){_0x3b9ca2['push'](_0x3b9ca2['shift']());}};_0x34fdbf(++_0x4a23af);}(_0xbaf0,0x12a));var _0x0baf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xbaf0[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));var integrations=require(_0x0baf('0x9'));module[_0x0baf('0xa')]=function(_0x335e24,_0x1a10b1){return _0x335e24[_0x0baf('0xb')](_0x0baf('0xc'),attributes,{'tableName':'int_dynamics365_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x5e59bc,_0x5418f8){var _0x3c47fa=function(_0x1e87e0){while(--_0x1e87e0){_0x5e59bc['push'](_0x5e59bc['shift']());}};_0x3c47fa(++_0x5418f8);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4409e7,_0x307f17){_0x4409e7=_0x4409e7-0x0;var _0x24c751=_0xcb91[_0x4409e7];return _0x24c751;};'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
index 7bd26c6..55372f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f36=['attributes','limit','include','map','model','ShowDynamics365Account','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x0f36,0x9b));var _0x60f3=function(_0x32cc05,_0x106d41){_0x32cc05=_0x32cc05-0x0;var _0x445e74=_0x0f36[_0x32cc05];return _0x445e74;};'use strict';var _=require(_0x60f3('0x0'));var util=require(_0x60f3('0x1'));var moment=require(_0x60f3('0x2'));var BPromise=require(_0x60f3('0x3'));var rs=require(_0x60f3('0x4'));var fs=require('fs');var Redis=require(_0x60f3('0x5'));var db=require(_0x60f3('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x60f3('0x7'))(_0x60f3('0x8'));var config=require('../../config/environment');var jayson=require(_0x60f3('0x9'));var client=jayson[_0x60f3('0xa')][_0x60f3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51c2cd,_0x289e4e,_0x3ef45f){return new BPromise(function(_0x9b9241,_0xbb107e){return client[_0x60f3('0xc')](_0x51c2cd,_0x3ef45f)[_0x60f3('0xd')](function(_0x1a27eb){logger['info'](_0x60f3('0xe'),_0x289e4e,_0x60f3('0xf'));logger[_0x60f3('0x10')](_0x60f3('0x11'),_0x289e4e,'request\x20sent',JSON[_0x60f3('0x12')](_0x1a27eb));if(_0x1a27eb[_0x60f3('0x13')]){if(_0x1a27eb[_0x60f3('0x13')][_0x60f3('0x14')]===0x1f4){logger[_0x60f3('0x13')](_0x60f3('0xe'),_0x289e4e,_0x1a27eb['error'][_0x60f3('0x15')]);return _0xbb107e(_0x1a27eb[_0x60f3('0x13')]['message']);}logger[_0x60f3('0x13')](_0x60f3('0xe'),_0x289e4e,_0x1a27eb[_0x60f3('0x13')][_0x60f3('0x15')]);return _0x9b9241(_0x1a27eb[_0x60f3('0x13')][_0x60f3('0x15')]);}else{logger[_0x60f3('0x16')](_0x60f3('0xe'),_0x289e4e,_0x60f3('0xf'));_0x9b9241(_0x1a27eb['result'][_0x60f3('0x15')]);}})[_0x60f3('0x17')](function(_0x33cda7){logger[_0x60f3('0x13')](_0x60f3('0xe'),_0x289e4e,_0x33cda7);_0xbb107e(_0x33cda7);});});}exports[_0x60f3('0x18')]=function(_0x34e51){var _0x5de983=this;return new Promise(function(_0x2f0a68,_0x5e048a){return db[_0x60f3('0x19')][_0x60f3('0x1a')]({'raw':_0x34e51[_0x60f3('0x1b')]?_0x34e51[_0x60f3('0x1b')][_0x60f3('0x1c')]===undefined?!![]:![]:!![],'where':_0x34e51[_0x60f3('0x1b')]?_0x34e51[_0x60f3('0x1b')][_0x60f3('0x1d')]||null:null,'attributes':_0x34e51[_0x60f3('0x1b')]?_0x34e51['options'][_0x60f3('0x1e')]||null:null,'limit':_0x34e51[_0x60f3('0x1b')]?_0x34e51[_0x60f3('0x1b')][_0x60f3('0x1f')]||null:null,'include':_0x34e51[_0x60f3('0x1b')]?_0x34e51['options'][_0x60f3('0x20')]?_[_0x60f3('0x21')](_0x34e51['options'][_0x60f3('0x20')],function(_0x10a00c){return{'model':db[_0x10a00c[_0x60f3('0x22')]],'as':_0x10a00c['as'],'attributes':_0x10a00c[_0x60f3('0x1e')],'include':_0x10a00c[_0x60f3('0x20')]?_[_0x60f3('0x21')](_0x10a00c[_0x60f3('0x20')],function(_0x44c5f2){return{'model':db[_0x44c5f2[_0x60f3('0x22')]],'as':_0x44c5f2['as'],'attributes':_0x44c5f2[_0x60f3('0x1e')],'include':_0x44c5f2['include']?_[_0x60f3('0x21')](_0x44c5f2['include'],function(_0x15d299){return{'model':db[_0x15d299[_0x60f3('0x22')]],'as':_0x15d299['as'],'attributes':_0x15d299['attributes']};}):[]};}):[]};}):[]:[]})[_0x60f3('0xd')](function(_0x368f67){logger[_0x60f3('0x16')]('GetDynamics365Account',_0x34e51);logger[_0x60f3('0x10')](_0x60f3('0x18'),_0x34e51,JSON['stringify'](_0x368f67));_0x2f0a68(_0x368f67);})[_0x60f3('0x17')](function(_0x46af38){logger[_0x60f3('0x13')](_0x60f3('0x18'),_0x46af38[_0x60f3('0x15')],_0x34e51);_0x5e048a(_0x5de983[_0x60f3('0x13')](0x1f4,_0x46af38[_0x60f3('0x15')]));});});};exports[_0x60f3('0x23')]=function(_0x245572){var _0x5a6f56=this;return new Promise(function(_0x30a034,_0x2a6db2){return db['Dynamics365Account'][_0x60f3('0x24')]({'raw':_0x245572[_0x60f3('0x1b')]?_0x245572[_0x60f3('0x1b')][_0x60f3('0x1c')]===undefined?!![]:![]:!![],'where':_0x245572[_0x60f3('0x1b')]?_0x245572[_0x60f3('0x1b')]['where']||null:null,'attributes':_0x245572[_0x60f3('0x1b')]?_0x245572[_0x60f3('0x1b')][_0x60f3('0x1e')]||null:null,'include':_0x245572[_0x60f3('0x1b')]?_0x245572['options'][_0x60f3('0x20')]?_[_0x60f3('0x21')](_0x245572[_0x60f3('0x1b')][_0x60f3('0x20')],function(_0x90021c){return{'model':db[_0x90021c['model']],'as':_0x90021c['as'],'attributes':_0x90021c[_0x60f3('0x1e')],'include':_0x90021c[_0x60f3('0x20')]?_[_0x60f3('0x21')](_0x90021c[_0x60f3('0x20')],function(_0x5389c1){return{'model':db[_0x5389c1[_0x60f3('0x22')]],'as':_0x5389c1['as'],'attributes':_0x5389c1['attributes'],'include':_0x5389c1[_0x60f3('0x20')]?_[_0x60f3('0x21')](_0x5389c1[_0x60f3('0x20')],function(_0x2f9f64){return{'model':db[_0x2f9f64[_0x60f3('0x22')]],'as':_0x2f9f64['as'],'attributes':_0x2f9f64[_0x60f3('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x60f3('0xd')](function(_0xb08a37){logger[_0x60f3('0x16')](_0x60f3('0x23'),_0x245572);logger[_0x60f3('0x10')](_0x60f3('0x23'),_0x245572,JSON[_0x60f3('0x12')](_0xb08a37));_0x30a034(_0xb08a37);})[_0x60f3('0x17')](function(_0x1e6911){logger['error'](_0x60f3('0x23'),_0x1e6911[_0x60f3('0x15')],_0x245572);_0x2a6db2(_0x5a6f56[_0x60f3('0x13')](0x1f4,_0x1e6911[_0x60f3('0x15')]));});});};
\ No newline at end of file
+var _0xab5e=['client','http','request','then','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','code','message','options','where','limit','map','include','model','attributes','stringify','catch','GetDynamics365Account','ShowDynamics365Account','find','raw','info','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xab5e,0x16d));var _0xeab5=function(_0x36e8c5,_0x287662){_0x36e8c5=_0x36e8c5-0x0;var _0x230ccc=_0xab5e[_0x36e8c5];return _0x230ccc;};'use strict';var _=require(_0xeab5('0x0'));var util=require(_0xeab5('0x1'));var moment=require(_0xeab5('0x2'));var BPromise=require(_0xeab5('0x3'));var rs=require(_0xeab5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xeab5('0x5'))(_0xeab5('0x6'));var config=require(_0xeab5('0x7'));var jayson=require(_0xeab5('0x8'));var client=jayson[_0xeab5('0x9')][_0xeab5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x37a56f,_0x5b2b1d,_0x4c3190){return new BPromise(function(_0x304bdf,_0x3c256b){return client[_0xeab5('0xb')](_0x37a56f,_0x4c3190)[_0xeab5('0xc')](function(_0x945e66){logger['info'](_0xeab5('0xd'),_0x5b2b1d,_0xeab5('0xe'));logger[_0xeab5('0xf')](_0xeab5('0x10'),_0x5b2b1d,'request\x20sent',JSON['stringify'](_0x945e66));if(_0x945e66[_0xeab5('0x11')]){if(_0x945e66['error'][_0xeab5('0x12')]===0x1f4){logger[_0xeab5('0x11')]('Dynamics365Account,\x20%s,\x20%s',_0x5b2b1d,_0x945e66['error'][_0xeab5('0x13')]);return _0x3c256b(_0x945e66[_0xeab5('0x11')]['message']);}logger[_0xeab5('0x11')](_0xeab5('0xd'),_0x5b2b1d,_0x945e66[_0xeab5('0x11')]['message']);return _0x304bdf(_0x945e66['error'][_0xeab5('0x13')]);}else{logger['info']('Dynamics365Account,\x20%s,\x20%s',_0x5b2b1d,_0xeab5('0xe'));_0x304bdf(_0x945e66['result'][_0xeab5('0x13')]);}})['catch'](function(_0x2fb279){logger[_0xeab5('0x11')](_0xeab5('0xd'),_0x5b2b1d,_0x2fb279);_0x3c256b(_0x2fb279);});});}exports['GetDynamics365Account']=function(_0x2d5a62){var _0x3a4393=this;return new Promise(function(_0x2b4dad,_0x5cf83d){return db['Dynamics365Account']['findAll']({'raw':_0x2d5a62['options']?_0x2d5a62['options']['raw']===undefined?!![]:![]:!![],'where':_0x2d5a62['options']?_0x2d5a62[_0xeab5('0x14')][_0xeab5('0x15')]||null:null,'attributes':_0x2d5a62[_0xeab5('0x14')]?_0x2d5a62[_0xeab5('0x14')]['attributes']||null:null,'limit':_0x2d5a62[_0xeab5('0x14')]?_0x2d5a62['options'][_0xeab5('0x16')]||null:null,'include':_0x2d5a62['options']?_0x2d5a62[_0xeab5('0x14')]['include']?_[_0xeab5('0x17')](_0x2d5a62[_0xeab5('0x14')][_0xeab5('0x18')],function(_0x2b2afe){return{'model':db[_0x2b2afe[_0xeab5('0x19')]],'as':_0x2b2afe['as'],'attributes':_0x2b2afe['attributes'],'include':_0x2b2afe[_0xeab5('0x18')]?_[_0xeab5('0x17')](_0x2b2afe[_0xeab5('0x18')],function(_0x5e26b2){return{'model':db[_0x5e26b2['model']],'as':_0x5e26b2['as'],'attributes':_0x5e26b2[_0xeab5('0x1a')],'include':_0x5e26b2[_0xeab5('0x18')]?_[_0xeab5('0x17')](_0x5e26b2[_0xeab5('0x18')],function(_0x431d3d){return{'model':db[_0x431d3d[_0xeab5('0x19')]],'as':_0x431d3d['as'],'attributes':_0x431d3d[_0xeab5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xeab5('0xc')](function(_0x59e318){logger['info']('GetDynamics365Account',_0x2d5a62);logger[_0xeab5('0xf')]('GetDynamics365Account',_0x2d5a62,JSON[_0xeab5('0x1b')](_0x59e318));_0x2b4dad(_0x59e318);})[_0xeab5('0x1c')](function(_0x56ec52){logger[_0xeab5('0x11')](_0xeab5('0x1d'),_0x56ec52[_0xeab5('0x13')],_0x2d5a62);_0x5cf83d(_0x3a4393[_0xeab5('0x11')](0x1f4,_0x56ec52['message']));});});};exports[_0xeab5('0x1e')]=function(_0x5f49ee){var _0x5a0fd0=this;return new Promise(function(_0x2af581,_0x516c65){return db['Dynamics365Account'][_0xeab5('0x1f')]({'raw':_0x5f49ee[_0xeab5('0x14')]?_0x5f49ee[_0xeab5('0x14')][_0xeab5('0x20')]===undefined?!![]:![]:!![],'where':_0x5f49ee[_0xeab5('0x14')]?_0x5f49ee[_0xeab5('0x14')][_0xeab5('0x15')]||null:null,'attributes':_0x5f49ee['options']?_0x5f49ee[_0xeab5('0x14')]['attributes']||null:null,'include':_0x5f49ee[_0xeab5('0x14')]?_0x5f49ee['options'][_0xeab5('0x18')]?_['map'](_0x5f49ee[_0xeab5('0x14')]['include'],function(_0x5dcc71){return{'model':db[_0x5dcc71[_0xeab5('0x19')]],'as':_0x5dcc71['as'],'attributes':_0x5dcc71[_0xeab5('0x1a')],'include':_0x5dcc71[_0xeab5('0x18')]?_['map'](_0x5dcc71['include'],function(_0x3d59e5){return{'model':db[_0x3d59e5[_0xeab5('0x19')]],'as':_0x3d59e5['as'],'attributes':_0x3d59e5['attributes'],'include':_0x3d59e5[_0xeab5('0x18')]?_[_0xeab5('0x17')](_0x3d59e5['include'],function(_0x3c2864){return{'model':db[_0x3c2864['model']],'as':_0x3c2864['as'],'attributes':_0x3c2864[_0xeab5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xeab5('0xc')](function(_0x12e0d){logger[_0xeab5('0x21')](_0xeab5('0x1e'),_0x5f49ee);logger[_0xeab5('0xf')]('ShowDynamics365Account',_0x5f49ee,JSON[_0xeab5('0x1b')](_0x12e0d));_0x2af581(_0x12e0d);})[_0xeab5('0x1c')](function(_0x5330df){logger[_0xeab5('0x11')]('ShowDynamics365Account',_0x5330df[_0xeab5('0x13')],_0x5f49ee);_0x516c65(_0x5a0fd0[_0xeab5('0x11')](0x1f4,_0x5330df['message']));});});};
\ No newline at end of file
index 3397edb..70949ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3939=['getSubjects','getDescriptions','create','put','delete','destroy','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects'];(function(_0x41cec7,_0x2e1f4a){var _0x5ed26a=function(_0x447ad7){while(--_0x447ad7){_0x41cec7['push'](_0x41cec7['shift']());}};_0x5ed26a(++_0x2e1f4a);}(_0x3939,0x1aa));var _0x9393=function(_0x2388a9,_0x4d8889){_0x2388a9=_0x2388a9-0x0;var _0x1bccc6=_0x3939[_0x2388a9];return _0x1bccc6;};'use strict';var multer=require('multer');var util=require(_0x9393('0x0'));var path=require(_0x9393('0x1'));var timeout=require(_0x9393('0x2'));var express=require(_0x9393('0x3'));var router=express[_0x9393('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9393('0x5'));var config=require(_0x9393('0x6'));var controller=require('./intDynamics365Configuration.controller');router[_0x9393('0x7')]('/',auth[_0x9393('0x8')](),controller['index']);router['get'](_0x9393('0x9'),auth[_0x9393('0x8')](),controller[_0x9393('0xa')]);router[_0x9393('0x7')](_0x9393('0xb'),auth['isAuthenticated'](),controller[_0x9393('0xc')]);router[_0x9393('0x7')](_0x9393('0xd'),auth[_0x9393('0x8')](),controller[_0x9393('0xe')]);router[_0x9393('0x7')]('/:id/descriptions',auth[_0x9393('0x8')](),controller[_0x9393('0xf')]);router['post']('/',auth[_0x9393('0x8')](),controller[_0x9393('0x10')]);router[_0x9393('0x11')](_0x9393('0x9'),auth[_0x9393('0x8')](),controller['update']);router[_0x9393('0x12')](_0x9393('0x9'),auth[_0x9393('0x8')](),controller[_0x9393('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xa97d=['update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','create','put'];(function(_0x96aed7,_0x2432cb){var _0x4d5678=function(_0x2f4b23){while(--_0x2f4b23){_0x96aed7['push'](_0x96aed7['shift']());}};_0x4d5678(++_0x2432cb);}(_0xa97d,0x88));var _0xda97=function(_0x16c619,_0x6cac5){_0x16c619=_0x16c619-0x0;var _0x87d66c=_0xa97d[_0x16c619];return _0x87d66c;};'use strict';var multer=require(_0xda97('0x0'));var util=require(_0xda97('0x1'));var path=require(_0xda97('0x2'));var timeout=require(_0xda97('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xda97('0x4'));var auth=require(_0xda97('0x5'));var interaction=require(_0xda97('0x6'));var config=require('../../config/environment');var controller=require('./intDynamics365Configuration.controller');router[_0xda97('0x7')]('/',auth['isAuthenticated'](),controller[_0xda97('0x8')]);router[_0xda97('0x7')](_0xda97('0x9'),auth[_0xda97('0xa')](),controller[_0xda97('0xb')]);router[_0xda97('0x7')](_0xda97('0xc'),auth[_0xda97('0xa')](),controller[_0xda97('0xd')]);router[_0xda97('0x7')](_0xda97('0xe'),auth[_0xda97('0xa')](),controller[_0xda97('0xf')]);router[_0xda97('0x7')]('/:id/descriptions',auth[_0xda97('0xa')](),controller['getDescriptions']);router['post']('/',auth['isAuthenticated'](),controller[_0xda97('0x10')]);router[_0xda97('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xda97('0x12')]);router[_0xda97('0x13')]('/:id',auth[_0xda97('0xa')](),controller[_0xda97('0x14')]);module[_0xda97('0x15')]=router;
\ No newline at end of file
index 9215ca0..d164fda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85f4=['phonecall','STRING','ENUM','incident'];(function(_0x5c03b6,_0x10d437){var _0x553bb5=function(_0x5a9e19){while(--_0x5a9e19){_0x5c03b6['push'](_0x5c03b6['shift']());}};_0x553bb5(++_0x10d437);}(_0x85f4,0x9d));var _0x485f=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x85f4[_0x33032e];return _0x13316b;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x485f('0x0')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x485f('0x1')](_0x485f('0x2'),_0x485f('0x3')),'defaultValue':'incident'}};
\ No newline at end of file
+var _0x9eac=['ENUM','exports','STRING'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x9eac,0x181));var _0xc9ea=function(_0x20ef64,_0x4a8fe9){_0x20ef64=_0x20ef64-0x0;var _0x3707d8=_0x9eac[_0x20ef64];return _0x3707d8;};'use strict';var Sequelize=require('sequelize');module[_0xc9ea('0x0')]={'name':{'type':Sequelize[_0xc9ea('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xc9ea('0x2')]('incident','phonecall'),'defaultValue':'incident'}};
\ No newline at end of file
index 751663e..fd135e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe66a=['catch','show','params','rawAttributes','intersection','include','find','create','body','getFields','findOne','Dynamics365Field','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','apply','reject','then','destroy','error','name','Dynamics365Configuration','fieldName','type','model','map','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows'];(function(_0x1f36bb,_0x8af718){var _0xaf97fa=function(_0xeca489){while(--_0xeca489){_0x1f36bb['push'](_0x1f36bb['shift']());}};_0xaf97fa(++_0x8af718);}(_0xe66a,0x136));var _0xae66=function(_0x12f42c,_0x19e745){_0x12f42c=_0x12f42c-0x0;var _0x48b922=_0xe66a[_0x12f42c];return _0x48b922;};'use strict';var emlformat=require(_0xae66('0x0'));var rimraf=require(_0xae66('0x1'));var zipdir=require(_0xae66('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xae66('0x3'));var moment=require(_0xae66('0x4'));var BPromise=require(_0xae66('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xae66('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xae66('0x7'));var _=require(_0xae66('0x8'));var squel=require(_0xae66('0x9'));var crypto=require(_0xae66('0xa'));var jsforce=require(_0xae66('0xb'));var deskjs=require(_0xae66('0xc'));var toCsv=require(_0xae66('0xd'));var querystring=require(_0xae66('0xe'));var Papa=require('papaparse');var Redis=require(_0xae66('0xf'));var authService=require(_0xae66('0x10'));var qs=require(_0xae66('0x11'));var as=require(_0xae66('0x12'));var hardwareService=require(_0xae66('0x13'));var logger=require(_0xae66('0x14'))(_0xae66('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xae66('0x16'))['db'];function respondWithStatusCode(_0x5c9b59,_0x3b0628){_0x3b0628=_0x3b0628||0xcc;return function(_0x205c0b){if(_0x205c0b){return _0x5c9b59[_0xae66('0x17')](_0x3b0628);}return _0x5c9b59['status'](_0x3b0628)[_0xae66('0x18')]();};}function respondWithResult(_0x3232cf,_0x293250){_0x293250=_0x293250||0xc8;return function(_0x8e5cd5){if(_0x8e5cd5){return _0x3232cf[_0xae66('0x19')](_0x293250)['json'](_0x8e5cd5);}};}function respondWithFilteredResult(_0x3bfe6b,_0x3dc526){return function(_0x5a3888){if(_0x5a3888){var _0x70b0c9=typeof _0x3dc526[_0xae66('0x1a')]===_0xae66('0x1b')&&typeof _0x3dc526[_0xae66('0x1c')]==='undefined';var _0x1880a6=_0x5a3888[_0xae66('0x1d')];var _0x179344=_0x70b0c9?0x0:_0x3dc526['offset'];var _0x6f9e1e=_0x70b0c9?_0x5a3888[_0xae66('0x1d')]:_0x3dc526[_0xae66('0x1a')]+_0x3dc526['limit'];var _0x41db53;if(_0x6f9e1e>=_0x1880a6){_0x6f9e1e=_0x1880a6;_0x41db53=0xc8;}else{_0x41db53=0xce;}_0x3bfe6b[_0xae66('0x19')](_0x41db53);return _0x3bfe6b[_0xae66('0x1e')]('Content-Range',_0x179344+'-'+_0x6f9e1e+'/'+_0x1880a6)['json'](_0x5a3888);}return null;};}function patchUpdates(_0x5e66fb){return function(_0x165bdf){try{jsonpatch[_0xae66('0x1f')](_0x165bdf,_0x5e66fb,!![]);}catch(_0x556f15){return BPromise[_0xae66('0x20')](_0x556f15);}return _0x165bdf['save']();};}function saveUpdates(_0x2667b7,_0x5938eb){return function(_0x5be37d){if(_0x5be37d){return _0x5be37d['update'](_0x2667b7)[_0xae66('0x21')](function(_0x5afe23){return _0x5afe23;});}return null;};}function removeEntity(_0x414b8b,_0x3b7658){return function(_0x3a48a5){if(_0x3a48a5){return _0x3a48a5[_0xae66('0x22')]()['then'](function(){_0x414b8b['status'](0xcc)[_0xae66('0x18')]();});}};}function handleEntityNotFound(_0x3ee264,_0x117e09){return function(_0x11a5a1){if(!_0x11a5a1){_0x3ee264[_0xae66('0x17')](0x194);}return _0x11a5a1;};}function handleError(_0x51c24d,_0x26fafe){_0x26fafe=_0x26fafe||0x1f4;return function(_0xb55c5f){logger[_0xae66('0x23')](_0xb55c5f['stack']);if(_0xb55c5f[_0xae66('0x24')]){delete _0xb55c5f[_0xae66('0x24')];}_0x51c24d[_0xae66('0x19')](_0x26fafe)['send'](_0xb55c5f);};}exports['index']=function(_0x50dd92,_0x538aa4){var _0xb1c3ed={},_0x3d01f2={},_0x35e4db={'count':0x0,'rows':[]};var _0x11c776=_['map'](db[_0xae66('0x25')]['rawAttributes'],function(_0x1a3663){return{'name':_0x1a3663[_0xae66('0x26')],'type':_0x1a3663[_0xae66('0x27')]['key']};});_0x3d01f2[_0xae66('0x28')]=_[_0xae66('0x29')](_0x11c776,'name');_0x3d01f2['query']=_[_0xae66('0x2a')](_0x50dd92[_0xae66('0x2b')]);_0x3d01f2[_0xae66('0x2c')]=_['intersection'](_0x3d01f2[_0xae66('0x28')],_0x3d01f2[_0xae66('0x2b')]);_0xb1c3ed[_0xae66('0x2d')]=_['intersection'](_0x3d01f2[_0xae66('0x28')],qs['fields'](_0x50dd92[_0xae66('0x2b')][_0xae66('0x2e')]));_0xb1c3ed[_0xae66('0x2d')]=_0xb1c3ed['attributes'][_0xae66('0x2f')]?_0xb1c3ed[_0xae66('0x2d')]:_0x3d01f2[_0xae66('0x28')];if(!_0x50dd92[_0xae66('0x2b')][_0xae66('0x30')](_0xae66('0x31'))){_0xb1c3ed[_0xae66('0x1c')]=qs[_0xae66('0x1c')](_0x50dd92[_0xae66('0x2b')][_0xae66('0x1c')]);_0xb1c3ed[_0xae66('0x1a')]=qs[_0xae66('0x1a')](_0x50dd92[_0xae66('0x2b')][_0xae66('0x1a')]);}_0xb1c3ed[_0xae66('0x32')]=qs[_0xae66('0x33')](_0x50dd92[_0xae66('0x2b')][_0xae66('0x33')]);_0xb1c3ed[_0xae66('0x34')]=qs['filters'](_[_0xae66('0x35')](_0x50dd92['query'],_0x3d01f2[_0xae66('0x2c')]),_0x11c776);if(_0x50dd92['query'][_0xae66('0x36')]){_0xb1c3ed[_0xae66('0x34')]=_[_0xae66('0x37')](_0xb1c3ed[_0xae66('0x34')],{'$or':_['map'](_0x11c776,function(_0x5704ca){if(_0x5704ca[_0xae66('0x27')]!==_0xae66('0x38')){var _0x26598e={};_0x26598e[_0x5704ca[_0xae66('0x24')]]={'$like':'%'+_0x50dd92[_0xae66('0x2b')][_0xae66('0x36')]+'%'};return _0x26598e;}})});}_0xb1c3ed=_['merge']({},_0xb1c3ed,_0x50dd92[_0xae66('0x39')]);var _0x1b1178={'where':_0xb1c3ed[_0xae66('0x34')]};return db[_0xae66('0x25')][_0xae66('0x1d')](_0x1b1178)[_0xae66('0x21')](function(_0x1ab96f){_0x35e4db[_0xae66('0x1d')]=_0x1ab96f;if(_0x50dd92[_0xae66('0x2b')][_0xae66('0x3a')]){_0xb1c3ed['include']=[{'all':!![]}];}return db[_0xae66('0x25')]['findAll'](_0xb1c3ed);})[_0xae66('0x21')](function(_0x583671){_0x35e4db[_0xae66('0x3b')]=_0x583671;return _0x35e4db;})[_0xae66('0x21')](respondWithFilteredResult(_0x538aa4,_0xb1c3ed))[_0xae66('0x3c')](handleError(_0x538aa4,null));};exports[_0xae66('0x3d')]=function(_0x1c6aa2,_0x5d95a4){var _0x314119={'raw':![],'where':{'id':_0x1c6aa2[_0xae66('0x3e')]['id']}},_0xc03517={};_0xc03517[_0xae66('0x28')]=_[_0xae66('0x2a')](db[_0xae66('0x25')][_0xae66('0x3f')]);_0xc03517[_0xae66('0x2b')]=_['keys'](_0x1c6aa2[_0xae66('0x2b')]);_0xc03517[_0xae66('0x2c')]=_[_0xae66('0x40')](_0xc03517[_0xae66('0x28')],_0xc03517[_0xae66('0x2b')]);_0x314119[_0xae66('0x2d')]=_['intersection'](_0xc03517['model'],qs['fields'](_0x1c6aa2['query'][_0xae66('0x2e')]));_0x314119[_0xae66('0x2d')]=_0x314119[_0xae66('0x2d')][_0xae66('0x2f')]?_0x314119[_0xae66('0x2d')]:_0xc03517[_0xae66('0x28')];if(_0x1c6aa2['query'][_0xae66('0x3a')]){_0x314119[_0xae66('0x41')]=[{'all':!![]}];}_0x314119=_[_0xae66('0x37')]({},_0x314119,_0x1c6aa2[_0xae66('0x39')]);return db[_0xae66('0x25')][_0xae66('0x42')](_0x314119)[_0xae66('0x21')](handleEntityNotFound(_0x5d95a4,null))[_0xae66('0x21')](respondWithResult(_0x5d95a4,null))[_0xae66('0x3c')](handleError(_0x5d95a4,null));};exports[_0xae66('0x43')]=function(_0x2f1138,_0x3cca0f){return db['Dynamics365Configuration'][_0xae66('0x43')](_0x2f1138[_0xae66('0x44')],{})[_0xae66('0x21')](respondWithResult(_0x3cca0f,0xc9))[_0xae66('0x3c')](handleError(_0x3cca0f,null));};exports['update']=function(_0x1aa81f,_0x367cae){if(_0x1aa81f['body']['id']){delete _0x1aa81f['body']['id'];}return db[_0xae66('0x25')]['find']({'where':{'id':_0x1aa81f['params']['id']}})[_0xae66('0x21')](handleEntityNotFound(_0x367cae,null))[_0xae66('0x21')](saveUpdates(_0x1aa81f[_0xae66('0x44')],null))[_0xae66('0x21')](respondWithResult(_0x367cae,null))[_0xae66('0x3c')](handleError(_0x367cae,null));};exports[_0xae66('0x22')]=function(_0x554648,_0x4d2924){return db[_0xae66('0x25')][_0xae66('0x42')]({'where':{'id':_0x554648[_0xae66('0x3e')]['id']}})[_0xae66('0x21')](handleEntityNotFound(_0x4d2924,null))['then'](removeEntity(_0x4d2924,null))[_0xae66('0x3c')](handleError(_0x4d2924,null));};exports[_0xae66('0x45')]=function(_0x316224,_0x2a77ff,_0x49ddf8){var _0x54a376={};var _0x23fa2a={};var _0x4f01fb;var _0x258344;return db[_0xae66('0x25')][_0xae66('0x46')]({'where':{'id':_0x316224[_0xae66('0x3e')]['id']}})[_0xae66('0x21')](handleEntityNotFound(_0x2a77ff,null))[_0xae66('0x21')](function(_0x66becd){if(_0x66becd){_0x4f01fb=_0x66becd;_0x23fa2a[_0xae66('0x28')]=_[_0xae66('0x2a')](db[_0xae66('0x47')][_0xae66('0x3f')]);_0x23fa2a[_0xae66('0x2b')]=_[_0xae66('0x2a')](_0x316224['query']);_0x23fa2a['filters']=_[_0xae66('0x40')](_0x23fa2a['model'],_0x23fa2a[_0xae66('0x2b')]);_0x54a376[_0xae66('0x2d')]=_[_0xae66('0x40')](_0x23fa2a[_0xae66('0x28')],qs[_0xae66('0x2e')](_0x316224[_0xae66('0x2b')]['fields']));_0x54a376['attributes']=_0x54a376[_0xae66('0x2d')][_0xae66('0x2f')]?_0x54a376[_0xae66('0x2d')]:_0x23fa2a['model'];_0x54a376[_0xae66('0x32')]=qs['sort'](_0x316224['query']['sort']);_0x54a376[_0xae66('0x34')]=qs[_0xae66('0x2c')](_['pick'](_0x316224['query'],_0x23fa2a['filters']));if(_0x316224['query'][_0xae66('0x36')]){_0x54a376[_0xae66('0x34')]=_['merge'](_0x54a376[_0xae66('0x34')],{'$or':_[_0xae66('0x29')](_0x54a376['attributes'],function(_0xdb8ab9){var _0x2f1cae={};_0x2f1cae[_0xdb8ab9]={'$like':'%'+_0x316224[_0xae66('0x2b')][_0xae66('0x36')]+'%'};return _0x2f1cae;})});}_0x54a376=_[_0xae66('0x37')]({},_0x54a376,_0x316224['options']);return _0x4f01fb[_0xae66('0x45')](_0x54a376);}})[_0xae66('0x21')](function(_0x14cfc2){if(_0x14cfc2){_0x258344=_0x14cfc2['length'];if(!_0x316224[_0xae66('0x2b')][_0xae66('0x30')](_0xae66('0x31'))){_0x54a376[_0xae66('0x1c')]=qs['limit'](_0x316224[_0xae66('0x2b')][_0xae66('0x1c')]);_0x54a376[_0xae66('0x1a')]=qs[_0xae66('0x1a')](_0x316224['query'][_0xae66('0x1a')]);}return _0x4f01fb[_0xae66('0x45')](_0x54a376);}})[_0xae66('0x21')](function(_0x1a96b5){if(_0x1a96b5){return _0x1a96b5?{'count':_0x258344,'rows':_0x1a96b5}:null;}})['then'](respondWithResult(_0x2a77ff,null))[_0xae66('0x3c')](handleError(_0x2a77ff,null));};exports[_0xae66('0x48')]=function(_0x5c097c,_0x9e8832,_0x14f841){var _0xc9048e={};var _0x91e6b2={};var _0x338dc6;var _0x5314c6;return db[_0xae66('0x25')]['findOne']({'where':{'id':_0x5c097c[_0xae66('0x3e')]['id']}})['then'](handleEntityNotFound(_0x9e8832,null))['then'](function(_0x581ee0){if(_0x581ee0){_0x338dc6=_0x581ee0;_0x91e6b2[_0xae66('0x28')]=_['keys'](db[_0xae66('0x47')]['rawAttributes']);_0x91e6b2[_0xae66('0x2b')]=_[_0xae66('0x2a')](_0x5c097c[_0xae66('0x2b')]);_0x91e6b2[_0xae66('0x2c')]=_[_0xae66('0x40')](_0x91e6b2['model'],_0x91e6b2[_0xae66('0x2b')]);_0xc9048e[_0xae66('0x2d')]=_[_0xae66('0x40')](_0x91e6b2[_0xae66('0x28')],qs[_0xae66('0x2e')](_0x5c097c[_0xae66('0x2b')][_0xae66('0x2e')]));_0xc9048e['attributes']=_0xc9048e[_0xae66('0x2d')]['length']?_0xc9048e[_0xae66('0x2d')]:_0x91e6b2['model'];_0xc9048e[_0xae66('0x32')]=qs['sort'](_0x5c097c[_0xae66('0x2b')]['sort']);_0xc9048e[_0xae66('0x34')]=qs[_0xae66('0x2c')](_[_0xae66('0x35')](_0x5c097c['query'],_0x91e6b2[_0xae66('0x2c')]));if(_0x5c097c[_0xae66('0x2b')][_0xae66('0x36')]){_0xc9048e[_0xae66('0x34')]=_[_0xae66('0x37')](_0xc9048e[_0xae66('0x34')],{'$or':_[_0xae66('0x29')](_0xc9048e['attributes'],function(_0x30ea33){var _0x2c923b={};_0x2c923b[_0x30ea33]={'$like':'%'+_0x5c097c[_0xae66('0x2b')][_0xae66('0x36')]+'%'};return _0x2c923b;})});}_0xc9048e=_[_0xae66('0x37')]({},_0xc9048e,_0x5c097c[_0xae66('0x39')]);return _0x338dc6[_0xae66('0x48')](_0xc9048e);}})['then'](function(_0x50b416){if(_0x50b416){_0x5314c6=_0x50b416[_0xae66('0x2f')];if(!_0x5c097c[_0xae66('0x2b')][_0xae66('0x30')](_0xae66('0x31'))){_0xc9048e['limit']=qs['limit'](_0x5c097c[_0xae66('0x2b')][_0xae66('0x1c')]);_0xc9048e[_0xae66('0x1a')]=qs[_0xae66('0x1a')](_0x5c097c[_0xae66('0x2b')][_0xae66('0x1a')]);}return _0x338dc6[_0xae66('0x48')](_0xc9048e);}})[_0xae66('0x21')](function(_0x1908d4){if(_0x1908d4){return _0x1908d4?{'count':_0x5314c6,'rows':_0x1908d4}:null;}})[_0xae66('0x21')](respondWithResult(_0x9e8832,null))[_0xae66('0x3c')](handleError(_0x9e8832,null));};exports[_0xae66('0x49')]=function(_0x146373,_0x5cfc9e,_0x3bf347){var _0xc8a041={};var _0x143e72={};var _0x10c61b;var _0x5b6d49;return db[_0xae66('0x25')][_0xae66('0x46')]({'where':{'id':_0x146373[_0xae66('0x3e')]['id']}})[_0xae66('0x21')](handleEntityNotFound(_0x5cfc9e,null))[_0xae66('0x21')](function(_0x2bf152){if(_0x2bf152){_0x10c61b=_0x2bf152;_0x143e72['model']=_['keys'](db[_0xae66('0x47')]['rawAttributes']);_0x143e72[_0xae66('0x2b')]=_[_0xae66('0x2a')](_0x146373[_0xae66('0x2b')]);_0x143e72['filters']=_[_0xae66('0x40')](_0x143e72['model'],_0x143e72['query']);_0xc8a041[_0xae66('0x2d')]=_[_0xae66('0x40')](_0x143e72[_0xae66('0x28')],qs[_0xae66('0x2e')](_0x146373['query'][_0xae66('0x2e')]));_0xc8a041[_0xae66('0x2d')]=_0xc8a041[_0xae66('0x2d')][_0xae66('0x2f')]?_0xc8a041[_0xae66('0x2d')]:_0x143e72[_0xae66('0x28')];_0xc8a041[_0xae66('0x32')]=qs[_0xae66('0x33')](_0x146373[_0xae66('0x2b')][_0xae66('0x33')]);_0xc8a041[_0xae66('0x34')]=qs[_0xae66('0x2c')](_[_0xae66('0x35')](_0x146373[_0xae66('0x2b')],_0x143e72['filters']));if(_0x146373[_0xae66('0x2b')][_0xae66('0x36')]){_0xc8a041[_0xae66('0x34')]=_[_0xae66('0x37')](_0xc8a041[_0xae66('0x34')],{'$or':_[_0xae66('0x29')](_0xc8a041[_0xae66('0x2d')],function(_0x38bff8){var _0x4123df={};_0x4123df[_0x38bff8]={'$like':'%'+_0x146373['query'][_0xae66('0x36')]+'%'};return _0x4123df;})});}_0xc8a041=_[_0xae66('0x37')]({},_0xc8a041,_0x146373[_0xae66('0x39')]);return _0x10c61b['getDescriptions'](_0xc8a041);}})['then'](function(_0x3fcb7d){if(_0x3fcb7d){_0x5b6d49=_0x3fcb7d[_0xae66('0x2f')];if(!_0x146373[_0xae66('0x2b')][_0xae66('0x30')]('nolimit')){_0xc8a041['limit']=qs['limit'](_0x146373['query'][_0xae66('0x1c')]);_0xc8a041[_0xae66('0x1a')]=qs['offset'](_0x146373['query']['offset']);}return _0x10c61b[_0xae66('0x49')](_0xc8a041);}})['then'](function(_0x4b4395){if(_0x4b4395){return _0x4b4395?{'count':_0x5b6d49,'rows':_0x4b4395}:null;}})[_0xae66('0x21')](respondWithResult(_0x5cfc9e,null))[_0xae66('0x3c')](handleError(_0x5cfc9e,null));};
\ No newline at end of file
+var _0x1f77=['path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','Dynamics365Configuration','type','key','model','keys','filters','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','findAll','catch','params','rawAttributes','intersection','options','find','create','body','getFields','Dynamics365Field','order','findOne','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util'];(function(_0x4b590c,_0x2614e3){var _0x4e6432=function(_0x1fcbc8){while(--_0x1fcbc8){_0x4b590c['push'](_0x4b590c['shift']());}};_0x4e6432(++_0x2614e3);}(_0x1f77,0x1cd));var _0x71f7=function(_0x178705,_0x56d05c){_0x178705=_0x178705-0x0;var _0x1234fc=_0x1f77[_0x178705];return _0x1234fc;};'use strict';var emlformat=require(_0x71f7('0x0'));var rimraf=require(_0x71f7('0x1'));var zipdir=require(_0x71f7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x71f7('0x3'));var moment=require(_0x71f7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x71f7('0x5'));var util=require(_0x71f7('0x6'));var path=require(_0x71f7('0x7'));var sox=require('sox');var csv=require(_0x71f7('0x8'));var ejs=require(_0x71f7('0x9'));var fs=require('fs');var fs_extra=require(_0x71f7('0xa'));var _=require(_0x71f7('0xb'));var squel=require(_0x71f7('0xc'));var crypto=require(_0x71f7('0xd'));var jsforce=require(_0x71f7('0xe'));var deskjs=require(_0x71f7('0xf'));var toCsv=require(_0x71f7('0x8'));var querystring=require(_0x71f7('0x10'));var Papa=require(_0x71f7('0x11'));var Redis=require('ioredis');var authService=require(_0x71f7('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x71f7('0x13'));var hardwareService=require(_0x71f7('0x14'));var logger=require('../../config/logger')(_0x71f7('0x15'));var utils=require('../../config/utils');var config=require(_0x71f7('0x16'));var licenseUtil=require(_0x71f7('0x17'));var db=require(_0x71f7('0x18'))['db'];function respondWithStatusCode(_0x425cbc,_0x224878){_0x224878=_0x224878||0xcc;return function(_0x1556ff){if(_0x1556ff){return _0x425cbc['sendStatus'](_0x224878);}return _0x425cbc[_0x71f7('0x19')](_0x224878)['end']();};}function respondWithResult(_0x138366,_0x4c78c4){_0x4c78c4=_0x4c78c4||0xc8;return function(_0x12341b){if(_0x12341b){return _0x138366['status'](_0x4c78c4)[_0x71f7('0x1a')](_0x12341b);}};}function respondWithFilteredResult(_0x28382c,_0x1c7d8d){return function(_0x3cca43){if(_0x3cca43){var _0x4041a4=typeof _0x1c7d8d[_0x71f7('0x1b')]===_0x71f7('0x1c')&&typeof _0x1c7d8d['limit']==='undefined';var _0x1c1847=_0x3cca43[_0x71f7('0x1d')];var _0x223cd7=_0x4041a4?0x0:_0x1c7d8d[_0x71f7('0x1b')];var _0x2b157b=_0x4041a4?_0x3cca43[_0x71f7('0x1d')]:_0x1c7d8d['offset']+_0x1c7d8d[_0x71f7('0x1e')];var _0x3e78a;if(_0x2b157b>=_0x1c1847){_0x2b157b=_0x1c1847;_0x3e78a=0xc8;}else{_0x3e78a=0xce;}_0x28382c[_0x71f7('0x19')](_0x3e78a);return _0x28382c['set'](_0x71f7('0x1f'),_0x223cd7+'-'+_0x2b157b+'/'+_0x1c1847)[_0x71f7('0x1a')](_0x3cca43);}return null;};}function patchUpdates(_0x381897){return function(_0x153497){try{jsonpatch[_0x71f7('0x20')](_0x153497,_0x381897,!![]);}catch(_0x5127bc){return BPromise['reject'](_0x5127bc);}return _0x153497[_0x71f7('0x21')]();};}function saveUpdates(_0xa294b0,_0x154d6a){return function(_0x420b0c){if(_0x420b0c){return _0x420b0c[_0x71f7('0x22')](_0xa294b0)[_0x71f7('0x23')](function(_0x1ec953){return _0x1ec953;});}return null;};}function removeEntity(_0x253747,_0x5a5d43){return function(_0x6a62c1){if(_0x6a62c1){return _0x6a62c1[_0x71f7('0x24')]()[_0x71f7('0x23')](function(){_0x253747[_0x71f7('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5eae57,_0x35bb61){return function(_0x49c1d0){if(!_0x49c1d0){_0x5eae57[_0x71f7('0x25')](0x194);}return _0x49c1d0;};}function handleError(_0xc0c709,_0x2a9cd1){_0x2a9cd1=_0x2a9cd1||0x1f4;return function(_0xeb67b5){logger[_0x71f7('0x26')](_0xeb67b5[_0x71f7('0x27')]);if(_0xeb67b5['name']){delete _0xeb67b5[_0x71f7('0x28')];}_0xc0c709[_0x71f7('0x19')](_0x2a9cd1)[_0x71f7('0x29')](_0xeb67b5);};}exports[_0x71f7('0x2a')]=function(_0x2cfd10,_0x32ec55){var _0x22bc48={},_0xb88dd1={},_0x5e3594={'count':0x0,'rows':[]};var _0x205efe=_[_0x71f7('0x2b')](db[_0x71f7('0x2c')]['rawAttributes'],function(_0x497db6){return{'name':_0x497db6['fieldName'],'type':_0x497db6[_0x71f7('0x2d')][_0x71f7('0x2e')]};});_0xb88dd1[_0x71f7('0x2f')]=_[_0x71f7('0x2b')](_0x205efe,_0x71f7('0x28'));_0xb88dd1['query']=_[_0x71f7('0x30')](_0x2cfd10['query']);_0xb88dd1[_0x71f7('0x31')]=_['intersection'](_0xb88dd1[_0x71f7('0x2f')],_0xb88dd1[_0x71f7('0x32')]);_0x22bc48[_0x71f7('0x33')]=_['intersection'](_0xb88dd1[_0x71f7('0x2f')],qs[_0x71f7('0x34')](_0x2cfd10['query'][_0x71f7('0x34')]));_0x22bc48[_0x71f7('0x33')]=_0x22bc48[_0x71f7('0x33')][_0x71f7('0x35')]?_0x22bc48[_0x71f7('0x33')]:_0xb88dd1[_0x71f7('0x2f')];if(!_0x2cfd10['query'][_0x71f7('0x36')](_0x71f7('0x37'))){_0x22bc48[_0x71f7('0x1e')]=qs['limit'](_0x2cfd10[_0x71f7('0x32')][_0x71f7('0x1e')]);_0x22bc48[_0x71f7('0x1b')]=qs['offset'](_0x2cfd10['query'][_0x71f7('0x1b')]);}_0x22bc48['order']=qs[_0x71f7('0x38')](_0x2cfd10['query'][_0x71f7('0x38')]);_0x22bc48[_0x71f7('0x39')]=qs[_0x71f7('0x31')](_[_0x71f7('0x3a')](_0x2cfd10[_0x71f7('0x32')],_0xb88dd1[_0x71f7('0x31')]),_0x205efe);if(_0x2cfd10[_0x71f7('0x32')]['filter']){_0x22bc48['where']=_[_0x71f7('0x3b')](_0x22bc48[_0x71f7('0x39')],{'$or':_[_0x71f7('0x2b')](_0x205efe,function(_0x1adf43){if(_0x1adf43[_0x71f7('0x2d')]!=='VIRTUAL'){var _0xbda1ac={};_0xbda1ac[_0x1adf43[_0x71f7('0x28')]]={'$like':'%'+_0x2cfd10[_0x71f7('0x32')][_0x71f7('0x3c')]+'%'};return _0xbda1ac;}})});}_0x22bc48=_[_0x71f7('0x3b')]({},_0x22bc48,_0x2cfd10['options']);var _0x5595c9={'where':_0x22bc48[_0x71f7('0x39')]};return db['Dynamics365Configuration'][_0x71f7('0x1d')](_0x5595c9)[_0x71f7('0x23')](function(_0xd9e090){_0x5e3594[_0x71f7('0x1d')]=_0xd9e090;if(_0x2cfd10['query'][_0x71f7('0x3d')]){_0x22bc48[_0x71f7('0x3e')]=[{'all':!![]}];}return db[_0x71f7('0x2c')][_0x71f7('0x3f')](_0x22bc48);})[_0x71f7('0x23')](function(_0x4ecd62){_0x5e3594['rows']=_0x4ecd62;return _0x5e3594;})[_0x71f7('0x23')](respondWithFilteredResult(_0x32ec55,_0x22bc48))[_0x71f7('0x40')](handleError(_0x32ec55,null));};exports['show']=function(_0x47bb9e,_0x101040){var _0x145236={'raw':![],'where':{'id':_0x47bb9e[_0x71f7('0x41')]['id']}},_0x5216ea={};_0x5216ea[_0x71f7('0x2f')]=_['keys'](db[_0x71f7('0x2c')][_0x71f7('0x42')]);_0x5216ea['query']=_['keys'](_0x47bb9e[_0x71f7('0x32')]);_0x5216ea['filters']=_[_0x71f7('0x43')](_0x5216ea[_0x71f7('0x2f')],_0x5216ea[_0x71f7('0x32')]);_0x145236[_0x71f7('0x33')]=_[_0x71f7('0x43')](_0x5216ea[_0x71f7('0x2f')],qs[_0x71f7('0x34')](_0x47bb9e[_0x71f7('0x32')][_0x71f7('0x34')]));_0x145236['attributes']=_0x145236['attributes']['length']?_0x145236[_0x71f7('0x33')]:_0x5216ea[_0x71f7('0x2f')];if(_0x47bb9e['query']['includeAll']){_0x145236[_0x71f7('0x3e')]=[{'all':!![]}];}_0x145236=_[_0x71f7('0x3b')]({},_0x145236,_0x47bb9e[_0x71f7('0x44')]);return db[_0x71f7('0x2c')][_0x71f7('0x45')](_0x145236)[_0x71f7('0x23')](handleEntityNotFound(_0x101040,null))[_0x71f7('0x23')](respondWithResult(_0x101040,null))[_0x71f7('0x40')](handleError(_0x101040,null));};exports['create']=function(_0x4d4024,_0x4742b1){return db[_0x71f7('0x2c')][_0x71f7('0x46')](_0x4d4024[_0x71f7('0x47')],{})[_0x71f7('0x23')](respondWithResult(_0x4742b1,0xc9))[_0x71f7('0x40')](handleError(_0x4742b1,null));};exports[_0x71f7('0x22')]=function(_0x122d46,_0x58527d){if(_0x122d46['body']['id']){delete _0x122d46[_0x71f7('0x47')]['id'];}return db[_0x71f7('0x2c')][_0x71f7('0x45')]({'where':{'id':_0x122d46[_0x71f7('0x41')]['id']}})[_0x71f7('0x23')](handleEntityNotFound(_0x58527d,null))[_0x71f7('0x23')](saveUpdates(_0x122d46[_0x71f7('0x47')],null))[_0x71f7('0x23')](respondWithResult(_0x58527d,null))['catch'](handleError(_0x58527d,null));};exports[_0x71f7('0x24')]=function(_0x3d792f,_0x28bbe6){return db['Dynamics365Configuration'][_0x71f7('0x45')]({'where':{'id':_0x3d792f[_0x71f7('0x41')]['id']}})[_0x71f7('0x23')](handleEntityNotFound(_0x28bbe6,null))[_0x71f7('0x23')](removeEntity(_0x28bbe6,null))[_0x71f7('0x40')](handleError(_0x28bbe6,null));};exports[_0x71f7('0x48')]=function(_0x5cf48e,_0x28a0ed,_0x58d7a3){var _0x376c9f={};var _0x5923ce={};var _0x4a9d58;var _0x5c32b6;return db[_0x71f7('0x2c')]['findOne']({'where':{'id':_0x5cf48e[_0x71f7('0x41')]['id']}})['then'](handleEntityNotFound(_0x28a0ed,null))[_0x71f7('0x23')](function(_0x152b1d){if(_0x152b1d){_0x4a9d58=_0x152b1d;_0x5923ce['model']=_['keys'](db[_0x71f7('0x49')][_0x71f7('0x42')]);_0x5923ce[_0x71f7('0x32')]=_[_0x71f7('0x30')](_0x5cf48e[_0x71f7('0x32')]);_0x5923ce['filters']=_[_0x71f7('0x43')](_0x5923ce[_0x71f7('0x2f')],_0x5923ce[_0x71f7('0x32')]);_0x376c9f['attributes']=_[_0x71f7('0x43')](_0x5923ce[_0x71f7('0x2f')],qs['fields'](_0x5cf48e[_0x71f7('0x32')][_0x71f7('0x34')]));_0x376c9f[_0x71f7('0x33')]=_0x376c9f['attributes']['length']?_0x376c9f[_0x71f7('0x33')]:_0x5923ce['model'];_0x376c9f[_0x71f7('0x4a')]=qs[_0x71f7('0x38')](_0x5cf48e['query']['sort']);_0x376c9f['where']=qs['filters'](_['pick'](_0x5cf48e[_0x71f7('0x32')],_0x5923ce[_0x71f7('0x31')]));if(_0x5cf48e[_0x71f7('0x32')]['filter']){_0x376c9f['where']=_['merge'](_0x376c9f[_0x71f7('0x39')],{'$or':_[_0x71f7('0x2b')](_0x376c9f[_0x71f7('0x33')],function(_0x170c60){var _0x374567={};_0x374567[_0x170c60]={'$like':'%'+_0x5cf48e['query']['filter']+'%'};return _0x374567;})});}_0x376c9f=_['merge']({},_0x376c9f,_0x5cf48e[_0x71f7('0x44')]);return _0x4a9d58[_0x71f7('0x48')](_0x376c9f);}})['then'](function(_0x1b391d){if(_0x1b391d){_0x5c32b6=_0x1b391d['length'];if(!_0x5cf48e[_0x71f7('0x32')][_0x71f7('0x36')](_0x71f7('0x37'))){_0x376c9f[_0x71f7('0x1e')]=qs[_0x71f7('0x1e')](_0x5cf48e[_0x71f7('0x32')][_0x71f7('0x1e')]);_0x376c9f[_0x71f7('0x1b')]=qs[_0x71f7('0x1b')](_0x5cf48e[_0x71f7('0x32')][_0x71f7('0x1b')]);}return _0x4a9d58[_0x71f7('0x48')](_0x376c9f);}})[_0x71f7('0x23')](function(_0x28632e){if(_0x28632e){return _0x28632e?{'count':_0x5c32b6,'rows':_0x28632e}:null;}})[_0x71f7('0x23')](respondWithResult(_0x28a0ed,null))[_0x71f7('0x40')](handleError(_0x28a0ed,null));};exports['getSubjects']=function(_0x2ed940,_0x2c07ef,_0x2e1cbd){var _0x7b6517={};var _0x1a35fa={};var _0x3ffbc7;var _0x2101f2;return db[_0x71f7('0x2c')][_0x71f7('0x4b')]({'where':{'id':_0x2ed940['params']['id']}})['then'](handleEntityNotFound(_0x2c07ef,null))['then'](function(_0x19cdff){if(_0x19cdff){_0x3ffbc7=_0x19cdff;_0x1a35fa['model']=_[_0x71f7('0x30')](db['Dynamics365Field'][_0x71f7('0x42')]);_0x1a35fa[_0x71f7('0x32')]=_['keys'](_0x2ed940[_0x71f7('0x32')]);_0x1a35fa[_0x71f7('0x31')]=_['intersection'](_0x1a35fa[_0x71f7('0x2f')],_0x1a35fa[_0x71f7('0x32')]);_0x7b6517[_0x71f7('0x33')]=_[_0x71f7('0x43')](_0x1a35fa['model'],qs[_0x71f7('0x34')](_0x2ed940[_0x71f7('0x32')][_0x71f7('0x34')]));_0x7b6517['attributes']=_0x7b6517[_0x71f7('0x33')][_0x71f7('0x35')]?_0x7b6517[_0x71f7('0x33')]:_0x1a35fa[_0x71f7('0x2f')];_0x7b6517['order']=qs[_0x71f7('0x38')](_0x2ed940[_0x71f7('0x32')][_0x71f7('0x38')]);_0x7b6517[_0x71f7('0x39')]=qs[_0x71f7('0x31')](_['pick'](_0x2ed940[_0x71f7('0x32')],_0x1a35fa['filters']));if(_0x2ed940['query'][_0x71f7('0x3c')]){_0x7b6517['where']=_[_0x71f7('0x3b')](_0x7b6517['where'],{'$or':_[_0x71f7('0x2b')](_0x7b6517[_0x71f7('0x33')],function(_0x9b2ab2){var _0x5e82f4={};_0x5e82f4[_0x9b2ab2]={'$like':'%'+_0x2ed940[_0x71f7('0x32')][_0x71f7('0x3c')]+'%'};return _0x5e82f4;})});}_0x7b6517=_[_0x71f7('0x3b')]({},_0x7b6517,_0x2ed940[_0x71f7('0x44')]);return _0x3ffbc7[_0x71f7('0x4c')](_0x7b6517);}})[_0x71f7('0x23')](function(_0x54e217){if(_0x54e217){_0x2101f2=_0x54e217[_0x71f7('0x35')];if(!_0x2ed940[_0x71f7('0x32')][_0x71f7('0x36')](_0x71f7('0x37'))){_0x7b6517['limit']=qs[_0x71f7('0x1e')](_0x2ed940[_0x71f7('0x32')][_0x71f7('0x1e')]);_0x7b6517[_0x71f7('0x1b')]=qs[_0x71f7('0x1b')](_0x2ed940[_0x71f7('0x32')]['offset']);}return _0x3ffbc7[_0x71f7('0x4c')](_0x7b6517);}})[_0x71f7('0x23')](function(_0xe31ac8){if(_0xe31ac8){return _0xe31ac8?{'count':_0x2101f2,'rows':_0xe31ac8}:null;}})[_0x71f7('0x23')](respondWithResult(_0x2c07ef,null))[_0x71f7('0x40')](handleError(_0x2c07ef,null));};exports[_0x71f7('0x4d')]=function(_0x65e67b,_0x179cdb,_0x8477df){var _0x83a41a={};var _0x3f736b={};var _0x123a59;var _0x107a7c;return db['Dynamics365Configuration'][_0x71f7('0x4b')]({'where':{'id':_0x65e67b[_0x71f7('0x41')]['id']}})[_0x71f7('0x23')](handleEntityNotFound(_0x179cdb,null))[_0x71f7('0x23')](function(_0x47ce15){if(_0x47ce15){_0x123a59=_0x47ce15;_0x3f736b[_0x71f7('0x2f')]=_[_0x71f7('0x30')](db[_0x71f7('0x49')][_0x71f7('0x42')]);_0x3f736b['query']=_[_0x71f7('0x30')](_0x65e67b[_0x71f7('0x32')]);_0x3f736b[_0x71f7('0x31')]=_[_0x71f7('0x43')](_0x3f736b[_0x71f7('0x2f')],_0x3f736b[_0x71f7('0x32')]);_0x83a41a['attributes']=_[_0x71f7('0x43')](_0x3f736b['model'],qs[_0x71f7('0x34')](_0x65e67b[_0x71f7('0x32')][_0x71f7('0x34')]));_0x83a41a[_0x71f7('0x33')]=_0x83a41a[_0x71f7('0x33')][_0x71f7('0x35')]?_0x83a41a['attributes']:_0x3f736b['model'];_0x83a41a['order']=qs[_0x71f7('0x38')](_0x65e67b[_0x71f7('0x32')][_0x71f7('0x38')]);_0x83a41a[_0x71f7('0x39')]=qs[_0x71f7('0x31')](_[_0x71f7('0x3a')](_0x65e67b[_0x71f7('0x32')],_0x3f736b[_0x71f7('0x31')]));if(_0x65e67b[_0x71f7('0x32')][_0x71f7('0x3c')]){_0x83a41a[_0x71f7('0x39')]=_['merge'](_0x83a41a[_0x71f7('0x39')],{'$or':_['map'](_0x83a41a[_0x71f7('0x33')],function(_0x5c4e0e){var _0xc6e0d9={};_0xc6e0d9[_0x5c4e0e]={'$like':'%'+_0x65e67b['query']['filter']+'%'};return _0xc6e0d9;})});}_0x83a41a=_[_0x71f7('0x3b')]({},_0x83a41a,_0x65e67b[_0x71f7('0x44')]);return _0x123a59[_0x71f7('0x4d')](_0x83a41a);}})[_0x71f7('0x23')](function(_0x81068b){if(_0x81068b){_0x107a7c=_0x81068b['length'];if(!_0x65e67b['query'][_0x71f7('0x36')](_0x71f7('0x37'))){_0x83a41a[_0x71f7('0x1e')]=qs[_0x71f7('0x1e')](_0x65e67b[_0x71f7('0x32')][_0x71f7('0x1e')]);_0x83a41a['offset']=qs['offset'](_0x65e67b[_0x71f7('0x32')]['offset']);}return _0x123a59[_0x71f7('0x4d')](_0x83a41a);}})[_0x71f7('0x23')](function(_0xfc4956){if(_0xfc4956){return _0xfc4956?{'count':_0x107a7c,'rows':_0xfc4956}:null;}})[_0x71f7('0x23')](respondWithResult(_0x179cdb,null))[_0x71f7('0x40')](handleError(_0x179cdb,null));};
\ No newline at end of file
index df3cc73..c4927e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','int_dynamics365_configurations','lodash','util','api'];(function(_0xca9235,_0x4b825d){var _0x49c694=function(_0xcac362){while(--_0xcac362){_0xca9235['push'](_0xca9235['shift']());}};_0x49c694(++_0x4b825d);}(_0xa41a,0x6b));var _0xaa41=function(_0x18cc08,_0x34c324){_0x18cc08=_0x18cc08-0x0;var _0x230d93=_0xa41a[_0x18cc08];return _0x230d93;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var logger=require('../../config/logger')(_0xaa41('0x2'));var moment=require(_0xaa41('0x3'));var BPromise=require(_0xaa41('0x4'));var rp=require(_0xaa41('0x5'));var fs=require('fs');var path=require(_0xaa41('0x6'));var rimraf=require(_0xaa41('0x7'));var config=require(_0xaa41('0x8'));var attributes=require(_0xaa41('0x9'));module['exports']=function(_0x2122a0,_0x1ec9d4){return _0x2122a0['define']('Dynamics365Configuration',attributes,{'tableName':_0xaa41('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdace=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','Dynamics365Configuration','int_dynamics365_configurations','lodash'];(function(_0x187c77,_0x5e1b37){var _0x53fac2=function(_0x2df714){while(--_0x2df714){_0x187c77['push'](_0x187c77['shift']());}};_0x53fac2(++_0x5e1b37);}(_0xdace,0xc5));var _0xedac=function(_0x30faec,_0x18940b){_0x30faec=_0x30faec-0x0;var _0x29484f=_0xdace[_0x30faec];return _0x29484f;};'use strict';var _=require(_0xedac('0x0'));var util=require('util');var logger=require(_0xedac('0x1'))(_0xedac('0x2'));var moment=require(_0xedac('0x3'));var BPromise=require('bluebird');var rp=require(_0xedac('0x4'));var fs=require('fs');var path=require(_0xedac('0x5'));var rimraf=require(_0xedac('0x6'));var config=require(_0xedac('0x7'));var attributes=require('./intDynamics365Configuration.attributes');module[_0xedac('0x8')]=function(_0x1cba89,_0x39328a){return _0x1cba89['define'](_0xedac('0x9'),attributes,{'tableName':_0xedac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 31898af..c84577b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b65=['catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','Dynamics365Configuration,\x20%s,\x20%s','message','request\x20sent','result'];(function(_0xae01dd,_0xbd8a3c){var _0x8c26df=function(_0x359827){while(--_0x359827){_0xae01dd['push'](_0xae01dd['shift']());}};_0x8c26df(++_0xbd8a3c);}(_0x1b65,0x16d));var _0x51b6=function(_0x4b3f3e,_0x47dfcc){_0x4b3f3e=_0x4b3f3e-0x0;var _0x921fc3=_0x1b65[_0x4b3f3e];return _0x921fc3;};'use strict';var _=require(_0x51b6('0x0'));var util=require('util');var moment=require(_0x51b6('0x1'));var BPromise=require(_0x51b6('0x2'));var rs=require(_0x51b6('0x3'));var fs=require('fs');var Redis=require(_0x51b6('0x4'));var db=require(_0x51b6('0x5'))['db'];var utils=require(_0x51b6('0x6'));var logger=require(_0x51b6('0x7'))(_0x51b6('0x8'));var config=require(_0x51b6('0x9'));var jayson=require(_0x51b6('0xa'));var client=jayson[_0x51b6('0xb')][_0x51b6('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x403917,_0x1fc1ec,_0x2c7cdf){return new BPromise(function(_0x17dbcc,_0xfe3ce6){return client[_0x51b6('0xd')](_0x403917,_0x2c7cdf)[_0x51b6('0xe')](function(_0x449bfe){logger[_0x51b6('0xf')]('Dynamics365Configuration,\x20%s,\x20%s',_0x1fc1ec,'request\x20sent');logger[_0x51b6('0x10')](_0x51b6('0x11'),_0x1fc1ec,'request\x20sent',JSON[_0x51b6('0x12')](_0x449bfe));if(_0x449bfe[_0x51b6('0x13')]){if(_0x449bfe['error'][_0x51b6('0x14')]===0x1f4){logger[_0x51b6('0x13')](_0x51b6('0x15'),_0x1fc1ec,_0x449bfe['error'][_0x51b6('0x16')]);return _0xfe3ce6(_0x449bfe[_0x51b6('0x13')][_0x51b6('0x16')]);}logger[_0x51b6('0x13')](_0x51b6('0x15'),_0x1fc1ec,_0x449bfe[_0x51b6('0x13')][_0x51b6('0x16')]);return _0x17dbcc(_0x449bfe['error']['message']);}else{logger['info'](_0x51b6('0x15'),_0x1fc1ec,_0x51b6('0x17'));_0x17dbcc(_0x449bfe[_0x51b6('0x18')][_0x51b6('0x16')]);}})[_0x51b6('0x19')](function(_0x55d0c3){logger[_0x51b6('0x13')](_0x51b6('0x15'),_0x1fc1ec,_0x55d0c3);_0xfe3ce6(_0x55d0c3);});});}
\ No newline at end of file
+var _0xe4d8=['randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','moment'];(function(_0x229144,_0x5303ad){var _0x2c0bf2=function(_0xac4f6f){while(--_0xac4f6f){_0x229144['push'](_0x229144['shift']());}};_0x2c0bf2(++_0x5303ad);}(_0xe4d8,0xbd));var _0x8e4d=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xe4d8[_0x432682];return _0x463d05;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8e4d('0x0'));var BPromise=require('bluebird');var rs=require(_0x8e4d('0x1'));var fs=require('fs');var Redis=require(_0x8e4d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8e4d('0x3'));var logger=require(_0x8e4d('0x4'))('rpc');var config=require(_0x8e4d('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8e4d('0x6')][_0x8e4d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x207998,_0x4854f0,_0x2accfe){return new BPromise(function(_0x1866db,_0x4eec42){return client[_0x8e4d('0x8')](_0x207998,_0x2accfe)[_0x8e4d('0x9')](function(_0x3e6072){logger['info'](_0x8e4d('0xa'),_0x4854f0,_0x8e4d('0xb'));logger[_0x8e4d('0xc')](_0x8e4d('0xd'),_0x4854f0,_0x8e4d('0xb'),JSON[_0x8e4d('0xe')](_0x3e6072));if(_0x3e6072[_0x8e4d('0xf')]){if(_0x3e6072[_0x8e4d('0xf')][_0x8e4d('0x10')]===0x1f4){logger[_0x8e4d('0xf')](_0x8e4d('0xa'),_0x4854f0,_0x3e6072[_0x8e4d('0xf')][_0x8e4d('0x11')]);return _0x4eec42(_0x3e6072[_0x8e4d('0xf')][_0x8e4d('0x11')]);}logger[_0x8e4d('0xf')](_0x8e4d('0xa'),_0x4854f0,_0x3e6072[_0x8e4d('0xf')][_0x8e4d('0x11')]);return _0x1866db(_0x3e6072[_0x8e4d('0xf')][_0x8e4d('0x11')]);}else{logger['info'](_0x8e4d('0xa'),_0x4854f0,'request\x20sent');_0x1866db(_0x3e6072['result'][_0x8e4d('0x11')]);}})[_0x8e4d('0x12')](function(_0x782f71){logger[_0x8e4d('0xf')](_0x8e4d('0xa'),_0x4854f0,_0x782f71);_0x4eec42(_0x782f71);});});}
\ No newline at end of file
index 38d55f0..a829382 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3077=['create','delete','destroy','exports','multer','path','connect-timeout','express','../../config/environment','get','isAuthenticated','index','/:id','show','post'];(function(_0x43f491,_0x1ee6d5){var _0x22c281=function(_0x21de6e){while(--_0x21de6e){_0x43f491['push'](_0x43f491['shift']());}};_0x22c281(++_0x1ee6d5);}(_0x3077,0x1a8));var _0x7307=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x3077[_0x110c3d];return _0x226d67;};'use strict';var multer=require(_0x7307('0x0'));var util=require('util');var path=require(_0x7307('0x1'));var timeout=require(_0x7307('0x2'));var express=require(_0x7307('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7307('0x4'));var controller=require('./intDynamics365Field.controller');router[_0x7307('0x5')]('/',auth[_0x7307('0x6')](),controller[_0x7307('0x7')]);router['get'](_0x7307('0x8'),auth[_0x7307('0x6')](),controller[_0x7307('0x9')]);router[_0x7307('0xa')]('/',auth[_0x7307('0x6')](),controller[_0x7307('0xb')]);router['put'](_0x7307('0x8'),auth[_0x7307('0x6')](),controller['update']);router[_0x7307('0xc')](_0x7307('0x8'),auth[_0x7307('0x6')](),controller[_0x7307('0xd')]);module[_0x7307('0xe')]=router;
\ No newline at end of file
+var _0x30a1=['/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x30a1,0xa9));var _0x130a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x30a1[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x130a('0x0'));var util=require(_0x130a('0x1'));var path=require(_0x130a('0x2'));var timeout=require(_0x130a('0x3'));var express=require(_0x130a('0x4'));var router=express[_0x130a('0x5')]();var fs_extra=require(_0x130a('0x6'));var auth=require(_0x130a('0x7'));var interaction=require(_0x130a('0x8'));var config=require(_0x130a('0x9'));var controller=require('./intDynamics365Field.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x130a('0xa')]);router['get'](_0x130a('0xb'),auth[_0x130a('0xc')](),controller[_0x130a('0xd')]);router[_0x130a('0xe')]('/',auth[_0x130a('0xc')](),controller[_0x130a('0xf')]);router[_0x130a('0x10')](_0x130a('0xb'),auth[_0x130a('0xc')](),controller[_0x130a('0x11')]);router['delete'](_0x130a('0xb'),auth['isAuthenticated'](),controller[_0x130a('0x12')]);module[_0x130a('0x13')]=router;
\ No newline at end of file
index 1541d78..8d69753 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc307=['BOOLEAN','sequelize','exports','string','variable','picklist','STRING','ENUM'];(function(_0x374ccf,_0xa945c4){var _0x443cde=function(_0x27ff10){while(--_0x27ff10){_0x374ccf['push'](_0x374ccf['shift']());}};_0x443cde(++_0xa945c4);}(_0xc307,0xa9));var _0x7c30=function(_0x4a5785,_0x424371){_0x4a5785=_0x4a5785-0x0;var _0x22ec65=_0xc307[_0x4a5785];return _0x22ec65;};'use strict';var Sequelize=require(_0x7c30('0x0'));module[_0x7c30('0x1')]={'type':{'type':Sequelize['ENUM'](_0x7c30('0x2'),_0x7c30('0x3'),'customVariable','keyValue',_0x7c30('0x4')),'defaultValue':_0x7c30('0x2')},'content':{'type':Sequelize[_0x7c30('0x5')]},'key':{'type':Sequelize[_0x7c30('0x5')]},'keyType':{'type':Sequelize[_0x7c30('0x6')](_0x7c30('0x2'),_0x7c30('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x7c30('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x7c30('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7c30('0x5')]}};
\ No newline at end of file
+var _0xffd9=['STRING','BOOLEAN','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x2a1faf,_0x4185ff){var _0x28b3d9=function(_0x2a9715){while(--_0x2a9715){_0x2a1faf['push'](_0x2a1faf['shift']());}};_0x28b3d9(++_0x4185ff);}(_0xffd9,0x17a));var _0x9ffd=function(_0x310956,_0x33f891){_0x310956=_0x310956-0x0;var _0x384f63=_0xffd9[_0x310956];return _0x384f63;};'use strict';var Sequelize=require('sequelize');module[_0x9ffd('0x0')]={'type':{'type':Sequelize[_0x9ffd('0x1')](_0x9ffd('0x2'),_0x9ffd('0x3'),_0x9ffd('0x4'),_0x9ffd('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x9ffd('0x6')]},'key':{'type':Sequelize[_0x9ffd('0x6')]},'keyType':{'type':Sequelize[_0x9ffd('0x1')]('string',_0x9ffd('0x3'),_0x9ffd('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x9ffd('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x9ffd('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ff1e085..e564bef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4fe=['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','reject','save','update','then','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','filter','merge','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x40c226,_0xf31bd6){var _0x5e92bb=function(_0x21e398){while(--_0x21e398){_0x40c226['push'](_0x40c226['shift']());}};_0x5e92bb(++_0xf31bd6);}(_0xd4fe,0xda));var _0xed4f=function(_0x12cc66,_0x50a056){_0x12cc66=_0x12cc66-0x0;var _0x4ce9d0=_0xd4fe[_0x12cc66];return _0x4ce9d0;};'use strict';var emlformat=require(_0xed4f('0x0'));var rimraf=require(_0xed4f('0x1'));var zipdir=require(_0xed4f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xed4f('0x3'));var moment=require(_0xed4f('0x4'));var BPromise=require(_0xed4f('0x5'));var Mustache=require(_0xed4f('0x6'));var util=require('util');var path=require(_0xed4f('0x7'));var sox=require(_0xed4f('0x8'));var csv=require(_0xed4f('0x9'));var ejs=require(_0xed4f('0xa'));var fs=require('fs');var fs_extra=require(_0xed4f('0xb'));var _=require(_0xed4f('0xc'));var squel=require(_0xed4f('0xd'));var crypto=require(_0xed4f('0xe'));var jsforce=require(_0xed4f('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xed4f('0x10'));var Papa=require(_0xed4f('0x11'));var Redis=require(_0xed4f('0x12'));var authService=require(_0xed4f('0x13'));var qs=require(_0xed4f('0x14'));var as=require(_0xed4f('0x15'));var hardwareService=require(_0xed4f('0x16'));var logger=require(_0xed4f('0x17'))('api');var utils=require(_0xed4f('0x18'));var config=require(_0xed4f('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xed4f('0x1a'))['db'];function respondWithStatusCode(_0x14250c,_0x46c6e2){_0x46c6e2=_0x46c6e2||0xcc;return function(_0x148c3f){if(_0x148c3f){return _0x14250c[_0xed4f('0x1b')](_0x46c6e2);}return _0x14250c[_0xed4f('0x1c')](_0x46c6e2)[_0xed4f('0x1d')]();};}function respondWithResult(_0x3916c7,_0x1f22ab){_0x1f22ab=_0x1f22ab||0xc8;return function(_0xd97080){if(_0xd97080){return _0x3916c7[_0xed4f('0x1c')](_0x1f22ab)[_0xed4f('0x1e')](_0xd97080);}};}function respondWithFilteredResult(_0x4a8b76,_0x5ea18d){return function(_0x501eca){if(_0x501eca){var _0x90c69=typeof _0x5ea18d[_0xed4f('0x1f')]==='undefined'&&typeof _0x5ea18d[_0xed4f('0x20')]===_0xed4f('0x21');var _0x41be80=_0x501eca[_0xed4f('0x22')];var _0x535a32=_0x90c69?0x0:_0x5ea18d['offset'];var _0x15a07c=_0x90c69?_0x501eca[_0xed4f('0x22')]:_0x5ea18d[_0xed4f('0x1f')]+_0x5ea18d[_0xed4f('0x20')];var _0x3b721e;if(_0x15a07c>=_0x41be80){_0x15a07c=_0x41be80;_0x3b721e=0xc8;}else{_0x3b721e=0xce;}_0x4a8b76['status'](_0x3b721e);return _0x4a8b76[_0xed4f('0x23')](_0xed4f('0x24'),_0x535a32+'-'+_0x15a07c+'/'+_0x41be80)['json'](_0x501eca);}return null;};}function patchUpdates(_0x24d91b){return function(_0x2bd1d7){try{jsonpatch[_0xed4f('0x25')](_0x2bd1d7,_0x24d91b,!![]);}catch(_0x239dc4){return BPromise[_0xed4f('0x26')](_0x239dc4);}return _0x2bd1d7[_0xed4f('0x27')]();};}function saveUpdates(_0x14bce8,_0x45ca18){return function(_0x2347f2){if(_0x2347f2){return _0x2347f2[_0xed4f('0x28')](_0x14bce8)[_0xed4f('0x29')](function(_0x2165bb){return _0x2165bb;});}return null;};}function removeEntity(_0x35933b,_0x48be03){return function(_0x43bd2a){if(_0x43bd2a){return _0x43bd2a['destroy']()[_0xed4f('0x29')](function(){_0x35933b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x221486,_0x45b15c){return function(_0x5aee5d){if(!_0x5aee5d){_0x221486[_0xed4f('0x1b')](0x194);}return _0x5aee5d;};}function handleError(_0xaecfe3,_0x1aedd0){_0x1aedd0=_0x1aedd0||0x1f4;return function(_0x591c9e){logger[_0xed4f('0x2a')](_0x591c9e[_0xed4f('0x2b')]);if(_0x591c9e[_0xed4f('0x2c')]){delete _0x591c9e[_0xed4f('0x2c')];}_0xaecfe3[_0xed4f('0x1c')](_0x1aedd0)[_0xed4f('0x2d')](_0x591c9e);};}exports[_0xed4f('0x2e')]=function(_0x1bc727,_0x584a1f){var _0x422260={},_0x57a937={},_0x4c8726={'count':0x0,'rows':[]};var _0x4f7915=_[_0xed4f('0x2f')](db[_0xed4f('0x30')][_0xed4f('0x31')],function(_0x2f869b){return{'name':_0x2f869b[_0xed4f('0x32')],'type':_0x2f869b[_0xed4f('0x33')][_0xed4f('0x34')]};});_0x57a937[_0xed4f('0x35')]=_[_0xed4f('0x2f')](_0x4f7915,_0xed4f('0x2c'));_0x57a937[_0xed4f('0x36')]=_[_0xed4f('0x37')](_0x1bc727[_0xed4f('0x36')]);_0x57a937['filters']=_[_0xed4f('0x38')](_0x57a937[_0xed4f('0x35')],_0x57a937['query']);_0x422260[_0xed4f('0x39')]=_[_0xed4f('0x38')](_0x57a937[_0xed4f('0x35')],qs[_0xed4f('0x3a')](_0x1bc727[_0xed4f('0x36')]['fields']));_0x422260[_0xed4f('0x39')]=_0x422260[_0xed4f('0x39')][_0xed4f('0x3b')]?_0x422260[_0xed4f('0x39')]:_0x57a937[_0xed4f('0x35')];if(!_0x1bc727['query']['hasOwnProperty'](_0xed4f('0x3c'))){_0x422260[_0xed4f('0x20')]=qs['limit'](_0x1bc727[_0xed4f('0x36')][_0xed4f('0x20')]);_0x422260[_0xed4f('0x1f')]=qs[_0xed4f('0x1f')](_0x1bc727[_0xed4f('0x36')]['offset']);}_0x422260[_0xed4f('0x3d')]=qs[_0xed4f('0x3e')](_0x1bc727[_0xed4f('0x36')][_0xed4f('0x3e')]);_0x422260[_0xed4f('0x3f')]=qs[_0xed4f('0x40')](_['pick'](_0x1bc727[_0xed4f('0x36')],_0x57a937[_0xed4f('0x40')]),_0x4f7915);if(_0x1bc727[_0xed4f('0x36')][_0xed4f('0x41')]){_0x422260['where']=_[_0xed4f('0x42')](_0x422260['where'],{'$or':_['map'](_0x4f7915,function(_0x1f90de){if(_0x1f90de[_0xed4f('0x33')]!=='VIRTUAL'){var _0x428355={};_0x428355[_0x1f90de[_0xed4f('0x2c')]]={'$like':'%'+_0x1bc727[_0xed4f('0x36')][_0xed4f('0x41')]+'%'};return _0x428355;}})});}_0x422260=_[_0xed4f('0x42')]({},_0x422260,_0x1bc727[_0xed4f('0x43')]);var _0x1028fe={'where':_0x422260[_0xed4f('0x3f')]};return db[_0xed4f('0x30')][_0xed4f('0x22')](_0x1028fe)[_0xed4f('0x29')](function(_0x55ec75){_0x4c8726['count']=_0x55ec75;if(_0x1bc727[_0xed4f('0x36')][_0xed4f('0x44')]){_0x422260['include']=[{'all':!![]}];}return db['Dynamics365Field'][_0xed4f('0x45')](_0x422260);})['then'](function(_0x2af163){_0x4c8726[_0xed4f('0x46')]=_0x2af163;return _0x4c8726;})[_0xed4f('0x29')](respondWithFilteredResult(_0x584a1f,_0x422260))[_0xed4f('0x47')](handleError(_0x584a1f,null));};exports[_0xed4f('0x48')]=function(_0x343af2,_0x27d094){var _0x39e04f={'raw':!![],'where':{'id':_0x343af2[_0xed4f('0x49')]['id']}},_0x4fda37={};_0x4fda37['model']=_[_0xed4f('0x37')](db['Dynamics365Field'][_0xed4f('0x31')]);_0x4fda37[_0xed4f('0x36')]=_[_0xed4f('0x37')](_0x343af2[_0xed4f('0x36')]);_0x4fda37['filters']=_[_0xed4f('0x38')](_0x4fda37[_0xed4f('0x35')],_0x4fda37['query']);_0x39e04f['attributes']=_['intersection'](_0x4fda37[_0xed4f('0x35')],qs[_0xed4f('0x3a')](_0x343af2[_0xed4f('0x36')][_0xed4f('0x3a')]));_0x39e04f[_0xed4f('0x39')]=_0x39e04f[_0xed4f('0x39')][_0xed4f('0x3b')]?_0x39e04f['attributes']:_0x4fda37[_0xed4f('0x35')];if(_0x343af2[_0xed4f('0x36')]['includeAll']){_0x39e04f[_0xed4f('0x4a')]=[{'all':!![]}];}_0x39e04f=_[_0xed4f('0x42')]({},_0x39e04f,_0x343af2[_0xed4f('0x43')]);return db['Dynamics365Field'][_0xed4f('0x4b')](_0x39e04f)[_0xed4f('0x29')](handleEntityNotFound(_0x27d094,null))[_0xed4f('0x29')](respondWithResult(_0x27d094,null))['catch'](handleError(_0x27d094,null));};exports[_0xed4f('0x4c')]=function(_0x41a38b,_0x406d64){return db[_0xed4f('0x30')]['create'](_0x41a38b[_0xed4f('0x4d')],{})[_0xed4f('0x29')](respondWithResult(_0x406d64,0xc9))[_0xed4f('0x47')](handleError(_0x406d64,null));};exports[_0xed4f('0x28')]=function(_0x281947,_0x4fd3a0){if(_0x281947[_0xed4f('0x4d')]['id']){delete _0x281947[_0xed4f('0x4d')]['id'];}return db[_0xed4f('0x30')][_0xed4f('0x4b')]({'where':{'id':_0x281947[_0xed4f('0x49')]['id']}})[_0xed4f('0x29')](handleEntityNotFound(_0x4fd3a0,null))['then'](saveUpdates(_0x281947['body'],null))['then'](respondWithResult(_0x4fd3a0,null))[_0xed4f('0x47')](handleError(_0x4fd3a0,null));};exports['destroy']=function(_0x52238c,_0x4dd813){return db['Dynamics365Field'][_0xed4f('0x4b')]({'where':{'id':_0x52238c[_0xed4f('0x49')]['id']}})[_0xed4f('0x29')](handleEntityNotFound(_0x4dd813,null))[_0xed4f('0x29')](removeEntity(_0x4dd813,null))['catch'](handleError(_0x4dd813,null));};
\ No newline at end of file
+var _0xa243=['fields','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','create','body','destroy','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','Dynamics365Field','fieldName','key','model','query','keys','filters','intersection','attributes'];(function(_0xf5ce92,_0x3cc383){var _0xf5846b=function(_0x34c3bf){while(--_0x34c3bf){_0xf5ce92['push'](_0xf5ce92['shift']());}};_0xf5846b(++_0x3cc383);}(_0xa243,0x14a));var _0x3a24=function(_0x14e920,_0x49e89c){_0x14e920=_0x14e920-0x0;var _0xd7b508=_0xa243[_0x14e920];return _0xd7b508;};'use strict';var emlformat=require(_0x3a24('0x0'));var rimraf=require(_0x3a24('0x1'));var zipdir=require(_0x3a24('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3a24('0x3'));var moment=require('moment');var BPromise=require(_0x3a24('0x4'));var Mustache=require(_0x3a24('0x5'));var util=require(_0x3a24('0x6'));var path=require(_0x3a24('0x7'));var sox=require(_0x3a24('0x8'));var csv=require(_0x3a24('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3a24('0xa'));var _=require('lodash');var squel=require(_0x3a24('0xb'));var crypto=require(_0x3a24('0xc'));var jsforce=require(_0x3a24('0xd'));var deskjs=require(_0x3a24('0xe'));var toCsv=require(_0x3a24('0x9'));var querystring=require(_0x3a24('0xf'));var Papa=require(_0x3a24('0x10'));var Redis=require('ioredis');var authService=require(_0x3a24('0x11'));var qs=require(_0x3a24('0x12'));var as=require(_0x3a24('0x13'));var hardwareService=require(_0x3a24('0x14'));var logger=require('../../config/logger')(_0x3a24('0x15'));var utils=require(_0x3a24('0x16'));var config=require(_0x3a24('0x17'));var licenseUtil=require(_0x3a24('0x18'));var db=require(_0x3a24('0x19'))['db'];function respondWithStatusCode(_0x5bd172,_0xef8d1a){_0xef8d1a=_0xef8d1a||0xcc;return function(_0x52cbc2){if(_0x52cbc2){return _0x5bd172[_0x3a24('0x1a')](_0xef8d1a);}return _0x5bd172[_0x3a24('0x1b')](_0xef8d1a)[_0x3a24('0x1c')]();};}function respondWithResult(_0x5189d7,_0x334830){_0x334830=_0x334830||0xc8;return function(_0x21be02){if(_0x21be02){return _0x5189d7[_0x3a24('0x1b')](_0x334830)[_0x3a24('0x1d')](_0x21be02);}};}function respondWithFilteredResult(_0x3e2f19,_0x39241c){return function(_0x2e3c45){if(_0x2e3c45){var _0x693d0f=typeof _0x39241c[_0x3a24('0x1e')]==='undefined'&&typeof _0x39241c[_0x3a24('0x1f')]===_0x3a24('0x20');var _0x527923=_0x2e3c45['count'];var _0x3cfb0d=_0x693d0f?0x0:_0x39241c[_0x3a24('0x1e')];var _0x661e11=_0x693d0f?_0x2e3c45[_0x3a24('0x21')]:_0x39241c[_0x3a24('0x1e')]+_0x39241c['limit'];var _0x1e3643;if(_0x661e11>=_0x527923){_0x661e11=_0x527923;_0x1e3643=0xc8;}else{_0x1e3643=0xce;}_0x3e2f19[_0x3a24('0x1b')](_0x1e3643);return _0x3e2f19['set'](_0x3a24('0x22'),_0x3cfb0d+'-'+_0x661e11+'/'+_0x527923)[_0x3a24('0x1d')](_0x2e3c45);}return null;};}function patchUpdates(_0x1d07af){return function(_0x55729d){try{jsonpatch[_0x3a24('0x23')](_0x55729d,_0x1d07af,!![]);}catch(_0x1cc25e){return BPromise[_0x3a24('0x24')](_0x1cc25e);}return _0x55729d[_0x3a24('0x25')]();};}function saveUpdates(_0x11bec0,_0x444c52){return function(_0x45de48){if(_0x45de48){return _0x45de48[_0x3a24('0x26')](_0x11bec0)[_0x3a24('0x27')](function(_0x3c71be){return _0x3c71be;});}return null;};}function removeEntity(_0x1fc153,_0x5e6e2d){return function(_0x543e34){if(_0x543e34){return _0x543e34['destroy']()[_0x3a24('0x27')](function(){_0x1fc153[_0x3a24('0x1b')](0xcc)[_0x3a24('0x1c')]();});}};}function handleEntityNotFound(_0x45d20a,_0x524f7b){return function(_0x358f9b){if(!_0x358f9b){_0x45d20a[_0x3a24('0x1a')](0x194);}return _0x358f9b;};}function handleError(_0x5adf6b,_0x5e94a7){_0x5e94a7=_0x5e94a7||0x1f4;return function(_0xe16e4){logger[_0x3a24('0x28')](_0xe16e4[_0x3a24('0x29')]);if(_0xe16e4['name']){delete _0xe16e4[_0x3a24('0x2a')];}_0x5adf6b[_0x3a24('0x1b')](_0x5e94a7)[_0x3a24('0x2b')](_0xe16e4);};}exports[_0x3a24('0x2c')]=function(_0x3afc86,_0x394868){var _0x10d923={},_0x2cf561={},_0x48aae9={'count':0x0,'rows':[]};var _0x48749b=_[_0x3a24('0x2d')](db[_0x3a24('0x2e')]['rawAttributes'],function(_0x130ec9){return{'name':_0x130ec9[_0x3a24('0x2f')],'type':_0x130ec9['type'][_0x3a24('0x30')]};});_0x2cf561[_0x3a24('0x31')]=_[_0x3a24('0x2d')](_0x48749b,_0x3a24('0x2a'));_0x2cf561[_0x3a24('0x32')]=_[_0x3a24('0x33')](_0x3afc86[_0x3a24('0x32')]);_0x2cf561[_0x3a24('0x34')]=_[_0x3a24('0x35')](_0x2cf561[_0x3a24('0x31')],_0x2cf561['query']);_0x10d923[_0x3a24('0x36')]=_['intersection'](_0x2cf561['model'],qs[_0x3a24('0x37')](_0x3afc86[_0x3a24('0x32')]['fields']));_0x10d923[_0x3a24('0x36')]=_0x10d923['attributes'][_0x3a24('0x38')]?_0x10d923['attributes']:_0x2cf561[_0x3a24('0x31')];if(!_0x3afc86[_0x3a24('0x32')]['hasOwnProperty'](_0x3a24('0x39'))){_0x10d923[_0x3a24('0x1f')]=qs[_0x3a24('0x1f')](_0x3afc86[_0x3a24('0x32')]['limit']);_0x10d923[_0x3a24('0x1e')]=qs[_0x3a24('0x1e')](_0x3afc86[_0x3a24('0x32')]['offset']);}_0x10d923[_0x3a24('0x3a')]=qs[_0x3a24('0x3b')](_0x3afc86[_0x3a24('0x32')][_0x3a24('0x3b')]);_0x10d923['where']=qs[_0x3a24('0x34')](_[_0x3a24('0x3c')](_0x3afc86['query'],_0x2cf561['filters']),_0x48749b);if(_0x3afc86[_0x3a24('0x32')][_0x3a24('0x3d')]){_0x10d923[_0x3a24('0x3e')]=_['merge'](_0x10d923[_0x3a24('0x3e')],{'$or':_[_0x3a24('0x2d')](_0x48749b,function(_0x29a51e){if(_0x29a51e['type']!==_0x3a24('0x3f')){var _0x445c1f={};_0x445c1f[_0x29a51e[_0x3a24('0x2a')]]={'$like':'%'+_0x3afc86[_0x3a24('0x32')][_0x3a24('0x3d')]+'%'};return _0x445c1f;}})});}_0x10d923=_[_0x3a24('0x40')]({},_0x10d923,_0x3afc86[_0x3a24('0x41')]);var _0x151615={'where':_0x10d923['where']};return db[_0x3a24('0x2e')]['count'](_0x151615)[_0x3a24('0x27')](function(_0x1394af){_0x48aae9[_0x3a24('0x21')]=_0x1394af;if(_0x3afc86['query'][_0x3a24('0x42')]){_0x10d923['include']=[{'all':!![]}];}return db[_0x3a24('0x2e')][_0x3a24('0x43')](_0x10d923);})['then'](function(_0x305881){_0x48aae9[_0x3a24('0x44')]=_0x305881;return _0x48aae9;})[_0x3a24('0x27')](respondWithFilteredResult(_0x394868,_0x10d923))[_0x3a24('0x45')](handleError(_0x394868,null));};exports[_0x3a24('0x46')]=function(_0x497ae3,_0x336da5){var _0x1a7e3d={'raw':!![],'where':{'id':_0x497ae3[_0x3a24('0x47')]['id']}},_0x4a65cc={};_0x4a65cc[_0x3a24('0x31')]=_[_0x3a24('0x33')](db[_0x3a24('0x2e')][_0x3a24('0x48')]);_0x4a65cc[_0x3a24('0x32')]=_['keys'](_0x497ae3['query']);_0x4a65cc[_0x3a24('0x34')]=_[_0x3a24('0x35')](_0x4a65cc['model'],_0x4a65cc[_0x3a24('0x32')]);_0x1a7e3d[_0x3a24('0x36')]=_['intersection'](_0x4a65cc[_0x3a24('0x31')],qs[_0x3a24('0x37')](_0x497ae3[_0x3a24('0x32')][_0x3a24('0x37')]));_0x1a7e3d[_0x3a24('0x36')]=_0x1a7e3d[_0x3a24('0x36')]['length']?_0x1a7e3d[_0x3a24('0x36')]:_0x4a65cc[_0x3a24('0x31')];if(_0x497ae3[_0x3a24('0x32')]['includeAll']){_0x1a7e3d['include']=[{'all':!![]}];}_0x1a7e3d=_['merge']({},_0x1a7e3d,_0x497ae3[_0x3a24('0x41')]);return db[_0x3a24('0x2e')]['find'](_0x1a7e3d)[_0x3a24('0x27')](handleEntityNotFound(_0x336da5,null))[_0x3a24('0x27')](respondWithResult(_0x336da5,null))[_0x3a24('0x45')](handleError(_0x336da5,null));};exports[_0x3a24('0x49')]=function(_0x4dfb8f,_0x44a54f){return db[_0x3a24('0x2e')][_0x3a24('0x49')](_0x4dfb8f[_0x3a24('0x4a')],{})[_0x3a24('0x27')](respondWithResult(_0x44a54f,0xc9))[_0x3a24('0x45')](handleError(_0x44a54f,null));};exports[_0x3a24('0x26')]=function(_0x198a75,_0x1994f3){if(_0x198a75[_0x3a24('0x4a')]['id']){delete _0x198a75[_0x3a24('0x4a')]['id'];}return db[_0x3a24('0x2e')]['find']({'where':{'id':_0x198a75[_0x3a24('0x47')]['id']}})['then'](handleEntityNotFound(_0x1994f3,null))[_0x3a24('0x27')](saveUpdates(_0x198a75[_0x3a24('0x4a')],null))[_0x3a24('0x27')](respondWithResult(_0x1994f3,null))[_0x3a24('0x45')](handleError(_0x1994f3,null));};exports[_0x3a24('0x4b')]=function(_0x5decee,_0x2a88a0){return db[_0x3a24('0x2e')][_0x3a24('0x4c')]({'where':{'id':_0x5decee[_0x3a24('0x47')]['id']}})[_0x3a24('0x27')](handleEntityNotFound(_0x2a88a0,null))[_0x3a24('0x27')](removeEntity(_0x2a88a0,null))[_0x3a24('0x45')](handleError(_0x2a88a0,null));};
\ No newline at end of file
index 1c74681..68ae56d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b77=['api','request-promise','path','../../config/environment','./intDynamics365Field.attributes','exports','int_dynamics365_fields','dynamics365_unique_index','FieldId','util','../../config/logger'];(function(_0x53041d,_0x20b56d){var _0x593d98=function(_0x551ea2){while(--_0x551ea2){_0x53041d['push'](_0x53041d['shift']());}};_0x593d98(++_0x20b56d);}(_0x1b77,0xf0));var _0x71b7=function(_0x218687,_0x2d47d1){_0x218687=_0x218687-0x0;var _0x24329f=_0x1b77[_0x218687];return _0x24329f;};'use strict';var _=require('lodash');var util=require(_0x71b7('0x0'));var logger=require(_0x71b7('0x1'))(_0x71b7('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x71b7('0x3'));var fs=require('fs');var path=require(_0x71b7('0x4'));var rimraf=require('rimraf');var config=require(_0x71b7('0x5'));var attributes=require(_0x71b7('0x6'));module[_0x71b7('0x7')]=function(_0x34519f,_0x5e2c5b){return _0x34519f['define']('Dynamics365Field',attributes,{'tableName':_0x71b7('0x8'),'paranoid':![],'indexes':[{'name':_0x71b7('0x9'),'fields':['idField',_0x71b7('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3cfb=['dynamics365_unique_index','FieldId','lodash','api','moment','bluebird','request-promise','path','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x3cfb,0x113));var _0xb3cf=function(_0x3493cb,_0x3a246e){_0x3493cb=_0x3493cb-0x0;var _0x2356a5=_0x3cfb[_0x3493cb];return _0x2356a5;};'use strict';var _=require(_0xb3cf('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb3cf('0x1'));var moment=require(_0xb3cf('0x2'));var BPromise=require(_0xb3cf('0x3'));var rp=require(_0xb3cf('0x4'));var fs=require('fs');var path=require(_0xb3cf('0x5'));var rimraf=require('rimraf');var config=require(_0xb3cf('0x6'));var attributes=require(_0xb3cf('0x7'));module[_0xb3cf('0x8')]=function(_0x5aafd7,_0x70a89f){return _0x5aafd7[_0xb3cf('0x9')](_0xb3cf('0xa'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0xb3cf('0xb'),'fields':['idField',_0xb3cf('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 92c46a4..17c8f14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1901=['result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','code','Dynamics365Field,\x20%s,\x20%s','message','info'];(function(_0xa13313,_0xcf709e){var _0x48ee48=function(_0x1ba259){while(--_0x1ba259){_0xa13313['push'](_0xa13313['shift']());}};_0x48ee48(++_0xcf709e);}(_0x1901,0x1b9));var _0x1190=function(_0x157712,_0xc29e01){_0x157712=_0x157712-0x0;var _0x23e9d9=_0x1901[_0x157712];return _0x23e9d9;};'use strict';var _=require(_0x1190('0x0'));var util=require(_0x1190('0x1'));var moment=require('moment');var BPromise=require(_0x1190('0x2'));var rs=require(_0x1190('0x3'));var fs=require('fs');var Redis=require(_0x1190('0x4'));var db=require(_0x1190('0x5'))['db'];var utils=require(_0x1190('0x6'));var logger=require(_0x1190('0x7'))(_0x1190('0x8'));var config=require(_0x1190('0x9'));var jayson=require(_0x1190('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x641615,_0x57adec,_0x1a0ded){return new BPromise(function(_0x3bffb7,_0x53bc81){return client[_0x1190('0xb')](_0x641615,_0x1a0ded)[_0x1190('0xc')](function(_0x361459){logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x57adec,_0x1190('0xd'));logger[_0x1190('0xe')](_0x1190('0xf'),_0x57adec,_0x1190('0xd'),JSON['stringify'](_0x361459));if(_0x361459[_0x1190('0x10')]){if(_0x361459[_0x1190('0x10')][_0x1190('0x11')]===0x1f4){logger['error'](_0x1190('0x12'),_0x57adec,_0x361459[_0x1190('0x10')][_0x1190('0x13')]);return _0x53bc81(_0x361459[_0x1190('0x10')]['message']);}logger[_0x1190('0x10')](_0x1190('0x12'),_0x57adec,_0x361459[_0x1190('0x10')]['message']);return _0x3bffb7(_0x361459['error'][_0x1190('0x13')]);}else{logger[_0x1190('0x14')](_0x1190('0x12'),_0x57adec,'request\x20sent');_0x3bffb7(_0x361459[_0x1190('0x15')][_0x1190('0x13')]);}})['catch'](function(_0x8ba948){logger['error'](_0x1190('0x12'),_0x57adec,_0x8ba948);_0x53bc81(_0x8ba948);});});}
\ No newline at end of file
+var _0xae5a=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','request','then','info','Dynamics365Field,\x20%s,\x20%s','Dynamics365Field,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x37fdd0,_0x5d522d){var _0x1c927c=function(_0xde8082){while(--_0xde8082){_0x37fdd0['push'](_0x37fdd0['shift']());}};_0x1c927c(++_0x5d522d);}(_0xae5a,0x110));var _0xaae5=function(_0x20b34f,_0x587b6){_0x20b34f=_0x20b34f-0x0;var _0x374c87=_0xae5a[_0x20b34f];return _0x374c87;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xaae5('0x0'));var BPromise=require(_0xaae5('0x1'));var rs=require(_0xaae5('0x2'));var fs=require('fs');var Redis=require(_0xaae5('0x3'));var db=require(_0xaae5('0x4'))['db'];var utils=require(_0xaae5('0x5'));var logger=require(_0xaae5('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xaae5('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x265832,_0x314347,_0x19aa9f){return new BPromise(function(_0x3a82ae,_0x4dfacb){return client[_0xaae5('0x8')](_0x265832,_0x19aa9f)[_0xaae5('0x9')](function(_0x16a8ee){logger[_0xaae5('0xa')](_0xaae5('0xb'),_0x314347,'request\x20sent');logger['debug'](_0xaae5('0xc'),_0x314347,_0xaae5('0xd'),JSON[_0xaae5('0xe')](_0x16a8ee));if(_0x16a8ee[_0xaae5('0xf')]){if(_0x16a8ee[_0xaae5('0xf')]['code']===0x1f4){logger[_0xaae5('0xf')](_0xaae5('0xb'),_0x314347,_0x16a8ee['error'][_0xaae5('0x10')]);return _0x4dfacb(_0x16a8ee[_0xaae5('0xf')][_0xaae5('0x10')]);}logger[_0xaae5('0xf')]('Dynamics365Field,\x20%s,\x20%s',_0x314347,_0x16a8ee['error']['message']);return _0x3a82ae(_0x16a8ee['error'][_0xaae5('0x10')]);}else{logger['info'](_0xaae5('0xb'),_0x314347,_0xaae5('0xd'));_0x3a82ae(_0x16a8ee['result'][_0xaae5('0x10')]);}})['catch'](function(_0x1b3744){logger[_0xaae5('0xf')](_0xaae5('0xb'),_0x314347,_0x1b3744);_0x4dfacb(_0x1b3744);});});}
\ No newline at end of file
index cade46a..4eb4f89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x085d=['/:id/configurations','/:id/fields','getFields','post','create','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id'];(function(_0x27fc25,_0x1cbcd1){var _0x9ede0=function(_0x33b54d){while(--_0x33b54d){_0x27fc25['push'](_0x27fc25['shift']());}};_0x9ede0(++_0x1cbcd1);}(_0x085d,0x162));var _0xd085=function(_0x324e86,_0x81b1cb){_0x324e86=_0x324e86-0x0;var _0x592846=_0x085d[_0x324e86];return _0x592846;};'use strict';var multer=require('multer');var util=require(_0xd085('0x0'));var path=require(_0xd085('0x1'));var timeout=require(_0xd085('0x2'));var express=require(_0xd085('0x3'));var router=express[_0xd085('0x4')]();var fs_extra=require(_0xd085('0x5'));var auth=require(_0xd085('0x6'));var interaction=require(_0xd085('0x7'));var config=require(_0xd085('0x8'));var controller=require(_0xd085('0x9'));router[_0xd085('0xa')]('/',auth[_0xd085('0xb')](),controller[_0xd085('0xc')]);router[_0xd085('0xa')](_0xd085('0xd'),auth[_0xd085('0xb')](),controller['show']);router['get'](_0xd085('0xe'),auth[_0xd085('0xb')](),controller['getConfigurations']);router['get'](_0xd085('0xf'),auth[_0xd085('0xb')](),controller[_0xd085('0x10')]);router[_0xd085('0x11')]('/',auth[_0xd085('0xb')](),controller[_0xd085('0x12')]);router[_0xd085('0x11')](_0xd085('0xe'),auth[_0xd085('0xb')](),controller['addConfiguration']);router['put'](_0xd085('0xd'),auth[_0xd085('0xb')](),controller[_0xd085('0x13')]);router[_0xd085('0x14')](_0xd085('0xd'),auth[_0xd085('0xb')](),controller[_0xd085('0x15')]);module[_0xd085('0x16')]=router;
\ No newline at end of file
+var _0x93a8=['express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','destroy','exports','multer','util','path','connect-timeout'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0x93a8,0x188));var _0x893a=function(_0x15f4b5,_0x20d1f7){_0x15f4b5=_0x15f4b5-0x0;var _0xfc2e40=_0x93a8[_0x15f4b5];return _0xfc2e40;};'use strict';var multer=require(_0x893a('0x0'));var util=require(_0x893a('0x1'));var path=require(_0x893a('0x2'));var timeout=require(_0x893a('0x3'));var express=require(_0x893a('0x4'));var router=express['Router']();var fs_extra=require(_0x893a('0x5'));var auth=require(_0x893a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x893a('0x7'));var controller=require('./intFreshdeskAccount.controller');router[_0x893a('0x8')]('/',auth[_0x893a('0x9')](),controller[_0x893a('0xa')]);router[_0x893a('0x8')](_0x893a('0xb'),auth[_0x893a('0x9')](),controller[_0x893a('0xc')]);router[_0x893a('0x8')](_0x893a('0xd'),auth[_0x893a('0x9')](),controller[_0x893a('0xe')]);router[_0x893a('0x8')](_0x893a('0xf'),auth['isAuthenticated'](),controller[_0x893a('0x10')]);router[_0x893a('0x11')]('/',auth[_0x893a('0x9')](),controller[_0x893a('0x12')]);router[_0x893a('0x11')](_0x893a('0xd'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x893a('0x13')](_0x893a('0xb'),auth[_0x893a('0x9')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x893a('0x14')]);module[_0x893a('0x15')]=router;
\ No newline at end of file
index 323c262..90712ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3b=['sequelize','exports','STRING'];(function(_0x54d52,_0x2473ba){var _0x968345=function(_0x3fcd06){while(--_0x3fcd06){_0x54d52['push'](_0x54d52['shift']());}};_0x968345(++_0x2473ba);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x57532c,_0x2c75cf){_0x57532c=_0x57532c-0x0;var _0x5cb9a6=_0xeb3b[_0x57532c];return _0x5cb9a6;};'use strict';var Sequelize=require(_0xbeb3('0x0'));module[_0xbeb3('0x1')]={'name':{'type':Sequelize[_0xbeb3('0x2')]},'description':{'type':Sequelize[_0xbeb3('0x2')]},'username':{'type':Sequelize[_0xbeb3('0x2')],'unique':'username'},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xbeb3('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xbeb3('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xd824=['exports','STRING','username','remoteUri','sequelize'];(function(_0x1b12f8,_0x17deb4){var _0x1e46c2=function(_0x4279b5){while(--_0x4279b5){_0x1b12f8['push'](_0x1b12f8['shift']());}};_0x1e46c2(++_0x17deb4);}(_0xd824,0xc2));var _0x4d82=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xd824[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require(_0x4d82('0x0'));module[_0x4d82('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x4d82('0x2')],'unique':_0x4d82('0x3')},'apiKey':{'type':Sequelize[_0x4d82('0x2')]},'remoteUri':{'type':Sequelize[_0x4d82('0x2')],'unique':_0x4d82('0x4')},'serverUrl':{'type':Sequelize[_0x4d82('0x2')],'allowNull':![]}};
\ No newline at end of file
index 4223f0f..c706e09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b20=['../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','merge','create','body','find','findOne','FreshdeskConfiguration','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','FreshdeskField','getFields','remoteUri','apiKey','substring','lastIndexOf','GET','api/v2/ticket_fields','Basic\x20%s','toString','requester','subject','agent','description','priority','group','source','includes','default','custom_text','custom_dropdown','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x56a180,_0x2a7d4f){var _0x47ae52=function(_0x2e24b0){while(--_0x2e24b0){_0x56a180['push'](_0x56a180['shift']());}};_0x47ae52(++_0x2a7d4f);}(_0x6b20,0xd1));var _0x06b2=function(_0x11f066,_0x43b2de){_0x11f066=_0x11f066-0x0;var _0x916b9d=_0x6b20[_0x11f066];return _0x916b9d;};'use strict';var emlformat=require(_0x06b2('0x0'));var rimraf=require(_0x06b2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x06b2('0x2'));var rp=require('request-promise');var moment=require(_0x06b2('0x3'));var BPromise=require(_0x06b2('0x4'));var Mustache=require(_0x06b2('0x5'));var util=require('util');var path=require(_0x06b2('0x6'));var sox=require(_0x06b2('0x7'));var csv=require(_0x06b2('0x8'));var ejs=require(_0x06b2('0x9'));var fs=require('fs');var fs_extra=require(_0x06b2('0xa'));var _=require(_0x06b2('0xb'));var squel=require(_0x06b2('0xc'));var crypto=require('crypto');var jsforce=require(_0x06b2('0xd'));var deskjs=require(_0x06b2('0xe'));var toCsv=require(_0x06b2('0x8'));var querystring=require('querystring');var Papa=require(_0x06b2('0xf'));var Redis=require('ioredis');var authService=require(_0x06b2('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x06b2('0x11'));var logger=require(_0x06b2('0x12'))('api');var utils=require(_0x06b2('0x13'));var config=require(_0x06b2('0x14'));var licenseUtil=require(_0x06b2('0x15'));var db=require(_0x06b2('0x16'))['db'];var integrations=require(_0x06b2('0x17'));function respondWithStatusCode(_0x810a12,_0x3039c9){_0x3039c9=_0x3039c9||0xcc;return function(_0x926bf6){if(_0x926bf6){return _0x810a12[_0x06b2('0x18')](_0x3039c9);}return _0x810a12[_0x06b2('0x19')](_0x3039c9)[_0x06b2('0x1a')]();};}function respondWithResult(_0x2822e9,_0x26faee){_0x26faee=_0x26faee||0xc8;return function(_0x544de8){if(_0x544de8){return _0x2822e9[_0x06b2('0x19')](_0x26faee)[_0x06b2('0x1b')](_0x544de8);}};}function respondWithFilteredResult(_0x47496c,_0x3830e9){return function(_0xef0466){if(_0xef0466){var _0x45d5c5=typeof _0x3830e9['offset']===_0x06b2('0x1c')&&typeof _0x3830e9[_0x06b2('0x1d')]==='undefined';var _0x1e16d1=_0xef0466['count'];var _0x4c9cae=_0x45d5c5?0x0:_0x3830e9[_0x06b2('0x1e')];var _0x1b4ab0=_0x45d5c5?_0xef0466[_0x06b2('0x1f')]:_0x3830e9[_0x06b2('0x1e')]+_0x3830e9['limit'];var _0x288801;if(_0x1b4ab0>=_0x1e16d1){_0x1b4ab0=_0x1e16d1;_0x288801=0xc8;}else{_0x288801=0xce;}_0x47496c[_0x06b2('0x19')](_0x288801);return _0x47496c[_0x06b2('0x20')](_0x06b2('0x21'),_0x4c9cae+'-'+_0x1b4ab0+'/'+_0x1e16d1)[_0x06b2('0x1b')](_0xef0466);}return null;};}function patchUpdates(_0x368ad8){return function(_0x268e7d){try{jsonpatch['apply'](_0x268e7d,_0x368ad8,!![]);}catch(_0x18c9a9){return BPromise[_0x06b2('0x22')](_0x18c9a9);}return _0x268e7d[_0x06b2('0x23')]();};}function saveUpdates(_0x208384,_0x4e2a4c){return function(_0x4fa84f){if(_0x4fa84f){return _0x4fa84f[_0x06b2('0x24')](_0x208384)[_0x06b2('0x25')](function(_0x4fc95f){return _0x4fc95f;});}return null;};}function removeEntity(_0x39659f,_0x5e40f2){return function(_0x3d58c6){if(_0x3d58c6){return _0x3d58c6[_0x06b2('0x26')]()[_0x06b2('0x25')](function(){_0x39659f['status'](0xcc)[_0x06b2('0x1a')]();});}};}function handleEntityNotFound(_0x306ce,_0xc65820){return function(_0x1a94dc){if(!_0x1a94dc){_0x306ce[_0x06b2('0x18')](0x194);}return _0x1a94dc;};}function handleError(_0x4f5e90,_0xbb00ea){_0xbb00ea=_0xbb00ea||0x1f4;return function(_0x34370b){logger[_0x06b2('0x27')](_0x34370b[_0x06b2('0x28')]);if(_0x34370b[_0x06b2('0x29')]){delete _0x34370b[_0x06b2('0x29')];}_0x4f5e90['status'](_0xbb00ea)[_0x06b2('0x2a')](_0x34370b);};}exports[_0x06b2('0x2b')]=function(_0x2720fa,_0x13c0eb){var _0x1f02d8={},_0x1bfaa9={},_0x3668bb={'count':0x0,'rows':[]};var _0x51698b=_[_0x06b2('0x2c')](db[_0x06b2('0x2d')][_0x06b2('0x2e')],function(_0x15a78b){return{'name':_0x15a78b[_0x06b2('0x2f')],'type':_0x15a78b[_0x06b2('0x30')][_0x06b2('0x31')]};});_0x1bfaa9[_0x06b2('0x32')]=_['map'](_0x51698b,_0x06b2('0x29'));_0x1bfaa9[_0x06b2('0x33')]=_[_0x06b2('0x34')](_0x2720fa[_0x06b2('0x33')]);_0x1bfaa9[_0x06b2('0x35')]=_[_0x06b2('0x36')](_0x1bfaa9[_0x06b2('0x32')],_0x1bfaa9['query']);_0x1f02d8['attributes']=_[_0x06b2('0x36')](_0x1bfaa9[_0x06b2('0x32')],qs[_0x06b2('0x37')](_0x2720fa['query'][_0x06b2('0x37')]));_0x1f02d8[_0x06b2('0x38')]=_0x1f02d8[_0x06b2('0x38')][_0x06b2('0x39')]?_0x1f02d8[_0x06b2('0x38')]:_0x1bfaa9[_0x06b2('0x32')];if(!_0x2720fa['query'][_0x06b2('0x3a')](_0x06b2('0x3b'))){_0x1f02d8[_0x06b2('0x1d')]=qs['limit'](_0x2720fa[_0x06b2('0x33')][_0x06b2('0x1d')]);_0x1f02d8['offset']=qs[_0x06b2('0x1e')](_0x2720fa[_0x06b2('0x33')][_0x06b2('0x1e')]);}_0x1f02d8[_0x06b2('0x3c')]=qs[_0x06b2('0x3d')](_0x2720fa[_0x06b2('0x33')][_0x06b2('0x3d')]);_0x1f02d8[_0x06b2('0x3e')]=qs[_0x06b2('0x35')](_[_0x06b2('0x3f')](_0x2720fa[_0x06b2('0x33')],_0x1bfaa9[_0x06b2('0x35')]),_0x51698b);if(_0x2720fa['query'][_0x06b2('0x40')]){_0x1f02d8['where']=_['merge'](_0x1f02d8[_0x06b2('0x3e')],{'$or':_['map'](_0x51698b,function(_0x26ab14){if(_0x26ab14['type']!==_0x06b2('0x41')){var _0x369673={};_0x369673[_0x26ab14[_0x06b2('0x29')]]={'$like':'%'+_0x2720fa[_0x06b2('0x33')][_0x06b2('0x40')]+'%'};return _0x369673;}})});}_0x1f02d8=_['merge']({},_0x1f02d8,_0x2720fa[_0x06b2('0x42')]);var _0xee3ec6={'where':_0x1f02d8[_0x06b2('0x3e')]};return db[_0x06b2('0x2d')][_0x06b2('0x1f')](_0xee3ec6)[_0x06b2('0x25')](function(_0x5f2549){_0x3668bb[_0x06b2('0x1f')]=_0x5f2549;if(_0x2720fa[_0x06b2('0x33')]['includeAll']){_0x1f02d8['include']=[{'all':!![]}];}return db[_0x06b2('0x2d')][_0x06b2('0x43')](_0x1f02d8);})[_0x06b2('0x25')](function(_0x3a8452){_0x3668bb[_0x06b2('0x44')]=_0x3a8452;return _0x3668bb;})[_0x06b2('0x25')](respondWithFilteredResult(_0x13c0eb,_0x1f02d8))[_0x06b2('0x45')](handleError(_0x13c0eb,null));};exports[_0x06b2('0x46')]=function(_0x2e2a80,_0x117bf4){var _0x1d7750={'raw':![],'where':{'id':_0x2e2a80[_0x06b2('0x47')]['id']}},_0xf9b9e={};_0xf9b9e[_0x06b2('0x32')]=_[_0x06b2('0x34')](db[_0x06b2('0x2d')][_0x06b2('0x2e')]);_0xf9b9e[_0x06b2('0x33')]=_[_0x06b2('0x34')](_0x2e2a80['query']);_0xf9b9e[_0x06b2('0x35')]=_[_0x06b2('0x36')](_0xf9b9e[_0x06b2('0x32')],_0xf9b9e[_0x06b2('0x33')]);_0x1d7750['attributes']=_[_0x06b2('0x36')](_0xf9b9e[_0x06b2('0x32')],qs['fields'](_0x2e2a80[_0x06b2('0x33')][_0x06b2('0x37')]));_0x1d7750['attributes']=_0x1d7750[_0x06b2('0x38')][_0x06b2('0x39')]?_0x1d7750['attributes']:_0xf9b9e['model'];if(_0x2e2a80['query'][_0x06b2('0x48')]){_0x1d7750[_0x06b2('0x49')]=[{'all':!![]}];}_0x1d7750=_[_0x06b2('0x4a')]({},_0x1d7750,_0x2e2a80[_0x06b2('0x42')]);return db[_0x06b2('0x2d')]['find'](_0x1d7750)['then'](handleEntityNotFound(_0x117bf4,null))[_0x06b2('0x25')](respondWithResult(_0x117bf4,null))[_0x06b2('0x45')](handleError(_0x117bf4,null));};exports[_0x06b2('0x4b')]=function(_0x1f4d89,_0x33ac29){return db[_0x06b2('0x2d')]['create'](_0x1f4d89[_0x06b2('0x4c')],{})[_0x06b2('0x25')](respondWithResult(_0x33ac29,0xc9))[_0x06b2('0x45')](handleError(_0x33ac29,null));};exports[_0x06b2('0x24')]=function(_0x146c5c,_0x36a74a){if(_0x146c5c['body']['id']){delete _0x146c5c[_0x06b2('0x4c')]['id'];}return db[_0x06b2('0x2d')][_0x06b2('0x4d')]({'where':{'id':_0x146c5c[_0x06b2('0x47')]['id']}})['then'](handleEntityNotFound(_0x36a74a,null))[_0x06b2('0x25')](saveUpdates(_0x146c5c[_0x06b2('0x4c')],null))[_0x06b2('0x25')](respondWithResult(_0x36a74a,null))[_0x06b2('0x45')](handleError(_0x36a74a,null));};exports['destroy']=function(_0x346f04,_0x8cf9fe){return db[_0x06b2('0x2d')][_0x06b2('0x4d')]({'where':{'id':_0x346f04[_0x06b2('0x47')]['id']}})[_0x06b2('0x25')](handleEntityNotFound(_0x8cf9fe,null))[_0x06b2('0x25')](removeEntity(_0x8cf9fe,null))[_0x06b2('0x45')](handleError(_0x8cf9fe,null));};exports['getConfigurations']=function(_0x33bc8e,_0x8288ae,_0x318a3b){var _0x5c328c={};var _0x2857d5={};var _0x2f75a0;var _0x4fba4c;return db['FreshdeskAccount'][_0x06b2('0x4e')]({'where':{'id':_0x33bc8e['params']['id']}})['then'](handleEntityNotFound(_0x8288ae,null))[_0x06b2('0x25')](function(_0x5899c1){if(_0x5899c1){_0x2f75a0=_0x5899c1;_0x2857d5[_0x06b2('0x32')]=_[_0x06b2('0x34')](db[_0x06b2('0x4f')][_0x06b2('0x2e')]);_0x2857d5[_0x06b2('0x33')]=_[_0x06b2('0x34')](_0x33bc8e[_0x06b2('0x33')]);_0x2857d5[_0x06b2('0x35')]=_[_0x06b2('0x36')](_0x2857d5[_0x06b2('0x32')],_0x2857d5['query']);_0x5c328c['attributes']=_[_0x06b2('0x36')](_0x2857d5[_0x06b2('0x32')],qs['fields'](_0x33bc8e[_0x06b2('0x33')][_0x06b2('0x37')]));_0x5c328c[_0x06b2('0x38')]=_0x5c328c[_0x06b2('0x38')]['length']?_0x5c328c['attributes']:_0x2857d5['model'];_0x5c328c[_0x06b2('0x3c')]=qs['sort'](_0x33bc8e['query'][_0x06b2('0x3d')]);_0x5c328c[_0x06b2('0x3e')]=qs[_0x06b2('0x35')](_[_0x06b2('0x3f')](_0x33bc8e[_0x06b2('0x33')],_0x2857d5[_0x06b2('0x35')]));if(_0x33bc8e['query'][_0x06b2('0x40')]){_0x5c328c[_0x06b2('0x3e')]=_['merge'](_0x5c328c[_0x06b2('0x3e')],{'$or':_[_0x06b2('0x2c')](_0x5c328c[_0x06b2('0x38')],function(_0x2e0388){var _0x23ce27={};_0x23ce27[_0x2e0388]={'$like':'%'+_0x33bc8e[_0x06b2('0x33')][_0x06b2('0x40')]+'%'};return _0x23ce27;})});}_0x5c328c=_[_0x06b2('0x4a')]({},_0x5c328c,_0x33bc8e[_0x06b2('0x42')]);return _0x2f75a0[_0x06b2('0x50')](_0x5c328c);}})[_0x06b2('0x25')](function(_0x397b16){if(_0x397b16){_0x4fba4c=_0x397b16['length'];if(!_0x33bc8e[_0x06b2('0x33')][_0x06b2('0x3a')]('nolimit')){_0x5c328c[_0x06b2('0x1d')]=qs[_0x06b2('0x1d')](_0x33bc8e[_0x06b2('0x33')][_0x06b2('0x1d')]);_0x5c328c['offset']=qs[_0x06b2('0x1e')](_0x33bc8e[_0x06b2('0x33')][_0x06b2('0x1e')]);}return _0x2f75a0['getConfigurations'](_0x5c328c);}})[_0x06b2('0x25')](function(_0x1ad9f7){if(_0x1ad9f7){return _0x1ad9f7?{'count':_0x4fba4c,'rows':_0x1ad9f7}:null;}})[_0x06b2('0x25')](respondWithResult(_0x8288ae,null))[_0x06b2('0x45')](handleError(_0x8288ae,null));};exports[_0x06b2('0x51')]=function(_0x43b907,_0x1aae55,_0x10faea){if(_0x43b907[_0x06b2('0x4c')]['id']){delete _0x43b907['body']['id'];}return db['FreshdeskAccount']['findOne']({'where':{'id':_0x43b907['params']['id']}})[_0x06b2('0x25')](handleEntityNotFound(_0x1aae55,null))['then'](function(_0x200a6e){if(_0x200a6e){_0x43b907[_0x06b2('0x4c')][_0x06b2('0x52')]=_0x200a6e['id'];_0x43b907[_0x06b2('0x4c')][_0x06b2('0x53')]=integrations[_0x06b2('0x54')](_0x43b907['body']['channel'],_0x43b907[_0x06b2('0x4c')][_0x06b2('0x30')]);_0x43b907['body'][_0x06b2('0x55')]=integrations[_0x06b2('0x56')](_0x43b907[_0x06b2('0x4c')][_0x06b2('0x57')],_0x43b907[_0x06b2('0x4c')][_0x06b2('0x30')]);return db['FreshdeskConfiguration'][_0x06b2('0x4b')](_0x43b907['body'],{'include':[{'model':db[_0x06b2('0x58')],'as':_0x06b2('0x53')},{'model':db[_0x06b2('0x58')],'as':'Descriptions'}]});}return null;})[_0x06b2('0x25')](respondWithResult(_0x1aae55,null))[_0x06b2('0x45')](handleError(_0x1aae55,null));};exports[_0x06b2('0x59')]=function(_0x4cc763,_0xc1010,_0x4900d2){var _0x15b345='';return db[_0x06b2('0x2d')][_0x06b2('0x4e')]({'where':{'id':_0x4cc763[_0x06b2('0x47')]['id']},'attributes':['id',_0x06b2('0x5a'),_0x06b2('0x5b')]})['then'](handleEntityNotFound(_0xc1010,null))[_0x06b2('0x25')](function(_0x711305){if(_0x711305){_0x15b345=_0x711305[_0x06b2('0x5a')];var _0x1857e8=_0x15b345['slice'](-0x1);if(_0x1857e8==='/'){_0x15b345=_0x15b345[_0x06b2('0x5c')](0x0,_0x15b345[_0x06b2('0x5d')](_0x1857e8));}return rp({'method':_0x06b2('0x5e'),'uri':util['format']('%s/%s',_0x15b345,_0x06b2('0x5f')),'headers':{'Authorization':util['format'](_0x06b2('0x60'),new Buffer(util['format']('%s:X',_0x711305[_0x06b2('0x5b')]))[_0x06b2('0x61')]('base64'))},'json':!![]});}})[_0x06b2('0x25')](function(_0x15f107){if(_0x15f107){var _0x206d66=[_0x06b2('0x62'),_0x06b2('0x63'),_0x06b2('0x64'),_0x06b2('0x65'),_0x06b2('0x19'),_0x06b2('0x66'),_0x06b2('0x67'),_0x06b2('0x68'),'ticket_type',_0x06b2('0x67'),'company'];_['remove'](_0x15f107,function(_0x3257b9){return _0x206d66[_0x06b2('0x69')](_0x3257b9['name'])||!_0x3257b9[_0x06b2('0x6a')]&&_0x3257b9[_0x06b2('0x30')]!==_0x06b2('0x6b')&&_0x3257b9['type']!==_0x06b2('0x6c');});return{'count':_0x15f107[_0x06b2('0x39')],'rows':_['map'](_0x15f107,function(_0x4797a1){return{'id':_0x4797a1['name'],'name':_0x4797a1['label'],'custom':!_0x4797a1[_0x06b2('0x6a')],'options':_0x4797a1['choices']?_[_0x06b2('0x2c')](_0x4797a1[_0x06b2('0x6d')],function(_0x1b1e6c){return{'name':_[_0x06b2('0x6e')](_0x1b1e6c),'value':_0x1b1e6c};}):[]};})};}})[_0x06b2('0x25')](respondWithResult(_0xc1010,null))[_0x06b2('0x45')](function(_0x406101){var _0x444725=_0x4cc763[_0x06b2('0x33')][_0x06b2('0x6f')]?0x1f4:_0x406101[_0x06b2('0x70')]||0x1f4;logger[_0x06b2('0x27')](_0x06b2('0x71'),'getFields',_0x444725,JSON['stringify'](_0x406101));delete _0x406101[_0x06b2('0x29')];if(_0x444725===0x191){_0x444725=0x190;}_0xc1010[_0x06b2('0x19')](_0x444725)[_0x06b2('0x2a')](_0x4cc763[_0x06b2('0x33')][_0x06b2('0x6f')]?{'message':_0x06b2('0x72'),'statusCode':_0x406101['statusCode']}:_0x406101);});};
\ No newline at end of file
+var _0x1120=['undefined','count','Content-Range','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','attributes','intersection','fields','length','model','hasOwnProperty','limit','order','sort','where','filters','pick','VIRTUAL','merge','options','includeAll','FreshdeskAccount','findAll','catch','show','keys','include','find','create','body','destroy','getConfigurations','params','filter','findOne','AccountId','Subjects','Descriptions','getDescriptions','channel','FreshdeskField','getFields','apiKey','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','toString','base64','requester','subject','agent','description','priority','source','ticket_type','group','company','remove','default','custom_dropdown','label','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','end','status','json','offset'];(function(_0x5773ed,_0x2270ce){var _0x4a75d9=function(_0x31a9a3){while(--_0x31a9a3){_0x5773ed['push'](_0x5773ed['shift']());}};_0x4a75d9(++_0x2270ce);}(_0x1120,0x140));var _0x0112=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0x1120[_0x5d80de];return _0x1c7556;};'use strict';var emlformat=require(_0x0112('0x0'));var rimraf=require(_0x0112('0x1'));var zipdir=require(_0x0112('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0112('0x3'));var util=require(_0x0112('0x4'));var path=require(_0x0112('0x5'));var sox=require(_0x0112('0x6'));var csv=require(_0x0112('0x7'));var ejs=require(_0x0112('0x8'));var fs=require('fs');var fs_extra=require(_0x0112('0x9'));var _=require(_0x0112('0xa'));var squel=require(_0x0112('0xb'));var crypto=require(_0x0112('0xc'));var jsforce=require(_0x0112('0xd'));var deskjs=require(_0x0112('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0112('0xf'));var Papa=require(_0x0112('0x10'));var Redis=require(_0x0112('0x11'));var authService=require(_0x0112('0x12'));var qs=require(_0x0112('0x13'));var as=require(_0x0112('0x14'));var hardwareService=require(_0x0112('0x15'));var logger=require('../../config/logger')(_0x0112('0x16'));var utils=require(_0x0112('0x17'));var config=require(_0x0112('0x18'));var licenseUtil=require(_0x0112('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0x0112('0x1a'));function respondWithStatusCode(_0x394926,_0xb58a0b){_0xb58a0b=_0xb58a0b||0xcc;return function(_0x140750){if(_0x140750){return _0x394926['sendStatus'](_0xb58a0b);}return _0x394926['status'](_0xb58a0b)[_0x0112('0x1b')]();};}function respondWithResult(_0x4d591e,_0x19dd06){_0x19dd06=_0x19dd06||0xc8;return function(_0x4a5758){if(_0x4a5758){return _0x4d591e[_0x0112('0x1c')](_0x19dd06)[_0x0112('0x1d')](_0x4a5758);}};}function respondWithFilteredResult(_0xe2ec19,_0x1a2549){return function(_0x54269a){if(_0x54269a){var _0x3544bd=typeof _0x1a2549[_0x0112('0x1e')]===_0x0112('0x1f')&&typeof _0x1a2549['limit']==='undefined';var _0xb3e59c=_0x54269a['count'];var _0x5c2236=_0x3544bd?0x0:_0x1a2549['offset'];var _0x19f10e=_0x3544bd?_0x54269a[_0x0112('0x20')]:_0x1a2549['offset']+_0x1a2549['limit'];var _0x63114;if(_0x19f10e>=_0xb3e59c){_0x19f10e=_0xb3e59c;_0x63114=0xc8;}else{_0x63114=0xce;}_0xe2ec19[_0x0112('0x1c')](_0x63114);return _0xe2ec19['set'](_0x0112('0x21'),_0x5c2236+'-'+_0x19f10e+'/'+_0xb3e59c)['json'](_0x54269a);}return null;};}function patchUpdates(_0x51ac2d){return function(_0x57a7a2){try{jsonpatch[_0x0112('0x22')](_0x57a7a2,_0x51ac2d,!![]);}catch(_0x18d8e5){return BPromise[_0x0112('0x23')](_0x18d8e5);}return _0x57a7a2['save']();};}function saveUpdates(_0x3dd2aa,_0xf92cb4){return function(_0x8a6919){if(_0x8a6919){return _0x8a6919[_0x0112('0x24')](_0x3dd2aa)['then'](function(_0x33cb56){return _0x33cb56;});}return null;};}function removeEntity(_0x408bb8,_0x2d99c1){return function(_0x54fa8b){if(_0x54fa8b){return _0x54fa8b['destroy']()[_0x0112('0x25')](function(){_0x408bb8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x27252e,_0x4a583e){return function(_0x82541c){if(!_0x82541c){_0x27252e['sendStatus'](0x194);}return _0x82541c;};}function handleError(_0x32035e,_0x58e5){_0x58e5=_0x58e5||0x1f4;return function(_0x2cb207){logger[_0x0112('0x26')](_0x2cb207[_0x0112('0x27')]);if(_0x2cb207[_0x0112('0x28')]){delete _0x2cb207[_0x0112('0x28')];}_0x32035e[_0x0112('0x1c')](_0x58e5)[_0x0112('0x29')](_0x2cb207);};}exports[_0x0112('0x2a')]=function(_0x36669c,_0x52aabd){var _0x6d44bb={},_0x51d4fe={},_0x1a13d8={'count':0x0,'rows':[]};var _0x4682be=_[_0x0112('0x2b')](db['FreshdeskAccount'][_0x0112('0x2c')],function(_0x4a7dc7){return{'name':_0x4a7dc7[_0x0112('0x2d')],'type':_0x4a7dc7[_0x0112('0x2e')][_0x0112('0x2f')]};});_0x51d4fe['model']=_['map'](_0x4682be,'name');_0x51d4fe[_0x0112('0x30')]=_['keys'](_0x36669c['query']);_0x51d4fe['filters']=_['intersection'](_0x51d4fe['model'],_0x51d4fe[_0x0112('0x30')]);_0x6d44bb[_0x0112('0x31')]=_[_0x0112('0x32')](_0x51d4fe['model'],qs[_0x0112('0x33')](_0x36669c[_0x0112('0x30')]['fields']));_0x6d44bb[_0x0112('0x31')]=_0x6d44bb['attributes'][_0x0112('0x34')]?_0x6d44bb['attributes']:_0x51d4fe[_0x0112('0x35')];if(!_0x36669c[_0x0112('0x30')][_0x0112('0x36')]('nolimit')){_0x6d44bb['limit']=qs['limit'](_0x36669c['query'][_0x0112('0x37')]);_0x6d44bb[_0x0112('0x1e')]=qs[_0x0112('0x1e')](_0x36669c[_0x0112('0x30')][_0x0112('0x1e')]);}_0x6d44bb[_0x0112('0x38')]=qs[_0x0112('0x39')](_0x36669c[_0x0112('0x30')][_0x0112('0x39')]);_0x6d44bb[_0x0112('0x3a')]=qs[_0x0112('0x3b')](_[_0x0112('0x3c')](_0x36669c[_0x0112('0x30')],_0x51d4fe[_0x0112('0x3b')]),_0x4682be);if(_0x36669c['query']['filter']){_0x6d44bb['where']=_['merge'](_0x6d44bb[_0x0112('0x3a')],{'$or':_['map'](_0x4682be,function(_0x464554){if(_0x464554['type']!==_0x0112('0x3d')){var _0x8e29fc={};_0x8e29fc[_0x464554[_0x0112('0x28')]]={'$like':'%'+_0x36669c[_0x0112('0x30')]['filter']+'%'};return _0x8e29fc;}})});}_0x6d44bb=_[_0x0112('0x3e')]({},_0x6d44bb,_0x36669c[_0x0112('0x3f')]);var _0x468efb={'where':_0x6d44bb[_0x0112('0x3a')]};return db['FreshdeskAccount']['count'](_0x468efb)['then'](function(_0x34bb6e){_0x1a13d8[_0x0112('0x20')]=_0x34bb6e;if(_0x36669c[_0x0112('0x30')][_0x0112('0x40')]){_0x6d44bb['include']=[{'all':!![]}];}return db[_0x0112('0x41')][_0x0112('0x42')](_0x6d44bb);})[_0x0112('0x25')](function(_0x1cad31){_0x1a13d8['rows']=_0x1cad31;return _0x1a13d8;})[_0x0112('0x25')](respondWithFilteredResult(_0x52aabd,_0x6d44bb))[_0x0112('0x43')](handleError(_0x52aabd,null));};exports[_0x0112('0x44')]=function(_0x5782d5,_0x934ee6){var _0x143e00={'raw':![],'where':{'id':_0x5782d5['params']['id']}},_0x223e11={};_0x223e11[_0x0112('0x35')]=_[_0x0112('0x45')](db[_0x0112('0x41')][_0x0112('0x2c')]);_0x223e11[_0x0112('0x30')]=_[_0x0112('0x45')](_0x5782d5['query']);_0x223e11[_0x0112('0x3b')]=_['intersection'](_0x223e11[_0x0112('0x35')],_0x223e11[_0x0112('0x30')]);_0x143e00[_0x0112('0x31')]=_[_0x0112('0x32')](_0x223e11[_0x0112('0x35')],qs['fields'](_0x5782d5['query']['fields']));_0x143e00['attributes']=_0x143e00[_0x0112('0x31')][_0x0112('0x34')]?_0x143e00['attributes']:_0x223e11[_0x0112('0x35')];if(_0x5782d5[_0x0112('0x30')][_0x0112('0x40')]){_0x143e00[_0x0112('0x46')]=[{'all':!![]}];}_0x143e00=_['merge']({},_0x143e00,_0x5782d5[_0x0112('0x3f')]);return db[_0x0112('0x41')][_0x0112('0x47')](_0x143e00)[_0x0112('0x25')](handleEntityNotFound(_0x934ee6,null))['then'](respondWithResult(_0x934ee6,null))['catch'](handleError(_0x934ee6,null));};exports[_0x0112('0x48')]=function(_0x3016ec,_0x166ac9){return db['FreshdeskAccount'][_0x0112('0x48')](_0x3016ec[_0x0112('0x49')],{})[_0x0112('0x25')](respondWithResult(_0x166ac9,0xc9))[_0x0112('0x43')](handleError(_0x166ac9,null));};exports['update']=function(_0x2962d6,_0x337edf){if(_0x2962d6[_0x0112('0x49')]['id']){delete _0x2962d6['body']['id'];}return db[_0x0112('0x41')][_0x0112('0x47')]({'where':{'id':_0x2962d6['params']['id']}})[_0x0112('0x25')](handleEntityNotFound(_0x337edf,null))[_0x0112('0x25')](saveUpdates(_0x2962d6['body'],null))['then'](respondWithResult(_0x337edf,null))['catch'](handleError(_0x337edf,null));};exports[_0x0112('0x4a')]=function(_0x51a56c,_0x218363){return db['FreshdeskAccount']['find']({'where':{'id':_0x51a56c['params']['id']}})[_0x0112('0x25')](handleEntityNotFound(_0x218363,null))[_0x0112('0x25')](removeEntity(_0x218363,null))['catch'](handleError(_0x218363,null));};exports[_0x0112('0x4b')]=function(_0x402580,_0x198cb4,_0x2b181c){var _0x13f61b={};var _0x5896e7={};var _0x50d6b0;var _0x5c0a67;return db[_0x0112('0x41')]['findOne']({'where':{'id':_0x402580[_0x0112('0x4c')]['id']}})[_0x0112('0x25')](handleEntityNotFound(_0x198cb4,null))[_0x0112('0x25')](function(_0x235671){if(_0x235671){_0x50d6b0=_0x235671;_0x5896e7[_0x0112('0x35')]=_[_0x0112('0x45')](db['FreshdeskConfiguration']['rawAttributes']);_0x5896e7[_0x0112('0x30')]=_[_0x0112('0x45')](_0x402580['query']);_0x5896e7[_0x0112('0x3b')]=_[_0x0112('0x32')](_0x5896e7[_0x0112('0x35')],_0x5896e7['query']);_0x13f61b[_0x0112('0x31')]=_[_0x0112('0x32')](_0x5896e7[_0x0112('0x35')],qs['fields'](_0x402580['query']['fields']));_0x13f61b['attributes']=_0x13f61b[_0x0112('0x31')][_0x0112('0x34')]?_0x13f61b[_0x0112('0x31')]:_0x5896e7['model'];_0x13f61b[_0x0112('0x38')]=qs[_0x0112('0x39')](_0x402580[_0x0112('0x30')][_0x0112('0x39')]);_0x13f61b['where']=qs[_0x0112('0x3b')](_['pick'](_0x402580[_0x0112('0x30')],_0x5896e7[_0x0112('0x3b')]));if(_0x402580[_0x0112('0x30')][_0x0112('0x4d')]){_0x13f61b[_0x0112('0x3a')]=_['merge'](_0x13f61b['where'],{'$or':_[_0x0112('0x2b')](_0x13f61b['attributes'],function(_0x465755){var _0xf32135={};_0xf32135[_0x465755]={'$like':'%'+_0x402580[_0x0112('0x30')][_0x0112('0x4d')]+'%'};return _0xf32135;})});}_0x13f61b=_['merge']({},_0x13f61b,_0x402580[_0x0112('0x3f')]);return _0x50d6b0[_0x0112('0x4b')](_0x13f61b);}})[_0x0112('0x25')](function(_0x267bde){if(_0x267bde){_0x5c0a67=_0x267bde[_0x0112('0x34')];if(!_0x402580[_0x0112('0x30')][_0x0112('0x36')]('nolimit')){_0x13f61b['limit']=qs[_0x0112('0x37')](_0x402580[_0x0112('0x30')]['limit']);_0x13f61b['offset']=qs['offset'](_0x402580[_0x0112('0x30')][_0x0112('0x1e')]);}return _0x50d6b0['getConfigurations'](_0x13f61b);}})[_0x0112('0x25')](function(_0x4bc323){if(_0x4bc323){return _0x4bc323?{'count':_0x5c0a67,'rows':_0x4bc323}:null;}})[_0x0112('0x25')](respondWithResult(_0x198cb4,null))[_0x0112('0x43')](handleError(_0x198cb4,null));};exports['addConfiguration']=function(_0x390e34,_0x2e299d,_0x107e9c){if(_0x390e34[_0x0112('0x49')]['id']){delete _0x390e34['body']['id'];}return db[_0x0112('0x41')][_0x0112('0x4e')]({'where':{'id':_0x390e34[_0x0112('0x4c')]['id']}})[_0x0112('0x25')](handleEntityNotFound(_0x2e299d,null))[_0x0112('0x25')](function(_0x12aa2f){if(_0x12aa2f){_0x390e34[_0x0112('0x49')][_0x0112('0x4f')]=_0x12aa2f['id'];_0x390e34['body'][_0x0112('0x50')]=integrations['getSubjects'](_0x390e34[_0x0112('0x49')]['channel'],_0x390e34[_0x0112('0x49')]['type']);_0x390e34[_0x0112('0x49')][_0x0112('0x51')]=integrations[_0x0112('0x52')](_0x390e34[_0x0112('0x49')][_0x0112('0x53')],_0x390e34['body'][_0x0112('0x2e')]);return db['FreshdeskConfiguration'][_0x0112('0x48')](_0x390e34[_0x0112('0x49')],{'include':[{'model':db[_0x0112('0x54')],'as':_0x0112('0x50')},{'model':db[_0x0112('0x54')],'as':_0x0112('0x51')}]});}return null;})[_0x0112('0x25')](respondWithResult(_0x2e299d,null))[_0x0112('0x43')](handleError(_0x2e299d,null));};exports[_0x0112('0x55')]=function(_0x3d14e5,_0x35fc57,_0x27c223){var _0x399a92='';return db[_0x0112('0x41')]['findOne']({'where':{'id':_0x3d14e5[_0x0112('0x4c')]['id']},'attributes':['id','remoteUri',_0x0112('0x56')]})[_0x0112('0x25')](handleEntityNotFound(_0x35fc57,null))[_0x0112('0x25')](function(_0x38acf3){if(_0x38acf3){_0x399a92=_0x38acf3[_0x0112('0x57')];var _0x51327d=_0x399a92[_0x0112('0x58')](-0x1);if(_0x51327d==='/'){_0x399a92=_0x399a92[_0x0112('0x59')](0x0,_0x399a92[_0x0112('0x5a')](_0x51327d));}return rp({'method':_0x0112('0x5b'),'uri':util[_0x0112('0x5c')](_0x0112('0x5d'),_0x399a92,_0x0112('0x5e')),'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(util[_0x0112('0x5c')]('%s:X',_0x38acf3[_0x0112('0x56')]))[_0x0112('0x5f')](_0x0112('0x60')))},'json':!![]});}})[_0x0112('0x25')](function(_0x4a3f5a){if(_0x4a3f5a){var _0x26b845=[_0x0112('0x61'),_0x0112('0x62'),_0x0112('0x63'),_0x0112('0x64'),_0x0112('0x1c'),_0x0112('0x65'),'group',_0x0112('0x66'),_0x0112('0x67'),_0x0112('0x68'),_0x0112('0x69')];_[_0x0112('0x6a')](_0x4a3f5a,function(_0x55b1fb){return _0x26b845['includes'](_0x55b1fb['name'])||!_0x55b1fb[_0x0112('0x6b')]&&_0x55b1fb['type']!=='custom_text'&&_0x55b1fb['type']!==_0x0112('0x6c');});return{'count':_0x4a3f5a[_0x0112('0x34')],'rows':_['map'](_0x4a3f5a,function(_0x2b69f9){return{'id':_0x2b69f9[_0x0112('0x28')],'name':_0x2b69f9[_0x0112('0x6d')],'custom':!_0x2b69f9['default'],'options':_0x2b69f9[_0x0112('0x6e')]?_[_0x0112('0x2b')](_0x2b69f9['choices'],function(_0x444dcc){return{'name':_[_0x0112('0x6f')](_0x444dcc),'value':_0x444dcc};}):[]};})};}})['then'](respondWithResult(_0x35fc57,null))[_0x0112('0x43')](function(_0x45bdbb){var _0x11ae68=_0x3d14e5[_0x0112('0x30')][_0x0112('0x70')]?0x1f4:_0x45bdbb[_0x0112('0x71')]||0x1f4;logger[_0x0112('0x26')](_0x0112('0x72'),_0x0112('0x55'),_0x11ae68,JSON[_0x0112('0x73')](_0x45bdbb));delete _0x45bdbb['name'];if(_0x11ae68===0x191){_0x11ae68=0x190;}_0x35fc57[_0x0112('0x1c')](_0x11ae68)[_0x0112('0x29')](_0x3d14e5['query'][_0x0112('0x70')]?{'message':_0x0112('0x74'),'statusCode':_0x45bdbb[_0x0112('0x71')]}:_0x45bdbb);});};
\ No newline at end of file
index d6e1379..15e75db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2771=['moment','bluebird','request-promise','./intFreshdeskAccount.attributes','exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x2771,0x74));var _0x1277=function(_0x3595d5,_0x5f2c14){_0x3595d5=_0x3595d5-0x0;var _0x2b4725=_0x2771[_0x3595d5];return _0x2b4725;};'use strict';var _=require(_0x1277('0x0'));var util=require(_0x1277('0x1'));var logger=require(_0x1277('0x2'))(_0x1277('0x3'));var moment=require(_0x1277('0x4'));var BPromise=require(_0x1277('0x5'));var rp=require(_0x1277('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1277('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x1277('0x8')]=function(_0x595356,_0x442ca2){return _0x595356[_0x1277('0x9')](_0x1277('0xa'),attributes,{'tableName':_0x1277('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xac85=['int_freshdesk_accounts','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','FreshdeskAccount'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xac85,0x1c9));var _0x5ac8=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xac85[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x5ac8('0x0'));var util=require('util');var logger=require(_0x5ac8('0x1'))(_0x5ac8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5ac8('0x3'));var fs=require('fs');var path=require(_0x5ac8('0x4'));var rimraf=require(_0x5ac8('0x5'));var config=require(_0x5ac8('0x6'));var attributes=require(_0x5ac8('0x7'));var integrations=require(_0x5ac8('0x8'));module[_0x5ac8('0x9')]=function(_0x4a247c,_0x2805f8){return _0x4a247c['define'](_0x5ac8('0xa'),attributes,{'tableName':_0x5ac8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3ec6441..b9162cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x331c=['FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','limit','include','attributes','map','model','then','ShowFreshdeskAccount','find','lodash','moment','ioredis','../../config/logger','../../config/environment','jayson/promise','http','request'];(function(_0x3bd1b1,_0x37ec08){var _0x36e5dd=function(_0x3121cc){while(--_0x3121cc){_0x3bd1b1['push'](_0x3bd1b1['shift']());}};_0x36e5dd(++_0x37ec08);}(_0x331c,0xf0));var _0xc331=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x331c[_0x580576];return _0x3f55a0;};'use strict';var _=require(_0xc331('0x0'));var util=require('util');var moment=require(_0xc331('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc331('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc331('0x3'))('rpc');var config=require(_0xc331('0x4'));var jayson=require(_0xc331('0x5'));var client=jayson['client'][_0xc331('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x200d28,_0x51aac6,_0x39a886){return new BPromise(function(_0x194bda,_0x634450){return client[_0xc331('0x7')](_0x200d28,_0x39a886)['then'](function(_0x15c4ac){logger['info'](_0xc331('0x8'),_0x51aac6,_0xc331('0x9'));logger[_0xc331('0xa')](_0xc331('0xb'),_0x51aac6,_0xc331('0x9'),JSON[_0xc331('0xc')](_0x15c4ac));if(_0x15c4ac[_0xc331('0xd')]){if(_0x15c4ac[_0xc331('0xd')][_0xc331('0xe')]===0x1f4){logger['error'](_0xc331('0x8'),_0x51aac6,_0x15c4ac[_0xc331('0xd')][_0xc331('0xf')]);return _0x634450(_0x15c4ac[_0xc331('0xd')][_0xc331('0xf')]);}logger[_0xc331('0xd')]('FreshdeskAccount,\x20%s,\x20%s',_0x51aac6,_0x15c4ac[_0xc331('0xd')][_0xc331('0xf')]);return _0x194bda(_0x15c4ac['error'][_0xc331('0xf')]);}else{logger[_0xc331('0x10')](_0xc331('0x8'),_0x51aac6,_0xc331('0x9'));_0x194bda(_0x15c4ac['result']['message']);}})[_0xc331('0x11')](function(_0x18e6df){logger['error'](_0xc331('0x8'),_0x51aac6,_0x18e6df);_0x634450(_0x18e6df);});});}exports[_0xc331('0x12')]=function(_0x4ee88d){var _0x24f515=this;return new Promise(function(_0x43299a,_0x5207d5){return db[_0xc331('0x13')][_0xc331('0x14')]({'raw':_0x4ee88d[_0xc331('0x15')]?_0x4ee88d[_0xc331('0x15')][_0xc331('0x16')]===undefined?!![]:![]:!![],'where':_0x4ee88d['options']?_0x4ee88d[_0xc331('0x15')]['where']||null:null,'attributes':_0x4ee88d[_0xc331('0x15')]?_0x4ee88d[_0xc331('0x15')]['attributes']||null:null,'limit':_0x4ee88d[_0xc331('0x15')]?_0x4ee88d[_0xc331('0x15')][_0xc331('0x17')]||null:null,'include':_0x4ee88d['options']?_0x4ee88d[_0xc331('0x15')][_0xc331('0x18')]?_['map'](_0x4ee88d[_0xc331('0x15')]['include'],function(_0x5c1501){return{'model':db[_0x5c1501['model']],'as':_0x5c1501['as'],'attributes':_0x5c1501[_0xc331('0x19')],'include':_0x5c1501['include']?_[_0xc331('0x1a')](_0x5c1501[_0xc331('0x18')],function(_0x16ea9f){return{'model':db[_0x16ea9f[_0xc331('0x1b')]],'as':_0x16ea9f['as'],'attributes':_0x16ea9f['attributes'],'include':_0x16ea9f[_0xc331('0x18')]?_['map'](_0x16ea9f['include'],function(_0x55338e){return{'model':db[_0x55338e[_0xc331('0x1b')]],'as':_0x55338e['as'],'attributes':_0x55338e[_0xc331('0x19')]};}):[]};}):[]};}):[]:[]})[_0xc331('0x1c')](function(_0x4dafd){logger[_0xc331('0x10')](_0xc331('0x12'),_0x4ee88d);logger[_0xc331('0xa')](_0xc331('0x12'),_0x4ee88d,JSON[_0xc331('0xc')](_0x4dafd));_0x43299a(_0x4dafd);})[_0xc331('0x11')](function(_0x345ae4){logger[_0xc331('0xd')]('GetFreshdeskAccount',_0x345ae4[_0xc331('0xf')],_0x4ee88d);_0x5207d5(_0x24f515[_0xc331('0xd')](0x1f4,_0x345ae4['message']));});});};exports[_0xc331('0x1d')]=function(_0x553f5d){var _0xa0f460=this;return new Promise(function(_0x5c1898,_0x3360e4){return db['FreshdeskAccount'][_0xc331('0x1e')]({'raw':_0x553f5d[_0xc331('0x15')]?_0x553f5d[_0xc331('0x15')][_0xc331('0x16')]===undefined?!![]:![]:!![],'where':_0x553f5d[_0xc331('0x15')]?_0x553f5d[_0xc331('0x15')]['where']||null:null,'attributes':_0x553f5d['options']?_0x553f5d[_0xc331('0x15')]['attributes']||null:null,'include':_0x553f5d[_0xc331('0x15')]?_0x553f5d['options'][_0xc331('0x18')]?_[_0xc331('0x1a')](_0x553f5d['options'][_0xc331('0x18')],function(_0x6627ce){return{'model':db[_0x6627ce[_0xc331('0x1b')]],'as':_0x6627ce['as'],'attributes':_0x6627ce[_0xc331('0x19')],'include':_0x6627ce[_0xc331('0x18')]?_[_0xc331('0x1a')](_0x6627ce[_0xc331('0x18')],function(_0x483041){return{'model':db[_0x483041[_0xc331('0x1b')]],'as':_0x483041['as'],'attributes':_0x483041[_0xc331('0x19')],'include':_0x483041['include']?_[_0xc331('0x1a')](_0x483041[_0xc331('0x18')],function(_0x426dfe){return{'model':db[_0x426dfe[_0xc331('0x1b')]],'as':_0x426dfe['as'],'attributes':_0x426dfe[_0xc331('0x19')]};}):[]};}):[]};}):[]:[]})[_0xc331('0x1c')](function(_0x5314a3){logger['info'](_0xc331('0x1d'),_0x553f5d);logger['debug']('ShowFreshdeskAccount',_0x553f5d,JSON[_0xc331('0xc')](_0x5314a3));_0x5c1898(_0x5314a3);})['catch'](function(_0x5aa491){logger[_0xc331('0xd')](_0xc331('0x1d'),_0x5aa491[_0xc331('0xf')],_0x553f5d);_0x3360e4(_0xa0f460['error'](0x1f4,_0x5aa491['message']));});});};
\ No newline at end of file
+var _0x8ca9=['stringify','error','code','message','result','catch','FreshdeskAccount','findAll','options','raw','where','limit','map','include','attributes','model','GetFreshdeskAccount','debug','ShowFreshdeskAccount','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s'];(function(_0x11651a,_0x2635bc){var _0x276916=function(_0x32bec0){while(--_0x32bec0){_0x11651a['push'](_0x11651a['shift']());}};_0x276916(++_0x2635bc);}(_0x8ca9,0x101));var _0x98ca=function(_0x3c73b3,_0x4618bb){_0x3c73b3=_0x3c73b3-0x0;var _0x5ac5e8=_0x8ca9[_0x3c73b3];return _0x5ac5e8;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x98ca('0x0'));var rs=require(_0x98ca('0x1'));var fs=require('fs');var Redis=require(_0x98ca('0x2'));var db=require(_0x98ca('0x3'))['db'];var utils=require(_0x98ca('0x4'));var logger=require(_0x98ca('0x5'))(_0x98ca('0x6'));var config=require(_0x98ca('0x7'));var jayson=require(_0x98ca('0x8'));var client=jayson[_0x98ca('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x92d5ee,_0x3993a1,_0x53a101){return new BPromise(function(_0x39bcbf,_0x3755e6){return client['request'](_0x92d5ee,_0x53a101)[_0x98ca('0xa')](function(_0x1673e3){logger[_0x98ca('0xb')](_0x98ca('0xc'),_0x3993a1,_0x98ca('0xd'));logger['debug'](_0x98ca('0xe'),_0x3993a1,_0x98ca('0xd'),JSON[_0x98ca('0xf')](_0x1673e3));if(_0x1673e3['error']){if(_0x1673e3[_0x98ca('0x10')][_0x98ca('0x11')]===0x1f4){logger[_0x98ca('0x10')](_0x98ca('0xc'),_0x3993a1,_0x1673e3[_0x98ca('0x10')][_0x98ca('0x12')]);return _0x3755e6(_0x1673e3['error'][_0x98ca('0x12')]);}logger['error'](_0x98ca('0xc'),_0x3993a1,_0x1673e3['error'][_0x98ca('0x12')]);return _0x39bcbf(_0x1673e3[_0x98ca('0x10')][_0x98ca('0x12')]);}else{logger[_0x98ca('0xb')](_0x98ca('0xc'),_0x3993a1,_0x98ca('0xd'));_0x39bcbf(_0x1673e3[_0x98ca('0x13')][_0x98ca('0x12')]);}})[_0x98ca('0x14')](function(_0x1d2e65){logger['error'](_0x98ca('0xc'),_0x3993a1,_0x1d2e65);_0x3755e6(_0x1d2e65);});});}exports['GetFreshdeskAccount']=function(_0x8f59e5){var _0x1dfe72=this;return new Promise(function(_0x112016,_0x3d6be7){return db[_0x98ca('0x15')][_0x98ca('0x16')]({'raw':_0x8f59e5[_0x98ca('0x17')]?_0x8f59e5['options'][_0x98ca('0x18')]===undefined?!![]:![]:!![],'where':_0x8f59e5[_0x98ca('0x17')]?_0x8f59e5[_0x98ca('0x17')][_0x98ca('0x19')]||null:null,'attributes':_0x8f59e5[_0x98ca('0x17')]?_0x8f59e5[_0x98ca('0x17')]['attributes']||null:null,'limit':_0x8f59e5[_0x98ca('0x17')]?_0x8f59e5[_0x98ca('0x17')][_0x98ca('0x1a')]||null:null,'include':_0x8f59e5[_0x98ca('0x17')]?_0x8f59e5['options']['include']?_[_0x98ca('0x1b')](_0x8f59e5[_0x98ca('0x17')][_0x98ca('0x1c')],function(_0x1e4557){return{'model':db[_0x1e4557['model']],'as':_0x1e4557['as'],'attributes':_0x1e4557[_0x98ca('0x1d')],'include':_0x1e4557[_0x98ca('0x1c')]?_[_0x98ca('0x1b')](_0x1e4557[_0x98ca('0x1c')],function(_0x26596e){return{'model':db[_0x26596e[_0x98ca('0x1e')]],'as':_0x26596e['as'],'attributes':_0x26596e[_0x98ca('0x1d')],'include':_0x26596e['include']?_[_0x98ca('0x1b')](_0x26596e['include'],function(_0x13f5c7){return{'model':db[_0x13f5c7['model']],'as':_0x13f5c7['as'],'attributes':_0x13f5c7['attributes']};}):[]};}):[]};}):[]:[]})[_0x98ca('0xa')](function(_0x47f0e5){logger['info'](_0x98ca('0x1f'),_0x8f59e5);logger[_0x98ca('0x20')](_0x98ca('0x1f'),_0x8f59e5,JSON[_0x98ca('0xf')](_0x47f0e5));_0x112016(_0x47f0e5);})[_0x98ca('0x14')](function(_0x21a05f){logger['error'](_0x98ca('0x1f'),_0x21a05f[_0x98ca('0x12')],_0x8f59e5);_0x3d6be7(_0x1dfe72['error'](0x1f4,_0x21a05f[_0x98ca('0x12')]));});});};exports[_0x98ca('0x21')]=function(_0x21f9ea){var _0x4c0f1e=this;return new Promise(function(_0x267770,_0x188515){return db['FreshdeskAccount']['find']({'raw':_0x21f9ea[_0x98ca('0x17')]?_0x21f9ea['options'][_0x98ca('0x18')]===undefined?!![]:![]:!![],'where':_0x21f9ea[_0x98ca('0x17')]?_0x21f9ea['options'][_0x98ca('0x19')]||null:null,'attributes':_0x21f9ea[_0x98ca('0x17')]?_0x21f9ea[_0x98ca('0x17')]['attributes']||null:null,'include':_0x21f9ea[_0x98ca('0x17')]?_0x21f9ea['options'][_0x98ca('0x1c')]?_[_0x98ca('0x1b')](_0x21f9ea[_0x98ca('0x17')][_0x98ca('0x1c')],function(_0x115b55){return{'model':db[_0x115b55[_0x98ca('0x1e')]],'as':_0x115b55['as'],'attributes':_0x115b55[_0x98ca('0x1d')],'include':_0x115b55['include']?_[_0x98ca('0x1b')](_0x115b55[_0x98ca('0x1c')],function(_0x49eca5){return{'model':db[_0x49eca5[_0x98ca('0x1e')]],'as':_0x49eca5['as'],'attributes':_0x49eca5[_0x98ca('0x1d')],'include':_0x49eca5[_0x98ca('0x1c')]?_[_0x98ca('0x1b')](_0x49eca5['include'],function(_0x49fa0e){return{'model':db[_0x49fa0e[_0x98ca('0x1e')]],'as':_0x49fa0e['as'],'attributes':_0x49fa0e[_0x98ca('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3848a3){logger[_0x98ca('0xb')](_0x98ca('0x21'),_0x21f9ea);logger[_0x98ca('0x20')](_0x98ca('0x21'),_0x21f9ea,JSON[_0x98ca('0xf')](_0x3848a3));_0x267770(_0x3848a3);})['catch'](function(_0x53eda7){logger[_0x98ca('0x10')]('ShowFreshdeskAccount',_0x53eda7[_0x98ca('0x12')],_0x21f9ea);_0x188515(_0x4c0f1e['error'](0x1f4,_0x53eda7[_0x98ca('0x12')]));});});};
\ No newline at end of file
index 6807611..e83915a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fba=['post','create','/:id/tags','setTags','put','update','delete','destroy','exports','util','express','Router','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x126314,_0x1882ba){var _0x157913=function(_0x5a60a6){while(--_0x5a60a6){_0x126314['push'](_0x126314['shift']());}};_0x157913(++_0x1882ba);}(_0x8fba,0x11c));var _0xa8fb=function(_0x38b066,_0x30da52){_0x38b066=_0x38b066-0x0;var _0x49ce46=_0x8fba[_0x38b066];return _0x49ce46;};'use strict';var multer=require('multer');var util=require(_0xa8fb('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa8fb('0x1'));var router=express[_0xa8fb('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xa8fb('0x3'));var interaction=require(_0xa8fb('0x4'));var config=require('../../config/environment');var controller=require(_0xa8fb('0x5'));router[_0xa8fb('0x6')]('/',auth[_0xa8fb('0x7')](),controller[_0xa8fb('0x8')]);router['get'](_0xa8fb('0x9'),auth[_0xa8fb('0x7')](),controller['show']);router['get'](_0xa8fb('0xa'),auth[_0xa8fb('0x7')](),controller[_0xa8fb('0xb')]);router[_0xa8fb('0x6')](_0xa8fb('0xc'),auth[_0xa8fb('0x7')](),controller[_0xa8fb('0xd')]);router[_0xa8fb('0x6')](_0xa8fb('0xe'),auth[_0xa8fb('0x7')](),controller[_0xa8fb('0xf')]);router['get']('/:id/tags',auth['isAuthenticated'](),controller['getTags']);router[_0xa8fb('0x10')]('/',auth[_0xa8fb('0x7')](),controller[_0xa8fb('0x11')]);router[_0xa8fb('0x10')](_0xa8fb('0x12'),auth[_0xa8fb('0x7')](),controller[_0xa8fb('0x13')]);router[_0xa8fb('0x14')](_0xa8fb('0x9'),auth[_0xa8fb('0x7')](),controller[_0xa8fb('0x15')]);router[_0xa8fb('0x16')]('/:id',auth[_0xa8fb('0x7')](),controller[_0xa8fb('0x17')]);module[_0xa8fb('0x18')]=router;
\ No newline at end of file
+var _0x69c0=['/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','getTags','post','create','setTags','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated'];(function(_0x527293,_0x57bde0){var _0x482d4e=function(_0x499cee){while(--_0x499cee){_0x527293['push'](_0x527293['shift']());}};_0x482d4e(++_0x57bde0);}(_0x69c0,0xef));var _0x069c=function(_0x52b37a,_0x100dee){_0x52b37a=_0x52b37a-0x0;var _0x2c1790=_0x69c0[_0x52b37a];return _0x2c1790;};'use strict';var multer=require(_0x069c('0x0'));var util=require(_0x069c('0x1'));var path=require(_0x069c('0x2'));var timeout=require(_0x069c('0x3'));var express=require(_0x069c('0x4'));var router=express[_0x069c('0x5')]();var fs_extra=require(_0x069c('0x6'));var auth=require(_0x069c('0x7'));var interaction=require(_0x069c('0x8'));var config=require(_0x069c('0x9'));var controller=require(_0x069c('0xa'));router[_0x069c('0xb')]('/',auth[_0x069c('0xc')](),controller['index']);router[_0x069c('0xb')](_0x069c('0xd'),auth[_0x069c('0xc')](),controller['show']);router[_0x069c('0xb')](_0x069c('0xe'),auth[_0x069c('0xc')](),controller[_0x069c('0xf')]);router['get'](_0x069c('0x10'),auth['isAuthenticated'](),controller[_0x069c('0x11')]);router[_0x069c('0xb')](_0x069c('0x12'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x069c('0xb')](_0x069c('0x13'),auth[_0x069c('0xc')](),controller[_0x069c('0x14')]);router[_0x069c('0x15')]('/',auth[_0x069c('0xc')](),controller[_0x069c('0x16')]);router[_0x069c('0x15')](_0x069c('0x13'),auth[_0x069c('0xc')](),controller[_0x069c('0x17')]);router[_0x069c('0x18')](_0x069c('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x069c('0x19')](_0x069c('0xd'),auth['isAuthenticated'](),controller[_0x069c('0x1a')]);module[_0x069c('0x1b')]=router;
\ No newline at end of file
index 171efdd..a0968c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb857=['STRING','exports'];(function(_0x5d8780,_0x56d9ca){var _0x4f96e0=function(_0xcf26a2){while(--_0xcf26a2){_0x5d8780['push'](_0x5d8780['shift']());}};_0x4f96e0(++_0x56d9ca);}(_0xb857,0x151));var _0x7b85=function(_0x406cd2,_0x107433){_0x406cd2=_0x406cd2-0x0;var _0x5c1b13=_0xb857[_0x406cd2];return _0x5c1b13;};'use strict';var Sequelize=require('sequelize');module[_0x7b85('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7b85('0x1')]}};
\ No newline at end of file
+var _0x9393=['exports','STRING','sequelize'];(function(_0x31fcd8,_0x1f65c6){var _0x2439f5=function(_0x323a7a){while(--_0x323a7a){_0x31fcd8['push'](_0x31fcd8['shift']());}};_0x2439f5(++_0x1f65c6);}(_0x9393,0x137));var _0x3939=function(_0x47e1b1,_0x47a7cc){_0x47e1b1=_0x47e1b1-0x0;var _0x105afd=_0x9393[_0x47e1b1];return _0x105afd;};'use strict';var Sequelize=require(_0x3939('0x0'));module[_0x3939('0x1')]={'name':{'type':Sequelize[_0x3939('0x2')]},'description':{'type':Sequelize[_0x3939('0x2')]}};
\ No newline at end of file
index 8ec16d7..a40f3fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9874=['name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','sort','where','filters','pick','filter','merge','options','include','FreshdeskConfiguration','show','params','length','find','catch','create','update','body','getFields','order','getSubjects','findOne','FreshdeskField','hasOwnProperty','getDescriptions','getTags','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','destroy','then','error','stack'];(function(_0x4a9beb,_0x159482){var _0x2d4c58=function(_0x28dabf){while(--_0x28dabf){_0x4a9beb['push'](_0x4a9beb['shift']());}};_0x2d4c58(++_0x159482);}(_0x9874,0x7b));var _0x4987=function(_0x4a40d1,_0x42858c){_0x4a40d1=_0x4a40d1-0x0;var _0x3e1cca=_0x9874[_0x4a40d1];return _0x3e1cca;};'use strict';var emlformat=require(_0x4987('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4987('0x1'));var jsonpatch=require(_0x4987('0x2'));var rp=require(_0x4987('0x3'));var moment=require('moment');var BPromise=require(_0x4987('0x4'));var Mustache=require(_0x4987('0x5'));var util=require(_0x4987('0x6'));var path=require(_0x4987('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4987('0x8'));var fs=require('fs');var fs_extra=require(_0x4987('0x9'));var _=require('lodash');var squel=require(_0x4987('0xa'));var crypto=require(_0x4987('0xb'));var jsforce=require(_0x4987('0xc'));var deskjs=require(_0x4987('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4987('0xe'));var Papa=require('papaparse');var Redis=require(_0x4987('0xf'));var authService=require(_0x4987('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x4987('0x11'));var hardwareService=require(_0x4987('0x12'));var logger=require(_0x4987('0x13'))(_0x4987('0x14'));var utils=require('../../config/utils');var config=require(_0x4987('0x15'));var licenseUtil=require(_0x4987('0x16'));var db=require(_0x4987('0x17'))['db'];function respondWithStatusCode(_0x5b5e6b,_0x3fa144){_0x3fa144=_0x3fa144||0xcc;return function(_0x3b27d7){if(_0x3b27d7){return _0x5b5e6b[_0x4987('0x18')](_0x3fa144);}return _0x5b5e6b[_0x4987('0x19')](_0x3fa144)[_0x4987('0x1a')]();};}function respondWithResult(_0x2f100f,_0x579142){_0x579142=_0x579142||0xc8;return function(_0x221cc0){if(_0x221cc0){return _0x2f100f[_0x4987('0x19')](_0x579142)[_0x4987('0x1b')](_0x221cc0);}};}function respondWithFilteredResult(_0x3e2b28,_0x2b22b9){return function(_0x2754f7){if(_0x2754f7){var _0xa7e1f8=typeof _0x2b22b9[_0x4987('0x1c')]===_0x4987('0x1d')&&typeof _0x2b22b9[_0x4987('0x1e')]===_0x4987('0x1d');var _0x2b45fd=_0x2754f7['count'];var _0x3550d8=_0xa7e1f8?0x0:_0x2b22b9[_0x4987('0x1c')];var _0x513076=_0xa7e1f8?_0x2754f7[_0x4987('0x1f')]:_0x2b22b9['offset']+_0x2b22b9[_0x4987('0x1e')];var _0x45d87a;if(_0x513076>=_0x2b45fd){_0x513076=_0x2b45fd;_0x45d87a=0xc8;}else{_0x45d87a=0xce;}_0x3e2b28[_0x4987('0x19')](_0x45d87a);return _0x3e2b28[_0x4987('0x20')](_0x4987('0x21'),_0x3550d8+'-'+_0x513076+'/'+_0x2b45fd)[_0x4987('0x1b')](_0x2754f7);}return null;};}function patchUpdates(_0x5e5a16){return function(_0x28c1e5){try{jsonpatch['apply'](_0x28c1e5,_0x5e5a16,!![]);}catch(_0x24b52a){return BPromise[_0x4987('0x22')](_0x24b52a);}return _0x28c1e5['save']();};}function saveUpdates(_0x435f49,_0x908ba3){return function(_0x29da89){if(_0x29da89){return _0x29da89['update'](_0x435f49)['then'](function(_0x57453d){return _0x57453d;});}return null;};}function removeEntity(_0x42011d,_0x1faee6){return function(_0x47b755){if(_0x47b755){return _0x47b755[_0x4987('0x23')]()[_0x4987('0x24')](function(){_0x42011d[_0x4987('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39e7c9,_0x233dce){return function(_0x3bd826){if(!_0x3bd826){_0x39e7c9['sendStatus'](0x194);}return _0x3bd826;};}function handleError(_0x549129,_0x5700e7){_0x5700e7=_0x5700e7||0x1f4;return function(_0x2303dd){logger[_0x4987('0x25')](_0x2303dd[_0x4987('0x26')]);if(_0x2303dd['name']){delete _0x2303dd[_0x4987('0x27')];}_0x549129[_0x4987('0x19')](_0x5700e7)[_0x4987('0x28')](_0x2303dd);};}exports[_0x4987('0x29')]=function(_0x3e189d,_0x5ad866){var _0x9b8ffd={},_0x653cbb={},_0x4ea34e={'count':0x0,'rows':[]};var _0x300509=_[_0x4987('0x2a')](db['FreshdeskConfiguration'][_0x4987('0x2b')],function(_0x472610){return{'name':_0x472610[_0x4987('0x2c')],'type':_0x472610[_0x4987('0x2d')][_0x4987('0x2e')]};});_0x653cbb[_0x4987('0x2f')]=_[_0x4987('0x2a')](_0x300509,_0x4987('0x27'));_0x653cbb[_0x4987('0x30')]=_[_0x4987('0x31')](_0x3e189d[_0x4987('0x30')]);_0x653cbb['filters']=_[_0x4987('0x32')](_0x653cbb[_0x4987('0x2f')],_0x653cbb[_0x4987('0x30')]);_0x9b8ffd[_0x4987('0x33')]=_[_0x4987('0x32')](_0x653cbb[_0x4987('0x2f')],qs['fields'](_0x3e189d[_0x4987('0x30')][_0x4987('0x34')]));_0x9b8ffd[_0x4987('0x33')]=_0x9b8ffd['attributes']['length']?_0x9b8ffd[_0x4987('0x33')]:_0x653cbb[_0x4987('0x2f')];if(!_0x3e189d[_0x4987('0x30')]['hasOwnProperty'](_0x4987('0x35'))){_0x9b8ffd['limit']=qs[_0x4987('0x1e')](_0x3e189d[_0x4987('0x30')][_0x4987('0x1e')]);_0x9b8ffd['offset']=qs[_0x4987('0x1c')](_0x3e189d[_0x4987('0x30')]['offset']);}_0x9b8ffd['order']=qs['sort'](_0x3e189d[_0x4987('0x30')][_0x4987('0x36')]);_0x9b8ffd[_0x4987('0x37')]=qs[_0x4987('0x38')](_[_0x4987('0x39')](_0x3e189d['query'],_0x653cbb[_0x4987('0x38')]),_0x300509);if(_0x3e189d['query'][_0x4987('0x3a')]){_0x9b8ffd[_0x4987('0x37')]=_[_0x4987('0x3b')](_0x9b8ffd[_0x4987('0x37')],{'$or':_[_0x4987('0x2a')](_0x300509,function(_0x1b8cbc){if(_0x1b8cbc['type']!=='VIRTUAL'){var _0x42bc95={};_0x42bc95[_0x1b8cbc[_0x4987('0x27')]]={'$like':'%'+_0x3e189d[_0x4987('0x30')][_0x4987('0x3a')]+'%'};return _0x42bc95;}})});}_0x9b8ffd=_[_0x4987('0x3b')]({},_0x9b8ffd,_0x3e189d[_0x4987('0x3c')]);var _0x2967e7={'where':_0x9b8ffd['where']};return db['FreshdeskConfiguration'][_0x4987('0x1f')](_0x2967e7)['then'](function(_0x469e1c){_0x4ea34e[_0x4987('0x1f')]=_0x469e1c;if(_0x3e189d[_0x4987('0x30')]['includeAll']){_0x9b8ffd[_0x4987('0x3d')]=[{'all':!![]}];}return db[_0x4987('0x3e')]['findAll'](_0x9b8ffd);})[_0x4987('0x24')](function(_0x4a10e0){_0x4ea34e['rows']=_0x4a10e0;return _0x4ea34e;})['then'](respondWithFilteredResult(_0x5ad866,_0x9b8ffd))['catch'](handleError(_0x5ad866,null));};exports[_0x4987('0x3f')]=function(_0x1c5fcb,_0x7f6a82){var _0x45c544={'raw':![],'where':{'id':_0x1c5fcb[_0x4987('0x40')]['id']}},_0x5005b9={};_0x5005b9[_0x4987('0x2f')]=_[_0x4987('0x31')](db[_0x4987('0x3e')][_0x4987('0x2b')]);_0x5005b9[_0x4987('0x30')]=_[_0x4987('0x31')](_0x1c5fcb['query']);_0x5005b9['filters']=_[_0x4987('0x32')](_0x5005b9['model'],_0x5005b9['query']);_0x45c544['attributes']=_[_0x4987('0x32')](_0x5005b9['model'],qs[_0x4987('0x34')](_0x1c5fcb['query'][_0x4987('0x34')]));_0x45c544[_0x4987('0x33')]=_0x45c544[_0x4987('0x33')][_0x4987('0x41')]?_0x45c544['attributes']:_0x5005b9[_0x4987('0x2f')];if(_0x1c5fcb[_0x4987('0x30')]['includeAll']){_0x45c544[_0x4987('0x3d')]=[{'all':!![]}];}_0x45c544=_[_0x4987('0x3b')]({},_0x45c544,_0x1c5fcb[_0x4987('0x3c')]);return db[_0x4987('0x3e')][_0x4987('0x42')](_0x45c544)[_0x4987('0x24')](handleEntityNotFound(_0x7f6a82,null))[_0x4987('0x24')](respondWithResult(_0x7f6a82,null))[_0x4987('0x43')](handleError(_0x7f6a82,null));};exports[_0x4987('0x44')]=function(_0x42b014,_0x220f87){return db['FreshdeskConfiguration'][_0x4987('0x44')](_0x42b014['body'],{})['then'](respondWithResult(_0x220f87,0xc9))[_0x4987('0x43')](handleError(_0x220f87,null));};exports[_0x4987('0x45')]=function(_0x38bf9d,_0x2ccb42){if(_0x38bf9d[_0x4987('0x46')]['id']){delete _0x38bf9d[_0x4987('0x46')]['id'];}return db[_0x4987('0x3e')][_0x4987('0x42')]({'where':{'id':_0x38bf9d['params']['id']}})[_0x4987('0x24')](handleEntityNotFound(_0x2ccb42,null))[_0x4987('0x24')](saveUpdates(_0x38bf9d['body'],null))[_0x4987('0x24')](respondWithResult(_0x2ccb42,null))['catch'](handleError(_0x2ccb42,null));};exports['destroy']=function(_0x4dcabd,_0x4b36b7){return db[_0x4987('0x3e')]['find']({'where':{'id':_0x4dcabd[_0x4987('0x40')]['id']}})[_0x4987('0x24')](handleEntityNotFound(_0x4b36b7,null))['then'](removeEntity(_0x4b36b7,null))[_0x4987('0x43')](handleError(_0x4b36b7,null));};exports[_0x4987('0x47')]=function(_0x4cc221,_0x56ff56,_0x86002){var _0x213315={};var _0x3c99ec={};var _0x4c9e57;var _0x4a26d1;return db[_0x4987('0x3e')]['findOne']({'where':{'id':_0x4cc221[_0x4987('0x40')]['id']}})[_0x4987('0x24')](handleEntityNotFound(_0x56ff56,null))[_0x4987('0x24')](function(_0x2dffb3){if(_0x2dffb3){_0x4c9e57=_0x2dffb3;_0x3c99ec[_0x4987('0x2f')]=_[_0x4987('0x31')](db['FreshdeskField'][_0x4987('0x2b')]);_0x3c99ec[_0x4987('0x30')]=_[_0x4987('0x31')](_0x4cc221[_0x4987('0x30')]);_0x3c99ec[_0x4987('0x38')]=_['intersection'](_0x3c99ec[_0x4987('0x2f')],_0x3c99ec[_0x4987('0x30')]);_0x213315[_0x4987('0x33')]=_[_0x4987('0x32')](_0x3c99ec[_0x4987('0x2f')],qs[_0x4987('0x34')](_0x4cc221['query']['fields']));_0x213315['attributes']=_0x213315[_0x4987('0x33')][_0x4987('0x41')]?_0x213315[_0x4987('0x33')]:_0x3c99ec[_0x4987('0x2f')];_0x213315[_0x4987('0x48')]=qs[_0x4987('0x36')](_0x4cc221[_0x4987('0x30')][_0x4987('0x36')]);_0x213315['where']=qs[_0x4987('0x38')](_[_0x4987('0x39')](_0x4cc221[_0x4987('0x30')],_0x3c99ec[_0x4987('0x38')]));if(_0x4cc221['query']['filter']){_0x213315[_0x4987('0x37')]=_['merge'](_0x213315[_0x4987('0x37')],{'$or':_[_0x4987('0x2a')](_0x213315['attributes'],function(_0x3ee942){var _0x23cb09={};_0x23cb09[_0x3ee942]={'$like':'%'+_0x4cc221[_0x4987('0x30')][_0x4987('0x3a')]+'%'};return _0x23cb09;})});}_0x213315=_[_0x4987('0x3b')]({},_0x213315,_0x4cc221['options']);return _0x4c9e57[_0x4987('0x47')](_0x213315);}})[_0x4987('0x24')](function(_0x10f16f){if(_0x10f16f){_0x4a26d1=_0x10f16f['length'];if(!_0x4cc221[_0x4987('0x30')]['hasOwnProperty']('nolimit')){_0x213315['limit']=qs[_0x4987('0x1e')](_0x4cc221[_0x4987('0x30')][_0x4987('0x1e')]);_0x213315[_0x4987('0x1c')]=qs[_0x4987('0x1c')](_0x4cc221['query'][_0x4987('0x1c')]);}return _0x4c9e57['getFields'](_0x213315);}})[_0x4987('0x24')](function(_0x48ae7a){if(_0x48ae7a){return _0x48ae7a?{'count':_0x4a26d1,'rows':_0x48ae7a}:null;}})[_0x4987('0x24')](respondWithResult(_0x56ff56,null))[_0x4987('0x43')](handleError(_0x56ff56,null));};exports[_0x4987('0x49')]=function(_0x156c53,_0x7ae440,_0x3c21a7){var _0x5cf486={};var _0x5e56fe={};var _0x4a7d01;var _0x5173c9;return db[_0x4987('0x3e')][_0x4987('0x4a')]({'where':{'id':_0x156c53[_0x4987('0x40')]['id']}})[_0x4987('0x24')](handleEntityNotFound(_0x7ae440,null))[_0x4987('0x24')](function(_0x230fb2){if(_0x230fb2){_0x4a7d01=_0x230fb2;_0x5e56fe[_0x4987('0x2f')]=_[_0x4987('0x31')](db[_0x4987('0x4b')][_0x4987('0x2b')]);_0x5e56fe[_0x4987('0x30')]=_[_0x4987('0x31')](_0x156c53['query']);_0x5e56fe[_0x4987('0x38')]=_['intersection'](_0x5e56fe['model'],_0x5e56fe['query']);_0x5cf486['attributes']=_['intersection'](_0x5e56fe[_0x4987('0x2f')],qs[_0x4987('0x34')](_0x156c53[_0x4987('0x30')][_0x4987('0x34')]));_0x5cf486[_0x4987('0x33')]=_0x5cf486[_0x4987('0x33')][_0x4987('0x41')]?_0x5cf486[_0x4987('0x33')]:_0x5e56fe['model'];_0x5cf486[_0x4987('0x48')]=qs[_0x4987('0x36')](_0x156c53[_0x4987('0x30')][_0x4987('0x36')]);_0x5cf486['where']=qs[_0x4987('0x38')](_[_0x4987('0x39')](_0x156c53[_0x4987('0x30')],_0x5e56fe[_0x4987('0x38')]));if(_0x156c53[_0x4987('0x30')]['filter']){_0x5cf486[_0x4987('0x37')]=_[_0x4987('0x3b')](_0x5cf486[_0x4987('0x37')],{'$or':_[_0x4987('0x2a')](_0x5cf486[_0x4987('0x33')],function(_0xbd9ced){var _0x3671d9={};_0x3671d9[_0xbd9ced]={'$like':'%'+_0x156c53[_0x4987('0x30')][_0x4987('0x3a')]+'%'};return _0x3671d9;})});}_0x5cf486=_['merge']({},_0x5cf486,_0x156c53[_0x4987('0x3c')]);return _0x4a7d01[_0x4987('0x49')](_0x5cf486);}})[_0x4987('0x24')](function(_0x3dd7e0){if(_0x3dd7e0){_0x5173c9=_0x3dd7e0[_0x4987('0x41')];if(!_0x156c53[_0x4987('0x30')][_0x4987('0x4c')](_0x4987('0x35'))){_0x5cf486[_0x4987('0x1e')]=qs[_0x4987('0x1e')](_0x156c53[_0x4987('0x30')][_0x4987('0x1e')]);_0x5cf486[_0x4987('0x1c')]=qs[_0x4987('0x1c')](_0x156c53[_0x4987('0x30')]['offset']);}return _0x4a7d01[_0x4987('0x49')](_0x5cf486);}})[_0x4987('0x24')](function(_0x30041b){if(_0x30041b){return _0x30041b?{'count':_0x5173c9,'rows':_0x30041b}:null;}})['then'](respondWithResult(_0x7ae440,null))[_0x4987('0x43')](handleError(_0x7ae440,null));};exports[_0x4987('0x4d')]=function(_0xf37bd3,_0x2a8b5d,_0xe29b9){var _0xce7af7={};var _0x523410={};var _0xf2c740;var _0x4948ce;return db[_0x4987('0x3e')]['findOne']({'where':{'id':_0xf37bd3[_0x4987('0x40')]['id']}})[_0x4987('0x24')](handleEntityNotFound(_0x2a8b5d,null))[_0x4987('0x24')](function(_0x250140){if(_0x250140){_0xf2c740=_0x250140;_0x523410['model']=_['keys'](db[_0x4987('0x4b')][_0x4987('0x2b')]);_0x523410['query']=_[_0x4987('0x31')](_0xf37bd3[_0x4987('0x30')]);_0x523410[_0x4987('0x38')]=_[_0x4987('0x32')](_0x523410[_0x4987('0x2f')],_0x523410[_0x4987('0x30')]);_0xce7af7[_0x4987('0x33')]=_['intersection'](_0x523410['model'],qs['fields'](_0xf37bd3[_0x4987('0x30')]['fields']));_0xce7af7[_0x4987('0x33')]=_0xce7af7[_0x4987('0x33')][_0x4987('0x41')]?_0xce7af7[_0x4987('0x33')]:_0x523410[_0x4987('0x2f')];_0xce7af7[_0x4987('0x48')]=qs[_0x4987('0x36')](_0xf37bd3[_0x4987('0x30')][_0x4987('0x36')]);_0xce7af7[_0x4987('0x37')]=qs[_0x4987('0x38')](_[_0x4987('0x39')](_0xf37bd3[_0x4987('0x30')],_0x523410[_0x4987('0x38')]));if(_0xf37bd3[_0x4987('0x30')]['filter']){_0xce7af7[_0x4987('0x37')]=_['merge'](_0xce7af7['where'],{'$or':_['map'](_0xce7af7[_0x4987('0x33')],function(_0x2e1183){var _0x40e020={};_0x40e020[_0x2e1183]={'$like':'%'+_0xf37bd3['query']['filter']+'%'};return _0x40e020;})});}_0xce7af7=_['merge']({},_0xce7af7,_0xf37bd3[_0x4987('0x3c')]);return _0xf2c740[_0x4987('0x4d')](_0xce7af7);}})[_0x4987('0x24')](function(_0x11083e){if(_0x11083e){_0x4948ce=_0x11083e[_0x4987('0x41')];if(!_0xf37bd3['query'][_0x4987('0x4c')](_0x4987('0x35'))){_0xce7af7[_0x4987('0x1e')]=qs[_0x4987('0x1e')](_0xf37bd3[_0x4987('0x30')][_0x4987('0x1e')]);_0xce7af7['offset']=qs[_0x4987('0x1c')](_0xf37bd3['query'][_0x4987('0x1c')]);}return _0xf2c740[_0x4987('0x4d')](_0xce7af7);}})[_0x4987('0x24')](function(_0x55fd98){if(_0x55fd98){return _0x55fd98?{'count':_0x4948ce,'rows':_0x55fd98}:null;}})[_0x4987('0x24')](respondWithResult(_0x2a8b5d,null))[_0x4987('0x43')](handleError(_0x2a8b5d,null));};exports[_0x4987('0x4e')]=function(_0xce22,_0x24c769,_0xdc0d00){var _0x12854b={};var _0x1584b5={};var _0x12aa25;var _0x58bc09;return db[_0x4987('0x3e')]['findOne']({'where':{'id':_0xce22[_0x4987('0x40')]['id']}})[_0x4987('0x24')](handleEntityNotFound(_0x24c769,null))[_0x4987('0x24')](function(_0x50fee1){if(_0x50fee1){_0x12aa25=_0x50fee1;_0x1584b5[_0x4987('0x2f')]=_['keys'](db['Tag'][_0x4987('0x2b')]);_0x1584b5['query']=_[_0x4987('0x31')](_0xce22[_0x4987('0x30')]);_0x1584b5[_0x4987('0x38')]=_[_0x4987('0x32')](_0x1584b5[_0x4987('0x2f')],_0x1584b5[_0x4987('0x30')]);_0x12854b[_0x4987('0x33')]=_[_0x4987('0x32')](_0x1584b5[_0x4987('0x2f')],qs[_0x4987('0x34')](_0xce22[_0x4987('0x30')][_0x4987('0x34')]));_0x12854b[_0x4987('0x33')]=_0x12854b[_0x4987('0x33')][_0x4987('0x41')]?_0x12854b[_0x4987('0x33')]:_0x1584b5[_0x4987('0x2f')];_0x12854b['order']=qs[_0x4987('0x36')](_0xce22[_0x4987('0x30')][_0x4987('0x36')]);_0x12854b['where']=qs[_0x4987('0x38')](_['pick'](_0xce22[_0x4987('0x30')],_0x1584b5[_0x4987('0x38')]));if(_0xce22[_0x4987('0x30')][_0x4987('0x3a')]){_0x12854b['where']=_[_0x4987('0x3b')](_0x12854b[_0x4987('0x37')],{'$or':_[_0x4987('0x2a')](_0x12854b[_0x4987('0x33')],function(_0x5c5219){var _0x3d7122={};_0x3d7122[_0x5c5219]={'$like':'%'+_0xce22['query'][_0x4987('0x3a')]+'%'};return _0x3d7122;})});}_0x12854b=_['merge']({},_0x12854b,_0xce22[_0x4987('0x3c')]);return _0x12aa25['getTags'](_0x12854b);}})[_0x4987('0x24')](function(_0x5bde99){if(_0x5bde99){_0x58bc09=_0x5bde99[_0x4987('0x41')];if(!_0xce22[_0x4987('0x30')]['hasOwnProperty'](_0x4987('0x35'))){_0x12854b['limit']=qs[_0x4987('0x1e')](_0xce22[_0x4987('0x30')]['limit']);_0x12854b[_0x4987('0x1c')]=qs[_0x4987('0x1c')](_0xce22[_0x4987('0x30')]['offset']);}return _0x12aa25[_0x4987('0x4e')](_0x12854b);}})[_0x4987('0x24')](function(_0x4778de){if(_0x4778de){return _0x4778de?{'count':_0x58bc09,'rows':_0x4778de}:null;}})['then'](respondWithResult(_0x24c769,null))[_0x4987('0x43')](handleError(_0x24c769,null));};exports['setTags']=function(_0x48eddb,_0xfd5daf,_0x280d01){if(_0x48eddb[_0x4987('0x46')]['id']){delete _0x48eddb[_0x4987('0x46')]['id'];}return db['FreshdeskConfiguration'][_0x4987('0x4a')]({'where':{'id':_0x48eddb[_0x4987('0x40')]['id']}})['then'](handleEntityNotFound(_0xfd5daf,null))['then'](function(_0x3f6888){if(_0x3f6888){return _0x3f6888[_0x4987('0x4f')](_0x48eddb[_0x4987('0x46')][_0x4987('0x50')]||[]);}return null;})['then'](respondWithResult(_0xfd5daf,null))['catch'](handleError(_0xfd5daf,null));};
\ No newline at end of file
+var _0xf245=['rows','catch','params','model','find','create','body','getFields','FreshdeskField','getSubjects','findOne','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','fast-json-patch','request-promise','mustache','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','reject','save','update','then','error','name','index','FreshdeskConfiguration','rawAttributes','fieldName','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','count','includeAll','include'];(function(_0x47004b,_0x5be232){var _0x346ba8=function(_0x3da14e){while(--_0x3da14e){_0x47004b['push'](_0x47004b['shift']());}};_0x346ba8(++_0x5be232);}(_0xf245,0xab));var _0x5f24=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0xf245[_0x87b0ff];return _0x3bc0b2;};'use strict';var emlformat=require(_0x5f24('0x0'));var rimraf=require(_0x5f24('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5f24('0x2'));var rp=require(_0x5f24('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5f24('0x4'));var util=require('util');var path=require(_0x5f24('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5f24('0x6'));var fs=require('fs');var fs_extra=require(_0x5f24('0x7'));var _=require(_0x5f24('0x8'));var squel=require(_0x5f24('0x9'));var crypto=require('crypto');var jsforce=require(_0x5f24('0xa'));var deskjs=require(_0x5f24('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5f24('0xc'));var Papa=require(_0x5f24('0xd'));var Redis=require(_0x5f24('0xe'));var authService=require(_0x5f24('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x5f24('0x10'));var hardwareService=require(_0x5f24('0x11'));var logger=require(_0x5f24('0x12'))('api');var utils=require(_0x5f24('0x13'));var config=require(_0x5f24('0x14'));var licenseUtil=require(_0x5f24('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2218cd,_0x3af57d){_0x3af57d=_0x3af57d||0xcc;return function(_0x2fca96){if(_0x2fca96){return _0x2218cd[_0x5f24('0x16')](_0x3af57d);}return _0x2218cd['status'](_0x3af57d)[_0x5f24('0x17')]();};}function respondWithResult(_0xcf1f42,_0x54e4cc){_0x54e4cc=_0x54e4cc||0xc8;return function(_0x1cda73){if(_0x1cda73){return _0xcf1f42[_0x5f24('0x18')](_0x54e4cc)[_0x5f24('0x19')](_0x1cda73);}};}function respondWithFilteredResult(_0x1e446a,_0xfc8a18){return function(_0xfe36dd){if(_0xfe36dd){var _0x458823=typeof _0xfc8a18[_0x5f24('0x1a')]===_0x5f24('0x1b')&&typeof _0xfc8a18[_0x5f24('0x1c')]==='undefined';var _0xb6318a=_0xfe36dd['count'];var _0x17e01a=_0x458823?0x0:_0xfc8a18['offset'];var _0x4a7653=_0x458823?_0xfe36dd['count']:_0xfc8a18[_0x5f24('0x1a')]+_0xfc8a18['limit'];var _0xbb276e;if(_0x4a7653>=_0xb6318a){_0x4a7653=_0xb6318a;_0xbb276e=0xc8;}else{_0xbb276e=0xce;}_0x1e446a[_0x5f24('0x18')](_0xbb276e);return _0x1e446a[_0x5f24('0x1d')](_0x5f24('0x1e'),_0x17e01a+'-'+_0x4a7653+'/'+_0xb6318a)[_0x5f24('0x19')](_0xfe36dd);}return null;};}function patchUpdates(_0x2b5752){return function(_0x848224){try{jsonpatch['apply'](_0x848224,_0x2b5752,!![]);}catch(_0x598532){return BPromise[_0x5f24('0x1f')](_0x598532);}return _0x848224[_0x5f24('0x20')]();};}function saveUpdates(_0x51d82c,_0x23f917){return function(_0xe66f2b){if(_0xe66f2b){return _0xe66f2b[_0x5f24('0x21')](_0x51d82c)[_0x5f24('0x22')](function(_0x44ca71){return _0x44ca71;});}return null;};}function removeEntity(_0x156af2,_0x508d21){return function(_0x26c527){if(_0x26c527){return _0x26c527['destroy']()['then'](function(){_0x156af2[_0x5f24('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x562f32,_0x416f89){return function(_0x3c6b89){if(!_0x3c6b89){_0x562f32[_0x5f24('0x16')](0x194);}return _0x3c6b89;};}function handleError(_0x445ec8,_0x1b5373){_0x1b5373=_0x1b5373||0x1f4;return function(_0x525cae){logger[_0x5f24('0x23')](_0x525cae['stack']);if(_0x525cae[_0x5f24('0x24')]){delete _0x525cae[_0x5f24('0x24')];}_0x445ec8[_0x5f24('0x18')](_0x1b5373)['send'](_0x525cae);};}exports[_0x5f24('0x25')]=function(_0x47759c,_0x3c1381){var _0x2648d3={},_0x1b308b={},_0x5885c2={'count':0x0,'rows':[]};var _0x206e9e=_['map'](db[_0x5f24('0x26')][_0x5f24('0x27')],function(_0xaf4414){return{'name':_0xaf4414[_0x5f24('0x28')],'type':_0xaf4414['type']['key']};});_0x1b308b['model']=_[_0x5f24('0x29')](_0x206e9e,'name');_0x1b308b[_0x5f24('0x2a')]=_[_0x5f24('0x2b')](_0x47759c['query']);_0x1b308b['filters']=_[_0x5f24('0x2c')](_0x1b308b['model'],_0x1b308b[_0x5f24('0x2a')]);_0x2648d3['attributes']=_[_0x5f24('0x2c')](_0x1b308b['model'],qs[_0x5f24('0x2d')](_0x47759c[_0x5f24('0x2a')][_0x5f24('0x2d')]));_0x2648d3['attributes']=_0x2648d3[_0x5f24('0x2e')][_0x5f24('0x2f')]?_0x2648d3[_0x5f24('0x2e')]:_0x1b308b['model'];if(!_0x47759c['query'][_0x5f24('0x30')](_0x5f24('0x31'))){_0x2648d3[_0x5f24('0x1c')]=qs[_0x5f24('0x1c')](_0x47759c[_0x5f24('0x2a')]['limit']);_0x2648d3[_0x5f24('0x1a')]=qs[_0x5f24('0x1a')](_0x47759c[_0x5f24('0x2a')][_0x5f24('0x1a')]);}_0x2648d3[_0x5f24('0x32')]=qs[_0x5f24('0x33')](_0x47759c[_0x5f24('0x2a')][_0x5f24('0x33')]);_0x2648d3[_0x5f24('0x34')]=qs[_0x5f24('0x35')](_[_0x5f24('0x36')](_0x47759c[_0x5f24('0x2a')],_0x1b308b[_0x5f24('0x35')]),_0x206e9e);if(_0x47759c[_0x5f24('0x2a')][_0x5f24('0x37')]){_0x2648d3[_0x5f24('0x34')]=_[_0x5f24('0x38')](_0x2648d3[_0x5f24('0x34')],{'$or':_['map'](_0x206e9e,function(_0x1c3217){if(_0x1c3217[_0x5f24('0x39')]!==_0x5f24('0x3a')){var _0x469b15={};_0x469b15[_0x1c3217[_0x5f24('0x24')]]={'$like':'%'+_0x47759c[_0x5f24('0x2a')][_0x5f24('0x37')]+'%'};return _0x469b15;}})});}_0x2648d3=_[_0x5f24('0x38')]({},_0x2648d3,_0x47759c[_0x5f24('0x3b')]);var _0x31d867={'where':_0x2648d3[_0x5f24('0x34')]};return db[_0x5f24('0x26')][_0x5f24('0x3c')](_0x31d867)[_0x5f24('0x22')](function(_0x4690f6){_0x5885c2['count']=_0x4690f6;if(_0x47759c['query'][_0x5f24('0x3d')]){_0x2648d3[_0x5f24('0x3e')]=[{'all':!![]}];}return db['FreshdeskConfiguration']['findAll'](_0x2648d3);})['then'](function(_0x637209){_0x5885c2[_0x5f24('0x3f')]=_0x637209;return _0x5885c2;})[_0x5f24('0x22')](respondWithFilteredResult(_0x3c1381,_0x2648d3))[_0x5f24('0x40')](handleError(_0x3c1381,null));};exports['show']=function(_0x4df73b,_0x44749f){var _0x4400a9={'raw':![],'where':{'id':_0x4df73b[_0x5f24('0x41')]['id']}},_0x33354a={};_0x33354a['model']=_[_0x5f24('0x2b')](db[_0x5f24('0x26')][_0x5f24('0x27')]);_0x33354a['query']=_['keys'](_0x4df73b[_0x5f24('0x2a')]);_0x33354a[_0x5f24('0x35')]=_[_0x5f24('0x2c')](_0x33354a[_0x5f24('0x42')],_0x33354a[_0x5f24('0x2a')]);_0x4400a9[_0x5f24('0x2e')]=_[_0x5f24('0x2c')](_0x33354a['model'],qs[_0x5f24('0x2d')](_0x4df73b[_0x5f24('0x2a')]['fields']));_0x4400a9[_0x5f24('0x2e')]=_0x4400a9['attributes'][_0x5f24('0x2f')]?_0x4400a9[_0x5f24('0x2e')]:_0x33354a[_0x5f24('0x42')];if(_0x4df73b[_0x5f24('0x2a')][_0x5f24('0x3d')]){_0x4400a9[_0x5f24('0x3e')]=[{'all':!![]}];}_0x4400a9=_[_0x5f24('0x38')]({},_0x4400a9,_0x4df73b[_0x5f24('0x3b')]);return db[_0x5f24('0x26')][_0x5f24('0x43')](_0x4400a9)['then'](handleEntityNotFound(_0x44749f,null))[_0x5f24('0x22')](respondWithResult(_0x44749f,null))[_0x5f24('0x40')](handleError(_0x44749f,null));};exports[_0x5f24('0x44')]=function(_0x5508d2,_0x1e3ff1){return db[_0x5f24('0x26')][_0x5f24('0x44')](_0x5508d2['body'],{})[_0x5f24('0x22')](respondWithResult(_0x1e3ff1,0xc9))['catch'](handleError(_0x1e3ff1,null));};exports[_0x5f24('0x21')]=function(_0x4cfd6e,_0x18d2fc){if(_0x4cfd6e[_0x5f24('0x45')]['id']){delete _0x4cfd6e['body']['id'];}return db[_0x5f24('0x26')]['find']({'where':{'id':_0x4cfd6e['params']['id']}})['then'](handleEntityNotFound(_0x18d2fc,null))[_0x5f24('0x22')](saveUpdates(_0x4cfd6e[_0x5f24('0x45')],null))[_0x5f24('0x22')](respondWithResult(_0x18d2fc,null))[_0x5f24('0x40')](handleError(_0x18d2fc,null));};exports['destroy']=function(_0x5ad39c,_0x4fdec9){return db[_0x5f24('0x26')][_0x5f24('0x43')]({'where':{'id':_0x5ad39c[_0x5f24('0x41')]['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0x4fdec9,null))[_0x5f24('0x22')](removeEntity(_0x4fdec9,null))['catch'](handleError(_0x4fdec9,null));};exports[_0x5f24('0x46')]=function(_0x27349a,_0x344599,_0x2729a4){var _0x131b63={};var _0x487f72={};var _0x30045a;var _0x5ee7b6;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x27349a['params']['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0x344599,null))[_0x5f24('0x22')](function(_0x1343f9){if(_0x1343f9){_0x30045a=_0x1343f9;_0x487f72['model']=_['keys'](db[_0x5f24('0x47')][_0x5f24('0x27')]);_0x487f72[_0x5f24('0x2a')]=_['keys'](_0x27349a[_0x5f24('0x2a')]);_0x487f72[_0x5f24('0x35')]=_['intersection'](_0x487f72['model'],_0x487f72['query']);_0x131b63[_0x5f24('0x2e')]=_[_0x5f24('0x2c')](_0x487f72[_0x5f24('0x42')],qs['fields'](_0x27349a['query'][_0x5f24('0x2d')]));_0x131b63[_0x5f24('0x2e')]=_0x131b63[_0x5f24('0x2e')][_0x5f24('0x2f')]?_0x131b63[_0x5f24('0x2e')]:_0x487f72[_0x5f24('0x42')];_0x131b63[_0x5f24('0x32')]=qs['sort'](_0x27349a[_0x5f24('0x2a')][_0x5f24('0x33')]);_0x131b63[_0x5f24('0x34')]=qs[_0x5f24('0x35')](_['pick'](_0x27349a[_0x5f24('0x2a')],_0x487f72[_0x5f24('0x35')]));if(_0x27349a[_0x5f24('0x2a')][_0x5f24('0x37')]){_0x131b63['where']=_['merge'](_0x131b63['where'],{'$or':_[_0x5f24('0x29')](_0x131b63['attributes'],function(_0x11336d){var _0x3d7ed7={};_0x3d7ed7[_0x11336d]={'$like':'%'+_0x27349a[_0x5f24('0x2a')]['filter']+'%'};return _0x3d7ed7;})});}_0x131b63=_[_0x5f24('0x38')]({},_0x131b63,_0x27349a[_0x5f24('0x3b')]);return _0x30045a[_0x5f24('0x46')](_0x131b63);}})[_0x5f24('0x22')](function(_0x1c4de0){if(_0x1c4de0){_0x5ee7b6=_0x1c4de0[_0x5f24('0x2f')];if(!_0x27349a[_0x5f24('0x2a')]['hasOwnProperty'](_0x5f24('0x31'))){_0x131b63[_0x5f24('0x1c')]=qs[_0x5f24('0x1c')](_0x27349a[_0x5f24('0x2a')][_0x5f24('0x1c')]);_0x131b63[_0x5f24('0x1a')]=qs['offset'](_0x27349a[_0x5f24('0x2a')][_0x5f24('0x1a')]);}return _0x30045a[_0x5f24('0x46')](_0x131b63);}})['then'](function(_0x4b0fc1){if(_0x4b0fc1){return _0x4b0fc1?{'count':_0x5ee7b6,'rows':_0x4b0fc1}:null;}})[_0x5f24('0x22')](respondWithResult(_0x344599,null))[_0x5f24('0x40')](handleError(_0x344599,null));};exports[_0x5f24('0x48')]=function(_0x1c6f98,_0x643348,_0x98e44e){var _0x1f1466={};var _0x5e34f4={};var _0x3b54ff;var _0x5c0eff;return db['FreshdeskConfiguration'][_0x5f24('0x49')]({'where':{'id':_0x1c6f98['params']['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0x643348,null))[_0x5f24('0x22')](function(_0x1d565f){if(_0x1d565f){_0x3b54ff=_0x1d565f;_0x5e34f4[_0x5f24('0x42')]=_[_0x5f24('0x2b')](db['FreshdeskField'][_0x5f24('0x27')]);_0x5e34f4[_0x5f24('0x2a')]=_[_0x5f24('0x2b')](_0x1c6f98[_0x5f24('0x2a')]);_0x5e34f4[_0x5f24('0x35')]=_['intersection'](_0x5e34f4['model'],_0x5e34f4['query']);_0x1f1466[_0x5f24('0x2e')]=_[_0x5f24('0x2c')](_0x5e34f4[_0x5f24('0x42')],qs['fields'](_0x1c6f98['query'][_0x5f24('0x2d')]));_0x1f1466['attributes']=_0x1f1466[_0x5f24('0x2e')][_0x5f24('0x2f')]?_0x1f1466[_0x5f24('0x2e')]:_0x5e34f4[_0x5f24('0x42')];_0x1f1466[_0x5f24('0x32')]=qs['sort'](_0x1c6f98[_0x5f24('0x2a')][_0x5f24('0x33')]);_0x1f1466[_0x5f24('0x34')]=qs['filters'](_[_0x5f24('0x36')](_0x1c6f98[_0x5f24('0x2a')],_0x5e34f4[_0x5f24('0x35')]));if(_0x1c6f98['query'][_0x5f24('0x37')]){_0x1f1466[_0x5f24('0x34')]=_[_0x5f24('0x38')](_0x1f1466[_0x5f24('0x34')],{'$or':_['map'](_0x1f1466[_0x5f24('0x2e')],function(_0x52b5ea){var _0x19c813={};_0x19c813[_0x52b5ea]={'$like':'%'+_0x1c6f98[_0x5f24('0x2a')][_0x5f24('0x37')]+'%'};return _0x19c813;})});}_0x1f1466=_[_0x5f24('0x38')]({},_0x1f1466,_0x1c6f98['options']);return _0x3b54ff[_0x5f24('0x48')](_0x1f1466);}})[_0x5f24('0x22')](function(_0x30511d){if(_0x30511d){_0x5c0eff=_0x30511d['length'];if(!_0x1c6f98['query']['hasOwnProperty'](_0x5f24('0x31'))){_0x1f1466[_0x5f24('0x1c')]=qs[_0x5f24('0x1c')](_0x1c6f98['query']['limit']);_0x1f1466[_0x5f24('0x1a')]=qs[_0x5f24('0x1a')](_0x1c6f98[_0x5f24('0x2a')]['offset']);}return _0x3b54ff[_0x5f24('0x48')](_0x1f1466);}})[_0x5f24('0x22')](function(_0x561f99){if(_0x561f99){return _0x561f99?{'count':_0x5c0eff,'rows':_0x561f99}:null;}})[_0x5f24('0x22')](respondWithResult(_0x643348,null))[_0x5f24('0x40')](handleError(_0x643348,null));};exports[_0x5f24('0x4a')]=function(_0x9d46b7,_0xb283a1,_0x48353d){var _0x324018={};var _0x2e5713={};var _0x2d1cb1;var _0x4fa2c3;return db['FreshdeskConfiguration'][_0x5f24('0x49')]({'where':{'id':_0x9d46b7[_0x5f24('0x41')]['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0xb283a1,null))[_0x5f24('0x22')](function(_0x338cbe){if(_0x338cbe){_0x2d1cb1=_0x338cbe;_0x2e5713[_0x5f24('0x42')]=_[_0x5f24('0x2b')](db[_0x5f24('0x47')][_0x5f24('0x27')]);_0x2e5713['query']=_[_0x5f24('0x2b')](_0x9d46b7[_0x5f24('0x2a')]);_0x2e5713[_0x5f24('0x35')]=_[_0x5f24('0x2c')](_0x2e5713[_0x5f24('0x42')],_0x2e5713['query']);_0x324018['attributes']=_['intersection'](_0x2e5713[_0x5f24('0x42')],qs['fields'](_0x9d46b7[_0x5f24('0x2a')]['fields']));_0x324018[_0x5f24('0x2e')]=_0x324018[_0x5f24('0x2e')]['length']?_0x324018[_0x5f24('0x2e')]:_0x2e5713[_0x5f24('0x42')];_0x324018[_0x5f24('0x32')]=qs['sort'](_0x9d46b7['query'][_0x5f24('0x33')]);_0x324018[_0x5f24('0x34')]=qs[_0x5f24('0x35')](_[_0x5f24('0x36')](_0x9d46b7[_0x5f24('0x2a')],_0x2e5713[_0x5f24('0x35')]));if(_0x9d46b7[_0x5f24('0x2a')][_0x5f24('0x37')]){_0x324018[_0x5f24('0x34')]=_[_0x5f24('0x38')](_0x324018[_0x5f24('0x34')],{'$or':_[_0x5f24('0x29')](_0x324018[_0x5f24('0x2e')],function(_0x2eb651){var _0x15bbe8={};_0x15bbe8[_0x2eb651]={'$like':'%'+_0x9d46b7['query'][_0x5f24('0x37')]+'%'};return _0x15bbe8;})});}_0x324018=_[_0x5f24('0x38')]({},_0x324018,_0x9d46b7['options']);return _0x2d1cb1['getDescriptions'](_0x324018);}})[_0x5f24('0x22')](function(_0x3bff0d){if(_0x3bff0d){_0x4fa2c3=_0x3bff0d[_0x5f24('0x2f')];if(!_0x9d46b7[_0x5f24('0x2a')][_0x5f24('0x30')](_0x5f24('0x31'))){_0x324018['limit']=qs[_0x5f24('0x1c')](_0x9d46b7[_0x5f24('0x2a')]['limit']);_0x324018[_0x5f24('0x1a')]=qs[_0x5f24('0x1a')](_0x9d46b7['query'][_0x5f24('0x1a')]);}return _0x2d1cb1[_0x5f24('0x4a')](_0x324018);}})[_0x5f24('0x22')](function(_0x3df139){if(_0x3df139){return _0x3df139?{'count':_0x4fa2c3,'rows':_0x3df139}:null;}})['then'](respondWithResult(_0xb283a1,null))[_0x5f24('0x40')](handleError(_0xb283a1,null));};exports[_0x5f24('0x4b')]=function(_0x202e9c,_0x27cd6c,_0x3616e8){var _0x1f4d83={};var _0x453d33={};var _0x167fe2;var _0x49ab72;return db[_0x5f24('0x26')][_0x5f24('0x49')]({'where':{'id':_0x202e9c[_0x5f24('0x41')]['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0x27cd6c,null))[_0x5f24('0x22')](function(_0x111697){if(_0x111697){_0x167fe2=_0x111697;_0x453d33[_0x5f24('0x42')]=_[_0x5f24('0x2b')](db[_0x5f24('0x4c')][_0x5f24('0x27')]);_0x453d33[_0x5f24('0x2a')]=_['keys'](_0x202e9c['query']);_0x453d33[_0x5f24('0x35')]=_[_0x5f24('0x2c')](_0x453d33[_0x5f24('0x42')],_0x453d33[_0x5f24('0x2a')]);_0x1f4d83[_0x5f24('0x2e')]=_['intersection'](_0x453d33[_0x5f24('0x42')],qs[_0x5f24('0x2d')](_0x202e9c['query'][_0x5f24('0x2d')]));_0x1f4d83[_0x5f24('0x2e')]=_0x1f4d83[_0x5f24('0x2e')][_0x5f24('0x2f')]?_0x1f4d83[_0x5f24('0x2e')]:_0x453d33[_0x5f24('0x42')];_0x1f4d83[_0x5f24('0x32')]=qs[_0x5f24('0x33')](_0x202e9c[_0x5f24('0x2a')][_0x5f24('0x33')]);_0x1f4d83['where']=qs[_0x5f24('0x35')](_[_0x5f24('0x36')](_0x202e9c[_0x5f24('0x2a')],_0x453d33[_0x5f24('0x35')]));if(_0x202e9c['query'][_0x5f24('0x37')]){_0x1f4d83[_0x5f24('0x34')]=_[_0x5f24('0x38')](_0x1f4d83['where'],{'$or':_[_0x5f24('0x29')](_0x1f4d83[_0x5f24('0x2e')],function(_0x1d5209){var _0xf9b335={};_0xf9b335[_0x1d5209]={'$like':'%'+_0x202e9c['query'][_0x5f24('0x37')]+'%'};return _0xf9b335;})});}_0x1f4d83=_[_0x5f24('0x38')]({},_0x1f4d83,_0x202e9c[_0x5f24('0x3b')]);return _0x167fe2[_0x5f24('0x4b')](_0x1f4d83);}})['then'](function(_0x245462){if(_0x245462){_0x49ab72=_0x245462[_0x5f24('0x2f')];if(!_0x202e9c[_0x5f24('0x2a')][_0x5f24('0x30')]('nolimit')){_0x1f4d83[_0x5f24('0x1c')]=qs['limit'](_0x202e9c['query']['limit']);_0x1f4d83[_0x5f24('0x1a')]=qs[_0x5f24('0x1a')](_0x202e9c[_0x5f24('0x2a')][_0x5f24('0x1a')]);}return _0x167fe2[_0x5f24('0x4b')](_0x1f4d83);}})[_0x5f24('0x22')](function(_0x531d09){if(_0x531d09){return _0x531d09?{'count':_0x49ab72,'rows':_0x531d09}:null;}})[_0x5f24('0x22')](respondWithResult(_0x27cd6c,null))[_0x5f24('0x40')](handleError(_0x27cd6c,null));};exports['setTags']=function(_0x473669,_0x4684dc,_0x1a757f){if(_0x473669[_0x5f24('0x45')]['id']){delete _0x473669['body']['id'];}return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x473669[_0x5f24('0x41')]['id']}})[_0x5f24('0x22')](handleEntityNotFound(_0x4684dc,null))[_0x5f24('0x22')](function(_0x53858f){if(_0x53858f){return _0x53858f[_0x5f24('0x4d')](_0x473669[_0x5f24('0x45')]['ids']||[]);}return null;})['then'](respondWithResult(_0x4684dc,null))['catch'](handleError(_0x4684dc,null));};
\ No newline at end of file
index 8e68ea8..29bbb3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc822=['request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','moment','bluebird'];(function(_0x4f5df8,_0x23cd1c){var _0x51e906=function(_0x11a19d){while(--_0x11a19d){_0x4f5df8['push'](_0x4f5df8['shift']());}};_0x51e906(++_0x23cd1c);}(_0xc822,0x187));var _0x2c82=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xc822[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x2c82('0x0'));var util=require(_0x2c82('0x1'));var logger=require(_0x2c82('0x2'))('api');var moment=require(_0x2c82('0x3'));var BPromise=require(_0x2c82('0x4'));var rp=require(_0x2c82('0x5'));var fs=require('fs');var path=require(_0x2c82('0x6'));var rimraf=require(_0x2c82('0x7'));var config=require(_0x2c82('0x8'));var attributes=require(_0x2c82('0x9'));module['exports']=function(_0xae5a97,_0x5c50af){return _0xae5a97['define'](_0x2c82('0xa'),attributes,{'tableName':_0x2c82('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf9a7=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','FreshdeskConfiguration','int_freshdesk_configurations'];(function(_0x3a0a22,_0x184628){var _0x56fff4=function(_0x2de863){while(--_0x2de863){_0x3a0a22['push'](_0x3a0a22['shift']());}};_0x56fff4(++_0x184628);}(_0xf9a7,0x152));var _0x7f9a=function(_0x1c0bf6,_0x4ee3bd){_0x1c0bf6=_0x1c0bf6-0x0;var _0x25cfde=_0xf9a7[_0x1c0bf6];return _0x25cfde;};'use strict';var _=require('lodash');var util=require(_0x7f9a('0x0'));var logger=require(_0x7f9a('0x1'))(_0x7f9a('0x2'));var moment=require(_0x7f9a('0x3'));var BPromise=require(_0x7f9a('0x4'));var rp=require(_0x7f9a('0x5'));var fs=require('fs');var path=require(_0x7f9a('0x6'));var rimraf=require(_0x7f9a('0x7'));var config=require(_0x7f9a('0x8'));var attributes=require(_0x7f9a('0x9'));module[_0x7f9a('0xa')]=function(_0x5b45bc,_0x5965ff){return _0x5b45bc['define'](_0x7f9a('0xb'),attributes,{'tableName':_0x7f9a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 98b8416..27674d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a82=['request','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x4729ea,_0x478433){var _0x2a3aef=function(_0x2d54a8){while(--_0x2d54a8){_0x4729ea['push'](_0x4729ea['shift']());}};_0x2a3aef(++_0x478433);}(_0x1a82,0x1c2));var _0x21a8=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0x1a82[_0x725b8e];return _0x43ac45;};'use strict';var _=require(_0x21a8('0x0'));var util=require(_0x21a8('0x1'));var moment=require(_0x21a8('0x2'));var BPromise=require(_0x21a8('0x3'));var rs=require(_0x21a8('0x4'));var fs=require('fs');var Redis=require(_0x21a8('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x21a8('0x6'));var logger=require('../../config/logger')(_0x21a8('0x7'));var config=require(_0x21a8('0x8'));var jayson=require(_0x21a8('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5873f4,_0xea0211,_0x2a8ff1){return new BPromise(function(_0x3e9086,_0x1a5f91){return client[_0x21a8('0xa')](_0x5873f4,_0x2a8ff1)['then'](function(_0x57606b){logger['info'](_0x21a8('0xb'),_0xea0211,_0x21a8('0xc'));logger[_0x21a8('0xd')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0xea0211,'request\x20sent',JSON[_0x21a8('0xe')](_0x57606b));if(_0x57606b[_0x21a8('0xf')]){if(_0x57606b[_0x21a8('0xf')][_0x21a8('0x10')]===0x1f4){logger[_0x21a8('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s',_0xea0211,_0x57606b[_0x21a8('0xf')][_0x21a8('0x11')]);return _0x1a5f91(_0x57606b['error'][_0x21a8('0x11')]);}logger[_0x21a8('0xf')](_0x21a8('0xb'),_0xea0211,_0x57606b['error'][_0x21a8('0x11')]);return _0x3e9086(_0x57606b[_0x21a8('0xf')][_0x21a8('0x11')]);}else{logger[_0x21a8('0x12')](_0x21a8('0xb'),_0xea0211,_0x21a8('0xc'));_0x3e9086(_0x57606b[_0x21a8('0x13')]['message']);}})['catch'](function(_0x592dd9){logger['error'](_0x21a8('0xb'),_0xea0211,_0x592dd9);_0x1a5f91(_0x592dd9);});});}
\ No newline at end of file
+var _0xf53b=['randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','moment','bluebird'];(function(_0x4e4b44,_0x47da36){var _0x339077=function(_0x4f3cb2){while(--_0x4f3cb2){_0x4e4b44['push'](_0x4e4b44['shift']());}};_0x339077(++_0x47da36);}(_0xf53b,0x152));var _0xbf53=function(_0x547f26,_0x51e4c1){_0x547f26=_0x547f26-0x0;var _0x39af3a=_0xf53b[_0x547f26];return _0x39af3a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbf53('0x0'));var BPromise=require(_0xbf53('0x1'));var rs=require(_0xbf53('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf53('0x3'))('rpc');var config=require(_0xbf53('0x4'));var jayson=require(_0xbf53('0x5'));var client=jayson[_0xbf53('0x6')][_0xbf53('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2cb0e0,_0x1a96a4,_0x56f68a){return new BPromise(function(_0x24de3a,_0x11e161){return client[_0xbf53('0x8')](_0x2cb0e0,_0x56f68a)[_0xbf53('0x9')](function(_0x32181d){logger[_0xbf53('0xa')](_0xbf53('0xb'),_0x1a96a4,_0xbf53('0xc'));logger[_0xbf53('0xd')](_0xbf53('0xe'),_0x1a96a4,_0xbf53('0xc'),JSON[_0xbf53('0xf')](_0x32181d));if(_0x32181d[_0xbf53('0x10')]){if(_0x32181d[_0xbf53('0x10')][_0xbf53('0x11')]===0x1f4){logger[_0xbf53('0x10')](_0xbf53('0xb'),_0x1a96a4,_0x32181d[_0xbf53('0x10')]['message']);return _0x11e161(_0x32181d[_0xbf53('0x10')][_0xbf53('0x12')]);}logger[_0xbf53('0x10')](_0xbf53('0xb'),_0x1a96a4,_0x32181d['error'][_0xbf53('0x12')]);return _0x24de3a(_0x32181d[_0xbf53('0x10')][_0xbf53('0x12')]);}else{logger[_0xbf53('0xa')](_0xbf53('0xb'),_0x1a96a4,_0xbf53('0xc'));_0x24de3a(_0x32181d['result']['message']);}})[_0xbf53('0x13')](function(_0x47f15a){logger[_0xbf53('0x10')](_0xbf53('0xb'),_0x1a96a4,_0x47f15a);_0x11e161(_0x47f15a);});});}
\ No newline at end of file
index f690bc0..5dd3afd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c2c=['create','put','update','delete','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','/:id','show','post'];(function(_0x528575,_0x2e067d){var _0x3063b7=function(_0x1ee183){while(--_0x1ee183){_0x528575['push'](_0x528575['shift']());}};_0x3063b7(++_0x2e067d);}(_0x2c2c,0xa7));var _0xc2c2=function(_0x3b9753,_0x5d2a19){_0x3b9753=_0x3b9753-0x0;var _0xa6484d=_0x2c2c[_0x3b9753];return _0xa6484d;};'use strict';var multer=require(_0xc2c2('0x0'));var util=require(_0xc2c2('0x1'));var path=require(_0xc2c2('0x2'));var timeout=require(_0xc2c2('0x3'));var express=require(_0xc2c2('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc2c2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc2c2('0x6'));var controller=require(_0xc2c2('0x7'));router[_0xc2c2('0x8')]('/',auth[_0xc2c2('0x9')](),controller['index']);router[_0xc2c2('0x8')](_0xc2c2('0xa'),auth[_0xc2c2('0x9')](),controller[_0xc2c2('0xb')]);router[_0xc2c2('0xc')]('/',auth[_0xc2c2('0x9')](),controller[_0xc2c2('0xd')]);router[_0xc2c2('0xe')](_0xc2c2('0xa'),auth[_0xc2c2('0x9')](),controller[_0xc2c2('0xf')]);router[_0xc2c2('0x10')](_0xc2c2('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0xc2c2('0x11')]=router;
\ No newline at end of file
+var _0xd125=['show','post','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id'];(function(_0x1336e2,_0x1a6903){var _0x517d1d=function(_0x2f48b4){while(--_0x2f48b4){_0x1336e2['push'](_0x1336e2['shift']());}};_0x517d1d(++_0x1a6903);}(_0xd125,0x1bf));var _0x5d12=function(_0x20eca8,_0x4b92ef){_0x20eca8=_0x20eca8-0x0;var _0x9bb131=_0xd125[_0x20eca8];return _0x9bb131;};'use strict';var multer=require(_0x5d12('0x0'));var util=require(_0x5d12('0x1'));var path=require(_0x5d12('0x2'));var timeout=require(_0x5d12('0x3'));var express=require(_0x5d12('0x4'));var router=express[_0x5d12('0x5')]();var fs_extra=require(_0x5d12('0x6'));var auth=require(_0x5d12('0x7'));var interaction=require(_0x5d12('0x8'));var config=require(_0x5d12('0x9'));var controller=require(_0x5d12('0xa'));router[_0x5d12('0xb')]('/',auth[_0x5d12('0xc')](),controller[_0x5d12('0xd')]);router[_0x5d12('0xb')](_0x5d12('0xe'),auth['isAuthenticated'](),controller[_0x5d12('0xf')]);router[_0x5d12('0x10')]('/',auth[_0x5d12('0xc')](),controller['create']);router[_0x5d12('0x11')](_0x5d12('0xe'),auth[_0x5d12('0xc')](),controller[_0x5d12('0x12')]);router['delete'](_0x5d12('0xe'),auth[_0x5d12('0xc')](),controller[_0x5d12('0x13')]);module[_0x5d12('0x14')]=router;
\ No newline at end of file
index 2a5f9da..16e1119 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff00=['variable','keyValue','STRING','ENUM','customVariable','BOOLEAN','sequelize','exports','string'];(function(_0x47831f,_0x9a8e91){var _0x2c37c5=function(_0x3f432e){while(--_0x3f432e){_0x47831f['push'](_0x47831f['shift']());}};_0x2c37c5(++_0x9a8e91);}(_0xff00,0x15c));var _0x0ff0=function(_0x5c0192,_0x3ae030){_0x5c0192=_0x5c0192-0x0;var _0x5dd069=_0xff00[_0x5c0192];return _0x5dd069;};'use strict';var Sequelize=require(_0x0ff0('0x0'));module[_0x0ff0('0x1')]={'type':{'type':Sequelize['ENUM'](_0x0ff0('0x2'),_0x0ff0('0x3'),'customVariable',_0x0ff0('0x4'),'picklist'),'defaultValue':_0x0ff0('0x2')},'content':{'type':Sequelize[_0x0ff0('0x5')]},'key':{'type':Sequelize[_0x0ff0('0x5')]},'keyType':{'type':Sequelize[_0x0ff0('0x6')](_0x0ff0('0x2'),_0x0ff0('0x3'),_0x0ff0('0x7'))},'keyContent':{'type':Sequelize[_0x0ff0('0x5')]},'idField':{'type':Sequelize[_0x0ff0('0x5')]},'nameField':{'type':Sequelize[_0x0ff0('0x5')]},'customField':{'type':Sequelize[_0x0ff0('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0ff0('0x5')]}};
\ No newline at end of file
+var _0x4e8d=['keyValue','STRING','customVariable','BOOLEAN','sequelize','ENUM','string','variable'];(function(_0x23b30c,_0x1e9bbd){var _0x436d01=function(_0x54c3ac){while(--_0x54c3ac){_0x23b30c['push'](_0x23b30c['shift']());}};_0x436d01(++_0x1e9bbd);}(_0x4e8d,0x1a4));var _0xd4e8=function(_0x30a4a3,_0x32ad36){_0x30a4a3=_0x30a4a3-0x0;var _0x348f29=_0x4e8d[_0x30a4a3];return _0x348f29;};'use strict';var Sequelize=require(_0xd4e8('0x0'));module['exports']={'type':{'type':Sequelize[_0xd4e8('0x1')](_0xd4e8('0x2'),_0xd4e8('0x3'),'customVariable',_0xd4e8('0x4'),'picklist'),'defaultValue':_0xd4e8('0x2')},'content':{'type':Sequelize[_0xd4e8('0x5')]},'key':{'type':Sequelize[_0xd4e8('0x5')]},'keyType':{'type':Sequelize[_0xd4e8('0x1')](_0xd4e8('0x2'),_0xd4e8('0x3'),_0xd4e8('0x6'))},'keyContent':{'type':Sequelize[_0xd4e8('0x5')]},'idField':{'type':Sequelize[_0xd4e8('0x5')]},'nameField':{'type':Sequelize[_0xd4e8('0x5')]},'customField':{'type':Sequelize[_0xd4e8('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd4e8('0x5')]}};
\ No newline at end of file
index bb1aefb..4f697bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa75b=['filter','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','limit','undefined','count','set','reject','then','destroy','end','sendStatus','error','index','map','FreshdeskField','rawAttributes','type','model','name','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','merge','where','VIRTUAL'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xa75b,0x170));var _0xba75=function(_0x3b5377,_0x4dd0bb){_0x3b5377=_0x3b5377-0x0;var _0x59358e=_0xa75b[_0x3b5377];return _0x59358e;};'use strict';var emlformat=require(_0xba75('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xba75('0x1'));var rp=require(_0xba75('0x2'));var moment=require(_0xba75('0x3'));var BPromise=require(_0xba75('0x4'));var Mustache=require(_0xba75('0x5'));var util=require(_0xba75('0x6'));var path=require(_0xba75('0x7'));var sox=require(_0xba75('0x8'));var csv=require(_0xba75('0x9'));var ejs=require(_0xba75('0xa'));var fs=require('fs');var fs_extra=require(_0xba75('0xb'));var _=require(_0xba75('0xc'));var squel=require(_0xba75('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xba75('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xba75('0xf'));var Redis=require('ioredis');var authService=require(_0xba75('0x10'));var qs=require(_0xba75('0x11'));var as=require(_0xba75('0x12'));var hardwareService=require(_0xba75('0x13'));var logger=require(_0xba75('0x14'))(_0xba75('0x15'));var utils=require(_0xba75('0x16'));var config=require(_0xba75('0x17'));var licenseUtil=require(_0xba75('0x18'));var db=require(_0xba75('0x19'))['db'];function respondWithStatusCode(_0x8116d8,_0x1ed697){_0x1ed697=_0x1ed697||0xcc;return function(_0x50db90){if(_0x50db90){return _0x8116d8['sendStatus'](_0x1ed697);}return _0x8116d8[_0xba75('0x1a')](_0x1ed697)['end']();};}function respondWithResult(_0x2f141a,_0x2df615){_0x2df615=_0x2df615||0xc8;return function(_0xa27f76){if(_0xa27f76){return _0x2f141a[_0xba75('0x1a')](_0x2df615)['json'](_0xa27f76);}};}function respondWithFilteredResult(_0x31b3b3,_0x18bab2){return function(_0x256678){if(_0x256678){var _0x4028f9=typeof _0x18bab2[_0xba75('0x1b')]==='undefined'&&typeof _0x18bab2[_0xba75('0x1c')]===_0xba75('0x1d');var _0x14bd83=_0x256678['count'];var _0x2822af=_0x4028f9?0x0:_0x18bab2[_0xba75('0x1b')];var _0xc4bf17=_0x4028f9?_0x256678[_0xba75('0x1e')]:_0x18bab2[_0xba75('0x1b')]+_0x18bab2[_0xba75('0x1c')];var _0x5811cb;if(_0xc4bf17>=_0x14bd83){_0xc4bf17=_0x14bd83;_0x5811cb=0xc8;}else{_0x5811cb=0xce;}_0x31b3b3[_0xba75('0x1a')](_0x5811cb);return _0x31b3b3[_0xba75('0x1f')]('Content-Range',_0x2822af+'-'+_0xc4bf17+'/'+_0x14bd83)['json'](_0x256678);}return null;};}function patchUpdates(_0x35ffd2){return function(_0x31bc33){try{jsonpatch['apply'](_0x31bc33,_0x35ffd2,!![]);}catch(_0x48206c){return BPromise[_0xba75('0x20')](_0x48206c);}return _0x31bc33['save']();};}function saveUpdates(_0x1b8a36,_0x2ece41){return function(_0x19b2d7){if(_0x19b2d7){return _0x19b2d7['update'](_0x1b8a36)[_0xba75('0x21')](function(_0x221d5e){return _0x221d5e;});}return null;};}function removeEntity(_0x139fa4,_0x3e9bd9){return function(_0x14c54b){if(_0x14c54b){return _0x14c54b[_0xba75('0x22')]()['then'](function(){_0x139fa4[_0xba75('0x1a')](0xcc)[_0xba75('0x23')]();});}};}function handleEntityNotFound(_0xe579fb,_0x5ec733){return function(_0x1caa6){if(!_0x1caa6){_0xe579fb[_0xba75('0x24')](0x194);}return _0x1caa6;};}function handleError(_0x26dd53,_0x37f7c8){_0x37f7c8=_0x37f7c8||0x1f4;return function(_0x35c571){logger[_0xba75('0x25')](_0x35c571['stack']);if(_0x35c571['name']){delete _0x35c571['name'];}_0x26dd53[_0xba75('0x1a')](_0x37f7c8)['send'](_0x35c571);};}exports[_0xba75('0x26')]=function(_0x58ea2d,_0x15b5bc){var _0x1afc1f={},_0x20ac78={},_0x4edc2e={'count':0x0,'rows':[]};var _0x3a1fd3=_[_0xba75('0x27')](db[_0xba75('0x28')][_0xba75('0x29')],function(_0x5d9f78){return{'name':_0x5d9f78['fieldName'],'type':_0x5d9f78[_0xba75('0x2a')]['key']};});_0x20ac78[_0xba75('0x2b')]=_[_0xba75('0x27')](_0x3a1fd3,_0xba75('0x2c'));_0x20ac78[_0xba75('0x2d')]=_['keys'](_0x58ea2d[_0xba75('0x2d')]);_0x20ac78[_0xba75('0x2e')]=_['intersection'](_0x20ac78[_0xba75('0x2b')],_0x20ac78[_0xba75('0x2d')]);_0x1afc1f[_0xba75('0x2f')]=_[_0xba75('0x30')](_0x20ac78['model'],qs[_0xba75('0x31')](_0x58ea2d[_0xba75('0x2d')]['fields']));_0x1afc1f[_0xba75('0x2f')]=_0x1afc1f[_0xba75('0x2f')][_0xba75('0x32')]?_0x1afc1f['attributes']:_0x20ac78[_0xba75('0x2b')];if(!_0x58ea2d[_0xba75('0x2d')][_0xba75('0x33')](_0xba75('0x34'))){_0x1afc1f[_0xba75('0x1c')]=qs[_0xba75('0x1c')](_0x58ea2d[_0xba75('0x2d')]['limit']);_0x1afc1f['offset']=qs[_0xba75('0x1b')](_0x58ea2d[_0xba75('0x2d')][_0xba75('0x1b')]);}_0x1afc1f['order']=qs[_0xba75('0x35')](_0x58ea2d[_0xba75('0x2d')]['sort']);_0x1afc1f['where']=qs[_0xba75('0x2e')](_[_0xba75('0x36')](_0x58ea2d[_0xba75('0x2d')],_0x20ac78[_0xba75('0x2e')]),_0x3a1fd3);if(_0x58ea2d[_0xba75('0x2d')]['filter']){_0x1afc1f['where']=_[_0xba75('0x37')](_0x1afc1f[_0xba75('0x38')],{'$or':_[_0xba75('0x27')](_0x3a1fd3,function(_0x68526f){if(_0x68526f[_0xba75('0x2a')]!==_0xba75('0x39')){var _0x987cc1={};_0x987cc1[_0x68526f['name']]={'$like':'%'+_0x58ea2d[_0xba75('0x2d')][_0xba75('0x3a')]+'%'};return _0x987cc1;}})});}_0x1afc1f=_['merge']({},_0x1afc1f,_0x58ea2d[_0xba75('0x3b')]);var _0x3740bd={'where':_0x1afc1f[_0xba75('0x38')]};return db[_0xba75('0x28')][_0xba75('0x1e')](_0x3740bd)[_0xba75('0x21')](function(_0x20e857){_0x4edc2e['count']=_0x20e857;if(_0x58ea2d[_0xba75('0x2d')]['includeAll']){_0x1afc1f[_0xba75('0x3c')]=[{'all':!![]}];}return db['FreshdeskField'][_0xba75('0x3d')](_0x1afc1f);})[_0xba75('0x21')](function(_0x9c32ad){_0x4edc2e[_0xba75('0x3e')]=_0x9c32ad;return _0x4edc2e;})[_0xba75('0x21')](respondWithFilteredResult(_0x15b5bc,_0x1afc1f))[_0xba75('0x3f')](handleError(_0x15b5bc,null));};exports[_0xba75('0x40')]=function(_0x3f2a91,_0xfd400f){var _0x5c7c7f={'raw':!![],'where':{'id':_0x3f2a91[_0xba75('0x41')]['id']}},_0x30b5f0={};_0x30b5f0['model']=_[_0xba75('0x42')](db[_0xba75('0x28')][_0xba75('0x29')]);_0x30b5f0['query']=_['keys'](_0x3f2a91['query']);_0x30b5f0['filters']=_[_0xba75('0x30')](_0x30b5f0['model'],_0x30b5f0[_0xba75('0x2d')]);_0x5c7c7f[_0xba75('0x2f')]=_[_0xba75('0x30')](_0x30b5f0[_0xba75('0x2b')],qs[_0xba75('0x31')](_0x3f2a91['query']['fields']));_0x5c7c7f[_0xba75('0x2f')]=_0x5c7c7f['attributes'][_0xba75('0x32')]?_0x5c7c7f['attributes']:_0x30b5f0[_0xba75('0x2b')];if(_0x3f2a91[_0xba75('0x2d')][_0xba75('0x43')]){_0x5c7c7f[_0xba75('0x3c')]=[{'all':!![]}];}_0x5c7c7f=_['merge']({},_0x5c7c7f,_0x3f2a91[_0xba75('0x3b')]);return db[_0xba75('0x28')][_0xba75('0x44')](_0x5c7c7f)[_0xba75('0x21')](handleEntityNotFound(_0xfd400f,null))[_0xba75('0x21')](respondWithResult(_0xfd400f,null))[_0xba75('0x3f')](handleError(_0xfd400f,null));};exports[_0xba75('0x45')]=function(_0x2cd995,_0x51cd22){return db[_0xba75('0x28')][_0xba75('0x45')](_0x2cd995[_0xba75('0x46')],{})[_0xba75('0x21')](respondWithResult(_0x51cd22,0xc9))[_0xba75('0x3f')](handleError(_0x51cd22,null));};exports['update']=function(_0x2a1f84,_0x25ae33){if(_0x2a1f84[_0xba75('0x46')]['id']){delete _0x2a1f84[_0xba75('0x46')]['id'];}return db[_0xba75('0x28')][_0xba75('0x44')]({'where':{'id':_0x2a1f84[_0xba75('0x41')]['id']}})['then'](handleEntityNotFound(_0x25ae33,null))[_0xba75('0x21')](saveUpdates(_0x2a1f84[_0xba75('0x46')],null))[_0xba75('0x21')](respondWithResult(_0x25ae33,null))['catch'](handleError(_0x25ae33,null));};exports[_0xba75('0x22')]=function(_0x29b4fc,_0x559f6f){return db['FreshdeskField'][_0xba75('0x44')]({'where':{'id':_0x29b4fc['params']['id']}})['then'](handleEntityNotFound(_0x559f6f,null))[_0xba75('0x21')](removeEntity(_0x559f6f,null))['catch'](handleError(_0x559f6f,null));};
\ No newline at end of file
+var _0xad95=['offset','undefined','limit','count','Content-Range','reject','save','update','destroy','then','end','error','name','send','index','map','FreshdeskField','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','catch','show','keys','find','create','body','params','eml-format','rimraf','zip-dir','moment','bluebird','path','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json'];(function(_0x3d1257,_0x182816){var _0x2dd9bb=function(_0x154115){while(--_0x154115){_0x3d1257['push'](_0x3d1257['shift']());}};_0x2dd9bb(++_0x182816);}(_0xad95,0x70));var _0x5ad9=function(_0x5ed0d8,_0x1b8a22){_0x5ed0d8=_0x5ed0d8-0x0;var _0x311a12=_0xad95[_0x5ed0d8];return _0x311a12;};'use strict';var emlformat=require(_0x5ad9('0x0'));var rimraf=require(_0x5ad9('0x1'));var zipdir=require(_0x5ad9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5ad9('0x3'));var BPromise=require(_0x5ad9('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5ad9('0x5'));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(_0x5ad9('0x6'));var squel=require(_0x5ad9('0x7'));var crypto=require(_0x5ad9('0x8'));var jsforce=require(_0x5ad9('0x9'));var deskjs=require(_0x5ad9('0xa'));var toCsv=require('to-csv');var querystring=require(_0x5ad9('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5ad9('0xc'));var qs=require(_0x5ad9('0xd'));var as=require(_0x5ad9('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5ad9('0xf'))(_0x5ad9('0x10'));var utils=require('../../config/utils');var config=require(_0x5ad9('0x11'));var licenseUtil=require(_0x5ad9('0x12'));var db=require(_0x5ad9('0x13'))['db'];function respondWithStatusCode(_0x3b2718,_0x262ce4){_0x262ce4=_0x262ce4||0xcc;return function(_0xc7e5e9){if(_0xc7e5e9){return _0x3b2718['sendStatus'](_0x262ce4);}return _0x3b2718['status'](_0x262ce4)['end']();};}function respondWithResult(_0x431358,_0x4519ad){_0x4519ad=_0x4519ad||0xc8;return function(_0x52cb37){if(_0x52cb37){return _0x431358[_0x5ad9('0x14')](_0x4519ad)[_0x5ad9('0x15')](_0x52cb37);}};}function respondWithFilteredResult(_0x3f16ef,_0x543743){return function(_0x3da125){if(_0x3da125){var _0x32b0bd=typeof _0x543743[_0x5ad9('0x16')]===_0x5ad9('0x17')&&typeof _0x543743[_0x5ad9('0x18')]===_0x5ad9('0x17');var _0x521cc3=_0x3da125[_0x5ad9('0x19')];var _0x54f392=_0x32b0bd?0x0:_0x543743[_0x5ad9('0x16')];var _0x28682f=_0x32b0bd?_0x3da125[_0x5ad9('0x19')]:_0x543743[_0x5ad9('0x16')]+_0x543743[_0x5ad9('0x18')];var _0x2ba5c0;if(_0x28682f>=_0x521cc3){_0x28682f=_0x521cc3;_0x2ba5c0=0xc8;}else{_0x2ba5c0=0xce;}_0x3f16ef[_0x5ad9('0x14')](_0x2ba5c0);return _0x3f16ef['set'](_0x5ad9('0x1a'),_0x54f392+'-'+_0x28682f+'/'+_0x521cc3)['json'](_0x3da125);}return null;};}function patchUpdates(_0x49363b){return function(_0x3356e5){try{jsonpatch['apply'](_0x3356e5,_0x49363b,!![]);}catch(_0xded166){return BPromise[_0x5ad9('0x1b')](_0xded166);}return _0x3356e5[_0x5ad9('0x1c')]();};}function saveUpdates(_0xebbe63,_0x1274f7){return function(_0x57b2ba){if(_0x57b2ba){return _0x57b2ba[_0x5ad9('0x1d')](_0xebbe63)['then'](function(_0x807b05){return _0x807b05;});}return null;};}function removeEntity(_0x5b816d,_0x570d3c){return function(_0x524249){if(_0x524249){return _0x524249[_0x5ad9('0x1e')]()[_0x5ad9('0x1f')](function(){_0x5b816d[_0x5ad9('0x14')](0xcc)[_0x5ad9('0x20')]();});}};}function handleEntityNotFound(_0x1252e6,_0x36da5f){return function(_0x11d919){if(!_0x11d919){_0x1252e6['sendStatus'](0x194);}return _0x11d919;};}function handleError(_0x54e9dd,_0xe6540f){_0xe6540f=_0xe6540f||0x1f4;return function(_0x4f3889){logger[_0x5ad9('0x21')](_0x4f3889['stack']);if(_0x4f3889[_0x5ad9('0x22')]){delete _0x4f3889['name'];}_0x54e9dd['status'](_0xe6540f)[_0x5ad9('0x23')](_0x4f3889);};}exports[_0x5ad9('0x24')]=function(_0x49b3df,_0x509d41){var _0x3942fa={},_0x129804={},_0x1b6faf={'count':0x0,'rows':[]};var _0x2ad078=_[_0x5ad9('0x25')](db[_0x5ad9('0x26')]['rawAttributes'],function(_0x132ec6){return{'name':_0x132ec6[_0x5ad9('0x27')],'type':_0x132ec6[_0x5ad9('0x28')][_0x5ad9('0x29')]};});_0x129804['model']=_['map'](_0x2ad078,_0x5ad9('0x22'));_0x129804[_0x5ad9('0x2a')]=_['keys'](_0x49b3df['query']);_0x129804['filters']=_[_0x5ad9('0x2b')](_0x129804[_0x5ad9('0x2c')],_0x129804['query']);_0x3942fa[_0x5ad9('0x2d')]=_[_0x5ad9('0x2b')](_0x129804[_0x5ad9('0x2c')],qs[_0x5ad9('0x2e')](_0x49b3df['query']['fields']));_0x3942fa[_0x5ad9('0x2d')]=_0x3942fa[_0x5ad9('0x2d')][_0x5ad9('0x2f')]?_0x3942fa[_0x5ad9('0x2d')]:_0x129804[_0x5ad9('0x2c')];if(!_0x49b3df['query'][_0x5ad9('0x30')](_0x5ad9('0x31'))){_0x3942fa[_0x5ad9('0x18')]=qs[_0x5ad9('0x18')](_0x49b3df[_0x5ad9('0x2a')][_0x5ad9('0x18')]);_0x3942fa['offset']=qs[_0x5ad9('0x16')](_0x49b3df[_0x5ad9('0x2a')]['offset']);}_0x3942fa[_0x5ad9('0x32')]=qs[_0x5ad9('0x33')](_0x49b3df['query'][_0x5ad9('0x33')]);_0x3942fa[_0x5ad9('0x34')]=qs[_0x5ad9('0x35')](_['pick'](_0x49b3df[_0x5ad9('0x2a')],_0x129804[_0x5ad9('0x35')]),_0x2ad078);if(_0x49b3df[_0x5ad9('0x2a')][_0x5ad9('0x36')]){_0x3942fa['where']=_[_0x5ad9('0x37')](_0x3942fa[_0x5ad9('0x34')],{'$or':_[_0x5ad9('0x25')](_0x2ad078,function(_0x143700){if(_0x143700[_0x5ad9('0x28')]!==_0x5ad9('0x38')){var _0x1f0c06={};_0x1f0c06[_0x143700[_0x5ad9('0x22')]]={'$like':'%'+_0x49b3df[_0x5ad9('0x2a')]['filter']+'%'};return _0x1f0c06;}})});}_0x3942fa=_[_0x5ad9('0x37')]({},_0x3942fa,_0x49b3df[_0x5ad9('0x39')]);var _0x41d733={'where':_0x3942fa[_0x5ad9('0x34')]};return db[_0x5ad9('0x26')]['count'](_0x41d733)[_0x5ad9('0x1f')](function(_0xbbfaa0){_0x1b6faf[_0x5ad9('0x19')]=_0xbbfaa0;if(_0x49b3df['query'][_0x5ad9('0x3a')]){_0x3942fa[_0x5ad9('0x3b')]=[{'all':!![]}];}return db[_0x5ad9('0x26')]['findAll'](_0x3942fa);})[_0x5ad9('0x1f')](function(_0x5cfe5b){_0x1b6faf['rows']=_0x5cfe5b;return _0x1b6faf;})[_0x5ad9('0x1f')](respondWithFilteredResult(_0x509d41,_0x3942fa))[_0x5ad9('0x3c')](handleError(_0x509d41,null));};exports[_0x5ad9('0x3d')]=function(_0x24f377,_0x5b8608){var _0x526fda={'raw':!![],'where':{'id':_0x24f377['params']['id']}},_0x552c39={};_0x552c39[_0x5ad9('0x2c')]=_['keys'](db[_0x5ad9('0x26')]['rawAttributes']);_0x552c39[_0x5ad9('0x2a')]=_[_0x5ad9('0x3e')](_0x24f377[_0x5ad9('0x2a')]);_0x552c39[_0x5ad9('0x35')]=_[_0x5ad9('0x2b')](_0x552c39[_0x5ad9('0x2c')],_0x552c39[_0x5ad9('0x2a')]);_0x526fda[_0x5ad9('0x2d')]=_[_0x5ad9('0x2b')](_0x552c39['model'],qs[_0x5ad9('0x2e')](_0x24f377[_0x5ad9('0x2a')][_0x5ad9('0x2e')]));_0x526fda[_0x5ad9('0x2d')]=_0x526fda[_0x5ad9('0x2d')]['length']?_0x526fda[_0x5ad9('0x2d')]:_0x552c39['model'];if(_0x24f377['query']['includeAll']){_0x526fda[_0x5ad9('0x3b')]=[{'all':!![]}];}_0x526fda=_[_0x5ad9('0x37')]({},_0x526fda,_0x24f377[_0x5ad9('0x39')]);return db['FreshdeskField'][_0x5ad9('0x3f')](_0x526fda)[_0x5ad9('0x1f')](handleEntityNotFound(_0x5b8608,null))[_0x5ad9('0x1f')](respondWithResult(_0x5b8608,null))[_0x5ad9('0x3c')](handleError(_0x5b8608,null));};exports['create']=function(_0x126086,_0x420677){return db[_0x5ad9('0x26')][_0x5ad9('0x40')](_0x126086['body'],{})[_0x5ad9('0x1f')](respondWithResult(_0x420677,0xc9))[_0x5ad9('0x3c')](handleError(_0x420677,null));};exports[_0x5ad9('0x1d')]=function(_0x1e03f,_0x479bbc){if(_0x1e03f[_0x5ad9('0x41')]['id']){delete _0x1e03f[_0x5ad9('0x41')]['id'];}return db['FreshdeskField'][_0x5ad9('0x3f')]({'where':{'id':_0x1e03f['params']['id']}})[_0x5ad9('0x1f')](handleEntityNotFound(_0x479bbc,null))[_0x5ad9('0x1f')](saveUpdates(_0x1e03f[_0x5ad9('0x41')],null))[_0x5ad9('0x1f')](respondWithResult(_0x479bbc,null))[_0x5ad9('0x3c')](handleError(_0x479bbc,null));};exports[_0x5ad9('0x1e')]=function(_0xa0f426,_0x2c3945){return db[_0x5ad9('0x26')][_0x5ad9('0x3f')]({'where':{'id':_0xa0f426[_0x5ad9('0x42')]['id']}})[_0x5ad9('0x1f')](handleEntityNotFound(_0x2c3945,null))[_0x5ad9('0x1f')](removeEntity(_0x2c3945,null))[_0x5ad9('0x3c')](handleError(_0x2c3945,null));};
\ No newline at end of file
index 478b97c..fd16d9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2751=['exports','define','FieldId','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskField.attributes'];(function(_0x18a71d,_0x56e344){var _0x423216=function(_0x3235e6){while(--_0x3235e6){_0x18a71d['push'](_0x18a71d['shift']());}};_0x423216(++_0x56e344);}(_0x2751,0xbe));var _0x1275=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2751[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x1275('0x0'));var util=require(_0x1275('0x1'));var logger=require(_0x1275('0x2'))('api');var moment=require('moment');var BPromise=require(_0x1275('0x3'));var rp=require(_0x1275('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1275('0x5'));var config=require(_0x1275('0x6'));var attributes=require(_0x1275('0x7'));module[_0x1275('0x8')]=function(_0x4516c8,_0x483199){return _0x4516c8[_0x1275('0x9')]('FreshdeskField',attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':['idField',_0x1275('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x81c3=['idField','FieldId','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index'];(function(_0xd66cf0,_0x280a1a){var _0x2ce916=function(_0x545ca4){while(--_0x545ca4){_0xd66cf0['push'](_0xd66cf0['shift']());}};_0x2ce916(++_0x280a1a);}(_0x81c3,0xd2));var _0x381c=function(_0x57edf1,_0x99b7d){_0x57edf1=_0x57edf1-0x0;var _0x488dcb=_0x81c3[_0x57edf1];return _0x488dcb;};'use strict';var _=require('lodash');var util=require(_0x381c('0x0'));var logger=require(_0x381c('0x1'))('api');var moment=require(_0x381c('0x2'));var BPromise=require(_0x381c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x381c('0x4'));var config=require(_0x381c('0x5'));var attributes=require('./intFreshdeskField.attributes');module[_0x381c('0x6')]=function(_0x4639ea,_0x9c02e5){return _0x4639ea[_0x381c('0x7')](_0x381c('0x8'),attributes,{'tableName':_0x381c('0x9'),'paranoid':![],'indexes':[{'name':_0x381c('0xa'),'fields':[_0x381c('0xb'),_0x381c('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 882bc91..87002d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5374=['request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x545894,_0x49e368){var _0x365478=function(_0x3f5553){while(--_0x3f5553){_0x545894['push'](_0x545894['shift']());}};_0x365478(++_0x49e368);}(_0x5374,0x6b));var _0x4537=function(_0x347d78,_0x2f983e){_0x347d78=_0x347d78-0x0;var _0x4fbf71=_0x5374[_0x347d78];return _0x4fbf71;};'use strict';var _=require(_0x4537('0x0'));var util=require(_0x4537('0x1'));var moment=require(_0x4537('0x2'));var BPromise=require(_0x4537('0x3'));var rs=require(_0x4537('0x4'));var fs=require('fs');var Redis=require(_0x4537('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4537('0x6'));var logger=require(_0x4537('0x7'))(_0x4537('0x8'));var config=require(_0x4537('0x9'));var jayson=require(_0x4537('0xa'));var client=jayson[_0x4537('0xb')][_0x4537('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x486e80,_0x9c1b87,_0xf3b2c9){return new BPromise(function(_0x509bea,_0x1ef2dc){return client[_0x4537('0xd')](_0x486e80,_0xf3b2c9)[_0x4537('0xe')](function(_0x463135){logger[_0x4537('0xf')](_0x4537('0x10'),_0x9c1b87,_0x4537('0x11'));logger['debug']('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x9c1b87,_0x4537('0x11'),JSON[_0x4537('0x12')](_0x463135));if(_0x463135[_0x4537('0x13')]){if(_0x463135['error'][_0x4537('0x14')]===0x1f4){logger[_0x4537('0x13')]('FreshdeskField,\x20%s,\x20%s',_0x9c1b87,_0x463135[_0x4537('0x13')][_0x4537('0x15')]);return _0x1ef2dc(_0x463135[_0x4537('0x13')][_0x4537('0x15')]);}logger[_0x4537('0x13')](_0x4537('0x10'),_0x9c1b87,_0x463135[_0x4537('0x13')]['message']);return _0x509bea(_0x463135[_0x4537('0x13')]['message']);}else{logger[_0x4537('0xf')](_0x4537('0x10'),_0x9c1b87,_0x4537('0x11'));_0x509bea(_0x463135[_0x4537('0x16')][_0x4537('0x15')]);}})[_0x4537('0x17')](function(_0x477976){logger[_0x4537('0x13')](_0x4537('0x10'),_0x9c1b87,_0x477976);_0x1ef2dc(_0x477976);});});}
\ No newline at end of file
+var _0xb0d5=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s'];(function(_0x49bdc4,_0x1e2507){var _0x1f7437=function(_0x25a9f9){while(--_0x25a9f9){_0x49bdc4['push'](_0x49bdc4['shift']());}};_0x1f7437(++_0x1e2507);}(_0xb0d5,0x193));var _0x5b0d=function(_0x37bc10,_0x528f6f){_0x37bc10=_0x37bc10-0x0;var _0x10fff1=_0xb0d5[_0x37bc10];return _0x10fff1;};'use strict';var _=require(_0x5b0d('0x0'));var util=require(_0x5b0d('0x1'));var moment=require(_0x5b0d('0x2'));var BPromise=require(_0x5b0d('0x3'));var rs=require(_0x5b0d('0x4'));var fs=require('fs');var Redis=require(_0x5b0d('0x5'));var db=require(_0x5b0d('0x6'))['db'];var utils=require(_0x5b0d('0x7'));var logger=require('../../config/logger')(_0x5b0d('0x8'));var config=require(_0x5b0d('0x9'));var jayson=require(_0x5b0d('0xa'));var client=jayson[_0x5b0d('0xb')][_0x5b0d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x16e387,_0x4a1cd0,_0x450494){return new BPromise(function(_0x3abbf7,_0x13b940){return client['request'](_0x16e387,_0x450494)[_0x5b0d('0xd')](function(_0x4b5419){logger['info'](_0x5b0d('0xe'),_0x4a1cd0,_0x5b0d('0xf'));logger['debug'](_0x5b0d('0x10'),_0x4a1cd0,'request\x20sent',JSON['stringify'](_0x4b5419));if(_0x4b5419[_0x5b0d('0x11')]){if(_0x4b5419[_0x5b0d('0x11')]['code']===0x1f4){logger[_0x5b0d('0x11')]('FreshdeskField,\x20%s,\x20%s',_0x4a1cd0,_0x4b5419[_0x5b0d('0x11')][_0x5b0d('0x12')]);return _0x13b940(_0x4b5419['error'][_0x5b0d('0x12')]);}logger[_0x5b0d('0x11')](_0x5b0d('0xe'),_0x4a1cd0,_0x4b5419[_0x5b0d('0x11')][_0x5b0d('0x12')]);return _0x3abbf7(_0x4b5419[_0x5b0d('0x11')]['message']);}else{logger['info']('FreshdeskField,\x20%s,\x20%s',_0x4a1cd0,_0x5b0d('0xf'));_0x3abbf7(_0x4b5419['result'][_0x5b0d('0x12')]);}})[_0x5b0d('0x13')](function(_0x813526){logger[_0x5b0d('0x11')](_0x5b0d('0xe'),_0x4a1cd0,_0x813526);_0x13b940(_0x813526);});});}
\ No newline at end of file
index 3297f59..6cd2bc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d3=['path','express','Router','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','create','post','addConfiguration','put','update','delete','multer','util'];(function(_0x2879e7,_0x2c5d6c){var _0xb3f633=function(_0x2eb79d){while(--_0x2eb79d){_0x2879e7['push'](_0x2879e7['shift']());}};_0xb3f633(++_0x2c5d6c);}(_0x69d3,0xda));var _0x369d=function(_0x8a45d,_0x210fd3){_0x8a45d=_0x8a45d-0x0;var _0x1f9483=_0x69d3[_0x8a45d];return _0x1f9483;};'use strict';var multer=require(_0x369d('0x0'));var util=require(_0x369d('0x1'));var path=require(_0x369d('0x2'));var timeout=require('connect-timeout');var express=require(_0x369d('0x3'));var router=express[_0x369d('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x369d('0x5'));var config=require('../../config/environment');var controller=require('./intFreshsalesAccount.controller');router[_0x369d('0x6')]('/',auth[_0x369d('0x7')](),controller[_0x369d('0x8')]);router[_0x369d('0x6')](_0x369d('0x9'),auth[_0x369d('0x7')](),controller[_0x369d('0xa')]);router[_0x369d('0x6')](_0x369d('0xb'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x369d('0x6')](_0x369d('0xc'),auth[_0x369d('0x7')](),controller[_0x369d('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x369d('0xe')]);router[_0x369d('0xf')](_0x369d('0xb'),auth[_0x369d('0x7')](),controller[_0x369d('0x10')]);router[_0x369d('0x11')]('/:id',auth[_0x369d('0x7')](),controller[_0x369d('0x12')]);router[_0x369d('0x13')](_0x369d('0x9'),auth[_0x369d('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xb7e7=['put','update','exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','index','get','/:id','show','/:id/configurations','isAuthenticated','getConfigurations','/:id/fields','getFields','post','create','addConfiguration'];(function(_0x4e7abc,_0x2aeca1){var _0x428796=function(_0xa2c1d){while(--_0xa2c1d){_0x4e7abc['push'](_0x4e7abc['shift']());}};_0x428796(++_0x2aeca1);}(_0xb7e7,0x121));var _0x7b7e=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xb7e7[_0x3e5086];return _0xfeb102;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0x8')](_0x7b7e('0xb'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0x8')](_0x7b7e('0xe'),auth['isAuthenticated'](),controller[_0x7b7e('0xf')]);router[_0x7b7e('0x10')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x11')]);router[_0x7b7e('0x10')](_0x7b7e('0xb'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x12')]);router[_0x7b7e('0x13')]('/:id',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x14')]);router['delete'](_0x7b7e('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x7b7e('0x15')]=router;
\ No newline at end of file
index 1a5ce43..8489ced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['username','remoteUri','sequelize','exports','STRING'];(function(_0x1c45aa,_0x1743b4){var _0x32b2a4=function(_0x5196c){while(--_0x5196c){_0x1c45aa['push'](_0x1c45aa['shift']());}};_0x32b2a4(++_0x1743b4);}(_0xdb28,0x106));var _0x8db2=function(_0x54f8e9,_0x599c2b){_0x54f8e9=_0x54f8e9-0x0;var _0x4d28f2=_0xdb28[_0x54f8e9];return _0x4d28f2;};'use strict';var Sequelize=require(_0x8db2('0x0'));module[_0x8db2('0x1')]={'name':{'type':Sequelize[_0x8db2('0x2')]},'description':{'type':Sequelize[_0x8db2('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x8db2('0x3')},'apiKey':{'type':Sequelize[_0x8db2('0x2')]},'remoteUri':{'type':Sequelize[_0x8db2('0x2')],'unique':_0x8db2('0x4')},'serverUrl':{'type':Sequelize[_0x8db2('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x6d38=['exports','STRING','remoteUri'];(function(_0x18a436,_0x1dbe06){var _0x5c2cf8=function(_0x4712d1){while(--_0x4712d1){_0x18a436['push'](_0x18a436['shift']());}};_0x5c2cf8(++_0x1dbe06);}(_0x6d38,0x1ef));var _0x86d3=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x6d38[_0x580576];return _0x3f55a0;};'use strict';var Sequelize=require('sequelize');module[_0x86d3('0x0')]={'name':{'type':Sequelize[_0x86d3('0x1')]},'description':{'type':Sequelize[_0x86d3('0x1')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'apiKey':{'type':Sequelize[_0x86d3('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x86d3('0x2')},'serverUrl':{'type':Sequelize[_0x86d3('0x1')],'allowNull':![]}};
\ No newline at end of file
index a390613..ce502c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe52f=['params','destroy','getConfigurations','findOne','FreshsalesConfiguration','filter','length','nolimit','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','Subjects','getFields','remoteUri','apiKey','username','substring','lastIndexOf','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','error','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','statusCode','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','update','then','stack','name','index','map','FreshsalesAccount','fieldName','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','VIRTUAL','merge','options','include','findAll','rows','catch','show','rawAttributes','includeAll','find','create','body'];(function(_0x54d4fe,_0x55e869){var _0x1ab5bb=function(_0x5b1af2){while(--_0x5b1af2){_0x54d4fe['push'](_0x54d4fe['shift']());}};_0x1ab5bb(++_0x55e869);}(_0xe52f,0x163));var _0xfe52=function(_0xabf73f,_0x376ad0){_0xabf73f=_0xabf73f-0x0;var _0x701e6e=_0xe52f[_0xabf73f];return _0x701e6e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfe52('0x0'));var jsonpatch=require(_0xfe52('0x1'));var rp=require('request-promise');var moment=require(_0xfe52('0x2'));var BPromise=require(_0xfe52('0x3'));var Mustache=require(_0xfe52('0x4'));var util=require(_0xfe52('0x5'));var path=require(_0xfe52('0x6'));var sox=require(_0xfe52('0x7'));var csv=require('to-csv');var ejs=require(_0xfe52('0x8'));var fs=require('fs');var fs_extra=require(_0xfe52('0x9'));var _=require(_0xfe52('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfe52('0xb'));var toCsv=require(_0xfe52('0xc'));var querystring=require(_0xfe52('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfe52('0xe'));var qs=require(_0xfe52('0xf'));var as=require(_0xfe52('0x10'));var hardwareService=require(_0xfe52('0x11'));var logger=require('../../config/logger')(_0xfe52('0x12'));var utils=require(_0xfe52('0x13'));var config=require(_0xfe52('0x14'));var licenseUtil=require(_0xfe52('0x15'));var db=require(_0xfe52('0x16'))['db'];var integrations=require(_0xfe52('0x17'));function respondWithStatusCode(_0x1a8058,_0x2fb9eb){_0x2fb9eb=_0x2fb9eb||0xcc;return function(_0xeab35d){if(_0xeab35d){return _0x1a8058[_0xfe52('0x18')](_0x2fb9eb);}return _0x1a8058[_0xfe52('0x19')](_0x2fb9eb)[_0xfe52('0x1a')]();};}function respondWithResult(_0x4b4cdf,_0x59c605){_0x59c605=_0x59c605||0xc8;return function(_0x262eb6){if(_0x262eb6){return _0x4b4cdf['status'](_0x59c605)[_0xfe52('0x1b')](_0x262eb6);}};}function respondWithFilteredResult(_0x543cd4,_0x19ffc6){return function(_0x284be2){if(_0x284be2){var _0x4bf188=typeof _0x19ffc6['offset']===_0xfe52('0x1c')&&typeof _0x19ffc6[_0xfe52('0x1d')]===_0xfe52('0x1c');var _0x299b61=_0x284be2[_0xfe52('0x1e')];var _0x43e456=_0x4bf188?0x0:_0x19ffc6[_0xfe52('0x1f')];var _0x1a4a8b=_0x4bf188?_0x284be2[_0xfe52('0x1e')]:_0x19ffc6[_0xfe52('0x1f')]+_0x19ffc6[_0xfe52('0x1d')];var _0xe9ebed;if(_0x1a4a8b>=_0x299b61){_0x1a4a8b=_0x299b61;_0xe9ebed=0xc8;}else{_0xe9ebed=0xce;}_0x543cd4[_0xfe52('0x19')](_0xe9ebed);return _0x543cd4['set'](_0xfe52('0x20'),_0x43e456+'-'+_0x1a4a8b+'/'+_0x299b61)[_0xfe52('0x1b')](_0x284be2);}return null;};}function patchUpdates(_0x4c9bb6){return function(_0x378553){try{jsonpatch[_0xfe52('0x21')](_0x378553,_0x4c9bb6,!![]);}catch(_0x530822){return BPromise[_0xfe52('0x22')](_0x530822);}return _0x378553['save']();};}function saveUpdates(_0x516698,_0x3ad05a){return function(_0x4a9570){if(_0x4a9570){return _0x4a9570[_0xfe52('0x23')](_0x516698)[_0xfe52('0x24')](function(_0xc93faa){return _0xc93faa;});}return null;};}function removeEntity(_0x2d205c,_0x3fd1fc){return function(_0x2eb044){if(_0x2eb044){return _0x2eb044['destroy']()[_0xfe52('0x24')](function(){_0x2d205c[_0xfe52('0x19')](0xcc)[_0xfe52('0x1a')]();});}};}function handleEntityNotFound(_0x10ac8b,_0x6e769c){return function(_0x776e27){if(!_0x776e27){_0x10ac8b['sendStatus'](0x194);}return _0x776e27;};}function handleError(_0x1b1558,_0x2315bb){_0x2315bb=_0x2315bb||0x1f4;return function(_0x19e84c){logger['error'](_0x19e84c[_0xfe52('0x25')]);if(_0x19e84c['name']){delete _0x19e84c[_0xfe52('0x26')];}_0x1b1558['status'](_0x2315bb)['send'](_0x19e84c);};}exports[_0xfe52('0x27')]=function(_0x3ada0d,_0x2ba6a2){var _0x1030e4={},_0x1721c1={},_0x582910={'count':0x0,'rows':[]};var _0x10a1c4=_[_0xfe52('0x28')](db[_0xfe52('0x29')]['rawAttributes'],function(_0x2061c0){return{'name':_0x2061c0[_0xfe52('0x2a')],'type':_0x2061c0['type'][_0xfe52('0x2b')]};});_0x1721c1[_0xfe52('0x2c')]=_[_0xfe52('0x28')](_0x10a1c4,_0xfe52('0x26'));_0x1721c1['query']=_[_0xfe52('0x2d')](_0x3ada0d[_0xfe52('0x2e')]);_0x1721c1[_0xfe52('0x2f')]=_[_0xfe52('0x30')](_0x1721c1[_0xfe52('0x2c')],_0x1721c1[_0xfe52('0x2e')]);_0x1030e4['attributes']=_[_0xfe52('0x30')](_0x1721c1[_0xfe52('0x2c')],qs['fields'](_0x3ada0d['query'][_0xfe52('0x31')]));_0x1030e4[_0xfe52('0x32')]=_0x1030e4['attributes']['length']?_0x1030e4[_0xfe52('0x32')]:_0x1721c1[_0xfe52('0x2c')];if(!_0x3ada0d[_0xfe52('0x2e')][_0xfe52('0x33')]('nolimit')){_0x1030e4[_0xfe52('0x1d')]=qs[_0xfe52('0x1d')](_0x3ada0d[_0xfe52('0x2e')]['limit']);_0x1030e4[_0xfe52('0x1f')]=qs['offset'](_0x3ada0d[_0xfe52('0x2e')][_0xfe52('0x1f')]);}_0x1030e4[_0xfe52('0x34')]=qs[_0xfe52('0x35')](_0x3ada0d[_0xfe52('0x2e')][_0xfe52('0x35')]);_0x1030e4[_0xfe52('0x36')]=qs[_0xfe52('0x2f')](_[_0xfe52('0x37')](_0x3ada0d[_0xfe52('0x2e')],_0x1721c1['filters']),_0x10a1c4);if(_0x3ada0d[_0xfe52('0x2e')]['filter']){_0x1030e4[_0xfe52('0x36')]=_['merge'](_0x1030e4[_0xfe52('0x36')],{'$or':_[_0xfe52('0x28')](_0x10a1c4,function(_0x36f399){if(_0x36f399['type']!==_0xfe52('0x38')){var _0x51da64={};_0x51da64[_0x36f399[_0xfe52('0x26')]]={'$like':'%'+_0x3ada0d['query']['filter']+'%'};return _0x51da64;}})});}_0x1030e4=_[_0xfe52('0x39')]({},_0x1030e4,_0x3ada0d[_0xfe52('0x3a')]);var _0x4a68a7={'where':_0x1030e4[_0xfe52('0x36')]};return db['FreshsalesAccount'][_0xfe52('0x1e')](_0x4a68a7)[_0xfe52('0x24')](function(_0x27efaf){_0x582910[_0xfe52('0x1e')]=_0x27efaf;if(_0x3ada0d['query']['includeAll']){_0x1030e4[_0xfe52('0x3b')]=[{'all':!![]}];}return db[_0xfe52('0x29')][_0xfe52('0x3c')](_0x1030e4);})[_0xfe52('0x24')](function(_0x13ddb7){_0x582910[_0xfe52('0x3d')]=_0x13ddb7;return _0x582910;})['then'](respondWithFilteredResult(_0x2ba6a2,_0x1030e4))[_0xfe52('0x3e')](handleError(_0x2ba6a2,null));};exports[_0xfe52('0x3f')]=function(_0x228873,_0x25b9f7){var _0x37a43b={'raw':![],'where':{'id':_0x228873['params']['id']}},_0x356db0={};_0x356db0[_0xfe52('0x2c')]=_[_0xfe52('0x2d')](db[_0xfe52('0x29')][_0xfe52('0x40')]);_0x356db0[_0xfe52('0x2e')]=_[_0xfe52('0x2d')](_0x228873[_0xfe52('0x2e')]);_0x356db0[_0xfe52('0x2f')]=_[_0xfe52('0x30')](_0x356db0[_0xfe52('0x2c')],_0x356db0[_0xfe52('0x2e')]);_0x37a43b[_0xfe52('0x32')]=_[_0xfe52('0x30')](_0x356db0[_0xfe52('0x2c')],qs[_0xfe52('0x31')](_0x228873['query'][_0xfe52('0x31')]));_0x37a43b['attributes']=_0x37a43b[_0xfe52('0x32')]['length']?_0x37a43b['attributes']:_0x356db0['model'];if(_0x228873[_0xfe52('0x2e')][_0xfe52('0x41')]){_0x37a43b[_0xfe52('0x3b')]=[{'all':!![]}];}_0x37a43b=_[_0xfe52('0x39')]({},_0x37a43b,_0x228873[_0xfe52('0x3a')]);return db['FreshsalesAccount'][_0xfe52('0x42')](_0x37a43b)[_0xfe52('0x24')](handleEntityNotFound(_0x25b9f7,null))[_0xfe52('0x24')](respondWithResult(_0x25b9f7,null))[_0xfe52('0x3e')](handleError(_0x25b9f7,null));};exports[_0xfe52('0x43')]=function(_0x53c9d4,_0x40c1b5){return db['FreshsalesAccount'][_0xfe52('0x43')](_0x53c9d4[_0xfe52('0x44')],{})[_0xfe52('0x24')](respondWithResult(_0x40c1b5,0xc9))[_0xfe52('0x3e')](handleError(_0x40c1b5,null));};exports['update']=function(_0x4dff3b,_0x3510a7){if(_0x4dff3b[_0xfe52('0x44')]['id']){delete _0x4dff3b['body']['id'];}return db[_0xfe52('0x29')][_0xfe52('0x42')]({'where':{'id':_0x4dff3b[_0xfe52('0x45')]['id']}})['then'](handleEntityNotFound(_0x3510a7,null))[_0xfe52('0x24')](saveUpdates(_0x4dff3b['body'],null))['then'](respondWithResult(_0x3510a7,null))[_0xfe52('0x3e')](handleError(_0x3510a7,null));};exports[_0xfe52('0x46')]=function(_0x7e5104,_0x3899ad){return db[_0xfe52('0x29')][_0xfe52('0x42')]({'where':{'id':_0x7e5104['params']['id']}})[_0xfe52('0x24')](handleEntityNotFound(_0x3899ad,null))[_0xfe52('0x24')](removeEntity(_0x3899ad,null))[_0xfe52('0x3e')](handleError(_0x3899ad,null));};exports[_0xfe52('0x47')]=function(_0x3af339,_0x122d94,_0x4de684){var _0x582ae4={};var _0x4eb7b9={};var _0x16be45;var _0x2a799d;return db[_0xfe52('0x29')][_0xfe52('0x48')]({'where':{'id':_0x3af339[_0xfe52('0x45')]['id']}})[_0xfe52('0x24')](handleEntityNotFound(_0x122d94,null))[_0xfe52('0x24')](function(_0x3bb757){if(_0x3bb757){_0x16be45=_0x3bb757;_0x4eb7b9['model']=_['keys'](db[_0xfe52('0x49')][_0xfe52('0x40')]);_0x4eb7b9['query']=_[_0xfe52('0x2d')](_0x3af339[_0xfe52('0x2e')]);_0x4eb7b9[_0xfe52('0x2f')]=_[_0xfe52('0x30')](_0x4eb7b9['model'],_0x4eb7b9[_0xfe52('0x2e')]);_0x582ae4['attributes']=_['intersection'](_0x4eb7b9[_0xfe52('0x2c')],qs[_0xfe52('0x31')](_0x3af339['query'][_0xfe52('0x31')]));_0x582ae4[_0xfe52('0x32')]=_0x582ae4[_0xfe52('0x32')]['length']?_0x582ae4[_0xfe52('0x32')]:_0x4eb7b9[_0xfe52('0x2c')];_0x582ae4['order']=qs[_0xfe52('0x35')](_0x3af339[_0xfe52('0x2e')][_0xfe52('0x35')]);_0x582ae4[_0xfe52('0x36')]=qs['filters'](_[_0xfe52('0x37')](_0x3af339[_0xfe52('0x2e')],_0x4eb7b9['filters']));if(_0x3af339['query']['filter']){_0x582ae4[_0xfe52('0x36')]=_[_0xfe52('0x39')](_0x582ae4[_0xfe52('0x36')],{'$or':_[_0xfe52('0x28')](_0x582ae4['attributes'],function(_0x20b2e0){var _0x5807e8={};_0x5807e8[_0x20b2e0]={'$like':'%'+_0x3af339[_0xfe52('0x2e')][_0xfe52('0x4a')]+'%'};return _0x5807e8;})});}_0x582ae4=_[_0xfe52('0x39')]({},_0x582ae4,_0x3af339[_0xfe52('0x3a')]);return _0x16be45[_0xfe52('0x47')](_0x582ae4);}})[_0xfe52('0x24')](function(_0x302b54){if(_0x302b54){_0x2a799d=_0x302b54[_0xfe52('0x4b')];if(!_0x3af339[_0xfe52('0x2e')]['hasOwnProperty'](_0xfe52('0x4c'))){_0x582ae4['limit']=qs[_0xfe52('0x1d')](_0x3af339['query'][_0xfe52('0x1d')]);_0x582ae4['offset']=qs[_0xfe52('0x1f')](_0x3af339[_0xfe52('0x2e')]['offset']);}return _0x16be45[_0xfe52('0x47')](_0x582ae4);}})[_0xfe52('0x24')](function(_0xf8d828){if(_0xf8d828){return _0xf8d828?{'count':_0x2a799d,'rows':_0xf8d828}:null;}})[_0xfe52('0x24')](respondWithResult(_0x122d94,null))[_0xfe52('0x3e')](handleError(_0x122d94,null));};exports[_0xfe52('0x4d')]=function(_0x4d4d6c,_0x5825f4,_0x134640){if(_0x4d4d6c[_0xfe52('0x44')]['id']){delete _0x4d4d6c[_0xfe52('0x44')]['id'];}return db[_0xfe52('0x29')]['findOne']({'where':{'id':_0x4d4d6c[_0xfe52('0x45')]['id']}})[_0xfe52('0x24')](handleEntityNotFound(_0x5825f4,null))[_0xfe52('0x24')](function(_0x684c40){if(_0x684c40){_0x4d4d6c[_0xfe52('0x44')][_0xfe52('0x4e')]=_0x684c40['id'];_0x4d4d6c[_0xfe52('0x44')]['Subjects']=integrations[_0xfe52('0x4f')](_0x4d4d6c['body'][_0xfe52('0x50')],_0x4d4d6c[_0xfe52('0x44')]['type']);_0x4d4d6c['body'][_0xfe52('0x51')]=integrations[_0xfe52('0x52')](_0x4d4d6c[_0xfe52('0x44')]['channel'],_0x4d4d6c[_0xfe52('0x44')]['type']);return db[_0xfe52('0x49')][_0xfe52('0x43')](_0x4d4d6c['body'],{'include':[{'model':db[_0xfe52('0x53')],'as':_0xfe52('0x54')},{'model':db['FreshsalesField'],'as':_0xfe52('0x51')}]});}return null;})[_0xfe52('0x24')](respondWithResult(_0x5825f4,null))['catch'](handleError(_0x5825f4,null));};exports[_0xfe52('0x55')]=function(_0x1facd7,_0x2e9827,_0xe70993){var _0x22953f='';var _0x500573='';return db[_0xfe52('0x29')][_0xfe52('0x48')]({'where':{'id':_0x1facd7[_0xfe52('0x45')]['id']},'attributes':['id','username',_0xfe52('0x56'),_0xfe52('0x57')]})['then'](handleEntityNotFound(_0x2e9827,null))[_0xfe52('0x24')](function(_0x16cec5){if(_0x16cec5){_0x500573=_0x16cec5[_0xfe52('0x58')];_0x22953f=_0x16cec5['remoteUri'];var _0x34abbb=_0x16cec5['remoteUri']['slice'](-0x1);if(_0x34abbb==='/'){_0x22953f=_0x22953f[_0xfe52('0x59')](0x0,_0x22953f[_0xfe52('0x5a')](_0x34abbb));}return rp({'method':_0xfe52('0x5b'),'uri':util[_0xfe52('0x5c')](_0xfe52('0x5d'),_0x22953f,_0xfe52('0x5e')),'headers':{'Authorization':_0xfe52('0x5f')+_0x16cec5[_0xfe52('0x57')]},'json':!![]});}})[_0xfe52('0x24')](function(_0x221098){if(_0x221098){var _0xf55855=_0x221098[_0xfe52('0x60')];var _0x2d2e47=![];var _0x1effbf=null;for(_0x1effbf=0x0;_0x1effbf<_0xf55855[_0xfe52('0x4b')];_0x1effbf++){if(_0xf55855[_0x1effbf][_0xfe52('0x61')]===_0x500573){_0x2d2e47=!![];}}if(_0x2d2e47){return!![];}else{throw new Error({'statusCode':0x194,'message':_0xfe52('0x62')});}}})[_0xfe52('0x24')](respondWithResult(_0x2e9827,null))[_0xfe52('0x3e')](function(_0x18ef31){var _0x273e2e=_0x1facd7[_0xfe52('0x2e')][_0xfe52('0x63')]?0x1f4:_0x18ef31['statusCode']||0x1f4;logger[_0xfe52('0x64')](_0xfe52('0x65'),'getFields',_0x273e2e,JSON[_0xfe52('0x66')](_0x18ef31));delete _0x18ef31[_0xfe52('0x26')];if(_0x273e2e===0x191){_0x273e2e=0x190;}_0x2e9827[_0xfe52('0x19')](_0x273e2e)[_0xfe52('0x67')](_0x1facd7[_0xfe52('0x2e')]['test']?{'message':_0xfe52('0x68'),'statusCode':_0x18ef31[_0xfe52('0x69')]}:_0x18ef31);});};
\ No newline at end of file
+var _0x2d45=['getFields','username','remoteUri','slice','substring','lastIndexOf','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','undefined','limit','offset','count','Content-Range','json','apply','reject','save','update','destroy','then','error','name','send','FreshsalesAccount','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','params','keys','options','find','create','body','findOne','hasOwnProperty','nolimit','getConfigurations','addConfiguration','AccountId','getSubjects','Descriptions','getDescriptions','FreshsalesField','Subjects'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x2d45,0x1aa));var _0x52d4=function(_0x2c157f,_0x459f72){_0x2c157f=_0x2c157f-0x0;var _0x40d7c9=_0x2d45[_0x2c157f];return _0x40d7c9;};'use strict';var emlformat=require(_0x52d4('0x0'));var rimraf=require(_0x52d4('0x1'));var zipdir=require(_0x52d4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x52d4('0x3'));var BPromise=require(_0x52d4('0x4'));var Mustache=require(_0x52d4('0x5'));var util=require(_0x52d4('0x6'));var path=require('path');var sox=require(_0x52d4('0x7'));var csv=require('to-csv');var ejs=require(_0x52d4('0x8'));var fs=require('fs');var fs_extra=require(_0x52d4('0x9'));var _=require('lodash');var squel=require(_0x52d4('0xa'));var crypto=require('crypto');var jsforce=require(_0x52d4('0xb'));var deskjs=require(_0x52d4('0xc'));var toCsv=require(_0x52d4('0xd'));var querystring=require(_0x52d4('0xe'));var Papa=require(_0x52d4('0xf'));var Redis=require('ioredis');var authService=require(_0x52d4('0x10'));var qs=require(_0x52d4('0x11'));var as=require(_0x52d4('0x12'));var hardwareService=require(_0x52d4('0x13'));var logger=require('../../config/logger')(_0x52d4('0x14'));var utils=require('../../config/utils');var config=require(_0x52d4('0x15'));var licenseUtil=require(_0x52d4('0x16'));var db=require(_0x52d4('0x17'))['db'];var integrations=require(_0x52d4('0x18'));function respondWithStatusCode(_0x3f2580,_0x10bba6){_0x10bba6=_0x10bba6||0xcc;return function(_0x3aec10){if(_0x3aec10){return _0x3f2580[_0x52d4('0x19')](_0x10bba6);}return _0x3f2580[_0x52d4('0x1a')](_0x10bba6)[_0x52d4('0x1b')]();};}function respondWithResult(_0x5d424d,_0x3002dc){_0x3002dc=_0x3002dc||0xc8;return function(_0x27a16e){if(_0x27a16e){return _0x5d424d[_0x52d4('0x1a')](_0x3002dc)['json'](_0x27a16e);}};}function respondWithFilteredResult(_0x30864f,_0x322e7d){return function(_0x54558f){if(_0x54558f){var _0x1bbe75=typeof _0x322e7d['offset']===_0x52d4('0x1c')&&typeof _0x322e7d[_0x52d4('0x1d')]===_0x52d4('0x1c');var _0x4a1729=_0x54558f['count'];var _0x3a78f7=_0x1bbe75?0x0:_0x322e7d[_0x52d4('0x1e')];var _0x5d8fe0=_0x1bbe75?_0x54558f[_0x52d4('0x1f')]:_0x322e7d[_0x52d4('0x1e')]+_0x322e7d[_0x52d4('0x1d')];var _0x464fff;if(_0x5d8fe0>=_0x4a1729){_0x5d8fe0=_0x4a1729;_0x464fff=0xc8;}else{_0x464fff=0xce;}_0x30864f['status'](_0x464fff);return _0x30864f['set'](_0x52d4('0x20'),_0x3a78f7+'-'+_0x5d8fe0+'/'+_0x4a1729)[_0x52d4('0x21')](_0x54558f);}return null;};}function patchUpdates(_0x59a199){return function(_0x3f5678){try{jsonpatch[_0x52d4('0x22')](_0x3f5678,_0x59a199,!![]);}catch(_0x52f586){return BPromise[_0x52d4('0x23')](_0x52f586);}return _0x3f5678[_0x52d4('0x24')]();};}function saveUpdates(_0x188887,_0x32d6d3){return function(_0x5ac615){if(_0x5ac615){return _0x5ac615[_0x52d4('0x25')](_0x188887)['then'](function(_0x6f8d6e){return _0x6f8d6e;});}return null;};}function removeEntity(_0x83ec00,_0x448f25){return function(_0x4420dd){if(_0x4420dd){return _0x4420dd[_0x52d4('0x26')]()[_0x52d4('0x27')](function(){_0x83ec00[_0x52d4('0x1a')](0xcc)[_0x52d4('0x1b')]();});}};}function handleEntityNotFound(_0x2dbb57,_0x2af09d){return function(_0x2a1a8c){if(!_0x2a1a8c){_0x2dbb57[_0x52d4('0x19')](0x194);}return _0x2a1a8c;};}function handleError(_0x47b51a,_0x2e6050){_0x2e6050=_0x2e6050||0x1f4;return function(_0xfb3882){logger[_0x52d4('0x28')](_0xfb3882['stack']);if(_0xfb3882[_0x52d4('0x29')]){delete _0xfb3882['name'];}_0x47b51a[_0x52d4('0x1a')](_0x2e6050)[_0x52d4('0x2a')](_0xfb3882);};}exports['index']=function(_0x3e8223,_0x445b7e){var _0xf6a828={},_0xdb8cf2={},_0x536e4b={'count':0x0,'rows':[]};var _0x355fca=_['map'](db[_0x52d4('0x2b')][_0x52d4('0x2c')],function(_0x4f1209){return{'name':_0x4f1209[_0x52d4('0x2d')],'type':_0x4f1209[_0x52d4('0x2e')][_0x52d4('0x2f')]};});_0xdb8cf2[_0x52d4('0x30')]=_[_0x52d4('0x31')](_0x355fca,_0x52d4('0x29'));_0xdb8cf2['query']=_['keys'](_0x3e8223[_0x52d4('0x32')]);_0xdb8cf2[_0x52d4('0x33')]=_[_0x52d4('0x34')](_0xdb8cf2[_0x52d4('0x30')],_0xdb8cf2[_0x52d4('0x32')]);_0xf6a828[_0x52d4('0x35')]=_[_0x52d4('0x34')](_0xdb8cf2['model'],qs['fields'](_0x3e8223[_0x52d4('0x32')][_0x52d4('0x36')]));_0xf6a828[_0x52d4('0x35')]=_0xf6a828['attributes'][_0x52d4('0x37')]?_0xf6a828[_0x52d4('0x35')]:_0xdb8cf2[_0x52d4('0x30')];if(!_0x3e8223[_0x52d4('0x32')]['hasOwnProperty']('nolimit')){_0xf6a828[_0x52d4('0x1d')]=qs[_0x52d4('0x1d')](_0x3e8223['query']['limit']);_0xf6a828[_0x52d4('0x1e')]=qs[_0x52d4('0x1e')](_0x3e8223['query'][_0x52d4('0x1e')]);}_0xf6a828[_0x52d4('0x38')]=qs[_0x52d4('0x39')](_0x3e8223['query']['sort']);_0xf6a828[_0x52d4('0x3a')]=qs[_0x52d4('0x33')](_[_0x52d4('0x3b')](_0x3e8223[_0x52d4('0x32')],_0xdb8cf2[_0x52d4('0x33')]),_0x355fca);if(_0x3e8223['query'][_0x52d4('0x3c')]){_0xf6a828[_0x52d4('0x3a')]=_[_0x52d4('0x3d')](_0xf6a828[_0x52d4('0x3a')],{'$or':_[_0x52d4('0x31')](_0x355fca,function(_0x2ad8a2){if(_0x2ad8a2[_0x52d4('0x2e')]!=='VIRTUAL'){var _0x9737a4={};_0x9737a4[_0x2ad8a2[_0x52d4('0x29')]]={'$like':'%'+_0x3e8223[_0x52d4('0x32')][_0x52d4('0x3c')]+'%'};return _0x9737a4;}})});}_0xf6a828=_['merge']({},_0xf6a828,_0x3e8223['options']);var _0x4dd1ab={'where':_0xf6a828[_0x52d4('0x3a')]};return db[_0x52d4('0x2b')][_0x52d4('0x1f')](_0x4dd1ab)[_0x52d4('0x27')](function(_0x4f9d38){_0x536e4b[_0x52d4('0x1f')]=_0x4f9d38;if(_0x3e8223[_0x52d4('0x32')][_0x52d4('0x3e')]){_0xf6a828[_0x52d4('0x3f')]=[{'all':!![]}];}return db[_0x52d4('0x2b')][_0x52d4('0x40')](_0xf6a828);})[_0x52d4('0x27')](function(_0x58c411){_0x536e4b[_0x52d4('0x41')]=_0x58c411;return _0x536e4b;})[_0x52d4('0x27')](respondWithFilteredResult(_0x445b7e,_0xf6a828))[_0x52d4('0x42')](handleError(_0x445b7e,null));};exports['show']=function(_0x2c6280,_0x4cc276){var _0x134b4f={'raw':![],'where':{'id':_0x2c6280[_0x52d4('0x43')]['id']}},_0x4b8a4c={};_0x4b8a4c[_0x52d4('0x30')]=_['keys'](db[_0x52d4('0x2b')][_0x52d4('0x2c')]);_0x4b8a4c[_0x52d4('0x32')]=_[_0x52d4('0x44')](_0x2c6280[_0x52d4('0x32')]);_0x4b8a4c[_0x52d4('0x33')]=_[_0x52d4('0x34')](_0x4b8a4c[_0x52d4('0x30')],_0x4b8a4c[_0x52d4('0x32')]);_0x134b4f[_0x52d4('0x35')]=_[_0x52d4('0x34')](_0x4b8a4c['model'],qs[_0x52d4('0x36')](_0x2c6280[_0x52d4('0x32')][_0x52d4('0x36')]));_0x134b4f[_0x52d4('0x35')]=_0x134b4f[_0x52d4('0x35')][_0x52d4('0x37')]?_0x134b4f[_0x52d4('0x35')]:_0x4b8a4c['model'];if(_0x2c6280[_0x52d4('0x32')]['includeAll']){_0x134b4f['include']=[{'all':!![]}];}_0x134b4f=_[_0x52d4('0x3d')]({},_0x134b4f,_0x2c6280[_0x52d4('0x45')]);return db['FreshsalesAccount'][_0x52d4('0x46')](_0x134b4f)[_0x52d4('0x27')](handleEntityNotFound(_0x4cc276,null))[_0x52d4('0x27')](respondWithResult(_0x4cc276,null))[_0x52d4('0x42')](handleError(_0x4cc276,null));};exports[_0x52d4('0x47')]=function(_0x59e551,_0x2a88ea){return db[_0x52d4('0x2b')]['create'](_0x59e551[_0x52d4('0x48')],{})[_0x52d4('0x27')](respondWithResult(_0x2a88ea,0xc9))[_0x52d4('0x42')](handleError(_0x2a88ea,null));};exports[_0x52d4('0x25')]=function(_0xb4f746,_0x59b3f6){if(_0xb4f746[_0x52d4('0x48')]['id']){delete _0xb4f746['body']['id'];}return db[_0x52d4('0x2b')][_0x52d4('0x46')]({'where':{'id':_0xb4f746[_0x52d4('0x43')]['id']}})[_0x52d4('0x27')](handleEntityNotFound(_0x59b3f6,null))[_0x52d4('0x27')](saveUpdates(_0xb4f746[_0x52d4('0x48')],null))['then'](respondWithResult(_0x59b3f6,null))[_0x52d4('0x42')](handleError(_0x59b3f6,null));};exports[_0x52d4('0x26')]=function(_0x25aa27,_0x15b27a){return db[_0x52d4('0x2b')][_0x52d4('0x46')]({'where':{'id':_0x25aa27[_0x52d4('0x43')]['id']}})['then'](handleEntityNotFound(_0x15b27a,null))[_0x52d4('0x27')](removeEntity(_0x15b27a,null))['catch'](handleError(_0x15b27a,null));};exports['getConfigurations']=function(_0x363023,_0x1ed8c8,_0x5a553d){var _0x215d95={};var _0x15710d={};var _0x3eebd8;var _0x584891;return db['FreshsalesAccount'][_0x52d4('0x49')]({'where':{'id':_0x363023[_0x52d4('0x43')]['id']}})['then'](handleEntityNotFound(_0x1ed8c8,null))[_0x52d4('0x27')](function(_0x2abec4){if(_0x2abec4){_0x3eebd8=_0x2abec4;_0x15710d[_0x52d4('0x30')]=_[_0x52d4('0x44')](db['FreshsalesConfiguration'][_0x52d4('0x2c')]);_0x15710d[_0x52d4('0x32')]=_[_0x52d4('0x44')](_0x363023[_0x52d4('0x32')]);_0x15710d['filters']=_['intersection'](_0x15710d[_0x52d4('0x30')],_0x15710d[_0x52d4('0x32')]);_0x215d95['attributes']=_[_0x52d4('0x34')](_0x15710d[_0x52d4('0x30')],qs['fields'](_0x363023[_0x52d4('0x32')][_0x52d4('0x36')]));_0x215d95[_0x52d4('0x35')]=_0x215d95[_0x52d4('0x35')]['length']?_0x215d95[_0x52d4('0x35')]:_0x15710d[_0x52d4('0x30')];_0x215d95[_0x52d4('0x38')]=qs['sort'](_0x363023[_0x52d4('0x32')][_0x52d4('0x39')]);_0x215d95[_0x52d4('0x3a')]=qs[_0x52d4('0x33')](_['pick'](_0x363023[_0x52d4('0x32')],_0x15710d[_0x52d4('0x33')]));if(_0x363023[_0x52d4('0x32')]['filter']){_0x215d95[_0x52d4('0x3a')]=_[_0x52d4('0x3d')](_0x215d95[_0x52d4('0x3a')],{'$or':_[_0x52d4('0x31')](_0x215d95[_0x52d4('0x35')],function(_0x64cc51){var _0xa981a5={};_0xa981a5[_0x64cc51]={'$like':'%'+_0x363023[_0x52d4('0x32')][_0x52d4('0x3c')]+'%'};return _0xa981a5;})});}_0x215d95=_[_0x52d4('0x3d')]({},_0x215d95,_0x363023[_0x52d4('0x45')]);return _0x3eebd8['getConfigurations'](_0x215d95);}})['then'](function(_0x4e59d2){if(_0x4e59d2){_0x584891=_0x4e59d2['length'];if(!_0x363023[_0x52d4('0x32')][_0x52d4('0x4a')](_0x52d4('0x4b'))){_0x215d95[_0x52d4('0x1d')]=qs['limit'](_0x363023[_0x52d4('0x32')]['limit']);_0x215d95[_0x52d4('0x1e')]=qs['offset'](_0x363023['query'][_0x52d4('0x1e')]);}return _0x3eebd8[_0x52d4('0x4c')](_0x215d95);}})['then'](function(_0x2f5900){if(_0x2f5900){return _0x2f5900?{'count':_0x584891,'rows':_0x2f5900}:null;}})[_0x52d4('0x27')](respondWithResult(_0x1ed8c8,null))['catch'](handleError(_0x1ed8c8,null));};exports[_0x52d4('0x4d')]=function(_0x4ff279,_0x14eea1,_0xe1bb37){if(_0x4ff279['body']['id']){delete _0x4ff279[_0x52d4('0x48')]['id'];}return db[_0x52d4('0x2b')][_0x52d4('0x49')]({'where':{'id':_0x4ff279[_0x52d4('0x43')]['id']}})['then'](handleEntityNotFound(_0x14eea1,null))[_0x52d4('0x27')](function(_0x347a6f){if(_0x347a6f){_0x4ff279['body'][_0x52d4('0x4e')]=_0x347a6f['id'];_0x4ff279['body']['Subjects']=integrations[_0x52d4('0x4f')](_0x4ff279[_0x52d4('0x48')]['channel'],_0x4ff279[_0x52d4('0x48')][_0x52d4('0x2e')]);_0x4ff279['body'][_0x52d4('0x50')]=integrations[_0x52d4('0x51')](_0x4ff279[_0x52d4('0x48')]['channel'],_0x4ff279[_0x52d4('0x48')][_0x52d4('0x2e')]);return db['FreshsalesConfiguration'][_0x52d4('0x47')](_0x4ff279[_0x52d4('0x48')],{'include':[{'model':db[_0x52d4('0x52')],'as':_0x52d4('0x53')},{'model':db[_0x52d4('0x52')],'as':_0x52d4('0x50')}]});}return null;})[_0x52d4('0x27')](respondWithResult(_0x14eea1,null))[_0x52d4('0x42')](handleError(_0x14eea1,null));};exports[_0x52d4('0x54')]=function(_0x189425,_0x4e8be7,_0x305b8c){var _0x5c4b50='';var _0xcc2746='';return db[_0x52d4('0x2b')][_0x52d4('0x49')]({'where':{'id':_0x189425[_0x52d4('0x43')]['id']},'attributes':['id',_0x52d4('0x55'),'remoteUri','apiKey']})[_0x52d4('0x27')](handleEntityNotFound(_0x4e8be7,null))['then'](function(_0x50e2a6){if(_0x50e2a6){_0xcc2746=_0x50e2a6[_0x52d4('0x55')];_0x5c4b50=_0x50e2a6['remoteUri'];var _0x33dc23=_0x50e2a6[_0x52d4('0x56')][_0x52d4('0x57')](-0x1);if(_0x33dc23==='/'){_0x5c4b50=_0x5c4b50[_0x52d4('0x58')](0x0,_0x5c4b50[_0x52d4('0x59')](_0x33dc23));}return rp({'method':'GET','uri':util[_0x52d4('0x5a')](_0x52d4('0x5b'),_0x5c4b50,_0x52d4('0x5c')),'headers':{'Authorization':_0x52d4('0x5d')+_0x50e2a6['apiKey']},'json':!![]});}})['then'](function(_0x5893de){if(_0x5893de){var _0x3c79fe=_0x5893de[_0x52d4('0x5e')];var _0xbccadb=![];var _0x3ed3cd=null;for(_0x3ed3cd=0x0;_0x3ed3cd<_0x3c79fe[_0x52d4('0x37')];_0x3ed3cd++){if(_0x3c79fe[_0x3ed3cd][_0x52d4('0x5f')]===_0xcc2746){_0xbccadb=!![];}}if(_0xbccadb){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x52d4('0x60')});}}})[_0x52d4('0x27')](respondWithResult(_0x4e8be7,null))['catch'](function(_0x36389a){var _0x3b48bc=_0x189425['query']['test']?0x1f4:_0x36389a[_0x52d4('0x61')]||0x1f4;logger[_0x52d4('0x28')](_0x52d4('0x62'),_0x52d4('0x54'),_0x3b48bc,JSON[_0x52d4('0x63')](_0x36389a));delete _0x36389a[_0x52d4('0x29')];if(_0x3b48bc===0x191){_0x3b48bc=0x190;}_0x4e8be7[_0x52d4('0x1a')](_0x3b48bc)[_0x52d4('0x2a')](_0x189425['query'][_0x52d4('0x64')]?{'message':_0x52d4('0x65'),'statusCode':_0x36389a['statusCode']}:_0x36389a);});};
\ No newline at end of file
index 34ee7bd..1e774f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e24=['request-promise','path','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','int_freshsales_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x148c09,_0x4fd39f){var _0x18e613=function(_0xfaa810){while(--_0xfaa810){_0x148c09['push'](_0x148c09['shift']());}};_0x18e613(++_0x4fd39f);}(_0x3e24,0x167));var _0x43e2=function(_0x8bee69,_0x3c9bcb){_0x8bee69=_0x8bee69-0x0;var _0x32068f=_0x3e24[_0x8bee69];return _0x32068f;};'use strict';var _=require(_0x43e2('0x0'));var util=require(_0x43e2('0x1'));var logger=require(_0x43e2('0x2'))(_0x43e2('0x3'));var moment=require(_0x43e2('0x4'));var BPromise=require('bluebird');var rp=require(_0x43e2('0x5'));var fs=require('fs');var path=require(_0x43e2('0x6'));var rimraf=require('rimraf');var config=require(_0x43e2('0x7'));var attributes=require(_0x43e2('0x8'));var integrations=require(_0x43e2('0x9'));module[_0x43e2('0xa')]=function(_0x43b5a7,_0x121e2e){return _0x43b5a7[_0x43e2('0xb')]('FreshsalesAccount',attributes,{'tableName':_0x43e2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','FreshsalesAccount','int_freshsales_accounts'];(function(_0x793f11,_0x3d34b0){var _0x2040e4=function(_0x589906){while(--_0x589906){_0x793f11['push'](_0x793f11['shift']());}};_0x2040e4(++_0x3d34b0);}(_0x1261,0x144));var _0x1126=function(_0x1ad5a2,_0x45632b){_0x1ad5a2=_0x1ad5a2-0x0;var _0x51eba3=_0x1261[_0x1ad5a2];return _0x51eba3;};'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'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x40ba58,_0x907180){return _0x40ba58['define'](_0x1126('0xa'),attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e3fd5ea..93f7fc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['map','include','model','attributes','then','ShowFreshsalesAccount','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','FreshsalesAccount,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','limit'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0x5f2f,0x73));var _0xf5f2=function(_0x527d1b,_0x27ce27){_0x527d1b=_0x527d1b-0x0;var _0x2793ca=_0x5f2f[_0x527d1b];return _0x2793ca;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('FreshsalesAccount,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}exports[_0xf5f2('0x17')]=function(_0x20fccd){var _0x28e097=this;return new Promise(function(_0x4ff59b,_0x3ee69){return db[_0xf5f2('0x18')][_0xf5f2('0x19')]({'raw':_0x20fccd[_0xf5f2('0x1a')]?_0x20fccd['options'][_0xf5f2('0x1b')]===undefined?!![]:![]:!![],'where':_0x20fccd[_0xf5f2('0x1a')]?_0x20fccd['options']['where']||null:null,'attributes':_0x20fccd[_0xf5f2('0x1a')]?_0x20fccd[_0xf5f2('0x1a')]['attributes']||null:null,'limit':_0x20fccd[_0xf5f2('0x1a')]?_0x20fccd[_0xf5f2('0x1a')][_0xf5f2('0x1c')]||null:null,'include':_0x20fccd[_0xf5f2('0x1a')]?_0x20fccd[_0xf5f2('0x1a')]['include']?_[_0xf5f2('0x1d')](_0x20fccd[_0xf5f2('0x1a')][_0xf5f2('0x1e')],function(_0x2833fe){return{'model':db[_0x2833fe[_0xf5f2('0x1f')]],'as':_0x2833fe['as'],'attributes':_0x2833fe['attributes'],'include':_0x2833fe['include']?_[_0xf5f2('0x1d')](_0x2833fe[_0xf5f2('0x1e')],function(_0x13da6f){return{'model':db[_0x13da6f[_0xf5f2('0x1f')]],'as':_0x13da6f['as'],'attributes':_0x13da6f[_0xf5f2('0x20')],'include':_0x13da6f[_0xf5f2('0x1e')]?_[_0xf5f2('0x1d')](_0x13da6f[_0xf5f2('0x1e')],function(_0x294414){return{'model':db[_0x294414['model']],'as':_0x294414['as'],'attributes':_0x294414[_0xf5f2('0x20')]};}):[]};}):[]};}):[]:[]})[_0xf5f2('0x21')](function(_0x375ca8){logger[_0xf5f2('0xd')](_0xf5f2('0x17'),_0x20fccd);logger[_0xf5f2('0xf')]('GetFreshsalesAccount',_0x20fccd,JSON['stringify'](_0x375ca8));_0x4ff59b(_0x375ca8);})[_0xf5f2('0x16')](function(_0x14c829){logger[_0xf5f2('0x11')]('GetFreshsalesAccount',_0x14c829['message'],_0x20fccd);_0x3ee69(_0x28e097[_0xf5f2('0x11')](0x1f4,_0x14c829[_0xf5f2('0x13')]));});});};exports[_0xf5f2('0x22')]=function(_0x153924){var _0x1b381e=this;return new Promise(function(_0x54c0c8,_0x52e959){return db[_0xf5f2('0x18')]['find']({'raw':_0x153924[_0xf5f2('0x1a')]?_0x153924['options'][_0xf5f2('0x1b')]===undefined?!![]:![]:!![],'where':_0x153924[_0xf5f2('0x1a')]?_0x153924[_0xf5f2('0x1a')][_0xf5f2('0x23')]||null:null,'attributes':_0x153924[_0xf5f2('0x1a')]?_0x153924[_0xf5f2('0x1a')][_0xf5f2('0x20')]||null:null,'include':_0x153924[_0xf5f2('0x1a')]?_0x153924['options'][_0xf5f2('0x1e')]?_[_0xf5f2('0x1d')](_0x153924[_0xf5f2('0x1a')][_0xf5f2('0x1e')],function(_0x1408b9){return{'model':db[_0x1408b9[_0xf5f2('0x1f')]],'as':_0x1408b9['as'],'attributes':_0x1408b9[_0xf5f2('0x20')],'include':_0x1408b9['include']?_[_0xf5f2('0x1d')](_0x1408b9[_0xf5f2('0x1e')],function(_0x55989d){return{'model':db[_0x55989d[_0xf5f2('0x1f')]],'as':_0x55989d['as'],'attributes':_0x55989d['attributes'],'include':_0x55989d[_0xf5f2('0x1e')]?_[_0xf5f2('0x1d')](_0x55989d[_0xf5f2('0x1e')],function(_0x2e3cca){return{'model':db[_0x2e3cca['model']],'as':_0x2e3cca['as'],'attributes':_0x2e3cca['attributes']};}):[]};}):[]};}):[]:[]})[_0xf5f2('0x21')](function(_0x46ad4a){logger[_0xf5f2('0xd')]('ShowFreshsalesAccount',_0x153924);logger[_0xf5f2('0xf')]('ShowFreshsalesAccount',_0x153924,JSON[_0xf5f2('0x10')](_0x46ad4a));_0x54c0c8(_0x46ad4a);})['catch'](function(_0x46f464){logger[_0xf5f2('0x11')]('ShowFreshsalesAccount',_0x46f464[_0xf5f2('0x13')],_0x153924);_0x52e959(_0x1b381e[_0xf5f2('0x11')](0x1f4,_0x46f464[_0xf5f2('0x13')]));});});};
\ No newline at end of file
+var _0x27a0=['client','http','request','info','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','GetFreshsalesAccount','FreshsalesAccount','options','attributes','limit','include','map','model','then','catch','ShowFreshsalesAccount','find','raw','where','util','moment','bluebird','randomstring','ioredis','../../config/environment','jayson/promise'];(function(_0x4aa4e6,_0x278c45){var _0x322588=function(_0x19279d){while(--_0x19279d){_0x4aa4e6['push'](_0x4aa4e6['shift']());}};_0x322588(++_0x278c45);}(_0x27a0,0xbf));var _0x027a=function(_0x50be8c,_0x5ccbb8){_0x50be8c=_0x50be8c-0x0;var _0x1b9f68=_0x27a0[_0x50be8c];return _0x1b9f68;};'use strict';var _=require('lodash');var util=require(_0x027a('0x0'));var moment=require(_0x027a('0x1'));var BPromise=require(_0x027a('0x2'));var rs=require(_0x027a('0x3'));var fs=require('fs');var Redis=require(_0x027a('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x027a('0x5'));var jayson=require(_0x027a('0x6'));var client=jayson[_0x027a('0x7')][_0x027a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xe233ed,_0x3c7d67,_0x550fbb){return new BPromise(function(_0x3d1429,_0x271dfe){return client[_0x027a('0x9')](_0xe233ed,_0x550fbb)['then'](function(_0x44c56a){logger[_0x027a('0xa')](_0x027a('0xb'),_0x3c7d67,'request\x20sent');logger[_0x027a('0xc')](_0x027a('0xd'),_0x3c7d67,_0x027a('0xe'),JSON[_0x027a('0xf')](_0x44c56a));if(_0x44c56a[_0x027a('0x10')]){if(_0x44c56a[_0x027a('0x10')][_0x027a('0x11')]===0x1f4){logger[_0x027a('0x10')](_0x027a('0xb'),_0x3c7d67,_0x44c56a[_0x027a('0x10')][_0x027a('0x12')]);return _0x271dfe(_0x44c56a['error'][_0x027a('0x12')]);}logger[_0x027a('0x10')](_0x027a('0xb'),_0x3c7d67,_0x44c56a[_0x027a('0x10')][_0x027a('0x12')]);return _0x3d1429(_0x44c56a['error']['message']);}else{logger[_0x027a('0xa')]('FreshsalesAccount,\x20%s,\x20%s',_0x3c7d67,_0x027a('0xe'));_0x3d1429(_0x44c56a['result'][_0x027a('0x12')]);}})['catch'](function(_0x4dc3ab){logger['error'](_0x027a('0xb'),_0x3c7d67,_0x4dc3ab);_0x271dfe(_0x4dc3ab);});});}exports[_0x027a('0x13')]=function(_0x826d19){var _0x1fb40b=this;return new Promise(function(_0x52125e,_0x282e70){return db[_0x027a('0x14')]['findAll']({'raw':_0x826d19['options']?_0x826d19[_0x027a('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x826d19[_0x027a('0x15')]?_0x826d19['options']['where']||null:null,'attributes':_0x826d19['options']?_0x826d19['options'][_0x027a('0x16')]||null:null,'limit':_0x826d19[_0x027a('0x15')]?_0x826d19[_0x027a('0x15')][_0x027a('0x17')]||null:null,'include':_0x826d19['options']?_0x826d19[_0x027a('0x15')][_0x027a('0x18')]?_[_0x027a('0x19')](_0x826d19[_0x027a('0x15')][_0x027a('0x18')],function(_0x3bbd46){return{'model':db[_0x3bbd46['model']],'as':_0x3bbd46['as'],'attributes':_0x3bbd46[_0x027a('0x16')],'include':_0x3bbd46['include']?_[_0x027a('0x19')](_0x3bbd46[_0x027a('0x18')],function(_0x1b1a13){return{'model':db[_0x1b1a13[_0x027a('0x1a')]],'as':_0x1b1a13['as'],'attributes':_0x1b1a13['attributes'],'include':_0x1b1a13['include']?_[_0x027a('0x19')](_0x1b1a13[_0x027a('0x18')],function(_0x338141){return{'model':db[_0x338141[_0x027a('0x1a')]],'as':_0x338141['as'],'attributes':_0x338141['attributes']};}):[]};}):[]};}):[]:[]})[_0x027a('0x1b')](function(_0x55a8cd){logger[_0x027a('0xa')]('GetFreshsalesAccount',_0x826d19);logger[_0x027a('0xc')]('GetFreshsalesAccount',_0x826d19,JSON['stringify'](_0x55a8cd));_0x52125e(_0x55a8cd);})[_0x027a('0x1c')](function(_0x5782ac){logger['error'](_0x027a('0x13'),_0x5782ac['message'],_0x826d19);_0x282e70(_0x1fb40b[_0x027a('0x10')](0x1f4,_0x5782ac['message']));});});};exports[_0x027a('0x1d')]=function(_0xc99acc){var _0x4d9a29=this;return new Promise(function(_0xe4ea7d,_0x4b4ac4){return db[_0x027a('0x14')][_0x027a('0x1e')]({'raw':_0xc99acc[_0x027a('0x15')]?_0xc99acc[_0x027a('0x15')][_0x027a('0x1f')]===undefined?!![]:![]:!![],'where':_0xc99acc[_0x027a('0x15')]?_0xc99acc['options'][_0x027a('0x20')]||null:null,'attributes':_0xc99acc['options']?_0xc99acc[_0x027a('0x15')]['attributes']||null:null,'include':_0xc99acc[_0x027a('0x15')]?_0xc99acc[_0x027a('0x15')][_0x027a('0x18')]?_[_0x027a('0x19')](_0xc99acc[_0x027a('0x15')]['include'],function(_0x1274e1){return{'model':db[_0x1274e1[_0x027a('0x1a')]],'as':_0x1274e1['as'],'attributes':_0x1274e1[_0x027a('0x16')],'include':_0x1274e1[_0x027a('0x18')]?_[_0x027a('0x19')](_0x1274e1[_0x027a('0x18')],function(_0x1bc29f){return{'model':db[_0x1bc29f[_0x027a('0x1a')]],'as':_0x1bc29f['as'],'attributes':_0x1bc29f[_0x027a('0x16')],'include':_0x1bc29f[_0x027a('0x18')]?_[_0x027a('0x19')](_0x1bc29f['include'],function(_0x29dc8f){return{'model':db[_0x29dc8f[_0x027a('0x1a')]],'as':_0x29dc8f['as'],'attributes':_0x29dc8f[_0x027a('0x16')]};}):[]};}):[]};}):[]:[]})[_0x027a('0x1b')](function(_0x19b476){logger[_0x027a('0xa')](_0x027a('0x1d'),_0xc99acc);logger['debug'](_0x027a('0x1d'),_0xc99acc,JSON[_0x027a('0xf')](_0x19b476));_0xe4ea7d(_0x19b476);})[_0x027a('0x1c')](function(_0x5e9130){logger[_0x027a('0x10')]('ShowFreshsalesAccount',_0x5e9130[_0x027a('0x12')],_0xc99acc);_0x4b4ac4(_0x4d9a29[_0x027a('0x10')](0x1f4,_0x5e9130[_0x027a('0x12')]));});});};
\ No newline at end of file
index 6e90d90..65a6bda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dac=['destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','create','put','delete'];(function(_0x4c9fa9,_0x478b86){var _0x3ca7e0=function(_0x3ae043){while(--_0x3ae043){_0x4c9fa9['push'](_0x4c9fa9['shift']());}};_0x3ca7e0(++_0x478b86);}(_0x3dac,0x109));var _0xc3da=function(_0x3e4f1a,_0x546a1d){_0x3e4f1a=_0x3e4f1a-0x0;var _0x2e3cee=_0x3dac[_0x3e4f1a];return _0x2e3cee;};'use strict';var multer=require('multer');var util=require(_0xc3da('0x0'));var path=require(_0xc3da('0x1'));var timeout=require(_0xc3da('0x2'));var express=require(_0xc3da('0x3'));var router=express[_0xc3da('0x4')]();var fs_extra=require(_0xc3da('0x5'));var auth=require(_0xc3da('0x6'));var interaction=require(_0xc3da('0x7'));var config=require(_0xc3da('0x8'));var controller=require('./intFreshsalesConfiguration.controller');router[_0xc3da('0x9')]('/',auth[_0xc3da('0xa')](),controller[_0xc3da('0xb')]);router[_0xc3da('0x9')](_0xc3da('0xc'),auth['isAuthenticated'](),controller[_0xc3da('0xd')]);router['get'](_0xc3da('0xe'),auth[_0xc3da('0xa')](),controller[_0xc3da('0xf')]);router[_0xc3da('0x9')](_0xc3da('0x10'),auth['isAuthenticated'](),controller[_0xc3da('0x11')]);router['get'](_0xc3da('0x12'),auth[_0xc3da('0xa')](),controller[_0xc3da('0x13')]);router['post']('/',auth[_0xc3da('0xa')](),controller[_0xc3da('0x14')]);router[_0xc3da('0x15')](_0xc3da('0xc'),auth[_0xc3da('0xa')](),controller['update']);router[_0xc3da('0x16')](_0xc3da('0xc'),auth[_0xc3da('0xa')](),controller[_0xc3da('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x7c70=['/:id','show','get','getSubjects','/:id/descriptions','/:id/fields','post','create','put','delete','destroy','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x15fce8,_0x7612b7){var _0x3f54aa=function(_0x4c1752){while(--_0x4c1752){_0x15fce8['push'](_0x15fce8['shift']());}};_0x3f54aa(++_0x7612b7);}(_0x7c70,0x1c0));var _0x07c7=function(_0x429e7e,_0x5ae693){_0x429e7e=_0x429e7e-0x0;var _0x22c7d7=_0x7c70[_0x429e7e];return _0x22c7d7;};'use strict';var multer=require(_0x07c7('0x0'));var util=require(_0x07c7('0x1'));var path=require('path');var timeout=require(_0x07c7('0x2'));var express=require('express');var router=express[_0x07c7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x07c7('0x4'));var interaction=require(_0x07c7('0x5'));var config=require(_0x07c7('0x6'));var controller=require('./intFreshsalesConfiguration.controller');router['get']('/',auth[_0x07c7('0x7')](),controller['index']);router['get'](_0x07c7('0x8'),auth[_0x07c7('0x7')](),controller[_0x07c7('0x9')]);router[_0x07c7('0xa')]('/:id/subjects',auth[_0x07c7('0x7')](),controller[_0x07c7('0xb')]);router[_0x07c7('0xa')](_0x07c7('0xc'),auth['isAuthenticated'](),controller['getDescriptions']);router['get'](_0x07c7('0xd'),auth[_0x07c7('0x7')](),controller['getFields']);router[_0x07c7('0xe')]('/',auth[_0x07c7('0x7')](),controller[_0x07c7('0xf')]);router[_0x07c7('0x10')]('/:id',auth[_0x07c7('0x7')](),controller['update']);router[_0x07c7('0x11')](_0x07c7('0x8'),auth[_0x07c7('0x7')](),controller[_0x07c7('0x12')]);module['exports']=router;
\ No newline at end of file
index 657bce8..a47d1e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4812=['exports','STRING','sequelize'];(function(_0x2c6232,_0x360bb7){var _0x2d6c82=function(_0xed56b3){while(--_0xed56b3){_0x2c6232['push'](_0x2c6232['shift']());}};_0x2d6c82(++_0x360bb7);}(_0x4812,0x113));var _0x2481=function(_0x3dedb3,_0x368cc4){_0x3dedb3=_0x3dedb3-0x0;var _0x14a1f6=_0x4812[_0x3dedb3];return _0x14a1f6;};'use strict';var Sequelize=require(_0x2481('0x0'));module[_0x2481('0x1')]={'name':{'type':Sequelize[_0x2481('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xeaf4=['STRING','sequelize','exports'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0xeaf4,0xf7));var _0x4eaf=function(_0x3a0f2a,_0x44a36a){_0x3a0f2a=_0x3a0f2a-0x0;var _0x3d5953=_0xeaf4[_0x3a0f2a];return _0x3d5953;};'use strict';var Sequelize=require(_0x4eaf('0x0'));module[_0x4eaf('0x1')]={'name':{'type':Sequelize[_0x4eaf('0x2')]},'description':{'type':Sequelize[_0x4eaf('0x2')]}};
\ No newline at end of file
index bba323f..5889fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f8=['destroy','error','stack','name','send','index','map','FreshsalesConfiguration','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','create','body','find','findOne','FreshsalesField','getSubjects','getDescriptions','nolimit','getFields','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','update','then'];(function(_0x28d225,_0x43be18){var _0x1f79e1=function(_0x362c23){while(--_0x362c23){_0x28d225['push'](_0x28d225['shift']());}};_0x1f79e1(++_0x43be18);}(_0x06f8,0x178));var _0x806f=function(_0x20c700,_0x57495d){_0x20c700=_0x20c700-0x0;var _0x373f50=_0x06f8[_0x20c700];return _0x373f50;};'use strict';var emlformat=require(_0x806f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x806f('0x1'));var jsonpatch=require(_0x806f('0x2'));var rp=require(_0x806f('0x3'));var moment=require(_0x806f('0x4'));var BPromise=require(_0x806f('0x5'));var Mustache=require(_0x806f('0x6'));var util=require(_0x806f('0x7'));var path=require(_0x806f('0x8'));var sox=require(_0x806f('0x9'));var csv=require(_0x806f('0xa'));var ejs=require(_0x806f('0xb'));var fs=require('fs');var fs_extra=require(_0x806f('0xc'));var _=require(_0x806f('0xd'));var squel=require(_0x806f('0xe'));var crypto=require(_0x806f('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x806f('0x10'));var toCsv=require(_0x806f('0xa'));var querystring=require(_0x806f('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x806f('0x12'));var qs=require(_0x806f('0x13'));var as=require(_0x806f('0x14'));var hardwareService=require(_0x806f('0x15'));var logger=require(_0x806f('0x16'))('api');var utils=require(_0x806f('0x17'));var config=require(_0x806f('0x18'));var licenseUtil=require(_0x806f('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x47c92c,_0x164fb3){_0x164fb3=_0x164fb3||0xcc;return function(_0x365f64){if(_0x365f64){return _0x47c92c[_0x806f('0x1a')](_0x164fb3);}return _0x47c92c[_0x806f('0x1b')](_0x164fb3)[_0x806f('0x1c')]();};}function respondWithResult(_0x2e2866,_0x67e606){_0x67e606=_0x67e606||0xc8;return function(_0x5473a3){if(_0x5473a3){return _0x2e2866[_0x806f('0x1b')](_0x67e606)['json'](_0x5473a3);}};}function respondWithFilteredResult(_0x39e981,_0x1dd1d5){return function(_0x598669){if(_0x598669){var _0x4c00fa=typeof _0x1dd1d5[_0x806f('0x1d')]===_0x806f('0x1e')&&typeof _0x1dd1d5[_0x806f('0x1f')]===_0x806f('0x1e');var _0x5a839b=_0x598669['count'];var _0x4667d7=_0x4c00fa?0x0:_0x1dd1d5['offset'];var _0x2dd2a1=_0x4c00fa?_0x598669[_0x806f('0x20')]:_0x1dd1d5[_0x806f('0x1d')]+_0x1dd1d5[_0x806f('0x1f')];var _0x5d825e;if(_0x2dd2a1>=_0x5a839b){_0x2dd2a1=_0x5a839b;_0x5d825e=0xc8;}else{_0x5d825e=0xce;}_0x39e981[_0x806f('0x1b')](_0x5d825e);return _0x39e981[_0x806f('0x21')](_0x806f('0x22'),_0x4667d7+'-'+_0x2dd2a1+'/'+_0x5a839b)['json'](_0x598669);}return null;};}function patchUpdates(_0x59e0ee){return function(_0x303713){try{jsonpatch['apply'](_0x303713,_0x59e0ee,!![]);}catch(_0x31b053){return BPromise[_0x806f('0x23')](_0x31b053);}return _0x303713[_0x806f('0x24')]();};}function saveUpdates(_0x466cef,_0x4e9960){return function(_0x3aeb28){if(_0x3aeb28){return _0x3aeb28[_0x806f('0x25')](_0x466cef)[_0x806f('0x26')](function(_0x3ae830){return _0x3ae830;});}return null;};}function removeEntity(_0x4491e8,_0x1fcc32){return function(_0x4f8ecc){if(_0x4f8ecc){return _0x4f8ecc[_0x806f('0x27')]()['then'](function(){_0x4491e8[_0x806f('0x1b')](0xcc)[_0x806f('0x1c')]();});}};}function handleEntityNotFound(_0x11a3d0,_0x2208de){return function(_0x4aa895){if(!_0x4aa895){_0x11a3d0[_0x806f('0x1a')](0x194);}return _0x4aa895;};}function handleError(_0x16e2b8,_0x309de7){_0x309de7=_0x309de7||0x1f4;return function(_0xcf69b3){logger[_0x806f('0x28')](_0xcf69b3[_0x806f('0x29')]);if(_0xcf69b3[_0x806f('0x2a')]){delete _0xcf69b3[_0x806f('0x2a')];}_0x16e2b8['status'](_0x309de7)[_0x806f('0x2b')](_0xcf69b3);};}exports[_0x806f('0x2c')]=function(_0x1b4c01,_0x2969bd){var _0x286516={},_0x333fdf={},_0x57b9f3={'count':0x0,'rows':[]};var _0x6e41a4=_[_0x806f('0x2d')](db[_0x806f('0x2e')]['rawAttributes'],function(_0x5cdd42){return{'name':_0x5cdd42[_0x806f('0x2f')],'type':_0x5cdd42[_0x806f('0x30')][_0x806f('0x31')]};});_0x333fdf[_0x806f('0x32')]=_[_0x806f('0x2d')](_0x6e41a4,_0x806f('0x2a'));_0x333fdf[_0x806f('0x33')]=_[_0x806f('0x34')](_0x1b4c01[_0x806f('0x33')]);_0x333fdf['filters']=_[_0x806f('0x35')](_0x333fdf[_0x806f('0x32')],_0x333fdf[_0x806f('0x33')]);_0x286516[_0x806f('0x36')]=_[_0x806f('0x35')](_0x333fdf['model'],qs[_0x806f('0x37')](_0x1b4c01[_0x806f('0x33')][_0x806f('0x37')]));_0x286516[_0x806f('0x36')]=_0x286516[_0x806f('0x36')][_0x806f('0x38')]?_0x286516['attributes']:_0x333fdf[_0x806f('0x32')];if(!_0x1b4c01[_0x806f('0x33')][_0x806f('0x39')]('nolimit')){_0x286516['limit']=qs['limit'](_0x1b4c01['query'][_0x806f('0x1f')]);_0x286516[_0x806f('0x1d')]=qs[_0x806f('0x1d')](_0x1b4c01[_0x806f('0x33')][_0x806f('0x1d')]);}_0x286516[_0x806f('0x3a')]=qs['sort'](_0x1b4c01[_0x806f('0x33')][_0x806f('0x3b')]);_0x286516[_0x806f('0x3c')]=qs[_0x806f('0x3d')](_[_0x806f('0x3e')](_0x1b4c01[_0x806f('0x33')],_0x333fdf[_0x806f('0x3d')]),_0x6e41a4);if(_0x1b4c01['query'][_0x806f('0x3f')]){_0x286516[_0x806f('0x3c')]=_[_0x806f('0x40')](_0x286516[_0x806f('0x3c')],{'$or':_[_0x806f('0x2d')](_0x6e41a4,function(_0x5d8d14){if(_0x5d8d14['type']!=='VIRTUAL'){var _0x21eb35={};_0x21eb35[_0x5d8d14[_0x806f('0x2a')]]={'$like':'%'+_0x1b4c01['query'][_0x806f('0x3f')]+'%'};return _0x21eb35;}})});}_0x286516=_[_0x806f('0x40')]({},_0x286516,_0x1b4c01[_0x806f('0x41')]);var _0x30e0ee={'where':_0x286516[_0x806f('0x3c')]};return db[_0x806f('0x2e')][_0x806f('0x20')](_0x30e0ee)[_0x806f('0x26')](function(_0xfc8851){_0x57b9f3[_0x806f('0x20')]=_0xfc8851;if(_0x1b4c01[_0x806f('0x33')][_0x806f('0x42')]){_0x286516['include']=[{'all':!![]}];}return db[_0x806f('0x2e')][_0x806f('0x43')](_0x286516);})[_0x806f('0x26')](function(_0x315cde){_0x57b9f3[_0x806f('0x44')]=_0x315cde;return _0x57b9f3;})[_0x806f('0x26')](respondWithFilteredResult(_0x2969bd,_0x286516))[_0x806f('0x45')](handleError(_0x2969bd,null));};exports[_0x806f('0x46')]=function(_0x2c9ab2,_0x495d3c){var _0x2b5dbe={'raw':![],'where':{'id':_0x2c9ab2[_0x806f('0x47')]['id']}},_0x4826ed={};_0x4826ed[_0x806f('0x32')]=_[_0x806f('0x34')](db[_0x806f('0x2e')][_0x806f('0x48')]);_0x4826ed[_0x806f('0x33')]=_['keys'](_0x2c9ab2['query']);_0x4826ed['filters']=_['intersection'](_0x4826ed['model'],_0x4826ed[_0x806f('0x33')]);_0x2b5dbe[_0x806f('0x36')]=_[_0x806f('0x35')](_0x4826ed[_0x806f('0x32')],qs['fields'](_0x2c9ab2[_0x806f('0x33')][_0x806f('0x37')]));_0x2b5dbe[_0x806f('0x36')]=_0x2b5dbe[_0x806f('0x36')][_0x806f('0x38')]?_0x2b5dbe[_0x806f('0x36')]:_0x4826ed['model'];if(_0x2c9ab2[_0x806f('0x33')][_0x806f('0x42')]){_0x2b5dbe[_0x806f('0x49')]=[{'all':!![]}];}_0x2b5dbe=_[_0x806f('0x40')]({},_0x2b5dbe,_0x2c9ab2['options']);return db['FreshsalesConfiguration']['find'](_0x2b5dbe)[_0x806f('0x26')](handleEntityNotFound(_0x495d3c,null))[_0x806f('0x26')](respondWithResult(_0x495d3c,null))[_0x806f('0x45')](handleError(_0x495d3c,null));};exports[_0x806f('0x4a')]=function(_0x5d18ff,_0x341690){return db[_0x806f('0x2e')]['create'](_0x5d18ff[_0x806f('0x4b')],{})[_0x806f('0x26')](respondWithResult(_0x341690,0xc9))[_0x806f('0x45')](handleError(_0x341690,null));};exports[_0x806f('0x25')]=function(_0xff76a4,_0x5a4a18){if(_0xff76a4['body']['id']){delete _0xff76a4[_0x806f('0x4b')]['id'];}return db[_0x806f('0x2e')][_0x806f('0x4c')]({'where':{'id':_0xff76a4[_0x806f('0x47')]['id']}})[_0x806f('0x26')](handleEntityNotFound(_0x5a4a18,null))['then'](saveUpdates(_0xff76a4['body'],null))['then'](respondWithResult(_0x5a4a18,null))[_0x806f('0x45')](handleError(_0x5a4a18,null));};exports[_0x806f('0x27')]=function(_0x3e2e78,_0x4ff00b){return db[_0x806f('0x2e')][_0x806f('0x4c')]({'where':{'id':_0x3e2e78[_0x806f('0x47')]['id']}})[_0x806f('0x26')](handleEntityNotFound(_0x4ff00b,null))[_0x806f('0x26')](removeEntity(_0x4ff00b,null))[_0x806f('0x45')](handleError(_0x4ff00b,null));};exports['getSubjects']=function(_0x10e33f,_0x102161,_0x2428c9){var _0x4887e3={};var _0x539aab={};var _0x5eaa8f;var _0x2c0a60;return db['FreshsalesConfiguration'][_0x806f('0x4d')]({'where':{'id':_0x10e33f[_0x806f('0x47')]['id']}})[_0x806f('0x26')](handleEntityNotFound(_0x102161,null))['then'](function(_0x3787ea){if(_0x3787ea){_0x5eaa8f=_0x3787ea;_0x539aab['model']=_[_0x806f('0x34')](db[_0x806f('0x4e')]['rawAttributes']);_0x539aab[_0x806f('0x33')]=_[_0x806f('0x34')](_0x10e33f[_0x806f('0x33')]);_0x539aab[_0x806f('0x3d')]=_['intersection'](_0x539aab[_0x806f('0x32')],_0x539aab[_0x806f('0x33')]);_0x4887e3[_0x806f('0x36')]=_[_0x806f('0x35')](_0x539aab[_0x806f('0x32')],qs[_0x806f('0x37')](_0x10e33f[_0x806f('0x33')][_0x806f('0x37')]));_0x4887e3[_0x806f('0x36')]=_0x4887e3[_0x806f('0x36')][_0x806f('0x38')]?_0x4887e3['attributes']:_0x539aab[_0x806f('0x32')];_0x4887e3['order']=qs[_0x806f('0x3b')](_0x10e33f[_0x806f('0x33')][_0x806f('0x3b')]);_0x4887e3['where']=qs[_0x806f('0x3d')](_[_0x806f('0x3e')](_0x10e33f['query'],_0x539aab['filters']));if(_0x10e33f[_0x806f('0x33')][_0x806f('0x3f')]){_0x4887e3[_0x806f('0x3c')]=_[_0x806f('0x40')](_0x4887e3[_0x806f('0x3c')],{'$or':_[_0x806f('0x2d')](_0x4887e3[_0x806f('0x36')],function(_0x65de9e){var _0x3b4436={};_0x3b4436[_0x65de9e]={'$like':'%'+_0x10e33f[_0x806f('0x33')][_0x806f('0x3f')]+'%'};return _0x3b4436;})});}_0x4887e3=_['merge']({},_0x4887e3,_0x10e33f[_0x806f('0x41')]);return _0x5eaa8f[_0x806f('0x4f')](_0x4887e3);}})[_0x806f('0x26')](function(_0x205a8d){if(_0x205a8d){_0x2c0a60=_0x205a8d[_0x806f('0x38')];if(!_0x10e33f[_0x806f('0x33')]['hasOwnProperty']('nolimit')){_0x4887e3['limit']=qs[_0x806f('0x1f')](_0x10e33f[_0x806f('0x33')]['limit']);_0x4887e3['offset']=qs[_0x806f('0x1d')](_0x10e33f[_0x806f('0x33')]['offset']);}return _0x5eaa8f[_0x806f('0x4f')](_0x4887e3);}})[_0x806f('0x26')](function(_0x4bf2e7){if(_0x4bf2e7){return _0x4bf2e7?{'count':_0x2c0a60,'rows':_0x4bf2e7}:null;}})[_0x806f('0x26')](respondWithResult(_0x102161,null))['catch'](handleError(_0x102161,null));};exports[_0x806f('0x50')]=function(_0x25cb0c,_0x42d230,_0x205fc5){var _0x3ae785={};var _0x5f28bf={};var _0x449f4b;var _0x284203;return db['FreshsalesConfiguration'][_0x806f('0x4d')]({'where':{'id':_0x25cb0c[_0x806f('0x47')]['id']}})['then'](handleEntityNotFound(_0x42d230,null))[_0x806f('0x26')](function(_0x2ec1f3){if(_0x2ec1f3){_0x449f4b=_0x2ec1f3;_0x5f28bf[_0x806f('0x32')]=_[_0x806f('0x34')](db['FreshsalesField'][_0x806f('0x48')]);_0x5f28bf[_0x806f('0x33')]=_[_0x806f('0x34')](_0x25cb0c[_0x806f('0x33')]);_0x5f28bf[_0x806f('0x3d')]=_['intersection'](_0x5f28bf[_0x806f('0x32')],_0x5f28bf['query']);_0x3ae785[_0x806f('0x36')]=_[_0x806f('0x35')](_0x5f28bf[_0x806f('0x32')],qs[_0x806f('0x37')](_0x25cb0c[_0x806f('0x33')][_0x806f('0x37')]));_0x3ae785[_0x806f('0x36')]=_0x3ae785[_0x806f('0x36')][_0x806f('0x38')]?_0x3ae785[_0x806f('0x36')]:_0x5f28bf['model'];_0x3ae785[_0x806f('0x3a')]=qs[_0x806f('0x3b')](_0x25cb0c[_0x806f('0x33')][_0x806f('0x3b')]);_0x3ae785['where']=qs['filters'](_[_0x806f('0x3e')](_0x25cb0c[_0x806f('0x33')],_0x5f28bf[_0x806f('0x3d')]));if(_0x25cb0c[_0x806f('0x33')][_0x806f('0x3f')]){_0x3ae785['where']=_['merge'](_0x3ae785[_0x806f('0x3c')],{'$or':_[_0x806f('0x2d')](_0x3ae785[_0x806f('0x36')],function(_0x487feb){var _0x5edcfc={};_0x5edcfc[_0x487feb]={'$like':'%'+_0x25cb0c['query'][_0x806f('0x3f')]+'%'};return _0x5edcfc;})});}_0x3ae785=_['merge']({},_0x3ae785,_0x25cb0c[_0x806f('0x41')]);return _0x449f4b['getDescriptions'](_0x3ae785);}})[_0x806f('0x26')](function(_0x57eccd){if(_0x57eccd){_0x284203=_0x57eccd['length'];if(!_0x25cb0c[_0x806f('0x33')]['hasOwnProperty'](_0x806f('0x51'))){_0x3ae785[_0x806f('0x1f')]=qs[_0x806f('0x1f')](_0x25cb0c['query'][_0x806f('0x1f')]);_0x3ae785['offset']=qs[_0x806f('0x1d')](_0x25cb0c['query']['offset']);}return _0x449f4b[_0x806f('0x50')](_0x3ae785);}})[_0x806f('0x26')](function(_0x8edebe){if(_0x8edebe){return _0x8edebe?{'count':_0x284203,'rows':_0x8edebe}:null;}})['then'](respondWithResult(_0x42d230,null))[_0x806f('0x45')](handleError(_0x42d230,null));};exports[_0x806f('0x52')]=function(_0x4bdc35,_0x324b1c,_0x5003da){var _0x29ad7a={};var _0x227027={};var _0x54de6d;var _0x240af2;return db[_0x806f('0x2e')]['findOne']({'where':{'id':_0x4bdc35['params']['id']}})[_0x806f('0x26')](handleEntityNotFound(_0x324b1c,null))[_0x806f('0x26')](function(_0x5508bc){if(_0x5508bc){_0x54de6d=_0x5508bc;_0x227027[_0x806f('0x32')]=_['keys'](db['FreshsalesField'][_0x806f('0x48')]);_0x227027[_0x806f('0x33')]=_[_0x806f('0x34')](_0x4bdc35[_0x806f('0x33')]);_0x227027[_0x806f('0x3d')]=_['intersection'](_0x227027[_0x806f('0x32')],_0x227027[_0x806f('0x33')]);_0x29ad7a[_0x806f('0x36')]=_['intersection'](_0x227027['model'],qs[_0x806f('0x37')](_0x4bdc35[_0x806f('0x33')][_0x806f('0x37')]));_0x29ad7a[_0x806f('0x36')]=_0x29ad7a[_0x806f('0x36')][_0x806f('0x38')]?_0x29ad7a['attributes']:_0x227027[_0x806f('0x32')];_0x29ad7a['order']=qs[_0x806f('0x3b')](_0x4bdc35[_0x806f('0x33')]['sort']);_0x29ad7a[_0x806f('0x3c')]=qs[_0x806f('0x3d')](_[_0x806f('0x3e')](_0x4bdc35[_0x806f('0x33')],_0x227027[_0x806f('0x3d')]));if(_0x4bdc35['query']['filter']){_0x29ad7a[_0x806f('0x3c')]=_['merge'](_0x29ad7a[_0x806f('0x3c')],{'$or':_[_0x806f('0x2d')](_0x29ad7a['attributes'],function(_0x10749e){var _0x20ad6b={};_0x20ad6b[_0x10749e]={'$like':'%'+_0x4bdc35[_0x806f('0x33')][_0x806f('0x3f')]+'%'};return _0x20ad6b;})});}_0x29ad7a=_[_0x806f('0x40')]({},_0x29ad7a,_0x4bdc35['options']);return _0x54de6d['getFields'](_0x29ad7a);}})['then'](function(_0x522d7e){if(_0x522d7e){_0x240af2=_0x522d7e['length'];if(!_0x4bdc35[_0x806f('0x33')]['hasOwnProperty'](_0x806f('0x51'))){_0x29ad7a[_0x806f('0x1f')]=qs[_0x806f('0x1f')](_0x4bdc35[_0x806f('0x33')][_0x806f('0x1f')]);_0x29ad7a[_0x806f('0x1d')]=qs[_0x806f('0x1d')](_0x4bdc35[_0x806f('0x33')]['offset']);}return _0x54de6d[_0x806f('0x52')](_0x29ad7a);}})[_0x806f('0x26')](function(_0xfefb02){if(_0xfefb02){return _0xfefb02?{'count':_0x240af2,'rows':_0xfefb02}:null;}})[_0x806f('0x26')](respondWithResult(_0x324b1c,null))['catch'](handleError(_0x324b1c,null));};
\ No newline at end of file
+var _0xe196=['../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','merge','options','FreshsalesConfiguration','include','findAll','rows','catch','show','keys','rawAttributes','length','includeAll','create','body','find','params','getSubjects','findOne','FreshsalesField','filter','getDescriptions','getFields','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xe196,0x1ec));var _0x6e19=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe196[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x6e19('0x0'));var rimraf=require(_0x6e19('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6e19('0x2'));var rp=require('request-promise');var moment=require(_0x6e19('0x3'));var BPromise=require(_0x6e19('0x4'));var Mustache=require(_0x6e19('0x5'));var util=require(_0x6e19('0x6'));var path=require(_0x6e19('0x7'));var sox=require(_0x6e19('0x8'));var csv=require(_0x6e19('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6e19('0xa'));var _=require(_0x6e19('0xb'));var squel=require(_0x6e19('0xc'));var crypto=require(_0x6e19('0xd'));var jsforce=require(_0x6e19('0xe'));var deskjs=require(_0x6e19('0xf'));var toCsv=require(_0x6e19('0x9'));var querystring=require(_0x6e19('0x10'));var Papa=require(_0x6e19('0x11'));var Redis=require(_0x6e19('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6e19('0x13'));var as=require(_0x6e19('0x14'));var hardwareService=require(_0x6e19('0x15'));var logger=require(_0x6e19('0x16'))('api');var utils=require(_0x6e19('0x17'));var config=require(_0x6e19('0x18'));var licenseUtil=require(_0x6e19('0x19'));var db=require(_0x6e19('0x1a'))['db'];function respondWithStatusCode(_0x9196e5,_0x4dbc67){_0x4dbc67=_0x4dbc67||0xcc;return function(_0x33c686){if(_0x33c686){return _0x9196e5['sendStatus'](_0x4dbc67);}return _0x9196e5[_0x6e19('0x1b')](_0x4dbc67)[_0x6e19('0x1c')]();};}function respondWithResult(_0x4042ec,_0x3f69b2){_0x3f69b2=_0x3f69b2||0xc8;return function(_0x20cc90){if(_0x20cc90){return _0x4042ec[_0x6e19('0x1b')](_0x3f69b2)[_0x6e19('0x1d')](_0x20cc90);}};}function respondWithFilteredResult(_0x2b5fc0,_0x428a7b){return function(_0x14d5e6){if(_0x14d5e6){var _0x173bf7=typeof _0x428a7b[_0x6e19('0x1e')]==='undefined'&&typeof _0x428a7b[_0x6e19('0x1f')]===_0x6e19('0x20');var _0x1942d4=_0x14d5e6[_0x6e19('0x21')];var _0x50a335=_0x173bf7?0x0:_0x428a7b[_0x6e19('0x1e')];var _0x385aac=_0x173bf7?_0x14d5e6[_0x6e19('0x21')]:_0x428a7b[_0x6e19('0x1e')]+_0x428a7b[_0x6e19('0x1f')];var _0x13d254;if(_0x385aac>=_0x1942d4){_0x385aac=_0x1942d4;_0x13d254=0xc8;}else{_0x13d254=0xce;}_0x2b5fc0[_0x6e19('0x1b')](_0x13d254);return _0x2b5fc0[_0x6e19('0x22')](_0x6e19('0x23'),_0x50a335+'-'+_0x385aac+'/'+_0x1942d4)[_0x6e19('0x1d')](_0x14d5e6);}return null;};}function patchUpdates(_0x1c95c3){return function(_0x17771a){try{jsonpatch[_0x6e19('0x24')](_0x17771a,_0x1c95c3,!![]);}catch(_0x3ab18d){return BPromise[_0x6e19('0x25')](_0x3ab18d);}return _0x17771a[_0x6e19('0x26')]();};}function saveUpdates(_0x52f6ca,_0x2be3ed){return function(_0x56c86a){if(_0x56c86a){return _0x56c86a[_0x6e19('0x27')](_0x52f6ca)[_0x6e19('0x28')](function(_0x24a465){return _0x24a465;});}return null;};}function removeEntity(_0x53565b,_0x27166d){return function(_0x17d76c){if(_0x17d76c){return _0x17d76c[_0x6e19('0x29')]()[_0x6e19('0x28')](function(){_0x53565b[_0x6e19('0x1b')](0xcc)[_0x6e19('0x1c')]();});}};}function handleEntityNotFound(_0x3ead62,_0xada22e){return function(_0x30e9ca){if(!_0x30e9ca){_0x3ead62[_0x6e19('0x2a')](0x194);}return _0x30e9ca;};}function handleError(_0x5c9eac,_0x1060f4){_0x1060f4=_0x1060f4||0x1f4;return function(_0xbf3928){logger[_0x6e19('0x2b')](_0xbf3928[_0x6e19('0x2c')]);if(_0xbf3928['name']){delete _0xbf3928[_0x6e19('0x2d')];}_0x5c9eac[_0x6e19('0x1b')](_0x1060f4)[_0x6e19('0x2e')](_0xbf3928);};}exports['index']=function(_0xf8ced7,_0x5b3597){var _0x532b52={},_0x26b1f8={},_0x5200ac={'count':0x0,'rows':[]};var _0x3ff238=_['map'](db['FreshsalesConfiguration']['rawAttributes'],function(_0x2599c6){return{'name':_0x2599c6[_0x6e19('0x2f')],'type':_0x2599c6[_0x6e19('0x30')][_0x6e19('0x31')]};});_0x26b1f8[_0x6e19('0x32')]=_[_0x6e19('0x33')](_0x3ff238,_0x6e19('0x2d'));_0x26b1f8[_0x6e19('0x34')]=_['keys'](_0xf8ced7[_0x6e19('0x34')]);_0x26b1f8[_0x6e19('0x35')]=_[_0x6e19('0x36')](_0x26b1f8['model'],_0x26b1f8[_0x6e19('0x34')]);_0x532b52[_0x6e19('0x37')]=_['intersection'](_0x26b1f8[_0x6e19('0x32')],qs['fields'](_0xf8ced7['query'][_0x6e19('0x38')]));_0x532b52[_0x6e19('0x37')]=_0x532b52[_0x6e19('0x37')]['length']?_0x532b52['attributes']:_0x26b1f8['model'];if(!_0xf8ced7[_0x6e19('0x34')][_0x6e19('0x39')](_0x6e19('0x3a'))){_0x532b52[_0x6e19('0x1f')]=qs[_0x6e19('0x1f')](_0xf8ced7[_0x6e19('0x34')]['limit']);_0x532b52[_0x6e19('0x1e')]=qs[_0x6e19('0x1e')](_0xf8ced7[_0x6e19('0x34')][_0x6e19('0x1e')]);}_0x532b52[_0x6e19('0x3b')]=qs['sort'](_0xf8ced7['query'][_0x6e19('0x3c')]);_0x532b52['where']=qs['filters'](_[_0x6e19('0x3d')](_0xf8ced7[_0x6e19('0x34')],_0x26b1f8[_0x6e19('0x35')]),_0x3ff238);if(_0xf8ced7['query']['filter']){_0x532b52['where']=_['merge'](_0x532b52[_0x6e19('0x3e')],{'$or':_[_0x6e19('0x33')](_0x3ff238,function(_0x1905d7){if(_0x1905d7[_0x6e19('0x30')]!==_0x6e19('0x3f')){var _0x11373a={};_0x11373a[_0x1905d7[_0x6e19('0x2d')]]={'$like':'%'+_0xf8ced7[_0x6e19('0x34')]['filter']+'%'};return _0x11373a;}})});}_0x532b52=_[_0x6e19('0x40')]({},_0x532b52,_0xf8ced7[_0x6e19('0x41')]);var _0x504fee={'where':_0x532b52[_0x6e19('0x3e')]};return db[_0x6e19('0x42')][_0x6e19('0x21')](_0x504fee)[_0x6e19('0x28')](function(_0x5cedde){_0x5200ac[_0x6e19('0x21')]=_0x5cedde;if(_0xf8ced7[_0x6e19('0x34')]['includeAll']){_0x532b52[_0x6e19('0x43')]=[{'all':!![]}];}return db[_0x6e19('0x42')][_0x6e19('0x44')](_0x532b52);})[_0x6e19('0x28')](function(_0x189079){_0x5200ac[_0x6e19('0x45')]=_0x189079;return _0x5200ac;})[_0x6e19('0x28')](respondWithFilteredResult(_0x5b3597,_0x532b52))[_0x6e19('0x46')](handleError(_0x5b3597,null));};exports[_0x6e19('0x47')]=function(_0x5005e2,_0x246df5){var _0x355703={'raw':![],'where':{'id':_0x5005e2['params']['id']}},_0x313075={};_0x313075[_0x6e19('0x32')]=_[_0x6e19('0x48')](db['FreshsalesConfiguration'][_0x6e19('0x49')]);_0x313075['query']=_[_0x6e19('0x48')](_0x5005e2[_0x6e19('0x34')]);_0x313075[_0x6e19('0x35')]=_[_0x6e19('0x36')](_0x313075[_0x6e19('0x32')],_0x313075[_0x6e19('0x34')]);_0x355703['attributes']=_[_0x6e19('0x36')](_0x313075['model'],qs[_0x6e19('0x38')](_0x5005e2[_0x6e19('0x34')]['fields']));_0x355703[_0x6e19('0x37')]=_0x355703['attributes'][_0x6e19('0x4a')]?_0x355703[_0x6e19('0x37')]:_0x313075['model'];if(_0x5005e2[_0x6e19('0x34')][_0x6e19('0x4b')]){_0x355703[_0x6e19('0x43')]=[{'all':!![]}];}_0x355703=_[_0x6e19('0x40')]({},_0x355703,_0x5005e2[_0x6e19('0x41')]);return db[_0x6e19('0x42')]['find'](_0x355703)[_0x6e19('0x28')](handleEntityNotFound(_0x246df5,null))[_0x6e19('0x28')](respondWithResult(_0x246df5,null))[_0x6e19('0x46')](handleError(_0x246df5,null));};exports[_0x6e19('0x4c')]=function(_0x37b394,_0x561f3c){return db[_0x6e19('0x42')][_0x6e19('0x4c')](_0x37b394['body'],{})[_0x6e19('0x28')](respondWithResult(_0x561f3c,0xc9))[_0x6e19('0x46')](handleError(_0x561f3c,null));};exports[_0x6e19('0x27')]=function(_0x288eee,_0x1d1a08){if(_0x288eee[_0x6e19('0x4d')]['id']){delete _0x288eee[_0x6e19('0x4d')]['id'];}return db[_0x6e19('0x42')][_0x6e19('0x4e')]({'where':{'id':_0x288eee[_0x6e19('0x4f')]['id']}})[_0x6e19('0x28')](handleEntityNotFound(_0x1d1a08,null))[_0x6e19('0x28')](saveUpdates(_0x288eee[_0x6e19('0x4d')],null))['then'](respondWithResult(_0x1d1a08,null))[_0x6e19('0x46')](handleError(_0x1d1a08,null));};exports[_0x6e19('0x29')]=function(_0x25cb1c,_0x20344b){return db['FreshsalesConfiguration'][_0x6e19('0x4e')]({'where':{'id':_0x25cb1c['params']['id']}})['then'](handleEntityNotFound(_0x20344b,null))[_0x6e19('0x28')](removeEntity(_0x20344b,null))[_0x6e19('0x46')](handleError(_0x20344b,null));};exports[_0x6e19('0x50')]=function(_0x429676,_0x3c7bcd,_0x53c2ff){var _0x133f8c={};var _0x5dab0a={};var _0x475ee6;var _0x319b7;return db['FreshsalesConfiguration'][_0x6e19('0x51')]({'where':{'id':_0x429676['params']['id']}})['then'](handleEntityNotFound(_0x3c7bcd,null))[_0x6e19('0x28')](function(_0x1dca6a){if(_0x1dca6a){_0x475ee6=_0x1dca6a;_0x5dab0a[_0x6e19('0x32')]=_[_0x6e19('0x48')](db[_0x6e19('0x52')][_0x6e19('0x49')]);_0x5dab0a['query']=_['keys'](_0x429676['query']);_0x5dab0a['filters']=_[_0x6e19('0x36')](_0x5dab0a[_0x6e19('0x32')],_0x5dab0a[_0x6e19('0x34')]);_0x133f8c[_0x6e19('0x37')]=_[_0x6e19('0x36')](_0x5dab0a[_0x6e19('0x32')],qs[_0x6e19('0x38')](_0x429676[_0x6e19('0x34')][_0x6e19('0x38')]));_0x133f8c[_0x6e19('0x37')]=_0x133f8c[_0x6e19('0x37')]['length']?_0x133f8c['attributes']:_0x5dab0a['model'];_0x133f8c[_0x6e19('0x3b')]=qs['sort'](_0x429676[_0x6e19('0x34')]['sort']);_0x133f8c[_0x6e19('0x3e')]=qs['filters'](_[_0x6e19('0x3d')](_0x429676[_0x6e19('0x34')],_0x5dab0a[_0x6e19('0x35')]));if(_0x429676[_0x6e19('0x34')][_0x6e19('0x53')]){_0x133f8c['where']=_[_0x6e19('0x40')](_0x133f8c['where'],{'$or':_[_0x6e19('0x33')](_0x133f8c[_0x6e19('0x37')],function(_0x4bce36){var _0xa701af={};_0xa701af[_0x4bce36]={'$like':'%'+_0x429676['query']['filter']+'%'};return _0xa701af;})});}_0x133f8c=_[_0x6e19('0x40')]({},_0x133f8c,_0x429676[_0x6e19('0x41')]);return _0x475ee6[_0x6e19('0x50')](_0x133f8c);}})[_0x6e19('0x28')](function(_0x214601){if(_0x214601){_0x319b7=_0x214601['length'];if(!_0x429676[_0x6e19('0x34')][_0x6e19('0x39')](_0x6e19('0x3a'))){_0x133f8c[_0x6e19('0x1f')]=qs[_0x6e19('0x1f')](_0x429676[_0x6e19('0x34')]['limit']);_0x133f8c[_0x6e19('0x1e')]=qs['offset'](_0x429676[_0x6e19('0x34')]['offset']);}return _0x475ee6['getSubjects'](_0x133f8c);}})['then'](function(_0x57a85c){if(_0x57a85c){return _0x57a85c?{'count':_0x319b7,'rows':_0x57a85c}:null;}})[_0x6e19('0x28')](respondWithResult(_0x3c7bcd,null))[_0x6e19('0x46')](handleError(_0x3c7bcd,null));};exports[_0x6e19('0x54')]=function(_0x373565,_0x5e4ed2,_0x5ba0c1){var _0x30c843={};var _0x4dcafe={};var _0x167da1;var _0x988969;return db[_0x6e19('0x42')][_0x6e19('0x51')]({'where':{'id':_0x373565[_0x6e19('0x4f')]['id']}})[_0x6e19('0x28')](handleEntityNotFound(_0x5e4ed2,null))[_0x6e19('0x28')](function(_0x10b11c){if(_0x10b11c){_0x167da1=_0x10b11c;_0x4dcafe['model']=_[_0x6e19('0x48')](db[_0x6e19('0x52')][_0x6e19('0x49')]);_0x4dcafe[_0x6e19('0x34')]=_[_0x6e19('0x48')](_0x373565[_0x6e19('0x34')]);_0x4dcafe[_0x6e19('0x35')]=_[_0x6e19('0x36')](_0x4dcafe['model'],_0x4dcafe[_0x6e19('0x34')]);_0x30c843[_0x6e19('0x37')]=_[_0x6e19('0x36')](_0x4dcafe[_0x6e19('0x32')],qs[_0x6e19('0x38')](_0x373565[_0x6e19('0x34')]['fields']));_0x30c843[_0x6e19('0x37')]=_0x30c843[_0x6e19('0x37')][_0x6e19('0x4a')]?_0x30c843[_0x6e19('0x37')]:_0x4dcafe[_0x6e19('0x32')];_0x30c843[_0x6e19('0x3b')]=qs[_0x6e19('0x3c')](_0x373565['query'][_0x6e19('0x3c')]);_0x30c843['where']=qs[_0x6e19('0x35')](_[_0x6e19('0x3d')](_0x373565[_0x6e19('0x34')],_0x4dcafe[_0x6e19('0x35')]));if(_0x373565[_0x6e19('0x34')][_0x6e19('0x53')]){_0x30c843[_0x6e19('0x3e')]=_[_0x6e19('0x40')](_0x30c843[_0x6e19('0x3e')],{'$or':_[_0x6e19('0x33')](_0x30c843['attributes'],function(_0x42b52b){var _0x36942e={};_0x36942e[_0x42b52b]={'$like':'%'+_0x373565[_0x6e19('0x34')][_0x6e19('0x53')]+'%'};return _0x36942e;})});}_0x30c843=_[_0x6e19('0x40')]({},_0x30c843,_0x373565[_0x6e19('0x41')]);return _0x167da1['getDescriptions'](_0x30c843);}})[_0x6e19('0x28')](function(_0x53ab24){if(_0x53ab24){_0x988969=_0x53ab24['length'];if(!_0x373565[_0x6e19('0x34')][_0x6e19('0x39')](_0x6e19('0x3a'))){_0x30c843[_0x6e19('0x1f')]=qs[_0x6e19('0x1f')](_0x373565[_0x6e19('0x34')][_0x6e19('0x1f')]);_0x30c843[_0x6e19('0x1e')]=qs[_0x6e19('0x1e')](_0x373565[_0x6e19('0x34')][_0x6e19('0x1e')]);}return _0x167da1[_0x6e19('0x54')](_0x30c843);}})[_0x6e19('0x28')](function(_0x549bf7){if(_0x549bf7){return _0x549bf7?{'count':_0x988969,'rows':_0x549bf7}:null;}})[_0x6e19('0x28')](respondWithResult(_0x5e4ed2,null))[_0x6e19('0x46')](handleError(_0x5e4ed2,null));};exports[_0x6e19('0x55')]=function(_0x40eb6e,_0x3371f9,_0x35cb6f){var _0x4e16a2={};var _0x148936={};var _0x5dcb1d;var _0x1b28eb;return db[_0x6e19('0x42')][_0x6e19('0x51')]({'where':{'id':_0x40eb6e[_0x6e19('0x4f')]['id']}})[_0x6e19('0x28')](handleEntityNotFound(_0x3371f9,null))[_0x6e19('0x28')](function(_0x8ce1af){if(_0x8ce1af){_0x5dcb1d=_0x8ce1af;_0x148936['model']=_[_0x6e19('0x48')](db[_0x6e19('0x52')][_0x6e19('0x49')]);_0x148936['query']=_[_0x6e19('0x48')](_0x40eb6e[_0x6e19('0x34')]);_0x148936['filters']=_[_0x6e19('0x36')](_0x148936[_0x6e19('0x32')],_0x148936[_0x6e19('0x34')]);_0x4e16a2['attributes']=_[_0x6e19('0x36')](_0x148936[_0x6e19('0x32')],qs[_0x6e19('0x38')](_0x40eb6e[_0x6e19('0x34')]['fields']));_0x4e16a2[_0x6e19('0x37')]=_0x4e16a2['attributes'][_0x6e19('0x4a')]?_0x4e16a2[_0x6e19('0x37')]:_0x148936[_0x6e19('0x32')];_0x4e16a2['order']=qs[_0x6e19('0x3c')](_0x40eb6e['query'][_0x6e19('0x3c')]);_0x4e16a2['where']=qs[_0x6e19('0x35')](_[_0x6e19('0x3d')](_0x40eb6e[_0x6e19('0x34')],_0x148936[_0x6e19('0x35')]));if(_0x40eb6e[_0x6e19('0x34')][_0x6e19('0x53')]){_0x4e16a2[_0x6e19('0x3e')]=_[_0x6e19('0x40')](_0x4e16a2[_0x6e19('0x3e')],{'$or':_['map'](_0x4e16a2['attributes'],function(_0x3038fa){var _0x4bb764={};_0x4bb764[_0x3038fa]={'$like':'%'+_0x40eb6e[_0x6e19('0x34')][_0x6e19('0x53')]+'%'};return _0x4bb764;})});}_0x4e16a2=_[_0x6e19('0x40')]({},_0x4e16a2,_0x40eb6e['options']);return _0x5dcb1d[_0x6e19('0x55')](_0x4e16a2);}})[_0x6e19('0x28')](function(_0xd870df){if(_0xd870df){_0x1b28eb=_0xd870df['length'];if(!_0x40eb6e[_0x6e19('0x34')][_0x6e19('0x39')]('nolimit')){_0x4e16a2[_0x6e19('0x1f')]=qs[_0x6e19('0x1f')](_0x40eb6e[_0x6e19('0x34')][_0x6e19('0x1f')]);_0x4e16a2[_0x6e19('0x1e')]=qs[_0x6e19('0x1e')](_0x40eb6e[_0x6e19('0x34')][_0x6e19('0x1e')]);}return _0x5dcb1d[_0x6e19('0x55')](_0x4e16a2);}})[_0x6e19('0x28')](function(_0x357b9a){if(_0x357b9a){return _0x357b9a?{'count':_0x1b28eb,'rows':_0x357b9a}:null;}})[_0x6e19('0x28')](respondWithResult(_0x3371f9,null))[_0x6e19('0x46')](handleError(_0x3371f9,null));};
\ No newline at end of file
index 4c7f870..dc294a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea39=['api','moment','bluebird','request-promise','path','../../config/environment','./intFreshsalesConfiguration.attributes','exports','FreshsalesConfiguration','int_freshsales_configurations','util','../../config/logger'];(function(_0x221eda,_0xcf03bf){var _0x132929=function(_0x18b5d4){while(--_0x18b5d4){_0x221eda['push'](_0x221eda['shift']());}};_0x132929(++_0xcf03bf);}(_0xea39,0x12a));var _0x9ea3=function(_0x50e130,_0xc030b1){_0x50e130=_0x50e130-0x0;var _0x1865b2=_0xea39[_0x50e130];return _0x1865b2;};'use strict';var _=require('lodash');var util=require(_0x9ea3('0x0'));var logger=require(_0x9ea3('0x1'))(_0x9ea3('0x2'));var moment=require(_0x9ea3('0x3'));var BPromise=require(_0x9ea3('0x4'));var rp=require(_0x9ea3('0x5'));var fs=require('fs');var path=require(_0x9ea3('0x6'));var rimraf=require('rimraf');var config=require(_0x9ea3('0x7'));var attributes=require(_0x9ea3('0x8'));module[_0x9ea3('0x9')]=function(_0x51a56c,_0x5d2ce3){return _0x51a56c['define'](_0x9ea3('0xa'),attributes,{'tableName':_0x9ea3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb90f=['rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','int_freshsales_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x35d775,_0x25431e){var _0x59384d=function(_0x1a0c15){while(--_0x1a0c15){_0x35d775['push'](_0x35d775['shift']());}};_0x59384d(++_0x25431e);}(_0xb90f,0xfc));var _0xfb90=function(_0x5e1ddb,_0x32c8bc){_0x5e1ddb=_0x5e1ddb-0x0;var _0x1f3932=_0xb90f[_0x5e1ddb];return _0x1f3932;};'use strict';var _=require(_0xfb90('0x0'));var util=require(_0xfb90('0x1'));var logger=require(_0xfb90('0x2'))(_0xfb90('0x3'));var moment=require(_0xfb90('0x4'));var BPromise=require(_0xfb90('0x5'));var rp=require(_0xfb90('0x6'));var fs=require('fs');var path=require(_0xfb90('0x7'));var rimraf=require(_0xfb90('0x8'));var config=require(_0xfb90('0x9'));var attributes=require(_0xfb90('0xa'));module['exports']=function(_0x1a7058,_0x18bd25){return _0x1a7058[_0xfb90('0xb')]('FreshsalesConfiguration',attributes,{'tableName':_0xfb90('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ab8c0f6..9359097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a98=['jayson/promise','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','bluebird','../../mysqldb','../../config/utils','rpc'];(function(_0x43bc0d,_0x3ea603){var _0x4e8fb4=function(_0x465e8f){while(--_0x465e8f){_0x43bc0d['push'](_0x43bc0d['shift']());}};_0x4e8fb4(++_0x3ea603);}(_0x4a98,0x93));var _0x84a9=function(_0x1ebce2,_0x10e903){_0x1ebce2=_0x1ebce2-0x0;var _0x4a330c=_0x4a98[_0x1ebce2];return _0x4a330c;};'use strict';var _=require(_0x84a9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x84a9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x84a9('0x2'))['db'];var utils=require(_0x84a9('0x3'));var logger=require('../../config/logger')(_0x84a9('0x4'));var config=require('../../config/environment');var jayson=require(_0x84a9('0x5'));var client=jayson['client'][_0x84a9('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x55afa1,_0xc04f5b,_0x373f58){return new BPromise(function(_0x562069,_0x6dd7e5){return client[_0x84a9('0x7')](_0x55afa1,_0x373f58)[_0x84a9('0x8')](function(_0x154de6){logger['info'](_0x84a9('0x9'),_0xc04f5b,_0x84a9('0xa'));logger[_0x84a9('0xb')](_0x84a9('0xc'),_0xc04f5b,_0x84a9('0xa'),JSON[_0x84a9('0xd')](_0x154de6));if(_0x154de6['error']){if(_0x154de6[_0x84a9('0xe')][_0x84a9('0xf')]===0x1f4){logger['error'](_0x84a9('0x9'),_0xc04f5b,_0x154de6[_0x84a9('0xe')]['message']);return _0x6dd7e5(_0x154de6[_0x84a9('0xe')][_0x84a9('0x10')]);}logger[_0x84a9('0xe')]('FreshsalesConfiguration,\x20%s,\x20%s',_0xc04f5b,_0x154de6[_0x84a9('0xe')][_0x84a9('0x10')]);return _0x562069(_0x154de6['error'][_0x84a9('0x10')]);}else{logger['info'](_0x84a9('0x9'),_0xc04f5b,_0x84a9('0xa'));_0x562069(_0x154de6[_0x84a9('0x11')][_0x84a9('0x10')]);}})[_0x84a9('0x12')](function(_0x4215fb){logger[_0x84a9('0xe')]('FreshsalesConfiguration,\x20%s,\x20%s',_0xc04f5b,_0x4215fb);_0x6dd7e5(_0x4215fb);});});}
\ No newline at end of file
+var _0x27dc=['jayson/promise','client','http','request','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x1a120a,_0x21808c){var _0x1b58d4=function(_0x2807ef){while(--_0x2807ef){_0x1a120a['push'](_0x1a120a['shift']());}};_0x1b58d4(++_0x21808c);}(_0x27dc,0xa0));var _0xc27d=function(_0x5ed228,_0x588d8e){_0x5ed228=_0x5ed228-0x0;var _0x11f912=_0x27dc[_0x5ed228];return _0x11f912;};'use strict';var _=require(_0xc27d('0x0'));var util=require(_0xc27d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc27d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc27d('0x3'))['db'];var utils=require(_0xc27d('0x4'));var logger=require(_0xc27d('0x5'))(_0xc27d('0x6'));var config=require(_0xc27d('0x7'));var jayson=require(_0xc27d('0x8'));var client=jayson[_0xc27d('0x9')][_0xc27d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2815fe,_0x1e588c,_0x247855){return new BPromise(function(_0x525f7b,_0x36bff4){return client[_0xc27d('0xb')](_0x2815fe,_0x247855)['then'](function(_0x1df794){logger[_0xc27d('0xc')](_0xc27d('0xd'),_0x1e588c,_0xc27d('0xe'));logger['debug']('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x1e588c,_0xc27d('0xe'),JSON[_0xc27d('0xf')](_0x1df794));if(_0x1df794[_0xc27d('0x10')]){if(_0x1df794[_0xc27d('0x10')][_0xc27d('0x11')]===0x1f4){logger[_0xc27d('0x10')](_0xc27d('0xd'),_0x1e588c,_0x1df794[_0xc27d('0x10')][_0xc27d('0x12')]);return _0x36bff4(_0x1df794[_0xc27d('0x10')][_0xc27d('0x12')]);}logger[_0xc27d('0x10')](_0xc27d('0xd'),_0x1e588c,_0x1df794['error'][_0xc27d('0x12')]);return _0x525f7b(_0x1df794[_0xc27d('0x10')]['message']);}else{logger[_0xc27d('0xc')](_0xc27d('0xd'),_0x1e588c,'request\x20sent');_0x525f7b(_0x1df794[_0xc27d('0x13')][_0xc27d('0x12')]);}})[_0xc27d('0x14')](function(_0x9d4f5f){logger['error'](_0xc27d('0xd'),_0x1e588c,_0x9d4f5f);_0x36bff4(_0x9d4f5f);});});}
\ No newline at end of file
index 8c9095f..6e916d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fdc=['show','post','create','put','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x4c2f17,_0x5c6821){var _0x20919e=function(_0x31eef7){while(--_0x31eef7){_0x4c2f17['push'](_0x4c2f17['shift']());}};_0x20919e(++_0x5c6821);}(_0x1fdc,0x8b));var _0xc1fd=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0x1fdc[_0x17928f];return _0x500b63;};'use strict';var multer=require(_0xc1fd('0x0'));var util=require(_0xc1fd('0x1'));var path=require('path');var timeout=require(_0xc1fd('0x2'));var express=require(_0xc1fd('0x3'));var router=express[_0xc1fd('0x4')]();var fs_extra=require(_0xc1fd('0x5'));var auth=require(_0xc1fd('0x6'));var interaction=require(_0xc1fd('0x7'));var config=require(_0xc1fd('0x8'));var controller=require('./intFreshsalesField.controller');router[_0xc1fd('0x9')]('/',auth[_0xc1fd('0xa')](),controller[_0xc1fd('0xb')]);router[_0xc1fd('0x9')](_0xc1fd('0xc'),auth[_0xc1fd('0xa')](),controller[_0xc1fd('0xd')]);router[_0xc1fd('0xe')]('/',auth[_0xc1fd('0xa')](),controller[_0xc1fd('0xf')]);router[_0xc1fd('0x10')](_0xc1fd('0xc'),auth[_0xc1fd('0xa')](),controller['update']);router[_0xc1fd('0x11')](_0xc1fd('0xc'),auth['isAuthenticated'](),controller[_0xc1fd('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x6f0d=['put','update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','isAuthenticated','get','/:id','show','create'];(function(_0x1753e6,_0x291a9f){var _0x3f153d=function(_0x3b64b9){while(--_0x3b64b9){_0x1753e6['push'](_0x1753e6['shift']());}};_0x3f153d(++_0x291a9f);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x1733aa,_0x18d844){_0x1733aa=_0x1733aa-0x0;var _0x1db9a1=_0x6f0d[_0x1733aa];return _0x1db9a1;};'use strict';var multer=require('multer');var util=require(_0xd6f0('0x0'));var path=require(_0xd6f0('0x1'));var timeout=require(_0xd6f0('0x2'));var express=require(_0xd6f0('0x3'));var router=express['Router']();var fs_extra=require(_0xd6f0('0x4'));var auth=require(_0xd6f0('0x5'));var interaction=require(_0xd6f0('0x6'));var config=require(_0xd6f0('0x7'));var controller=require(_0xd6f0('0x8'));router['get']('/',auth[_0xd6f0('0x9')](),controller['index']);router[_0xd6f0('0xa')](_0xd6f0('0xb'),auth[_0xd6f0('0x9')](),controller[_0xd6f0('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd6f0('0xd')]);router[_0xd6f0('0xe')](_0xd6f0('0xb'),auth[_0xd6f0('0x9')](),controller[_0xd6f0('0xf')]);router['delete'](_0xd6f0('0xb'),auth[_0xd6f0('0x9')](),controller[_0xd6f0('0x10')]);module[_0xd6f0('0x11')]=router;
\ No newline at end of file
index 4981188..8dbd80e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc7f=['BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','picklist','STRING','customVariable'];(function(_0x19b84f,_0x48765e){var _0x18067b=function(_0x1c69aa){while(--_0x1c69aa){_0x19b84f['push'](_0x19b84f['shift']());}};_0x18067b(++_0x48765e);}(_0xfc7f,0x12d));var _0xffc7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xfc7f[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xffc7('0x0'));module[_0xffc7('0x1')]={'type':{'type':Sequelize[_0xffc7('0x2')](_0xffc7('0x3'),_0xffc7('0x4'),'customVariable',_0xffc7('0x5'),_0xffc7('0x6')),'defaultValue':_0xffc7('0x3')},'content':{'type':Sequelize[_0xffc7('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xffc7('0x2')](_0xffc7('0x3'),_0xffc7('0x4'),_0xffc7('0x8'))},'keyContent':{'type':Sequelize[_0xffc7('0x7')]},'idField':{'type':Sequelize[_0xffc7('0x7')]},'nameField':{'type':Sequelize[_0xffc7('0x7')]},'customField':{'type':Sequelize[_0xffc7('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xffc7('0x7')]}};
\ No newline at end of file
+var _0x26ef=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x3c34a8,_0x11ab31){var _0x51d18a=function(_0x7ccab8){while(--_0x7ccab8){_0x3c34a8['push'](_0x3c34a8['shift']());}};_0x51d18a(++_0x11ab31);}(_0x26ef,0x105));var _0xf26e=function(_0x497c77,_0xe88a97){_0x497c77=_0x497c77-0x0;var _0x222b77=_0x26ef[_0x497c77];return _0x222b77;};'use strict';var Sequelize=require(_0xf26e('0x0'));module[_0xf26e('0x1')]={'type':{'type':Sequelize[_0xf26e('0x2')](_0xf26e('0x3'),_0xf26e('0x4'),_0xf26e('0x5'),_0xf26e('0x6'),_0xf26e('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf26e('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xf26e('0x3'),_0xf26e('0x4'),_0xf26e('0x5'))},'keyContent':{'type':Sequelize[_0xf26e('0x8')]},'idField':{'type':Sequelize[_0xf26e('0x8')]},'nameField':{'type':Sequelize[_0xf26e('0x8')]},'customField':{'type':Sequelize[_0xf26e('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index bbca95d..6fe57fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa92=['order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','show','params','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','sox','to-csv','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','index','map','FreshsalesField','rawAttributes','fieldName','type','key','name','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit'];(function(_0x4faf29,_0x19b217){var _0x435100=function(_0x138308){while(--_0x138308){_0x4faf29['push'](_0x4faf29['shift']());}};_0x435100(++_0x19b217);}(_0xaa92,0x9d));var _0x2aa9=function(_0x1857c6,_0x48840c){_0x1857c6=_0x1857c6-0x0;var _0x51011c=_0xaa92[_0x1857c6];return _0x51011c;};'use strict';var emlformat=require(_0x2aa9('0x0'));var rimraf=require(_0x2aa9('0x1'));var zipdir=require(_0x2aa9('0x2'));var jsonpatch=require(_0x2aa9('0x3'));var rp=require(_0x2aa9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2aa9('0x5'));var util=require('util');var path=require('path');var sox=require(_0x2aa9('0x6'));var csv=require(_0x2aa9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2aa9('0x8'));var crypto=require(_0x2aa9('0x9'));var jsforce=require(_0x2aa9('0xa'));var deskjs=require(_0x2aa9('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2aa9('0xc'));var authService=require(_0x2aa9('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x2aa9('0xe'));var hardwareService=require(_0x2aa9('0xf'));var logger=require(_0x2aa9('0x10'))(_0x2aa9('0x11'));var utils=require(_0x2aa9('0x12'));var config=require(_0x2aa9('0x13'));var licenseUtil=require(_0x2aa9('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51fc84,_0x2a66ed){_0x2a66ed=_0x2a66ed||0xcc;return function(_0x55d1cd){if(_0x55d1cd){return _0x51fc84[_0x2aa9('0x15')](_0x2a66ed);}return _0x51fc84[_0x2aa9('0x16')](_0x2a66ed)['end']();};}function respondWithResult(_0x39f6ee,_0xd392c8){_0xd392c8=_0xd392c8||0xc8;return function(_0x2f7708){if(_0x2f7708){return _0x39f6ee[_0x2aa9('0x16')](_0xd392c8)[_0x2aa9('0x17')](_0x2f7708);}};}function respondWithFilteredResult(_0x3e5af4,_0x31838b){return function(_0x16f2bd){if(_0x16f2bd){var _0x1e6e17=typeof _0x31838b[_0x2aa9('0x18')]===_0x2aa9('0x19')&&typeof _0x31838b[_0x2aa9('0x1a')]===_0x2aa9('0x19');var _0x148db3=_0x16f2bd[_0x2aa9('0x1b')];var _0x1bbbf5=_0x1e6e17?0x0:_0x31838b[_0x2aa9('0x18')];var _0x50e012=_0x1e6e17?_0x16f2bd['count']:_0x31838b[_0x2aa9('0x18')]+_0x31838b['limit'];var _0x2c14da;if(_0x50e012>=_0x148db3){_0x50e012=_0x148db3;_0x2c14da=0xc8;}else{_0x2c14da=0xce;}_0x3e5af4[_0x2aa9('0x16')](_0x2c14da);return _0x3e5af4[_0x2aa9('0x1c')](_0x2aa9('0x1d'),_0x1bbbf5+'-'+_0x50e012+'/'+_0x148db3)[_0x2aa9('0x17')](_0x16f2bd);}return null;};}function patchUpdates(_0x781dfb){return function(_0x381cbe){try{jsonpatch[_0x2aa9('0x1e')](_0x381cbe,_0x781dfb,!![]);}catch(_0x5656b4){return BPromise[_0x2aa9('0x1f')](_0x5656b4);}return _0x381cbe[_0x2aa9('0x20')]();};}function saveUpdates(_0x25fb24,_0x1a4e69){return function(_0x3b7110){if(_0x3b7110){return _0x3b7110[_0x2aa9('0x21')](_0x25fb24)[_0x2aa9('0x22')](function(_0x342b16){return _0x342b16;});}return null;};}function removeEntity(_0x19abfd,_0x40e888){return function(_0xebf93f){if(_0xebf93f){return _0xebf93f[_0x2aa9('0x23')]()[_0x2aa9('0x22')](function(){_0x19abfd[_0x2aa9('0x16')](0xcc)[_0x2aa9('0x24')]();});}};}function handleEntityNotFound(_0x401ab1,_0x4807f2){return function(_0x16bf94){if(!_0x16bf94){_0x401ab1[_0x2aa9('0x15')](0x194);}return _0x16bf94;};}function handleError(_0xa507d5,_0x108f37){_0x108f37=_0x108f37||0x1f4;return function(_0x46fbec){logger[_0x2aa9('0x25')](_0x46fbec['stack']);if(_0x46fbec['name']){delete _0x46fbec['name'];}_0xa507d5['status'](_0x108f37)['send'](_0x46fbec);};}exports[_0x2aa9('0x26')]=function(_0x153f41,_0x5b08ac){var _0x3a7419={},_0x48b2db={},_0x5591d6={'count':0x0,'rows':[]};var _0x262bfd=_[_0x2aa9('0x27')](db[_0x2aa9('0x28')][_0x2aa9('0x29')],function(_0x24ceed){return{'name':_0x24ceed[_0x2aa9('0x2a')],'type':_0x24ceed[_0x2aa9('0x2b')][_0x2aa9('0x2c')]};});_0x48b2db['model']=_[_0x2aa9('0x27')](_0x262bfd,_0x2aa9('0x2d'));_0x48b2db['query']=_[_0x2aa9('0x2e')](_0x153f41[_0x2aa9('0x2f')]);_0x48b2db[_0x2aa9('0x30')]=_['intersection'](_0x48b2db[_0x2aa9('0x31')],_0x48b2db[_0x2aa9('0x2f')]);_0x3a7419[_0x2aa9('0x32')]=_[_0x2aa9('0x33')](_0x48b2db[_0x2aa9('0x31')],qs[_0x2aa9('0x34')](_0x153f41[_0x2aa9('0x2f')]['fields']));_0x3a7419['attributes']=_0x3a7419[_0x2aa9('0x32')][_0x2aa9('0x35')]?_0x3a7419['attributes']:_0x48b2db[_0x2aa9('0x31')];if(!_0x153f41['query'][_0x2aa9('0x36')](_0x2aa9('0x37'))){_0x3a7419[_0x2aa9('0x1a')]=qs[_0x2aa9('0x1a')](_0x153f41[_0x2aa9('0x2f')][_0x2aa9('0x1a')]);_0x3a7419[_0x2aa9('0x18')]=qs[_0x2aa9('0x18')](_0x153f41['query'][_0x2aa9('0x18')]);}_0x3a7419[_0x2aa9('0x38')]=qs[_0x2aa9('0x39')](_0x153f41['query'][_0x2aa9('0x39')]);_0x3a7419[_0x2aa9('0x3a')]=qs[_0x2aa9('0x30')](_[_0x2aa9('0x3b')](_0x153f41[_0x2aa9('0x2f')],_0x48b2db[_0x2aa9('0x30')]),_0x262bfd);if(_0x153f41[_0x2aa9('0x2f')][_0x2aa9('0x3c')]){_0x3a7419[_0x2aa9('0x3a')]=_[_0x2aa9('0x3d')](_0x3a7419[_0x2aa9('0x3a')],{'$or':_[_0x2aa9('0x27')](_0x262bfd,function(_0x2f207e){if(_0x2f207e['type']!==_0x2aa9('0x3e')){var _0x1f31a3={};_0x1f31a3[_0x2f207e[_0x2aa9('0x2d')]]={'$like':'%'+_0x153f41[_0x2aa9('0x2f')][_0x2aa9('0x3c')]+'%'};return _0x1f31a3;}})});}_0x3a7419=_[_0x2aa9('0x3d')]({},_0x3a7419,_0x153f41[_0x2aa9('0x3f')]);var _0x531112={'where':_0x3a7419[_0x2aa9('0x3a')]};return db[_0x2aa9('0x28')][_0x2aa9('0x1b')](_0x531112)[_0x2aa9('0x22')](function(_0x174d3c){_0x5591d6['count']=_0x174d3c;if(_0x153f41['query'][_0x2aa9('0x40')]){_0x3a7419['include']=[{'all':!![]}];}return db[_0x2aa9('0x28')]['findAll'](_0x3a7419);})[_0x2aa9('0x22')](function(_0xa27793){_0x5591d6[_0x2aa9('0x41')]=_0xa27793;return _0x5591d6;})[_0x2aa9('0x22')](respondWithFilteredResult(_0x5b08ac,_0x3a7419))['catch'](handleError(_0x5b08ac,null));};exports[_0x2aa9('0x42')]=function(_0x46f593,_0x49f306){var _0x1c5d9e={'raw':!![],'where':{'id':_0x46f593[_0x2aa9('0x43')]['id']}},_0x298714={};_0x298714[_0x2aa9('0x31')]=_[_0x2aa9('0x2e')](db[_0x2aa9('0x28')][_0x2aa9('0x29')]);_0x298714['query']=_[_0x2aa9('0x2e')](_0x46f593[_0x2aa9('0x2f')]);_0x298714[_0x2aa9('0x30')]=_['intersection'](_0x298714['model'],_0x298714[_0x2aa9('0x2f')]);_0x1c5d9e[_0x2aa9('0x32')]=_[_0x2aa9('0x33')](_0x298714[_0x2aa9('0x31')],qs[_0x2aa9('0x34')](_0x46f593[_0x2aa9('0x2f')][_0x2aa9('0x34')]));_0x1c5d9e['attributes']=_0x1c5d9e[_0x2aa9('0x32')][_0x2aa9('0x35')]?_0x1c5d9e[_0x2aa9('0x32')]:_0x298714[_0x2aa9('0x31')];if(_0x46f593['query']['includeAll']){_0x1c5d9e['include']=[{'all':!![]}];}_0x1c5d9e=_[_0x2aa9('0x3d')]({},_0x1c5d9e,_0x46f593[_0x2aa9('0x3f')]);return db[_0x2aa9('0x28')]['find'](_0x1c5d9e)[_0x2aa9('0x22')](handleEntityNotFound(_0x49f306,null))['then'](respondWithResult(_0x49f306,null))[_0x2aa9('0x44')](handleError(_0x49f306,null));};exports[_0x2aa9('0x45')]=function(_0x17dd44,_0x5c71ae){return db['FreshsalesField'][_0x2aa9('0x45')](_0x17dd44['body'],{})[_0x2aa9('0x22')](respondWithResult(_0x5c71ae,0xc9))['catch'](handleError(_0x5c71ae,null));};exports['update']=function(_0x5a54bc,_0x5406dc){if(_0x5a54bc['body']['id']){delete _0x5a54bc[_0x2aa9('0x46')]['id'];}return db[_0x2aa9('0x28')]['find']({'where':{'id':_0x5a54bc[_0x2aa9('0x43')]['id']}})[_0x2aa9('0x22')](handleEntityNotFound(_0x5406dc,null))[_0x2aa9('0x22')](saveUpdates(_0x5a54bc['body'],null))[_0x2aa9('0x22')](respondWithResult(_0x5406dc,null))['catch'](handleError(_0x5406dc,null));};exports[_0x2aa9('0x23')]=function(_0x31c4f6,_0x544191){return db[_0x2aa9('0x28')]['find']({'where':{'id':_0x31c4f6[_0x2aa9('0x43')]['id']}})[_0x2aa9('0x22')](handleEntityNotFound(_0x544191,null))[_0x2aa9('0x22')](removeEntity(_0x544191,null))[_0x2aa9('0x44')](handleError(_0x544191,null));};
\ No newline at end of file
+var _0x045a=['key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','length','catch','create','body','update','params','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','destroy','then','error','stack','name','index','map','FreshsalesField','rawAttributes','fieldName'];(function(_0x1df291,_0x5d1aba){var _0x10b214=function(_0x19dfe6){while(--_0x19dfe6){_0x1df291['push'](_0x1df291['shift']());}};_0x10b214(++_0x5d1aba);}(_0x045a,0x6b));var _0xa045=function(_0x8d4c97,_0x3cf763){_0x8d4c97=_0x8d4c97-0x0;var _0x1c1941=_0x045a[_0x8d4c97];return _0x1c1941;};'use strict';var emlformat=require(_0xa045('0x0'));var rimraf=require(_0xa045('0x1'));var zipdir=require(_0xa045('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa045('0x3'));var moment=require('moment');var BPromise=require(_0xa045('0x4'));var Mustache=require(_0xa045('0x5'));var util=require(_0xa045('0x6'));var path=require(_0xa045('0x7'));var sox=require('sox');var csv=require(_0xa045('0x8'));var ejs=require(_0xa045('0x9'));var fs=require('fs');var fs_extra=require(_0xa045('0xa'));var _=require(_0xa045('0xb'));var squel=require(_0xa045('0xc'));var crypto=require(_0xa045('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa045('0xe'));var Papa=require(_0xa045('0xf'));var Redis=require(_0xa045('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa045('0x11'));var as=require(_0xa045('0x12'));var hardwareService=require(_0xa045('0x13'));var logger=require(_0xa045('0x14'))(_0xa045('0x15'));var utils=require(_0xa045('0x16'));var config=require(_0xa045('0x17'));var licenseUtil=require(_0xa045('0x18'));var db=require(_0xa045('0x19'))['db'];function respondWithStatusCode(_0x857dc8,_0x104d7c){_0x104d7c=_0x104d7c||0xcc;return function(_0xf20b62){if(_0xf20b62){return _0x857dc8[_0xa045('0x1a')](_0x104d7c);}return _0x857dc8[_0xa045('0x1b')](_0x104d7c)[_0xa045('0x1c')]();};}function respondWithResult(_0x20dcd6,_0x34b56a){_0x34b56a=_0x34b56a||0xc8;return function(_0x3707fe){if(_0x3707fe){return _0x20dcd6['status'](_0x34b56a)[_0xa045('0x1d')](_0x3707fe);}};}function respondWithFilteredResult(_0x1b62cf,_0x170fa8){return function(_0x2822a2){if(_0x2822a2){var _0x23b19a=typeof _0x170fa8['offset']===_0xa045('0x1e')&&typeof _0x170fa8[_0xa045('0x1f')]===_0xa045('0x1e');var _0xb296e4=_0x2822a2[_0xa045('0x20')];var _0x32be37=_0x23b19a?0x0:_0x170fa8[_0xa045('0x21')];var _0x2a6a06=_0x23b19a?_0x2822a2[_0xa045('0x20')]:_0x170fa8[_0xa045('0x21')]+_0x170fa8['limit'];var _0x23dd84;if(_0x2a6a06>=_0xb296e4){_0x2a6a06=_0xb296e4;_0x23dd84=0xc8;}else{_0x23dd84=0xce;}_0x1b62cf[_0xa045('0x1b')](_0x23dd84);return _0x1b62cf[_0xa045('0x22')](_0xa045('0x23'),_0x32be37+'-'+_0x2a6a06+'/'+_0xb296e4)[_0xa045('0x1d')](_0x2822a2);}return null;};}function patchUpdates(_0x4aa57b){return function(_0x410bae){try{jsonpatch[_0xa045('0x24')](_0x410bae,_0x4aa57b,!![]);}catch(_0x3088cc){return BPromise['reject'](_0x3088cc);}return _0x410bae['save']();};}function saveUpdates(_0x2d5cd6,_0x221133){return function(_0x3a2ed1){if(_0x3a2ed1){return _0x3a2ed1['update'](_0x2d5cd6)['then'](function(_0x49dec2){return _0x49dec2;});}return null;};}function removeEntity(_0x2a71a4,_0x1ec943){return function(_0x3a0bbf){if(_0x3a0bbf){return _0x3a0bbf[_0xa045('0x25')]()[_0xa045('0x26')](function(){_0x2a71a4[_0xa045('0x1b')](0xcc)[_0xa045('0x1c')]();});}};}function handleEntityNotFound(_0x342a5d,_0x3e1148){return function(_0x108214){if(!_0x108214){_0x342a5d[_0xa045('0x1a')](0x194);}return _0x108214;};}function handleError(_0x3a0ea0,_0x4e88d2){_0x4e88d2=_0x4e88d2||0x1f4;return function(_0x557cd6){logger[_0xa045('0x27')](_0x557cd6[_0xa045('0x28')]);if(_0x557cd6['name']){delete _0x557cd6[_0xa045('0x29')];}_0x3a0ea0[_0xa045('0x1b')](_0x4e88d2)['send'](_0x557cd6);};}exports[_0xa045('0x2a')]=function(_0x81695a,_0xd44e55){var _0x2292b4={},_0x3df39b={},_0x517bc6={'count':0x0,'rows':[]};var _0x4cd20b=_[_0xa045('0x2b')](db[_0xa045('0x2c')][_0xa045('0x2d')],function(_0xc3f540){return{'name':_0xc3f540[_0xa045('0x2e')],'type':_0xc3f540['type'][_0xa045('0x2f')]};});_0x3df39b[_0xa045('0x30')]=_[_0xa045('0x2b')](_0x4cd20b,_0xa045('0x29'));_0x3df39b[_0xa045('0x31')]=_[_0xa045('0x32')](_0x81695a[_0xa045('0x31')]);_0x3df39b[_0xa045('0x33')]=_[_0xa045('0x34')](_0x3df39b['model'],_0x3df39b[_0xa045('0x31')]);_0x2292b4[_0xa045('0x35')]=_[_0xa045('0x34')](_0x3df39b[_0xa045('0x30')],qs[_0xa045('0x36')](_0x81695a[_0xa045('0x31')][_0xa045('0x36')]));_0x2292b4[_0xa045('0x35')]=_0x2292b4['attributes']['length']?_0x2292b4[_0xa045('0x35')]:_0x3df39b['model'];if(!_0x81695a[_0xa045('0x31')][_0xa045('0x37')](_0xa045('0x38'))){_0x2292b4[_0xa045('0x1f')]=qs[_0xa045('0x1f')](_0x81695a[_0xa045('0x31')]['limit']);_0x2292b4[_0xa045('0x21')]=qs[_0xa045('0x21')](_0x81695a['query']['offset']);}_0x2292b4[_0xa045('0x39')]=qs[_0xa045('0x3a')](_0x81695a[_0xa045('0x31')][_0xa045('0x3a')]);_0x2292b4[_0xa045('0x3b')]=qs[_0xa045('0x33')](_[_0xa045('0x3c')](_0x81695a[_0xa045('0x31')],_0x3df39b[_0xa045('0x33')]),_0x4cd20b);if(_0x81695a[_0xa045('0x31')][_0xa045('0x3d')]){_0x2292b4[_0xa045('0x3b')]=_[_0xa045('0x3e')](_0x2292b4[_0xa045('0x3b')],{'$or':_['map'](_0x4cd20b,function(_0x3e498c){if(_0x3e498c[_0xa045('0x3f')]!==_0xa045('0x40')){var _0x2ffdd3={};_0x2ffdd3[_0x3e498c['name']]={'$like':'%'+_0x81695a[_0xa045('0x31')]['filter']+'%'};return _0x2ffdd3;}})});}_0x2292b4=_[_0xa045('0x3e')]({},_0x2292b4,_0x81695a[_0xa045('0x41')]);var _0x293797={'where':_0x2292b4[_0xa045('0x3b')]};return db[_0xa045('0x2c')][_0xa045('0x20')](_0x293797)[_0xa045('0x26')](function(_0x47b4f1){_0x517bc6[_0xa045('0x20')]=_0x47b4f1;if(_0x81695a['query'][_0xa045('0x42')]){_0x2292b4[_0xa045('0x43')]=[{'all':!![]}];}return db[_0xa045('0x2c')][_0xa045('0x44')](_0x2292b4);})['then'](function(_0x22583c){_0x517bc6[_0xa045('0x45')]=_0x22583c;return _0x517bc6;})['then'](respondWithFilteredResult(_0xd44e55,_0x2292b4))['catch'](handleError(_0xd44e55,null));};exports['show']=function(_0x3194d4,_0x55a072){var _0x57f106={'raw':!![],'where':{'id':_0x3194d4['params']['id']}},_0x374e87={};_0x374e87['model']=_[_0xa045('0x32')](db[_0xa045('0x2c')][_0xa045('0x2d')]);_0x374e87[_0xa045('0x31')]=_[_0xa045('0x32')](_0x3194d4['query']);_0x374e87['filters']=_[_0xa045('0x34')](_0x374e87[_0xa045('0x30')],_0x374e87[_0xa045('0x31')]);_0x57f106[_0xa045('0x35')]=_[_0xa045('0x34')](_0x374e87[_0xa045('0x30')],qs[_0xa045('0x36')](_0x3194d4[_0xa045('0x31')][_0xa045('0x36')]));_0x57f106[_0xa045('0x35')]=_0x57f106[_0xa045('0x35')][_0xa045('0x46')]?_0x57f106[_0xa045('0x35')]:_0x374e87[_0xa045('0x30')];if(_0x3194d4[_0xa045('0x31')][_0xa045('0x42')]){_0x57f106[_0xa045('0x43')]=[{'all':!![]}];}_0x57f106=_[_0xa045('0x3e')]({},_0x57f106,_0x3194d4[_0xa045('0x41')]);return db[_0xa045('0x2c')]['find'](_0x57f106)['then'](handleEntityNotFound(_0x55a072,null))[_0xa045('0x26')](respondWithResult(_0x55a072,null))[_0xa045('0x47')](handleError(_0x55a072,null));};exports['create']=function(_0x351286,_0x155045){return db[_0xa045('0x2c')][_0xa045('0x48')](_0x351286[_0xa045('0x49')],{})[_0xa045('0x26')](respondWithResult(_0x155045,0xc9))[_0xa045('0x47')](handleError(_0x155045,null));};exports[_0xa045('0x4a')]=function(_0xf2ea31,_0x5e28a1){if(_0xf2ea31['body']['id']){delete _0xf2ea31[_0xa045('0x49')]['id'];}return db['FreshsalesField']['find']({'where':{'id':_0xf2ea31[_0xa045('0x4b')]['id']}})[_0xa045('0x26')](handleEntityNotFound(_0x5e28a1,null))[_0xa045('0x26')](saveUpdates(_0xf2ea31[_0xa045('0x49')],null))[_0xa045('0x26')](respondWithResult(_0x5e28a1,null))[_0xa045('0x47')](handleError(_0x5e28a1,null));};exports[_0xa045('0x25')]=function(_0x3db6ed,_0x1949d1){return db[_0xa045('0x2c')][_0xa045('0x4c')]({'where':{'id':_0x3db6ed[_0xa045('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1949d1,null))['then'](removeEntity(_0x1949d1,null))[_0xa045('0x47')](handleError(_0x1949d1,null));};
\ No newline at end of file
index a67b79d..b992131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x349e=['path','rimraf','./intFreshsalesField.attributes','FreshsalesField','int_freshsales_fields','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2387c5,_0xfcc74c){var _0x2c414c=function(_0x3d1881){while(--_0x3d1881){_0x2387c5['push'](_0x2387c5['shift']());}};_0x2c414c(++_0xfcc74c);}(_0x349e,0xcb));var _0xe349=function(_0x4e82a2,_0x4a577b){_0x4e82a2=_0x4e82a2-0x0;var _0x15b166=_0x349e[_0x4e82a2];return _0x15b166;};'use strict';var _=require(_0xe349('0x0'));var util=require(_0xe349('0x1'));var logger=require(_0xe349('0x2'))(_0xe349('0x3'));var moment=require(_0xe349('0x4'));var BPromise=require(_0xe349('0x5'));var rp=require(_0xe349('0x6'));var fs=require('fs');var path=require(_0xe349('0x7'));var rimraf=require(_0xe349('0x8'));var config=require('../../config/environment');var attributes=require(_0xe349('0x9'));module['exports']=function(_0x55aae6,_0xb21068){return _0x55aae6['define'](_0xe349('0xa'),attributes,{'tableName':_0xe349('0xb'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0xe349('0xc'),_0xe349('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x88c3=['idField','FieldId','lodash','../../config/logger','bluebird','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','FreshsalesField','int_freshsales_fields','freshsales_unique_index'];(function(_0x5d7305,_0x55556e){var _0x37bd44=function(_0x4b20f5){while(--_0x4b20f5){_0x5d7305['push'](_0x5d7305['shift']());}};_0x37bd44(++_0x55556e);}(_0x88c3,0x1ee));var _0x388c=function(_0x341ff5,_0x3cdec8){_0x341ff5=_0x341ff5-0x0;var _0x1ef1f9=_0x88c3[_0x341ff5];return _0x1ef1f9;};'use strict';var _=require(_0x388c('0x0'));var util=require('util');var logger=require(_0x388c('0x1'))('api');var moment=require('moment');var BPromise=require(_0x388c('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x388c('0x3'));var config=require(_0x388c('0x4'));var attributes=require(_0x388c('0x5'));module[_0x388c('0x6')]=function(_0x28ed4d,_0x23199c){return _0x28ed4d['define'](_0x388c('0x7'),attributes,{'tableName':_0x388c('0x8'),'paranoid':![],'indexes':[{'name':_0x388c('0x9'),'fields':[_0x388c('0xa'),_0x388c('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 764f5a2..3c5633a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['../../config/environment','jayson/promise','client','http','request','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc'];(function(_0x1205e4,_0x237372){var _0x1ece0a=function(_0x2f688c){while(--_0x2f688c){_0x1205e4['push'](_0x1205e4['shift']());}};_0x1ece0a(++_0x237372);}(_0xba34,0x119));var _0x4ba3=function(_0x737326,_0x41620e){_0x737326=_0x737326-0x0;var _0x1b301f=_0xba34[_0x737326];return _0x1b301f;};'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});function respondWithRpcPromise(_0xe5f99a,_0x585f2d,_0x6254fb){return new BPromise(function(_0x368eee,_0x2df7f3){return client[_0x4ba3('0xb')](_0xe5f99a,_0x6254fb)[_0x4ba3('0xc')](function(_0xcf1ec3){logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));logger[_0x4ba3('0x10')](_0x4ba3('0x11'),_0x585f2d,'request\x20sent',JSON[_0x4ba3('0x12')](_0xcf1ec3));if(_0xcf1ec3[_0x4ba3('0x13')]){if(_0xcf1ec3['error'][_0x4ba3('0x14')]===0x1f4){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3['error'][_0x4ba3('0x15')]);return _0x2df7f3(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}logger[_0x4ba3('0x13')](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);return _0x368eee(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}else{logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));_0x368eee(_0xcf1ec3[_0x4ba3('0x16')][_0x4ba3('0x15')]);}})[_0x4ba3('0x17')](function(_0x1b7776){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0x1b7776);_0x2df7f3(_0x1b7776);});});}
\ No newline at end of file
+var _0x9536=['request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','FreshsalesField,\x20%s,\x20%s'];(function(_0x217594,_0x312457){var _0xdf7167=function(_0x223b88){while(--_0x223b88){_0x217594['push'](_0x217594['shift']());}};_0xdf7167(++_0x312457);}(_0x9536,0x179));var _0x6953=function(_0x51fe5f,_0x1d8632){_0x51fe5f=_0x51fe5f-0x0;var _0x4abce9=_0x9536[_0x51fe5f];return _0x4abce9;};'use strict';var _=require(_0x6953('0x0'));var util=require(_0x6953('0x1'));var moment=require(_0x6953('0x2'));var BPromise=require(_0x6953('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6953('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6953('0x5'));var logger=require(_0x6953('0x6'))(_0x6953('0x7'));var config=require(_0x6953('0x8'));var jayson=require(_0x6953('0x9'));var client=jayson['client'][_0x6953('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2bb026,_0x385f2d,_0x3e1aff){return new BPromise(function(_0x1c8225,_0x58ac30){return client[_0x6953('0xb')](_0x2bb026,_0x3e1aff)[_0x6953('0xc')](function(_0x449acb){logger['info'](_0x6953('0xd'),_0x385f2d,_0x6953('0xe'));logger[_0x6953('0xf')](_0x6953('0x10'),_0x385f2d,_0x6953('0xe'),JSON[_0x6953('0x11')](_0x449acb));if(_0x449acb[_0x6953('0x12')]){if(_0x449acb[_0x6953('0x12')][_0x6953('0x13')]===0x1f4){logger['error'](_0x6953('0xd'),_0x385f2d,_0x449acb['error'][_0x6953('0x14')]);return _0x58ac30(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}logger[_0x6953('0x12')](_0x6953('0xd'),_0x385f2d,_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);return _0x1c8225(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}else{logger[_0x6953('0x15')](_0x6953('0xd'),_0x385f2d,'request\x20sent');_0x1c8225(_0x449acb['result'][_0x6953('0x14')]);}})[_0x6953('0x16')](function(_0x16b79b){logger[_0x6953('0x12')]('FreshsalesField,\x20%s,\x20%s',_0x385f2d,_0x16b79b);_0x58ac30(_0x16b79b);});});}
\ No newline at end of file
index b7d9f3d..83122e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x2bfbc7,_0x6275a2){var _0x2c2c27=function(_0x19c749){while(--_0x19c749){_0x2bfbc7['push'](_0x2bfbc7['shift']());}};_0x2c2c27(++_0x6275a2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x28aafc,_0x34bf37){var _0xdcb4f4=function(_0x5528dc){while(--_0x5528dc){_0x28aafc['push'](_0x28aafc['shift']());}};_0xdcb4f4(++_0x34bf37);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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 cb00c05..fab1f52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86c0=['newTab','sequelize','STRING','username','ENUM','integrationTab'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x86c0,0x133));var _0x086c=function(_0x3a0e2d,_0x1a9695){_0x3a0e2d=_0x3a0e2d-0x0;var _0x2980b8=_0x86c0[_0x3a0e2d];return _0x2980b8;};'use strict';var Sequelize=require(_0x086c('0x0'));module['exports']={'name':{'type':Sequelize[_0x086c('0x1')]},'description':{'type':Sequelize[_0x086c('0x1')]},'username':{'type':Sequelize[_0x086c('0x1')],'unique':_0x086c('0x2')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x086c('0x1')]},'clientId':{'type':Sequelize[_0x086c('0x1')]},'clientSecret':{'type':Sequelize[_0x086c('0x1')]},'securityToken':{'type':Sequelize[_0x086c('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x086c('0x3')](_0x086c('0x4'),_0x086c('0x5')),'defaultValue':_0x086c('0x4')}};
\ No newline at end of file
+var _0xc74c=['integrationTab','sequelize','exports','STRING','username','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc74c,0x163));var _0xcc74=function(_0x2f4dde,_0x34e19b){_0x2f4dde=_0x2f4dde-0x0;var _0x4c7fbd=_0xc74c[_0x2f4dde];return _0x4c7fbd;};'use strict';var Sequelize=require(_0xcc74('0x0'));module[_0xcc74('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xcc74('0x2')],'unique':_0xcc74('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xcc74('0x2')]},'clientId':{'type':Sequelize[_0xcc74('0x2')]},'clientSecret':{'type':Sequelize[_0xcc74('0x2')]},'securityToken':{'type':Sequelize[_0xcc74('0x2')]},'serverUrl':{'type':Sequelize[_0xcc74('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xcc74('0x4')](_0xcc74('0x5'),'newTab'),'defaultValue':_0xcc74('0x5')}};
\ No newline at end of file
index 7d867c0..f905942 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddb3=['getSubjects','channel','Descriptions','getDescriptions','SalesforceConfiguration','SalesforceField','getFields','Task','clientId','clientSecret','securityToken','remoteUri','slice','substring','lastIndexOf','login','username','password','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Description','string','int','picklist','boolean','email','textarea','remove','includes','label','custom','picklistValues','value','True','true','false','test','statusCode','stringify','Wrong\x20credentials','eml-format','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','SalesforceAccount','includeAll','rows','show','find','create','body','catch','params','getConfigurations','options','addConfiguration','findOne','AccountId','Subjects'];(function(_0x4296e7,_0x1473a4){var _0x254724=function(_0x57c691){while(--_0x57c691){_0x4296e7['push'](_0x4296e7['shift']());}};_0x254724(++_0x1473a4);}(_0xddb3,0x1a3));var _0x3ddb=function(_0x40d502,_0x1ba3c3){_0x40d502=_0x40d502-0x0;var _0x2cffb9=_0xddb3[_0x40d502];return _0x2cffb9;};'use strict';var emlformat=require(_0x3ddb('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3ddb('0x1'));var BPromise=require(_0x3ddb('0x2'));var Mustache=require(_0x3ddb('0x3'));var util=require(_0x3ddb('0x4'));var path=require('path');var sox=require(_0x3ddb('0x5'));var csv=require(_0x3ddb('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3ddb('0x7'));var _=require(_0x3ddb('0x8'));var squel=require('squel');var crypto=require(_0x3ddb('0x9'));var jsforce=require(_0x3ddb('0xa'));var deskjs=require(_0x3ddb('0xb'));var toCsv=require(_0x3ddb('0x6'));var querystring=require(_0x3ddb('0xc'));var Papa=require('papaparse');var Redis=require(_0x3ddb('0xd'));var authService=require(_0x3ddb('0xe'));var qs=require(_0x3ddb('0xf'));var as=require(_0x3ddb('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3ddb('0x11'));var utils=require(_0x3ddb('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x3ddb('0x13'));var db=require('../../mysqldb')['db'];var integrations=require(_0x3ddb('0x14'));function respondWithStatusCode(_0x2d4b64,_0x47d7ec){_0x47d7ec=_0x47d7ec||0xcc;return function(_0x1e95a7){if(_0x1e95a7){return _0x2d4b64[_0x3ddb('0x15')](_0x47d7ec);}return _0x2d4b64['status'](_0x47d7ec)['end']();};}function respondWithResult(_0x5f2f8e,_0x4c4d95){_0x4c4d95=_0x4c4d95||0xc8;return function(_0x49f295){if(_0x49f295){return _0x5f2f8e[_0x3ddb('0x16')](_0x4c4d95)[_0x3ddb('0x17')](_0x49f295);}};}function respondWithFilteredResult(_0x497961,_0x1ce1b6){return function(_0x335f2e){if(_0x335f2e){var _0x1a43bb=typeof _0x1ce1b6[_0x3ddb('0x18')]==='undefined'&&typeof _0x1ce1b6['limit']===_0x3ddb('0x19');var _0x29fe49=_0x335f2e[_0x3ddb('0x1a')];var _0x101041=_0x1a43bb?0x0:_0x1ce1b6[_0x3ddb('0x18')];var _0x2a5d81=_0x1a43bb?_0x335f2e[_0x3ddb('0x1a')]:_0x1ce1b6[_0x3ddb('0x18')]+_0x1ce1b6[_0x3ddb('0x1b')];var _0x1fbfdd;if(_0x2a5d81>=_0x29fe49){_0x2a5d81=_0x29fe49;_0x1fbfdd=0xc8;}else{_0x1fbfdd=0xce;}_0x497961[_0x3ddb('0x16')](_0x1fbfdd);return _0x497961[_0x3ddb('0x1c')](_0x3ddb('0x1d'),_0x101041+'-'+_0x2a5d81+'/'+_0x29fe49)[_0x3ddb('0x17')](_0x335f2e);}return null;};}function patchUpdates(_0x10536e){return function(_0x751a7d){try{jsonpatch[_0x3ddb('0x1e')](_0x751a7d,_0x10536e,!![]);}catch(_0x93d82b){return BPromise[_0x3ddb('0x1f')](_0x93d82b);}return _0x751a7d[_0x3ddb('0x20')]();};}function saveUpdates(_0x4534a8,_0x5c5c1e){return function(_0x5622a2){if(_0x5622a2){return _0x5622a2[_0x3ddb('0x21')](_0x4534a8)[_0x3ddb('0x22')](function(_0x3146cb){return _0x3146cb;});}return null;};}function removeEntity(_0x4c207a,_0xe11e63){return function(_0xafb94d){if(_0xafb94d){return _0xafb94d[_0x3ddb('0x23')]()[_0x3ddb('0x22')](function(){_0x4c207a[_0x3ddb('0x16')](0xcc)[_0x3ddb('0x24')]();});}};}function handleEntityNotFound(_0x4f5f60,_0x270d3f){return function(_0x1232d2){if(!_0x1232d2){_0x4f5f60['sendStatus'](0x194);}return _0x1232d2;};}function handleError(_0x1c515b,_0x33a685){_0x33a685=_0x33a685||0x1f4;return function(_0x52f47f){logger[_0x3ddb('0x25')](_0x52f47f[_0x3ddb('0x26')]);if(_0x52f47f[_0x3ddb('0x27')]){delete _0x52f47f[_0x3ddb('0x27')];}_0x1c515b[_0x3ddb('0x16')](_0x33a685)[_0x3ddb('0x28')](_0x52f47f);};}exports[_0x3ddb('0x29')]=function(_0x360cde,_0x4a99bf){var _0xd8d2c3={},_0x25bb69={},_0x395215={'count':0x0,'rows':[]};var _0x5ed42b=_[_0x3ddb('0x2a')](db['SalesforceAccount'][_0x3ddb('0x2b')],function(_0x1b5682){return{'name':_0x1b5682[_0x3ddb('0x2c')],'type':_0x1b5682[_0x3ddb('0x2d')]['key']};});_0x25bb69['model']=_[_0x3ddb('0x2a')](_0x5ed42b,_0x3ddb('0x27'));_0x25bb69[_0x3ddb('0x2e')]=_[_0x3ddb('0x2f')](_0x360cde[_0x3ddb('0x2e')]);_0x25bb69[_0x3ddb('0x30')]=_[_0x3ddb('0x31')](_0x25bb69['model'],_0x25bb69[_0x3ddb('0x2e')]);_0xd8d2c3[_0x3ddb('0x32')]=_['intersection'](_0x25bb69[_0x3ddb('0x33')],qs[_0x3ddb('0x34')](_0x360cde[_0x3ddb('0x2e')][_0x3ddb('0x34')]));_0xd8d2c3[_0x3ddb('0x32')]=_0xd8d2c3[_0x3ddb('0x32')][_0x3ddb('0x35')]?_0xd8d2c3[_0x3ddb('0x32')]:_0x25bb69[_0x3ddb('0x33')];if(!_0x360cde['query'][_0x3ddb('0x36')](_0x3ddb('0x37'))){_0xd8d2c3[_0x3ddb('0x1b')]=qs['limit'](_0x360cde['query'][_0x3ddb('0x1b')]);_0xd8d2c3[_0x3ddb('0x18')]=qs[_0x3ddb('0x18')](_0x360cde[_0x3ddb('0x2e')][_0x3ddb('0x18')]);}_0xd8d2c3[_0x3ddb('0x38')]=qs[_0x3ddb('0x39')](_0x360cde[_0x3ddb('0x2e')][_0x3ddb('0x39')]);_0xd8d2c3[_0x3ddb('0x3a')]=qs[_0x3ddb('0x30')](_[_0x3ddb('0x3b')](_0x360cde[_0x3ddb('0x2e')],_0x25bb69[_0x3ddb('0x30')]),_0x5ed42b);if(_0x360cde[_0x3ddb('0x2e')]['filter']){_0xd8d2c3[_0x3ddb('0x3a')]=_[_0x3ddb('0x3c')](_0xd8d2c3[_0x3ddb('0x3a')],{'$or':_[_0x3ddb('0x2a')](_0x5ed42b,function(_0x5ea127){if(_0x5ea127[_0x3ddb('0x2d')]!=='VIRTUAL'){var _0x83747a={};_0x83747a[_0x5ea127['name']]={'$like':'%'+_0x360cde[_0x3ddb('0x2e')][_0x3ddb('0x3d')]+'%'};return _0x83747a;}})});}_0xd8d2c3=_[_0x3ddb('0x3c')]({},_0xd8d2c3,_0x360cde['options']);var _0x250ae1={'where':_0xd8d2c3[_0x3ddb('0x3a')]};return db[_0x3ddb('0x3e')][_0x3ddb('0x1a')](_0x250ae1)['then'](function(_0x541de0){_0x395215[_0x3ddb('0x1a')]=_0x541de0;if(_0x360cde['query'][_0x3ddb('0x3f')]){_0xd8d2c3['include']=[{'all':!![]}];}return db[_0x3ddb('0x3e')]['findAll'](_0xd8d2c3);})[_0x3ddb('0x22')](function(_0xf39d88){_0x395215[_0x3ddb('0x40')]=_0xf39d88;return _0x395215;})[_0x3ddb('0x22')](respondWithFilteredResult(_0x4a99bf,_0xd8d2c3))['catch'](handleError(_0x4a99bf,null));};exports[_0x3ddb('0x41')]=function(_0x301411,_0x2393f0){var _0x1a4066={'raw':![],'where':{'id':_0x301411['params']['id']}},_0x3e1c26={};_0x3e1c26[_0x3ddb('0x33')]=_[_0x3ddb('0x2f')](db[_0x3ddb('0x3e')][_0x3ddb('0x2b')]);_0x3e1c26[_0x3ddb('0x2e')]=_[_0x3ddb('0x2f')](_0x301411[_0x3ddb('0x2e')]);_0x3e1c26[_0x3ddb('0x30')]=_[_0x3ddb('0x31')](_0x3e1c26['model'],_0x3e1c26[_0x3ddb('0x2e')]);_0x1a4066[_0x3ddb('0x32')]=_[_0x3ddb('0x31')](_0x3e1c26[_0x3ddb('0x33')],qs[_0x3ddb('0x34')](_0x301411[_0x3ddb('0x2e')][_0x3ddb('0x34')]));_0x1a4066['attributes']=_0x1a4066[_0x3ddb('0x32')][_0x3ddb('0x35')]?_0x1a4066[_0x3ddb('0x32')]:_0x3e1c26['model'];if(_0x301411['query'][_0x3ddb('0x3f')]){_0x1a4066['include']=[{'all':!![]}];}_0x1a4066=_[_0x3ddb('0x3c')]({},_0x1a4066,_0x301411['options']);return db[_0x3ddb('0x3e')][_0x3ddb('0x42')](_0x1a4066)[_0x3ddb('0x22')](handleEntityNotFound(_0x2393f0,null))['then'](respondWithResult(_0x2393f0,null))['catch'](handleError(_0x2393f0,null));};exports['create']=function(_0x36c300,_0x109287){return db[_0x3ddb('0x3e')][_0x3ddb('0x43')](_0x36c300[_0x3ddb('0x44')],{})[_0x3ddb('0x22')](respondWithResult(_0x109287,0xc9))[_0x3ddb('0x45')](handleError(_0x109287,null));};exports[_0x3ddb('0x21')]=function(_0x2c34e7,_0x46aced){if(_0x2c34e7[_0x3ddb('0x44')]['id']){delete _0x2c34e7[_0x3ddb('0x44')]['id'];}return db[_0x3ddb('0x3e')]['find']({'where':{'id':_0x2c34e7[_0x3ddb('0x46')]['id']}})[_0x3ddb('0x22')](handleEntityNotFound(_0x46aced,null))[_0x3ddb('0x22')](saveUpdates(_0x2c34e7[_0x3ddb('0x44')],null))[_0x3ddb('0x22')](respondWithResult(_0x46aced,null))[_0x3ddb('0x45')](handleError(_0x46aced,null));};exports[_0x3ddb('0x23')]=function(_0x52adf4,_0x2f3f7d){return db[_0x3ddb('0x3e')][_0x3ddb('0x42')]({'where':{'id':_0x52adf4[_0x3ddb('0x46')]['id']}})[_0x3ddb('0x22')](handleEntityNotFound(_0x2f3f7d,null))[_0x3ddb('0x22')](removeEntity(_0x2f3f7d,null))[_0x3ddb('0x45')](handleError(_0x2f3f7d,null));};exports[_0x3ddb('0x47')]=function(_0x26641d,_0x5523a0,_0x36b0e2){var _0x3332e1={};var _0x3baa68={};var _0x1c3720;var _0x5be001;return db[_0x3ddb('0x3e')]['findOne']({'where':{'id':_0x26641d['params']['id']}})[_0x3ddb('0x22')](handleEntityNotFound(_0x5523a0,null))[_0x3ddb('0x22')](function(_0x4c7ef7){if(_0x4c7ef7){_0x1c3720=_0x4c7ef7;_0x3baa68[_0x3ddb('0x33')]=_[_0x3ddb('0x2f')](db['SalesforceConfiguration']['rawAttributes']);_0x3baa68[_0x3ddb('0x2e')]=_[_0x3ddb('0x2f')](_0x26641d[_0x3ddb('0x2e')]);_0x3baa68[_0x3ddb('0x30')]=_[_0x3ddb('0x31')](_0x3baa68['model'],_0x3baa68['query']);_0x3332e1[_0x3ddb('0x32')]=_[_0x3ddb('0x31')](_0x3baa68[_0x3ddb('0x33')],qs[_0x3ddb('0x34')](_0x26641d[_0x3ddb('0x2e')][_0x3ddb('0x34')]));_0x3332e1[_0x3ddb('0x32')]=_0x3332e1[_0x3ddb('0x32')][_0x3ddb('0x35')]?_0x3332e1[_0x3ddb('0x32')]:_0x3baa68[_0x3ddb('0x33')];_0x3332e1[_0x3ddb('0x38')]=qs['sort'](_0x26641d[_0x3ddb('0x2e')][_0x3ddb('0x39')]);_0x3332e1[_0x3ddb('0x3a')]=qs[_0x3ddb('0x30')](_[_0x3ddb('0x3b')](_0x26641d[_0x3ddb('0x2e')],_0x3baa68[_0x3ddb('0x30')]));if(_0x26641d['query'][_0x3ddb('0x3d')]){_0x3332e1[_0x3ddb('0x3a')]=_['merge'](_0x3332e1[_0x3ddb('0x3a')],{'$or':_[_0x3ddb('0x2a')](_0x3332e1[_0x3ddb('0x32')],function(_0x302538){var _0x48d1fa={};_0x48d1fa[_0x302538]={'$like':'%'+_0x26641d[_0x3ddb('0x2e')][_0x3ddb('0x3d')]+'%'};return _0x48d1fa;})});}_0x3332e1=_[_0x3ddb('0x3c')]({},_0x3332e1,_0x26641d[_0x3ddb('0x48')]);return _0x1c3720[_0x3ddb('0x47')](_0x3332e1);}})[_0x3ddb('0x22')](function(_0x4a4703){if(_0x4a4703){_0x5be001=_0x4a4703['length'];if(!_0x26641d[_0x3ddb('0x2e')][_0x3ddb('0x36')](_0x3ddb('0x37'))){_0x3332e1[_0x3ddb('0x1b')]=qs[_0x3ddb('0x1b')](_0x26641d[_0x3ddb('0x2e')]['limit']);_0x3332e1[_0x3ddb('0x18')]=qs[_0x3ddb('0x18')](_0x26641d[_0x3ddb('0x2e')]['offset']);}return _0x1c3720[_0x3ddb('0x47')](_0x3332e1);}})[_0x3ddb('0x22')](function(_0x2c337c){if(_0x2c337c){return _0x2c337c?{'count':_0x5be001,'rows':_0x2c337c}:null;}})[_0x3ddb('0x22')](respondWithResult(_0x5523a0,null))[_0x3ddb('0x45')](handleError(_0x5523a0,null));};exports[_0x3ddb('0x49')]=function(_0x43e506,_0x2e53b6,_0x2035fb){if(_0x43e506[_0x3ddb('0x44')]['id']){delete _0x43e506[_0x3ddb('0x44')]['id'];}return db[_0x3ddb('0x3e')][_0x3ddb('0x4a')]({'where':{'id':_0x43e506['params']['id']}})[_0x3ddb('0x22')](handleEntityNotFound(_0x2e53b6,null))[_0x3ddb('0x22')](function(_0x15425d){if(_0x15425d){_0x43e506[_0x3ddb('0x44')][_0x3ddb('0x4b')]=_0x15425d['id'];_0x43e506[_0x3ddb('0x44')][_0x3ddb('0x4c')]=integrations[_0x3ddb('0x4d')](_0x43e506['body'][_0x3ddb('0x4e')],_0x43e506['body']['type']);_0x43e506[_0x3ddb('0x44')][_0x3ddb('0x4f')]=integrations[_0x3ddb('0x50')](_0x43e506[_0x3ddb('0x44')][_0x3ddb('0x4e')],_0x43e506[_0x3ddb('0x44')]['type']);return db[_0x3ddb('0x51')]['create'](_0x43e506['body'],{'include':[{'model':db['SalesforceField'],'as':_0x3ddb('0x4c')},{'model':db[_0x3ddb('0x52')],'as':_0x3ddb('0x4f')}]});}return null;})[_0x3ddb('0x22')](respondWithResult(_0x2e53b6,null))[_0x3ddb('0x45')](handleError(_0x2e53b6,null));};exports[_0x3ddb('0x53')]=function(_0x3beebc,_0x575dea,_0xcc61f4){var _0x533059;var _0x5de0b1='';var _0x4fe24f=_0x3ddb('0x54');return db[_0x3ddb('0x3e')][_0x3ddb('0x4a')]({'where':{'id':_0x3beebc[_0x3ddb('0x46')]['id']},'attributes':['id','remoteUri',_0x3ddb('0x55'),_0x3ddb('0x56'),'username','password',_0x3ddb('0x57')]})[_0x3ddb('0x22')](handleEntityNotFound(_0x575dea,null))[_0x3ddb('0x22')](function(_0x26a1fa){if(_0x26a1fa){_0x5de0b1=_0x26a1fa[_0x3ddb('0x58')];var _0x338e74=_0x5de0b1[_0x3ddb('0x59')](-0x1);if(_0x338e74==='/'){_0x5de0b1=_0x5de0b1[_0x3ddb('0x5a')](0x0,_0x5de0b1[_0x3ddb('0x5b')](_0x338e74));}_0x533059=new jsforce['Connection']({'oauth2':{'loginUrl':_0x5de0b1,'clientId':_0x26a1fa[_0x3ddb('0x55')],'clientSecret':_0x26a1fa['clientSecret']}});return _0x533059[_0x3ddb('0x5c')](_0x26a1fa[_0x3ddb('0x5d')],_0x26a1fa[_0x3ddb('0x5e')][_0x3ddb('0x5f')](_0x26a1fa[_0x3ddb('0x57')]));}})[_0x3ddb('0x22')](function(_0xb1f661){if(_0xb1f661){if(!_[_0x3ddb('0x60')](_0x3beebc[_0x3ddb('0x2e')][_0x3ddb('0x61')])){_0x4fe24f=_0x3beebc[_0x3ddb('0x2e')][_0x3ddb('0x61')];}return _0x533059[_0x3ddb('0x62')](_0x4fe24f)[_0x3ddb('0x63')]();}})[_0x3ddb('0x22')](function(_0x5a6ca1){var _0x2ab57f=[_0x3ddb('0x64'),_0x3ddb('0x65'),_0x3ddb('0x66'),_0x3ddb('0x67'),'Subject',_0x3ddb('0x68')];var _0x54f63d=[_0x3ddb('0x69'),_0x3ddb('0x6a'),_0x3ddb('0x6b'),_0x3ddb('0x6c'),_0x3ddb('0x6d'),_0x3ddb('0x6e'),'phone'];if(_0x5a6ca1){_[_0x3ddb('0x6f')](_0x5a6ca1[_0x3ddb('0x34')],function(_0x2cee06){return _0x2ab57f[_0x3ddb('0x70')](_0x2cee06[_0x3ddb('0x27')])||!_0x54f63d[_0x3ddb('0x70')](_0x2cee06[_0x3ddb('0x2d')]);});return{'count':_0x5a6ca1[_0x3ddb('0x34')]['length'],'rows':_[_0x3ddb('0x2a')](_0x5a6ca1[_0x3ddb('0x34')],function(_0x495222){return{'id':_0x495222[_0x3ddb('0x27')],'name':_0x495222[_0x3ddb('0x71')],'custom':_0x495222[_0x3ddb('0x72')],'options':_0x495222[_0x3ddb('0x73')]['length']>0x0?_[_0x3ddb('0x2a')](_0x495222[_0x3ddb('0x73')],function(_0x5dffbd){return{'name':_0x5dffbd['label'],'value':_0x5dffbd[_0x3ddb('0x74')]};}):_0x495222[_0x3ddb('0x2d')]==_0x3ddb('0x6c')?[{'name':_0x3ddb('0x75'),'value':_0x3ddb('0x76')},{'name':'False','value':_0x3ddb('0x77')}]:[]};})};}})['then'](respondWithResult(_0x575dea,null))[_0x3ddb('0x45')](function(_0x345c33){var _0x4ab950=_0x3beebc[_0x3ddb('0x2e')][_0x3ddb('0x78')]?0x1f4:_0x345c33[_0x3ddb('0x79')]||0x1f4;logger[_0x3ddb('0x25')]('getFields,\x20%s,\x20%s,\x20%s',_0x3ddb('0x53'),_0x4ab950,JSON[_0x3ddb('0x7a')](_0x345c33));delete _0x345c33[_0x3ddb('0x27')];if(_0x4ab950===0x191){_0x4ab950=0x190;}_0x575dea[_0x3ddb('0x16')](_0x4ab950)[_0x3ddb('0x28')](_0x3beebc[_0x3ddb('0x2e')][_0x3ddb('0x78')]?{'message':_0x3ddb('0x7b'),'statusCode':_0x345c33['statusCode']}:_0x345c33);});};
\ No newline at end of file
+var _0x6e92=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','error','stack','name','map','SalesforceAccount','rawAttributes','fieldName','type','key','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','include','catch','show','options','create','body','destroy','find','params','getConfigurations','findOne','SalesforceConfiguration','Subjects','channel','Descriptions','getDescriptions','getFields','Task','clientId','clientSecret','username','securityToken','remoteUri','slice','substring','lastIndexOf','Connection','login','password','concat','ticketType','sobject','describe','OwnerId','IsReminderSet','IsRecurrence','Description','string','boolean','email','textarea','remove','includes','label','custom','picklistValues','value','True','true','False','false','statusCode','send','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0xa161ca,_0x387006){var _0x2197c1=function(_0x4a535c){while(--_0x4a535c){_0xa161ca['push'](_0xa161ca['shift']());}};_0x2197c1(++_0x387006);}(_0x6e92,0x16d));var _0x26e9=function(_0xacabb,_0x1fbcd9){_0xacabb=_0xacabb-0x0;var _0x2b4a14=_0x6e92[_0xacabb];return _0x2b4a14;};'use strict';var emlformat=require(_0x26e9('0x0'));var rimraf=require(_0x26e9('0x1'));var zipdir=require(_0x26e9('0x2'));var jsonpatch=require(_0x26e9('0x3'));var rp=require(_0x26e9('0x4'));var moment=require(_0x26e9('0x5'));var BPromise=require(_0x26e9('0x6'));var Mustache=require(_0x26e9('0x7'));var util=require(_0x26e9('0x8'));var path=require(_0x26e9('0x9'));var sox=require(_0x26e9('0xa'));var csv=require(_0x26e9('0xb'));var ejs=require(_0x26e9('0xc'));var fs=require('fs');var fs_extra=require(_0x26e9('0xd'));var _=require(_0x26e9('0xe'));var squel=require(_0x26e9('0xf'));var crypto=require(_0x26e9('0x10'));var jsforce=require(_0x26e9('0x11'));var deskjs=require(_0x26e9('0x12'));var toCsv=require(_0x26e9('0xb'));var querystring=require(_0x26e9('0x13'));var Papa=require('papaparse');var Redis=require(_0x26e9('0x14'));var authService=require(_0x26e9('0x15'));var qs=require(_0x26e9('0x16'));var as=require(_0x26e9('0x17'));var hardwareService=require(_0x26e9('0x18'));var logger=require(_0x26e9('0x19'))(_0x26e9('0x1a'));var utils=require(_0x26e9('0x1b'));var config=require(_0x26e9('0x1c'));var licenseUtil=require(_0x26e9('0x1d'));var db=require(_0x26e9('0x1e'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x127668,_0x767b26){_0x767b26=_0x767b26||0xcc;return function(_0x2441bf){if(_0x2441bf){return _0x127668[_0x26e9('0x1f')](_0x767b26);}return _0x127668[_0x26e9('0x20')](_0x767b26)['end']();};}function respondWithResult(_0x1fa416,_0x33f561){_0x33f561=_0x33f561||0xc8;return function(_0x23483e){if(_0x23483e){return _0x1fa416['status'](_0x33f561)['json'](_0x23483e);}};}function respondWithFilteredResult(_0x223f46,_0x7eaad1){return function(_0x3a9394){if(_0x3a9394){var _0x357bfa=typeof _0x7eaad1[_0x26e9('0x21')]===_0x26e9('0x22')&&typeof _0x7eaad1[_0x26e9('0x23')]===_0x26e9('0x22');var _0x2a52fa=_0x3a9394[_0x26e9('0x24')];var _0x13ef2b=_0x357bfa?0x0:_0x7eaad1['offset'];var _0x43db90=_0x357bfa?_0x3a9394[_0x26e9('0x24')]:_0x7eaad1[_0x26e9('0x21')]+_0x7eaad1[_0x26e9('0x23')];var _0x179d34;if(_0x43db90>=_0x2a52fa){_0x43db90=_0x2a52fa;_0x179d34=0xc8;}else{_0x179d34=0xce;}_0x223f46[_0x26e9('0x20')](_0x179d34);return _0x223f46[_0x26e9('0x25')](_0x26e9('0x26'),_0x13ef2b+'-'+_0x43db90+'/'+_0x2a52fa)[_0x26e9('0x27')](_0x3a9394);}return null;};}function patchUpdates(_0x3c37d3){return function(_0x2b8af9){try{jsonpatch[_0x26e9('0x28')](_0x2b8af9,_0x3c37d3,!![]);}catch(_0x43aed0){return BPromise[_0x26e9('0x29')](_0x43aed0);}return _0x2b8af9['save']();};}function saveUpdates(_0x337106,_0xe2e365){return function(_0x15b7d4){if(_0x15b7d4){return _0x15b7d4[_0x26e9('0x2a')](_0x337106)['then'](function(_0x376a94){return _0x376a94;});}return null;};}function removeEntity(_0x47fd25,_0xd04145){return function(_0x21c5c7){if(_0x21c5c7){return _0x21c5c7['destroy']()[_0x26e9('0x2b')](function(){_0x47fd25[_0x26e9('0x20')](0xcc)[_0x26e9('0x2c')]();});}};}function handleEntityNotFound(_0x583b4c,_0x1e894b){return function(_0x2c40b3){if(!_0x2c40b3){_0x583b4c['sendStatus'](0x194);}return _0x2c40b3;};}function handleError(_0x3d266b,_0x41adf4){_0x41adf4=_0x41adf4||0x1f4;return function(_0x464eec){logger[_0x26e9('0x2d')](_0x464eec[_0x26e9('0x2e')]);if(_0x464eec[_0x26e9('0x2f')]){delete _0x464eec['name'];}_0x3d266b['status'](_0x41adf4)['send'](_0x464eec);};}exports['index']=function(_0x593a37,_0x49bb1f){var _0x2a2639={},_0x1fc56d={},_0xf14ce2={'count':0x0,'rows':[]};var _0x3d5af4=_[_0x26e9('0x30')](db[_0x26e9('0x31')][_0x26e9('0x32')],function(_0x5c1d6e){return{'name':_0x5c1d6e[_0x26e9('0x33')],'type':_0x5c1d6e[_0x26e9('0x34')][_0x26e9('0x35')]};});_0x1fc56d['model']=_['map'](_0x3d5af4,_0x26e9('0x2f'));_0x1fc56d[_0x26e9('0x36')]=_[_0x26e9('0x37')](_0x593a37['query']);_0x1fc56d[_0x26e9('0x38')]=_['intersection'](_0x1fc56d[_0x26e9('0x39')],_0x1fc56d[_0x26e9('0x36')]);_0x2a2639['attributes']=_[_0x26e9('0x3a')](_0x1fc56d['model'],qs[_0x26e9('0x3b')](_0x593a37[_0x26e9('0x36')]['fields']));_0x2a2639[_0x26e9('0x3c')]=_0x2a2639[_0x26e9('0x3c')][_0x26e9('0x3d')]?_0x2a2639[_0x26e9('0x3c')]:_0x1fc56d[_0x26e9('0x39')];if(!_0x593a37[_0x26e9('0x36')][_0x26e9('0x3e')](_0x26e9('0x3f'))){_0x2a2639[_0x26e9('0x23')]=qs[_0x26e9('0x23')](_0x593a37['query'][_0x26e9('0x23')]);_0x2a2639[_0x26e9('0x21')]=qs[_0x26e9('0x21')](_0x593a37[_0x26e9('0x36')]['offset']);}_0x2a2639[_0x26e9('0x40')]=qs[_0x26e9('0x41')](_0x593a37['query'][_0x26e9('0x41')]);_0x2a2639['where']=qs['filters'](_[_0x26e9('0x42')](_0x593a37['query'],_0x1fc56d[_0x26e9('0x38')]),_0x3d5af4);if(_0x593a37[_0x26e9('0x36')][_0x26e9('0x43')]){_0x2a2639['where']=_[_0x26e9('0x44')](_0x2a2639[_0x26e9('0x45')],{'$or':_[_0x26e9('0x30')](_0x3d5af4,function(_0x472eea){if(_0x472eea[_0x26e9('0x34')]!=='VIRTUAL'){var _0xde2556={};_0xde2556[_0x472eea[_0x26e9('0x2f')]]={'$like':'%'+_0x593a37['query']['filter']+'%'};return _0xde2556;}})});}_0x2a2639=_[_0x26e9('0x44')]({},_0x2a2639,_0x593a37['options']);var _0x2576eb={'where':_0x2a2639[_0x26e9('0x45')]};return db[_0x26e9('0x31')][_0x26e9('0x24')](_0x2576eb)[_0x26e9('0x2b')](function(_0x2a734e){_0xf14ce2[_0x26e9('0x24')]=_0x2a734e;if(_0x593a37[_0x26e9('0x36')]['includeAll']){_0x2a2639[_0x26e9('0x46')]=[{'all':!![]}];}return db[_0x26e9('0x31')]['findAll'](_0x2a2639);})[_0x26e9('0x2b')](function(_0x3da4fa){_0xf14ce2['rows']=_0x3da4fa;return _0xf14ce2;})['then'](respondWithFilteredResult(_0x49bb1f,_0x2a2639))[_0x26e9('0x47')](handleError(_0x49bb1f,null));};exports[_0x26e9('0x48')]=function(_0x4c64c6,_0x8739f7){var _0x451337={'raw':![],'where':{'id':_0x4c64c6['params']['id']}},_0x43413c={};_0x43413c['model']=_[_0x26e9('0x37')](db[_0x26e9('0x31')][_0x26e9('0x32')]);_0x43413c[_0x26e9('0x36')]=_[_0x26e9('0x37')](_0x4c64c6[_0x26e9('0x36')]);_0x43413c[_0x26e9('0x38')]=_[_0x26e9('0x3a')](_0x43413c['model'],_0x43413c[_0x26e9('0x36')]);_0x451337['attributes']=_[_0x26e9('0x3a')](_0x43413c['model'],qs['fields'](_0x4c64c6[_0x26e9('0x36')][_0x26e9('0x3b')]));_0x451337[_0x26e9('0x3c')]=_0x451337[_0x26e9('0x3c')][_0x26e9('0x3d')]?_0x451337[_0x26e9('0x3c')]:_0x43413c[_0x26e9('0x39')];if(_0x4c64c6['query']['includeAll']){_0x451337['include']=[{'all':!![]}];}_0x451337=_[_0x26e9('0x44')]({},_0x451337,_0x4c64c6[_0x26e9('0x49')]);return db[_0x26e9('0x31')]['find'](_0x451337)['then'](handleEntityNotFound(_0x8739f7,null))[_0x26e9('0x2b')](respondWithResult(_0x8739f7,null))[_0x26e9('0x47')](handleError(_0x8739f7,null));};exports[_0x26e9('0x4a')]=function(_0x3b343c,_0x36d9f2){return db['SalesforceAccount'][_0x26e9('0x4a')](_0x3b343c[_0x26e9('0x4b')],{})[_0x26e9('0x2b')](respondWithResult(_0x36d9f2,0xc9))[_0x26e9('0x47')](handleError(_0x36d9f2,null));};exports[_0x26e9('0x2a')]=function(_0x1d4986,_0x145173){if(_0x1d4986[_0x26e9('0x4b')]['id']){delete _0x1d4986['body']['id'];}return db['SalesforceAccount']['find']({'where':{'id':_0x1d4986['params']['id']}})['then'](handleEntityNotFound(_0x145173,null))['then'](saveUpdates(_0x1d4986[_0x26e9('0x4b')],null))['then'](respondWithResult(_0x145173,null))[_0x26e9('0x47')](handleError(_0x145173,null));};exports[_0x26e9('0x4c')]=function(_0x1d6aa6,_0x111cf4){return db[_0x26e9('0x31')][_0x26e9('0x4d')]({'where':{'id':_0x1d6aa6[_0x26e9('0x4e')]['id']}})['then'](handleEntityNotFound(_0x111cf4,null))[_0x26e9('0x2b')](removeEntity(_0x111cf4,null))[_0x26e9('0x47')](handleError(_0x111cf4,null));};exports[_0x26e9('0x4f')]=function(_0x9f5e90,_0x26e3ea,_0x9d7ca3){var _0x1a5e52={};var _0x5a5016={};var _0x336969;var _0x125e2e;return db[_0x26e9('0x31')][_0x26e9('0x50')]({'where':{'id':_0x9f5e90[_0x26e9('0x4e')]['id']}})[_0x26e9('0x2b')](handleEntityNotFound(_0x26e3ea,null))[_0x26e9('0x2b')](function(_0x599c79){if(_0x599c79){_0x336969=_0x599c79;_0x5a5016[_0x26e9('0x39')]=_[_0x26e9('0x37')](db[_0x26e9('0x51')][_0x26e9('0x32')]);_0x5a5016['query']=_['keys'](_0x9f5e90['query']);_0x5a5016[_0x26e9('0x38')]=_['intersection'](_0x5a5016[_0x26e9('0x39')],_0x5a5016[_0x26e9('0x36')]);_0x1a5e52['attributes']=_[_0x26e9('0x3a')](_0x5a5016[_0x26e9('0x39')],qs[_0x26e9('0x3b')](_0x9f5e90['query'][_0x26e9('0x3b')]));_0x1a5e52[_0x26e9('0x3c')]=_0x1a5e52[_0x26e9('0x3c')][_0x26e9('0x3d')]?_0x1a5e52[_0x26e9('0x3c')]:_0x5a5016[_0x26e9('0x39')];_0x1a5e52[_0x26e9('0x40')]=qs['sort'](_0x9f5e90[_0x26e9('0x36')]['sort']);_0x1a5e52[_0x26e9('0x45')]=qs['filters'](_['pick'](_0x9f5e90['query'],_0x5a5016[_0x26e9('0x38')]));if(_0x9f5e90[_0x26e9('0x36')][_0x26e9('0x43')]){_0x1a5e52[_0x26e9('0x45')]=_[_0x26e9('0x44')](_0x1a5e52['where'],{'$or':_[_0x26e9('0x30')](_0x1a5e52[_0x26e9('0x3c')],function(_0x3b5bf6){var _0x33beea={};_0x33beea[_0x3b5bf6]={'$like':'%'+_0x9f5e90['query']['filter']+'%'};return _0x33beea;})});}_0x1a5e52=_[_0x26e9('0x44')]({},_0x1a5e52,_0x9f5e90[_0x26e9('0x49')]);return _0x336969[_0x26e9('0x4f')](_0x1a5e52);}})[_0x26e9('0x2b')](function(_0x5e4016){if(_0x5e4016){_0x125e2e=_0x5e4016[_0x26e9('0x3d')];if(!_0x9f5e90[_0x26e9('0x36')]['hasOwnProperty'](_0x26e9('0x3f'))){_0x1a5e52[_0x26e9('0x23')]=qs[_0x26e9('0x23')](_0x9f5e90[_0x26e9('0x36')][_0x26e9('0x23')]);_0x1a5e52[_0x26e9('0x21')]=qs['offset'](_0x9f5e90[_0x26e9('0x36')][_0x26e9('0x21')]);}return _0x336969[_0x26e9('0x4f')](_0x1a5e52);}})[_0x26e9('0x2b')](function(_0x54def3){if(_0x54def3){return _0x54def3?{'count':_0x125e2e,'rows':_0x54def3}:null;}})['then'](respondWithResult(_0x26e3ea,null))[_0x26e9('0x47')](handleError(_0x26e3ea,null));};exports['addConfiguration']=function(_0x43ea1c,_0x3d5d34,_0x2769b9){if(_0x43ea1c[_0x26e9('0x4b')]['id']){delete _0x43ea1c[_0x26e9('0x4b')]['id'];}return db[_0x26e9('0x31')][_0x26e9('0x50')]({'where':{'id':_0x43ea1c[_0x26e9('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3d5d34,null))[_0x26e9('0x2b')](function(_0x406d25){if(_0x406d25){_0x43ea1c[_0x26e9('0x4b')]['AccountId']=_0x406d25['id'];_0x43ea1c[_0x26e9('0x4b')][_0x26e9('0x52')]=integrations['getSubjects'](_0x43ea1c[_0x26e9('0x4b')][_0x26e9('0x53')],_0x43ea1c[_0x26e9('0x4b')][_0x26e9('0x34')]);_0x43ea1c[_0x26e9('0x4b')][_0x26e9('0x54')]=integrations[_0x26e9('0x55')](_0x43ea1c[_0x26e9('0x4b')]['channel'],_0x43ea1c[_0x26e9('0x4b')][_0x26e9('0x34')]);return db[_0x26e9('0x51')][_0x26e9('0x4a')](_0x43ea1c[_0x26e9('0x4b')],{'include':[{'model':db['SalesforceField'],'as':_0x26e9('0x52')},{'model':db['SalesforceField'],'as':_0x26e9('0x54')}]});}return null;})[_0x26e9('0x2b')](respondWithResult(_0x3d5d34,null))['catch'](handleError(_0x3d5d34,null));};exports[_0x26e9('0x56')]=function(_0x1a273b,_0x2a4100,_0x36218d){var _0x2a7fb0;var _0x489e75='';var _0x3d5001=_0x26e9('0x57');return db[_0x26e9('0x31')]['findOne']({'where':{'id':_0x1a273b[_0x26e9('0x4e')]['id']},'attributes':['id','remoteUri',_0x26e9('0x58'),_0x26e9('0x59'),_0x26e9('0x5a'),'password',_0x26e9('0x5b')]})['then'](handleEntityNotFound(_0x2a4100,null))[_0x26e9('0x2b')](function(_0x5998a7){if(_0x5998a7){_0x489e75=_0x5998a7[_0x26e9('0x5c')];var _0x518950=_0x489e75[_0x26e9('0x5d')](-0x1);if(_0x518950==='/'){_0x489e75=_0x489e75[_0x26e9('0x5e')](0x0,_0x489e75[_0x26e9('0x5f')](_0x518950));}_0x2a7fb0=new jsforce[(_0x26e9('0x60'))]({'oauth2':{'loginUrl':_0x489e75,'clientId':_0x5998a7[_0x26e9('0x58')],'clientSecret':_0x5998a7[_0x26e9('0x59')]}});return _0x2a7fb0[_0x26e9('0x61')](_0x5998a7[_0x26e9('0x5a')],_0x5998a7[_0x26e9('0x62')][_0x26e9('0x63')](_0x5998a7['securityToken']));}})[_0x26e9('0x2b')](function(_0x356b63){if(_0x356b63){if(!_['isNil'](_0x1a273b[_0x26e9('0x36')][_0x26e9('0x64')])){_0x3d5001=_0x1a273b[_0x26e9('0x36')][_0x26e9('0x64')];}return _0x2a7fb0[_0x26e9('0x65')](_0x3d5001)[_0x26e9('0x66')]();}})[_0x26e9('0x2b')](function(_0x4f4948){var _0x27bdbb=[_0x26e9('0x67'),'ActivityDate',_0x26e9('0x68'),_0x26e9('0x69'),'Subject',_0x26e9('0x6a')];var _0x51d341=[_0x26e9('0x6b'),'int','picklist',_0x26e9('0x6c'),_0x26e9('0x6d'),_0x26e9('0x6e'),'phone'];if(_0x4f4948){_[_0x26e9('0x6f')](_0x4f4948[_0x26e9('0x3b')],function(_0x5dd397){return _0x27bdbb[_0x26e9('0x70')](_0x5dd397[_0x26e9('0x2f')])||!_0x51d341[_0x26e9('0x70')](_0x5dd397['type']);});return{'count':_0x4f4948[_0x26e9('0x3b')][_0x26e9('0x3d')],'rows':_['map'](_0x4f4948[_0x26e9('0x3b')],function(_0x3e7e1d){return{'id':_0x3e7e1d[_0x26e9('0x2f')],'name':_0x3e7e1d[_0x26e9('0x71')],'custom':_0x3e7e1d[_0x26e9('0x72')],'options':_0x3e7e1d[_0x26e9('0x73')][_0x26e9('0x3d')]>0x0?_[_0x26e9('0x30')](_0x3e7e1d['picklistValues'],function(_0x4787ba){return{'name':_0x4787ba['label'],'value':_0x4787ba[_0x26e9('0x74')]};}):_0x3e7e1d['type']==_0x26e9('0x6c')?[{'name':_0x26e9('0x75'),'value':_0x26e9('0x76')},{'name':_0x26e9('0x77'),'value':_0x26e9('0x78')}]:[]};})};}})[_0x26e9('0x2b')](respondWithResult(_0x2a4100,null))[_0x26e9('0x47')](function(_0x5bda66){var _0x486448=_0x1a273b[_0x26e9('0x36')]['test']?0x1f4:_0x5bda66[_0x26e9('0x79')]||0x1f4;logger[_0x26e9('0x2d')]('getFields,\x20%s,\x20%s,\x20%s',_0x26e9('0x56'),_0x486448,JSON['stringify'](_0x5bda66));delete _0x5bda66[_0x26e9('0x2f')];if(_0x486448===0x191){_0x486448=0x190;}_0x2a4100[_0x26e9('0x20')](_0x486448)[_0x26e9('0x7a')](_0x1a273b['query'][_0x26e9('0x7b')]?{'message':_0x26e9('0x7c'),'statusCode':_0x5bda66['statusCode']}:_0x5bda66);});};
\ No newline at end of file
index af5eb3f..149b0c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c57=['../../components/integrations/configuration','define','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment'];(function(_0x1dca87,_0x2435b3){var _0x521ffa=function(_0x56f0ca){while(--_0x56f0ca){_0x1dca87['push'](_0x1dca87['shift']());}};_0x521ffa(++_0x2435b3);}(_0x1c57,0xf5));var _0x71c5=function(_0x28d4a7,_0x2cd31d){_0x28d4a7=_0x28d4a7-0x0;var _0x7ac70b=_0x1c57[_0x28d4a7];return _0x7ac70b;};'use strict';var _=require(_0x71c5('0x0'));var util=require('util');var logger=require(_0x71c5('0x1'))(_0x71c5('0x2'));var moment=require('moment');var BPromise=require(_0x71c5('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x71c5('0x4'));var rimraf=require(_0x71c5('0x5'));var config=require(_0x71c5('0x6'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0x71c5('0x7'));module['exports']=function(_0xa0ff77,_0x2d9d78){return _0xa0ff77[_0x71c5('0x8')]('SalesforceAccount',attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4e37=['rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','SalesforceAccount','int_salesforce_accounts','lodash','moment','bluebird','request-promise'];(function(_0x18a229,_0x3c2dfd){var _0x1237a2=function(_0x32204a){while(--_0x32204a){_0x18a229['push'](_0x18a229['shift']());}};_0x1237a2(++_0x3c2dfd);}(_0x4e37,0xd8));var _0x74e3=function(_0x4a3b28,_0x41fc7c){_0x4a3b28=_0x4a3b28-0x0;var _0x394c74=_0x4e37[_0x4a3b28];return _0x394c74;};'use strict';var _=require(_0x74e3('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x74e3('0x1'));var BPromise=require(_0x74e3('0x2'));var rp=require(_0x74e3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x74e3('0x4'));var config=require(_0x74e3('0x5'));var attributes=require(_0x74e3('0x6'));var integrations=require(_0x74e3('0x7'));module[_0x74e3('0x8')]=function(_0x8c2f4c,_0x4ef4a5){return _0x8c2f4c['define'](_0x74e3('0x9'),attributes,{'tableName':_0x74e3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e8552db..6768078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f9b=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowSalesforceAccount','find','lodash','randomstring'];(function(_0x230bed,_0x44f86c){var _0x17f4b0=function(_0x2d0f59){while(--_0x2d0f59){_0x230bed['push'](_0x230bed['shift']());}};_0x17f4b0(++_0x44f86c);}(_0x2f9b,0x1b8));var _0xb2f9=function(_0x7ec41,_0x3b5c36){_0x7ec41=_0x7ec41-0x0;var _0x48c58e=_0x2f9b[_0x7ec41];return _0x48c58e;};'use strict';var _=require(_0xb2f9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb2f9('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb2f9('0x2'))['db'];var utils=require(_0xb2f9('0x3'));var logger=require(_0xb2f9('0x4'))(_0xb2f9('0x5'));var config=require(_0xb2f9('0x6'));var jayson=require(_0xb2f9('0x7'));var client=jayson[_0xb2f9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x50abf9,_0x2bd682,_0x35bd9c){return new BPromise(function(_0x204e3d,_0x4dc252){return client['request'](_0x50abf9,_0x35bd9c)[_0xb2f9('0x9')](function(_0x3ac88e){logger[_0xb2f9('0xa')](_0xb2f9('0xb'),_0x2bd682,_0xb2f9('0xc'));logger['debug'](_0xb2f9('0xd'),_0x2bd682,_0xb2f9('0xc'),JSON[_0xb2f9('0xe')](_0x3ac88e));if(_0x3ac88e[_0xb2f9('0xf')]){if(_0x3ac88e[_0xb2f9('0xf')][_0xb2f9('0x10')]===0x1f4){logger[_0xb2f9('0xf')](_0xb2f9('0xb'),_0x2bd682,_0x3ac88e['error']['message']);return _0x4dc252(_0x3ac88e[_0xb2f9('0xf')][_0xb2f9('0x11')]);}logger[_0xb2f9('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x2bd682,_0x3ac88e[_0xb2f9('0xf')][_0xb2f9('0x11')]);return _0x204e3d(_0x3ac88e[_0xb2f9('0xf')][_0xb2f9('0x11')]);}else{logger[_0xb2f9('0xa')]('SalesforceAccount,\x20%s,\x20%s',_0x2bd682,_0xb2f9('0xc'));_0x204e3d(_0x3ac88e[_0xb2f9('0x12')]['message']);}})[_0xb2f9('0x13')](function(_0x48989c){logger[_0xb2f9('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x2bd682,_0x48989c);_0x4dc252(_0x48989c);});});}exports[_0xb2f9('0x14')]=function(_0x1a5d6f){var _0x348d00=this;return new Promise(function(_0x28957f,_0x3319b9){return db[_0xb2f9('0x15')][_0xb2f9('0x16')]({'raw':_0x1a5d6f['options']?_0x1a5d6f[_0xb2f9('0x17')][_0xb2f9('0x18')]===undefined?!![]:![]:!![],'where':_0x1a5d6f['options']?_0x1a5d6f[_0xb2f9('0x17')][_0xb2f9('0x19')]||null:null,'attributes':_0x1a5d6f['options']?_0x1a5d6f[_0xb2f9('0x17')][_0xb2f9('0x1a')]||null:null,'limit':_0x1a5d6f[_0xb2f9('0x17')]?_0x1a5d6f['options'][_0xb2f9('0x1b')]||null:null,'include':_0x1a5d6f[_0xb2f9('0x17')]?_0x1a5d6f[_0xb2f9('0x17')][_0xb2f9('0x1c')]?_[_0xb2f9('0x1d')](_0x1a5d6f['options']['include'],function(_0x3fa19a){return{'model':db[_0x3fa19a['model']],'as':_0x3fa19a['as'],'attributes':_0x3fa19a[_0xb2f9('0x1a')],'include':_0x3fa19a[_0xb2f9('0x1c')]?_[_0xb2f9('0x1d')](_0x3fa19a[_0xb2f9('0x1c')],function(_0x2c5eca){return{'model':db[_0x2c5eca[_0xb2f9('0x1e')]],'as':_0x2c5eca['as'],'attributes':_0x2c5eca[_0xb2f9('0x1a')],'include':_0x2c5eca[_0xb2f9('0x1c')]?_[_0xb2f9('0x1d')](_0x2c5eca['include'],function(_0x266815){return{'model':db[_0x266815[_0xb2f9('0x1e')]],'as':_0x266815['as'],'attributes':_0x266815[_0xb2f9('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4ee3a9){logger[_0xb2f9('0xa')](_0xb2f9('0x14'),_0x1a5d6f);logger[_0xb2f9('0x1f')]('GetSalesforceAccount',_0x1a5d6f,JSON['stringify'](_0x4ee3a9));_0x28957f(_0x4ee3a9);})['catch'](function(_0x10f267){logger[_0xb2f9('0xf')]('GetSalesforceAccount',_0x10f267[_0xb2f9('0x11')],_0x1a5d6f);_0x3319b9(_0x348d00[_0xb2f9('0xf')](0x1f4,_0x10f267[_0xb2f9('0x11')]));});});};exports[_0xb2f9('0x20')]=function(_0x33f4ea){var _0x49e893=this;return new Promise(function(_0x338d63,_0x53a6a8){return db[_0xb2f9('0x15')][_0xb2f9('0x21')]({'raw':_0x33f4ea[_0xb2f9('0x17')]?_0x33f4ea[_0xb2f9('0x17')][_0xb2f9('0x18')]===undefined?!![]:![]:!![],'where':_0x33f4ea[_0xb2f9('0x17')]?_0x33f4ea[_0xb2f9('0x17')][_0xb2f9('0x19')]||null:null,'attributes':_0x33f4ea[_0xb2f9('0x17')]?_0x33f4ea[_0xb2f9('0x17')]['attributes']||null:null,'include':_0x33f4ea[_0xb2f9('0x17')]?_0x33f4ea[_0xb2f9('0x17')][_0xb2f9('0x1c')]?_[_0xb2f9('0x1d')](_0x33f4ea[_0xb2f9('0x17')]['include'],function(_0x1974b6){return{'model':db[_0x1974b6[_0xb2f9('0x1e')]],'as':_0x1974b6['as'],'attributes':_0x1974b6[_0xb2f9('0x1a')],'include':_0x1974b6[_0xb2f9('0x1c')]?_['map'](_0x1974b6[_0xb2f9('0x1c')],function(_0x1a7d58){return{'model':db[_0x1a7d58[_0xb2f9('0x1e')]],'as':_0x1a7d58['as'],'attributes':_0x1a7d58[_0xb2f9('0x1a')],'include':_0x1a7d58[_0xb2f9('0x1c')]?_['map'](_0x1a7d58['include'],function(_0x2e62cd){return{'model':db[_0x2e62cd[_0xb2f9('0x1e')]],'as':_0x2e62cd['as'],'attributes':_0x2e62cd[_0xb2f9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb2f9('0x9')](function(_0x31ac45){logger[_0xb2f9('0xa')](_0xb2f9('0x20'),_0x33f4ea);logger[_0xb2f9('0x1f')](_0xb2f9('0x20'),_0x33f4ea,JSON[_0xb2f9('0xe')](_0x31ac45));_0x338d63(_0x31ac45);})['catch'](function(_0x151bed){logger[_0xb2f9('0xf')](_0xb2f9('0x20'),_0x151bed[_0xb2f9('0x11')],_0x33f4ea);_0x53a6a8(_0x49e893[_0xb2f9('0xf')](0x1f4,_0x151bed[_0xb2f9('0x11')]));});});};
\ No newline at end of file
+var _0xadbb=['include','map','model','stringify','catch','SalesforceAccount','ShowSalesforceAccount','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','GetSalesforceAccount','findAll','options','where','attributes','limit'];(function(_0x1ac495,_0x2d0989){var _0xf8490b=function(_0x4b718c){while(--_0x4b718c){_0x1ac495['push'](_0x1ac495['shift']());}};_0xf8490b(++_0x2d0989);}(_0xadbb,0x97));var _0xbadb=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xadbb[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xbadb('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xbadb('0x1'));var rs=require(_0xbadb('0x2'));var fs=require('fs');var Redis=require(_0xbadb('0x3'));var db=require(_0xbadb('0x4'))['db'];var utils=require(_0xbadb('0x5'));var logger=require(_0xbadb('0x6'))(_0xbadb('0x7'));var config=require(_0xbadb('0x8'));var jayson=require(_0xbadb('0x9'));var client=jayson[_0xbadb('0xa')][_0xbadb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12e390,_0x431db8,_0x1e54ca){return new BPromise(function(_0x5e7830,_0xd23c3a){return client[_0xbadb('0xc')](_0x12e390,_0x1e54ca)[_0xbadb('0xd')](function(_0x52185d){logger[_0xbadb('0xe')](_0xbadb('0xf'),_0x431db8,_0xbadb('0x10'));logger[_0xbadb('0x11')](_0xbadb('0x12'),_0x431db8,_0xbadb('0x10'),JSON['stringify'](_0x52185d));if(_0x52185d['error']){if(_0x52185d[_0xbadb('0x13')][_0xbadb('0x14')]===0x1f4){logger[_0xbadb('0x13')](_0xbadb('0xf'),_0x431db8,_0x52185d['error'][_0xbadb('0x15')]);return _0xd23c3a(_0x52185d[_0xbadb('0x13')][_0xbadb('0x15')]);}logger[_0xbadb('0x13')](_0xbadb('0xf'),_0x431db8,_0x52185d[_0xbadb('0x13')][_0xbadb('0x15')]);return _0x5e7830(_0x52185d[_0xbadb('0x13')]['message']);}else{logger[_0xbadb('0xe')](_0xbadb('0xf'),_0x431db8,_0xbadb('0x10'));_0x5e7830(_0x52185d[_0xbadb('0x16')][_0xbadb('0x15')]);}})['catch'](function(_0xbc3143){logger[_0xbadb('0x13')](_0xbadb('0xf'),_0x431db8,_0xbc3143);_0xd23c3a(_0xbc3143);});});}exports[_0xbadb('0x17')]=function(_0x5ae0c6){var _0x505c85=this;return new Promise(function(_0xa77dea,_0xfc94d5){return db['SalesforceAccount'][_0xbadb('0x18')]({'raw':_0x5ae0c6['options']?_0x5ae0c6[_0xbadb('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x5ae0c6[_0xbadb('0x19')]?_0x5ae0c6['options'][_0xbadb('0x1a')]||null:null,'attributes':_0x5ae0c6[_0xbadb('0x19')]?_0x5ae0c6[_0xbadb('0x19')][_0xbadb('0x1b')]||null:null,'limit':_0x5ae0c6[_0xbadb('0x19')]?_0x5ae0c6['options'][_0xbadb('0x1c')]||null:null,'include':_0x5ae0c6[_0xbadb('0x19')]?_0x5ae0c6['options'][_0xbadb('0x1d')]?_[_0xbadb('0x1e')](_0x5ae0c6[_0xbadb('0x19')][_0xbadb('0x1d')],function(_0x51bdf4){return{'model':db[_0x51bdf4[_0xbadb('0x1f')]],'as':_0x51bdf4['as'],'attributes':_0x51bdf4[_0xbadb('0x1b')],'include':_0x51bdf4['include']?_['map'](_0x51bdf4[_0xbadb('0x1d')],function(_0xd68974){return{'model':db[_0xd68974[_0xbadb('0x1f')]],'as':_0xd68974['as'],'attributes':_0xd68974['attributes'],'include':_0xd68974[_0xbadb('0x1d')]?_[_0xbadb('0x1e')](_0xd68974[_0xbadb('0x1d')],function(_0x1f54f9){return{'model':db[_0x1f54f9[_0xbadb('0x1f')]],'as':_0x1f54f9['as'],'attributes':_0x1f54f9[_0xbadb('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbadb('0xd')](function(_0x596216){logger[_0xbadb('0xe')](_0xbadb('0x17'),_0x5ae0c6);logger[_0xbadb('0x11')](_0xbadb('0x17'),_0x5ae0c6,JSON[_0xbadb('0x20')](_0x596216));_0xa77dea(_0x596216);})[_0xbadb('0x21')](function(_0x7db56b){logger[_0xbadb('0x13')](_0xbadb('0x17'),_0x7db56b[_0xbadb('0x15')],_0x5ae0c6);_0xfc94d5(_0x505c85[_0xbadb('0x13')](0x1f4,_0x7db56b[_0xbadb('0x15')]));});});};exports['ShowSalesforceAccount']=function(_0x86c375){var _0x14ddd5=this;return new Promise(function(_0x23408b,_0x58ea4e){return db[_0xbadb('0x22')]['find']({'raw':_0x86c375[_0xbadb('0x19')]?_0x86c375[_0xbadb('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x86c375[_0xbadb('0x19')]?_0x86c375[_0xbadb('0x19')]['where']||null:null,'attributes':_0x86c375[_0xbadb('0x19')]?_0x86c375['options'][_0xbadb('0x1b')]||null:null,'include':_0x86c375[_0xbadb('0x19')]?_0x86c375['options'][_0xbadb('0x1d')]?_[_0xbadb('0x1e')](_0x86c375[_0xbadb('0x19')][_0xbadb('0x1d')],function(_0x165364){return{'model':db[_0x165364[_0xbadb('0x1f')]],'as':_0x165364['as'],'attributes':_0x165364[_0xbadb('0x1b')],'include':_0x165364[_0xbadb('0x1d')]?_[_0xbadb('0x1e')](_0x165364[_0xbadb('0x1d')],function(_0x37e803){return{'model':db[_0x37e803['model']],'as':_0x37e803['as'],'attributes':_0x37e803[_0xbadb('0x1b')],'include':_0x37e803['include']?_['map'](_0x37e803['include'],function(_0x3ff84d){return{'model':db[_0x3ff84d[_0xbadb('0x1f')]],'as':_0x3ff84d['as'],'attributes':_0x3ff84d[_0xbadb('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5aefc1){logger['info'](_0xbadb('0x23'),_0x86c375);logger['debug'](_0xbadb('0x23'),_0x86c375,JSON['stringify'](_0x5aefc1));_0x23408b(_0x5aefc1);})[_0xbadb('0x21')](function(_0x205aa7){logger['error'](_0xbadb('0x23'),_0x205aa7['message'],_0x86c375);_0x58ea4e(_0x14ddd5[_0xbadb('0x13')](0x1f4,_0x205aa7[_0xbadb('0x15')]));});});};
\ No newline at end of file
index 6c3f713..c4b6cca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xdb28,0x106));var _0x8db2=function(_0x3b809d,_0x97ee4f){_0x3b809d=_0x3b809d-0x0;var _0x122f95=_0xdb28[_0x3b809d];return _0x122f95;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./intSalesforceConfiguration.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=router;
\ No newline at end of file
+var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xdb28,0x106));var _0x8db2=function(_0x40da94,_0x45ec0e){_0x40da94=_0x40da94-0x0;var _0x2dd0be=_0xdb28[_0x40da94];return _0x2dd0be;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./intSalesforceConfiguration.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=router;
\ No newline at end of file
index 44a4d26..abbc3b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd12=['ENUM','Task','Case','contact_lead','contact','lead','account_contact_lead','account','nothing','sequelize','exports','STRING'];(function(_0x68ee8b,_0x3cc6c5){var _0x5148f7=function(_0x5dcbd5){while(--_0x5dcbd5){_0x68ee8b['push'](_0x68ee8b['shift']());}};_0x5148f7(++_0x3cc6c5);}(_0xbd12,0x129));var _0x2bd1=function(_0x578913,_0x3808c7){_0x578913=_0x578913-0x0;var _0x5e135e=_0xbd12[_0x578913];return _0x5e135e;};'use strict';var Sequelize=require(_0x2bd1('0x0'));module[_0x2bd1('0x1')]={'name':{'type':Sequelize[_0x2bd1('0x2')]},'description':{'type':Sequelize[_0x2bd1('0x2')]},'ticketType':{'type':Sequelize[_0x2bd1('0x3')](_0x2bd1('0x4'),_0x2bd1('0x5')),'defaultValue':_0x2bd1('0x4')},'moduleSearch':{'type':Sequelize[_0x2bd1('0x3')](_0x2bd1('0x6'),_0x2bd1('0x7'),_0x2bd1('0x8'),_0x2bd1('0x9'),_0x2bd1('0xa')),'defaultValue':_0x2bd1('0x6')},'moduleCreate':{'type':Sequelize[_0x2bd1('0x3')](_0x2bd1('0xb'),_0x2bd1('0x7'),'lead',_0x2bd1('0xa')),'defaultValue':_0x2bd1('0x8')},'leadId':{'type':Sequelize[_0x2bd1('0x2')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x2bd1('0x2')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0f37=['contact','account','exports','STRING','ENUM','Task','contact_lead','lead','account_contact_lead','nothing'];(function(_0x57a50d,_0x2871f8){var _0x1b25b3=function(_0x45691e){while(--_0x45691e){_0x57a50d['push'](_0x57a50d['shift']());}};_0x1b25b3(++_0x2871f8);}(_0x0f37,0x1c4));var _0x70f3=function(_0x313c92,_0x5d9943){_0x313c92=_0x313c92-0x0;var _0x8ddf39=_0x0f37[_0x313c92];return _0x8ddf39;};'use strict';var Sequelize=require('sequelize');module[_0x70f3('0x0')]={'name':{'type':Sequelize[_0x70f3('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x70f3('0x2')]('Task','Case'),'defaultValue':_0x70f3('0x3')},'moduleSearch':{'type':Sequelize['ENUM'](_0x70f3('0x4'),'contact',_0x70f3('0x5'),_0x70f3('0x6'),'account'),'defaultValue':_0x70f3('0x4')},'moduleCreate':{'type':Sequelize[_0x70f3('0x2')](_0x70f3('0x7'),_0x70f3('0x8'),_0x70f3('0x5'),_0x70f3('0x9')),'defaultValue':_0x70f3('0x5')},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x70f3('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 379e1bc..72deee3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x655e=['attributes','length','hasOwnProperty','nolimit','limit','order','sort','merge','where','VIRTUAL','SalesforceConfiguration','includeAll','include','findAll','rows','fields','options','catch','create','body','params','find','getFields','findOne','SalesforceField','pick','filter','getSubjects','getDescriptions','rawAttributes','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','fieldName','type','key','model','keys','filters','intersection','query'];(function(_0x30bd4d,_0x50eb60){var _0x306915=function(_0x5ae782){while(--_0x5ae782){_0x30bd4d['push'](_0x30bd4d['shift']());}};_0x306915(++_0x50eb60);}(_0x655e,0x19f));var _0xe655=function(_0x29cf08,_0x3a6b33){_0x29cf08=_0x29cf08-0x0;var _0x588546=_0x655e[_0x29cf08];return _0x588546;};'use strict';var emlformat=require(_0xe655('0x0'));var rimraf=require(_0xe655('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe655('0x2'));var rp=require(_0xe655('0x3'));var moment=require('moment');var BPromise=require(_0xe655('0x4'));var Mustache=require('mustache');var util=require(_0xe655('0x5'));var path=require(_0xe655('0x6'));var sox=require('sox');var csv=require(_0xe655('0x7'));var ejs=require(_0xe655('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xe655('0x9'));var jsforce=require(_0xe655('0xa'));var deskjs=require(_0xe655('0xb'));var toCsv=require(_0xe655('0x7'));var querystring=require('querystring');var Papa=require(_0xe655('0xc'));var Redis=require(_0xe655('0xd'));var authService=require(_0xe655('0xe'));var qs=require(_0xe655('0xf'));var as=require(_0xe655('0x10'));var hardwareService=require(_0xe655('0x11'));var logger=require(_0xe655('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xe655('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x445540,_0x269e1c){_0x269e1c=_0x269e1c||0xcc;return function(_0x4a2711){if(_0x4a2711){return _0x445540['sendStatus'](_0x269e1c);}return _0x445540[_0xe655('0x14')](_0x269e1c)[_0xe655('0x15')]();};}function respondWithResult(_0x548175,_0x4f4113){_0x4f4113=_0x4f4113||0xc8;return function(_0x2b58ba){if(_0x2b58ba){return _0x548175[_0xe655('0x14')](_0x4f4113)[_0xe655('0x16')](_0x2b58ba);}};}function respondWithFilteredResult(_0x305a69,_0x46df2d){return function(_0xe0cb2c){if(_0xe0cb2c){var _0x15a58a=typeof _0x46df2d[_0xe655('0x17')]==='undefined'&&typeof _0x46df2d['limit']===_0xe655('0x18');var _0x3f89a2=_0xe0cb2c[_0xe655('0x19')];var _0x2d054a=_0x15a58a?0x0:_0x46df2d['offset'];var _0x42e396=_0x15a58a?_0xe0cb2c['count']:_0x46df2d[_0xe655('0x17')]+_0x46df2d['limit'];var _0x1a0c92;if(_0x42e396>=_0x3f89a2){_0x42e396=_0x3f89a2;_0x1a0c92=0xc8;}else{_0x1a0c92=0xce;}_0x305a69[_0xe655('0x14')](_0x1a0c92);return _0x305a69[_0xe655('0x1a')](_0xe655('0x1b'),_0x2d054a+'-'+_0x42e396+'/'+_0x3f89a2)[_0xe655('0x16')](_0xe0cb2c);}return null;};}function patchUpdates(_0x2a4a97){return function(_0x5b25e3){try{jsonpatch[_0xe655('0x1c')](_0x5b25e3,_0x2a4a97,!![]);}catch(_0xf38056){return BPromise[_0xe655('0x1d')](_0xf38056);}return _0x5b25e3[_0xe655('0x1e')]();};}function saveUpdates(_0x272939,_0x427a0e){return function(_0x1e26aa){if(_0x1e26aa){return _0x1e26aa[_0xe655('0x1f')](_0x272939)[_0xe655('0x20')](function(_0x5c3ba5){return _0x5c3ba5;});}return null;};}function removeEntity(_0x1e8820,_0x32842d){return function(_0x442d9b){if(_0x442d9b){return _0x442d9b[_0xe655('0x21')]()[_0xe655('0x20')](function(){_0x1e8820['status'](0xcc)[_0xe655('0x15')]();});}};}function handleEntityNotFound(_0x413e0a,_0x5ac9dc){return function(_0x337f81){if(!_0x337f81){_0x413e0a['sendStatus'](0x194);}return _0x337f81;};}function handleError(_0xf65446,_0x5e01d0){_0x5e01d0=_0x5e01d0||0x1f4;return function(_0x2bad3b){logger[_0xe655('0x22')](_0x2bad3b[_0xe655('0x23')]);if(_0x2bad3b[_0xe655('0x24')]){delete _0x2bad3b[_0xe655('0x24')];}_0xf65446[_0xe655('0x14')](_0x5e01d0)[_0xe655('0x25')](_0x2bad3b);};}exports['index']=function(_0x52fcd1,_0x3451fe){var _0x554e0c={},_0x3f00a1={},_0x1adc6e={'count':0x0,'rows':[]};var _0x4f8e6e=_[_0xe655('0x26')](db['SalesforceConfiguration']['rawAttributes'],function(_0x5eea28){return{'name':_0x5eea28[_0xe655('0x27')],'type':_0x5eea28[_0xe655('0x28')][_0xe655('0x29')]};});_0x3f00a1[_0xe655('0x2a')]=_[_0xe655('0x26')](_0x4f8e6e,_0xe655('0x24'));_0x3f00a1['query']=_[_0xe655('0x2b')](_0x52fcd1['query']);_0x3f00a1[_0xe655('0x2c')]=_[_0xe655('0x2d')](_0x3f00a1['model'],_0x3f00a1[_0xe655('0x2e')]);_0x554e0c[_0xe655('0x2f')]=_['intersection'](_0x3f00a1[_0xe655('0x2a')],qs['fields'](_0x52fcd1[_0xe655('0x2e')]['fields']));_0x554e0c[_0xe655('0x2f')]=_0x554e0c[_0xe655('0x2f')][_0xe655('0x30')]?_0x554e0c[_0xe655('0x2f')]:_0x3f00a1[_0xe655('0x2a')];if(!_0x52fcd1['query'][_0xe655('0x31')](_0xe655('0x32'))){_0x554e0c['limit']=qs[_0xe655('0x33')](_0x52fcd1[_0xe655('0x2e')]['limit']);_0x554e0c[_0xe655('0x17')]=qs[_0xe655('0x17')](_0x52fcd1[_0xe655('0x2e')][_0xe655('0x17')]);}_0x554e0c[_0xe655('0x34')]=qs[_0xe655('0x35')](_0x52fcd1[_0xe655('0x2e')][_0xe655('0x35')]);_0x554e0c['where']=qs[_0xe655('0x2c')](_['pick'](_0x52fcd1['query'],_0x3f00a1[_0xe655('0x2c')]),_0x4f8e6e);if(_0x52fcd1['query']['filter']){_0x554e0c['where']=_[_0xe655('0x36')](_0x554e0c[_0xe655('0x37')],{'$or':_[_0xe655('0x26')](_0x4f8e6e,function(_0x3d6849){if(_0x3d6849[_0xe655('0x28')]!==_0xe655('0x38')){var _0x5ee0af={};_0x5ee0af[_0x3d6849[_0xe655('0x24')]]={'$like':'%'+_0x52fcd1['query']['filter']+'%'};return _0x5ee0af;}})});}_0x554e0c=_[_0xe655('0x36')]({},_0x554e0c,_0x52fcd1['options']);var _0x3e1ae6={'where':_0x554e0c[_0xe655('0x37')]};return db[_0xe655('0x39')][_0xe655('0x19')](_0x3e1ae6)['then'](function(_0x2d594a){_0x1adc6e['count']=_0x2d594a;if(_0x52fcd1[_0xe655('0x2e')][_0xe655('0x3a')]){_0x554e0c[_0xe655('0x3b')]=[{'all':!![]}];}return db[_0xe655('0x39')][_0xe655('0x3c')](_0x554e0c);})['then'](function(_0x3067e5){_0x1adc6e[_0xe655('0x3d')]=_0x3067e5;return _0x1adc6e;})['then'](respondWithFilteredResult(_0x3451fe,_0x554e0c))['catch'](handleError(_0x3451fe,null));};exports['show']=function(_0xbe362c,_0x43e045){var _0x19d4c9={'raw':![],'where':{'id':_0xbe362c['params']['id']}},_0x211eac={};_0x211eac[_0xe655('0x2a')]=_[_0xe655('0x2b')](db['SalesforceConfiguration']['rawAttributes']);_0x211eac['query']=_[_0xe655('0x2b')](_0xbe362c['query']);_0x211eac['filters']=_[_0xe655('0x2d')](_0x211eac['model'],_0x211eac['query']);_0x19d4c9[_0xe655('0x2f')]=_[_0xe655('0x2d')](_0x211eac[_0xe655('0x2a')],qs[_0xe655('0x3e')](_0xbe362c['query']['fields']));_0x19d4c9[_0xe655('0x2f')]=_0x19d4c9[_0xe655('0x2f')][_0xe655('0x30')]?_0x19d4c9['attributes']:_0x211eac[_0xe655('0x2a')];if(_0xbe362c[_0xe655('0x2e')][_0xe655('0x3a')]){_0x19d4c9[_0xe655('0x3b')]=[{'all':!![]}];}_0x19d4c9=_[_0xe655('0x36')]({},_0x19d4c9,_0xbe362c[_0xe655('0x3f')]);return db[_0xe655('0x39')]['find'](_0x19d4c9)[_0xe655('0x20')](handleEntityNotFound(_0x43e045,null))['then'](respondWithResult(_0x43e045,null))[_0xe655('0x40')](handleError(_0x43e045,null));};exports[_0xe655('0x41')]=function(_0x453c7c,_0x5365ba){return db[_0xe655('0x39')]['create'](_0x453c7c['body'],{})[_0xe655('0x20')](respondWithResult(_0x5365ba,0xc9))[_0xe655('0x40')](handleError(_0x5365ba,null));};exports[_0xe655('0x1f')]=function(_0x23605e,_0x1ee63f){if(_0x23605e[_0xe655('0x42')]['id']){delete _0x23605e[_0xe655('0x42')]['id'];}return db[_0xe655('0x39')]['find']({'where':{'id':_0x23605e[_0xe655('0x43')]['id']}})[_0xe655('0x20')](handleEntityNotFound(_0x1ee63f,null))['then'](saveUpdates(_0x23605e[_0xe655('0x42')],null))[_0xe655('0x20')](respondWithResult(_0x1ee63f,null))[_0xe655('0x40')](handleError(_0x1ee63f,null));};exports[_0xe655('0x21')]=function(_0x1467b1,_0x445472){return db['SalesforceConfiguration'][_0xe655('0x44')]({'where':{'id':_0x1467b1['params']['id']}})[_0xe655('0x20')](handleEntityNotFound(_0x445472,null))[_0xe655('0x20')](removeEntity(_0x445472,null))[_0xe655('0x40')](handleError(_0x445472,null));};exports[_0xe655('0x45')]=function(_0x467d4c,_0x4e5914,_0x16a05e){var _0x26314d={};var _0x20ecd1={};var _0x300901;var _0xa30b57;return db['SalesforceConfiguration'][_0xe655('0x46')]({'where':{'id':_0x467d4c[_0xe655('0x43')]['id']}})['then'](handleEntityNotFound(_0x4e5914,null))[_0xe655('0x20')](function(_0x4aab2e){if(_0x4aab2e){_0x300901=_0x4aab2e;_0x20ecd1[_0xe655('0x2a')]=_[_0xe655('0x2b')](db[_0xe655('0x47')]['rawAttributes']);_0x20ecd1[_0xe655('0x2e')]=_['keys'](_0x467d4c[_0xe655('0x2e')]);_0x20ecd1[_0xe655('0x2c')]=_[_0xe655('0x2d')](_0x20ecd1['model'],_0x20ecd1[_0xe655('0x2e')]);_0x26314d[_0xe655('0x2f')]=_[_0xe655('0x2d')](_0x20ecd1['model'],qs[_0xe655('0x3e')](_0x467d4c[_0xe655('0x2e')][_0xe655('0x3e')]));_0x26314d['attributes']=_0x26314d[_0xe655('0x2f')][_0xe655('0x30')]?_0x26314d['attributes']:_0x20ecd1['model'];_0x26314d[_0xe655('0x34')]=qs['sort'](_0x467d4c[_0xe655('0x2e')]['sort']);_0x26314d[_0xe655('0x37')]=qs[_0xe655('0x2c')](_[_0xe655('0x48')](_0x467d4c[_0xe655('0x2e')],_0x20ecd1[_0xe655('0x2c')]));if(_0x467d4c[_0xe655('0x2e')]['filter']){_0x26314d[_0xe655('0x37')]=_[_0xe655('0x36')](_0x26314d[_0xe655('0x37')],{'$or':_[_0xe655('0x26')](_0x26314d[_0xe655('0x2f')],function(_0x57fc63){var _0x97f716={};_0x97f716[_0x57fc63]={'$like':'%'+_0x467d4c[_0xe655('0x2e')][_0xe655('0x49')]+'%'};return _0x97f716;})});}_0x26314d=_['merge']({},_0x26314d,_0x467d4c[_0xe655('0x3f')]);return _0x300901[_0xe655('0x45')](_0x26314d);}})[_0xe655('0x20')](function(_0x3d5d92){if(_0x3d5d92){_0xa30b57=_0x3d5d92[_0xe655('0x30')];if(!_0x467d4c[_0xe655('0x2e')][_0xe655('0x31')]('nolimit')){_0x26314d['limit']=qs[_0xe655('0x33')](_0x467d4c['query'][_0xe655('0x33')]);_0x26314d[_0xe655('0x17')]=qs[_0xe655('0x17')](_0x467d4c[_0xe655('0x2e')][_0xe655('0x17')]);}return _0x300901['getFields'](_0x26314d);}})[_0xe655('0x20')](function(_0x3795a5){if(_0x3795a5){return _0x3795a5?{'count':_0xa30b57,'rows':_0x3795a5}:null;}})[_0xe655('0x20')](respondWithResult(_0x4e5914,null))[_0xe655('0x40')](handleError(_0x4e5914,null));};exports[_0xe655('0x4a')]=function(_0x34fdaf,_0xf581f1,_0x4e9fe0){var _0x39654c={};var _0x442901={};var _0x533e4e;var _0x15aae7;return db[_0xe655('0x39')][_0xe655('0x46')]({'where':{'id':_0x34fdaf[_0xe655('0x43')]['id']}})[_0xe655('0x20')](handleEntityNotFound(_0xf581f1,null))[_0xe655('0x20')](function(_0x17b8b1){if(_0x17b8b1){_0x533e4e=_0x17b8b1;_0x442901[_0xe655('0x2a')]=_['keys'](db[_0xe655('0x47')]['rawAttributes']);_0x442901['query']=_['keys'](_0x34fdaf[_0xe655('0x2e')]);_0x442901['filters']=_[_0xe655('0x2d')](_0x442901['model'],_0x442901[_0xe655('0x2e')]);_0x39654c['attributes']=_['intersection'](_0x442901[_0xe655('0x2a')],qs['fields'](_0x34fdaf[_0xe655('0x2e')][_0xe655('0x3e')]));_0x39654c[_0xe655('0x2f')]=_0x39654c[_0xe655('0x2f')]['length']?_0x39654c[_0xe655('0x2f')]:_0x442901[_0xe655('0x2a')];_0x39654c[_0xe655('0x34')]=qs[_0xe655('0x35')](_0x34fdaf[_0xe655('0x2e')][_0xe655('0x35')]);_0x39654c['where']=qs[_0xe655('0x2c')](_[_0xe655('0x48')](_0x34fdaf['query'],_0x442901[_0xe655('0x2c')]));if(_0x34fdaf[_0xe655('0x2e')][_0xe655('0x49')]){_0x39654c[_0xe655('0x37')]=_[_0xe655('0x36')](_0x39654c['where'],{'$or':_[_0xe655('0x26')](_0x39654c['attributes'],function(_0x512e81){var _0x1a471b={};_0x1a471b[_0x512e81]={'$like':'%'+_0x34fdaf[_0xe655('0x2e')][_0xe655('0x49')]+'%'};return _0x1a471b;})});}_0x39654c=_[_0xe655('0x36')]({},_0x39654c,_0x34fdaf[_0xe655('0x3f')]);return _0x533e4e[_0xe655('0x4a')](_0x39654c);}})['then'](function(_0x5c4d7f){if(_0x5c4d7f){_0x15aae7=_0x5c4d7f[_0xe655('0x30')];if(!_0x34fdaf[_0xe655('0x2e')]['hasOwnProperty'](_0xe655('0x32'))){_0x39654c['limit']=qs[_0xe655('0x33')](_0x34fdaf[_0xe655('0x2e')][_0xe655('0x33')]);_0x39654c['offset']=qs[_0xe655('0x17')](_0x34fdaf[_0xe655('0x2e')][_0xe655('0x17')]);}return _0x533e4e[_0xe655('0x4a')](_0x39654c);}})[_0xe655('0x20')](function(_0x150da3){if(_0x150da3){return _0x150da3?{'count':_0x15aae7,'rows':_0x150da3}:null;}})[_0xe655('0x20')](respondWithResult(_0xf581f1,null))['catch'](handleError(_0xf581f1,null));};exports[_0xe655('0x4b')]=function(_0x58e743,_0x32a1b1,_0x47a072){var _0x3cf1d9={};var _0x1f3cdb={};var _0x7f970a;var _0x448d10;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0x58e743[_0xe655('0x43')]['id']}})[_0xe655('0x20')](handleEntityNotFound(_0x32a1b1,null))[_0xe655('0x20')](function(_0x45dc98){if(_0x45dc98){_0x7f970a=_0x45dc98;_0x1f3cdb[_0xe655('0x2a')]=_[_0xe655('0x2b')](db['SalesforceField'][_0xe655('0x4c')]);_0x1f3cdb[_0xe655('0x2e')]=_[_0xe655('0x2b')](_0x58e743[_0xe655('0x2e')]);_0x1f3cdb[_0xe655('0x2c')]=_[_0xe655('0x2d')](_0x1f3cdb[_0xe655('0x2a')],_0x1f3cdb[_0xe655('0x2e')]);_0x3cf1d9['attributes']=_[_0xe655('0x2d')](_0x1f3cdb['model'],qs[_0xe655('0x3e')](_0x58e743['query'][_0xe655('0x3e')]));_0x3cf1d9[_0xe655('0x2f')]=_0x3cf1d9[_0xe655('0x2f')][_0xe655('0x30')]?_0x3cf1d9['attributes']:_0x1f3cdb[_0xe655('0x2a')];_0x3cf1d9['order']=qs[_0xe655('0x35')](_0x58e743[_0xe655('0x2e')][_0xe655('0x35')]);_0x3cf1d9[_0xe655('0x37')]=qs[_0xe655('0x2c')](_[_0xe655('0x48')](_0x58e743['query'],_0x1f3cdb[_0xe655('0x2c')]));if(_0x58e743[_0xe655('0x2e')][_0xe655('0x49')]){_0x3cf1d9[_0xe655('0x37')]=_[_0xe655('0x36')](_0x3cf1d9[_0xe655('0x37')],{'$or':_[_0xe655('0x26')](_0x3cf1d9[_0xe655('0x2f')],function(_0x2506c3){var _0x5b8986={};_0x5b8986[_0x2506c3]={'$like':'%'+_0x58e743[_0xe655('0x2e')][_0xe655('0x49')]+'%'};return _0x5b8986;})});}_0x3cf1d9=_[_0xe655('0x36')]({},_0x3cf1d9,_0x58e743['options']);return _0x7f970a[_0xe655('0x4b')](_0x3cf1d9);}})[_0xe655('0x20')](function(_0x415ba8){if(_0x415ba8){_0x448d10=_0x415ba8[_0xe655('0x30')];if(!_0x58e743[_0xe655('0x2e')][_0xe655('0x31')](_0xe655('0x32'))){_0x3cf1d9['limit']=qs[_0xe655('0x33')](_0x58e743[_0xe655('0x2e')][_0xe655('0x33')]);_0x3cf1d9['offset']=qs[_0xe655('0x17')](_0x58e743[_0xe655('0x2e')][_0xe655('0x17')]);}return _0x7f970a[_0xe655('0x4b')](_0x3cf1d9);}})[_0xe655('0x20')](function(_0xe2a505){if(_0xe2a505){return _0xe2a505?{'count':_0x448d10,'rows':_0xe2a505}:null;}})[_0xe655('0x20')](respondWithResult(_0x32a1b1,null))['catch'](handleError(_0x32a1b1,null));};
\ No newline at end of file
+var _0x2acf=['map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','SalesforceConfiguration','findAll','rows','catch','show','length','find','create','body','params','findOne','SalesforceField','pick','getFields','hasOwnProperty','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model'];(function(_0x152dd4,_0xcd8dce){var _0x507a18=function(_0x58e631){while(--_0x58e631){_0x152dd4['push'](_0x152dd4['shift']());}};_0x507a18(++_0xcd8dce);}(_0x2acf,0x118));var _0xf2ac=function(_0xfbe06e,_0x2fb7ab){_0xfbe06e=_0xfbe06e-0x0;var _0x24e5b6=_0x2acf[_0xfbe06e];return _0x24e5b6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf2ac('0x0'));var zipdir=require(_0xf2ac('0x1'));var jsonpatch=require(_0xf2ac('0x2'));var rp=require(_0xf2ac('0x3'));var moment=require('moment');var BPromise=require(_0xf2ac('0x4'));var Mustache=require(_0xf2ac('0x5'));var util=require(_0xf2ac('0x6'));var path=require(_0xf2ac('0x7'));var sox=require(_0xf2ac('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf2ac('0x9'));var squel=require(_0xf2ac('0xa'));var crypto=require(_0xf2ac('0xb'));var jsforce=require(_0xf2ac('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf2ac('0xd'));var Papa=require(_0xf2ac('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf2ac('0xf'));var as=require(_0xf2ac('0x10'));var hardwareService=require(_0xf2ac('0x11'));var logger=require(_0xf2ac('0x12'))(_0xf2ac('0x13'));var utils=require(_0xf2ac('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf2ac('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x58352c,_0x1ecf46){_0x1ecf46=_0x1ecf46||0xcc;return function(_0x4b0853){if(_0x4b0853){return _0x58352c[_0xf2ac('0x16')](_0x1ecf46);}return _0x58352c[_0xf2ac('0x17')](_0x1ecf46)[_0xf2ac('0x18')]();};}function respondWithResult(_0x4ad81d,_0x30b217){_0x30b217=_0x30b217||0xc8;return function(_0xab27bf){if(_0xab27bf){return _0x4ad81d[_0xf2ac('0x17')](_0x30b217)[_0xf2ac('0x19')](_0xab27bf);}};}function respondWithFilteredResult(_0x1f40eb,_0x1dfe23){return function(_0xae9e94){if(_0xae9e94){var _0x501c69=typeof _0x1dfe23[_0xf2ac('0x1a')]===_0xf2ac('0x1b')&&typeof _0x1dfe23['limit']===_0xf2ac('0x1b');var _0x134af6=_0xae9e94[_0xf2ac('0x1c')];var _0x54be33=_0x501c69?0x0:_0x1dfe23['offset'];var _0x876a90=_0x501c69?_0xae9e94[_0xf2ac('0x1c')]:_0x1dfe23[_0xf2ac('0x1a')]+_0x1dfe23[_0xf2ac('0x1d')];var _0x5f3354;if(_0x876a90>=_0x134af6){_0x876a90=_0x134af6;_0x5f3354=0xc8;}else{_0x5f3354=0xce;}_0x1f40eb[_0xf2ac('0x17')](_0x5f3354);return _0x1f40eb[_0xf2ac('0x1e')](_0xf2ac('0x1f'),_0x54be33+'-'+_0x876a90+'/'+_0x134af6)[_0xf2ac('0x19')](_0xae9e94);}return null;};}function patchUpdates(_0x5ddbe2){return function(_0x3753f6){try{jsonpatch[_0xf2ac('0x20')](_0x3753f6,_0x5ddbe2,!![]);}catch(_0x5c4257){return BPromise[_0xf2ac('0x21')](_0x5c4257);}return _0x3753f6[_0xf2ac('0x22')]();};}function saveUpdates(_0x62a5b6,_0x4022d5){return function(_0x4bd5b9){if(_0x4bd5b9){return _0x4bd5b9[_0xf2ac('0x23')](_0x62a5b6)[_0xf2ac('0x24')](function(_0x45b93b){return _0x45b93b;});}return null;};}function removeEntity(_0x5a8231,_0xe1daed){return function(_0x481689){if(_0x481689){return _0x481689[_0xf2ac('0x25')]()[_0xf2ac('0x24')](function(){_0x5a8231[_0xf2ac('0x17')](0xcc)[_0xf2ac('0x18')]();});}};}function handleEntityNotFound(_0x14be7a,_0x440c11){return function(_0x2cb3a4){if(!_0x2cb3a4){_0x14be7a[_0xf2ac('0x16')](0x194);}return _0x2cb3a4;};}function handleError(_0x68847,_0x16f2f6){_0x16f2f6=_0x16f2f6||0x1f4;return function(_0x4155ff){logger[_0xf2ac('0x26')](_0x4155ff[_0xf2ac('0x27')]);if(_0x4155ff[_0xf2ac('0x28')]){delete _0x4155ff[_0xf2ac('0x28')];}_0x68847['status'](_0x16f2f6)[_0xf2ac('0x29')](_0x4155ff);};}exports[_0xf2ac('0x2a')]=function(_0x36c676,_0x2b5e83){var _0x5ea4c5={},_0x351ca5={},_0x33e3a7={'count':0x0,'rows':[]};var _0x310f2b=_['map'](db['SalesforceConfiguration'][_0xf2ac('0x2b')],function(_0x323c96){return{'name':_0x323c96[_0xf2ac('0x2c')],'type':_0x323c96[_0xf2ac('0x2d')][_0xf2ac('0x2e')]};});_0x351ca5[_0xf2ac('0x2f')]=_[_0xf2ac('0x30')](_0x310f2b,_0xf2ac('0x28'));_0x351ca5[_0xf2ac('0x31')]=_[_0xf2ac('0x32')](_0x36c676[_0xf2ac('0x31')]);_0x351ca5[_0xf2ac('0x33')]=_[_0xf2ac('0x34')](_0x351ca5[_0xf2ac('0x2f')],_0x351ca5['query']);_0x5ea4c5[_0xf2ac('0x35')]=_['intersection'](_0x351ca5[_0xf2ac('0x2f')],qs[_0xf2ac('0x36')](_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x36')]));_0x5ea4c5['attributes']=_0x5ea4c5[_0xf2ac('0x35')]['length']?_0x5ea4c5[_0xf2ac('0x35')]:_0x351ca5[_0xf2ac('0x2f')];if(!_0x36c676['query']['hasOwnProperty'](_0xf2ac('0x37'))){_0x5ea4c5[_0xf2ac('0x1d')]=qs['limit'](_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x1d')]);_0x5ea4c5[_0xf2ac('0x1a')]=qs[_0xf2ac('0x1a')](_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x1a')]);}_0x5ea4c5[_0xf2ac('0x38')]=qs[_0xf2ac('0x39')](_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x39')]);_0x5ea4c5[_0xf2ac('0x3a')]=qs['filters'](_['pick'](_0x36c676['query'],_0x351ca5[_0xf2ac('0x33')]),_0x310f2b);if(_0x36c676[_0xf2ac('0x31')]['filter']){_0x5ea4c5['where']=_[_0xf2ac('0x3b')](_0x5ea4c5[_0xf2ac('0x3a')],{'$or':_['map'](_0x310f2b,function(_0x2fd25f){if(_0x2fd25f[_0xf2ac('0x2d')]!==_0xf2ac('0x3c')){var _0x43710b={};_0x43710b[_0x2fd25f[_0xf2ac('0x28')]]={'$like':'%'+_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x3d')]+'%'};return _0x43710b;}})});}_0x5ea4c5=_[_0xf2ac('0x3b')]({},_0x5ea4c5,_0x36c676[_0xf2ac('0x3e')]);var _0x5249db={'where':_0x5ea4c5[_0xf2ac('0x3a')]};return db['SalesforceConfiguration'][_0xf2ac('0x1c')](_0x5249db)['then'](function(_0x54475a){_0x33e3a7[_0xf2ac('0x1c')]=_0x54475a;if(_0x36c676[_0xf2ac('0x31')][_0xf2ac('0x3f')]){_0x5ea4c5[_0xf2ac('0x40')]=[{'all':!![]}];}return db[_0xf2ac('0x41')][_0xf2ac('0x42')](_0x5ea4c5);})[_0xf2ac('0x24')](function(_0x58225a){_0x33e3a7[_0xf2ac('0x43')]=_0x58225a;return _0x33e3a7;})['then'](respondWithFilteredResult(_0x2b5e83,_0x5ea4c5))[_0xf2ac('0x44')](handleError(_0x2b5e83,null));};exports[_0xf2ac('0x45')]=function(_0x4e41cf,_0x26af7b){var _0x47af36={'raw':![],'where':{'id':_0x4e41cf['params']['id']}},_0x46c6c0={};_0x46c6c0[_0xf2ac('0x2f')]=_[_0xf2ac('0x32')](db[_0xf2ac('0x41')][_0xf2ac('0x2b')]);_0x46c6c0[_0xf2ac('0x31')]=_[_0xf2ac('0x32')](_0x4e41cf[_0xf2ac('0x31')]);_0x46c6c0[_0xf2ac('0x33')]=_['intersection'](_0x46c6c0[_0xf2ac('0x2f')],_0x46c6c0[_0xf2ac('0x31')]);_0x47af36[_0xf2ac('0x35')]=_[_0xf2ac('0x34')](_0x46c6c0[_0xf2ac('0x2f')],qs[_0xf2ac('0x36')](_0x4e41cf['query'][_0xf2ac('0x36')]));_0x47af36['attributes']=_0x47af36[_0xf2ac('0x35')][_0xf2ac('0x46')]?_0x47af36['attributes']:_0x46c6c0[_0xf2ac('0x2f')];if(_0x4e41cf['query'][_0xf2ac('0x3f')]){_0x47af36['include']=[{'all':!![]}];}_0x47af36=_['merge']({},_0x47af36,_0x4e41cf[_0xf2ac('0x3e')]);return db['SalesforceConfiguration'][_0xf2ac('0x47')](_0x47af36)['then'](handleEntityNotFound(_0x26af7b,null))[_0xf2ac('0x24')](respondWithResult(_0x26af7b,null))[_0xf2ac('0x44')](handleError(_0x26af7b,null));};exports[_0xf2ac('0x48')]=function(_0x3edba5,_0x2d3c63){return db[_0xf2ac('0x41')][_0xf2ac('0x48')](_0x3edba5[_0xf2ac('0x49')],{})[_0xf2ac('0x24')](respondWithResult(_0x2d3c63,0xc9))['catch'](handleError(_0x2d3c63,null));};exports[_0xf2ac('0x23')]=function(_0x4f2fb3,_0x44c1e0){if(_0x4f2fb3[_0xf2ac('0x49')]['id']){delete _0x4f2fb3[_0xf2ac('0x49')]['id'];}return db['SalesforceConfiguration']['find']({'where':{'id':_0x4f2fb3['params']['id']}})[_0xf2ac('0x24')](handleEntityNotFound(_0x44c1e0,null))[_0xf2ac('0x24')](saveUpdates(_0x4f2fb3['body'],null))[_0xf2ac('0x24')](respondWithResult(_0x44c1e0,null))[_0xf2ac('0x44')](handleError(_0x44c1e0,null));};exports[_0xf2ac('0x25')]=function(_0x5488b9,_0x2069af){return db[_0xf2ac('0x41')]['find']({'where':{'id':_0x5488b9[_0xf2ac('0x4a')]['id']}})[_0xf2ac('0x24')](handleEntityNotFound(_0x2069af,null))['then'](removeEntity(_0x2069af,null))[_0xf2ac('0x44')](handleError(_0x2069af,null));};exports['getFields']=function(_0x100f83,_0x22e3f7,_0x1b0788){var _0x4d36c4={};var _0x206721={};var _0x1dc91c;var _0xb28354;return db['SalesforceConfiguration'][_0xf2ac('0x4b')]({'where':{'id':_0x100f83['params']['id']}})['then'](handleEntityNotFound(_0x22e3f7,null))[_0xf2ac('0x24')](function(_0x167c32){if(_0x167c32){_0x1dc91c=_0x167c32;_0x206721[_0xf2ac('0x2f')]=_[_0xf2ac('0x32')](db[_0xf2ac('0x4c')][_0xf2ac('0x2b')]);_0x206721[_0xf2ac('0x31')]=_[_0xf2ac('0x32')](_0x100f83[_0xf2ac('0x31')]);_0x206721['filters']=_['intersection'](_0x206721[_0xf2ac('0x2f')],_0x206721[_0xf2ac('0x31')]);_0x4d36c4[_0xf2ac('0x35')]=_[_0xf2ac('0x34')](_0x206721[_0xf2ac('0x2f')],qs[_0xf2ac('0x36')](_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x36')]));_0x4d36c4[_0xf2ac('0x35')]=_0x4d36c4[_0xf2ac('0x35')]['length']?_0x4d36c4[_0xf2ac('0x35')]:_0x206721['model'];_0x4d36c4[_0xf2ac('0x38')]=qs['sort'](_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x39')]);_0x4d36c4['where']=qs[_0xf2ac('0x33')](_[_0xf2ac('0x4d')](_0x100f83[_0xf2ac('0x31')],_0x206721['filters']));if(_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x3d')]){_0x4d36c4['where']=_[_0xf2ac('0x3b')](_0x4d36c4[_0xf2ac('0x3a')],{'$or':_[_0xf2ac('0x30')](_0x4d36c4['attributes'],function(_0x454900){var _0x2853b2={};_0x2853b2[_0x454900]={'$like':'%'+_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x3d')]+'%'};return _0x2853b2;})});}_0x4d36c4=_['merge']({},_0x4d36c4,_0x100f83[_0xf2ac('0x3e')]);return _0x1dc91c[_0xf2ac('0x4e')](_0x4d36c4);}})[_0xf2ac('0x24')](function(_0x115ce6){if(_0x115ce6){_0xb28354=_0x115ce6[_0xf2ac('0x46')];if(!_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x4f')](_0xf2ac('0x37'))){_0x4d36c4[_0xf2ac('0x1d')]=qs[_0xf2ac('0x1d')](_0x100f83[_0xf2ac('0x31')][_0xf2ac('0x1d')]);_0x4d36c4['offset']=qs[_0xf2ac('0x1a')](_0x100f83[_0xf2ac('0x31')]['offset']);}return _0x1dc91c[_0xf2ac('0x4e')](_0x4d36c4);}})[_0xf2ac('0x24')](function(_0xadc204){if(_0xadc204){return _0xadc204?{'count':_0xb28354,'rows':_0xadc204}:null;}})[_0xf2ac('0x24')](respondWithResult(_0x22e3f7,null))['catch'](handleError(_0x22e3f7,null));};exports[_0xf2ac('0x50')]=function(_0x36c41c,_0x4cdaba,_0x496a20){var _0x4cd0bc={};var _0x3b44ac={};var _0x450096;var _0x513618;return db['SalesforceConfiguration'][_0xf2ac('0x4b')]({'where':{'id':_0x36c41c[_0xf2ac('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4cdaba,null))[_0xf2ac('0x24')](function(_0x21e841){if(_0x21e841){_0x450096=_0x21e841;_0x3b44ac[_0xf2ac('0x2f')]=_[_0xf2ac('0x32')](db[_0xf2ac('0x4c')]['rawAttributes']);_0x3b44ac[_0xf2ac('0x31')]=_[_0xf2ac('0x32')](_0x36c41c['query']);_0x3b44ac[_0xf2ac('0x33')]=_[_0xf2ac('0x34')](_0x3b44ac[_0xf2ac('0x2f')],_0x3b44ac[_0xf2ac('0x31')]);_0x4cd0bc[_0xf2ac('0x35')]=_[_0xf2ac('0x34')](_0x3b44ac[_0xf2ac('0x2f')],qs['fields'](_0x36c41c[_0xf2ac('0x31')]['fields']));_0x4cd0bc[_0xf2ac('0x35')]=_0x4cd0bc[_0xf2ac('0x35')][_0xf2ac('0x46')]?_0x4cd0bc[_0xf2ac('0x35')]:_0x3b44ac[_0xf2ac('0x2f')];_0x4cd0bc['order']=qs[_0xf2ac('0x39')](_0x36c41c['query'][_0xf2ac('0x39')]);_0x4cd0bc['where']=qs[_0xf2ac('0x33')](_[_0xf2ac('0x4d')](_0x36c41c[_0xf2ac('0x31')],_0x3b44ac[_0xf2ac('0x33')]));if(_0x36c41c['query'][_0xf2ac('0x3d')]){_0x4cd0bc[_0xf2ac('0x3a')]=_[_0xf2ac('0x3b')](_0x4cd0bc[_0xf2ac('0x3a')],{'$or':_[_0xf2ac('0x30')](_0x4cd0bc[_0xf2ac('0x35')],function(_0x1230f7){var _0x4e29bc={};_0x4e29bc[_0x1230f7]={'$like':'%'+_0x36c41c[_0xf2ac('0x31')][_0xf2ac('0x3d')]+'%'};return _0x4e29bc;})});}_0x4cd0bc=_['merge']({},_0x4cd0bc,_0x36c41c[_0xf2ac('0x3e')]);return _0x450096[_0xf2ac('0x50')](_0x4cd0bc);}})['then'](function(_0x21cd45){if(_0x21cd45){_0x513618=_0x21cd45[_0xf2ac('0x46')];if(!_0x36c41c[_0xf2ac('0x31')][_0xf2ac('0x4f')]('nolimit')){_0x4cd0bc[_0xf2ac('0x1d')]=qs[_0xf2ac('0x1d')](_0x36c41c[_0xf2ac('0x31')][_0xf2ac('0x1d')]);_0x4cd0bc[_0xf2ac('0x1a')]=qs[_0xf2ac('0x1a')](_0x36c41c[_0xf2ac('0x31')][_0xf2ac('0x1a')]);}return _0x450096[_0xf2ac('0x50')](_0x4cd0bc);}})['then'](function(_0x45acdc){if(_0x45acdc){return _0x45acdc?{'count':_0x513618,'rows':_0x45acdc}:null;}})['then'](respondWithResult(_0x4cdaba,null))[_0xf2ac('0x44')](handleError(_0x4cdaba,null));};exports[_0xf2ac('0x51')]=function(_0xf375ef,_0x28fba3,_0x6fd0ca){var _0x3e395f={};var _0x40f51c={};var _0xcc27e9;var _0x7a8f78;return db['SalesforceConfiguration'][_0xf2ac('0x4b')]({'where':{'id':_0xf375ef[_0xf2ac('0x4a')]['id']}})[_0xf2ac('0x24')](handleEntityNotFound(_0x28fba3,null))['then'](function(_0x570aea){if(_0x570aea){_0xcc27e9=_0x570aea;_0x40f51c[_0xf2ac('0x2f')]=_[_0xf2ac('0x32')](db[_0xf2ac('0x4c')][_0xf2ac('0x2b')]);_0x40f51c[_0xf2ac('0x31')]=_['keys'](_0xf375ef[_0xf2ac('0x31')]);_0x40f51c[_0xf2ac('0x33')]=_[_0xf2ac('0x34')](_0x40f51c[_0xf2ac('0x2f')],_0x40f51c[_0xf2ac('0x31')]);_0x3e395f['attributes']=_[_0xf2ac('0x34')](_0x40f51c[_0xf2ac('0x2f')],qs[_0xf2ac('0x36')](_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x36')]));_0x3e395f['attributes']=_0x3e395f[_0xf2ac('0x35')]['length']?_0x3e395f[_0xf2ac('0x35')]:_0x40f51c[_0xf2ac('0x2f')];_0x3e395f[_0xf2ac('0x38')]=qs[_0xf2ac('0x39')](_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x39')]);_0x3e395f[_0xf2ac('0x3a')]=qs[_0xf2ac('0x33')](_[_0xf2ac('0x4d')](_0xf375ef[_0xf2ac('0x31')],_0x40f51c[_0xf2ac('0x33')]));if(_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x3d')]){_0x3e395f[_0xf2ac('0x3a')]=_[_0xf2ac('0x3b')](_0x3e395f[_0xf2ac('0x3a')],{'$or':_['map'](_0x3e395f[_0xf2ac('0x35')],function(_0x536ee0){var _0xb1ece8={};_0xb1ece8[_0x536ee0]={'$like':'%'+_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x3d')]+'%'};return _0xb1ece8;})});}_0x3e395f=_[_0xf2ac('0x3b')]({},_0x3e395f,_0xf375ef[_0xf2ac('0x3e')]);return _0xcc27e9[_0xf2ac('0x51')](_0x3e395f);}})[_0xf2ac('0x24')](function(_0x4e4a63){if(_0x4e4a63){_0x7a8f78=_0x4e4a63[_0xf2ac('0x46')];if(!_0xf375ef['query'][_0xf2ac('0x4f')](_0xf2ac('0x37'))){_0x3e395f[_0xf2ac('0x1d')]=qs['limit'](_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x1d')]);_0x3e395f[_0xf2ac('0x1a')]=qs[_0xf2ac('0x1a')](_0xf375ef[_0xf2ac('0x31')][_0xf2ac('0x1a')]);}return _0xcc27e9[_0xf2ac('0x51')](_0x3e395f);}})[_0xf2ac('0x24')](function(_0x39e1c3){if(_0x39e1c3){return _0x39e1c3?{'count':_0x7a8f78,'rows':_0x39e1c3}:null;}})[_0xf2ac('0x24')](respondWithResult(_0x28fba3,null))[_0xf2ac('0x44')](handleError(_0x28fba3,null));};
\ No newline at end of file
index 8e1a8c5..a10c640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf85e=['bluebird','request-promise','path','../../config/environment','./intSalesforceConfiguration.attributes','int_salesforce_configurations','util','../../config/logger','api','moment'];(function(_0x2cce72,_0x432665){var _0xe78e46=function(_0x5d2992){while(--_0x5d2992){_0x2cce72['push'](_0x2cce72['shift']());}};_0xe78e46(++_0x432665);}(_0xf85e,0x18c));var _0xef85=function(_0xee29b8,_0x27136a){_0xee29b8=_0xee29b8-0x0;var _0x1ecc43=_0xf85e[_0xee29b8];return _0x1ecc43;};'use strict';var _=require('lodash');var util=require(_0xef85('0x0'));var logger=require(_0xef85('0x1'))(_0xef85('0x2'));var moment=require(_0xef85('0x3'));var BPromise=require(_0xef85('0x4'));var rp=require(_0xef85('0x5'));var fs=require('fs');var path=require(_0xef85('0x6'));var rimraf=require('rimraf');var config=require(_0xef85('0x7'));var attributes=require(_0xef85('0x8'));module['exports']=function(_0x1acbd0,_0x3d0082){return _0x1acbd0['define']('SalesforceConfiguration',attributes,{'tableName':_0xef85('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x436a=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','SalesforceConfiguration','int_salesforce_configurations','../../config/logger'];(function(_0x287406,_0x40c4b2){var _0x2f0b18=function(_0x392cc5){while(--_0x392cc5){_0x287406['push'](_0x287406['shift']());}};_0x2f0b18(++_0x40c4b2);}(_0x436a,0xf1));var _0xa436=function(_0x2eab12,_0xbc1637){_0x2eab12=_0x2eab12-0x0;var _0x348fb=_0x436a[_0x2eab12];return _0x348fb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa436('0x0'))(_0xa436('0x1'));var moment=require(_0xa436('0x2'));var BPromise=require(_0xa436('0x3'));var rp=require(_0xa436('0x4'));var fs=require('fs');var path=require(_0xa436('0x5'));var rimraf=require(_0xa436('0x6'));var config=require(_0xa436('0x7'));var attributes=require('./intSalesforceConfiguration.attributes');module['exports']=function(_0x3677d0,_0x196c27){return _0x3677d0[_0xa436('0x8')](_0xa436('0x9'),attributes,{'tableName':_0xa436('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0ad7e16..201ca23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c6f=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','util','bluebird','randomstring','ioredis'];(function(_0x309b7d,_0x4ebcba){var _0x3cd371=function(_0x1538ad){while(--_0x1538ad){_0x309b7d['push'](_0x309b7d['shift']());}};_0x3cd371(++_0x4ebcba);}(_0x1c6f,0x1c9));var _0xf1c6=function(_0x45fd10,_0x5a1081){_0x45fd10=_0x45fd10-0x0;var _0x45c634=_0x1c6f[_0x45fd10];return _0x45c634;};'use strict';var _=require(_0xf1c6('0x0'));var util=require(_0xf1c6('0x1'));var moment=require('moment');var BPromise=require(_0xf1c6('0x2'));var rs=require(_0xf1c6('0x3'));var fs=require('fs');var Redis=require(_0xf1c6('0x4'));var db=require(_0xf1c6('0x5'))['db'];var utils=require(_0xf1c6('0x6'));var logger=require('../../config/logger')(_0xf1c6('0x7'));var config=require(_0xf1c6('0x8'));var jayson=require(_0xf1c6('0x9'));var client=jayson[_0xf1c6('0xa')][_0xf1c6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3ed79b,_0x13fede,_0x1e96f2){return new BPromise(function(_0x4d1c42,_0x39bd5c){return client['request'](_0x3ed79b,_0x1e96f2)[_0xf1c6('0xc')](function(_0x36b71f){logger[_0xf1c6('0xd')](_0xf1c6('0xe'),_0x13fede,'request\x20sent');logger[_0xf1c6('0xf')](_0xf1c6('0x10'),_0x13fede,_0xf1c6('0x11'),JSON[_0xf1c6('0x12')](_0x36b71f));if(_0x36b71f[_0xf1c6('0x13')]){if(_0x36b71f[_0xf1c6('0x13')][_0xf1c6('0x14')]===0x1f4){logger[_0xf1c6('0x13')](_0xf1c6('0xe'),_0x13fede,_0x36b71f[_0xf1c6('0x13')]['message']);return _0x39bd5c(_0x36b71f[_0xf1c6('0x13')][_0xf1c6('0x15')]);}logger[_0xf1c6('0x13')]('SalesforceConfiguration,\x20%s,\x20%s',_0x13fede,_0x36b71f['error'][_0xf1c6('0x15')]);return _0x4d1c42(_0x36b71f['error'][_0xf1c6('0x15')]);}else{logger[_0xf1c6('0xd')](_0xf1c6('0xe'),_0x13fede,'request\x20sent');_0x4d1c42(_0x36b71f['result']['message']);}})['catch'](function(_0x5739fc){logger['error']('SalesforceConfiguration,\x20%s,\x20%s',_0x13fede,_0x5739fc);_0x39bd5c(_0x5739fc);});});}
\ No newline at end of file
+var _0x0aa0=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x487a22,_0x3ca9f3){var _0x717f5f=function(_0x3c3853){while(--_0x3c3853){_0x487a22['push'](_0x487a22['shift']());}};_0x717f5f(++_0x3ca9f3);}(_0x0aa0,0xb3));var _0x00aa=function(_0x201ea7,_0x4d6f28){_0x201ea7=_0x201ea7-0x0;var _0x1787ba=_0x0aa0[_0x201ea7];return _0x1787ba;};'use strict';var _=require(_0x00aa('0x0'));var util=require(_0x00aa('0x1'));var moment=require(_0x00aa('0x2'));var BPromise=require(_0x00aa('0x3'));var rs=require(_0x00aa('0x4'));var fs=require('fs');var Redis=require(_0x00aa('0x5'));var db=require(_0x00aa('0x6'))['db'];var utils=require(_0x00aa('0x7'));var logger=require(_0x00aa('0x8'))(_0x00aa('0x9'));var config=require(_0x00aa('0xa'));var jayson=require(_0x00aa('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4fb867,_0xfae3ee,_0x53e57c){return new BPromise(function(_0x4cba3f,_0x1c6efe){return client['request'](_0x4fb867,_0x53e57c)[_0x00aa('0xc')](function(_0x5046da){logger[_0x00aa('0xd')](_0x00aa('0xe'),_0xfae3ee,_0x00aa('0xf'));logger['debug'](_0x00aa('0x10'),_0xfae3ee,_0x00aa('0xf'),JSON[_0x00aa('0x11')](_0x5046da));if(_0x5046da[_0x00aa('0x12')]){if(_0x5046da[_0x00aa('0x12')][_0x00aa('0x13')]===0x1f4){logger[_0x00aa('0x12')](_0x00aa('0xe'),_0xfae3ee,_0x5046da[_0x00aa('0x12')][_0x00aa('0x14')]);return _0x1c6efe(_0x5046da['error'][_0x00aa('0x14')]);}logger[_0x00aa('0x12')](_0x00aa('0xe'),_0xfae3ee,_0x5046da[_0x00aa('0x12')]['message']);return _0x4cba3f(_0x5046da[_0x00aa('0x12')]['message']);}else{logger[_0x00aa('0xd')](_0x00aa('0xe'),_0xfae3ee,_0x00aa('0xf'));_0x4cba3f(_0x5046da[_0x00aa('0x15')][_0x00aa('0x14')]);}})[_0x00aa('0x16')](function(_0x171709){logger[_0x00aa('0x12')]('SalesforceConfiguration,\x20%s,\x20%s',_0xfae3ee,_0x171709);_0x1c6efe(_0x171709);});});}
\ No newline at end of file
index 3f6610a..d535f8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8950=['./intSalesforceField.controller','get','isAuthenticated','show','post','/:id','update','delete','exports','multer','util','path','connect-timeout','../../components/auth/service','../../config/environment'];(function(_0x46a4bb,_0x2b1149){var _0x45660f=function(_0x1fe1b5){while(--_0x1fe1b5){_0x46a4bb['push'](_0x46a4bb['shift']());}};_0x45660f(++_0x2b1149);}(_0x8950,0x171));var _0x0895=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x8950[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0x0895('0x0'));var util=require(_0x0895('0x1'));var path=require(_0x0895('0x2'));var timeout=require(_0x0895('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0895('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x0895('0x5'));var controller=require(_0x0895('0x6'));router[_0x0895('0x7')]('/',auth[_0x0895('0x8')](),controller['index']);router['get']('/:id',auth[_0x0895('0x8')](),controller[_0x0895('0x9')]);router[_0x0895('0xa')]('/',auth[_0x0895('0x8')](),controller['create']);router['put'](_0x0895('0xb'),auth[_0x0895('0x8')](),controller[_0x0895('0xc')]);router[_0x0895('0xd')](_0x0895('0xb'),auth[_0x0895('0x8')](),controller['destroy']);module[_0x0895('0xe')]=router;
\ No newline at end of file
+var _0x10e4=['/:id','show','post','create','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x30044c,_0x270f89){var _0xcedea2=function(_0x4b7e0a){while(--_0x4b7e0a){_0x30044c['push'](_0x30044c['shift']());}};_0xcedea2(++_0x270f89);}(_0x10e4,0x68));var _0x410e=function(_0x123541,_0x7fc0c0){_0x123541=_0x123541-0x0;var _0x1d5c21=_0x10e4[_0x123541];return _0x1d5c21;};'use strict';var multer=require(_0x410e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x410e('0x1'));var express=require(_0x410e('0x2'));var router=express[_0x410e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x410e('0x4'));var interaction=require(_0x410e('0x5'));var config=require(_0x410e('0x6'));var controller=require('./intSalesforceField.controller');router[_0x410e('0x7')]('/',auth[_0x410e('0x8')](),controller[_0x410e('0x9')]);router[_0x410e('0x7')](_0x410e('0xa'),auth[_0x410e('0x8')](),controller[_0x410e('0xb')]);router[_0x410e('0xc')]('/',auth[_0x410e('0x8')](),controller[_0x410e('0xd')]);router[_0x410e('0xe')](_0x410e('0xa'),auth[_0x410e('0x8')](),controller[_0x410e('0xf')]);router[_0x410e('0x10')](_0x410e('0xa'),auth[_0x410e('0x8')](),controller[_0x410e('0x11')]);module[_0x410e('0x12')]=router;
\ No newline at end of file
index 9c17ebb..b8ce18d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15e2=['variable','customVariable','picklist','STRING','sequelize','exports','ENUM','string'];(function(_0x579b84,_0x1f6922){var _0x423049=function(_0x32a1ac){while(--_0x32a1ac){_0x579b84['push'](_0x579b84['shift']());}};_0x423049(++_0x1f6922);}(_0x15e2,0x7c));var _0x215e=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0x15e2[_0x513aa5];return _0x1a1a7c;};'use strict';var Sequelize=require(_0x215e('0x0'));module[_0x215e('0x1')]={'type':{'type':Sequelize[_0x215e('0x2')](_0x215e('0x3'),_0x215e('0x4'),_0x215e('0x5'),'keyValue',_0x215e('0x6')),'defaultValue':_0x215e('0x3')},'content':{'type':Sequelize[_0x215e('0x7')]},'key':{'type':Sequelize[_0x215e('0x7')]},'keyType':{'type':Sequelize[_0x215e('0x2')]('string',_0x215e('0x4'),_0x215e('0x5'))},'keyContent':{'type':Sequelize[_0x215e('0x7')]},'idField':{'type':Sequelize[_0x215e('0x7')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xeab7=['STRING','sequelize','exports','ENUM','variable','customVariable','picklist','string'];(function(_0x1178a3,_0xf7b8a8){var _0x4b8fd8=function(_0x417485){while(--_0x417485){_0x1178a3['push'](_0x1178a3['shift']());}};_0x4b8fd8(++_0xf7b8a8);}(_0xeab7,0x149));var _0x7eab=function(_0x45a039,_0x5091dd){_0x45a039=_0x45a039-0x0;var _0x22ba40=_0xeab7[_0x45a039];return _0x22ba40;};'use strict';var Sequelize=require(_0x7eab('0x0'));module[_0x7eab('0x1')]={'type':{'type':Sequelize[_0x7eab('0x2')]('string',_0x7eab('0x3'),_0x7eab('0x4'),'keyValue',_0x7eab('0x5')),'defaultValue':_0x7eab('0x6')},'content':{'type':Sequelize[_0x7eab('0x7')]},'key':{'type':Sequelize[_0x7eab('0x7')]},'keyType':{'type':Sequelize[_0x7eab('0x2')](_0x7eab('0x6'),_0x7eab('0x3'),_0x7eab('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x7eab('0x7')]},'variableName':{'type':Sequelize[_0x7eab('0x7')]}};
\ No newline at end of file
index 0c9acaa..e0681e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x843b=['create','body','update','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','reject','then','destroy','error','name','send','index','SalesforceField','rawAttributes','fieldName','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','options','count','includeAll','findAll','rows','catch','show','params','include','find'];(function(_0x5e800a,_0x3d2d3e){var _0xe64935=function(_0x3654b4){while(--_0x3654b4){_0x5e800a['push'](_0x5e800a['shift']());}};_0xe64935(++_0x3d2d3e);}(_0x843b,0x1f4));var _0xb843=function(_0x1e64d0,_0x430bb7){_0x1e64d0=_0x1e64d0-0x0;var _0x544098=_0x843b[_0x1e64d0];return _0x544098;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb843('0x0'));var rp=require(_0xb843('0x1'));var moment=require(_0xb843('0x2'));var BPromise=require(_0xb843('0x3'));var Mustache=require(_0xb843('0x4'));var util=require('util');var path=require(_0xb843('0x5'));var sox=require('sox');var csv=require(_0xb843('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb843('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xb843('0x8'));var jsforce=require(_0xb843('0x9'));var deskjs=require(_0xb843('0xa'));var toCsv=require(_0xb843('0x6'));var querystring=require(_0xb843('0xb'));var Papa=require(_0xb843('0xc'));var Redis=require(_0xb843('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xb843('0xe'));var as=require(_0xb843('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb843('0x10'))(_0xb843('0x11'));var utils=require('../../config/utils');var config=require(_0xb843('0x12'));var licenseUtil=require(_0xb843('0x13'));var db=require(_0xb843('0x14'))['db'];function respondWithStatusCode(_0xe83a14,_0x58e93d){_0x58e93d=_0x58e93d||0xcc;return function(_0x1cf5e6){if(_0x1cf5e6){return _0xe83a14[_0xb843('0x15')](_0x58e93d);}return _0xe83a14[_0xb843('0x16')](_0x58e93d)[_0xb843('0x17')]();};}function respondWithResult(_0x54622a,_0x12cdb8){_0x12cdb8=_0x12cdb8||0xc8;return function(_0x7413ee){if(_0x7413ee){return _0x54622a['status'](_0x12cdb8)['json'](_0x7413ee);}};}function respondWithFilteredResult(_0x5cf6c4,_0xe9586c){return function(_0x40d4b1){if(_0x40d4b1){var _0xf8b823=typeof _0xe9586c[_0xb843('0x18')]===_0xb843('0x19')&&typeof _0xe9586c['limit']===_0xb843('0x19');var _0x1e5e74=_0x40d4b1['count'];var _0x48f581=_0xf8b823?0x0:_0xe9586c['offset'];var _0x42c53d=_0xf8b823?_0x40d4b1['count']:_0xe9586c['offset']+_0xe9586c[_0xb843('0x1a')];var _0x40aa89;if(_0x42c53d>=_0x1e5e74){_0x42c53d=_0x1e5e74;_0x40aa89=0xc8;}else{_0x40aa89=0xce;}_0x5cf6c4[_0xb843('0x16')](_0x40aa89);return _0x5cf6c4[_0xb843('0x1b')]('Content-Range',_0x48f581+'-'+_0x42c53d+'/'+_0x1e5e74)['json'](_0x40d4b1);}return null;};}function patchUpdates(_0x4f0e4c){return function(_0x16d791){try{jsonpatch['apply'](_0x16d791,_0x4f0e4c,!![]);}catch(_0x27625d){return BPromise[_0xb843('0x1c')](_0x27625d);}return _0x16d791['save']();};}function saveUpdates(_0x3e578c,_0x28d155){return function(_0x50ac3c){if(_0x50ac3c){return _0x50ac3c['update'](_0x3e578c)[_0xb843('0x1d')](function(_0x325eef){return _0x325eef;});}return null;};}function removeEntity(_0x5b86a8,_0x559835){return function(_0x1fb3a1){if(_0x1fb3a1){return _0x1fb3a1[_0xb843('0x1e')]()[_0xb843('0x1d')](function(){_0x5b86a8[_0xb843('0x16')](0xcc)[_0xb843('0x17')]();});}};}function handleEntityNotFound(_0x2eb8c7,_0x5b1ee0){return function(_0x41347b){if(!_0x41347b){_0x2eb8c7[_0xb843('0x15')](0x194);}return _0x41347b;};}function handleError(_0x2e5305,_0xe312ee){_0xe312ee=_0xe312ee||0x1f4;return function(_0x464a24){logger[_0xb843('0x1f')](_0x464a24['stack']);if(_0x464a24[_0xb843('0x20')]){delete _0x464a24[_0xb843('0x20')];}_0x2e5305['status'](_0xe312ee)[_0xb843('0x21')](_0x464a24);};}exports[_0xb843('0x22')]=function(_0x2bf48f,_0x580338){var _0x1119af={},_0x49dcd6={},_0x50d32c={'count':0x0,'rows':[]};var _0x4330fd=_['map'](db[_0xb843('0x23')][_0xb843('0x24')],function(_0x1e721c){return{'name':_0x1e721c[_0xb843('0x25')],'type':_0x1e721c['type'][_0xb843('0x26')]};});_0x49dcd6['model']=_[_0xb843('0x27')](_0x4330fd,_0xb843('0x20'));_0x49dcd6[_0xb843('0x28')]=_[_0xb843('0x29')](_0x2bf48f[_0xb843('0x28')]);_0x49dcd6['filters']=_[_0xb843('0x2a')](_0x49dcd6[_0xb843('0x2b')],_0x49dcd6[_0xb843('0x28')]);_0x1119af[_0xb843('0x2c')]=_[_0xb843('0x2a')](_0x49dcd6[_0xb843('0x2b')],qs[_0xb843('0x2d')](_0x2bf48f['query'][_0xb843('0x2d')]));_0x1119af[_0xb843('0x2c')]=_0x1119af[_0xb843('0x2c')][_0xb843('0x2e')]?_0x1119af[_0xb843('0x2c')]:_0x49dcd6[_0xb843('0x2b')];if(!_0x2bf48f[_0xb843('0x28')][_0xb843('0x2f')](_0xb843('0x30'))){_0x1119af[_0xb843('0x1a')]=qs[_0xb843('0x1a')](_0x2bf48f[_0xb843('0x28')][_0xb843('0x1a')]);_0x1119af[_0xb843('0x18')]=qs[_0xb843('0x18')](_0x2bf48f[_0xb843('0x28')][_0xb843('0x18')]);}_0x1119af[_0xb843('0x31')]=qs[_0xb843('0x32')](_0x2bf48f['query'][_0xb843('0x32')]);_0x1119af[_0xb843('0x33')]=qs[_0xb843('0x34')](_[_0xb843('0x35')](_0x2bf48f[_0xb843('0x28')],_0x49dcd6[_0xb843('0x34')]),_0x4330fd);if(_0x2bf48f[_0xb843('0x28')][_0xb843('0x36')]){_0x1119af['where']=_['merge'](_0x1119af['where'],{'$or':_[_0xb843('0x27')](_0x4330fd,function(_0x4f6449){if(_0x4f6449[_0xb843('0x37')]!==_0xb843('0x38')){var _0x3f7c56={};_0x3f7c56[_0x4f6449[_0xb843('0x20')]]={'$like':'%'+_0x2bf48f[_0xb843('0x28')][_0xb843('0x36')]+'%'};return _0x3f7c56;}})});}_0x1119af=_[_0xb843('0x39')]({},_0x1119af,_0x2bf48f[_0xb843('0x3a')]);var _0x381f03={'where':_0x1119af['where']};return db['SalesforceField']['count'](_0x381f03)['then'](function(_0x31f1c3){_0x50d32c[_0xb843('0x3b')]=_0x31f1c3;if(_0x2bf48f[_0xb843('0x28')][_0xb843('0x3c')]){_0x1119af['include']=[{'all':!![]}];}return db[_0xb843('0x23')][_0xb843('0x3d')](_0x1119af);})[_0xb843('0x1d')](function(_0x5e5577){_0x50d32c[_0xb843('0x3e')]=_0x5e5577;return _0x50d32c;})[_0xb843('0x1d')](respondWithFilteredResult(_0x580338,_0x1119af))[_0xb843('0x3f')](handleError(_0x580338,null));};exports[_0xb843('0x40')]=function(_0x15bc77,_0x1f68e4){var _0x47e7c7={'raw':!![],'where':{'id':_0x15bc77[_0xb843('0x41')]['id']}},_0xcda567={};_0xcda567[_0xb843('0x2b')]=_['keys'](db[_0xb843('0x23')][_0xb843('0x24')]);_0xcda567[_0xb843('0x28')]=_['keys'](_0x15bc77[_0xb843('0x28')]);_0xcda567[_0xb843('0x34')]=_[_0xb843('0x2a')](_0xcda567['model'],_0xcda567[_0xb843('0x28')]);_0x47e7c7['attributes']=_[_0xb843('0x2a')](_0xcda567[_0xb843('0x2b')],qs['fields'](_0x15bc77[_0xb843('0x28')][_0xb843('0x2d')]));_0x47e7c7[_0xb843('0x2c')]=_0x47e7c7[_0xb843('0x2c')][_0xb843('0x2e')]?_0x47e7c7[_0xb843('0x2c')]:_0xcda567[_0xb843('0x2b')];if(_0x15bc77[_0xb843('0x28')][_0xb843('0x3c')]){_0x47e7c7[_0xb843('0x42')]=[{'all':!![]}];}_0x47e7c7=_[_0xb843('0x39')]({},_0x47e7c7,_0x15bc77['options']);return db[_0xb843('0x23')][_0xb843('0x43')](_0x47e7c7)[_0xb843('0x1d')](handleEntityNotFound(_0x1f68e4,null))[_0xb843('0x1d')](respondWithResult(_0x1f68e4,null))[_0xb843('0x3f')](handleError(_0x1f68e4,null));};exports[_0xb843('0x44')]=function(_0x1b267d,_0x59202f){return db[_0xb843('0x23')][_0xb843('0x44')](_0x1b267d[_0xb843('0x45')],{})[_0xb843('0x1d')](respondWithResult(_0x59202f,0xc9))[_0xb843('0x3f')](handleError(_0x59202f,null));};exports[_0xb843('0x46')]=function(_0x32ccdf,_0x44da14){if(_0x32ccdf[_0xb843('0x45')]['id']){delete _0x32ccdf[_0xb843('0x45')]['id'];}return db['SalesforceField'][_0xb843('0x43')]({'where':{'id':_0x32ccdf[_0xb843('0x41')]['id']}})['then'](handleEntityNotFound(_0x44da14,null))[_0xb843('0x1d')](saveUpdates(_0x32ccdf[_0xb843('0x45')],null))[_0xb843('0x1d')](respondWithResult(_0x44da14,null))[_0xb843('0x3f')](handleError(_0x44da14,null));};exports[_0xb843('0x1e')]=function(_0x1aa724,_0x15c994){return db[_0xb843('0x23')][_0xb843('0x43')]({'where':{'id':_0x1aa724[_0xb843('0x41')]['id']}})['then'](handleEntityNotFound(_0x15c994,null))['then'](removeEntity(_0x15c994,null))[_0xb843('0x3f')](handleError(_0x15c994,null));};
\ No newline at end of file
+var _0x90de=['findAll','rows','keys','fields','includeAll','find','create','body','catch','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','error','name','map','SalesforceField','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','hasOwnProperty','nolimit','order','where','pick','filter','VIRTUAL','include'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x90de,0x94));var _0xe90d=function(_0x9c8c83,_0x16ebdd){_0x9c8c83=_0x9c8c83-0x0;var _0x4636ac=_0x90de[_0x9c8c83];return _0x4636ac;};'use strict';var emlformat=require(_0xe90d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe90d('0x1'));var jsonpatch=require(_0xe90d('0x2'));var rp=require(_0xe90d('0x3'));var moment=require(_0xe90d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe90d('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe90d('0x6'));var fs=require('fs');var fs_extra=require(_0xe90d('0x7'));var _=require(_0xe90d('0x8'));var squel=require(_0xe90d('0x9'));var crypto=require('crypto');var jsforce=require(_0xe90d('0xa'));var deskjs=require(_0xe90d('0xb'));var toCsv=require(_0xe90d('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe90d('0xd'));var authService=require(_0xe90d('0xe'));var qs=require(_0xe90d('0xf'));var as=require(_0xe90d('0x10'));var hardwareService=require(_0xe90d('0x11'));var logger=require(_0xe90d('0x12'))(_0xe90d('0x13'));var utils=require(_0xe90d('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xe90d('0x15'));var db=require(_0xe90d('0x16'))['db'];function respondWithStatusCode(_0x312869,_0x2273d4){_0x2273d4=_0x2273d4||0xcc;return function(_0x155955){if(_0x155955){return _0x312869[_0xe90d('0x17')](_0x2273d4);}return _0x312869[_0xe90d('0x18')](_0x2273d4)[_0xe90d('0x19')]();};}function respondWithResult(_0x155e80,_0x2a8a36){_0x2a8a36=_0x2a8a36||0xc8;return function(_0x2c281a){if(_0x2c281a){return _0x155e80['status'](_0x2a8a36)[_0xe90d('0x1a')](_0x2c281a);}};}function respondWithFilteredResult(_0x25cf4d,_0x52131b){return function(_0x406e7e){if(_0x406e7e){var _0x31cc0a=typeof _0x52131b[_0xe90d('0x1b')]===_0xe90d('0x1c')&&typeof _0x52131b[_0xe90d('0x1d')]===_0xe90d('0x1c');var _0x4845c2=_0x406e7e[_0xe90d('0x1e')];var _0x50c311=_0x31cc0a?0x0:_0x52131b[_0xe90d('0x1b')];var _0x2c7772=_0x31cc0a?_0x406e7e[_0xe90d('0x1e')]:_0x52131b[_0xe90d('0x1b')]+_0x52131b[_0xe90d('0x1d')];var _0xd364e8;if(_0x2c7772>=_0x4845c2){_0x2c7772=_0x4845c2;_0xd364e8=0xc8;}else{_0xd364e8=0xce;}_0x25cf4d[_0xe90d('0x18')](_0xd364e8);return _0x25cf4d[_0xe90d('0x1f')](_0xe90d('0x20'),_0x50c311+'-'+_0x2c7772+'/'+_0x4845c2)[_0xe90d('0x1a')](_0x406e7e);}return null;};}function patchUpdates(_0x3b3831){return function(_0x5381a7){try{jsonpatch[_0xe90d('0x21')](_0x5381a7,_0x3b3831,!![]);}catch(_0x54ad7c){return BPromise['reject'](_0x54ad7c);}return _0x5381a7[_0xe90d('0x22')]();};}function saveUpdates(_0x357504,_0x491501){return function(_0x3d6300){if(_0x3d6300){return _0x3d6300[_0xe90d('0x23')](_0x357504)['then'](function(_0x5a7b38){return _0x5a7b38;});}return null;};}function removeEntity(_0xc09084,_0x3820ef){return function(_0x2c9746){if(_0x2c9746){return _0x2c9746[_0xe90d('0x24')]()[_0xe90d('0x25')](function(){_0xc09084['status'](0xcc)[_0xe90d('0x19')]();});}};}function handleEntityNotFound(_0x4410fc,_0x5758b8){return function(_0x48ab7b){if(!_0x48ab7b){_0x4410fc[_0xe90d('0x17')](0x194);}return _0x48ab7b;};}function handleError(_0x2fb147,_0x6c7613){_0x6c7613=_0x6c7613||0x1f4;return function(_0x1b08cf){logger[_0xe90d('0x26')](_0x1b08cf['stack']);if(_0x1b08cf[_0xe90d('0x27')]){delete _0x1b08cf[_0xe90d('0x27')];}_0x2fb147['status'](_0x6c7613)['send'](_0x1b08cf);};}exports['index']=function(_0x4aff82,_0x1323f6){var _0x38a0fe={},_0x58883e={},_0x4b9b4d={'count':0x0,'rows':[]};var _0x19c96c=_[_0xe90d('0x28')](db[_0xe90d('0x29')][_0xe90d('0x2a')],function(_0x34112d){return{'name':_0x34112d[_0xe90d('0x2b')],'type':_0x34112d[_0xe90d('0x2c')][_0xe90d('0x2d')]};});_0x58883e[_0xe90d('0x2e')]=_[_0xe90d('0x28')](_0x19c96c,'name');_0x58883e[_0xe90d('0x2f')]=_['keys'](_0x4aff82[_0xe90d('0x2f')]);_0x58883e[_0xe90d('0x30')]=_['intersection'](_0x58883e[_0xe90d('0x2e')],_0x58883e['query']);_0x38a0fe['attributes']=_[_0xe90d('0x31')](_0x58883e[_0xe90d('0x2e')],qs['fields'](_0x4aff82[_0xe90d('0x2f')]['fields']));_0x38a0fe['attributes']=_0x38a0fe[_0xe90d('0x32')]['length']?_0x38a0fe[_0xe90d('0x32')]:_0x58883e[_0xe90d('0x2e')];if(!_0x4aff82['query'][_0xe90d('0x33')](_0xe90d('0x34'))){_0x38a0fe[_0xe90d('0x1d')]=qs[_0xe90d('0x1d')](_0x4aff82[_0xe90d('0x2f')]['limit']);_0x38a0fe[_0xe90d('0x1b')]=qs[_0xe90d('0x1b')](_0x4aff82[_0xe90d('0x2f')]['offset']);}_0x38a0fe[_0xe90d('0x35')]=qs['sort'](_0x4aff82[_0xe90d('0x2f')]['sort']);_0x38a0fe[_0xe90d('0x36')]=qs[_0xe90d('0x30')](_[_0xe90d('0x37')](_0x4aff82['query'],_0x58883e[_0xe90d('0x30')]),_0x19c96c);if(_0x4aff82[_0xe90d('0x2f')][_0xe90d('0x38')]){_0x38a0fe[_0xe90d('0x36')]=_['merge'](_0x38a0fe[_0xe90d('0x36')],{'$or':_['map'](_0x19c96c,function(_0x742db6){if(_0x742db6[_0xe90d('0x2c')]!==_0xe90d('0x39')){var _0x237abb={};_0x237abb[_0x742db6[_0xe90d('0x27')]]={'$like':'%'+_0x4aff82[_0xe90d('0x2f')][_0xe90d('0x38')]+'%'};return _0x237abb;}})});}_0x38a0fe=_['merge']({},_0x38a0fe,_0x4aff82['options']);var _0x5ccddd={'where':_0x38a0fe[_0xe90d('0x36')]};return db['SalesforceField'][_0xe90d('0x1e')](_0x5ccddd)['then'](function(_0x40d0c5){_0x4b9b4d[_0xe90d('0x1e')]=_0x40d0c5;if(_0x4aff82[_0xe90d('0x2f')]['includeAll']){_0x38a0fe[_0xe90d('0x3a')]=[{'all':!![]}];}return db['SalesforceField'][_0xe90d('0x3b')](_0x38a0fe);})['then'](function(_0x45ccce){_0x4b9b4d[_0xe90d('0x3c')]=_0x45ccce;return _0x4b9b4d;})[_0xe90d('0x25')](respondWithFilteredResult(_0x1323f6,_0x38a0fe))['catch'](handleError(_0x1323f6,null));};exports['show']=function(_0x132381,_0x72714f){var _0x49a80d={'raw':!![],'where':{'id':_0x132381['params']['id']}},_0x322539={};_0x322539[_0xe90d('0x2e')]=_['keys'](db[_0xe90d('0x29')]['rawAttributes']);_0x322539[_0xe90d('0x2f')]=_[_0xe90d('0x3d')](_0x132381[_0xe90d('0x2f')]);_0x322539[_0xe90d('0x30')]=_[_0xe90d('0x31')](_0x322539[_0xe90d('0x2e')],_0x322539[_0xe90d('0x2f')]);_0x49a80d[_0xe90d('0x32')]=_[_0xe90d('0x31')](_0x322539[_0xe90d('0x2e')],qs[_0xe90d('0x3e')](_0x132381['query'][_0xe90d('0x3e')]));_0x49a80d[_0xe90d('0x32')]=_0x49a80d[_0xe90d('0x32')]['length']?_0x49a80d[_0xe90d('0x32')]:_0x322539[_0xe90d('0x2e')];if(_0x132381[_0xe90d('0x2f')][_0xe90d('0x3f')]){_0x49a80d['include']=[{'all':!![]}];}_0x49a80d=_['merge']({},_0x49a80d,_0x132381['options']);return db['SalesforceField'][_0xe90d('0x40')](_0x49a80d)['then'](handleEntityNotFound(_0x72714f,null))[_0xe90d('0x25')](respondWithResult(_0x72714f,null))['catch'](handleError(_0x72714f,null));};exports[_0xe90d('0x41')]=function(_0x26ca76,_0x7e4207){return db[_0xe90d('0x29')][_0xe90d('0x41')](_0x26ca76[_0xe90d('0x42')],{})['then'](respondWithResult(_0x7e4207,0xc9))[_0xe90d('0x43')](handleError(_0x7e4207,null));};exports[_0xe90d('0x23')]=function(_0x12fd86,_0x524213){if(_0x12fd86[_0xe90d('0x42')]['id']){delete _0x12fd86[_0xe90d('0x42')]['id'];}return db[_0xe90d('0x29')]['find']({'where':{'id':_0x12fd86[_0xe90d('0x44')]['id']}})[_0xe90d('0x25')](handleEntityNotFound(_0x524213,null))[_0xe90d('0x25')](saveUpdates(_0x12fd86['body'],null))[_0xe90d('0x25')](respondWithResult(_0x524213,null))['catch'](handleError(_0x524213,null));};exports[_0xe90d('0x24')]=function(_0x4bf517,_0x43f844){return db[_0xe90d('0x29')][_0xe90d('0x40')]({'where':{'id':_0x4bf517[_0xe90d('0x44')]['id']}})[_0xe90d('0x25')](handleEntityNotFound(_0x43f844,null))[_0xe90d('0x25')](removeEntity(_0x43f844,null))[_0xe90d('0x43')](handleError(_0x43f844,null));};
\ No newline at end of file
index 1de32f4..c8bdc09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33b6=['salesforce_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','SalesforceField'];(function(_0x5aa21c,_0x930a47){var _0x5828c9=function(_0x2fea2a){while(--_0x2fea2a){_0x5aa21c['push'](_0x5aa21c['shift']());}};_0x5828c9(++_0x930a47);}(_0x33b6,0x1c3));var _0x633b=function(_0x32a6b6,_0x5b4051){_0x32a6b6=_0x32a6b6-0x0;var _0x1f0d46=_0x33b6[_0x32a6b6];return _0x1f0d46;};'use strict';var _=require(_0x633b('0x0'));var util=require('util');var logger=require(_0x633b('0x1'))(_0x633b('0x2'));var moment=require(_0x633b('0x3'));var BPromise=require(_0x633b('0x4'));var rp=require(_0x633b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x633b('0x6'));var config=require(_0x633b('0x7'));var attributes=require('./intSalesforceField.attributes');module[_0x633b('0x8')]=function(_0x7906d7,_0x5978fc){return _0x7906d7[_0x633b('0x9')](_0x633b('0xa'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x633b('0xb'),'fields':[_0x633b('0xc'),_0x633b('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc23f=['int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports'];(function(_0x297314,_0x518c38){var _0x4cff6b=function(_0x521693){while(--_0x521693){_0x297314['push'](_0x297314['shift']());}};_0x4cff6b(++_0x518c38);}(_0xc23f,0x93));var _0xfc23=function(_0x4d4ad4,_0x32eb89){_0x4d4ad4=_0x4d4ad4-0x0;var _0x174aa1=_0xc23f[_0x4d4ad4];return _0x174aa1;};'use strict';var _=require(_0xfc23('0x0'));var util=require('util');var logger=require(_0xfc23('0x1'))('api');var moment=require('moment');var BPromise=require(_0xfc23('0x2'));var rp=require(_0xfc23('0x3'));var fs=require('fs');var path=require(_0xfc23('0x4'));var rimraf=require(_0xfc23('0x5'));var config=require(_0xfc23('0x6'));var attributes=require(_0xfc23('0x7'));module[_0xfc23('0x8')]=function(_0x262620,_0x442426){return _0x262620['define']('SalesforceField',attributes,{'tableName':_0xfc23('0x9'),'paranoid':![],'indexes':[{'name':_0xfc23('0xa'),'fields':[_0xfc23('0xb'),_0xfc23('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5b6af3e..1504839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa220=['info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','moment','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x3b0912,_0x39d739){var _0xa8f339=function(_0x6a31ab){while(--_0x6a31ab){_0x3b0912['push'](_0x3b0912['shift']());}};_0xa8f339(++_0x39d739);}(_0xa220,0x14d));var _0x0a22=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xa220[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x0a22('0x0'));var util=require('util');var moment=require(_0x0a22('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0a22('0x2'));var logger=require('../../config/logger')(_0x0a22('0x3'));var config=require(_0x0a22('0x4'));var jayson=require(_0x0a22('0x5'));var client=jayson[_0x0a22('0x6')][_0x0a22('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x193ffe,_0x131ddb,_0x4144c8){return new BPromise(function(_0x32f335,_0x1407f3){return client['request'](_0x193ffe,_0x4144c8)[_0x0a22('0x8')](function(_0x2b12c5){logger[_0x0a22('0x9')](_0x0a22('0xa'),_0x131ddb,_0x0a22('0xb'));logger[_0x0a22('0xc')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x131ddb,'request\x20sent',JSON[_0x0a22('0xd')](_0x2b12c5));if(_0x2b12c5[_0x0a22('0xe')]){if(_0x2b12c5[_0x0a22('0xe')][_0x0a22('0xf')]===0x1f4){logger['error'](_0x0a22('0xa'),_0x131ddb,_0x2b12c5[_0x0a22('0xe')][_0x0a22('0x10')]);return _0x1407f3(_0x2b12c5[_0x0a22('0xe')][_0x0a22('0x10')]);}logger['error'](_0x0a22('0xa'),_0x131ddb,_0x2b12c5[_0x0a22('0xe')][_0x0a22('0x10')]);return _0x32f335(_0x2b12c5['error'][_0x0a22('0x10')]);}else{logger['info']('SalesforceField,\x20%s,\x20%s',_0x131ddb,_0x0a22('0xb'));_0x32f335(_0x2b12c5['result'][_0x0a22('0x10')]);}})[_0x0a22('0x11')](function(_0xeadd6d){logger[_0x0a22('0xe')]('SalesforceField,\x20%s,\x20%s',_0x131ddb,_0xeadd6d);_0x1407f3(_0xeadd6d);});});}
\ No newline at end of file
+var _0x7a18=['then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x61eac5,_0x160f72){var _0x3e6bad=function(_0x1dd90c){while(--_0x1dd90c){_0x61eac5['push'](_0x61eac5['shift']());}};_0x3e6bad(++_0x160f72);}(_0x7a18,0x79));var _0x87a1=function(_0xf34b0a,_0x11e116){_0xf34b0a=_0xf34b0a-0x0;var _0x5021e1=_0x7a18[_0xf34b0a];return _0x5021e1;};'use strict';var _=require(_0x87a1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x87a1('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x87a1('0x2'));var db=require(_0x87a1('0x3'))['db'];var utils=require(_0x87a1('0x4'));var logger=require(_0x87a1('0x5'))(_0x87a1('0x6'));var config=require(_0x87a1('0x7'));var jayson=require(_0x87a1('0x8'));var client=jayson[_0x87a1('0x9')][_0x87a1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28d2e,_0xa481,_0x386721){return new BPromise(function(_0x94d72,_0x4aa618){return client['request'](_0x28d2e,_0x386721)[_0x87a1('0xb')](function(_0x170c12){logger[_0x87a1('0xc')](_0x87a1('0xd'),_0xa481,_0x87a1('0xe'));logger[_0x87a1('0xf')](_0x87a1('0x10'),_0xa481,_0x87a1('0xe'),JSON[_0x87a1('0x11')](_0x170c12));if(_0x170c12[_0x87a1('0x12')]){if(_0x170c12['error'][_0x87a1('0x13')]===0x1f4){logger['error'](_0x87a1('0xd'),_0xa481,_0x170c12[_0x87a1('0x12')][_0x87a1('0x14')]);return _0x4aa618(_0x170c12[_0x87a1('0x12')]['message']);}logger['error'](_0x87a1('0xd'),_0xa481,_0x170c12[_0x87a1('0x12')]['message']);return _0x94d72(_0x170c12[_0x87a1('0x12')][_0x87a1('0x14')]);}else{logger[_0x87a1('0xc')](_0x87a1('0xd'),_0xa481,_0x87a1('0xe'));_0x94d72(_0x170c12['result'][_0x87a1('0x14')]);}})[_0x87a1('0x15')](function(_0x5b920e){logger[_0x87a1('0x12')](_0x87a1('0xd'),_0xa481,_0x5b920e);_0x4aa618(_0x5b920e);});});}
\ No newline at end of file
index 874b335..d1408da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd20e=['/:id','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x3ff10c,_0x56a1c0){var _0x303df4=function(_0x38266a){while(--_0x38266a){_0x3ff10c['push'](_0x3ff10c['shift']());}};_0x303df4(++_0x56a1c0);}(_0xd20e,0xbb));var _0xed20=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xd20e[_0x1969a7];return _0x3d665f;};'use strict';var multer=require(_0xed20('0x0'));var util=require(_0xed20('0x1'));var path=require(_0xed20('0x2'));var timeout=require(_0xed20('0x3'));var express=require('express');var router=express[_0xed20('0x4')]();var fs_extra=require(_0xed20('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xed20('0x6'));var config=require(_0xed20('0x7'));var controller=require('./intServicenowAccount.controller');router[_0xed20('0x8')]('/',auth[_0xed20('0x9')](),controller[_0xed20('0xa')]);router['get'](_0xed20('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xed20('0x8')](_0xed20('0xc'),auth[_0xed20('0x9')](),controller['getConfigurations']);router[_0xed20('0x8')](_0xed20('0xd'),auth[_0xed20('0x9')](),controller[_0xed20('0xe')]);router[_0xed20('0xf')]('/',auth['isAuthenticated'](),controller[_0xed20('0x10')]);router['post'](_0xed20('0xc'),auth[_0xed20('0x9')](),controller[_0xed20('0x11')]);router[_0xed20('0x12')](_0xed20('0xb'),auth[_0xed20('0x9')](),controller[_0xed20('0x13')]);router['delete'](_0xed20('0xb'),auth[_0xed20('0x9')](),controller[_0xed20('0x14')]);module[_0xed20('0x15')]=router;
\ No newline at end of file
+var _0x0849=['put','update','delete','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x0849,0xca));var _0x9084=function(_0xfed299,_0x21b8d0){_0xfed299=_0xfed299-0x0;var _0x4ef1f2=_0x0849[_0xfed299];return _0x4ef1f2;};'use strict';var multer=require(_0x9084('0x0'));var util=require(_0x9084('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9084('0x2'));var router=express[_0x9084('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9084('0x4'));var interaction=require(_0x9084('0x5'));var config=require(_0x9084('0x6'));var controller=require(_0x9084('0x7'));router['get']('/',auth[_0x9084('0x8')](),controller[_0x9084('0x9')]);router[_0x9084('0xa')](_0x9084('0xb'),auth[_0x9084('0x8')](),controller['show']);router[_0x9084('0xa')]('/:id/configurations',auth[_0x9084('0x8')](),controller['getConfigurations']);router['get'](_0x9084('0xc'),auth[_0x9084('0x8')](),controller[_0x9084('0xd')]);router[_0x9084('0xe')]('/',auth[_0x9084('0x8')](),controller[_0x9084('0xf')]);router[_0x9084('0xe')](_0x9084('0x10'),auth[_0x9084('0x8')](),controller[_0x9084('0x11')]);router[_0x9084('0x12')]('/:id',auth[_0x9084('0x8')](),controller[_0x9084('0x13')]);router[_0x9084('0x14')]('/:id',auth[_0x9084('0x8')](),controller['destroy']);module[_0x9084('0x15')]=router;
\ No newline at end of file
index 9a79ff1..4582102 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2be1=['remoteUri','sequelize','exports','STRING'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x2be1,0x71));var _0x12be=function(_0x40f5b7,_0xb3243e){_0x40f5b7=_0x40f5b7-0x0;var _0x3c884a=_0x2be1[_0x40f5b7];return _0x3c884a;};'use strict';var Sequelize=require(_0x12be('0x0'));module[_0x12be('0x1')]={'name':{'type':Sequelize[_0x12be('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x12be('0x2')],'unique':'username'},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x12be('0x2')],'unique':_0x12be('0x3')},'serverUrl':{'type':Sequelize[_0x12be('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x69f8=['remoteUri','sequelize','exports','STRING','username'];(function(_0x3b3ada,_0x476383){var _0x5f124d=function(_0x56c5eb){while(--_0x56c5eb){_0x3b3ada['push'](_0x3b3ada['shift']());}};_0x5f124d(++_0x476383);}(_0x69f8,0x1af));var _0x869f=function(_0x596507,_0x51f430){_0x596507=_0x596507-0x0;var _0x30e58f=_0x69f8[_0x596507];return _0x30e58f;};'use strict';var Sequelize=require(_0x869f('0x0'));module[_0x869f('0x1')]={'name':{'type':Sequelize[_0x869f('0x2')]},'description':{'type':Sequelize[_0x869f('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x869f('0x3')},'password':{'type':Sequelize[_0x869f('0x2')]},'email':{'type':Sequelize[_0x869f('0x2')]},'remoteUri':{'type':Sequelize[_0x869f('0x2')],'unique':_0x869f('0x4')},'serverUrl':{'type':Sequelize[_0x869f('0x2')],'allowNull':![]}};
\ No newline at end of file
index 8ab40e2..d9bda9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1a1=['where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','includeAll','create','find','body','destroy','getConfigurations','findOne','addConfiguration','Subjects','getSubjects','channel','Descriptions','getFields','made_sla','subcategory','notify','severity','parent','caused_by','watch_list','child_incidents','hold_reason','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','state','sys_created_by','knowledge','calendar_stc','closed_at','cmdb_ci','impact','active','work_notes_list','priority','sys_domain_path','rfc','expected_start','opened_at','business_duration','group_list','work_end','resolved_at','caller_id','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','closed_by','follow_up','parent_incident','sys_id','reopened_by','incident_state','urgency','company','activity_due','assigned_to','comments','sla_due','approval','comments_and_work_notes','due_date','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','username','password','email','remoteUri','slice','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','GET','result','log','assign','includes','forEach','internalType','label','push','all','TCL:\x20_object','remove','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','ServiceNow\x20error:\x20','test','send','Wrong\x20credentials','statusCode','boolean','True','sys_choice?sysparm_query=name=incident^element=','inactive','false','value','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','reject','save','then','error','stack','name','ServicenowAccount','rawAttributes','fieldName','type','key','model','map','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xd1a1,0x7d));var _0x1d1a=function(_0x372e96,_0x3fb445){_0x372e96=_0x372e96-0x0;var _0x3f8208=_0xd1a1[_0x372e96];return _0x3f8208;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1d1a('0x0'));var zipdir=require(_0x1d1a('0x1'));var jsonpatch=require(_0x1d1a('0x2'));var rp=require(_0x1d1a('0x3'));var moment=require(_0x1d1a('0x4'));var BPromise=require(_0x1d1a('0x5'));var Mustache=require('mustache');var util=require(_0x1d1a('0x6'));var path=require(_0x1d1a('0x7'));var sox=require('sox');var csv=require(_0x1d1a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1d1a('0x9'));var squel=require(_0x1d1a('0xa'));var crypto=require(_0x1d1a('0xb'));var jsforce=require(_0x1d1a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1d1a('0x8'));var querystring=require(_0x1d1a('0xd'));var Papa=require('papaparse');var Redis=require(_0x1d1a('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x1d1a('0xf'));var as=require(_0x1d1a('0x10'));var hardwareService=require(_0x1d1a('0x11'));var logger=require(_0x1d1a('0x12'))(_0x1d1a('0x13'));var utils=require('../../config/utils');var config=require(_0x1d1a('0x14'));var licenseUtil=require(_0x1d1a('0x15'));var db=require(_0x1d1a('0x16'))['db'];var integrations=require(_0x1d1a('0x17'));function respondWithStatusCode(_0x11bf73,_0x4740bc){_0x4740bc=_0x4740bc||0xcc;return function(_0xec80ad){if(_0xec80ad){return _0x11bf73[_0x1d1a('0x18')](_0x4740bc);}return _0x11bf73['status'](_0x4740bc)[_0x1d1a('0x19')]();};}function respondWithResult(_0x5851ff,_0x107e61){_0x107e61=_0x107e61||0xc8;return function(_0x48c3ef){if(_0x48c3ef){return _0x5851ff[_0x1d1a('0x1a')](_0x107e61)[_0x1d1a('0x1b')](_0x48c3ef);}};}function respondWithFilteredResult(_0x25a613,_0x3319f0){return function(_0x47897b){if(_0x47897b){var _0x1ccd14=typeof _0x3319f0[_0x1d1a('0x1c')]===_0x1d1a('0x1d')&&typeof _0x3319f0[_0x1d1a('0x1e')]===_0x1d1a('0x1d');var _0x57a21b=_0x47897b[_0x1d1a('0x1f')];var _0x50fe34=_0x1ccd14?0x0:_0x3319f0[_0x1d1a('0x1c')];var _0x3db90f=_0x1ccd14?_0x47897b['count']:_0x3319f0['offset']+_0x3319f0[_0x1d1a('0x1e')];var _0x2b91aa;if(_0x3db90f>=_0x57a21b){_0x3db90f=_0x57a21b;_0x2b91aa=0xc8;}else{_0x2b91aa=0xce;}_0x25a613['status'](_0x2b91aa);return _0x25a613['set'](_0x1d1a('0x20'),_0x50fe34+'-'+_0x3db90f+'/'+_0x57a21b)[_0x1d1a('0x1b')](_0x47897b);}return null;};}function patchUpdates(_0x55d4d2){return function(_0x20e4fe){try{jsonpatch['apply'](_0x20e4fe,_0x55d4d2,!![]);}catch(_0x4c621c){return BPromise[_0x1d1a('0x21')](_0x4c621c);}return _0x20e4fe[_0x1d1a('0x22')]();};}function saveUpdates(_0x3e182a,_0x540505){return function(_0x1bc061){if(_0x1bc061){return _0x1bc061['update'](_0x3e182a)[_0x1d1a('0x23')](function(_0x3a894a){return _0x3a894a;});}return null;};}function removeEntity(_0x4fbc70,_0x4d0123){return function(_0x18c417){if(_0x18c417){return _0x18c417['destroy']()[_0x1d1a('0x23')](function(){_0x4fbc70[_0x1d1a('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x549f36,_0x484bd6){return function(_0x1cb55a){if(!_0x1cb55a){_0x549f36[_0x1d1a('0x18')](0x194);}return _0x1cb55a;};}function handleError(_0x32da76,_0x1a4c8e){_0x1a4c8e=_0x1a4c8e||0x1f4;return function(_0x30df7e){logger[_0x1d1a('0x24')](_0x30df7e[_0x1d1a('0x25')]);if(_0x30df7e[_0x1d1a('0x26')]){delete _0x30df7e[_0x1d1a('0x26')];}_0x32da76['status'](_0x1a4c8e)['send'](_0x30df7e);};}exports['index']=function(_0x47e008,_0x45a489){var _0x42a88b={},_0x2f5299={},_0x2626bc={'count':0x0,'rows':[]};var _0x68a05c=_['map'](db[_0x1d1a('0x27')][_0x1d1a('0x28')],function(_0x2dbe75){return{'name':_0x2dbe75[_0x1d1a('0x29')],'type':_0x2dbe75[_0x1d1a('0x2a')][_0x1d1a('0x2b')]};});_0x2f5299[_0x1d1a('0x2c')]=_[_0x1d1a('0x2d')](_0x68a05c,_0x1d1a('0x26'));_0x2f5299[_0x1d1a('0x2e')]=_['keys'](_0x47e008['query']);_0x2f5299['filters']=_['intersection'](_0x2f5299['model'],_0x2f5299[_0x1d1a('0x2e')]);_0x42a88b[_0x1d1a('0x2f')]=_[_0x1d1a('0x30')](_0x2f5299['model'],qs[_0x1d1a('0x31')](_0x47e008[_0x1d1a('0x2e')]['fields']));_0x42a88b[_0x1d1a('0x2f')]=_0x42a88b['attributes'][_0x1d1a('0x32')]?_0x42a88b[_0x1d1a('0x2f')]:_0x2f5299[_0x1d1a('0x2c')];if(!_0x47e008[_0x1d1a('0x2e')][_0x1d1a('0x33')](_0x1d1a('0x34'))){_0x42a88b[_0x1d1a('0x1e')]=qs['limit'](_0x47e008[_0x1d1a('0x2e')][_0x1d1a('0x1e')]);_0x42a88b['offset']=qs['offset'](_0x47e008[_0x1d1a('0x2e')][_0x1d1a('0x1c')]);}_0x42a88b[_0x1d1a('0x35')]=qs[_0x1d1a('0x36')](_0x47e008['query']['sort']);_0x42a88b['where']=qs['filters'](_[_0x1d1a('0x37')](_0x47e008[_0x1d1a('0x2e')],_0x2f5299[_0x1d1a('0x38')]),_0x68a05c);if(_0x47e008[_0x1d1a('0x2e')][_0x1d1a('0x39')]){_0x42a88b[_0x1d1a('0x3a')]=_[_0x1d1a('0x3b')](_0x42a88b[_0x1d1a('0x3a')],{'$or':_[_0x1d1a('0x2d')](_0x68a05c,function(_0x164fc4){if(_0x164fc4['type']!==_0x1d1a('0x3c')){var _0x58785f={};_0x58785f[_0x164fc4[_0x1d1a('0x26')]]={'$like':'%'+_0x47e008[_0x1d1a('0x2e')][_0x1d1a('0x39')]+'%'};return _0x58785f;}})});}_0x42a88b=_[_0x1d1a('0x3b')]({},_0x42a88b,_0x47e008[_0x1d1a('0x3d')]);var _0x4be8ce={'where':_0x42a88b[_0x1d1a('0x3a')]};return db[_0x1d1a('0x27')][_0x1d1a('0x1f')](_0x4be8ce)['then'](function(_0x158ea6){_0x2626bc[_0x1d1a('0x1f')]=_0x158ea6;if(_0x47e008[_0x1d1a('0x2e')]['includeAll']){_0x42a88b[_0x1d1a('0x3e')]=[{'all':!![]}];}return db[_0x1d1a('0x27')][_0x1d1a('0x3f')](_0x42a88b);})[_0x1d1a('0x23')](function(_0x2a81a8){_0x2626bc[_0x1d1a('0x40')]=_0x2a81a8;return _0x2626bc;})['then'](respondWithFilteredResult(_0x45a489,_0x42a88b))[_0x1d1a('0x41')](handleError(_0x45a489,null));};exports[_0x1d1a('0x42')]=function(_0x55b803,_0x48a783){var _0x58e6ea={'raw':![],'where':{'id':_0x55b803[_0x1d1a('0x43')]['id']}},_0x5d14c0={};_0x5d14c0['model']=_['keys'](db['ServicenowAccount'][_0x1d1a('0x28')]);_0x5d14c0[_0x1d1a('0x2e')]=_[_0x1d1a('0x44')](_0x55b803['query']);_0x5d14c0['filters']=_['intersection'](_0x5d14c0[_0x1d1a('0x2c')],_0x5d14c0['query']);_0x58e6ea[_0x1d1a('0x2f')]=_[_0x1d1a('0x30')](_0x5d14c0[_0x1d1a('0x2c')],qs[_0x1d1a('0x31')](_0x55b803['query'][_0x1d1a('0x31')]));_0x58e6ea['attributes']=_0x58e6ea[_0x1d1a('0x2f')][_0x1d1a('0x32')]?_0x58e6ea[_0x1d1a('0x2f')]:_0x5d14c0['model'];if(_0x55b803['query'][_0x1d1a('0x45')]){_0x58e6ea[_0x1d1a('0x3e')]=[{'all':!![]}];}_0x58e6ea=_[_0x1d1a('0x3b')]({},_0x58e6ea,_0x55b803[_0x1d1a('0x3d')]);return db[_0x1d1a('0x27')]['find'](_0x58e6ea)[_0x1d1a('0x23')](handleEntityNotFound(_0x48a783,null))[_0x1d1a('0x23')](respondWithResult(_0x48a783,null))[_0x1d1a('0x41')](handleError(_0x48a783,null));};exports[_0x1d1a('0x46')]=function(_0x19ee12,_0x1eeeca){return db[_0x1d1a('0x27')][_0x1d1a('0x46')](_0x19ee12['body'],{})[_0x1d1a('0x23')](respondWithResult(_0x1eeeca,0xc9))['catch'](handleError(_0x1eeeca,null));};exports['update']=function(_0x17aadf,_0x3695e7){if(_0x17aadf['body']['id']){delete _0x17aadf['body']['id'];}return db[_0x1d1a('0x27')][_0x1d1a('0x47')]({'where':{'id':_0x17aadf[_0x1d1a('0x43')]['id']}})[_0x1d1a('0x23')](handleEntityNotFound(_0x3695e7,null))['then'](saveUpdates(_0x17aadf[_0x1d1a('0x48')],null))[_0x1d1a('0x23')](respondWithResult(_0x3695e7,null))['catch'](handleError(_0x3695e7,null));};exports[_0x1d1a('0x49')]=function(_0x1da387,_0x324b2d){return db['ServicenowAccount'][_0x1d1a('0x47')]({'where':{'id':_0x1da387['params']['id']}})['then'](handleEntityNotFound(_0x324b2d,null))[_0x1d1a('0x23')](removeEntity(_0x324b2d,null))[_0x1d1a('0x41')](handleError(_0x324b2d,null));};exports[_0x1d1a('0x4a')]=function(_0x4e8c08,_0x8faf06,_0x57d6a8){var _0xc30d66={};var _0x38e8f4={};var _0x224717;var _0x397ba4;return db[_0x1d1a('0x27')][_0x1d1a('0x4b')]({'where':{'id':_0x4e8c08[_0x1d1a('0x43')]['id']}})[_0x1d1a('0x23')](handleEntityNotFound(_0x8faf06,null))['then'](function(_0x2ba76a){if(_0x2ba76a){_0x224717=_0x2ba76a;_0x38e8f4[_0x1d1a('0x2c')]=_['keys'](db['ServicenowConfiguration']['rawAttributes']);_0x38e8f4[_0x1d1a('0x2e')]=_[_0x1d1a('0x44')](_0x4e8c08[_0x1d1a('0x2e')]);_0x38e8f4[_0x1d1a('0x38')]=_[_0x1d1a('0x30')](_0x38e8f4[_0x1d1a('0x2c')],_0x38e8f4[_0x1d1a('0x2e')]);_0xc30d66[_0x1d1a('0x2f')]=_[_0x1d1a('0x30')](_0x38e8f4['model'],qs[_0x1d1a('0x31')](_0x4e8c08['query']['fields']));_0xc30d66['attributes']=_0xc30d66[_0x1d1a('0x2f')]['length']?_0xc30d66['attributes']:_0x38e8f4['model'];_0xc30d66['order']=qs[_0x1d1a('0x36')](_0x4e8c08[_0x1d1a('0x2e')][_0x1d1a('0x36')]);_0xc30d66['where']=qs[_0x1d1a('0x38')](_['pick'](_0x4e8c08[_0x1d1a('0x2e')],_0x38e8f4[_0x1d1a('0x38')]));if(_0x4e8c08[_0x1d1a('0x2e')][_0x1d1a('0x39')]){_0xc30d66['where']=_[_0x1d1a('0x3b')](_0xc30d66[_0x1d1a('0x3a')],{'$or':_[_0x1d1a('0x2d')](_0xc30d66[_0x1d1a('0x2f')],function(_0x5604f3){var _0x3f3360={};_0x3f3360[_0x5604f3]={'$like':'%'+_0x4e8c08['query']['filter']+'%'};return _0x3f3360;})});}_0xc30d66=_[_0x1d1a('0x3b')]({},_0xc30d66,_0x4e8c08[_0x1d1a('0x3d')]);return _0x224717[_0x1d1a('0x4a')](_0xc30d66);}})[_0x1d1a('0x23')](function(_0x11b8a0){if(_0x11b8a0){_0x397ba4=_0x11b8a0['length'];if(!_0x4e8c08[_0x1d1a('0x2e')][_0x1d1a('0x33')](_0x1d1a('0x34'))){_0xc30d66['limit']=qs[_0x1d1a('0x1e')](_0x4e8c08['query']['limit']);_0xc30d66['offset']=qs[_0x1d1a('0x1c')](_0x4e8c08['query'][_0x1d1a('0x1c')]);}return _0x224717['getConfigurations'](_0xc30d66);}})['then'](function(_0x1f90b7){if(_0x1f90b7){return _0x1f90b7?{'count':_0x397ba4,'rows':_0x1f90b7}:null;}})[_0x1d1a('0x23')](respondWithResult(_0x8faf06,null))[_0x1d1a('0x41')](handleError(_0x8faf06,null));};exports[_0x1d1a('0x4c')]=function(_0x3a9e3f,_0x202832,_0x32900c){if(_0x3a9e3f['body']['id']){delete _0x3a9e3f[_0x1d1a('0x48')]['id'];}return db[_0x1d1a('0x27')][_0x1d1a('0x4b')]({'where':{'id':_0x3a9e3f['params']['id']}})[_0x1d1a('0x23')](handleEntityNotFound(_0x202832,null))[_0x1d1a('0x23')](function(_0x1faabe){if(_0x1faabe){_0x3a9e3f['body']['AccountId']=_0x1faabe['id'];_0x3a9e3f[_0x1d1a('0x48')][_0x1d1a('0x4d')]=integrations[_0x1d1a('0x4e')](_0x3a9e3f['body'][_0x1d1a('0x4f')],_0x3a9e3f[_0x1d1a('0x48')][_0x1d1a('0x2a')]);_0x3a9e3f[_0x1d1a('0x48')][_0x1d1a('0x50')]=integrations['getDescriptions'](_0x3a9e3f[_0x1d1a('0x48')][_0x1d1a('0x4f')],_0x3a9e3f[_0x1d1a('0x48')][_0x1d1a('0x2a')]);return db['ServicenowConfiguration']['create'](_0x3a9e3f[_0x1d1a('0x48')],{'include':[{'model':db['ServicenowField'],'as':_0x1d1a('0x4d')},{'model':db['ServicenowField'],'as':_0x1d1a('0x50')}]});}return null;})[_0x1d1a('0x23')](respondWithResult(_0x202832,null))[_0x1d1a('0x41')](handleError(_0x202832,null));};exports[_0x1d1a('0x51')]=function(_0x320d86,_0x17133c,_0x17617b){var _0x2d45af=[_0x1d1a('0x52'),'hold_reason','knowledge',_0x1d1a('0x53'),'close_code',_0x1d1a('0x54'),'incident_state',_0x1d1a('0x55'),'category'];var _0x5afcd0=[_0x1d1a('0x56'),'made_sla',_0x1d1a('0x57'),_0x1d1a('0x58'),'upon_reject','sys_updated_on',_0x1d1a('0x59'),_0x1d1a('0x5a'),_0x1d1a('0x5b'),_0x1d1a('0x5c'),_0x1d1a('0x5d'),_0x1d1a('0x5e'),_0x1d1a('0x5f'),_0x1d1a('0x60'),_0x1d1a('0x61'),'sys_domain',_0x1d1a('0x62'),_0x1d1a('0x63'),_0x1d1a('0x64'),'order',_0x1d1a('0x65'),_0x1d1a('0x66'),_0x1d1a('0x67'),'delivery_plan',_0x1d1a('0x68'),_0x1d1a('0x69'),_0x1d1a('0x6a'),'business_service',_0x1d1a('0x6b'),_0x1d1a('0x6c'),_0x1d1a('0x6d'),'time_worked',_0x1d1a('0x6e'),_0x1d1a('0x6f'),_0x1d1a('0x70'),_0x1d1a('0x71'),_0x1d1a('0x72'),'reopened_time',_0x1d1a('0x73'),_0x1d1a('0x74'),_0x1d1a('0x75'),'subcategory',_0x1d1a('0x76'),_0x1d1a('0x77'),'close_code',_0x1d1a('0x78'),_0x1d1a('0x79'),_0x1d1a('0x7a'),_0x1d1a('0x7b'),_0x1d1a('0x7c'),_0x1d1a('0x7d'),_0x1d1a('0x7e'),_0x1d1a('0x7f'),'notify',_0x1d1a('0x80'),'close_notes',_0x1d1a('0x81'),_0x1d1a('0x82'),_0x1d1a('0x83'),_0x1d1a('0x84'),'contact_type',_0x1d1a('0x85'),_0x1d1a('0x86'),_0x1d1a('0x87'),'problem_id',_0x1d1a('0x88'),'reassignment_count',_0x1d1a('0x89'),_0x1d1a('0x8a'),_0x1d1a('0x55'),_0x1d1a('0x8b'),_0x1d1a('0x8c'),_0x1d1a('0x8d'),_0x1d1a('0x8e'),_0x1d1a('0x8f'),'sys_mod_count',_0x1d1a('0x90'),_0x1d1a('0x91'),_0x1d1a('0x92'),_0x1d1a('0x93'),_0x1d1a('0x94'),_0x1d1a('0x95'),'category'];var _0x2320f2='';var _0x101453='';var _0x1b9ea8=[];var _0x9f452b='';var _0x26146c='';var _0x3d2aaf=[];var _0x4720f6='';var _0x541bca='';var _0x3cb0e3={};var _0xfaf9d='';return db[_0x1d1a('0x27')][_0x1d1a('0x4b')]({'where':{'id':_0x320d86[_0x1d1a('0x43')]['id']},'attributes':['id',_0x1d1a('0x96'),_0x1d1a('0x97'),_0x1d1a('0x98'),_0x1d1a('0x99'),'serverUrl']})[_0x1d1a('0x23')](handleEntityNotFound(_0x17133c,null))[_0x1d1a('0x23')](function(_0x3b8e3d){if(_0x3b8e3d){_0xfaf9d=_0x3b8e3d[_0x1d1a('0x99')];var _0x4d9e7e=_0xfaf9d[_0x1d1a('0x9a')](-0x1);if(_0x4d9e7e==='/'){_0xfaf9d=_0xfaf9d['substring'](0x0,_0xfaf9d[_0x1d1a('0x9b')](_0x4d9e7e));}_0x541bca=util[_0x1d1a('0x9c')](_0x1d1a('0x9d'),_0xfaf9d);_0x4720f6=util[_0x1d1a('0x9c')](_0x1d1a('0x9e'),_0xfaf9d);_0x3cb0e3={'user':_0x3b8e3d[_0x1d1a('0x96')],'pass':_0x3b8e3d[_0x1d1a('0x97')]};var _0x1fdce5={'method':_0x1d1a('0x9f'),'uri':_0x541bca+'incident?sysparm_display_value=all','auth':_0x3cb0e3,'json':!![]};return rp(_0x1fdce5);}})['then'](function(_0x673460){if(_0x673460[_0x1d1a('0xa0')][_0x1d1a('0x32')]>0x0){_0x2320f2=_0x673460[_0x1d1a('0xa0')];}console[_0x1d1a('0xa1')]('incident\x20table\x20objects',_0x2320f2);_0x3d2aaf=[];_0x101453=Object[_0x1d1a('0xa2')]([],_0x2320f2);_['remove'](_0x101453,function(_0x56ab26){return!_0x2d45af[_0x1d1a('0xa3')](_0x56ab26[_0x1d1a('0x26')]);});_0x101453[_0x1d1a('0xa4')](function(_0x4d5417){var _0x112889=createFieldObject(_0x4720f6,_0x3cb0e3,_0x4d5417[_0x1d1a('0xa5')],_0x4d5417['name'],_0x4d5417[_0x1d1a('0xa6')],![]);_0x3d2aaf[_0x1d1a('0xa7')](_0x112889);});return Promise[_0x1d1a('0xa8')](_0x3d2aaf);})[_0x1d1a('0x23')](function(_0x52593c){_0x1b9ea8=_0x52593c;_0x9f452b=Object[_0x1d1a('0xa2')]([],_0x2320f2);console['log'](_0x1d1a('0xa9'),_0x2320f2);_[_0x1d1a('0xaa')](_0x9f452b,function(_0x1d2be2){return _0x5afcd0[_0x1d1a('0xa3')](_0x1d2be2[_0x1d1a('0x26')]);});console['log'](_0x1d1a('0xab'),_0x9f452b);_0x3d2aaf=[];_0x9f452b[_0x1d1a('0xa4')](function(_0x15aac5){var _0x2f9c4d=createFieldObject(_0x4720f6,_0x3cb0e3,_0x15aac5['internalType'],_0x15aac5[_0x1d1a('0x26')],_0x15aac5[_0x1d1a('0xa6')],!![]);_0x3d2aaf[_0x1d1a('0xa7')](_0x2f9c4d);});return Promise[_0x1d1a('0xa8')](_0x3d2aaf);})['then'](function(_0x5a23e8){_0x26146c=_0x5a23e8;var _0x2bb238=_0x1b9ea8['concat'](_0x26146c);return{'count':_0x2bb238[_0x1d1a('0x32')],'rows':_0x2bb238};})[_0x1d1a('0x23')](respondWithResult(_0x17133c,null))[_0x1d1a('0x41')](function(_0x4961c5){console[_0x1d1a('0xa1')](_0x1d1a('0xac')+_0x4961c5);var _0x4d7083=_0x320d86[_0x1d1a('0x2e')][_0x1d1a('0xad')]?0x1f4:_0x4961c5['statusCode']||0x1f4;logger[_0x1d1a('0x24')](_0x4961c5[_0x1d1a('0x25')]);delete _0x4961c5[_0x1d1a('0x26')];if(_0x4d7083===0x191){_0x4d7083=0x190;}_0x17133c[_0x1d1a('0x1a')](_0x4d7083)[_0x1d1a('0xae')](_0x320d86[_0x1d1a('0x2e')][_0x1d1a('0xad')]?{'message':_0x1d1a('0xaf'),'statusCode':_0x4961c5[_0x1d1a('0xb0')]}:_0x4961c5);});};function createFieldObject(_0x468532,_0x27c3c6,_0x3267f4,_0x41b0c3,_0x59e4bc,_0xa0fe4e){return new Promise(function(_0x852d3e,_0x3ea605){var _0x3248a7={'id':_0x41b0c3,'name':_0x59e4bc,'custom':_0xa0fe4e};if(_0x3267f4===_0x1d1a('0xb1')){_0x3248a7[_0x1d1a('0x3d')]=[{'name':_0x1d1a('0xb2'),'value':'true'},{'name':'False','value':'false'}];_0x852d3e(_0x3248a7);}else{var _0x27d20e={'method':_0x1d1a('0x9f'),'uri':_0x468532+_0x1d1a('0xb3')+_0x41b0c3,'auth':_0x27c3c6,'json':!![]};return rp(_0x27d20e)[_0x1d1a('0x23')](function(_0x282ced){var _0x107668=[];if(_0x282ced[_0x1d1a('0xa0')][_0x1d1a('0x32')]>0x0){_0x282ced[_0x1d1a('0xa0')][_0x1d1a('0xa4')](function(_0x24c0ac){if(_0x24c0ac[_0x1d1a('0xb4')]===_0x1d1a('0xb5')){var _0x71a419={'name':_0x24c0ac[_0x1d1a('0xa6')],'value':_0x24c0ac[_0x1d1a('0xb6')]};_0x107668[_0x1d1a('0xa7')](_0x71a419);}});}_0x3248a7[_0x1d1a('0x3d')]=_0x107668;if(_0x3248a7[_0x1d1a('0x3d')][_0x1d1a('0x32')]>0x0){_0x852d3e(_0x3248a7);}else{if(_0xa0fe4e==![]){_0x852d3e();}else{_0x852d3e(_0x3248a7);}}});}});}
\ No newline at end of file
+var _0x2d9f=['close_code','notify','severity','category','parent','caused_by','watch_list','upon_reject','child_incidents','number','sys_updated_by','opened_by','user_input','sys_created_on','state','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','opened_at','group_list','work_end','reopened_time','resolved_at','work_notes','correlation_display','delivery_task','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','contact_type','reopened_by','incident_state','urgency','problem_id','company','activity_due','assigned_to','comments','sla_due','approval','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','location','username','remoteUri','serverUrl','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','remove','includes','forEach','push','label','all','concat','ServiceNow\x20error:\x20','statusCode','stack','test','boolean','True','true','False','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','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','status','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','end','sendStatus','error','name','index','ServicenowAccount','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','map','options','includeAll','include','findAll','rows','show','merge','find','create','catch','body','params','findOne','ServicenowConfiguration','filter','getConfigurations','AccountId','Subjects','getSubjects','channel','Descriptions','ServicenowField','getFields','made_sla','knowledge','subcategory'];(function(_0x233afd,_0x4bcde9){var _0x44e8bd=function(_0x3ce961){while(--_0x3ce961){_0x233afd['push'](_0x233afd['shift']());}};_0x44e8bd(++_0x4bcde9);}(_0x2d9f,0x111));var _0xf2d9=function(_0x463f44,_0xc071ff){_0x463f44=_0x463f44-0x0;var _0x304163=_0x2d9f[_0x463f44];return _0x304163;};'use strict';var emlformat=require(_0xf2d9('0x0'));var rimraf=require(_0xf2d9('0x1'));var zipdir=require(_0xf2d9('0x2'));var jsonpatch=require(_0xf2d9('0x3'));var rp=require(_0xf2d9('0x4'));var moment=require(_0xf2d9('0x5'));var BPromise=require(_0xf2d9('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xf2d9('0x7'));var csv=require(_0xf2d9('0x8'));var ejs=require(_0xf2d9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf2d9('0xa'));var squel=require('squel');var crypto=require(_0xf2d9('0xb'));var jsforce=require(_0xf2d9('0xc'));var deskjs=require(_0xf2d9('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf2d9('0xe'));var Redis=require(_0xf2d9('0xf'));var authService=require(_0xf2d9('0x10'));var qs=require(_0xf2d9('0x11'));var as=require(_0xf2d9('0x12'));var hardwareService=require(_0xf2d9('0x13'));var logger=require(_0xf2d9('0x14'))(_0xf2d9('0x15'));var utils=require(_0xf2d9('0x16'));var config=require(_0xf2d9('0x17'));var licenseUtil=require(_0xf2d9('0x18'));var db=require(_0xf2d9('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x31cc04,_0x37be00){_0x37be00=_0x37be00||0xcc;return function(_0xfee826){if(_0xfee826){return _0x31cc04['sendStatus'](_0x37be00);}return _0x31cc04[_0xf2d9('0x1a')](_0x37be00)['end']();};}function respondWithResult(_0x448e76,_0x2c5d98){_0x2c5d98=_0x2c5d98||0xc8;return function(_0xe49ee6){if(_0xe49ee6){return _0x448e76[_0xf2d9('0x1a')](_0x2c5d98)['json'](_0xe49ee6);}};}function respondWithFilteredResult(_0x411408,_0x37ab49){return function(_0x1b9a23){if(_0x1b9a23){var _0x51ec4d=typeof _0x37ab49[_0xf2d9('0x1b')]===_0xf2d9('0x1c')&&typeof _0x37ab49[_0xf2d9('0x1d')]==='undefined';var _0x2fa09a=_0x1b9a23[_0xf2d9('0x1e')];var _0x56f254=_0x51ec4d?0x0:_0x37ab49[_0xf2d9('0x1b')];var _0x2181bd=_0x51ec4d?_0x1b9a23[_0xf2d9('0x1e')]:_0x37ab49[_0xf2d9('0x1b')]+_0x37ab49[_0xf2d9('0x1d')];var _0x61da00;if(_0x2181bd>=_0x2fa09a){_0x2181bd=_0x2fa09a;_0x61da00=0xc8;}else{_0x61da00=0xce;}_0x411408[_0xf2d9('0x1a')](_0x61da00);return _0x411408[_0xf2d9('0x1f')]('Content-Range',_0x56f254+'-'+_0x2181bd+'/'+_0x2fa09a)[_0xf2d9('0x20')](_0x1b9a23);}return null;};}function patchUpdates(_0x832805){return function(_0x43bcf0){try{jsonpatch[_0xf2d9('0x21')](_0x43bcf0,_0x832805,!![]);}catch(_0x5ba43e){return BPromise[_0xf2d9('0x22')](_0x5ba43e);}return _0x43bcf0[_0xf2d9('0x23')]();};}function saveUpdates(_0x38cc55,_0x1d7851){return function(_0x20e1b8){if(_0x20e1b8){return _0x20e1b8[_0xf2d9('0x24')](_0x38cc55)[_0xf2d9('0x25')](function(_0x379ff7){return _0x379ff7;});}return null;};}function removeEntity(_0x1354c3,_0x8f22e9){return function(_0x3108ee){if(_0x3108ee){return _0x3108ee[_0xf2d9('0x26')]()['then'](function(){_0x1354c3['status'](0xcc)[_0xf2d9('0x27')]();});}};}function handleEntityNotFound(_0x16867c,_0x2bd465){return function(_0x109f4b){if(!_0x109f4b){_0x16867c[_0xf2d9('0x28')](0x194);}return _0x109f4b;};}function handleError(_0x3f9cfd,_0x50cb93){_0x50cb93=_0x50cb93||0x1f4;return function(_0x49568e){logger[_0xf2d9('0x29')](_0x49568e['stack']);if(_0x49568e[_0xf2d9('0x2a')]){delete _0x49568e['name'];}_0x3f9cfd['status'](_0x50cb93)['send'](_0x49568e);};}exports[_0xf2d9('0x2b')]=function(_0x18bfb2,_0x597cc9){var _0xa7170d={},_0x49259d={},_0x3135dd={'count':0x0,'rows':[]};var _0x119498=_['map'](db[_0xf2d9('0x2c')][_0xf2d9('0x2d')],function(_0x155522){return{'name':_0x155522[_0xf2d9('0x2e')],'type':_0x155522[_0xf2d9('0x2f')][_0xf2d9('0x30')]};});_0x49259d['model']=_['map'](_0x119498,_0xf2d9('0x2a'));_0x49259d['query']=_[_0xf2d9('0x31')](_0x18bfb2[_0xf2d9('0x32')]);_0x49259d[_0xf2d9('0x33')]=_[_0xf2d9('0x34')](_0x49259d['model'],_0x49259d[_0xf2d9('0x32')]);_0xa7170d['attributes']=_[_0xf2d9('0x34')](_0x49259d[_0xf2d9('0x35')],qs[_0xf2d9('0x36')](_0x18bfb2[_0xf2d9('0x32')][_0xf2d9('0x36')]));_0xa7170d['attributes']=_0xa7170d[_0xf2d9('0x37')][_0xf2d9('0x38')]?_0xa7170d[_0xf2d9('0x37')]:_0x49259d[_0xf2d9('0x35')];if(!_0x18bfb2[_0xf2d9('0x32')][_0xf2d9('0x39')](_0xf2d9('0x3a'))){_0xa7170d[_0xf2d9('0x1d')]=qs[_0xf2d9('0x1d')](_0x18bfb2[_0xf2d9('0x32')][_0xf2d9('0x1d')]);_0xa7170d[_0xf2d9('0x1b')]=qs[_0xf2d9('0x1b')](_0x18bfb2['query'][_0xf2d9('0x1b')]);}_0xa7170d['order']=qs['sort'](_0x18bfb2[_0xf2d9('0x32')][_0xf2d9('0x3b')]);_0xa7170d[_0xf2d9('0x3c')]=qs[_0xf2d9('0x33')](_[_0xf2d9('0x3d')](_0x18bfb2[_0xf2d9('0x32')],_0x49259d['filters']),_0x119498);if(_0x18bfb2[_0xf2d9('0x32')]['filter']){_0xa7170d[_0xf2d9('0x3c')]=_['merge'](_0xa7170d['where'],{'$or':_[_0xf2d9('0x3e')](_0x119498,function(_0x261779){if(_0x261779[_0xf2d9('0x2f')]!=='VIRTUAL'){var _0x423b63={};_0x423b63[_0x261779[_0xf2d9('0x2a')]]={'$like':'%'+_0x18bfb2[_0xf2d9('0x32')]['filter']+'%'};return _0x423b63;}})});}_0xa7170d=_['merge']({},_0xa7170d,_0x18bfb2[_0xf2d9('0x3f')]);var _0x59bce9={'where':_0xa7170d[_0xf2d9('0x3c')]};return db[_0xf2d9('0x2c')]['count'](_0x59bce9)[_0xf2d9('0x25')](function(_0x1f0d88){_0x3135dd[_0xf2d9('0x1e')]=_0x1f0d88;if(_0x18bfb2['query'][_0xf2d9('0x40')]){_0xa7170d[_0xf2d9('0x41')]=[{'all':!![]}];}return db[_0xf2d9('0x2c')][_0xf2d9('0x42')](_0xa7170d);})[_0xf2d9('0x25')](function(_0x2a3f07){_0x3135dd[_0xf2d9('0x43')]=_0x2a3f07;return _0x3135dd;})[_0xf2d9('0x25')](respondWithFilteredResult(_0x597cc9,_0xa7170d))['catch'](handleError(_0x597cc9,null));};exports[_0xf2d9('0x44')]=function(_0x580ebf,_0x4148f5){var _0x538ca8={'raw':![],'where':{'id':_0x580ebf['params']['id']}},_0x1ff645={};_0x1ff645['model']=_['keys'](db[_0xf2d9('0x2c')][_0xf2d9('0x2d')]);_0x1ff645['query']=_['keys'](_0x580ebf[_0xf2d9('0x32')]);_0x1ff645[_0xf2d9('0x33')]=_['intersection'](_0x1ff645[_0xf2d9('0x35')],_0x1ff645[_0xf2d9('0x32')]);_0x538ca8[_0xf2d9('0x37')]=_[_0xf2d9('0x34')](_0x1ff645[_0xf2d9('0x35')],qs[_0xf2d9('0x36')](_0x580ebf[_0xf2d9('0x32')][_0xf2d9('0x36')]));_0x538ca8[_0xf2d9('0x37')]=_0x538ca8['attributes'][_0xf2d9('0x38')]?_0x538ca8[_0xf2d9('0x37')]:_0x1ff645[_0xf2d9('0x35')];if(_0x580ebf['query'][_0xf2d9('0x40')]){_0x538ca8[_0xf2d9('0x41')]=[{'all':!![]}];}_0x538ca8=_[_0xf2d9('0x45')]({},_0x538ca8,_0x580ebf[_0xf2d9('0x3f')]);return db[_0xf2d9('0x2c')][_0xf2d9('0x46')](_0x538ca8)['then'](handleEntityNotFound(_0x4148f5,null))[_0xf2d9('0x25')](respondWithResult(_0x4148f5,null))['catch'](handleError(_0x4148f5,null));};exports[_0xf2d9('0x47')]=function(_0x1d3506,_0x1d38be){return db[_0xf2d9('0x2c')][_0xf2d9('0x47')](_0x1d3506['body'],{})[_0xf2d9('0x25')](respondWithResult(_0x1d38be,0xc9))[_0xf2d9('0x48')](handleError(_0x1d38be,null));};exports[_0xf2d9('0x24')]=function(_0x3fb5a5,_0x52a743){if(_0x3fb5a5['body']['id']){delete _0x3fb5a5[_0xf2d9('0x49')]['id'];}return db[_0xf2d9('0x2c')][_0xf2d9('0x46')]({'where':{'id':_0x3fb5a5[_0xf2d9('0x4a')]['id']}})['then'](handleEntityNotFound(_0x52a743,null))[_0xf2d9('0x25')](saveUpdates(_0x3fb5a5[_0xf2d9('0x49')],null))['then'](respondWithResult(_0x52a743,null))['catch'](handleError(_0x52a743,null));};exports[_0xf2d9('0x26')]=function(_0x98934,_0x2c1b4b){return db[_0xf2d9('0x2c')][_0xf2d9('0x46')]({'where':{'id':_0x98934[_0xf2d9('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2c1b4b,null))[_0xf2d9('0x25')](removeEntity(_0x2c1b4b,null))[_0xf2d9('0x48')](handleError(_0x2c1b4b,null));};exports['getConfigurations']=function(_0x3dabd,_0x4bd373,_0x8a4d3d){var _0x5709d6={};var _0x2050e9={};var _0x2c4a50;var _0x6c399d;return db[_0xf2d9('0x2c')][_0xf2d9('0x4b')]({'where':{'id':_0x3dabd['params']['id']}})[_0xf2d9('0x25')](handleEntityNotFound(_0x4bd373,null))[_0xf2d9('0x25')](function(_0xf07f8){if(_0xf07f8){_0x2c4a50=_0xf07f8;_0x2050e9[_0xf2d9('0x35')]=_[_0xf2d9('0x31')](db[_0xf2d9('0x4c')][_0xf2d9('0x2d')]);_0x2050e9[_0xf2d9('0x32')]=_[_0xf2d9('0x31')](_0x3dabd[_0xf2d9('0x32')]);_0x2050e9[_0xf2d9('0x33')]=_['intersection'](_0x2050e9[_0xf2d9('0x35')],_0x2050e9[_0xf2d9('0x32')]);_0x5709d6[_0xf2d9('0x37')]=_[_0xf2d9('0x34')](_0x2050e9[_0xf2d9('0x35')],qs[_0xf2d9('0x36')](_0x3dabd[_0xf2d9('0x32')][_0xf2d9('0x36')]));_0x5709d6[_0xf2d9('0x37')]=_0x5709d6[_0xf2d9('0x37')][_0xf2d9('0x38')]?_0x5709d6[_0xf2d9('0x37')]:_0x2050e9[_0xf2d9('0x35')];_0x5709d6['order']=qs['sort'](_0x3dabd[_0xf2d9('0x32')][_0xf2d9('0x3b')]);_0x5709d6[_0xf2d9('0x3c')]=qs[_0xf2d9('0x33')](_['pick'](_0x3dabd[_0xf2d9('0x32')],_0x2050e9['filters']));if(_0x3dabd[_0xf2d9('0x32')][_0xf2d9('0x4d')]){_0x5709d6[_0xf2d9('0x3c')]=_[_0xf2d9('0x45')](_0x5709d6['where'],{'$or':_[_0xf2d9('0x3e')](_0x5709d6[_0xf2d9('0x37')],function(_0x27ca69){var _0x403e0b={};_0x403e0b[_0x27ca69]={'$like':'%'+_0x3dabd['query'][_0xf2d9('0x4d')]+'%'};return _0x403e0b;})});}_0x5709d6=_[_0xf2d9('0x45')]({},_0x5709d6,_0x3dabd['options']);return _0x2c4a50[_0xf2d9('0x4e')](_0x5709d6);}})['then'](function(_0x1c7243){if(_0x1c7243){_0x6c399d=_0x1c7243['length'];if(!_0x3dabd[_0xf2d9('0x32')][_0xf2d9('0x39')](_0xf2d9('0x3a'))){_0x5709d6['limit']=qs[_0xf2d9('0x1d')](_0x3dabd[_0xf2d9('0x32')][_0xf2d9('0x1d')]);_0x5709d6['offset']=qs[_0xf2d9('0x1b')](_0x3dabd['query']['offset']);}return _0x2c4a50[_0xf2d9('0x4e')](_0x5709d6);}})['then'](function(_0x3760a0){if(_0x3760a0){return _0x3760a0?{'count':_0x6c399d,'rows':_0x3760a0}:null;}})['then'](respondWithResult(_0x4bd373,null))['catch'](handleError(_0x4bd373,null));};exports['addConfiguration']=function(_0x2c74ed,_0x4fe6c0,_0x175486){if(_0x2c74ed[_0xf2d9('0x49')]['id']){delete _0x2c74ed['body']['id'];}return db[_0xf2d9('0x2c')][_0xf2d9('0x4b')]({'where':{'id':_0x2c74ed[_0xf2d9('0x4a')]['id']}})[_0xf2d9('0x25')](handleEntityNotFound(_0x4fe6c0,null))[_0xf2d9('0x25')](function(_0x3f209c){if(_0x3f209c){_0x2c74ed[_0xf2d9('0x49')][_0xf2d9('0x4f')]=_0x3f209c['id'];_0x2c74ed['body'][_0xf2d9('0x50')]=integrations[_0xf2d9('0x51')](_0x2c74ed['body'][_0xf2d9('0x52')],_0x2c74ed['body'][_0xf2d9('0x2f')]);_0x2c74ed[_0xf2d9('0x49')][_0xf2d9('0x53')]=integrations['getDescriptions'](_0x2c74ed[_0xf2d9('0x49')]['channel'],_0x2c74ed['body'][_0xf2d9('0x2f')]);return db[_0xf2d9('0x4c')]['create'](_0x2c74ed[_0xf2d9('0x49')],{'include':[{'model':db[_0xf2d9('0x54')],'as':_0xf2d9('0x50')},{'model':db[_0xf2d9('0x54')],'as':_0xf2d9('0x53')}]});}return null;})[_0xf2d9('0x25')](respondWithResult(_0x4fe6c0,null))[_0xf2d9('0x48')](handleError(_0x4fe6c0,null));};exports[_0xf2d9('0x55')]=function(_0x58528a,_0x11724c,_0x392b5e){var _0x4d3abf=[_0xf2d9('0x56'),'hold_reason',_0xf2d9('0x57'),_0xf2d9('0x58'),_0xf2d9('0x59'),_0xf2d9('0x5a'),'incident_state',_0xf2d9('0x5b'),_0xf2d9('0x5c')];var _0x11af21=[_0xf2d9('0x5d'),_0xf2d9('0x56'),_0xf2d9('0x5e'),_0xf2d9('0x5f'),_0xf2d9('0x60'),'sys_updated_on',_0xf2d9('0x61'),'hold_reason','approval_history',_0xf2d9('0x62'),'resolved_by',_0xf2d9('0x63'),_0xf2d9('0x64'),_0xf2d9('0x65'),_0xf2d9('0x66'),'sys_domain',_0xf2d9('0x67'),_0xf2d9('0x68'),_0xf2d9('0x57'),'order',_0xf2d9('0x69'),_0xf2d9('0x6a'),_0xf2d9('0x6b'),_0xf2d9('0x6c'),_0xf2d9('0x6d'),_0xf2d9('0x6e'),_0xf2d9('0x6f'),_0xf2d9('0x70'),_0xf2d9('0x71'),_0xf2d9('0x72'),_0xf2d9('0x73'),_0xf2d9('0x74'),'expected_start',_0xf2d9('0x75'),'business_duration',_0xf2d9('0x76'),_0xf2d9('0x77'),_0xf2d9('0x78'),_0xf2d9('0x79'),'caller_id','approval_set',_0xf2d9('0x58'),_0xf2d9('0x7a'),'short_description',_0xf2d9('0x59'),_0xf2d9('0x7b'),_0xf2d9('0x7c'),'work_start',_0xf2d9('0x7d'),_0xf2d9('0x7e'),_0xf2d9('0x7f'),_0xf2d9('0x80'),_0xf2d9('0x81'),'notify',_0xf2d9('0x82'),_0xf2d9('0x83'),_0xf2d9('0x84'),_0xf2d9('0x85'),'parent_incident','sys_id',_0xf2d9('0x86'),_0xf2d9('0x87'),_0xf2d9('0x88'),_0xf2d9('0x89'),_0xf2d9('0x8a'),_0xf2d9('0x8b'),'reassignment_count',_0xf2d9('0x8c'),_0xf2d9('0x8d'),_0xf2d9('0x5b'),_0xf2d9('0x8e'),_0xf2d9('0x8f'),_0xf2d9('0x90'),'comments_and_work_notes','due_date',_0xf2d9('0x91'),_0xf2d9('0x92'),_0xf2d9('0x93'),_0xf2d9('0x94'),_0xf2d9('0x95'),'correlation_id',_0xf2d9('0x96'),_0xf2d9('0x5c')];var _0x2fbf66='';var _0x3ea91b='';var _0x4d3547=[];var _0x81b417='';var _0xb8774c='';var _0x1fc8dd=[];var _0x41cc8e='';var _0x53e742='';var _0x2f3a0f={};var _0x561074='';return db[_0xf2d9('0x2c')][_0xf2d9('0x4b')]({'where':{'id':_0x58528a[_0xf2d9('0x4a')]['id']},'attributes':['id',_0xf2d9('0x97'),'password','email',_0xf2d9('0x98'),_0xf2d9('0x99')]})['then'](handleEntityNotFound(_0x11724c,null))[_0xf2d9('0x25')](function(_0x6615ed){if(_0x6615ed){_0x561074=_0x6615ed[_0xf2d9('0x98')];var _0x5e9e11=_0x561074['slice'](-0x1);if(_0x5e9e11==='/'){_0x561074=_0x561074[_0xf2d9('0x9a')](0x0,_0x561074[_0xf2d9('0x9b')](_0x5e9e11));}_0x53e742=util[_0xf2d9('0x9c')](_0xf2d9('0x9d'),_0x561074);_0x41cc8e=util[_0xf2d9('0x9c')]('%s/api/now/table/',_0x561074);_0x2f3a0f={'user':_0x6615ed[_0xf2d9('0x97')],'pass':_0x6615ed['password']};var _0xc26288={'method':_0xf2d9('0x9e'),'uri':_0x53e742+_0xf2d9('0x9f'),'auth':_0x2f3a0f,'json':!![]};return rp(_0xc26288);}})[_0xf2d9('0x25')](function(_0x27483a){if(_0x27483a[_0xf2d9('0xa0')][_0xf2d9('0x38')]>0x0){_0x2fbf66=_0x27483a[_0xf2d9('0xa0')];}console[_0xf2d9('0xa1')](_0xf2d9('0xa2'),_0x2fbf66);_0x1fc8dd=[];_0x3ea91b=Object['assign']([],_0x2fbf66);_[_0xf2d9('0xa3')](_0x3ea91b,function(_0x20b192){return!_0x4d3abf[_0xf2d9('0xa4')](_0x20b192[_0xf2d9('0x2a')]);});_0x3ea91b[_0xf2d9('0xa5')](function(_0x2ef28a){var _0x86fa34=createFieldObject(_0x41cc8e,_0x2f3a0f,_0x2ef28a['internalType'],_0x2ef28a[_0xf2d9('0x2a')],_0x2ef28a['label'],![]);_0x1fc8dd[_0xf2d9('0xa6')](_0x86fa34);});return Promise['all'](_0x1fc8dd);})[_0xf2d9('0x25')](function(_0x39c1f5){_0x4d3547=_0x39c1f5;_0x81b417=Object['assign']([],_0x2fbf66);console[_0xf2d9('0xa1')]('TCL:\x20_object',_0x2fbf66);_[_0xf2d9('0xa3')](_0x81b417,function(_0x2134dc){return _0x11af21['includes'](_0x2134dc['name']);});console['log']('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x81b417);_0x1fc8dd=[];_0x81b417[_0xf2d9('0xa5')](function(_0x16dee3){var _0x52bbae=createFieldObject(_0x41cc8e,_0x2f3a0f,_0x16dee3['internalType'],_0x16dee3[_0xf2d9('0x2a')],_0x16dee3[_0xf2d9('0xa7')],!![]);_0x1fc8dd[_0xf2d9('0xa6')](_0x52bbae);});return Promise[_0xf2d9('0xa8')](_0x1fc8dd);})[_0xf2d9('0x25')](function(_0xfce155){_0xb8774c=_0xfce155;var _0x2bf966=_0x4d3547[_0xf2d9('0xa9')](_0xb8774c);return{'count':_0x2bf966[_0xf2d9('0x38')],'rows':_0x2bf966};})[_0xf2d9('0x25')](respondWithResult(_0x11724c,null))['catch'](function(_0x20e2bc){console[_0xf2d9('0xa1')](_0xf2d9('0xaa')+_0x20e2bc);var _0x371a9b=_0x58528a[_0xf2d9('0x32')]['test']?0x1f4:_0x20e2bc[_0xf2d9('0xab')]||0x1f4;logger[_0xf2d9('0x29')](_0x20e2bc[_0xf2d9('0xac')]);delete _0x20e2bc[_0xf2d9('0x2a')];if(_0x371a9b===0x191){_0x371a9b=0x190;}_0x11724c[_0xf2d9('0x1a')](_0x371a9b)['send'](_0x58528a[_0xf2d9('0x32')][_0xf2d9('0xad')]?{'message':'Wrong\x20credentials','statusCode':_0x20e2bc[_0xf2d9('0xab')]}:_0x20e2bc);});};function createFieldObject(_0x32fd1b,_0x30d18f,_0x3e31f9,_0x5ba013,_0x5e2beb,_0x4c939f){return new Promise(function(_0x524372,_0x6137eb){var _0x3b4be1={'id':_0x5ba013,'name':_0x5e2beb,'custom':_0x4c939f};if(_0x3e31f9===_0xf2d9('0xae')){_0x3b4be1[_0xf2d9('0x3f')]=[{'name':_0xf2d9('0xaf'),'value':_0xf2d9('0xb0')},{'name':_0xf2d9('0xb1'),'value':'false'}];_0x524372(_0x3b4be1);}else{var _0x44705f={'method':_0xf2d9('0x9e'),'uri':_0x32fd1b+_0xf2d9('0xb2')+_0x5ba013,'auth':_0x30d18f,'json':!![]};return rp(_0x44705f)[_0xf2d9('0x25')](function(_0xe350da){var _0x1dd4e9=[];if(_0xe350da[_0xf2d9('0xa0')][_0xf2d9('0x38')]>0x0){_0xe350da[_0xf2d9('0xa0')][_0xf2d9('0xa5')](function(_0xb27aad){if(_0xb27aad[_0xf2d9('0xb3')]==='false'){var _0x16b250={'name':_0xb27aad[_0xf2d9('0xa7')],'value':_0xb27aad[_0xf2d9('0xb4')]};_0x1dd4e9[_0xf2d9('0xa6')](_0x16b250);}});}_0x3b4be1['options']=_0x1dd4e9;if(_0x3b4be1[_0xf2d9('0x3f')][_0xf2d9('0x38')]>0x0){_0x524372(_0x3b4be1);}else{if(_0x4c939f==![]){_0x524372();}else{_0x524372(_0x3b4be1);}}});}});}
\ No newline at end of file
index 756fe74..7bd5930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts','../../config/logger','api'];(function(_0x2a7b8e,_0x50ffce){var _0x29b5c8=function(_0x131fe0){while(--_0x131fe0){_0x2a7b8e['push'](_0x2a7b8e['shift']());}};_0x29b5c8(++_0x50ffce);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x18ab9b,_0x5de071){_0x18ab9b=_0x18ab9b-0x0;var _0x15087=_0x7fbe[_0x18ab9b];return _0x15087;};'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'));var integrations=require(_0xe7fb('0x9'));module[_0xe7fb('0xa')]=function(_0x12d1b0,_0x24cd67){return _0x12d1b0[_0xe7fb('0xb')]('ServicenowAccount',attributes,{'tableName':_0xe7fb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3f8a=['exports','define','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x12546c,_0x4678e2){_0x12546c=_0x12546c-0x0;var _0x49815b=_0x3f8a[_0x12546c];return _0x49815b;};'use strict';var _=require(_0xa3f8('0x0'));var util=require(_0xa3f8('0x1'));var logger=require(_0xa3f8('0x2'))(_0xa3f8('0x3'));var moment=require('moment');var BPromise=require(_0xa3f8('0x4'));var rp=require(_0xa3f8('0x5'));var fs=require('fs');var path=require(_0xa3f8('0x6'));var rimraf=require(_0xa3f8('0x7'));var config=require(_0xa3f8('0x8'));var attributes=require(_0xa3f8('0x9'));var integrations=require(_0xa3f8('0xa'));module[_0xa3f8('0xb')]=function(_0x1f160a,_0xf895d9){return _0x1f160a[_0xa3f8('0xc')](_0xa3f8('0xd'),attributes,{'tableName':_0xa3f8('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f249209..df9a63e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73ed=['../../config/environment','jayson/promise','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetServicenowAccount','ServicenowAccount','options','raw','attributes','limit','map','include','model','ShowServicenowAccount','find','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x4e21ba,_0x18097f){var _0x55b94b=function(_0x3b9add){while(--_0x3b9add){_0x4e21ba['push'](_0x4e21ba['shift']());}};_0x55b94b(++_0x18097f);}(_0x73ed,0xb1));var _0xd73e=function(_0x5293a1,_0x1f58fd){_0x5293a1=_0x5293a1-0x0;var _0x473c73=_0x73ed[_0x5293a1];return _0x473c73;};'use strict';var _=require(_0xd73e('0x0'));var util=require(_0xd73e('0x1'));var moment=require(_0xd73e('0x2'));var BPromise=require(_0xd73e('0x3'));var rs=require(_0xd73e('0x4'));var fs=require('fs');var Redis=require(_0xd73e('0x5'));var db=require(_0xd73e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xd73e('0x7'))('rpc');var config=require(_0xd73e('0x8'));var jayson=require(_0xd73e('0x9'));var client=jayson[_0xd73e('0xa')][_0xd73e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xa3a764,_0x5af8f5,_0x1978c2){return new BPromise(function(_0x22c0a9,_0x369728){return client[_0xd73e('0xc')](_0xa3a764,_0x1978c2)[_0xd73e('0xd')](function(_0x1455e5){logger[_0xd73e('0xe')](_0xd73e('0xf'),_0x5af8f5,_0xd73e('0x10'));logger[_0xd73e('0x11')](_0xd73e('0x12'),_0x5af8f5,_0xd73e('0x10'),JSON[_0xd73e('0x13')](_0x1455e5));if(_0x1455e5['error']){if(_0x1455e5[_0xd73e('0x14')][_0xd73e('0x15')]===0x1f4){logger[_0xd73e('0x14')](_0xd73e('0xf'),_0x5af8f5,_0x1455e5[_0xd73e('0x14')][_0xd73e('0x16')]);return _0x369728(_0x1455e5[_0xd73e('0x14')][_0xd73e('0x16')]);}logger['error'](_0xd73e('0xf'),_0x5af8f5,_0x1455e5[_0xd73e('0x14')][_0xd73e('0x16')]);return _0x22c0a9(_0x1455e5[_0xd73e('0x14')]['message']);}else{logger[_0xd73e('0xe')](_0xd73e('0xf'),_0x5af8f5,_0xd73e('0x10'));_0x22c0a9(_0x1455e5[_0xd73e('0x17')]['message']);}})[_0xd73e('0x18')](function(_0x54ded0){logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x5af8f5,_0x54ded0);_0x369728(_0x54ded0);});});}exports[_0xd73e('0x19')]=function(_0x3fd026){var _0x3ff10c=this;return new Promise(function(_0x337a95,_0xe6b201){return db[_0xd73e('0x1a')]['findAll']({'raw':_0x3fd026[_0xd73e('0x1b')]?_0x3fd026[_0xd73e('0x1b')][_0xd73e('0x1c')]===undefined?!![]:![]:!![],'where':_0x3fd026[_0xd73e('0x1b')]?_0x3fd026[_0xd73e('0x1b')]['where']||null:null,'attributes':_0x3fd026[_0xd73e('0x1b')]?_0x3fd026[_0xd73e('0x1b')][_0xd73e('0x1d')]||null:null,'limit':_0x3fd026['options']?_0x3fd026['options'][_0xd73e('0x1e')]||null:null,'include':_0x3fd026[_0xd73e('0x1b')]?_0x3fd026[_0xd73e('0x1b')]['include']?_[_0xd73e('0x1f')](_0x3fd026[_0xd73e('0x1b')][_0xd73e('0x20')],function(_0x2c016e){return{'model':db[_0x2c016e[_0xd73e('0x21')]],'as':_0x2c016e['as'],'attributes':_0x2c016e['attributes'],'include':_0x2c016e[_0xd73e('0x20')]?_['map'](_0x2c016e['include'],function(_0x440009){return{'model':db[_0x440009[_0xd73e('0x21')]],'as':_0x440009['as'],'attributes':_0x440009[_0xd73e('0x1d')],'include':_0x440009[_0xd73e('0x20')]?_[_0xd73e('0x1f')](_0x440009['include'],function(_0x4da3c0){return{'model':db[_0x4da3c0[_0xd73e('0x21')]],'as':_0x4da3c0['as'],'attributes':_0x4da3c0['attributes']};}):[]};}):[]};}):[]:[]})[_0xd73e('0xd')](function(_0x52d4af){logger[_0xd73e('0xe')](_0xd73e('0x19'),_0x3fd026);logger[_0xd73e('0x11')]('GetServicenowAccount',_0x3fd026,JSON[_0xd73e('0x13')](_0x52d4af));_0x337a95(_0x52d4af);})['catch'](function(_0x1943e1){logger[_0xd73e('0x14')](_0xd73e('0x19'),_0x1943e1[_0xd73e('0x16')],_0x3fd026);_0xe6b201(_0x3ff10c['error'](0x1f4,_0x1943e1[_0xd73e('0x16')]));});});};exports[_0xd73e('0x22')]=function(_0xc60169){var _0x510aa1=this;return new Promise(function(_0x5acc5d,_0x5c1096){return db['ServicenowAccount'][_0xd73e('0x23')]({'raw':_0xc60169[_0xd73e('0x1b')]?_0xc60169['options'][_0xd73e('0x1c')]===undefined?!![]:![]:!![],'where':_0xc60169['options']?_0xc60169[_0xd73e('0x1b')][_0xd73e('0x24')]||null:null,'attributes':_0xc60169[_0xd73e('0x1b')]?_0xc60169['options'][_0xd73e('0x1d')]||null:null,'include':_0xc60169['options']?_0xc60169[_0xd73e('0x1b')]['include']?_[_0xd73e('0x1f')](_0xc60169[_0xd73e('0x1b')]['include'],function(_0x5d3853){return{'model':db[_0x5d3853['model']],'as':_0x5d3853['as'],'attributes':_0x5d3853[_0xd73e('0x1d')],'include':_0x5d3853[_0xd73e('0x20')]?_['map'](_0x5d3853[_0xd73e('0x20')],function(_0x52f3cc){return{'model':db[_0x52f3cc['model']],'as':_0x52f3cc['as'],'attributes':_0x52f3cc['attributes'],'include':_0x52f3cc[_0xd73e('0x20')]?_['map'](_0x52f3cc[_0xd73e('0x20')],function(_0x343c7c){return{'model':db[_0x343c7c['model']],'as':_0x343c7c['as'],'attributes':_0x343c7c[_0xd73e('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd73e('0xd')](function(_0x2f442e){logger[_0xd73e('0xe')](_0xd73e('0x22'),_0xc60169);logger[_0xd73e('0x11')](_0xd73e('0x22'),_0xc60169,JSON[_0xd73e('0x13')](_0x2f442e));_0x5acc5d(_0x2f442e);})[_0xd73e('0x18')](function(_0x243087){logger[_0xd73e('0x14')](_0xd73e('0x22'),_0x243087[_0xd73e('0x16')],_0xc60169);_0x5c1096(_0x510aa1[_0xd73e('0x14')](0x1f4,_0x243087[_0xd73e('0x16')]));});});};
\ No newline at end of file
+var _0x15a8=['ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ServicenowAccount','findAll','options','raw','limit','include','map','model','attributes','then','ShowServicenowAccount','find','where','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','info'];(function(_0x34f1c4,_0x1d0736){var _0x5d7051=function(_0x2a58ce){while(--_0x2a58ce){_0x34f1c4['push'](_0x34f1c4['shift']());}};_0x5d7051(++_0x1d0736);}(_0x15a8,0x7a));var _0x815a=function(_0x527cf0,_0x329e83){_0x527cf0=_0x527cf0-0x0;var _0x2db70e=_0x15a8[_0x527cf0];return _0x2db70e;};'use strict';var _=require(_0x815a('0x0'));var util=require('util');var moment=require(_0x815a('0x1'));var BPromise=require('bluebird');var rs=require(_0x815a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x815a('0x3'))['db'];var utils=require(_0x815a('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x815a('0x5'));var jayson=require(_0x815a('0x6'));var client=jayson[_0x815a('0x7')][_0x815a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4dc0a2,_0x39f205,_0x3bb60e){return new BPromise(function(_0x1ac219,_0x2638f1){return client['request'](_0x4dc0a2,_0x3bb60e)['then'](function(_0x2b0190){logger[_0x815a('0x9')](_0x815a('0xa'),_0x39f205,_0x815a('0xb'));logger[_0x815a('0xc')](_0x815a('0xd'),_0x39f205,_0x815a('0xb'),JSON[_0x815a('0xe')](_0x2b0190));if(_0x2b0190[_0x815a('0xf')]){if(_0x2b0190['error'][_0x815a('0x10')]===0x1f4){logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x39f205,_0x2b0190[_0x815a('0xf')][_0x815a('0x11')]);return _0x2638f1(_0x2b0190[_0x815a('0xf')]['message']);}logger[_0x815a('0xf')]('ServicenowAccount,\x20%s,\x20%s',_0x39f205,_0x2b0190['error']['message']);return _0x1ac219(_0x2b0190[_0x815a('0xf')][_0x815a('0x11')]);}else{logger[_0x815a('0x9')](_0x815a('0xa'),_0x39f205,'request\x20sent');_0x1ac219(_0x2b0190[_0x815a('0x12')][_0x815a('0x11')]);}})[_0x815a('0x13')](function(_0x417bc2){logger[_0x815a('0xf')](_0x815a('0xa'),_0x39f205,_0x417bc2);_0x2638f1(_0x417bc2);});});}exports['GetServicenowAccount']=function(_0x528fbd){var _0x2e96e8=this;return new Promise(function(_0xd563b6,_0x4c77dd){return db[_0x815a('0x14')][_0x815a('0x15')]({'raw':_0x528fbd['options']?_0x528fbd[_0x815a('0x16')][_0x815a('0x17')]===undefined?!![]:![]:!![],'where':_0x528fbd[_0x815a('0x16')]?_0x528fbd['options']['where']||null:null,'attributes':_0x528fbd[_0x815a('0x16')]?_0x528fbd[_0x815a('0x16')]['attributes']||null:null,'limit':_0x528fbd[_0x815a('0x16')]?_0x528fbd[_0x815a('0x16')][_0x815a('0x18')]||null:null,'include':_0x528fbd['options']?_0x528fbd[_0x815a('0x16')][_0x815a('0x19')]?_[_0x815a('0x1a')](_0x528fbd[_0x815a('0x16')][_0x815a('0x19')],function(_0xf17c87){return{'model':db[_0xf17c87[_0x815a('0x1b')]],'as':_0xf17c87['as'],'attributes':_0xf17c87[_0x815a('0x1c')],'include':_0xf17c87[_0x815a('0x19')]?_['map'](_0xf17c87[_0x815a('0x19')],function(_0x82e532){return{'model':db[_0x82e532[_0x815a('0x1b')]],'as':_0x82e532['as'],'attributes':_0x82e532['attributes'],'include':_0x82e532[_0x815a('0x19')]?_['map'](_0x82e532['include'],function(_0x36bafb){return{'model':db[_0x36bafb['model']],'as':_0x36bafb['as'],'attributes':_0x36bafb[_0x815a('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x815a('0x1d')](function(_0x14995c){logger[_0x815a('0x9')]('GetServicenowAccount',_0x528fbd);logger[_0x815a('0xc')]('GetServicenowAccount',_0x528fbd,JSON[_0x815a('0xe')](_0x14995c));_0xd563b6(_0x14995c);})['catch'](function(_0x381d86){logger[_0x815a('0xf')]('GetServicenowAccount',_0x381d86[_0x815a('0x11')],_0x528fbd);_0x4c77dd(_0x2e96e8['error'](0x1f4,_0x381d86['message']));});});};exports[_0x815a('0x1e')]=function(_0x49b852){var _0x49617e=this;return new Promise(function(_0x213abb,_0x253647){return db['ServicenowAccount'][_0x815a('0x1f')]({'raw':_0x49b852[_0x815a('0x16')]?_0x49b852['options'][_0x815a('0x17')]===undefined?!![]:![]:!![],'where':_0x49b852[_0x815a('0x16')]?_0x49b852[_0x815a('0x16')][_0x815a('0x20')]||null:null,'attributes':_0x49b852['options']?_0x49b852[_0x815a('0x16')][_0x815a('0x1c')]||null:null,'include':_0x49b852[_0x815a('0x16')]?_0x49b852[_0x815a('0x16')][_0x815a('0x19')]?_[_0x815a('0x1a')](_0x49b852[_0x815a('0x16')][_0x815a('0x19')],function(_0x45d0ee){return{'model':db[_0x45d0ee[_0x815a('0x1b')]],'as':_0x45d0ee['as'],'attributes':_0x45d0ee[_0x815a('0x1c')],'include':_0x45d0ee[_0x815a('0x19')]?_[_0x815a('0x1a')](_0x45d0ee['include'],function(_0x3bcaba){return{'model':db[_0x3bcaba[_0x815a('0x1b')]],'as':_0x3bcaba['as'],'attributes':_0x3bcaba[_0x815a('0x1c')],'include':_0x3bcaba[_0x815a('0x19')]?_[_0x815a('0x1a')](_0x3bcaba['include'],function(_0x1b6417){return{'model':db[_0x1b6417[_0x815a('0x1b')]],'as':_0x1b6417['as'],'attributes':_0x1b6417['attributes']};}):[]};}):[]};}):[]:[]})[_0x815a('0x1d')](function(_0x13bc34){logger[_0x815a('0x9')](_0x815a('0x1e'),_0x49b852);logger[_0x815a('0xc')]('ShowServicenowAccount',_0x49b852,JSON[_0x815a('0xe')](_0x13bc34));_0x213abb(_0x13bc34);})[_0x815a('0x13')](function(_0x15653d){logger[_0x815a('0xf')](_0x815a('0x1e'),_0x15653d[_0x815a('0x11')],_0x49b852);_0x253647(_0x49617e[_0x815a('0xf')](0x1f4,_0x15653d[_0x815a('0x11')]));});});};
\ No newline at end of file
index e74ae0e..14bef22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabf9=['isAuthenticated','index','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','post','put','update','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xabf9,0x1f1));var _0x9abf=function(_0x15d9b6,_0x4e0772){_0x15d9b6=_0x15d9b6-0x0;var _0xb44729=_0xabf9[_0x15d9b6];return _0xb44729;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x9abf('0x0'));var express=require(_0x9abf('0x1'));var router=express[_0x9abf('0x2')]();var fs_extra=require(_0x9abf('0x3'));var auth=require(_0x9abf('0x4'));var interaction=require(_0x9abf('0x5'));var config=require(_0x9abf('0x6'));var controller=require(_0x9abf('0x7'));router[_0x9abf('0x8')]('/',auth[_0x9abf('0x9')](),controller[_0x9abf('0xa')]);router['get'](_0x9abf('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0x9abf('0xc'),auth['isAuthenticated'](),controller[_0x9abf('0xd')]);router[_0x9abf('0x8')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x9abf('0xe')]);router[_0x9abf('0x8')](_0x9abf('0xf'),auth[_0x9abf('0x9')](),controller['getDescriptions']);router[_0x9abf('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x9abf('0x11')]('/:id',auth[_0x9abf('0x9')](),controller[_0x9abf('0x12')]);router[_0x9abf('0x13')](_0x9abf('0xb'),auth[_0x9abf('0x9')](),controller[_0x9abf('0x14')]);module[_0x9abf('0x15')]=router;
\ No newline at end of file
+var _0xe30a=['update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../config/environment','./intServicenowConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xe30a,0x10b));var _0xae30=function(_0x470fb4,_0xb22632){_0x470fb4=_0x470fb4-0x0;var _0x3101dc=_0xe30a[_0x470fb4];return _0x3101dc;};'use strict';var multer=require('multer');var util=require(_0xae30('0x0'));var path=require(_0xae30('0x1'));var timeout=require(_0xae30('0x2'));var express=require(_0xae30('0x3'));var router=express['Router']();var fs_extra=require(_0xae30('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xae30('0x5'));var controller=require(_0xae30('0x6'));router['get']('/',auth[_0xae30('0x7')](),controller[_0xae30('0x8')]);router[_0xae30('0x9')](_0xae30('0xa'),auth['isAuthenticated'](),controller[_0xae30('0xb')]);router['get'](_0xae30('0xc'),auth[_0xae30('0x7')](),controller[_0xae30('0xd')]);router[_0xae30('0x9')](_0xae30('0xe'),auth[_0xae30('0x7')](),controller['getSubjects']);router['get'](_0xae30('0xf'),auth[_0xae30('0x7')](),controller[_0xae30('0x10')]);router[_0xae30('0x11')]('/',auth['isAuthenticated'](),controller[_0xae30('0x12')]);router['put'](_0xae30('0xa'),auth[_0xae30('0x7')](),controller[_0xae30('0x13')]);router['delete'](_0xae30('0xa'),auth['isAuthenticated'](),controller[_0xae30('0x14')]);module[_0xae30('0x15')]=router;
\ No newline at end of file
index 66d94b2..7565ec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dbb=['STRING','sequelize','exports'];(function(_0x35a302,_0x4ca31f){var _0x5272cc=function(_0x5373f5){while(--_0x5373f5){_0x35a302['push'](_0x35a302['shift']());}};_0x5272cc(++_0x4ca31f);}(_0x7dbb,0x1c3));var _0xb7db=function(_0x36f85c,_0x3df8d2){_0x36f85c=_0x36f85c-0x0;var _0x25c138=_0x7dbb[_0x36f85c];return _0x25c138;};'use strict';var Sequelize=require(_0xb7db('0x0'));module[_0xb7db('0x1')]={'name':{'type':Sequelize[_0xb7db('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8fb3=['STRING','sequelize','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8fb3,0x139));var _0x38fb=function(_0x2b7599,_0x4dd37e){_0x2b7599=_0x2b7599-0x0;var _0x107c71=_0x8fb3[_0x2b7599];return _0x107c71;};'use strict';var Sequelize=require(_0x38fb('0x0'));module[_0x38fb('0x1')]={'name':{'type':Sequelize[_0x38fb('0x2')]},'description':{'type':Sequelize[_0x38fb('0x2')]}};
\ No newline at end of file
index b209b91..c09d9d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x890e=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','rows','show','params','rawAttributes','find','catch','create','body','getFields','findOne','getSubjects','getDescriptions','ServicenowField','rimraf','zip-dir','bluebird','util','sox','ejs','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','ServicenowConfiguration','fieldName','key','model','map','query','keys','filters','intersection','attributes'];(function(_0x5e238b,_0x17ae49){var _0x389bea=function(_0x3cc1c1){while(--_0x3cc1c1){_0x5e238b['push'](_0x5e238b['shift']());}};_0x389bea(++_0x17ae49);}(_0x890e,0x13b));var _0xe890=function(_0x308ced,_0xe1baab){_0x308ced=_0x308ced-0x0;var _0x3e185b=_0x890e[_0x308ced];return _0x3e185b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe890('0x0'));var zipdir=require(_0xe890('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe890('0x2'));var Mustache=require('mustache');var util=require(_0xe890('0x3'));var path=require('path');var sox=require(_0xe890('0x4'));var csv=require('to-csv');var ejs=require(_0xe890('0x5'));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(_0xe890('0x6'));var toCsv=require(_0xe890('0x7'));var querystring=require(_0xe890('0x8'));var Papa=require(_0xe890('0x9'));var Redis=require('ioredis');var authService=require(_0xe890('0xa'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe890('0xb'))(_0xe890('0xc'));var utils=require(_0xe890('0xd'));var config=require(_0xe890('0xe'));var licenseUtil=require(_0xe890('0xf'));var db=require(_0xe890('0x10'))['db'];function respondWithStatusCode(_0x4ea0dc,_0x5c3d6){_0x5c3d6=_0x5c3d6||0xcc;return function(_0x5d7092){if(_0x5d7092){return _0x4ea0dc[_0xe890('0x11')](_0x5c3d6);}return _0x4ea0dc[_0xe890('0x12')](_0x5c3d6)['end']();};}function respondWithResult(_0x5e152e,_0x24d8b1){_0x24d8b1=_0x24d8b1||0xc8;return function(_0x1004ce){if(_0x1004ce){return _0x5e152e[_0xe890('0x12')](_0x24d8b1)[_0xe890('0x13')](_0x1004ce);}};}function respondWithFilteredResult(_0x4486a5,_0x2fc2d7){return function(_0x368928){if(_0x368928){var _0x150baf=typeof _0x2fc2d7[_0xe890('0x14')]==='undefined'&&typeof _0x2fc2d7[_0xe890('0x15')]===_0xe890('0x16');var _0xb247e9=_0x368928['count'];var _0x5522ce=_0x150baf?0x0:_0x2fc2d7[_0xe890('0x14')];var _0x2dec5f=_0x150baf?_0x368928[_0xe890('0x17')]:_0x2fc2d7[_0xe890('0x14')]+_0x2fc2d7[_0xe890('0x15')];var _0x35c47d;if(_0x2dec5f>=_0xb247e9){_0x2dec5f=_0xb247e9;_0x35c47d=0xc8;}else{_0x35c47d=0xce;}_0x4486a5[_0xe890('0x12')](_0x35c47d);return _0x4486a5[_0xe890('0x18')](_0xe890('0x19'),_0x5522ce+'-'+_0x2dec5f+'/'+_0xb247e9)[_0xe890('0x13')](_0x368928);}return null;};}function patchUpdates(_0x188664){return function(_0x180c09){try{jsonpatch[_0xe890('0x1a')](_0x180c09,_0x188664,!![]);}catch(_0x46a590){return BPromise[_0xe890('0x1b')](_0x46a590);}return _0x180c09['save']();};}function saveUpdates(_0x2a0139,_0x5043cf){return function(_0x303900){if(_0x303900){return _0x303900[_0xe890('0x1c')](_0x2a0139)[_0xe890('0x1d')](function(_0xf244a4){return _0xf244a4;});}return null;};}function removeEntity(_0x58bd4d,_0x13611d){return function(_0x5c6a2e){if(_0x5c6a2e){return _0x5c6a2e[_0xe890('0x1e')]()[_0xe890('0x1d')](function(){_0x58bd4d[_0xe890('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ec8d2,_0x26bddc){return function(_0x297fe1){if(!_0x297fe1){_0x4ec8d2[_0xe890('0x11')](0x194);}return _0x297fe1;};}function handleError(_0x270a85,_0x59e340){_0x59e340=_0x59e340||0x1f4;return function(_0x144def){logger['error'](_0x144def[_0xe890('0x1f')]);if(_0x144def[_0xe890('0x20')]){delete _0x144def[_0xe890('0x20')];}_0x270a85[_0xe890('0x12')](_0x59e340)[_0xe890('0x21')](_0x144def);};}exports[_0xe890('0x22')]=function(_0x33c224,_0x224bd1){var _0xadd080={},_0x34b0f0={},_0x170c78={'count':0x0,'rows':[]};var _0x3c43f6=_['map'](db[_0xe890('0x23')]['rawAttributes'],function(_0x364bf3){return{'name':_0x364bf3[_0xe890('0x24')],'type':_0x364bf3['type'][_0xe890('0x25')]};});_0x34b0f0[_0xe890('0x26')]=_[_0xe890('0x27')](_0x3c43f6,_0xe890('0x20'));_0x34b0f0[_0xe890('0x28')]=_[_0xe890('0x29')](_0x33c224[_0xe890('0x28')]);_0x34b0f0[_0xe890('0x2a')]=_[_0xe890('0x2b')](_0x34b0f0[_0xe890('0x26')],_0x34b0f0[_0xe890('0x28')]);_0xadd080[_0xe890('0x2c')]=_[_0xe890('0x2b')](_0x34b0f0[_0xe890('0x26')],qs[_0xe890('0x2d')](_0x33c224[_0xe890('0x28')][_0xe890('0x2d')]));_0xadd080[_0xe890('0x2c')]=_0xadd080['attributes'][_0xe890('0x2e')]?_0xadd080['attributes']:_0x34b0f0['model'];if(!_0x33c224[_0xe890('0x28')][_0xe890('0x2f')](_0xe890('0x30'))){_0xadd080[_0xe890('0x15')]=qs[_0xe890('0x15')](_0x33c224[_0xe890('0x28')][_0xe890('0x15')]);_0xadd080['offset']=qs[_0xe890('0x14')](_0x33c224[_0xe890('0x28')][_0xe890('0x14')]);}_0xadd080[_0xe890('0x31')]=qs[_0xe890('0x32')](_0x33c224['query']['sort']);_0xadd080[_0xe890('0x33')]=qs[_0xe890('0x2a')](_[_0xe890('0x34')](_0x33c224[_0xe890('0x28')],_0x34b0f0[_0xe890('0x2a')]),_0x3c43f6);if(_0x33c224['query'][_0xe890('0x35')]){_0xadd080[_0xe890('0x33')]=_[_0xe890('0x36')](_0xadd080[_0xe890('0x33')],{'$or':_['map'](_0x3c43f6,function(_0x2e0842){if(_0x2e0842[_0xe890('0x37')]!==_0xe890('0x38')){var _0x56dd90={};_0x56dd90[_0x2e0842[_0xe890('0x20')]]={'$like':'%'+_0x33c224['query'][_0xe890('0x35')]+'%'};return _0x56dd90;}})});}_0xadd080=_[_0xe890('0x36')]({},_0xadd080,_0x33c224[_0xe890('0x39')]);var _0x33fd72={'where':_0xadd080[_0xe890('0x33')]};return db['ServicenowConfiguration'][_0xe890('0x17')](_0x33fd72)[_0xe890('0x1d')](function(_0x3512c1){_0x170c78[_0xe890('0x17')]=_0x3512c1;if(_0x33c224[_0xe890('0x28')]['includeAll']){_0xadd080[_0xe890('0x3a')]=[{'all':!![]}];}return db[_0xe890('0x23')]['findAll'](_0xadd080);})[_0xe890('0x1d')](function(_0x3cd886){_0x170c78[_0xe890('0x3b')]=_0x3cd886;return _0x170c78;})[_0xe890('0x1d')](respondWithFilteredResult(_0x224bd1,_0xadd080))['catch'](handleError(_0x224bd1,null));};exports[_0xe890('0x3c')]=function(_0x5b18da,_0x3ba6ea){var _0x5f0058={'raw':![],'where':{'id':_0x5b18da[_0xe890('0x3d')]['id']}},_0x21e799={};_0x21e799[_0xe890('0x26')]=_[_0xe890('0x29')](db[_0xe890('0x23')][_0xe890('0x3e')]);_0x21e799[_0xe890('0x28')]=_[_0xe890('0x29')](_0x5b18da[_0xe890('0x28')]);_0x21e799[_0xe890('0x2a')]=_[_0xe890('0x2b')](_0x21e799[_0xe890('0x26')],_0x21e799[_0xe890('0x28')]);_0x5f0058[_0xe890('0x2c')]=_[_0xe890('0x2b')](_0x21e799[_0xe890('0x26')],qs[_0xe890('0x2d')](_0x5b18da['query'][_0xe890('0x2d')]));_0x5f0058[_0xe890('0x2c')]=_0x5f0058[_0xe890('0x2c')][_0xe890('0x2e')]?_0x5f0058[_0xe890('0x2c')]:_0x21e799[_0xe890('0x26')];if(_0x5b18da[_0xe890('0x28')]['includeAll']){_0x5f0058[_0xe890('0x3a')]=[{'all':!![]}];}_0x5f0058=_[_0xe890('0x36')]({},_0x5f0058,_0x5b18da['options']);return db[_0xe890('0x23')][_0xe890('0x3f')](_0x5f0058)[_0xe890('0x1d')](handleEntityNotFound(_0x3ba6ea,null))[_0xe890('0x1d')](respondWithResult(_0x3ba6ea,null))[_0xe890('0x40')](handleError(_0x3ba6ea,null));};exports[_0xe890('0x41')]=function(_0x4ede75,_0x507e09){return db[_0xe890('0x23')][_0xe890('0x41')](_0x4ede75[_0xe890('0x42')],{})[_0xe890('0x1d')](respondWithResult(_0x507e09,0xc9))[_0xe890('0x40')](handleError(_0x507e09,null));};exports[_0xe890('0x1c')]=function(_0x4acd5e,_0x5be904){if(_0x4acd5e['body']['id']){delete _0x4acd5e[_0xe890('0x42')]['id'];}return db[_0xe890('0x23')][_0xe890('0x3f')]({'where':{'id':_0x4acd5e[_0xe890('0x3d')]['id']}})[_0xe890('0x1d')](handleEntityNotFound(_0x5be904,null))[_0xe890('0x1d')](saveUpdates(_0x4acd5e[_0xe890('0x42')],null))[_0xe890('0x1d')](respondWithResult(_0x5be904,null))[_0xe890('0x40')](handleError(_0x5be904,null));};exports[_0xe890('0x1e')]=function(_0x4cb968,_0x469abf){return db[_0xe890('0x23')][_0xe890('0x3f')]({'where':{'id':_0x4cb968['params']['id']}})[_0xe890('0x1d')](handleEntityNotFound(_0x469abf,null))[_0xe890('0x1d')](removeEntity(_0x469abf,null))[_0xe890('0x40')](handleError(_0x469abf,null));};exports[_0xe890('0x43')]=function(_0x58a64e,_0x1c890c,_0x2d3bd1){var _0x3944e4={};var _0x568718={};var _0x4ac98c;var _0x26afee;return db[_0xe890('0x23')][_0xe890('0x44')]({'where':{'id':_0x58a64e[_0xe890('0x3d')]['id']}})[_0xe890('0x1d')](handleEntityNotFound(_0x1c890c,null))[_0xe890('0x1d')](function(_0x2b8df5){if(_0x2b8df5){_0x4ac98c=_0x2b8df5;_0x568718[_0xe890('0x26')]=_['keys'](db['ServicenowField'][_0xe890('0x3e')]);_0x568718[_0xe890('0x28')]=_[_0xe890('0x29')](_0x58a64e['query']);_0x568718['filters']=_[_0xe890('0x2b')](_0x568718[_0xe890('0x26')],_0x568718[_0xe890('0x28')]);_0x3944e4[_0xe890('0x2c')]=_['intersection'](_0x568718[_0xe890('0x26')],qs[_0xe890('0x2d')](_0x58a64e[_0xe890('0x28')][_0xe890('0x2d')]));_0x3944e4[_0xe890('0x2c')]=_0x3944e4[_0xe890('0x2c')][_0xe890('0x2e')]?_0x3944e4[_0xe890('0x2c')]:_0x568718[_0xe890('0x26')];_0x3944e4[_0xe890('0x31')]=qs[_0xe890('0x32')](_0x58a64e[_0xe890('0x28')][_0xe890('0x32')]);_0x3944e4[_0xe890('0x33')]=qs[_0xe890('0x2a')](_[_0xe890('0x34')](_0x58a64e[_0xe890('0x28')],_0x568718[_0xe890('0x2a')]));if(_0x58a64e[_0xe890('0x28')]['filter']){_0x3944e4[_0xe890('0x33')]=_[_0xe890('0x36')](_0x3944e4[_0xe890('0x33')],{'$or':_['map'](_0x3944e4[_0xe890('0x2c')],function(_0x138a08){var _0x1335b4={};_0x1335b4[_0x138a08]={'$like':'%'+_0x58a64e[_0xe890('0x28')][_0xe890('0x35')]+'%'};return _0x1335b4;})});}_0x3944e4=_[_0xe890('0x36')]({},_0x3944e4,_0x58a64e[_0xe890('0x39')]);return _0x4ac98c[_0xe890('0x43')](_0x3944e4);}})['then'](function(_0x529feb){if(_0x529feb){_0x26afee=_0x529feb[_0xe890('0x2e')];if(!_0x58a64e[_0xe890('0x28')]['hasOwnProperty'](_0xe890('0x30'))){_0x3944e4['limit']=qs[_0xe890('0x15')](_0x58a64e[_0xe890('0x28')]['limit']);_0x3944e4['offset']=qs['offset'](_0x58a64e[_0xe890('0x28')][_0xe890('0x14')]);}return _0x4ac98c[_0xe890('0x43')](_0x3944e4);}})[_0xe890('0x1d')](function(_0x4d92f5){if(_0x4d92f5){return _0x4d92f5?{'count':_0x26afee,'rows':_0x4d92f5}:null;}})[_0xe890('0x1d')](respondWithResult(_0x1c890c,null))[_0xe890('0x40')](handleError(_0x1c890c,null));};exports['getSubjects']=function(_0x4c2d86,_0x37f002,_0xaa1013){var _0x59733a={};var _0x42b5cb={};var _0x39d56f;var _0x30bcc0;return db[_0xe890('0x23')][_0xe890('0x44')]({'where':{'id':_0x4c2d86['params']['id']}})[_0xe890('0x1d')](handleEntityNotFound(_0x37f002,null))['then'](function(_0xbfb3c5){if(_0xbfb3c5){_0x39d56f=_0xbfb3c5;_0x42b5cb[_0xe890('0x26')]=_[_0xe890('0x29')](db['ServicenowField']['rawAttributes']);_0x42b5cb[_0xe890('0x28')]=_[_0xe890('0x29')](_0x4c2d86[_0xe890('0x28')]);_0x42b5cb[_0xe890('0x2a')]=_[_0xe890('0x2b')](_0x42b5cb['model'],_0x42b5cb['query']);_0x59733a[_0xe890('0x2c')]=_[_0xe890('0x2b')](_0x42b5cb[_0xe890('0x26')],qs['fields'](_0x4c2d86[_0xe890('0x28')][_0xe890('0x2d')]));_0x59733a['attributes']=_0x59733a[_0xe890('0x2c')][_0xe890('0x2e')]?_0x59733a[_0xe890('0x2c')]:_0x42b5cb[_0xe890('0x26')];_0x59733a[_0xe890('0x31')]=qs[_0xe890('0x32')](_0x4c2d86[_0xe890('0x28')]['sort']);_0x59733a[_0xe890('0x33')]=qs[_0xe890('0x2a')](_['pick'](_0x4c2d86[_0xe890('0x28')],_0x42b5cb[_0xe890('0x2a')]));if(_0x4c2d86[_0xe890('0x28')][_0xe890('0x35')]){_0x59733a[_0xe890('0x33')]=_[_0xe890('0x36')](_0x59733a['where'],{'$or':_[_0xe890('0x27')](_0x59733a['attributes'],function(_0x1cb6b3){var _0x43eb99={};_0x43eb99[_0x1cb6b3]={'$like':'%'+_0x4c2d86[_0xe890('0x28')][_0xe890('0x35')]+'%'};return _0x43eb99;})});}_0x59733a=_['merge']({},_0x59733a,_0x4c2d86[_0xe890('0x39')]);return _0x39d56f['getSubjects'](_0x59733a);}})[_0xe890('0x1d')](function(_0x5d927f){if(_0x5d927f){_0x30bcc0=_0x5d927f[_0xe890('0x2e')];if(!_0x4c2d86['query'][_0xe890('0x2f')](_0xe890('0x30'))){_0x59733a['limit']=qs[_0xe890('0x15')](_0x4c2d86[_0xe890('0x28')][_0xe890('0x15')]);_0x59733a['offset']=qs['offset'](_0x4c2d86[_0xe890('0x28')][_0xe890('0x14')]);}return _0x39d56f[_0xe890('0x45')](_0x59733a);}})['then'](function(_0xbdc40d){if(_0xbdc40d){return _0xbdc40d?{'count':_0x30bcc0,'rows':_0xbdc40d}:null;}})['then'](respondWithResult(_0x37f002,null))['catch'](handleError(_0x37f002,null));};exports[_0xe890('0x46')]=function(_0x1a63f4,_0x5ae892,_0x31be1a){var _0xc27454={};var _0x1f8079={};var _0x1033ea;var _0x5eb5d8;return db[_0xe890('0x23')][_0xe890('0x44')]({'where':{'id':_0x1a63f4[_0xe890('0x3d')]['id']}})[_0xe890('0x1d')](handleEntityNotFound(_0x5ae892,null))[_0xe890('0x1d')](function(_0x2db77d){if(_0x2db77d){_0x1033ea=_0x2db77d;_0x1f8079[_0xe890('0x26')]=_[_0xe890('0x29')](db[_0xe890('0x47')]['rawAttributes']);_0x1f8079['query']=_[_0xe890('0x29')](_0x1a63f4[_0xe890('0x28')]);_0x1f8079[_0xe890('0x2a')]=_['intersection'](_0x1f8079[_0xe890('0x26')],_0x1f8079[_0xe890('0x28')]);_0xc27454[_0xe890('0x2c')]=_[_0xe890('0x2b')](_0x1f8079[_0xe890('0x26')],qs[_0xe890('0x2d')](_0x1a63f4['query'][_0xe890('0x2d')]));_0xc27454[_0xe890('0x2c')]=_0xc27454[_0xe890('0x2c')]['length']?_0xc27454[_0xe890('0x2c')]:_0x1f8079['model'];_0xc27454[_0xe890('0x31')]=qs['sort'](_0x1a63f4[_0xe890('0x28')][_0xe890('0x32')]);_0xc27454[_0xe890('0x33')]=qs[_0xe890('0x2a')](_[_0xe890('0x34')](_0x1a63f4[_0xe890('0x28')],_0x1f8079[_0xe890('0x2a')]));if(_0x1a63f4['query'][_0xe890('0x35')]){_0xc27454[_0xe890('0x33')]=_[_0xe890('0x36')](_0xc27454[_0xe890('0x33')],{'$or':_[_0xe890('0x27')](_0xc27454['attributes'],function(_0x89e3ac){var _0x591cc1={};_0x591cc1[_0x89e3ac]={'$like':'%'+_0x1a63f4[_0xe890('0x28')]['filter']+'%'};return _0x591cc1;})});}_0xc27454=_[_0xe890('0x36')]({},_0xc27454,_0x1a63f4['options']);return _0x1033ea[_0xe890('0x46')](_0xc27454);}})[_0xe890('0x1d')](function(_0x4c5b0b){if(_0x4c5b0b){_0x5eb5d8=_0x4c5b0b['length'];if(!_0x1a63f4[_0xe890('0x28')]['hasOwnProperty']('nolimit')){_0xc27454[_0xe890('0x15')]=qs[_0xe890('0x15')](_0x1a63f4[_0xe890('0x28')][_0xe890('0x15')]);_0xc27454['offset']=qs['offset'](_0x1a63f4[_0xe890('0x28')][_0xe890('0x14')]);}return _0x1033ea[_0xe890('0x46')](_0xc27454);}})['then'](function(_0x573fbd){if(_0x573fbd){return _0x573fbd?{'count':_0x5eb5d8,'rows':_0x573fbd}:null;}})[_0xe890('0x1d')](respondWithResult(_0x5ae892,null))[_0xe890('0x40')](handleError(_0x5ae892,null));};
\ No newline at end of file
+var _0x3b5e=['then','error','stack','name','send','index','map','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','merge','ServicenowConfiguration','include','findAll','rows','catch','show','includeAll','options','find','create','body','params','getFields','findOne','rawAttributes','getSubjects','getDescriptions','ServicenowField','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','save','update','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3b5e,0x7e));var _0xe3b5=function(_0x1b33bc,_0x282af6){_0x1b33bc=_0x1b33bc-0x0;var _0x23b81c=_0x3b5e[_0x1b33bc];return _0x23b81c;};'use strict';var emlformat=require(_0xe3b5('0x0'));var rimraf=require(_0xe3b5('0x1'));var zipdir=require(_0xe3b5('0x2'));var jsonpatch=require(_0xe3b5('0x3'));var rp=require(_0xe3b5('0x4'));var moment=require(_0xe3b5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe3b5('0x6'));var util=require(_0xe3b5('0x7'));var path=require(_0xe3b5('0x8'));var sox=require(_0xe3b5('0x9'));var csv=require(_0xe3b5('0xa'));var ejs=require(_0xe3b5('0xb'));var fs=require('fs');var fs_extra=require(_0xe3b5('0xc'));var _=require('lodash');var squel=require(_0xe3b5('0xd'));var crypto=require(_0xe3b5('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe3b5('0xa'));var querystring=require(_0xe3b5('0xf'));var Papa=require(_0xe3b5('0x10'));var Redis=require(_0xe3b5('0x11'));var authService=require(_0xe3b5('0x12'));var qs=require(_0xe3b5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe3b5('0x14'));var logger=require(_0xe3b5('0x15'))(_0xe3b5('0x16'));var utils=require(_0xe3b5('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe3b5('0x18'))['db'];function respondWithStatusCode(_0x24780a,_0x32ab61){_0x32ab61=_0x32ab61||0xcc;return function(_0x3fc4df){if(_0x3fc4df){return _0x24780a[_0xe3b5('0x19')](_0x32ab61);}return _0x24780a['status'](_0x32ab61)[_0xe3b5('0x1a')]();};}function respondWithResult(_0x2b456d,_0x1f66c3){_0x1f66c3=_0x1f66c3||0xc8;return function(_0x460a90){if(_0x460a90){return _0x2b456d['status'](_0x1f66c3)[_0xe3b5('0x1b')](_0x460a90);}};}function respondWithFilteredResult(_0x42608d,_0x382d6a){return function(_0x4a2ae2){if(_0x4a2ae2){var _0x48a602=typeof _0x382d6a[_0xe3b5('0x1c')]===_0xe3b5('0x1d')&&typeof _0x382d6a[_0xe3b5('0x1e')]==='undefined';var _0x4170ae=_0x4a2ae2[_0xe3b5('0x1f')];var _0x42adf2=_0x48a602?0x0:_0x382d6a['offset'];var _0x306951=_0x48a602?_0x4a2ae2[_0xe3b5('0x1f')]:_0x382d6a[_0xe3b5('0x1c')]+_0x382d6a[_0xe3b5('0x1e')];var _0x595afe;if(_0x306951>=_0x4170ae){_0x306951=_0x4170ae;_0x595afe=0xc8;}else{_0x595afe=0xce;}_0x42608d[_0xe3b5('0x20')](_0x595afe);return _0x42608d['set']('Content-Range',_0x42adf2+'-'+_0x306951+'/'+_0x4170ae)[_0xe3b5('0x1b')](_0x4a2ae2);}return null;};}function patchUpdates(_0x54d95b){return function(_0x2d84c1){try{jsonpatch[_0xe3b5('0x21')](_0x2d84c1,_0x54d95b,!![]);}catch(_0x5449cf){return BPromise[_0xe3b5('0x22')](_0x5449cf);}return _0x2d84c1[_0xe3b5('0x23')]();};}function saveUpdates(_0x53ce0d,_0x549fb0){return function(_0x2c1c52){if(_0x2c1c52){return _0x2c1c52[_0xe3b5('0x24')](_0x53ce0d)['then'](function(_0x9ccfba){return _0x9ccfba;});}return null;};}function removeEntity(_0x26147d,_0x994ec5){return function(_0x28adbf){if(_0x28adbf){return _0x28adbf[_0xe3b5('0x25')]()[_0xe3b5('0x26')](function(){_0x26147d[_0xe3b5('0x20')](0xcc)[_0xe3b5('0x1a')]();});}};}function handleEntityNotFound(_0x5c8912,_0x25a312){return function(_0x2ce112){if(!_0x2ce112){_0x5c8912[_0xe3b5('0x19')](0x194);}return _0x2ce112;};}function handleError(_0x9e4c30,_0x59035c){_0x59035c=_0x59035c||0x1f4;return function(_0x9d97f9){logger[_0xe3b5('0x27')](_0x9d97f9[_0xe3b5('0x28')]);if(_0x9d97f9['name']){delete _0x9d97f9[_0xe3b5('0x29')];}_0x9e4c30[_0xe3b5('0x20')](_0x59035c)[_0xe3b5('0x2a')](_0x9d97f9);};}exports[_0xe3b5('0x2b')]=function(_0x1a1101,_0x3cb1bd){var _0x261578={},_0x5a3ff7={},_0x2cc08d={'count':0x0,'rows':[]};var _0x225029=_[_0xe3b5('0x2c')](db['ServicenowConfiguration']['rawAttributes'],function(_0x4fdd19){return{'name':_0x4fdd19[_0xe3b5('0x2d')],'type':_0x4fdd19['type'][_0xe3b5('0x2e')]};});_0x5a3ff7[_0xe3b5('0x2f')]=_[_0xe3b5('0x2c')](_0x225029,_0xe3b5('0x29'));_0x5a3ff7['query']=_[_0xe3b5('0x30')](_0x1a1101[_0xe3b5('0x31')]);_0x5a3ff7[_0xe3b5('0x32')]=_[_0xe3b5('0x33')](_0x5a3ff7[_0xe3b5('0x2f')],_0x5a3ff7[_0xe3b5('0x31')]);_0x261578[_0xe3b5('0x34')]=_[_0xe3b5('0x33')](_0x5a3ff7['model'],qs[_0xe3b5('0x35')](_0x1a1101[_0xe3b5('0x31')][_0xe3b5('0x35')]));_0x261578[_0xe3b5('0x34')]=_0x261578['attributes'][_0xe3b5('0x36')]?_0x261578[_0xe3b5('0x34')]:_0x5a3ff7['model'];if(!_0x1a1101[_0xe3b5('0x31')][_0xe3b5('0x37')](_0xe3b5('0x38'))){_0x261578[_0xe3b5('0x1e')]=qs[_0xe3b5('0x1e')](_0x1a1101[_0xe3b5('0x31')][_0xe3b5('0x1e')]);_0x261578[_0xe3b5('0x1c')]=qs['offset'](_0x1a1101['query'][_0xe3b5('0x1c')]);}_0x261578[_0xe3b5('0x39')]=qs[_0xe3b5('0x3a')](_0x1a1101['query'][_0xe3b5('0x3a')]);_0x261578['where']=qs['filters'](_[_0xe3b5('0x3b')](_0x1a1101['query'],_0x5a3ff7['filters']),_0x225029);if(_0x1a1101[_0xe3b5('0x31')][_0xe3b5('0x3c')]){_0x261578['where']=_['merge'](_0x261578[_0xe3b5('0x3d')],{'$or':_[_0xe3b5('0x2c')](_0x225029,function(_0x31eb83){if(_0x31eb83[_0xe3b5('0x3e')]!=='VIRTUAL'){var _0x146cce={};_0x146cce[_0x31eb83[_0xe3b5('0x29')]]={'$like':'%'+_0x1a1101[_0xe3b5('0x31')][_0xe3b5('0x3c')]+'%'};return _0x146cce;}})});}_0x261578=_[_0xe3b5('0x3f')]({},_0x261578,_0x1a1101['options']);var _0x5cbfdb={'where':_0x261578['where']};return db[_0xe3b5('0x40')]['count'](_0x5cbfdb)['then'](function(_0x4ecadb){_0x2cc08d[_0xe3b5('0x1f')]=_0x4ecadb;if(_0x1a1101[_0xe3b5('0x31')]['includeAll']){_0x261578[_0xe3b5('0x41')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xe3b5('0x42')](_0x261578);})['then'](function(_0x515a05){_0x2cc08d[_0xe3b5('0x43')]=_0x515a05;return _0x2cc08d;})[_0xe3b5('0x26')](respondWithFilteredResult(_0x3cb1bd,_0x261578))[_0xe3b5('0x44')](handleError(_0x3cb1bd,null));};exports[_0xe3b5('0x45')]=function(_0x4e81ff,_0x39f92c){var _0x592708={'raw':![],'where':{'id':_0x4e81ff['params']['id']}},_0x1f8124={};_0x1f8124[_0xe3b5('0x2f')]=_[_0xe3b5('0x30')](db[_0xe3b5('0x40')]['rawAttributes']);_0x1f8124[_0xe3b5('0x31')]=_['keys'](_0x4e81ff['query']);_0x1f8124['filters']=_[_0xe3b5('0x33')](_0x1f8124[_0xe3b5('0x2f')],_0x1f8124[_0xe3b5('0x31')]);_0x592708[_0xe3b5('0x34')]=_[_0xe3b5('0x33')](_0x1f8124[_0xe3b5('0x2f')],qs[_0xe3b5('0x35')](_0x4e81ff[_0xe3b5('0x31')]['fields']));_0x592708[_0xe3b5('0x34')]=_0x592708[_0xe3b5('0x34')][_0xe3b5('0x36')]?_0x592708['attributes']:_0x1f8124[_0xe3b5('0x2f')];if(_0x4e81ff[_0xe3b5('0x31')][_0xe3b5('0x46')]){_0x592708[_0xe3b5('0x41')]=[{'all':!![]}];}_0x592708=_['merge']({},_0x592708,_0x4e81ff[_0xe3b5('0x47')]);return db[_0xe3b5('0x40')][_0xe3b5('0x48')](_0x592708)[_0xe3b5('0x26')](handleEntityNotFound(_0x39f92c,null))[_0xe3b5('0x26')](respondWithResult(_0x39f92c,null))['catch'](handleError(_0x39f92c,null));};exports[_0xe3b5('0x49')]=function(_0x53c942,_0xa51bdd){return db['ServicenowConfiguration'][_0xe3b5('0x49')](_0x53c942['body'],{})['then'](respondWithResult(_0xa51bdd,0xc9))['catch'](handleError(_0xa51bdd,null));};exports[_0xe3b5('0x24')]=function(_0xf86182,_0x277135){if(_0xf86182['body']['id']){delete _0xf86182[_0xe3b5('0x4a')]['id'];}return db[_0xe3b5('0x40')][_0xe3b5('0x48')]({'where':{'id':_0xf86182[_0xe3b5('0x4b')]['id']}})[_0xe3b5('0x26')](handleEntityNotFound(_0x277135,null))['then'](saveUpdates(_0xf86182[_0xe3b5('0x4a')],null))[_0xe3b5('0x26')](respondWithResult(_0x277135,null))[_0xe3b5('0x44')](handleError(_0x277135,null));};exports[_0xe3b5('0x25')]=function(_0x10e77c,_0x5b0641){return db[_0xe3b5('0x40')][_0xe3b5('0x48')]({'where':{'id':_0x10e77c[_0xe3b5('0x4b')]['id']}})[_0xe3b5('0x26')](handleEntityNotFound(_0x5b0641,null))[_0xe3b5('0x26')](removeEntity(_0x5b0641,null))[_0xe3b5('0x44')](handleError(_0x5b0641,null));};exports[_0xe3b5('0x4c')]=function(_0x1c713d,_0x134734,_0x5dd166){var _0x2b72a3={};var _0x4fac98={};var _0x297e9d;var _0x320e91;return db[_0xe3b5('0x40')][_0xe3b5('0x4d')]({'where':{'id':_0x1c713d[_0xe3b5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x134734,null))[_0xe3b5('0x26')](function(_0x4559e7){if(_0x4559e7){_0x297e9d=_0x4559e7;_0x4fac98['model']=_[_0xe3b5('0x30')](db['ServicenowField'][_0xe3b5('0x4e')]);_0x4fac98[_0xe3b5('0x31')]=_[_0xe3b5('0x30')](_0x1c713d[_0xe3b5('0x31')]);_0x4fac98[_0xe3b5('0x32')]=_[_0xe3b5('0x33')](_0x4fac98['model'],_0x4fac98['query']);_0x2b72a3[_0xe3b5('0x34')]=_[_0xe3b5('0x33')](_0x4fac98['model'],qs[_0xe3b5('0x35')](_0x1c713d[_0xe3b5('0x31')]['fields']));_0x2b72a3['attributes']=_0x2b72a3[_0xe3b5('0x34')][_0xe3b5('0x36')]?_0x2b72a3['attributes']:_0x4fac98[_0xe3b5('0x2f')];_0x2b72a3['order']=qs[_0xe3b5('0x3a')](_0x1c713d[_0xe3b5('0x31')]['sort']);_0x2b72a3[_0xe3b5('0x3d')]=qs[_0xe3b5('0x32')](_[_0xe3b5('0x3b')](_0x1c713d['query'],_0x4fac98[_0xe3b5('0x32')]));if(_0x1c713d[_0xe3b5('0x31')]['filter']){_0x2b72a3[_0xe3b5('0x3d')]=_['merge'](_0x2b72a3['where'],{'$or':_[_0xe3b5('0x2c')](_0x2b72a3[_0xe3b5('0x34')],function(_0x413a75){var _0x887819={};_0x887819[_0x413a75]={'$like':'%'+_0x1c713d['query'][_0xe3b5('0x3c')]+'%'};return _0x887819;})});}_0x2b72a3=_[_0xe3b5('0x3f')]({},_0x2b72a3,_0x1c713d[_0xe3b5('0x47')]);return _0x297e9d[_0xe3b5('0x4c')](_0x2b72a3);}})[_0xe3b5('0x26')](function(_0x54e5be){if(_0x54e5be){_0x320e91=_0x54e5be[_0xe3b5('0x36')];if(!_0x1c713d[_0xe3b5('0x31')][_0xe3b5('0x37')]('nolimit')){_0x2b72a3[_0xe3b5('0x1e')]=qs[_0xe3b5('0x1e')](_0x1c713d[_0xe3b5('0x31')][_0xe3b5('0x1e')]);_0x2b72a3[_0xe3b5('0x1c')]=qs[_0xe3b5('0x1c')](_0x1c713d[_0xe3b5('0x31')][_0xe3b5('0x1c')]);}return _0x297e9d[_0xe3b5('0x4c')](_0x2b72a3);}})[_0xe3b5('0x26')](function(_0x532149){if(_0x532149){return _0x532149?{'count':_0x320e91,'rows':_0x532149}:null;}})['then'](respondWithResult(_0x134734,null))[_0xe3b5('0x44')](handleError(_0x134734,null));};exports[_0xe3b5('0x4f')]=function(_0x4b24af,_0x42c121,_0x1adcf7){var _0x4f0e3e={};var _0x529444={};var _0x520d4e;var _0x5de040;return db[_0xe3b5('0x40')]['findOne']({'where':{'id':_0x4b24af[_0xe3b5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x42c121,null))[_0xe3b5('0x26')](function(_0x534d3b){if(_0x534d3b){_0x520d4e=_0x534d3b;_0x529444['model']=_['keys'](db['ServicenowField'][_0xe3b5('0x4e')]);_0x529444[_0xe3b5('0x31')]=_['keys'](_0x4b24af[_0xe3b5('0x31')]);_0x529444['filters']=_[_0xe3b5('0x33')](_0x529444[_0xe3b5('0x2f')],_0x529444[_0xe3b5('0x31')]);_0x4f0e3e[_0xe3b5('0x34')]=_[_0xe3b5('0x33')](_0x529444[_0xe3b5('0x2f')],qs['fields'](_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x35')]));_0x4f0e3e['attributes']=_0x4f0e3e[_0xe3b5('0x34')][_0xe3b5('0x36')]?_0x4f0e3e['attributes']:_0x529444[_0xe3b5('0x2f')];_0x4f0e3e[_0xe3b5('0x39')]=qs[_0xe3b5('0x3a')](_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x3a')]);_0x4f0e3e[_0xe3b5('0x3d')]=qs[_0xe3b5('0x32')](_[_0xe3b5('0x3b')](_0x4b24af['query'],_0x529444['filters']));if(_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x3c')]){_0x4f0e3e['where']=_[_0xe3b5('0x3f')](_0x4f0e3e['where'],{'$or':_[_0xe3b5('0x2c')](_0x4f0e3e[_0xe3b5('0x34')],function(_0x7ccfd8){var _0x55e0dd={};_0x55e0dd[_0x7ccfd8]={'$like':'%'+_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x3c')]+'%'};return _0x55e0dd;})});}_0x4f0e3e=_['merge']({},_0x4f0e3e,_0x4b24af[_0xe3b5('0x47')]);return _0x520d4e['getSubjects'](_0x4f0e3e);}})['then'](function(_0x3d6f1b){if(_0x3d6f1b){_0x5de040=_0x3d6f1b['length'];if(!_0x4b24af['query'][_0xe3b5('0x37')](_0xe3b5('0x38'))){_0x4f0e3e[_0xe3b5('0x1e')]=qs[_0xe3b5('0x1e')](_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x1e')]);_0x4f0e3e['offset']=qs['offset'](_0x4b24af[_0xe3b5('0x31')][_0xe3b5('0x1c')]);}return _0x520d4e[_0xe3b5('0x4f')](_0x4f0e3e);}})[_0xe3b5('0x26')](function(_0x44a171){if(_0x44a171){return _0x44a171?{'count':_0x5de040,'rows':_0x44a171}:null;}})[_0xe3b5('0x26')](respondWithResult(_0x42c121,null))[_0xe3b5('0x44')](handleError(_0x42c121,null));};exports[_0xe3b5('0x50')]=function(_0x4c9f09,_0x589650,_0x5efc55){var _0x3fa6ce={};var _0x9ba06f={};var _0x18a071;var _0x2cc394;return db[_0xe3b5('0x40')][_0xe3b5('0x4d')]({'where':{'id':_0x4c9f09[_0xe3b5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x589650,null))['then'](function(_0x41189c){if(_0x41189c){_0x18a071=_0x41189c;_0x9ba06f[_0xe3b5('0x2f')]=_[_0xe3b5('0x30')](db[_0xe3b5('0x51')]['rawAttributes']);_0x9ba06f[_0xe3b5('0x31')]=_[_0xe3b5('0x30')](_0x4c9f09[_0xe3b5('0x31')]);_0x9ba06f['filters']=_[_0xe3b5('0x33')](_0x9ba06f[_0xe3b5('0x2f')],_0x9ba06f['query']);_0x3fa6ce[_0xe3b5('0x34')]=_[_0xe3b5('0x33')](_0x9ba06f[_0xe3b5('0x2f')],qs['fields'](_0x4c9f09['query'][_0xe3b5('0x35')]));_0x3fa6ce['attributes']=_0x3fa6ce[_0xe3b5('0x34')][_0xe3b5('0x36')]?_0x3fa6ce['attributes']:_0x9ba06f[_0xe3b5('0x2f')];_0x3fa6ce[_0xe3b5('0x39')]=qs['sort'](_0x4c9f09[_0xe3b5('0x31')]['sort']);_0x3fa6ce[_0xe3b5('0x3d')]=qs[_0xe3b5('0x32')](_['pick'](_0x4c9f09[_0xe3b5('0x31')],_0x9ba06f['filters']));if(_0x4c9f09[_0xe3b5('0x31')]['filter']){_0x3fa6ce[_0xe3b5('0x3d')]=_['merge'](_0x3fa6ce['where'],{'$or':_['map'](_0x3fa6ce[_0xe3b5('0x34')],function(_0x3d3a5a){var _0x5daf98={};_0x5daf98[_0x3d3a5a]={'$like':'%'+_0x4c9f09[_0xe3b5('0x31')][_0xe3b5('0x3c')]+'%'};return _0x5daf98;})});}_0x3fa6ce=_[_0xe3b5('0x3f')]({},_0x3fa6ce,_0x4c9f09[_0xe3b5('0x47')]);return _0x18a071[_0xe3b5('0x50')](_0x3fa6ce);}})['then'](function(_0x4517c6){if(_0x4517c6){_0x2cc394=_0x4517c6['length'];if(!_0x4c9f09[_0xe3b5('0x31')][_0xe3b5('0x37')](_0xe3b5('0x38'))){_0x3fa6ce['limit']=qs['limit'](_0x4c9f09[_0xe3b5('0x31')][_0xe3b5('0x1e')]);_0x3fa6ce['offset']=qs['offset'](_0x4c9f09[_0xe3b5('0x31')][_0xe3b5('0x1c')]);}return _0x18a071[_0xe3b5('0x50')](_0x3fa6ce);}})['then'](function(_0x581dc5){if(_0x581dc5){return _0x581dc5?{'count':_0x2cc394,'rows':_0x581dc5}:null;}})[_0xe3b5('0x26')](respondWithResult(_0x589650,null))[_0xe3b5('0x44')](handleError(_0x589650,null));};
\ No newline at end of file
index a1bbc44..7e90ea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['bluebird','request-promise','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','lodash','util','api'];(function(_0x506341,_0x40b3c6){var _0x57fea0=function(_0x445028){while(--_0x445028){_0x506341['push'](_0x506341['shift']());}};_0x57fea0(++_0x40b3c6);}(_0xe511,0x16f));var _0x1e51=function(_0xf237f7,_0xb11ac){_0xf237f7=_0xf237f7-0x0;var _0x2c183b=_0xe511[_0xf237f7];return _0x2c183b;};'use strict';var _=require(_0x1e51('0x0'));var util=require(_0x1e51('0x1'));var logger=require('../../config/logger')(_0x1e51('0x2'));var moment=require('moment');var BPromise=require(_0x1e51('0x3'));var rp=require(_0x1e51('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1e51('0x5'));var config=require(_0x1e51('0x6'));var attributes=require(_0x1e51('0x7'));module[_0x1e51('0x8')]=function(_0x480cca,_0x26b22c){return _0x480cca[_0x1e51('0x9')]('ServicenowConfiguration',attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb9e7=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','ServicenowConfiguration','int_servicenow_configurations','util'];(function(_0x16852f,_0x4e8e3e){var _0x13e242=function(_0xf77f45){while(--_0xf77f45){_0x16852f['push'](_0x16852f['shift']());}};_0x13e242(++_0x4e8e3e);}(_0xb9e7,0x1df));var _0x7b9e=function(_0x2c9b79,_0x7cf58b){_0x2c9b79=_0x2c9b79-0x0;var _0x265032=_0xb9e7[_0x2c9b79];return _0x265032;};'use strict';var _=require('lodash');var util=require(_0x7b9e('0x0'));var logger=require(_0x7b9e('0x1'))(_0x7b9e('0x2'));var moment=require(_0x7b9e('0x3'));var BPromise=require(_0x7b9e('0x4'));var rp=require(_0x7b9e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b9e('0x6'));var config=require(_0x7b9e('0x7'));var attributes=require('./intServicenowConfiguration.attributes');module[_0x7b9e('0x8')]=function(_0x51a0ca,_0x3a9c5e){return _0x51a0ca[_0x7b9e('0x9')](_0x7b9e('0xa'),attributes,{'tableName':_0x7b9e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index beba9c9..ca14b6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b04=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring'];(function(_0x64d0bf,_0x514d37){var _0x581396=function(_0xf1d78){while(--_0xf1d78){_0x64d0bf['push'](_0x64d0bf['shift']());}};_0x581396(++_0x514d37);}(_0x0b04,0x164));var _0x40b0=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0x0b04[_0x47aa64];return _0x549c7a;};'use strict';var _=require(_0x40b0('0x0'));var util=require(_0x40b0('0x1'));var moment=require(_0x40b0('0x2'));var BPromise=require('bluebird');var rs=require(_0x40b0('0x3'));var fs=require('fs');var Redis=require(_0x40b0('0x4'));var db=require(_0x40b0('0x5'))['db'];var utils=require(_0x40b0('0x6'));var logger=require(_0x40b0('0x7'))('rpc');var config=require(_0x40b0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x40b0('0x9')][_0x40b0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x14433f,_0x524cb9,_0x478992){return new BPromise(function(_0x5127ca,_0x19a5f0){return client[_0x40b0('0xb')](_0x14433f,_0x478992)[_0x40b0('0xc')](function(_0x30f5cb){logger[_0x40b0('0xd')](_0x40b0('0xe'),_0x524cb9,_0x40b0('0xf'));logger[_0x40b0('0x10')](_0x40b0('0x11'),_0x524cb9,_0x40b0('0xf'),JSON[_0x40b0('0x12')](_0x30f5cb));if(_0x30f5cb[_0x40b0('0x13')]){if(_0x30f5cb['error'][_0x40b0('0x14')]===0x1f4){logger['error'](_0x40b0('0xe'),_0x524cb9,_0x30f5cb[_0x40b0('0x13')][_0x40b0('0x15')]);return _0x19a5f0(_0x30f5cb['error'][_0x40b0('0x15')]);}logger[_0x40b0('0x13')]('ServicenowConfiguration,\x20%s,\x20%s',_0x524cb9,_0x30f5cb[_0x40b0('0x13')]['message']);return _0x5127ca(_0x30f5cb[_0x40b0('0x13')][_0x40b0('0x15')]);}else{logger[_0x40b0('0xd')](_0x40b0('0xe'),_0x524cb9,_0x40b0('0xf'));_0x5127ca(_0x30f5cb[_0x40b0('0x16')][_0x40b0('0x15')]);}})[_0x40b0('0x17')](function(_0x4df8b6){logger['error'](_0x40b0('0xe'),_0x524cb9,_0x4df8b6);_0x19a5f0(_0x4df8b6);});});}
\ No newline at end of file
+var _0x819e=['debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','error','message','info','result','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x444629,_0x149f20){var _0x4d61cc=function(_0x25b934){while(--_0x25b934){_0x444629['push'](_0x444629['shift']());}};_0x4d61cc(++_0x149f20);}(_0x819e,0x141));var _0xe819=function(_0x3cbb14,_0x3c95a7){_0x3cbb14=_0x3cbb14-0x0;var _0x2bfb35=_0x819e[_0x3cbb14];return _0x2bfb35;};'use strict';var _=require('lodash');var util=require(_0xe819('0x0'));var moment=require(_0xe819('0x1'));var BPromise=require(_0xe819('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe819('0x3'));var db=require(_0xe819('0x4'))['db'];var utils=require(_0xe819('0x5'));var logger=require('../../config/logger')(_0xe819('0x6'));var config=require(_0xe819('0x7'));var jayson=require(_0xe819('0x8'));var client=jayson[_0xe819('0x9')][_0xe819('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5886f1,_0x55f12f,_0x41e0a2){return new BPromise(function(_0x365c63,_0x4148e6){return client[_0xe819('0xb')](_0x5886f1,_0x41e0a2)[_0xe819('0xc')](function(_0x486ca5){logger['info'](_0xe819('0xd'),_0x55f12f,_0xe819('0xe'));logger[_0xe819('0xf')](_0xe819('0x10'),_0x55f12f,_0xe819('0xe'),JSON['stringify'](_0x486ca5));if(_0x486ca5['error']){if(_0x486ca5[_0xe819('0x11')]['code']===0x1f4){logger['error'](_0xe819('0xd'),_0x55f12f,_0x486ca5[_0xe819('0x11')][_0xe819('0x12')]);return _0x4148e6(_0x486ca5[_0xe819('0x11')][_0xe819('0x12')]);}logger['error'](_0xe819('0xd'),_0x55f12f,_0x486ca5[_0xe819('0x11')][_0xe819('0x12')]);return _0x365c63(_0x486ca5['error'][_0xe819('0x12')]);}else{logger[_0xe819('0x13')](_0xe819('0xd'),_0x55f12f,_0xe819('0xe'));_0x365c63(_0x486ca5[_0xe819('0x14')][_0xe819('0x12')]);}})['catch'](function(_0x1d01f0){logger[_0xe819('0x11')]('ServicenowConfiguration,\x20%s,\x20%s',_0x55f12f,_0x1d01f0);_0x4148e6(_0x1d01f0);});});}
\ No newline at end of file
index 5f0da7c..f696d18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x409e=['put','update','delete','exports','multer','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','show','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x409e,0x125));var _0xe409=function(_0x564242,_0x4159f7){_0x564242=_0x564242-0x0;var _0x2906fb=_0x409e[_0x564242];return _0x2906fb;};'use strict';var multer=require(_0xe409('0x0'));var util=require(_0xe409('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe409('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xe409('0x3'));var interaction=require(_0xe409('0x4'));var config=require(_0xe409('0x5'));var controller=require(_0xe409('0x6'));router[_0xe409('0x7')]('/',auth[_0xe409('0x8')](),controller[_0xe409('0x9')]);router['get'](_0xe409('0xa'),auth['isAuthenticated'](),controller[_0xe409('0xb')]);router['post']('/',auth[_0xe409('0x8')](),controller[_0xe409('0xc')]);router[_0xe409('0xd')](_0xe409('0xa'),auth[_0xe409('0x8')](),controller[_0xe409('0xe')]);router[_0xe409('0xf')](_0xe409('0xa'),auth[_0xe409('0x8')](),controller['destroy']);module[_0xe409('0x10')]=router;
\ No newline at end of file
+var _0x0cea=['index','get','/:id','show','post','create','put','delete','isAuthenticated','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller'];(function(_0x32a41c,_0xa57f57){var _0xcab33b=function(_0x84a75b){while(--_0x84a75b){_0x32a41c['push'](_0x32a41c['shift']());}};_0xcab33b(++_0xa57f57);}(_0x0cea,0x69));var _0xa0ce=function(_0x1dc64f,_0x36da12){_0x1dc64f=_0x1dc64f-0x0;var _0x27963c=_0x0cea[_0x1dc64f];return _0x27963c;};'use strict';var multer=require(_0xa0ce('0x0'));var util=require(_0xa0ce('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa0ce('0x2'));var router=express[_0xa0ce('0x3')]();var fs_extra=require(_0xa0ce('0x4'));var auth=require(_0xa0ce('0x5'));var interaction=require(_0xa0ce('0x6'));var config=require(_0xa0ce('0x7'));var controller=require(_0xa0ce('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xa0ce('0x9')]);router[_0xa0ce('0xa')](_0xa0ce('0xb'),auth['isAuthenticated'](),controller[_0xa0ce('0xc')]);router[_0xa0ce('0xd')]('/',auth['isAuthenticated'](),controller[_0xa0ce('0xe')]);router[_0xa0ce('0xf')](_0xa0ce('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xa0ce('0x10')](_0xa0ce('0xb'),auth[_0xa0ce('0x11')](),controller[_0xa0ce('0x12')]);module['exports']=router;
\ No newline at end of file
index 36e10a3..b59cae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb30c=['keyValue','picklist','STRING','ENUM','BOOLEAN','string','variable','customVariable'];(function(_0x5968aa,_0xe0e979){var _0x2e0499=function(_0xa0512d){while(--_0xa0512d){_0x5968aa['push'](_0x5968aa['shift']());}};_0x2e0499(++_0xe0e979);}(_0xb30c,0x10d));var _0xcb30=function(_0x3775e6,_0x3bfa5e){_0x3775e6=_0x3775e6-0x0;var _0x50e289=_0xb30c[_0x3775e6];return _0x50e289;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM'](_0xcb30('0x0'),_0xcb30('0x1'),_0xcb30('0x2'),_0xcb30('0x3'),_0xcb30('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0xcb30('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xcb30('0x6')](_0xcb30('0x0'),_0xcb30('0x1'),_0xcb30('0x2'))},'keyContent':{'type':Sequelize[_0xcb30('0x5')]},'idField':{'type':Sequelize[_0xcb30('0x5')]},'nameField':{'type':Sequelize[_0xcb30('0x5')]},'customField':{'type':Sequelize[_0xcb30('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcb30('0x5')]}};
\ No newline at end of file
+var _0x741c=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','STRING'];(function(_0x257022,_0x509758){var _0x4ae481=function(_0x1ba426){while(--_0x1ba426){_0x257022['push'](_0x257022['shift']());}};_0x4ae481(++_0x509758);}(_0x741c,0x1b1));var _0xc741=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x741c[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0xc741('0x0'));module[_0xc741('0x1')]={'type':{'type':Sequelize[_0xc741('0x2')](_0xc741('0x3'),_0xc741('0x4'),_0xc741('0x5'),_0xc741('0x6'),'picklist'),'defaultValue':_0xc741('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xc741('0x2')](_0xc741('0x3'),_0xc741('0x4'),_0xc741('0x5'))},'keyContent':{'type':Sequelize[_0xc741('0x7')]},'idField':{'type':Sequelize[_0xc741('0x7')]},'nameField':{'type':Sequelize[_0xc741('0x7')]},'customField':{'type':Sequelize[_0xc741('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc741('0x7')]}};
\ No newline at end of file
index 904a364..5f9d42e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d06=['json','undefined','limit','count','offset','set','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','ServicenowField','findAll','rows','catch','show','params','find','create','body','update','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end'];(function(_0x272d90,_0x5e70ff){var _0x2bf4a2=function(_0x544da6){while(--_0x544da6){_0x272d90['push'](_0x272d90['shift']());}};_0x2bf4a2(++_0x5e70ff);}(_0x3d06,0x1a8));var _0x63d0=function(_0xf51c06,_0x388e5b){_0xf51c06=_0xf51c06-0x0;var _0x1d5420=_0x3d06[_0xf51c06];return _0x1d5420;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x63d0('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x63d0('0x1'));var rp=require(_0x63d0('0x2'));var moment=require('moment');var BPromise=require(_0x63d0('0x3'));var Mustache=require(_0x63d0('0x4'));var util=require(_0x63d0('0x5'));var path=require(_0x63d0('0x6'));var sox=require(_0x63d0('0x7'));var csv=require(_0x63d0('0x8'));var ejs=require(_0x63d0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x63d0('0xa'));var crypto=require(_0x63d0('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x63d0('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x63d0('0xd'));var Redis=require(_0x63d0('0xe'));var authService=require(_0x63d0('0xf'));var qs=require(_0x63d0('0x10'));var as=require(_0x63d0('0x11'));var hardwareService=require(_0x63d0('0x12'));var logger=require(_0x63d0('0x13'))('api');var utils=require(_0x63d0('0x14'));var config=require(_0x63d0('0x15'));var licenseUtil=require(_0x63d0('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a9cc1,_0x17e969){_0x17e969=_0x17e969||0xcc;return function(_0x223dd0){if(_0x223dd0){return _0x4a9cc1[_0x63d0('0x17')](_0x17e969);}return _0x4a9cc1[_0x63d0('0x18')](_0x17e969)[_0x63d0('0x19')]();};}function respondWithResult(_0x5909a2,_0x56ce7e){_0x56ce7e=_0x56ce7e||0xc8;return function(_0x16e8bc){if(_0x16e8bc){return _0x5909a2[_0x63d0('0x18')](_0x56ce7e)[_0x63d0('0x1a')](_0x16e8bc);}};}function respondWithFilteredResult(_0x26fa1c,_0x3c74f5){return function(_0x27a8d5){if(_0x27a8d5){var _0x244df=typeof _0x3c74f5['offset']===_0x63d0('0x1b')&&typeof _0x3c74f5[_0x63d0('0x1c')]===_0x63d0('0x1b');var _0x5723fa=_0x27a8d5[_0x63d0('0x1d')];var _0x133731=_0x244df?0x0:_0x3c74f5[_0x63d0('0x1e')];var _0x4a8671=_0x244df?_0x27a8d5[_0x63d0('0x1d')]:_0x3c74f5[_0x63d0('0x1e')]+_0x3c74f5['limit'];var _0x7146d7;if(_0x4a8671>=_0x5723fa){_0x4a8671=_0x5723fa;_0x7146d7=0xc8;}else{_0x7146d7=0xce;}_0x26fa1c[_0x63d0('0x18')](_0x7146d7);return _0x26fa1c[_0x63d0('0x1f')]('Content-Range',_0x133731+'-'+_0x4a8671+'/'+_0x5723fa)[_0x63d0('0x1a')](_0x27a8d5);}return null;};}function patchUpdates(_0xe5ba98){return function(_0x12198c){try{jsonpatch['apply'](_0x12198c,_0xe5ba98,!![]);}catch(_0x1b07ff){return BPromise[_0x63d0('0x20')](_0x1b07ff);}return _0x12198c[_0x63d0('0x21')]();};}function saveUpdates(_0x5a3556,_0x51dfcf){return function(_0x38e916){if(_0x38e916){return _0x38e916['update'](_0x5a3556)[_0x63d0('0x22')](function(_0x5cda77){return _0x5cda77;});}return null;};}function removeEntity(_0x36cccd,_0x36ef6f){return function(_0x5872b6){if(_0x5872b6){return _0x5872b6[_0x63d0('0x23')]()[_0x63d0('0x22')](function(){_0x36cccd[_0x63d0('0x18')](0xcc)[_0x63d0('0x19')]();});}};}function handleEntityNotFound(_0x93ad9c,_0x4e30af){return function(_0x3409a1){if(!_0x3409a1){_0x93ad9c['sendStatus'](0x194);}return _0x3409a1;};}function handleError(_0x357094,_0x593d0e){_0x593d0e=_0x593d0e||0x1f4;return function(_0xf68353){logger[_0x63d0('0x24')](_0xf68353[_0x63d0('0x25')]);if(_0xf68353[_0x63d0('0x26')]){delete _0xf68353['name'];}_0x357094['status'](_0x593d0e)[_0x63d0('0x27')](_0xf68353);};}exports[_0x63d0('0x28')]=function(_0x2e0db3,_0x4fbffe){var _0x182e5c={},_0x7df647={},_0x50a8fd={'count':0x0,'rows':[]};var _0x548304=_[_0x63d0('0x29')](db['ServicenowField'][_0x63d0('0x2a')],function(_0x1a0d89){return{'name':_0x1a0d89[_0x63d0('0x2b')],'type':_0x1a0d89[_0x63d0('0x2c')][_0x63d0('0x2d')]};});_0x7df647['model']=_['map'](_0x548304,'name');_0x7df647[_0x63d0('0x2e')]=_[_0x63d0('0x2f')](_0x2e0db3[_0x63d0('0x2e')]);_0x7df647[_0x63d0('0x30')]=_['intersection'](_0x7df647[_0x63d0('0x31')],_0x7df647[_0x63d0('0x2e')]);_0x182e5c['attributes']=_[_0x63d0('0x32')](_0x7df647[_0x63d0('0x31')],qs[_0x63d0('0x33')](_0x2e0db3['query'][_0x63d0('0x33')]));_0x182e5c['attributes']=_0x182e5c[_0x63d0('0x34')][_0x63d0('0x35')]?_0x182e5c[_0x63d0('0x34')]:_0x7df647['model'];if(!_0x2e0db3[_0x63d0('0x2e')][_0x63d0('0x36')](_0x63d0('0x37'))){_0x182e5c['limit']=qs[_0x63d0('0x1c')](_0x2e0db3[_0x63d0('0x2e')][_0x63d0('0x1c')]);_0x182e5c['offset']=qs['offset'](_0x2e0db3[_0x63d0('0x2e')][_0x63d0('0x1e')]);}_0x182e5c[_0x63d0('0x38')]=qs[_0x63d0('0x39')](_0x2e0db3['query']['sort']);_0x182e5c[_0x63d0('0x3a')]=qs['filters'](_[_0x63d0('0x3b')](_0x2e0db3[_0x63d0('0x2e')],_0x7df647['filters']),_0x548304);if(_0x2e0db3[_0x63d0('0x2e')][_0x63d0('0x3c')]){_0x182e5c[_0x63d0('0x3a')]=_[_0x63d0('0x3d')](_0x182e5c[_0x63d0('0x3a')],{'$or':_['map'](_0x548304,function(_0x51a5f2){if(_0x51a5f2[_0x63d0('0x2c')]!==_0x63d0('0x3e')){var _0x44be9d={};_0x44be9d[_0x51a5f2['name']]={'$like':'%'+_0x2e0db3[_0x63d0('0x2e')]['filter']+'%'};return _0x44be9d;}})});}_0x182e5c=_[_0x63d0('0x3d')]({},_0x182e5c,_0x2e0db3[_0x63d0('0x3f')]);var _0x279f5b={'where':_0x182e5c[_0x63d0('0x3a')]};return db['ServicenowField']['count'](_0x279f5b)[_0x63d0('0x22')](function(_0x515200){_0x50a8fd['count']=_0x515200;if(_0x2e0db3[_0x63d0('0x2e')]['includeAll']){_0x182e5c[_0x63d0('0x40')]=[{'all':!![]}];}return db[_0x63d0('0x41')][_0x63d0('0x42')](_0x182e5c);})[_0x63d0('0x22')](function(_0x318794){_0x50a8fd[_0x63d0('0x43')]=_0x318794;return _0x50a8fd;})['then'](respondWithFilteredResult(_0x4fbffe,_0x182e5c))[_0x63d0('0x44')](handleError(_0x4fbffe,null));};exports[_0x63d0('0x45')]=function(_0x4125b2,_0x2b02ec){var _0x2b60d7={'raw':!![],'where':{'id':_0x4125b2[_0x63d0('0x46')]['id']}},_0x4ac549={};_0x4ac549[_0x63d0('0x31')]=_[_0x63d0('0x2f')](db[_0x63d0('0x41')]['rawAttributes']);_0x4ac549['query']=_['keys'](_0x4125b2['query']);_0x4ac549[_0x63d0('0x30')]=_[_0x63d0('0x32')](_0x4ac549[_0x63d0('0x31')],_0x4ac549[_0x63d0('0x2e')]);_0x2b60d7[_0x63d0('0x34')]=_[_0x63d0('0x32')](_0x4ac549['model'],qs[_0x63d0('0x33')](_0x4125b2[_0x63d0('0x2e')]['fields']));_0x2b60d7[_0x63d0('0x34')]=_0x2b60d7[_0x63d0('0x34')]['length']?_0x2b60d7[_0x63d0('0x34')]:_0x4ac549[_0x63d0('0x31')];if(_0x4125b2[_0x63d0('0x2e')]['includeAll']){_0x2b60d7['include']=[{'all':!![]}];}_0x2b60d7=_[_0x63d0('0x3d')]({},_0x2b60d7,_0x4125b2[_0x63d0('0x3f')]);return db[_0x63d0('0x41')][_0x63d0('0x47')](_0x2b60d7)[_0x63d0('0x22')](handleEntityNotFound(_0x2b02ec,null))[_0x63d0('0x22')](respondWithResult(_0x2b02ec,null))['catch'](handleError(_0x2b02ec,null));};exports['create']=function(_0x378c54,_0x236c34){return db[_0x63d0('0x41')][_0x63d0('0x48')](_0x378c54[_0x63d0('0x49')],{})[_0x63d0('0x22')](respondWithResult(_0x236c34,0xc9))[_0x63d0('0x44')](handleError(_0x236c34,null));};exports[_0x63d0('0x4a')]=function(_0x17e67b,_0x4046c4){if(_0x17e67b[_0x63d0('0x49')]['id']){delete _0x17e67b[_0x63d0('0x49')]['id'];}return db[_0x63d0('0x41')][_0x63d0('0x47')]({'where':{'id':_0x17e67b[_0x63d0('0x46')]['id']}})['then'](handleEntityNotFound(_0x4046c4,null))[_0x63d0('0x22')](saveUpdates(_0x17e67b[_0x63d0('0x49')],null))[_0x63d0('0x22')](respondWithResult(_0x4046c4,null))[_0x63d0('0x44')](handleError(_0x4046c4,null));};exports['destroy']=function(_0x409321,_0x1f1d95){return db['ServicenowField'][_0x63d0('0x47')]({'where':{'id':_0x409321[_0x63d0('0x46')]['id']}})[_0x63d0('0x22')](handleEntityNotFound(_0x1f1d95,null))[_0x63d0('0x22')](removeEntity(_0x1f1d95,null))[_0x63d0('0x44')](handleError(_0x1f1d95,null));};
\ No newline at end of file
+var _0xe3f5=['undefined','limit','count','set','Content-Range','apply','save','update','then','error','name','send','index','ServicenowField','rawAttributes','fieldName','type','key','map','query','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','options','findAll','rows','catch','show','params','keys','length','includeAll','include','find','create','body','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe3f5,0x1a2));var _0x5e3f=function(_0x5e12e4,_0x52ba3c){_0x5e12e4=_0x5e12e4-0x0;var _0x53c6cb=_0xe3f5[_0x5e12e4];return _0x53c6cb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5e3f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5e3f('0x1'));var BPromise=require(_0x5e3f('0x2'));var Mustache=require('mustache');var util=require(_0x5e3f('0x3'));var path=require(_0x5e3f('0x4'));var sox=require(_0x5e3f('0x5'));var csv=require(_0x5e3f('0x6'));var ejs=require(_0x5e3f('0x7'));var fs=require('fs');var fs_extra=require(_0x5e3f('0x8'));var _=require(_0x5e3f('0x9'));var squel=require('squel');var crypto=require(_0x5e3f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x5e3f('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5e3f('0xc'));var Redis=require(_0x5e3f('0xd'));var authService=require(_0x5e3f('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x5e3f('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e3f('0x10'))(_0x5e3f('0x11'));var utils=require(_0x5e3f('0x12'));var config=require(_0x5e3f('0x13'));var licenseUtil=require(_0x5e3f('0x14'));var db=require(_0x5e3f('0x15'))['db'];function respondWithStatusCode(_0x2aa991,_0x28419d){_0x28419d=_0x28419d||0xcc;return function(_0x99024a){if(_0x99024a){return _0x2aa991[_0x5e3f('0x16')](_0x28419d);}return _0x2aa991[_0x5e3f('0x17')](_0x28419d)[_0x5e3f('0x18')]();};}function respondWithResult(_0x5ca8c5,_0x52b7ed){_0x52b7ed=_0x52b7ed||0xc8;return function(_0x5f4b5e){if(_0x5f4b5e){return _0x5ca8c5['status'](_0x52b7ed)[_0x5e3f('0x19')](_0x5f4b5e);}};}function respondWithFilteredResult(_0x39e048,_0x1141f3){return function(_0x4f793e){if(_0x4f793e){var _0x2e355d=typeof _0x1141f3['offset']===_0x5e3f('0x1a')&&typeof _0x1141f3[_0x5e3f('0x1b')]===_0x5e3f('0x1a');var _0x1c8782=_0x4f793e['count'];var _0x18d30a=_0x2e355d?0x0:_0x1141f3['offset'];var _0x35c486=_0x2e355d?_0x4f793e[_0x5e3f('0x1c')]:_0x1141f3['offset']+_0x1141f3['limit'];var _0x569179;if(_0x35c486>=_0x1c8782){_0x35c486=_0x1c8782;_0x569179=0xc8;}else{_0x569179=0xce;}_0x39e048[_0x5e3f('0x17')](_0x569179);return _0x39e048[_0x5e3f('0x1d')](_0x5e3f('0x1e'),_0x18d30a+'-'+_0x35c486+'/'+_0x1c8782)[_0x5e3f('0x19')](_0x4f793e);}return null;};}function patchUpdates(_0x31349e){return function(_0x31a0e3){try{jsonpatch[_0x5e3f('0x1f')](_0x31a0e3,_0x31349e,!![]);}catch(_0x1a6fce){return BPromise['reject'](_0x1a6fce);}return _0x31a0e3[_0x5e3f('0x20')]();};}function saveUpdates(_0x797e10,_0x26d606){return function(_0x46cf77){if(_0x46cf77){return _0x46cf77[_0x5e3f('0x21')](_0x797e10)[_0x5e3f('0x22')](function(_0x276125){return _0x276125;});}return null;};}function removeEntity(_0x5a3f6b,_0x22546b){return function(_0x528b4d){if(_0x528b4d){return _0x528b4d['destroy']()[_0x5e3f('0x22')](function(){_0x5a3f6b[_0x5e3f('0x17')](0xcc)[_0x5e3f('0x18')]();});}};}function handleEntityNotFound(_0xac75df,_0x3f2e20){return function(_0x19b4c5){if(!_0x19b4c5){_0xac75df[_0x5e3f('0x16')](0x194);}return _0x19b4c5;};}function handleError(_0x15f222,_0x288ad1){_0x288ad1=_0x288ad1||0x1f4;return function(_0x3abf3f){logger[_0x5e3f('0x23')](_0x3abf3f['stack']);if(_0x3abf3f[_0x5e3f('0x24')]){delete _0x3abf3f[_0x5e3f('0x24')];}_0x15f222[_0x5e3f('0x17')](_0x288ad1)[_0x5e3f('0x25')](_0x3abf3f);};}exports[_0x5e3f('0x26')]=function(_0x4c7535,_0x198828){var _0x28e1fb={},_0x244d75={},_0x1384ae={'count':0x0,'rows':[]};var _0xfd29e9=_['map'](db[_0x5e3f('0x27')][_0x5e3f('0x28')],function(_0x314928){return{'name':_0x314928[_0x5e3f('0x29')],'type':_0x314928[_0x5e3f('0x2a')][_0x5e3f('0x2b')]};});_0x244d75['model']=_[_0x5e3f('0x2c')](_0xfd29e9,_0x5e3f('0x24'));_0x244d75['query']=_['keys'](_0x4c7535[_0x5e3f('0x2d')]);_0x244d75[_0x5e3f('0x2e')]=_['intersection'](_0x244d75[_0x5e3f('0x2f')],_0x244d75['query']);_0x28e1fb[_0x5e3f('0x30')]=_[_0x5e3f('0x31')](_0x244d75[_0x5e3f('0x2f')],qs[_0x5e3f('0x32')](_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x32')]));_0x28e1fb['attributes']=_0x28e1fb['attributes']['length']?_0x28e1fb['attributes']:_0x244d75['model'];if(!_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x33')](_0x5e3f('0x34'))){_0x28e1fb[_0x5e3f('0x1b')]=qs['limit'](_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x1b')]);_0x28e1fb[_0x5e3f('0x35')]=qs[_0x5e3f('0x35')](_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x35')]);}_0x28e1fb[_0x5e3f('0x36')]=qs[_0x5e3f('0x37')](_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x37')]);_0x28e1fb['where']=qs[_0x5e3f('0x2e')](_[_0x5e3f('0x38')](_0x4c7535[_0x5e3f('0x2d')],_0x244d75[_0x5e3f('0x2e')]),_0xfd29e9);if(_0x4c7535[_0x5e3f('0x2d')][_0x5e3f('0x39')]){_0x28e1fb[_0x5e3f('0x3a')]=_[_0x5e3f('0x3b')](_0x28e1fb[_0x5e3f('0x3a')],{'$or':_['map'](_0xfd29e9,function(_0x1c13ab){if(_0x1c13ab[_0x5e3f('0x2a')]!==_0x5e3f('0x3c')){var _0x5a15aa={};_0x5a15aa[_0x1c13ab[_0x5e3f('0x24')]]={'$like':'%'+_0x4c7535[_0x5e3f('0x2d')]['filter']+'%'};return _0x5a15aa;}})});}_0x28e1fb=_[_0x5e3f('0x3b')]({},_0x28e1fb,_0x4c7535[_0x5e3f('0x3d')]);var _0x538981={'where':_0x28e1fb[_0x5e3f('0x3a')]};return db[_0x5e3f('0x27')][_0x5e3f('0x1c')](_0x538981)[_0x5e3f('0x22')](function(_0x271499){_0x1384ae[_0x5e3f('0x1c')]=_0x271499;if(_0x4c7535[_0x5e3f('0x2d')]['includeAll']){_0x28e1fb['include']=[{'all':!![]}];}return db[_0x5e3f('0x27')][_0x5e3f('0x3e')](_0x28e1fb);})[_0x5e3f('0x22')](function(_0x352b81){_0x1384ae[_0x5e3f('0x3f')]=_0x352b81;return _0x1384ae;})['then'](respondWithFilteredResult(_0x198828,_0x28e1fb))[_0x5e3f('0x40')](handleError(_0x198828,null));};exports[_0x5e3f('0x41')]=function(_0x1c4ef4,_0x119adf){var _0x27a63b={'raw':!![],'where':{'id':_0x1c4ef4[_0x5e3f('0x42')]['id']}},_0x4f04df={};_0x4f04df[_0x5e3f('0x2f')]=_[_0x5e3f('0x43')](db[_0x5e3f('0x27')][_0x5e3f('0x28')]);_0x4f04df['query']=_[_0x5e3f('0x43')](_0x1c4ef4[_0x5e3f('0x2d')]);_0x4f04df[_0x5e3f('0x2e')]=_[_0x5e3f('0x31')](_0x4f04df[_0x5e3f('0x2f')],_0x4f04df[_0x5e3f('0x2d')]);_0x27a63b[_0x5e3f('0x30')]=_[_0x5e3f('0x31')](_0x4f04df[_0x5e3f('0x2f')],qs[_0x5e3f('0x32')](_0x1c4ef4[_0x5e3f('0x2d')][_0x5e3f('0x32')]));_0x27a63b['attributes']=_0x27a63b[_0x5e3f('0x30')][_0x5e3f('0x44')]?_0x27a63b[_0x5e3f('0x30')]:_0x4f04df[_0x5e3f('0x2f')];if(_0x1c4ef4['query'][_0x5e3f('0x45')]){_0x27a63b[_0x5e3f('0x46')]=[{'all':!![]}];}_0x27a63b=_[_0x5e3f('0x3b')]({},_0x27a63b,_0x1c4ef4[_0x5e3f('0x3d')]);return db['ServicenowField'][_0x5e3f('0x47')](_0x27a63b)[_0x5e3f('0x22')](handleEntityNotFound(_0x119adf,null))[_0x5e3f('0x22')](respondWithResult(_0x119adf,null))[_0x5e3f('0x40')](handleError(_0x119adf,null));};exports[_0x5e3f('0x48')]=function(_0x374852,_0x23756c){return db[_0x5e3f('0x27')][_0x5e3f('0x48')](_0x374852['body'],{})[_0x5e3f('0x22')](respondWithResult(_0x23756c,0xc9))['catch'](handleError(_0x23756c,null));};exports[_0x5e3f('0x21')]=function(_0x12abf6,_0xee093){if(_0x12abf6[_0x5e3f('0x49')]['id']){delete _0x12abf6['body']['id'];}return db[_0x5e3f('0x27')]['find']({'where':{'id':_0x12abf6[_0x5e3f('0x42')]['id']}})[_0x5e3f('0x22')](handleEntityNotFound(_0xee093,null))['then'](saveUpdates(_0x12abf6[_0x5e3f('0x49')],null))[_0x5e3f('0x22')](respondWithResult(_0xee093,null))[_0x5e3f('0x40')](handleError(_0xee093,null));};exports['destroy']=function(_0x344eda,_0x565cd2){return db['ServicenowField'][_0x5e3f('0x47')]({'where':{'id':_0x344eda[_0x5e3f('0x42')]['id']}})['then'](handleEntityNotFound(_0x565cd2,null))['then'](removeEntity(_0x565cd2,null))['catch'](handleError(_0x565cd2,null));};
\ No newline at end of file
index 5cd3a7e..eba54b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94a0=['int_servicenow_fields','idField','FieldId','lodash','../../config/logger','api','bluebird','rimraf','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x94a0,0x85));var _0x094a=function(_0x5e6f73,_0x3f27d8){_0x5e6f73=_0x5e6f73-0x0;var _0x432614=_0x94a0[_0x5e6f73];return _0x432614;};'use strict';var _=require(_0x094a('0x0'));var util=require('util');var logger=require(_0x094a('0x1'))(_0x094a('0x2'));var moment=require('moment');var BPromise=require(_0x094a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x094a('0x4'));var config=require(_0x094a('0x5'));var attributes=require(_0x094a('0x6'));module[_0x094a('0x7')]=function(_0x2ede7c,_0x251ceb){return _0x2ede7c[_0x094a('0x8')](_0x094a('0x9'),attributes,{'tableName':_0x094a('0xa'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x094a('0xb'),_0x094a('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb312=['request-promise','path','rimraf','../../config/environment','exports','ServicenowField','servicenow_unique_index','idField','lodash','../../config/logger','api','moment'];(function(_0x532af5,_0xc1a14f){var _0x55ca01=function(_0xedd524){while(--_0xedd524){_0x532af5['push'](_0x532af5['shift']());}};_0x55ca01(++_0xc1a14f);}(_0xb312,0xec));var _0x2b31=function(_0x5861d7,_0x3f9d0e){_0x5861d7=_0x5861d7-0x0;var _0x234f4e=_0xb312[_0x5861d7];return _0x234f4e;};'use strict';var _=require(_0x2b31('0x0'));var util=require('util');var logger=require(_0x2b31('0x1'))(_0x2b31('0x2'));var moment=require(_0x2b31('0x3'));var BPromise=require('bluebird');var rp=require(_0x2b31('0x4'));var fs=require('fs');var path=require(_0x2b31('0x5'));var rimraf=require(_0x2b31('0x6'));var config=require(_0x2b31('0x7'));var attributes=require('./intServicenowField.attributes');module[_0x2b31('0x8')]=function(_0x164b59,_0x2e75c7){return _0x164b59['define'](_0x2b31('0x9'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0x2b31('0xa'),'fields':[_0x2b31('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index eb78786..92578b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\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(_0xb080ae,_0xda7782){var _0x56c3dd=function(_0x49fedb){while(--_0x49fedb){_0xb080ae['push'](_0xb080ae['shift']());}};_0x56c3dd(++_0xda7782);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'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 _0x70e0=['code','ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2d7fe2,_0x45ea5a){var _0x3ba5ac=function(_0xd001d1){while(--_0xd001d1){_0x2d7fe2['push'](_0x2d7fe2['shift']());}};_0x3ba5ac(++_0x45ea5a);}(_0x70e0,0x17b));var _0x070e=function(_0x350459,_0x8b3a7a){_0x350459=_0x350459-0x0;var _0x2cf06e=_0x70e0[_0x350459];return _0x2cf06e;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('ServicenowField,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
index e7a9f54..81ca843 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(_0x22eb47,_0x5cd02e){var _0x52994e=function(_0x25ffd2){while(--_0x25ffd2){_0x22eb47['push'](_0x22eb47['shift']());}};_0x52994e(++_0x5cd02e);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x2ac383,_0x12c989){var _0x539034=function(_0xa4ddea){while(--_0xa4ddea){_0x2ac383['push'](_0x2ac383['shift']());}};_0x539034(++_0x12c989);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index 69b7e7d..d9c4db4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x3b99d6,_0x5c5cec){var _0x324e3c=function(_0x29903){while(--_0x29903){_0x3b99d6['push'](_0x3b99d6['shift']());}};_0x324e3c(++_0x5c5cec);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'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(_0x54bff1,_0x9ae796){var _0x42fd12=function(_0x5ff185){while(--_0x5ff185){_0x54bff1['push'](_0x54bff1['shift']());}};_0x42fd12(++_0x9ae796);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'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 738a58b..731cac0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cc1=['index','map','SugarcrmAccount','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','rows','catch','show','include','find','create','body','update','destroy','params','findOne','SugarcrmConfiguration','getConfigurations','AccountId','Subjects','channel','getDescriptions','SugarcrmField','Descriptions','getFields','assigned_user_id','created_by','description','date_start','duration_hours','parent_id','parent_type','direction','username','password','remoteUri','slice','substring','format','/service/v4_1/rest.php','JSON','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','POST','%s%s','get_module_fields','stringify','Calls','values','module_fields','includes','label','endsWith','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','sendStatus','error','stack','name','send'];(function(_0x11b58d,_0x555c55){var _0xc2811b=function(_0x396d22){while(--_0x396d22){_0x11b58d['push'](_0x11b58d['shift']());}};_0xc2811b(++_0x555c55);}(_0x2cc1,0x1bd));var _0x12cc=function(_0x3cbee0,_0x352a0a){_0x3cbee0=_0x3cbee0-0x0;var _0x2ed094=_0x2cc1[_0x3cbee0];return _0x2ed094;};'use strict';var emlformat=require(_0x12cc('0x0'));var rimraf=require(_0x12cc('0x1'));var zipdir=require(_0x12cc('0x2'));var jsonpatch=require(_0x12cc('0x3'));var rp=require(_0x12cc('0x4'));var moment=require(_0x12cc('0x5'));var BPromise=require(_0x12cc('0x6'));var Mustache=require(_0x12cc('0x7'));var util=require('util');var path=require('path');var sox=require(_0x12cc('0x8'));var csv=require(_0x12cc('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x12cc('0xa'));var squel=require(_0x12cc('0xb'));var crypto=require(_0x12cc('0xc'));var jsforce=require(_0x12cc('0xd'));var deskjs=require(_0x12cc('0xe'));var toCsv=require(_0x12cc('0x9'));var querystring=require(_0x12cc('0xf'));var Papa=require(_0x12cc('0x10'));var Redis=require(_0x12cc('0x11'));var authService=require(_0x12cc('0x12'));var qs=require(_0x12cc('0x13'));var as=require(_0x12cc('0x14'));var hardwareService=require(_0x12cc('0x15'));var logger=require('../../config/logger')(_0x12cc('0x16'));var utils=require('../../config/utils');var config=require(_0x12cc('0x17'));var licenseUtil=require(_0x12cc('0x18'));var db=require(_0x12cc('0x19'))['db'];var integrations=require(_0x12cc('0x1a'));function respondWithStatusCode(_0x29a902,_0x7bf7fc){_0x7bf7fc=_0x7bf7fc||0xcc;return function(_0x5f3fb6){if(_0x5f3fb6){return _0x29a902['sendStatus'](_0x7bf7fc);}return _0x29a902[_0x12cc('0x1b')](_0x7bf7fc)['end']();};}function respondWithResult(_0xbe9117,_0x57f008){_0x57f008=_0x57f008||0xc8;return function(_0x3451b5){if(_0x3451b5){return _0xbe9117[_0x12cc('0x1b')](_0x57f008)[_0x12cc('0x1c')](_0x3451b5);}};}function respondWithFilteredResult(_0xc0a469,_0x10e22a){return function(_0x33753a){if(_0x33753a){var _0x511857=typeof _0x10e22a[_0x12cc('0x1d')]===_0x12cc('0x1e')&&typeof _0x10e22a['limit']===_0x12cc('0x1e');var _0x28134a=_0x33753a[_0x12cc('0x1f')];var _0x33db40=_0x511857?0x0:_0x10e22a[_0x12cc('0x1d')];var _0xe6f84=_0x511857?_0x33753a[_0x12cc('0x1f')]:_0x10e22a[_0x12cc('0x1d')]+_0x10e22a[_0x12cc('0x20')];var _0x50e077;if(_0xe6f84>=_0x28134a){_0xe6f84=_0x28134a;_0x50e077=0xc8;}else{_0x50e077=0xce;}_0xc0a469['status'](_0x50e077);return _0xc0a469['set'](_0x12cc('0x21'),_0x33db40+'-'+_0xe6f84+'/'+_0x28134a)[_0x12cc('0x1c')](_0x33753a);}return null;};}function patchUpdates(_0x2973d4){return function(_0x4180f1){try{jsonpatch[_0x12cc('0x22')](_0x4180f1,_0x2973d4,!![]);}catch(_0xd92481){return BPromise[_0x12cc('0x23')](_0xd92481);}return _0x4180f1[_0x12cc('0x24')]();};}function saveUpdates(_0x2837bf,_0x5c1fdf){return function(_0x3358a2){if(_0x3358a2){return _0x3358a2['update'](_0x2837bf)[_0x12cc('0x25')](function(_0x1a5f8e){return _0x1a5f8e;});}return null;};}function removeEntity(_0x4814b8,_0x2f5aab){return function(_0x797a61){if(_0x797a61){return _0x797a61['destroy']()['then'](function(){_0x4814b8[_0x12cc('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3769b2,_0x11d4bc){return function(_0x1fb084){if(!_0x1fb084){_0x3769b2[_0x12cc('0x26')](0x194);}return _0x1fb084;};}function handleError(_0x448b5a,_0x281da6){_0x281da6=_0x281da6||0x1f4;return function(_0x30439d){logger[_0x12cc('0x27')](_0x30439d[_0x12cc('0x28')]);if(_0x30439d[_0x12cc('0x29')]){delete _0x30439d[_0x12cc('0x29')];}_0x448b5a[_0x12cc('0x1b')](_0x281da6)[_0x12cc('0x2a')](_0x30439d);};}exports[_0x12cc('0x2b')]=function(_0x214f24,_0x1c8bca){var _0x5cb159={},_0x38413b={},_0xfbb4f2={'count':0x0,'rows':[]};var _0x781b72=_[_0x12cc('0x2c')](db[_0x12cc('0x2d')][_0x12cc('0x2e')],function(_0x363041){return{'name':_0x363041['fieldName'],'type':_0x363041[_0x12cc('0x2f')][_0x12cc('0x30')]};});_0x38413b[_0x12cc('0x31')]=_[_0x12cc('0x2c')](_0x781b72,_0x12cc('0x29'));_0x38413b['query']=_[_0x12cc('0x32')](_0x214f24[_0x12cc('0x33')]);_0x38413b[_0x12cc('0x34')]=_[_0x12cc('0x35')](_0x38413b[_0x12cc('0x31')],_0x38413b[_0x12cc('0x33')]);_0x5cb159[_0x12cc('0x36')]=_[_0x12cc('0x35')](_0x38413b[_0x12cc('0x31')],qs[_0x12cc('0x37')](_0x214f24[_0x12cc('0x33')][_0x12cc('0x37')]));_0x5cb159[_0x12cc('0x36')]=_0x5cb159[_0x12cc('0x36')][_0x12cc('0x38')]?_0x5cb159['attributes']:_0x38413b[_0x12cc('0x31')];if(!_0x214f24[_0x12cc('0x33')][_0x12cc('0x39')](_0x12cc('0x3a'))){_0x5cb159[_0x12cc('0x20')]=qs[_0x12cc('0x20')](_0x214f24['query'][_0x12cc('0x20')]);_0x5cb159[_0x12cc('0x1d')]=qs[_0x12cc('0x1d')](_0x214f24['query'][_0x12cc('0x1d')]);}_0x5cb159[_0x12cc('0x3b')]=qs[_0x12cc('0x3c')](_0x214f24[_0x12cc('0x33')][_0x12cc('0x3c')]);_0x5cb159['where']=qs[_0x12cc('0x34')](_[_0x12cc('0x3d')](_0x214f24[_0x12cc('0x33')],_0x38413b[_0x12cc('0x34')]),_0x781b72);if(_0x214f24[_0x12cc('0x33')][_0x12cc('0x3e')]){_0x5cb159[_0x12cc('0x3f')]=_[_0x12cc('0x40')](_0x5cb159[_0x12cc('0x3f')],{'$or':_[_0x12cc('0x2c')](_0x781b72,function(_0x2ece53){if(_0x2ece53['type']!==_0x12cc('0x41')){var _0x39f443={};_0x39f443[_0x2ece53[_0x12cc('0x29')]]={'$like':'%'+_0x214f24[_0x12cc('0x33')][_0x12cc('0x3e')]+'%'};return _0x39f443;}})});}_0x5cb159=_['merge']({},_0x5cb159,_0x214f24[_0x12cc('0x42')]);var _0x5adae7={'where':_0x5cb159[_0x12cc('0x3f')]};return db[_0x12cc('0x2d')][_0x12cc('0x1f')](_0x5adae7)[_0x12cc('0x25')](function(_0x1463fd){_0xfbb4f2[_0x12cc('0x1f')]=_0x1463fd;if(_0x214f24[_0x12cc('0x33')][_0x12cc('0x43')]){_0x5cb159['include']=[{'all':!![]}];}return db['SugarcrmAccount']['findAll'](_0x5cb159);})['then'](function(_0x3c856d){_0xfbb4f2[_0x12cc('0x44')]=_0x3c856d;return _0xfbb4f2;})[_0x12cc('0x25')](respondWithFilteredResult(_0x1c8bca,_0x5cb159))[_0x12cc('0x45')](handleError(_0x1c8bca,null));};exports[_0x12cc('0x46')]=function(_0x426926,_0xdae983){var _0x33dfe1={'raw':![],'where':{'id':_0x426926['params']['id']}},_0xf38a14={};_0xf38a14[_0x12cc('0x31')]=_[_0x12cc('0x32')](db[_0x12cc('0x2d')][_0x12cc('0x2e')]);_0xf38a14['query']=_['keys'](_0x426926[_0x12cc('0x33')]);_0xf38a14[_0x12cc('0x34')]=_[_0x12cc('0x35')](_0xf38a14[_0x12cc('0x31')],_0xf38a14[_0x12cc('0x33')]);_0x33dfe1[_0x12cc('0x36')]=_[_0x12cc('0x35')](_0xf38a14[_0x12cc('0x31')],qs[_0x12cc('0x37')](_0x426926['query'][_0x12cc('0x37')]));_0x33dfe1[_0x12cc('0x36')]=_0x33dfe1['attributes'][_0x12cc('0x38')]?_0x33dfe1['attributes']:_0xf38a14[_0x12cc('0x31')];if(_0x426926[_0x12cc('0x33')]['includeAll']){_0x33dfe1[_0x12cc('0x47')]=[{'all':!![]}];}_0x33dfe1=_['merge']({},_0x33dfe1,_0x426926[_0x12cc('0x42')]);return db['SugarcrmAccount'][_0x12cc('0x48')](_0x33dfe1)['then'](handleEntityNotFound(_0xdae983,null))[_0x12cc('0x25')](respondWithResult(_0xdae983,null))[_0x12cc('0x45')](handleError(_0xdae983,null));};exports['create']=function(_0x43d0f1,_0x8e888d){return db[_0x12cc('0x2d')][_0x12cc('0x49')](_0x43d0f1[_0x12cc('0x4a')],{})[_0x12cc('0x25')](respondWithResult(_0x8e888d,0xc9))[_0x12cc('0x45')](handleError(_0x8e888d,null));};exports[_0x12cc('0x4b')]=function(_0x37baac,_0x2b3462){if(_0x37baac['body']['id']){delete _0x37baac[_0x12cc('0x4a')]['id'];}return db['SugarcrmAccount'][_0x12cc('0x48')]({'where':{'id':_0x37baac['params']['id']}})[_0x12cc('0x25')](handleEntityNotFound(_0x2b3462,null))[_0x12cc('0x25')](saveUpdates(_0x37baac[_0x12cc('0x4a')],null))[_0x12cc('0x25')](respondWithResult(_0x2b3462,null))[_0x12cc('0x45')](handleError(_0x2b3462,null));};exports[_0x12cc('0x4c')]=function(_0x10b73d,_0xe7868d){return db[_0x12cc('0x2d')][_0x12cc('0x48')]({'where':{'id':_0x10b73d[_0x12cc('0x4d')]['id']}})[_0x12cc('0x25')](handleEntityNotFound(_0xe7868d,null))[_0x12cc('0x25')](removeEntity(_0xe7868d,null))[_0x12cc('0x45')](handleError(_0xe7868d,null));};exports['getConfigurations']=function(_0x4a1404,_0x31273b,_0x41eb51){var _0x489e8b={};var _0x3bd84a={};var _0x31290e;var _0x2a9239;return db[_0x12cc('0x2d')][_0x12cc('0x4e')]({'where':{'id':_0x4a1404[_0x12cc('0x4d')]['id']}})[_0x12cc('0x25')](handleEntityNotFound(_0x31273b,null))[_0x12cc('0x25')](function(_0x1e778b){if(_0x1e778b){_0x31290e=_0x1e778b;_0x3bd84a[_0x12cc('0x31')]=_[_0x12cc('0x32')](db[_0x12cc('0x4f')][_0x12cc('0x2e')]);_0x3bd84a[_0x12cc('0x33')]=_[_0x12cc('0x32')](_0x4a1404[_0x12cc('0x33')]);_0x3bd84a[_0x12cc('0x34')]=_[_0x12cc('0x35')](_0x3bd84a['model'],_0x3bd84a[_0x12cc('0x33')]);_0x489e8b[_0x12cc('0x36')]=_[_0x12cc('0x35')](_0x3bd84a[_0x12cc('0x31')],qs[_0x12cc('0x37')](_0x4a1404[_0x12cc('0x33')][_0x12cc('0x37')]));_0x489e8b[_0x12cc('0x36')]=_0x489e8b[_0x12cc('0x36')][_0x12cc('0x38')]?_0x489e8b[_0x12cc('0x36')]:_0x3bd84a['model'];_0x489e8b['order']=qs['sort'](_0x4a1404[_0x12cc('0x33')][_0x12cc('0x3c')]);_0x489e8b[_0x12cc('0x3f')]=qs['filters'](_[_0x12cc('0x3d')](_0x4a1404[_0x12cc('0x33')],_0x3bd84a['filters']));if(_0x4a1404['query'][_0x12cc('0x3e')]){_0x489e8b[_0x12cc('0x3f')]=_[_0x12cc('0x40')](_0x489e8b[_0x12cc('0x3f')],{'$or':_['map'](_0x489e8b['attributes'],function(_0x4cc69a){var _0x515897={};_0x515897[_0x4cc69a]={'$like':'%'+_0x4a1404[_0x12cc('0x33')][_0x12cc('0x3e')]+'%'};return _0x515897;})});}_0x489e8b=_[_0x12cc('0x40')]({},_0x489e8b,_0x4a1404[_0x12cc('0x42')]);return _0x31290e[_0x12cc('0x50')](_0x489e8b);}})[_0x12cc('0x25')](function(_0x3ad7d2){if(_0x3ad7d2){_0x2a9239=_0x3ad7d2[_0x12cc('0x38')];if(!_0x4a1404[_0x12cc('0x33')]['hasOwnProperty'](_0x12cc('0x3a'))){_0x489e8b[_0x12cc('0x20')]=qs['limit'](_0x4a1404[_0x12cc('0x33')][_0x12cc('0x20')]);_0x489e8b[_0x12cc('0x1d')]=qs[_0x12cc('0x1d')](_0x4a1404['query']['offset']);}return _0x31290e[_0x12cc('0x50')](_0x489e8b);}})[_0x12cc('0x25')](function(_0x3ebc79){if(_0x3ebc79){return _0x3ebc79?{'count':_0x2a9239,'rows':_0x3ebc79}:null;}})[_0x12cc('0x25')](respondWithResult(_0x31273b,null))['catch'](handleError(_0x31273b,null));};exports['addConfiguration']=function(_0x5b4466,_0x5a3d5a,_0x1ab2a2){if(_0x5b4466[_0x12cc('0x4a')]['id']){delete _0x5b4466['body']['id'];}return db[_0x12cc('0x2d')][_0x12cc('0x4e')]({'where':{'id':_0x5b4466[_0x12cc('0x4d')]['id']}})[_0x12cc('0x25')](handleEntityNotFound(_0x5a3d5a,null))['then'](function(_0x3ad014){if(_0x3ad014){_0x5b4466['body'][_0x12cc('0x51')]=_0x3ad014['id'];_0x5b4466[_0x12cc('0x4a')][_0x12cc('0x52')]=integrations['getSubjects'](_0x5b4466['body'][_0x12cc('0x53')],_0x5b4466['body'][_0x12cc('0x2f')]);_0x5b4466[_0x12cc('0x4a')]['Descriptions']=integrations[_0x12cc('0x54')](_0x5b4466[_0x12cc('0x4a')][_0x12cc('0x53')],_0x5b4466['body'][_0x12cc('0x2f')]);return db[_0x12cc('0x4f')]['create'](_0x5b4466[_0x12cc('0x4a')],{'include':[{'model':db[_0x12cc('0x55')],'as':_0x12cc('0x52')},{'model':db[_0x12cc('0x55')],'as':_0x12cc('0x56')}]});}return null;})[_0x12cc('0x25')](respondWithResult(_0x5a3d5a,null))[_0x12cc('0x45')](handleError(_0x5a3d5a,null));};exports[_0x12cc('0x57')]=function(_0x26cadd,_0x1ee804,_0x52e7c1){var _0x414966='';var _0xfa73e1=['id',_0x12cc('0x29'),_0x12cc('0x58'),_0x12cc('0x59'),_0x12cc('0x5a'),_0x12cc('0x5b'),_0x12cc('0x5c'),'duration_minutes',_0x12cc('0x5d'),_0x12cc('0x5e'),'parent_name',_0x12cc('0x5f')];return db[_0x12cc('0x2d')][_0x12cc('0x4e')]({'where':{'id':_0x26cadd['params']['id']},'attributes':['id',_0x12cc('0x60'),_0x12cc('0x61'),_0x12cc('0x62')]})[_0x12cc('0x25')](handleEntityNotFound(_0x1ee804,null))[_0x12cc('0x25')](function(_0x556bc5){if(_0x556bc5){_0x414966=_0x556bc5[_0x12cc('0x62')];var _0x335cde=_0x414966[_0x12cc('0x63')](-0x1);if(_0x335cde==='/'){_0x414966=_0x414966[_0x12cc('0x64')](0x0,_0x414966['lastIndexOf'](_0x335cde));}return rp({'method':'POST','uri':util[_0x12cc('0x65')]('%s%s',_0x414966,_0x12cc('0x66')),'json':!![],'form':{'method':'login','input_type':'JSON','response_type':_0x12cc('0x67'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x556bc5[_0x12cc('0x60')],'password':_0x556bc5[_0x12cc('0x61')],'encryption':_0x12cc('0x68')},'application':_0x12cc('0x69')})}});}})[_0x12cc('0x25')](function(_0x2caf94){if(_0x2caf94&&_0x2caf94[_0x12cc('0x29')]!==_0x12cc('0x6a')&&_0x2caf94[_0x12cc('0x29')]!==_0x12cc('0x6b')){return rp({'method':_0x12cc('0x6c'),'uri':util[_0x12cc('0x65')](_0x12cc('0x6d'),_0x414966,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x12cc('0x6e'),'input_type':'JSON','response_type':_0x12cc('0x67'),'rest_data':JSON[_0x12cc('0x6f')]({'session':_0x2caf94['id'],'module_name':_0x12cc('0x70')})}})[_0x12cc('0x25')](function(_0x52df66){if(_0x52df66){var _0xc150e1=_[_0x12cc('0x71')](_0x52df66[_0x12cc('0x72')]);_['remove'](_0xc150e1,function(_0x22768c){return _0xfa73e1[_0x12cc('0x73')](_0x22768c['name']);});return{'count':_0xc150e1[_0x12cc('0x38')],'rows':_[_0x12cc('0x2c')](_0xc150e1,function(_0x5424b2){return{'id':_0x5424b2[_0x12cc('0x29')],'name':_0x5424b2[_0x12cc('0x74')],'custom':_[_0x12cc('0x75')](_0x5424b2[_0x12cc('0x29')],'_c')?!![]:![],'options':_0x5424b2[_0x12cc('0x42')]?_[_0x12cc('0x2c')](_[_0x12cc('0x71')](_0x5424b2[_0x12cc('0x42')]),function(_0x2c3664){return{'name':_0x2c3664['value'],'value':_0x2c3664[_0x12cc('0x29')]};}):[]};})};}})[_0x12cc('0x25')](respondWithResult(_0x1ee804,null))[_0x12cc('0x45')](function(_0x562c8e){var _0x488d39=_0x26cadd[_0x12cc('0x33')][_0x12cc('0x76')]?0x1f4:_0x562c8e[_0x12cc('0x77')]||0x1f4;logger['error'](_0x12cc('0x78'),_0x12cc('0x57'),_0x488d39,JSON[_0x12cc('0x6f')](_0x562c8e));delete _0x562c8e[_0x12cc('0x29')];if(_0x488d39===0x191){_0x488d39=0x190;}_0x1ee804[_0x12cc('0x1b')](_0x488d39)['send'](_0x26cadd[_0x12cc('0x33')][_0x12cc('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x562c8e[_0x12cc('0x77')]}:_0x562c8e);});}else{var _0x3e2d07=0x1f4;_0x1ee804[_0x12cc('0x1b')](_0x3e2d07)[_0x12cc('0x2a')]({'message':_0x12cc('0x79'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xface=['lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','password','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','Calls','remove','includes','label','endsWith','values','test','statusCode','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../components/integrations/configuration','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','save','destroy','error','stack','name','send','index','SugarcrmAccount','rawAttributes','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','then','catch','show','keys','create','body','update','find','params','findOne','SugarcrmConfiguration','order','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','parent_id','parent_type','parent_name','direction','username','remoteUri','slice','substring'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xface,0x8f));var _0xefac=function(_0x8c7c56,_0x3887b9){_0x8c7c56=_0x8c7c56-0x0;var _0xdd8216=_0xface[_0x8c7c56];return _0xdd8216;};'use strict';var emlformat=require(_0xefac('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xefac('0x1'));var jsonpatch=require(_0xefac('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xefac('0x3'));var Mustache=require(_0xefac('0x4'));var util=require('util');var path=require(_0xefac('0x5'));var sox=require(_0xefac('0x6'));var csv=require(_0xefac('0x7'));var ejs=require(_0xefac('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xefac('0x9'));var squel=require(_0xefac('0xa'));var crypto=require(_0xefac('0xb'));var jsforce=require(_0xefac('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xefac('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xefac('0xd'));var authService=require(_0xefac('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xefac('0xf'));var hardwareService=require(_0xefac('0x10'));var logger=require(_0xefac('0x11'))(_0xefac('0x12'));var utils=require('../../config/utils');var config=require(_0xefac('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xefac('0x14'));function respondWithStatusCode(_0x3e67e6,_0x357b46){_0x357b46=_0x357b46||0xcc;return function(_0x599527){if(_0x599527){return _0x3e67e6[_0xefac('0x15')](_0x357b46);}return _0x3e67e6[_0xefac('0x16')](_0x357b46)[_0xefac('0x17')]();};}function respondWithResult(_0x3bfa89,_0x4cebed){_0x4cebed=_0x4cebed||0xc8;return function(_0x469d2f){if(_0x469d2f){return _0x3bfa89['status'](_0x4cebed)[_0xefac('0x18')](_0x469d2f);}};}function respondWithFilteredResult(_0x26f775,_0x3a2367){return function(_0x4d40cb){if(_0x4d40cb){var _0x2061a0=typeof _0x3a2367['offset']==='undefined'&&typeof _0x3a2367[_0xefac('0x19')]===_0xefac('0x1a');var _0x49c305=_0x4d40cb[_0xefac('0x1b')];var _0x33a925=_0x2061a0?0x0:_0x3a2367[_0xefac('0x1c')];var _0x3ab731=_0x2061a0?_0x4d40cb[_0xefac('0x1b')]:_0x3a2367[_0xefac('0x1c')]+_0x3a2367[_0xefac('0x19')];var _0x5bc1b1;if(_0x3ab731>=_0x49c305){_0x3ab731=_0x49c305;_0x5bc1b1=0xc8;}else{_0x5bc1b1=0xce;}_0x26f775[_0xefac('0x16')](_0x5bc1b1);return _0x26f775[_0xefac('0x1d')](_0xefac('0x1e'),_0x33a925+'-'+_0x3ab731+'/'+_0x49c305)['json'](_0x4d40cb);}return null;};}function patchUpdates(_0x462829){return function(_0x1cd7cc){try{jsonpatch[_0xefac('0x1f')](_0x1cd7cc,_0x462829,!![]);}catch(_0x55af97){return BPromise['reject'](_0x55af97);}return _0x1cd7cc[_0xefac('0x20')]();};}function saveUpdates(_0x6aeb61,_0x5f50e6){return function(_0x29c63d){if(_0x29c63d){return _0x29c63d['update'](_0x6aeb61)['then'](function(_0xb3c2d){return _0xb3c2d;});}return null;};}function removeEntity(_0x110d68,_0x4dcbbb){return function(_0x44f042){if(_0x44f042){return _0x44f042[_0xefac('0x21')]()['then'](function(){_0x110d68[_0xefac('0x16')](0xcc)[_0xefac('0x17')]();});}};}function handleEntityNotFound(_0x29a999,_0x1361a6){return function(_0x157ea1){if(!_0x157ea1){_0x29a999[_0xefac('0x15')](0x194);}return _0x157ea1;};}function handleError(_0xa2639a,_0x30e968){_0x30e968=_0x30e968||0x1f4;return function(_0x13ec0e){logger[_0xefac('0x22')](_0x13ec0e[_0xefac('0x23')]);if(_0x13ec0e[_0xefac('0x24')]){delete _0x13ec0e[_0xefac('0x24')];}_0xa2639a[_0xefac('0x16')](_0x30e968)[_0xefac('0x25')](_0x13ec0e);};}exports[_0xefac('0x26')]=function(_0x24fb9f,_0x27e7b8){var _0x5f36cd={},_0x5c4c1a={},_0x1b354d={'count':0x0,'rows':[]};var _0x16ad69=_['map'](db[_0xefac('0x27')][_0xefac('0x28')],function(_0x45ad68){return{'name':_0x45ad68['fieldName'],'type':_0x45ad68[_0xefac('0x29')][_0xefac('0x2a')]};});_0x5c4c1a[_0xefac('0x2b')]=_[_0xefac('0x2c')](_0x16ad69,_0xefac('0x24'));_0x5c4c1a[_0xefac('0x2d')]=_['keys'](_0x24fb9f[_0xefac('0x2d')]);_0x5c4c1a[_0xefac('0x2e')]=_[_0xefac('0x2f')](_0x5c4c1a[_0xefac('0x2b')],_0x5c4c1a[_0xefac('0x2d')]);_0x5f36cd['attributes']=_[_0xefac('0x2f')](_0x5c4c1a[_0xefac('0x2b')],qs[_0xefac('0x30')](_0x24fb9f['query']['fields']));_0x5f36cd[_0xefac('0x31')]=_0x5f36cd[_0xefac('0x31')][_0xefac('0x32')]?_0x5f36cd['attributes']:_0x5c4c1a['model'];if(!_0x24fb9f['query'][_0xefac('0x33')]('nolimit')){_0x5f36cd[_0xefac('0x19')]=qs[_0xefac('0x19')](_0x24fb9f[_0xefac('0x2d')][_0xefac('0x19')]);_0x5f36cd['offset']=qs[_0xefac('0x1c')](_0x24fb9f['query']['offset']);}_0x5f36cd['order']=qs[_0xefac('0x34')](_0x24fb9f[_0xefac('0x2d')]['sort']);_0x5f36cd[_0xefac('0x35')]=qs['filters'](_[_0xefac('0x36')](_0x24fb9f['query'],_0x5c4c1a[_0xefac('0x2e')]),_0x16ad69);if(_0x24fb9f[_0xefac('0x2d')][_0xefac('0x37')]){_0x5f36cd[_0xefac('0x35')]=_[_0xefac('0x38')](_0x5f36cd[_0xefac('0x35')],{'$or':_['map'](_0x16ad69,function(_0x4dff5b){if(_0x4dff5b['type']!==_0xefac('0x39')){var _0x3c4863={};_0x3c4863[_0x4dff5b[_0xefac('0x24')]]={'$like':'%'+_0x24fb9f['query'][_0xefac('0x37')]+'%'};return _0x3c4863;}})});}_0x5f36cd=_[_0xefac('0x38')]({},_0x5f36cd,_0x24fb9f[_0xefac('0x3a')]);var _0x5bb800={'where':_0x5f36cd[_0xefac('0x35')]};return db['SugarcrmAccount'][_0xefac('0x1b')](_0x5bb800)['then'](function(_0x2539d5){_0x1b354d[_0xefac('0x1b')]=_0x2539d5;if(_0x24fb9f[_0xefac('0x2d')][_0xefac('0x3b')]){_0x5f36cd[_0xefac('0x3c')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0xefac('0x3d')](_0x5f36cd);})['then'](function(_0xa2b7e){_0x1b354d[_0xefac('0x3e')]=_0xa2b7e;return _0x1b354d;})[_0xefac('0x3f')](respondWithFilteredResult(_0x27e7b8,_0x5f36cd))[_0xefac('0x40')](handleError(_0x27e7b8,null));};exports[_0xefac('0x41')]=function(_0xd3e9a1,_0x319b6c){var _0x5aaa8a={'raw':![],'where':{'id':_0xd3e9a1['params']['id']}},_0x35e0ab={};_0x35e0ab[_0xefac('0x2b')]=_['keys'](db['SugarcrmAccount'][_0xefac('0x28')]);_0x35e0ab[_0xefac('0x2d')]=_[_0xefac('0x42')](_0xd3e9a1[_0xefac('0x2d')]);_0x35e0ab['filters']=_['intersection'](_0x35e0ab[_0xefac('0x2b')],_0x35e0ab['query']);_0x5aaa8a[_0xefac('0x31')]=_['intersection'](_0x35e0ab[_0xefac('0x2b')],qs[_0xefac('0x30')](_0xd3e9a1[_0xefac('0x2d')][_0xefac('0x30')]));_0x5aaa8a[_0xefac('0x31')]=_0x5aaa8a[_0xefac('0x31')][_0xefac('0x32')]?_0x5aaa8a['attributes']:_0x35e0ab['model'];if(_0xd3e9a1['query']['includeAll']){_0x5aaa8a[_0xefac('0x3c')]=[{'all':!![]}];}_0x5aaa8a=_[_0xefac('0x38')]({},_0x5aaa8a,_0xd3e9a1['options']);return db[_0xefac('0x27')]['find'](_0x5aaa8a)[_0xefac('0x3f')](handleEntityNotFound(_0x319b6c,null))[_0xefac('0x3f')](respondWithResult(_0x319b6c,null))[_0xefac('0x40')](handleError(_0x319b6c,null));};exports[_0xefac('0x43')]=function(_0x422322,_0x147de2){return db['SugarcrmAccount'][_0xefac('0x43')](_0x422322[_0xefac('0x44')],{})[_0xefac('0x3f')](respondWithResult(_0x147de2,0xc9))[_0xefac('0x40')](handleError(_0x147de2,null));};exports[_0xefac('0x45')]=function(_0x5ba7dc,_0x45f734){if(_0x5ba7dc[_0xefac('0x44')]['id']){delete _0x5ba7dc[_0xefac('0x44')]['id'];}return db[_0xefac('0x27')][_0xefac('0x46')]({'where':{'id':_0x5ba7dc[_0xefac('0x47')]['id']}})[_0xefac('0x3f')](handleEntityNotFound(_0x45f734,null))[_0xefac('0x3f')](saveUpdates(_0x5ba7dc['body'],null))[_0xefac('0x3f')](respondWithResult(_0x45f734,null))[_0xefac('0x40')](handleError(_0x45f734,null));};exports[_0xefac('0x21')]=function(_0x15e8db,_0x18e6ec){return db[_0xefac('0x27')][_0xefac('0x46')]({'where':{'id':_0x15e8db[_0xefac('0x47')]['id']}})[_0xefac('0x3f')](handleEntityNotFound(_0x18e6ec,null))[_0xefac('0x3f')](removeEntity(_0x18e6ec,null))[_0xefac('0x40')](handleError(_0x18e6ec,null));};exports['getConfigurations']=function(_0x35c443,_0x1cc1fc,_0x222dd6){var _0x7c5029={};var _0x473d3e={};var _0x14b578;var _0x254d9e;return db[_0xefac('0x27')][_0xefac('0x48')]({'where':{'id':_0x35c443[_0xefac('0x47')]['id']}})[_0xefac('0x3f')](handleEntityNotFound(_0x1cc1fc,null))[_0xefac('0x3f')](function(_0x8841f0){if(_0x8841f0){_0x14b578=_0x8841f0;_0x473d3e[_0xefac('0x2b')]=_[_0xefac('0x42')](db[_0xefac('0x49')][_0xefac('0x28')]);_0x473d3e[_0xefac('0x2d')]=_[_0xefac('0x42')](_0x35c443['query']);_0x473d3e[_0xefac('0x2e')]=_['intersection'](_0x473d3e[_0xefac('0x2b')],_0x473d3e[_0xefac('0x2d')]);_0x7c5029[_0xefac('0x31')]=_[_0xefac('0x2f')](_0x473d3e[_0xefac('0x2b')],qs[_0xefac('0x30')](_0x35c443[_0xefac('0x2d')][_0xefac('0x30')]));_0x7c5029[_0xefac('0x31')]=_0x7c5029[_0xefac('0x31')]['length']?_0x7c5029['attributes']:_0x473d3e[_0xefac('0x2b')];_0x7c5029[_0xefac('0x4a')]=qs['sort'](_0x35c443[_0xefac('0x2d')][_0xefac('0x34')]);_0x7c5029[_0xefac('0x35')]=qs['filters'](_['pick'](_0x35c443[_0xefac('0x2d')],_0x473d3e[_0xefac('0x2e')]));if(_0x35c443['query'][_0xefac('0x37')]){_0x7c5029[_0xefac('0x35')]=_[_0xefac('0x38')](_0x7c5029['where'],{'$or':_[_0xefac('0x2c')](_0x7c5029[_0xefac('0x31')],function(_0x339167){var _0x1afadd={};_0x1afadd[_0x339167]={'$like':'%'+_0x35c443['query']['filter']+'%'};return _0x1afadd;})});}_0x7c5029=_[_0xefac('0x38')]({},_0x7c5029,_0x35c443['options']);return _0x14b578[_0xefac('0x4b')](_0x7c5029);}})['then'](function(_0x3cedbf){if(_0x3cedbf){_0x254d9e=_0x3cedbf[_0xefac('0x32')];if(!_0x35c443['query'][_0xefac('0x33')](_0xefac('0x4c'))){_0x7c5029[_0xefac('0x19')]=qs[_0xefac('0x19')](_0x35c443[_0xefac('0x2d')][_0xefac('0x19')]);_0x7c5029['offset']=qs[_0xefac('0x1c')](_0x35c443[_0xefac('0x2d')][_0xefac('0x1c')]);}return _0x14b578['getConfigurations'](_0x7c5029);}})['then'](function(_0x10ac21){if(_0x10ac21){return _0x10ac21?{'count':_0x254d9e,'rows':_0x10ac21}:null;}})[_0xefac('0x3f')](respondWithResult(_0x1cc1fc,null))[_0xefac('0x40')](handleError(_0x1cc1fc,null));};exports[_0xefac('0x4d')]=function(_0x1b4717,_0x1fc451,_0x80b5b0){if(_0x1b4717[_0xefac('0x44')]['id']){delete _0x1b4717['body']['id'];}return db['SugarcrmAccount'][_0xefac('0x48')]({'where':{'id':_0x1b4717[_0xefac('0x47')]['id']}})[_0xefac('0x3f')](handleEntityNotFound(_0x1fc451,null))[_0xefac('0x3f')](function(_0x462d99){if(_0x462d99){_0x1b4717[_0xefac('0x44')][_0xefac('0x4e')]=_0x462d99['id'];_0x1b4717[_0xefac('0x44')][_0xefac('0x4f')]=integrations['getSubjects'](_0x1b4717[_0xefac('0x44')][_0xefac('0x50')],_0x1b4717['body'][_0xefac('0x29')]);_0x1b4717[_0xefac('0x44')][_0xefac('0x51')]=integrations[_0xefac('0x52')](_0x1b4717['body'][_0xefac('0x50')],_0x1b4717[_0xefac('0x44')][_0xefac('0x29')]);return db[_0xefac('0x49')][_0xefac('0x43')](_0x1b4717[_0xefac('0x44')],{'include':[{'model':db['SugarcrmField'],'as':'Subjects'},{'model':db[_0xefac('0x53')],'as':'Descriptions'}]});}return null;})[_0xefac('0x3f')](respondWithResult(_0x1fc451,null))[_0xefac('0x40')](handleError(_0x1fc451,null));};exports[_0xefac('0x54')]=function(_0x93b416,_0x2de28e,_0x1b9730){var _0x3dc050='';var _0x4f3bf4=['id',_0xefac('0x24'),_0xefac('0x55'),_0xefac('0x56'),_0xefac('0x57'),_0xefac('0x58'),'duration_hours','duration_minutes',_0xefac('0x59'),_0xefac('0x5a'),_0xefac('0x5b'),_0xefac('0x5c')];return db['SugarcrmAccount'][_0xefac('0x48')]({'where':{'id':_0x93b416[_0xefac('0x47')]['id']},'attributes':['id',_0xefac('0x5d'),'password',_0xefac('0x5e')]})[_0xefac('0x3f')](handleEntityNotFound(_0x2de28e,null))[_0xefac('0x3f')](function(_0x3bfe26){if(_0x3bfe26){_0x3dc050=_0x3bfe26[_0xefac('0x5e')];var _0x1bbe8e=_0x3dc050[_0xefac('0x5f')](-0x1);if(_0x1bbe8e==='/'){_0x3dc050=_0x3dc050[_0xefac('0x60')](0x0,_0x3dc050[_0xefac('0x61')](_0x1bbe8e));}return rp({'method':_0xefac('0x62'),'uri':util[_0xefac('0x63')](_0xefac('0x64'),_0x3dc050,_0xefac('0x65')),'json':!![],'form':{'method':_0xefac('0x66'),'input_type':_0xefac('0x67'),'response_type':'JSON','rest_data':JSON[_0xefac('0x68')]({'user_auth':{'user_name':_0x3bfe26[_0xefac('0x5d')],'password':_0x3bfe26[_0xefac('0x69')],'encryption':_0xefac('0x6a')},'application':_0xefac('0x6b')})}});}})['then'](function(_0x18b3b5){if(_0x18b3b5&&_0x18b3b5[_0xefac('0x24')]!==_0xefac('0x6c')&&_0x18b3b5[_0xefac('0x24')]!==_0xefac('0x6d')){return rp({'method':'POST','uri':util['format'](_0xefac('0x64'),_0x3dc050,_0xefac('0x65')),'json':!![],'form':{'method':_0xefac('0x6e'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xefac('0x68')]({'session':_0x18b3b5['id'],'module_name':_0xefac('0x6f')})}})[_0xefac('0x3f')](function(_0x571b19){if(_0x571b19){var _0x959319=_['values'](_0x571b19['module_fields']);_[_0xefac('0x70')](_0x959319,function(_0x4ef3c3){return _0x4f3bf4[_0xefac('0x71')](_0x4ef3c3[_0xefac('0x24')]);});return{'count':_0x959319['length'],'rows':_[_0xefac('0x2c')](_0x959319,function(_0x2eeb44){return{'id':_0x2eeb44[_0xefac('0x24')],'name':_0x2eeb44[_0xefac('0x72')],'custom':_[_0xefac('0x73')](_0x2eeb44['name'],'_c')?!![]:![],'options':_0x2eeb44[_0xefac('0x3a')]?_[_0xefac('0x2c')](_[_0xefac('0x74')](_0x2eeb44[_0xefac('0x3a')]),function(_0x929831){return{'name':_0x929831['value'],'value':_0x929831[_0xefac('0x24')]};}):[]};})};}})[_0xefac('0x3f')](respondWithResult(_0x2de28e,null))[_0xefac('0x40')](function(_0x15eec4){var _0xcaeda6=_0x93b416['query'][_0xefac('0x75')]?0x1f4:_0x15eec4[_0xefac('0x76')]||0x1f4;logger[_0xefac('0x22')]('getFields,\x20%s,\x20%s,\x20%s',_0xefac('0x54'),_0xcaeda6,JSON['stringify'](_0x15eec4));delete _0x15eec4[_0xefac('0x24')];if(_0xcaeda6===0x191){_0xcaeda6=0x190;}_0x2de28e[_0xefac('0x16')](_0xcaeda6)[_0xefac('0x25')](_0x93b416[_0xefac('0x2d')]['test']?{'message':_0xefac('0x77'),'statusCode':_0x15eec4[_0xefac('0x76')]}:_0x15eec4);});}else{var _0x12b4eb=0x1f4;_0x2de28e['status'](_0x12b4eb)['send']({'message':_0xefac('0x77'),'statusCode':0x190});}});};
\ No newline at end of file
index db298e6..afd7f8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0d7=['rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','define','SugarcrmAccount','api','moment','bluebird','request-promise','path'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0xc0d7,0x7f));var _0x7c0d=function(_0x4534a5,_0x5bfa12){_0x4534a5=_0x4534a5-0x0;var _0x42fbea=_0xc0d7[_0x4534a5];return _0x42fbea;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x7c0d('0x0'));var moment=require(_0x7c0d('0x1'));var BPromise=require(_0x7c0d('0x2'));var rp=require(_0x7c0d('0x3'));var fs=require('fs');var path=require(_0x7c0d('0x4'));var rimraf=require(_0x7c0d('0x5'));var config=require(_0x7c0d('0x6'));var attributes=require(_0x7c0d('0x7'));var integrations=require(_0x7c0d('0x8'));module['exports']=function(_0x507bc0,_0x14f205){return _0x507bc0[_0x7c0d('0x9')](_0x7c0d('0xa'),attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3278=['../../config/environment','./intSugarcrmAccount.attributes','exports','int_sugarcrm_accounts','../../config/logger','api','bluebird','path'];(function(_0x1c1081,_0xe2cb8c){var _0x506a1a=function(_0x16dede){while(--_0x16dede){_0x1c1081['push'](_0x1c1081['shift']());}};_0x506a1a(++_0xe2cb8c);}(_0x3278,0x11c));var _0x8327=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3278[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8327('0x0'))(_0x8327('0x1'));var moment=require('moment');var BPromise=require(_0x8327('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8327('0x3'));var rimraf=require('rimraf');var config=require(_0x8327('0x4'));var attributes=require(_0x8327('0x5'));var integrations=require('../../components/integrations/configuration');module[_0x8327('0x6')]=function(_0x471056,_0x52c4d5){return _0x471056['define']('SugarcrmAccount',attributes,{'tableName':_0x8327('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 928f665..ca777f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c61=['SugarcrmAccount,\x20%s,\x20%s','message','catch','GetSugarcrmAccount','findAll','options','attributes','limit','include','map','model','ShowSugarcrmAccount','raw','lodash','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1a896a,_0x3d7b46){var _0x568f41=function(_0xdc75a7){while(--_0xdc75a7){_0x1a896a['push'](_0x1a896a['shift']());}};_0x568f41(++_0x3d7b46);}(_0x2c61,0x157));var _0x12c6=function(_0x721b03,_0x19d938){_0x721b03=_0x721b03-0x0;var _0x3bb4e4=_0x2c61[_0x721b03];return _0x3bb4e4;};'use strict';var _=require(_0x12c6('0x0'));var util=require('util');var moment=require(_0x12c6('0x1'));var BPromise=require(_0x12c6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x12c6('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x12c6('0x4'))(_0x12c6('0x5'));var config=require(_0x12c6('0x6'));var jayson=require(_0x12c6('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x33c836,_0x7f01be,_0x3b734a){return new BPromise(function(_0x36106d,_0x258e5f){return client[_0x12c6('0x8')](_0x33c836,_0x3b734a)[_0x12c6('0x9')](function(_0x2a955b){logger[_0x12c6('0xa')]('SugarcrmAccount,\x20%s,\x20%s',_0x7f01be,_0x12c6('0xb'));logger[_0x12c6('0xc')](_0x12c6('0xd'),_0x7f01be,_0x12c6('0xb'),JSON[_0x12c6('0xe')](_0x2a955b));if(_0x2a955b[_0x12c6('0xf')]){if(_0x2a955b[_0x12c6('0xf')][_0x12c6('0x10')]===0x1f4){logger[_0x12c6('0xf')](_0x12c6('0x11'),_0x7f01be,_0x2a955b[_0x12c6('0xf')][_0x12c6('0x12')]);return _0x258e5f(_0x2a955b['error'][_0x12c6('0x12')]);}logger[_0x12c6('0xf')](_0x12c6('0x11'),_0x7f01be,_0x2a955b['error'][_0x12c6('0x12')]);return _0x36106d(_0x2a955b['error'][_0x12c6('0x12')]);}else{logger[_0x12c6('0xa')](_0x12c6('0x11'),_0x7f01be,_0x12c6('0xb'));_0x36106d(_0x2a955b['result'][_0x12c6('0x12')]);}})[_0x12c6('0x13')](function(_0x48315b){logger[_0x12c6('0xf')]('SugarcrmAccount,\x20%s,\x20%s',_0x7f01be,_0x48315b);_0x258e5f(_0x48315b);});});}exports[_0x12c6('0x14')]=function(_0x35e4cb){var _0x317b70=this;return new Promise(function(_0x13f3a4,_0x120d3f){return db['SugarcrmAccount'][_0x12c6('0x15')]({'raw':_0x35e4cb['options']?_0x35e4cb[_0x12c6('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x35e4cb['options']?_0x35e4cb[_0x12c6('0x16')]['where']||null:null,'attributes':_0x35e4cb[_0x12c6('0x16')]?_0x35e4cb['options'][_0x12c6('0x17')]||null:null,'limit':_0x35e4cb[_0x12c6('0x16')]?_0x35e4cb['options'][_0x12c6('0x18')]||null:null,'include':_0x35e4cb[_0x12c6('0x16')]?_0x35e4cb[_0x12c6('0x16')][_0x12c6('0x19')]?_[_0x12c6('0x1a')](_0x35e4cb[_0x12c6('0x16')][_0x12c6('0x19')],function(_0x17aac9){return{'model':db[_0x17aac9['model']],'as':_0x17aac9['as'],'attributes':_0x17aac9[_0x12c6('0x17')],'include':_0x17aac9[_0x12c6('0x19')]?_[_0x12c6('0x1a')](_0x17aac9['include'],function(_0x4631af){return{'model':db[_0x4631af[_0x12c6('0x1b')]],'as':_0x4631af['as'],'attributes':_0x4631af['attributes'],'include':_0x4631af['include']?_[_0x12c6('0x1a')](_0x4631af[_0x12c6('0x19')],function(_0x34e2a4){return{'model':db[_0x34e2a4[_0x12c6('0x1b')]],'as':_0x34e2a4['as'],'attributes':_0x34e2a4[_0x12c6('0x17')]};}):[]};}):[]};}):[]:[]})[_0x12c6('0x9')](function(_0x187280){logger[_0x12c6('0xa')](_0x12c6('0x14'),_0x35e4cb);logger[_0x12c6('0xc')](_0x12c6('0x14'),_0x35e4cb,JSON[_0x12c6('0xe')](_0x187280));_0x13f3a4(_0x187280);})['catch'](function(_0x3b4f49){logger['error']('GetSugarcrmAccount',_0x3b4f49[_0x12c6('0x12')],_0x35e4cb);_0x120d3f(_0x317b70['error'](0x1f4,_0x3b4f49['message']));});});};exports[_0x12c6('0x1c')]=function(_0x1ead57){var _0x4d8f08=this;return new Promise(function(_0x5dc266,_0x569d68){return db['SugarcrmAccount']['find']({'raw':_0x1ead57[_0x12c6('0x16')]?_0x1ead57['options'][_0x12c6('0x1d')]===undefined?!![]:![]:!![],'where':_0x1ead57['options']?_0x1ead57[_0x12c6('0x16')]['where']||null:null,'attributes':_0x1ead57[_0x12c6('0x16')]?_0x1ead57[_0x12c6('0x16')][_0x12c6('0x17')]||null:null,'include':_0x1ead57[_0x12c6('0x16')]?_0x1ead57[_0x12c6('0x16')]['include']?_[_0x12c6('0x1a')](_0x1ead57[_0x12c6('0x16')][_0x12c6('0x19')],function(_0x17ee08){return{'model':db[_0x17ee08[_0x12c6('0x1b')]],'as':_0x17ee08['as'],'attributes':_0x17ee08['attributes'],'include':_0x17ee08[_0x12c6('0x19')]?_[_0x12c6('0x1a')](_0x17ee08[_0x12c6('0x19')],function(_0x4bc5a0){return{'model':db[_0x4bc5a0['model']],'as':_0x4bc5a0['as'],'attributes':_0x4bc5a0[_0x12c6('0x17')],'include':_0x4bc5a0[_0x12c6('0x19')]?_[_0x12c6('0x1a')](_0x4bc5a0[_0x12c6('0x19')],function(_0x2e3c01){return{'model':db[_0x2e3c01[_0x12c6('0x1b')]],'as':_0x2e3c01['as'],'attributes':_0x2e3c01[_0x12c6('0x17')]};}):[]};}):[]};}):[]:[]})[_0x12c6('0x9')](function(_0x44c76b){logger[_0x12c6('0xa')](_0x12c6('0x1c'),_0x1ead57);logger['debug'](_0x12c6('0x1c'),_0x1ead57,JSON[_0x12c6('0xe')](_0x44c76b));_0x5dc266(_0x44c76b);})[_0x12c6('0x13')](function(_0x161612){logger['error'](_0x12c6('0x1c'),_0x161612['message'],_0x1ead57);_0x569d68(_0x4d8f08[_0x12c6('0xf')](0x1f4,_0x161612[_0x12c6('0x12')]));});});};
\ No newline at end of file
+var _0x83e4=['http','request','then','SugarcrmAccount,\x20%s,\x20%s','debug','error','code','message','info','request\x20sent','result','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','limit','include','map','attributes','model','stringify','catch','ShowSugarcrmAccount','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','client'];(function(_0x339842,_0x3ef886){var _0x3acc91=function(_0x1ce2e4){while(--_0x1ce2e4){_0x339842['push'](_0x339842['shift']());}};_0x3acc91(++_0x3ef886);}(_0x83e4,0x1c5));var _0x483e=function(_0xcb71e1,_0x35adbc){_0xcb71e1=_0xcb71e1-0x0;var _0x269570=_0x83e4[_0xcb71e1];return _0x269570;};'use strict';var _=require(_0x483e('0x0'));var util=require(_0x483e('0x1'));var moment=require(_0x483e('0x2'));var BPromise=require(_0x483e('0x3'));var rs=require(_0x483e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x483e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x483e('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x483e('0x7'));var client=jayson[_0x483e('0x8')][_0x483e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2e836c,_0x308610,_0x1d1df6){return new BPromise(function(_0x1e3991,_0x348325){return client[_0x483e('0xa')](_0x2e836c,_0x1d1df6)[_0x483e('0xb')](function(_0x2fe692){logger['info'](_0x483e('0xc'),_0x308610,'request\x20sent');logger[_0x483e('0xd')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x308610,'request\x20sent',JSON['stringify'](_0x2fe692));if(_0x2fe692[_0x483e('0xe')]){if(_0x2fe692[_0x483e('0xe')][_0x483e('0xf')]===0x1f4){logger[_0x483e('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0x308610,_0x2fe692[_0x483e('0xe')][_0x483e('0x10')]);return _0x348325(_0x2fe692[_0x483e('0xe')][_0x483e('0x10')]);}logger[_0x483e('0xe')](_0x483e('0xc'),_0x308610,_0x2fe692[_0x483e('0xe')][_0x483e('0x10')]);return _0x1e3991(_0x2fe692[_0x483e('0xe')][_0x483e('0x10')]);}else{logger[_0x483e('0x11')](_0x483e('0xc'),_0x308610,_0x483e('0x12'));_0x1e3991(_0x2fe692[_0x483e('0x13')]['message']);}})['catch'](function(_0x3560b9){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x308610,_0x3560b9);_0x348325(_0x3560b9);});});}exports[_0x483e('0x14')]=function(_0xc0a4a1){var _0x39e9b5=this;return new Promise(function(_0x151fff,_0x2604fd){return db[_0x483e('0x15')][_0x483e('0x16')]({'raw':_0xc0a4a1['options']?_0xc0a4a1[_0x483e('0x17')][_0x483e('0x18')]===undefined?!![]:![]:!![],'where':_0xc0a4a1[_0x483e('0x17')]?_0xc0a4a1[_0x483e('0x17')]['where']||null:null,'attributes':_0xc0a4a1[_0x483e('0x17')]?_0xc0a4a1[_0x483e('0x17')]['attributes']||null:null,'limit':_0xc0a4a1[_0x483e('0x17')]?_0xc0a4a1['options'][_0x483e('0x19')]||null:null,'include':_0xc0a4a1[_0x483e('0x17')]?_0xc0a4a1[_0x483e('0x17')][_0x483e('0x1a')]?_[_0x483e('0x1b')](_0xc0a4a1[_0x483e('0x17')][_0x483e('0x1a')],function(_0x387509){return{'model':db[_0x387509['model']],'as':_0x387509['as'],'attributes':_0x387509[_0x483e('0x1c')],'include':_0x387509[_0x483e('0x1a')]?_['map'](_0x387509[_0x483e('0x1a')],function(_0x1478f9){return{'model':db[_0x1478f9[_0x483e('0x1d')]],'as':_0x1478f9['as'],'attributes':_0x1478f9['attributes'],'include':_0x1478f9['include']?_[_0x483e('0x1b')](_0x1478f9[_0x483e('0x1a')],function(_0x4473b6){return{'model':db[_0x4473b6[_0x483e('0x1d')]],'as':_0x4473b6['as'],'attributes':_0x4473b6[_0x483e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x483e('0xb')](function(_0x5462a0){logger[_0x483e('0x11')](_0x483e('0x14'),_0xc0a4a1);logger[_0x483e('0xd')]('GetSugarcrmAccount',_0xc0a4a1,JSON[_0x483e('0x1e')](_0x5462a0));_0x151fff(_0x5462a0);})[_0x483e('0x1f')](function(_0x45e4d3){logger[_0x483e('0xe')](_0x483e('0x14'),_0x45e4d3[_0x483e('0x10')],_0xc0a4a1);_0x2604fd(_0x39e9b5[_0x483e('0xe')](0x1f4,_0x45e4d3['message']));});});};exports['ShowSugarcrmAccount']=function(_0x57d333){var _0xca0693=this;return new Promise(function(_0x5a9f81,_0x6241e){return db[_0x483e('0x15')]['find']({'raw':_0x57d333[_0x483e('0x17')]?_0x57d333[_0x483e('0x17')][_0x483e('0x18')]===undefined?!![]:![]:!![],'where':_0x57d333['options']?_0x57d333[_0x483e('0x17')]['where']||null:null,'attributes':_0x57d333[_0x483e('0x17')]?_0x57d333[_0x483e('0x17')][_0x483e('0x1c')]||null:null,'include':_0x57d333[_0x483e('0x17')]?_0x57d333[_0x483e('0x17')][_0x483e('0x1a')]?_[_0x483e('0x1b')](_0x57d333[_0x483e('0x17')][_0x483e('0x1a')],function(_0x24d50d){return{'model':db[_0x24d50d[_0x483e('0x1d')]],'as':_0x24d50d['as'],'attributes':_0x24d50d[_0x483e('0x1c')],'include':_0x24d50d[_0x483e('0x1a')]?_[_0x483e('0x1b')](_0x24d50d[_0x483e('0x1a')],function(_0x24b733){return{'model':db[_0x24b733['model']],'as':_0x24b733['as'],'attributes':_0x24b733[_0x483e('0x1c')],'include':_0x24b733['include']?_[_0x483e('0x1b')](_0x24b733[_0x483e('0x1a')],function(_0x15484b){return{'model':db[_0x15484b[_0x483e('0x1d')]],'as':_0x15484b['as'],'attributes':_0x15484b[_0x483e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x483e('0xb')](function(_0x3a64b1){logger[_0x483e('0x11')]('ShowSugarcrmAccount',_0x57d333);logger['debug'](_0x483e('0x20'),_0x57d333,JSON[_0x483e('0x1e')](_0x3a64b1));_0x5a9f81(_0x3a64b1);})[_0x483e('0x1f')](function(_0x2bb7a7){logger[_0x483e('0xe')](_0x483e('0x20'),_0x2bb7a7[_0x483e('0x10')],_0x57d333);_0x6241e(_0xca0693[_0x483e('0xe')](0x1f4,_0x2bb7a7[_0x483e('0x10')]));});});};
\ No newline at end of file
index dc8a387..d46f81f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72bf=['delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put','update'];(function(_0x2c4a42,_0x49264e){var _0x19ceab=function(_0x43ce82){while(--_0x43ce82){_0x2c4a42['push'](_0x2c4a42['shift']());}};_0x19ceab(++_0x49264e);}(_0x72bf,0xb2));var _0xf72b=function(_0x1107f2,_0x30676c){_0x1107f2=_0x1107f2-0x0;var _0x239df3=_0x72bf[_0x1107f2];return _0x239df3;};'use strict';var multer=require('multer');var util=require(_0xf72b('0x0'));var path=require(_0xf72b('0x1'));var timeout=require('connect-timeout');var express=require(_0xf72b('0x2'));var router=express[_0xf72b('0x3')]();var fs_extra=require(_0xf72b('0x4'));var auth=require(_0xf72b('0x5'));var interaction=require(_0xf72b('0x6'));var config=require(_0xf72b('0x7'));var controller=require(_0xf72b('0x8'));router[_0xf72b('0x9')]('/',auth[_0xf72b('0xa')](),controller[_0xf72b('0xb')]);router[_0xf72b('0x9')](_0xf72b('0xc'),auth['isAuthenticated'](),controller[_0xf72b('0xd')]);router[_0xf72b('0x9')]('/:id/fields',auth[_0xf72b('0xa')](),controller[_0xf72b('0xe')]);router[_0xf72b('0x9')](_0xf72b('0xf'),auth[_0xf72b('0xa')](),controller[_0xf72b('0x10')]);router[_0xf72b('0x9')](_0xf72b('0x11'),auth['isAuthenticated'](),controller[_0xf72b('0x12')]);router[_0xf72b('0x13')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf72b('0x14')]('/:id',auth[_0xf72b('0xa')](),controller[_0xf72b('0x15')]);router[_0xf72b('0x16')](_0xf72b('0xc'),auth[_0xf72b('0xa')](),controller[_0xf72b('0x17')]);module[_0xf72b('0x18')]=router;
\ No newline at end of file
+var _0x97e4=['util','path','express','Router','../../components/auth/service','../../components/interaction/service','./intSugarcrmConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','destroy','exports','multer'];(function(_0x1e2aae,_0x2349e3){var _0x4d8a43=function(_0x305d4c){while(--_0x305d4c){_0x1e2aae['push'](_0x1e2aae['shift']());}};_0x4d8a43(++_0x2349e3);}(_0x97e4,0xd7));var _0x497e=function(_0x5f2327,_0x123bcd){_0x5f2327=_0x5f2327-0x0;var _0x304698=_0x97e4[_0x5f2327];return _0x304698;};'use strict';var multer=require(_0x497e('0x0'));var util=require(_0x497e('0x1'));var path=require(_0x497e('0x2'));var timeout=require('connect-timeout');var express=require(_0x497e('0x3'));var router=express[_0x497e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x497e('0x5'));var interaction=require(_0x497e('0x6'));var config=require('../../config/environment');var controller=require(_0x497e('0x7'));router['get']('/',auth[_0x497e('0x8')](),controller[_0x497e('0x9')]);router[_0x497e('0xa')](_0x497e('0xb'),auth['isAuthenticated'](),controller[_0x497e('0xc')]);router[_0x497e('0xa')](_0x497e('0xd'),auth[_0x497e('0x8')](),controller['getFields']);router[_0x497e('0xa')](_0x497e('0xe'),auth['isAuthenticated'](),controller[_0x497e('0xf')]);router['get'](_0x497e('0x10'),auth[_0x497e('0x8')](),controller[_0x497e('0x11')]);router[_0x497e('0x12')]('/',auth['isAuthenticated'](),controller[_0x497e('0x13')]);router['put'](_0x497e('0xb'),auth[_0x497e('0x8')](),controller[_0x497e('0x14')]);router[_0x497e('0x15')](_0x497e('0xb'),auth[_0x497e('0x8')](),controller[_0x497e('0x16')]);module[_0x497e('0x17')]=router;
\ No newline at end of file
index 6487e16..7a12cc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9278=['sequelize','exports','STRING'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x9278,0x93));var _0x8927=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x9278[_0x27af45];return _0x18df21;};'use strict';var Sequelize=require(_0x8927('0x0'));module[_0x8927('0x1')]={'name':{'type':Sequelize[_0x8927('0x2')]},'description':{'type':Sequelize[_0x8927('0x2')]}};
\ No newline at end of file
+var _0x2394=['STRING','exports'];(function(_0x5a90d2,_0x5f5b3b){var _0x1f7655=function(_0x18cf57){while(--_0x18cf57){_0x5a90d2['push'](_0x5a90d2['shift']());}};_0x1f7655(++_0x5f5b3b);}(_0x2394,0x13d));var _0x4239=function(_0x16b11a,_0xec18fe){_0x16b11a=_0x16b11a-0x0;var _0x48dbbe=_0x2394[_0x16b11a];return _0x48dbbe;};'use strict';var Sequelize=require('sequelize');module[_0x4239('0x0')]={'name':{'type':Sequelize[_0x4239('0x1')]},'description':{'type':Sequelize[_0x4239('0x1')]}};
\ No newline at end of file
index ed9f9f8..035b55a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5fd=['path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','name','send','index','map','SugarcrmConfiguration','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','getFields','findOne','SugarcrmField','filter','getSubjects','getDescriptions','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util'];(function(_0x1ccff8,_0x2573c4){var _0xe2f066=function(_0x15ee6c){while(--_0x15ee6c){_0x1ccff8['push'](_0x1ccff8['shift']());}};_0xe2f066(++_0x2573c4);}(_0xb5fd,0xe4));var _0xdb5f=function(_0x13cf5f,_0x5427f5){_0x13cf5f=_0x13cf5f-0x0;var _0x4c5537=_0xb5fd[_0x13cf5f];return _0x4c5537;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xdb5f('0x0'));var jsonpatch=require(_0xdb5f('0x1'));var rp=require(_0xdb5f('0x2'));var moment=require('moment');var BPromise=require(_0xdb5f('0x3'));var Mustache=require(_0xdb5f('0x4'));var util=require(_0xdb5f('0x5'));var path=require(_0xdb5f('0x6'));var sox=require(_0xdb5f('0x7'));var csv=require(_0xdb5f('0x8'));var ejs=require(_0xdb5f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xdb5f('0xa'));var crypto=require(_0xdb5f('0xb'));var jsforce=require(_0xdb5f('0xc'));var deskjs=require(_0xdb5f('0xd'));var toCsv=require('to-csv');var querystring=require(_0xdb5f('0xe'));var Papa=require('papaparse');var Redis=require(_0xdb5f('0xf'));var authService=require(_0xdb5f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xdb5f('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdb5f('0x12'))(_0xdb5f('0x13'));var utils=require(_0xdb5f('0x14'));var config=require(_0xdb5f('0x15'));var licenseUtil=require(_0xdb5f('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x390bde,_0x3a14d5){_0x3a14d5=_0x3a14d5||0xcc;return function(_0x43ca57){if(_0x43ca57){return _0x390bde[_0xdb5f('0x17')](_0x3a14d5);}return _0x390bde[_0xdb5f('0x18')](_0x3a14d5)[_0xdb5f('0x19')]();};}function respondWithResult(_0x4f0bfa,_0x537f76){_0x537f76=_0x537f76||0xc8;return function(_0x98cf84){if(_0x98cf84){return _0x4f0bfa[_0xdb5f('0x18')](_0x537f76)[_0xdb5f('0x1a')](_0x98cf84);}};}function respondWithFilteredResult(_0x68fc5f,_0x1158ee){return function(_0x4fb9c6){if(_0x4fb9c6){var _0x3f064a=typeof _0x1158ee['offset']===_0xdb5f('0x1b')&&typeof _0x1158ee[_0xdb5f('0x1c')]===_0xdb5f('0x1b');var _0x49cb8e=_0x4fb9c6[_0xdb5f('0x1d')];var _0x149904=_0x3f064a?0x0:_0x1158ee[_0xdb5f('0x1e')];var _0x153070=_0x3f064a?_0x4fb9c6[_0xdb5f('0x1d')]:_0x1158ee['offset']+_0x1158ee[_0xdb5f('0x1c')];var _0x424ad8;if(_0x153070>=_0x49cb8e){_0x153070=_0x49cb8e;_0x424ad8=0xc8;}else{_0x424ad8=0xce;}_0x68fc5f[_0xdb5f('0x18')](_0x424ad8);return _0x68fc5f[_0xdb5f('0x1f')](_0xdb5f('0x20'),_0x149904+'-'+_0x153070+'/'+_0x49cb8e)['json'](_0x4fb9c6);}return null;};}function patchUpdates(_0x3cbd6a){return function(_0x1e2b49){try{jsonpatch[_0xdb5f('0x21')](_0x1e2b49,_0x3cbd6a,!![]);}catch(_0x4e2623){return BPromise[_0xdb5f('0x22')](_0x4e2623);}return _0x1e2b49[_0xdb5f('0x23')]();};}function saveUpdates(_0x2fda5b,_0x1bf6db){return function(_0x332396){if(_0x332396){return _0x332396[_0xdb5f('0x24')](_0x2fda5b)['then'](function(_0x3fe241){return _0x3fe241;});}return null;};}function removeEntity(_0xd6b075,_0x1bc89f){return function(_0x2cf2be){if(_0x2cf2be){return _0x2cf2be['destroy']()[_0xdb5f('0x25')](function(){_0xd6b075['status'](0xcc)[_0xdb5f('0x19')]();});}};}function handleEntityNotFound(_0x584d85,_0xbe4b93){return function(_0x4e75a1){if(!_0x4e75a1){_0x584d85[_0xdb5f('0x17')](0x194);}return _0x4e75a1;};}function handleError(_0xa6b197,_0x14d63d){_0x14d63d=_0x14d63d||0x1f4;return function(_0x319544){logger[_0xdb5f('0x26')](_0x319544['stack']);if(_0x319544[_0xdb5f('0x27')]){delete _0x319544[_0xdb5f('0x27')];}_0xa6b197[_0xdb5f('0x18')](_0x14d63d)[_0xdb5f('0x28')](_0x319544);};}exports[_0xdb5f('0x29')]=function(_0x568c79,_0x5c2868){var _0x11be42={},_0x524e93={},_0x35b16c={'count':0x0,'rows':[]};var _0xea0445=_[_0xdb5f('0x2a')](db[_0xdb5f('0x2b')][_0xdb5f('0x2c')],function(_0x277361){return{'name':_0x277361['fieldName'],'type':_0x277361['type'][_0xdb5f('0x2d')]};});_0x524e93[_0xdb5f('0x2e')]=_[_0xdb5f('0x2a')](_0xea0445,'name');_0x524e93[_0xdb5f('0x2f')]=_[_0xdb5f('0x30')](_0x568c79[_0xdb5f('0x2f')]);_0x524e93[_0xdb5f('0x31')]=_[_0xdb5f('0x32')](_0x524e93[_0xdb5f('0x2e')],_0x524e93['query']);_0x11be42[_0xdb5f('0x33')]=_['intersection'](_0x524e93['model'],qs['fields'](_0x568c79[_0xdb5f('0x2f')][_0xdb5f('0x34')]));_0x11be42['attributes']=_0x11be42['attributes'][_0xdb5f('0x35')]?_0x11be42[_0xdb5f('0x33')]:_0x524e93[_0xdb5f('0x2e')];if(!_0x568c79[_0xdb5f('0x2f')][_0xdb5f('0x36')](_0xdb5f('0x37'))){_0x11be42[_0xdb5f('0x1c')]=qs[_0xdb5f('0x1c')](_0x568c79[_0xdb5f('0x2f')][_0xdb5f('0x1c')]);_0x11be42[_0xdb5f('0x1e')]=qs[_0xdb5f('0x1e')](_0x568c79[_0xdb5f('0x2f')][_0xdb5f('0x1e')]);}_0x11be42[_0xdb5f('0x38')]=qs[_0xdb5f('0x39')](_0x568c79[_0xdb5f('0x2f')][_0xdb5f('0x39')]);_0x11be42[_0xdb5f('0x3a')]=qs[_0xdb5f('0x31')](_[_0xdb5f('0x3b')](_0x568c79[_0xdb5f('0x2f')],_0x524e93[_0xdb5f('0x31')]),_0xea0445);if(_0x568c79[_0xdb5f('0x2f')]['filter']){_0x11be42[_0xdb5f('0x3a')]=_['merge'](_0x11be42[_0xdb5f('0x3a')],{'$or':_[_0xdb5f('0x2a')](_0xea0445,function(_0x4fcaec){if(_0x4fcaec['type']!=='VIRTUAL'){var _0x553b74={};_0x553b74[_0x4fcaec[_0xdb5f('0x27')]]={'$like':'%'+_0x568c79[_0xdb5f('0x2f')]['filter']+'%'};return _0x553b74;}})});}_0x11be42=_[_0xdb5f('0x3c')]({},_0x11be42,_0x568c79[_0xdb5f('0x3d')]);var _0x4c4bf8={'where':_0x11be42['where']};return db[_0xdb5f('0x2b')][_0xdb5f('0x1d')](_0x4c4bf8)[_0xdb5f('0x25')](function(_0x58056a){_0x35b16c[_0xdb5f('0x1d')]=_0x58056a;if(_0x568c79['query'][_0xdb5f('0x3e')]){_0x11be42[_0xdb5f('0x3f')]=[{'all':!![]}];}return db[_0xdb5f('0x2b')][_0xdb5f('0x40')](_0x11be42);})[_0xdb5f('0x25')](function(_0xaee217){_0x35b16c[_0xdb5f('0x41')]=_0xaee217;return _0x35b16c;})[_0xdb5f('0x25')](respondWithFilteredResult(_0x5c2868,_0x11be42))[_0xdb5f('0x42')](handleError(_0x5c2868,null));};exports[_0xdb5f('0x43')]=function(_0x3836c6,_0x237f91){var _0x2976f3={'raw':![],'where':{'id':_0x3836c6['params']['id']}},_0xf0f9d0={};_0xf0f9d0[_0xdb5f('0x2e')]=_[_0xdb5f('0x30')](db[_0xdb5f('0x2b')]['rawAttributes']);_0xf0f9d0[_0xdb5f('0x2f')]=_[_0xdb5f('0x30')](_0x3836c6[_0xdb5f('0x2f')]);_0xf0f9d0[_0xdb5f('0x31')]=_['intersection'](_0xf0f9d0[_0xdb5f('0x2e')],_0xf0f9d0[_0xdb5f('0x2f')]);_0x2976f3['attributes']=_[_0xdb5f('0x32')](_0xf0f9d0[_0xdb5f('0x2e')],qs['fields'](_0x3836c6[_0xdb5f('0x2f')]['fields']));_0x2976f3[_0xdb5f('0x33')]=_0x2976f3[_0xdb5f('0x33')][_0xdb5f('0x35')]?_0x2976f3[_0xdb5f('0x33')]:_0xf0f9d0['model'];if(_0x3836c6[_0xdb5f('0x2f')][_0xdb5f('0x3e')]){_0x2976f3['include']=[{'all':!![]}];}_0x2976f3=_['merge']({},_0x2976f3,_0x3836c6['options']);return db[_0xdb5f('0x2b')][_0xdb5f('0x44')](_0x2976f3)['then'](handleEntityNotFound(_0x237f91,null))[_0xdb5f('0x25')](respondWithResult(_0x237f91,null))[_0xdb5f('0x42')](handleError(_0x237f91,null));};exports[_0xdb5f('0x45')]=function(_0x484415,_0x136460){return db['SugarcrmConfiguration'][_0xdb5f('0x45')](_0x484415['body'],{})[_0xdb5f('0x25')](respondWithResult(_0x136460,0xc9))[_0xdb5f('0x42')](handleError(_0x136460,null));};exports[_0xdb5f('0x24')]=function(_0x1bb235,_0xabd7a1){if(_0x1bb235[_0xdb5f('0x46')]['id']){delete _0x1bb235[_0xdb5f('0x46')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0x1bb235[_0xdb5f('0x47')]['id']}})['then'](handleEntityNotFound(_0xabd7a1,null))[_0xdb5f('0x25')](saveUpdates(_0x1bb235[_0xdb5f('0x46')],null))[_0xdb5f('0x25')](respondWithResult(_0xabd7a1,null))[_0xdb5f('0x42')](handleError(_0xabd7a1,null));};exports['destroy']=function(_0x4dc8fb,_0xb14952){return db[_0xdb5f('0x2b')][_0xdb5f('0x44')]({'where':{'id':_0x4dc8fb['params']['id']}})[_0xdb5f('0x25')](handleEntityNotFound(_0xb14952,null))['then'](removeEntity(_0xb14952,null))[_0xdb5f('0x42')](handleError(_0xb14952,null));};exports[_0xdb5f('0x48')]=function(_0x25872b,_0x3887b9,_0x393983){var _0x4e2109={};var _0x463bbb={};var _0x4ad29b;var _0x23e28e;return db[_0xdb5f('0x2b')][_0xdb5f('0x49')]({'where':{'id':_0x25872b[_0xdb5f('0x47')]['id']}})[_0xdb5f('0x25')](handleEntityNotFound(_0x3887b9,null))[_0xdb5f('0x25')](function(_0x1b980a){if(_0x1b980a){_0x4ad29b=_0x1b980a;_0x463bbb[_0xdb5f('0x2e')]=_[_0xdb5f('0x30')](db[_0xdb5f('0x4a')][_0xdb5f('0x2c')]);_0x463bbb[_0xdb5f('0x2f')]=_[_0xdb5f('0x30')](_0x25872b[_0xdb5f('0x2f')]);_0x463bbb[_0xdb5f('0x31')]=_['intersection'](_0x463bbb[_0xdb5f('0x2e')],_0x463bbb[_0xdb5f('0x2f')]);_0x4e2109[_0xdb5f('0x33')]=_[_0xdb5f('0x32')](_0x463bbb[_0xdb5f('0x2e')],qs[_0xdb5f('0x34')](_0x25872b[_0xdb5f('0x2f')][_0xdb5f('0x34')]));_0x4e2109['attributes']=_0x4e2109[_0xdb5f('0x33')][_0xdb5f('0x35')]?_0x4e2109[_0xdb5f('0x33')]:_0x463bbb[_0xdb5f('0x2e')];_0x4e2109[_0xdb5f('0x38')]=qs[_0xdb5f('0x39')](_0x25872b['query'][_0xdb5f('0x39')]);_0x4e2109[_0xdb5f('0x3a')]=qs[_0xdb5f('0x31')](_[_0xdb5f('0x3b')](_0x25872b[_0xdb5f('0x2f')],_0x463bbb[_0xdb5f('0x31')]));if(_0x25872b[_0xdb5f('0x2f')]['filter']){_0x4e2109[_0xdb5f('0x3a')]=_[_0xdb5f('0x3c')](_0x4e2109['where'],{'$or':_['map'](_0x4e2109[_0xdb5f('0x33')],function(_0x1f2d3b){var _0x38e41f={};_0x38e41f[_0x1f2d3b]={'$like':'%'+_0x25872b[_0xdb5f('0x2f')]['filter']+'%'};return _0x38e41f;})});}_0x4e2109=_['merge']({},_0x4e2109,_0x25872b[_0xdb5f('0x3d')]);return _0x4ad29b['getFields'](_0x4e2109);}})[_0xdb5f('0x25')](function(_0x312818){if(_0x312818){_0x23e28e=_0x312818[_0xdb5f('0x35')];if(!_0x25872b[_0xdb5f('0x2f')][_0xdb5f('0x36')](_0xdb5f('0x37'))){_0x4e2109[_0xdb5f('0x1c')]=qs[_0xdb5f('0x1c')](_0x25872b[_0xdb5f('0x2f')][_0xdb5f('0x1c')]);_0x4e2109[_0xdb5f('0x1e')]=qs[_0xdb5f('0x1e')](_0x25872b[_0xdb5f('0x2f')][_0xdb5f('0x1e')]);}return _0x4ad29b[_0xdb5f('0x48')](_0x4e2109);}})[_0xdb5f('0x25')](function(_0x5ee652){if(_0x5ee652){return _0x5ee652?{'count':_0x23e28e,'rows':_0x5ee652}:null;}})[_0xdb5f('0x25')](respondWithResult(_0x3887b9,null))[_0xdb5f('0x42')](handleError(_0x3887b9,null));};exports['getSubjects']=function(_0xc30b2c,_0x184a44,_0x386a5e){var _0x4122d2={};var _0x582600={};var _0x2b0172;var _0x5bd1f6;return db['SugarcrmConfiguration'][_0xdb5f('0x49')]({'where':{'id':_0xc30b2c[_0xdb5f('0x47')]['id']}})['then'](handleEntityNotFound(_0x184a44,null))[_0xdb5f('0x25')](function(_0x12ce7f){if(_0x12ce7f){_0x2b0172=_0x12ce7f;_0x582600['model']=_[_0xdb5f('0x30')](db['SugarcrmField']['rawAttributes']);_0x582600[_0xdb5f('0x2f')]=_[_0xdb5f('0x30')](_0xc30b2c['query']);_0x582600[_0xdb5f('0x31')]=_[_0xdb5f('0x32')](_0x582600[_0xdb5f('0x2e')],_0x582600[_0xdb5f('0x2f')]);_0x4122d2['attributes']=_[_0xdb5f('0x32')](_0x582600[_0xdb5f('0x2e')],qs[_0xdb5f('0x34')](_0xc30b2c['query'][_0xdb5f('0x34')]));_0x4122d2[_0xdb5f('0x33')]=_0x4122d2['attributes'][_0xdb5f('0x35')]?_0x4122d2[_0xdb5f('0x33')]:_0x582600[_0xdb5f('0x2e')];_0x4122d2[_0xdb5f('0x38')]=qs['sort'](_0xc30b2c[_0xdb5f('0x2f')][_0xdb5f('0x39')]);_0x4122d2[_0xdb5f('0x3a')]=qs[_0xdb5f('0x31')](_['pick'](_0xc30b2c[_0xdb5f('0x2f')],_0x582600[_0xdb5f('0x31')]));if(_0xc30b2c[_0xdb5f('0x2f')][_0xdb5f('0x4b')]){_0x4122d2[_0xdb5f('0x3a')]=_[_0xdb5f('0x3c')](_0x4122d2[_0xdb5f('0x3a')],{'$or':_[_0xdb5f('0x2a')](_0x4122d2[_0xdb5f('0x33')],function(_0x49170b){var _0xf41d5d={};_0xf41d5d[_0x49170b]={'$like':'%'+_0xc30b2c['query'][_0xdb5f('0x4b')]+'%'};return _0xf41d5d;})});}_0x4122d2=_[_0xdb5f('0x3c')]({},_0x4122d2,_0xc30b2c[_0xdb5f('0x3d')]);return _0x2b0172[_0xdb5f('0x4c')](_0x4122d2);}})[_0xdb5f('0x25')](function(_0x1c498b){if(_0x1c498b){_0x5bd1f6=_0x1c498b['length'];if(!_0xc30b2c[_0xdb5f('0x2f')]['hasOwnProperty']('nolimit')){_0x4122d2[_0xdb5f('0x1c')]=qs[_0xdb5f('0x1c')](_0xc30b2c[_0xdb5f('0x2f')][_0xdb5f('0x1c')]);_0x4122d2[_0xdb5f('0x1e')]=qs[_0xdb5f('0x1e')](_0xc30b2c[_0xdb5f('0x2f')][_0xdb5f('0x1e')]);}return _0x2b0172[_0xdb5f('0x4c')](_0x4122d2);}})[_0xdb5f('0x25')](function(_0x45b4ab){if(_0x45b4ab){return _0x45b4ab?{'count':_0x5bd1f6,'rows':_0x45b4ab}:null;}})[_0xdb5f('0x25')](respondWithResult(_0x184a44,null))['catch'](handleError(_0x184a44,null));};exports[_0xdb5f('0x4d')]=function(_0x2fd515,_0x340feb,_0x5792ff){var _0xcb1392={};var _0x38c909={};var _0x56e7a9;var _0x51da84;return db['SugarcrmConfiguration'][_0xdb5f('0x49')]({'where':{'id':_0x2fd515[_0xdb5f('0x47')]['id']}})[_0xdb5f('0x25')](handleEntityNotFound(_0x340feb,null))[_0xdb5f('0x25')](function(_0x3dc8aa){if(_0x3dc8aa){_0x56e7a9=_0x3dc8aa;_0x38c909[_0xdb5f('0x2e')]=_['keys'](db[_0xdb5f('0x4a')][_0xdb5f('0x2c')]);_0x38c909[_0xdb5f('0x2f')]=_['keys'](_0x2fd515[_0xdb5f('0x2f')]);_0x38c909['filters']=_[_0xdb5f('0x32')](_0x38c909[_0xdb5f('0x2e')],_0x38c909['query']);_0xcb1392[_0xdb5f('0x33')]=_[_0xdb5f('0x32')](_0x38c909['model'],qs[_0xdb5f('0x34')](_0x2fd515[_0xdb5f('0x2f')][_0xdb5f('0x34')]));_0xcb1392[_0xdb5f('0x33')]=_0xcb1392[_0xdb5f('0x33')]['length']?_0xcb1392[_0xdb5f('0x33')]:_0x38c909[_0xdb5f('0x2e')];_0xcb1392['order']=qs[_0xdb5f('0x39')](_0x2fd515[_0xdb5f('0x2f')][_0xdb5f('0x39')]);_0xcb1392[_0xdb5f('0x3a')]=qs['filters'](_[_0xdb5f('0x3b')](_0x2fd515[_0xdb5f('0x2f')],_0x38c909[_0xdb5f('0x31')]));if(_0x2fd515[_0xdb5f('0x2f')][_0xdb5f('0x4b')]){_0xcb1392[_0xdb5f('0x3a')]=_[_0xdb5f('0x3c')](_0xcb1392[_0xdb5f('0x3a')],{'$or':_[_0xdb5f('0x2a')](_0xcb1392[_0xdb5f('0x33')],function(_0x47ce50){var _0x146439={};_0x146439[_0x47ce50]={'$like':'%'+_0x2fd515[_0xdb5f('0x2f')][_0xdb5f('0x4b')]+'%'};return _0x146439;})});}_0xcb1392=_[_0xdb5f('0x3c')]({},_0xcb1392,_0x2fd515[_0xdb5f('0x3d')]);return _0x56e7a9['getDescriptions'](_0xcb1392);}})[_0xdb5f('0x25')](function(_0x460794){if(_0x460794){_0x51da84=_0x460794[_0xdb5f('0x35')];if(!_0x2fd515[_0xdb5f('0x2f')][_0xdb5f('0x36')]('nolimit')){_0xcb1392['limit']=qs[_0xdb5f('0x1c')](_0x2fd515[_0xdb5f('0x2f')][_0xdb5f('0x1c')]);_0xcb1392[_0xdb5f('0x1e')]=qs[_0xdb5f('0x1e')](_0x2fd515[_0xdb5f('0x2f')][_0xdb5f('0x1e')]);}return _0x56e7a9[_0xdb5f('0x4d')](_0xcb1392);}})['then'](function(_0x7eaee6){if(_0x7eaee6){return _0x7eaee6?{'count':_0x51da84,'rows':_0x7eaee6}:null;}})[_0xdb5f('0x25')](respondWithResult(_0x340feb,null))[_0xdb5f('0x42')](handleError(_0x340feb,null));};
\ No newline at end of file
+var _0xc32f=['order','where','filter','merge','VIRTUAL','SugarcrmConfiguration','includeAll','findAll','rows','catch','show','keys','include','options','find','create','body','findOne','params','SugarcrmField','sort','pick','getSubjects','getDescriptions','eml-format','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','count','set','Content-Range','update','then','destroy','stack','name','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x30993b,_0x47c852){var _0x2bb1b6=function(_0x1d0c0a){while(--_0x1d0c0a){_0x30993b['push'](_0x30993b['shift']());}};_0x2bb1b6(++_0x47c852);}(_0xc32f,0x194));var _0xfc32=function(_0x29ef7e,_0x554118){_0x29ef7e=_0x29ef7e-0x0;var _0x127b5d=_0xc32f[_0x29ef7e];return _0x127b5d;};'use strict';var emlformat=require(_0xfc32('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfc32('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfc32('0x2'));var moment=require(_0xfc32('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfc32('0x4'));var util=require(_0xfc32('0x5'));var path=require('path');var sox=require(_0xfc32('0x6'));var csv=require(_0xfc32('0x7'));var ejs=require(_0xfc32('0x8'));var fs=require('fs');var fs_extra=require(_0xfc32('0x9'));var _=require(_0xfc32('0xa'));var squel=require(_0xfc32('0xb'));var crypto=require(_0xfc32('0xc'));var jsforce=require(_0xfc32('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xfc32('0xe'));var authService=require(_0xfc32('0xf'));var qs=require(_0xfc32('0x10'));var as=require(_0xfc32('0x11'));var hardwareService=require(_0xfc32('0x12'));var logger=require(_0xfc32('0x13'))(_0xfc32('0x14'));var utils=require(_0xfc32('0x15'));var config=require(_0xfc32('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xfc32('0x17'))['db'];function respondWithStatusCode(_0x21fdbc,_0x46328c){_0x46328c=_0x46328c||0xcc;return function(_0x15b8a6){if(_0x15b8a6){return _0x21fdbc[_0xfc32('0x18')](_0x46328c);}return _0x21fdbc['status'](_0x46328c)[_0xfc32('0x19')]();};}function respondWithResult(_0x33b209,_0x2e90da){_0x2e90da=_0x2e90da||0xc8;return function(_0xd38f21){if(_0xd38f21){return _0x33b209[_0xfc32('0x1a')](_0x2e90da)[_0xfc32('0x1b')](_0xd38f21);}};}function respondWithFilteredResult(_0x49c7e9,_0xb31fe){return function(_0x4bb386){if(_0x4bb386){var _0x138e82=typeof _0xb31fe[_0xfc32('0x1c')]==='undefined'&&typeof _0xb31fe[_0xfc32('0x1d')]==='undefined';var _0xb81190=_0x4bb386[_0xfc32('0x1e')];var _0x369802=_0x138e82?0x0:_0xb31fe[_0xfc32('0x1c')];var _0x1e7f03=_0x138e82?_0x4bb386[_0xfc32('0x1e')]:_0xb31fe['offset']+_0xb31fe[_0xfc32('0x1d')];var _0x2091b2;if(_0x1e7f03>=_0xb81190){_0x1e7f03=_0xb81190;_0x2091b2=0xc8;}else{_0x2091b2=0xce;}_0x49c7e9[_0xfc32('0x1a')](_0x2091b2);return _0x49c7e9[_0xfc32('0x1f')](_0xfc32('0x20'),_0x369802+'-'+_0x1e7f03+'/'+_0xb81190)[_0xfc32('0x1b')](_0x4bb386);}return null;};}function patchUpdates(_0x5c32b9){return function(_0x3cd2d9){try{jsonpatch['apply'](_0x3cd2d9,_0x5c32b9,!![]);}catch(_0x4ee7ce){return BPromise['reject'](_0x4ee7ce);}return _0x3cd2d9['save']();};}function saveUpdates(_0x706b12,_0x7283e5){return function(_0x436be2){if(_0x436be2){return _0x436be2[_0xfc32('0x21')](_0x706b12)[_0xfc32('0x22')](function(_0x280067){return _0x280067;});}return null;};}function removeEntity(_0x5ccf04,_0x3be85f){return function(_0x509c4f){if(_0x509c4f){return _0x509c4f[_0xfc32('0x23')]()[_0xfc32('0x22')](function(){_0x5ccf04[_0xfc32('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe2c03e,_0x58bcf1){return function(_0x237a92){if(!_0x237a92){_0xe2c03e['sendStatus'](0x194);}return _0x237a92;};}function handleError(_0x3c2b72,_0x1b9585){_0x1b9585=_0x1b9585||0x1f4;return function(_0x260ebc){logger['error'](_0x260ebc[_0xfc32('0x24')]);if(_0x260ebc[_0xfc32('0x25')]){delete _0x260ebc[_0xfc32('0x25')];}_0x3c2b72['status'](_0x1b9585)['send'](_0x260ebc);};}exports[_0xfc32('0x26')]=function(_0x3dcce4,_0x3821f0){var _0x1ff5e1={},_0x3f3577={},_0x4cd416={'count':0x0,'rows':[]};var _0x3d63f1=_[_0xfc32('0x27')](db['SugarcrmConfiguration'][_0xfc32('0x28')],function(_0x2fc9bc){return{'name':_0x2fc9bc['fieldName'],'type':_0x2fc9bc[_0xfc32('0x29')][_0xfc32('0x2a')]};});_0x3f3577[_0xfc32('0x2b')]=_[_0xfc32('0x27')](_0x3d63f1,'name');_0x3f3577['query']=_['keys'](_0x3dcce4[_0xfc32('0x2c')]);_0x3f3577[_0xfc32('0x2d')]=_[_0xfc32('0x2e')](_0x3f3577[_0xfc32('0x2b')],_0x3f3577[_0xfc32('0x2c')]);_0x1ff5e1[_0xfc32('0x2f')]=_[_0xfc32('0x2e')](_0x3f3577[_0xfc32('0x2b')],qs[_0xfc32('0x30')](_0x3dcce4[_0xfc32('0x2c')][_0xfc32('0x30')]));_0x1ff5e1[_0xfc32('0x2f')]=_0x1ff5e1[_0xfc32('0x2f')][_0xfc32('0x31')]?_0x1ff5e1[_0xfc32('0x2f')]:_0x3f3577[_0xfc32('0x2b')];if(!_0x3dcce4[_0xfc32('0x2c')][_0xfc32('0x32')](_0xfc32('0x33'))){_0x1ff5e1[_0xfc32('0x1d')]=qs[_0xfc32('0x1d')](_0x3dcce4[_0xfc32('0x2c')]['limit']);_0x1ff5e1[_0xfc32('0x1c')]=qs[_0xfc32('0x1c')](_0x3dcce4[_0xfc32('0x2c')]['offset']);}_0x1ff5e1[_0xfc32('0x34')]=qs['sort'](_0x3dcce4[_0xfc32('0x2c')]['sort']);_0x1ff5e1[_0xfc32('0x35')]=qs['filters'](_['pick'](_0x3dcce4['query'],_0x3f3577[_0xfc32('0x2d')]),_0x3d63f1);if(_0x3dcce4[_0xfc32('0x2c')][_0xfc32('0x36')]){_0x1ff5e1[_0xfc32('0x35')]=_[_0xfc32('0x37')](_0x1ff5e1[_0xfc32('0x35')],{'$or':_[_0xfc32('0x27')](_0x3d63f1,function(_0x787cd7){if(_0x787cd7[_0xfc32('0x29')]!==_0xfc32('0x38')){var _0x5be7a7={};_0x5be7a7[_0x787cd7[_0xfc32('0x25')]]={'$like':'%'+_0x3dcce4[_0xfc32('0x2c')][_0xfc32('0x36')]+'%'};return _0x5be7a7;}})});}_0x1ff5e1=_['merge']({},_0x1ff5e1,_0x3dcce4['options']);var _0x200c5f={'where':_0x1ff5e1[_0xfc32('0x35')]};return db[_0xfc32('0x39')][_0xfc32('0x1e')](_0x200c5f)['then'](function(_0x55ada3){_0x4cd416[_0xfc32('0x1e')]=_0x55ada3;if(_0x3dcce4[_0xfc32('0x2c')][_0xfc32('0x3a')]){_0x1ff5e1['include']=[{'all':!![]}];}return db[_0xfc32('0x39')][_0xfc32('0x3b')](_0x1ff5e1);})[_0xfc32('0x22')](function(_0x50b18d){_0x4cd416[_0xfc32('0x3c')]=_0x50b18d;return _0x4cd416;})['then'](respondWithFilteredResult(_0x3821f0,_0x1ff5e1))[_0xfc32('0x3d')](handleError(_0x3821f0,null));};exports[_0xfc32('0x3e')]=function(_0x143430,_0x4c2685){var _0x4fbd86={'raw':![],'where':{'id':_0x143430['params']['id']}},_0x3692ff={};_0x3692ff['model']=_[_0xfc32('0x3f')](db[_0xfc32('0x39')][_0xfc32('0x28')]);_0x3692ff[_0xfc32('0x2c')]=_[_0xfc32('0x3f')](_0x143430[_0xfc32('0x2c')]);_0x3692ff[_0xfc32('0x2d')]=_[_0xfc32('0x2e')](_0x3692ff[_0xfc32('0x2b')],_0x3692ff[_0xfc32('0x2c')]);_0x4fbd86[_0xfc32('0x2f')]=_[_0xfc32('0x2e')](_0x3692ff['model'],qs[_0xfc32('0x30')](_0x143430['query'][_0xfc32('0x30')]));_0x4fbd86[_0xfc32('0x2f')]=_0x4fbd86['attributes'][_0xfc32('0x31')]?_0x4fbd86[_0xfc32('0x2f')]:_0x3692ff[_0xfc32('0x2b')];if(_0x143430[_0xfc32('0x2c')]['includeAll']){_0x4fbd86[_0xfc32('0x40')]=[{'all':!![]}];}_0x4fbd86=_[_0xfc32('0x37')]({},_0x4fbd86,_0x143430[_0xfc32('0x41')]);return db[_0xfc32('0x39')][_0xfc32('0x42')](_0x4fbd86)[_0xfc32('0x22')](handleEntityNotFound(_0x4c2685,null))['then'](respondWithResult(_0x4c2685,null))[_0xfc32('0x3d')](handleError(_0x4c2685,null));};exports['create']=function(_0x476016,_0x59a739){return db[_0xfc32('0x39')][_0xfc32('0x43')](_0x476016['body'],{})[_0xfc32('0x22')](respondWithResult(_0x59a739,0xc9))[_0xfc32('0x3d')](handleError(_0x59a739,null));};exports[_0xfc32('0x21')]=function(_0x1b6fc9,_0x1c2294){if(_0x1b6fc9['body']['id']){delete _0x1b6fc9[_0xfc32('0x44')]['id'];}return db[_0xfc32('0x39')]['find']({'where':{'id':_0x1b6fc9['params']['id']}})[_0xfc32('0x22')](handleEntityNotFound(_0x1c2294,null))[_0xfc32('0x22')](saveUpdates(_0x1b6fc9[_0xfc32('0x44')],null))['then'](respondWithResult(_0x1c2294,null))['catch'](handleError(_0x1c2294,null));};exports['destroy']=function(_0x5ab6ef,_0x1ced4a){return db['SugarcrmConfiguration'][_0xfc32('0x42')]({'where':{'id':_0x5ab6ef['params']['id']}})['then'](handleEntityNotFound(_0x1ced4a,null))['then'](removeEntity(_0x1ced4a,null))[_0xfc32('0x3d')](handleError(_0x1ced4a,null));};exports['getFields']=function(_0x595137,_0x1044bf,_0x1c38e0){var _0x31de6a={};var _0x23ebfb={};var _0x228677;var _0x38bd37;return db[_0xfc32('0x39')][_0xfc32('0x45')]({'where':{'id':_0x595137[_0xfc32('0x46')]['id']}})[_0xfc32('0x22')](handleEntityNotFound(_0x1044bf,null))['then'](function(_0x41b8da){if(_0x41b8da){_0x228677=_0x41b8da;_0x23ebfb[_0xfc32('0x2b')]=_[_0xfc32('0x3f')](db[_0xfc32('0x47')][_0xfc32('0x28')]);_0x23ebfb[_0xfc32('0x2c')]=_[_0xfc32('0x3f')](_0x595137['query']);_0x23ebfb[_0xfc32('0x2d')]=_[_0xfc32('0x2e')](_0x23ebfb['model'],_0x23ebfb['query']);_0x31de6a[_0xfc32('0x2f')]=_[_0xfc32('0x2e')](_0x23ebfb[_0xfc32('0x2b')],qs['fields'](_0x595137[_0xfc32('0x2c')][_0xfc32('0x30')]));_0x31de6a['attributes']=_0x31de6a['attributes'][_0xfc32('0x31')]?_0x31de6a[_0xfc32('0x2f')]:_0x23ebfb[_0xfc32('0x2b')];_0x31de6a['order']=qs['sort'](_0x595137['query'][_0xfc32('0x48')]);_0x31de6a['where']=qs[_0xfc32('0x2d')](_[_0xfc32('0x49')](_0x595137[_0xfc32('0x2c')],_0x23ebfb[_0xfc32('0x2d')]));if(_0x595137[_0xfc32('0x2c')]['filter']){_0x31de6a[_0xfc32('0x35')]=_['merge'](_0x31de6a[_0xfc32('0x35')],{'$or':_[_0xfc32('0x27')](_0x31de6a['attributes'],function(_0x1ed975){var _0x2a8eb0={};_0x2a8eb0[_0x1ed975]={'$like':'%'+_0x595137[_0xfc32('0x2c')][_0xfc32('0x36')]+'%'};return _0x2a8eb0;})});}_0x31de6a=_[_0xfc32('0x37')]({},_0x31de6a,_0x595137[_0xfc32('0x41')]);return _0x228677['getFields'](_0x31de6a);}})[_0xfc32('0x22')](function(_0x592bf6){if(_0x592bf6){_0x38bd37=_0x592bf6[_0xfc32('0x31')];if(!_0x595137[_0xfc32('0x2c')][_0xfc32('0x32')](_0xfc32('0x33'))){_0x31de6a[_0xfc32('0x1d')]=qs['limit'](_0x595137['query'][_0xfc32('0x1d')]);_0x31de6a[_0xfc32('0x1c')]=qs[_0xfc32('0x1c')](_0x595137[_0xfc32('0x2c')][_0xfc32('0x1c')]);}return _0x228677['getFields'](_0x31de6a);}})[_0xfc32('0x22')](function(_0x2b03bb){if(_0x2b03bb){return _0x2b03bb?{'count':_0x38bd37,'rows':_0x2b03bb}:null;}})[_0xfc32('0x22')](respondWithResult(_0x1044bf,null))[_0xfc32('0x3d')](handleError(_0x1044bf,null));};exports[_0xfc32('0x4a')]=function(_0x26e141,_0x50bc21,_0x1d5f79){var _0x143398={};var _0x1e1a44={};var _0x1bb142;var _0x39e757;return db['SugarcrmConfiguration'][_0xfc32('0x45')]({'where':{'id':_0x26e141[_0xfc32('0x46')]['id']}})[_0xfc32('0x22')](handleEntityNotFound(_0x50bc21,null))[_0xfc32('0x22')](function(_0x39779a){if(_0x39779a){_0x1bb142=_0x39779a;_0x1e1a44[_0xfc32('0x2b')]=_[_0xfc32('0x3f')](db[_0xfc32('0x47')]['rawAttributes']);_0x1e1a44[_0xfc32('0x2c')]=_[_0xfc32('0x3f')](_0x26e141['query']);_0x1e1a44[_0xfc32('0x2d')]=_[_0xfc32('0x2e')](_0x1e1a44[_0xfc32('0x2b')],_0x1e1a44[_0xfc32('0x2c')]);_0x143398[_0xfc32('0x2f')]=_[_0xfc32('0x2e')](_0x1e1a44[_0xfc32('0x2b')],qs['fields'](_0x26e141[_0xfc32('0x2c')]['fields']));_0x143398[_0xfc32('0x2f')]=_0x143398['attributes'][_0xfc32('0x31')]?_0x143398[_0xfc32('0x2f')]:_0x1e1a44[_0xfc32('0x2b')];_0x143398['order']=qs[_0xfc32('0x48')](_0x26e141[_0xfc32('0x2c')]['sort']);_0x143398[_0xfc32('0x35')]=qs[_0xfc32('0x2d')](_['pick'](_0x26e141[_0xfc32('0x2c')],_0x1e1a44['filters']));if(_0x26e141[_0xfc32('0x2c')][_0xfc32('0x36')]){_0x143398[_0xfc32('0x35')]=_[_0xfc32('0x37')](_0x143398[_0xfc32('0x35')],{'$or':_[_0xfc32('0x27')](_0x143398[_0xfc32('0x2f')],function(_0x4978f5){var _0x368b17={};_0x368b17[_0x4978f5]={'$like':'%'+_0x26e141[_0xfc32('0x2c')][_0xfc32('0x36')]+'%'};return _0x368b17;})});}_0x143398=_[_0xfc32('0x37')]({},_0x143398,_0x26e141['options']);return _0x1bb142['getSubjects'](_0x143398);}})[_0xfc32('0x22')](function(_0x525673){if(_0x525673){_0x39e757=_0x525673[_0xfc32('0x31')];if(!_0x26e141[_0xfc32('0x2c')]['hasOwnProperty']('nolimit')){_0x143398[_0xfc32('0x1d')]=qs[_0xfc32('0x1d')](_0x26e141[_0xfc32('0x2c')][_0xfc32('0x1d')]);_0x143398[_0xfc32('0x1c')]=qs[_0xfc32('0x1c')](_0x26e141[_0xfc32('0x2c')][_0xfc32('0x1c')]);}return _0x1bb142['getSubjects'](_0x143398);}})['then'](function(_0x318587){if(_0x318587){return _0x318587?{'count':_0x39e757,'rows':_0x318587}:null;}})[_0xfc32('0x22')](respondWithResult(_0x50bc21,null))[_0xfc32('0x3d')](handleError(_0x50bc21,null));};exports['getDescriptions']=function(_0x288c33,_0x544929,_0x5d76fd){var _0x33df7e={};var _0x3eae54={};var _0x20b3eb;var _0x510d96;return db[_0xfc32('0x39')][_0xfc32('0x45')]({'where':{'id':_0x288c33[_0xfc32('0x46')]['id']}})[_0xfc32('0x22')](handleEntityNotFound(_0x544929,null))[_0xfc32('0x22')](function(_0x431db1){if(_0x431db1){_0x20b3eb=_0x431db1;_0x3eae54[_0xfc32('0x2b')]=_['keys'](db['SugarcrmField']['rawAttributes']);_0x3eae54[_0xfc32('0x2c')]=_[_0xfc32('0x3f')](_0x288c33[_0xfc32('0x2c')]);_0x3eae54[_0xfc32('0x2d')]=_[_0xfc32('0x2e')](_0x3eae54[_0xfc32('0x2b')],_0x3eae54[_0xfc32('0x2c')]);_0x33df7e[_0xfc32('0x2f')]=_[_0xfc32('0x2e')](_0x3eae54[_0xfc32('0x2b')],qs[_0xfc32('0x30')](_0x288c33['query']['fields']));_0x33df7e[_0xfc32('0x2f')]=_0x33df7e[_0xfc32('0x2f')][_0xfc32('0x31')]?_0x33df7e['attributes']:_0x3eae54[_0xfc32('0x2b')];_0x33df7e['order']=qs[_0xfc32('0x48')](_0x288c33[_0xfc32('0x2c')]['sort']);_0x33df7e[_0xfc32('0x35')]=qs[_0xfc32('0x2d')](_[_0xfc32('0x49')](_0x288c33[_0xfc32('0x2c')],_0x3eae54['filters']));if(_0x288c33['query'][_0xfc32('0x36')]){_0x33df7e[_0xfc32('0x35')]=_[_0xfc32('0x37')](_0x33df7e[_0xfc32('0x35')],{'$or':_['map'](_0x33df7e[_0xfc32('0x2f')],function(_0x1c78a1){var _0x321aa0={};_0x321aa0[_0x1c78a1]={'$like':'%'+_0x288c33[_0xfc32('0x2c')][_0xfc32('0x36')]+'%'};return _0x321aa0;})});}_0x33df7e=_[_0xfc32('0x37')]({},_0x33df7e,_0x288c33[_0xfc32('0x41')]);return _0x20b3eb[_0xfc32('0x4b')](_0x33df7e);}})[_0xfc32('0x22')](function(_0x591c6d){if(_0x591c6d){_0x510d96=_0x591c6d['length'];if(!_0x288c33['query'][_0xfc32('0x32')](_0xfc32('0x33'))){_0x33df7e[_0xfc32('0x1d')]=qs[_0xfc32('0x1d')](_0x288c33[_0xfc32('0x2c')]['limit']);_0x33df7e[_0xfc32('0x1c')]=qs[_0xfc32('0x1c')](_0x288c33[_0xfc32('0x2c')][_0xfc32('0x1c')]);}return _0x20b3eb[_0xfc32('0x4b')](_0x33df7e);}})['then'](function(_0xfbaa50){if(_0xfbaa50){return _0xfbaa50?{'count':_0x510d96,'rows':_0xfbaa50}:null;}})[_0xfc32('0x22')](respondWithResult(_0x544929,null))[_0xfc32('0x3d')](handleError(_0x544929,null));};
\ No newline at end of file
index 6471f89..f8ca834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa49=['../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x2ada90,_0x38afba){var _0x27aed5=function(_0xd7d13b){while(--_0xd7d13b){_0x2ada90['push'](_0x2ada90['shift']());}};_0x27aed5(++_0x38afba);}(_0xfa49,0x12c));var _0x9fa4=function(_0x1d996d,_0x509248){_0x1d996d=_0x1d996d-0x0;var _0xb78fb1=_0xfa49[_0x1d996d];return _0xb78fb1;};'use strict';var _=require(_0x9fa4('0x0'));var util=require(_0x9fa4('0x1'));var logger=require(_0x9fa4('0x2'))(_0x9fa4('0x3'));var moment=require(_0x9fa4('0x4'));var BPromise=require(_0x9fa4('0x5'));var rp=require(_0x9fa4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9fa4('0x7'));var config=require(_0x9fa4('0x8'));var attributes=require(_0x9fa4('0x9'));module[_0x9fa4('0xa')]=function(_0x57e8a9,_0x5c7e6a){return _0x57e8a9[_0x9fa4('0xb')](_0x9fa4('0xc'),attributes,{'tableName':_0x9fa4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1e75=['path','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','../../config/logger','moment','bluebird','request-promise'];(function(_0x315e98,_0x2f1693){var _0x3c3b60=function(_0x439bd8){while(--_0x439bd8){_0x315e98['push'](_0x315e98['shift']());}};_0x3c3b60(++_0x2f1693);}(_0x1e75,0x9e));var _0x51e7=function(_0x5d38ed,_0x2fa1b3){_0x5d38ed=_0x5d38ed-0x0;var _0x4dc588=_0x1e75[_0x5d38ed];return _0x4dc588;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x51e7('0x0'))('api');var moment=require(_0x51e7('0x1'));var BPromise=require(_0x51e7('0x2'));var rp=require(_0x51e7('0x3'));var fs=require('fs');var path=require(_0x51e7('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x51e7('0x5')]=function(_0x3f7b41,_0x1b7b5c){return _0x3f7b41[_0x51e7('0x6')](_0x51e7('0x7'),attributes,{'tableName':_0x51e7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7ec6494..f325a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x422a=['result','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SugarcrmConfiguration,\x20%s,\x20%s'];(function(_0x388919,_0x2dd828){var _0x409405=function(_0x941e5b){while(--_0x941e5b){_0x388919['push'](_0x388919['shift']());}};_0x409405(++_0x2dd828);}(_0x422a,0x1e5));var _0xa422=function(_0x121b00,_0x28eeb5){_0x121b00=_0x121b00-0x0;var _0x1439eb=_0x422a[_0x121b00];return _0x1439eb;};'use strict';var _=require(_0xa422('0x0'));var util=require(_0xa422('0x1'));var moment=require(_0xa422('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa422('0x3'))['db'];var utils=require(_0xa422('0x4'));var logger=require(_0xa422('0x5'))(_0xa422('0x6'));var config=require(_0xa422('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa422('0x8')][_0xa422('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d811d,_0x156b3e,_0x114049){return new BPromise(function(_0x479159,_0x49512a){return client[_0xa422('0xa')](_0x4d811d,_0x114049)[_0xa422('0xb')](function(_0x34eab4){logger[_0xa422('0xc')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x156b3e,_0xa422('0xd'));logger[_0xa422('0xe')](_0xa422('0xf'),_0x156b3e,_0xa422('0xd'),JSON[_0xa422('0x10')](_0x34eab4));if(_0x34eab4[_0xa422('0x11')]){if(_0x34eab4[_0xa422('0x11')][_0xa422('0x12')]===0x1f4){logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x156b3e,_0x34eab4[_0xa422('0x11')][_0xa422('0x13')]);return _0x49512a(_0x34eab4[_0xa422('0x11')][_0xa422('0x13')]);}logger['error'](_0xa422('0x14'),_0x156b3e,_0x34eab4[_0xa422('0x11')][_0xa422('0x13')]);return _0x479159(_0x34eab4[_0xa422('0x11')]['message']);}else{logger[_0xa422('0xc')](_0xa422('0x14'),_0x156b3e,'request\x20sent');_0x479159(_0x34eab4[_0xa422('0x15')]['message']);}})[_0xa422('0x16')](function(_0x472f01){logger[_0xa422('0x11')](_0xa422('0x14'),_0x156b3e,_0x472f01);_0x49512a(_0x472f01);});});}
\ No newline at end of file
+var _0x550b=['lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','SugarcrmConfiguration,\x20%s,\x20%s','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x180ac2,_0x219d65){var _0xfcaede=function(_0x728ebe){while(--_0x728ebe){_0x180ac2['push'](_0x180ac2['shift']());}};_0xfcaede(++_0x219d65);}(_0x550b,0xdc));var _0xb550=function(_0x4ae625,_0xf396d0){_0x4ae625=_0x4ae625-0x0;var _0x31accf=_0x550b[_0x4ae625];return _0x31accf;};'use strict';var _=require(_0xb550('0x0'));var util=require(_0xb550('0x1'));var moment=require('moment');var BPromise=require(_0xb550('0x2'));var rs=require(_0xb550('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb550('0x4'));var logger=require(_0xb550('0x5'))('rpc');var config=require(_0xb550('0x6'));var jayson=require(_0xb550('0x7'));var client=jayson[_0xb550('0x8')][_0xb550('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x343b88,_0x54bc97,_0x4fd874){return new BPromise(function(_0x71bcc3,_0x1f88f9){return client['request'](_0x343b88,_0x4fd874)[_0xb550('0xa')](function(_0x3b17f0){logger[_0xb550('0xb')](_0xb550('0xc'),_0x54bc97,'request\x20sent');logger[_0xb550('0xd')](_0xb550('0xe'),_0x54bc97,'request\x20sent',JSON[_0xb550('0xf')](_0x3b17f0));if(_0x3b17f0['error']){if(_0x3b17f0[_0xb550('0x10')][_0xb550('0x11')]===0x1f4){logger[_0xb550('0x10')](_0xb550('0xc'),_0x54bc97,_0x3b17f0['error']['message']);return _0x1f88f9(_0x3b17f0[_0xb550('0x10')]['message']);}logger[_0xb550('0x10')](_0xb550('0xc'),_0x54bc97,_0x3b17f0[_0xb550('0x10')][_0xb550('0x12')]);return _0x71bcc3(_0x3b17f0[_0xb550('0x10')][_0xb550('0x12')]);}else{logger[_0xb550('0xb')](_0xb550('0xc'),_0x54bc97,_0xb550('0x13'));_0x71bcc3(_0x3b17f0[_0xb550('0x14')][_0xb550('0x12')]);}})[_0xb550('0x15')](function(_0x522f5e){logger['error'](_0xb550('0xc'),_0x54bc97,_0x522f5e);_0x1f88f9(_0x522f5e);});});}
\ No newline at end of file
index 80a89a4..dcce183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c5a=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','destroy'];(function(_0x44fd29,_0x95314e){var _0x5039bb=function(_0x14dccf){while(--_0x14dccf){_0x44fd29['push'](_0x44fd29['shift']());}};_0x5039bb(++_0x95314e);}(_0x5c5a,0x1e7));var _0xa5c5=function(_0x8cf7a6,_0x27a95b){_0x8cf7a6=_0x8cf7a6-0x0;var _0x74ea4b=_0x5c5a[_0x8cf7a6];return _0x74ea4b;};'use strict';var multer=require(_0xa5c5('0x0'));var util=require(_0xa5c5('0x1'));var path=require(_0xa5c5('0x2'));var timeout=require(_0xa5c5('0x3'));var express=require(_0xa5c5('0x4'));var router=express[_0xa5c5('0x5')]();var fs_extra=require(_0xa5c5('0x6'));var auth=require(_0xa5c5('0x7'));var interaction=require(_0xa5c5('0x8'));var config=require(_0xa5c5('0x9'));var controller=require('./intSugarcrmField.controller');router[_0xa5c5('0xa')]('/',auth[_0xa5c5('0xb')](),controller[_0xa5c5('0xc')]);router[_0xa5c5('0xa')](_0xa5c5('0xd'),auth[_0xa5c5('0xb')](),controller[_0xa5c5('0xe')]);router[_0xa5c5('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xa5c5('0xd'),auth[_0xa5c5('0xb')](),controller['update']);router['delete'](_0xa5c5('0xd'),auth[_0xa5c5('0xb')](),controller[_0xa5c5('0x10')]);module[_0xa5c5('0x11')]=router;
\ No newline at end of file
+var _0x7638=['multer','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x34d38c,_0x4f1295){var _0x4be108=function(_0x263e0f){while(--_0x263e0f){_0x34d38c['push'](_0x34d38c['shift']());}};_0x4be108(++_0x4f1295);}(_0x7638,0x10e));var _0x8763=function(_0x48dabb,_0xe8f39a){_0x48dabb=_0x48dabb-0x0;var _0x1a8809=_0x7638[_0x48dabb];return _0x1a8809;};'use strict';var multer=require(_0x8763('0x0'));var util=require('util');var path=require(_0x8763('0x1'));var timeout=require(_0x8763('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8763('0x3'));var auth=require(_0x8763('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8763('0x5'));var controller=require(_0x8763('0x6'));router[_0x8763('0x7')]('/',auth[_0x8763('0x8')](),controller['index']);router[_0x8763('0x7')](_0x8763('0x9'),auth[_0x8763('0x8')](),controller[_0x8763('0xa')]);router[_0x8763('0xb')]('/',auth[_0x8763('0x8')](),controller[_0x8763('0xc')]);router[_0x8763('0xd')](_0x8763('0x9'),auth[_0x8763('0x8')](),controller[_0x8763('0xe')]);router[_0x8763('0xf')](_0x8763('0x9'),auth[_0x8763('0x8')](),controller[_0x8763('0x10')]);module[_0x8763('0x11')]=router;
\ No newline at end of file
index 3627279..c333351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef2c=['STRING','customVariable','BOOLEAN','exports','ENUM','string','keyValue','picklist'];(function(_0x63d011,_0x541cec){var _0x167cb2=function(_0x2b76a7){while(--_0x2b76a7){_0x63d011['push'](_0x63d011['shift']());}};_0x167cb2(++_0x541cec);}(_0xef2c,0x1c3));var _0xcef2=function(_0x263b0e,_0xc6479f){_0x263b0e=_0x263b0e-0x0;var _0x113fee=_0xef2c[_0x263b0e];return _0x113fee;};'use strict';var Sequelize=require('sequelize');module[_0xcef2('0x0')]={'type':{'type':Sequelize[_0xcef2('0x1')](_0xcef2('0x2'),'variable','customVariable',_0xcef2('0x3'),_0xcef2('0x4')),'defaultValue':_0xcef2('0x2')},'content':{'type':Sequelize[_0xcef2('0x5')]},'key':{'type':Sequelize[_0xcef2('0x5')]},'keyType':{'type':Sequelize[_0xcef2('0x1')](_0xcef2('0x2'),'variable',_0xcef2('0x6'))},'keyContent':{'type':Sequelize[_0xcef2('0x5')]},'idField':{'type':Sequelize[_0xcef2('0x5')]},'nameField':{'type':Sequelize[_0xcef2('0x5')]},'customField':{'type':Sequelize[_0xcef2('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcef2('0x5')]}};
\ No newline at end of file
+var _0xfb3e=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','picklist','STRING'];(function(_0x31767b,_0x263f29){var _0x216f86=function(_0x5dcb0d){while(--_0x5dcb0d){_0x31767b['push'](_0x31767b['shift']());}};_0x216f86(++_0x263f29);}(_0xfb3e,0x17b));var _0xefb3=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xfb3e[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0xefb3('0x0'));module[_0xefb3('0x1')]={'type':{'type':Sequelize[_0xefb3('0x2')](_0xefb3('0x3'),_0xefb3('0x4'),_0xefb3('0x5'),'keyValue',_0xefb3('0x6')),'defaultValue':_0xefb3('0x3')},'content':{'type':Sequelize[_0xefb3('0x7')]},'key':{'type':Sequelize[_0xefb3('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0xefb3('0x3'),_0xefb3('0x4'),_0xefb3('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xefb3('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xefb3('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xefb3('0x7')]}};
\ No newline at end of file
index ad1aff7..75ce6c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9160=['rows','catch','show','find','create','body','params','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','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','sendStatus','status','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SugarcrmField','fieldName','keys','filters','intersection','model','query','attributes','fields','length','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','includeAll','findAll'];(function(_0xcbf451,_0x1e3a9a){var _0x49a88a=function(_0x5527dd){while(--_0x5527dd){_0xcbf451['push'](_0xcbf451['shift']());}};_0x49a88a(++_0x1e3a9a);}(_0x9160,0x97));var _0x0916=function(_0x376582,_0x5353d6){_0x376582=_0x376582-0x0;var _0x29f923=_0x9160[_0x376582];return _0x29f923;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0916('0x0'));var zipdir=require(_0x0916('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0916('0x2'));var moment=require(_0x0916('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0916('0x4'));var util=require(_0x0916('0x5'));var path=require(_0x0916('0x6'));var sox=require(_0x0916('0x7'));var csv=require('to-csv');var ejs=require(_0x0916('0x8'));var fs=require('fs');var fs_extra=require(_0x0916('0x9'));var _=require(_0x0916('0xa'));var squel=require('squel');var crypto=require(_0x0916('0xb'));var jsforce=require(_0x0916('0xc'));var deskjs=require(_0x0916('0xd'));var toCsv=require(_0x0916('0xe'));var querystring=require('querystring');var Papa=require(_0x0916('0xf'));var Redis=require(_0x0916('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x0916('0x11'));var as=require(_0x0916('0x12'));var hardwareService=require(_0x0916('0x13'));var logger=require(_0x0916('0x14'))(_0x0916('0x15'));var utils=require(_0x0916('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0916('0x17'));var db=require(_0x0916('0x18'))['db'];function respondWithStatusCode(_0x1bda4a,_0x340944){_0x340944=_0x340944||0xcc;return function(_0x5c89ba){if(_0x5c89ba){return _0x1bda4a[_0x0916('0x19')](_0x340944);}return _0x1bda4a[_0x0916('0x1a')](_0x340944)['end']();};}function respondWithResult(_0x19e0a9,_0x523652){_0x523652=_0x523652||0xc8;return function(_0x4eb733){if(_0x4eb733){return _0x19e0a9[_0x0916('0x1a')](_0x523652)[_0x0916('0x1b')](_0x4eb733);}};}function respondWithFilteredResult(_0x25a49f,_0x33fcd7){return function(_0x2ecac6){if(_0x2ecac6){var _0xbf2b81=typeof _0x33fcd7[_0x0916('0x1c')]===_0x0916('0x1d')&&typeof _0x33fcd7[_0x0916('0x1e')]===_0x0916('0x1d');var _0x4fe8db=_0x2ecac6[_0x0916('0x1f')];var _0x1f91ea=_0xbf2b81?0x0:_0x33fcd7['offset'];var _0x45661b=_0xbf2b81?_0x2ecac6['count']:_0x33fcd7['offset']+_0x33fcd7[_0x0916('0x1e')];var _0x2a842d;if(_0x45661b>=_0x4fe8db){_0x45661b=_0x4fe8db;_0x2a842d=0xc8;}else{_0x2a842d=0xce;}_0x25a49f[_0x0916('0x1a')](_0x2a842d);return _0x25a49f['set']('Content-Range',_0x1f91ea+'-'+_0x45661b+'/'+_0x4fe8db)[_0x0916('0x1b')](_0x2ecac6);}return null;};}function patchUpdates(_0x188f7d){return function(_0x494df0){try{jsonpatch[_0x0916('0x20')](_0x494df0,_0x188f7d,!![]);}catch(_0x3acf17){return BPromise[_0x0916('0x21')](_0x3acf17);}return _0x494df0[_0x0916('0x22')]();};}function saveUpdates(_0x2410a4,_0x5e60e3){return function(_0x439e3a){if(_0x439e3a){return _0x439e3a[_0x0916('0x23')](_0x2410a4)[_0x0916('0x24')](function(_0x319be7){return _0x319be7;});}return null;};}function removeEntity(_0x5500a0,_0x59031d){return function(_0x5db9f3){if(_0x5db9f3){return _0x5db9f3[_0x0916('0x25')]()[_0x0916('0x24')](function(){_0x5500a0[_0x0916('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x265d27,_0x53b06d){return function(_0x298a94){if(!_0x298a94){_0x265d27[_0x0916('0x19')](0x194);}return _0x298a94;};}function handleError(_0x3fa0da,_0x351ff0){_0x351ff0=_0x351ff0||0x1f4;return function(_0x4ab305){logger[_0x0916('0x26')](_0x4ab305[_0x0916('0x27')]);if(_0x4ab305[_0x0916('0x28')]){delete _0x4ab305[_0x0916('0x28')];}_0x3fa0da[_0x0916('0x1a')](_0x351ff0)[_0x0916('0x29')](_0x4ab305);};}exports[_0x0916('0x2a')]=function(_0x5ec151,_0x1bb078){var _0x439790={},_0x46155a={},_0x366f1f={'count':0x0,'rows':[]};var _0x3e30c3=_[_0x0916('0x2b')](db[_0x0916('0x2c')]['rawAttributes'],function(_0x494dca){return{'name':_0x494dca[_0x0916('0x2d')],'type':_0x494dca['type']['key']};});_0x46155a['model']=_[_0x0916('0x2b')](_0x3e30c3,'name');_0x46155a['query']=_[_0x0916('0x2e')](_0x5ec151['query']);_0x46155a[_0x0916('0x2f')]=_[_0x0916('0x30')](_0x46155a[_0x0916('0x31')],_0x46155a[_0x0916('0x32')]);_0x439790[_0x0916('0x33')]=_['intersection'](_0x46155a[_0x0916('0x31')],qs[_0x0916('0x34')](_0x5ec151[_0x0916('0x32')][_0x0916('0x34')]));_0x439790[_0x0916('0x33')]=_0x439790[_0x0916('0x33')][_0x0916('0x35')]?_0x439790[_0x0916('0x33')]:_0x46155a[_0x0916('0x31')];if(!_0x5ec151[_0x0916('0x32')]['hasOwnProperty'](_0x0916('0x36'))){_0x439790[_0x0916('0x1e')]=qs[_0x0916('0x1e')](_0x5ec151[_0x0916('0x32')][_0x0916('0x1e')]);_0x439790[_0x0916('0x1c')]=qs[_0x0916('0x1c')](_0x5ec151[_0x0916('0x32')][_0x0916('0x1c')]);}_0x439790[_0x0916('0x37')]=qs[_0x0916('0x38')](_0x5ec151[_0x0916('0x32')][_0x0916('0x38')]);_0x439790['where']=qs[_0x0916('0x2f')](_['pick'](_0x5ec151['query'],_0x46155a[_0x0916('0x2f')]),_0x3e30c3);if(_0x5ec151[_0x0916('0x32')][_0x0916('0x39')]){_0x439790[_0x0916('0x3a')]=_[_0x0916('0x3b')](_0x439790[_0x0916('0x3a')],{'$or':_[_0x0916('0x2b')](_0x3e30c3,function(_0x342a3d){if(_0x342a3d[_0x0916('0x3c')]!==_0x0916('0x3d')){var _0xfc28={};_0xfc28[_0x342a3d['name']]={'$like':'%'+_0x5ec151[_0x0916('0x32')][_0x0916('0x39')]+'%'};return _0xfc28;}})});}_0x439790=_[_0x0916('0x3b')]({},_0x439790,_0x5ec151[_0x0916('0x3e')]);var _0x13e085={'where':_0x439790['where']};return db[_0x0916('0x2c')][_0x0916('0x1f')](_0x13e085)['then'](function(_0x556c7b){_0x366f1f[_0x0916('0x1f')]=_0x556c7b;if(_0x5ec151[_0x0916('0x32')][_0x0916('0x3f')]){_0x439790['include']=[{'all':!![]}];}return db['SugarcrmField'][_0x0916('0x40')](_0x439790);})['then'](function(_0x1f7eab){_0x366f1f[_0x0916('0x41')]=_0x1f7eab;return _0x366f1f;})[_0x0916('0x24')](respondWithFilteredResult(_0x1bb078,_0x439790))[_0x0916('0x42')](handleError(_0x1bb078,null));};exports[_0x0916('0x43')]=function(_0x393edb,_0x4ff58d){var _0x2bbb78={'raw':!![],'where':{'id':_0x393edb['params']['id']}},_0x34118b={};_0x34118b[_0x0916('0x31')]=_['keys'](db[_0x0916('0x2c')]['rawAttributes']);_0x34118b[_0x0916('0x32')]=_[_0x0916('0x2e')](_0x393edb['query']);_0x34118b[_0x0916('0x2f')]=_['intersection'](_0x34118b[_0x0916('0x31')],_0x34118b[_0x0916('0x32')]);_0x2bbb78[_0x0916('0x33')]=_[_0x0916('0x30')](_0x34118b['model'],qs[_0x0916('0x34')](_0x393edb[_0x0916('0x32')][_0x0916('0x34')]));_0x2bbb78[_0x0916('0x33')]=_0x2bbb78[_0x0916('0x33')][_0x0916('0x35')]?_0x2bbb78['attributes']:_0x34118b['model'];if(_0x393edb[_0x0916('0x32')][_0x0916('0x3f')]){_0x2bbb78['include']=[{'all':!![]}];}_0x2bbb78=_[_0x0916('0x3b')]({},_0x2bbb78,_0x393edb['options']);return db['SugarcrmField'][_0x0916('0x44')](_0x2bbb78)[_0x0916('0x24')](handleEntityNotFound(_0x4ff58d,null))[_0x0916('0x24')](respondWithResult(_0x4ff58d,null))[_0x0916('0x42')](handleError(_0x4ff58d,null));};exports[_0x0916('0x45')]=function(_0x456997,_0x3b0121){return db['SugarcrmField'][_0x0916('0x45')](_0x456997[_0x0916('0x46')],{})[_0x0916('0x24')](respondWithResult(_0x3b0121,0xc9))['catch'](handleError(_0x3b0121,null));};exports['update']=function(_0x11704b,_0x43d4f6){if(_0x11704b[_0x0916('0x46')]['id']){delete _0x11704b['body']['id'];}return db[_0x0916('0x2c')][_0x0916('0x44')]({'where':{'id':_0x11704b[_0x0916('0x47')]['id']}})[_0x0916('0x24')](handleEntityNotFound(_0x43d4f6,null))[_0x0916('0x24')](saveUpdates(_0x11704b['body'],null))[_0x0916('0x24')](respondWithResult(_0x43d4f6,null))['catch'](handleError(_0x43d4f6,null));};exports[_0x0916('0x25')]=function(_0x5d9616,_0x44c668){return db[_0x0916('0x2c')]['find']({'where':{'id':_0x5d9616['params']['id']}})['then'](handleEntityNotFound(_0x44c668,null))[_0x0916('0x24')](removeEntity(_0x44c668,null))[_0x0916('0x42')](handleError(_0x44c668,null));};
\ No newline at end of file
+var _0xc2e8=['fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','include','rows','catch','params','create','body','find','eml-format','rimraf','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','end','error','stack','name','send','map','SugarcrmField','rawAttributes'];(function(_0x41d349,_0x383a7d){var _0x49ade5=function(_0x105062){while(--_0x105062){_0x41d349['push'](_0x41d349['shift']());}};_0x49ade5(++_0x383a7d);}(_0xc2e8,0xef));var _0x8c2e=function(_0x53b4dc,_0x51f549){_0x53b4dc=_0x53b4dc-0x0;var _0x3b2b68=_0xc2e8[_0x53b4dc];return _0x3b2b68;};'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(_0x8c2e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8c2e('0x4'));var util=require('util');var path=require(_0x8c2e('0x5'));var sox=require('sox');var csv=require(_0x8c2e('0x6'));var ejs=require(_0x8c2e('0x7'));var fs=require('fs');var fs_extra=require(_0x8c2e('0x8'));var _=require(_0x8c2e('0x9'));var squel=require('squel');var crypto=require(_0x8c2e('0xa'));var jsforce=require(_0x8c2e('0xb'));var deskjs=require(_0x8c2e('0xc'));var toCsv=require(_0x8c2e('0x6'));var querystring=require(_0x8c2e('0xd'));var Papa=require(_0x8c2e('0xe'));var Redis=require(_0x8c2e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8c2e('0x10'));var hardwareService=require(_0x8c2e('0x11'));var logger=require(_0x8c2e('0x12'))(_0x8c2e('0x13'));var utils=require(_0x8c2e('0x14'));var config=require(_0x8c2e('0x15'));var licenseUtil=require(_0x8c2e('0x16'));var db=require(_0x8c2e('0x17'))['db'];function respondWithStatusCode(_0x18238c,_0x2e3f39){_0x2e3f39=_0x2e3f39||0xcc;return function(_0x16dc64){if(_0x16dc64){return _0x18238c[_0x8c2e('0x18')](_0x2e3f39);}return _0x18238c[_0x8c2e('0x19')](_0x2e3f39)['end']();};}function respondWithResult(_0x45482a,_0x49e6dd){_0x49e6dd=_0x49e6dd||0xc8;return function(_0xca184b){if(_0xca184b){return _0x45482a[_0x8c2e('0x19')](_0x49e6dd)[_0x8c2e('0x1a')](_0xca184b);}};}function respondWithFilteredResult(_0x4ca187,_0x501721){return function(_0x4b243b){if(_0x4b243b){var _0x166b58=typeof _0x501721[_0x8c2e('0x1b')]===_0x8c2e('0x1c')&&typeof _0x501721[_0x8c2e('0x1d')]===_0x8c2e('0x1c');var _0x5620df=_0x4b243b[_0x8c2e('0x1e')];var _0x2ffca7=_0x166b58?0x0:_0x501721['offset'];var _0x5b66c8=_0x166b58?_0x4b243b[_0x8c2e('0x1e')]:_0x501721[_0x8c2e('0x1b')]+_0x501721[_0x8c2e('0x1d')];var _0x1e0bf1;if(_0x5b66c8>=_0x5620df){_0x5b66c8=_0x5620df;_0x1e0bf1=0xc8;}else{_0x1e0bf1=0xce;}_0x4ca187[_0x8c2e('0x19')](_0x1e0bf1);return _0x4ca187[_0x8c2e('0x1f')]('Content-Range',_0x2ffca7+'-'+_0x5b66c8+'/'+_0x5620df)[_0x8c2e('0x1a')](_0x4b243b);}return null;};}function patchUpdates(_0x1d20ea){return function(_0x5a9a09){try{jsonpatch[_0x8c2e('0x20')](_0x5a9a09,_0x1d20ea,!![]);}catch(_0x23f6ee){return BPromise[_0x8c2e('0x21')](_0x23f6ee);}return _0x5a9a09[_0x8c2e('0x22')]();};}function saveUpdates(_0x11f67a,_0x327edd){return function(_0x5b6c64){if(_0x5b6c64){return _0x5b6c64['update'](_0x11f67a)['then'](function(_0x1c044b){return _0x1c044b;});}return null;};}function removeEntity(_0x17e89f,_0x2e83f2){return function(_0x536ce9){if(_0x536ce9){return _0x536ce9[_0x8c2e('0x23')]()[_0x8c2e('0x24')](function(){_0x17e89f[_0x8c2e('0x19')](0xcc)[_0x8c2e('0x25')]();});}};}function handleEntityNotFound(_0x48140c,_0x49fea7){return function(_0x4bd894){if(!_0x4bd894){_0x48140c[_0x8c2e('0x18')](0x194);}return _0x4bd894;};}function handleError(_0x1753fc,_0x206352){_0x206352=_0x206352||0x1f4;return function(_0x250226){logger[_0x8c2e('0x26')](_0x250226[_0x8c2e('0x27')]);if(_0x250226[_0x8c2e('0x28')]){delete _0x250226[_0x8c2e('0x28')];}_0x1753fc[_0x8c2e('0x19')](_0x206352)[_0x8c2e('0x29')](_0x250226);};}exports['index']=function(_0x55a0a0,_0x52f82d){var _0x1689fe={},_0x5880e6={},_0x11e05f={'count':0x0,'rows':[]};var _0x6a1219=_[_0x8c2e('0x2a')](db[_0x8c2e('0x2b')][_0x8c2e('0x2c')],function(_0x7a7422){return{'name':_0x7a7422[_0x8c2e('0x2d')],'type':_0x7a7422[_0x8c2e('0x2e')][_0x8c2e('0x2f')]};});_0x5880e6[_0x8c2e('0x30')]=_[_0x8c2e('0x2a')](_0x6a1219,_0x8c2e('0x28'));_0x5880e6[_0x8c2e('0x31')]=_[_0x8c2e('0x32')](_0x55a0a0[_0x8c2e('0x31')]);_0x5880e6[_0x8c2e('0x33')]=_[_0x8c2e('0x34')](_0x5880e6[_0x8c2e('0x30')],_0x5880e6[_0x8c2e('0x31')]);_0x1689fe[_0x8c2e('0x35')]=_[_0x8c2e('0x34')](_0x5880e6[_0x8c2e('0x30')],qs[_0x8c2e('0x36')](_0x55a0a0[_0x8c2e('0x31')][_0x8c2e('0x36')]));_0x1689fe[_0x8c2e('0x35')]=_0x1689fe[_0x8c2e('0x35')][_0x8c2e('0x37')]?_0x1689fe[_0x8c2e('0x35')]:_0x5880e6[_0x8c2e('0x30')];if(!_0x55a0a0[_0x8c2e('0x31')]['hasOwnProperty'](_0x8c2e('0x38'))){_0x1689fe[_0x8c2e('0x1d')]=qs[_0x8c2e('0x1d')](_0x55a0a0['query'][_0x8c2e('0x1d')]);_0x1689fe[_0x8c2e('0x1b')]=qs[_0x8c2e('0x1b')](_0x55a0a0[_0x8c2e('0x31')][_0x8c2e('0x1b')]);}_0x1689fe[_0x8c2e('0x39')]=qs[_0x8c2e('0x3a')](_0x55a0a0[_0x8c2e('0x31')][_0x8c2e('0x3a')]);_0x1689fe[_0x8c2e('0x3b')]=qs['filters'](_[_0x8c2e('0x3c')](_0x55a0a0['query'],_0x5880e6[_0x8c2e('0x33')]),_0x6a1219);if(_0x55a0a0[_0x8c2e('0x31')]['filter']){_0x1689fe[_0x8c2e('0x3b')]=_[_0x8c2e('0x3d')](_0x1689fe[_0x8c2e('0x3b')],{'$or':_[_0x8c2e('0x2a')](_0x6a1219,function(_0x3e420c){if(_0x3e420c['type']!==_0x8c2e('0x3e')){var _0x2e8be4={};_0x2e8be4[_0x3e420c[_0x8c2e('0x28')]]={'$like':'%'+_0x55a0a0[_0x8c2e('0x31')][_0x8c2e('0x3f')]+'%'};return _0x2e8be4;}})});}_0x1689fe=_['merge']({},_0x1689fe,_0x55a0a0['options']);var _0x55e87c={'where':_0x1689fe[_0x8c2e('0x3b')]};return db[_0x8c2e('0x2b')][_0x8c2e('0x1e')](_0x55e87c)[_0x8c2e('0x24')](function(_0x3e450e){_0x11e05f[_0x8c2e('0x1e')]=_0x3e450e;if(_0x55a0a0[_0x8c2e('0x31')]['includeAll']){_0x1689fe[_0x8c2e('0x40')]=[{'all':!![]}];}return db[_0x8c2e('0x2b')]['findAll'](_0x1689fe);})[_0x8c2e('0x24')](function(_0x2fcd0){_0x11e05f[_0x8c2e('0x41')]=_0x2fcd0;return _0x11e05f;})[_0x8c2e('0x24')](respondWithFilteredResult(_0x52f82d,_0x1689fe))[_0x8c2e('0x42')](handleError(_0x52f82d,null));};exports['show']=function(_0x5cee67,_0x47d994){var _0x5e4e0c={'raw':!![],'where':{'id':_0x5cee67[_0x8c2e('0x43')]['id']}},_0x3e0e34={};_0x3e0e34[_0x8c2e('0x30')]=_[_0x8c2e('0x32')](db[_0x8c2e('0x2b')][_0x8c2e('0x2c')]);_0x3e0e34[_0x8c2e('0x31')]=_['keys'](_0x5cee67[_0x8c2e('0x31')]);_0x3e0e34[_0x8c2e('0x33')]=_['intersection'](_0x3e0e34[_0x8c2e('0x30')],_0x3e0e34[_0x8c2e('0x31')]);_0x5e4e0c['attributes']=_[_0x8c2e('0x34')](_0x3e0e34[_0x8c2e('0x30')],qs[_0x8c2e('0x36')](_0x5cee67[_0x8c2e('0x31')][_0x8c2e('0x36')]));_0x5e4e0c[_0x8c2e('0x35')]=_0x5e4e0c[_0x8c2e('0x35')]['length']?_0x5e4e0c['attributes']:_0x3e0e34[_0x8c2e('0x30')];if(_0x5cee67['query']['includeAll']){_0x5e4e0c[_0x8c2e('0x40')]=[{'all':!![]}];}_0x5e4e0c=_[_0x8c2e('0x3d')]({},_0x5e4e0c,_0x5cee67['options']);return db['SugarcrmField']['find'](_0x5e4e0c)[_0x8c2e('0x24')](handleEntityNotFound(_0x47d994,null))['then'](respondWithResult(_0x47d994,null))[_0x8c2e('0x42')](handleError(_0x47d994,null));};exports['create']=function(_0x5e5bc5,_0x588075){return db[_0x8c2e('0x2b')][_0x8c2e('0x44')](_0x5e5bc5['body'],{})[_0x8c2e('0x24')](respondWithResult(_0x588075,0xc9))[_0x8c2e('0x42')](handleError(_0x588075,null));};exports['update']=function(_0x41612e,_0x347f15){if(_0x41612e[_0x8c2e('0x45')]['id']){delete _0x41612e['body']['id'];}return db[_0x8c2e('0x2b')][_0x8c2e('0x46')]({'where':{'id':_0x41612e[_0x8c2e('0x43')]['id']}})[_0x8c2e('0x24')](handleEntityNotFound(_0x347f15,null))['then'](saveUpdates(_0x41612e[_0x8c2e('0x45')],null))[_0x8c2e('0x24')](respondWithResult(_0x347f15,null))['catch'](handleError(_0x347f15,null));};exports['destroy']=function(_0x2f577f,_0x5ec234){return db['SugarcrmField'][_0x8c2e('0x46')]({'where':{'id':_0x2f577f[_0x8c2e('0x43')]['id']}})[_0x8c2e('0x24')](handleEntityNotFound(_0x5ec234,null))[_0x8c2e('0x24')](removeEntity(_0x5ec234,null))[_0x8c2e('0x42')](handleError(_0x5ec234,null));};
\ No newline at end of file
index 75c2d16..dda8f8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaab8=['api','bluebird','request-promise','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','sugarcrm_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0xaab8,0x1b0));var _0x8aab=function(_0x3ec747,_0x948158){_0x3ec747=_0x3ec747-0x0;var _0x363a2c=_0xaab8[_0x3ec747];return _0x363a2c;};'use strict';var _=require(_0x8aab('0x0'));var util=require(_0x8aab('0x1'));var logger=require(_0x8aab('0x2'))(_0x8aab('0x3'));var moment=require('moment');var BPromise=require(_0x8aab('0x4'));var rp=require(_0x8aab('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8aab('0x6'));var config=require(_0x8aab('0x7'));var attributes=require(_0x8aab('0x8'));module[_0x8aab('0x9')]=function(_0x35ea3b,_0x441ce7){return _0x35ea3b[_0x8aab('0xa')](_0x8aab('0xb'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0x8aab('0xc'),'fields':[_0x8aab('0xd'),_0x8aab('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb32c=['../../config/environment','./intSugarcrmField.attributes','exports','define','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x2d4421,_0x15a84f){var _0x2d3b01=function(_0xb9e94c){while(--_0xb9e94c){_0x2d4421['push'](_0x2d4421['shift']());}};_0x2d3b01(++_0x15a84f);}(_0xb32c,0x125));var _0xcb32=function(_0x4079f2,_0x18d82f){_0x4079f2=_0x4079f2-0x0;var _0x37daea=_0xb32c[_0x4079f2];return _0x37daea;};'use strict';var _=require(_0xcb32('0x0'));var util=require('util');var logger=require(_0xcb32('0x1'))(_0xcb32('0x2'));var moment=require(_0xcb32('0x3'));var BPromise=require('bluebird');var rp=require(_0xcb32('0x4'));var fs=require('fs');var path=require(_0xcb32('0x5'));var rimraf=require(_0xcb32('0x6'));var config=require(_0xcb32('0x7'));var attributes=require(_0xcb32('0x8'));module[_0xcb32('0x9')]=function(_0x50a88e,_0x100d08){return _0x50a88e[_0xcb32('0xa')]('SugarcrmField',attributes,{'tableName':_0xcb32('0xb'),'paranoid':![],'indexes':[{'name':_0xcb32('0xc'),'fields':[_0xcb32('0xd'),_0xcb32('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3a1ca15..06ddfb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ea4=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','info','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','error','code','SugarcrmField,\x20%s,\x20%s','message','util','moment'];(function(_0x5c62c6,_0x903ff1){var _0x5df024=function(_0x56dc6f){while(--_0x56dc6f){_0x5c62c6['push'](_0x5c62c6['shift']());}};_0x5df024(++_0x903ff1);}(_0x9ea4,0x17a));var _0x49ea=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9ea4[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x49ea('0x0'));var moment=require(_0x49ea('0x1'));var BPromise=require(_0x49ea('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x49ea('0x3'));var db=require(_0x49ea('0x4'))['db'];var utils=require(_0x49ea('0x5'));var logger=require(_0x49ea('0x6'))(_0x49ea('0x7'));var config=require(_0x49ea('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4fbea0,_0x9114ab,_0x53c277){return new BPromise(function(_0x2053d0,_0x5c1acf){return client[_0x49ea('0x9')](_0x4fbea0,_0x53c277)[_0x49ea('0xa')](function(_0x67ee71){logger[_0x49ea('0xb')]('SugarcrmField,\x20%s,\x20%s',_0x9114ab,_0x49ea('0xc'));logger[_0x49ea('0xd')](_0x49ea('0xe'),_0x9114ab,_0x49ea('0xc'),JSON['stringify'](_0x67ee71));if(_0x67ee71[_0x49ea('0xf')]){if(_0x67ee71[_0x49ea('0xf')][_0x49ea('0x10')]===0x1f4){logger['error'](_0x49ea('0x11'),_0x9114ab,_0x67ee71[_0x49ea('0xf')][_0x49ea('0x12')]);return _0x5c1acf(_0x67ee71[_0x49ea('0xf')][_0x49ea('0x12')]);}logger[_0x49ea('0xf')](_0x49ea('0x11'),_0x9114ab,_0x67ee71[_0x49ea('0xf')][_0x49ea('0x12')]);return _0x2053d0(_0x67ee71[_0x49ea('0xf')][_0x49ea('0x12')]);}else{logger['info'](_0x49ea('0x11'),_0x9114ab,'request\x20sent');_0x2053d0(_0x67ee71['result'][_0x49ea('0x12')]);}})['catch'](function(_0x166677){logger[_0x49ea('0xf')](_0x49ea('0x11'),_0x9114ab,_0x166677);_0x5c1acf(_0x166677);});});}
\ No newline at end of file
+var _0x718a=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2eb5bc,_0x4634c6){var _0x51c7b1=function(_0x1af430){while(--_0x1af430){_0x2eb5bc['push'](_0x2eb5bc['shift']());}};_0x51c7b1(++_0x4634c6);}(_0x718a,0x1e5));var _0xa718=function(_0x105912,_0x3a1ce1){_0x105912=_0x105912-0x0;var _0xbede54=_0x718a[_0x105912];return _0xbede54;};'use strict';var _=require(_0xa718('0x0'));var util=require('util');var moment=require(_0xa718('0x1'));var BPromise=require(_0xa718('0x2'));var rs=require(_0xa718('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa718('0x4'))['db'];var utils=require(_0xa718('0x5'));var logger=require(_0xa718('0x6'))(_0xa718('0x7'));var config=require('../../config/environment');var jayson=require(_0xa718('0x8'));var client=jayson[_0xa718('0x9')][_0xa718('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1941dd,_0xa8cdf9,_0x51e68e){return new BPromise(function(_0xe6a68,_0x5b9950){return client['request'](_0x1941dd,_0x51e68e)[_0xa718('0xb')](function(_0x361f44){logger[_0xa718('0xc')](_0xa718('0xd'),_0xa8cdf9,_0xa718('0xe'));logger[_0xa718('0xf')](_0xa718('0x10'),_0xa8cdf9,_0xa718('0xe'),JSON[_0xa718('0x11')](_0x361f44));if(_0x361f44['error']){if(_0x361f44[_0xa718('0x12')][_0xa718('0x13')]===0x1f4){logger[_0xa718('0x12')](_0xa718('0xd'),_0xa8cdf9,_0x361f44['error'][_0xa718('0x14')]);return _0x5b9950(_0x361f44[_0xa718('0x12')][_0xa718('0x14')]);}logger[_0xa718('0x12')](_0xa718('0xd'),_0xa8cdf9,_0x361f44['error'][_0xa718('0x14')]);return _0xe6a68(_0x361f44[_0xa718('0x12')]['message']);}else{logger[_0xa718('0xc')](_0xa718('0xd'),_0xa8cdf9,_0xa718('0xe'));_0xe6a68(_0x361f44['result'][_0xa718('0x14')]);}})[_0xa718('0x15')](function(_0x53522f){logger[_0xa718('0x12')](_0xa718('0xd'),_0xa8cdf9,_0x53522f);_0x5b9950(_0x53522f);});});}
\ No newline at end of file
index 43e966d..56dc11d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2da1=['delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','/:id/fields','getFields','post','create','update'];(function(_0x136a01,_0x3e0f10){var _0x39ccee=function(_0x1fa530){while(--_0x1fa530){_0x136a01['push'](_0x136a01['shift']());}};_0x39ccee(++_0x3e0f10);}(_0x2da1,0xca));var _0x12da=function(_0x45862f,_0xf5f0a6){_0x45862f=_0x45862f-0x0;var _0x35b20b=_0x2da1[_0x45862f];return _0x35b20b;};'use strict';var multer=require(_0x12da('0x0'));var util=require(_0x12da('0x1'));var path=require('path');var timeout=require(_0x12da('0x2'));var express=require('express');var router=express[_0x12da('0x3')]();var fs_extra=require(_0x12da('0x4'));var auth=require(_0x12da('0x5'));var interaction=require(_0x12da('0x6'));var config=require('../../config/environment');var controller=require(_0x12da('0x7'));router[_0x12da('0x8')]('/',auth[_0x12da('0x9')](),controller[_0x12da('0xa')]);router[_0x12da('0x8')](_0x12da('0xb'),auth[_0x12da('0x9')](),controller['show']);router[_0x12da('0x8')](_0x12da('0xc'),auth[_0x12da('0x9')](),controller['getConfigurations']);router[_0x12da('0x8')](_0x12da('0xd'),auth[_0x12da('0x9')](),controller[_0x12da('0xe')]);router[_0x12da('0xf')]('/',auth['isAuthenticated'](),controller[_0x12da('0x10')]);router['post'](_0x12da('0xc'),auth[_0x12da('0x9')](),controller['addConfiguration']);router['put'](_0x12da('0xb'),auth['isAuthenticated'](),controller[_0x12da('0x11')]);router[_0x12da('0x12')](_0x12da('0xb'),auth[_0x12da('0x9')](),controller['destroy']);module[_0x12da('0x13')]=router;
\ No newline at end of file
+var _0xc737=['put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','getConfigurations','/:id/fields','post','create','/:id/configurations','addConfiguration'];(function(_0x5a4e37,_0x32223e){var _0xb3f809=function(_0x31c1eb){while(--_0x31c1eb){_0x5a4e37['push'](_0x5a4e37['shift']());}};_0xb3f809(++_0x32223e);}(_0xc737,0x8e));var _0x7c73=function(_0x4e6ca2,_0x135ba1){_0x4e6ca2=_0x4e6ca2-0x0;var _0x1e92c8=_0xc737[_0x4e6ca2];return _0x1e92c8;};'use strict';var multer=require(_0x7c73('0x0'));var util=require(_0x7c73('0x1'));var path=require('path');var timeout=require(_0x7c73('0x2'));var express=require(_0x7c73('0x3'));var router=express[_0x7c73('0x4')]();var fs_extra=require(_0x7c73('0x5'));var auth=require(_0x7c73('0x6'));var interaction=require(_0x7c73('0x7'));var config=require(_0x7c73('0x8'));var controller=require('./intVtigerAccount.controller');router['get']('/',auth[_0x7c73('0x9')](),controller[_0x7c73('0xa')]);router[_0x7c73('0xb')](_0x7c73('0xc'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/configurations',auth['isAuthenticated'](),controller[_0x7c73('0xd')]);router[_0x7c73('0xb')](_0x7c73('0xe'),auth[_0x7c73('0x9')](),controller['getFields']);router[_0x7c73('0xf')]('/',auth['isAuthenticated'](),controller[_0x7c73('0x10')]);router[_0x7c73('0xf')](_0x7c73('0x11'),auth['isAuthenticated'](),controller[_0x7c73('0x12')]);router[_0x7c73('0x13')](_0x7c73('0xc'),auth[_0x7c73('0x9')](),controller[_0x7c73('0x14')]);router[_0x7c73('0x15')](_0x7c73('0xc'),auth[_0x7c73('0x9')](),controller['destroy']);module[_0x7c73('0x16')]=router;
\ No newline at end of file
index e198cfb..b579264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4390=['sequelize','exports','STRING','HelpDesk'];(function(_0x86d172,_0x13a4d9){var _0x1f163b=function(_0x2e38c4){while(--_0x2e38c4){_0x86d172['push'](_0x86d172['shift']());}};_0x1f163b(++_0x13a4d9);}(_0x4390,0x180));var _0x0439=function(_0x561026,_0x3195dc){_0x561026=_0x561026-0x0;var _0x4da52d=_0x4390[_0x561026];return _0x4da52d;};'use strict';var Sequelize=require(_0x0439('0x0'));module[_0x0439('0x1')]={'name':{'type':Sequelize[_0x0439('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x0439('0x2')]},'username':{'type':Sequelize[_0x0439('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0439('0x3')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x0439('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x0439('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xb2d0=['HelpDesk','sequelize','exports','STRING'];(function(_0x293440,_0x357eff){var _0x596af9=function(_0x37d50c){while(--_0x37d50c){_0x293440['push'](_0x293440['shift']());}};_0x596af9(++_0x357eff);}(_0xb2d0,0x10d));var _0x0b2d=function(_0x2f9695,_0x4f18a0){_0x2f9695=_0x2f9695-0x0;var _0x5e22aa=_0xb2d0[_0x2f9695];return _0x5e22aa;};'use strict';var Sequelize=require(_0x0b2d('0x0'));module[_0x0b2d('0x1')]={'name':{'type':Sequelize[_0x0b2d('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x0b2d('0x2')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x0b2d('0x2')],'allowNull':![],'defaultValue':_0x0b2d('0x3')},'remoteUri':{'type':Sequelize[_0x0b2d('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0x0b2d('0x2')],'allowNull':![]}};
\ No newline at end of file
index 7899b64..513c330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc02c=['../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','save','then','destroy','error','stack','name','send','VtigerAccount','rawAttributes','type','key','keys','query','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','map','VIRTUAL','merge','options','includeAll','include','rows','catch','params','find','create','update','body','getConfigurations','findOne','VtigerConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','md5','getFields','username','description','moduleName','remoteUri','accessKey','slice','substring','lastIndexOf','format','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','describe','sessionName','reference','owner','includes','remove','editable','false','startsWith','cf_','picklistValues','label','log','vTiger\x20error:\x20','test','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis'];(function(_0x459c09,_0x596ed4){var _0x2aee20=function(_0x113d25){while(--_0x113d25){_0x459c09['push'](_0x459c09['shift']());}};_0x2aee20(++_0x596ed4);}(_0xc02c,0x67));var _0xcc02=function(_0x577acd,_0x2dddb2){_0x577acd=_0x577acd-0x0;var _0x2bfd74=_0xc02c[_0x577acd];return _0x2bfd74;};'use strict';var emlformat=require(_0xcc02('0x0'));var rimraf=require(_0xcc02('0x1'));var zipdir=require(_0xcc02('0x2'));var jsonpatch=require(_0xcc02('0x3'));var rp=require(_0xcc02('0x4'));var moment=require('moment');var BPromise=require(_0xcc02('0x5'));var Mustache=require(_0xcc02('0x6'));var util=require(_0xcc02('0x7'));var path=require(_0xcc02('0x8'));var sox=require(_0xcc02('0x9'));var csv=require(_0xcc02('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcc02('0xb'));var _=require(_0xcc02('0xc'));var squel=require(_0xcc02('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xcc02('0xe'));var toCsv=require(_0xcc02('0xa'));var querystring=require(_0xcc02('0xf'));var Papa=require(_0xcc02('0x10'));var Redis=require(_0xcc02('0x11'));var authService=require(_0xcc02('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcc02('0x13'));var logger=require(_0xcc02('0x14'))(_0xcc02('0x15'));var utils=require('../../config/utils');var config=require(_0xcc02('0x16'));var licenseUtil=require(_0xcc02('0x17'));var db=require(_0xcc02('0x18'))['db'];var integrations=require(_0xcc02('0x19'));function respondWithStatusCode(_0x36bca1,_0x1ce3eb){_0x1ce3eb=_0x1ce3eb||0xcc;return function(_0x376402){if(_0x376402){return _0x36bca1[_0xcc02('0x1a')](_0x1ce3eb);}return _0x36bca1[_0xcc02('0x1b')](_0x1ce3eb)[_0xcc02('0x1c')]();};}function respondWithResult(_0x6a5e6e,_0x26491b){_0x26491b=_0x26491b||0xc8;return function(_0x2c105d){if(_0x2c105d){return _0x6a5e6e['status'](_0x26491b)[_0xcc02('0x1d')](_0x2c105d);}};}function respondWithFilteredResult(_0x469df2,_0xabad62){return function(_0x38bdcc){if(_0x38bdcc){var _0x27c9c4=typeof _0xabad62[_0xcc02('0x1e')]==='undefined'&&typeof _0xabad62['limit']==='undefined';var _0x488ca8=_0x38bdcc[_0xcc02('0x1f')];var _0x31c7db=_0x27c9c4?0x0:_0xabad62[_0xcc02('0x1e')];var _0x2ac39a=_0x27c9c4?_0x38bdcc[_0xcc02('0x1f')]:_0xabad62[_0xcc02('0x1e')]+_0xabad62[_0xcc02('0x20')];var _0x4ad401;if(_0x2ac39a>=_0x488ca8){_0x2ac39a=_0x488ca8;_0x4ad401=0xc8;}else{_0x4ad401=0xce;}_0x469df2[_0xcc02('0x1b')](_0x4ad401);return _0x469df2[_0xcc02('0x21')](_0xcc02('0x22'),_0x31c7db+'-'+_0x2ac39a+'/'+_0x488ca8)[_0xcc02('0x1d')](_0x38bdcc);}return null;};}function patchUpdates(_0x5f3e12){return function(_0x20e883){try{jsonpatch[_0xcc02('0x23')](_0x20e883,_0x5f3e12,!![]);}catch(_0x513e27){return BPromise['reject'](_0x513e27);}return _0x20e883[_0xcc02('0x24')]();};}function saveUpdates(_0x43dc6e,_0xe644d3){return function(_0x2b5033){if(_0x2b5033){return _0x2b5033['update'](_0x43dc6e)[_0xcc02('0x25')](function(_0x48ae8e){return _0x48ae8e;});}return null;};}function removeEntity(_0xc923d5,_0x29d062){return function(_0x870cd0){if(_0x870cd0){return _0x870cd0[_0xcc02('0x26')]()[_0xcc02('0x25')](function(){_0xc923d5[_0xcc02('0x1b')](0xcc)[_0xcc02('0x1c')]();});}};}function handleEntityNotFound(_0x444173,_0x33b27f){return function(_0x358170){if(!_0x358170){_0x444173[_0xcc02('0x1a')](0x194);}return _0x358170;};}function handleError(_0x478526,_0x1139a5){_0x1139a5=_0x1139a5||0x1f4;return function(_0x182dfa){logger[_0xcc02('0x27')](_0x182dfa[_0xcc02('0x28')]);if(_0x182dfa['name']){delete _0x182dfa[_0xcc02('0x29')];}_0x478526['status'](_0x1139a5)[_0xcc02('0x2a')](_0x182dfa);};}exports['index']=function(_0x5c4bc7,_0x277691){var _0x106915={},_0x141632={},_0x43d8c2={'count':0x0,'rows':[]};var _0x3cd293=_['map'](db[_0xcc02('0x2b')][_0xcc02('0x2c')],function(_0x37f181){return{'name':_0x37f181['fieldName'],'type':_0x37f181[_0xcc02('0x2d')][_0xcc02('0x2e')]};});_0x141632['model']=_['map'](_0x3cd293,_0xcc02('0x29'));_0x141632['query']=_[_0xcc02('0x2f')](_0x5c4bc7[_0xcc02('0x30')]);_0x141632['filters']=_[_0xcc02('0x31')](_0x141632['model'],_0x141632[_0xcc02('0x30')]);_0x106915[_0xcc02('0x32')]=_[_0xcc02('0x31')](_0x141632['model'],qs[_0xcc02('0x33')](_0x5c4bc7['query'][_0xcc02('0x33')]));_0x106915['attributes']=_0x106915['attributes'][_0xcc02('0x34')]?_0x106915[_0xcc02('0x32')]:_0x141632[_0xcc02('0x35')];if(!_0x5c4bc7[_0xcc02('0x30')][_0xcc02('0x36')](_0xcc02('0x37'))){_0x106915[_0xcc02('0x20')]=qs['limit'](_0x5c4bc7['query'][_0xcc02('0x20')]);_0x106915[_0xcc02('0x1e')]=qs['offset'](_0x5c4bc7[_0xcc02('0x30')][_0xcc02('0x1e')]);}_0x106915[_0xcc02('0x38')]=qs[_0xcc02('0x39')](_0x5c4bc7[_0xcc02('0x30')][_0xcc02('0x39')]);_0x106915['where']=qs[_0xcc02('0x3a')](_[_0xcc02('0x3b')](_0x5c4bc7[_0xcc02('0x30')],_0x141632[_0xcc02('0x3a')]),_0x3cd293);if(_0x5c4bc7['query'][_0xcc02('0x3c')]){_0x106915['where']=_['merge'](_0x106915[_0xcc02('0x3d')],{'$or':_[_0xcc02('0x3e')](_0x3cd293,function(_0x2a366d){if(_0x2a366d[_0xcc02('0x2d')]!==_0xcc02('0x3f')){var _0x3f69cd={};_0x3f69cd[_0x2a366d[_0xcc02('0x29')]]={'$like':'%'+_0x5c4bc7['query'][_0xcc02('0x3c')]+'%'};return _0x3f69cd;}})});}_0x106915=_[_0xcc02('0x40')]({},_0x106915,_0x5c4bc7[_0xcc02('0x41')]);var _0x4d50e3={'where':_0x106915[_0xcc02('0x3d')]};return db[_0xcc02('0x2b')][_0xcc02('0x1f')](_0x4d50e3)['then'](function(_0x4fb5ee){_0x43d8c2[_0xcc02('0x1f')]=_0x4fb5ee;if(_0x5c4bc7['query'][_0xcc02('0x42')]){_0x106915[_0xcc02('0x43')]=[{'all':!![]}];}return db[_0xcc02('0x2b')]['findAll'](_0x106915);})[_0xcc02('0x25')](function(_0x5ce105){_0x43d8c2[_0xcc02('0x44')]=_0x5ce105;return _0x43d8c2;})[_0xcc02('0x25')](respondWithFilteredResult(_0x277691,_0x106915))[_0xcc02('0x45')](handleError(_0x277691,null));};exports['show']=function(_0x3eb1c1,_0x30268f){var _0x3b58c3={'raw':![],'where':{'id':_0x3eb1c1[_0xcc02('0x46')]['id']}},_0x13b674={};_0x13b674['model']=_[_0xcc02('0x2f')](db[_0xcc02('0x2b')][_0xcc02('0x2c')]);_0x13b674['query']=_[_0xcc02('0x2f')](_0x3eb1c1[_0xcc02('0x30')]);_0x13b674[_0xcc02('0x3a')]=_[_0xcc02('0x31')](_0x13b674[_0xcc02('0x35')],_0x13b674[_0xcc02('0x30')]);_0x3b58c3[_0xcc02('0x32')]=_[_0xcc02('0x31')](_0x13b674[_0xcc02('0x35')],qs[_0xcc02('0x33')](_0x3eb1c1[_0xcc02('0x30')][_0xcc02('0x33')]));_0x3b58c3[_0xcc02('0x32')]=_0x3b58c3['attributes']['length']?_0x3b58c3[_0xcc02('0x32')]:_0x13b674[_0xcc02('0x35')];if(_0x3eb1c1['query']['includeAll']){_0x3b58c3['include']=[{'all':!![]}];}_0x3b58c3=_['merge']({},_0x3b58c3,_0x3eb1c1[_0xcc02('0x41')]);return db['VtigerAccount'][_0xcc02('0x47')](_0x3b58c3)[_0xcc02('0x25')](handleEntityNotFound(_0x30268f,null))['then'](respondWithResult(_0x30268f,null))[_0xcc02('0x45')](handleError(_0x30268f,null));};exports['create']=function(_0x9135ff,_0x24b1b1){return db[_0xcc02('0x2b')][_0xcc02('0x48')](_0x9135ff['body'],{})[_0xcc02('0x25')](respondWithResult(_0x24b1b1,0xc9))[_0xcc02('0x45')](handleError(_0x24b1b1,null));};exports[_0xcc02('0x49')]=function(_0x53e1d8,_0x350749){if(_0x53e1d8[_0xcc02('0x4a')]['id']){delete _0x53e1d8['body']['id'];}return db[_0xcc02('0x2b')][_0xcc02('0x47')]({'where':{'id':_0x53e1d8[_0xcc02('0x46')]['id']}})[_0xcc02('0x25')](handleEntityNotFound(_0x350749,null))[_0xcc02('0x25')](saveUpdates(_0x53e1d8[_0xcc02('0x4a')],null))['then'](respondWithResult(_0x350749,null))[_0xcc02('0x45')](handleError(_0x350749,null));};exports['destroy']=function(_0x4f89fb,_0x37da46){return db['VtigerAccount'][_0xcc02('0x47')]({'where':{'id':_0x4f89fb['params']['id']}})[_0xcc02('0x25')](handleEntityNotFound(_0x37da46,null))[_0xcc02('0x25')](removeEntity(_0x37da46,null))[_0xcc02('0x45')](handleError(_0x37da46,null));};exports[_0xcc02('0x4b')]=function(_0x5d5d5e,_0xceefce,_0x16e979){var _0x122f2b={};var _0x3aed1a={};var _0x381e04;var _0x335874;return db[_0xcc02('0x2b')][_0xcc02('0x4c')]({'where':{'id':_0x5d5d5e[_0xcc02('0x46')]['id']}})[_0xcc02('0x25')](handleEntityNotFound(_0xceefce,null))[_0xcc02('0x25')](function(_0x5d7ac0){if(_0x5d7ac0){_0x381e04=_0x5d7ac0;_0x3aed1a[_0xcc02('0x35')]=_[_0xcc02('0x2f')](db[_0xcc02('0x4d')]['rawAttributes']);_0x3aed1a[_0xcc02('0x30')]=_[_0xcc02('0x2f')](_0x5d5d5e[_0xcc02('0x30')]);_0x3aed1a[_0xcc02('0x3a')]=_[_0xcc02('0x31')](_0x3aed1a[_0xcc02('0x35')],_0x3aed1a[_0xcc02('0x30')]);_0x122f2b[_0xcc02('0x32')]=_[_0xcc02('0x31')](_0x3aed1a['model'],qs[_0xcc02('0x33')](_0x5d5d5e[_0xcc02('0x30')][_0xcc02('0x33')]));_0x122f2b[_0xcc02('0x32')]=_0x122f2b[_0xcc02('0x32')]['length']?_0x122f2b[_0xcc02('0x32')]:_0x3aed1a[_0xcc02('0x35')];_0x122f2b[_0xcc02('0x38')]=qs['sort'](_0x5d5d5e[_0xcc02('0x30')][_0xcc02('0x39')]);_0x122f2b[_0xcc02('0x3d')]=qs[_0xcc02('0x3a')](_['pick'](_0x5d5d5e[_0xcc02('0x30')],_0x3aed1a[_0xcc02('0x3a')]));if(_0x5d5d5e[_0xcc02('0x30')][_0xcc02('0x3c')]){_0x122f2b[_0xcc02('0x3d')]=_[_0xcc02('0x40')](_0x122f2b[_0xcc02('0x3d')],{'$or':_['map'](_0x122f2b[_0xcc02('0x32')],function(_0x5684e3){var _0x3cef66={};_0x3cef66[_0x5684e3]={'$like':'%'+_0x5d5d5e[_0xcc02('0x30')][_0xcc02('0x3c')]+'%'};return _0x3cef66;})});}_0x122f2b=_['merge']({},_0x122f2b,_0x5d5d5e[_0xcc02('0x41')]);return _0x381e04[_0xcc02('0x4b')](_0x122f2b);}})[_0xcc02('0x25')](function(_0x49eb48){if(_0x49eb48){_0x335874=_0x49eb48[_0xcc02('0x34')];if(!_0x5d5d5e[_0xcc02('0x30')]['hasOwnProperty'](_0xcc02('0x37'))){_0x122f2b[_0xcc02('0x20')]=qs[_0xcc02('0x20')](_0x5d5d5e[_0xcc02('0x30')][_0xcc02('0x20')]);_0x122f2b[_0xcc02('0x1e')]=qs[_0xcc02('0x1e')](_0x5d5d5e[_0xcc02('0x30')][_0xcc02('0x1e')]);}return _0x381e04[_0xcc02('0x4b')](_0x122f2b);}})['then'](function(_0x17446c){if(_0x17446c){return _0x17446c?{'count':_0x335874,'rows':_0x17446c}:null;}})[_0xcc02('0x25')](respondWithResult(_0xceefce,null))[_0xcc02('0x45')](handleError(_0xceefce,null));};exports['addConfiguration']=function(_0x5b66b1,_0x340849,_0x5840d6){if(_0x5b66b1['body']['id']){delete _0x5b66b1['body']['id'];}return db[_0xcc02('0x2b')][_0xcc02('0x4c')]({'where':{'id':_0x5b66b1[_0xcc02('0x46')]['id']}})[_0xcc02('0x25')](handleEntityNotFound(_0x340849,null))['then'](function(_0x3ca0a7){if(_0x3ca0a7){_0x5b66b1['body'][_0xcc02('0x4e')]=_0x3ca0a7['id'];_0x5b66b1[_0xcc02('0x4a')][_0xcc02('0x4f')]=integrations[_0xcc02('0x50')](_0x5b66b1['body'][_0xcc02('0x51')],_0x5b66b1[_0xcc02('0x4a')][_0xcc02('0x2d')]);_0x5b66b1[_0xcc02('0x4a')][_0xcc02('0x52')]=integrations[_0xcc02('0x53')](_0x5b66b1[_0xcc02('0x4a')][_0xcc02('0x51')],_0x5b66b1[_0xcc02('0x4a')][_0xcc02('0x2d')]);return db[_0xcc02('0x4d')][_0xcc02('0x48')](_0x5b66b1['body'],{'include':[{'model':db['VtigerField'],'as':_0xcc02('0x4f')},{'model':db[_0xcc02('0x54')],'as':_0xcc02('0x52')}]});}return null;})['then'](respondWithResult(_0x340849,null))[_0xcc02('0x45')](handleError(_0x340849,null));};var md5=require(_0xcc02('0x55'));exports[_0xcc02('0x56')]=function(_0x5b59d4,_0x385dc7,_0x3cbad2){var _0x410edd=null;var _0x5dab6a=null;var _0x2f78a0=null;var _0x1d1798=null;var _0x497d30='';return db[_0xcc02('0x2b')][_0xcc02('0x4c')]({'where':{'id':_0x5b59d4[_0xcc02('0x46')]['id']},'attributes':['id',_0xcc02('0x29'),_0xcc02('0x57'),_0xcc02('0x58'),_0xcc02('0x59'),_0xcc02('0x5a'),'serverUrl',_0xcc02('0x5b')]})['then'](handleEntityNotFound(_0x385dc7,null))[_0xcc02('0x25')](function(_0x18796e){if(_0x18796e){_0x410edd=_0x18796e[_0xcc02('0x57')];_0x5dab6a=_0x18796e[_0xcc02('0x5b')];_0x2f78a0=_0x18796e[_0xcc02('0x59')];_0x497d30=_0x18796e[_0xcc02('0x5a')];var _0x44d95c=_0x497d30[_0xcc02('0x5c')](-0x1);if(_0x44d95c==='/'){_0x497d30=_0x497d30[_0xcc02('0x5d')](0x0,_0x497d30[_0xcc02('0x5e')](_0x44d95c));}_0x1d1798=util[_0xcc02('0x5f')](_0xcc02('0x60'),_0x497d30);var _0x13673c={'method':_0xcc02('0x61'),'uri':_0x1d1798,'qs':{'operation':_0xcc02('0x62'),'username':_0x18796e['username']},'json':!![]};return rp(_0x13673c);}})[_0xcc02('0x25')](function(_0x4b8426){if(_0x4b8426[_0xcc02('0x63')]){var _0xf5f37={'method':_0xcc02('0x64'),'uri':_0x1d1798,'form':{'operation':_0xcc02('0x65'),'username':_0x410edd,'accessKey':md5(_0x4b8426[_0xcc02('0x66')][_0xcc02('0x67')]+_0x5dab6a)},'json':!![]};return rp(_0xf5f37);}})[_0xcc02('0x25')](function(_0x548604){if(_0x548604[_0xcc02('0x63')]){var _0x16faf8={'method':_0xcc02('0x61'),'uri':_0x1d1798,'qs':{'operation':_0xcc02('0x68'),'username':_0x410edd,'sessionName':_0x548604[_0xcc02('0x66')][_0xcc02('0x69')],'elementType':_0x2f78a0},'json':!![]};return rp(_0x16faf8);}})[_0xcc02('0x25')](function(_0xdf203a){if(_0xdf203a[_0xcc02('0x63')]){var _0x40c3a9=['autogenerated',_0xcc02('0x6a'),_0xcc02('0x6b')];_['remove'](_0xdf203a[_0xcc02('0x66')][_0xcc02('0x33')],function(_0x51cf62){return _0x40c3a9[_0xcc02('0x6c')](_0x51cf62[_0xcc02('0x2d')]['name']);});_[_0xcc02('0x6d')](_0xdf203a['result'][_0xcc02('0x33')],function(_0x50d252){return _0x50d252[_0xcc02('0x6e')]===_0xcc02('0x6f');});return{'count':_0xdf203a[_0xcc02('0x66')][_0xcc02('0x33')][_0xcc02('0x34')],'rows':_[_0xcc02('0x3e')](_0xdf203a[_0xcc02('0x66')][_0xcc02('0x33')],function(_0x2524bb){return{'id':_0x2524bb[_0xcc02('0x29')],'name':_0x2524bb['label'],'custom':_[_0xcc02('0x70')](_0x2524bb[_0xcc02('0x29')],_0xcc02('0x71'))?!![]:![],'options':_0x2524bb[_0xcc02('0x2d')][_0xcc02('0x29')]==='picklist'&&_0x2524bb[_0xcc02('0x2d')][_0xcc02('0x72')]['length']>0x0?_[_0xcc02('0x3e')](_0x2524bb[_0xcc02('0x2d')][_0xcc02('0x72')],function(_0x183fb9){return{'name':_0x183fb9[_0xcc02('0x73')],'value':_0x183fb9['value']};}):[]};})};}})[_0xcc02('0x25')](respondWithResult(_0x385dc7,null))[_0xcc02('0x45')](function(_0xcbd832){console[_0xcc02('0x74')](_0xcc02('0x75')+_0xcbd832);var _0x230101=_0x5b59d4[_0xcc02('0x30')][_0xcc02('0x76')]?0x1f4:_0xcbd832[_0xcc02('0x77')]||0x1f4;logger[_0xcc02('0x27')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x230101,JSON['stringify'](_0xcbd832));delete _0xcbd832['name'];if(_0x230101===0x191){_0x230101=0x190;}_0x385dc7['status'](_0x230101)[_0xcc02('0x2a')](_0x5b59d4[_0xcc02('0x30')]['test']?{'message':_0xcc02('0x78'),'statusCode':_0xcbd832[_0xcc02('0x77')]}:_0xcbd832);});};
\ No newline at end of file
+var _0xdd65=['VtigerAccount','rawAttributes','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','body','update','getConfigurations','findOne','AccountId','getSubjects','channel','type','Descriptions','getDescriptions','VtigerConfiguration','create','VtigerField','Subjects','md5','getFields','username','description','remoteUri','accessKey','moduleName','slice','lastIndexOf','format','%s/webservice.php','GET','getchallenge','success','login','result','token','describe','sessionName','autogenerated','reference','remove','includes','editable','false','label','startsWith','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','Wrong\x20credentials','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','then','destroy','sendStatus','error','name','index','map'];(function(_0x22e085,_0x5c183a){var _0x206355=function(_0x452278){while(--_0x452278){_0x22e085['push'](_0x22e085['shift']());}};_0x206355(++_0x5c183a);}(_0xdd65,0x148));var _0x5dd6=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xdd65[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5dd6('0x0'));var zipdir=require(_0x5dd6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5dd6('0x2'));var moment=require(_0x5dd6('0x3'));var BPromise=require(_0x5dd6('0x4'));var Mustache=require(_0x5dd6('0x5'));var util=require(_0x5dd6('0x6'));var path=require(_0x5dd6('0x7'));var sox=require(_0x5dd6('0x8'));var csv=require(_0x5dd6('0x9'));var ejs=require(_0x5dd6('0xa'));var fs=require('fs');var fs_extra=require(_0x5dd6('0xb'));var _=require(_0x5dd6('0xc'));var squel=require(_0x5dd6('0xd'));var crypto=require(_0x5dd6('0xe'));var jsforce=require(_0x5dd6('0xf'));var deskjs=require(_0x5dd6('0x10'));var toCsv=require(_0x5dd6('0x9'));var querystring=require(_0x5dd6('0x11'));var Papa=require(_0x5dd6('0x12'));var Redis=require(_0x5dd6('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x5dd6('0x14'));var as=require(_0x5dd6('0x15'));var hardwareService=require(_0x5dd6('0x16'));var logger=require(_0x5dd6('0x17'))('api');var utils=require(_0x5dd6('0x18'));var config=require(_0x5dd6('0x19'));var licenseUtil=require(_0x5dd6('0x1a'));var db=require(_0x5dd6('0x1b'))['db'];var integrations=require(_0x5dd6('0x1c'));function respondWithStatusCode(_0x5e241f,_0x31b983){_0x31b983=_0x31b983||0xcc;return function(_0x9ad9be){if(_0x9ad9be){return _0x5e241f['sendStatus'](_0x31b983);}return _0x5e241f[_0x5dd6('0x1d')](_0x31b983)[_0x5dd6('0x1e')]();};}function respondWithResult(_0x5be953,_0x42a723){_0x42a723=_0x42a723||0xc8;return function(_0x286523){if(_0x286523){return _0x5be953[_0x5dd6('0x1d')](_0x42a723)[_0x5dd6('0x1f')](_0x286523);}};}function respondWithFilteredResult(_0x18ca74,_0x64b676){return function(_0x2fdc97){if(_0x2fdc97){var _0x2932e8=typeof _0x64b676['offset']===_0x5dd6('0x20')&&typeof _0x64b676[_0x5dd6('0x21')]===_0x5dd6('0x20');var _0x238334=_0x2fdc97[_0x5dd6('0x22')];var _0x52a874=_0x2932e8?0x0:_0x64b676[_0x5dd6('0x23')];var _0x1130ad=_0x2932e8?_0x2fdc97[_0x5dd6('0x22')]:_0x64b676['offset']+_0x64b676[_0x5dd6('0x21')];var _0x5a500f;if(_0x1130ad>=_0x238334){_0x1130ad=_0x238334;_0x5a500f=0xc8;}else{_0x5a500f=0xce;}_0x18ca74[_0x5dd6('0x1d')](_0x5a500f);return _0x18ca74[_0x5dd6('0x24')](_0x5dd6('0x25'),_0x52a874+'-'+_0x1130ad+'/'+_0x238334)['json'](_0x2fdc97);}return null;};}function patchUpdates(_0x542c60){return function(_0x593722){try{jsonpatch['apply'](_0x593722,_0x542c60,!![]);}catch(_0x454c3b){return BPromise[_0x5dd6('0x26')](_0x454c3b);}return _0x593722[_0x5dd6('0x27')]();};}function saveUpdates(_0x5e0b55,_0x51541d){return function(_0x23c036){if(_0x23c036){return _0x23c036['update'](_0x5e0b55)[_0x5dd6('0x28')](function(_0x15460f){return _0x15460f;});}return null;};}function removeEntity(_0x590883,_0x17df15){return function(_0x283a59){if(_0x283a59){return _0x283a59[_0x5dd6('0x29')]()[_0x5dd6('0x28')](function(){_0x590883[_0x5dd6('0x1d')](0xcc)[_0x5dd6('0x1e')]();});}};}function handleEntityNotFound(_0x59f6ad,_0x22fab3){return function(_0x19ca49){if(!_0x19ca49){_0x59f6ad[_0x5dd6('0x2a')](0x194);}return _0x19ca49;};}function handleError(_0xc2fbb8,_0x102b03){_0x102b03=_0x102b03||0x1f4;return function(_0x5d3f5b){logger[_0x5dd6('0x2b')](_0x5d3f5b['stack']);if(_0x5d3f5b[_0x5dd6('0x2c')]){delete _0x5d3f5b[_0x5dd6('0x2c')];}_0xc2fbb8[_0x5dd6('0x1d')](_0x102b03)['send'](_0x5d3f5b);};}exports[_0x5dd6('0x2d')]=function(_0x5cb1cc,_0x310f41){var _0x5ad6ec={},_0xb9b4d4={},_0x3eda98={'count':0x0,'rows':[]};var _0x51bfa8=_[_0x5dd6('0x2e')](db[_0x5dd6('0x2f')][_0x5dd6('0x30')],function(_0x181e45){return{'name':_0x181e45['fieldName'],'type':_0x181e45['type'][_0x5dd6('0x31')]};});_0xb9b4d4[_0x5dd6('0x32')]=_[_0x5dd6('0x2e')](_0x51bfa8,_0x5dd6('0x2c'));_0xb9b4d4[_0x5dd6('0x33')]=_[_0x5dd6('0x34')](_0x5cb1cc[_0x5dd6('0x33')]);_0xb9b4d4[_0x5dd6('0x35')]=_['intersection'](_0xb9b4d4[_0x5dd6('0x32')],_0xb9b4d4[_0x5dd6('0x33')]);_0x5ad6ec[_0x5dd6('0x36')]=_['intersection'](_0xb9b4d4[_0x5dd6('0x32')],qs[_0x5dd6('0x37')](_0x5cb1cc['query']['fields']));_0x5ad6ec['attributes']=_0x5ad6ec[_0x5dd6('0x36')][_0x5dd6('0x38')]?_0x5ad6ec[_0x5dd6('0x36')]:_0xb9b4d4[_0x5dd6('0x32')];if(!_0x5cb1cc[_0x5dd6('0x33')][_0x5dd6('0x39')](_0x5dd6('0x3a'))){_0x5ad6ec[_0x5dd6('0x21')]=qs['limit'](_0x5cb1cc[_0x5dd6('0x33')]['limit']);_0x5ad6ec[_0x5dd6('0x23')]=qs[_0x5dd6('0x23')](_0x5cb1cc['query']['offset']);}_0x5ad6ec[_0x5dd6('0x3b')]=qs[_0x5dd6('0x3c')](_0x5cb1cc['query'][_0x5dd6('0x3c')]);_0x5ad6ec[_0x5dd6('0x3d')]=qs[_0x5dd6('0x35')](_[_0x5dd6('0x3e')](_0x5cb1cc[_0x5dd6('0x33')],_0xb9b4d4['filters']),_0x51bfa8);if(_0x5cb1cc[_0x5dd6('0x33')][_0x5dd6('0x3f')]){_0x5ad6ec[_0x5dd6('0x3d')]=_['merge'](_0x5ad6ec[_0x5dd6('0x3d')],{'$or':_[_0x5dd6('0x2e')](_0x51bfa8,function(_0x1b2b3e){if(_0x1b2b3e['type']!==_0x5dd6('0x40')){var _0x4d425f={};_0x4d425f[_0x1b2b3e[_0x5dd6('0x2c')]]={'$like':'%'+_0x5cb1cc['query'][_0x5dd6('0x3f')]+'%'};return _0x4d425f;}})});}_0x5ad6ec=_[_0x5dd6('0x41')]({},_0x5ad6ec,_0x5cb1cc[_0x5dd6('0x42')]);var _0x1e9296={'where':_0x5ad6ec['where']};return db[_0x5dd6('0x2f')][_0x5dd6('0x22')](_0x1e9296)[_0x5dd6('0x28')](function(_0x10e015){_0x3eda98[_0x5dd6('0x22')]=_0x10e015;if(_0x5cb1cc[_0x5dd6('0x33')][_0x5dd6('0x43')]){_0x5ad6ec[_0x5dd6('0x44')]=[{'all':!![]}];}return db[_0x5dd6('0x2f')][_0x5dd6('0x45')](_0x5ad6ec);})[_0x5dd6('0x28')](function(_0x4479b5){_0x3eda98[_0x5dd6('0x46')]=_0x4479b5;return _0x3eda98;})['then'](respondWithFilteredResult(_0x310f41,_0x5ad6ec))[_0x5dd6('0x47')](handleError(_0x310f41,null));};exports[_0x5dd6('0x48')]=function(_0x19decf,_0x5ba7c6){var _0x2555fd={'raw':![],'where':{'id':_0x19decf[_0x5dd6('0x49')]['id']}},_0x10c4df={};_0x10c4df[_0x5dd6('0x32')]=_['keys'](db[_0x5dd6('0x2f')][_0x5dd6('0x30')]);_0x10c4df[_0x5dd6('0x33')]=_[_0x5dd6('0x34')](_0x19decf[_0x5dd6('0x33')]);_0x10c4df[_0x5dd6('0x35')]=_[_0x5dd6('0x4a')](_0x10c4df[_0x5dd6('0x32')],_0x10c4df[_0x5dd6('0x33')]);_0x2555fd[_0x5dd6('0x36')]=_['intersection'](_0x10c4df[_0x5dd6('0x32')],qs[_0x5dd6('0x37')](_0x19decf['query'][_0x5dd6('0x37')]));_0x2555fd[_0x5dd6('0x36')]=_0x2555fd[_0x5dd6('0x36')][_0x5dd6('0x38')]?_0x2555fd[_0x5dd6('0x36')]:_0x10c4df[_0x5dd6('0x32')];if(_0x19decf[_0x5dd6('0x33')][_0x5dd6('0x43')]){_0x2555fd[_0x5dd6('0x44')]=[{'all':!![]}];}_0x2555fd=_[_0x5dd6('0x41')]({},_0x2555fd,_0x19decf[_0x5dd6('0x42')]);return db[_0x5dd6('0x2f')][_0x5dd6('0x4b')](_0x2555fd)[_0x5dd6('0x28')](handleEntityNotFound(_0x5ba7c6,null))['then'](respondWithResult(_0x5ba7c6,null))[_0x5dd6('0x47')](handleError(_0x5ba7c6,null));};exports['create']=function(_0x2b9f90,_0x4b0952){return db['VtigerAccount']['create'](_0x2b9f90[_0x5dd6('0x4c')],{})[_0x5dd6('0x28')](respondWithResult(_0x4b0952,0xc9))[_0x5dd6('0x47')](handleError(_0x4b0952,null));};exports[_0x5dd6('0x4d')]=function(_0x2df24b,_0x107ba8){if(_0x2df24b[_0x5dd6('0x4c')]['id']){delete _0x2df24b[_0x5dd6('0x4c')]['id'];}return db[_0x5dd6('0x2f')][_0x5dd6('0x4b')]({'where':{'id':_0x2df24b[_0x5dd6('0x49')]['id']}})[_0x5dd6('0x28')](handleEntityNotFound(_0x107ba8,null))[_0x5dd6('0x28')](saveUpdates(_0x2df24b[_0x5dd6('0x4c')],null))[_0x5dd6('0x28')](respondWithResult(_0x107ba8,null))[_0x5dd6('0x47')](handleError(_0x107ba8,null));};exports[_0x5dd6('0x29')]=function(_0x20b881,_0x2c205e){return db[_0x5dd6('0x2f')]['find']({'where':{'id':_0x20b881[_0x5dd6('0x49')]['id']}})[_0x5dd6('0x28')](handleEntityNotFound(_0x2c205e,null))[_0x5dd6('0x28')](removeEntity(_0x2c205e,null))[_0x5dd6('0x47')](handleError(_0x2c205e,null));};exports[_0x5dd6('0x4e')]=function(_0x102ca6,_0x3de968,_0x36fa63){var _0x17ea20={};var _0x314a76={};var _0x325039;var _0x2e93ef;return db[_0x5dd6('0x2f')]['findOne']({'where':{'id':_0x102ca6[_0x5dd6('0x49')]['id']}})['then'](handleEntityNotFound(_0x3de968,null))['then'](function(_0x2ffe51){if(_0x2ffe51){_0x325039=_0x2ffe51;_0x314a76[_0x5dd6('0x32')]=_['keys'](db['VtigerConfiguration'][_0x5dd6('0x30')]);_0x314a76[_0x5dd6('0x33')]=_[_0x5dd6('0x34')](_0x102ca6[_0x5dd6('0x33')]);_0x314a76[_0x5dd6('0x35')]=_[_0x5dd6('0x4a')](_0x314a76[_0x5dd6('0x32')],_0x314a76[_0x5dd6('0x33')]);_0x17ea20[_0x5dd6('0x36')]=_[_0x5dd6('0x4a')](_0x314a76[_0x5dd6('0x32')],qs[_0x5dd6('0x37')](_0x102ca6['query']['fields']));_0x17ea20[_0x5dd6('0x36')]=_0x17ea20[_0x5dd6('0x36')][_0x5dd6('0x38')]?_0x17ea20['attributes']:_0x314a76[_0x5dd6('0x32')];_0x17ea20[_0x5dd6('0x3b')]=qs[_0x5dd6('0x3c')](_0x102ca6[_0x5dd6('0x33')][_0x5dd6('0x3c')]);_0x17ea20[_0x5dd6('0x3d')]=qs[_0x5dd6('0x35')](_[_0x5dd6('0x3e')](_0x102ca6[_0x5dd6('0x33')],_0x314a76[_0x5dd6('0x35')]));if(_0x102ca6['query']['filter']){_0x17ea20[_0x5dd6('0x3d')]=_[_0x5dd6('0x41')](_0x17ea20['where'],{'$or':_[_0x5dd6('0x2e')](_0x17ea20[_0x5dd6('0x36')],function(_0x4f1ed6){var _0x260025={};_0x260025[_0x4f1ed6]={'$like':'%'+_0x102ca6[_0x5dd6('0x33')][_0x5dd6('0x3f')]+'%'};return _0x260025;})});}_0x17ea20=_[_0x5dd6('0x41')]({},_0x17ea20,_0x102ca6[_0x5dd6('0x42')]);return _0x325039['getConfigurations'](_0x17ea20);}})[_0x5dd6('0x28')](function(_0x231744){if(_0x231744){_0x2e93ef=_0x231744['length'];if(!_0x102ca6[_0x5dd6('0x33')][_0x5dd6('0x39')](_0x5dd6('0x3a'))){_0x17ea20[_0x5dd6('0x21')]=qs[_0x5dd6('0x21')](_0x102ca6['query'][_0x5dd6('0x21')]);_0x17ea20['offset']=qs[_0x5dd6('0x23')](_0x102ca6['query'][_0x5dd6('0x23')]);}return _0x325039[_0x5dd6('0x4e')](_0x17ea20);}})[_0x5dd6('0x28')](function(_0x2551bc){if(_0x2551bc){return _0x2551bc?{'count':_0x2e93ef,'rows':_0x2551bc}:null;}})[_0x5dd6('0x28')](respondWithResult(_0x3de968,null))[_0x5dd6('0x47')](handleError(_0x3de968,null));};exports['addConfiguration']=function(_0x12f7ca,_0x34a209,_0x27c794){if(_0x12f7ca['body']['id']){delete _0x12f7ca[_0x5dd6('0x4c')]['id'];}return db['VtigerAccount'][_0x5dd6('0x4f')]({'where':{'id':_0x12f7ca[_0x5dd6('0x49')]['id']}})[_0x5dd6('0x28')](handleEntityNotFound(_0x34a209,null))[_0x5dd6('0x28')](function(_0x1195e8){if(_0x1195e8){_0x12f7ca[_0x5dd6('0x4c')][_0x5dd6('0x50')]=_0x1195e8['id'];_0x12f7ca[_0x5dd6('0x4c')]['Subjects']=integrations[_0x5dd6('0x51')](_0x12f7ca[_0x5dd6('0x4c')][_0x5dd6('0x52')],_0x12f7ca[_0x5dd6('0x4c')][_0x5dd6('0x53')]);_0x12f7ca[_0x5dd6('0x4c')][_0x5dd6('0x54')]=integrations[_0x5dd6('0x55')](_0x12f7ca[_0x5dd6('0x4c')]['channel'],_0x12f7ca[_0x5dd6('0x4c')][_0x5dd6('0x53')]);return db[_0x5dd6('0x56')][_0x5dd6('0x57')](_0x12f7ca['body'],{'include':[{'model':db[_0x5dd6('0x58')],'as':_0x5dd6('0x59')},{'model':db[_0x5dd6('0x58')],'as':_0x5dd6('0x54')}]});}return null;})[_0x5dd6('0x28')](respondWithResult(_0x34a209,null))[_0x5dd6('0x47')](handleError(_0x34a209,null));};var md5=require(_0x5dd6('0x5a'));exports[_0x5dd6('0x5b')]=function(_0x282984,_0x352482,_0xf54835){var _0x37a15d=null;var _0x318604=null;var _0x10a85c=null;var _0x24ae1f=null;var _0x5253d1='';return db[_0x5dd6('0x2f')]['findOne']({'where':{'id':_0x282984['params']['id']},'attributes':['id',_0x5dd6('0x2c'),_0x5dd6('0x5c'),_0x5dd6('0x5d'),'moduleName',_0x5dd6('0x5e'),'serverUrl',_0x5dd6('0x5f')]})['then'](handleEntityNotFound(_0x352482,null))[_0x5dd6('0x28')](function(_0x207989){if(_0x207989){_0x37a15d=_0x207989[_0x5dd6('0x5c')];_0x318604=_0x207989[_0x5dd6('0x5f')];_0x10a85c=_0x207989[_0x5dd6('0x60')];_0x5253d1=_0x207989[_0x5dd6('0x5e')];var _0x1e7e0a=_0x5253d1[_0x5dd6('0x61')](-0x1);if(_0x1e7e0a==='/'){_0x5253d1=_0x5253d1['substring'](0x0,_0x5253d1[_0x5dd6('0x62')](_0x1e7e0a));}_0x24ae1f=util[_0x5dd6('0x63')](_0x5dd6('0x64'),_0x5253d1);var _0x4a0dfe={'method':_0x5dd6('0x65'),'uri':_0x24ae1f,'qs':{'operation':_0x5dd6('0x66'),'username':_0x207989[_0x5dd6('0x5c')]},'json':!![]};return rp(_0x4a0dfe);}})[_0x5dd6('0x28')](function(_0x14849e){if(_0x14849e[_0x5dd6('0x67')]){var _0x2b7bcd={'method':'POST','uri':_0x24ae1f,'form':{'operation':_0x5dd6('0x68'),'username':_0x37a15d,'accessKey':md5(_0x14849e[_0x5dd6('0x69')][_0x5dd6('0x6a')]+_0x318604)},'json':!![]};return rp(_0x2b7bcd);}})[_0x5dd6('0x28')](function(_0x2d9091){if(_0x2d9091['success']){var _0x218aba={'method':'GET','uri':_0x24ae1f,'qs':{'operation':_0x5dd6('0x6b'),'username':_0x37a15d,'sessionName':_0x2d9091[_0x5dd6('0x69')][_0x5dd6('0x6c')],'elementType':_0x10a85c},'json':!![]};return rp(_0x218aba);}})['then'](function(_0xf5d5b1){if(_0xf5d5b1[_0x5dd6('0x67')]){var _0x173e24=[_0x5dd6('0x6d'),_0x5dd6('0x6e'),'owner'];_[_0x5dd6('0x6f')](_0xf5d5b1[_0x5dd6('0x69')][_0x5dd6('0x37')],function(_0x2c5dca){return _0x173e24[_0x5dd6('0x70')](_0x2c5dca['type'][_0x5dd6('0x2c')]);});_['remove'](_0xf5d5b1[_0x5dd6('0x69')][_0x5dd6('0x37')],function(_0x5cf98c){return _0x5cf98c[_0x5dd6('0x71')]===_0x5dd6('0x72');});return{'count':_0xf5d5b1['result'][_0x5dd6('0x37')][_0x5dd6('0x38')],'rows':_[_0x5dd6('0x2e')](_0xf5d5b1[_0x5dd6('0x69')][_0x5dd6('0x37')],function(_0x38df53){return{'id':_0x38df53['name'],'name':_0x38df53[_0x5dd6('0x73')],'custom':_[_0x5dd6('0x74')](_0x38df53[_0x5dd6('0x2c')],'cf_')?!![]:![],'options':_0x38df53[_0x5dd6('0x53')][_0x5dd6('0x2c')]===_0x5dd6('0x75')&&_0x38df53[_0x5dd6('0x53')][_0x5dd6('0x76')][_0x5dd6('0x38')]>0x0?_[_0x5dd6('0x2e')](_0x38df53[_0x5dd6('0x53')]['picklistValues'],function(_0x282ace){return{'name':_0x282ace[_0x5dd6('0x73')],'value':_0x282ace[_0x5dd6('0x77')]};}):[]};})};}})[_0x5dd6('0x28')](respondWithResult(_0x352482,null))[_0x5dd6('0x47')](function(_0x4d64ec){console[_0x5dd6('0x78')](_0x5dd6('0x79')+_0x4d64ec);var _0x438195=_0x282984[_0x5dd6('0x33')][_0x5dd6('0x7a')]?0x1f4:_0x4d64ec[_0x5dd6('0x7b')]||0x1f4;logger[_0x5dd6('0x2b')]('getFields,\x20%s,\x20%s,\x20%s',_0x5dd6('0x5b'),_0x438195,JSON['stringify'](_0x4d64ec));delete _0x4d64ec['name'];if(_0x438195===0x191){_0x438195=0x190;}_0x352482['status'](_0x438195)['send'](_0x282984[_0x5dd6('0x33')][_0x5dd6('0x7a')]?{'message':_0x5dd6('0x7c'),'statusCode':_0x4d64ec['statusCode']}:_0x4d64ec);});};
\ No newline at end of file
index 697c7f8..186d1f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf1f=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','lodash','util','api','moment'];(function(_0x558a69,_0x4eb75a){var _0x3febd8=function(_0x227738){while(--_0x227738){_0x558a69['push'](_0x558a69['shift']());}};_0x3febd8(++_0x4eb75a);}(_0xbf1f,0xd8));var _0xfbf1=function(_0x23a7aa,_0x51647e){_0x23a7aa=_0x23a7aa-0x0;var _0x5a6172=_0xbf1f[_0x23a7aa];return _0x5a6172;};'use strict';var _=require(_0xfbf1('0x0'));var util=require(_0xfbf1('0x1'));var logger=require('../../config/logger')(_0xfbf1('0x2'));var moment=require(_0xfbf1('0x3'));var BPromise=require(_0xfbf1('0x4'));var rp=require(_0xfbf1('0x5'));var fs=require('fs');var path=require(_0xfbf1('0x6'));var rimraf=require(_0xfbf1('0x7'));var config=require(_0xfbf1('0x8'));var attributes=require('./intVtigerAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xfbf1('0x9')]=function(_0x9920ca,_0x5ced46){return _0x9920ca[_0xfbf1('0xa')]('VtigerAccount',attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6caa=['./intVtigerAccount.attributes','define','VtigerAccount','../../config/logger','api','moment','rimraf','../../config/environment'];(function(_0x483604,_0x3ab47f){var _0x13f3f0=function(_0x3451a3){while(--_0x3451a3){_0x483604['push'](_0x483604['shift']());}};_0x13f3f0(++_0x3ab47f);}(_0x6caa,0x133));var _0xa6ca=function(_0x174165,_0x490685){_0x174165=_0x174165-0x0;var _0x125f48=_0x6caa[_0x174165];return _0x125f48;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa6ca('0x0'))(_0xa6ca('0x1'));var moment=require(_0xa6ca('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa6ca('0x3'));var config=require(_0xa6ca('0x4'));var attributes=require(_0xa6ca('0x5'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x4658e1,_0x48bd6f){return _0x4658e1[_0xa6ca('0x6')](_0xa6ca('0x7'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bde5d67..ceaab90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96cc=['model','map','debug','ShowVtigerAccount','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','limit','include'];(function(_0x71ae3c,_0x404627){var _0x194072=function(_0x13c008){while(--_0x13c008){_0x71ae3c['push'](_0x71ae3c['shift']());}};_0x194072(++_0x404627);}(_0x96cc,0x16c));var _0xc96c=function(_0x252805,_0x1d1e8e){_0x252805=_0x252805-0x0;var _0x3e74b9=_0x96cc[_0x252805];return _0x3e74b9;};'use strict';var _=require(_0xc96c('0x0'));var util=require('util');var moment=require(_0xc96c('0x1'));var BPromise=require('bluebird');var rs=require(_0xc96c('0x2'));var fs=require('fs');var Redis=require(_0xc96c('0x3'));var db=require(_0xc96c('0x4'))['db'];var utils=require(_0xc96c('0x5'));var logger=require(_0xc96c('0x6'))(_0xc96c('0x7'));var config=require(_0xc96c('0x8'));var jayson=require(_0xc96c('0x9'));var client=jayson[_0xc96c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x10b411,_0x18eb9c,_0x408afb){return new BPromise(function(_0x86c1a8,_0x13363d){return client[_0xc96c('0xb')](_0x10b411,_0x408afb)[_0xc96c('0xc')](function(_0x54e765){logger[_0xc96c('0xd')](_0xc96c('0xe'),_0x18eb9c,_0xc96c('0xf'));logger['debug'](_0xc96c('0x10'),_0x18eb9c,'request\x20sent',JSON[_0xc96c('0x11')](_0x54e765));if(_0x54e765['error']){if(_0x54e765[_0xc96c('0x12')][_0xc96c('0x13')]===0x1f4){logger[_0xc96c('0x12')](_0xc96c('0xe'),_0x18eb9c,_0x54e765['error'][_0xc96c('0x14')]);return _0x13363d(_0x54e765[_0xc96c('0x12')][_0xc96c('0x14')]);}logger[_0xc96c('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x18eb9c,_0x54e765[_0xc96c('0x12')][_0xc96c('0x14')]);return _0x86c1a8(_0x54e765[_0xc96c('0x12')][_0xc96c('0x14')]);}else{logger[_0xc96c('0xd')](_0xc96c('0xe'),_0x18eb9c,_0xc96c('0xf'));_0x86c1a8(_0x54e765[_0xc96c('0x15')][_0xc96c('0x14')]);}})[_0xc96c('0x16')](function(_0x861230){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x18eb9c,_0x861230);_0x13363d(_0x861230);});});}exports[_0xc96c('0x17')]=function(_0x99c402){var _0x16b6ce=this;return new Promise(function(_0x2ae19a,_0x4aa6a3){return db[_0xc96c('0x18')][_0xc96c('0x19')]({'raw':_0x99c402[_0xc96c('0x1a')]?_0x99c402[_0xc96c('0x1a')][_0xc96c('0x1b')]===undefined?!![]:![]:!![],'where':_0x99c402[_0xc96c('0x1a')]?_0x99c402[_0xc96c('0x1a')][_0xc96c('0x1c')]||null:null,'attributes':_0x99c402[_0xc96c('0x1a')]?_0x99c402[_0xc96c('0x1a')][_0xc96c('0x1d')]||null:null,'limit':_0x99c402[_0xc96c('0x1a')]?_0x99c402[_0xc96c('0x1a')][_0xc96c('0x1e')]||null:null,'include':_0x99c402[_0xc96c('0x1a')]?_0x99c402[_0xc96c('0x1a')][_0xc96c('0x1f')]?_['map'](_0x99c402[_0xc96c('0x1a')][_0xc96c('0x1f')],function(_0x4456bf){return{'model':db[_0x4456bf[_0xc96c('0x20')]],'as':_0x4456bf['as'],'attributes':_0x4456bf[_0xc96c('0x1d')],'include':_0x4456bf[_0xc96c('0x1f')]?_[_0xc96c('0x21')](_0x4456bf[_0xc96c('0x1f')],function(_0x1a77df){return{'model':db[_0x1a77df[_0xc96c('0x20')]],'as':_0x1a77df['as'],'attributes':_0x1a77df['attributes'],'include':_0x1a77df[_0xc96c('0x1f')]?_[_0xc96c('0x21')](_0x1a77df[_0xc96c('0x1f')],function(_0x294fee){return{'model':db[_0x294fee['model']],'as':_0x294fee['as'],'attributes':_0x294fee['attributes']};}):[]};}):[]};}):[]:[]})[_0xc96c('0xc')](function(_0x12c293){logger[_0xc96c('0xd')](_0xc96c('0x17'),_0x99c402);logger[_0xc96c('0x22')](_0xc96c('0x17'),_0x99c402,JSON[_0xc96c('0x11')](_0x12c293));_0x2ae19a(_0x12c293);})[_0xc96c('0x16')](function(_0xa0efbc){logger[_0xc96c('0x12')](_0xc96c('0x17'),_0xa0efbc[_0xc96c('0x14')],_0x99c402);_0x4aa6a3(_0x16b6ce[_0xc96c('0x12')](0x1f4,_0xa0efbc[_0xc96c('0x14')]));});});};exports['ShowVtigerAccount']=function(_0x3aa436){var _0x53c994=this;return new Promise(function(_0x3f4b0e,_0x442c7f){return db[_0xc96c('0x18')]['find']({'raw':_0x3aa436[_0xc96c('0x1a')]?_0x3aa436[_0xc96c('0x1a')][_0xc96c('0x1b')]===undefined?!![]:![]:!![],'where':_0x3aa436[_0xc96c('0x1a')]?_0x3aa436['options']['where']||null:null,'attributes':_0x3aa436[_0xc96c('0x1a')]?_0x3aa436[_0xc96c('0x1a')][_0xc96c('0x1d')]||null:null,'include':_0x3aa436['options']?_0x3aa436[_0xc96c('0x1a')][_0xc96c('0x1f')]?_[_0xc96c('0x21')](_0x3aa436[_0xc96c('0x1a')]['include'],function(_0x4132a9){return{'model':db[_0x4132a9[_0xc96c('0x20')]],'as':_0x4132a9['as'],'attributes':_0x4132a9['attributes'],'include':_0x4132a9[_0xc96c('0x1f')]?_[_0xc96c('0x21')](_0x4132a9[_0xc96c('0x1f')],function(_0x2d2595){return{'model':db[_0x2d2595[_0xc96c('0x20')]],'as':_0x2d2595['as'],'attributes':_0x2d2595[_0xc96c('0x1d')],'include':_0x2d2595['include']?_[_0xc96c('0x21')](_0x2d2595[_0xc96c('0x1f')],function(_0x15b68b){return{'model':db[_0x15b68b[_0xc96c('0x20')]],'as':_0x15b68b['as'],'attributes':_0x15b68b[_0xc96c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc96c('0xc')](function(_0x52d4a2){logger['info'](_0xc96c('0x23'),_0x3aa436);logger[_0xc96c('0x22')]('ShowVtigerAccount',_0x3aa436,JSON['stringify'](_0x52d4a2));_0x3f4b0e(_0x52d4a2);})[_0xc96c('0x16')](function(_0x1df393){logger[_0xc96c('0x12')](_0xc96c('0x23'),_0x1df393[_0xc96c('0x14')],_0x3aa436);_0x442c7f(_0x53c994[_0xc96c('0x12')](0x1f4,_0x1df393[_0xc96c('0x14')]));});});};
\ No newline at end of file
+var _0xb10b=['../../config/environment','jayson/promise','http','request','then','info','VtigerAccount,\x20%s,\x20%s','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','include','map','model','debug','catch','ShowVtigerAccount','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x25eda7,_0x2c5134){var _0x285a58=function(_0x297ad5){while(--_0x297ad5){_0x25eda7['push'](_0x25eda7['shift']());}};_0x285a58(++_0x2c5134);}(_0xb10b,0x12a));var _0xbb10=function(_0xa79977,_0x4f7f12){_0xa79977=_0xa79977-0x0;var _0x109f10=_0xb10b[_0xa79977];return _0x109f10;};'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,'limit':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['limit']||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1c')],function(_0x407cb4){return{'model':db[_0x407cb4[_0xbb10('0x1e')]],'as':_0x407cb4['as'],'attributes':_0x407cb4[_0xbb10('0x1b')],'include':_0x407cb4[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x407cb4[_0xbb10('0x1c')],function(_0x537898){return{'model':db[_0x537898['model']],'as':_0x537898['as'],'attributes':_0x537898['attributes'],'include':_0x537898[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x537898[_0xbb10('0x1c')],function(_0x4e25ff){return{'model':db[_0x4e25ff[_0xbb10('0x1e')]],'as':_0x4e25ff['as'],'attributes':_0x4e25ff[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbb10('0xc')](function(_0x1d5e95){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')]('GetVtigerAccount',_0x378da8,JSON[_0xbb10('0x11')](_0x1d5e95));_0x575cca(_0x1d5e95);})[_0xbb10('0x20')](function(_0xfc3595){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0xfc3595[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4['error'](0x1f4,_0xfc3595[_0xbb10('0x13')]));});});};exports['ShowVtigerAccount']=function(_0x448d5c){var _0x56f2da=this;return new Promise(function(_0x16ad2a,_0x1dcc9c){return db[_0xbb10('0x16')]['find']({'raw':_0x448d5c['options']?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x448d5c['options']?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x448d5c[_0xbb10('0x18')]?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1b')]||null:null,'include':_0x448d5c[_0xbb10('0x18')]?_0x448d5c[_0xbb10('0x18')]['include']?_[_0xbb10('0x1d')](_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1c')],function(_0x8c1ce6){return{'model':db[_0x8c1ce6[_0xbb10('0x1e')]],'as':_0x8c1ce6['as'],'attributes':_0x8c1ce6[_0xbb10('0x1b')],'include':_0x8c1ce6[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x8c1ce6[_0xbb10('0x1c')],function(_0x56943c){return{'model':db[_0x56943c[_0xbb10('0x1e')]],'as':_0x56943c['as'],'attributes':_0x56943c[_0xbb10('0x1b')],'include':_0x56943c[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x56943c['include'],function(_0x111762){return{'model':db[_0x111762['model']],'as':_0x111762['as'],'attributes':_0x111762['attributes']};}):[]};}):[]};}):[]:[]})[_0xbb10('0xc')](function(_0x40c164){logger[_0xbb10('0xd')](_0xbb10('0x21'),_0x448d5c);logger[_0xbb10('0x1f')](_0xbb10('0x21'),_0x448d5c,JSON['stringify'](_0x40c164));_0x16ad2a(_0x40c164);})[_0xbb10('0x20')](function(_0x25d72f){logger['error']('ShowVtigerAccount',_0x25d72f['message'],_0x448d5c);_0x1dcc9c(_0x56f2da[_0xbb10('0x12')](0x1f4,_0x25d72f[_0xbb10('0x13')]));});});};
\ No newline at end of file
index ba813f0..aa4d5fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a17=['/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','/:id/fields','getSubjects','/:id/descriptions','getDescriptions','post','create'];(function(_0x236e4b,_0x136c92){var _0x5cce4e=function(_0x4c29eb){while(--_0x4c29eb){_0x236e4b['push'](_0x236e4b['shift']());}};_0x5cce4e(++_0x136c92);}(_0x1a17,0x9e));var _0x71a1=function(_0x36e14a,_0x55d29b){_0x36e14a=_0x36e14a-0x0;var _0x33a7b6=_0x1a17[_0x36e14a];return _0x33a7b6;};'use strict';var multer=require(_0x71a1('0x0'));var util=require(_0x71a1('0x1'));var path=require(_0x71a1('0x2'));var timeout=require(_0x71a1('0x3'));var express=require(_0x71a1('0x4'));var router=express[_0x71a1('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x71a1('0x6'));var interaction=require(_0x71a1('0x7'));var config=require('../../config/environment');var controller=require('./intVtigerConfiguration.controller');router[_0x71a1('0x8')]('/',auth[_0x71a1('0x9')](),controller[_0x71a1('0xa')]);router[_0x71a1('0x8')]('/:id',auth[_0x71a1('0x9')](),controller[_0x71a1('0xb')]);router[_0x71a1('0x8')](_0x71a1('0xc'),auth[_0x71a1('0x9')](),controller['getFields']);router[_0x71a1('0x8')]('/:id/subjects',auth[_0x71a1('0x9')](),controller[_0x71a1('0xd')]);router[_0x71a1('0x8')](_0x71a1('0xe'),auth[_0x71a1('0x9')](),controller[_0x71a1('0xf')]);router[_0x71a1('0x10')]('/',auth['isAuthenticated'](),controller[_0x71a1('0x11')]);router['put'](_0x71a1('0x12'),auth[_0x71a1('0x9')](),controller['update']);router[_0x71a1('0x13')](_0x71a1('0x12'),auth['isAuthenticated'](),controller[_0x71a1('0x14')]);module[_0x71a1('0x15')]=router;
\ No newline at end of file
+var _0xb9b9=['post','put','update','delete','destroy','multer','util','connect-timeout','express','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','get','getDescriptions'];(function(_0x2d038a,_0x46c80e){var _0x43fff7=function(_0x524afd){while(--_0x524afd){_0x2d038a['push'](_0x2d038a['shift']());}};_0x43fff7(++_0x46c80e);}(_0xb9b9,0x17f));var _0x9b9b=function(_0x3486d8,_0x1268ac){_0x3486d8=_0x3486d8-0x0;var _0x3f6522=_0xb9b9[_0x3486d8];return _0x3f6522;};'use strict';var multer=require(_0x9b9b('0x0'));var util=require(_0x9b9b('0x1'));var path=require('path');var timeout=require(_0x9b9b('0x2'));var express=require(_0x9b9b('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9b9b('0x4'));var config=require(_0x9b9b('0x5'));var controller=require('./intVtigerConfiguration.controller');router['get']('/',auth[_0x9b9b('0x6')](),controller[_0x9b9b('0x7')]);router['get'](_0x9b9b('0x8'),auth[_0x9b9b('0x6')](),controller[_0x9b9b('0x9')]);router['get'](_0x9b9b('0xa'),auth['isAuthenticated'](),controller[_0x9b9b('0xb')]);router['get'](_0x9b9b('0xc'),auth[_0x9b9b('0x6')](),controller[_0x9b9b('0xd')]);router[_0x9b9b('0xe')]('/:id/descriptions',auth[_0x9b9b('0x6')](),controller[_0x9b9b('0xf')]);router[_0x9b9b('0x10')]('/',auth[_0x9b9b('0x6')](),controller['create']);router[_0x9b9b('0x11')](_0x9b9b('0x8'),auth[_0x9b9b('0x6')](),controller[_0x9b9b('0x12')]);router[_0x9b9b('0x13')](_0x9b9b('0x8'),auth['isAuthenticated'](),controller[_0x9b9b('0x14')]);module['exports']=router;
\ No newline at end of file
index 54cdd1d..8f8f4b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eac=['sequelize','exports','STRING'];(function(_0x27c3a0,_0xbc472f){var _0x56f275=function(_0xd2df04){while(--_0xd2df04){_0x27c3a0['push'](_0x27c3a0['shift']());}};_0x56f275(++_0xbc472f);}(_0x6eac,0x72));var _0xc6ea=function(_0xc5ebca,_0x40d7ca){_0xc5ebca=_0xc5ebca-0x0;var _0x360b94=_0x6eac[_0xc5ebca];return _0x360b94;};'use strict';var Sequelize=require(_0xc6ea('0x0'));module[_0xc6ea('0x1')]={'name':{'type':Sequelize[_0xc6ea('0x2')]},'description':{'type':Sequelize[_0xc6ea('0x2')]}};
\ No newline at end of file
+var _0x64e7=['STRING','sequelize','exports'];(function(_0xd5010e,_0x4914f9){var _0x2f4ab3=function(_0x5bcfa7){while(--_0x5bcfa7){_0xd5010e['push'](_0xd5010e['shift']());}};_0x2f4ab3(++_0x4914f9);}(_0x64e7,0x190));var _0x764e=function(_0x1e188a,_0x5a8636){_0x1e188a=_0x1e188a-0x0;var _0x57586e=_0x64e7[_0x1e188a];return _0x57586e;};'use strict';var Sequelize=require(_0x764e('0x0'));module[_0x764e('0x1')]={'name':{'type':Sequelize[_0x764e('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 763221e..c72b80a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb7c=['update','then','destroy','error','stack','index','map','fieldName','type','key','name','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','count','includeAll','include','VtigerConfiguration','findAll','rows','params','rawAttributes','keys','catch','body','find','findOne','getFields','hasOwnProperty','getSubjects','VtigerField','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','offset','limit','json','apply','reject'];(function(_0x308c6a,_0xe04d64){var _0x257b4d=function(_0x31125c){while(--_0x31125c){_0x308c6a['push'](_0x308c6a['shift']());}};_0x257b4d(++_0xe04d64);}(_0xeb7c,0xcb));var _0xceb7=function(_0x625396,_0x454ab6){_0x625396=_0x625396-0x0;var _0x483738=_0xeb7c[_0x625396];return _0x483738;};'use strict';var emlformat=require(_0xceb7('0x0'));var rimraf=require(_0xceb7('0x1'));var zipdir=require(_0xceb7('0x2'));var jsonpatch=require(_0xceb7('0x3'));var rp=require('request-promise');var moment=require(_0xceb7('0x4'));var BPromise=require(_0xceb7('0x5'));var Mustache=require(_0xceb7('0x6'));var util=require('util');var path=require(_0xceb7('0x7'));var sox=require(_0xceb7('0x8'));var csv=require(_0xceb7('0x9'));var ejs=require(_0xceb7('0xa'));var fs=require('fs');var fs_extra=require(_0xceb7('0xb'));var _=require(_0xceb7('0xc'));var squel=require(_0xceb7('0xd'));var crypto=require(_0xceb7('0xe'));var jsforce=require(_0xceb7('0xf'));var deskjs=require(_0xceb7('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xceb7('0x11'));var Redis=require(_0xceb7('0x12'));var authService=require(_0xceb7('0x13'));var qs=require(_0xceb7('0x14'));var as=require(_0xceb7('0x15'));var hardwareService=require(_0xceb7('0x16'));var logger=require('../../config/logger')(_0xceb7('0x17'));var utils=require(_0xceb7('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xceb7('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e4686,_0x820fe6){_0x820fe6=_0x820fe6||0xcc;return function(_0x4daf45){if(_0x4daf45){return _0x5e4686[_0xceb7('0x1a')](_0x820fe6);}return _0x5e4686[_0xceb7('0x1b')](_0x820fe6)[_0xceb7('0x1c')]();};}function respondWithResult(_0x4ad8a5,_0x23e147){_0x23e147=_0x23e147||0xc8;return function(_0x558433){if(_0x558433){return _0x4ad8a5[_0xceb7('0x1b')](_0x23e147)['json'](_0x558433);}};}function respondWithFilteredResult(_0x3ee599,_0x39ac1a){return function(_0xcc3964){if(_0xcc3964){var _0x27c618=typeof _0x39ac1a[_0xceb7('0x1d')]==='undefined'&&typeof _0x39ac1a[_0xceb7('0x1e')]==='undefined';var _0x563029=_0xcc3964['count'];var _0x2f1b63=_0x27c618?0x0:_0x39ac1a['offset'];var _0x36093e=_0x27c618?_0xcc3964['count']:_0x39ac1a[_0xceb7('0x1d')]+_0x39ac1a['limit'];var _0x5225bf;if(_0x36093e>=_0x563029){_0x36093e=_0x563029;_0x5225bf=0xc8;}else{_0x5225bf=0xce;}_0x3ee599['status'](_0x5225bf);return _0x3ee599['set']('Content-Range',_0x2f1b63+'-'+_0x36093e+'/'+_0x563029)[_0xceb7('0x1f')](_0xcc3964);}return null;};}function patchUpdates(_0x2deff8){return function(_0x52250b){try{jsonpatch[_0xceb7('0x20')](_0x52250b,_0x2deff8,!![]);}catch(_0x32cd7e){return BPromise[_0xceb7('0x21')](_0x32cd7e);}return _0x52250b['save']();};}function saveUpdates(_0x4cde5,_0x528176){return function(_0x40b699){if(_0x40b699){return _0x40b699[_0xceb7('0x22')](_0x4cde5)[_0xceb7('0x23')](function(_0x398cef){return _0x398cef;});}return null;};}function removeEntity(_0x4ba2bc,_0x534afd){return function(_0x40a06f){if(_0x40a06f){return _0x40a06f[_0xceb7('0x24')]()['then'](function(){_0x4ba2bc[_0xceb7('0x1b')](0xcc)[_0xceb7('0x1c')]();});}};}function handleEntityNotFound(_0x1e4fb9,_0x2858f7){return function(_0x3ef3e3){if(!_0x3ef3e3){_0x1e4fb9[_0xceb7('0x1a')](0x194);}return _0x3ef3e3;};}function handleError(_0x5ae48c,_0x26eb9e){_0x26eb9e=_0x26eb9e||0x1f4;return function(_0x422cfa){logger[_0xceb7('0x25')](_0x422cfa[_0xceb7('0x26')]);if(_0x422cfa['name']){delete _0x422cfa['name'];}_0x5ae48c['status'](_0x26eb9e)['send'](_0x422cfa);};}exports[_0xceb7('0x27')]=function(_0x365337,_0x4adb58){var _0x354fff={},_0x286b9a={},_0x5b79c5={'count':0x0,'rows':[]};var _0x4222e5=_[_0xceb7('0x28')](db['VtigerConfiguration']['rawAttributes'],function(_0x2dfd3d){return{'name':_0x2dfd3d[_0xceb7('0x29')],'type':_0x2dfd3d[_0xceb7('0x2a')][_0xceb7('0x2b')]};});_0x286b9a['model']=_[_0xceb7('0x28')](_0x4222e5,_0xceb7('0x2c'));_0x286b9a[_0xceb7('0x2d')]=_['keys'](_0x365337[_0xceb7('0x2d')]);_0x286b9a[_0xceb7('0x2e')]=_[_0xceb7('0x2f')](_0x286b9a[_0xceb7('0x30')],_0x286b9a[_0xceb7('0x2d')]);_0x354fff[_0xceb7('0x31')]=_[_0xceb7('0x2f')](_0x286b9a[_0xceb7('0x30')],qs[_0xceb7('0x32')](_0x365337[_0xceb7('0x2d')][_0xceb7('0x32')]));_0x354fff[_0xceb7('0x31')]=_0x354fff[_0xceb7('0x31')][_0xceb7('0x33')]?_0x354fff[_0xceb7('0x31')]:_0x286b9a[_0xceb7('0x30')];if(!_0x365337[_0xceb7('0x2d')]['hasOwnProperty'](_0xceb7('0x34'))){_0x354fff[_0xceb7('0x1e')]=qs[_0xceb7('0x1e')](_0x365337['query'][_0xceb7('0x1e')]);_0x354fff[_0xceb7('0x1d')]=qs[_0xceb7('0x1d')](_0x365337[_0xceb7('0x2d')][_0xceb7('0x1d')]);}_0x354fff[_0xceb7('0x35')]=qs[_0xceb7('0x36')](_0x365337[_0xceb7('0x2d')][_0xceb7('0x36')]);_0x354fff['where']=qs[_0xceb7('0x2e')](_[_0xceb7('0x37')](_0x365337[_0xceb7('0x2d')],_0x286b9a[_0xceb7('0x2e')]),_0x4222e5);if(_0x365337['query'][_0xceb7('0x38')]){_0x354fff[_0xceb7('0x39')]=_[_0xceb7('0x3a')](_0x354fff['where'],{'$or':_['map'](_0x4222e5,function(_0x480a6e){if(_0x480a6e['type']!==_0xceb7('0x3b')){var _0x3b4666={};_0x3b4666[_0x480a6e['name']]={'$like':'%'+_0x365337['query'][_0xceb7('0x38')]+'%'};return _0x3b4666;}})});}_0x354fff=_['merge']({},_0x354fff,_0x365337[_0xceb7('0x3c')]);var _0x9cdc04={'where':_0x354fff['where']};return db['VtigerConfiguration'][_0xceb7('0x3d')](_0x9cdc04)[_0xceb7('0x23')](function(_0x4c2aca){_0x5b79c5[_0xceb7('0x3d')]=_0x4c2aca;if(_0x365337[_0xceb7('0x2d')][_0xceb7('0x3e')]){_0x354fff[_0xceb7('0x3f')]=[{'all':!![]}];}return db[_0xceb7('0x40')][_0xceb7('0x41')](_0x354fff);})[_0xceb7('0x23')](function(_0x1ddda6){_0x5b79c5[_0xceb7('0x42')]=_0x1ddda6;return _0x5b79c5;})[_0xceb7('0x23')](respondWithFilteredResult(_0x4adb58,_0x354fff))['catch'](handleError(_0x4adb58,null));};exports['show']=function(_0x5d1ac1,_0x3a13fa){var _0x490d21={'raw':![],'where':{'id':_0x5d1ac1[_0xceb7('0x43')]['id']}},_0x3273e3={};_0x3273e3['model']=_['keys'](db[_0xceb7('0x40')][_0xceb7('0x44')]);_0x3273e3[_0xceb7('0x2d')]=_[_0xceb7('0x45')](_0x5d1ac1[_0xceb7('0x2d')]);_0x3273e3[_0xceb7('0x2e')]=_[_0xceb7('0x2f')](_0x3273e3[_0xceb7('0x30')],_0x3273e3[_0xceb7('0x2d')]);_0x490d21[_0xceb7('0x31')]=_[_0xceb7('0x2f')](_0x3273e3[_0xceb7('0x30')],qs[_0xceb7('0x32')](_0x5d1ac1[_0xceb7('0x2d')][_0xceb7('0x32')]));_0x490d21[_0xceb7('0x31')]=_0x490d21[_0xceb7('0x31')][_0xceb7('0x33')]?_0x490d21[_0xceb7('0x31')]:_0x3273e3[_0xceb7('0x30')];if(_0x5d1ac1[_0xceb7('0x2d')][_0xceb7('0x3e')]){_0x490d21[_0xceb7('0x3f')]=[{'all':!![]}];}_0x490d21=_[_0xceb7('0x3a')]({},_0x490d21,_0x5d1ac1[_0xceb7('0x3c')]);return db['VtigerConfiguration']['find'](_0x490d21)[_0xceb7('0x23')](handleEntityNotFound(_0x3a13fa,null))[_0xceb7('0x23')](respondWithResult(_0x3a13fa,null))[_0xceb7('0x46')](handleError(_0x3a13fa,null));};exports['create']=function(_0x4a0693,_0x5a6d81){return db[_0xceb7('0x40')]['create'](_0x4a0693[_0xceb7('0x47')],{})[_0xceb7('0x23')](respondWithResult(_0x5a6d81,0xc9))['catch'](handleError(_0x5a6d81,null));};exports['update']=function(_0x580d05,_0x1955f5){if(_0x580d05[_0xceb7('0x47')]['id']){delete _0x580d05[_0xceb7('0x47')]['id'];}return db[_0xceb7('0x40')][_0xceb7('0x48')]({'where':{'id':_0x580d05['params']['id']}})['then'](handleEntityNotFound(_0x1955f5,null))[_0xceb7('0x23')](saveUpdates(_0x580d05[_0xceb7('0x47')],null))['then'](respondWithResult(_0x1955f5,null))[_0xceb7('0x46')](handleError(_0x1955f5,null));};exports[_0xceb7('0x24')]=function(_0x1b2757,_0x3e167a){return db[_0xceb7('0x40')][_0xceb7('0x48')]({'where':{'id':_0x1b2757['params']['id']}})[_0xceb7('0x23')](handleEntityNotFound(_0x3e167a,null))[_0xceb7('0x23')](removeEntity(_0x3e167a,null))[_0xceb7('0x46')](handleError(_0x3e167a,null));};exports['getFields']=function(_0x30781c,_0x47b0c4,_0xbefb40){var _0x667ae8={};var _0x1b4680={};var _0x5068c6;var _0x88f91c;return db[_0xceb7('0x40')][_0xceb7('0x49')]({'where':{'id':_0x30781c['params']['id']}})[_0xceb7('0x23')](handleEntityNotFound(_0x47b0c4,null))[_0xceb7('0x23')](function(_0x57635f){if(_0x57635f){_0x5068c6=_0x57635f;_0x1b4680[_0xceb7('0x30')]=_[_0xceb7('0x45')](db['VtigerField'][_0xceb7('0x44')]);_0x1b4680[_0xceb7('0x2d')]=_[_0xceb7('0x45')](_0x30781c['query']);_0x1b4680[_0xceb7('0x2e')]=_['intersection'](_0x1b4680[_0xceb7('0x30')],_0x1b4680[_0xceb7('0x2d')]);_0x667ae8[_0xceb7('0x31')]=_[_0xceb7('0x2f')](_0x1b4680[_0xceb7('0x30')],qs['fields'](_0x30781c[_0xceb7('0x2d')][_0xceb7('0x32')]));_0x667ae8[_0xceb7('0x31')]=_0x667ae8[_0xceb7('0x31')][_0xceb7('0x33')]?_0x667ae8[_0xceb7('0x31')]:_0x1b4680['model'];_0x667ae8[_0xceb7('0x35')]=qs[_0xceb7('0x36')](_0x30781c['query'][_0xceb7('0x36')]);_0x667ae8[_0xceb7('0x39')]=qs[_0xceb7('0x2e')](_[_0xceb7('0x37')](_0x30781c['query'],_0x1b4680['filters']));if(_0x30781c[_0xceb7('0x2d')][_0xceb7('0x38')]){_0x667ae8[_0xceb7('0x39')]=_[_0xceb7('0x3a')](_0x667ae8[_0xceb7('0x39')],{'$or':_[_0xceb7('0x28')](_0x667ae8[_0xceb7('0x31')],function(_0x251f21){var _0x3b9497={};_0x3b9497[_0x251f21]={'$like':'%'+_0x30781c[_0xceb7('0x2d')][_0xceb7('0x38')]+'%'};return _0x3b9497;})});}_0x667ae8=_[_0xceb7('0x3a')]({},_0x667ae8,_0x30781c[_0xceb7('0x3c')]);return _0x5068c6[_0xceb7('0x4a')](_0x667ae8);}})['then'](function(_0x36917e){if(_0x36917e){_0x88f91c=_0x36917e[_0xceb7('0x33')];if(!_0x30781c[_0xceb7('0x2d')][_0xceb7('0x4b')](_0xceb7('0x34'))){_0x667ae8[_0xceb7('0x1e')]=qs[_0xceb7('0x1e')](_0x30781c[_0xceb7('0x2d')][_0xceb7('0x1e')]);_0x667ae8[_0xceb7('0x1d')]=qs['offset'](_0x30781c[_0xceb7('0x2d')]['offset']);}return _0x5068c6[_0xceb7('0x4a')](_0x667ae8);}})['then'](function(_0x138d85){if(_0x138d85){return _0x138d85?{'count':_0x88f91c,'rows':_0x138d85}:null;}})[_0xceb7('0x23')](respondWithResult(_0x47b0c4,null))[_0xceb7('0x46')](handleError(_0x47b0c4,null));};exports[_0xceb7('0x4c')]=function(_0x5543ce,_0x3ee0c1,_0x10c785){var _0x2ae338={};var _0x16c234={};var _0x52677a;var _0x29522e;return db[_0xceb7('0x40')][_0xceb7('0x49')]({'where':{'id':_0x5543ce[_0xceb7('0x43')]['id']}})['then'](handleEntityNotFound(_0x3ee0c1,null))['then'](function(_0x260120){if(_0x260120){_0x52677a=_0x260120;_0x16c234[_0xceb7('0x30')]=_[_0xceb7('0x45')](db[_0xceb7('0x4d')]['rawAttributes']);_0x16c234[_0xceb7('0x2d')]=_[_0xceb7('0x45')](_0x5543ce[_0xceb7('0x2d')]);_0x16c234[_0xceb7('0x2e')]=_[_0xceb7('0x2f')](_0x16c234['model'],_0x16c234[_0xceb7('0x2d')]);_0x2ae338[_0xceb7('0x31')]=_['intersection'](_0x16c234['model'],qs[_0xceb7('0x32')](_0x5543ce[_0xceb7('0x2d')][_0xceb7('0x32')]));_0x2ae338[_0xceb7('0x31')]=_0x2ae338['attributes'][_0xceb7('0x33')]?_0x2ae338[_0xceb7('0x31')]:_0x16c234[_0xceb7('0x30')];_0x2ae338[_0xceb7('0x35')]=qs[_0xceb7('0x36')](_0x5543ce[_0xceb7('0x2d')][_0xceb7('0x36')]);_0x2ae338[_0xceb7('0x39')]=qs['filters'](_[_0xceb7('0x37')](_0x5543ce['query'],_0x16c234[_0xceb7('0x2e')]));if(_0x5543ce[_0xceb7('0x2d')][_0xceb7('0x38')]){_0x2ae338[_0xceb7('0x39')]=_[_0xceb7('0x3a')](_0x2ae338[_0xceb7('0x39')],{'$or':_[_0xceb7('0x28')](_0x2ae338[_0xceb7('0x31')],function(_0x1a7c1f){var _0xc1ac10={};_0xc1ac10[_0x1a7c1f]={'$like':'%'+_0x5543ce[_0xceb7('0x2d')]['filter']+'%'};return _0xc1ac10;})});}_0x2ae338=_[_0xceb7('0x3a')]({},_0x2ae338,_0x5543ce[_0xceb7('0x3c')]);return _0x52677a['getSubjects'](_0x2ae338);}})[_0xceb7('0x23')](function(_0x567691){if(_0x567691){_0x29522e=_0x567691[_0xceb7('0x33')];if(!_0x5543ce[_0xceb7('0x2d')][_0xceb7('0x4b')](_0xceb7('0x34'))){_0x2ae338[_0xceb7('0x1e')]=qs[_0xceb7('0x1e')](_0x5543ce[_0xceb7('0x2d')][_0xceb7('0x1e')]);_0x2ae338[_0xceb7('0x1d')]=qs['offset'](_0x5543ce[_0xceb7('0x2d')][_0xceb7('0x1d')]);}return _0x52677a['getSubjects'](_0x2ae338);}})['then'](function(_0x6fb1c2){if(_0x6fb1c2){return _0x6fb1c2?{'count':_0x29522e,'rows':_0x6fb1c2}:null;}})[_0xceb7('0x23')](respondWithResult(_0x3ee0c1,null))[_0xceb7('0x46')](handleError(_0x3ee0c1,null));};exports[_0xceb7('0x4e')]=function(_0x5bd829,_0xa69a6b,_0x567ed9){var _0xdfa4df={};var _0x3d8742={};var _0x3f5dd5;var _0x567cdd;return db[_0xceb7('0x40')][_0xceb7('0x49')]({'where':{'id':_0x5bd829[_0xceb7('0x43')]['id']}})[_0xceb7('0x23')](handleEntityNotFound(_0xa69a6b,null))[_0xceb7('0x23')](function(_0x27f578){if(_0x27f578){_0x3f5dd5=_0x27f578;_0x3d8742['model']=_['keys'](db['VtigerField'][_0xceb7('0x44')]);_0x3d8742[_0xceb7('0x2d')]=_[_0xceb7('0x45')](_0x5bd829['query']);_0x3d8742['filters']=_[_0xceb7('0x2f')](_0x3d8742['model'],_0x3d8742[_0xceb7('0x2d')]);_0xdfa4df[_0xceb7('0x31')]=_[_0xceb7('0x2f')](_0x3d8742[_0xceb7('0x30')],qs['fields'](_0x5bd829[_0xceb7('0x2d')]['fields']));_0xdfa4df['attributes']=_0xdfa4df['attributes']['length']?_0xdfa4df[_0xceb7('0x31')]:_0x3d8742[_0xceb7('0x30')];_0xdfa4df[_0xceb7('0x35')]=qs[_0xceb7('0x36')](_0x5bd829[_0xceb7('0x2d')]['sort']);_0xdfa4df[_0xceb7('0x39')]=qs[_0xceb7('0x2e')](_[_0xceb7('0x37')](_0x5bd829['query'],_0x3d8742[_0xceb7('0x2e')]));if(_0x5bd829['query'][_0xceb7('0x38')]){_0xdfa4df[_0xceb7('0x39')]=_[_0xceb7('0x3a')](_0xdfa4df[_0xceb7('0x39')],{'$or':_[_0xceb7('0x28')](_0xdfa4df[_0xceb7('0x31')],function(_0x10acb8){var _0x306e59={};_0x306e59[_0x10acb8]={'$like':'%'+_0x5bd829[_0xceb7('0x2d')][_0xceb7('0x38')]+'%'};return _0x306e59;})});}_0xdfa4df=_[_0xceb7('0x3a')]({},_0xdfa4df,_0x5bd829[_0xceb7('0x3c')]);return _0x3f5dd5[_0xceb7('0x4e')](_0xdfa4df);}})[_0xceb7('0x23')](function(_0x51a420){if(_0x51a420){_0x567cdd=_0x51a420[_0xceb7('0x33')];if(!_0x5bd829[_0xceb7('0x2d')][_0xceb7('0x4b')](_0xceb7('0x34'))){_0xdfa4df[_0xceb7('0x1e')]=qs[_0xceb7('0x1e')](_0x5bd829[_0xceb7('0x2d')]['limit']);_0xdfa4df[_0xceb7('0x1d')]=qs[_0xceb7('0x1d')](_0x5bd829[_0xceb7('0x2d')][_0xceb7('0x1d')]);}return _0x3f5dd5['getDescriptions'](_0xdfa4df);}})[_0xceb7('0x23')](function(_0x41509d){if(_0x41509d){return _0x41509d?{'count':_0x567cdd,'rows':_0x41509d}:null;}})[_0xceb7('0x23')](respondWithResult(_0xa69a6b,null))[_0xceb7('0x46')](handleError(_0xa69a6b,null));};
\ No newline at end of file
+var _0xc173=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','destroy','end','error','stack','name','send','VtigerConfiguration','rawAttributes','fieldName','type','model','map','keys','query','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','options','find','create','body','update','params','findOne','getFields','hasOwnProperty','getSubjects','VtigerField','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox'];(function(_0x5be40e,_0x12997e){var _0x3db6e1=function(_0x3fa7c8){while(--_0x3fa7c8){_0x5be40e['push'](_0x5be40e['shift']());}};_0x3db6e1(++_0x12997e);}(_0xc173,0x9b));var _0x3c17=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc173[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x3c17('0x0'));var rimraf=require(_0x3c17('0x1'));var zipdir=require(_0x3c17('0x2'));var jsonpatch=require(_0x3c17('0x3'));var rp=require(_0x3c17('0x4'));var moment=require('moment');var BPromise=require(_0x3c17('0x5'));var Mustache=require(_0x3c17('0x6'));var util=require('util');var path=require(_0x3c17('0x7'));var sox=require(_0x3c17('0x8'));var csv=require(_0x3c17('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3c17('0xa'));var _=require(_0x3c17('0xb'));var squel=require(_0x3c17('0xc'));var crypto=require(_0x3c17('0xd'));var jsforce=require(_0x3c17('0xe'));var deskjs=require(_0x3c17('0xf'));var toCsv=require(_0x3c17('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3c17('0x10'));var authService=require(_0x3c17('0x11'));var qs=require(_0x3c17('0x12'));var as=require(_0x3c17('0x13'));var hardwareService=require(_0x3c17('0x14'));var logger=require(_0x3c17('0x15'))('api');var utils=require(_0x3c17('0x16'));var config=require(_0x3c17('0x17'));var licenseUtil=require(_0x3c17('0x18'));var db=require(_0x3c17('0x19'))['db'];function respondWithStatusCode(_0xc2294,_0xe40168){_0xe40168=_0xe40168||0xcc;return function(_0x4db3db){if(_0x4db3db){return _0xc2294['sendStatus'](_0xe40168);}return _0xc2294[_0x3c17('0x1a')](_0xe40168)['end']();};}function respondWithResult(_0x492096,_0x148700){_0x148700=_0x148700||0xc8;return function(_0xcf43b3){if(_0xcf43b3){return _0x492096['status'](_0x148700)['json'](_0xcf43b3);}};}function respondWithFilteredResult(_0x7f74f,_0x4a1854){return function(_0x568ccb){if(_0x568ccb){var _0x11f456=typeof _0x4a1854[_0x3c17('0x1b')]===_0x3c17('0x1c')&&typeof _0x4a1854[_0x3c17('0x1d')]===_0x3c17('0x1c');var _0x4dfbb1=_0x568ccb[_0x3c17('0x1e')];var _0x1c8494=_0x11f456?0x0:_0x4a1854['offset'];var _0x4bbf9c=_0x11f456?_0x568ccb[_0x3c17('0x1e')]:_0x4a1854[_0x3c17('0x1b')]+_0x4a1854['limit'];var _0x3b2e56;if(_0x4bbf9c>=_0x4dfbb1){_0x4bbf9c=_0x4dfbb1;_0x3b2e56=0xc8;}else{_0x3b2e56=0xce;}_0x7f74f[_0x3c17('0x1a')](_0x3b2e56);return _0x7f74f[_0x3c17('0x1f')](_0x3c17('0x20'),_0x1c8494+'-'+_0x4bbf9c+'/'+_0x4dfbb1)[_0x3c17('0x21')](_0x568ccb);}return null;};}function patchUpdates(_0x892e05){return function(_0x2a0836){try{jsonpatch[_0x3c17('0x22')](_0x2a0836,_0x892e05,!![]);}catch(_0x472ab8){return BPromise[_0x3c17('0x23')](_0x472ab8);}return _0x2a0836['save']();};}function saveUpdates(_0x4a4c68,_0x557e77){return function(_0x66b766){if(_0x66b766){return _0x66b766['update'](_0x4a4c68)[_0x3c17('0x24')](function(_0xbacba4){return _0xbacba4;});}return null;};}function removeEntity(_0x51285b,_0x5096b1){return function(_0x3110ab){if(_0x3110ab){return _0x3110ab[_0x3c17('0x25')]()[_0x3c17('0x24')](function(){_0x51285b[_0x3c17('0x1a')](0xcc)[_0x3c17('0x26')]();});}};}function handleEntityNotFound(_0xe169a5,_0x67c1e2){return function(_0x52cf71){if(!_0x52cf71){_0xe169a5['sendStatus'](0x194);}return _0x52cf71;};}function handleError(_0x12cd49,_0x2783e6){_0x2783e6=_0x2783e6||0x1f4;return function(_0x1111f5){logger[_0x3c17('0x27')](_0x1111f5[_0x3c17('0x28')]);if(_0x1111f5[_0x3c17('0x29')]){delete _0x1111f5[_0x3c17('0x29')];}_0x12cd49[_0x3c17('0x1a')](_0x2783e6)[_0x3c17('0x2a')](_0x1111f5);};}exports['index']=function(_0x595dd5,_0x5747a4){var _0x180100={},_0x2e923d={},_0x1fcc0a={'count':0x0,'rows':[]};var _0x1ce443=_['map'](db[_0x3c17('0x2b')][_0x3c17('0x2c')],function(_0x34e8de){return{'name':_0x34e8de[_0x3c17('0x2d')],'type':_0x34e8de[_0x3c17('0x2e')]['key']};});_0x2e923d[_0x3c17('0x2f')]=_[_0x3c17('0x30')](_0x1ce443,_0x3c17('0x29'));_0x2e923d['query']=_[_0x3c17('0x31')](_0x595dd5[_0x3c17('0x32')]);_0x2e923d[_0x3c17('0x33')]=_['intersection'](_0x2e923d[_0x3c17('0x2f')],_0x2e923d[_0x3c17('0x32')]);_0x180100[_0x3c17('0x34')]=_[_0x3c17('0x35')](_0x2e923d[_0x3c17('0x2f')],qs[_0x3c17('0x36')](_0x595dd5[_0x3c17('0x32')][_0x3c17('0x36')]));_0x180100[_0x3c17('0x34')]=_0x180100[_0x3c17('0x34')][_0x3c17('0x37')]?_0x180100[_0x3c17('0x34')]:_0x2e923d[_0x3c17('0x2f')];if(!_0x595dd5['query']['hasOwnProperty'](_0x3c17('0x38'))){_0x180100['limit']=qs['limit'](_0x595dd5[_0x3c17('0x32')][_0x3c17('0x1d')]);_0x180100[_0x3c17('0x1b')]=qs[_0x3c17('0x1b')](_0x595dd5[_0x3c17('0x32')][_0x3c17('0x1b')]);}_0x180100[_0x3c17('0x39')]=qs['sort'](_0x595dd5[_0x3c17('0x32')][_0x3c17('0x3a')]);_0x180100['where']=qs[_0x3c17('0x33')](_[_0x3c17('0x3b')](_0x595dd5[_0x3c17('0x32')],_0x2e923d[_0x3c17('0x33')]),_0x1ce443);if(_0x595dd5[_0x3c17('0x32')]['filter']){_0x180100[_0x3c17('0x3c')]=_[_0x3c17('0x3d')](_0x180100['where'],{'$or':_[_0x3c17('0x30')](_0x1ce443,function(_0xc06b8c){if(_0xc06b8c['type']!==_0x3c17('0x3e')){var _0x42da22={};_0x42da22[_0xc06b8c[_0x3c17('0x29')]]={'$like':'%'+_0x595dd5[_0x3c17('0x32')][_0x3c17('0x3f')]+'%'};return _0x42da22;}})});}_0x180100=_[_0x3c17('0x3d')]({},_0x180100,_0x595dd5['options']);var _0x121aa8={'where':_0x180100[_0x3c17('0x3c')]};return db[_0x3c17('0x2b')][_0x3c17('0x1e')](_0x121aa8)['then'](function(_0x283f9e){_0x1fcc0a[_0x3c17('0x1e')]=_0x283f9e;if(_0x595dd5[_0x3c17('0x32')][_0x3c17('0x40')]){_0x180100[_0x3c17('0x41')]=[{'all':!![]}];}return db[_0x3c17('0x2b')][_0x3c17('0x42')](_0x180100);})[_0x3c17('0x24')](function(_0x22f27d){_0x1fcc0a[_0x3c17('0x43')]=_0x22f27d;return _0x1fcc0a;})['then'](respondWithFilteredResult(_0x5747a4,_0x180100))[_0x3c17('0x44')](handleError(_0x5747a4,null));};exports[_0x3c17('0x45')]=function(_0x555d65,_0x1f2618){var _0x5781b8={'raw':![],'where':{'id':_0x555d65['params']['id']}},_0x5a014d={};_0x5a014d['model']=_[_0x3c17('0x31')](db[_0x3c17('0x2b')][_0x3c17('0x2c')]);_0x5a014d[_0x3c17('0x32')]=_['keys'](_0x555d65[_0x3c17('0x32')]);_0x5a014d[_0x3c17('0x33')]=_[_0x3c17('0x35')](_0x5a014d[_0x3c17('0x2f')],_0x5a014d[_0x3c17('0x32')]);_0x5781b8[_0x3c17('0x34')]=_[_0x3c17('0x35')](_0x5a014d[_0x3c17('0x2f')],qs['fields'](_0x555d65[_0x3c17('0x32')][_0x3c17('0x36')]));_0x5781b8[_0x3c17('0x34')]=_0x5781b8[_0x3c17('0x34')][_0x3c17('0x37')]?_0x5781b8['attributes']:_0x5a014d[_0x3c17('0x2f')];if(_0x555d65['query'][_0x3c17('0x40')]){_0x5781b8[_0x3c17('0x41')]=[{'all':!![]}];}_0x5781b8=_[_0x3c17('0x3d')]({},_0x5781b8,_0x555d65[_0x3c17('0x46')]);return db['VtigerConfiguration'][_0x3c17('0x47')](_0x5781b8)[_0x3c17('0x24')](handleEntityNotFound(_0x1f2618,null))[_0x3c17('0x24')](respondWithResult(_0x1f2618,null))[_0x3c17('0x44')](handleError(_0x1f2618,null));};exports['create']=function(_0x3c8c5b,_0x33acc6){return db[_0x3c17('0x2b')][_0x3c17('0x48')](_0x3c8c5b[_0x3c17('0x49')],{})['then'](respondWithResult(_0x33acc6,0xc9))['catch'](handleError(_0x33acc6,null));};exports[_0x3c17('0x4a')]=function(_0x3e6e5a,_0x1b09de){if(_0x3e6e5a[_0x3c17('0x49')]['id']){delete _0x3e6e5a[_0x3c17('0x49')]['id'];}return db['VtigerConfiguration'][_0x3c17('0x47')]({'where':{'id':_0x3e6e5a[_0x3c17('0x4b')]['id']}})[_0x3c17('0x24')](handleEntityNotFound(_0x1b09de,null))[_0x3c17('0x24')](saveUpdates(_0x3e6e5a[_0x3c17('0x49')],null))[_0x3c17('0x24')](respondWithResult(_0x1b09de,null))[_0x3c17('0x44')](handleError(_0x1b09de,null));};exports[_0x3c17('0x25')]=function(_0x2f4000,_0x4cb2f5){return db[_0x3c17('0x2b')][_0x3c17('0x47')]({'where':{'id':_0x2f4000['params']['id']}})[_0x3c17('0x24')](handleEntityNotFound(_0x4cb2f5,null))['then'](removeEntity(_0x4cb2f5,null))[_0x3c17('0x44')](handleError(_0x4cb2f5,null));};exports['getFields']=function(_0x387a7b,_0x3385af,_0x3b5c22){var _0x25d753={};var _0x20c38c={};var _0x12ad5c;var _0x4e0f45;return db[_0x3c17('0x2b')][_0x3c17('0x4c')]({'where':{'id':_0x387a7b['params']['id']}})['then'](handleEntityNotFound(_0x3385af,null))[_0x3c17('0x24')](function(_0x173957){if(_0x173957){_0x12ad5c=_0x173957;_0x20c38c['model']=_[_0x3c17('0x31')](db['VtigerField']['rawAttributes']);_0x20c38c[_0x3c17('0x32')]=_[_0x3c17('0x31')](_0x387a7b[_0x3c17('0x32')]);_0x20c38c[_0x3c17('0x33')]=_[_0x3c17('0x35')](_0x20c38c[_0x3c17('0x2f')],_0x20c38c[_0x3c17('0x32')]);_0x25d753[_0x3c17('0x34')]=_['intersection'](_0x20c38c['model'],qs['fields'](_0x387a7b[_0x3c17('0x32')]['fields']));_0x25d753['attributes']=_0x25d753['attributes'][_0x3c17('0x37')]?_0x25d753[_0x3c17('0x34')]:_0x20c38c['model'];_0x25d753[_0x3c17('0x39')]=qs[_0x3c17('0x3a')](_0x387a7b['query'][_0x3c17('0x3a')]);_0x25d753[_0x3c17('0x3c')]=qs[_0x3c17('0x33')](_[_0x3c17('0x3b')](_0x387a7b[_0x3c17('0x32')],_0x20c38c[_0x3c17('0x33')]));if(_0x387a7b[_0x3c17('0x32')][_0x3c17('0x3f')]){_0x25d753['where']=_[_0x3c17('0x3d')](_0x25d753['where'],{'$or':_[_0x3c17('0x30')](_0x25d753[_0x3c17('0x34')],function(_0x3542de){var _0x5bf33b={};_0x5bf33b[_0x3542de]={'$like':'%'+_0x387a7b['query'][_0x3c17('0x3f')]+'%'};return _0x5bf33b;})});}_0x25d753=_[_0x3c17('0x3d')]({},_0x25d753,_0x387a7b['options']);return _0x12ad5c[_0x3c17('0x4d')](_0x25d753);}})['then'](function(_0x4ea741){if(_0x4ea741){_0x4e0f45=_0x4ea741[_0x3c17('0x37')];if(!_0x387a7b[_0x3c17('0x32')][_0x3c17('0x4e')](_0x3c17('0x38'))){_0x25d753[_0x3c17('0x1d')]=qs[_0x3c17('0x1d')](_0x387a7b[_0x3c17('0x32')]['limit']);_0x25d753[_0x3c17('0x1b')]=qs[_0x3c17('0x1b')](_0x387a7b[_0x3c17('0x32')][_0x3c17('0x1b')]);}return _0x12ad5c[_0x3c17('0x4d')](_0x25d753);}})[_0x3c17('0x24')](function(_0x397947){if(_0x397947){return _0x397947?{'count':_0x4e0f45,'rows':_0x397947}:null;}})[_0x3c17('0x24')](respondWithResult(_0x3385af,null))[_0x3c17('0x44')](handleError(_0x3385af,null));};exports[_0x3c17('0x4f')]=function(_0x557a77,_0x3ec7b5,_0x391efb){var _0x14a9b2={};var _0x374579={};var _0x3a6a20;var _0x5e805a;return db[_0x3c17('0x2b')][_0x3c17('0x4c')]({'where':{'id':_0x557a77[_0x3c17('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3ec7b5,null))['then'](function(_0x1c9dc3){if(_0x1c9dc3){_0x3a6a20=_0x1c9dc3;_0x374579['model']=_[_0x3c17('0x31')](db[_0x3c17('0x50')]['rawAttributes']);_0x374579[_0x3c17('0x32')]=_['keys'](_0x557a77[_0x3c17('0x32')]);_0x374579['filters']=_[_0x3c17('0x35')](_0x374579['model'],_0x374579['query']);_0x14a9b2[_0x3c17('0x34')]=_[_0x3c17('0x35')](_0x374579[_0x3c17('0x2f')],qs[_0x3c17('0x36')](_0x557a77[_0x3c17('0x32')][_0x3c17('0x36')]));_0x14a9b2[_0x3c17('0x34')]=_0x14a9b2[_0x3c17('0x34')]['length']?_0x14a9b2[_0x3c17('0x34')]:_0x374579[_0x3c17('0x2f')];_0x14a9b2[_0x3c17('0x39')]=qs[_0x3c17('0x3a')](_0x557a77[_0x3c17('0x32')]['sort']);_0x14a9b2[_0x3c17('0x3c')]=qs[_0x3c17('0x33')](_[_0x3c17('0x3b')](_0x557a77[_0x3c17('0x32')],_0x374579[_0x3c17('0x33')]));if(_0x557a77['query'][_0x3c17('0x3f')]){_0x14a9b2[_0x3c17('0x3c')]=_[_0x3c17('0x3d')](_0x14a9b2['where'],{'$or':_['map'](_0x14a9b2['attributes'],function(_0x12a5a3){var _0x3c93da={};_0x3c93da[_0x12a5a3]={'$like':'%'+_0x557a77['query'][_0x3c17('0x3f')]+'%'};return _0x3c93da;})});}_0x14a9b2=_[_0x3c17('0x3d')]({},_0x14a9b2,_0x557a77[_0x3c17('0x46')]);return _0x3a6a20[_0x3c17('0x4f')](_0x14a9b2);}})[_0x3c17('0x24')](function(_0x2e395c){if(_0x2e395c){_0x5e805a=_0x2e395c[_0x3c17('0x37')];if(!_0x557a77['query'][_0x3c17('0x4e')](_0x3c17('0x38'))){_0x14a9b2[_0x3c17('0x1d')]=qs['limit'](_0x557a77[_0x3c17('0x32')][_0x3c17('0x1d')]);_0x14a9b2['offset']=qs[_0x3c17('0x1b')](_0x557a77['query'][_0x3c17('0x1b')]);}return _0x3a6a20['getSubjects'](_0x14a9b2);}})[_0x3c17('0x24')](function(_0x35bd85){if(_0x35bd85){return _0x35bd85?{'count':_0x5e805a,'rows':_0x35bd85}:null;}})[_0x3c17('0x24')](respondWithResult(_0x3ec7b5,null))[_0x3c17('0x44')](handleError(_0x3ec7b5,null));};exports[_0x3c17('0x51')]=function(_0x31e870,_0x5d6ee5,_0x53b5ac){var _0x2fdf2a={};var _0x1e8b3a={};var _0x39cc32;var _0x2f55e9;return db[_0x3c17('0x2b')][_0x3c17('0x4c')]({'where':{'id':_0x31e870[_0x3c17('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5d6ee5,null))[_0x3c17('0x24')](function(_0x54b1ce){if(_0x54b1ce){_0x39cc32=_0x54b1ce;_0x1e8b3a[_0x3c17('0x2f')]=_[_0x3c17('0x31')](db[_0x3c17('0x50')][_0x3c17('0x2c')]);_0x1e8b3a[_0x3c17('0x32')]=_[_0x3c17('0x31')](_0x31e870[_0x3c17('0x32')]);_0x1e8b3a['filters']=_[_0x3c17('0x35')](_0x1e8b3a[_0x3c17('0x2f')],_0x1e8b3a[_0x3c17('0x32')]);_0x2fdf2a[_0x3c17('0x34')]=_[_0x3c17('0x35')](_0x1e8b3a[_0x3c17('0x2f')],qs[_0x3c17('0x36')](_0x31e870[_0x3c17('0x32')][_0x3c17('0x36')]));_0x2fdf2a['attributes']=_0x2fdf2a[_0x3c17('0x34')][_0x3c17('0x37')]?_0x2fdf2a[_0x3c17('0x34')]:_0x1e8b3a[_0x3c17('0x2f')];_0x2fdf2a['order']=qs[_0x3c17('0x3a')](_0x31e870[_0x3c17('0x32')][_0x3c17('0x3a')]);_0x2fdf2a[_0x3c17('0x3c')]=qs['filters'](_['pick'](_0x31e870[_0x3c17('0x32')],_0x1e8b3a[_0x3c17('0x33')]));if(_0x31e870['query'][_0x3c17('0x3f')]){_0x2fdf2a[_0x3c17('0x3c')]=_[_0x3c17('0x3d')](_0x2fdf2a['where'],{'$or':_[_0x3c17('0x30')](_0x2fdf2a[_0x3c17('0x34')],function(_0x72d7c){var _0x4f51ee={};_0x4f51ee[_0x72d7c]={'$like':'%'+_0x31e870['query']['filter']+'%'};return _0x4f51ee;})});}_0x2fdf2a=_[_0x3c17('0x3d')]({},_0x2fdf2a,_0x31e870[_0x3c17('0x46')]);return _0x39cc32[_0x3c17('0x51')](_0x2fdf2a);}})[_0x3c17('0x24')](function(_0x41b3c3){if(_0x41b3c3){_0x2f55e9=_0x41b3c3[_0x3c17('0x37')];if(!_0x31e870[_0x3c17('0x32')][_0x3c17('0x4e')](_0x3c17('0x38'))){_0x2fdf2a['limit']=qs[_0x3c17('0x1d')](_0x31e870['query'][_0x3c17('0x1d')]);_0x2fdf2a[_0x3c17('0x1b')]=qs[_0x3c17('0x1b')](_0x31e870['query'][_0x3c17('0x1b')]);}return _0x39cc32[_0x3c17('0x51')](_0x2fdf2a);}})[_0x3c17('0x24')](function(_0x444eb3){if(_0x444eb3){return _0x444eb3?{'count':_0x2f55e9,'rows':_0x444eb3}:null;}})[_0x3c17('0x24')](respondWithResult(_0x5d6ee5,null))[_0x3c17('0x44')](handleError(_0x5d6ee5,null));};
\ No newline at end of file
index e460435..43a9d43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a4b=['VtigerConfiguration','int_vtiger_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define'];(function(_0x27b404,_0x597b32){var _0x4ea80b=function(_0x20b9c0){while(--_0x20b9c0){_0x27b404['push'](_0x27b404['shift']());}};_0x4ea80b(++_0x597b32);}(_0x0a4b,0x1b4));var _0xb0a4=function(_0x273112,_0x4eb5dd){_0x273112=_0x273112-0x0;var _0x42b480=_0x0a4b[_0x273112];return _0x42b480;};'use strict';var _=require(_0xb0a4('0x0'));var util=require('util');var logger=require(_0xb0a4('0x1'))(_0xb0a4('0x2'));var moment=require(_0xb0a4('0x3'));var BPromise=require(_0xb0a4('0x4'));var rp=require(_0xb0a4('0x5'));var fs=require('fs');var path=require(_0xb0a4('0x6'));var rimraf=require(_0xb0a4('0x7'));var config=require(_0xb0a4('0x8'));var attributes=require(_0xb0a4('0x9'));module[_0xb0a4('0xa')]=function(_0xca0ac9,_0x387939){return _0xca0ac9[_0xb0a4('0xb')](_0xb0a4('0xc'),attributes,{'tableName':_0xb0a4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaa0=['lodash','api','bluebird','path','../../config/environment','./intVtigerConfiguration.attributes','define','VtigerConfiguration','int_vtiger_configurations'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbaa0,0x144));var _0x0baa=function(_0x3ab159,_0x293a05){_0x3ab159=_0x3ab159-0x0;var _0x241b6d=_0xbaa0[_0x3ab159];return _0x241b6d;};'use strict';var _=require(_0x0baa('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0baa('0x1'));var moment=require('moment');var BPromise=require(_0x0baa('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0baa('0x3'));var rimraf=require('rimraf');var config=require(_0x0baa('0x4'));var attributes=require(_0x0baa('0x5'));module['exports']=function(_0x2d5642,_0x2cc589){return _0x2d5642[_0x0baa('0x6')](_0x0baa('0x7'),attributes,{'tableName':_0x0baa('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5da4a2a..f059512 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba2d=['VtigerConfiguration,\x20%s,\x20%s','request\x20sent','VtigerConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x4e9d3c,_0x1f4b98){var _0x2d0825=function(_0x384676){while(--_0x384676){_0x4e9d3c['push'](_0x4e9d3c['shift']());}};_0x2d0825(++_0x1f4b98);}(_0xba2d,0xeb));var _0xdba2=function(_0x4133d3,_0x201a09){_0x4133d3=_0x4133d3-0x0;var _0x3699eb=_0xba2d[_0x4133d3];return _0x3699eb;};'use strict';var _=require('lodash');var util=require(_0xdba2('0x0'));var moment=require('moment');var BPromise=require(_0xdba2('0x1'));var rs=require(_0xdba2('0x2'));var fs=require('fs');var Redis=require(_0xdba2('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xdba2('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xdba2('0x5'));var jayson=require(_0xdba2('0x6'));var client=jayson[_0xdba2('0x7')][_0xdba2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x25ba8b,_0x58daef,_0x4274c8){return new BPromise(function(_0x103da0,_0x388fc2){return client[_0xdba2('0x9')](_0x25ba8b,_0x4274c8)[_0xdba2('0xa')](function(_0x57d62f){logger[_0xdba2('0xb')](_0xdba2('0xc'),_0x58daef,_0xdba2('0xd'));logger['debug'](_0xdba2('0xe'),_0x58daef,_0xdba2('0xd'),JSON['stringify'](_0x57d62f));if(_0x57d62f[_0xdba2('0xf')]){if(_0x57d62f[_0xdba2('0xf')]['code']===0x1f4){logger[_0xdba2('0xf')](_0xdba2('0xc'),_0x58daef,_0x57d62f[_0xdba2('0xf')][_0xdba2('0x10')]);return _0x388fc2(_0x57d62f[_0xdba2('0xf')][_0xdba2('0x10')]);}logger[_0xdba2('0xf')](_0xdba2('0xc'),_0x58daef,_0x57d62f[_0xdba2('0xf')][_0xdba2('0x10')]);return _0x103da0(_0x57d62f[_0xdba2('0xf')][_0xdba2('0x10')]);}else{logger[_0xdba2('0xb')](_0xdba2('0xc'),_0x58daef,_0xdba2('0xd'));_0x103da0(_0x57d62f[_0xdba2('0x11')]['message']);}})[_0xdba2('0x12')](function(_0x4c3f1d){logger['error'](_0xdba2('0xc'),_0x58daef,_0x4c3f1d);_0x388fc2(_0x4c3f1d);});});}
\ No newline at end of file
+var _0x7a11=['stringify','error','code','message','result','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a11,0x101));var _0x17a1=function(_0x9b6a52,_0x3cb0ab){_0x9b6a52=_0x9b6a52-0x0;var _0x5c5c6f=_0x7a11[_0x9b6a52];return _0x5c5c6f;};'use strict';var _=require(_0x17a1('0x0'));var util=require('util');var moment=require(_0x17a1('0x1'));var BPromise=require(_0x17a1('0x2'));var rs=require(_0x17a1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x17a1('0x4'))['db'];var utils=require(_0x17a1('0x5'));var logger=require(_0x17a1('0x6'))(_0x17a1('0x7'));var config=require(_0x17a1('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x17a1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3d5c79,_0x566c34,_0x3764e1){return new BPromise(function(_0x54da8c,_0x52ffeb){return client['request'](_0x3d5c79,_0x3764e1)[_0x17a1('0xa')](function(_0x4225eb){logger[_0x17a1('0xb')](_0x17a1('0xc'),_0x566c34,_0x17a1('0xd'));logger[_0x17a1('0xe')](_0x17a1('0xf'),_0x566c34,_0x17a1('0xd'),JSON[_0x17a1('0x10')](_0x4225eb));if(_0x4225eb['error']){if(_0x4225eb[_0x17a1('0x11')][_0x17a1('0x12')]===0x1f4){logger[_0x17a1('0x11')](_0x17a1('0xc'),_0x566c34,_0x4225eb[_0x17a1('0x11')]['message']);return _0x52ffeb(_0x4225eb['error'][_0x17a1('0x13')]);}logger[_0x17a1('0x11')](_0x17a1('0xc'),_0x566c34,_0x4225eb[_0x17a1('0x11')][_0x17a1('0x13')]);return _0x54da8c(_0x4225eb['error']['message']);}else{logger[_0x17a1('0xb')](_0x17a1('0xc'),_0x566c34,'request\x20sent');_0x54da8c(_0x4225eb[_0x17a1('0x14')]['message']);}})['catch'](function(_0x76c2b1){logger[_0x17a1('0x11')](_0x17a1('0xc'),_0x566c34,_0x76c2b1);_0x52ffeb(_0x76c2b1);});});}
\ No newline at end of file
index dd857f0..e77fe02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9323=['multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','exports'];(function(_0x2fdf42,_0x3d72c6){var _0x356a98=function(_0x1c8c7c){while(--_0x1c8c7c){_0x2fdf42['push'](_0x2fdf42['shift']());}};_0x356a98(++_0x3d72c6);}(_0x9323,0x118));var _0x3932=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x9323[_0x46e363];return _0x3fb059;};'use strict';var multer=require(_0x3932('0x0'));var util=require(_0x3932('0x1'));var path=require('path');var timeout=require(_0x3932('0x2'));var express=require(_0x3932('0x3'));var router=express['Router']();var fs_extra=require(_0x3932('0x4'));var auth=require(_0x3932('0x5'));var interaction=require(_0x3932('0x6'));var config=require(_0x3932('0x7'));var controller=require('./intVtigerField.controller');router[_0x3932('0x8')]('/',auth[_0x3932('0x9')](),controller[_0x3932('0xa')]);router[_0x3932('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x3932('0xb')]);router[_0x3932('0xc')]('/',auth[_0x3932('0x9')](),controller[_0x3932('0xd')]);router[_0x3932('0xe')](_0x3932('0xf'),auth[_0x3932('0x9')](),controller[_0x3932('0x10')]);router[_0x3932('0x11')](_0x3932('0xf'),auth[_0x3932('0x9')](),controller[_0x3932('0x12')]);module[_0x3932('0x13')]=router;
\ No newline at end of file
+var _0x4873=['post','create','update','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','/:id','show'];(function(_0x3abbb6,_0x59425d){var _0x407791=function(_0x4df8a2){while(--_0x4df8a2){_0x3abbb6['push'](_0x3abbb6['shift']());}};_0x407791(++_0x59425d);}(_0x4873,0xca));var _0x3487=function(_0x5478e4,_0x5a3f21){_0x5478e4=_0x5478e4-0x0;var _0x30fda9=_0x4873[_0x5478e4];return _0x30fda9;};'use strict';var multer=require('multer');var util=require(_0x3487('0x0'));var path=require(_0x3487('0x1'));var timeout=require('connect-timeout');var express=require(_0x3487('0x2'));var router=express[_0x3487('0x3')]();var fs_extra=require(_0x3487('0x4'));var auth=require(_0x3487('0x5'));var interaction=require(_0x3487('0x6'));var config=require(_0x3487('0x7'));var controller=require(_0x3487('0x8'));router[_0x3487('0x9')]('/',auth[_0x3487('0xa')](),controller[_0x3487('0xb')]);router[_0x3487('0x9')](_0x3487('0xc'),auth[_0x3487('0xa')](),controller[_0x3487('0xd')]);router[_0x3487('0xe')]('/',auth[_0x3487('0xa')](),controller[_0x3487('0xf')]);router['put'](_0x3487('0xc'),auth['isAuthenticated'](),controller[_0x3487('0x10')]);router['delete']('/:id',auth[_0x3487('0xa')](),controller['destroy']);module[_0x3487('0x11')]=router;
\ No newline at end of file
index 018492d..d2693d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3391=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports'];(function(_0x30fe56,_0x32ac39){var _0x409a20=function(_0x31085f){while(--_0x31085f){_0x30fe56['push'](_0x30fe56['shift']());}};_0x409a20(++_0x32ac39);}(_0x3391,0x17a));var _0x1339=function(_0x10dd98,_0x49779c){_0x10dd98=_0x10dd98-0x0;var _0x47a90e=_0x3391[_0x10dd98];return _0x47a90e;};'use strict';var Sequelize=require(_0x1339('0x0'));module[_0x1339('0x1')]={'type':{'type':Sequelize[_0x1339('0x2')](_0x1339('0x3'),_0x1339('0x4'),_0x1339('0x5'),_0x1339('0x6'),_0x1339('0x7')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x1339('0x2')](_0x1339('0x3'),'variable',_0x1339('0x5'))},'keyContent':{'type':Sequelize[_0x1339('0x8')]},'idField':{'type':Sequelize[_0x1339('0x8')]},'nameField':{'type':Sequelize[_0x1339('0x8')]},'customField':{'type':Sequelize[_0x1339('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1339('0x8')]}};
\ No newline at end of file
+var _0xdded=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','exports'];(function(_0x1ac4da,_0x46ee02){var _0x279d64=function(_0x17b8d8){while(--_0x17b8d8){_0x1ac4da['push'](_0x1ac4da['shift']());}};_0x279d64(++_0x46ee02);}(_0xdded,0xf2));var _0xddde=function(_0x2c3041,_0x9733f3){_0x2c3041=_0x2c3041-0x0;var _0x2f3118=_0xdded[_0x2c3041];return _0x2f3118;};'use strict';var Sequelize=require('sequelize');module[_0xddde('0x0')]={'type':{'type':Sequelize[_0xddde('0x1')](_0xddde('0x2'),_0xddde('0x3'),_0xddde('0x4'),_0xddde('0x5'),_0xddde('0x6')),'defaultValue':_0xddde('0x2')},'content':{'type':Sequelize[_0xddde('0x7')]},'key':{'type':Sequelize[_0xddde('0x7')]},'keyType':{'type':Sequelize[_0xddde('0x1')](_0xddde('0x2'),_0xddde('0x3'),_0xddde('0x4'))},'keyContent':{'type':Sequelize[_0xddde('0x7')]},'idField':{'type':Sequelize[_0xddde('0x7')]},'nameField':{'type':Sequelize[_0xddde('0x7')]},'customField':{'type':Sequelize[_0xddde('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xddde('0x7')]}};
\ No newline at end of file
index 12f425f..131c48c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf617=['keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','include','findAll','show','params','find','catch','body','update','destroy','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','end','error','name','index','VtigerField','rawAttributes','fieldName','type','key','map','query'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xf617,0x145));var _0x7f61=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf617[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7f61('0x0'));var rimraf=require(_0x7f61('0x1'));var zipdir=require(_0x7f61('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7f61('0x3'));var BPromise=require(_0x7f61('0x4'));var Mustache=require(_0x7f61('0x5'));var util=require(_0x7f61('0x6'));var path=require(_0x7f61('0x7'));var sox=require('sox');var csv=require(_0x7f61('0x8'));var ejs=require(_0x7f61('0x9'));var fs=require('fs');var fs_extra=require(_0x7f61('0xa'));var _=require(_0x7f61('0xb'));var squel=require(_0x7f61('0xc'));var crypto=require('crypto');var jsforce=require(_0x7f61('0xd'));var deskjs=require(_0x7f61('0xe'));var toCsv=require(_0x7f61('0x8'));var querystring=require(_0x7f61('0xf'));var Papa=require(_0x7f61('0x10'));var Redis=require(_0x7f61('0x11'));var authService=require(_0x7f61('0x12'));var qs=require(_0x7f61('0x13'));var as=require(_0x7f61('0x14'));var hardwareService=require(_0x7f61('0x15'));var logger=require(_0x7f61('0x16'))(_0x7f61('0x17'));var utils=require('../../config/utils');var config=require(_0x7f61('0x18'));var licenseUtil=require(_0x7f61('0x19'));var db=require(_0x7f61('0x1a'))['db'];function respondWithStatusCode(_0x1d3c4e,_0x124d60){_0x124d60=_0x124d60||0xcc;return function(_0x332d5b){if(_0x332d5b){return _0x1d3c4e[_0x7f61('0x1b')](_0x124d60);}return _0x1d3c4e[_0x7f61('0x1c')](_0x124d60)['end']();};}function respondWithResult(_0x2238dd,_0x4a1430){_0x4a1430=_0x4a1430||0xc8;return function(_0x2b76dc){if(_0x2b76dc){return _0x2238dd[_0x7f61('0x1c')](_0x4a1430)[_0x7f61('0x1d')](_0x2b76dc);}};}function respondWithFilteredResult(_0xf21439,_0xe7f38c){return function(_0x28a2c6){if(_0x28a2c6){var _0x41b582=typeof _0xe7f38c[_0x7f61('0x1e')]===_0x7f61('0x1f')&&typeof _0xe7f38c[_0x7f61('0x20')]===_0x7f61('0x1f');var _0x598fc5=_0x28a2c6[_0x7f61('0x21')];var _0x121d3e=_0x41b582?0x0:_0xe7f38c['offset'];var _0x2f2600=_0x41b582?_0x28a2c6['count']:_0xe7f38c[_0x7f61('0x1e')]+_0xe7f38c[_0x7f61('0x20')];var _0x3ea4d0;if(_0x2f2600>=_0x598fc5){_0x2f2600=_0x598fc5;_0x3ea4d0=0xc8;}else{_0x3ea4d0=0xce;}_0xf21439[_0x7f61('0x1c')](_0x3ea4d0);return _0xf21439[_0x7f61('0x22')](_0x7f61('0x23'),_0x121d3e+'-'+_0x2f2600+'/'+_0x598fc5)[_0x7f61('0x1d')](_0x28a2c6);}return null;};}function patchUpdates(_0x3d8d4a){return function(_0x394be5){try{jsonpatch[_0x7f61('0x24')](_0x394be5,_0x3d8d4a,!![]);}catch(_0x257a3c){return BPromise[_0x7f61('0x25')](_0x257a3c);}return _0x394be5['save']();};}function saveUpdates(_0x412eb4,_0x114295){return function(_0x3d4b30){if(_0x3d4b30){return _0x3d4b30['update'](_0x412eb4)['then'](function(_0x554568){return _0x554568;});}return null;};}function removeEntity(_0x62bf82,_0x847a38){return function(_0x2ef93c){if(_0x2ef93c){return _0x2ef93c['destroy']()[_0x7f61('0x26')](function(){_0x62bf82[_0x7f61('0x1c')](0xcc)[_0x7f61('0x27')]();});}};}function handleEntityNotFound(_0x2bcf2a,_0x41bb0b){return function(_0x54b5f6){if(!_0x54b5f6){_0x2bcf2a[_0x7f61('0x1b')](0x194);}return _0x54b5f6;};}function handleError(_0x4e6d6b,_0x4f9ad6){_0x4f9ad6=_0x4f9ad6||0x1f4;return function(_0x1250dc){logger[_0x7f61('0x28')](_0x1250dc['stack']);if(_0x1250dc[_0x7f61('0x29')]){delete _0x1250dc[_0x7f61('0x29')];}_0x4e6d6b[_0x7f61('0x1c')](_0x4f9ad6)['send'](_0x1250dc);};}exports[_0x7f61('0x2a')]=function(_0x48405a,_0x1840fe){var _0x1386b4={},_0x2ae393={},_0x25231b={'count':0x0,'rows':[]};var _0x223907=_['map'](db[_0x7f61('0x2b')][_0x7f61('0x2c')],function(_0x289b80){return{'name':_0x289b80[_0x7f61('0x2d')],'type':_0x289b80[_0x7f61('0x2e')][_0x7f61('0x2f')]};});_0x2ae393['model']=_[_0x7f61('0x30')](_0x223907,_0x7f61('0x29'));_0x2ae393[_0x7f61('0x31')]=_[_0x7f61('0x32')](_0x48405a[_0x7f61('0x31')]);_0x2ae393[_0x7f61('0x33')]=_[_0x7f61('0x34')](_0x2ae393[_0x7f61('0x35')],_0x2ae393[_0x7f61('0x31')]);_0x1386b4[_0x7f61('0x36')]=_['intersection'](_0x2ae393['model'],qs[_0x7f61('0x37')](_0x48405a[_0x7f61('0x31')][_0x7f61('0x37')]));_0x1386b4[_0x7f61('0x36')]=_0x1386b4[_0x7f61('0x36')][_0x7f61('0x38')]?_0x1386b4[_0x7f61('0x36')]:_0x2ae393[_0x7f61('0x35')];if(!_0x48405a[_0x7f61('0x31')][_0x7f61('0x39')](_0x7f61('0x3a'))){_0x1386b4[_0x7f61('0x20')]=qs[_0x7f61('0x20')](_0x48405a[_0x7f61('0x31')][_0x7f61('0x20')]);_0x1386b4[_0x7f61('0x1e')]=qs[_0x7f61('0x1e')](_0x48405a['query'][_0x7f61('0x1e')]);}_0x1386b4[_0x7f61('0x3b')]=qs[_0x7f61('0x3c')](_0x48405a[_0x7f61('0x31')][_0x7f61('0x3c')]);_0x1386b4[_0x7f61('0x3d')]=qs[_0x7f61('0x33')](_[_0x7f61('0x3e')](_0x48405a[_0x7f61('0x31')],_0x2ae393['filters']),_0x223907);if(_0x48405a[_0x7f61('0x31')]['filter']){_0x1386b4[_0x7f61('0x3d')]=_[_0x7f61('0x3f')](_0x1386b4[_0x7f61('0x3d')],{'$or':_['map'](_0x223907,function(_0x380ee3){if(_0x380ee3[_0x7f61('0x2e')]!=='VIRTUAL'){var _0x43dbba={};_0x43dbba[_0x380ee3[_0x7f61('0x29')]]={'$like':'%'+_0x48405a[_0x7f61('0x31')]['filter']+'%'};return _0x43dbba;}})});}_0x1386b4=_[_0x7f61('0x3f')]({},_0x1386b4,_0x48405a[_0x7f61('0x40')]);var _0x331e8b={'where':_0x1386b4[_0x7f61('0x3d')]};return db['VtigerField'][_0x7f61('0x21')](_0x331e8b)[_0x7f61('0x26')](function(_0x564cee){_0x25231b[_0x7f61('0x21')]=_0x564cee;if(_0x48405a['query'][_0x7f61('0x41')]){_0x1386b4[_0x7f61('0x42')]=[{'all':!![]}];}return db[_0x7f61('0x2b')][_0x7f61('0x43')](_0x1386b4);})[_0x7f61('0x26')](function(_0x973d33){_0x25231b['rows']=_0x973d33;return _0x25231b;})[_0x7f61('0x26')](respondWithFilteredResult(_0x1840fe,_0x1386b4))['catch'](handleError(_0x1840fe,null));};exports[_0x7f61('0x44')]=function(_0x335e4a,_0x1f3ca){var _0x86f03e={'raw':!![],'where':{'id':_0x335e4a[_0x7f61('0x45')]['id']}},_0x3b2829={};_0x3b2829[_0x7f61('0x35')]=_['keys'](db[_0x7f61('0x2b')]['rawAttributes']);_0x3b2829[_0x7f61('0x31')]=_[_0x7f61('0x32')](_0x335e4a['query']);_0x3b2829[_0x7f61('0x33')]=_[_0x7f61('0x34')](_0x3b2829[_0x7f61('0x35')],_0x3b2829[_0x7f61('0x31')]);_0x86f03e[_0x7f61('0x36')]=_[_0x7f61('0x34')](_0x3b2829[_0x7f61('0x35')],qs[_0x7f61('0x37')](_0x335e4a[_0x7f61('0x31')][_0x7f61('0x37')]));_0x86f03e[_0x7f61('0x36')]=_0x86f03e[_0x7f61('0x36')][_0x7f61('0x38')]?_0x86f03e['attributes']:_0x3b2829['model'];if(_0x335e4a[_0x7f61('0x31')][_0x7f61('0x41')]){_0x86f03e[_0x7f61('0x42')]=[{'all':!![]}];}_0x86f03e=_[_0x7f61('0x3f')]({},_0x86f03e,_0x335e4a[_0x7f61('0x40')]);return db['VtigerField'][_0x7f61('0x46')](_0x86f03e)[_0x7f61('0x26')](handleEntityNotFound(_0x1f3ca,null))[_0x7f61('0x26')](respondWithResult(_0x1f3ca,null))[_0x7f61('0x47')](handleError(_0x1f3ca,null));};exports['create']=function(_0x4368bb,_0x137125){return db[_0x7f61('0x2b')]['create'](_0x4368bb[_0x7f61('0x48')],{})[_0x7f61('0x26')](respondWithResult(_0x137125,0xc9))['catch'](handleError(_0x137125,null));};exports[_0x7f61('0x49')]=function(_0x5e1ea2,_0x1950d2){if(_0x5e1ea2['body']['id']){delete _0x5e1ea2[_0x7f61('0x48')]['id'];}return db[_0x7f61('0x2b')][_0x7f61('0x46')]({'where':{'id':_0x5e1ea2[_0x7f61('0x45')]['id']}})[_0x7f61('0x26')](handleEntityNotFound(_0x1950d2,null))[_0x7f61('0x26')](saveUpdates(_0x5e1ea2['body'],null))[_0x7f61('0x26')](respondWithResult(_0x1950d2,null))[_0x7f61('0x47')](handleError(_0x1950d2,null));};exports[_0x7f61('0x4a')]=function(_0x42f2c3,_0x37b3a1){return db[_0x7f61('0x2b')]['find']({'where':{'id':_0x42f2c3[_0x7f61('0x45')]['id']}})[_0x7f61('0x26')](handleEntityNotFound(_0x37b3a1,null))[_0x7f61('0x26')](removeEntity(_0x37b3a1,null))['catch'](handleError(_0x37b3a1,null));};
\ No newline at end of file
+var _0xb72a=['destroy','error','name','send','index','map','VtigerField','rawAttributes','fieldName','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','zip-dir','fast-json-patch','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','json','apply','reject','save','update','then'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xb72a,0x18d));var _0xab72=function(_0xd256b8,_0x4d5223){_0xd256b8=_0xd256b8-0x0;var _0x6b2c67=_0xb72a[_0xd256b8];return _0x6b2c67;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xab72('0x0'));var jsonpatch=require(_0xab72('0x1'));var rp=require('request-promise');var moment=require(_0xab72('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xab72('0x3'));var util=require(_0xab72('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0xab72('0x5'));var ejs=require(_0xab72('0x6'));var fs=require('fs');var fs_extra=require(_0xab72('0x7'));var _=require(_0xab72('0x8'));var squel=require(_0xab72('0x9'));var crypto=require('crypto');var jsforce=require(_0xab72('0xa'));var deskjs=require(_0xab72('0xb'));var toCsv=require(_0xab72('0x5'));var querystring=require(_0xab72('0xc'));var Papa=require(_0xab72('0xd'));var Redis=require(_0xab72('0xe'));var authService=require(_0xab72('0xf'));var qs=require(_0xab72('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xab72('0x11'));var logger=require('../../config/logger')(_0xab72('0x12'));var utils=require(_0xab72('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xab72('0x14'));var db=require(_0xab72('0x15'))['db'];function respondWithStatusCode(_0x1b90ba,_0x3a99d2){_0x3a99d2=_0x3a99d2||0xcc;return function(_0x932103){if(_0x932103){return _0x1b90ba[_0xab72('0x16')](_0x3a99d2);}return _0x1b90ba[_0xab72('0x17')](_0x3a99d2)[_0xab72('0x18')]();};}function respondWithResult(_0x25bf81,_0x441ade){_0x441ade=_0x441ade||0xc8;return function(_0x3fe31b){if(_0x3fe31b){return _0x25bf81[_0xab72('0x17')](_0x441ade)['json'](_0x3fe31b);}};}function respondWithFilteredResult(_0x2d0f4f,_0x55d4c5){return function(_0x28cf17){if(_0x28cf17){var _0x561d19=typeof _0x55d4c5['offset']===_0xab72('0x19')&&typeof _0x55d4c5['limit']==='undefined';var _0x174b46=_0x28cf17[_0xab72('0x1a')];var _0x136385=_0x561d19?0x0:_0x55d4c5[_0xab72('0x1b')];var _0x32073f=_0x561d19?_0x28cf17['count']:_0x55d4c5[_0xab72('0x1b')]+_0x55d4c5[_0xab72('0x1c')];var _0x1c7c45;if(_0x32073f>=_0x174b46){_0x32073f=_0x174b46;_0x1c7c45=0xc8;}else{_0x1c7c45=0xce;}_0x2d0f4f[_0xab72('0x17')](_0x1c7c45);return _0x2d0f4f['set']('Content-Range',_0x136385+'-'+_0x32073f+'/'+_0x174b46)[_0xab72('0x1d')](_0x28cf17);}return null;};}function patchUpdates(_0x5c1369){return function(_0x20e339){try{jsonpatch[_0xab72('0x1e')](_0x20e339,_0x5c1369,!![]);}catch(_0x37e7fe){return BPromise[_0xab72('0x1f')](_0x37e7fe);}return _0x20e339[_0xab72('0x20')]();};}function saveUpdates(_0xaad3f,_0x4915c5){return function(_0x247629){if(_0x247629){return _0x247629[_0xab72('0x21')](_0xaad3f)[_0xab72('0x22')](function(_0x1f395a){return _0x1f395a;});}return null;};}function removeEntity(_0x53c380,_0x4c463c){return function(_0x3f6c40){if(_0x3f6c40){return _0x3f6c40[_0xab72('0x23')]()['then'](function(){_0x53c380[_0xab72('0x17')](0xcc)[_0xab72('0x18')]();});}};}function handleEntityNotFound(_0x3b530c,_0x51724c){return function(_0x1233ca){if(!_0x1233ca){_0x3b530c['sendStatus'](0x194);}return _0x1233ca;};}function handleError(_0x1c9401,_0x4367a9){_0x4367a9=_0x4367a9||0x1f4;return function(_0x174b71){logger[_0xab72('0x24')](_0x174b71['stack']);if(_0x174b71[_0xab72('0x25')]){delete _0x174b71[_0xab72('0x25')];}_0x1c9401[_0xab72('0x17')](_0x4367a9)[_0xab72('0x26')](_0x174b71);};}exports[_0xab72('0x27')]=function(_0x4b0131,_0xae8c23){var _0x17e5cb={},_0xe46b85={},_0x369f7e={'count':0x0,'rows':[]};var _0x19cf48=_[_0xab72('0x28')](db[_0xab72('0x29')][_0xab72('0x2a')],function(_0x3f02ed){return{'name':_0x3f02ed[_0xab72('0x2b')],'type':_0x3f02ed['type']['key']};});_0xe46b85[_0xab72('0x2c')]=_[_0xab72('0x28')](_0x19cf48,_0xab72('0x25'));_0xe46b85['query']=_[_0xab72('0x2d')](_0x4b0131[_0xab72('0x2e')]);_0xe46b85[_0xab72('0x2f')]=_['intersection'](_0xe46b85['model'],_0xe46b85['query']);_0x17e5cb[_0xab72('0x30')]=_[_0xab72('0x31')](_0xe46b85[_0xab72('0x2c')],qs['fields'](_0x4b0131[_0xab72('0x2e')][_0xab72('0x32')]));_0x17e5cb[_0xab72('0x30')]=_0x17e5cb[_0xab72('0x30')][_0xab72('0x33')]?_0x17e5cb['attributes']:_0xe46b85[_0xab72('0x2c')];if(!_0x4b0131[_0xab72('0x2e')][_0xab72('0x34')](_0xab72('0x35'))){_0x17e5cb['limit']=qs['limit'](_0x4b0131[_0xab72('0x2e')][_0xab72('0x1c')]);_0x17e5cb[_0xab72('0x1b')]=qs[_0xab72('0x1b')](_0x4b0131[_0xab72('0x2e')][_0xab72('0x1b')]);}_0x17e5cb[_0xab72('0x36')]=qs[_0xab72('0x37')](_0x4b0131[_0xab72('0x2e')][_0xab72('0x37')]);_0x17e5cb[_0xab72('0x38')]=qs['filters'](_[_0xab72('0x39')](_0x4b0131[_0xab72('0x2e')],_0xe46b85['filters']),_0x19cf48);if(_0x4b0131[_0xab72('0x2e')][_0xab72('0x3a')]){_0x17e5cb[_0xab72('0x38')]=_[_0xab72('0x3b')](_0x17e5cb[_0xab72('0x38')],{'$or':_[_0xab72('0x28')](_0x19cf48,function(_0x4d29b1){if(_0x4d29b1[_0xab72('0x3c')]!==_0xab72('0x3d')){var _0x372efa={};_0x372efa[_0x4d29b1['name']]={'$like':'%'+_0x4b0131[_0xab72('0x2e')][_0xab72('0x3a')]+'%'};return _0x372efa;}})});}_0x17e5cb=_[_0xab72('0x3b')]({},_0x17e5cb,_0x4b0131[_0xab72('0x3e')]);var _0x39e79b={'where':_0x17e5cb[_0xab72('0x38')]};return db[_0xab72('0x29')][_0xab72('0x1a')](_0x39e79b)[_0xab72('0x22')](function(_0x2bf19d){_0x369f7e[_0xab72('0x1a')]=_0x2bf19d;if(_0x4b0131['query'][_0xab72('0x3f')]){_0x17e5cb[_0xab72('0x40')]=[{'all':!![]}];}return db[_0xab72('0x29')][_0xab72('0x41')](_0x17e5cb);})['then'](function(_0x18408a){_0x369f7e['rows']=_0x18408a;return _0x369f7e;})[_0xab72('0x22')](respondWithFilteredResult(_0xae8c23,_0x17e5cb))[_0xab72('0x42')](handleError(_0xae8c23,null));};exports[_0xab72('0x43')]=function(_0x248fc3,_0x320dd6){var _0x1b95b9={'raw':!![],'where':{'id':_0x248fc3[_0xab72('0x44')]['id']}},_0x34ec8d={};_0x34ec8d[_0xab72('0x2c')]=_['keys'](db[_0xab72('0x29')][_0xab72('0x2a')]);_0x34ec8d[_0xab72('0x2e')]=_[_0xab72('0x2d')](_0x248fc3['query']);_0x34ec8d[_0xab72('0x2f')]=_[_0xab72('0x31')](_0x34ec8d[_0xab72('0x2c')],_0x34ec8d[_0xab72('0x2e')]);_0x1b95b9[_0xab72('0x30')]=_[_0xab72('0x31')](_0x34ec8d[_0xab72('0x2c')],qs[_0xab72('0x32')](_0x248fc3['query'][_0xab72('0x32')]));_0x1b95b9[_0xab72('0x30')]=_0x1b95b9[_0xab72('0x30')][_0xab72('0x33')]?_0x1b95b9[_0xab72('0x30')]:_0x34ec8d[_0xab72('0x2c')];if(_0x248fc3[_0xab72('0x2e')][_0xab72('0x3f')]){_0x1b95b9[_0xab72('0x40')]=[{'all':!![]}];}_0x1b95b9=_[_0xab72('0x3b')]({},_0x1b95b9,_0x248fc3['options']);return db['VtigerField'][_0xab72('0x45')](_0x1b95b9)[_0xab72('0x22')](handleEntityNotFound(_0x320dd6,null))[_0xab72('0x22')](respondWithResult(_0x320dd6,null))[_0xab72('0x42')](handleError(_0x320dd6,null));};exports[_0xab72('0x46')]=function(_0x4610d4,_0x3373ec){return db[_0xab72('0x29')]['create'](_0x4610d4[_0xab72('0x47')],{})[_0xab72('0x22')](respondWithResult(_0x3373ec,0xc9))['catch'](handleError(_0x3373ec,null));};exports[_0xab72('0x21')]=function(_0x2444d9,_0x14044e){if(_0x2444d9[_0xab72('0x47')]['id']){delete _0x2444d9[_0xab72('0x47')]['id'];}return db[_0xab72('0x29')][_0xab72('0x45')]({'where':{'id':_0x2444d9[_0xab72('0x44')]['id']}})[_0xab72('0x22')](handleEntityNotFound(_0x14044e,null))['then'](saveUpdates(_0x2444d9['body'],null))[_0xab72('0x22')](respondWithResult(_0x14044e,null))[_0xab72('0x42')](handleError(_0x14044e,null));};exports[_0xab72('0x23')]=function(_0x4dc3a4,_0x9f382b){return db[_0xab72('0x29')][_0xab72('0x45')]({'where':{'id':_0x4dc3a4['params']['id']}})['then'](handleEntityNotFound(_0x9f382b,null))[_0xab72('0x22')](removeEntity(_0x9f382b,null))[_0xab72('0x42')](handleError(_0x9f382b,null));};
\ No newline at end of file
index e808350..f0c9283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1682=['../../config/environment','./intVtigerField.attributes','exports','define','int_vtiger_fields','vtiger_unique_index','FieldId','lodash','util','../../config/logger','api','bluebird','path','rimraf'];(function(_0x32811c,_0x56ed01){var _0x217d6d=function(_0x305651){while(--_0x305651){_0x32811c['push'](_0x32811c['shift']());}};_0x217d6d(++_0x56ed01);}(_0x1682,0x165));var _0x2168=function(_0xcc78b5,_0x2e75c9){_0xcc78b5=_0xcc78b5-0x0;var _0x3b57bc=_0x1682[_0xcc78b5];return _0x3b57bc;};'use strict';var _=require(_0x2168('0x0'));var util=require(_0x2168('0x1'));var logger=require(_0x2168('0x2'))(_0x2168('0x3'));var moment=require('moment');var BPromise=require(_0x2168('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2168('0x5'));var rimraf=require(_0x2168('0x6'));var config=require(_0x2168('0x7'));var attributes=require(_0x2168('0x8'));module[_0x2168('0x9')]=function(_0x1dad37,_0x221091){return _0x1dad37[_0x2168('0xa')]('VtigerField',attributes,{'tableName':_0x2168('0xb'),'paranoid':![],'indexes':[{'name':_0x2168('0xc'),'fields':['idField',_0x2168('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2a64=['FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','define','int_vtiger_fields','vtiger_unique_index','idField'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x2a64,0x71));var _0x42a6=function(_0x3c64ce,_0x2d99f9){_0x3c64ce=_0x3c64ce-0x0;var _0x5a4e51=_0x2a64[_0x3c64ce];return _0x5a4e51;};'use strict';var _=require(_0x42a6('0x0'));var util=require(_0x42a6('0x1'));var logger=require(_0x42a6('0x2'))(_0x42a6('0x3'));var moment=require(_0x42a6('0x4'));var BPromise=require(_0x42a6('0x5'));var rp=require(_0x42a6('0x6'));var fs=require('fs');var path=require(_0x42a6('0x7'));var rimraf=require('rimraf');var config=require(_0x42a6('0x8'));var attributes=require('./intVtigerField.attributes');module['exports']=function(_0xb2f46b,_0xf11b19){return _0xb2f46b[_0x42a6('0x9')]('VtigerField',attributes,{'tableName':_0x42a6('0xa'),'paranoid':![],'indexes':[{'name':_0x42a6('0xb'),'fields':[_0x42a6('0xc'),_0x42a6('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index f52d3de..978c17c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c64=['VtigerField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5da3a4,_0xe6af4a){var _0x40c49a=function(_0x19bd38){while(--_0x19bd38){_0x5da3a4['push'](_0x5da3a4['shift']());}};_0x40c49a(++_0xe6af4a);}(_0x2c64,0xbf));var _0x42c6=function(_0x47a349,_0x4699d9){_0x47a349=_0x47a349-0x0;var _0x18ab75=_0x2c64[_0x47a349];return _0x18ab75;};'use strict';var _=require(_0x42c6('0x0'));var util=require('util');var moment=require(_0x42c6('0x1'));var BPromise=require(_0x42c6('0x2'));var rs=require(_0x42c6('0x3'));var fs=require('fs');var Redis=require(_0x42c6('0x4'));var db=require(_0x42c6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x42c6('0x6'))(_0x42c6('0x7'));var config=require('../../config/environment');var jayson=require(_0x42c6('0x8'));var client=jayson[_0x42c6('0x9')][_0x42c6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4cb582,_0xc33b6a,_0x3e9703){return new BPromise(function(_0x4a1857,_0x34faad){return client[_0x42c6('0xb')](_0x4cb582,_0x3e9703)['then'](function(_0x4f9ecd){logger[_0x42c6('0xc')](_0x42c6('0xd'),_0xc33b6a,_0x42c6('0xe'));logger[_0x42c6('0xf')](_0x42c6('0x10'),_0xc33b6a,_0x42c6('0xe'),JSON[_0x42c6('0x11')](_0x4f9ecd));if(_0x4f9ecd['error']){if(_0x4f9ecd['error'][_0x42c6('0x12')]===0x1f4){logger[_0x42c6('0x13')]('VtigerField,\x20%s,\x20%s',_0xc33b6a,_0x4f9ecd[_0x42c6('0x13')][_0x42c6('0x14')]);return _0x34faad(_0x4f9ecd[_0x42c6('0x13')][_0x42c6('0x14')]);}logger[_0x42c6('0x13')](_0x42c6('0xd'),_0xc33b6a,_0x4f9ecd['error'][_0x42c6('0x14')]);return _0x4a1857(_0x4f9ecd[_0x42c6('0x13')][_0x42c6('0x14')]);}else{logger['info']('VtigerField,\x20%s,\x20%s',_0xc33b6a,'request\x20sent');_0x4a1857(_0x4f9ecd[_0x42c6('0x15')][_0x42c6('0x14')]);}})[_0x42c6('0x16')](function(_0xa47b34){logger[_0x42c6('0x13')](_0x42c6('0xd'),_0xc33b6a,_0xa47b34);_0x34faad(_0xa47b34);});});}
\ No newline at end of file
+var _0x6d12=['client','http','request','info','VtigerField,\x20%s,\x20%s','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0x6d12,0x1ef));var _0x26d1=function(_0x353a30,_0x50c68a){_0x353a30=_0x353a30-0x0;var _0x213161=_0x6d12[_0x353a30];return _0x213161;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x26d1('0x0'));var BPromise=require('bluebird');var rs=require(_0x26d1('0x1'));var fs=require('fs');var Redis=require(_0x26d1('0x2'));var db=require(_0x26d1('0x3'))['db'];var utils=require(_0x26d1('0x4'));var logger=require(_0x26d1('0x5'))(_0x26d1('0x6'));var config=require(_0x26d1('0x7'));var jayson=require(_0x26d1('0x8'));var client=jayson[_0x26d1('0x9')][_0x26d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf010ee,_0x1308de,_0x50a0e0){return new BPromise(function(_0x114b24,_0x5c3236){return client[_0x26d1('0xb')](_0xf010ee,_0x50a0e0)['then'](function(_0x13f552){logger[_0x26d1('0xc')](_0x26d1('0xd'),_0x1308de,'request\x20sent');logger[_0x26d1('0xe')](_0x26d1('0xf'),_0x1308de,'request\x20sent',JSON[_0x26d1('0x10')](_0x13f552));if(_0x13f552[_0x26d1('0x11')]){if(_0x13f552[_0x26d1('0x11')][_0x26d1('0x12')]===0x1f4){logger[_0x26d1('0x11')](_0x26d1('0xd'),_0x1308de,_0x13f552[_0x26d1('0x11')][_0x26d1('0x13')]);return _0x5c3236(_0x13f552[_0x26d1('0x11')][_0x26d1('0x13')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x1308de,_0x13f552[_0x26d1('0x11')][_0x26d1('0x13')]);return _0x114b24(_0x13f552[_0x26d1('0x11')]['message']);}else{logger[_0x26d1('0xc')](_0x26d1('0xd'),_0x1308de,_0x26d1('0x14'));_0x114b24(_0x13f552['result'][_0x26d1('0x13')]);}})['catch'](function(_0x475566){logger['error'](_0x26d1('0xd'),_0x1308de,_0x475566);_0x5c3236(_0x475566);});});}
\ No newline at end of file
index be2d3e2..1bbd36d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d49=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','index','/:id','isAuthenticated','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','put','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x322486,_0xd0968f){var _0x21a835=function(_0x39a1a1){while(--_0x39a1a1){_0x322486['push'](_0x322486['shift']());}};_0x21a835(++_0xd0968f);}(_0x4d49,0x141));var _0x94d4=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x4d49[_0x3b380d];return _0x54502b;};'use strict';var multer=require('multer');var util=require(_0x94d4('0x0'));var path=require('path');var timeout=require(_0x94d4('0x1'));var express=require(_0x94d4('0x2'));var router=express[_0x94d4('0x3')]();var fs_extra=require(_0x94d4('0x4'));var auth=require(_0x94d4('0x5'));var interaction=require(_0x94d4('0x6'));var config=require(_0x94d4('0x7'));var controller=require(_0x94d4('0x8'));router[_0x94d4('0x9')]('/',auth['isAuthenticated'](),controller[_0x94d4('0xa')]);router[_0x94d4('0x9')](_0x94d4('0xb'),auth[_0x94d4('0xc')](),controller[_0x94d4('0xd')]);router[_0x94d4('0x9')]('/:id/configurations',auth[_0x94d4('0xc')](),controller[_0x94d4('0xe')]);router['get'](_0x94d4('0xf'),auth[_0x94d4('0xc')](),controller[_0x94d4('0x10')]);router[_0x94d4('0x11')]('/',auth['isAuthenticated'](),controller[_0x94d4('0x12')]);router[_0x94d4('0x11')](_0x94d4('0x13'),auth[_0x94d4('0xc')](),controller[_0x94d4('0x14')]);router[_0x94d4('0x15')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x94d4('0x16')](_0x94d4('0xb'),auth['isAuthenticated'](),controller[_0x94d4('0x17')]);module[_0x94d4('0x18')]=router;
\ No newline at end of file
+var _0xfaac=['./intZendeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','/:id','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5f2481,_0x313fd9){var _0x49f81f=function(_0x3af35b){while(--_0x3af35b){_0x5f2481['push'](_0x5f2481['shift']());}};_0x49f81f(++_0x313fd9);}(_0xfaac,0x6b));var _0xcfaa=function(_0x4cd200,_0x137372){_0x4cd200=_0x4cd200-0x0;var _0x1f2caa=_0xfaac[_0x4cd200];return _0x1f2caa;};'use strict';var multer=require('multer');var util=require(_0xcfaa('0x0'));var path=require('path');var timeout=require(_0xcfaa('0x1'));var express=require(_0xcfaa('0x2'));var router=express[_0xcfaa('0x3')]();var fs_extra=require(_0xcfaa('0x4'));var auth=require(_0xcfaa('0x5'));var interaction=require(_0xcfaa('0x6'));var config=require(_0xcfaa('0x7'));var controller=require(_0xcfaa('0x8'));router[_0xcfaa('0x9')]('/',auth[_0xcfaa('0xa')](),controller[_0xcfaa('0xb')]);router[_0xcfaa('0x9')]('/:id',auth[_0xcfaa('0xa')](),controller[_0xcfaa('0xc')]);router[_0xcfaa('0x9')](_0xcfaa('0xd'),auth['isAuthenticated'](),controller[_0xcfaa('0xe')]);router[_0xcfaa('0x9')](_0xcfaa('0xf'),auth[_0xcfaa('0xa')](),controller['getFields']);router[_0xcfaa('0x10')]('/',auth[_0xcfaa('0xa')](),controller[_0xcfaa('0x11')]);router[_0xcfaa('0x10')](_0xcfaa('0xd'),auth[_0xcfaa('0xa')](),controller[_0xcfaa('0x12')]);router[_0xcfaa('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xcfaa('0x14')]);router['delete'](_0xcfaa('0x15'),auth[_0xcfaa('0xa')](),controller['destroy']);module[_0xcfaa('0x16')]=router;
\ No newline at end of file
index b426fef..bbe3858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb0b=['password','token','newTab','integrationTab','sequelize','exports','STRING','username','ENUM'];(function(_0x523e17,_0xf6555d){var _0x49ebb9=function(_0x56f065){while(--_0x56f065){_0x523e17['push'](_0x523e17['shift']());}};_0x49ebb9(++_0xf6555d);}(_0xfb0b,0x94));var _0xbfb0=function(_0x51d4e2,_0x1dfeaf){_0x51d4e2=_0x51d4e2-0x0;var _0x1eeab3=_0xfb0b[_0x51d4e2];return _0x1eeab3;};'use strict';var Sequelize=require(_0xbfb0('0x0'));module[_0xbfb0('0x1')]={'name':{'type':Sequelize[_0xbfb0('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xbfb0('0x2')],'unique':_0xbfb0('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xbfb0('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize[_0xbfb0('0x4')](_0xbfb0('0x5'),_0xbfb0('0x6')),'defaultValue':_0xbfb0('0x5')},'serverUrl':{'type':Sequelize[_0xbfb0('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbfb0('0x4')]('integrationTab',_0xbfb0('0x7')),'defaultValue':_0xbfb0('0x8')}};
\ No newline at end of file
+var _0x6050=['STRING','username','remoteUri','password','newTab','integrationTab','sequelize','exports'];(function(_0x1b0597,_0xeffacc){var _0x2b6a2a=function(_0x4da070){while(--_0x4da070){_0x1b0597['push'](_0x1b0597['shift']());}};_0x2b6a2a(++_0xeffacc);}(_0x6050,0x196));var _0x0605=function(_0x103357,_0x19a09c){_0x103357=_0x103357-0x0;var _0x518fcb=_0x6050[_0x103357];return _0x518fcb;};'use strict';var Sequelize=require(_0x0605('0x0'));module[_0x0605('0x1')]={'name':{'type':Sequelize[_0x0605('0x2')]},'description':{'type':Sequelize[_0x0605('0x2')]},'username':{'type':Sequelize[_0x0605('0x2')],'unique':_0x0605('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x0605('0x2')]},'remoteUri':{'type':Sequelize[_0x0605('0x2')],'unique':_0x0605('0x4')},'authType':{'type':Sequelize['ENUM']('password','token'),'defaultValue':_0x0605('0x5')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0x0605('0x6')),'defaultValue':_0x0605('0x7')}};
\ No newline at end of file
index b571996..873a24f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x236c=['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','sendStatus','status','end','offset','count','limit','set','Content-Range','json','apply','reject','update','then','destroy','error','name','index','map','type','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','ZendeskAccount','includeAll','include','findAll','rows','catch','show','find','create','body','params','getConfigurations','findOne','fields','order','nolimit','Subjects','getSubjects','channel','Descriptions','ZendeskConfiguration','ZendeskField','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','format','ticket_fields','headers','%s:%s','toString','Basic\x20%s','%s/token:%s','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','description','group','assignee','remove','includes','position','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','send','Wrong\x20credentials','eml-format'];(function(_0x1c80e9,_0x3b7f77){var _0x509563=function(_0x33112d){while(--_0x33112d){_0x1c80e9['push'](_0x1c80e9['shift']());}};_0x509563(++_0x3b7f77);}(_0x236c,0x155));var _0xc236=function(_0x2f4508,_0x55181b){_0x2f4508=_0x2f4508-0x0;var _0x88fb05=_0x236c[_0x2f4508];return _0x88fb05;};'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'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5b9638,_0x5bce83){_0x5bce83=_0x5bce83||0xcc;return function(_0x599d36){if(_0x599d36){return _0x5b9638[_0xc236('0x18')](_0x5bce83);}return _0x5b9638[_0xc236('0x19')](_0x5bce83)[_0xc236('0x1a')]();};}function respondWithResult(_0x71bce2,_0x5052db){_0x5052db=_0x5052db||0xc8;return function(_0x13a42b){if(_0x13a42b){return _0x71bce2['status'](_0x5052db)['json'](_0x13a42b);}};}function respondWithFilteredResult(_0x9a65e8,_0x32f2fd){return function(_0x443a46){if(_0x443a46){var _0x1aeafc=typeof _0x32f2fd[_0xc236('0x1b')]==='undefined'&&typeof _0x32f2fd['limit']==='undefined';var _0x3f5884=_0x443a46[_0xc236('0x1c')];var _0x11ec65=_0x1aeafc?0x0:_0x32f2fd['offset'];var _0x13b432=_0x1aeafc?_0x443a46['count']:_0x32f2fd['offset']+_0x32f2fd[_0xc236('0x1d')];var _0x30adeb;if(_0x13b432>=_0x3f5884){_0x13b432=_0x3f5884;_0x30adeb=0xc8;}else{_0x30adeb=0xce;}_0x9a65e8[_0xc236('0x19')](_0x30adeb);return _0x9a65e8[_0xc236('0x1e')](_0xc236('0x1f'),_0x11ec65+'-'+_0x13b432+'/'+_0x3f5884)[_0xc236('0x20')](_0x443a46);}return null;};}function patchUpdates(_0x3f0e2f){return function(_0x27c96a){try{jsonpatch[_0xc236('0x21')](_0x27c96a,_0x3f0e2f,!![]);}catch(_0x32876d){return BPromise[_0xc236('0x22')](_0x32876d);}return _0x27c96a['save']();};}function saveUpdates(_0x208c3f,_0x34d73a){return function(_0x3bd41b){if(_0x3bd41b){return _0x3bd41b[_0xc236('0x23')](_0x208c3f)[_0xc236('0x24')](function(_0x21fab8){return _0x21fab8;});}return null;};}function removeEntity(_0x3a315b,_0xf921e6){return function(_0x1d65e2){if(_0x1d65e2){return _0x1d65e2[_0xc236('0x25')]()[_0xc236('0x24')](function(){_0x3a315b['status'](0xcc)[_0xc236('0x1a')]();});}};}function handleEntityNotFound(_0x21d78f,_0x356042){return function(_0x9017ec){if(!_0x9017ec){_0x21d78f['sendStatus'](0x194);}return _0x9017ec;};}function handleError(_0x42f248,_0x5da4b2){_0x5da4b2=_0x5da4b2||0x1f4;return function(_0x5351bc){logger[_0xc236('0x26')](_0x5351bc['stack']);if(_0x5351bc[_0xc236('0x27')]){delete _0x5351bc['name'];}_0x42f248[_0xc236('0x19')](_0x5da4b2)['send'](_0x5351bc);};}exports[_0xc236('0x28')]=function(_0x1d144b,_0x4f5175){var _0x5a61b5={},_0x265c8d={},_0x1fd31d={'count':0x0,'rows':[]};var _0x1f4995=_[_0xc236('0x29')](db['ZendeskAccount']['rawAttributes'],function(_0x28ffa5){return{'name':_0x28ffa5['fieldName'],'type':_0x28ffa5[_0xc236('0x2a')]['key']};});_0x265c8d[_0xc236('0x2b')]=_[_0xc236('0x29')](_0x1f4995,'name');_0x265c8d['query']=_[_0xc236('0x2c')](_0x1d144b[_0xc236('0x2d')]);_0x265c8d[_0xc236('0x2e')]=_[_0xc236('0x2f')](_0x265c8d[_0xc236('0x2b')],_0x265c8d[_0xc236('0x2d')]);_0x5a61b5[_0xc236('0x30')]=_[_0xc236('0x2f')](_0x265c8d[_0xc236('0x2b')],qs['fields'](_0x1d144b['query']['fields']));_0x5a61b5[_0xc236('0x30')]=_0x5a61b5[_0xc236('0x30')][_0xc236('0x31')]?_0x5a61b5[_0xc236('0x30')]:_0x265c8d[_0xc236('0x2b')];if(!_0x1d144b[_0xc236('0x2d')][_0xc236('0x32')]('nolimit')){_0x5a61b5[_0xc236('0x1d')]=qs[_0xc236('0x1d')](_0x1d144b[_0xc236('0x2d')]['limit']);_0x5a61b5[_0xc236('0x1b')]=qs[_0xc236('0x1b')](_0x1d144b[_0xc236('0x2d')][_0xc236('0x1b')]);}_0x5a61b5['order']=qs[_0xc236('0x33')](_0x1d144b[_0xc236('0x2d')][_0xc236('0x33')]);_0x5a61b5[_0xc236('0x34')]=qs[_0xc236('0x2e')](_[_0xc236('0x35')](_0x1d144b[_0xc236('0x2d')],_0x265c8d[_0xc236('0x2e')]),_0x1f4995);if(_0x1d144b[_0xc236('0x2d')][_0xc236('0x36')]){_0x5a61b5[_0xc236('0x34')]=_[_0xc236('0x37')](_0x5a61b5[_0xc236('0x34')],{'$or':_[_0xc236('0x29')](_0x1f4995,function(_0x12e802){if(_0x12e802[_0xc236('0x2a')]!==_0xc236('0x38')){var _0x4f5490={};_0x4f5490[_0x12e802['name']]={'$like':'%'+_0x1d144b['query']['filter']+'%'};return _0x4f5490;}})});}_0x5a61b5=_[_0xc236('0x37')]({},_0x5a61b5,_0x1d144b['options']);var _0x35905c={'where':_0x5a61b5[_0xc236('0x34')]};return db[_0xc236('0x39')][_0xc236('0x1c')](_0x35905c)[_0xc236('0x24')](function(_0x3b95ec){_0x1fd31d[_0xc236('0x1c')]=_0x3b95ec;if(_0x1d144b[_0xc236('0x2d')][_0xc236('0x3a')]){_0x5a61b5[_0xc236('0x3b')]=[{'all':!![]}];}return db[_0xc236('0x39')][_0xc236('0x3c')](_0x5a61b5);})[_0xc236('0x24')](function(_0x3df25e){_0x1fd31d[_0xc236('0x3d')]=_0x3df25e;return _0x1fd31d;})['then'](respondWithFilteredResult(_0x4f5175,_0x5a61b5))[_0xc236('0x3e')](handleError(_0x4f5175,null));};exports[_0xc236('0x3f')]=function(_0x506ba0,_0xb90a83){var _0x5b0bc5={'raw':![],'where':{'id':_0x506ba0['params']['id']}},_0x1cecc5={};_0x1cecc5[_0xc236('0x2b')]=_[_0xc236('0x2c')](db[_0xc236('0x39')]['rawAttributes']);_0x1cecc5[_0xc236('0x2d')]=_[_0xc236('0x2c')](_0x506ba0[_0xc236('0x2d')]);_0x1cecc5['filters']=_[_0xc236('0x2f')](_0x1cecc5[_0xc236('0x2b')],_0x1cecc5[_0xc236('0x2d')]);_0x5b0bc5[_0xc236('0x30')]=_[_0xc236('0x2f')](_0x1cecc5[_0xc236('0x2b')],qs['fields'](_0x506ba0[_0xc236('0x2d')]['fields']));_0x5b0bc5[_0xc236('0x30')]=_0x5b0bc5[_0xc236('0x30')][_0xc236('0x31')]?_0x5b0bc5[_0xc236('0x30')]:_0x1cecc5[_0xc236('0x2b')];if(_0x506ba0[_0xc236('0x2d')][_0xc236('0x3a')]){_0x5b0bc5['include']=[{'all':!![]}];}_0x5b0bc5=_[_0xc236('0x37')]({},_0x5b0bc5,_0x506ba0['options']);return db[_0xc236('0x39')][_0xc236('0x40')](_0x5b0bc5)['then'](handleEntityNotFound(_0xb90a83,null))[_0xc236('0x24')](respondWithResult(_0xb90a83,null))[_0xc236('0x3e')](handleError(_0xb90a83,null));};exports[_0xc236('0x41')]=function(_0x161890,_0x181dd6){return db[_0xc236('0x39')][_0xc236('0x41')](_0x161890['body'],{})['then'](respondWithResult(_0x181dd6,0xc9))[_0xc236('0x3e')](handleError(_0x181dd6,null));};exports[_0xc236('0x23')]=function(_0x510f7f,_0xcfaa44){if(_0x510f7f[_0xc236('0x42')]['id']){delete _0x510f7f[_0xc236('0x42')]['id'];}return db[_0xc236('0x39')][_0xc236('0x40')]({'where':{'id':_0x510f7f[_0xc236('0x43')]['id']}})[_0xc236('0x24')](handleEntityNotFound(_0xcfaa44,null))[_0xc236('0x24')](saveUpdates(_0x510f7f[_0xc236('0x42')],null))['then'](respondWithResult(_0xcfaa44,null))[_0xc236('0x3e')](handleError(_0xcfaa44,null));};exports[_0xc236('0x25')]=function(_0x41b7d5,_0x447a83){return db[_0xc236('0x39')][_0xc236('0x40')]({'where':{'id':_0x41b7d5[_0xc236('0x43')]['id']}})['then'](handleEntityNotFound(_0x447a83,null))[_0xc236('0x24')](removeEntity(_0x447a83,null))[_0xc236('0x3e')](handleError(_0x447a83,null));};exports[_0xc236('0x44')]=function(_0x16ff63,_0x4860d8,_0xa34c01){var _0x3e6da6={};var _0xad71ea={};var _0x2f3d08;var _0x9d81c8;return db['ZendeskAccount'][_0xc236('0x45')]({'where':{'id':_0x16ff63['params']['id']}})[_0xc236('0x24')](handleEntityNotFound(_0x4860d8,null))[_0xc236('0x24')](function(_0x3f9e85){if(_0x3f9e85){_0x2f3d08=_0x3f9e85;_0xad71ea[_0xc236('0x2b')]=_[_0xc236('0x2c')](db['ZendeskConfiguration']['rawAttributes']);_0xad71ea[_0xc236('0x2d')]=_[_0xc236('0x2c')](_0x16ff63[_0xc236('0x2d')]);_0xad71ea[_0xc236('0x2e')]=_[_0xc236('0x2f')](_0xad71ea[_0xc236('0x2b')],_0xad71ea[_0xc236('0x2d')]);_0x3e6da6[_0xc236('0x30')]=_[_0xc236('0x2f')](_0xad71ea[_0xc236('0x2b')],qs['fields'](_0x16ff63['query'][_0xc236('0x46')]));_0x3e6da6[_0xc236('0x30')]=_0x3e6da6[_0xc236('0x30')][_0xc236('0x31')]?_0x3e6da6['attributes']:_0xad71ea[_0xc236('0x2b')];_0x3e6da6[_0xc236('0x47')]=qs['sort'](_0x16ff63[_0xc236('0x2d')][_0xc236('0x33')]);_0x3e6da6[_0xc236('0x34')]=qs[_0xc236('0x2e')](_['pick'](_0x16ff63[_0xc236('0x2d')],_0xad71ea[_0xc236('0x2e')]));if(_0x16ff63[_0xc236('0x2d')][_0xc236('0x36')]){_0x3e6da6[_0xc236('0x34')]=_[_0xc236('0x37')](_0x3e6da6[_0xc236('0x34')],{'$or':_['map'](_0x3e6da6[_0xc236('0x30')],function(_0x4c99a4){var _0x4289c5={};_0x4289c5[_0x4c99a4]={'$like':'%'+_0x16ff63[_0xc236('0x2d')][_0xc236('0x36')]+'%'};return _0x4289c5;})});}_0x3e6da6=_[_0xc236('0x37')]({},_0x3e6da6,_0x16ff63['options']);return _0x2f3d08[_0xc236('0x44')](_0x3e6da6);}})[_0xc236('0x24')](function(_0x379e99){if(_0x379e99){_0x9d81c8=_0x379e99['length'];if(!_0x16ff63[_0xc236('0x2d')][_0xc236('0x32')](_0xc236('0x48'))){_0x3e6da6[_0xc236('0x1d')]=qs[_0xc236('0x1d')](_0x16ff63[_0xc236('0x2d')]['limit']);_0x3e6da6['offset']=qs[_0xc236('0x1b')](_0x16ff63[_0xc236('0x2d')][_0xc236('0x1b')]);}return _0x2f3d08[_0xc236('0x44')](_0x3e6da6);}})[_0xc236('0x24')](function(_0x4649a3){if(_0x4649a3){return _0x4649a3?{'count':_0x9d81c8,'rows':_0x4649a3}:null;}})[_0xc236('0x24')](respondWithResult(_0x4860d8,null))['catch'](handleError(_0x4860d8,null));};exports['addConfiguration']=function(_0x4b59d3,_0x119710,_0x3c11da){if(_0x4b59d3[_0xc236('0x42')]['id']){delete _0x4b59d3[_0xc236('0x42')]['id'];}return db['ZendeskAccount']['findOne']({'where':{'id':_0x4b59d3['params']['id']}})['then'](handleEntityNotFound(_0x119710,null))[_0xc236('0x24')](function(_0x5df2ba){if(_0x5df2ba){_0x4b59d3[_0xc236('0x42')]['AccountId']=_0x5df2ba['id'];_0x4b59d3[_0xc236('0x42')][_0xc236('0x49')]=integrations[_0xc236('0x4a')](_0x4b59d3[_0xc236('0x42')][_0xc236('0x4b')],_0x4b59d3[_0xc236('0x42')][_0xc236('0x2a')]);_0x4b59d3['body'][_0xc236('0x4c')]=integrations['getDescriptions'](_0x4b59d3[_0xc236('0x42')][_0xc236('0x4b')],_0x4b59d3[_0xc236('0x42')][_0xc236('0x2a')]);return db[_0xc236('0x4d')][_0xc236('0x41')](_0x4b59d3['body'],{'include':[{'model':db[_0xc236('0x4e')],'as':_0xc236('0x49')},{'model':db['ZendeskField'],'as':_0xc236('0x4c')}]});}return null;})[_0xc236('0x24')](respondWithResult(_0x119710,null))[_0xc236('0x3e')](handleError(_0x119710,null));};exports['getFields']=function(_0x226573,_0x45fe5a,_0x5897a1){var _0x2c8f89='';return db[_0xc236('0x39')][_0xc236('0x45')]({'where':{'id':_0x226573[_0xc236('0x43')]['id']},'attributes':['id',_0xc236('0x4f'),_0xc236('0x50'),_0xc236('0x51'),_0xc236('0x52'),_0xc236('0x53')]})['then'](handleEntityNotFound(_0x45fe5a,null))[_0xc236('0x24')](function(_0x2b9fd8){if(_0x2b9fd8){_0x2c8f89=_0x2b9fd8[_0xc236('0x53')];var _0x5d395b=_0x2c8f89[_0xc236('0x54')](-0x1);if(_0x5d395b==='/'){_0x2c8f89=_0x2c8f89[_0xc236('0x55')](0x0,_0x2c8f89[_0xc236('0x56')](_0x5d395b));}var _0x4ef002={'method':'GET','uri':util[_0xc236('0x57')]('%s/%s',_0x2c8f89,_0xc236('0x58')),'json':!![]};switch(_0x2b9fd8['authType']){case _0xc236('0x50'):_0x4ef002[_0xc236('0x59')]={'Authorization':util['format']('Basic\x20%s',new Buffer(util['format'](_0xc236('0x5a'),_0x2b9fd8['username'],_0x2b9fd8[_0xc236('0x50')]))[_0xc236('0x5b')]('base64'))};break;case _0xc236('0x51'):_0x4ef002[_0xc236('0x59')]={'Authorization':util['format'](_0xc236('0x5c'),new Buffer(util[_0xc236('0x57')](_0xc236('0x5d'),_0x2b9fd8[_0xc236('0x4f')],_0x2b9fd8['token']))[_0xc236('0x5b')](_0xc236('0x5e')))};break;default:throw new db[(_0xc236('0x5f'))][(_0xc236('0x60'))](_0xc236('0x61'));}return rp(_0x4ef002);}})[_0xc236('0x24')](function(_0x141497){if(_0x141497){var _0x509f3b=['subject',_0xc236('0x62'),_0xc236('0x63'),_0xc236('0x64')];_[_0xc236('0x65')](_0x141497[_0xc236('0x58')],function(_0x49e417){return _0x509f3b[_0xc236('0x66')](_0x49e417[_0xc236('0x2a')]);});return{'count':_0x141497['ticket_fields']['length'],'rows':_[_0xc236('0x29')](_0x141497['ticket_fields'],function(_0x35e0d8){return{'id':_0x35e0d8['id'],'name':_0x35e0d8[_0xc236('0x67')]>0x7?_0x35e0d8[_0xc236('0x68')]:_0x35e0d8['type'],'custom':_0x35e0d8[_0xc236('0x67')]>0x7?!![]:![],'options':_0x35e0d8['system_field_options']?_0x35e0d8[_0xc236('0x69')]:_0x35e0d8[_0xc236('0x6a')]?_0x35e0d8[_0xc236('0x6a')]:[]};})};}})[_0xc236('0x24')](respondWithResult(_0x45fe5a,null))['catch'](function(_0x41c76d){var _0x22b942=_0x226573['query'][_0xc236('0x6b')]?0x1f4:_0x41c76d[_0xc236('0x6c')]||0x1f4;logger[_0xc236('0x26')](_0xc236('0x6d'),_0xc236('0x6e'),_0x22b942,JSON[_0xc236('0x6f')](_0x41c76d));delete _0x41c76d[_0xc236('0x27')];if(_0x22b942===0x191){_0x22b942=0x190;}_0x45fe5a['status'](_0x22b942)[_0xc236('0x70')](_0x226573[_0xc236('0x2d')][_0xc236('0x6b')]?{'message':_0xc236('0x71'),'statusCode':_0x41c76d['statusCode']}:_0x41c76d);});};
\ No newline at end of file
+var _0xa5fa=['send','ZendeskAccount','fieldName','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','map','type','VIRTUAL','options','include','findAll','catch','show','params','keys','rawAttributes','includeAll','find','create','body','getConfigurations','findOne','ZendeskConfiguration','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','getDescriptions','ZendeskField','Subjects','Descriptions','getFields','username','password','token','remoteUri','lastIndexOf','GET','format','%s/%s','headers','Basic\x20%s','%s:%s','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','group','assignee','remove','ticket_fields','includes','position','title','system_field_options','custom_field_options','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','destroy','then','stack','name'];(function(_0x399f45,_0x228896){var _0xc0915b=function(_0xc7c779){while(--_0xc7c779){_0x399f45['push'](_0x399f45['shift']());}};_0xc0915b(++_0x228896);}(_0xa5fa,0xc4));var _0xaa5f=function(_0x358125,_0x45326f){_0x358125=_0x358125-0x0;var _0x118f28=_0xa5fa[_0x358125];return _0x118f28;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaa5f('0x0'));var zipdir=require(_0xaa5f('0x1'));var jsonpatch=require(_0xaa5f('0x2'));var rp=require(_0xaa5f('0x3'));var moment=require('moment');var BPromise=require(_0xaa5f('0x4'));var Mustache=require(_0xaa5f('0x5'));var util=require('util');var path=require(_0xaa5f('0x6'));var sox=require(_0xaa5f('0x7'));var csv=require(_0xaa5f('0x8'));var ejs=require(_0xaa5f('0x9'));var fs=require('fs');var fs_extra=require(_0xaa5f('0xa'));var _=require(_0xaa5f('0xb'));var squel=require(_0xaa5f('0xc'));var crypto=require(_0xaa5f('0xd'));var jsforce=require(_0xaa5f('0xe'));var deskjs=require(_0xaa5f('0xf'));var toCsv=require(_0xaa5f('0x8'));var querystring=require('querystring');var Papa=require(_0xaa5f('0x10'));var Redis=require(_0xaa5f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaa5f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xaa5f('0x13'));var utils=require('../../config/utils');var config=require(_0xaa5f('0x14'));var licenseUtil=require(_0xaa5f('0x15'));var db=require(_0xaa5f('0x16'))['db'];var integrations=require(_0xaa5f('0x17'));function respondWithStatusCode(_0x252ae0,_0x48d1d3){_0x48d1d3=_0x48d1d3||0xcc;return function(_0xbd4e10){if(_0xbd4e10){return _0x252ae0['sendStatus'](_0x48d1d3);}return _0x252ae0[_0xaa5f('0x18')](_0x48d1d3)[_0xaa5f('0x19')]();};}function respondWithResult(_0x31eabc,_0x19aa27){_0x19aa27=_0x19aa27||0xc8;return function(_0x2e1ca5){if(_0x2e1ca5){return _0x31eabc['status'](_0x19aa27)['json'](_0x2e1ca5);}};}function respondWithFilteredResult(_0x1f37fb,_0x291042){return function(_0xb0bfb6){if(_0xb0bfb6){var _0x4265ab=typeof _0x291042[_0xaa5f('0x1a')]===_0xaa5f('0x1b')&&typeof _0x291042[_0xaa5f('0x1c')]===_0xaa5f('0x1b');var _0x202ea8=_0xb0bfb6[_0xaa5f('0x1d')];var _0x22175f=_0x4265ab?0x0:_0x291042[_0xaa5f('0x1a')];var _0x4f4cd5=_0x4265ab?_0xb0bfb6[_0xaa5f('0x1d')]:_0x291042[_0xaa5f('0x1a')]+_0x291042[_0xaa5f('0x1c')];var _0x358d2e;if(_0x4f4cd5>=_0x202ea8){_0x4f4cd5=_0x202ea8;_0x358d2e=0xc8;}else{_0x358d2e=0xce;}_0x1f37fb[_0xaa5f('0x18')](_0x358d2e);return _0x1f37fb[_0xaa5f('0x1e')](_0xaa5f('0x1f'),_0x22175f+'-'+_0x4f4cd5+'/'+_0x202ea8)[_0xaa5f('0x20')](_0xb0bfb6);}return null;};}function patchUpdates(_0x2d8fc3){return function(_0xe3d7d){try{jsonpatch[_0xaa5f('0x21')](_0xe3d7d,_0x2d8fc3,!![]);}catch(_0x10f287){return BPromise[_0xaa5f('0x22')](_0x10f287);}return _0xe3d7d['save']();};}function saveUpdates(_0x1e917d,_0x57082c){return function(_0x2e04e6){if(_0x2e04e6){return _0x2e04e6[_0xaa5f('0x23')](_0x1e917d)['then'](function(_0x1baa2e){return _0x1baa2e;});}return null;};}function removeEntity(_0x1032ce,_0x5b9f0b){return function(_0xf6a8c3){if(_0xf6a8c3){return _0xf6a8c3[_0xaa5f('0x24')]()[_0xaa5f('0x25')](function(){_0x1032ce[_0xaa5f('0x18')](0xcc)[_0xaa5f('0x19')]();});}};}function handleEntityNotFound(_0xacbded,_0x3d7bca){return function(_0x2fba7d){if(!_0x2fba7d){_0xacbded['sendStatus'](0x194);}return _0x2fba7d;};}function handleError(_0x2445a6,_0x3a66e8){_0x3a66e8=_0x3a66e8||0x1f4;return function(_0x1ed8eb){logger['error'](_0x1ed8eb[_0xaa5f('0x26')]);if(_0x1ed8eb[_0xaa5f('0x27')]){delete _0x1ed8eb[_0xaa5f('0x27')];}_0x2445a6['status'](_0x3a66e8)[_0xaa5f('0x28')](_0x1ed8eb);};}exports['index']=function(_0x5990d2,_0x27d1a4){var _0x50998f={},_0x1bffec={},_0x4e0ec9={'count':0x0,'rows':[]};var _0x4c5dc0=_['map'](db[_0xaa5f('0x29')]['rawAttributes'],function(_0x310828){return{'name':_0x310828[_0xaa5f('0x2a')],'type':_0x310828['type']['key']};});_0x1bffec[_0xaa5f('0x2b')]=_['map'](_0x4c5dc0,_0xaa5f('0x27'));_0x1bffec[_0xaa5f('0x2c')]=_['keys'](_0x5990d2[_0xaa5f('0x2c')]);_0x1bffec[_0xaa5f('0x2d')]=_[_0xaa5f('0x2e')](_0x1bffec['model'],_0x1bffec[_0xaa5f('0x2c')]);_0x50998f[_0xaa5f('0x2f')]=_['intersection'](_0x1bffec['model'],qs['fields'](_0x5990d2['query'][_0xaa5f('0x30')]));_0x50998f[_0xaa5f('0x2f')]=_0x50998f[_0xaa5f('0x2f')][_0xaa5f('0x31')]?_0x50998f[_0xaa5f('0x2f')]:_0x1bffec[_0xaa5f('0x2b')];if(!_0x5990d2[_0xaa5f('0x2c')]['hasOwnProperty'](_0xaa5f('0x32'))){_0x50998f[_0xaa5f('0x1c')]=qs[_0xaa5f('0x1c')](_0x5990d2[_0xaa5f('0x2c')][_0xaa5f('0x1c')]);_0x50998f[_0xaa5f('0x1a')]=qs['offset'](_0x5990d2[_0xaa5f('0x2c')][_0xaa5f('0x1a')]);}_0x50998f[_0xaa5f('0x33')]=qs[_0xaa5f('0x34')](_0x5990d2[_0xaa5f('0x2c')]['sort']);_0x50998f['where']=qs[_0xaa5f('0x2d')](_[_0xaa5f('0x35')](_0x5990d2[_0xaa5f('0x2c')],_0x1bffec[_0xaa5f('0x2d')]),_0x4c5dc0);if(_0x5990d2['query'][_0xaa5f('0x36')]){_0x50998f[_0xaa5f('0x37')]=_[_0xaa5f('0x38')](_0x50998f[_0xaa5f('0x37')],{'$or':_[_0xaa5f('0x39')](_0x4c5dc0,function(_0x1869c2){if(_0x1869c2[_0xaa5f('0x3a')]!==_0xaa5f('0x3b')){var _0xc6deec={};_0xc6deec[_0x1869c2[_0xaa5f('0x27')]]={'$like':'%'+_0x5990d2[_0xaa5f('0x2c')]['filter']+'%'};return _0xc6deec;}})});}_0x50998f=_[_0xaa5f('0x38')]({},_0x50998f,_0x5990d2[_0xaa5f('0x3c')]);var _0xcd9c30={'where':_0x50998f[_0xaa5f('0x37')]};return db[_0xaa5f('0x29')][_0xaa5f('0x1d')](_0xcd9c30)[_0xaa5f('0x25')](function(_0xa490d9){_0x4e0ec9[_0xaa5f('0x1d')]=_0xa490d9;if(_0x5990d2[_0xaa5f('0x2c')]['includeAll']){_0x50998f[_0xaa5f('0x3d')]=[{'all':!![]}];}return db['ZendeskAccount'][_0xaa5f('0x3e')](_0x50998f);})[_0xaa5f('0x25')](function(_0x17bb4d){_0x4e0ec9['rows']=_0x17bb4d;return _0x4e0ec9;})[_0xaa5f('0x25')](respondWithFilteredResult(_0x27d1a4,_0x50998f))[_0xaa5f('0x3f')](handleError(_0x27d1a4,null));};exports[_0xaa5f('0x40')]=function(_0x528b08,_0x12a8e4){var _0x179be8={'raw':![],'where':{'id':_0x528b08[_0xaa5f('0x41')]['id']}},_0x1ac9b6={};_0x1ac9b6['model']=_[_0xaa5f('0x42')](db[_0xaa5f('0x29')][_0xaa5f('0x43')]);_0x1ac9b6[_0xaa5f('0x2c')]=_[_0xaa5f('0x42')](_0x528b08[_0xaa5f('0x2c')]);_0x1ac9b6[_0xaa5f('0x2d')]=_[_0xaa5f('0x2e')](_0x1ac9b6['model'],_0x1ac9b6[_0xaa5f('0x2c')]);_0x179be8['attributes']=_[_0xaa5f('0x2e')](_0x1ac9b6['model'],qs[_0xaa5f('0x30')](_0x528b08[_0xaa5f('0x2c')]['fields']));_0x179be8[_0xaa5f('0x2f')]=_0x179be8[_0xaa5f('0x2f')][_0xaa5f('0x31')]?_0x179be8['attributes']:_0x1ac9b6['model'];if(_0x528b08['query'][_0xaa5f('0x44')]){_0x179be8['include']=[{'all':!![]}];}_0x179be8=_[_0xaa5f('0x38')]({},_0x179be8,_0x528b08[_0xaa5f('0x3c')]);return db[_0xaa5f('0x29')][_0xaa5f('0x45')](_0x179be8)['then'](handleEntityNotFound(_0x12a8e4,null))[_0xaa5f('0x25')](respondWithResult(_0x12a8e4,null))[_0xaa5f('0x3f')](handleError(_0x12a8e4,null));};exports[_0xaa5f('0x46')]=function(_0x231ad1,_0x27ea4b){return db[_0xaa5f('0x29')][_0xaa5f('0x46')](_0x231ad1[_0xaa5f('0x47')],{})[_0xaa5f('0x25')](respondWithResult(_0x27ea4b,0xc9))[_0xaa5f('0x3f')](handleError(_0x27ea4b,null));};exports[_0xaa5f('0x23')]=function(_0x2de737,_0x2be44d){if(_0x2de737[_0xaa5f('0x47')]['id']){delete _0x2de737[_0xaa5f('0x47')]['id'];}return db[_0xaa5f('0x29')]['find']({'where':{'id':_0x2de737[_0xaa5f('0x41')]['id']}})[_0xaa5f('0x25')](handleEntityNotFound(_0x2be44d,null))[_0xaa5f('0x25')](saveUpdates(_0x2de737[_0xaa5f('0x47')],null))[_0xaa5f('0x25')](respondWithResult(_0x2be44d,null))[_0xaa5f('0x3f')](handleError(_0x2be44d,null));};exports[_0xaa5f('0x24')]=function(_0x4aa556,_0xf5a6b6){return db[_0xaa5f('0x29')][_0xaa5f('0x45')]({'where':{'id':_0x4aa556[_0xaa5f('0x41')]['id']}})['then'](handleEntityNotFound(_0xf5a6b6,null))[_0xaa5f('0x25')](removeEntity(_0xf5a6b6,null))[_0xaa5f('0x3f')](handleError(_0xf5a6b6,null));};exports[_0xaa5f('0x48')]=function(_0x575803,_0x5bbdce,_0x506dce){var _0x56cdd6={};var _0x585559={};var _0x509c61;var _0x1f47a0;return db[_0xaa5f('0x29')][_0xaa5f('0x49')]({'where':{'id':_0x575803[_0xaa5f('0x41')]['id']}})[_0xaa5f('0x25')](handleEntityNotFound(_0x5bbdce,null))[_0xaa5f('0x25')](function(_0x48c473){if(_0x48c473){_0x509c61=_0x48c473;_0x585559['model']=_[_0xaa5f('0x42')](db[_0xaa5f('0x4a')]['rawAttributes']);_0x585559[_0xaa5f('0x2c')]=_[_0xaa5f('0x42')](_0x575803[_0xaa5f('0x2c')]);_0x585559[_0xaa5f('0x2d')]=_[_0xaa5f('0x2e')](_0x585559[_0xaa5f('0x2b')],_0x585559[_0xaa5f('0x2c')]);_0x56cdd6['attributes']=_['intersection'](_0x585559[_0xaa5f('0x2b')],qs[_0xaa5f('0x30')](_0x575803['query']['fields']));_0x56cdd6['attributes']=_0x56cdd6[_0xaa5f('0x2f')]['length']?_0x56cdd6[_0xaa5f('0x2f')]:_0x585559['model'];_0x56cdd6['order']=qs[_0xaa5f('0x34')](_0x575803[_0xaa5f('0x2c')][_0xaa5f('0x34')]);_0x56cdd6['where']=qs[_0xaa5f('0x2d')](_[_0xaa5f('0x35')](_0x575803[_0xaa5f('0x2c')],_0x585559['filters']));if(_0x575803[_0xaa5f('0x2c')][_0xaa5f('0x36')]){_0x56cdd6['where']=_[_0xaa5f('0x38')](_0x56cdd6[_0xaa5f('0x37')],{'$or':_[_0xaa5f('0x39')](_0x56cdd6[_0xaa5f('0x2f')],function(_0x334282){var _0x178d90={};_0x178d90[_0x334282]={'$like':'%'+_0x575803[_0xaa5f('0x2c')][_0xaa5f('0x36')]+'%'};return _0x178d90;})});}_0x56cdd6=_[_0xaa5f('0x38')]({},_0x56cdd6,_0x575803['options']);return _0x509c61[_0xaa5f('0x48')](_0x56cdd6);}})[_0xaa5f('0x25')](function(_0x1d02af){if(_0x1d02af){_0x1f47a0=_0x1d02af[_0xaa5f('0x31')];if(!_0x575803[_0xaa5f('0x2c')][_0xaa5f('0x4b')](_0xaa5f('0x32'))){_0x56cdd6[_0xaa5f('0x1c')]=qs['limit'](_0x575803[_0xaa5f('0x2c')]['limit']);_0x56cdd6[_0xaa5f('0x1a')]=qs[_0xaa5f('0x1a')](_0x575803[_0xaa5f('0x2c')][_0xaa5f('0x1a')]);}return _0x509c61['getConfigurations'](_0x56cdd6);}})[_0xaa5f('0x25')](function(_0x1bc0e7){if(_0x1bc0e7){return _0x1bc0e7?{'count':_0x1f47a0,'rows':_0x1bc0e7}:null;}})[_0xaa5f('0x25')](respondWithResult(_0x5bbdce,null))['catch'](handleError(_0x5bbdce,null));};exports[_0xaa5f('0x4c')]=function(_0x524f42,_0x42ea3b,_0x5e7a74){if(_0x524f42[_0xaa5f('0x47')]['id']){delete _0x524f42[_0xaa5f('0x47')]['id'];}return db[_0xaa5f('0x29')][_0xaa5f('0x49')]({'where':{'id':_0x524f42['params']['id']}})[_0xaa5f('0x25')](handleEntityNotFound(_0x42ea3b,null))[_0xaa5f('0x25')](function(_0x47a160){if(_0x47a160){_0x524f42['body'][_0xaa5f('0x4d')]=_0x47a160['id'];_0x524f42[_0xaa5f('0x47')]['Subjects']=integrations[_0xaa5f('0x4e')](_0x524f42[_0xaa5f('0x47')][_0xaa5f('0x4f')],_0x524f42['body'][_0xaa5f('0x3a')]);_0x524f42[_0xaa5f('0x47')]['Descriptions']=integrations[_0xaa5f('0x50')](_0x524f42[_0xaa5f('0x47')][_0xaa5f('0x4f')],_0x524f42['body'][_0xaa5f('0x3a')]);return db[_0xaa5f('0x4a')]['create'](_0x524f42[_0xaa5f('0x47')],{'include':[{'model':db[_0xaa5f('0x51')],'as':_0xaa5f('0x52')},{'model':db[_0xaa5f('0x51')],'as':_0xaa5f('0x53')}]});}return null;})['then'](respondWithResult(_0x42ea3b,null))[_0xaa5f('0x3f')](handleError(_0x42ea3b,null));};exports[_0xaa5f('0x54')]=function(_0x464ac7,_0x216399,_0x2a1049){var _0x508fe7='';return db[_0xaa5f('0x29')]['findOne']({'where':{'id':_0x464ac7[_0xaa5f('0x41')]['id']},'attributes':['id',_0xaa5f('0x55'),_0xaa5f('0x56'),_0xaa5f('0x57'),'authType',_0xaa5f('0x58')]})[_0xaa5f('0x25')](handleEntityNotFound(_0x216399,null))[_0xaa5f('0x25')](function(_0x424b43){if(_0x424b43){_0x508fe7=_0x424b43[_0xaa5f('0x58')];var _0x201b8b=_0x508fe7['slice'](-0x1);if(_0x201b8b==='/'){_0x508fe7=_0x508fe7['substring'](0x0,_0x508fe7[_0xaa5f('0x59')](_0x201b8b));}var _0x300350={'method':_0xaa5f('0x5a'),'uri':util[_0xaa5f('0x5b')](_0xaa5f('0x5c'),_0x508fe7,'ticket_fields'),'json':!![]};switch(_0x424b43['authType']){case _0xaa5f('0x56'):_0x300350[_0xaa5f('0x5d')]={'Authorization':util['format'](_0xaa5f('0x5e'),new Buffer(util['format'](_0xaa5f('0x5f'),_0x424b43[_0xaa5f('0x55')],_0x424b43['password']))[_0xaa5f('0x60')](_0xaa5f('0x61')))};break;case _0xaa5f('0x57'):_0x300350[_0xaa5f('0x5d')]={'Authorization':util[_0xaa5f('0x5b')](_0xaa5f('0x5e'),new Buffer(util[_0xaa5f('0x5b')]('%s/token:%s',_0x424b43[_0xaa5f('0x55')],_0x424b43[_0xaa5f('0x57')]))[_0xaa5f('0x60')]('base64'))};break;default:throw new db[(_0xaa5f('0x62'))][(_0xaa5f('0x63'))](_0xaa5f('0x64'));}return rp(_0x300350);}})[_0xaa5f('0x25')](function(_0x281004){if(_0x281004){var _0x5d4cab=[_0xaa5f('0x65'),_0xaa5f('0x66'),_0xaa5f('0x67'),_0xaa5f('0x68')];_[_0xaa5f('0x69')](_0x281004[_0xaa5f('0x6a')],function(_0x155eb4){return _0x5d4cab[_0xaa5f('0x6b')](_0x155eb4[_0xaa5f('0x3a')]);});return{'count':_0x281004[_0xaa5f('0x6a')]['length'],'rows':_['map'](_0x281004[_0xaa5f('0x6a')],function(_0xa7ecc9){return{'id':_0xa7ecc9['id'],'name':_0xa7ecc9[_0xaa5f('0x6c')]>0x7?_0xa7ecc9[_0xaa5f('0x6d')]:_0xa7ecc9[_0xaa5f('0x3a')],'custom':_0xa7ecc9[_0xaa5f('0x6c')]>0x7?!![]:![],'options':_0xa7ecc9[_0xaa5f('0x6e')]?_0xa7ecc9[_0xaa5f('0x6e')]:_0xa7ecc9['custom_field_options']?_0xa7ecc9[_0xaa5f('0x6f')]:[]};})};}})[_0xaa5f('0x25')](respondWithResult(_0x216399,null))[_0xaa5f('0x3f')](function(_0x5f2484){var _0x55a3f9=_0x464ac7[_0xaa5f('0x2c')][_0xaa5f('0x70')]?0x1f4:_0x5f2484[_0xaa5f('0x71')]||0x1f4;logger[_0xaa5f('0x72')](_0xaa5f('0x73'),_0xaa5f('0x54'),_0x55a3f9,JSON[_0xaa5f('0x74')](_0x5f2484));delete _0x5f2484[_0xaa5f('0x27')];if(_0x55a3f9===0x191){_0x55a3f9=0x190;}_0x216399[_0xaa5f('0x18')](_0x55a3f9)[_0xaa5f('0x28')](_0x464ac7['query'][_0xaa5f('0x70')]?{'message':_0xaa5f('0x75'),'statusCode':_0x5f2484[_0xaa5f('0x71')]}:_0x5f2484);});};
\ No newline at end of file
index 6018947..70de646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac05=['bluebird','request-promise','path','./intZendeskAccount.attributes','define','ZendeskAccount','int_zendesk_accounts','util','../../config/logger'];(function(_0x3312b0,_0x4d69b7){var _0x280c06=function(_0x5d2c10){while(--_0x5d2c10){_0x3312b0['push'](_0x3312b0['shift']());}};_0x280c06(++_0x4d69b7);}(_0xac05,0xd6));var _0x5ac0=function(_0x5e0c95,_0x21dbe6){_0x5e0c95=_0x5e0c95-0x0;var _0x12906f=_0xac05[_0x5e0c95];return _0x12906f;};'use strict';var _=require('lodash');var util=require(_0x5ac0('0x0'));var logger=require(_0x5ac0('0x1'))('api');var moment=require('moment');var BPromise=require(_0x5ac0('0x2'));var rp=require(_0x5ac0('0x3'));var fs=require('fs');var path=require(_0x5ac0('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5ac0('0x5'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x319a70,_0x27da9c){return _0x319a70[_0x5ac0('0x6')](_0x5ac0('0x7'),attributes,{'tableName':_0x5ac0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1dd9=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','lodash','util'];(function(_0x2c5322,_0x203341){var _0x5c19a2=function(_0x35becc){while(--_0x35becc){_0x2c5322['push'](_0x2c5322['shift']());}};_0x5c19a2(++_0x203341);}(_0x1dd9,0x196));var _0x91dd=function(_0xbcbe82,_0x27146d){_0xbcbe82=_0xbcbe82-0x0;var _0xcdee18=_0x1dd9[_0xbcbe82];return _0xcdee18;};'use strict';var _=require(_0x91dd('0x0'));var util=require(_0x91dd('0x1'));var logger=require(_0x91dd('0x2'))(_0x91dd('0x3'));var moment=require(_0x91dd('0x4'));var BPromise=require(_0x91dd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91dd('0x6'));var rimraf=require(_0x91dd('0x7'));var config=require(_0x91dd('0x8'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x91dd('0x9'));module[_0x91dd('0xa')]=function(_0x5e63fd,_0x1f3295){return _0x5e63fd[_0x91dd('0xb')]('ZendeskAccount',attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3f64776..36ac87d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dba=['info','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','ZendeskAccount,\x20%s,\x20%s','message','catch','ZendeskAccount','options','raw','where','attributes','limit','map','include','model','GetZendeskAccount','ShowZendeskAccount','find','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x180df3,_0x2c12ee){var _0xa5ff44=function(_0x5be799){while(--_0x5be799){_0x180df3['push'](_0x180df3['shift']());}};_0xa5ff44(++_0x2c12ee);}(_0x4dba,0x15f));var _0xa4db=function(_0x4acc36,_0x51c78b){_0x4acc36=_0x4acc36-0x0;var _0x38a1ad=_0x4dba[_0x4acc36];return _0x38a1ad;};'use strict';var _=require(_0xa4db('0x0'));var util=require(_0xa4db('0x1'));var moment=require(_0xa4db('0x2'));var BPromise=require('bluebird');var rs=require(_0xa4db('0x3'));var fs=require('fs');var Redis=require(_0xa4db('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa4db('0x5'))(_0xa4db('0x6'));var config=require('../../config/environment');var jayson=require(_0xa4db('0x7'));var client=jayson[_0xa4db('0x8')][_0xa4db('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4a9a70,_0xec9662,_0x395a99){return new BPromise(function(_0x4e6d3b,_0x463ef5){return client[_0xa4db('0xa')](_0x4a9a70,_0x395a99)[_0xa4db('0xb')](function(_0x1f7ec4){logger[_0xa4db('0xc')]('ZendeskAccount,\x20%s,\x20%s',_0xec9662,_0xa4db('0xd'));logger[_0xa4db('0xe')](_0xa4db('0xf'),_0xec9662,'request\x20sent',JSON[_0xa4db('0x10')](_0x1f7ec4));if(_0x1f7ec4['error']){if(_0x1f7ec4[_0xa4db('0x11')]['code']===0x1f4){logger['error'](_0xa4db('0x12'),_0xec9662,_0x1f7ec4[_0xa4db('0x11')][_0xa4db('0x13')]);return _0x463ef5(_0x1f7ec4[_0xa4db('0x11')][_0xa4db('0x13')]);}logger[_0xa4db('0x11')](_0xa4db('0x12'),_0xec9662,_0x1f7ec4[_0xa4db('0x11')]['message']);return _0x4e6d3b(_0x1f7ec4[_0xa4db('0x11')][_0xa4db('0x13')]);}else{logger[_0xa4db('0xc')](_0xa4db('0x12'),_0xec9662,_0xa4db('0xd'));_0x4e6d3b(_0x1f7ec4['result'][_0xa4db('0x13')]);}})[_0xa4db('0x14')](function(_0xd5e36e){logger[_0xa4db('0x11')]('ZendeskAccount,\x20%s,\x20%s',_0xec9662,_0xd5e36e);_0x463ef5(_0xd5e36e);});});}exports['GetZendeskAccount']=function(_0x1c16b0){var _0x46b933=this;return new Promise(function(_0x5426a4,_0x12f979){return db[_0xa4db('0x15')]['findAll']({'raw':_0x1c16b0[_0xa4db('0x16')]?_0x1c16b0['options'][_0xa4db('0x17')]===undefined?!![]:![]:!![],'where':_0x1c16b0[_0xa4db('0x16')]?_0x1c16b0[_0xa4db('0x16')][_0xa4db('0x18')]||null:null,'attributes':_0x1c16b0['options']?_0x1c16b0[_0xa4db('0x16')][_0xa4db('0x19')]||null:null,'limit':_0x1c16b0[_0xa4db('0x16')]?_0x1c16b0[_0xa4db('0x16')][_0xa4db('0x1a')]||null:null,'include':_0x1c16b0[_0xa4db('0x16')]?_0x1c16b0['options']['include']?_[_0xa4db('0x1b')](_0x1c16b0[_0xa4db('0x16')][_0xa4db('0x1c')],function(_0xdd428a){return{'model':db[_0xdd428a[_0xa4db('0x1d')]],'as':_0xdd428a['as'],'attributes':_0xdd428a['attributes'],'include':_0xdd428a[_0xa4db('0x1c')]?_['map'](_0xdd428a['include'],function(_0x3c71a0){return{'model':db[_0x3c71a0[_0xa4db('0x1d')]],'as':_0x3c71a0['as'],'attributes':_0x3c71a0[_0xa4db('0x19')],'include':_0x3c71a0[_0xa4db('0x1c')]?_[_0xa4db('0x1b')](_0x3c71a0[_0xa4db('0x1c')],function(_0x345dd7){return{'model':db[_0x345dd7[_0xa4db('0x1d')]],'as':_0x345dd7['as'],'attributes':_0x345dd7[_0xa4db('0x19')]};}):[]};}):[]};}):[]:[]})[_0xa4db('0xb')](function(_0x5ede53){logger['info'](_0xa4db('0x1e'),_0x1c16b0);logger[_0xa4db('0xe')](_0xa4db('0x1e'),_0x1c16b0,JSON['stringify'](_0x5ede53));_0x5426a4(_0x5ede53);})['catch'](function(_0x22f5e5){logger[_0xa4db('0x11')](_0xa4db('0x1e'),_0x22f5e5[_0xa4db('0x13')],_0x1c16b0);_0x12f979(_0x46b933[_0xa4db('0x11')](0x1f4,_0x22f5e5[_0xa4db('0x13')]));});});};exports[_0xa4db('0x1f')]=function(_0x276875){var _0x294161=this;return new Promise(function(_0x311b9c,_0x2453f8){return db[_0xa4db('0x15')][_0xa4db('0x20')]({'raw':_0x276875[_0xa4db('0x16')]?_0x276875[_0xa4db('0x16')][_0xa4db('0x17')]===undefined?!![]:![]:!![],'where':_0x276875[_0xa4db('0x16')]?_0x276875[_0xa4db('0x16')][_0xa4db('0x18')]||null:null,'attributes':_0x276875[_0xa4db('0x16')]?_0x276875[_0xa4db('0x16')][_0xa4db('0x19')]||null:null,'include':_0x276875[_0xa4db('0x16')]?_0x276875[_0xa4db('0x16')]['include']?_[_0xa4db('0x1b')](_0x276875[_0xa4db('0x16')]['include'],function(_0x2be395){return{'model':db[_0x2be395[_0xa4db('0x1d')]],'as':_0x2be395['as'],'attributes':_0x2be395[_0xa4db('0x19')],'include':_0x2be395[_0xa4db('0x1c')]?_[_0xa4db('0x1b')](_0x2be395['include'],function(_0x42a47e){return{'model':db[_0x42a47e[_0xa4db('0x1d')]],'as':_0x42a47e['as'],'attributes':_0x42a47e[_0xa4db('0x19')],'include':_0x42a47e['include']?_['map'](_0x42a47e[_0xa4db('0x1c')],function(_0x36e754){return{'model':db[_0x36e754['model']],'as':_0x36e754['as'],'attributes':_0x36e754['attributes']};}):[]};}):[]};}):[]:[]})[_0xa4db('0xb')](function(_0x51b347){logger[_0xa4db('0xc')]('ShowZendeskAccount',_0x276875);logger['debug'](_0xa4db('0x1f'),_0x276875,JSON[_0xa4db('0x10')](_0x51b347));_0x311b9c(_0x51b347);})[_0xa4db('0x14')](function(_0x4d36a3){logger[_0xa4db('0x11')](_0xa4db('0x1f'),_0x4d36a3[_0xa4db('0x13')],_0x276875);_0x2453f8(_0x294161[_0xa4db('0x11')](0x1f4,_0x4d36a3[_0xa4db('0x13')]));});});};
\ No newline at end of file
+var _0x0351=['info','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','where','attributes','limit','include','model','find','raw','map','ShowZendeskAccount','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x0351,0x128));var _0x1035=function(_0x54acc2,_0xa08fa7){_0x54acc2=_0x54acc2-0x0;var _0x1f5f7f=_0x0351[_0x54acc2];return _0x1f5f7f;};'use strict';var _=require('lodash');var util=require(_0x1035('0x0'));var moment=require(_0x1035('0x1'));var BPromise=require(_0x1035('0x2'));var rs=require(_0x1035('0x3'));var fs=require('fs');var Redis=require(_0x1035('0x4'));var db=require(_0x1035('0x5'))['db'];var utils=require(_0x1035('0x6'));var logger=require(_0x1035('0x7'))('rpc');var config=require(_0x1035('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1035('0x9')][_0x1035('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5aa292,_0x13cab8,_0x301b07){return new BPromise(function(_0x5d9857,_0x49e38f){return client['request'](_0x5aa292,_0x301b07)[_0x1035('0xb')](function(_0x5cfc36){logger['info'](_0x1035('0xc'),_0x13cab8,_0x1035('0xd'));logger[_0x1035('0xe')](_0x1035('0xf'),_0x13cab8,'request\x20sent',JSON[_0x1035('0x10')](_0x5cfc36));if(_0x5cfc36['error']){if(_0x5cfc36[_0x1035('0x11')]['code']===0x1f4){logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x13cab8,_0x5cfc36[_0x1035('0x11')][_0x1035('0x12')]);return _0x49e38f(_0x5cfc36['error'][_0x1035('0x12')]);}logger[_0x1035('0x11')](_0x1035('0xc'),_0x13cab8,_0x5cfc36[_0x1035('0x11')][_0x1035('0x12')]);return _0x5d9857(_0x5cfc36['error'][_0x1035('0x12')]);}else{logger[_0x1035('0x13')]('ZendeskAccount,\x20%s,\x20%s',_0x13cab8,_0x1035('0xd'));_0x5d9857(_0x5cfc36[_0x1035('0x14')][_0x1035('0x12')]);}})[_0x1035('0x15')](function(_0x197b85){logger['error'](_0x1035('0xc'),_0x13cab8,_0x197b85);_0x49e38f(_0x197b85);});});}exports[_0x1035('0x16')]=function(_0x4b4e74){var _0x57031b=this;return new Promise(function(_0x25f1ab,_0x31b382){return db[_0x1035('0x17')][_0x1035('0x18')]({'raw':_0x4b4e74[_0x1035('0x19')]?_0x4b4e74[_0x1035('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4b4e74[_0x1035('0x19')]?_0x4b4e74[_0x1035('0x19')][_0x1035('0x1a')]||null:null,'attributes':_0x4b4e74[_0x1035('0x19')]?_0x4b4e74['options'][_0x1035('0x1b')]||null:null,'limit':_0x4b4e74[_0x1035('0x19')]?_0x4b4e74['options'][_0x1035('0x1c')]||null:null,'include':_0x4b4e74[_0x1035('0x19')]?_0x4b4e74[_0x1035('0x19')][_0x1035('0x1d')]?_['map'](_0x4b4e74['options']['include'],function(_0x58518b){return{'model':db[_0x58518b[_0x1035('0x1e')]],'as':_0x58518b['as'],'attributes':_0x58518b['attributes'],'include':_0x58518b[_0x1035('0x1d')]?_['map'](_0x58518b[_0x1035('0x1d')],function(_0x210ed0){return{'model':db[_0x210ed0[_0x1035('0x1e')]],'as':_0x210ed0['as'],'attributes':_0x210ed0[_0x1035('0x1b')],'include':_0x210ed0['include']?_['map'](_0x210ed0[_0x1035('0x1d')],function(_0xebff31){return{'model':db[_0xebff31[_0x1035('0x1e')]],'as':_0xebff31['as'],'attributes':_0xebff31[_0x1035('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x1035('0xb')](function(_0x362c13){logger[_0x1035('0x13')](_0x1035('0x16'),_0x4b4e74);logger[_0x1035('0xe')](_0x1035('0x16'),_0x4b4e74,JSON[_0x1035('0x10')](_0x362c13));_0x25f1ab(_0x362c13);})[_0x1035('0x15')](function(_0x37204c){logger[_0x1035('0x11')](_0x1035('0x16'),_0x37204c[_0x1035('0x12')],_0x4b4e74);_0x31b382(_0x57031b['error'](0x1f4,_0x37204c[_0x1035('0x12')]));});});};exports['ShowZendeskAccount']=function(_0x365563){var _0x2e0d15=this;return new Promise(function(_0x576054,_0x57b16f){return db[_0x1035('0x17')][_0x1035('0x1f')]({'raw':_0x365563[_0x1035('0x19')]?_0x365563[_0x1035('0x19')][_0x1035('0x20')]===undefined?!![]:![]:!![],'where':_0x365563[_0x1035('0x19')]?_0x365563[_0x1035('0x19')][_0x1035('0x1a')]||null:null,'attributes':_0x365563[_0x1035('0x19')]?_0x365563[_0x1035('0x19')][_0x1035('0x1b')]||null:null,'include':_0x365563[_0x1035('0x19')]?_0x365563[_0x1035('0x19')][_0x1035('0x1d')]?_[_0x1035('0x21')](_0x365563[_0x1035('0x19')][_0x1035('0x1d')],function(_0xe24f01){return{'model':db[_0xe24f01[_0x1035('0x1e')]],'as':_0xe24f01['as'],'attributes':_0xe24f01[_0x1035('0x1b')],'include':_0xe24f01[_0x1035('0x1d')]?_[_0x1035('0x21')](_0xe24f01[_0x1035('0x1d')],function(_0x218be7){return{'model':db[_0x218be7[_0x1035('0x1e')]],'as':_0x218be7['as'],'attributes':_0x218be7[_0x1035('0x1b')],'include':_0x218be7[_0x1035('0x1d')]?_[_0x1035('0x21')](_0x218be7[_0x1035('0x1d')],function(_0x5d51b5){return{'model':db[_0x5d51b5[_0x1035('0x1e')]],'as':_0x5d51b5['as'],'attributes':_0x5d51b5['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ffca7){logger[_0x1035('0x13')](_0x1035('0x22'),_0x365563);logger[_0x1035('0xe')]('ShowZendeskAccount',_0x365563,JSON['stringify'](_0x1ffca7));_0x576054(_0x1ffca7);})[_0x1035('0x15')](function(_0x1ee795){logger['error']('ShowZendeskAccount',_0x1ee795[_0x1035('0x12')],_0x365563);_0x57b16f(_0x2e0d15[_0x1035('0x11')](0x1f4,_0x1ee795[_0x1035('0x12')]));});});};
\ No newline at end of file
index bd7e2e8..57298b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['put','update','delete','/:id','destroy','exports','multer','Router','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/tags','getTags','create','post','setTags'];(function(_0x4c8e93,_0x3f101e){var _0x54dbb3=function(_0x266968){while(--_0x266968){_0x4c8e93['push'](_0x4c8e93['shift']());}};_0x54dbb3(++_0x3f101e);}(_0xf4eb,0xec));var _0xbf4e=function(_0x111f6d,_0x53bc7b){_0x111f6d=_0x111f6d-0x0;var _0x4ea3c1=_0xf4eb[_0x111f6d];return _0x4ea3c1;};'use strict';var multer=require(_0xbf4e('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbf4e('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbf4e('0x2'));var config=require(_0xbf4e('0x3'));var controller=require(_0xbf4e('0x4'));router[_0xbf4e('0x5')]('/',auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x7')]);router[_0xbf4e('0x5')]('/:id',auth[_0xbf4e('0x6')](),controller['show']);router['get'](_0xbf4e('0x8'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x9')]);router[_0xbf4e('0x5')](_0xbf4e('0xa'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0xb')]);router['get']('/:id/descriptions',auth[_0xbf4e('0x6')](),controller['getDescriptions']);router[_0xbf4e('0x5')](_0xbf4e('0xc'),auth['isAuthenticated'](),controller[_0xbf4e('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xbf4e('0xe')]);router[_0xbf4e('0xf')](_0xbf4e('0xc'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x10')]);router[_0xbf4e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xbf4e('0x12')]);router[_0xbf4e('0x13')](_0xbf4e('0x14'),auth['isAuthenticated'](),controller[_0xbf4e('0x15')]);module[_0xbf4e('0x16')]=router;
\ No newline at end of file
+var _0x0bb5=['put','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','post','setTags'];(function(_0x42d80a,_0x3b76fb){var _0x56a4b7=function(_0x312582){while(--_0x312582){_0x42d80a['push'](_0x42d80a['shift']());}};_0x56a4b7(++_0x3b76fb);}(_0x0bb5,0x148));var _0x50bb=function(_0x766bf4,_0x138b96){_0x766bf4=_0x766bf4-0x0;var _0x531ace=_0x0bb5[_0x766bf4];return _0x531ace;};'use strict';var multer=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x50bb('0x2'));var router=express[_0x50bb('0x3')]();var fs_extra=require(_0x50bb('0x4'));var auth=require(_0x50bb('0x5'));var interaction=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var controller=require(_0x50bb('0x8'));router[_0x50bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x50bb('0x9')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0xc')]);router['get']('/:id/fields',auth[_0x50bb('0xb')](),controller[_0x50bb('0xd')]);router[_0x50bb('0x9')](_0x50bb('0xe'),auth['isAuthenticated'](),controller[_0x50bb('0xf')]);router[_0x50bb('0x9')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x11')]);router[_0x50bb('0x9')](_0x50bb('0x12'),auth['isAuthenticated'](),controller[_0x50bb('0x13')]);router['post']('/',auth[_0x50bb('0xb')](),controller[_0x50bb('0x14')]);router[_0x50bb('0x15')]('/:id/tags',auth[_0x50bb('0xb')](),controller[_0x50bb('0x16')]);router[_0x50bb('0x17')]('/:id',auth[_0x50bb('0xb')](),controller['update']);router[_0x50bb('0x18')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x19')]);module[_0x50bb('0x1a')]=router;
\ No newline at end of file
index 92d5d11..add70c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27fa=['STRING','sequelize','exports'];(function(_0x1db893,_0x1788e6){var _0x451f62=function(_0x43b1f5){while(--_0x43b1f5){_0x1db893['push'](_0x1db893['shift']());}};_0x451f62(++_0x1788e6);}(_0x27fa,0x103));var _0xa27f=function(_0x4b368d,_0x300518){_0x4b368d=_0x4b368d-0x0;var _0x1ee204=_0x27fa[_0x4b368d];return _0x1ee204;};'use strict';var Sequelize=require(_0xa27f('0x0'));module[_0xa27f('0x1')]={'name':{'type':Sequelize[_0xa27f('0x2')]},'description':{'type':Sequelize[_0xa27f('0x2')]}};
\ No newline at end of file
+var _0x476f=['exports'];(function(_0x2bbd2d,_0x37c3c4){var _0x257dc9=function(_0x1928ff){while(--_0x1928ff){_0x2bbd2d['push'](_0x2bbd2d['shift']());}};_0x257dc9(++_0x37c3c4);}(_0x476f,0x73));var _0xf476=function(_0x4b6a9a,_0x38b0c1){_0x4b6a9a=_0x4b6a9a-0x0;var _0x3a4fa7=_0x476f[_0x4b6a9a];return _0x3a4fa7;};'use strict';var Sequelize=require('sequelize');module[_0xf476('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 09f54db..b4df874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f5c=['ejs','fs-extra','lodash','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','apply','save','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','nolimit','sort','filters','pick','where','merge','filter','includeAll','include','ZendeskConfiguration','findAll','rows','catch','show','params','find','create','body','destroy','findOne','ZendeskField','order','options','getFields','hasOwnProperty','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv'];(function(_0x2293d9,_0x1f264b){var _0x4a6243=function(_0x3b722d){while(--_0x3b722d){_0x2293d9['push'](_0x2293d9['shift']());}};_0x4a6243(++_0x1f264b);}(_0x6f5c,0x199));var _0xc6f5=function(_0x5b919f,_0x2401b1){_0x5b919f=_0x5b919f-0x0;var _0x16bfff=_0x6f5c[_0x5b919f];return _0x16bfff;};'use strict';var emlformat=require(_0xc6f5('0x0'));var rimraf=require(_0xc6f5('0x1'));var zipdir=require(_0xc6f5('0x2'));var jsonpatch=require(_0xc6f5('0x3'));var rp=require(_0xc6f5('0x4'));var moment=require(_0xc6f5('0x5'));var BPromise=require(_0xc6f5('0x6'));var Mustache=require('mustache');var util=require(_0xc6f5('0x7'));var path=require(_0xc6f5('0x8'));var sox=require(_0xc6f5('0x9'));var csv=require(_0xc6f5('0xa'));var ejs=require(_0xc6f5('0xb'));var fs=require('fs');var fs_extra=require(_0xc6f5('0xc'));var _=require(_0xc6f5('0xd'));var squel=require('squel');var crypto=require(_0xc6f5('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc6f5('0xf'));var Papa=require('papaparse');var Redis=require(_0xc6f5('0x10'));var authService=require(_0xc6f5('0x11'));var qs=require(_0xc6f5('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc6f5('0x13'));var logger=require(_0xc6f5('0x14'))('api');var utils=require(_0xc6f5('0x15'));var config=require(_0xc6f5('0x16'));var licenseUtil=require(_0xc6f5('0x17'));var db=require(_0xc6f5('0x18'))['db'];function respondWithStatusCode(_0x319560,_0x52d109){_0x52d109=_0x52d109||0xcc;return function(_0x364b75){if(_0x364b75){return _0x319560[_0xc6f5('0x19')](_0x52d109);}return _0x319560[_0xc6f5('0x1a')](_0x52d109)[_0xc6f5('0x1b')]();};}function respondWithResult(_0xa8b0c7,_0x336a5a){_0x336a5a=_0x336a5a||0xc8;return function(_0x1146eb){if(_0x1146eb){return _0xa8b0c7[_0xc6f5('0x1a')](_0x336a5a)[_0xc6f5('0x1c')](_0x1146eb);}};}function respondWithFilteredResult(_0x5e32c3,_0x4b8278){return function(_0xc2486f){if(_0xc2486f){var _0x4905c5=typeof _0x4b8278[_0xc6f5('0x1d')]===_0xc6f5('0x1e')&&typeof _0x4b8278['limit']==='undefined';var _0x23ceb6=_0xc2486f[_0xc6f5('0x1f')];var _0x60e991=_0x4905c5?0x0:_0x4b8278[_0xc6f5('0x1d')];var _0x2d10cd=_0x4905c5?_0xc2486f[_0xc6f5('0x1f')]:_0x4b8278['offset']+_0x4b8278[_0xc6f5('0x20')];var _0x1bef38;if(_0x2d10cd>=_0x23ceb6){_0x2d10cd=_0x23ceb6;_0x1bef38=0xc8;}else{_0x1bef38=0xce;}_0x5e32c3[_0xc6f5('0x1a')](_0x1bef38);return _0x5e32c3['set']('Content-Range',_0x60e991+'-'+_0x2d10cd+'/'+_0x23ceb6)[_0xc6f5('0x1c')](_0xc2486f);}return null;};}function patchUpdates(_0xcb54ba){return function(_0x5d92e5){try{jsonpatch[_0xc6f5('0x21')](_0x5d92e5,_0xcb54ba,!![]);}catch(_0x512e7d){return BPromise['reject'](_0x512e7d);}return _0x5d92e5[_0xc6f5('0x22')]();};}function saveUpdates(_0x2c4074,_0x5d75c3){return function(_0x27cc17){if(_0x27cc17){return _0x27cc17[_0xc6f5('0x23')](_0x2c4074)[_0xc6f5('0x24')](function(_0x2a39f5){return _0x2a39f5;});}return null;};}function removeEntity(_0x51933e,_0x4357f9){return function(_0x43ef6d){if(_0x43ef6d){return _0x43ef6d['destroy']()['then'](function(){_0x51933e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x121476,_0x5d79f5){return function(_0x52c88c){if(!_0x52c88c){_0x121476['sendStatus'](0x194);}return _0x52c88c;};}function handleError(_0x395a21,_0x4dfd52){_0x4dfd52=_0x4dfd52||0x1f4;return function(_0x5833a4){logger[_0xc6f5('0x25')](_0x5833a4[_0xc6f5('0x26')]);if(_0x5833a4['name']){delete _0x5833a4[_0xc6f5('0x27')];}_0x395a21[_0xc6f5('0x1a')](_0x4dfd52)[_0xc6f5('0x28')](_0x5833a4);};}exports[_0xc6f5('0x29')]=function(_0x2d9b20,_0x565ada){var _0x2a7657={},_0x2bcaa8={},_0x1ced70={'count':0x0,'rows':[]};var _0x2c61fd=_[_0xc6f5('0x2a')](db['ZendeskConfiguration'][_0xc6f5('0x2b')],function(_0x12d4fe){return{'name':_0x12d4fe[_0xc6f5('0x2c')],'type':_0x12d4fe[_0xc6f5('0x2d')][_0xc6f5('0x2e')]};});_0x2bcaa8[_0xc6f5('0x2f')]=_['map'](_0x2c61fd,_0xc6f5('0x27'));_0x2bcaa8[_0xc6f5('0x30')]=_[_0xc6f5('0x31')](_0x2d9b20['query']);_0x2bcaa8['filters']=_['intersection'](_0x2bcaa8['model'],_0x2bcaa8[_0xc6f5('0x30')]);_0x2a7657[_0xc6f5('0x32')]=_[_0xc6f5('0x33')](_0x2bcaa8[_0xc6f5('0x2f')],qs[_0xc6f5('0x34')](_0x2d9b20[_0xc6f5('0x30')]['fields']));_0x2a7657[_0xc6f5('0x32')]=_0x2a7657[_0xc6f5('0x32')][_0xc6f5('0x35')]?_0x2a7657[_0xc6f5('0x32')]:_0x2bcaa8[_0xc6f5('0x2f')];if(!_0x2d9b20[_0xc6f5('0x30')]['hasOwnProperty'](_0xc6f5('0x36'))){_0x2a7657[_0xc6f5('0x20')]=qs[_0xc6f5('0x20')](_0x2d9b20[_0xc6f5('0x30')][_0xc6f5('0x20')]);_0x2a7657[_0xc6f5('0x1d')]=qs[_0xc6f5('0x1d')](_0x2d9b20[_0xc6f5('0x30')][_0xc6f5('0x1d')]);}_0x2a7657['order']=qs[_0xc6f5('0x37')](_0x2d9b20[_0xc6f5('0x30')][_0xc6f5('0x37')]);_0x2a7657['where']=qs[_0xc6f5('0x38')](_[_0xc6f5('0x39')](_0x2d9b20['query'],_0x2bcaa8[_0xc6f5('0x38')]),_0x2c61fd);if(_0x2d9b20[_0xc6f5('0x30')]['filter']){_0x2a7657[_0xc6f5('0x3a')]=_[_0xc6f5('0x3b')](_0x2a7657[_0xc6f5('0x3a')],{'$or':_[_0xc6f5('0x2a')](_0x2c61fd,function(_0x515c2a){if(_0x515c2a[_0xc6f5('0x2d')]!=='VIRTUAL'){var _0x2c2bfe={};_0x2c2bfe[_0x515c2a[_0xc6f5('0x27')]]={'$like':'%'+_0x2d9b20[_0xc6f5('0x30')][_0xc6f5('0x3c')]+'%'};return _0x2c2bfe;}})});}_0x2a7657=_[_0xc6f5('0x3b')]({},_0x2a7657,_0x2d9b20['options']);var _0x21b034={'where':_0x2a7657['where']};return db['ZendeskConfiguration']['count'](_0x21b034)[_0xc6f5('0x24')](function(_0xcfcc45){_0x1ced70[_0xc6f5('0x1f')]=_0xcfcc45;if(_0x2d9b20[_0xc6f5('0x30')][_0xc6f5('0x3d')]){_0x2a7657[_0xc6f5('0x3e')]=[{'all':!![]}];}return db[_0xc6f5('0x3f')][_0xc6f5('0x40')](_0x2a7657);})[_0xc6f5('0x24')](function(_0x5e312f){_0x1ced70[_0xc6f5('0x41')]=_0x5e312f;return _0x1ced70;})['then'](respondWithFilteredResult(_0x565ada,_0x2a7657))[_0xc6f5('0x42')](handleError(_0x565ada,null));};exports[_0xc6f5('0x43')]=function(_0x29b0c0,_0x1a02b2){var _0x41d801={'raw':![],'where':{'id':_0x29b0c0[_0xc6f5('0x44')]['id']}},_0x48dfea={};_0x48dfea[_0xc6f5('0x2f')]=_[_0xc6f5('0x31')](db[_0xc6f5('0x3f')][_0xc6f5('0x2b')]);_0x48dfea[_0xc6f5('0x30')]=_[_0xc6f5('0x31')](_0x29b0c0[_0xc6f5('0x30')]);_0x48dfea['filters']=_['intersection'](_0x48dfea['model'],_0x48dfea['query']);_0x41d801[_0xc6f5('0x32')]=_[_0xc6f5('0x33')](_0x48dfea[_0xc6f5('0x2f')],qs[_0xc6f5('0x34')](_0x29b0c0[_0xc6f5('0x30')]['fields']));_0x41d801['attributes']=_0x41d801[_0xc6f5('0x32')][_0xc6f5('0x35')]?_0x41d801[_0xc6f5('0x32')]:_0x48dfea[_0xc6f5('0x2f')];if(_0x29b0c0['query']['includeAll']){_0x41d801['include']=[{'all':!![]}];}_0x41d801=_['merge']({},_0x41d801,_0x29b0c0['options']);return db[_0xc6f5('0x3f')][_0xc6f5('0x45')](_0x41d801)[_0xc6f5('0x24')](handleEntityNotFound(_0x1a02b2,null))[_0xc6f5('0x24')](respondWithResult(_0x1a02b2,null))[_0xc6f5('0x42')](handleError(_0x1a02b2,null));};exports[_0xc6f5('0x46')]=function(_0x4e1a94,_0x3b77aa){return db['ZendeskConfiguration']['create'](_0x4e1a94[_0xc6f5('0x47')],{})[_0xc6f5('0x24')](respondWithResult(_0x3b77aa,0xc9))[_0xc6f5('0x42')](handleError(_0x3b77aa,null));};exports[_0xc6f5('0x23')]=function(_0x2695bd,_0x17a1c5){if(_0x2695bd[_0xc6f5('0x47')]['id']){delete _0x2695bd['body']['id'];}return db[_0xc6f5('0x3f')][_0xc6f5('0x45')]({'where':{'id':_0x2695bd['params']['id']}})[_0xc6f5('0x24')](handleEntityNotFound(_0x17a1c5,null))[_0xc6f5('0x24')](saveUpdates(_0x2695bd[_0xc6f5('0x47')],null))[_0xc6f5('0x24')](respondWithResult(_0x17a1c5,null))[_0xc6f5('0x42')](handleError(_0x17a1c5,null));};exports[_0xc6f5('0x48')]=function(_0x1a28f7,_0x40ffe4){return db[_0xc6f5('0x3f')][_0xc6f5('0x45')]({'where':{'id':_0x1a28f7[_0xc6f5('0x44')]['id']}})[_0xc6f5('0x24')](handleEntityNotFound(_0x40ffe4,null))[_0xc6f5('0x24')](removeEntity(_0x40ffe4,null))[_0xc6f5('0x42')](handleError(_0x40ffe4,null));};exports['getFields']=function(_0x20758d,_0x1b91cc,_0x22dd6a){var _0x3b0a35={};var _0x410660={};var _0x3ab412;var _0x48d058;return db[_0xc6f5('0x3f')][_0xc6f5('0x49')]({'where':{'id':_0x20758d[_0xc6f5('0x44')]['id']}})[_0xc6f5('0x24')](handleEntityNotFound(_0x1b91cc,null))[_0xc6f5('0x24')](function(_0x137f7e){if(_0x137f7e){_0x3ab412=_0x137f7e;_0x410660['model']=_[_0xc6f5('0x31')](db[_0xc6f5('0x4a')][_0xc6f5('0x2b')]);_0x410660[_0xc6f5('0x30')]=_[_0xc6f5('0x31')](_0x20758d[_0xc6f5('0x30')]);_0x410660[_0xc6f5('0x38')]=_['intersection'](_0x410660[_0xc6f5('0x2f')],_0x410660[_0xc6f5('0x30')]);_0x3b0a35['attributes']=_['intersection'](_0x410660[_0xc6f5('0x2f')],qs[_0xc6f5('0x34')](_0x20758d[_0xc6f5('0x30')][_0xc6f5('0x34')]));_0x3b0a35[_0xc6f5('0x32')]=_0x3b0a35[_0xc6f5('0x32')][_0xc6f5('0x35')]?_0x3b0a35[_0xc6f5('0x32')]:_0x410660[_0xc6f5('0x2f')];_0x3b0a35[_0xc6f5('0x4b')]=qs['sort'](_0x20758d[_0xc6f5('0x30')][_0xc6f5('0x37')]);_0x3b0a35[_0xc6f5('0x3a')]=qs[_0xc6f5('0x38')](_['pick'](_0x20758d[_0xc6f5('0x30')],_0x410660[_0xc6f5('0x38')]));if(_0x20758d[_0xc6f5('0x30')]['filter']){_0x3b0a35[_0xc6f5('0x3a')]=_[_0xc6f5('0x3b')](_0x3b0a35[_0xc6f5('0x3a')],{'$or':_[_0xc6f5('0x2a')](_0x3b0a35[_0xc6f5('0x32')],function(_0x5e8144){var _0x309bfb={};_0x309bfb[_0x5e8144]={'$like':'%'+_0x20758d[_0xc6f5('0x30')][_0xc6f5('0x3c')]+'%'};return _0x309bfb;})});}_0x3b0a35=_['merge']({},_0x3b0a35,_0x20758d[_0xc6f5('0x4c')]);return _0x3ab412[_0xc6f5('0x4d')](_0x3b0a35);}})[_0xc6f5('0x24')](function(_0x5c03d8){if(_0x5c03d8){_0x48d058=_0x5c03d8['length'];if(!_0x20758d[_0xc6f5('0x30')][_0xc6f5('0x4e')](_0xc6f5('0x36'))){_0x3b0a35[_0xc6f5('0x20')]=qs['limit'](_0x20758d['query'][_0xc6f5('0x20')]);_0x3b0a35[_0xc6f5('0x1d')]=qs[_0xc6f5('0x1d')](_0x20758d[_0xc6f5('0x30')][_0xc6f5('0x1d')]);}return _0x3ab412[_0xc6f5('0x4d')](_0x3b0a35);}})['then'](function(_0xcf9671){if(_0xcf9671){return _0xcf9671?{'count':_0x48d058,'rows':_0xcf9671}:null;}})[_0xc6f5('0x24')](respondWithResult(_0x1b91cc,null))[_0xc6f5('0x42')](handleError(_0x1b91cc,null));};exports[_0xc6f5('0x4f')]=function(_0x2192f8,_0x75acf2,_0x2379c9){var _0x1dc43f={};var _0x42670e={};var _0x5ed39e;var _0x2bc97a;return db[_0xc6f5('0x3f')][_0xc6f5('0x49')]({'where':{'id':_0x2192f8['params']['id']}})[_0xc6f5('0x24')](handleEntityNotFound(_0x75acf2,null))[_0xc6f5('0x24')](function(_0x5eed94){if(_0x5eed94){_0x5ed39e=_0x5eed94;_0x42670e['model']=_[_0xc6f5('0x31')](db[_0xc6f5('0x4a')][_0xc6f5('0x2b')]);_0x42670e[_0xc6f5('0x30')]=_[_0xc6f5('0x31')](_0x2192f8[_0xc6f5('0x30')]);_0x42670e[_0xc6f5('0x38')]=_[_0xc6f5('0x33')](_0x42670e[_0xc6f5('0x2f')],_0x42670e[_0xc6f5('0x30')]);_0x1dc43f[_0xc6f5('0x32')]=_['intersection'](_0x42670e[_0xc6f5('0x2f')],qs['fields'](_0x2192f8[_0xc6f5('0x30')]['fields']));_0x1dc43f['attributes']=_0x1dc43f[_0xc6f5('0x32')][_0xc6f5('0x35')]?_0x1dc43f['attributes']:_0x42670e[_0xc6f5('0x2f')];_0x1dc43f[_0xc6f5('0x4b')]=qs[_0xc6f5('0x37')](_0x2192f8['query'][_0xc6f5('0x37')]);_0x1dc43f[_0xc6f5('0x3a')]=qs['filters'](_[_0xc6f5('0x39')](_0x2192f8[_0xc6f5('0x30')],_0x42670e[_0xc6f5('0x38')]));if(_0x2192f8[_0xc6f5('0x30')][_0xc6f5('0x3c')]){_0x1dc43f[_0xc6f5('0x3a')]=_['merge'](_0x1dc43f[_0xc6f5('0x3a')],{'$or':_[_0xc6f5('0x2a')](_0x1dc43f[_0xc6f5('0x32')],function(_0x25cd37){var _0x4ea53e={};_0x4ea53e[_0x25cd37]={'$like':'%'+_0x2192f8[_0xc6f5('0x30')]['filter']+'%'};return _0x4ea53e;})});}_0x1dc43f=_[_0xc6f5('0x3b')]({},_0x1dc43f,_0x2192f8[_0xc6f5('0x4c')]);return _0x5ed39e[_0xc6f5('0x4f')](_0x1dc43f);}})['then'](function(_0x562555){if(_0x562555){_0x2bc97a=_0x562555[_0xc6f5('0x35')];if(!_0x2192f8['query'][_0xc6f5('0x4e')]('nolimit')){_0x1dc43f[_0xc6f5('0x20')]=qs['limit'](_0x2192f8[_0xc6f5('0x30')][_0xc6f5('0x20')]);_0x1dc43f[_0xc6f5('0x1d')]=qs[_0xc6f5('0x1d')](_0x2192f8[_0xc6f5('0x30')][_0xc6f5('0x1d')]);}return _0x5ed39e[_0xc6f5('0x4f')](_0x1dc43f);}})[_0xc6f5('0x24')](function(_0x384212){if(_0x384212){return _0x384212?{'count':_0x2bc97a,'rows':_0x384212}:null;}})[_0xc6f5('0x24')](respondWithResult(_0x75acf2,null))[_0xc6f5('0x42')](handleError(_0x75acf2,null));};exports[_0xc6f5('0x50')]=function(_0x27b0d1,_0x2afa2e,_0x1098c1){var _0x56d99f={};var _0x4bd119={};var _0x2a7f64;var _0x1a09b4;return db[_0xc6f5('0x3f')][_0xc6f5('0x49')]({'where':{'id':_0x27b0d1[_0xc6f5('0x44')]['id']}})[_0xc6f5('0x24')](handleEntityNotFound(_0x2afa2e,null))[_0xc6f5('0x24')](function(_0x297721){if(_0x297721){_0x2a7f64=_0x297721;_0x4bd119['model']=_['keys'](db[_0xc6f5('0x4a')][_0xc6f5('0x2b')]);_0x4bd119['query']=_[_0xc6f5('0x31')](_0x27b0d1[_0xc6f5('0x30')]);_0x4bd119['filters']=_['intersection'](_0x4bd119[_0xc6f5('0x2f')],_0x4bd119[_0xc6f5('0x30')]);_0x56d99f[_0xc6f5('0x32')]=_['intersection'](_0x4bd119[_0xc6f5('0x2f')],qs[_0xc6f5('0x34')](_0x27b0d1[_0xc6f5('0x30')][_0xc6f5('0x34')]));_0x56d99f['attributes']=_0x56d99f[_0xc6f5('0x32')][_0xc6f5('0x35')]?_0x56d99f[_0xc6f5('0x32')]:_0x4bd119['model'];_0x56d99f['order']=qs['sort'](_0x27b0d1[_0xc6f5('0x30')][_0xc6f5('0x37')]);_0x56d99f[_0xc6f5('0x3a')]=qs['filters'](_['pick'](_0x27b0d1[_0xc6f5('0x30')],_0x4bd119[_0xc6f5('0x38')]));if(_0x27b0d1[_0xc6f5('0x30')][_0xc6f5('0x3c')]){_0x56d99f['where']=_[_0xc6f5('0x3b')](_0x56d99f[_0xc6f5('0x3a')],{'$or':_[_0xc6f5('0x2a')](_0x56d99f['attributes'],function(_0x2e7de5){var _0x42cb23={};_0x42cb23[_0x2e7de5]={'$like':'%'+_0x27b0d1[_0xc6f5('0x30')]['filter']+'%'};return _0x42cb23;})});}_0x56d99f=_[_0xc6f5('0x3b')]({},_0x56d99f,_0x27b0d1[_0xc6f5('0x4c')]);return _0x2a7f64[_0xc6f5('0x50')](_0x56d99f);}})['then'](function(_0xf5d614){if(_0xf5d614){_0x1a09b4=_0xf5d614[_0xc6f5('0x35')];if(!_0x27b0d1[_0xc6f5('0x30')][_0xc6f5('0x4e')](_0xc6f5('0x36'))){_0x56d99f[_0xc6f5('0x20')]=qs[_0xc6f5('0x20')](_0x27b0d1[_0xc6f5('0x30')][_0xc6f5('0x20')]);_0x56d99f[_0xc6f5('0x1d')]=qs[_0xc6f5('0x1d')](_0x27b0d1[_0xc6f5('0x30')][_0xc6f5('0x1d')]);}return _0x2a7f64['getDescriptions'](_0x56d99f);}})[_0xc6f5('0x24')](function(_0x50bc1f){if(_0x50bc1f){return _0x50bc1f?{'count':_0x1a09b4,'rows':_0x50bc1f}:null;}})[_0xc6f5('0x24')](respondWithResult(_0x2afa2e,null))[_0xc6f5('0x42')](handleError(_0x2afa2e,null));};exports[_0xc6f5('0x51')]=function(_0x24ac65,_0x31cfb9,_0xf6764e){var _0x4698ff={};var _0x2478bd={};var _0x4b9bdf;var _0x6eb72b;return db['ZendeskConfiguration'][_0xc6f5('0x49')]({'where':{'id':_0x24ac65[_0xc6f5('0x44')]['id']}})[_0xc6f5('0x24')](handleEntityNotFound(_0x31cfb9,null))['then'](function(_0x284747){if(_0x284747){_0x4b9bdf=_0x284747;_0x2478bd[_0xc6f5('0x2f')]=_[_0xc6f5('0x31')](db[_0xc6f5('0x52')][_0xc6f5('0x2b')]);_0x2478bd['query']=_['keys'](_0x24ac65['query']);_0x2478bd['filters']=_[_0xc6f5('0x33')](_0x2478bd[_0xc6f5('0x2f')],_0x2478bd[_0xc6f5('0x30')]);_0x4698ff[_0xc6f5('0x32')]=_[_0xc6f5('0x33')](_0x2478bd[_0xc6f5('0x2f')],qs[_0xc6f5('0x34')](_0x24ac65[_0xc6f5('0x30')][_0xc6f5('0x34')]));_0x4698ff['attributes']=_0x4698ff[_0xc6f5('0x32')]['length']?_0x4698ff[_0xc6f5('0x32')]:_0x2478bd['model'];_0x4698ff[_0xc6f5('0x4b')]=qs[_0xc6f5('0x37')](_0x24ac65[_0xc6f5('0x30')]['sort']);_0x4698ff[_0xc6f5('0x3a')]=qs[_0xc6f5('0x38')](_['pick'](_0x24ac65[_0xc6f5('0x30')],_0x2478bd[_0xc6f5('0x38')]));if(_0x24ac65[_0xc6f5('0x30')]['filter']){_0x4698ff['where']=_[_0xc6f5('0x3b')](_0x4698ff['where'],{'$or':_[_0xc6f5('0x2a')](_0x4698ff[_0xc6f5('0x32')],function(_0x12724f){var _0x5e6cc1={};_0x5e6cc1[_0x12724f]={'$like':'%'+_0x24ac65['query']['filter']+'%'};return _0x5e6cc1;})});}_0x4698ff=_[_0xc6f5('0x3b')]({},_0x4698ff,_0x24ac65['options']);return _0x4b9bdf[_0xc6f5('0x51')](_0x4698ff);}})[_0xc6f5('0x24')](function(_0x46a65f){if(_0x46a65f){_0x6eb72b=_0x46a65f[_0xc6f5('0x35')];if(!_0x24ac65[_0xc6f5('0x30')][_0xc6f5('0x4e')]('nolimit')){_0x4698ff[_0xc6f5('0x20')]=qs[_0xc6f5('0x20')](_0x24ac65['query'][_0xc6f5('0x20')]);_0x4698ff[_0xc6f5('0x1d')]=qs[_0xc6f5('0x1d')](_0x24ac65[_0xc6f5('0x30')][_0xc6f5('0x1d')]);}return _0x4b9bdf[_0xc6f5('0x51')](_0x4698ff);}})[_0xc6f5('0x24')](function(_0x3a45a2){if(_0x3a45a2){return _0x3a45a2?{'count':_0x6eb72b,'rows':_0x3a45a2}:null;}})[_0xc6f5('0x24')](respondWithResult(_0x31cfb9,null))[_0xc6f5('0x42')](handleError(_0x31cfb9,null));};exports[_0xc6f5('0x53')]=function(_0x48fb9b,_0x5d320d,_0x3b0c34){if(_0x48fb9b[_0xc6f5('0x47')]['id']){delete _0x48fb9b['body']['id'];}return db[_0xc6f5('0x3f')][_0xc6f5('0x49')]({'where':{'id':_0x48fb9b[_0xc6f5('0x44')]['id']}})[_0xc6f5('0x24')](handleEntityNotFound(_0x5d320d,null))['then'](function(_0x29b883){if(_0x29b883){return _0x29b883[_0xc6f5('0x53')](_0x48fb9b[_0xc6f5('0x47')]['ids']||[]);}return null;})[_0xc6f5('0x24')](respondWithResult(_0x5d320d,null))[_0xc6f5('0x42')](handleError(_0x5d320d,null));};
\ No newline at end of file
+var _0x0cfd=['VIRTUAL','options','includeAll','rows','show','params','fields','include','find','catch','create','body','findOne','ZendeskField','order','getFields','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge'];(function(_0x25a51a,_0x52cc6c){var _0x333647=function(_0x21e302){while(--_0x21e302){_0x25a51a['push'](_0x25a51a['shift']());}};_0x333647(++_0x52cc6c);}(_0x0cfd,0xbb));var _0xd0cf=function(_0x1920d4,_0x148a71){_0x1920d4=_0x1920d4-0x0;var _0x578571=_0x0cfd[_0x1920d4];return _0x578571;};'use strict';var emlformat=require(_0xd0cf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd0cf('0x1'));var rp=require(_0xd0cf('0x2'));var moment=require(_0xd0cf('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd0cf('0x4'));var util=require(_0xd0cf('0x5'));var path=require('path');var sox=require(_0xd0cf('0x6'));var csv=require(_0xd0cf('0x7'));var ejs=require(_0xd0cf('0x8'));var fs=require('fs');var fs_extra=require(_0xd0cf('0x9'));var _=require(_0xd0cf('0xa'));var squel=require(_0xd0cf('0xb'));var crypto=require('crypto');var jsforce=require(_0xd0cf('0xc'));var deskjs=require(_0xd0cf('0xd'));var toCsv=require(_0xd0cf('0x7'));var querystring=require('querystring');var Papa=require(_0xd0cf('0xe'));var Redis=require(_0xd0cf('0xf'));var authService=require(_0xd0cf('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xd0cf('0x11'));var hardwareService=require(_0xd0cf('0x12'));var logger=require(_0xd0cf('0x13'))(_0xd0cf('0x14'));var utils=require(_0xd0cf('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xd0cf('0x16'));var db=require(_0xd0cf('0x17'))['db'];function respondWithStatusCode(_0x184e97,_0x1bc963){_0x1bc963=_0x1bc963||0xcc;return function(_0xb8abbe){if(_0xb8abbe){return _0x184e97[_0xd0cf('0x18')](_0x1bc963);}return _0x184e97[_0xd0cf('0x19')](_0x1bc963)[_0xd0cf('0x1a')]();};}function respondWithResult(_0x554dfa,_0x1946f3){_0x1946f3=_0x1946f3||0xc8;return function(_0x34903e){if(_0x34903e){return _0x554dfa[_0xd0cf('0x19')](_0x1946f3)[_0xd0cf('0x1b')](_0x34903e);}};}function respondWithFilteredResult(_0x35e982,_0xbba5c2){return function(_0x10e7c1){if(_0x10e7c1){var _0x4bacea=typeof _0xbba5c2[_0xd0cf('0x1c')]===_0xd0cf('0x1d')&&typeof _0xbba5c2[_0xd0cf('0x1e')]==='undefined';var _0x238f04=_0x10e7c1[_0xd0cf('0x1f')];var _0x4ff948=_0x4bacea?0x0:_0xbba5c2[_0xd0cf('0x1c')];var _0x10474c=_0x4bacea?_0x10e7c1[_0xd0cf('0x1f')]:_0xbba5c2[_0xd0cf('0x1c')]+_0xbba5c2[_0xd0cf('0x1e')];var _0x267ec3;if(_0x10474c>=_0x238f04){_0x10474c=_0x238f04;_0x267ec3=0xc8;}else{_0x267ec3=0xce;}_0x35e982['status'](_0x267ec3);return _0x35e982['set'](_0xd0cf('0x20'),_0x4ff948+'-'+_0x10474c+'/'+_0x238f04)[_0xd0cf('0x1b')](_0x10e7c1);}return null;};}function patchUpdates(_0x1056c2){return function(_0x3d065a){try{jsonpatch[_0xd0cf('0x21')](_0x3d065a,_0x1056c2,!![]);}catch(_0x12bb18){return BPromise[_0xd0cf('0x22')](_0x12bb18);}return _0x3d065a[_0xd0cf('0x23')]();};}function saveUpdates(_0x48ccb5,_0x21375c){return function(_0x611cd6){if(_0x611cd6){return _0x611cd6[_0xd0cf('0x24')](_0x48ccb5)['then'](function(_0x3f130e){return _0x3f130e;});}return null;};}function removeEntity(_0x4ab31c,_0x49edae){return function(_0x2e01a3){if(_0x2e01a3){return _0x2e01a3[_0xd0cf('0x25')]()[_0xd0cf('0x26')](function(){_0x4ab31c[_0xd0cf('0x19')](0xcc)[_0xd0cf('0x1a')]();});}};}function handleEntityNotFound(_0x2bc41d,_0x3654b9){return function(_0x2bf0ff){if(!_0x2bf0ff){_0x2bc41d[_0xd0cf('0x18')](0x194);}return _0x2bf0ff;};}function handleError(_0x330317,_0x5ad037){_0x5ad037=_0x5ad037||0x1f4;return function(_0x1900d9){logger['error'](_0x1900d9[_0xd0cf('0x27')]);if(_0x1900d9[_0xd0cf('0x28')]){delete _0x1900d9['name'];}_0x330317[_0xd0cf('0x19')](_0x5ad037)[_0xd0cf('0x29')](_0x1900d9);};}exports['index']=function(_0xb4344c,_0x38a085){var _0x349e9a={},_0x510107={},_0x2847c1={'count':0x0,'rows':[]};var _0x27f34f=_['map'](db[_0xd0cf('0x2a')][_0xd0cf('0x2b')],function(_0x5e2cc6){return{'name':_0x5e2cc6[_0xd0cf('0x2c')],'type':_0x5e2cc6[_0xd0cf('0x2d')][_0xd0cf('0x2e')]};});_0x510107[_0xd0cf('0x2f')]=_[_0xd0cf('0x30')](_0x27f34f,_0xd0cf('0x28'));_0x510107[_0xd0cf('0x31')]=_[_0xd0cf('0x32')](_0xb4344c[_0xd0cf('0x31')]);_0x510107['filters']=_[_0xd0cf('0x33')](_0x510107['model'],_0x510107[_0xd0cf('0x31')]);_0x349e9a[_0xd0cf('0x34')]=_[_0xd0cf('0x33')](_0x510107[_0xd0cf('0x2f')],qs['fields'](_0xb4344c[_0xd0cf('0x31')]['fields']));_0x349e9a[_0xd0cf('0x34')]=_0x349e9a[_0xd0cf('0x34')][_0xd0cf('0x35')]?_0x349e9a['attributes']:_0x510107[_0xd0cf('0x2f')];if(!_0xb4344c[_0xd0cf('0x31')][_0xd0cf('0x36')](_0xd0cf('0x37'))){_0x349e9a[_0xd0cf('0x1e')]=qs[_0xd0cf('0x1e')](_0xb4344c[_0xd0cf('0x31')][_0xd0cf('0x1e')]);_0x349e9a['offset']=qs[_0xd0cf('0x1c')](_0xb4344c[_0xd0cf('0x31')][_0xd0cf('0x1c')]);}_0x349e9a['order']=qs[_0xd0cf('0x38')](_0xb4344c['query']['sort']);_0x349e9a[_0xd0cf('0x39')]=qs['filters'](_[_0xd0cf('0x3a')](_0xb4344c['query'],_0x510107[_0xd0cf('0x3b')]),_0x27f34f);if(_0xb4344c[_0xd0cf('0x31')][_0xd0cf('0x3c')]){_0x349e9a[_0xd0cf('0x39')]=_[_0xd0cf('0x3d')](_0x349e9a['where'],{'$or':_[_0xd0cf('0x30')](_0x27f34f,function(_0x15a248){if(_0x15a248['type']!==_0xd0cf('0x3e')){var _0x26e0e6={};_0x26e0e6[_0x15a248[_0xd0cf('0x28')]]={'$like':'%'+_0xb4344c[_0xd0cf('0x31')][_0xd0cf('0x3c')]+'%'};return _0x26e0e6;}})});}_0x349e9a=_[_0xd0cf('0x3d')]({},_0x349e9a,_0xb4344c[_0xd0cf('0x3f')]);var _0x1e7b46={'where':_0x349e9a[_0xd0cf('0x39')]};return db[_0xd0cf('0x2a')][_0xd0cf('0x1f')](_0x1e7b46)[_0xd0cf('0x26')](function(_0x56b5ba){_0x2847c1[_0xd0cf('0x1f')]=_0x56b5ba;if(_0xb4344c['query'][_0xd0cf('0x40')]){_0x349e9a['include']=[{'all':!![]}];}return db['ZendeskConfiguration']['findAll'](_0x349e9a);})[_0xd0cf('0x26')](function(_0x4ed7be){_0x2847c1[_0xd0cf('0x41')]=_0x4ed7be;return _0x2847c1;})[_0xd0cf('0x26')](respondWithFilteredResult(_0x38a085,_0x349e9a))['catch'](handleError(_0x38a085,null));};exports[_0xd0cf('0x42')]=function(_0x78b1cf,_0x527c52){var _0x43b6da={'raw':![],'where':{'id':_0x78b1cf[_0xd0cf('0x43')]['id']}},_0x4fcb12={};_0x4fcb12[_0xd0cf('0x2f')]=_[_0xd0cf('0x32')](db['ZendeskConfiguration'][_0xd0cf('0x2b')]);_0x4fcb12['query']=_[_0xd0cf('0x32')](_0x78b1cf[_0xd0cf('0x31')]);_0x4fcb12[_0xd0cf('0x3b')]=_[_0xd0cf('0x33')](_0x4fcb12['model'],_0x4fcb12[_0xd0cf('0x31')]);_0x43b6da[_0xd0cf('0x34')]=_[_0xd0cf('0x33')](_0x4fcb12[_0xd0cf('0x2f')],qs[_0xd0cf('0x44')](_0x78b1cf[_0xd0cf('0x31')][_0xd0cf('0x44')]));_0x43b6da[_0xd0cf('0x34')]=_0x43b6da[_0xd0cf('0x34')]['length']?_0x43b6da[_0xd0cf('0x34')]:_0x4fcb12[_0xd0cf('0x2f')];if(_0x78b1cf[_0xd0cf('0x31')][_0xd0cf('0x40')]){_0x43b6da[_0xd0cf('0x45')]=[{'all':!![]}];}_0x43b6da=_[_0xd0cf('0x3d')]({},_0x43b6da,_0x78b1cf[_0xd0cf('0x3f')]);return db['ZendeskConfiguration'][_0xd0cf('0x46')](_0x43b6da)[_0xd0cf('0x26')](handleEntityNotFound(_0x527c52,null))[_0xd0cf('0x26')](respondWithResult(_0x527c52,null))[_0xd0cf('0x47')](handleError(_0x527c52,null));};exports[_0xd0cf('0x48')]=function(_0x43b9ee,_0x193492){return db['ZendeskConfiguration'][_0xd0cf('0x48')](_0x43b9ee[_0xd0cf('0x49')],{})[_0xd0cf('0x26')](respondWithResult(_0x193492,0xc9))[_0xd0cf('0x47')](handleError(_0x193492,null));};exports['update']=function(_0x28d71c,_0x260b19){if(_0x28d71c['body']['id']){delete _0x28d71c[_0xd0cf('0x49')]['id'];}return db[_0xd0cf('0x2a')]['find']({'where':{'id':_0x28d71c[_0xd0cf('0x43')]['id']}})['then'](handleEntityNotFound(_0x260b19,null))[_0xd0cf('0x26')](saveUpdates(_0x28d71c[_0xd0cf('0x49')],null))['then'](respondWithResult(_0x260b19,null))[_0xd0cf('0x47')](handleError(_0x260b19,null));};exports[_0xd0cf('0x25')]=function(_0x4d6e3b,_0x44f8b9){return db[_0xd0cf('0x2a')]['find']({'where':{'id':_0x4d6e3b['params']['id']}})['then'](handleEntityNotFound(_0x44f8b9,null))[_0xd0cf('0x26')](removeEntity(_0x44f8b9,null))[_0xd0cf('0x47')](handleError(_0x44f8b9,null));};exports['getFields']=function(_0x3db9c1,_0x79a66a,_0x1d7109){var _0x568cd0={};var _0x615312={};var _0x35fcdb;var _0x4c1ec0;return db['ZendeskConfiguration'][_0xd0cf('0x4a')]({'where':{'id':_0x3db9c1[_0xd0cf('0x43')]['id']}})['then'](handleEntityNotFound(_0x79a66a,null))['then'](function(_0x14bacc){if(_0x14bacc){_0x35fcdb=_0x14bacc;_0x615312[_0xd0cf('0x2f')]=_[_0xd0cf('0x32')](db[_0xd0cf('0x4b')][_0xd0cf('0x2b')]);_0x615312[_0xd0cf('0x31')]=_['keys'](_0x3db9c1[_0xd0cf('0x31')]);_0x615312[_0xd0cf('0x3b')]=_[_0xd0cf('0x33')](_0x615312['model'],_0x615312[_0xd0cf('0x31')]);_0x568cd0[_0xd0cf('0x34')]=_['intersection'](_0x615312[_0xd0cf('0x2f')],qs[_0xd0cf('0x44')](_0x3db9c1[_0xd0cf('0x31')]['fields']));_0x568cd0[_0xd0cf('0x34')]=_0x568cd0[_0xd0cf('0x34')][_0xd0cf('0x35')]?_0x568cd0[_0xd0cf('0x34')]:_0x615312[_0xd0cf('0x2f')];_0x568cd0[_0xd0cf('0x4c')]=qs[_0xd0cf('0x38')](_0x3db9c1[_0xd0cf('0x31')][_0xd0cf('0x38')]);_0x568cd0[_0xd0cf('0x39')]=qs[_0xd0cf('0x3b')](_['pick'](_0x3db9c1['query'],_0x615312['filters']));if(_0x3db9c1[_0xd0cf('0x31')]['filter']){_0x568cd0['where']=_[_0xd0cf('0x3d')](_0x568cd0[_0xd0cf('0x39')],{'$or':_[_0xd0cf('0x30')](_0x568cd0[_0xd0cf('0x34')],function(_0xc937cd){var _0x182510={};_0x182510[_0xc937cd]={'$like':'%'+_0x3db9c1['query'][_0xd0cf('0x3c')]+'%'};return _0x182510;})});}_0x568cd0=_['merge']({},_0x568cd0,_0x3db9c1[_0xd0cf('0x3f')]);return _0x35fcdb[_0xd0cf('0x4d')](_0x568cd0);}})[_0xd0cf('0x26')](function(_0x30531b){if(_0x30531b){_0x4c1ec0=_0x30531b[_0xd0cf('0x35')];if(!_0x3db9c1[_0xd0cf('0x31')][_0xd0cf('0x36')](_0xd0cf('0x37'))){_0x568cd0[_0xd0cf('0x1e')]=qs[_0xd0cf('0x1e')](_0x3db9c1[_0xd0cf('0x31')][_0xd0cf('0x1e')]);_0x568cd0[_0xd0cf('0x1c')]=qs['offset'](_0x3db9c1[_0xd0cf('0x31')][_0xd0cf('0x1c')]);}return _0x35fcdb[_0xd0cf('0x4d')](_0x568cd0);}})[_0xd0cf('0x26')](function(_0x3a9b6b){if(_0x3a9b6b){return _0x3a9b6b?{'count':_0x4c1ec0,'rows':_0x3a9b6b}:null;}})[_0xd0cf('0x26')](respondWithResult(_0x79a66a,null))[_0xd0cf('0x47')](handleError(_0x79a66a,null));};exports[_0xd0cf('0x4e')]=function(_0x144f6e,_0xc681fa,_0x5baafa){var _0x5255a0={};var _0x1be46c={};var _0x1f3055;var _0x1569d9;return db[_0xd0cf('0x2a')]['findOne']({'where':{'id':_0x144f6e[_0xd0cf('0x43')]['id']}})[_0xd0cf('0x26')](handleEntityNotFound(_0xc681fa,null))[_0xd0cf('0x26')](function(_0x182ca0){if(_0x182ca0){_0x1f3055=_0x182ca0;_0x1be46c[_0xd0cf('0x2f')]=_[_0xd0cf('0x32')](db[_0xd0cf('0x4b')][_0xd0cf('0x2b')]);_0x1be46c[_0xd0cf('0x31')]=_[_0xd0cf('0x32')](_0x144f6e[_0xd0cf('0x31')]);_0x1be46c['filters']=_[_0xd0cf('0x33')](_0x1be46c['model'],_0x1be46c['query']);_0x5255a0[_0xd0cf('0x34')]=_[_0xd0cf('0x33')](_0x1be46c['model'],qs['fields'](_0x144f6e['query']['fields']));_0x5255a0[_0xd0cf('0x34')]=_0x5255a0['attributes'][_0xd0cf('0x35')]?_0x5255a0[_0xd0cf('0x34')]:_0x1be46c[_0xd0cf('0x2f')];_0x5255a0['order']=qs[_0xd0cf('0x38')](_0x144f6e[_0xd0cf('0x31')][_0xd0cf('0x38')]);_0x5255a0[_0xd0cf('0x39')]=qs[_0xd0cf('0x3b')](_[_0xd0cf('0x3a')](_0x144f6e['query'],_0x1be46c[_0xd0cf('0x3b')]));if(_0x144f6e[_0xd0cf('0x31')][_0xd0cf('0x3c')]){_0x5255a0['where']=_[_0xd0cf('0x3d')](_0x5255a0[_0xd0cf('0x39')],{'$or':_['map'](_0x5255a0[_0xd0cf('0x34')],function(_0x3b7acd){var _0x3254b4={};_0x3254b4[_0x3b7acd]={'$like':'%'+_0x144f6e['query'][_0xd0cf('0x3c')]+'%'};return _0x3254b4;})});}_0x5255a0=_[_0xd0cf('0x3d')]({},_0x5255a0,_0x144f6e[_0xd0cf('0x3f')]);return _0x1f3055[_0xd0cf('0x4e')](_0x5255a0);}})[_0xd0cf('0x26')](function(_0x11f673){if(_0x11f673){_0x1569d9=_0x11f673[_0xd0cf('0x35')];if(!_0x144f6e['query'][_0xd0cf('0x36')](_0xd0cf('0x37'))){_0x5255a0[_0xd0cf('0x1e')]=qs[_0xd0cf('0x1e')](_0x144f6e[_0xd0cf('0x31')][_0xd0cf('0x1e')]);_0x5255a0[_0xd0cf('0x1c')]=qs['offset'](_0x144f6e[_0xd0cf('0x31')][_0xd0cf('0x1c')]);}return _0x1f3055['getSubjects'](_0x5255a0);}})['then'](function(_0x5ada54){if(_0x5ada54){return _0x5ada54?{'count':_0x1569d9,'rows':_0x5ada54}:null;}})[_0xd0cf('0x26')](respondWithResult(_0xc681fa,null))[_0xd0cf('0x47')](handleError(_0xc681fa,null));};exports[_0xd0cf('0x4f')]=function(_0x3f71bb,_0x47c2c5,_0xebc4da){var _0x2e8fd3={};var _0x11f43d={};var _0x1f242e;var _0x809cd2;return db['ZendeskConfiguration'][_0xd0cf('0x4a')]({'where':{'id':_0x3f71bb[_0xd0cf('0x43')]['id']}})[_0xd0cf('0x26')](handleEntityNotFound(_0x47c2c5,null))[_0xd0cf('0x26')](function(_0x53051e){if(_0x53051e){_0x1f242e=_0x53051e;_0x11f43d[_0xd0cf('0x2f')]=_[_0xd0cf('0x32')](db['ZendeskField'][_0xd0cf('0x2b')]);_0x11f43d['query']=_[_0xd0cf('0x32')](_0x3f71bb[_0xd0cf('0x31')]);_0x11f43d[_0xd0cf('0x3b')]=_['intersection'](_0x11f43d[_0xd0cf('0x2f')],_0x11f43d[_0xd0cf('0x31')]);_0x2e8fd3[_0xd0cf('0x34')]=_['intersection'](_0x11f43d[_0xd0cf('0x2f')],qs[_0xd0cf('0x44')](_0x3f71bb[_0xd0cf('0x31')]['fields']));_0x2e8fd3[_0xd0cf('0x34')]=_0x2e8fd3[_0xd0cf('0x34')]['length']?_0x2e8fd3[_0xd0cf('0x34')]:_0x11f43d[_0xd0cf('0x2f')];_0x2e8fd3['order']=qs['sort'](_0x3f71bb[_0xd0cf('0x31')][_0xd0cf('0x38')]);_0x2e8fd3[_0xd0cf('0x39')]=qs['filters'](_[_0xd0cf('0x3a')](_0x3f71bb[_0xd0cf('0x31')],_0x11f43d[_0xd0cf('0x3b')]));if(_0x3f71bb['query'][_0xd0cf('0x3c')]){_0x2e8fd3[_0xd0cf('0x39')]=_[_0xd0cf('0x3d')](_0x2e8fd3[_0xd0cf('0x39')],{'$or':_[_0xd0cf('0x30')](_0x2e8fd3[_0xd0cf('0x34')],function(_0x406ea7){var _0x3923d2={};_0x3923d2[_0x406ea7]={'$like':'%'+_0x3f71bb[_0xd0cf('0x31')][_0xd0cf('0x3c')]+'%'};return _0x3923d2;})});}_0x2e8fd3=_[_0xd0cf('0x3d')]({},_0x2e8fd3,_0x3f71bb[_0xd0cf('0x3f')]);return _0x1f242e[_0xd0cf('0x4f')](_0x2e8fd3);}})['then'](function(_0x5d3054){if(_0x5d3054){_0x809cd2=_0x5d3054[_0xd0cf('0x35')];if(!_0x3f71bb[_0xd0cf('0x31')][_0xd0cf('0x36')]('nolimit')){_0x2e8fd3['limit']=qs['limit'](_0x3f71bb[_0xd0cf('0x31')][_0xd0cf('0x1e')]);_0x2e8fd3[_0xd0cf('0x1c')]=qs['offset'](_0x3f71bb[_0xd0cf('0x31')][_0xd0cf('0x1c')]);}return _0x1f242e[_0xd0cf('0x4f')](_0x2e8fd3);}})[_0xd0cf('0x26')](function(_0x840898){if(_0x840898){return _0x840898?{'count':_0x809cd2,'rows':_0x840898}:null;}})['then'](respondWithResult(_0x47c2c5,null))[_0xd0cf('0x47')](handleError(_0x47c2c5,null));};exports[_0xd0cf('0x50')]=function(_0x156b6f,_0x1f8ef2,_0x1ac09b){var _0x24ab7f={};var _0xf69fa4={};var _0x16c2f8;var _0x399b47;return db[_0xd0cf('0x2a')][_0xd0cf('0x4a')]({'where':{'id':_0x156b6f[_0xd0cf('0x43')]['id']}})[_0xd0cf('0x26')](handleEntityNotFound(_0x1f8ef2,null))[_0xd0cf('0x26')](function(_0x39d6c3){if(_0x39d6c3){_0x16c2f8=_0x39d6c3;_0xf69fa4[_0xd0cf('0x2f')]=_[_0xd0cf('0x32')](db[_0xd0cf('0x51')]['rawAttributes']);_0xf69fa4[_0xd0cf('0x31')]=_['keys'](_0x156b6f[_0xd0cf('0x31')]);_0xf69fa4[_0xd0cf('0x3b')]=_['intersection'](_0xf69fa4[_0xd0cf('0x2f')],_0xf69fa4[_0xd0cf('0x31')]);_0x24ab7f['attributes']=_['intersection'](_0xf69fa4['model'],qs[_0xd0cf('0x44')](_0x156b6f[_0xd0cf('0x31')][_0xd0cf('0x44')]));_0x24ab7f[_0xd0cf('0x34')]=_0x24ab7f[_0xd0cf('0x34')][_0xd0cf('0x35')]?_0x24ab7f[_0xd0cf('0x34')]:_0xf69fa4['model'];_0x24ab7f['order']=qs[_0xd0cf('0x38')](_0x156b6f['query'][_0xd0cf('0x38')]);_0x24ab7f[_0xd0cf('0x39')]=qs[_0xd0cf('0x3b')](_[_0xd0cf('0x3a')](_0x156b6f[_0xd0cf('0x31')],_0xf69fa4[_0xd0cf('0x3b')]));if(_0x156b6f[_0xd0cf('0x31')][_0xd0cf('0x3c')]){_0x24ab7f[_0xd0cf('0x39')]=_['merge'](_0x24ab7f[_0xd0cf('0x39')],{'$or':_[_0xd0cf('0x30')](_0x24ab7f[_0xd0cf('0x34')],function(_0x33e0c5){var _0x56c83a={};_0x56c83a[_0x33e0c5]={'$like':'%'+_0x156b6f[_0xd0cf('0x31')][_0xd0cf('0x3c')]+'%'};return _0x56c83a;})});}_0x24ab7f=_[_0xd0cf('0x3d')]({},_0x24ab7f,_0x156b6f['options']);return _0x16c2f8[_0xd0cf('0x50')](_0x24ab7f);}})['then'](function(_0x44639e){if(_0x44639e){_0x399b47=_0x44639e[_0xd0cf('0x35')];if(!_0x156b6f[_0xd0cf('0x31')][_0xd0cf('0x36')](_0xd0cf('0x37'))){_0x24ab7f['limit']=qs['limit'](_0x156b6f[_0xd0cf('0x31')]['limit']);_0x24ab7f['offset']=qs['offset'](_0x156b6f[_0xd0cf('0x31')][_0xd0cf('0x1c')]);}return _0x16c2f8[_0xd0cf('0x50')](_0x24ab7f);}})['then'](function(_0x6156e9){if(_0x6156e9){return _0x6156e9?{'count':_0x399b47,'rows':_0x6156e9}:null;}})[_0xd0cf('0x26')](respondWithResult(_0x1f8ef2,null))['catch'](handleError(_0x1f8ef2,null));};exports[_0xd0cf('0x52')]=function(_0x336292,_0x81f188,_0x4a7b7c){if(_0x336292[_0xd0cf('0x49')]['id']){delete _0x336292['body']['id'];}return db[_0xd0cf('0x2a')][_0xd0cf('0x4a')]({'where':{'id':_0x336292[_0xd0cf('0x43')]['id']}})[_0xd0cf('0x26')](handleEntityNotFound(_0x81f188,null))['then'](function(_0x398235){if(_0x398235){return _0x398235[_0xd0cf('0x52')](_0x336292[_0xd0cf('0x49')]['ids']||[]);}return null;})[_0xd0cf('0x26')](respondWithResult(_0x81f188,null))[_0xd0cf('0x47')](handleError(_0x81f188,null));};
\ No newline at end of file
index 9f2514c..b94e510 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x1150b2,_0x18c83d){var _0xab2573=function(_0xfceac7){while(--_0xfceac7){_0x1150b2['push'](_0x1150b2['shift']());}};_0xab2573(++_0x18c83d);}(_0x0b0e,0x187));var _0xe0b0=function(_0x45d80c,_0x35c0ff){_0x45d80c=_0x45d80c-0x0;var _0x449a98=_0x0b0e[_0x45d80c];return _0x449a98;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var logger=require(_0xe0b0('0x1'))('api');var moment=require(_0xe0b0('0x2'));var BPromise=require(_0xe0b0('0x3'));var rp=require(_0xe0b0('0x4'));var fs=require('fs');var path=require(_0xe0b0('0x5'));var rimraf=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var attributes=require(_0xe0b0('0x8'));module[_0xe0b0('0x9')]=function(_0x30e20d,_0x28e40f){return _0x30e20d[_0xe0b0('0xa')]('ZendeskConfiguration',attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd824=['rimraf','../../config/environment','ZendeskConfiguration','int_zendesk_configurations','lodash','util','moment','bluebird','request-promise','path'];(function(_0x4e08f1,_0x5ee219){var _0xf23cb9=function(_0x4b9765){while(--_0x4b9765){_0x4e08f1['push'](_0x4e08f1['shift']());}};_0xf23cb9(++_0x5ee219);}(_0xd824,0xc2));var _0x4d82=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd824[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x4d82('0x0'));var util=require(_0x4d82('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4d82('0x2'));var BPromise=require(_0x4d82('0x3'));var rp=require(_0x4d82('0x4'));var fs=require('fs');var path=require(_0x4d82('0x5'));var rimraf=require(_0x4d82('0x6'));var config=require(_0x4d82('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0xd00023,_0x583c7c){return _0xd00023['define'](_0x4d82('0x8'),attributes,{'tableName':_0x4d82('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8064dd7..93f0041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc244=['../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x12d1b8,_0x2f94c2){var _0x1ce3fc=function(_0x4be68b){while(--_0x4be68b){_0x12d1b8['push'](_0x12d1b8['shift']());}};_0x1ce3fc(++_0x2f94c2);}(_0xc244,0xe2));var _0x4c24=function(_0x49dd0b,_0x2f6477){_0x49dd0b=_0x49dd0b-0x0;var _0x59d9a4=_0xc244[_0x49dd0b];return _0x59d9a4;};'use strict';var _=require(_0x4c24('0x0'));var util=require('util');var moment=require(_0x4c24('0x1'));var BPromise=require(_0x4c24('0x2'));var rs=require(_0x4c24('0x3'));var fs=require('fs');var Redis=require(_0x4c24('0x4'));var db=require(_0x4c24('0x5'))['db'];var utils=require(_0x4c24('0x6'));var logger=require(_0x4c24('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4c24('0x8'));var client=jayson['client'][_0x4c24('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46a136,_0x52ebb3,_0x24d970){return new BPromise(function(_0x91353d,_0x2daeab){return client[_0x4c24('0xa')](_0x46a136,_0x24d970)[_0x4c24('0xb')](function(_0x28d9cb){logger[_0x4c24('0xc')](_0x4c24('0xd'),_0x52ebb3,_0x4c24('0xe'));logger[_0x4c24('0xf')](_0x4c24('0x10'),_0x52ebb3,'request\x20sent',JSON[_0x4c24('0x11')](_0x28d9cb));if(_0x28d9cb[_0x4c24('0x12')]){if(_0x28d9cb[_0x4c24('0x12')]['code']===0x1f4){logger[_0x4c24('0x12')](_0x4c24('0xd'),_0x52ebb3,_0x28d9cb[_0x4c24('0x12')][_0x4c24('0x13')]);return _0x2daeab(_0x28d9cb[_0x4c24('0x12')][_0x4c24('0x13')]);}logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x52ebb3,_0x28d9cb[_0x4c24('0x12')][_0x4c24('0x13')]);return _0x91353d(_0x28d9cb[_0x4c24('0x12')][_0x4c24('0x13')]);}else{logger[_0x4c24('0xc')](_0x4c24('0xd'),_0x52ebb3,_0x4c24('0xe'));_0x91353d(_0x28d9cb['result'][_0x4c24('0x13')]);}})[_0x4c24('0x14')](function(_0x2145aa){logger[_0x4c24('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x52ebb3,_0x2145aa);_0x2daeab(_0x2145aa);});});}
\ No newline at end of file
+var _0x74a5=['ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0xe288ab,_0x184588){var _0x4ef31b=function(_0x4455c4){while(--_0x4455c4){_0xe288ab['push'](_0xe288ab['shift']());}};_0x4ef31b(++_0x184588);}(_0x74a5,0x1ea));var _0x574a=function(_0x431714,_0x5867ea){_0x431714=_0x431714-0x0;var _0x4c4a46=_0x74a5[_0x431714];return _0x4c4a46;};'use strict';var _=require(_0x574a('0x0'));var util=require(_0x574a('0x1'));var moment=require(_0x574a('0x2'));var BPromise=require(_0x574a('0x3'));var rs=require(_0x574a('0x4'));var fs=require('fs');var Redis=require(_0x574a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x574a('0x6'));var logger=require('../../config/logger')(_0x574a('0x7'));var config=require(_0x574a('0x8'));var jayson=require(_0x574a('0x9'));var client=jayson[_0x574a('0xa')][_0x574a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1dd50b,_0x2187a1,_0x8b8c72){return new BPromise(function(_0x5070ae,_0x5528d9){return client[_0x574a('0xc')](_0x1dd50b,_0x8b8c72)[_0x574a('0xd')](function(_0x164ead){logger['info'](_0x574a('0xe'),_0x2187a1,_0x574a('0xf'));logger['debug'](_0x574a('0x10'),_0x2187a1,_0x574a('0xf'),JSON[_0x574a('0x11')](_0x164ead));if(_0x164ead[_0x574a('0x12')]){if(_0x164ead[_0x574a('0x12')][_0x574a('0x13')]===0x1f4){logger[_0x574a('0x12')](_0x574a('0xe'),_0x2187a1,_0x164ead[_0x574a('0x12')][_0x574a('0x14')]);return _0x5528d9(_0x164ead[_0x574a('0x12')][_0x574a('0x14')]);}logger[_0x574a('0x12')](_0x574a('0xe'),_0x2187a1,_0x164ead[_0x574a('0x12')][_0x574a('0x14')]);return _0x5070ae(_0x164ead['error']['message']);}else{logger['info'](_0x574a('0xe'),_0x2187a1,'request\x20sent');_0x5070ae(_0x164ead[_0x574a('0x15')][_0x574a('0x14')]);}})[_0x574a('0x16')](function(_0xb281b9){logger[_0x574a('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x2187a1,_0xb281b9);_0x5528d9(_0xb281b9);});});}
\ No newline at end of file
index 9c32753..2fc1308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bad=['index','/:id','show','isAuthenticated','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get'];(function(_0xf95bde,_0xc64908){var _0x2f29f5=function(_0x47a25c){while(--_0x47a25c){_0xf95bde['push'](_0xf95bde['shift']());}};_0x2f29f5(++_0xc64908);}(_0x3bad,0x186));var _0xd3ba=function(_0x3c3732,_0x4e2d24){_0x3c3732=_0x3c3732-0x0;var _0x15fa2d=_0x3bad[_0x3c3732];return _0x15fa2d;};'use strict';var multer=require(_0xd3ba('0x0'));var util=require(_0xd3ba('0x1'));var path=require(_0xd3ba('0x2'));var timeout=require(_0xd3ba('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd3ba('0x4'));var auth=require(_0xd3ba('0x5'));var interaction=require(_0xd3ba('0x6'));var config=require(_0xd3ba('0x7'));var controller=require(_0xd3ba('0x8'));router[_0xd3ba('0x9')]('/',auth['isAuthenticated'](),controller[_0xd3ba('0xa')]);router['get'](_0xd3ba('0xb'),auth['isAuthenticated'](),controller[_0xd3ba('0xc')]);router['post']('/',auth[_0xd3ba('0xd')](),controller[_0xd3ba('0xe')]);router[_0xd3ba('0xf')]('/:id',auth[_0xd3ba('0xd')](),controller[_0xd3ba('0x10')]);router[_0xd3ba('0x11')](_0xd3ba('0xb'),auth[_0xd3ba('0xd')](),controller[_0xd3ba('0x12')]);module[_0xd3ba('0x13')]=router;
\ No newline at end of file
+var _0x4de7=['./intZendeskField.controller','get','isAuthenticated','index','show','post','create','put','/:id','delete','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x49856d,_0x3f9353){var _0x9b4f5e=function(_0x34c891){while(--_0x34c891){_0x49856d['push'](_0x49856d['shift']());}};_0x9b4f5e(++_0x3f9353);}(_0x4de7,0x1e5));var _0x74de=function(_0xf05757,_0x34a0bf){_0xf05757=_0xf05757-0x0;var _0x31ec32=_0x4de7[_0xf05757];return _0x31ec32;};'use strict';var multer=require(_0x74de('0x0'));var util=require(_0x74de('0x1'));var path=require(_0x74de('0x2'));var timeout=require(_0x74de('0x3'));var express=require('express');var router=express[_0x74de('0x4')]();var fs_extra=require(_0x74de('0x5'));var auth=require(_0x74de('0x6'));var interaction=require(_0x74de('0x7'));var config=require(_0x74de('0x8'));var controller=require(_0x74de('0x9'));router[_0x74de('0xa')]('/',auth[_0x74de('0xb')](),controller[_0x74de('0xc')]);router['get']('/:id',auth[_0x74de('0xb')](),controller[_0x74de('0xd')]);router[_0x74de('0xe')]('/',auth[_0x74de('0xb')](),controller[_0x74de('0xf')]);router[_0x74de('0x10')](_0x74de('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x74de('0x12')](_0x74de('0x11'),auth[_0x74de('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 27cb689..d76e581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7303=['BOOLEAN','sequelize','exports','ENUM','string','keyValue','picklist','STRING','variable','customVariable'];(function(_0x416f87,_0x42b830){var _0x2bb8d7=function(_0x1aa5a8){while(--_0x1aa5a8){_0x416f87['push'](_0x416f87['shift']());}};_0x2bb8d7(++_0x42b830);}(_0x7303,0xbf));var _0x3730=function(_0x5928ed,_0x2e8c47){_0x5928ed=_0x5928ed-0x0;var _0x1f34e3=_0x7303[_0x5928ed];return _0x1f34e3;};'use strict';var Sequelize=require(_0x3730('0x0'));module[_0x3730('0x1')]={'type':{'type':Sequelize[_0x3730('0x2')](_0x3730('0x3'),'variable','customVariable',_0x3730('0x4'),_0x3730('0x5')),'defaultValue':_0x3730('0x3')},'content':{'type':Sequelize[_0x3730('0x6')]},'key':{'type':Sequelize[_0x3730('0x6')]},'keyType':{'type':Sequelize[_0x3730('0x2')](_0x3730('0x3'),_0x3730('0x7'),_0x3730('0x8'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x3730('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x3730('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3730('0x6')]}};
\ No newline at end of file
+var _0x3442=['sequelize','string','variable','customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN'];(function(_0x34deae,_0x451c98){var _0x4a3b76=function(_0x300dc6){while(--_0x300dc6){_0x34deae['push'](_0x34deae['shift']());}};_0x4a3b76(++_0x451c98);}(_0x3442,0xfc));var _0x2344=function(_0x41429a,_0x1a9849){_0x41429a=_0x41429a-0x0;var _0x4c20de=_0x3442[_0x41429a];return _0x4c20de;};'use strict';var Sequelize=require(_0x2344('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x2344('0x1'),_0x2344('0x2'),_0x2344('0x3'),_0x2344('0x4'),_0x2344('0x5')),'defaultValue':_0x2344('0x1')},'content':{'type':Sequelize[_0x2344('0x6')]},'key':{'type':Sequelize[_0x2344('0x6')]},'keyType':{'type':Sequelize[_0x2344('0x7')]('string',_0x2344('0x2'),_0x2344('0x3'))},'keyContent':{'type':Sequelize[_0x2344('0x6')]},'idField':{'type':Sequelize[_0x2344('0x6')]},'nameField':{'type':Sequelize[_0x2344('0x6')]},'customField':{'type':Sequelize[_0x2344('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2344('0x6')]}};
\ No newline at end of file
index d65a6aa..f6069e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc799=['sort','where','filters','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','stack','name','send','index','ZendeskField','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order'];(function(_0x35ae04,_0x136ba2){var _0x4309b5=function(_0x65a3d4){while(--_0x65a3d4){_0x35ae04['push'](_0x35ae04['shift']());}};_0x4309b5(++_0x136ba2);}(_0xc799,0x1a6));var _0x9c79=function(_0x128fc4,_0x3e4bbd){_0x128fc4=_0x128fc4-0x0;var _0x3a7e51=_0xc799[_0x128fc4];return _0x3a7e51;};'use strict';var emlformat=require(_0x9c79('0x0'));var rimraf=require(_0x9c79('0x1'));var zipdir=require(_0x9c79('0x2'));var jsonpatch=require(_0x9c79('0x3'));var rp=require(_0x9c79('0x4'));var moment=require(_0x9c79('0x5'));var BPromise=require(_0x9c79('0x6'));var Mustache=require(_0x9c79('0x7'));var util=require(_0x9c79('0x8'));var path=require('path');var sox=require(_0x9c79('0x9'));var csv=require(_0x9c79('0xa'));var ejs=require(_0x9c79('0xb'));var fs=require('fs');var fs_extra=require(_0x9c79('0xc'));var _=require(_0x9c79('0xd'));var squel=require(_0x9c79('0xe'));var crypto=require(_0x9c79('0xf'));var jsforce=require(_0x9c79('0x10'));var deskjs=require(_0x9c79('0x11'));var toCsv=require(_0x9c79('0xa'));var querystring=require(_0x9c79('0x12'));var Papa=require(_0x9c79('0x13'));var Redis=require(_0x9c79('0x14'));var authService=require(_0x9c79('0x15'));var qs=require(_0x9c79('0x16'));var as=require(_0x9c79('0x17'));var hardwareService=require(_0x9c79('0x18'));var logger=require(_0x9c79('0x19'))(_0x9c79('0x1a'));var utils=require(_0x9c79('0x1b'));var config=require(_0x9c79('0x1c'));var licenseUtil=require(_0x9c79('0x1d'));var db=require(_0x9c79('0x1e'))['db'];function respondWithStatusCode(_0x4f383c,_0x346f4d){_0x346f4d=_0x346f4d||0xcc;return function(_0x22802d){if(_0x22802d){return _0x4f383c[_0x9c79('0x1f')](_0x346f4d);}return _0x4f383c[_0x9c79('0x20')](_0x346f4d)[_0x9c79('0x21')]();};}function respondWithResult(_0x2891cf,_0x3fb1a3){_0x3fb1a3=_0x3fb1a3||0xc8;return function(_0x204c5d){if(_0x204c5d){return _0x2891cf[_0x9c79('0x20')](_0x3fb1a3)[_0x9c79('0x22')](_0x204c5d);}};}function respondWithFilteredResult(_0x437b10,_0x3edbfc){return function(_0x3fe296){if(_0x3fe296){var _0x4e7323=typeof _0x3edbfc[_0x9c79('0x23')]===_0x9c79('0x24')&&typeof _0x3edbfc[_0x9c79('0x25')]===_0x9c79('0x24');var _0x340933=_0x3fe296['count'];var _0x409183=_0x4e7323?0x0:_0x3edbfc[_0x9c79('0x23')];var _0x329582=_0x4e7323?_0x3fe296[_0x9c79('0x26')]:_0x3edbfc[_0x9c79('0x23')]+_0x3edbfc['limit'];var _0x2684d1;if(_0x329582>=_0x340933){_0x329582=_0x340933;_0x2684d1=0xc8;}else{_0x2684d1=0xce;}_0x437b10[_0x9c79('0x20')](_0x2684d1);return _0x437b10[_0x9c79('0x27')](_0x9c79('0x28'),_0x409183+'-'+_0x329582+'/'+_0x340933)['json'](_0x3fe296);}return null;};}function patchUpdates(_0x3ccdd2){return function(_0xf2fa08){try{jsonpatch['apply'](_0xf2fa08,_0x3ccdd2,!![]);}catch(_0x511e54){return BPromise[_0x9c79('0x29')](_0x511e54);}return _0xf2fa08['save']();};}function saveUpdates(_0x4c4f81,_0x5f31ba){return function(_0x223117){if(_0x223117){return _0x223117[_0x9c79('0x2a')](_0x4c4f81)[_0x9c79('0x2b')](function(_0x5ecb5c){return _0x5ecb5c;});}return null;};}function removeEntity(_0x1983f9,_0x3db0b2){return function(_0x3c6563){if(_0x3c6563){return _0x3c6563[_0x9c79('0x2c')]()[_0x9c79('0x2b')](function(){_0x1983f9['status'](0xcc)[_0x9c79('0x21')]();});}};}function handleEntityNotFound(_0x427a29,_0x50e1c8){return function(_0x4c1e2a){if(!_0x4c1e2a){_0x427a29['sendStatus'](0x194);}return _0x4c1e2a;};}function handleError(_0x1f06e4,_0x3a5cca){_0x3a5cca=_0x3a5cca||0x1f4;return function(_0x205892){logger['error'](_0x205892[_0x9c79('0x2d')]);if(_0x205892[_0x9c79('0x2e')]){delete _0x205892[_0x9c79('0x2e')];}_0x1f06e4['status'](_0x3a5cca)[_0x9c79('0x2f')](_0x205892);};}exports[_0x9c79('0x30')]=function(_0x40b0ef,_0x5223d0){var _0x5343f0={},_0x3db576={},_0x216075={'count':0x0,'rows':[]};var _0x4fad9c=_['map'](db[_0x9c79('0x31')][_0x9c79('0x32')],function(_0x423745){return{'name':_0x423745[_0x9c79('0x33')],'type':_0x423745['type'][_0x9c79('0x34')]};});_0x3db576[_0x9c79('0x35')]=_[_0x9c79('0x36')](_0x4fad9c,_0x9c79('0x2e'));_0x3db576[_0x9c79('0x37')]=_[_0x9c79('0x38')](_0x40b0ef[_0x9c79('0x37')]);_0x3db576['filters']=_[_0x9c79('0x39')](_0x3db576[_0x9c79('0x35')],_0x3db576['query']);_0x5343f0[_0x9c79('0x3a')]=_[_0x9c79('0x39')](_0x3db576[_0x9c79('0x35')],qs['fields'](_0x40b0ef['query'][_0x9c79('0x3b')]));_0x5343f0['attributes']=_0x5343f0[_0x9c79('0x3a')][_0x9c79('0x3c')]?_0x5343f0['attributes']:_0x3db576[_0x9c79('0x35')];if(!_0x40b0ef[_0x9c79('0x37')][_0x9c79('0x3d')](_0x9c79('0x3e'))){_0x5343f0[_0x9c79('0x25')]=qs[_0x9c79('0x25')](_0x40b0ef[_0x9c79('0x37')][_0x9c79('0x25')]);_0x5343f0[_0x9c79('0x23')]=qs[_0x9c79('0x23')](_0x40b0ef['query'][_0x9c79('0x23')]);}_0x5343f0[_0x9c79('0x3f')]=qs[_0x9c79('0x40')](_0x40b0ef['query']['sort']);_0x5343f0[_0x9c79('0x41')]=qs[_0x9c79('0x42')](_['pick'](_0x40b0ef[_0x9c79('0x37')],_0x3db576[_0x9c79('0x42')]),_0x4fad9c);if(_0x40b0ef[_0x9c79('0x37')][_0x9c79('0x43')]){_0x5343f0[_0x9c79('0x41')]=_[_0x9c79('0x44')](_0x5343f0[_0x9c79('0x41')],{'$or':_[_0x9c79('0x36')](_0x4fad9c,function(_0x5f2ffe){if(_0x5f2ffe[_0x9c79('0x45')]!==_0x9c79('0x46')){var _0x2cb83d={};_0x2cb83d[_0x5f2ffe[_0x9c79('0x2e')]]={'$like':'%'+_0x40b0ef[_0x9c79('0x37')]['filter']+'%'};return _0x2cb83d;}})});}_0x5343f0=_[_0x9c79('0x44')]({},_0x5343f0,_0x40b0ef['options']);var _0x1281ea={'where':_0x5343f0[_0x9c79('0x41')]};return db[_0x9c79('0x31')]['count'](_0x1281ea)[_0x9c79('0x2b')](function(_0x2e4857){_0x216075[_0x9c79('0x26')]=_0x2e4857;if(_0x40b0ef[_0x9c79('0x37')][_0x9c79('0x47')]){_0x5343f0[_0x9c79('0x48')]=[{'all':!![]}];}return db[_0x9c79('0x31')][_0x9c79('0x49')](_0x5343f0);})[_0x9c79('0x2b')](function(_0x48d630){_0x216075[_0x9c79('0x4a')]=_0x48d630;return _0x216075;})[_0x9c79('0x2b')](respondWithFilteredResult(_0x5223d0,_0x5343f0))['catch'](handleError(_0x5223d0,null));};exports[_0x9c79('0x4b')]=function(_0xa454ab,_0x5909df){var _0x193888={'raw':!![],'where':{'id':_0xa454ab[_0x9c79('0x4c')]['id']}},_0x352391={};_0x352391[_0x9c79('0x35')]=_['keys'](db[_0x9c79('0x31')]['rawAttributes']);_0x352391[_0x9c79('0x37')]=_[_0x9c79('0x38')](_0xa454ab['query']);_0x352391[_0x9c79('0x42')]=_['intersection'](_0x352391[_0x9c79('0x35')],_0x352391[_0x9c79('0x37')]);_0x193888[_0x9c79('0x3a')]=_[_0x9c79('0x39')](_0x352391[_0x9c79('0x35')],qs['fields'](_0xa454ab[_0x9c79('0x37')][_0x9c79('0x3b')]));_0x193888['attributes']=_0x193888[_0x9c79('0x3a')][_0x9c79('0x3c')]?_0x193888['attributes']:_0x352391[_0x9c79('0x35')];if(_0xa454ab[_0x9c79('0x37')]['includeAll']){_0x193888[_0x9c79('0x48')]=[{'all':!![]}];}_0x193888=_[_0x9c79('0x44')]({},_0x193888,_0xa454ab['options']);return db[_0x9c79('0x31')][_0x9c79('0x4d')](_0x193888)[_0x9c79('0x2b')](handleEntityNotFound(_0x5909df,null))[_0x9c79('0x2b')](respondWithResult(_0x5909df,null))[_0x9c79('0x4e')](handleError(_0x5909df,null));};exports[_0x9c79('0x4f')]=function(_0x278b19,_0x346420){return db[_0x9c79('0x31')][_0x9c79('0x4f')](_0x278b19[_0x9c79('0x50')],{})[_0x9c79('0x2b')](respondWithResult(_0x346420,0xc9))[_0x9c79('0x4e')](handleError(_0x346420,null));};exports[_0x9c79('0x2a')]=function(_0x5138a4,_0x559a5f){if(_0x5138a4['body']['id']){delete _0x5138a4['body']['id'];}return db[_0x9c79('0x31')]['find']({'where':{'id':_0x5138a4[_0x9c79('0x4c')]['id']}})['then'](handleEntityNotFound(_0x559a5f,null))[_0x9c79('0x2b')](saveUpdates(_0x5138a4['body'],null))[_0x9c79('0x2b')](respondWithResult(_0x559a5f,null))[_0x9c79('0x4e')](handleError(_0x559a5f,null));};exports[_0x9c79('0x2c')]=function(_0x61b94e,_0x219509){return db['ZendeskField'][_0x9c79('0x4d')]({'where':{'id':_0x61b94e['params']['id']}})[_0x9c79('0x2b')](handleEntityNotFound(_0x219509,null))[_0x9c79('0x2b')](removeEntity(_0x219509,null))[_0x9c79('0x4e')](handleError(_0x219509,null));};
\ No newline at end of file
+var _0xdafa=['where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','intersection','find','create','body','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0xdafa,0x1c5));var _0xadaf=function(_0xd69c1b,_0x47af31){_0xd69c1b=_0xd69c1b-0x0;var _0x56762c=_0xdafa[_0xd69c1b];return _0x56762c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xadaf('0x0'));var rp=require(_0xadaf('0x1'));var moment=require(_0xadaf('0x2'));var BPromise=require(_0xadaf('0x3'));var Mustache=require(_0xadaf('0x4'));var util=require(_0xadaf('0x5'));var path=require(_0xadaf('0x6'));var sox=require('sox');var csv=require(_0xadaf('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xadaf('0x8'));var squel=require('squel');var crypto=require(_0xadaf('0x9'));var jsforce=require(_0xadaf('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xadaf('0x7'));var querystring=require(_0xadaf('0xb'));var Papa=require(_0xadaf('0xc'));var Redis=require('ioredis');var authService=require(_0xadaf('0xd'));var qs=require(_0xadaf('0xe'));var as=require(_0xadaf('0xf'));var hardwareService=require(_0xadaf('0x10'));var logger=require(_0xadaf('0x11'))('api');var utils=require(_0xadaf('0x12'));var config=require(_0xadaf('0x13'));var licenseUtil=require(_0xadaf('0x14'));var db=require(_0xadaf('0x15'))['db'];function respondWithStatusCode(_0x5c9879,_0x5664e0){_0x5664e0=_0x5664e0||0xcc;return function(_0x340cf1){if(_0x340cf1){return _0x5c9879[_0xadaf('0x16')](_0x5664e0);}return _0x5c9879['status'](_0x5664e0)[_0xadaf('0x17')]();};}function respondWithResult(_0x26fbec,_0x3557be){_0x3557be=_0x3557be||0xc8;return function(_0x23f6d4){if(_0x23f6d4){return _0x26fbec[_0xadaf('0x18')](_0x3557be)[_0xadaf('0x19')](_0x23f6d4);}};}function respondWithFilteredResult(_0x3b1ca5,_0x5e54f3){return function(_0x8f3be2){if(_0x8f3be2){var _0xf65a31=typeof _0x5e54f3['offset']===_0xadaf('0x1a')&&typeof _0x5e54f3['limit']===_0xadaf('0x1a');var _0x4d2882=_0x8f3be2[_0xadaf('0x1b')];var _0x107120=_0xf65a31?0x0:_0x5e54f3[_0xadaf('0x1c')];var _0x1523fb=_0xf65a31?_0x8f3be2[_0xadaf('0x1b')]:_0x5e54f3[_0xadaf('0x1c')]+_0x5e54f3[_0xadaf('0x1d')];var _0x184fe9;if(_0x1523fb>=_0x4d2882){_0x1523fb=_0x4d2882;_0x184fe9=0xc8;}else{_0x184fe9=0xce;}_0x3b1ca5['status'](_0x184fe9);return _0x3b1ca5[_0xadaf('0x1e')](_0xadaf('0x1f'),_0x107120+'-'+_0x1523fb+'/'+_0x4d2882)[_0xadaf('0x19')](_0x8f3be2);}return null;};}function patchUpdates(_0x15013e){return function(_0x3dc5b5){try{jsonpatch[_0xadaf('0x20')](_0x3dc5b5,_0x15013e,!![]);}catch(_0x363a6c){return BPromise['reject'](_0x363a6c);}return _0x3dc5b5[_0xadaf('0x21')]();};}function saveUpdates(_0x521264,_0x34f616){return function(_0x2a75e1){if(_0x2a75e1){return _0x2a75e1[_0xadaf('0x22')](_0x521264)[_0xadaf('0x23')](function(_0x4aea06){return _0x4aea06;});}return null;};}function removeEntity(_0x30abf8,_0x3264f7){return function(_0x26f03a){if(_0x26f03a){return _0x26f03a[_0xadaf('0x24')]()[_0xadaf('0x23')](function(){_0x30abf8[_0xadaf('0x18')](0xcc)[_0xadaf('0x17')]();});}};}function handleEntityNotFound(_0x31d183,_0xfcf83a){return function(_0x587593){if(!_0x587593){_0x31d183['sendStatus'](0x194);}return _0x587593;};}function handleError(_0x43848b,_0xff8ee9){_0xff8ee9=_0xff8ee9||0x1f4;return function(_0x372e19){logger[_0xadaf('0x25')](_0x372e19[_0xadaf('0x26')]);if(_0x372e19[_0xadaf('0x27')]){delete _0x372e19[_0xadaf('0x27')];}_0x43848b[_0xadaf('0x18')](_0xff8ee9)[_0xadaf('0x28')](_0x372e19);};}exports[_0xadaf('0x29')]=function(_0x38b928,_0x29ad8c){var _0x47615b={},_0x871d64={},_0x422413={'count':0x0,'rows':[]};var _0x1c7373=_[_0xadaf('0x2a')](db[_0xadaf('0x2b')][_0xadaf('0x2c')],function(_0x59c64a){return{'name':_0x59c64a[_0xadaf('0x2d')],'type':_0x59c64a[_0xadaf('0x2e')][_0xadaf('0x2f')]};});_0x871d64[_0xadaf('0x30')]=_['map'](_0x1c7373,_0xadaf('0x27'));_0x871d64['query']=_[_0xadaf('0x31')](_0x38b928[_0xadaf('0x32')]);_0x871d64[_0xadaf('0x33')]=_['intersection'](_0x871d64[_0xadaf('0x30')],_0x871d64[_0xadaf('0x32')]);_0x47615b[_0xadaf('0x34')]=_['intersection'](_0x871d64[_0xadaf('0x30')],qs[_0xadaf('0x35')](_0x38b928[_0xadaf('0x32')][_0xadaf('0x35')]));_0x47615b[_0xadaf('0x34')]=_0x47615b[_0xadaf('0x34')][_0xadaf('0x36')]?_0x47615b['attributes']:_0x871d64[_0xadaf('0x30')];if(!_0x38b928['query'][_0xadaf('0x37')]('nolimit')){_0x47615b[_0xadaf('0x1d')]=qs['limit'](_0x38b928[_0xadaf('0x32')][_0xadaf('0x1d')]);_0x47615b[_0xadaf('0x1c')]=qs['offset'](_0x38b928[_0xadaf('0x32')][_0xadaf('0x1c')]);}_0x47615b[_0xadaf('0x38')]=qs[_0xadaf('0x39')](_0x38b928[_0xadaf('0x32')][_0xadaf('0x39')]);_0x47615b[_0xadaf('0x3a')]=qs[_0xadaf('0x33')](_[_0xadaf('0x3b')](_0x38b928['query'],_0x871d64['filters']),_0x1c7373);if(_0x38b928[_0xadaf('0x32')]['filter']){_0x47615b[_0xadaf('0x3a')]=_[_0xadaf('0x3c')](_0x47615b[_0xadaf('0x3a')],{'$or':_[_0xadaf('0x2a')](_0x1c7373,function(_0x4187cd){if(_0x4187cd['type']!==_0xadaf('0x3d')){var _0x1f0eb2={};_0x1f0eb2[_0x4187cd[_0xadaf('0x27')]]={'$like':'%'+_0x38b928[_0xadaf('0x32')]['filter']+'%'};return _0x1f0eb2;}})});}_0x47615b=_[_0xadaf('0x3c')]({},_0x47615b,_0x38b928[_0xadaf('0x3e')]);var _0x4a048c={'where':_0x47615b['where']};return db[_0xadaf('0x2b')]['count'](_0x4a048c)[_0xadaf('0x23')](function(_0x548889){_0x422413[_0xadaf('0x1b')]=_0x548889;if(_0x38b928[_0xadaf('0x32')][_0xadaf('0x3f')]){_0x47615b[_0xadaf('0x40')]=[{'all':!![]}];}return db['ZendeskField'][_0xadaf('0x41')](_0x47615b);})[_0xadaf('0x23')](function(_0x1690a7){_0x422413[_0xadaf('0x42')]=_0x1690a7;return _0x422413;})['then'](respondWithFilteredResult(_0x29ad8c,_0x47615b))[_0xadaf('0x43')](handleError(_0x29ad8c,null));};exports['show']=function(_0xe0e94a,_0x35c334){var _0x3fee95={'raw':!![],'where':{'id':_0xe0e94a[_0xadaf('0x44')]['id']}},_0x57fe85={};_0x57fe85[_0xadaf('0x30')]=_[_0xadaf('0x31')](db[_0xadaf('0x2b')][_0xadaf('0x2c')]);_0x57fe85[_0xadaf('0x32')]=_[_0xadaf('0x31')](_0xe0e94a[_0xadaf('0x32')]);_0x57fe85[_0xadaf('0x33')]=_[_0xadaf('0x45')](_0x57fe85[_0xadaf('0x30')],_0x57fe85['query']);_0x3fee95['attributes']=_['intersection'](_0x57fe85[_0xadaf('0x30')],qs['fields'](_0xe0e94a[_0xadaf('0x32')]['fields']));_0x3fee95['attributes']=_0x3fee95[_0xadaf('0x34')][_0xadaf('0x36')]?_0x3fee95['attributes']:_0x57fe85['model'];if(_0xe0e94a[_0xadaf('0x32')][_0xadaf('0x3f')]){_0x3fee95['include']=[{'all':!![]}];}_0x3fee95=_['merge']({},_0x3fee95,_0xe0e94a[_0xadaf('0x3e')]);return db[_0xadaf('0x2b')][_0xadaf('0x46')](_0x3fee95)[_0xadaf('0x23')](handleEntityNotFound(_0x35c334,null))[_0xadaf('0x23')](respondWithResult(_0x35c334,null))[_0xadaf('0x43')](handleError(_0x35c334,null));};exports[_0xadaf('0x47')]=function(_0x1806d5,_0x195d2a){return db[_0xadaf('0x2b')][_0xadaf('0x47')](_0x1806d5['body'],{})[_0xadaf('0x23')](respondWithResult(_0x195d2a,0xc9))[_0xadaf('0x43')](handleError(_0x195d2a,null));};exports['update']=function(_0x1ca8d6,_0xcab6d0){if(_0x1ca8d6['body']['id']){delete _0x1ca8d6[_0xadaf('0x48')]['id'];}return db[_0xadaf('0x2b')]['find']({'where':{'id':_0x1ca8d6[_0xadaf('0x44')]['id']}})[_0xadaf('0x23')](handleEntityNotFound(_0xcab6d0,null))[_0xadaf('0x23')](saveUpdates(_0x1ca8d6[_0xadaf('0x48')],null))[_0xadaf('0x23')](respondWithResult(_0xcab6d0,null))[_0xadaf('0x43')](handleError(_0xcab6d0,null));};exports[_0xadaf('0x24')]=function(_0x5b8c32,_0x423bc6){return db[_0xadaf('0x2b')][_0xadaf('0x46')]({'where':{'id':_0x5b8c32[_0xadaf('0x44')]['id']}})[_0xadaf('0x23')](handleEntityNotFound(_0x423bc6,null))[_0xadaf('0x23')](removeEntity(_0x423bc6,null))['catch'](handleError(_0x423bc6,null));};
\ No newline at end of file
index a688f05..a169081 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0539=['idField','FieldId','util','bluebird','request-promise','path','rimraf','./intZendeskField.attributes','exports','int_zendesk_fields','zendesk_unique_index'];(function(_0x51f40e,_0x14e8ea){var _0xb37761=function(_0x10bce3){while(--_0x10bce3){_0x51f40e['push'](_0x51f40e['shift']());}};_0xb37761(++_0x14e8ea);}(_0x0539,0x1d0));var _0x9053=function(_0x4fdd06,_0x10bd5b){_0x4fdd06=_0x4fdd06-0x0;var _0x123bde=_0x0539[_0x4fdd06];return _0x123bde;};'use strict';var _=require('lodash');var util=require(_0x9053('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x9053('0x1'));var rp=require(_0x9053('0x2'));var fs=require('fs');var path=require(_0x9053('0x3'));var rimraf=require(_0x9053('0x4'));var config=require('../../config/environment');var attributes=require(_0x9053('0x5'));module[_0x9053('0x6')]=function(_0x40c06e,_0x58a063){return _0x40c06e['define']('ZendeskField',attributes,{'tableName':_0x9053('0x7'),'paranoid':![],'indexes':[{'name':_0x9053('0x8'),'fields':[_0x9053('0x9'),_0x9053('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3644=['../../config/logger','bluebird','path','rimraf','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','util'];(function(_0x2ade64,_0x2783da){var _0x3e1da4=function(_0x2bb957){while(--_0x2bb957){_0x2ade64['push'](_0x2ade64['shift']());}};_0x3e1da4(++_0x2783da);}(_0x3644,0x113));var _0x4364=function(_0x1a1941,_0x5f5d9f){_0x1a1941=_0x1a1941-0x0;var _0x5ceab3=_0x3644[_0x1a1941];return _0x5ceab3;};'use strict';var _=require('lodash');var util=require(_0x4364('0x0'));var logger=require(_0x4364('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4364('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4364('0x3'));var rimraf=require(_0x4364('0x4'));var config=require('../../config/environment');var attributes=require(_0x4364('0x5'));module[_0x4364('0x6')]=function(_0x1a2c08,_0x3d8bda){return _0x1a2c08[_0x4364('0x7')](_0x4364('0x8'),attributes,{'tableName':_0x4364('0x9'),'paranoid':![],'indexes':[{'name':_0x4364('0xa'),'fields':[_0x4364('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index eeb2bf6..3fcb086 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62a4=['ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','ZendeskField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1030ce,_0xbe3f74){var _0x3367fd=function(_0x387153){while(--_0x387153){_0x1030ce['push'](_0x1030ce['shift']());}};_0x3367fd(++_0xbe3f74);}(_0x62a4,0x1c0));var _0x462a=function(_0x7f4dbc,_0x344984){_0x7f4dbc=_0x7f4dbc-0x0;var _0x3229c9=_0x62a4[_0x7f4dbc];return _0x3229c9;};'use strict';var _=require('lodash');var util=require(_0x462a('0x0'));var moment=require(_0x462a('0x1'));var BPromise=require('bluebird');var rs=require(_0x462a('0x2'));var fs=require('fs');var Redis=require(_0x462a('0x3'));var db=require(_0x462a('0x4'))['db'];var utils=require(_0x462a('0x5'));var logger=require('../../config/logger')(_0x462a('0x6'));var config=require(_0x462a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x462a('0x8')][_0x462a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x254031,_0x247dec,_0x2dbbe4){return new BPromise(function(_0x5a60a6,_0x54dbb2){return client['request'](_0x254031,_0x2dbbe4)[_0x462a('0xa')](function(_0x5195be){logger['info'](_0x462a('0xb'),_0x247dec,_0x462a('0xc'));logger[_0x462a('0xd')](_0x462a('0xe'),_0x247dec,_0x462a('0xc'),JSON[_0x462a('0xf')](_0x5195be));if(_0x5195be[_0x462a('0x10')]){if(_0x5195be[_0x462a('0x10')][_0x462a('0x11')]===0x1f4){logger[_0x462a('0x10')](_0x462a('0xb'),_0x247dec,_0x5195be[_0x462a('0x10')][_0x462a('0x12')]);return _0x54dbb2(_0x5195be['error']['message']);}logger['error'](_0x462a('0xb'),_0x247dec,_0x5195be[_0x462a('0x10')][_0x462a('0x12')]);return _0x5a60a6(_0x5195be[_0x462a('0x10')][_0x462a('0x12')]);}else{logger[_0x462a('0x13')](_0x462a('0xb'),_0x247dec,_0x462a('0xc'));_0x5a60a6(_0x5195be[_0x462a('0x14')]['message']);}})[_0x462a('0x15')](function(_0x49ce50){logger[_0x462a('0x10')]('ZendeskField,\x20%s,\x20%s',_0x247dec,_0x49ce50);_0x54dbb2(_0x49ce50);});});}
\ No newline at end of file
+var _0x6b87=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskField,\x20%s,\x20%s','message','result','catch','lodash','util','moment'];(function(_0x37512d,_0x44495e){var _0x133f49=function(_0x10b685){while(--_0x10b685){_0x37512d['push'](_0x37512d['shift']());}};_0x133f49(++_0x44495e);}(_0x6b87,0x75));var _0x76b8=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6b87[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x76b8('0x0'));var util=require(_0x76b8('0x1'));var moment=require(_0x76b8('0x2'));var BPromise=require(_0x76b8('0x3'));var rs=require(_0x76b8('0x4'));var fs=require('fs');var Redis=require(_0x76b8('0x5'));var db=require(_0x76b8('0x6'))['db'];var utils=require(_0x76b8('0x7'));var logger=require(_0x76b8('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x76b8('0x9'));var client=jayson['client'][_0x76b8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc1c991,_0x85667e,_0x3637c4){return new BPromise(function(_0x36c639,_0x3147d9){return client[_0x76b8('0xb')](_0xc1c991,_0x3637c4)[_0x76b8('0xc')](function(_0x57c33a){logger[_0x76b8('0xd')]('ZendeskField,\x20%s,\x20%s',_0x85667e,_0x76b8('0xe'));logger[_0x76b8('0xf')](_0x76b8('0x10'),_0x85667e,'request\x20sent',JSON[_0x76b8('0x11')](_0x57c33a));if(_0x57c33a[_0x76b8('0x12')]){if(_0x57c33a[_0x76b8('0x12')][_0x76b8('0x13')]===0x1f4){logger['error'](_0x76b8('0x14'),_0x85667e,_0x57c33a['error'][_0x76b8('0x15')]);return _0x3147d9(_0x57c33a[_0x76b8('0x12')][_0x76b8('0x15')]);}logger[_0x76b8('0x12')]('ZendeskField,\x20%s,\x20%s',_0x85667e,_0x57c33a[_0x76b8('0x12')][_0x76b8('0x15')]);return _0x36c639(_0x57c33a['error']['message']);}else{logger[_0x76b8('0xd')](_0x76b8('0x14'),_0x85667e,'request\x20sent');_0x36c639(_0x57c33a[_0x76b8('0x16')]['message']);}})[_0x76b8('0x17')](function(_0xd6a869){logger[_0x76b8('0x12')](_0x76b8('0x14'),_0x85667e,_0xd6a869);_0x3147d9(_0xd6a869);});});}
\ No newline at end of file
index 81b6a42..3dd41aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd943=['../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','put','/:id','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xd943,0x162));var _0x3d94=function(_0x569dde,_0x25bee5){_0x569dde=_0x569dde-0x0;var _0x270121=_0xd943[_0x569dde];return _0x270121;};'use strict';var multer=require(_0x3d94('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3d94('0x1'));var express=require(_0x3d94('0x2'));var router=express[_0x3d94('0x3')]();var fs_extra=require(_0x3d94('0x4'));var auth=require(_0x3d94('0x5'));var interaction=require(_0x3d94('0x6'));var config=require(_0x3d94('0x7'));var controller=require(_0x3d94('0x8'));router[_0x3d94('0x9')]('/',auth[_0x3d94('0xa')](),controller[_0x3d94('0xb')]);router[_0x3d94('0x9')]('/:id',auth[_0x3d94('0xa')](),controller[_0x3d94('0xc')]);router[_0x3d94('0x9')](_0x3d94('0xd'),auth[_0x3d94('0xa')](),controller[_0x3d94('0xe')]);router[_0x3d94('0x9')](_0x3d94('0xf'),auth['isAuthenticated'](),controller[_0x3d94('0x10')]);router[_0x3d94('0x11')]('/',auth[_0x3d94('0xa')](),controller['create']);router[_0x3d94('0x11')]('/:id/configurations',auth[_0x3d94('0xa')](),controller['addConfiguration']);router[_0x3d94('0x12')](_0x3d94('0x13'),auth['isAuthenticated'](),controller[_0x3d94('0x14')]);router[_0x3d94('0x15')]('/:id',auth[_0x3d94('0xa')](),controller[_0x3d94('0x16')]);module[_0x3d94('0x17')]=router;
\ No newline at end of file
+var _0x5f26=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','/:id/fields','getFields','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4ebbec,_0x55b0aa){var _0x2feefe=function(_0x9ceef2){while(--_0x9ceef2){_0x4ebbec['push'](_0x4ebbec['shift']());}};_0x2feefe(++_0x55b0aa);}(_0x5f26,0xc3));var _0x65f2=function(_0x3fcf7a,_0x599ecc){_0x3fcf7a=_0x3fcf7a-0x0;var _0x34cc20=_0x5f26[_0x3fcf7a];return _0x34cc20;};'use strict';var multer=require(_0x65f2('0x0'));var util=require(_0x65f2('0x1'));var path=require(_0x65f2('0x2'));var timeout=require(_0x65f2('0x3'));var express=require(_0x65f2('0x4'));var router=express[_0x65f2('0x5')]();var fs_extra=require(_0x65f2('0x6'));var auth=require(_0x65f2('0x7'));var interaction=require(_0x65f2('0x8'));var config=require(_0x65f2('0x9'));var controller=require(_0x65f2('0xa'));router[_0x65f2('0xb')]('/',auth[_0x65f2('0xc')](),controller[_0x65f2('0xd')]);router[_0x65f2('0xb')](_0x65f2('0xe'),auth[_0x65f2('0xc')](),controller['show']);router[_0x65f2('0xb')](_0x65f2('0xf'),auth[_0x65f2('0xc')](),controller['getConfigurations']);router[_0x65f2('0xb')](_0x65f2('0x10'),auth[_0x65f2('0xc')](),controller[_0x65f2('0x11')]);router[_0x65f2('0x12')]('/',auth[_0x65f2('0xc')](),controller[_0x65f2('0x13')]);router[_0x65f2('0x12')](_0x65f2('0xf'),auth[_0x65f2('0xc')](),controller['addConfiguration']);router[_0x65f2('0x14')](_0x65f2('0xe'),auth[_0x65f2('0xc')](),controller[_0x65f2('0x15')]);router[_0x65f2('0x16')](_0x65f2('0xe'),auth[_0x65f2('0xc')](),controller[_0x65f2('0x17')]);module[_0x65f2('0x18')]=router;
\ No newline at end of file
index 0c1cc09..e10bc75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['STRING','sequelize','exports'];(function(_0x2c06b1,_0x1961df){var _0x266ea1=function(_0x35b2ac){while(--_0x35b2ac){_0x2c06b1['push'](_0x2c06b1['shift']());}};_0x266ea1(++_0x1961df);}(_0x70e0,0x17b));var _0x070e=function(_0x4ecab6,_0xdaa9ee){_0x4ecab6=_0x4ecab6-0x0;var _0x4f6e91=_0x70e0[_0x4ecab6];return _0x4f6e91;};'use strict';var Sequelize=require(_0x070e('0x0'));module[_0x070e('0x1')]={'name':{'type':Sequelize[_0x070e('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x070e('0x2')]},'clientId':{'type':Sequelize[_0x070e('0x2')]},'clientSecret':{'type':Sequelize[_0x070e('0x2')]},'serverUrl':{'type':Sequelize[_0x070e('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x070e('0x2')]}};
\ No newline at end of file
+var _0x54ef=['STRING','sequelize','exports'];(function(_0x5245bc,_0x55e740){var _0x2acb9a=function(_0x4fd1e6){while(--_0x4fd1e6){_0x5245bc['push'](_0x5245bc['shift']());}};_0x2acb9a(++_0x55e740);}(_0x54ef,0x112));var _0xf54e=function(_0x4f45aa,_0x2694a5){_0x4f45aa=_0x4f45aa-0x0;var _0x4586c2=_0x54ef[_0x4f45aa];return _0x4586c2;};'use strict';var Sequelize=require(_0xf54e('0x0'));module[_0xf54e('0x1')]={'name':{'type':Sequelize[_0xf54e('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xf54e('0x2')]},'zone':{'type':Sequelize[_0xf54e('0x2')]},'clientId':{'type':Sequelize[_0xf54e('0x2')]},'clientSecret':{'type':Sequelize[_0xf54e('0x2')]},'serverUrl':{'type':Sequelize[_0xf54e('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xf54e('0x2')]},'refreshToken':{'type':Sequelize[_0xf54e('0x2')]}};
\ No newline at end of file
index a20e80e..6aa4d73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fa6=['end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','error','stack','name','index','map','ZohoAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','length','find','create','body','params','getConfigurations','ZohoConfiguration','options','findOne','AccountId','Subjects','getSubjects','channel','type','Descriptions','getDescriptions','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','zone','clientId','serverUrl','code','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','Owner','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','includes','system_mandatory','push','display_label','custom_field','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','send','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status'];(function(_0xc45747,_0x46bbe9){var _0x51b27d=function(_0xee7d95){while(--_0xee7d95){_0xc45747['push'](_0xc45747['shift']());}};_0x51b27d(++_0x46bbe9);}(_0x7fa6,0xed));var _0x67fa=function(_0x25cf8c,_0x270994){_0x25cf8c=_0x25cf8c-0x0;var _0x54f971=_0x7fa6[_0x25cf8c];return _0x54f971;};'use strict';var emlformat=require(_0x67fa('0x0'));var rimraf=require(_0x67fa('0x1'));var zipdir=require(_0x67fa('0x2'));var jsonpatch=require(_0x67fa('0x3'));var rp=require(_0x67fa('0x4'));var moment=require(_0x67fa('0x5'));var BPromise=require(_0x67fa('0x6'));var Mustache=require(_0x67fa('0x7'));var util=require(_0x67fa('0x8'));var path=require('path');var sox=require(_0x67fa('0x9'));var csv=require('to-csv');var ejs=require(_0x67fa('0xa'));var fs=require('fs');var fs_extra=require(_0x67fa('0xb'));var _=require(_0x67fa('0xc'));var squel=require(_0x67fa('0xd'));var crypto=require('crypto');var jsforce=require(_0x67fa('0xe'));var deskjs=require(_0x67fa('0xf'));var toCsv=require('to-csv');var querystring=require(_0x67fa('0x10'));var Papa=require(_0x67fa('0x11'));var Redis=require(_0x67fa('0x12'));var authService=require(_0x67fa('0x13'));var qs=require(_0x67fa('0x14'));var as=require(_0x67fa('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x67fa('0x16'))(_0x67fa('0x17'));var utils=require(_0x67fa('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x67fa('0x19'))['db'];var integrations=require(_0x67fa('0x1a'));function respondWithStatusCode(_0xff8c01,_0x5a47ed){_0x5a47ed=_0x5a47ed||0xcc;return function(_0x4c0d61){if(_0x4c0d61){return _0xff8c01[_0x67fa('0x1b')](_0x5a47ed);}return _0xff8c01[_0x67fa('0x1c')](_0x5a47ed)[_0x67fa('0x1d')]();};}function respondWithResult(_0x30085b,_0x1858d2){_0x1858d2=_0x1858d2||0xc8;return function(_0x35429c){if(_0x35429c){return _0x30085b[_0x67fa('0x1c')](_0x1858d2)[_0x67fa('0x1e')](_0x35429c);}};}function respondWithFilteredResult(_0x26483d,_0x44118c){return function(_0x507ab5){if(_0x507ab5){var _0x12ef41=typeof _0x44118c['offset']===_0x67fa('0x1f')&&typeof _0x44118c[_0x67fa('0x20')]==='undefined';var _0x377d59=_0x507ab5[_0x67fa('0x21')];var _0xccb14c=_0x12ef41?0x0:_0x44118c[_0x67fa('0x22')];var _0x3788a2=_0x12ef41?_0x507ab5['count']:_0x44118c[_0x67fa('0x22')]+_0x44118c[_0x67fa('0x20')];var _0xfabc2a;if(_0x3788a2>=_0x377d59){_0x3788a2=_0x377d59;_0xfabc2a=0xc8;}else{_0xfabc2a=0xce;}_0x26483d[_0x67fa('0x1c')](_0xfabc2a);return _0x26483d[_0x67fa('0x23')]('Content-Range',_0xccb14c+'-'+_0x3788a2+'/'+_0x377d59)[_0x67fa('0x1e')](_0x507ab5);}return null;};}function patchUpdates(_0x20ebe0){return function(_0x4242b7){try{jsonpatch[_0x67fa('0x24')](_0x4242b7,_0x20ebe0,!![]);}catch(_0x13f810){return BPromise[_0x67fa('0x25')](_0x13f810);}return _0x4242b7[_0x67fa('0x26')]();};}function saveUpdates(_0x270b0e,_0x2982f1){return function(_0x3863a0){if(_0x3863a0){return _0x3863a0[_0x67fa('0x27')](_0x270b0e)[_0x67fa('0x28')](function(_0x1fae4d){return _0x1fae4d;});}return null;};}function removeEntity(_0xd8d1c5,_0x366bf7){return function(_0x4950e9){if(_0x4950e9){return _0x4950e9[_0x67fa('0x29')]()[_0x67fa('0x28')](function(){_0xd8d1c5['status'](0xcc)[_0x67fa('0x1d')]();});}};}function handleEntityNotFound(_0x5d844b,_0x4999b2){return function(_0x2a47a7){if(!_0x2a47a7){_0x5d844b[_0x67fa('0x1b')](0x194);}return _0x2a47a7;};}function handleError(_0x102661,_0x4c0c98){_0x4c0c98=_0x4c0c98||0x1f4;return function(_0x14a93b){logger[_0x67fa('0x2a')](_0x14a93b[_0x67fa('0x2b')]);if(_0x14a93b['name']){delete _0x14a93b[_0x67fa('0x2c')];}_0x102661[_0x67fa('0x1c')](_0x4c0c98)['send'](_0x14a93b);};}exports[_0x67fa('0x2d')]=function(_0x5f12c4,_0x41a45a){var _0x5afdae={},_0x3f5eb1={},_0xbd2336={'count':0x0,'rows':[]};var _0x3562bd=_[_0x67fa('0x2e')](db[_0x67fa('0x2f')][_0x67fa('0x30')],function(_0x5924e1){return{'name':_0x5924e1[_0x67fa('0x31')],'type':_0x5924e1['type'][_0x67fa('0x32')]};});_0x3f5eb1[_0x67fa('0x33')]=_['map'](_0x3562bd,'name');_0x3f5eb1[_0x67fa('0x34')]=_[_0x67fa('0x35')](_0x5f12c4[_0x67fa('0x34')]);_0x3f5eb1[_0x67fa('0x36')]=_[_0x67fa('0x37')](_0x3f5eb1[_0x67fa('0x33')],_0x3f5eb1[_0x67fa('0x34')]);_0x5afdae['attributes']=_[_0x67fa('0x37')](_0x3f5eb1[_0x67fa('0x33')],qs['fields'](_0x5f12c4[_0x67fa('0x34')][_0x67fa('0x38')]));_0x5afdae[_0x67fa('0x39')]=_0x5afdae['attributes']['length']?_0x5afdae[_0x67fa('0x39')]:_0x3f5eb1['model'];if(!_0x5f12c4[_0x67fa('0x34')][_0x67fa('0x3a')](_0x67fa('0x3b'))){_0x5afdae[_0x67fa('0x20')]=qs[_0x67fa('0x20')](_0x5f12c4[_0x67fa('0x34')]['limit']);_0x5afdae[_0x67fa('0x22')]=qs[_0x67fa('0x22')](_0x5f12c4[_0x67fa('0x34')][_0x67fa('0x22')]);}_0x5afdae[_0x67fa('0x3c')]=qs['sort'](_0x5f12c4[_0x67fa('0x34')][_0x67fa('0x3d')]);_0x5afdae[_0x67fa('0x3e')]=qs[_0x67fa('0x36')](_[_0x67fa('0x3f')](_0x5f12c4[_0x67fa('0x34')],_0x3f5eb1[_0x67fa('0x36')]),_0x3562bd);if(_0x5f12c4[_0x67fa('0x34')][_0x67fa('0x40')]){_0x5afdae[_0x67fa('0x3e')]=_['merge'](_0x5afdae[_0x67fa('0x3e')],{'$or':_['map'](_0x3562bd,function(_0x51d2a4){if(_0x51d2a4['type']!==_0x67fa('0x41')){var _0x34bbaf={};_0x34bbaf[_0x51d2a4[_0x67fa('0x2c')]]={'$like':'%'+_0x5f12c4[_0x67fa('0x34')]['filter']+'%'};return _0x34bbaf;}})});}_0x5afdae=_[_0x67fa('0x42')]({},_0x5afdae,_0x5f12c4['options']);var _0x233aeb={'where':_0x5afdae[_0x67fa('0x3e')]};return db[_0x67fa('0x2f')]['count'](_0x233aeb)['then'](function(_0x4be632){_0xbd2336[_0x67fa('0x21')]=_0x4be632;if(_0x5f12c4[_0x67fa('0x34')][_0x67fa('0x43')]){_0x5afdae[_0x67fa('0x44')]=[{'all':!![]}];}return db['ZohoAccount'][_0x67fa('0x45')](_0x5afdae);})[_0x67fa('0x28')](function(_0x17b6c5){_0xbd2336[_0x67fa('0x46')]=_0x17b6c5;return _0xbd2336;})[_0x67fa('0x28')](respondWithFilteredResult(_0x41a45a,_0x5afdae))[_0x67fa('0x47')](handleError(_0x41a45a,null));};exports[_0x67fa('0x48')]=function(_0x2429f2,_0x576fe8){var _0x3e9daf={'raw':![],'where':{'id':_0x2429f2['params']['id']}},_0x484eee={};_0x484eee[_0x67fa('0x33')]=_['keys'](db[_0x67fa('0x2f')][_0x67fa('0x30')]);_0x484eee[_0x67fa('0x34')]=_[_0x67fa('0x35')](_0x2429f2[_0x67fa('0x34')]);_0x484eee['filters']=_[_0x67fa('0x37')](_0x484eee[_0x67fa('0x33')],_0x484eee[_0x67fa('0x34')]);_0x3e9daf[_0x67fa('0x39')]=_['intersection'](_0x484eee[_0x67fa('0x33')],qs[_0x67fa('0x38')](_0x2429f2[_0x67fa('0x34')][_0x67fa('0x38')]));_0x3e9daf[_0x67fa('0x39')]=_0x3e9daf[_0x67fa('0x39')][_0x67fa('0x49')]?_0x3e9daf[_0x67fa('0x39')]:_0x484eee[_0x67fa('0x33')];if(_0x2429f2[_0x67fa('0x34')]['includeAll']){_0x3e9daf[_0x67fa('0x44')]=[{'all':!![]}];}_0x3e9daf=_['merge']({},_0x3e9daf,_0x2429f2['options']);return db[_0x67fa('0x2f')][_0x67fa('0x4a')](_0x3e9daf)[_0x67fa('0x28')](handleEntityNotFound(_0x576fe8,null))['then'](respondWithResult(_0x576fe8,null))[_0x67fa('0x47')](handleError(_0x576fe8,null));};exports[_0x67fa('0x4b')]=function(_0x3a1780,_0x12d845){return db[_0x67fa('0x2f')]['create'](_0x3a1780[_0x67fa('0x4c')],{})[_0x67fa('0x28')](respondWithResult(_0x12d845,0xc9))['catch'](handleError(_0x12d845,null));};exports['update']=function(_0x43f8dc,_0x26ece){if(_0x43f8dc['body']['id']){delete _0x43f8dc[_0x67fa('0x4c')]['id'];}return db[_0x67fa('0x2f')][_0x67fa('0x4a')]({'where':{'id':_0x43f8dc[_0x67fa('0x4d')]['id']}})[_0x67fa('0x28')](handleEntityNotFound(_0x26ece,null))[_0x67fa('0x28')](saveUpdates(_0x43f8dc[_0x67fa('0x4c')],null))[_0x67fa('0x28')](respondWithResult(_0x26ece,null))['catch'](handleError(_0x26ece,null));};exports['destroy']=function(_0x52a926,_0x25efc){return db[_0x67fa('0x2f')][_0x67fa('0x4a')]({'where':{'id':_0x52a926[_0x67fa('0x4d')]['id']}})[_0x67fa('0x28')](handleEntityNotFound(_0x25efc,null))['then'](removeEntity(_0x25efc,null))[_0x67fa('0x47')](handleError(_0x25efc,null));};exports[_0x67fa('0x4e')]=function(_0x22f2ab,_0x2850cf,_0x304ecd){var _0x223f8a={};var _0x3cf091={};var _0x477517;var _0x9c3029;return db[_0x67fa('0x2f')]['findOne']({'where':{'id':_0x22f2ab[_0x67fa('0x4d')]['id']}})[_0x67fa('0x28')](handleEntityNotFound(_0x2850cf,null))[_0x67fa('0x28')](function(_0x2e402e){if(_0x2e402e){_0x477517=_0x2e402e;_0x3cf091['model']=_[_0x67fa('0x35')](db[_0x67fa('0x4f')][_0x67fa('0x30')]);_0x3cf091['query']=_['keys'](_0x22f2ab['query']);_0x3cf091['filters']=_[_0x67fa('0x37')](_0x3cf091[_0x67fa('0x33')],_0x3cf091[_0x67fa('0x34')]);_0x223f8a[_0x67fa('0x39')]=_[_0x67fa('0x37')](_0x3cf091['model'],qs[_0x67fa('0x38')](_0x22f2ab[_0x67fa('0x34')][_0x67fa('0x38')]));_0x223f8a['attributes']=_0x223f8a[_0x67fa('0x39')][_0x67fa('0x49')]?_0x223f8a[_0x67fa('0x39')]:_0x3cf091['model'];_0x223f8a[_0x67fa('0x3c')]=qs[_0x67fa('0x3d')](_0x22f2ab[_0x67fa('0x34')][_0x67fa('0x3d')]);_0x223f8a[_0x67fa('0x3e')]=qs['filters'](_['pick'](_0x22f2ab['query'],_0x3cf091[_0x67fa('0x36')]));if(_0x22f2ab['query'][_0x67fa('0x40')]){_0x223f8a[_0x67fa('0x3e')]=_[_0x67fa('0x42')](_0x223f8a[_0x67fa('0x3e')],{'$or':_[_0x67fa('0x2e')](_0x223f8a['attributes'],function(_0x4df645){var _0x48fbb5={};_0x48fbb5[_0x4df645]={'$like':'%'+_0x22f2ab[_0x67fa('0x34')][_0x67fa('0x40')]+'%'};return _0x48fbb5;})});}_0x223f8a=_[_0x67fa('0x42')]({},_0x223f8a,_0x22f2ab[_0x67fa('0x50')]);return _0x477517[_0x67fa('0x4e')](_0x223f8a);}})['then'](function(_0x23fe9c){if(_0x23fe9c){_0x9c3029=_0x23fe9c[_0x67fa('0x49')];if(!_0x22f2ab[_0x67fa('0x34')][_0x67fa('0x3a')](_0x67fa('0x3b'))){_0x223f8a['limit']=qs['limit'](_0x22f2ab[_0x67fa('0x34')]['limit']);_0x223f8a[_0x67fa('0x22')]=qs['offset'](_0x22f2ab['query'][_0x67fa('0x22')]);}return _0x477517[_0x67fa('0x4e')](_0x223f8a);}})['then'](function(_0x1e8959){if(_0x1e8959){return _0x1e8959?{'count':_0x9c3029,'rows':_0x1e8959}:null;}})['then'](respondWithResult(_0x2850cf,null))[_0x67fa('0x47')](handleError(_0x2850cf,null));};exports['addConfiguration']=function(_0x2c8ca3,_0x2311e3,_0x2e4862){if(_0x2c8ca3['body']['id']){delete _0x2c8ca3[_0x67fa('0x4c')]['id'];}return db[_0x67fa('0x2f')][_0x67fa('0x51')]({'where':{'id':_0x2c8ca3['params']['id']}})[_0x67fa('0x28')](handleEntityNotFound(_0x2311e3,null))[_0x67fa('0x28')](function(_0x4f541f){if(_0x4f541f){_0x2c8ca3[_0x67fa('0x4c')][_0x67fa('0x52')]=_0x4f541f['id'];_0x2c8ca3[_0x67fa('0x4c')][_0x67fa('0x53')]=integrations[_0x67fa('0x54')](_0x2c8ca3['body'][_0x67fa('0x55')],_0x2c8ca3[_0x67fa('0x4c')][_0x67fa('0x56')]);_0x2c8ca3['body'][_0x67fa('0x57')]=integrations[_0x67fa('0x58')](_0x2c8ca3[_0x67fa('0x4c')][_0x67fa('0x55')],_0x2c8ca3['body'][_0x67fa('0x56')]);return db[_0x67fa('0x4f')][_0x67fa('0x4b')](_0x2c8ca3[_0x67fa('0x4c')],{'include':[{'model':db[_0x67fa('0x59')],'as':_0x67fa('0x53')},{'model':db[_0x67fa('0x59')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x2311e3,null))[_0x67fa('0x47')](handleError(_0x2311e3,null));};function getAccessToken(_0x9ad314){return new Promise(function(_0x5557b2,_0x4781ea){var _0x4c4c90;switch(_0x9ad314['zone']){case'US':_0x4c4c90=_0x67fa('0x5a');break;case'AU':_0x4c4c90=_0x67fa('0x5b');break;case'EU':_0x4c4c90='https://accounts.zoho.eu';break;case'IN':_0x4c4c90=_0x67fa('0x5c');break;case'CN':_0x4c4c90=_0x67fa('0x5d');break;default:_0x4c4c90='https://accounts.zoho.eu';break;}var _0x225164={'method':'POST','uri':_0x4c4c90+_0x67fa('0x5e'),'qs':{'refresh_token':_0x9ad314[_0x67fa('0x5f')],'client_id':_0x9ad314['clientId'],'client_secret':_0x9ad314[_0x67fa('0x60')],'grant_type':_0x67fa('0x61')},'json':!![]};return rp(_0x225164)[_0x67fa('0x28')](function(_0x489410){if(_0x489410[_0x67fa('0x62')]){_0x5557b2(_0x489410['access_token']);}else{_0x4781ea(_0x67fa('0x63'));}})[_0x67fa('0x47')](function(_0x433a17){_0x4781ea(_0x433a17);});});}exports['getFields']=function(_0x9d3189,_0x4199c8,_0x1dd675){var _0x395c84,_0x46bac3,_0xf6d8d9,_0x4564c5,_0x4f7c98;return db['ZohoAccount'][_0x67fa('0x51')]({'where':{'id':_0x9d3189[_0x67fa('0x4d')]['id']},'attributes':['id',_0x67fa('0x64'),_0x67fa('0x65'),_0x67fa('0x66'),_0x67fa('0x60'),_0x67fa('0x67'),_0x67fa('0x68'),_0x67fa('0x5f')]})[_0x67fa('0x28')](handleEntityNotFound(_0x4199c8,null))[_0x67fa('0x28')](function(_0x1ad477){_0x4f7c98=_0x1ad477;_0x395c84=_0x4f7c98[_0x67fa('0x64')];_0x46bac3=_0x395c84==='zoho.eu'?'eu':_0x67fa('0x69');_0xf6d8d9=_0x4f7c98[_0x67fa('0x67')];var _0xd6decd=_0xf6d8d9[_0x67fa('0x6a')](-0x1);if(_0xd6decd==='/'||_0xd6decd==='\x5c'||_0xd6decd===':'){_0xf6d8d9=_0xf6d8d9[_0x67fa('0x6b')](0x0,_0xf6d8d9[_0x67fa('0x6c')](_0xd6decd));}if(!_0x4f7c98['refreshToken']){throw new Error(_0x67fa('0x6d'));}return getAccessToken(_0x4f7c98);})[_0x67fa('0x28')](function(_0x3430db){if(_0x3430db){return rp({'method':_0x67fa('0x6e'),'uri':util['format'](_0x67fa('0x6f'),_0x46bac3),'qs':{'module':_0x67fa('0x70')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3430db},'json':!![]});}})[_0x67fa('0x28')](function(_0x37b0fb){if(_0x37b0fb){if(_0x37b0fb['response']&&_0x37b0fb[_0x67fa('0x71')][_0x67fa('0x2a')]){throw new Error(_0x37b0fb[_0x67fa('0x71')]['error']['message']);}var _0x20ab57=[];var _0x4be9fc=[];var _0x2f79f6=[_0x67fa('0x72'),'Subject',_0x67fa('0x73'),_0x67fa('0x74'),_0x67fa('0x75'),_0x67fa('0x76'),_0x67fa('0x77'),_0x67fa('0x78')];_0x4be9fc=_['remove'](_0x37b0fb['fields'],function(_0x4826ef){return _0x2f79f6[_0x67fa('0x79')](_0x4826ef['api_name']);});for(var _0x5e6ab2=0x0;_0x5e6ab2<_0x4be9fc[_0x67fa('0x49')];_0x5e6ab2++){if(_0x4be9fc[_0x5e6ab2][_0x67fa('0x7a')]===![]){_0x20ab57[_0x67fa('0x7b')]({'id':_0x4be9fc[_0x5e6ab2]['id'],'name':_0x4be9fc[_0x5e6ab2][_0x67fa('0x7c')],'custom':_0x4be9fc[_0x5e6ab2][_0x67fa('0x7d')],'options':_0x4be9fc[_0x5e6ab2]['data_type']==='picklist'&&_0x4be9fc[_0x5e6ab2]['pick_list_values']['length']>-0x1?_[_0x67fa('0x2e')](_0x4be9fc[_0x5e6ab2][_0x67fa('0x7e')],function(_0x41ad3a){return{'name':_0x41ad3a,'value':_0x41ad3a};}):[]});}}return{'count':_0x20ab57[_0x67fa('0x49')],'rows':_0x20ab57};}else{return{'count':0x0,'rows':[]};}})[_0x67fa('0x28')](respondWithResult(_0x4199c8,null))[_0x67fa('0x47')](function(_0x10de21){var _0x91545f=_0x9d3189['query']['test']?0x1f4:_0x10de21[_0x67fa('0x7f')]||0x1f4;logger['error'](_0x67fa('0x80'),_0x67fa('0x81'),_0x91545f,JSON[_0x67fa('0x82')](_0x10de21));delete _0x10de21[_0x67fa('0x2c')];if(_0x91545f===0x191){_0x91545f=0x190;}_0x4199c8[_0x67fa('0x1c')](_0x91545f)[_0x67fa('0x83')](_0x9d3189[_0x67fa('0x34')][_0x67fa('0x84')]?{'message':'Wrong\x20credentials','statusCode':_0x10de21['statusCode']}:_0x10de21);});};
\ No newline at end of file
+var _0xeec1=['query','filters','model','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','ZohoAccount','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','getConfigurations','length','order','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoConfiguration','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','clientId','serverUrl','code','zoho.eu','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','error','message','Owner','Subject','Description','WhoId','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','push','display_label','custom_field','picklist','pick_list_values','test','statusCode','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','end','stack','name','send','index','map','fieldName','type','key'];(function(_0xdd7410,_0x45333d){var _0x2ef78d=function(_0x157a28){while(--_0x157a28){_0xdd7410['push'](_0xdd7410['shift']());}};_0x2ef78d(++_0x45333d);}(_0xeec1,0xe1));var _0x1eec=function(_0x1c3839,_0x7792a3){_0x1c3839=_0x1c3839-0x0;var _0x222f58=_0xeec1[_0x1c3839];return _0x222f58;};'use strict';var emlformat=require(_0x1eec('0x0'));var rimraf=require(_0x1eec('0x1'));var zipdir=require(_0x1eec('0x2'));var jsonpatch=require(_0x1eec('0x3'));var rp=require(_0x1eec('0x4'));var moment=require(_0x1eec('0x5'));var BPromise=require(_0x1eec('0x6'));var Mustache=require('mustache');var util=require(_0x1eec('0x7'));var path=require(_0x1eec('0x8'));var sox=require('sox');var csv=require(_0x1eec('0x9'));var ejs=require(_0x1eec('0xa'));var fs=require('fs');var fs_extra=require(_0x1eec('0xb'));var _=require(_0x1eec('0xc'));var squel=require('squel');var crypto=require(_0x1eec('0xd'));var jsforce=require(_0x1eec('0xe'));var deskjs=require(_0x1eec('0xf'));var toCsv=require(_0x1eec('0x9'));var querystring=require(_0x1eec('0x10'));var Papa=require('papaparse');var Redis=require(_0x1eec('0x11'));var authService=require(_0x1eec('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1eec('0x13'));var logger=require(_0x1eec('0x14'))(_0x1eec('0x15'));var utils=require(_0x1eec('0x16'));var config=require(_0x1eec('0x17'));var licenseUtil=require(_0x1eec('0x18'));var db=require(_0x1eec('0x19'))['db'];var integrations=require(_0x1eec('0x1a'));function respondWithStatusCode(_0x5df426,_0x2ff156){_0x2ff156=_0x2ff156||0xcc;return function(_0x2ed270){if(_0x2ed270){return _0x5df426[_0x1eec('0x1b')](_0x2ff156);}return _0x5df426[_0x1eec('0x1c')](_0x2ff156)['end']();};}function respondWithResult(_0x38628e,_0x5693d5){_0x5693d5=_0x5693d5||0xc8;return function(_0x539d9f){if(_0x539d9f){return _0x38628e[_0x1eec('0x1c')](_0x5693d5)[_0x1eec('0x1d')](_0x539d9f);}};}function respondWithFilteredResult(_0x3c363a,_0x23e679){return function(_0x1be111){if(_0x1be111){var _0x590540=typeof _0x23e679[_0x1eec('0x1e')]==='undefined'&&typeof _0x23e679[_0x1eec('0x1f')]==='undefined';var _0x5ae5e5=_0x1be111[_0x1eec('0x20')];var _0x2dc520=_0x590540?0x0:_0x23e679[_0x1eec('0x1e')];var _0x5ccd5d=_0x590540?_0x1be111[_0x1eec('0x20')]:_0x23e679[_0x1eec('0x1e')]+_0x23e679[_0x1eec('0x1f')];var _0xbeafe1;if(_0x5ccd5d>=_0x5ae5e5){_0x5ccd5d=_0x5ae5e5;_0xbeafe1=0xc8;}else{_0xbeafe1=0xce;}_0x3c363a['status'](_0xbeafe1);return _0x3c363a[_0x1eec('0x21')](_0x1eec('0x22'),_0x2dc520+'-'+_0x5ccd5d+'/'+_0x5ae5e5)['json'](_0x1be111);}return null;};}function patchUpdates(_0x56a164){return function(_0x27ae76){try{jsonpatch['apply'](_0x27ae76,_0x56a164,!![]);}catch(_0x547a47){return BPromise[_0x1eec('0x23')](_0x547a47);}return _0x27ae76[_0x1eec('0x24')]();};}function saveUpdates(_0x19eb15,_0x220de0){return function(_0x2367de){if(_0x2367de){return _0x2367de[_0x1eec('0x25')](_0x19eb15)[_0x1eec('0x26')](function(_0x2f2b3e){return _0x2f2b3e;});}return null;};}function removeEntity(_0x2ffafa,_0x40f7e4){return function(_0x3a2387){if(_0x3a2387){return _0x3a2387[_0x1eec('0x27')]()[_0x1eec('0x26')](function(){_0x2ffafa[_0x1eec('0x1c')](0xcc)[_0x1eec('0x28')]();});}};}function handleEntityNotFound(_0x191e60,_0x3a9342){return function(_0x42ebe3){if(!_0x42ebe3){_0x191e60['sendStatus'](0x194);}return _0x42ebe3;};}function handleError(_0x29df41,_0x5869a3){_0x5869a3=_0x5869a3||0x1f4;return function(_0x2f6798){logger['error'](_0x2f6798[_0x1eec('0x29')]);if(_0x2f6798[_0x1eec('0x2a')]){delete _0x2f6798[_0x1eec('0x2a')];}_0x29df41['status'](_0x5869a3)[_0x1eec('0x2b')](_0x2f6798);};}exports[_0x1eec('0x2c')]=function(_0x2514b1,_0x541689){var _0x398f02={},_0x41c742={},_0x399d61={'count':0x0,'rows':[]};var _0x103dea=_[_0x1eec('0x2d')](db['ZohoAccount']['rawAttributes'],function(_0x30a2ed){return{'name':_0x30a2ed[_0x1eec('0x2e')],'type':_0x30a2ed[_0x1eec('0x2f')][_0x1eec('0x30')]};});_0x41c742['model']=_[_0x1eec('0x2d')](_0x103dea,_0x1eec('0x2a'));_0x41c742[_0x1eec('0x31')]=_['keys'](_0x2514b1['query']);_0x41c742[_0x1eec('0x32')]=_['intersection'](_0x41c742[_0x1eec('0x33')],_0x41c742[_0x1eec('0x31')]);_0x398f02['attributes']=_[_0x1eec('0x34')](_0x41c742[_0x1eec('0x33')],qs[_0x1eec('0x35')](_0x2514b1[_0x1eec('0x31')][_0x1eec('0x35')]));_0x398f02[_0x1eec('0x36')]=_0x398f02[_0x1eec('0x36')]['length']?_0x398f02[_0x1eec('0x36')]:_0x41c742['model'];if(!_0x2514b1[_0x1eec('0x31')][_0x1eec('0x37')](_0x1eec('0x38'))){_0x398f02[_0x1eec('0x1f')]=qs[_0x1eec('0x1f')](_0x2514b1[_0x1eec('0x31')][_0x1eec('0x1f')]);_0x398f02[_0x1eec('0x1e')]=qs[_0x1eec('0x1e')](_0x2514b1[_0x1eec('0x31')][_0x1eec('0x1e')]);}_0x398f02['order']=qs[_0x1eec('0x39')](_0x2514b1[_0x1eec('0x31')][_0x1eec('0x39')]);_0x398f02[_0x1eec('0x3a')]=qs['filters'](_[_0x1eec('0x3b')](_0x2514b1[_0x1eec('0x31')],_0x41c742[_0x1eec('0x32')]),_0x103dea);if(_0x2514b1[_0x1eec('0x31')][_0x1eec('0x3c')]){_0x398f02[_0x1eec('0x3a')]=_[_0x1eec('0x3d')](_0x398f02[_0x1eec('0x3a')],{'$or':_[_0x1eec('0x2d')](_0x103dea,function(_0x47b2da){if(_0x47b2da[_0x1eec('0x2f')]!==_0x1eec('0x3e')){var _0x5253bf={};_0x5253bf[_0x47b2da[_0x1eec('0x2a')]]={'$like':'%'+_0x2514b1[_0x1eec('0x31')][_0x1eec('0x3c')]+'%'};return _0x5253bf;}})});}_0x398f02=_[_0x1eec('0x3d')]({},_0x398f02,_0x2514b1[_0x1eec('0x3f')]);var _0x19196a={'where':_0x398f02[_0x1eec('0x3a')]};return db[_0x1eec('0x40')][_0x1eec('0x20')](_0x19196a)['then'](function(_0x594258){_0x399d61[_0x1eec('0x20')]=_0x594258;if(_0x2514b1['query'][_0x1eec('0x41')]){_0x398f02['include']=[{'all':!![]}];}return db['ZohoAccount'][_0x1eec('0x42')](_0x398f02);})[_0x1eec('0x26')](function(_0xfe6033){_0x399d61[_0x1eec('0x43')]=_0xfe6033;return _0x399d61;})[_0x1eec('0x26')](respondWithFilteredResult(_0x541689,_0x398f02))[_0x1eec('0x44')](handleError(_0x541689,null));};exports[_0x1eec('0x45')]=function(_0x1fc92f,_0x125700){var _0x2522d0={'raw':![],'where':{'id':_0x1fc92f[_0x1eec('0x46')]['id']}},_0x39a580={};_0x39a580[_0x1eec('0x33')]=_[_0x1eec('0x47')](db[_0x1eec('0x40')][_0x1eec('0x48')]);_0x39a580['query']=_['keys'](_0x1fc92f[_0x1eec('0x31')]);_0x39a580['filters']=_[_0x1eec('0x34')](_0x39a580[_0x1eec('0x33')],_0x39a580[_0x1eec('0x31')]);_0x2522d0[_0x1eec('0x36')]=_['intersection'](_0x39a580[_0x1eec('0x33')],qs[_0x1eec('0x35')](_0x1fc92f[_0x1eec('0x31')]['fields']));_0x2522d0[_0x1eec('0x36')]=_0x2522d0[_0x1eec('0x36')]['length']?_0x2522d0[_0x1eec('0x36')]:_0x39a580[_0x1eec('0x33')];if(_0x1fc92f[_0x1eec('0x31')][_0x1eec('0x41')]){_0x2522d0['include']=[{'all':!![]}];}_0x2522d0=_[_0x1eec('0x3d')]({},_0x2522d0,_0x1fc92f[_0x1eec('0x3f')]);return db['ZohoAccount'][_0x1eec('0x49')](_0x2522d0)[_0x1eec('0x26')](handleEntityNotFound(_0x125700,null))['then'](respondWithResult(_0x125700,null))['catch'](handleError(_0x125700,null));};exports[_0x1eec('0x4a')]=function(_0x47a517,_0x22b9a1){return db[_0x1eec('0x40')][_0x1eec('0x4a')](_0x47a517['body'],{})[_0x1eec('0x26')](respondWithResult(_0x22b9a1,0xc9))[_0x1eec('0x44')](handleError(_0x22b9a1,null));};exports[_0x1eec('0x25')]=function(_0x3e18ea,_0x2cad49){if(_0x3e18ea['body']['id']){delete _0x3e18ea[_0x1eec('0x4b')]['id'];}return db[_0x1eec('0x40')]['find']({'where':{'id':_0x3e18ea['params']['id']}})[_0x1eec('0x26')](handleEntityNotFound(_0x2cad49,null))['then'](saveUpdates(_0x3e18ea['body'],null))[_0x1eec('0x26')](respondWithResult(_0x2cad49,null))['catch'](handleError(_0x2cad49,null));};exports['destroy']=function(_0x21eedd,_0x2ee2dd){return db['ZohoAccount'][_0x1eec('0x49')]({'where':{'id':_0x21eedd[_0x1eec('0x46')]['id']}})['then'](handleEntityNotFound(_0x2ee2dd,null))[_0x1eec('0x26')](removeEntity(_0x2ee2dd,null))[_0x1eec('0x44')](handleError(_0x2ee2dd,null));};exports[_0x1eec('0x4c')]=function(_0x139df3,_0x4d7526,_0xa6bbca){var _0x5693ae={};var _0x1fe2be={};var _0x84b99e;var _0x5e5a65;return db['ZohoAccount']['findOne']({'where':{'id':_0x139df3[_0x1eec('0x46')]['id']}})[_0x1eec('0x26')](handleEntityNotFound(_0x4d7526,null))['then'](function(_0x2ba58a){if(_0x2ba58a){_0x84b99e=_0x2ba58a;_0x1fe2be[_0x1eec('0x33')]=_[_0x1eec('0x47')](db['ZohoConfiguration'][_0x1eec('0x48')]);_0x1fe2be[_0x1eec('0x31')]=_[_0x1eec('0x47')](_0x139df3[_0x1eec('0x31')]);_0x1fe2be[_0x1eec('0x32')]=_[_0x1eec('0x34')](_0x1fe2be['model'],_0x1fe2be[_0x1eec('0x31')]);_0x5693ae['attributes']=_[_0x1eec('0x34')](_0x1fe2be['model'],qs['fields'](_0x139df3[_0x1eec('0x31')][_0x1eec('0x35')]));_0x5693ae[_0x1eec('0x36')]=_0x5693ae['attributes'][_0x1eec('0x4d')]?_0x5693ae[_0x1eec('0x36')]:_0x1fe2be['model'];_0x5693ae[_0x1eec('0x4e')]=qs[_0x1eec('0x39')](_0x139df3[_0x1eec('0x31')][_0x1eec('0x39')]);_0x5693ae['where']=qs[_0x1eec('0x32')](_[_0x1eec('0x3b')](_0x139df3[_0x1eec('0x31')],_0x1fe2be[_0x1eec('0x32')]));if(_0x139df3[_0x1eec('0x31')][_0x1eec('0x3c')]){_0x5693ae[_0x1eec('0x3a')]=_[_0x1eec('0x3d')](_0x5693ae[_0x1eec('0x3a')],{'$or':_[_0x1eec('0x2d')](_0x5693ae[_0x1eec('0x36')],function(_0x566c73){var _0x2c78c1={};_0x2c78c1[_0x566c73]={'$like':'%'+_0x139df3[_0x1eec('0x31')][_0x1eec('0x3c')]+'%'};return _0x2c78c1;})});}_0x5693ae=_['merge']({},_0x5693ae,_0x139df3['options']);return _0x84b99e[_0x1eec('0x4c')](_0x5693ae);}})['then'](function(_0x108480){if(_0x108480){_0x5e5a65=_0x108480[_0x1eec('0x4d')];if(!_0x139df3[_0x1eec('0x31')][_0x1eec('0x37')]('nolimit')){_0x5693ae[_0x1eec('0x1f')]=qs[_0x1eec('0x1f')](_0x139df3[_0x1eec('0x31')][_0x1eec('0x1f')]);_0x5693ae[_0x1eec('0x1e')]=qs[_0x1eec('0x1e')](_0x139df3['query'][_0x1eec('0x1e')]);}return _0x84b99e[_0x1eec('0x4c')](_0x5693ae);}})[_0x1eec('0x26')](function(_0x76434b){if(_0x76434b){return _0x76434b?{'count':_0x5e5a65,'rows':_0x76434b}:null;}})[_0x1eec('0x26')](respondWithResult(_0x4d7526,null))[_0x1eec('0x44')](handleError(_0x4d7526,null));};exports['addConfiguration']=function(_0x35d4d0,_0x582213,_0x8c805){if(_0x35d4d0[_0x1eec('0x4b')]['id']){delete _0x35d4d0[_0x1eec('0x4b')]['id'];}return db['ZohoAccount'][_0x1eec('0x4f')]({'where':{'id':_0x35d4d0[_0x1eec('0x46')]['id']}})['then'](handleEntityNotFound(_0x582213,null))['then'](function(_0x55cbbf){if(_0x55cbbf){_0x35d4d0['body'][_0x1eec('0x50')]=_0x55cbbf['id'];_0x35d4d0[_0x1eec('0x4b')][_0x1eec('0x51')]=integrations[_0x1eec('0x52')](_0x35d4d0['body'][_0x1eec('0x53')],_0x35d4d0['body'][_0x1eec('0x2f')]);_0x35d4d0[_0x1eec('0x4b')][_0x1eec('0x54')]=integrations[_0x1eec('0x55')](_0x35d4d0[_0x1eec('0x4b')][_0x1eec('0x53')],_0x35d4d0[_0x1eec('0x4b')][_0x1eec('0x2f')]);return db[_0x1eec('0x56')][_0x1eec('0x4a')](_0x35d4d0[_0x1eec('0x4b')],{'include':[{'model':db['ZohoField'],'as':_0x1eec('0x51')},{'model':db[_0x1eec('0x57')],'as':_0x1eec('0x54')}]});}return null;})[_0x1eec('0x26')](respondWithResult(_0x582213,null))['catch'](handleError(_0x582213,null));};function getAccessToken(_0x1dceba){return new Promise(function(_0x57a3aa,_0x2cda06){var _0x1ad5ef;switch(_0x1dceba[_0x1eec('0x58')]){case'US':_0x1ad5ef=_0x1eec('0x59');break;case'AU':_0x1ad5ef=_0x1eec('0x5a');break;case'EU':_0x1ad5ef=_0x1eec('0x5b');break;case'IN':_0x1ad5ef=_0x1eec('0x5c');break;case'CN':_0x1ad5ef=_0x1eec('0x5d');break;default:_0x1ad5ef='https://accounts.zoho.eu';break;}var _0x2a1cc={'method':_0x1eec('0x5e'),'uri':_0x1ad5ef+_0x1eec('0x5f'),'qs':{'refresh_token':_0x1dceba[_0x1eec('0x60')],'client_id':_0x1dceba['clientId'],'client_secret':_0x1dceba[_0x1eec('0x61')],'grant_type':_0x1eec('0x62')},'json':!![]};return rp(_0x2a1cc)[_0x1eec('0x26')](function(_0x65ae07){if(_0x65ae07[_0x1eec('0x63')]){_0x57a3aa(_0x65ae07[_0x1eec('0x63')]);}else{_0x2cda06(_0x1eec('0x64'));}})['catch'](function(_0x2b3cd1){_0x2cda06(_0x2b3cd1);});});}exports['getFields']=function(_0x335a24,_0x28bad3,_0x25eb41){var _0x20cd7f,_0xeb962b,_0xcfe5df,_0x2b300d,_0x4f13ef;return db[_0x1eec('0x40')][_0x1eec('0x4f')]({'where':{'id':_0x335a24[_0x1eec('0x46')]['id']},'attributes':['id',_0x1eec('0x65'),_0x1eec('0x58'),_0x1eec('0x66'),_0x1eec('0x61'),_0x1eec('0x67'),_0x1eec('0x68'),'refreshToken']})['then'](handleEntityNotFound(_0x28bad3,null))[_0x1eec('0x26')](function(_0x518c46){_0x4f13ef=_0x518c46;_0x20cd7f=_0x4f13ef[_0x1eec('0x65')];_0xeb962b=_0x20cd7f===_0x1eec('0x69')?'eu':'com';_0xcfe5df=_0x4f13ef[_0x1eec('0x67')];var _0xa4a792=_0xcfe5df['slice'](-0x1);if(_0xa4a792==='/'||_0xa4a792==='\x5c'||_0xa4a792===':'){_0xcfe5df=_0xcfe5df[_0x1eec('0x6a')](0x0,_0xcfe5df[_0x1eec('0x6b')](_0xa4a792));}if(!_0x4f13ef[_0x1eec('0x60')]){throw new Error(_0x1eec('0x6c'));}return getAccessToken(_0x4f13ef);})[_0x1eec('0x26')](function(_0x14a0d8){if(_0x14a0d8){return rp({'method':_0x1eec('0x6d'),'uri':util[_0x1eec('0x6e')](_0x1eec('0x6f'),_0xeb962b),'qs':{'module':_0x1eec('0x70')},'headers':{'Authorization':_0x1eec('0x71')+_0x14a0d8},'json':!![]});}})['then'](function(_0x401768){if(_0x401768){if(_0x401768[_0x1eec('0x72')]&&_0x401768[_0x1eec('0x72')][_0x1eec('0x73')]){throw new Error(_0x401768[_0x1eec('0x72')][_0x1eec('0x73')][_0x1eec('0x74')]);}var _0x320e49=[];var _0x4cdbb7=[];var _0x52bcbe=[_0x1eec('0x75'),_0x1eec('0x76'),_0x1eec('0x77'),_0x1eec('0x78'),'Call_Duration',_0x1eec('0x79'),_0x1eec('0x7a'),_0x1eec('0x7b')];_0x4cdbb7=_[_0x1eec('0x7c')](_0x401768[_0x1eec('0x35')],function(_0x24b296){return _0x52bcbe[_0x1eec('0x7d')](_0x24b296[_0x1eec('0x7e')]);});for(var _0x54228a=0x0;_0x54228a<_0x4cdbb7['length'];_0x54228a++){if(_0x4cdbb7[_0x54228a]['system_mandatory']===![]){_0x320e49[_0x1eec('0x7f')]({'id':_0x4cdbb7[_0x54228a]['id'],'name':_0x4cdbb7[_0x54228a][_0x1eec('0x80')],'custom':_0x4cdbb7[_0x54228a][_0x1eec('0x81')],'options':_0x4cdbb7[_0x54228a]['data_type']===_0x1eec('0x82')&&_0x4cdbb7[_0x54228a]['pick_list_values'][_0x1eec('0x4d')]>-0x1?_[_0x1eec('0x2d')](_0x4cdbb7[_0x54228a][_0x1eec('0x83')],function(_0x901e98){return{'name':_0x901e98,'value':_0x901e98};}):[]});}}return{'count':_0x320e49[_0x1eec('0x4d')],'rows':_0x320e49};}else{return{'count':0x0,'rows':[]};}})[_0x1eec('0x26')](respondWithResult(_0x28bad3,null))['catch'](function(_0x3bf85e){var _0x3ed974=_0x335a24['query'][_0x1eec('0x84')]?0x1f4:_0x3bf85e[_0x1eec('0x85')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x1eec('0x86'),_0x3ed974,JSON[_0x1eec('0x87')](_0x3bf85e));delete _0x3bf85e[_0x1eec('0x2a')];if(_0x3ed974===0x191){_0x3ed974=0x190;}_0x28bad3[_0x1eec('0x1c')](_0x3ed974)[_0x1eec('0x2b')](_0x335a24[_0x1eec('0x31')][_0x1eec('0x84')]?{'message':_0x1eec('0x88'),'statusCode':_0x3bf85e[_0x1eec('0x85')]}:_0x3bf85e);});};
\ No newline at end of file
index 1ab2abd..bfe0788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99a9=['../../config/logger','api','moment','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','zone','changed','serverUrl','clientId','clientSecret','code','host','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','then','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','inspect','catch','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','slice','substring','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','application/x-www-form-urlencoded','parse','lodash','util'];(function(_0x2e7087,_0x112eec){var _0xb5b3a6=function(_0x296310){while(--_0x296310){_0x2e7087['push'](_0x2e7087['shift']());}};_0xb5b3a6(++_0x112eec);}(_0x99a9,0x1e2));var _0x999a=function(_0xc80e09,_0x56c83a){_0xc80e09=_0xc80e09-0x0;var _0x27258a=_0x99a9[_0xc80e09];return _0x27258a;};'use strict';var _=require(_0x999a('0x0'));var util=require(_0x999a('0x1'));var logger=require(_0x999a('0x2'))(_0x999a('0x3'));var moment=require(_0x999a('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x999a('0x5'));var rimraf=require(_0x999a('0x6'));var config=require(_0x999a('0x7'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x999a('0x8'));module[_0x999a('0x9')]=function(_0x2b337f,_0x1fe9c7){return _0x2b337f[_0x999a('0xa')](_0x999a('0xb'),attributes,{'tableName':_0x999a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x53b020,_0x1cf2a5,_0x2690e8){if(_0x53b020['changed'](_0x999a('0xd'))||_0x53b020[_0x999a('0xe')](_0x999a('0xf'))||_0x53b020[_0x999a('0xe')](_0x999a('0x10'))||_0x53b020[_0x999a('0xe')](_0x999a('0x11'))||_0x53b020[_0x999a('0xe')](_0x999a('0x12'))||_0x53b020['changed'](_0x999a('0x13'))){var _0x212c6e,_0x54176d;_0x212c6e=_0x53b020[_0x999a('0xf')];var _0x59d12c=_0x212c6e['slice'](-0x1);if(_0x59d12c==='/'||_0x59d12c==='\x5c'||_0x59d12c===':'){_0x212c6e=_0x212c6e['substring'](0x0,_0x212c6e[_0x999a('0x14')](_0x59d12c));}switch(_0x53b020['zone']){case'US':_0x54176d=_0x999a('0x15');break;case'AU':_0x54176d='https://accounts.zoho.com.au';break;case'IN':_0x54176d=_0x999a('0x16');break;case'CN':_0x54176d='https://accounts.zoho.com.cn';break;default:_0x54176d=_0x999a('0x17');break;}var _0x1277d3={'method':_0x999a('0x18'),'uri':_0x54176d+_0x999a('0x19'),'form':{'grant_type':_0x999a('0x1a'),'client_id':_0x53b020[_0x999a('0x10')],'client_secret':_0x53b020['clientSecret'],'redirect_uri':_0x53b020[_0x999a('0xf')],'code':_0x53b020[_0x999a('0x12')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x1277d3)[_0x999a('0x1b')](function(_0x2d5d0a){var _0x2f6d22=JSON['parse'](_0x2d5d0a);if(_0x2f6d22[_0x999a('0x1c')]){_0x53b020[_0x999a('0x1d')]=_0x2f6d22[_0x999a('0x1c')];logger[_0x999a('0x1e')](util[_0x999a('0x1f')](_0x999a('0x20'),_0x53b020[_0x999a('0x21')],_0x53b020['id']));}else{logger[_0x999a('0x22')](util[_0x999a('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x53b020[_0x999a('0x21')],_0x53b020['id']),util[_0x999a('0x23')](_0x2f6d22,{'showHidden':![],'depth':null}));}return _0x2690e8(null,_0x1cf2a5);})[_0x999a('0x24')](function(_0x50207d){logger[_0x999a('0x22')](util['format'](_0x999a('0x25'),_0x53b020[_0x999a('0x21')],_0x53b020['id']),util[_0x999a('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x2690e8(_0x50207d);});}else{return _0x2690e8(null,_0x1cf2a5);}},'beforeUpdate':function(_0x1ec2b9,_0x67b816,_0x2f3265){if(_0x1ec2b9[_0x999a('0xe')]('zone')||_0x1ec2b9[_0x999a('0xe')](_0x999a('0xf'))||_0x1ec2b9[_0x999a('0xe')]('clientId')||_0x1ec2b9['changed'](_0x999a('0x11'))||_0x1ec2b9[_0x999a('0xe')](_0x999a('0x12'))||_0x1ec2b9[_0x999a('0xe')](_0x999a('0x13'))){var _0x5a3f6d,_0x42e6ab;_0x5a3f6d=_0x1ec2b9[_0x999a('0xf')];var _0x4975cd=_0x5a3f6d[_0x999a('0x26')](-0x1);if(_0x4975cd==='/'||_0x4975cd==='\x5c'||_0x4975cd===':'){_0x5a3f6d=_0x5a3f6d[_0x999a('0x27')](0x0,_0x5a3f6d[_0x999a('0x14')](_0x4975cd));}switch(_0x1ec2b9['zone']){case'US':_0x42e6ab=_0x999a('0x15');break;case'AU':_0x42e6ab=_0x999a('0x28');break;case'IN':_0x42e6ab=_0x999a('0x16');break;case'CN':_0x42e6ab=_0x999a('0x29');break;default:_0x42e6ab=_0x999a('0x17');break;}var _0xf29fda={'method':_0x999a('0x18'),'uri':_0x42e6ab+_0x999a('0x19'),'form':{'grant_type':'authorization_code','client_id':_0x1ec2b9['clientId'],'client_secret':_0x1ec2b9[_0x999a('0x11')],'redirect_uri':_0x1ec2b9[_0x999a('0xf')],'code':_0x1ec2b9[_0x999a('0x12')]},'headers':{'Content-Type':_0x999a('0x2a')}};return rp(_0xf29fda)[_0x999a('0x1b')](function(_0x534eef){var _0x17b92e=JSON[_0x999a('0x2b')](_0x534eef);if(_0x17b92e['refresh_token']){_0x1ec2b9[_0x999a('0x1d')]=_0x17b92e[_0x999a('0x1c')];logger['info'](util['format'](_0x999a('0x20'),_0x1ec2b9['name'],_0x1ec2b9['id']));}else{logger[_0x999a('0x22')](util[_0x999a('0x1f')](_0x999a('0x25'),_0x1ec2b9[_0x999a('0x21')],_0x1ec2b9['id']),util[_0x999a('0x23')](_0x17b92e,{'showHidden':![],'depth':null}));}return _0x2f3265(null,_0x67b816);})[_0x999a('0x24')](function(_0x5dc2a0){logger[_0x999a('0x22')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1ec2b9[_0x999a('0x21')],_0x1ec2b9['id']),util[_0x999a('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x2f3265(_0x5dc2a0);});}else{return _0x2f3265(null,_0x67b816);}}}});};
\ No newline at end of file
+var _0x2af4=['error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','catch','zone','host','application/x-www-form-urlencoded','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intZohoAccount.attributes','exports','int_zoho_accounts','changed','serverUrl','clientId','clientSecret','slice','substring','lastIndexOf','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','code','then','parse','refresh_token','refreshToken','format'];(function(_0x3ff20a,_0x544c65){var _0x2f9cff=function(_0x4bbfbb){while(--_0x4bbfbb){_0x3ff20a['push'](_0x3ff20a['shift']());}};_0x2f9cff(++_0x544c65);}(_0x2af4,0x17b));var _0x42af=function(_0x1c716f,_0x3c0810){_0x1c716f=_0x1c716f-0x0;var _0x215b8b=_0x2af4[_0x1c716f];return _0x215b8b;};'use strict';var _=require(_0x42af('0x0'));var util=require(_0x42af('0x1'));var logger=require('../../config/logger')(_0x42af('0x2'));var moment=require(_0x42af('0x3'));var BPromise=require(_0x42af('0x4'));var rp=require(_0x42af('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x42af('0x6'));var config=require(_0x42af('0x7'));var attributes=require(_0x42af('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x42af('0x9')]=function(_0x56c733,_0x285196){return _0x56c733['define']('ZohoAccount',attributes,{'tableName':_0x42af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4d1d52,_0x304ead,_0x26f764){if(_0x4d1d52[_0x42af('0xb')]('zone')||_0x4d1d52[_0x42af('0xb')](_0x42af('0xc'))||_0x4d1d52['changed'](_0x42af('0xd'))||_0x4d1d52[_0x42af('0xb')](_0x42af('0xe'))||_0x4d1d52['changed']('code')||_0x4d1d52[_0x42af('0xb')]('host')){var _0x3fdaec,_0x5559d7;_0x3fdaec=_0x4d1d52[_0x42af('0xc')];var _0x22de9a=_0x3fdaec[_0x42af('0xf')](-0x1);if(_0x22de9a==='/'||_0x22de9a==='\x5c'||_0x22de9a===':'){_0x3fdaec=_0x3fdaec[_0x42af('0x10')](0x0,_0x3fdaec[_0x42af('0x11')](_0x22de9a));}switch(_0x4d1d52['zone']){case'US':_0x5559d7='https://accounts.zoho.com';break;case'AU':_0x5559d7=_0x42af('0x12');break;case'IN':_0x5559d7=_0x42af('0x13');break;case'CN':_0x5559d7=_0x42af('0x14');break;default:_0x5559d7=_0x42af('0x15');break;}var _0x3eac41={'method':_0x42af('0x16'),'uri':_0x5559d7+_0x42af('0x17'),'form':{'grant_type':_0x42af('0x18'),'client_id':_0x4d1d52[_0x42af('0xd')],'client_secret':_0x4d1d52[_0x42af('0xe')],'redirect_uri':_0x4d1d52[_0x42af('0xc')],'code':_0x4d1d52[_0x42af('0x19')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x3eac41)[_0x42af('0x1a')](function(_0x2ce89e){var _0x18d510=JSON[_0x42af('0x1b')](_0x2ce89e);if(_0x18d510[_0x42af('0x1c')]){_0x4d1d52[_0x42af('0x1d')]=_0x18d510[_0x42af('0x1c')];logger['info'](util[_0x42af('0x1e')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x4d1d52['name'],_0x4d1d52['id']));}else{logger[_0x42af('0x1f')](util[_0x42af('0x1e')](_0x42af('0x20'),_0x4d1d52[_0x42af('0x21')],_0x4d1d52['id']),util[_0x42af('0x22')](_0x18d510,{'showHidden':![],'depth':null}));}return _0x26f764(null,_0x304ead);})[_0x42af('0x23')](function(_0x1fe4c8){logger[_0x42af('0x1f')](util[_0x42af('0x1e')](_0x42af('0x20'),_0x4d1d52['name'],_0x4d1d52['id']),util[_0x42af('0x22')](parsedResult,{'showHidden':![],'depth':null}));return _0x26f764(_0x1fe4c8);});}else{return _0x26f764(null,_0x304ead);}},'beforeUpdate':function(_0x270940,_0x22f42d,_0x5f3f53){if(_0x270940[_0x42af('0xb')](_0x42af('0x24'))||_0x270940['changed']('serverUrl')||_0x270940['changed']('clientId')||_0x270940[_0x42af('0xb')](_0x42af('0xe'))||_0x270940[_0x42af('0xb')](_0x42af('0x19'))||_0x270940[_0x42af('0xb')](_0x42af('0x25'))){var _0x5bec1d,_0x10019e;_0x5bec1d=_0x270940[_0x42af('0xc')];var _0x455da6=_0x5bec1d['slice'](-0x1);if(_0x455da6==='/'||_0x455da6==='\x5c'||_0x455da6===':'){_0x5bec1d=_0x5bec1d[_0x42af('0x10')](0x0,_0x5bec1d[_0x42af('0x11')](_0x455da6));}switch(_0x270940[_0x42af('0x24')]){case'US':_0x10019e='https://accounts.zoho.com';break;case'AU':_0x10019e=_0x42af('0x12');break;case'IN':_0x10019e=_0x42af('0x13');break;case'CN':_0x10019e='https://accounts.zoho.com.cn';break;default:_0x10019e='https://accounts.zoho.eu';break;}var _0x17404={'method':'POST','uri':_0x10019e+_0x42af('0x17'),'form':{'grant_type':_0x42af('0x18'),'client_id':_0x270940[_0x42af('0xd')],'client_secret':_0x270940[_0x42af('0xe')],'redirect_uri':_0x270940['serverUrl'],'code':_0x270940[_0x42af('0x19')]},'headers':{'Content-Type':_0x42af('0x26')}};return rp(_0x17404)['then'](function(_0x513d21){var _0x341fb2=JSON[_0x42af('0x1b')](_0x513d21);if(_0x341fb2['refresh_token']){_0x270940[_0x42af('0x1d')]=_0x341fb2['refresh_token'];logger[_0x42af('0x27')](util[_0x42af('0x1e')](_0x42af('0x28'),_0x270940[_0x42af('0x21')],_0x270940['id']));}else{logger[_0x42af('0x1f')](util[_0x42af('0x1e')](_0x42af('0x20'),_0x270940[_0x42af('0x21')],_0x270940['id']),util[_0x42af('0x22')](_0x341fb2,{'showHidden':![],'depth':null}));}return _0x5f3f53(null,_0x22f42d);})['catch'](function(_0x52cde4){logger[_0x42af('0x1f')](util[_0x42af('0x1e')](_0x42af('0x20'),_0x270940[_0x42af('0x21')],_0x270940['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x5f3f53(_0x52cde4);});}else{return _0x5f3f53(null,_0x22f42d);}}}});};
\ No newline at end of file
index 1a24d0d..d028833 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad5f=['rpc','../../config/environment','jayson/promise','client','http','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetZohoAccount','findAll','options','attributes','limit','map','include','model','ShowZohoAccount','ZohoAccount','find','raw','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0xad5f,0x1a8));var _0xfad5=function(_0x4ed786,_0x74f270){_0x4ed786=_0x4ed786-0x0;var _0x2f0243=_0xad5f[_0x4ed786];return _0x2f0243;};'use strict';var _=require(_0xfad5('0x0'));var util=require(_0xfad5('0x1'));var moment=require(_0xfad5('0x2'));var BPromise=require(_0xfad5('0x3'));var rs=require(_0xfad5('0x4'));var fs=require('fs');var Redis=require(_0xfad5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xfad5('0x6'));var logger=require(_0xfad5('0x7'))(_0xfad5('0x8'));var config=require(_0xfad5('0x9'));var jayson=require(_0xfad5('0xa'));var client=jayson[_0xfad5('0xb')][_0xfad5('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5811f7,_0xf71084,_0x28566c){return new BPromise(function(_0x39d228,_0xbe8f56){return client['request'](_0x5811f7,_0x28566c)[_0xfad5('0xd')](function(_0xac127d){logger[_0xfad5('0xe')](_0xfad5('0xf'),_0xf71084,_0xfad5('0x10'));logger[_0xfad5('0x11')](_0xfad5('0x12'),_0xf71084,'request\x20sent',JSON[_0xfad5('0x13')](_0xac127d));if(_0xac127d[_0xfad5('0x14')]){if(_0xac127d[_0xfad5('0x14')]['code']===0x1f4){logger['error'](_0xfad5('0xf'),_0xf71084,_0xac127d[_0xfad5('0x14')][_0xfad5('0x15')]);return _0xbe8f56(_0xac127d[_0xfad5('0x14')][_0xfad5('0x15')]);}logger['error'](_0xfad5('0xf'),_0xf71084,_0xac127d[_0xfad5('0x14')][_0xfad5('0x15')]);return _0x39d228(_0xac127d[_0xfad5('0x14')][_0xfad5('0x15')]);}else{logger[_0xfad5('0xe')](_0xfad5('0xf'),_0xf71084,'request\x20sent');_0x39d228(_0xac127d['result'][_0xfad5('0x15')]);}})[_0xfad5('0x16')](function(_0x311e75){logger[_0xfad5('0x14')](_0xfad5('0xf'),_0xf71084,_0x311e75);_0xbe8f56(_0x311e75);});});}exports[_0xfad5('0x17')]=function(_0x10ae77){var _0x2fc3ed=this;return new Promise(function(_0x259766,_0x558590){return db['ZohoAccount'][_0xfad5('0x18')]({'raw':_0x10ae77[_0xfad5('0x19')]?_0x10ae77['options']['raw']===undefined?!![]:![]:!![],'where':_0x10ae77[_0xfad5('0x19')]?_0x10ae77[_0xfad5('0x19')]['where']||null:null,'attributes':_0x10ae77['options']?_0x10ae77[_0xfad5('0x19')][_0xfad5('0x1a')]||null:null,'limit':_0x10ae77[_0xfad5('0x19')]?_0x10ae77[_0xfad5('0x19')][_0xfad5('0x1b')]||null:null,'include':_0x10ae77['options']?_0x10ae77[_0xfad5('0x19')]['include']?_[_0xfad5('0x1c')](_0x10ae77[_0xfad5('0x19')][_0xfad5('0x1d')],function(_0x16e903){return{'model':db[_0x16e903[_0xfad5('0x1e')]],'as':_0x16e903['as'],'attributes':_0x16e903[_0xfad5('0x1a')],'include':_0x16e903[_0xfad5('0x1d')]?_[_0xfad5('0x1c')](_0x16e903[_0xfad5('0x1d')],function(_0x45c149){return{'model':db[_0x45c149[_0xfad5('0x1e')]],'as':_0x45c149['as'],'attributes':_0x45c149['attributes'],'include':_0x45c149[_0xfad5('0x1d')]?_[_0xfad5('0x1c')](_0x45c149[_0xfad5('0x1d')],function(_0xc772e6){return{'model':db[_0xc772e6[_0xfad5('0x1e')]],'as':_0xc772e6['as'],'attributes':_0xc772e6['attributes']};}):[]};}):[]};}):[]:[]})[_0xfad5('0xd')](function(_0x3d9d95){logger[_0xfad5('0xe')]('GetZohoAccount',_0x10ae77);logger[_0xfad5('0x11')]('GetZohoAccount',_0x10ae77,JSON[_0xfad5('0x13')](_0x3d9d95));_0x259766(_0x3d9d95);})[_0xfad5('0x16')](function(_0x30ce5b){logger['error'](_0xfad5('0x17'),_0x30ce5b['message'],_0x10ae77);_0x558590(_0x2fc3ed['error'](0x1f4,_0x30ce5b['message']));});});};exports[_0xfad5('0x1f')]=function(_0x1f5329){var _0x3c3f0f=this;return new Promise(function(_0x1133fd,_0x1e789a){return db[_0xfad5('0x20')][_0xfad5('0x21')]({'raw':_0x1f5329[_0xfad5('0x19')]?_0x1f5329[_0xfad5('0x19')][_0xfad5('0x22')]===undefined?!![]:![]:!![],'where':_0x1f5329['options']?_0x1f5329[_0xfad5('0x19')][_0xfad5('0x23')]||null:null,'attributes':_0x1f5329[_0xfad5('0x19')]?_0x1f5329['options'][_0xfad5('0x1a')]||null:null,'include':_0x1f5329[_0xfad5('0x19')]?_0x1f5329[_0xfad5('0x19')][_0xfad5('0x1d')]?_['map'](_0x1f5329[_0xfad5('0x19')][_0xfad5('0x1d')],function(_0x147aa6){return{'model':db[_0x147aa6[_0xfad5('0x1e')]],'as':_0x147aa6['as'],'attributes':_0x147aa6[_0xfad5('0x1a')],'include':_0x147aa6['include']?_[_0xfad5('0x1c')](_0x147aa6[_0xfad5('0x1d')],function(_0x37fff5){return{'model':db[_0x37fff5['model']],'as':_0x37fff5['as'],'attributes':_0x37fff5[_0xfad5('0x1a')],'include':_0x37fff5[_0xfad5('0x1d')]?_['map'](_0x37fff5['include'],function(_0x334b10){return{'model':db[_0x334b10[_0xfad5('0x1e')]],'as':_0x334b10['as'],'attributes':_0x334b10[_0xfad5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xfad5('0xd')](function(_0x232192){logger[_0xfad5('0xe')](_0xfad5('0x1f'),_0x1f5329);logger['debug'](_0xfad5('0x1f'),_0x1f5329,JSON[_0xfad5('0x13')](_0x232192));_0x1133fd(_0x232192);})[_0xfad5('0x16')](function(_0x3aa0e2){logger[_0xfad5('0x14')]('ShowZohoAccount',_0x3aa0e2[_0xfad5('0x15')],_0x1f5329);_0x1e789a(_0x3c3f0f[_0xfad5('0x14')](0x1f4,_0x3aa0e2['message']));});});};
\ No newline at end of file
+var _0x2272=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoAccount,\x20%s,\x20%s','message','result','catch','GetZohoAccount','ZohoAccount','findAll','options','where','attributes','limit','include','map','model','raw','ShowZohoAccount'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_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});function respondWithRpcPromise(_0x2591db,_0xaec623,_0x1413d2){return new BPromise(function(_0x41fc3f,_0x34bdd0){return client[_0x2227('0xb')](_0x2591db,_0x1413d2)[_0x2227('0xc')](function(_0x496bbd){logger[_0x2227('0xd')]('ZohoAccount,\x20%s,\x20%s',_0xaec623,_0x2227('0xe'));logger[_0x2227('0xf')](_0x2227('0x10'),_0xaec623,_0x2227('0xe'),JSON[_0x2227('0x11')](_0x496bbd));if(_0x496bbd['error']){if(_0x496bbd[_0x2227('0x12')][_0x2227('0x13')]===0x1f4){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x496bbd[_0x2227('0x12')][_0x2227('0x15')]);return _0x34bdd0(_0x496bbd['error']['message']);}logger['error'](_0x2227('0x14'),_0xaec623,_0x496bbd['error'][_0x2227('0x15')]);return _0x41fc3f(_0x496bbd[_0x2227('0x12')]['message']);}else{logger[_0x2227('0xd')](_0x2227('0x14'),_0xaec623,_0x2227('0xe'));_0x41fc3f(_0x496bbd[_0x2227('0x16')][_0x2227('0x15')]);}})[_0x2227('0x17')](function(_0x508e92){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x508e92);_0x34bdd0(_0x508e92);});});}exports[_0x2227('0x18')]=function(_0x531f75){var _0x11bf80=this;return new Promise(function(_0x620012,_0x65e3b6){return db[_0x2227('0x19')][_0x2227('0x1a')]({'raw':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x531f75[_0x2227('0x1b')]?_0x531f75['options'][_0x2227('0x1c')]||null:null,'attributes':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')][_0x2227('0x1d')]||null:null,'limit':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')][_0x2227('0x1e')]||null:null,'include':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')][_0x2227('0x1f')]?_[_0x2227('0x20')](_0x531f75['options'][_0x2227('0x1f')],function(_0x42d500){return{'model':db[_0x42d500['model']],'as':_0x42d500['as'],'attributes':_0x42d500[_0x2227('0x1d')],'include':_0x42d500[_0x2227('0x1f')]?_['map'](_0x42d500['include'],function(_0x17c7a4){return{'model':db[_0x17c7a4[_0x2227('0x21')]],'as':_0x17c7a4['as'],'attributes':_0x17c7a4[_0x2227('0x1d')],'include':_0x17c7a4[_0x2227('0x1f')]?_['map'](_0x17c7a4[_0x2227('0x1f')],function(_0x301304){return{'model':db[_0x301304[_0x2227('0x21')]],'as':_0x301304['as'],'attributes':_0x301304[_0x2227('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x204def){logger[_0x2227('0xd')](_0x2227('0x18'),_0x531f75);logger[_0x2227('0xf')](_0x2227('0x18'),_0x531f75,JSON['stringify'](_0x204def));_0x620012(_0x204def);})['catch'](function(_0x5d1d56){logger[_0x2227('0x12')]('GetZohoAccount',_0x5d1d56[_0x2227('0x15')],_0x531f75);_0x65e3b6(_0x11bf80[_0x2227('0x12')](0x1f4,_0x5d1d56['message']));});});};exports['ShowZohoAccount']=function(_0x1f1ba7){var _0x1818ba=this;return new Promise(function(_0x21838a,_0x4cc1e1){return db[_0x2227('0x19')]['find']({'raw':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x22')]===undefined?!![]:![]:!![],'where':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x1c')]||null:null,'attributes':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x1d')]||null:null,'include':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')]['include']?_[_0x2227('0x20')](_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x1f')],function(_0x6cd5d7){return{'model':db[_0x6cd5d7['model']],'as':_0x6cd5d7['as'],'attributes':_0x6cd5d7[_0x2227('0x1d')],'include':_0x6cd5d7[_0x2227('0x1f')]?_[_0x2227('0x20')](_0x6cd5d7[_0x2227('0x1f')],function(_0x5186a6){return{'model':db[_0x5186a6[_0x2227('0x21')]],'as':_0x5186a6['as'],'attributes':_0x5186a6[_0x2227('0x1d')],'include':_0x5186a6[_0x2227('0x1f')]?_['map'](_0x5186a6['include'],function(_0x35d9f1){return{'model':db[_0x35d9f1[_0x2227('0x21')]],'as':_0x35d9f1['as'],'attributes':_0x35d9f1['attributes']};}):[]};}):[]};}):[]:[]})[_0x2227('0xc')](function(_0x9a8cc3){logger['info'](_0x2227('0x23'),_0x1f1ba7);logger['debug'](_0x2227('0x23'),_0x1f1ba7,JSON[_0x2227('0x11')](_0x9a8cc3));_0x21838a(_0x9a8cc3);})[_0x2227('0x17')](function(_0x36db00){logger['error'](_0x2227('0x23'),_0x36db00['message'],_0x1f1ba7);_0x4cc1e1(_0x1818ba[_0x2227('0x12')](0x1f4,_0x36db00[_0x2227('0x15')]));});});};
\ No newline at end of file
index f992da0..ed795a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x502b=['create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post'];(function(_0x2ea7ee,_0x3ce8eb){var _0x1e73b6=function(_0x17fb03){while(--_0x17fb03){_0x2ea7ee['push'](_0x2ea7ee['shift']());}};_0x1e73b6(++_0x3ce8eb);}(_0x502b,0x157));var _0xb502=function(_0x40df5f,_0x8fd59f){_0x40df5f=_0x40df5f-0x0;var _0x1573f1=_0x502b[_0x40df5f];return _0x1573f1;};'use strict';var multer=require(_0xb502('0x0'));var util=require(_0xb502('0x1'));var path=require(_0xb502('0x2'));var timeout=require(_0xb502('0x3'));var express=require(_0xb502('0x4'));var router=express[_0xb502('0x5')]();var fs_extra=require(_0xb502('0x6'));var auth=require(_0xb502('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xb502('0x8'));var controller=require(_0xb502('0x9'));router[_0xb502('0xa')]('/',auth[_0xb502('0xb')](),controller[_0xb502('0xc')]);router[_0xb502('0xa')](_0xb502('0xd'),auth['isAuthenticated'](),controller[_0xb502('0xe')]);router['get'](_0xb502('0xf'),auth[_0xb502('0xb')](),controller['getFields']);router[_0xb502('0xa')](_0xb502('0x10'),auth[_0xb502('0xb')](),controller[_0xb502('0x11')]);router[_0xb502('0xa')](_0xb502('0x12'),auth['isAuthenticated'](),controller[_0xb502('0x13')]);router[_0xb502('0x14')]('/',auth['isAuthenticated'](),controller[_0xb502('0x15')]);router[_0xb502('0x16')](_0xb502('0xd'),auth['isAuthenticated'](),controller[_0xb502('0x17')]);router[_0xb502('0x18')](_0xb502('0xd'),auth['isAuthenticated'](),controller[_0xb502('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0xca01=['/:id','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../config/environment','./intZohoConfiguration.controller','index','get','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put'];(function(_0x5ccb02,_0x3588fb){var _0x52a833=function(_0x1b61d5){while(--_0x1b61d5){_0x5ccb02['push'](_0x5ccb02['shift']());}};_0x52a833(++_0x3588fb);}(_0xca01,0xea));var _0x1ca0=function(_0x599b01,_0x30ffcb){_0x599b01=_0x599b01-0x0;var _0x1f9578=_0xca01[_0x599b01];return _0x1f9578;};'use strict';var multer=require(_0x1ca0('0x0'));var util=require(_0x1ca0('0x1'));var path=require('path');var timeout=require(_0x1ca0('0x2'));var express=require(_0x1ca0('0x3'));var router=express['Router']();var fs_extra=require(_0x1ca0('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1ca0('0x5'));var controller=require(_0x1ca0('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x1ca0('0x7')]);router[_0x1ca0('0x8')]('/:id',auth[_0x1ca0('0x9')](),controller[_0x1ca0('0xa')]);router[_0x1ca0('0x8')](_0x1ca0('0xb'),auth[_0x1ca0('0x9')](),controller[_0x1ca0('0xc')]);router[_0x1ca0('0x8')](_0x1ca0('0xd'),auth[_0x1ca0('0x9')](),controller['getSubjects']);router[_0x1ca0('0x8')](_0x1ca0('0xe'),auth[_0x1ca0('0x9')](),controller[_0x1ca0('0xf')]);router[_0x1ca0('0x10')]('/',auth[_0x1ca0('0x9')](),controller[_0x1ca0('0x11')]);router[_0x1ca0('0x12')](_0x1ca0('0x13'),auth[_0x1ca0('0x9')](),controller[_0x1ca0('0x14')]);router['delete'](_0x1ca0('0x13'),auth['isAuthenticated'](),controller[_0x1ca0('0x15')]);module[_0x1ca0('0x16')]=router;
\ No newline at end of file
index 7da5243..9d89152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x786f=['contact_lead','STRING','sequelize','exports','ENUM','lead'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x786f,0xc8));var _0xf786=function(_0x1ae491,_0x5b83b9){_0x1ae491=_0x1ae491-0x0;var _0x4958a5=_0x786f[_0x1ae491];return _0x4958a5;};'use strict';var Sequelize=require(_0xf786('0x0'));module[_0xf786('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xf786('0x2')](_0xf786('0x3'),'contact','nothing'),'defaultValue':_0xf786('0x3')},'moduleSearch':{'type':Sequelize[_0xf786('0x2')](_0xf786('0x4'),'contact',_0xf786('0x3')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0xf786('0x5')]}};
\ No newline at end of file
+var _0x1976=['exports','ENUM','contact','nothing','lead','contact_lead','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1976,0x1e3));var _0x6197=function(_0x2f5d4d,_0x4e4c9){_0x2f5d4d=_0x2f5d4d-0x0;var _0x3aae68=_0x1976[_0x2f5d4d];return _0x3aae68;};'use strict';var Sequelize=require('sequelize');module[_0x6197('0x0')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0x6197('0x1')]('lead',_0x6197('0x2'),_0x6197('0x3')),'defaultValue':_0x6197('0x4')},'moduleSearch':{'type':Sequelize[_0x6197('0x1')](_0x6197('0x5'),'contact',_0x6197('0x4')),'defaultValue':_0x6197('0x5')},'description':{'type':Sequelize[_0x6197('0x6')]}};
\ No newline at end of file
index 6fc823b..6d21ed4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd3b=['then','sendStatus','stack','name','send','map','ZohoConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','update','destroy','getFields','findOne','ZohoField','order','getSubjects','getDescriptions','eml-format','rimraf','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','offset','undefined','limit','count','set','Content-Range','json','save'];(function(_0x173e02,_0x1522ff){var _0x5d5dc8=function(_0x529415){while(--_0x529415){_0x173e02['push'](_0x173e02['shift']());}};_0x5d5dc8(++_0x1522ff);}(_0xfd3b,0x169));var _0xbfd3=function(_0xf8d45b,_0x5039ce){_0xf8d45b=_0xf8d45b-0x0;var _0x1a7720=_0xfd3b[_0xf8d45b];return _0x1a7720;};'use strict';var emlformat=require(_0xbfd3('0x0'));var rimraf=require(_0xbfd3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xbfd3('0x2'));var Mustache=require(_0xbfd3('0x3'));var util=require(_0xbfd3('0x4'));var path=require(_0xbfd3('0x5'));var sox=require(_0xbfd3('0x6'));var csv=require(_0xbfd3('0x7'));var ejs=require(_0xbfd3('0x8'));var fs=require('fs');var fs_extra=require(_0xbfd3('0x9'));var _=require(_0xbfd3('0xa'));var squel=require('squel');var crypto=require(_0xbfd3('0xb'));var jsforce=require(_0xbfd3('0xc'));var deskjs=require(_0xbfd3('0xd'));var toCsv=require(_0xbfd3('0x7'));var querystring=require(_0xbfd3('0xe'));var Papa=require('papaparse');var Redis=require(_0xbfd3('0xf'));var authService=require(_0xbfd3('0x10'));var qs=require(_0xbfd3('0x11'));var as=require(_0xbfd3('0x12'));var hardwareService=require(_0xbfd3('0x13'));var logger=require(_0xbfd3('0x14'))('api');var utils=require(_0xbfd3('0x15'));var config=require(_0xbfd3('0x16'));var licenseUtil=require(_0xbfd3('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x26d510,_0x2fd876){_0x2fd876=_0x2fd876||0xcc;return function(_0xe5b799){if(_0xe5b799){return _0x26d510['sendStatus'](_0x2fd876);}return _0x26d510[_0xbfd3('0x18')](_0x2fd876)[_0xbfd3('0x19')]();};}function respondWithResult(_0x4421ca,_0x18f1c0){_0x18f1c0=_0x18f1c0||0xc8;return function(_0x1ca24d){if(_0x1ca24d){return _0x4421ca[_0xbfd3('0x18')](_0x18f1c0)['json'](_0x1ca24d);}};}function respondWithFilteredResult(_0x49559b,_0xacf94d){return function(_0x253b28){if(_0x253b28){var _0x8334b2=typeof _0xacf94d[_0xbfd3('0x1a')]===_0xbfd3('0x1b')&&typeof _0xacf94d[_0xbfd3('0x1c')]===_0xbfd3('0x1b');var _0x547a65=_0x253b28['count'];var _0x1e78dc=_0x8334b2?0x0:_0xacf94d[_0xbfd3('0x1a')];var _0x5b786b=_0x8334b2?_0x253b28[_0xbfd3('0x1d')]:_0xacf94d['offset']+_0xacf94d[_0xbfd3('0x1c')];var _0x2fdcdd;if(_0x5b786b>=_0x547a65){_0x5b786b=_0x547a65;_0x2fdcdd=0xc8;}else{_0x2fdcdd=0xce;}_0x49559b['status'](_0x2fdcdd);return _0x49559b[_0xbfd3('0x1e')](_0xbfd3('0x1f'),_0x1e78dc+'-'+_0x5b786b+'/'+_0x547a65)[_0xbfd3('0x20')](_0x253b28);}return null;};}function patchUpdates(_0x7f602e){return function(_0x2dd266){try{jsonpatch['apply'](_0x2dd266,_0x7f602e,!![]);}catch(_0xd878d1){return BPromise['reject'](_0xd878d1);}return _0x2dd266[_0xbfd3('0x21')]();};}function saveUpdates(_0x36b64b,_0x25172e){return function(_0x281b40){if(_0x281b40){return _0x281b40['update'](_0x36b64b)[_0xbfd3('0x22')](function(_0x540eed){return _0x540eed;});}return null;};}function removeEntity(_0x414976,_0x41ffa3){return function(_0x2690f8){if(_0x2690f8){return _0x2690f8['destroy']()[_0xbfd3('0x22')](function(){_0x414976['status'](0xcc)[_0xbfd3('0x19')]();});}};}function handleEntityNotFound(_0x10fb68,_0xe05011){return function(_0x1796f1){if(!_0x1796f1){_0x10fb68[_0xbfd3('0x23')](0x194);}return _0x1796f1;};}function handleError(_0x2510c4,_0x2e1181){_0x2e1181=_0x2e1181||0x1f4;return function(_0x52d166){logger['error'](_0x52d166[_0xbfd3('0x24')]);if(_0x52d166[_0xbfd3('0x25')]){delete _0x52d166['name'];}_0x2510c4[_0xbfd3('0x18')](_0x2e1181)[_0xbfd3('0x26')](_0x52d166);};}exports['index']=function(_0x382c7b,_0x4fe63b){var _0x1ae39e={},_0x3203c9={},_0x4a070e={'count':0x0,'rows':[]};var _0x534d3f=_[_0xbfd3('0x27')](db[_0xbfd3('0x28')][_0xbfd3('0x29')],function(_0x2065c0){return{'name':_0x2065c0['fieldName'],'type':_0x2065c0[_0xbfd3('0x2a')][_0xbfd3('0x2b')]};});_0x3203c9[_0xbfd3('0x2c')]=_[_0xbfd3('0x27')](_0x534d3f,_0xbfd3('0x25'));_0x3203c9[_0xbfd3('0x2d')]=_[_0xbfd3('0x2e')](_0x382c7b[_0xbfd3('0x2d')]);_0x3203c9[_0xbfd3('0x2f')]=_[_0xbfd3('0x30')](_0x3203c9[_0xbfd3('0x2c')],_0x3203c9[_0xbfd3('0x2d')]);_0x1ae39e[_0xbfd3('0x31')]=_[_0xbfd3('0x30')](_0x3203c9[_0xbfd3('0x2c')],qs['fields'](_0x382c7b['query'][_0xbfd3('0x32')]));_0x1ae39e[_0xbfd3('0x31')]=_0x1ae39e[_0xbfd3('0x31')][_0xbfd3('0x33')]?_0x1ae39e[_0xbfd3('0x31')]:_0x3203c9[_0xbfd3('0x2c')];if(!_0x382c7b[_0xbfd3('0x2d')][_0xbfd3('0x34')](_0xbfd3('0x35'))){_0x1ae39e[_0xbfd3('0x1c')]=qs[_0xbfd3('0x1c')](_0x382c7b[_0xbfd3('0x2d')][_0xbfd3('0x1c')]);_0x1ae39e[_0xbfd3('0x1a')]=qs[_0xbfd3('0x1a')](_0x382c7b[_0xbfd3('0x2d')][_0xbfd3('0x1a')]);}_0x1ae39e['order']=qs[_0xbfd3('0x36')](_0x382c7b[_0xbfd3('0x2d')][_0xbfd3('0x36')]);_0x1ae39e[_0xbfd3('0x37')]=qs['filters'](_[_0xbfd3('0x38')](_0x382c7b['query'],_0x3203c9[_0xbfd3('0x2f')]),_0x534d3f);if(_0x382c7b[_0xbfd3('0x2d')][_0xbfd3('0x39')]){_0x1ae39e['where']=_['merge'](_0x1ae39e[_0xbfd3('0x37')],{'$or':_[_0xbfd3('0x27')](_0x534d3f,function(_0x2bebc5){if(_0x2bebc5['type']!==_0xbfd3('0x3a')){var _0x140503={};_0x140503[_0x2bebc5['name']]={'$like':'%'+_0x382c7b['query'][_0xbfd3('0x39')]+'%'};return _0x140503;}})});}_0x1ae39e=_['merge']({},_0x1ae39e,_0x382c7b[_0xbfd3('0x3b')]);var _0x5173ed={'where':_0x1ae39e['where']};return db[_0xbfd3('0x28')]['count'](_0x5173ed)[_0xbfd3('0x22')](function(_0x51ea65){_0x4a070e[_0xbfd3('0x1d')]=_0x51ea65;if(_0x382c7b['query'][_0xbfd3('0x3c')]){_0x1ae39e[_0xbfd3('0x3d')]=[{'all':!![]}];}return db[_0xbfd3('0x28')][_0xbfd3('0x3e')](_0x1ae39e);})['then'](function(_0x2087a6){_0x4a070e[_0xbfd3('0x3f')]=_0x2087a6;return _0x4a070e;})['then'](respondWithFilteredResult(_0x4fe63b,_0x1ae39e))[_0xbfd3('0x40')](handleError(_0x4fe63b,null));};exports[_0xbfd3('0x41')]=function(_0x553b98,_0x56e8f1){var _0x3aeb39={'raw':![],'where':{'id':_0x553b98[_0xbfd3('0x42')]['id']}},_0x3b54e0={};_0x3b54e0[_0xbfd3('0x2c')]=_['keys'](db[_0xbfd3('0x28')]['rawAttributes']);_0x3b54e0['query']=_[_0xbfd3('0x2e')](_0x553b98[_0xbfd3('0x2d')]);_0x3b54e0[_0xbfd3('0x2f')]=_[_0xbfd3('0x30')](_0x3b54e0[_0xbfd3('0x2c')],_0x3b54e0['query']);_0x3aeb39[_0xbfd3('0x31')]=_[_0xbfd3('0x30')](_0x3b54e0[_0xbfd3('0x2c')],qs[_0xbfd3('0x32')](_0x553b98[_0xbfd3('0x2d')][_0xbfd3('0x32')]));_0x3aeb39[_0xbfd3('0x31')]=_0x3aeb39[_0xbfd3('0x31')]['length']?_0x3aeb39[_0xbfd3('0x31')]:_0x3b54e0[_0xbfd3('0x2c')];if(_0x553b98[_0xbfd3('0x2d')]['includeAll']){_0x3aeb39[_0xbfd3('0x3d')]=[{'all':!![]}];}_0x3aeb39=_[_0xbfd3('0x43')]({},_0x3aeb39,_0x553b98['options']);return db[_0xbfd3('0x28')][_0xbfd3('0x44')](_0x3aeb39)[_0xbfd3('0x22')](handleEntityNotFound(_0x56e8f1,null))[_0xbfd3('0x22')](respondWithResult(_0x56e8f1,null))['catch'](handleError(_0x56e8f1,null));};exports[_0xbfd3('0x45')]=function(_0x5dfdb1,_0x5ee04c){return db[_0xbfd3('0x28')][_0xbfd3('0x45')](_0x5dfdb1[_0xbfd3('0x46')],{})[_0xbfd3('0x22')](respondWithResult(_0x5ee04c,0xc9))[_0xbfd3('0x40')](handleError(_0x5ee04c,null));};exports[_0xbfd3('0x47')]=function(_0x46ce2e,_0xb95512){if(_0x46ce2e['body']['id']){delete _0x46ce2e[_0xbfd3('0x46')]['id'];}return db[_0xbfd3('0x28')][_0xbfd3('0x44')]({'where':{'id':_0x46ce2e['params']['id']}})[_0xbfd3('0x22')](handleEntityNotFound(_0xb95512,null))['then'](saveUpdates(_0x46ce2e[_0xbfd3('0x46')],null))['then'](respondWithResult(_0xb95512,null))['catch'](handleError(_0xb95512,null));};exports[_0xbfd3('0x48')]=function(_0x737723,_0x1cff06){return db[_0xbfd3('0x28')]['find']({'where':{'id':_0x737723['params']['id']}})[_0xbfd3('0x22')](handleEntityNotFound(_0x1cff06,null))['then'](removeEntity(_0x1cff06,null))[_0xbfd3('0x40')](handleError(_0x1cff06,null));};exports[_0xbfd3('0x49')]=function(_0x792507,_0x51b78a,_0x4cf96c){var _0x70ce37={};var _0x26e8ab={};var _0x45b166;var _0x14617b;return db[_0xbfd3('0x28')][_0xbfd3('0x4a')]({'where':{'id':_0x792507[_0xbfd3('0x42')]['id']}})[_0xbfd3('0x22')](handleEntityNotFound(_0x51b78a,null))[_0xbfd3('0x22')](function(_0x43f901){if(_0x43f901){_0x45b166=_0x43f901;_0x26e8ab[_0xbfd3('0x2c')]=_[_0xbfd3('0x2e')](db[_0xbfd3('0x4b')][_0xbfd3('0x29')]);_0x26e8ab[_0xbfd3('0x2d')]=_['keys'](_0x792507[_0xbfd3('0x2d')]);_0x26e8ab[_0xbfd3('0x2f')]=_[_0xbfd3('0x30')](_0x26e8ab[_0xbfd3('0x2c')],_0x26e8ab[_0xbfd3('0x2d')]);_0x70ce37[_0xbfd3('0x31')]=_[_0xbfd3('0x30')](_0x26e8ab['model'],qs['fields'](_0x792507[_0xbfd3('0x2d')][_0xbfd3('0x32')]));_0x70ce37[_0xbfd3('0x31')]=_0x70ce37['attributes'][_0xbfd3('0x33')]?_0x70ce37[_0xbfd3('0x31')]:_0x26e8ab[_0xbfd3('0x2c')];_0x70ce37[_0xbfd3('0x4c')]=qs[_0xbfd3('0x36')](_0x792507['query'][_0xbfd3('0x36')]);_0x70ce37['where']=qs[_0xbfd3('0x2f')](_[_0xbfd3('0x38')](_0x792507[_0xbfd3('0x2d')],_0x26e8ab[_0xbfd3('0x2f')]));if(_0x792507[_0xbfd3('0x2d')][_0xbfd3('0x39')]){_0x70ce37[_0xbfd3('0x37')]=_[_0xbfd3('0x43')](_0x70ce37[_0xbfd3('0x37')],{'$or':_[_0xbfd3('0x27')](_0x70ce37[_0xbfd3('0x31')],function(_0x2445a2){var _0x2b9164={};_0x2b9164[_0x2445a2]={'$like':'%'+_0x792507[_0xbfd3('0x2d')][_0xbfd3('0x39')]+'%'};return _0x2b9164;})});}_0x70ce37=_['merge']({},_0x70ce37,_0x792507[_0xbfd3('0x3b')]);return _0x45b166[_0xbfd3('0x49')](_0x70ce37);}})[_0xbfd3('0x22')](function(_0x6b6014){if(_0x6b6014){_0x14617b=_0x6b6014[_0xbfd3('0x33')];if(!_0x792507[_0xbfd3('0x2d')][_0xbfd3('0x34')]('nolimit')){_0x70ce37[_0xbfd3('0x1c')]=qs[_0xbfd3('0x1c')](_0x792507[_0xbfd3('0x2d')][_0xbfd3('0x1c')]);_0x70ce37[_0xbfd3('0x1a')]=qs['offset'](_0x792507[_0xbfd3('0x2d')][_0xbfd3('0x1a')]);}return _0x45b166[_0xbfd3('0x49')](_0x70ce37);}})[_0xbfd3('0x22')](function(_0x149a69){if(_0x149a69){return _0x149a69?{'count':_0x14617b,'rows':_0x149a69}:null;}})[_0xbfd3('0x22')](respondWithResult(_0x51b78a,null))[_0xbfd3('0x40')](handleError(_0x51b78a,null));};exports[_0xbfd3('0x4d')]=function(_0x29dee5,_0x109d45,_0x2faff7){var _0x9229bb={};var _0x13f750={};var _0xc3f74c;var _0x25350d;return db[_0xbfd3('0x28')][_0xbfd3('0x4a')]({'where':{'id':_0x29dee5[_0xbfd3('0x42')]['id']}})[_0xbfd3('0x22')](handleEntityNotFound(_0x109d45,null))[_0xbfd3('0x22')](function(_0xf7e43a){if(_0xf7e43a){_0xc3f74c=_0xf7e43a;_0x13f750[_0xbfd3('0x2c')]=_[_0xbfd3('0x2e')](db['ZohoField'][_0xbfd3('0x29')]);_0x13f750[_0xbfd3('0x2d')]=_['keys'](_0x29dee5[_0xbfd3('0x2d')]);_0x13f750['filters']=_[_0xbfd3('0x30')](_0x13f750['model'],_0x13f750[_0xbfd3('0x2d')]);_0x9229bb[_0xbfd3('0x31')]=_[_0xbfd3('0x30')](_0x13f750[_0xbfd3('0x2c')],qs['fields'](_0x29dee5['query'][_0xbfd3('0x32')]));_0x9229bb[_0xbfd3('0x31')]=_0x9229bb['attributes'][_0xbfd3('0x33')]?_0x9229bb['attributes']:_0x13f750['model'];_0x9229bb[_0xbfd3('0x4c')]=qs[_0xbfd3('0x36')](_0x29dee5[_0xbfd3('0x2d')][_0xbfd3('0x36')]);_0x9229bb[_0xbfd3('0x37')]=qs[_0xbfd3('0x2f')](_[_0xbfd3('0x38')](_0x29dee5[_0xbfd3('0x2d')],_0x13f750[_0xbfd3('0x2f')]));if(_0x29dee5[_0xbfd3('0x2d')][_0xbfd3('0x39')]){_0x9229bb[_0xbfd3('0x37')]=_[_0xbfd3('0x43')](_0x9229bb['where'],{'$or':_[_0xbfd3('0x27')](_0x9229bb[_0xbfd3('0x31')],function(_0x1d7d77){var _0x474100={};_0x474100[_0x1d7d77]={'$like':'%'+_0x29dee5[_0xbfd3('0x2d')][_0xbfd3('0x39')]+'%'};return _0x474100;})});}_0x9229bb=_['merge']({},_0x9229bb,_0x29dee5['options']);return _0xc3f74c[_0xbfd3('0x4d')](_0x9229bb);}})[_0xbfd3('0x22')](function(_0x7d956c){if(_0x7d956c){_0x25350d=_0x7d956c['length'];if(!_0x29dee5[_0xbfd3('0x2d')][_0xbfd3('0x34')](_0xbfd3('0x35'))){_0x9229bb[_0xbfd3('0x1c')]=qs[_0xbfd3('0x1c')](_0x29dee5['query'][_0xbfd3('0x1c')]);_0x9229bb[_0xbfd3('0x1a')]=qs[_0xbfd3('0x1a')](_0x29dee5[_0xbfd3('0x2d')][_0xbfd3('0x1a')]);}return _0xc3f74c['getSubjects'](_0x9229bb);}})[_0xbfd3('0x22')](function(_0x1cad86){if(_0x1cad86){return _0x1cad86?{'count':_0x25350d,'rows':_0x1cad86}:null;}})[_0xbfd3('0x22')](respondWithResult(_0x109d45,null))[_0xbfd3('0x40')](handleError(_0x109d45,null));};exports[_0xbfd3('0x4e')]=function(_0x3479c4,_0x53841e,_0x1a4dc4){var _0xc773d7={};var _0x3a67a6={};var _0x535caa;var _0x2ccdf0;return db[_0xbfd3('0x28')]['findOne']({'where':{'id':_0x3479c4[_0xbfd3('0x42')]['id']}})[_0xbfd3('0x22')](handleEntityNotFound(_0x53841e,null))['then'](function(_0x4f90c2){if(_0x4f90c2){_0x535caa=_0x4f90c2;_0x3a67a6['model']=_[_0xbfd3('0x2e')](db['ZohoField'][_0xbfd3('0x29')]);_0x3a67a6['query']=_[_0xbfd3('0x2e')](_0x3479c4[_0xbfd3('0x2d')]);_0x3a67a6['filters']=_[_0xbfd3('0x30')](_0x3a67a6['model'],_0x3a67a6[_0xbfd3('0x2d')]);_0xc773d7[_0xbfd3('0x31')]=_[_0xbfd3('0x30')](_0x3a67a6['model'],qs[_0xbfd3('0x32')](_0x3479c4[_0xbfd3('0x2d')]['fields']));_0xc773d7[_0xbfd3('0x31')]=_0xc773d7[_0xbfd3('0x31')][_0xbfd3('0x33')]?_0xc773d7['attributes']:_0x3a67a6[_0xbfd3('0x2c')];_0xc773d7[_0xbfd3('0x4c')]=qs['sort'](_0x3479c4[_0xbfd3('0x2d')][_0xbfd3('0x36')]);_0xc773d7[_0xbfd3('0x37')]=qs['filters'](_[_0xbfd3('0x38')](_0x3479c4[_0xbfd3('0x2d')],_0x3a67a6[_0xbfd3('0x2f')]));if(_0x3479c4[_0xbfd3('0x2d')]['filter']){_0xc773d7[_0xbfd3('0x37')]=_[_0xbfd3('0x43')](_0xc773d7[_0xbfd3('0x37')],{'$or':_[_0xbfd3('0x27')](_0xc773d7[_0xbfd3('0x31')],function(_0x4cc7dc){var _0x2f38e5={};_0x2f38e5[_0x4cc7dc]={'$like':'%'+_0x3479c4['query'][_0xbfd3('0x39')]+'%'};return _0x2f38e5;})});}_0xc773d7=_[_0xbfd3('0x43')]({},_0xc773d7,_0x3479c4['options']);return _0x535caa[_0xbfd3('0x4e')](_0xc773d7);}})[_0xbfd3('0x22')](function(_0x52fbb3){if(_0x52fbb3){_0x2ccdf0=_0x52fbb3[_0xbfd3('0x33')];if(!_0x3479c4[_0xbfd3('0x2d')][_0xbfd3('0x34')](_0xbfd3('0x35'))){_0xc773d7[_0xbfd3('0x1c')]=qs[_0xbfd3('0x1c')](_0x3479c4[_0xbfd3('0x2d')]['limit']);_0xc773d7[_0xbfd3('0x1a')]=qs[_0xbfd3('0x1a')](_0x3479c4[_0xbfd3('0x2d')][_0xbfd3('0x1a')]);}return _0x535caa[_0xbfd3('0x4e')](_0xc773d7);}})[_0xbfd3('0x22')](function(_0x1e2c2e){if(_0x1e2c2e){return _0x1e2c2e?{'count':_0x2ccdf0,'rows':_0x1e2c2e}:null;}})[_0xbfd3('0x22')](respondWithResult(_0x53841e,null))['catch'](handleError(_0x53841e,null));};
\ No newline at end of file
+var _0xee71=['rows','catch','params','includeAll','create','body','find','ZohoField','getFields','findOne','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','destroy','error','stack','name','index','map','ZohoConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll'];(function(_0x418549,_0x11b13d){var _0x288826=function(_0x3c0411){while(--_0x3c0411){_0x418549['push'](_0x418549['shift']());}};_0x288826(++_0x11b13d);}(_0xee71,0xb2));var _0x1ee7=function(_0x3270f7,_0x4a28b7){_0x3270f7=_0x3270f7-0x0;var _0x189aa1=_0xee71[_0x3270f7];return _0x189aa1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1ee7('0x0'));var zipdir=require(_0x1ee7('0x1'));var jsonpatch=require(_0x1ee7('0x2'));var rp=require(_0x1ee7('0x3'));var moment=require(_0x1ee7('0x4'));var BPromise=require(_0x1ee7('0x5'));var Mustache=require(_0x1ee7('0x6'));var util=require('util');var path=require(_0x1ee7('0x7'));var sox=require(_0x1ee7('0x8'));var csv=require(_0x1ee7('0x9'));var ejs=require(_0x1ee7('0xa'));var fs=require('fs');var fs_extra=require(_0x1ee7('0xb'));var _=require(_0x1ee7('0xc'));var squel=require(_0x1ee7('0xd'));var crypto=require(_0x1ee7('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x1ee7('0xf'));var toCsv=require(_0x1ee7('0x9'));var querystring=require('querystring');var Papa=require(_0x1ee7('0x10'));var Redis=require(_0x1ee7('0x11'));var authService=require(_0x1ee7('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1ee7('0x13'));var hardwareService=require(_0x1ee7('0x14'));var logger=require(_0x1ee7('0x15'))(_0x1ee7('0x16'));var utils=require(_0x1ee7('0x17'));var config=require(_0x1ee7('0x18'));var licenseUtil=require(_0x1ee7('0x19'));var db=require(_0x1ee7('0x1a'))['db'];function respondWithStatusCode(_0x5d0b3d,_0x3cf833){_0x3cf833=_0x3cf833||0xcc;return function(_0x290746){if(_0x290746){return _0x5d0b3d[_0x1ee7('0x1b')](_0x3cf833);}return _0x5d0b3d['status'](_0x3cf833)[_0x1ee7('0x1c')]();};}function respondWithResult(_0xcc238b,_0x164e7d){_0x164e7d=_0x164e7d||0xc8;return function(_0x739e76){if(_0x739e76){return _0xcc238b[_0x1ee7('0x1d')](_0x164e7d)['json'](_0x739e76);}};}function respondWithFilteredResult(_0xf14c3b,_0x38f051){return function(_0x392f9e){if(_0x392f9e){var _0x17adea=typeof _0x38f051[_0x1ee7('0x1e')]==='undefined'&&typeof _0x38f051[_0x1ee7('0x1f')]===_0x1ee7('0x20');var _0x2bf7ff=_0x392f9e[_0x1ee7('0x21')];var _0x5ecfe2=_0x17adea?0x0:_0x38f051['offset'];var _0x2350c2=_0x17adea?_0x392f9e['count']:_0x38f051[_0x1ee7('0x1e')]+_0x38f051[_0x1ee7('0x1f')];var _0x38fba9;if(_0x2350c2>=_0x2bf7ff){_0x2350c2=_0x2bf7ff;_0x38fba9=0xc8;}else{_0x38fba9=0xce;}_0xf14c3b[_0x1ee7('0x1d')](_0x38fba9);return _0xf14c3b[_0x1ee7('0x22')](_0x1ee7('0x23'),_0x5ecfe2+'-'+_0x2350c2+'/'+_0x2bf7ff)[_0x1ee7('0x24')](_0x392f9e);}return null;};}function patchUpdates(_0xadf921){return function(_0x31efe8){try{jsonpatch[_0x1ee7('0x25')](_0x31efe8,_0xadf921,!![]);}catch(_0x45fcca){return BPromise[_0x1ee7('0x26')](_0x45fcca);}return _0x31efe8[_0x1ee7('0x27')]();};}function saveUpdates(_0x3879c3,_0x4f87b6){return function(_0xb3f105){if(_0xb3f105){return _0xb3f105['update'](_0x3879c3)[_0x1ee7('0x28')](function(_0x3c7ce8){return _0x3c7ce8;});}return null;};}function removeEntity(_0x1c375f,_0x381dd1){return function(_0x337827){if(_0x337827){return _0x337827[_0x1ee7('0x29')]()[_0x1ee7('0x28')](function(){_0x1c375f['status'](0xcc)[_0x1ee7('0x1c')]();});}};}function handleEntityNotFound(_0x426b4c,_0x4c73e3){return function(_0x5d307f){if(!_0x5d307f){_0x426b4c['sendStatus'](0x194);}return _0x5d307f;};}function handleError(_0x9974d6,_0x22b958){_0x22b958=_0x22b958||0x1f4;return function(_0x412dab){logger[_0x1ee7('0x2a')](_0x412dab[_0x1ee7('0x2b')]);if(_0x412dab[_0x1ee7('0x2c')]){delete _0x412dab[_0x1ee7('0x2c')];}_0x9974d6['status'](_0x22b958)['send'](_0x412dab);};}exports[_0x1ee7('0x2d')]=function(_0x3c22b6,_0x47f9e4){var _0x3e5458={},_0x4fc1dd={},_0x25949d={'count':0x0,'rows':[]};var _0x73e685=_[_0x1ee7('0x2e')](db[_0x1ee7('0x2f')][_0x1ee7('0x30')],function(_0x2e2cb9){return{'name':_0x2e2cb9['fieldName'],'type':_0x2e2cb9[_0x1ee7('0x31')][_0x1ee7('0x32')]};});_0x4fc1dd[_0x1ee7('0x33')]=_[_0x1ee7('0x2e')](_0x73e685,_0x1ee7('0x2c'));_0x4fc1dd[_0x1ee7('0x34')]=_[_0x1ee7('0x35')](_0x3c22b6[_0x1ee7('0x34')]);_0x4fc1dd[_0x1ee7('0x36')]=_[_0x1ee7('0x37')](_0x4fc1dd[_0x1ee7('0x33')],_0x4fc1dd[_0x1ee7('0x34')]);_0x3e5458[_0x1ee7('0x38')]=_[_0x1ee7('0x37')](_0x4fc1dd['model'],qs[_0x1ee7('0x39')](_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x39')]));_0x3e5458['attributes']=_0x3e5458[_0x1ee7('0x38')][_0x1ee7('0x3a')]?_0x3e5458[_0x1ee7('0x38')]:_0x4fc1dd['model'];if(!_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x3b')](_0x1ee7('0x3c'))){_0x3e5458[_0x1ee7('0x1f')]=qs['limit'](_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x1f')]);_0x3e5458[_0x1ee7('0x1e')]=qs[_0x1ee7('0x1e')](_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x1e')]);}_0x3e5458[_0x1ee7('0x3d')]=qs[_0x1ee7('0x3e')](_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x3e')]);_0x3e5458[_0x1ee7('0x3f')]=qs[_0x1ee7('0x36')](_[_0x1ee7('0x40')](_0x3c22b6[_0x1ee7('0x34')],_0x4fc1dd[_0x1ee7('0x36')]),_0x73e685);if(_0x3c22b6[_0x1ee7('0x34')][_0x1ee7('0x41')]){_0x3e5458['where']=_['merge'](_0x3e5458[_0x1ee7('0x3f')],{'$or':_['map'](_0x73e685,function(_0x28ffc1){if(_0x28ffc1[_0x1ee7('0x31')]!==_0x1ee7('0x42')){var _0x5909e0={};_0x5909e0[_0x28ffc1[_0x1ee7('0x2c')]]={'$like':'%'+_0x3c22b6[_0x1ee7('0x34')]['filter']+'%'};return _0x5909e0;}})});}_0x3e5458=_[_0x1ee7('0x43')]({},_0x3e5458,_0x3c22b6[_0x1ee7('0x44')]);var _0x1cb5b6={'where':_0x3e5458[_0x1ee7('0x3f')]};return db[_0x1ee7('0x2f')][_0x1ee7('0x21')](_0x1cb5b6)[_0x1ee7('0x28')](function(_0x2f80db){_0x25949d[_0x1ee7('0x21')]=_0x2f80db;if(_0x3c22b6[_0x1ee7('0x34')]['includeAll']){_0x3e5458[_0x1ee7('0x45')]=[{'all':!![]}];}return db[_0x1ee7('0x2f')][_0x1ee7('0x46')](_0x3e5458);})[_0x1ee7('0x28')](function(_0x402f36){_0x25949d[_0x1ee7('0x47')]=_0x402f36;return _0x25949d;})[_0x1ee7('0x28')](respondWithFilteredResult(_0x47f9e4,_0x3e5458))[_0x1ee7('0x48')](handleError(_0x47f9e4,null));};exports['show']=function(_0x2c9d27,_0x541822){var _0x5a8bc2={'raw':![],'where':{'id':_0x2c9d27[_0x1ee7('0x49')]['id']}},_0x7b9a0c={};_0x7b9a0c[_0x1ee7('0x33')]=_[_0x1ee7('0x35')](db[_0x1ee7('0x2f')]['rawAttributes']);_0x7b9a0c[_0x1ee7('0x34')]=_[_0x1ee7('0x35')](_0x2c9d27[_0x1ee7('0x34')]);_0x7b9a0c[_0x1ee7('0x36')]=_['intersection'](_0x7b9a0c[_0x1ee7('0x33')],_0x7b9a0c[_0x1ee7('0x34')]);_0x5a8bc2['attributes']=_[_0x1ee7('0x37')](_0x7b9a0c[_0x1ee7('0x33')],qs[_0x1ee7('0x39')](_0x2c9d27[_0x1ee7('0x34')][_0x1ee7('0x39')]));_0x5a8bc2[_0x1ee7('0x38')]=_0x5a8bc2['attributes'][_0x1ee7('0x3a')]?_0x5a8bc2[_0x1ee7('0x38')]:_0x7b9a0c['model'];if(_0x2c9d27[_0x1ee7('0x34')][_0x1ee7('0x4a')]){_0x5a8bc2[_0x1ee7('0x45')]=[{'all':!![]}];}_0x5a8bc2=_[_0x1ee7('0x43')]({},_0x5a8bc2,_0x2c9d27[_0x1ee7('0x44')]);return db[_0x1ee7('0x2f')]['find'](_0x5a8bc2)[_0x1ee7('0x28')](handleEntityNotFound(_0x541822,null))[_0x1ee7('0x28')](respondWithResult(_0x541822,null))[_0x1ee7('0x48')](handleError(_0x541822,null));};exports['create']=function(_0x17befa,_0x4eed4){return db['ZohoConfiguration'][_0x1ee7('0x4b')](_0x17befa[_0x1ee7('0x4c')],{})[_0x1ee7('0x28')](respondWithResult(_0x4eed4,0xc9))[_0x1ee7('0x48')](handleError(_0x4eed4,null));};exports['update']=function(_0x222882,_0x5419ca){if(_0x222882[_0x1ee7('0x4c')]['id']){delete _0x222882['body']['id'];}return db[_0x1ee7('0x2f')][_0x1ee7('0x4d')]({'where':{'id':_0x222882[_0x1ee7('0x49')]['id']}})[_0x1ee7('0x28')](handleEntityNotFound(_0x5419ca,null))[_0x1ee7('0x28')](saveUpdates(_0x222882[_0x1ee7('0x4c')],null))[_0x1ee7('0x28')](respondWithResult(_0x5419ca,null))['catch'](handleError(_0x5419ca,null));};exports['destroy']=function(_0x1d4b01,_0x1f52d8){return db[_0x1ee7('0x2f')][_0x1ee7('0x4d')]({'where':{'id':_0x1d4b01[_0x1ee7('0x49')]['id']}})['then'](handleEntityNotFound(_0x1f52d8,null))[_0x1ee7('0x28')](removeEntity(_0x1f52d8,null))[_0x1ee7('0x48')](handleError(_0x1f52d8,null));};exports['getFields']=function(_0x15bf68,_0x6445c,_0x3d7f5b){var _0x47a8ff={};var _0x53d096={};var _0x1f49f4;var _0xd3b018;return db[_0x1ee7('0x2f')]['findOne']({'where':{'id':_0x15bf68['params']['id']}})[_0x1ee7('0x28')](handleEntityNotFound(_0x6445c,null))[_0x1ee7('0x28')](function(_0x248457){if(_0x248457){_0x1f49f4=_0x248457;_0x53d096[_0x1ee7('0x33')]=_['keys'](db[_0x1ee7('0x4e')][_0x1ee7('0x30')]);_0x53d096[_0x1ee7('0x34')]=_[_0x1ee7('0x35')](_0x15bf68[_0x1ee7('0x34')]);_0x53d096[_0x1ee7('0x36')]=_['intersection'](_0x53d096[_0x1ee7('0x33')],_0x53d096['query']);_0x47a8ff[_0x1ee7('0x38')]=_['intersection'](_0x53d096[_0x1ee7('0x33')],qs[_0x1ee7('0x39')](_0x15bf68['query'][_0x1ee7('0x39')]));_0x47a8ff[_0x1ee7('0x38')]=_0x47a8ff[_0x1ee7('0x38')][_0x1ee7('0x3a')]?_0x47a8ff['attributes']:_0x53d096[_0x1ee7('0x33')];_0x47a8ff[_0x1ee7('0x3d')]=qs['sort'](_0x15bf68[_0x1ee7('0x34')]['sort']);_0x47a8ff[_0x1ee7('0x3f')]=qs[_0x1ee7('0x36')](_[_0x1ee7('0x40')](_0x15bf68['query'],_0x53d096[_0x1ee7('0x36')]));if(_0x15bf68[_0x1ee7('0x34')]['filter']){_0x47a8ff[_0x1ee7('0x3f')]=_[_0x1ee7('0x43')](_0x47a8ff['where'],{'$or':_[_0x1ee7('0x2e')](_0x47a8ff[_0x1ee7('0x38')],function(_0x27215c){var _0xb7fdfb={};_0xb7fdfb[_0x27215c]={'$like':'%'+_0x15bf68[_0x1ee7('0x34')]['filter']+'%'};return _0xb7fdfb;})});}_0x47a8ff=_['merge']({},_0x47a8ff,_0x15bf68[_0x1ee7('0x44')]);return _0x1f49f4[_0x1ee7('0x4f')](_0x47a8ff);}})[_0x1ee7('0x28')](function(_0x8233e8){if(_0x8233e8){_0xd3b018=_0x8233e8[_0x1ee7('0x3a')];if(!_0x15bf68['query']['hasOwnProperty'](_0x1ee7('0x3c'))){_0x47a8ff['limit']=qs['limit'](_0x15bf68[_0x1ee7('0x34')][_0x1ee7('0x1f')]);_0x47a8ff[_0x1ee7('0x1e')]=qs[_0x1ee7('0x1e')](_0x15bf68[_0x1ee7('0x34')][_0x1ee7('0x1e')]);}return _0x1f49f4['getFields'](_0x47a8ff);}})['then'](function(_0x18d7f5){if(_0x18d7f5){return _0x18d7f5?{'count':_0xd3b018,'rows':_0x18d7f5}:null;}})[_0x1ee7('0x28')](respondWithResult(_0x6445c,null))[_0x1ee7('0x48')](handleError(_0x6445c,null));};exports['getSubjects']=function(_0x1a739d,_0x119147,_0x629de5){var _0x4ad264={};var _0x74b69c={};var _0x3d985f;var _0x2c249a;return db[_0x1ee7('0x2f')][_0x1ee7('0x50')]({'where':{'id':_0x1a739d[_0x1ee7('0x49')]['id']}})[_0x1ee7('0x28')](handleEntityNotFound(_0x119147,null))['then'](function(_0x41a98f){if(_0x41a98f){_0x3d985f=_0x41a98f;_0x74b69c[_0x1ee7('0x33')]=_[_0x1ee7('0x35')](db[_0x1ee7('0x4e')][_0x1ee7('0x30')]);_0x74b69c['query']=_[_0x1ee7('0x35')](_0x1a739d[_0x1ee7('0x34')]);_0x74b69c[_0x1ee7('0x36')]=_[_0x1ee7('0x37')](_0x74b69c['model'],_0x74b69c[_0x1ee7('0x34')]);_0x4ad264[_0x1ee7('0x38')]=_['intersection'](_0x74b69c[_0x1ee7('0x33')],qs[_0x1ee7('0x39')](_0x1a739d['query']['fields']));_0x4ad264[_0x1ee7('0x38')]=_0x4ad264['attributes'][_0x1ee7('0x3a')]?_0x4ad264['attributes']:_0x74b69c['model'];_0x4ad264[_0x1ee7('0x3d')]=qs[_0x1ee7('0x3e')](_0x1a739d[_0x1ee7('0x34')][_0x1ee7('0x3e')]);_0x4ad264['where']=qs[_0x1ee7('0x36')](_['pick'](_0x1a739d[_0x1ee7('0x34')],_0x74b69c[_0x1ee7('0x36')]));if(_0x1a739d[_0x1ee7('0x34')]['filter']){_0x4ad264[_0x1ee7('0x3f')]=_[_0x1ee7('0x43')](_0x4ad264[_0x1ee7('0x3f')],{'$or':_['map'](_0x4ad264[_0x1ee7('0x38')],function(_0x441da3){var _0x522f60={};_0x522f60[_0x441da3]={'$like':'%'+_0x1a739d[_0x1ee7('0x34')][_0x1ee7('0x41')]+'%'};return _0x522f60;})});}_0x4ad264=_[_0x1ee7('0x43')]({},_0x4ad264,_0x1a739d[_0x1ee7('0x44')]);return _0x3d985f['getSubjects'](_0x4ad264);}})['then'](function(_0x273346){if(_0x273346){_0x2c249a=_0x273346[_0x1ee7('0x3a')];if(!_0x1a739d[_0x1ee7('0x34')]['hasOwnProperty'](_0x1ee7('0x3c'))){_0x4ad264['limit']=qs['limit'](_0x1a739d['query'][_0x1ee7('0x1f')]);_0x4ad264[_0x1ee7('0x1e')]=qs['offset'](_0x1a739d['query']['offset']);}return _0x3d985f[_0x1ee7('0x51')](_0x4ad264);}})[_0x1ee7('0x28')](function(_0x129e02){if(_0x129e02){return _0x129e02?{'count':_0x2c249a,'rows':_0x129e02}:null;}})[_0x1ee7('0x28')](respondWithResult(_0x119147,null))[_0x1ee7('0x48')](handleError(_0x119147,null));};exports['getDescriptions']=function(_0x88abdc,_0x44a6b5,_0x256f8d){var _0x15b688={};var _0x1101a2={};var _0x59c42a;var _0x195c24;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x88abdc[_0x1ee7('0x49')]['id']}})[_0x1ee7('0x28')](handleEntityNotFound(_0x44a6b5,null))[_0x1ee7('0x28')](function(_0x641533){if(_0x641533){_0x59c42a=_0x641533;_0x1101a2[_0x1ee7('0x33')]=_[_0x1ee7('0x35')](db[_0x1ee7('0x4e')][_0x1ee7('0x30')]);_0x1101a2[_0x1ee7('0x34')]=_[_0x1ee7('0x35')](_0x88abdc[_0x1ee7('0x34')]);_0x1101a2[_0x1ee7('0x36')]=_['intersection'](_0x1101a2[_0x1ee7('0x33')],_0x1101a2[_0x1ee7('0x34')]);_0x15b688[_0x1ee7('0x38')]=_[_0x1ee7('0x37')](_0x1101a2[_0x1ee7('0x33')],qs[_0x1ee7('0x39')](_0x88abdc['query'][_0x1ee7('0x39')]));_0x15b688['attributes']=_0x15b688[_0x1ee7('0x38')][_0x1ee7('0x3a')]?_0x15b688[_0x1ee7('0x38')]:_0x1101a2[_0x1ee7('0x33')];_0x15b688['order']=qs[_0x1ee7('0x3e')](_0x88abdc[_0x1ee7('0x34')]['sort']);_0x15b688[_0x1ee7('0x3f')]=qs['filters'](_[_0x1ee7('0x40')](_0x88abdc[_0x1ee7('0x34')],_0x1101a2[_0x1ee7('0x36')]));if(_0x88abdc[_0x1ee7('0x34')][_0x1ee7('0x41')]){_0x15b688[_0x1ee7('0x3f')]=_[_0x1ee7('0x43')](_0x15b688['where'],{'$or':_[_0x1ee7('0x2e')](_0x15b688[_0x1ee7('0x38')],function(_0x5b9f52){var _0x258c71={};_0x258c71[_0x5b9f52]={'$like':'%'+_0x88abdc[_0x1ee7('0x34')]['filter']+'%'};return _0x258c71;})});}_0x15b688=_[_0x1ee7('0x43')]({},_0x15b688,_0x88abdc[_0x1ee7('0x44')]);return _0x59c42a[_0x1ee7('0x52')](_0x15b688);}})[_0x1ee7('0x28')](function(_0x149440){if(_0x149440){_0x195c24=_0x149440[_0x1ee7('0x3a')];if(!_0x88abdc['query'][_0x1ee7('0x3b')](_0x1ee7('0x3c'))){_0x15b688[_0x1ee7('0x1f')]=qs[_0x1ee7('0x1f')](_0x88abdc[_0x1ee7('0x34')][_0x1ee7('0x1f')]);_0x15b688['offset']=qs[_0x1ee7('0x1e')](_0x88abdc['query'][_0x1ee7('0x1e')]);}return _0x59c42a['getDescriptions'](_0x15b688);}})[_0x1ee7('0x28')](function(_0x1ccdcb){if(_0x1ccdcb){return _0x1ccdcb?{'count':_0x195c24,'rows':_0x1ccdcb}:null;}})[_0x1ee7('0x28')](respondWithResult(_0x44a6b5,null))[_0x1ee7('0x48')](handleError(_0x44a6b5,null));};
\ No newline at end of file
index 09e4e2c..73d0dd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe286=['moment','bluebird','request-promise','path','rimraf','../../config/environment','define','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','api'];(function(_0x1df399,_0x302df4){var _0x2f9a5f=function(_0x822851){while(--_0x822851){_0x1df399['push'](_0x1df399['shift']());}};_0x2f9a5f(++_0x302df4);}(_0xe286,0x1dd));var _0x6e28=function(_0xeebd52,_0x5059bc){_0xeebd52=_0xeebd52-0x0;var _0x1c51de=_0xe286[_0xeebd52];return _0x1c51de;};'use strict';var _=require(_0x6e28('0x0'));var util=require(_0x6e28('0x1'));var logger=require(_0x6e28('0x2'))(_0x6e28('0x3'));var moment=require(_0x6e28('0x4'));var BPromise=require(_0x6e28('0x5'));var rp=require(_0x6e28('0x6'));var fs=require('fs');var path=require(_0x6e28('0x7'));var rimraf=require(_0x6e28('0x8'));var config=require(_0x6e28('0x9'));var attributes=require('./intZohoConfiguration.attributes');module['exports']=function(_0x5a0ac5,_0x3c186f){return _0x5a0ac5[_0x6e28('0xa')](_0x6e28('0xb'),attributes,{'tableName':_0x6e28('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3238=['api','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','lodash','../../config/logger'];(function(_0x209d8a,_0x38c581){var _0x3712d7=function(_0x13a8a1){while(--_0x13a8a1){_0x209d8a['push'](_0x209d8a['shift']());}};_0x3712d7(++_0x38c581);}(_0x3238,0x15d));var _0x8323=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3238[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8323('0x0'));var util=require('util');var logger=require(_0x8323('0x1'))(_0x8323('0x2'));var moment=require('moment');var BPromise=require(_0x8323('0x3'));var rp=require(_0x8323('0x4'));var fs=require('fs');var path=require(_0x8323('0x5'));var rimraf=require(_0x8323('0x6'));var config=require(_0x8323('0x7'));var attributes=require(_0x8323('0x8'));module[_0x8323('0x9')]=function(_0x4aef3f,_0x595d90){return _0x4aef3f[_0x8323('0xa')](_0x8323('0xb'),attributes,{'tableName':_0x8323('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e7475ac..c50e076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3f0=['../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ZohoConfiguration,\x20%s,\x20%s','message','result','catch','lodash','bluebird','ioredis'];(function(_0x4e97f8,_0x3862c1){var _0x3555a3=function(_0x24160f){while(--_0x24160f){_0x4e97f8['push'](_0x4e97f8['shift']());}};_0x3555a3(++_0x3862c1);}(_0xe3f0,0x1a1));var _0x0e3f=function(_0x2c9e23,_0x45c8a5){_0x2c9e23=_0x2c9e23-0x0;var _0x288b88=_0xe3f0[_0x2c9e23];return _0x288b88;};'use strict';var _=require(_0x0e3f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0e3f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0e3f('0x2'));var db=require(_0x0e3f('0x3'))['db'];var utils=require(_0x0e3f('0x4'));var logger=require(_0x0e3f('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0e3f('0x6')][_0x0e3f('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5161ad,_0x1a2f51,_0x31c223){return new BPromise(function(_0x12ba9b,_0x112026){return client[_0x0e3f('0x8')](_0x5161ad,_0x31c223)[_0x0e3f('0x9')](function(_0x921112){logger[_0x0e3f('0xa')]('ZohoConfiguration,\x20%s,\x20%s',_0x1a2f51,'request\x20sent');logger[_0x0e3f('0xb')](_0x0e3f('0xc'),_0x1a2f51,_0x0e3f('0xd'),JSON[_0x0e3f('0xe')](_0x921112));if(_0x921112[_0x0e3f('0xf')]){if(_0x921112[_0x0e3f('0xf')][_0x0e3f('0x10')]===0x1f4){logger['error'](_0x0e3f('0x11'),_0x1a2f51,_0x921112[_0x0e3f('0xf')][_0x0e3f('0x12')]);return _0x112026(_0x921112[_0x0e3f('0xf')]['message']);}logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x1a2f51,_0x921112[_0x0e3f('0xf')]['message']);return _0x12ba9b(_0x921112[_0x0e3f('0xf')][_0x0e3f('0x12')]);}else{logger['info']('ZohoConfiguration,\x20%s,\x20%s',_0x1a2f51,_0x0e3f('0xd'));_0x12ba9b(_0x921112[_0x0e3f('0x13')][_0x0e3f('0x12')]);}})[_0x0e3f('0x14')](function(_0x2e9b4c){logger[_0x0e3f('0xf')](_0x0e3f('0x11'),_0x1a2f51,_0x2e9b4c);_0x112026(_0x2e9b4c);});});}
\ No newline at end of file
+var _0xc554=['moment','bluebird','randomstring','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc554,0x154));var _0x4c55=function(_0x366e99,_0x15d82d){_0x366e99=_0x366e99-0x0;var _0x180bbe=_0xc554[_0x366e99];return _0x180bbe;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4c55('0x0'));var BPromise=require(_0x4c55('0x1'));var rs=require(_0x4c55('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4c55('0x3'));var config=require(_0x4c55('0x4'));var jayson=require(_0x4c55('0x5'));var client=jayson[_0x4c55('0x6')][_0x4c55('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x696cbc,_0xee014e,_0x2a0327){return new BPromise(function(_0x23b7f5,_0x350b81){return client[_0x4c55('0x8')](_0x696cbc,_0x2a0327)[_0x4c55('0x9')](function(_0x4afa38){logger[_0x4c55('0xa')](_0x4c55('0xb'),_0xee014e,_0x4c55('0xc'));logger[_0x4c55('0xd')](_0x4c55('0xe'),_0xee014e,_0x4c55('0xc'),JSON[_0x4c55('0xf')](_0x4afa38));if(_0x4afa38[_0x4c55('0x10')]){if(_0x4afa38['error'][_0x4c55('0x11')]===0x1f4){logger[_0x4c55('0x10')](_0x4c55('0xb'),_0xee014e,_0x4afa38['error'][_0x4c55('0x12')]);return _0x350b81(_0x4afa38[_0x4c55('0x10')][_0x4c55('0x12')]);}logger['error'](_0x4c55('0xb'),_0xee014e,_0x4afa38[_0x4c55('0x10')][_0x4c55('0x12')]);return _0x23b7f5(_0x4afa38[_0x4c55('0x10')][_0x4c55('0x12')]);}else{logger['info'](_0x4c55('0xb'),_0xee014e,_0x4c55('0xc'));_0x23b7f5(_0x4afa38['result'][_0x4c55('0x12')]);}})[_0x4c55('0x13')](function(_0x343fdb){logger['error'](_0x4c55('0xb'),_0xee014e,_0x343fdb);_0x350b81(_0x343fdb);});});}
\ No newline at end of file
index 1da1515..c5b8ad3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc74e=['/:id','show','post','create','update','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index'];(function(_0x500f84,_0x3b8137){var _0x23f5a9=function(_0x28f098){while(--_0x28f098){_0x500f84['push'](_0x500f84['shift']());}};_0x23f5a9(++_0x3b8137);}(_0xc74e,0x159));var _0xec74=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xc74e[_0x432682];return _0x463d05;};'use strict';var multer=require(_0xec74('0x0'));var util=require(_0xec74('0x1'));var path=require(_0xec74('0x2'));var timeout=require(_0xec74('0x3'));var express=require(_0xec74('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xec74('0x5'));var interaction=require(_0xec74('0x6'));var config=require(_0xec74('0x7'));var controller=require(_0xec74('0x8'));router[_0xec74('0x9')]('/',auth[_0xec74('0xa')](),controller[_0xec74('0xb')]);router[_0xec74('0x9')](_0xec74('0xc'),auth[_0xec74('0xa')](),controller[_0xec74('0xd')]);router[_0xec74('0xe')]('/',auth['isAuthenticated'](),controller[_0xec74('0xf')]);router['put'](_0xec74('0xc'),auth[_0xec74('0xa')](),controller[_0xec74('0x10')]);router['delete'](_0xec74('0xc'),auth[_0xec74('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x3c28=['../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','show','post','create','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x273b7e,_0x1b642f){var _0x5df145=function(_0x58e003){while(--_0x58e003){_0x273b7e['push'](_0x273b7e['shift']());}};_0x5df145(++_0x1b642f);}(_0x3c28,0x7e));var _0x83c2=function(_0x5db010,_0x13e363){_0x5db010=_0x5db010-0x0;var _0x593905=_0x3c28[_0x5db010];return _0x593905;};'use strict';var multer=require('multer');var util=require(_0x83c2('0x0'));var path=require(_0x83c2('0x1'));var timeout=require(_0x83c2('0x2'));var express=require(_0x83c2('0x3'));var router=express[_0x83c2('0x4')]();var fs_extra=require(_0x83c2('0x5'));var auth=require(_0x83c2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x83c2('0x7'));var controller=require(_0x83c2('0x8'));router[_0x83c2('0x9')]('/',auth[_0x83c2('0xa')](),controller[_0x83c2('0xb')]);router['get'](_0x83c2('0xc'),auth['isAuthenticated'](),controller[_0x83c2('0xd')]);router[_0x83c2('0xe')]('/',auth['isAuthenticated'](),controller[_0x83c2('0xf')]);router['put']('/:id',auth[_0x83c2('0xa')](),controller['update']);router[_0x83c2('0x10')](_0x83c2('0xc'),auth['isAuthenticated'](),controller[_0x83c2('0x11')]);module[_0x83c2('0x12')]=router;
\ No newline at end of file
index acbe472..98d029e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4057=['BOOLEAN','sequelize','exports','string','variable','customVariable','keyValue','picklist','STRING','ENUM'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4057,0x14b));var _0x7405=function(_0x34b245,_0xfe65b4){_0x34b245=_0x34b245-0x0;var _0x3a8984=_0x4057[_0x34b245];return _0x3a8984;};'use strict';var Sequelize=require(_0x7405('0x0'));module[_0x7405('0x1')]={'type':{'type':Sequelize['ENUM'](_0x7405('0x2'),_0x7405('0x3'),_0x7405('0x4'),_0x7405('0x5'),_0x7405('0x6')),'defaultValue':_0x7405('0x2')},'content':{'type':Sequelize[_0x7405('0x7')]},'key':{'type':Sequelize[_0x7405('0x7')]},'keyType':{'type':Sequelize[_0x7405('0x8')](_0x7405('0x2'),_0x7405('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x7405('0x7')]},'customField':{'type':Sequelize[_0x7405('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7405('0x7')]}};
\ No newline at end of file
+var _0x87be=['BOOLEAN','sequelize','exports','ENUM','string','customVariable','keyValue','STRING'];(function(_0x5d903a,_0x1cae68){var _0x3e972d=function(_0x2b2ae5){while(--_0x2b2ae5){_0x5d903a['push'](_0x5d903a['shift']());}};_0x3e972d(++_0x1cae68);}(_0x87be,0xf9));var _0xe87b=function(_0x1bea0a,_0x496033){_0x1bea0a=_0x1bea0a-0x0;var _0x51f31c=_0x87be[_0x1bea0a];return _0x51f31c;};'use strict';var Sequelize=require(_0xe87b('0x0'));module[_0xe87b('0x1')]={'type':{'type':Sequelize[_0xe87b('0x2')](_0xe87b('0x3'),'variable',_0xe87b('0x4'),_0xe87b('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xe87b('0x6')]},'key':{'type':Sequelize[_0xe87b('0x6')]},'keyType':{'type':Sequelize[_0xe87b('0x2')]('string','variable',_0xe87b('0x4'))},'keyContent':{'type':Sequelize[_0xe87b('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xe87b('0x6')]},'customField':{'type':Sequelize[_0xe87b('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index bd9126c..7b71699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e3=['params','keys','rawAttributes','merge','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','save','update','then','destroy','error','stack','name','send','index','map','ZohoField','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show'];(function(_0x4a379b,_0x334e8b){var _0x2e2509=function(_0x82c3b3){while(--_0x82c3b3){_0x4a379b['push'](_0x4a379b['shift']());}};_0x2e2509(++_0x334e8b);}(_0x70e3,0x9d));var _0x370e=function(_0x179b53,_0x31f6fe){_0x179b53=_0x179b53-0x0;var _0x38a146=_0x70e3[_0x179b53];return _0x38a146;};'use strict';var emlformat=require(_0x370e('0x0'));var rimraf=require(_0x370e('0x1'));var zipdir=require(_0x370e('0x2'));var jsonpatch=require(_0x370e('0x3'));var rp=require('request-promise');var moment=require(_0x370e('0x4'));var BPromise=require(_0x370e('0x5'));var Mustache=require(_0x370e('0x6'));var util=require('util');var path=require(_0x370e('0x7'));var sox=require(_0x370e('0x8'));var csv=require(_0x370e('0x9'));var ejs=require(_0x370e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x370e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x370e('0xc'));var toCsv=require('to-csv');var querystring=require(_0x370e('0xd'));var Papa=require('papaparse');var Redis=require(_0x370e('0xe'));var authService=require(_0x370e('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x370e('0x10'));var logger=require(_0x370e('0x11'))(_0x370e('0x12'));var utils=require(_0x370e('0x13'));var config=require(_0x370e('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x370e('0x15'))['db'];function respondWithStatusCode(_0x17115f,_0x26f9f6){_0x26f9f6=_0x26f9f6||0xcc;return function(_0xc21653){if(_0xc21653){return _0x17115f[_0x370e('0x16')](_0x26f9f6);}return _0x17115f[_0x370e('0x17')](_0x26f9f6)[_0x370e('0x18')]();};}function respondWithResult(_0x8b678d,_0x42ba1c){_0x42ba1c=_0x42ba1c||0xc8;return function(_0x2715c9){if(_0x2715c9){return _0x8b678d[_0x370e('0x17')](_0x42ba1c)['json'](_0x2715c9);}};}function respondWithFilteredResult(_0x49c2dd,_0x5e43fb){return function(_0x32e9d7){if(_0x32e9d7){var _0x44a6a1=typeof _0x5e43fb[_0x370e('0x19')]===_0x370e('0x1a')&&typeof _0x5e43fb[_0x370e('0x1b')]===_0x370e('0x1a');var _0x56076d=_0x32e9d7[_0x370e('0x1c')];var _0x2e394a=_0x44a6a1?0x0:_0x5e43fb['offset'];var _0x407789=_0x44a6a1?_0x32e9d7[_0x370e('0x1c')]:_0x5e43fb['offset']+_0x5e43fb[_0x370e('0x1b')];var _0x25fe44;if(_0x407789>=_0x56076d){_0x407789=_0x56076d;_0x25fe44=0xc8;}else{_0x25fe44=0xce;}_0x49c2dd[_0x370e('0x17')](_0x25fe44);return _0x49c2dd['set'](_0x370e('0x1d'),_0x2e394a+'-'+_0x407789+'/'+_0x56076d)[_0x370e('0x1e')](_0x32e9d7);}return null;};}function patchUpdates(_0xb7887c){return function(_0x4eb5e4){try{jsonpatch[_0x370e('0x1f')](_0x4eb5e4,_0xb7887c,!![]);}catch(_0x82f22a){return BPromise['reject'](_0x82f22a);}return _0x4eb5e4[_0x370e('0x20')]();};}function saveUpdates(_0x1edda5,_0x4fc0d3){return function(_0x455342){if(_0x455342){return _0x455342[_0x370e('0x21')](_0x1edda5)[_0x370e('0x22')](function(_0x1d0860){return _0x1d0860;});}return null;};}function removeEntity(_0x130ebd,_0x18c058){return function(_0x4f23ec){if(_0x4f23ec){return _0x4f23ec[_0x370e('0x23')]()[_0x370e('0x22')](function(){_0x130ebd[_0x370e('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f7d1f,_0x1c2950){return function(_0xd9d1d6){if(!_0xd9d1d6){_0x2f7d1f['sendStatus'](0x194);}return _0xd9d1d6;};}function handleError(_0x94e3e7,_0x25d975){_0x25d975=_0x25d975||0x1f4;return function(_0x210a46){logger[_0x370e('0x24')](_0x210a46[_0x370e('0x25')]);if(_0x210a46[_0x370e('0x26')]){delete _0x210a46[_0x370e('0x26')];}_0x94e3e7['status'](_0x25d975)[_0x370e('0x27')](_0x210a46);};}exports[_0x370e('0x28')]=function(_0x3562a3,_0x43d706){var _0x3fd78e={},_0x5a7c26={},_0x4fd876={'count':0x0,'rows':[]};var _0x18231e=_[_0x370e('0x29')](db[_0x370e('0x2a')]['rawAttributes'],function(_0x1518a5){return{'name':_0x1518a5[_0x370e('0x2b')],'type':_0x1518a5[_0x370e('0x2c')][_0x370e('0x2d')]};});_0x5a7c26[_0x370e('0x2e')]=_[_0x370e('0x29')](_0x18231e,_0x370e('0x26'));_0x5a7c26['query']=_['keys'](_0x3562a3[_0x370e('0x2f')]);_0x5a7c26[_0x370e('0x30')]=_[_0x370e('0x31')](_0x5a7c26[_0x370e('0x2e')],_0x5a7c26['query']);_0x3fd78e[_0x370e('0x32')]=_[_0x370e('0x31')](_0x5a7c26[_0x370e('0x2e')],qs[_0x370e('0x33')](_0x3562a3['query'][_0x370e('0x33')]));_0x3fd78e[_0x370e('0x32')]=_0x3fd78e[_0x370e('0x32')][_0x370e('0x34')]?_0x3fd78e[_0x370e('0x32')]:_0x5a7c26[_0x370e('0x2e')];if(!_0x3562a3['query'][_0x370e('0x35')](_0x370e('0x36'))){_0x3fd78e['limit']=qs['limit'](_0x3562a3['query'][_0x370e('0x1b')]);_0x3fd78e['offset']=qs['offset'](_0x3562a3[_0x370e('0x2f')]['offset']);}_0x3fd78e[_0x370e('0x37')]=qs[_0x370e('0x38')](_0x3562a3[_0x370e('0x2f')][_0x370e('0x38')]);_0x3fd78e[_0x370e('0x39')]=qs[_0x370e('0x30')](_[_0x370e('0x3a')](_0x3562a3['query'],_0x5a7c26[_0x370e('0x30')]),_0x18231e);if(_0x3562a3[_0x370e('0x2f')][_0x370e('0x3b')]){_0x3fd78e[_0x370e('0x39')]=_['merge'](_0x3fd78e['where'],{'$or':_[_0x370e('0x29')](_0x18231e,function(_0x750cfd){if(_0x750cfd['type']!==_0x370e('0x3c')){var _0x4ae9dd={};_0x4ae9dd[_0x750cfd['name']]={'$like':'%'+_0x3562a3[_0x370e('0x2f')][_0x370e('0x3b')]+'%'};return _0x4ae9dd;}})});}_0x3fd78e=_['merge']({},_0x3fd78e,_0x3562a3[_0x370e('0x3d')]);var _0x1ff3db={'where':_0x3fd78e[_0x370e('0x39')]};return db[_0x370e('0x2a')][_0x370e('0x1c')](_0x1ff3db)[_0x370e('0x22')](function(_0x13b8ec){_0x4fd876[_0x370e('0x1c')]=_0x13b8ec;if(_0x3562a3[_0x370e('0x2f')][_0x370e('0x3e')]){_0x3fd78e[_0x370e('0x3f')]=[{'all':!![]}];}return db['ZohoField'][_0x370e('0x40')](_0x3fd78e);})[_0x370e('0x22')](function(_0x2ded9e){_0x4fd876[_0x370e('0x41')]=_0x2ded9e;return _0x4fd876;})[_0x370e('0x22')](respondWithFilteredResult(_0x43d706,_0x3fd78e))[_0x370e('0x42')](handleError(_0x43d706,null));};exports[_0x370e('0x43')]=function(_0x221183,_0x266932){var _0x3d60ac={'raw':!![],'where':{'id':_0x221183[_0x370e('0x44')]['id']}},_0x36bd43={};_0x36bd43[_0x370e('0x2e')]=_[_0x370e('0x45')](db['ZohoField'][_0x370e('0x46')]);_0x36bd43['query']=_[_0x370e('0x45')](_0x221183[_0x370e('0x2f')]);_0x36bd43[_0x370e('0x30')]=_[_0x370e('0x31')](_0x36bd43[_0x370e('0x2e')],_0x36bd43[_0x370e('0x2f')]);_0x3d60ac[_0x370e('0x32')]=_[_0x370e('0x31')](_0x36bd43['model'],qs[_0x370e('0x33')](_0x221183[_0x370e('0x2f')][_0x370e('0x33')]));_0x3d60ac[_0x370e('0x32')]=_0x3d60ac[_0x370e('0x32')][_0x370e('0x34')]?_0x3d60ac[_0x370e('0x32')]:_0x36bd43[_0x370e('0x2e')];if(_0x221183[_0x370e('0x2f')]['includeAll']){_0x3d60ac['include']=[{'all':!![]}];}_0x3d60ac=_[_0x370e('0x47')]({},_0x3d60ac,_0x221183[_0x370e('0x3d')]);return db[_0x370e('0x2a')][_0x370e('0x48')](_0x3d60ac)[_0x370e('0x22')](handleEntityNotFound(_0x266932,null))[_0x370e('0x22')](respondWithResult(_0x266932,null))[_0x370e('0x42')](handleError(_0x266932,null));};exports[_0x370e('0x49')]=function(_0x5250d0,_0x23644e){return db[_0x370e('0x2a')][_0x370e('0x49')](_0x5250d0[_0x370e('0x4a')],{})[_0x370e('0x22')](respondWithResult(_0x23644e,0xc9))['catch'](handleError(_0x23644e,null));};exports[_0x370e('0x21')]=function(_0x464c5a,_0x49e414){if(_0x464c5a['body']['id']){delete _0x464c5a[_0x370e('0x4a')]['id'];}return db[_0x370e('0x2a')][_0x370e('0x48')]({'where':{'id':_0x464c5a[_0x370e('0x44')]['id']}})[_0x370e('0x22')](handleEntityNotFound(_0x49e414,null))[_0x370e('0x22')](saveUpdates(_0x464c5a['body'],null))[_0x370e('0x22')](respondWithResult(_0x49e414,null))[_0x370e('0x42')](handleError(_0x49e414,null));};exports[_0x370e('0x23')]=function(_0x5905b8,_0x5a480f){return db[_0x370e('0x2a')][_0x370e('0x48')]({'where':{'id':_0x5905b8[_0x370e('0x44')]['id']}})[_0x370e('0x22')](handleEntityNotFound(_0x5a480f,null))[_0x370e('0x22')](removeEntity(_0x5a480f,null))['catch'](handleError(_0x5a480f,null));};
\ No newline at end of file
+var _0x537a=['keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','options','includeAll','findAll','rows','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','ejs','lodash','squel','crypto','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','Content-Range','save','update','destroy','then','end','error','stack','name','send','index','ZohoField','rawAttributes','fieldName','key','model','query'];(function(_0x4164ab,_0x46b3be){var _0x4f7810=function(_0x3d2520){while(--_0x3d2520){_0x4164ab['push'](_0x4164ab['shift']());}};_0x4f7810(++_0x46b3be);}(_0x537a,0x17f));var _0xa537=function(_0x18ab1f,_0xc910d){_0x18ab1f=_0x18ab1f-0x0;var _0x453af5=_0x537a[_0x18ab1f];return _0x453af5;};'use strict';var emlformat=require(_0xa537('0x0'));var rimraf=require(_0xa537('0x1'));var zipdir=require(_0xa537('0x2'));var jsonpatch=require(_0xa537('0x3'));var rp=require(_0xa537('0x4'));var moment=require(_0xa537('0x5'));var BPromise=require(_0xa537('0x6'));var Mustache=require('mustache');var util=require(_0xa537('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa537('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa537('0x9'));var squel=require(_0xa537('0xa'));var crypto=require(_0xa537('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa537('0xc'));var querystring=require(_0xa537('0xd'));var Papa=require('papaparse');var Redis=require(_0xa537('0xe'));var authService=require(_0xa537('0xf'));var qs=require(_0xa537('0x10'));var as=require(_0xa537('0x11'));var hardwareService=require(_0xa537('0x12'));var logger=require(_0xa537('0x13'))(_0xa537('0x14'));var utils=require(_0xa537('0x15'));var config=require(_0xa537('0x16'));var licenseUtil=require(_0xa537('0x17'));var db=require(_0xa537('0x18'))['db'];function respondWithStatusCode(_0x4de8bd,_0x5dec42){_0x5dec42=_0x5dec42||0xcc;return function(_0x3f43ad){if(_0x3f43ad){return _0x4de8bd[_0xa537('0x19')](_0x5dec42);}return _0x4de8bd[_0xa537('0x1a')](_0x5dec42)['end']();};}function respondWithResult(_0x37ce9f,_0x4b285d){_0x4b285d=_0x4b285d||0xc8;return function(_0x421be2){if(_0x421be2){return _0x37ce9f[_0xa537('0x1a')](_0x4b285d)[_0xa537('0x1b')](_0x421be2);}};}function respondWithFilteredResult(_0x84fe2d,_0x1a4124){return function(_0x5d2a8a){if(_0x5d2a8a){var _0x34e8f3=typeof _0x1a4124['offset']==='undefined'&&typeof _0x1a4124[_0xa537('0x1c')]===_0xa537('0x1d');var _0x162450=_0x5d2a8a[_0xa537('0x1e')];var _0x47137b=_0x34e8f3?0x0:_0x1a4124[_0xa537('0x1f')];var _0x590600=_0x34e8f3?_0x5d2a8a['count']:_0x1a4124[_0xa537('0x1f')]+_0x1a4124[_0xa537('0x1c')];var _0x26239f;if(_0x590600>=_0x162450){_0x590600=_0x162450;_0x26239f=0xc8;}else{_0x26239f=0xce;}_0x84fe2d['status'](_0x26239f);return _0x84fe2d['set'](_0xa537('0x20'),_0x47137b+'-'+_0x590600+'/'+_0x162450)[_0xa537('0x1b')](_0x5d2a8a);}return null;};}function patchUpdates(_0x103a6e){return function(_0x2400f4){try{jsonpatch['apply'](_0x2400f4,_0x103a6e,!![]);}catch(_0x2f23a0){return BPromise['reject'](_0x2f23a0);}return _0x2400f4[_0xa537('0x21')]();};}function saveUpdates(_0x140e12,_0x4b8984){return function(_0x1d09d1){if(_0x1d09d1){return _0x1d09d1[_0xa537('0x22')](_0x140e12)['then'](function(_0x382cb8){return _0x382cb8;});}return null;};}function removeEntity(_0x15cf74,_0x31f895){return function(_0xd65ed4){if(_0xd65ed4){return _0xd65ed4[_0xa537('0x23')]()[_0xa537('0x24')](function(){_0x15cf74[_0xa537('0x1a')](0xcc)[_0xa537('0x25')]();});}};}function handleEntityNotFound(_0x1d5639,_0xd86183){return function(_0x3047bb){if(!_0x3047bb){_0x1d5639[_0xa537('0x19')](0x194);}return _0x3047bb;};}function handleError(_0x2c1931,_0x171ff5){_0x171ff5=_0x171ff5||0x1f4;return function(_0x81af81){logger[_0xa537('0x26')](_0x81af81[_0xa537('0x27')]);if(_0x81af81[_0xa537('0x28')]){delete _0x81af81[_0xa537('0x28')];}_0x2c1931[_0xa537('0x1a')](_0x171ff5)[_0xa537('0x29')](_0x81af81);};}exports[_0xa537('0x2a')]=function(_0xca68c9,_0x1438ce){var _0x13b37e={},_0x52b368={},_0x403908={'count':0x0,'rows':[]};var _0x15405e=_['map'](db[_0xa537('0x2b')][_0xa537('0x2c')],function(_0x14e6ff){return{'name':_0x14e6ff[_0xa537('0x2d')],'type':_0x14e6ff['type'][_0xa537('0x2e')]};});_0x52b368[_0xa537('0x2f')]=_['map'](_0x15405e,_0xa537('0x28'));_0x52b368[_0xa537('0x30')]=_[_0xa537('0x31')](_0xca68c9[_0xa537('0x30')]);_0x52b368[_0xa537('0x32')]=_['intersection'](_0x52b368[_0xa537('0x2f')],_0x52b368[_0xa537('0x30')]);_0x13b37e[_0xa537('0x33')]=_[_0xa537('0x34')](_0x52b368[_0xa537('0x2f')],qs[_0xa537('0x35')](_0xca68c9['query'][_0xa537('0x35')]));_0x13b37e[_0xa537('0x33')]=_0x13b37e[_0xa537('0x33')]['length']?_0x13b37e[_0xa537('0x33')]:_0x52b368[_0xa537('0x2f')];if(!_0xca68c9[_0xa537('0x30')][_0xa537('0x36')](_0xa537('0x37'))){_0x13b37e[_0xa537('0x1c')]=qs['limit'](_0xca68c9[_0xa537('0x30')][_0xa537('0x1c')]);_0x13b37e[_0xa537('0x1f')]=qs[_0xa537('0x1f')](_0xca68c9['query'][_0xa537('0x1f')]);}_0x13b37e[_0xa537('0x38')]=qs[_0xa537('0x39')](_0xca68c9[_0xa537('0x30')][_0xa537('0x39')]);_0x13b37e[_0xa537('0x3a')]=qs[_0xa537('0x32')](_[_0xa537('0x3b')](_0xca68c9[_0xa537('0x30')],_0x52b368[_0xa537('0x32')]),_0x15405e);if(_0xca68c9['query'][_0xa537('0x3c')]){_0x13b37e[_0xa537('0x3a')]=_[_0xa537('0x3d')](_0x13b37e[_0xa537('0x3a')],{'$or':_[_0xa537('0x3e')](_0x15405e,function(_0x850a55){if(_0x850a55['type']!=='VIRTUAL'){var _0x468c4e={};_0x468c4e[_0x850a55[_0xa537('0x28')]]={'$like':'%'+_0xca68c9['query']['filter']+'%'};return _0x468c4e;}})});}_0x13b37e=_['merge']({},_0x13b37e,_0xca68c9[_0xa537('0x3f')]);var _0x1050fc={'where':_0x13b37e[_0xa537('0x3a')]};return db[_0xa537('0x2b')][_0xa537('0x1e')](_0x1050fc)[_0xa537('0x24')](function(_0x58410f){_0x403908['count']=_0x58410f;if(_0xca68c9[_0xa537('0x30')][_0xa537('0x40')]){_0x13b37e['include']=[{'all':!![]}];}return db[_0xa537('0x2b')][_0xa537('0x41')](_0x13b37e);})[_0xa537('0x24')](function(_0xe23269){_0x403908[_0xa537('0x42')]=_0xe23269;return _0x403908;})[_0xa537('0x24')](respondWithFilteredResult(_0x1438ce,_0x13b37e))['catch'](handleError(_0x1438ce,null));};exports['show']=function(_0x461796,_0x543c88){var _0x5c931a={'raw':!![],'where':{'id':_0x461796['params']['id']}},_0x4b9c73={};_0x4b9c73['model']=_[_0xa537('0x31')](db[_0xa537('0x2b')][_0xa537('0x2c')]);_0x4b9c73['query']=_[_0xa537('0x31')](_0x461796['query']);_0x4b9c73[_0xa537('0x32')]=_[_0xa537('0x34')](_0x4b9c73[_0xa537('0x2f')],_0x4b9c73['query']);_0x5c931a[_0xa537('0x33')]=_[_0xa537('0x34')](_0x4b9c73[_0xa537('0x2f')],qs[_0xa537('0x35')](_0x461796[_0xa537('0x30')][_0xa537('0x35')]));_0x5c931a[_0xa537('0x33')]=_0x5c931a[_0xa537('0x33')]['length']?_0x5c931a[_0xa537('0x33')]:_0x4b9c73['model'];if(_0x461796[_0xa537('0x30')][_0xa537('0x40')]){_0x5c931a['include']=[{'all':!![]}];}_0x5c931a=_[_0xa537('0x3d')]({},_0x5c931a,_0x461796['options']);return db[_0xa537('0x2b')][_0xa537('0x43')](_0x5c931a)[_0xa537('0x24')](handleEntityNotFound(_0x543c88,null))[_0xa537('0x24')](respondWithResult(_0x543c88,null))[_0xa537('0x44')](handleError(_0x543c88,null));};exports[_0xa537('0x45')]=function(_0xe0696a,_0x4dc233){return db[_0xa537('0x2b')][_0xa537('0x45')](_0xe0696a[_0xa537('0x46')],{})['then'](respondWithResult(_0x4dc233,0xc9))[_0xa537('0x44')](handleError(_0x4dc233,null));};exports[_0xa537('0x22')]=function(_0x133324,_0x315455){if(_0x133324[_0xa537('0x46')]['id']){delete _0x133324['body']['id'];}return db[_0xa537('0x2b')][_0xa537('0x43')]({'where':{'id':_0x133324[_0xa537('0x47')]['id']}})['then'](handleEntityNotFound(_0x315455,null))[_0xa537('0x24')](saveUpdates(_0x133324[_0xa537('0x46')],null))[_0xa537('0x24')](respondWithResult(_0x315455,null))[_0xa537('0x44')](handleError(_0x315455,null));};exports['destroy']=function(_0x4585c3,_0x19a90b){return db[_0xa537('0x2b')]['find']({'where':{'id':_0x4585c3[_0xa537('0x47')]['id']}})[_0xa537('0x24')](handleEntityNotFound(_0x19a90b,null))[_0xa537('0x24')](removeEntity(_0x19a90b,null))['catch'](handleError(_0x19a90b,null));};
\ No newline at end of file
index e0d33cb..d6270d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['api','moment','bluebird','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','FieldId','lodash','util','../../config/logger'];(function(_0x1428d9,_0xded63c){var _0x438019=function(_0x31c37d){while(--_0x31c37d){_0x1428d9['push'](_0x1428d9['shift']());}};_0x438019(++_0xded63c);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xc4aa[_0x17b6e3];return _0x3906f3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':['idField',_0xac4a('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8e3f=['moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x1b5aea,_0x1afe6f){var _0x51cae9=function(_0x1494a6){while(--_0x1494a6){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x51cae9(++_0x1afe6f);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x8e3f[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xf8e3('0x0'));var util=require(_0xf8e3('0x1'));var logger=require(_0xf8e3('0x2'))('api');var moment=require(_0xf8e3('0x3'));var BPromise=require(_0xf8e3('0x4'));var rp=require(_0xf8e3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf8e3('0x6'));var config=require(_0xf8e3('0x7'));var attributes=require('./intZohoField.attributes');module[_0xf8e3('0x8')]=function(_0xb21f8d,_0x2621c5){return _0xb21f8d[_0xf8e3('0x9')]('ZohoField',attributes,{'tableName':_0xf8e3('0xa'),'paranoid':![],'indexes':[{'name':_0xf8e3('0xb'),'fields':[_0xf8e3('0xc'),_0xf8e3('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ae091e0..264575c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfe2=['then','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x3d7478,_0xbfb261){var _0x41e45a=function(_0x13a173){while(--_0x13a173){_0x3d7478['push'](_0x3d7478['shift']());}};_0x41e45a(++_0xbfb261);}(_0xdfe2,0xa5));var _0x2dfe=function(_0x4ae829,_0x2c842c){_0x4ae829=_0x4ae829-0x0;var _0x256b31=_0xdfe2[_0x4ae829];return _0x256b31;};'use strict';var _=require('lodash');var util=require(_0x2dfe('0x0'));var moment=require(_0x2dfe('0x1'));var BPromise=require('bluebird');var rs=require(_0x2dfe('0x2'));var fs=require('fs');var Redis=require(_0x2dfe('0x3'));var db=require(_0x2dfe('0x4'))['db'];var utils=require(_0x2dfe('0x5'));var logger=require(_0x2dfe('0x6'))(_0x2dfe('0x7'));var config=require(_0x2dfe('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2dfe('0x9')][_0x2dfe('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2d7dc1,_0x5a094d,_0x330f11){return new BPromise(function(_0x4b2f0d,_0x513c1a){return client['request'](_0x2d7dc1,_0x330f11)[_0x2dfe('0xb')](function(_0x5c2621){logger['info'](_0x2dfe('0xc'),_0x5a094d,_0x2dfe('0xd'));logger[_0x2dfe('0xe')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x5a094d,_0x2dfe('0xd'),JSON[_0x2dfe('0xf')](_0x5c2621));if(_0x5c2621[_0x2dfe('0x10')]){if(_0x5c2621['error'][_0x2dfe('0x11')]===0x1f4){logger['error'](_0x2dfe('0xc'),_0x5a094d,_0x5c2621[_0x2dfe('0x10')][_0x2dfe('0x12')]);return _0x513c1a(_0x5c2621[_0x2dfe('0x10')][_0x2dfe('0x12')]);}logger['error'](_0x2dfe('0xc'),_0x5a094d,_0x5c2621['error']['message']);return _0x4b2f0d(_0x5c2621[_0x2dfe('0x10')][_0x2dfe('0x12')]);}else{logger[_0x2dfe('0x13')](_0x2dfe('0xc'),_0x5a094d,'request\x20sent');_0x4b2f0d(_0x5c2621[_0x2dfe('0x14')]['message']);}})[_0x2dfe('0x15')](function(_0x24b139){logger[_0x2dfe('0x10')](_0x2dfe('0xc'),_0x5a094d,_0x24b139);_0x513c1a(_0x24b139);});});}
\ No newline at end of file
+var _0x4018=['message','result','lodash','util','moment','bluebird','ioredis','rpc','../../config/environment','jayson/promise','client','request','then','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x4132c1,_0xca8387){var _0x5860af=function(_0x3ec1a1){while(--_0x3ec1a1){_0x4132c1['push'](_0x4132c1['shift']());}};_0x5860af(++_0xca8387);}(_0x4018,0x106));var _0x8401=function(_0x8e4445,_0x48e7fc){_0x8e4445=_0x8e4445-0x0;var _0x111540=_0x4018[_0x8e4445];return _0x111540;};'use strict';var _=require(_0x8401('0x0'));var util=require(_0x8401('0x1'));var moment=require(_0x8401('0x2'));var BPromise=require(_0x8401('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8401('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8401('0x5'));var config=require(_0x8401('0x6'));var jayson=require(_0x8401('0x7'));var client=jayson[_0x8401('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2fd9cb,_0x3cbe3a,_0x54cf8e){return new BPromise(function(_0x313d04,_0x3a19d1){return client[_0x8401('0x9')](_0x2fd9cb,_0x54cf8e)[_0x8401('0xa')](function(_0x2ae87f){logger['info'](_0x8401('0xb'),_0x3cbe3a,'request\x20sent');logger[_0x8401('0xc')](_0x8401('0xd'),_0x3cbe3a,_0x8401('0xe'),JSON[_0x8401('0xf')](_0x2ae87f));if(_0x2ae87f['error']){if(_0x2ae87f[_0x8401('0x10')][_0x8401('0x11')]===0x1f4){logger[_0x8401('0x10')](_0x8401('0xb'),_0x3cbe3a,_0x2ae87f['error'][_0x8401('0x12')]);return _0x3a19d1(_0x2ae87f[_0x8401('0x10')][_0x8401('0x12')]);}logger[_0x8401('0x10')](_0x8401('0xb'),_0x3cbe3a,_0x2ae87f[_0x8401('0x10')][_0x8401('0x12')]);return _0x313d04(_0x2ae87f[_0x8401('0x10')][_0x8401('0x12')]);}else{logger['info'](_0x8401('0xb'),_0x3cbe3a,_0x8401('0xe'));_0x313d04(_0x2ae87f[_0x8401('0x13')][_0x8401('0x12')]);}})['catch'](function(_0x368f6c){logger[_0x8401('0x10')]('ZohoField,\x20%s,\x20%s',_0x3cbe3a,_0x368f6c);_0x3a19d1(_0x368f6c);});});}
\ No newline at end of file
index e532eff..eb6e5be 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(_0x5defe5,_0x454030){var _0x1a53f2=function(_0x5d5502){while(--_0x5d5502){_0x5defe5['push'](_0x5defe5['shift']());}};_0x1a53f2(++_0x454030);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x17b562,_0x18dc49){var _0x2afdc4=function(_0x1dd209){while(--_0x1dd209){_0x17b562['push'](_0x17b562['shift']());}};_0x2afdc4(++_0x18dc49);}(_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 92bd4b0..2825ba3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d04=['INTEGER','BOOLEAN','state','exports','STRING','unique_name_and_version'];(function(_0x2d61b2,_0x142947){var _0x12df89=function(_0x31c717){while(--_0x31c717){_0x2d61b2['push'](_0x2d61b2['shift']());}};_0x12df89(++_0x142947);}(_0x4d04,0xf3));var _0x44d0=function(_0x1162b8,_0x2a9bcf){_0x1162b8=_0x1162b8-0x0;var _0x1e9b84=_0x4d04[_0x1162b8];return _0x1e9b84;};'use strict';var Sequelize=require('sequelize');module[_0x44d0('0x0')]={'name':{'type':Sequelize[_0x44d0('0x1')],'allowNull':![],'unique':_0x44d0('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x44d0('0x2')},'main':{'type':Sequelize[_0x44d0('0x1')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0x44d0('0x1')]},'path':{'type':Sequelize[_0x44d0('0x1')]},'type':{'type':Sequelize[_0x44d0('0x1')]},'size':{'type':Sequelize[_0x44d0('0x3')]},'active':{'type':Sequelize[_0x44d0('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0x44d0('0x1')]},'logo':{'type':Sequelize[_0x44d0('0x1')]},'state':{'type':Sequelize[_0x44d0('0x1')],'unique':_0x44d0('0x5')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x44d0('0x1')]},'link':{'type':Sequelize[_0x44d0('0x1')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x7109=['BOOLEAN','state','sequelize','exports','STRING','unique_name_and_version','app.js'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x7109,0xd4));var _0x9710=function(_0x4c2f30,_0xa91340){_0x4c2f30=_0x4c2f30-0x0;var _0xb8854d=_0x7109[_0x4c2f30];return _0xb8854d;};'use strict';var Sequelize=require(_0x9710('0x0'));module[_0x9710('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x9710('0x2')],'allowNull':![],'unique':_0x9710('0x3')},'main':{'type':Sequelize[_0x9710('0x2')],'defaultValue':_0x9710('0x4')},'filename':{'type':Sequelize[_0x9710('0x2')]},'path':{'type':Sequelize[_0x9710('0x2')]},'type':{'type':Sequelize[_0x9710('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x9710('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x9710('0x2')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x9710('0x2')],'unique':_0x9710('0x6')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x9710('0x2')]},'link':{'type':Sequelize[_0x9710('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index 2aa8f57..033438b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['name','send','index','map','Integration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','catch','show','params','fields','includeAll','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','update','then','error'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x2a07,0x74));var _0x72a0=function(_0x28fde4,_0x4fbc40){_0x28fde4=_0x28fde4-0x0;var _0xdc3f1b=_0x2a07[_0x28fde4];return _0xdc3f1b;};'use strict';var emlformat=require(_0x72a0('0x0'));var rimraf=require(_0x72a0('0x1'));var zipdir=require(_0x72a0('0x2'));var jsonpatch=require(_0x72a0('0x3'));var rp=require(_0x72a0('0x4'));var moment=require('moment');var BPromise=require(_0x72a0('0x5'));var Mustache=require(_0x72a0('0x6'));var util=require(_0x72a0('0x7'));var path=require(_0x72a0('0x8'));var sox=require(_0x72a0('0x9'));var csv=require(_0x72a0('0xa'));var ejs=require(_0x72a0('0xb'));var fs=require('fs');var fs_extra=require(_0x72a0('0xc'));var _=require(_0x72a0('0xd'));var squel=require(_0x72a0('0xe'));var crypto=require(_0x72a0('0xf'));var jsforce=require(_0x72a0('0x10'));var deskjs=require(_0x72a0('0x11'));var toCsv=require(_0x72a0('0xa'));var querystring=require(_0x72a0('0x12'));var Papa=require(_0x72a0('0x13'));var Redis=require('ioredis');var authService=require(_0x72a0('0x14'));var qs=require(_0x72a0('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x72a0('0x16'));var logger=require(_0x72a0('0x17'))(_0x72a0('0x18'));var utils=require(_0x72a0('0x19'));var config=require(_0x72a0('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x72a0('0x1b'))['db'];function respondWithStatusCode(_0x335b9f,_0x123ca4){_0x123ca4=_0x123ca4||0xcc;return function(_0xf91a82){if(_0xf91a82){return _0x335b9f[_0x72a0('0x1c')](_0x123ca4);}return _0x335b9f[_0x72a0('0x1d')](_0x123ca4)[_0x72a0('0x1e')]();};}function respondWithResult(_0x5e0b5f,_0x4930c5){_0x4930c5=_0x4930c5||0xc8;return function(_0xe103dc){if(_0xe103dc){return _0x5e0b5f[_0x72a0('0x1d')](_0x4930c5)[_0x72a0('0x1f')](_0xe103dc);}};}function respondWithFilteredResult(_0x1d1133,_0x23b001){return function(_0x3f3d62){if(_0x3f3d62){var _0x4ab55e=typeof _0x23b001[_0x72a0('0x20')]===_0x72a0('0x21')&&typeof _0x23b001[_0x72a0('0x22')]===_0x72a0('0x21');var _0x2d1e95=_0x3f3d62['count'];var _0x100d8f=_0x4ab55e?0x0:_0x23b001[_0x72a0('0x20')];var _0x131b73=_0x4ab55e?_0x3f3d62['count']:_0x23b001[_0x72a0('0x20')]+_0x23b001[_0x72a0('0x22')];var _0x30899b;if(_0x131b73>=_0x2d1e95){_0x131b73=_0x2d1e95;_0x30899b=0xc8;}else{_0x30899b=0xce;}_0x1d1133[_0x72a0('0x1d')](_0x30899b);return _0x1d1133['set'](_0x72a0('0x23'),_0x100d8f+'-'+_0x131b73+'/'+_0x2d1e95)['json'](_0x3f3d62);}return null;};}function patchUpdates(_0x3d0607){return function(_0x315413){try{jsonpatch[_0x72a0('0x24')](_0x315413,_0x3d0607,!![]);}catch(_0x5c7479){return BPromise[_0x72a0('0x25')](_0x5c7479);}return _0x315413[_0x72a0('0x26')]();};}function saveUpdates(_0x1d22d8,_0x3d1965){return function(_0x5d6145){if(_0x5d6145){return _0x5d6145[_0x72a0('0x27')](_0x1d22d8)[_0x72a0('0x28')](function(_0x1ddd54){return _0x1ddd54;});}return null;};}function removeEntity(_0x23b918,_0x3022b0){return function(_0x174b1b){if(_0x174b1b){return _0x174b1b['destroy']()['then'](function(){_0x23b918[_0x72a0('0x1d')](0xcc)[_0x72a0('0x1e')]();});}};}function handleEntityNotFound(_0x123df4,_0x1504ed){return function(_0xf5cb49){if(!_0xf5cb49){_0x123df4[_0x72a0('0x1c')](0x194);}return _0xf5cb49;};}function handleError(_0xa5bda0,_0x15922a){_0x15922a=_0x15922a||0x1f4;return function(_0xee99e2){logger[_0x72a0('0x29')](_0xee99e2['stack']);if(_0xee99e2[_0x72a0('0x2a')]){delete _0xee99e2[_0x72a0('0x2a')];}_0xa5bda0[_0x72a0('0x1d')](_0x15922a)[_0x72a0('0x2b')](_0xee99e2);};}exports[_0x72a0('0x2c')]=function(_0x177a3a,_0x432179){var _0x12eda2={},_0x23c96a={},_0x916733={'count':0x0,'rows':[]};var _0x4ba037=_[_0x72a0('0x2d')](db[_0x72a0('0x2e')][_0x72a0('0x2f')],function(_0xfbe9b3){return{'name':_0xfbe9b3[_0x72a0('0x30')],'type':_0xfbe9b3[_0x72a0('0x31')][_0x72a0('0x32')]};});_0x23c96a['model']=_[_0x72a0('0x2d')](_0x4ba037,_0x72a0('0x2a'));_0x23c96a[_0x72a0('0x33')]=_[_0x72a0('0x34')](_0x177a3a[_0x72a0('0x33')]);_0x23c96a[_0x72a0('0x35')]=_[_0x72a0('0x36')](_0x23c96a[_0x72a0('0x37')],_0x23c96a['query']);_0x12eda2[_0x72a0('0x38')]=_[_0x72a0('0x36')](_0x23c96a[_0x72a0('0x37')],qs['fields'](_0x177a3a[_0x72a0('0x33')]['fields']));_0x12eda2[_0x72a0('0x38')]=_0x12eda2[_0x72a0('0x38')][_0x72a0('0x39')]?_0x12eda2[_0x72a0('0x38')]:_0x23c96a[_0x72a0('0x37')];if(!_0x177a3a[_0x72a0('0x33')][_0x72a0('0x3a')](_0x72a0('0x3b'))){_0x12eda2[_0x72a0('0x22')]=qs[_0x72a0('0x22')](_0x177a3a[_0x72a0('0x33')][_0x72a0('0x22')]);_0x12eda2['offset']=qs[_0x72a0('0x20')](_0x177a3a['query'][_0x72a0('0x20')]);}_0x12eda2[_0x72a0('0x3c')]=qs[_0x72a0('0x3d')](_0x177a3a[_0x72a0('0x33')][_0x72a0('0x3d')]);_0x12eda2[_0x72a0('0x3e')]=qs[_0x72a0('0x35')](_[_0x72a0('0x3f')](_0x177a3a[_0x72a0('0x33')],_0x23c96a['filters']),_0x4ba037);if(_0x177a3a['query'][_0x72a0('0x40')]){_0x12eda2[_0x72a0('0x3e')]=_[_0x72a0('0x41')](_0x12eda2[_0x72a0('0x3e')],{'$or':_[_0x72a0('0x2d')](_0x4ba037,function(_0x512a06){if(_0x512a06[_0x72a0('0x31')]!==_0x72a0('0x42')){var _0x582c90={};_0x582c90[_0x512a06[_0x72a0('0x2a')]]={'$like':'%'+_0x177a3a['query']['filter']+'%'};return _0x582c90;}})});}_0x12eda2=_['merge']({},_0x12eda2,_0x177a3a[_0x72a0('0x43')]);var _0x49633b={'where':_0x12eda2[_0x72a0('0x3e')]};return db[_0x72a0('0x2e')][_0x72a0('0x44')](_0x49633b)[_0x72a0('0x28')](function(_0x4bf56e){_0x916733['count']=_0x4bf56e;if(_0x177a3a['query']['includeAll']){_0x12eda2[_0x72a0('0x45')]=[{'all':!![]}];}return db[_0x72a0('0x2e')]['findAll'](_0x12eda2);})[_0x72a0('0x28')](function(_0x35d790){_0x916733['rows']=_0x35d790;return _0x916733;})[_0x72a0('0x28')](respondWithFilteredResult(_0x432179,_0x12eda2))[_0x72a0('0x46')](handleError(_0x432179,null));};exports[_0x72a0('0x47')]=function(_0xe4abe1,_0x340153){var _0x341451={'raw':![],'where':{'id':_0xe4abe1[_0x72a0('0x48')]['id']}},_0x50eb7f={};_0x50eb7f['model']=_[_0x72a0('0x34')](db['Integration'][_0x72a0('0x2f')]);_0x50eb7f[_0x72a0('0x33')]=_['keys'](_0xe4abe1[_0x72a0('0x33')]);_0x50eb7f['filters']=_[_0x72a0('0x36')](_0x50eb7f[_0x72a0('0x37')],_0x50eb7f[_0x72a0('0x33')]);_0x341451['attributes']=_[_0x72a0('0x36')](_0x50eb7f[_0x72a0('0x37')],qs[_0x72a0('0x49')](_0xe4abe1['query']['fields']));_0x341451[_0x72a0('0x38')]=_0x341451['attributes'][_0x72a0('0x39')]?_0x341451[_0x72a0('0x38')]:_0x50eb7f[_0x72a0('0x37')];if(_0xe4abe1[_0x72a0('0x33')][_0x72a0('0x4a')]){_0x341451[_0x72a0('0x45')]=[{'all':!![]}];}_0x341451=_[_0x72a0('0x41')]({},_0x341451,_0xe4abe1[_0x72a0('0x43')]);return db[_0x72a0('0x2e')]['find'](_0x341451)[_0x72a0('0x28')](handleEntityNotFound(_0x340153,null))[_0x72a0('0x28')](respondWithResult(_0x340153,null))[_0x72a0('0x46')](handleError(_0x340153,null));};exports[_0x72a0('0x4b')]=function(_0x3a669d,_0x304400){return db[_0x72a0('0x2e')]['create'](_0x3a669d['body'],{})[_0x72a0('0x28')](respondWithResult(_0x304400,0xc9))[_0x72a0('0x46')](handleError(_0x304400,null));};exports[_0x72a0('0x27')]=function(_0x3cab6a,_0x35a6ad){if(_0x3cab6a[_0x72a0('0x4c')]['id']){delete _0x3cab6a[_0x72a0('0x4c')]['id'];}return db[_0x72a0('0x2e')][_0x72a0('0x4d')]({'where':{'id':_0x3cab6a[_0x72a0('0x48')]['id']}})['then'](handleEntityNotFound(_0x35a6ad,null))[_0x72a0('0x28')](saveUpdates(_0x3cab6a[_0x72a0('0x4c')],null))[_0x72a0('0x28')](respondWithResult(_0x35a6ad,null))[_0x72a0('0x46')](handleError(_0x35a6ad,null));};exports[_0x72a0('0x4e')]=function(_0x5c1570,_0x143410){return db['Integration']['find']({'where':{'id':_0x5c1570[_0x72a0('0x48')]['id']}})[_0x72a0('0x28')](handleEntityNotFound(_0x143410,null))[_0x72a0('0x28')](removeEntity(_0x143410,null))[_0x72a0('0x46')](handleError(_0x143410,null));};
\ No newline at end of file
+var _0x4137=['map','Integration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','show','params','includeAll','options','find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','json','offset','limit','count','set','apply','reject','save','update','destroy','then','end','sendStatus','error','name','send','index'];(function(_0x5a7beb,_0xd7e3fe){var _0x5e557d=function(_0x16ce1d){while(--_0x16ce1d){_0x5a7beb['push'](_0x5a7beb['shift']());}};_0x5e557d(++_0xd7e3fe);}(_0x4137,0xf8));var _0x7413=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x4137[_0x46e363];return _0x3fb059;};'use strict';var emlformat=require(_0x7413('0x0'));var rimraf=require(_0x7413('0x1'));var zipdir=require(_0x7413('0x2'));var jsonpatch=require(_0x7413('0x3'));var rp=require(_0x7413('0x4'));var moment=require(_0x7413('0x5'));var BPromise=require(_0x7413('0x6'));var Mustache=require(_0x7413('0x7'));var util=require(_0x7413('0x8'));var path=require(_0x7413('0x9'));var sox=require(_0x7413('0xa'));var csv=require(_0x7413('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7413('0xc'));var _=require(_0x7413('0xd'));var squel=require(_0x7413('0xe'));var crypto=require(_0x7413('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x7413('0x10'));var toCsv=require(_0x7413('0xb'));var querystring=require('querystring');var Papa=require(_0x7413('0x11'));var Redis=require(_0x7413('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7413('0x13'));var as=require(_0x7413('0x14'));var hardwareService=require(_0x7413('0x15'));var logger=require(_0x7413('0x16'))(_0x7413('0x17'));var utils=require('../../config/utils');var config=require(_0x7413('0x18'));var licenseUtil=require(_0x7413('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x18a874,_0xa26ca4){_0xa26ca4=_0xa26ca4||0xcc;return function(_0x13e6bd){if(_0x13e6bd){return _0x18a874['sendStatus'](_0xa26ca4);}return _0x18a874['status'](_0xa26ca4)['end']();};}function respondWithResult(_0x2267f6,_0x336c4c){_0x336c4c=_0x336c4c||0xc8;return function(_0x49f0f6){if(_0x49f0f6){return _0x2267f6[_0x7413('0x1a')](_0x336c4c)[_0x7413('0x1b')](_0x49f0f6);}};}function respondWithFilteredResult(_0x4955d3,_0x38b3d1){return function(_0x50f301){if(_0x50f301){var _0x4b9a5b=typeof _0x38b3d1[_0x7413('0x1c')]==='undefined'&&typeof _0x38b3d1[_0x7413('0x1d')]==='undefined';var _0x2036b6=_0x50f301[_0x7413('0x1e')];var _0x19157f=_0x4b9a5b?0x0:_0x38b3d1[_0x7413('0x1c')];var _0x2a3417=_0x4b9a5b?_0x50f301[_0x7413('0x1e')]:_0x38b3d1['offset']+_0x38b3d1[_0x7413('0x1d')];var _0x17c062;if(_0x2a3417>=_0x2036b6){_0x2a3417=_0x2036b6;_0x17c062=0xc8;}else{_0x17c062=0xce;}_0x4955d3[_0x7413('0x1a')](_0x17c062);return _0x4955d3[_0x7413('0x1f')]('Content-Range',_0x19157f+'-'+_0x2a3417+'/'+_0x2036b6)[_0x7413('0x1b')](_0x50f301);}return null;};}function patchUpdates(_0x12d94d){return function(_0x206afc){try{jsonpatch[_0x7413('0x20')](_0x206afc,_0x12d94d,!![]);}catch(_0x409392){return BPromise[_0x7413('0x21')](_0x409392);}return _0x206afc[_0x7413('0x22')]();};}function saveUpdates(_0x4e18cb,_0x56a06a){return function(_0x5f12a2){if(_0x5f12a2){return _0x5f12a2[_0x7413('0x23')](_0x4e18cb)['then'](function(_0x1585ba){return _0x1585ba;});}return null;};}function removeEntity(_0x372944,_0x3b0c81){return function(_0x2fc0f4){if(_0x2fc0f4){return _0x2fc0f4[_0x7413('0x24')]()[_0x7413('0x25')](function(){_0x372944[_0x7413('0x1a')](0xcc)[_0x7413('0x26')]();});}};}function handleEntityNotFound(_0x1d455b,_0x5a8329){return function(_0x5cb15f){if(!_0x5cb15f){_0x1d455b[_0x7413('0x27')](0x194);}return _0x5cb15f;};}function handleError(_0x48c2dc,_0x46c895){_0x46c895=_0x46c895||0x1f4;return function(_0x71cbb4){logger[_0x7413('0x28')](_0x71cbb4['stack']);if(_0x71cbb4[_0x7413('0x29')]){delete _0x71cbb4[_0x7413('0x29')];}_0x48c2dc[_0x7413('0x1a')](_0x46c895)[_0x7413('0x2a')](_0x71cbb4);};}exports[_0x7413('0x2b')]=function(_0x2e521f,_0x5eb4d9){var _0x24dce7={},_0x4ed662={},_0x1d0bde={'count':0x0,'rows':[]};var _0x23e682=_[_0x7413('0x2c')](db[_0x7413('0x2d')][_0x7413('0x2e')],function(_0x2004ea){return{'name':_0x2004ea['fieldName'],'type':_0x2004ea[_0x7413('0x2f')][_0x7413('0x30')]};});_0x4ed662[_0x7413('0x31')]=_[_0x7413('0x2c')](_0x23e682,_0x7413('0x29'));_0x4ed662[_0x7413('0x32')]=_[_0x7413('0x33')](_0x2e521f['query']);_0x4ed662[_0x7413('0x34')]=_[_0x7413('0x35')](_0x4ed662[_0x7413('0x31')],_0x4ed662[_0x7413('0x32')]);_0x24dce7[_0x7413('0x36')]=_['intersection'](_0x4ed662[_0x7413('0x31')],qs['fields'](_0x2e521f[_0x7413('0x32')][_0x7413('0x37')]));_0x24dce7[_0x7413('0x36')]=_0x24dce7['attributes'][_0x7413('0x38')]?_0x24dce7['attributes']:_0x4ed662[_0x7413('0x31')];if(!_0x2e521f[_0x7413('0x32')]['hasOwnProperty']('nolimit')){_0x24dce7[_0x7413('0x1d')]=qs[_0x7413('0x1d')](_0x2e521f[_0x7413('0x32')]['limit']);_0x24dce7['offset']=qs[_0x7413('0x1c')](_0x2e521f['query']['offset']);}_0x24dce7[_0x7413('0x39')]=qs['sort'](_0x2e521f[_0x7413('0x32')][_0x7413('0x3a')]);_0x24dce7[_0x7413('0x3b')]=qs[_0x7413('0x34')](_[_0x7413('0x3c')](_0x2e521f['query'],_0x4ed662[_0x7413('0x34')]),_0x23e682);if(_0x2e521f[_0x7413('0x32')][_0x7413('0x3d')]){_0x24dce7[_0x7413('0x3b')]=_[_0x7413('0x3e')](_0x24dce7[_0x7413('0x3b')],{'$or':_[_0x7413('0x2c')](_0x23e682,function(_0x385156){if(_0x385156[_0x7413('0x2f')]!==_0x7413('0x3f')){var _0x5c03eb={};_0x5c03eb[_0x385156[_0x7413('0x29')]]={'$like':'%'+_0x2e521f['query'][_0x7413('0x3d')]+'%'};return _0x5c03eb;}})});}_0x24dce7=_['merge']({},_0x24dce7,_0x2e521f['options']);var _0x5b592c={'where':_0x24dce7['where']};return db['Integration'][_0x7413('0x1e')](_0x5b592c)['then'](function(_0x535e49){_0x1d0bde[_0x7413('0x1e')]=_0x535e49;if(_0x2e521f['query']['includeAll']){_0x24dce7[_0x7413('0x40')]=[{'all':!![]}];}return db[_0x7413('0x2d')][_0x7413('0x41')](_0x24dce7);})[_0x7413('0x25')](function(_0x8049c0){_0x1d0bde['rows']=_0x8049c0;return _0x1d0bde;})[_0x7413('0x25')](respondWithFilteredResult(_0x5eb4d9,_0x24dce7))['catch'](handleError(_0x5eb4d9,null));};exports[_0x7413('0x42')]=function(_0x1d8219,_0xa063d1){var _0xfe0daa={'raw':![],'where':{'id':_0x1d8219[_0x7413('0x43')]['id']}},_0x3f7da2={};_0x3f7da2[_0x7413('0x31')]=_[_0x7413('0x33')](db[_0x7413('0x2d')][_0x7413('0x2e')]);_0x3f7da2[_0x7413('0x32')]=_[_0x7413('0x33')](_0x1d8219[_0x7413('0x32')]);_0x3f7da2['filters']=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],_0x3f7da2[_0x7413('0x32')]);_0xfe0daa[_0x7413('0x36')]=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],qs[_0x7413('0x37')](_0x1d8219[_0x7413('0x32')][_0x7413('0x37')]));_0xfe0daa[_0x7413('0x36')]=_0xfe0daa[_0x7413('0x36')]['length']?_0xfe0daa[_0x7413('0x36')]:_0x3f7da2['model'];if(_0x1d8219[_0x7413('0x32')][_0x7413('0x44')]){_0xfe0daa[_0x7413('0x40')]=[{'all':!![]}];}_0xfe0daa=_[_0x7413('0x3e')]({},_0xfe0daa,_0x1d8219[_0x7413('0x45')]);return db[_0x7413('0x2d')][_0x7413('0x46')](_0xfe0daa)[_0x7413('0x25')](handleEntityNotFound(_0xa063d1,null))[_0x7413('0x25')](respondWithResult(_0xa063d1,null))[_0x7413('0x47')](handleError(_0xa063d1,null));};exports['create']=function(_0x513657,_0x3c1f1a){return db['Integration']['create'](_0x513657[_0x7413('0x48')],{})[_0x7413('0x25')](respondWithResult(_0x3c1f1a,0xc9))['catch'](handleError(_0x3c1f1a,null));};exports[_0x7413('0x23')]=function(_0x586d25,_0x562bae){if(_0x586d25[_0x7413('0x48')]['id']){delete _0x586d25['body']['id'];}return db[_0x7413('0x2d')][_0x7413('0x46')]({'where':{'id':_0x586d25[_0x7413('0x43')]['id']}})[_0x7413('0x25')](handleEntityNotFound(_0x562bae,null))[_0x7413('0x25')](saveUpdates(_0x586d25[_0x7413('0x48')],null))[_0x7413('0x25')](respondWithResult(_0x562bae,null))[_0x7413('0x47')](handleError(_0x562bae,null));};exports[_0x7413('0x24')]=function(_0x2031e3,_0x50a27d){return db[_0x7413('0x2d')]['find']({'where':{'id':_0x2031e3['params']['id']}})['then'](handleEntityNotFound(_0x50a27d,null))[_0x7413('0x25')](removeEntity(_0x50a27d,null))[_0x7413('0x47')](handleError(_0x50a27d,null));};
\ No newline at end of file
index 5cdee5c..e110b0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x886c=['rimraf','../../config/environment','./integration.attributes','exports','define','integrations','util','../../config/logger','api','moment','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x886c,0x72));var _0xc886=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x886c[_0x167cc1];return _0x10bc4b;};'use strict';var _=require('lodash');var util=require(_0xc886('0x0'));var logger=require(_0xc886('0x1'))(_0xc886('0x2'));var moment=require(_0xc886('0x3'));var BPromise=require('bluebird');var rp=require(_0xc886('0x4'));var fs=require('fs');var path=require(_0xc886('0x5'));var rimraf=require(_0xc886('0x6'));var config=require(_0xc886('0x7'));var attributes=require(_0xc886('0x8'));module[_0xc886('0x9')]=function(_0x286241,_0x18c210){return _0x286241[_0xc886('0xa')]('Integration',attributes,{'tableName':_0xc886('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x47ac=['lodash','util','api','moment','request-promise','path','define','Integration'];(function(_0x56fa59,_0x1870a8){var _0x38c3d5=function(_0x1860b7){while(--_0x1860b7){_0x56fa59['push'](_0x56fa59['shift']());}};_0x38c3d5(++_0x1870a8);}(_0x47ac,0xe8));var _0xc47a=function(_0x5edeb4,_0x267260){_0x5edeb4=_0x5edeb4-0x0;var _0x37a567=_0x47ac[_0x5edeb4];return _0x37a567;};'use strict';var _=require(_0xc47a('0x0'));var util=require(_0xc47a('0x1'));var logger=require('../../config/logger')(_0xc47a('0x2'));var moment=require(_0xc47a('0x3'));var BPromise=require('bluebird');var rp=require(_0xc47a('0x4'));var fs=require('fs');var path=require(_0xc47a('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./integration.attributes');module['exports']=function(_0x4841c6,_0x45f90c){return _0x4841c6[_0xc47a('0x6')](_0xc47a('0x7'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5fcdd1e..79b73a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','then','debug','request\x20sent','stringify','error','code','Integration,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x50d527,_0x5a9e5b){var _0x57f1b1=function(_0x545805){while(--_0x545805){_0x50d527['push'](_0x50d527['shift']());}};_0x57f1b1(++_0x5a9e5b);}(_0x14a0,0x8e));var _0x014a=function(_0x230b13,_0x2b43ae){_0x230b13=_0x230b13-0x0;var _0x14890e=_0x14a0[_0x230b13];return _0x14890e;};'use strict';var _=require('lodash');var util=require(_0x014a('0x0'));var moment=require(_0x014a('0x1'));var BPromise=require(_0x014a('0x2'));var rs=require(_0x014a('0x3'));var fs=require('fs');var Redis=require(_0x014a('0x4'));var db=require(_0x014a('0x5'))['db'];var utils=require(_0x014a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x014a('0x7'));var jayson=require(_0x014a('0x8'));var client=jayson[_0x014a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a61ac,_0x11b8ce,_0x6d05f2){return new BPromise(function(_0x22f17c,_0x4d943b){return client['request'](_0x5a61ac,_0x6d05f2)[_0x014a('0xa')](function(_0x4f5506){logger['info']('Integration,\x20%s,\x20%s',_0x11b8ce,'request\x20sent');logger[_0x014a('0xb')]('Integration,\x20%s,\x20%s,\x20%s',_0x11b8ce,_0x014a('0xc'),JSON[_0x014a('0xd')](_0x4f5506));if(_0x4f5506['error']){if(_0x4f5506[_0x014a('0xe')][_0x014a('0xf')]===0x1f4){logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);return _0x4d943b(_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);}logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);return _0x22f17c(_0x4f5506['error'][_0x014a('0x11')]);}else{logger[_0x014a('0x12')]('Integration,\x20%s,\x20%s',_0x11b8ce,_0x014a('0xc'));_0x22f17c(_0x4f5506[_0x014a('0x13')]['message']);}})[_0x014a('0x14')](function(_0x17e4be){logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x17e4be);_0x4d943b(_0x17e4be);});});}
\ No newline at end of file
+var _0x14a0=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','then','debug','request\x20sent','stringify','error','code','Integration,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x2b7cad,_0x3f915b){var _0x51f303=function(_0x53b60e){while(--_0x53b60e){_0x2b7cad['push'](_0x2b7cad['shift']());}};_0x51f303(++_0x3f915b);}(_0x14a0,0x8e));var _0x014a=function(_0x5de82f,_0x12bd7a){_0x5de82f=_0x5de82f-0x0;var _0x4a39c8=_0x14a0[_0x5de82f];return _0x4a39c8;};'use strict';var _=require('lodash');var util=require(_0x014a('0x0'));var moment=require(_0x014a('0x1'));var BPromise=require(_0x014a('0x2'));var rs=require(_0x014a('0x3'));var fs=require('fs');var Redis=require(_0x014a('0x4'));var db=require(_0x014a('0x5'))['db'];var utils=require(_0x014a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x014a('0x7'));var jayson=require(_0x014a('0x8'));var client=jayson[_0x014a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a61ac,_0x11b8ce,_0x6d05f2){return new BPromise(function(_0x22f17c,_0x4d943b){return client['request'](_0x5a61ac,_0x6d05f2)[_0x014a('0xa')](function(_0x4f5506){logger['info']('Integration,\x20%s,\x20%s',_0x11b8ce,'request\x20sent');logger[_0x014a('0xb')]('Integration,\x20%s,\x20%s,\x20%s',_0x11b8ce,_0x014a('0xc'),JSON[_0x014a('0xd')](_0x4f5506));if(_0x4f5506['error']){if(_0x4f5506[_0x014a('0xe')][_0x014a('0xf')]===0x1f4){logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);return _0x4d943b(_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);}logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);return _0x22f17c(_0x4f5506['error'][_0x014a('0x11')]);}else{logger[_0x014a('0x12')]('Integration,\x20%s,\x20%s',_0x11b8ce,_0x014a('0xc'));_0x22f17c(_0x4f5506[_0x014a('0x13')]['message']);}})[_0x014a('0x14')](function(_0x17e4be){logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x17e4be);_0x4d943b(_0x17e4be);});});}
\ No newline at end of file
index bd98476..6f7044c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','create','put','update','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5f66,0x1a0));var _0x65f6=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x5f66[_0x21a9d9];return _0x46adce;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./integrationReport.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['show']);router['post']('/',auth[_0x65f6('0x8')](),controller[_0x65f6('0xc')]);router[_0x65f6('0xd')](_0x65f6('0xb'),auth['isAuthenticated'](),controller[_0x65f6('0xe')]);router['delete']('/:id',auth[_0x65f6('0x8')](),controller['destroy']);module[_0x65f6('0xf')]=router;
\ No newline at end of file
+var _0x187d=['/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x9a825b,_0x35c63e){var _0x4e5706=function(_0x20e4f2){while(--_0x20e4f2){_0x9a825b['push'](_0x9a825b['shift']());}};_0x4e5706(++_0x35c63e);}(_0x187d,0x93));var _0xd187=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x187d[_0x5e3b04];return _0x1fc44d;};'use strict';var multer=require(_0xd187('0x0'));var util=require('util');var path=require(_0xd187('0x1'));var timeout=require(_0xd187('0x2'));var express=require(_0xd187('0x3'));var router=express[_0xd187('0x4')]();var fs_extra=require(_0xd187('0x5'));var auth=require(_0xd187('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd187('0x7'));var controller=require(_0xd187('0x8'));router['get']('/',auth[_0xd187('0x9')](),controller[_0xd187('0xa')]);router[_0xd187('0xb')](_0xd187('0xc'),auth[_0xd187('0x9')](),controller[_0xd187('0xd')]);router[_0xd187('0xb')](_0xd187('0xe'),auth['isAuthenticated'](),controller[_0xd187('0xf')]);router[_0xd187('0x10')]('/',auth[_0xd187('0x9')](),controller[_0xd187('0x11')]);router[_0xd187('0x12')](_0xd187('0xe'),auth['isAuthenticated'](),controller[_0xd187('0x13')]);router[_0xd187('0x14')](_0xd187('0xe'),auth['isAuthenticated'](),controller[_0xd187('0x15')]);module[_0xd187('0x16')]=router;
\ No newline at end of file
index 8fe054f..d629315 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf0=['INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENDING','sequelize','exports','STRING'];(function(_0x20ecff,_0xbf3b22){var _0x4cf446=function(_0x15555b){while(--_0x15555b){_0x20ecff['push'](_0x20ecff['shift']());}};_0x4cf446(++_0xbf3b22);}(_0xecf0,0x84));var _0x0ecf=function(_0x4879ec,_0x244a74){_0x4879ec=_0x4879ec-0x0;var _0xbbe1ad=_0xecf0[_0x4879ec];return _0xbbe1ad;};'use strict';var Sequelize=require(_0x0ecf('0x0'));module[_0x0ecf('0x1')]={'integration':{'type':Sequelize[_0x0ecf('0x2')]},'eventChannel':{'type':Sequelize[_0x0ecf('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0x0ecf('0x2')]},'integrationId':{'type':Sequelize[_0x0ecf('0x3')]},'contacts':{'type':Sequelize[_0x0ecf('0x2')]},'uniqueid':{'type':Sequelize[_0x0ecf('0x2')]},'calleridnum':{'type':Sequelize[_0x0ecf('0x2')]},'calleridname':{'type':Sequelize[_0x0ecf('0x2')]},'queue':{'type':Sequelize[_0x0ecf('0x2')]},'interface':{'type':Sequelize[_0x0ecf('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x0ecf('0x4')]},'agentconnectAt':{'type':Sequelize[_0x0ecf('0x4')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x0ecf('0x4')]},'talktime':{'type':Sequelize[_0x0ecf('0x3')]},'agentacw':{'type':Sequelize[_0x0ecf('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x0ecf('0x3')]},'reason':{'type':Sequelize[_0x0ecf('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x0ecf('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x0ecf('0x4')]},'agentdump':{'type':Sequelize[_0x0ecf('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0x0ecf('0x2')]},'channel':{'type':Sequelize[_0x0ecf('0x2')]},'channelstate':{'type':Sequelize[_0x0ecf('0x3')]},'channelstatedesc':{'type':Sequelize[_0x0ecf('0x2')]},'connectedlinenum':{'type':Sequelize[_0x0ecf('0x2')]},'connectedlinename':{'type':Sequelize[_0x0ecf('0x2')]},'language':{'type':Sequelize[_0x0ecf('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x0ecf('0x2')]},'exten':{'type':Sequelize[_0x0ecf('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x0ecf('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x0ecf('0x2')]},'destcalleridname':{'type':Sequelize[_0x0ecf('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x0ecf('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x0ecf('0x2')]},'destlanguage':{'type':Sequelize[_0x0ecf('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x0ecf('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x0ecf('0x2')]},'destuniqueid':{'type':Sequelize[_0x0ecf('0x2')]},'messageId':{'type':Sequelize[_0x0ecf('0x2')]},'inReplyTo':{'type':Sequelize[_0x0ecf('0x2')]},'subject':{'type':Sequelize[_0x0ecf('0x2')]},'from':{'type':Sequelize[_0x0ecf('0x2')]},'to':{'type':Sequelize[_0x0ecf('0x2')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x0ecf('0x6')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x0ecf('0x6')]},'status':{'type':Sequelize[_0x0ecf('0x7')]('SENT',_0x0ecf('0x8'),'RECEIVED','FAILED')},'url':{'type':Sequelize[_0x0ecf('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0x0ecf('0x2')]},'projectId':{'type':Sequelize[_0x0ecf('0x3')]}};
\ No newline at end of file
+var _0x6415=['SENDING','RECEIVED','FAILED','sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM'];(function(_0x382f4b,_0x1db4bd){var _0x4317f0=function(_0x3eb770){while(--_0x3eb770){_0x382f4b['push'](_0x382f4b['shift']());}};_0x4317f0(++_0x1db4bd);}(_0x6415,0x1c6));var _0x5641=function(_0x17989d,_0x4e0de2){_0x17989d=_0x17989d-0x0;var _0x537438=_0x6415[_0x17989d];return _0x537438;};'use strict';var Sequelize=require(_0x5641('0x0'));module[_0x5641('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0x5641('0x2')]},'ticketId':{'type':Sequelize[_0x5641('0x2')]},'integrationId':{'type':Sequelize[_0x5641('0x3')]},'contacts':{'type':Sequelize[_0x5641('0x2')]},'uniqueid':{'type':Sequelize[_0x5641('0x2')]},'calleridnum':{'type':Sequelize[_0x5641('0x2')]},'calleridname':{'type':Sequelize[_0x5641('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x5641('0x2')]},'membername':{'type':Sequelize[_0x5641('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x5641('0x4')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0x5641('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x5641('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0x5641('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x5641('0x4')]},'lastevent':{'type':Sequelize[_0x5641('0x2')]},'channel':{'type':Sequelize[_0x5641('0x2')]},'channelstate':{'type':Sequelize[_0x5641('0x3')]},'channelstatedesc':{'type':Sequelize[_0x5641('0x2')]},'connectedlinenum':{'type':Sequelize[_0x5641('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x5641('0x2')]},'context':{'type':Sequelize[_0x5641('0x2')]},'exten':{'type':Sequelize[_0x5641('0x2')]},'priority':{'type':Sequelize[_0x5641('0x2')]},'destchannel':{'type':Sequelize[_0x5641('0x2')]},'destchannelstate':{'type':Sequelize[_0x5641('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x5641('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x5641('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x5641('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x5641('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x5641('0x2')]},'destcontext':{'type':Sequelize[_0x5641('0x2')]},'destexten':{'type':Sequelize[_0x5641('0x2')]},'destpriority':{'type':Sequelize[_0x5641('0x2')]},'destuniqueid':{'type':Sequelize[_0x5641('0x2')]},'messageId':{'type':Sequelize[_0x5641('0x2')]},'inReplyTo':{'type':Sequelize[_0x5641('0x2')]},'subject':{'type':Sequelize[_0x5641('0x2')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x5641('0x6')]},'html':{'type':Sequelize[_0x5641('0x6')]},'text':{'type':Sequelize[_0x5641('0x6')]},'status':{'type':Sequelize[_0x5641('0x7')]('SENT',_0x5641('0x8'),_0x5641('0x9'),_0x5641('0xa'))},'url':{'type':Sequelize[_0x5641('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0x5641('0x3')]}};
\ No newline at end of file
index 4813aa2..50bac7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82e4=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','rawAttributes','find','create','body','params','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','IntegrationReport','fieldName','type','model','map','query','keys','filters','intersection'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x82e4,0x184));var _0x482e=function(_0x1e17eb,_0x2e15c5){_0x1e17eb=_0x1e17eb-0x0;var _0x4de4c7=_0x82e4[_0x1e17eb];return _0x4de4c7;};'use strict';var emlformat=require(_0x482e('0x0'));var rimraf=require(_0x482e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x482e('0x2'));var moment=require(_0x482e('0x3'));var BPromise=require(_0x482e('0x4'));var Mustache=require(_0x482e('0x5'));var util=require(_0x482e('0x6'));var path=require(_0x482e('0x7'));var sox=require('sox');var csv=require(_0x482e('0x8'));var ejs=require(_0x482e('0x9'));var fs=require('fs');var fs_extra=require(_0x482e('0xa'));var _=require(_0x482e('0xb'));var squel=require(_0x482e('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x482e('0xd'));var toCsv=require('to-csv');var querystring=require(_0x482e('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x482e('0xf'));var hardwareService=require(_0x482e('0x10'));var logger=require('../../config/logger')(_0x482e('0x11'));var utils=require(_0x482e('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x482e('0x13'));var db=require(_0x482e('0x14'))['db'];function respondWithStatusCode(_0x38196e,_0x4d24be){_0x4d24be=_0x4d24be||0xcc;return function(_0x483588){if(_0x483588){return _0x38196e[_0x482e('0x15')](_0x4d24be);}return _0x38196e[_0x482e('0x16')](_0x4d24be)[_0x482e('0x17')]();};}function respondWithResult(_0x1d3507,_0x140e27){_0x140e27=_0x140e27||0xc8;return function(_0x5ae036){if(_0x5ae036){return _0x1d3507['status'](_0x140e27)[_0x482e('0x18')](_0x5ae036);}};}function respondWithFilteredResult(_0x3668d,_0x3fc63b){return function(_0x3cc21a){if(_0x3cc21a){var _0x36430c=typeof _0x3fc63b[_0x482e('0x19')]===_0x482e('0x1a')&&typeof _0x3fc63b['limit']===_0x482e('0x1a');var _0x5c076a=_0x3cc21a[_0x482e('0x1b')];var _0x3f4903=_0x36430c?0x0:_0x3fc63b[_0x482e('0x19')];var _0x2f0ecd=_0x36430c?_0x3cc21a['count']:_0x3fc63b[_0x482e('0x19')]+_0x3fc63b[_0x482e('0x1c')];var _0x5dacde;if(_0x2f0ecd>=_0x5c076a){_0x2f0ecd=_0x5c076a;_0x5dacde=0xc8;}else{_0x5dacde=0xce;}_0x3668d['status'](_0x5dacde);return _0x3668d['set'](_0x482e('0x1d'),_0x3f4903+'-'+_0x2f0ecd+'/'+_0x5c076a)[_0x482e('0x18')](_0x3cc21a);}return null;};}function patchUpdates(_0x5ba7fd){return function(_0x61d872){try{jsonpatch[_0x482e('0x1e')](_0x61d872,_0x5ba7fd,!![]);}catch(_0x3891cd){return BPromise[_0x482e('0x1f')](_0x3891cd);}return _0x61d872[_0x482e('0x20')]();};}function saveUpdates(_0x27fef2,_0x3689f3){return function(_0x13df13){if(_0x13df13){return _0x13df13[_0x482e('0x21')](_0x27fef2)[_0x482e('0x22')](function(_0x1a703c){return _0x1a703c;});}return null;};}function removeEntity(_0x560063,_0x4c7396){return function(_0x32492b){if(_0x32492b){return _0x32492b[_0x482e('0x23')]()[_0x482e('0x22')](function(){_0x560063[_0x482e('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa6053,_0x4d6021){return function(_0x1c65f8){if(!_0x1c65f8){_0xa6053['sendStatus'](0x194);}return _0x1c65f8;};}function handleError(_0x2fd4b6,_0x4b0c53){_0x4b0c53=_0x4b0c53||0x1f4;return function(_0x3fcaa2){logger[_0x482e('0x24')](_0x3fcaa2[_0x482e('0x25')]);if(_0x3fcaa2[_0x482e('0x26')]){delete _0x3fcaa2['name'];}_0x2fd4b6[_0x482e('0x16')](_0x4b0c53)[_0x482e('0x27')](_0x3fcaa2);};}exports[_0x482e('0x28')]=function(_0x16a43e,_0x3f5870){var _0x335005={},_0x180abe={},_0x38ecde={'count':0x0,'rows':[]};var _0x248cd6=_['map'](db[_0x482e('0x29')]['rawAttributes'],function(_0x57306a){return{'name':_0x57306a[_0x482e('0x2a')],'type':_0x57306a[_0x482e('0x2b')]['key']};});_0x180abe[_0x482e('0x2c')]=_[_0x482e('0x2d')](_0x248cd6,_0x482e('0x26'));_0x180abe[_0x482e('0x2e')]=_[_0x482e('0x2f')](_0x16a43e[_0x482e('0x2e')]);_0x180abe[_0x482e('0x30')]=_[_0x482e('0x31')](_0x180abe[_0x482e('0x2c')],_0x180abe[_0x482e('0x2e')]);_0x335005[_0x482e('0x32')]=_[_0x482e('0x31')](_0x180abe[_0x482e('0x2c')],qs[_0x482e('0x33')](_0x16a43e[_0x482e('0x2e')][_0x482e('0x33')]));_0x335005[_0x482e('0x32')]=_0x335005[_0x482e('0x32')][_0x482e('0x34')]?_0x335005[_0x482e('0x32')]:_0x180abe[_0x482e('0x2c')];if(!_0x16a43e[_0x482e('0x2e')][_0x482e('0x35')](_0x482e('0x36'))){_0x335005['limit']=qs[_0x482e('0x1c')](_0x16a43e[_0x482e('0x2e')][_0x482e('0x1c')]);_0x335005[_0x482e('0x19')]=qs[_0x482e('0x19')](_0x16a43e[_0x482e('0x2e')][_0x482e('0x19')]);}_0x335005[_0x482e('0x37')]=qs[_0x482e('0x38')](_0x16a43e[_0x482e('0x2e')]['sort']);_0x335005[_0x482e('0x39')]=qs[_0x482e('0x30')](_[_0x482e('0x3a')](_0x16a43e['query'],_0x180abe[_0x482e('0x30')]),_0x248cd6);if(_0x16a43e[_0x482e('0x2e')]['filter']){_0x335005[_0x482e('0x39')]=_[_0x482e('0x3b')](_0x335005['where'],{'$or':_['map'](_0x248cd6,function(_0xcfa4cd){if(_0xcfa4cd['type']!==_0x482e('0x3c')){var _0x49a704={};_0x49a704[_0xcfa4cd[_0x482e('0x26')]]={'$like':'%'+_0x16a43e[_0x482e('0x2e')]['filter']+'%'};return _0x49a704;}})});}_0x335005=_[_0x482e('0x3b')]({},_0x335005,_0x16a43e[_0x482e('0x3d')]);var _0x54eb43={'where':_0x335005[_0x482e('0x39')]};return db[_0x482e('0x29')][_0x482e('0x1b')](_0x54eb43)[_0x482e('0x22')](function(_0x5031c6){_0x38ecde[_0x482e('0x1b')]=_0x5031c6;if(_0x16a43e['query'][_0x482e('0x3e')]){_0x335005[_0x482e('0x3f')]=[{'all':!![]}];}return db['IntegrationReport'][_0x482e('0x40')](_0x335005);})[_0x482e('0x22')](function(_0xf716a9){_0x38ecde[_0x482e('0x41')]=_0xf716a9;return _0x38ecde;})[_0x482e('0x22')](respondWithFilteredResult(_0x3f5870,_0x335005))[_0x482e('0x42')](handleError(_0x3f5870,null));};exports['show']=function(_0x5eb07d,_0x599f01){var _0x2ab586={'raw':![],'where':{'id':_0x5eb07d['params']['id']}},_0x571384={};_0x571384[_0x482e('0x2c')]=_['keys'](db[_0x482e('0x29')][_0x482e('0x43')]);_0x571384[_0x482e('0x2e')]=_[_0x482e('0x2f')](_0x5eb07d['query']);_0x571384[_0x482e('0x30')]=_[_0x482e('0x31')](_0x571384['model'],_0x571384[_0x482e('0x2e')]);_0x2ab586[_0x482e('0x32')]=_[_0x482e('0x31')](_0x571384['model'],qs[_0x482e('0x33')](_0x5eb07d[_0x482e('0x2e')]['fields']));_0x2ab586[_0x482e('0x32')]=_0x2ab586[_0x482e('0x32')]['length']?_0x2ab586[_0x482e('0x32')]:_0x571384[_0x482e('0x2c')];if(_0x5eb07d[_0x482e('0x2e')]['includeAll']){_0x2ab586[_0x482e('0x3f')]=[{'all':!![]}];}_0x2ab586=_[_0x482e('0x3b')]({},_0x2ab586,_0x5eb07d[_0x482e('0x3d')]);return db[_0x482e('0x29')][_0x482e('0x44')](_0x2ab586)['then'](handleEntityNotFound(_0x599f01,null))[_0x482e('0x22')](respondWithResult(_0x599f01,null))[_0x482e('0x42')](handleError(_0x599f01,null));};exports[_0x482e('0x45')]=function(_0x5c0690,_0x2c24ae){return db[_0x482e('0x29')][_0x482e('0x45')](_0x5c0690[_0x482e('0x46')],{})[_0x482e('0x22')](respondWithResult(_0x2c24ae,0xc9))[_0x482e('0x42')](handleError(_0x2c24ae,null));};exports[_0x482e('0x21')]=function(_0xf12e32,_0x18e2a5){if(_0xf12e32['body']['id']){delete _0xf12e32['body']['id'];}return db['IntegrationReport']['find']({'where':{'id':_0xf12e32['params']['id']}})[_0x482e('0x22')](handleEntityNotFound(_0x18e2a5,null))[_0x482e('0x22')](saveUpdates(_0xf12e32[_0x482e('0x46')],null))[_0x482e('0x22')](respondWithResult(_0x18e2a5,null))['catch'](handleError(_0x18e2a5,null));};exports[_0x482e('0x23')]=function(_0x49390f,_0x35c938){return db[_0x482e('0x29')]['find']({'where':{'id':_0x49390f[_0x482e('0x47')]['id']}})[_0x482e('0x22')](handleEntityNotFound(_0x35c938,null))[_0x482e('0x22')](removeEntity(_0x35c938,null))['catch'](handleError(_0x35c938,null));};exports[_0x482e('0x48')]=function(_0x484025,_0x352cf2){return db[_0x482e('0x29')]['describe']()[_0x482e('0x22')](respondWithResult(_0x352cf2,null))[_0x482e('0x42')](handleError(_0x352cf2,null));};
\ No newline at end of file
+var _0x6ed3=['order','sort','pick','filter','VIRTUAL','includeAll','findAll','show','params','include','merge','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','index','map','IntegrationReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x16a786,_0x14a448){var _0xf881ef=function(_0x56e39e){while(--_0x56e39e){_0x16a786['push'](_0x16a786['shift']());}};_0xf881ef(++_0x14a448);}(_0x6ed3,0xfd));var _0x36ed=function(_0x5064a3,_0x5ec65c){_0x5064a3=_0x5064a3-0x0;var _0x1eade5=_0x6ed3[_0x5064a3];return _0x1eade5;};'use strict';var emlformat=require(_0x36ed('0x0'));var rimraf=require(_0x36ed('0x1'));var zipdir=require(_0x36ed('0x2'));var jsonpatch=require(_0x36ed('0x3'));var rp=require('request-promise');var moment=require(_0x36ed('0x4'));var BPromise=require(_0x36ed('0x5'));var Mustache=require(_0x36ed('0x6'));var util=require(_0x36ed('0x7'));var path=require(_0x36ed('0x8'));var sox=require(_0x36ed('0x9'));var csv=require(_0x36ed('0xa'));var ejs=require(_0x36ed('0xb'));var fs=require('fs');var fs_extra=require(_0x36ed('0xc'));var _=require(_0x36ed('0xd'));var squel=require('squel');var crypto=require(_0x36ed('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x36ed('0xf'));var toCsv=require(_0x36ed('0xa'));var querystring=require(_0x36ed('0x10'));var Papa=require(_0x36ed('0x11'));var Redis=require(_0x36ed('0x12'));var authService=require(_0x36ed('0x13'));var qs=require(_0x36ed('0x14'));var as=require(_0x36ed('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x36ed('0x16'))(_0x36ed('0x17'));var utils=require(_0x36ed('0x18'));var config=require(_0x36ed('0x19'));var licenseUtil=require(_0x36ed('0x1a'));var db=require(_0x36ed('0x1b'))['db'];function respondWithStatusCode(_0x75e3bd,_0x29306c){_0x29306c=_0x29306c||0xcc;return function(_0x410693){if(_0x410693){return _0x75e3bd[_0x36ed('0x1c')](_0x29306c);}return _0x75e3bd[_0x36ed('0x1d')](_0x29306c)[_0x36ed('0x1e')]();};}function respondWithResult(_0x3bf207,_0x302e0a){_0x302e0a=_0x302e0a||0xc8;return function(_0x16322b){if(_0x16322b){return _0x3bf207[_0x36ed('0x1d')](_0x302e0a)[_0x36ed('0x1f')](_0x16322b);}};}function respondWithFilteredResult(_0xc481e0,_0x2a86d3){return function(_0x380627){if(_0x380627){var _0x1327fb=typeof _0x2a86d3[_0x36ed('0x20')]===_0x36ed('0x21')&&typeof _0x2a86d3[_0x36ed('0x22')]===_0x36ed('0x21');var _0x43c892=_0x380627[_0x36ed('0x23')];var _0x5b1cec=_0x1327fb?0x0:_0x2a86d3[_0x36ed('0x20')];var _0x167e8c=_0x1327fb?_0x380627[_0x36ed('0x23')]:_0x2a86d3[_0x36ed('0x20')]+_0x2a86d3['limit'];var _0xa19711;if(_0x167e8c>=_0x43c892){_0x167e8c=_0x43c892;_0xa19711=0xc8;}else{_0xa19711=0xce;}_0xc481e0['status'](_0xa19711);return _0xc481e0[_0x36ed('0x24')]('Content-Range',_0x5b1cec+'-'+_0x167e8c+'/'+_0x43c892)[_0x36ed('0x1f')](_0x380627);}return null;};}function patchUpdates(_0x3e2845){return function(_0x572a96){try{jsonpatch[_0x36ed('0x25')](_0x572a96,_0x3e2845,!![]);}catch(_0x2398f9){return BPromise[_0x36ed('0x26')](_0x2398f9);}return _0x572a96[_0x36ed('0x27')]();};}function saveUpdates(_0xf0a73c,_0x3b1267){return function(_0x3b825d){if(_0x3b825d){return _0x3b825d[_0x36ed('0x28')](_0xf0a73c)[_0x36ed('0x29')](function(_0x4103dc){return _0x4103dc;});}return null;};}function removeEntity(_0x39f185,_0xacc709){return function(_0x58c7ae){if(_0x58c7ae){return _0x58c7ae[_0x36ed('0x2a')]()[_0x36ed('0x29')](function(){_0x39f185['status'](0xcc)[_0x36ed('0x1e')]();});}};}function handleEntityNotFound(_0x4167a1,_0x50164a){return function(_0x5753bc){if(!_0x5753bc){_0x4167a1[_0x36ed('0x1c')](0x194);}return _0x5753bc;};}function handleError(_0x29a575,_0x18c6cd){_0x18c6cd=_0x18c6cd||0x1f4;return function(_0x2203f1){logger[_0x36ed('0x2b')](_0x2203f1[_0x36ed('0x2c')]);if(_0x2203f1[_0x36ed('0x2d')]){delete _0x2203f1[_0x36ed('0x2d')];}_0x29a575[_0x36ed('0x1d')](_0x18c6cd)['send'](_0x2203f1);};}exports[_0x36ed('0x2e')]=function(_0x559b3b,_0x4aae8c){var _0x385266={},_0x3ba19d={},_0x2e5f2f={'count':0x0,'rows':[]};var _0x26b2fa=_[_0x36ed('0x2f')](db[_0x36ed('0x30')][_0x36ed('0x31')],function(_0x3aa70f){return{'name':_0x3aa70f[_0x36ed('0x32')],'type':_0x3aa70f[_0x36ed('0x33')][_0x36ed('0x34')]};});_0x3ba19d[_0x36ed('0x35')]=_[_0x36ed('0x2f')](_0x26b2fa,'name');_0x3ba19d[_0x36ed('0x36')]=_[_0x36ed('0x37')](_0x559b3b[_0x36ed('0x36')]);_0x3ba19d[_0x36ed('0x38')]=_[_0x36ed('0x39')](_0x3ba19d[_0x36ed('0x35')],_0x3ba19d[_0x36ed('0x36')]);_0x385266[_0x36ed('0x3a')]=_['intersection'](_0x3ba19d[_0x36ed('0x35')],qs[_0x36ed('0x3b')](_0x559b3b[_0x36ed('0x36')][_0x36ed('0x3b')]));_0x385266[_0x36ed('0x3a')]=_0x385266['attributes'][_0x36ed('0x3c')]?_0x385266[_0x36ed('0x3a')]:_0x3ba19d[_0x36ed('0x35')];if(!_0x559b3b[_0x36ed('0x36')][_0x36ed('0x3d')](_0x36ed('0x3e'))){_0x385266['limit']=qs[_0x36ed('0x22')](_0x559b3b[_0x36ed('0x36')][_0x36ed('0x22')]);_0x385266[_0x36ed('0x20')]=qs[_0x36ed('0x20')](_0x559b3b['query']['offset']);}_0x385266[_0x36ed('0x3f')]=qs[_0x36ed('0x40')](_0x559b3b['query']['sort']);_0x385266['where']=qs['filters'](_[_0x36ed('0x41')](_0x559b3b[_0x36ed('0x36')],_0x3ba19d[_0x36ed('0x38')]),_0x26b2fa);if(_0x559b3b[_0x36ed('0x36')][_0x36ed('0x42')]){_0x385266['where']=_['merge'](_0x385266['where'],{'$or':_[_0x36ed('0x2f')](_0x26b2fa,function(_0x20e9dd){if(_0x20e9dd[_0x36ed('0x33')]!==_0x36ed('0x43')){var _0x15add6={};_0x15add6[_0x20e9dd['name']]={'$like':'%'+_0x559b3b['query'][_0x36ed('0x42')]+'%'};return _0x15add6;}})});}_0x385266=_['merge']({},_0x385266,_0x559b3b['options']);var _0x24f4d4={'where':_0x385266['where']};return db[_0x36ed('0x30')][_0x36ed('0x23')](_0x24f4d4)[_0x36ed('0x29')](function(_0x5117c7){_0x2e5f2f[_0x36ed('0x23')]=_0x5117c7;if(_0x559b3b[_0x36ed('0x36')][_0x36ed('0x44')]){_0x385266['include']=[{'all':!![]}];}return db[_0x36ed('0x30')][_0x36ed('0x45')](_0x385266);})['then'](function(_0x306f9b){_0x2e5f2f['rows']=_0x306f9b;return _0x2e5f2f;})[_0x36ed('0x29')](respondWithFilteredResult(_0x4aae8c,_0x385266))['catch'](handleError(_0x4aae8c,null));};exports[_0x36ed('0x46')]=function(_0x1e2201,_0x29647d){var _0x48706f={'raw':![],'where':{'id':_0x1e2201[_0x36ed('0x47')]['id']}},_0x5aa889={};_0x5aa889['model']=_[_0x36ed('0x37')](db[_0x36ed('0x30')][_0x36ed('0x31')]);_0x5aa889[_0x36ed('0x36')]=_[_0x36ed('0x37')](_0x1e2201[_0x36ed('0x36')]);_0x5aa889[_0x36ed('0x38')]=_[_0x36ed('0x39')](_0x5aa889[_0x36ed('0x35')],_0x5aa889['query']);_0x48706f['attributes']=_[_0x36ed('0x39')](_0x5aa889[_0x36ed('0x35')],qs[_0x36ed('0x3b')](_0x1e2201['query'][_0x36ed('0x3b')]));_0x48706f[_0x36ed('0x3a')]=_0x48706f[_0x36ed('0x3a')]['length']?_0x48706f[_0x36ed('0x3a')]:_0x5aa889[_0x36ed('0x35')];if(_0x1e2201[_0x36ed('0x36')][_0x36ed('0x44')]){_0x48706f[_0x36ed('0x48')]=[{'all':!![]}];}_0x48706f=_[_0x36ed('0x49')]({},_0x48706f,_0x1e2201['options']);return db[_0x36ed('0x30')][_0x36ed('0x4a')](_0x48706f)[_0x36ed('0x29')](handleEntityNotFound(_0x29647d,null))[_0x36ed('0x29')](respondWithResult(_0x29647d,null))[_0x36ed('0x4b')](handleError(_0x29647d,null));};exports['create']=function(_0x55caad,_0x1ca3b8){return db[_0x36ed('0x30')][_0x36ed('0x4c')](_0x55caad[_0x36ed('0x4d')],{})[_0x36ed('0x29')](respondWithResult(_0x1ca3b8,0xc9))[_0x36ed('0x4b')](handleError(_0x1ca3b8,null));};exports[_0x36ed('0x28')]=function(_0xa8907d,_0x442255){if(_0xa8907d[_0x36ed('0x4d')]['id']){delete _0xa8907d[_0x36ed('0x4d')]['id'];}return db[_0x36ed('0x30')][_0x36ed('0x4a')]({'where':{'id':_0xa8907d['params']['id']}})[_0x36ed('0x29')](handleEntityNotFound(_0x442255,null))[_0x36ed('0x29')](saveUpdates(_0xa8907d[_0x36ed('0x4d')],null))[_0x36ed('0x29')](respondWithResult(_0x442255,null))['catch'](handleError(_0x442255,null));};exports[_0x36ed('0x2a')]=function(_0x1c39bc,_0x2534be){return db['IntegrationReport'][_0x36ed('0x4a')]({'where':{'id':_0x1c39bc['params']['id']}})[_0x36ed('0x29')](handleEntityNotFound(_0x2534be,null))[_0x36ed('0x29')](removeEntity(_0x2534be,null))['catch'](handleError(_0x2534be,null));};exports[_0x36ed('0x4e')]=function(_0x1c3f47,_0x3fa2a9){return db['IntegrationReport'][_0x36ed('0x4e')]()[_0x36ed('0x29')](respondWithResult(_0x3fa2a9,null))['catch'](handleError(_0x3fa2a9,null));};
\ No newline at end of file
index 1afe893..f5d80ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1144=['api','moment','path','../../config/environment','IntegrationReport','report_integration','util','../../config/logger'];(function(_0x5d71c9,_0xd8f0d2){var _0x160f2c=function(_0xcb697a){while(--_0xcb697a){_0x5d71c9['push'](_0x5d71c9['shift']());}};_0x160f2c(++_0xd8f0d2);}(_0x1144,0xd6));var _0x4114=function(_0x36bfec,_0x44cae7){_0x36bfec=_0x36bfec-0x0;var _0x466fc4=_0x1144[_0x36bfec];return _0x466fc4;};'use strict';var _=require('lodash');var util=require(_0x4114('0x0'));var logger=require(_0x4114('0x1'))(_0x4114('0x2'));var moment=require(_0x4114('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4114('0x4'));var rimraf=require('rimraf');var config=require(_0x4114('0x5'));var attributes=require('./integrationReport.attributes');module['exports']=function(_0x126641,_0x118c4e){return _0x126641['define'](_0x4114('0x6'),attributes,{'tableName':_0x4114('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcbca=['exports','define','IntegrationReport','util','../../config/logger','api','bluebird','request-promise','rimraf','./integrationReport.attributes'];(function(_0x160148,_0x5c0639){var _0x5d4a2c=function(_0x4e4317){while(--_0x4e4317){_0x160148['push'](_0x160148['shift']());}};_0x5d4a2c(++_0x5c0639);}(_0xcbca,0xf3));var _0xacbc=function(_0x5281b5,_0x11da97){_0x5281b5=_0x5281b5-0x0;var _0x2300cc=_0xcbca[_0x5281b5];return _0x2300cc;};'use strict';var _=require('lodash');var util=require(_0xacbc('0x0'));var logger=require(_0xacbc('0x1'))(_0xacbc('0x2'));var moment=require('moment');var BPromise=require(_0xacbc('0x3'));var rp=require(_0xacbc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xacbc('0x5'));var config=require('../../config/environment');var attributes=require(_0xacbc('0x6'));module[_0xacbc('0x7')]=function(_0x5dac27,_0x4a0179){return _0x5dac27[_0xacbc('0x8')](_0xacbc('0x9'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6d5f3dd..2b975be 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','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','IntegrationReport,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x7a29b7,_0x2e44fe){var _0x3bdfdf=function(_0x4927a4){while(--_0x4927a4){_0x7a29b7['push'](_0x7a29b7['shift']());}};_0x3bdfdf(++_0x2e44fe);}(_0x5fab,0x177));var _0xb5fa=function(_0x4a7193,_0x556c6a){_0x4a7193=_0x4a7193-0x0;var _0xc33d94=_0x5fab[_0x4a7193];return _0xc33d94;};'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']('IntegrationReport,\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')]('IntegrationReport,\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']('IntegrationReport,\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 _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x2ec806,_0x7f3355){var _0x25e206=function(_0x5e29d7){while(--_0x5e29d7){_0x2ec806['push'](_0x2ec806['shift']());}};_0x25e206(++_0x7f3355);}(_0xdb28,0x106));var _0x8db2=function(_0x92206a,_0xca6433){_0x92206a=_0x92206a-0x0;var _0x59713c=_0xdb28[_0x92206a];return _0x59713c;};'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')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
index f5d0b4d..c6bd788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72bd=['create','post','addInterval','/:id/sub_intervals/create_many','addIntervals','put','delete','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./interval.controller','isAuthenticated','index','get','/:id','show','/:id/sub_intervals'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x72bd,0xcf));var _0xd72b=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x72bd[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0xd72b('0x0'));var util=require('util');var path=require(_0xd72b('0x1'));var timeout=require(_0xd72b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd72b('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd72b('0x4'));var config=require(_0xd72b('0x5'));var controller=require(_0xd72b('0x6'));router['get']('/',auth[_0xd72b('0x7')](),controller[_0xd72b('0x8')]);router[_0xd72b('0x9')](_0xd72b('0xa'),auth[_0xd72b('0x7')](),controller[_0xd72b('0xb')]);router[_0xd72b('0x9')](_0xd72b('0xc'),auth[_0xd72b('0x7')](),controller['getIntervals']);router['post']('/',auth[_0xd72b('0x7')](),controller[_0xd72b('0xd')]);router[_0xd72b('0xe')](_0xd72b('0xc'),auth['isAuthenticated'](),controller[_0xd72b('0xf')]);router[_0xd72b('0xe')](_0xd72b('0x10'),auth[_0xd72b('0x7')](),controller[_0xd72b('0x11')]);router[_0xd72b('0x12')]('/:id',auth[_0xd72b('0x7')](),controller['update']);router[_0xd72b('0x13')](_0xd72b('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x07e8=['create','addInterval','/:id/sub_intervals/create_many','addIntervals','update','delete','destroy','multer','util','path','express','fs-extra','../../config/environment','./interval.controller','get','index','/:id','isAuthenticated','show','/:id/sub_intervals','getIntervals','post'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x07e8,0x10f));var _0x807e=function(_0x452427,_0x23a6ac){_0x452427=_0x452427-0x0;var _0x1f8c4a=_0x07e8[_0x452427];return _0x1f8c4a;};'use strict';var multer=require(_0x807e('0x0'));var util=require(_0x807e('0x1'));var path=require(_0x807e('0x2'));var timeout=require('connect-timeout');var express=require(_0x807e('0x3'));var router=express['Router']();var fs_extra=require(_0x807e('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x807e('0x5'));var controller=require(_0x807e('0x6'));router[_0x807e('0x7')]('/',auth['isAuthenticated'](),controller[_0x807e('0x8')]);router[_0x807e('0x7')](_0x807e('0x9'),auth[_0x807e('0xa')](),controller[_0x807e('0xb')]);router['get'](_0x807e('0xc'),auth[_0x807e('0xa')](),controller[_0x807e('0xd')]);router[_0x807e('0xe')]('/',auth[_0x807e('0xa')](),controller[_0x807e('0xf')]);router[_0x807e('0xe')](_0x807e('0xc'),auth[_0x807e('0xa')](),controller[_0x807e('0x10')]);router[_0x807e('0xe')](_0x807e('0x11'),auth[_0x807e('0xa')](),controller[_0x807e('0x12')]);router['put'](_0x807e('0x9'),auth[_0x807e('0xa')](),controller[_0x807e('0x13')]);router[_0x807e('0x14')](_0x807e('0x9'),auth[_0x807e('0xa')](),controller[_0x807e('0x15')]);module['exports']=router;
\ No newline at end of file
index ff1f030..658a07c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d5=['STRING','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x85d5,0x9a));var _0x585d=function(_0x24e48b,_0x25952f){_0x24e48b=_0x24e48b-0x0;var _0x306bea=_0x85d5[_0x24e48b];return _0x306bea;};'use strict';var Sequelize=require(_0x585d('0x0'));module[_0x585d('0x1')]={'name':{'type':Sequelize[_0x585d('0x2')]},'description':{'type':Sequelize[_0x585d('0x2')]},'interval':{'type':Sequelize[_0x585d('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xd917=['exports','STRING','sequelize'];(function(_0xcee874,_0x48f5c9){var _0x1a7242=function(_0x2f1970){while(--_0x2f1970){_0xcee874['push'](_0xcee874['shift']());}};_0x1a7242(++_0x48f5c9);}(_0xd917,0x1d9));var _0x7d91=function(_0x1b4b77,_0x220206){_0x1b4b77=_0x1b4b77-0x0;var _0x17ece0=_0xd917[_0x1b4b77];return _0x17ece0;};'use strict';var Sequelize=require(_0x7d91('0x0'));module[_0x7d91('0x1')]={'name':{'type':Sequelize[_0x7d91('0x2')]},'description':{'type':Sequelize[_0x7d91('0x2')]},'interval':{'type':Sequelize[_0x7d91('0x2')],'allowNull':!![]}};
\ No newline at end of file
index af316a5..0eb930b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb16=['offset','undefined','limit','count','set','Content-Range','apply','update','destroy','then','get','UserProfileResource','sendStatus','name','index','Interval','rawAttributes','fieldName','type','key','model','map','keys','filters','attributes','intersection','fields','query','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Intervals','find','autoAssociation','error','body','addInterval','getIntervals','findOne','sequelize','transaction','IntervalId','bulkCreate','findAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json'];(function(_0x189e85,_0x4eb513){var _0x5a702b=function(_0x2f2e98){while(--_0x2f2e98){_0x189e85['push'](_0x189e85['shift']());}};_0x5a702b(++_0x4eb513);}(_0xeb16,0x1ec));var _0x6eb1=function(_0x579572,_0x545a04){_0x579572=_0x579572-0x0;var _0x4142f7=_0xeb16[_0x579572];return _0x4142f7;};'use strict';var emlformat=require(_0x6eb1('0x0'));var rimraf=require(_0x6eb1('0x1'));var zipdir=require(_0x6eb1('0x2'));var jsonpatch=require(_0x6eb1('0x3'));var rp=require('request-promise');var moment=require(_0x6eb1('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6eb1('0x5'));var path=require(_0x6eb1('0x6'));var sox=require('sox');var csv=require(_0x6eb1('0x7'));var ejs=require(_0x6eb1('0x8'));var fs=require('fs');var fs_extra=require(_0x6eb1('0x9'));var _=require('lodash');var squel=require(_0x6eb1('0xa'));var crypto=require('crypto');var jsforce=require(_0x6eb1('0xb'));var deskjs=require(_0x6eb1('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6eb1('0xd'));var Redis=require(_0x6eb1('0xe'));var authService=require(_0x6eb1('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6eb1('0x10'));var logger=require(_0x6eb1('0x11'))(_0x6eb1('0x12'));var utils=require(_0x6eb1('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6eb1('0x14'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x584540,_0x56a71c){_0x56a71c=_0x56a71c||0xcc;return function(_0x215169){if(_0x215169){return _0x584540['sendStatus'](_0x56a71c);}return _0x584540[_0x6eb1('0x15')](_0x56a71c)[_0x6eb1('0x16')]();};}function respondWithResult(_0x51bf97,_0x3d0879){_0x3d0879=_0x3d0879||0xc8;return function(_0x3605ca){if(_0x3605ca){return _0x51bf97[_0x6eb1('0x15')](_0x3d0879)[_0x6eb1('0x17')](_0x3605ca);}};}function respondWithFilteredResult(_0x553aa1,_0x2e8654){return function(_0x277992){if(_0x277992){var _0x31676a=typeof _0x2e8654[_0x6eb1('0x18')]===_0x6eb1('0x19')&&typeof _0x2e8654[_0x6eb1('0x1a')]===_0x6eb1('0x19');var _0x497f01=_0x277992[_0x6eb1('0x1b')];var _0x272587=_0x31676a?0x0:_0x2e8654[_0x6eb1('0x18')];var _0x9d4be2=_0x31676a?_0x277992[_0x6eb1('0x1b')]:_0x2e8654[_0x6eb1('0x18')]+_0x2e8654[_0x6eb1('0x1a')];var _0x28de37;if(_0x9d4be2>=_0x497f01){_0x9d4be2=_0x497f01;_0x28de37=0xc8;}else{_0x28de37=0xce;}_0x553aa1[_0x6eb1('0x15')](_0x28de37);return _0x553aa1[_0x6eb1('0x1c')](_0x6eb1('0x1d'),_0x272587+'-'+_0x9d4be2+'/'+_0x497f01)['json'](_0x277992);}return null;};}function patchUpdates(_0x48fa2b){return function(_0x2d2a3c){try{jsonpatch[_0x6eb1('0x1e')](_0x2d2a3c,_0x48fa2b,!![]);}catch(_0x1f4de2){return BPromise['reject'](_0x1f4de2);}return _0x2d2a3c['save']();};}function saveUpdates(_0x147ab3,_0x4eb1c0){return function(_0x47ba52){if(_0x47ba52){return _0x47ba52[_0x6eb1('0x1f')](_0x147ab3)['then'](function(_0x1f1a3b){return _0x1f1a3b;});}return null;};}function removeEntity(_0x30f231,_0x25cc27){return function(_0x5af704){if(_0x5af704){return _0x5af704[_0x6eb1('0x20')]()[_0x6eb1('0x21')](function(){var _0x517249=_0x5af704[_0x6eb1('0x22')]({'plain':!![]});var _0x3b9433='Intervals';return db[_0x6eb1('0x23')][_0x6eb1('0x20')]({'where':{'type':_0x3b9433,'resourceId':_0x517249['id']}})[_0x6eb1('0x21')](function(){return _0x5af704;});})[_0x6eb1('0x21')](function(){_0x30f231['status'](0xcc)[_0x6eb1('0x16')]();});}};}function handleEntityNotFound(_0x366860,_0x1f05f9){return function(_0x1debe7){if(!_0x1debe7){_0x366860[_0x6eb1('0x24')](0x194);}return _0x1debe7;};}function handleError(_0x4bff16,_0x11d1c5){_0x11d1c5=_0x11d1c5||0x1f4;return function(_0x9d2efa){logger['error'](_0x9d2efa['stack']);if(_0x9d2efa[_0x6eb1('0x25')]){delete _0x9d2efa['name'];}_0x4bff16[_0x6eb1('0x15')](_0x11d1c5)['send'](_0x9d2efa);};}exports[_0x6eb1('0x26')]=function(_0x11fe19,_0x2b4645){var _0x41002e={},_0x58cc7e={},_0x5c7e71={'count':0x0,'rows':[]};var _0x8772ea=_['map'](db[_0x6eb1('0x27')][_0x6eb1('0x28')],function(_0x10c668){return{'name':_0x10c668[_0x6eb1('0x29')],'type':_0x10c668[_0x6eb1('0x2a')][_0x6eb1('0x2b')]};});_0x58cc7e[_0x6eb1('0x2c')]=_[_0x6eb1('0x2d')](_0x8772ea,'name');_0x58cc7e['query']=_[_0x6eb1('0x2e')](_0x11fe19['query']);_0x58cc7e[_0x6eb1('0x2f')]=_['intersection'](_0x58cc7e['model'],_0x58cc7e['query']);_0x41002e[_0x6eb1('0x30')]=_[_0x6eb1('0x31')](_0x58cc7e[_0x6eb1('0x2c')],qs[_0x6eb1('0x32')](_0x11fe19['query']['fields']));_0x41002e[_0x6eb1('0x30')]=_0x41002e[_0x6eb1('0x30')]['length']?_0x41002e['attributes']:_0x58cc7e[_0x6eb1('0x2c')];if(!_0x11fe19[_0x6eb1('0x33')][_0x6eb1('0x34')](_0x6eb1('0x35'))){_0x41002e[_0x6eb1('0x1a')]=qs[_0x6eb1('0x1a')](_0x11fe19[_0x6eb1('0x33')][_0x6eb1('0x1a')]);_0x41002e[_0x6eb1('0x18')]=qs[_0x6eb1('0x18')](_0x11fe19[_0x6eb1('0x33')]['offset']);}_0x41002e[_0x6eb1('0x36')]=qs['sort'](_0x11fe19[_0x6eb1('0x33')][_0x6eb1('0x37')]);_0x41002e[_0x6eb1('0x38')]=qs['filters'](_[_0x6eb1('0x39')](_0x11fe19[_0x6eb1('0x33')],_0x58cc7e[_0x6eb1('0x2f')]),_0x8772ea);if(_0x11fe19[_0x6eb1('0x33')][_0x6eb1('0x3a')]){_0x41002e[_0x6eb1('0x38')]=_[_0x6eb1('0x3b')](_0x41002e[_0x6eb1('0x38')],{'$or':_[_0x6eb1('0x2d')](_0x8772ea,function(_0x521764){if(_0x521764['type']!==_0x6eb1('0x3c')){var _0x5274b3={};_0x5274b3[_0x521764[_0x6eb1('0x25')]]={'$like':'%'+_0x11fe19['query'][_0x6eb1('0x3a')]+'%'};return _0x5274b3;}})});}_0x41002e=_[_0x6eb1('0x3b')]({},_0x41002e,_0x11fe19[_0x6eb1('0x3d')]);var _0x389bfc={'where':_0x41002e[_0x6eb1('0x38')]};return db[_0x6eb1('0x27')]['count'](_0x389bfc)['then'](function(_0x5eaee5){_0x5c7e71[_0x6eb1('0x1b')]=_0x5eaee5;if(_0x11fe19['query'][_0x6eb1('0x3e')]){_0x41002e[_0x6eb1('0x3f')]=[{'all':!![]}];}return db['Interval']['findAll'](_0x41002e);})[_0x6eb1('0x21')](function(_0x57bd79){_0x5c7e71[_0x6eb1('0x40')]=_0x57bd79;return _0x5c7e71;})[_0x6eb1('0x21')](respondWithFilteredResult(_0x2b4645,_0x41002e))[_0x6eb1('0x41')](handleError(_0x2b4645,null));};exports[_0x6eb1('0x42')]=function(_0x513bf4,_0xb022bd){var _0xe050d0={'raw':!![],'where':{'id':_0x513bf4[_0x6eb1('0x43')]['id']}},_0x13d3f4={};_0x13d3f4[_0x6eb1('0x2c')]=_[_0x6eb1('0x2e')](db['Interval'][_0x6eb1('0x28')]);_0x13d3f4[_0x6eb1('0x33')]=_[_0x6eb1('0x2e')](_0x513bf4[_0x6eb1('0x33')]);_0x13d3f4[_0x6eb1('0x2f')]=_[_0x6eb1('0x31')](_0x13d3f4['model'],_0x13d3f4[_0x6eb1('0x33')]);_0xe050d0[_0x6eb1('0x30')]=_[_0x6eb1('0x31')](_0x13d3f4[_0x6eb1('0x2c')],qs['fields'](_0x513bf4[_0x6eb1('0x33')][_0x6eb1('0x32')]));_0xe050d0[_0x6eb1('0x30')]=_0xe050d0[_0x6eb1('0x30')][_0x6eb1('0x44')]?_0xe050d0[_0x6eb1('0x30')]:_0x13d3f4['model'];if(_0x513bf4[_0x6eb1('0x33')]['includeAll']){_0xe050d0['include']=[{'all':!![]}];}_0xe050d0=_['merge']({},_0xe050d0,_0x513bf4[_0x6eb1('0x3d')]);return db[_0x6eb1('0x27')]['find'](_0xe050d0)[_0x6eb1('0x21')](handleEntityNotFound(_0xb022bd,null))['then'](respondWithResult(_0xb022bd,null))[_0x6eb1('0x41')](handleError(_0xb022bd,null));};exports['create']=function(_0xea71fb,_0xc1f95f){return db[_0x6eb1('0x27')][_0x6eb1('0x45')](_0xea71fb['body'],{})[_0x6eb1('0x21')](function(_0x15138c){var _0x20b585=_0xea71fb[_0x6eb1('0x46')][_0x6eb1('0x22')]({'plain':!![]});if(!_0x20b585)throw new Error(_0x6eb1('0x47'));if(_0x20b585[_0x6eb1('0x48')]===_0x6eb1('0x46')){var _0x286a16=_0x15138c['get']({'plain':!![]});var _0x750d2c=_0x6eb1('0x49');return db['UserProfileSection'][_0x6eb1('0x4a')]({'where':{'name':_0x750d2c,'userProfileId':_0x20b585['userProfileId']},'raw':!![]})[_0x6eb1('0x21')](function(_0x57af06){if(_0x57af06&&_0x57af06[_0x6eb1('0x4b')]===0x0){return db['UserProfileResource'][_0x6eb1('0x45')]({'name':_0x286a16[_0x6eb1('0x25')],'resourceId':_0x286a16['id'],'type':_0x57af06['name'],'sectionId':_0x57af06['id']},{})['then'](function(){return _0x15138c;});}else{return _0x15138c;}})[_0x6eb1('0x41')](function(_0x3fb795){logger[_0x6eb1('0x4c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3fb795);throw _0x3fb795;});}return _0x15138c;})['then'](respondWithResult(_0xc1f95f,0xc9))[_0x6eb1('0x41')](handleError(_0xc1f95f,null));};exports[_0x6eb1('0x1f')]=function(_0x17ebb5,_0x26c654){if(_0x17ebb5[_0x6eb1('0x4d')]['id']){delete _0x17ebb5['body']['id'];}return db[_0x6eb1('0x27')][_0x6eb1('0x4a')]({'where':{'id':_0x17ebb5[_0x6eb1('0x43')]['id']}})[_0x6eb1('0x21')](handleEntityNotFound(_0x26c654,null))[_0x6eb1('0x21')](saveUpdates(_0x17ebb5['body'],null))[_0x6eb1('0x21')](respondWithResult(_0x26c654,null))[_0x6eb1('0x41')](handleError(_0x26c654,null));};exports[_0x6eb1('0x20')]=function(_0x14524e,_0x450eef){return db['Interval'][_0x6eb1('0x4a')]({'where':{'id':_0x14524e['params']['id']}})['then'](handleEntityNotFound(_0x450eef,null))[_0x6eb1('0x21')](removeEntity(_0x450eef,null))['catch'](handleError(_0x450eef,null));};exports[_0x6eb1('0x4e')]=function(_0x1e0c80,_0x2ac465,_0x5e8d4a){if(_0x1e0c80['body']['id']){delete _0x1e0c80['body']['id'];}return db['Interval']['find']({'where':{'id':_0x1e0c80[_0x6eb1('0x43')]['id']}})['then'](handleEntityNotFound(_0x2ac465,null))[_0x6eb1('0x21')](function(_0x4460c3){if(_0x4460c3){_0x1e0c80[_0x6eb1('0x4d')]['IntervalId']=_0x4460c3['id'];return db[_0x6eb1('0x27')][_0x6eb1('0x45')](_0x1e0c80[_0x6eb1('0x4d')]);}})['then'](respondWithResult(_0x2ac465,null))['catch'](handleError(_0x2ac465,null));};exports[_0x6eb1('0x4f')]=function(_0x291e61,_0x24b128,_0x38f7be){var _0x2aabe={};var _0x32febe={};var _0x36a2ca;var _0x1d1ca8;return db[_0x6eb1('0x27')][_0x6eb1('0x50')]({'where':{'id':_0x291e61[_0x6eb1('0x43')]['id']}})['then'](handleEntityNotFound(_0x24b128,null))[_0x6eb1('0x21')](function(_0x472c28){if(_0x472c28){_0x36a2ca=_0x472c28;_0x32febe[_0x6eb1('0x2c')]=_[_0x6eb1('0x2e')](db[_0x6eb1('0x27')][_0x6eb1('0x28')]);_0x32febe[_0x6eb1('0x33')]=_[_0x6eb1('0x2e')](_0x291e61[_0x6eb1('0x33')]);_0x32febe[_0x6eb1('0x2f')]=_[_0x6eb1('0x31')](_0x32febe[_0x6eb1('0x2c')],_0x32febe[_0x6eb1('0x33')]);_0x2aabe[_0x6eb1('0x30')]=_[_0x6eb1('0x31')](_0x32febe[_0x6eb1('0x2c')],qs[_0x6eb1('0x32')](_0x291e61[_0x6eb1('0x33')]['fields']));_0x2aabe['attributes']=_0x2aabe[_0x6eb1('0x30')][_0x6eb1('0x44')]?_0x2aabe[_0x6eb1('0x30')]:_0x32febe[_0x6eb1('0x2c')];_0x2aabe[_0x6eb1('0x36')]=qs['sort'](_0x291e61[_0x6eb1('0x33')][_0x6eb1('0x37')]);_0x2aabe[_0x6eb1('0x38')]=qs['filters'](_['pick'](_0x291e61['query'],_0x32febe[_0x6eb1('0x2f')]));if(_0x291e61['query']['filter']){_0x2aabe[_0x6eb1('0x38')]=_[_0x6eb1('0x3b')](_0x2aabe[_0x6eb1('0x38')],{'$or':_[_0x6eb1('0x2d')](_0x2aabe[_0x6eb1('0x30')],function(_0x358ed2){var _0x1edd1e={};_0x1edd1e[_0x358ed2]={'$like':'%'+_0x291e61[_0x6eb1('0x33')][_0x6eb1('0x3a')]+'%'};return _0x1edd1e;})});}_0x2aabe=_[_0x6eb1('0x3b')]({},_0x2aabe,_0x291e61[_0x6eb1('0x3d')]);return _0x36a2ca[_0x6eb1('0x4f')](_0x2aabe);}})['then'](function(_0x81709a){if(_0x81709a){_0x1d1ca8=_0x81709a[_0x6eb1('0x44')];if(!_0x291e61[_0x6eb1('0x33')][_0x6eb1('0x34')]('nolimit')){_0x2aabe[_0x6eb1('0x1a')]=qs[_0x6eb1('0x1a')](_0x291e61[_0x6eb1('0x33')][_0x6eb1('0x1a')]);_0x2aabe[_0x6eb1('0x18')]=qs[_0x6eb1('0x18')](_0x291e61['query'][_0x6eb1('0x18')]);}return _0x36a2ca['getIntervals'](_0x2aabe);}})['then'](function(_0x30d8a8){if(_0x30d8a8){return _0x30d8a8?{'count':_0x1d1ca8,'rows':_0x30d8a8}:null;}})[_0x6eb1('0x21')](respondWithResult(_0x24b128,null))[_0x6eb1('0x41')](handleError(_0x24b128,null));};exports['addIntervals']=function(_0x4ad91,_0x46cc01,_0xd2bfb5){return db[_0x6eb1('0x27')][_0x6eb1('0x50')]({'where':{'id':_0x4ad91[_0x6eb1('0x43')]['id']}})[_0x6eb1('0x21')](handleEntityNotFound(_0x46cc01,null))[_0x6eb1('0x21')](function(_0x5e9c6a){if(_0x5e9c6a){return db[_0x6eb1('0x51')][_0x6eb1('0x52')](function(_0x1db2bf){return db[_0x6eb1('0x27')][_0x6eb1('0x20')]({'where':{'IntervalId':_0x4ad91[_0x6eb1('0x43')]['id']},'transaction':_0x1db2bf})[_0x6eb1('0x21')](function(_0x157412){var _0x38befa=_[_0x6eb1('0x2d')](_0x4ad91[_0x6eb1('0x4d')],function(_0x409f50){delete _0x409f50['id'];_0x409f50[_0x6eb1('0x53')]=_0x4ad91[_0x6eb1('0x43')]['id'];return _0x409f50;});return db['Interval'][_0x6eb1('0x54')](_0x38befa,{'transaction':_0x1db2bf});});})[_0x6eb1('0x21')](function(){return db['Interval'][_0x6eb1('0x55')]({'where':{'IntervalId':_0x4ad91[_0x6eb1('0x43')]['id']}});});}})[_0x6eb1('0x21')](respondWithResult(_0x46cc01,null))['catch'](handleError(_0x46cc01,null));};
\ No newline at end of file
+var _0xd7dc=['Intervals','error','name','send','index','map','Interval','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','catch','show','params','includeAll','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','destroy','addInterval','IntervalId','findOne','getIntervals','addIntervals','sequelize','findAll','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','get'];(function(_0xa3463d,_0x32f8da){var _0x50fd67=function(_0xb984fd){while(--_0xb984fd){_0xa3463d['push'](_0xa3463d['shift']());}};_0x50fd67(++_0x32f8da);}(_0xd7dc,0x88));var _0xcd7d=function(_0x12019a,_0x407485){_0x12019a=_0x12019a-0x0;var _0x49520a=_0xd7dc[_0x12019a];return _0x49520a;};'use strict';var emlformat=require(_0xcd7d('0x0'));var rimraf=require(_0xcd7d('0x1'));var zipdir=require(_0xcd7d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcd7d('0x3'));var moment=require(_0xcd7d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcd7d('0x5'));var path=require(_0xcd7d('0x6'));var sox=require('sox');var csv=require(_0xcd7d('0x7'));var ejs=require(_0xcd7d('0x8'));var fs=require('fs');var fs_extra=require(_0xcd7d('0x9'));var _=require(_0xcd7d('0xa'));var squel=require(_0xcd7d('0xb'));var crypto=require(_0xcd7d('0xc'));var jsforce=require(_0xcd7d('0xd'));var deskjs=require(_0xcd7d('0xe'));var toCsv=require('to-csv');var querystring=require(_0xcd7d('0xf'));var Papa=require(_0xcd7d('0x10'));var Redis=require(_0xcd7d('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xcd7d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcd7d('0x13'));var logger=require(_0xcd7d('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xcd7d('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xcd7d('0x16'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0xfe993c,_0x113c3a){_0x113c3a=_0x113c3a||0xcc;return function(_0x563252){if(_0x563252){return _0xfe993c[_0xcd7d('0x17')](_0x113c3a);}return _0xfe993c[_0xcd7d('0x18')](_0x113c3a)[_0xcd7d('0x19')]();};}function respondWithResult(_0xe3dc72,_0x13a674){_0x13a674=_0x13a674||0xc8;return function(_0x46c618){if(_0x46c618){return _0xe3dc72[_0xcd7d('0x18')](_0x13a674)[_0xcd7d('0x1a')](_0x46c618);}};}function respondWithFilteredResult(_0x5bfec9,_0x32f423){return function(_0x2f19ea){if(_0x2f19ea){var _0x541cbd=typeof _0x32f423[_0xcd7d('0x1b')]===_0xcd7d('0x1c')&&typeof _0x32f423['limit']===_0xcd7d('0x1c');var _0xd8053=_0x2f19ea[_0xcd7d('0x1d')];var _0x451977=_0x541cbd?0x0:_0x32f423[_0xcd7d('0x1b')];var _0xf8a10=_0x541cbd?_0x2f19ea[_0xcd7d('0x1d')]:_0x32f423[_0xcd7d('0x1b')]+_0x32f423[_0xcd7d('0x1e')];var _0xf6ffb6;if(_0xf8a10>=_0xd8053){_0xf8a10=_0xd8053;_0xf6ffb6=0xc8;}else{_0xf6ffb6=0xce;}_0x5bfec9['status'](_0xf6ffb6);return _0x5bfec9[_0xcd7d('0x1f')](_0xcd7d('0x20'),_0x451977+'-'+_0xf8a10+'/'+_0xd8053)['json'](_0x2f19ea);}return null;};}function patchUpdates(_0x3751f5){return function(_0x23624a){try{jsonpatch[_0xcd7d('0x21')](_0x23624a,_0x3751f5,!![]);}catch(_0x16105c){return BPromise[_0xcd7d('0x22')](_0x16105c);}return _0x23624a['save']();};}function saveUpdates(_0x3975a3,_0x5ad536){return function(_0x8ed80c){if(_0x8ed80c){return _0x8ed80c[_0xcd7d('0x23')](_0x3975a3)[_0xcd7d('0x24')](function(_0x111026){return _0x111026;});}return null;};}function removeEntity(_0x2efa8d,_0x22df9e){return function(_0x77d234){if(_0x77d234){return _0x77d234['destroy']()['then'](function(){var _0x42ba6c=_0x77d234[_0xcd7d('0x25')]({'plain':!![]});var _0x1e3bfe=_0xcd7d('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x1e3bfe,'resourceId':_0x42ba6c['id']}})['then'](function(){return _0x77d234;});})[_0xcd7d('0x24')](function(){_0x2efa8d[_0xcd7d('0x18')](0xcc)[_0xcd7d('0x19')]();});}};}function handleEntityNotFound(_0x5c015b,_0x3f4f7d){return function(_0x376e9e){if(!_0x376e9e){_0x5c015b[_0xcd7d('0x17')](0x194);}return _0x376e9e;};}function handleError(_0x49e00e,_0x18ef9a){_0x18ef9a=_0x18ef9a||0x1f4;return function(_0x4abf65){logger[_0xcd7d('0x27')](_0x4abf65['stack']);if(_0x4abf65[_0xcd7d('0x28')]){delete _0x4abf65[_0xcd7d('0x28')];}_0x49e00e[_0xcd7d('0x18')](_0x18ef9a)[_0xcd7d('0x29')](_0x4abf65);};}exports[_0xcd7d('0x2a')]=function(_0x42e13a,_0xeb30cd){var _0x1c505d={},_0x5735eb={},_0xcb12d2={'count':0x0,'rows':[]};var _0x266197=_[_0xcd7d('0x2b')](db[_0xcd7d('0x2c')]['rawAttributes'],function(_0x38df8c){return{'name':_0x38df8c[_0xcd7d('0x2d')],'type':_0x38df8c[_0xcd7d('0x2e')][_0xcd7d('0x2f')]};});_0x5735eb[_0xcd7d('0x30')]=_['map'](_0x266197,_0xcd7d('0x28'));_0x5735eb[_0xcd7d('0x31')]=_[_0xcd7d('0x32')](_0x42e13a['query']);_0x5735eb[_0xcd7d('0x33')]=_[_0xcd7d('0x34')](_0x5735eb[_0xcd7d('0x30')],_0x5735eb[_0xcd7d('0x31')]);_0x1c505d[_0xcd7d('0x35')]=_[_0xcd7d('0x34')](_0x5735eb[_0xcd7d('0x30')],qs['fields'](_0x42e13a[_0xcd7d('0x31')][_0xcd7d('0x36')]));_0x1c505d['attributes']=_0x1c505d[_0xcd7d('0x35')][_0xcd7d('0x37')]?_0x1c505d[_0xcd7d('0x35')]:_0x5735eb[_0xcd7d('0x30')];if(!_0x42e13a[_0xcd7d('0x31')][_0xcd7d('0x38')](_0xcd7d('0x39'))){_0x1c505d['limit']=qs['limit'](_0x42e13a[_0xcd7d('0x31')][_0xcd7d('0x1e')]);_0x1c505d[_0xcd7d('0x1b')]=qs[_0xcd7d('0x1b')](_0x42e13a[_0xcd7d('0x31')][_0xcd7d('0x1b')]);}_0x1c505d[_0xcd7d('0x3a')]=qs[_0xcd7d('0x3b')](_0x42e13a['query']['sort']);_0x1c505d[_0xcd7d('0x3c')]=qs[_0xcd7d('0x33')](_[_0xcd7d('0x3d')](_0x42e13a[_0xcd7d('0x31')],_0x5735eb[_0xcd7d('0x33')]),_0x266197);if(_0x42e13a[_0xcd7d('0x31')][_0xcd7d('0x3e')]){_0x1c505d[_0xcd7d('0x3c')]=_['merge'](_0x1c505d['where'],{'$or':_[_0xcd7d('0x2b')](_0x266197,function(_0x2bbbf1){if(_0x2bbbf1[_0xcd7d('0x2e')]!==_0xcd7d('0x3f')){var _0x478ad2={};_0x478ad2[_0x2bbbf1[_0xcd7d('0x28')]]={'$like':'%'+_0x42e13a['query']['filter']+'%'};return _0x478ad2;}})});}_0x1c505d=_[_0xcd7d('0x40')]({},_0x1c505d,_0x42e13a[_0xcd7d('0x41')]);var _0x51610c={'where':_0x1c505d[_0xcd7d('0x3c')]};return db[_0xcd7d('0x2c')][_0xcd7d('0x1d')](_0x51610c)[_0xcd7d('0x24')](function(_0x2b53c3){_0xcb12d2[_0xcd7d('0x1d')]=_0x2b53c3;if(_0x42e13a[_0xcd7d('0x31')]['includeAll']){_0x1c505d['include']=[{'all':!![]}];}return db['Interval']['findAll'](_0x1c505d);})['then'](function(_0x32d6ef){_0xcb12d2['rows']=_0x32d6ef;return _0xcb12d2;})['then'](respondWithFilteredResult(_0xeb30cd,_0x1c505d))[_0xcd7d('0x42')](handleError(_0xeb30cd,null));};exports[_0xcd7d('0x43')]=function(_0x572bda,_0x556116){var _0x39c9e1={'raw':!![],'where':{'id':_0x572bda[_0xcd7d('0x44')]['id']}},_0x27270f={};_0x27270f[_0xcd7d('0x30')]=_['keys'](db[_0xcd7d('0x2c')]['rawAttributes']);_0x27270f[_0xcd7d('0x31')]=_['keys'](_0x572bda[_0xcd7d('0x31')]);_0x27270f[_0xcd7d('0x33')]=_[_0xcd7d('0x34')](_0x27270f[_0xcd7d('0x30')],_0x27270f['query']);_0x39c9e1[_0xcd7d('0x35')]=_[_0xcd7d('0x34')](_0x27270f['model'],qs['fields'](_0x572bda[_0xcd7d('0x31')][_0xcd7d('0x36')]));_0x39c9e1['attributes']=_0x39c9e1[_0xcd7d('0x35')][_0xcd7d('0x37')]?_0x39c9e1[_0xcd7d('0x35')]:_0x27270f['model'];if(_0x572bda[_0xcd7d('0x31')][_0xcd7d('0x45')]){_0x39c9e1[_0xcd7d('0x46')]=[{'all':!![]}];}_0x39c9e1=_['merge']({},_0x39c9e1,_0x572bda['options']);return db[_0xcd7d('0x2c')]['find'](_0x39c9e1)[_0xcd7d('0x24')](handleEntityNotFound(_0x556116,null))[_0xcd7d('0x24')](respondWithResult(_0x556116,null))[_0xcd7d('0x42')](handleError(_0x556116,null));};exports[_0xcd7d('0x47')]=function(_0x22c701,_0x2c085d){return db[_0xcd7d('0x2c')]['create'](_0x22c701[_0xcd7d('0x48')],{})['then'](function(_0xaffe17){var _0x3b5305=_0x22c701[_0xcd7d('0x49')][_0xcd7d('0x25')]({'plain':!![]});if(!_0x3b5305)throw new Error(_0xcd7d('0x4a'));if(_0x3b5305[_0xcd7d('0x4b')]==='user'){var _0x4e04ee=_0xaffe17['get']({'plain':!![]});var _0x3a213d=_0xcd7d('0x26');return db['UserProfileSection']['find']({'where':{'name':_0x3a213d,'userProfileId':_0x3b5305['userProfileId']},'raw':!![]})[_0xcd7d('0x24')](function(_0x2a59f2){if(_0x2a59f2&&_0x2a59f2[_0xcd7d('0x4c')]===0x0){return db['UserProfileResource'][_0xcd7d('0x47')]({'name':_0x4e04ee['name'],'resourceId':_0x4e04ee['id'],'type':_0x2a59f2['name'],'sectionId':_0x2a59f2['id']},{})[_0xcd7d('0x24')](function(){return _0xaffe17;});}else{return _0xaffe17;}})[_0xcd7d('0x42')](function(_0x1edaea){logger[_0xcd7d('0x27')](_0xcd7d('0x4d'),_0x1edaea);throw _0x1edaea;});}return _0xaffe17;})['then'](respondWithResult(_0x2c085d,0xc9))[_0xcd7d('0x42')](handleError(_0x2c085d,null));};exports[_0xcd7d('0x23')]=function(_0x1d7e64,_0x4b3706){if(_0x1d7e64['body']['id']){delete _0x1d7e64['body']['id'];}return db[_0xcd7d('0x2c')][_0xcd7d('0x4e')]({'where':{'id':_0x1d7e64[_0xcd7d('0x44')]['id']}})[_0xcd7d('0x24')](handleEntityNotFound(_0x4b3706,null))[_0xcd7d('0x24')](saveUpdates(_0x1d7e64['body'],null))[_0xcd7d('0x24')](respondWithResult(_0x4b3706,null))[_0xcd7d('0x42')](handleError(_0x4b3706,null));};exports[_0xcd7d('0x4f')]=function(_0x3ee4b2,_0x257bf1){return db[_0xcd7d('0x2c')][_0xcd7d('0x4e')]({'where':{'id':_0x3ee4b2[_0xcd7d('0x44')]['id']}})['then'](handleEntityNotFound(_0x257bf1,null))['then'](removeEntity(_0x257bf1,null))[_0xcd7d('0x42')](handleError(_0x257bf1,null));};exports[_0xcd7d('0x50')]=function(_0x15a929,_0x445591,_0x198de9){if(_0x15a929[_0xcd7d('0x48')]['id']){delete _0x15a929[_0xcd7d('0x48')]['id'];}return db[_0xcd7d('0x2c')][_0xcd7d('0x4e')]({'where':{'id':_0x15a929[_0xcd7d('0x44')]['id']}})[_0xcd7d('0x24')](handleEntityNotFound(_0x445591,null))[_0xcd7d('0x24')](function(_0x11d863){if(_0x11d863){_0x15a929['body'][_0xcd7d('0x51')]=_0x11d863['id'];return db['Interval'][_0xcd7d('0x47')](_0x15a929[_0xcd7d('0x48')]);}})['then'](respondWithResult(_0x445591,null))[_0xcd7d('0x42')](handleError(_0x445591,null));};exports['getIntervals']=function(_0x5f4b36,_0x1afb2a,_0xb3331a){var _0x5bc9e8={};var _0x4058b7={};var _0x5346b0;var _0x4f0840;return db[_0xcd7d('0x2c')][_0xcd7d('0x52')]({'where':{'id':_0x5f4b36[_0xcd7d('0x44')]['id']}})[_0xcd7d('0x24')](handleEntityNotFound(_0x1afb2a,null))[_0xcd7d('0x24')](function(_0x22f6d7){if(_0x22f6d7){_0x5346b0=_0x22f6d7;_0x4058b7['model']=_['keys'](db[_0xcd7d('0x2c')]['rawAttributes']);_0x4058b7[_0xcd7d('0x31')]=_['keys'](_0x5f4b36['query']);_0x4058b7[_0xcd7d('0x33')]=_['intersection'](_0x4058b7[_0xcd7d('0x30')],_0x4058b7[_0xcd7d('0x31')]);_0x5bc9e8[_0xcd7d('0x35')]=_[_0xcd7d('0x34')](_0x4058b7[_0xcd7d('0x30')],qs['fields'](_0x5f4b36['query'][_0xcd7d('0x36')]));_0x5bc9e8[_0xcd7d('0x35')]=_0x5bc9e8[_0xcd7d('0x35')][_0xcd7d('0x37')]?_0x5bc9e8[_0xcd7d('0x35')]:_0x4058b7[_0xcd7d('0x30')];_0x5bc9e8['order']=qs[_0xcd7d('0x3b')](_0x5f4b36[_0xcd7d('0x31')][_0xcd7d('0x3b')]);_0x5bc9e8[_0xcd7d('0x3c')]=qs[_0xcd7d('0x33')](_[_0xcd7d('0x3d')](_0x5f4b36[_0xcd7d('0x31')],_0x4058b7[_0xcd7d('0x33')]));if(_0x5f4b36[_0xcd7d('0x31')][_0xcd7d('0x3e')]){_0x5bc9e8[_0xcd7d('0x3c')]=_['merge'](_0x5bc9e8[_0xcd7d('0x3c')],{'$or':_['map'](_0x5bc9e8[_0xcd7d('0x35')],function(_0x7f07a8){var _0x4faa83={};_0x4faa83[_0x7f07a8]={'$like':'%'+_0x5f4b36[_0xcd7d('0x31')][_0xcd7d('0x3e')]+'%'};return _0x4faa83;})});}_0x5bc9e8=_[_0xcd7d('0x40')]({},_0x5bc9e8,_0x5f4b36[_0xcd7d('0x41')]);return _0x5346b0['getIntervals'](_0x5bc9e8);}})['then'](function(_0x2680a6){if(_0x2680a6){_0x4f0840=_0x2680a6[_0xcd7d('0x37')];if(!_0x5f4b36[_0xcd7d('0x31')]['hasOwnProperty']('nolimit')){_0x5bc9e8[_0xcd7d('0x1e')]=qs[_0xcd7d('0x1e')](_0x5f4b36[_0xcd7d('0x31')][_0xcd7d('0x1e')]);_0x5bc9e8['offset']=qs[_0xcd7d('0x1b')](_0x5f4b36[_0xcd7d('0x31')][_0xcd7d('0x1b')]);}return _0x5346b0[_0xcd7d('0x53')](_0x5bc9e8);}})['then'](function(_0x6def57){if(_0x6def57){return _0x6def57?{'count':_0x4f0840,'rows':_0x6def57}:null;}})[_0xcd7d('0x24')](respondWithResult(_0x1afb2a,null))[_0xcd7d('0x42')](handleError(_0x1afb2a,null));};exports[_0xcd7d('0x54')]=function(_0xbb9b09,_0xd18619,_0x6835d6){return db[_0xcd7d('0x2c')][_0xcd7d('0x52')]({'where':{'id':_0xbb9b09['params']['id']}})[_0xcd7d('0x24')](handleEntityNotFound(_0xd18619,null))[_0xcd7d('0x24')](function(_0x2113e3){if(_0x2113e3){return db[_0xcd7d('0x55')]['transaction'](function(_0x371646){return db[_0xcd7d('0x2c')]['destroy']({'where':{'IntervalId':_0xbb9b09[_0xcd7d('0x44')]['id']},'transaction':_0x371646})[_0xcd7d('0x24')](function(_0x4c6bfc){var _0x459dc1=_[_0xcd7d('0x2b')](_0xbb9b09[_0xcd7d('0x48')],function(_0x43080c){delete _0x43080c['id'];_0x43080c[_0xcd7d('0x51')]=_0xbb9b09[_0xcd7d('0x44')]['id'];return _0x43080c;});return db[_0xcd7d('0x2c')]['bulkCreate'](_0x459dc1,{'transaction':_0x371646});});})['then'](function(){return db[_0xcd7d('0x2c')][_0xcd7d('0x56')]({'where':{'IntervalId':_0xbb9b09['params']['id']}});});}})[_0xcd7d('0x24')](respondWithResult(_0xd18619,null))['catch'](handleError(_0xd18619,null));};
\ No newline at end of file
index 0049d50..83a3fdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x940a=['bluebird','path','rimraf','./interval.attributes','exports','define','Interval','tools_intervals','rewrite','lodash','../../config/logger','api','moment'];(function(_0x2d580b,_0x2b11f3){var _0x7c1374=function(_0x4c1a85){while(--_0x4c1a85){_0x2d580b['push'](_0x2d580b['shift']());}};_0x7c1374(++_0x2b11f3);}(_0x940a,0x1ea));var _0xa940=function(_0xce9195,_0x1963e1){_0xce9195=_0xce9195-0x0;var _0x530fe6=_0x940a[_0xce9195];return _0x530fe6;};'use strict';var _=require(_0xa940('0x0'));var util=require('util');var logger=require(_0xa940('0x1'))(_0xa940('0x2'));var moment=require(_0xa940('0x3'));var BPromise=require(_0xa940('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa940('0x5'));var rimraf=require(_0xa940('0x6'));var config=require('../../config/environment');var attributes=require(_0xa940('0x7'));var extensions=require('../../components/extensions/rewrite');module[_0xa940('0x8')]=function(_0xa74c98,_0x2200b3){return _0xa74c98[_0xa940('0x9')](_0xa940('0xa'),attributes,{'tableName':_0xa940('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5d787e,_0x560c41){extensions[_0xa940('0xc')](_0xa74c98,_0x5d787e);},'afterBulkCreate':function(_0x183baf,_0x4a0ac6,_0x3d917a){_0x3d917a();extensions[_0xa940('0xc')](_0xa74c98,_0x183baf[0x0]);},'afterUpdate':function(_0x33b952,_0x37d53c){extensions[_0xa940('0xc')](_0xa74c98,_0x33b952);},'afterDestroy':function(_0xc698ce,_0x580c2f){extensions[_0xa940('0xc')](_0xa74c98,_0xc698ce);}}});};
\ No newline at end of file
+var _0xa105=['../../components/extensions/rewrite','exports','define','Interval','tools_intervals','rewrite','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x331af8,_0x186cfe){var _0xcc317e=function(_0x1f6baf){while(--_0x1f6baf){_0x331af8['push'](_0x331af8['shift']());}};_0xcc317e(++_0x186cfe);}(_0xa105,0xd8));var _0x5a10=function(_0x1df9bc,_0x299a8a){_0x1df9bc=_0x1df9bc-0x0;var _0x2c578e=_0xa105[_0x1df9bc];return _0x2c578e;};'use strict';var _=require(_0x5a10('0x0'));var util=require('util');var logger=require(_0x5a10('0x1'))(_0x5a10('0x2'));var moment=require(_0x5a10('0x3'));var BPromise=require('bluebird');var rp=require(_0x5a10('0x4'));var fs=require('fs');var path=require(_0x5a10('0x5'));var rimraf=require(_0x5a10('0x6'));var config=require(_0x5a10('0x7'));var attributes=require('./interval.attributes');var extensions=require(_0x5a10('0x8'));module[_0x5a10('0x9')]=function(_0x9ebdf9,_0x70d28){return _0x9ebdf9[_0x5a10('0xa')](_0x5a10('0xb'),attributes,{'tableName':_0x5a10('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x31c58f,_0x476d55){extensions[_0x5a10('0xd')](_0x9ebdf9,_0x31c58f);},'afterBulkCreate':function(_0x1eb5c1,_0x2b1a66,_0x402446){_0x402446();extensions[_0x5a10('0xd')](_0x9ebdf9,_0x1eb5c1[0x0]);},'afterUpdate':function(_0x12f73b,_0x476414){extensions[_0x5a10('0xd')](_0x9ebdf9,_0x12f73b);},'afterDestroy':function(_0x573e20,_0x459b34){extensions[_0x5a10('0xd')](_0x9ebdf9,_0x573e20);}}});};
\ No newline at end of file
index dd62dda..257fa3f 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(_0x230e39,_0x5341){var _0xa804e=function(_0xe14796){while(--_0xe14796){_0x230e39['push'](_0x230e39['shift']());}};_0xa804e(++_0x5341);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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(_0xab9f3d,_0xb336fa){var _0x5283bf=function(_0x505e6c){while(--_0x505e6c){_0xab9f3d['push'](_0xab9f3d['shift']());}};_0x5283bf(++_0xb336fa);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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 e1a817f..5397af3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x272edf,_0x100161){var _0x2a6722=function(_0x7644a1){while(--_0x7644a1){_0x272edf['push'](_0x272edf['shift']());}};_0x2a6722(++_0x100161);}(_0x2ef3,0xba));var _0x32ef=function(_0x3a5e46,_0x3ff1f3){_0x3a5e46=_0x3a5e46-0x0;var _0xa47b15=_0x2ef3[_0x3a5e46];return _0xa47b15;};'use strict';var express=require(_0x32ef('0x0'));var router=express[_0x32ef('0x1')]();var auth=require(_0x32ef('0x2'));var controller=require(_0x32ef('0x3'));router[_0x32ef('0x4')]('/',auth[_0x32ef('0x5')](),controller['send']);module[_0x32ef('0x6')]=router;
\ No newline at end of file
+var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0x1ceece,_0x253c49){var _0x1c79cd=function(_0x4559e6){while(--_0x4559e6){_0x1ceece['push'](_0x1ceece['shift']());}};_0x1c79cd(++_0x253c49);}(_0xdb28,0x106));var _0x8db2=function(_0x354453,_0x21a966){_0x354453=_0x354453-0x0;var _0x7ffb47=_0xdb28[_0x354453];return _0x7ffb47;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['post']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);module[_0x8db2('0x6')]=router;
\ No newline at end of file
index 5072666..f477990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc679=['base64','data','end','statusCode','json','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','connection','remoteAddress','socket','body','https','../../config/logger','api','support','3eAmWpBVP0','MOTGUI','summary','Report','\x20from\x20','description','stringify','Bug','fields','customfield_11500','email','oldToken','customfield_11502','newToken','customfield_11503','name','reason','customfield_10102','track.xcallymotion.com','POST','application/json','Basic\x20','toString'];(function(_0x49eaa0,_0x230ba7){var _0x28bbcd=function(_0x15203a){while(--_0x15203a){_0x49eaa0['push'](_0x49eaa0['shift']());}};_0x28bbcd(++_0x230ba7);}(_0xc679,0x85));var _0x9c67=function(_0x43fc58,_0x49f9cd){_0x43fc58=_0x43fc58-0x0;var _0x19c725=_0xc679[_0x43fc58];return _0x19c725;};'use strict';var BPromise=require('bluebird');var https=require(_0x9c67('0x0'));var logger=require(_0x9c67('0x1'))(_0x9c67('0x2'));var USERNAME=_0x9c67('0x3');var PASSWORD=_0x9c67('0x4');function openIssue(_0x980cc8,_0x52bce8){var _0x140292={'fields':{'project':{'key':_0x980cc8['key']||_0x9c67('0x5')},'summary':(_0x980cc8[_0x9c67('0x6')]||_0x9c67('0x7'))+_0x9c67('0x8')+_0x980cc8['ip'],'description':_0x980cc8[_0x9c67('0x9')]||JSON[_0x9c67('0xa')](_0x980cc8),'issuetype':{'name':_0x980cc8['issuetype']||_0x9c67('0xb')}}};_0x140292[_0x9c67('0xc')][_0x9c67('0xd')]=_0x980cc8[_0x9c67('0xe')];_0x140292[_0x9c67('0xc')]['customfield_11501']=_0x980cc8[_0x9c67('0xf')];_0x140292[_0x9c67('0xc')][_0x9c67('0x10')]=_0x980cc8[_0x9c67('0x11')];_0x140292['fields'][_0x9c67('0x12')]=_0x980cc8[_0x9c67('0x13')];_0x140292[_0x9c67('0xc')]['customfield_11504']=_0x980cc8[_0x9c67('0x14')];_0x140292[_0x9c67('0xc')][_0x9c67('0x15')]=_0x980cc8['ip'];var _0x256f75={'host':_0x9c67('0x16'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0x9c67('0x17'),'timeout':0x4e20,'headers':{'Content-Type':_0x9c67('0x18'),'Authorization':_0x9c67('0x19')+new Buffer(USERNAME+':'+PASSWORD)[_0x9c67('0x1a')](_0x9c67('0x1b'))}};var _0x2cce01=JSON[_0x9c67('0xa')](_0x140292);var _0x34dd4e=https['request'](_0x256f75,function(_0x55c306){_0x55c306['setEncoding']('utf8');var _0x2656d7='';_0x55c306['on'](_0x9c67('0x1c'),function(_0x28532a){_0x2656d7+=_0x28532a;});_0x55c306['on'](_0x9c67('0x1d'),function(){if(_0x52bce8){return _0x52bce8['status'](_0x55c306[_0x9c67('0x1e')])[_0x9c67('0x1f')](JSON['parse'](_0x2656d7));}});});_0x34dd4e['on']('error',function(_0xc31d00){if(_0x52bce8){return _0x52bce8['status'](0x1f4)[_0x9c67('0x1f')]({'errors':[{'message':_0x9c67('0x20'),'type':_0x9c67('0x21')}]});}});_0x34dd4e[_0x9c67('0x22')](_0x2cce01);_0x34dd4e[_0x9c67('0x1d')]();}exports[_0x9c67('0x23')]=openIssue;exports['send']=function(_0x417b72,_0x5647ce){_0x417b72['body']['ip']=_0x417b72['headers']['x-forwarded-for']||_0x417b72[_0x9c67('0x24')][_0x9c67('0x25')]||_0x417b72[_0x9c67('0x26')]['remoteAddress']||_0x417b72[_0x9c67('0x24')]['socket']['remoteAddress'];return openIssue(_0x417b72[_0x9c67('0x27')],_0x5647ce);};
\ No newline at end of file
+var _0x85d4=['customfield_11501','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','POST','application/json','toString','base64','request','setEncoding','utf8','data','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','openIssue','send','body','headers','x-forwarded-for','connection','socket','remoteAddress','bluebird','https','../../config/logger','support','3eAmWpBVP0','key','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email'];(function(_0x569086,_0x33ee33){var _0x6af6ad=function(_0x2a8386){while(--_0x2a8386){_0x569086['push'](_0x569086['shift']());}};_0x6af6ad(++_0x33ee33);}(_0x85d4,0x1e4));var _0x485d=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x85d4[_0x55f8b4];return _0x2475f9;};'use strict';var BPromise=require(_0x485d('0x0'));var https=require(_0x485d('0x1'));var logger=require(_0x485d('0x2'))('api');var USERNAME=_0x485d('0x3');var PASSWORD=_0x485d('0x4');function openIssue(_0x243b61,_0x1c2299){var _0x1b71c3={'fields':{'project':{'key':_0x243b61[_0x485d('0x5')]||'MOTGUI'},'summary':(_0x243b61[_0x485d('0x6')]||_0x485d('0x7'))+_0x485d('0x8')+_0x243b61['ip'],'description':_0x243b61[_0x485d('0x9')]||JSON[_0x485d('0xa')](_0x243b61),'issuetype':{'name':_0x243b61[_0x485d('0xb')]||_0x485d('0xc')}}};_0x1b71c3[_0x485d('0xd')][_0x485d('0xe')]=_0x243b61[_0x485d('0xf')];_0x1b71c3['fields'][_0x485d('0x10')]=_0x243b61['oldToken'];_0x1b71c3['fields'][_0x485d('0x11')]=_0x243b61[_0x485d('0x12')];_0x1b71c3[_0x485d('0xd')][_0x485d('0x13')]=_0x243b61[_0x485d('0x14')];_0x1b71c3['fields'][_0x485d('0x15')]=_0x243b61[_0x485d('0x16')];_0x1b71c3[_0x485d('0xd')][_0x485d('0x17')]=_0x243b61['ip'];var _0x6986dd={'host':_0x485d('0x18'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0x485d('0x19'),'timeout':0x4e20,'headers':{'Content-Type':_0x485d('0x1a'),'Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0x485d('0x1b')](_0x485d('0x1c'))}};var _0xa9b676=JSON[_0x485d('0xa')](_0x1b71c3);var _0x3d8bf2=https[_0x485d('0x1d')](_0x6986dd,function(_0x28862f){_0x28862f[_0x485d('0x1e')](_0x485d('0x1f'));var _0x5a6f86='';_0x28862f['on'](_0x485d('0x20'),function(_0x16a924){_0x5a6f86+=_0x16a924;});_0x28862f['on']('end',function(){if(_0x1c2299){return _0x1c2299[_0x485d('0x21')](_0x28862f[_0x485d('0x22')])[_0x485d('0x23')](JSON[_0x485d('0x24')](_0x5a6f86));}});});_0x3d8bf2['on'](_0x485d('0x25'),function(_0x1da430){if(_0x1c2299){return _0x1c2299[_0x485d('0x21')](0x1f4)[_0x485d('0x23')]({'errors':[{'message':_0x485d('0x26'),'type':_0x485d('0x27')}]});}});_0x3d8bf2[_0x485d('0x28')](_0xa9b676);_0x3d8bf2[_0x485d('0x29')]();}exports[_0x485d('0x2a')]=openIssue;exports[_0x485d('0x2b')]=function(_0x51e1fd,_0xa15a50){_0x51e1fd[_0x485d('0x2c')]['ip']=_0x51e1fd[_0x485d('0x2d')][_0x485d('0x2e')]||_0x51e1fd[_0x485d('0x2f')]['remoteAddress']||_0x51e1fd[_0x485d('0x30')][_0x485d('0x31')]||_0x51e1fd[_0x485d('0x2f')]['socket']['remoteAddress'];return openIssue(_0x51e1fd[_0x485d('0x2c')],_0xa15a50);};
\ No newline at end of file
index a00ea37..5682510 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['../../components/auth/service','../../components/interaction/service','index','get','/describe','isAuthenticated','describe','/:id','post','create','update','delete','exports','multer','path','express','Router','fs-extra'];(function(_0x49b786,_0x408af0){var _0x5870bf=function(_0x1f7c10){while(--_0x1f7c10){_0x49b786['push'](_0x49b786['shift']());}};_0x5870bf(++_0x408af0);}(_0xd64b,0xc1));var _0xbd64=function(_0x2d1926,_0x3e9afe){_0x2d1926=_0x2d1926-0x0;var _0x4a52c7=_0xd64b[_0x2d1926];return _0x4a52c7;};'use strict';var multer=require(_0xbd64('0x0'));var util=require('util');var path=require(_0xbd64('0x1'));var timeout=require('connect-timeout');var express=require(_0xbd64('0x2'));var router=express[_0xbd64('0x3')]();var fs_extra=require(_0xbd64('0x4'));var auth=require(_0xbd64('0x5'));var interaction=require(_0xbd64('0x6'));var config=require('../../config/environment');var controller=require('./jscriptyAnswerReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xbd64('0x7')]);router[_0xbd64('0x8')](_0xbd64('0x9'),auth[_0xbd64('0xa')](),controller[_0xbd64('0xb')]);router[_0xbd64('0x8')](_0xbd64('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xbd64('0xd')]('/',auth[_0xbd64('0xa')](),controller[_0xbd64('0xe')]);router['put'](_0xbd64('0xc'),auth[_0xbd64('0xa')](),controller[_0xbd64('0xf')]);router[_0xbd64('0x10')]('/:id',auth[_0xbd64('0xa')](),controller['destroy']);module[_0xbd64('0x11')]=router;
\ No newline at end of file
+var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','index'];(function(_0x22b1d8,_0x566b63){var _0x380692=function(_0x145800){while(--_0x145800){_0x22b1d8['push'](_0x22b1d8['shift']());}};_0x380692(++_0x566b63);}(_0xe706,0xa3));var _0x6e70=function(_0x5234a6,_0x314a5d){_0x5234a6=_0x5234a6-0x0;var _0x1f8955=_0xe706[_0x5234a6];return _0x1f8955;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
index 984d276..5795563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0x7a54,0x106));var _0x47a5=function(_0x4fe86a,_0x3e1d1c){_0x4fe86a=_0x4fe86a-0x0;var _0x5d8003=_0x7a54[_0x4fe86a];return _0x5d8003;};'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(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x7a54,0x106));var _0x47a5=function(_0x2a5805,_0x5434b3){_0x2a5805=_0x2a5805-0x0;var _0x37f584=_0x7a54[_0x2a5805];return _0x37f584;};'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 98e40cc..9e125b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ec=['merge','VIRTUAL','options','includeAll','rows','catch','show','params','keys','JscriptyAnswerReport','include','create','body','find','describe','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','destroy','error','stack','name','send','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where'];(function(_0x153f0a,_0x13ec50){var _0x38331f=function(_0xea0af6){while(--_0xea0af6){_0x153f0a['push'](_0x153f0a['shift']());}};_0x38331f(++_0x13ec50);}(_0x41ec,0x143));var _0xc41e=function(_0x245dc7,_0x241d42){_0x245dc7=_0x245dc7-0x0;var _0x555ba7=_0x41ec[_0x245dc7];return _0x555ba7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc41e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc41e('0x1'));var rp=require(_0xc41e('0x2'));var moment=require('moment');var BPromise=require(_0xc41e('0x3'));var Mustache=require(_0xc41e('0x4'));var util=require(_0xc41e('0x5'));var path=require(_0xc41e('0x6'));var sox=require(_0xc41e('0x7'));var csv=require(_0xc41e('0x8'));var ejs=require(_0xc41e('0x9'));var fs=require('fs');var fs_extra=require(_0xc41e('0xa'));var _=require(_0xc41e('0xb'));var squel=require(_0xc41e('0xc'));var crypto=require(_0xc41e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc41e('0xe'));var toCsv=require(_0xc41e('0x8'));var querystring=require(_0xc41e('0xf'));var Papa=require(_0xc41e('0x10'));var Redis=require(_0xc41e('0x11'));var authService=require(_0xc41e('0x12'));var qs=require(_0xc41e('0x13'));var as=require(_0xc41e('0x14'));var hardwareService=require(_0xc41e('0x15'));var logger=require(_0xc41e('0x16'))(_0xc41e('0x17'));var utils=require('../../config/utils');var config=require(_0xc41e('0x18'));var licenseUtil=require(_0xc41e('0x19'));var db=require(_0xc41e('0x1a'))['db'];function respondWithStatusCode(_0x3d7280,_0x11a117){_0x11a117=_0x11a117||0xcc;return function(_0x433ca9){if(_0x433ca9){return _0x3d7280[_0xc41e('0x1b')](_0x11a117);}return _0x3d7280[_0xc41e('0x1c')](_0x11a117)['end']();};}function respondWithResult(_0x3b3900,_0x6b614a){_0x6b614a=_0x6b614a||0xc8;return function(_0xcd58a0){if(_0xcd58a0){return _0x3b3900[_0xc41e('0x1c')](_0x6b614a)['json'](_0xcd58a0);}};}function respondWithFilteredResult(_0x5c705e,_0x4f960d){return function(_0x28eb53){if(_0x28eb53){var _0x4293a5=typeof _0x4f960d['offset']===_0xc41e('0x1d')&&typeof _0x4f960d[_0xc41e('0x1e')]==='undefined';var _0x4e7aa3=_0x28eb53[_0xc41e('0x1f')];var _0x5c0517=_0x4293a5?0x0:_0x4f960d[_0xc41e('0x20')];var _0x23c9b6=_0x4293a5?_0x28eb53['count']:_0x4f960d[_0xc41e('0x20')]+_0x4f960d[_0xc41e('0x1e')];var _0xee0f01;if(_0x23c9b6>=_0x4e7aa3){_0x23c9b6=_0x4e7aa3;_0xee0f01=0xc8;}else{_0xee0f01=0xce;}_0x5c705e[_0xc41e('0x1c')](_0xee0f01);return _0x5c705e[_0xc41e('0x21')](_0xc41e('0x22'),_0x5c0517+'-'+_0x23c9b6+'/'+_0x4e7aa3)[_0xc41e('0x23')](_0x28eb53);}return null;};}function patchUpdates(_0x57e0c4){return function(_0x239c25){try{jsonpatch[_0xc41e('0x24')](_0x239c25,_0x57e0c4,!![]);}catch(_0x3f26d5){return BPromise['reject'](_0x3f26d5);}return _0x239c25[_0xc41e('0x25')]();};}function saveUpdates(_0x408d27,_0x814a72){return function(_0x490cc3){if(_0x490cc3){return _0x490cc3[_0xc41e('0x26')](_0x408d27)[_0xc41e('0x27')](function(_0x602bd7){return _0x602bd7;});}return null;};}function removeEntity(_0x4adaad,_0x5a06dd){return function(_0x4c20b1){if(_0x4c20b1){return _0x4c20b1[_0xc41e('0x28')]()[_0xc41e('0x27')](function(){_0x4adaad['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a3e0d,_0x1c33a6){return function(_0x1ad4c7){if(!_0x1ad4c7){_0x5a3e0d[_0xc41e('0x1b')](0x194);}return _0x1ad4c7;};}function handleError(_0x467672,_0x1c6a2a){_0x1c6a2a=_0x1c6a2a||0x1f4;return function(_0x580b9e){logger[_0xc41e('0x29')](_0x580b9e[_0xc41e('0x2a')]);if(_0x580b9e[_0xc41e('0x2b')]){delete _0x580b9e['name'];}_0x467672[_0xc41e('0x1c')](_0x1c6a2a)[_0xc41e('0x2c')](_0x580b9e);};}exports['index']=function(_0x25b319,_0x12536e){var _0x5c2c62={},_0xcb3a15={},_0x2fa98a={'count':0x0,'rows':[]};var _0x17246e=_[_0xc41e('0x2d')](db['JscriptyAnswerReport']['rawAttributes'],function(_0x541ac4){return{'name':_0x541ac4[_0xc41e('0x2e')],'type':_0x541ac4[_0xc41e('0x2f')][_0xc41e('0x30')]};});_0xcb3a15[_0xc41e('0x31')]=_[_0xc41e('0x2d')](_0x17246e,_0xc41e('0x2b'));_0xcb3a15[_0xc41e('0x32')]=_['keys'](_0x25b319[_0xc41e('0x32')]);_0xcb3a15[_0xc41e('0x33')]=_[_0xc41e('0x34')](_0xcb3a15['model'],_0xcb3a15[_0xc41e('0x32')]);_0x5c2c62['attributes']=_[_0xc41e('0x34')](_0xcb3a15[_0xc41e('0x31')],qs[_0xc41e('0x35')](_0x25b319[_0xc41e('0x32')]['fields']));_0x5c2c62['attributes']=_0x5c2c62[_0xc41e('0x36')][_0xc41e('0x37')]?_0x5c2c62[_0xc41e('0x36')]:_0xcb3a15[_0xc41e('0x31')];if(!_0x25b319[_0xc41e('0x32')][_0xc41e('0x38')]('nolimit')){_0x5c2c62[_0xc41e('0x1e')]=qs[_0xc41e('0x1e')](_0x25b319[_0xc41e('0x32')]['limit']);_0x5c2c62[_0xc41e('0x20')]=qs[_0xc41e('0x20')](_0x25b319['query'][_0xc41e('0x20')]);}_0x5c2c62[_0xc41e('0x39')]=qs[_0xc41e('0x3a')](_0x25b319[_0xc41e('0x32')][_0xc41e('0x3a')]);_0x5c2c62['where']=qs['filters'](_[_0xc41e('0x3b')](_0x25b319[_0xc41e('0x32')],_0xcb3a15[_0xc41e('0x33')]),_0x17246e);if(_0x25b319[_0xc41e('0x32')][_0xc41e('0x3c')]){_0x5c2c62[_0xc41e('0x3d')]=_[_0xc41e('0x3e')](_0x5c2c62[_0xc41e('0x3d')],{'$or':_[_0xc41e('0x2d')](_0x17246e,function(_0x4de59a){if(_0x4de59a['type']!==_0xc41e('0x3f')){var _0xfd6ff6={};_0xfd6ff6[_0x4de59a[_0xc41e('0x2b')]]={'$like':'%'+_0x25b319[_0xc41e('0x32')][_0xc41e('0x3c')]+'%'};return _0xfd6ff6;}})});}_0x5c2c62=_[_0xc41e('0x3e')]({},_0x5c2c62,_0x25b319[_0xc41e('0x40')]);var _0x150f30={'where':_0x5c2c62['where']};return db['JscriptyAnswerReport'][_0xc41e('0x1f')](_0x150f30)[_0xc41e('0x27')](function(_0x10cfed){_0x2fa98a['count']=_0x10cfed;if(_0x25b319['query'][_0xc41e('0x41')]){_0x5c2c62['include']=[{'all':!![]}];}return db['JscriptyAnswerReport']['findAll'](_0x5c2c62);})['then'](function(_0x3c30e2){_0x2fa98a[_0xc41e('0x42')]=_0x3c30e2;return _0x2fa98a;})[_0xc41e('0x27')](respondWithFilteredResult(_0x12536e,_0x5c2c62))[_0xc41e('0x43')](handleError(_0x12536e,null));};exports[_0xc41e('0x44')]=function(_0x206aa1,_0x4bb1f6){var _0x28d15d={'raw':!![],'where':{'id':_0x206aa1[_0xc41e('0x45')]['id']}},_0x1a3e67={};_0x1a3e67[_0xc41e('0x31')]=_[_0xc41e('0x46')](db[_0xc41e('0x47')]['rawAttributes']);_0x1a3e67[_0xc41e('0x32')]=_[_0xc41e('0x46')](_0x206aa1['query']);_0x1a3e67[_0xc41e('0x33')]=_[_0xc41e('0x34')](_0x1a3e67['model'],_0x1a3e67[_0xc41e('0x32')]);_0x28d15d['attributes']=_[_0xc41e('0x34')](_0x1a3e67[_0xc41e('0x31')],qs[_0xc41e('0x35')](_0x206aa1['query'][_0xc41e('0x35')]));_0x28d15d[_0xc41e('0x36')]=_0x28d15d['attributes']['length']?_0x28d15d['attributes']:_0x1a3e67['model'];if(_0x206aa1[_0xc41e('0x32')]['includeAll']){_0x28d15d[_0xc41e('0x48')]=[{'all':!![]}];}_0x28d15d=_['merge']({},_0x28d15d,_0x206aa1['options']);return db[_0xc41e('0x47')]['find'](_0x28d15d)[_0xc41e('0x27')](handleEntityNotFound(_0x4bb1f6,null))[_0xc41e('0x27')](respondWithResult(_0x4bb1f6,null))[_0xc41e('0x43')](handleError(_0x4bb1f6,null));};exports[_0xc41e('0x49')]=function(_0x46aef6,_0x31b393){return db[_0xc41e('0x47')][_0xc41e('0x49')](_0x46aef6[_0xc41e('0x4a')],{})[_0xc41e('0x27')](respondWithResult(_0x31b393,0xc9))[_0xc41e('0x43')](handleError(_0x31b393,null));};exports['update']=function(_0x4b67d4,_0x1cdf49){if(_0x4b67d4[_0xc41e('0x4a')]['id']){delete _0x4b67d4[_0xc41e('0x4a')]['id'];}return db['JscriptyAnswerReport'][_0xc41e('0x4b')]({'where':{'id':_0x4b67d4[_0xc41e('0x45')]['id']}})[_0xc41e('0x27')](handleEntityNotFound(_0x1cdf49,null))[_0xc41e('0x27')](saveUpdates(_0x4b67d4[_0xc41e('0x4a')],null))[_0xc41e('0x27')](respondWithResult(_0x1cdf49,null))[_0xc41e('0x43')](handleError(_0x1cdf49,null));};exports['destroy']=function(_0x3c867a,_0x317eba){return db['JscriptyAnswerReport']['find']({'where':{'id':_0x3c867a[_0xc41e('0x45')]['id']}})[_0xc41e('0x27')](handleEntityNotFound(_0x317eba,null))[_0xc41e('0x27')](removeEntity(_0x317eba,null))[_0xc41e('0x43')](handleError(_0x317eba,null));};exports[_0xc41e('0x4c')]=function(_0x53a799,_0x576831){return db[_0xc41e('0x47')]['describe']()[_0xc41e('0x27')](respondWithResult(_0x576831,null))['catch'](handleError(_0x576831,null));};
\ No newline at end of file
+var _0xa7e6=['json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','map','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','JscriptyAnswerReport','include','rows','catch','show','params','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end'];(function(_0x30b248,_0x16a6f5){var _0x394551=function(_0x41c9ba){while(--_0x41c9ba){_0x30b248['push'](_0x30b248['shift']());}};_0x394551(++_0x16a6f5);}(_0xa7e6,0x74));var _0x6a7e=function(_0x34882f,_0x601a99){_0x34882f=_0x34882f-0x0;var _0x455929=_0xa7e6[_0x34882f];return _0x455929;};'use strict';var emlformat=require(_0x6a7e('0x0'));var rimraf=require(_0x6a7e('0x1'));var zipdir=require(_0x6a7e('0x2'));var jsonpatch=require(_0x6a7e('0x3'));var rp=require(_0x6a7e('0x4'));var moment=require(_0x6a7e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6a7e('0x6'));var util=require(_0x6a7e('0x7'));var path=require(_0x6a7e('0x8'));var sox=require(_0x6a7e('0x9'));var csv=require(_0x6a7e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6a7e('0xb'));var _=require(_0x6a7e('0xc'));var squel=require(_0x6a7e('0xd'));var crypto=require(_0x6a7e('0xe'));var jsforce=require(_0x6a7e('0xf'));var deskjs=require(_0x6a7e('0x10'));var toCsv=require(_0x6a7e('0xa'));var querystring=require(_0x6a7e('0x11'));var Papa=require(_0x6a7e('0x12'));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(_0x6a7e('0x13'));var logger=require(_0x6a7e('0x14'))(_0x6a7e('0x15'));var utils=require(_0x6a7e('0x16'));var config=require(_0x6a7e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x6a7e('0x18'))['db'];function respondWithStatusCode(_0x4754ef,_0x5c0c74){_0x5c0c74=_0x5c0c74||0xcc;return function(_0x50dcc1){if(_0x50dcc1){return _0x4754ef[_0x6a7e('0x19')](_0x5c0c74);}return _0x4754ef[_0x6a7e('0x1a')](_0x5c0c74)[_0x6a7e('0x1b')]();};}function respondWithResult(_0x374763,_0x4faca9){_0x4faca9=_0x4faca9||0xc8;return function(_0x3137bc){if(_0x3137bc){return _0x374763[_0x6a7e('0x1a')](_0x4faca9)[_0x6a7e('0x1c')](_0x3137bc);}};}function respondWithFilteredResult(_0x4576fe,_0x465566){return function(_0x4b0893){if(_0x4b0893){var _0x16c9a5=typeof _0x465566['offset']==='undefined'&&typeof _0x465566[_0x6a7e('0x1d')]==='undefined';var _0x1d2abb=_0x4b0893[_0x6a7e('0x1e')];var _0x470197=_0x16c9a5?0x0:_0x465566[_0x6a7e('0x1f')];var _0x20e90a=_0x16c9a5?_0x4b0893['count']:_0x465566['offset']+_0x465566['limit'];var _0x102e83;if(_0x20e90a>=_0x1d2abb){_0x20e90a=_0x1d2abb;_0x102e83=0xc8;}else{_0x102e83=0xce;}_0x4576fe[_0x6a7e('0x1a')](_0x102e83);return _0x4576fe[_0x6a7e('0x20')](_0x6a7e('0x21'),_0x470197+'-'+_0x20e90a+'/'+_0x1d2abb)[_0x6a7e('0x1c')](_0x4b0893);}return null;};}function patchUpdates(_0x35b0ff){return function(_0x42eccc){try{jsonpatch[_0x6a7e('0x22')](_0x42eccc,_0x35b0ff,!![]);}catch(_0x5d5cbf){return BPromise[_0x6a7e('0x23')](_0x5d5cbf);}return _0x42eccc[_0x6a7e('0x24')]();};}function saveUpdates(_0x4f53c5,_0x3e1e64){return function(_0x3d0971){if(_0x3d0971){return _0x3d0971[_0x6a7e('0x25')](_0x4f53c5)['then'](function(_0x40c7f6){return _0x40c7f6;});}return null;};}function removeEntity(_0xd045ca,_0x4ee914){return function(_0x18f5e2){if(_0x18f5e2){return _0x18f5e2['destroy']()[_0x6a7e('0x26')](function(){_0xd045ca[_0x6a7e('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29db13,_0x956eb6){return function(_0x46a15f){if(!_0x46a15f){_0x29db13[_0x6a7e('0x19')](0x194);}return _0x46a15f;};}function handleError(_0x3498c5,_0x380f2f){_0x380f2f=_0x380f2f||0x1f4;return function(_0x573bdc){logger[_0x6a7e('0x27')](_0x573bdc[_0x6a7e('0x28')]);if(_0x573bdc[_0x6a7e('0x29')]){delete _0x573bdc[_0x6a7e('0x29')];}_0x3498c5[_0x6a7e('0x1a')](_0x380f2f)['send'](_0x573bdc);};}exports['index']=function(_0x8b0439,_0x2e86f8){var _0x2723d0={},_0x525376={},_0xa324d0={'count':0x0,'rows':[]};var _0x57e642=_[_0x6a7e('0x2a')](db['JscriptyAnswerReport']['rawAttributes'],function(_0x15c2b8){return{'name':_0x15c2b8['fieldName'],'type':_0x15c2b8[_0x6a7e('0x2b')]['key']};});_0x525376['model']=_[_0x6a7e('0x2a')](_0x57e642,_0x6a7e('0x29'));_0x525376[_0x6a7e('0x2c')]=_[_0x6a7e('0x2d')](_0x8b0439[_0x6a7e('0x2c')]);_0x525376[_0x6a7e('0x2e')]=_[_0x6a7e('0x2f')](_0x525376[_0x6a7e('0x30')],_0x525376[_0x6a7e('0x2c')]);_0x2723d0[_0x6a7e('0x31')]=_[_0x6a7e('0x2f')](_0x525376[_0x6a7e('0x30')],qs['fields'](_0x8b0439[_0x6a7e('0x2c')][_0x6a7e('0x32')]));_0x2723d0[_0x6a7e('0x31')]=_0x2723d0['attributes'][_0x6a7e('0x33')]?_0x2723d0[_0x6a7e('0x31')]:_0x525376[_0x6a7e('0x30')];if(!_0x8b0439[_0x6a7e('0x2c')][_0x6a7e('0x34')](_0x6a7e('0x35'))){_0x2723d0['limit']=qs['limit'](_0x8b0439[_0x6a7e('0x2c')]['limit']);_0x2723d0[_0x6a7e('0x1f')]=qs[_0x6a7e('0x1f')](_0x8b0439['query']['offset']);}_0x2723d0['order']=qs[_0x6a7e('0x36')](_0x8b0439['query']['sort']);_0x2723d0['where']=qs['filters'](_[_0x6a7e('0x37')](_0x8b0439['query'],_0x525376[_0x6a7e('0x2e')]),_0x57e642);if(_0x8b0439[_0x6a7e('0x2c')][_0x6a7e('0x38')]){_0x2723d0[_0x6a7e('0x39')]=_[_0x6a7e('0x3a')](_0x2723d0['where'],{'$or':_[_0x6a7e('0x2a')](_0x57e642,function(_0x1db4e3){if(_0x1db4e3['type']!==_0x6a7e('0x3b')){var _0x2f58ac={};_0x2f58ac[_0x1db4e3['name']]={'$like':'%'+_0x8b0439[_0x6a7e('0x2c')][_0x6a7e('0x38')]+'%'};return _0x2f58ac;}})});}_0x2723d0=_[_0x6a7e('0x3a')]({},_0x2723d0,_0x8b0439[_0x6a7e('0x3c')]);var _0x2827f7={'where':_0x2723d0[_0x6a7e('0x39')]};return db[_0x6a7e('0x3d')][_0x6a7e('0x1e')](_0x2827f7)[_0x6a7e('0x26')](function(_0x27434a){_0xa324d0[_0x6a7e('0x1e')]=_0x27434a;if(_0x8b0439['query']['includeAll']){_0x2723d0[_0x6a7e('0x3e')]=[{'all':!![]}];}return db[_0x6a7e('0x3d')]['findAll'](_0x2723d0);})[_0x6a7e('0x26')](function(_0x46799d){_0xa324d0[_0x6a7e('0x3f')]=_0x46799d;return _0xa324d0;})[_0x6a7e('0x26')](respondWithFilteredResult(_0x2e86f8,_0x2723d0))[_0x6a7e('0x40')](handleError(_0x2e86f8,null));};exports[_0x6a7e('0x41')]=function(_0x3d7266,_0x14cae5){var _0x2a3d31={'raw':!![],'where':{'id':_0x3d7266[_0x6a7e('0x42')]['id']}},_0x247efb={};_0x247efb[_0x6a7e('0x30')]=_[_0x6a7e('0x2d')](db[_0x6a7e('0x3d')]['rawAttributes']);_0x247efb['query']=_[_0x6a7e('0x2d')](_0x3d7266[_0x6a7e('0x2c')]);_0x247efb[_0x6a7e('0x2e')]=_[_0x6a7e('0x2f')](_0x247efb[_0x6a7e('0x30')],_0x247efb[_0x6a7e('0x2c')]);_0x2a3d31[_0x6a7e('0x31')]=_[_0x6a7e('0x2f')](_0x247efb['model'],qs[_0x6a7e('0x32')](_0x3d7266['query'][_0x6a7e('0x32')]));_0x2a3d31[_0x6a7e('0x31')]=_0x2a3d31[_0x6a7e('0x31')][_0x6a7e('0x33')]?_0x2a3d31['attributes']:_0x247efb[_0x6a7e('0x30')];if(_0x3d7266[_0x6a7e('0x2c')][_0x6a7e('0x43')]){_0x2a3d31['include']=[{'all':!![]}];}_0x2a3d31=_[_0x6a7e('0x3a')]({},_0x2a3d31,_0x3d7266['options']);return db[_0x6a7e('0x3d')][_0x6a7e('0x44')](_0x2a3d31)[_0x6a7e('0x26')](handleEntityNotFound(_0x14cae5,null))[_0x6a7e('0x26')](respondWithResult(_0x14cae5,null))['catch'](handleError(_0x14cae5,null));};exports[_0x6a7e('0x45')]=function(_0x47369f,_0x188ab5){return db[_0x6a7e('0x3d')]['create'](_0x47369f[_0x6a7e('0x46')],{})['then'](respondWithResult(_0x188ab5,0xc9))[_0x6a7e('0x40')](handleError(_0x188ab5,null));};exports[_0x6a7e('0x25')]=function(_0x25c2bb,_0x4a7465){if(_0x25c2bb[_0x6a7e('0x46')]['id']){delete _0x25c2bb['body']['id'];}return db[_0x6a7e('0x3d')]['find']({'where':{'id':_0x25c2bb[_0x6a7e('0x42')]['id']}})[_0x6a7e('0x26')](handleEntityNotFound(_0x4a7465,null))[_0x6a7e('0x26')](saveUpdates(_0x25c2bb[_0x6a7e('0x46')],null))[_0x6a7e('0x26')](respondWithResult(_0x4a7465,null))[_0x6a7e('0x40')](handleError(_0x4a7465,null));};exports['destroy']=function(_0x3d4395,_0x54f72b){return db[_0x6a7e('0x3d')][_0x6a7e('0x44')]({'where':{'id':_0x3d4395['params']['id']}})['then'](handleEntityNotFound(_0x54f72b,null))[_0x6a7e('0x26')](removeEntity(_0x54f72b,null))[_0x6a7e('0x40')](handleError(_0x54f72b,null));};exports[_0x6a7e('0x47')]=function(_0x251076,_0x43f5ac){return db['JscriptyAnswerReport'][_0x6a7e('0x47')]()[_0x6a7e('0x26')](respondWithResult(_0x43f5ac,null))[_0x6a7e('0x40')](handleError(_0x43f5ac,null));};
\ No newline at end of file
index 6f24630..1f54c64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3afb=['JscriptyAnswerReport','report_jscripty_answers','lodash','util','api','moment','request-promise','../../config/environment','./jscriptyAnswerReport.attributes','exports'];(function(_0x367e3b,_0x5d92ad){var _0x35568d=function(_0x116002){while(--_0x116002){_0x367e3b['push'](_0x367e3b['shift']());}};_0x35568d(++_0x5d92ad);}(_0x3afb,0x12e));var _0xb3af=function(_0x5756c6,_0x58290a){_0x5756c6=_0x5756c6-0x0;var _0x4b5806=_0x3afb[_0x5756c6];return _0x4b5806;};'use strict';var _=require(_0xb3af('0x0'));var util=require(_0xb3af('0x1'));var logger=require('../../config/logger')(_0xb3af('0x2'));var moment=require(_0xb3af('0x3'));var BPromise=require('bluebird');var rp=require(_0xb3af('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb3af('0x5'));var attributes=require(_0xb3af('0x6'));module[_0xb3af('0x7')]=function(_0x3e1d21,_0x2218e0){return _0x3e1d21['define'](_0xb3af('0x8'),attributes,{'tableName':_0xb3af('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0d77=['request-promise','path','rimraf','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','api','moment','bluebird'];(function(_0x2b6ef9,_0x172741){var _0x5a9e51=function(_0x1d5d38){while(--_0x1d5d38){_0x2b6ef9['push'](_0x2b6ef9['shift']());}};_0x5a9e51(++_0x172741);}(_0x0d77,0x158));var _0x70d7=function(_0x405a33,_0x5b204b){_0x405a33=_0x405a33-0x0;var _0x4ae606=_0x0d77[_0x405a33];return _0x4ae606;};'use strict';var _=require(_0x70d7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x70d7('0x1'));var moment=require(_0x70d7('0x2'));var BPromise=require(_0x70d7('0x3'));var rp=require(_0x70d7('0x4'));var fs=require('fs');var path=require(_0x70d7('0x5'));var rimraf=require(_0x70d7('0x6'));var config=require('../../config/environment');var attributes=require(_0x70d7('0x7'));module[_0x70d7('0x8')]=function(_0x2f91aa,_0x3588dc){return _0x2f91aa[_0x70d7('0x9')](_0x70d7('0xa'),attributes,{'tableName':_0x70d7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cfa3c44..73bc136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b34=['code','error','JscriptyAnswerReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2088af,_0x4a47b4){var _0x2469eb=function(_0x276239){while(--_0x276239){_0x2088af['push'](_0x2088af['shift']());}};_0x2469eb(++_0x4a47b4);}(_0x5b34,0x13a));var _0x45b3=function(_0x4c7ff3,_0x56437b){_0x4c7ff3=_0x4c7ff3-0x0;var _0x94061b=_0x5b34[_0x4c7ff3];return _0x94061b;};'use strict';var _=require('lodash');var util=require(_0x45b3('0x0'));var moment=require(_0x45b3('0x1'));var BPromise=require(_0x45b3('0x2'));var rs=require(_0x45b3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x45b3('0x4'))['db'];var utils=require(_0x45b3('0x5'));var logger=require('../../config/logger')(_0x45b3('0x6'));var config=require(_0x45b3('0x7'));var jayson=require(_0x45b3('0x8'));var client=jayson['client'][_0x45b3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x77af39,_0x37bb98,_0x2c2d12){return new BPromise(function(_0xa70273,_0x53857a){return client[_0x45b3('0xa')](_0x77af39,_0x2c2d12)[_0x45b3('0xb')](function(_0x584654){logger[_0x45b3('0xc')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x37bb98,_0x45b3('0xd'));logger['debug'](_0x45b3('0xe'),_0x37bb98,'request\x20sent',JSON[_0x45b3('0xf')](_0x584654));if(_0x584654['error']){if(_0x584654['error'][_0x45b3('0x10')]===0x1f4){logger[_0x45b3('0x11')](_0x45b3('0x12'),_0x37bb98,_0x584654[_0x45b3('0x11')][_0x45b3('0x13')]);return _0x53857a(_0x584654[_0x45b3('0x11')]['message']);}logger[_0x45b3('0x11')](_0x45b3('0x12'),_0x37bb98,_0x584654[_0x45b3('0x11')]['message']);return _0xa70273(_0x584654['error']['message']);}else{logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x37bb98,_0x45b3('0xd'));_0xa70273(_0x584654[_0x45b3('0x14')][_0x45b3('0x13')]);}})[_0x45b3('0x15')](function(_0x92e3f3){logger[_0x45b3('0x11')](_0x45b3('0x12'),_0x37bb98,_0x92e3f3);_0x53857a(_0x92e3f3);});});}
\ No newline at end of file
+var _0xc1a5=['request\x20sent','debug','stringify','error','code','message','info','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','JscriptyAnswerReport,\x20%s,\x20%s'];(function(_0x441424,_0x5c4774){var _0x2ebd0b=function(_0x181336){while(--_0x181336){_0x441424['push'](_0x441424['shift']());}};_0x2ebd0b(++_0x5c4774);}(_0xc1a5,0x1ec));var _0x5c1a=function(_0x5443ca,_0x5ad082){_0x5443ca=_0x5443ca-0x0;var _0x505ade=_0xc1a5[_0x5443ca];return _0x505ade;};'use strict';var _=require('lodash');var util=require(_0x5c1a('0x0'));var moment=require('moment');var BPromise=require(_0x5c1a('0x1'));var rs=require(_0x5c1a('0x2'));var fs=require('fs');var Redis=require(_0x5c1a('0x3'));var db=require(_0x5c1a('0x4'))['db'];var utils=require(_0x5c1a('0x5'));var logger=require(_0x5c1a('0x6'))(_0x5c1a('0x7'));var config=require(_0x5c1a('0x8'));var jayson=require(_0x5c1a('0x9'));var client=jayson[_0x5c1a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3bce6d,_0x58bfbf,_0x101938){return new BPromise(function(_0x36c22b,_0x1831a0){return client[_0x5c1a('0xb')](_0x3bce6d,_0x101938)[_0x5c1a('0xc')](function(_0x3e52ec){logger['info'](_0x5c1a('0xd'),_0x58bfbf,_0x5c1a('0xe'));logger[_0x5c1a('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x58bfbf,_0x5c1a('0xe'),JSON[_0x5c1a('0x10')](_0x3e52ec));if(_0x3e52ec[_0x5c1a('0x11')]){if(_0x3e52ec[_0x5c1a('0x11')][_0x5c1a('0x12')]===0x1f4){logger[_0x5c1a('0x11')](_0x5c1a('0xd'),_0x58bfbf,_0x3e52ec[_0x5c1a('0x11')]['message']);return _0x1831a0(_0x3e52ec[_0x5c1a('0x11')][_0x5c1a('0x13')]);}logger['error'](_0x5c1a('0xd'),_0x58bfbf,_0x3e52ec['error']['message']);return _0x36c22b(_0x3e52ec['error'][_0x5c1a('0x13')]);}else{logger[_0x5c1a('0x14')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x58bfbf,_0x5c1a('0xe'));_0x36c22b(_0x3e52ec[_0x5c1a('0x15')][_0x5c1a('0x13')]);}})[_0x5c1a('0x16')](function(_0x440eec){logger[_0x5c1a('0x11')](_0x5c1a('0xd'),_0x58bfbf,_0x440eec);_0x1831a0(_0x440eec);});});}
\ No newline at end of file
index 85a4a44..a6a01a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9f7=['isAuthenticated','index','get','show','/:id/sessions','getSessions','/:id/answers','getAnswers','/:id/summary','post','create','/:id/clone','clone','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x293e99,_0x3c26cb){var _0x5a8cdc=function(_0xa3aa29){while(--_0xa3aa29){_0x293e99['push'](_0x293e99['shift']());}};_0x5a8cdc(++_0x3c26cb);}(_0xb9f7,0x171));var _0x7b9f=function(_0x57add2,_0x4f2b7d){_0x57add2=_0x57add2-0x0;var _0x4e3670=_0xb9f7[_0x57add2];return _0x4e3670;};'use strict';var multer=require(_0x7b9f('0x0'));var util=require(_0x7b9f('0x1'));var path=require(_0x7b9f('0x2'));var timeout=require(_0x7b9f('0x3'));var express=require('express');var router=express[_0x7b9f('0x4')]();var fs_extra=require(_0x7b9f('0x5'));var auth=require(_0x7b9f('0x6'));var interaction=require(_0x7b9f('0x7'));var config=require(_0x7b9f('0x8'));var controller=require('./jscriptyProject.controller');router['get']('/',auth[_0x7b9f('0x9')](),controller[_0x7b9f('0xa')]);router[_0x7b9f('0xb')]('/:id',auth[_0x7b9f('0x9')](),controller[_0x7b9f('0xc')]);router[_0x7b9f('0xb')](_0x7b9f('0xd'),auth['isAuthenticated'](),controller[_0x7b9f('0xe')]);router[_0x7b9f('0xb')](_0x7b9f('0xf'),auth['isAuthenticated'](),controller[_0x7b9f('0x10')]);router[_0x7b9f('0xb')](_0x7b9f('0x11'),auth[_0x7b9f('0x9')](),timeout('30s'),controller['getSummary']);router[_0x7b9f('0x12')]('/',auth['isAuthenticated'](),controller[_0x7b9f('0x13')]);router[_0x7b9f('0x12')](_0x7b9f('0x14'),auth[_0x7b9f('0x9')](),controller[_0x7b9f('0x15')]);router[_0x7b9f('0x16')](_0x7b9f('0x17'),auth['isAuthenticated'](),controller[_0x7b9f('0x18')]);router['delete'](_0x7b9f('0x17'),auth[_0x7b9f('0x9')](),controller[_0x7b9f('0x19')]);module[_0x7b9f('0x1a')]=router;
\ No newline at end of file
+var _0xeb3d=['/:id/summary','30s','getSummary','post','create','/:id/clone','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','/:id','show','get','/:id/sessions','getSessions','/:id/answers','getAnswers'];(function(_0x517183,_0x3d35a3){var _0x32f908=function(_0x5ad8eb){while(--_0x5ad8eb){_0x517183['push'](_0x517183['shift']());}};_0x32f908(++_0x3d35a3);}(_0xeb3d,0x15a));var _0xdeb3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xeb3d[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xdeb3('0x0'));var util=require(_0xdeb3('0x1'));var path=require(_0xdeb3('0x2'));var timeout=require(_0xdeb3('0x3'));var express=require(_0xdeb3('0x4'));var router=express[_0xdeb3('0x5')]();var fs_extra=require(_0xdeb3('0x6'));var auth=require(_0xdeb3('0x7'));var interaction=require(_0xdeb3('0x8'));var config=require(_0xdeb3('0x9'));var controller=require('./jscriptyProject.controller');router['get']('/',auth[_0xdeb3('0xa')](),controller['index']);router['get'](_0xdeb3('0xb'),auth['isAuthenticated'](),controller[_0xdeb3('0xc')]);router[_0xdeb3('0xd')](_0xdeb3('0xe'),auth['isAuthenticated'](),controller[_0xdeb3('0xf')]);router[_0xdeb3('0xd')](_0xdeb3('0x10'),auth[_0xdeb3('0xa')](),controller[_0xdeb3('0x11')]);router[_0xdeb3('0xd')](_0xdeb3('0x12'),auth[_0xdeb3('0xa')](),timeout(_0xdeb3('0x13')),controller[_0xdeb3('0x14')]);router[_0xdeb3('0x15')]('/',auth[_0xdeb3('0xa')](),controller[_0xdeb3('0x16')]);router['post'](_0xdeb3('0x17'),auth[_0xdeb3('0xa')](),controller['clone']);router['put'](_0xdeb3('0xb'),auth[_0xdeb3('0xa')](),controller[_0xdeb3('0x18')]);router[_0xdeb3('0x19')](_0xdeb3('0xb'),auth['isAuthenticated'](),controller[_0xdeb3('0x1a')]);module[_0xdeb3('0x1b')]=router;
\ No newline at end of file
index 67f3acc..3096ebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e81=['{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','BOOLEAN','sequelize','lodash','util','exports','name','STRING','TEXT','long','formData','stringify','isString','setDataValue'];(function(_0x3dbe46,_0x3a08e6){var _0xa7c998=function(_0x2e0fb4){while(--_0x2e0fb4){_0x3dbe46['push'](_0x3dbe46['shift']());}};_0xa7c998(++_0x3a08e6);}(_0x3e81,0xe4));var _0x13e8=function(_0x395791,_0x38c864){_0x395791=_0x395791-0x0;var _0x217514=_0x3e81[_0x395791];return _0x217514;};'use strict';var Sequelize=require(_0x13e8('0x0'));var _=require(_0x13e8('0x1'));var util=require(_0x13e8('0x2'));module[_0x13e8('0x3')]={'name':{'type':Sequelize['STRING'],'unique':_0x13e8('0x4')},'description':{'type':Sequelize[_0x13e8('0x5')]},'formData':{'type':Sequelize[_0x13e8('0x6')](_0x13e8('0x7')),'set':function(_0x13338b){if(_['isObjectLike'](_0x13338b)){this['setDataValue'](_0x13e8('0x8'),JSON[_0x13e8('0x9')](_0x13338b));}else if(_[_0x13e8('0xa')](_0x13338b)){this[_0x13e8('0xb')](_0x13e8('0x8'),_0x13338b);}else{this[_0x13e8('0xb')](_0x13e8('0x8'),util['format'](_0x13e8('0xc'),this[_0x13e8('0xd')]('name')||'',this[_0x13e8('0xd')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x13e8('0xe')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc9df=['TEXT','long','isObjectLike','setDataValue','formData','stringify','getDataValue','name','description','BOOLEAN','sequelize','lodash','exports','STRING'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xc9df,0x14c));var _0xfc9d=function(_0x212eaf,_0x8078a4){_0x212eaf=_0x212eaf-0x0;var _0xacaaa0=_0xc9df[_0x212eaf];return _0xacaaa0;};'use strict';var Sequelize=require(_0xfc9d('0x0'));var _=require(_0xfc9d('0x1'));var util=require('util');module[_0xfc9d('0x2')]={'name':{'type':Sequelize[_0xfc9d('0x3')],'unique':'name'},'description':{'type':Sequelize[_0xfc9d('0x3')]},'formData':{'type':Sequelize[_0xfc9d('0x4')](_0xfc9d('0x5')),'set':function(_0xcf7477){if(_[_0xfc9d('0x6')](_0xcf7477)){this[_0xfc9d('0x7')](_0xfc9d('0x8'),JSON[_0xfc9d('0x9')](_0xcf7477));}else if(_['isString'](_0xcf7477)){this[_0xfc9d('0x7')](_0xfc9d('0x8'),_0xcf7477);}else{this['setDataValue'](_0xfc9d('0x8'),util['format']('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0xfc9d('0xa')](_0xfc9d('0xb'))||'',this[_0xfc9d('0xa')](_0xfc9d('0xc'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xfc9d('0xd')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index fe2b617..baaf94f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1458=['format','SessionId','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','Projects','name','send','index','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','options','includeAll','include','findAll','catch','params','keys','JscriptyProject','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','merge','omit','createdAt','user','userProfileId','getSessions','findOne','JscriptySessionReport','hasOwnProperty','nolimit','ProjectId','rows','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','startTime','starttime','parse','JscriptyQuestionReport','questionId','question'];(function(_0x502780,_0x13aad4){var _0x5b386a=function(_0x39a509){while(--_0x39a509){_0x502780['push'](_0x502780['shift']());}};_0x5b386a(++_0x13aad4);}(_0x1458,0x16c));var _0x8145=function(_0x1ae6a8,_0x488651){_0x1ae6a8=_0x1ae6a8-0x0;var _0x27699d=_0x1458[_0x1ae6a8];return _0x27699d;};'use strict';var emlformat=require(_0x8145('0x0'));var rimraf=require(_0x8145('0x1'));var zipdir=require(_0x8145('0x2'));var jsonpatch=require(_0x8145('0x3'));var rp=require(_0x8145('0x4'));var moment=require(_0x8145('0x5'));var BPromise=require(_0x8145('0x6'));var Mustache=require('mustache');var util=require(_0x8145('0x7'));var path=require(_0x8145('0x8'));var sox=require(_0x8145('0x9'));var csv=require(_0x8145('0xa'));var ejs=require(_0x8145('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8145('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x8145('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8145('0xe'));var Papa=require(_0x8145('0xf'));var Redis=require('ioredis');var authService=require(_0x8145('0x10'));var qs=require(_0x8145('0x11'));var as=require(_0x8145('0x12'));var hardwareService=require(_0x8145('0x13'));var logger=require(_0x8145('0x14'))('api');var utils=require(_0x8145('0x15'));var config=require(_0x8145('0x16'));var licenseUtil=require(_0x8145('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4bf4ae,_0x1ddbb1){_0x1ddbb1=_0x1ddbb1||0xcc;return function(_0x469c38){if(_0x469c38){return _0x4bf4ae[_0x8145('0x18')](_0x1ddbb1);}return _0x4bf4ae[_0x8145('0x19')](_0x1ddbb1)[_0x8145('0x1a')]();};}function respondWithResult(_0x2c94d7,_0xecb43){_0xecb43=_0xecb43||0xc8;return function(_0x507b92){if(_0x507b92){return _0x2c94d7[_0x8145('0x19')](_0xecb43)[_0x8145('0x1b')](_0x507b92);}};}function respondWithFilteredResult(_0x1a0c47,_0x194c1d){return function(_0x492d49){if(_0x492d49){var _0x58cd6d=typeof _0x194c1d[_0x8145('0x1c')]===_0x8145('0x1d')&&typeof _0x194c1d[_0x8145('0x1e')]===_0x8145('0x1d');var _0x4a33d5=_0x492d49[_0x8145('0x1f')];var _0x39ef7f=_0x58cd6d?0x0:_0x194c1d['offset'];var _0x3ff911=_0x58cd6d?_0x492d49[_0x8145('0x1f')]:_0x194c1d[_0x8145('0x1c')]+_0x194c1d[_0x8145('0x1e')];var _0x42c69e;if(_0x3ff911>=_0x4a33d5){_0x3ff911=_0x4a33d5;_0x42c69e=0xc8;}else{_0x42c69e=0xce;}_0x1a0c47['status'](_0x42c69e);return _0x1a0c47[_0x8145('0x20')](_0x8145('0x21'),_0x39ef7f+'-'+_0x3ff911+'/'+_0x4a33d5)[_0x8145('0x1b')](_0x492d49);}return null;};}function patchUpdates(_0x11707e){return function(_0x6674dc){try{jsonpatch[_0x8145('0x22')](_0x6674dc,_0x11707e,!![]);}catch(_0x4f05f9){return BPromise[_0x8145('0x23')](_0x4f05f9);}return _0x6674dc[_0x8145('0x24')]();};}function saveUpdates(_0xed1224,_0x47bbcd){return function(_0x1f702a){if(_0x1f702a){return _0x1f702a['update'](_0xed1224)['then'](function(_0xe26f97){return _0xe26f97;});}return null;};}function removeEntity(_0x2f140c,_0x325bf4){return function(_0x4d2e26){if(_0x4d2e26){return _0x4d2e26[_0x8145('0x25')]()[_0x8145('0x26')](function(){var _0x287861=_0x4d2e26['get']({'plain':!![]});var _0x5e4ff9=_0x8145('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x5e4ff9,'resourceId':_0x287861['id']}})['then'](function(){return _0x4d2e26;});})['then'](function(){_0x2f140c[_0x8145('0x19')](0xcc)[_0x8145('0x1a')]();});}};}function handleEntityNotFound(_0x39f128,_0x1bbd6b){return function(_0x225e6c){if(!_0x225e6c){_0x39f128[_0x8145('0x18')](0x194);}return _0x225e6c;};}function handleError(_0x3ad770,_0x5c2d32){_0x5c2d32=_0x5c2d32||0x1f4;return function(_0x471533){logger['error'](_0x471533['stack']);if(_0x471533[_0x8145('0x28')]){delete _0x471533[_0x8145('0x28')];}_0x3ad770[_0x8145('0x19')](_0x5c2d32)[_0x8145('0x29')](_0x471533);};}exports[_0x8145('0x2a')]=function(_0x3f1417,_0x590973){var _0x14596f={},_0x42efc2={},_0x54fef9={'count':0x0,'rows':[]};var _0x549dd1=_['map'](db['JscriptyProject'][_0x8145('0x2b')],function(_0x1aeb62){return{'name':_0x1aeb62[_0x8145('0x2c')],'type':_0x1aeb62[_0x8145('0x2d')]['key']};});_0x42efc2[_0x8145('0x2e')]=_[_0x8145('0x2f')](_0x549dd1,_0x8145('0x28'));_0x42efc2[_0x8145('0x30')]=_['keys'](_0x3f1417[_0x8145('0x30')]);_0x42efc2[_0x8145('0x31')]=_[_0x8145('0x32')](_0x42efc2[_0x8145('0x2e')],_0x42efc2[_0x8145('0x30')]);_0x14596f[_0x8145('0x33')]=_[_0x8145('0x32')](_0x42efc2[_0x8145('0x2e')],qs[_0x8145('0x34')](_0x3f1417[_0x8145('0x30')][_0x8145('0x34')]));_0x14596f[_0x8145('0x33')]=_0x14596f[_0x8145('0x33')][_0x8145('0x35')]?_0x14596f[_0x8145('0x33')]:_0x42efc2[_0x8145('0x2e')];if(!_0x3f1417[_0x8145('0x30')]['hasOwnProperty']('nolimit')){_0x14596f[_0x8145('0x1e')]=qs[_0x8145('0x1e')](_0x3f1417[_0x8145('0x30')]['limit']);_0x14596f[_0x8145('0x1c')]=qs[_0x8145('0x1c')](_0x3f1417[_0x8145('0x30')][_0x8145('0x1c')]);}_0x14596f[_0x8145('0x36')]=qs[_0x8145('0x37')](_0x3f1417[_0x8145('0x30')][_0x8145('0x37')]);_0x14596f[_0x8145('0x38')]=qs[_0x8145('0x31')](_[_0x8145('0x39')](_0x3f1417[_0x8145('0x30')],_0x42efc2[_0x8145('0x31')]),_0x549dd1);if(_0x3f1417[_0x8145('0x30')][_0x8145('0x3a')]){_0x14596f[_0x8145('0x38')]=_['merge'](_0x14596f[_0x8145('0x38')],{'$or':_[_0x8145('0x2f')](_0x549dd1,function(_0x1fc41e){if(_0x1fc41e[_0x8145('0x2d')]!=='VIRTUAL'){var _0x4dea8e={};_0x4dea8e[_0x1fc41e['name']]={'$like':'%'+_0x3f1417['query'][_0x8145('0x3a')]+'%'};return _0x4dea8e;}})});}_0x14596f=_['merge']({},_0x14596f,_0x3f1417[_0x8145('0x3b')]);var _0x11161e={'where':_0x14596f[_0x8145('0x38')]};return db['JscriptyProject'][_0x8145('0x1f')](_0x11161e)['then'](function(_0x184d0f){_0x54fef9[_0x8145('0x1f')]=_0x184d0f;if(_0x3f1417[_0x8145('0x30')][_0x8145('0x3c')]){_0x14596f[_0x8145('0x3d')]=[{'all':!![]}];}return db['JscriptyProject'][_0x8145('0x3e')](_0x14596f);})[_0x8145('0x26')](function(_0x356cde){_0x54fef9['rows']=_0x356cde;return _0x54fef9;})[_0x8145('0x26')](respondWithFilteredResult(_0x590973,_0x14596f))[_0x8145('0x3f')](handleError(_0x590973,null));};exports['show']=function(_0x5eebc9,_0xb54446){var _0x15b0f6={'raw':![],'where':{'id':_0x5eebc9[_0x8145('0x40')]['id']}},_0x3d8ae5={};_0x3d8ae5[_0x8145('0x2e')]=_[_0x8145('0x41')](db[_0x8145('0x42')][_0x8145('0x2b')]);_0x3d8ae5['query']=_[_0x8145('0x41')](_0x5eebc9[_0x8145('0x30')]);_0x3d8ae5[_0x8145('0x31')]=_[_0x8145('0x32')](_0x3d8ae5[_0x8145('0x2e')],_0x3d8ae5[_0x8145('0x30')]);_0x15b0f6[_0x8145('0x33')]=_['intersection'](_0x3d8ae5[_0x8145('0x2e')],qs['fields'](_0x5eebc9[_0x8145('0x30')][_0x8145('0x34')]));_0x15b0f6[_0x8145('0x33')]=_0x15b0f6[_0x8145('0x33')][_0x8145('0x35')]?_0x15b0f6[_0x8145('0x33')]:_0x3d8ae5['model'];if(_0x5eebc9[_0x8145('0x30')]['includeAll']){_0x15b0f6[_0x8145('0x3d')]=[{'all':!![]}];}_0x15b0f6=_['merge']({},_0x15b0f6,_0x5eebc9[_0x8145('0x3b')]);return db[_0x8145('0x42')]['find'](_0x15b0f6)['then'](handleEntityNotFound(_0xb54446,null))['then'](respondWithResult(_0xb54446,null))[_0x8145('0x3f')](handleError(_0xb54446,null));};exports['create']=function(_0x3e3344,_0x15a3fb){return db[_0x8145('0x42')][_0x8145('0x43')](_0x3e3344[_0x8145('0x44')],{})[_0x8145('0x26')](function(_0x3549a1){var _0x21c96a=_0x3e3344['user'][_0x8145('0x45')]({'plain':!![]});if(!_0x21c96a)throw new Error(_0x8145('0x46'));if(_0x21c96a[_0x8145('0x47')]==='user'){var _0x4df759=_0x3549a1[_0x8145('0x45')]({'plain':!![]});var _0x4e2061=_0x8145('0x27');return db[_0x8145('0x48')][_0x8145('0x49')]({'where':{'name':_0x4e2061,'userProfileId':_0x21c96a['userProfileId']},'raw':!![]})[_0x8145('0x26')](function(_0x1405a8){if(_0x1405a8&&_0x1405a8[_0x8145('0x4a')]===0x0){return db[_0x8145('0x4b')][_0x8145('0x43')]({'name':_0x4df759[_0x8145('0x28')],'resourceId':_0x4df759['id'],'type':_0x1405a8['name'],'sectionId':_0x1405a8['id']},{})[_0x8145('0x26')](function(){return _0x3549a1;});}else{return _0x3549a1;}})[_0x8145('0x3f')](function(_0x5628f0){logger[_0x8145('0x4c')](_0x8145('0x4d'),_0x5628f0);throw _0x5628f0;});}return _0x3549a1;})['then'](respondWithResult(_0x15a3fb,0xc9))[_0x8145('0x3f')](handleError(_0x15a3fb,null));};exports[_0x8145('0x4e')]=function(_0x33a285,_0x277879){var _0x374d64={'where':{'id':_0x33a285[_0x8145('0x40')]['id']}},_0x1b660f={};_0x1b660f['model']=_[_0x8145('0x41')](db[_0x8145('0x42')]['rawAttributes']);_0x374d64['attributes']=_[_0x8145('0x32')](_0x1b660f['model'],qs['fields'](_0x33a285[_0x8145('0x30')][_0x8145('0x34')]));_0x374d64[_0x8145('0x33')]=_0x374d64[_0x8145('0x33')][_0x8145('0x35')]?_0x374d64[_0x8145('0x33')]:_0x1b660f['model'];if(_0x33a285[_0x8145('0x30')][_0x8145('0x3c')]){_0x374d64[_0x8145('0x3d')]=[{'all':!![]}];}_0x374d64=_[_0x8145('0x4f')]({},_0x374d64,_0x33a285['options']);return db[_0x8145('0x42')][_0x8145('0x49')](_0x374d64)[_0x8145('0x26')](handleEntityNotFound(_0x277879,null))[_0x8145('0x26')](function(_0x13e895){if(_0x13e895){var _0x284dcf=_0x13e895['get']({'plain':!![]});_0x284dcf=qs[_0x8145('0x50')](_0x284dcf,['id',_0x8145('0x51'),'updatedAt']);_0x33a285[_0x8145('0x44')]=_[_0x8145('0x50')](_0x33a285[_0x8145('0x44')],['id',_0x8145('0x51'),'updatedAt']);return db[_0x8145('0x42')][_0x8145('0x43')](_[_0x8145('0x4f')](_0x284dcf,_0x33a285[_0x8145('0x44')]),{'include':_0x33a285[_0x8145('0x30')][_0x8145('0x3c')]?[{'all':!![]}]:undefined})[_0x8145('0x26')](function(_0x267e1c){var _0xd10706=_0x33a285[_0x8145('0x52')]['get']({'plain':!![]});if(!_0xd10706)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xd10706[_0x8145('0x47')]===_0x8145('0x52')){var _0x3ed98e=_0x267e1c[_0x8145('0x45')]({'plain':!![]});var _0x53086c=_0x8145('0x27');return db['UserProfileSection']['find']({'where':{'name':_0x53086c,'userProfileId':_0xd10706[_0x8145('0x53')]},'raw':!![]})[_0x8145('0x26')](function(_0xded69e){if(_0xded69e&&_0xded69e[_0x8145('0x4a')]===0x0){return db[_0x8145('0x4b')][_0x8145('0x43')]({'name':_0x3ed98e[_0x8145('0x28')],'resourceId':_0x3ed98e['id'],'type':_0xded69e['name'],'sectionId':_0xded69e['id']},{})['then'](function(){return _0x267e1c;});}else{return _0x267e1c;}})[_0x8145('0x3f')](function(_0x41abfc){logger[_0x8145('0x4c')](_0x8145('0x4d'),_0x41abfc);throw _0x41abfc;});}return _0x267e1c;});}})[_0x8145('0x26')](respondWithResult(_0x277879,0xc9))[_0x8145('0x3f')](handleError(_0x277879,null));};exports['update']=function(_0x1054e7,_0x522bae){if(_0x1054e7[_0x8145('0x44')]['id']){delete _0x1054e7[_0x8145('0x44')]['id'];}return db[_0x8145('0x42')]['find']({'where':{'id':_0x1054e7[_0x8145('0x40')]['id']}})[_0x8145('0x26')](handleEntityNotFound(_0x522bae,null))['then'](saveUpdates(_0x1054e7[_0x8145('0x44')],null))[_0x8145('0x26')](respondWithResult(_0x522bae,null))[_0x8145('0x3f')](handleError(_0x522bae,null));};exports[_0x8145('0x25')]=function(_0x58544c,_0x5c335e){return db[_0x8145('0x42')][_0x8145('0x49')]({'where':{'id':_0x58544c[_0x8145('0x40')]['id']}})[_0x8145('0x26')](handleEntityNotFound(_0x5c335e,null))[_0x8145('0x26')](removeEntity(_0x5c335e,null))['catch'](handleError(_0x5c335e,null));};exports[_0x8145('0x54')]=function(_0x3c8658,_0xe60231,_0x5b701e){var _0x5330f0={'raw':!![],'where':{}};var _0x24b765={};var _0x4c6064={'count':0x0,'rows':[]};return db[_0x8145('0x42')][_0x8145('0x55')]({'where':{'id':_0x3c8658[_0x8145('0x40')]['id']}})['then'](handleEntityNotFound(_0xe60231,null))['then'](function(_0x476e20){if(_0x476e20){_0x24b765[_0x8145('0x2e')]=_['keys'](db[_0x8145('0x56')][_0x8145('0x2b')]);_0x24b765['query']=_[_0x8145('0x41')](_0x3c8658['query']);_0x24b765['filters']=_[_0x8145('0x32')](_0x24b765['model'],_0x24b765[_0x8145('0x30')]);_0x5330f0['attributes']=_['intersection'](_0x24b765[_0x8145('0x2e')],qs[_0x8145('0x34')](_0x3c8658[_0x8145('0x30')][_0x8145('0x34')]));_0x5330f0[_0x8145('0x33')]=_0x5330f0['attributes'][_0x8145('0x35')]?_0x5330f0['attributes']:_0x24b765['model'];if(!_0x3c8658[_0x8145('0x30')][_0x8145('0x57')](_0x8145('0x58'))){_0x5330f0[_0x8145('0x1e')]=qs[_0x8145('0x1e')](_0x3c8658['query']['limit']);_0x5330f0[_0x8145('0x1c')]=qs[_0x8145('0x1c')](_0x3c8658[_0x8145('0x30')][_0x8145('0x1c')]);}_0x5330f0['order']=qs[_0x8145('0x37')](_0x3c8658[_0x8145('0x30')][_0x8145('0x37')]);_0x5330f0[_0x8145('0x38')]=qs[_0x8145('0x31')](_['pick'](_0x3c8658[_0x8145('0x30')],_0x24b765['filters']));_0x5330f0[_0x8145('0x38')][_0x8145('0x59')]=_0x476e20['id'];if(_0x3c8658['query']['filter']){_0x5330f0['where']=_[_0x8145('0x4f')](_0x5330f0[_0x8145('0x38')],{'$or':_['map'](_0x5330f0[_0x8145('0x33')],function(_0x34f565){var _0x46f5e3={};_0x46f5e3[_0x34f565]={'$like':'%'+_0x3c8658[_0x8145('0x30')][_0x8145('0x3a')]+'%'};return _0x46f5e3;})});}_0x5330f0=_[_0x8145('0x4f')]({},_0x5330f0,_0x3c8658[_0x8145('0x3b')]);return db[_0x8145('0x56')][_0x8145('0x1f')]({'where':_0x5330f0['where']})['then'](function(_0x2e40e2){_0x4c6064['count']=_0x2e40e2;if(_0x3c8658[_0x8145('0x30')][_0x8145('0x3c')]){_0x5330f0[_0x8145('0x3d')]=[{'all':!![]}];}return db[_0x8145('0x56')][_0x8145('0x3e')](_0x5330f0);})[_0x8145('0x26')](function(_0x5f4f92){_0x4c6064[_0x8145('0x5a')]=_0x5f4f92;return _0x4c6064;});}})['then'](respondWithFilteredResult(_0xe60231,_0x5330f0))[_0x8145('0x3f')](handleError(_0xe60231,null));};exports['getAnswers']=function(_0x5bb316,_0x4415d2,_0x4b02ec){var _0xa19f7d={'raw':!![],'where':{}};var _0x15fc92={};var _0x44b10e={'count':0x0,'rows':[]};return db[_0x8145('0x42')]['findOne']({'where':{'id':_0x5bb316[_0x8145('0x40')]['id']}})[_0x8145('0x26')](handleEntityNotFound(_0x4415d2,null))[_0x8145('0x26')](function(_0x24367f){if(_0x24367f){_0x15fc92['model']=_[_0x8145('0x41')](db[_0x8145('0x5b')][_0x8145('0x2b')]);_0x15fc92[_0x8145('0x30')]=_[_0x8145('0x41')](_0x5bb316[_0x8145('0x30')]);_0x15fc92[_0x8145('0x31')]=_['intersection'](_0x15fc92[_0x8145('0x2e')],_0x15fc92[_0x8145('0x30')]);_0xa19f7d[_0x8145('0x33')]=_[_0x8145('0x32')](_0x15fc92['model'],qs['fields'](_0x5bb316[_0x8145('0x30')][_0x8145('0x34')]));_0xa19f7d[_0x8145('0x33')]=_0xa19f7d[_0x8145('0x33')][_0x8145('0x35')]?_0xa19f7d[_0x8145('0x33')]:_0x15fc92['model'];if(!_0x5bb316[_0x8145('0x30')][_0x8145('0x57')](_0x8145('0x58'))){_0xa19f7d['limit']=qs[_0x8145('0x1e')](_0x5bb316[_0x8145('0x30')][_0x8145('0x1e')]);_0xa19f7d[_0x8145('0x1c')]=qs[_0x8145('0x1c')](_0x5bb316[_0x8145('0x30')]['offset']);}_0xa19f7d['order']=qs[_0x8145('0x37')](_0x5bb316['query']['sort']);_0xa19f7d[_0x8145('0x38')]=qs[_0x8145('0x31')](_[_0x8145('0x39')](_0x5bb316[_0x8145('0x30')],_0x15fc92[_0x8145('0x31')]));_0xa19f7d[_0x8145('0x38')][_0x8145('0x59')]=_0x24367f['id'];if(_0x5bb316[_0x8145('0x30')]['filter']){_0xa19f7d[_0x8145('0x38')]=_[_0x8145('0x4f')](_0xa19f7d[_0x8145('0x38')],{'$or':_[_0x8145('0x2f')](_0xa19f7d[_0x8145('0x33')],function(_0x5ed4ae){var _0x34cf57={};_0x34cf57[_0x5ed4ae]={'$like':'%'+_0x5bb316[_0x8145('0x30')][_0x8145('0x3a')]+'%'};return _0x34cf57;})});}_0xa19f7d=_[_0x8145('0x4f')]({},_0xa19f7d,_0x5bb316[_0x8145('0x3b')]);return db[_0x8145('0x5b')][_0x8145('0x1f')]({'where':_0xa19f7d[_0x8145('0x38')]})[_0x8145('0x26')](function(_0x499c7e){_0x44b10e[_0x8145('0x1f')]=_0x499c7e;if(_0x5bb316['query'][_0x8145('0x3c')]){_0xa19f7d['include']=[{'all':!![]}];}return db[_0x8145('0x5b')][_0x8145('0x3e')](_0xa19f7d);})[_0x8145('0x26')](function(_0x3d153c){_0x44b10e['rows']=_0x3d153c;return _0x44b10e;});}})[_0x8145('0x26')](respondWithFilteredResult(_0x4415d2,_0xa19f7d))[_0x8145('0x3f')](handleError(_0x4415d2,null));};function char(_0x50672a){return _0x8145('0x5c')===typeof _0x50672a?String[_0x8145('0x5d')][_0x8145('0x22')](null,arguments):_0x50672a;}function needsEncapsulation(_0x5040e2){return!!_0x5040e2&&(_0x5040e2[_0x8145('0x5e')]()[_0x8145('0x5f')](char(0xd))>=0x0||_0x5040e2[_0x8145('0x5e')]()[_0x8145('0x5f')](char(0xa))>=0x0||_0x5040e2[_0x8145('0x5e')]()[_0x8145('0x5f')](char(0x2c))>=0x0||_0x5040e2[_0x8145('0x5e')]()[_0x8145('0x5f')](char(0x22))>=0x0);}function encapsulate(_0x3c9f9e){var _0x224351=char(0x22),_0x7a364b='\x5c'+char(0x22),_0x2bd5c7=_0x3c9f9e[_0x8145('0x5e')]()[_0x8145('0x60')](new RegExp(_0x224351,'g'),_0x7a364b);return _0x224351+_0x2bd5c7+_0x224351;}exports[_0x8145('0x61')]=function(_0x1bdd62,_0x3ead68,_0x2fb36b){var _0x341c0b,_0x531128;var _0x5088b7={'where':{'ProjectId':_0x1bdd62['params']['id']}};if(_0x1bdd62[_0x8145('0x30')][_0x8145('0x62')]){_0x5088b7[_0x8145('0x38')][_0x8145('0x63')]=JSON[_0x8145('0x64')](_0x1bdd62['query'][_0x8145('0x62')]);}return db[_0x8145('0x56')]['findAll'](_0x5088b7)['then'](handleEntityNotFound(_0x3ead68,null))[_0x8145('0x26')](function(_0x508f86){if(_0x508f86){_0x341c0b=_0x508f86;return db[_0x8145('0x65')]['findAll']({'where':{'SessionId':{'$in':_[_0x8145('0x2f')](_0x341c0b,'id')},'ProjectId':_0x1bdd62[_0x8145('0x40')]['id']},'order':'-createdAt'});}})[_0x8145('0x26')](handleEntityNotFound(_0x3ead68,null))[_0x8145('0x26')](function(_0x45d2c0){if(_0x45d2c0){_0x531128=_0x45d2c0;var _0x3d4e96={};for(var _0x5dd7f1=0x0,_0x12b532=_0x531128[_0x8145('0x35')];_0x5dd7f1<_0x12b532;_0x5dd7f1++){if(!_0x3d4e96['hasOwnProperty'](_0x531128[_0x5dd7f1][_0x8145('0x66')])){_0x3d4e96[_0x531128[_0x5dd7f1][_0x8145('0x66')]]=needsEncapsulation(_0x531128[_0x5dd7f1][_0x8145('0x67')])?encapsulate(_0x531128[_0x5dd7f1][_0x8145('0x67')]):_0x531128[_0x5dd7f1]['question'];}}var _0x112151=[],_0x475def={};for(var _0x38cdce=0x0,_0x4209f1=_0x341c0b['length'];_0x38cdce<_0x4209f1;_0x38cdce++){_0x475def={'ProjectId':_0x1bdd62[_0x8145('0x40')]['id'],'SessionId':_0x341c0b[_0x38cdce]['id'],'StartTime':moment(_0x341c0b[_0x38cdce]['starttime'])[_0x8145('0x68')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x346190=0x0,_0x1b77b8=_0x531128[_0x8145('0x35')];_0x346190<_0x1b77b8;_0x346190++){if(_0x531128[_0x346190][_0x8145('0x69')]==_0x341c0b[_0x38cdce]['id']&&_0x3d4e96[_0x8145('0x57')](_0x531128[_0x346190]['questionId'])){_0x475def[_0x3d4e96[_0x531128[_0x346190]['questionId']]]=_0x531128[_0x346190]['answer'];}}for(var _0x66aa35 in _0x3d4e96){if(!_0x475def[_0x8145('0x57')](_0x3d4e96[_0x66aa35])){_0x475def[_0x3d4e96[_0x66aa35]]=null;}}_0x112151[_0x8145('0x6a')](_0x475def);}return _0x112151;}})[_0x8145('0x26')](function(_0x32a4c4){if(!_[_0x8145('0x6b')](_0x32a4c4)){var _0xb5106b=toCsv(_0x32a4c4);var _0x68d839=Date[_0x8145('0x6c')]();fs[_0x8145('0x6d')](util['format'](_0x8145('0x6e'),_0x1bdd62[_0x8145('0x40')]['id'],_0x68d839),_0xb5106b);_0x3ead68[_0x8145('0x6f')]('Content-disposition',_0x8145('0x70')+util[_0x8145('0x68')](_0x8145('0x71'),_0x1bdd62[_0x8145('0x40')]['id'],_0x68d839));_0x3ead68[_0x8145('0x6f')](_0x8145('0x72'),_0x8145('0x73'));return _0x3ead68[_0x8145('0x74')](util['format']('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x1bdd62[_0x8145('0x40')]['id'],_0x68d839));}else{return _0x3ead68[_0x8145('0x18')](0xcc);}})[_0x8145('0x3f')](handleError(_0x3ead68,null));};
\ No newline at end of file
+var _0x1a4d=['include','findAll','catch','show','params','rawAttributes','keys','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Projects','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt','updatedAt','omit','UserProfileSection','autoAssociation','update','getSessions','hasOwnProperty','ProjectId','JscriptySessionReport','rows','findOne','JscriptyAnswerReport','number','toString','indexOf','replace','getSummary','starttime','parse','startTime','JscriptyQuestionReport','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','isEmpty','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','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','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','name','send','map','JscriptyProject','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x3d07cc,_0x39be0b){var _0x144136=function(_0x2187d9){while(--_0x2187d9){_0x3d07cc['push'](_0x3d07cc['shift']());}};_0x144136(++_0x39be0b);}(_0x1a4d,0x12e));var _0xd1a4=function(_0x2b7177,_0x17b23f){_0x2b7177=_0x2b7177-0x0;var _0xf3efac=_0x1a4d[_0x2b7177];return _0xf3efac;};'use strict';var emlformat=require(_0xd1a4('0x0'));var rimraf=require(_0xd1a4('0x1'));var zipdir=require(_0xd1a4('0x2'));var jsonpatch=require(_0xd1a4('0x3'));var rp=require('request-promise');var moment=require(_0xd1a4('0x4'));var BPromise=require(_0xd1a4('0x5'));var Mustache=require(_0xd1a4('0x6'));var util=require(_0xd1a4('0x7'));var path=require(_0xd1a4('0x8'));var sox=require('sox');var csv=require(_0xd1a4('0x9'));var ejs=require(_0xd1a4('0xa'));var fs=require('fs');var fs_extra=require(_0xd1a4('0xb'));var _=require(_0xd1a4('0xc'));var squel=require(_0xd1a4('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd1a4('0xe'));var toCsv=require(_0xd1a4('0x9'));var querystring=require('querystring');var Papa=require(_0xd1a4('0xf'));var Redis=require(_0xd1a4('0x10'));var authService=require(_0xd1a4('0x11'));var qs=require(_0xd1a4('0x12'));var as=require(_0xd1a4('0x13'));var hardwareService=require(_0xd1a4('0x14'));var logger=require(_0xd1a4('0x15'))(_0xd1a4('0x16'));var utils=require(_0xd1a4('0x17'));var config=require(_0xd1a4('0x18'));var licenseUtil=require(_0xd1a4('0x19'));var db=require(_0xd1a4('0x1a'))['db'];function respondWithStatusCode(_0x518a95,_0x47f3f0){_0x47f3f0=_0x47f3f0||0xcc;return function(_0x28f41e){if(_0x28f41e){return _0x518a95[_0xd1a4('0x1b')](_0x47f3f0);}return _0x518a95['status'](_0x47f3f0)[_0xd1a4('0x1c')]();};}function respondWithResult(_0x5ae214,_0x24508d){_0x24508d=_0x24508d||0xc8;return function(_0x4d65fc){if(_0x4d65fc){return _0x5ae214[_0xd1a4('0x1d')](_0x24508d)[_0xd1a4('0x1e')](_0x4d65fc);}};}function respondWithFilteredResult(_0x28da5d,_0x104c05){return function(_0x2d2524){if(_0x2d2524){var _0x28b5b8=typeof _0x104c05['offset']===_0xd1a4('0x1f')&&typeof _0x104c05[_0xd1a4('0x20')]==='undefined';var _0x472708=_0x2d2524[_0xd1a4('0x21')];var _0xfbb192=_0x28b5b8?0x0:_0x104c05[_0xd1a4('0x22')];var _0x2e2009=_0x28b5b8?_0x2d2524[_0xd1a4('0x21')]:_0x104c05[_0xd1a4('0x22')]+_0x104c05['limit'];var _0x2bbd71;if(_0x2e2009>=_0x472708){_0x2e2009=_0x472708;_0x2bbd71=0xc8;}else{_0x2bbd71=0xce;}_0x28da5d[_0xd1a4('0x1d')](_0x2bbd71);return _0x28da5d['set'](_0xd1a4('0x23'),_0xfbb192+'-'+_0x2e2009+'/'+_0x472708)[_0xd1a4('0x1e')](_0x2d2524);}return null;};}function patchUpdates(_0x3cc430){return function(_0x23788e){try{jsonpatch[_0xd1a4('0x24')](_0x23788e,_0x3cc430,!![]);}catch(_0x1ae1f2){return BPromise[_0xd1a4('0x25')](_0x1ae1f2);}return _0x23788e[_0xd1a4('0x26')]();};}function saveUpdates(_0x2c1ee9,_0x2c0fac){return function(_0x40ff0d){if(_0x40ff0d){return _0x40ff0d['update'](_0x2c1ee9)[_0xd1a4('0x27')](function(_0x16355a){return _0x16355a;});}return null;};}function removeEntity(_0x436f52,_0x1de3a0){return function(_0x480c83){if(_0x480c83){return _0x480c83[_0xd1a4('0x28')]()[_0xd1a4('0x27')](function(){var _0x1d0f82=_0x480c83[_0xd1a4('0x29')]({'plain':!![]});var _0x40b654='Projects';return db[_0xd1a4('0x2a')][_0xd1a4('0x28')]({'where':{'type':_0x40b654,'resourceId':_0x1d0f82['id']}})['then'](function(){return _0x480c83;});})['then'](function(){_0x436f52[_0xd1a4('0x1d')](0xcc)[_0xd1a4('0x1c')]();});}};}function handleEntityNotFound(_0x3f2df1,_0x16bbee){return function(_0x2ccdce){if(!_0x2ccdce){_0x3f2df1['sendStatus'](0x194);}return _0x2ccdce;};}function handleError(_0x32a9cf,_0x4dbb02){_0x4dbb02=_0x4dbb02||0x1f4;return function(_0x43e949){logger[_0xd1a4('0x2b')](_0x43e949['stack']);if(_0x43e949[_0xd1a4('0x2c')]){delete _0x43e949[_0xd1a4('0x2c')];}_0x32a9cf[_0xd1a4('0x1d')](_0x4dbb02)[_0xd1a4('0x2d')](_0x43e949);};}exports['index']=function(_0x5d4d81,_0x210a1d){var _0x2f7116={},_0x2233de={},_0xee6318={'count':0x0,'rows':[]};var _0x2a0a47=_[_0xd1a4('0x2e')](db[_0xd1a4('0x2f')]['rawAttributes'],function(_0x582ebb){return{'name':_0x582ebb[_0xd1a4('0x30')],'type':_0x582ebb[_0xd1a4('0x31')][_0xd1a4('0x32')]};});_0x2233de[_0xd1a4('0x33')]=_[_0xd1a4('0x2e')](_0x2a0a47,_0xd1a4('0x2c'));_0x2233de['query']=_['keys'](_0x5d4d81[_0xd1a4('0x34')]);_0x2233de[_0xd1a4('0x35')]=_[_0xd1a4('0x36')](_0x2233de[_0xd1a4('0x33')],_0x2233de[_0xd1a4('0x34')]);_0x2f7116[_0xd1a4('0x37')]=_[_0xd1a4('0x36')](_0x2233de[_0xd1a4('0x33')],qs[_0xd1a4('0x38')](_0x5d4d81[_0xd1a4('0x34')]['fields']));_0x2f7116[_0xd1a4('0x37')]=_0x2f7116[_0xd1a4('0x37')]['length']?_0x2f7116['attributes']:_0x2233de[_0xd1a4('0x33')];if(!_0x5d4d81[_0xd1a4('0x34')]['hasOwnProperty'](_0xd1a4('0x39'))){_0x2f7116[_0xd1a4('0x20')]=qs['limit'](_0x5d4d81[_0xd1a4('0x34')][_0xd1a4('0x20')]);_0x2f7116['offset']=qs[_0xd1a4('0x22')](_0x5d4d81[_0xd1a4('0x34')][_0xd1a4('0x22')]);}_0x2f7116[_0xd1a4('0x3a')]=qs[_0xd1a4('0x3b')](_0x5d4d81[_0xd1a4('0x34')][_0xd1a4('0x3b')]);_0x2f7116[_0xd1a4('0x3c')]=qs[_0xd1a4('0x35')](_[_0xd1a4('0x3d')](_0x5d4d81[_0xd1a4('0x34')],_0x2233de[_0xd1a4('0x35')]),_0x2a0a47);if(_0x5d4d81[_0xd1a4('0x34')][_0xd1a4('0x3e')]){_0x2f7116[_0xd1a4('0x3c')]=_[_0xd1a4('0x3f')](_0x2f7116[_0xd1a4('0x3c')],{'$or':_[_0xd1a4('0x2e')](_0x2a0a47,function(_0x476c38){if(_0x476c38['type']!==_0xd1a4('0x40')){var _0x8e0c2d={};_0x8e0c2d[_0x476c38[_0xd1a4('0x2c')]]={'$like':'%'+_0x5d4d81['query'][_0xd1a4('0x3e')]+'%'};return _0x8e0c2d;}})});}_0x2f7116=_[_0xd1a4('0x3f')]({},_0x2f7116,_0x5d4d81[_0xd1a4('0x41')]);var _0xb2d4eb={'where':_0x2f7116[_0xd1a4('0x3c')]};return db[_0xd1a4('0x2f')]['count'](_0xb2d4eb)[_0xd1a4('0x27')](function(_0x59559d){_0xee6318[_0xd1a4('0x21')]=_0x59559d;if(_0x5d4d81[_0xd1a4('0x34')][_0xd1a4('0x42')]){_0x2f7116[_0xd1a4('0x43')]=[{'all':!![]}];}return db[_0xd1a4('0x2f')][_0xd1a4('0x44')](_0x2f7116);})[_0xd1a4('0x27')](function(_0x4c908b){_0xee6318['rows']=_0x4c908b;return _0xee6318;})[_0xd1a4('0x27')](respondWithFilteredResult(_0x210a1d,_0x2f7116))[_0xd1a4('0x45')](handleError(_0x210a1d,null));};exports[_0xd1a4('0x46')]=function(_0x4c8bf0,_0x3c27d9){var _0x16ca90={'raw':![],'where':{'id':_0x4c8bf0[_0xd1a4('0x47')]['id']}},_0x225772={};_0x225772[_0xd1a4('0x33')]=_['keys'](db['JscriptyProject'][_0xd1a4('0x48')]);_0x225772[_0xd1a4('0x34')]=_[_0xd1a4('0x49')](_0x4c8bf0[_0xd1a4('0x34')]);_0x225772[_0xd1a4('0x35')]=_[_0xd1a4('0x36')](_0x225772['model'],_0x225772[_0xd1a4('0x34')]);_0x16ca90['attributes']=_[_0xd1a4('0x36')](_0x225772[_0xd1a4('0x33')],qs[_0xd1a4('0x38')](_0x4c8bf0[_0xd1a4('0x34')][_0xd1a4('0x38')]));_0x16ca90[_0xd1a4('0x37')]=_0x16ca90[_0xd1a4('0x37')][_0xd1a4('0x4a')]?_0x16ca90[_0xd1a4('0x37')]:_0x225772[_0xd1a4('0x33')];if(_0x4c8bf0[_0xd1a4('0x34')]['includeAll']){_0x16ca90[_0xd1a4('0x43')]=[{'all':!![]}];}_0x16ca90=_[_0xd1a4('0x3f')]({},_0x16ca90,_0x4c8bf0[_0xd1a4('0x41')]);return db[_0xd1a4('0x2f')]['find'](_0x16ca90)['then'](handleEntityNotFound(_0x3c27d9,null))[_0xd1a4('0x27')](respondWithResult(_0x3c27d9,null))[_0xd1a4('0x45')](handleError(_0x3c27d9,null));};exports[_0xd1a4('0x4b')]=function(_0x2d8109,_0x1e34bf){return db['JscriptyProject']['create'](_0x2d8109[_0xd1a4('0x4c')],{})[_0xd1a4('0x27')](function(_0x332e53){var _0x1cfd0d=_0x2d8109[_0xd1a4('0x4d')][_0xd1a4('0x29')]({'plain':!![]});if(!_0x1cfd0d)throw new Error(_0xd1a4('0x4e'));if(_0x1cfd0d[_0xd1a4('0x4f')]===_0xd1a4('0x4d')){var _0x27d9cd=_0x332e53[_0xd1a4('0x29')]({'plain':!![]});var _0x1e1771=_0xd1a4('0x50');return db['UserProfileSection'][_0xd1a4('0x51')]({'where':{'name':_0x1e1771,'userProfileId':_0x1cfd0d[_0xd1a4('0x52')]},'raw':!![]})['then'](function(_0x91d11c){if(_0x91d11c&&_0x91d11c['autoAssociation']===0x0){return db[_0xd1a4('0x2a')]['create']({'name':_0x27d9cd['name'],'resourceId':_0x27d9cd['id'],'type':_0x91d11c[_0xd1a4('0x2c')],'sectionId':_0x91d11c['id']},{})['then'](function(){return _0x332e53;});}else{return _0x332e53;}})['catch'](function(_0x3da019){logger['error'](_0xd1a4('0x53'),_0x3da019);throw _0x3da019;});}return _0x332e53;})[_0xd1a4('0x27')](respondWithResult(_0x1e34bf,0xc9))[_0xd1a4('0x45')](handleError(_0x1e34bf,null));};exports['clone']=function(_0x28ef89,_0x3903aa){var _0x4da563={'where':{'id':_0x28ef89[_0xd1a4('0x47')]['id']}},_0x1f0756={};_0x1f0756[_0xd1a4('0x33')]=_[_0xd1a4('0x49')](db[_0xd1a4('0x2f')][_0xd1a4('0x48')]);_0x4da563[_0xd1a4('0x37')]=_[_0xd1a4('0x36')](_0x1f0756[_0xd1a4('0x33')],qs[_0xd1a4('0x38')](_0x28ef89[_0xd1a4('0x34')][_0xd1a4('0x38')]));_0x4da563[_0xd1a4('0x37')]=_0x4da563[_0xd1a4('0x37')][_0xd1a4('0x4a')]?_0x4da563[_0xd1a4('0x37')]:_0x1f0756[_0xd1a4('0x33')];if(_0x28ef89[_0xd1a4('0x34')][_0xd1a4('0x42')]){_0x4da563['include']=[{'all':!![]}];}_0x4da563=_[_0xd1a4('0x3f')]({},_0x4da563,_0x28ef89[_0xd1a4('0x41')]);return db[_0xd1a4('0x2f')][_0xd1a4('0x51')](_0x4da563)[_0xd1a4('0x27')](handleEntityNotFound(_0x3903aa,null))[_0xd1a4('0x27')](function(_0x9ade84){if(_0x9ade84){var _0xeab7be=_0x9ade84[_0xd1a4('0x29')]({'plain':!![]});_0xeab7be=qs['omit'](_0xeab7be,['id',_0xd1a4('0x54'),_0xd1a4('0x55')]);_0x28ef89[_0xd1a4('0x4c')]=_[_0xd1a4('0x56')](_0x28ef89[_0xd1a4('0x4c')],['id',_0xd1a4('0x54'),_0xd1a4('0x55')]);return db['JscriptyProject'][_0xd1a4('0x4b')](_[_0xd1a4('0x3f')](_0xeab7be,_0x28ef89[_0xd1a4('0x4c')]),{'include':_0x28ef89['query'][_0xd1a4('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x327e12){var _0x4bbb28=_0x28ef89[_0xd1a4('0x4d')]['get']({'plain':!![]});if(!_0x4bbb28)throw new Error(_0xd1a4('0x4e'));if(_0x4bbb28[_0xd1a4('0x4f')]===_0xd1a4('0x4d')){var _0x1442be=_0x327e12[_0xd1a4('0x29')]({'plain':!![]});var _0x41d7d2=_0xd1a4('0x50');return db[_0xd1a4('0x57')][_0xd1a4('0x51')]({'where':{'name':_0x41d7d2,'userProfileId':_0x4bbb28[_0xd1a4('0x52')]},'raw':!![]})[_0xd1a4('0x27')](function(_0x1e72bb){if(_0x1e72bb&&_0x1e72bb[_0xd1a4('0x58')]===0x0){return db[_0xd1a4('0x2a')][_0xd1a4('0x4b')]({'name':_0x1442be[_0xd1a4('0x2c')],'resourceId':_0x1442be['id'],'type':_0x1e72bb['name'],'sectionId':_0x1e72bb['id']},{})['then'](function(){return _0x327e12;});}else{return _0x327e12;}})['catch'](function(_0x1dee2c){logger[_0xd1a4('0x2b')](_0xd1a4('0x53'),_0x1dee2c);throw _0x1dee2c;});}return _0x327e12;});}})[_0xd1a4('0x27')](respondWithResult(_0x3903aa,0xc9))['catch'](handleError(_0x3903aa,null));};exports[_0xd1a4('0x59')]=function(_0x10eddc,_0x49fa9c){if(_0x10eddc[_0xd1a4('0x4c')]['id']){delete _0x10eddc[_0xd1a4('0x4c')]['id'];}return db[_0xd1a4('0x2f')]['find']({'where':{'id':_0x10eddc[_0xd1a4('0x47')]['id']}})[_0xd1a4('0x27')](handleEntityNotFound(_0x49fa9c,null))[_0xd1a4('0x27')](saveUpdates(_0x10eddc['body'],null))[_0xd1a4('0x27')](respondWithResult(_0x49fa9c,null))['catch'](handleError(_0x49fa9c,null));};exports['destroy']=function(_0x2e0b01,_0x46fed6){return db[_0xd1a4('0x2f')]['find']({'where':{'id':_0x2e0b01[_0xd1a4('0x47')]['id']}})[_0xd1a4('0x27')](handleEntityNotFound(_0x46fed6,null))['then'](removeEntity(_0x46fed6,null))[_0xd1a4('0x45')](handleError(_0x46fed6,null));};exports[_0xd1a4('0x5a')]=function(_0x75859,_0x5f2302,_0xa97492){var _0x4a1095={'raw':!![],'where':{}};var _0x1e3625={};var _0x54359f={'count':0x0,'rows':[]};return db[_0xd1a4('0x2f')]['findOne']({'where':{'id':_0x75859[_0xd1a4('0x47')]['id']}})[_0xd1a4('0x27')](handleEntityNotFound(_0x5f2302,null))[_0xd1a4('0x27')](function(_0x5dfc3c){if(_0x5dfc3c){_0x1e3625[_0xd1a4('0x33')]=_[_0xd1a4('0x49')](db['JscriptySessionReport'][_0xd1a4('0x48')]);_0x1e3625['query']=_[_0xd1a4('0x49')](_0x75859['query']);_0x1e3625[_0xd1a4('0x35')]=_['intersection'](_0x1e3625[_0xd1a4('0x33')],_0x1e3625[_0xd1a4('0x34')]);_0x4a1095[_0xd1a4('0x37')]=_[_0xd1a4('0x36')](_0x1e3625[_0xd1a4('0x33')],qs['fields'](_0x75859['query'][_0xd1a4('0x38')]));_0x4a1095['attributes']=_0x4a1095[_0xd1a4('0x37')]['length']?_0x4a1095['attributes']:_0x1e3625[_0xd1a4('0x33')];if(!_0x75859[_0xd1a4('0x34')][_0xd1a4('0x5b')]('nolimit')){_0x4a1095['limit']=qs[_0xd1a4('0x20')](_0x75859[_0xd1a4('0x34')][_0xd1a4('0x20')]);_0x4a1095[_0xd1a4('0x22')]=qs[_0xd1a4('0x22')](_0x75859['query']['offset']);}_0x4a1095[_0xd1a4('0x3a')]=qs[_0xd1a4('0x3b')](_0x75859['query'][_0xd1a4('0x3b')]);_0x4a1095[_0xd1a4('0x3c')]=qs['filters'](_[_0xd1a4('0x3d')](_0x75859[_0xd1a4('0x34')],_0x1e3625[_0xd1a4('0x35')]));_0x4a1095[_0xd1a4('0x3c')][_0xd1a4('0x5c')]=_0x5dfc3c['id'];if(_0x75859[_0xd1a4('0x34')]['filter']){_0x4a1095[_0xd1a4('0x3c')]=_['merge'](_0x4a1095[_0xd1a4('0x3c')],{'$or':_['map'](_0x4a1095[_0xd1a4('0x37')],function(_0x5c7d8a){var _0xfbbcd6={};_0xfbbcd6[_0x5c7d8a]={'$like':'%'+_0x75859[_0xd1a4('0x34')][_0xd1a4('0x3e')]+'%'};return _0xfbbcd6;})});}_0x4a1095=_[_0xd1a4('0x3f')]({},_0x4a1095,_0x75859[_0xd1a4('0x41')]);return db[_0xd1a4('0x5d')][_0xd1a4('0x21')]({'where':_0x4a1095[_0xd1a4('0x3c')]})['then'](function(_0x16d327){_0x54359f[_0xd1a4('0x21')]=_0x16d327;if(_0x75859[_0xd1a4('0x34')][_0xd1a4('0x42')]){_0x4a1095[_0xd1a4('0x43')]=[{'all':!![]}];}return db[_0xd1a4('0x5d')][_0xd1a4('0x44')](_0x4a1095);})['then'](function(_0x2e3d9a){_0x54359f[_0xd1a4('0x5e')]=_0x2e3d9a;return _0x54359f;});}})[_0xd1a4('0x27')](respondWithFilteredResult(_0x5f2302,_0x4a1095))[_0xd1a4('0x45')](handleError(_0x5f2302,null));};exports['getAnswers']=function(_0x29acc3,_0x4cee12,_0x3f4f7d){var _0x2660b6={'raw':!![],'where':{}};var _0x3be463={};var _0x46c308={'count':0x0,'rows':[]};return db[_0xd1a4('0x2f')][_0xd1a4('0x5f')]({'where':{'id':_0x29acc3[_0xd1a4('0x47')]['id']}})[_0xd1a4('0x27')](handleEntityNotFound(_0x4cee12,null))[_0xd1a4('0x27')](function(_0x1fa81d){if(_0x1fa81d){_0x3be463[_0xd1a4('0x33')]=_['keys'](db[_0xd1a4('0x60')][_0xd1a4('0x48')]);_0x3be463[_0xd1a4('0x34')]=_[_0xd1a4('0x49')](_0x29acc3[_0xd1a4('0x34')]);_0x3be463['filters']=_[_0xd1a4('0x36')](_0x3be463['model'],_0x3be463['query']);_0x2660b6[_0xd1a4('0x37')]=_[_0xd1a4('0x36')](_0x3be463[_0xd1a4('0x33')],qs[_0xd1a4('0x38')](_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x38')]));_0x2660b6[_0xd1a4('0x37')]=_0x2660b6[_0xd1a4('0x37')][_0xd1a4('0x4a')]?_0x2660b6[_0xd1a4('0x37')]:_0x3be463[_0xd1a4('0x33')];if(!_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x5b')](_0xd1a4('0x39'))){_0x2660b6['limit']=qs[_0xd1a4('0x20')](_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x20')]);_0x2660b6['offset']=qs[_0xd1a4('0x22')](_0x29acc3['query'][_0xd1a4('0x22')]);}_0x2660b6[_0xd1a4('0x3a')]=qs['sort'](_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x3b')]);_0x2660b6['where']=qs[_0xd1a4('0x35')](_['pick'](_0x29acc3[_0xd1a4('0x34')],_0x3be463[_0xd1a4('0x35')]));_0x2660b6[_0xd1a4('0x3c')][_0xd1a4('0x5c')]=_0x1fa81d['id'];if(_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x3e')]){_0x2660b6['where']=_[_0xd1a4('0x3f')](_0x2660b6['where'],{'$or':_[_0xd1a4('0x2e')](_0x2660b6['attributes'],function(_0x17c234){var _0x80611a={};_0x80611a[_0x17c234]={'$like':'%'+_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x3e')]+'%'};return _0x80611a;})});}_0x2660b6=_[_0xd1a4('0x3f')]({},_0x2660b6,_0x29acc3['options']);return db[_0xd1a4('0x60')]['count']({'where':_0x2660b6['where']})[_0xd1a4('0x27')](function(_0x2fbeaa){_0x46c308[_0xd1a4('0x21')]=_0x2fbeaa;if(_0x29acc3[_0xd1a4('0x34')][_0xd1a4('0x42')]){_0x2660b6[_0xd1a4('0x43')]=[{'all':!![]}];}return db[_0xd1a4('0x60')]['findAll'](_0x2660b6);})[_0xd1a4('0x27')](function(_0x5525ee){_0x46c308[_0xd1a4('0x5e')]=_0x5525ee;return _0x46c308;});}})['then'](respondWithFilteredResult(_0x4cee12,_0x2660b6))[_0xd1a4('0x45')](handleError(_0x4cee12,null));};function char(_0x104031){return _0xd1a4('0x61')===typeof _0x104031?String['fromCharCode'][_0xd1a4('0x24')](null,arguments):_0x104031;}function needsEncapsulation(_0x76c7d9){return!!_0x76c7d9&&(_0x76c7d9[_0xd1a4('0x62')]()[_0xd1a4('0x63')](char(0xd))>=0x0||_0x76c7d9[_0xd1a4('0x62')]()[_0xd1a4('0x63')](char(0xa))>=0x0||_0x76c7d9[_0xd1a4('0x62')]()[_0xd1a4('0x63')](char(0x2c))>=0x0||_0x76c7d9[_0xd1a4('0x62')]()[_0xd1a4('0x63')](char(0x22))>=0x0);}function encapsulate(_0x484bc2){var _0x5ca5df=char(0x22),_0x37f039='\x5c'+char(0x22),_0x942a9d=_0x484bc2[_0xd1a4('0x62')]()[_0xd1a4('0x64')](new RegExp(_0x5ca5df,'g'),_0x37f039);return _0x5ca5df+_0x942a9d+_0x5ca5df;}exports[_0xd1a4('0x65')]=function(_0x54f112,_0x51a878,_0x426f57){var _0x3d5f59,_0x3947f5;var _0xe8f23a={'where':{'ProjectId':_0x54f112[_0xd1a4('0x47')]['id']}};if(_0x54f112['query']['startTime']){_0xe8f23a[_0xd1a4('0x3c')][_0xd1a4('0x66')]=JSON[_0xd1a4('0x67')](_0x54f112[_0xd1a4('0x34')][_0xd1a4('0x68')]);}return db[_0xd1a4('0x5d')]['findAll'](_0xe8f23a)[_0xd1a4('0x27')](handleEntityNotFound(_0x51a878,null))['then'](function(_0x4d7b58){if(_0x4d7b58){_0x3d5f59=_0x4d7b58;return db[_0xd1a4('0x69')][_0xd1a4('0x44')]({'where':{'SessionId':{'$in':_[_0xd1a4('0x2e')](_0x3d5f59,'id')},'ProjectId':_0x54f112['params']['id']},'order':_0xd1a4('0x6a')});}})[_0xd1a4('0x27')](handleEntityNotFound(_0x51a878,null))[_0xd1a4('0x27')](function(_0x892476){if(_0x892476){_0x3947f5=_0x892476;var _0x1248aa={};for(var _0x154c12=0x0,_0x361b13=_0x3947f5[_0xd1a4('0x4a')];_0x154c12<_0x361b13;_0x154c12++){if(!_0x1248aa[_0xd1a4('0x5b')](_0x3947f5[_0x154c12][_0xd1a4('0x6b')])){_0x1248aa[_0x3947f5[_0x154c12][_0xd1a4('0x6b')]]=needsEncapsulation(_0x3947f5[_0x154c12][_0xd1a4('0x6c')])?encapsulate(_0x3947f5[_0x154c12]['question']):_0x3947f5[_0x154c12][_0xd1a4('0x6c')];}}var _0x48acfc=[],_0x2ba9c9={};for(var _0x13075e=0x0,_0x9c83f0=_0x3d5f59[_0xd1a4('0x4a')];_0x13075e<_0x9c83f0;_0x13075e++){_0x2ba9c9={'ProjectId':_0x54f112['params']['id'],'SessionId':_0x3d5f59[_0x13075e]['id'],'StartTime':moment(_0x3d5f59[_0x13075e][_0xd1a4('0x66')])['format'](_0xd1a4('0x6d'))};for(var _0x4ebc7a=0x0,_0x2681f6=_0x3947f5['length'];_0x4ebc7a<_0x2681f6;_0x4ebc7a++){if(_0x3947f5[_0x4ebc7a][_0xd1a4('0x6e')]==_0x3d5f59[_0x13075e]['id']&&_0x1248aa[_0xd1a4('0x5b')](_0x3947f5[_0x4ebc7a][_0xd1a4('0x6b')])){_0x2ba9c9[_0x1248aa[_0x3947f5[_0x4ebc7a][_0xd1a4('0x6b')]]]=_0x3947f5[_0x4ebc7a][_0xd1a4('0x6f')];}}for(var _0xd1c758 in _0x1248aa){if(!_0x2ba9c9[_0xd1a4('0x5b')](_0x1248aa[_0xd1c758])){_0x2ba9c9[_0x1248aa[_0xd1c758]]=null;}}_0x48acfc['push'](_0x2ba9c9);}return _0x48acfc;}})['then'](function(_0x47a1e3){if(!_[_0xd1a4('0x70')](_0x47a1e3)){var _0x1842fa=toCsv(_0x47a1e3);var _0xc46894=Date['now']();fs[_0xd1a4('0x71')](util[_0xd1a4('0x72')](_0xd1a4('0x73'),_0x54f112[_0xd1a4('0x47')]['id'],_0xc46894),_0x1842fa);_0x51a878['setHeader'](_0xd1a4('0x74'),_0xd1a4('0x75')+util[_0xd1a4('0x72')](_0xd1a4('0x76'),_0x54f112[_0xd1a4('0x47')]['id'],_0xc46894));_0x51a878[_0xd1a4('0x77')](_0xd1a4('0x78'),_0xd1a4('0x79'));return _0x51a878[_0xd1a4('0x7a')](util[_0xd1a4('0x72')](_0xd1a4('0x73'),_0x54f112[_0xd1a4('0x47')]['id'],_0xc46894));}else{return _0x51a878[_0xd1a4('0x1b')](0xcc);}})[_0xd1a4('0x45')](handleError(_0x51a878,null));};
\ No newline at end of file
index 5836470..b4d090e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d4d=['../../config/logger','api','moment','bluebird','path','../../config/environment','./jscriptyProject.attributes','define','jscripty_projects','lodash','util'];(function(_0x9d9f9e,_0x52a029){var _0x48cb13=function(_0x177d55){while(--_0x177d55){_0x9d9f9e['push'](_0x9d9f9e['shift']());}};_0x48cb13(++_0x52a029);}(_0x0d4d,0x132));var _0xd0d4=function(_0x45b32f,_0x134ccf){_0x45b32f=_0x45b32f-0x0;var _0x3f8daf=_0x0d4d[_0x45b32f];return _0x3f8daf;};'use strict';var _=require(_0xd0d4('0x0'));var util=require(_0xd0d4('0x1'));var logger=require(_0xd0d4('0x2'))(_0xd0d4('0x3'));var moment=require(_0xd0d4('0x4'));var BPromise=require(_0xd0d4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd0d4('0x6'));var rimraf=require('rimraf');var config=require(_0xd0d4('0x7'));var attributes=require(_0xd0d4('0x8'));module['exports']=function(_0x34d93b,_0x3db5ab){return _0x34d93b[_0xd0d4('0x9')]('JscriptyProject',attributes,{'tableName':_0xd0d4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8819=['moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptyProject.attributes','exports','JscriptyProject','../../config/logger','api'];(function(_0x48e716,_0x18a621){var _0x25d6dd=function(_0x15d875){while(--_0x15d875){_0x48e716['push'](_0x48e716['shift']());}};_0x25d6dd(++_0x18a621);}(_0x8819,0x94));var _0x9881=function(_0x5e8bd1,_0x470d7a){_0x5e8bd1=_0x5e8bd1-0x0;var _0x5406a2=_0x8819[_0x5e8bd1];return _0x5406a2;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9881('0x0'))(_0x9881('0x1'));var moment=require(_0x9881('0x2'));var BPromise=require(_0x9881('0x3'));var rp=require(_0x9881('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9881('0x5'));var config=require(_0x9881('0x6'));var attributes=require(_0x9881('0x7'));module[_0x9881('0x8')]=function(_0x1791fd,_0x2a3664){return _0x1791fd['define'](_0x9881('0x9'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f75571..8c38184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s'];(function(_0x3bb39b,_0x429fc0){var _0x3d903a=function(_0x1b042e){while(--_0x1b042e){_0x3bb39b['push'](_0x3bb39b['shift']());}};_0x3d903a(++_0x429fc0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2ae2ad,_0xac5b0c){_0x2ae2ad=_0x2ae2ad-0x0;var _0x26dbd7=_0xcb91[_0x2ae2ad];return _0x26dbd7;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xb43b=['rpc','../../config/environment','http','request','info','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','JscriptyProject,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x73195a,_0x2119bc){var _0x369804=function(_0x1061f4){while(--_0x1061f4){_0x73195a['push'](_0x73195a['shift']());}};_0x369804(++_0x2119bc);}(_0xb43b,0x1b2));var _0xbb43=function(_0x1aa97c,_0x2c8640){_0x1aa97c=_0x1aa97c-0x0;var _0x1cd0ea=_0xb43b[_0x1aa97c];return _0x1cd0ea;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var moment=require('moment');var BPromise=require(_0xbb43('0x2'));var rs=require(_0xbb43('0x3'));var fs=require('fs');var Redis=require(_0xbb43('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbb43('0x5'));var logger=require(_0xbb43('0x6'))(_0xbb43('0x7'));var config=require(_0xbb43('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbb43('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x553520,_0x80fe61,_0x1ccd49){return new BPromise(function(_0x2a2f11,_0x29ae1a){return client[_0xbb43('0xa')](_0x553520,_0x1ccd49)['then'](function(_0x208c2b){logger[_0xbb43('0xb')]('JscriptyProject,\x20%s,\x20%s',_0x80fe61,_0xbb43('0xc'));logger[_0xbb43('0xd')](_0xbb43('0xe'),_0x80fe61,_0xbb43('0xc'),JSON[_0xbb43('0xf')](_0x208c2b));if(_0x208c2b[_0xbb43('0x10')]){if(_0x208c2b['error'][_0xbb43('0x11')]===0x1f4){logger[_0xbb43('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x80fe61,_0x208c2b['error'][_0xbb43('0x12')]);return _0x29ae1a(_0x208c2b['error']['message']);}logger[_0xbb43('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x80fe61,_0x208c2b[_0xbb43('0x10')][_0xbb43('0x12')]);return _0x2a2f11(_0x208c2b['error']['message']);}else{logger['info'](_0xbb43('0x13'),_0x80fe61,_0xbb43('0xc'));_0x2a2f11(_0x208c2b['result']['message']);}})[_0xbb43('0x14')](function(_0x563ce1){logger['error'](_0xbb43('0x13'),_0x80fe61,_0x563ce1);_0x29ae1a(_0x563ce1);});});}
\ No newline at end of file
index 3ebaf17..c52b4a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa36=['../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','isAuthenticated','index','describe','get','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x5680d9,_0x35e00a){var _0x35fcf4=function(_0x513f4d){while(--_0x513f4d){_0x5680d9['push'](_0x5680d9['shift']());}};_0x35fcf4(++_0x35e00a);}(_0xaa36,0xc1));var _0x6aa3=function(_0x220bf4,_0x53d51a){_0x220bf4=_0x220bf4-0x0;var _0x326c0a=_0xaa36[_0x220bf4];return _0x326c0a;};'use strict';var multer=require('multer');var util=require(_0x6aa3('0x0'));var path=require(_0x6aa3('0x1'));var timeout=require(_0x6aa3('0x2'));var express=require(_0x6aa3('0x3'));var router=express[_0x6aa3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6aa3('0x5'));var interaction=require(_0x6aa3('0x6'));var config=require(_0x6aa3('0x7'));var controller=require(_0x6aa3('0x8'));router['get']('/',auth[_0x6aa3('0x9')](),controller[_0x6aa3('0xa')]);router['get']('/describe',auth[_0x6aa3('0x9')](),controller[_0x6aa3('0xb')]);router[_0x6aa3('0xc')](_0x6aa3('0xd'),auth[_0x6aa3('0x9')](),controller[_0x6aa3('0xe')]);router[_0x6aa3('0xf')]('/',auth[_0x6aa3('0x9')](),controller[_0x6aa3('0x10')]);router[_0x6aa3('0x11')](_0x6aa3('0xd'),auth['isAuthenticated'](),controller[_0x6aa3('0x12')]);router[_0x6aa3('0x13')](_0x6aa3('0xd'),auth[_0x6aa3('0x9')](),controller[_0x6aa3('0x14')]);module[_0x6aa3('0x15')]=router;
\ No newline at end of file
+var _0x1188=['post','put','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x42fc8e,_0x26620d){var _0x4ad7b5=function(_0x4b217b){while(--_0x4b217b){_0x42fc8e['push'](_0x42fc8e['shift']());}};_0x4ad7b5(++_0x26620d);}(_0x1188,0xae));var _0x8118=function(_0x38a367,_0x51957a){_0x38a367=_0x38a367-0x0;var _0x378517=_0x1188[_0x38a367];return _0x378517;};'use strict';var multer=require(_0x8118('0x0'));var util=require(_0x8118('0x1'));var path=require('path');var timeout=require(_0x8118('0x2'));var express=require(_0x8118('0x3'));var router=express['Router']();var fs_extra=require(_0x8118('0x4'));var auth=require(_0x8118('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8118('0x6'));var controller=require(_0x8118('0x7'));router[_0x8118('0x8')]('/',auth[_0x8118('0x9')](),controller[_0x8118('0xa')]);router['get'](_0x8118('0xb'),auth[_0x8118('0x9')](),controller[_0x8118('0xc')]);router[_0x8118('0x8')](_0x8118('0xd'),auth[_0x8118('0x9')](),controller[_0x8118('0xe')]);router[_0x8118('0xf')]('/',auth[_0x8118('0x9')](),controller['create']);router[_0x8118('0x10')]('/:id',auth[_0x8118('0x9')](),controller[_0x8118('0x11')]);router[_0x8118('0x12')](_0x8118('0xd'),auth[_0x8118('0x9')](),controller[_0x8118('0x13')]);module[_0x8118('0x14')]=router;
\ No newline at end of file
index 6dd0f76..c3114eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x7a54,0x106));var _0x47a5=function(_0x19a1d3,_0x566f9f){_0x19a1d3=_0x19a1d3-0x0;var _0x48a6bf=_0x7a54[_0x19a1d3];return _0x48a6bf;};'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(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x7a54,0x106));var _0x47a5=function(_0x233fd1,_0x4fd509){_0x233fd1=_0x233fd1-0x0;var _0x4dd5fa=_0x7a54[_0x233fd1];return _0x4dd5fa;};'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 3f746bf..aea6b55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b6a=['find','catch','create','body','update','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','then','destroy','error','name','send','map','JscriptyQuestionReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','findAll','rows','show','params','rawAttributes'];(function(_0x6a0d5d,_0x23c40e){var _0x18d995=function(_0x53fd07){while(--_0x53fd07){_0x6a0d5d['push'](_0x6a0d5d['shift']());}};_0x18d995(++_0x23c40e);}(_0x8b6a,0xde));var _0xa8b6=function(_0x4ac183,_0x5c355b){_0x4ac183=_0x4ac183-0x0;var _0x33dfc6=_0x8b6a[_0x4ac183];return _0x33dfc6;};'use strict';var emlformat=require(_0xa8b6('0x0'));var rimraf=require(_0xa8b6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa8b6('0x2'));var rp=require(_0xa8b6('0x3'));var moment=require(_0xa8b6('0x4'));var BPromise=require(_0xa8b6('0x5'));var Mustache=require(_0xa8b6('0x6'));var util=require(_0xa8b6('0x7'));var path=require(_0xa8b6('0x8'));var sox=require(_0xa8b6('0x9'));var csv=require(_0xa8b6('0xa'));var ejs=require(_0xa8b6('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa8b6('0xc'));var crypto=require(_0xa8b6('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa8b6('0xe'));var Redis=require(_0xa8b6('0xf'));var authService=require(_0xa8b6('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xa8b6('0x11'));var hardwareService=require(_0xa8b6('0x12'));var logger=require(_0xa8b6('0x13'))('api');var utils=require(_0xa8b6('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa8b6('0x15'));var db=require(_0xa8b6('0x16'))['db'];function respondWithStatusCode(_0x29e38e,_0xa6dfa7){_0xa6dfa7=_0xa6dfa7||0xcc;return function(_0x1ef486){if(_0x1ef486){return _0x29e38e[_0xa8b6('0x17')](_0xa6dfa7);}return _0x29e38e[_0xa8b6('0x18')](_0xa6dfa7)[_0xa8b6('0x19')]();};}function respondWithResult(_0x88d5e2,_0xdae389){_0xdae389=_0xdae389||0xc8;return function(_0x3f3035){if(_0x3f3035){return _0x88d5e2[_0xa8b6('0x18')](_0xdae389)[_0xa8b6('0x1a')](_0x3f3035);}};}function respondWithFilteredResult(_0x39c44b,_0x10c1d5){return function(_0x4e3c30){if(_0x4e3c30){var _0xf09b9f=typeof _0x10c1d5[_0xa8b6('0x1b')]==='undefined'&&typeof _0x10c1d5[_0xa8b6('0x1c')]===_0xa8b6('0x1d');var _0x357ecc=_0x4e3c30[_0xa8b6('0x1e')];var _0x428087=_0xf09b9f?0x0:_0x10c1d5[_0xa8b6('0x1b')];var _0x5b903c=_0xf09b9f?_0x4e3c30[_0xa8b6('0x1e')]:_0x10c1d5[_0xa8b6('0x1b')]+_0x10c1d5[_0xa8b6('0x1c')];var _0xf40d5e;if(_0x5b903c>=_0x357ecc){_0x5b903c=_0x357ecc;_0xf40d5e=0xc8;}else{_0xf40d5e=0xce;}_0x39c44b[_0xa8b6('0x18')](_0xf40d5e);return _0x39c44b[_0xa8b6('0x1f')](_0xa8b6('0x20'),_0x428087+'-'+_0x5b903c+'/'+_0x357ecc)[_0xa8b6('0x1a')](_0x4e3c30);}return null;};}function patchUpdates(_0x43a557){return function(_0x11b804){try{jsonpatch[_0xa8b6('0x21')](_0x11b804,_0x43a557,!![]);}catch(_0x31642c){return BPromise[_0xa8b6('0x22')](_0x31642c);}return _0x11b804['save']();};}function saveUpdates(_0x587e6a,_0x76c3fc){return function(_0x423dcd){if(_0x423dcd){return _0x423dcd['update'](_0x587e6a)[_0xa8b6('0x23')](function(_0x412f99){return _0x412f99;});}return null;};}function removeEntity(_0x12a0bf,_0x3e53a8){return function(_0x5100e7){if(_0x5100e7){return _0x5100e7[_0xa8b6('0x24')]()[_0xa8b6('0x23')](function(){_0x12a0bf[_0xa8b6('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x62ff45,_0x1a96a5){return function(_0x1f0831){if(!_0x1f0831){_0x62ff45[_0xa8b6('0x17')](0x194);}return _0x1f0831;};}function handleError(_0x5e0763,_0x54f90f){_0x54f90f=_0x54f90f||0x1f4;return function(_0x3b57e1){logger[_0xa8b6('0x25')](_0x3b57e1['stack']);if(_0x3b57e1[_0xa8b6('0x26')]){delete _0x3b57e1['name'];}_0x5e0763[_0xa8b6('0x18')](_0x54f90f)[_0xa8b6('0x27')](_0x3b57e1);};}exports['index']=function(_0x1af1e7,_0x1f8bb8){var _0xcee03c={},_0xdcb324={},_0x2117c0={'count':0x0,'rows':[]};var _0x3c7904=_[_0xa8b6('0x28')](db[_0xa8b6('0x29')]['rawAttributes'],function(_0x5878cc){return{'name':_0x5878cc[_0xa8b6('0x2a')],'type':_0x5878cc[_0xa8b6('0x2b')]['key']};});_0xdcb324[_0xa8b6('0x2c')]=_['map'](_0x3c7904,_0xa8b6('0x26'));_0xdcb324[_0xa8b6('0x2d')]=_[_0xa8b6('0x2e')](_0x1af1e7[_0xa8b6('0x2d')]);_0xdcb324[_0xa8b6('0x2f')]=_[_0xa8b6('0x30')](_0xdcb324['model'],_0xdcb324['query']);_0xcee03c[_0xa8b6('0x31')]=_['intersection'](_0xdcb324[_0xa8b6('0x2c')],qs[_0xa8b6('0x32')](_0x1af1e7[_0xa8b6('0x2d')][_0xa8b6('0x32')]));_0xcee03c['attributes']=_0xcee03c[_0xa8b6('0x31')][_0xa8b6('0x33')]?_0xcee03c[_0xa8b6('0x31')]:_0xdcb324[_0xa8b6('0x2c')];if(!_0x1af1e7[_0xa8b6('0x2d')][_0xa8b6('0x34')](_0xa8b6('0x35'))){_0xcee03c[_0xa8b6('0x1c')]=qs['limit'](_0x1af1e7[_0xa8b6('0x2d')]['limit']);_0xcee03c['offset']=qs[_0xa8b6('0x1b')](_0x1af1e7['query']['offset']);}_0xcee03c['order']=qs[_0xa8b6('0x36')](_0x1af1e7[_0xa8b6('0x2d')][_0xa8b6('0x36')]);_0xcee03c['where']=qs[_0xa8b6('0x2f')](_[_0xa8b6('0x37')](_0x1af1e7[_0xa8b6('0x2d')],_0xdcb324['filters']),_0x3c7904);if(_0x1af1e7[_0xa8b6('0x2d')][_0xa8b6('0x38')]){_0xcee03c[_0xa8b6('0x39')]=_[_0xa8b6('0x3a')](_0xcee03c['where'],{'$or':_[_0xa8b6('0x28')](_0x3c7904,function(_0x52b5ef){if(_0x52b5ef[_0xa8b6('0x2b')]!==_0xa8b6('0x3b')){var _0x444486={};_0x444486[_0x52b5ef[_0xa8b6('0x26')]]={'$like':'%'+_0x1af1e7[_0xa8b6('0x2d')]['filter']+'%'};return _0x444486;}})});}_0xcee03c=_['merge']({},_0xcee03c,_0x1af1e7[_0xa8b6('0x3c')]);var _0x14fca8={'where':_0xcee03c[_0xa8b6('0x39')]};return db[_0xa8b6('0x29')][_0xa8b6('0x1e')](_0x14fca8)[_0xa8b6('0x23')](function(_0x2ebe1d){_0x2117c0[_0xa8b6('0x1e')]=_0x2ebe1d;if(_0x1af1e7['query']['includeAll']){_0xcee03c['include']=[{'all':!![]}];}return db[_0xa8b6('0x29')][_0xa8b6('0x3d')](_0xcee03c);})[_0xa8b6('0x23')](function(_0x2b8bfd){_0x2117c0[_0xa8b6('0x3e')]=_0x2b8bfd;return _0x2117c0;})['then'](respondWithFilteredResult(_0x1f8bb8,_0xcee03c))['catch'](handleError(_0x1f8bb8,null));};exports[_0xa8b6('0x3f')]=function(_0x5ceb65,_0x445fb6){var _0x815d09={'raw':!![],'where':{'id':_0x5ceb65[_0xa8b6('0x40')]['id']}},_0x43b58c={};_0x43b58c['model']=_['keys'](db[_0xa8b6('0x29')][_0xa8b6('0x41')]);_0x43b58c[_0xa8b6('0x2d')]=_[_0xa8b6('0x2e')](_0x5ceb65[_0xa8b6('0x2d')]);_0x43b58c['filters']=_[_0xa8b6('0x30')](_0x43b58c[_0xa8b6('0x2c')],_0x43b58c[_0xa8b6('0x2d')]);_0x815d09[_0xa8b6('0x31')]=_[_0xa8b6('0x30')](_0x43b58c[_0xa8b6('0x2c')],qs[_0xa8b6('0x32')](_0x5ceb65[_0xa8b6('0x2d')][_0xa8b6('0x32')]));_0x815d09['attributes']=_0x815d09[_0xa8b6('0x31')][_0xa8b6('0x33')]?_0x815d09[_0xa8b6('0x31')]:_0x43b58c[_0xa8b6('0x2c')];if(_0x5ceb65[_0xa8b6('0x2d')]['includeAll']){_0x815d09['include']=[{'all':!![]}];}_0x815d09=_['merge']({},_0x815d09,_0x5ceb65[_0xa8b6('0x3c')]);return db['JscriptyQuestionReport'][_0xa8b6('0x42')](_0x815d09)[_0xa8b6('0x23')](handleEntityNotFound(_0x445fb6,null))[_0xa8b6('0x23')](respondWithResult(_0x445fb6,null))[_0xa8b6('0x43')](handleError(_0x445fb6,null));};exports[_0xa8b6('0x44')]=function(_0x550ae7,_0x4234d4){return db[_0xa8b6('0x29')][_0xa8b6('0x44')](_0x550ae7[_0xa8b6('0x45')],{})['then'](respondWithResult(_0x4234d4,0xc9))[_0xa8b6('0x43')](handleError(_0x4234d4,null));};exports[_0xa8b6('0x46')]=function(_0x5b7eed,_0x3c87b6){if(_0x5b7eed['body']['id']){delete _0x5b7eed[_0xa8b6('0x45')]['id'];}return db[_0xa8b6('0x29')][_0xa8b6('0x42')]({'where':{'id':_0x5b7eed[_0xa8b6('0x40')]['id']}})[_0xa8b6('0x23')](handleEntityNotFound(_0x3c87b6,null))[_0xa8b6('0x23')](saveUpdates(_0x5b7eed['body'],null))['then'](respondWithResult(_0x3c87b6,null))['catch'](handleError(_0x3c87b6,null));};exports[_0xa8b6('0x24')]=function(_0x28c266,_0x553070){return db[_0xa8b6('0x29')]['find']({'where':{'id':_0x28c266[_0xa8b6('0x40')]['id']}})['then'](handleEntityNotFound(_0x553070,null))[_0xa8b6('0x23')](removeEntity(_0x553070,null))['catch'](handleError(_0x553070,null));};exports[_0xa8b6('0x47')]=function(_0x2a7e1b,_0x3945eb){return db[_0xa8b6('0x29')][_0xa8b6('0x47')]()[_0xa8b6('0x23')](respondWithResult(_0x3945eb,null))['catch'](handleError(_0x3945eb,null));};
\ No newline at end of file
+var _0xe1a8=['catch','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','desk.js','to-csv','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','index','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','rows','show','params','fields','find'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xe1a8,0x96));var _0x8e1a=function(_0x19540f,_0x49cc71){_0x19540f=_0x19540f-0x0;var _0x4350d0=_0xe1a8[_0x19540f];return _0x4350d0;};'use strict';var emlformat=require(_0x8e1a('0x0'));var rimraf=require(_0x8e1a('0x1'));var zipdir=require(_0x8e1a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8e1a('0x3'));var moment=require('moment');var BPromise=require(_0x8e1a('0x4'));var Mustache=require(_0x8e1a('0x5'));var util=require(_0x8e1a('0x6'));var path=require(_0x8e1a('0x7'));var sox=require(_0x8e1a('0x8'));var csv=require('to-csv');var ejs=require(_0x8e1a('0x9'));var fs=require('fs');var fs_extra=require(_0x8e1a('0xa'));var _=require('lodash');var squel=require(_0x8e1a('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x8e1a('0xc'));var toCsv=require(_0x8e1a('0xd'));var querystring=require(_0x8e1a('0xe'));var Papa=require(_0x8e1a('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8e1a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8e1a('0x11'))('api');var utils=require(_0x8e1a('0x12'));var config=require(_0x8e1a('0x13'));var licenseUtil=require(_0x8e1a('0x14'));var db=require(_0x8e1a('0x15'))['db'];function respondWithStatusCode(_0x5ec29f,_0x299ddf){_0x299ddf=_0x299ddf||0xcc;return function(_0x32203d){if(_0x32203d){return _0x5ec29f[_0x8e1a('0x16')](_0x299ddf);}return _0x5ec29f[_0x8e1a('0x17')](_0x299ddf)[_0x8e1a('0x18')]();};}function respondWithResult(_0x3f5a9c,_0x140f4d){_0x140f4d=_0x140f4d||0xc8;return function(_0x1c72ab){if(_0x1c72ab){return _0x3f5a9c[_0x8e1a('0x17')](_0x140f4d)[_0x8e1a('0x19')](_0x1c72ab);}};}function respondWithFilteredResult(_0x4ac203,_0x312daa){return function(_0x382a48){if(_0x382a48){var _0x46da89=typeof _0x312daa[_0x8e1a('0x1a')]===_0x8e1a('0x1b')&&typeof _0x312daa[_0x8e1a('0x1c')]===_0x8e1a('0x1b');var _0x35df75=_0x382a48[_0x8e1a('0x1d')];var _0x54ffa0=_0x46da89?0x0:_0x312daa[_0x8e1a('0x1a')];var _0x2fe2c4=_0x46da89?_0x382a48[_0x8e1a('0x1d')]:_0x312daa['offset']+_0x312daa[_0x8e1a('0x1c')];var _0x1d6e20;if(_0x2fe2c4>=_0x35df75){_0x2fe2c4=_0x35df75;_0x1d6e20=0xc8;}else{_0x1d6e20=0xce;}_0x4ac203[_0x8e1a('0x17')](_0x1d6e20);return _0x4ac203['set'](_0x8e1a('0x1e'),_0x54ffa0+'-'+_0x2fe2c4+'/'+_0x35df75)['json'](_0x382a48);}return null;};}function patchUpdates(_0x4698ac){return function(_0x2c6d90){try{jsonpatch[_0x8e1a('0x1f')](_0x2c6d90,_0x4698ac,!![]);}catch(_0x465a83){return BPromise[_0x8e1a('0x20')](_0x465a83);}return _0x2c6d90['save']();};}function saveUpdates(_0x284bf5,_0x4221b6){return function(_0x4fb5f3){if(_0x4fb5f3){return _0x4fb5f3[_0x8e1a('0x21')](_0x284bf5)[_0x8e1a('0x22')](function(_0x4fb993){return _0x4fb993;});}return null;};}function removeEntity(_0x1ac4d1,_0x3854cb){return function(_0x2ee971){if(_0x2ee971){return _0x2ee971[_0x8e1a('0x23')]()[_0x8e1a('0x22')](function(){_0x1ac4d1[_0x8e1a('0x17')](0xcc)[_0x8e1a('0x18')]();});}};}function handleEntityNotFound(_0x4fa3dc,_0x299179){return function(_0x446e10){if(!_0x446e10){_0x4fa3dc[_0x8e1a('0x16')](0x194);}return _0x446e10;};}function handleError(_0x513825,_0x172cf7){_0x172cf7=_0x172cf7||0x1f4;return function(_0x35588a){logger[_0x8e1a('0x24')](_0x35588a[_0x8e1a('0x25')]);if(_0x35588a[_0x8e1a('0x26')]){delete _0x35588a[_0x8e1a('0x26')];}_0x513825[_0x8e1a('0x17')](_0x172cf7)['send'](_0x35588a);};}exports[_0x8e1a('0x27')]=function(_0x1ec450,_0x2395c2){var _0xc9edd4={},_0x34a6bd={},_0x1dea99={'count':0x0,'rows':[]};var _0x140e2c=_[_0x8e1a('0x28')](db[_0x8e1a('0x29')][_0x8e1a('0x2a')],function(_0x3117d6){return{'name':_0x3117d6[_0x8e1a('0x2b')],'type':_0x3117d6[_0x8e1a('0x2c')][_0x8e1a('0x2d')]};});_0x34a6bd['model']=_[_0x8e1a('0x28')](_0x140e2c,_0x8e1a('0x26'));_0x34a6bd[_0x8e1a('0x2e')]=_[_0x8e1a('0x2f')](_0x1ec450[_0x8e1a('0x2e')]);_0x34a6bd[_0x8e1a('0x30')]=_[_0x8e1a('0x31')](_0x34a6bd[_0x8e1a('0x32')],_0x34a6bd[_0x8e1a('0x2e')]);_0xc9edd4['attributes']=_[_0x8e1a('0x31')](_0x34a6bd[_0x8e1a('0x32')],qs['fields'](_0x1ec450[_0x8e1a('0x2e')]['fields']));_0xc9edd4['attributes']=_0xc9edd4[_0x8e1a('0x33')][_0x8e1a('0x34')]?_0xc9edd4[_0x8e1a('0x33')]:_0x34a6bd[_0x8e1a('0x32')];if(!_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x35')](_0x8e1a('0x36'))){_0xc9edd4[_0x8e1a('0x1c')]=qs[_0x8e1a('0x1c')](_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x1c')]);_0xc9edd4[_0x8e1a('0x1a')]=qs['offset'](_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x1a')]);}_0xc9edd4[_0x8e1a('0x37')]=qs['sort'](_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x38')]);_0xc9edd4[_0x8e1a('0x39')]=qs['filters'](_['pick'](_0x1ec450[_0x8e1a('0x2e')],_0x34a6bd[_0x8e1a('0x30')]),_0x140e2c);if(_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x3a')]){_0xc9edd4[_0x8e1a('0x39')]=_['merge'](_0xc9edd4[_0x8e1a('0x39')],{'$or':_[_0x8e1a('0x28')](_0x140e2c,function(_0x3b46bd){if(_0x3b46bd['type']!==_0x8e1a('0x3b')){var _0x1b89a4={};_0x1b89a4[_0x3b46bd[_0x8e1a('0x26')]]={'$like':'%'+_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x3a')]+'%'};return _0x1b89a4;}})});}_0xc9edd4=_[_0x8e1a('0x3c')]({},_0xc9edd4,_0x1ec450[_0x8e1a('0x3d')]);var _0x4508f6={'where':_0xc9edd4[_0x8e1a('0x39')]};return db[_0x8e1a('0x29')][_0x8e1a('0x1d')](_0x4508f6)[_0x8e1a('0x22')](function(_0x4c6fa1){_0x1dea99[_0x8e1a('0x1d')]=_0x4c6fa1;if(_0x1ec450[_0x8e1a('0x2e')][_0x8e1a('0x3e')]){_0xc9edd4[_0x8e1a('0x3f')]=[{'all':!![]}];}return db[_0x8e1a('0x29')]['findAll'](_0xc9edd4);})[_0x8e1a('0x22')](function(_0x408f63){_0x1dea99[_0x8e1a('0x40')]=_0x408f63;return _0x1dea99;})[_0x8e1a('0x22')](respondWithFilteredResult(_0x2395c2,_0xc9edd4))['catch'](handleError(_0x2395c2,null));};exports[_0x8e1a('0x41')]=function(_0x5ae598,_0x425ce7){var _0x48b5c9={'raw':!![],'where':{'id':_0x5ae598[_0x8e1a('0x42')]['id']}},_0x23f3a2={};_0x23f3a2[_0x8e1a('0x32')]=_[_0x8e1a('0x2f')](db['JscriptyQuestionReport'][_0x8e1a('0x2a')]);_0x23f3a2[_0x8e1a('0x2e')]=_[_0x8e1a('0x2f')](_0x5ae598[_0x8e1a('0x2e')]);_0x23f3a2[_0x8e1a('0x30')]=_[_0x8e1a('0x31')](_0x23f3a2['model'],_0x23f3a2['query']);_0x48b5c9[_0x8e1a('0x33')]=_[_0x8e1a('0x31')](_0x23f3a2[_0x8e1a('0x32')],qs[_0x8e1a('0x43')](_0x5ae598[_0x8e1a('0x2e')][_0x8e1a('0x43')]));_0x48b5c9['attributes']=_0x48b5c9['attributes']['length']?_0x48b5c9['attributes']:_0x23f3a2[_0x8e1a('0x32')];if(_0x5ae598[_0x8e1a('0x2e')]['includeAll']){_0x48b5c9[_0x8e1a('0x3f')]=[{'all':!![]}];}_0x48b5c9=_[_0x8e1a('0x3c')]({},_0x48b5c9,_0x5ae598[_0x8e1a('0x3d')]);return db[_0x8e1a('0x29')][_0x8e1a('0x44')](_0x48b5c9)['then'](handleEntityNotFound(_0x425ce7,null))[_0x8e1a('0x22')](respondWithResult(_0x425ce7,null))[_0x8e1a('0x45')](handleError(_0x425ce7,null));};exports[_0x8e1a('0x46')]=function(_0x3367d5,_0x3f474e){return db[_0x8e1a('0x29')]['create'](_0x3367d5[_0x8e1a('0x47')],{})[_0x8e1a('0x22')](respondWithResult(_0x3f474e,0xc9))[_0x8e1a('0x45')](handleError(_0x3f474e,null));};exports[_0x8e1a('0x21')]=function(_0xd8a4f6,_0x4811f2){if(_0xd8a4f6['body']['id']){delete _0xd8a4f6[_0x8e1a('0x47')]['id'];}return db['JscriptyQuestionReport'][_0x8e1a('0x44')]({'where':{'id':_0xd8a4f6[_0x8e1a('0x42')]['id']}})[_0x8e1a('0x22')](handleEntityNotFound(_0x4811f2,null))['then'](saveUpdates(_0xd8a4f6[_0x8e1a('0x47')],null))[_0x8e1a('0x22')](respondWithResult(_0x4811f2,null))[_0x8e1a('0x45')](handleError(_0x4811f2,null));};exports[_0x8e1a('0x23')]=function(_0x236a7e,_0x2a63ae){return db[_0x8e1a('0x29')]['find']({'where':{'id':_0x236a7e[_0x8e1a('0x42')]['id']}})[_0x8e1a('0x22')](handleEntityNotFound(_0x2a63ae,null))[_0x8e1a('0x22')](removeEntity(_0x2a63ae,null))['catch'](handleError(_0x2a63ae,null));};exports[_0x8e1a('0x48')]=function(_0x348a0b,_0x13ccba){return db[_0x8e1a('0x29')][_0x8e1a('0x48')]()['then'](respondWithResult(_0x13ccba,null))[_0x8e1a('0x45')](handleError(_0x13ccba,null));};
\ No newline at end of file
index a486e38..75fa249 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d1=['rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','report_jscripty_questions','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x38d1,0x12d));var _0x138d=function(_0x5bf901,_0x5b4364){_0x5bf901=_0x5bf901-0x0;var _0x3ae6e2=_0x38d1[_0x5bf901];return _0x3ae6e2;};'use strict';var _=require(_0x138d('0x0'));var util=require(_0x138d('0x1'));var logger=require('../../config/logger')(_0x138d('0x2'));var moment=require(_0x138d('0x3'));var BPromise=require(_0x138d('0x4'));var rp=require(_0x138d('0x5'));var fs=require('fs');var path=require(_0x138d('0x6'));var rimraf=require(_0x138d('0x7'));var config=require(_0x138d('0x8'));var attributes=require(_0x138d('0x9'));module[_0x138d('0xa')]=function(_0x1edece,_0x1ac040){return _0x1edece[_0x138d('0xb')](_0x138d('0xc'),attributes,{'tableName':_0x138d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf4fa=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define'];(function(_0x11c5e0,_0x482d0c){var _0x251020=function(_0x521961){while(--_0x521961){_0x11c5e0['push'](_0x11c5e0['shift']());}};_0x251020(++_0x482d0c);}(_0xf4fa,0x1ae));var _0xaf4f=function(_0xab2560,_0x4edaaa){_0xab2560=_0xab2560-0x0;var _0x3c1337=_0xf4fa[_0xab2560];return _0x3c1337;};'use strict';var _=require(_0xaf4f('0x0'));var util=require(_0xaf4f('0x1'));var logger=require('../../config/logger')(_0xaf4f('0x2'));var moment=require(_0xaf4f('0x3'));var BPromise=require(_0xaf4f('0x4'));var rp=require(_0xaf4f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaf4f('0x6'));var config=require(_0xaf4f('0x7'));var attributes=require('./jscriptyQuestionReport.attributes');module[_0xaf4f('0x8')]=function(_0xcac767,_0x689f83){return _0xcac767[_0xaf4f('0x9')]('JscriptyQuestionReport',attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ec9013..7f335f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f9d=['../../config/utils','../../config/environment','jayson/promise','client','request','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','info','result','catch','lodash','util','randomstring','ioredis','../../mysqldb'];(function(_0x4007b5,_0x1b72ef){var _0x5e9f06=function(_0x1e7716){while(--_0x1e7716){_0x4007b5['push'](_0x4007b5['shift']());}};_0x5e9f06(++_0x1b72ef);}(_0x8f9d,0xf2));var _0xd8f9=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x8f9d[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xd8f9('0x0'));var util=require(_0xd8f9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd8f9('0x2'));var fs=require('fs');var Redis=require(_0xd8f9('0x3'));var db=require(_0xd8f9('0x4'))['db'];var utils=require(_0xd8f9('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xd8f9('0x6'));var jayson=require(_0xd8f9('0x7'));var client=jayson[_0xd8f9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4355d7,_0x3e3b92,_0x16288d){return new BPromise(function(_0x3fb20c,_0x3c9d31){return client[_0xd8f9('0x9')](_0x4355d7,_0x16288d)['then'](function(_0x489796){logger['info']('JscriptyQuestionReport,\x20%s,\x20%s',_0x3e3b92,_0xd8f9('0xa'));logger['debug'](_0xd8f9('0xb'),_0x3e3b92,_0xd8f9('0xa'),JSON['stringify'](_0x489796));if(_0x489796[_0xd8f9('0xc')]){if(_0x489796['error'][_0xd8f9('0xd')]===0x1f4){logger[_0xd8f9('0xc')](_0xd8f9('0xe'),_0x3e3b92,_0x489796['error']['message']);return _0x3c9d31(_0x489796[_0xd8f9('0xc')][_0xd8f9('0xf')]);}logger[_0xd8f9('0xc')](_0xd8f9('0xe'),_0x3e3b92,_0x489796[_0xd8f9('0xc')][_0xd8f9('0xf')]);return _0x3fb20c(_0x489796[_0xd8f9('0xc')][_0xd8f9('0xf')]);}else{logger[_0xd8f9('0x10')](_0xd8f9('0xe'),_0x3e3b92,_0xd8f9('0xa'));_0x3fb20c(_0x489796[_0xd8f9('0x11')][_0xd8f9('0xf')]);}})[_0xd8f9('0x12')](function(_0x3fbfb4){logger[_0xd8f9('0xc')](_0xd8f9('0xe'),_0x3e3b92,_0x3fbfb4);_0x3c9d31(_0x3fbfb4);});});}
\ No newline at end of file
+var _0xf65f=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','JscriptyQuestionReport,\x20%s,\x20%s','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x421dbb,_0x3b03bf){var _0x5822d5=function(_0x46ded2){while(--_0x46ded2){_0x421dbb['push'](_0x421dbb['shift']());}};_0x5822d5(++_0x3b03bf);}(_0xf65f,0x14a));var _0xff65=function(_0x21ceaf,_0x35fd2c){_0x21ceaf=_0x21ceaf-0x0;var _0x50bb12=_0xf65f[_0x21ceaf];return _0x50bb12;};'use strict';var _=require(_0xff65('0x0'));var util=require('util');var moment=require(_0xff65('0x1'));var BPromise=require(_0xff65('0x2'));var rs=require(_0xff65('0x3'));var fs=require('fs');var Redis=require(_0xff65('0x4'));var db=require(_0xff65('0x5'))['db'];var utils=require(_0xff65('0x6'));var logger=require(_0xff65('0x7'))(_0xff65('0x8'));var config=require(_0xff65('0x9'));var jayson=require(_0xff65('0xa'));var client=jayson[_0xff65('0xb')][_0xff65('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x12e4b8,_0x250319,_0x5e0507){return new BPromise(function(_0x35ed8b,_0x736585){return client[_0xff65('0xd')](_0x12e4b8,_0x5e0507)['then'](function(_0x5f129e){logger[_0xff65('0xe')](_0xff65('0xf'),_0x250319,'request\x20sent');logger[_0xff65('0x10')](_0xff65('0x11'),_0x250319,_0xff65('0x12'),JSON['stringify'](_0x5f129e));if(_0x5f129e[_0xff65('0x13')]){if(_0x5f129e[_0xff65('0x13')][_0xff65('0x14')]===0x1f4){logger[_0xff65('0x13')](_0xff65('0xf'),_0x250319,_0x5f129e[_0xff65('0x13')][_0xff65('0x15')]);return _0x736585(_0x5f129e[_0xff65('0x13')][_0xff65('0x15')]);}logger[_0xff65('0x13')](_0xff65('0xf'),_0x250319,_0x5f129e[_0xff65('0x13')][_0xff65('0x15')]);return _0x35ed8b(_0x5f129e['error'][_0xff65('0x15')]);}else{logger[_0xff65('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x250319,'request\x20sent');_0x35ed8b(_0x5f129e[_0xff65('0x16')][_0xff65('0x15')]);}})[_0xff65('0x17')](function(_0x3ab927){logger[_0xff65('0x13')](_0xff65('0xf'),_0x250319,_0x3ab927);_0x736585(_0x3ab927);});});}
\ No newline at end of file
index 1fe9357..3452132 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d67=['get','isAuthenticated','/describe','describe','/:id','show','/:id/questions','post','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller'];(function(_0xa7ee42,_0x43c8f8){var _0x18044a=function(_0x2c7f8a){while(--_0x2c7f8a){_0xa7ee42['push'](_0xa7ee42['shift']());}};_0x18044a(++_0x43c8f8);}(_0x0d67,0x64));var _0x70d6=function(_0x5ecae4,_0x5801b4){_0x5ecae4=_0x5ecae4-0x0;var _0x418b5e=_0x0d67[_0x5ecae4];return _0x418b5e;};'use strict';var multer=require('multer');var util=require(_0x70d6('0x0'));var path=require(_0x70d6('0x1'));var timeout=require(_0x70d6('0x2'));var express=require(_0x70d6('0x3'));var router=express[_0x70d6('0x4')]();var fs_extra=require(_0x70d6('0x5'));var auth=require(_0x70d6('0x6'));var interaction=require(_0x70d6('0x7'));var config=require(_0x70d6('0x8'));var controller=require(_0x70d6('0x9'));router[_0x70d6('0xa')]('/',auth[_0x70d6('0xb')](),controller['index']);router[_0x70d6('0xa')](_0x70d6('0xc'),auth[_0x70d6('0xb')](),controller[_0x70d6('0xd')]);router[_0x70d6('0xa')](_0x70d6('0xe'),auth[_0x70d6('0xb')](),controller[_0x70d6('0xf')]);router[_0x70d6('0xa')](_0x70d6('0x10'),auth[_0x70d6('0xb')](),controller['getQuestions']);router[_0x70d6('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x70d6('0x12')](_0x70d6('0xe'),auth[_0x70d6('0xb')](),controller[_0x70d6('0x13')]);router[_0x70d6('0x14')](_0x70d6('0xe'),auth[_0x70d6('0xb')](),controller[_0x70d6('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xcc3d=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','show','/:id/questions','getQuestions','post','create','put','/:id','delete','destroy','exports','multer','path'];(function(_0x1f5549,_0x3af54f){var _0x2936a1=function(_0x11457a){while(--_0x11457a){_0x1f5549['push'](_0x1f5549['shift']());}};_0x2936a1(++_0x3af54f);}(_0xcc3d,0x166));var _0xdcc3=function(_0x485f8e,_0x5773c0){_0x485f8e=_0x485f8e-0x0;var _0x3a6c58=_0xcc3d[_0x485f8e];return _0x3a6c58;};'use strict';var multer=require(_0xdcc3('0x0'));var util=require('util');var path=require(_0xdcc3('0x1'));var timeout=require(_0xdcc3('0x2'));var express=require('express');var router=express[_0xdcc3('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdcc3('0x4'));var interaction=require(_0xdcc3('0x5'));var config=require(_0xdcc3('0x6'));var controller=require('./jscriptySessionReport.controller');router[_0xdcc3('0x7')]('/',auth[_0xdcc3('0x8')](),controller['index']);router[_0xdcc3('0x7')]('/describe',auth['isAuthenticated'](),controller[_0xdcc3('0x9')]);router[_0xdcc3('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xdcc3('0xa')]);router[_0xdcc3('0x7')](_0xdcc3('0xb'),auth['isAuthenticated'](),controller[_0xdcc3('0xc')]);router[_0xdcc3('0xd')]('/',auth['isAuthenticated'](),controller[_0xdcc3('0xe')]);router[_0xdcc3('0xf')](_0xdcc3('0x10'),auth['isAuthenticated'](),controller['update']);router[_0xdcc3('0x11')](_0xdcc3('0x10'),auth[_0xdcc3('0x8')](),controller[_0xdcc3('0x12')]);module[_0xdcc3('0x13')]=router;
\ No newline at end of file
index c160472..cc1afdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57d5=['STRING','BOOLEAN','moment','sequelize','DATE','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x55677b,_0x3e5655){var _0x104b88=function(_0x78d34f){while(--_0x78d34f){_0x55677b['push'](_0x55677b['shift']());}};_0x104b88(++_0x3e5655);}(_0x57d5,0x192));var _0x557d=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0x57d5[_0x2b9b7f];return _0x4ed19a;};'use strict';var moment=require(_0x557d('0x0'));var Sequelize=require(_0x557d('0x1'));module['exports']={'starttime':{'type':Sequelize[_0x557d('0x2')],'set':function(_0x2332df){this[_0x557d('0x3')](_0x557d('0x4'),_0x2332df);this[_0x557d('0x3')](_0x557d('0x5'),moment()[_0x557d('0x6')](_0x557d('0x7')));}},'endtime':{'type':Sequelize[_0x557d('0x2')]},'membername':{'type':Sequelize[_0x557d('0x8')]},'projectname':{'type':Sequelize[_0x557d('0x8')]},'queue':{'type':Sequelize[_0x557d('0x8')]},'uniqueid':{'type':Sequelize[_0x557d('0x8')]},'calleridname':{'type':Sequelize[_0x557d('0x8')]},'calleridnum':{'type':Sequelize[_0x557d('0x8')]},'completed':{'type':Sequelize[_0x557d('0x9')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf59d=['sequelize','exports','DATE','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','moment'];(function(_0x15c25c,_0x43e172){var _0x41ae4d=function(_0x3acff1){while(--_0x3acff1){_0x15c25c['push'](_0x15c25c['shift']());}};_0x41ae4d(++_0x43e172);}(_0xf59d,0x95));var _0xdf59=function(_0x26f866,_0x1900bc){_0x26f866=_0x26f866-0x0;var _0x1abef3=_0xf59d[_0x26f866];return _0x1abef3;};'use strict';var moment=require(_0xdf59('0x0'));var Sequelize=require(_0xdf59('0x1'));module[_0xdf59('0x2')]={'starttime':{'type':Sequelize[_0xdf59('0x3')],'set':function(_0x48c7f6){this[_0xdf59('0x4')](_0xdf59('0x5'),_0x48c7f6);this[_0xdf59('0x4')](_0xdf59('0x6'),moment()[_0xdf59('0x7')](_0xdf59('0x8')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0xdf59('0x9')]},'projectname':{'type':Sequelize[_0xdf59('0x9')]},'queue':{'type':Sequelize[_0xdf59('0x9')]},'uniqueid':{'type':Sequelize[_0xdf59('0x9')]},'calleridname':{'type':Sequelize[_0xdf59('0x9')]},'calleridnum':{'type':Sequelize[_0xdf59('0x9')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 8925c7a..7a78ef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76a6=['index','map','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','JscriptySessionReport','includeAll','rows','catch','show','params','include','find','create','body','describe','getQuestions','findOne','JscriptyQuestionReport','SessionId','findAll','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','../../components/parsers/qs','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','stack','name'];(function(_0x377de6,_0x4de4c6){var _0x4d5564=function(_0x3b43f6){while(--_0x3b43f6){_0x377de6['push'](_0x377de6['shift']());}};_0x4d5564(++_0x4de4c6);}(_0x76a6,0x153));var _0x676a=function(_0x206338,_0x2d800b){_0x206338=_0x206338-0x0;var _0x2b87f2=_0x76a6[_0x206338];return _0x2b87f2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x676a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x676a('0x1'));var rp=require(_0x676a('0x2'));var moment=require(_0x676a('0x3'));var BPromise=require(_0x676a('0x4'));var Mustache=require(_0x676a('0x5'));var util=require('util');var path=require(_0x676a('0x6'));var sox=require(_0x676a('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x676a('0x8'));var _=require(_0x676a('0x9'));var squel=require(_0x676a('0xa'));var crypto=require(_0x676a('0xb'));var jsforce=require(_0x676a('0xc'));var deskjs=require(_0x676a('0xd'));var toCsv=require(_0x676a('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x676a('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x676a('0x10'));var utils=require('../../config/utils');var config=require(_0x676a('0x11'));var licenseUtil=require(_0x676a('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd25825,_0x3e09d0){_0x3e09d0=_0x3e09d0||0xcc;return function(_0x35ddce){if(_0x35ddce){return _0xd25825[_0x676a('0x13')](_0x3e09d0);}return _0xd25825[_0x676a('0x14')](_0x3e09d0)[_0x676a('0x15')]();};}function respondWithResult(_0x463c66,_0xac869b){_0xac869b=_0xac869b||0xc8;return function(_0x4722c1){if(_0x4722c1){return _0x463c66[_0x676a('0x14')](_0xac869b)[_0x676a('0x16')](_0x4722c1);}};}function respondWithFilteredResult(_0x4bf43d,_0x123ea4){return function(_0x2b9a4a){if(_0x2b9a4a){var _0x44a94a=typeof _0x123ea4[_0x676a('0x17')]===_0x676a('0x18')&&typeof _0x123ea4['limit']===_0x676a('0x18');var _0x5698ca=_0x2b9a4a[_0x676a('0x19')];var _0xf38f43=_0x44a94a?0x0:_0x123ea4[_0x676a('0x17')];var _0x2471d2=_0x44a94a?_0x2b9a4a[_0x676a('0x19')]:_0x123ea4['offset']+_0x123ea4[_0x676a('0x1a')];var _0x1cc4e5;if(_0x2471d2>=_0x5698ca){_0x2471d2=_0x5698ca;_0x1cc4e5=0xc8;}else{_0x1cc4e5=0xce;}_0x4bf43d[_0x676a('0x14')](_0x1cc4e5);return _0x4bf43d[_0x676a('0x1b')](_0x676a('0x1c'),_0xf38f43+'-'+_0x2471d2+'/'+_0x5698ca)[_0x676a('0x16')](_0x2b9a4a);}return null;};}function patchUpdates(_0x1bb9d6){return function(_0x22bf46){try{jsonpatch[_0x676a('0x1d')](_0x22bf46,_0x1bb9d6,!![]);}catch(_0x17e618){return BPromise[_0x676a('0x1e')](_0x17e618);}return _0x22bf46['save']();};}function saveUpdates(_0x402f9a,_0x286d49){return function(_0x1098e0){if(_0x1098e0){return _0x1098e0[_0x676a('0x1f')](_0x402f9a)[_0x676a('0x20')](function(_0x17a9ae){return _0x17a9ae;});}return null;};}function removeEntity(_0x15ef95,_0x44c888){return function(_0x464b70){if(_0x464b70){return _0x464b70[_0x676a('0x21')]()[_0x676a('0x20')](function(){_0x15ef95[_0x676a('0x14')](0xcc)[_0x676a('0x15')]();});}};}function handleEntityNotFound(_0x5e9ff3,_0x53cca4){return function(_0x13f657){if(!_0x13f657){_0x5e9ff3[_0x676a('0x13')](0x194);}return _0x13f657;};}function handleError(_0x5a12e8,_0x3b485d){_0x3b485d=_0x3b485d||0x1f4;return function(_0x1a68ef){logger['error'](_0x1a68ef[_0x676a('0x22')]);if(_0x1a68ef[_0x676a('0x23')]){delete _0x1a68ef[_0x676a('0x23')];}_0x5a12e8[_0x676a('0x14')](_0x3b485d)['send'](_0x1a68ef);};}exports[_0x676a('0x24')]=function(_0x37de03,_0xb2a0a5){var _0x5ba2e8={},_0x27cb6c={},_0x367242={'count':0x0,'rows':[]};var _0x6fb490=_[_0x676a('0x25')](db['JscriptySessionReport'][_0x676a('0x26')],function(_0x61fa7a){return{'name':_0x61fa7a[_0x676a('0x27')],'type':_0x61fa7a['type'][_0x676a('0x28')]};});_0x27cb6c[_0x676a('0x29')]=_[_0x676a('0x25')](_0x6fb490,_0x676a('0x23'));_0x27cb6c['query']=_[_0x676a('0x2a')](_0x37de03[_0x676a('0x2b')]);_0x27cb6c[_0x676a('0x2c')]=_[_0x676a('0x2d')](_0x27cb6c[_0x676a('0x29')],_0x27cb6c[_0x676a('0x2b')]);_0x5ba2e8[_0x676a('0x2e')]=_[_0x676a('0x2d')](_0x27cb6c['model'],qs[_0x676a('0x2f')](_0x37de03[_0x676a('0x2b')][_0x676a('0x2f')]));_0x5ba2e8[_0x676a('0x2e')]=_0x5ba2e8[_0x676a('0x2e')][_0x676a('0x30')]?_0x5ba2e8[_0x676a('0x2e')]:_0x27cb6c[_0x676a('0x29')];if(!_0x37de03[_0x676a('0x2b')]['hasOwnProperty'](_0x676a('0x31'))){_0x5ba2e8[_0x676a('0x1a')]=qs[_0x676a('0x1a')](_0x37de03['query'][_0x676a('0x1a')]);_0x5ba2e8[_0x676a('0x17')]=qs[_0x676a('0x17')](_0x37de03[_0x676a('0x2b')][_0x676a('0x17')]);}_0x5ba2e8[_0x676a('0x32')]=qs[_0x676a('0x33')](_0x37de03['query'][_0x676a('0x33')]);_0x5ba2e8[_0x676a('0x34')]=qs[_0x676a('0x2c')](_[_0x676a('0x35')](_0x37de03[_0x676a('0x2b')],_0x27cb6c['filters']),_0x6fb490);if(_0x37de03['query'][_0x676a('0x36')]){_0x5ba2e8[_0x676a('0x34')]=_[_0x676a('0x37')](_0x5ba2e8[_0x676a('0x34')],{'$or':_[_0x676a('0x25')](_0x6fb490,function(_0xd97329){if(_0xd97329[_0x676a('0x38')]!==_0x676a('0x39')){var _0xb08f80={};_0xb08f80[_0xd97329[_0x676a('0x23')]]={'$like':'%'+_0x37de03[_0x676a('0x2b')][_0x676a('0x36')]+'%'};return _0xb08f80;}})});}_0x5ba2e8=_[_0x676a('0x37')]({},_0x5ba2e8,_0x37de03[_0x676a('0x3a')]);var _0x22aec8={'where':_0x5ba2e8[_0x676a('0x34')]};return db[_0x676a('0x3b')]['count'](_0x22aec8)[_0x676a('0x20')](function(_0x53cae7){_0x367242['count']=_0x53cae7;if(_0x37de03[_0x676a('0x2b')][_0x676a('0x3c')]){_0x5ba2e8['include']=[{'all':!![]}];}return db[_0x676a('0x3b')]['findAll'](_0x5ba2e8);})[_0x676a('0x20')](function(_0x5281c6){_0x367242[_0x676a('0x3d')]=_0x5281c6;return _0x367242;})['then'](respondWithFilteredResult(_0xb2a0a5,_0x5ba2e8))[_0x676a('0x3e')](handleError(_0xb2a0a5,null));};exports[_0x676a('0x3f')]=function(_0x2af35c,_0x2b850a){var _0x35e7fe={'raw':!![],'where':{'id':_0x2af35c[_0x676a('0x40')]['id']}},_0x160980={};_0x160980[_0x676a('0x29')]=_[_0x676a('0x2a')](db[_0x676a('0x3b')][_0x676a('0x26')]);_0x160980['query']=_[_0x676a('0x2a')](_0x2af35c[_0x676a('0x2b')]);_0x160980['filters']=_[_0x676a('0x2d')](_0x160980[_0x676a('0x29')],_0x160980[_0x676a('0x2b')]);_0x35e7fe['attributes']=_['intersection'](_0x160980[_0x676a('0x29')],qs[_0x676a('0x2f')](_0x2af35c[_0x676a('0x2b')]['fields']));_0x35e7fe['attributes']=_0x35e7fe[_0x676a('0x2e')]['length']?_0x35e7fe['attributes']:_0x160980[_0x676a('0x29')];if(_0x2af35c[_0x676a('0x2b')][_0x676a('0x3c')]){_0x35e7fe[_0x676a('0x41')]=[{'all':!![]}];}_0x35e7fe=_[_0x676a('0x37')]({},_0x35e7fe,_0x2af35c[_0x676a('0x3a')]);return db[_0x676a('0x3b')][_0x676a('0x42')](_0x35e7fe)[_0x676a('0x20')](handleEntityNotFound(_0x2b850a,null))['then'](respondWithResult(_0x2b850a,null))[_0x676a('0x3e')](handleError(_0x2b850a,null));};exports[_0x676a('0x43')]=function(_0x34aff6,_0x1e660c){return db[_0x676a('0x3b')][_0x676a('0x43')](_0x34aff6[_0x676a('0x44')],{})['then'](respondWithResult(_0x1e660c,0xc9))[_0x676a('0x3e')](handleError(_0x1e660c,null));};exports[_0x676a('0x1f')]=function(_0x5bfbee,_0x44cbe4){if(_0x5bfbee[_0x676a('0x44')]['id']){delete _0x5bfbee[_0x676a('0x44')]['id'];}return db[_0x676a('0x3b')][_0x676a('0x42')]({'where':{'id':_0x5bfbee[_0x676a('0x40')]['id']}})[_0x676a('0x20')](handleEntityNotFound(_0x44cbe4,null))[_0x676a('0x20')](saveUpdates(_0x5bfbee[_0x676a('0x44')],null))[_0x676a('0x20')](respondWithResult(_0x44cbe4,null))[_0x676a('0x3e')](handleError(_0x44cbe4,null));};exports[_0x676a('0x21')]=function(_0x484c44,_0x48380e){return db['JscriptySessionReport'][_0x676a('0x42')]({'where':{'id':_0x484c44[_0x676a('0x40')]['id']}})[_0x676a('0x20')](handleEntityNotFound(_0x48380e,null))[_0x676a('0x20')](removeEntity(_0x48380e,null))[_0x676a('0x3e')](handleError(_0x48380e,null));};exports[_0x676a('0x45')]=function(_0x5dac39,_0x9e5f82){return db[_0x676a('0x3b')][_0x676a('0x45')]()['then'](respondWithResult(_0x9e5f82,null))[_0x676a('0x3e')](handleError(_0x9e5f82,null));};exports[_0x676a('0x46')]=function(_0x3571d0,_0x41e003,_0x41e401){var _0x87f3bb={'raw':!![],'where':{}};var _0x221eb6={};var _0x3b1d5d={'count':0x0,'rows':[]};return db[_0x676a('0x3b')][_0x676a('0x47')]({'where':{'id':_0x3571d0[_0x676a('0x40')]['id']}})[_0x676a('0x20')](handleEntityNotFound(_0x41e003,null))[_0x676a('0x20')](function(_0xc2e3ba){if(_0xc2e3ba){_0x221eb6[_0x676a('0x29')]=_[_0x676a('0x2a')](db[_0x676a('0x48')][_0x676a('0x26')]);_0x221eb6[_0x676a('0x2b')]=_[_0x676a('0x2a')](_0x3571d0[_0x676a('0x2b')]);_0x221eb6[_0x676a('0x2c')]=_[_0x676a('0x2d')](_0x221eb6[_0x676a('0x29')],_0x221eb6[_0x676a('0x2b')]);_0x87f3bb[_0x676a('0x2e')]=_[_0x676a('0x2d')](_0x221eb6[_0x676a('0x29')],qs['fields'](_0x3571d0[_0x676a('0x2b')]['fields']));_0x87f3bb[_0x676a('0x2e')]=_0x87f3bb['attributes']['length']?_0x87f3bb['attributes']:_0x221eb6[_0x676a('0x29')];if(!_0x3571d0[_0x676a('0x2b')]['hasOwnProperty']('nolimit')){_0x87f3bb[_0x676a('0x1a')]=qs[_0x676a('0x1a')](_0x3571d0[_0x676a('0x2b')][_0x676a('0x1a')]);_0x87f3bb[_0x676a('0x17')]=qs[_0x676a('0x17')](_0x3571d0[_0x676a('0x2b')][_0x676a('0x17')]);}_0x87f3bb['order']=qs[_0x676a('0x33')](_0x3571d0[_0x676a('0x2b')][_0x676a('0x33')]);_0x87f3bb[_0x676a('0x34')]=qs['filters'](_['pick'](_0x3571d0[_0x676a('0x2b')],_0x221eb6[_0x676a('0x2c')]));_0x87f3bb['where'][_0x676a('0x49')]=_0xc2e3ba['id'];if(_0x3571d0[_0x676a('0x2b')]['filter']){_0x87f3bb[_0x676a('0x34')]=_[_0x676a('0x37')](_0x87f3bb[_0x676a('0x34')],{'$or':_[_0x676a('0x25')](_0x87f3bb[_0x676a('0x2e')],function(_0x12de29){var _0x1c141e={};_0x1c141e[_0x12de29]={'$like':'%'+_0x3571d0[_0x676a('0x2b')][_0x676a('0x36')]+'%'};return _0x1c141e;})});}_0x87f3bb=_[_0x676a('0x37')]({},_0x87f3bb,_0x3571d0['options']);return db['JscriptyQuestionReport'][_0x676a('0x19')]({'where':_0x87f3bb[_0x676a('0x34')]})[_0x676a('0x20')](function(_0x16dad5){_0x3b1d5d['count']=_0x16dad5;if(_0x3571d0['query'][_0x676a('0x3c')]){_0x87f3bb[_0x676a('0x41')]=[{'all':!![]}];}return db[_0x676a('0x48')][_0x676a('0x4a')](_0x87f3bb);})['then'](function(_0x52ed58){_0x3b1d5d['rows']=_0x52ed58;return _0x3b1d5d;});}})[_0x676a('0x20')](respondWithFilteredResult(_0x41e003,_0x87f3bb))[_0x676a('0x3e')](handleError(_0x41e003,null));};
\ No newline at end of file
+var _0x8345=['nolimit','order','sort','where','filter','merge','options','includeAll','rows','catch','params','find','create','update','body','describe','getQuestions','findOne','JscriptyQuestionReport','pick','SessionId','include','findAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','name','send','map','JscriptySessionReport','rawAttributes','fieldName','type','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x8345,0x1a7));var _0x5834=function(_0xa62163,_0x4a26fb){_0xa62163=_0xa62163-0x0;var _0x46b4fb=_0x8345[_0xa62163];return _0x46b4fb;};'use strict';var emlformat=require(_0x5834('0x0'));var rimraf=require(_0x5834('0x1'));var zipdir=require(_0x5834('0x2'));var jsonpatch=require(_0x5834('0x3'));var rp=require('request-promise');var moment=require(_0x5834('0x4'));var BPromise=require(_0x5834('0x5'));var Mustache=require(_0x5834('0x6'));var util=require(_0x5834('0x7'));var path=require('path');var sox=require(_0x5834('0x8'));var csv=require('to-csv');var ejs=require(_0x5834('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5834('0xa'));var squel=require(_0x5834('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5834('0xc'));var toCsv=require(_0x5834('0xd'));var querystring=require(_0x5834('0xe'));var Papa=require(_0x5834('0xf'));var Redis=require(_0x5834('0x10'));var authService=require(_0x5834('0x11'));var qs=require(_0x5834('0x12'));var as=require(_0x5834('0x13'));var hardwareService=require(_0x5834('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x5834('0x15'));var config=require(_0x5834('0x16'));var licenseUtil=require(_0x5834('0x17'));var db=require(_0x5834('0x18'))['db'];function respondWithStatusCode(_0x3ca13c,_0x3ca2cf){_0x3ca2cf=_0x3ca2cf||0xcc;return function(_0x2f0ad4){if(_0x2f0ad4){return _0x3ca13c['sendStatus'](_0x3ca2cf);}return _0x3ca13c[_0x5834('0x19')](_0x3ca2cf)[_0x5834('0x1a')]();};}function respondWithResult(_0x420e19,_0x367493){_0x367493=_0x367493||0xc8;return function(_0x216988){if(_0x216988){return _0x420e19[_0x5834('0x19')](_0x367493)[_0x5834('0x1b')](_0x216988);}};}function respondWithFilteredResult(_0x2e21a4,_0x526ccf){return function(_0x23906e){if(_0x23906e){var _0x41eb15=typeof _0x526ccf[_0x5834('0x1c')]==='undefined'&&typeof _0x526ccf[_0x5834('0x1d')]===_0x5834('0x1e');var _0x33562f=_0x23906e[_0x5834('0x1f')];var _0x228e05=_0x41eb15?0x0:_0x526ccf[_0x5834('0x1c')];var _0x562d05=_0x41eb15?_0x23906e[_0x5834('0x1f')]:_0x526ccf[_0x5834('0x1c')]+_0x526ccf[_0x5834('0x1d')];var _0x3a2f42;if(_0x562d05>=_0x33562f){_0x562d05=_0x33562f;_0x3a2f42=0xc8;}else{_0x3a2f42=0xce;}_0x2e21a4[_0x5834('0x19')](_0x3a2f42);return _0x2e21a4[_0x5834('0x20')](_0x5834('0x21'),_0x228e05+'-'+_0x562d05+'/'+_0x33562f)[_0x5834('0x1b')](_0x23906e);}return null;};}function patchUpdates(_0x3725b3){return function(_0x1a74a6){try{jsonpatch[_0x5834('0x22')](_0x1a74a6,_0x3725b3,!![]);}catch(_0x56de2f){return BPromise[_0x5834('0x23')](_0x56de2f);}return _0x1a74a6[_0x5834('0x24')]();};}function saveUpdates(_0x5f443f,_0x252c0b){return function(_0x32b7d8){if(_0x32b7d8){return _0x32b7d8['update'](_0x5f443f)[_0x5834('0x25')](function(_0x355bf0){return _0x355bf0;});}return null;};}function removeEntity(_0x281cdc,_0x22cf83){return function(_0x265940){if(_0x265940){return _0x265940[_0x5834('0x26')]()[_0x5834('0x25')](function(){_0x281cdc[_0x5834('0x19')](0xcc)[_0x5834('0x1a')]();});}};}function handleEntityNotFound(_0x1a4414,_0x266231){return function(_0x481976){if(!_0x481976){_0x1a4414[_0x5834('0x27')](0x194);}return _0x481976;};}function handleError(_0x190c42,_0x59e8ad){_0x59e8ad=_0x59e8ad||0x1f4;return function(_0x4ce7fa){logger[_0x5834('0x28')](_0x4ce7fa['stack']);if(_0x4ce7fa[_0x5834('0x29')]){delete _0x4ce7fa[_0x5834('0x29')];}_0x190c42[_0x5834('0x19')](_0x59e8ad)[_0x5834('0x2a')](_0x4ce7fa);};}exports['index']=function(_0x2cff4d,_0x96a7d2){var _0x421540={},_0x504489={},_0x27190d={'count':0x0,'rows':[]};var _0x51d492=_[_0x5834('0x2b')](db[_0x5834('0x2c')][_0x5834('0x2d')],function(_0x1063d0){return{'name':_0x1063d0[_0x5834('0x2e')],'type':_0x1063d0[_0x5834('0x2f')]['key']};});_0x504489['model']=_['map'](_0x51d492,_0x5834('0x29'));_0x504489['query']=_[_0x5834('0x30')](_0x2cff4d[_0x5834('0x31')]);_0x504489[_0x5834('0x32')]=_['intersection'](_0x504489[_0x5834('0x33')],_0x504489[_0x5834('0x31')]);_0x421540['attributes']=_[_0x5834('0x34')](_0x504489[_0x5834('0x33')],qs[_0x5834('0x35')](_0x2cff4d[_0x5834('0x31')][_0x5834('0x35')]));_0x421540[_0x5834('0x36')]=_0x421540[_0x5834('0x36')][_0x5834('0x37')]?_0x421540[_0x5834('0x36')]:_0x504489[_0x5834('0x33')];if(!_0x2cff4d[_0x5834('0x31')][_0x5834('0x38')](_0x5834('0x39'))){_0x421540[_0x5834('0x1d')]=qs[_0x5834('0x1d')](_0x2cff4d[_0x5834('0x31')][_0x5834('0x1d')]);_0x421540[_0x5834('0x1c')]=qs[_0x5834('0x1c')](_0x2cff4d[_0x5834('0x31')][_0x5834('0x1c')]);}_0x421540[_0x5834('0x3a')]=qs[_0x5834('0x3b')](_0x2cff4d[_0x5834('0x31')][_0x5834('0x3b')]);_0x421540[_0x5834('0x3c')]=qs[_0x5834('0x32')](_['pick'](_0x2cff4d[_0x5834('0x31')],_0x504489[_0x5834('0x32')]),_0x51d492);if(_0x2cff4d[_0x5834('0x31')][_0x5834('0x3d')]){_0x421540[_0x5834('0x3c')]=_[_0x5834('0x3e')](_0x421540[_0x5834('0x3c')],{'$or':_['map'](_0x51d492,function(_0x26f7db){if(_0x26f7db['type']!=='VIRTUAL'){var _0x5289c1={};_0x5289c1[_0x26f7db[_0x5834('0x29')]]={'$like':'%'+_0x2cff4d['query']['filter']+'%'};return _0x5289c1;}})});}_0x421540=_[_0x5834('0x3e')]({},_0x421540,_0x2cff4d[_0x5834('0x3f')]);var _0x471023={'where':_0x421540[_0x5834('0x3c')]};return db[_0x5834('0x2c')][_0x5834('0x1f')](_0x471023)[_0x5834('0x25')](function(_0x5c9530){_0x27190d[_0x5834('0x1f')]=_0x5c9530;if(_0x2cff4d[_0x5834('0x31')][_0x5834('0x40')]){_0x421540['include']=[{'all':!![]}];}return db[_0x5834('0x2c')]['findAll'](_0x421540);})[_0x5834('0x25')](function(_0xa784e2){_0x27190d[_0x5834('0x41')]=_0xa784e2;return _0x27190d;})[_0x5834('0x25')](respondWithFilteredResult(_0x96a7d2,_0x421540))[_0x5834('0x42')](handleError(_0x96a7d2,null));};exports['show']=function(_0xa0a13c,_0x17b181){var _0x3d11d0={'raw':!![],'where':{'id':_0xa0a13c[_0x5834('0x43')]['id']}},_0x4cc40c={};_0x4cc40c[_0x5834('0x33')]=_[_0x5834('0x30')](db[_0x5834('0x2c')]['rawAttributes']);_0x4cc40c[_0x5834('0x31')]=_[_0x5834('0x30')](_0xa0a13c[_0x5834('0x31')]);_0x4cc40c[_0x5834('0x32')]=_[_0x5834('0x34')](_0x4cc40c[_0x5834('0x33')],_0x4cc40c[_0x5834('0x31')]);_0x3d11d0[_0x5834('0x36')]=_[_0x5834('0x34')](_0x4cc40c['model'],qs[_0x5834('0x35')](_0xa0a13c[_0x5834('0x31')]['fields']));_0x3d11d0[_0x5834('0x36')]=_0x3d11d0[_0x5834('0x36')][_0x5834('0x37')]?_0x3d11d0['attributes']:_0x4cc40c[_0x5834('0x33')];if(_0xa0a13c['query'][_0x5834('0x40')]){_0x3d11d0['include']=[{'all':!![]}];}_0x3d11d0=_[_0x5834('0x3e')]({},_0x3d11d0,_0xa0a13c[_0x5834('0x3f')]);return db[_0x5834('0x2c')][_0x5834('0x44')](_0x3d11d0)[_0x5834('0x25')](handleEntityNotFound(_0x17b181,null))[_0x5834('0x25')](respondWithResult(_0x17b181,null))['catch'](handleError(_0x17b181,null));};exports[_0x5834('0x45')]=function(_0x2e6d67,_0xcce2f5){return db[_0x5834('0x2c')][_0x5834('0x45')](_0x2e6d67['body'],{})[_0x5834('0x25')](respondWithResult(_0xcce2f5,0xc9))[_0x5834('0x42')](handleError(_0xcce2f5,null));};exports[_0x5834('0x46')]=function(_0x19560e,_0x5c6999){if(_0x19560e[_0x5834('0x47')]['id']){delete _0x19560e[_0x5834('0x47')]['id'];}return db[_0x5834('0x2c')][_0x5834('0x44')]({'where':{'id':_0x19560e[_0x5834('0x43')]['id']}})['then'](handleEntityNotFound(_0x5c6999,null))['then'](saveUpdates(_0x19560e[_0x5834('0x47')],null))[_0x5834('0x25')](respondWithResult(_0x5c6999,null))[_0x5834('0x42')](handleError(_0x5c6999,null));};exports[_0x5834('0x26')]=function(_0x256fe2,_0xe15ac5){return db[_0x5834('0x2c')][_0x5834('0x44')]({'where':{'id':_0x256fe2[_0x5834('0x43')]['id']}})['then'](handleEntityNotFound(_0xe15ac5,null))[_0x5834('0x25')](removeEntity(_0xe15ac5,null))[_0x5834('0x42')](handleError(_0xe15ac5,null));};exports[_0x5834('0x48')]=function(_0x37f4fc,_0x5c6eed){return db[_0x5834('0x2c')]['describe']()[_0x5834('0x25')](respondWithResult(_0x5c6eed,null))[_0x5834('0x42')](handleError(_0x5c6eed,null));};exports[_0x5834('0x49')]=function(_0x3c7e8e,_0x464f55,_0x1671a1){var _0xd34b7b={'raw':!![],'where':{}};var _0x36461a={};var _0x344f84={'count':0x0,'rows':[]};return db[_0x5834('0x2c')][_0x5834('0x4a')]({'where':{'id':_0x3c7e8e[_0x5834('0x43')]['id']}})[_0x5834('0x25')](handleEntityNotFound(_0x464f55,null))[_0x5834('0x25')](function(_0x50c63d){if(_0x50c63d){_0x36461a['model']=_[_0x5834('0x30')](db[_0x5834('0x4b')][_0x5834('0x2d')]);_0x36461a[_0x5834('0x31')]=_['keys'](_0x3c7e8e[_0x5834('0x31')]);_0x36461a[_0x5834('0x32')]=_[_0x5834('0x34')](_0x36461a['model'],_0x36461a[_0x5834('0x31')]);_0xd34b7b[_0x5834('0x36')]=_[_0x5834('0x34')](_0x36461a['model'],qs[_0x5834('0x35')](_0x3c7e8e[_0x5834('0x31')]['fields']));_0xd34b7b[_0x5834('0x36')]=_0xd34b7b[_0x5834('0x36')][_0x5834('0x37')]?_0xd34b7b[_0x5834('0x36')]:_0x36461a[_0x5834('0x33')];if(!_0x3c7e8e[_0x5834('0x31')][_0x5834('0x38')](_0x5834('0x39'))){_0xd34b7b[_0x5834('0x1d')]=qs[_0x5834('0x1d')](_0x3c7e8e[_0x5834('0x31')][_0x5834('0x1d')]);_0xd34b7b[_0x5834('0x1c')]=qs['offset'](_0x3c7e8e[_0x5834('0x31')]['offset']);}_0xd34b7b[_0x5834('0x3a')]=qs[_0x5834('0x3b')](_0x3c7e8e[_0x5834('0x31')][_0x5834('0x3b')]);_0xd34b7b[_0x5834('0x3c')]=qs['filters'](_[_0x5834('0x4c')](_0x3c7e8e[_0x5834('0x31')],_0x36461a['filters']));_0xd34b7b[_0x5834('0x3c')][_0x5834('0x4d')]=_0x50c63d['id'];if(_0x3c7e8e['query']['filter']){_0xd34b7b[_0x5834('0x3c')]=_[_0x5834('0x3e')](_0xd34b7b['where'],{'$or':_['map'](_0xd34b7b['attributes'],function(_0x1cc984){var _0x45cba7={};_0x45cba7[_0x1cc984]={'$like':'%'+_0x3c7e8e[_0x5834('0x31')][_0x5834('0x3d')]+'%'};return _0x45cba7;})});}_0xd34b7b=_[_0x5834('0x3e')]({},_0xd34b7b,_0x3c7e8e[_0x5834('0x3f')]);return db[_0x5834('0x4b')][_0x5834('0x1f')]({'where':_0xd34b7b['where']})['then'](function(_0x5d2c30){_0x344f84[_0x5834('0x1f')]=_0x5d2c30;if(_0x3c7e8e[_0x5834('0x31')][_0x5834('0x40')]){_0xd34b7b[_0x5834('0x4e')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x5834('0x4f')](_0xd34b7b);})[_0x5834('0x25')](function(_0x4bc028){_0x344f84[_0x5834('0x41')]=_0x4bc028;return _0x344f84;});}})[_0x5834('0x25')](respondWithFilteredResult(_0x464f55,_0xd34b7b))['catch'](handleError(_0x464f55,null));};
\ No newline at end of file
index 9578e33..6fcd0f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0ae=['api','bluebird','path','rimraf','./jscriptySessionReport.attributes','define','JscriptySessionReport','report_jscripty_sessions','../../config/logger'];(function(_0xad4a0b,_0x2f6b32){var _0x330092=function(_0x6649fc){while(--_0x6649fc){_0xad4a0b['push'](_0xad4a0b['shift']());}};_0x330092(++_0x2f6b32);}(_0xe0ae,0xa1));var _0xee0a=function(_0x146be0,_0x39a85e){_0x146be0=_0x146be0-0x0;var _0x1bcc25=_0xe0ae[_0x146be0];return _0x1bcc25;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xee0a('0x0'))(_0xee0a('0x1'));var moment=require('moment');var BPromise=require(_0xee0a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xee0a('0x3'));var rimraf=require(_0xee0a('0x4'));var config=require('../../config/environment');var attributes=require(_0xee0a('0x5'));module['exports']=function(_0x5bef07,_0x39a302){return _0x5bef07[_0xee0a('0x6')](_0xee0a('0x7'),attributes,{'tableName':_0xee0a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c6c=['rimraf','../../config/environment','exports','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x59f0dc,_0x1e2497){var _0x5b5445=function(_0x57ca91){while(--_0x57ca91){_0x59f0dc['push'](_0x59f0dc['shift']());}};_0x5b5445(++_0x1e2497);}(_0x3c6c,0x7b));var _0xc3c6=function(_0x343865,_0x12e575){_0x343865=_0x343865-0x0;var _0x4a7533=_0x3c6c[_0x343865];return _0x4a7533;};'use strict';var _=require(_0xc3c6('0x0'));var util=require('util');var logger=require(_0xc3c6('0x1'))(_0xc3c6('0x2'));var moment=require(_0xc3c6('0x3'));var BPromise=require(_0xc3c6('0x4'));var rp=require(_0xc3c6('0x5'));var fs=require('fs');var path=require(_0xc3c6('0x6'));var rimraf=require(_0xc3c6('0x7'));var config=require(_0xc3c6('0x8'));var attributes=require('./jscriptySessionReport.attributes');module[_0xc3c6('0x9')]=function(_0x4a2ca1,_0xe7731e){return _0x4a2ca1['define']('JscriptySessionReport',attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8177408..a3588be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b3=['rpc','jayson/promise','client','http','request','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3d790e,_0x2bc7b3){var _0x39f5be=function(_0x19a318){while(--_0x19a318){_0x3d790e['push'](_0x3d790e['shift']());}};_0x39f5be(++_0x2bc7b3);}(_0x68b3,0x1d8));var _0x368b=function(_0x10b07f,_0x133cf7){_0x10b07f=_0x10b07f-0x0;var _0x446291=_0x68b3[_0x10b07f];return _0x446291;};'use strict';var _=require(_0x368b('0x0'));var util=require(_0x368b('0x1'));var moment=require(_0x368b('0x2'));var BPromise=require(_0x368b('0x3'));var rs=require(_0x368b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x368b('0x5'))['db'];var utils=require(_0x368b('0x6'));var logger=require(_0x368b('0x7'))(_0x368b('0x8'));var config=require('../../config/environment');var jayson=require(_0x368b('0x9'));var client=jayson[_0x368b('0xa')][_0x368b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x23584a,_0x4406c8,_0x127c1e){return new BPromise(function(_0x2dec1c,_0x142d05){return client[_0x368b('0xc')](_0x23584a,_0x127c1e)[_0x368b('0xd')](function(_0x2a7b9f){logger['info'](_0x368b('0xe'),_0x4406c8,_0x368b('0xf'));logger[_0x368b('0x10')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x4406c8,_0x368b('0xf'),JSON[_0x368b('0x11')](_0x2a7b9f));if(_0x2a7b9f[_0x368b('0x12')]){if(_0x2a7b9f['error'][_0x368b('0x13')]===0x1f4){logger[_0x368b('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x4406c8,_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);return _0x142d05(_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);}logger[_0x368b('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x4406c8,_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);return _0x2dec1c(_0x2a7b9f['error'][_0x368b('0x14')]);}else{logger[_0x368b('0x15')](_0x368b('0xe'),_0x4406c8,'request\x20sent');_0x2dec1c(_0x2a7b9f[_0x368b('0x16')][_0x368b('0x14')]);}})[_0x368b('0x17')](function(_0x4d6d9d){logger[_0x368b('0x12')](_0x368b('0xe'),_0x4406c8,_0x4d6d9d);_0x142d05(_0x4d6d9d);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x1431fa,_0x161c6f){var _0x29fdef=function(_0x40f71b){while(--_0x40f71b){_0x1431fa['push'](_0x1431fa['shift']());}};_0x29fdef(++_0x161c6f);}(_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')]('JscriptySessionReport,\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 0d9ee9c..02091b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf385=['../../components/auth/service','get','put','/:id','isAuthenticated','update','multer','connect-timeout','express','Router','fs-extra'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xf385,0xab));var _0x5f38=function(_0x4c80d7,_0x2bef29){_0x4c80d7=_0x4c80d7-0x0;var _0x3c5095=_0xf385[_0x4c80d7];return _0x3c5095;};'use strict';var multer=require(_0x5f38('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5f38('0x1'));var express=require(_0x5f38('0x2'));var router=express[_0x5f38('0x3')]();var fs_extra=require(_0x5f38('0x4'));var auth=require(_0x5f38('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./license.controller');router[_0x5f38('0x6')]('/',controller['index']);router[_0x5f38('0x7')](_0x5f38('0x8'),auth[_0x5f38('0x9')](),controller[_0x5f38('0xa')]);module['exports']=router;
\ No newline at end of file
+var _0x46fc=['isAuthenticated','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','put','/:id'];(function(_0x4a53e2,_0x13321e){var _0x3f2d76=function(_0x50c5cf){while(--_0x50c5cf){_0x4a53e2['push'](_0x4a53e2['shift']());}};_0x3f2d76(++_0x13321e);}(_0x46fc,0x103));var _0xc46f=function(_0x419ce6,_0x15df62){_0x419ce6=_0x419ce6-0x0;var _0x1c64ca=_0x46fc[_0x419ce6];return _0x1c64ca;};'use strict';var multer=require(_0xc46f('0x0'));var util=require(_0xc46f('0x1'));var path=require(_0xc46f('0x2'));var timeout=require(_0xc46f('0x3'));var express=require(_0xc46f('0x4'));var router=express[_0xc46f('0x5')]();var fs_extra=require(_0xc46f('0x6'));var auth=require(_0xc46f('0x7'));var interaction=require(_0xc46f('0x8'));var config=require('../../config/environment');var controller=require('./license.controller');router[_0xc46f('0x9')]('/',controller[_0xc46f('0xa')]);router[_0xc46f('0xb')](_0xc46f('0xc'),auth[_0xc46f('0xd')](),controller[_0xc46f('0xe')]);module[_0xc46f('0xf')]=router;
\ No newline at end of file
index c8f9ad2..4b57c64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1692=['TEXT','STRING','sequelize','exports'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x1692,0x132));var _0x2169=function(_0x278cd4,_0x23c694){_0x278cd4=_0x278cd4-0x0;var _0x1565a2=_0x1692[_0x278cd4];return _0x1565a2;};'use strict';var Sequelize=require(_0x2169('0x0'));module[_0x2169('0x1')]={'license':{'type':Sequelize[_0x2169('0x2')]},'data1':{'type':Sequelize[_0x2169('0x3')]},'data2':{'type':Sequelize[_0x2169('0x3')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xac81=['STRING','INTEGER','exports','TEXT'];(function(_0x2e4a42,_0x38d181){var _0x109f87=function(_0x5ab685){while(--_0x5ab685){_0x2e4a42['push'](_0x2e4a42['shift']());}};_0x109f87(++_0x38d181);}(_0xac81,0x17a));var _0x1ac8=function(_0x542f6f,_0x85f9d9){_0x542f6f=_0x542f6f-0x0;var _0x45da64=_0xac81[_0x542f6f];return _0x45da64;};'use strict';var Sequelize=require('sequelize');module[_0x1ac8('0x0')]={'license':{'type':Sequelize[_0x1ac8('0x1')]},'data1':{'type':Sequelize[_0x1ac8('0x2')]},'data2':{'type':Sequelize[_0x1ac8('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x1ac8('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 9a2c8b7..29f1349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x582fdd,_0x5a5e12){var _0x54adb6=function(_0x4321db){while(--_0x4321db){_0x582fdd['push'](_0x582fdd['shift']());}};_0x54adb6(++_0x5a5e12);}(_0x2ef3,0xba));var _0x32ef=function(_0x4dd563,_0x529855){_0x4dd563=_0x4dd563-0x0;var _0x3acd3a=_0x2ef3[_0x4dd563];return _0x3acd3a;};'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
+var _0x326f=['sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','stack','name','send','model','keys','rawAttributes','query','filters','intersection','attributes','fields','length','options','getLicense','catch','body','License','find','checkLicense','key','demo','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x326f,0xd1));var _0xf326=function(_0x136d7f,_0x488574){_0x136d7f=_0x136d7f-0x0;var _0x119bdb=_0x326f[_0x136d7f];return _0x119bdb;};'use strict';var emlformat=require(_0xf326('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf326('0x1'));var rp=require(_0xf326('0x2'));var moment=require(_0xf326('0x3'));var BPromise=require(_0xf326('0x4'));var Mustache=require(_0xf326('0x5'));var util=require(_0xf326('0x6'));var path=require(_0xf326('0x7'));var sox=require(_0xf326('0x8'));var csv=require(_0xf326('0x9'));var ejs=require(_0xf326('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf326('0xb'));var squel=require(_0xf326('0xc'));var crypto=require(_0xf326('0xd'));var jsforce=require(_0xf326('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf326('0xf'));var Redis=require(_0xf326('0x10'));var authService=require(_0xf326('0x11'));var qs=require(_0xf326('0x12'));var as=require(_0xf326('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf326('0x14'))('api');var utils=require(_0xf326('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf326('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3162f9,_0x9ed463){_0x9ed463=_0x9ed463||0xcc;return function(_0x4b3966){if(_0x4b3966){return _0x3162f9[_0xf326('0x17')](_0x9ed463);}return _0x3162f9[_0xf326('0x18')](_0x9ed463)[_0xf326('0x19')]();};}function respondWithResult(_0x17a098,_0x5c8483){_0x5c8483=_0x5c8483||0xc8;return function(_0x45c1b6){if(_0x45c1b6){return _0x17a098['status'](_0x5c8483)['json'](_0x45c1b6);}};}function respondWithFilteredResult(_0xdf21d9,_0x11f6d2){return function(_0x1f2e5a){if(_0x1f2e5a){var _0xa63d1a=typeof _0x11f6d2[_0xf326('0x1a')]===_0xf326('0x1b')&&typeof _0x11f6d2[_0xf326('0x1c')]===_0xf326('0x1b');var _0x5a682a=_0x1f2e5a[_0xf326('0x1d')];var _0x453100=_0xa63d1a?0x0:_0x11f6d2[_0xf326('0x1a')];var _0x31ffb9=_0xa63d1a?_0x1f2e5a[_0xf326('0x1d')]:_0x11f6d2[_0xf326('0x1a')]+_0x11f6d2['limit'];var _0x4a5b6c;if(_0x31ffb9>=_0x5a682a){_0x31ffb9=_0x5a682a;_0x4a5b6c=0xc8;}else{_0x4a5b6c=0xce;}_0xdf21d9['status'](_0x4a5b6c);return _0xdf21d9[_0xf326('0x1e')](_0xf326('0x1f'),_0x453100+'-'+_0x31ffb9+'/'+_0x5a682a)['json'](_0x1f2e5a);}return null;};}function patchUpdates(_0x4cabce){return function(_0x128c68){try{jsonpatch['apply'](_0x128c68,_0x4cabce,!![]);}catch(_0x5b6d3c){return BPromise[_0xf326('0x20')](_0x5b6d3c);}return _0x128c68[_0xf326('0x21')]();};}function saveUpdates(_0x549b46,_0x5aa184){return function(_0x19b8ba){if(_0x19b8ba){return _0x19b8ba[_0xf326('0x22')](_0x549b46)['then'](function(_0x337ed5){return _0x337ed5;});}return null;};}function removeEntity(_0x1b9039,_0x43c53e){return function(_0x295752){if(_0x295752){return _0x295752[_0xf326('0x23')]()[_0xf326('0x24')](function(){_0x1b9039['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f31f6,_0x520d85){return function(_0x1a2c4e){if(!_0x1a2c4e){_0x4f31f6[_0xf326('0x17')](0x194);}return _0x1a2c4e;};}function handleError(_0x1ff2b5,_0x148953){_0x148953=_0x148953||0x1f4;return function(_0x410237){logger['error'](_0x410237[_0xf326('0x25')]);if(_0x410237[_0xf326('0x26')]){delete _0x410237[_0xf326('0x26')];}_0x1ff2b5['status'](_0x148953)[_0xf326('0x27')](_0x410237);};}var utilLicense=require('../../config/license/util');exports['index']=function(_0x6a8e89,_0x1ae23a){var _0x2fa28e={'raw':!![],'where':{'id':0x1}},_0x5dbe63={};_0x5dbe63[_0xf326('0x28')]=_[_0xf326('0x29')](db['License'][_0xf326('0x2a')]);_0x5dbe63[_0xf326('0x2b')]=_[_0xf326('0x29')](_0x6a8e89[_0xf326('0x2b')]);_0x5dbe63[_0xf326('0x2c')]=_[_0xf326('0x2d')](_0x5dbe63[_0xf326('0x28')],_0x5dbe63[_0xf326('0x2b')]);_0x2fa28e[_0xf326('0x2e')]=_[_0xf326('0x2d')](_0x5dbe63['model'],qs[_0xf326('0x2f')](_0x6a8e89[_0xf326('0x2b')][_0xf326('0x2f')]));_0x2fa28e['attributes']=_0x2fa28e[_0xf326('0x2e')][_0xf326('0x30')]?_0x2fa28e[_0xf326('0x2e')]:_0x5dbe63['model'];_0x2fa28e=_['merge']({},_0x2fa28e,_0x6a8e89[_0xf326('0x31')]);return utilLicense[_0xf326('0x32')](_0x2fa28e)[_0xf326('0x24')](respondWithResult(_0x1ae23a,null))[_0xf326('0x33')](handleError(_0x1ae23a,null));};exports[_0xf326('0x22')]=function(_0x2e8a64,_0x62585a){if(_0x2e8a64[_0xf326('0x34')]['id']){delete _0x2e8a64['body']['id'];}return db[_0xf326('0x35')][_0xf326('0x36')]({'where':{'id':_0x2e8a64['params']['id']}})[_0xf326('0x24')](handleEntityNotFound(_0x62585a,null))['then'](function(_0xce1cbb){var _0x481b64=_0xce1cbb['get']({'plain':!![]});return utilLicense[_0xf326('0x37')](_0x481b64,_0x2e8a64['body'][_0xf326('0x38')]);})['then'](function(_0x310dbb){if(!_0x310dbb[_0xf326('0x39')]){return saveUpdates(_0x2e8a64[_0xf326('0x34')],null);}return _0x310dbb;})['then'](respondWithResult(_0x62585a,null))[_0xf326('0x33')](handleError(_0x62585a,null));};
\ No newline at end of file
index 6b3a491..2d75a1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd68e=['../../config/environment','./license.attributes','exports','License','license','util','moment','bluebird','request-promise'];(function(_0x26e6dd,_0x2f2055){var _0x3e3bd8=function(_0x1e5164){while(--_0x1e5164){_0x26e6dd['push'](_0x26e6dd['shift']());}};_0x3e3bd8(++_0x2f2055);}(_0xd68e,0x19a));var _0xed68=function(_0x1e399a,_0x351c59){_0x1e399a=_0x1e399a-0x0;var _0x539897=_0xd68e[_0x1e399a];return _0x539897;};'use strict';var _=require('lodash');var util=require(_0xed68('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xed68('0x1'));var BPromise=require(_0xed68('0x2'));var rp=require(_0xed68('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xed68('0x4'));var attributes=require(_0xed68('0x5'));module[_0xed68('0x6')]=function(_0x292579,_0xc12d4e){return _0x292579['define'](_0xed68('0x7'),attributes,{'tableName':_0xed68('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7741=['define','License','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./license.attributes'];(function(_0x1f36bb,_0x8af718){var _0xaf97fa=function(_0xeca489){while(--_0xeca489){_0x1f36bb['push'](_0x1f36bb['shift']());}};_0xaf97fa(++_0x8af718);}(_0x7741,0x1af));var _0x1774=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x7741[_0x3ab9ee];return _0x82ee88;};'use strict';var _=require(_0x1774('0x0'));var util=require(_0x1774('0x1'));var logger=require(_0x1774('0x2'))(_0x1774('0x3'));var moment=require(_0x1774('0x4'));var BPromise=require(_0x1774('0x5'));var rp=require(_0x1774('0x6'));var fs=require('fs');var path=require(_0x1774('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1774('0x8'));module['exports']=function(_0x3d2853,_0x290449){return _0x3d2853[_0x1774('0x9')](_0x1774('0xa'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 59dddd9..6e60013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c5=['License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','request','then','License,\x20%s,\x20%s'];(function(_0x1e011c,_0xe55414){var _0x5dd674=function(_0x118b43){while(--_0x118b43){_0x1e011c['push'](_0x1e011c['shift']());}};_0x5dd674(++_0xe55414);}(_0x81c5,0x182));var _0x581c=function(_0x224ba5,_0x5a3d47){_0x224ba5=_0x224ba5-0x0;var _0xef0f58=_0x81c5[_0x224ba5];return _0xef0f58;};'use strict';var _=require(_0x581c('0x0'));var util=require(_0x581c('0x1'));var moment=require(_0x581c('0x2'));var BPromise=require(_0x581c('0x3'));var rs=require(_0x581c('0x4'));var fs=require('fs');var Redis=require(_0x581c('0x5'));var db=require(_0x581c('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x581c('0x7'));var config=require('../../config/environment');var jayson=require(_0x581c('0x8'));var client=jayson[_0x581c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b5ea8,_0x5dc69c,_0x27ea46){return new BPromise(function(_0x127a46,_0x2e1fc3){return client[_0x581c('0xa')](_0x3b5ea8,_0x27ea46)[_0x581c('0xb')](function(_0x2717a8){logger['info'](_0x581c('0xc'),_0x5dc69c,'request\x20sent');logger['debug'](_0x581c('0xd'),_0x5dc69c,_0x581c('0xe'),JSON[_0x581c('0xf')](_0x2717a8));if(_0x2717a8[_0x581c('0x10')]){if(_0x2717a8[_0x581c('0x10')]['code']===0x1f4){logger[_0x581c('0x10')](_0x581c('0xc'),_0x5dc69c,_0x2717a8['error'][_0x581c('0x11')]);return _0x2e1fc3(_0x2717a8[_0x581c('0x10')][_0x581c('0x11')]);}logger[_0x581c('0x10')](_0x581c('0xc'),_0x5dc69c,_0x2717a8[_0x581c('0x10')][_0x581c('0x11')]);return _0x127a46(_0x2717a8[_0x581c('0x10')][_0x581c('0x11')]);}else{logger[_0x581c('0x12')](_0x581c('0xc'),_0x5dc69c,_0x581c('0xe'));_0x127a46(_0x2717a8[_0x581c('0x13')][_0x581c('0x11')]);}})[_0x581c('0x14')](function(_0x7b23fd){logger['error']('License,\x20%s,\x20%s',_0x5dc69c,_0x7b23fd);_0x2e1fc3(_0x7b23fd);});});}
\ No newline at end of file
+var _0xc816=['stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','License,\x20%s,\x20%s','request\x20sent','License,\x20%s,\x20%s,\x20%s'];(function(_0x499e28,_0x2d0c3e){var _0x4b8c09=function(_0x2aa2ac){while(--_0x2aa2ac){_0x499e28['push'](_0x499e28['shift']());}};_0x4b8c09(++_0x2d0c3e);}(_0xc816,0x1ea));var _0x6c81=function(_0x3632ee,_0x33d413){_0x3632ee=_0x3632ee-0x0;var _0x306dab=_0xc816[_0x3632ee];return _0x306dab;};'use strict';var _=require(_0x6c81('0x0'));var util=require(_0x6c81('0x1'));var moment=require(_0x6c81('0x2'));var BPromise=require('bluebird');var rs=require(_0x6c81('0x3'));var fs=require('fs');var Redis=require(_0x6c81('0x4'));var db=require(_0x6c81('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6c81('0x6'))(_0x6c81('0x7'));var config=require(_0x6c81('0x8'));var jayson=require(_0x6c81('0x9'));var client=jayson[_0x6c81('0xa')][_0x6c81('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2037ba,_0x2aa8af,_0x1f8e13){return new BPromise(function(_0x169a8d,_0x4871d2){return client[_0x6c81('0xc')](_0x2037ba,_0x1f8e13)['then'](function(_0x540251){logger['info'](_0x6c81('0xd'),_0x2aa8af,_0x6c81('0xe'));logger['debug'](_0x6c81('0xf'),_0x2aa8af,_0x6c81('0xe'),JSON[_0x6c81('0x10')](_0x540251));if(_0x540251[_0x6c81('0x11')]){if(_0x540251[_0x6c81('0x11')][_0x6c81('0x12')]===0x1f4){logger['error'](_0x6c81('0xd'),_0x2aa8af,_0x540251[_0x6c81('0x11')][_0x6c81('0x13')]);return _0x4871d2(_0x540251['error'][_0x6c81('0x13')]);}logger[_0x6c81('0x11')](_0x6c81('0xd'),_0x2aa8af,_0x540251[_0x6c81('0x11')]['message']);return _0x169a8d(_0x540251['error'][_0x6c81('0x13')]);}else{logger['info'](_0x6c81('0xd'),_0x2aa8af,'request\x20sent');_0x169a8d(_0x540251[_0x6c81('0x14')][_0x6c81('0x13')]);}})[_0x6c81('0x15')](function(_0x447fde){logger[_0x6c81('0x11')](_0x6c81('0xd'),_0x2aa8af,_0x447fde);_0x4871d2(_0x447fde);});});}
\ No newline at end of file
index 3ab5ea9..8e88b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9c4=['/:id','show','/:id/dispositions','getDispositions','getImap','/:id/interactions','/:id/applications','getApplications','verifySmtp','getAgents','addDisposition','post','/:id/canned_answers','addAnswer','create','/:id/in_servers','addImap','addInteraction','/:id/send','/:id/users','addAgents','put','update','delete','removeDispositions','removeAnswers','removeImap','/:id/out_servers','removeSmtp','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./mailAccount.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x2549fa,_0x59681f){var _0x51331a=function(_0x4352e4){while(--_0x4352e4){_0x2549fa['push'](_0x2549fa['shift']());}};_0x51331a(++_0x59681f);}(_0xf9c4,0x162));var _0x4f9c=function(_0x5b68d0,_0x33bad5){_0x5b68d0=_0x5b68d0-0x0;var _0x1bf72a=_0xf9c4[_0x5b68d0];return _0x1bf72a;};'use strict';var multer=require(_0x4f9c('0x0'));var util=require(_0x4f9c('0x1'));var path=require(_0x4f9c('0x2'));var timeout=require(_0x4f9c('0x3'));var express=require(_0x4f9c('0x4'));var router=express['Router']();var fs_extra=require(_0x4f9c('0x5'));var auth=require(_0x4f9c('0x6'));var interaction=require(_0x4f9c('0x7'));var config=require('../../config/environment');var controller=require(_0x4f9c('0x8'));router[_0x4f9c('0x9')]('/',auth[_0x4f9c('0xa')](),controller[_0x4f9c('0xb')]);router['get'](_0x4f9c('0xc'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0xd')]);router[_0x4f9c('0x9')](_0x4f9c('0xe'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0xf')]);router['get'](_0x4f9c('0x10'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x11')]);router[_0x4f9c('0x9')]('/:id/canned_answers',auth[_0x4f9c('0xa')](),controller['getAnswers']);router[_0x4f9c('0x9')]('/:id/in_servers',auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x12')]);router['get']('/:id/out_servers',auth[_0x4f9c('0xa')](),controller['getSmtp']);router[_0x4f9c('0x9')](_0x4f9c('0x13'),auth['isAuthenticated'](),controller['getInteractions']);router['get'](_0x4f9c('0x14'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x15')]);router['get']('/:id/messages',auth[_0x4f9c('0xa')](),controller['getMessages']);router[_0x4f9c('0x9')]('/:id/verify',auth['isAuthenticated'](),controller[_0x4f9c('0x16')]);router[_0x4f9c('0x9')]('/:id/users',auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x17')]);router['post'](_0x4f9c('0x10'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x18')]);router[_0x4f9c('0x19')](_0x4f9c('0x1a'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x1b')]);router[_0x4f9c('0x19')]('/',auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x1c')]);router['post'](_0x4f9c('0x1d'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x1e')]);router['post']('/:id/out_servers',auth[_0x4f9c('0xa')](),controller['addSmtp']);router['post'](_0x4f9c('0x13'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x1f')]);router[_0x4f9c('0x19')](_0x4f9c('0x14'),auth['isAuthenticated'](),controller['addApplications']);router['post'](_0x4f9c('0x20'),auth[_0x4f9c('0xa')](),controller['send']);router['post'](_0x4f9c('0x21'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x22')]);router[_0x4f9c('0x23')]('/:id',auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x24')]);router[_0x4f9c('0x25')]('/:id/dispositions',auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x26')]);router['delete'](_0x4f9c('0x1a'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x27')]);router[_0x4f9c('0x25')](_0x4f9c('0x1d'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x28')]);router[_0x4f9c('0x25')](_0x4f9c('0x29'),auth['isAuthenticated'](),controller[_0x4f9c('0x2a')]);router[_0x4f9c('0x25')]('/:id',auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x2b')]);router['delete'](_0x4f9c('0x21'),auth[_0x4f9c('0xa')](),controller[_0x4f9c('0x2c')]);module[_0x4f9c('0x2d')]=router;
\ No newline at end of file
+var _0x07f1=['./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','getDispositions','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getInteractions','getApplications','/:id/messages','getMessages','verifySmtp','/:id/users','addDisposition','post','addAnswer','create','addImap','addSmtp','addInteraction','/:id/applications','addApplications','send','addAgents','put','update','delete','/:id/canned_answers','removeImap','destroy','removeAgents','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x11e254,_0x4387aa){var _0x2e73e9=function(_0x4278f3){while(--_0x4278f3){_0x11e254['push'](_0x11e254['shift']());}};_0x2e73e9(++_0x4387aa);}(_0x07f1,0xaf));var _0x107f=function(_0x226af5,_0x299ba5){_0x226af5=_0x226af5-0x0;var _0x1ef295=_0x07f1[_0x226af5];return _0x1ef295;};'use strict';var multer=require(_0x107f('0x0'));var util=require(_0x107f('0x1'));var path=require(_0x107f('0x2'));var timeout=require('connect-timeout');var express=require(_0x107f('0x3'));var router=express[_0x107f('0x4')]();var fs_extra=require(_0x107f('0x5'));var auth=require(_0x107f('0x6'));var interaction=require(_0x107f('0x7'));var config=require(_0x107f('0x8'));var controller=require(_0x107f('0x9'));router[_0x107f('0xa')]('/',auth[_0x107f('0xb')](),controller[_0x107f('0xc')]);router[_0x107f('0xa')](_0x107f('0xd'),auth[_0x107f('0xb')](),controller[_0x107f('0xe')]);router[_0x107f('0xa')](_0x107f('0xf'),auth[_0x107f('0xb')](),controller['show']);router[_0x107f('0xa')](_0x107f('0x10'),auth[_0x107f('0xb')](),controller[_0x107f('0x11')]);router[_0x107f('0xa')]('/:id/canned_answers',auth[_0x107f('0xb')](),controller[_0x107f('0x12')]);router[_0x107f('0xa')](_0x107f('0x13'),auth[_0x107f('0xb')](),controller[_0x107f('0x14')]);router[_0x107f('0xa')](_0x107f('0x15'),auth['isAuthenticated'](),controller['getSmtp']);router[_0x107f('0xa')]('/:id/interactions',auth[_0x107f('0xb')](),controller[_0x107f('0x16')]);router['get']('/:id/applications',auth['isAuthenticated'](),controller[_0x107f('0x17')]);router['get'](_0x107f('0x18'),auth[_0x107f('0xb')](),controller[_0x107f('0x19')]);router['get']('/:id/verify',auth['isAuthenticated'](),controller[_0x107f('0x1a')]);router[_0x107f('0xa')](_0x107f('0x1b'),auth[_0x107f('0xb')](),controller['getAgents']);router['post']('/:id/dispositions',auth[_0x107f('0xb')](),controller[_0x107f('0x1c')]);router[_0x107f('0x1d')]('/:id/canned_answers',auth[_0x107f('0xb')](),controller[_0x107f('0x1e')]);router[_0x107f('0x1d')]('/',auth[_0x107f('0xb')](),controller[_0x107f('0x1f')]);router[_0x107f('0x1d')](_0x107f('0x13'),auth['isAuthenticated'](),controller[_0x107f('0x20')]);router[_0x107f('0x1d')](_0x107f('0x15'),auth['isAuthenticated'](),controller[_0x107f('0x21')]);router[_0x107f('0x1d')]('/:id/interactions',auth[_0x107f('0xb')](),controller[_0x107f('0x22')]);router['post'](_0x107f('0x23'),auth['isAuthenticated'](),controller[_0x107f('0x24')]);router[_0x107f('0x1d')]('/:id/send',auth['isAuthenticated'](),controller[_0x107f('0x25')]);router['post'](_0x107f('0x1b'),auth[_0x107f('0xb')](),controller[_0x107f('0x26')]);router[_0x107f('0x27')](_0x107f('0xf'),auth[_0x107f('0xb')](),controller[_0x107f('0x28')]);router[_0x107f('0x29')](_0x107f('0x10'),auth[_0x107f('0xb')](),controller['removeDispositions']);router[_0x107f('0x29')](_0x107f('0x2a'),auth[_0x107f('0xb')](),controller['removeAnswers']);router['delete'](_0x107f('0x13'),auth[_0x107f('0xb')](),controller[_0x107f('0x2b')]);router[_0x107f('0x29')](_0x107f('0x15'),auth[_0x107f('0xb')](),controller['removeSmtp']);router[_0x107f('0x29')](_0x107f('0xf'),auth[_0x107f('0xb')](),controller[_0x107f('0x2c')]);router[_0x107f('0x29')](_0x107f('0x1b'),auth[_0x107f('0xb')](),controller[_0x107f('0x2d')]);module['exports']=router;
\ No newline at end of file
index 8626a92..cfc55f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff2a=['INTEGER','UNSIGNED','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','exports','STRING','BOOLEAN'];(function(_0x59d0cc,_0xa7c52b){var _0x2ae79f=function(_0x33042e){while(--_0x33042e){_0x59d0cc['push'](_0x59d0cc['shift']());}};_0x2ae79f(++_0xa7c52b);}(_0xff2a,0x93));var _0xaff2=function(_0x3cf5c7,_0x1eb319){_0x3cf5c7=_0x3cf5c7-0x0;var _0xf3d981=_0xff2a[_0x3cf5c7];return _0xf3d981;};'use strict';var Sequelize=require('sequelize');module[_0xaff2('0x0')]={'description':{'type':Sequelize[_0xaff2('0x1')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0xaff2('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0xaff2('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0xaff2('0x1')],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize[_0xaff2('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xaff2('0x1')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0xaff2('0x3')](0x2)[_0xaff2('0x4')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xaff2('0x5')],'defaultValue':function(){return _0xaff2('0x6');}},'notificationSound':{'type':Sequelize[_0xaff2('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xaff2('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xaff2('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xaff2('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xaff2('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xaff2('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xaff2('0x3')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xaff2('0x7'),'set':function(_0x4447e1){if(!_0x4447e1)this[_0xaff2('0x8')](_0xaff2('0x9'),null);this[_0xaff2('0x8')]('mandatoryDisposition',_0x4447e1);}}};
\ No newline at end of file
+var _0xd6d2=['exports','STRING','BOOLEAN','TEXT','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','mandatoryDisposition','sequelize'];(function(_0x1716ee,_0x4233a4){var _0xded661=function(_0x1b7197){while(--_0x1b7197){_0x1716ee['push'](_0x1716ee['shift']());}};_0xded661(++_0x4233a4);}(_0xd6d2,0xcb));var _0x2d6d=function(_0x214159,_0x654444){_0x214159=_0x214159-0x0;var _0x384963=_0xd6d2[_0x214159];return _0x384963;};'use strict';var Sequelize=require(_0x2d6d('0x0'));module[_0x2d6d('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x2d6d('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0x2d6d('0x4')]},'markAsUnread':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x2d6d('0x2')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0x2d6d('0x5')](0x2)[_0x2d6d('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x2d6d('0x4')],'defaultValue':function(){return _0x2d6d('0x7');}},'notificationSound':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2d6d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2d6d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2d6d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x2d6d('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x2d6d('0x3')],'defaultValue':![],'comment':_0x2d6d('0x9'),'set':function(_0x3cc2fa){if(!_0x3cc2fa)this[_0x2d6d('0xa')]('mandatoryDispositionPauseId',null);this[_0x2d6d('0xa')](_0x2d6d('0xb'),_0x3cc2fa);}}};
\ No newline at end of file
index 4bdcbd2..e63038a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c6c=['Imap','mandatoryDispositionPause','intersection','find','body','describe','addDisposition','MailAccountId','Disposition','create','findOne','removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','email','ListId','isNil','active','description','cservice','cauthentication','user','cuser','cpassword','authentication','host','port','service','pass','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','addSmtp','addInteraction','MailInteraction','omit','getInteractions','nolimit','CmContact','Contact','User','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','MailApplication','bulkCreate','findAndCountAll','priority','stack','finally','send','getApplications','getMessages','MailMessage','$gte','YYYY-MM-DD\x20HH:mm:ss','inlineCss','CmList','List','Contacts','updatedAt','DESC','from','format','%s\x20<%s>','attachments','join','root','basename','secure','auth','SendMail','sendMail','List\x20not\x20found','messageId','attach','out','Interaction','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','spread','emit','removeAgents','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','html-to-text','juice','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./mailAccount.socket','client','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','get','MailAccounts','UserProfileResource','destroy','name','index','MailServerIn','MailServerOut','Smtp','Pause','map','MailAccount','rawAttributes','fieldName','type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params'];(function(_0xcd1b6,_0x558e97){var _0x52203f=function(_0x10c576){while(--_0x10c576){_0xcd1b6['push'](_0xcd1b6['shift']());}};_0x52203f(++_0x558e97);}(_0x3c6c,0x1f4));var _0xc3c6=function(_0x5fab11,_0x2285e4){_0x5fab11=_0x5fab11-0x0;var _0x48b21e=_0x3c6c[_0x5fab11];return _0x48b21e;};'use strict';var emlformat=require(_0xc3c6('0x0'));var rimraf=require(_0xc3c6('0x1'));var zipdir=require(_0xc3c6('0x2'));var jsonpatch=require(_0xc3c6('0x3'));var rp=require(_0xc3c6('0x4'));var moment=require(_0xc3c6('0x5'));var BPromise=require(_0xc3c6('0x6'));var Mustache=require(_0xc3c6('0x7'));var util=require(_0xc3c6('0x8'));var path=require(_0xc3c6('0x9'));var sox=require(_0xc3c6('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc3c6('0xb'));var squel=require(_0xc3c6('0xc'));var crypto=require(_0xc3c6('0xd'));var jsforce=require(_0xc3c6('0xe'));var deskjs=require(_0xc3c6('0xf'));var toCsv=require(_0xc3c6('0x10'));var querystring=require('querystring');var Papa=require(_0xc3c6('0x11'));var htmlToText=require(_0xc3c6('0x12'));var juice=require(_0xc3c6('0x13'));var Redis=require(_0xc3c6('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xc3c6('0x15'));var as=require(_0xc3c6('0x16'));var hardwareService=require(_0xc3c6('0x17'));var logger=require(_0xc3c6('0x18'))('api');var utils=require('../../config/utils');var config=require(_0xc3c6('0x19'));var licenseUtil=require(_0xc3c6('0x1a'));var db=require(_0xc3c6('0x1b'))['db'];config['redis']=_[_0xc3c6('0x1c')](config[_0xc3c6('0x1d')],{'host':_0xc3c6('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc3c6('0x1d')]));require(_0xc3c6('0x1f'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xc3c6('0x20')][_0xc3c6('0x21')]({'port':0x232b});function respondWithRpcPromise(_0x5ea85f,_0x27fdaf,_0x4c56da,_0x3dc1bd){return new BPromise(function(_0x141d37,_0x192a40){var _0x310d8b=_0x3dc1bd||client;return _0x310d8b[_0xc3c6('0x22')](_0x5ea85f,_0x4c56da)[_0xc3c6('0x23')](function(_0x3b0360){logger[_0xc3c6('0x24')](_0xc3c6('0x25'),_0x27fdaf,_0xc3c6('0x26'));logger[_0xc3c6('0x27')](_0xc3c6('0x28'),_0x27fdaf,_0xc3c6('0x26'),JSON[_0xc3c6('0x29')](_0x3b0360));if(_0x3b0360[_0xc3c6('0x2a')]){if(_0x3b0360[_0xc3c6('0x2a')]['code']===0x1f4){logger[_0xc3c6('0x2a')](_0xc3c6('0x25'),_0x27fdaf,_0x3b0360[_0xc3c6('0x2a')][_0xc3c6('0x2b')]);return _0x192a40(_0x3b0360[_0xc3c6('0x2a')]['message']);}logger[_0xc3c6('0x2a')](_0xc3c6('0x25'),_0x27fdaf,_0x3b0360[_0xc3c6('0x2a')]['message']);return _0x141d37(_0x3b0360[_0xc3c6('0x2a')][_0xc3c6('0x2b')]);}else{logger[_0xc3c6('0x24')](_0xc3c6('0x25'),_0x27fdaf,'request\x20sent');_0x141d37(_0x3b0360[_0xc3c6('0x2c')][_0xc3c6('0x2b')]);}})['catch'](function(_0x1693f4){logger[_0xc3c6('0x2a')](_0xc3c6('0x25'),_0x27fdaf,_0x1693f4);_0x192a40(_0x1693f4);});});}function respondWithStatusCode(_0x8fb5ad,_0x416648){_0x416648=_0x416648||0xcc;return function(_0xeffcec){if(_0xeffcec){return _0x8fb5ad[_0xc3c6('0x2d')](_0x416648);}return _0x8fb5ad['status'](_0x416648)[_0xc3c6('0x2e')]();};}function respondWithResult(_0x12d21b,_0x569a77){_0x569a77=_0x569a77||0xc8;return function(_0x1318c6){if(_0x1318c6){return _0x12d21b['status'](_0x569a77)[_0xc3c6('0x2f')](_0x1318c6);}};}function respondWithFilteredResult(_0x3b9b15,_0x3cf9d8){return function(_0x15c062){if(_0x15c062){var _0xceb94e=typeof _0x3cf9d8[_0xc3c6('0x30')]===_0xc3c6('0x31')&&typeof _0x3cf9d8[_0xc3c6('0x32')]===_0xc3c6('0x31');var _0x5ce3a9=_0x15c062[_0xc3c6('0x33')];var _0x45207e=_0xceb94e?0x0:_0x3cf9d8['offset'];var _0x2a4e62=_0xceb94e?_0x15c062[_0xc3c6('0x33')]:_0x3cf9d8[_0xc3c6('0x30')]+_0x3cf9d8[_0xc3c6('0x32')];var _0x326cfa;if(_0x2a4e62>=_0x5ce3a9){_0x2a4e62=_0x5ce3a9;_0x326cfa=0xc8;}else{_0x326cfa=0xce;}_0x3b9b15[_0xc3c6('0x34')](_0x326cfa);return _0x3b9b15[_0xc3c6('0x35')](_0xc3c6('0x36'),_0x45207e+'-'+_0x2a4e62+'/'+_0x5ce3a9)[_0xc3c6('0x2f')](_0x15c062);}return null;};}function patchUpdates(_0x3cb127){return function(_0x59e3fc){try{jsonpatch[_0xc3c6('0x37')](_0x59e3fc,_0x3cb127,!![]);}catch(_0x3cf076){return BPromise[_0xc3c6('0x38')](_0x3cf076);}return _0x59e3fc[_0xc3c6('0x39')]();};}function saveUpdates(_0x2a90dd,_0x46d85d){return function(_0x38eb40){if(_0x38eb40){return _0x38eb40[_0xc3c6('0x3a')](_0x2a90dd)[_0xc3c6('0x23')](function(_0x5cd6ef){return _0x5cd6ef;});}return null;};}function removeEntity(_0x1297da,_0xeed5){return function(_0x5aa002){if(_0x5aa002){return _0x5aa002['destroy']()[_0xc3c6('0x23')](function(){var _0x494b5c=_0x5aa002[_0xc3c6('0x3b')]({'plain':!![]});var _0x15df54=_0xc3c6('0x3c');return db[_0xc3c6('0x3d')][_0xc3c6('0x3e')]({'where':{'type':_0x15df54,'resourceId':_0x494b5c['id']}})[_0xc3c6('0x23')](function(){return _0x5aa002;});})[_0xc3c6('0x23')](function(){_0x1297da[_0xc3c6('0x34')](0xcc)[_0xc3c6('0x2e')]();});}};}function handleEntityNotFound(_0x904c99,_0x449f0f){return function(_0x162f42){if(!_0x162f42){_0x904c99[_0xc3c6('0x2d')](0x194);}return _0x162f42;};}function handleError(_0xb16999,_0x4a8670){_0x4a8670=_0x4a8670||0x1f4;return function(_0x25cf7b){logger[_0xc3c6('0x2a')](_0x25cf7b['stack']);if(_0x25cf7b[_0xc3c6('0x3f')]){delete _0x25cf7b[_0xc3c6('0x3f')];}_0xb16999['status'](_0x4a8670)['send'](_0x25cf7b);};}exports[_0xc3c6('0x40')]=function(_0x268fbd,_0x55b50a){var _0x34cdce={'include':[{'model':db[_0xc3c6('0x41')],'as':'Imap'},{'model':db[_0xc3c6('0x42')],'as':_0xc3c6('0x43')},{'model':db[_0xc3c6('0x44')],'as':'mandatoryDispositionPause'}]},_0x40fbe2={},_0x7d0b5e={'count':0x0,'rows':[]};var _0x3aa58e=_[_0xc3c6('0x45')](db[_0xc3c6('0x46')][_0xc3c6('0x47')],function(_0x276513){return{'name':_0x276513[_0xc3c6('0x48')],'type':_0x276513[_0xc3c6('0x49')]['key']};});_0x40fbe2[_0xc3c6('0x4a')]=_[_0xc3c6('0x45')](_0x3aa58e,_0xc3c6('0x3f'));_0x40fbe2[_0xc3c6('0x4b')]=_[_0xc3c6('0x4c')](_0x268fbd[_0xc3c6('0x4b')]);_0x40fbe2[_0xc3c6('0x4d')]=_['intersection'](_0x40fbe2[_0xc3c6('0x4a')],_0x40fbe2[_0xc3c6('0x4b')]);_0x34cdce[_0xc3c6('0x4e')]=_['intersection'](_0x40fbe2[_0xc3c6('0x4a')],qs[_0xc3c6('0x4f')](_0x268fbd[_0xc3c6('0x4b')]['fields']));_0x34cdce[_0xc3c6('0x4e')]=_0x34cdce['attributes'][_0xc3c6('0x50')]?_0x34cdce['attributes']:_0x40fbe2[_0xc3c6('0x4a')];if(!_0x268fbd['query'][_0xc3c6('0x51')]('nolimit')){_0x34cdce[_0xc3c6('0x32')]=qs[_0xc3c6('0x32')](_0x268fbd[_0xc3c6('0x4b')][_0xc3c6('0x32')]);_0x34cdce['offset']=qs[_0xc3c6('0x30')](_0x268fbd[_0xc3c6('0x4b')][_0xc3c6('0x30')]);}_0x34cdce[_0xc3c6('0x52')]=qs[_0xc3c6('0x53')](_0x268fbd[_0xc3c6('0x4b')][_0xc3c6('0x53')]);_0x34cdce['where']=qs[_0xc3c6('0x4d')](_[_0xc3c6('0x54')](_0x268fbd[_0xc3c6('0x4b')],_0x40fbe2[_0xc3c6('0x4d')]),_0x3aa58e);if(_0x268fbd[_0xc3c6('0x4b')][_0xc3c6('0x55')]){_0x34cdce[_0xc3c6('0x56')]=_[_0xc3c6('0x57')](_0x34cdce[_0xc3c6('0x56')],{'$or':_['map'](_0x3aa58e,function(_0x12b76a){if(_0x12b76a[_0xc3c6('0x49')]!==_0xc3c6('0x58')){var _0x2b4312={};_0x2b4312[_0x12b76a['name']]={'$like':'%'+_0x268fbd[_0xc3c6('0x4b')][_0xc3c6('0x55')]+'%'};return _0x2b4312;}})});}_0x34cdce=_[_0xc3c6('0x57')]({},_0x34cdce,_0x268fbd[_0xc3c6('0x59')]);var _0xf5b68c={'where':_0x34cdce[_0xc3c6('0x56')]};return db[_0xc3c6('0x46')][_0xc3c6('0x33')](_0xf5b68c)[_0xc3c6('0x23')](function(_0x25e5d6){_0x7d0b5e['count']=_0x25e5d6;if(_0x268fbd[_0xc3c6('0x4b')][_0xc3c6('0x5a')]){_0x34cdce[_0xc3c6('0x5b')]=[{'all':!![]}];}return db['MailAccount'][_0xc3c6('0x5c')](_0x34cdce);})[_0xc3c6('0x23')](function(_0x4e172a){_0x7d0b5e[_0xc3c6('0x5d')]=_0x4e172a;return _0x7d0b5e;})[_0xc3c6('0x23')](respondWithFilteredResult(_0x55b50a,_0x34cdce))[_0xc3c6('0x5e')](handleError(_0x55b50a,null));};exports[_0xc3c6('0x5f')]=function(_0xc777d2,_0x34ea90){var _0xa71250={'raw':![],'where':{'id':_0xc777d2[_0xc3c6('0x60')]['id']},'include':[{'model':db[_0xc3c6('0x41')],'as':_0xc3c6('0x61')},{'model':db['MailServerOut'],'as':_0xc3c6('0x43')},{'model':db[_0xc3c6('0x44')],'as':_0xc3c6('0x62')}]},_0xe9521b={};_0xe9521b[_0xc3c6('0x4a')]=_[_0xc3c6('0x4c')](db[_0xc3c6('0x46')][_0xc3c6('0x47')]);_0xe9521b[_0xc3c6('0x4b')]=_[_0xc3c6('0x4c')](_0xc777d2[_0xc3c6('0x4b')]);_0xe9521b[_0xc3c6('0x4d')]=_[_0xc3c6('0x63')](_0xe9521b[_0xc3c6('0x4a')],_0xe9521b[_0xc3c6('0x4b')]);_0xa71250[_0xc3c6('0x4e')]=_[_0xc3c6('0x63')](_0xe9521b['model'],qs['fields'](_0xc777d2[_0xc3c6('0x4b')]['fields']));_0xa71250[_0xc3c6('0x4e')]=_0xa71250[_0xc3c6('0x4e')][_0xc3c6('0x50')]?_0xa71250[_0xc3c6('0x4e')]:_0xe9521b[_0xc3c6('0x4a')];if(_0xc777d2[_0xc3c6('0x4b')]['includeAll']){_0xa71250[_0xc3c6('0x5b')]=[{'all':!![]}];}_0xa71250=_[_0xc3c6('0x57')]({},_0xa71250,_0xc777d2[_0xc3c6('0x59')]);return db['MailAccount'][_0xc3c6('0x64')](_0xa71250)[_0xc3c6('0x23')](handleEntityNotFound(_0x34ea90,null))['then'](respondWithResult(_0x34ea90,null))[_0xc3c6('0x5e')](handleError(_0x34ea90,null));};exports[_0xc3c6('0x3a')]=function(_0x56a112,_0x4ef4e9){if(_0x56a112['body']['id']){delete _0x56a112[_0xc3c6('0x65')]['id'];}return db['MailAccount'][_0xc3c6('0x64')]({'where':{'id':_0x56a112[_0xc3c6('0x60')]['id']},'include':[{'model':db[_0xc3c6('0x41')],'as':'Imap'},{'model':db[_0xc3c6('0x42')],'as':_0xc3c6('0x43')},{'model':db[_0xc3c6('0x44')],'as':_0xc3c6('0x62')}]})[_0xc3c6('0x23')](handleEntityNotFound(_0x4ef4e9,null))[_0xc3c6('0x23')](saveUpdates(_0x56a112[_0xc3c6('0x65')],null))[_0xc3c6('0x23')](function(_0x157b62){if(_0x157b62&&_0x56a112[_0xc3c6('0x65')]['Imap']){return db[_0xc3c6('0x41')]['update'](_0x56a112['body'][_0xc3c6('0x61')],{'where':{'MailAccountId':_0x157b62['id']}})[_0xc3c6('0x23')](function(){return _0x157b62;});}return _0x157b62;})['then'](function(_0x390650){if(_0x390650&&_0x56a112[_0xc3c6('0x65')][_0xc3c6('0x43')]){return db[_0xc3c6('0x42')][_0xc3c6('0x3a')](_0x56a112[_0xc3c6('0x65')][_0xc3c6('0x43')],{'where':{'MailAccountId':_0x390650['id']}})[_0xc3c6('0x23')](function(){return _0x390650;});}return _0x390650;})[_0xc3c6('0x23')](respondWithResult(_0x4ef4e9,null))[_0xc3c6('0x5e')](handleError(_0x4ef4e9,null));};exports[_0xc3c6('0x66')]=function(_0x5519ae,_0x1d2a70){return db['MailAccount'][_0xc3c6('0x66')]()[_0xc3c6('0x23')](respondWithResult(_0x1d2a70,null))[_0xc3c6('0x5e')](handleError(_0x1d2a70,null));};exports[_0xc3c6('0x67')]=function(_0x4eaa45,_0x2916e1,_0x48e6b9){if(_0x4eaa45[_0xc3c6('0x65')]['id']){delete _0x4eaa45[_0xc3c6('0x65')]['id'];}return db['MailAccount'][_0xc3c6('0x64')]({'where':{'id':_0x4eaa45[_0xc3c6('0x60')]['id']}})['then'](handleEntityNotFound(_0x2916e1,null))[_0xc3c6('0x23')](function(_0x3cf701){if(_0x3cf701){_0x4eaa45['body'][_0xc3c6('0x68')]=_0x3cf701['id'];return db[_0xc3c6('0x69')][_0xc3c6('0x6a')](_0x4eaa45[_0xc3c6('0x65')]);}})['then'](respondWithResult(_0x2916e1,null))[_0xc3c6('0x5e')](handleError(_0x2916e1,null));};exports['getDispositions']=function(_0x1ea9ba,_0x1b1990,_0x1046ad){var _0x1bdcfc={'raw':![],'where':{}};var _0x288e1f={};var _0x4214e0={'count':0x0,'rows':[]};return db['MailAccount'][_0xc3c6('0x6b')]({'where':{'id':_0x1ea9ba[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x1b1990,null))[_0xc3c6('0x23')](function(_0x5c8b5f){if(_0x5c8b5f){_0x288e1f[_0xc3c6('0x4a')]=_['keys'](db[_0xc3c6('0x69')]['rawAttributes']);_0x288e1f['query']=_['keys'](_0x1ea9ba['query']);_0x288e1f[_0xc3c6('0x4d')]=_['intersection'](_0x288e1f['model'],_0x288e1f[_0xc3c6('0x4b')]);_0x1bdcfc[_0xc3c6('0x4e')]=_[_0xc3c6('0x63')](_0x288e1f[_0xc3c6('0x4a')],qs[_0xc3c6('0x4f')](_0x1ea9ba['query']['fields']));_0x1bdcfc['attributes']=_0x1bdcfc[_0xc3c6('0x4e')][_0xc3c6('0x50')]?_0x1bdcfc['attributes']:_0x288e1f[_0xc3c6('0x4a')];if(!_0x1ea9ba[_0xc3c6('0x4b')]['hasOwnProperty']('nolimit')){_0x1bdcfc[_0xc3c6('0x32')]=qs[_0xc3c6('0x32')](_0x1ea9ba[_0xc3c6('0x4b')]['limit']);_0x1bdcfc[_0xc3c6('0x30')]=qs[_0xc3c6('0x30')](_0x1ea9ba[_0xc3c6('0x4b')]['offset']);}_0x1bdcfc['order']=qs[_0xc3c6('0x53')](_0x1ea9ba[_0xc3c6('0x4b')][_0xc3c6('0x53')]);_0x1bdcfc[_0xc3c6('0x56')]=qs[_0xc3c6('0x4d')](_[_0xc3c6('0x54')](_0x1ea9ba[_0xc3c6('0x4b')],_0x288e1f[_0xc3c6('0x4d')]));_0x1bdcfc['where'][_0xc3c6('0x68')]=_0x5c8b5f['id'];if(_0x1ea9ba['query'][_0xc3c6('0x55')]){_0x1bdcfc[_0xc3c6('0x56')]=_[_0xc3c6('0x57')](_0x1bdcfc['where'],{'$or':_['map'](_0x1bdcfc['attributes'],function(_0x1e14fd){var _0x43a06b={};_0x43a06b[_0x1e14fd]={'$like':'%'+_0x1ea9ba['query'][_0xc3c6('0x55')]+'%'};return _0x43a06b;})});}_0x1bdcfc=_['merge']({},_0x1bdcfc,_0x1ea9ba[_0xc3c6('0x59')]);return db[_0xc3c6('0x69')][_0xc3c6('0x33')]({'where':_0x1bdcfc[_0xc3c6('0x56')]})[_0xc3c6('0x23')](function(_0x34ea35){_0x4214e0[_0xc3c6('0x33')]=_0x34ea35;if(_0x1ea9ba[_0xc3c6('0x4b')][_0xc3c6('0x5a')]){_0x1bdcfc['include']=[{'all':!![]}];}return db[_0xc3c6('0x69')][_0xc3c6('0x5c')](_0x1bdcfc);})[_0xc3c6('0x23')](function(_0x2f7e70){_0x4214e0[_0xc3c6('0x5d')]=_0x2f7e70;return _0x4214e0;});}})[_0xc3c6('0x23')](respondWithFilteredResult(_0x1b1990,_0x1bdcfc))[_0xc3c6('0x5e')](handleError(_0x1b1990,null));};exports['removeDispositions']=function(_0xc14be7,_0xd2428f,_0x553f60){return db['MailAccount'][_0xc3c6('0x64')]({'where':{'id':_0xc14be7[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0xd2428f,null))[_0xc3c6('0x23')](function(_0x49094b){if(_0x49094b){return _0x49094b[_0xc3c6('0x6c')](_0xc14be7[_0xc3c6('0x4b')]['ids']);}})[_0xc3c6('0x23')](respondWithStatusCode(_0xd2428f,null))[_0xc3c6('0x5e')](handleError(_0xd2428f,null));};exports[_0xc3c6('0x6d')]=function(_0x4dd530,_0x578d4b,_0x380af1){if(_0x4dd530[_0xc3c6('0x65')]['id']){delete _0x4dd530[_0xc3c6('0x65')]['id'];}return db[_0xc3c6('0x46')]['find']({'where':{'id':_0x4dd530[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x578d4b,null))[_0xc3c6('0x23')](function(_0x4a1ff8){if(_0x4a1ff8){_0x4dd530[_0xc3c6('0x65')]['MailAccountId']=_0x4a1ff8['id'];return db[_0xc3c6('0x6e')][_0xc3c6('0x6a')](_0x4dd530[_0xc3c6('0x65')]);}})[_0xc3c6('0x23')](respondWithResult(_0x578d4b,null))['catch'](handleError(_0x578d4b,null));};exports['getAnswers']=function(_0x1f985f,_0x3b0e3b,_0x28028e){var _0x102440={'raw':![],'where':{}};var _0x53bed8={};var _0x1391cf={'count':0x0,'rows':[]};return db[_0xc3c6('0x46')][_0xc3c6('0x6b')]({'where':{'id':_0x1f985f[_0xc3c6('0x60')]['id']}})['then'](handleEntityNotFound(_0x3b0e3b,null))['then'](function(_0x310e43){if(_0x310e43){_0x53bed8[_0xc3c6('0x4a')]=_['keys'](db[_0xc3c6('0x6e')][_0xc3c6('0x47')]);_0x53bed8[_0xc3c6('0x4b')]=_['keys'](_0x1f985f[_0xc3c6('0x4b')]);_0x53bed8[_0xc3c6('0x4d')]=_['intersection'](_0x53bed8[_0xc3c6('0x4a')],_0x53bed8[_0xc3c6('0x4b')]);_0x102440[_0xc3c6('0x4e')]=_['intersection'](_0x53bed8[_0xc3c6('0x4a')],qs['fields'](_0x1f985f[_0xc3c6('0x4b')]['fields']));_0x102440[_0xc3c6('0x4e')]=_0x102440[_0xc3c6('0x4e')]['length']?_0x102440['attributes']:_0x53bed8['model'];if(!_0x1f985f['query'][_0xc3c6('0x51')]('nolimit')){_0x102440['limit']=qs[_0xc3c6('0x32')](_0x1f985f[_0xc3c6('0x4b')][_0xc3c6('0x32')]);_0x102440['offset']=qs[_0xc3c6('0x30')](_0x1f985f[_0xc3c6('0x4b')][_0xc3c6('0x30')]);}_0x102440[_0xc3c6('0x52')]=qs[_0xc3c6('0x53')](_0x1f985f['query'][_0xc3c6('0x53')]);_0x102440[_0xc3c6('0x56')]=qs[_0xc3c6('0x4d')](_['pick'](_0x1f985f[_0xc3c6('0x4b')],_0x53bed8['filters']));_0x102440[_0xc3c6('0x56')]['MailAccountId']=_0x310e43['id'];if(_0x1f985f[_0xc3c6('0x4b')][_0xc3c6('0x55')]){_0x102440[_0xc3c6('0x56')]=_[_0xc3c6('0x57')](_0x102440['where'],{'$or':_[_0xc3c6('0x45')](_0x102440['attributes'],function(_0x4c5a17){var _0xc09e36={};_0xc09e36[_0x4c5a17]={'$like':'%'+_0x1f985f[_0xc3c6('0x4b')][_0xc3c6('0x55')]+'%'};return _0xc09e36;})});}_0x102440=_[_0xc3c6('0x57')]({},_0x102440,_0x1f985f['options']);return db[_0xc3c6('0x6e')][_0xc3c6('0x33')]({'where':_0x102440[_0xc3c6('0x56')]})[_0xc3c6('0x23')](function(_0x4c960c){_0x1391cf[_0xc3c6('0x33')]=_0x4c960c;if(_0x1f985f['query'][_0xc3c6('0x5a')]){_0x102440[_0xc3c6('0x5b')]=[{'all':!![]}];}return db[_0xc3c6('0x6e')][_0xc3c6('0x5c')](_0x102440);})[_0xc3c6('0x23')](function(_0x1b2b59){_0x1391cf[_0xc3c6('0x5d')]=_0x1b2b59;return _0x1391cf;});}})[_0xc3c6('0x23')](respondWithFilteredResult(_0x3b0e3b,_0x102440))['catch'](handleError(_0x3b0e3b,null));};exports['removeAnswers']=function(_0x1d3312,_0x2a4aac,_0x233323){return db['MailAccount'][_0xc3c6('0x64')]({'where':{'id':_0x1d3312[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x2a4aac,null))[_0xc3c6('0x23')](function(_0x255f80){if(_0x255f80){return _0x255f80[_0xc3c6('0x6f')](_0x1d3312[_0xc3c6('0x4b')][_0xc3c6('0x70')]);}})['then'](respondWithStatusCode(_0x2a4aac,null))['catch'](handleError(_0x2a4aac,null));};exports['create']=function(_0x4d22c8,_0x29893d){var _0x44fc36={'name':_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x3f')],'key':_0x4d22c8['body']['key'],'email':_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x71')],'ListId':_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x72')],'active':!_[_0xc3c6('0x73')](_0x4d22c8['body'][_0xc3c6('0x74')])?_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x74')]:!![],'description':_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x75')]||null,'Imap':{},'Smtp':{}};if(_['isNil'](_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x76')])){if(_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x77')]){_0x44fc36['Imap']['user']=_0x44fc36[_0xc3c6('0x43')][_0xc3c6('0x78')]=_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x79')];_0x44fc36[_0xc3c6('0x61')]['password']=_0x44fc36['Smtp']['pass']=_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x7a')];}else{_0x44fc36[_0xc3c6('0x61')][_0xc3c6('0x7b')]=_0x44fc36[_0xc3c6('0x43')][_0xc3c6('0x7b')]=![];}_0x44fc36[_0xc3c6('0x61')][_0xc3c6('0x7c')]=_0x4d22c8[_0xc3c6('0x65')]['Imap']['host'];_0x44fc36[_0xc3c6('0x61')]['port']=_0x4d22c8[_0xc3c6('0x65')]['Imap'][_0xc3c6('0x7d')];_0x44fc36[_0xc3c6('0x43')][_0xc3c6('0x7c')]=_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x43')][_0xc3c6('0x7c')];_0x44fc36[_0xc3c6('0x43')][_0xc3c6('0x7d')]=_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x43')][_0xc3c6('0x7d')];}else{_0x44fc36['Imap'][_0xc3c6('0x7e')]=_0x44fc36['Smtp'][_0xc3c6('0x7e')]=_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x76')];_0x44fc36[_0xc3c6('0x61')][_0xc3c6('0x78')]=_0x44fc36[_0xc3c6('0x43')][_0xc3c6('0x78')]=_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x79')];_0x44fc36['Imap']['password']=_0x44fc36['Smtp'][_0xc3c6('0x7f')]=_0x4d22c8[_0xc3c6('0x65')][_0xc3c6('0x7a')];}return db[_0xc3c6('0x46')][_0xc3c6('0x6a')](_0x44fc36,{'include':[{'model':db[_0xc3c6('0x42')],'as':'Smtp'},{'model':db[_0xc3c6('0x41')],'as':_0xc3c6('0x61')}]})[_0xc3c6('0x23')](function(_0x3a0acc){var _0x37b5cc=_0x4d22c8['user'][_0xc3c6('0x3b')]({'plain':!![]});if(!_0x37b5cc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x37b5cc[_0xc3c6('0x80')]==='user'){var _0x4f581f=_0x3a0acc[_0xc3c6('0x3b')]({'plain':!![]});return db[_0xc3c6('0x81')]['find']({'where':{'name':'MailAccounts','userProfileId':_0x37b5cc[_0xc3c6('0x82')]},'raw':!![]})[_0xc3c6('0x23')](function(_0x171042){if(_0x171042&&_0x171042[_0xc3c6('0x83')]===0x0){return db[_0xc3c6('0x3d')][_0xc3c6('0x6a')]({'name':_0x4f581f[_0xc3c6('0x3f')],'resourceId':_0x4f581f['id'],'type':_0x171042[_0xc3c6('0x3f')],'sectionId':_0x171042['id']},{})[_0xc3c6('0x23')](function(){return _0x3a0acc;});}else{return _0x3a0acc;}})[_0xc3c6('0x5e')](function(_0xc310b8){logger[_0xc3c6('0x2a')](_0xc3c6('0x84'),_0xc310b8);throw _0xc310b8;});}return _0x3a0acc;})[_0xc3c6('0x23')](respondWithResult(_0x29893d,0xc9))[_0xc3c6('0x5e')](handleError(_0x29893d,null));};exports[_0xc3c6('0x85')]=function(_0x3c2016,_0x120bcf,_0x3e94a3){return db[_0xc3c6('0x46')][_0xc3c6('0x6b')]({'where':{'id':_0x3c2016[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x120bcf,null))[_0xc3c6('0x23')](function(_0x3158c7){if(_0x3158c7){return _0x3158c7[_0xc3c6('0x85')]();}return null;})['then'](respondWithResult(_0x120bcf,null))[_0xc3c6('0x5e')](handleError(_0x120bcf,null));};exports[_0xc3c6('0x86')]=function(_0x52d1df,_0x103821,_0x366675){if(_0x52d1df[_0xc3c6('0x65')]['id']){delete _0x52d1df[_0xc3c6('0x65')]['id'];}return db[_0xc3c6('0x46')][_0xc3c6('0x64')]({'where':{'id':_0x52d1df['params']['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x103821,null))[_0xc3c6('0x23')](function(_0x42b4a5){if(_0x42b4a5){_0x52d1df[_0xc3c6('0x65')][_0xc3c6('0x68')]=_0x42b4a5['id'];return db[_0xc3c6('0x41')]['create'](_0x52d1df[_0xc3c6('0x65')]);}})[_0xc3c6('0x23')](respondWithResult(_0x103821,null))[_0xc3c6('0x5e')](handleError(_0x103821,null));};exports[_0xc3c6('0x87')]=function(_0x1ae111,_0x57b2d8,_0xe1e708){return db[_0xc3c6('0x46')][_0xc3c6('0x6b')]({'where':{'id':_0x1ae111[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x57b2d8,null))[_0xc3c6('0x23')](function(_0x3fa7dd){if(_0x3fa7dd){return _0x3fa7dd['setImap'](null);}return null;})[_0xc3c6('0x23')](respondWithStatusCode(_0x57b2d8,null))[_0xc3c6('0x5e')](handleError(_0x57b2d8,null));};exports['getSmtp']=function(_0x144357,_0x2e5df7,_0x23afba){return db['MailAccount']['findOne']({'where':{'id':_0x144357[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x2e5df7,null))[_0xc3c6('0x23')](function(_0x3728fe){if(_0x3728fe){return _0x3728fe['getSmtp']();}return null;})[_0xc3c6('0x23')](respondWithResult(_0x2e5df7,null))[_0xc3c6('0x5e')](handleError(_0x2e5df7,null));};exports[_0xc3c6('0x88')]=function(_0x217cf2,_0x4c96ba,_0xad7fbe){if(_0x217cf2['body']['id']){delete _0x217cf2[_0xc3c6('0x65')]['id'];}return db['MailAccount'][_0xc3c6('0x64')]({'where':{'id':_0x217cf2[_0xc3c6('0x60')]['id']}})['then'](handleEntityNotFound(_0x4c96ba,null))[_0xc3c6('0x23')](function(_0x376cd6){if(_0x376cd6){_0x217cf2[_0xc3c6('0x65')]['MailAccountId']=_0x376cd6['id'];return db[_0xc3c6('0x42')][_0xc3c6('0x6a')](_0x217cf2[_0xc3c6('0x65')]);}})[_0xc3c6('0x23')](respondWithResult(_0x4c96ba,null))[_0xc3c6('0x5e')](handleError(_0x4c96ba,null));};exports['removeSmtp']=function(_0x43d091,_0x401796,_0x6e9068){return db[_0xc3c6('0x46')][_0xc3c6('0x6b')]({'where':{'id':_0x43d091['params']['id']}})['then'](handleEntityNotFound(_0x401796,null))['then'](function(_0x1ad08f){if(_0x1ad08f){return _0x1ad08f['setSmtp'](null);}return null;})['then'](respondWithStatusCode(_0x401796,null))[_0xc3c6('0x5e')](handleError(_0x401796,null));};exports[_0xc3c6('0x89')]=function(_0x16d021,_0x193972,_0x42f96f){return db[_0xc3c6('0x8a')]['find']({'where':{'id':_0x16d021[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x193972,null))[_0xc3c6('0x23')](function(_0x12f225){if(_0x12f225){return _0x12f225[_0xc3c6('0x89')](_0x16d021['body'][_0xc3c6('0x70')],_[_0xc3c6('0x8b')](_0x16d021[_0xc3c6('0x65')],['ids','id'])||{});}})[_0xc3c6('0x23')](respondWithResult(_0x193972,null))[_0xc3c6('0x5e')](handleError(_0x193972,null));};exports[_0xc3c6('0x8c')]=function(_0x349840,_0x228e37,_0xbbd6f1){var _0x97f1f8={'raw':![],'where':{}};var _0x30f41c={};var _0x1aa112={'count':0x0,'rows':[]};return db[_0xc3c6('0x46')][_0xc3c6('0x6b')]({'where':{'id':_0x349840['params']['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x228e37,null))[_0xc3c6('0x23')](function(_0x32200f){if(_0x32200f){_0x30f41c['model']=_[_0xc3c6('0x4c')](db[_0xc3c6('0x8a')][_0xc3c6('0x47')]);_0x30f41c[_0xc3c6('0x4b')]=_[_0xc3c6('0x4c')](_0x349840['query']);_0x30f41c[_0xc3c6('0x4d')]=_[_0xc3c6('0x63')](_0x30f41c['model'],_0x30f41c['query']);_0x97f1f8['attributes']=_[_0xc3c6('0x63')](_0x30f41c['model'],qs[_0xc3c6('0x4f')](_0x349840[_0xc3c6('0x4b')]['fields']));_0x97f1f8['attributes']=_0x97f1f8['attributes'][_0xc3c6('0x50')]?_0x97f1f8[_0xc3c6('0x4e')]:_0x30f41c[_0xc3c6('0x4a')];if(!_0x349840[_0xc3c6('0x4b')][_0xc3c6('0x51')](_0xc3c6('0x8d'))){_0x97f1f8[_0xc3c6('0x32')]=qs[_0xc3c6('0x32')](_0x349840[_0xc3c6('0x4b')]['limit']);_0x97f1f8['offset']=qs[_0xc3c6('0x30')](_0x349840[_0xc3c6('0x4b')][_0xc3c6('0x30')]);}_0x97f1f8[_0xc3c6('0x52')]=qs['sort'](_0x349840[_0xc3c6('0x4b')][_0xc3c6('0x53')]);_0x97f1f8[_0xc3c6('0x56')]=qs[_0xc3c6('0x4d')](_['pick'](_0x349840['query'],_0x30f41c[_0xc3c6('0x4d')]));_0x97f1f8['where'][_0xc3c6('0x68')]=_0x32200f['id'];if(_0x349840['query']['filter']){_0x97f1f8[_0xc3c6('0x56')]=_[_0xc3c6('0x57')](_0x97f1f8[_0xc3c6('0x56')],{'$or':_[_0xc3c6('0x45')](_0x97f1f8[_0xc3c6('0x4e')],function(_0x8c209b){var _0xc6ed82={};_0xc6ed82[_0x8c209b]={'$like':'%'+_0x349840[_0xc3c6('0x4b')][_0xc3c6('0x55')]+'%'};return _0xc6ed82;})});}_0x97f1f8=_[_0xc3c6('0x57')]({},_0x97f1f8,_0x349840[_0xc3c6('0x59')]);return db[_0xc3c6('0x8a')][_0xc3c6('0x33')]({'where':_0x97f1f8[_0xc3c6('0x56')]})['then'](function(_0x334257){_0x1aa112['count']=_0x334257;if(_0x349840[_0xc3c6('0x4b')]['includeAll']){_0x97f1f8[_0xc3c6('0x5b')]=[{'model':db[_0xc3c6('0x8e')],'as':_0xc3c6('0x8f'),'required':![]},{'model':db[_0xc3c6('0x90')],'as':'Owner','attributes':[_0xc3c6('0x3f'),'fullname',_0xc3c6('0x91')],'required':![]},{'model':db[_0xc3c6('0x92')],'as':_0xc3c6('0x93'),'attributes':['id',_0xc3c6('0x3f'),_0xc3c6('0x94')],'where':_0x349840[_0xc3c6('0x4b')][_0xc3c6('0x95')]?{'id':_0x349840['query'][_0xc3c6('0x95')]}:undefined,'required':_0x349840[_0xc3c6('0x4b')][_0xc3c6('0x95')]?!![]:![]}];}return db['MailInteraction'][_0xc3c6('0x5c')](_0x97f1f8);})[_0xc3c6('0x23')](function(_0xf59580){_0x1aa112[_0xc3c6('0x5d')]=_0xf59580;return _0x1aa112;});}})[_0xc3c6('0x23')](respondWithFilteredResult(_0x228e37,_0x97f1f8))[_0xc3c6('0x5e')](handleError(_0x228e37,null));};exports[_0xc3c6('0x96')]=function addApplications(_0x2543e3,_0x1e6f1e){var _0x1c9389=_0x2543e3[_0xc3c6('0x60')]['id'];var _0x42e39b=_0x2543e3['body'];var _0x1f84c8=0xc8;var _0x37b36c=null;return db[_0xc3c6('0x97')][_0xc3c6('0x98')]({'isolationLevel':db[_0xc3c6('0x97')][_0xc3c6('0x99')][_0xc3c6('0x9a')]['READ_COMMITTED']},function(_0x173729){return db[_0xc3c6('0x46')][_0xc3c6('0x6b')]({'where':{'id':_0x1c9389},'transaction':_0x173729})[_0xc3c6('0x23')](function(_0x5c8514){if(_0x5c8514){return db[_0xc3c6('0x9b')][_0xc3c6('0x3e')]({'where':{'MailAccountId':_0x1c9389},'transaction':_0x173729})[_0xc3c6('0x23')](function(){var _0x4cc179=_[_0xc3c6('0x45')](_0x42e39b,function(_0x126d46){_0x126d46[_0xc3c6('0x68')]=_0x1c9389;return _0x126d46;});return db[_0xc3c6('0x9b')][_0xc3c6('0x9c')](_0x4cc179,{'transaction':_0x173729});});}else{_0x1f84c8=0x194;_0x37b36c=[];}});})[_0xc3c6('0x23')](function(){if(_0x1f84c8!==0x194){return db[_0xc3c6('0x9b')][_0xc3c6('0x9d')]({'where':{'MailAccountId':_0x1c9389},'order':_0xc3c6('0x9e')})[_0xc3c6('0x23')](function(_0x5ab7e5){_0x37b36c=_0x5ab7e5;});}})['catch'](function(_0x43b419){_0x1f84c8=0x1f4;logger[_0xc3c6('0x2a')](_0x43b419[_0xc3c6('0x9f')]);if(_0x43b419['name']){delete _0x43b419[_0xc3c6('0x3f')];}_0x37b36c=_0x43b419;})[_0xc3c6('0xa0')](function(){if(_0x37b36c===null){_0x1e6f1e[_0xc3c6('0x2d')](_0x1f84c8);}else{if(_0x1f84c8===0x1f4){_0x1e6f1e['status'](_0x1f84c8)[_0xc3c6('0xa1')](_0x37b36c);}else{_0x1e6f1e[_0xc3c6('0x34')](_0x1f84c8)[_0xc3c6('0x2f')](_0x37b36c);}}});};exports[_0xc3c6('0xa2')]=function(_0x25277a,_0x58fbce,_0x515bf0){var _0x3fc25d={};var _0x2d30b6={};var _0x4c28b6;var _0x2c5d4c;return db[_0xc3c6('0x46')][_0xc3c6('0x6b')]({'where':{'id':_0x25277a[_0xc3c6('0x60')]['id']}})['then'](handleEntityNotFound(_0x58fbce,null))['then'](function(_0x11a50d){if(_0x11a50d){_0x4c28b6=_0x11a50d;_0x2d30b6[_0xc3c6('0x4a')]=_[_0xc3c6('0x4c')](db[_0xc3c6('0x9b')][_0xc3c6('0x47')]);_0x2d30b6[_0xc3c6('0x4b')]=_[_0xc3c6('0x4c')](_0x25277a[_0xc3c6('0x4b')]);_0x2d30b6['filters']=_[_0xc3c6('0x63')](_0x2d30b6[_0xc3c6('0x4a')],_0x2d30b6[_0xc3c6('0x4b')]);_0x3fc25d['attributes']=_[_0xc3c6('0x63')](_0x2d30b6[_0xc3c6('0x4a')],qs[_0xc3c6('0x4f')](_0x25277a[_0xc3c6('0x4b')]['fields']));_0x3fc25d['attributes']=_0x3fc25d[_0xc3c6('0x4e')][_0xc3c6('0x50')]?_0x3fc25d[_0xc3c6('0x4e')]:_0x2d30b6[_0xc3c6('0x4a')];_0x3fc25d[_0xc3c6('0x52')]=qs[_0xc3c6('0x53')](_0x25277a[_0xc3c6('0x4b')][_0xc3c6('0x53')]);_0x3fc25d[_0xc3c6('0x56')]=qs['filters'](_[_0xc3c6('0x54')](_0x25277a[_0xc3c6('0x4b')],_0x2d30b6[_0xc3c6('0x4d')]));if(_0x25277a[_0xc3c6('0x4b')][_0xc3c6('0x55')]){_0x3fc25d['where']=_[_0xc3c6('0x57')](_0x3fc25d[_0xc3c6('0x56')],{'$or':_[_0xc3c6('0x45')](_0x3fc25d[_0xc3c6('0x4e')],function(_0x2d2562){var _0x3344ce={};_0x3344ce[_0x2d2562]={'$like':'%'+_0x25277a[_0xc3c6('0x4b')][_0xc3c6('0x55')]+'%'};return _0x3344ce;})});}_0x3fc25d=_['merge']({},_0x3fc25d,_0x25277a['options']);return _0x4c28b6[_0xc3c6('0xa2')](_0x3fc25d);}})[_0xc3c6('0x23')](function(_0x3af398){if(_0x3af398){_0x2c5d4c=_0x3af398[_0xc3c6('0x50')];if(!_0x25277a[_0xc3c6('0x4b')][_0xc3c6('0x51')](_0xc3c6('0x8d'))){_0x3fc25d[_0xc3c6('0x32')]=qs[_0xc3c6('0x32')](_0x25277a[_0xc3c6('0x4b')][_0xc3c6('0x32')]);_0x3fc25d[_0xc3c6('0x30')]=qs[_0xc3c6('0x30')](_0x25277a['query'][_0xc3c6('0x30')]);}return _0x4c28b6[_0xc3c6('0xa2')](_0x3fc25d);}})[_0xc3c6('0x23')](function(_0x5a8612){if(_0x5a8612){return _0x5a8612?{'count':_0x2c5d4c,'rows':_0x5a8612}:null;}})[_0xc3c6('0x23')](respondWithResult(_0x58fbce,null))[_0xc3c6('0x5e')](handleError(_0x58fbce,null));};exports[_0xc3c6('0xa3')]=function(_0x45b78a,_0x1497db,_0x3108f9){var _0x35b80a={'raw':!![],'where':{}};var _0x156803={};var _0x39e2a9={'count':0x0,'rows':[]};return db[_0xc3c6('0x46')][_0xc3c6('0x6b')]({'where':{'id':_0x45b78a[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x1497db,null))[_0xc3c6('0x23')](function(_0x5ba863){if(_0x5ba863){_0x156803[_0xc3c6('0x4a')]=_[_0xc3c6('0x4c')](db[_0xc3c6('0xa4')][_0xc3c6('0x47')]);_0x156803[_0xc3c6('0x4b')]=_[_0xc3c6('0x4c')](_0x45b78a[_0xc3c6('0x4b')]);_0x156803[_0xc3c6('0x4d')]=_[_0xc3c6('0x63')](_0x156803[_0xc3c6('0x4a')],_0x156803[_0xc3c6('0x4b')]);_0x35b80a['attributes']=_[_0xc3c6('0x63')](_0x156803['model'],qs[_0xc3c6('0x4f')](_0x45b78a[_0xc3c6('0x4b')][_0xc3c6('0x4f')]));_0x35b80a[_0xc3c6('0x4e')]=_0x35b80a[_0xc3c6('0x4e')][_0xc3c6('0x50')]?_0x35b80a[_0xc3c6('0x4e')]:_0x156803['model'];if(!_0x45b78a['query']['hasOwnProperty'](_0xc3c6('0x8d'))){_0x35b80a['limit']=qs['limit'](_0x45b78a[_0xc3c6('0x4b')][_0xc3c6('0x32')]);_0x35b80a[_0xc3c6('0x30')]=qs['offset'](_0x45b78a[_0xc3c6('0x4b')][_0xc3c6('0x30')]);}_0x35b80a[_0xc3c6('0x52')]=qs[_0xc3c6('0x53')](_0x45b78a['query'][_0xc3c6('0x53')]);_0x35b80a[_0xc3c6('0x56')]=qs[_0xc3c6('0x4d')](_[_0xc3c6('0x54')](_0x45b78a['query'],_0x156803['filters']));_0x35b80a[_0xc3c6('0x56')]['MailAccountId']=_0x5ba863['id'];if(_0x45b78a[_0xc3c6('0x4b')][_0xc3c6('0x55')]){_0x35b80a['where']=_['merge'](_0x35b80a[_0xc3c6('0x56')],{'$or':_[_0xc3c6('0x45')](_0x35b80a[_0xc3c6('0x4e')],function(_0x2d8bcd){var _0x3ad383={};_0x3ad383[_0x2d8bcd]={'$like':'%'+_0x45b78a[_0xc3c6('0x4b')]['filter']+'%'};return _0x3ad383;})});}if(_0x45b78a[_0xc3c6('0x4b')][_0xc3c6('0xa5')]){var _0x3b263f=_0x45b78a['query']['$gte']['split'](',');var _0x4e9f19={};_0x4e9f19[_0x3b263f[0x0]]={'$gte':moment(_0x3b263f[0x1])['format'](_0xc3c6('0xa6'))};_0x35b80a[_0xc3c6('0x56')]=_[_0xc3c6('0x57')](_0x35b80a[_0xc3c6('0x56')],_0x4e9f19);}_0x35b80a=_[_0xc3c6('0x57')]({},_0x35b80a,_0x45b78a[_0xc3c6('0x59')]);return db[_0xc3c6('0xa4')][_0xc3c6('0x33')]({'where':_0x35b80a[_0xc3c6('0x56')]})[_0xc3c6('0x23')](function(_0x1e47bb){_0x39e2a9[_0xc3c6('0x33')]=_0x1e47bb;if(_0x45b78a['query'][_0xc3c6('0x5a')]){_0x35b80a[_0xc3c6('0x5b')]=[{'all':!![]}];}return db['MailMessage']['findAll'](_0x35b80a);})[_0xc3c6('0x23')](function(_0x1a323a){if(_0x45b78a[_0xc3c6('0x4b')][_0xc3c6('0xa7')]==='true'){for(var _0x3e373d=0x0;_0x3e373d<_0x1a323a[_0xc3c6('0x50')];_0x3e373d++){_0x1a323a[_0x3e373d]['body']=juice(_0x1a323a[_0x3e373d][_0xc3c6('0x65')]);}}_0x39e2a9[_0xc3c6('0x5d')]=_0x1a323a;return _0x39e2a9;});}})['then'](respondWithFilteredResult(_0x1497db,_0x35b80a))['catch'](handleError(_0x1497db,null));};exports[_0xc3c6('0xa1')]=function(_0x47a22f,_0x4345ee,_0x2cda64){var _0xed2b38,_0x4257ee={},_0x431181;if(_0x47a22f[_0xc3c6('0x65')]['to']){_0x431181=_0x47a22f[_0xc3c6('0x65')]['to']['split'](',')[0x0];}return db[_0xc3c6('0x46')][_0xc3c6('0x64')]({'where':{'id':_0x47a22f[_0xc3c6('0x60')]['id']},'include':[{'model':db[_0xc3c6('0xa8')],'as':_0xc3c6('0xa9'),'include':[{'model':db['CmContact'],'as':_0xc3c6('0xaa'),'where':{'email':_0x431181},'limit':0x1,'order':[[_0xc3c6('0xab'),_0xc3c6('0xac')]]}]},{'model':db['MailServerOut'],'as':_0xc3c6('0x43'),'raw':!![]}]})[_0xc3c6('0x23')](handleEntityNotFound(_0x4345ee,null))['then'](function(_0x324400){if(_0x324400){_0xed2b38=_0x324400;if(_0x324400[_0xc3c6('0x43')]){if(_['isNil'](_0x47a22f[_0xc3c6('0x65')][_0xc3c6('0xad')])){_0x47a22f['body'][_0xc3c6('0xad')]=util[_0xc3c6('0xae')](_0xc3c6('0xaf'),_0x324400['name'],_0x324400[_0xc3c6('0x71')]||_0x324400[_0xc3c6('0x43')]['user']);}if(_0x47a22f[_0xc3c6('0x65')]['attachments']&&_0x47a22f[_0xc3c6('0x65')][_0xc3c6('0xb0')][_0xc3c6('0x50')]){for(var _0x4e592a=0x0;_0x4e592a<_0x47a22f[_0xc3c6('0x65')][_0xc3c6('0xb0')][_0xc3c6('0x50')];_0x4e592a+=0x1){_0x47a22f['body'][_0xc3c6('0xb0')][_0x4e592a]={'filename':_0x47a22f[_0xc3c6('0x65')][_0xc3c6('0xb0')][_0x4e592a][_0xc3c6('0x3f')],'path':path[_0xc3c6('0xb1')](config[_0xc3c6('0xb2')],'server/files/attachments',_0x47a22f[_0xc3c6('0x65')]['attachments'][_0x4e592a][_0xc3c6('0xb3')])};}}var _0x45d3a5={'tls':{'rejectUnauthorized':![]}};if(_[_0xc3c6('0x73')](_0x324400[_0xc3c6('0x43')][_0xc3c6('0x7e')])){if(_0x324400['Smtp']['authentication']){_0x45d3a5['auth']={'user':_0x324400['Smtp']['user'],'pass':_0x324400[_0xc3c6('0x43')][_0xc3c6('0x7f')]};}_0x45d3a5[_0xc3c6('0x7c')]=_0x324400[_0xc3c6('0x43')][_0xc3c6('0x7c')];_0x45d3a5[_0xc3c6('0x7d')]=_0x324400[_0xc3c6('0x43')][_0xc3c6('0x7d')];_0x45d3a5[_0xc3c6('0xb4')]=_0x324400[_0xc3c6('0x43')][_0xc3c6('0xb4')];}else{_0x45d3a5[_0xc3c6('0x7e')]=_0x324400['Smtp'][_0xc3c6('0x7e')];_0x45d3a5[_0xc3c6('0xb5')]={'user':_0x324400['Smtp'][_0xc3c6('0x78')],'pass':_0x324400['Smtp']['pass']};}return respondWithRpcPromise(_0xc3c6('0xb6'),_0xc3c6('0xb7'),{'account':_0x45d3a5,'message':_0x47a22f[_0xc3c6('0x65')]});}else{throw new Error(_0xc3c6('0xb8'));}}})[_0xc3c6('0x23')](function(_0x213ef0){if(_0x213ef0){_0x4257ee=_0x213ef0;if(_0xed2b38[_0xc3c6('0xa9')]){if(_0xed2b38[_0xc3c6('0xa9')][_0xc3c6('0xaa')][_0xc3c6('0x50')]){return _0xed2b38[_0xc3c6('0xa9')][_0xc3c6('0xaa')][0x0];}else{return db[_0xc3c6('0x8e')][_0xc3c6('0x6a')](_[_0xc3c6('0x1c')](_0x47a22f[_0xc3c6('0x65')],{'firstName':_0x47a22f[_0xc3c6('0x65')]['to'],'email':_0x47a22f[_0xc3c6('0x65')]['to'],'phone':_0x47a22f[_0xc3c6('0x65')]['to'],'ListId':_0xed2b38[_0xc3c6('0x72')]}));}}else{throw new Error(_0xc3c6('0xb8'));}}})[_0xc3c6('0x23')](function(_0x270cb2){if(_0x270cb2){var _0x423302={'UserId':_0x47a22f[_0xc3c6('0x78')]['id'],'ContactId':_0x270cb2['id'],'MailAccountId':_0xed2b38['id'],'inReplyTo':_0x4257ee[_0xc3c6('0xb9')],'to':_0x47a22f['body'][_0xc3c6('0xad')],'cc':_0x47a22f[_0xc3c6('0x65')]['cc'],'subject':_0x47a22f[_0xc3c6('0x65')]['subject'],'attach':_0x47a22f[_0xc3c6('0x65')][_0xc3c6('0xba')],'firstMsgDirection':_0xc3c6('0xbb'),'lastMsgAt':moment()[_0xc3c6('0xae')](_0xc3c6('0xa6')),'lastMsgDirection':_0xc3c6('0xbb'),'Messages':[_[_0xc3c6('0x57')](_0x47a22f[_0xc3c6('0x65')],{'messageId':_0x4257ee[_0xc3c6('0xb9')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0xed2b38['id'],'UserId':_0x47a22f[_0xc3c6('0x78')]['id'],'ContactId':_0x270cb2['id']})]};if(_0x47a22f[_0xc3c6('0x65')][_0xc3c6('0xbc')]){_0x423302=_['merge'](_0x423302,_0x47a22f[_0xc3c6('0x65')]['Interaction']);}return db[_0xc3c6('0x8a')][_0xc3c6('0x6a')](_0x423302,{'include':[{'model':db['MailMessage'],'as':'Messages'}]});}})['then'](respondWithResult(_0x4345ee,null))['catch'](handleError(_0x4345ee,null));};exports[_0xc3c6('0xbd')]=function(_0x5927f6,_0xba4d72,_0x338fad){return db[_0xc3c6('0x46')][_0xc3c6('0x64')]({'where':{'id':_0x5927f6[_0xc3c6('0x60')]['id']},'include':[{'model':db[_0xc3c6('0x42')],'as':_0xc3c6('0x43'),'raw':!![]}]})['then'](handleEntityNotFound(_0xba4d72,null))[_0xc3c6('0x23')](function(_0x6ec801){if(_0x6ec801&&_0x6ec801[_0xc3c6('0x43')]){var _0x5ebf87={'id':_0x6ec801['id'],'tls':{'rejectUnauthorized':![]}};if(_0x6ec801['Smtp'][_0xc3c6('0x7e')]){_0x5ebf87[_0xc3c6('0x7e')]=_0x6ec801[_0xc3c6('0x43')][_0xc3c6('0x7e')];}else{_0x5ebf87['host']=_0x6ec801[_0xc3c6('0x43')]['host'];_0x5ebf87[_0xc3c6('0x7d')]=_0x6ec801[_0xc3c6('0x43')][_0xc3c6('0x7d')];_0x5ebf87['secure']=_0x6ec801[_0xc3c6('0x43')][_0xc3c6('0xb4')];}if(_0x6ec801[_0xc3c6('0x43')][_0xc3c6('0x7b')]){_0x5ebf87[_0xc3c6('0xb5')]={'user':_0x6ec801[_0xc3c6('0x43')][_0xc3c6('0x78')],'pass':_0x6ec801['Smtp']['pass']};}return respondWithRpcPromise(_0xc3c6('0xbe'),_0xc3c6('0xbd'),{'account':_0x5ebf87});}})[_0xc3c6('0x23')](respondWithResult(_0xba4d72,null))['catch'](handleError(_0xba4d72,null));};exports[_0xc3c6('0x3e')]=function(_0x2cde2e,_0x21f1c4){return db[_0xc3c6('0x46')][_0xc3c6('0x64')]({'where':{'id':_0x2cde2e[_0xc3c6('0x60')]['id']}})['then'](handleEntityNotFound(_0x21f1c4,null))['then'](function(_0x25fbab){if(_0x25fbab&&_0x25fbab[_0xc3c6('0x7e')]){throw new db[(_0xc3c6('0xbf'))][(_0xc3c6('0xc0'))](_0xc3c6('0xc1'));}return _0x25fbab;})[_0xc3c6('0x23')](removeEntity(_0x21f1c4,null))['catch'](handleError(_0x21f1c4,null));};exports['addAgents']=function(_0x4f7f22,_0x3aae86,_0x56d23b){return db[_0xc3c6('0x46')][_0xc3c6('0x64')]({'where':{'id':_0x4f7f22[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x3aae86,null))[_0xc3c6('0x23')](function(_0x103c51){if(_0x103c51){return _0x103c51['addAgents'](_0x4f7f22[_0xc3c6('0x65')][_0xc3c6('0x70')],_[_0xc3c6('0x8b')](_0x4f7f22[_0xc3c6('0x65')],[_0xc3c6('0x70'),'id'])||{})[_0xc3c6('0xc2')](function(_0xcc62b3){for(var _0x4ee969=0x0;_0x4ee969<_0x4f7f22['body'][_0xc3c6('0x70')][_0xc3c6('0x50')];_0x4ee969+=0x1){socket[_0xc3c6('0xc3')]('userMailAccount:save',{'UserId':Number(_0x4f7f22[_0xc3c6('0x65')][_0xc3c6('0x70')][_0x4ee969]),'MailAccountId':Number(_0x4f7f22[_0xc3c6('0x60')]['id'])});}return _0xcc62b3;});}})['then'](respondWithResult(_0x3aae86,null))['catch'](handleError(_0x3aae86,null));};exports[_0xc3c6('0xc4')]=function(_0x4d4862,_0x21c41d,_0x182483){return db[_0xc3c6('0x46')][_0xc3c6('0x64')]({'where':{'id':_0x4d4862[_0xc3c6('0x60')]['id']}})[_0xc3c6('0x23')](handleEntityNotFound(_0x21c41d,null))['then'](function(_0x1867ff){if(_0x1867ff){return _0x1867ff[_0xc3c6('0xc4')](_0x4d4862[_0xc3c6('0x4b')][_0xc3c6('0x70')])[_0xc3c6('0x23')](function(){if(_['isArray'](_0x4d4862['query']['ids'])){for(var _0x30fa9b=0x0;_0x30fa9b<_0x4d4862[_0xc3c6('0x4b')][_0xc3c6('0x70')][_0xc3c6('0x50')];_0x30fa9b+=0x1){socket[_0xc3c6('0xc3')](_0xc3c6('0xc5'),{'UserId':Number(_0x4d4862['query'][_0xc3c6('0x70')][_0x30fa9b]),'MailAccountId':Number(_0x4d4862[_0xc3c6('0x60')]['id'])});}}else{socket[_0xc3c6('0xc3')](_0xc3c6('0xc5'),{'UserId':Number(_0x4d4862[_0xc3c6('0x4b')][_0xc3c6('0x70')]),'MailAccountId':Number(_0x4d4862[_0xc3c6('0x60')]['id'])});}});}})[_0xc3c6('0x23')](respondWithStatusCode(_0x21c41d,null))[_0xc3c6('0x5e')](handleError(_0x21c41d,null));};exports[_0xc3c6('0xc6')]=function(_0x217d57,_0x533df0,_0x2a72c5){var _0x6aadfe={};var _0x503185={};var _0x223af1;var _0x4d7f98;return db[_0xc3c6('0x46')][_0xc3c6('0x6b')]({'where':{'id':_0x217d57['params']['id']}})['then'](handleEntityNotFound(_0x533df0,null))[_0xc3c6('0x23')](function(_0x1f0254){if(_0x1f0254){_0x223af1=_0x1f0254;_0x503185['model']=_[_0xc3c6('0x4c')](db[_0xc3c6('0x90')][_0xc3c6('0x47')]);_0x503185[_0xc3c6('0x4b')]=_[_0xc3c6('0x4c')](_0x217d57['query']);_0x503185[_0xc3c6('0x4d')]=_[_0xc3c6('0x63')](_0x503185[_0xc3c6('0x4a')],_0x503185[_0xc3c6('0x4b')]);_0x6aadfe[_0xc3c6('0x4e')]=_[_0xc3c6('0x63')](_0x503185[_0xc3c6('0x4a')],qs[_0xc3c6('0x4f')](_0x217d57['query']['fields']));_0x6aadfe[_0xc3c6('0x4e')]=_0x6aadfe['attributes'][_0xc3c6('0x50')]?_0x6aadfe[_0xc3c6('0x4e')]:_0x503185[_0xc3c6('0x4a')];_0x6aadfe[_0xc3c6('0x52')]=qs[_0xc3c6('0x53')](_0x217d57[_0xc3c6('0x4b')][_0xc3c6('0x53')]);_0x6aadfe['where']=qs[_0xc3c6('0x4d')](_[_0xc3c6('0x54')](_0x217d57[_0xc3c6('0x4b')],_0x503185['filters']));if(_0x217d57['query'][_0xc3c6('0x55')]){_0x6aadfe[_0xc3c6('0x56')]=_['merge'](_0x6aadfe[_0xc3c6('0x56')],{'$or':_[_0xc3c6('0x45')](_0x6aadfe['attributes'],function(_0x284a5b){var _0x245c9c={};_0x245c9c[_0x284a5b]={'$like':'%'+_0x217d57[_0xc3c6('0x4b')][_0xc3c6('0x55')]+'%'};return _0x245c9c;})});}_0x6aadfe=_[_0xc3c6('0x57')]({},_0x6aadfe,_0x217d57[_0xc3c6('0x59')]);return _0x223af1[_0xc3c6('0xc6')](_0x6aadfe);}})['then'](function(_0x17663d){if(_0x17663d){_0x4d7f98=_0x17663d[_0xc3c6('0x50')];if(!_0x217d57[_0xc3c6('0x4b')][_0xc3c6('0x51')](_0xc3c6('0x8d'))){_0x6aadfe[_0xc3c6('0x32')]=qs[_0xc3c6('0x32')](_0x217d57[_0xc3c6('0x4b')][_0xc3c6('0x32')]);_0x6aadfe['offset']=qs['offset'](_0x217d57['query'][_0xc3c6('0x30')]);}return _0x223af1[_0xc3c6('0xc6')](_0x6aadfe);}})[_0xc3c6('0x23')](function(_0x8a0905){if(_0x8a0905){return _0x8a0905?{'count':_0x4d7f98,'rows':_0x8a0905}:null;}})[_0xc3c6('0x23')](respondWithResult(_0x533df0,null))[_0xc3c6('0x5e')](handleError(_0x533df0,null));};
\ No newline at end of file
+var _0xaaa3=['localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','status','json','limit','undefined','count','offset','set','apply','reject','save','then','destroy','get','UserProfileResource','end','stack','name','send','index','MailServerIn','Imap','MailServerOut','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','options','includeAll','include','findAll','rows','show','params','Smtp','Pause','merge','find','body','update','describe','addDisposition','MailAccountId','create','findOne','Disposition','nolimit','filter','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','key','email','isNil','active','description','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','cservice','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','removeImap','getSmtp','addSmtp','removeSmtp','addInteraction','omit','MailInteraction','CmContact','Contact','User','Owner','fullname','internal','Tags','color','tag','addApplications','sequelize','transaction','MailApplication','bulkCreate','findAndCountAll','getApplications','MailMessage','$gte','split','inlineCss','true','CmList','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','root','basename','auth','secure','SendMail','sendMail','List\x20not\x20found','List','ListId','messageId','subject','attach','out','format','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','html-to-text','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults'];(function(_0x1e7f38,_0x573b2d){var _0xa32701=function(_0x27b71c){while(--_0x27b71c){_0x1e7f38['push'](_0x1e7f38['shift']());}};_0xa32701(++_0x573b2d);}(_0xaaa3,0x16e));var _0x3aaa=function(_0x42b1dc,_0x286ff0){_0x42b1dc=_0x42b1dc-0x0;var _0x3eb277=_0xaaa3[_0x42b1dc];return _0x3eb277;};'use strict';var emlformat=require(_0x3aaa('0x0'));var rimraf=require(_0x3aaa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3aaa('0x2'));var rp=require('request-promise');var moment=require(_0x3aaa('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3aaa('0x4'));var path=require(_0x3aaa('0x5'));var sox=require(_0x3aaa('0x6'));var csv=require(_0x3aaa('0x7'));var ejs=require(_0x3aaa('0x8'));var fs=require('fs');var fs_extra=require(_0x3aaa('0x9'));var _=require(_0x3aaa('0xa'));var squel=require(_0x3aaa('0xb'));var crypto=require(_0x3aaa('0xc'));var jsforce=require(_0x3aaa('0xd'));var deskjs=require(_0x3aaa('0xe'));var toCsv=require(_0x3aaa('0x7'));var querystring=require('querystring');var Papa=require(_0x3aaa('0xf'));var htmlToText=require(_0x3aaa('0x10'));var juice=require('juice');var Redis=require(_0x3aaa('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3aaa('0x12'));var as=require(_0x3aaa('0x13'));var hardwareService=require(_0x3aaa('0x14'));var logger=require('../../config/logger')(_0x3aaa('0x15'));var utils=require(_0x3aaa('0x16'));var config=require(_0x3aaa('0x17'));var licenseUtil=require(_0x3aaa('0x18'));var db=require(_0x3aaa('0x19'))['db'];config[_0x3aaa('0x1a')]=_[_0x3aaa('0x1b')](config[_0x3aaa('0x1a')],{'host':_0x3aaa('0x1c'),'port':0x18eb});var socket=require(_0x3aaa('0x1d'))(new Redis(config['redis']));require('./mailAccount.socket')[_0x3aaa('0x1e')](socket);var jayson=require(_0x3aaa('0x1f'));var client=jayson[_0x3aaa('0x20')][_0x3aaa('0x21')]({'port':0x232b});function respondWithRpcPromise(_0x495206,_0x1cb0de,_0x565756,_0x432887){return new BPromise(function(_0x2e54d0,_0x32ab42){var _0x14271c=_0x432887||client;return _0x14271c[_0x3aaa('0x22')](_0x495206,_0x565756)['then'](function(_0x43075e){logger[_0x3aaa('0x23')](_0x3aaa('0x24'),_0x1cb0de,'request\x20sent');logger[_0x3aaa('0x25')](_0x3aaa('0x26'),_0x1cb0de,_0x3aaa('0x27'),JSON[_0x3aaa('0x28')](_0x43075e));if(_0x43075e[_0x3aaa('0x29')]){if(_0x43075e[_0x3aaa('0x29')]['code']===0x1f4){logger['error'](_0x3aaa('0x24'),_0x1cb0de,_0x43075e[_0x3aaa('0x29')][_0x3aaa('0x2a')]);return _0x32ab42(_0x43075e[_0x3aaa('0x29')][_0x3aaa('0x2a')]);}logger[_0x3aaa('0x29')](_0x3aaa('0x24'),_0x1cb0de,_0x43075e[_0x3aaa('0x29')][_0x3aaa('0x2a')]);return _0x2e54d0(_0x43075e[_0x3aaa('0x29')][_0x3aaa('0x2a')]);}else{logger['info'](_0x3aaa('0x24'),_0x1cb0de,_0x3aaa('0x27'));_0x2e54d0(_0x43075e['result']['message']);}})[_0x3aaa('0x2b')](function(_0x38e40f){logger[_0x3aaa('0x29')](_0x3aaa('0x24'),_0x1cb0de,_0x38e40f);_0x32ab42(_0x38e40f);});});}function respondWithStatusCode(_0x3ca120,_0x5f4cf0){_0x5f4cf0=_0x5f4cf0||0xcc;return function(_0x236ca2){if(_0x236ca2){return _0x3ca120['sendStatus'](_0x5f4cf0);}return _0x3ca120[_0x3aaa('0x2c')](_0x5f4cf0)['end']();};}function respondWithResult(_0x290b4a,_0x4c341b){_0x4c341b=_0x4c341b||0xc8;return function(_0x421612){if(_0x421612){return _0x290b4a[_0x3aaa('0x2c')](_0x4c341b)[_0x3aaa('0x2d')](_0x421612);}};}function respondWithFilteredResult(_0x1ffc39,_0x89e261){return function(_0x8d2488){if(_0x8d2488){var _0x5c9dee=typeof _0x89e261['offset']==='undefined'&&typeof _0x89e261[_0x3aaa('0x2e')]===_0x3aaa('0x2f');var _0x364ddd=_0x8d2488[_0x3aaa('0x30')];var _0x5aa459=_0x5c9dee?0x0:_0x89e261[_0x3aaa('0x31')];var _0x591a73=_0x5c9dee?_0x8d2488[_0x3aaa('0x30')]:_0x89e261[_0x3aaa('0x31')]+_0x89e261[_0x3aaa('0x2e')];var _0x299601;if(_0x591a73>=_0x364ddd){_0x591a73=_0x364ddd;_0x299601=0xc8;}else{_0x299601=0xce;}_0x1ffc39['status'](_0x299601);return _0x1ffc39[_0x3aaa('0x32')]('Content-Range',_0x5aa459+'-'+_0x591a73+'/'+_0x364ddd)[_0x3aaa('0x2d')](_0x8d2488);}return null;};}function patchUpdates(_0x590240){return function(_0x52f9c0){try{jsonpatch[_0x3aaa('0x33')](_0x52f9c0,_0x590240,!![]);}catch(_0x2df7c8){return BPromise[_0x3aaa('0x34')](_0x2df7c8);}return _0x52f9c0[_0x3aaa('0x35')]();};}function saveUpdates(_0x1f8135,_0xf42be0){return function(_0xff7f08){if(_0xff7f08){return _0xff7f08['update'](_0x1f8135)[_0x3aaa('0x36')](function(_0x5705d0){return _0x5705d0;});}return null;};}function removeEntity(_0xa1f5d4,_0x1a56e6){return function(_0x28e1cf){if(_0x28e1cf){return _0x28e1cf[_0x3aaa('0x37')]()[_0x3aaa('0x36')](function(){var _0x3f84f3=_0x28e1cf[_0x3aaa('0x38')]({'plain':!![]});var _0x1c26c1='MailAccounts';return db[_0x3aaa('0x39')][_0x3aaa('0x37')]({'where':{'type':_0x1c26c1,'resourceId':_0x3f84f3['id']}})['then'](function(){return _0x28e1cf;});})['then'](function(){_0xa1f5d4[_0x3aaa('0x2c')](0xcc)[_0x3aaa('0x3a')]();});}};}function handleEntityNotFound(_0x257800,_0x466c86){return function(_0x260bf1){if(!_0x260bf1){_0x257800['sendStatus'](0x194);}return _0x260bf1;};}function handleError(_0x3d821d,_0x44506d){_0x44506d=_0x44506d||0x1f4;return function(_0x498eee){logger[_0x3aaa('0x29')](_0x498eee[_0x3aaa('0x3b')]);if(_0x498eee[_0x3aaa('0x3c')]){delete _0x498eee[_0x3aaa('0x3c')];}_0x3d821d[_0x3aaa('0x2c')](_0x44506d)[_0x3aaa('0x3d')](_0x498eee);};}exports[_0x3aaa('0x3e')]=function(_0x5ca11c,_0x5a3888){var _0x28a071={'include':[{'model':db[_0x3aaa('0x3f')],'as':_0x3aaa('0x40')},{'model':db[_0x3aaa('0x41')],'as':'Smtp'},{'model':db['Pause'],'as':_0x3aaa('0x42')}]},_0x5e3cbd={},_0x543d00={'count':0x0,'rows':[]};var _0x2bcf1d=_[_0x3aaa('0x43')](db[_0x3aaa('0x44')][_0x3aaa('0x45')],function(_0x59f63b){return{'name':_0x59f63b[_0x3aaa('0x46')],'type':_0x59f63b['type']['key']};});_0x5e3cbd[_0x3aaa('0x47')]=_[_0x3aaa('0x43')](_0x2bcf1d,_0x3aaa('0x3c'));_0x5e3cbd[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0x5ca11c[_0x3aaa('0x48')]);_0x5e3cbd[_0x3aaa('0x4a')]=_[_0x3aaa('0x4b')](_0x5e3cbd[_0x3aaa('0x47')],_0x5e3cbd[_0x3aaa('0x48')]);_0x28a071[_0x3aaa('0x4c')]=_[_0x3aaa('0x4b')](_0x5e3cbd['model'],qs[_0x3aaa('0x4d')](_0x5ca11c[_0x3aaa('0x48')]['fields']));_0x28a071[_0x3aaa('0x4c')]=_0x28a071[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x28a071[_0x3aaa('0x4c')]:_0x5e3cbd['model'];if(!_0x5ca11c[_0x3aaa('0x48')][_0x3aaa('0x4f')]('nolimit')){_0x28a071[_0x3aaa('0x2e')]=qs['limit'](_0x5ca11c['query'][_0x3aaa('0x2e')]);_0x28a071['offset']=qs['offset'](_0x5ca11c['query'][_0x3aaa('0x31')]);}_0x28a071[_0x3aaa('0x50')]=qs[_0x3aaa('0x51')](_0x5ca11c['query'][_0x3aaa('0x51')]);_0x28a071[_0x3aaa('0x52')]=qs[_0x3aaa('0x4a')](_[_0x3aaa('0x53')](_0x5ca11c[_0x3aaa('0x48')],_0x5e3cbd[_0x3aaa('0x4a')]),_0x2bcf1d);if(_0x5ca11c[_0x3aaa('0x48')]['filter']){_0x28a071[_0x3aaa('0x52')]=_['merge'](_0x28a071['where'],{'$or':_[_0x3aaa('0x43')](_0x2bcf1d,function(_0x25f8da){if(_0x25f8da['type']!=='VIRTUAL'){var _0x47bf03={};_0x47bf03[_0x25f8da[_0x3aaa('0x3c')]]={'$like':'%'+_0x5ca11c[_0x3aaa('0x48')]['filter']+'%'};return _0x47bf03;}})});}_0x28a071=_['merge']({},_0x28a071,_0x5ca11c[_0x3aaa('0x54')]);var _0x887a9d={'where':_0x28a071[_0x3aaa('0x52')]};return db[_0x3aaa('0x44')][_0x3aaa('0x30')](_0x887a9d)[_0x3aaa('0x36')](function(_0x13c3c9){_0x543d00[_0x3aaa('0x30')]=_0x13c3c9;if(_0x5ca11c[_0x3aaa('0x48')][_0x3aaa('0x55')]){_0x28a071[_0x3aaa('0x56')]=[{'all':!![]}];}return db[_0x3aaa('0x44')][_0x3aaa('0x57')](_0x28a071);})[_0x3aaa('0x36')](function(_0x26bff6){_0x543d00[_0x3aaa('0x58')]=_0x26bff6;return _0x543d00;})[_0x3aaa('0x36')](respondWithFilteredResult(_0x5a3888,_0x28a071))[_0x3aaa('0x2b')](handleError(_0x5a3888,null));};exports[_0x3aaa('0x59')]=function(_0x1fd21a,_0x5b0cec){var _0x12039c={'raw':![],'where':{'id':_0x1fd21a[_0x3aaa('0x5a')]['id']},'include':[{'model':db[_0x3aaa('0x3f')],'as':_0x3aaa('0x40')},{'model':db[_0x3aaa('0x41')],'as':_0x3aaa('0x5b')},{'model':db[_0x3aaa('0x5c')],'as':_0x3aaa('0x42')}]},_0x2343b2={};_0x2343b2[_0x3aaa('0x47')]=_[_0x3aaa('0x49')](db[_0x3aaa('0x44')][_0x3aaa('0x45')]);_0x2343b2[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0x1fd21a[_0x3aaa('0x48')]);_0x2343b2[_0x3aaa('0x4a')]=_[_0x3aaa('0x4b')](_0x2343b2[_0x3aaa('0x47')],_0x2343b2[_0x3aaa('0x48')]);_0x12039c[_0x3aaa('0x4c')]=_[_0x3aaa('0x4b')](_0x2343b2[_0x3aaa('0x47')],qs[_0x3aaa('0x4d')](_0x1fd21a[_0x3aaa('0x48')][_0x3aaa('0x4d')]));_0x12039c[_0x3aaa('0x4c')]=_0x12039c[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x12039c[_0x3aaa('0x4c')]:_0x2343b2[_0x3aaa('0x47')];if(_0x1fd21a[_0x3aaa('0x48')][_0x3aaa('0x55')]){_0x12039c[_0x3aaa('0x56')]=[{'all':!![]}];}_0x12039c=_[_0x3aaa('0x5d')]({},_0x12039c,_0x1fd21a[_0x3aaa('0x54')]);return db[_0x3aaa('0x44')]['find'](_0x12039c)[_0x3aaa('0x36')](handleEntityNotFound(_0x5b0cec,null))[_0x3aaa('0x36')](respondWithResult(_0x5b0cec,null))[_0x3aaa('0x2b')](handleError(_0x5b0cec,null));};exports['update']=function(_0xb80af2,_0x44003b){if(_0xb80af2['body']['id']){delete _0xb80af2['body']['id'];}return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0xb80af2[_0x3aaa('0x5a')]['id']},'include':[{'model':db[_0x3aaa('0x3f')],'as':_0x3aaa('0x40')},{'model':db[_0x3aaa('0x41')],'as':'Smtp'},{'model':db[_0x3aaa('0x5c')],'as':_0x3aaa('0x42')}]})['then'](handleEntityNotFound(_0x44003b,null))['then'](saveUpdates(_0xb80af2[_0x3aaa('0x5f')],null))[_0x3aaa('0x36')](function(_0x3b0c24){if(_0x3b0c24&&_0xb80af2[_0x3aaa('0x5f')][_0x3aaa('0x40')]){return db[_0x3aaa('0x3f')][_0x3aaa('0x60')](_0xb80af2[_0x3aaa('0x5f')]['Imap'],{'where':{'MailAccountId':_0x3b0c24['id']}})['then'](function(){return _0x3b0c24;});}return _0x3b0c24;})['then'](function(_0x4cf502){if(_0x4cf502&&_0xb80af2['body'][_0x3aaa('0x5b')]){return db[_0x3aaa('0x41')][_0x3aaa('0x60')](_0xb80af2['body'][_0x3aaa('0x5b')],{'where':{'MailAccountId':_0x4cf502['id']}})[_0x3aaa('0x36')](function(){return _0x4cf502;});}return _0x4cf502;})[_0x3aaa('0x36')](respondWithResult(_0x44003b,null))[_0x3aaa('0x2b')](handleError(_0x44003b,null));};exports[_0x3aaa('0x61')]=function(_0x2194d8,_0x51e6f9){return db['MailAccount'][_0x3aaa('0x61')]()[_0x3aaa('0x36')](respondWithResult(_0x51e6f9,null))[_0x3aaa('0x2b')](handleError(_0x51e6f9,null));};exports[_0x3aaa('0x62')]=function(_0x1ca3e4,_0x18b03f,_0x1b1380){if(_0x1ca3e4[_0x3aaa('0x5f')]['id']){delete _0x1ca3e4[_0x3aaa('0x5f')]['id'];}return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0x1ca3e4[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x18b03f,null))[_0x3aaa('0x36')](function(_0x32a921){if(_0x32a921){_0x1ca3e4[_0x3aaa('0x5f')][_0x3aaa('0x63')]=_0x32a921['id'];return db['Disposition'][_0x3aaa('0x64')](_0x1ca3e4['body']);}})['then'](respondWithResult(_0x18b03f,null))[_0x3aaa('0x2b')](handleError(_0x18b03f,null));};exports['getDispositions']=function(_0x218fa9,_0x16b197,_0x17be2c){var _0xc400a8={'raw':![],'where':{}};var _0x7d7702={};var _0x42ecca={'count':0x0,'rows':[]};return db[_0x3aaa('0x44')][_0x3aaa('0x65')]({'where':{'id':_0x218fa9['params']['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x16b197,null))[_0x3aaa('0x36')](function(_0x44be40){if(_0x44be40){_0x7d7702[_0x3aaa('0x47')]=_[_0x3aaa('0x49')](db[_0x3aaa('0x66')][_0x3aaa('0x45')]);_0x7d7702['query']=_[_0x3aaa('0x49')](_0x218fa9[_0x3aaa('0x48')]);_0x7d7702[_0x3aaa('0x4a')]=_['intersection'](_0x7d7702[_0x3aaa('0x47')],_0x7d7702[_0x3aaa('0x48')]);_0xc400a8[_0x3aaa('0x4c')]=_[_0x3aaa('0x4b')](_0x7d7702[_0x3aaa('0x47')],qs[_0x3aaa('0x4d')](_0x218fa9[_0x3aaa('0x48')]['fields']));_0xc400a8[_0x3aaa('0x4c')]=_0xc400a8[_0x3aaa('0x4c')]['length']?_0xc400a8[_0x3aaa('0x4c')]:_0x7d7702[_0x3aaa('0x47')];if(!_0x218fa9[_0x3aaa('0x48')][_0x3aaa('0x4f')](_0x3aaa('0x67'))){_0xc400a8[_0x3aaa('0x2e')]=qs[_0x3aaa('0x2e')](_0x218fa9[_0x3aaa('0x48')]['limit']);_0xc400a8[_0x3aaa('0x31')]=qs['offset'](_0x218fa9['query'][_0x3aaa('0x31')]);}_0xc400a8[_0x3aaa('0x50')]=qs['sort'](_0x218fa9[_0x3aaa('0x48')][_0x3aaa('0x51')]);_0xc400a8[_0x3aaa('0x52')]=qs[_0x3aaa('0x4a')](_[_0x3aaa('0x53')](_0x218fa9[_0x3aaa('0x48')],_0x7d7702[_0x3aaa('0x4a')]));_0xc400a8[_0x3aaa('0x52')][_0x3aaa('0x63')]=_0x44be40['id'];if(_0x218fa9[_0x3aaa('0x48')][_0x3aaa('0x68')]){_0xc400a8[_0x3aaa('0x52')]=_['merge'](_0xc400a8[_0x3aaa('0x52')],{'$or':_[_0x3aaa('0x43')](_0xc400a8[_0x3aaa('0x4c')],function(_0x3d2a09){var _0x3bcb26={};_0x3bcb26[_0x3d2a09]={'$like':'%'+_0x218fa9[_0x3aaa('0x48')][_0x3aaa('0x68')]+'%'};return _0x3bcb26;})});}_0xc400a8=_[_0x3aaa('0x5d')]({},_0xc400a8,_0x218fa9[_0x3aaa('0x54')]);return db[_0x3aaa('0x66')][_0x3aaa('0x30')]({'where':_0xc400a8[_0x3aaa('0x52')]})[_0x3aaa('0x36')](function(_0x25b344){_0x42ecca['count']=_0x25b344;if(_0x218fa9[_0x3aaa('0x48')][_0x3aaa('0x55')]){_0xc400a8[_0x3aaa('0x56')]=[{'all':!![]}];}return db[_0x3aaa('0x66')]['findAll'](_0xc400a8);})[_0x3aaa('0x36')](function(_0x338143){_0x42ecca[_0x3aaa('0x58')]=_0x338143;return _0x42ecca;});}})[_0x3aaa('0x36')](respondWithFilteredResult(_0x16b197,_0xc400a8))[_0x3aaa('0x2b')](handleError(_0x16b197,null));};exports[_0x3aaa('0x69')]=function(_0x18cc5c,_0x43c5e8,_0x1cf4c1){return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0x18cc5c[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x43c5e8,null))[_0x3aaa('0x36')](function(_0x22eae1){if(_0x22eae1){return _0x22eae1[_0x3aaa('0x69')](_0x18cc5c[_0x3aaa('0x48')][_0x3aaa('0x6a')]);}})['then'](respondWithStatusCode(_0x43c5e8,null))[_0x3aaa('0x2b')](handleError(_0x43c5e8,null));};exports[_0x3aaa('0x6b')]=function(_0xdb0596,_0x1b2fc5,_0x349345){if(_0xdb0596[_0x3aaa('0x5f')]['id']){delete _0xdb0596[_0x3aaa('0x5f')]['id'];}return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0xdb0596['params']['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x1b2fc5,null))['then'](function(_0x3680a9){if(_0x3680a9){_0xdb0596['body'][_0x3aaa('0x63')]=_0x3680a9['id'];return db[_0x3aaa('0x6c')][_0x3aaa('0x64')](_0xdb0596[_0x3aaa('0x5f')]);}})[_0x3aaa('0x36')](respondWithResult(_0x1b2fc5,null))[_0x3aaa('0x2b')](handleError(_0x1b2fc5,null));};exports[_0x3aaa('0x6d')]=function(_0xf772fb,_0x2956e0,_0xf9b25){var _0x1b17cd={'raw':![],'where':{}};var _0x42231f={};var _0x16f363={'count':0x0,'rows':[]};return db[_0x3aaa('0x44')]['findOne']({'where':{'id':_0xf772fb[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x2956e0,null))[_0x3aaa('0x36')](function(_0x10dcd7){if(_0x10dcd7){_0x42231f[_0x3aaa('0x47')]=_['keys'](db['CannedAnswer'][_0x3aaa('0x45')]);_0x42231f[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0xf772fb[_0x3aaa('0x48')]);_0x42231f[_0x3aaa('0x4a')]=_[_0x3aaa('0x4b')](_0x42231f[_0x3aaa('0x47')],_0x42231f[_0x3aaa('0x48')]);_0x1b17cd['attributes']=_[_0x3aaa('0x4b')](_0x42231f['model'],qs[_0x3aaa('0x4d')](_0xf772fb[_0x3aaa('0x48')][_0x3aaa('0x4d')]));_0x1b17cd[_0x3aaa('0x4c')]=_0x1b17cd[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x1b17cd[_0x3aaa('0x4c')]:_0x42231f[_0x3aaa('0x47')];if(!_0xf772fb[_0x3aaa('0x48')][_0x3aaa('0x4f')](_0x3aaa('0x67'))){_0x1b17cd[_0x3aaa('0x2e')]=qs[_0x3aaa('0x2e')](_0xf772fb['query'][_0x3aaa('0x2e')]);_0x1b17cd[_0x3aaa('0x31')]=qs[_0x3aaa('0x31')](_0xf772fb['query'][_0x3aaa('0x31')]);}_0x1b17cd['order']=qs[_0x3aaa('0x51')](_0xf772fb['query'][_0x3aaa('0x51')]);_0x1b17cd[_0x3aaa('0x52')]=qs[_0x3aaa('0x4a')](_[_0x3aaa('0x53')](_0xf772fb['query'],_0x42231f[_0x3aaa('0x4a')]));_0x1b17cd[_0x3aaa('0x52')][_0x3aaa('0x63')]=_0x10dcd7['id'];if(_0xf772fb[_0x3aaa('0x48')][_0x3aaa('0x68')]){_0x1b17cd[_0x3aaa('0x52')]=_['merge'](_0x1b17cd['where'],{'$or':_[_0x3aaa('0x43')](_0x1b17cd[_0x3aaa('0x4c')],function(_0x62bcb5){var _0x2a9f23={};_0x2a9f23[_0x62bcb5]={'$like':'%'+_0xf772fb[_0x3aaa('0x48')][_0x3aaa('0x68')]+'%'};return _0x2a9f23;})});}_0x1b17cd=_[_0x3aaa('0x5d')]({},_0x1b17cd,_0xf772fb['options']);return db[_0x3aaa('0x6c')]['count']({'where':_0x1b17cd[_0x3aaa('0x52')]})['then'](function(_0x50ed21){_0x16f363[_0x3aaa('0x30')]=_0x50ed21;if(_0xf772fb[_0x3aaa('0x48')][_0x3aaa('0x55')]){_0x1b17cd[_0x3aaa('0x56')]=[{'all':!![]}];}return db[_0x3aaa('0x6c')][_0x3aaa('0x57')](_0x1b17cd);})['then'](function(_0x2653f7){_0x16f363['rows']=_0x2653f7;return _0x16f363;});}})[_0x3aaa('0x36')](respondWithFilteredResult(_0x2956e0,_0x1b17cd))[_0x3aaa('0x2b')](handleError(_0x2956e0,null));};exports[_0x3aaa('0x6e')]=function(_0x49201b,_0x4da104,_0xe909a3){return db['MailAccount'][_0x3aaa('0x5e')]({'where':{'id':_0x49201b['params']['id']}})['then'](handleEntityNotFound(_0x4da104,null))[_0x3aaa('0x36')](function(_0x598bd7){if(_0x598bd7){return _0x598bd7[_0x3aaa('0x6e')](_0x49201b[_0x3aaa('0x48')][_0x3aaa('0x6a')]);}})[_0x3aaa('0x36')](respondWithStatusCode(_0x4da104,null))[_0x3aaa('0x2b')](handleError(_0x4da104,null));};exports['create']=function(_0x4d2fe3,_0x3e1fa1){var _0xfde7={'name':_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x3c')],'key':_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x6f')],'email':_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x70')],'ListId':_0x4d2fe3[_0x3aaa('0x5f')]['ListId'],'active':!_[_0x3aaa('0x71')](_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x72')])?_0x4d2fe3['body'][_0x3aaa('0x72')]:!![],'description':_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x73')]||null,'Imap':{},'Smtp':{}};if(_[_0x3aaa('0x71')](_0x4d2fe3[_0x3aaa('0x5f')]['cservice'])){if(_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x74')]){_0xfde7[_0x3aaa('0x40')][_0x3aaa('0x75')]=_0xfde7[_0x3aaa('0x5b')][_0x3aaa('0x75')]=_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x76')];_0xfde7[_0x3aaa('0x40')][_0x3aaa('0x77')]=_0xfde7[_0x3aaa('0x5b')][_0x3aaa('0x78')]=_0x4d2fe3['body'][_0x3aaa('0x79')];}else{_0xfde7[_0x3aaa('0x40')]['authentication']=_0xfde7[_0x3aaa('0x5b')][_0x3aaa('0x7a')]=![];}_0xfde7[_0x3aaa('0x40')][_0x3aaa('0x7b')]=_0x4d2fe3[_0x3aaa('0x5f')]['Imap'][_0x3aaa('0x7b')];_0xfde7[_0x3aaa('0x40')][_0x3aaa('0x7c')]=_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x40')][_0x3aaa('0x7c')];_0xfde7[_0x3aaa('0x5b')][_0x3aaa('0x7b')]=_0x4d2fe3[_0x3aaa('0x5f')]['Smtp'][_0x3aaa('0x7b')];_0xfde7['Smtp'][_0x3aaa('0x7c')]=_0x4d2fe3['body'][_0x3aaa('0x5b')][_0x3aaa('0x7c')];}else{_0xfde7[_0x3aaa('0x40')][_0x3aaa('0x7d')]=_0xfde7[_0x3aaa('0x5b')]['service']=_0x4d2fe3[_0x3aaa('0x5f')][_0x3aaa('0x7e')];_0xfde7[_0x3aaa('0x40')]['user']=_0xfde7[_0x3aaa('0x5b')]['user']=_0x4d2fe3[_0x3aaa('0x5f')]['cuser'];_0xfde7[_0x3aaa('0x40')]['password']=_0xfde7[_0x3aaa('0x5b')]['pass']=_0x4d2fe3['body'][_0x3aaa('0x79')];}return db['MailAccount']['create'](_0xfde7,{'include':[{'model':db[_0x3aaa('0x41')],'as':_0x3aaa('0x5b')},{'model':db['MailServerIn'],'as':_0x3aaa('0x40')}]})[_0x3aaa('0x36')](function(_0x29b407){var _0x267d3d=_0x4d2fe3[_0x3aaa('0x75')][_0x3aaa('0x38')]({'plain':!![]});if(!_0x267d3d)throw new Error(_0x3aaa('0x7f'));if(_0x267d3d['role']===_0x3aaa('0x75')){var _0x11eaba=_0x29b407[_0x3aaa('0x38')]({'plain':!![]});return db[_0x3aaa('0x80')]['find']({'where':{'name':_0x3aaa('0x81'),'userProfileId':_0x267d3d[_0x3aaa('0x82')]},'raw':!![]})['then'](function(_0x3809d7){if(_0x3809d7&&_0x3809d7[_0x3aaa('0x83')]===0x0){return db[_0x3aaa('0x39')]['create']({'name':_0x11eaba[_0x3aaa('0x3c')],'resourceId':_0x11eaba['id'],'type':_0x3809d7[_0x3aaa('0x3c')],'sectionId':_0x3809d7['id']},{})[_0x3aaa('0x36')](function(){return _0x29b407;});}else{return _0x29b407;}})[_0x3aaa('0x2b')](function(_0x3c8e7b){logger[_0x3aaa('0x29')](_0x3aaa('0x84'),_0x3c8e7b);throw _0x3c8e7b;});}return _0x29b407;})['then'](respondWithResult(_0x3e1fa1,0xc9))[_0x3aaa('0x2b')](handleError(_0x3e1fa1,null));};exports['getImap']=function(_0x282d08,_0x4c2a9b,_0x2c42a3){return db[_0x3aaa('0x44')]['findOne']({'where':{'id':_0x282d08[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x4c2a9b,null))[_0x3aaa('0x36')](function(_0x422dce){if(_0x422dce){return _0x422dce[_0x3aaa('0x85')]();}return null;})[_0x3aaa('0x36')](respondWithResult(_0x4c2a9b,null))[_0x3aaa('0x2b')](handleError(_0x4c2a9b,null));};exports['addImap']=function(_0x23fd79,_0x5475d2,_0x75290b){if(_0x23fd79[_0x3aaa('0x5f')]['id']){delete _0x23fd79[_0x3aaa('0x5f')]['id'];}return db['MailAccount'][_0x3aaa('0x5e')]({'where':{'id':_0x23fd79[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x5475d2,null))[_0x3aaa('0x36')](function(_0x5958f7){if(_0x5958f7){_0x23fd79[_0x3aaa('0x5f')][_0x3aaa('0x63')]=_0x5958f7['id'];return db['MailServerIn'][_0x3aaa('0x64')](_0x23fd79[_0x3aaa('0x5f')]);}})['then'](respondWithResult(_0x5475d2,null))[_0x3aaa('0x2b')](handleError(_0x5475d2,null));};exports[_0x3aaa('0x86')]=function(_0x2b737a,_0x46e6be,_0xab12dd){return db['MailAccount']['findOne']({'where':{'id':_0x2b737a[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x46e6be,null))[_0x3aaa('0x36')](function(_0x1ec553){if(_0x1ec553){return _0x1ec553['setImap'](null);}return null;})['then'](respondWithStatusCode(_0x46e6be,null))['catch'](handleError(_0x46e6be,null));};exports[_0x3aaa('0x87')]=function(_0x25af01,_0x59e5e9,_0x601a5){return db[_0x3aaa('0x44')]['findOne']({'where':{'id':_0x25af01[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x59e5e9,null))[_0x3aaa('0x36')](function(_0x4516ee){if(_0x4516ee){return _0x4516ee['getSmtp']();}return null;})[_0x3aaa('0x36')](respondWithResult(_0x59e5e9,null))[_0x3aaa('0x2b')](handleError(_0x59e5e9,null));};exports[_0x3aaa('0x88')]=function(_0x5025b6,_0x2ed27b,_0x1b4943){if(_0x5025b6[_0x3aaa('0x5f')]['id']){delete _0x5025b6[_0x3aaa('0x5f')]['id'];}return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0x5025b6['params']['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x2ed27b,null))[_0x3aaa('0x36')](function(_0x3417ae){if(_0x3417ae){_0x5025b6['body']['MailAccountId']=_0x3417ae['id'];return db[_0x3aaa('0x41')][_0x3aaa('0x64')](_0x5025b6[_0x3aaa('0x5f')]);}})[_0x3aaa('0x36')](respondWithResult(_0x2ed27b,null))[_0x3aaa('0x2b')](handleError(_0x2ed27b,null));};exports[_0x3aaa('0x89')]=function(_0x3929a2,_0x2f1d1f,_0xcf5428){return db[_0x3aaa('0x44')][_0x3aaa('0x65')]({'where':{'id':_0x3929a2['params']['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x2f1d1f,null))[_0x3aaa('0x36')](function(_0x1fc05b){if(_0x1fc05b){return _0x1fc05b['setSmtp'](null);}return null;})['then'](respondWithStatusCode(_0x2f1d1f,null))['catch'](handleError(_0x2f1d1f,null));};exports['addInteraction']=function(_0x159804,_0xfaf934,_0xb7006e){return db['MailInteraction']['find']({'where':{'id':_0x159804[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0xfaf934,null))[_0x3aaa('0x36')](function(_0x120dab){if(_0x120dab){return _0x120dab[_0x3aaa('0x8a')](_0x159804['body'][_0x3aaa('0x6a')],_[_0x3aaa('0x8b')](_0x159804['body'],['ids','id'])||{});}})['then'](respondWithResult(_0xfaf934,null))[_0x3aaa('0x2b')](handleError(_0xfaf934,null));};exports['getInteractions']=function(_0x3e3900,_0x499358,_0x14ccae){var _0x547027={'raw':![],'where':{}};var _0x4ad7d7={};var _0x4fd757={'count':0x0,'rows':[]};return db[_0x3aaa('0x44')][_0x3aaa('0x65')]({'where':{'id':_0x3e3900[_0x3aaa('0x5a')]['id']}})['then'](handleEntityNotFound(_0x499358,null))[_0x3aaa('0x36')](function(_0x13dc38){if(_0x13dc38){_0x4ad7d7[_0x3aaa('0x47')]=_[_0x3aaa('0x49')](db[_0x3aaa('0x8c')][_0x3aaa('0x45')]);_0x4ad7d7[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0x3e3900['query']);_0x4ad7d7[_0x3aaa('0x4a')]=_['intersection'](_0x4ad7d7[_0x3aaa('0x47')],_0x4ad7d7[_0x3aaa('0x48')]);_0x547027[_0x3aaa('0x4c')]=_[_0x3aaa('0x4b')](_0x4ad7d7[_0x3aaa('0x47')],qs[_0x3aaa('0x4d')](_0x3e3900[_0x3aaa('0x48')][_0x3aaa('0x4d')]));_0x547027[_0x3aaa('0x4c')]=_0x547027[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x547027[_0x3aaa('0x4c')]:_0x4ad7d7[_0x3aaa('0x47')];if(!_0x3e3900['query']['hasOwnProperty']('nolimit')){_0x547027['limit']=qs[_0x3aaa('0x2e')](_0x3e3900['query'][_0x3aaa('0x2e')]);_0x547027['offset']=qs[_0x3aaa('0x31')](_0x3e3900[_0x3aaa('0x48')][_0x3aaa('0x31')]);}_0x547027[_0x3aaa('0x50')]=qs[_0x3aaa('0x51')](_0x3e3900['query'][_0x3aaa('0x51')]);_0x547027[_0x3aaa('0x52')]=qs[_0x3aaa('0x4a')](_['pick'](_0x3e3900[_0x3aaa('0x48')],_0x4ad7d7[_0x3aaa('0x4a')]));_0x547027[_0x3aaa('0x52')]['MailAccountId']=_0x13dc38['id'];if(_0x3e3900[_0x3aaa('0x48')]['filter']){_0x547027[_0x3aaa('0x52')]=_[_0x3aaa('0x5d')](_0x547027[_0x3aaa('0x52')],{'$or':_[_0x3aaa('0x43')](_0x547027[_0x3aaa('0x4c')],function(_0x215556){var _0x163c87={};_0x163c87[_0x215556]={'$like':'%'+_0x3e3900[_0x3aaa('0x48')][_0x3aaa('0x68')]+'%'};return _0x163c87;})});}_0x547027=_['merge']({},_0x547027,_0x3e3900['options']);return db[_0x3aaa('0x8c')][_0x3aaa('0x30')]({'where':_0x547027['where']})[_0x3aaa('0x36')](function(_0x4e0fd5){_0x4fd757[_0x3aaa('0x30')]=_0x4e0fd5;if(_0x3e3900[_0x3aaa('0x48')][_0x3aaa('0x55')]){_0x547027[_0x3aaa('0x56')]=[{'model':db[_0x3aaa('0x8d')],'as':_0x3aaa('0x8e'),'required':![]},{'model':db[_0x3aaa('0x8f')],'as':_0x3aaa('0x90'),'attributes':[_0x3aaa('0x3c'),_0x3aaa('0x91'),_0x3aaa('0x92')],'required':![]},{'model':db['Tag'],'as':_0x3aaa('0x93'),'attributes':['id','name',_0x3aaa('0x94')],'where':_0x3e3900['query'][_0x3aaa('0x95')]?{'id':_0x3e3900[_0x3aaa('0x48')]['tag']}:undefined,'required':_0x3e3900[_0x3aaa('0x48')]['tag']?!![]:![]}];}return db[_0x3aaa('0x8c')][_0x3aaa('0x57')](_0x547027);})[_0x3aaa('0x36')](function(_0x449c27){_0x4fd757[_0x3aaa('0x58')]=_0x449c27;return _0x4fd757;});}})['then'](respondWithFilteredResult(_0x499358,_0x547027))['catch'](handleError(_0x499358,null));};exports[_0x3aaa('0x96')]=function(_0x442ebe,_0x50aa51,_0x311ada){return db[_0x3aaa('0x44')]['findOne']({'where':{'id':_0x442ebe[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x50aa51,null))[_0x3aaa('0x36')](function(_0x101a2e){if(_0x101a2e){return db[_0x3aaa('0x97')][_0x3aaa('0x98')](function(_0x1ae1da){return db[_0x3aaa('0x99')][_0x3aaa('0x37')]({'where':{'MailAccountId':_0x442ebe[_0x3aaa('0x5a')]['id']},'transaction':_0x1ae1da})[_0x3aaa('0x36')](function(_0x2837e8){var _0x1d41fb=_[_0x3aaa('0x43')](_0x442ebe['body'],function(_0x89b2bf){_0x89b2bf[_0x3aaa('0x63')]=_0x442ebe[_0x3aaa('0x5a')]['id'];return _0x89b2bf;});return db[_0x3aaa('0x99')][_0x3aaa('0x9a')](_0x1d41fb,{'transaction':_0x1ae1da});});})[_0x3aaa('0x36')](function(){return db[_0x3aaa('0x99')][_0x3aaa('0x9b')]({'where':{'MailAccountId':_0x442ebe['params']['id']},'order':'priority'});});}})[_0x3aaa('0x36')](respondWithResult(_0x50aa51,null))[_0x3aaa('0x2b')](handleError(_0x50aa51,null));};exports['getApplications']=function(_0x5c1faa,_0xb7499b,_0x18456){var _0x3ad76a={};var _0x390e18={};var _0x3607fb;var _0x2126c8;return db[_0x3aaa('0x44')]['findOne']({'where':{'id':_0x5c1faa['params']['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0xb7499b,null))[_0x3aaa('0x36')](function(_0x2bdf91){if(_0x2bdf91){_0x3607fb=_0x2bdf91;_0x390e18['model']=_['keys'](db[_0x3aaa('0x99')]['rawAttributes']);_0x390e18[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0x5c1faa[_0x3aaa('0x48')]);_0x390e18[_0x3aaa('0x4a')]=_[_0x3aaa('0x4b')](_0x390e18[_0x3aaa('0x47')],_0x390e18[_0x3aaa('0x48')]);_0x3ad76a['attributes']=_[_0x3aaa('0x4b')](_0x390e18['model'],qs['fields'](_0x5c1faa[_0x3aaa('0x48')][_0x3aaa('0x4d')]));_0x3ad76a[_0x3aaa('0x4c')]=_0x3ad76a[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x3ad76a['attributes']:_0x390e18['model'];_0x3ad76a[_0x3aaa('0x50')]=qs[_0x3aaa('0x51')](_0x5c1faa[_0x3aaa('0x48')][_0x3aaa('0x51')]);_0x3ad76a[_0x3aaa('0x52')]=qs[_0x3aaa('0x4a')](_[_0x3aaa('0x53')](_0x5c1faa['query'],_0x390e18[_0x3aaa('0x4a')]));if(_0x5c1faa[_0x3aaa('0x48')][_0x3aaa('0x68')]){_0x3ad76a[_0x3aaa('0x52')]=_[_0x3aaa('0x5d')](_0x3ad76a['where'],{'$or':_[_0x3aaa('0x43')](_0x3ad76a[_0x3aaa('0x4c')],function(_0x32a8b0){var _0x4193e0={};_0x4193e0[_0x32a8b0]={'$like':'%'+_0x5c1faa[_0x3aaa('0x48')][_0x3aaa('0x68')]+'%'};return _0x4193e0;})});}_0x3ad76a=_[_0x3aaa('0x5d')]({},_0x3ad76a,_0x5c1faa[_0x3aaa('0x54')]);return _0x3607fb[_0x3aaa('0x9c')](_0x3ad76a);}})[_0x3aaa('0x36')](function(_0xda8ed2){if(_0xda8ed2){_0x2126c8=_0xda8ed2[_0x3aaa('0x4e')];if(!_0x5c1faa[_0x3aaa('0x48')]['hasOwnProperty'](_0x3aaa('0x67'))){_0x3ad76a[_0x3aaa('0x2e')]=qs['limit'](_0x5c1faa['query'][_0x3aaa('0x2e')]);_0x3ad76a[_0x3aaa('0x31')]=qs['offset'](_0x5c1faa['query'][_0x3aaa('0x31')]);}return _0x3607fb[_0x3aaa('0x9c')](_0x3ad76a);}})['then'](function(_0x497ae2){if(_0x497ae2){return _0x497ae2?{'count':_0x2126c8,'rows':_0x497ae2}:null;}})[_0x3aaa('0x36')](respondWithResult(_0xb7499b,null))[_0x3aaa('0x2b')](handleError(_0xb7499b,null));};exports['getMessages']=function(_0x3a7aad,_0x84be4,_0x2fef2d){var _0x452785={'raw':!![],'where':{}};var _0x2a4188={};var _0x58350e={'count':0x0,'rows':[]};return db['MailAccount'][_0x3aaa('0x65')]({'where':{'id':_0x3a7aad[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x84be4,null))['then'](function(_0x34d9a3){if(_0x34d9a3){_0x2a4188[_0x3aaa('0x47')]=_[_0x3aaa('0x49')](db[_0x3aaa('0x9d')]['rawAttributes']);_0x2a4188['query']=_[_0x3aaa('0x49')](_0x3a7aad[_0x3aaa('0x48')]);_0x2a4188[_0x3aaa('0x4a')]=_['intersection'](_0x2a4188[_0x3aaa('0x47')],_0x2a4188['query']);_0x452785[_0x3aaa('0x4c')]=_[_0x3aaa('0x4b')](_0x2a4188[_0x3aaa('0x47')],qs[_0x3aaa('0x4d')](_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x4d')]));_0x452785[_0x3aaa('0x4c')]=_0x452785[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x452785[_0x3aaa('0x4c')]:_0x2a4188[_0x3aaa('0x47')];if(!_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x4f')]('nolimit')){_0x452785['limit']=qs[_0x3aaa('0x2e')](_0x3a7aad[_0x3aaa('0x48')]['limit']);_0x452785[_0x3aaa('0x31')]=qs[_0x3aaa('0x31')](_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x31')]);}_0x452785[_0x3aaa('0x50')]=qs[_0x3aaa('0x51')](_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x51')]);_0x452785[_0x3aaa('0x52')]=qs['filters'](_[_0x3aaa('0x53')](_0x3a7aad['query'],_0x2a4188[_0x3aaa('0x4a')]));_0x452785[_0x3aaa('0x52')][_0x3aaa('0x63')]=_0x34d9a3['id'];if(_0x3a7aad['query']['filter']){_0x452785[_0x3aaa('0x52')]=_[_0x3aaa('0x5d')](_0x452785[_0x3aaa('0x52')],{'$or':_[_0x3aaa('0x43')](_0x452785[_0x3aaa('0x4c')],function(_0x291277){var _0x477366={};_0x477366[_0x291277]={'$like':'%'+_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x68')]+'%'};return _0x477366;})});}if(_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x9e')]){var _0x551772=_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0x9e')][_0x3aaa('0x9f')](',');var _0x15f621={};_0x15f621[_0x551772[0x0]]={'$gte':moment(_0x551772[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x452785['where']=_[_0x3aaa('0x5d')](_0x452785['where'],_0x15f621);}_0x452785=_[_0x3aaa('0x5d')]({},_0x452785,_0x3a7aad[_0x3aaa('0x54')]);return db['MailMessage'][_0x3aaa('0x30')]({'where':_0x452785['where']})[_0x3aaa('0x36')](function(_0x1862b6){_0x58350e[_0x3aaa('0x30')]=_0x1862b6;if(_0x3a7aad['query'][_0x3aaa('0x55')]){_0x452785[_0x3aaa('0x56')]=[{'all':!![]}];}return db[_0x3aaa('0x9d')]['findAll'](_0x452785);})[_0x3aaa('0x36')](function(_0x27fc13){if(_0x3a7aad[_0x3aaa('0x48')][_0x3aaa('0xa0')]===_0x3aaa('0xa1')){for(var _0x1ca3e8=0x0;_0x1ca3e8<_0x27fc13[_0x3aaa('0x4e')];_0x1ca3e8++){_0x27fc13[_0x1ca3e8][_0x3aaa('0x5f')]=juice(_0x27fc13[_0x1ca3e8]['body']);}}_0x58350e[_0x3aaa('0x58')]=_0x27fc13;return _0x58350e;});}})[_0x3aaa('0x36')](respondWithFilteredResult(_0x84be4,_0x452785))[_0x3aaa('0x2b')](handleError(_0x84be4,null));};exports[_0x3aaa('0x3d')]=function(_0x1d6ee8,_0x48afbb,_0x1fcf12){var _0x536214,_0x15298c={},_0x1ff03c;if(_0x1d6ee8[_0x3aaa('0x5f')]['to']){_0x1ff03c=_0x1d6ee8['body']['to'][_0x3aaa('0x9f')](',')[0x0];}return db['MailAccount'][_0x3aaa('0x5e')]({'where':{'id':_0x1d6ee8[_0x3aaa('0x5a')]['id']},'include':[{'model':db[_0x3aaa('0xa2')],'as':'List','include':[{'model':db[_0x3aaa('0x8d')],'as':_0x3aaa('0xa3'),'where':{'email':_0x1ff03c},'limit':0x1,'order':[[_0x3aaa('0xa4'),_0x3aaa('0xa5')]]}]},{'model':db[_0x3aaa('0x41')],'as':'Smtp','raw':!![]}]})['then'](handleEntityNotFound(_0x48afbb,null))[_0x3aaa('0x36')](function(_0x3f5045){if(_0x3f5045){_0x536214=_0x3f5045;if(_0x3f5045[_0x3aaa('0x5b')]){if(_['isNil'](_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xa6')])){_0x1d6ee8['body'][_0x3aaa('0xa6')]=util['format'](_0x3aaa('0xa7'),_0x3f5045[_0x3aaa('0x3c')],_0x3f5045[_0x3aaa('0x70')]||_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x75')]);}if(_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xa8')]&&_0x1d6ee8['body'][_0x3aaa('0xa8')][_0x3aaa('0x4e')]){for(var _0x3dc074=0x0;_0x3dc074<_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xa8')]['length'];_0x3dc074+=0x1){_0x1d6ee8[_0x3aaa('0x5f')]['attachments'][_0x3dc074]={'filename':_0x1d6ee8[_0x3aaa('0x5f')]['attachments'][_0x3dc074][_0x3aaa('0x3c')],'path':path['join'](config[_0x3aaa('0xa9')],'server/files/attachments',_0x1d6ee8[_0x3aaa('0x5f')]['attachments'][_0x3dc074][_0x3aaa('0xaa')])};}}var _0x1046af={'tls':{'rejectUnauthorized':![]}};if(_[_0x3aaa('0x71')](_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x7d')])){if(_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x7a')]){_0x1046af[_0x3aaa('0xab')]={'user':_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x75')],'pass':_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x78')]};}_0x1046af[_0x3aaa('0x7b')]=_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x7b')];_0x1046af[_0x3aaa('0x7c')]=_0x3f5045[_0x3aaa('0x5b')]['port'];_0x1046af[_0x3aaa('0xac')]=_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0xac')];}else{_0x1046af['service']=_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x7d')];_0x1046af[_0x3aaa('0xab')]={'user':_0x3f5045[_0x3aaa('0x5b')][_0x3aaa('0x75')],'pass':_0x3f5045['Smtp'][_0x3aaa('0x78')]};}return respondWithRpcPromise(_0x3aaa('0xad'),_0x3aaa('0xae'),{'account':_0x1046af,'message':_0x1d6ee8['body']});}else{throw new Error(_0x3aaa('0xaf'));}}})[_0x3aaa('0x36')](function(_0x17e73a){if(_0x17e73a){_0x15298c=_0x17e73a;if(_0x536214[_0x3aaa('0xb0')]){if(_0x536214[_0x3aaa('0xb0')]['Contacts'][_0x3aaa('0x4e')]){return _0x536214[_0x3aaa('0xb0')][_0x3aaa('0xa3')][0x0];}else{return db['CmContact']['create'](_['defaults'](_0x1d6ee8['body'],{'firstName':_0x1d6ee8['body']['to'],'email':_0x1d6ee8[_0x3aaa('0x5f')]['to'],'phone':_0x1d6ee8['body']['to'],'ListId':_0x536214[_0x3aaa('0xb1')]}));}}else{throw new Error(_0x3aaa('0xaf'));}}})['then'](function(_0x3786e4){if(_0x3786e4){var _0x10e3f4={'UserId':_0x1d6ee8['user']['id'],'ContactId':_0x3786e4['id'],'MailAccountId':_0x536214['id'],'inReplyTo':_0x15298c[_0x3aaa('0xb2')],'to':_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xa6')],'cc':_0x1d6ee8[_0x3aaa('0x5f')]['cc'],'subject':_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xb3')],'attach':_0x1d6ee8['body'][_0x3aaa('0xb4')],'firstMsgDirection':_0x3aaa('0xb5'),'lastMsgAt':moment()[_0x3aaa('0xb6')](_0x3aaa('0xb7')),'lastMsgDirection':_0x3aaa('0xb5'),'Messages':[_[_0x3aaa('0x5d')](_0x1d6ee8[_0x3aaa('0x5f')],{'messageId':_0x15298c[_0x3aaa('0xb2')],'sentAt':moment()[_0x3aaa('0xb6')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x536214['id'],'UserId':_0x1d6ee8[_0x3aaa('0x75')]['id'],'ContactId':_0x3786e4['id']})]};if(_0x1d6ee8[_0x3aaa('0x5f')][_0x3aaa('0xb8')]){_0x10e3f4=_[_0x3aaa('0x5d')](_0x10e3f4,_0x1d6ee8[_0x3aaa('0x5f')]['Interaction']);}return db[_0x3aaa('0x8c')]['create'](_0x10e3f4,{'include':[{'model':db['MailMessage'],'as':_0x3aaa('0xb9')}]});}})[_0x3aaa('0x36')](respondWithResult(_0x48afbb,null))['catch'](handleError(_0x48afbb,null));};exports[_0x3aaa('0xba')]=function(_0x149d46,_0x2a0e2d,_0x3fdcb0){return db['MailAccount'][_0x3aaa('0x5e')]({'where':{'id':_0x149d46['params']['id']},'include':[{'model':db[_0x3aaa('0x41')],'as':_0x3aaa('0x5b'),'raw':!![]}]})[_0x3aaa('0x36')](handleEntityNotFound(_0x2a0e2d,null))['then'](function(_0x4cc350){if(_0x4cc350&&_0x4cc350[_0x3aaa('0x5b')]){var _0x3eee54={'id':_0x4cc350['id'],'tls':{'rejectUnauthorized':![]}};if(_0x4cc350['Smtp'][_0x3aaa('0x7d')]){_0x3eee54[_0x3aaa('0x7d')]=_0x4cc350[_0x3aaa('0x5b')][_0x3aaa('0x7d')];}else{_0x3eee54['host']=_0x4cc350['Smtp']['host'];_0x3eee54['port']=_0x4cc350['Smtp']['port'];_0x3eee54[_0x3aaa('0xac')]=_0x4cc350[_0x3aaa('0x5b')]['secure'];}if(_0x4cc350['Smtp'][_0x3aaa('0x7a')]){_0x3eee54[_0x3aaa('0xab')]={'user':_0x4cc350[_0x3aaa('0x5b')][_0x3aaa('0x75')],'pass':_0x4cc350[_0x3aaa('0x5b')][_0x3aaa('0x78')]};}return respondWithRpcPromise(_0x3aaa('0xbb'),_0x3aaa('0xba'),{'account':_0x3eee54});}})[_0x3aaa('0x36')](respondWithResult(_0x2a0e2d,null))[_0x3aaa('0x2b')](handleError(_0x2a0e2d,null));};exports['destroy']=function(_0x1beaff,_0x427b0d){return db[_0x3aaa('0x44')]['find']({'where':{'id':_0x1beaff[_0x3aaa('0x5a')]['id']}})['then'](handleEntityNotFound(_0x427b0d,null))[_0x3aaa('0x36')](function(_0x28e112){if(_0x28e112&&_0x28e112[_0x3aaa('0x7d')]){throw new db[(_0x3aaa('0xbc'))]['ValidationError'](_0x3aaa('0xbd'));}return _0x28e112;})['then'](removeEntity(_0x427b0d,null))[_0x3aaa('0x2b')](handleError(_0x427b0d,null));};exports[_0x3aaa('0xbe')]=function(_0x2e71e1,_0x3452d7,_0x507557){return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0x2e71e1[_0x3aaa('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3452d7,null))[_0x3aaa('0x36')](function(_0x3b77b6){if(_0x3b77b6){return _0x3b77b6['addAgents'](_0x2e71e1[_0x3aaa('0x5f')][_0x3aaa('0x6a')],_[_0x3aaa('0x8b')](_0x2e71e1[_0x3aaa('0x5f')],[_0x3aaa('0x6a'),'id'])||{})['spread'](function(_0x4b3759){for(var _0x550224=0x0;_0x550224<_0x2e71e1['body'][_0x3aaa('0x6a')]['length'];_0x550224+=0x1){socket[_0x3aaa('0xbf')](_0x3aaa('0xc0'),{'UserId':Number(_0x2e71e1['body'][_0x3aaa('0x6a')][_0x550224]),'MailAccountId':Number(_0x2e71e1[_0x3aaa('0x5a')]['id'])});}return _0x4b3759;});}})[_0x3aaa('0x36')](respondWithResult(_0x3452d7,null))[_0x3aaa('0x2b')](handleError(_0x3452d7,null));};exports[_0x3aaa('0xc1')]=function(_0xf8377,_0x5d269b,_0x3e5ad4){return db[_0x3aaa('0x44')][_0x3aaa('0x5e')]({'where':{'id':_0xf8377[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x5d269b,null))['then'](function(_0x5c6ee5){if(_0x5c6ee5){return _0x5c6ee5[_0x3aaa('0xc1')](_0xf8377[_0x3aaa('0x48')][_0x3aaa('0x6a')])[_0x3aaa('0x36')](function(){if(_[_0x3aaa('0xc2')](_0xf8377[_0x3aaa('0x48')]['ids'])){for(var _0x20b850=0x0;_0x20b850<_0xf8377[_0x3aaa('0x48')][_0x3aaa('0x6a')][_0x3aaa('0x4e')];_0x20b850+=0x1){socket[_0x3aaa('0xbf')](_0x3aaa('0xc3'),{'UserId':Number(_0xf8377[_0x3aaa('0x48')][_0x3aaa('0x6a')][_0x20b850]),'MailAccountId':Number(_0xf8377['params']['id'])});}}else{socket[_0x3aaa('0xbf')]('userMailAccount:remove',{'UserId':Number(_0xf8377[_0x3aaa('0x48')]['ids']),'MailAccountId':Number(_0xf8377['params']['id'])});}});}})[_0x3aaa('0x36')](respondWithStatusCode(_0x5d269b,null))[_0x3aaa('0x2b')](handleError(_0x5d269b,null));};exports['getAgents']=function(_0x3f1d3a,_0x26463a,_0x456bb8){var _0x5e9668={};var _0x15b794={};var _0x5cb00d;var _0x491bba;return db[_0x3aaa('0x44')][_0x3aaa('0x65')]({'where':{'id':_0x3f1d3a[_0x3aaa('0x5a')]['id']}})[_0x3aaa('0x36')](handleEntityNotFound(_0x26463a,null))[_0x3aaa('0x36')](function(_0x46fe33){if(_0x46fe33){_0x5cb00d=_0x46fe33;_0x15b794[_0x3aaa('0x47')]=_['keys'](db[_0x3aaa('0x8f')][_0x3aaa('0x45')]);_0x15b794[_0x3aaa('0x48')]=_[_0x3aaa('0x49')](_0x3f1d3a[_0x3aaa('0x48')]);_0x15b794[_0x3aaa('0x4a')]=_[_0x3aaa('0x4b')](_0x15b794[_0x3aaa('0x47')],_0x15b794[_0x3aaa('0x48')]);_0x5e9668[_0x3aaa('0x4c')]=_['intersection'](_0x15b794[_0x3aaa('0x47')],qs['fields'](_0x3f1d3a['query']['fields']));_0x5e9668['attributes']=_0x5e9668[_0x3aaa('0x4c')][_0x3aaa('0x4e')]?_0x5e9668[_0x3aaa('0x4c')]:_0x15b794[_0x3aaa('0x47')];_0x5e9668[_0x3aaa('0x50')]=qs[_0x3aaa('0x51')](_0x3f1d3a[_0x3aaa('0x48')]['sort']);_0x5e9668['where']=qs[_0x3aaa('0x4a')](_[_0x3aaa('0x53')](_0x3f1d3a[_0x3aaa('0x48')],_0x15b794['filters']));if(_0x3f1d3a['query'][_0x3aaa('0x68')]){_0x5e9668[_0x3aaa('0x52')]=_['merge'](_0x5e9668[_0x3aaa('0x52')],{'$or':_[_0x3aaa('0x43')](_0x5e9668[_0x3aaa('0x4c')],function(_0x451135){var _0x31d03c={};_0x31d03c[_0x451135]={'$like':'%'+_0x3f1d3a['query']['filter']+'%'};return _0x31d03c;})});}_0x5e9668=_['merge']({},_0x5e9668,_0x3f1d3a[_0x3aaa('0x54')]);return _0x5cb00d[_0x3aaa('0xc4')](_0x5e9668);}})[_0x3aaa('0x36')](function(_0x189571){if(_0x189571){_0x491bba=_0x189571[_0x3aaa('0x4e')];if(!_0x3f1d3a[_0x3aaa('0x48')][_0x3aaa('0x4f')](_0x3aaa('0x67'))){_0x5e9668[_0x3aaa('0x2e')]=qs[_0x3aaa('0x2e')](_0x3f1d3a[_0x3aaa('0x48')][_0x3aaa('0x2e')]);_0x5e9668['offset']=qs[_0x3aaa('0x31')](_0x3f1d3a[_0x3aaa('0x48')][_0x3aaa('0x31')]);}return _0x5cb00d[_0x3aaa('0xc4')](_0x5e9668);}})[_0x3aaa('0x36')](function(_0x452b89){if(_0x452b89){return _0x452b89?{'count':_0x491bba,'rows':_0x452b89}:null;}})[_0x3aaa('0x36')](respondWithResult(_0x26463a,null))[_0x3aaa('0x2b')](handleError(_0x26463a,null));};
\ No newline at end of file
index 273b358..93a68ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4816=['hasOwnProperty','hook','../../mysqldb','setMaxListeners','save','remove'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4816,0xfe));var _0x6481=function(_0x22589f,_0x3f33b7){_0x22589f=_0x22589f-0x0;var _0x4b1e54=_0x4816[_0x22589f];return _0x4b1e54;};'use strict';var EventEmitter=require('events');var MailAccount=require(_0x6481('0x0'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x6481('0x1')](0x0);var events={'afterCreate':_0x6481('0x2'),'afterUpdate':'update','afterDestroy':_0x6481('0x3')};function emitEvent(_0x4bd2a9){return function(_0x4d91e9,_0x34aab0,_0x22a7be){MailAccountEvents['emit'](_0x4bd2a9+':'+_0x4d91e9['id'],_0x4d91e9);MailAccountEvents['emit'](_0x4bd2a9,_0x4d91e9);_0x22a7be(null);};}for(var e in events){if(events[_0x6481('0x4')](e)){var event=events[e];MailAccount[_0x6481('0x5')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0xd61c=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailAccount'];(function(_0x30e48b,_0x43b4a6){var _0x2f83fc=function(_0x375af7){while(--_0x375af7){_0x30e48b['push'](_0x30e48b['shift']());}};_0x2f83fc(++_0x43b4a6);}(_0xd61c,0xb1));var _0xcd61=function(_0x48d811,_0x350513){_0x48d811=_0x48d811-0x0;var _0x3852cc=_0xd61c[_0x48d811];return _0x3852cc;};'use strict';var EventEmitter=require(_0xcd61('0x0'));var MailAccount=require(_0xcd61('0x1'))['db'][_0xcd61('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcd61('0x3'),'afterUpdate':'update','afterDestroy':_0xcd61('0x4')};function emitEvent(_0x244dad){return function(_0x26b81a,_0x3be823,_0x16c4c3){MailAccountEvents[_0xcd61('0x5')](_0x244dad+':'+_0x26b81a['id'],_0x26b81a);MailAccountEvents[_0xcd61('0x5')](_0x244dad,_0x26b81a);_0x16c4c3(null);};}for(var e in events){if(events[_0xcd61('0x6')](e)){var event=events[e];MailAccount[_0xcd61('0x7')](e,emitEvent(event));}}module[_0xcd61('0x8')]=MailAccountEvents;
\ No newline at end of file
index 83cc0e8..6b3fd0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf24d=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','lodash','../../config/logger'];(function(_0x44946b,_0xf874ec){var _0x249bc4=function(_0x40a23e){while(--_0x40a23e){_0x44946b['push'](_0x44946b['shift']());}};_0x249bc4(++_0xf874ec);}(_0xf24d,0x143));var _0xdf24=function(_0x26a44e,_0x18c43f){_0x26a44e=_0x26a44e-0x0;var _0x566fc4=_0xf24d[_0x26a44e];return _0x566fc4;};'use strict';var _=require(_0xdf24('0x0'));var util=require('util');var logger=require(_0xdf24('0x1'))('api');var moment=require(_0xdf24('0x2'));var BPromise=require(_0xdf24('0x3'));var rp=require(_0xdf24('0x4'));var fs=require('fs');var path=require(_0xdf24('0x5'));var rimraf=require(_0xdf24('0x6'));var config=require(_0xdf24('0x7'));var attributes=require(_0xdf24('0x8'));module[_0xdf24('0x9')]=function(_0x5e076e,_0x5bff20){return _0x5e076e[_0xdf24('0xa')](_0xdf24('0xb'),attributes,{'tableName':_0xdf24('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e06=['rimraf','../../config/environment','./mailAccount.attributes','define','MailAccount','mail_accounts','api','moment','bluebird','request-promise','path'];(function(_0x251a18,_0x57a948){var _0x52f3db=function(_0x37f304){while(--_0x37f304){_0x251a18['push'](_0x251a18['shift']());}};_0x52f3db(++_0x57a948);}(_0x9e06,0x95));var _0x69e0=function(_0x1fb7a7,_0x28de91){_0x1fb7a7=_0x1fb7a7-0x0;var _0x286149=_0x9e06[_0x1fb7a7];return _0x286149;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x69e0('0x0'));var moment=require(_0x69e0('0x1'));var BPromise=require(_0x69e0('0x2'));var rp=require(_0x69e0('0x3'));var fs=require('fs');var path=require(_0x69e0('0x4'));var rimraf=require(_0x69e0('0x5'));var config=require(_0x69e0('0x6'));var attributes=require(_0x69e0('0x7'));module['exports']=function(_0x213797,_0x5bbcf1){return _0x213797[_0x69e0('0x8')](_0x69e0('0x9'),attributes,{'tableName':_0x69e0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6251555..31e3907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f5a=['createdAt','updatedAt','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','find','account','CmList','DESC','MailApplication','Applications','get','omit','List','applications','orderBy','priority','asc','push','length','close','autoclose','*,*,*,*','Contacts','CmContact','create','List\x20not\x20found','contact','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','interaction','attachments','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachments','UserId','name','unshift','agent','startRouting','util','bluebird','randomstring','../../mysqldb','../../config/environment','client','http','defaults','localhost','socket.io-emitter','redis','./mailAccount.socket','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','MailAccount','findAll','options','raw','where','attributes','limit','include','model','map','GetMailAccount','ShowMailAccount','then','catch','NotifyMailAccount','body','mail','difference','keys'];(function(_0x1f26a0,_0x3e90cc){var _0x41b1cd=function(_0x5c24b2){while(--_0x5c24b2){_0x1f26a0['push'](_0x1f26a0['shift']());}};_0x41b1cd(++_0x3e90cc);}(_0x1f5a,0xf8));var _0xa1f5=function(_0x553cc5,_0x3816a8){_0x553cc5=_0x553cc5-0x0;var _0x480191=_0x1f5a[_0x553cc5];return _0x480191;};'use strict';var _=require('lodash');var util=require(_0xa1f5('0x0'));var moment=require('moment');var BPromise=require(_0xa1f5('0x1'));var rs=require(_0xa1f5('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa1f5('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xa1f5('0x4'));var jayson=require('jayson/promise');var client=jayson[_0xa1f5('0x5')][_0xa1f5('0x6')]({'port':0x232c});config['redis']=_[_0xa1f5('0x7')](config['redis'],{'host':_0xa1f5('0x8'),'port':0x18eb});var socket=require(_0xa1f5('0x9'))(new Redis(config[_0xa1f5('0xa')]));require(_0xa1f5('0xb'))['register'](socket);function respondWithRpcPromise(_0x24a2c6,_0x11ab89,_0x2eca3d){return new BPromise(function(_0x11999e,_0x16fb79){return client['request'](_0x24a2c6,_0x2eca3d)['then'](function(_0x3a2fcd){logger[_0xa1f5('0xc')](_0xa1f5('0xd'),_0x11ab89,_0xa1f5('0xe'));logger[_0xa1f5('0xf')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x11ab89,_0xa1f5('0xe'),JSON[_0xa1f5('0x10')](_0x3a2fcd));if(_0x3a2fcd['error']){if(_0x3a2fcd[_0xa1f5('0x11')][_0xa1f5('0x12')]===0x1f4){logger['error'](_0xa1f5('0xd'),_0x11ab89,_0x3a2fcd[_0xa1f5('0x11')][_0xa1f5('0x13')]);return _0x16fb79(_0x3a2fcd['error'][_0xa1f5('0x13')]);}logger[_0xa1f5('0x11')](_0xa1f5('0xd'),_0x11ab89,_0x3a2fcd[_0xa1f5('0x11')]['message']);return _0x11999e(_0x3a2fcd['error']['message']);}else{logger['info'](_0xa1f5('0xd'),_0x11ab89,'request\x20sent');_0x11999e(_0x3a2fcd[_0xa1f5('0x14')][_0xa1f5('0x13')]);}})['catch'](function(_0x3e5da6){logger['error']('MailAccount,\x20%s,\x20%s',_0x11ab89,_0x3e5da6);_0x16fb79(_0x3e5da6);});});}exports['GetMailAccount']=function(_0x29ad7f){var _0x4d0493=this;return new Promise(function(_0x52fc8c,_0x1e7e2c){return db[_0xa1f5('0x15')][_0xa1f5('0x16')]({'raw':_0x29ad7f[_0xa1f5('0x17')]?_0x29ad7f['options'][_0xa1f5('0x18')]===undefined?!![]:![]:!![],'where':_0x29ad7f['options']?_0x29ad7f[_0xa1f5('0x17')][_0xa1f5('0x19')]||null:null,'attributes':_0x29ad7f[_0xa1f5('0x17')]?_0x29ad7f[_0xa1f5('0x17')][_0xa1f5('0x1a')]||null:null,'limit':_0x29ad7f['options']?_0x29ad7f[_0xa1f5('0x17')][_0xa1f5('0x1b')]||null:null,'include':_0x29ad7f[_0xa1f5('0x17')]?_0x29ad7f[_0xa1f5('0x17')][_0xa1f5('0x1c')]?_['map'](_0x29ad7f[_0xa1f5('0x17')][_0xa1f5('0x1c')],function(_0x4b906d){return{'model':db[_0x4b906d[_0xa1f5('0x1d')]],'as':_0x4b906d['as'],'attributes':_0x4b906d[_0xa1f5('0x1a')],'include':_0x4b906d[_0xa1f5('0x1c')]?_[_0xa1f5('0x1e')](_0x4b906d['include'],function(_0x3a9321){return{'model':db[_0x3a9321[_0xa1f5('0x1d')]],'as':_0x3a9321['as'],'attributes':_0x3a9321[_0xa1f5('0x1a')],'include':_0x3a9321[_0xa1f5('0x1c')]?_[_0xa1f5('0x1e')](_0x3a9321[_0xa1f5('0x1c')],function(_0x3b833f){return{'model':db[_0x3b833f[_0xa1f5('0x1d')]],'as':_0x3b833f['as'],'attributes':_0x3b833f[_0xa1f5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xd39566){logger[_0xa1f5('0xc')](_0xa1f5('0x1f'),_0x29ad7f);logger[_0xa1f5('0xf')](_0xa1f5('0x1f'),_0x29ad7f,JSON['stringify'](_0xd39566));_0x52fc8c(_0xd39566);})['catch'](function(_0x4c29f8){logger[_0xa1f5('0x11')](_0xa1f5('0x1f'),_0x4c29f8[_0xa1f5('0x13')],_0x29ad7f);_0x1e7e2c(_0x4d0493[_0xa1f5('0x11')](0x1f4,_0x4c29f8[_0xa1f5('0x13')]));});});};exports[_0xa1f5('0x20')]=function(_0x5502d0){var _0x44e1b0=this;return new Promise(function(_0x15b4e6,_0x1b1f5e){return db[_0xa1f5('0x15')]['find']({'raw':_0x5502d0[_0xa1f5('0x17')]?_0x5502d0[_0xa1f5('0x17')][_0xa1f5('0x18')]===undefined?!![]:![]:!![],'where':_0x5502d0[_0xa1f5('0x17')]?_0x5502d0[_0xa1f5('0x17')][_0xa1f5('0x19')]||null:null,'attributes':_0x5502d0[_0xa1f5('0x17')]?_0x5502d0['options']['attributes']||null:null,'include':_0x5502d0[_0xa1f5('0x17')]?_0x5502d0[_0xa1f5('0x17')][_0xa1f5('0x1c')]?_[_0xa1f5('0x1e')](_0x5502d0[_0xa1f5('0x17')][_0xa1f5('0x1c')],function(_0x184b63){return{'model':db[_0x184b63[_0xa1f5('0x1d')]],'as':_0x184b63['as'],'attributes':_0x184b63[_0xa1f5('0x1a')],'include':_0x184b63[_0xa1f5('0x1c')]?_['map'](_0x184b63[_0xa1f5('0x1c')],function(_0x354f79){return{'model':db[_0x354f79['model']],'as':_0x354f79['as'],'attributes':_0x354f79[_0xa1f5('0x1a')],'include':_0x354f79[_0xa1f5('0x1c')]?_[_0xa1f5('0x1e')](_0x354f79['include'],function(_0x340ec3){return{'model':db[_0x340ec3[_0xa1f5('0x1d')]],'as':_0x340ec3['as'],'attributes':_0x340ec3[_0xa1f5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa1f5('0x21')](function(_0x3aea9c){logger[_0xa1f5('0xc')](_0xa1f5('0x20'),_0x5502d0);logger['debug'](_0xa1f5('0x20'),_0x5502d0,JSON[_0xa1f5('0x10')](_0x3aea9c));_0x15b4e6(_0x3aea9c);})[_0xa1f5('0x22')](function(_0x65b52){logger[_0xa1f5('0x11')]('ShowMailAccount',_0x65b52[_0xa1f5('0x13')],_0x5502d0);_0x1b1f5e(_0x44e1b0[_0xa1f5('0x11')](0x1f4,_0x65b52[_0xa1f5('0x13')]));});});};exports[_0xa1f5('0x23')]=function(_0x18d6f3){var _0x39c639=this;return new Promise(function(_0x52d020,_0x32a20a){var _0x278284={'body':_0x18d6f3[_0xa1f5('0x24')],'channel':_0xa1f5('0x25')};var _0x42e261=_[_0xa1f5('0x26')](_[_0xa1f5('0x27')](db['CmContact']['rawAttributes']),[_0xa1f5('0x28'),_0xa1f5('0x29'),'CompanyId',_0xa1f5('0x2a')]);var _0x1225fb=![];if(_0x18d6f3[_0xa1f5('0x24')]['id']){delete _0x18d6f3[_0xa1f5('0x24')]['id'];}if(_[_0xa1f5('0x2b')](_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x2c')])){return _0x32a20a(_0x39c639[_0xa1f5('0x11')](0x1f4,'from\x20is\x20mandatory'));}if(_['isNil'](_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x24')])||_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x24')]===''){return _0x32a20a(_0x39c639[_0xa1f5('0x11')](0x1f4,_0xa1f5('0x2d')));}if(_[_0xa1f5('0x2b')](_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x2e')])){return _0x32a20a(_0x39c639['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x42e261));}if(!_[_0xa1f5('0x2f')](_0x42e261,_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x2e')])){return _0x32a20a(_0x39c639[_0xa1f5('0x11')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x42e261));}var _0x3e23a7={};_0x3e23a7[_0x18d6f3['body'][_0xa1f5('0x2e')]]=_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x2c')];return db[_0xa1f5('0x15')][_0xa1f5('0x30')]({'where':{'id':_0x18d6f3[_0xa1f5('0x31')]['id']},'include':[{'model':db[_0xa1f5('0x32')],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':_0x3e23a7,'limit':0x1,'order':[[_0xa1f5('0x29'),_0xa1f5('0x33')]]}]},{'model':db[_0xa1f5('0x34')],'as':_0xa1f5('0x35')},{'model':db['MailServerOut'],'as':'Smtp'}]})[_0xa1f5('0x21')](function(_0x451526){if(_0x451526&&_0x451526['List']){var _0x310547=_0x451526[_0xa1f5('0x36')]({'plain':!![]});_0x278284[_0xa1f5('0x31')]=_[_0xa1f5('0x37')](_0x310547,['Applications',_0xa1f5('0x38')]);_0x278284[_0xa1f5('0x39')]=_0x310547[_0xa1f5('0x35')];_0x278284['list']=_0x310547['List'];_0x278284[_0xa1f5('0x39')]=_[_0xa1f5('0x3a')](_0x278284['applications'],[_0xa1f5('0x3b')],[_0xa1f5('0x3c')]);if(_0x278284[_0xa1f5('0x31')]&&_0x278284['account']['autoclose']){_0x278284[_0xa1f5('0x39')][_0xa1f5('0x3d')]({'id':0x0,'priority':_0x278284[_0xa1f5('0x39')][_0xa1f5('0x3e')]+0x1,'app':_0xa1f5('0x3f'),'appdata':_0xa1f5('0x40'),'interval':_0xa1f5('0x41')});}if(_0x278284[_0xa1f5('0x31')][_0xa1f5('0x35')]){delete _0x278284['account'][_0xa1f5('0x35')];}if(_0x278284[_0xa1f5('0x31')][_0xa1f5('0x38')]){delete _0x278284['account']['List'];}if(_0x310547[_0xa1f5('0x38')][_0xa1f5('0x42')][_0xa1f5('0x3e')]){return _0x310547[_0xa1f5('0x38')]['Contacts'][0x0];}var _0x3cf55a=_[_0xa1f5('0x7')](_0x18d6f3[_0xa1f5('0x24')],{'firstName':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x2c')],'ListId':_0x310547[_0xa1f5('0x2a')]});_0x3cf55a[_0x18d6f3['body'][_0xa1f5('0x2e')]]=_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x2c')];return db[_0xa1f5('0x43')][_0xa1f5('0x44')](_0x3cf55a);}else{throw new Error(_0xa1f5('0x45'));}})[_0xa1f5('0x21')](function(_0x4fb5f6){_0x278284[_0xa1f5('0x46')]=_0x4fb5f6;if(_0x4fb5f6){if(!_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')]['messageId']){_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x47')]=rs[_0xa1f5('0x48')]()+'\x20'+_0x18d6f3[_0xa1f5('0x24')]['message'][_0xa1f5('0x2c')];}var _0x142ca1={'ContactId':_0x4fb5f6['id'],'MailAccountId':_0x18d6f3[_0xa1f5('0x31')]['id'],'inReplyTo':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x47')],'to':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')]['from'],'cc':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')]['cc'],'subject':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x49')],'attach':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x4a')],'lastMsgAt':moment()[_0xa1f5('0x4b')](_0xa1f5('0x4c')),'lastMsgDirection':'in'};return db[_0xa1f5('0x4d')][_0xa1f5('0x30')]({'where':{'closed':![],'MailAccountId':_0x18d6f3['account']['id']},'include':[{'model':db[_0xa1f5('0x4e')],'as':_0xa1f5('0x4f'),'attributes':[_0xa1f5('0x47')],'where':{'messageId':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x50')]}}]})[_0xa1f5('0x21')](function(_0x2bae94){if(_0x2bae94){return[_0x2bae94,![]];}return db[_0xa1f5('0x4d')][_0xa1f5('0x44')](_0x142ca1)[_0xa1f5('0x21')](function(_0x552b70){return[_0x552b70,!![]];});});}else{throw new Error(_0xa1f5('0x51'));}})[_0xa1f5('0x52')](function(_0xa6b6a3,_0x1cfdf7){if(_0xa6b6a3){_0x1225fb=_0x1cfdf7;if(!_0x1cfdf7){return _0xa6b6a3['update']({'inReplyTo':_0x18d6f3['body'][_0xa1f5('0x13')][_0xa1f5('0x47')],'to':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x2c')],'cc':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')]['cc'],'subject':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x49')],'attach':_0xa6b6a3[_0xa1f5('0x4a')]?_0xa6b6a3[_0xa1f5('0x4a')]:_0x18d6f3['body'][_0xa1f5('0x13')][_0xa1f5('0x4a')],'substatus':null,'substatusAt':moment()[_0xa1f5('0x4b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0xa6b6a3;}}})[_0xa1f5('0x21')](function(_0x40fa91){_0x278284['interaction']=_0x40fa91[_0xa1f5('0x36')]({'plain':!![]});_0x278284[_0xa1f5('0x53')]['created']=_0x1225fb;return db[_0xa1f5('0x4e')]['create']({'body':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x24')],'MailAccountId':_0x18d6f3['account']['id'],'MailInteractionId':_0x40fa91['id'],'direction':'in','ContactId':_0x278284[_0xa1f5('0x46')]['id'],'messageId':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x47')],'from':_0x18d6f3['body'][_0xa1f5('0x13')][_0xa1f5('0x2c')],'to':_0x18d6f3[_0xa1f5('0x24')]['message']['to'],'cc':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')]['cc'],'subject':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x49')],'attach':_0x18d6f3['body']['message']['attach'],'Attachments':_0x18d6f3[_0xa1f5('0x24')]['message'][_0xa1f5('0x54')],'originTo':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')]['originTo'],'originCc':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x55')],'bcc':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')]['bcc'],'ChatWebsiteId':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x56')]||null,'originChannel':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x57')]||_0xa1f5('0x58'),'ChatOfflineMessageId':_0x18d6f3[_0xa1f5('0x24')][_0xa1f5('0x13')][_0xa1f5('0x59')]||null},{'include':[{'model':db['Attachment'],'as':_0xa1f5('0x5a')}]});})[_0xa1f5('0x21')](function(_0x10383c){_0x278284['message']=_0x10383c;if(_0x278284[_0xa1f5('0x53')][_0xa1f5('0x5b')]){return db['User'][_0xa1f5('0x30')]({'attributes':['id',_0xa1f5('0x5c')],'where':{'id':_0x278284[_0xa1f5('0x53')]['UserId']}})[_0xa1f5('0x21')](function(_0xf9e7c5){if(_0xf9e7c5){_0x278284[_0xa1f5('0x39')][_0xa1f5('0x5d')]({'id':0x0,'priority':0x0,'app':_0xa1f5('0x5e'),'appdata':_0xf9e7c5[_0xa1f5('0x5c')]+','+(_0x278284['account']['waitForTheAssignedAgent']||0xa),'interval':_0xa1f5('0x41')});}return respondWithRpcPromise('Start',_0xa1f5('0x5f'),_0x278284);});}return respondWithRpcPromise('Start',_0xa1f5('0x5f'),_0x278284);})[_0xa1f5('0x21')](function(_0x472434){_0x52d020(_0x472434);})[_0xa1f5('0x22')](function(_0x14d259){_0x32a20a(_0x39c639['error'](0x1f4,_0x14d259[_0xa1f5('0x13')]));});});};
\ No newline at end of file
+var _0xf693=['bcc','ChatWebsiteId','originChannel','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','MailAccount,\x20%s,\x20%s','message','result','catch','MailAccount','findAll','options','raw','where','attributes','limit','include','map','model','GetMailAccount','ShowMailAccount','find','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','List','Contacts','DESC','MailApplication','Applications','MailServerOut','Smtp','get','omit','applications','list','orderBy','priority','asc','autoclose','push','close','*,*,*,*','create','List\x20not\x20found','contact','messageId','generate','subject','attach','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','format','interaction','originTo','originCc'];(function(_0x2ba5f7,_0x493cb8){var _0x2f2368=function(_0x58f00f){while(--_0x58f00f){_0x2ba5f7['push'](_0x2ba5f7['shift']());}};_0x2f2368(++_0x493cb8);}(_0xf693,0xe8));var _0x3f69=function(_0xd5f76,_0x21411a){_0xd5f76=_0xd5f76-0x0;var _0x1ace93=_0xf693[_0xd5f76];return _0x1ace93;};'use strict';var _=require(_0x3f69('0x0'));var util=require('util');var moment=require(_0x3f69('0x1'));var BPromise=require(_0x3f69('0x2'));var rs=require(_0x3f69('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3f69('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3f69('0x5'));var config=require('../../config/environment');var jayson=require(_0x3f69('0x6'));var client=jayson[_0x3f69('0x7')]['http']({'port':0x232c});config[_0x3f69('0x8')]=_[_0x3f69('0x9')](config[_0x3f69('0x8')],{'host':_0x3f69('0xa'),'port':0x18eb});var socket=require(_0x3f69('0xb'))(new Redis(config[_0x3f69('0x8')]));require(_0x3f69('0xc'))[_0x3f69('0xd')](socket);function respondWithRpcPromise(_0x5baf01,_0x2646f0,_0xf56d3){return new BPromise(function(_0xe024ff,_0x10d134){return client[_0x3f69('0xe')](_0x5baf01,_0xf56d3)[_0x3f69('0xf')](function(_0x5518ee){logger[_0x3f69('0x10')]('MailAccount,\x20%s,\x20%s',_0x2646f0,_0x3f69('0x11'));logger[_0x3f69('0x12')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x2646f0,_0x3f69('0x11'),JSON[_0x3f69('0x13')](_0x5518ee));if(_0x5518ee[_0x3f69('0x14')]){if(_0x5518ee['error'][_0x3f69('0x15')]===0x1f4){logger['error'](_0x3f69('0x16'),_0x2646f0,_0x5518ee[_0x3f69('0x14')][_0x3f69('0x17')]);return _0x10d134(_0x5518ee[_0x3f69('0x14')]['message']);}logger['error'](_0x3f69('0x16'),_0x2646f0,_0x5518ee[_0x3f69('0x14')][_0x3f69('0x17')]);return _0xe024ff(_0x5518ee[_0x3f69('0x14')][_0x3f69('0x17')]);}else{logger[_0x3f69('0x10')](_0x3f69('0x16'),_0x2646f0,_0x3f69('0x11'));_0xe024ff(_0x5518ee[_0x3f69('0x18')]['message']);}})[_0x3f69('0x19')](function(_0x4f92d7){logger[_0x3f69('0x14')]('MailAccount,\x20%s,\x20%s',_0x2646f0,_0x4f92d7);_0x10d134(_0x4f92d7);});});}exports['GetMailAccount']=function(_0x335505){var _0xc2f8a=this;return new Promise(function(_0x33eb5a,_0x3d34db){return db[_0x3f69('0x1a')][_0x3f69('0x1b')]({'raw':_0x335505[_0x3f69('0x1c')]?_0x335505[_0x3f69('0x1c')][_0x3f69('0x1d')]===undefined?!![]:![]:!![],'where':_0x335505[_0x3f69('0x1c')]?_0x335505[_0x3f69('0x1c')][_0x3f69('0x1e')]||null:null,'attributes':_0x335505[_0x3f69('0x1c')]?_0x335505[_0x3f69('0x1c')][_0x3f69('0x1f')]||null:null,'limit':_0x335505[_0x3f69('0x1c')]?_0x335505[_0x3f69('0x1c')][_0x3f69('0x20')]||null:null,'include':_0x335505[_0x3f69('0x1c')]?_0x335505['options'][_0x3f69('0x21')]?_[_0x3f69('0x22')](_0x335505[_0x3f69('0x1c')][_0x3f69('0x21')],function(_0x34ebd1){return{'model':db[_0x34ebd1[_0x3f69('0x23')]],'as':_0x34ebd1['as'],'attributes':_0x34ebd1[_0x3f69('0x1f')],'include':_0x34ebd1[_0x3f69('0x21')]?_['map'](_0x34ebd1[_0x3f69('0x21')],function(_0x71f375){return{'model':db[_0x71f375['model']],'as':_0x71f375['as'],'attributes':_0x71f375['attributes'],'include':_0x71f375[_0x3f69('0x21')]?_[_0x3f69('0x22')](_0x71f375[_0x3f69('0x21')],function(_0x22641a){return{'model':db[_0x22641a[_0x3f69('0x23')]],'as':_0x22641a['as'],'attributes':_0x22641a[_0x3f69('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x3f69('0xf')](function(_0x448f72){logger[_0x3f69('0x10')](_0x3f69('0x24'),_0x335505);logger[_0x3f69('0x12')](_0x3f69('0x24'),_0x335505,JSON[_0x3f69('0x13')](_0x448f72));_0x33eb5a(_0x448f72);})[_0x3f69('0x19')](function(_0x3c2b63){logger['error'](_0x3f69('0x24'),_0x3c2b63[_0x3f69('0x17')],_0x335505);_0x3d34db(_0xc2f8a[_0x3f69('0x14')](0x1f4,_0x3c2b63[_0x3f69('0x17')]));});});};exports[_0x3f69('0x25')]=function(_0xb91bac){var _0x2023c0=this;return new Promise(function(_0x3172f8,_0x52ba90){return db[_0x3f69('0x1a')][_0x3f69('0x26')]({'raw':_0xb91bac[_0x3f69('0x1c')]?_0xb91bac['options'][_0x3f69('0x1d')]===undefined?!![]:![]:!![],'where':_0xb91bac[_0x3f69('0x1c')]?_0xb91bac[_0x3f69('0x1c')][_0x3f69('0x1e')]||null:null,'attributes':_0xb91bac[_0x3f69('0x1c')]?_0xb91bac['options']['attributes']||null:null,'include':_0xb91bac[_0x3f69('0x1c')]?_0xb91bac[_0x3f69('0x1c')][_0x3f69('0x21')]?_[_0x3f69('0x22')](_0xb91bac[_0x3f69('0x1c')]['include'],function(_0x25666a){return{'model':db[_0x25666a[_0x3f69('0x23')]],'as':_0x25666a['as'],'attributes':_0x25666a['attributes'],'include':_0x25666a[_0x3f69('0x21')]?_[_0x3f69('0x22')](_0x25666a[_0x3f69('0x21')],function(_0x5dbfcd){return{'model':db[_0x5dbfcd['model']],'as':_0x5dbfcd['as'],'attributes':_0x5dbfcd[_0x3f69('0x1f')],'include':_0x5dbfcd[_0x3f69('0x21')]?_['map'](_0x5dbfcd['include'],function(_0x4cae27){return{'model':db[_0x4cae27[_0x3f69('0x23')]],'as':_0x4cae27['as'],'attributes':_0x4cae27[_0x3f69('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x3f69('0xf')](function(_0x4b455d){logger[_0x3f69('0x10')](_0x3f69('0x25'),_0xb91bac);logger[_0x3f69('0x12')](_0x3f69('0x25'),_0xb91bac,JSON['stringify'](_0x4b455d));_0x3172f8(_0x4b455d);})['catch'](function(_0x596c00){logger[_0x3f69('0x14')]('ShowMailAccount',_0x596c00[_0x3f69('0x17')],_0xb91bac);_0x52ba90(_0x2023c0[_0x3f69('0x14')](0x1f4,_0x596c00[_0x3f69('0x17')]));});});};exports[_0x3f69('0x27')]=function(_0x5ade7a){var _0x3e3187=this;return new Promise(function(_0x39be06,_0x303825){var _0x289148={'body':_0x5ade7a[_0x3f69('0x28')],'channel':_0x3f69('0x29')};var _0x425e3b=_[_0x3f69('0x2a')](_[_0x3f69('0x2b')](db[_0x3f69('0x2c')][_0x3f69('0x2d')]),[_0x3f69('0x2e'),_0x3f69('0x2f'),_0x3f69('0x30'),_0x3f69('0x31')]);var _0x2aed2b=![];if(_0x5ade7a[_0x3f69('0x28')]['id']){delete _0x5ade7a[_0x3f69('0x28')]['id'];}if(_[_0x3f69('0x32')](_0x5ade7a[_0x3f69('0x28')]['from'])){return _0x303825(_0x3e3187[_0x3f69('0x14')](0x1f4,_0x3f69('0x33')));}if(_[_0x3f69('0x32')](_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x28')])||_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x28')]===''){return _0x303825(_0x3e3187[_0x3f69('0x14')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x3f69('0x32')](_0x5ade7a['body']['mapKey'])){return _0x303825(_0x3e3187['error'](0x1f4,_0x3f69('0x34')+_0x425e3b));}if(!_[_0x3f69('0x35')](_0x425e3b,_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x36')])){return _0x303825(_0x3e3187[_0x3f69('0x14')](0x1f4,_0x3f69('0x37')+_0x425e3b));}var _0x35540e={};_0x35540e[_0x5ade7a['body'][_0x3f69('0x36')]]=_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x38')];return db[_0x3f69('0x1a')][_0x3f69('0x26')]({'where':{'id':_0x5ade7a[_0x3f69('0x39')]['id']},'include':[{'model':db[_0x3f69('0x3a')],'as':_0x3f69('0x3b'),'include':[{'model':db[_0x3f69('0x2c')],'as':_0x3f69('0x3c'),'where':_0x35540e,'limit':0x1,'order':[[_0x3f69('0x2f'),_0x3f69('0x3d')]]}]},{'model':db[_0x3f69('0x3e')],'as':_0x3f69('0x3f')},{'model':db[_0x3f69('0x40')],'as':_0x3f69('0x41')}]})['then'](function(_0x521b3a){if(_0x521b3a&&_0x521b3a[_0x3f69('0x3b')]){var _0x335ef2=_0x521b3a[_0x3f69('0x42')]({'plain':!![]});_0x289148[_0x3f69('0x39')]=_[_0x3f69('0x43')](_0x335ef2,[_0x3f69('0x3f'),_0x3f69('0x3b')]);_0x289148[_0x3f69('0x44')]=_0x335ef2['Applications'];_0x289148[_0x3f69('0x45')]=_0x335ef2[_0x3f69('0x3b')];_0x289148[_0x3f69('0x44')]=_[_0x3f69('0x46')](_0x289148[_0x3f69('0x44')],[_0x3f69('0x47')],[_0x3f69('0x48')]);if(_0x289148[_0x3f69('0x39')]&&_0x289148[_0x3f69('0x39')][_0x3f69('0x49')]){_0x289148[_0x3f69('0x44')][_0x3f69('0x4a')]({'id':0x0,'priority':_0x289148[_0x3f69('0x44')]['length']+0x1,'app':_0x3f69('0x4b'),'appdata':_0x3f69('0x49'),'interval':_0x3f69('0x4c')});}if(_0x289148[_0x3f69('0x39')][_0x3f69('0x3f')]){delete _0x289148[_0x3f69('0x39')][_0x3f69('0x3f')];}if(_0x289148['account'][_0x3f69('0x3b')]){delete _0x289148[_0x3f69('0x39')][_0x3f69('0x3b')];}if(_0x335ef2['List']['Contacts']['length']){return _0x335ef2['List'][_0x3f69('0x3c')][0x0];}var _0x56128a=_['defaults'](_0x5ade7a[_0x3f69('0x28')],{'firstName':_0x5ade7a[_0x3f69('0x28')]['from'],'ListId':_0x335ef2['ListId']});_0x56128a[_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x36')]]=_0x5ade7a['body'][_0x3f69('0x38')];return db['CmContact'][_0x3f69('0x4d')](_0x56128a);}else{throw new Error(_0x3f69('0x4e'));}})[_0x3f69('0xf')](function(_0x56465e){_0x289148[_0x3f69('0x4f')]=_0x56465e;if(_0x56465e){if(!_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x50')]){_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x50')]=rs[_0x3f69('0x51')]()+'\x20'+_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x38')];}var _0x2f5ce6={'ContactId':_0x56465e['id'],'MailAccountId':_0x5ade7a[_0x3f69('0x39')]['id'],'inReplyTo':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')]['messageId'],'to':_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x38')],'cc':_0x5ade7a[_0x3f69('0x28')]['message']['cc'],'subject':_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x52')],'attach':_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x53')],'lastMsgAt':moment()['format'](_0x3f69('0x54')),'lastMsgDirection':'in'};return db[_0x3f69('0x55')]['find']({'where':{'closed':![],'MailAccountId':_0x5ade7a[_0x3f69('0x39')]['id']},'include':[{'model':db[_0x3f69('0x56')],'as':_0x3f69('0x57'),'attributes':[_0x3f69('0x50')],'where':{'messageId':_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x58')]}}]})[_0x3f69('0xf')](function(_0x47c09f){if(_0x47c09f){return[_0x47c09f,![]];}return db['MailInteraction'][_0x3f69('0x4d')](_0x2f5ce6)['then'](function(_0x2dc0aa){return[_0x2dc0aa,!![]];});});}else{throw new Error(_0x3f69('0x59'));}})[_0x3f69('0x5a')](function(_0x50a3c2,_0x49d8ab){if(_0x50a3c2){_0x2aed2b=_0x49d8ab;if(!_0x49d8ab){return _0x50a3c2['update']({'inReplyTo':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x50')],'to':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x38')],'cc':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')]['cc'],'subject':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')]['subject'],'attach':_0x50a3c2[_0x3f69('0x53')]?_0x50a3c2[_0x3f69('0x53')]:_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x53')],'substatus':null,'substatusAt':moment()[_0x3f69('0x5b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x3f69('0x5b')](_0x3f69('0x54')),'lastMsgDirection':'in'});}else{return _0x50a3c2;}}})[_0x3f69('0xf')](function(_0x534664){_0x289148[_0x3f69('0x5c')]=_0x534664[_0x3f69('0x42')]({'plain':!![]});_0x289148[_0x3f69('0x5c')]['created']=_0x2aed2b;return db[_0x3f69('0x56')][_0x3f69('0x4d')]({'body':_0x5ade7a['body'][_0x3f69('0x28')],'MailAccountId':_0x5ade7a[_0x3f69('0x39')]['id'],'MailInteractionId':_0x534664['id'],'direction':'in','ContactId':_0x289148[_0x3f69('0x4f')]['id'],'messageId':_0x5ade7a['body'][_0x3f69('0x17')]['messageId'],'from':_0x5ade7a['body']['message'][_0x3f69('0x38')],'to':_0x5ade7a[_0x3f69('0x28')]['message']['to'],'cc':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')]['cc'],'subject':_0x5ade7a['body']['message']['subject'],'attach':_0x5ade7a['body'][_0x3f69('0x17')][_0x3f69('0x53')],'Attachments':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')]['attachments'],'originTo':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x5d')],'originCc':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x5e')],'bcc':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x5f')],'ChatWebsiteId':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x60')]||null,'originChannel':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x61')]||'Email','ChatOfflineMessageId':_0x5ade7a[_0x3f69('0x28')][_0x3f69('0x17')][_0x3f69('0x62')]||null},{'include':[{'model':db[_0x3f69('0x63')],'as':_0x3f69('0x64')}]});})[_0x3f69('0xf')](function(_0x2f17be){_0x289148[_0x3f69('0x17')]=_0x2f17be;if(_0x289148[_0x3f69('0x5c')][_0x3f69('0x65')]){return db[_0x3f69('0x66')][_0x3f69('0x26')]({'attributes':['id',_0x3f69('0x67')],'where':{'id':_0x289148[_0x3f69('0x5c')]['UserId']}})[_0x3f69('0xf')](function(_0x298bec){if(_0x298bec){_0x289148[_0x3f69('0x44')][_0x3f69('0x68')]({'id':0x0,'priority':0x0,'app':_0x3f69('0x69'),'appdata':_0x298bec[_0x3f69('0x67')]+','+(_0x289148[_0x3f69('0x39')][_0x3f69('0x6a')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x3f69('0x6b'),_0x3f69('0x6c'),_0x289148);});}return respondWithRpcPromise(_0x3f69('0x6b'),_0x3f69('0x6c'),_0x289148);})[_0x3f69('0xf')](function(_0x2ca227){_0x39be06(_0x2ca227);})['catch'](function(_0x33530f){_0x303825(_0x3e3187[_0x3f69('0x14')](0x1f4,_0x33530f[_0x3f69('0x17')]));});});};
\ No newline at end of file
index e8ab5b9..bbebe68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa664=['update','removeListener','register','length','mailAccount:','save','remove'];(function(_0x155232,_0x834d44){var _0x2edc07=function(_0x483b2f){while(--_0x483b2f){_0x155232['push'](_0x155232['shift']());}};_0x2edc07(++_0x834d44);}(_0xa664,0x132));var _0x4a66=function(_0x59ef16,_0x39e718){_0x59ef16=_0x59ef16-0x0;var _0x39b70f=_0xa664[_0x59ef16];return _0x39b70f;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=[_0x4a66('0x0'),_0x4a66('0x1'),_0x4a66('0x2')];function createListener(_0x293039,_0x5b1cd9){return function(_0x2a4e18){_0x5b1cd9['emit'](_0x293039,_0x2a4e18);};}function removeListener(_0x49f17c,_0x12b396){return function(){MailAccountEvents[_0x4a66('0x3')](_0x49f17c,_0x12b396);};}exports[_0x4a66('0x4')]=function(_0x2661f8){for(var _0x3dd553=0x0,_0x3fe28c=events[_0x4a66('0x5')];_0x3dd553<_0x3fe28c;_0x3dd553++){var _0x521808=events[_0x3dd553];var _0x4484c5=createListener(_0x4a66('0x6')+_0x521808,_0x2661f8);MailAccountEvents['on'](_0x521808,_0x4484c5);}};
\ No newline at end of file
+var _0xe203=['register','mailAccount:','./mailAccount.events','save','remove','update'];(function(_0x20501a,_0x374dfa){var _0x110d64=function(_0x5ab3c6){while(--_0x5ab3c6){_0x20501a['push'](_0x20501a['shift']());}};_0x110d64(++_0x374dfa);}(_0xe203,0x1be));var _0x3e20=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe203[_0x3dd15e];return _0x231fd0;};'use strict';var MailAccountEvents=require(_0x3e20('0x0'));var events=[_0x3e20('0x1'),_0x3e20('0x2'),_0x3e20('0x3')];function createListener(_0x48c31b,_0x2c2963){return function(_0x5703c6){_0x2c2963['emit'](_0x48c31b,_0x5703c6);};}function removeListener(_0x409b11,_0x3d433b){return function(){MailAccountEvents['removeListener'](_0x409b11,_0x3d433b);};}exports[_0x3e20('0x4')]=function(_0x5c00a8){for(var _0x39e0d9=0x0,_0x57249a=events['length'];_0x39e0d9<_0x57249a;_0x39e0d9++){var _0x3e384e=events[_0x39e0d9];var _0x467332=createListener(_0x3e20('0x5')+_0x3e384e,_0x5c00a8);MailAccountEvents['on'](_0x3e384e,_0x467332);}};
\ No newline at end of file
index 776bfdc..b45e589 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36d8=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','multer'];(function(_0x2d45a0,_0x4c1f6b){var _0x216510=function(_0x12f092){while(--_0x12f092){_0x2d45a0['push'](_0x2d45a0['shift']());}};_0x216510(++_0x4c1f6b);}(_0x36d8,0x11f));var _0x836d=function(_0x376bf2,_0x5d64ed){_0x376bf2=_0x376bf2-0x0;var _0x39ee04=_0x36d8[_0x376bf2];return _0x39ee04;};'use strict';var multer=require(_0x836d('0x0'));var util=require('util');var path=require(_0x836d('0x1'));var timeout=require(_0x836d('0x2'));var express=require('express');var router=express[_0x836d('0x3')]();var fs_extra=require(_0x836d('0x4'));var auth=require(_0x836d('0x5'));var interaction=require(_0x836d('0x6'));var config=require(_0x836d('0x7'));var controller=require(_0x836d('0x8'));router[_0x836d('0x9')](_0x836d('0xa'),auth[_0x836d('0xb')](),controller[_0x836d('0xc')]);router[_0x836d('0xd')](_0x836d('0xa'),auth[_0x836d('0xb')](),controller[_0x836d('0xe')]);router[_0x836d('0xf')](_0x836d('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x3441=['get','/:id','isAuthenticated','put','update','delete','destroy','exports','multer','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller'];(function(_0xd75658,_0x3693c8){var _0x3c07bb=function(_0x1e5b86){while(--_0x1e5b86){_0xd75658['push'](_0xd75658['shift']());}};_0x3c07bb(++_0x3693c8);}(_0x3441,0x134));var _0x1344=function(_0x3489dc,_0x5c9f11){_0x3489dc=_0x3489dc-0x0;var _0x53b272=_0x3441[_0x3489dc];return _0x53b272;};'use strict';var multer=require(_0x1344('0x0'));var util=require('util');var path=require(_0x1344('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1344('0x2'));var auth=require(_0x1344('0x3'));var interaction=require(_0x1344('0x4'));var config=require(_0x1344('0x5'));var controller=require(_0x1344('0x6'));router[_0x1344('0x7')](_0x1344('0x8'),auth[_0x1344('0x9')](),controller['show']);router[_0x1344('0xa')](_0x1344('0x8'),auth[_0x1344('0x9')](),controller[_0x1344('0xb')]);router[_0x1344('0xc')](_0x1344('0x8'),auth[_0x1344('0x9')](),controller[_0x1344('0xd')]);module[_0x1344('0xe')]=router;
\ No newline at end of file
index 094d995..51a599d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37de=['sequelize','INTEGER','STRING','noop','TEXT'];(function(_0x46b22a,_0x5bf83a){var _0x44c2e8=function(_0x21b6fc){while(--_0x21b6fc){_0x46b22a['push'](_0x46b22a['shift']());}};_0x44c2e8(++_0x5bf83a);}(_0x37de,0x1ef));var _0xe37d=function(_0x34537f,_0x213a48){_0x34537f=_0x34537f-0x0;var _0x4bc478=_0x37de[_0x34537f];return _0x4bc478;};'use strict';var Sequelize=require(_0xe37d('0x0'));module['exports']={'priority':{'type':Sequelize[_0xe37d('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xe37d('0x2')],'allowNull':![],'defaultValue':_0xe37d('0x3')},'appdata':{'type':Sequelize[_0xe37d('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xe37d('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x5b2a=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x1346db,_0x3b5b3a){var _0x2c600a=function(_0x436258){while(--_0x436258){_0x1346db['push'](_0x1346db['shift']());}};_0x2c600a(++_0x3b5b3a);}(_0x5b2a,0x1bd));var _0xa5b2=function(_0x1d5ba8,_0x412a52){_0x1d5ba8=_0x1d5ba8-0x0;var _0x1022a2=_0x5b2a[_0x1d5ba8];return _0x1022a2;};'use strict';var Sequelize=require(_0xa5b2('0x0'));module[_0xa5b2('0x1')]={'priority':{'type':Sequelize[_0xa5b2('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xa5b2('0x3')],'allowNull':![],'defaultValue':_0xa5b2('0x4')},'appdata':{'type':Sequelize[_0xa5b2('0x5')]()},'description':{'type':Sequelize[_0xa5b2('0x3')]},'interval':{'type':Sequelize[_0xa5b2('0x3')],'defaultValue':_0xa5b2('0x6')}};
\ No newline at end of file
index 281aed1..49f084e 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(_0x3ae80,_0x44966e){var _0x4ef7ec=function(_0x5d3ac8){while(--_0x5d3ac8){_0x3ae80['push'](_0x3ae80['shift']());}};_0x4ef7ec(++_0x44966e);}(_0xb43b,0x1b2));var _0xbb43=function(_0x72d46,_0x407a95){_0x72d46=_0x72d46-0x0;var _0x1a1bfd=_0xb43b[_0x72d46];return _0x1a1bfd;};'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 _0x54ef=['api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','name','show','params','model','rawAttributes','query','keys','filters','intersection','attributes','fields','length','merge','options','MailApplication','find','body','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x57fd2a,_0x19d5ca){var _0x416a50=function(_0x8b1eac){while(--_0x8b1eac){_0x57fd2a['push'](_0x57fd2a['shift']());}};_0x416a50(++_0x19d5ca);}(_0x54ef,0x112));var _0xf54e=function(_0x3936f9,_0x420945){_0x3936f9=_0x3936f9-0x0;var _0x14d47d=_0x54ef[_0x3936f9];return _0x14d47d;};'use strict';var emlformat=require(_0xf54e('0x0'));var rimraf=require(_0xf54e('0x1'));var zipdir=require(_0xf54e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf54e('0x3'));var moment=require(_0xf54e('0x4'));var BPromise=require(_0xf54e('0x5'));var Mustache=require(_0xf54e('0x6'));var util=require(_0xf54e('0x7'));var path=require(_0xf54e('0x8'));var sox=require(_0xf54e('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf54e('0xa'));var _=require(_0xf54e('0xb'));var squel=require(_0xf54e('0xc'));var crypto=require('crypto');var jsforce=require(_0xf54e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf54e('0xe'));var querystring=require(_0xf54e('0xf'));var Papa=require('papaparse');var Redis=require(_0xf54e('0x10'));var authService=require(_0xf54e('0x11'));var qs=require(_0xf54e('0x12'));var as=require(_0xf54e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf54e('0x14'))(_0xf54e('0x15'));var utils=require(_0xf54e('0x16'));var config=require(_0xf54e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf54e('0x18'))['db'];function respondWithStatusCode(_0x4b0ee1,_0x4bd828){_0x4bd828=_0x4bd828||0xcc;return function(_0x15a9d4){if(_0x15a9d4){return _0x4b0ee1[_0xf54e('0x19')](_0x4bd828);}return _0x4b0ee1[_0xf54e('0x1a')](_0x4bd828)[_0xf54e('0x1b')]();};}function respondWithResult(_0x5644aa,_0x331732){_0x331732=_0x331732||0xc8;return function(_0x1bbeaa){if(_0x1bbeaa){return _0x5644aa[_0xf54e('0x1a')](_0x331732)[_0xf54e('0x1c')](_0x1bbeaa);}};}function respondWithFilteredResult(_0x56828e,_0x2366ee){return function(_0x389abc){if(_0x389abc){var _0x3eb415=typeof _0x2366ee['offset']==='undefined'&&typeof _0x2366ee[_0xf54e('0x1d')]===_0xf54e('0x1e');var _0x1c02e7=_0x389abc[_0xf54e('0x1f')];var _0x15cc48=_0x3eb415?0x0:_0x2366ee[_0xf54e('0x20')];var _0x2e27b6=_0x3eb415?_0x389abc[_0xf54e('0x1f')]:_0x2366ee[_0xf54e('0x20')]+_0x2366ee[_0xf54e('0x1d')];var _0x226c96;if(_0x2e27b6>=_0x1c02e7){_0x2e27b6=_0x1c02e7;_0x226c96=0xc8;}else{_0x226c96=0xce;}_0x56828e['status'](_0x226c96);return _0x56828e['set'](_0xf54e('0x21'),_0x15cc48+'-'+_0x2e27b6+'/'+_0x1c02e7)['json'](_0x389abc);}return null;};}function patchUpdates(_0x3e1556){return function(_0x1bfe99){try{jsonpatch[_0xf54e('0x22')](_0x1bfe99,_0x3e1556,!![]);}catch(_0x9903fc){return BPromise[_0xf54e('0x23')](_0x9903fc);}return _0x1bfe99[_0xf54e('0x24')]();};}function saveUpdates(_0x388aa0,_0x11985e){return function(_0x3c0169){if(_0x3c0169){return _0x3c0169[_0xf54e('0x25')](_0x388aa0)[_0xf54e('0x26')](function(_0x5b83df){return _0x5b83df;});}return null;};}function removeEntity(_0x6f6d29,_0x54f914){return function(_0x264a8f){if(_0x264a8f){return _0x264a8f[_0xf54e('0x27')]()[_0xf54e('0x26')](function(){_0x6f6d29[_0xf54e('0x1a')](0xcc)[_0xf54e('0x1b')]();});}};}function handleEntityNotFound(_0x160160,_0x1e08d1){return function(_0x43488d){if(!_0x43488d){_0x160160[_0xf54e('0x19')](0x194);}return _0x43488d;};}function handleError(_0x33457f,_0xf6cdd7){_0xf6cdd7=_0xf6cdd7||0x1f4;return function(_0x39c0ae){logger[_0xf54e('0x28')](_0x39c0ae['stack']);if(_0x39c0ae[_0xf54e('0x29')]){delete _0x39c0ae['name'];}_0x33457f[_0xf54e('0x1a')](_0xf6cdd7)['send'](_0x39c0ae);};}exports[_0xf54e('0x2a')]=function(_0x269f47,_0x21ba00){var _0xa13cd0={'raw':!![],'where':{'id':_0x269f47[_0xf54e('0x2b')]['id']}},_0x25b643={};_0x25b643[_0xf54e('0x2c')]=_['keys'](db['MailApplication'][_0xf54e('0x2d')]);_0x25b643[_0xf54e('0x2e')]=_[_0xf54e('0x2f')](_0x269f47[_0xf54e('0x2e')]);_0x25b643[_0xf54e('0x30')]=_[_0xf54e('0x31')](_0x25b643[_0xf54e('0x2c')],_0x25b643[_0xf54e('0x2e')]);_0xa13cd0[_0xf54e('0x32')]=_[_0xf54e('0x31')](_0x25b643['model'],qs['fields'](_0x269f47[_0xf54e('0x2e')][_0xf54e('0x33')]));_0xa13cd0['attributes']=_0xa13cd0[_0xf54e('0x32')][_0xf54e('0x34')]?_0xa13cd0[_0xf54e('0x32')]:_0x25b643[_0xf54e('0x2c')];if(_0x269f47['query']['includeAll']){_0xa13cd0['include']=[{'all':!![]}];}_0xa13cd0=_[_0xf54e('0x35')]({},_0xa13cd0,_0x269f47[_0xf54e('0x36')]);return db[_0xf54e('0x37')][_0xf54e('0x38')](_0xa13cd0)[_0xf54e('0x26')](handleEntityNotFound(_0x21ba00,null))[_0xf54e('0x26')](respondWithResult(_0x21ba00,null))['catch'](handleError(_0x21ba00,null));};exports['update']=function(_0x530cee,_0xc04e04){if(_0x530cee[_0xf54e('0x39')]['id']){delete _0x530cee['body']['id'];}return db['MailApplication'][_0xf54e('0x38')]({'where':{'id':_0x530cee[_0xf54e('0x2b')]['id']}})[_0xf54e('0x26')](handleEntityNotFound(_0xc04e04,null))['then'](saveUpdates(_0x530cee[_0xf54e('0x39')],null))[_0xf54e('0x26')](respondWithResult(_0xc04e04,null))['catch'](handleError(_0xc04e04,null));};exports[_0xf54e('0x27')]=function(_0x6e5bdf,_0x5af03){return db[_0xf54e('0x37')][_0xf54e('0x38')]({'where':{'id':_0x6e5bdf[_0xf54e('0x2b')]['id']}})['then'](handleEntityNotFound(_0x5af03,null))['then'](removeEntity(_0x5af03,null))[_0xf54e('0x3a')](handleError(_0x5af03,null));};
\ No newline at end of file
index abdbbc1..8c9d05c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99ef=['utf8mb4','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define'];(function(_0x2a2e1b,_0x533801){var _0xd4402b=function(_0x5eb43f){while(--_0x5eb43f){_0x2a2e1b['push'](_0x2a2e1b['shift']());}};_0xd4402b(++_0x533801);}(_0x99ef,0x1c9));var _0xf99e=function(_0x74892f,_0x1e981b){_0x74892f=_0x74892f-0x0;var _0x10ee61=_0x99ef[_0x74892f];return _0x10ee61;};'use strict';var _=require(_0xf99e('0x0'));var util=require('util');var logger=require(_0xf99e('0x1'))(_0xf99e('0x2'));var moment=require(_0xf99e('0x3'));var BPromise=require('bluebird');var rp=require(_0xf99e('0x4'));var fs=require('fs');var path=require(_0xf99e('0x5'));var rimraf=require(_0xf99e('0x6'));var config=require(_0xf99e('0x7'));var attributes=require(_0xf99e('0x8'));module[_0xf99e('0x9')]=function(_0x3c93a3,_0x468ac0){return _0x3c93a3[_0xf99e('0xa')]('MailApplication',attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf99e('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x171e=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','lodash','util'];(function(_0xefba94,_0x5dfd6e){var _0x3d6fb5=function(_0x4dfdae){while(--_0x4dfdae){_0xefba94['push'](_0xefba94['shift']());}};_0x3d6fb5(++_0x5dfd6e);}(_0x171e,0x14e));var _0xe171=function(_0x717fa,_0x441fee){_0x717fa=_0x717fa-0x0;var _0x10cb8a=_0x171e[_0x717fa];return _0x10cb8a;};'use strict';var _=require(_0xe171('0x0'));var util=require(_0xe171('0x1'));var logger=require(_0xe171('0x2'))(_0xe171('0x3'));var moment=require('moment');var BPromise=require(_0xe171('0x4'));var rp=require(_0xe171('0x5'));var fs=require('fs');var path=require(_0xe171('0x6'));var rimraf=require(_0xe171('0x7'));var config=require(_0xe171('0x8'));var attributes=require(_0xe171('0x9'));module[_0xe171('0xa')]=function(_0x44c91f,_0x212d34){return _0x44c91f[_0xe171('0xb')](_0xe171('0xc'),attributes,{'tableName':_0xe171('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 3702be1..6e90857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe43e=['where','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','MailApplication,\x20%s,\x20%s','debug','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','result','UpdateMailApplication','raw','options'];(function(_0x39df23,_0x587e5b){var _0x3f812d=function(_0x58300c){while(--_0x58300c){_0x39df23['push'](_0x39df23['shift']());}};_0x3f812d(++_0x587e5b);}(_0xe43e,0x18a));var _0xee43=function(_0x34f82a,_0x2458d6){_0x34f82a=_0x34f82a-0x0;var _0x1c9c1f=_0xe43e[_0x34f82a];return _0x1c9c1f;};'use strict';var _=require(_0xee43('0x0'));var util=require(_0xee43('0x1'));var moment=require(_0xee43('0x2'));var BPromise=require(_0xee43('0x3'));var rs=require(_0xee43('0x4'));var fs=require('fs');var Redis=require(_0xee43('0x5'));var db=require(_0xee43('0x6'))['db'];var utils=require(_0xee43('0x7'));var logger=require(_0xee43('0x8'))('rpc');var config=require(_0xee43('0x9'));var jayson=require(_0xee43('0xa'));var client=jayson[_0xee43('0xb')][_0xee43('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x21ef52,_0x4c90ae,_0xd95b80){return new BPromise(function(_0x45ae30,_0x34f249){return client[_0xee43('0xd')](_0x21ef52,_0xd95b80)['then'](function(_0x4f6658){logger[_0xee43('0xe')](_0xee43('0xf'),_0x4c90ae,'request\x20sent');logger[_0xee43('0x10')](_0xee43('0x11'),_0x4c90ae,_0xee43('0x12'),JSON['stringify'](_0x4f6658));if(_0x4f6658['error']){if(_0x4f6658['error'][_0xee43('0x13')]===0x1f4){logger[_0xee43('0x14')](_0xee43('0xf'),_0x4c90ae,_0x4f6658[_0xee43('0x14')][_0xee43('0x15')]);return _0x34f249(_0x4f6658[_0xee43('0x14')]['message']);}logger['error'](_0xee43('0xf'),_0x4c90ae,_0x4f6658[_0xee43('0x14')][_0xee43('0x15')]);return _0x45ae30(_0x4f6658['error'][_0xee43('0x15')]);}else{logger[_0xee43('0xe')](_0xee43('0xf'),_0x4c90ae,_0xee43('0x12'));_0x45ae30(_0x4f6658[_0xee43('0x16')]['message']);}})['catch'](function(_0x20769d){logger['error'](_0xee43('0xf'),_0x4c90ae,_0x20769d);_0x34f249(_0x20769d);});});}exports[_0xee43('0x17')]=function(_0x1886bc){var _0xf2fd8d=this;return new Promise(function(_0x3e5550,_0x4801ee){return db['MailApplication']['update'](_0x1886bc['body'],{'raw':_0x1886bc['options']?_0x1886bc['options'][_0xee43('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1886bc[_0xee43('0x19')]?_0x1886bc['options'][_0xee43('0x1a')]||null:null,'attributes':_0x1886bc[_0xee43('0x19')]?_0x1886bc[_0xee43('0x19')]['attributes']||null:null,'limit':_0x1886bc[_0xee43('0x19')]?_0x1886bc[_0xee43('0x19')]['limit']||null:null})['then'](function(_0x2be112){logger['info'](_0xee43('0x17'),_0x1886bc);logger[_0xee43('0x10')](_0xee43('0x17'),_0x1886bc,JSON['stringify'](_0x2be112));_0x3e5550(_0x2be112);})[_0xee43('0x1b')](function(_0x421803){logger[_0xee43('0x14')](_0xee43('0x17'),_0x421803[_0xee43('0x15')],_0x1886bc);_0x4801ee(_0xf2fd8d[_0xee43('0x14')](0x1f4,_0x421803['message']));});});};
\ No newline at end of file
+var _0x4437=['stringify','error','code','message','UpdateMailApplication','MailApplication','update','body','options','raw','where','attributes','then','catch','util','moment','bluebird','randomstring','../../config/logger','jayson/promise','client','http','request','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s'];(function(_0x27768b,_0x29ab00){var _0x7d7156=function(_0x2d58ef){while(--_0x2d58ef){_0x27768b['push'](_0x27768b['shift']());}};_0x7d7156(++_0x29ab00);}(_0x4437,0x142));var _0x7443=function(_0x36de03,_0x2ab0bb){_0x36de03=_0x36de03-0x0;var _0x4abe0d=_0x4437[_0x36de03];return _0x4abe0d;};'use strict';var _=require('lodash');var util=require(_0x7443('0x0'));var moment=require(_0x7443('0x1'));var BPromise=require(_0x7443('0x2'));var rs=require(_0x7443('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7443('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7443('0x5'));var client=jayson[_0x7443('0x6')][_0x7443('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4fb4b4,_0x28c07b,_0x24c4d5){return new BPromise(function(_0x7ef687,_0x32be24){return client[_0x7443('0x8')](_0x4fb4b4,_0x24c4d5)['then'](function(_0x685d3d){logger[_0x7443('0x9')](_0x7443('0xa'),_0x28c07b,_0x7443('0xb'));logger[_0x7443('0xc')](_0x7443('0xd'),_0x28c07b,_0x7443('0xb'),JSON[_0x7443('0xe')](_0x685d3d));if(_0x685d3d[_0x7443('0xf')]){if(_0x685d3d[_0x7443('0xf')][_0x7443('0x10')]===0x1f4){logger[_0x7443('0xf')](_0x7443('0xa'),_0x28c07b,_0x685d3d[_0x7443('0xf')][_0x7443('0x11')]);return _0x32be24(_0x685d3d[_0x7443('0xf')][_0x7443('0x11')]);}logger['error'](_0x7443('0xa'),_0x28c07b,_0x685d3d[_0x7443('0xf')][_0x7443('0x11')]);return _0x7ef687(_0x685d3d[_0x7443('0xf')][_0x7443('0x11')]);}else{logger[_0x7443('0x9')]('MailApplication,\x20%s,\x20%s',_0x28c07b,'request\x20sent');_0x7ef687(_0x685d3d['result'][_0x7443('0x11')]);}})['catch'](function(_0x2edd5b){logger[_0x7443('0xf')]('MailApplication,\x20%s,\x20%s',_0x28c07b,_0x2edd5b);_0x32be24(_0x2edd5b);});});}exports[_0x7443('0x12')]=function(_0x15023e){var _0x41c326=this;return new Promise(function(_0x55d9b8,_0x4bf19c){return db[_0x7443('0x13')][_0x7443('0x14')](_0x15023e[_0x7443('0x15')],{'raw':_0x15023e[_0x7443('0x16')]?_0x15023e[_0x7443('0x16')][_0x7443('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x15023e[_0x7443('0x16')]?_0x15023e[_0x7443('0x16')][_0x7443('0x18')]||null:null,'attributes':_0x15023e[_0x7443('0x16')]?_0x15023e[_0x7443('0x16')][_0x7443('0x19')]||null:null,'limit':_0x15023e[_0x7443('0x16')]?_0x15023e['options']['limit']||null:null})[_0x7443('0x1a')](function(_0x234e42){logger[_0x7443('0x9')](_0x7443('0x12'),_0x15023e);logger[_0x7443('0xc')](_0x7443('0x12'),_0x15023e,JSON['stringify'](_0x234e42));_0x55d9b8(_0x234e42);})[_0x7443('0x1b')](function(_0x3bb777){logger[_0x7443('0xf')](_0x7443('0x12'),_0x3bb777['message'],_0x15023e);_0x4bf19c(_0x41c326['error'](0x1f4,_0x3bb777[_0x7443('0x11')]));});});};
\ No newline at end of file
index b28035e..5369830 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa80f=['/describe','describe','/:id/messages','getMessages','post','create','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','/:id','mailinteraction:update','mailinteraction:destroy','delete','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated'];(function(_0x14cba5,_0x6ccd9c){var _0x4771d5=function(_0x3ff99b){while(--_0x3ff99b){_0x14cba5['push'](_0x14cba5['shift']());}};_0x4771d5(++_0x6ccd9c);}(_0xa80f,0xdf));var _0xfa80=function(_0x38dca6,_0x471cb7){_0x38dca6=_0x38dca6-0x0;var _0x29bcd7=_0xa80f[_0x38dca6];return _0x29bcd7;};'use strict';var express=require(_0xfa80('0x0'));var router=express[_0xfa80('0x1')]();var auth=require(_0xfa80('0x2'));var interaction=require(_0xfa80('0x3'));var controller=require(_0xfa80('0x4'));router[_0xfa80('0x5')]('/',auth[_0xfa80('0x6')](),controller['index']);router[_0xfa80('0x5')](_0xfa80('0x7'),auth[_0xfa80('0x6')](),controller[_0xfa80('0x8')]);router['get']('/:id',auth[_0xfa80('0x6')](),controller['show']);router['get'](_0xfa80('0x9'),auth['isAuthenticated'](),controller[_0xfa80('0xa')]);router[_0xfa80('0x5')]('/:id/download',auth[_0xfa80('0x6')](),controller['download']);router[_0xfa80('0xb')]('/',auth['isAuthenticated'](),controller[_0xfa80('0xc')]);router[_0xfa80('0xb')](_0xfa80('0x9'),auth[_0xfa80('0x6')](),controller[_0xfa80('0xd')]);router[_0xfa80('0xb')](_0xfa80('0xe'),auth[_0xfa80('0x6')](),interaction[_0xfa80('0xf')](_0xfa80('0x10'),_0xfa80('0x11')),controller[_0xfa80('0x12')]);router['put'](_0xfa80('0x13'),auth[_0xfa80('0x6')](),interaction[_0xfa80('0xf')](_0xfa80('0x10'),_0xfa80('0x14')),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),interaction[_0xfa80('0xf')](_0xfa80('0x10'),_0xfa80('0x15')),controller['destroy']);router[_0xfa80('0x16')](_0xfa80('0xe'),auth[_0xfa80('0x6')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
+var _0x01e2=['mailinteraction:update','update','delete','mailinteraction:destroy','/:id/tags','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','download','post','create','addMessage','tracked','mailinteraction:addtags','addTags','mail'];(function(_0x15b66f,_0x3da7c3){var _0x574602=function(_0x29f9bf){while(--_0x29f9bf){_0x15b66f['push'](_0x15b66f['shift']());}};_0x574602(++_0x3da7c3);}(_0x01e2,0x13b));var _0x201e=function(_0xbdd42e,_0x58d9b1){_0xbdd42e=_0xbdd42e-0x0;var _0x3bc8e2=_0x01e2[_0xbdd42e];return _0x3bc8e2;};'use strict';var express=require(_0x201e('0x0'));var router=express[_0x201e('0x1')]();var auth=require(_0x201e('0x2'));var interaction=require(_0x201e('0x3'));var controller=require(_0x201e('0x4'));router[_0x201e('0x5')]('/',auth[_0x201e('0x6')](),controller[_0x201e('0x7')]);router['get'](_0x201e('0x8'),auth[_0x201e('0x6')](),controller[_0x201e('0x9')]);router[_0x201e('0x5')](_0x201e('0xa'),auth[_0x201e('0x6')](),controller[_0x201e('0xb')]);router[_0x201e('0x5')](_0x201e('0xc'),auth[_0x201e('0x6')](),controller['getMessages']);router[_0x201e('0x5')]('/:id/download',auth[_0x201e('0x6')](),controller[_0x201e('0xd')]);router[_0x201e('0xe')]('/',auth[_0x201e('0x6')](),controller[_0x201e('0xf')]);router[_0x201e('0xe')](_0x201e('0xc'),auth[_0x201e('0x6')](),controller[_0x201e('0x10')]);router[_0x201e('0xe')]('/:id/tags',auth[_0x201e('0x6')](),interaction[_0x201e('0x11')]('mail',_0x201e('0x12')),controller[_0x201e('0x13')]);router['put'](_0x201e('0xa'),auth[_0x201e('0x6')](),interaction[_0x201e('0x11')](_0x201e('0x14'),_0x201e('0x15')),controller[_0x201e('0x16')]);router[_0x201e('0x17')]('/:id',auth[_0x201e('0x6')](),interaction[_0x201e('0x11')](_0x201e('0x14'),_0x201e('0x18')),controller['destroy']);router[_0x201e('0x17')](_0x201e('0x19'),auth[_0x201e('0x6')](),controller[_0x201e('0x1a')]);module[_0x201e('0x1b')]=router;
\ No newline at end of file
index 1dd3006..424e209 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f2d=['TEXT','long','ENUM','out','sequelize','iconv','BOOLEAN','DATE','STRING'];(function(_0x2fc5d4,_0x514199){var _0x3b273c=function(_0x46665a){while(--_0x46665a){_0x2fc5d4['push'](_0x2fc5d4['shift']());}};_0x3b273c(++_0x514199);}(_0x7f2d,0x1ea));var _0xd7f2=function(_0x337ca8,_0x2a7b60){_0x337ca8=_0x337ca8-0x0;var _0xd50979=_0x7f2d[_0x337ca8];return _0xd50979;};'use strict';var Sequelize=require(_0xd7f2('0x0'));var iconv=require(_0xd7f2('0x1'));module['exports']={'closed':{'type':Sequelize[_0xd7f2('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xd7f2('0x3')]},'disposition':{'type':Sequelize[_0xd7f2('0x4')]},'secondDisposition':{'type':Sequelize[_0xd7f2('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0xd7f2('0x4')]},'cc':{'type':Sequelize[_0xd7f2('0x5')](_0xd7f2('0x6'))},'subject':{'type':Sequelize[_0xd7f2('0x5')]()},'attach':{'type':Sequelize[_0xd7f2('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xd7f2('0x3')]},'substatus':{'type':Sequelize[_0xd7f2('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0xd7f2('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xd7f2('0x7')]('in',_0xd7f2('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xd7f2('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xd7f2('0x7')]('in',_0xd7f2('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xfb82=['BOOLEAN','ENUM','out','sequelize','iconv','exports','DATE','STRING','TEXT','long'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xfb82,0x17f));var _0x2fb8=function(_0x1264c2,_0x282862){_0x1264c2=_0x1264c2-0x0;var _0x50b4d1=_0xfb82[_0x1264c2];return _0x50b4d1;};'use strict';var Sequelize=require(_0x2fb8('0x0'));var iconv=require(_0x2fb8('0x1'));module[_0x2fb8('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x2fb8('0x3')]},'disposition':{'type':Sequelize[_0x2fb8('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x2fb8('0x4')]},'note':{'type':Sequelize[_0x2fb8('0x4')]},'inReplyTo':{'type':Sequelize[_0x2fb8('0x4')](0x1fe)},'to':{'type':Sequelize[_0x2fb8('0x4')]},'cc':{'type':Sequelize[_0x2fb8('0x5')](_0x2fb8('0x6'))},'subject':{'type':Sequelize[_0x2fb8('0x5')]()},'attach':{'type':Sequelize[_0x2fb8('0x7')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x2fb8('0x3')]},'substatus':{'type':Sequelize[_0x2fb8('0x4')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x2fb8('0x8')]('in',_0x2fb8('0x9')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2fb8('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x2fb8('0x8')]('in',_0x2fb8('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x2fb8('0x7')],'defaultValue':![]}};
\ No newline at end of file
index eee51f1..499fdc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x266d=['mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','length','unreadMessages','value','having','`\x20>\x200','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','type','some','compact','isEmpty','concat','parse','$gte','$lte','null','read','`unreadMessages`\x20=\x200','tag','filter','replace','i.id\x20LIKE\x20?','isEmail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','i.MailAccountId\x20IN\x20?','sequelize','toString','keyBy','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.to','i.ContactId','i.MailAccountId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','Setting','findOne','enableEmailPreview','push','all','rows','show','params','includeAll','include','merge','options','create','body','describe','addMessage','ids','rawAttributes','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','omit','emit','mailInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','bcc','subject','createdAt','get','mkdirSync','each','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','readFileSync','message%d.eml','unlinkSync','eml-format','zip-dir','moment','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','./mailInteraction.socket','register','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','update','then','destroy','error','stack','name','Users','map','fullname','TagIds','Tags','split','forEach','MailMessage','-id','plainBody','lastMsgText','trimStart','catch','index','MailInteraction','fieldName','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','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'];(function(_0x189b7a,_0x444bee){var _0x40c81d=function(_0x32e086){while(--_0x32e086){_0x189b7a['push'](_0x189b7a['shift']());}};_0x40c81d(++_0x444bee);}(_0x266d,0x9d));var _0xd266=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x266d[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0xd266('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd266('0x1'));var moment=require(_0xd266('0x2'));var BPromise=require('bluebird');var util=require(_0xd266('0x3'));var path=require('path');var fs=require('fs');var _=require(_0xd266('0x4'));var squel=require(_0xd266('0x5'));var juice=require('juice');var Redis=require(_0xd266('0x6'));var qs=require(_0xd266('0x7'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0xd266('0x8'))(_0xd266('0x9'));var config=require(_0xd266('0xa'));var db=require(_0xd266('0xb'))['db'];var htmlEntities=require(_0xd266('0xc'));config[_0xd266('0xd')]=_[_0xd266('0xe')](config[_0xd266('0xd')],{'host':_0xd266('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd266('0xd')]));require(_0xd266('0x10'))[_0xd266('0x11')](socket);function respondWithStatusCode(_0x172729,_0x131162){_0x131162=_0x131162||0xcc;return function(_0x1c7300){if(_0x1c7300){return _0x172729[_0xd266('0x12')](_0x131162);}return _0x172729[_0xd266('0x13')](_0x131162)[_0xd266('0x14')]();};}function respondWithResult(_0x1910f6,_0x3596a0){_0x3596a0=_0x3596a0||0xc8;return function(_0x5e764b){if(_0x5e764b){return _0x1910f6[_0xd266('0x13')](_0x3596a0)['json'](_0x5e764b);}};}function respondWithFilteredResult(_0x2143f3,_0x2d33f1){return function(_0x482555){if(_0x482555){var _0x3de1ab=typeof _0x2d33f1['offset']===_0xd266('0x15')&&typeof _0x2d33f1[_0xd266('0x16')]===_0xd266('0x15');var _0x42e67d=_0x482555[_0xd266('0x17')];var _0x343e24=_0x3de1ab?0x0:_0x2d33f1[_0xd266('0x18')];var _0x1c9d91=_0x3de1ab?_0x482555[_0xd266('0x17')]:_0x2d33f1['offset']+_0x2d33f1[_0xd266('0x16')];var _0x2d4471;if(_0x1c9d91>=_0x42e67d){_0x1c9d91=_0x42e67d;_0x2d4471=0xc8;}else{_0x2d4471=0xce;}_0x2143f3[_0xd266('0x13')](_0x2d4471);return _0x2143f3[_0xd266('0x19')](_0xd266('0x1a'),_0x343e24+'-'+_0x1c9d91+'/'+_0x42e67d)['json'](_0x482555);}return null;};}function saveUpdates(_0x2bac14){return function(_0x135c83){if(_0x135c83){return _0x135c83[_0xd266('0x1b')](_0x2bac14)[_0xd266('0x1c')](function(_0x47f46f){return _0x47f46f;});}return null;};}function removeEntity(_0x459b65){return function(_0x57160e){if(_0x57160e){return _0x57160e[_0xd266('0x1d')]()[_0xd266('0x1c')](function(){_0x459b65['status'](0xcc)[_0xd266('0x14')]();});}};}function handleEntityNotFound(_0x46a23b){return function(_0x137e4b){if(!_0x137e4b){_0x46a23b[_0xd266('0x12')](0x194);}return _0x137e4b;};}function handleError(_0x51e397,_0x298e05){_0x298e05=_0x298e05||0x1f4;return function(_0x51ede9){logger[_0xd266('0x1e')](_0x51ede9[_0xd266('0x1f')]);if(_0x51ede9[_0xd266('0x20')]){delete _0x51ede9[_0xd266('0x20')];}_0x51e397[_0xd266('0x13')](_0x298e05)['send'](_0x51ede9);};}function getInteractionUsers(_0x168514,_0xbacf25){return new BPromise(function(_0x366b08,_0x1d709){try{if(_0xbacf25[_0x168514['id']]){_0x168514[_0xd266('0x21')]=_[_0xd266('0x22')](_0xbacf25[_0x168514['id']],function(_0x420d7e){return{'id':_0x420d7e['id'],'fullname':_0x420d7e[_0xd266('0x23')]};});}}catch(_0x4795cf){_0x1d709(_0x4795cf);}_0x366b08(_0x168514);});}function getInteractionTags(_0x2bb8a7,_0x489988){return new BPromise(function(_0x109aa7,_0x1fc4a3){try{if(_0x2bb8a7[_0xd266('0x24')]){_0x2bb8a7[_0xd266('0x25')]=[];_0x2bb8a7[_0xd266('0x24')][_0xd266('0x26')](',')[_0xd266('0x27')](function(_0x44bfc1){_0x2bb8a7[_0xd266('0x25')]['push'](_0x489988[_0x44bfc1]);});}delete _0x2bb8a7[_0xd266('0x24')];}catch(_0xfd6dc8){_0x1fc4a3(_0xfd6dc8);}_0x109aa7(_0x2bb8a7);});}function getLastMessageText(_0x8a5d51){return new BPromise(function(_0x360e9a,_0x5bf56e){return db[_0xd266('0x28')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x8a5d51['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xd266('0x29'),'raw':!![]})['then'](function(_0x249c9f){if(_0x249c9f&&_0x249c9f[_0xd266('0x2a')]){_0x8a5d51[_0xd266('0x2b')]=_[_0xd266('0x2c')](_0x249c9f[_0xd266('0x2a')]);}_0x360e9a(_0x8a5d51);})[_0xd266('0x2d')](function(_0x2be061){_0x5bf56e(_0x2be061);});});}function updateMailInteraction(_0x14c29d,_0x4f9be5,_0xd78572,_0x4b55fa){return new BPromise(function(_0x4fe861,_0xfbcdb5){return getInteractionUsers(_0x14c29d,_0xd78572)[_0xd266('0x1c')](function(_0x3552cb){return getInteractionTags(_0x3552cb,_0x4f9be5);})[_0xd266('0x1c')](function(_0x441e25){if(_0x4b55fa){_0x4fe861(getLastMessageText(_0x441e25));}else{_0x4fe861(_0x441e25);}})['catch'](function(_0x3ebcc9){_0xfbcdb5(_0x3ebcc9);});});}exports[_0xd266('0x2e')]=function(_0x5c3dbe,_0x58030b){var _0x3097a3={},_0x45c328={},_0x2983ff={'count':0x0,'rows':[]};var _0x524745=_[_0xd266('0x22')](db[_0xd266('0x2f')]['rawAttributes'],function(_0x152ca3){return{'name':_0x152ca3[_0xd266('0x30')],'type':_0x152ca3['type'][_0xd266('0x31')]};});_0x45c328['model']=_[_0xd266('0x22')](_0x524745,_0xd266('0x20'));_0x45c328[_0xd266('0x32')]=_[_0xd266('0x33')](_0x5c3dbe[_0xd266('0x32')]);_0x45c328['filters']=_[_0xd266('0x34')](_0x45c328[_0xd266('0x35')],_0x45c328[_0xd266('0x32')]);_0x3097a3[_0xd266('0x36')]=_['intersection'](_0x45c328['model'],qs[_0xd266('0x37')](_0x5c3dbe['query']['fields']));_0x3097a3[_0xd266('0x36')]=_0x3097a3[_0xd266('0x36')]['length']?_0x3097a3['attributes']:_0x45c328[_0xd266('0x35')];if(!_0x5c3dbe[_0xd266('0x32')][_0xd266('0x38')](_0xd266('0x39'))){_0x3097a3[_0xd266('0x16')]=qs[_0xd266('0x16')](_0x5c3dbe[_0xd266('0x32')][_0xd266('0x16')]);_0x3097a3[_0xd266('0x18')]=qs['offset'](_0x5c3dbe['query'][_0xd266('0x18')]);}_0x3097a3['order']=qs[_0xd266('0x3a')](_0x5c3dbe[_0xd266('0x32')][_0xd266('0x3a')]);_0x3097a3[_0xd266('0x3b')]=qs[_0xd266('0x3c')](_[_0xd266('0x3d')](_0x5c3dbe[_0xd266('0x32')],_0x45c328[_0xd266('0x3c')]),_0x524745);var _0x21a0a2=[];var _0x1d7193=squel[_0xd266('0x3e')]()[_0xd266('0x3f')]('id')['field'](_0xd266('0x20'))[_0xd266('0x3f')](_0xd266('0x40'))[_0xd266('0x41')](_0xd266('0x42'));var _0x305d23=squel[_0xd266('0x3e')]()[_0xd266('0x3f')](_0xd266('0x43'))[_0xd266('0x3f')](_0xd266('0x44'))[_0xd266('0x3f')]('ui.MailInteractionId')['from'](_0xd266('0x45'),'ui')[_0xd266('0x46')](_0xd266('0x47'),'u',_0xd266('0x48'));var _0x5759c9=squel[_0xd266('0x3e')]()[_0xd266('0x41')](_0xd266('0x49'),'i')[_0xd266('0x46')](_0xd266('0x4a'),'c',_0xd266('0x4b'))[_0xd266('0x46')](_0xd266('0x47'),'o',_0xd266('0x4c'))['left_join'](_0xd266('0x4d'),'a',_0xd266('0x4e'))[_0xd266('0x46')](_0xd266('0x4f'),'me','me.MailInteractionId\x20=\x20i.id')[_0xd266('0x46')](_0xd266('0x50'),'it',_0xd266('0x51'))[_0xd266('0x46')](_0xd266('0x42'),'t',_0xd266('0x52'));var _0x515988=squel[_0xd266('0x53')]();var _0x259f07=[];var _0x1fcc87=squel[_0xd266('0x53')]();var _0x4bcf00;if(_0x5c3dbe['query'][_0xd266('0x54')]){_0x4bcf00=as[_0xd266('0x55')](_0x5c3dbe['query'][_0xd266('0x54')]);var _0x8806d7=_0x4bcf00[_0xd266('0x56')];for(var _0x569f47=0x0;_0x569f47<_0x4bcf00[_0xd266('0x57')][_0xd266('0x58')];_0x569f47++){var _0x1d5165=_0x4bcf00[_0xd266('0x57')][_0x569f47];var _0x1f9c87='i';var _0x263f4d=_['find'](_0x524745,['name',_0x1d5165[_0xd266('0x3f')]]);if(!_0x263f4d){switch(_0x1d5165[_0xd266('0x3f')]){case _0xd266('0x59'):if(_0x1d5165[_0xd266('0x5a')]==0x1){_0x5759c9[_0xd266('0x5b')]('`'+_0x1d5165[_0xd266('0x3f')]+'`\x20=\x200');}else{_0x5759c9[_0xd266('0x5b')]('`'+_0x1d5165[_0xd266('0x3f')]+_0xd266('0x5c'));}break;case'Contact':if(_0x1d5165['operator']===_0xd266('0x5d')){if(_0x1d5165[_0xd266('0x5a')]['split']('\x20')[_0xd266('0x58')]>0x1){_0x515988[_0x8806d7](_0xd266('0x5e'),qs['getFullTextValue'](_0x1d5165[_0xd266('0x5a')]),null);}else{var _0x20ec7e='%'+_0x1d5165[_0xd266('0x5a')]+'%';_0x515988[_0x8806d7](_0xd266('0x5f'),_0x20ec7e,_0x20ec7e,_0x20ec7e);}}else{_0x263f4d=_['find'](_0x524745,[_0xd266('0x20'),'ContactId']);_0x1d5165[_0xd266('0x3f')]=_0xd266('0x60');_0x341a43=as[_0xd266('0x61')](_0x1f9c87,_0x263f4d['type'],_0x1d5165);_0x515988[_0x8806d7](_0x341a43[_0xd266('0x62')],_0x341a43['value'][_0xd266('0x63')],_0x341a43[_0xd266('0x5a')][_0xd266('0x14')]);}break;case _0xd266('0x64'):var _0x4e2b29=_0x1d5165[_0xd266('0x5a')][_0xd266('0x26')](',')['map'](function(_0x3fe84e){return Number(_0x3fe84e);});_0x4e2b29[_0xd266('0x27')](function(_0x3a93a6){_0x1fcc87['or'](_0xd266('0x65'),'%,'+_0x3a93a6+',%');});_0x259f07=_['union'](_0x259f07,_0x4e2b29);break;case _0xd266('0x66'):if(_0x1d5165['operator']===_0xd266('0x5d')){_0x515988[_0x8806d7](_0xd266('0x67'),'%'+_0x1d5165[_0xd266('0x5a')]+'%',null);}else{_0x263f4d=_[_0xd266('0x68')](_0x524745,['name','UserId']);_0x1d5165[_0xd266('0x3f')]='UserId';_0x341a43=as['buildExpression'](_0x1f9c87,_0x263f4d[_0xd266('0x69')],_0x1d5165);_0x515988[_0x8806d7](_0x341a43[_0xd266('0x62')],_0x341a43[_0xd266('0x5a')][_0xd266('0x63')],_0x341a43['value'][_0xd266('0x14')]);}break;case _0xd266('0x2a'):_0x341a43=as[_0xd266('0x61')]('me',null,_0x1d5165);_0x515988[_0x8806d7](_0x341a43[_0xd266('0x62')],_0x341a43[_0xd266('0x5a')][_0xd266('0x63')],_0x341a43[_0xd266('0x5a')][_0xd266('0x14')]);break;}}else{var _0x341a43=as[_0xd266('0x61')](_0x1f9c87,_0x263f4d[_0xd266('0x69')],_0x1d5165);_0x515988[_0x8806d7](_0x341a43[_0xd266('0x62')],_0x341a43[_0xd266('0x5a')][_0xd266('0x63')],_0x341a43[_0xd266('0x5a')][_0xd266('0x14')]);}}}else{var _0x4f5b73=_(_0x5c3dbe[_0xd266('0x32')])[_0xd266('0x33')]()['map'](function(_0x548ca9){return _[_0xd266('0x6a')](_0x524745,[_0xd266('0x20'),_0x548ca9])?_0x548ca9:undefined;})[_0xd266('0x6b')]()[_0xd266('0x5a')]();if(!_[_0xd266('0x6c')](_0x4f5b73)){_0x4f5b73[_0xd266('0x27')](function(_0x296fea){if(_0x296fea==='MailAccountId'){_0x5759c9['where']('i.MailAccountId\x20IN\x20?',[][_0xd266('0x6d')](_0x5c3dbe[_0xd266('0x32')][_0x296fea]));}else if(_0x296fea==='createdAt'){var _0x4b0205=JSON[_0xd266('0x6e')](_0x5c3dbe[_0xd266('0x32')][_0x296fea])[_0xd266('0x6f')];var _0x3edecc=JSON[_0xd266('0x6e')](_0x5c3dbe['query'][_0x296fea])[_0xd266('0x70')];_0x5759c9[_0xd266('0x3b')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x4b0205,_0x3edecc);}else{if(_0x5c3dbe['query'][_0x296fea]===_0xd266('0x71')){_0x5759c9[_0xd266('0x3b')]('i.'+_0x296fea+'\x20IS\x20NULL');}else{_0x5759c9[_0xd266('0x3b')]('i.'+_0x296fea+'\x20=\x20?',_0x5c3dbe['query'][_0x296fea]);}}});}if(_0x5c3dbe['query'][_0xd266('0x72')]){if(_0x5c3dbe[_0xd266('0x32')][_0xd266('0x72')]==0x1){_0x5759c9[_0xd266('0x5b')](_0xd266('0x73'));}else{_0x5759c9[_0xd266('0x5b')]('`unreadMessages`\x20>\x200');}}if(_0x5c3dbe[_0xd266('0x32')][_0xd266('0x74')]){_0x259f07=_['isArray'](_0x5c3dbe[_0xd266('0x32')][_0xd266('0x74')])?_0x5c3dbe[_0xd266('0x32')][_0xd266('0x74')]:new Array(_0x5c3dbe[_0xd266('0x32')]['tag']);_0x259f07[_0xd266('0x27')](function(_0x30517a){_0x1fcc87['or'](_0xd266('0x65'),'%,'+_0x30517a+',%');});}if(_0x5c3dbe[_0xd266('0x32')][_0xd266('0x75')]){var _0x135184=_0x5c3dbe[_0xd266('0x32')]['filter'][_0xd266('0x76')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x135184)){_0x515988['or'](_0xd266('0x77'),_0x135184+'%');}else if(qs[_0xd266('0x78')](_0x135184)){_0x515988['or']('c.email\x20LIKE\x20?',_0x135184+'%');}else{_0x515988['or'](_0xd266('0x79'),qs[_0xd266('0x7a')](_0x135184))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xd266('0x7a')](_0x135184));}}}_0x5759c9[_0xd266('0x3b')](_0x515988);_0x5759c9[_0xd266('0x7b')](_0xd266('0x7c'));var _0x4ba813={'type':db[_0xd266('0x7d')][_0xd266('0x7e')][_0xd266('0x7f')],'raw':!![]};var _0xf21b4d=_0x5759c9[_0xd266('0x80')]();_0xf21b4d[_0xd266('0x3f')](_0xd266('0x7c'));_0xf21b4d[_0xd266('0x3f')](_0xd266('0x81'),_0xd266('0x59'));if(_0x3097a3[_0xd266('0x82')]){_0x3097a3[_0xd266('0x82')][_0xd266('0x27')](function(_0x69132b){var _0x236048=_0x69132b[0x0]===_0xd266('0x83')?_0x69132b[0x0]:'i.'+_0x69132b[0x0];_0x5759c9[_0xd266('0x82')](_0x236048,_0x69132b[0x1]===_0xd266('0x84')?![]:!![]);});}if(!_[_0xd266('0x6c')](_0x259f07)){_0x5759c9[_0xd266('0x5b')](_0x1fcc87);_0xf21b4d['where']('t.id\x20IN\x20?',_0x259f07);}BPromise[_0xd266('0x85')]()[_0xd266('0x1c')](function(){if(!_0x4bcf00){if(_0x5c3dbe[_0xd266('0x32')][_0xd266('0x86')])return;_0xf21b4d[_0xd266('0x3b')](_0xd266('0x87'));_0x5759c9['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x5c3dbe[_0xd266('0x88')]['role']!==_0xd266('0x89'))return;return _0x5c3dbe[_0xd266('0x88')][_0xd266('0x8a')]({'attributes':['id'],'raw':!![]})[_0xd266('0x1c')](function(_0x246b91){if(_[_0xd266('0x6c')](_0x246b91)){_0xf21b4d[_0xd266('0x3b')](_0xd266('0x8b'));_0x5759c9[_0xd266('0x3b')](_0xd266('0x8b'));}else{_0xf21b4d[_0xd266('0x3b')](_0xd266('0x8c'),_['map'](_0x246b91,'id'));_0x5759c9[_0xd266('0x3b')](_0xd266('0x8c'),_[_0xd266('0x22')](_0x246b91,'id'));}});})[_0xd266('0x1c')](function(){if(_0x5c3dbe[_0xd266('0x88')]['role']===_0xd266('0x89')&&!_0x4bcf00&&!_0x5c3dbe[_0xd266('0x32')]['MailAccountId'])return[];return db[_0xd266('0x8d')]['query'](_0xf21b4d[_0xd266('0x8e')](),_0x4ba813);})[_0xd266('0x1c')](function(_0x2eddd1){_0x2983ff[_0xd266('0x17')]=_0x2eddd1[_0xd266('0x58')];if(_0x2983ff['count']===0x0)return[];return db['sequelize']['query'](_0x1d7193[_0xd266('0x8e')](),_0x4ba813)[_0xd266('0x1c')](function(_0x213ab0){_0x21a0a2=_[_0xd266('0x8f')](_0x213ab0,'id');_0x4ba813=_['merge'](_0x4ba813,{'model':db[_0xd266('0x2f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5c3dbe[_0xd266('0x32')][_0xd266('0x37')]){_0x3097a3[_0xd266('0x36')][_0xd266('0x27')](function(_0x2597f8){_0x5759c9[_0xd266('0x3f')]('i.'+_0x2597f8);});}else{_0x5759c9[_0xd266('0x3f')](_0xd266('0x81'),_0xd266('0x59'));_0x5759c9[_0xd266('0x3f')]('a.key',_0xd266('0x90'));_0x5759c9[_0xd266('0x3f')](_0xd266('0x91'),_0xd266('0x92'));_0x5759c9[_0xd266('0x3f')](_0xd266('0x93'),_0xd266('0x83'));_0x5759c9[_0xd266('0x3f')](_0xd266('0x7c'));_0x5759c9[_0xd266('0x3f')](_0xd266('0x94'));_0x5759c9[_0xd266('0x3f')](_0xd266('0x95'));_0x5759c9['field'](_0xd266('0x96'));_0x5759c9[_0xd266('0x3f')](_0xd266('0x97'));_0x5759c9[_0xd266('0x3f')]('i.attach');_0x5759c9[_0xd266('0x3f')](_0xd266('0x98'));_0x5759c9['field'](_0xd266('0x99'));_0x5759c9[_0xd266('0x3f')](_0xd266('0x9a'));_0x5759c9[_0xd266('0x3f')](_0xd266('0x9b'));_0x5759c9['field'](_0xd266('0x9c'));_0x5759c9[_0xd266('0x3f')](_0xd266('0x9d'));_0x5759c9['field']('i.substatus');_0x5759c9[_0xd266('0x3f')](_0xd266('0x9e'));_0x5759c9[_0xd266('0x3f')](_0xd266('0x9f'));_0x5759c9[_0xd266('0x3f')](_0xd266('0xa0'));_0x5759c9['field'](_0xd266('0xa1'));_0x5759c9['field'](_0xd266('0xa2'),_0xd266('0xa3'));_0x5759c9[_0xd266('0x3f')](_0xd266('0xa4'),_0xd266('0xa5'));_0x5759c9[_0xd266('0x3f')](_0xd266('0xa6'),_0xd266('0xa7'));_0x5759c9['field'](_0xd266('0xa8'),_0xd266('0xa9'));_0x5759c9['field'](_0xd266('0xaa'),_0xd266('0xab'));_0x5759c9[_0xd266('0x3f')](_0xd266('0xac'),_0xd266('0xad'));_0x5759c9['field'](_0xd266('0xae'),_0xd266('0xaf'));_0x5759c9['field']('o.internal','Owner.internal');_0x5759c9['field'](_0xd266('0xb0'),_0xd266('0x24'));}if(_0x3097a3['limit'])_0x5759c9[_0xd266('0x16')](_0x3097a3[_0xd266('0x16')]);if(_0x3097a3[_0xd266('0x18')])_0x5759c9[_0xd266('0x18')](_0x3097a3[_0xd266('0x18')]);return db[_0xd266('0x8d')][_0xd266('0x32')](_0x5759c9['toString'](),_0x4ba813);})[_0xd266('0x1c')](function(_0x2d0917){if(_0x2d0917[_0xd266('0x58')]>0x0)_0x305d23['where']('ui.MailInteractionId\x20IN\x20?',_[_0xd266('0x22')](_0x2d0917,'id'));return db[_0xd266('0x8d')][_0xd266('0x32')](_0x305d23[_0xd266('0x8e')](),_0x4ba813)['then'](function(_0x39c8a4){var _0x4ddeeb=_[_0xd266('0xb1')](_0x39c8a4,'MailInteractionId');var _0x5361fe=[];return db[_0xd266('0xb2')][_0xd266('0xb3')]({'attributes':[_0xd266('0xb4')],'raw':!![]})[_0xd266('0x1c')](function(_0x58dd3f){var _0x568366=_0x58dd3f[_0xd266('0xb4')];_0x2d0917[_0xd266('0x27')](function(_0x28f218){_0x5361fe[_0xd266('0xb5')](updateMailInteraction(_0x28f218,_0x21a0a2,_0x4ddeeb,_0x568366));});return BPromise[_0xd266('0xb6')](_0x5361fe);});});});})[_0xd266('0x1c')](function(_0x5a90b6){_0x2983ff[_0xd266('0xb7')]=_0x5a90b6;return _0x2983ff;})[_0xd266('0x1c')](respondWithFilteredResult(_0x58030b,_0x3097a3))[_0xd266('0x2d')](handleError(_0x58030b,null));};exports[_0xd266('0xb8')]=function(_0x3df657,_0x5f1ccc){var _0x151122={'raw':![],'where':{'id':_0x3df657[_0xd266('0xb9')]['id']}},_0x1a0c11={};_0x1a0c11[_0xd266('0x35')]=_[_0xd266('0x33')](db[_0xd266('0x2f')]['rawAttributes']);_0x1a0c11[_0xd266('0x32')]=_['keys'](_0x3df657[_0xd266('0x32')]);_0x1a0c11['filters']=_[_0xd266('0x34')](_0x1a0c11[_0xd266('0x35')],_0x1a0c11[_0xd266('0x32')]);_0x151122['attributes']=_[_0xd266('0x34')](_0x1a0c11['model'],qs[_0xd266('0x37')](_0x3df657[_0xd266('0x32')][_0xd266('0x37')]));_0x151122[_0xd266('0x36')]=_0x151122[_0xd266('0x36')]['length']?_0x151122[_0xd266('0x36')]:_0x1a0c11[_0xd266('0x35')];if(_0x3df657[_0xd266('0x32')][_0xd266('0xba')]){_0x151122[_0xd266('0xbb')]=[{'all':!![]}];}_0x151122=_[_0xd266('0xbc')]({},_0x151122,_0x3df657[_0xd266('0xbd')]);return db['MailInteraction']['find'](_0x151122)[_0xd266('0x1c')](handleEntityNotFound(_0x5f1ccc,null))[_0xd266('0x1c')](respondWithResult(_0x5f1ccc,null))[_0xd266('0x2d')](handleError(_0x5f1ccc,null));};exports[_0xd266('0xbe')]=function(_0x2f5c53,_0x50d912){return db[_0xd266('0x2f')][_0xd266('0xbe')](_0x2f5c53[_0xd266('0xbf')],{})['then'](respondWithResult(_0x50d912,0xc9))[_0xd266('0x2d')](handleError(_0x50d912,null));};exports['update']=function(_0x2080fc,_0x34544c){if(_0x2080fc['body']['id']){delete _0x2080fc[_0xd266('0xbf')]['id'];}return db[_0xd266('0x2f')][_0xd266('0x68')]({'where':{'id':_0x2080fc[_0xd266('0xb9')]['id']}})[_0xd266('0x1c')](handleEntityNotFound(_0x34544c,null))[_0xd266('0x1c')](saveUpdates(_0x2080fc['body'],null))[_0xd266('0x1c')](respondWithResult(_0x34544c,null))[_0xd266('0x2d')](handleError(_0x34544c,null));};exports['destroy']=function(_0x44c7ca,_0x420d30){return db[_0xd266('0x2f')][_0xd266('0x68')]({'where':{'id':_0x44c7ca[_0xd266('0xb9')]['id']}})['then'](handleEntityNotFound(_0x420d30,null))[_0xd266('0x1c')](removeEntity(_0x420d30,null))[_0xd266('0x2d')](handleError(_0x420d30,null));};exports['describe']=function(_0x2d0720,_0x4871db){return db[_0xd266('0x2f')][_0xd266('0xc0')]()[_0xd266('0x1c')](respondWithResult(_0x4871db,null))[_0xd266('0x2d')](handleError(_0x4871db,null));};exports[_0xd266('0xc1')]=function(_0xc61d87,_0xac7da1){return db[_0xd266('0x28')]['find']({'where':{'id':_0xc61d87['params']['id']}})['then'](handleEntityNotFound(_0xac7da1,null))[_0xd266('0x1c')](function(_0x4f44fd){if(_0x4f44fd){return _0x4f44fd[_0xd266('0xc1')](_0xc61d87[_0xd266('0xbf')][_0xd266('0xc2')],_['omit'](_0xc61d87[_0xd266('0xbf')],[_0xd266('0xc2'),'id'])||{});}})[_0xd266('0x1c')](respondWithResult(_0xac7da1,null))[_0xd266('0x2d')](handleError(_0xac7da1,null));};exports['getMessages']=function(_0x4c198e,_0x499de7){var _0x1c0402={'raw':![],'where':{}};var _0x1d155e={};var _0x1f942b={'count':0x0,'rows':[]};return db[_0xd266('0x2f')]['findOne']({'where':{'id':_0x4c198e[_0xd266('0xb9')]['id']}})['then'](handleEntityNotFound(_0x499de7,null))[_0xd266('0x1c')](function(_0x3eae52){if(_0x3eae52){_0x1d155e[_0xd266('0x35')]=_['keys'](db[_0xd266('0x28')][_0xd266('0xc3')]);_0x1d155e[_0xd266('0x32')]=_[_0xd266('0x33')](_0x4c198e[_0xd266('0x32')]);_0x1d155e[_0xd266('0x3c')]=_['intersection'](_0x1d155e[_0xd266('0x35')],_0x1d155e['query']);_0x1c0402[_0xd266('0x36')]=_[_0xd266('0x34')](_0x1d155e[_0xd266('0x35')],qs['fields'](_0x4c198e[_0xd266('0x32')][_0xd266('0x37')]));_0x1c0402[_0xd266('0x36')]=_0x1c0402[_0xd266('0x36')][_0xd266('0x58')]?_0x1c0402[_0xd266('0x36')]:_0x1d155e[_0xd266('0x35')];if(!_0x4c198e['query'][_0xd266('0x38')](_0xd266('0x39'))){_0x1c0402[_0xd266('0x16')]=qs[_0xd266('0x16')](_0x4c198e[_0xd266('0x32')]['limit']);_0x1c0402[_0xd266('0x18')]=qs[_0xd266('0x18')](_0x4c198e[_0xd266('0x32')][_0xd266('0x18')]);}_0x1c0402[_0xd266('0x82')]=qs['sort'](_0x4c198e[_0xd266('0x32')][_0xd266('0x3a')]);_0x1c0402['where']=qs['filters'](_[_0xd266('0x3d')](_0x4c198e[_0xd266('0x32')],_0x1d155e[_0xd266('0x3c')]));_0x1c0402[_0xd266('0x3b')][_0xd266('0xc4')]=_0x3eae52['id'];if(_0x4c198e[_0xd266('0x32')]['filter']){_0x1c0402[_0xd266('0x3b')]=_['merge'](_0x1c0402[_0xd266('0x3b')],{'$or':_[_0xd266('0x22')](_0x1c0402[_0xd266('0x36')],function(_0x43c23b){var _0x5ddf77={};_0x5ddf77[_0x43c23b]={'$like':'%'+_0x4c198e[_0xd266('0x32')][_0xd266('0x75')]+'%'};return _0x5ddf77;})});}if(_0x4c198e[_0xd266('0x32')]['$gte']){var _0x182604=_0x4c198e['query']['$gte'][_0xd266('0x26')](',');var _0x18e0ef={};_0x18e0ef[_0x182604[0x0]]={'$gte':moment(_0x182604[0x1])[_0xd266('0xc5')](_0xd266('0xc6'))};_0x1c0402[_0xd266('0x3b')]=_[_0xd266('0xbc')](_0x1c0402['where'],_0x18e0ef);}_0x1c0402=_[_0xd266('0xbc')]({},_0x1c0402,_0x4c198e['options']);return db[_0xd266('0x28')][_0xd266('0x17')]({'where':_0x1c0402['where']})['then'](function(_0x5d83df){_0x1f942b['count']=_0x5d83df;if(_0x4c198e['query'][_0xd266('0xba')]){_0x1c0402[_0xd266('0xbb')]=[{'all':!![]}];}return db['MailMessage'][_0xd266('0xc7')](_0x1c0402);})[_0xd266('0x1c')](function(_0x2e98c4){if(_0x4c198e[_0xd266('0x32')][_0xd266('0xc8')]===_0xd266('0xc9')){for(var _0x5d7642=0x0;_0x5d7642<_0x2e98c4[_0xd266('0x58')];_0x5d7642++){_0x2e98c4[_0x5d7642][_0xd266('0xbf')]=juice(_0x2e98c4[_0x5d7642][_0xd266('0xbf')]);}}_0x1f942b['rows']=_0x2e98c4;return _0x1f942b;});}})['then'](respondWithFilteredResult(_0x499de7,_0x1c0402))[_0xd266('0x2d')](handleError(_0x499de7,null));};exports[_0xd266('0xca')]=function(_0x3c784e,_0xd22fc6){return db[_0xd266('0x2f')][_0xd266('0x68')]({'where':{'id':_0x3c784e['params']['id']}})['then'](handleEntityNotFound(_0xd22fc6,null))[_0xd266('0x1c')](function(_0x1da23e){if(_0x1da23e){return _0x1da23e[_0xd266('0xcb')](_0x3c784e['body'][_0xd266('0xc2')],_[_0xd266('0xcc')](_0x3c784e[_0xd266('0xbf')],[_0xd266('0xc2'),'id'])||{})['spread'](function(){return db[_0xd266('0x64')][_0xd266('0xc7')]({'attributes':['id',_0xd266('0x20'),_0xd266('0x40')],'where':{'id':_0x3c784e[_0xd266('0xbf')][_0xd266('0xc2')]}});})['then'](function(_0x44e726){socket[_0xd266('0xcd')](_0xd266('0xce'),{'id':Number(_0x3c784e[_0xd266('0xb9')]['id']),'tags':_0x44e726||[]});return{'id':Number(_0x3c784e[_0xd266('0xb9')]['id']),'tags':_0x44e726||[]};});}})[_0xd266('0x1c')](respondWithResult(_0xd22fc6,null))['catch'](handleError(_0xd22fc6,null));};exports[_0xd266('0xcf')]=function(_0x4fbfd9,_0x3b6002){return db[_0xd266('0x2f')][_0xd266('0x68')]({'where':{'id':_0x4fbfd9[_0xd266('0xb9')]['id']}})[_0xd266('0x1c')](handleEntityNotFound(_0x3b6002,null))[_0xd266('0x1c')](function(_0x5f12a2){if(_0x5f12a2){return _0x5f12a2[_0xd266('0xcf')](_0x4fbfd9['query'][_0xd266('0xc2')]);}})[_0xd266('0x1c')](respondWithStatusCode(_0x3b6002,null))[_0xd266('0x2d')](handleError(_0x3b6002,null));};exports[_0xd266('0xd0')]=function(_0x422438,_0x420f6e){var _0x3271c0=moment()[_0xd266('0xd1')]()[_0xd266('0x8e')]();var _0x193114=path[_0xd266('0xd2')](config[_0xd266('0xd3')],_0xd266('0xd4'),_0xd266('0xd5'),_0xd266('0xd6'));var _0x370c1b=path[_0xd266('0xd2')](config[_0xd266('0xd3')],'server',_0xd266('0xd5'),_0xd266('0xd7'));var _0xfabd5a=path[_0xd266('0xd2')](_0x193114,_0x3271c0);var _0x534e99=util[_0xd266('0xc5')](_0xd266('0xd8'),_0x422438['params']['id'],_0x3271c0);var _0xb09462=path[_0xd266('0xd2')](_0x193114,_0x534e99);var _0x5c29e7=[];if(_0x422438[_0xd266('0x32')][_0xd266('0xd7')]){_0x5c29e7[_0xd266('0xb5')]({'model':db[_0xd266('0xd9')],'as':_0xd266('0xda'),'raw':!![]});}var _0x11cc33=[{'model':db[_0xd266('0x28')],'as':_0xd266('0xdb'),'attributes':['id',_0xd266('0xbf'),_0xd266('0x41'),'to','cc',_0xd266('0xdc'),_0xd266('0xdd'),_0xd266('0xde')],'where':{'secret':![]},'order':qs[_0xd266('0x3a')]('id'),'include':_0x5c29e7}];return db[_0xd266('0x2f')][_0xd266('0x68')]({'where':{'id':_0x422438[_0xd266('0xb9')]['id']},'include':_0x11cc33})[_0xd266('0x1c')](handleEntityNotFound(_0x420f6e,null))['then'](function(_0x56815f){if(_0x56815f&&_0x56815f['Messages']){var _0x40659d=_0x56815f[_0xd266('0xdf')]({'plain':!![]});fs[_0xd266('0xe0')](_0xfabd5a);return BPromise[_0xd266('0xe1')](_0x40659d[_0xd266('0xdb')],function(_0xd117fc,_0x59b209){var _0x21fc0d={'from':_0xd117fc[_0xd266('0x41')],'to':_0xd117fc['to'],'subject':_0xd117fc['subject'],'html':htmlEntities[_0xd266('0xe2')](_0xd117fc[_0xd266('0xbf')]),'headers':{'Date':moment(_0xd117fc[_0xd266('0xde')])[_0xd266('0xc5')](_0xd266('0xe3'))},'attachments':[]};if(_0xd117fc['cc']){_0x21fc0d['headers']['Cc']=_0xd117fc['cc'];}if(_0xd117fc[_0xd266('0xdc')]){_0x21fc0d[_0xd266('0xe4')][_0xd266('0xe5')]=_0xd117fc[_0xd266('0xdc')];}return new BPromise(function(_0x1a8aff,_0x306dcf){if(_0xd117fc[_0xd266('0xda')]){for(var _0x4537f9=0x0;_0x4537f9<_0xd117fc['Attachments'][_0xd266('0x58')];_0x4537f9++){var _0x3ca214=_0xd117fc[_0xd266('0xda')][_0x4537f9];var _0x27223b=path['join'](_0x370c1b,_0x3ca214['basename']);if(fs[_0xd266('0xe6')](_0x27223b)){_0x21fc0d[_0xd266('0xd7')]['push']({'name':_0x3ca214['name'],'contentType':_0x3ca214[_0xd266('0x69')],'data':fs[_0xd266('0xe7')](_0x27223b)});}}}emlformat['build'](_0x21fc0d,function(_0x5f574d,_0x598d6a){if(_0x5f574d)return _0x306dcf(_0x5f574d);fs['writeFileSync'](path[_0xd266('0xd2')](_0xfabd5a,util[_0xd266('0xc5')](_0xd266('0xe8'),_0x59b209)),_0x598d6a);return _0x1a8aff(_0x598d6a);});});})[_0xd266('0x1c')](function(){return new BPromise(function(_0x44f64a,_0x51ec4c){zipdir(_0xfabd5a,{'saveTo':_0xb09462},function(_0x3472e5,_0x2fdca1){if(_0x3472e5)return _0x51ec4c(_0x3472e5);return _0x44f64a(_0x2fdca1);});})[_0xd266('0x1c')](function(){return new BPromise(function(_0x1fcd29,_0x44840c){rimraf(_0xfabd5a,function(_0x43fb10){if(_0x43fb10)_0x44840c(_0x43fb10);return _0x1fcd29();});});})[_0xd266('0x1c')](function(){return _0x420f6e['download'](_0xb09462,_0x534e99,function(_0x5da712){if(!_0x5da712)fs[_0xd266('0xe9')](_0xb09462);});});});}else{return _0x420f6e['sendStatus'](0xc8);}})[_0xd266('0x2d')](handleError(_0x420f6e,null));};
\ No newline at end of file
+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(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xb10b,0x12a));var _0xbb10=function(_0x2b12a8,_0x52f321){_0x2b12a8=_0x2b12a8-0x0;var _0xd38ecc=_0xb10b[_0x2b12a8];return _0xd38ecc;};'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
index d06c016..dafc907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd67a=['hasOwnProperty','hook','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','findAll','unreadMessages','length'];(function(_0x433a8c,_0x45d79a){var _0x38fe59=function(_0x383efc){while(--_0x383efc){_0x433a8c['push'](_0x433a8c['shift']());}};_0x38fe59(++_0x45d79a);}(_0xd67a,0x122));var _0xad67=function(_0x3f7f58,_0x589467){_0x3f7f58=_0x3f7f58-0x0;var _0x33c17c=_0xd67a[_0x3f7f58];return _0x33c17c;};'use strict';var EventEmitter=require(_0xad67('0x0'));var MailInteraction=require(_0xad67('0x1'))['db'][_0xad67('0x2')];var MailMessage=require(_0xad67('0x1'))['db'][_0xad67('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xad67('0x4')](0x0);var events={'afterCreate':_0xad67('0x5'),'afterUpdate':_0xad67('0x6'),'afterDestroy':_0xad67('0x7')};function emitEvent(_0x2ab9e4){return function(_0x312c6c,_0x11f86a,_0x2d969d){_0x312c6c['getUsers']({'attributes':['id'],'raw':!![]})[_0xad67('0x8')](function(_0x1924d6){_0x312c6c[_0xad67('0x9')](_0xad67('0xa'),_0x1924d6['map'](function(_0x1f3708){return{'id':_0x1f3708['id']};}));return MailMessage[_0xad67('0xb')]({'where':{'MailInteractionId':_0x312c6c['id'],'direction':'in','read':![]},'raw':!![]});})[_0xad67('0x8')](function(_0x4d5891){_0x312c6c['setDataValue'](_0xad67('0xc'),_0x4d5891[_0xad67('0xd')]);MailInteractionEvents['emit'](_0x2ab9e4+':'+_0x312c6c['id'],_0x312c6c);MailInteractionEvents['emit'](_0x2ab9e4,_0x312c6c);_0x2d969d(null);})['catch'](_0x2d969d(null));};}for(var e in events){if(events[_0xad67('0xe')](e)){var event=events[e];MailInteraction[_0xad67('0xf')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
+var _0x1974=['unreadMessages','length','emit','catch','exports','MailInteraction','MailMessage','setMaxListeners','update','remove','getUsers','then','setDataValue','findAll'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1974,0x1d3));var _0x4197=function(_0x3609ce,_0x1741c5){_0x3609ce=_0x3609ce-0x0;var _0x2c383a=_0x1974[_0x3609ce];return _0x2c383a;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db'][_0x4197('0x0')];var MailMessage=require('../../mysqldb')['db'][_0x4197('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x4197('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4197('0x3'),'afterDestroy':_0x4197('0x4')};function emitEvent(_0x28ca14){return function(_0x444225,_0x3671c6,_0x43687d){_0x444225[_0x4197('0x5')]({'attributes':['id'],'raw':!![]})[_0x4197('0x6')](function(_0x365e15){_0x444225[_0x4197('0x7')]('Users',_0x365e15['map'](function(_0x39cd6f){return{'id':_0x39cd6f['id']};}));return MailMessage[_0x4197('0x8')]({'where':{'MailInteractionId':_0x444225['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4197('0x6')](function(_0x26eefb){_0x444225[_0x4197('0x7')](_0x4197('0x9'),_0x26eefb[_0x4197('0xa')]);MailInteractionEvents['emit'](_0x28ca14+':'+_0x444225['id'],_0x444225);MailInteractionEvents[_0x4197('0xb')](_0x28ca14,_0x444225);_0x43687d(null);})[_0x4197('0xc')](_0x43687d(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0x4197('0xd')]=MailInteractionEvents;
\ No newline at end of file
index bf189a1..353ee2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fe3=['path','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','closed','format','YYYY-MM-DD\x20HH:mm:ss','changed','closedAt','get','MailMessage','catch','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x28688d,_0x190a6c){var _0x2c043e=function(_0x3f5c61){while(--_0x3f5c61){_0x28688d['push'](_0x28688d['shift']());}};_0x2c043e(++_0x190a6c);}(_0x0fe3,0xa1));var _0x30fe=function(_0x3cc33b,_0xbee94a){_0x3cc33b=_0x3cc33b-0x0;var _0x45a6f8=_0x0fe3[_0x3cc33b];return _0x45a6f8;};'use strict';var _=require(_0x30fe('0x0'));var util=require(_0x30fe('0x1'));var logger=require(_0x30fe('0x2'))(_0x30fe('0x3'));var moment=require(_0x30fe('0x4'));var BPromise=require(_0x30fe('0x5'));var rp=require(_0x30fe('0x6'));var fs=require('fs');var path=require(_0x30fe('0x7'));var rimraf=require(_0x30fe('0x8'));var config=require(_0x30fe('0x9'));var attributes=require(_0x30fe('0xa'));module[_0x30fe('0xb')]=function(_0x1bb5c4,_0x31dc6e){return _0x1bb5c4[_0x30fe('0xc')](_0x30fe('0xd'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0x30fe('0xe'),'fields':[_0x30fe('0xf'),'to'],'type':_0x30fe('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2b2b4f,_0x1371bd,_0x41b37d){if(_0x2b2b4f[_0x30fe('0x11')]){_0x2b2b4f[_0x30fe('0x12')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x2b2b4f[_0x30fe('0x13')]){_0x2b2b4f['closedAt']=moment()[_0x30fe('0x14')](_0x30fe('0x15'));}_0x41b37d(null,_0x1371bd);},'beforeUpdate':function(_0x32f5c8,_0x159a08,_0x59d4b1){if(_0x32f5c8[_0x30fe('0x16')](_0x30fe('0x11'))){_0x32f5c8[_0x30fe('0x12')]=_0x32f5c8[_0x30fe('0x11')]?moment()[_0x30fe('0x14')](_0x30fe('0x15')):null;}if(_0x32f5c8[_0x30fe('0x16')](_0x30fe('0x13'))){_0x32f5c8[_0x30fe('0x17')]=moment()[_0x30fe('0x14')](_0x30fe('0x15'));_0x32f5c8['substatus']=null;_0x32f5c8[_0x30fe('0x12')]=null;}_0x59d4b1(null,_0x32f5c8);},'afterUpdate':function(_0x3fd617,_0x3d3901,_0x32b148){var _0x31fd00=_0x1bb5c4['models'];var _0x319f7b=_0x3fd617[_0x30fe('0x18')]({'plain':!![]});if(_0x319f7b[_0x30fe('0x13')]){return _0x31fd00[_0x30fe('0x19')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x319f7b['id']}})['then'](function(){_0x32b148();})[_0x30fe('0x1a')](function(_0xeff131){_0x32b148(_0xeff131);});}else{_0x32b148();}}},'charset':'utf8mb4','collate':_0x30fe('0x1b')});};
\ No newline at end of file
+var _0xf7a7=['api','moment','bluebird','path','../../config/environment','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','changed','models','update','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x2f982e,_0x36b665){var _0x12cf04=function(_0x1e87df){while(--_0x1e87df){_0x2f982e['push'](_0x2f982e['shift']());}};_0x12cf04(++_0x36b665);}(_0xf7a7,0x89));var _0x7f7a=function(_0x2c6587,_0x53a72d){_0x2c6587=_0x2c6587-0x0;var _0x556216=_0xf7a7[_0x2c6587];return _0x556216;};'use strict';var _=require(_0x7f7a('0x0'));var util=require(_0x7f7a('0x1'));var logger=require(_0x7f7a('0x2'))(_0x7f7a('0x3'));var moment=require(_0x7f7a('0x4'));var BPromise=require(_0x7f7a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7f7a('0x6'));var rimraf=require('rimraf');var config=require(_0x7f7a('0x7'));var attributes=require(_0x7f7a('0x8'));module[_0x7f7a('0x9')]=function(_0x3fa11d,_0x30a40f){return _0x3fa11d[_0x7f7a('0xa')]('MailInteraction',attributes,{'tableName':_0x7f7a('0xb'),'paranoid':![],'indexes':[{'name':_0x7f7a('0xc'),'fields':[_0x7f7a('0xd'),'to'],'type':_0x7f7a('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4882bb,_0x27aa44,_0x19333d){if(_0x4882bb[_0x7f7a('0xf')]){_0x4882bb[_0x7f7a('0x10')]=moment()['format'](_0x7f7a('0x11'));}if(_0x4882bb[_0x7f7a('0x12')]){_0x4882bb[_0x7f7a('0x13')]=moment()[_0x7f7a('0x14')]('YYYY-MM-DD\x20HH:mm:ss');}_0x19333d(null,_0x27aa44);},'beforeUpdate':function(_0xe21c63,_0x37494c,_0x137e9a){if(_0xe21c63[_0x7f7a('0x15')]('substatus')){_0xe21c63[_0x7f7a('0x10')]=_0xe21c63[_0x7f7a('0xf')]?moment()[_0x7f7a('0x14')](_0x7f7a('0x11')):null;}if(_0xe21c63[_0x7f7a('0x15')]('closed')){_0xe21c63[_0x7f7a('0x13')]=moment()[_0x7f7a('0x14')](_0x7f7a('0x11'));_0xe21c63[_0x7f7a('0xf')]=null;_0xe21c63[_0x7f7a('0x10')]=null;}_0x137e9a(null,_0xe21c63);},'afterUpdate':function(_0x27b8cf,_0x55c1f8,_0x5e1a09){var _0x574233=_0x3fa11d[_0x7f7a('0x16')];var _0x527828=_0x27b8cf['get']({'plain':!![]});if(_0x527828[_0x7f7a('0x12')]){return _0x574233['MailMessage'][_0x7f7a('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0x527828['id']}})[_0x7f7a('0x18')](function(){_0x5e1a09();})[_0x7f7a('0x19')](function(_0x6a4a72){_0x5e1a09(_0x6a4a72);});}else{_0x5e1a09();}}},'charset':_0x7f7a('0x1a'),'collate':_0x7f7a('0x1b')});};
\ No newline at end of file
index f63271c..d222689 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9797=['catch','UpdateMailInteraction','MailInteraction','update','raw','options','where','attributes','debug','stringify','find','addTags','body','omit','ids','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailInteraction.socket','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','error','code','message','result'];(function(_0x4c1973,_0xfeab10){var _0x4d43e6=function(_0x126e45){while(--_0x126e45){_0x4c1973['push'](_0x4c1973['shift']());}};_0x4d43e6(++_0xfeab10);}(_0x9797,0x1c9));var _0x7979=function(_0x123d3d,_0x114ea5){_0x123d3d=_0x123d3d-0x0;var _0x5707bf=_0x9797[_0x123d3d];return _0x5707bf;};'use strict';var _=require(_0x7979('0x0'));var util=require(_0x7979('0x1'));var moment=require(_0x7979('0x2'));var BPromise=require('bluebird');var rs=require(_0x7979('0x3'));var fs=require('fs');var Redis=require(_0x7979('0x4'));var db=require(_0x7979('0x5'))['db'];var utils=require(_0x7979('0x6'));var logger=require(_0x7979('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7979('0x8'));var client=jayson[_0x7979('0x9')][_0x7979('0xa')]({'port':0x232a});config[_0x7979('0xb')]=_['defaults'](config[_0x7979('0xb')],{'host':_0x7979('0xc'),'port':0x18eb});var socket=require(_0x7979('0xd'))(new Redis(config[_0x7979('0xb')]));require(_0x7979('0xe'))['register'](socket);function respondWithRpcPromise(_0x564af3,_0x27474a,_0x22ca17){return new BPromise(function(_0x3be25f,_0x496b4d){return client['request'](_0x564af3,_0x22ca17)[_0x7979('0xf')](function(_0xd98f9f){logger[_0x7979('0x10')](_0x7979('0x11'),_0x27474a,_0x7979('0x12'));logger['debug']('MailInteraction,\x20%s,\x20%s,\x20%s',_0x27474a,_0x7979('0x12'),JSON['stringify'](_0xd98f9f));if(_0xd98f9f['error']){if(_0xd98f9f[_0x7979('0x13')][_0x7979('0x14')]===0x1f4){logger[_0x7979('0x13')]('MailInteraction,\x20%s,\x20%s',_0x27474a,_0xd98f9f[_0x7979('0x13')][_0x7979('0x15')]);return _0x496b4d(_0xd98f9f[_0x7979('0x13')][_0x7979('0x15')]);}logger['error'](_0x7979('0x11'),_0x27474a,_0xd98f9f[_0x7979('0x13')][_0x7979('0x15')]);return _0x3be25f(_0xd98f9f[_0x7979('0x13')][_0x7979('0x15')]);}else{logger[_0x7979('0x10')](_0x7979('0x11'),_0x27474a,_0x7979('0x12'));_0x3be25f(_0xd98f9f[_0x7979('0x16')][_0x7979('0x15')]);}})[_0x7979('0x17')](function(_0x469279){logger[_0x7979('0x13')](_0x7979('0x11'),_0x27474a,_0x469279);_0x496b4d(_0x469279);});});}exports[_0x7979('0x18')]=function(_0x2f3294){var _0x46f896=this;return new Promise(function(_0x47c34f,_0x39be8d){return db[_0x7979('0x19')][_0x7979('0x1a')](_0x2f3294['body'],{'raw':_0x2f3294['options']?_0x2f3294['options'][_0x7979('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f3294[_0x7979('0x1c')]?_0x2f3294[_0x7979('0x1c')][_0x7979('0x1d')]||null:null,'attributes':_0x2f3294[_0x7979('0x1c')]?_0x2f3294[_0x7979('0x1c')][_0x7979('0x1e')]||null:null,'limit':_0x2f3294[_0x7979('0x1c')]?_0x2f3294[_0x7979('0x1c')]['limit']||null:null})[_0x7979('0xf')](function(_0x5de476){logger[_0x7979('0x10')](_0x7979('0x18'),_0x2f3294);logger[_0x7979('0x1f')](_0x7979('0x18'),_0x2f3294,JSON[_0x7979('0x20')](_0x5de476));_0x47c34f(_0x5de476);})[_0x7979('0x17')](function(_0x10875e){logger[_0x7979('0x13')](_0x7979('0x18'),_0x10875e[_0x7979('0x15')],_0x2f3294);_0x39be8d(_0x46f896[_0x7979('0x13')](0x1f4,_0x10875e[_0x7979('0x15')]));});});};exports['AddTagsToMailInteraction']=function(_0x44ef63){return new Promise(function(_0x48a6c7,_0x43c73d){return db['MailInteraction'][_0x7979('0x21')]({'where':_0x44ef63[_0x7979('0x1c')]?_0x44ef63[_0x7979('0x1c')][_0x7979('0x1d')]||null:null})[_0x7979('0xf')](function(_0x582578){if(_0x582578){return _0x582578[_0x7979('0x22')](_0x44ef63[_0x7979('0x23')]['ids'],_[_0x7979('0x24')](_0x44ef63[_0x7979('0x23')],[_0x7979('0x25'),'id'])||{});}})[_0x7979('0x26')](function(_0x21944e){logger[_0x7979('0x10')](_0x7979('0x27'),_0x44ef63);logger[_0x7979('0x1f')](_0x7979('0x27'),_0x44ef63,JSON[_0x7979('0x20')](_0x21944e));_0x48a6c7(_0x21944e);})[_0x7979('0x17')](function(_0x1c7e7c){logger[_0x7979('0x13')](_0x7979('0x27'),_0x1c7e7c[_0x7979('0x15')],_0x44ef63);_0x43c73d(_this['error'](0x1f4,_0x1c7e7c[_0x7979('0x15')]));});});};
\ No newline at end of file
+var _0x3b6e=['MailInteraction','update','options','raw','where','attributes','limit','then','debug','stringify','AddTagsToMailInteraction','addTags','body','ids','omit','AddTags','lodash','util','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','redis','./mailInteraction.socket','register','request','info','MailInteraction,\x20%s,\x20%s','request\x20sent','error','message','catch'];(function(_0x39f7c6,_0x3e1616){var _0x51f856=function(_0x566a48){while(--_0x566a48){_0x39f7c6['push'](_0x39f7c6['shift']());}};_0x51f856(++_0x3e1616);}(_0x3b6e,0xfe));var _0xe3b6=function(_0x9f754c,_0x407338){_0x9f754c=_0x9f754c-0x0;var _0x7e6761=_0x3b6e[_0x9f754c];return _0x7e6761;};'use strict';var _=require(_0xe3b6('0x0'));var util=require(_0xe3b6('0x1'));var moment=require('moment');var BPromise=require(_0xe3b6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe3b6('0x3'))['db'];var utils=require(_0xe3b6('0x4'));var logger=require('../../config/logger')(_0xe3b6('0x5'));var config=require(_0xe3b6('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe3b6('0x7')]['http']({'port':0x232a});config[_0xe3b6('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe3b6('0x8')]));require(_0xe3b6('0x9'))[_0xe3b6('0xa')](socket);function respondWithRpcPromise(_0x2a0ce2,_0x844089,_0x5be6b0){return new BPromise(function(_0x110cc7,_0x20f538){return client[_0xe3b6('0xb')](_0x2a0ce2,_0x5be6b0)['then'](function(_0x36c0d5){logger[_0xe3b6('0xc')](_0xe3b6('0xd'),_0x844089,_0xe3b6('0xe'));logger['debug']('MailInteraction,\x20%s,\x20%s,\x20%s',_0x844089,_0xe3b6('0xe'),JSON['stringify'](_0x36c0d5));if(_0x36c0d5['error']){if(_0x36c0d5[_0xe3b6('0xf')]['code']===0x1f4){logger[_0xe3b6('0xf')](_0xe3b6('0xd'),_0x844089,_0x36c0d5['error']['message']);return _0x20f538(_0x36c0d5[_0xe3b6('0xf')][_0xe3b6('0x10')]);}logger['error'](_0xe3b6('0xd'),_0x844089,_0x36c0d5[_0xe3b6('0xf')]['message']);return _0x110cc7(_0x36c0d5['error'][_0xe3b6('0x10')]);}else{logger[_0xe3b6('0xc')](_0xe3b6('0xd'),_0x844089,_0xe3b6('0xe'));_0x110cc7(_0x36c0d5['result'][_0xe3b6('0x10')]);}})[_0xe3b6('0x11')](function(_0x461f5f){logger['error'](_0xe3b6('0xd'),_0x844089,_0x461f5f);_0x20f538(_0x461f5f);});});}exports['UpdateMailInteraction']=function(_0x514286){var _0x1ce6af=this;return new Promise(function(_0x566e38,_0x4240ef){return db[_0xe3b6('0x12')][_0xe3b6('0x13')](_0x514286['body'],{'raw':_0x514286['options']?_0x514286[_0xe3b6('0x14')][_0xe3b6('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x514286[_0xe3b6('0x14')]?_0x514286[_0xe3b6('0x14')][_0xe3b6('0x16')]||null:null,'attributes':_0x514286[_0xe3b6('0x14')]?_0x514286[_0xe3b6('0x14')][_0xe3b6('0x17')]||null:null,'limit':_0x514286[_0xe3b6('0x14')]?_0x514286[_0xe3b6('0x14')][_0xe3b6('0x18')]||null:null})[_0xe3b6('0x19')](function(_0x264f02){logger[_0xe3b6('0xc')]('UpdateMailInteraction',_0x514286);logger[_0xe3b6('0x1a')]('UpdateMailInteraction',_0x514286,JSON[_0xe3b6('0x1b')](_0x264f02));_0x566e38(_0x264f02);})[_0xe3b6('0x11')](function(_0x332d67){logger[_0xe3b6('0xf')]('UpdateMailInteraction',_0x332d67[_0xe3b6('0x10')],_0x514286);_0x4240ef(_0x1ce6af['error'](0x1f4,_0x332d67[_0xe3b6('0x10')]));});});};exports[_0xe3b6('0x1c')]=function(_0x296f6f){return new Promise(function(_0x1e3286,_0x288b89){return db[_0xe3b6('0x12')]['find']({'where':_0x296f6f[_0xe3b6('0x14')]?_0x296f6f[_0xe3b6('0x14')][_0xe3b6('0x16')]||null:null})[_0xe3b6('0x19')](function(_0x3fc98d){if(_0x3fc98d){return _0x3fc98d[_0xe3b6('0x1d')](_0x296f6f[_0xe3b6('0x1e')][_0xe3b6('0x1f')],_[_0xe3b6('0x20')](_0x296f6f[_0xe3b6('0x1e')],[_0xe3b6('0x1f'),'id'])||{});}})['spread'](function(_0x555df0){logger[_0xe3b6('0xc')](_0xe3b6('0x21'),_0x296f6f);logger['debug'](_0xe3b6('0x21'),_0x296f6f,JSON[_0xe3b6('0x1b')](_0x555df0));_0x1e3286(_0x555df0);})['catch'](function(_0x2ff0b){logger[_0xe3b6('0xf')](_0xe3b6('0x21'),_0x2ff0b[_0xe3b6('0x10')],_0x296f6f);_0x288b89(_this[_0xe3b6('0xf')](0x1f4,_0x2ff0b['message']));});});};
\ No newline at end of file
index ad90eb3..8a0c872 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b3d=['length','mailInteraction:','./mailInteraction.events','save','remove','update','emit','removeListener'];(function(_0xeffb06,_0x1f1b06){var _0x49cb13=function(_0x45dd62){while(--_0x45dd62){_0xeffb06['push'](_0xeffb06['shift']());}};_0x49cb13(++_0x1f1b06);}(_0x5b3d,0x162));var _0xd5b3=function(_0x1cb9bd,_0x37af34){_0x1cb9bd=_0x1cb9bd-0x0;var _0x7065c7=_0x5b3d[_0x1cb9bd];return _0x7065c7;};'use strict';var MailInteractionEvents=require(_0xd5b3('0x0'));var events=[_0xd5b3('0x1'),_0xd5b3('0x2'),_0xd5b3('0x3')];function createListener(_0x13ffc8,_0xbcd59b){return function(_0x1caf97){_0xbcd59b[_0xd5b3('0x4')](_0x13ffc8,_0x1caf97);};}function removeListener(_0x5af296,_0x53cc60){return function(){MailInteractionEvents[_0xd5b3('0x5')](_0x5af296,_0x53cc60);};}exports['register']=function(_0x292436){for(var _0x1879b1=0x0,_0x15213e=events[_0xd5b3('0x6')];_0x1879b1<_0x15213e;_0x1879b1++){var _0x320cf4=events[_0x1879b1];var _0x70ec33=createListener(_0xd5b3('0x7')+_0x320cf4,_0x292436);MailInteractionEvents['on'](_0x320cf4,_0x70ec33);}};
\ No newline at end of file
+var _0x3409=['register','length','mailInteraction:','./mailInteraction.events','save','remove','emit'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x3409,0x1e6));var _0x9340=function(_0x2ec5f3,_0x478354){_0x2ec5f3=_0x2ec5f3-0x0;var _0x11cc00=_0x3409[_0x2ec5f3];return _0x11cc00;};'use strict';var MailInteractionEvents=require(_0x9340('0x0'));var events=[_0x9340('0x1'),_0x9340('0x2'),'update'];function createListener(_0x2e279c,_0x295f08){return function(_0x4e1e48){_0x295f08[_0x9340('0x3')](_0x2e279c,_0x4e1e48);};}function removeListener(_0x556f7d,_0x19acc5){return function(){MailInteractionEvents['removeListener'](_0x556f7d,_0x19acc5);};}exports[_0x9340('0x4')]=function(_0xedc124){for(var _0x974a99=0x0,_0x82d727=events[_0x9340('0x5')];_0x974a99<_0x82d727;_0x974a99++){var _0x3b7244=events[_0x974a99];var _0x1d926f=createListener(_0x9340('0x6')+_0x3b7244,_0xedc124);MailInteractionEvents['on'](_0x3b7244,_0x1d926f);}};
\ No newline at end of file
index 90e3429..4c504c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c90=['reject','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./mailMessage.controller','get','isAuthenticated','index','show','/:id/download','post','mail','mailmessage:create','put','/:id','update','/:id/accept','accept','/:id/reject'];(function(_0x324882,_0x8c9034){var _0x4678be=function(_0x5701f7){while(--_0x5701f7){_0x324882['push'](_0x324882['shift']());}};_0x4678be(++_0x8c9034);}(_0x3c90,0xfd));var _0x03c9=function(_0x1ab187,_0x18e07a){_0x1ab187=_0x1ab187-0x0;var _0x587824=_0x3c90[_0x1ab187];return _0x587824;};'use strict';var multer=require('multer');var util=require(_0x03c9('0x0'));var path=require(_0x03c9('0x1'));var timeout=require(_0x03c9('0x2'));var express=require(_0x03c9('0x3'));var router=express[_0x03c9('0x4')]();var fs_extra=require(_0x03c9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x03c9('0x6'));var config=require('../../config/environment');var controller=require(_0x03c9('0x7'));router[_0x03c9('0x8')]('/',auth[_0x03c9('0x9')](),controller[_0x03c9('0xa')]);router[_0x03c9('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0x03c9('0x9')](),controller[_0x03c9('0xb')]);router[_0x03c9('0x8')](_0x03c9('0xc'),auth[_0x03c9('0x9')](),controller['download']);router[_0x03c9('0xd')]('/',auth[_0x03c9('0x9')](),interaction['tracked'](_0x03c9('0xe'),_0x03c9('0xf')),controller['create']);router[_0x03c9('0x10')](_0x03c9('0x11'),auth['isAuthenticated'](),controller[_0x03c9('0x12')]);router[_0x03c9('0x10')](_0x03c9('0x13'),auth[_0x03c9('0x9')](),controller[_0x03c9('0x14')]);router[_0x03c9('0x10')](_0x03c9('0x15'),auth[_0x03c9('0x9')](),controller[_0x03c9('0x16')]);router['delete']('/:id',auth[_0x03c9('0x9')](),controller[_0x03c9('0x17')]);module[_0x03c9('0x18')]=router;
\ No newline at end of file
+var _0x9000=['../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','index','/describe','isAuthenticated','describe','show','/:id/download','download','tracked','mail','mailmessage:create','create','put','/:id','update','accept','/:id/reject','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x9000,0x19e));var _0x0900=function(_0x114bf1,_0x16ac4a){_0x114bf1=_0x114bf1-0x0;var _0x58072f=_0x9000[_0x114bf1];return _0x58072f;};'use strict';var multer=require(_0x0900('0x0'));var util=require(_0x0900('0x1'));var path=require('path');var timeout=require(_0x0900('0x2'));var express=require(_0x0900('0x3'));var router=express[_0x0900('0x4')]();var fs_extra=require(_0x0900('0x5'));var auth=require(_0x0900('0x6'));var interaction=require(_0x0900('0x7'));var config=require(_0x0900('0x8'));var controller=require(_0x0900('0x9'));router[_0x0900('0xa')]('/',auth['isAuthenticated'](),controller[_0x0900('0xb')]);router['get'](_0x0900('0xc'),auth[_0x0900('0xd')](),controller[_0x0900('0xe')]);router['get']('/:id',auth[_0x0900('0xd')](),controller[_0x0900('0xf')]);router[_0x0900('0xa')](_0x0900('0x10'),auth[_0x0900('0xd')](),controller[_0x0900('0x11')]);router['post']('/',auth[_0x0900('0xd')](),interaction[_0x0900('0x12')](_0x0900('0x13'),_0x0900('0x14')),controller[_0x0900('0x15')]);router[_0x0900('0x16')](_0x0900('0x17'),auth[_0x0900('0xd')](),controller[_0x0900('0x18')]);router[_0x0900('0x16')]('/:id/accept',auth[_0x0900('0xd')](),controller[_0x0900('0x19')]);router['put'](_0x0900('0x1a'),auth[_0x0900('0xd')](),controller['reject']);router[_0x0900('0x1b')]('/:id',auth[_0x0900('0xd')](),controller[_0x0900('0x1c')]);module[_0x0900('0x1d')]=router;
\ No newline at end of file
index bf4eaba..720f976 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x429e=['out','STRING','long','DATE','Email','sequelize','lodash','TEXT','BOOLEAN','ENUM'];(function(_0x295572,_0x58a177){var _0x285bef=function(_0x3d284e){while(--_0x3d284e){_0x295572['push'](_0x295572['shift']());}};_0x285bef(++_0x58a177);}(_0x429e,0xeb));var _0xe429=function(_0x33588b,_0x1ceae0){_0x33588b=_0x33588b-0x0;var _0x62e8bd=_0x429e[_0x33588b];return _0x62e8bd;};'use strict';var Sequelize=require(_0xe429('0x0'));var _=require(_0xe429('0x1'));module['exports']={'body':{'type':Sequelize['TEXT']('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xe429('0x2')]('medium')},'read':{'type':Sequelize[_0xe429('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe429('0x4')]('in',_0xe429('0x5')),'defaultValue':_0xe429('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0xe429('0x6')](0x1fe)},'from':{'type':Sequelize[_0xe429('0x6')]},'to':{'type':Sequelize[_0xe429('0x2')](_0xe429('0x7'))},'cc':{'type':Sequelize['TEXT'](_0xe429('0x7'))},'bcc':{'type':Sequelize[_0xe429('0x2')]('long')},'subject':{'type':Sequelize[_0xe429('0x2')]},'sentAt':{'type':Sequelize[_0xe429('0x8')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0xe429('0x3')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xe429('0x8')]},'originTo':{'type':Sequelize[_0xe429('0x2')](_0xe429('0x7'))},'originCc':{'type':Sequelize[_0xe429('0x2')](_0xe429('0x7'))},'originChannel':{'type':Sequelize[_0xe429('0x4')](_0xe429('0x9'),'Chat'),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
+var _0x2baa=['sequelize','lodash','exports','TEXT','long','BOOLEAN','ENUM','out','STRING','INTEGER','DATE','Email','Chat'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x2baa,0xdd));var _0xa2ba=function(_0x3daa1e,_0x8909be){_0x3daa1e=_0x3daa1e-0x0;var _0xe85332=_0x2baa[_0x3daa1e];return _0xe85332;};'use strict';var Sequelize=require(_0xa2ba('0x0'));var _=require(_0xa2ba('0x1'));module[_0xa2ba('0x2')]={'body':{'type':Sequelize[_0xa2ba('0x3')](_0xa2ba('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xa2ba('0x3')]('medium')},'read':{'type':Sequelize[_0xa2ba('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xa2ba('0x6')]('in',_0xa2ba('0x7')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xa2ba('0x8')](0x1fe)},'from':{'type':Sequelize[_0xa2ba('0x8')]},'to':{'type':Sequelize[_0xa2ba('0x3')](_0xa2ba('0x4'))},'cc':{'type':Sequelize['TEXT'](_0xa2ba('0x4'))},'bcc':{'type':Sequelize[_0xa2ba('0x3')](_0xa2ba('0x4'))},'subject':{'type':Sequelize[_0xa2ba('0x3')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0xa2ba('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xa2ba('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xa2ba('0xa')]},'originTo':{'type':Sequelize[_0xa2ba('0x3')](_0xa2ba('0x4'))},'originCc':{'type':Sequelize[_0xa2ba('0x3')](_0xa2ba('0x4'))},'originChannel':{'type':Sequelize[_0xa2ba('0x6')](_0xa2ba('0xb'),_0xa2ba('0xc')),'defaultValue':_0xa2ba('0xb'),'allowNull':![]}};
\ No newline at end of file
index d932922..685193d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01f2=['interface','unix','toString','files','tmp','server','from','bcc','subject','createdAt','Attachment','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','push','readFileSync','build','download','bluebird','path','lodash','ioredis','../../components/parsers/qs','api','../../config/logger','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','html-entities','./mailMessage.socket','register','jayson/promise','client','http','then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','status','offset','undefined','limit','count','Content-Range','json','destroy','end','sendStatus','index','MailMessage','rawAttributes','fieldName','type','map','name','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','show','includeAll','find','update','params','body','describe','create','direction','out','secret','split','findOne','MailAccountId','CmList','List','CmContact','MailServerOut','Smtp','isNil','host','port','secure','authentication','user','pass','service','auth','attachments','join','root','Contacts','ListId','List\x20not\x20found','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','UserId','agent','MailInteraction','MailInteractionId','read1stAt','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','User','fullname','email','internal','manual','SIP/%s','channel','motionChannel','event','fromString','EventManager','acceptmessage','get','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','contact'];(function(_0x8e74c4,_0x4c3b72){var _0x50e53f=function(_0x2a4eef){while(--_0x2a4eef){_0x8e74c4['push'](_0x8e74c4['shift']());}};_0x50e53f(++_0x4c3b72);}(_0x01f2,0xbb));var _0x201f=function(_0x538a9c,_0x9eafb9){_0x538a9c=_0x538a9c-0x0;var _0x2b067f=_0x01f2[_0x538a9c];return _0x2b067f;};'use strict';var emlformat=require('eml-format');var moment=require('moment');var BPromise=require(_0x201f('0x0'));var util=require('util');var path=require(_0x201f('0x1'));var fs=require('fs');var _=require(_0x201f('0x2'));var Redis=require(_0x201f('0x3'));var htmlToText=require('html-to-text');var qs=require(_0x201f('0x4'));var logger=require('../../config/logger')(_0x201f('0x5'));var interaction_log=require(_0x201f('0x6'))(_0x201f('0x7'));var config=require(_0x201f('0x8'));var db=require(_0x201f('0x9'))['db'];config[_0x201f('0xa')]=_[_0x201f('0xb')](config['redis'],{'host':_0x201f('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x201f('0xa')]));var htmlEntities=require(_0x201f('0xd'));require(_0x201f('0xe'))[_0x201f('0xf')](socket);var jayson=require(_0x201f('0x10'));var client=jayson[_0x201f('0x11')][_0x201f('0x12')]({'port':0x232c});var client9003=jayson[_0x201f('0x11')][_0x201f('0x12')]({'port':0x232b});var client9002=jayson['client'][_0x201f('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x2f58af,_0x1c0e85,_0x1689e1,_0x4b8b6a){return new BPromise(function(_0x1f817d,_0x22a6a0){var _0xb03f18=_0x4b8b6a||client;return _0xb03f18['request'](_0x2f58af,_0x1689e1)[_0x201f('0x13')](function(_0x591549){logger[_0x201f('0x14')](_0x201f('0x15'),_0x1c0e85,'request\x20sent');logger[_0x201f('0x16')](_0x201f('0x17'),_0x1c0e85,'request\x20sent',JSON[_0x201f('0x18')](_0x591549));if(_0x591549[_0x201f('0x19')]){if(_0x591549['error'][_0x201f('0x1a')]===0x1f4){logger[_0x201f('0x19')](_0x201f('0x15'),_0x1c0e85,_0x591549[_0x201f('0x19')][_0x201f('0x1b')]);return _0x22a6a0(_0x591549['error'][_0x201f('0x1b')]);}logger[_0x201f('0x19')]('MailMessage,\x20%s,\x20%s',_0x1c0e85,_0x591549[_0x201f('0x19')]['message']);return _0x1f817d(_0x591549[_0x201f('0x19')]['message']);}else{logger[_0x201f('0x14')](_0x201f('0x15'),_0x1c0e85,_0x201f('0x1c'));_0x1f817d(_0x591549[_0x201f('0x1d')][_0x201f('0x1b')]);}})[_0x201f('0x1e')](function(_0x4c4fce){logger[_0x201f('0x19')](_0x201f('0x15'),_0x1c0e85,_0x4c4fce);_0x22a6a0(_0x4c4fce);});});}function respondWithResult(_0x2c399e,_0x5f13fa){_0x5f13fa=_0x5f13fa||0xc8;return function(_0x2ebc65){if(_0x2ebc65){return _0x2c399e[_0x201f('0x1f')](_0x5f13fa)['json'](_0x2ebc65);}};}function respondWithFilteredResult(_0x24addf,_0x1e8601){return function(_0x5dffcd){if(_0x5dffcd){var _0x39494d=typeof _0x1e8601[_0x201f('0x20')]===_0x201f('0x21')&&typeof _0x1e8601[_0x201f('0x22')]===_0x201f('0x21');var _0x465de5=_0x5dffcd['count'];var _0x15ccb5=_0x39494d?0x0:_0x1e8601['offset'];var _0x2e4658=_0x39494d?_0x5dffcd[_0x201f('0x23')]:_0x1e8601['offset']+_0x1e8601[_0x201f('0x22')];var _0x5d231d;if(_0x2e4658>=_0x465de5){_0x2e4658=_0x465de5;_0x5d231d=0xc8;}else{_0x5d231d=0xce;}_0x24addf['status'](_0x5d231d);return _0x24addf['set'](_0x201f('0x24'),_0x15ccb5+'-'+_0x2e4658+'/'+_0x465de5)[_0x201f('0x25')](_0x5dffcd);}return null;};}function saveUpdates(_0x2102d9){return function(_0x37e16f){if(_0x37e16f){return _0x37e16f['update'](_0x2102d9)[_0x201f('0x13')](function(_0xa5fff5){return _0xa5fff5;});}return null;};}function removeEntity(_0x3ac823){return function(_0x57a00c){if(_0x57a00c){return _0x57a00c[_0x201f('0x26')]()[_0x201f('0x13')](function(){_0x3ac823[_0x201f('0x1f')](0xcc)[_0x201f('0x27')]();});}};}function handleEntityNotFound(_0x58f39a){return function(_0x1315c8){if(!_0x1315c8){_0x58f39a[_0x201f('0x28')](0x194);}return _0x1315c8;};}function handleError(_0x14c2e9,_0x3bda00){_0x3bda00=_0x3bda00||0x1f4;return function(_0x42abdb){logger[_0x201f('0x19')](_0x42abdb['stack']);if(_0x42abdb['name']){delete _0x42abdb['name'];}_0x14c2e9[_0x201f('0x1f')](_0x3bda00)['send'](_0x42abdb);};}exports[_0x201f('0x29')]=function(_0x4f411a,_0x4d3375){var _0x2db56c={},_0x2363c0={},_0x464436={'count':0x0,'rows':[]};var _0x10270e=_['map'](db[_0x201f('0x2a')][_0x201f('0x2b')],function(_0x49550f){return{'name':_0x49550f[_0x201f('0x2c')],'type':_0x49550f[_0x201f('0x2d')]['key']};});_0x2363c0['model']=_[_0x201f('0x2e')](_0x10270e,_0x201f('0x2f'));_0x2363c0[_0x201f('0x30')]=_[_0x201f('0x31')](_0x4f411a[_0x201f('0x30')]);_0x2363c0[_0x201f('0x32')]=_[_0x201f('0x33')](_0x2363c0[_0x201f('0x34')],_0x2363c0['query']);_0x2db56c['attributes']=_[_0x201f('0x33')](_0x2363c0[_0x201f('0x34')],qs[_0x201f('0x35')](_0x4f411a[_0x201f('0x30')]['fields']));_0x2db56c[_0x201f('0x36')]=_0x2db56c[_0x201f('0x36')][_0x201f('0x37')]?_0x2db56c[_0x201f('0x36')]:_0x2363c0[_0x201f('0x34')];if(!_0x4f411a[_0x201f('0x30')][_0x201f('0x38')](_0x201f('0x39'))){_0x2db56c[_0x201f('0x22')]=qs[_0x201f('0x22')](_0x4f411a[_0x201f('0x30')][_0x201f('0x22')]);_0x2db56c['offset']=qs[_0x201f('0x20')](_0x4f411a['query'][_0x201f('0x20')]);}_0x2db56c['order']=qs[_0x201f('0x3a')](_0x4f411a[_0x201f('0x30')][_0x201f('0x3a')]);_0x2db56c[_0x201f('0x3b')]=qs[_0x201f('0x32')](_[_0x201f('0x3c')](_0x4f411a[_0x201f('0x30')],_0x2363c0[_0x201f('0x32')]),_0x10270e);if(_0x4f411a[_0x201f('0x30')][_0x201f('0x3d')]){_0x2db56c[_0x201f('0x3b')]=_[_0x201f('0x3e')](_0x2db56c[_0x201f('0x3b')],{'$or':_[_0x201f('0x2e')](_0x10270e,function(_0x50ac8b){if(_0x50ac8b[_0x201f('0x2d')]!==_0x201f('0x3f')){var _0x47196c={};_0x47196c[_0x50ac8b[_0x201f('0x2f')]]={'$like':'%'+_0x4f411a[_0x201f('0x30')][_0x201f('0x3d')]+'%'};return _0x47196c;}})});}_0x2db56c=_[_0x201f('0x3e')]({},_0x2db56c,_0x4f411a[_0x201f('0x40')]);var _0x85e3e3={'where':_0x2db56c[_0x201f('0x3b')]};return db['MailMessage'][_0x201f('0x23')](_0x85e3e3)[_0x201f('0x13')](function(_0x19531b){_0x464436[_0x201f('0x23')]=_0x19531b;if(_0x4f411a['query']['includeAll']){_0x2db56c[_0x201f('0x41')]=[{'all':!![]}];}return db['MailMessage'][_0x201f('0x42')](_0x2db56c);})[_0x201f('0x13')](function(_0x1c5f13){_0x464436[_0x201f('0x43')]=_0x1c5f13;return _0x464436;})[_0x201f('0x13')](respondWithFilteredResult(_0x4d3375,_0x2db56c))[_0x201f('0x1e')](handleError(_0x4d3375,null));};exports[_0x201f('0x44')]=function(_0x42109e,_0x3d69cb){var _0x3542cd={'raw':!![],'where':{'id':_0x42109e['params']['id']}},_0x516334={};_0x516334[_0x201f('0x34')]=_[_0x201f('0x31')](db['MailMessage'][_0x201f('0x2b')]);_0x516334['query']=_[_0x201f('0x31')](_0x42109e[_0x201f('0x30')]);_0x516334[_0x201f('0x32')]=_[_0x201f('0x33')](_0x516334[_0x201f('0x34')],_0x516334[_0x201f('0x30')]);_0x3542cd[_0x201f('0x36')]=_['intersection'](_0x516334['model'],qs['fields'](_0x42109e[_0x201f('0x30')][_0x201f('0x35')]));_0x3542cd[_0x201f('0x36')]=_0x3542cd['attributes']['length']?_0x3542cd['attributes']:_0x516334[_0x201f('0x34')];if(_0x42109e[_0x201f('0x30')][_0x201f('0x45')]){_0x3542cd[_0x201f('0x41')]=[{'all':!![]}];}_0x3542cd=_[_0x201f('0x3e')]({},_0x3542cd,_0x42109e[_0x201f('0x40')]);return db['MailMessage'][_0x201f('0x46')](_0x3542cd)[_0x201f('0x13')](handleEntityNotFound(_0x3d69cb,null))[_0x201f('0x13')](respondWithResult(_0x3d69cb,null))[_0x201f('0x1e')](handleError(_0x3d69cb,null));};exports[_0x201f('0x47')]=function(_0x495c28,_0x4c9a03){if(_0x495c28['body']['id']){delete _0x495c28['body']['id'];}return db[_0x201f('0x2a')][_0x201f('0x46')]({'where':{'id':_0x495c28[_0x201f('0x48')]['id']}})['then'](handleEntityNotFound(_0x4c9a03,null))[_0x201f('0x13')](saveUpdates(_0x495c28[_0x201f('0x49')],null))[_0x201f('0x13')](respondWithResult(_0x4c9a03,null))[_0x201f('0x1e')](handleError(_0x4c9a03,null));};exports['destroy']=function(_0x17d422,_0x4330d0){return db[_0x201f('0x2a')]['find']({'where':{'id':_0x17d422['params']['id']}})['then'](handleEntityNotFound(_0x4330d0,null))[_0x201f('0x13')](removeEntity(_0x4330d0,null))[_0x201f('0x1e')](handleError(_0x4330d0,null));};exports[_0x201f('0x4a')]=function(_0x539aa8,_0x43be75){return db[_0x201f('0x2a')][_0x201f('0x4a')]()['then'](respondWithResult(_0x43be75,null))[_0x201f('0x1e')](handleError(_0x43be75,null));};exports[_0x201f('0x4b')]=function(_0x442173,_0x52eb75){return db['MailMessage'][_0x201f('0x4b')](_0x442173[_0x201f('0x49')])[_0x201f('0x13')](function(_0x3dec5e){if(_0x3dec5e){if(_0x3dec5e[_0x201f('0x4c')]===_0x201f('0x4d')&&!_0x3dec5e[_0x201f('0x4e')]){var _0x1bc0eb,_0x5e1cb4,_0x5a0323;if(_0x442173[_0x201f('0x49')]['to']){_0x5e1cb4=_0x442173['body']['to'][_0x201f('0x4f')](',')[0x0];}return db['MailAccount'][_0x201f('0x50')]({'where':{'id':_0x3dec5e[_0x201f('0x51')]},'include':[{'model':db[_0x201f('0x52')],'as':_0x201f('0x53'),'include':[{'model':db[_0x201f('0x54')],'as':'Contacts','where':{'email':_0x5e1cb4},'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x201f('0x55')],'as':_0x201f('0x56'),'raw':!![]}]})[_0x201f('0x13')](function(_0x3dbd7e){_0x1bc0eb=_0x3dbd7e;if(_0x1bc0eb&&_0x1bc0eb[_0x201f('0x56')]){var _0x228687={'tls':{'rejectUnauthorized':![]}};if(_[_0x201f('0x57')](_0x1bc0eb[_0x201f('0x56')]['service'])){_0x228687['host']=_0x1bc0eb[_0x201f('0x56')][_0x201f('0x58')];_0x228687[_0x201f('0x59')]=_0x1bc0eb[_0x201f('0x56')][_0x201f('0x59')];_0x228687[_0x201f('0x5a')]=_0x1bc0eb[_0x201f('0x56')][_0x201f('0x5a')];if(_0x1bc0eb[_0x201f('0x56')][_0x201f('0x5b')]){_0x228687['auth']={'user':_0x1bc0eb['Smtp'][_0x201f('0x5c')],'pass':_0x1bc0eb[_0x201f('0x56')][_0x201f('0x5d')]};}}else{_0x228687[_0x201f('0x5e')]=_0x1bc0eb[_0x201f('0x56')][_0x201f('0x5e')];_0x228687[_0x201f('0x5f')]={'user':_0x1bc0eb[_0x201f('0x56')][_0x201f('0x5c')],'pass':_0x1bc0eb[_0x201f('0x56')][_0x201f('0x5d')]};_0x228687[_0x201f('0x5a')]=_0x1bc0eb[_0x201f('0x56')][_0x201f('0x5a')];}if(_0x442173['body'][_0x201f('0x60')]&&_0x442173['body'][_0x201f('0x60')][_0x201f('0x37')]){for(var _0x23c929=0x0;_0x23c929<_0x442173[_0x201f('0x49')][_0x201f('0x60')][_0x201f('0x37')];_0x23c929+=0x1){_0x442173[_0x201f('0x49')][_0x201f('0x60')][_0x23c929]={'filename':_0x442173[_0x201f('0x49')]['attachments'][_0x23c929]['name'],'path':path[_0x201f('0x61')](config[_0x201f('0x62')],'server/files/attachments',_0x442173[_0x201f('0x49')][_0x201f('0x60')][_0x23c929]['basename'])};}}_0x5a0323={'account':_0x228687,'message':_0x442173['body']};return;}})[_0x201f('0x13')](function(){if(_0x1bc0eb['List']){if(_0x1bc0eb[_0x201f('0x53')][_0x201f('0x63')][_0x201f('0x37')]){return _0x1bc0eb[_0x201f('0x53')][_0x201f('0x63')][0x0];}else{return db[_0x201f('0x54')]['create'](_['defaults'](_0x442173[_0x201f('0x49')],{'firstName':_0x442173[_0x201f('0x49')]['to'],'email':_0x442173[_0x201f('0x49')]['to'],'phone':_0x442173[_0x201f('0x49')]['to'],'ListId':_0x1bc0eb[_0x201f('0x64')]}));}}else{throw new Error(_0x201f('0x65'));}})['then'](function(){if(_0x5a0323){return respondWithRpcPromise(_0x201f('0x66'),_0x201f('0x67'),_0x5a0323,client9003)['then'](function(_0x1cb472){return _0x3dec5e[_0x201f('0x47')]({'read':!![],'messageId':_0x1cb472[_0x201f('0x68')],'sentAt':moment()[_0x201f('0x69')](_0x201f('0x6a'))});})['catch'](function(_0x3d80a5){logger[_0x201f('0x19')]('%s',JSON['stringify'](_0x3d80a5));return _0x3dec5e;});}return _0x3dec5e;});}return _0x3dec5e;}})[_0x201f('0x13')](respondWithResult(_0x52eb75,0xc9))[_0x201f('0x1e')](handleError(_0x52eb75,null));};exports[_0x201f('0x6b')]=function(_0x29d908,_0x20cb8c){var _0xbd91d2={'agent':{},'channel':_0x201f('0x6c')};if(_0x29d908[_0x201f('0x49')]['id']){delete _0x29d908['body']['id'];}_0x29d908[_0x201f('0x49')][_0x201f('0x6d')]=!![];_0x29d908[_0x201f('0x49')]['readAt']=moment()[_0x201f('0x69')](_0x201f('0x6a'));_0x29d908[_0x201f('0x49')][_0x201f('0x6e')]=_0x29d908[_0x201f('0x49')]['UserId']||_0x29d908[_0x201f('0x5c')]['id'];_0xbd91d2[_0x201f('0x6f')]['id']=_0x29d908['body'][_0x201f('0x6e')];return db['MailMessage'][_0x201f('0x46')]({'where':{'id':_0x29d908[_0x201f('0x48')]['id'],'UserId':null}})[_0x201f('0x13')](handleEntityNotFound(_0x20cb8c,null))[_0x201f('0x13')](saveUpdates(_0x29d908['body'],null))[_0x201f('0x13')](function(_0x16de12){if(_0x16de12){_0xbd91d2['message']=_0x16de12['get']({'plain':!![]});return db[_0x201f('0x70')][_0x201f('0x46')]({'where':{'id':_0x16de12[_0x201f('0x71')]}});}return null;})[_0x201f('0x13')](handleEntityNotFound(_0x20cb8c,null))['then'](function(_0x5d499c){if(_0x5d499c){return _0x5d499c[_0x201f('0x47')]({'UserId':_0x29d908[_0x201f('0x49')][_0x201f('0x6e')],'read1stAt':_['isNil'](_0x5d499c[_0x201f('0x72')])?moment()[_0x201f('0x69')](_0x201f('0x6a')):undefined});}return null;})[_0x201f('0x13')](function(_0x112823){if(_0x112823){_0xbd91d2[_0x201f('0x73')]=_0x112823['get']({'plain':!![]});interaction_log['info']('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x29d908[_0x201f('0x5c')]['id'],_0x29d908[_0x201f('0x5c')][_0x201f('0x2f')],_0x29d908[_0x201f('0x5c')][_0x201f('0x74')],_0xbd91d2[_0x201f('0x73')]['id'],_0x29d908[_0x201f('0x49')]?JSON['stringify'](_0x29d908['body']):_0x201f('0x75'));return respondWithRpcPromise(_0x201f('0x76'),_0x201f('0x77'),_0xbd91d2);}return null;})['then'](function(_0xf68dd8){var _0x519131=_0x201f('0x78')+_0xf68dd8['message'][_0x201f('0x79')];return db[_0x201f('0x7a')][_0x201f('0x30')](_0x519131,{'type':db['Sequelize'][_0x201f('0x7b')][_0x201f('0x7c')],'raw':!![]})[_0x201f('0x13')](function(_0x11ee7c){return _0x11ee7c;});})[_0x201f('0x13')](function(_0x5c5c71){if(_0x5c5c71){_0xbd91d2['message']['contact']=_0x5c5c71[0x0];if(!_0x29d908[_0x201f('0x49')]['UserId'])return;return db[_0x201f('0x7d')][_0x201f('0x46')]({'where':{'id':_0x29d908[_0x201f('0x49')][_0x201f('0x6e')],'role':_0x201f('0x6f')},'attributes':['id',_0x201f('0x2f'),_0x201f('0x7e'),_0x201f('0x7f'),_0x201f('0x80')],'raw':!![]});}return null;})[_0x201f('0x13')](function(_0x46f2d1){if(!_0x46f2d1)return null;_0xbd91d2[_0x201f('0x1b')][_0x201f('0x6f')]=_0x46f2d1;return _0xbd91d2;})['then'](function(_0x5dfd4a){if(_0x5dfd4a){if(_0x29d908['body'][_0x201f('0x81')]){_0xbd91d2[_0x201f('0x1b')]['interface']=util[_0x201f('0x69')](_0x201f('0x82'),_0x29d908['user'][_0x201f('0x2f')]);_0xbd91d2[_0x201f('0x1b')][_0x201f('0x83')]=_0xbd91d2[_0x201f('0x83')];_0xbd91d2[_0x201f('0x1b')][_0x201f('0x84')]=_0xbd91d2['channel'];_0xbd91d2[_0x201f('0x1b')][_0x201f('0x85')]=_0x201f('0x6b');_0xbd91d2[_0x201f('0x1b')][_0x201f('0x49')]=htmlToText[_0x201f('0x86')](_0xbd91d2[_0x201f('0x1b')][_0x201f('0x49')]);return respondWithRpcPromise('EventManager',_0x201f('0x87'),{'event':_0x201f('0x88'),'message':_0xbd91d2['message']},client9002)[_0x201f('0x13')](function(){return _0xbd91d2;});}return _0xbd91d2;}return null;})[_0x201f('0x13')](respondWithResult(_0x20cb8c,null))[_0x201f('0x1e')](handleError(_0x20cb8c,null));};exports['reject']=function(_0x22e524,_0x1eb4e1){var _0x19a73f={'agent':{},'channel':_0x201f('0x6c')};if(_0x22e524[_0x201f('0x49')]['id']){delete _0x22e524['body']['id'];}_0x22e524[_0x201f('0x49')][_0x201f('0x6e')]=_0x22e524[_0x201f('0x49')]['UserId']||_0x22e524[_0x201f('0x5c')]['id'];_0x19a73f[_0x201f('0x6f')]['id']=_0x22e524['body'][_0x201f('0x6e')];return db[_0x201f('0x2a')][_0x201f('0x46')]({'where':{'id':_0x22e524['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1eb4e1,null))[_0x201f('0x13')](function(_0x89a940){if(_0x89a940){_0x19a73f[_0x201f('0x1b')]=_0x89a940[_0x201f('0x89')]({'plain':!![]});return db[_0x201f('0x70')][_0x201f('0x46')]({'where':{'id':_0x89a940[_0x201f('0x71')]}});}return null;})[_0x201f('0x13')](handleEntityNotFound(_0x1eb4e1,null))['then'](function(_0x512308){if(_0x512308){_0x19a73f[_0x201f('0x73')]=_0x512308[_0x201f('0x89')]({'plain':!![]});interaction_log['info'](_0x201f('0x8a'),_0x22e524['user']['id'],_0x22e524['user'][_0x201f('0x2f')],_0x22e524[_0x201f('0x5c')][_0x201f('0x74')],_0x19a73f['interaction']['id'],_0x22e524[_0x201f('0x49')]?JSON[_0x201f('0x18')](_0x22e524[_0x201f('0x49')]):'null');return respondWithRpcPromise(_0x201f('0x8b'),_0x201f('0x8c'),_0x19a73f);}return null;})[_0x201f('0x13')](function(_0x5cbdc1){var _0x4369a0='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5cbdc1[_0x201f('0x1b')][_0x201f('0x79')];return db['sequelize']['query'](_0x4369a0,{'type':db[_0x201f('0x8d')][_0x201f('0x7b')][_0x201f('0x7c')],'raw':!![]})[_0x201f('0x13')](function(_0xf2b7e2){return _0xf2b7e2;});})[_0x201f('0x13')](function(_0x430541){if(_0x430541){_0x19a73f[_0x201f('0x1b')][_0x201f('0x8e')]=_0x430541[0x0];if(!_0x22e524[_0x201f('0x49')][_0x201f('0x6e')])return;return db[_0x201f('0x7d')][_0x201f('0x46')]({'where':{'id':_0x22e524['body'][_0x201f('0x6e')],'role':_0x201f('0x6f')},'attributes':['id',_0x201f('0x2f'),'fullname',_0x201f('0x7f'),_0x201f('0x80')],'raw':!![]});}return null;})['then'](function(_0x40e8c9){if(!_0x40e8c9)return null;_0x19a73f['message']['agent']=_0x40e8c9;return _0x19a73f;})[_0x201f('0x13')](function(_0x3610e0){if(_0x3610e0){_0x3610e0[_0x201f('0x1b')][_0x201f('0x8f')]=util[_0x201f('0x69')](_0x201f('0x82'),_0x22e524[_0x201f('0x5c')]['name']);_0x3610e0[_0x201f('0x1b')]['channel']=_0x19a73f[_0x201f('0x83')];_0x3610e0['message'][_0x201f('0x84')]=_0x19a73f[_0x201f('0x83')];_0x3610e0[_0x201f('0x1b')][_0x201f('0x85')]='reject';_0x3610e0[_0x201f('0x1b')]['body']=htmlToText[_0x201f('0x86')](_0x19a73f[_0x201f('0x1b')][_0x201f('0x49')]);respondWithRpcPromise(_0x201f('0x87'),'EventManager',{'event':'rejectmessage','message':_0x3610e0[_0x201f('0x1b')]},client9002);return _0x19a73f;}return null;})[_0x201f('0x13')](respondWithResult(_0x1eb4e1,null))[_0x201f('0x1e')](handleError(_0x1eb4e1,null));};exports['download']=function(_0x371162,_0x22e01d){var _0x296d52=moment()[_0x201f('0x90')]()[_0x201f('0x91')]();var _0x5e1a82=path[_0x201f('0x61')](config[_0x201f('0x62')],'server',_0x201f('0x92'),_0x201f('0x93'));var _0x571a3e=path[_0x201f('0x61')](config[_0x201f('0x62')],_0x201f('0x94'),'files',_0x201f('0x60'));var _0x6459e9=util[_0x201f('0x69')]('message-%s.eml',_0x296d52);return db[_0x201f('0x2a')][_0x201f('0x46')]({'where':{'id':_0x371162[_0x201f('0x48')]['id']},'attributes':['id',_0x201f('0x49'),_0x201f('0x95'),'to','cc',_0x201f('0x96'),_0x201f('0x97'),_0x201f('0x98')],'include':_0x371162[_0x201f('0x30')]['attachments']?[{'model':db[_0x201f('0x99')],'as':_0x201f('0x9a')}]:undefined})['then'](handleEntityNotFound(_0x22e01d,null))[_0x201f('0x13')](function(_0x16e64e){if(_0x16e64e){var _0x5e4b23=_0x16e64e;var _0xe3beb8={'from':_0x5e4b23[_0x201f('0x95')],'to':_0x5e4b23['to'],'subject':_0x5e4b23['subject'],'html':htmlEntities[_0x201f('0x9b')](_0x5e4b23[_0x201f('0x49')]),'headers':{'Date':moment(_0x5e4b23[_0x201f('0x98')])[_0x201f('0x69')](_0x201f('0x9c'))},'attachments':[]};if(_0x16e64e['cc']){_0xe3beb8[_0x201f('0x9d')]['Cc']=_0x16e64e['cc'];}if(_0x16e64e[_0x201f('0x96')]){_0xe3beb8[_0x201f('0x9d')][_0x201f('0x9e')]=_0x16e64e[_0x201f('0x96')];}return new BPromise(function(_0x9a026d,_0x5058c7){if(_0x16e64e[_0x201f('0x9a')]){for(var _0x249d77=0x0;_0x249d77<_0x16e64e['Attachments'][_0x201f('0x37')];_0x249d77++){var _0x349da7=_0x16e64e[_0x201f('0x9a')][_0x249d77];var _0x8847b5=path['join'](_0x571a3e,_0x349da7[_0x201f('0x9f')]);if(fs[_0x201f('0xa0')](_0x8847b5)){_0xe3beb8['attachments'][_0x201f('0xa1')]({'name':_0x349da7[_0x201f('0x2f')],'contentType':_0x349da7[_0x201f('0x2d')],'data':fs[_0x201f('0xa2')](_0x8847b5)});}}}emlformat[_0x201f('0xa3')](_0xe3beb8,function(_0x307544,_0x1fd04c){if(_0x307544)return _0x5058c7(_0x307544);fs['writeFileSync'](path[_0x201f('0x61')](_0x5e1a82,_0x6459e9),_0x1fd04c);return _0x9a026d(_0x1fd04c);});});}})[_0x201f('0x13')](function(_0x26f331){if(_0x26f331){return _0x22e01d[_0x201f('0xa4')](path[_0x201f('0x61')](_0x5e1a82,_0x6459e9),_0x6459e9,function(_0x2f7916){if(!_0x2f7916)fs['unlinkSync'](path['join'](_0x5e1a82,_0x6459e9));});}})[_0x201f('0x1e')](handleError(_0x22e01d,null));};
\ No newline at end of file
+var _0xedd9=['params','describe','create','secret','split','MailAccount','MailAccountId','List','CmContact','updatedAt','DESC','MailServerOut','Smtp','isNil','port','secure','authentication','auth','service','user','pass','attachments','join','server/files/attachments','defaults','ListId','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','readAt','agent','UserId','MailInteraction','MailInteractionId','read1stAt','interaction','get','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','sequelize','Sequelize','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','reject','fromString','rejectmessage','unix','toString','root','server','files','tmp','message-%s.eml','from','subject','createdAt','headers','bcc','Bcc','Attachments','basename','existsSync','readFileSync','build','download','unlinkSync','moment','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','api','../../config/logger','mail-interactions','../../config/environment','redis','localhost','socket.io-emitter','register','client','http','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','json','undefined','limit','count','offset','Content-Range','update','then','destroy','status','end','sendStatus','stack','name','index','map','MailMessage','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','filters','find','body'];(function(_0x160ef7,_0x376b49){var _0x4580a7=function(_0x5a5b82){while(--_0x5a5b82){_0x160ef7['push'](_0x160ef7['shift']());}};_0x4580a7(++_0x376b49);}(_0xedd9,0xfc));var _0x9edd=function(_0x3cb34f,_0x19c741){_0x3cb34f=_0x3cb34f-0x0;var _0x5e153d=_0xedd9[_0x3cb34f];return _0x5e153d;};'use strict';var emlformat=require('eml-format');var moment=require(_0x9edd('0x0'));var BPromise=require(_0x9edd('0x1'));var util=require(_0x9edd('0x2'));var path=require(_0x9edd('0x3'));var fs=require('fs');var _=require(_0x9edd('0x4'));var Redis=require(_0x9edd('0x5'));var htmlToText=require(_0x9edd('0x6'));var qs=require(_0x9edd('0x7'));var logger=require('../../config/logger')(_0x9edd('0x8'));var interaction_log=require(_0x9edd('0x9'))(_0x9edd('0xa'));var config=require(_0x9edd('0xb'));var db=require('../../mysqldb')['db'];config[_0x9edd('0xc')]=_['defaults'](config[_0x9edd('0xc')],{'host':_0x9edd('0xd'),'port':0x18eb});var socket=require(_0x9edd('0xe'))(new Redis(config[_0x9edd('0xc')]));require('./mailMessage.socket')[_0x9edd('0xf')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9edd('0x10')][_0x9edd('0x11')]({'port':0x232c});var client9003=jayson['client'][_0x9edd('0x11')]({'port':0x232b});var client9002=jayson[_0x9edd('0x10')]['http']({'port':0x232a});function respondWithRpcPromise(_0x30c0d7,_0x1b73d1,_0x25e64c,_0xfd544a){return new BPromise(function(_0x287ddd,_0x3a7b84){var _0xfca576=_0xfd544a||client;return _0xfca576[_0x9edd('0x12')](_0x30c0d7,_0x25e64c)['then'](function(_0x176bfa){logger[_0x9edd('0x13')](_0x9edd('0x14'),_0x1b73d1,_0x9edd('0x15'));logger[_0x9edd('0x16')](_0x9edd('0x17'),_0x1b73d1,_0x9edd('0x15'),JSON[_0x9edd('0x18')](_0x176bfa));if(_0x176bfa['error']){if(_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1a')]===0x1f4){logger[_0x9edd('0x19')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1b')]);return _0x3a7b84(_0x176bfa[_0x9edd('0x19')]['message']);}logger[_0x9edd('0x19')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1b')]);return _0x287ddd(_0x176bfa['error']['message']);}else{logger[_0x9edd('0x13')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x9edd('0x15'));_0x287ddd(_0x176bfa['result']['message']);}})[_0x9edd('0x1c')](function(_0x1c46a8){logger['error']('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x1c46a8);_0x3a7b84(_0x1c46a8);});});}function respondWithResult(_0x341d67,_0x186186){_0x186186=_0x186186||0xc8;return function(_0x477878){if(_0x477878){return _0x341d67['status'](_0x186186)[_0x9edd('0x1d')](_0x477878);}};}function respondWithFilteredResult(_0x1dca43,_0x44a6c1){return function(_0x2ca65f){if(_0x2ca65f){var _0x339a0d=typeof _0x44a6c1['offset']===_0x9edd('0x1e')&&typeof _0x44a6c1[_0x9edd('0x1f')]===_0x9edd('0x1e');var _0x2f9f86=_0x2ca65f[_0x9edd('0x20')];var _0x4d507f=_0x339a0d?0x0:_0x44a6c1['offset'];var _0x3276ee=_0x339a0d?_0x2ca65f[_0x9edd('0x20')]:_0x44a6c1[_0x9edd('0x21')]+_0x44a6c1[_0x9edd('0x1f')];var _0x3c2227;if(_0x3276ee>=_0x2f9f86){_0x3276ee=_0x2f9f86;_0x3c2227=0xc8;}else{_0x3c2227=0xce;}_0x1dca43['status'](_0x3c2227);return _0x1dca43['set'](_0x9edd('0x22'),_0x4d507f+'-'+_0x3276ee+'/'+_0x2f9f86)[_0x9edd('0x1d')](_0x2ca65f);}return null;};}function saveUpdates(_0x1c762c){return function(_0x52746a){if(_0x52746a){return _0x52746a[_0x9edd('0x23')](_0x1c762c)[_0x9edd('0x24')](function(_0x2ae8dd){return _0x2ae8dd;});}return null;};}function removeEntity(_0x41af53){return function(_0x5eccfb){if(_0x5eccfb){return _0x5eccfb[_0x9edd('0x25')]()[_0x9edd('0x24')](function(){_0x41af53[_0x9edd('0x26')](0xcc)[_0x9edd('0x27')]();});}};}function handleEntityNotFound(_0xbbf08f){return function(_0x42e664){if(!_0x42e664){_0xbbf08f[_0x9edd('0x28')](0x194);}return _0x42e664;};}function handleError(_0x1fba7b,_0x19b6c1){_0x19b6c1=_0x19b6c1||0x1f4;return function(_0x1c2e2b){logger[_0x9edd('0x19')](_0x1c2e2b[_0x9edd('0x29')]);if(_0x1c2e2b[_0x9edd('0x2a')]){delete _0x1c2e2b[_0x9edd('0x2a')];}_0x1fba7b[_0x9edd('0x26')](_0x19b6c1)['send'](_0x1c2e2b);};}exports[_0x9edd('0x2b')]=function(_0x259259,_0x267c74){var _0x5d1707={},_0x2d2f88={},_0x3990fb={'count':0x0,'rows':[]};var _0xde9b13=_[_0x9edd('0x2c')](db[_0x9edd('0x2d')][_0x9edd('0x2e')],function(_0x473068){return{'name':_0x473068[_0x9edd('0x2f')],'type':_0x473068[_0x9edd('0x30')][_0x9edd('0x31')]};});_0x2d2f88[_0x9edd('0x32')]=_[_0x9edd('0x2c')](_0xde9b13,_0x9edd('0x2a'));_0x2d2f88[_0x9edd('0x33')]=_['keys'](_0x259259[_0x9edd('0x33')]);_0x2d2f88['filters']=_[_0x9edd('0x34')](_0x2d2f88[_0x9edd('0x32')],_0x2d2f88[_0x9edd('0x33')]);_0x5d1707[_0x9edd('0x35')]=_[_0x9edd('0x34')](_0x2d2f88['model'],qs[_0x9edd('0x36')](_0x259259[_0x9edd('0x33')][_0x9edd('0x36')]));_0x5d1707[_0x9edd('0x35')]=_0x5d1707[_0x9edd('0x35')][_0x9edd('0x37')]?_0x5d1707[_0x9edd('0x35')]:_0x2d2f88[_0x9edd('0x32')];if(!_0x259259[_0x9edd('0x33')][_0x9edd('0x38')]('nolimit')){_0x5d1707[_0x9edd('0x1f')]=qs['limit'](_0x259259[_0x9edd('0x33')]['limit']);_0x5d1707[_0x9edd('0x21')]=qs[_0x9edd('0x21')](_0x259259[_0x9edd('0x33')]['offset']);}_0x5d1707[_0x9edd('0x39')]=qs[_0x9edd('0x3a')](_0x259259[_0x9edd('0x33')]['sort']);_0x5d1707[_0x9edd('0x3b')]=qs['filters'](_[_0x9edd('0x3c')](_0x259259[_0x9edd('0x33')],_0x2d2f88['filters']),_0xde9b13);if(_0x259259[_0x9edd('0x33')][_0x9edd('0x3d')]){_0x5d1707[_0x9edd('0x3b')]=_[_0x9edd('0x3e')](_0x5d1707['where'],{'$or':_[_0x9edd('0x2c')](_0xde9b13,function(_0x5bbdf8){if(_0x5bbdf8[_0x9edd('0x30')]!==_0x9edd('0x3f')){var _0x587d74={};_0x587d74[_0x5bbdf8[_0x9edd('0x2a')]]={'$like':'%'+_0x259259['query']['filter']+'%'};return _0x587d74;}})});}_0x5d1707=_[_0x9edd('0x3e')]({},_0x5d1707,_0x259259[_0x9edd('0x40')]);var _0x1f276b={'where':_0x5d1707[_0x9edd('0x3b')]};return db[_0x9edd('0x2d')][_0x9edd('0x20')](_0x1f276b)[_0x9edd('0x24')](function(_0x75efbe){_0x3990fb[_0x9edd('0x20')]=_0x75efbe;if(_0x259259[_0x9edd('0x33')][_0x9edd('0x41')]){_0x5d1707[_0x9edd('0x42')]=[{'all':!![]}];}return db[_0x9edd('0x2d')][_0x9edd('0x43')](_0x5d1707);})[_0x9edd('0x24')](function(_0x5416f8){_0x3990fb[_0x9edd('0x44')]=_0x5416f8;return _0x3990fb;})[_0x9edd('0x24')](respondWithFilteredResult(_0x267c74,_0x5d1707))[_0x9edd('0x1c')](handleError(_0x267c74,null));};exports[_0x9edd('0x45')]=function(_0x241929,_0x3ecdfd){var _0x10d41e={'raw':!![],'where':{'id':_0x241929['params']['id']}},_0x4e9ad1={};_0x4e9ad1['model']=_[_0x9edd('0x46')](db['MailMessage'][_0x9edd('0x2e')]);_0x4e9ad1[_0x9edd('0x33')]=_[_0x9edd('0x46')](_0x241929[_0x9edd('0x33')]);_0x4e9ad1[_0x9edd('0x47')]=_['intersection'](_0x4e9ad1[_0x9edd('0x32')],_0x4e9ad1[_0x9edd('0x33')]);_0x10d41e[_0x9edd('0x35')]=_['intersection'](_0x4e9ad1[_0x9edd('0x32')],qs[_0x9edd('0x36')](_0x241929[_0x9edd('0x33')][_0x9edd('0x36')]));_0x10d41e[_0x9edd('0x35')]=_0x10d41e[_0x9edd('0x35')]['length']?_0x10d41e[_0x9edd('0x35')]:_0x4e9ad1[_0x9edd('0x32')];if(_0x241929['query'][_0x9edd('0x41')]){_0x10d41e[_0x9edd('0x42')]=[{'all':!![]}];}_0x10d41e=_['merge']({},_0x10d41e,_0x241929[_0x9edd('0x40')]);return db[_0x9edd('0x2d')][_0x9edd('0x48')](_0x10d41e)['then'](handleEntityNotFound(_0x3ecdfd,null))[_0x9edd('0x24')](respondWithResult(_0x3ecdfd,null))[_0x9edd('0x1c')](handleError(_0x3ecdfd,null));};exports[_0x9edd('0x23')]=function(_0x28c7bd,_0x53f6e3){if(_0x28c7bd[_0x9edd('0x49')]['id']){delete _0x28c7bd[_0x9edd('0x49')]['id'];}return db[_0x9edd('0x2d')]['find']({'where':{'id':_0x28c7bd[_0x9edd('0x4a')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x53f6e3,null))['then'](saveUpdates(_0x28c7bd[_0x9edd('0x49')],null))['then'](respondWithResult(_0x53f6e3,null))[_0x9edd('0x1c')](handleError(_0x53f6e3,null));};exports[_0x9edd('0x25')]=function(_0x24245f,_0x3fcdf5){return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0x24245f[_0x9edd('0x4a')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x3fcdf5,null))[_0x9edd('0x24')](removeEntity(_0x3fcdf5,null))[_0x9edd('0x1c')](handleError(_0x3fcdf5,null));};exports[_0x9edd('0x4b')]=function(_0x5a3b1d,_0x161bea){return db[_0x9edd('0x2d')][_0x9edd('0x4b')]()['then'](respondWithResult(_0x161bea,null))[_0x9edd('0x1c')](handleError(_0x161bea,null));};exports['create']=function(_0x54d83d,_0x54ecfa){return db[_0x9edd('0x2d')][_0x9edd('0x4c')](_0x54d83d[_0x9edd('0x49')])[_0x9edd('0x24')](function(_0x48a900){if(_0x48a900){if(_0x48a900['direction']==='out'&&!_0x48a900[_0x9edd('0x4d')]){var _0x5f666b,_0xd5090a,_0x1091ff;if(_0x54d83d[_0x9edd('0x49')]['to']){_0xd5090a=_0x54d83d[_0x9edd('0x49')]['to'][_0x9edd('0x4e')](',')[0x0];}return db[_0x9edd('0x4f')]['findOne']({'where':{'id':_0x48a900[_0x9edd('0x50')]},'include':[{'model':db['CmList'],'as':_0x9edd('0x51'),'include':[{'model':db[_0x9edd('0x52')],'as':'Contacts','where':{'email':_0xd5090a},'limit':0x1,'order':[[_0x9edd('0x53'),_0x9edd('0x54')]]}]},{'model':db[_0x9edd('0x55')],'as':'Smtp','raw':!![]}]})[_0x9edd('0x24')](function(_0x2e1ce3){_0x5f666b=_0x2e1ce3;if(_0x5f666b&&_0x5f666b[_0x9edd('0x56')]){var _0x15ebfa={'tls':{'rejectUnauthorized':![]}};if(_[_0x9edd('0x57')](_0x5f666b[_0x9edd('0x56')]['service'])){_0x15ebfa['host']=_0x5f666b[_0x9edd('0x56')]['host'];_0x15ebfa[_0x9edd('0x58')]=_0x5f666b[_0x9edd('0x56')][_0x9edd('0x58')];_0x15ebfa[_0x9edd('0x59')]=_0x5f666b['Smtp'][_0x9edd('0x59')];if(_0x5f666b['Smtp'][_0x9edd('0x5a')]){_0x15ebfa[_0x9edd('0x5b')]={'user':_0x5f666b[_0x9edd('0x56')]['user'],'pass':_0x5f666b[_0x9edd('0x56')]['pass']};}}else{_0x15ebfa[_0x9edd('0x5c')]=_0x5f666b[_0x9edd('0x56')]['service'];_0x15ebfa[_0x9edd('0x5b')]={'user':_0x5f666b['Smtp'][_0x9edd('0x5d')],'pass':_0x5f666b[_0x9edd('0x56')][_0x9edd('0x5e')]};_0x15ebfa['secure']=_0x5f666b[_0x9edd('0x56')][_0x9edd('0x59')];}if(_0x54d83d[_0x9edd('0x49')][_0x9edd('0x5f')]&&_0x54d83d[_0x9edd('0x49')]['attachments']['length']){for(var _0x2e1a96=0x0;_0x2e1a96<_0x54d83d[_0x9edd('0x49')]['attachments']['length'];_0x2e1a96+=0x1){_0x54d83d['body'][_0x9edd('0x5f')][_0x2e1a96]={'filename':_0x54d83d['body']['attachments'][_0x2e1a96][_0x9edd('0x2a')],'path':path[_0x9edd('0x60')](config['root'],_0x9edd('0x61'),_0x54d83d[_0x9edd('0x49')][_0x9edd('0x5f')][_0x2e1a96]['basename'])};}}_0x1091ff={'account':_0x15ebfa,'message':_0x54d83d[_0x9edd('0x49')]};return;}})['then'](function(){if(_0x5f666b[_0x9edd('0x51')]){if(_0x5f666b[_0x9edd('0x51')]['Contacts'][_0x9edd('0x37')]){return _0x5f666b[_0x9edd('0x51')]['Contacts'][0x0];}else{return db[_0x9edd('0x52')][_0x9edd('0x4c')](_[_0x9edd('0x62')](_0x54d83d[_0x9edd('0x49')],{'firstName':_0x54d83d['body']['to'],'email':_0x54d83d[_0x9edd('0x49')]['to'],'phone':_0x54d83d['body']['to'],'ListId':_0x5f666b[_0x9edd('0x63')]}));}}else{throw new Error(_0x9edd('0x64'));}})[_0x9edd('0x24')](function(){if(_0x1091ff){return respondWithRpcPromise('SendMail',_0x9edd('0x65'),_0x1091ff,client9003)[_0x9edd('0x24')](function(_0x130dba){return _0x48a900[_0x9edd('0x23')]({'read':!![],'messageId':_0x130dba[_0x9edd('0x66')],'sentAt':moment()[_0x9edd('0x67')](_0x9edd('0x68'))});})['catch'](function(_0x5e29d0){logger[_0x9edd('0x19')]('%s',JSON[_0x9edd('0x18')](_0x5e29d0));return _0x48a900;});}return _0x48a900;});}return _0x48a900;}})[_0x9edd('0x24')](respondWithResult(_0x54ecfa,0xc9))[_0x9edd('0x1c')](handleError(_0x54ecfa,null));};exports[_0x9edd('0x69')]=function(_0x52f6f3,_0x2e40c8){var _0x5d56a={'agent':{},'channel':_0x9edd('0x6a')};if(_0x52f6f3['body']['id']){delete _0x52f6f3[_0x9edd('0x49')]['id'];}_0x52f6f3[_0x9edd('0x49')]['read']=!![];_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6b')]=moment()['format'](_0x9edd('0x68'));_0x52f6f3[_0x9edd('0x49')]['UserId']=_0x52f6f3[_0x9edd('0x49')]['UserId']||_0x52f6f3['user']['id'];_0x5d56a[_0x9edd('0x6c')]['id']=_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')];return db['MailMessage'][_0x9edd('0x48')]({'where':{'id':_0x52f6f3[_0x9edd('0x4a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2e40c8,null))[_0x9edd('0x24')](saveUpdates(_0x52f6f3[_0x9edd('0x49')],null))[_0x9edd('0x24')](function(_0x1ad198){if(_0x1ad198){_0x5d56a['message']=_0x1ad198['get']({'plain':!![]});return db[_0x9edd('0x6e')]['find']({'where':{'id':_0x1ad198[_0x9edd('0x6f')]}});}return null;})[_0x9edd('0x24')](handleEntityNotFound(_0x2e40c8,null))[_0x9edd('0x24')](function(_0x3cfd35){if(_0x3cfd35){return _0x3cfd35[_0x9edd('0x23')]({'UserId':_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')],'read1stAt':_[_0x9edd('0x57')](_0x3cfd35[_0x9edd('0x70')])?moment()['format'](_0x9edd('0x68')):undefined});}return null;})[_0x9edd('0x24')](function(_0x2c7562){if(_0x2c7562){_0x5d56a[_0x9edd('0x71')]=_0x2c7562[_0x9edd('0x72')]({'plain':!![]});interaction_log[_0x9edd('0x13')](_0x9edd('0x73'),_0x52f6f3['user']['id'],_0x52f6f3[_0x9edd('0x5d')][_0x9edd('0x2a')],_0x52f6f3['user'][_0x9edd('0x74')],_0x5d56a[_0x9edd('0x71')]['id'],_0x52f6f3['body']?JSON[_0x9edd('0x18')](_0x52f6f3[_0x9edd('0x49')]):_0x9edd('0x75'));return respondWithRpcPromise('AcceptMessage',_0x9edd('0x76'),_0x5d56a);}return null;})[_0x9edd('0x24')](function(_0x3f04d3){var _0x5a7de3='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3f04d3['message']['ContactId'];return db[_0x9edd('0x77')][_0x9edd('0x33')](_0x5a7de3,{'type':db[_0x9edd('0x78')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x56d794){return _0x56d794;});})[_0x9edd('0x24')](function(_0x20762d){if(_0x20762d){_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x79')]=_0x20762d[0x0];if(!_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')])return;return db[_0x9edd('0x7a')][_0x9edd('0x48')]({'where':{'id':_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')],'role':_0x9edd('0x6c')},'attributes':['id','name',_0x9edd('0x7b'),_0x9edd('0x7c'),_0x9edd('0x7d')],'raw':!![]});}return null;})[_0x9edd('0x24')](function(_0x104afc){if(!_0x104afc)return null;_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x6c')]=_0x104afc;return _0x5d56a;})[_0x9edd('0x24')](function(_0x4a7889){if(_0x4a7889){if(_0x52f6f3['body'][_0x9edd('0x7e')]){_0x5d56a['message'][_0x9edd('0x7f')]=util['format'](_0x9edd('0x80'),_0x52f6f3[_0x9edd('0x5d')]['name']);_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x81')]=_0x5d56a['channel'];_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x82')]=_0x9edd('0x69');_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x49')]=htmlToText['fromString'](_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x49')]);return respondWithRpcPromise(_0x9edd('0x83'),_0x9edd('0x83'),{'event':_0x9edd('0x84'),'message':_0x5d56a['message']},client9002)['then'](function(){return _0x5d56a;});}return _0x5d56a;}return null;})['then'](respondWithResult(_0x2e40c8,null))['catch'](handleError(_0x2e40c8,null));};exports['reject']=function(_0x2da088,_0x5d566e){var _0x58cb3f={'agent':{},'channel':_0x9edd('0x6a')};if(_0x2da088[_0x9edd('0x49')]['id']){delete _0x2da088[_0x9edd('0x49')]['id'];}_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')]=_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')]||_0x2da088[_0x9edd('0x5d')]['id'];_0x58cb3f[_0x9edd('0x6c')]['id']=_0x2da088[_0x9edd('0x49')]['UserId'];return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0x2da088[_0x9edd('0x4a')]['id'],'UserId':null}})[_0x9edd('0x24')](handleEntityNotFound(_0x5d566e,null))[_0x9edd('0x24')](function(_0x23e925){if(_0x23e925){_0x58cb3f[_0x9edd('0x1b')]=_0x23e925[_0x9edd('0x72')]({'plain':!![]});return db['MailInteraction']['find']({'where':{'id':_0x23e925[_0x9edd('0x6f')]}});}return null;})[_0x9edd('0x24')](handleEntityNotFound(_0x5d566e,null))[_0x9edd('0x24')](function(_0x120d0f){if(_0x120d0f){_0x58cb3f[_0x9edd('0x71')]=_0x120d0f[_0x9edd('0x72')]({'plain':!![]});interaction_log[_0x9edd('0x13')](_0x9edd('0x85'),_0x2da088[_0x9edd('0x5d')]['id'],_0x2da088[_0x9edd('0x5d')][_0x9edd('0x2a')],_0x2da088[_0x9edd('0x5d')][_0x9edd('0x74')],_0x58cb3f[_0x9edd('0x71')]['id'],_0x2da088['body']?JSON[_0x9edd('0x18')](_0x2da088[_0x9edd('0x49')]):'null');return respondWithRpcPromise(_0x9edd('0x86'),_0x9edd('0x87'),_0x58cb3f);}return null;})[_0x9edd('0x24')](function(_0x2b4d4c){var _0x559503=_0x9edd('0x88')+_0x2b4d4c[_0x9edd('0x1b')][_0x9edd('0x89')];return db[_0x9edd('0x77')][_0x9edd('0x33')](_0x559503,{'type':db['Sequelize'][_0x9edd('0x8a')][_0x9edd('0x8b')],'raw':!![]})[_0x9edd('0x24')](function(_0x4633eb){return _0x4633eb;});})[_0x9edd('0x24')](function(_0x59927d){if(_0x59927d){_0x58cb3f['message'][_0x9edd('0x79')]=_0x59927d[0x0];if(!_0x2da088['body'][_0x9edd('0x6d')])return;return db['User'][_0x9edd('0x48')]({'where':{'id':_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')],'role':_0x9edd('0x6c')},'attributes':['id',_0x9edd('0x2a'),_0x9edd('0x7b'),'email',_0x9edd('0x7d')],'raw':!![]});}return null;})[_0x9edd('0x24')](function(_0x3aae72){if(!_0x3aae72)return null;_0x58cb3f[_0x9edd('0x1b')][_0x9edd('0x6c')]=_0x3aae72;return _0x58cb3f;})[_0x9edd('0x24')](function(_0x2f8fb6){if(_0x2f8fb6){_0x2f8fb6[_0x9edd('0x1b')]['interface']=util[_0x9edd('0x67')](_0x9edd('0x80'),_0x2da088[_0x9edd('0x5d')][_0x9edd('0x2a')]);_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x81')]=_0x58cb3f[_0x9edd('0x81')];_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x82')]=_0x9edd('0x8c');_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x49')]=htmlToText[_0x9edd('0x8d')](_0x58cb3f[_0x9edd('0x1b')][_0x9edd('0x49')]);respondWithRpcPromise(_0x9edd('0x83'),_0x9edd('0x83'),{'event':_0x9edd('0x8e'),'message':_0x2f8fb6[_0x9edd('0x1b')]},client9002);return _0x58cb3f;}return null;})[_0x9edd('0x24')](respondWithResult(_0x5d566e,null))[_0x9edd('0x1c')](handleError(_0x5d566e,null));};exports['download']=function(_0xa704eb,_0x553018){var _0x4ca7e4=moment()[_0x9edd('0x8f')]()[_0x9edd('0x90')]();var _0x220c00=path[_0x9edd('0x60')](config[_0x9edd('0x91')],_0x9edd('0x92'),_0x9edd('0x93'),_0x9edd('0x94'));var _0x3e5a45=path[_0x9edd('0x60')](config['root'],_0x9edd('0x92'),_0x9edd('0x93'),'attachments');var _0x568067=util[_0x9edd('0x67')](_0x9edd('0x95'),_0x4ca7e4);return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0xa704eb['params']['id']},'attributes':['id','body',_0x9edd('0x96'),'to','cc','bcc',_0x9edd('0x97'),_0x9edd('0x98')],'include':_0xa704eb[_0x9edd('0x33')]['attachments']?[{'model':db['Attachment'],'as':'Attachments'}]:undefined})[_0x9edd('0x24')](handleEntityNotFound(_0x553018,null))[_0x9edd('0x24')](function(_0x7b0fc8){if(_0x7b0fc8){var _0x5bfbfd=_0x7b0fc8;var _0xb2e72={'from':_0x5bfbfd[_0x9edd('0x96')],'to':_0x5bfbfd['to'],'subject':_0x5bfbfd['subject'],'html':_0x5bfbfd[_0x9edd('0x49')],'headers':{'Date':moment(_0x5bfbfd[_0x9edd('0x98')])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x7b0fc8['cc']){_0xb2e72[_0x9edd('0x99')]['Cc']=_0x7b0fc8['cc'];}if(_0x7b0fc8[_0x9edd('0x9a')]){_0xb2e72['headers'][_0x9edd('0x9b')]=_0x7b0fc8[_0x9edd('0x9a')];}return new BPromise(function(_0x54c6a0,_0x201d76){if(_0x7b0fc8['Attachments']){for(var _0x308a0f=0x0;_0x308a0f<_0x7b0fc8[_0x9edd('0x9c')][_0x9edd('0x37')];_0x308a0f++){var _0x742e13=_0x7b0fc8[_0x9edd('0x9c')][_0x308a0f];var _0x3e6426=path['join'](_0x3e5a45,_0x742e13[_0x9edd('0x9d')]);if(fs[_0x9edd('0x9e')](_0x3e6426)){_0xb2e72[_0x9edd('0x5f')]['push']({'name':_0x742e13[_0x9edd('0x2a')],'contentType':_0x742e13['type'],'data':fs[_0x9edd('0x9f')](_0x3e6426)});}}}emlformat[_0x9edd('0xa0')](_0xb2e72,function(_0x25da04,_0x41b0ea){if(_0x25da04)return _0x201d76(_0x25da04);fs['writeFileSync'](path['join'](_0x220c00,_0x568067),_0x41b0ea);return _0x54c6a0(_0x41b0ea);});});}})['then'](function(_0x12dcfa){if(_0x12dcfa){return _0x553018[_0x9edd('0xa1')](path[_0x9edd('0x60')](_0x220c00,_0x568067),_0x568067,function(_0x50af78){if(!_0x50af78)fs[_0x9edd('0xa2')](path[_0x9edd('0x60')](_0x220c00,_0x568067));});}})[_0x9edd('0x1c')](handleError(_0x553018,null));};
\ No newline at end of file
index 81666d8..e9cdecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x306a=['setMaxListeners','remove','emit','hook','exports','events','MailMessage'];(function(_0x79483f,_0x417d01){var _0x2982d2=function(_0x12fbd0){while(--_0x12fbd0){_0x79483f['push'](_0x79483f['shift']());}};_0x2982d2(++_0x417d01);}(_0x306a,0x1b0));var _0xa306=function(_0x165189,_0x19a741){_0x165189=_0x165189-0x0;var _0x44826b=_0x306a[_0x165189];return _0x44826b;};'use strict';var EventEmitter=require(_0xa306('0x0'));var MailMessage=require('../../mysqldb')['db'][_0xa306('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xa306('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xa306('0x3')};function emitEvent(_0x4f3bbf){return function(_0x588cbc,_0x2ea3a4,_0x1d7d3a){MailMessageEvents[_0xa306('0x4')](_0x4f3bbf+':'+_0x588cbc['id'],_0x588cbc);MailMessageEvents['emit'](_0x4f3bbf,_0x588cbc);_0x1d7d3a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage[_0xa306('0x5')](e,emitEvent(event));}}module[_0xa306('0x6')]=MailMessageEvents;
\ No newline at end of file
+var _0x1464=['emit','hasOwnProperty','hook','events','save','update','remove'];(function(_0x4d08a2,_0x4364f0){var _0x19f095=function(_0x223565){while(--_0x223565){_0x4d08a2['push'](_0x4d08a2['shift']());}};_0x19f095(++_0x4364f0);}(_0x1464,0x8f));var _0x4146=function(_0xedad0f,_0xd2a73d){_0xedad0f=_0xedad0f-0x0;var _0x1d657e=_0x1464[_0xedad0f];return _0x1d657e;};'use strict';var EventEmitter=require(_0x4146('0x0'));var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4146('0x1'),'afterUpdate':_0x4146('0x2'),'afterDestroy':_0x4146('0x3')};function emitEvent(_0xf32156){return function(_0x193fa0,_0x114f16,_0x1935b7){MailMessageEvents['emit'](_0xf32156+':'+_0x193fa0['id'],_0x193fa0);MailMessageEvents[_0x4146('0x4')](_0xf32156,_0x193fa0);_0x1935b7(null);};}for(var e in events){if(events[_0x4146('0x5')](e)){var event=events[e];MailMessage[_0x4146('0x6')](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
index b3378a4..a115c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b5f=['path','rimraf','../../config/environment','./mailMessage.attributes','exports','define','messageId','fti_mail_messages','FULLTEXT','body','plainBody','models','get','direction','toLowerCase','out','secret','isNil','MailInteractionId','update','createdAt','catch','error','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','html-to-text'];(function(_0x2c87be,_0x4c470){var _0x3ec927=function(_0x19f272){while(--_0x19f272){_0x2c87be['push'](_0x2c87be['shift']());}};_0x3ec927(++_0x4c470);}(_0x5b5f,0xcc));var _0xf5b5=function(_0x2b3087,_0x5bad3a){_0x2b3087=_0x2b3087-0x0;var _0x39bb6a=_0x5b5f[_0x2b3087];return _0x39bb6a;};'use strict';var _=require('lodash');var util=require(_0xf5b5('0x0'));var logger=require(_0xf5b5('0x1'))('api');var moment=require(_0xf5b5('0x2'));var BPromise=require(_0xf5b5('0x3'));var rp=require(_0xf5b5('0x4'));var htmlToText=require(_0xf5b5('0x5'));var fs=require('fs');var path=require(_0xf5b5('0x6'));var rimraf=require(_0xf5b5('0x7'));var config=require(_0xf5b5('0x8'));var attributes=require(_0xf5b5('0x9'));module[_0xf5b5('0xa')]=function(_0x564060,_0x228a44){return _0x564060[_0xf5b5('0xb')]('MailMessage',attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0xf5b5('0xc'),'fields':['messageId']},{'name':_0xf5b5('0xd'),'fields':['plainBody','subject'],'type':_0xf5b5('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x12883d,_0x34d21b,_0x3bc045){if(_0x12883d[_0xf5b5('0xf')]){_0x12883d[_0xf5b5('0x10')]=htmlToText['fromString'](_0x12883d[_0xf5b5('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3bc045(null,_0x34d21b);},'afterCreate':function(_0xdfc5cb,_0x45d1ed,_0x16a540){var _0x5b4b4a=_0x564060[_0xf5b5('0x11')];var _0x16f2c0=_0xdfc5cb[_0xf5b5('0x12')]({'plain':!![]});if(_0x16f2c0[_0xf5b5('0x13')][_0xf5b5('0x14')]()==='in'||_0x16f2c0['direction'][_0xf5b5('0x14')]()===_0xf5b5('0x15')&&!_0x16f2c0[_0xf5b5('0x16')]&&!_[_0xf5b5('0x17')](_0x16f2c0['UserId'])){_0x5b4b4a['MailInteraction']['findOne']({'where':{'id':_0x16f2c0[_0xf5b5('0x18')]}})['then'](function(_0x480977){if(_0x480977){_0x480977[_0xf5b5('0x19')]({'lastMsgAt':_0x16f2c0[_0xf5b5('0x1a')],'lastMsgDirection':_0x16f2c0['direction'][_0xf5b5('0x14')]()});}})[_0xf5b5('0x1b')](function(_0x5b72d3){console[_0xf5b5('0x1c')](_0x5b72d3);});}_0x16a540();}},'charset':'utf8mb4','collate':_0xf5b5('0x1d')});};
\ No newline at end of file
+var _0x73bd=['FULLTEXT','body','fromString','models','get','direction','toLowerCase','out','isNil','UserId','MailInteraction','findOne','MailInteractionId','then','update','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','path','../../config/environment','./mailMessage.attributes','exports','define','messageId','plainBody','subject'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x73bd,0x1aa));var _0xd73b=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x73bd[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xd73b('0x0'));var util=require(_0xd73b('0x1'));var logger=require(_0xd73b('0x2'))(_0xd73b('0x3'));var moment=require(_0xd73b('0x4'));var BPromise=require(_0xd73b('0x5'));var rp=require(_0xd73b('0x6'));var htmlToText=require(_0xd73b('0x7'));var fs=require('fs');var path=require(_0xd73b('0x8'));var rimraf=require('rimraf');var config=require(_0xd73b('0x9'));var attributes=require(_0xd73b('0xa'));module[_0xd73b('0xb')]=function(_0x4a407e,_0x203efa){return _0x4a407e[_0xd73b('0xc')]('MailMessage',attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':'messageId','fields':[_0xd73b('0xd')]},{'name':'fti_mail_messages','fields':[_0xd73b('0xe'),_0xd73b('0xf')],'type':_0xd73b('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xe4099c,_0x20407f,_0x26c081){if(_0xe4099c[_0xd73b('0x11')]){_0xe4099c[_0xd73b('0xe')]=htmlToText[_0xd73b('0x12')](_0xe4099c[_0xd73b('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x26c081(null,_0x20407f);},'afterCreate':function(_0x419267,_0x2de7aa,_0x6f4563){var _0x4e5f42=_0x4a407e[_0xd73b('0x13')];var _0x19016e=_0x419267[_0xd73b('0x14')]({'plain':!![]});if(_0x19016e[_0xd73b('0x15')][_0xd73b('0x16')]()==='in'||_0x19016e[_0xd73b('0x15')]['toLowerCase']()===_0xd73b('0x17')&&!_0x19016e['secret']&&!_[_0xd73b('0x18')](_0x19016e[_0xd73b('0x19')])){_0x4e5f42[_0xd73b('0x1a')][_0xd73b('0x1b')]({'where':{'id':_0x19016e[_0xd73b('0x1c')]}})[_0xd73b('0x1d')](function(_0x5ab9ed){if(_0x5ab9ed){_0x5ab9ed[_0xd73b('0x1e')]({'lastMsgAt':_0x19016e['createdAt'],'lastMsgDirection':_0x19016e[_0xd73b('0x15')][_0xd73b('0x16')]()});}})['catch'](function(_0x45dd61){console[_0xd73b('0x1f')](_0x45dd61);});}_0x6f4563();}},'charset':_0xd73b('0x20'),'collate':_0xd73b('0x21')});};
\ No newline at end of file
index 421b934..a151d6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7d1=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','then','info','MailMessage,\x20%s,\x20%s','debug','stringify','error','message','result','CreateMailMessage','MailMessage','create','body','options','raw','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x1e534e,_0x40ddb2){_0x1e534e=_0x1e534e-0x0;var _0xcbb1df=_0xd7d1[_0x1e534e];return _0xcbb1df;};'use strict';var _=require(_0x1d7d('0x0'));var util=require(_0x1d7d('0x1'));var moment=require(_0x1d7d('0x2'));var BPromise=require(_0x1d7d('0x3'));var rs=require(_0x1d7d('0x4'));var fs=require('fs');var Redis=require(_0x1d7d('0x5'));var db=require(_0x1d7d('0x6'))['db'];var utils=require(_0x1d7d('0x7'));var logger=require(_0x1d7d('0x8'))(_0x1d7d('0x9'));var config=require(_0x1d7d('0xa'));var jayson=require(_0x1d7d('0xb'));var client=jayson[_0x1d7d('0xc')]['http']({'port':0x232a});config[_0x1d7d('0xd')]=_[_0x1d7d('0xe')](config[_0x1d7d('0xd')],{'host':_0x1d7d('0xf'),'port':0x18eb});var socket=require(_0x1d7d('0x10'))(new Redis(config[_0x1d7d('0xd')]));require(_0x1d7d('0x11'))[_0x1d7d('0x12')](socket);function respondWithRpcPromise(_0x1ad06f,_0x8b258b,_0x2765fe){return new BPromise(function(_0x547f7b,_0xe6b9eb){return client['request'](_0x1ad06f,_0x2765fe)[_0x1d7d('0x13')](function(_0x3a7add){logger[_0x1d7d('0x14')](_0x1d7d('0x15'),_0x8b258b,'request\x20sent');logger[_0x1d7d('0x16')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x8b258b,'request\x20sent',JSON[_0x1d7d('0x17')](_0x3a7add));if(_0x3a7add[_0x1d7d('0x18')]){if(_0x3a7add['error']['code']===0x1f4){logger[_0x1d7d('0x18')](_0x1d7d('0x15'),_0x8b258b,_0x3a7add[_0x1d7d('0x18')][_0x1d7d('0x19')]);return _0xe6b9eb(_0x3a7add[_0x1d7d('0x18')]['message']);}logger[_0x1d7d('0x18')](_0x1d7d('0x15'),_0x8b258b,_0x3a7add['error'][_0x1d7d('0x19')]);return _0x547f7b(_0x3a7add[_0x1d7d('0x18')][_0x1d7d('0x19')]);}else{logger[_0x1d7d('0x14')](_0x1d7d('0x15'),_0x8b258b,'request\x20sent');_0x547f7b(_0x3a7add[_0x1d7d('0x1a')][_0x1d7d('0x19')]);}})['catch'](function(_0x495212){logger[_0x1d7d('0x18')](_0x1d7d('0x15'),_0x8b258b,_0x495212);_0xe6b9eb(_0x495212);});});}exports[_0x1d7d('0x1b')]=function(_0x396802){var _0x2ae740=this;return new Promise(function(_0x275d3c,_0x54d401){return db[_0x1d7d('0x1c')][_0x1d7d('0x1d')](_0x396802[_0x1d7d('0x1e')],{'raw':_0x396802['options']?_0x396802[_0x1d7d('0x1f')][_0x1d7d('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x5950bd){logger[_0x1d7d('0x14')](_0x1d7d('0x1b'),_0x396802);logger[_0x1d7d('0x16')]('CreateMailMessage',_0x396802,JSON[_0x1d7d('0x17')](_0x5950bd));_0x275d3c(_0x5950bd);})[_0x1d7d('0x21')](function(_0x2d4c0c){logger[_0x1d7d('0x18')]('CreateMailMessage',_0x2d4c0c[_0x1d7d('0x19')],_0x396802);_0x54d401(_0x2ae740[_0x1d7d('0x18')](0x1f4,_0x2d4c0c['message']));});});};
\ No newline at end of file
+var _0x80ed=['create','options','raw','stringify','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','CreateMailMessage','MailMessage'];(function(_0x4b3f33,_0x8154e0){var _0x5e8656=function(_0x503015){while(--_0x503015){_0x4b3f33['push'](_0x4b3f33['shift']());}};_0x5e8656(++_0x8154e0);}(_0x80ed,0x11c));var _0xd80e=function(_0x2e6af6,_0xc597c5){_0x2e6af6=_0x2e6af6-0x0;var _0x286db0=_0x80ed[_0x2e6af6];return _0x286db0;};'use strict';var _=require(_0xd80e('0x0'));var util=require('util');var moment=require(_0xd80e('0x1'));var BPromise=require(_0xd80e('0x2'));var rs=require(_0xd80e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd80e('0x4'))['db'];var utils=require(_0xd80e('0x5'));var logger=require(_0xd80e('0x6'))(_0xd80e('0x7'));var config=require('../../config/environment');var jayson=require(_0xd80e('0x8'));var client=jayson[_0xd80e('0x9')][_0xd80e('0xa')]({'port':0x232a});config['redis']=_[_0xd80e('0xb')](config[_0xd80e('0xc')],{'host':_0xd80e('0xd'),'port':0x18eb});var socket=require(_0xd80e('0xe'))(new Redis(config[_0xd80e('0xc')]));require(_0xd80e('0xf'))[_0xd80e('0x10')](socket);function respondWithRpcPromise(_0x2457f5,_0x68625,_0x7f93b4){return new BPromise(function(_0x4eee08,_0x450b44){return client[_0xd80e('0x11')](_0x2457f5,_0x7f93b4)[_0xd80e('0x12')](function(_0x30c9d0){logger[_0xd80e('0x13')](_0xd80e('0x14'),_0x68625,_0xd80e('0x15'));logger[_0xd80e('0x16')](_0xd80e('0x17'),_0x68625,'request\x20sent',JSON['stringify'](_0x30c9d0));if(_0x30c9d0['error']){if(_0x30c9d0['error'][_0xd80e('0x18')]===0x1f4){logger[_0xd80e('0x19')](_0xd80e('0x14'),_0x68625,_0x30c9d0[_0xd80e('0x19')][_0xd80e('0x1a')]);return _0x450b44(_0x30c9d0['error'][_0xd80e('0x1a')]);}logger[_0xd80e('0x19')](_0xd80e('0x14'),_0x68625,_0x30c9d0[_0xd80e('0x19')][_0xd80e('0x1a')]);return _0x4eee08(_0x30c9d0[_0xd80e('0x19')][_0xd80e('0x1a')]);}else{logger[_0xd80e('0x13')]('MailMessage,\x20%s,\x20%s',_0x68625,_0xd80e('0x15'));_0x4eee08(_0x30c9d0[_0xd80e('0x1b')][_0xd80e('0x1a')]);}})[_0xd80e('0x1c')](function(_0x593af6){logger[_0xd80e('0x19')](_0xd80e('0x14'),_0x68625,_0x593af6);_0x450b44(_0x593af6);});});}exports[_0xd80e('0x1d')]=function(_0x527237){var _0x41417d=this;return new Promise(function(_0x2ef8a1,_0x2765ea){return db[_0xd80e('0x1e')][_0xd80e('0x1f')](_0x527237['body'],{'raw':_0x527237['options']?_0x527237[_0xd80e('0x20')][_0xd80e('0x21')]===undefined?!![]:![]:!![]})[_0xd80e('0x12')](function(_0x2d46e7){logger[_0xd80e('0x13')](_0xd80e('0x1d'),_0x527237);logger[_0xd80e('0x16')]('CreateMailMessage',_0x527237,JSON[_0xd80e('0x22')](_0x2d46e7));_0x2ef8a1(_0x2d46e7);})[_0xd80e('0x1c')](function(_0x170109){logger['error'](_0xd80e('0x1d'),_0x170109[_0xd80e('0x1a')],_0x527237);_0x2765ea(_0x41417d[_0xd80e('0x19')](0x1f4,_0x170109['message']));});});};
\ No newline at end of file
index 738e0e3..dfad38e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf14b=['update','emit','register','length','./mailMessage.events','save','remove'];(function(_0x49cd84,_0x3cae27){var _0x3d4394=function(_0x157e20){while(--_0x157e20){_0x49cd84['push'](_0x49cd84['shift']());}};_0x3d4394(++_0x3cae27);}(_0xf14b,0xdd));var _0xbf14=function(_0x1bd8fd,_0x526cee){_0x1bd8fd=_0x1bd8fd-0x0;var _0x36f371=_0xf14b[_0x1bd8fd];return _0x36f371;};'use strict';var MailMessageEvents=require(_0xbf14('0x0'));var events=[_0xbf14('0x1'),_0xbf14('0x2'),_0xbf14('0x3')];function createListener(_0x421361,_0x245fe4){return function(_0x1f88a8){_0x245fe4[_0xbf14('0x4')](_0x421361,_0x1f88a8);};}function removeListener(_0x1c9f49,_0x3afb15){return function(){MailMessageEvents['removeListener'](_0x1c9f49,_0x3afb15);};}exports[_0xbf14('0x5')]=function(_0xb9333b){for(var _0x1b6462=0x0,_0x368cf0=events[_0xbf14('0x6')];_0x1b6462<_0x368cf0;_0x1b6462++){var _0x4364e7=events[_0x1b6462];var _0xf15519=createListener('mailMessage:'+_0x4364e7,_0xb9333b);MailMessageEvents['on'](_0x4364e7,_0xf15519);}};
\ No newline at end of file
+var _0xaa91=['remove','removeListener','length','./mailMessage.events','save'];(function(_0xa220f7,_0x25b950){var _0x2649e0=function(_0x4b744f){while(--_0x4b744f){_0xa220f7['push'](_0xa220f7['shift']());}};_0x2649e0(++_0x25b950);}(_0xaa91,0xd0));var _0x1aa9=function(_0x14fb00,_0x47888f){_0x14fb00=_0x14fb00-0x0;var _0x26bf77=_0xaa91[_0x14fb00];return _0x26bf77;};'use strict';var MailMessageEvents=require(_0x1aa9('0x0'));var events=[_0x1aa9('0x1'),_0x1aa9('0x2'),'update'];function createListener(_0x4bc027,_0x503d49){return function(_0x345907){_0x503d49['emit'](_0x4bc027,_0x345907);};}function removeListener(_0x492cd0,_0x359aa3){return function(){MailMessageEvents[_0x1aa9('0x3')](_0x492cd0,_0x359aa3);};}exports['register']=function(_0x4e4a94){for(var _0x3cdc2f=0x0,_0x1d0585=events[_0x1aa9('0x4')];_0x3cdc2f<_0x1d0585;_0x3cdc2f++){var _0x4df835=events[_0x3cdc2f];var _0x1aebd8=createListener('mailMessage:'+_0x4df835,_0x4e4a94);MailMessageEvents['on'](_0x4df835,_0x1aebd8);}};
\ No newline at end of file
index 880045b..cd207a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9c5=['index','/describe','describe','/:id','getMembers','getTeams','getAgents','post','/:id/teams','addTeams','/:id/users','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xc9c5,0x87));var _0x5c9c=function(_0x2ac2de,_0x109a1e){_0x2ac2de=_0x2ac2de-0x0;var _0xf453a1=_0xc9c5[_0x2ac2de];return _0xf453a1;};'use strict';var multer=require(_0x5c9c('0x0'));var util=require(_0x5c9c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5c9c('0x2'));var router=express[_0x5c9c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5c9c('0x4'));var interaction=require(_0x5c9c('0x5'));var config=require(_0x5c9c('0x6'));var controller=require(_0x5c9c('0x7'));router[_0x5c9c('0x8')]('/',auth[_0x5c9c('0x9')](),controller[_0x5c9c('0xa')]);router[_0x5c9c('0x8')](_0x5c9c('0xb'),auth[_0x5c9c('0x9')](),controller[_0x5c9c('0xc')]);router[_0x5c9c('0x8')](_0x5c9c('0xd'),auth[_0x5c9c('0x9')](),controller['show']);router[_0x5c9c('0x8')]('/:id/members',auth[_0x5c9c('0x9')](),controller[_0x5c9c('0xe')]);router[_0x5c9c('0x8')]('/:id/teams',auth['isAuthenticated'](),controller[_0x5c9c('0xf')]);router[_0x5c9c('0x8')]('/:id/users',auth[_0x5c9c('0x9')](),controller[_0x5c9c('0x10')]);router['post']('/',auth[_0x5c9c('0x9')](),controller['create']);router[_0x5c9c('0x11')](_0x5c9c('0x12'),auth['isAuthenticated'](),controller[_0x5c9c('0x13')]);router[_0x5c9c('0x11')](_0x5c9c('0x14'),auth[_0x5c9c('0x9')](),controller[_0x5c9c('0x15')]);router[_0x5c9c('0x16')]('/:id',auth[_0x5c9c('0x9')](),controller[_0x5c9c('0x17')]);router[_0x5c9c('0x18')](_0x5c9c('0xd'),auth[_0x5c9c('0x9')](),controller[_0x5c9c('0x19')]);router[_0x5c9c('0x18')](_0x5c9c('0x12'),auth[_0x5c9c('0x9')](),controller[_0x5c9c('0x1a')]);router[_0x5c9c('0x18')](_0x5c9c('0x14'),auth['isAuthenticated'](),controller[_0x5c9c('0x1b')]);module[_0x5c9c('0x1c')]=router;
\ No newline at end of file
+var _0x515c=['/describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','put','delete','destroy','removeAgents','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','./mailQueue.controller','isAuthenticated','index','get'];(function(_0x15182d,_0x1f4cfc){var _0x255b75=function(_0x392b1f){while(--_0x392b1f){_0x15182d['push'](_0x15182d['shift']());}};_0x255b75(++_0x1f4cfc);}(_0x515c,0xac));var _0xc515=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x515c[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0xc515('0x0'));var util=require(_0xc515('0x1'));var path=require('path');var timeout=require(_0xc515('0x2'));var express=require('express');var router=express[_0xc515('0x3')]();var fs_extra=require(_0xc515('0x4'));var auth=require(_0xc515('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc515('0x6'));router['get']('/',auth[_0xc515('0x7')](),controller[_0xc515('0x8')]);router[_0xc515('0x9')](_0xc515('0xa'),auth[_0xc515('0x7')](),controller['describe']);router[_0xc515('0x9')](_0xc515('0xb'),auth[_0xc515('0x7')](),controller[_0xc515('0xc')]);router[_0xc515('0x9')]('/:id/members',auth[_0xc515('0x7')](),controller[_0xc515('0xd')]);router['get'](_0xc515('0xe'),auth[_0xc515('0x7')](),controller[_0xc515('0xf')]);router['get'](_0xc515('0x10'),auth['isAuthenticated'](),controller[_0xc515('0x11')]);router['post']('/',auth[_0xc515('0x7')](),controller[_0xc515('0x12')]);router[_0xc515('0x13')](_0xc515('0xe'),auth[_0xc515('0x7')](),controller[_0xc515('0x14')]);router[_0xc515('0x13')](_0xc515('0x10'),auth[_0xc515('0x7')](),controller['addAgents']);router[_0xc515('0x15')]('/:id',auth[_0xc515('0x7')](),controller['update']);router[_0xc515('0x16')](_0xc515('0xb'),auth[_0xc515('0x7')](),controller[_0xc515('0x17')]);router[_0xc515('0x16')](_0xc515('0xe'),auth[_0xc515('0x7')](),controller['removeTeams']);router[_0xc515('0x16')](_0xc515('0x10'),auth['isAuthenticated'](),controller[_0xc515('0x18')]);module[_0xc515('0x19')]=router;
\ No newline at end of file
index 6c181d8..bd5f743 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb030=['beepall','roundrobin','sequelize','STRING','name','INTEGER','rrmemory'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0xb030,0x1b4));var _0x0b03=function(_0x3df3c6,_0x496e1a){_0x3df3c6=_0x3df3c6-0x0;var _0x254c43=_0xb030[_0x3df3c6];return _0x254c43;};'use strict';var Sequelize=require(_0x0b03('0x0'));module['exports']={'name':{'type':Sequelize[_0x0b03('0x1')],'unique':_0x0b03('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x0b03('0x1')]},'timeout':{'type':Sequelize[_0x0b03('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x0b03('0x4'),_0x0b03('0x5'),_0x0b03('0x6'))}};
\ No newline at end of file
+var _0xf21e=['sequelize','exports','STRING','ENUM','rrmemory','beepall','roundrobin'];(function(_0x5e0bfe,_0x747312){var _0x6468b8=function(_0x20e5e0){while(--_0x20e5e0){_0x5e0bfe['push'](_0x5e0bfe['shift']());}};_0x6468b8(++_0x747312);}(_0xf21e,0xaf));var _0xef21=function(_0x2ae7b9,_0x26a049){_0x2ae7b9=_0x2ae7b9-0x0;var _0x311fa3=_0xf21e[_0x2ae7b9];return _0x311fa3;};'use strict';var Sequelize=require(_0xef21('0x0'));module[_0xef21('0x1')]={'name':{'type':Sequelize[_0xef21('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xef21('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xef21('0x3')](_0xef21('0x4'),_0xef21('0x5'),_0xef21('0x6'))}};
\ No newline at end of file
index 5988b50..293dc55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c58=['update','then','destroy','MailQueues','UserProfileResource','error','stack','name','status','index','map','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','MailQueue','include','findAll','catch','rawAttributes','includeAll','find','create','body','user','get','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserMailQueue','MailQueueId','User','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','getTeams','Team','addTeams','Agents','online','voicePause','interface','flatMap','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','from','team_has_mail_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','SELECT','every','TeamId','includes','all','union','compact','transaction','ids','removeAgents','omit','isArray','userMailQueue:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./mailQueue.socket','register','sendStatus','end','offset','undefined','limit','count','set','json','apply','reject','save'];(function(_0x131c60,_0x11d53c){var _0x3f7459=function(_0x523a70){while(--_0x523a70){_0x131c60['push'](_0x131c60['shift']());}};_0x3f7459(++_0x11d53c);}(_0x4c58,0xed));var _0x84c5=function(_0x2276dd,_0x2a5bdf){_0x2276dd=_0x2276dd-0x0;var _0x22a16b=_0x4c58[_0x2276dd];return _0x22a16b;};'use strict';var emlformat=require(_0x84c5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x84c5('0x1'));var jsonpatch=require(_0x84c5('0x2'));var rp=require(_0x84c5('0x3'));var moment=require(_0x84c5('0x4'));var BPromise=require(_0x84c5('0x5'));var Mustache=require(_0x84c5('0x6'));var util=require(_0x84c5('0x7'));var path=require('path');var sox=require(_0x84c5('0x8'));var csv=require(_0x84c5('0x9'));var ejs=require(_0x84c5('0xa'));var fs=require('fs');var fs_extra=require(_0x84c5('0xb'));var _=require(_0x84c5('0xc'));var squel=require(_0x84c5('0xd'));var crypto=require(_0x84c5('0xe'));var jsforce=require(_0x84c5('0xf'));var deskjs=require(_0x84c5('0x10'));var toCsv=require(_0x84c5('0x9'));var querystring=require(_0x84c5('0x11'));var Papa=require(_0x84c5('0x12'));var Redis=require(_0x84c5('0x13'));var authService=require(_0x84c5('0x14'));var qs=require(_0x84c5('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x84c5('0x16'));var logger=require(_0x84c5('0x17'))(_0x84c5('0x18'));var utils=require('../../config/utils');var config=require(_0x84c5('0x19'));var licenseUtil=require(_0x84c5('0x1a'));var db=require(_0x84c5('0x1b'))['db'];config['redis']=_['defaults'](config[_0x84c5('0x1c')],{'host':_0x84c5('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x84c5('0x1c')]));require(_0x84c5('0x1e'))[_0x84c5('0x1f')](socket);function respondWithStatusCode(_0x12a093,_0x1df6d5){_0x1df6d5=_0x1df6d5||0xcc;return function(_0x3cc823){if(_0x3cc823){return _0x12a093[_0x84c5('0x20')](_0x1df6d5);}return _0x12a093['status'](_0x1df6d5)[_0x84c5('0x21')]();};}function respondWithResult(_0xc72976,_0x24232f){_0x24232f=_0x24232f||0xc8;return function(_0x2f1fb5){if(_0x2f1fb5){return _0xc72976['status'](_0x24232f)['json'](_0x2f1fb5);}};}function respondWithFilteredResult(_0x23e078,_0xb6b1be){return function(_0x4c1060){if(_0x4c1060){var _0x52a4e2=typeof _0xb6b1be[_0x84c5('0x22')]===_0x84c5('0x23')&&typeof _0xb6b1be[_0x84c5('0x24')]===_0x84c5('0x23');var _0x2fbc39=_0x4c1060[_0x84c5('0x25')];var _0x25412d=_0x52a4e2?0x0:_0xb6b1be[_0x84c5('0x22')];var _0x38c45e=_0x52a4e2?_0x4c1060[_0x84c5('0x25')]:_0xb6b1be['offset']+_0xb6b1be[_0x84c5('0x24')];var _0x1a87b5;if(_0x38c45e>=_0x2fbc39){_0x38c45e=_0x2fbc39;_0x1a87b5=0xc8;}else{_0x1a87b5=0xce;}_0x23e078['status'](_0x1a87b5);return _0x23e078[_0x84c5('0x26')]('Content-Range',_0x25412d+'-'+_0x38c45e+'/'+_0x2fbc39)[_0x84c5('0x27')](_0x4c1060);}return null;};}function patchUpdates(_0x4e4bbf){return function(_0x31fd9c){try{jsonpatch[_0x84c5('0x28')](_0x31fd9c,_0x4e4bbf,!![]);}catch(_0x888bce){return BPromise[_0x84c5('0x29')](_0x888bce);}return _0x31fd9c[_0x84c5('0x2a')]();};}function saveUpdates(_0x34f24d,_0x5944ef){return function(_0x40c01e){if(_0x40c01e){return _0x40c01e[_0x84c5('0x2b')](_0x34f24d)[_0x84c5('0x2c')](function(_0x39347f){return _0x39347f;});}return null;};}function removeEntity(_0x16161d,_0x272598){return function(_0x316344){if(_0x316344){return _0x316344[_0x84c5('0x2d')]()[_0x84c5('0x2c')](function(){var _0x159913=_0x316344['get']({'plain':!![]});var _0x4deb9c=_0x84c5('0x2e');return db[_0x84c5('0x2f')][_0x84c5('0x2d')]({'where':{'type':_0x4deb9c,'resourceId':_0x159913['id']}})['then'](function(){return _0x316344;});})['then'](function(){_0x16161d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x91aab,_0x413078){return function(_0xb9252b){if(!_0xb9252b){_0x91aab[_0x84c5('0x20')](0x194);}return _0xb9252b;};}function handleError(_0x9c8c38,_0x3b3211){_0x3b3211=_0x3b3211||0x1f4;return function(_0x41fe48){logger[_0x84c5('0x30')](_0x41fe48[_0x84c5('0x31')]);if(_0x41fe48[_0x84c5('0x32')]){delete _0x41fe48['name'];}_0x9c8c38[_0x84c5('0x33')](_0x3b3211)['send'](_0x41fe48);};}exports[_0x84c5('0x34')]=function(_0xa7d840,_0x22398d){var _0x275d4a={},_0x1083f0={},_0x2ecd6f={'count':0x0,'rows':[]};var _0x2aba8d=_[_0x84c5('0x35')](db['MailQueue']['rawAttributes'],function(_0x1331e9){return{'name':_0x1331e9['fieldName'],'type':_0x1331e9[_0x84c5('0x36')][_0x84c5('0x37')]};});_0x1083f0[_0x84c5('0x38')]=_[_0x84c5('0x35')](_0x2aba8d,_0x84c5('0x32'));_0x1083f0[_0x84c5('0x39')]=_[_0x84c5('0x3a')](_0xa7d840['query']);_0x1083f0['filters']=_[_0x84c5('0x3b')](_0x1083f0[_0x84c5('0x38')],_0x1083f0[_0x84c5('0x39')]);_0x275d4a[_0x84c5('0x3c')]=_[_0x84c5('0x3b')](_0x1083f0['model'],qs[_0x84c5('0x3d')](_0xa7d840[_0x84c5('0x39')][_0x84c5('0x3d')]));_0x275d4a['attributes']=_0x275d4a[_0x84c5('0x3c')][_0x84c5('0x3e')]?_0x275d4a[_0x84c5('0x3c')]:_0x1083f0['model'];if(!_0xa7d840['query'][_0x84c5('0x3f')](_0x84c5('0x40'))){_0x275d4a[_0x84c5('0x24')]=qs[_0x84c5('0x24')](_0xa7d840[_0x84c5('0x39')][_0x84c5('0x24')]);_0x275d4a['offset']=qs[_0x84c5('0x22')](_0xa7d840[_0x84c5('0x39')][_0x84c5('0x22')]);}_0x275d4a[_0x84c5('0x41')]=qs['sort'](_0xa7d840[_0x84c5('0x39')][_0x84c5('0x42')]);_0x275d4a[_0x84c5('0x43')]=qs[_0x84c5('0x44')](_[_0x84c5('0x45')](_0xa7d840['query'],_0x1083f0[_0x84c5('0x44')]),_0x2aba8d);if(_0xa7d840[_0x84c5('0x39')][_0x84c5('0x46')]){_0x275d4a['where']=_['merge'](_0x275d4a[_0x84c5('0x43')],{'$or':_[_0x84c5('0x35')](_0x2aba8d,function(_0x3237c1){if(_0x3237c1[_0x84c5('0x36')]!==_0x84c5('0x47')){var _0x40cad6={};_0x40cad6[_0x3237c1[_0x84c5('0x32')]]={'$like':'%'+_0xa7d840['query'][_0x84c5('0x46')]+'%'};return _0x40cad6;}})});}_0x275d4a=_[_0x84c5('0x48')]({},_0x275d4a,_0xa7d840[_0x84c5('0x49')]);var _0x137e03={'where':_0x275d4a[_0x84c5('0x43')]};return db[_0x84c5('0x4a')][_0x84c5('0x25')](_0x137e03)[_0x84c5('0x2c')](function(_0x493e1a){_0x2ecd6f[_0x84c5('0x25')]=_0x493e1a;if(_0xa7d840[_0x84c5('0x39')]['includeAll']){_0x275d4a[_0x84c5('0x4b')]=[{'all':!![]}];}return db[_0x84c5('0x4a')][_0x84c5('0x4c')](_0x275d4a);})[_0x84c5('0x2c')](function(_0x203b41){_0x2ecd6f['rows']=_0x203b41;return _0x2ecd6f;})[_0x84c5('0x2c')](respondWithFilteredResult(_0x22398d,_0x275d4a))[_0x84c5('0x4d')](handleError(_0x22398d,null));};exports['show']=function(_0x2bde21,_0x1f37d3){var _0x58e9f6={'raw':!![],'where':{'id':_0x2bde21['params']['id']}},_0x316405={};_0x316405['model']=_[_0x84c5('0x3a')](db[_0x84c5('0x4a')][_0x84c5('0x4e')]);_0x316405[_0x84c5('0x39')]=_['keys'](_0x2bde21[_0x84c5('0x39')]);_0x316405['filters']=_['intersection'](_0x316405[_0x84c5('0x38')],_0x316405['query']);_0x58e9f6[_0x84c5('0x3c')]=_[_0x84c5('0x3b')](_0x316405[_0x84c5('0x38')],qs['fields'](_0x2bde21[_0x84c5('0x39')][_0x84c5('0x3d')]));_0x58e9f6[_0x84c5('0x3c')]=_0x58e9f6[_0x84c5('0x3c')]['length']?_0x58e9f6[_0x84c5('0x3c')]:_0x316405[_0x84c5('0x38')];if(_0x2bde21[_0x84c5('0x39')][_0x84c5('0x4f')]){_0x58e9f6[_0x84c5('0x4b')]=[{'all':!![]}];}_0x58e9f6=_[_0x84c5('0x48')]({},_0x58e9f6,_0x2bde21['options']);return db[_0x84c5('0x4a')][_0x84c5('0x50')](_0x58e9f6)['then'](handleEntityNotFound(_0x1f37d3,null))['then'](respondWithResult(_0x1f37d3,null))[_0x84c5('0x4d')](handleError(_0x1f37d3,null));};exports[_0x84c5('0x51')]=function(_0xdb7d09,_0x3834c9){return db[_0x84c5('0x4a')][_0x84c5('0x51')](_0xdb7d09[_0x84c5('0x52')],{})[_0x84c5('0x2c')](function(_0x4773da){var _0x36a34b=_0xdb7d09[_0x84c5('0x53')][_0x84c5('0x54')]({'plain':!![]});if(!_0x36a34b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x36a34b[_0x84c5('0x55')]==='user'){var _0x4137ad=_0x4773da[_0x84c5('0x54')]({'plain':!![]});var _0x17eb46='MailQueues';return db[_0x84c5('0x56')]['find']({'where':{'name':_0x17eb46,'userProfileId':_0x36a34b[_0x84c5('0x57')]},'raw':!![]})[_0x84c5('0x2c')](function(_0x4044cd){if(_0x4044cd&&_0x4044cd['autoAssociation']===0x0){return db[_0x84c5('0x2f')]['create']({'name':_0x4137ad['name'],'resourceId':_0x4137ad['id'],'type':_0x4044cd['name'],'sectionId':_0x4044cd['id']},{})[_0x84c5('0x2c')](function(){return _0x4773da;});}else{return _0x4773da;}})[_0x84c5('0x4d')](function(_0x2f897f){logger[_0x84c5('0x30')](_0x84c5('0x58'),_0x2f897f);throw _0x2f897f;});}return _0x4773da;})[_0x84c5('0x2c')](respondWithResult(_0x3834c9,0xc9))[_0x84c5('0x4d')](handleError(_0x3834c9,null));};exports[_0x84c5('0x2b')]=function(_0x5b3804,_0x1a59b1){if(_0x5b3804['body']['id']){delete _0x5b3804[_0x84c5('0x52')]['id'];}return db[_0x84c5('0x4a')][_0x84c5('0x50')]({'where':{'id':_0x5b3804[_0x84c5('0x59')]['id']}})[_0x84c5('0x2c')](handleEntityNotFound(_0x1a59b1,null))['then'](saveUpdates(_0x5b3804[_0x84c5('0x52')],null))[_0x84c5('0x2c')](respondWithResult(_0x1a59b1,null))[_0x84c5('0x4d')](handleError(_0x1a59b1,null));};exports[_0x84c5('0x2d')]=function(_0x27478d,_0x11d5f9){return db['MailQueue'][_0x84c5('0x50')]({'where':{'id':_0x27478d[_0x84c5('0x59')]['id']}})[_0x84c5('0x2c')](handleEntityNotFound(_0x11d5f9,null))[_0x84c5('0x2c')](removeEntity(_0x11d5f9,null))['catch'](handleError(_0x11d5f9,null));};exports[_0x84c5('0x5a')]=function(_0x4834c4,_0x45f23c){return db[_0x84c5('0x4a')][_0x84c5('0x5a')]()[_0x84c5('0x2c')](respondWithResult(_0x45f23c,null))['catch'](handleError(_0x45f23c,null));};exports[_0x84c5('0x5b')]=function(_0x428df3,_0x194e9d,_0x272576){var _0x4b2137={'raw':!![],'where':{}},_0x16cbb5={},_0x53798d;return db[_0x84c5('0x4a')][_0x84c5('0x5c')]({'where':{'id':_0x428df3[_0x84c5('0x59')]['id']}})[_0x84c5('0x2c')](handleEntityNotFound(_0x194e9d,null))[_0x84c5('0x2c')](function(_0x52d3b4){if(_0x52d3b4){_0x53798d=_0x52d3b4[_0x84c5('0x54')]({'plain':!![]});_0x16cbb5[_0x84c5('0x38')]=_[_0x84c5('0x3a')](db[_0x84c5('0x5d')]['rawAttributes']);_0x16cbb5[_0x84c5('0x39')]=_[_0x84c5('0x3a')](_0x428df3[_0x84c5('0x39')]);_0x16cbb5[_0x84c5('0x44')]=_[_0x84c5('0x3b')](_0x16cbb5[_0x84c5('0x38')],_0x16cbb5['query']);_0x4b2137['attributes']=_['intersection'](_0x16cbb5['model'],qs[_0x84c5('0x3d')](_0x428df3['query']['fields']));_0x4b2137['attributes']=_0x4b2137[_0x84c5('0x3c')][_0x84c5('0x3e')]?_0x4b2137[_0x84c5('0x3c')]:_0x16cbb5['model'];if(!_0x428df3[_0x84c5('0x39')]['hasOwnProperty'](_0x84c5('0x40'))){_0x4b2137['limit']=qs['limit'](_0x428df3[_0x84c5('0x39')][_0x84c5('0x24')]);_0x4b2137[_0x84c5('0x22')]=qs[_0x84c5('0x22')](_0x428df3[_0x84c5('0x39')][_0x84c5('0x22')]);}_0x4b2137['order']=qs[_0x84c5('0x42')](_0x428df3['query'][_0x84c5('0x42')]);_0x4b2137[_0x84c5('0x43')]=qs[_0x84c5('0x44')](_['pick'](_0x428df3['query'],_0x16cbb5[_0x84c5('0x44')]));_0x4b2137['where'][_0x84c5('0x5e')]=_0x52d3b4['id'];if(_0x428df3[_0x84c5('0x39')][_0x84c5('0x46')]){_0x4b2137[_0x84c5('0x43')]=_[_0x84c5('0x48')](_0x4b2137['where'],{'$or':_[_0x84c5('0x35')](_0x4b2137['attributes'],function(_0x1811cf){var _0x1ef1d3={};_0x1ef1d3[_0x1811cf]={'$like':'%'+_0x428df3[_0x84c5('0x39')][_0x84c5('0x46')]+'%'};return _0x1ef1d3;})});}_0x4b2137=_[_0x84c5('0x48')]({},_0x4b2137,_0x428df3[_0x84c5('0x49')]);return db['UserMailQueue'][_0x84c5('0x4c')](_0x4b2137);}})[_0x84c5('0x2c')](function(_0x46d13d){if(_0x46d13d){return db[_0x84c5('0x5f')]['findAndCountAll']({'where':{'id':_['map'](_0x46d13d,_0x84c5('0x60')),'role':_0x84c5('0x61')},'attributes':['id',_0x84c5('0x32'),_0x84c5('0x62'),_0x84c5('0x63'),_0x84c5('0x64')]});}})['then'](function(_0x47d756){if(_0x47d756){return{'count':_0x47d756[_0x84c5('0x25')],'rows':_[_0x84c5('0x35')](_0x47d756['rows'],function(_0x5abb24){return{'membername':_0x5abb24['name'],'UserId':_0x5abb24['id'],'queue_name':_0x53798d[_0x84c5('0x32')],'MailQueueId':_0x53798d['id'],'interface':util[_0x84c5('0x65')](_0x84c5('0x66'),'SIP',_0x5abb24[_0x84c5('0x32')]),'penalty':0x0,'paused':_0x5abb24[_0x84c5('0x62')],'createdAt':_0x5abb24[_0x84c5('0x64')],'updatedAt':_0x5abb24[_0x84c5('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x84c5('0x2c')](respondWithFilteredResult(_0x194e9d,_0x4b2137))[_0x84c5('0x4d')](handleError(_0x194e9d,null));};exports[_0x84c5('0x67')]=function(_0x11dbbf,_0x3211fc,_0x256b4d){var _0x259d43={};var _0x45b533={};var _0x484750;var _0x279491;return db[_0x84c5('0x4a')][_0x84c5('0x5c')]({'where':{'id':_0x11dbbf[_0x84c5('0x59')]['id']}})[_0x84c5('0x2c')](handleEntityNotFound(_0x3211fc,null))['then'](function(_0x5ab4e8){if(_0x5ab4e8){_0x484750=_0x5ab4e8;_0x45b533[_0x84c5('0x38')]=_['keys'](db[_0x84c5('0x68')][_0x84c5('0x4e')]);_0x45b533[_0x84c5('0x39')]=_[_0x84c5('0x3a')](_0x11dbbf[_0x84c5('0x39')]);_0x45b533[_0x84c5('0x44')]=_[_0x84c5('0x3b')](_0x45b533[_0x84c5('0x38')],_0x45b533['query']);_0x259d43[_0x84c5('0x3c')]=_[_0x84c5('0x3b')](_0x45b533[_0x84c5('0x38')],qs[_0x84c5('0x3d')](_0x11dbbf[_0x84c5('0x39')]['fields']));_0x259d43[_0x84c5('0x3c')]=_0x259d43['attributes'][_0x84c5('0x3e')]?_0x259d43[_0x84c5('0x3c')]:_0x45b533[_0x84c5('0x38')];_0x259d43[_0x84c5('0x41')]=qs[_0x84c5('0x42')](_0x11dbbf[_0x84c5('0x39')][_0x84c5('0x42')]);_0x259d43[_0x84c5('0x43')]=qs[_0x84c5('0x44')](_[_0x84c5('0x45')](_0x11dbbf['query'],_0x45b533['filters']));if(_0x11dbbf[_0x84c5('0x39')]['filter']){_0x259d43[_0x84c5('0x43')]=_[_0x84c5('0x48')](_0x259d43[_0x84c5('0x43')],{'$or':_[_0x84c5('0x35')](_0x259d43[_0x84c5('0x3c')],function(_0x12c15d){var _0x155c68={};_0x155c68[_0x12c15d]={'$like':'%'+_0x11dbbf[_0x84c5('0x39')][_0x84c5('0x46')]+'%'};return _0x155c68;})});}_0x259d43=_[_0x84c5('0x48')]({},_0x259d43,_0x11dbbf[_0x84c5('0x49')]);return _0x484750['getTeams'](_0x259d43);}})[_0x84c5('0x2c')](function(_0x21dfce){if(_0x21dfce){_0x279491=_0x21dfce[_0x84c5('0x3e')];if(!_0x11dbbf['query'][_0x84c5('0x3f')]('nolimit')){_0x259d43[_0x84c5('0x24')]=qs[_0x84c5('0x24')](_0x11dbbf[_0x84c5('0x39')][_0x84c5('0x24')]);_0x259d43[_0x84c5('0x22')]=qs['offset'](_0x11dbbf[_0x84c5('0x39')][_0x84c5('0x22')]);}return _0x484750[_0x84c5('0x67')](_0x259d43);}})['then'](function(_0x829b64){if(_0x829b64){return _0x829b64?{'count':_0x279491,'rows':_0x829b64}:null;}})[_0x84c5('0x2c')](respondWithResult(_0x3211fc,null))['catch'](handleError(_0x3211fc,null));};exports[_0x84c5('0x69')]=function(_0xea4321,_0xc9d869,_0x5c8f50){var _0x4196e0=_0xea4321[_0x84c5('0x52')]['ids'];return db[_0x84c5('0x68')]['findAll']({'where':{'id':_0x4196e0},'attributes':['id'],'include':[{'model':db[_0x84c5('0x5f')],'as':_0x84c5('0x6a'),'attributes':['id',_0x84c5('0x32'),_0x84c5('0x6b'),_0x84c5('0x6c'),_0x84c5('0x6d')],'raw':!![]}]})['then'](function(_0x2b1e2b){if(_0x2b1e2b){var _0x139aa2=_[_0x84c5('0x6e')](_0x2b1e2b,function(_0xcf7298){var _0x214808=_0xcf7298[_0x84c5('0x54')]({'plain':!![]});return _0x214808['Agents'];});return db['MailQueue']['find']({'where':{'id':_0xea4321[_0x84c5('0x59')]['id']}})['then'](function(_0x177587){return db['sequelize']['transaction'](function(_0x1c4228){return _0x177587[_0x84c5('0x69')](_0x4196e0,{'transaction':_0x1c4228})['then'](function(){return BPromise['each'](_0x139aa2,function(_0x6ca285){return db[_0x84c5('0x5d')][_0x84c5('0x6f')]({'where':{'UserId':_0x6ca285['id'],'MailQueueId':_0xea4321[_0x84c5('0x59')]['id']},'transaction':_0x1c4228});});})[_0x84c5('0x2c')](function(){_0x139aa2[_0x84c5('0x70')](function(_0xfd7d9){socket[_0x84c5('0x71')](_0x84c5('0x72'),{'UserId':_0xfd7d9['id'],'MailQueueId':_0x177587['id']});});});});});}})['then'](respondWithStatusCode(_0xc9d869,null))[_0x84c5('0x4d')](handleError(_0xc9d869,null));};exports[_0x84c5('0x73')]=function(_0x1b17f1,_0xa77130,_0xd78873){return db[_0x84c5('0x68')][_0x84c5('0x4c')]({'where':{'id':_0x1b17f1['query']['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x84c5('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xa77130,null))[_0x84c5('0x2c')](function(_0x4f13a1){var _0x20a27c=_[_0x84c5('0x35')](_0x4f13a1,'id');var _0x5a63c7=[];var _0x927417=[];var _0x1e59db=squel['select']();_0x1e59db['field']('tq.TeamId')[_0x84c5('0x74')](_0x84c5('0x75'),'tq')['join'](_0x84c5('0x76'),'ut',_0x84c5('0x77'))[_0x84c5('0x43')](_0x84c5('0x78'),_0x1b17f1[_0x84c5('0x59')]['id']);for(var _0x3c8c6e=0x0;_0x3c8c6e<_0x4f13a1[_0x84c5('0x3e')];_0x3c8c6e+=0x1){let _0x29e9bd=_0x4f13a1[_0x3c8c6e];for(var _0x5bcb22=0x0;_0x5bcb22<_0x29e9bd['Agents'][_0x84c5('0x3e')];_0x5bcb22+=0x1){let _0x2ab1e4=_0x29e9bd[_0x84c5('0x6a')][_0x5bcb22];var _0x1ef50e=_0x1e59db[_0x84c5('0x79')]();_0x1ef50e[_0x84c5('0x43')](_0x84c5('0x7a'),_0x2ab1e4['id']);_0x927417[_0x84c5('0x7b')](db[_0x84c5('0x7c')]['query'](_0x1ef50e[_0x84c5('0x7d')](),{'type':db[_0x84c5('0x7c')]['QueryTypes'][_0x84c5('0x7e')]})['then'](function(_0x27efe0){if(_0x27efe0['length']===0x1){return _0x2ab1e4['id'];}else{var _0xcf94a0=_[_0x84c5('0x7f')](_[_0x84c5('0x35')](_0x27efe0,_0x84c5('0x80')),function(_0x234115){return _[_0x84c5('0x81')](_0x20a27c,_0x234115);});if(_0xcf94a0){return _0x2ab1e4['id'];}}}));}}return BPromise[_0x84c5('0x82')](_0x927417)[_0x84c5('0x2c')](function(_0x4f187c){_0x5a63c7=_(_0x5a63c7)[_0x84c5('0x83')](_0x4f187c)[_0x84c5('0x84')]()['value']();return db[_0x84c5('0x4a')][_0x84c5('0x50')]({'where':{'id':_0x1b17f1[_0x84c5('0x59')]['id']}})[_0x84c5('0x2c')](function(_0x136b1b){return db[_0x84c5('0x7c')][_0x84c5('0x85')](function(_0x1b80cf){return _0x136b1b['removeTeams'](_0x1b17f1[_0x84c5('0x39')][_0x84c5('0x86')],{'transaction':_0x1b80cf})['then'](function(){if(!_['isEmpty'](_0x5a63c7)){return _0x136b1b[_0x84c5('0x87')](_0x5a63c7,{'transaction':_0x1b80cf});}})[_0x84c5('0x2c')](function(){_0x5a63c7['forEach'](function(_0x2914fe){socket[_0x84c5('0x71')]('userMailQueue:remove',{'UserId':_0x2914fe,'MailQueueId':_0x136b1b['id']});});});});});});})['then'](respondWithStatusCode(_0xa77130,null))[_0x84c5('0x4d')](handleError(_0xa77130,null));};exports['addAgents']=function(_0x7baf7f,_0xf695b2,_0x514a18){return db[_0x84c5('0x4a')][_0x84c5('0x50')]({'where':{'id':_0x7baf7f[_0x84c5('0x59')]['id']}})[_0x84c5('0x2c')](handleEntityNotFound(_0xf695b2,null))[_0x84c5('0x2c')](function(_0x12cd11){if(_0x12cd11){return _0x12cd11['addAgents'](_0x7baf7f[_0x84c5('0x52')][_0x84c5('0x86')],_[_0x84c5('0x88')](_0x7baf7f[_0x84c5('0x52')],[_0x84c5('0x86'),'id'])||{})['spread'](function(_0x3d14e2){for(var _0x58a83b=0x0;_0x58a83b<_0x7baf7f[_0x84c5('0x52')][_0x84c5('0x86')][_0x84c5('0x3e')];_0x58a83b+=0x1){socket['emit'](_0x84c5('0x72'),{'UserId':Number(_0x7baf7f[_0x84c5('0x52')][_0x84c5('0x86')][_0x58a83b]),'MailQueueId':Number(_0x7baf7f[_0x84c5('0x59')]['id'])});}return _0x3d14e2;});}})['then'](respondWithResult(_0xf695b2,null))[_0x84c5('0x4d')](handleError(_0xf695b2,null));};exports[_0x84c5('0x87')]=function(_0x36195d,_0x29cd5d,_0x17a369){return db[_0x84c5('0x4a')][_0x84c5('0x50')]({'where':{'id':_0x36195d['params']['id']}})[_0x84c5('0x2c')](handleEntityNotFound(_0x29cd5d,null))[_0x84c5('0x2c')](function(_0x48d5ed){if(_0x48d5ed){return _0x48d5ed['removeAgents'](_0x36195d['query']['ids'])['then'](function(){if(_[_0x84c5('0x89')](_0x36195d[_0x84c5('0x39')][_0x84c5('0x86')])){for(var _0x128cca=0x0;_0x128cca<_0x36195d[_0x84c5('0x39')][_0x84c5('0x86')][_0x84c5('0x3e')];_0x128cca+=0x1){socket['emit'](_0x84c5('0x8a'),{'UserId':Number(_0x36195d[_0x84c5('0x39')][_0x84c5('0x86')][_0x128cca]),'MailQueueId':Number(_0x36195d[_0x84c5('0x59')]['id'])});}}else{socket[_0x84c5('0x71')](_0x84c5('0x8a'),{'UserId':Number(_0x36195d['query'][_0x84c5('0x86')]),'MailQueueId':Number(_0x36195d['params']['id'])});}});}})[_0x84c5('0x2c')](respondWithStatusCode(_0x29cd5d,null))['catch'](handleError(_0x29cd5d,null));};exports[_0x84c5('0x8b')]=function(_0xdea02,_0x3bfade,_0x2698af){var _0x125b8f={};var _0x16c932={};var _0x2d94c2;var _0x3fd345;return db['MailQueue'][_0x84c5('0x5c')]({'where':{'id':_0xdea02['params']['id']}})[_0x84c5('0x2c')](handleEntityNotFound(_0x3bfade,null))['then'](function(_0x3d6af1){if(_0x3d6af1){_0x2d94c2=_0x3d6af1;_0x16c932[_0x84c5('0x38')]=_[_0x84c5('0x3a')](db[_0x84c5('0x5f')][_0x84c5('0x4e')]);_0x16c932['query']=_[_0x84c5('0x3a')](_0xdea02[_0x84c5('0x39')]);_0x16c932[_0x84c5('0x44')]=_[_0x84c5('0x3b')](_0x16c932[_0x84c5('0x38')],_0x16c932['query']);_0x125b8f[_0x84c5('0x3c')]=_[_0x84c5('0x3b')](_0x16c932['model'],qs[_0x84c5('0x3d')](_0xdea02[_0x84c5('0x39')][_0x84c5('0x3d')]));_0x125b8f[_0x84c5('0x3c')]=_0x125b8f['attributes'][_0x84c5('0x3e')]?_0x125b8f[_0x84c5('0x3c')]:_0x16c932[_0x84c5('0x38')];_0x125b8f['order']=qs[_0x84c5('0x42')](_0xdea02['query'][_0x84c5('0x42')]);_0x125b8f[_0x84c5('0x43')]=qs[_0x84c5('0x44')](_[_0x84c5('0x45')](_0xdea02[_0x84c5('0x39')],_0x16c932[_0x84c5('0x44')]));if(_0xdea02['query'][_0x84c5('0x46')]){_0x125b8f['where']=_[_0x84c5('0x48')](_0x125b8f[_0x84c5('0x43')],{'$or':_[_0x84c5('0x35')](_0x125b8f[_0x84c5('0x3c')],function(_0x120c42){var _0x52e739={};_0x52e739[_0x120c42]={'$like':'%'+_0xdea02[_0x84c5('0x39')]['filter']+'%'};return _0x52e739;})});}_0x125b8f=_[_0x84c5('0x48')]({},_0x125b8f,_0xdea02[_0x84c5('0x49')]);return _0x2d94c2[_0x84c5('0x8b')](_0x125b8f);}})['then'](function(_0x3bfdf3){if(_0x3bfdf3){_0x3fd345=_0x3bfdf3['length'];if(!_0xdea02[_0x84c5('0x39')][_0x84c5('0x3f')](_0x84c5('0x40'))){_0x125b8f['limit']=qs[_0x84c5('0x24')](_0xdea02[_0x84c5('0x39')][_0x84c5('0x24')]);_0x125b8f[_0x84c5('0x22')]=qs[_0x84c5('0x22')](_0xdea02[_0x84c5('0x39')][_0x84c5('0x22')]);}return _0x2d94c2[_0x84c5('0x8b')](_0x125b8f);}})[_0x84c5('0x2c')](function(_0x10180e){if(_0x10180e){return _0x10180e?{'count':_0x3fd345,'rows':_0x10180e}:null;}})[_0x84c5('0x2c')](respondWithResult(_0x3bfade,null))['catch'](handleError(_0x3bfade,null));};
\ No newline at end of file
+var _0xeea2=['find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','UserMailQueue','intersection','MailQueueId','findAll','User','findAndCountAll','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','Team','getTeams','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','forEach','userMailQueue:save','removeTeams','ids','select','field','team_has_mail_queues','join','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','push','every','includes','all','union','compact','value','removeAgents','emit','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','nolimit','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','error','stack','name','send','index','map','MailQueue','rawAttributes','fieldName','key','model','query','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','filter','merge','type','options','include','rows','catch','show','keys','length','includeAll'];(function(_0x85193f,_0x368163){var _0x3f1991=function(_0xca1a33){while(--_0xca1a33){_0x85193f['push'](_0x85193f['shift']());}};_0x3f1991(++_0x368163);}(_0xeea2,0xce));var _0x2eea=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0xeea2[_0x220f3f];return _0x1f170e;};'use strict';var emlformat=require(_0x2eea('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2eea('0x1'));var rp=require(_0x2eea('0x2'));var moment=require(_0x2eea('0x3'));var BPromise=require(_0x2eea('0x4'));var Mustache=require('mustache');var util=require(_0x2eea('0x5'));var path=require(_0x2eea('0x6'));var sox=require(_0x2eea('0x7'));var csv=require(_0x2eea('0x8'));var ejs=require(_0x2eea('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2eea('0xa'));var squel=require(_0x2eea('0xb'));var crypto=require(_0x2eea('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2eea('0xd'));var toCsv=require(_0x2eea('0x8'));var querystring=require(_0x2eea('0xe'));var Papa=require(_0x2eea('0xf'));var Redis=require(_0x2eea('0x10'));var authService=require(_0x2eea('0x11'));var qs=require(_0x2eea('0x12'));var as=require(_0x2eea('0x13'));var hardwareService=require(_0x2eea('0x14'));var logger=require(_0x2eea('0x15'))('api');var utils=require(_0x2eea('0x16'));var config=require(_0x2eea('0x17'));var licenseUtil=require(_0x2eea('0x18'));var db=require('../../mysqldb')['db'];config[_0x2eea('0x19')]=_[_0x2eea('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x2eea('0x1b'))(new Redis(config[_0x2eea('0x19')]));require(_0x2eea('0x1c'))[_0x2eea('0x1d')](socket);function respondWithStatusCode(_0x3513ee,_0x537ea2){_0x537ea2=_0x537ea2||0xcc;return function(_0x5888c7){if(_0x5888c7){return _0x3513ee[_0x2eea('0x1e')](_0x537ea2);}return _0x3513ee[_0x2eea('0x1f')](_0x537ea2)[_0x2eea('0x20')]();};}function respondWithResult(_0x468f5b,_0x4c8a56){_0x4c8a56=_0x4c8a56||0xc8;return function(_0x18ec72){if(_0x18ec72){return _0x468f5b[_0x2eea('0x1f')](_0x4c8a56)[_0x2eea('0x21')](_0x18ec72);}};}function respondWithFilteredResult(_0x155486,_0x54c49f){return function(_0x363805){if(_0x363805){var _0x5d529f=typeof _0x54c49f[_0x2eea('0x22')]===_0x2eea('0x23')&&typeof _0x54c49f[_0x2eea('0x24')]===_0x2eea('0x23');var _0x35c712=_0x363805[_0x2eea('0x25')];var _0x26b08d=_0x5d529f?0x0:_0x54c49f[_0x2eea('0x22')];var _0x218e3d=_0x5d529f?_0x363805[_0x2eea('0x25')]:_0x54c49f[_0x2eea('0x22')]+_0x54c49f[_0x2eea('0x24')];var _0x25057c;if(_0x218e3d>=_0x35c712){_0x218e3d=_0x35c712;_0x25057c=0xc8;}else{_0x25057c=0xce;}_0x155486['status'](_0x25057c);return _0x155486[_0x2eea('0x26')](_0x2eea('0x27'),_0x26b08d+'-'+_0x218e3d+'/'+_0x35c712)[_0x2eea('0x21')](_0x363805);}return null;};}function patchUpdates(_0xd7a34){return function(_0x153428){try{jsonpatch[_0x2eea('0x28')](_0x153428,_0xd7a34,!![]);}catch(_0x1c6ca2){return BPromise[_0x2eea('0x29')](_0x1c6ca2);}return _0x153428['save']();};}function saveUpdates(_0x1e887c,_0x1d5842){return function(_0x4c787c){if(_0x4c787c){return _0x4c787c['update'](_0x1e887c)[_0x2eea('0x2a')](function(_0x7969bb){return _0x7969bb;});}return null;};}function removeEntity(_0x133e03,_0x27f5ff){return function(_0x1f7cd9){if(_0x1f7cd9){return _0x1f7cd9[_0x2eea('0x2b')]()[_0x2eea('0x2a')](function(){var _0x118b02=_0x1f7cd9[_0x2eea('0x2c')]({'plain':!![]});var _0x458758='MailQueues';return db['UserProfileResource'][_0x2eea('0x2b')]({'where':{'type':_0x458758,'resourceId':_0x118b02['id']}})[_0x2eea('0x2a')](function(){return _0x1f7cd9;});})[_0x2eea('0x2a')](function(){_0x133e03[_0x2eea('0x1f')](0xcc)[_0x2eea('0x20')]();});}};}function handleEntityNotFound(_0x2c72c8,_0x25108c){return function(_0x14e615){if(!_0x14e615){_0x2c72c8[_0x2eea('0x1e')](0x194);}return _0x14e615;};}function handleError(_0x431156,_0x57d2fe){_0x57d2fe=_0x57d2fe||0x1f4;return function(_0x440c6f){logger[_0x2eea('0x2d')](_0x440c6f[_0x2eea('0x2e')]);if(_0x440c6f[_0x2eea('0x2f')]){delete _0x440c6f[_0x2eea('0x2f')];}_0x431156[_0x2eea('0x1f')](_0x57d2fe)[_0x2eea('0x30')](_0x440c6f);};}exports[_0x2eea('0x31')]=function(_0x17fbda,_0x223d44){var _0x5e6ed1={},_0x4829be={},_0x157d3b={'count':0x0,'rows':[]};var _0x2e29e4=_[_0x2eea('0x32')](db[_0x2eea('0x33')][_0x2eea('0x34')],function(_0x30fd53){return{'name':_0x30fd53[_0x2eea('0x35')],'type':_0x30fd53['type'][_0x2eea('0x36')]};});_0x4829be[_0x2eea('0x37')]=_[_0x2eea('0x32')](_0x2e29e4,_0x2eea('0x2f'));_0x4829be[_0x2eea('0x38')]=_['keys'](_0x17fbda[_0x2eea('0x38')]);_0x4829be['filters']=_['intersection'](_0x4829be[_0x2eea('0x37')],_0x4829be[_0x2eea('0x38')]);_0x5e6ed1[_0x2eea('0x39')]=_['intersection'](_0x4829be[_0x2eea('0x37')],qs[_0x2eea('0x3a')](_0x17fbda[_0x2eea('0x38')][_0x2eea('0x3a')]));_0x5e6ed1[_0x2eea('0x39')]=_0x5e6ed1[_0x2eea('0x39')]['length']?_0x5e6ed1[_0x2eea('0x39')]:_0x4829be[_0x2eea('0x37')];if(!_0x17fbda[_0x2eea('0x38')][_0x2eea('0x3b')]('nolimit')){_0x5e6ed1[_0x2eea('0x24')]=qs[_0x2eea('0x24')](_0x17fbda[_0x2eea('0x38')]['limit']);_0x5e6ed1[_0x2eea('0x22')]=qs[_0x2eea('0x22')](_0x17fbda[_0x2eea('0x38')][_0x2eea('0x22')]);}_0x5e6ed1[_0x2eea('0x3c')]=qs['sort'](_0x17fbda[_0x2eea('0x38')][_0x2eea('0x3d')]);_0x5e6ed1[_0x2eea('0x3e')]=qs[_0x2eea('0x3f')](_[_0x2eea('0x40')](_0x17fbda[_0x2eea('0x38')],_0x4829be[_0x2eea('0x3f')]),_0x2e29e4);if(_0x17fbda[_0x2eea('0x38')][_0x2eea('0x41')]){_0x5e6ed1[_0x2eea('0x3e')]=_[_0x2eea('0x42')](_0x5e6ed1[_0x2eea('0x3e')],{'$or':_[_0x2eea('0x32')](_0x2e29e4,function(_0x1b75c3){if(_0x1b75c3[_0x2eea('0x43')]!=='VIRTUAL'){var _0x152692={};_0x152692[_0x1b75c3[_0x2eea('0x2f')]]={'$like':'%'+_0x17fbda[_0x2eea('0x38')][_0x2eea('0x41')]+'%'};return _0x152692;}})});}_0x5e6ed1=_[_0x2eea('0x42')]({},_0x5e6ed1,_0x17fbda[_0x2eea('0x44')]);var _0x30503a={'where':_0x5e6ed1['where']};return db[_0x2eea('0x33')][_0x2eea('0x25')](_0x30503a)[_0x2eea('0x2a')](function(_0x588901){_0x157d3b[_0x2eea('0x25')]=_0x588901;if(_0x17fbda['query']['includeAll']){_0x5e6ed1[_0x2eea('0x45')]=[{'all':!![]}];}return db[_0x2eea('0x33')]['findAll'](_0x5e6ed1);})[_0x2eea('0x2a')](function(_0x5d3e8c){_0x157d3b[_0x2eea('0x46')]=_0x5d3e8c;return _0x157d3b;})[_0x2eea('0x2a')](respondWithFilteredResult(_0x223d44,_0x5e6ed1))[_0x2eea('0x47')](handleError(_0x223d44,null));};exports[_0x2eea('0x48')]=function(_0x3c7637,_0x3a86a0){var _0x4b7883={'raw':!![],'where':{'id':_0x3c7637['params']['id']}},_0x37f6eb={};_0x37f6eb[_0x2eea('0x37')]=_['keys'](db[_0x2eea('0x33')]['rawAttributes']);_0x37f6eb[_0x2eea('0x38')]=_[_0x2eea('0x49')](_0x3c7637[_0x2eea('0x38')]);_0x37f6eb['filters']=_['intersection'](_0x37f6eb[_0x2eea('0x37')],_0x37f6eb['query']);_0x4b7883[_0x2eea('0x39')]=_['intersection'](_0x37f6eb['model'],qs[_0x2eea('0x3a')](_0x3c7637['query']['fields']));_0x4b7883['attributes']=_0x4b7883[_0x2eea('0x39')][_0x2eea('0x4a')]?_0x4b7883[_0x2eea('0x39')]:_0x37f6eb[_0x2eea('0x37')];if(_0x3c7637['query'][_0x2eea('0x4b')]){_0x4b7883[_0x2eea('0x45')]=[{'all':!![]}];}_0x4b7883=_[_0x2eea('0x42')]({},_0x4b7883,_0x3c7637[_0x2eea('0x44')]);return db['MailQueue'][_0x2eea('0x4c')](_0x4b7883)[_0x2eea('0x2a')](handleEntityNotFound(_0x3a86a0,null))['then'](respondWithResult(_0x3a86a0,null))[_0x2eea('0x47')](handleError(_0x3a86a0,null));};exports[_0x2eea('0x4d')]=function(_0x5d7fc1,_0x55b3bd){return db['MailQueue'][_0x2eea('0x4d')](_0x5d7fc1[_0x2eea('0x4e')],{})[_0x2eea('0x2a')](function(_0x49f8d4){var _0x49db7b=_0x5d7fc1[_0x2eea('0x4f')]['get']({'plain':!![]});if(!_0x49db7b)throw new Error(_0x2eea('0x50'));if(_0x49db7b[_0x2eea('0x51')]===_0x2eea('0x4f')){var _0x33b583=_0x49f8d4[_0x2eea('0x2c')]({'plain':!![]});var _0x3b38b2=_0x2eea('0x52');return db['UserProfileSection'][_0x2eea('0x4c')]({'where':{'name':_0x3b38b2,'userProfileId':_0x49db7b[_0x2eea('0x53')]},'raw':!![]})[_0x2eea('0x2a')](function(_0x2d7b4c){if(_0x2d7b4c&&_0x2d7b4c[_0x2eea('0x54')]===0x0){return db[_0x2eea('0x55')][_0x2eea('0x4d')]({'name':_0x33b583[_0x2eea('0x2f')],'resourceId':_0x33b583['id'],'type':_0x2d7b4c[_0x2eea('0x2f')],'sectionId':_0x2d7b4c['id']},{})[_0x2eea('0x2a')](function(){return _0x49f8d4;});}else{return _0x49f8d4;}})[_0x2eea('0x47')](function(_0x2d54a2){logger['error'](_0x2eea('0x56'),_0x2d54a2);throw _0x2d54a2;});}return _0x49f8d4;})[_0x2eea('0x2a')](respondWithResult(_0x55b3bd,0xc9))['catch'](handleError(_0x55b3bd,null));};exports['update']=function(_0xbd45a4,_0x2f7e66){if(_0xbd45a4[_0x2eea('0x4e')]['id']){delete _0xbd45a4[_0x2eea('0x4e')]['id'];}return db['MailQueue'][_0x2eea('0x4c')]({'where':{'id':_0xbd45a4[_0x2eea('0x57')]['id']}})[_0x2eea('0x2a')](handleEntityNotFound(_0x2f7e66,null))[_0x2eea('0x2a')](saveUpdates(_0xbd45a4['body'],null))[_0x2eea('0x2a')](respondWithResult(_0x2f7e66,null))[_0x2eea('0x47')](handleError(_0x2f7e66,null));};exports['destroy']=function(_0x48aebb,_0x5c98f5){return db[_0x2eea('0x33')][_0x2eea('0x4c')]({'where':{'id':_0x48aebb[_0x2eea('0x57')]['id']}})[_0x2eea('0x2a')](handleEntityNotFound(_0x5c98f5,null))['then'](removeEntity(_0x5c98f5,null))['catch'](handleError(_0x5c98f5,null));};exports[_0x2eea('0x58')]=function(_0x118688,_0x162ba2){return db[_0x2eea('0x33')]['describe']()[_0x2eea('0x2a')](respondWithResult(_0x162ba2,null))[_0x2eea('0x47')](handleError(_0x162ba2,null));};exports[_0x2eea('0x59')]=function(_0x328601,_0x4b3665,_0x554497){var _0x32424b={'raw':!![],'where':{}},_0x1ea118={},_0x555882;return db[_0x2eea('0x33')]['findOne']({'where':{'id':_0x328601[_0x2eea('0x57')]['id']}})['then'](handleEntityNotFound(_0x4b3665,null))[_0x2eea('0x2a')](function(_0x5f4846){if(_0x5f4846){_0x555882=_0x5f4846['get']({'plain':!![]});_0x1ea118['model']=_[_0x2eea('0x49')](db[_0x2eea('0x5a')]['rawAttributes']);_0x1ea118[_0x2eea('0x38')]=_[_0x2eea('0x49')](_0x328601[_0x2eea('0x38')]);_0x1ea118[_0x2eea('0x3f')]=_['intersection'](_0x1ea118[_0x2eea('0x37')],_0x1ea118[_0x2eea('0x38')]);_0x32424b[_0x2eea('0x39')]=_[_0x2eea('0x5b')](_0x1ea118['model'],qs['fields'](_0x328601[_0x2eea('0x38')][_0x2eea('0x3a')]));_0x32424b[_0x2eea('0x39')]=_0x32424b['attributes'][_0x2eea('0x4a')]?_0x32424b[_0x2eea('0x39')]:_0x1ea118['model'];if(!_0x328601[_0x2eea('0x38')][_0x2eea('0x3b')]('nolimit')){_0x32424b[_0x2eea('0x24')]=qs[_0x2eea('0x24')](_0x328601[_0x2eea('0x38')]['limit']);_0x32424b[_0x2eea('0x22')]=qs[_0x2eea('0x22')](_0x328601[_0x2eea('0x38')][_0x2eea('0x22')]);}_0x32424b[_0x2eea('0x3c')]=qs[_0x2eea('0x3d')](_0x328601['query']['sort']);_0x32424b[_0x2eea('0x3e')]=qs[_0x2eea('0x3f')](_['pick'](_0x328601[_0x2eea('0x38')],_0x1ea118[_0x2eea('0x3f')]));_0x32424b['where'][_0x2eea('0x5c')]=_0x5f4846['id'];if(_0x328601['query']['filter']){_0x32424b['where']=_[_0x2eea('0x42')](_0x32424b[_0x2eea('0x3e')],{'$or':_[_0x2eea('0x32')](_0x32424b['attributes'],function(_0x435110){var _0x47535a={};_0x47535a[_0x435110]={'$like':'%'+_0x328601[_0x2eea('0x38')][_0x2eea('0x41')]+'%'};return _0x47535a;})});}_0x32424b=_[_0x2eea('0x42')]({},_0x32424b,_0x328601[_0x2eea('0x44')]);return db[_0x2eea('0x5a')][_0x2eea('0x5d')](_0x32424b);}})[_0x2eea('0x2a')](function(_0x37332e){if(_0x37332e){return db[_0x2eea('0x5e')][_0x2eea('0x5f')]({'where':{'id':_[_0x2eea('0x32')](_0x37332e,'UserId'),'role':_0x2eea('0x60')},'attributes':['id',_0x2eea('0x2f'),_0x2eea('0x61'),_0x2eea('0x62'),_0x2eea('0x63')]});}})[_0x2eea('0x2a')](function(_0x40ad3a){if(_0x40ad3a){return{'count':_0x40ad3a['count'],'rows':_['map'](_0x40ad3a[_0x2eea('0x46')],function(_0x219482){return{'membername':_0x219482[_0x2eea('0x2f')],'UserId':_0x219482['id'],'queue_name':_0x555882[_0x2eea('0x2f')],'MailQueueId':_0x555882['id'],'interface':util[_0x2eea('0x64')](_0x2eea('0x65'),_0x2eea('0x66'),_0x219482[_0x2eea('0x2f')]),'penalty':0x0,'paused':_0x219482[_0x2eea('0x61')],'createdAt':_0x219482['createdAt'],'updatedAt':_0x219482[_0x2eea('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x2eea('0x2a')](respondWithFilteredResult(_0x4b3665,_0x32424b))[_0x2eea('0x47')](handleError(_0x4b3665,null));};exports['getTeams']=function(_0x20f128,_0x312986,_0x2472ad){var _0x354921={};var _0x11d44f={};var _0x3acd3a;var _0x1211ee;return db[_0x2eea('0x33')]['findOne']({'where':{'id':_0x20f128[_0x2eea('0x57')]['id']}})[_0x2eea('0x2a')](handleEntityNotFound(_0x312986,null))[_0x2eea('0x2a')](function(_0x34835a){if(_0x34835a){_0x3acd3a=_0x34835a;_0x11d44f[_0x2eea('0x37')]=_['keys'](db[_0x2eea('0x67')][_0x2eea('0x34')]);_0x11d44f[_0x2eea('0x38')]=_['keys'](_0x20f128[_0x2eea('0x38')]);_0x11d44f['filters']=_[_0x2eea('0x5b')](_0x11d44f[_0x2eea('0x37')],_0x11d44f[_0x2eea('0x38')]);_0x354921[_0x2eea('0x39')]=_[_0x2eea('0x5b')](_0x11d44f['model'],qs[_0x2eea('0x3a')](_0x20f128[_0x2eea('0x38')]['fields']));_0x354921[_0x2eea('0x39')]=_0x354921[_0x2eea('0x39')][_0x2eea('0x4a')]?_0x354921[_0x2eea('0x39')]:_0x11d44f['model'];_0x354921[_0x2eea('0x3c')]=qs[_0x2eea('0x3d')](_0x20f128[_0x2eea('0x38')][_0x2eea('0x3d')]);_0x354921['where']=qs[_0x2eea('0x3f')](_['pick'](_0x20f128[_0x2eea('0x38')],_0x11d44f[_0x2eea('0x3f')]));if(_0x20f128[_0x2eea('0x38')][_0x2eea('0x41')]){_0x354921[_0x2eea('0x3e')]=_['merge'](_0x354921[_0x2eea('0x3e')],{'$or':_[_0x2eea('0x32')](_0x354921['attributes'],function(_0x55ff74){var _0x19db63={};_0x19db63[_0x55ff74]={'$like':'%'+_0x20f128['query'][_0x2eea('0x41')]+'%'};return _0x19db63;})});}_0x354921=_[_0x2eea('0x42')]({},_0x354921,_0x20f128[_0x2eea('0x44')]);return _0x3acd3a[_0x2eea('0x68')](_0x354921);}})['then'](function(_0x4bb01d){if(_0x4bb01d){_0x1211ee=_0x4bb01d[_0x2eea('0x4a')];if(!_0x20f128[_0x2eea('0x38')]['hasOwnProperty']('nolimit')){_0x354921[_0x2eea('0x24')]=qs[_0x2eea('0x24')](_0x20f128[_0x2eea('0x38')][_0x2eea('0x24')]);_0x354921[_0x2eea('0x22')]=qs[_0x2eea('0x22')](_0x20f128[_0x2eea('0x38')]['offset']);}return _0x3acd3a['getTeams'](_0x354921);}})[_0x2eea('0x2a')](function(_0x374e2a){if(_0x374e2a){return _0x374e2a?{'count':_0x1211ee,'rows':_0x374e2a}:null;}})[_0x2eea('0x2a')](respondWithResult(_0x312986,null))[_0x2eea('0x47')](handleError(_0x312986,null));};exports[_0x2eea('0x69')]=function(_0x549561,_0x45a149,_0xd3f598){var _0x5bac00=_0x549561['body']['ids'];return db[_0x2eea('0x67')]['findAll']({'where':{'id':_0x5bac00},'attributes':['id'],'include':[{'model':db[_0x2eea('0x5e')],'as':_0x2eea('0x6a'),'attributes':['id','name',_0x2eea('0x6b'),_0x2eea('0x6c'),_0x2eea('0x6d')],'raw':!![]}]})[_0x2eea('0x2a')](function(_0x6aeda7){if(_0x6aeda7){var _0x1bd052=_[_0x2eea('0x6e')](_0x6aeda7,function(_0x356078){var _0x54ea3f=_0x356078['get']({'plain':!![]});return _0x54ea3f[_0x2eea('0x6a')];});return db[_0x2eea('0x33')]['find']({'where':{'id':_0x549561[_0x2eea('0x57')]['id']}})['then'](function(_0x3d5098){return db[_0x2eea('0x6f')][_0x2eea('0x70')](function(_0x5294cb){return _0x3d5098[_0x2eea('0x69')](_0x5bac00,{'transaction':_0x5294cb})[_0x2eea('0x2a')](function(){return BPromise['each'](_0x1bd052,function(_0x599371){return db[_0x2eea('0x5a')][_0x2eea('0x71')]({'where':{'UserId':_0x599371['id'],'MailQueueId':_0x549561[_0x2eea('0x57')]['id']},'transaction':_0x5294cb});});})['then'](function(){_0x1bd052[_0x2eea('0x72')](function(_0x23a024){socket['emit'](_0x2eea('0x73'),{'UserId':_0x23a024['id'],'MailQueueId':_0x3d5098['id']});});});});});}})[_0x2eea('0x2a')](respondWithStatusCode(_0x45a149,null))[_0x2eea('0x47')](handleError(_0x45a149,null));};exports[_0x2eea('0x74')]=function(_0x2ac1cf,_0x4f85b0,_0x368c54){return db[_0x2eea('0x67')]['findAll']({'where':{'id':_0x2ac1cf[_0x2eea('0x38')][_0x2eea('0x75')]},'attributes':['id'],'include':[{'model':db[_0x2eea('0x5e')],'as':_0x2eea('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4f85b0,null))[_0x2eea('0x2a')](function(_0x5ad0ca){var _0x8f5cfe=_[_0x2eea('0x32')](_0x5ad0ca,'id');var _0x39e93c=[];var _0x201811=[];var _0x173ab9=squel[_0x2eea('0x76')]();_0x173ab9[_0x2eea('0x77')]('tq.TeamId')['from'](_0x2eea('0x78'),'tq')[_0x2eea('0x79')]('user_has_teams','ut',_0x2eea('0x7a'))[_0x2eea('0x3e')](_0x2eea('0x7b'),_0x2ac1cf[_0x2eea('0x57')]['id']);for(var _0x4431da=0x0;_0x4431da<_0x5ad0ca['length'];_0x4431da+=0x1){let _0x13a137=_0x5ad0ca[_0x4431da];for(var _0x3c2a4e=0x0;_0x3c2a4e<_0x13a137[_0x2eea('0x6a')][_0x2eea('0x4a')];_0x3c2a4e+=0x1){let _0x52c81c=_0x13a137[_0x2eea('0x6a')][_0x3c2a4e];var _0x29a26b=_0x173ab9[_0x2eea('0x7c')]();_0x29a26b[_0x2eea('0x3e')]('ut.UserId\x20=\x20?',_0x52c81c['id']);_0x201811[_0x2eea('0x7d')](db[_0x2eea('0x6f')][_0x2eea('0x38')](_0x29a26b['toString'](),{'type':db[_0x2eea('0x6f')]['QueryTypes']['SELECT']})[_0x2eea('0x2a')](function(_0x11a194){if(_0x11a194[_0x2eea('0x4a')]===0x1){return _0x52c81c['id'];}else{var _0x404fb7=_[_0x2eea('0x7e')](_[_0x2eea('0x32')](_0x11a194,'TeamId'),function(_0x2ea99d){return _[_0x2eea('0x7f')](_0x8f5cfe,_0x2ea99d);});if(_0x404fb7){return _0x52c81c['id'];}}}));}}return BPromise[_0x2eea('0x80')](_0x201811)[_0x2eea('0x2a')](function(_0x57d08d){_0x39e93c=_(_0x39e93c)[_0x2eea('0x81')](_0x57d08d)[_0x2eea('0x82')]()[_0x2eea('0x83')]();return db['MailQueue'][_0x2eea('0x4c')]({'where':{'id':_0x2ac1cf[_0x2eea('0x57')]['id']}})[_0x2eea('0x2a')](function(_0x456ba7){return db[_0x2eea('0x6f')]['transaction'](function(_0x2a3f81){return _0x456ba7[_0x2eea('0x74')](_0x2ac1cf[_0x2eea('0x38')][_0x2eea('0x75')],{'transaction':_0x2a3f81})['then'](function(){if(!_['isEmpty'](_0x39e93c)){return _0x456ba7[_0x2eea('0x84')](_0x39e93c,{'transaction':_0x2a3f81});}})[_0x2eea('0x2a')](function(){_0x39e93c[_0x2eea('0x72')](function(_0x177788){socket[_0x2eea('0x85')](_0x2eea('0x86'),{'UserId':_0x177788,'MailQueueId':_0x456ba7['id']});});});});});});})[_0x2eea('0x2a')](respondWithStatusCode(_0x4f85b0,null))[_0x2eea('0x47')](handleError(_0x4f85b0,null));};exports[_0x2eea('0x87')]=function(_0x2b8e8f,_0x451f53,_0x34a51d){return db['MailQueue']['find']({'where':{'id':_0x2b8e8f[_0x2eea('0x57')]['id']}})[_0x2eea('0x2a')](handleEntityNotFound(_0x451f53,null))['then'](function(_0x2e18e7){if(_0x2e18e7){return _0x2e18e7[_0x2eea('0x87')](_0x2b8e8f[_0x2eea('0x4e')]['ids'],_[_0x2eea('0x88')](_0x2b8e8f[_0x2eea('0x4e')],[_0x2eea('0x75'),'id'])||{})[_0x2eea('0x89')](function(_0x52c7da){for(var _0x53ee6e=0x0;_0x53ee6e<_0x2b8e8f['body'][_0x2eea('0x75')][_0x2eea('0x4a')];_0x53ee6e+=0x1){socket[_0x2eea('0x85')](_0x2eea('0x73'),{'UserId':Number(_0x2b8e8f[_0x2eea('0x4e')][_0x2eea('0x75')][_0x53ee6e]),'MailQueueId':Number(_0x2b8e8f[_0x2eea('0x57')]['id'])});}return _0x52c7da;});}})['then'](respondWithResult(_0x451f53,null))[_0x2eea('0x47')](handleError(_0x451f53,null));};exports[_0x2eea('0x84')]=function(_0x519891,_0x4ff1f1,_0x56a544){return db['MailQueue'][_0x2eea('0x4c')]({'where':{'id':_0x519891[_0x2eea('0x57')]['id']}})['then'](handleEntityNotFound(_0x4ff1f1,null))['then'](function(_0x1fd157){if(_0x1fd157){return _0x1fd157[_0x2eea('0x84')](_0x519891['query'][_0x2eea('0x75')])[_0x2eea('0x2a')](function(){if(_[_0x2eea('0x8a')](_0x519891['query'][_0x2eea('0x75')])){for(var _0x379b40=0x0;_0x379b40<_0x519891['query'][_0x2eea('0x75')]['length'];_0x379b40+=0x1){socket[_0x2eea('0x85')]('userMailQueue:remove',{'UserId':Number(_0x519891[_0x2eea('0x38')][_0x2eea('0x75')][_0x379b40]),'MailQueueId':Number(_0x519891[_0x2eea('0x57')]['id'])});}}else{socket[_0x2eea('0x85')](_0x2eea('0x86'),{'UserId':Number(_0x519891[_0x2eea('0x38')][_0x2eea('0x75')]),'MailQueueId':Number(_0x519891[_0x2eea('0x57')]['id'])});}});}})[_0x2eea('0x2a')](respondWithStatusCode(_0x4ff1f1,null))[_0x2eea('0x47')](handleError(_0x4ff1f1,null));};exports[_0x2eea('0x8b')]=function(_0x2a62a1,_0x3423ec,_0x28021c){var _0x76eda={};var _0x1c1012={};var _0x2933fd;var _0x26b674;return db[_0x2eea('0x33')]['findOne']({'where':{'id':_0x2a62a1[_0x2eea('0x57')]['id']}})['then'](handleEntityNotFound(_0x3423ec,null))['then'](function(_0x1315f9){if(_0x1315f9){_0x2933fd=_0x1315f9;_0x1c1012[_0x2eea('0x37')]=_[_0x2eea('0x49')](db[_0x2eea('0x5e')]['rawAttributes']);_0x1c1012[_0x2eea('0x38')]=_['keys'](_0x2a62a1[_0x2eea('0x38')]);_0x1c1012[_0x2eea('0x3f')]=_[_0x2eea('0x5b')](_0x1c1012[_0x2eea('0x37')],_0x1c1012[_0x2eea('0x38')]);_0x76eda[_0x2eea('0x39')]=_[_0x2eea('0x5b')](_0x1c1012[_0x2eea('0x37')],qs[_0x2eea('0x3a')](_0x2a62a1[_0x2eea('0x38')][_0x2eea('0x3a')]));_0x76eda['attributes']=_0x76eda['attributes'][_0x2eea('0x4a')]?_0x76eda[_0x2eea('0x39')]:_0x1c1012[_0x2eea('0x37')];_0x76eda[_0x2eea('0x3c')]=qs['sort'](_0x2a62a1[_0x2eea('0x38')][_0x2eea('0x3d')]);_0x76eda[_0x2eea('0x3e')]=qs[_0x2eea('0x3f')](_['pick'](_0x2a62a1[_0x2eea('0x38')],_0x1c1012[_0x2eea('0x3f')]));if(_0x2a62a1[_0x2eea('0x38')][_0x2eea('0x41')]){_0x76eda[_0x2eea('0x3e')]=_[_0x2eea('0x42')](_0x76eda['where'],{'$or':_[_0x2eea('0x32')](_0x76eda[_0x2eea('0x39')],function(_0x258d7d){var _0xbf329c={};_0xbf329c[_0x258d7d]={'$like':'%'+_0x2a62a1[_0x2eea('0x38')]['filter']+'%'};return _0xbf329c;})});}_0x76eda=_[_0x2eea('0x42')]({},_0x76eda,_0x2a62a1[_0x2eea('0x44')]);return _0x2933fd[_0x2eea('0x8b')](_0x76eda);}})[_0x2eea('0x2a')](function(_0x48c230){if(_0x48c230){_0x26b674=_0x48c230['length'];if(!_0x2a62a1['query'][_0x2eea('0x3b')](_0x2eea('0x8c'))){_0x76eda[_0x2eea('0x24')]=qs[_0x2eea('0x24')](_0x2a62a1['query']['limit']);_0x76eda[_0x2eea('0x22')]=qs[_0x2eea('0x22')](_0x2a62a1[_0x2eea('0x38')][_0x2eea('0x22')]);}return _0x2933fd[_0x2eea('0x8b')](_0x76eda);}})['then'](function(_0xa4d8a0){if(_0xa4d8a0){return _0xa4d8a0?{'count':_0x26b674,'rows':_0xa4d8a0}:null;}})[_0x2eea('0x2a')](respondWithResult(_0x3423ec,null))[_0x2eea('0x47')](handleError(_0x3423ec,null));};
\ No newline at end of file
index b81e03e..120746f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee49=['remove','emit','hasOwnProperty','../../mysqldb','MailQueue','setMaxListeners','save','update'];(function(_0x4af55d,_0x490df6){var _0x1661e1=function(_0x262d85){while(--_0x262d85){_0x4af55d['push'](_0x4af55d['shift']());}};_0x1661e1(++_0x490df6);}(_0xee49,0x19b));var _0x9ee4=function(_0x5db97a,_0xa8499d){_0x5db97a=_0x5db97a-0x0;var _0x4ca6a0=_0xee49[_0x5db97a];return _0x4ca6a0;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0x9ee4('0x0'))['db'][_0x9ee4('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x9ee4('0x2')](0x0);var events={'afterCreate':_0x9ee4('0x3'),'afterUpdate':_0x9ee4('0x4'),'afterDestroy':_0x9ee4('0x5')};function emitEvent(_0xe1b193){return function(_0x138d6b,_0x433c7e,_0x3d1223){MailQueueEvents[_0x9ee4('0x6')](_0xe1b193+':'+_0x138d6b['id'],_0x138d6b);MailQueueEvents[_0x9ee4('0x6')](_0xe1b193,_0x138d6b);_0x3d1223(null);};}for(var e in events){if(events[_0x9ee4('0x7')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
+var _0xad80=['hasOwnProperty','hook','exports','events','setMaxListeners','save','update','remove','emit'];(function(_0x285f9b,_0xfcae6c){var _0x32dd58=function(_0x392920){while(--_0x392920){_0x285f9b['push'](_0x285f9b['shift']());}};_0x32dd58(++_0xfcae6c);}(_0xad80,0x1c5));var _0x0ad8=function(_0x5315f4,_0x2de36d){_0x5315f4=_0x5315f4-0x0;var _0x44dba8=_0xad80[_0x5315f4];return _0x44dba8;};'use strict';var EventEmitter=require(_0x0ad8('0x0'));var MailQueue=require('../../mysqldb')['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x0ad8('0x1')](0x0);var events={'afterCreate':_0x0ad8('0x2'),'afterUpdate':_0x0ad8('0x3'),'afterDestroy':_0x0ad8('0x4')};function emitEvent(_0x5a4f30){return function(_0x2ad4dd,_0x2b5b6f,_0x55351c){MailQueueEvents['emit'](_0x5a4f30+':'+_0x2ad4dd['id'],_0x2ad4dd);MailQueueEvents[_0x0ad8('0x5')](_0x5a4f30,_0x2ad4dd);_0x55351c(null);};}for(var e in events){if(events[_0x0ad8('0x6')](e)){var event=events[e];MailQueue[_0x0ad8('0x7')](e,emitEvent(event));}}module[_0x0ad8('0x8')]=MailQueueEvents;
\ No newline at end of file
index 62c7cb3..8378a0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e68=['../../config/environment','./mailQueue.attributes','define','MailQueue','mail_queues','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x414a33,_0x5bf179){var _0x1922bd=function(_0xa5ca9c){while(--_0xa5ca9c){_0x414a33['push'](_0x414a33['shift']());}};_0x1922bd(++_0x5bf179);}(_0x5e68,0x1a7));var _0x85e6=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x5e68[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x85e6('0x0'))(_0x85e6('0x1'));var moment=require(_0x85e6('0x2'));var BPromise=require(_0x85e6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x85e6('0x4'));var rimraf=require(_0x85e6('0x5'));var config=require(_0x85e6('0x6'));var attributes=require(_0x85e6('0x7'));module['exports']=function(_0x411d1f,_0x1a3bf1){return _0x411d1f[_0x85e6('0x8')](_0x85e6('0x9'),attributes,{'tableName':_0x85e6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x93c5=['define','mail_queues','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./mailQueue.attributes'];(function(_0x3238ea,_0x91809d){var _0x4aaac2=function(_0xc5b102){while(--_0xc5b102){_0x3238ea['push'](_0x3238ea['shift']());}};_0x4aaac2(++_0x91809d);}(_0x93c5,0x14c));var _0x593c=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0x93c5[_0x513aa5];return _0x1a1a7c;};'use strict';var _=require('lodash');var util=require(_0x593c('0x0'));var logger=require(_0x593c('0x1'))(_0x593c('0x2'));var moment=require(_0x593c('0x3'));var BPromise=require('bluebird');var rp=require(_0x593c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x593c('0x5'));var config=require(_0x593c('0x6'));var attributes=require(_0x593c('0x7'));module['exports']=function(_0x513fa0,_0x2d83f2){return _0x513fa0[_0x593c('0x8')]('MailQueue',attributes,{'tableName':_0x593c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2aab450..ffcc208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7af=['info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetMailQueue','options','raw','where','attributes','limit','include','map','model','then','stringify','ShowMailQueue','MailQueue','find','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailQueue.socket','register','request'];(function(_0x25dbcb,_0x40eb18){var _0x329d76=function(_0x7c38ea){while(--_0x7c38ea){_0x25dbcb['push'](_0x25dbcb['shift']());}};_0x329d76(++_0x40eb18);}(_0xa7af,0x6a));var _0xfa7a=function(_0x4c6dbd,_0x4d7158){_0x4c6dbd=_0x4c6dbd-0x0;var _0x27c438=_0xa7af[_0x4c6dbd];return _0x27c438;};'use strict';var _=require(_0xfa7a('0x0'));var util=require(_0xfa7a('0x1'));var moment=require('moment');var BPromise=require(_0xfa7a('0x2'));var rs=require(_0xfa7a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfa7a('0x4'))['db'];var utils=require(_0xfa7a('0x5'));var logger=require(_0xfa7a('0x6'))('rpc');var config=require(_0xfa7a('0x7'));var jayson=require(_0xfa7a('0x8'));var client=jayson[_0xfa7a('0x9')][_0xfa7a('0xa')]({'port':0x232a});config[_0xfa7a('0xb')]=_['defaults'](config[_0xfa7a('0xb')],{'host':_0xfa7a('0xc'),'port':0x18eb});var socket=require(_0xfa7a('0xd'))(new Redis(config[_0xfa7a('0xb')]));require(_0xfa7a('0xe'))[_0xfa7a('0xf')](socket);function respondWithRpcPromise(_0x3bf862,_0x5f2671,_0x5abe45){return new BPromise(function(_0x264623,_0x5274a1){return client[_0xfa7a('0x10')](_0x3bf862,_0x5abe45)['then'](function(_0x23310a){logger[_0xfa7a('0x11')](_0xfa7a('0x12'),_0x5f2671,_0xfa7a('0x13'));logger[_0xfa7a('0x14')](_0xfa7a('0x15'),_0x5f2671,_0xfa7a('0x13'),JSON['stringify'](_0x23310a));if(_0x23310a[_0xfa7a('0x16')]){if(_0x23310a['error'][_0xfa7a('0x17')]===0x1f4){logger[_0xfa7a('0x16')](_0xfa7a('0x12'),_0x5f2671,_0x23310a[_0xfa7a('0x16')][_0xfa7a('0x18')]);return _0x5274a1(_0x23310a['error'][_0xfa7a('0x18')]);}logger[_0xfa7a('0x16')](_0xfa7a('0x12'),_0x5f2671,_0x23310a[_0xfa7a('0x16')][_0xfa7a('0x18')]);return _0x264623(_0x23310a[_0xfa7a('0x16')]['message']);}else{logger['info'](_0xfa7a('0x12'),_0x5f2671,'request\x20sent');_0x264623(_0x23310a[_0xfa7a('0x19')]['message']);}})[_0xfa7a('0x1a')](function(_0x5c63d7){logger[_0xfa7a('0x16')](_0xfa7a('0x12'),_0x5f2671,_0x5c63d7);_0x5274a1(_0x5c63d7);});});}exports[_0xfa7a('0x1b')]=function(_0x1bfe48){var _0x32cc62=this;return new Promise(function(_0x19e5ec,_0x80fda3){return db['MailQueue']['findAll']({'raw':_0x1bfe48['options']?_0x1bfe48[_0xfa7a('0x1c')][_0xfa7a('0x1d')]===undefined?!![]:![]:!![],'where':_0x1bfe48[_0xfa7a('0x1c')]?_0x1bfe48[_0xfa7a('0x1c')][_0xfa7a('0x1e')]||null:null,'attributes':_0x1bfe48[_0xfa7a('0x1c')]?_0x1bfe48[_0xfa7a('0x1c')][_0xfa7a('0x1f')]||null:null,'limit':_0x1bfe48[_0xfa7a('0x1c')]?_0x1bfe48[_0xfa7a('0x1c')][_0xfa7a('0x20')]||null:null,'include':_0x1bfe48['options']?_0x1bfe48['options'][_0xfa7a('0x21')]?_[_0xfa7a('0x22')](_0x1bfe48[_0xfa7a('0x1c')]['include'],function(_0x5067e5){return{'model':db[_0x5067e5['model']],'as':_0x5067e5['as'],'attributes':_0x5067e5['attributes'],'include':_0x5067e5[_0xfa7a('0x21')]?_[_0xfa7a('0x22')](_0x5067e5[_0xfa7a('0x21')],function(_0x557358){return{'model':db[_0x557358[_0xfa7a('0x23')]],'as':_0x557358['as'],'attributes':_0x557358[_0xfa7a('0x1f')],'include':_0x557358[_0xfa7a('0x21')]?_[_0xfa7a('0x22')](_0x557358[_0xfa7a('0x21')],function(_0x2250e3){return{'model':db[_0x2250e3['model']],'as':_0x2250e3['as'],'attributes':_0x2250e3[_0xfa7a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xfa7a('0x24')](function(_0x4a10f5){logger['info'](_0xfa7a('0x1b'),_0x1bfe48);logger[_0xfa7a('0x14')](_0xfa7a('0x1b'),_0x1bfe48,JSON[_0xfa7a('0x25')](_0x4a10f5));_0x19e5ec(_0x4a10f5);})[_0xfa7a('0x1a')](function(_0x5131cb){logger['error'](_0xfa7a('0x1b'),_0x5131cb[_0xfa7a('0x18')],_0x1bfe48);_0x80fda3(_0x32cc62['error'](0x1f4,_0x5131cb[_0xfa7a('0x18')]));});});};exports[_0xfa7a('0x26')]=function(_0x482b11){var _0x46461d=this;return new Promise(function(_0x1309d1,_0x480acc){return db[_0xfa7a('0x27')][_0xfa7a('0x28')]({'raw':_0x482b11[_0xfa7a('0x1c')]?_0x482b11[_0xfa7a('0x1c')][_0xfa7a('0x1d')]===undefined?!![]:![]:!![],'where':_0x482b11[_0xfa7a('0x1c')]?_0x482b11[_0xfa7a('0x1c')][_0xfa7a('0x1e')]||null:null,'attributes':_0x482b11[_0xfa7a('0x1c')]?_0x482b11[_0xfa7a('0x1c')][_0xfa7a('0x1f')]||null:null,'include':_0x482b11['options']?_0x482b11['options'][_0xfa7a('0x21')]?_[_0xfa7a('0x22')](_0x482b11[_0xfa7a('0x1c')][_0xfa7a('0x21')],function(_0x3ce08f){return{'model':db[_0x3ce08f[_0xfa7a('0x23')]],'as':_0x3ce08f['as'],'attributes':_0x3ce08f[_0xfa7a('0x1f')],'include':_0x3ce08f[_0xfa7a('0x21')]?_['map'](_0x3ce08f['include'],function(_0x97e10){return{'model':db[_0x97e10['model']],'as':_0x97e10['as'],'attributes':_0x97e10['attributes'],'include':_0x97e10[_0xfa7a('0x21')]?_[_0xfa7a('0x22')](_0x97e10[_0xfa7a('0x21')],function(_0x59f7d9){return{'model':db[_0x59f7d9['model']],'as':_0x59f7d9['as'],'attributes':_0x59f7d9[_0xfa7a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xfa7a('0x24')](function(_0x234d99){logger[_0xfa7a('0x11')](_0xfa7a('0x26'),_0x482b11);logger['debug'](_0xfa7a('0x26'),_0x482b11,JSON['stringify'](_0x234d99));_0x1309d1(_0x234d99);})['catch'](function(_0x5d688a){logger[_0xfa7a('0x16')](_0xfa7a('0x26'),_0x5d688a['message'],_0x482b11);_0x480acc(_0x46461d['error'](0x1f4,_0x5d688a[_0xfa7a('0x18')]));});});};
\ No newline at end of file
+var _0x18a9=['../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','./mailQueue.socket','then','info','MailQueue,\x20%s,\x20%s','debug','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','MailQueue','findAll','options','raw','where','attributes','map','include','model','GetMailQueue','stringify','ShowMailQueue','find','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x5ecc89,_0x163e7b){var _0x184108=function(_0x3def1f){while(--_0x3def1f){_0x5ecc89['push'](_0x5ecc89['shift']());}};_0x184108(++_0x163e7b);}(_0x18a9,0x17e));var _0x918a=function(_0x278ca2,_0x21e911){_0x278ca2=_0x278ca2-0x0;var _0x39ae01=_0x18a9[_0x278ca2];return _0x39ae01;};'use strict';var _=require(_0x918a('0x0'));var util=require('util');var moment=require(_0x918a('0x1'));var BPromise=require('bluebird');var rs=require(_0x918a('0x2'));var fs=require('fs');var Redis=require(_0x918a('0x3'));var db=require(_0x918a('0x4'))['db'];var utils=require(_0x918a('0x5'));var logger=require(_0x918a('0x6'))(_0x918a('0x7'));var config=require(_0x918a('0x8'));var jayson=require(_0x918a('0x9'));var client=jayson[_0x918a('0xa')][_0x918a('0xb')]({'port':0x232a});config['redis']=_[_0x918a('0xc')](config['redis'],{'host':_0x918a('0xd'),'port':0x18eb});var socket=require(_0x918a('0xe'))(new Redis(config['redis']));require(_0x918a('0xf'))['register'](socket);function respondWithRpcPromise(_0x1a19ad,_0x45b3a9,_0x35e72e){return new BPromise(function(_0x1d098c,_0x5b49f8){return client['request'](_0x1a19ad,_0x35e72e)[_0x918a('0x10')](function(_0x299b7f){logger[_0x918a('0x11')](_0x918a('0x12'),_0x45b3a9,'request\x20sent');logger[_0x918a('0x13')](_0x918a('0x14'),_0x45b3a9,_0x918a('0x15'),JSON['stringify'](_0x299b7f));if(_0x299b7f[_0x918a('0x16')]){if(_0x299b7f[_0x918a('0x16')][_0x918a('0x17')]===0x1f4){logger['error'](_0x918a('0x12'),_0x45b3a9,_0x299b7f[_0x918a('0x16')]['message']);return _0x5b49f8(_0x299b7f['error'][_0x918a('0x18')]);}logger[_0x918a('0x16')](_0x918a('0x12'),_0x45b3a9,_0x299b7f['error'][_0x918a('0x18')]);return _0x1d098c(_0x299b7f[_0x918a('0x16')]['message']);}else{logger[_0x918a('0x11')](_0x918a('0x12'),_0x45b3a9,_0x918a('0x15'));_0x1d098c(_0x299b7f['result'][_0x918a('0x18')]);}})[_0x918a('0x19')](function(_0x5266bb){logger[_0x918a('0x16')]('MailQueue,\x20%s,\x20%s',_0x45b3a9,_0x5266bb);_0x5b49f8(_0x5266bb);});});}exports['GetMailQueue']=function(_0x568464){var _0x298d0d=this;return new Promise(function(_0x407d1f,_0x5e2cb0){return db[_0x918a('0x1a')][_0x918a('0x1b')]({'raw':_0x568464[_0x918a('0x1c')]?_0x568464[_0x918a('0x1c')][_0x918a('0x1d')]===undefined?!![]:![]:!![],'where':_0x568464[_0x918a('0x1c')]?_0x568464[_0x918a('0x1c')][_0x918a('0x1e')]||null:null,'attributes':_0x568464[_0x918a('0x1c')]?_0x568464[_0x918a('0x1c')][_0x918a('0x1f')]||null:null,'limit':_0x568464['options']?_0x568464[_0x918a('0x1c')]['limit']||null:null,'include':_0x568464[_0x918a('0x1c')]?_0x568464[_0x918a('0x1c')]['include']?_[_0x918a('0x20')](_0x568464[_0x918a('0x1c')][_0x918a('0x21')],function(_0x3b065a){return{'model':db[_0x3b065a['model']],'as':_0x3b065a['as'],'attributes':_0x3b065a[_0x918a('0x1f')],'include':_0x3b065a[_0x918a('0x21')]?_['map'](_0x3b065a[_0x918a('0x21')],function(_0x1604fd){return{'model':db[_0x1604fd['model']],'as':_0x1604fd['as'],'attributes':_0x1604fd[_0x918a('0x1f')],'include':_0x1604fd[_0x918a('0x21')]?_[_0x918a('0x20')](_0x1604fd['include'],function(_0x3a2fe2){return{'model':db[_0x3a2fe2[_0x918a('0x22')]],'as':_0x3a2fe2['as'],'attributes':_0x3a2fe2[_0x918a('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x37e968){logger['info'](_0x918a('0x23'),_0x568464);logger[_0x918a('0x13')](_0x918a('0x23'),_0x568464,JSON[_0x918a('0x24')](_0x37e968));_0x407d1f(_0x37e968);})[_0x918a('0x19')](function(_0x2b9d34){logger[_0x918a('0x16')](_0x918a('0x23'),_0x2b9d34['message'],_0x568464);_0x5e2cb0(_0x298d0d[_0x918a('0x16')](0x1f4,_0x2b9d34[_0x918a('0x18')]));});});};exports[_0x918a('0x25')]=function(_0x5f4110){var _0x2d1b2d=this;return new Promise(function(_0x8e83a8,_0xfb5f9b){return db[_0x918a('0x1a')][_0x918a('0x26')]({'raw':_0x5f4110[_0x918a('0x1c')]?_0x5f4110[_0x918a('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x5f4110[_0x918a('0x1c')]?_0x5f4110[_0x918a('0x1c')][_0x918a('0x1e')]||null:null,'attributes':_0x5f4110[_0x918a('0x1c')]?_0x5f4110[_0x918a('0x1c')][_0x918a('0x1f')]||null:null,'include':_0x5f4110[_0x918a('0x1c')]?_0x5f4110[_0x918a('0x1c')][_0x918a('0x21')]?_[_0x918a('0x20')](_0x5f4110[_0x918a('0x1c')]['include'],function(_0x63366){return{'model':db[_0x63366['model']],'as':_0x63366['as'],'attributes':_0x63366[_0x918a('0x1f')],'include':_0x63366[_0x918a('0x21')]?_[_0x918a('0x20')](_0x63366[_0x918a('0x21')],function(_0x1d6577){return{'model':db[_0x1d6577[_0x918a('0x22')]],'as':_0x1d6577['as'],'attributes':_0x1d6577['attributes'],'include':_0x1d6577[_0x918a('0x21')]?_[_0x918a('0x20')](_0x1d6577['include'],function(_0x1c928d){return{'model':db[_0x1c928d[_0x918a('0x22')]],'as':_0x1c928d['as'],'attributes':_0x1c928d[_0x918a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x918a('0x10')](function(_0x7d3775){logger[_0x918a('0x11')](_0x918a('0x25'),_0x5f4110);logger[_0x918a('0x13')]('ShowMailQueue',_0x5f4110,JSON[_0x918a('0x24')](_0x7d3775));_0x8e83a8(_0x7d3775);})['catch'](function(_0x1f9c08){logger[_0x918a('0x16')]('ShowMailQueue',_0x1f9c08[_0x918a('0x18')],_0x5f4110);_0xfb5f9b(_0x2d1b2d[_0x918a('0x16')](0x1f4,_0x1f9c08[_0x918a('0x18')]));});});};
\ No newline at end of file
index 89675c0..e41c523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc16a=['remove','update','emit','length','./mailQueue.events','save'];(function(_0x2d9535,_0x4bc592){var _0xb4e710=function(_0x50b9a9){while(--_0x50b9a9){_0x2d9535['push'](_0x2d9535['shift']());}};_0xb4e710(++_0x4bc592);}(_0xc16a,0x160));var _0xac16=function(_0x1f98d1,_0x26c469){_0x1f98d1=_0x1f98d1-0x0;var _0x555836=_0xc16a[_0x1f98d1];return _0x555836;};'use strict';var MailQueueEvents=require(_0xac16('0x0'));var events=[_0xac16('0x1'),_0xac16('0x2'),_0xac16('0x3')];function createListener(_0x149aed,_0x52c95e){return function(_0x37b514){_0x52c95e[_0xac16('0x4')](_0x149aed,_0x37b514);};}function removeListener(_0x445c77,_0x51b348){return function(){MailQueueEvents['removeListener'](_0x445c77,_0x51b348);};}exports['register']=function(_0x2de644){for(var _0xb3b293=0x0,_0x56c57d=events[_0xac16('0x5')];_0xb3b293<_0x56c57d;_0xb3b293++){var _0x2778ec=events[_0xb3b293];var _0x14d622=createListener('mailQueue:'+_0x2778ec,_0x2de644);MailQueueEvents['on'](_0x2778ec,_0x14d622);}};
\ No newline at end of file
+var _0x2a84=['./mailQueue.events','save','update','emit','removeListener','register','length','mailQueue:'];(function(_0x360eff,_0x24c91b){var _0x3a640c=function(_0x506a06){while(--_0x506a06){_0x360eff['push'](_0x360eff['shift']());}};_0x3a640c(++_0x24c91b);}(_0x2a84,0x170));var _0x42a8=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x2a84[_0x501510];return _0x1e6ee5;};'use strict';var MailQueueEvents=require(_0x42a8('0x0'));var events=[_0x42a8('0x1'),'remove',_0x42a8('0x2')];function createListener(_0x129919,_0x31508f){return function(_0x5c08b6){_0x31508f[_0x42a8('0x3')](_0x129919,_0x5c08b6);};}function removeListener(_0x49dca9,_0xea116f){return function(){MailQueueEvents[_0x42a8('0x4')](_0x49dca9,_0xea116f);};}exports[_0x42a8('0x5')]=function(_0x59505e){for(var _0x593b3a=0x0,_0x4b17b7=events[_0x42a8('0x6')];_0x593b3a<_0x4b17b7;_0x593b3a++){var _0x10c2fe=events[_0x593b3a];var _0x4ff8e0=createListener(_0x42a8('0x7')+_0x10c2fe,_0x59505e);MailQueueEvents['on'](_0x10c2fe,_0x4ff8e0);}};
\ No newline at end of file
index 6db0976..6197d06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed63=['/describe','/:id','show','create','put','delete','destroy','exports','util','path','connect-timeout','express','./mailQueueReport.controller','isAuthenticated','index','get'];(function(_0x33958e,_0x85f033){var _0x17e8af=function(_0xc8931f){while(--_0xc8931f){_0x33958e['push'](_0x33958e['shift']());}};_0x17e8af(++_0x85f033);}(_0xed63,0xf8));var _0x3ed6=function(_0x12054c,_0x21d259){_0x12054c=_0x12054c-0x0;var _0x48f94e=_0xed63[_0x12054c];return _0x48f94e;};'use strict';var multer=require('multer');var util=require(_0x3ed6('0x0'));var path=require(_0x3ed6('0x1'));var timeout=require(_0x3ed6('0x2'));var express=require(_0x3ed6('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3ed6('0x4'));router['get']('/',auth[_0x3ed6('0x5')](),controller[_0x3ed6('0x6')]);router[_0x3ed6('0x7')](_0x3ed6('0x8'),auth[_0x3ed6('0x5')](),controller['describe']);router[_0x3ed6('0x7')](_0x3ed6('0x9'),auth[_0x3ed6('0x5')](),controller[_0x3ed6('0xa')]);router['post']('/',auth[_0x3ed6('0x5')](),controller[_0x3ed6('0xb')]);router[_0x3ed6('0xc')]('/:id',auth[_0x3ed6('0x5')](),controller['update']);router[_0x3ed6('0xd')]('/:id',auth[_0x3ed6('0x5')](),controller[_0x3ed6('0xe')]);module[_0x3ed6('0xf')]=router;
\ No newline at end of file
+var _0x4f63=['get','isAuthenticated','/describe','describe','/:id','create','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./mailQueueReport.controller'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x4f63,0x80));var _0x34f6=function(_0x409f3f,_0x476945){_0x409f3f=_0x409f3f-0x0;var _0x5753c8=_0x4f63[_0x409f3f];return _0x5753c8;};'use strict';var multer=require(_0x34f6('0x0'));var util=require(_0x34f6('0x1'));var path=require(_0x34f6('0x2'));var timeout=require(_0x34f6('0x3'));var express=require(_0x34f6('0x4'));var router=express['Router']();var fs_extra=require(_0x34f6('0x5'));var auth=require(_0x34f6('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x34f6('0x7'));router[_0x34f6('0x8')]('/',auth[_0x34f6('0x9')](),controller['index']);router[_0x34f6('0x8')](_0x34f6('0xa'),auth['isAuthenticated'](),controller[_0x34f6('0xb')]);router[_0x34f6('0x8')](_0x34f6('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x34f6('0x9')](),controller[_0x34f6('0xd')]);router['put'](_0x34f6('0xc'),auth[_0x34f6('0x9')](),controller[_0x34f6('0xe')]);router[_0x34f6('0xf')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x34f6('0x10')]=router;
\ No newline at end of file
index fa51dac..f441c56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5282=['DATE','moment','exports','STRING'];(function(_0x3d85b2,_0x546af8){var _0x482cc8=function(_0x4f7ca3){while(--_0x4f7ca3){_0x3d85b2['push'](_0x3d85b2['shift']());}};_0x482cc8(++_0x546af8);}(_0x5282,0x111));var _0x2528=function(_0x10a904,_0x2bf292){_0x10a904=_0x10a904-0x0;var _0x53815a=_0x5282[_0x10a904];return _0x53815a;};'use strict';var moment=require(_0x2528('0x0'));var Sequelize=require('sequelize');module[_0x2528('0x1')]={'uniqueid':{'type':Sequelize[_0x2528('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x2528('0x2')]},'joinAt':{'type':Sequelize[_0x2528('0x3')]},'leaveAt':{'type':Sequelize[_0x2528('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x2528('0x3')]},'reason':{'type':Sequelize[_0x2528('0x2')]}};
\ No newline at end of file
+var _0x6395=['moment','exports','STRING','DATE'];(function(_0x414f67,_0x861aed){var _0x338537=function(_0x4696fd){while(--_0x4696fd){_0x414f67['push'](_0x414f67['shift']());}};_0x338537(++_0x861aed);}(_0x6395,0xc8));var _0x5639=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x6395[_0x17d9e3];return _0x14192d;};'use strict';var moment=require(_0x5639('0x0'));var Sequelize=require('sequelize');module[_0x5639('0x1')]={'uniqueid':{'type':Sequelize[_0x5639('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x5639('0x2')]},'joinAt':{'type':Sequelize[_0x5639('0x3')]},'leaveAt':{'type':Sequelize[_0x5639('0x3')]},'acceptAt':{'type':Sequelize[_0x5639('0x3')]},'exitAt':{'type':Sequelize[_0x5639('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5b8ff8e..85e968e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6343=['VIRTUAL','options','MailQueueReport','then','rows','catch','show','params','keys','includeAll','include','create','body','find','describe','zip-dir','fast-json-patch','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','stack','send','map','rawAttributes','fieldName','type','key','model','name','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','filter','merge'];(function(_0x4c5c97,_0x4f85bf){var _0xd5d2cb=function(_0x1e6100){while(--_0x1e6100){_0x4c5c97['push'](_0x4c5c97['shift']());}};_0xd5d2cb(++_0x4f85bf);}(_0x6343,0x168));var _0x3634=function(_0x29fb30,_0x4c84bb){_0x29fb30=_0x29fb30-0x0;var _0x3d60fb=_0x6343[_0x29fb30];return _0x3d60fb;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3634('0x0'));var jsonpatch=require(_0x3634('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3634('0x2'));var path=require(_0x3634('0x3'));var sox=require('sox');var csv=require(_0x3634('0x4'));var ejs=require(_0x3634('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3634('0x6'));var squel=require(_0x3634('0x7'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3634('0x8'));var toCsv=require(_0x3634('0x4'));var querystring=require(_0x3634('0x9'));var Papa=require(_0x3634('0xa'));var Redis=require(_0x3634('0xb'));var authService=require(_0x3634('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3634('0xd'));var logger=require(_0x3634('0xe'))('api');var utils=require(_0x3634('0xf'));var config=require(_0x3634('0x10'));var licenseUtil=require(_0x3634('0x11'));var db=require(_0x3634('0x12'))['db'];function respondWithStatusCode(_0x1e6a04,_0x151c8c){_0x151c8c=_0x151c8c||0xcc;return function(_0x35ae07){if(_0x35ae07){return _0x1e6a04[_0x3634('0x13')](_0x151c8c);}return _0x1e6a04[_0x3634('0x14')](_0x151c8c)[_0x3634('0x15')]();};}function respondWithResult(_0x299e53,_0x71d09b){_0x71d09b=_0x71d09b||0xc8;return function(_0x7e4801){if(_0x7e4801){return _0x299e53[_0x3634('0x14')](_0x71d09b)['json'](_0x7e4801);}};}function respondWithFilteredResult(_0x167247,_0x48787f){return function(_0x69609d){if(_0x69609d){var _0x18285c=typeof _0x48787f[_0x3634('0x16')]===_0x3634('0x17')&&typeof _0x48787f[_0x3634('0x18')]==='undefined';var _0x3121a3=_0x69609d['count'];var _0x50350d=_0x18285c?0x0:_0x48787f[_0x3634('0x16')];var _0x4b2115=_0x18285c?_0x69609d[_0x3634('0x19')]:_0x48787f[_0x3634('0x16')]+_0x48787f[_0x3634('0x18')];var _0x5603d2;if(_0x4b2115>=_0x3121a3){_0x4b2115=_0x3121a3;_0x5603d2=0xc8;}else{_0x5603d2=0xce;}_0x167247[_0x3634('0x14')](_0x5603d2);return _0x167247[_0x3634('0x1a')]('Content-Range',_0x50350d+'-'+_0x4b2115+'/'+_0x3121a3)[_0x3634('0x1b')](_0x69609d);}return null;};}function patchUpdates(_0x506281){return function(_0x742e56){try{jsonpatch[_0x3634('0x1c')](_0x742e56,_0x506281,!![]);}catch(_0x5b77a7){return BPromise[_0x3634('0x1d')](_0x5b77a7);}return _0x742e56[_0x3634('0x1e')]();};}function saveUpdates(_0x206c8e,_0x505026){return function(_0x22b7ef){if(_0x22b7ef){return _0x22b7ef[_0x3634('0x1f')](_0x206c8e)['then'](function(_0x3936ee){return _0x3936ee;});}return null;};}function removeEntity(_0x596acb,_0x5e9188){return function(_0x3a8c41){if(_0x3a8c41){return _0x3a8c41[_0x3634('0x20')]()['then'](function(){_0x596acb[_0x3634('0x14')](0xcc)[_0x3634('0x15')]();});}};}function handleEntityNotFound(_0x17db44,_0x225ddc){return function(_0x363ca2){if(!_0x363ca2){_0x17db44[_0x3634('0x13')](0x194);}return _0x363ca2;};}function handleError(_0x38e863,_0x4762b1){_0x4762b1=_0x4762b1||0x1f4;return function(_0x22f1f1){logger['error'](_0x22f1f1[_0x3634('0x21')]);if(_0x22f1f1['name']){delete _0x22f1f1['name'];}_0x38e863['status'](_0x4762b1)[_0x3634('0x22')](_0x22f1f1);};}exports['index']=function(_0x3bf28b,_0x12b80e){var _0x49804f={},_0x55a77f={},_0x282f73={'count':0x0,'rows':[]};var _0x5bd4e0=_[_0x3634('0x23')](db['MailQueueReport'][_0x3634('0x24')],function(_0x3d7322){return{'name':_0x3d7322[_0x3634('0x25')],'type':_0x3d7322[_0x3634('0x26')][_0x3634('0x27')]};});_0x55a77f[_0x3634('0x28')]=_[_0x3634('0x23')](_0x5bd4e0,_0x3634('0x29'));_0x55a77f['query']=_['keys'](_0x3bf28b['query']);_0x55a77f[_0x3634('0x2a')]=_['intersection'](_0x55a77f[_0x3634('0x28')],_0x55a77f[_0x3634('0x2b')]);_0x49804f[_0x3634('0x2c')]=_[_0x3634('0x2d')](_0x55a77f[_0x3634('0x28')],qs[_0x3634('0x2e')](_0x3bf28b['query'][_0x3634('0x2e')]));_0x49804f[_0x3634('0x2c')]=_0x49804f[_0x3634('0x2c')][_0x3634('0x2f')]?_0x49804f[_0x3634('0x2c')]:_0x55a77f[_0x3634('0x28')];if(!_0x3bf28b[_0x3634('0x2b')][_0x3634('0x30')](_0x3634('0x31'))){_0x49804f['limit']=qs[_0x3634('0x18')](_0x3bf28b[_0x3634('0x2b')][_0x3634('0x18')]);_0x49804f[_0x3634('0x16')]=qs['offset'](_0x3bf28b[_0x3634('0x2b')][_0x3634('0x16')]);}_0x49804f[_0x3634('0x32')]=qs['sort'](_0x3bf28b['query']['sort']);_0x49804f[_0x3634('0x33')]=qs[_0x3634('0x2a')](_['pick'](_0x3bf28b[_0x3634('0x2b')],_0x55a77f[_0x3634('0x2a')]),_0x5bd4e0);if(_0x3bf28b[_0x3634('0x2b')][_0x3634('0x34')]){_0x49804f[_0x3634('0x33')]=_[_0x3634('0x35')](_0x49804f[_0x3634('0x33')],{'$or':_['map'](_0x5bd4e0,function(_0x416987){if(_0x416987['type']!==_0x3634('0x36')){var _0x3ae966={};_0x3ae966[_0x416987[_0x3634('0x29')]]={'$like':'%'+_0x3bf28b[_0x3634('0x2b')][_0x3634('0x34')]+'%'};return _0x3ae966;}})});}_0x49804f=_['merge']({},_0x49804f,_0x3bf28b[_0x3634('0x37')]);var _0x33af29={'where':_0x49804f[_0x3634('0x33')]};return db[_0x3634('0x38')][_0x3634('0x19')](_0x33af29)[_0x3634('0x39')](function(_0x28c8d0){_0x282f73[_0x3634('0x19')]=_0x28c8d0;if(_0x3bf28b[_0x3634('0x2b')]['includeAll']){_0x49804f['include']=[{'all':!![]}];}return db[_0x3634('0x38')]['findAll'](_0x49804f);})['then'](function(_0x5948db){_0x282f73[_0x3634('0x3a')]=_0x5948db;return _0x282f73;})['then'](respondWithFilteredResult(_0x12b80e,_0x49804f))[_0x3634('0x3b')](handleError(_0x12b80e,null));};exports[_0x3634('0x3c')]=function(_0x53c1ea,_0x505be7){var _0x4896ab={'raw':!![],'where':{'id':_0x53c1ea[_0x3634('0x3d')]['id']}},_0x324970={};_0x324970['model']=_[_0x3634('0x3e')](db[_0x3634('0x38')][_0x3634('0x24')]);_0x324970[_0x3634('0x2b')]=_[_0x3634('0x3e')](_0x53c1ea['query']);_0x324970['filters']=_[_0x3634('0x2d')](_0x324970[_0x3634('0x28')],_0x324970[_0x3634('0x2b')]);_0x4896ab[_0x3634('0x2c')]=_[_0x3634('0x2d')](_0x324970[_0x3634('0x28')],qs['fields'](_0x53c1ea[_0x3634('0x2b')][_0x3634('0x2e')]));_0x4896ab[_0x3634('0x2c')]=_0x4896ab['attributes']['length']?_0x4896ab[_0x3634('0x2c')]:_0x324970[_0x3634('0x28')];if(_0x53c1ea[_0x3634('0x2b')][_0x3634('0x3f')]){_0x4896ab[_0x3634('0x40')]=[{'all':!![]}];}_0x4896ab=_[_0x3634('0x35')]({},_0x4896ab,_0x53c1ea[_0x3634('0x37')]);return db[_0x3634('0x38')]['find'](_0x4896ab)[_0x3634('0x39')](handleEntityNotFound(_0x505be7,null))[_0x3634('0x39')](respondWithResult(_0x505be7,null))[_0x3634('0x3b')](handleError(_0x505be7,null));};exports[_0x3634('0x41')]=function(_0x615276,_0x151654){return db[_0x3634('0x38')][_0x3634('0x41')](_0x615276[_0x3634('0x42')],{})['then'](respondWithResult(_0x151654,0xc9))[_0x3634('0x3b')](handleError(_0x151654,null));};exports[_0x3634('0x1f')]=function(_0x4a4a94,_0x3c356b){if(_0x4a4a94[_0x3634('0x42')]['id']){delete _0x4a4a94[_0x3634('0x42')]['id'];}return db[_0x3634('0x38')][_0x3634('0x43')]({'where':{'id':_0x4a4a94[_0x3634('0x3d')]['id']}})['then'](handleEntityNotFound(_0x3c356b,null))[_0x3634('0x39')](saveUpdates(_0x4a4a94[_0x3634('0x42')],null))[_0x3634('0x39')](respondWithResult(_0x3c356b,null))[_0x3634('0x3b')](handleError(_0x3c356b,null));};exports[_0x3634('0x20')]=function(_0x582475,_0x66f6a4){return db[_0x3634('0x38')]['find']({'where':{'id':_0x582475['params']['id']}})[_0x3634('0x39')](handleEntityNotFound(_0x66f6a4,null))['then'](removeEntity(_0x66f6a4,null))[_0x3634('0x3b')](handleError(_0x66f6a4,null));};exports[_0x3634('0x44')]=function(_0x1943a5,_0x1834a3){return db['MailQueueReport'][_0x3634('0x44')]()[_0x3634('0x39')](respondWithResult(_0x1834a3,null))[_0x3634('0x3b')](handleError(_0x1834a3,null));};
\ No newline at end of file
+var _0x47c5=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','map','VIRTUAL','filter','merge','count','includeAll','include','findAll','show','params','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','MailQueueReport','rawAttributes','fieldName','type','key','model'];(function(_0x2e3e32,_0x569c41){var _0x2f0ce1=function(_0x449e60){while(--_0x449e60){_0x2e3e32['push'](_0x2e3e32['shift']());}};_0x2f0ce1(++_0x569c41);}(_0x47c5,0x165));var _0x547c=function(_0x2c2d99,_0x1a61ce){_0x2c2d99=_0x2c2d99-0x0;var _0xc9af40=_0x47c5[_0x2c2d99];return _0xc9af40;};'use strict';var emlformat=require(_0x547c('0x0'));var rimraf=require(_0x547c('0x1'));var zipdir=require(_0x547c('0x2'));var jsonpatch=require(_0x547c('0x3'));var rp=require(_0x547c('0x4'));var moment=require(_0x547c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x547c('0x6'));var util=require(_0x547c('0x7'));var path=require('path');var sox=require(_0x547c('0x8'));var csv=require(_0x547c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x547c('0xa'));var _=require(_0x547c('0xb'));var squel=require(_0x547c('0xc'));var crypto=require(_0x547c('0xd'));var jsforce=require(_0x547c('0xe'));var deskjs=require(_0x547c('0xf'));var toCsv=require(_0x547c('0x9'));var querystring=require(_0x547c('0x10'));var Papa=require(_0x547c('0x11'));var Redis=require(_0x547c('0x12'));var authService=require(_0x547c('0x13'));var qs=require(_0x547c('0x14'));var as=require(_0x547c('0x15'));var hardwareService=require(_0x547c('0x16'));var logger=require(_0x547c('0x17'))(_0x547c('0x18'));var utils=require(_0x547c('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x547c('0x1a'));var db=require(_0x547c('0x1b'))['db'];function respondWithStatusCode(_0x5eea67,_0x436c19){_0x436c19=_0x436c19||0xcc;return function(_0x201d95){if(_0x201d95){return _0x5eea67[_0x547c('0x1c')](_0x436c19);}return _0x5eea67[_0x547c('0x1d')](_0x436c19)[_0x547c('0x1e')]();};}function respondWithResult(_0x150317,_0x2bc289){_0x2bc289=_0x2bc289||0xc8;return function(_0xa3c7b0){if(_0xa3c7b0){return _0x150317[_0x547c('0x1d')](_0x2bc289)[_0x547c('0x1f')](_0xa3c7b0);}};}function respondWithFilteredResult(_0x240243,_0x103455){return function(_0x39f316){if(_0x39f316){var _0x23644b=typeof _0x103455[_0x547c('0x20')]===_0x547c('0x21')&&typeof _0x103455[_0x547c('0x22')]===_0x547c('0x21');var _0x49acca=_0x39f316['count'];var _0x23fa9e=_0x23644b?0x0:_0x103455[_0x547c('0x20')];var _0xeb059e=_0x23644b?_0x39f316['count']:_0x103455[_0x547c('0x20')]+_0x103455[_0x547c('0x22')];var _0x1ddbd3;if(_0xeb059e>=_0x49acca){_0xeb059e=_0x49acca;_0x1ddbd3=0xc8;}else{_0x1ddbd3=0xce;}_0x240243['status'](_0x1ddbd3);return _0x240243[_0x547c('0x23')](_0x547c('0x24'),_0x23fa9e+'-'+_0xeb059e+'/'+_0x49acca)['json'](_0x39f316);}return null;};}function patchUpdates(_0x5453f9){return function(_0x35040a){try{jsonpatch[_0x547c('0x25')](_0x35040a,_0x5453f9,!![]);}catch(_0x4f20c1){return BPromise[_0x547c('0x26')](_0x4f20c1);}return _0x35040a[_0x547c('0x27')]();};}function saveUpdates(_0x592e46,_0x2e317a){return function(_0x17fd97){if(_0x17fd97){return _0x17fd97[_0x547c('0x28')](_0x592e46)['then'](function(_0x3a55a0){return _0x3a55a0;});}return null;};}function removeEntity(_0x361c5c,_0x470694){return function(_0x26823c){if(_0x26823c){return _0x26823c[_0x547c('0x29')]()[_0x547c('0x2a')](function(){_0x361c5c[_0x547c('0x1d')](0xcc)[_0x547c('0x1e')]();});}};}function handleEntityNotFound(_0x507895,_0x39c5f9){return function(_0x4c66b9){if(!_0x4c66b9){_0x507895['sendStatus'](0x194);}return _0x4c66b9;};}function handleError(_0x4855fd,_0x478f04){_0x478f04=_0x478f04||0x1f4;return function(_0x2c725d){logger['error'](_0x2c725d[_0x547c('0x2b')]);if(_0x2c725d['name']){delete _0x2c725d[_0x547c('0x2c')];}_0x4855fd['status'](_0x478f04)[_0x547c('0x2d')](_0x2c725d);};}exports[_0x547c('0x2e')]=function(_0x2389de,_0x30a96c){var _0x198afb={},_0x569924={},_0x575c74={'count':0x0,'rows':[]};var _0x28c282=_['map'](db[_0x547c('0x2f')][_0x547c('0x30')],function(_0x3e7652){return{'name':_0x3e7652[_0x547c('0x31')],'type':_0x3e7652[_0x547c('0x32')][_0x547c('0x33')]};});_0x569924[_0x547c('0x34')]=_['map'](_0x28c282,'name');_0x569924[_0x547c('0x35')]=_[_0x547c('0x36')](_0x2389de[_0x547c('0x35')]);_0x569924[_0x547c('0x37')]=_[_0x547c('0x38')](_0x569924[_0x547c('0x34')],_0x569924[_0x547c('0x35')]);_0x198afb[_0x547c('0x39')]=_[_0x547c('0x38')](_0x569924[_0x547c('0x34')],qs[_0x547c('0x3a')](_0x2389de[_0x547c('0x35')][_0x547c('0x3a')]));_0x198afb[_0x547c('0x39')]=_0x198afb['attributes'][_0x547c('0x3b')]?_0x198afb['attributes']:_0x569924['model'];if(!_0x2389de['query'][_0x547c('0x3c')](_0x547c('0x3d'))){_0x198afb[_0x547c('0x22')]=qs[_0x547c('0x22')](_0x2389de[_0x547c('0x35')][_0x547c('0x22')]);_0x198afb['offset']=qs['offset'](_0x2389de['query'][_0x547c('0x20')]);}_0x198afb[_0x547c('0x3e')]=qs[_0x547c('0x3f')](_0x2389de[_0x547c('0x35')][_0x547c('0x3f')]);_0x198afb[_0x547c('0x40')]=qs['filters'](_[_0x547c('0x41')](_0x2389de['query'],_0x569924[_0x547c('0x37')]),_0x28c282);if(_0x2389de[_0x547c('0x35')]['filter']){_0x198afb[_0x547c('0x40')]=_['merge'](_0x198afb['where'],{'$or':_[_0x547c('0x42')](_0x28c282,function(_0x281d52){if(_0x281d52[_0x547c('0x32')]!==_0x547c('0x43')){var _0x4c36b9={};_0x4c36b9[_0x281d52['name']]={'$like':'%'+_0x2389de[_0x547c('0x35')][_0x547c('0x44')]+'%'};return _0x4c36b9;}})});}_0x198afb=_[_0x547c('0x45')]({},_0x198afb,_0x2389de['options']);var _0x3886ae={'where':_0x198afb[_0x547c('0x40')]};return db[_0x547c('0x2f')]['count'](_0x3886ae)[_0x547c('0x2a')](function(_0x3a6a0a){_0x575c74[_0x547c('0x46')]=_0x3a6a0a;if(_0x2389de['query'][_0x547c('0x47')]){_0x198afb[_0x547c('0x48')]=[{'all':!![]}];}return db['MailQueueReport'][_0x547c('0x49')](_0x198afb);})[_0x547c('0x2a')](function(_0x9c3cb2){_0x575c74['rows']=_0x9c3cb2;return _0x575c74;})[_0x547c('0x2a')](respondWithFilteredResult(_0x30a96c,_0x198afb))['catch'](handleError(_0x30a96c,null));};exports[_0x547c('0x4a')]=function(_0x5393a2,_0xb86f5f){var _0x414b9d={'raw':!![],'where':{'id':_0x5393a2[_0x547c('0x4b')]['id']}},_0x3d37d7={};_0x3d37d7[_0x547c('0x34')]=_[_0x547c('0x36')](db['MailQueueReport']['rawAttributes']);_0x3d37d7[_0x547c('0x35')]=_[_0x547c('0x36')](_0x5393a2[_0x547c('0x35')]);_0x3d37d7['filters']=_[_0x547c('0x38')](_0x3d37d7[_0x547c('0x34')],_0x3d37d7[_0x547c('0x35')]);_0x414b9d[_0x547c('0x39')]=_[_0x547c('0x38')](_0x3d37d7[_0x547c('0x34')],qs['fields'](_0x5393a2[_0x547c('0x35')][_0x547c('0x3a')]));_0x414b9d[_0x547c('0x39')]=_0x414b9d['attributes'][_0x547c('0x3b')]?_0x414b9d[_0x547c('0x39')]:_0x3d37d7[_0x547c('0x34')];if(_0x5393a2[_0x547c('0x35')]['includeAll']){_0x414b9d[_0x547c('0x48')]=[{'all':!![]}];}_0x414b9d=_['merge']({},_0x414b9d,_0x5393a2[_0x547c('0x4c')]);return db['MailQueueReport'][_0x547c('0x4d')](_0x414b9d)[_0x547c('0x2a')](handleEntityNotFound(_0xb86f5f,null))['then'](respondWithResult(_0xb86f5f,null))[_0x547c('0x4e')](handleError(_0xb86f5f,null));};exports[_0x547c('0x4f')]=function(_0xa005cc,_0x1ddf30){return db['MailQueueReport'][_0x547c('0x4f')](_0xa005cc['body'],{})['then'](respondWithResult(_0x1ddf30,0xc9))[_0x547c('0x4e')](handleError(_0x1ddf30,null));};exports[_0x547c('0x28')]=function(_0x3e3f52,_0x11a878){if(_0x3e3f52[_0x547c('0x50')]['id']){delete _0x3e3f52[_0x547c('0x50')]['id'];}return db[_0x547c('0x2f')][_0x547c('0x4d')]({'where':{'id':_0x3e3f52[_0x547c('0x4b')]['id']}})[_0x547c('0x2a')](handleEntityNotFound(_0x11a878,null))[_0x547c('0x2a')](saveUpdates(_0x3e3f52[_0x547c('0x50')],null))['then'](respondWithResult(_0x11a878,null))['catch'](handleError(_0x11a878,null));};exports[_0x547c('0x29')]=function(_0x21ea26,_0x48de6e){return db[_0x547c('0x2f')][_0x547c('0x4d')]({'where':{'id':_0x21ea26[_0x547c('0x4b')]['id']}})[_0x547c('0x2a')](handleEntityNotFound(_0x48de6e,null))[_0x547c('0x2a')](removeEntity(_0x48de6e,null))[_0x547c('0x4e')](handleError(_0x48de6e,null));};exports['describe']=function(_0x152982,_0x5258cf){return db[_0x547c('0x2f')][_0x547c('0x51')]()[_0x547c('0x2a')](respondWithResult(_0x5258cf,null))['catch'](handleError(_0x5258cf,null));};
\ No newline at end of file
index e61f4ee..9a99308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3376=['moment','request-promise','path','exports','MailQueueReport','uniqueid','lodash','util','api'];(function(_0x2ccc88,_0x131358){var _0x4a58fb=function(_0x2daa74){while(--_0x2daa74){_0x2ccc88['push'](_0x2ccc88['shift']());}};_0x4a58fb(++_0x131358);}(_0x3376,0xe7));var _0x6337=function(_0x3d015a,_0x3d6ecc){_0x3d015a=_0x3d015a-0x0;var _0x5d3829=_0x3376[_0x3d015a];return _0x5d3829;};'use strict';var _=require(_0x6337('0x0'));var util=require(_0x6337('0x1'));var logger=require('../../config/logger')(_0x6337('0x2'));var moment=require(_0x6337('0x3'));var BPromise=require('bluebird');var rp=require(_0x6337('0x4'));var fs=require('fs');var path=require(_0x6337('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailQueueReport.attributes');module[_0x6337('0x6')]=function(_0x34eb0d,_0x32cef0){return _0x34eb0d['define'](_0x6337('0x7'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0x6337('0x8'),'fields':[_0x6337('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd8b=['define','MailQueueReport','report_mail_queue','uniqueid','util','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports'];(function(_0x55f3f0,_0x1f4ad1){var _0x2c218b=function(_0x531d06){while(--_0x531d06){_0x55f3f0['push'](_0x55f3f0['shift']());}};_0x2c218b(++_0x1f4ad1);}(_0xfd8b,0x72));var _0xbfd8=function(_0x17de0a,_0x2514a9){_0x17de0a=_0x17de0a-0x0;var _0x18cf68=_0xfd8b[_0x17de0a];return _0x18cf68;};'use strict';var _=require('lodash');var util=require(_0xbfd8('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbfd8('0x1'));var fs=require('fs');var path=require(_0xbfd8('0x2'));var rimraf=require(_0xbfd8('0x3'));var config=require(_0xbfd8('0x4'));var attributes=require(_0xbfd8('0x5'));module[_0xbfd8('0x6')]=function(_0x4ce252,_0x511954){return _0x4ce252[_0xbfd8('0x7')](_0xbfd8('0x8'),attributes,{'tableName':_0xbfd8('0x9'),'paranoid':![],'indexes':[{'name':_0xbfd8('0xa'),'fields':[_0xbfd8('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index b384cbb..293f4ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['options','raw','UpdateMailQueueReport','where','attributes','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailQueueReport,\x20%s,\x20%s','MailQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateMailQueueReport','MailQueueReport','body'];(function(_0x701566,_0x7de6cb){var _0x64b6c9=function(_0x7481f7){while(--_0x7481f7){_0x701566['push'](_0x701566['shift']());}};_0x64b6c9(++_0x7de6cb);}(_0x2ef3,0xba));var _0x32ef=function(_0x572a0a,_0x411356){_0x572a0a=_0x572a0a-0x0;var _0x3a3682=_0x2ef3[_0x572a0a];return _0x3a3682;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}exports[_0x32ef('0x15')]=function(_0x1a9476){var _0x286bfb=this;return new Promise(function(_0x57863c,_0xbe37f6){return db[_0x32ef('0x16')]['create'](_0x1a9476[_0x32ef('0x17')],{'raw':_0x1a9476[_0x32ef('0x18')]?_0x1a9476[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![]})[_0x32ef('0xb')](function(_0x3aec05){logger['info'](_0x32ef('0x15'),_0x1a9476);logger['debug'](_0x32ef('0x15'),_0x1a9476,JSON[_0x32ef('0x10')](_0x3aec05));_0x57863c(_0x3aec05);})['catch'](function(_0x1af371){logger[_0x32ef('0x11')](_0x32ef('0x15'),_0x1af371['message'],_0x1a9476);_0xbe37f6(_0x286bfb['error'](0x1f4,_0x1af371[_0x32ef('0x13')]));});});};exports[_0x32ef('0x1a')]=function(_0x225feb){var _0x478bef=this;return new Promise(function(_0x59585f,_0x19ea6){return db['MailQueueReport']['update'](_0x225feb[_0x32ef('0x17')],{'raw':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1b')]||null:null,'attributes':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1c')]||null:null,'limit':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')]['limit']||null:null})[_0x32ef('0xb')](function(_0x2f5d06){logger['info'](_0x32ef('0x1a'),_0x225feb);logger[_0x32ef('0x1d')](_0x32ef('0x1a'),_0x225feb,JSON[_0x32ef('0x10')](_0x2f5d06));_0x59585f(_0x2f5d06);})['catch'](function(_0x10e38c){logger[_0x32ef('0x11')](_0x32ef('0x1a'),_0x10e38c[_0x32ef('0x13')],_0x225feb);_0x19ea6(_0x478bef[_0x32ef('0x11')](0x1f4,_0x10e38c[_0x32ef('0x13')]));});});};
\ No newline at end of file
+var _0x2ef3=['options','raw','UpdateMailQueueReport','where','attributes','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailQueueReport,\x20%s,\x20%s','MailQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateMailQueueReport','MailQueueReport','body'];(function(_0x2e8775,_0x310049){var _0x4cbf35=function(_0x103483){while(--_0x103483){_0x2e8775['push'](_0x2e8775['shift']());}};_0x4cbf35(++_0x310049);}(_0x2ef3,0xba));var _0x32ef=function(_0x194b6e,_0x201257){_0x194b6e=_0x194b6e-0x0;var _0x28bd64=_0x2ef3[_0x194b6e];return _0x28bd64;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}exports[_0x32ef('0x15')]=function(_0x1a9476){var _0x286bfb=this;return new Promise(function(_0x57863c,_0xbe37f6){return db[_0x32ef('0x16')]['create'](_0x1a9476[_0x32ef('0x17')],{'raw':_0x1a9476[_0x32ef('0x18')]?_0x1a9476[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![]})[_0x32ef('0xb')](function(_0x3aec05){logger['info'](_0x32ef('0x15'),_0x1a9476);logger['debug'](_0x32ef('0x15'),_0x1a9476,JSON[_0x32ef('0x10')](_0x3aec05));_0x57863c(_0x3aec05);})['catch'](function(_0x1af371){logger[_0x32ef('0x11')](_0x32ef('0x15'),_0x1af371['message'],_0x1a9476);_0xbe37f6(_0x286bfb['error'](0x1f4,_0x1af371[_0x32ef('0x13')]));});});};exports[_0x32ef('0x1a')]=function(_0x225feb){var _0x478bef=this;return new Promise(function(_0x59585f,_0x19ea6){return db['MailQueueReport']['update'](_0x225feb[_0x32ef('0x17')],{'raw':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1b')]||null:null,'attributes':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1c')]||null:null,'limit':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')]['limit']||null:null})[_0x32ef('0xb')](function(_0x2f5d06){logger['info'](_0x32ef('0x1a'),_0x225feb);logger[_0x32ef('0x1d')](_0x32ef('0x1a'),_0x225feb,JSON[_0x32ef('0x10')](_0x2f5d06));_0x59585f(_0x2f5d06);})['catch'](function(_0x10e38c){logger[_0x32ef('0x11')](_0x32ef('0x1a'),_0x10e38c[_0x32ef('0x13')],_0x225feb);_0x19ea6(_0x478bef[_0x32ef('0x11')](0x1f4,_0x10e38c[_0x32ef('0x13')]));});});};
\ No newline at end of file
index 828327d..3ee4c55 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(_0xf4da64,_0x1d073e){var _0xb910f4=function(_0x50d1aa){while(--_0x50d1aa){_0xf4da64['push'](_0xf4da64['shift']());}};_0xb910f4(++_0x1d073e);}(_0x70e0,0x17b));var _0x070e=function(_0x5630e5,_0x22d4d1){_0x5630e5=_0x5630e5-0x0;var _0x1d3d8f=_0x70e0[_0x5630e5];return _0x1d3d8f;};'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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0xcf82b2,_0x49ab9a){var _0x4275e9=function(_0x5b768f){while(--_0x5b768f){_0xcf82b2['push'](_0xcf82b2['shift']());}};_0x4275e9(++_0x49ab9a);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 15368a9..67390c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd404=['exports','STRING','BOOLEAN','INTEGER','INBOX','sequelize'];(function(_0xa57c50,_0x1c6754){var _0x2c55b4=function(_0x31122d){while(--_0x31122d){_0xa57c50['push'](_0xa57c50['shift']());}};_0x2c55b4(++_0x1c6754);}(_0xd404,0x15b));var _0x4d40=function(_0x52f0f2,_0x23e6e5){_0x52f0f2=_0x52f0f2-0x0;var _0x1d3112=_0xd404[_0x52f0f2];return _0x1d3112;};'use strict';var Sequelize=require(_0x4d40('0x0'));module[_0x4d40('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x4d40('0x2')]},'authentication':{'type':Sequelize[_0x4d40('0x3')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x4d40('0x2')]},'port':{'type':Sequelize[_0x4d40('0x4')]},'tls':{'type':Sequelize[_0x4d40('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x4d40('0x2')],'defaultValue':_0x4d40('0x5')},'connTimeout':{'type':Sequelize[_0x4d40('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x4d40('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0x4d40('0x2')]}};
\ No newline at end of file
+var _0xa74f=['BOOLEAN','INBOX','STRING','INTEGER'];(function(_0x162bc9,_0x5c117e){var _0x475e2d=function(_0x18c0e7){while(--_0x18c0e7){_0x162bc9['push'](_0x162bc9['shift']());}};_0x475e2d(++_0x5c117e);}(_0xa74f,0x9a));var _0xfa74=function(_0x95411e,_0x38b4c3){_0x95411e=_0x95411e-0x0;var _0x2c8718=_0xa74f[_0x95411e];return _0x2c8718;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0xfa74('0x0')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0xfa74('0x0')]},'password':{'type':Sequelize[_0xfa74('0x0')]},'port':{'type':Sequelize[_0xfa74('0x1')]},'tls':{'type':Sequelize[_0xfa74('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0xfa74('0x3')},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0xfa74('0x0')]}};
\ No newline at end of file
index bb084fe..dc3d510 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3296=['MailServerIn','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./mailServerIn.attributes','exports'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x3296,0xdd));var _0x6329=function(_0x5de713,_0x1c1ba1){_0x5de713=_0x5de713-0x0;var _0x1742a4=_0x3296[_0x5de713];return _0x1742a4;};'use strict';var _=require(_0x6329('0x0'));var util=require(_0x6329('0x1'));var logger=require(_0x6329('0x2'))(_0x6329('0x3'));var moment=require(_0x6329('0x4'));var BPromise=require(_0x6329('0x5'));var rp=require(_0x6329('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6329('0x7'));var config=require('../../config/environment');var attributes=require(_0x6329('0x8'));module[_0x6329('0x9')]=function(_0x4a2bed,_0x4ea955){return _0x4a2bed['define'](_0x6329('0xa'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd5c0=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','MailServerIn','mail_servers_in'];(function(_0x4f3398,_0x420c6a){var _0x4136c1=function(_0x4c00df){while(--_0x4c00df){_0x4f3398['push'](_0x4f3398['shift']());}};_0x4136c1(++_0x420c6a);}(_0xd5c0,0xf0));var _0x0d5c=function(_0x236470,_0x752a84){_0x236470=_0x236470-0x0;var _0x2b858d=_0xd5c0[_0x236470];return _0x2b858d;};'use strict';var _=require('lodash');var util=require(_0x0d5c('0x0'));var logger=require(_0x0d5c('0x1'))(_0x0d5c('0x2'));var moment=require(_0x0d5c('0x3'));var BPromise=require(_0x0d5c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0d5c('0x5'));var rimraf=require(_0x0d5c('0x6'));var config=require(_0x0d5c('0x7'));var attributes=require(_0x0d5c('0x8'));module[_0x0d5c('0x9')]=function(_0x20c2c9,_0x35bae0){return _0x20c2c9['define'](_0x0d5c('0xa'),attributes,{'tableName':_0x0d5c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8e30c2d..6ccbec7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d66=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','MailServerIn,\x20%s,\x20%s','message','result','catch','GetMailServerIn','MailServerIn','options','raw','where','attributes','map','include','model','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5d66,0x109));var _0x65d6=function(_0x12fd6f,_0x44b627){_0x12fd6f=_0x12fd6f-0x0;var _0x2c4593=_0x5d66[_0x12fd6f];return _0x2c4593;};'use strict';var _=require(_0x65d6('0x0'));var util=require('util');var moment=require(_0x65d6('0x1'));var BPromise=require(_0x65d6('0x2'));var rs=require(_0x65d6('0x3'));var fs=require('fs');var Redis=require(_0x65d6('0x4'));var db=require(_0x65d6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x65d6('0x6'))(_0x65d6('0x7'));var config=require(_0x65d6('0x8'));var jayson=require(_0x65d6('0x9'));var client=jayson[_0x65d6('0xa')][_0x65d6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x441b2c,_0x1a53a9,_0x454e0d){return new BPromise(function(_0x227de3,_0x31651b){return client[_0x65d6('0xc')](_0x441b2c,_0x454e0d)[_0x65d6('0xd')](function(_0x34cbfa){logger[_0x65d6('0xe')]('MailServerIn,\x20%s,\x20%s',_0x1a53a9,'request\x20sent');logger[_0x65d6('0xf')](_0x65d6('0x10'),_0x1a53a9,_0x65d6('0x11'),JSON['stringify'](_0x34cbfa));if(_0x34cbfa[_0x65d6('0x12')]){if(_0x34cbfa['error'][_0x65d6('0x13')]===0x1f4){logger['error'](_0x65d6('0x14'),_0x1a53a9,_0x34cbfa[_0x65d6('0x12')][_0x65d6('0x15')]);return _0x31651b(_0x34cbfa[_0x65d6('0x12')][_0x65d6('0x15')]);}logger[_0x65d6('0x12')](_0x65d6('0x14'),_0x1a53a9,_0x34cbfa[_0x65d6('0x12')][_0x65d6('0x15')]);return _0x227de3(_0x34cbfa[_0x65d6('0x12')][_0x65d6('0x15')]);}else{logger[_0x65d6('0xe')](_0x65d6('0x14'),_0x1a53a9,_0x65d6('0x11'));_0x227de3(_0x34cbfa[_0x65d6('0x16')][_0x65d6('0x15')]);}})[_0x65d6('0x17')](function(_0x236656){logger[_0x65d6('0x12')](_0x65d6('0x14'),_0x1a53a9,_0x236656);_0x31651b(_0x236656);});});}exports[_0x65d6('0x18')]=function(_0x343540){var _0x1ced1c=this;return new Promise(function(_0x1e46e7,_0x2c9e17){return db[_0x65d6('0x19')]['findAll']({'raw':_0x343540[_0x65d6('0x1a')]?_0x343540[_0x65d6('0x1a')][_0x65d6('0x1b')]===undefined?!![]:![]:!![],'where':_0x343540['options']?_0x343540[_0x65d6('0x1a')][_0x65d6('0x1c')]||null:null,'attributes':_0x343540[_0x65d6('0x1a')]?_0x343540[_0x65d6('0x1a')][_0x65d6('0x1d')]||null:null,'limit':_0x343540[_0x65d6('0x1a')]?_0x343540[_0x65d6('0x1a')]['limit']||null:null,'include':_0x343540[_0x65d6('0x1a')]?_0x343540[_0x65d6('0x1a')]['include']?_[_0x65d6('0x1e')](_0x343540[_0x65d6('0x1a')][_0x65d6('0x1f')],function(_0xec4fd1){return{'model':db[_0xec4fd1[_0x65d6('0x20')]],'as':_0xec4fd1['as'],'attributes':_0xec4fd1[_0x65d6('0x1d')],'include':_0xec4fd1[_0x65d6('0x1f')]?_[_0x65d6('0x1e')](_0xec4fd1[_0x65d6('0x1f')],function(_0x37725d){return{'model':db[_0x37725d[_0x65d6('0x20')]],'as':_0x37725d['as'],'attributes':_0x37725d[_0x65d6('0x1d')],'include':_0x37725d[_0x65d6('0x1f')]?_['map'](_0x37725d['include'],function(_0x5409cd){return{'model':db[_0x5409cd['model']],'as':_0x5409cd['as'],'attributes':_0x5409cd[_0x65d6('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3263fa){logger[_0x65d6('0xe')]('GetMailServerIn',_0x343540);logger['debug'](_0x65d6('0x18'),_0x343540,JSON[_0x65d6('0x21')](_0x3263fa));_0x1e46e7(_0x3263fa);})[_0x65d6('0x17')](function(_0x214633){logger['error']('GetMailServerIn',_0x214633['message'],_0x343540);_0x2c9e17(_0x1ced1c[_0x65d6('0x12')](0x1f4,_0x214633[_0x65d6('0x15')]));});});};
\ No newline at end of file
+var _0xa902=['error','message','result','catch','GetMailServerIn','findAll','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0xa902,0x8d));var _0x2a90=function(_0x33996f,_0x260902){_0x33996f=_0x33996f-0x0;var _0x5cf03c=_0xa902[_0x33996f];return _0x5cf03c;};'use strict';var _=require(_0x2a90('0x0'));var util=require(_0x2a90('0x1'));var moment=require(_0x2a90('0x2'));var BPromise=require(_0x2a90('0x3'));var rs=require(_0x2a90('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2a90('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2a90('0x6'));var config=require(_0x2a90('0x7'));var jayson=require(_0x2a90('0x8'));var client=jayson[_0x2a90('0x9')][_0x2a90('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25bcfc,_0x58369a,_0x4109e6){return new BPromise(function(_0x570659,_0x5ec2b9){return client[_0x2a90('0xb')](_0x25bcfc,_0x4109e6)[_0x2a90('0xc')](function(_0xe500bc){logger[_0x2a90('0xd')](_0x2a90('0xe'),_0x58369a,'request\x20sent');logger[_0x2a90('0xf')](_0x2a90('0x10'),_0x58369a,_0x2a90('0x11'),JSON[_0x2a90('0x12')](_0xe500bc));if(_0xe500bc['error']){if(_0xe500bc[_0x2a90('0x13')]['code']===0x1f4){logger[_0x2a90('0x13')]('MailServerIn,\x20%s,\x20%s',_0x58369a,_0xe500bc[_0x2a90('0x13')]['message']);return _0x5ec2b9(_0xe500bc[_0x2a90('0x13')][_0x2a90('0x14')]);}logger[_0x2a90('0x13')]('MailServerIn,\x20%s,\x20%s',_0x58369a,_0xe500bc['error']['message']);return _0x570659(_0xe500bc[_0x2a90('0x13')][_0x2a90('0x14')]);}else{logger['info'](_0x2a90('0xe'),_0x58369a,_0x2a90('0x11'));_0x570659(_0xe500bc[_0x2a90('0x15')][_0x2a90('0x14')]);}})[_0x2a90('0x16')](function(_0x37858e){logger[_0x2a90('0x13')](_0x2a90('0xe'),_0x58369a,_0x37858e);_0x5ec2b9(_0x37858e);});});}exports[_0x2a90('0x17')]=function(_0x5c3e4b){var _0x162f0b=this;return new Promise(function(_0x1d9a28,_0x4190ff){return db['MailServerIn'][_0x2a90('0x18')]({'raw':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1a')]===undefined?!![]:![]:!![],'where':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1b')]||null:null,'attributes':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1c')]||null:null,'limit':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')]['limit']||null:null,'include':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1d')]?_[_0x2a90('0x1e')](_0x5c3e4b['options'][_0x2a90('0x1d')],function(_0xd033d){return{'model':db[_0xd033d['model']],'as':_0xd033d['as'],'attributes':_0xd033d[_0x2a90('0x1c')],'include':_0xd033d[_0x2a90('0x1d')]?_[_0x2a90('0x1e')](_0xd033d[_0x2a90('0x1d')],function(_0x2a212c){return{'model':db[_0x2a212c[_0x2a90('0x1f')]],'as':_0x2a212c['as'],'attributes':_0x2a212c[_0x2a90('0x1c')],'include':_0x2a212c[_0x2a90('0x1d')]?_['map'](_0x2a212c[_0x2a90('0x1d')],function(_0x17f978){return{'model':db[_0x17f978[_0x2a90('0x1f')]],'as':_0x17f978['as'],'attributes':_0x17f978[_0x2a90('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x2a90('0xc')](function(_0x5208d8){logger['info'](_0x2a90('0x17'),_0x5c3e4b);logger['debug']('GetMailServerIn',_0x5c3e4b,JSON['stringify'](_0x5208d8));_0x1d9a28(_0x5208d8);})[_0x2a90('0x16')](function(_0x3c78f5){logger['error']('GetMailServerIn',_0x3c78f5[_0x2a90('0x14')],_0x5c3e4b);_0x4190ff(_0x162f0b['error'](0x1f4,_0x3c78f5[_0x2a90('0x14')]));});});};
\ No newline at end of file
index 28c88a0..0bd7168 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(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_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 _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0x7a54,0x106));var _0x47a5=function(_0x31c00e,_0x2df2b4){_0x31c00e=_0x31c00e-0x0;var _0x570bfc=_0x7a54[_0x31c00e];return _0x570bfc;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
index 971944a..6429a88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c7a=['STRING','INTEGER','BOOLEAN','sequelize','exports'];(function(_0x2a4620,_0x312797){var _0xdc1be6=function(_0xc205eb){while(--_0xc205eb){_0x2a4620['push'](_0x2a4620['shift']());}};_0xdc1be6(++_0x312797);}(_0x7c7a,0x1d4));var _0xa7c7=function(_0x24d7f4,_0x2e768e){_0x24d7f4=_0x24d7f4-0x0;var _0x12d77d=_0x7c7a[_0x24d7f4];return _0x12d77d;};'use strict';var Sequelize=require(_0xa7c7('0x0'));module[_0xa7c7('0x1')]={'description':{'type':Sequelize[_0xa7c7('0x2')]},'host':{'type':Sequelize[_0xa7c7('0x2')]},'user':{'type':Sequelize[_0xa7c7('0x2')]},'pass':{'type':Sequelize[_0xa7c7('0x2')]},'port':{'type':Sequelize[_0xa7c7('0x3')]},'secure':{'type':Sequelize[_0xa7c7('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0xa7c7('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3441=['BOOLEAN','sequelize','STRING','INTEGER'];(function(_0x817d9b,_0x3c37e3){var _0x2752e1=function(_0x2b434e){while(--_0x2b434e){_0x817d9b['push'](_0x817d9b['shift']());}};_0x2752e1(++_0x3c37e3);}(_0x3441,0xf9));var _0x1344=function(_0xccd329,_0xc7b4d6){_0xccd329=_0xccd329-0x0;var _0x1f815b=_0x3441[_0xccd329];return _0x1f815b;};'use strict';var Sequelize=require(_0x1344('0x0'));module['exports']={'description':{'type':Sequelize[_0x1344('0x1')]},'host':{'type':Sequelize[_0x1344('0x1')]},'user':{'type':Sequelize[_0x1344('0x1')]},'pass':{'type':Sequelize[_0x1344('0x1')]},'port':{'type':Sequelize[_0x1344('0x2')]},'secure':{'type':Sequelize[_0x1344('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x1344('0x1')]},'authentication':{'type':Sequelize[_0x1344('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 7444538..7468b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0de8=['destroy','sendStatus','name','send','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','MailServerOut','includeAll','include','findAll','rows','catch','params','keys','options','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','json','offset','undefined','count','limit','set','apply','reject','update','then'];(function(_0x5d1a71,_0x4b445d){var _0x53fa9a=function(_0x148508){while(--_0x148508){_0x5d1a71['push'](_0x5d1a71['shift']());}};_0x53fa9a(++_0x4b445d);}(_0x0de8,0x138));var _0x80de=function(_0x21fe98,_0x55db4c){_0x21fe98=_0x21fe98-0x0;var _0x19dde3=_0x0de8[_0x21fe98];return _0x19dde3;};'use strict';var emlformat=require(_0x80de('0x0'));var rimraf=require(_0x80de('0x1'));var zipdir=require(_0x80de('0x2'));var jsonpatch=require(_0x80de('0x3'));var rp=require(_0x80de('0x4'));var moment=require(_0x80de('0x5'));var BPromise=require(_0x80de('0x6'));var Mustache=require(_0x80de('0x7'));var util=require(_0x80de('0x8'));var path=require(_0x80de('0x9'));var sox=require(_0x80de('0xa'));var csv=require('to-csv');var ejs=require(_0x80de('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x80de('0xc'));var squel=require(_0x80de('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x80de('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x80de('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x80de('0x10'));var hardwareService=require(_0x80de('0x11'));var logger=require(_0x80de('0x12'))(_0x80de('0x13'));var utils=require(_0x80de('0x14'));var config=require(_0x80de('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5c756c,_0xe9ba9){_0xe9ba9=_0xe9ba9||0xcc;return function(_0x53cbfd){if(_0x53cbfd){return _0x5c756c['sendStatus'](_0xe9ba9);}return _0x5c756c[_0x80de('0x16')](_0xe9ba9)['end']();};}function respondWithResult(_0x42f536,_0x4ea261){_0x4ea261=_0x4ea261||0xc8;return function(_0x396f4e){if(_0x396f4e){return _0x42f536[_0x80de('0x16')](_0x4ea261)[_0x80de('0x17')](_0x396f4e);}};}function respondWithFilteredResult(_0x34bf41,_0x2f779b){return function(_0x2c5c58){if(_0x2c5c58){var _0x504e01=typeof _0x2f779b[_0x80de('0x18')]===_0x80de('0x19')&&typeof _0x2f779b['limit']==='undefined';var _0x5f458f=_0x2c5c58['count'];var _0x4d8f2b=_0x504e01?0x0:_0x2f779b['offset'];var _0x1e8b17=_0x504e01?_0x2c5c58[_0x80de('0x1a')]:_0x2f779b[_0x80de('0x18')]+_0x2f779b[_0x80de('0x1b')];var _0x23f875;if(_0x1e8b17>=_0x5f458f){_0x1e8b17=_0x5f458f;_0x23f875=0xc8;}else{_0x23f875=0xce;}_0x34bf41[_0x80de('0x16')](_0x23f875);return _0x34bf41[_0x80de('0x1c')]('Content-Range',_0x4d8f2b+'-'+_0x1e8b17+'/'+_0x5f458f)[_0x80de('0x17')](_0x2c5c58);}return null;};}function patchUpdates(_0x2d37d6){return function(_0x1f7c55){try{jsonpatch[_0x80de('0x1d')](_0x1f7c55,_0x2d37d6,!![]);}catch(_0x30fc16){return BPromise[_0x80de('0x1e')](_0x30fc16);}return _0x1f7c55['save']();};}function saveUpdates(_0xfeef13,_0x39933a){return function(_0x3bcd8b){if(_0x3bcd8b){return _0x3bcd8b[_0x80de('0x1f')](_0xfeef13)[_0x80de('0x20')](function(_0x4ebe3b){return _0x4ebe3b;});}return null;};}function removeEntity(_0x55d548,_0x2683cb){return function(_0x331325){if(_0x331325){return _0x331325[_0x80de('0x21')]()[_0x80de('0x20')](function(){_0x55d548['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x33b26a,_0x4f2f3b){return function(_0x52b89d){if(!_0x52b89d){_0x33b26a[_0x80de('0x22')](0x194);}return _0x52b89d;};}function handleError(_0x3b2f9c,_0x5aba11){_0x5aba11=_0x5aba11||0x1f4;return function(_0x55d7fa){logger['error'](_0x55d7fa['stack']);if(_0x55d7fa[_0x80de('0x23')]){delete _0x55d7fa[_0x80de('0x23')];}_0x3b2f9c[_0x80de('0x16')](_0x5aba11)[_0x80de('0x24')](_0x55d7fa);};}exports['index']=function(_0x286253,_0x16d77b){var _0x558e98={},_0x6ac2e5={},_0x17e136={'count':0x0,'rows':[]};var _0x359385=_['map'](db['MailServerOut'][_0x80de('0x25')],function(_0x1b07ad){return{'name':_0x1b07ad[_0x80de('0x26')],'type':_0x1b07ad[_0x80de('0x27')][_0x80de('0x28')]};});_0x6ac2e5[_0x80de('0x29')]=_[_0x80de('0x2a')](_0x359385,'name');_0x6ac2e5[_0x80de('0x2b')]=_['keys'](_0x286253['query']);_0x6ac2e5[_0x80de('0x2c')]=_[_0x80de('0x2d')](_0x6ac2e5['model'],_0x6ac2e5[_0x80de('0x2b')]);_0x558e98['attributes']=_['intersection'](_0x6ac2e5[_0x80de('0x29')],qs[_0x80de('0x2e')](_0x286253[_0x80de('0x2b')][_0x80de('0x2e')]));_0x558e98['attributes']=_0x558e98[_0x80de('0x2f')][_0x80de('0x30')]?_0x558e98[_0x80de('0x2f')]:_0x6ac2e5[_0x80de('0x29')];if(!_0x286253[_0x80de('0x2b')][_0x80de('0x31')](_0x80de('0x32'))){_0x558e98[_0x80de('0x1b')]=qs[_0x80de('0x1b')](_0x286253[_0x80de('0x2b')]['limit']);_0x558e98['offset']=qs[_0x80de('0x18')](_0x286253[_0x80de('0x2b')][_0x80de('0x18')]);}_0x558e98[_0x80de('0x33')]=qs['sort'](_0x286253['query'][_0x80de('0x34')]);_0x558e98[_0x80de('0x35')]=qs[_0x80de('0x2c')](_[_0x80de('0x36')](_0x286253[_0x80de('0x2b')],_0x6ac2e5[_0x80de('0x2c')]),_0x359385);if(_0x286253[_0x80de('0x2b')][_0x80de('0x37')]){_0x558e98['where']=_['merge'](_0x558e98['where'],{'$or':_[_0x80de('0x2a')](_0x359385,function(_0x56bbd4){if(_0x56bbd4['type']!=='VIRTUAL'){var _0x29e612={};_0x29e612[_0x56bbd4[_0x80de('0x23')]]={'$like':'%'+_0x286253['query'][_0x80de('0x37')]+'%'};return _0x29e612;}})});}_0x558e98=_[_0x80de('0x38')]({},_0x558e98,_0x286253['options']);var _0x3f9d70={'where':_0x558e98['where']};return db[_0x80de('0x39')][_0x80de('0x1a')](_0x3f9d70)[_0x80de('0x20')](function(_0x2f7089){_0x17e136[_0x80de('0x1a')]=_0x2f7089;if(_0x286253[_0x80de('0x2b')][_0x80de('0x3a')]){_0x558e98[_0x80de('0x3b')]=[{'all':!![]}];}return db[_0x80de('0x39')][_0x80de('0x3c')](_0x558e98);})[_0x80de('0x20')](function(_0x1eb9b9){_0x17e136[_0x80de('0x3d')]=_0x1eb9b9;return _0x17e136;})['then'](respondWithFilteredResult(_0x16d77b,_0x558e98))[_0x80de('0x3e')](handleError(_0x16d77b,null));};exports['show']=function(_0x334752,_0x2a89b6){var _0x45f9ab={'raw':!![],'where':{'id':_0x334752[_0x80de('0x3f')]['id']}},_0x4d3011={};_0x4d3011[_0x80de('0x29')]=_[_0x80de('0x40')](db[_0x80de('0x39')][_0x80de('0x25')]);_0x4d3011['query']=_['keys'](_0x334752['query']);_0x4d3011[_0x80de('0x2c')]=_['intersection'](_0x4d3011[_0x80de('0x29')],_0x4d3011[_0x80de('0x2b')]);_0x45f9ab[_0x80de('0x2f')]=_[_0x80de('0x2d')](_0x4d3011['model'],qs[_0x80de('0x2e')](_0x334752[_0x80de('0x2b')][_0x80de('0x2e')]));_0x45f9ab[_0x80de('0x2f')]=_0x45f9ab[_0x80de('0x2f')][_0x80de('0x30')]?_0x45f9ab[_0x80de('0x2f')]:_0x4d3011['model'];if(_0x334752[_0x80de('0x2b')]['includeAll']){_0x45f9ab[_0x80de('0x3b')]=[{'all':!![]}];}_0x45f9ab=_[_0x80de('0x38')]({},_0x45f9ab,_0x334752[_0x80de('0x41')]);return db[_0x80de('0x39')]['find'](_0x45f9ab)[_0x80de('0x20')](handleEntityNotFound(_0x2a89b6,null))['then'](respondWithResult(_0x2a89b6,null))[_0x80de('0x3e')](handleError(_0x2a89b6,null));};exports[_0x80de('0x42')]=function(_0x18c751,_0x1470b2){return db[_0x80de('0x39')][_0x80de('0x42')](_0x18c751[_0x80de('0x43')],{})[_0x80de('0x20')](respondWithResult(_0x1470b2,0xc9))[_0x80de('0x3e')](handleError(_0x1470b2,null));};exports[_0x80de('0x1f')]=function(_0x54996a,_0x4852aa){if(_0x54996a['body']['id']){delete _0x54996a[_0x80de('0x43')]['id'];}return db['MailServerOut'][_0x80de('0x44')]({'where':{'id':_0x54996a['params']['id']}})[_0x80de('0x20')](handleEntityNotFound(_0x4852aa,null))['then'](saveUpdates(_0x54996a[_0x80de('0x43')],null))[_0x80de('0x20')](respondWithResult(_0x4852aa,null))[_0x80de('0x3e')](handleError(_0x4852aa,null));};exports[_0x80de('0x21')]=function(_0x53da57,_0x3238a7){return db['MailServerOut']['find']({'where':{'id':_0x53da57[_0x80de('0x3f')]['id']}})[_0x80de('0x20')](handleEntityNotFound(_0x3238a7,null))[_0x80de('0x20')](removeEntity(_0x3238a7,null))['catch'](handleError(_0x3238a7,null));};
\ No newline at end of file
+var _0x8120=['lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','set','json','apply','reject','save','update','destroy','then','error','stack','send','map','MailServerOut','rawAttributes','fieldName','type','model','name','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filters','filter','where','merge','options','count','includeAll','include','findAll','catch','show','keys','create','body','find','params','eml-format','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x8120,0x15e));var _0x0812=function(_0x57b2c3,_0x1232f1){_0x57b2c3=_0x57b2c3-0x0;var _0x482fcc=_0x8120[_0x57b2c3];return _0x482fcc;};'use strict';var emlformat=require(_0x0812('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0812('0x1'));var rp=require(_0x0812('0x2'));var moment=require(_0x0812('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0812('0x4'));var util=require(_0x0812('0x5'));var path=require('path');var sox=require(_0x0812('0x6'));var csv=require(_0x0812('0x7'));var ejs=require(_0x0812('0x8'));var fs=require('fs');var fs_extra=require(_0x0812('0x9'));var _=require(_0x0812('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0812('0xb'));var deskjs=require(_0x0812('0xc'));var toCsv=require(_0x0812('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0812('0xd'));var authService=require(_0x0812('0xe'));var qs=require(_0x0812('0xf'));var as=require(_0x0812('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0812('0x11'))(_0x0812('0x12'));var utils=require(_0x0812('0x13'));var config=require(_0x0812('0x14'));var licenseUtil=require(_0x0812('0x15'));var db=require(_0x0812('0x16'))['db'];function respondWithStatusCode(_0x1f619c,_0x4a71eb){_0x4a71eb=_0x4a71eb||0xcc;return function(_0x25f3d6){if(_0x25f3d6){return _0x1f619c[_0x0812('0x17')](_0x4a71eb);}return _0x1f619c['status'](_0x4a71eb)[_0x0812('0x18')]();};}function respondWithResult(_0x4cea0c,_0xfbd73c){_0xfbd73c=_0xfbd73c||0xc8;return function(_0x384cf3){if(_0x384cf3){return _0x4cea0c[_0x0812('0x19')](_0xfbd73c)['json'](_0x384cf3);}};}function respondWithFilteredResult(_0x2a77db,_0x3129c4){return function(_0x47ce25){if(_0x47ce25){var _0x498f33=typeof _0x3129c4[_0x0812('0x1a')]==='undefined'&&typeof _0x3129c4[_0x0812('0x1b')]===_0x0812('0x1c');var _0x1fbe7e=_0x47ce25['count'];var _0x1cc69d=_0x498f33?0x0:_0x3129c4[_0x0812('0x1a')];var _0x3c8c13=_0x498f33?_0x47ce25['count']:_0x3129c4[_0x0812('0x1a')]+_0x3129c4[_0x0812('0x1b')];var _0x2384bf;if(_0x3c8c13>=_0x1fbe7e){_0x3c8c13=_0x1fbe7e;_0x2384bf=0xc8;}else{_0x2384bf=0xce;}_0x2a77db[_0x0812('0x19')](_0x2384bf);return _0x2a77db[_0x0812('0x1d')]('Content-Range',_0x1cc69d+'-'+_0x3c8c13+'/'+_0x1fbe7e)[_0x0812('0x1e')](_0x47ce25);}return null;};}function patchUpdates(_0x3d7102){return function(_0x1af390){try{jsonpatch[_0x0812('0x1f')](_0x1af390,_0x3d7102,!![]);}catch(_0x5578c7){return BPromise[_0x0812('0x20')](_0x5578c7);}return _0x1af390[_0x0812('0x21')]();};}function saveUpdates(_0x31ee3b,_0x1083ee){return function(_0x8fcf50){if(_0x8fcf50){return _0x8fcf50[_0x0812('0x22')](_0x31ee3b)['then'](function(_0x1929ec){return _0x1929ec;});}return null;};}function removeEntity(_0x25b406,_0x458e76){return function(_0x43d82e){if(_0x43d82e){return _0x43d82e[_0x0812('0x23')]()[_0x0812('0x24')](function(){_0x25b406[_0x0812('0x19')](0xcc)[_0x0812('0x18')]();});}};}function handleEntityNotFound(_0x15228c,_0x227623){return function(_0x4399c8){if(!_0x4399c8){_0x15228c[_0x0812('0x17')](0x194);}return _0x4399c8;};}function handleError(_0x56f54a,_0x5f4424){_0x5f4424=_0x5f4424||0x1f4;return function(_0x50c0e1){logger[_0x0812('0x25')](_0x50c0e1[_0x0812('0x26')]);if(_0x50c0e1['name']){delete _0x50c0e1['name'];}_0x56f54a[_0x0812('0x19')](_0x5f4424)[_0x0812('0x27')](_0x50c0e1);};}exports['index']=function(_0x3190cd,_0x3d47a0){var _0x33d7b5={},_0x439ea8={},_0x377eae={'count':0x0,'rows':[]};var _0x5b6d3f=_[_0x0812('0x28')](db[_0x0812('0x29')][_0x0812('0x2a')],function(_0x366779){return{'name':_0x366779[_0x0812('0x2b')],'type':_0x366779[_0x0812('0x2c')]['key']};});_0x439ea8[_0x0812('0x2d')]=_[_0x0812('0x28')](_0x5b6d3f,_0x0812('0x2e'));_0x439ea8[_0x0812('0x2f')]=_['keys'](_0x3190cd['query']);_0x439ea8['filters']=_[_0x0812('0x30')](_0x439ea8[_0x0812('0x2d')],_0x439ea8[_0x0812('0x2f')]);_0x33d7b5[_0x0812('0x31')]=_[_0x0812('0x30')](_0x439ea8[_0x0812('0x2d')],qs[_0x0812('0x32')](_0x3190cd[_0x0812('0x2f')]['fields']));_0x33d7b5['attributes']=_0x33d7b5[_0x0812('0x31')][_0x0812('0x33')]?_0x33d7b5[_0x0812('0x31')]:_0x439ea8[_0x0812('0x2d')];if(!_0x3190cd[_0x0812('0x2f')][_0x0812('0x34')]('nolimit')){_0x33d7b5['limit']=qs[_0x0812('0x1b')](_0x3190cd[_0x0812('0x2f')][_0x0812('0x1b')]);_0x33d7b5[_0x0812('0x1a')]=qs['offset'](_0x3190cd['query'][_0x0812('0x1a')]);}_0x33d7b5[_0x0812('0x35')]=qs[_0x0812('0x36')](_0x3190cd[_0x0812('0x2f')][_0x0812('0x36')]);_0x33d7b5['where']=qs['filters'](_[_0x0812('0x37')](_0x3190cd[_0x0812('0x2f')],_0x439ea8[_0x0812('0x38')]),_0x5b6d3f);if(_0x3190cd[_0x0812('0x2f')][_0x0812('0x39')]){_0x33d7b5[_0x0812('0x3a')]=_[_0x0812('0x3b')](_0x33d7b5[_0x0812('0x3a')],{'$or':_['map'](_0x5b6d3f,function(_0x4d67ec){if(_0x4d67ec[_0x0812('0x2c')]!=='VIRTUAL'){var _0x35f478={};_0x35f478[_0x4d67ec['name']]={'$like':'%'+_0x3190cd['query']['filter']+'%'};return _0x35f478;}})});}_0x33d7b5=_['merge']({},_0x33d7b5,_0x3190cd[_0x0812('0x3c')]);var _0x299e62={'where':_0x33d7b5[_0x0812('0x3a')]};return db[_0x0812('0x29')]['count'](_0x299e62)['then'](function(_0x5c0c70){_0x377eae[_0x0812('0x3d')]=_0x5c0c70;if(_0x3190cd['query'][_0x0812('0x3e')]){_0x33d7b5[_0x0812('0x3f')]=[{'all':!![]}];}return db[_0x0812('0x29')][_0x0812('0x40')](_0x33d7b5);})[_0x0812('0x24')](function(_0x12b5dc){_0x377eae['rows']=_0x12b5dc;return _0x377eae;})[_0x0812('0x24')](respondWithFilteredResult(_0x3d47a0,_0x33d7b5))[_0x0812('0x41')](handleError(_0x3d47a0,null));};exports[_0x0812('0x42')]=function(_0x395b98,_0x3dad3e){var _0x3fdd3d={'raw':!![],'where':{'id':_0x395b98['params']['id']}},_0x544152={};_0x544152['model']=_[_0x0812('0x43')](db['MailServerOut'][_0x0812('0x2a')]);_0x544152[_0x0812('0x2f')]=_['keys'](_0x395b98[_0x0812('0x2f')]);_0x544152['filters']=_['intersection'](_0x544152[_0x0812('0x2d')],_0x544152[_0x0812('0x2f')]);_0x3fdd3d[_0x0812('0x31')]=_[_0x0812('0x30')](_0x544152[_0x0812('0x2d')],qs[_0x0812('0x32')](_0x395b98['query']['fields']));_0x3fdd3d[_0x0812('0x31')]=_0x3fdd3d[_0x0812('0x31')][_0x0812('0x33')]?_0x3fdd3d[_0x0812('0x31')]:_0x544152[_0x0812('0x2d')];if(_0x395b98[_0x0812('0x2f')]['includeAll']){_0x3fdd3d[_0x0812('0x3f')]=[{'all':!![]}];}_0x3fdd3d=_['merge']({},_0x3fdd3d,_0x395b98[_0x0812('0x3c')]);return db[_0x0812('0x29')]['find'](_0x3fdd3d)[_0x0812('0x24')](handleEntityNotFound(_0x3dad3e,null))[_0x0812('0x24')](respondWithResult(_0x3dad3e,null))[_0x0812('0x41')](handleError(_0x3dad3e,null));};exports[_0x0812('0x44')]=function(_0x4800f3,_0x21df0d){return db[_0x0812('0x29')][_0x0812('0x44')](_0x4800f3['body'],{})[_0x0812('0x24')](respondWithResult(_0x21df0d,0xc9))['catch'](handleError(_0x21df0d,null));};exports['update']=function(_0xad93f7,_0x40f234){if(_0xad93f7[_0x0812('0x45')]['id']){delete _0xad93f7[_0x0812('0x45')]['id'];}return db[_0x0812('0x29')][_0x0812('0x46')]({'where':{'id':_0xad93f7[_0x0812('0x47')]['id']}})[_0x0812('0x24')](handleEntityNotFound(_0x40f234,null))[_0x0812('0x24')](saveUpdates(_0xad93f7[_0x0812('0x45')],null))[_0x0812('0x24')](respondWithResult(_0x40f234,null))[_0x0812('0x41')](handleError(_0x40f234,null));};exports[_0x0812('0x23')]=function(_0x59ed45,_0x5823ce){return db[_0x0812('0x29')]['find']({'where':{'id':_0x59ed45[_0x0812('0x47')]['id']}})[_0x0812('0x24')](handleEntityNotFound(_0x5823ce,null))[_0x0812('0x24')](removeEntity(_0x5823ce,null))['catch'](handleError(_0x5823ce,null));};
\ No newline at end of file
index b0e0f66..3909fd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0207=['../../config/environment','exports','define','MailServerOut','mail_servers_out','lodash','util','moment','request-promise','rimraf'];(function(_0x3f9488,_0x1c3e1f){var _0x4813a1=function(_0x123383){while(--_0x123383){_0x3f9488['push'](_0x3f9488['shift']());}};_0x4813a1(++_0x1c3e1f);}(_0x0207,0xa5));var _0x7020=function(_0x396583,_0x1049e3){_0x396583=_0x396583-0x0;var _0x3af08e=_0x0207[_0x396583];return _0x3af08e;};'use strict';var _=require(_0x7020('0x0'));var util=require(_0x7020('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x7020('0x2'));var BPromise=require('bluebird');var rp=require(_0x7020('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7020('0x4'));var config=require(_0x7020('0x5'));var attributes=require('./mailServerOut.attributes');module[_0x7020('0x6')]=function(_0x4b2abe,_0xc4046){return _0x4b2abe[_0x7020('0x7')](_0x7020('0x8'),attributes,{'tableName':_0x7020('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3cc2=['path','rimraf','../../config/environment','./mailServerOut.attributes','define','MailServerOut','util','api','moment','bluebird','request-promise'];(function(_0x38d6d1,_0x482b6d){var _0x163388=function(_0x2db4c1){while(--_0x2db4c1){_0x38d6d1['push'](_0x38d6d1['shift']());}};_0x163388(++_0x482b6d);}(_0x3cc2,0x124));var _0x23cc=function(_0x2f9a8d,_0xf9d32a){_0x2f9a8d=_0x2f9a8d-0x0;var _0xf8dc7e=_0x3cc2[_0x2f9a8d];return _0xf8dc7e;};'use strict';var _=require('lodash');var util=require(_0x23cc('0x0'));var logger=require('../../config/logger')(_0x23cc('0x1'));var moment=require(_0x23cc('0x2'));var BPromise=require(_0x23cc('0x3'));var rp=require(_0x23cc('0x4'));var fs=require('fs');var path=require(_0x23cc('0x5'));var rimraf=require(_0x23cc('0x6'));var config=require(_0x23cc('0x7'));var attributes=require(_0x23cc('0x8'));module['exports']=function(_0x3691ae,_0xe21510){return _0x3691ae[_0x23cc('0x9')](_0x23cc('0xa'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 03d37c9..993e6dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','MailServerOut,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0xcc586c,_0x4396f){var _0x201bcb=function(_0x3dcf3a){while(--_0x3dcf3a){_0xcc586c['push'](_0xcc586c['shift']());}};_0x201bcb(++_0x4396f);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x5f66[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('MailServerOut,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
+var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','MailServerOut,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x133608,_0x1006e4){var _0x284c57=function(_0x3b69c9){while(--_0x3b69c9){_0x133608['push'](_0x133608['shift']());}};_0x284c57(++_0x1006e4);}(_0x5f66,0x1a0));var _0x65f6=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x5f66[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('MailServerOut,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
index abafb86..9bc10ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5418=['../../components/interaction/service','get','isAuthenticated','/describe','describe','show','post','create','/:id','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service'];(function(_0x38bd36,_0x447e84){var _0x237b83=function(_0x1f1ac1){while(--_0x1f1ac1){_0x38bd36['push'](_0x38bd36['shift']());}};_0x237b83(++_0x447e84);}(_0x5418,0x12c));var _0x8541=function(_0x31b631,_0xe1ea30){_0x31b631=_0x31b631-0x0;var _0x108249=_0x5418[_0x31b631];return _0x108249;};'use strict';var multer=require(_0x8541('0x0'));var util=require(_0x8541('0x1'));var path=require(_0x8541('0x2'));var timeout=require('connect-timeout');var express=require(_0x8541('0x3'));var router=express['Router']();var fs_extra=require(_0x8541('0x4'));var auth=require(_0x8541('0x5'));var interaction=require(_0x8541('0x6'));var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0x8541('0x7')]('/',auth[_0x8541('0x8')](),controller['index']);router[_0x8541('0x7')](_0x8541('0x9'),auth[_0x8541('0x8')](),controller[_0x8541('0xa')]);router[_0x8541('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x8541('0xb')]);router[_0x8541('0xc')]('/',auth[_0x8541('0x8')](),controller[_0x8541('0xd')]);router['put'](_0x8541('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x8541('0xf')](_0x8541('0xe'),auth['isAuthenticated'](),controller[_0x8541('0x10')]);module[_0x8541('0x11')]=router;
\ No newline at end of file
+var _0x00f8=['describe','show','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','./mailSubstatus.controller','get','isAuthenticated','index','/describe'];(function(_0x30bccc,_0x3dca5c){var _0x137dcb=function(_0x4ad7d7){while(--_0x4ad7d7){_0x30bccc['push'](_0x30bccc['shift']());}};_0x137dcb(++_0x3dca5c);}(_0x00f8,0xaa));var _0x800f=function(_0x57306c,_0xdeff85){_0x57306c=_0x57306c-0x0;var _0x413cfb=_0x00f8[_0x57306c];return _0x413cfb;};'use strict';var multer=require('multer');var util=require(_0x800f('0x0'));var path=require(_0x800f('0x1'));var timeout=require(_0x800f('0x2'));var express=require(_0x800f('0x3'));var router=express[_0x800f('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(_0x800f('0x5'));router[_0x800f('0x6')]('/',auth[_0x800f('0x7')](),controller[_0x800f('0x8')]);router['get'](_0x800f('0x9'),auth[_0x800f('0x7')](),controller[_0x800f('0xa')]);router[_0x800f('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x800f('0xb')]);router[_0x800f('0xc')]('/',auth[_0x800f('0x7')](),controller[_0x800f('0xd')]);router[_0x800f('0xe')](_0x800f('0xf'),auth['isAuthenticated'](),controller[_0x800f('0x10')]);router[_0x800f('0x11')](_0x800f('0xf'),auth['isAuthenticated'](),controller[_0x800f('0x12')]);module[_0x800f('0x13')]=router;
\ No newline at end of file
index 4c5cd4c..241e50c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb65=['exports','STRING'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0xfb65,0x82));var _0x5fb6=function(_0x690346,_0x40dc57){_0x690346=_0x690346-0x0;var _0x5e4dab=_0xfb65[_0x690346];return _0x5e4dab;};'use strict';var Sequelize=require('sequelize');module[_0x5fb6('0x0')]={'name':{'type':Sequelize[_0x5fb6('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x5fb6('0x1')]}};
\ No newline at end of file
+var _0xfc46=['name','sequelize','STRING'];(function(_0x2d2282,_0x1b736d){var _0x2eafea=function(_0x13a89b){while(--_0x13a89b){_0x2d2282['push'](_0x2d2282['shift']());}};_0x2eafea(++_0x1b736d);}(_0xfc46,0x9a));var _0x6fc4=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xfc46[_0x5e3b04];return _0x1fc44d;};'use strict';var Sequelize=require(_0x6fc4('0x0'));module['exports']={'name':{'type':Sequelize[_0x6fc4('0x1')],'unique':_0x6fc4('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x6fc4('0x1')]}};
\ No newline at end of file
index 5f34a36..e524e98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e5a=['moment','bluebird','util','path','sox','to-csv','fs-extra','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','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','error','name','send','MailSubstatus','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','findAll','rows','catch','show','params','length','includeAll','merge','options','create','body','find','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x3fdaff,_0x133c74){var _0xa6bc4e=function(_0x2aa5f0){while(--_0x2aa5f0){_0x3fdaff['push'](_0x3fdaff['shift']());}};_0xa6bc4e(++_0x133c74);}(_0x4e5a,0x16e));var _0xa4e5=function(_0x44c844,_0x1e3d7d){_0x44c844=_0x44c844-0x0;var _0x1d51b7=_0x4e5a[_0x44c844];return _0x1d51b7;};'use strict';var emlformat=require(_0xa4e5('0x0'));var rimraf=require(_0xa4e5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa4e5('0x2'));var rp=require(_0xa4e5('0x3'));var moment=require(_0xa4e5('0x4'));var BPromise=require(_0xa4e5('0x5'));var Mustache=require('mustache');var util=require(_0xa4e5('0x6'));var path=require(_0xa4e5('0x7'));var sox=require(_0xa4e5('0x8'));var csv=require(_0xa4e5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa4e5('0xa'));var _=require('lodash');var squel=require(_0xa4e5('0xb'));var crypto=require(_0xa4e5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa4e5('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa4e5('0xe'));var Papa=require(_0xa4e5('0xf'));var Redis=require(_0xa4e5('0x10'));var authService=require(_0xa4e5('0x11'));var qs=require(_0xa4e5('0x12'));var as=require(_0xa4e5('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa4e5('0x14'));var utils=require(_0xa4e5('0x15'));var config=require(_0xa4e5('0x16'));var licenseUtil=require(_0xa4e5('0x17'));var db=require(_0xa4e5('0x18'))['db'];function respondWithStatusCode(_0x1439c1,_0x4396ec){_0x4396ec=_0x4396ec||0xcc;return function(_0x201866){if(_0x201866){return _0x1439c1[_0xa4e5('0x19')](_0x4396ec);}return _0x1439c1[_0xa4e5('0x1a')](_0x4396ec)[_0xa4e5('0x1b')]();};}function respondWithResult(_0x322863,_0x3dc96e){_0x3dc96e=_0x3dc96e||0xc8;return function(_0x251c48){if(_0x251c48){return _0x322863['status'](_0x3dc96e)[_0xa4e5('0x1c')](_0x251c48);}};}function respondWithFilteredResult(_0x3d88ce,_0x28f1b5){return function(_0x1c091a){if(_0x1c091a){var _0x595eb9=typeof _0x28f1b5['offset']===_0xa4e5('0x1d')&&typeof _0x28f1b5[_0xa4e5('0x1e')]===_0xa4e5('0x1d');var _0x4eb65b=_0x1c091a[_0xa4e5('0x1f')];var _0x517f42=_0x595eb9?0x0:_0x28f1b5[_0xa4e5('0x20')];var _0x68091b=_0x595eb9?_0x1c091a[_0xa4e5('0x1f')]:_0x28f1b5[_0xa4e5('0x20')]+_0x28f1b5['limit'];var _0x11c797;if(_0x68091b>=_0x4eb65b){_0x68091b=_0x4eb65b;_0x11c797=0xc8;}else{_0x11c797=0xce;}_0x3d88ce[_0xa4e5('0x1a')](_0x11c797);return _0x3d88ce[_0xa4e5('0x21')](_0xa4e5('0x22'),_0x517f42+'-'+_0x68091b+'/'+_0x4eb65b)[_0xa4e5('0x1c')](_0x1c091a);}return null;};}function patchUpdates(_0x22c381){return function(_0x541ef5){try{jsonpatch[_0xa4e5('0x23')](_0x541ef5,_0x22c381,!![]);}catch(_0x1238d0){return BPromise['reject'](_0x1238d0);}return _0x541ef5[_0xa4e5('0x24')]();};}function saveUpdates(_0x371bf1,_0x2e9b77){return function(_0x12511c){if(_0x12511c){return _0x12511c[_0xa4e5('0x25')](_0x371bf1)[_0xa4e5('0x26')](function(_0x4ff47b){return _0x4ff47b;});}return null;};}function removeEntity(_0x1a359d,_0x2a2130){return function(_0x46280d){if(_0x46280d){return _0x46280d[_0xa4e5('0x27')]()[_0xa4e5('0x26')](function(){_0x1a359d['status'](0xcc)[_0xa4e5('0x1b')]();});}};}function handleEntityNotFound(_0x1631c7,_0x11a585){return function(_0x292b5d){if(!_0x292b5d){_0x1631c7['sendStatus'](0x194);}return _0x292b5d;};}function handleError(_0x51d9a4,_0xcb84df){_0xcb84df=_0xcb84df||0x1f4;return function(_0x5a526f){logger[_0xa4e5('0x28')](_0x5a526f['stack']);if(_0x5a526f[_0xa4e5('0x29')]){delete _0x5a526f['name'];}_0x51d9a4[_0xa4e5('0x1a')](_0xcb84df)[_0xa4e5('0x2a')](_0x5a526f);};}exports['index']=function(_0x11f87f,_0x18cefa){var _0x447c06={},_0x45c79e={},_0x316855={'count':0x0,'rows':[]};var _0x4676f7=_['map'](db[_0xa4e5('0x2b')][_0xa4e5('0x2c')],function(_0x7c7abc){return{'name':_0x7c7abc[_0xa4e5('0x2d')],'type':_0x7c7abc[_0xa4e5('0x2e')]['key']};});_0x45c79e[_0xa4e5('0x2f')]=_[_0xa4e5('0x30')](_0x4676f7,_0xa4e5('0x29'));_0x45c79e[_0xa4e5('0x31')]=_[_0xa4e5('0x32')](_0x11f87f['query']);_0x45c79e[_0xa4e5('0x33')]=_[_0xa4e5('0x34')](_0x45c79e[_0xa4e5('0x2f')],_0x45c79e['query']);_0x447c06[_0xa4e5('0x35')]=_[_0xa4e5('0x34')](_0x45c79e[_0xa4e5('0x2f')],qs[_0xa4e5('0x36')](_0x11f87f[_0xa4e5('0x31')]['fields']));_0x447c06['attributes']=_0x447c06[_0xa4e5('0x35')]['length']?_0x447c06[_0xa4e5('0x35')]:_0x45c79e['model'];if(!_0x11f87f[_0xa4e5('0x31')][_0xa4e5('0x37')](_0xa4e5('0x38'))){_0x447c06[_0xa4e5('0x1e')]=qs[_0xa4e5('0x1e')](_0x11f87f[_0xa4e5('0x31')]['limit']);_0x447c06['offset']=qs[_0xa4e5('0x20')](_0x11f87f['query']['offset']);}_0x447c06[_0xa4e5('0x39')]=qs['sort'](_0x11f87f['query'][_0xa4e5('0x3a')]);_0x447c06[_0xa4e5('0x3b')]=qs[_0xa4e5('0x33')](_['pick'](_0x11f87f[_0xa4e5('0x31')],_0x45c79e[_0xa4e5('0x33')]),_0x4676f7);if(_0x11f87f['query'][_0xa4e5('0x3c')]){_0x447c06['where']=_['merge'](_0x447c06[_0xa4e5('0x3b')],{'$or':_[_0xa4e5('0x30')](_0x4676f7,function(_0x4fe4a6){if(_0x4fe4a6[_0xa4e5('0x2e')]!==_0xa4e5('0x3d')){var _0x25bbf3={};_0x25bbf3[_0x4fe4a6[_0xa4e5('0x29')]]={'$like':'%'+_0x11f87f[_0xa4e5('0x31')]['filter']+'%'};return _0x25bbf3;}})});}_0x447c06=_['merge']({},_0x447c06,_0x11f87f['options']);var _0x40fbfd={'where':_0x447c06[_0xa4e5('0x3b')]};return db['MailSubstatus'][_0xa4e5('0x1f')](_0x40fbfd)[_0xa4e5('0x26')](function(_0x260d1b){_0x316855['count']=_0x260d1b;if(_0x11f87f['query']['includeAll']){_0x447c06['include']=[{'all':!![]}];}return db[_0xa4e5('0x2b')][_0xa4e5('0x3e')](_0x447c06);})['then'](function(_0x4330b4){_0x316855[_0xa4e5('0x3f')]=_0x4330b4;return _0x316855;})[_0xa4e5('0x26')](respondWithFilteredResult(_0x18cefa,_0x447c06))[_0xa4e5('0x40')](handleError(_0x18cefa,null));};exports[_0xa4e5('0x41')]=function(_0x4c8046,_0x3b4d6d){var _0x1c6b48={'raw':!![],'where':{'id':_0x4c8046[_0xa4e5('0x42')]['id']}},_0x1db917={};_0x1db917[_0xa4e5('0x2f')]=_['keys'](db[_0xa4e5('0x2b')][_0xa4e5('0x2c')]);_0x1db917[_0xa4e5('0x31')]=_[_0xa4e5('0x32')](_0x4c8046[_0xa4e5('0x31')]);_0x1db917['filters']=_[_0xa4e5('0x34')](_0x1db917['model'],_0x1db917[_0xa4e5('0x31')]);_0x1c6b48[_0xa4e5('0x35')]=_['intersection'](_0x1db917[_0xa4e5('0x2f')],qs[_0xa4e5('0x36')](_0x4c8046['query'][_0xa4e5('0x36')]));_0x1c6b48[_0xa4e5('0x35')]=_0x1c6b48[_0xa4e5('0x35')][_0xa4e5('0x43')]?_0x1c6b48[_0xa4e5('0x35')]:_0x1db917[_0xa4e5('0x2f')];if(_0x4c8046['query'][_0xa4e5('0x44')]){_0x1c6b48['include']=[{'all':!![]}];}_0x1c6b48=_[_0xa4e5('0x45')]({},_0x1c6b48,_0x4c8046[_0xa4e5('0x46')]);return db[_0xa4e5('0x2b')]['find'](_0x1c6b48)[_0xa4e5('0x26')](handleEntityNotFound(_0x3b4d6d,null))[_0xa4e5('0x26')](respondWithResult(_0x3b4d6d,null))['catch'](handleError(_0x3b4d6d,null));};exports[_0xa4e5('0x47')]=function(_0x1b620f,_0x396a18){return db[_0xa4e5('0x2b')][_0xa4e5('0x47')](_0x1b620f['body'],{})[_0xa4e5('0x26')](respondWithResult(_0x396a18,0xc9))[_0xa4e5('0x40')](handleError(_0x396a18,null));};exports[_0xa4e5('0x25')]=function(_0x3fe868,_0x43b1fb){if(_0x3fe868['body']['id']){delete _0x3fe868[_0xa4e5('0x48')]['id'];}return db[_0xa4e5('0x2b')][_0xa4e5('0x49')]({'where':{'id':_0x3fe868[_0xa4e5('0x42')]['id']}})[_0xa4e5('0x26')](handleEntityNotFound(_0x43b1fb,null))[_0xa4e5('0x26')](saveUpdates(_0x3fe868['body'],null))[_0xa4e5('0x26')](respondWithResult(_0x43b1fb,null))[_0xa4e5('0x40')](handleError(_0x43b1fb,null));};exports[_0xa4e5('0x27')]=function(_0x5d36d9,_0x28cf34){return db[_0xa4e5('0x2b')][_0xa4e5('0x49')]({'where':{'id':_0x5d36d9[_0xa4e5('0x42')]['id']}})['then'](handleEntityNotFound(_0x28cf34,null))[_0xa4e5('0x26')](removeEntity(_0x28cf34,null))['catch'](handleError(_0x28cf34,null));};exports['describe']=function(_0x563cfb,_0x3dd3cd){return db['MailSubstatus']['describe']()['then'](respondWithResult(_0x3dd3cd,null))['catch'](handleError(_0x3dd3cd,null));};
\ No newline at end of file
+var _0x2a50=['MailSubstatus','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','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','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x2a50,0x106));var _0x02a5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2a50[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x02a5('0x0'));var zipdir=require(_0x02a5('0x1'));var jsonpatch=require(_0x02a5('0x2'));var rp=require(_0x02a5('0x3'));var moment=require(_0x02a5('0x4'));var BPromise=require(_0x02a5('0x5'));var Mustache=require('mustache');var util=require(_0x02a5('0x6'));var path=require(_0x02a5('0x7'));var sox=require('sox');var csv=require(_0x02a5('0x8'));var ejs=require(_0x02a5('0x9'));var fs=require('fs');var fs_extra=require(_0x02a5('0xa'));var _=require(_0x02a5('0xb'));var squel=require(_0x02a5('0xc'));var crypto=require('crypto');var jsforce=require(_0x02a5('0xd'));var deskjs=require(_0x02a5('0xe'));var toCsv=require(_0x02a5('0x8'));var querystring=require(_0x02a5('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x02a5('0x10'));var qs=require(_0x02a5('0x11'));var as=require(_0x02a5('0x12'));var hardwareService=require(_0x02a5('0x13'));var logger=require(_0x02a5('0x14'))(_0x02a5('0x15'));var utils=require(_0x02a5('0x16'));var config=require(_0x02a5('0x17'));var licenseUtil=require(_0x02a5('0x18'));var db=require(_0x02a5('0x19'))['db'];function respondWithStatusCode(_0x4c1be4,_0x466090){_0x466090=_0x466090||0xcc;return function(_0x9f4478){if(_0x9f4478){return _0x4c1be4[_0x02a5('0x1a')](_0x466090);}return _0x4c1be4['status'](_0x466090)[_0x02a5('0x1b')]();};}function respondWithResult(_0x219b99,_0x1af199){_0x1af199=_0x1af199||0xc8;return function(_0x5cfc94){if(_0x5cfc94){return _0x219b99[_0x02a5('0x1c')](_0x1af199)[_0x02a5('0x1d')](_0x5cfc94);}};}function respondWithFilteredResult(_0x56bb05,_0x5e4e83){return function(_0x458c46){if(_0x458c46){var _0x515cb1=typeof _0x5e4e83[_0x02a5('0x1e')]==='undefined'&&typeof _0x5e4e83[_0x02a5('0x1f')]===_0x02a5('0x20');var _0x35a086=_0x458c46[_0x02a5('0x21')];var _0x5e9852=_0x515cb1?0x0:_0x5e4e83['offset'];var _0x4fbd9e=_0x515cb1?_0x458c46['count']:_0x5e4e83[_0x02a5('0x1e')]+_0x5e4e83[_0x02a5('0x1f')];var _0x28b5c6;if(_0x4fbd9e>=_0x35a086){_0x4fbd9e=_0x35a086;_0x28b5c6=0xc8;}else{_0x28b5c6=0xce;}_0x56bb05[_0x02a5('0x1c')](_0x28b5c6);return _0x56bb05[_0x02a5('0x22')](_0x02a5('0x23'),_0x5e9852+'-'+_0x4fbd9e+'/'+_0x35a086)[_0x02a5('0x1d')](_0x458c46);}return null;};}function patchUpdates(_0x350407){return function(_0x4d47a6){try{jsonpatch[_0x02a5('0x24')](_0x4d47a6,_0x350407,!![]);}catch(_0x113bfb){return BPromise[_0x02a5('0x25')](_0x113bfb);}return _0x4d47a6[_0x02a5('0x26')]();};}function saveUpdates(_0x4a6f17,_0x355ccc){return function(_0x4023d5){if(_0x4023d5){return _0x4023d5['update'](_0x4a6f17)[_0x02a5('0x27')](function(_0x5998e3){return _0x5998e3;});}return null;};}function removeEntity(_0x524cb,_0x5eb14f){return function(_0x4aac6c){if(_0x4aac6c){return _0x4aac6c[_0x02a5('0x28')]()[_0x02a5('0x27')](function(){_0x524cb[_0x02a5('0x1c')](0xcc)[_0x02a5('0x1b')]();});}};}function handleEntityNotFound(_0x334776,_0x30a8ea){return function(_0x33e3e4){if(!_0x33e3e4){_0x334776[_0x02a5('0x1a')](0x194);}return _0x33e3e4;};}function handleError(_0x4cf6b8,_0x159d2e){_0x159d2e=_0x159d2e||0x1f4;return function(_0x577aee){logger[_0x02a5('0x29')](_0x577aee[_0x02a5('0x2a')]);if(_0x577aee[_0x02a5('0x2b')]){delete _0x577aee[_0x02a5('0x2b')];}_0x4cf6b8[_0x02a5('0x1c')](_0x159d2e)[_0x02a5('0x2c')](_0x577aee);};}exports['index']=function(_0x35a3e9,_0x3ad5d3){var _0x9c43a={},_0x43643d={},_0x4b5290={'count':0x0,'rows':[]};var _0x2a6966=_[_0x02a5('0x2d')](db[_0x02a5('0x2e')][_0x02a5('0x2f')],function(_0x2ff561){return{'name':_0x2ff561[_0x02a5('0x30')],'type':_0x2ff561['type'][_0x02a5('0x31')]};});_0x43643d[_0x02a5('0x32')]=_[_0x02a5('0x2d')](_0x2a6966,_0x02a5('0x2b'));_0x43643d[_0x02a5('0x33')]=_['keys'](_0x35a3e9[_0x02a5('0x33')]);_0x43643d[_0x02a5('0x34')]=_['intersection'](_0x43643d[_0x02a5('0x32')],_0x43643d[_0x02a5('0x33')]);_0x9c43a[_0x02a5('0x35')]=_[_0x02a5('0x36')](_0x43643d[_0x02a5('0x32')],qs[_0x02a5('0x37')](_0x35a3e9[_0x02a5('0x33')][_0x02a5('0x37')]));_0x9c43a['attributes']=_0x9c43a[_0x02a5('0x35')][_0x02a5('0x38')]?_0x9c43a[_0x02a5('0x35')]:_0x43643d[_0x02a5('0x32')];if(!_0x35a3e9['query'][_0x02a5('0x39')]('nolimit')){_0x9c43a[_0x02a5('0x1f')]=qs['limit'](_0x35a3e9[_0x02a5('0x33')]['limit']);_0x9c43a[_0x02a5('0x1e')]=qs[_0x02a5('0x1e')](_0x35a3e9[_0x02a5('0x33')]['offset']);}_0x9c43a['order']=qs[_0x02a5('0x3a')](_0x35a3e9[_0x02a5('0x33')][_0x02a5('0x3a')]);_0x9c43a['where']=qs[_0x02a5('0x34')](_['pick'](_0x35a3e9['query'],_0x43643d[_0x02a5('0x34')]),_0x2a6966);if(_0x35a3e9['query'][_0x02a5('0x3b')]){_0x9c43a[_0x02a5('0x3c')]=_[_0x02a5('0x3d')](_0x9c43a[_0x02a5('0x3c')],{'$or':_[_0x02a5('0x2d')](_0x2a6966,function(_0x19ba86){if(_0x19ba86[_0x02a5('0x3e')]!==_0x02a5('0x3f')){var _0x4abc6e={};_0x4abc6e[_0x19ba86[_0x02a5('0x2b')]]={'$like':'%'+_0x35a3e9['query']['filter']+'%'};return _0x4abc6e;}})});}_0x9c43a=_['merge']({},_0x9c43a,_0x35a3e9['options']);var _0x1bea9c={'where':_0x9c43a[_0x02a5('0x3c')]};return db[_0x02a5('0x2e')]['count'](_0x1bea9c)['then'](function(_0x701f4f){_0x4b5290[_0x02a5('0x21')]=_0x701f4f;if(_0x35a3e9[_0x02a5('0x33')][_0x02a5('0x40')]){_0x9c43a[_0x02a5('0x41')]=[{'all':!![]}];}return db['MailSubstatus'][_0x02a5('0x42')](_0x9c43a);})['then'](function(_0x4fa379){_0x4b5290[_0x02a5('0x43')]=_0x4fa379;return _0x4b5290;})[_0x02a5('0x27')](respondWithFilteredResult(_0x3ad5d3,_0x9c43a))[_0x02a5('0x44')](handleError(_0x3ad5d3,null));};exports[_0x02a5('0x45')]=function(_0xe22d98,_0x2d68e0){var _0x52f61e={'raw':!![],'where':{'id':_0xe22d98[_0x02a5('0x46')]['id']}},_0x57ed7e={};_0x57ed7e[_0x02a5('0x32')]=_[_0x02a5('0x47')](db[_0x02a5('0x2e')][_0x02a5('0x2f')]);_0x57ed7e['query']=_['keys'](_0xe22d98[_0x02a5('0x33')]);_0x57ed7e['filters']=_[_0x02a5('0x36')](_0x57ed7e[_0x02a5('0x32')],_0x57ed7e[_0x02a5('0x33')]);_0x52f61e['attributes']=_[_0x02a5('0x36')](_0x57ed7e[_0x02a5('0x32')],qs[_0x02a5('0x37')](_0xe22d98[_0x02a5('0x33')][_0x02a5('0x37')]));_0x52f61e['attributes']=_0x52f61e[_0x02a5('0x35')][_0x02a5('0x38')]?_0x52f61e[_0x02a5('0x35')]:_0x57ed7e[_0x02a5('0x32')];if(_0xe22d98[_0x02a5('0x33')][_0x02a5('0x40')]){_0x52f61e[_0x02a5('0x41')]=[{'all':!![]}];}_0x52f61e=_[_0x02a5('0x3d')]({},_0x52f61e,_0xe22d98[_0x02a5('0x48')]);return db[_0x02a5('0x2e')][_0x02a5('0x49')](_0x52f61e)[_0x02a5('0x27')](handleEntityNotFound(_0x2d68e0,null))[_0x02a5('0x27')](respondWithResult(_0x2d68e0,null))[_0x02a5('0x44')](handleError(_0x2d68e0,null));};exports[_0x02a5('0x4a')]=function(_0x4f4e9e,_0x2b755e){return db[_0x02a5('0x2e')][_0x02a5('0x4a')](_0x4f4e9e[_0x02a5('0x4b')],{})[_0x02a5('0x27')](respondWithResult(_0x2b755e,0xc9))[_0x02a5('0x44')](handleError(_0x2b755e,null));};exports['update']=function(_0x54e811,_0x33462b){if(_0x54e811[_0x02a5('0x4b')]['id']){delete _0x54e811[_0x02a5('0x4b')]['id'];}return db[_0x02a5('0x2e')][_0x02a5('0x49')]({'where':{'id':_0x54e811[_0x02a5('0x46')]['id']}})[_0x02a5('0x27')](handleEntityNotFound(_0x33462b,null))[_0x02a5('0x27')](saveUpdates(_0x54e811[_0x02a5('0x4b')],null))[_0x02a5('0x27')](respondWithResult(_0x33462b,null))[_0x02a5('0x44')](handleError(_0x33462b,null));};exports[_0x02a5('0x28')]=function(_0x459363,_0x2ddf3b){return db[_0x02a5('0x2e')]['find']({'where':{'id':_0x459363[_0x02a5('0x46')]['id']}})[_0x02a5('0x27')](handleEntityNotFound(_0x2ddf3b,null))[_0x02a5('0x27')](removeEntity(_0x2ddf3b,null))['catch'](handleError(_0x2ddf3b,null));};exports[_0x02a5('0x4c')]=function(_0x2b2c7b,_0x53bf96){return db[_0x02a5('0x2e')][_0x02a5('0x4c')]()[_0x02a5('0x27')](respondWithResult(_0x53bf96,null))[_0x02a5('0x44')](handleError(_0x53bf96,null));};
\ No newline at end of file
index 1cedddf..979a8ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a3f=['./mailSubstatus.attributes','exports','MailSubstatus','mail_substatuses','lodash','../../config/logger','api','bluebird','path','rimraf'];(function(_0x272a3a,_0x3b96e5){var _0x13929d=function(_0x3dfff0){while(--_0x3dfff0){_0x272a3a['push'](_0x272a3a['shift']());}};_0x13929d(++_0x3b96e5);}(_0x2a3f,0x126));var _0xf2a3=function(_0x41f2f5,_0x14f33c){_0x41f2f5=_0x41f2f5-0x0;var _0x3d49f1=_0x2a3f[_0x41f2f5];return _0x3d49f1;};'use strict';var _=require(_0xf2a3('0x0'));var util=require('util');var logger=require(_0xf2a3('0x1'))(_0xf2a3('0x2'));var moment=require('moment');var BPromise=require(_0xf2a3('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf2a3('0x4'));var rimraf=require(_0xf2a3('0x5'));var config=require('../../config/environment');var attributes=require(_0xf2a3('0x6'));module[_0xf2a3('0x7')]=function(_0x7c2b69,_0x164c20){return _0x7c2b69['define'](_0xf2a3('0x8'),attributes,{'tableName':_0xf2a3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x15a6=['bluebird','request-promise','path','../../config/environment','exports','define','MailSubstatus','mail_substatuses','lodash','util','api','moment'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x15a6,0x110));var _0x615a=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x15a6[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x615a('0x0'));var util=require(_0x615a('0x1'));var logger=require('../../config/logger')(_0x615a('0x2'));var moment=require(_0x615a('0x3'));var BPromise=require(_0x615a('0x4'));var rp=require(_0x615a('0x5'));var fs=require('fs');var path=require(_0x615a('0x6'));var rimraf=require('rimraf');var config=require(_0x615a('0x7'));var attributes=require('./mailSubstatus.attributes');module[_0x615a('0x8')]=function(_0x4e2951,_0x43c044){return _0x4e2951[_0x615a('0x9')](_0x615a('0xa'),attributes,{'tableName':_0x615a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 73be9ed..2f56e0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x248b=['util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailSubstatus,\x20%s,\x20%s','lodash'];(function(_0x59bec1,_0x274398){var _0x247115=function(_0x267293){while(--_0x267293){_0x59bec1['push'](_0x59bec1['shift']());}};_0x247115(++_0x274398);}(_0x248b,0x167));var _0xb248=function(_0x3111af,_0x49b275){_0x3111af=_0x3111af-0x0;var _0x4c1d29=_0x248b[_0x3111af];return _0x4c1d29;};'use strict';var _=require(_0xb248('0x0'));var util=require(_0xb248('0x1'));var moment=require(_0xb248('0x2'));var BPromise=require(_0xb248('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb248('0x4'));var db=require(_0xb248('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb248('0x6'));var config=require(_0xb248('0x7'));var jayson=require(_0xb248('0x8'));var client=jayson[_0xb248('0x9')][_0xb248('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3673,_0x22ff21,_0x3ad421){return new BPromise(function(_0xc5bcb1,_0x485068){return client['request'](_0x1d3673,_0x3ad421)['then'](function(_0x2f3ecf){logger[_0xb248('0xb')]('MailSubstatus,\x20%s,\x20%s',_0x22ff21,_0xb248('0xc'));logger[_0xb248('0xd')](_0xb248('0xe'),_0x22ff21,_0xb248('0xc'),JSON[_0xb248('0xf')](_0x2f3ecf));if(_0x2f3ecf[_0xb248('0x10')]){if(_0x2f3ecf[_0xb248('0x10')][_0xb248('0x11')]===0x1f4){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x22ff21,_0x2f3ecf[_0xb248('0x10')]['message']);return _0x485068(_0x2f3ecf['error'][_0xb248('0x12')]);}logger['error'](_0xb248('0x13'),_0x22ff21,_0x2f3ecf['error'][_0xb248('0x12')]);return _0xc5bcb1(_0x2f3ecf['error'][_0xb248('0x12')]);}else{logger['info'](_0xb248('0x13'),_0x22ff21,_0xb248('0xc'));_0xc5bcb1(_0x2f3ecf['result'][_0xb248('0x12')]);}})['catch'](function(_0x29e1c1){logger[_0xb248('0x10')](_0xb248('0x13'),_0x22ff21,_0x29e1c1);_0x485068(_0x29e1c1);});});}
\ No newline at end of file
+var _0xa5c4=['request','then','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x209429,_0x5a6bbf){var _0x29adf0=function(_0xeaeba7){while(--_0xeaeba7){_0x209429['push'](_0x209429['shift']());}};_0x29adf0(++_0x5a6bbf);}(_0xa5c4,0xdd));var _0x4a5c=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0xa5c4[_0x5e36d1];return _0x950b9e;};'use strict';var _=require(_0x4a5c('0x0'));var util=require(_0x4a5c('0x1'));var moment=require('moment');var BPromise=require(_0x4a5c('0x2'));var rs=require(_0x4a5c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a5c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4a5c('0x5'))(_0x4a5c('0x6'));var config=require(_0x4a5c('0x7'));var jayson=require(_0x4a5c('0x8'));var client=jayson[_0x4a5c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x59bafc,_0x6ea7ab,_0x4b5018){return new BPromise(function(_0x27c917,_0xd83918){return client[_0x4a5c('0xa')](_0x59bafc,_0x4b5018)[_0x4a5c('0xb')](function(_0x274d8c){logger['info'](_0x4a5c('0xc'),_0x6ea7ab,_0x4a5c('0xd'));logger[_0x4a5c('0xe')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x6ea7ab,_0x4a5c('0xd'),JSON[_0x4a5c('0xf')](_0x274d8c));if(_0x274d8c[_0x4a5c('0x10')]){if(_0x274d8c[_0x4a5c('0x10')][_0x4a5c('0x11')]===0x1f4){logger[_0x4a5c('0x10')](_0x4a5c('0xc'),_0x6ea7ab,_0x274d8c['error'][_0x4a5c('0x12')]);return _0xd83918(_0x274d8c['error'][_0x4a5c('0x12')]);}logger['error'](_0x4a5c('0xc'),_0x6ea7ab,_0x274d8c['error']['message']);return _0x27c917(_0x274d8c[_0x4a5c('0x10')][_0x4a5c('0x12')]);}else{logger[_0x4a5c('0x13')](_0x4a5c('0xc'),_0x6ea7ab,_0x4a5c('0xd'));_0x27c917(_0x274d8c[_0x4a5c('0x14')]['message']);}})['catch'](function(_0x4211da){logger[_0x4a5c('0x10')](_0x4a5c('0xc'),_0x6ea7ab,_0x4211da);_0xd83918(_0x4211da);});});}
\ No newline at end of file
index 7ea0849..14c9f26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca89=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','update','destroy'];(function(_0x6b4ec6,_0x2ef0ee){var _0x27da70=function(_0x3b2d7b){while(--_0x3b2d7b){_0x6b4ec6['push'](_0x6b4ec6['shift']());}};_0x27da70(++_0x2ef0ee);}(_0xca89,0x1e5));var _0x9ca8=function(_0x1fe6e6,_0x51de82){_0x1fe6e6=_0x1fe6e6-0x0;var _0x8c5033=_0xca89[_0x1fe6e6];return _0x8c5033;};'use strict';var multer=require(_0x9ca8('0x0'));var util=require(_0x9ca8('0x1'));var path=require(_0x9ca8('0x2'));var timeout=require(_0x9ca8('0x3'));var express=require(_0x9ca8('0x4'));var router=express[_0x9ca8('0x5')]();var fs_extra=require(_0x9ca8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x9ca8('0x7'));var config=require(_0x9ca8('0x8'));var controller=require(_0x9ca8('0x9'));router['get']('/',auth[_0x9ca8('0xa')](),controller[_0x9ca8('0xb')]);router[_0x9ca8('0xc')](_0x9ca8('0xd'),auth[_0x9ca8('0xa')](),controller[_0x9ca8('0xe')]);router['get'](_0x9ca8('0xf'),auth['isAuthenticated'](),controller[_0x9ca8('0x10')]);router[_0x9ca8('0x11')]('/',auth[_0x9ca8('0xa')](),controller[_0x9ca8('0x12')]);router['put']('/:id',auth[_0x9ca8('0xa')](),controller[_0x9ca8('0x13')]);router['delete'](_0x9ca8('0xf'),auth[_0x9ca8('0xa')](),controller[_0x9ca8('0x14')]);module[_0x9ca8('0x15')]=router;
\ No newline at end of file
+var _0xea7d=['delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update'];(function(_0x17e57f,_0x400a02){var _0x2611ba=function(_0x2c42d9){while(--_0x2c42d9){_0x17e57f['push'](_0x17e57f['shift']());}};_0x2611ba(++_0x400a02);}(_0xea7d,0xd4));var _0xdea7=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xea7d[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0xdea7('0x0'));var util=require(_0xdea7('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdea7('0x2'));var router=express[_0xdea7('0x3')]();var fs_extra=require(_0xdea7('0x4'));var auth=require(_0xdea7('0x5'));var interaction=require(_0xdea7('0x6'));var config=require(_0xdea7('0x7'));var controller=require('./mailTransferReport.controller');router[_0xdea7('0x8')]('/',auth[_0xdea7('0x9')](),controller[_0xdea7('0xa')]);router[_0xdea7('0x8')](_0xdea7('0xb'),auth[_0xdea7('0x9')](),controller[_0xdea7('0xc')]);router[_0xdea7('0x8')](_0xdea7('0xd'),auth[_0xdea7('0x9')](),controller[_0xdea7('0xe')]);router[_0xdea7('0xf')]('/',auth[_0xdea7('0x9')](),controller[_0xdea7('0x10')]);router[_0xdea7('0x11')](_0xdea7('0xd'),auth[_0xdea7('0x9')](),controller[_0xdea7('0x12')]);router[_0xdea7('0x13')](_0xdea7('0xd'),auth[_0xdea7('0x9')](),controller[_0xdea7('0x14')]);module['exports']=router;
\ No newline at end of file
index 513c766..b1f7edd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x5b4a60,_0x358cbe){var _0x35aa6b=function(_0x54a073){while(--_0x54a073){_0x5b4a60['push'](_0x5b4a60['shift']());}};_0x35aa6b(++_0x358cbe);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x47adb8,_0x591ccc){_0x47adb8=_0x47adb8-0x0;var _0x4689a8=_0xcb91[_0x47adb8];return _0x4689a8;};'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 _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x2c2abc,_0x87a32c){var _0x27777a=function(_0x1d6c80){while(--_0x1d6c80){_0x2c2abc['push'](_0x2c2abc['shift']());}};_0x27777a(++_0x87a32c);}(_0x70e0,0x17b));var _0x070e=function(_0x49e1bd,_0x5c1f02){_0x49e1bd=_0x49e1bd-0x0;var _0x568399=_0x70e0[_0x49e1bd];return _0x568399;};'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 052a39c..1236cc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x424f=['bluebird','util','path','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset','status','Content-Range','apply','save','update','then','stack','name','map','MailTransferReport','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','filter','includeAll','findAll','rows','show','params','keys','length','include','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x13f8b5,_0x34e0e7){var _0x4be74f=function(_0x23e3af){while(--_0x23e3af){_0x13f8b5['push'](_0x13f8b5['shift']());}};_0x4be74f(++_0x34e0e7);}(_0x424f,0x112));var _0xf424=function(_0x4b54fe,_0x1f349c){_0x4b54fe=_0x4b54fe-0x0;var _0x34db85=_0x424f[_0x4b54fe];return _0x34db85;};'use strict';var emlformat=require(_0xf424('0x0'));var rimraf=require(_0xf424('0x1'));var zipdir=require(_0xf424('0x2'));var jsonpatch=require(_0xf424('0x3'));var rp=require(_0xf424('0x4'));var moment=require(_0xf424('0x5'));var BPromise=require(_0xf424('0x6'));var Mustache=require('mustache');var util=require(_0xf424('0x7'));var path=require(_0xf424('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf424('0x9'));var _=require(_0xf424('0xa'));var squel=require(_0xf424('0xb'));var crypto=require(_0xf424('0xc'));var jsforce=require(_0xf424('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf424('0xe'));var Papa=require('papaparse');var Redis=require(_0xf424('0xf'));var authService=require(_0xf424('0x10'));var qs=require(_0xf424('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf424('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xf424('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf424('0x14'))['db'];function respondWithStatusCode(_0x3bec86,_0x10d14f){_0x10d14f=_0x10d14f||0xcc;return function(_0x106668){if(_0x106668){return _0x3bec86[_0xf424('0x15')](_0x10d14f);}return _0x3bec86['status'](_0x10d14f)[_0xf424('0x16')]();};}function respondWithResult(_0x2031e2,_0x59f734){_0x59f734=_0x59f734||0xc8;return function(_0x424605){if(_0x424605){return _0x2031e2['status'](_0x59f734)[_0xf424('0x17')](_0x424605);}};}function respondWithFilteredResult(_0x1b4592,_0x274004){return function(_0x5dd97f){if(_0x5dd97f){var _0x2e887d=typeof _0x274004['offset']===_0xf424('0x18')&&typeof _0x274004[_0xf424('0x19')]===_0xf424('0x18');var _0x207d5c=_0x5dd97f[_0xf424('0x1a')];var _0x5d004d=_0x2e887d?0x0:_0x274004['offset'];var _0x10a179=_0x2e887d?_0x5dd97f['count']:_0x274004[_0xf424('0x1b')]+_0x274004['limit'];var _0x254a34;if(_0x10a179>=_0x207d5c){_0x10a179=_0x207d5c;_0x254a34=0xc8;}else{_0x254a34=0xce;}_0x1b4592[_0xf424('0x1c')](_0x254a34);return _0x1b4592['set'](_0xf424('0x1d'),_0x5d004d+'-'+_0x10a179+'/'+_0x207d5c)[_0xf424('0x17')](_0x5dd97f);}return null;};}function patchUpdates(_0x3bc3c7){return function(_0x4c045e){try{jsonpatch[_0xf424('0x1e')](_0x4c045e,_0x3bc3c7,!![]);}catch(_0x32f5ef){return BPromise['reject'](_0x32f5ef);}return _0x4c045e[_0xf424('0x1f')]();};}function saveUpdates(_0x17d60e,_0x26423f){return function(_0x20824e){if(_0x20824e){return _0x20824e[_0xf424('0x20')](_0x17d60e)[_0xf424('0x21')](function(_0x1630ab){return _0x1630ab;});}return null;};}function removeEntity(_0x2fb58d,_0x553677){return function(_0x1b4011){if(_0x1b4011){return _0x1b4011['destroy']()[_0xf424('0x21')](function(){_0x2fb58d['status'](0xcc)[_0xf424('0x16')]();});}};}function handleEntityNotFound(_0x2675dc,_0x4dc0fe){return function(_0x247a56){if(!_0x247a56){_0x2675dc[_0xf424('0x15')](0x194);}return _0x247a56;};}function handleError(_0x5285a0,_0x383135){_0x383135=_0x383135||0x1f4;return function(_0x14f372){logger['error'](_0x14f372[_0xf424('0x22')]);if(_0x14f372[_0xf424('0x23')]){delete _0x14f372['name'];}_0x5285a0['status'](_0x383135)['send'](_0x14f372);};}exports['index']=function(_0x531299,_0x404c7f){var _0x283abe={},_0x3729cd={},_0xd158f0={'count':0x0,'rows':[]};var _0x4986a9=_[_0xf424('0x24')](db[_0xf424('0x25')][_0xf424('0x26')],function(_0x5bcedd){return{'name':_0x5bcedd[_0xf424('0x27')],'type':_0x5bcedd[_0xf424('0x28')][_0xf424('0x29')]};});_0x3729cd[_0xf424('0x2a')]=_[_0xf424('0x24')](_0x4986a9,_0xf424('0x23'));_0x3729cd[_0xf424('0x2b')]=_['keys'](_0x531299['query']);_0x3729cd['filters']=_['intersection'](_0x3729cd[_0xf424('0x2a')],_0x3729cd[_0xf424('0x2b')]);_0x283abe[_0xf424('0x2c')]=_[_0xf424('0x2d')](_0x3729cd['model'],qs['fields'](_0x531299[_0xf424('0x2b')][_0xf424('0x2e')]));_0x283abe['attributes']=_0x283abe[_0xf424('0x2c')]['length']?_0x283abe[_0xf424('0x2c')]:_0x3729cd[_0xf424('0x2a')];if(!_0x531299['query'][_0xf424('0x2f')](_0xf424('0x30'))){_0x283abe[_0xf424('0x19')]=qs[_0xf424('0x19')](_0x531299['query'][_0xf424('0x19')]);_0x283abe[_0xf424('0x1b')]=qs[_0xf424('0x1b')](_0x531299['query'][_0xf424('0x1b')]);}_0x283abe['order']=qs['sort'](_0x531299[_0xf424('0x2b')][_0xf424('0x31')]);_0x283abe[_0xf424('0x32')]=qs[_0xf424('0x33')](_[_0xf424('0x34')](_0x531299[_0xf424('0x2b')],_0x3729cd['filters']),_0x4986a9);if(_0x531299[_0xf424('0x2b')]['filter']){_0x283abe[_0xf424('0x32')]=_[_0xf424('0x35')](_0x283abe[_0xf424('0x32')],{'$or':_[_0xf424('0x24')](_0x4986a9,function(_0x5a1715){if(_0x5a1715[_0xf424('0x28')]!==_0xf424('0x36')){var _0x908544={};_0x908544[_0x5a1715['name']]={'$like':'%'+_0x531299[_0xf424('0x2b')][_0xf424('0x37')]+'%'};return _0x908544;}})});}_0x283abe=_[_0xf424('0x35')]({},_0x283abe,_0x531299['options']);var _0x46081b={'where':_0x283abe[_0xf424('0x32')]};return db[_0xf424('0x25')][_0xf424('0x1a')](_0x46081b)['then'](function(_0x152b65){_0xd158f0['count']=_0x152b65;if(_0x531299[_0xf424('0x2b')][_0xf424('0x38')]){_0x283abe['include']=[{'all':!![]}];}return db[_0xf424('0x25')][_0xf424('0x39')](_0x283abe);})[_0xf424('0x21')](function(_0x1dd8ee){_0xd158f0[_0xf424('0x3a')]=_0x1dd8ee;return _0xd158f0;})[_0xf424('0x21')](respondWithFilteredResult(_0x404c7f,_0x283abe))['catch'](handleError(_0x404c7f,null));};exports[_0xf424('0x3b')]=function(_0x4c82d7,_0x11c4fa){var _0x34663c={'raw':!![],'where':{'id':_0x4c82d7[_0xf424('0x3c')]['id']}},_0x4db094={};_0x4db094[_0xf424('0x2a')]=_[_0xf424('0x3d')](db[_0xf424('0x25')][_0xf424('0x26')]);_0x4db094[_0xf424('0x2b')]=_[_0xf424('0x3d')](_0x4c82d7[_0xf424('0x2b')]);_0x4db094['filters']=_[_0xf424('0x2d')](_0x4db094[_0xf424('0x2a')],_0x4db094[_0xf424('0x2b')]);_0x34663c[_0xf424('0x2c')]=_[_0xf424('0x2d')](_0x4db094[_0xf424('0x2a')],qs[_0xf424('0x2e')](_0x4c82d7[_0xf424('0x2b')][_0xf424('0x2e')]));_0x34663c[_0xf424('0x2c')]=_0x34663c['attributes'][_0xf424('0x3e')]?_0x34663c[_0xf424('0x2c')]:_0x4db094[_0xf424('0x2a')];if(_0x4c82d7['query']['includeAll']){_0x34663c[_0xf424('0x3f')]=[{'all':!![]}];}_0x34663c=_[_0xf424('0x35')]({},_0x34663c,_0x4c82d7[_0xf424('0x40')]);return db['MailTransferReport'][_0xf424('0x41')](_0x34663c)[_0xf424('0x21')](handleEntityNotFound(_0x11c4fa,null))[_0xf424('0x21')](respondWithResult(_0x11c4fa,null))[_0xf424('0x42')](handleError(_0x11c4fa,null));};exports[_0xf424('0x43')]=function(_0x1c61f7,_0x4c575d){return db[_0xf424('0x25')]['create'](_0x1c61f7[_0xf424('0x44')],{})[_0xf424('0x21')](respondWithResult(_0x4c575d,0xc9))[_0xf424('0x42')](handleError(_0x4c575d,null));};exports['update']=function(_0x364fe6,_0x5aaa16){if(_0x364fe6[_0xf424('0x44')]['id']){delete _0x364fe6['body']['id'];}return db[_0xf424('0x25')][_0xf424('0x41')]({'where':{'id':_0x364fe6[_0xf424('0x3c')]['id']}})[_0xf424('0x21')](handleEntityNotFound(_0x5aaa16,null))['then'](saveUpdates(_0x364fe6[_0xf424('0x44')],null))[_0xf424('0x21')](respondWithResult(_0x5aaa16,null))[_0xf424('0x42')](handleError(_0x5aaa16,null));};exports['destroy']=function(_0xe19363,_0x20fde2){return db['MailTransferReport']['find']({'where':{'id':_0xe19363[_0xf424('0x3c')]['id']}})[_0xf424('0x21')](handleEntityNotFound(_0x20fde2,null))[_0xf424('0x21')](removeEntity(_0x20fde2,null))[_0xf424('0x42')](handleError(_0x20fde2,null));};exports['describe']=function(_0x35539a,_0x51ef41){return db[_0xf424('0x25')][_0xf424('0x45')]()[_0xf424('0x21')](respondWithResult(_0x51ef41,null))['catch'](handleError(_0x51ef41,null));};
\ No newline at end of file
+var _0x8d6c=['squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','findAll','rows','catch','show','params','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0x8d6c,0x127));var _0xc8d6=function(_0x8c2e4e,_0x3c105b){_0x8c2e4e=_0x8c2e4e-0x0;var _0x2286bb=_0x8d6c[_0x8c2e4e];return _0x2286bb;};'use strict';var emlformat=require(_0xc8d6('0x0'));var rimraf=require(_0xc8d6('0x1'));var zipdir=require(_0xc8d6('0x2'));var jsonpatch=require(_0xc8d6('0x3'));var rp=require(_0xc8d6('0x4'));var moment=require(_0xc8d6('0x5'));var BPromise=require(_0xc8d6('0x6'));var Mustache=require('mustache');var util=require(_0xc8d6('0x7'));var path=require('path');var sox=require(_0xc8d6('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(_0xc8d6('0x9'));var crypto=require(_0xc8d6('0xa'));var jsforce=require(_0xc8d6('0xb'));var deskjs=require(_0xc8d6('0xc'));var toCsv=require('to-csv');var querystring=require(_0xc8d6('0xd'));var Papa=require(_0xc8d6('0xe'));var Redis=require('ioredis');var authService=require(_0xc8d6('0xf'));var qs=require(_0xc8d6('0x10'));var as=require(_0xc8d6('0x11'));var hardwareService=require(_0xc8d6('0x12'));var logger=require('../../config/logger')(_0xc8d6('0x13'));var utils=require(_0xc8d6('0x14'));var config=require(_0xc8d6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xc8d6('0x16'))['db'];function respondWithStatusCode(_0x3738c3,_0x47674e){_0x47674e=_0x47674e||0xcc;return function(_0x390178){if(_0x390178){return _0x3738c3[_0xc8d6('0x17')](_0x47674e);}return _0x3738c3['status'](_0x47674e)[_0xc8d6('0x18')]();};}function respondWithResult(_0x5f4f4e,_0x41f56d){_0x41f56d=_0x41f56d||0xc8;return function(_0x5ed33d){if(_0x5ed33d){return _0x5f4f4e[_0xc8d6('0x19')](_0x41f56d)[_0xc8d6('0x1a')](_0x5ed33d);}};}function respondWithFilteredResult(_0x425c62,_0xec8638){return function(_0x30e91b){if(_0x30e91b){var _0xbcf630=typeof _0xec8638['offset']==='undefined'&&typeof _0xec8638[_0xc8d6('0x1b')]===_0xc8d6('0x1c');var _0x1c7ba0=_0x30e91b[_0xc8d6('0x1d')];var _0x3e7e4c=_0xbcf630?0x0:_0xec8638[_0xc8d6('0x1e')];var _0x45e28e=_0xbcf630?_0x30e91b[_0xc8d6('0x1d')]:_0xec8638[_0xc8d6('0x1e')]+_0xec8638['limit'];var _0x53fbe7;if(_0x45e28e>=_0x1c7ba0){_0x45e28e=_0x1c7ba0;_0x53fbe7=0xc8;}else{_0x53fbe7=0xce;}_0x425c62['status'](_0x53fbe7);return _0x425c62[_0xc8d6('0x1f')](_0xc8d6('0x20'),_0x3e7e4c+'-'+_0x45e28e+'/'+_0x1c7ba0)[_0xc8d6('0x1a')](_0x30e91b);}return null;};}function patchUpdates(_0xba5845){return function(_0x8257e6){try{jsonpatch[_0xc8d6('0x21')](_0x8257e6,_0xba5845,!![]);}catch(_0x316deb){return BPromise[_0xc8d6('0x22')](_0x316deb);}return _0x8257e6[_0xc8d6('0x23')]();};}function saveUpdates(_0x3dbfcf,_0x1ade55){return function(_0x52735b){if(_0x52735b){return _0x52735b[_0xc8d6('0x24')](_0x3dbfcf)[_0xc8d6('0x25')](function(_0x217d5b){return _0x217d5b;});}return null;};}function removeEntity(_0x4ce139,_0x43bb32){return function(_0x50fa04){if(_0x50fa04){return _0x50fa04['destroy']()['then'](function(){_0x4ce139['status'](0xcc)[_0xc8d6('0x18')]();});}};}function handleEntityNotFound(_0x295a0b,_0x419aa2){return function(_0x1c9ece){if(!_0x1c9ece){_0x295a0b[_0xc8d6('0x17')](0x194);}return _0x1c9ece;};}function handleError(_0x1371ca,_0x290a9e){_0x290a9e=_0x290a9e||0x1f4;return function(_0x4502fc){logger['error'](_0x4502fc[_0xc8d6('0x26')]);if(_0x4502fc['name']){delete _0x4502fc[_0xc8d6('0x27')];}_0x1371ca['status'](_0x290a9e)[_0xc8d6('0x28')](_0x4502fc);};}exports[_0xc8d6('0x29')]=function(_0x406fe7,_0xdf0c68){var _0x3ec2c0={},_0x57090f={},_0x846951={'count':0x0,'rows':[]};var _0x4923ce=_[_0xc8d6('0x2a')](db[_0xc8d6('0x2b')][_0xc8d6('0x2c')],function(_0x293d11){return{'name':_0x293d11[_0xc8d6('0x2d')],'type':_0x293d11[_0xc8d6('0x2e')][_0xc8d6('0x2f')]};});_0x57090f[_0xc8d6('0x30')]=_['map'](_0x4923ce,_0xc8d6('0x27'));_0x57090f[_0xc8d6('0x31')]=_[_0xc8d6('0x32')](_0x406fe7['query']);_0x57090f[_0xc8d6('0x33')]=_[_0xc8d6('0x34')](_0x57090f[_0xc8d6('0x30')],_0x57090f[_0xc8d6('0x31')]);_0x3ec2c0[_0xc8d6('0x35')]=_[_0xc8d6('0x34')](_0x57090f['model'],qs[_0xc8d6('0x36')](_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x36')]));_0x3ec2c0['attributes']=_0x3ec2c0[_0xc8d6('0x35')][_0xc8d6('0x37')]?_0x3ec2c0['attributes']:_0x57090f[_0xc8d6('0x30')];if(!_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x38')](_0xc8d6('0x39'))){_0x3ec2c0[_0xc8d6('0x1b')]=qs[_0xc8d6('0x1b')](_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x1b')]);_0x3ec2c0['offset']=qs[_0xc8d6('0x1e')](_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x1e')]);}_0x3ec2c0[_0xc8d6('0x3a')]=qs[_0xc8d6('0x3b')](_0x406fe7[_0xc8d6('0x31')]['sort']);_0x3ec2c0['where']=qs[_0xc8d6('0x33')](_[_0xc8d6('0x3c')](_0x406fe7[_0xc8d6('0x31')],_0x57090f[_0xc8d6('0x33')]),_0x4923ce);if(_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x3d')]){_0x3ec2c0[_0xc8d6('0x3e')]=_[_0xc8d6('0x3f')](_0x3ec2c0[_0xc8d6('0x3e')],{'$or':_['map'](_0x4923ce,function(_0xd03211){if(_0xd03211[_0xc8d6('0x2e')]!=='VIRTUAL'){var _0x5c3fc1={};_0x5c3fc1[_0xd03211[_0xc8d6('0x27')]]={'$like':'%'+_0x406fe7[_0xc8d6('0x31')][_0xc8d6('0x3d')]+'%'};return _0x5c3fc1;}})});}_0x3ec2c0=_[_0xc8d6('0x3f')]({},_0x3ec2c0,_0x406fe7[_0xc8d6('0x40')]);var _0x2ce481={'where':_0x3ec2c0[_0xc8d6('0x3e')]};return db['MailTransferReport'][_0xc8d6('0x1d')](_0x2ce481)['then'](function(_0x204411){_0x846951[_0xc8d6('0x1d')]=_0x204411;if(_0x406fe7['query'][_0xc8d6('0x41')]){_0x3ec2c0['include']=[{'all':!![]}];}return db['MailTransferReport'][_0xc8d6('0x42')](_0x3ec2c0);})[_0xc8d6('0x25')](function(_0x383eeb){_0x846951[_0xc8d6('0x43')]=_0x383eeb;return _0x846951;})[_0xc8d6('0x25')](respondWithFilteredResult(_0xdf0c68,_0x3ec2c0))[_0xc8d6('0x44')](handleError(_0xdf0c68,null));};exports[_0xc8d6('0x45')]=function(_0x2b2216,_0x41435c){var _0x28b0a0={'raw':!![],'where':{'id':_0x2b2216[_0xc8d6('0x46')]['id']}},_0x36df06={};_0x36df06[_0xc8d6('0x30')]=_[_0xc8d6('0x32')](db[_0xc8d6('0x2b')][_0xc8d6('0x2c')]);_0x36df06[_0xc8d6('0x31')]=_[_0xc8d6('0x32')](_0x2b2216[_0xc8d6('0x31')]);_0x36df06['filters']=_[_0xc8d6('0x34')](_0x36df06['model'],_0x36df06[_0xc8d6('0x31')]);_0x28b0a0['attributes']=_['intersection'](_0x36df06[_0xc8d6('0x30')],qs[_0xc8d6('0x36')](_0x2b2216[_0xc8d6('0x31')][_0xc8d6('0x36')]));_0x28b0a0[_0xc8d6('0x35')]=_0x28b0a0[_0xc8d6('0x35')][_0xc8d6('0x37')]?_0x28b0a0[_0xc8d6('0x35')]:_0x36df06[_0xc8d6('0x30')];if(_0x2b2216[_0xc8d6('0x31')][_0xc8d6('0x41')]){_0x28b0a0['include']=[{'all':!![]}];}_0x28b0a0=_[_0xc8d6('0x3f')]({},_0x28b0a0,_0x2b2216['options']);return db[_0xc8d6('0x2b')][_0xc8d6('0x47')](_0x28b0a0)[_0xc8d6('0x25')](handleEntityNotFound(_0x41435c,null))['then'](respondWithResult(_0x41435c,null))[_0xc8d6('0x44')](handleError(_0x41435c,null));};exports[_0xc8d6('0x48')]=function(_0x6025b2,_0x572e20){return db[_0xc8d6('0x2b')][_0xc8d6('0x48')](_0x6025b2['body'],{})['then'](respondWithResult(_0x572e20,0xc9))[_0xc8d6('0x44')](handleError(_0x572e20,null));};exports[_0xc8d6('0x24')]=function(_0x201202,_0x4ca8f2){if(_0x201202[_0xc8d6('0x49')]['id']){delete _0x201202[_0xc8d6('0x49')]['id'];}return db[_0xc8d6('0x2b')][_0xc8d6('0x47')]({'where':{'id':_0x201202[_0xc8d6('0x46')]['id']}})[_0xc8d6('0x25')](handleEntityNotFound(_0x4ca8f2,null))['then'](saveUpdates(_0x201202[_0xc8d6('0x49')],null))[_0xc8d6('0x25')](respondWithResult(_0x4ca8f2,null))[_0xc8d6('0x44')](handleError(_0x4ca8f2,null));};exports[_0xc8d6('0x4a')]=function(_0x5376b1,_0x4a5efd){return db[_0xc8d6('0x2b')]['find']({'where':{'id':_0x5376b1[_0xc8d6('0x46')]['id']}})[_0xc8d6('0x25')](handleEntityNotFound(_0x4a5efd,null))[_0xc8d6('0x25')](removeEntity(_0x4a5efd,null))['catch'](handleError(_0x4a5efd,null));};exports[_0xc8d6('0x4b')]=function(_0x3892ff,_0x4f9df9){return db[_0xc8d6('0x2b')][_0xc8d6('0x4b')]()[_0xc8d6('0x25')](respondWithResult(_0x4f9df9,null))[_0xc8d6('0x44')](handleError(_0x4f9df9,null));};
\ No newline at end of file
index 251433a..b334ea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa630=['moment','request-promise','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util'];(function(_0x54e840,_0x2e5084){var _0x378f27=function(_0x55bb10){while(--_0x55bb10){_0x54e840['push'](_0x54e840['shift']());}};_0x378f27(++_0x2e5084);}(_0xa630,0xbe));var _0x0a63=function(_0x266e16,_0x4a5c51){_0x266e16=_0x266e16-0x0;var _0x5a8fba=_0xa630[_0x266e16];return _0x5a8fba;};'use strict';var _=require(_0x0a63('0x0'));var util=require(_0x0a63('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0a63('0x2'));var BPromise=require('bluebird');var rp=require(_0x0a63('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0a63('0x4'));var config=require(_0x0a63('0x5'));var attributes=require(_0x0a63('0x6'));module[_0x0a63('0x7')]=function(_0x37b4c9,_0x4b7474){return _0x37b4c9[_0x0a63('0x8')](_0x0a63('0x9'),attributes,{'tableName':_0x0a63('0xa'),'paranoid':![],'indexes':[{'name':_0x0a63('0xb'),'fields':[_0x0a63('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x229a=['moment','bluebird','request-promise','path','../../config/environment','exports','define','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0x2d2f1a,_0x57b966){var _0x55d9db=function(_0x15771f){while(--_0x15771f){_0x2d2f1a['push'](_0x2d2f1a['shift']());}};_0x55d9db(++_0x57b966);}(_0x229a,0x1ea));var _0xa229=function(_0x5e1100,_0xd61de7){_0x5e1100=_0x5e1100-0x0;var _0x1ee552=_0x229a[_0x5e1100];return _0x1ee552;};'use strict';var _=require(_0xa229('0x0'));var util=require(_0xa229('0x1'));var logger=require(_0xa229('0x2'))(_0xa229('0x3'));var moment=require(_0xa229('0x4'));var BPromise=require(_0xa229('0x5'));var rp=require(_0xa229('0x6'));var fs=require('fs');var path=require(_0xa229('0x7'));var rimraf=require('rimraf');var config=require(_0xa229('0x8'));var attributes=require('./mailTransferReport.attributes');module[_0xa229('0x9')]=function(_0x6b31c9,_0x24bad7){return _0x6b31c9[_0xa229('0xa')]('MailTransferReport',attributes,{'tableName':_0xa229('0xb'),'paranoid':![],'indexes':[{'name':_0xa229('0xc'),'fields':[_0xa229('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index df022cf..91c4614 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1901=['then','info','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','error','code','MailTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x3d1c06,_0x30f2e0){var _0x10c6e6=function(_0x42ee29){while(--_0x42ee29){_0x3d1c06['push'](_0x3d1c06['shift']());}};_0x10c6e6(++_0x30f2e0);}(_0x1901,0x67));var _0x1190=function(_0x1c5f32,_0x1ac260){_0x1c5f32=_0x1c5f32-0x0;var _0x3bd1e8=_0x1901[_0x1c5f32];return _0x3bd1e8;};'use strict';var _=require(_0x1190('0x0'));var util=require(_0x1190('0x1'));var moment=require(_0x1190('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1190('0x3'));var db=require(_0x1190('0x4'))['db'];var utils=require(_0x1190('0x5'));var logger=require('../../config/logger')(_0x1190('0x6'));var config=require(_0x1190('0x7'));var jayson=require(_0x1190('0x8'));var client=jayson[_0x1190('0x9')][_0x1190('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11562a,_0x1e6d42,_0x2775e8){return new BPromise(function(_0x5438c4,_0x3294d4){return client[_0x1190('0xb')](_0x11562a,_0x2775e8)[_0x1190('0xc')](function(_0x48251f){logger[_0x1190('0xd')]('MailTransferReport,\x20%s,\x20%s',_0x1e6d42,_0x1190('0xe'));logger[_0x1190('0xf')](_0x1190('0x10'),_0x1e6d42,'request\x20sent',JSON['stringify'](_0x48251f));if(_0x48251f[_0x1190('0x11')]){if(_0x48251f[_0x1190('0x11')][_0x1190('0x12')]===0x1f4){logger[_0x1190('0x11')](_0x1190('0x13'),_0x1e6d42,_0x48251f[_0x1190('0x11')][_0x1190('0x14')]);return _0x3294d4(_0x48251f[_0x1190('0x11')]['message']);}logger[_0x1190('0x11')]('MailTransferReport,\x20%s,\x20%s',_0x1e6d42,_0x48251f['error'][_0x1190('0x14')]);return _0x5438c4(_0x48251f[_0x1190('0x11')][_0x1190('0x14')]);}else{logger[_0x1190('0xd')](_0x1190('0x13'),_0x1e6d42,_0x1190('0xe'));_0x5438c4(_0x48251f[_0x1190('0x15')]['message']);}})[_0x1190('0x16')](function(_0x4e36f2){logger[_0x1190('0x11')](_0x1190('0x13'),_0x1e6d42,_0x4e36f2);_0x3294d4(_0x4e36f2);});});}
\ No newline at end of file
+var _0xa5bd=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x12321d,_0x1cf3bf){var _0x18fec7=function(_0x4b21c9){while(--_0x4b21c9){_0x12321d['push'](_0x12321d['shift']());}};_0x18fec7(++_0x1cf3bf);}(_0xa5bd,0xc2));var _0xda5b=function(_0x5e7f24,_0x7b595){_0x5e7f24=_0x5e7f24-0x0;var _0x11d440=_0xa5bd[_0x5e7f24];return _0x11d440;};'use strict';var _=require(_0xda5b('0x0'));var util=require('util');var moment=require(_0xda5b('0x1'));var BPromise=require(_0xda5b('0x2'));var rs=require(_0xda5b('0x3'));var fs=require('fs');var Redis=require(_0xda5b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xda5b('0x5'));var logger=require(_0xda5b('0x6'))(_0xda5b('0x7'));var config=require(_0xda5b('0x8'));var jayson=require(_0xda5b('0x9'));var client=jayson[_0xda5b('0xa')][_0xda5b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x491174,_0x5c0c5a,_0x57ab84){return new BPromise(function(_0x5772ab,_0x3f8f1b){return client[_0xda5b('0xc')](_0x491174,_0x57ab84)[_0xda5b('0xd')](function(_0x1132c7){logger['info'](_0xda5b('0xe'),_0x5c0c5a,_0xda5b('0xf'));logger[_0xda5b('0x10')](_0xda5b('0x11'),_0x5c0c5a,'request\x20sent',JSON[_0xda5b('0x12')](_0x1132c7));if(_0x1132c7[_0xda5b('0x13')]){if(_0x1132c7[_0xda5b('0x13')][_0xda5b('0x14')]===0x1f4){logger[_0xda5b('0x13')](_0xda5b('0xe'),_0x5c0c5a,_0x1132c7[_0xda5b('0x13')]['message']);return _0x3f8f1b(_0x1132c7['error'][_0xda5b('0x15')]);}logger['error'](_0xda5b('0xe'),_0x5c0c5a,_0x1132c7[_0xda5b('0x13')][_0xda5b('0x15')]);return _0x5772ab(_0x1132c7[_0xda5b('0x13')][_0xda5b('0x15')]);}else{logger[_0xda5b('0x16')](_0xda5b('0xe'),_0x5c0c5a,_0xda5b('0xf'));_0x5772ab(_0x1132c7[_0xda5b('0x17')]['message']);}})[_0xda5b('0x18')](function(_0xf789a0){logger[_0xda5b('0x13')](_0xda5b('0xe'),_0x5c0c5a,_0xf789a0);_0x3f8f1b(_0xf789a0);});});}
\ No newline at end of file
index 9bd1f5f..05d77ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9c7=['index','/:id','show','post','create','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./memberReport.controller','get','isAuthenticated'];(function(_0x497fdb,_0x2a847a){var _0x1a9cc9=function(_0x2bd750){while(--_0x2bd750){_0x497fdb['push'](_0x497fdb['shift']());}};_0x1a9cc9(++_0x2a847a);}(_0xb9c7,0x1bd));var _0x7b9c=function(_0x65aa6f,_0x2d2eca){_0x65aa6f=_0x65aa6f-0x0;var _0x3af945=_0xb9c7[_0x65aa6f];return _0x3af945;};'use strict';var multer=require(_0x7b9c('0x0'));var util=require('util');var path=require(_0x7b9c('0x1'));var timeout=require(_0x7b9c('0x2'));var express=require(_0x7b9c('0x3'));var router=express[_0x7b9c('0x4')]();var fs_extra=require(_0x7b9c('0x5'));var auth=require(_0x7b9c('0x6'));var interaction=require(_0x7b9c('0x7'));var config=require('../../config/environment');var controller=require(_0x7b9c('0x8'));router[_0x7b9c('0x9')]('/',auth[_0x7b9c('0xa')](),controller[_0x7b9c('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0x7b9c('0xc'),auth['isAuthenticated'](),controller[_0x7b9c('0xd')]);router[_0x7b9c('0xe')]('/',auth[_0x7b9c('0xa')](),controller[_0x7b9c('0xf')]);router['put'](_0x7b9c('0xc'),auth[_0x7b9c('0xa')](),controller[_0x7b9c('0x10')]);router[_0x7b9c('0x11')](_0x7b9c('0xc'),auth[_0x7b9c('0xa')](),controller[_0x7b9c('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x9bb5=['describe','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated'];(function(_0x435117,_0x2b9bad){var _0x585a63=function(_0x32c270){while(--_0x32c270){_0x435117['push'](_0x435117['shift']());}};_0x585a63(++_0x2b9bad);}(_0x9bb5,0xbc));var _0x59bb=function(_0xfad14f,_0x3daf22){_0xfad14f=_0xfad14f-0x0;var _0x3ca4d2=_0x9bb5[_0xfad14f];return _0x3ca4d2;};'use strict';var multer=require('multer');var util=require(_0x59bb('0x0'));var path=require(_0x59bb('0x1'));var timeout=require(_0x59bb('0x2'));var express=require(_0x59bb('0x3'));var router=express[_0x59bb('0x4')]();var fs_extra=require(_0x59bb('0x5'));var auth=require(_0x59bb('0x6'));var interaction=require(_0x59bb('0x7'));var config=require(_0x59bb('0x8'));var controller=require('./memberReport.controller');router[_0x59bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x59bb('0x9')](_0x59bb('0xa'),auth[_0x59bb('0xb')](),controller[_0x59bb('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x59bb('0xd')]('/',auth[_0x59bb('0xb')](),controller[_0x59bb('0xe')]);router[_0x59bb('0xf')]('/:id',auth[_0x59bb('0xb')](),controller[_0x59bb('0x10')]);router[_0x59bb('0x11')]('/:id',auth[_0x59bb('0xb')](),controller[_0x59bb('0x12')]);module[_0x59bb('0x13')]=router;
\ No newline at end of file
index 0b35259..5d83083 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5620=['exports','STRING','DEFAULT\x20PAUSE','INTEGER','DATE','getDataValue','enterAt','seconds','exitAt','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','sequelize'];(function(_0x12ca5f,_0x223d98){var _0xfc3ae9=function(_0x1928fb){while(--_0x1928fb){_0x12ca5f['push'](_0x12ca5f['shift']());}};_0xfc3ae9(++_0x223d98);}(_0x5620,0xbf));var _0x0562=function(_0x456904,_0x4cb25c){_0x456904=_0x456904-0x0;var _0x4b0063=_0x5620[_0x456904];return _0x4b0063;};'use strict';var Sequelize=require(_0x0562('0x0'));var moment=require('moment');module[_0x0562('0x1')]={'channel':{'type':Sequelize[_0x0562('0x2')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING'],'defaultValue':_0x0562('0x3'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0x0562('0x4')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x0562('0x5')],'set':function(_0x39ab9a){var _0x4155b9=moment(_0x39ab9a);var _0x24b8d1=moment(this[_0x0562('0x6')](_0x0562('0x7')));var _0x5f47ba=_0x4155b9['diff'](_0x24b8d1,_0x0562('0x8'));this['setDataValue'](_0x0562('0x9'),_0x39ab9a);this[_0x0562('0xa')](_0x0562('0xb'),_0x5f47ba||null);}},'data1':{'type':Sequelize[_0x0562('0x2')],'comment':_0x0562('0xc')},'data2':{'type':Sequelize['STRING'],'comment':_0x0562('0xd')},'data3':{'type':Sequelize[_0x0562('0x2')],'comment':_0x0562('0xe')},'data4':{'type':Sequelize[_0x0562('0x2')],'comment':_0x0562('0xf')},'data5':{'type':Sequelize['STRING'],'comment':'talk:[queue]'},'role':{'type':Sequelize[_0x0562('0x2')]},'internal':{'type':Sequelize[_0x0562('0x4')]},'uniqueid':{'type':Sequelize[_0x0562('0x2')]}};
\ No newline at end of file
+var _0xf3dc=['seconds','setDataValue','exitAt','duration','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','enterAt','diff'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xf3dc,0x9c));var _0xcf3d=function(_0xa4f047,_0x30cffe){_0xa4f047=_0xa4f047-0x0;var _0x280a03=_0xf3dc[_0xa4f047];return _0x280a03;};'use strict';var Sequelize=require(_0xcf3d('0x0'));var moment=require(_0xcf3d('0x1'));module[_0xcf3d('0x2')]={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xcf3d('0x3')]},'interface':{'type':Sequelize[_0xcf3d('0x3')]},'type':{'type':Sequelize[_0xcf3d('0x3')],'defaultValue':_0xcf3d('0x4'),'comment':_0xcf3d('0x5')},'duration':{'type':Sequelize[_0xcf3d('0x6')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x55074b){var _0x5b1441=moment(_0x55074b);var _0x4e3427=moment(this['getDataValue'](_0xcf3d('0x7')));var _0x10d808=_0x5b1441[_0xcf3d('0x8')](_0x4e3427,_0xcf3d('0x9'));this[_0xcf3d('0xa')](_0xcf3d('0xb'),_0x55074b);this[_0xcf3d('0xa')](_0xcf3d('0xc'),_0x10d808||null);}},'data1':{'type':Sequelize[_0xcf3d('0x3')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize['STRING'],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0xcf3d('0x3')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xcf3d('0x3')],'comment':_0xcf3d('0xd')},'data5':{'type':Sequelize[_0xcf3d('0x3')],'comment':_0xcf3d('0xe')},'role':{'type':Sequelize[_0xcf3d('0x3')]},'internal':{'type':Sequelize[_0xcf3d('0x6')]},'uniqueid':{'type':Sequelize[_0xcf3d('0x3')]}};
\ No newline at end of file
index 80e6184..046419f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','update','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','name','query'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xedd9,0xfc));var _0x9edd=function(_0x12aebc,_0x5de7fe){_0x12aebc=_0x12aebc-0x0;var _0xe5a6ce=_0xedd9[_0x12aebc];return _0xe5a6ce;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={},_0x2ae8dd={},_0x41af53={'count':0x0,'rows':[]};var _0x5eccfb=_[_0x9edd('0x27')](db[_0x9edd('0x28')][_0x9edd('0x29')],function(_0x12c1bc){return{'name':_0x12c1bc[_0x9edd('0x2a')],'type':_0x12c1bc[_0x9edd('0x2b')][_0x9edd('0x2c')]};});_0x2ae8dd[_0x9edd('0x2d')]=_[_0x9edd('0x27')](_0x5eccfb,_0x9edd('0x2e'));_0x2ae8dd[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2f')]);_0x2ae8dd[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],_0x2ae8dd[_0x9edd('0x2f')]);_0x28cfae[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],qs[_0x9edd('0x34')](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x28cfae[_0x9edd('0x33')]=_0x28cfae[_0x9edd('0x33')][_0x9edd('0x35')]?_0x28cfae[_0x9edd('0x33')]:_0x2ae8dd[_0x9edd('0x2d')];if(!_0x52746a[_0x9edd('0x2f')][_0x9edd('0x36')](_0x9edd('0x37'))){_0x28cfae[_0x9edd('0x1d')]=qs[_0x9edd('0x1d')](_0x52746a[_0x9edd('0x2f')]['limit']);_0x28cfae[_0x9edd('0x1b')]=qs['offset'](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x1b')]);}_0x28cfae[_0x9edd('0x38')]=qs[_0x9edd('0x39')](_0x52746a[_0x9edd('0x2f')]['sort']);_0x28cfae[_0x9edd('0x3a')]=qs[_0x9edd('0x31')](_[_0x9edd('0x3b')](_0x52746a[_0x9edd('0x2f')],_0x2ae8dd[_0x9edd('0x31')]),_0x5eccfb);if(_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]){_0x28cfae[_0x9edd('0x3a')]=_[_0x9edd('0x3d')](_0x28cfae[_0x9edd('0x3a')],{'$or':_['map'](_0x5eccfb,function(_0x231604){if(_0x231604['type']!==_0x9edd('0x3e')){var _0x5658d6={};_0x5658d6[_0x231604[_0x9edd('0x2e')]]={'$like':'%'+_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]+'%'};return _0x5658d6;}})});}_0x28cfae=_['merge']({},_0x28cfae,_0x52746a[_0x9edd('0x3f')]);var _0xcbd0ef={'where':_0x28cfae[_0x9edd('0x3a')]};return db['MemberReport'][_0x9edd('0x1e')](_0xcbd0ef)['then'](function(_0x1fc4fb){_0x41af53[_0x9edd('0x1e')]=_0x1fc4fb;if(_0x52746a['query'][_0x9edd('0x40')]){_0x28cfae[_0x9edd('0x41')]=[{'all':!![]}];}return db[_0x9edd('0x28')][_0x9edd('0x42')](_0x28cfae);})['then'](function(_0x449f01){_0x41af53['rows']=_0x449f01;return _0x41af53;})[_0x9edd('0x21')](respondWithFilteredResult(_0x238b22,_0x28cfae))[_0x9edd('0x43')](handleError(_0x238b22,null));};exports['show']=function(_0x318757,_0x49a128){var _0x548299={'raw':!![],'where':{'id':_0x318757[_0x9edd('0x44')]['id']}},_0x369b69={};_0x369b69[_0x9edd('0x2d')]=_[_0x9edd('0x30')](db[_0x9edd('0x28')][_0x9edd('0x29')]);_0x369b69[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x318757[_0x9edd('0x2f')]);_0x369b69[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x369b69[_0x9edd('0x2d')],_0x369b69[_0x9edd('0x2f')]);_0x548299[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x369b69['model'],qs[_0x9edd('0x34')](_0x318757[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x548299[_0x9edd('0x33')]=_0x548299[_0x9edd('0x33')][_0x9edd('0x35')]?_0x548299[_0x9edd('0x33')]:_0x369b69['model'];if(_0x318757['query']['includeAll']){_0x548299[_0x9edd('0x41')]=[{'all':!![]}];}_0x548299=_['merge']({},_0x548299,_0x318757[_0x9edd('0x3f')]);return db[_0x9edd('0x28')][_0x9edd('0x45')](_0x548299)[_0x9edd('0x21')](handleEntityNotFound(_0x49a128,null))[_0x9edd('0x21')](respondWithResult(_0x49a128,null))['catch'](handleError(_0x49a128,null));};exports[_0x9edd('0x46')]=function(_0x35e63c,_0x40e33d){return db['MemberReport'][_0x9edd('0x46')](_0x35e63c[_0x9edd('0x47')],{})[_0x9edd('0x21')](respondWithResult(_0x40e33d,0xc9))[_0x9edd('0x43')](handleError(_0x40e33d,null));};exports[_0x9edd('0x48')]=function(_0x35bdec,_0x4d4f33){if(_0x35bdec[_0x9edd('0x47')]['id']){delete _0x35bdec[_0x9edd('0x47')]['id'];}return db['MemberReport'][_0x9edd('0x45')]({'where':{'id':_0x35bdec[_0x9edd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d4f33,null))[_0x9edd('0x21')](saveUpdates(_0x35bdec[_0x9edd('0x47')],null))[_0x9edd('0x21')](respondWithResult(_0x4d4f33,null))['catch'](handleError(_0x4d4f33,null));};exports[_0x9edd('0x49')]=function(_0x151157,_0x317a60){return db[_0x9edd('0x28')]['find']({'where':{'id':_0x151157[_0x9edd('0x44')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x317a60,null))[_0x9edd('0x21')](removeEntity(_0x317a60,null))['catch'](handleError(_0x317a60,null));};exports[_0x9edd('0x4a')]=function(_0x21f6ce,_0x57db43){return db[_0x9edd('0x28')]['describe']()[_0x9edd('0x21')](respondWithResult(_0x57db43,null))[_0x9edd('0x43')](handleError(_0x57db43,null));};
\ No newline at end of file
+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(_0x336376,_0xe4b28d){var _0x1d2a8e=function(_0x3afe68){while(--_0x3afe68){_0x336376['push'](_0x336376['shift']());}};_0x1d2a8e(++_0xe4b28d);}(_0x34e8,0x12c));var _0x834e=function(_0x1dab35,_0x1c407d){_0x1dab35=_0x1dab35-0x0;var _0x2e5098=_0x34e8[_0x1dab35];return _0x2e5098;};'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 b35522c..b1e7e2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2175=['util','api','request-promise','path','rimraf','../../config/environment','exports','define','report_member','membername_interface','membername','lodash'];(function(_0x5ce15c,_0x19c917){var _0x36e4f5=function(_0x50fa90){while(--_0x50fa90){_0x5ce15c['push'](_0x5ce15c['shift']());}};_0x36e4f5(++_0x19c917);}(_0x2175,0xa7));var _0x5217=function(_0x489a7f,_0x39f566){_0x489a7f=_0x489a7f-0x0;var _0x13f220=_0x2175[_0x489a7f];return _0x13f220;};'use strict';var _=require(_0x5217('0x0'));var util=require(_0x5217('0x1'));var logger=require('../../config/logger')(_0x5217('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5217('0x3'));var fs=require('fs');var path=require(_0x5217('0x4'));var rimraf=require(_0x5217('0x5'));var config=require(_0x5217('0x6'));var attributes=require('./memberReport.attributes');module[_0x5217('0x7')]=function(_0x416d3b,_0x4b112f){return _0x416d3b[_0x5217('0x8')]('MemberReport',attributes,{'tableName':_0x5217('0x9'),'paranoid':![],'indexes':[{'name':_0x5217('0xa'),'fields':[_0x5217('0xb'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9567=['../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','util'];(function(_0x1119db,_0x54f40b){var _0x3d5806=function(_0x27eafb){while(--_0x27eafb){_0x1119db['push'](_0x1119db['shift']());}};_0x3d5806(++_0x54f40b);}(_0x9567,0x67));var _0x7956=function(_0x4ac090,_0x421ff1){_0x4ac090=_0x4ac090-0x0;var _0x592f58=_0x9567[_0x4ac090];return _0x592f58;};'use strict';var _=require('lodash');var util=require(_0x7956('0x0'));var logger=require(_0x7956('0x1'))('api');var moment=require('moment');var BPromise=require(_0x7956('0x2'));var rp=require(_0x7956('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7956('0x4'));var config=require(_0x7956('0x5'));var attributes=require(_0x7956('0x6'));module[_0x7956('0x7')]=function(_0x2f4c9d,_0x4d3e98){return _0x2f4c9d[_0x7956('0x8')](_0x7956('0x9'),attributes,{'tableName':_0x7956('0xa'),'paranoid':![],'indexes':[{'name':_0x7956('0xb'),'fields':[_0x7956('0xc'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
index 3307f80..e16f8cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1c6=['body','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','MemberReport,\x20%s,\x20%s','request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','GetMemberReport','MemberReport','findAll','options','where','limit','include','map','model','attributes','then','debug','stringify','CreateMemberReport','create','raw','UpdateMemberReport'];(function(_0xdc3acc,_0x1da7c0){var _0x479901=function(_0x8a86b6){while(--_0x8a86b6){_0xdc3acc['push'](_0xdc3acc['shift']());}};_0x479901(++_0x1da7c0);}(_0xf1c6,0x145));var _0x6f1c=function(_0x32ef60,_0x2ca599){_0x32ef60=_0x32ef60-0x0;var _0x5cfaac=_0xf1c6[_0x32ef60];return _0x5cfaac;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6f1c('0x0'));var BPromise=require(_0x6f1c('0x1'));var rs=require(_0x6f1c('0x2'));var fs=require('fs');var Redis=require(_0x6f1c('0x3'));var db=require(_0x6f1c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6f1c('0x5'));var config=require('../../config/environment');var jayson=require(_0x6f1c('0x6'));var client=jayson[_0x6f1c('0x7')][_0x6f1c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x537c4f,_0x1c1751,_0x564a8f){return new BPromise(function(_0x275f11,_0x2d8ce2){return client[_0x6f1c('0x9')](_0x537c4f,_0x564a8f)['then'](function(_0x2f5ff0){logger['info'](_0x6f1c('0xa'),_0x1c1751,_0x6f1c('0xb'));logger['debug'](_0x6f1c('0xc'),_0x1c1751,_0x6f1c('0xb'),JSON['stringify'](_0x2f5ff0));if(_0x2f5ff0['error']){if(_0x2f5ff0['error']['code']===0x1f4){logger[_0x6f1c('0xd')]('MemberReport,\x20%s,\x20%s',_0x1c1751,_0x2f5ff0['error']['message']);return _0x2d8ce2(_0x2f5ff0['error']['message']);}logger[_0x6f1c('0xd')](_0x6f1c('0xa'),_0x1c1751,_0x2f5ff0[_0x6f1c('0xd')]['message']);return _0x275f11(_0x2f5ff0[_0x6f1c('0xd')][_0x6f1c('0xe')]);}else{logger[_0x6f1c('0xf')]('MemberReport,\x20%s,\x20%s',_0x1c1751,_0x6f1c('0xb'));_0x275f11(_0x2f5ff0[_0x6f1c('0x10')]['message']);}})[_0x6f1c('0x11')](function(_0x11bc81){logger[_0x6f1c('0xd')](_0x6f1c('0xa'),_0x1c1751,_0x11bc81);_0x2d8ce2(_0x11bc81);});});}exports[_0x6f1c('0x12')]=function(_0x16d2bb){var _0x491151=this;return new Promise(function(_0x2f9949,_0x6035da){return db[_0x6f1c('0x13')][_0x6f1c('0x14')]({'raw':_0x16d2bb[_0x6f1c('0x15')]?_0x16d2bb[_0x6f1c('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x16d2bb['options']?_0x16d2bb['options'][_0x6f1c('0x16')]||null:null,'attributes':_0x16d2bb['options']?_0x16d2bb[_0x6f1c('0x15')]['attributes']||null:null,'limit':_0x16d2bb[_0x6f1c('0x15')]?_0x16d2bb[_0x6f1c('0x15')][_0x6f1c('0x17')]||null:null,'include':_0x16d2bb[_0x6f1c('0x15')]?_0x16d2bb[_0x6f1c('0x15')][_0x6f1c('0x18')]?_[_0x6f1c('0x19')](_0x16d2bb[_0x6f1c('0x15')][_0x6f1c('0x18')],function(_0x18ff09){return{'model':db[_0x18ff09[_0x6f1c('0x1a')]],'as':_0x18ff09['as'],'attributes':_0x18ff09[_0x6f1c('0x1b')],'include':_0x18ff09[_0x6f1c('0x18')]?_[_0x6f1c('0x19')](_0x18ff09['include'],function(_0x2a3b6a){return{'model':db[_0x2a3b6a[_0x6f1c('0x1a')]],'as':_0x2a3b6a['as'],'attributes':_0x2a3b6a['attributes'],'include':_0x2a3b6a[_0x6f1c('0x18')]?_[_0x6f1c('0x19')](_0x2a3b6a['include'],function(_0x59931c){return{'model':db[_0x59931c['model']],'as':_0x59931c['as'],'attributes':_0x59931c['attributes']};}):[]};}):[]};}):[]:[]})[_0x6f1c('0x1c')](function(_0x1ac9f5){logger[_0x6f1c('0xf')](_0x6f1c('0x12'),_0x16d2bb);logger[_0x6f1c('0x1d')](_0x6f1c('0x12'),_0x16d2bb,JSON[_0x6f1c('0x1e')](_0x1ac9f5));_0x2f9949(_0x1ac9f5);})[_0x6f1c('0x11')](function(_0x32c722){logger[_0x6f1c('0xd')](_0x6f1c('0x12'),_0x32c722[_0x6f1c('0xe')],_0x16d2bb);_0x6035da(_0x491151['error'](0x1f4,_0x32c722['message']));});});};exports[_0x6f1c('0x1f')]=function(_0x4084af){var _0x383802=this;return new Promise(function(_0x26de6c,_0xad1bce){return db['MemberReport'][_0x6f1c('0x20')](_0x4084af['body'],{'raw':_0x4084af[_0x6f1c('0x15')]?_0x4084af['options'][_0x6f1c('0x21')]===undefined?!![]:![]:!![]})[_0x6f1c('0x1c')](function(_0x3c8585){logger[_0x6f1c('0xf')](_0x6f1c('0x1f'),_0x4084af);logger[_0x6f1c('0x1d')](_0x6f1c('0x1f'),_0x4084af,JSON[_0x6f1c('0x1e')](_0x3c8585));_0x26de6c(_0x3c8585);})[_0x6f1c('0x11')](function(_0x46e256){logger['error'](_0x6f1c('0x1f'),_0x46e256[_0x6f1c('0xe')],_0x4084af);_0xad1bce(_0x383802[_0x6f1c('0xd')](0x1f4,_0x46e256[_0x6f1c('0xe')]));});});};exports[_0x6f1c('0x22')]=function(_0x1609e3){var _0x454507=this;return new Promise(function(_0x326f85,_0x2a41ef){return db['MemberReport']['update'](_0x1609e3[_0x6f1c('0x23')],{'raw':_0x1609e3[_0x6f1c('0x15')]?_0x1609e3[_0x6f1c('0x15')][_0x6f1c('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1609e3[_0x6f1c('0x15')]?_0x1609e3[_0x6f1c('0x15')][_0x6f1c('0x16')]||null:null,'attributes':_0x1609e3[_0x6f1c('0x15')]?_0x1609e3[_0x6f1c('0x15')][_0x6f1c('0x1b')]||null:null,'limit':_0x1609e3[_0x6f1c('0x15')]?_0x1609e3[_0x6f1c('0x15')][_0x6f1c('0x17')]||null:null})[_0x6f1c('0x1c')](function(_0x1731a4){logger[_0x6f1c('0xf')]('UpdateMemberReport',_0x1609e3);logger['debug'](_0x6f1c('0x22'),_0x1609e3,JSON[_0x6f1c('0x1e')](_0x1731a4));_0x326f85(_0x1731a4);})[_0x6f1c('0x11')](function(_0xa54c4){logger[_0x6f1c('0xd')](_0x6f1c('0x22'),_0xa54c4[_0x6f1c('0xe')],_0x1609e3);_0x2a41ef(_0x454507[_0x6f1c('0xd')](0x1f4,_0xa54c4[_0x6f1c('0xe')]));});});};
\ No newline at end of file
+var _0x41d9=['body','update','where','UpdateMemberReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetMemberReport','findAll','options','raw','attributes','limit','include','model','map','CreateMemberReport','MemberReport','create'];(function(_0x36b037,_0x2b234e){var _0x409194=function(_0xddc9dc){while(--_0xddc9dc){_0x36b037['push'](_0x36b037['shift']());}};_0x409194(++_0x2b234e);}(_0x41d9,0x13c));var _0x941d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41d9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x941d('0x0'));var util=require(_0x941d('0x1'));var moment=require(_0x941d('0x2'));var BPromise=require(_0x941d('0x3'));var rs=require(_0x941d('0x4'));var fs=require('fs');var Redis=require(_0x941d('0x5'));var db=require(_0x941d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x941d('0x7'))(_0x941d('0x8'));var config=require('../../config/environment');var jayson=require(_0x941d('0x9'));var client=jayson[_0x941d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x179094,_0x5b100e,_0x3825df){return new BPromise(function(_0xa9021c,_0x33b259){return client[_0x941d('0xb')](_0x179094,_0x3825df)[_0x941d('0xc')](function(_0x546a1a){logger[_0x941d('0xd')](_0x941d('0xe'),_0x5b100e,_0x941d('0xf'));logger[_0x941d('0x10')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x5b100e,_0x941d('0xf'),JSON[_0x941d('0x11')](_0x546a1a));if(_0x546a1a[_0x941d('0x12')]){if(_0x546a1a[_0x941d('0x12')][_0x941d('0x13')]===0x1f4){logger[_0x941d('0x12')]('MemberReport,\x20%s,\x20%s',_0x5b100e,_0x546a1a[_0x941d('0x12')]['message']);return _0x33b259(_0x546a1a['error'][_0x941d('0x14')]);}logger[_0x941d('0x12')](_0x941d('0xe'),_0x5b100e,_0x546a1a[_0x941d('0x12')][_0x941d('0x14')]);return _0xa9021c(_0x546a1a[_0x941d('0x12')][_0x941d('0x14')]);}else{logger[_0x941d('0xd')](_0x941d('0xe'),_0x5b100e,_0x941d('0xf'));_0xa9021c(_0x546a1a[_0x941d('0x15')]['message']);}})[_0x941d('0x16')](function(_0x244d96){logger[_0x941d('0x12')](_0x941d('0xe'),_0x5b100e,_0x244d96);_0x33b259(_0x244d96);});});}exports[_0x941d('0x17')]=function(_0x3ac25f){var _0x3c1e1a=this;return new Promise(function(_0x2c6ce5,_0x4417fb){return db['MemberReport'][_0x941d('0x18')]({'raw':_0x3ac25f['options']?_0x3ac25f[_0x941d('0x19')][_0x941d('0x1a')]===undefined?!![]:![]:!![],'where':_0x3ac25f['options']?_0x3ac25f[_0x941d('0x19')]['where']||null:null,'attributes':_0x3ac25f['options']?_0x3ac25f[_0x941d('0x19')][_0x941d('0x1b')]||null:null,'limit':_0x3ac25f[_0x941d('0x19')]?_0x3ac25f['options'][_0x941d('0x1c')]||null:null,'include':_0x3ac25f[_0x941d('0x19')]?_0x3ac25f[_0x941d('0x19')]['include']?_['map'](_0x3ac25f[_0x941d('0x19')][_0x941d('0x1d')],function(_0x26b7b6){return{'model':db[_0x26b7b6[_0x941d('0x1e')]],'as':_0x26b7b6['as'],'attributes':_0x26b7b6[_0x941d('0x1b')],'include':_0x26b7b6[_0x941d('0x1d')]?_['map'](_0x26b7b6[_0x941d('0x1d')],function(_0x43a443){return{'model':db[_0x43a443[_0x941d('0x1e')]],'as':_0x43a443['as'],'attributes':_0x43a443['attributes'],'include':_0x43a443[_0x941d('0x1d')]?_[_0x941d('0x1f')](_0x43a443[_0x941d('0x1d')],function(_0x3a72d7){return{'model':db[_0x3a72d7[_0x941d('0x1e')]],'as':_0x3a72d7['as'],'attributes':_0x3a72d7[_0x941d('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x941d('0xc')](function(_0x2f20b3){logger[_0x941d('0xd')](_0x941d('0x17'),_0x3ac25f);logger[_0x941d('0x10')](_0x941d('0x17'),_0x3ac25f,JSON['stringify'](_0x2f20b3));_0x2c6ce5(_0x2f20b3);})[_0x941d('0x16')](function(_0x42050d){logger['error'](_0x941d('0x17'),_0x42050d[_0x941d('0x14')],_0x3ac25f);_0x4417fb(_0x3c1e1a[_0x941d('0x12')](0x1f4,_0x42050d[_0x941d('0x14')]));});});};exports[_0x941d('0x20')]=function(_0x17e60d){var _0x406f8b=this;return new Promise(function(_0x596d0b,_0x59297e){return db[_0x941d('0x21')][_0x941d('0x22')](_0x17e60d[_0x941d('0x23')],{'raw':_0x17e60d['options']?_0x17e60d['options'][_0x941d('0x1a')]===undefined?!![]:![]:!![]})[_0x941d('0xc')](function(_0x150e14){logger['info'](_0x941d('0x20'),_0x17e60d);logger[_0x941d('0x10')](_0x941d('0x20'),_0x17e60d,JSON[_0x941d('0x11')](_0x150e14));_0x596d0b(_0x150e14);})['catch'](function(_0x4362f2){logger[_0x941d('0x12')](_0x941d('0x20'),_0x4362f2[_0x941d('0x14')],_0x17e60d);_0x59297e(_0x406f8b[_0x941d('0x12')](0x1f4,_0x4362f2[_0x941d('0x14')]));});});};exports['UpdateMemberReport']=function(_0x5e21e0){var _0x530a4b=this;return new Promise(function(_0x109a8d,_0x558846){return db[_0x941d('0x21')][_0x941d('0x24')](_0x5e21e0[_0x941d('0x23')],{'raw':_0x5e21e0[_0x941d('0x19')]?_0x5e21e0[_0x941d('0x19')][_0x941d('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e21e0[_0x941d('0x19')]?_0x5e21e0[_0x941d('0x19')][_0x941d('0x25')]||null:null,'attributes':_0x5e21e0[_0x941d('0x19')]?_0x5e21e0['options'][_0x941d('0x1b')]||null:null,'limit':_0x5e21e0[_0x941d('0x19')]?_0x5e21e0[_0x941d('0x19')][_0x941d('0x1c')]||null:null})[_0x941d('0xc')](function(_0x1b03ac){logger[_0x941d('0xd')](_0x941d('0x26'),_0x5e21e0);logger[_0x941d('0x10')](_0x941d('0x26'),_0x5e21e0,JSON[_0x941d('0x11')](_0x1b03ac));_0x109a8d(_0x1b03ac);})[_0x941d('0x16')](function(_0x1401d4){logger['error']('UpdateMemberReport',_0x1401d4[_0x941d('0x14')],_0x5e21e0);_0x558846(_0x530a4b[_0x941d('0x12')](0x1f4,_0x1401d4['message']));});});};
\ No newline at end of file
index e34faf7..404e26d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1335=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./migration.controller','index','exports','multer','util','path','connect-timeout'];(function(_0x3d77b6,_0xb2d446){var _0x4afde3=function(_0x12cbf9){while(--_0x12cbf9){_0x3d77b6['push'](_0x3d77b6['shift']());}};_0x4afde3(++_0xb2d446);}(_0x1335,0x1c4));var _0x5133=function(_0xf5f890,_0x582e71){_0xf5f890=_0xf5f890-0x0;var _0x1cc372=_0x1335[_0xf5f890];return _0x1cc372;};'use strict';var multer=require(_0x5133('0x0'));var util=require(_0x5133('0x1'));var path=require(_0x5133('0x2'));var timeout=require(_0x5133('0x3'));var express=require(_0x5133('0x4'));var router=express[_0x5133('0x5')]();var fs_extra=require(_0x5133('0x6'));var auth=require(_0x5133('0x7'));var interaction=require(_0x5133('0x8'));var config=require('../../config/environment');var controller=require(_0x5133('0x9'));router['get']('/',controller[_0x5133('0xa')]);module[_0x5133('0xb')]=router;
\ No newline at end of file
+var _0x521f=['./migration.controller','get','index','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x9859ce,_0xbff7eb){var _0x5afdf0=function(_0xbe361f){while(--_0xbe361f){_0x9859ce['push'](_0x9859ce['shift']());}};_0x5afdf0(++_0xbff7eb);}(_0x521f,0xe8));var _0xf521=function(_0xd73884,_0x2ca96d){_0xd73884=_0xd73884-0x0;var _0x16b79c=_0x521f[_0xd73884];return _0x16b79c;};'use strict';var multer=require(_0xf521('0x0'));var util=require(_0xf521('0x1'));var path=require('path');var timeout=require(_0xf521('0x2'));var express=require(_0xf521('0x3'));var router=express[_0xf521('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf521('0x5'));var interaction=require(_0xf521('0x6'));var config=require(_0xf521('0x7'));var controller=require(_0xf521('0x8'));router[_0xf521('0x9')]('/',controller[_0xf521('0xa')]);module[_0xf521('0xb')]=router;
\ No newline at end of file
index b1a3e2d..4c1f157 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4d2=['exports','STRING','version','sequelize'];(function(_0x2551b0,_0x409d49){var _0x2fef11=function(_0x3152e9){while(--_0x3152e9){_0x2551b0['push'](_0x2551b0['shift']());}};_0x2fef11(++_0x409d49);}(_0xa4d2,0x123));var _0x2a4d=function(_0x300dab,_0x3e50ba){_0x300dab=_0x300dab-0x0;var _0x3b96b8=_0xa4d2[_0x300dab];return _0x3b96b8;};'use strict';var Sequelize=require(_0x2a4d('0x0'));module[_0x2a4d('0x1')]={'version':{'type':Sequelize[_0x2a4d('0x2')],'unique':_0x2a4d('0x3')}};
\ No newline at end of file
+var _0x8680=['exports','STRING'];(function(_0x265f54,_0x335e64){var _0x4d6f78=function(_0x4373a2){while(--_0x4373a2){_0x265f54['push'](_0x265f54['shift']());}};_0x4d6f78(++_0x335e64);}(_0x8680,0xe6));var _0x0868=function(_0x11b253,_0x43117d){_0x11b253=_0x11b253-0x0;var _0x16c3f7=_0x8680[_0x11b253];return _0x16c3f7;};'use strict';var Sequelize=require('sequelize');module[_0x0868('0x0')]={'version':{'type':Sequelize[_0x0868('0x1')],'unique':'version'}};
\ No newline at end of file
index b8e8ad5..beb3a3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x036b=['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','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','end','error','name','send','rawAttributes','fieldName','type','model','map','query','filters','attributes','fields','hasOwnProperty','sort','pick','where','merge','VIRTUAL','filter','options','Migration','include','rows','catch','eml-format','rimraf','zip-dir','request-promise','moment'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x036b,0x145));var _0xb036=function(_0x2946ba,_0x3256a3){_0x2946ba=_0x2946ba-0x0;var _0x31458f=_0x036b[_0x2946ba];return _0x31458f;};'use strict';var emlformat=require(_0xb036('0x0'));var rimraf=require(_0xb036('0x1'));var zipdir=require(_0xb036('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb036('0x3'));var moment=require(_0xb036('0x4'));var BPromise=require(_0xb036('0x5'));var Mustache=require(_0xb036('0x6'));var util=require(_0xb036('0x7'));var path=require('path');var sox=require(_0xb036('0x8'));var csv=require(_0xb036('0x9'));var ejs=require(_0xb036('0xa'));var fs=require('fs');var fs_extra=require(_0xb036('0xb'));var _=require(_0xb036('0xc'));var squel=require(_0xb036('0xd'));var crypto=require('crypto');var jsforce=require(_0xb036('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb036('0x9'));var querystring=require(_0xb036('0xf'));var Papa=require(_0xb036('0x10'));var Redis=require(_0xb036('0x11'));var authService=require(_0xb036('0x12'));var qs=require(_0xb036('0x13'));var as=require(_0xb036('0x14'));var hardwareService=require(_0xb036('0x15'));var logger=require(_0xb036('0x16'))(_0xb036('0x17'));var utils=require(_0xb036('0x18'));var config=require(_0xb036('0x19'));var licenseUtil=require(_0xb036('0x1a'));var db=require(_0xb036('0x1b'))['db'];function respondWithStatusCode(_0x5c3c5c,_0x5325ce){_0x5325ce=_0x5325ce||0xcc;return function(_0x4db926){if(_0x4db926){return _0x5c3c5c[_0xb036('0x1c')](_0x5325ce);}return _0x5c3c5c[_0xb036('0x1d')](_0x5325ce)['end']();};}function respondWithResult(_0x216d5b,_0x162ced){_0x162ced=_0x162ced||0xc8;return function(_0x21bcc2){if(_0x21bcc2){return _0x216d5b[_0xb036('0x1d')](_0x162ced)['json'](_0x21bcc2);}};}function respondWithFilteredResult(_0x371f92,_0x43ba91){return function(_0x5c953b){if(_0x5c953b){var _0x4c6c42=typeof _0x43ba91[_0xb036('0x1e')]===_0xb036('0x1f')&&typeof _0x43ba91[_0xb036('0x20')]===_0xb036('0x1f');var _0x4ccdf1=_0x5c953b['count'];var _0x38e5c8=_0x4c6c42?0x0:_0x43ba91['offset'];var _0x992a54=_0x4c6c42?_0x5c953b[_0xb036('0x21')]:_0x43ba91[_0xb036('0x1e')]+_0x43ba91['limit'];var _0x5b710b;if(_0x992a54>=_0x4ccdf1){_0x992a54=_0x4ccdf1;_0x5b710b=0xc8;}else{_0x5b710b=0xce;}_0x371f92[_0xb036('0x1d')](_0x5b710b);return _0x371f92['set'](_0xb036('0x22'),_0x38e5c8+'-'+_0x992a54+'/'+_0x4ccdf1)['json'](_0x5c953b);}return null;};}function patchUpdates(_0x5207ad){return function(_0x2a94d3){try{jsonpatch[_0xb036('0x23')](_0x2a94d3,_0x5207ad,!![]);}catch(_0x5251ad){return BPromise[_0xb036('0x24')](_0x5251ad);}return _0x2a94d3[_0xb036('0x25')]();};}function saveUpdates(_0x142ff5,_0xe2bd24){return function(_0xba2c60){if(_0xba2c60){return _0xba2c60[_0xb036('0x26')](_0x142ff5)['then'](function(_0x31ef6d){return _0x31ef6d;});}return null;};}function removeEntity(_0x3e137b,_0x581e8b){return function(_0x22f150){if(_0x22f150){return _0x22f150[_0xb036('0x27')]()[_0xb036('0x28')](function(){_0x3e137b[_0xb036('0x1d')](0xcc)[_0xb036('0x29')]();});}};}function handleEntityNotFound(_0x1fc870,_0xf31e6b){return function(_0x3e418e){if(!_0x3e418e){_0x1fc870[_0xb036('0x1c')](0x194);}return _0x3e418e;};}function handleError(_0x1f0a08,_0x7ca66e){_0x7ca66e=_0x7ca66e||0x1f4;return function(_0x3fff5f){logger[_0xb036('0x2a')](_0x3fff5f['stack']);if(_0x3fff5f[_0xb036('0x2b')]){delete _0x3fff5f[_0xb036('0x2b')];}_0x1f0a08['status'](_0x7ca66e)[_0xb036('0x2c')](_0x3fff5f);};}exports['index']=function(_0x10e2af,_0x254dcb){var _0x57e02e={},_0x52ee5b={},_0x2346c6={'count':0x0,'rows':[]};var _0x47d465=_['map'](db['Migration'][_0xb036('0x2d')],function(_0x504b0d){return{'name':_0x504b0d[_0xb036('0x2e')],'type':_0x504b0d[_0xb036('0x2f')]['key']};});_0x52ee5b[_0xb036('0x30')]=_[_0xb036('0x31')](_0x47d465,_0xb036('0x2b'));_0x52ee5b[_0xb036('0x32')]=_['keys'](_0x10e2af[_0xb036('0x32')]);_0x52ee5b[_0xb036('0x33')]=_['intersection'](_0x52ee5b[_0xb036('0x30')],_0x52ee5b[_0xb036('0x32')]);_0x57e02e[_0xb036('0x34')]=_['intersection'](_0x52ee5b[_0xb036('0x30')],qs[_0xb036('0x35')](_0x10e2af['query'][_0xb036('0x35')]));_0x57e02e[_0xb036('0x34')]=_0x57e02e[_0xb036('0x34')]['length']?_0x57e02e['attributes']:_0x52ee5b[_0xb036('0x30')];if(!_0x10e2af[_0xb036('0x32')][_0xb036('0x36')]('nolimit')){_0x57e02e[_0xb036('0x20')]=qs[_0xb036('0x20')](_0x10e2af['query'][_0xb036('0x20')]);_0x57e02e[_0xb036('0x1e')]=qs[_0xb036('0x1e')](_0x10e2af[_0xb036('0x32')][_0xb036('0x1e')]);}_0x57e02e['order']=qs['sort'](_0x10e2af['query'][_0xb036('0x37')]);_0x57e02e['where']=qs[_0xb036('0x33')](_[_0xb036('0x38')](_0x10e2af[_0xb036('0x32')],_0x52ee5b[_0xb036('0x33')]),_0x47d465);if(_0x10e2af[_0xb036('0x32')]['filter']){_0x57e02e[_0xb036('0x39')]=_[_0xb036('0x3a')](_0x57e02e[_0xb036('0x39')],{'$or':_[_0xb036('0x31')](_0x47d465,function(_0x576676){if(_0x576676['type']!==_0xb036('0x3b')){var _0x1ade6e={};_0x1ade6e[_0x576676[_0xb036('0x2b')]]={'$like':'%'+_0x10e2af[_0xb036('0x32')][_0xb036('0x3c')]+'%'};return _0x1ade6e;}})});}_0x57e02e=_[_0xb036('0x3a')]({},_0x57e02e,_0x10e2af[_0xb036('0x3d')]);var _0x5fbba={'where':_0x57e02e[_0xb036('0x39')]};return db[_0xb036('0x3e')][_0xb036('0x21')](_0x5fbba)[_0xb036('0x28')](function(_0x408339){_0x2346c6[_0xb036('0x21')]=_0x408339;if(_0x10e2af[_0xb036('0x32')]['includeAll']){_0x57e02e[_0xb036('0x3f')]=[{'all':!![]}];}return db[_0xb036('0x3e')]['findAll'](_0x57e02e);})[_0xb036('0x28')](function(_0x54d1df){_0x2346c6[_0xb036('0x40')]=_0x54d1df;return _0x2346c6;})[_0xb036('0x28')](respondWithFilteredResult(_0x254dcb,_0x57e02e))[_0xb036('0x41')](handleError(_0x254dcb,null));};
\ No newline at end of file
+var _0xbaf7=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','status','end','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','sendStatus','stack','name','send','index','map','Migration','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','catch','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis'];(function(_0x1a2011,_0x2957be){var _0x2568fa=function(_0xee34da){while(--_0xee34da){_0x1a2011['push'](_0x1a2011['shift']());}};_0x2568fa(++_0x2957be);}(_0xbaf7,0x142));var _0x7baf=function(_0x2b1259,_0x433c7a){_0x2b1259=_0x2b1259-0x0;var _0x1fb510=_0xbaf7[_0x2b1259];return _0x1fb510;};'use strict';var emlformat=require(_0x7baf('0x0'));var rimraf=require(_0x7baf('0x1'));var zipdir=require(_0x7baf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7baf('0x3'));var moment=require('moment');var BPromise=require(_0x7baf('0x4'));var Mustache=require(_0x7baf('0x5'));var util=require(_0x7baf('0x6'));var path=require(_0x7baf('0x7'));var sox=require(_0x7baf('0x8'));var csv=require(_0x7baf('0x9'));var ejs=require(_0x7baf('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7baf('0xb'));var squel=require(_0x7baf('0xc'));var crypto=require(_0x7baf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7baf('0xe'));var toCsv=require(_0x7baf('0x9'));var querystring=require(_0x7baf('0xf'));var Papa=require(_0x7baf('0x10'));var Redis=require(_0x7baf('0x11'));var authService=require(_0x7baf('0x12'));var qs=require(_0x7baf('0x13'));var as=require(_0x7baf('0x14'));var hardwareService=require(_0x7baf('0x15'));var logger=require(_0x7baf('0x16'))(_0x7baf('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1434c5,_0x50896e){_0x50896e=_0x50896e||0xcc;return function(_0x3701ca){if(_0x3701ca){return _0x1434c5['sendStatus'](_0x50896e);}return _0x1434c5[_0x7baf('0x18')](_0x50896e)[_0x7baf('0x19')]();};}function respondWithResult(_0x2705a9,_0x475e48){_0x475e48=_0x475e48||0xc8;return function(_0x1a1800){if(_0x1a1800){return _0x2705a9['status'](_0x475e48)['json'](_0x1a1800);}};}function respondWithFilteredResult(_0xc48014,_0x18d0de){return function(_0x21cd60){if(_0x21cd60){var _0x544091=typeof _0x18d0de[_0x7baf('0x1a')]===_0x7baf('0x1b')&&typeof _0x18d0de[_0x7baf('0x1c')]===_0x7baf('0x1b');var _0x1827f0=_0x21cd60[_0x7baf('0x1d')];var _0x5bd369=_0x544091?0x0:_0x18d0de[_0x7baf('0x1a')];var _0x170de8=_0x544091?_0x21cd60[_0x7baf('0x1d')]:_0x18d0de[_0x7baf('0x1a')]+_0x18d0de[_0x7baf('0x1c')];var _0x55bf1e;if(_0x170de8>=_0x1827f0){_0x170de8=_0x1827f0;_0x55bf1e=0xc8;}else{_0x55bf1e=0xce;}_0xc48014[_0x7baf('0x18')](_0x55bf1e);return _0xc48014[_0x7baf('0x1e')](_0x7baf('0x1f'),_0x5bd369+'-'+_0x170de8+'/'+_0x1827f0)[_0x7baf('0x20')](_0x21cd60);}return null;};}function patchUpdates(_0x20e31f){return function(_0x5b7011){try{jsonpatch['apply'](_0x5b7011,_0x20e31f,!![]);}catch(_0x193e5a){return BPromise['reject'](_0x193e5a);}return _0x5b7011['save']();};}function saveUpdates(_0x358644,_0x4de87d){return function(_0x27c0cc){if(_0x27c0cc){return _0x27c0cc[_0x7baf('0x21')](_0x358644)[_0x7baf('0x22')](function(_0x22124b){return _0x22124b;});}return null;};}function removeEntity(_0x4eac16,_0x24fe1f){return function(_0x5aa860){if(_0x5aa860){return _0x5aa860[_0x7baf('0x23')]()['then'](function(){_0x4eac16[_0x7baf('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x46f4a4,_0xc7f416){return function(_0x675097){if(!_0x675097){_0x46f4a4[_0x7baf('0x24')](0x194);}return _0x675097;};}function handleError(_0x4cca46,_0x56fcad){_0x56fcad=_0x56fcad||0x1f4;return function(_0x5716f6){logger['error'](_0x5716f6[_0x7baf('0x25')]);if(_0x5716f6[_0x7baf('0x26')]){delete _0x5716f6[_0x7baf('0x26')];}_0x4cca46[_0x7baf('0x18')](_0x56fcad)[_0x7baf('0x27')](_0x5716f6);};}exports[_0x7baf('0x28')]=function(_0x55d4c1,_0xf291b1){var _0x1e4475={},_0x46cabf={},_0x5bef93={'count':0x0,'rows':[]};var _0x1f6600=_[_0x7baf('0x29')](db[_0x7baf('0x2a')][_0x7baf('0x2b')],function(_0x30caad){return{'name':_0x30caad['fieldName'],'type':_0x30caad[_0x7baf('0x2c')][_0x7baf('0x2d')]};});_0x46cabf['model']=_['map'](_0x1f6600,_0x7baf('0x26'));_0x46cabf[_0x7baf('0x2e')]=_[_0x7baf('0x2f')](_0x55d4c1[_0x7baf('0x2e')]);_0x46cabf[_0x7baf('0x30')]=_[_0x7baf('0x31')](_0x46cabf[_0x7baf('0x32')],_0x46cabf[_0x7baf('0x2e')]);_0x1e4475['attributes']=_[_0x7baf('0x31')](_0x46cabf['model'],qs[_0x7baf('0x33')](_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x33')]));_0x1e4475['attributes']=_0x1e4475[_0x7baf('0x34')][_0x7baf('0x35')]?_0x1e4475[_0x7baf('0x34')]:_0x46cabf['model'];if(!_0x55d4c1['query'][_0x7baf('0x36')](_0x7baf('0x37'))){_0x1e4475[_0x7baf('0x1c')]=qs[_0x7baf('0x1c')](_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x1c')]);_0x1e4475[_0x7baf('0x1a')]=qs[_0x7baf('0x1a')](_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x1a')]);}_0x1e4475[_0x7baf('0x38')]=qs[_0x7baf('0x39')](_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x39')]);_0x1e4475['where']=qs[_0x7baf('0x30')](_[_0x7baf('0x3a')](_0x55d4c1[_0x7baf('0x2e')],_0x46cabf[_0x7baf('0x30')]),_0x1f6600);if(_0x55d4c1['query'][_0x7baf('0x3b')]){_0x1e4475['where']=_[_0x7baf('0x3c')](_0x1e4475[_0x7baf('0x3d')],{'$or':_['map'](_0x1f6600,function(_0xf0b83a){if(_0xf0b83a[_0x7baf('0x2c')]!==_0x7baf('0x3e')){var _0x244508={};_0x244508[_0xf0b83a[_0x7baf('0x26')]]={'$like':'%'+_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x3b')]+'%'};return _0x244508;}})});}_0x1e4475=_[_0x7baf('0x3c')]({},_0x1e4475,_0x55d4c1[_0x7baf('0x3f')]);var _0x47e4fa={'where':_0x1e4475[_0x7baf('0x3d')]};return db[_0x7baf('0x2a')][_0x7baf('0x1d')](_0x47e4fa)[_0x7baf('0x22')](function(_0x620278){_0x5bef93[_0x7baf('0x1d')]=_0x620278;if(_0x55d4c1[_0x7baf('0x2e')][_0x7baf('0x40')]){_0x1e4475[_0x7baf('0x41')]=[{'all':!![]}];}return db[_0x7baf('0x2a')][_0x7baf('0x42')](_0x1e4475);})['then'](function(_0x1c191f){_0x5bef93['rows']=_0x1c191f;return _0x5bef93;})['then'](respondWithFilteredResult(_0xf291b1,_0x1e4475))[_0x7baf('0x43')](handleError(_0xf291b1,null));};
\ No newline at end of file
index bb1e5bf..30202b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2339=['path','rimraf','../../config/environment','exports','define','migrations','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0xbf9e78,_0x540f52){var _0x2b5563=function(_0x269788){while(--_0x269788){_0xbf9e78['push'](_0xbf9e78['shift']());}};_0x2b5563(++_0x540f52);}(_0x2339,0x1da));var _0x9233=function(_0x12e286,_0xe7ba2a){_0x12e286=_0x12e286-0x0;var _0x47852e=_0x2339[_0x12e286];return _0x47852e;};'use strict';var _=require(_0x9233('0x0'));var util=require(_0x9233('0x1'));var logger=require(_0x9233('0x2'))(_0x9233('0x3'));var moment=require(_0x9233('0x4'));var BPromise=require('bluebird');var rp=require(_0x9233('0x5'));var fs=require('fs');var path=require(_0x9233('0x6'));var rimraf=require(_0x9233('0x7'));var config=require(_0x9233('0x8'));var attributes=require('./migration.attributes');module[_0x9233('0x9')]=function(_0x3e74d2,_0x18d123){return _0x3e74d2[_0x9233('0xa')]('Migration',attributes,{'tableName':_0x9233('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x98d5=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','migrations'];(function(_0x486f4a,_0x478dc7){var _0x135d99=function(_0x434008){while(--_0x434008){_0x486f4a['push'](_0x486f4a['shift']());}};_0x135d99(++_0x478dc7);}(_0x98d5,0x188));var _0x598d=function(_0x22f6de,_0x464538){_0x22f6de=_0x22f6de-0x0;var _0x1861fb=_0x98d5[_0x22f6de];return _0x1861fb;};'use strict';var _=require(_0x598d('0x0'));var util=require(_0x598d('0x1'));var logger=require(_0x598d('0x2'))(_0x598d('0x3'));var moment=require('moment');var BPromise=require(_0x598d('0x4'));var rp=require(_0x598d('0x5'));var fs=require('fs');var path=require(_0x598d('0x6'));var rimraf=require(_0x598d('0x7'));var config=require(_0x598d('0x8'));var attributes=require(_0x598d('0x9'));module[_0x598d('0xa')]=function(_0x65db4,_0x16a64d){return _0x65db4[_0x598d('0xb')](_0x598d('0xc'),attributes,{'tableName':_0x598d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 853d3c8..b7a653d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9099=['../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','Migration,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2d7a4b,_0xa36b04){var _0x603707=function(_0x498947){while(--_0x498947){_0x2d7a4b['push'](_0x2d7a4b['shift']());}};_0x603707(++_0xa36b04);}(_0x9099,0x1ac));var _0x9909=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0x9099[_0x2576d7];return _0x16a08c;};'use strict';var _=require(_0x9909('0x0'));var util=require('util');var moment=require(_0x9909('0x1'));var BPromise=require(_0x9909('0x2'));var rs=require(_0x9909('0x3'));var fs=require('fs');var Redis=require(_0x9909('0x4'));var db=require(_0x9909('0x5'))['db'];var utils=require(_0x9909('0x6'));var logger=require(_0x9909('0x7'))(_0x9909('0x8'));var config=require(_0x9909('0x9'));var jayson=require(_0x9909('0xa'));var client=jayson[_0x9909('0xb')][_0x9909('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3b7391,_0x3dc2dd,_0x54011f){return new BPromise(function(_0x6d755a,_0x5dcd39){return client['request'](_0x3b7391,_0x54011f)['then'](function(_0x5023b7){logger[_0x9909('0xd')]('Migration,\x20%s,\x20%s',_0x3dc2dd,_0x9909('0xe'));logger[_0x9909('0xf')](_0x9909('0x10'),_0x3dc2dd,'request\x20sent',JSON[_0x9909('0x11')](_0x5023b7));if(_0x5023b7['error']){if(_0x5023b7[_0x9909('0x12')][_0x9909('0x13')]===0x1f4){logger[_0x9909('0x12')](_0x9909('0x14'),_0x3dc2dd,_0x5023b7[_0x9909('0x12')][_0x9909('0x15')]);return _0x5dcd39(_0x5023b7[_0x9909('0x12')][_0x9909('0x15')]);}logger[_0x9909('0x12')](_0x9909('0x14'),_0x3dc2dd,_0x5023b7[_0x9909('0x12')][_0x9909('0x15')]);return _0x6d755a(_0x5023b7[_0x9909('0x12')]['message']);}else{logger[_0x9909('0xd')]('Migration,\x20%s,\x20%s',_0x3dc2dd,_0x9909('0xe'));_0x6d755a(_0x5023b7['result'][_0x9909('0x15')]);}})[_0x9909('0x16')](function(_0x245f0d){logger['error'](_0x9909('0x14'),_0x3dc2dd,_0x245f0d);_0x5dcd39(_0x245f0d);});});}
\ No newline at end of file
+var _0x3eec=['debug','Migration,\x20%s,\x20%s,\x20%s','error','code','message','Migration,\x20%s,\x20%s','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x3eec,0x1e9));var _0xc3ee=function(_0x1cf4b5,_0x1782b0){_0x1cf4b5=_0x1cf4b5-0x0;var _0x2e60a4=_0x3eec[_0x1cf4b5];return _0x2e60a4;};'use strict';var _=require(_0xc3ee('0x0'));var util=require(_0xc3ee('0x1'));var moment=require(_0xc3ee('0x2'));var BPromise=require(_0xc3ee('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc3ee('0x4'));var db=require(_0xc3ee('0x5'))['db'];var utils=require(_0xc3ee('0x6'));var logger=require(_0xc3ee('0x7'))(_0xc3ee('0x8'));var config=require(_0xc3ee('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc3ee('0xa')][_0xc3ee('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xea4318,_0x2cc750,_0x356374){return new BPromise(function(_0x3d74c0,_0xd88f6){return client[_0xc3ee('0xc')](_0xea4318,_0x356374)[_0xc3ee('0xd')](function(_0x23e9c0){logger['info']('Migration,\x20%s,\x20%s',_0x2cc750,_0xc3ee('0xe'));logger[_0xc3ee('0xf')](_0xc3ee('0x10'),_0x2cc750,_0xc3ee('0xe'),JSON['stringify'](_0x23e9c0));if(_0x23e9c0[_0xc3ee('0x11')]){if(_0x23e9c0['error'][_0xc3ee('0x12')]===0x1f4){logger[_0xc3ee('0x11')]('Migration,\x20%s,\x20%s',_0x2cc750,_0x23e9c0['error'][_0xc3ee('0x13')]);return _0xd88f6(_0x23e9c0['error'][_0xc3ee('0x13')]);}logger['error'](_0xc3ee('0x14'),_0x2cc750,_0x23e9c0['error'][_0xc3ee('0x13')]);return _0x3d74c0(_0x23e9c0[_0xc3ee('0x11')][_0xc3ee('0x13')]);}else{logger[_0xc3ee('0x15')](_0xc3ee('0x14'),_0x2cc750,_0xc3ee('0xe'));_0x3d74c0(_0x23e9c0[_0xc3ee('0x16')]['message']);}})[_0xc3ee('0x17')](function(_0x4eea89){logger[_0xc3ee('0x11')](_0xc3ee('0x14'),_0x2cc750,_0x4eea89);_0xd88f6(_0x4eea89);});});}
\ No newline at end of file
index 0ae10bc..dbf29c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ee=['./network.controller','get','isAuthenticated','post','put','/:id','update','delete','destroy','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x644ecd,_0x397f36){var _0x1c66ce=function(_0x4cf42b){while(--_0x4cf42b){_0x644ecd['push'](_0x644ecd['shift']());}};_0x1c66ce(++_0x397f36);}(_0xd0ee,0x19a));var _0xed0e=function(_0x371a20,_0x1feafa){_0x371a20=_0x371a20-0x0;var _0x2fd0f7=_0xd0ee[_0x371a20];return _0x2fd0f7;};'use strict';var multer=require('multer');var util=require(_0xed0e('0x0'));var path=require('path');var timeout=require(_0xed0e('0x1'));var express=require(_0xed0e('0x2'));var router=express['Router']();var fs_extra=require(_0xed0e('0x3'));var auth=require(_0xed0e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xed0e('0x5'));var controller=require(_0xed0e('0x6'));router[_0xed0e('0x7')]('/',auth[_0xed0e('0x8')](),controller['index']);router['get']('/:id',auth[_0xed0e('0x8')](),controller['show']);router[_0xed0e('0x9')]('/',auth[_0xed0e('0x8')](),controller['create']);router[_0xed0e('0xa')](_0xed0e('0xb'),auth['isAuthenticated'](),controller[_0xed0e('0xc')]);router[_0xed0e('0xd')](_0xed0e('0xb'),auth['isAuthenticated'](),controller[_0xed0e('0xe')]);module[_0xed0e('0xf')]=router;
\ No newline at end of file
+var _0x29b6=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','post','put','update','delete'];(function(_0xf16cc,_0x46f9d0){var _0x4ab02e=function(_0x4c2fb2){while(--_0x4c2fb2){_0xf16cc['push'](_0xf16cc['shift']());}};_0x4ab02e(++_0x46f9d0);}(_0x29b6,0x17e));var _0x629b=function(_0x11c5da,_0x5799cf){_0x11c5da=_0x11c5da-0x0;var _0x5cfbf1=_0x29b6[_0x11c5da];return _0x5cfbf1;};'use strict';var multer=require(_0x629b('0x0'));var util=require(_0x629b('0x1'));var path=require(_0x629b('0x2'));var timeout=require(_0x629b('0x3'));var express=require(_0x629b('0x4'));var router=express[_0x629b('0x5')]();var fs_extra=require(_0x629b('0x6'));var auth=require(_0x629b('0x7'));var interaction=require(_0x629b('0x8'));var config=require(_0x629b('0x9'));var controller=require('./network.controller');router[_0x629b('0xa')]('/',auth['isAuthenticated'](),controller[_0x629b('0xb')]);router[_0x629b('0xa')](_0x629b('0xc'),auth[_0x629b('0xd')](),controller['show']);router[_0x629b('0xe')]('/',auth[_0x629b('0xd')](),controller['create']);router[_0x629b('0xf')](_0x629b('0xc'),auth[_0x629b('0xd')](),controller[_0x629b('0x10')]);router[_0x629b('0x11')](_0x629b('0xc'),auth[_0x629b('0xd')](),controller[_0x629b('0x12')]);module[_0x629b('0x13')]=router;
\ No newline at end of file
index e3d59b2..030fa72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3bc=['externip','STRING','exports','localnet'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xc3bc,0x142));var _0xcc3b=function(_0x245dd2,_0x37a45d){_0x245dd2=_0x245dd2-0x0;var _0x5d2f32=_0xc3bc[_0x245dd2];return _0x5d2f32;};'use strict';var Sequelize=require('sequelize');module[_0xcc3b('0x0')]={'type':{'type':Sequelize['ENUM'](_0xcc3b('0x1'),_0xcc3b('0x2'),'stun','turn')},'value':{'type':Sequelize[_0xcc3b('0x3')]},'username':{'type':Sequelize[_0xcc3b('0x3')]},'password':{'type':Sequelize[_0xcc3b('0x3')]}};
\ No newline at end of file
+var _0xd007=['exports','ENUM','localnet','turn','STRING'];(function(_0x262baa,_0x283058){var _0x4f2257=function(_0x2cd1c6){while(--_0x2cd1c6){_0x262baa['push'](_0x262baa['shift']());}};_0x4f2257(++_0x283058);}(_0xd007,0x1a9));var _0x7d00=function(_0x2811c5,_0xfb138c){_0x2811c5=_0x2811c5-0x0;var _0x11c0c5=_0xd007[_0x2811c5];return _0x11c0c5;};'use strict';var Sequelize=require('sequelize');module[_0x7d00('0x0')]={'type':{'type':Sequelize[_0x7d00('0x1')](_0x7d00('0x2'),'externip','stun',_0x7d00('0x3'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x7d00('0x4')]},'password':{'type':Sequelize[_0x7d00('0x4')]}};
\ No newline at end of file
index 7b08ee7..0eb1804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ac=['create','transaction','body','toUpperCase','STUN','root','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','readFileSync','join','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','sequelize','update','server/files/templates/stun_multiple.ejs','chan_sip.so','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','end','json','undefined','limit','count','offset','status','set','Content-Range','reject','destroy','sendStatus','stack','name','index','map','fieldName','type','key','model','keys','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','includeAll','include','Network','findAll','rows','show','params','rawAttributes','length','find'];(function(_0x260495,_0x5ee470){var _0x19aa77=function(_0x5c34ae){while(--_0x5c34ae){_0x260495['push'](_0x260495['shift']());}};_0x19aa77(++_0x5ee470);}(_0x54ac,0x83));var _0xc54a=function(_0x2498b5,_0x514ddb){_0x2498b5=_0x2498b5-0x0;var _0x5c48d8=_0x54ac[_0x2498b5];return _0x5c48d8;};'use strict';var emlformat=require(_0xc54a('0x0'));var rimraf=require(_0xc54a('0x1'));var zipdir=require(_0xc54a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc54a('0x3'));var moment=require(_0xc54a('0x4'));var BPromise=require(_0xc54a('0x5'));var Mustache=require(_0xc54a('0x6'));var util=require(_0xc54a('0x7'));var path=require(_0xc54a('0x8'));var sox=require(_0xc54a('0x9'));var csv=require(_0xc54a('0xa'));var ejs=require(_0xc54a('0xb'));var fs=require('fs');var fs_extra=require(_0xc54a('0xc'));var _=require(_0xc54a('0xd'));var squel=require(_0xc54a('0xe'));var crypto=require(_0xc54a('0xf'));var jsforce=require(_0xc54a('0x10'));var deskjs=require(_0xc54a('0x11'));var toCsv=require(_0xc54a('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc54a('0x12'));var authService=require(_0xc54a('0x13'));var qs=require(_0xc54a('0x14'));var as=require(_0xc54a('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc54a('0x16'));var utils=require('../../config/utils');var config=require(_0xc54a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc54a('0x18'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xc54a('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x55622a,_0x55ac08,_0x93208,_0x1605e6){return new BPromise(function(_0x4a7784,_0x54cfbf){var _0xdb77d5=_0x1605e6||client;return _0xdb77d5['request'](_0x55622a,_0x93208)[_0xc54a('0x1a')](function(_0x36f6cf){logger[_0xc54a('0x1b')](_0xc54a('0x1c'),_0x55ac08,_0xc54a('0x1d'));logger[_0xc54a('0x1e')]('Network,\x20%s,\x20%s,\x20%s',_0x55ac08,_0xc54a('0x1d'),JSON[_0xc54a('0x1f')](_0x36f6cf));if(_0x36f6cf[_0xc54a('0x20')]){if(_0x36f6cf[_0xc54a('0x20')][_0xc54a('0x21')]===0x1f4){logger[_0xc54a('0x20')](_0xc54a('0x1c'),_0x55ac08,_0x36f6cf[_0xc54a('0x20')]['message']);return _0x54cfbf(_0x36f6cf[_0xc54a('0x20')][_0xc54a('0x22')]);}logger[_0xc54a('0x20')](_0xc54a('0x1c'),_0x55ac08,_0x36f6cf[_0xc54a('0x20')][_0xc54a('0x22')]);return _0x4a7784(_0x36f6cf['error'][_0xc54a('0x22')]);}else{logger['info'](_0xc54a('0x1c'),_0x55ac08,_0xc54a('0x1d'));_0x4a7784(_0x36f6cf[_0xc54a('0x23')][_0xc54a('0x22')]);}})[_0xc54a('0x24')](function(_0x40a1e0){logger[_0xc54a('0x20')](_0xc54a('0x1c'),_0x55ac08,_0x40a1e0);_0x54cfbf(_0x40a1e0);});});}function respondWithStatusCode(_0x5297af,_0x20ca65){_0x20ca65=_0x20ca65||0xcc;return function(_0x10a9f6){if(_0x10a9f6){return _0x5297af['sendStatus'](_0x20ca65);}return _0x5297af['status'](_0x20ca65)[_0xc54a('0x25')]();};}function respondWithResult(_0x5eee61,_0x48a49c){_0x48a49c=_0x48a49c||0xc8;return function(_0x53b8af){if(_0x53b8af){return _0x5eee61['status'](_0x48a49c)[_0xc54a('0x26')](_0x53b8af);}};}function respondWithFilteredResult(_0x343cac,_0x4dd8b1){return function(_0x4b1832){if(_0x4b1832){var _0x54fe58=typeof _0x4dd8b1['offset']===_0xc54a('0x27')&&typeof _0x4dd8b1[_0xc54a('0x28')]==='undefined';var _0x5ac838=_0x4b1832[_0xc54a('0x29')];var _0x3ba9e9=_0x54fe58?0x0:_0x4dd8b1['offset'];var _0x2b0728=_0x54fe58?_0x4b1832[_0xc54a('0x29')]:_0x4dd8b1[_0xc54a('0x2a')]+_0x4dd8b1['limit'];var _0x2edbc;if(_0x2b0728>=_0x5ac838){_0x2b0728=_0x5ac838;_0x2edbc=0xc8;}else{_0x2edbc=0xce;}_0x343cac[_0xc54a('0x2b')](_0x2edbc);return _0x343cac[_0xc54a('0x2c')](_0xc54a('0x2d'),_0x3ba9e9+'-'+_0x2b0728+'/'+_0x5ac838)[_0xc54a('0x26')](_0x4b1832);}return null;};}function patchUpdates(_0x175fbe){return function(_0x270ee9){try{jsonpatch['apply'](_0x270ee9,_0x175fbe,!![]);}catch(_0x4db2c5){return BPromise[_0xc54a('0x2e')](_0x4db2c5);}return _0x270ee9['save']();};}function saveUpdates(_0x443d01,_0x194eac){return function(_0x4e787c){if(_0x4e787c){return _0x4e787c['update'](_0x443d01)[_0xc54a('0x1a')](function(_0x54bf09){return _0x54bf09;});}return null;};}function removeEntity(_0x3006bd,_0x3552fc){return function(_0x3a421b){if(_0x3a421b){return _0x3a421b[_0xc54a('0x2f')]()[_0xc54a('0x1a')](function(){_0x3006bd[_0xc54a('0x2b')](0xcc)[_0xc54a('0x25')]();});}};}function handleEntityNotFound(_0xaf3006,_0x10426d){return function(_0x11d4e8){if(!_0x11d4e8){_0xaf3006[_0xc54a('0x30')](0x194);}return _0x11d4e8;};}function handleError(_0x771bed,_0x39c084){_0x39c084=_0x39c084||0x1f4;return function(_0x4b8a1d){logger[_0xc54a('0x20')](_0x4b8a1d[_0xc54a('0x31')]);if(_0x4b8a1d[_0xc54a('0x32')]){delete _0x4b8a1d[_0xc54a('0x32')];}_0x771bed[_0xc54a('0x2b')](_0x39c084)['send'](_0x4b8a1d);};}exports[_0xc54a('0x33')]=function(_0x49d3b5,_0x290fa4){var _0x1f5d2d={},_0x3d2369={},_0x19f0cc={'count':0x0,'rows':[]};var _0x485ed0=_[_0xc54a('0x34')](db['Network']['rawAttributes'],function(_0xf5ae8e){return{'name':_0xf5ae8e[_0xc54a('0x35')],'type':_0xf5ae8e[_0xc54a('0x36')][_0xc54a('0x37')]};});_0x3d2369[_0xc54a('0x38')]=_['map'](_0x485ed0,_0xc54a('0x32'));_0x3d2369['query']=_[_0xc54a('0x39')](_0x49d3b5['query']);_0x3d2369['filters']=_[_0xc54a('0x3a')](_0x3d2369[_0xc54a('0x38')],_0x3d2369[_0xc54a('0x3b')]);_0x1f5d2d[_0xc54a('0x3c')]=_['intersection'](_0x3d2369[_0xc54a('0x38')],qs[_0xc54a('0x3d')](_0x49d3b5[_0xc54a('0x3b')][_0xc54a('0x3d')]));_0x1f5d2d['attributes']=_0x1f5d2d[_0xc54a('0x3c')]['length']?_0x1f5d2d['attributes']:_0x3d2369['model'];if(!_0x49d3b5[_0xc54a('0x3b')][_0xc54a('0x3e')](_0xc54a('0x3f'))){_0x1f5d2d[_0xc54a('0x28')]=qs['limit'](_0x49d3b5[_0xc54a('0x3b')][_0xc54a('0x28')]);_0x1f5d2d[_0xc54a('0x2a')]=qs[_0xc54a('0x2a')](_0x49d3b5[_0xc54a('0x3b')]['offset']);}_0x1f5d2d[_0xc54a('0x40')]=qs[_0xc54a('0x41')](_0x49d3b5['query'][_0xc54a('0x41')]);_0x1f5d2d[_0xc54a('0x42')]=qs[_0xc54a('0x43')](_['pick'](_0x49d3b5['query'],_0x3d2369[_0xc54a('0x43')]),_0x485ed0);if(_0x49d3b5[_0xc54a('0x3b')][_0xc54a('0x44')]){_0x1f5d2d['where']=_[_0xc54a('0x45')](_0x1f5d2d[_0xc54a('0x42')],{'$or':_[_0xc54a('0x34')](_0x485ed0,function(_0x5c34c7){if(_0x5c34c7[_0xc54a('0x36')]!=='VIRTUAL'){var _0x434686={};_0x434686[_0x5c34c7['name']]={'$like':'%'+_0x49d3b5[_0xc54a('0x3b')]['filter']+'%'};return _0x434686;}})});}_0x1f5d2d=_[_0xc54a('0x45')]({},_0x1f5d2d,_0x49d3b5[_0xc54a('0x46')]);var _0xc6ad71={'where':_0x1f5d2d[_0xc54a('0x42')]};return db['Network']['count'](_0xc6ad71)[_0xc54a('0x1a')](function(_0x37cb43){_0x19f0cc[_0xc54a('0x29')]=_0x37cb43;if(_0x49d3b5[_0xc54a('0x3b')][_0xc54a('0x47')]){_0x1f5d2d[_0xc54a('0x48')]=[{'all':!![]}];}return db[_0xc54a('0x49')][_0xc54a('0x4a')](_0x1f5d2d);})[_0xc54a('0x1a')](function(_0x542431){_0x19f0cc[_0xc54a('0x4b')]=_0x542431;return _0x19f0cc;})['then'](respondWithFilteredResult(_0x290fa4,_0x1f5d2d))[_0xc54a('0x24')](handleError(_0x290fa4,null));};exports[_0xc54a('0x4c')]=function(_0x308138,_0x58d88c){var _0x546c3d={'raw':!![],'where':{'id':_0x308138[_0xc54a('0x4d')]['id']}},_0x40960b={};_0x40960b[_0xc54a('0x38')]=_[_0xc54a('0x39')](db['Network'][_0xc54a('0x4e')]);_0x40960b[_0xc54a('0x3b')]=_['keys'](_0x308138[_0xc54a('0x3b')]);_0x40960b['filters']=_[_0xc54a('0x3a')](_0x40960b['model'],_0x40960b['query']);_0x546c3d['attributes']=_['intersection'](_0x40960b[_0xc54a('0x38')],qs[_0xc54a('0x3d')](_0x308138[_0xc54a('0x3b')][_0xc54a('0x3d')]));_0x546c3d[_0xc54a('0x3c')]=_0x546c3d[_0xc54a('0x3c')][_0xc54a('0x4f')]?_0x546c3d[_0xc54a('0x3c')]:_0x40960b[_0xc54a('0x38')];if(_0x308138[_0xc54a('0x3b')]['includeAll']){_0x546c3d[_0xc54a('0x48')]=[{'all':!![]}];}_0x546c3d=_[_0xc54a('0x45')]({},_0x546c3d,_0x308138[_0xc54a('0x46')]);return db[_0xc54a('0x49')][_0xc54a('0x50')](_0x546c3d)[_0xc54a('0x1a')](handleEntityNotFound(_0x58d88c,null))['then'](respondWithResult(_0x58d88c,null))[_0xc54a('0x24')](handleError(_0x58d88c,null));};exports[_0xc54a('0x51')]=function(_0x4b1aae,_0x13d311,_0x26519b){var _0x2ba97b;return db['sequelize'][_0xc54a('0x52')](function(_0x52c84e){return db[_0xc54a('0x49')][_0xc54a('0x51')](_0x4b1aae[_0xc54a('0x53')],{'raw':!![]})['then'](function(_0x27e78f){_0x2ba97b=_0x27e78f;return db[_0xc54a('0x49')][_0xc54a('0x4a')]({'where':{'type':_0x4b1aae[_0xc54a('0x53')][_0xc54a('0x36')]},'raw':!![]});})['then'](function(_0x345d00){if(_0x2ba97b[_0xc54a('0x36')][_0xc54a('0x54')]()==_0xc54a('0x55')){var _0x49867b=fs['readFileSync'](path['join'](config[_0xc54a('0x56')],'server/files/templates/stun_multiple.ejs'),_0xc54a('0x57'));var _0x5a0a7d=ejs[_0xc54a('0x58')](_0x49867b,{'networks':_0x345d00||[]});fs[_0xc54a('0x59')](_0xc54a('0x5a'),_0x5a0a7d);return respondWithRpcPromise(_0xc54a('0x5b'),'create',{'module':_0xc54a('0x5c')});}else if(_0x2ba97b['type']['toUpperCase']()==_0xc54a('0x5d')){var _0x2a87ac=fs[_0xc54a('0x5e')](path[_0xc54a('0x5f')](config['root'],_0xc54a('0x60')),'utf8');var _0x4a5369=ejs[_0xc54a('0x58')](_0x2a87ac,{'networks':_0x345d00||[]});fs['writeFileSync'](_0xc54a('0x61'),_0x4a5369);return respondWithRpcPromise(_0xc54a('0x5b'),'create',{'module':_0xc54a('0x5c')});}else{var _0x503762=fs[_0xc54a('0x5e')](path[_0xc54a('0x5f')](config[_0xc54a('0x56')],_0xc54a('0x62')),_0xc54a('0x57'));var _0x5df1fe=ejs['render'](_0x503762,{'networks':_0x345d00||[]});fs[_0xc54a('0x59')](util[_0xc54a('0x63')](_0xc54a('0x64'),_0x4b1aae['body'][_0xc54a('0x36')][_0xc54a('0x65')]()),_0x5df1fe);return respondWithRpcPromise(_0xc54a('0x5b'),_0xc54a('0x51'),{'module':'chan_sip.so'});}return null;})[_0xc54a('0x1a')](function(){return _0x2ba97b;});})['then'](respondWithResult(_0x13d311,0xc9))[_0xc54a('0x24')](handleError(_0x13d311,null));};exports['update']=function(_0x44062e,_0x3d9a61,_0xe19248){var _0x4571cd;return db[_0xc54a('0x66')]['transaction'](function(_0x18bf5f){return db[_0xc54a('0x49')][_0xc54a('0x50')]({'where':{'id':_0x44062e['params']['id']}})['then'](handleEntityNotFound(_0x3d9a61,null))[_0xc54a('0x1a')](saveUpdates(_0x44062e[_0xc54a('0x53')],null))['then'](function(_0xfbadcf){if(_0xfbadcf){_0x4571cd=_0xfbadcf;return db['Network']['findAll']({'where':{'type':_0x4571cd['type']},'raw':!![]});}return null;})[_0xc54a('0x1a')](function(_0x8fec3e){if(_0x4571cd['type'][_0xc54a('0x54')]()=='STUN'){var _0x5146d8=fs['readFileSync'](path[_0xc54a('0x5f')](config[_0xc54a('0x56')],'server/files/templates/stun_multiple.ejs'),_0xc54a('0x57'));var _0x138f13=ejs[_0xc54a('0x58')](_0x5146d8,{'networks':_0x8fec3e||[]});fs['writeFileSync'](_0xc54a('0x5a'),_0x138f13);return respondWithRpcPromise(_0xc54a('0x5b'),_0xc54a('0x67'),{'module':_0xc54a('0x5c')});}else if(_0x4571cd[_0xc54a('0x36')][_0xc54a('0x54')]()==_0xc54a('0x5d')){var _0x3cd09b=fs['readFileSync'](path[_0xc54a('0x5f')](config['root'],_0xc54a('0x60')),'utf8');var _0x2f9993=ejs[_0xc54a('0x58')](_0x3cd09b,{'networks':_0x8fec3e||[]});fs['writeFileSync'](_0xc54a('0x61'),_0x2f9993);return respondWithRpcPromise(_0xc54a('0x5b'),_0xc54a('0x67'),{'module':'res_stun_monitor.so'});}else{var _0x1d504e=fs[_0xc54a('0x5e')](path[_0xc54a('0x5f')](config[_0xc54a('0x56')],_0xc54a('0x62')),'utf8');var _0x3fde31=ejs[_0xc54a('0x58')](_0x1d504e,{'networks':_0x8fec3e||[]});fs[_0xc54a('0x59')](util[_0xc54a('0x63')](_0xc54a('0x64'),_0x44062e[_0xc54a('0x53')][_0xc54a('0x36')][_0xc54a('0x65')]()),_0x3fde31);return respondWithRpcPromise(_0xc54a('0x5b'),_0xc54a('0x67'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x55c688){if(_0x55c688){return _0x4571cd;}return null;});})[_0xc54a('0x1a')](respondWithResult(_0x3d9a61,null))['catch'](handleError(_0x3d9a61,null));};exports[_0xc54a('0x2f')]=function(_0x3d750d,_0x4371f5,_0x5f1f79){var _0x528503;return db[_0xc54a('0x49')]['find']({'where':{'id':_0x3d750d[_0xc54a('0x4d')]['id']}})['then'](function(_0x2c7dab){_0x528503=_0x2c7dab;return _0x2c7dab;})[_0xc54a('0x1a')](handleEntityNotFound(_0x4371f5,null))[_0xc54a('0x1a')](removeEntity(_0x4371f5,null))[_0xc54a('0x1a')](function(){if(_0x528503){return db['Network'][_0xc54a('0x4a')]({'where':{'type':_0x528503[_0xc54a('0x36')]},'raw':!![]});}})['then'](function(_0x506445){if(_0x528503[_0xc54a('0x36')][_0xc54a('0x54')]()==_0xc54a('0x55')){var _0x3e96c6=fs[_0xc54a('0x5e')](path[_0xc54a('0x5f')](config['root'],_0xc54a('0x68')),'utf8');var _0x1e1de3=ejs[_0xc54a('0x58')](_0x3e96c6,{'networks':_0x506445||[]});fs[_0xc54a('0x59')](_0xc54a('0x5a'),_0x1e1de3);return respondWithRpcPromise(_0xc54a('0x5b'),'destroy',{'module':_0xc54a('0x5c')});}else if(_0x528503[_0xc54a('0x36')][_0xc54a('0x54')]()==_0xc54a('0x5d')){var _0x32a492=fs[_0xc54a('0x5e')](path[_0xc54a('0x5f')](config[_0xc54a('0x56')],_0xc54a('0x60')),_0xc54a('0x57'));var _0x5176d7=ejs[_0xc54a('0x58')](_0x32a492,{'networks':_0x506445||[]});fs[_0xc54a('0x59')](_0xc54a('0x61'),_0x5176d7);return respondWithRpcPromise('Reload',_0xc54a('0x2f'),{'module':_0xc54a('0x5c')});}else{var _0x43cca3=fs[_0xc54a('0x5e')](path[_0xc54a('0x5f')](config[_0xc54a('0x56')],_0xc54a('0x62')),_0xc54a('0x57'));var _0x16769d=ejs[_0xc54a('0x58')](_0x43cca3,{'networks':_0x506445||[]});fs[_0xc54a('0x59')](util[_0xc54a('0x63')]('/etc/asterisk/sip_xcally_%s.conf',_0x3d750d[_0xc54a('0x53')][_0xc54a('0x36')]['toLowerCase']()),_0x16769d);return respondWithRpcPromise(_0xc54a('0x5b'),_0xc54a('0x2f'),{'module':_0xc54a('0x69')});}return null;})[_0xc54a('0x24')](handleError(_0x4371f5,null));};
\ No newline at end of file
+var _0xb205=['server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','params','body','type','server/files/templates/stun_multiple.ejs','res_stun_monitor.so','chan_sip.so','destroy','server/files/templates/turn_multiple.ejs','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','end','stack','name','send','index','map','Network','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','rows','show','include','find','create','sequelize','transaction','findAll','toUpperCase','STUN','join','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','TURN','readFileSync','root','/etc/asterisk/turn_xcally.conf'];(function(_0x540a33,_0x43d10d){var _0x20309e=function(_0x4bde12){while(--_0x4bde12){_0x540a33['push'](_0x540a33['shift']());}};_0x20309e(++_0x43d10d);}(_0xb205,0x156));var _0x5b20=function(_0x305913,_0x15fffa){_0x305913=_0x305913-0x0;var _0x56ef4d=_0xb205[_0x305913];return _0x56ef4d;};'use strict';var emlformat=require(_0x5b20('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5b20('0x1'));var jsonpatch=require(_0x5b20('0x2'));var rp=require('request-promise');var moment=require(_0x5b20('0x3'));var BPromise=require(_0x5b20('0x4'));var Mustache=require('mustache');var util=require(_0x5b20('0x5'));var path=require(_0x5b20('0x6'));var sox=require(_0x5b20('0x7'));var csv=require(_0x5b20('0x8'));var ejs=require(_0x5b20('0x9'));var fs=require('fs');var fs_extra=require(_0x5b20('0xa'));var _=require(_0x5b20('0xb'));var squel=require(_0x5b20('0xc'));var crypto=require(_0x5b20('0xd'));var jsforce=require(_0x5b20('0xe'));var deskjs=require(_0x5b20('0xf'));var toCsv=require(_0x5b20('0x8'));var querystring=require(_0x5b20('0x10'));var Papa=require('papaparse');var Redis=require(_0x5b20('0x11'));var authService=require(_0x5b20('0x12'));var qs=require(_0x5b20('0x13'));var as=require(_0x5b20('0x14'));var hardwareService=require(_0x5b20('0x15'));var logger=require(_0x5b20('0x16'))(_0x5b20('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5b20('0x18'));var db=require('../../mysqldb')['db'];var jayson=require(_0x5b20('0x19'));var client=jayson[_0x5b20('0x1a')][_0x5b20('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x3841bd,_0x554394,_0xa9f77e,_0x8f72aa){return new BPromise(function(_0x24d338,_0x23ced2){var _0x348d01=_0x8f72aa||client;return _0x348d01['request'](_0x3841bd,_0xa9f77e)[_0x5b20('0x1c')](function(_0x3f3230){logger[_0x5b20('0x1d')](_0x5b20('0x1e'),_0x554394,_0x5b20('0x1f'));logger[_0x5b20('0x20')](_0x5b20('0x21'),_0x554394,_0x5b20('0x1f'),JSON[_0x5b20('0x22')](_0x3f3230));if(_0x3f3230['error']){if(_0x3f3230[_0x5b20('0x23')][_0x5b20('0x24')]===0x1f4){logger[_0x5b20('0x23')](_0x5b20('0x1e'),_0x554394,_0x3f3230[_0x5b20('0x23')][_0x5b20('0x25')]);return _0x23ced2(_0x3f3230['error'][_0x5b20('0x25')]);}logger[_0x5b20('0x23')]('Network,\x20%s,\x20%s',_0x554394,_0x3f3230[_0x5b20('0x23')][_0x5b20('0x25')]);return _0x24d338(_0x3f3230[_0x5b20('0x23')]['message']);}else{logger['info'](_0x5b20('0x1e'),_0x554394,'request\x20sent');_0x24d338(_0x3f3230[_0x5b20('0x26')]['message']);}})[_0x5b20('0x27')](function(_0x523b2c){logger['error']('Network,\x20%s,\x20%s',_0x554394,_0x523b2c);_0x23ced2(_0x523b2c);});});}function respondWithStatusCode(_0x3b4143,_0x2d21c9){_0x2d21c9=_0x2d21c9||0xcc;return function(_0x193d92){if(_0x193d92){return _0x3b4143[_0x5b20('0x28')](_0x2d21c9);}return _0x3b4143[_0x5b20('0x29')](_0x2d21c9)['end']();};}function respondWithResult(_0x352791,_0x49dd97){_0x49dd97=_0x49dd97||0xc8;return function(_0x4ba73b){if(_0x4ba73b){return _0x352791[_0x5b20('0x29')](_0x49dd97)[_0x5b20('0x2a')](_0x4ba73b);}};}function respondWithFilteredResult(_0x2bb48f,_0x232a34){return function(_0x342ba8){if(_0x342ba8){var _0x2fd4b8=typeof _0x232a34[_0x5b20('0x2b')]===_0x5b20('0x2c')&&typeof _0x232a34[_0x5b20('0x2d')]===_0x5b20('0x2c');var _0x23a7fe=_0x342ba8[_0x5b20('0x2e')];var _0x540117=_0x2fd4b8?0x0:_0x232a34[_0x5b20('0x2b')];var _0x44d9e0=_0x2fd4b8?_0x342ba8['count']:_0x232a34['offset']+_0x232a34[_0x5b20('0x2d')];var _0x4568db;if(_0x44d9e0>=_0x23a7fe){_0x44d9e0=_0x23a7fe;_0x4568db=0xc8;}else{_0x4568db=0xce;}_0x2bb48f['status'](_0x4568db);return _0x2bb48f[_0x5b20('0x2f')]('Content-Range',_0x540117+'-'+_0x44d9e0+'/'+_0x23a7fe)[_0x5b20('0x2a')](_0x342ba8);}return null;};}function patchUpdates(_0x3769fc){return function(_0x3d3406){try{jsonpatch[_0x5b20('0x30')](_0x3d3406,_0x3769fc,!![]);}catch(_0x16d8e6){return BPromise[_0x5b20('0x31')](_0x16d8e6);}return _0x3d3406[_0x5b20('0x32')]();};}function saveUpdates(_0x1ad5b2,_0x375a16){return function(_0x5900fa){if(_0x5900fa){return _0x5900fa[_0x5b20('0x33')](_0x1ad5b2)[_0x5b20('0x1c')](function(_0x4ca8bf){return _0x4ca8bf;});}return null;};}function removeEntity(_0x3c1a80,_0x2701b5){return function(_0x501b80){if(_0x501b80){return _0x501b80['destroy']()['then'](function(){_0x3c1a80['status'](0xcc)[_0x5b20('0x34')]();});}};}function handleEntityNotFound(_0x5b8ac7,_0x4c25e6){return function(_0x5d2761){if(!_0x5d2761){_0x5b8ac7['sendStatus'](0x194);}return _0x5d2761;};}function handleError(_0x1c87ee,_0x50cdbc){_0x50cdbc=_0x50cdbc||0x1f4;return function(_0x32005c){logger['error'](_0x32005c[_0x5b20('0x35')]);if(_0x32005c['name']){delete _0x32005c[_0x5b20('0x36')];}_0x1c87ee[_0x5b20('0x29')](_0x50cdbc)[_0x5b20('0x37')](_0x32005c);};}exports[_0x5b20('0x38')]=function(_0x1c803b,_0x2445e1){var _0xe9bc3d={},_0x654e86={},_0x737060={'count':0x0,'rows':[]};var _0x1bd0a=_[_0x5b20('0x39')](db[_0x5b20('0x3a')][_0x5b20('0x3b')],function(_0x3db4d8){return{'name':_0x3db4d8[_0x5b20('0x3c')],'type':_0x3db4d8['type'][_0x5b20('0x3d')]};});_0x654e86[_0x5b20('0x3e')]=_[_0x5b20('0x39')](_0x1bd0a,'name');_0x654e86[_0x5b20('0x3f')]=_[_0x5b20('0x40')](_0x1c803b[_0x5b20('0x3f')]);_0x654e86[_0x5b20('0x41')]=_['intersection'](_0x654e86[_0x5b20('0x3e')],_0x654e86[_0x5b20('0x3f')]);_0xe9bc3d[_0x5b20('0x42')]=_[_0x5b20('0x43')](_0x654e86[_0x5b20('0x3e')],qs[_0x5b20('0x44')](_0x1c803b[_0x5b20('0x3f')][_0x5b20('0x44')]));_0xe9bc3d[_0x5b20('0x42')]=_0xe9bc3d[_0x5b20('0x42')]['length']?_0xe9bc3d[_0x5b20('0x42')]:_0x654e86[_0x5b20('0x3e')];if(!_0x1c803b[_0x5b20('0x3f')][_0x5b20('0x45')]('nolimit')){_0xe9bc3d[_0x5b20('0x2d')]=qs[_0x5b20('0x2d')](_0x1c803b['query'][_0x5b20('0x2d')]);_0xe9bc3d[_0x5b20('0x2b')]=qs[_0x5b20('0x2b')](_0x1c803b[_0x5b20('0x3f')]['offset']);}_0xe9bc3d[_0x5b20('0x46')]=qs['sort'](_0x1c803b[_0x5b20('0x3f')][_0x5b20('0x47')]);_0xe9bc3d[_0x5b20('0x48')]=qs[_0x5b20('0x41')](_[_0x5b20('0x49')](_0x1c803b[_0x5b20('0x3f')],_0x654e86[_0x5b20('0x41')]),_0x1bd0a);if(_0x1c803b[_0x5b20('0x3f')][_0x5b20('0x4a')]){_0xe9bc3d['where']=_[_0x5b20('0x4b')](_0xe9bc3d['where'],{'$or':_['map'](_0x1bd0a,function(_0x2f7eef){if(_0x2f7eef['type']!=='VIRTUAL'){var _0x4b9291={};_0x4b9291[_0x2f7eef[_0x5b20('0x36')]]={'$like':'%'+_0x1c803b[_0x5b20('0x3f')]['filter']+'%'};return _0x4b9291;}})});}_0xe9bc3d=_[_0x5b20('0x4b')]({},_0xe9bc3d,_0x1c803b[_0x5b20('0x4c')]);var _0x5b772e={'where':_0xe9bc3d[_0x5b20('0x48')]};return db[_0x5b20('0x3a')]['count'](_0x5b772e)[_0x5b20('0x1c')](function(_0x2eece5){_0x737060['count']=_0x2eece5;if(_0x1c803b[_0x5b20('0x3f')][_0x5b20('0x4d')]){_0xe9bc3d['include']=[{'all':!![]}];}return db['Network']['findAll'](_0xe9bc3d);})[_0x5b20('0x1c')](function(_0x379716){_0x737060[_0x5b20('0x4e')]=_0x379716;return _0x737060;})[_0x5b20('0x1c')](respondWithFilteredResult(_0x2445e1,_0xe9bc3d))['catch'](handleError(_0x2445e1,null));};exports[_0x5b20('0x4f')]=function(_0x2e844d,_0x278a2a){var _0x534d64={'raw':!![],'where':{'id':_0x2e844d['params']['id']}},_0x2c3d71={};_0x2c3d71['model']=_[_0x5b20('0x40')](db[_0x5b20('0x3a')][_0x5b20('0x3b')]);_0x2c3d71[_0x5b20('0x3f')]=_[_0x5b20('0x40')](_0x2e844d[_0x5b20('0x3f')]);_0x2c3d71[_0x5b20('0x41')]=_['intersection'](_0x2c3d71[_0x5b20('0x3e')],_0x2c3d71[_0x5b20('0x3f')]);_0x534d64[_0x5b20('0x42')]=_[_0x5b20('0x43')](_0x2c3d71[_0x5b20('0x3e')],qs[_0x5b20('0x44')](_0x2e844d[_0x5b20('0x3f')]['fields']));_0x534d64[_0x5b20('0x42')]=_0x534d64[_0x5b20('0x42')]['length']?_0x534d64[_0x5b20('0x42')]:_0x2c3d71[_0x5b20('0x3e')];if(_0x2e844d[_0x5b20('0x3f')][_0x5b20('0x4d')]){_0x534d64[_0x5b20('0x50')]=[{'all':!![]}];}_0x534d64=_[_0x5b20('0x4b')]({},_0x534d64,_0x2e844d[_0x5b20('0x4c')]);return db[_0x5b20('0x3a')][_0x5b20('0x51')](_0x534d64)[_0x5b20('0x1c')](handleEntityNotFound(_0x278a2a,null))['then'](respondWithResult(_0x278a2a,null))['catch'](handleError(_0x278a2a,null));};exports[_0x5b20('0x52')]=function(_0x5b9379,_0x1ebb22,_0xfa4210){var _0x3d88d1;return db[_0x5b20('0x53')][_0x5b20('0x54')](function(_0x1c7585){return db['Network'][_0x5b20('0x52')](_0x5b9379['body'],{'raw':!![]})['then'](function(_0xf5d4fe){_0x3d88d1=_0xf5d4fe;return db[_0x5b20('0x3a')][_0x5b20('0x55')]({'where':{'type':_0x5b9379['body']['type']},'raw':!![]});})[_0x5b20('0x1c')](function(_0x3b2ab5){if(_0x3d88d1['type'][_0x5b20('0x56')]()==_0x5b20('0x57')){var _0x2a7318=fs['readFileSync'](path[_0x5b20('0x58')](config['root'],'server/files/templates/stun_multiple.ejs'),_0x5b20('0x59'));var _0x240527=ejs[_0x5b20('0x5a')](_0x2a7318,{'networks':_0x3b2ab5||[]});fs[_0x5b20('0x5b')](_0x5b20('0x5c'),_0x240527);return respondWithRpcPromise(_0x5b20('0x5d'),_0x5b20('0x52'),{'module':'res_stun_monitor.so'});}else if(_0x3d88d1['type']['toUpperCase']()==_0x5b20('0x5e')){var _0x1e39ac=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config[_0x5b20('0x60')],'server/files/templates/turn_multiple.ejs'),_0x5b20('0x59'));var _0x52c93b=ejs[_0x5b20('0x5a')](_0x1e39ac,{'networks':_0x3b2ab5||[]});fs[_0x5b20('0x5b')](_0x5b20('0x61'),_0x52c93b);return respondWithRpcPromise(_0x5b20('0x5d'),_0x5b20('0x52'),{'module':'res_stun_monitor.so'});}else{var _0x422887=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config['root'],_0x5b20('0x62')),_0x5b20('0x59'));var _0x48819f=ejs['render'](_0x422887,{'networks':_0x3b2ab5||[]});fs[_0x5b20('0x5b')](util[_0x5b20('0x63')](_0x5b20('0x64'),_0x5b9379['body']['type'][_0x5b20('0x65')]()),_0x48819f);return respondWithRpcPromise(_0x5b20('0x5d'),_0x5b20('0x52'),{'module':'chan_sip.so'});}return null;})[_0x5b20('0x1c')](function(){return _0x3d88d1;});})[_0x5b20('0x1c')](respondWithResult(_0x1ebb22,0xc9))[_0x5b20('0x27')](handleError(_0x1ebb22,null));};exports['update']=function(_0x2eef6f,_0x350101,_0x26db42){var _0x114e00;return db[_0x5b20('0x53')][_0x5b20('0x54')](function(_0x554452){return db[_0x5b20('0x3a')][_0x5b20('0x51')]({'where':{'id':_0x2eef6f[_0x5b20('0x66')]['id']}})[_0x5b20('0x1c')](handleEntityNotFound(_0x350101,null))[_0x5b20('0x1c')](saveUpdates(_0x2eef6f[_0x5b20('0x67')],null))[_0x5b20('0x1c')](function(_0x59065f){if(_0x59065f){_0x114e00=_0x59065f;return db[_0x5b20('0x3a')]['findAll']({'where':{'type':_0x114e00[_0x5b20('0x68')]},'raw':!![]});}return null;})['then'](function(_0x2fbc55){if(_0x114e00[_0x5b20('0x68')][_0x5b20('0x56')]()==_0x5b20('0x57')){var _0x4ff085=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config['root'],_0x5b20('0x69')),'utf8');var _0x304893=ejs['render'](_0x4ff085,{'networks':_0x2fbc55||[]});fs[_0x5b20('0x5b')]('/etc/asterisk/stun_xcally.conf',_0x304893);return respondWithRpcPromise(_0x5b20('0x5d'),_0x5b20('0x33'),{'module':'res_stun_monitor.so'});}else if(_0x114e00[_0x5b20('0x68')][_0x5b20('0x56')]()==_0x5b20('0x5e')){var _0x2d1dc5=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config['root'],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x36d3b2=ejs[_0x5b20('0x5a')](_0x2d1dc5,{'networks':_0x2fbc55||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x36d3b2);return respondWithRpcPromise(_0x5b20('0x5d'),_0x5b20('0x33'),{'module':_0x5b20('0x6a')});}else{var _0x286423=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config[_0x5b20('0x60')],_0x5b20('0x62')),_0x5b20('0x59'));var _0x58e84a=ejs[_0x5b20('0x5a')](_0x286423,{'networks':_0x2fbc55||[]});fs[_0x5b20('0x5b')](util['format'](_0x5b20('0x64'),_0x2eef6f['body']['type'][_0x5b20('0x65')]()),_0x58e84a);return respondWithRpcPromise('Reload',_0x5b20('0x33'),{'module':_0x5b20('0x6b')});}return null;})['then'](function(_0x56a61c){if(_0x56a61c){return _0x114e00;}return null;});})[_0x5b20('0x1c')](respondWithResult(_0x350101,null))[_0x5b20('0x27')](handleError(_0x350101,null));};exports[_0x5b20('0x6c')]=function(_0xb5f219,_0x3fec6a,_0x24a5c3){var _0x3791c0;return db['Network'][_0x5b20('0x51')]({'where':{'id':_0xb5f219[_0x5b20('0x66')]['id']}})[_0x5b20('0x1c')](function(_0x8c7a7){_0x3791c0=_0x8c7a7;return _0x8c7a7;})[_0x5b20('0x1c')](handleEntityNotFound(_0x3fec6a,null))[_0x5b20('0x1c')](removeEntity(_0x3fec6a,null))['then'](function(){if(_0x3791c0){return db[_0x5b20('0x3a')]['findAll']({'where':{'type':_0x3791c0['type']},'raw':!![]});}})[_0x5b20('0x1c')](function(_0x3224e2){if(_0x3791c0['type'][_0x5b20('0x56')]()==_0x5b20('0x57')){var _0x508652=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config[_0x5b20('0x60')],_0x5b20('0x69')),_0x5b20('0x59'));var _0x2ed048=ejs[_0x5b20('0x5a')](_0x508652,{'networks':_0x3224e2||[]});fs[_0x5b20('0x5b')](_0x5b20('0x5c'),_0x2ed048);return respondWithRpcPromise(_0x5b20('0x5d'),'destroy',{'module':_0x5b20('0x6a')});}else if(_0x3791c0[_0x5b20('0x68')][_0x5b20('0x56')]()==_0x5b20('0x5e')){var _0xfde1b7=fs[_0x5b20('0x5f')](path[_0x5b20('0x58')](config[_0x5b20('0x60')],_0x5b20('0x6d')),_0x5b20('0x59'));var _0x29c55c=ejs[_0x5b20('0x5a')](_0xfde1b7,{'networks':_0x3224e2||[]});fs[_0x5b20('0x5b')](_0x5b20('0x61'),_0x29c55c);return respondWithRpcPromise(_0x5b20('0x5d'),'destroy',{'module':_0x5b20('0x6a')});}else{var _0x2e4023=fs['readFileSync'](path[_0x5b20('0x58')](config[_0x5b20('0x60')],_0x5b20('0x62')),_0x5b20('0x59'));var _0xbf4d98=ejs[_0x5b20('0x5a')](_0x2e4023,{'networks':_0x3224e2||[]});fs[_0x5b20('0x5b')](util['format'](_0x5b20('0x64'),_0xb5f219['body'][_0x5b20('0x68')][_0x5b20('0x65')]()),_0xbf4d98);return respondWithRpcPromise('Reload',_0x5b20('0x6c'),{'module':_0x5b20('0x6b')});}return null;})[_0x5b20('0x27')](handleError(_0x3fec6a,null));};
\ No newline at end of file
index e542d99..31cc799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fdb=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./network.attributes','Network','network'];(function(_0xe5a1b0,_0x3a5304){var _0x29584f=function(_0x221ff4){while(--_0x221ff4){_0xe5a1b0['push'](_0xe5a1b0['shift']());}};_0x29584f(++_0x3a5304);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x199162,_0xfd0011){_0x199162=_0x199162-0x0;var _0x12f276=_0x4fdb[_0x199162];return _0x12f276;};'use strict';var _=require(_0xb4fd('0x0'));var util=require(_0xb4fd('0x1'));var logger=require(_0xb4fd('0x2'))(_0xb4fd('0x3'));var moment=require(_0xb4fd('0x4'));var BPromise=require(_0xb4fd('0x5'));var rp=require(_0xb4fd('0x6'));var fs=require('fs');var path=require(_0xb4fd('0x7'));var rimraf=require(_0xb4fd('0x8'));var config=require('../../config/environment');var attributes=require(_0xb4fd('0x9'));module['exports']=function(_0x14052b,_0x5d8b39){return _0x14052b['define'](_0xb4fd('0xa'),attributes,{'tableName':_0xb4fd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./network.attributes','exports','Network','util'];(function(_0x481ddd,_0x457460){var _0x1c2de4=function(_0x4d6ddd){while(--_0x4d6ddd){_0x481ddd['push'](_0x481ddd['shift']());}};_0x1c2de4(++_0x457460);}(_0xedd9,0xfc));var _0x9edd=function(_0x258aca,_0x45c459){_0x258aca=_0x258aca-0x0;var _0x4f9944=_0xedd9[_0x258aca];return _0x4f9944;};'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 720c21f..4f3be94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3cf56b,_0x9da3fb){var _0xa2b2aa=function(_0x3a5da){while(--_0x3a5da){_0x3cf56b['push'](_0x3cf56b['shift']());}};_0xa2b2aa(++_0x9da3fb);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _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(_0x3db2de,_0x959728){var _0x2cfaac=function(_0x27c1a9){while(--_0x27c1a9){_0x3db2de['push'](_0x3db2de['shift']());}};_0x2cfaac(++_0x959728);}(_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 b176855..8f02c69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb57e=['addAgents','/:id/send','send','put','/:id','update','delete','removeAnswers','removeAgents','exports','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','create','addDisposition','post','/:id/notify','/:id/applications','addApplications'];(function(_0x576477,_0x57915e){var _0x1341f9=function(_0x29d164){while(--_0x29d164){_0x576477['push'](_0x576477['shift']());}};_0x1341f9(++_0x57915e);}(_0xb57e,0x7c));var _0xeb57=function(_0x685346,_0x3ef2e5){_0x685346=_0x685346-0x0;var _0x52e15b=_0xb57e[_0x685346];return _0x52e15b;};'use strict';var multer=require(_0xeb57('0x0'));var util=require('util');var path=require(_0xeb57('0x1'));var timeout=require(_0xeb57('0x2'));var express=require(_0xeb57('0x3'));var router=express['Router']();var fs_extra=require(_0xeb57('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xeb57('0x5'));var config=require(_0xeb57('0x6'));var controller=require(_0xeb57('0x7'));router[_0xeb57('0x8')]('/',auth[_0xeb57('0x9')](),controller[_0xeb57('0xa')]);router['get'](_0xeb57('0xb'),auth['isAuthenticated'](),controller[_0xeb57('0xc')]);router[_0xeb57('0x8')]('/:id',auth[_0xeb57('0x9')](),controller['show']);router[_0xeb57('0x8')](_0xeb57('0xd'),auth['isAuthenticated'](),controller[_0xeb57('0xe')]);router[_0xeb57('0x8')](_0xeb57('0xf'),auth[_0xeb57('0x9')](),controller[_0xeb57('0x10')]);router[_0xeb57('0x8')]('/:id/applications',auth[_0xeb57('0x9')](),controller[_0xeb57('0x11')]);router[_0xeb57('0x8')](_0xeb57('0x12'),auth[_0xeb57('0x9')](),controller[_0xeb57('0x13')]);router[_0xeb57('0x8')](_0xeb57('0x14'),auth[_0xeb57('0x9')](),controller[_0xeb57('0x15')]);router['post']('/',auth['isAuthenticated'](),controller[_0xeb57('0x16')]);router['post'](_0xeb57('0xd'),auth[_0xeb57('0x9')](),controller[_0xeb57('0x17')]);router[_0xeb57('0x18')](_0xeb57('0xf'),auth['isAuthenticated'](),controller['addAnswer']);router['post'](_0xeb57('0x19'),controller['notify']);router['post'](_0xeb57('0x1a'),auth[_0xeb57('0x9')](),controller[_0xeb57('0x1b')]);router['post']('/:id/users',auth[_0xeb57('0x9')](),controller[_0xeb57('0x1c')]);router[_0xeb57('0x18')](_0xeb57('0x1d'),auth[_0xeb57('0x9')](),controller[_0xeb57('0x1e')]);router[_0xeb57('0x1f')](_0xeb57('0x20'),auth[_0xeb57('0x9')](),controller[_0xeb57('0x21')]);router[_0xeb57('0x22')](_0xeb57('0x20'),auth[_0xeb57('0x9')](),controller['destroy']);router['delete'](_0xeb57('0xd'),auth[_0xeb57('0x9')](),controller['removeDispositions']);router[_0xeb57('0x22')]('/:id/canned_answers',auth[_0xeb57('0x9')](),controller[_0xeb57('0x23')]);router[_0xeb57('0x22')](_0xeb57('0x14'),auth[_0xeb57('0x9')](),controller[_0xeb57('0x24')]);module[_0xeb57('0x25')]=router;
\ No newline at end of file
+var _0xe301=['../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','describe','/:id','show','getAnswers','getApplications','/:id/interactions','getInteractions','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','/:id/notify','/:id/applications','/:id/users','addAgents','/:id/send','send','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x20c6f1,_0x21fa65){var _0x43c3bf=function(_0x40c2dd){while(--_0x40c2dd){_0x20c6f1['push'](_0x20c6f1['shift']());}};_0x43c3bf(++_0x21fa65);}(_0xe301,0x95));var _0x1e30=function(_0x594847,_0x47b321){_0x594847=_0x594847-0x0;var _0xd05d17=_0xe301[_0x594847];return _0xd05d17;};'use strict';var multer=require('multer');var util=require(_0x1e30('0x0'));var path=require(_0x1e30('0x1'));var timeout=require(_0x1e30('0x2'));var express=require(_0x1e30('0x3'));var router=express[_0x1e30('0x4')]();var fs_extra=require(_0x1e30('0x5'));var auth=require(_0x1e30('0x6'));var interaction=require(_0x1e30('0x7'));var config=require(_0x1e30('0x8'));var controller=require(_0x1e30('0x9'));router[_0x1e30('0xa')]('/',auth[_0x1e30('0xb')](),controller[_0x1e30('0xc')]);router[_0x1e30('0xa')]('/describe',auth[_0x1e30('0xb')](),controller[_0x1e30('0xd')]);router['get'](_0x1e30('0xe'),auth[_0x1e30('0xb')](),controller[_0x1e30('0xf')]);router[_0x1e30('0xa')]('/:id/dispositions',auth[_0x1e30('0xb')](),controller['getDispositions']);router[_0x1e30('0xa')]('/:id/canned_answers',auth[_0x1e30('0xb')](),controller[_0x1e30('0x10')]);router['get']('/:id/applications',auth[_0x1e30('0xb')](),controller[_0x1e30('0x11')]);router[_0x1e30('0xa')](_0x1e30('0x12'),auth[_0x1e30('0xb')](),controller[_0x1e30('0x13')]);router['get']('/:id/users',auth[_0x1e30('0xb')](),controller[_0x1e30('0x14')]);router[_0x1e30('0x15')]('/',auth[_0x1e30('0xb')](),controller[_0x1e30('0x16')]);router[_0x1e30('0x15')]('/:id/dispositions',auth[_0x1e30('0xb')](),controller[_0x1e30('0x17')]);router[_0x1e30('0x15')](_0x1e30('0x18'),auth[_0x1e30('0xb')](),controller[_0x1e30('0x19')]);router[_0x1e30('0x15')](_0x1e30('0x1a'),controller['notify']);router[_0x1e30('0x15')](_0x1e30('0x1b'),auth['isAuthenticated'](),controller['addApplications']);router[_0x1e30('0x15')](_0x1e30('0x1c'),auth['isAuthenticated'](),controller[_0x1e30('0x1d')]);router[_0x1e30('0x15')](_0x1e30('0x1e'),auth[_0x1e30('0xb')](),controller[_0x1e30('0x1f')]);router[_0x1e30('0x20')](_0x1e30('0xe'),auth['isAuthenticated'](),controller[_0x1e30('0x21')]);router[_0x1e30('0x22')](_0x1e30('0xe'),auth[_0x1e30('0xb')](),controller[_0x1e30('0x23')]);router[_0x1e30('0x22')]('/:id/dispositions',auth[_0x1e30('0xb')](),controller[_0x1e30('0x24')]);router[_0x1e30('0x22')]('/:id/canned_answers',auth[_0x1e30('0xb')](),controller[_0x1e30('0x25')]);router['delete'](_0x1e30('0x1c'),auth[_0x1e30('0xb')](),controller[_0x1e30('0x26')]);module['exports']=router;
\ No newline at end of file
index 81eba0f..bc89eb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe632=['INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','name','STRING','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN'];(function(_0x13b25c,_0x102fff){var _0x3b6328=function(_0x54e80a){while(--_0x54e80a){_0x13b25c['push'](_0x13b25c['shift']());}};_0x3b6328(++_0x102fff);}(_0xe632,0xc9));var _0x2e63=function(_0x468c5a,_0x5b96e4){_0x468c5a=_0x468c5a-0x0;var _0x25fe2b=_0xe632[_0x468c5a];return _0x25fe2b;};'use strict';var Sequelize=require(_0x2e63('0x0'));var rs=require(_0x2e63('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x2e63('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x2e63('0x3')]},'token':{'type':Sequelize[_0x2e63('0x3')],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0x2e63('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x2e63('0x4')],'defaultValue':function(){return _0x2e63('0x5');}},'notificationSound':{'type':Sequelize[_0x2e63('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2e63('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2e63('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x2e63('0x3')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2e63('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2e63('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2e63('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2e63('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x2e63('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x2e63('0x6')],'defaultValue':![],'comment':_0x2e63('0x9'),'set':function(_0x3af3c2){if(!_0x3af3c2)this[_0x2e63('0xa')](_0x2e63('0xb'),null);this[_0x2e63('0xa')](_0x2e63('0xc'),_0x3af3c2);}}};
\ No newline at end of file
+var _0x577c=['sequelize','randomstring','STRING','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','mandatoryDisposition'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x577c,0xfd));var _0xc577=function(_0x27dbaa,_0x47865c){_0x27dbaa=_0x27dbaa-0x0;var _0x46a443=_0x577c[_0x27dbaa];return _0x46a443;};'use strict';var Sequelize=require(_0xc577('0x0'));var rs=require(_0xc577('0x1'));module['exports']={'name':{'type':Sequelize[_0xc577('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xc577('0x2')]},'token':{'type':Sequelize[_0xc577('0x2')],'defaultValue':function(){return rs[_0xc577('0x3')]();}},'replyUri':{'type':Sequelize[_0xc577('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xc577('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xc577('0x4');}},'notificationSound':{'type':Sequelize[_0xc577('0x5')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc577('0x5')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc577('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xc577('0x2')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc577('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc577('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc577('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0xc577('0x7')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xc577('0x8'),'set':function(_0x2cf241){if(!_0x2cf241)this[_0xc577('0x9')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0xc577('0xa'),_0x2cf241);}}};
\ No newline at end of file
index 892f359..68f0f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4de=['message','result','catch','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','save','destroy','get','OpenchannelAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','rawAttributes','OpenchannelAccount','find','create','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','sort','CannedAnswer','getAnswers','hasOwnProperty','pick','removeAnswers','notify','CmContact','Sequelize','no\x20available\x20attributes','createdAt','updatedAt','CompanyId','ListId','from','isNil','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','List','DESC','list','applications','orderBy','priority','asc','account','Applications','Contacts','defaults','contact','firstName','lastName','threadId','externalUrl','ContactId','spread','messageId','interaction','created','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','EventManager','sequelize','transaction','OpenchannelApplication','getApplications','getInteractions','OpenchannelInteraction','Contact','Owner','fullname','internal','Tag','Tags','tag','addAgents','ids','omit','emit','userOpenchannelAccount:save','userOpenchannelAccount:remove','getAgents','CmList','Messages','dataValues','push','rimraf','zip-dir','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./openchannelAccount.socket','register','jayson/promise','http','client','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x27b248,_0x329dc1){var _0x2f1a15=function(_0x5fe9bd){while(--_0x5fe9bd){_0x27b248['push'](_0x27b248['shift']());}};_0x2f1a15(++_0x329dc1);}(_0xa4de,0x143));var _0xea4d=function(_0x5eaf10,_0x43a574){_0x5eaf10=_0x5eaf10-0x0;var _0x268036=_0xa4de[_0x5eaf10];return _0x268036;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xea4d('0x0'));var zipdir=require(_0xea4d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xea4d('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xea4d('0x3'));var path=require(_0xea4d('0x4'));var sox=require(_0xea4d('0x5'));var csv=require(_0xea4d('0x6'));var ejs=require(_0xea4d('0x7'));var fs=require('fs');var fs_extra=require(_0xea4d('0x8'));var _=require(_0xea4d('0x9'));var squel=require(_0xea4d('0xa'));var crypto=require('crypto');var jsforce=require(_0xea4d('0xb'));var deskjs=require(_0xea4d('0xc'));var toCsv=require(_0xea4d('0x6'));var querystring=require('querystring');var Papa=require(_0xea4d('0xd'));var Redis=require(_0xea4d('0xe'));var authService=require(_0xea4d('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xea4d('0x10'));var hardwareService=require(_0xea4d('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xea4d('0x12'));var config=require(_0xea4d('0x13'));var licenseUtil=require(_0xea4d('0x14'));var db=require(_0xea4d('0x15'))['db'];config[_0xea4d('0x16')]=_['defaults'](config['redis'],{'host':_0xea4d('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xea4d('0x16')]));require(_0xea4d('0x18'))[_0xea4d('0x19')](socket);var jayson=require(_0xea4d('0x1a'));var client=jayson['client'][_0xea4d('0x1b')]({'port':0x232c});var client9002=jayson[_0xea4d('0x1c')][_0xea4d('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x3e5bf5,_0x16a6a2,_0x1f2a3e,_0x274b8e){return new BPromise(function(_0x1756f9,_0xf06ce1){var _0x415070=_0x274b8e||client;return _0x415070[_0xea4d('0x1d')](_0x3e5bf5,_0x1f2a3e)[_0xea4d('0x1e')](function(_0x4c01f7){logger[_0xea4d('0x1f')](_0xea4d('0x20'),_0x16a6a2,'request\x20sent');logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x16a6a2,_0xea4d('0x21'),JSON[_0xea4d('0x22')](_0x4c01f7));if(_0x4c01f7[_0xea4d('0x23')]){if(_0x4c01f7[_0xea4d('0x23')][_0xea4d('0x24')]===0x1f4){logger[_0xea4d('0x23')](_0xea4d('0x20'),_0x16a6a2,_0x4c01f7[_0xea4d('0x23')]['message']);return _0xf06ce1(_0x4c01f7['error'][_0xea4d('0x25')]);}logger[_0xea4d('0x23')](_0xea4d('0x20'),_0x16a6a2,_0x4c01f7[_0xea4d('0x23')][_0xea4d('0x25')]);return _0x1756f9(_0x4c01f7[_0xea4d('0x23')][_0xea4d('0x25')]);}else{logger[_0xea4d('0x1f')]('OpenchannelAccount,\x20%s,\x20%s',_0x16a6a2,_0xea4d('0x21'));_0x1756f9(_0x4c01f7[_0xea4d('0x26')][_0xea4d('0x25')]);}})[_0xea4d('0x27')](function(_0x35213c){logger[_0xea4d('0x23')](_0xea4d('0x20'),_0x16a6a2,_0x35213c);_0xf06ce1(_0x35213c);});});}function respondWithStatusCode(_0x555790,_0x2c3397){_0x2c3397=_0x2c3397||0xcc;return function(_0x211833){if(_0x211833){return _0x555790['sendStatus'](_0x2c3397);}return _0x555790['status'](_0x2c3397)[_0xea4d('0x28')]();};}function respondWithResult(_0x2df90b,_0x8d7391){_0x8d7391=_0x8d7391||0xc8;return function(_0x201399){if(_0x201399){return _0x2df90b['status'](_0x8d7391)[_0xea4d('0x29')](_0x201399);}};}function respondWithFilteredResult(_0x32915e,_0xb86793){return function(_0x547f4f){if(_0x547f4f){var _0x3effba=typeof _0xb86793[_0xea4d('0x2a')]===_0xea4d('0x2b')&&typeof _0xb86793[_0xea4d('0x2c')]===_0xea4d('0x2b');var _0x2c92d8=_0x547f4f[_0xea4d('0x2d')];var _0x5f5475=_0x3effba?0x0:_0xb86793[_0xea4d('0x2a')];var _0x39a99f=_0x3effba?_0x547f4f[_0xea4d('0x2d')]:_0xb86793[_0xea4d('0x2a')]+_0xb86793[_0xea4d('0x2c')];var _0x59282a;if(_0x39a99f>=_0x2c92d8){_0x39a99f=_0x2c92d8;_0x59282a=0xc8;}else{_0x59282a=0xce;}_0x32915e[_0xea4d('0x2e')](_0x59282a);return _0x32915e[_0xea4d('0x2f')](_0xea4d('0x30'),_0x5f5475+'-'+_0x39a99f+'/'+_0x2c92d8)['json'](_0x547f4f);}return null;};}function patchUpdates(_0x69e4c1){return function(_0x34f398){try{jsonpatch['apply'](_0x34f398,_0x69e4c1,!![]);}catch(_0x54752a){return BPromise[_0xea4d('0x31')](_0x54752a);}return _0x34f398[_0xea4d('0x32')]();};}function saveUpdates(_0x43940e,_0x4443f8){return function(_0xbf4fa5){if(_0xbf4fa5){return _0xbf4fa5['update'](_0x43940e)[_0xea4d('0x1e')](function(_0x316959){return _0x316959;});}return null;};}function removeEntity(_0x369586,_0x1e49bb){return function(_0x23d5fb){if(_0x23d5fb){return _0x23d5fb[_0xea4d('0x33')]()['then'](function(){var _0x52734d=_0x23d5fb[_0xea4d('0x34')]({'plain':!![]});var _0x4a0332=_0xea4d('0x35');return db['UserProfileResource'][_0xea4d('0x33')]({'where':{'type':_0x4a0332,'resourceId':_0x52734d['id']}})[_0xea4d('0x1e')](function(){return _0x23d5fb;});})[_0xea4d('0x1e')](function(){_0x369586[_0xea4d('0x2e')](0xcc)[_0xea4d('0x28')]();});}};}function handleEntityNotFound(_0x65dbfe,_0x5e8662){return function(_0x3ddc96){if(!_0x3ddc96){_0x65dbfe['sendStatus'](0x194);}return _0x3ddc96;};}function handleError(_0x5417e3,_0x485011){_0x485011=_0x485011||0x1f4;return function(_0x5af34b){logger[_0xea4d('0x23')](_0x5af34b[_0xea4d('0x36')]);if(_0x5af34b['name']){delete _0x5af34b[_0xea4d('0x37')];}_0x5417e3[_0xea4d('0x2e')](_0x485011)[_0xea4d('0x38')](_0x5af34b);};}exports[_0xea4d('0x39')]=function(_0x2d255d,_0x79dded){var _0x25553f={'include':[{'model':db[_0xea4d('0x3a')],'as':_0xea4d('0x3b')}]},_0x16126c={},_0x40faf7={'count':0x0,'rows':[]};var _0xde5e29=_[_0xea4d('0x3c')](db['OpenchannelAccount']['rawAttributes'],function(_0x408fb1){return{'name':_0x408fb1[_0xea4d('0x3d')],'type':_0x408fb1[_0xea4d('0x3e')][_0xea4d('0x3f')]};});_0x16126c[_0xea4d('0x40')]=_['map'](_0xde5e29,'name');_0x16126c['query']=_[_0xea4d('0x41')](_0x2d255d[_0xea4d('0x42')]);_0x16126c[_0xea4d('0x43')]=_[_0xea4d('0x44')](_0x16126c[_0xea4d('0x40')],_0x16126c[_0xea4d('0x42')]);_0x25553f['attributes']=_[_0xea4d('0x44')](_0x16126c[_0xea4d('0x40')],qs[_0xea4d('0x45')](_0x2d255d[_0xea4d('0x42')][_0xea4d('0x45')]));_0x25553f[_0xea4d('0x46')]=_0x25553f[_0xea4d('0x46')][_0xea4d('0x47')]?_0x25553f[_0xea4d('0x46')]:_0x16126c[_0xea4d('0x40')];if(!_0x2d255d[_0xea4d('0x42')]['hasOwnProperty'](_0xea4d('0x48'))){_0x25553f[_0xea4d('0x2c')]=qs[_0xea4d('0x2c')](_0x2d255d[_0xea4d('0x42')][_0xea4d('0x2c')]);_0x25553f[_0xea4d('0x2a')]=qs[_0xea4d('0x2a')](_0x2d255d['query'][_0xea4d('0x2a')]);}_0x25553f[_0xea4d('0x49')]=qs['sort'](_0x2d255d['query']['sort']);_0x25553f[_0xea4d('0x4a')]=qs[_0xea4d('0x43')](_['pick'](_0x2d255d['query'],_0x16126c[_0xea4d('0x43')]),_0xde5e29);if(_0x2d255d[_0xea4d('0x42')][_0xea4d('0x4b')]){_0x25553f['where']=_[_0xea4d('0x4c')](_0x25553f[_0xea4d('0x4a')],{'$or':_[_0xea4d('0x3c')](_0xde5e29,function(_0x17cff8){if(_0x17cff8['type']!==_0xea4d('0x4d')){var _0x37c989={};_0x37c989[_0x17cff8['name']]={'$like':'%'+_0x2d255d[_0xea4d('0x42')][_0xea4d('0x4b')]+'%'};return _0x37c989;}})});}_0x25553f=_[_0xea4d('0x4c')]({},_0x25553f,_0x2d255d[_0xea4d('0x4e')]);var _0x472eaf={'where':_0x25553f[_0xea4d('0x4a')]};return db['OpenchannelAccount']['count'](_0x472eaf)['then'](function(_0x5c5cb3){_0x40faf7[_0xea4d('0x2d')]=_0x5c5cb3;if(_0x2d255d['query'][_0xea4d('0x4f')]){_0x25553f[_0xea4d('0x50')]=[{'all':!![]}];}return db['OpenchannelAccount'][_0xea4d('0x51')](_0x25553f);})['then'](function(_0x3be600){_0x40faf7[_0xea4d('0x52')]=_0x3be600;return _0x40faf7;})[_0xea4d('0x1e')](respondWithFilteredResult(_0x79dded,_0x25553f))[_0xea4d('0x27')](handleError(_0x79dded,null));};exports[_0xea4d('0x53')]=function(_0x43391e,_0x2b9e32){var _0x280cee={'raw':![],'where':{'id':_0x43391e['params']['id']},'include':[{'model':db['Pause'],'as':_0xea4d('0x3b')}]},_0x14672e={};_0x14672e['model']=_[_0xea4d('0x41')](db['OpenchannelAccount'][_0xea4d('0x54')]);_0x14672e[_0xea4d('0x42')]=_['keys'](_0x43391e[_0xea4d('0x42')]);_0x14672e[_0xea4d('0x43')]=_[_0xea4d('0x44')](_0x14672e[_0xea4d('0x40')],_0x14672e[_0xea4d('0x42')]);_0x280cee['attributes']=_[_0xea4d('0x44')](_0x14672e[_0xea4d('0x40')],qs[_0xea4d('0x45')](_0x43391e['query'][_0xea4d('0x45')]));_0x280cee[_0xea4d('0x46')]=_0x280cee[_0xea4d('0x46')][_0xea4d('0x47')]?_0x280cee[_0xea4d('0x46')]:_0x14672e[_0xea4d('0x40')];if(_0x43391e[_0xea4d('0x42')][_0xea4d('0x4f')]){_0x280cee[_0xea4d('0x50')]=[{'all':!![]}];}_0x280cee=_[_0xea4d('0x4c')]({},_0x280cee,_0x43391e[_0xea4d('0x4e')]);return db[_0xea4d('0x55')][_0xea4d('0x56')](_0x280cee)['then'](handleEntityNotFound(_0x2b9e32,null))[_0xea4d('0x1e')](respondWithResult(_0x2b9e32,null))['catch'](handleError(_0x2b9e32,null));};exports[_0xea4d('0x57')]=function(_0x5b1261,_0x1a78bd){return db[_0xea4d('0x55')][_0xea4d('0x57')](_0x5b1261['body'],{})[_0xea4d('0x1e')](function(_0xb6a1a3){var _0x3f8e3b=_0x5b1261[_0xea4d('0x58')]['get']({'plain':!![]});if(!_0x3f8e3b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3f8e3b[_0xea4d('0x59')]===_0xea4d('0x58')){var _0x4f5446=_0xb6a1a3['get']({'plain':!![]});var _0x11ef37=_0xea4d('0x35');return db['UserProfileSection'][_0xea4d('0x56')]({'where':{'name':_0x11ef37,'userProfileId':_0x3f8e3b[_0xea4d('0x5a')]},'raw':!![]})[_0xea4d('0x1e')](function(_0x12b7b7){if(_0x12b7b7&&_0x12b7b7[_0xea4d('0x5b')]===0x0){return db['UserProfileResource'][_0xea4d('0x57')]({'name':_0x4f5446['name'],'resourceId':_0x4f5446['id'],'type':_0x12b7b7[_0xea4d('0x37')],'sectionId':_0x12b7b7['id']},{})[_0xea4d('0x1e')](function(){return _0xb6a1a3;});}else{return _0xb6a1a3;}})['catch'](function(_0x50cc4f){logger[_0xea4d('0x23')](_0xea4d('0x5c'),_0x50cc4f);throw _0x50cc4f;});}return _0xb6a1a3;})[_0xea4d('0x1e')](respondWithResult(_0x1a78bd,0xc9))['catch'](handleError(_0x1a78bd,null));};exports[_0xea4d('0x5d')]=function(_0x94218b,_0x25ef3e){if(_0x94218b[_0xea4d('0x5e')]['id']){delete _0x94218b['body']['id'];}return db[_0xea4d('0x55')][_0xea4d('0x56')]({'where':{'id':_0x94218b[_0xea4d('0x5f')]['id']},'include':[{'model':db[_0xea4d('0x3a')],'as':'mandatoryDispositionPause'}]})[_0xea4d('0x1e')](handleEntityNotFound(_0x25ef3e,null))[_0xea4d('0x1e')](saveUpdates(_0x94218b[_0xea4d('0x5e')],null))['then'](respondWithResult(_0x25ef3e,null))[_0xea4d('0x27')](handleError(_0x25ef3e,null));};exports['destroy']=function(_0x4885fe,_0x3ad4e4){return db[_0xea4d('0x55')][_0xea4d('0x56')]({'where':{'id':_0x4885fe[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x3ad4e4,null))[_0xea4d('0x1e')](removeEntity(_0x3ad4e4,null))[_0xea4d('0x27')](handleError(_0x3ad4e4,null));};exports['describe']=function(_0x3dc0cd,_0x391559){return db[_0xea4d('0x55')][_0xea4d('0x60')]()[_0xea4d('0x1e')](respondWithResult(_0x391559,null))[_0xea4d('0x27')](handleError(_0x391559,null));};exports[_0xea4d('0x61')]=function(_0x2a1a42,_0x5af12b,_0x41aa98){if(_0x2a1a42[_0xea4d('0x5e')]['id']){delete _0x2a1a42['body']['id'];}return db[_0xea4d('0x55')]['find']({'where':{'id':_0x2a1a42[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x5af12b,null))['then'](function(_0x5a863f){if(_0x5a863f){_0x2a1a42[_0xea4d('0x5e')][_0xea4d('0x62')]=_0x5a863f['id'];return db[_0xea4d('0x63')]['create'](_0x2a1a42[_0xea4d('0x5e')]);}})[_0xea4d('0x1e')](respondWithResult(_0x5af12b,null))[_0xea4d('0x27')](handleError(_0x5af12b,null));};exports[_0xea4d('0x64')]=function(_0x243482,_0x109a70,_0x413a87){var _0x1348c5={'raw':![],'where':{}};var _0x1bdd18={};var _0x2a2eaa={'count':0x0,'rows':[]};return db[_0xea4d('0x55')][_0xea4d('0x65')]({'where':{'id':_0x243482[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x109a70,null))[_0xea4d('0x1e')](function(_0x5a4843){if(_0x5a4843){_0x1bdd18[_0xea4d('0x40')]=_[_0xea4d('0x41')](db[_0xea4d('0x63')][_0xea4d('0x54')]);_0x1bdd18[_0xea4d('0x42')]=_[_0xea4d('0x41')](_0x243482['query']);_0x1bdd18['filters']=_[_0xea4d('0x44')](_0x1bdd18[_0xea4d('0x40')],_0x1bdd18[_0xea4d('0x42')]);_0x1348c5['attributes']=_['intersection'](_0x1bdd18[_0xea4d('0x40')],qs[_0xea4d('0x45')](_0x243482['query'][_0xea4d('0x45')]));_0x1348c5[_0xea4d('0x46')]=_0x1348c5[_0xea4d('0x46')][_0xea4d('0x47')]?_0x1348c5[_0xea4d('0x46')]:_0x1bdd18[_0xea4d('0x40')];if(!_0x243482[_0xea4d('0x42')]['hasOwnProperty'](_0xea4d('0x48'))){_0x1348c5[_0xea4d('0x2c')]=qs[_0xea4d('0x2c')](_0x243482[_0xea4d('0x42')][_0xea4d('0x2c')]);_0x1348c5[_0xea4d('0x2a')]=qs['offset'](_0x243482[_0xea4d('0x42')][_0xea4d('0x2a')]);}_0x1348c5['order']=qs['sort'](_0x243482[_0xea4d('0x42')][_0xea4d('0x66')]);_0x1348c5[_0xea4d('0x4a')]=qs[_0xea4d('0x43')](_['pick'](_0x243482[_0xea4d('0x42')],_0x1bdd18[_0xea4d('0x43')]));_0x1348c5[_0xea4d('0x4a')][_0xea4d('0x62')]=_0x5a4843['id'];if(_0x243482['query'][_0xea4d('0x4b')]){_0x1348c5[_0xea4d('0x4a')]=_[_0xea4d('0x4c')](_0x1348c5[_0xea4d('0x4a')],{'$or':_[_0xea4d('0x3c')](_0x1348c5[_0xea4d('0x46')],function(_0x4c8e16){var _0x5208a1={};_0x5208a1[_0x4c8e16]={'$like':'%'+_0x243482[_0xea4d('0x42')][_0xea4d('0x4b')]+'%'};return _0x5208a1;})});}_0x1348c5=_[_0xea4d('0x4c')]({},_0x1348c5,_0x243482['options']);return db[_0xea4d('0x63')][_0xea4d('0x2d')]({'where':_0x1348c5[_0xea4d('0x4a')]})['then'](function(_0x2ea639){_0x2a2eaa[_0xea4d('0x2d')]=_0x2ea639;if(_0x243482['query'][_0xea4d('0x4f')]){_0x1348c5[_0xea4d('0x50')]=[{'all':!![]}];}return db[_0xea4d('0x63')][_0xea4d('0x51')](_0x1348c5);})[_0xea4d('0x1e')](function(_0x5e790a){_0x2a2eaa[_0xea4d('0x52')]=_0x5e790a;return _0x2a2eaa;});}})[_0xea4d('0x1e')](respondWithFilteredResult(_0x109a70,_0x1348c5))[_0xea4d('0x27')](handleError(_0x109a70,null));};exports['removeDispositions']=function(_0x281461,_0xcd2a98,_0x3bfaa2){return db[_0xea4d('0x55')][_0xea4d('0x56')]({'where':{'id':_0x281461['params']['id']}})['then'](handleEntityNotFound(_0xcd2a98,null))['then'](function(_0x37bf30){if(_0x37bf30){return _0x37bf30['removeDispositions'](_0x281461[_0xea4d('0x42')]['ids']);}})[_0xea4d('0x1e')](respondWithStatusCode(_0xcd2a98,null))['catch'](handleError(_0xcd2a98,null));};exports['addAnswer']=function(_0x1fe147,_0x188fa7,_0x234199){if(_0x1fe147['body']['id']){delete _0x1fe147[_0xea4d('0x5e')]['id'];}return db[_0xea4d('0x55')][_0xea4d('0x56')]({'where':{'id':_0x1fe147[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x188fa7,null))[_0xea4d('0x1e')](function(_0x23c202){if(_0x23c202){_0x1fe147[_0xea4d('0x5e')][_0xea4d('0x62')]=_0x23c202['id'];return db[_0xea4d('0x67')][_0xea4d('0x57')](_0x1fe147[_0xea4d('0x5e')]);}})['then'](respondWithResult(_0x188fa7,null))['catch'](handleError(_0x188fa7,null));};exports[_0xea4d('0x68')]=function(_0x3db3bc,_0x3c1363,_0x351791){var _0xeed37={'raw':![],'where':{}};var _0x275f1b={};var _0x1f6f00={'count':0x0,'rows':[]};return db[_0xea4d('0x55')]['findOne']({'where':{'id':_0x3db3bc[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x3c1363,null))['then'](function(_0x4c157e){if(_0x4c157e){_0x275f1b[_0xea4d('0x40')]=_[_0xea4d('0x41')](db[_0xea4d('0x67')]['rawAttributes']);_0x275f1b[_0xea4d('0x42')]=_['keys'](_0x3db3bc[_0xea4d('0x42')]);_0x275f1b[_0xea4d('0x43')]=_[_0xea4d('0x44')](_0x275f1b['model'],_0x275f1b['query']);_0xeed37[_0xea4d('0x46')]=_['intersection'](_0x275f1b['model'],qs['fields'](_0x3db3bc['query'][_0xea4d('0x45')]));_0xeed37[_0xea4d('0x46')]=_0xeed37[_0xea4d('0x46')][_0xea4d('0x47')]?_0xeed37['attributes']:_0x275f1b[_0xea4d('0x40')];if(!_0x3db3bc[_0xea4d('0x42')][_0xea4d('0x69')](_0xea4d('0x48'))){_0xeed37[_0xea4d('0x2c')]=qs[_0xea4d('0x2c')](_0x3db3bc[_0xea4d('0x42')][_0xea4d('0x2c')]);_0xeed37['offset']=qs[_0xea4d('0x2a')](_0x3db3bc['query']['offset']);}_0xeed37[_0xea4d('0x49')]=qs[_0xea4d('0x66')](_0x3db3bc[_0xea4d('0x42')][_0xea4d('0x66')]);_0xeed37[_0xea4d('0x4a')]=qs['filters'](_[_0xea4d('0x6a')](_0x3db3bc[_0xea4d('0x42')],_0x275f1b[_0xea4d('0x43')]));_0xeed37[_0xea4d('0x4a')]['OpenchannelAccountId']=_0x4c157e['id'];if(_0x3db3bc[_0xea4d('0x42')][_0xea4d('0x4b')]){_0xeed37[_0xea4d('0x4a')]=_['merge'](_0xeed37[_0xea4d('0x4a')],{'$or':_['map'](_0xeed37['attributes'],function(_0x3185c4){var _0x2ac385={};_0x2ac385[_0x3185c4]={'$like':'%'+_0x3db3bc[_0xea4d('0x42')][_0xea4d('0x4b')]+'%'};return _0x2ac385;})});}_0xeed37=_[_0xea4d('0x4c')]({},_0xeed37,_0x3db3bc[_0xea4d('0x4e')]);return db[_0xea4d('0x67')][_0xea4d('0x2d')]({'where':_0xeed37[_0xea4d('0x4a')]})[_0xea4d('0x1e')](function(_0x38863a){_0x1f6f00[_0xea4d('0x2d')]=_0x38863a;if(_0x3db3bc[_0xea4d('0x42')][_0xea4d('0x4f')]){_0xeed37['include']=[{'all':!![]}];}return db[_0xea4d('0x67')][_0xea4d('0x51')](_0xeed37);})[_0xea4d('0x1e')](function(_0x3f4bf5){_0x1f6f00[_0xea4d('0x52')]=_0x3f4bf5;return _0x1f6f00;});}})[_0xea4d('0x1e')](respondWithFilteredResult(_0x3c1363,_0xeed37))[_0xea4d('0x27')](handleError(_0x3c1363,null));};exports[_0xea4d('0x6b')]=function(_0x2ddd3a,_0x5aaeea,_0x3de26e){return db['OpenchannelAccount'][_0xea4d('0x56')]({'where':{'id':_0x2ddd3a[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x5aaeea,null))['then'](function(_0x75bcba){if(_0x75bcba){return _0x75bcba['removeAnswers'](_0x2ddd3a['query']['ids']);}})[_0xea4d('0x1e')](respondWithStatusCode(_0x5aaeea,null))[_0xea4d('0x27')](handleError(_0x5aaeea,null));};exports[_0xea4d('0x6c')]=function(_0xf532f,_0xe6f4a,_0x2af385){var _0x1796ac={'body':_0xf532f['body'],'channel':'openchannel'};var _0x5820b7=[];var _0x381019=[];var _0x251747={};var _0x2418d5=![];return db[_0xea4d('0x6d')]['describe']()[_0xea4d('0x1e')](function(_0x2fe7a9){if(!_0x2fe7a9){throw new db[(_0xea4d('0x6e'))]['ValidationError'](_0xea4d('0x6f'));}_0x5820b7=_['difference'](_[_0xea4d('0x41')](_0x2fe7a9),[_0xea4d('0x70'),_0xea4d('0x71')]);_0x381019=_['difference'](_[_0xea4d('0x41')](_0x2fe7a9),[_0xea4d('0x70'),'updatedAt',_0xea4d('0x72'),_0xea4d('0x73')]);if(_0xf532f[_0xea4d('0x5e')]['id']){delete _0xf532f[_0xea4d('0x5e')]['id'];}if(_['isNil'](_0xf532f[_0xea4d('0x5e')][_0xea4d('0x74')])){throw new db[(_0xea4d('0x6e'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0xea4d('0x75')](_0xf532f[_0xea4d('0x5e')][_0xea4d('0x5e')])||_0xf532f[_0xea4d('0x5e')][_0xea4d('0x5e')]===''){throw new db['Sequelize'][(_0xea4d('0x76'))](_0xea4d('0x77'));}if(_[_0xea4d('0x75')](_0xf532f[_0xea4d('0x5e')][_0xea4d('0x78')])){throw new db[(_0xea4d('0x6e'))][(_0xea4d('0x76'))](_0xea4d('0x79')+_0x381019);}if(!_[_0xea4d('0x7a')](_0x381019,_0xf532f[_0xea4d('0x5e')]['mapKey'])){throw new db[(_0xea4d('0x6e'))][(_0xea4d('0x76'))](_0xea4d('0x7b')+_0x381019);}_0x251747[_0xf532f[_0xea4d('0x5e')][_0xea4d('0x78')]]=_0xf532f[_0xea4d('0x5e')][_0xea4d('0x74')];})['then'](function(){return db[_0xea4d('0x55')][_0xea4d('0x56')]({'where':{'id':_0xf532f[_0xea4d('0x5f')]['id']},'include':[{'model':db['CmList'],'as':_0xea4d('0x7c'),'include':[{'model':db[_0xea4d('0x6d')],'as':'Contacts','where':_0x251747,'limit':0x1,'order':[['updatedAt',_0xea4d('0x7d')]]}]},{'model':db['OpenchannelApplication'],'as':'Applications'}]});})[_0xea4d('0x1e')](handleEntityNotFound(_0xe6f4a,null))[_0xea4d('0x1e')](function(_0x382f75){if(_0x382f75&&_0x382f75['List']){_0x1796ac['account']=_0x382f75;_0x1796ac['applications']=_0x382f75['Applications'];_0x1796ac[_0xea4d('0x7e')]=_0x382f75[_0xea4d('0x7c')];_0x1796ac[_0xea4d('0x7f')]=_[_0xea4d('0x80')](_0x1796ac['applications'],[_0xea4d('0x81')],[_0xea4d('0x82')]);if(_0x1796ac[_0xea4d('0x83')]['Applications']){delete _0x1796ac[_0xea4d('0x83')][_0xea4d('0x84')];}if(_0x1796ac[_0xea4d('0x83')][_0xea4d('0x7c')]&&_0x1796ac[_0xea4d('0x83')][_0xea4d('0x7c')]['Contacts'][_0xea4d('0x47')]){return _0x1796ac[_0xea4d('0x83')]['List'][_0xea4d('0x85')][0x0];}var _0x14dba3=_[_0xea4d('0x86')](_0xf532f[_0xea4d('0x5e')],{'firstName':_0xf532f['body'][_0xea4d('0x74')],'ListId':_0x382f75[_0xea4d('0x73')]});_0x14dba3[_0xf532f[_0xea4d('0x5e')][_0xea4d('0x78')]]=_0xf532f[_0xea4d('0x5e')]['from'];return db['CmContact'][_0xea4d('0x57')](_0x14dba3,{'fields':_0x5820b7,'raw':!![]});}})[_0xea4d('0x1e')](handleEntityNotFound(_0xe6f4a,null))['then'](function(_0x2a3725){_0x1796ac[_0xea4d('0x87')]=_0x2a3725;if(_0x2a3725){var _0x31383c={'ContactId':_0x2a3725['id'],'OpenchannelAccountId':_0xf532f['params']['id'],'from':(_0x2a3725[_0xea4d('0x88')]||'')+'\x20'+(_0x2a3725[_0xea4d('0x89')]||'')};var _0x4752eb={'OpenchannelAccountId':_0xf532f[_0xea4d('0x5f')]['id'],'closed':![]};if(_0xf532f[_0xea4d('0x5e')][_0xea4d('0x8a')]){_0x4752eb[_0xea4d('0x8a')]=_0xf532f[_0xea4d('0x5e')]['threadId'];return db['OpenchannelInteraction'][_0xea4d('0x56')]({'where':_0x4752eb})[_0xea4d('0x1e')](function(_0x2e384c){if(_0x2e384c){return[_0x2e384c,![]];}_0x31383c[_0xea4d('0x8a')]=_0xf532f[_0xea4d('0x5e')][_0xea4d('0x8a')];_0x31383c['externalUrl']=_0xf532f[_0xea4d('0x5e')][_0xea4d('0x8b')];return db['OpenchannelInteraction'][_0xea4d('0x57')](_0x31383c)[_0xea4d('0x1e')](function(_0x2568cc){return[_0x2568cc,!![]];});});}else{_0x4752eb[_0xea4d('0x8a')]=null;}_0x4752eb[_0xea4d('0x8c')]=_0x2a3725['id'];return db['OpenchannelInteraction'][_0xea4d('0x56')]({'where':_0x4752eb})[_0xea4d('0x1e')](function(_0x49dbb1){if(_0x49dbb1){return[_0x49dbb1,![]];}return db['OpenchannelInteraction']['create'](_0x31383c)[_0xea4d('0x1e')](function(_0x4bb6c9){return[_0x4bb6c9,!![]];});});}})[_0xea4d('0x8d')](function(_0x5ef29b,_0xb5fdaf){if(_0x5ef29b){_0x2418d5=_0xb5fdaf;if(!_0xb5fdaf){var _0x1734f2={'from':(_0x1796ac['contact']['firstName']||'')+'\x20'+(_0x1796ac[_0xea4d('0x87')][_0xea4d('0x89')]||'')};if(_0xf532f[_0xea4d('0x5e')]['threadId']&&_0xf532f['body'][_0xea4d('0x8e')]&&_0xf532f[_0xea4d('0x5e')][_0xea4d('0x8a')]!=_0xf532f[_0xea4d('0x5e')][_0xea4d('0x8e')]){_0x1734f2[_0xea4d('0x8a')]=_0xf532f[_0xea4d('0x5e')][_0xea4d('0x8e')];}return _0x5ef29b[_0xea4d('0x5d')](_0x1734f2);}else{return _0x5ef29b;}}})[_0xea4d('0x1e')](function(_0x3a290b){_0x1796ac[_0xea4d('0x8f')]=_0x3a290b[_0xea4d('0x34')]({'plain':!![]});_0x1796ac[_0xea4d('0x8f')][_0xea4d('0x90')]=_0x2418d5;if(_0x1796ac[_0xea4d('0x8f')][_0xea4d('0x90')]){if(_0x1796ac[_0xea4d('0x83')]['autoclose']){_0x1796ac[_0xea4d('0x7f')]['push']({'id':0x0,'priority':_0x1796ac[_0xea4d('0x7f')][_0xea4d('0x47')]+0x1,'app':_0xea4d('0x91'),'appdata':_0xea4d('0x92'),'interval':_0xea4d('0x93')});}}return db[_0xea4d('0x94')][_0xea4d('0x57')]({'body':_0xf532f['body'][_0xea4d('0x5e')],'OpenchannelAccountId':_0xf532f[_0xea4d('0x5f')]['id'],'OpenchannelInteractionId':_0x3a290b['id'],'direction':'in','ContactId':_0x1796ac[_0xea4d('0x87')]['id'],'AttachmentId':_0xf532f[_0xea4d('0x5e')][_0xea4d('0x95')]});})[_0xea4d('0x1e')](function(_0x12b9c3){_0x1796ac[_0xea4d('0x25')]=_0x12b9c3;if(_0x1796ac['interaction'][_0xea4d('0x96')]){return db['User']['find']({'attributes':['id','name'],'where':{'id':_0x1796ac['interaction'][_0xea4d('0x96')]}})[_0xea4d('0x1e')](function(_0x38e9dd){if(_0x38e9dd){_0x1796ac[_0xea4d('0x7f')][_0xea4d('0x97')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x38e9dd[_0xea4d('0x37')]+','+(_0x1796ac[_0xea4d('0x83')][_0xea4d('0x98')]||0xa),'interval':_0xea4d('0x93')});_0x1796ac['forcedOwnership']=![];}return respondWithRpcPromise(_0xea4d('0x99'),_0xea4d('0x9a'),_0x1796ac);});}return respondWithRpcPromise('Start','startRouting',_0x1796ac);})[_0xea4d('0x1e')](function(_0x25d199){respondWithRpcPromise(_0xea4d('0x9b'),_0xea4d('0x9b'),{'event':_0xea4d('0x6c'),'message':_0x25d199},client9002);return _0x25d199;})['then'](respondWithResult(_0xe6f4a,null))[_0xea4d('0x27')](handleError(_0xe6f4a,null));};exports['addApplications']=function(_0x3de0e5,_0x1612ef,_0x33e886){return db[_0xea4d('0x55')][_0xea4d('0x65')]({'where':{'id':_0x3de0e5[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x1612ef,null))[_0xea4d('0x1e')](function(_0x241303){if(_0x241303){return db[_0xea4d('0x9c')][_0xea4d('0x9d')](function(_0x467021){return db['OpenchannelApplication'][_0xea4d('0x33')]({'where':{'OpenchannelAccountId':_0x3de0e5['params']['id']},'transaction':_0x467021})['then'](function(_0x131d68){var _0x2a60a8=_[_0xea4d('0x3c')](_0x3de0e5[_0xea4d('0x5e')],function(_0x46f40b){_0x46f40b[_0xea4d('0x62')]=_0x3de0e5[_0xea4d('0x5f')]['id'];return _0x46f40b;});return db[_0xea4d('0x9e')]['bulkCreate'](_0x2a60a8,{'transaction':_0x467021});});})[_0xea4d('0x1e')](function(){return db[_0xea4d('0x9e')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x3de0e5[_0xea4d('0x5f')]['id']},'order':'priority'});});}})[_0xea4d('0x1e')](respondWithResult(_0x1612ef,null))['catch'](handleError(_0x1612ef,null));};exports[_0xea4d('0x9f')]=function(_0x503562,_0x17fd0c,_0x383e6d){var _0x3af7d5={};var _0x42abcd={};var _0x2af1e1;var _0x2d3b7b;return db[_0xea4d('0x55')]['findOne']({'where':{'id':_0x503562[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x17fd0c,null))[_0xea4d('0x1e')](function(_0x1e68a4){if(_0x1e68a4){_0x2af1e1=_0x1e68a4;_0x42abcd[_0xea4d('0x40')]=_[_0xea4d('0x41')](db['OpenchannelApplication'][_0xea4d('0x54')]);_0x42abcd[_0xea4d('0x42')]=_['keys'](_0x503562[_0xea4d('0x42')]);_0x42abcd[_0xea4d('0x43')]=_[_0xea4d('0x44')](_0x42abcd[_0xea4d('0x40')],_0x42abcd[_0xea4d('0x42')]);_0x3af7d5['attributes']=_[_0xea4d('0x44')](_0x42abcd['model'],qs[_0xea4d('0x45')](_0x503562['query'][_0xea4d('0x45')]));_0x3af7d5[_0xea4d('0x46')]=_0x3af7d5[_0xea4d('0x46')]['length']?_0x3af7d5[_0xea4d('0x46')]:_0x42abcd[_0xea4d('0x40')];_0x3af7d5['order']=qs[_0xea4d('0x66')](_0x503562[_0xea4d('0x42')]['sort']);_0x3af7d5['where']=qs[_0xea4d('0x43')](_[_0xea4d('0x6a')](_0x503562[_0xea4d('0x42')],_0x42abcd[_0xea4d('0x43')]));if(_0x503562[_0xea4d('0x42')][_0xea4d('0x4b')]){_0x3af7d5[_0xea4d('0x4a')]=_[_0xea4d('0x4c')](_0x3af7d5['where'],{'$or':_[_0xea4d('0x3c')](_0x3af7d5[_0xea4d('0x46')],function(_0xe52be2){var _0x2c00d6={};_0x2c00d6[_0xe52be2]={'$like':'%'+_0x503562[_0xea4d('0x42')][_0xea4d('0x4b')]+'%'};return _0x2c00d6;})});}_0x3af7d5=_[_0xea4d('0x4c')]({},_0x3af7d5,_0x503562[_0xea4d('0x4e')]);return _0x2af1e1[_0xea4d('0x9f')](_0x3af7d5);}})[_0xea4d('0x1e')](function(_0x378164){if(_0x378164){_0x2d3b7b=_0x378164[_0xea4d('0x47')];if(!_0x503562['query'][_0xea4d('0x69')]('nolimit')){_0x3af7d5[_0xea4d('0x2c')]=qs['limit'](_0x503562[_0xea4d('0x42')]['limit']);_0x3af7d5[_0xea4d('0x2a')]=qs[_0xea4d('0x2a')](_0x503562['query'][_0xea4d('0x2a')]);}return _0x2af1e1[_0xea4d('0x9f')](_0x3af7d5);}})[_0xea4d('0x1e')](function(_0x29ddcc){if(_0x29ddcc){return _0x29ddcc?{'count':_0x2d3b7b,'rows':_0x29ddcc}:null;}})[_0xea4d('0x1e')](respondWithResult(_0x17fd0c,null))[_0xea4d('0x27')](handleError(_0x17fd0c,null));};exports[_0xea4d('0xa0')]=function(_0x2a10c1,_0x3a6b30,_0x4ec9cf){var _0x3d158b={'raw':![],'where':{}};var _0x4a4948={};var _0x147eb7={'count':0x0,'rows':[]};return db[_0xea4d('0x55')]['findOne']({'where':{'id':_0x2a10c1[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x3a6b30,null))[_0xea4d('0x1e')](function(_0x56d4b7){if(_0x56d4b7){_0x4a4948[_0xea4d('0x40')]=_[_0xea4d('0x41')](db[_0xea4d('0xa1')]['rawAttributes']);_0x4a4948[_0xea4d('0x42')]=_['keys'](_0x2a10c1[_0xea4d('0x42')]);_0x4a4948[_0xea4d('0x43')]=_[_0xea4d('0x44')](_0x4a4948[_0xea4d('0x40')],_0x4a4948['query']);_0x3d158b[_0xea4d('0x46')]=_[_0xea4d('0x44')](_0x4a4948['model'],qs[_0xea4d('0x45')](_0x2a10c1['query'][_0xea4d('0x45')]));_0x3d158b['attributes']=_0x3d158b[_0xea4d('0x46')]['length']?_0x3d158b[_0xea4d('0x46')]:_0x4a4948[_0xea4d('0x40')];if(!_0x2a10c1['query'][_0xea4d('0x69')](_0xea4d('0x48'))){_0x3d158b['limit']=qs[_0xea4d('0x2c')](_0x2a10c1['query'][_0xea4d('0x2c')]);_0x3d158b[_0xea4d('0x2a')]=qs['offset'](_0x2a10c1[_0xea4d('0x42')][_0xea4d('0x2a')]);}_0x3d158b[_0xea4d('0x49')]=qs[_0xea4d('0x66')](_0x2a10c1[_0xea4d('0x42')][_0xea4d('0x66')]);_0x3d158b[_0xea4d('0x4a')]=qs[_0xea4d('0x43')](_[_0xea4d('0x6a')](_0x2a10c1['query'],_0x4a4948['filters']));_0x3d158b[_0xea4d('0x4a')]['OpenchannelAccountId']=_0x56d4b7['id'];if(_0x2a10c1[_0xea4d('0x42')][_0xea4d('0x4b')]){_0x3d158b[_0xea4d('0x4a')]=_[_0xea4d('0x4c')](_0x3d158b[_0xea4d('0x4a')],{'$or':_[_0xea4d('0x3c')](_0x3d158b[_0xea4d('0x46')],function(_0x4ea238){var _0x1778e6={};_0x1778e6[_0x4ea238]={'$like':'%'+_0x2a10c1[_0xea4d('0x42')]['filter']+'%'};return _0x1778e6;})});}_0x3d158b=_[_0xea4d('0x4c')]({},_0x3d158b,_0x2a10c1[_0xea4d('0x4e')]);return db[_0xea4d('0xa1')]['count']({'where':_0x3d158b[_0xea4d('0x4a')]})[_0xea4d('0x1e')](function(_0x5fb3f8){_0x147eb7[_0xea4d('0x2d')]=_0x5fb3f8;if(_0x2a10c1[_0xea4d('0x42')][_0xea4d('0x4f')]){_0x3d158b['include']=[{'model':db[_0xea4d('0x6d')],'as':_0xea4d('0xa2'),'required':![]},{'model':db['User'],'as':_0xea4d('0xa3'),'attributes':[_0xea4d('0x37'),_0xea4d('0xa4'),_0xea4d('0xa5')],'required':![]},{'model':db[_0xea4d('0xa6')],'as':_0xea4d('0xa7'),'attributes':['id',_0xea4d('0x37'),'color'],'where':_0x2a10c1[_0xea4d('0x42')][_0xea4d('0xa8')]?{'id':_0x2a10c1[_0xea4d('0x42')][_0xea4d('0xa8')]}:undefined,'required':_0x2a10c1[_0xea4d('0x42')][_0xea4d('0xa8')]?!![]:![]}];}return db[_0xea4d('0xa1')][_0xea4d('0x51')](_0x3d158b);})['then'](function(_0x420b1b){_0x147eb7[_0xea4d('0x52')]=_0x420b1b;return _0x147eb7;});}})[_0xea4d('0x1e')](respondWithFilteredResult(_0x3a6b30,_0x3d158b))[_0xea4d('0x27')](handleError(_0x3a6b30,null));};exports[_0xea4d('0xa9')]=function(_0x59c859,_0x4fc99f,_0x95204e){return db[_0xea4d('0x55')][_0xea4d('0x56')]({'where':{'id':_0x59c859[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x4fc99f,null))[_0xea4d('0x1e')](function(_0x4df968){if(_0x4df968){return _0x4df968[_0xea4d('0xa9')](_0x59c859['body'][_0xea4d('0xaa')],_[_0xea4d('0xab')](_0x59c859[_0xea4d('0x5e')],[_0xea4d('0xaa'),'id'])||{})[_0xea4d('0x8d')](function(_0x1e02f3){for(var _0x5edff4=0x0;_0x5edff4<_0x59c859[_0xea4d('0x5e')]['ids']['length'];_0x5edff4+=0x1){socket[_0xea4d('0xac')](_0xea4d('0xad'),{'UserId':Number(_0x59c859[_0xea4d('0x5e')]['ids'][_0x5edff4]),'OpenchannelAccountId':Number(_0x59c859['params']['id'])});}return _0x1e02f3;});}})[_0xea4d('0x1e')](respondWithResult(_0x4fc99f,null))[_0xea4d('0x27')](handleError(_0x4fc99f,null));};exports['removeAgents']=function(_0x3aa276,_0x11b699,_0x5d911f){return db[_0xea4d('0x55')][_0xea4d('0x56')]({'where':{'id':_0x3aa276[_0xea4d('0x5f')]['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x11b699,null))[_0xea4d('0x1e')](function(_0x5bb111){if(_0x5bb111){return _0x5bb111['removeAgents'](_0x3aa276[_0xea4d('0x42')][_0xea4d('0xaa')])['then'](function(){if(_['isArray'](_0x3aa276[_0xea4d('0x42')][_0xea4d('0xaa')])){for(var _0x45f8f7=0x0;_0x45f8f7<_0x3aa276[_0xea4d('0x42')][_0xea4d('0xaa')][_0xea4d('0x47')];_0x45f8f7+=0x1){socket[_0xea4d('0xac')](_0xea4d('0xae'),{'UserId':Number(_0x3aa276[_0xea4d('0x42')][_0xea4d('0xaa')][_0x45f8f7]),'OpenchannelAccountId':Number(_0x3aa276[_0xea4d('0x5f')]['id'])});}}else{socket[_0xea4d('0xac')](_0xea4d('0xae'),{'UserId':Number(_0x3aa276[_0xea4d('0x42')][_0xea4d('0xaa')]),'OpenchannelAccountId':Number(_0x3aa276['params']['id'])});}});}})[_0xea4d('0x1e')](respondWithStatusCode(_0x11b699,null))[_0xea4d('0x27')](handleError(_0x11b699,null));};exports[_0xea4d('0xaf')]=function(_0x30c399,_0x40e3ae,_0x51b9ef){var _0x141123={};var _0x34c780={};var _0x47e7d4;var _0x2d77af;return db['OpenchannelAccount'][_0xea4d('0x65')]({'where':{'id':_0x30c399['params']['id']}})[_0xea4d('0x1e')](handleEntityNotFound(_0x40e3ae,null))[_0xea4d('0x1e')](function(_0x3e02d9){if(_0x3e02d9){_0x47e7d4=_0x3e02d9;_0x34c780[_0xea4d('0x40')]=_[_0xea4d('0x41')](db['User'][_0xea4d('0x54')]);_0x34c780[_0xea4d('0x42')]=_[_0xea4d('0x41')](_0x30c399[_0xea4d('0x42')]);_0x34c780[_0xea4d('0x43')]=_[_0xea4d('0x44')](_0x34c780['model'],_0x34c780[_0xea4d('0x42')]);_0x141123['attributes']=_[_0xea4d('0x44')](_0x34c780[_0xea4d('0x40')],qs['fields'](_0x30c399[_0xea4d('0x42')]['fields']));_0x141123[_0xea4d('0x46')]=_0x141123[_0xea4d('0x46')][_0xea4d('0x47')]?_0x141123[_0xea4d('0x46')]:_0x34c780[_0xea4d('0x40')];_0x141123[_0xea4d('0x49')]=qs[_0xea4d('0x66')](_0x30c399[_0xea4d('0x42')][_0xea4d('0x66')]);_0x141123[_0xea4d('0x4a')]=qs['filters'](_[_0xea4d('0x6a')](_0x30c399['query'],_0x34c780[_0xea4d('0x43')]));if(_0x30c399['query'][_0xea4d('0x4b')]){_0x141123[_0xea4d('0x4a')]=_[_0xea4d('0x4c')](_0x141123['where'],{'$or':_[_0xea4d('0x3c')](_0x141123[_0xea4d('0x46')],function(_0x15edb9){var _0x317ebc={};_0x317ebc[_0x15edb9]={'$like':'%'+_0x30c399[_0xea4d('0x42')]['filter']+'%'};return _0x317ebc;})});}_0x141123=_[_0xea4d('0x4c')]({},_0x141123,_0x30c399[_0xea4d('0x4e')]);return _0x47e7d4[_0xea4d('0xaf')](_0x141123);}})[_0xea4d('0x1e')](function(_0x198c89){if(_0x198c89){_0x2d77af=_0x198c89[_0xea4d('0x47')];if(!_0x30c399[_0xea4d('0x42')][_0xea4d('0x69')](_0xea4d('0x48'))){_0x141123[_0xea4d('0x2c')]=qs[_0xea4d('0x2c')](_0x30c399['query']['limit']);_0x141123[_0xea4d('0x2a')]=qs['offset'](_0x30c399[_0xea4d('0x42')]['offset']);}return _0x47e7d4[_0xea4d('0xaf')](_0x141123);}})[_0xea4d('0x1e')](function(_0xdac6ca){if(_0xdac6ca){return _0xdac6ca?{'count':_0x2d77af,'rows':_0xdac6ca}:null;}})['then'](respondWithResult(_0x40e3ae,null))['catch'](handleError(_0x40e3ae,null));};exports['send']=function(_0x33b43e,_0x2b9967,_0x16b69b){var _0x127aa0,_0x56f97b,_0x3aa11a;if(_['isNil'](_0x33b43e[_0xea4d('0x5e')]['body'])||_0x33b43e[_0xea4d('0x5e')][_0xea4d('0x5e')]===''){throw new db[(_0xea4d('0x6e'))][(_0xea4d('0x76'))](_0xea4d('0x77'));}if(_[_0xea4d('0x75')](_0x33b43e[_0xea4d('0x5e')]['to'])){}_0x127aa0=_0x33b43e[_0xea4d('0x5e')]['to'];return db['OpenchannelAccount'][_0xea4d('0x65')]({'where':{'id':_0x33b43e['params']['id']}})['then'](handleEntityNotFound(_0x2b9967,null))[_0xea4d('0x1e')](function(_0x59b6fe){if(_0x59b6fe){return db[_0xea4d('0x55')][_0xea4d('0x56')]({'where':{'id':_0x59b6fe['id']},'include':[{'model':db[_0xea4d('0xb0')],'as':_0xea4d('0x7c'),'include':[{'model':db[_0xea4d('0x6d')],'as':_0xea4d('0x85'),'where':{[_0x59b6fe[_0xea4d('0x78')]]:_0x127aa0},'limit':0x1,'order':[[_0xea4d('0x71'),_0xea4d('0x7d')]]}]}]})[_0xea4d('0x1e')](handleEntityNotFound(_0x2b9967,null))['then'](function(_0x1689ad){if(_0x1689ad&&_0x1689ad[_0xea4d('0x7c')]){_0x56f97b=_0x1689ad[_0xea4d('0x34')]({'plain':!![]});if(_0x56f97b['List']&&_0x56f97b['List'][_0xea4d('0x85')]['length']){return _0x56f97b[_0xea4d('0x7c')][_0xea4d('0x85')][0x0];}return db[_0xea4d('0x6d')]['create'](_[_0xea4d('0x86')](_0x33b43e[_0xea4d('0x5e')],{'firstName':_0x127aa0,[_0x1689ad[_0xea4d('0x78')]]:_0x127aa0,'phone':_0x127aa0,'ListId':_0x56f97b[_0xea4d('0x73')]}));}})['then'](handleEntityNotFound(_0x2b9967,null))['then'](function(_0x33a63b){if(_0x33a63b){_0x3aa11a=_0x33a63b;return db[_0xea4d('0xa1')][_0xea4d('0x56')]({'where':{'ContactId':_0x3aa11a['id'],'closed':![],'OpenchannelAccountId':_0x56f97b['id']}})[_0xea4d('0x1e')](function(_0x2d5f14){if(_0x2d5f14){return[_0x2d5f14,![]];}return db[_0xea4d('0xa1')][_0xea4d('0x57')]({'UserId':_0x33b43e[_0xea4d('0x58')]['id'],'ContactId':_0x3aa11a['id'],'OpenchannelAccountId':_0x56f97b['id'],'lastMsgDirection':'out','Messages':[_[_0xea4d('0x4c')](_0x33b43e[_0xea4d('0x5e')],{'read':![],'body':_0x33b43e[_0xea4d('0x5e')][_0xea4d('0x5e')],'OpenchannelAccountId':_0x56f97b['id'],'UserId':_0x33b43e[_0xea4d('0x58')]['id'],'ContactId':_0x3aa11a['id']})]},{'include':[{'model':db[_0xea4d('0x94')],'as':'Messages'}]})[_0xea4d('0x1e')](function(_0x1bf964){return[_0x1bf964,!![]];});});}})[_0xea4d('0x8d')](function(_0x6f6c27,_0xd74562){if(_0xd74562){return _0x6f6c27;}return db['OpenchannelMessage'][_0xea4d('0x57')](_['merge'](_0x33b43e['body'],{'read':![],'body':_0x33b43e[_0xea4d('0x5e')][_0xea4d('0x5e')],'OpenchannelAccountId':_0x56f97b['id'],'OpenchannelInteractionId':_0x6f6c27['id'],'UserId':_0x33b43e[_0xea4d('0x58')]['id'],'ContactId':_0x3aa11a['id']}))[_0xea4d('0x1e')](function(_0x2471bb){_0x6f6c27['dataValues'][_0xea4d('0xb1')]=[];_0x6f6c27[_0xea4d('0xb2')]['Messages'][_0xea4d('0xb3')](_0x2471bb['dataValues']);return _0x6f6c27;});});}})[_0xea4d('0x1e')](respondWithResult(_0x2b9967,null))['catch'](handleError(_0x2b9967,null));};
\ No newline at end of file
+var _0x087d=['sox','ejs','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','client','http','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','UserProfileResource','name','index','Pause','mandatoryDispositionPause','OpenchannelAccount','fieldName','type','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filters','merge','VIRTUAL','filter','options','includeAll','findAll','rows','params','keys','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OpenchannelAccounts','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addDisposition','OpenchannelAccountId','Disposition','findOne','nolimit','include','ids','addAnswer','CannedAnswer','getAnswers','rawAttributes','removeAnswers','notify','openchannel','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','OpenchannelApplication','Applications','List','applications','list','orderBy','priority','asc','account','contact','lastName','threadId','OpenchannelInteraction','externalUrl','spread','firstName','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','addApplications','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','addAgents','omit','emit','userOpenchannelAccount:save','isArray','userOpenchannelAccount:remove','getAgents','send','out','Messages','dataValues','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path'];(function(_0x1c93dd,_0x14cd80){var _0x14ca04=function(_0x302931){while(--_0x302931){_0x1c93dd['push'](_0x1c93dd['shift']());}};_0x14ca04(++_0x14cd80);}(_0x087d,0xb4));var _0xd087=function(_0x4f85ee,_0x1f7e27){_0x4f85ee=_0x4f85ee-0x0;var _0x264332=_0x087d[_0x4f85ee];return _0x264332;};'use strict';var emlformat=require(_0xd087('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd087('0x1'));var jsonpatch=require(_0xd087('0x2'));var rp=require(_0xd087('0x3'));var moment=require(_0xd087('0x4'));var BPromise=require(_0xd087('0x5'));var Mustache=require(_0xd087('0x6'));var util=require('util');var path=require(_0xd087('0x7'));var sox=require(_0xd087('0x8'));var csv=require('to-csv');var ejs=require(_0xd087('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd087('0xa'));var squel=require(_0xd087('0xb'));var crypto=require(_0xd087('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xd087('0xd'));var toCsv=require(_0xd087('0xe'));var querystring=require('querystring');var Papa=require(_0xd087('0xf'));var Redis=require(_0xd087('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xd087('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd087('0x12'));var logger=require(_0xd087('0x13'))(_0xd087('0x14'));var utils=require(_0xd087('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd087('0x16'))['db'];config[_0xd087('0x17')]=_[_0xd087('0x18')](config[_0xd087('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xd087('0x19'))(new Redis(config[_0xd087('0x17')]));require('./openchannelAccount.socket')[_0xd087('0x1a')](socket);var jayson=require(_0xd087('0x1b'));var client=jayson[_0xd087('0x1c')][_0xd087('0x1d')]({'port':0x232c});var client9002=jayson[_0xd087('0x1c')][_0xd087('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4170cc,_0x24e67f,_0x2c2183,_0x5951a0){return new BPromise(function(_0x1398d2,_0x33bd11){var _0x5f2b0e=_0x5951a0||client;return _0x5f2b0e['request'](_0x4170cc,_0x2c2183)[_0xd087('0x1e')](function(_0x1a206d){logger[_0xd087('0x1f')](_0xd087('0x20'),_0x24e67f,_0xd087('0x21'));logger[_0xd087('0x22')](_0xd087('0x23'),_0x24e67f,_0xd087('0x21'),JSON[_0xd087('0x24')](_0x1a206d));if(_0x1a206d[_0xd087('0x25')]){if(_0x1a206d[_0xd087('0x25')]['code']===0x1f4){logger[_0xd087('0x25')](_0xd087('0x20'),_0x24e67f,_0x1a206d[_0xd087('0x25')]['message']);return _0x33bd11(_0x1a206d[_0xd087('0x25')][_0xd087('0x26')]);}logger[_0xd087('0x25')](_0xd087('0x20'),_0x24e67f,_0x1a206d[_0xd087('0x25')][_0xd087('0x26')]);return _0x1398d2(_0x1a206d[_0xd087('0x25')][_0xd087('0x26')]);}else{logger[_0xd087('0x1f')](_0xd087('0x20'),_0x24e67f,_0xd087('0x21'));_0x1398d2(_0x1a206d[_0xd087('0x27')][_0xd087('0x26')]);}})[_0xd087('0x28')](function(_0x225578){logger[_0xd087('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x24e67f,_0x225578);_0x33bd11(_0x225578);});});}function respondWithStatusCode(_0x2e3acf,_0x3a58e2){_0x3a58e2=_0x3a58e2||0xcc;return function(_0x4bbc30){if(_0x4bbc30){return _0x2e3acf[_0xd087('0x29')](_0x3a58e2);}return _0x2e3acf[_0xd087('0x2a')](_0x3a58e2)[_0xd087('0x2b')]();};}function respondWithResult(_0x125df3,_0x529373){_0x529373=_0x529373||0xc8;return function(_0x5c8aff){if(_0x5c8aff){return _0x125df3[_0xd087('0x2a')](_0x529373)[_0xd087('0x2c')](_0x5c8aff);}};}function respondWithFilteredResult(_0x9083f9,_0x1bf71d){return function(_0x506ef7){if(_0x506ef7){var _0x2efec3=typeof _0x1bf71d['offset']===_0xd087('0x2d')&&typeof _0x1bf71d[_0xd087('0x2e')]===_0xd087('0x2d');var _0xf92509=_0x506ef7[_0xd087('0x2f')];var _0x30a797=_0x2efec3?0x0:_0x1bf71d[_0xd087('0x30')];var _0x28703f=_0x2efec3?_0x506ef7['count']:_0x1bf71d[_0xd087('0x30')]+_0x1bf71d['limit'];var _0x5239a8;if(_0x28703f>=_0xf92509){_0x28703f=_0xf92509;_0x5239a8=0xc8;}else{_0x5239a8=0xce;}_0x9083f9[_0xd087('0x2a')](_0x5239a8);return _0x9083f9[_0xd087('0x31')](_0xd087('0x32'),_0x30a797+'-'+_0x28703f+'/'+_0xf92509)[_0xd087('0x2c')](_0x506ef7);}return null;};}function patchUpdates(_0xca4bca){return function(_0x42f23a){try{jsonpatch[_0xd087('0x33')](_0x42f23a,_0xca4bca,!![]);}catch(_0x24e602){return BPromise[_0xd087('0x34')](_0x24e602);}return _0x42f23a['save']();};}function saveUpdates(_0x5dd7dd,_0xd3aa25){return function(_0x4d11b5){if(_0x4d11b5){return _0x4d11b5[_0xd087('0x35')](_0x5dd7dd)[_0xd087('0x1e')](function(_0x575985){return _0x575985;});}return null;};}function removeEntity(_0x5cf0eb,_0x1133e5){return function(_0x31264d){if(_0x31264d){return _0x31264d[_0xd087('0x36')]()[_0xd087('0x1e')](function(){var _0x3efefd=_0x31264d['get']({'plain':!![]});var _0x4a9178='OpenchannelAccounts';return db[_0xd087('0x37')][_0xd087('0x36')]({'where':{'type':_0x4a9178,'resourceId':_0x3efefd['id']}})['then'](function(){return _0x31264d;});})[_0xd087('0x1e')](function(){_0x5cf0eb[_0xd087('0x2a')](0xcc)[_0xd087('0x2b')]();});}};}function handleEntityNotFound(_0x558734,_0x98d7f7){return function(_0x227bd6){if(!_0x227bd6){_0x558734['sendStatus'](0x194);}return _0x227bd6;};}function handleError(_0x23291a,_0x3a7ac8){_0x3a7ac8=_0x3a7ac8||0x1f4;return function(_0xea2616){logger[_0xd087('0x25')](_0xea2616['stack']);if(_0xea2616[_0xd087('0x38')]){delete _0xea2616[_0xd087('0x38')];}_0x23291a['status'](_0x3a7ac8)['send'](_0xea2616);};}exports[_0xd087('0x39')]=function(_0x1dd5b0,_0x58313a){var _0x1051ce={'include':[{'model':db[_0xd087('0x3a')],'as':_0xd087('0x3b')}]},_0x67158={},_0x1bfbc5={'count':0x0,'rows':[]};var _0x2709b8=_['map'](db[_0xd087('0x3c')]['rawAttributes'],function(_0x32c723){return{'name':_0x32c723[_0xd087('0x3d')],'type':_0x32c723[_0xd087('0x3e')][_0xd087('0x3f')]};});_0x67158[_0xd087('0x40')]=_[_0xd087('0x41')](_0x2709b8,_0xd087('0x38'));_0x67158[_0xd087('0x42')]=_['keys'](_0x1dd5b0[_0xd087('0x42')]);_0x67158['filters']=_[_0xd087('0x43')](_0x67158['model'],_0x67158[_0xd087('0x42')]);_0x1051ce[_0xd087('0x44')]=_[_0xd087('0x43')](_0x67158[_0xd087('0x40')],qs[_0xd087('0x45')](_0x1dd5b0[_0xd087('0x42')][_0xd087('0x45')]));_0x1051ce['attributes']=_0x1051ce['attributes'][_0xd087('0x46')]?_0x1051ce[_0xd087('0x44')]:_0x67158['model'];if(!_0x1dd5b0[_0xd087('0x42')][_0xd087('0x47')]('nolimit')){_0x1051ce[_0xd087('0x2e')]=qs[_0xd087('0x2e')](_0x1dd5b0['query']['limit']);_0x1051ce['offset']=qs[_0xd087('0x30')](_0x1dd5b0[_0xd087('0x42')][_0xd087('0x30')]);}_0x1051ce[_0xd087('0x48')]=qs[_0xd087('0x49')](_0x1dd5b0[_0xd087('0x42')][_0xd087('0x49')]);_0x1051ce[_0xd087('0x4a')]=qs['filters'](_[_0xd087('0x4b')](_0x1dd5b0[_0xd087('0x42')],_0x67158[_0xd087('0x4c')]),_0x2709b8);if(_0x1dd5b0[_0xd087('0x42')]['filter']){_0x1051ce[_0xd087('0x4a')]=_[_0xd087('0x4d')](_0x1051ce['where'],{'$or':_[_0xd087('0x41')](_0x2709b8,function(_0x528dc8){if(_0x528dc8[_0xd087('0x3e')]!==_0xd087('0x4e')){var _0x24c593={};_0x24c593[_0x528dc8[_0xd087('0x38')]]={'$like':'%'+_0x1dd5b0[_0xd087('0x42')][_0xd087('0x4f')]+'%'};return _0x24c593;}})});}_0x1051ce=_[_0xd087('0x4d')]({},_0x1051ce,_0x1dd5b0[_0xd087('0x50')]);var _0x15eaae={'where':_0x1051ce[_0xd087('0x4a')]};return db['OpenchannelAccount'][_0xd087('0x2f')](_0x15eaae)['then'](function(_0x522d13){_0x1bfbc5[_0xd087('0x2f')]=_0x522d13;if(_0x1dd5b0['query'][_0xd087('0x51')]){_0x1051ce['include']=[{'all':!![]}];}return db[_0xd087('0x3c')][_0xd087('0x52')](_0x1051ce);})[_0xd087('0x1e')](function(_0x5e31db){_0x1bfbc5[_0xd087('0x53')]=_0x5e31db;return _0x1bfbc5;})[_0xd087('0x1e')](respondWithFilteredResult(_0x58313a,_0x1051ce))[_0xd087('0x28')](handleError(_0x58313a,null));};exports['show']=function(_0x29856e,_0x3f5e77){var _0x42907f={'raw':![],'where':{'id':_0x29856e[_0xd087('0x54')]['id']},'include':[{'model':db[_0xd087('0x3a')],'as':_0xd087('0x3b')}]},_0x23c947={};_0x23c947['model']=_['keys'](db[_0xd087('0x3c')]['rawAttributes']);_0x23c947[_0xd087('0x42')]=_[_0xd087('0x55')](_0x29856e[_0xd087('0x42')]);_0x23c947['filters']=_[_0xd087('0x43')](_0x23c947[_0xd087('0x40')],_0x23c947['query']);_0x42907f[_0xd087('0x44')]=_[_0xd087('0x43')](_0x23c947['model'],qs[_0xd087('0x45')](_0x29856e[_0xd087('0x42')]['fields']));_0x42907f['attributes']=_0x42907f[_0xd087('0x44')][_0xd087('0x46')]?_0x42907f[_0xd087('0x44')]:_0x23c947[_0xd087('0x40')];if(_0x29856e[_0xd087('0x42')][_0xd087('0x51')]){_0x42907f['include']=[{'all':!![]}];}_0x42907f=_[_0xd087('0x4d')]({},_0x42907f,_0x29856e[_0xd087('0x50')]);return db[_0xd087('0x3c')]['find'](_0x42907f)[_0xd087('0x1e')](handleEntityNotFound(_0x3f5e77,null))[_0xd087('0x1e')](respondWithResult(_0x3f5e77,null))['catch'](handleError(_0x3f5e77,null));};exports['create']=function(_0x25f27c,_0x1600a3){return db[_0xd087('0x3c')][_0xd087('0x56')](_0x25f27c['body'],{})['then'](function(_0x25bbde){var _0x272406=_0x25f27c[_0xd087('0x57')][_0xd087('0x58')]({'plain':!![]});if(!_0x272406)throw new Error(_0xd087('0x59'));if(_0x272406[_0xd087('0x5a')]==='user'){var _0x426fe3=_0x25bbde['get']({'plain':!![]});var _0x2b430d=_0xd087('0x5b');return db['UserProfileSection'][_0xd087('0x5c')]({'where':{'name':_0x2b430d,'userProfileId':_0x272406[_0xd087('0x5d')]},'raw':!![]})[_0xd087('0x1e')](function(_0x308541){if(_0x308541&&_0x308541[_0xd087('0x5e')]===0x0){return db[_0xd087('0x37')][_0xd087('0x56')]({'name':_0x426fe3[_0xd087('0x38')],'resourceId':_0x426fe3['id'],'type':_0x308541[_0xd087('0x38')],'sectionId':_0x308541['id']},{})['then'](function(){return _0x25bbde;});}else{return _0x25bbde;}})[_0xd087('0x28')](function(_0x2e325a){logger[_0xd087('0x25')](_0xd087('0x5f'),_0x2e325a);throw _0x2e325a;});}return _0x25bbde;})[_0xd087('0x1e')](respondWithResult(_0x1600a3,0xc9))[_0xd087('0x28')](handleError(_0x1600a3,null));};exports['update']=function(_0xab811d,_0x5cc819){if(_0xab811d[_0xd087('0x60')]['id']){delete _0xab811d['body']['id'];}return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0xab811d['params']['id']},'include':[{'model':db['Pause'],'as':_0xd087('0x3b')}]})[_0xd087('0x1e')](handleEntityNotFound(_0x5cc819,null))['then'](saveUpdates(_0xab811d['body'],null))[_0xd087('0x1e')](respondWithResult(_0x5cc819,null))[_0xd087('0x28')](handleError(_0x5cc819,null));};exports['destroy']=function(_0x17f980,_0x285376){return db['OpenchannelAccount'][_0xd087('0x5c')]({'where':{'id':_0x17f980[_0xd087('0x54')]['id']}})['then'](handleEntityNotFound(_0x285376,null))['then'](removeEntity(_0x285376,null))[_0xd087('0x28')](handleError(_0x285376,null));};exports['describe']=function(_0x5ae632,_0x8d17){return db[_0xd087('0x3c')]['describe']()[_0xd087('0x1e')](respondWithResult(_0x8d17,null))[_0xd087('0x28')](handleError(_0x8d17,null));};exports[_0xd087('0x61')]=function(_0x435727,_0xc4de42,_0x4ef8ca){if(_0x435727[_0xd087('0x60')]['id']){delete _0x435727[_0xd087('0x60')]['id'];}return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0x435727[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0xc4de42,null))[_0xd087('0x1e')](function(_0x4afb2d){if(_0x4afb2d){_0x435727['body'][_0xd087('0x62')]=_0x4afb2d['id'];return db[_0xd087('0x63')][_0xd087('0x56')](_0x435727[_0xd087('0x60')]);}})['then'](respondWithResult(_0xc4de42,null))[_0xd087('0x28')](handleError(_0xc4de42,null));};exports['getDispositions']=function(_0x3895c5,_0x36001a,_0x49ee9b){var _0x170318={'raw':![],'where':{}};var _0x520657={};var _0x6bb440={'count':0x0,'rows':[]};return db[_0xd087('0x3c')][_0xd087('0x64')]({'where':{'id':_0x3895c5[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x36001a,null))[_0xd087('0x1e')](function(_0x626a0b){if(_0x626a0b){_0x520657['model']=_['keys'](db[_0xd087('0x63')]['rawAttributes']);_0x520657[_0xd087('0x42')]=_['keys'](_0x3895c5[_0xd087('0x42')]);_0x520657['filters']=_[_0xd087('0x43')](_0x520657[_0xd087('0x40')],_0x520657[_0xd087('0x42')]);_0x170318['attributes']=_[_0xd087('0x43')](_0x520657['model'],qs['fields'](_0x3895c5[_0xd087('0x42')][_0xd087('0x45')]));_0x170318[_0xd087('0x44')]=_0x170318[_0xd087('0x44')][_0xd087('0x46')]?_0x170318[_0xd087('0x44')]:_0x520657[_0xd087('0x40')];if(!_0x3895c5['query'][_0xd087('0x47')](_0xd087('0x65'))){_0x170318['limit']=qs['limit'](_0x3895c5['query'][_0xd087('0x2e')]);_0x170318['offset']=qs[_0xd087('0x30')](_0x3895c5[_0xd087('0x42')]['offset']);}_0x170318[_0xd087('0x48')]=qs[_0xd087('0x49')](_0x3895c5['query'][_0xd087('0x49')]);_0x170318[_0xd087('0x4a')]=qs[_0xd087('0x4c')](_[_0xd087('0x4b')](_0x3895c5['query'],_0x520657[_0xd087('0x4c')]));_0x170318[_0xd087('0x4a')][_0xd087('0x62')]=_0x626a0b['id'];if(_0x3895c5['query'][_0xd087('0x4f')]){_0x170318[_0xd087('0x4a')]=_[_0xd087('0x4d')](_0x170318[_0xd087('0x4a')],{'$or':_['map'](_0x170318[_0xd087('0x44')],function(_0x377fc4){var _0x2e77bd={};_0x2e77bd[_0x377fc4]={'$like':'%'+_0x3895c5[_0xd087('0x42')][_0xd087('0x4f')]+'%'};return _0x2e77bd;})});}_0x170318=_[_0xd087('0x4d')]({},_0x170318,_0x3895c5[_0xd087('0x50')]);return db['Disposition'][_0xd087('0x2f')]({'where':_0x170318[_0xd087('0x4a')]})[_0xd087('0x1e')](function(_0x4e4397){_0x6bb440[_0xd087('0x2f')]=_0x4e4397;if(_0x3895c5[_0xd087('0x42')]['includeAll']){_0x170318[_0xd087('0x66')]=[{'all':!![]}];}return db[_0xd087('0x63')]['findAll'](_0x170318);})[_0xd087('0x1e')](function(_0x52c685){_0x6bb440['rows']=_0x52c685;return _0x6bb440;});}})[_0xd087('0x1e')](respondWithFilteredResult(_0x36001a,_0x170318))[_0xd087('0x28')](handleError(_0x36001a,null));};exports['removeDispositions']=function(_0x18e53a,_0x36862c,_0x2d3c62){return db['OpenchannelAccount']['find']({'where':{'id':_0x18e53a['params']['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x36862c,null))[_0xd087('0x1e')](function(_0xcb54d7){if(_0xcb54d7){return _0xcb54d7['removeDispositions'](_0x18e53a['query'][_0xd087('0x67')]);}})[_0xd087('0x1e')](respondWithStatusCode(_0x36862c,null))[_0xd087('0x28')](handleError(_0x36862c,null));};exports[_0xd087('0x68')]=function(_0x46e5b7,_0x25a906,_0x144627){if(_0x46e5b7[_0xd087('0x60')]['id']){delete _0x46e5b7['body']['id'];}return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0x46e5b7[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x25a906,null))[_0xd087('0x1e')](function(_0x3ce29c){if(_0x3ce29c){_0x46e5b7[_0xd087('0x60')][_0xd087('0x62')]=_0x3ce29c['id'];return db[_0xd087('0x69')][_0xd087('0x56')](_0x46e5b7[_0xd087('0x60')]);}})[_0xd087('0x1e')](respondWithResult(_0x25a906,null))[_0xd087('0x28')](handleError(_0x25a906,null));};exports[_0xd087('0x6a')]=function(_0x39ba01,_0xda90f8,_0x22cc8e){var _0x24850b={'raw':![],'where':{}};var _0x461b5f={};var _0x1d6ef1={'count':0x0,'rows':[]};return db[_0xd087('0x3c')][_0xd087('0x64')]({'where':{'id':_0x39ba01[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0xda90f8,null))[_0xd087('0x1e')](function(_0x311c96){if(_0x311c96){_0x461b5f[_0xd087('0x40')]=_[_0xd087('0x55')](db[_0xd087('0x69')][_0xd087('0x6b')]);_0x461b5f[_0xd087('0x42')]=_[_0xd087('0x55')](_0x39ba01[_0xd087('0x42')]);_0x461b5f[_0xd087('0x4c')]=_[_0xd087('0x43')](_0x461b5f['model'],_0x461b5f[_0xd087('0x42')]);_0x24850b[_0xd087('0x44')]=_[_0xd087('0x43')](_0x461b5f[_0xd087('0x40')],qs[_0xd087('0x45')](_0x39ba01['query'][_0xd087('0x45')]));_0x24850b[_0xd087('0x44')]=_0x24850b['attributes'][_0xd087('0x46')]?_0x24850b[_0xd087('0x44')]:_0x461b5f[_0xd087('0x40')];if(!_0x39ba01[_0xd087('0x42')][_0xd087('0x47')]('nolimit')){_0x24850b[_0xd087('0x2e')]=qs[_0xd087('0x2e')](_0x39ba01[_0xd087('0x42')]['limit']);_0x24850b['offset']=qs['offset'](_0x39ba01[_0xd087('0x42')][_0xd087('0x30')]);}_0x24850b['order']=qs[_0xd087('0x49')](_0x39ba01[_0xd087('0x42')][_0xd087('0x49')]);_0x24850b['where']=qs['filters'](_[_0xd087('0x4b')](_0x39ba01[_0xd087('0x42')],_0x461b5f[_0xd087('0x4c')]));_0x24850b[_0xd087('0x4a')][_0xd087('0x62')]=_0x311c96['id'];if(_0x39ba01['query'][_0xd087('0x4f')]){_0x24850b[_0xd087('0x4a')]=_[_0xd087('0x4d')](_0x24850b[_0xd087('0x4a')],{'$or':_[_0xd087('0x41')](_0x24850b[_0xd087('0x44')],function(_0x3d0ab5){var _0x190b5c={};_0x190b5c[_0x3d0ab5]={'$like':'%'+_0x39ba01[_0xd087('0x42')]['filter']+'%'};return _0x190b5c;})});}_0x24850b=_[_0xd087('0x4d')]({},_0x24850b,_0x39ba01[_0xd087('0x50')]);return db[_0xd087('0x69')][_0xd087('0x2f')]({'where':_0x24850b['where']})[_0xd087('0x1e')](function(_0x209d8a){_0x1d6ef1[_0xd087('0x2f')]=_0x209d8a;if(_0x39ba01[_0xd087('0x42')]['includeAll']){_0x24850b[_0xd087('0x66')]=[{'all':!![]}];}return db[_0xd087('0x69')]['findAll'](_0x24850b);})[_0xd087('0x1e')](function(_0x4eae90){_0x1d6ef1[_0xd087('0x53')]=_0x4eae90;return _0x1d6ef1;});}})[_0xd087('0x1e')](respondWithFilteredResult(_0xda90f8,_0x24850b))[_0xd087('0x28')](handleError(_0xda90f8,null));};exports[_0xd087('0x6c')]=function(_0x1aa22d,_0x539a5e,_0x599b15){return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0x1aa22d[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x539a5e,null))[_0xd087('0x1e')](function(_0x18ad54){if(_0x18ad54){return _0x18ad54[_0xd087('0x6c')](_0x1aa22d[_0xd087('0x42')]['ids']);}})[_0xd087('0x1e')](respondWithStatusCode(_0x539a5e,null))[_0xd087('0x28')](handleError(_0x539a5e,null));};exports[_0xd087('0x6d')]=function(_0x5dd20d,_0x5cd51f,_0x36babf){var _0x58e487={'body':_0x5dd20d[_0xd087('0x60')],'channel':_0xd087('0x6e')};var _0x140af9=[];var _0x5c52ec=[];var _0x2f828b={};var _0x2ba6f8=![];return db[_0xd087('0x6f')][_0xd087('0x70')]()[_0xd087('0x1e')](function(_0x1f3fe7){if(!_0x1f3fe7){throw new db[(_0xd087('0x71'))][(_0xd087('0x72'))](_0xd087('0x73'));}_0x140af9=_[_0xd087('0x74')](_[_0xd087('0x55')](_0x1f3fe7),[_0xd087('0x75'),_0xd087('0x76')]);_0x5c52ec=_[_0xd087('0x74')](_[_0xd087('0x55')](_0x1f3fe7),[_0xd087('0x75'),_0xd087('0x76'),_0xd087('0x77'),_0xd087('0x78')]);if(_0x5dd20d[_0xd087('0x60')]['id']){delete _0x5dd20d['body']['id'];}if(_[_0xd087('0x79')](_0x5dd20d[_0xd087('0x60')][_0xd087('0x7a')])){throw new db[(_0xd087('0x71'))][(_0xd087('0x72'))]('from\x20is\x20mandatory');}if(_[_0xd087('0x79')](_0x5dd20d[_0xd087('0x60')][_0xd087('0x60')])||_0x5dd20d[_0xd087('0x60')][_0xd087('0x60')]===''){throw new db[(_0xd087('0x71'))][(_0xd087('0x72'))](_0xd087('0x7b'));}if(_[_0xd087('0x79')](_0x5dd20d[_0xd087('0x60')][_0xd087('0x7c')])){throw new db['Sequelize'][(_0xd087('0x72'))](_0xd087('0x7d')+_0x5c52ec);}if(!_[_0xd087('0x7e')](_0x5c52ec,_0x5dd20d[_0xd087('0x60')][_0xd087('0x7c')])){throw new db[(_0xd087('0x71'))][(_0xd087('0x72'))](_0xd087('0x7f')+_0x5c52ec);}_0x2f828b[_0x5dd20d[_0xd087('0x60')][_0xd087('0x7c')]]=_0x5dd20d[_0xd087('0x60')][_0xd087('0x7a')];})[_0xd087('0x1e')](function(){return db[_0xd087('0x3c')]['find']({'where':{'id':_0x5dd20d['params']['id']},'include':[{'model':db[_0xd087('0x80')],'as':'List','include':[{'model':db[_0xd087('0x6f')],'as':_0xd087('0x81'),'where':_0x2f828b,'limit':0x1,'order':[[_0xd087('0x76'),_0xd087('0x82')]]}]},{'model':db[_0xd087('0x83')],'as':_0xd087('0x84')}]});})['then'](handleEntityNotFound(_0x5cd51f,null))['then'](function(_0x365c2d){if(_0x365c2d&&_0x365c2d[_0xd087('0x85')]){_0x58e487['account']=_0x365c2d;_0x58e487[_0xd087('0x86')]=_0x365c2d[_0xd087('0x84')];_0x58e487[_0xd087('0x87')]=_0x365c2d[_0xd087('0x85')];_0x58e487[_0xd087('0x86')]=_[_0xd087('0x88')](_0x58e487[_0xd087('0x86')],[_0xd087('0x89')],[_0xd087('0x8a')]);if(_0x58e487[_0xd087('0x8b')][_0xd087('0x84')]){delete _0x58e487['account'][_0xd087('0x84')];}if(_0x58e487[_0xd087('0x8b')]['List']&&_0x58e487[_0xd087('0x8b')][_0xd087('0x85')]['Contacts'][_0xd087('0x46')]){return _0x58e487[_0xd087('0x8b')][_0xd087('0x85')][_0xd087('0x81')][0x0];}var _0x1bb8ed=_['defaults'](_0x5dd20d[_0xd087('0x60')],{'firstName':_0x5dd20d[_0xd087('0x60')][_0xd087('0x7a')],'ListId':_0x365c2d['ListId']});_0x1bb8ed[_0x5dd20d[_0xd087('0x60')]['mapKey']]=_0x5dd20d[_0xd087('0x60')][_0xd087('0x7a')];return db['CmContact'][_0xd087('0x56')](_0x1bb8ed,{'fields':_0x140af9,'raw':!![]});}})[_0xd087('0x1e')](handleEntityNotFound(_0x5cd51f,null))[_0xd087('0x1e')](function(_0x56d1b3){_0x58e487[_0xd087('0x8c')]=_0x56d1b3;if(_0x56d1b3){var _0xee1c30={'ContactId':_0x56d1b3['id'],'OpenchannelAccountId':_0x5dd20d[_0xd087('0x54')]['id'],'from':(_0x56d1b3['firstName']||'')+'\x20'+(_0x56d1b3[_0xd087('0x8d')]||'')};var _0x15fb7e={'OpenchannelAccountId':_0x5dd20d[_0xd087('0x54')]['id'],'closed':![]};if(_0x5dd20d['body'][_0xd087('0x8e')]){_0x15fb7e['threadId']=_0x5dd20d[_0xd087('0x60')][_0xd087('0x8e')];return db[_0xd087('0x8f')]['find']({'where':_0x15fb7e})['then'](function(_0x3fccec){if(_0x3fccec){return[_0x3fccec,![]];}_0xee1c30[_0xd087('0x8e')]=_0x5dd20d[_0xd087('0x60')][_0xd087('0x8e')];_0xee1c30['externalUrl']=_0x5dd20d[_0xd087('0x60')][_0xd087('0x90')];return db['OpenchannelInteraction'][_0xd087('0x56')](_0xee1c30)[_0xd087('0x1e')](function(_0x25ea1a){return[_0x25ea1a,!![]];});});}else{_0x15fb7e[_0xd087('0x8e')]=null;}_0x15fb7e['ContactId']=_0x56d1b3['id'];return db[_0xd087('0x8f')]['find']({'where':_0x15fb7e})[_0xd087('0x1e')](function(_0x2bf37f){if(_0x2bf37f){return[_0x2bf37f,![]];}return db[_0xd087('0x8f')][_0xd087('0x56')](_0xee1c30)['then'](function(_0x2aedc1){return[_0x2aedc1,!![]];});});}})[_0xd087('0x91')](function(_0x1489b6,_0x5418f5){if(_0x1489b6){_0x2ba6f8=_0x5418f5;if(!_0x5418f5){var _0x3793bf={'from':(_0x58e487[_0xd087('0x8c')][_0xd087('0x92')]||'')+'\x20'+(_0x58e487[_0xd087('0x8c')][_0xd087('0x8d')]||'')};if(_0x5dd20d[_0xd087('0x60')]['threadId']&&_0x5dd20d[_0xd087('0x60')]['messageId']&&_0x5dd20d[_0xd087('0x60')]['threadId']!=_0x5dd20d[_0xd087('0x60')]['messageId']){_0x3793bf['threadId']=_0x5dd20d[_0xd087('0x60')][_0xd087('0x93')];}return _0x1489b6[_0xd087('0x35')](_0x3793bf);}else{return _0x1489b6;}}})[_0xd087('0x1e')](function(_0x328021){_0x58e487[_0xd087('0x94')]=_0x328021['get']({'plain':!![]});_0x58e487[_0xd087('0x94')][_0xd087('0x95')]=_0x2ba6f8;if(_0x58e487[_0xd087('0x94')][_0xd087('0x95')]){if(_0x58e487[_0xd087('0x8b')][_0xd087('0x96')]){_0x58e487[_0xd087('0x86')][_0xd087('0x97')]({'id':0x0,'priority':_0x58e487[_0xd087('0x86')]['length']+0x1,'app':_0xd087('0x98'),'appdata':_0xd087('0x99'),'interval':_0xd087('0x9a')});}}return db[_0xd087('0x9b')][_0xd087('0x56')]({'body':_0x5dd20d[_0xd087('0x60')][_0xd087('0x60')],'OpenchannelAccountId':_0x5dd20d[_0xd087('0x54')]['id'],'OpenchannelInteractionId':_0x328021['id'],'direction':'in','ContactId':_0x58e487[_0xd087('0x8c')]['id'],'AttachmentId':_0x5dd20d[_0xd087('0x60')][_0xd087('0x9c')]});})['then'](function(_0x335e5f){_0x58e487[_0xd087('0x26')]=_0x335e5f;if(_0x58e487[_0xd087('0x94')][_0xd087('0x9d')]){return db[_0xd087('0x9e')][_0xd087('0x5c')]({'attributes':['id',_0xd087('0x38')],'where':{'id':_0x58e487['interaction'][_0xd087('0x9d')]}})[_0xd087('0x1e')](function(_0x4e6e41){if(_0x4e6e41){_0x58e487['applications'][_0xd087('0x9f')]({'id':0x0,'priority':0x0,'app':_0xd087('0xa0'),'appdata':_0x4e6e41[_0xd087('0x38')]+','+(_0x58e487[_0xd087('0x8b')]['waitForTheAssignedAgent']||0xa),'interval':_0xd087('0x9a')});_0x58e487[_0xd087('0xa1')]=![];}return respondWithRpcPromise(_0xd087('0xa2'),_0xd087('0xa3'),_0x58e487);});}return respondWithRpcPromise('Start','startRouting',_0x58e487);})[_0xd087('0x1e')](function(_0xe2873){respondWithRpcPromise('EventManager',_0xd087('0xa4'),{'event':'notify','message':_0xe2873},client9002);return _0xe2873;})[_0xd087('0x1e')](respondWithResult(_0x5cd51f,null))[_0xd087('0x28')](handleError(_0x5cd51f,null));};exports[_0xd087('0xa5')]=function(_0x4b359b,_0x128fbd,_0x326a9b){return db[_0xd087('0x3c')]['findOne']({'where':{'id':_0x4b359b[_0xd087('0x54')]['id']}})['then'](handleEntityNotFound(_0x128fbd,null))['then'](function(_0x45213d){if(_0x45213d){return db['sequelize']['transaction'](function(_0x1c7756){return db[_0xd087('0x83')][_0xd087('0x36')]({'where':{'OpenchannelAccountId':_0x4b359b[_0xd087('0x54')]['id']},'transaction':_0x1c7756})['then'](function(_0x5ae2ab){var _0x2f68d6=_[_0xd087('0x41')](_0x4b359b['body'],function(_0x176c50){_0x176c50['OpenchannelAccountId']=_0x4b359b['params']['id'];return _0x176c50;});return db[_0xd087('0x83')][_0xd087('0xa6')](_0x2f68d6,{'transaction':_0x1c7756});});})[_0xd087('0x1e')](function(){return db[_0xd087('0x83')][_0xd087('0xa7')]({'where':{'OpenchannelAccountId':_0x4b359b[_0xd087('0x54')]['id']},'order':_0xd087('0x89')});});}})[_0xd087('0x1e')](respondWithResult(_0x128fbd,null))['catch'](handleError(_0x128fbd,null));};exports[_0xd087('0xa8')]=function(_0x129d34,_0x1a9dd9,_0x58a880){var _0x284618={};var _0xd2b4a2={};var _0x5c3ea5;var _0x10a29c;return db[_0xd087('0x3c')]['findOne']({'where':{'id':_0x129d34[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x1a9dd9,null))[_0xd087('0x1e')](function(_0xad89bc){if(_0xad89bc){_0x5c3ea5=_0xad89bc;_0xd2b4a2[_0xd087('0x40')]=_[_0xd087('0x55')](db[_0xd087('0x83')]['rawAttributes']);_0xd2b4a2['query']=_[_0xd087('0x55')](_0x129d34[_0xd087('0x42')]);_0xd2b4a2[_0xd087('0x4c')]=_[_0xd087('0x43')](_0xd2b4a2[_0xd087('0x40')],_0xd2b4a2[_0xd087('0x42')]);_0x284618[_0xd087('0x44')]=_[_0xd087('0x43')](_0xd2b4a2[_0xd087('0x40')],qs[_0xd087('0x45')](_0x129d34[_0xd087('0x42')][_0xd087('0x45')]));_0x284618[_0xd087('0x44')]=_0x284618[_0xd087('0x44')][_0xd087('0x46')]?_0x284618[_0xd087('0x44')]:_0xd2b4a2['model'];_0x284618[_0xd087('0x48')]=qs['sort'](_0x129d34['query'][_0xd087('0x49')]);_0x284618[_0xd087('0x4a')]=qs['filters'](_[_0xd087('0x4b')](_0x129d34['query'],_0xd2b4a2['filters']));if(_0x129d34[_0xd087('0x42')][_0xd087('0x4f')]){_0x284618[_0xd087('0x4a')]=_['merge'](_0x284618[_0xd087('0x4a')],{'$or':_['map'](_0x284618['attributes'],function(_0x399861){var _0x38ad9b={};_0x38ad9b[_0x399861]={'$like':'%'+_0x129d34[_0xd087('0x42')][_0xd087('0x4f')]+'%'};return _0x38ad9b;})});}_0x284618=_[_0xd087('0x4d')]({},_0x284618,_0x129d34[_0xd087('0x50')]);return _0x5c3ea5[_0xd087('0xa8')](_0x284618);}})[_0xd087('0x1e')](function(_0x3b0464){if(_0x3b0464){_0x10a29c=_0x3b0464[_0xd087('0x46')];if(!_0x129d34[_0xd087('0x42')][_0xd087('0x47')]('nolimit')){_0x284618[_0xd087('0x2e')]=qs[_0xd087('0x2e')](_0x129d34[_0xd087('0x42')][_0xd087('0x2e')]);_0x284618[_0xd087('0x30')]=qs[_0xd087('0x30')](_0x129d34['query'][_0xd087('0x30')]);}return _0x5c3ea5[_0xd087('0xa8')](_0x284618);}})[_0xd087('0x1e')](function(_0x23bbe9){if(_0x23bbe9){return _0x23bbe9?{'count':_0x10a29c,'rows':_0x23bbe9}:null;}})['then'](respondWithResult(_0x1a9dd9,null))[_0xd087('0x28')](handleError(_0x1a9dd9,null));};exports[_0xd087('0xa9')]=function(_0x5e4991,_0x1cb678,_0x7cf1e1){var _0x4e2384={'raw':![],'where':{}};var _0x4da9aa={};var _0x4c00c7={'count':0x0,'rows':[]};return db[_0xd087('0x3c')][_0xd087('0x64')]({'where':{'id':_0x5e4991['params']['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x1cb678,null))[_0xd087('0x1e')](function(_0x2ce7b2){if(_0x2ce7b2){_0x4da9aa[_0xd087('0x40')]=_['keys'](db[_0xd087('0x8f')]['rawAttributes']);_0x4da9aa['query']=_[_0xd087('0x55')](_0x5e4991[_0xd087('0x42')]);_0x4da9aa['filters']=_[_0xd087('0x43')](_0x4da9aa[_0xd087('0x40')],_0x4da9aa[_0xd087('0x42')]);_0x4e2384['attributes']=_['intersection'](_0x4da9aa[_0xd087('0x40')],qs['fields'](_0x5e4991[_0xd087('0x42')][_0xd087('0x45')]));_0x4e2384['attributes']=_0x4e2384[_0xd087('0x44')][_0xd087('0x46')]?_0x4e2384[_0xd087('0x44')]:_0x4da9aa[_0xd087('0x40')];if(!_0x5e4991[_0xd087('0x42')][_0xd087('0x47')]('nolimit')){_0x4e2384[_0xd087('0x2e')]=qs[_0xd087('0x2e')](_0x5e4991[_0xd087('0x42')][_0xd087('0x2e')]);_0x4e2384[_0xd087('0x30')]=qs[_0xd087('0x30')](_0x5e4991[_0xd087('0x42')][_0xd087('0x30')]);}_0x4e2384[_0xd087('0x48')]=qs[_0xd087('0x49')](_0x5e4991[_0xd087('0x42')][_0xd087('0x49')]);_0x4e2384[_0xd087('0x4a')]=qs[_0xd087('0x4c')](_[_0xd087('0x4b')](_0x5e4991[_0xd087('0x42')],_0x4da9aa['filters']));_0x4e2384[_0xd087('0x4a')][_0xd087('0x62')]=_0x2ce7b2['id'];if(_0x5e4991[_0xd087('0x42')][_0xd087('0x4f')]){_0x4e2384[_0xd087('0x4a')]=_[_0xd087('0x4d')](_0x4e2384[_0xd087('0x4a')],{'$or':_[_0xd087('0x41')](_0x4e2384[_0xd087('0x44')],function(_0x2cd3f9){var _0x3f7631={};_0x3f7631[_0x2cd3f9]={'$like':'%'+_0x5e4991[_0xd087('0x42')][_0xd087('0x4f')]+'%'};return _0x3f7631;})});}_0x4e2384=_[_0xd087('0x4d')]({},_0x4e2384,_0x5e4991[_0xd087('0x50')]);return db['OpenchannelInteraction'][_0xd087('0x2f')]({'where':_0x4e2384['where']})[_0xd087('0x1e')](function(_0x47fc09){_0x4c00c7[_0xd087('0x2f')]=_0x47fc09;if(_0x5e4991[_0xd087('0x42')][_0xd087('0x51')]){_0x4e2384[_0xd087('0x66')]=[{'model':db[_0xd087('0x6f')],'as':_0xd087('0xaa'),'required':![]},{'model':db['User'],'as':_0xd087('0xab'),'attributes':[_0xd087('0x38'),_0xd087('0xac'),_0xd087('0xad')],'required':![]},{'model':db[_0xd087('0xae')],'as':_0xd087('0xaf'),'attributes':['id',_0xd087('0x38'),'color'],'where':_0x5e4991['query'][_0xd087('0xb0')]?{'id':_0x5e4991[_0xd087('0x42')]['tag']}:undefined,'required':_0x5e4991[_0xd087('0x42')]['tag']?!![]:![]}];}return db[_0xd087('0x8f')][_0xd087('0x52')](_0x4e2384);})[_0xd087('0x1e')](function(_0x8e71c4){_0x4c00c7[_0xd087('0x53')]=_0x8e71c4;return _0x4c00c7;});}})['then'](respondWithFilteredResult(_0x1cb678,_0x4e2384))[_0xd087('0x28')](handleError(_0x1cb678,null));};exports['addAgents']=function(_0x3ce709,_0xab635e,_0xc4bdce){return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0x3ce709[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0xab635e,null))['then'](function(_0x105963){if(_0x105963){return _0x105963[_0xd087('0xb1')](_0x3ce709[_0xd087('0x60')][_0xd087('0x67')],_[_0xd087('0xb2')](_0x3ce709[_0xd087('0x60')],[_0xd087('0x67'),'id'])||{})[_0xd087('0x91')](function(_0x941e6f){for(var _0x417001=0x0;_0x417001<_0x3ce709[_0xd087('0x60')][_0xd087('0x67')][_0xd087('0x46')];_0x417001+=0x1){socket[_0xd087('0xb3')](_0xd087('0xb4'),{'UserId':Number(_0x3ce709[_0xd087('0x60')][_0xd087('0x67')][_0x417001]),'OpenchannelAccountId':Number(_0x3ce709[_0xd087('0x54')]['id'])});}return _0x941e6f;});}})[_0xd087('0x1e')](respondWithResult(_0xab635e,null))[_0xd087('0x28')](handleError(_0xab635e,null));};exports['removeAgents']=function(_0x296ad7,_0x277d40,_0x5dac0b){return db[_0xd087('0x3c')][_0xd087('0x5c')]({'where':{'id':_0x296ad7[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x277d40,null))['then'](function(_0x240e0c){if(_0x240e0c){return _0x240e0c['removeAgents'](_0x296ad7[_0xd087('0x42')][_0xd087('0x67')])[_0xd087('0x1e')](function(){if(_[_0xd087('0xb5')](_0x296ad7[_0xd087('0x42')][_0xd087('0x67')])){for(var _0x5b9982=0x0;_0x5b9982<_0x296ad7[_0xd087('0x42')]['ids'][_0xd087('0x46')];_0x5b9982+=0x1){socket[_0xd087('0xb3')](_0xd087('0xb6'),{'UserId':Number(_0x296ad7[_0xd087('0x42')][_0xd087('0x67')][_0x5b9982]),'OpenchannelAccountId':Number(_0x296ad7[_0xd087('0x54')]['id'])});}}else{socket[_0xd087('0xb3')](_0xd087('0xb6'),{'UserId':Number(_0x296ad7['query'][_0xd087('0x67')]),'OpenchannelAccountId':Number(_0x296ad7[_0xd087('0x54')]['id'])});}});}})[_0xd087('0x1e')](respondWithStatusCode(_0x277d40,null))[_0xd087('0x28')](handleError(_0x277d40,null));};exports[_0xd087('0xb7')]=function(_0x3760cd,_0x3d16a3,_0x4af31f){var _0x51a7ee={};var _0x4acb7e={};var _0x146dd3;var _0x2544c1;return db[_0xd087('0x3c')][_0xd087('0x64')]({'where':{'id':_0x3760cd[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x3d16a3,null))[_0xd087('0x1e')](function(_0x8154a8){if(_0x8154a8){_0x146dd3=_0x8154a8;_0x4acb7e[_0xd087('0x40')]=_[_0xd087('0x55')](db[_0xd087('0x9e')]['rawAttributes']);_0x4acb7e[_0xd087('0x42')]=_[_0xd087('0x55')](_0x3760cd[_0xd087('0x42')]);_0x4acb7e[_0xd087('0x4c')]=_[_0xd087('0x43')](_0x4acb7e['model'],_0x4acb7e['query']);_0x51a7ee[_0xd087('0x44')]=_['intersection'](_0x4acb7e[_0xd087('0x40')],qs[_0xd087('0x45')](_0x3760cd[_0xd087('0x42')][_0xd087('0x45')]));_0x51a7ee[_0xd087('0x44')]=_0x51a7ee[_0xd087('0x44')][_0xd087('0x46')]?_0x51a7ee[_0xd087('0x44')]:_0x4acb7e[_0xd087('0x40')];_0x51a7ee[_0xd087('0x48')]=qs[_0xd087('0x49')](_0x3760cd[_0xd087('0x42')][_0xd087('0x49')]);_0x51a7ee['where']=qs[_0xd087('0x4c')](_[_0xd087('0x4b')](_0x3760cd[_0xd087('0x42')],_0x4acb7e[_0xd087('0x4c')]));if(_0x3760cd['query'][_0xd087('0x4f')]){_0x51a7ee['where']=_[_0xd087('0x4d')](_0x51a7ee[_0xd087('0x4a')],{'$or':_[_0xd087('0x41')](_0x51a7ee['attributes'],function(_0x2cf769){var _0xf03b11={};_0xf03b11[_0x2cf769]={'$like':'%'+_0x3760cd['query'][_0xd087('0x4f')]+'%'};return _0xf03b11;})});}_0x51a7ee=_[_0xd087('0x4d')]({},_0x51a7ee,_0x3760cd[_0xd087('0x50')]);return _0x146dd3[_0xd087('0xb7')](_0x51a7ee);}})[_0xd087('0x1e')](function(_0x3b0641){if(_0x3b0641){_0x2544c1=_0x3b0641[_0xd087('0x46')];if(!_0x3760cd[_0xd087('0x42')][_0xd087('0x47')](_0xd087('0x65'))){_0x51a7ee[_0xd087('0x2e')]=qs[_0xd087('0x2e')](_0x3760cd[_0xd087('0x42')][_0xd087('0x2e')]);_0x51a7ee[_0xd087('0x30')]=qs[_0xd087('0x30')](_0x3760cd[_0xd087('0x42')][_0xd087('0x30')]);}return _0x146dd3['getAgents'](_0x51a7ee);}})[_0xd087('0x1e')](function(_0x2d9c66){if(_0x2d9c66){return _0x2d9c66?{'count':_0x2544c1,'rows':_0x2d9c66}:null;}})['then'](respondWithResult(_0x3d16a3,null))[_0xd087('0x28')](handleError(_0x3d16a3,null));};exports[_0xd087('0xb8')]=function(_0x2e1983,_0x24234a,_0x3af527){var _0x2e051b,_0x3b1097,_0x58d268;if(_[_0xd087('0x79')](_0x2e1983['body'][_0xd087('0x60')])||_0x2e1983['body']['body']===''){throw new db[(_0xd087('0x71'))][(_0xd087('0x72'))](_0xd087('0x7b'));}if(_['isNil'](_0x2e1983[_0xd087('0x60')]['to'])){}_0x2e051b=_0x2e1983[_0xd087('0x60')]['to'];return db['OpenchannelAccount'][_0xd087('0x64')]({'where':{'id':_0x2e1983[_0xd087('0x54')]['id']}})[_0xd087('0x1e')](handleEntityNotFound(_0x24234a,null))[_0xd087('0x1e')](function(_0x27de3a){if(_0x27de3a){return db[_0xd087('0x3c')]['find']({'where':{'id':_0x27de3a['id']},'include':[{'model':db[_0xd087('0x80')],'as':_0xd087('0x85'),'include':[{'model':db[_0xd087('0x6f')],'as':_0xd087('0x81'),'where':{[_0x27de3a['mapKey']]:_0x2e051b},'limit':0x1,'order':[[_0xd087('0x76'),_0xd087('0x82')]]}]}]})[_0xd087('0x1e')](handleEntityNotFound(_0x24234a,null))[_0xd087('0x1e')](function(_0x2d1df3){if(_0x2d1df3&&_0x2d1df3[_0xd087('0x85')]){_0x3b1097=_0x2d1df3[_0xd087('0x58')]({'plain':!![]});if(_0x3b1097[_0xd087('0x85')]&&_0x3b1097[_0xd087('0x85')]['Contacts'][_0xd087('0x46')]){return _0x3b1097[_0xd087('0x85')][_0xd087('0x81')][0x0];}return db[_0xd087('0x6f')][_0xd087('0x56')](_[_0xd087('0x18')](_0x2e1983[_0xd087('0x60')],{'firstName':_0x2e051b,[_0x2d1df3[_0xd087('0x7c')]]:_0x2e051b,'phone':_0x2e051b,'ListId':_0x3b1097[_0xd087('0x78')]}));}})[_0xd087('0x1e')](handleEntityNotFound(_0x24234a,null))['then'](function(_0x32cf78){if(_0x32cf78){_0x58d268=_0x32cf78;return db[_0xd087('0x8f')][_0xd087('0x5c')]({'where':{'ContactId':_0x58d268['id'],'closed':![],'OpenchannelAccountId':_0x3b1097['id']}})[_0xd087('0x1e')](function(_0x2a91d7){if(_0x2a91d7){return[_0x2a91d7,![]];}return db[_0xd087('0x8f')]['create']({'UserId':_0x2e1983[_0xd087('0x57')]['id'],'ContactId':_0x58d268['id'],'OpenchannelAccountId':_0x3b1097['id'],'lastMsgDirection':_0xd087('0xb9'),'Messages':[_[_0xd087('0x4d')](_0x2e1983[_0xd087('0x60')],{'read':![],'body':_0x2e1983[_0xd087('0x60')][_0xd087('0x60')],'OpenchannelAccountId':_0x3b1097['id'],'UserId':_0x2e1983['user']['id'],'ContactId':_0x58d268['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0xd087('0xba')}]})[_0xd087('0x1e')](function(_0x48895c){return[_0x48895c,!![]];});});}})[_0xd087('0x91')](function(_0x5cff84,_0x587746){if(_0x587746){return _0x5cff84;}return db[_0xd087('0x9b')][_0xd087('0x56')](_[_0xd087('0x4d')](_0x2e1983['body'],{'read':![],'body':_0x2e1983['body']['body'],'OpenchannelAccountId':_0x3b1097['id'],'OpenchannelInteractionId':_0x5cff84['id'],'UserId':_0x2e1983[_0xd087('0x57')]['id'],'ContactId':_0x58d268['id']}))[_0xd087('0x1e')](function(_0x3b442e){_0x5cff84[_0xd087('0xbb')]['Messages']=[];_0x5cff84[_0xd087('0xbb')]['Messages'][_0xd087('0x97')](_0x3b442e['dataValues']);return _0x5cff84;});});}})[_0xd087('0x1e')](respondWithResult(_0x24234a,null))[_0xd087('0x28')](handleError(_0x24234a,null));};
\ No newline at end of file
index 39eac3a..19d008a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['../../mysqldb','OpenchannelAccount','setMaxListeners','save','update','emit','hook','events'];(function(_0x5ab060,_0x23bb83){var _0x5ed2fd=function(_0x84f087){while(--_0x84f087){_0x5ab060['push'](_0x5ab060['shift']());}};_0x5ed2fd(++_0x23bb83);}(_0xac4a,0x13f));var _0xaac4=function(_0x54f031,_0x1fbb25){_0x54f031=_0x54f031-0x0;var _0x44f94e=_0xac4a[_0x54f031];return _0x44f94e;};'use strict';var EventEmitter=require(_0xaac4('0x0'));var OpenchannelAccount=require(_0xaac4('0x1'))['db'][_0xaac4('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xaac4('0x3')](0x0);var events={'afterCreate':_0xaac4('0x4'),'afterUpdate':_0xaac4('0x5'),'afterDestroy':'remove'};function emitEvent(_0x58626e){return function(_0x2af0f6,_0x2a5762,_0x32d34c){OpenchannelAccountEvents['emit'](_0x58626e+':'+_0x2af0f6['id'],_0x2af0f6);OpenchannelAccountEvents[_0xaac4('0x6')](_0x58626e,_0x2af0f6);_0x32d34c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0xaac4('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xee5b=['remove','emit','hasOwnProperty','hook','events','OpenchannelAccount','setMaxListeners','update'];(function(_0xc5b3f5,_0x40786d){var _0x309252=function(_0x3407c3){while(--_0x3407c3){_0xc5b3f5['push'](_0xc5b3f5['shift']());}};_0x309252(++_0x40786d);}(_0xee5b,0x1f4));var _0xbee5=function(_0x438ebb,_0x2017d8){_0x438ebb=_0x438ebb-0x0;var _0x872276=_0xee5b[_0x438ebb];return _0x872276;};'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 e36713d..6c340ef 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(_0x2e2ab0,_0x197fce){var _0x3bedec=function(_0x4495dc){while(--_0x4495dc){_0x2e2ab0['push'](_0x2e2ab0['shift']());}};_0x3bedec(++_0x197fce);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'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(_0x1ca21b,_0x486657){var _0x52842e=function(_0x5401f2){while(--_0x5401f2){_0x1ca21b['push'](_0x1ca21b['shift']());}};_0x52842e(++_0x486657);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'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 58328c9..24cd283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc29b=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x409822,_0x2da46f){var _0x405a0b=function(_0x554960){while(--_0x554960){_0x409822['push'](_0x409822['shift']());}};_0x405a0b(++_0x2da46f);}(_0xc29b,0x12d));var _0xbc29=function(_0x142086,_0x369c6d){_0x142086=_0x142086-0x0;var _0x5a0193=_0xc29b[_0x142086];return _0x5a0193;};'use strict';var _=require(_0xbc29('0x0'));var util=require(_0xbc29('0x1'));var moment=require(_0xbc29('0x2'));var BPromise=require('bluebird');var rs=require(_0xbc29('0x3'));var fs=require('fs');var Redis=require(_0xbc29('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbc29('0x5'));var logger=require(_0xbc29('0x6'))(_0xbc29('0x7'));var config=require(_0xbc29('0x8'));var jayson=require(_0xbc29('0x9'));var client=jayson[_0xbc29('0xa')][_0xbc29('0xb')]({'port':0x232a});config[_0xbc29('0xc')]=_[_0xbc29('0xd')](config[_0xbc29('0xc')],{'host':_0xbc29('0xe'),'port':0x18eb});var socket=require(_0xbc29('0xf'))(new Redis(config[_0xbc29('0xc')]));require(_0xbc29('0x10'))[_0xbc29('0x11')](socket);function respondWithRpcPromise(_0x36d1e3,_0x13a581,_0x2f591c){return new BPromise(function(_0x35ece9,_0x2710ad){return client['request'](_0x36d1e3,_0x2f591c)[_0xbc29('0x12')](function(_0x888953){logger[_0xbc29('0x13')](_0xbc29('0x14'),_0x13a581,_0xbc29('0x15'));logger[_0xbc29('0x16')](_0xbc29('0x17'),_0x13a581,'request\x20sent',JSON[_0xbc29('0x18')](_0x888953));if(_0x888953[_0xbc29('0x19')]){if(_0x888953[_0xbc29('0x19')]['code']===0x1f4){logger['error'](_0xbc29('0x14'),_0x13a581,_0x888953['error'][_0xbc29('0x1a')]);return _0x2710ad(_0x888953[_0xbc29('0x19')][_0xbc29('0x1a')]);}logger['error'](_0xbc29('0x14'),_0x13a581,_0x888953['error'][_0xbc29('0x1a')]);return _0x35ece9(_0x888953[_0xbc29('0x19')][_0xbc29('0x1a')]);}else{logger[_0xbc29('0x13')](_0xbc29('0x14'),_0x13a581,_0xbc29('0x15'));_0x35ece9(_0x888953['result'][_0xbc29('0x1a')]);}})[_0xbc29('0x1b')](function(_0x4eadbe){logger['error'](_0xbc29('0x14'),_0x13a581,_0x4eadbe);_0x2710ad(_0x4eadbe);});});}
\ No newline at end of file
+var _0x757a=['redis','localhost','socket.io-emitter','./openchannelAccount.socket','request','then','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','OpenchannelAccount,\x20%s,\x20%s','message','info','catch','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x48c784,_0x52b6fc){var _0x4634d9=function(_0x5c4f16){while(--_0x5c4f16){_0x48c784['push'](_0x48c784['shift']());}};_0x4634d9(++_0x52b6fc);}(_0x757a,0xde));var _0xa757=function(_0xe2302b,_0x3e7fa9){_0xe2302b=_0xe2302b-0x0;var _0x1b0f0c=_0x757a[_0xe2302b];return _0x1b0f0c;};'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});config[_0xa757('0x9')]=_['defaults'](config[_0xa757('0x9')],{'host':_0xa757('0xa'),'port':0x18eb});var socket=require(_0xa757('0xb'))(new Redis(config[_0xa757('0x9')]));require(_0xa757('0xc'))['register'](socket);function respondWithRpcPromise(_0x89c630,_0x2ca96f,_0x32f0ec){return new BPromise(function(_0x3e2c9a,_0xb7610b){return client[_0xa757('0xd')](_0x89c630,_0x32f0ec)[_0xa757('0xe')](function(_0x483d77){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x2ca96f,'request\x20sent');logger['debug'](_0xa757('0xf'),_0x2ca96f,'request\x20sent',JSON['stringify'](_0x483d77));if(_0x483d77[_0xa757('0x10')]){if(_0x483d77['error']['code']===0x1f4){logger[_0xa757('0x10')](_0xa757('0x11'),_0x2ca96f,_0x483d77[_0xa757('0x10')][_0xa757('0x12')]);return _0xb7610b(_0x483d77[_0xa757('0x10')][_0xa757('0x12')]);}logger[_0xa757('0x10')](_0xa757('0x11'),_0x2ca96f,_0x483d77[_0xa757('0x10')][_0xa757('0x12')]);return _0x3e2c9a(_0x483d77['error'][_0xa757('0x12')]);}else{logger[_0xa757('0x13')](_0xa757('0x11'),_0x2ca96f,'request\x20sent');_0x3e2c9a(_0x483d77['result'][_0xa757('0x12')]);}})[_0xa757('0x14')](function(_0x1bd14c){logger[_0xa757('0x10')](_0xa757('0x11'),_0x2ca96f,_0x1bd14c);_0xb7610b(_0x1bd14c);});});}
\ No newline at end of file
index cfeea18..6809ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0911=['remove','update','removeListener','register','length','./openchannelAccount.events','save'];(function(_0x3dd0b9,_0x1d6c92){var _0x4c0351=function(_0x2cf6a8){while(--_0x2cf6a8){_0x3dd0b9['push'](_0x3dd0b9['shift']());}};_0x4c0351(++_0x1d6c92);}(_0x0911,0x1a9));var _0x1091=function(_0x47f4c2,_0x134e7b){_0x47f4c2=_0x47f4c2-0x0;var _0x22c63e=_0x0911[_0x47f4c2];return _0x22c63e;};'use strict';var OpenchannelAccountEvents=require(_0x1091('0x0'));var events=[_0x1091('0x1'),_0x1091('0x2'),_0x1091('0x3')];function createListener(_0x2c7d8d,_0x5b1494){return function(_0x4312e5){_0x5b1494['emit'](_0x2c7d8d,_0x4312e5);};}function removeListener(_0x3a71a4,_0x58640b){return function(){OpenchannelAccountEvents[_0x1091('0x4')](_0x3a71a4,_0x58640b);};}exports[_0x1091('0x5')]=function(_0x3e3868){for(var _0x28747=0x0,_0x2ad19a=events[_0x1091('0x6')];_0x28747<_0x2ad19a;_0x28747++){var _0x7b3a7d=events[_0x28747];var _0x457631=createListener('openchannelAccount:'+_0x7b3a7d,_0x3e3868);OpenchannelAccountEvents['on'](_0x7b3a7d,_0x457631);}};
\ No newline at end of file
+var _0x8d97=['emit','removeListener','register','openchannelAccount:','save','remove'];(function(_0x398dd7,_0x3d027a){var _0x4ec5da=function(_0x53da0a){while(--_0x53da0a){_0x398dd7['push'](_0x398dd7['shift']());}};_0x4ec5da(++_0x3d027a);}(_0x8d97,0x82));var _0x78d9=function(_0x4a8498,_0x109447){_0x4a8498=_0x4a8498-0x0;var _0x17a631=_0x8d97[_0x4a8498];return _0x17a631;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x78d9('0x0'),_0x78d9('0x1'),'update'];function createListener(_0x323f54,_0x1cbdd1){return function(_0x17bfab){_0x1cbdd1[_0x78d9('0x2')](_0x323f54,_0x17bfab);};}function removeListener(_0x1b690f,_0x5f4582){return function(){OpenchannelAccountEvents[_0x78d9('0x3')](_0x1b690f,_0x5f4582);};}exports[_0x78d9('0x4')]=function(_0x7bf859){for(var _0x59b38c=0x0,_0x4d1934=events['length'];_0x59b38c<_0x4d1934;_0x59b38c++){var _0x2a2cdb=events[_0x59b38c];var _0x3b3709=createListener(_0x78d9('0x5')+_0x2a2cdb,_0x7bf859);OpenchannelAccountEvents['on'](_0x2a2cdb,_0x3b3709);}};
\ No newline at end of file
index ea33145..ed0ec65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x564a=['../../components/interaction/service','./openchannelApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','util','path','express','Router','fs-extra'];(function(_0x4aa936,_0x5d92ac){var _0x497339=function(_0x4afa76){while(--_0x4afa76){_0x4aa936['push'](_0x4aa936['shift']());}};_0x497339(++_0x5d92ac);}(_0x564a,0xaf));var _0xa564=function(_0x39e2bf,_0x2e2643){_0x39e2bf=_0x39e2bf-0x0;var _0x3bc44c=_0x564a[_0x39e2bf];return _0x3bc44c;};'use strict';var multer=require('multer');var util=require(_0xa564('0x0'));var path=require(_0xa564('0x1'));var timeout=require('connect-timeout');var express=require(_0xa564('0x2'));var router=express[_0xa564('0x3')]();var fs_extra=require(_0xa564('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa564('0x5'));var config=require('../../config/environment');var controller=require(_0xa564('0x6'));router[_0xa564('0x7')]('/',auth[_0xa564('0x8')](),controller[_0xa564('0x9')]);router['get'](_0xa564('0xa'),auth[_0xa564('0x8')](),controller[_0xa564('0xb')]);router[_0xa564('0xc')]('/',auth[_0xa564('0x8')](),controller[_0xa564('0xd')]);router[_0xa564('0xe')]('/:id',auth[_0xa564('0x8')](),controller['update']);router[_0xa564('0xf')]('/:id',auth[_0xa564('0x8')](),controller[_0xa564('0x10')]);module[_0xa564('0x11')]=router;
\ No newline at end of file
+var _0x9926=['path','connect-timeout','express','fs-extra','../../components/interaction/service','./openchannelApplication.controller','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util'];(function(_0x42779c,_0x4f12cf){var _0x101538=function(_0x19813a){while(--_0x19813a){_0x42779c['push'](_0x42779c['shift']());}};_0x101538(++_0x4f12cf);}(_0x9926,0x7c));var _0x6992=function(_0x36ffb9,_0xce4721){_0x36ffb9=_0x36ffb9-0x0;var _0xf93082=_0x9926[_0x36ffb9];return _0xf93082;};'use strict';var multer=require(_0x6992('0x0'));var util=require(_0x6992('0x1'));var path=require(_0x6992('0x2'));var timeout=require(_0x6992('0x3'));var express=require(_0x6992('0x4'));var router=express['Router']();var fs_extra=require(_0x6992('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6992('0x6'));var config=require('../../config/environment');var controller=require(_0x6992('0x7'));router['get']('/',auth[_0x6992('0x8')](),controller[_0x6992('0x9')]);router['get'](_0x6992('0xa'),auth[_0x6992('0x8')](),controller[_0x6992('0xb')]);router[_0x6992('0xc')]('/',auth[_0x6992('0x8')](),controller[_0x6992('0xd')]);router[_0x6992('0xe')](_0x6992('0xa'),auth[_0x6992('0x8')](),controller[_0x6992('0xf')]);router['delete'](_0x6992('0xa'),auth[_0x6992('0x8')](),controller[_0x6992('0x10')]);module[_0x6992('0x11')]=router;
\ No newline at end of file
index a482e94..1e235f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60f0=['exports','INTEGER','STRING','TEXT','sequelize'];(function(_0x1b50fa,_0x4efb80){var _0x39940c=function(_0x5044af){while(--_0x5044af){_0x1b50fa['push'](_0x1b50fa['shift']());}};_0x39940c(++_0x4efb80);}(_0x60f0,0x1c6));var _0x060f=function(_0xf9daca,_0x4a2fbd){_0xf9daca=_0xf9daca-0x0;var _0x2472de=_0x60f0[_0xf9daca];return _0x2472de;};'use strict';var Sequelize=require(_0x060f('0x0'));module[_0x060f('0x1')]={'priority':{'type':Sequelize[_0x060f('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x060f('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x060f('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x060f('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xede9=['exports','INTEGER','noop','TEXT','STRING','*,*,*,*','sequelize'];(function(_0x3a4e77,_0x3349ba){var _0x35a151=function(_0x3fb70b){while(--_0x3fb70b){_0x3a4e77['push'](_0x3a4e77['shift']());}};_0x35a151(++_0x3349ba);}(_0xede9,0x92));var _0x9ede=function(_0x3f877d,_0x15d43f){_0x3f877d=_0x3f877d-0x0;var _0x262eda=_0xede9[_0x3f877d];return _0x262eda;};'use strict';var Sequelize=require(_0x9ede('0x0'));module[_0x9ede('0x1')]={'priority':{'type':Sequelize[_0x9ede('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9ede('0x3')},'appdata':{'type':Sequelize[_0x9ede('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x9ede('0x5')],'defaultValue':_0x9ede('0x6')}};
\ No newline at end of file
index bae298a..6d01449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fea=['attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','rows','catch','show','params','rawAttributes','length','includeAll','find','create','body','update','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','stack','name','send','map','OpenchannelApplication','fieldName','type','key','model','query','keys','filters','intersection'];(function(_0x52d82c,_0x2b885a){var _0x2ae485=function(_0x5f08ef){while(--_0x5f08ef){_0x52d82c['push'](_0x52d82c['shift']());}};_0x2ae485(++_0x2b885a);}(_0x2fea,0x1bc));var _0xa2fe=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2fea[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa2fe('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa2fe('0x1'));var BPromise=require(_0xa2fe('0x2'));var Mustache=require(_0xa2fe('0x3'));var util=require(_0xa2fe('0x4'));var path=require(_0xa2fe('0x5'));var sox=require(_0xa2fe('0x6'));var csv=require('to-csv');var ejs=require(_0xa2fe('0x7'));var fs=require('fs');var fs_extra=require(_0xa2fe('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa2fe('0x9'));var deskjs=require(_0xa2fe('0xa'));var toCsv=require('to-csv');var querystring=require(_0xa2fe('0xb'));var Papa=require(_0xa2fe('0xc'));var Redis=require('ioredis');var authService=require(_0xa2fe('0xd'));var qs=require(_0xa2fe('0xe'));var as=require(_0xa2fe('0xf'));var hardwareService=require(_0xa2fe('0x10'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xa2fe('0x11'));var licenseUtil=require(_0xa2fe('0x12'));var db=require(_0xa2fe('0x13'))['db'];function respondWithStatusCode(_0xa1f435,_0xdf353e){_0xdf353e=_0xdf353e||0xcc;return function(_0x124dbd){if(_0x124dbd){return _0xa1f435[_0xa2fe('0x14')](_0xdf353e);}return _0xa1f435[_0xa2fe('0x15')](_0xdf353e)[_0xa2fe('0x16')]();};}function respondWithResult(_0x1143f4,_0x225c45){_0x225c45=_0x225c45||0xc8;return function(_0x53eda3){if(_0x53eda3){return _0x1143f4[_0xa2fe('0x15')](_0x225c45)[_0xa2fe('0x17')](_0x53eda3);}};}function respondWithFilteredResult(_0x43c3aa,_0x424735){return function(_0x3afc32){if(_0x3afc32){var _0x35bd4f=typeof _0x424735[_0xa2fe('0x18')]===_0xa2fe('0x19')&&typeof _0x424735[_0xa2fe('0x1a')]===_0xa2fe('0x19');var _0x56bc63=_0x3afc32['count'];var _0x5abb93=_0x35bd4f?0x0:_0x424735[_0xa2fe('0x18')];var _0x3aa9bd=_0x35bd4f?_0x3afc32[_0xa2fe('0x1b')]:_0x424735[_0xa2fe('0x18')]+_0x424735[_0xa2fe('0x1a')];var _0x50aa06;if(_0x3aa9bd>=_0x56bc63){_0x3aa9bd=_0x56bc63;_0x50aa06=0xc8;}else{_0x50aa06=0xce;}_0x43c3aa[_0xa2fe('0x15')](_0x50aa06);return _0x43c3aa['set'](_0xa2fe('0x1c'),_0x5abb93+'-'+_0x3aa9bd+'/'+_0x56bc63)[_0xa2fe('0x17')](_0x3afc32);}return null;};}function patchUpdates(_0x23319e){return function(_0x1e8bf9){try{jsonpatch[_0xa2fe('0x1d')](_0x1e8bf9,_0x23319e,!![]);}catch(_0x524e86){return BPromise['reject'](_0x524e86);}return _0x1e8bf9[_0xa2fe('0x1e')]();};}function saveUpdates(_0x53d382,_0xde9739){return function(_0x96cff8){if(_0x96cff8){return _0x96cff8['update'](_0x53d382)[_0xa2fe('0x1f')](function(_0x5e01c2){return _0x5e01c2;});}return null;};}function removeEntity(_0x1486c2,_0x239c96){return function(_0x34a627){if(_0x34a627){return _0x34a627[_0xa2fe('0x20')]()[_0xa2fe('0x1f')](function(){_0x1486c2[_0xa2fe('0x15')](0xcc)[_0xa2fe('0x16')]();});}};}function handleEntityNotFound(_0x3e50b1,_0x1dafc2){return function(_0x3029fc){if(!_0x3029fc){_0x3e50b1[_0xa2fe('0x14')](0x194);}return _0x3029fc;};}function handleError(_0x3b28ff,_0x3f6882){_0x3f6882=_0x3f6882||0x1f4;return function(_0x1c7b55){logger['error'](_0x1c7b55[_0xa2fe('0x21')]);if(_0x1c7b55[_0xa2fe('0x22')]){delete _0x1c7b55[_0xa2fe('0x22')];}_0x3b28ff[_0xa2fe('0x15')](_0x3f6882)[_0xa2fe('0x23')](_0x1c7b55);};}exports['index']=function(_0x4b7c85,_0x49ef0a){var _0x485ba8={},_0x2dae0d={},_0x3345dd={'count':0x0,'rows':[]};var _0x2bb502=_[_0xa2fe('0x24')](db[_0xa2fe('0x25')]['rawAttributes'],function(_0x3d63e6){return{'name':_0x3d63e6[_0xa2fe('0x26')],'type':_0x3d63e6[_0xa2fe('0x27')][_0xa2fe('0x28')]};});_0x2dae0d[_0xa2fe('0x29')]=_[_0xa2fe('0x24')](_0x2bb502,'name');_0x2dae0d[_0xa2fe('0x2a')]=_[_0xa2fe('0x2b')](_0x4b7c85[_0xa2fe('0x2a')]);_0x2dae0d[_0xa2fe('0x2c')]=_[_0xa2fe('0x2d')](_0x2dae0d[_0xa2fe('0x29')],_0x2dae0d[_0xa2fe('0x2a')]);_0x485ba8[_0xa2fe('0x2e')]=_[_0xa2fe('0x2d')](_0x2dae0d[_0xa2fe('0x29')],qs[_0xa2fe('0x2f')](_0x4b7c85[_0xa2fe('0x2a')]['fields']));_0x485ba8[_0xa2fe('0x2e')]=_0x485ba8[_0xa2fe('0x2e')]['length']?_0x485ba8['attributes']:_0x2dae0d[_0xa2fe('0x29')];if(!_0x4b7c85[_0xa2fe('0x2a')][_0xa2fe('0x30')](_0xa2fe('0x31'))){_0x485ba8[_0xa2fe('0x1a')]=qs['limit'](_0x4b7c85[_0xa2fe('0x2a')][_0xa2fe('0x1a')]);_0x485ba8[_0xa2fe('0x18')]=qs[_0xa2fe('0x18')](_0x4b7c85[_0xa2fe('0x2a')]['offset']);}_0x485ba8[_0xa2fe('0x32')]=qs[_0xa2fe('0x33')](_0x4b7c85[_0xa2fe('0x2a')][_0xa2fe('0x33')]);_0x485ba8[_0xa2fe('0x34')]=qs[_0xa2fe('0x2c')](_[_0xa2fe('0x35')](_0x4b7c85[_0xa2fe('0x2a')],_0x2dae0d['filters']),_0x2bb502);if(_0x4b7c85[_0xa2fe('0x2a')][_0xa2fe('0x36')]){_0x485ba8[_0xa2fe('0x34')]=_['merge'](_0x485ba8[_0xa2fe('0x34')],{'$or':_[_0xa2fe('0x24')](_0x2bb502,function(_0x1460ac){if(_0x1460ac[_0xa2fe('0x27')]!==_0xa2fe('0x37')){var _0x53219b={};_0x53219b[_0x1460ac[_0xa2fe('0x22')]]={'$like':'%'+_0x4b7c85['query'][_0xa2fe('0x36')]+'%'};return _0x53219b;}})});}_0x485ba8=_[_0xa2fe('0x38')]({},_0x485ba8,_0x4b7c85[_0xa2fe('0x39')]);var _0x17aa35={'where':_0x485ba8[_0xa2fe('0x34')]};return db[_0xa2fe('0x25')][_0xa2fe('0x1b')](_0x17aa35)[_0xa2fe('0x1f')](function(_0x50d4b8){_0x3345dd[_0xa2fe('0x1b')]=_0x50d4b8;if(_0x4b7c85[_0xa2fe('0x2a')]['includeAll']){_0x485ba8[_0xa2fe('0x3a')]=[{'all':!![]}];}return db[_0xa2fe('0x25')]['findAll'](_0x485ba8);})[_0xa2fe('0x1f')](function(_0x376fe4){_0x3345dd[_0xa2fe('0x3b')]=_0x376fe4;return _0x3345dd;})[_0xa2fe('0x1f')](respondWithFilteredResult(_0x49ef0a,_0x485ba8))[_0xa2fe('0x3c')](handleError(_0x49ef0a,null));};exports[_0xa2fe('0x3d')]=function(_0x295cd6,_0x3139ef){var _0x22dfab={'raw':!![],'where':{'id':_0x295cd6[_0xa2fe('0x3e')]['id']}},_0x336602={};_0x336602[_0xa2fe('0x29')]=_[_0xa2fe('0x2b')](db[_0xa2fe('0x25')][_0xa2fe('0x3f')]);_0x336602['query']=_['keys'](_0x295cd6[_0xa2fe('0x2a')]);_0x336602[_0xa2fe('0x2c')]=_[_0xa2fe('0x2d')](_0x336602[_0xa2fe('0x29')],_0x336602['query']);_0x22dfab[_0xa2fe('0x2e')]=_[_0xa2fe('0x2d')](_0x336602[_0xa2fe('0x29')],qs[_0xa2fe('0x2f')](_0x295cd6[_0xa2fe('0x2a')]['fields']));_0x22dfab[_0xa2fe('0x2e')]=_0x22dfab[_0xa2fe('0x2e')][_0xa2fe('0x40')]?_0x22dfab[_0xa2fe('0x2e')]:_0x336602[_0xa2fe('0x29')];if(_0x295cd6[_0xa2fe('0x2a')][_0xa2fe('0x41')]){_0x22dfab[_0xa2fe('0x3a')]=[{'all':!![]}];}_0x22dfab=_['merge']({},_0x22dfab,_0x295cd6[_0xa2fe('0x39')]);return db[_0xa2fe('0x25')][_0xa2fe('0x42')](_0x22dfab)['then'](handleEntityNotFound(_0x3139ef,null))[_0xa2fe('0x1f')](respondWithResult(_0x3139ef,null))[_0xa2fe('0x3c')](handleError(_0x3139ef,null));};exports[_0xa2fe('0x43')]=function(_0x1d6df2,_0x220c3d){return db[_0xa2fe('0x25')]['create'](_0x1d6df2[_0xa2fe('0x44')],{})[_0xa2fe('0x1f')](respondWithResult(_0x220c3d,0xc9))[_0xa2fe('0x3c')](handleError(_0x220c3d,null));};exports[_0xa2fe('0x45')]=function(_0x638b51,_0x362a60){if(_0x638b51[_0xa2fe('0x44')]['id']){delete _0x638b51['body']['id'];}return db[_0xa2fe('0x25')][_0xa2fe('0x42')]({'where':{'id':_0x638b51['params']['id']}})[_0xa2fe('0x1f')](handleEntityNotFound(_0x362a60,null))['then'](saveUpdates(_0x638b51[_0xa2fe('0x44')],null))[_0xa2fe('0x1f')](respondWithResult(_0x362a60,null))['catch'](handleError(_0x362a60,null));};exports['destroy']=function(_0x55c757,_0x408935){return db[_0xa2fe('0x25')]['find']({'where':{'id':_0x55c757[_0xa2fe('0x3e')]['id']}})[_0xa2fe('0x1f')](handleEntityNotFound(_0x408935,null))['then'](removeEntity(_0x408935,null))['catch'](handleError(_0x408935,null));};
\ No newline at end of file
+var _0x4a71=['merge','VIRTUAL','options','includeAll','include','findAll','rows','params','catch','create','body','update','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','then','destroy','sendStatus','error','name','send','index','map','OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','sort','where','pick','filter'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4a71,0xeb));var _0x14a7=function(_0x520f7c,_0x7fcb49){_0x520f7c=_0x520f7c-0x0;var _0x3fba2a=_0x4a71[_0x520f7c];return _0x3fba2a;};'use strict';var emlformat=require(_0x14a7('0x0'));var rimraf=require(_0x14a7('0x1'));var zipdir=require(_0x14a7('0x2'));var jsonpatch=require(_0x14a7('0x3'));var rp=require(_0x14a7('0x4'));var moment=require(_0x14a7('0x5'));var BPromise=require(_0x14a7('0x6'));var Mustache=require(_0x14a7('0x7'));var util=require(_0x14a7('0x8'));var path=require('path');var sox=require(_0x14a7('0x9'));var csv=require(_0x14a7('0xa'));var ejs=require(_0x14a7('0xb'));var fs=require('fs');var fs_extra=require(_0x14a7('0xc'));var _=require(_0x14a7('0xd'));var squel=require(_0x14a7('0xe'));var crypto=require(_0x14a7('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x14a7('0x10'));var toCsv=require('to-csv');var querystring=require(_0x14a7('0x11'));var Papa=require(_0x14a7('0x12'));var Redis=require(_0x14a7('0x13'));var authService=require(_0x14a7('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x14a7('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x14a7('0x16'));var utils=require(_0x14a7('0x17'));var config=require(_0x14a7('0x18'));var licenseUtil=require(_0x14a7('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x14760d,_0x45ba1f){_0x45ba1f=_0x45ba1f||0xcc;return function(_0x374b0e){if(_0x374b0e){return _0x14760d['sendStatus'](_0x45ba1f);}return _0x14760d[_0x14a7('0x1a')](_0x45ba1f)[_0x14a7('0x1b')]();};}function respondWithResult(_0x2c2dec,_0x1e820d){_0x1e820d=_0x1e820d||0xc8;return function(_0x4c9d22){if(_0x4c9d22){return _0x2c2dec[_0x14a7('0x1a')](_0x1e820d)[_0x14a7('0x1c')](_0x4c9d22);}};}function respondWithFilteredResult(_0x510ffb,_0x4bd524){return function(_0x1cf375){if(_0x1cf375){var _0x4e73c6=typeof _0x4bd524[_0x14a7('0x1d')]===_0x14a7('0x1e')&&typeof _0x4bd524[_0x14a7('0x1f')]==='undefined';var _0x3150e8=_0x1cf375[_0x14a7('0x20')];var _0x5dda61=_0x4e73c6?0x0:_0x4bd524[_0x14a7('0x1d')];var _0x13baf1=_0x4e73c6?_0x1cf375[_0x14a7('0x20')]:_0x4bd524[_0x14a7('0x1d')]+_0x4bd524[_0x14a7('0x1f')];var _0x3b9f45;if(_0x13baf1>=_0x3150e8){_0x13baf1=_0x3150e8;_0x3b9f45=0xc8;}else{_0x3b9f45=0xce;}_0x510ffb[_0x14a7('0x1a')](_0x3b9f45);return _0x510ffb[_0x14a7('0x21')](_0x14a7('0x22'),_0x5dda61+'-'+_0x13baf1+'/'+_0x3150e8)['json'](_0x1cf375);}return null;};}function patchUpdates(_0x16ab4d){return function(_0x4baa57){try{jsonpatch[_0x14a7('0x23')](_0x4baa57,_0x16ab4d,!![]);}catch(_0x158510){return BPromise['reject'](_0x158510);}return _0x4baa57['save']();};}function saveUpdates(_0x3eec2b,_0x53b584){return function(_0x11d4d5){if(_0x11d4d5){return _0x11d4d5['update'](_0x3eec2b)[_0x14a7('0x24')](function(_0x49d639){return _0x49d639;});}return null;};}function removeEntity(_0x2994b2,_0x301c6c){return function(_0x516a3b){if(_0x516a3b){return _0x516a3b[_0x14a7('0x25')]()[_0x14a7('0x24')](function(){_0x2994b2[_0x14a7('0x1a')](0xcc)[_0x14a7('0x1b')]();});}};}function handleEntityNotFound(_0x20a429,_0x2f5f90){return function(_0x19dcf9){if(!_0x19dcf9){_0x20a429[_0x14a7('0x26')](0x194);}return _0x19dcf9;};}function handleError(_0x24b8cb,_0x500247){_0x500247=_0x500247||0x1f4;return function(_0x1d64f5){logger[_0x14a7('0x27')](_0x1d64f5['stack']);if(_0x1d64f5[_0x14a7('0x28')]){delete _0x1d64f5[_0x14a7('0x28')];}_0x24b8cb[_0x14a7('0x1a')](_0x500247)[_0x14a7('0x29')](_0x1d64f5);};}exports[_0x14a7('0x2a')]=function(_0x32bf7a,_0x4477bb){var _0x21254b={},_0x4f5089={},_0x2a07ab={'count':0x0,'rows':[]};var _0x78777c=_[_0x14a7('0x2b')](db[_0x14a7('0x2c')][_0x14a7('0x2d')],function(_0x2ccbb9){return{'name':_0x2ccbb9[_0x14a7('0x2e')],'type':_0x2ccbb9[_0x14a7('0x2f')][_0x14a7('0x30')]};});_0x4f5089[_0x14a7('0x31')]=_[_0x14a7('0x2b')](_0x78777c,_0x14a7('0x28'));_0x4f5089[_0x14a7('0x32')]=_[_0x14a7('0x33')](_0x32bf7a[_0x14a7('0x32')]);_0x4f5089[_0x14a7('0x34')]=_['intersection'](_0x4f5089['model'],_0x4f5089['query']);_0x21254b[_0x14a7('0x35')]=_[_0x14a7('0x36')](_0x4f5089['model'],qs[_0x14a7('0x37')](_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x37')]));_0x21254b[_0x14a7('0x35')]=_0x21254b[_0x14a7('0x35')][_0x14a7('0x38')]?_0x21254b[_0x14a7('0x35')]:_0x4f5089[_0x14a7('0x31')];if(!_0x32bf7a[_0x14a7('0x32')]['hasOwnProperty']('nolimit')){_0x21254b[_0x14a7('0x1f')]=qs['limit'](_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x1f')]);_0x21254b['offset']=qs['offset'](_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x1d')]);}_0x21254b['order']=qs[_0x14a7('0x39')](_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x39')]);_0x21254b[_0x14a7('0x3a')]=qs[_0x14a7('0x34')](_[_0x14a7('0x3b')](_0x32bf7a[_0x14a7('0x32')],_0x4f5089[_0x14a7('0x34')]),_0x78777c);if(_0x32bf7a['query'][_0x14a7('0x3c')]){_0x21254b[_0x14a7('0x3a')]=_[_0x14a7('0x3d')](_0x21254b[_0x14a7('0x3a')],{'$or':_['map'](_0x78777c,function(_0x2220a1){if(_0x2220a1['type']!==_0x14a7('0x3e')){var _0x27f178={};_0x27f178[_0x2220a1[_0x14a7('0x28')]]={'$like':'%'+_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x3c')]+'%'};return _0x27f178;}})});}_0x21254b=_[_0x14a7('0x3d')]({},_0x21254b,_0x32bf7a[_0x14a7('0x3f')]);var _0x357da3={'where':_0x21254b[_0x14a7('0x3a')]};return db[_0x14a7('0x2c')][_0x14a7('0x20')](_0x357da3)[_0x14a7('0x24')](function(_0x20302e){_0x2a07ab[_0x14a7('0x20')]=_0x20302e;if(_0x32bf7a[_0x14a7('0x32')][_0x14a7('0x40')]){_0x21254b[_0x14a7('0x41')]=[{'all':!![]}];}return db[_0x14a7('0x2c')][_0x14a7('0x42')](_0x21254b);})[_0x14a7('0x24')](function(_0x7e35a1){_0x2a07ab[_0x14a7('0x43')]=_0x7e35a1;return _0x2a07ab;})[_0x14a7('0x24')](respondWithFilteredResult(_0x4477bb,_0x21254b))['catch'](handleError(_0x4477bb,null));};exports['show']=function(_0x57cde8,_0x33d488){var _0x2bfeb0={'raw':!![],'where':{'id':_0x57cde8[_0x14a7('0x44')]['id']}},_0xd2941b={};_0xd2941b[_0x14a7('0x31')]=_[_0x14a7('0x33')](db[_0x14a7('0x2c')][_0x14a7('0x2d')]);_0xd2941b[_0x14a7('0x32')]=_[_0x14a7('0x33')](_0x57cde8['query']);_0xd2941b[_0x14a7('0x34')]=_[_0x14a7('0x36')](_0xd2941b[_0x14a7('0x31')],_0xd2941b[_0x14a7('0x32')]);_0x2bfeb0[_0x14a7('0x35')]=_[_0x14a7('0x36')](_0xd2941b[_0x14a7('0x31')],qs['fields'](_0x57cde8[_0x14a7('0x32')][_0x14a7('0x37')]));_0x2bfeb0[_0x14a7('0x35')]=_0x2bfeb0[_0x14a7('0x35')][_0x14a7('0x38')]?_0x2bfeb0[_0x14a7('0x35')]:_0xd2941b[_0x14a7('0x31')];if(_0x57cde8[_0x14a7('0x32')]['includeAll']){_0x2bfeb0[_0x14a7('0x41')]=[{'all':!![]}];}_0x2bfeb0=_[_0x14a7('0x3d')]({},_0x2bfeb0,_0x57cde8['options']);return db['OpenchannelApplication']['find'](_0x2bfeb0)[_0x14a7('0x24')](handleEntityNotFound(_0x33d488,null))[_0x14a7('0x24')](respondWithResult(_0x33d488,null))[_0x14a7('0x45')](handleError(_0x33d488,null));};exports[_0x14a7('0x46')]=function(_0x5a5437,_0xf42efb){return db[_0x14a7('0x2c')][_0x14a7('0x46')](_0x5a5437[_0x14a7('0x47')],{})[_0x14a7('0x24')](respondWithResult(_0xf42efb,0xc9))['catch'](handleError(_0xf42efb,null));};exports[_0x14a7('0x48')]=function(_0x5ba27b,_0x4a2ada){if(_0x5ba27b[_0x14a7('0x47')]['id']){delete _0x5ba27b[_0x14a7('0x47')]['id'];}return db[_0x14a7('0x2c')]['find']({'where':{'id':_0x5ba27b['params']['id']}})[_0x14a7('0x24')](handleEntityNotFound(_0x4a2ada,null))[_0x14a7('0x24')](saveUpdates(_0x5ba27b[_0x14a7('0x47')],null))[_0x14a7('0x24')](respondWithResult(_0x4a2ada,null))['catch'](handleError(_0x4a2ada,null));};exports[_0x14a7('0x25')]=function(_0x2fbc1d,_0x25adbf){return db[_0x14a7('0x2c')][_0x14a7('0x49')]({'where':{'id':_0x2fbc1d[_0x14a7('0x44')]['id']}})['then'](handleEntityNotFound(_0x25adbf,null))['then'](removeEntity(_0x25adbf,null))[_0x14a7('0x45')](handleError(_0x25adbf,null));};
\ No newline at end of file
index 5b2fc77..234be80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x241d=['openchannel_applications','utf8mb4','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication'];(function(_0x2a9477,_0x572e3c){var _0x399248=function(_0x351329){while(--_0x351329){_0x2a9477['push'](_0x2a9477['shift']());}};_0x399248(++_0x572e3c);}(_0x241d,0xd4));var _0xd241=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0x241d[_0x34bc30];return _0x5706de;};'use strict';var _=require('lodash');var util=require(_0xd241('0x0'));var logger=require(_0xd241('0x1'))(_0xd241('0x2'));var moment=require(_0xd241('0x3'));var BPromise=require('bluebird');var rp=require(_0xd241('0x4'));var fs=require('fs');var path=require(_0xd241('0x5'));var rimraf=require(_0xd241('0x6'));var config=require(_0xd241('0x7'));var attributes=require(_0xd241('0x8'));module[_0xd241('0x9')]=function(_0x31f334,_0x49a631){return _0x31f334[_0xd241('0xa')](_0xd241('0xb'),attributes,{'tableName':_0xd241('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd241('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x8862=['utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','exports','define','OpenchannelApplication','openchannel_applications'];(function(_0x28509b,_0x5831ff){var _0x1e0b6=function(_0x37d8a2){while(--_0x37d8a2){_0x28509b['push'](_0x28509b['shift']());}};_0x1e0b6(++_0x5831ff);}(_0x8862,0x18a));var _0x2886=function(_0x91b5ce,_0xa53476){_0x91b5ce=_0x91b5ce-0x0;var _0x14ebfa=_0x8862[_0x91b5ce];return _0x14ebfa;};'use strict';var _=require(_0x2886('0x0'));var util=require(_0x2886('0x1'));var logger=require(_0x2886('0x2'))(_0x2886('0x3'));var moment=require(_0x2886('0x4'));var BPromise=require(_0x2886('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2886('0x6'));var rimraf=require(_0x2886('0x7'));var config=require('../../config/environment');var attributes=require('./openchannelApplication.attributes');module[_0x2886('0x8')]=function(_0x3fa266,_0x1c7621){return _0x3fa266[_0x2886('0x9')](_0x2886('0xa'),attributes,{'tableName':_0x2886('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2886('0xc'),'collate':_0x2886('0xd')});};
\ No newline at end of file
index 0606d44..5573c7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5d8=['request\x20sent','stringify','error','code','message','result','catch','OpenchannelApplication','update','options','where','attributes','UpdateOpenchannelApplication','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','OpenchannelApplication,\x20%s,\x20%s','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s'];(function(_0x21e38c,_0x3df0b0){var _0x36d5db=function(_0x45cf4d){while(--_0x45cf4d){_0x21e38c['push'](_0x21e38c['shift']());}};_0x36d5db(++_0x3df0b0);}(_0xd5d8,0x195));var _0x8d5d=function(_0x32dc06,_0x511eba){_0x32dc06=_0x32dc06-0x0;var _0x1c211c=_0xd5d8[_0x32dc06];return _0x1c211c;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x8d5d('0x0'));var rs=require(_0x8d5d('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8d5d('0x2'))['db'];var utils=require(_0x8d5d('0x3'));var logger=require(_0x8d5d('0x4'))(_0x8d5d('0x5'));var config=require(_0x8d5d('0x6'));var jayson=require(_0x8d5d('0x7'));var client=jayson[_0x8d5d('0x8')][_0x8d5d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x546c94,_0x91f638,_0x5b8264){return new BPromise(function(_0x2c5c3e,_0x32ca8c){return client['request'](_0x546c94,_0x5b8264)[_0x8d5d('0xa')](function(_0x3282a6){logger[_0x8d5d('0xb')](_0x8d5d('0xc'),_0x91f638,'request\x20sent');logger[_0x8d5d('0xd')](_0x8d5d('0xe'),_0x91f638,_0x8d5d('0xf'),JSON[_0x8d5d('0x10')](_0x3282a6));if(_0x3282a6[_0x8d5d('0x11')]){if(_0x3282a6[_0x8d5d('0x11')][_0x8d5d('0x12')]===0x1f4){logger[_0x8d5d('0x11')]('OpenchannelApplication,\x20%s,\x20%s',_0x91f638,_0x3282a6[_0x8d5d('0x11')][_0x8d5d('0x13')]);return _0x32ca8c(_0x3282a6[_0x8d5d('0x11')]['message']);}logger[_0x8d5d('0x11')](_0x8d5d('0xc'),_0x91f638,_0x3282a6[_0x8d5d('0x11')][_0x8d5d('0x13')]);return _0x2c5c3e(_0x3282a6[_0x8d5d('0x11')]['message']);}else{logger[_0x8d5d('0xb')](_0x8d5d('0xc'),_0x91f638,_0x8d5d('0xf'));_0x2c5c3e(_0x3282a6[_0x8d5d('0x14')]['message']);}})[_0x8d5d('0x15')](function(_0x148c7){logger['error'](_0x8d5d('0xc'),_0x91f638,_0x148c7);_0x32ca8c(_0x148c7);});});}exports['UpdateOpenchannelApplication']=function(_0x23db9e){var _0x1cde8b=this;return new Promise(function(_0x6fb9a1,_0x224b6c){return db[_0x8d5d('0x16')][_0x8d5d('0x17')](_0x23db9e['body'],{'raw':_0x23db9e[_0x8d5d('0x18')]?_0x23db9e[_0x8d5d('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23db9e[_0x8d5d('0x18')]?_0x23db9e[_0x8d5d('0x18')][_0x8d5d('0x19')]||null:null,'attributes':_0x23db9e[_0x8d5d('0x18')]?_0x23db9e['options'][_0x8d5d('0x1a')]||null:null,'limit':_0x23db9e['options']?_0x23db9e[_0x8d5d('0x18')]['limit']||null:null})[_0x8d5d('0xa')](function(_0x164123){logger[_0x8d5d('0xb')](_0x8d5d('0x1b'),_0x23db9e);logger['debug'](_0x8d5d('0x1b'),_0x23db9e,JSON[_0x8d5d('0x10')](_0x164123));_0x6fb9a1(_0x164123);})['catch'](function(_0x374461){logger[_0x8d5d('0x11')]('UpdateOpenchannelApplication',_0x374461[_0x8d5d('0x13')],_0x23db9e);_0x224b6c(_0x1cde8b[_0x8d5d('0x11')](0x1f4,_0x374461[_0x8d5d('0x13')]));});});};
\ No newline at end of file
+var _0xee09=['request','then','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','where','limit','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0x6f8972,_0x343da7){var _0x5677d9=function(_0x5eb51f){while(--_0x5eb51f){_0x6f8972['push'](_0x6f8972['shift']());}};_0x5677d9(++_0x343da7);}(_0xee09,0xb4));var _0x9ee0=function(_0x1ed7b0,_0x579eaf){_0x1ed7b0=_0x1ed7b0-0x0;var _0x1c7a96=_0xee09[_0x1ed7b0];return _0x1c7a96;};'use strict';var _=require(_0x9ee0('0x0'));var util=require('util');var moment=require(_0x9ee0('0x1'));var BPromise=require(_0x9ee0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9ee0('0x3'))['db'];var utils=require(_0x9ee0('0x4'));var logger=require(_0x9ee0('0x5'))('rpc');var config=require(_0x9ee0('0x6'));var jayson=require(_0x9ee0('0x7'));var client=jayson['client'][_0x9ee0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2e1930,_0x45e11f,_0x3f3fd3){return new BPromise(function(_0x4de013,_0x551ca2){return client[_0x9ee0('0x9')](_0x2e1930,_0x3f3fd3)[_0x9ee0('0xa')](function(_0xaeb33e){logger['info'](_0x9ee0('0xb'),_0x45e11f,_0x9ee0('0xc'));logger[_0x9ee0('0xd')](_0x9ee0('0xe'),_0x45e11f,'request\x20sent',JSON['stringify'](_0xaeb33e));if(_0xaeb33e['error']){if(_0xaeb33e[_0x9ee0('0xf')]['code']===0x1f4){logger[_0x9ee0('0xf')](_0x9ee0('0xb'),_0x45e11f,_0xaeb33e['error'][_0x9ee0('0x10')]);return _0x551ca2(_0xaeb33e[_0x9ee0('0xf')][_0x9ee0('0x10')]);}logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x45e11f,_0xaeb33e[_0x9ee0('0xf')][_0x9ee0('0x10')]);return _0x4de013(_0xaeb33e[_0x9ee0('0xf')][_0x9ee0('0x10')]);}else{logger[_0x9ee0('0x11')]('OpenchannelApplication,\x20%s,\x20%s',_0x45e11f,_0x9ee0('0xc'));_0x4de013(_0xaeb33e[_0x9ee0('0x12')][_0x9ee0('0x10')]);}})[_0x9ee0('0x13')](function(_0x2e3bcb){logger[_0x9ee0('0xf')](_0x9ee0('0xb'),_0x45e11f,_0x2e3bcb);_0x551ca2(_0x2e3bcb);});});}exports[_0x9ee0('0x14')]=function(_0x238a39){var _0x48734f=this;return new Promise(function(_0x415870,_0x10ccff){return db[_0x9ee0('0x15')][_0x9ee0('0x16')](_0x238a39[_0x9ee0('0x17')],{'raw':_0x238a39[_0x9ee0('0x18')]?_0x238a39[_0x9ee0('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x238a39[_0x9ee0('0x18')]?_0x238a39['options'][_0x9ee0('0x19')]||null:null,'attributes':_0x238a39[_0x9ee0('0x18')]?_0x238a39[_0x9ee0('0x18')]['attributes']||null:null,'limit':_0x238a39[_0x9ee0('0x18')]?_0x238a39['options'][_0x9ee0('0x1a')]||null:null})['then'](function(_0x2062df){logger[_0x9ee0('0x11')]('UpdateOpenchannelApplication',_0x238a39);logger['debug'](_0x9ee0('0x14'),_0x238a39,JSON['stringify'](_0x2062df));_0x415870(_0x2062df);})[_0x9ee0('0x13')](function(_0x558893){logger[_0x9ee0('0xf')]('UpdateOpenchannelApplication',_0x558893[_0x9ee0('0x10')],_0x238a39);_0x10ccff(_0x48734f[_0x9ee0('0xf')](0x1f4,_0x558893[_0x9ee0('0x10')]));});});};
\ No newline at end of file
index 4bed35c..58e8acf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aad=['openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','removeTags','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','/:id/download','create','post','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put'];(function(_0x5411cb,_0x1cd69d){var _0x32727a=function(_0x22a762){while(--_0x22a762){_0x5411cb['push'](_0x5411cb['shift']());}};_0x32727a(++_0x1cd69d);}(_0x7aad,0xe6));var _0xd7aa=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x7aad[_0x3ff085];return _0x2b68c3;};'use strict';var multer=require(_0xd7aa('0x0'));var util=require(_0xd7aa('0x1'));var path=require(_0xd7aa('0x2'));var timeout=require(_0xd7aa('0x3'));var express=require('express');var router=express[_0xd7aa('0x4')]();var fs_extra=require(_0xd7aa('0x5'));var auth=require(_0xd7aa('0x6'));var interaction=require(_0xd7aa('0x7'));var config=require('../../config/environment');var controller=require(_0xd7aa('0x8'));router[_0xd7aa('0x9')]('/',auth[_0xd7aa('0xa')](),controller[_0xd7aa('0xb')]);router[_0xd7aa('0x9')](_0xd7aa('0xc'),auth[_0xd7aa('0xa')](),controller['describe']);router[_0xd7aa('0x9')](_0xd7aa('0xd'),auth[_0xd7aa('0xa')](),controller[_0xd7aa('0xe')]);router['get'](_0xd7aa('0xf'),auth[_0xd7aa('0xa')](),controller['getMessages']);router[_0xd7aa('0x9')](_0xd7aa('0x10'),auth[_0xd7aa('0xa')](),controller['download']);router['post']('/',auth[_0xd7aa('0xa')](),controller[_0xd7aa('0x11')]);router[_0xd7aa('0x12')]('/:id/messages',auth[_0xd7aa('0xa')](),controller[_0xd7aa('0x13')]);router[_0xd7aa('0x12')](_0xd7aa('0x14'),auth['isAuthenticated'](),interaction[_0xd7aa('0x15')](_0xd7aa('0x16'),_0xd7aa('0x17')),controller[_0xd7aa('0x18')]);router[_0xd7aa('0x19')](_0xd7aa('0xd'),auth[_0xd7aa('0xa')](),interaction['tracked'](_0xd7aa('0x16'),_0xd7aa('0x1a')),controller[_0xd7aa('0x1b')]);router[_0xd7aa('0x1c')](_0xd7aa('0xd'),auth[_0xd7aa('0xa')](),interaction[_0xd7aa('0x15')](_0xd7aa('0x16'),_0xd7aa('0x1d')),controller[_0xd7aa('0x1e')]);router['delete'](_0xd7aa('0x14'),auth['isAuthenticated'](),controller[_0xd7aa('0x1f')]);module['exports']=router;
\ No newline at end of file
+var _0x2ce4=['fs-extra','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','/:id/download','download','post','create','addMessage','openchannelinteraction:addtags','addTags','put','tracked','openchannel','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','util','connect-timeout','express'];(function(_0x2fb87e,_0x483324){var _0x5de4c1=function(_0x4464b5){while(--_0x4464b5){_0x2fb87e['push'](_0x2fb87e['shift']());}};_0x5de4c1(++_0x483324);}(_0x2ce4,0x10c));var _0x42ce=function(_0x476fcc,_0x28a961){_0x476fcc=_0x476fcc-0x0;var _0x394184=_0x2ce4[_0x476fcc];return _0x394184;};'use strict';var multer=require(_0x42ce('0x0'));var util=require(_0x42ce('0x1'));var path=require('path');var timeout=require(_0x42ce('0x2'));var express=require(_0x42ce('0x3'));var router=express['Router']();var fs_extra=require(_0x42ce('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x42ce('0x5'));var config=require(_0x42ce('0x6'));var controller=require(_0x42ce('0x7'));router[_0x42ce('0x8')]('/',auth[_0x42ce('0x9')](),controller[_0x42ce('0xa')]);router[_0x42ce('0x8')](_0x42ce('0xb'),auth[_0x42ce('0x9')](),controller[_0x42ce('0xc')]);router['get'](_0x42ce('0xd'),auth[_0x42ce('0x9')](),controller[_0x42ce('0xe')]);router[_0x42ce('0x8')](_0x42ce('0xf'),auth[_0x42ce('0x9')](),controller['getMessages']);router['get'](_0x42ce('0x10'),auth[_0x42ce('0x9')](),controller[_0x42ce('0x11')]);router[_0x42ce('0x12')]('/',auth[_0x42ce('0x9')](),controller[_0x42ce('0x13')]);router[_0x42ce('0x12')](_0x42ce('0xf'),auth[_0x42ce('0x9')](),controller[_0x42ce('0x14')]);router[_0x42ce('0x12')]('/:id/tags',auth[_0x42ce('0x9')](),interaction['tracked']('openchannel',_0x42ce('0x15')),controller[_0x42ce('0x16')]);router[_0x42ce('0x17')]('/:id',auth[_0x42ce('0x9')](),interaction[_0x42ce('0x18')](_0x42ce('0x19'),_0x42ce('0x1a')),controller[_0x42ce('0x1b')]);router[_0x42ce('0x1c')](_0x42ce('0xd'),auth[_0x42ce('0x9')](),interaction[_0x42ce('0x18')]('openchannel',_0x42ce('0x1d')),controller[_0x42ce('0x1e')]);router[_0x42ce('0x1c')](_0x42ce('0x1f'),auth[_0x42ce('0x9')](),controller[_0x42ce('0x20')]);module[_0x42ce('0x21')]=router;
\ No newline at end of file
index e26298e..f7cb50d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5977=['ENUM','sequelize','exports','BOOLEAN','STRING','DATE'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x5977,0xeb));var _0x7597=function(_0xed12ef,_0x385546){_0xed12ef=_0xed12ef-0x0;var _0x494ffd=_0x5977[_0xed12ef];return _0x494ffd;};'use strict';var Sequelize=require(_0x7597('0x0'));module[_0x7597('0x1')]={'closed':{'type':Sequelize[_0x7597('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x7597('0x3')]},'secondDisposition':{'type':Sequelize[_0x7597('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x7597('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x7597('0x3')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x7597('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x7597('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x38d3=['STRING','out','BOOLEAN','sequelize','exports','DATE'];(function(_0x4d35f3,_0x19ba66){var _0x382fea=function(_0x2c2390){while(--_0x2c2390){_0x4d35f3['push'](_0x4d35f3['shift']());}};_0x382fea(++_0x19ba66);}(_0x38d3,0x1a7));var _0x338d=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x38d3[_0xe66cf2];return _0x2d84e7;};'use strict';var Sequelize=require(_0x338d('0x0'));module[_0x338d('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x338d('0x2')]},'disposition':{'type':Sequelize[_0x338d('0x3')]},'secondDisposition':{'type':Sequelize[_0x338d('0x3')]},'thirdDisposition':{'type':Sequelize[_0x338d('0x3')]},'note':{'type':Sequelize[_0x338d('0x3')]},'read1stAt':{'type':Sequelize[_0x338d('0x2')]},'threadId':{'type':Sequelize[_0x338d('0x3')]},'externalUrl':{'type':Sequelize[_0x338d('0x3')]},'lastMsgAt':{'type':Sequelize[_0x338d('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x338d('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x338d('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x338d('0x5')],'defaultValue':![]}};
\ No newline at end of file
index 911e5a3..54b2e63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa15c=['createPdfFromHTML','log','err','unlinkSync','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','name','send','fullname','TagIds','Tags','index','map','OpenchannelInteraction','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','select','field','color','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','UserId','buildExpression','body','some','compact','forEach','i.OpenchannelAccountId\x20IN\x20?','parse','$gte','$lte','null','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\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','Sequelize','QueryTypes','SELECT','clone','contactName','resolve','OpenchannelAccountId','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','isEmpty','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.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','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','push','all','rows','catch','show','params','includeAll','include','options','create','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','pick','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','spread','emit','openchannelInteractionTags:save','removeTags','download','unix','root','tmp','server','attachments','transcript-%d-%s.zip','join','CmContact','firstName','Attachment','Messages','createdAt','direction','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','closed','closedAt','disposition','threadId','Public','Private','basename','existsSync','createReadStream','pipe','createWriteStream','System','lastName','out','secret','views','downloadInteraction.ejs','.pdf'];(function(_0x151381,_0x97b314){var _0x2afab6=function(_0x4b3941){while(--_0x4b3941){_0x151381['push'](_0x151381['shift']());}};_0x2afab6(++_0x97b314);}(_0xa15c,0xf9));var _0xca15=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xa15c[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xca15('0x0'));var jsonpatch=require(_0xca15('0x1'));var rp=require(_0xca15('0x2'));var moment=require(_0xca15('0x3'));var BPromise=require(_0xca15('0x4'));var Mustache=require(_0xca15('0x5'));var util=require(_0xca15('0x6'));var path=require('path');var sox=require(_0xca15('0x7'));var csv=require(_0xca15('0x8'));var ejs=require(_0xca15('0x9'));var fs=require('fs');var fs_extra=require(_0xca15('0xa'));var _=require(_0xca15('0xb'));var squel=require(_0xca15('0xc'));var crypto=require(_0xca15('0xd'));var jsforce=require(_0xca15('0xe'));var deskjs=require(_0xca15('0xf'));var toCsv=require('to-csv');var querystring=require(_0xca15('0x10'));var Papa=require(_0xca15('0x11'));var Redis=require('ioredis');var authService=require(_0xca15('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xca15('0x13'));var pdf=require(_0xca15('0x14'));var hardwareService=require(_0xca15('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xca15('0x16'));var config=require(_0xca15('0x17'));var licenseUtil=require(_0xca15('0x18'));var db=require(_0xca15('0x19'))['db'];config['redis']=_[_0xca15('0x1a')](config[_0xca15('0x1b')],{'host':_0xca15('0x1c'),'port':0x18eb});var socket=require(_0xca15('0x1d'))(new Redis(config[_0xca15('0x1b')]));require(_0xca15('0x1e'))['register'](socket);function respondWithStatusCode(_0x5a3c14,_0x5af38c){_0x5af38c=_0x5af38c||0xcc;return function(_0x58b0bd){if(_0x58b0bd){return _0x5a3c14[_0xca15('0x1f')](_0x5af38c);}return _0x5a3c14[_0xca15('0x20')](_0x5af38c)['end']();};}function respondWithResult(_0x5e4e95,_0x364d6f){_0x364d6f=_0x364d6f||0xc8;return function(_0x3a8b08){if(_0x3a8b08){return _0x5e4e95[_0xca15('0x20')](_0x364d6f)['json'](_0x3a8b08);}};}function respondWithFilteredResult(_0x3fc314,_0x5f4956){return function(_0x11caaa){if(_0x11caaa){var _0x152f0d=typeof _0x5f4956['offset']===_0xca15('0x21')&&typeof _0x5f4956[_0xca15('0x22')]===_0xca15('0x21');var _0x6e15cc=_0x11caaa[_0xca15('0x23')];var _0x11163c=_0x152f0d?0x0:_0x5f4956[_0xca15('0x24')];var _0x17e14a=_0x152f0d?_0x11caaa['count']:_0x5f4956[_0xca15('0x24')]+_0x5f4956[_0xca15('0x22')];var _0x4aacf8;if(_0x17e14a>=_0x6e15cc){_0x17e14a=_0x6e15cc;_0x4aacf8=0xc8;}else{_0x4aacf8=0xce;}_0x3fc314[_0xca15('0x20')](_0x4aacf8);return _0x3fc314[_0xca15('0x25')](_0xca15('0x26'),_0x11163c+'-'+_0x17e14a+'/'+_0x6e15cc)[_0xca15('0x27')](_0x11caaa);}return null;};}function patchUpdates(_0x1012c6){return function(_0x538a33){try{jsonpatch[_0xca15('0x28')](_0x538a33,_0x1012c6,!![]);}catch(_0x62c420){return BPromise[_0xca15('0x29')](_0x62c420);}return _0x538a33[_0xca15('0x2a')]();};}function saveUpdates(_0x1c80d4,_0x2d079e){return function(_0xa76f40){if(_0xa76f40){return _0xa76f40[_0xca15('0x2b')](_0x1c80d4)[_0xca15('0x2c')](function(_0x116783){return _0x116783;});}return null;};}function removeEntity(_0x13bcff,_0x467ade){return function(_0x42d067){if(_0x42d067){return _0x42d067[_0xca15('0x2d')]()[_0xca15('0x2c')](function(){_0x13bcff[_0xca15('0x20')](0xcc)[_0xca15('0x2e')]();});}};}function handleEntityNotFound(_0x3c32aa,_0x3d6683){return function(_0x57ceba){if(!_0x57ceba){_0x3c32aa['sendStatus'](0x194);}return _0x57ceba;};}function handleError(_0x3296e9,_0x3c207){_0x3c207=_0x3c207||0x1f4;return function(_0xc20e85){logger[_0xca15('0x2f')](_0xc20e85['stack']);if(_0xc20e85[_0xca15('0x30')]){delete _0xc20e85[_0xca15('0x30')];}_0x3296e9[_0xca15('0x20')](_0x3c207)[_0xca15('0x31')](_0xc20e85);};}function getInteractionUsers(_0x4078f9,_0x7e00d2){return new BPromise(function(_0x456f82,_0x26b6f4){try{if(_0x7e00d2[_0x4078f9['id']]){_0x4078f9['Users']=_['map'](_0x7e00d2[_0x4078f9['id']],function(_0x543086){return{'id':_0x543086['id'],'fullname':_0x543086[_0xca15('0x32')]};});}}catch(_0x128a67){_0x26b6f4(_0x128a67);}_0x456f82(_0x4078f9);});}function getInteractionTags(_0x45b7a2,_0x1dfcf1){return new BPromise(function(_0x44b898,_0x32e3d1){try{if(_0x45b7a2[_0xca15('0x33')]){_0x45b7a2[_0xca15('0x34')]=[];_0x45b7a2[_0xca15('0x33')]['split'](',')['forEach'](function(_0x2c8c00){_0x45b7a2[_0xca15('0x34')]['push'](_0x1dfcf1[_0x2c8c00]);});}delete _0x45b7a2['TagIds'];}catch(_0x3af509){_0x32e3d1(_0x3af509);}_0x44b898(_0x45b7a2);});}function updateOpenchannelInteraction(_0x565045,_0x29b078,_0x28be3f){return new BPromise(function(_0x3cfa17,_0x3e0b5b){return getInteractionUsers(_0x565045,_0x28be3f)[_0xca15('0x2c')](function(_0xda8292){return getInteractionTags(_0xda8292,_0x29b078);})[_0xca15('0x2c')](function(_0x4f1ec5){_0x3cfa17(_0x4f1ec5);})['catch'](function(_0x55f705){_0x3e0b5b(_0x55f705);});});}exports[_0xca15('0x35')]=function(_0x5adf48,_0x730cae){var _0x24fead={},_0x797c65={},_0x490262={'count':0x0,'rows':[]};var _0xe2f4ab=_[_0xca15('0x36')](db[_0xca15('0x37')][_0xca15('0x38')],function(_0x483c71){return{'name':_0x483c71[_0xca15('0x39')],'type':_0x483c71[_0xca15('0x3a')][_0xca15('0x3b')]};});_0x797c65['model']=_[_0xca15('0x36')](_0xe2f4ab,'name');_0x797c65[_0xca15('0x3c')]=_[_0xca15('0x3d')](_0x5adf48['query']);_0x797c65['filters']=_[_0xca15('0x3e')](_0x797c65['model'],_0x797c65['query']);_0x24fead['attributes']=_[_0xca15('0x3e')](_0x797c65[_0xca15('0x3f')],qs[_0xca15('0x40')](_0x5adf48[_0xca15('0x3c')][_0xca15('0x40')]));_0x24fead[_0xca15('0x41')]=_0x24fead[_0xca15('0x41')][_0xca15('0x42')]?_0x24fead['attributes']:_0x797c65[_0xca15('0x3f')];if(!_0x5adf48[_0xca15('0x3c')][_0xca15('0x43')](_0xca15('0x44'))){_0x24fead[_0xca15('0x22')]=qs[_0xca15('0x22')](_0x5adf48[_0xca15('0x3c')][_0xca15('0x22')]);_0x24fead[_0xca15('0x24')]=qs[_0xca15('0x24')](_0x5adf48['query']['offset']);}_0x24fead[_0xca15('0x45')]=qs[_0xca15('0x46')](_0x5adf48[_0xca15('0x3c')]['sort']);_0x24fead[_0xca15('0x47')]=qs[_0xca15('0x48')](_['pick'](_0x5adf48[_0xca15('0x3c')],_0x797c65[_0xca15('0x48')]),_0xe2f4ab);var _0x247507=[];var _0x25808e=squel[_0xca15('0x49')]()[_0xca15('0x4a')]('id')['field'](_0xca15('0x30'))[_0xca15('0x4a')](_0xca15('0x4b'))[_0xca15('0x4c')](_0xca15('0x4d'));var _0x4ee451=squel[_0xca15('0x49')]()['field'](_0xca15('0x4e'))[_0xca15('0x4a')](_0xca15('0x4f'))[_0xca15('0x4a')](_0xca15('0x50'))[_0xca15('0x4c')](_0xca15('0x51'),'ui')[_0xca15('0x52')](_0xca15('0x53'),'u',_0xca15('0x54'));var _0x2112ce=squel[_0xca15('0x49')]()[_0xca15('0x4c')](_0xca15('0x55'),'i')[_0xca15('0x52')](_0xca15('0x56'),'c',_0xca15('0x57'))[_0xca15('0x52')](_0xca15('0x53'),'o','o.id\x20=\x20i.UserId')[_0xca15('0x52')]('openchannel_accounts','a',_0xca15('0x58'))[_0xca15('0x52')](_0xca15('0x59'),'me',_0xca15('0x5a'))[_0xca15('0x52')](_0xca15('0x5b'),'it',_0xca15('0x5c'))['left_join'](_0xca15('0x4d'),'t',_0xca15('0x5d'));var _0x5b617d=squel[_0xca15('0x5e')]();var _0x164ccb=[];var _0x169608=squel['expr']();var _0x30d36c;if(_0x5adf48[_0xca15('0x3c')][_0xca15('0x5f')]){_0x30d36c=as[_0xca15('0x60')](_0x5adf48['query'][_0xca15('0x5f')]);var _0x3f6986=_0x30d36c[_0xca15('0x61')];for(var _0x25039a=0x0;_0x25039a<_0x30d36c['conditions']['length'];_0x25039a++){var _0x349026=_0x30d36c[_0xca15('0x62')][_0x25039a];var _0x4023c9='i';var _0x30af81=_[_0xca15('0x63')](_0xe2f4ab,['name',_0x349026[_0xca15('0x4a')]]);if(!_0x30af81){switch(_0x349026[_0xca15('0x4a')]){case _0xca15('0x64'):if(_0x349026[_0xca15('0x65')]==0x1){_0x2112ce[_0xca15('0x66')]('`'+_0x349026[_0xca15('0x4a')]+_0xca15('0x67'));}else{_0x2112ce[_0xca15('0x66')]('`'+_0x349026[_0xca15('0x4a')]+_0xca15('0x68'));}break;case _0xca15('0x69'):if(_0x349026['operator']===_0xca15('0x6a')){if(_0x349026[_0xca15('0x65')][_0xca15('0x6b')]('\x20')['length']>0x1){_0x5b617d[_0x3f6986](_0xca15('0x6c'),qs['getFullTextValue'](_0x349026[_0xca15('0x65')]),null);}else{var _0x48e035='%'+_0x349026[_0xca15('0x65')]+'%';_0x5b617d[_0x3f6986]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x48e035,_0x48e035,_0x48e035);}}else{_0x30af81=_[_0xca15('0x63')](_0xe2f4ab,[_0xca15('0x30'),'ContactId']);_0x349026[_0xca15('0x4a')]=_0xca15('0x6d');_0x2ae117=as['buildExpression'](_0x4023c9,_0x30af81[_0xca15('0x3a')],_0x349026);_0x5b617d[_0x3f6986](_0x2ae117[_0xca15('0x6e')],_0x2ae117[_0xca15('0x65')][_0xca15('0x6f')],_0x2ae117['value'][_0xca15('0x2e')]);}break;case _0xca15('0x70'):var _0x5afd59=_0x349026[_0xca15('0x65')][_0xca15('0x6b')](',')[_0xca15('0x36')](function(_0xc05985){return Number(_0xc05985);});_0x5afd59['forEach'](function(_0x248d3f){_0x169608['or'](_0xca15('0x71'),'%,'+_0x248d3f+',%');});_0x164ccb=_[_0xca15('0x72')](_0x164ccb,_0x5afd59);break;case _0xca15('0x73'):if(_0x349026[_0xca15('0x74')]==='$substring'){_0x5b617d[_0x3f6986]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x349026['value']+'%',null);}else{_0x30af81=_[_0xca15('0x63')](_0xe2f4ab,['name','UserId']);_0x349026[_0xca15('0x4a')]=_0xca15('0x75');_0x2ae117=as[_0xca15('0x76')](_0x4023c9,_0x30af81[_0xca15('0x3a')],_0x349026);_0x5b617d[_0x3f6986](_0x2ae117['text'],_0x2ae117[_0xca15('0x65')][_0xca15('0x6f')],_0x2ae117[_0xca15('0x65')][_0xca15('0x2e')]);}break;case _0xca15('0x77'):_0x2ae117=as[_0xca15('0x76')]('me',null,_0x349026);_0x5b617d[_0x3f6986](_0x2ae117[_0xca15('0x6e')],_0x2ae117[_0xca15('0x65')][_0xca15('0x6f')],_0x2ae117[_0xca15('0x65')]['end']);break;}}else{var _0x2ae117=as['buildExpression'](_0x4023c9,_0x30af81[_0xca15('0x3a')],_0x349026);_0x5b617d[_0x3f6986](_0x2ae117[_0xca15('0x6e')],_0x2ae117['value'][_0xca15('0x6f')],_0x2ae117[_0xca15('0x65')][_0xca15('0x2e')]);}}}else{var _0x65e12f=_(_0x5adf48[_0xca15('0x3c')])['keys']()[_0xca15('0x36')](function(_0x53e9f8){return _[_0xca15('0x78')](_0xe2f4ab,[_0xca15('0x30'),_0x53e9f8])?_0x53e9f8:undefined;})[_0xca15('0x79')]()[_0xca15('0x65')]();if(!_['isEmpty'](_0x65e12f)){_0x65e12f[_0xca15('0x7a')](function(_0x4f5d55){if(_0x4f5d55==='OpenchannelAccountId'){_0x2112ce[_0xca15('0x47')](_0xca15('0x7b'),[]['concat'](_0x5adf48[_0xca15('0x3c')][_0x4f5d55]));}else if(_0x4f5d55==='createdAt'){var _0x5c04e7=JSON[_0xca15('0x7c')](_0x5adf48[_0xca15('0x3c')][_0x4f5d55])[_0xca15('0x7d')];var _0x5c783a=JSON[_0xca15('0x7c')](_0x5adf48[_0xca15('0x3c')][_0x4f5d55])[_0xca15('0x7e')];_0x2112ce[_0xca15('0x47')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5c04e7,_0x5c783a);}else{if(_0x5adf48[_0xca15('0x3c')][_0x4f5d55]===_0xca15('0x7f')){_0x2112ce[_0xca15('0x47')]('i.'+_0x4f5d55+'\x20IS\x20NULL');}else{_0x2112ce['where']('i.'+_0x4f5d55+'\x20=\x20?',_0x5adf48[_0xca15('0x3c')][_0x4f5d55]);}}});}if(_0x5adf48['query'][_0xca15('0x80')]){if(_0x5adf48[_0xca15('0x3c')]['read']==0x1){_0x2112ce[_0xca15('0x66')](_0xca15('0x81'));}else{_0x2112ce[_0xca15('0x66')](_0xca15('0x82'));}}if(_0x5adf48['query'][_0xca15('0x83')]){_0x164ccb=_['isArray'](_0x5adf48[_0xca15('0x3c')]['tag'])?_0x5adf48[_0xca15('0x3c')][_0xca15('0x83')]:new Array(_0x5adf48[_0xca15('0x3c')][_0xca15('0x83')]);_0x164ccb[_0xca15('0x7a')](function(_0x1c32ea){_0x169608['or'](_0xca15('0x71'),'%,'+_0x1c32ea+',%');});}if(_0x5adf48['query']['filter']){var _0x57780b=_0x5adf48[_0xca15('0x3c')][_0xca15('0x84')]['replace']('\x5c','\x5c\x5c')[_0xca15('0x85')](/'/g,'\x27\x27');if(qs[_0xca15('0x86')](_0x57780b)){_0x5b617d['or'](_0xca15('0x87'),_0x57780b+'%');}else{_0x5b617d['or'](_0xca15('0x88'),qs[_0xca15('0x89')](_0x57780b))['or']('i.from\x20LIKE\x20?',_0x57780b+'%')['or'](_0xca15('0x8a'),_0x57780b+'%');}}}_0x2112ce[_0xca15('0x47')](_0x5b617d);_0x2112ce['group'](_0xca15('0x8b'));var _0x216459={'type':db[_0xca15('0x8c')][_0xca15('0x8d')][_0xca15('0x8e')],'raw':!![]};var _0x14ac00=_0x2112ce[_0xca15('0x8f')]();_0x14ac00[_0xca15('0x4a')]('i.id');_0x14ac00[_0xca15('0x4a')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xca15('0x64'));if(_0x24fead[_0xca15('0x45')]){_0x24fead[_0xca15('0x45')][_0xca15('0x7a')](function(_0x2fb277){var _0x13e0a2=_0x2fb277[0x0]===_0xca15('0x90')?_0x2fb277[0x0]:'i.'+_0x2fb277[0x0];_0x2112ce[_0xca15('0x45')](_0x13e0a2,_0x2fb277[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x164ccb)){_0x2112ce[_0xca15('0x66')](_0x169608);_0x14ac00[_0xca15('0x47')]('t.id\x20IN\x20?',_0x164ccb);}BPromise[_0xca15('0x91')]()[_0xca15('0x2c')](function(){if(!_0x30d36c){if(_0x5adf48[_0xca15('0x3c')][_0xca15('0x92')])return;_0x14ac00[_0xca15('0x47')](_0xca15('0x93'));_0x2112ce[_0xca15('0x47')](_0xca15('0x93'));return;}if(_0x5adf48[_0xca15('0x94')][_0xca15('0x95')]!==_0xca15('0x96'))return;return _0x5adf48[_0xca15('0x94')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0xca15('0x2c')](function(_0x4f83c1){if(_[_0xca15('0x97')](_0x4f83c1)){_0x14ac00['where'](_0xca15('0x98'));_0x2112ce[_0xca15('0x47')](_0xca15('0x98'));}else{_0x14ac00[_0xca15('0x47')](_0xca15('0x7b'),_[_0xca15('0x36')](_0x4f83c1,'id'));_0x2112ce[_0xca15('0x47')](_0xca15('0x7b'),_['map'](_0x4f83c1,'id'));}});})[_0xca15('0x2c')](function(){if(_0x5adf48[_0xca15('0x94')][_0xca15('0x95')]===_0xca15('0x96')&&!_0x30d36c&&!_0x5adf48[_0xca15('0x3c')]['OpenchannelAccountId'])return[];return db[_0xca15('0x99')][_0xca15('0x3c')](_0x14ac00['toString'](),_0x216459);})[_0xca15('0x2c')](function(_0x3ed884){_0x490262['count']=_0x3ed884[_0xca15('0x42')];if(_0x490262[_0xca15('0x23')]===0x0)return[];return db[_0xca15('0x99')][_0xca15('0x3c')](_0x25808e['toString'](),_0x216459)[_0xca15('0x2c')](function(_0xbe6d71){_0x247507=_['keyBy'](_0xbe6d71,'id');_0x216459=_[_0xca15('0x9a')](_0x216459,{'model':db[_0xca15('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5adf48[_0xca15('0x3c')][_0xca15('0x40')]){_0x24fead[_0xca15('0x41')][_0xca15('0x7a')](function(_0x47a182){_0x2112ce['field']('i.'+_0x47a182);});}else{_0x2112ce[_0xca15('0x4a')](_0xca15('0x9b'),_0xca15('0x64'));_0x2112ce[_0xca15('0x4a')](_0xca15('0x9c'),'Account.key');_0x2112ce[_0xca15('0x4a')](_0xca15('0x9d'),_0xca15('0x9e'));_0x2112ce[_0xca15('0x4a')](_0xca15('0x9f'),_0xca15('0x90'));_0x2112ce[_0xca15('0x4a')]('i.*');_0x2112ce[_0xca15('0x4a')](_0xca15('0xa0'),_0xca15('0xa1'));_0x2112ce[_0xca15('0x4a')](_0xca15('0xa2'),_0xca15('0xa3'));_0x2112ce[_0xca15('0x4a')](_0xca15('0xa4'),_0xca15('0xa5'));_0x2112ce[_0xca15('0x4a')](_0xca15('0xa6'),'Contact.phone');_0x2112ce[_0xca15('0x4a')]('c.mobile',_0xca15('0xa7'));_0x2112ce[_0xca15('0x4a')](_0xca15('0xa8'),_0xca15('0xa9'));_0x2112ce[_0xca15('0x4a')](_0xca15('0xaa'),'Owner.fullname');_0x2112ce['field'](_0xca15('0xab'),_0xca15('0xac'));_0x2112ce['field'](_0xca15('0xad'),'TagIds');}if(_0x24fead[_0xca15('0x22')])_0x2112ce[_0xca15('0x22')](_0x24fead[_0xca15('0x22')]);if(_0x24fead[_0xca15('0x24')])_0x2112ce[_0xca15('0x24')](_0x24fead[_0xca15('0x24')]);return db[_0xca15('0x99')]['query'](_0x2112ce[_0xca15('0xae')](),_0x216459);})['then'](function(_0x1f0bf1){if(_0x1f0bf1[_0xca15('0x42')]>0x0)_0x4ee451[_0xca15('0x47')](_0xca15('0xaf'),_['map'](_0x1f0bf1,'id'));return db[_0xca15('0x99')]['query'](_0x4ee451[_0xca15('0xae')](),_0x216459)['then'](function(_0x3aeb5d){var _0x1055c8=_[_0xca15('0xb0')](_0x3aeb5d,_0xca15('0xb1'));var _0x543347=[];_0x1f0bf1[_0xca15('0x7a')](function(_0xef973f){_0x543347[_0xca15('0xb2')](updateOpenchannelInteraction(_0xef973f,_0x247507,_0x1055c8));});return BPromise[_0xca15('0xb3')](_0x543347);});});})['then'](function(_0x51fd74){_0x490262[_0xca15('0xb4')]=_0x51fd74;return _0x490262;})[_0xca15('0x2c')](respondWithFilteredResult(_0x730cae,_0x24fead))[_0xca15('0xb5')](handleError(_0x730cae,null));};exports[_0xca15('0xb6')]=function(_0x7307ad,_0x1dc857){var _0x110b4e={};if(_0x7307ad[_0xca15('0x3c')][_0xca15('0x3a')]&&_0x7307ad[_0xca15('0x3c')]['type']===_0xca15('0x4c')){_0x110b4e[_0xca15('0x4c')]=_0x7307ad[_0xca15('0xb7')]['id'];}else{_0x110b4e['id']=_0x7307ad[_0xca15('0xb7')]['id'];}var _0x1f79e7={'raw':![],'where':_0x110b4e},_0x415654={};_0x415654[_0xca15('0x3f')]=_[_0xca15('0x3d')](db[_0xca15('0x37')]['rawAttributes']);_0x415654[_0xca15('0x3c')]=_[_0xca15('0x3d')](_0x7307ad[_0xca15('0x3c')]);_0x415654[_0xca15('0x48')]=_[_0xca15('0x3e')](_0x415654[_0xca15('0x3f')],_0x415654['query']);_0x1f79e7['attributes']=_[_0xca15('0x3e')](_0x415654['model'],qs[_0xca15('0x40')](_0x7307ad[_0xca15('0x3c')][_0xca15('0x40')]));_0x1f79e7[_0xca15('0x41')]=_0x1f79e7['attributes'][_0xca15('0x42')]?_0x1f79e7[_0xca15('0x41')]:_0x415654['model'];if(_0x7307ad['query'][_0xca15('0xb8')]){_0x1f79e7[_0xca15('0xb9')]=[{'all':!![]}];}_0x1f79e7=_[_0xca15('0x9a')]({},_0x1f79e7,_0x7307ad[_0xca15('0xba')]);return db['OpenchannelInteraction'][_0xca15('0x63')](_0x1f79e7)['then'](handleEntityNotFound(_0x1dc857,null))[_0xca15('0x2c')](respondWithResult(_0x1dc857,null))[_0xca15('0xb5')](handleError(_0x1dc857,null));};exports[_0xca15('0xbb')]=function(_0x2ce8b9,_0x119370){return db[_0xca15('0x37')][_0xca15('0xbb')](_0x2ce8b9[_0xca15('0x77')],{})[_0xca15('0x2c')](respondWithResult(_0x119370,0xc9))[_0xca15('0xb5')](handleError(_0x119370,null));};exports[_0xca15('0x2b')]=function(_0x766460,_0xf9a31a){if(_0x766460[_0xca15('0x77')]['id']){delete _0x766460[_0xca15('0x77')]['id'];}return db[_0xca15('0x37')]['find']({'where':{'id':_0x766460[_0xca15('0xb7')]['id']}})['then'](handleEntityNotFound(_0xf9a31a,null))[_0xca15('0x2c')](saveUpdates(_0x766460[_0xca15('0x77')],null))[_0xca15('0x2c')](respondWithResult(_0xf9a31a,null))[_0xca15('0xb5')](handleError(_0xf9a31a,null));};exports[_0xca15('0x2d')]=function(_0xe9c302,_0x3d4048){return db['OpenchannelInteraction'][_0xca15('0x63')]({'where':{'id':_0xe9c302[_0xca15('0xb7')]['id']}})['then'](handleEntityNotFound(_0x3d4048,null))['then'](removeEntity(_0x3d4048,null))[_0xca15('0xb5')](handleError(_0x3d4048,null));};exports[_0xca15('0xbc')]=function(_0x32d864,_0x5841c3){return db[_0xca15('0x37')][_0xca15('0xbc')]()[_0xca15('0x2c')](respondWithResult(_0x5841c3,null))[_0xca15('0xb5')](handleError(_0x5841c3,null));};exports[_0xca15('0xbd')]=function(_0x5a6ac6,_0xf07f9b,_0x498e78){return db[_0xca15('0xbe')][_0xca15('0x63')]({'where':{'id':_0x5a6ac6[_0xca15('0xb7')]['id']}})[_0xca15('0x2c')](handleEntityNotFound(_0xf07f9b,null))[_0xca15('0x2c')](function(_0x56b110){if(_0x56b110){return _0x56b110[_0xca15('0xbd')](_0x5a6ac6[_0xca15('0x77')][_0xca15('0xbf')],_[_0xca15('0xc0')](_0x5a6ac6[_0xca15('0x77')],['ids','id'])||{});}})[_0xca15('0x2c')](respondWithResult(_0xf07f9b,null))[_0xca15('0xb5')](handleError(_0xf07f9b,null));};exports[_0xca15('0xc1')]=function(_0x174f2b,_0x4a6974,_0x39381e){var _0x37f262={'raw':![],'where':{}};var _0x238dfc={};var _0x431d97={'count':0x0,'rows':[]};return db[_0xca15('0x37')]['findOne']({'where':{'id':_0x174f2b[_0xca15('0xb7')]['id']}})['then'](handleEntityNotFound(_0x4a6974,null))[_0xca15('0x2c')](function(_0x489e59){if(_0x489e59){_0x238dfc[_0xca15('0x3f')]=_[_0xca15('0x3d')](db['OpenchannelMessage'][_0xca15('0x38')]);_0x238dfc[_0xca15('0x3c')]=_[_0xca15('0x3d')](_0x174f2b['query']);_0x238dfc[_0xca15('0x48')]=_[_0xca15('0x3e')](_0x238dfc['model'],_0x238dfc[_0xca15('0x3c')]);_0x37f262[_0xca15('0x41')]=_['intersection'](_0x238dfc[_0xca15('0x3f')],qs[_0xca15('0x40')](_0x174f2b['query'][_0xca15('0x40')]));_0x37f262[_0xca15('0x41')]=_0x37f262['attributes'][_0xca15('0x42')]?_0x37f262[_0xca15('0x41')]:_0x238dfc[_0xca15('0x3f')];if(!_0x174f2b[_0xca15('0x3c')][_0xca15('0x43')]('nolimit')){_0x37f262[_0xca15('0x22')]=qs[_0xca15('0x22')](_0x174f2b['query']['limit']);_0x37f262[_0xca15('0x24')]=qs[_0xca15('0x24')](_0x174f2b[_0xca15('0x3c')][_0xca15('0x24')]);}_0x37f262['order']=qs['sort'](_0x174f2b[_0xca15('0x3c')][_0xca15('0x46')]);_0x37f262[_0xca15('0x47')]=qs[_0xca15('0x48')](_[_0xca15('0xc2')](_0x174f2b[_0xca15('0x3c')],_0x238dfc[_0xca15('0x48')]));_0x37f262[_0xca15('0x47')]['OpenchannelInteractionId']=_0x489e59['id'];if(_0x174f2b[_0xca15('0x3c')][_0xca15('0x84')]){_0x37f262[_0xca15('0x47')]=_[_0xca15('0x9a')](_0x37f262[_0xca15('0x47')],{'$or':_[_0xca15('0x36')](_0x37f262[_0xca15('0x41')],function(_0x1e5d97){var _0x3dacc0={};_0x3dacc0[_0x1e5d97]={'$like':'%'+_0x174f2b[_0xca15('0x3c')][_0xca15('0x84')]+'%'};return _0x3dacc0;})});}if(_0x174f2b[_0xca15('0x3c')][_0xca15('0x7d')]){var _0x1467b5=_0x174f2b['query'][_0xca15('0x7d')][_0xca15('0x6b')](',');var _0x319a20={};_0x319a20[_0x1467b5[0x0]]={'$gte':moment(_0x1467b5[0x1])[_0xca15('0xc3')](_0xca15('0xc4'))};_0x37f262[_0xca15('0x47')]=_[_0xca15('0x9a')](_0x37f262[_0xca15('0x47')],_0x319a20);}_0x37f262=_['merge']({},_0x37f262,_0x174f2b[_0xca15('0xba')]);return db[_0xca15('0xbe')][_0xca15('0x23')]({'where':_0x37f262['where']})['then'](function(_0x346df8){_0x431d97[_0xca15('0x23')]=_0x346df8;if(_0x174f2b['query']['includeAll']){_0x37f262[_0xca15('0xb9')]=[{'all':!![]}];}return db[_0xca15('0xbe')][_0xca15('0xc5')](_0x37f262);})[_0xca15('0x2c')](function(_0x260840){_0x431d97['rows']=_0x260840;return _0x431d97;});}})[_0xca15('0x2c')](respondWithFilteredResult(_0x4a6974,_0x37f262))[_0xca15('0xb5')](handleError(_0x4a6974,null));};exports[_0xca15('0xc6')]=function(_0x534f39,_0x37053b,_0x37e311){return db[_0xca15('0x37')][_0xca15('0x63')]({'where':{'id':_0x534f39[_0xca15('0xb7')]['id']}})[_0xca15('0x2c')](handleEntityNotFound(_0x37053b,null))[_0xca15('0x2c')](function(_0x3cb9d2){if(_0x3cb9d2){return _0x3cb9d2['setTags'](_0x534f39[_0xca15('0x77')][_0xca15('0xbf')],_[_0xca15('0xc0')](_0x534f39[_0xca15('0x77')],[_0xca15('0xbf'),'id'])||{})[_0xca15('0xc7')](function(){return db[_0xca15('0x70')]['findAll']({'attributes':['id',_0xca15('0x30'),_0xca15('0x4b')],'where':{'id':_0x534f39[_0xca15('0x77')]['ids']}});})['then'](function(_0x2dcf7f){socket[_0xca15('0xc8')](_0xca15('0xc9'),{'id':Number(_0x534f39['params']['id']),'tags':_0x2dcf7f||[]});return{'id':Number(_0x534f39[_0xca15('0xb7')]['id']),'tags':_0x2dcf7f||[]};});}})[_0xca15('0x2c')](respondWithResult(_0x37053b,null))[_0xca15('0xb5')](handleError(_0x37053b,null));};exports[_0xca15('0xca')]=function(_0x103597,_0x30912f,_0x5c77a4){return db[_0xca15('0x37')][_0xca15('0x63')]({'where':{'id':_0x103597[_0xca15('0xb7')]['id']}})[_0xca15('0x2c')](handleEntityNotFound(_0x30912f,null))[_0xca15('0x2c')](function(_0x3aaa9d){if(_0x3aaa9d){return _0x3aaa9d['removeTags'](_0x103597['query']['ids']);}})[_0xca15('0x2c')](respondWithStatusCode(_0x30912f,null))[_0xca15('0xb5')](handleError(_0x30912f,null));};exports[_0xca15('0xcb')]=function(_0x484466,_0x14dc9b){var _0x401f49=moment()[_0xca15('0xcc')]()[_0xca15('0xae')]();var _0x3bbe5b=path['join'](config[_0xca15('0xcd')],'server','files',_0xca15('0xce'));var _0x7781ee=path['join'](config[_0xca15('0xcd')],_0xca15('0xcf'),'files',_0xca15('0xd0'));var _0x36261d=path['join'](_0x3bbe5b,_0x401f49);var _0x2d03ae=util[_0xca15('0xc3')](_0xca15('0xd1'),_0x484466['params']['id'],_0x401f49);var _0x445cb6=path[_0xca15('0xd2')](_0x3bbe5b,_0x2d03ae);var _0x43a2a7=[];_0x43a2a7[_0xca15('0xb2')]({'model':db['User'],'as':_0xca15('0x73'),'attributes':['id','fullname'],'raw':!![]});_0x43a2a7[_0xca15('0xb2')]({'model':db[_0xca15('0xd3')],'as':_0xca15('0x69'),'attributes':['id',_0xca15('0xd4'),'lastName'],'raw':!![]});if(_0x484466[_0xca15('0x3c')][_0xca15('0xd0')]){_0x43a2a7[_0xca15('0xb2')]({'model':db[_0xca15('0xd5')],'as':'Attachment','raw':!![]});}var _0x3d3306=[{'model':db[_0xca15('0xbe')],'as':_0xca15('0xd6'),'attributes':['id',_0xca15('0x77'),_0xca15('0xd7'),_0xca15('0xd8'),'secret',_0xca15('0x80')],'include':_0x43a2a7}];_0x3d3306[_0xca15('0xb2')]({'model':db[_0xca15('0xd9')],'as':_0xca15('0xda'),'attributes':['id','name']});_0x3d3306[_0xca15('0xb2')]({'model':db['User'],'as':_0xca15('0xdb'),'attributes':['id',_0xca15('0x32')]});return db['OpenchannelInteraction'][_0xca15('0x63')]({'where':{'id':_0x484466[_0xca15('0xb7')]['id']},'include':_0x3d3306})[_0xca15('0x2c')](handleEntityNotFound(_0x14dc9b,null))[_0xca15('0x2c')](function(_0x54a582){if(_0x54a582){var _0xb116=_0x54a582[_0xca15('0xdc')]({'plain':!![]});fs[_0xca15('0xdd')](_0x36261d);var _0x28df56={'channel':_0xca15('0xde'),'account':_0xb116[_0xca15('0xda')][_0xca15('0x30')],'agent':_0xb116[_0xca15('0xdb')]?_0xb116[_0xca15('0xdb')][_0xca15('0x32')]:'N.A.','createdAt':moment(_0xb116[_0xca15('0xd7')])[_0xca15('0xc3')](_0xca15('0xc4'))[_0xca15('0xae')](),'closedAt':_0xb116[_0xca15('0xdf')]?moment(_0xb116[_0xca15('0xe0')])['format'](_0xca15('0xc4'))[_0xca15('0xae')]():'','disposition':_0xb116[_0xca15('0xe1')],'visibility':_0xb116[_0xca15('0xe2')]?_0xca15('0xe3'):_0xca15('0xe4'),'messages':_(_0xb116[_0xca15('0xd6')])[_0xca15('0x84')]({'secret':![]})[_0xca15('0x36')](function(_0x31a664){if(_0x31a664[_0xca15('0xd5')]){var _0x1fd446=path[_0xca15('0xd2')](_0x7781ee,_0x31a664[_0xca15('0xd5')][_0xca15('0xe5')]);if(fs[_0xca15('0xe6')](_0x1fd446)){fs[_0xca15('0xe7')](_0x1fd446)[_0xca15('0xe8')](fs[_0xca15('0xe9')](path[_0xca15('0xd2')](_0x36261d,_0x31a664[_0xca15('0xd5')][_0xca15('0xe5')])));}}return{'date':moment(_0x31a664[_0xca15('0xd7')])[_0xca15('0xc3')](_0xca15('0xc4'))[_0xca15('0xae')](),'sender':_0x31a664[_0xca15('0xd8')]==='out'?_0x31a664[_0xca15('0x73')]?_0x31a664[_0xca15('0x73')][_0xca15('0x32')]:_0xca15('0xea'):_0x31a664['Contact'][_0xca15('0xd4')]+(_0x31a664[_0xca15('0x69')][_0xca15('0xeb')]?'\x20'+_0x31a664[_0xca15('0x69')]['lastName']:''),'body':_0x31a664[_0xca15('0xd5')]?_0x31a664[_0xca15('0xd5')][_0xca15('0xe5')]:_0x31a664[_0xca15('0x77')],'direction':_0x31a664[_0xca15('0xd8')]===_0xca15('0xec')?'A':'C','secret':_0x31a664[_0xca15('0xed')],'read':_0x31a664['read'],'attachment':_0x31a664['Attachment']};})[_0xca15('0x65')]()};return ejs['renderFile'](path[_0xca15('0xd2')](config[_0xca15('0xcd')],_0xca15('0xcf'),_0xca15('0xee'),_0xca15('0xef')),{'interaction':_0x28df56})['then'](function(_0x54f2bb){var _0x49076b=path[_0xca15('0xd2')](_0x36261d,'transcript-'+_0xb116['id']+'-'+_0x401f49+_0xca15('0xf0'));var _0x49cb98={'path':_0x49076b,'channel':_0xca15('0xde'),'interactionId':_0xb116['id']};return pdf[_0xca15('0xf1')](_0x54f2bb,_0x49cb98);})['then'](function(){return new BPromise(function(_0x551ef0,_0x538c94){zipdir(_0x36261d,{'saveTo':_0x445cb6},function(_0x37543e,_0x3bf784){if(_0x37543e)return _0x538c94(_0x37543e);return _0x551ef0(_0x3bf784);});})[_0xca15('0x2c')](function(){return new BPromise(function(_0xb20c7d,_0x3f7d96){rimraf(_0x36261d,function(_0x568940){if(_0x568940)_0x3f7d96(_0x568940);return _0xb20c7d();});});})[_0xca15('0x2c')](function(){return _0x14dc9b[_0xca15('0xcb')](_0x445cb6,_0x2d03ae,function(_0x5b90de){if(_0x5b90de){console[_0xca15('0xf2')](_0xca15('0xf3'),_0x5b90de);}else{fs[_0xca15('0xf4')](_0x445cb6);}});});});}else{return _0x14dc9b[_0xca15('0x1f')](0xc8);}})[_0xca15('0xb5')](handleError(_0x14dc9b,null));};
\ No newline at end of file
+var _0xcc3f=['unreadMessages','value','having','`\x20=\x200','`\x20>\x200','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','end','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$lte','null','\x20IS\x20NULL','read','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','user','sequelize','toString','merge','OpenchannelInteraction','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','push','all','rows','from','params','rawAttributes','includeAll','include','options','create','update','describe','addMessage','OpenchannelMessage','ids','getMessages','findOne','hasOwnProperty','OpenchannelInteractionId','$gte','format','findAll','addTags','emit','openchannelInteractionTags:save','removeTags','download','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','User','CmContact','Contact','lastName','Attachment','Messages','direction','secret','Account','Owner','get','mkdirSync','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','threadId','Public','createReadStream','pipe','createWriteStream','basename','out','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','err','unlinkSync','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','./openchannelInteraction.socket','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','then','destroy','error','stack','name','Users','map','fullname','TagIds','Tags','split','catch','index','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','select','field','color','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','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','openchannel_interaction_has_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find'];(function(_0x3cf5a3,_0x5a4492){var _0x39ba2d=function(_0x3ed989){while(--_0x3ed989){_0x3cf5a3['push'](_0x3cf5a3['shift']());}};_0x39ba2d(++_0x5a4492);}(_0xcc3f,0x16d));var _0xfcc3=function(_0x3d3bfb,_0x225acc){_0x3d3bfb=_0x3d3bfb-0x0;var _0x2a3ddc=_0xcc3f[_0x3d3bfb];return _0x2a3ddc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfcc3('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfcc3('0x1'));var moment=require(_0xfcc3('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xfcc3('0x3'));var util=require(_0xfcc3('0x4'));var path=require(_0xfcc3('0x5'));var sox=require(_0xfcc3('0x6'));var csv=require(_0xfcc3('0x7'));var ejs=require(_0xfcc3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfcc3('0x9'));var crypto=require('crypto');var jsforce=require(_0xfcc3('0xa'));var deskjs=require(_0xfcc3('0xb'));var toCsv=require(_0xfcc3('0x7'));var querystring=require(_0xfcc3('0xc'));var Papa=require(_0xfcc3('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfcc3('0xe'));var as=require(_0xfcc3('0xf'));var pdf=require(_0xfcc3('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfcc3('0x11'))(_0xfcc3('0x12'));var utils=require(_0xfcc3('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xfcc3('0x14'));var db=require(_0xfcc3('0x15'))['db'];config[_0xfcc3('0x16')]=_[_0xfcc3('0x17')](config[_0xfcc3('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xfcc3('0x18'))['register'](socket);function respondWithStatusCode(_0x3d73c6,_0x365c35){_0x365c35=_0x365c35||0xcc;return function(_0x12db15){if(_0x12db15){return _0x3d73c6[_0xfcc3('0x19')](_0x365c35);}return _0x3d73c6['status'](_0x365c35)['end']();};}function respondWithResult(_0x242dd3,_0x1369bd){_0x1369bd=_0x1369bd||0xc8;return function(_0x2d05a2){if(_0x2d05a2){return _0x242dd3[_0xfcc3('0x1a')](_0x1369bd)[_0xfcc3('0x1b')](_0x2d05a2);}};}function respondWithFilteredResult(_0x2b0455,_0x320b92){return function(_0x3f2cb7){if(_0x3f2cb7){var _0x395774=typeof _0x320b92[_0xfcc3('0x1c')]===_0xfcc3('0x1d')&&typeof _0x320b92[_0xfcc3('0x1e')]===_0xfcc3('0x1d');var _0x2d20fc=_0x3f2cb7[_0xfcc3('0x1f')];var _0x183f48=_0x395774?0x0:_0x320b92['offset'];var _0x2c0a8e=_0x395774?_0x3f2cb7[_0xfcc3('0x1f')]:_0x320b92[_0xfcc3('0x1c')]+_0x320b92[_0xfcc3('0x1e')];var _0x5bc2c5;if(_0x2c0a8e>=_0x2d20fc){_0x2c0a8e=_0x2d20fc;_0x5bc2c5=0xc8;}else{_0x5bc2c5=0xce;}_0x2b0455[_0xfcc3('0x1a')](_0x5bc2c5);return _0x2b0455[_0xfcc3('0x20')]('Content-Range',_0x183f48+'-'+_0x2c0a8e+'/'+_0x2d20fc)['json'](_0x3f2cb7);}return null;};}function patchUpdates(_0xdf42e3){return function(_0x2acbab){try{jsonpatch[_0xfcc3('0x21')](_0x2acbab,_0xdf42e3,!![]);}catch(_0x994cac){return BPromise[_0xfcc3('0x22')](_0x994cac);}return _0x2acbab['save']();};}function saveUpdates(_0x4fc41c,_0x11fd56){return function(_0x882439){if(_0x882439){return _0x882439['update'](_0x4fc41c)[_0xfcc3('0x23')](function(_0x29637d){return _0x29637d;});}return null;};}function removeEntity(_0x122d31,_0xc4f263){return function(_0x2a98d2){if(_0x2a98d2){return _0x2a98d2[_0xfcc3('0x24')]()['then'](function(){_0x122d31[_0xfcc3('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f8df1,_0x268306){return function(_0x31915f){if(!_0x31915f){_0x4f8df1[_0xfcc3('0x19')](0x194);}return _0x31915f;};}function handleError(_0xa63c5f,_0x3b1c61){_0x3b1c61=_0x3b1c61||0x1f4;return function(_0x5d2709){logger[_0xfcc3('0x25')](_0x5d2709[_0xfcc3('0x26')]);if(_0x5d2709[_0xfcc3('0x27')]){delete _0x5d2709[_0xfcc3('0x27')];}_0xa63c5f[_0xfcc3('0x1a')](_0x3b1c61)['send'](_0x5d2709);};}function getInteractionUsers(_0x1f6fcf,_0xd3b18e){return new BPromise(function(_0x57e973,_0x3554dc){try{if(_0xd3b18e[_0x1f6fcf['id']]){_0x1f6fcf[_0xfcc3('0x28')]=_[_0xfcc3('0x29')](_0xd3b18e[_0x1f6fcf['id']],function(_0x3c2ae1){return{'id':_0x3c2ae1['id'],'fullname':_0x3c2ae1[_0xfcc3('0x2a')]};});}}catch(_0x421a71){_0x3554dc(_0x421a71);}_0x57e973(_0x1f6fcf);});}function getInteractionTags(_0x161b61,_0xbb6c48){return new BPromise(function(_0x1ac856,_0x5b703a){try{if(_0x161b61[_0xfcc3('0x2b')]){_0x161b61[_0xfcc3('0x2c')]=[];_0x161b61[_0xfcc3('0x2b')][_0xfcc3('0x2d')](',')['forEach'](function(_0x3d1541){_0x161b61[_0xfcc3('0x2c')]['push'](_0xbb6c48[_0x3d1541]);});}delete _0x161b61[_0xfcc3('0x2b')];}catch(_0xfea263){_0x5b703a(_0xfea263);}_0x1ac856(_0x161b61);});}function updateOpenchannelInteraction(_0x2755c3,_0x2b646b,_0x52c5a9){return new BPromise(function(_0x12e554,_0x56fc0d){return getInteractionUsers(_0x2755c3,_0x52c5a9)[_0xfcc3('0x23')](function(_0x4884b8){return getInteractionTags(_0x4884b8,_0x2b646b);})[_0xfcc3('0x23')](function(_0x5807ea){_0x12e554(_0x5807ea);})[_0xfcc3('0x2e')](function(_0x195862){_0x56fc0d(_0x195862);});});}exports[_0xfcc3('0x2f')]=function(_0x4ff600,_0x439aa2){var _0x3c3e27={},_0x315982={},_0x7e19da={'count':0x0,'rows':[]};var _0x3db529=_[_0xfcc3('0x29')](db['OpenchannelInteraction']['rawAttributes'],function(_0x445601){return{'name':_0x445601[_0xfcc3('0x30')],'type':_0x445601[_0xfcc3('0x31')][_0xfcc3('0x32')]};});_0x315982[_0xfcc3('0x33')]=_[_0xfcc3('0x29')](_0x3db529,_0xfcc3('0x27'));_0x315982[_0xfcc3('0x34')]=_[_0xfcc3('0x35')](_0x4ff600['query']);_0x315982[_0xfcc3('0x36')]=_[_0xfcc3('0x37')](_0x315982[_0xfcc3('0x33')],_0x315982[_0xfcc3('0x34')]);_0x3c3e27[_0xfcc3('0x38')]=_['intersection'](_0x315982[_0xfcc3('0x33')],qs['fields'](_0x4ff600['query'][_0xfcc3('0x39')]));_0x3c3e27[_0xfcc3('0x38')]=_0x3c3e27[_0xfcc3('0x38')][_0xfcc3('0x3a')]?_0x3c3e27[_0xfcc3('0x38')]:_0x315982[_0xfcc3('0x33')];if(!_0x4ff600['query']['hasOwnProperty'](_0xfcc3('0x3b'))){_0x3c3e27[_0xfcc3('0x1e')]=qs[_0xfcc3('0x1e')](_0x4ff600[_0xfcc3('0x34')]['limit']);_0x3c3e27[_0xfcc3('0x1c')]=qs[_0xfcc3('0x1c')](_0x4ff600[_0xfcc3('0x34')]['offset']);}_0x3c3e27['order']=qs[_0xfcc3('0x3c')](_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x3c')]);_0x3c3e27[_0xfcc3('0x3d')]=qs[_0xfcc3('0x36')](_[_0xfcc3('0x3e')](_0x4ff600[_0xfcc3('0x34')],_0x315982[_0xfcc3('0x36')]),_0x3db529);var _0xb02881=[];var _0x20bcaa=squel[_0xfcc3('0x3f')]()[_0xfcc3('0x40')]('id')[_0xfcc3('0x40')](_0xfcc3('0x27'))[_0xfcc3('0x40')](_0xfcc3('0x41'))['from'](_0xfcc3('0x42'));var _0x1496d6=squel[_0xfcc3('0x3f')]()[_0xfcc3('0x40')](_0xfcc3('0x43'))[_0xfcc3('0x40')](_0xfcc3('0x44'))['field'](_0xfcc3('0x45'))['from']('user_has_openchannel_interactions','ui')[_0xfcc3('0x46')](_0xfcc3('0x47'),'u',_0xfcc3('0x48'));var _0x2a9036=squel[_0xfcc3('0x3f')]()['from'](_0xfcc3('0x49'),'i')[_0xfcc3('0x46')](_0xfcc3('0x4a'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xfcc3('0x46')](_0xfcc3('0x47'),'o',_0xfcc3('0x4b'))['left_join'](_0xfcc3('0x4c'),'a',_0xfcc3('0x4d'))[_0xfcc3('0x46')](_0xfcc3('0x4e'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0xfcc3('0x46')](_0xfcc3('0x4f'),'it','it.OpenchannelInteractionId\x20=\x20i.id')[_0xfcc3('0x46')](_0xfcc3('0x42'),'t',_0xfcc3('0x50'));var _0x15c0e3=squel[_0xfcc3('0x51')]();var _0x2e6e0d=[];var _0x1eb71d=squel['expr']();var _0x5d46b1;if(_0x4ff600[_0xfcc3('0x34')]['search']){_0x5d46b1=as[_0xfcc3('0x52')](_0x4ff600['query'][_0xfcc3('0x53')]);var _0x15fc59=_0x5d46b1[_0xfcc3('0x54')];for(var _0x4dfdf5=0x0;_0x4dfdf5<_0x5d46b1[_0xfcc3('0x55')][_0xfcc3('0x3a')];_0x4dfdf5++){var _0x163748=_0x5d46b1[_0xfcc3('0x55')][_0x4dfdf5];var _0x204ef7='i';var _0x97867a=_[_0xfcc3('0x56')](_0x3db529,[_0xfcc3('0x27'),_0x163748[_0xfcc3('0x40')]]);if(!_0x97867a){switch(_0x163748[_0xfcc3('0x40')]){case _0xfcc3('0x57'):if(_0x163748[_0xfcc3('0x58')]==0x1){_0x2a9036[_0xfcc3('0x59')]('`'+_0x163748[_0xfcc3('0x40')]+_0xfcc3('0x5a'));}else{_0x2a9036[_0xfcc3('0x59')]('`'+_0x163748[_0xfcc3('0x40')]+_0xfcc3('0x5b'));}break;case'Contact':if(_0x163748['operator']===_0xfcc3('0x5c')){if(_0x163748['value'][_0xfcc3('0x2d')]('\x20')[_0xfcc3('0x3a')]>0x1){_0x15c0e3[_0x15fc59](_0xfcc3('0x5d'),qs[_0xfcc3('0x5e')](_0x163748[_0xfcc3('0x58')]),null);}else{var _0x486cbd='%'+_0x163748[_0xfcc3('0x58')]+'%';_0x15c0e3[_0x15fc59](_0xfcc3('0x5f'),_0x486cbd,_0x486cbd,_0x486cbd);}}else{_0x97867a=_['find'](_0x3db529,[_0xfcc3('0x27'),'ContactId']);_0x163748['field']=_0xfcc3('0x60');_0x218ec8=as[_0xfcc3('0x61')](_0x204ef7,_0x97867a[_0xfcc3('0x31')],_0x163748);_0x15c0e3[_0x15fc59](_0x218ec8[_0xfcc3('0x62')],_0x218ec8['value'][_0xfcc3('0x63')],_0x218ec8[_0xfcc3('0x58')][_0xfcc3('0x64')]);}break;case _0xfcc3('0x65'):var _0x356077=_0x163748[_0xfcc3('0x58')][_0xfcc3('0x2d')](',')['map'](function(_0x14d438){return Number(_0x14d438);});_0x356077[_0xfcc3('0x66')](function(_0x1ed563){_0x1eb71d['or'](_0xfcc3('0x67'),'%,'+_0x1ed563+',%');});_0x2e6e0d=_[_0xfcc3('0x68')](_0x2e6e0d,_0x356077);break;case'User':if(_0x163748[_0xfcc3('0x69')]===_0xfcc3('0x5c')){_0x15c0e3[_0x15fc59](_0xfcc3('0x6a'),'%'+_0x163748[_0xfcc3('0x58')]+'%',null);}else{_0x97867a=_[_0xfcc3('0x56')](_0x3db529,[_0xfcc3('0x27'),_0xfcc3('0x6b')]);_0x163748[_0xfcc3('0x40')]=_0xfcc3('0x6b');_0x218ec8=as[_0xfcc3('0x61')](_0x204ef7,_0x97867a['type'],_0x163748);_0x15c0e3[_0x15fc59](_0x218ec8['text'],_0x218ec8[_0xfcc3('0x58')][_0xfcc3('0x63')],_0x218ec8[_0xfcc3('0x58')]['end']);}break;case _0xfcc3('0x6c'):_0x218ec8=as[_0xfcc3('0x61')]('me',null,_0x163748);_0x15c0e3[_0x15fc59](_0x218ec8[_0xfcc3('0x62')],_0x218ec8[_0xfcc3('0x58')][_0xfcc3('0x63')],_0x218ec8['value'][_0xfcc3('0x64')]);break;}}else{var _0x218ec8=as[_0xfcc3('0x61')](_0x204ef7,_0x97867a[_0xfcc3('0x31')],_0x163748);_0x15c0e3[_0x15fc59](_0x218ec8[_0xfcc3('0x62')],_0x218ec8[_0xfcc3('0x58')][_0xfcc3('0x63')],_0x218ec8[_0xfcc3('0x58')][_0xfcc3('0x64')]);}}}else{var _0x306081=_(_0x4ff600[_0xfcc3('0x34')])[_0xfcc3('0x35')]()['map'](function(_0x580c49){return _['some'](_0x3db529,[_0xfcc3('0x27'),_0x580c49])?_0x580c49:undefined;})['compact']()[_0xfcc3('0x58')]();if(!_[_0xfcc3('0x6d')](_0x306081)){_0x306081[_0xfcc3('0x66')](function(_0x127c4a){if(_0x127c4a===_0xfcc3('0x6e')){_0x2a9036[_0xfcc3('0x3d')](_0xfcc3('0x6f'),[][_0xfcc3('0x70')](_0x4ff600[_0xfcc3('0x34')][_0x127c4a]));}else if(_0x127c4a===_0xfcc3('0x71')){var _0x5b0cbf=JSON[_0xfcc3('0x72')](_0x4ff600[_0xfcc3('0x34')][_0x127c4a])['$gte'];var _0x2c5ca3=JSON[_0xfcc3('0x72')](_0x4ff600['query'][_0x127c4a])[_0xfcc3('0x73')];_0x2a9036[_0xfcc3('0x3d')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5b0cbf,_0x2c5ca3);}else{if(_0x4ff600[_0xfcc3('0x34')][_0x127c4a]===_0xfcc3('0x74')){_0x2a9036['where']('i.'+_0x127c4a+_0xfcc3('0x75'));}else{_0x2a9036[_0xfcc3('0x3d')]('i.'+_0x127c4a+'\x20=\x20?',_0x4ff600['query'][_0x127c4a]);}}});}if(_0x4ff600['query'][_0xfcc3('0x76')]){if(_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x76')]==0x1){_0x2a9036[_0xfcc3('0x59')]('`unreadMessages`\x20=\x200');}else{_0x2a9036[_0xfcc3('0x59')](_0xfcc3('0x77'));}}if(_0x4ff600[_0xfcc3('0x34')]['tag']){_0x2e6e0d=_['isArray'](_0x4ff600['query'][_0xfcc3('0x78')])?_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x78')]:new Array(_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x78')]);_0x2e6e0d[_0xfcc3('0x66')](function(_0x3aaf18){_0x1eb71d['or'](_0xfcc3('0x67'),'%,'+_0x3aaf18+',%');});}if(_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x79')]){var _0x46037f=_0x4ff600['query'][_0xfcc3('0x79')][_0xfcc3('0x7a')]('\x5c','\x5c\x5c')[_0xfcc3('0x7a')](/'/g,'\x27\x27');if(qs[_0xfcc3('0x7b')](_0x46037f)){_0x15c0e3['or']('i.id\x20LIKE\x20?',_0x46037f+'%');}else{_0x15c0e3['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xfcc3('0x5e')](_0x46037f))['or']('i.from\x20LIKE\x20?',_0x46037f+'%')['or'](_0xfcc3('0x7c'),_0x46037f+'%');}}}_0x2a9036[_0xfcc3('0x3d')](_0x15c0e3);_0x2a9036[_0xfcc3('0x7d')]('i.id');var _0x36334d={'type':db[_0xfcc3('0x7e')]['QueryTypes']['SELECT'],'raw':!![]};var _0x161826=_0x2a9036['clone']();_0x161826[_0xfcc3('0x40')]('i.id');_0x161826[_0xfcc3('0x40')](_0xfcc3('0x7f'),_0xfcc3('0x57'));if(_0x3c3e27[_0xfcc3('0x80')]){_0x3c3e27[_0xfcc3('0x80')]['forEach'](function(_0x277776){var _0x42313b=_0x277776[0x0]===_0xfcc3('0x81')?_0x277776[0x0]:'i.'+_0x277776[0x0];_0x2a9036['order'](_0x42313b,_0x277776[0x1]==='DESC'?![]:!![]);});}if(!_[_0xfcc3('0x6d')](_0x2e6e0d)){_0x2a9036['having'](_0x1eb71d);_0x161826[_0xfcc3('0x3d')](_0xfcc3('0x82'),_0x2e6e0d);}BPromise[_0xfcc3('0x83')]()[_0xfcc3('0x23')](function(){if(!_0x5d46b1){if(_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x6e')])return;_0x161826[_0xfcc3('0x3d')](_0xfcc3('0x84'));_0x2a9036[_0xfcc3('0x3d')](_0xfcc3('0x84'));return;}if(_0x4ff600['user'][_0xfcc3('0x85')]!==_0xfcc3('0x86'))return;return _0x4ff600['user'][_0xfcc3('0x87')]({'attributes':['id'],'raw':!![]})[_0xfcc3('0x23')](function(_0x385d51){if(_[_0xfcc3('0x6d')](_0x385d51)){_0x161826['where'](_0xfcc3('0x88'));_0x2a9036[_0xfcc3('0x3d')](_0xfcc3('0x88'));}else{_0x161826[_0xfcc3('0x3d')](_0xfcc3('0x6f'),_['map'](_0x385d51,'id'));_0x2a9036[_0xfcc3('0x3d')](_0xfcc3('0x6f'),_[_0xfcc3('0x29')](_0x385d51,'id'));}});})[_0xfcc3('0x23')](function(){if(_0x4ff600[_0xfcc3('0x89')]['role']===_0xfcc3('0x86')&&!_0x5d46b1&&!_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x6e')])return[];return db[_0xfcc3('0x8a')][_0xfcc3('0x34')](_0x161826[_0xfcc3('0x8b')](),_0x36334d);})['then'](function(_0x22becc){_0x7e19da[_0xfcc3('0x1f')]=_0x22becc[_0xfcc3('0x3a')];if(_0x7e19da['count']===0x0)return[];return db[_0xfcc3('0x8a')]['query'](_0x20bcaa['toString'](),_0x36334d)[_0xfcc3('0x23')](function(_0x123b11){_0xb02881=_['keyBy'](_0x123b11,'id');_0x36334d=_[_0xfcc3('0x8c')](_0x36334d,{'model':db[_0xfcc3('0x8d')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4ff600[_0xfcc3('0x34')][_0xfcc3('0x39')]){_0x3c3e27[_0xfcc3('0x38')][_0xfcc3('0x66')](function(_0x33eb4d){_0x2a9036[_0xfcc3('0x40')]('i.'+_0x33eb4d);});}else{_0x2a9036['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xfcc3('0x57'));_0x2a9036['field'](_0xfcc3('0x8e'),_0xfcc3('0x8f'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x90'),_0xfcc3('0x91'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x92'),'contactName');_0x2a9036[_0xfcc3('0x40')]('i.*');_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x93'),_0xfcc3('0x94'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x95'),_0xfcc3('0x96'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x97'),_0xfcc3('0x98'));_0x2a9036['field']('c.phone',_0xfcc3('0x99'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x9a'),_0xfcc3('0x9b'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0x9c'),_0xfcc3('0x9d'));_0x2a9036['field'](_0xfcc3('0x9e'),'Owner.fullname');_0x2a9036[_0xfcc3('0x40')]('o.internal',_0xfcc3('0x9f'));_0x2a9036[_0xfcc3('0x40')](_0xfcc3('0xa0'),_0xfcc3('0x2b'));}if(_0x3c3e27[_0xfcc3('0x1e')])_0x2a9036['limit'](_0x3c3e27[_0xfcc3('0x1e')]);if(_0x3c3e27['offset'])_0x2a9036[_0xfcc3('0x1c')](_0x3c3e27['offset']);return db[_0xfcc3('0x8a')][_0xfcc3('0x34')](_0x2a9036[_0xfcc3('0x8b')](),_0x36334d);})['then'](function(_0x1bfae9){if(_0x1bfae9['length']>0x0)_0x1496d6[_0xfcc3('0x3d')](_0xfcc3('0xa1'),_['map'](_0x1bfae9,'id'));return db['sequelize'][_0xfcc3('0x34')](_0x1496d6[_0xfcc3('0x8b')](),_0x36334d)['then'](function(_0x4639f8){var _0x1f87e2=_[_0xfcc3('0xa2')](_0x4639f8,'OpenchannelInteractionId');var _0x31174d=[];_0x1bfae9[_0xfcc3('0x66')](function(_0x28a8f4){_0x31174d[_0xfcc3('0xa3')](updateOpenchannelInteraction(_0x28a8f4,_0xb02881,_0x1f87e2));});return BPromise[_0xfcc3('0xa4')](_0x31174d);});});})[_0xfcc3('0x23')](function(_0x56147c){_0x7e19da[_0xfcc3('0xa5')]=_0x56147c;return _0x7e19da;})['then'](respondWithFilteredResult(_0x439aa2,_0x3c3e27))[_0xfcc3('0x2e')](handleError(_0x439aa2,null));};exports['show']=function(_0x8e27a,_0x1c9c33){var _0x33fb59={};if(_0x8e27a[_0xfcc3('0x34')][_0xfcc3('0x31')]&&_0x8e27a[_0xfcc3('0x34')]['type']===_0xfcc3('0xa6')){_0x33fb59[_0xfcc3('0xa6')]=_0x8e27a[_0xfcc3('0xa7')]['id'];}else{_0x33fb59['id']=_0x8e27a['params']['id'];}var _0x4da8f3={'raw':![],'where':_0x33fb59},_0x5c5fcd={};_0x5c5fcd[_0xfcc3('0x33')]=_[_0xfcc3('0x35')](db[_0xfcc3('0x8d')][_0xfcc3('0xa8')]);_0x5c5fcd[_0xfcc3('0x34')]=_[_0xfcc3('0x35')](_0x8e27a[_0xfcc3('0x34')]);_0x5c5fcd[_0xfcc3('0x36')]=_[_0xfcc3('0x37')](_0x5c5fcd['model'],_0x5c5fcd[_0xfcc3('0x34')]);_0x4da8f3[_0xfcc3('0x38')]=_[_0xfcc3('0x37')](_0x5c5fcd[_0xfcc3('0x33')],qs[_0xfcc3('0x39')](_0x8e27a[_0xfcc3('0x34')][_0xfcc3('0x39')]));_0x4da8f3[_0xfcc3('0x38')]=_0x4da8f3[_0xfcc3('0x38')][_0xfcc3('0x3a')]?_0x4da8f3[_0xfcc3('0x38')]:_0x5c5fcd['model'];if(_0x8e27a[_0xfcc3('0x34')][_0xfcc3('0xa9')]){_0x4da8f3[_0xfcc3('0xaa')]=[{'all':!![]}];}_0x4da8f3=_[_0xfcc3('0x8c')]({},_0x4da8f3,_0x8e27a[_0xfcc3('0xab')]);return db[_0xfcc3('0x8d')][_0xfcc3('0x56')](_0x4da8f3)[_0xfcc3('0x23')](handleEntityNotFound(_0x1c9c33,null))[_0xfcc3('0x23')](respondWithResult(_0x1c9c33,null))['catch'](handleError(_0x1c9c33,null));};exports['create']=function(_0x4ffa34,_0x24ddb8){return db['OpenchannelInteraction'][_0xfcc3('0xac')](_0x4ffa34[_0xfcc3('0x6c')],{})['then'](respondWithResult(_0x24ddb8,0xc9))[_0xfcc3('0x2e')](handleError(_0x24ddb8,null));};exports[_0xfcc3('0xad')]=function(_0x5c0b04,_0x213b5d){if(_0x5c0b04[_0xfcc3('0x6c')]['id']){delete _0x5c0b04[_0xfcc3('0x6c')]['id'];}return db[_0xfcc3('0x8d')]['find']({'where':{'id':_0x5c0b04[_0xfcc3('0xa7')]['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x213b5d,null))[_0xfcc3('0x23')](saveUpdates(_0x5c0b04[_0xfcc3('0x6c')],null))[_0xfcc3('0x23')](respondWithResult(_0x213b5d,null))[_0xfcc3('0x2e')](handleError(_0x213b5d,null));};exports[_0xfcc3('0x24')]=function(_0xc56610,_0x3499a3){return db['OpenchannelInteraction'][_0xfcc3('0x56')]({'where':{'id':_0xc56610['params']['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x3499a3,null))[_0xfcc3('0x23')](removeEntity(_0x3499a3,null))[_0xfcc3('0x2e')](handleError(_0x3499a3,null));};exports[_0xfcc3('0xae')]=function(_0x2a9b1b,_0x449c3a){return db[_0xfcc3('0x8d')][_0xfcc3('0xae')]()[_0xfcc3('0x23')](respondWithResult(_0x449c3a,null))[_0xfcc3('0x2e')](handleError(_0x449c3a,null));};exports[_0xfcc3('0xaf')]=function(_0x1d402f,_0x2b1efb,_0x2c5537){return db[_0xfcc3('0xb0')][_0xfcc3('0x56')]({'where':{'id':_0x1d402f[_0xfcc3('0xa7')]['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x2b1efb,null))[_0xfcc3('0x23')](function(_0x4e17d9){if(_0x4e17d9){return _0x4e17d9[_0xfcc3('0xaf')](_0x1d402f[_0xfcc3('0x6c')][_0xfcc3('0xb1')],_['omit'](_0x1d402f[_0xfcc3('0x6c')],[_0xfcc3('0xb1'),'id'])||{});}})[_0xfcc3('0x23')](respondWithResult(_0x2b1efb,null))[_0xfcc3('0x2e')](handleError(_0x2b1efb,null));};exports[_0xfcc3('0xb2')]=function(_0x22a06e,_0x4c13f0,_0x4ed5ff){var _0x32cd5a={'raw':![],'where':{}};var _0x321929={};var _0x2d7880={'count':0x0,'rows':[]};return db[_0xfcc3('0x8d')][_0xfcc3('0xb3')]({'where':{'id':_0x22a06e['params']['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x4c13f0,null))[_0xfcc3('0x23')](function(_0x3d92c2){if(_0x3d92c2){_0x321929[_0xfcc3('0x33')]=_[_0xfcc3('0x35')](db[_0xfcc3('0xb0')][_0xfcc3('0xa8')]);_0x321929[_0xfcc3('0x34')]=_[_0xfcc3('0x35')](_0x22a06e[_0xfcc3('0x34')]);_0x321929['filters']=_[_0xfcc3('0x37')](_0x321929[_0xfcc3('0x33')],_0x321929['query']);_0x32cd5a[_0xfcc3('0x38')]=_['intersection'](_0x321929[_0xfcc3('0x33')],qs[_0xfcc3('0x39')](_0x22a06e[_0xfcc3('0x34')][_0xfcc3('0x39')]));_0x32cd5a[_0xfcc3('0x38')]=_0x32cd5a[_0xfcc3('0x38')][_0xfcc3('0x3a')]?_0x32cd5a[_0xfcc3('0x38')]:_0x321929[_0xfcc3('0x33')];if(!_0x22a06e[_0xfcc3('0x34')][_0xfcc3('0xb4')](_0xfcc3('0x3b'))){_0x32cd5a[_0xfcc3('0x1e')]=qs[_0xfcc3('0x1e')](_0x22a06e[_0xfcc3('0x34')][_0xfcc3('0x1e')]);_0x32cd5a[_0xfcc3('0x1c')]=qs[_0xfcc3('0x1c')](_0x22a06e[_0xfcc3('0x34')]['offset']);}_0x32cd5a['order']=qs[_0xfcc3('0x3c')](_0x22a06e[_0xfcc3('0x34')]['sort']);_0x32cd5a[_0xfcc3('0x3d')]=qs[_0xfcc3('0x36')](_[_0xfcc3('0x3e')](_0x22a06e[_0xfcc3('0x34')],_0x321929[_0xfcc3('0x36')]));_0x32cd5a[_0xfcc3('0x3d')][_0xfcc3('0xb5')]=_0x3d92c2['id'];if(_0x22a06e[_0xfcc3('0x34')][_0xfcc3('0x79')]){_0x32cd5a[_0xfcc3('0x3d')]=_[_0xfcc3('0x8c')](_0x32cd5a[_0xfcc3('0x3d')],{'$or':_[_0xfcc3('0x29')](_0x32cd5a['attributes'],function(_0x56af81){var _0x18ac9a={};_0x18ac9a[_0x56af81]={'$like':'%'+_0x22a06e[_0xfcc3('0x34')][_0xfcc3('0x79')]+'%'};return _0x18ac9a;})});}if(_0x22a06e['query'][_0xfcc3('0xb6')]){var _0x5caddc=_0x22a06e['query'][_0xfcc3('0xb6')][_0xfcc3('0x2d')](',');var _0x1b945c={};_0x1b945c[_0x5caddc[0x0]]={'$gte':moment(_0x5caddc[0x1])[_0xfcc3('0xb7')]('YYYY-MM-DD\x20HH:mm:ss')};_0x32cd5a[_0xfcc3('0x3d')]=_[_0xfcc3('0x8c')](_0x32cd5a[_0xfcc3('0x3d')],_0x1b945c);}_0x32cd5a=_[_0xfcc3('0x8c')]({},_0x32cd5a,_0x22a06e[_0xfcc3('0xab')]);return db[_0xfcc3('0xb0')][_0xfcc3('0x1f')]({'where':_0x32cd5a[_0xfcc3('0x3d')]})[_0xfcc3('0x23')](function(_0x421fe8){_0x2d7880[_0xfcc3('0x1f')]=_0x421fe8;if(_0x22a06e[_0xfcc3('0x34')]['includeAll']){_0x32cd5a[_0xfcc3('0xaa')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0xfcc3('0xb8')](_0x32cd5a);})[_0xfcc3('0x23')](function(_0x5ca33c){_0x2d7880[_0xfcc3('0xa5')]=_0x5ca33c;return _0x2d7880;});}})[_0xfcc3('0x23')](respondWithFilteredResult(_0x4c13f0,_0x32cd5a))['catch'](handleError(_0x4c13f0,null));};exports[_0xfcc3('0xb9')]=function(_0x22f0db,_0x269439,_0x29fa56){return db[_0xfcc3('0x8d')][_0xfcc3('0x56')]({'where':{'id':_0x22f0db['params']['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x269439,null))['then'](function(_0x279834){if(_0x279834){return _0x279834['setTags'](_0x22f0db[_0xfcc3('0x6c')][_0xfcc3('0xb1')],_['omit'](_0x22f0db[_0xfcc3('0x6c')],['ids','id'])||{})['spread'](function(){return db[_0xfcc3('0x65')][_0xfcc3('0xb8')]({'attributes':['id',_0xfcc3('0x27'),_0xfcc3('0x41')],'where':{'id':_0x22f0db['body'][_0xfcc3('0xb1')]}});})[_0xfcc3('0x23')](function(_0x3d79c1){socket[_0xfcc3('0xba')](_0xfcc3('0xbb'),{'id':Number(_0x22f0db[_0xfcc3('0xa7')]['id']),'tags':_0x3d79c1||[]});return{'id':Number(_0x22f0db[_0xfcc3('0xa7')]['id']),'tags':_0x3d79c1||[]};});}})['then'](respondWithResult(_0x269439,null))[_0xfcc3('0x2e')](handleError(_0x269439,null));};exports['removeTags']=function(_0x401669,_0x446e6f,_0x5316af){return db[_0xfcc3('0x8d')][_0xfcc3('0x56')]({'where':{'id':_0x401669[_0xfcc3('0xa7')]['id']}})[_0xfcc3('0x23')](handleEntityNotFound(_0x446e6f,null))[_0xfcc3('0x23')](function(_0x2a77a2){if(_0x2a77a2){return _0x2a77a2[_0xfcc3('0xbc')](_0x401669[_0xfcc3('0x34')][_0xfcc3('0xb1')]);}})['then'](respondWithStatusCode(_0x446e6f,null))[_0xfcc3('0x2e')](handleError(_0x446e6f,null));};exports[_0xfcc3('0xbd')]=function(_0x3b3f4d,_0x196e95){var _0x47a580=moment()['unix']()[_0xfcc3('0x8b')]();var _0x509873=path[_0xfcc3('0xbe')](config[_0xfcc3('0xbf')],_0xfcc3('0xc0'),_0xfcc3('0xc1'),_0xfcc3('0xc2'));var _0x34458a=path[_0xfcc3('0xbe')](config[_0xfcc3('0xbf')],'server',_0xfcc3('0xc1'),_0xfcc3('0xc3'));var _0x2531cf=path[_0xfcc3('0xbe')](_0x509873,_0x47a580);var _0x5e5425=util['format'](_0xfcc3('0xc4'),_0x3b3f4d[_0xfcc3('0xa7')]['id'],_0x47a580);var _0x2a833b=path[_0xfcc3('0xbe')](_0x509873,_0x5e5425);var _0xfe190b=[];_0xfe190b[_0xfcc3('0xa3')]({'model':db['User'],'as':_0xfcc3('0xc5'),'attributes':['id','fullname'],'raw':!![]});_0xfe190b[_0xfcc3('0xa3')]({'model':db[_0xfcc3('0xc6')],'as':_0xfcc3('0xc7'),'attributes':['id','firstName',_0xfcc3('0xc8')],'raw':!![]});if(_0x3b3f4d[_0xfcc3('0x34')][_0xfcc3('0xc3')]){_0xfe190b[_0xfcc3('0xa3')]({'model':db[_0xfcc3('0xc9')],'as':_0xfcc3('0xc9'),'raw':!![]});}var _0x37d47c=[{'model':db[_0xfcc3('0xb0')],'as':_0xfcc3('0xca'),'attributes':['id',_0xfcc3('0x6c'),'createdAt',_0xfcc3('0xcb'),_0xfcc3('0xcc'),_0xfcc3('0x76')],'include':_0xfe190b}];_0x37d47c[_0xfcc3('0xa3')]({'model':db['OpenchannelAccount'],'as':_0xfcc3('0xcd'),'attributes':['id',_0xfcc3('0x27')]});_0x37d47c[_0xfcc3('0xa3')]({'model':db['User'],'as':_0xfcc3('0xce'),'attributes':['id',_0xfcc3('0x2a')]});return db[_0xfcc3('0x8d')][_0xfcc3('0x56')]({'where':{'id':_0x3b3f4d[_0xfcc3('0xa7')]['id']},'include':_0x37d47c})[_0xfcc3('0x23')](handleEntityNotFound(_0x196e95,null))[_0xfcc3('0x23')](function(_0x335777){if(_0x335777){var _0x2ec31d=_0x335777[_0xfcc3('0xcf')]({'plain':!![]});fs[_0xfcc3('0xd0')](_0x2531cf);var _0x522fe0={'channel':'Openchannel','account':_0x2ec31d['Account']['name'],'agent':_0x2ec31d[_0xfcc3('0xce')]?_0x2ec31d[_0xfcc3('0xce')][_0xfcc3('0x2a')]:'N.A.','createdAt':moment(_0x2ec31d['createdAt'])[_0xfcc3('0xb7')](_0xfcc3('0xd1'))['toString'](),'closedAt':_0x2ec31d['closed']?moment(_0x2ec31d[_0xfcc3('0xd2')])[_0xfcc3('0xb7')](_0xfcc3('0xd1'))['toString']():'','disposition':_0x2ec31d[_0xfcc3('0xd3')],'visibility':_0x2ec31d[_0xfcc3('0xd4')]?_0xfcc3('0xd5'):'Private','messages':_(_0x2ec31d[_0xfcc3('0xca')])['filter']({'secret':![]})[_0xfcc3('0x29')](function(_0x598f36){if(_0x598f36[_0xfcc3('0xc9')]){var _0x36af74=path[_0xfcc3('0xbe')](_0x34458a,_0x598f36[_0xfcc3('0xc9')]['basename']);if(fs['existsSync'](_0x36af74)){fs[_0xfcc3('0xd6')](_0x36af74)[_0xfcc3('0xd7')](fs[_0xfcc3('0xd8')](path[_0xfcc3('0xbe')](_0x2531cf,_0x598f36[_0xfcc3('0xc9')][_0xfcc3('0xd9')])));}}return{'date':moment(_0x598f36[_0xfcc3('0x71')])[_0xfcc3('0xb7')](_0xfcc3('0xd1'))[_0xfcc3('0x8b')](),'sender':_0x598f36['direction']===_0xfcc3('0xda')?_0x598f36[_0xfcc3('0xc5')]?_0x598f36['User'][_0xfcc3('0x2a')]:'System':_0x598f36['Contact']['firstName']+(_0x598f36[_0xfcc3('0xc7')][_0xfcc3('0xc8')]?'\x20'+_0x598f36[_0xfcc3('0xc7')][_0xfcc3('0xc8')]:''),'body':_0x598f36['Attachment']?_0x598f36['Attachment'][_0xfcc3('0xd9')]:_0x598f36[_0xfcc3('0x6c')],'direction':_0x598f36['direction']===_0xfcc3('0xda')?'A':'C','secret':_0x598f36[_0xfcc3('0xcc')],'read':_0x598f36[_0xfcc3('0x76')],'attachment':_0x598f36[_0xfcc3('0xc9')]};})[_0xfcc3('0x58')]()};return ejs[_0xfcc3('0xdb')](path['join'](config[_0xfcc3('0xbf')],_0xfcc3('0xc0'),_0xfcc3('0xdc'),_0xfcc3('0xdd')),{'interaction':_0x522fe0})[_0xfcc3('0x23')](function(_0x4b4794){var _0xd3cac6=path['join'](_0x2531cf,'transcript-'+_0x2ec31d['id']+'-'+_0x47a580+_0xfcc3('0xde'));var _0x4fd595={'path':_0xd3cac6,'channel':'Openchannel','interactionId':_0x2ec31d['id']};return pdf[_0xfcc3('0xdf')](_0x4b4794,_0x4fd595);})[_0xfcc3('0x23')](function(){return new BPromise(function(_0x12a9a2,_0x14e77c){zipdir(_0x2531cf,{'saveTo':_0x2a833b},function(_0x58c633,_0x234813){if(_0x58c633)return _0x14e77c(_0x58c633);return _0x12a9a2(_0x234813);});})[_0xfcc3('0x23')](function(){return new BPromise(function(_0x676f00,_0x4313e1){rimraf(_0x2531cf,function(_0x544c79){if(_0x544c79)_0x4313e1(_0x544c79);return _0x676f00();});});})['then'](function(){return _0x196e95[_0xfcc3('0xbd')](_0x2a833b,_0x5e5425,function(_0x2019f2){if(_0x2019f2){console['log'](_0xfcc3('0xe0'),_0x2019f2);}else{fs[_0xfcc3('0xe1')](_0x2a833b);}});});});}else{return _0x196e95[_0xfcc3('0x19')](0xc8);}})[_0xfcc3('0x2e')](handleError(_0x196e95,null));};
\ No newline at end of file
index 4a9af53..dcbf046 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1d1=['update','remove','getUsers','then','setDataValue','Users','map','unreadMessages','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save'];(function(_0x1b1a3b,_0x52a88a){var _0x385347=function(_0x4ca60a){while(--_0x4ca60a){_0x1b1a3b['push'](_0x1b1a3b['shift']());}};_0x385347(++_0x52a88a);}(_0xc1d1,0x189));var _0x1c1d=function(_0x451ebf,_0x251adb){_0x451ebf=_0x451ebf-0x0;var _0x591907=_0xc1d1[_0x451ebf];return _0x591907;};'use strict';var EventEmitter=require(_0x1c1d('0x0'));var OpenchannelInteraction=require(_0x1c1d('0x1'))['db'][_0x1c1d('0x2')];var OpenchannelMessage=require(_0x1c1d('0x1'))['db'][_0x1c1d('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x1c1d('0x4')](0x0);var events={'afterCreate':_0x1c1d('0x5'),'afterUpdate':_0x1c1d('0x6'),'afterDestroy':_0x1c1d('0x7')};function emitEvent(_0x484ce4){return function(_0x2bf833,_0x3288c3,_0x11b7d0){_0x2bf833[_0x1c1d('0x8')]({'attributes':['id'],'raw':!![]})[_0x1c1d('0x9')](function(_0x5d0f09){_0x2bf833[_0x1c1d('0xa')](_0x1c1d('0xb'),_0x5d0f09[_0x1c1d('0xc')](function(_0x3e3867){return{'id':_0x3e3867['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x2bf833['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x3f9d0b){_0x2bf833[_0x1c1d('0xa')](_0x1c1d('0xd'),_0x3f9d0b['length']);OpenchannelInteractionEvents['emit'](_0x484ce4+':'+_0x2bf833['id'],_0x2bf833);OpenchannelInteractionEvents[_0x1c1d('0xe')](_0x484ce4,_0x2bf833);_0x11b7d0(null);})[_0x1c1d('0xf')](_0x11b7d0(null));};}for(var e in events){if(events[_0x1c1d('0x10')](e)){var event=events[e];OpenchannelInteraction[_0x1c1d('0x11')](e,emitEvent(event));}}module[_0x1c1d('0x12')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x1464=['hasOwnProperty','exports','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','save','remove','getUsers','then','setDataValue','Users','findAll','unreadMessages','length','emit'];(function(_0xd19f1f,_0x4e9015){var _0x409c77=function(_0x2496c2){while(--_0x2496c2){_0xd19f1f['push'](_0xd19f1f['shift']());}};_0x409c77(++_0x4e9015);}(_0x1464,0x1a2));var _0x4146=function(_0x49c008,_0x15dfd1){_0x49c008=_0x49c008-0x0;var _0x2626e4=_0x1464[_0x49c008];return _0x2626e4;};'use strict';var EventEmitter=require(_0x4146('0x0'));var OpenchannelInteraction=require(_0x4146('0x1'))['db'][_0x4146('0x2')];var OpenchannelMessage=require(_0x4146('0x1'))['db'][_0x4146('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4146('0x4'),'afterUpdate':'update','afterDestroy':_0x4146('0x5')};function emitEvent(_0xa89de9){return function(_0x278b11,_0x4bcd0a,_0x3b1adc){_0x278b11[_0x4146('0x6')]({'attributes':['id'],'raw':!![]})[_0x4146('0x7')](function(_0x207f6c){_0x278b11[_0x4146('0x8')](_0x4146('0x9'),_0x207f6c['map'](function(_0x4c8235){return{'id':_0x4c8235['id']};}));return OpenchannelMessage[_0x4146('0xa')]({'where':{'OpenchannelInteractionId':_0x278b11['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4146('0x7')](function(_0x10cfbe){_0x278b11['setDataValue'](_0x4146('0xb'),_0x10cfbe[_0x4146('0xc')]);OpenchannelInteractionEvents[_0x4146('0xd')](_0xa89de9+':'+_0x278b11['id'],_0x278b11);OpenchannelInteractionEvents[_0x4146('0xd')](_0xa89de9,_0x278b11);_0x3b1adc(null);})['catch'](_0x3b1adc(null));};}for(var e in events){if(events[_0x4146('0xe')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0x4146('0xf')]=OpenchannelInteractionEvents;
\ No newline at end of file
index bdf59a8..8b9c9ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b3f=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3b3f,0x1e0));var _0xf3b3=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x3b3f[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xf3b3('0x0'));var util=require(_0xf3b3('0x1'));var logger=require(_0xf3b3('0x2'))(_0xf3b3('0x3'));var moment=require(_0xf3b3('0x4'));var BPromise=require(_0xf3b3('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf3b3('0x6'));var rimraf=require(_0xf3b3('0x7'));var config=require(_0xf3b3('0x8'));var attributes=require(_0xf3b3('0x9'));module[_0xf3b3('0xa')]=function(_0x5a9ad3,_0x563c4d){return _0x5a9ad3[_0xf3b3('0xb')](_0xf3b3('0xc'),attributes,{'tableName':_0xf3b3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf3b3('0xe'),'collate':_0xf3b3('0xf'),'hooks':{'beforeUpdate':function(_0x56ce68,_0x23fcc3,_0x54af1f){if(_0x56ce68[_0xf3b3('0x10')]('closed')){_0x56ce68[_0xf3b3('0x11')]=moment()[_0xf3b3('0x12')](_0xf3b3('0x13'));}_0x54af1f(null,_0x56ce68);}}});};
\ No newline at end of file
+var _0x5f75=['closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','utf8mb4','changed'];(function(_0x47af56,_0x51e710){var _0x4f6bc9=function(_0x327a1e){while(--_0x327a1e){_0x47af56['push'](_0x47af56['shift']());}};_0x4f6bc9(++_0x51e710);}(_0x5f75,0x1e4));var _0x55f7=function(_0x139a25,_0x1707d7){_0x139a25=_0x139a25-0x0;var _0x330a62=_0x5f75[_0x139a25];return _0x330a62;};'use strict';var _=require(_0x55f7('0x0'));var util=require('util');var logger=require(_0x55f7('0x1'))(_0x55f7('0x2'));var moment=require(_0x55f7('0x3'));var BPromise=require(_0x55f7('0x4'));var rp=require(_0x55f7('0x5'));var fs=require('fs');var path=require(_0x55f7('0x6'));var rimraf=require(_0x55f7('0x7'));var config=require(_0x55f7('0x8'));var attributes=require('./openchannelInteraction.attributes');module['exports']=function(_0x57a6f9,_0x109fb5){return _0x57a6f9['define']('OpenchannelInteraction',attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x55f7('0x9'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x20003,_0x2df392,_0x537e44){if(_0x20003[_0x55f7('0xa')](_0x55f7('0xb'))){_0x20003[_0x55f7('0xc')]=moment()[_0x55f7('0xd')](_0x55f7('0xe'));}_0x537e44(null,_0x20003);}}});};
\ No newline at end of file
index 72f42b4..d5db36d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f9e=['where','addTags','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','raw','options','limit','stringify','find'];(function(_0x101f97,_0x5bb72e){var _0x137bcb=function(_0x16aeae){while(--_0x16aeae){_0x101f97['push'](_0x101f97['shift']());}};_0x137bcb(++_0x5bb72e);}(_0x9f9e,0x187));var _0xe9f9=function(_0xbc346f,_0x3db5c0){_0xbc346f=_0xbc346f-0x0;var _0x9f9260=_0x9f9e[_0xbc346f];return _0x9f9260;};'use strict';var _=require(_0xe9f9('0x0'));var util=require(_0xe9f9('0x1'));var moment=require(_0xe9f9('0x2'));var BPromise=require('bluebird');var rs=require(_0xe9f9('0x3'));var fs=require('fs');var Redis=require(_0xe9f9('0x4'));var db=require(_0xe9f9('0x5'))['db'];var utils=require(_0xe9f9('0x6'));var logger=require(_0xe9f9('0x7'))(_0xe9f9('0x8'));var config=require('../../config/environment');var jayson=require(_0xe9f9('0x9'));var client=jayson[_0xe9f9('0xa')][_0xe9f9('0xb')]({'port':0x232a});config[_0xe9f9('0xc')]=_[_0xe9f9('0xd')](config[_0xe9f9('0xc')],{'host':_0xe9f9('0xe'),'port':0x18eb});var socket=require(_0xe9f9('0xf'))(new Redis(config[_0xe9f9('0xc')]));require(_0xe9f9('0x10'))[_0xe9f9('0x11')](socket);function respondWithRpcPromise(_0x4a9bad,_0x1b923a,_0xf9c222){return new BPromise(function(_0x443053,_0x4b1775){return client[_0xe9f9('0x12')](_0x4a9bad,_0xf9c222)[_0xe9f9('0x13')](function(_0x5e6e1d){logger[_0xe9f9('0x14')](_0xe9f9('0x15'),_0x1b923a,_0xe9f9('0x16'));logger[_0xe9f9('0x17')](_0xe9f9('0x18'),_0x1b923a,_0xe9f9('0x16'),JSON['stringify'](_0x5e6e1d));if(_0x5e6e1d[_0xe9f9('0x19')]){if(_0x5e6e1d[_0xe9f9('0x19')][_0xe9f9('0x1a')]===0x1f4){logger[_0xe9f9('0x19')](_0xe9f9('0x15'),_0x1b923a,_0x5e6e1d[_0xe9f9('0x19')][_0xe9f9('0x1b')]);return _0x4b1775(_0x5e6e1d[_0xe9f9('0x19')]['message']);}logger[_0xe9f9('0x19')](_0xe9f9('0x15'),_0x1b923a,_0x5e6e1d[_0xe9f9('0x19')][_0xe9f9('0x1b')]);return _0x443053(_0x5e6e1d['error']['message']);}else{logger[_0xe9f9('0x14')]('OpenchannelInteraction,\x20%s,\x20%s',_0x1b923a,_0xe9f9('0x16'));_0x443053(_0x5e6e1d[_0xe9f9('0x1c')][_0xe9f9('0x1b')]);}})[_0xe9f9('0x1d')](function(_0x36ba36){logger[_0xe9f9('0x19')](_0xe9f9('0x15'),_0x1b923a,_0x36ba36);_0x4b1775(_0x36ba36);});});}exports[_0xe9f9('0x1e')]=function(_0x48562b){var _0x7e37c2=this;return new Promise(function(_0x29c9b0,_0x5a7d69){return db[_0xe9f9('0x1f')][_0xe9f9('0x20')](_0x48562b[_0xe9f9('0x21')],{'raw':_0x48562b['options']?_0x48562b['options'][_0xe9f9('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x48562b[_0xe9f9('0x23')]?_0x48562b[_0xe9f9('0x23')]['where']||null:null,'attributes':_0x48562b[_0xe9f9('0x23')]?_0x48562b['options']['attributes']||null:null,'limit':_0x48562b[_0xe9f9('0x23')]?_0x48562b[_0xe9f9('0x23')][_0xe9f9('0x24')]||null:null})[_0xe9f9('0x13')](function(_0x5c2d3b){logger[_0xe9f9('0x14')](_0xe9f9('0x1e'),_0x48562b);logger[_0xe9f9('0x17')](_0xe9f9('0x1e'),_0x48562b,JSON[_0xe9f9('0x25')](_0x5c2d3b));_0x29c9b0(_0x5c2d3b);})[_0xe9f9('0x1d')](function(_0x4c8435){logger[_0xe9f9('0x19')](_0xe9f9('0x1e'),_0x4c8435[_0xe9f9('0x1b')],_0x48562b);_0x5a7d69(_0x7e37c2[_0xe9f9('0x19')](0x1f4,_0x4c8435['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x2dc5b9){return new Promise(function(_0x216467,_0x218d35){return db[_0xe9f9('0x1f')][_0xe9f9('0x26')]({'where':_0x2dc5b9[_0xe9f9('0x23')]?_0x2dc5b9['options'][_0xe9f9('0x27')]||null:null})['then'](function(_0x2c3eba){if(_0x2c3eba){return _0x2c3eba[_0xe9f9('0x28')](_0x2dc5b9['body']['ids'],_['omit'](_0x2dc5b9[_0xe9f9('0x21')],['ids','id'])||{});}})[_0xe9f9('0x29')](function(_0x33b413){logger['info'](_0xe9f9('0x2a'),_0x2dc5b9);logger[_0xe9f9('0x17')]('AddTags',_0x2dc5b9,JSON[_0xe9f9('0x25')](_0x33b413));_0x216467(_0x33b413);})[_0xe9f9('0x1d')](function(_0x1a3dad){logger[_0xe9f9('0x19')](_0xe9f9('0x2a'),_0x1a3dad[_0xe9f9('0x1b')],_0x2dc5b9);_0x218d35(_this[_0xe9f9('0x19')](0x1f4,_0x1a3dad[_0xe9f9('0x1b')]));});});};
\ No newline at end of file
+var _0x7c25=['defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','debug','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis'];(function(_0x5b7784,_0x341318){var _0x58272c=function(_0x4ea804){while(--_0x4ea804){_0x5b7784['push'](_0x5b7784['shift']());}};_0x58272c(++_0x341318);}(_0x7c25,0xa6));var _0x57c2=function(_0x16f8e0,_0xa557c8){_0x16f8e0=_0x16f8e0-0x0;var _0x5c2b63=_0x7c25[_0x16f8e0];return _0x5c2b63;};'use strict';var _=require(_0x57c2('0x0'));var util=require(_0x57c2('0x1'));var moment=require(_0x57c2('0x2'));var BPromise=require(_0x57c2('0x3'));var rs=require(_0x57c2('0x4'));var fs=require('fs');var Redis=require(_0x57c2('0x5'));var db=require(_0x57c2('0x6'))['db'];var utils=require(_0x57c2('0x7'));var logger=require(_0x57c2('0x8'))(_0x57c2('0x9'));var config=require(_0x57c2('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x57c2('0xb')][_0x57c2('0xc')]({'port':0x232a});config[_0x57c2('0xd')]=_[_0x57c2('0xe')](config[_0x57c2('0xd')],{'host':_0x57c2('0xf'),'port':0x18eb});var socket=require(_0x57c2('0x10'))(new Redis(config[_0x57c2('0xd')]));require(_0x57c2('0x11'))[_0x57c2('0x12')](socket);function respondWithRpcPromise(_0x38b3a6,_0x3e8223,_0x13b003){return new BPromise(function(_0x48d063,_0x384281){return client[_0x57c2('0x13')](_0x38b3a6,_0x13b003)[_0x57c2('0x14')](function(_0x80eabb){logger[_0x57c2('0x15')](_0x57c2('0x16'),_0x3e8223,'request\x20sent');logger['debug'](_0x57c2('0x17'),_0x3e8223,_0x57c2('0x18'),JSON[_0x57c2('0x19')](_0x80eabb));if(_0x80eabb[_0x57c2('0x1a')]){if(_0x80eabb[_0x57c2('0x1a')]['code']===0x1f4){logger[_0x57c2('0x1a')](_0x57c2('0x16'),_0x3e8223,_0x80eabb['error']['message']);return _0x384281(_0x80eabb[_0x57c2('0x1a')][_0x57c2('0x1b')]);}logger[_0x57c2('0x1a')](_0x57c2('0x16'),_0x3e8223,_0x80eabb[_0x57c2('0x1a')][_0x57c2('0x1b')]);return _0x48d063(_0x80eabb[_0x57c2('0x1a')]['message']);}else{logger[_0x57c2('0x15')]('OpenchannelInteraction,\x20%s,\x20%s',_0x3e8223,_0x57c2('0x18'));_0x48d063(_0x80eabb[_0x57c2('0x1c')][_0x57c2('0x1b')]);}})[_0x57c2('0x1d')](function(_0x50ce58){logger['error'](_0x57c2('0x16'),_0x3e8223,_0x50ce58);_0x384281(_0x50ce58);});});}exports[_0x57c2('0x1e')]=function(_0x4eb328){var _0x14cd22=this;return new Promise(function(_0x3c27f7,_0x55a1c8){return db[_0x57c2('0x1f')][_0x57c2('0x20')](_0x4eb328[_0x57c2('0x21')],{'raw':_0x4eb328[_0x57c2('0x22')]?_0x4eb328[_0x57c2('0x22')][_0x57c2('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4eb328['options']?_0x4eb328[_0x57c2('0x22')][_0x57c2('0x24')]||null:null,'attributes':_0x4eb328[_0x57c2('0x22')]?_0x4eb328[_0x57c2('0x22')][_0x57c2('0x25')]||null:null,'limit':_0x4eb328[_0x57c2('0x22')]?_0x4eb328[_0x57c2('0x22')]['limit']||null:null})['then'](function(_0x5acfe8){logger[_0x57c2('0x15')](_0x57c2('0x1e'),_0x4eb328);logger[_0x57c2('0x26')](_0x57c2('0x1e'),_0x4eb328,JSON[_0x57c2('0x19')](_0x5acfe8));_0x3c27f7(_0x5acfe8);})[_0x57c2('0x1d')](function(_0x28e1ee){logger[_0x57c2('0x1a')](_0x57c2('0x1e'),_0x28e1ee[_0x57c2('0x1b')],_0x4eb328);_0x55a1c8(_0x14cd22[_0x57c2('0x1a')](0x1f4,_0x28e1ee[_0x57c2('0x1b')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x21ed83){return new Promise(function(_0x39c3fe,_0x22716a){return db[_0x57c2('0x1f')][_0x57c2('0x27')]({'where':_0x21ed83[_0x57c2('0x22')]?_0x21ed83[_0x57c2('0x22')]['where']||null:null})[_0x57c2('0x14')](function(_0x3e670f){if(_0x3e670f){return _0x3e670f[_0x57c2('0x28')](_0x21ed83[_0x57c2('0x21')][_0x57c2('0x29')],_[_0x57c2('0x2a')](_0x21ed83[_0x57c2('0x21')],[_0x57c2('0x29'),'id'])||{});}})[_0x57c2('0x2b')](function(_0x56a6ec){logger[_0x57c2('0x15')](_0x57c2('0x2c'),_0x21ed83);logger[_0x57c2('0x26')](_0x57c2('0x2c'),_0x21ed83,JSON[_0x57c2('0x19')](_0x56a6ec));_0x39c3fe(_0x56a6ec);})['catch'](function(_0x1f82dd){logger['error'](_0x57c2('0x2c'),_0x1f82dd[_0x57c2('0x1b')],_0x21ed83);_0x22716a(_this[_0x57c2('0x1a')](0x1f4,_0x1f82dd[_0x57c2('0x1b')]));});});};
\ No newline at end of file
index 902b317..141cf63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf52=['./openchannelInteraction.events','save','emit','removeListener','register'];(function(_0x5b3960,_0xfe48b9){var _0x44288b=function(_0x416930){while(--_0x416930){_0x5b3960['push'](_0x5b3960['shift']());}};_0x44288b(++_0xfe48b9);}(_0xaf52,0x1c2));var _0x2af5=function(_0x528032,_0x5af4a5){_0x528032=_0x528032-0x0;var _0x22f555=_0xaf52[_0x528032];return _0x22f555;};'use strict';var OpenchannelInteractionEvents=require(_0x2af5('0x0'));var events=[_0x2af5('0x1'),'remove','update'];function createListener(_0x1ce14e,_0x241be6){return function(_0x497d4c){_0x241be6[_0x2af5('0x2')](_0x1ce14e,_0x497d4c);};}function removeListener(_0x57e043,_0x8e0ed3){return function(){OpenchannelInteractionEvents[_0x2af5('0x3')](_0x57e043,_0x8e0ed3);};}exports[_0x2af5('0x4')]=function(_0x1d6601){for(var _0x45f21c=0x0,_0x38d558=events['length'];_0x45f21c<_0x38d558;_0x45f21c++){var _0x3f81c2=events[_0x45f21c];var _0x4cd6ec=createListener('openchannelInteraction:'+_0x3f81c2,_0x1d6601);OpenchannelInteractionEvents['on'](_0x3f81c2,_0x4cd6ec);}};
\ No newline at end of file
+var _0xffc9=['remove','emit','removeListener','register','length','openchannelInteraction:','./openchannelInteraction.events','save'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xffc9,0x10e));var _0x9ffc=function(_0x625ac6,_0x1a705e){_0x625ac6=_0x625ac6-0x0;var _0x35fbab=_0xffc9[_0x625ac6];return _0x35fbab;};'use strict';var OpenchannelInteractionEvents=require(_0x9ffc('0x0'));var events=[_0x9ffc('0x1'),_0x9ffc('0x2'),'update'];function createListener(_0x7f5462,_0x14e514){return function(_0x31b754){_0x14e514[_0x9ffc('0x3')](_0x7f5462,_0x31b754);};}function removeListener(_0x2c0dbc,_0x314050){return function(){OpenchannelInteractionEvents[_0x9ffc('0x4')](_0x2c0dbc,_0x314050);};}exports[_0x9ffc('0x5')]=function(_0x4940e7){for(var _0x15196d=0x0,_0x1ff2e2=events[_0x9ffc('0x6')];_0x15196d<_0x1ff2e2;_0x15196d++){var _0x5d06e9=events[_0x15196d];var _0x4d1aa3=createListener(_0x9ffc('0x7')+_0x5d06e9,_0x4940e7);OpenchannelInteractionEvents['on'](_0x5d06e9,_0x4d1aa3);}};
\ No newline at end of file
index cd203a7..b1d941a 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','isAuthenticated','index','get','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util'];(function(_0x262f0d,_0x51e151){var _0x21dc30=function(_0x49857c){while(--_0x49857c){_0x262f0d['push'](_0x262f0d['shift']());}};_0x21dc30(++_0x51e151);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./openchannelMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x0d8b('0x10')),controller['create']);router[_0x0d8b('0x11')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x12')]);router[_0x0d8b('0x11')](_0x0d8b('0x13'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x14')]);router[_0x0d8b('0x11')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x16')]);router[_0x0d8b('0x17')](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['index','/describe','show','post','isAuthenticated','tracked','openchannel','openchannelmessage:create','update','put','/:id/accept','accept','reject','delete','/:id','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get'];(function(_0x1d5081,_0x2475d0){var _0x26f454=function(_0xeddc76){while(--_0xeddc76){_0x1d5081['push'](_0x1d5081['shift']());}};_0x26f454(++_0x2475d0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xa9e0[_0x8de54f];return _0x14cba4;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),interaction[_0x0a9e('0xe')](_0x0a9e('0xf'),_0x0a9e('0x10')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);router[_0x0a9e('0x12')](_0x0a9e('0x13'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x12')]('/:id/reject',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x15')]);router[_0x0a9e('0x16')](_0x0a9e('0x17'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x18')]);module['exports']=router;
\ No newline at end of file
index a58cfeb..a8ebb35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da6=['DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x155429,_0x136cce){var _0x116bff=function(_0x1bec9d){while(--_0x1bec9d){_0x155429['push'](_0x155429['shift']());}};_0x116bff(++_0x136cce);}(_0x3da6,0xc1));var _0x63da=function(_0x2bd440,_0xfb5a9d){_0x2bd440=_0x2bd440-0x0;var _0x58f325=_0x3da6[_0x2bd440];return _0x58f325;};'use strict';var Sequelize=require(_0x63da('0x0'));module[_0x63da('0x1')]={'body':{'type':Sequelize[_0x63da('0x2')](_0x63da('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x63da('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x63da('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x63da('0x5')]('in','out'),'defaultValue':_0x63da('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x63da('0x7')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x63da('0x2')]}};
\ No newline at end of file
+var _0x7be1=['BOOLEAN','ENUM','out','sequelize','exports','TEXT'];(function(_0x4371c0,_0x469771){var _0x4d1897=function(_0x4be33e){while(--_0x4be33e){_0x4371c0['push'](_0x4371c0['shift']());}};_0x4d1897(++_0x469771);}(_0x7be1,0x165));var _0x17be=function(_0x2b59e5,_0x104bf9){_0x2b59e5=_0x2b59e5-0x0;var _0x41aab2=_0x7be1[_0x2b59e5];return _0x41aab2;};'use strict';var Sequelize=require(_0x17be('0x0'));module[_0x17be('0x1')]={'body':{'type':Sequelize[_0x17be('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x17be('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x17be('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x17be('0x4')]('in',_0x17be('0x5')),'defaultValue':_0x17be('0x5'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index f96497e..e62919e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fb5=['../../config/logger','openchannel-interactions','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','format','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','reject','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','contact','event','rejectmessage','rimraf','zip-dir','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/license/util','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','http','request','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','status','end','json','offset','undefined','limit','count','set','apply','save','destroy','sendStatus','name','send','index','map','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','OpenchannelMessage','includeAll','include','findAll','rows','show','params','rawAttributes','find','create','body','update'];(function(_0x2d549b,_0x5d45fa){var _0x3a08dd=function(_0x3503c7){while(--_0x3503c7){_0x2d549b['push'](_0x2d549b['shift']());}};_0x3a08dd(++_0x5d45fa);}(_0x1fb5,0xae));var _0x51fb=function(_0x4c2df5,_0x81ef1b){_0x4c2df5=_0x4c2df5-0x0;var _0x31da86=_0x1fb5[_0x4c2df5];return _0x31da86;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x51fb('0x0'));var zipdir=require(_0x51fb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x51fb('0x2'));var moment=require(_0x51fb('0x3'));var BPromise=require(_0x51fb('0x4'));var Mustache=require(_0x51fb('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x51fb('0x6'));var ejs=require(_0x51fb('0x7'));var fs=require('fs');var fs_extra=require(_0x51fb('0x8'));var _=require(_0x51fb('0x9'));var squel=require(_0x51fb('0xa'));var crypto=require(_0x51fb('0xb'));var jsforce=require(_0x51fb('0xc'));var deskjs=require(_0x51fb('0xd'));var toCsv=require('to-csv');var querystring=require(_0x51fb('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x51fb('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x51fb('0x10'));var logger=require('../../config/logger')(_0x51fb('0x11'));var utils=require(_0x51fb('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x51fb('0x13'));var db=require('../../mysqldb')['db'];config[_0x51fb('0x14')]=_['defaults'](config['redis'],{'host':_0x51fb('0x15'),'port':0x18eb});var socket=require(_0x51fb('0x16'))(new Redis(config['redis']));require(_0x51fb('0x17'))[_0x51fb('0x18')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x51fb('0x19')]({'port':0x232c});var client9002=jayson['client'][_0x51fb('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x258afe,_0x4c21f7,_0x490b88,_0x5ab455){return new BPromise(function(_0x30a37d,_0x5e7ab3){var _0x301d74=_0x5ab455||client;return _0x301d74[_0x51fb('0x1a')](_0x258afe,_0x490b88)[_0x51fb('0x1b')](function(_0x152895){logger['info'](_0x51fb('0x1c'),_0x4c21f7,_0x51fb('0x1d'));logger[_0x51fb('0x1e')](_0x51fb('0x1f'),_0x4c21f7,_0x51fb('0x1d'),JSON[_0x51fb('0x20')](_0x152895));if(_0x152895[_0x51fb('0x21')]){if(_0x152895[_0x51fb('0x21')][_0x51fb('0x22')]===0x1f4){logger[_0x51fb('0x21')]('OpenchannelMessage,\x20%s,\x20%s',_0x4c21f7,_0x152895[_0x51fb('0x21')][_0x51fb('0x23')]);return _0x5e7ab3(_0x152895['error'][_0x51fb('0x23')]);}logger[_0x51fb('0x21')](_0x51fb('0x1c'),_0x4c21f7,_0x152895[_0x51fb('0x21')][_0x51fb('0x23')]);return _0x30a37d(_0x152895['error'][_0x51fb('0x23')]);}else{logger[_0x51fb('0x24')](_0x51fb('0x1c'),_0x4c21f7,_0x51fb('0x1d'));_0x30a37d(_0x152895[_0x51fb('0x25')]['message']);}})[_0x51fb('0x26')](function(_0x2632ad){logger[_0x51fb('0x21')](_0x51fb('0x1c'),_0x4c21f7,_0x2632ad);_0x5e7ab3(_0x2632ad);});});}function respondWithStatusCode(_0x5cfc69,_0x39e81c){_0x39e81c=_0x39e81c||0xcc;return function(_0x9b842c){if(_0x9b842c){return _0x5cfc69['sendStatus'](_0x39e81c);}return _0x5cfc69[_0x51fb('0x27')](_0x39e81c)[_0x51fb('0x28')]();};}function respondWithResult(_0x30b3d5,_0x1c697a){_0x1c697a=_0x1c697a||0xc8;return function(_0x1222da){if(_0x1222da){return _0x30b3d5[_0x51fb('0x27')](_0x1c697a)[_0x51fb('0x29')](_0x1222da);}};}function respondWithFilteredResult(_0xae3d08,_0x3012e5){return function(_0xbe31b6){if(_0xbe31b6){var _0x141cc0=typeof _0x3012e5[_0x51fb('0x2a')]===_0x51fb('0x2b')&&typeof _0x3012e5[_0x51fb('0x2c')]===_0x51fb('0x2b');var _0x5df567=_0xbe31b6[_0x51fb('0x2d')];var _0x294157=_0x141cc0?0x0:_0x3012e5[_0x51fb('0x2a')];var _0x7f987e=_0x141cc0?_0xbe31b6[_0x51fb('0x2d')]:_0x3012e5[_0x51fb('0x2a')]+_0x3012e5[_0x51fb('0x2c')];var _0x37466f;if(_0x7f987e>=_0x5df567){_0x7f987e=_0x5df567;_0x37466f=0xc8;}else{_0x37466f=0xce;}_0xae3d08[_0x51fb('0x27')](_0x37466f);return _0xae3d08[_0x51fb('0x2e')]('Content-Range',_0x294157+'-'+_0x7f987e+'/'+_0x5df567)[_0x51fb('0x29')](_0xbe31b6);}return null;};}function patchUpdates(_0x3793d1){return function(_0x480c1f){try{jsonpatch[_0x51fb('0x2f')](_0x480c1f,_0x3793d1,!![]);}catch(_0x371a63){return BPromise['reject'](_0x371a63);}return _0x480c1f[_0x51fb('0x30')]();};}function saveUpdates(_0x51f330,_0x4aecd6){return function(_0x532e0e){if(_0x532e0e){return _0x532e0e['update'](_0x51f330)[_0x51fb('0x1b')](function(_0x3c27bb){return _0x3c27bb;});}return null;};}function removeEntity(_0x2bd587,_0x21413d){return function(_0x3e1a0b){if(_0x3e1a0b){return _0x3e1a0b[_0x51fb('0x31')]()[_0x51fb('0x1b')](function(){_0x2bd587[_0x51fb('0x27')](0xcc)[_0x51fb('0x28')]();});}};}function handleEntityNotFound(_0x1114b3,_0x2c83bf){return function(_0x4eb7b5){if(!_0x4eb7b5){_0x1114b3[_0x51fb('0x32')](0x194);}return _0x4eb7b5;};}function handleError(_0x36c74f,_0x523024){_0x523024=_0x523024||0x1f4;return function(_0xcfd2c7){logger[_0x51fb('0x21')](_0xcfd2c7['stack']);if(_0xcfd2c7[_0x51fb('0x33')]){delete _0xcfd2c7[_0x51fb('0x33')];}_0x36c74f[_0x51fb('0x27')](_0x523024)[_0x51fb('0x34')](_0xcfd2c7);};}exports[_0x51fb('0x35')]=function(_0x21bee8,_0xee32fb){var _0x5055f3={},_0x521257={},_0x3118e7={'count':0x0,'rows':[]};var _0x26be2d=_[_0x51fb('0x36')](db['OpenchannelMessage']['rawAttributes'],function(_0x4852b3){return{'name':_0x4852b3['fieldName'],'type':_0x4852b3[_0x51fb('0x37')][_0x51fb('0x38')]};});_0x521257[_0x51fb('0x39')]=_[_0x51fb('0x36')](_0x26be2d,'name');_0x521257[_0x51fb('0x3a')]=_[_0x51fb('0x3b')](_0x21bee8[_0x51fb('0x3a')]);_0x521257[_0x51fb('0x3c')]=_['intersection'](_0x521257[_0x51fb('0x39')],_0x521257[_0x51fb('0x3a')]);_0x5055f3['attributes']=_[_0x51fb('0x3d')](_0x521257[_0x51fb('0x39')],qs[_0x51fb('0x3e')](_0x21bee8[_0x51fb('0x3a')]['fields']));_0x5055f3[_0x51fb('0x3f')]=_0x5055f3[_0x51fb('0x3f')][_0x51fb('0x40')]?_0x5055f3[_0x51fb('0x3f')]:_0x521257[_0x51fb('0x39')];if(!_0x21bee8[_0x51fb('0x3a')][_0x51fb('0x41')](_0x51fb('0x42'))){_0x5055f3[_0x51fb('0x2c')]=qs[_0x51fb('0x2c')](_0x21bee8[_0x51fb('0x3a')][_0x51fb('0x2c')]);_0x5055f3[_0x51fb('0x2a')]=qs[_0x51fb('0x2a')](_0x21bee8[_0x51fb('0x3a')][_0x51fb('0x2a')]);}_0x5055f3[_0x51fb('0x43')]=qs[_0x51fb('0x44')](_0x21bee8[_0x51fb('0x3a')][_0x51fb('0x44')]);_0x5055f3[_0x51fb('0x45')]=qs[_0x51fb('0x3c')](_['pick'](_0x21bee8[_0x51fb('0x3a')],_0x521257[_0x51fb('0x3c')]),_0x26be2d);if(_0x21bee8['query'][_0x51fb('0x46')]){_0x5055f3['where']=_[_0x51fb('0x47')](_0x5055f3[_0x51fb('0x45')],{'$or':_[_0x51fb('0x36')](_0x26be2d,function(_0x40d07c){if(_0x40d07c[_0x51fb('0x37')]!==_0x51fb('0x48')){var _0x58851f={};_0x58851f[_0x40d07c[_0x51fb('0x33')]]={'$like':'%'+_0x21bee8[_0x51fb('0x3a')][_0x51fb('0x46')]+'%'};return _0x58851f;}})});}_0x5055f3=_[_0x51fb('0x47')]({},_0x5055f3,_0x21bee8[_0x51fb('0x49')]);var _0x32f1e3={'where':_0x5055f3[_0x51fb('0x45')]};return db[_0x51fb('0x4a')][_0x51fb('0x2d')](_0x32f1e3)[_0x51fb('0x1b')](function(_0x7ff9ae){_0x3118e7[_0x51fb('0x2d')]=_0x7ff9ae;if(_0x21bee8[_0x51fb('0x3a')][_0x51fb('0x4b')]){_0x5055f3[_0x51fb('0x4c')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0x51fb('0x4d')](_0x5055f3);})[_0x51fb('0x1b')](function(_0x4a88be){_0x3118e7[_0x51fb('0x4e')]=_0x4a88be;return _0x3118e7;})[_0x51fb('0x1b')](respondWithFilteredResult(_0xee32fb,_0x5055f3))[_0x51fb('0x26')](handleError(_0xee32fb,null));};exports[_0x51fb('0x4f')]=function(_0x5392bf,_0x18a389){var _0x4ac948={'raw':!![],'where':{'id':_0x5392bf[_0x51fb('0x50')]['id']}},_0x4ef075={};_0x4ef075[_0x51fb('0x39')]=_['keys'](db[_0x51fb('0x4a')][_0x51fb('0x51')]);_0x4ef075['query']=_[_0x51fb('0x3b')](_0x5392bf[_0x51fb('0x3a')]);_0x4ef075[_0x51fb('0x3c')]=_[_0x51fb('0x3d')](_0x4ef075[_0x51fb('0x39')],_0x4ef075['query']);_0x4ac948[_0x51fb('0x3f')]=_['intersection'](_0x4ef075[_0x51fb('0x39')],qs[_0x51fb('0x3e')](_0x5392bf[_0x51fb('0x3a')][_0x51fb('0x3e')]));_0x4ac948['attributes']=_0x4ac948[_0x51fb('0x3f')][_0x51fb('0x40')]?_0x4ac948[_0x51fb('0x3f')]:_0x4ef075[_0x51fb('0x39')];if(_0x5392bf[_0x51fb('0x3a')][_0x51fb('0x4b')]){_0x4ac948['include']=[{'all':!![]}];}_0x4ac948=_[_0x51fb('0x47')]({},_0x4ac948,_0x5392bf[_0x51fb('0x49')]);return db[_0x51fb('0x4a')][_0x51fb('0x52')](_0x4ac948)['then'](handleEntityNotFound(_0x18a389,null))[_0x51fb('0x1b')](respondWithResult(_0x18a389,null))[_0x51fb('0x26')](handleError(_0x18a389,null));};exports['create']=function(_0x3c46dd,_0x4c7e64){return db[_0x51fb('0x4a')][_0x51fb('0x53')](_0x3c46dd[_0x51fb('0x54')],{})[_0x51fb('0x1b')](respondWithResult(_0x4c7e64,0xc9))[_0x51fb('0x26')](handleError(_0x4c7e64,null));};exports[_0x51fb('0x55')]=function(_0x2bcec4,_0x4143aa){if(_0x2bcec4[_0x51fb('0x54')]['id']){delete _0x2bcec4['body']['id'];}return db[_0x51fb('0x4a')][_0x51fb('0x52')]({'where':{'id':_0x2bcec4[_0x51fb('0x50')]['id']}})[_0x51fb('0x1b')](handleEntityNotFound(_0x4143aa,null))['then'](saveUpdates(_0x2bcec4[_0x51fb('0x54')],null))[_0x51fb('0x1b')](respondWithResult(_0x4143aa,null))[_0x51fb('0x26')](handleError(_0x4143aa,null));};exports[_0x51fb('0x31')]=function(_0x583d0f,_0x9437b6){return db[_0x51fb('0x4a')][_0x51fb('0x52')]({'where':{'id':_0x583d0f[_0x51fb('0x50')]['id']}})['then'](handleEntityNotFound(_0x9437b6,null))['then'](removeEntity(_0x9437b6,null))[_0x51fb('0x26')](handleError(_0x9437b6,null));};exports['describe']=function(_0x15d722,_0x25f296){return db[_0x51fb('0x4a')]['describe']()[_0x51fb('0x1b')](respondWithResult(_0x25f296,null))['catch'](handleError(_0x25f296,null));};var interaction_log=require(_0x51fb('0x56'))(_0x51fb('0x57'));exports[_0x51fb('0x58')]=function(_0x11efec,_0x346036,_0x337144){var _0x38f8af={'agent':{},'channel':'openchannel'};if(_0x11efec[_0x51fb('0x54')]['id']){delete _0x11efec[_0x51fb('0x54')]['id'];}_0x11efec[_0x51fb('0x54')][_0x51fb('0x59')]=!![];_0x11efec[_0x51fb('0x54')][_0x51fb('0x5a')]=moment()['format'](_0x51fb('0x5b'));_0x11efec[_0x51fb('0x54')][_0x51fb('0x5c')]=_0x11efec[_0x51fb('0x54')]['UserId']||_0x11efec[_0x51fb('0x5d')]['id'];_0x38f8af[_0x51fb('0x5e')]['id']=_0x11efec[_0x51fb('0x54')][_0x51fb('0x5c')];return db['OpenchannelMessage']['find']({'where':{'id':_0x11efec[_0x51fb('0x50')]['id'],'UserId':null}})[_0x51fb('0x1b')](handleEntityNotFound(_0x346036,null))[_0x51fb('0x1b')](saveUpdates(_0x11efec[_0x51fb('0x54')],null))[_0x51fb('0x1b')](function(_0x4d8d0b){if(_0x4d8d0b){_0x38f8af['message']=_0x4d8d0b[_0x51fb('0x5f')]({'plain':!![]});return db[_0x51fb('0x60')]['find']({'where':{'id':_0x4d8d0b[_0x51fb('0x61')]}});}return null;})[_0x51fb('0x1b')](handleEntityNotFound(_0x346036,null))[_0x51fb('0x1b')](function(_0x28637d){if(_0x28637d){return _0x28637d[_0x51fb('0x55')]({'UserId':_0x11efec['body'][_0x51fb('0x5c')],'read1stAt':_[_0x51fb('0x62')](_0x28637d[_0x51fb('0x63')])?moment()[_0x51fb('0x64')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x51fb('0x1b')](function(_0x4e7af6){if(_0x4e7af6){_0x38f8af[_0x51fb('0x65')]=_0x4e7af6[_0x51fb('0x5f')]({'plain':!![]});interaction_log[_0x51fb('0x24')](_0x51fb('0x66'),_0x11efec[_0x51fb('0x5d')]['id'],_0x11efec['user'][_0x51fb('0x33')],_0x11efec[_0x51fb('0x5d')][_0x51fb('0x67')],_0x38f8af[_0x51fb('0x65')]['id'],_0x11efec[_0x51fb('0x54')]?JSON[_0x51fb('0x20')](_0x11efec['body']):_0x51fb('0x68'));return respondWithRpcPromise(_0x51fb('0x69'),'acceptMessage',_0x38f8af);}return null;})[_0x51fb('0x1b')](function(_0x5321da){var _0x30167a=_0x51fb('0x6a')+_0x5321da[_0x51fb('0x23')][_0x51fb('0x6b')];return db[_0x51fb('0x6c')]['query'](_0x30167a,{'type':db[_0x51fb('0x6d')][_0x51fb('0x6e')]['SELECT'],'raw':!![]})[_0x51fb('0x1b')](function(_0x6947cd){return _0x6947cd;});})[_0x51fb('0x1b')](function(_0x29df02){if(_0x29df02){_0x38f8af[_0x51fb('0x23')]['contact']=_0x29df02[0x0];if(!_0x11efec['body']['UserId'])return;return db[_0x51fb('0x6f')][_0x51fb('0x52')]({'where':{'id':_0x11efec[_0x51fb('0x54')][_0x51fb('0x5c')],'role':_0x51fb('0x5e')},'attributes':['id',_0x51fb('0x33'),_0x51fb('0x70'),_0x51fb('0x71'),_0x51fb('0x72')],'raw':!![]});}return null;})[_0x51fb('0x1b')](function(_0x59b6b1){if(!_0x59b6b1)return null;_0x38f8af[_0x51fb('0x23')][_0x51fb('0x5e')]=_0x59b6b1;return _0x38f8af;})[_0x51fb('0x1b')](function(_0xc56478){if(_0xc56478){if(_0x11efec['body'][_0x51fb('0x73')]){_0x38f8af[_0x51fb('0x23')][_0x51fb('0x74')]=util['format'](_0x51fb('0x75'),_0x11efec['user'][_0x51fb('0x33')]);_0x38f8af['message'][_0x51fb('0x76')]=_0x38f8af[_0x51fb('0x76')];_0x38f8af['message'][_0x51fb('0x77')]=_0x38f8af[_0x51fb('0x76')];_0x38f8af['message']['event']='accept';return respondWithRpcPromise('EventManager',_0x51fb('0x78'),{'event':_0x51fb('0x79'),'message':_0x38f8af[_0x51fb('0x23')]},client9002)[_0x51fb('0x1b')](function(){return _0x38f8af;});}return _0x38f8af;}return null;})['then'](respondWithResult(_0x346036,null))[_0x51fb('0x26')](handleError(_0x346036,null));};var interaction_log=require(_0x51fb('0x56'))('openchannel-interactions');exports[_0x51fb('0x7a')]=function(_0x5a3730,_0x4a27ea,_0xd34a41){var _0x493c97={'agent':{},'channel':_0x51fb('0x7b')};if(_0x5a3730[_0x51fb('0x54')]['id']){delete _0x5a3730[_0x51fb('0x54')]['id'];}_0x5a3730['body'][_0x51fb('0x5c')]=_0x5a3730[_0x51fb('0x54')][_0x51fb('0x5c')]||_0x5a3730[_0x51fb('0x5d')]['id'];_0x493c97[_0x51fb('0x5e')]['id']=_0x5a3730[_0x51fb('0x54')][_0x51fb('0x5c')];return db['OpenchannelMessage'][_0x51fb('0x52')]({'where':{'id':_0x5a3730['params']['id'],'UserId':null}})[_0x51fb('0x1b')](handleEntityNotFound(_0x4a27ea,null))[_0x51fb('0x1b')](function(_0x12e070){if(_0x12e070){_0x493c97[_0x51fb('0x23')]=_0x12e070['get']({'plain':!![]});return db[_0x51fb('0x60')][_0x51fb('0x52')]({'where':{'id':_0x12e070[_0x51fb('0x61')]}});}return null;})['then'](handleEntityNotFound(_0x4a27ea,null))[_0x51fb('0x1b')](function(_0x20c579){if(_0x20c579){_0x493c97[_0x51fb('0x65')]=_0x20c579[_0x51fb('0x5f')]({'plain':!![]});interaction_log[_0x51fb('0x24')](_0x51fb('0x7c'),_0x5a3730['user']['id'],_0x5a3730[_0x51fb('0x5d')][_0x51fb('0x33')],_0x5a3730[_0x51fb('0x5d')][_0x51fb('0x67')],_0x493c97[_0x51fb('0x65')]['id'],_0x5a3730[_0x51fb('0x54')]?JSON[_0x51fb('0x20')](_0x5a3730[_0x51fb('0x54')]):_0x51fb('0x68'));return respondWithRpcPromise(_0x51fb('0x7d'),_0x51fb('0x7e'),_0x493c97);}return null;})[_0x51fb('0x1b')](function(_0x31a9b5){var _0x4b60ec=_0x51fb('0x6a')+_0x31a9b5[_0x51fb('0x23')]['ContactId'];return db['sequelize'][_0x51fb('0x3a')](_0x4b60ec,{'type':db[_0x51fb('0x6d')][_0x51fb('0x6e')]['SELECT'],'raw':!![]})[_0x51fb('0x1b')](function(_0x27cce4){return _0x27cce4;});})[_0x51fb('0x1b')](function(_0x1e00c2){if(_0x1e00c2){_0x493c97['message'][_0x51fb('0x7f')]=_0x1e00c2[0x0];if(!_0x5a3730['body']['UserId'])return;return db[_0x51fb('0x6f')][_0x51fb('0x52')]({'where':{'id':_0x5a3730[_0x51fb('0x54')]['UserId'],'role':'agent'},'attributes':['id',_0x51fb('0x33'),'fullname',_0x51fb('0x71'),'internal'],'raw':!![]});}return null;})['then'](function(_0x5b9dca){if(!_0x5b9dca)return null;_0x493c97[_0x51fb('0x23')][_0x51fb('0x5e')]=_0x5b9dca;return _0x493c97;})[_0x51fb('0x1b')](function(_0x1fb65f){if(_0x1fb65f){_0x1fb65f[_0x51fb('0x23')][_0x51fb('0x74')]=util['format'](_0x51fb('0x75'),_0x5a3730[_0x51fb('0x5d')][_0x51fb('0x33')]);_0x1fb65f[_0x51fb('0x23')][_0x51fb('0x76')]=_0x493c97['channel'];_0x1fb65f['message'][_0x51fb('0x77')]=_0x493c97[_0x51fb('0x76')];_0x1fb65f[_0x51fb('0x23')][_0x51fb('0x80')]=_0x51fb('0x7a');respondWithRpcPromise(_0x51fb('0x78'),'EventManager',{'event':_0x51fb('0x81'),'message':_0x1fb65f[_0x51fb('0x23')]},client9002);return _0x493c97;}return null;})[_0x51fb('0x1b')](respondWithResult(_0x4a27ea,null))[_0x51fb('0x26')](handleError(_0x4a27ea,null));};
\ No newline at end of file
+var _0x061b=['../../config/logger','api','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','http','client','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','limit','undefined','offset','count','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','OpenchannelMessage','includeAll','include','findAll','rows','show','params','body','find','describe','openchannel-interactions','openchannel','readAt','format','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','User','fullname','email','internal','manual','interface','SIP/%s','channel','accept','EventManager','acceptmessage','RejectMessage','rejectMessage','event','rejectmessage','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1953cf,_0x5c0263){var _0x4c5b31=function(_0x59862e){while(--_0x59862e){_0x1953cf['push'](_0x1953cf['shift']());}};_0x4c5b31(++_0x5c0263);}(_0x061b,0x6f));var _0xb061=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x061b[_0x2235bf];return _0x4c3a64;};'use strict';var emlformat=require(_0xb061('0x0'));var rimraf=require(_0xb061('0x1'));var zipdir=require(_0xb061('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb061('0x3'));var moment=require(_0xb061('0x4'));var BPromise=require(_0xb061('0x5'));var Mustache=require(_0xb061('0x6'));var util=require(_0xb061('0x7'));var path=require('path');var sox=require(_0xb061('0x8'));var csv=require(_0xb061('0x9'));var ejs=require(_0xb061('0xa'));var fs=require('fs');var fs_extra=require(_0xb061('0xb'));var _=require('lodash');var squel=require(_0xb061('0xc'));var crypto=require(_0xb061('0xd'));var jsforce=require(_0xb061('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb061('0xf'));var Papa=require(_0xb061('0x10'));var Redis=require(_0xb061('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xb061('0x12'));var as=require(_0xb061('0x13'));var hardwareService=require(_0xb061('0x14'));var logger=require(_0xb061('0x15'))(_0xb061('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb061('0x17'));var db=require(_0xb061('0x18'))['db'];config[_0xb061('0x19')]=_['defaults'](config[_0xb061('0x19')],{'host':_0xb061('0x1a'),'port':0x18eb});var socket=require(_0xb061('0x1b'))(new Redis(config[_0xb061('0x19')]));require(_0xb061('0x1c'))[_0xb061('0x1d')](socket);var jayson=require(_0xb061('0x1e'));var client=jayson['client'][_0xb061('0x1f')]({'port':0x232c});var client9002=jayson[_0xb061('0x20')][_0xb061('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x4095a1,_0x464842,_0x448b84,_0x146d71){return new BPromise(function(_0x293bc9,_0xa5a89e){var _0x2ac87f=_0x146d71||client;return _0x2ac87f['request'](_0x4095a1,_0x448b84)['then'](function(_0x4e2256){logger[_0xb061('0x21')](_0xb061('0x22'),_0x464842,_0xb061('0x23'));logger[_0xb061('0x24')](_0xb061('0x25'),_0x464842,'request\x20sent',JSON[_0xb061('0x26')](_0x4e2256));if(_0x4e2256['error']){if(_0x4e2256['error']['code']===0x1f4){logger['error'](_0xb061('0x22'),_0x464842,_0x4e2256[_0xb061('0x27')][_0xb061('0x28')]);return _0xa5a89e(_0x4e2256[_0xb061('0x27')][_0xb061('0x28')]);}logger[_0xb061('0x27')](_0xb061('0x22'),_0x464842,_0x4e2256['error'][_0xb061('0x28')]);return _0x293bc9(_0x4e2256['error'][_0xb061('0x28')]);}else{logger[_0xb061('0x21')](_0xb061('0x22'),_0x464842,_0xb061('0x23'));_0x293bc9(_0x4e2256[_0xb061('0x29')][_0xb061('0x28')]);}})[_0xb061('0x2a')](function(_0x1b5cec){logger[_0xb061('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x464842,_0x1b5cec);_0xa5a89e(_0x1b5cec);});});}function respondWithStatusCode(_0x37da52,_0x13cc9c){_0x13cc9c=_0x13cc9c||0xcc;return function(_0x86060f){if(_0x86060f){return _0x37da52['sendStatus'](_0x13cc9c);}return _0x37da52[_0xb061('0x2b')](_0x13cc9c)[_0xb061('0x2c')]();};}function respondWithResult(_0x49fe41,_0x45ea78){_0x45ea78=_0x45ea78||0xc8;return function(_0x2cf090){if(_0x2cf090){return _0x49fe41[_0xb061('0x2b')](_0x45ea78)['json'](_0x2cf090);}};}function respondWithFilteredResult(_0x22a415,_0x1b393e){return function(_0x5d1937){if(_0x5d1937){var _0x1fec75=typeof _0x1b393e['offset']==='undefined'&&typeof _0x1b393e[_0xb061('0x2d')]===_0xb061('0x2e');var _0x4935b0=_0x5d1937['count'];var _0x12c542=_0x1fec75?0x0:_0x1b393e[_0xb061('0x2f')];var _0x7df5d5=_0x1fec75?_0x5d1937[_0xb061('0x30')]:_0x1b393e[_0xb061('0x2f')]+_0x1b393e[_0xb061('0x2d')];var _0x3155e6;if(_0x7df5d5>=_0x4935b0){_0x7df5d5=_0x4935b0;_0x3155e6=0xc8;}else{_0x3155e6=0xce;}_0x22a415['status'](_0x3155e6);return _0x22a415[_0xb061('0x31')](_0xb061('0x32'),_0x12c542+'-'+_0x7df5d5+'/'+_0x4935b0)[_0xb061('0x33')](_0x5d1937);}return null;};}function patchUpdates(_0xed5e63){return function(_0x36a259){try{jsonpatch[_0xb061('0x34')](_0x36a259,_0xed5e63,!![]);}catch(_0x5d5d84){return BPromise[_0xb061('0x35')](_0x5d5d84);}return _0x36a259[_0xb061('0x36')]();};}function saveUpdates(_0x4165d0,_0x57ff49){return function(_0x5b5f3d){if(_0x5b5f3d){return _0x5b5f3d[_0xb061('0x37')](_0x4165d0)[_0xb061('0x38')](function(_0x3f3648){return _0x3f3648;});}return null;};}function removeEntity(_0x9c4aec,_0x3a00f3){return function(_0x1f8436){if(_0x1f8436){return _0x1f8436[_0xb061('0x39')]()['then'](function(){_0x9c4aec['status'](0xcc)[_0xb061('0x2c')]();});}};}function handleEntityNotFound(_0x4ae7a0,_0x33339a){return function(_0x49c733){if(!_0x49c733){_0x4ae7a0[_0xb061('0x3a')](0x194);}return _0x49c733;};}function handleError(_0x42dee4,_0x520d66){_0x520d66=_0x520d66||0x1f4;return function(_0x4d52fc){logger['error'](_0x4d52fc[_0xb061('0x3b')]);if(_0x4d52fc[_0xb061('0x3c')]){delete _0x4d52fc[_0xb061('0x3c')];}_0x42dee4[_0xb061('0x2b')](_0x520d66)[_0xb061('0x3d')](_0x4d52fc);};}exports[_0xb061('0x3e')]=function(_0x29e53f,_0x4a2148){var _0x45cace={},_0x84787e={},_0x3a79a5={'count':0x0,'rows':[]};var _0x178439=_[_0xb061('0x3f')](db['OpenchannelMessage'][_0xb061('0x40')],function(_0x140223){return{'name':_0x140223[_0xb061('0x41')],'type':_0x140223[_0xb061('0x42')][_0xb061('0x43')]};});_0x84787e[_0xb061('0x44')]=_[_0xb061('0x3f')](_0x178439,_0xb061('0x3c'));_0x84787e['query']=_[_0xb061('0x45')](_0x29e53f[_0xb061('0x46')]);_0x84787e[_0xb061('0x47')]=_[_0xb061('0x48')](_0x84787e[_0xb061('0x44')],_0x84787e[_0xb061('0x46')]);_0x45cace[_0xb061('0x49')]=_[_0xb061('0x48')](_0x84787e['model'],qs[_0xb061('0x4a')](_0x29e53f[_0xb061('0x46')]['fields']));_0x45cace[_0xb061('0x49')]=_0x45cace['attributes']['length']?_0x45cace[_0xb061('0x49')]:_0x84787e['model'];if(!_0x29e53f['query'][_0xb061('0x4b')](_0xb061('0x4c'))){_0x45cace['limit']=qs[_0xb061('0x2d')](_0x29e53f[_0xb061('0x46')]['limit']);_0x45cace[_0xb061('0x2f')]=qs['offset'](_0x29e53f[_0xb061('0x46')][_0xb061('0x2f')]);}_0x45cace[_0xb061('0x4d')]=qs[_0xb061('0x4e')](_0x29e53f[_0xb061('0x46')]['sort']);_0x45cace[_0xb061('0x4f')]=qs[_0xb061('0x47')](_[_0xb061('0x50')](_0x29e53f['query'],_0x84787e[_0xb061('0x47')]),_0x178439);if(_0x29e53f[_0xb061('0x46')][_0xb061('0x51')]){_0x45cace[_0xb061('0x4f')]=_['merge'](_0x45cace[_0xb061('0x4f')],{'$or':_[_0xb061('0x3f')](_0x178439,function(_0x2378fe){if(_0x2378fe[_0xb061('0x42')]!=='VIRTUAL'){var _0xaa1fd9={};_0xaa1fd9[_0x2378fe[_0xb061('0x3c')]]={'$like':'%'+_0x29e53f[_0xb061('0x46')]['filter']+'%'};return _0xaa1fd9;}})});}_0x45cace=_[_0xb061('0x52')]({},_0x45cace,_0x29e53f[_0xb061('0x53')]);var _0x216a3b={'where':_0x45cace[_0xb061('0x4f')]};return db[_0xb061('0x54')][_0xb061('0x30')](_0x216a3b)[_0xb061('0x38')](function(_0x22ab58){_0x3a79a5[_0xb061('0x30')]=_0x22ab58;if(_0x29e53f[_0xb061('0x46')][_0xb061('0x55')]){_0x45cace[_0xb061('0x56')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0xb061('0x57')](_0x45cace);})[_0xb061('0x38')](function(_0x17bd8a){_0x3a79a5[_0xb061('0x58')]=_0x17bd8a;return _0x3a79a5;})[_0xb061('0x38')](respondWithFilteredResult(_0x4a2148,_0x45cace))[_0xb061('0x2a')](handleError(_0x4a2148,null));};exports[_0xb061('0x59')]=function(_0xb7097f,_0x425195){var _0x50e006={'raw':!![],'where':{'id':_0xb7097f[_0xb061('0x5a')]['id']}},_0x13e01b={};_0x13e01b[_0xb061('0x44')]=_[_0xb061('0x45')](db['OpenchannelMessage'][_0xb061('0x40')]);_0x13e01b[_0xb061('0x46')]=_[_0xb061('0x45')](_0xb7097f['query']);_0x13e01b[_0xb061('0x47')]=_[_0xb061('0x48')](_0x13e01b[_0xb061('0x44')],_0x13e01b[_0xb061('0x46')]);_0x50e006[_0xb061('0x49')]=_[_0xb061('0x48')](_0x13e01b[_0xb061('0x44')],qs[_0xb061('0x4a')](_0xb7097f[_0xb061('0x46')][_0xb061('0x4a')]));_0x50e006[_0xb061('0x49')]=_0x50e006[_0xb061('0x49')]['length']?_0x50e006[_0xb061('0x49')]:_0x13e01b[_0xb061('0x44')];if(_0xb7097f['query']['includeAll']){_0x50e006[_0xb061('0x56')]=[{'all':!![]}];}_0x50e006=_[_0xb061('0x52')]({},_0x50e006,_0xb7097f[_0xb061('0x53')]);return db[_0xb061('0x54')]['find'](_0x50e006)[_0xb061('0x38')](handleEntityNotFound(_0x425195,null))[_0xb061('0x38')](respondWithResult(_0x425195,null))[_0xb061('0x2a')](handleError(_0x425195,null));};exports['create']=function(_0x138a46,_0x134850){return db[_0xb061('0x54')]['create'](_0x138a46[_0xb061('0x5b')],{})[_0xb061('0x38')](respondWithResult(_0x134850,0xc9))['catch'](handleError(_0x134850,null));};exports[_0xb061('0x37')]=function(_0x45679d,_0x1244f6){if(_0x45679d[_0xb061('0x5b')]['id']){delete _0x45679d[_0xb061('0x5b')]['id'];}return db[_0xb061('0x54')][_0xb061('0x5c')]({'where':{'id':_0x45679d[_0xb061('0x5a')]['id']}})[_0xb061('0x38')](handleEntityNotFound(_0x1244f6,null))[_0xb061('0x38')](saveUpdates(_0x45679d[_0xb061('0x5b')],null))[_0xb061('0x38')](respondWithResult(_0x1244f6,null))['catch'](handleError(_0x1244f6,null));};exports[_0xb061('0x39')]=function(_0x4be570,_0x37f81d){return db[_0xb061('0x54')][_0xb061('0x5c')]({'where':{'id':_0x4be570[_0xb061('0x5a')]['id']}})['then'](handleEntityNotFound(_0x37f81d,null))[_0xb061('0x38')](removeEntity(_0x37f81d,null))[_0xb061('0x2a')](handleError(_0x37f81d,null));};exports[_0xb061('0x5d')]=function(_0xe734b3,_0x2257ce){return db[_0xb061('0x54')][_0xb061('0x5d')]()[_0xb061('0x38')](respondWithResult(_0x2257ce,null))[_0xb061('0x2a')](handleError(_0x2257ce,null));};var interaction_log=require(_0xb061('0x15'))(_0xb061('0x5e'));exports['accept']=function(_0x3a0369,_0x7263ce,_0x26b959){var _0x54e63f={'agent':{},'channel':_0xb061('0x5f')};if(_0x3a0369['body']['id']){delete _0x3a0369[_0xb061('0x5b')]['id'];}_0x3a0369[_0xb061('0x5b')]['read']=!![];_0x3a0369['body'][_0xb061('0x60')]=moment()[_0xb061('0x61')]('YYYY-MM-DD\x20HH:mm:ss');_0x3a0369['body']['UserId']=_0x3a0369[_0xb061('0x5b')][_0xb061('0x62')]||_0x3a0369[_0xb061('0x63')]['id'];_0x54e63f[_0xb061('0x64')]['id']=_0x3a0369['body'][_0xb061('0x62')];return db[_0xb061('0x54')][_0xb061('0x5c')]({'where':{'id':_0x3a0369['params']['id'],'UserId':null}})[_0xb061('0x38')](handleEntityNotFound(_0x7263ce,null))['then'](saveUpdates(_0x3a0369['body'],null))[_0xb061('0x38')](function(_0x20a287){if(_0x20a287){_0x54e63f[_0xb061('0x28')]=_0x20a287[_0xb061('0x65')]({'plain':!![]});return db[_0xb061('0x66')][_0xb061('0x5c')]({'where':{'id':_0x20a287[_0xb061('0x67')]}});}return null;})['then'](handleEntityNotFound(_0x7263ce,null))[_0xb061('0x38')](function(_0x3ada34){if(_0x3ada34){return _0x3ada34['update']({'UserId':_0x3a0369[_0xb061('0x5b')]['UserId'],'read1stAt':_[_0xb061('0x68')](_0x3ada34[_0xb061('0x69')])?moment()[_0xb061('0x61')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xb061('0x38')](function(_0x4363a8){if(_0x4363a8){_0x54e63f[_0xb061('0x6a')]=_0x4363a8[_0xb061('0x65')]({'plain':!![]});interaction_log[_0xb061('0x21')](_0xb061('0x6b'),_0x3a0369['user']['id'],_0x3a0369[_0xb061('0x63')][_0xb061('0x3c')],_0x3a0369[_0xb061('0x63')][_0xb061('0x6c')],_0x54e63f['interaction']['id'],_0x3a0369[_0xb061('0x5b')]?JSON[_0xb061('0x26')](_0x3a0369[_0xb061('0x5b')]):_0xb061('0x6d'));return respondWithRpcPromise(_0xb061('0x6e'),_0xb061('0x6f'),_0x54e63f);}return null;})[_0xb061('0x38')](function(_0x29da64){var _0x595388=_0xb061('0x70')+_0x29da64[_0xb061('0x28')][_0xb061('0x71')];return db[_0xb061('0x72')][_0xb061('0x46')](_0x595388,{'type':db[_0xb061('0x73')][_0xb061('0x74')]['SELECT'],'raw':!![]})[_0xb061('0x38')](function(_0x36168f){return _0x36168f;});})[_0xb061('0x38')](function(_0x53ecf8){if(_0x53ecf8){_0x54e63f[_0xb061('0x28')]['contact']=_0x53ecf8[0x0];if(!_0x3a0369[_0xb061('0x5b')][_0xb061('0x62')])return;return db[_0xb061('0x75')][_0xb061('0x5c')]({'where':{'id':_0x3a0369['body'][_0xb061('0x62')],'role':_0xb061('0x64')},'attributes':['id',_0xb061('0x3c'),_0xb061('0x76'),_0xb061('0x77'),_0xb061('0x78')],'raw':!![]});}return null;})[_0xb061('0x38')](function(_0x47ec7f){if(!_0x47ec7f)return null;_0x54e63f[_0xb061('0x28')][_0xb061('0x64')]=_0x47ec7f;return _0x54e63f;})[_0xb061('0x38')](function(_0x34e514){if(_0x34e514){if(_0x3a0369[_0xb061('0x5b')][_0xb061('0x79')]){_0x54e63f[_0xb061('0x28')][_0xb061('0x7a')]=util[_0xb061('0x61')](_0xb061('0x7b'),_0x3a0369['user'][_0xb061('0x3c')]);_0x54e63f['message'][_0xb061('0x7c')]=_0x54e63f[_0xb061('0x7c')];_0x54e63f['message']['event']=_0xb061('0x7d');return respondWithRpcPromise(_0xb061('0x7e'),_0xb061('0x7e'),{'event':_0xb061('0x7f'),'message':_0x54e63f[_0xb061('0x28')]},client9002)['then'](function(){return _0x54e63f;});}return _0x54e63f;}return null;})[_0xb061('0x38')](respondWithResult(_0x7263ce,null))[_0xb061('0x2a')](handleError(_0x7263ce,null));};var interaction_log=require(_0xb061('0x15'))(_0xb061('0x5e'));exports[_0xb061('0x35')]=function(_0x36fa00,_0x5b9162,_0x3aae43){var _0x4681f9={'agent':{},'channel':_0xb061('0x5f')};if(_0x36fa00[_0xb061('0x5b')]['id']){delete _0x36fa00[_0xb061('0x5b')]['id'];}_0x36fa00[_0xb061('0x5b')][_0xb061('0x62')]=_0x36fa00[_0xb061('0x5b')][_0xb061('0x62')]||_0x36fa00['user']['id'];_0x4681f9[_0xb061('0x64')]['id']=_0x36fa00['body'][_0xb061('0x62')];return db['OpenchannelMessage'][_0xb061('0x5c')]({'where':{'id':_0x36fa00['params']['id'],'UserId':null}})[_0xb061('0x38')](handleEntityNotFound(_0x5b9162,null))[_0xb061('0x38')](function(_0x4f8601){if(_0x4f8601){_0x4681f9[_0xb061('0x28')]=_0x4f8601[_0xb061('0x65')]({'plain':!![]});return db[_0xb061('0x66')]['find']({'where':{'id':_0x4f8601[_0xb061('0x67')]}});}return null;})[_0xb061('0x38')](handleEntityNotFound(_0x5b9162,null))[_0xb061('0x38')](function(_0x10d4e0){if(_0x10d4e0){_0x4681f9[_0xb061('0x6a')]=_0x10d4e0[_0xb061('0x65')]({'plain':!![]});interaction_log[_0xb061('0x21')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x36fa00[_0xb061('0x63')]['id'],_0x36fa00[_0xb061('0x63')][_0xb061('0x3c')],_0x36fa00['user'][_0xb061('0x6c')],_0x4681f9[_0xb061('0x6a')]['id'],_0x36fa00[_0xb061('0x5b')]?JSON['stringify'](_0x36fa00[_0xb061('0x5b')]):_0xb061('0x6d'));return respondWithRpcPromise(_0xb061('0x80'),_0xb061('0x81'),_0x4681f9);}return null;})[_0xb061('0x38')](function(_0xf4b85d){var _0x370097=_0xb061('0x70')+_0xf4b85d[_0xb061('0x28')][_0xb061('0x71')];return db[_0xb061('0x72')][_0xb061('0x46')](_0x370097,{'type':db[_0xb061('0x73')][_0xb061('0x74')]['SELECT'],'raw':!![]})[_0xb061('0x38')](function(_0x286a9c){return _0x286a9c;});})[_0xb061('0x38')](function(_0xcaeabb){if(_0xcaeabb){_0x4681f9[_0xb061('0x28')]['contact']=_0xcaeabb[0x0];if(!_0x36fa00['body']['UserId'])return;return db[_0xb061('0x75')][_0xb061('0x5c')]({'where':{'id':_0x36fa00[_0xb061('0x5b')][_0xb061('0x62')],'role':_0xb061('0x64')},'attributes':['id',_0xb061('0x3c'),'fullname',_0xb061('0x77'),'internal'],'raw':!![]});}return null;})[_0xb061('0x38')](function(_0x3e2551){if(!_0x3e2551)return null;_0x4681f9[_0xb061('0x28')][_0xb061('0x64')]=_0x3e2551;return _0x4681f9;})['then'](function(_0x595582){if(_0x595582){_0x595582[_0xb061('0x28')][_0xb061('0x7a')]=util[_0xb061('0x61')]('SIP/%s',_0x36fa00[_0xb061('0x63')]['name']);_0x595582[_0xb061('0x28')][_0xb061('0x7c')]=_0x4681f9['channel'];_0x595582['message'][_0xb061('0x82')]=_0xb061('0x35');respondWithRpcPromise(_0xb061('0x7e'),_0xb061('0x7e'),{'event':_0xb061('0x83'),'message':_0x595582['message']},client9002);return _0x4681f9;}return null;})['then'](respondWithResult(_0x5b9162,null))['catch'](handleError(_0x5b9162,null));};
\ No newline at end of file
index 2f60818..fc8fe1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b1a=['hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','update','emit'];(function(_0x259ee7,_0x43102b){var _0x205c02=function(_0x5a64e1){while(--_0x5a64e1){_0x259ee7['push'](_0x259ee7['shift']());}};_0x205c02(++_0x43102b);}(_0x8b1a,0x161));var _0xa8b1=function(_0x577fac,_0x1096b9){_0x577fac=_0x577fac-0x0;var _0x21404c=_0x8b1a[_0x577fac];return _0x21404c;};'use strict';var EventEmitter=require(_0xa8b1('0x0'));var OpenchannelMessage=require(_0xa8b1('0x1'))['db'][_0xa8b1('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xa8b1('0x3')](0x0);var events={'afterCreate':_0xa8b1('0x4'),'afterUpdate':_0xa8b1('0x5'),'afterDestroy':'remove'};function emitEvent(_0x357f48){return function(_0x30e770,_0x2be0b8,_0x43d3aa){OpenchannelMessageEvents[_0xa8b1('0x6')](_0x357f48+':'+_0x30e770['id'],_0x30e770);OpenchannelMessageEvents['emit'](_0x357f48,_0x30e770);_0x43d3aa(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0xa8b1('0x7')](e,emitEvent(event));}}module[_0xa8b1('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x6a70=['events','OpenchannelMessage','setMaxListeners','save','remove','exports'];(function(_0xee1251,_0x24ba2d){var _0x9bdfec=function(_0xcce427){while(--_0xcce427){_0xee1251['push'](_0xee1251['shift']());}};_0x9bdfec(++_0x24ba2d);}(_0x6a70,0x120));var _0x06a7=function(_0x4f0488,_0x114e8c){_0x4f0488=_0x4f0488-0x0;var _0x5a5726=_0x6a70[_0x4f0488];return _0x5a5726;};'use strict';var EventEmitter=require(_0x06a7('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0x06a7('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x06a7('0x2')](0x0);var events={'afterCreate':_0x06a7('0x3'),'afterUpdate':'update','afterDestroy':_0x06a7('0x4')};function emitEvent(_0x4e4ac7){return function(_0x46cd7f,_0x461fce,_0x27be7d){OpenchannelMessageEvents['emit'](_0x4e4ac7+':'+_0x46cd7f['id'],_0x46cd7f);OpenchannelMessageEvents['emit'](_0x4e4ac7,_0x46cd7f);_0x27be7d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x06a7('0x5')]=OpenchannelMessageEvents;
\ No newline at end of file
index fca45d4..e252c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c3c=['Forwarding\x20message\x20%d\x20to\x20%s','omit','Contact','method','GET','POST','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','fti_openchannel_messages','body','models','get','direction','toLowerCase','out','isNil','UserId','OpenchannelInteraction','OpenchannelInteractionId','then','update','createdAt','catch','error','describe','OpenchannelAccount','find','Interactions','CmContact','keys','replyUri','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format'];(function(_0x3d8c7a,_0x3497ab){var _0x58eb70=function(_0x3aff41){while(--_0x3aff41){_0x3d8c7a['push'](_0x3d8c7a['shift']());}};_0x58eb70(++_0x3497ab);}(_0x5c3c,0x132));var _0xc5c3=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0x5c3c[_0x34bf97];return _0x292719;};'use strict';var _=require(_0xc5c3('0x0'));var util=require(_0xc5c3('0x1'));var logger=require(_0xc5c3('0x2'))(_0xc5c3('0x3'));var moment=require('moment');var BPromise=require(_0xc5c3('0x4'));var rp=require(_0xc5c3('0x5'));var fs=require('fs');var path=require(_0xc5c3('0x6'));var rimraf=require(_0xc5c3('0x7'));var config=require(_0xc5c3('0x8'));var attributes=require(_0xc5c3('0x9'));module[_0xc5c3('0xa')]=function(_0x23a6b5,_0x28bdd9){return _0x23a6b5['define']('OpenchannelMessage',attributes,{'tableName':'openchannel_messages','paranoid':![],'indexes':[{'name':_0xc5c3('0xb'),'fields':[_0xc5c3('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x110b89,_0x46e2c1,_0x52f3eb){var _0x14140f=_0x23a6b5[_0xc5c3('0xd')];var _0x4e329f=_0x110b89[_0xc5c3('0xe')]({'plain':!![]});if(_0x4e329f[_0xc5c3('0xf')][_0xc5c3('0x10')]()==='in'||_0x4e329f['direction'][_0xc5c3('0x10')]()===_0xc5c3('0x11')&&!_0x4e329f['secret']&&!_[_0xc5c3('0x12')](_0x4e329f[_0xc5c3('0x13')])){_0x14140f[_0xc5c3('0x14')]['findOne']({'where':{'id':_0x4e329f[_0xc5c3('0x15')]}})[_0xc5c3('0x16')](function(_0x1488ab){if(_0x1488ab){_0x1488ab[_0xc5c3('0x17')]({'lastMsgAt':_0x4e329f[_0xc5c3('0x18')],'lastMsgDirection':_0x4e329f['direction']['toLowerCase']()});}})[_0xc5c3('0x19')](function(_0x577e1a){console[_0xc5c3('0x1a')](_0x577e1a);});}if(_0x4e329f[_0xc5c3('0xf')]==='out'&&!_0x4e329f['secret']){var _0x467ba9;_0x14140f['CmContact'][_0xc5c3('0x1b')]()[_0xc5c3('0x16')](function(_0x2ff158){return _0x14140f[_0xc5c3('0x1c')][_0xc5c3('0x1d')]({'where':{'id':_0x4e329f['OpenchannelAccountId']},'include':[{'model':_0x14140f[_0xc5c3('0x14')],'as':_0xc5c3('0x1e'),'where':{'id':_0x4e329f[_0xc5c3('0x15')]},'limit':0x1,'include':[{'model':_0x14140f[_0xc5c3('0x1f')],'as':'Contact','attributes':_[_0xc5c3('0x20')](_0x2ff158)}]}]});})[_0xc5c3('0x16')](function(_0x3cc612){_0x467ba9=_0x3cc612[_0xc5c3('0xe')]({'plain':!![]});if(_0x467ba9&&_0x467ba9[_0xc5c3('0x21')]){logger['info'](_0xc5c3('0x22'),_0xc5c3('0x23'),util[_0xc5c3('0x24')](_0xc5c3('0x25'),_0x4e329f['id'],_0x467ba9[_0xc5c3('0x21')]));if(_0x467ba9[_0xc5c3('0x1e')]&&_0x467ba9[_0xc5c3('0x1e')]['length']){_0x4e329f['Interaction']=_[_0xc5c3('0x26')](_0x467ba9[_0xc5c3('0x1e')][0x0],'Contact');_0x4e329f['Contact']=_0x467ba9[_0xc5c3('0x1e')][0x0][_0xc5c3('0x27')];}var _0x46e2c1={'method':'POST','uri':encodeURI(_0x467ba9['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x46e2c1[_0xc5c3('0x28')]){case _0xc5c3('0x29'):_0x46e2c1['qs']=_0x4e329f;break;case _0xc5c3('0x2a'):_0x46e2c1[_0xc5c3('0xc')]=_0x4e329f;break;}return rp(_0x46e2c1)['then'](function(_0x21efd6){logger['info'](_0xc5c3('0x22'),'afterCreate',util[_0xc5c3('0x24')](_0xc5c3('0x2b'),_0x4e329f['id'],_0x467ba9[_0xc5c3('0x21')]));if(_0x21efd6[_0xc5c3('0xc')][_0xc5c3('0x2c')]&&_0x21efd6[_0xc5c3('0xc')][_0xc5c3('0x2c')]!=_0x4e329f['Interaction'][_0xc5c3('0x2c')]){return _0x14140f['OpenchannelInteraction'][_0xc5c3('0x17')]({'threadId':_0x21efd6[_0xc5c3('0xc')]['threadId']},{'logging':!![],'where':{'id':_0x4e329f['Interaction']['id']}});}else{return;}})[_0xc5c3('0x16')](function(){return _0x110b89[_0xc5c3('0x17')]({'read':!![]});})[_0xc5c3('0x19')](function(_0x19e482){logger['error'](_0xc5c3('0x22'),_0xc5c3('0x23'),util[_0xc5c3('0x2d')](_0x19e482,{'showHidden':![],'depth':null}));_0x52f3eb();});}else{_0x52f3eb();}})[_0xc5c3('0x2e')](function(){_0x52f3eb();});}else{_0x52f3eb();}}},'charset':_0xc5c3('0x2f'),'collate':_0xc5c3('0x30')});};
\ No newline at end of file
+var _0x2032=['body','models','direction','out','secret','then','createdAt','toLowerCase','catch','error','describe','OpenchannelAccount','find','OpenchannelInteraction','OpenchannelInteractionId','CmContact','Contact','keys','replyUri','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','omit','POST','method','GET','OpenchannelMessage,\x20%s,\x20%s','format','Message\x20%d\x20forwarded\x20to\x20%s','threadId','Interaction','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages'];(function(_0x3d6acc,_0x54d58b){var _0x121f12=function(_0x36ff1c){while(--_0x36ff1c){_0x3d6acc['push'](_0x3d6acc['shift']());}};_0x121f12(++_0x54d58b);}(_0x2032,0xd9));var _0x2203=function(_0x237156,_0x1ea3a1){_0x237156=_0x237156-0x0;var _0x3b045e=_0x2032[_0x237156];return _0x3b045e;};'use strict';var _=require('lodash');var util=require(_0x2203('0x0'));var logger=require(_0x2203('0x1'))(_0x2203('0x2'));var moment=require('moment');var BPromise=require(_0x2203('0x3'));var rp=require(_0x2203('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var attributes=require(_0x2203('0x7'));module[_0x2203('0x8')]=function(_0x3f7ba1,_0x13367a){return _0x3f7ba1[_0x2203('0x9')](_0x2203('0xa'),attributes,{'tableName':_0x2203('0xb'),'paranoid':![],'indexes':[{'name':_0x2203('0xc'),'fields':[_0x2203('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x526ae0,_0x10f055,_0x549908){var _0x27081c=_0x3f7ba1[_0x2203('0xe')];var _0x6339c4=_0x526ae0['get']({'plain':!![]});if(_0x6339c4[_0x2203('0xf')]['toLowerCase']()==='in'||_0x6339c4[_0x2203('0xf')]['toLowerCase']()===_0x2203('0x10')&&!_0x6339c4[_0x2203('0x11')]&&!_['isNil'](_0x6339c4['UserId'])){_0x27081c['OpenchannelInteraction']['findOne']({'where':{'id':_0x6339c4['OpenchannelInteractionId']}})[_0x2203('0x12')](function(_0x538b30){if(_0x538b30){_0x538b30['update']({'lastMsgAt':_0x6339c4[_0x2203('0x13')],'lastMsgDirection':_0x6339c4[_0x2203('0xf')][_0x2203('0x14')]()});}})[_0x2203('0x15')](function(_0x226209){console[_0x2203('0x16')](_0x226209);});}if(_0x6339c4[_0x2203('0xf')]===_0x2203('0x10')&&!_0x6339c4[_0x2203('0x11')]){var _0x3053f3;_0x27081c['CmContact'][_0x2203('0x17')]()[_0x2203('0x12')](function(_0x4893ff){return _0x27081c[_0x2203('0x18')][_0x2203('0x19')]({'where':{'id':_0x6339c4['OpenchannelAccountId']},'include':[{'model':_0x27081c[_0x2203('0x1a')],'as':'Interactions','where':{'id':_0x6339c4[_0x2203('0x1b')]},'limit':0x1,'include':[{'model':_0x27081c[_0x2203('0x1c')],'as':_0x2203('0x1d'),'attributes':_[_0x2203('0x1e')](_0x4893ff)}]}]});})[_0x2203('0x12')](function(_0x449039){_0x3053f3=_0x449039['get']({'plain':!![]});if(_0x3053f3&&_0x3053f3[_0x2203('0x1f')]){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x2203('0x20'),util['format'](_0x2203('0x21'),_0x6339c4['id'],_0x3053f3[_0x2203('0x1f')]));if(_0x3053f3['Interactions']&&_0x3053f3[_0x2203('0x22')]['length']){_0x6339c4['Interaction']=_[_0x2203('0x23')](_0x3053f3[_0x2203('0x22')][0x0],_0x2203('0x1d'));_0x6339c4[_0x2203('0x1d')]=_0x3053f3[_0x2203('0x22')][0x0][_0x2203('0x1d')];}var _0x10f055={'method':_0x2203('0x24'),'uri':encodeURI(_0x3053f3['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x10f055[_0x2203('0x25')]){case _0x2203('0x26'):_0x10f055['qs']=_0x6339c4;break;case _0x2203('0x24'):_0x10f055['body']=_0x6339c4;break;}return rp(_0x10f055)[_0x2203('0x12')](function(_0x1cec17){logger['info'](_0x2203('0x27'),_0x2203('0x20'),util[_0x2203('0x28')](_0x2203('0x29'),_0x6339c4['id'],_0x3053f3[_0x2203('0x1f')]));if(_0x1cec17[_0x2203('0xd')][_0x2203('0x2a')]&&_0x1cec17['body'][_0x2203('0x2a')]!=_0x6339c4[_0x2203('0x2b')][_0x2203('0x2a')]){return _0x27081c[_0x2203('0x1a')]['update']({'threadId':_0x1cec17[_0x2203('0xd')][_0x2203('0x2a')]},{'logging':!![],'where':{'id':_0x6339c4[_0x2203('0x2b')]['id']}});}else{return;}})[_0x2203('0x12')](function(){return _0x526ae0['update']({'read':!![]});})[_0x2203('0x15')](function(_0x50aa17){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x2203('0x20'),util['inspect'](_0x50aa17,{'showHidden':![],'depth':null}));_0x549908();});}else{_0x549908();}})['finally'](function(){_0x549908();});}else{_0x549908();}}},'charset':_0x2203('0x2c'),'collate':_0x2203('0x2d')});};
\ No newline at end of file
index a5b97ed..93dc474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['message','result','OpenchannelMessage','create','body','options','CreateOpenchannelMessage','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x2f7d4b,_0x35853d){var _0x3600ba=function(_0x5f040b){while(--_0x5f040b){_0x2f7d4b['push'](_0x2f7d4b['shift']());}};_0x3600ba(++_0x35853d);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1a809b,_0x4c15e3){_0x1a809b=_0x1a809b-0x0;var _0x5d90e6=_0x0b0e[_0x1a809b];return _0x5d90e6;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});config[_0xe0b0('0xc')]=_['defaults'](config['redis'],{'host':_0xe0b0('0xd'),'port':0x18eb});var socket=require(_0xe0b0('0xe'))(new Redis(config[_0xe0b0('0xc')]));require(_0xe0b0('0xf'))['register'](socket);function respondWithRpcPromise(_0x338e7c,_0x1dd3b8,_0x553d4f){return new BPromise(function(_0x1fef28,_0x2f32b6){return client['request'](_0x338e7c,_0x553d4f)[_0xe0b0('0x10')](function(_0x2cdad2){logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0xe0b0('0x12'));logger[_0xe0b0('0x13')](_0xe0b0('0x14'),_0x1dd3b8,_0xe0b0('0x12'),JSON[_0xe0b0('0x15')](_0x2cdad2));if(_0x2cdad2['error']){if(_0x2cdad2[_0xe0b0('0x16')][_0xe0b0('0x17')]===0x1f4){logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2[_0xe0b0('0x16')]['message']);return _0x2f32b6(_0x2cdad2[_0xe0b0('0x16')]['message']);}logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2['error'][_0xe0b0('0x19')]);return _0x1fef28(_0x2cdad2['error'][_0xe0b0('0x19')]);}else{logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,'request\x20sent');_0x1fef28(_0x2cdad2[_0xe0b0('0x1a')]['message']);}})['catch'](function(_0x4bce65){logger[_0xe0b0('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0x4bce65);_0x2f32b6(_0x4bce65);});});}exports['CreateOpenchannelMessage']=function(_0x10cde1){var _0x59dff5=this;return new Promise(function(_0x472286,_0x5dba2f){return db[_0xe0b0('0x1b')][_0xe0b0('0x1c')](_0x10cde1[_0xe0b0('0x1d')],{'raw':_0x10cde1[_0xe0b0('0x1e')]?_0x10cde1[_0xe0b0('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2fa820){logger['info'](_0xe0b0('0x1f'),_0x10cde1);logger[_0xe0b0('0x13')]('CreateOpenchannelMessage',_0x10cde1,JSON[_0xe0b0('0x15')](_0x2fa820));_0x472286(_0x2fa820);})['catch'](function(_0x2208d0){logger['error'](_0xe0b0('0x1f'),_0x2208d0['message'],_0x10cde1);_0x5dba2f(_0x59dff5[_0xe0b0('0x16')](0x1f4,_0x2208d0['message']));});});};
\ No newline at end of file
+var _0x2ef3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','CreateOpenchannelMessage','create','options','info'];(function(_0xbdc74b,_0x1b1eae){var _0x113118=function(_0x1fe371){while(--_0x1fe371){_0xbdc74b['push'](_0xbdc74b['shift']());}};_0x113118(++_0x1b1eae);}(_0x2ef3,0xba));var _0x32ef=function(_0x5133e2,_0x251451){_0x5133e2=_0x5133e2-0x0;var _0x594f3b=_0x2ef3[_0x5133e2];return _0x594f3b;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x32ef('0xa')]=_[_0x32ef('0xb')](config[_0x32ef('0xa')],{'host':_0x32ef('0xc'),'port':0x18eb});var socket=require(_0x32ef('0xd'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);function respondWithRpcPromise(_0x28275c,_0x77df79,_0x56eb42){return new BPromise(function(_0x5780e9,_0x401d0b){return client[_0x32ef('0x10')](_0x28275c,_0x56eb42)[_0x32ef('0x11')](function(_0x1499c2){logger['info'](_0x32ef('0x12'),_0x77df79,'request\x20sent');logger[_0x32ef('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x77df79,_0x32ef('0x14'),JSON[_0x32ef('0x15')](_0x1499c2));if(_0x1499c2['error']){if(_0x1499c2['error'][_0x32ef('0x16')]===0x1f4){logger['error'](_0x32ef('0x12'),_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x401d0b(_0x1499c2[_0x32ef('0x17')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5780e9(_0x1499c2[_0x32ef('0x17')]['message']);}else{logger['info'](_0x32ef('0x12'),_0x77df79,_0x32ef('0x14'));_0x5780e9(_0x1499c2[_0x32ef('0x19')]['message']);}})[_0x32ef('0x1a')](function(_0x33e230){logger['error'](_0x32ef('0x12'),_0x77df79,_0x33e230);_0x401d0b(_0x33e230);});});}exports[_0x32ef('0x1b')]=function(_0x26aff3){var _0x251084=this;return new Promise(function(_0x445cda,_0x3aec05){return db['OpenchannelMessage'][_0x32ef('0x1c')](_0x26aff3['body'],{'raw':_0x26aff3[_0x32ef('0x1d')]?_0x26aff3[_0x32ef('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x32ef('0x11')](function(_0x97780){logger[_0x32ef('0x1e')]('CreateOpenchannelMessage',_0x26aff3);logger['debug'](_0x32ef('0x1b'),_0x26aff3,JSON[_0x32ef('0x15')](_0x97780));_0x445cda(_0x97780);})[_0x32ef('0x1a')](function(_0x478bef){logger['error'](_0x32ef('0x1b'),_0x478bef['message'],_0x26aff3);_0x3aec05(_0x251084['error'](0x1f4,_0x478bef[_0x32ef('0x18')]));});});};
\ No newline at end of file
index 83386b6..d488f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82e3=['save','update','emit','removeListener','length','openchannelMessage:','./openchannelMessage.events'];(function(_0x2dc696,_0x31de3f){var _0x207ef4=function(_0x2fb319){while(--_0x2fb319){_0x2dc696['push'](_0x2dc696['shift']());}};_0x207ef4(++_0x31de3f);}(_0x82e3,0x1aa));var _0x382e=function(_0x405d4a,_0x2b774e){_0x405d4a=_0x405d4a-0x0;var _0x33b57d=_0x82e3[_0x405d4a];return _0x33b57d;};'use strict';var OpenchannelMessageEvents=require(_0x382e('0x0'));var events=[_0x382e('0x1'),'remove',_0x382e('0x2')];function createListener(_0x561613,_0x33cf69){return function(_0x5d2c56){_0x33cf69[_0x382e('0x3')](_0x561613,_0x5d2c56);};}function removeListener(_0x406373,_0x4c6260){return function(){OpenchannelMessageEvents[_0x382e('0x4')](_0x406373,_0x4c6260);};}exports['register']=function(_0x5ea1b8){for(var _0x386210=0x0,_0x5bcdaa=events[_0x382e('0x5')];_0x386210<_0x5bcdaa;_0x386210++){var _0x249f15=events[_0x386210];var _0x59aad6=createListener(_0x382e('0x6')+_0x249f15,_0x5ea1b8);OpenchannelMessageEvents['on'](_0x249f15,_0x59aad6);}};
\ No newline at end of file
+var _0xcf8a=['update','emit','removeListener','register','./openchannelMessage.events','save','remove'];(function(_0x1ca5d0,_0x1cedd7){var _0x4a5426=function(_0x5793a4){while(--_0x5793a4){_0x1ca5d0['push'](_0x1ca5d0['shift']());}};_0x4a5426(++_0x1cedd7);}(_0xcf8a,0x1cb));var _0xacf8=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xcf8a[_0x19950b];return _0x3c6b41;};'use strict';var OpenchannelMessageEvents=require(_0xacf8('0x0'));var events=[_0xacf8('0x1'),_0xacf8('0x2'),_0xacf8('0x3')];function createListener(_0x2ae5a4,_0x1d9eb4){return function(_0xe3e80d){_0x1d9eb4[_0xacf8('0x4')](_0x2ae5a4,_0xe3e80d);};}function removeListener(_0x4a8c3c,_0x46b059){return function(){OpenchannelMessageEvents[_0xacf8('0x5')](_0x4a8c3c,_0x46b059);};}exports[_0xacf8('0x6')]=function(_0x372f60){for(var _0x39320a=0x0,_0x1a1a41=events['length'];_0x39320a<_0x1a1a41;_0x39320a++){var _0x4e8e53=events[_0x39320a];var _0xf4a074=createListener('openchannelMessage:'+_0x4e8e53,_0x372f60);OpenchannelMessageEvents['on'](_0x4e8e53,_0xf4a074);}};
\ No newline at end of file
index efab799..9a9cf57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc31c=['../../components/interaction/service','../../config/environment','./openchannelQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','put','delete','destroy','removeTeams','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x449ce6,_0x48a676){var _0x5e81e4=function(_0x59f6e5){while(--_0x59f6e5){_0x449ce6['push'](_0x449ce6['shift']());}};_0x5e81e4(++_0x48a676);}(_0xc31c,0x8f));var _0xcc31=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xc31c[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0xcc31('0x0'));var util=require(_0xcc31('0x1'));var path=require(_0xcc31('0x2'));var timeout=require(_0xcc31('0x3'));var express=require(_0xcc31('0x4'));var router=express[_0xcc31('0x5')]();var fs_extra=require(_0xcc31('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xcc31('0x7'));var config=require(_0xcc31('0x8'));var controller=require(_0xcc31('0x9'));router['get']('/',auth[_0xcc31('0xa')](),controller[_0xcc31('0xb')]);router[_0xcc31('0xc')](_0xcc31('0xd'),auth['isAuthenticated'](),controller[_0xcc31('0xe')]);router[_0xcc31('0xc')](_0xcc31('0xf'),auth['isAuthenticated'](),controller[_0xcc31('0x10')]);router[_0xcc31('0xc')](_0xcc31('0x11'),auth['isAuthenticated'](),controller['getMembers']);router['get'](_0xcc31('0x12'),auth['isAuthenticated'](),controller[_0xcc31('0x13')]);router[_0xcc31('0xc')](_0xcc31('0x14'),auth['isAuthenticated'](),controller[_0xcc31('0x15')]);router[_0xcc31('0x16')]('/',auth[_0xcc31('0xa')](),controller[_0xcc31('0x17')]);router[_0xcc31('0x16')](_0xcc31('0x12'),auth[_0xcc31('0xa')](),controller[_0xcc31('0x18')]);router[_0xcc31('0x16')](_0xcc31('0x14'),auth[_0xcc31('0xa')](),controller['addAgents']);router[_0xcc31('0x19')]('/:id',auth[_0xcc31('0xa')](),controller['update']);router[_0xcc31('0x1a')](_0xcc31('0xf'),auth[_0xcc31('0xa')](),controller[_0xcc31('0x1b')]);router[_0xcc31('0x1a')]('/:id/teams',auth[_0xcc31('0xa')](),controller[_0xcc31('0x1c')]);router[_0xcc31('0x1a')](_0xcc31('0x14'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xcc31('0x1d')]=router;
\ No newline at end of file
+var _0x96c6=['./openchannelQueue.controller','get','isAuthenticated','/describe','/:id','show','/:id/members','getMembers','/:id/teams','addTeams','/:id/users','update','destroy','removeTeams','delete','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1ef167,_0x444fcd){var _0x594b71=function(_0x37de4c){while(--_0x37de4c){_0x1ef167['push'](_0x1ef167['shift']());}};_0x594b71(++_0x444fcd);}(_0x96c6,0x1d3));var _0x696c=function(_0xff2c44,_0x19e07b){_0xff2c44=_0xff2c44-0x0;var _0x3bed7f=_0x96c6[_0xff2c44];return _0x3bed7f;};'use strict';var multer=require(_0x696c('0x0'));var util=require(_0x696c('0x1'));var path=require('path');var timeout=require(_0x696c('0x2'));var express=require(_0x696c('0x3'));var router=express[_0x696c('0x4')]();var fs_extra=require(_0x696c('0x5'));var auth=require(_0x696c('0x6'));var interaction=require(_0x696c('0x7'));var config=require('../../config/environment');var controller=require(_0x696c('0x8'));router[_0x696c('0x9')]('/',auth[_0x696c('0xa')](),controller['index']);router[_0x696c('0x9')](_0x696c('0xb'),auth[_0x696c('0xa')](),controller['describe']);router[_0x696c('0x9')](_0x696c('0xc'),auth[_0x696c('0xa')](),controller[_0x696c('0xd')]);router[_0x696c('0x9')](_0x696c('0xe'),auth[_0x696c('0xa')](),controller[_0x696c('0xf')]);router[_0x696c('0x9')](_0x696c('0x10'),auth[_0x696c('0xa')](),controller['getTeams']);router[_0x696c('0x9')]('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router['post']('/',auth[_0x696c('0xa')](),controller['create']);router['post'](_0x696c('0x10'),auth[_0x696c('0xa')](),controller[_0x696c('0x11')]);router['post'](_0x696c('0x12'),auth[_0x696c('0xa')](),controller['addAgents']);router['put']('/:id',auth[_0x696c('0xa')](),controller[_0x696c('0x13')]);router['delete']('/:id',auth[_0x696c('0xa')](),controller[_0x696c('0x14')]);router['delete']('/:id/teams',auth[_0x696c('0xa')](),controller[_0x696c('0x15')]);router[_0x696c('0x16')](_0x696c('0x12'),auth[_0x696c('0xa')](),controller[_0x696c('0x17')]);module[_0x696c('0x18')]=router;
\ No newline at end of file
index 512733c..6e6297c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa95e=['STRING','rrmemory','beepall','sequelize'];(function(_0xf55075,_0x1e9bff){var _0x335ff5=function(_0x34fee6){while(--_0x34fee6){_0xf55075['push'](_0xf55075['shift']());}};_0x335ff5(++_0x1e9bff);}(_0xa95e,0x10b));var _0xea95=function(_0x33f37d,_0x4a83bd){_0x33f37d=_0x33f37d-0x0;var _0x84e270=_0xa95e[_0x33f37d];return _0x84e270;};'use strict';var Sequelize=require(_0xea95('0x0'));module['exports']={'name':{'type':Sequelize[_0xea95('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xea95('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xea95('0x2'),_0xea95('0x3'),'roundrobin')}};
\ No newline at end of file
+var _0x4c01=['STRING','INTEGER','ENUM','rrmemory','sequelize','exports'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x4c01,0x6a));var _0x14c0=function(_0x195b62,_0x54621f){_0x195b62=_0x195b62-0x0;var _0x4df667=_0x4c01[_0x195b62];return _0x4df667;};'use strict';var Sequelize=require(_0x14c0('0x0'));module[_0x14c0('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x14c0('0x2')]},'timeout':{'type':Sequelize[_0x14c0('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x14c0('0x4')](_0x14c0('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
index c0ee0db..3907764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b8a=['addAgents','omit','spread','userOpenchannelQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','key','model','keys','filters','intersection','attributes','fields','hasOwnProperty','query','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','OpenchannelQueue','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','autoAssociation','describe','getMembers','findOne','UserOpenchannelQueue','rawAttributes','nolimit','OpenchannelQueueId','User','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','ids','Agents','online','voicePause','interface','flatMap','transaction','addTeams','each','emit','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','value','isEmpty','removeAgents','userOpenchannelQueue:remove'];(function(_0x3358ba,_0x24c5fc){var _0x296e73=function(_0x843ff3){while(--_0x843ff3){_0x3358ba['push'](_0x3358ba['shift']());}};_0x296e73(++_0x24c5fc);}(_0x3b8a,0x96));var _0xa3b8=function(_0x48e64c,_0x28b429){_0x48e64c=_0x48e64c-0x0;var _0xf2b75a=_0x3b8a[_0x48e64c];return _0xf2b75a;};'use strict';var emlformat=require(_0xa3b8('0x0'));var rimraf=require(_0xa3b8('0x1'));var zipdir=require(_0xa3b8('0x2'));var jsonpatch=require(_0xa3b8('0x3'));var rp=require(_0xa3b8('0x4'));var moment=require('moment');var BPromise=require(_0xa3b8('0x5'));var Mustache=require(_0xa3b8('0x6'));var util=require('util');var path=require(_0xa3b8('0x7'));var sox=require(_0xa3b8('0x8'));var csv=require('to-csv');var ejs=require(_0xa3b8('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa3b8('0xa'));var squel=require(_0xa3b8('0xb'));var crypto=require(_0xa3b8('0xc'));var jsforce=require(_0xa3b8('0xd'));var deskjs=require(_0xa3b8('0xe'));var toCsv=require(_0xa3b8('0xf'));var querystring=require('querystring');var Papa=require(_0xa3b8('0x10'));var Redis=require(_0xa3b8('0x11'));var authService=require(_0xa3b8('0x12'));var qs=require(_0xa3b8('0x13'));var as=require(_0xa3b8('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa3b8('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xa3b8('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa3b8('0x17'))['db'];config[_0xa3b8('0x18')]=_['defaults'](config[_0xa3b8('0x18')],{'host':_0xa3b8('0x19'),'port':0x18eb});var socket=require(_0xa3b8('0x1a'))(new Redis(config[_0xa3b8('0x18')]));require('./openchannelQueue.socket')['register'](socket);function respondWithStatusCode(_0x3d3a12,_0x5cf26b){_0x5cf26b=_0x5cf26b||0xcc;return function(_0x26e1bb){if(_0x26e1bb){return _0x3d3a12[_0xa3b8('0x1b')](_0x5cf26b);}return _0x3d3a12[_0xa3b8('0x1c')](_0x5cf26b)[_0xa3b8('0x1d')]();};}function respondWithResult(_0x3dc47e,_0x9e410a){_0x9e410a=_0x9e410a||0xc8;return function(_0x4ce3de){if(_0x4ce3de){return _0x3dc47e[_0xa3b8('0x1c')](_0x9e410a)[_0xa3b8('0x1e')](_0x4ce3de);}};}function respondWithFilteredResult(_0xebdf9f,_0x10be80){return function(_0x12d419){if(_0x12d419){var _0x2ad1e0=typeof _0x10be80[_0xa3b8('0x1f')]===_0xa3b8('0x20')&&typeof _0x10be80[_0xa3b8('0x21')]===_0xa3b8('0x20');var _0x3b3e60=_0x12d419[_0xa3b8('0x22')];var _0x1deabe=_0x2ad1e0?0x0:_0x10be80[_0xa3b8('0x1f')];var _0xcc455e=_0x2ad1e0?_0x12d419['count']:_0x10be80['offset']+_0x10be80['limit'];var _0x144f3b;if(_0xcc455e>=_0x3b3e60){_0xcc455e=_0x3b3e60;_0x144f3b=0xc8;}else{_0x144f3b=0xce;}_0xebdf9f[_0xa3b8('0x1c')](_0x144f3b);return _0xebdf9f['set'](_0xa3b8('0x23'),_0x1deabe+'-'+_0xcc455e+'/'+_0x3b3e60)[_0xa3b8('0x1e')](_0x12d419);}return null;};}function patchUpdates(_0x2a68e2){return function(_0x488fd1){try{jsonpatch[_0xa3b8('0x24')](_0x488fd1,_0x2a68e2,!![]);}catch(_0x181607){return BPromise[_0xa3b8('0x25')](_0x181607);}return _0x488fd1[_0xa3b8('0x26')]();};}function saveUpdates(_0xf5c61,_0x13abdf){return function(_0x28b12a){if(_0x28b12a){return _0x28b12a[_0xa3b8('0x27')](_0xf5c61)[_0xa3b8('0x28')](function(_0xb5dbd2){return _0xb5dbd2;});}return null;};}function removeEntity(_0x1efc0a,_0x42a48d){return function(_0x27b970){if(_0x27b970){return _0x27b970[_0xa3b8('0x29')]()['then'](function(){var _0x3d61f8=_0x27b970['get']({'plain':!![]});var _0x1f50ff=_0xa3b8('0x2a');return db[_0xa3b8('0x2b')][_0xa3b8('0x29')]({'where':{'type':_0x1f50ff,'resourceId':_0x3d61f8['id']}})[_0xa3b8('0x28')](function(){return _0x27b970;});})[_0xa3b8('0x28')](function(){_0x1efc0a[_0xa3b8('0x1c')](0xcc)[_0xa3b8('0x1d')]();});}};}function handleEntityNotFound(_0x1cdb56,_0x25a4c1){return function(_0x57179f){if(!_0x57179f){_0x1cdb56[_0xa3b8('0x1b')](0x194);}return _0x57179f;};}function handleError(_0x7eb489,_0x192d47){_0x192d47=_0x192d47||0x1f4;return function(_0x222e02){logger[_0xa3b8('0x2c')](_0x222e02[_0xa3b8('0x2d')]);if(_0x222e02[_0xa3b8('0x2e')]){delete _0x222e02['name'];}_0x7eb489[_0xa3b8('0x1c')](_0x192d47)[_0xa3b8('0x2f')](_0x222e02);};}exports[_0xa3b8('0x30')]=function(_0x1166c7,_0x54249e){var _0x2ccee9={},_0x51e8d8={},_0x56070c={'count':0x0,'rows':[]};var _0x4d3c63=_[_0xa3b8('0x31')](db['OpenchannelQueue']['rawAttributes'],function(_0x55ebdc){return{'name':_0x55ebdc['fieldName'],'type':_0x55ebdc['type'][_0xa3b8('0x32')]};});_0x51e8d8[_0xa3b8('0x33')]=_['map'](_0x4d3c63,_0xa3b8('0x2e'));_0x51e8d8['query']=_[_0xa3b8('0x34')](_0x1166c7['query']);_0x51e8d8[_0xa3b8('0x35')]=_[_0xa3b8('0x36')](_0x51e8d8[_0xa3b8('0x33')],_0x51e8d8['query']);_0x2ccee9[_0xa3b8('0x37')]=_[_0xa3b8('0x36')](_0x51e8d8[_0xa3b8('0x33')],qs[_0xa3b8('0x38')](_0x1166c7['query'][_0xa3b8('0x38')]));_0x2ccee9[_0xa3b8('0x37')]=_0x2ccee9[_0xa3b8('0x37')]['length']?_0x2ccee9[_0xa3b8('0x37')]:_0x51e8d8[_0xa3b8('0x33')];if(!_0x1166c7['query'][_0xa3b8('0x39')]('nolimit')){_0x2ccee9['limit']=qs[_0xa3b8('0x21')](_0x1166c7[_0xa3b8('0x3a')][_0xa3b8('0x21')]);_0x2ccee9[_0xa3b8('0x1f')]=qs[_0xa3b8('0x1f')](_0x1166c7[_0xa3b8('0x3a')][_0xa3b8('0x1f')]);}_0x2ccee9[_0xa3b8('0x3b')]=qs[_0xa3b8('0x3c')](_0x1166c7[_0xa3b8('0x3a')][_0xa3b8('0x3c')]);_0x2ccee9[_0xa3b8('0x3d')]=qs[_0xa3b8('0x35')](_[_0xa3b8('0x3e')](_0x1166c7[_0xa3b8('0x3a')],_0x51e8d8[_0xa3b8('0x35')]),_0x4d3c63);if(_0x1166c7['query'][_0xa3b8('0x3f')]){_0x2ccee9[_0xa3b8('0x3d')]=_['merge'](_0x2ccee9[_0xa3b8('0x3d')],{'$or':_[_0xa3b8('0x31')](_0x4d3c63,function(_0x1ebb7a){if(_0x1ebb7a[_0xa3b8('0x40')]!==_0xa3b8('0x41')){var _0x3ea252={};_0x3ea252[_0x1ebb7a[_0xa3b8('0x2e')]]={'$like':'%'+_0x1166c7['query'][_0xa3b8('0x3f')]+'%'};return _0x3ea252;}})});}_0x2ccee9=_[_0xa3b8('0x42')]({},_0x2ccee9,_0x1166c7[_0xa3b8('0x43')]);var _0x31f4bc={'where':_0x2ccee9[_0xa3b8('0x3d')]};return db['OpenchannelQueue'][_0xa3b8('0x22')](_0x31f4bc)[_0xa3b8('0x28')](function(_0xbcc9b5){_0x56070c[_0xa3b8('0x22')]=_0xbcc9b5;if(_0x1166c7['query'][_0xa3b8('0x44')]){_0x2ccee9[_0xa3b8('0x45')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0xa3b8('0x46')](_0x2ccee9);})[_0xa3b8('0x28')](function(_0x24b77b){_0x56070c[_0xa3b8('0x47')]=_0x24b77b;return _0x56070c;})[_0xa3b8('0x28')](respondWithFilteredResult(_0x54249e,_0x2ccee9))[_0xa3b8('0x48')](handleError(_0x54249e,null));};exports[_0xa3b8('0x49')]=function(_0x14d625,_0x315a54){var _0x1023df={'raw':!![],'where':{'id':_0x14d625[_0xa3b8('0x4a')]['id']}},_0x132037={};_0x132037[_0xa3b8('0x33')]=_['keys'](db[_0xa3b8('0x4b')]['rawAttributes']);_0x132037[_0xa3b8('0x3a')]=_['keys'](_0x14d625[_0xa3b8('0x3a')]);_0x132037[_0xa3b8('0x35')]=_[_0xa3b8('0x36')](_0x132037['model'],_0x132037[_0xa3b8('0x3a')]);_0x1023df[_0xa3b8('0x37')]=_[_0xa3b8('0x36')](_0x132037[_0xa3b8('0x33')],qs[_0xa3b8('0x38')](_0x14d625[_0xa3b8('0x3a')][_0xa3b8('0x38')]));_0x1023df[_0xa3b8('0x37')]=_0x1023df[_0xa3b8('0x37')][_0xa3b8('0x4c')]?_0x1023df[_0xa3b8('0x37')]:_0x132037[_0xa3b8('0x33')];if(_0x14d625[_0xa3b8('0x3a')][_0xa3b8('0x44')]){_0x1023df[_0xa3b8('0x45')]=[{'all':!![]}];}_0x1023df=_[_0xa3b8('0x42')]({},_0x1023df,_0x14d625[_0xa3b8('0x43')]);return db[_0xa3b8('0x4b')][_0xa3b8('0x4d')](_0x1023df)[_0xa3b8('0x28')](handleEntityNotFound(_0x315a54,null))[_0xa3b8('0x28')](respondWithResult(_0x315a54,null))['catch'](handleError(_0x315a54,null));};exports[_0xa3b8('0x4e')]=function(_0x22ef11,_0x2a8f3d){return db[_0xa3b8('0x4b')][_0xa3b8('0x4e')](_0x22ef11[_0xa3b8('0x4f')],{})[_0xa3b8('0x28')](function(_0x3814f6){var _0x1b2bfe=_0x22ef11[_0xa3b8('0x50')]['get']({'plain':!![]});if(!_0x1b2bfe)throw new Error(_0xa3b8('0x51'));if(_0x1b2bfe[_0xa3b8('0x52')]==='user'){var _0x21bba3=_0x3814f6[_0xa3b8('0x53')]({'plain':!![]});var _0x4092b9=_0xa3b8('0x2a');return db['UserProfileSection'][_0xa3b8('0x4d')]({'where':{'name':_0x4092b9,'userProfileId':_0x1b2bfe[_0xa3b8('0x54')]},'raw':!![]})[_0xa3b8('0x28')](function(_0x12ae9f){if(_0x12ae9f&&_0x12ae9f[_0xa3b8('0x55')]===0x0){return db['UserProfileResource']['create']({'name':_0x21bba3[_0xa3b8('0x2e')],'resourceId':_0x21bba3['id'],'type':_0x12ae9f['name'],'sectionId':_0x12ae9f['id']},{})[_0xa3b8('0x28')](function(){return _0x3814f6;});}else{return _0x3814f6;}})[_0xa3b8('0x48')](function(_0x4423b1){logger[_0xa3b8('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4423b1);throw _0x4423b1;});}return _0x3814f6;})[_0xa3b8('0x28')](respondWithResult(_0x2a8f3d,0xc9))['catch'](handleError(_0x2a8f3d,null));};exports[_0xa3b8('0x27')]=function(_0x671177,_0x54da2d){if(_0x671177[_0xa3b8('0x4f')]['id']){delete _0x671177[_0xa3b8('0x4f')]['id'];}return db[_0xa3b8('0x4b')][_0xa3b8('0x4d')]({'where':{'id':_0x671177[_0xa3b8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x54da2d,null))['then'](saveUpdates(_0x671177[_0xa3b8('0x4f')],null))['then'](respondWithResult(_0x54da2d,null))['catch'](handleError(_0x54da2d,null));};exports[_0xa3b8('0x29')]=function(_0x2ab720,_0x202fc4){return db['OpenchannelQueue'][_0xa3b8('0x4d')]({'where':{'id':_0x2ab720[_0xa3b8('0x4a')]['id']}})[_0xa3b8('0x28')](handleEntityNotFound(_0x202fc4,null))['then'](removeEntity(_0x202fc4,null))[_0xa3b8('0x48')](handleError(_0x202fc4,null));};exports[_0xa3b8('0x56')]=function(_0x5128fa,_0x5a1af1){return db['OpenchannelQueue'][_0xa3b8('0x56')]()[_0xa3b8('0x28')](respondWithResult(_0x5a1af1,null))[_0xa3b8('0x48')](handleError(_0x5a1af1,null));};exports[_0xa3b8('0x57')]=function(_0x30b6ea,_0x53fea0,_0xcfbab8){var _0x22aae8={'raw':!![],'where':{}},_0x4e55e8={},_0x216df3;return db['OpenchannelQueue'][_0xa3b8('0x58')]({'where':{'id':_0x30b6ea['params']['id']}})[_0xa3b8('0x28')](handleEntityNotFound(_0x53fea0,null))['then'](function(_0x24550f){if(_0x24550f){_0x216df3=_0x24550f[_0xa3b8('0x53')]({'plain':!![]});_0x4e55e8['model']=_['keys'](db[_0xa3b8('0x59')][_0xa3b8('0x5a')]);_0x4e55e8[_0xa3b8('0x3a')]=_[_0xa3b8('0x34')](_0x30b6ea['query']);_0x4e55e8[_0xa3b8('0x35')]=_['intersection'](_0x4e55e8[_0xa3b8('0x33')],_0x4e55e8['query']);_0x22aae8[_0xa3b8('0x37')]=_['intersection'](_0x4e55e8[_0xa3b8('0x33')],qs[_0xa3b8('0x38')](_0x30b6ea['query'][_0xa3b8('0x38')]));_0x22aae8[_0xa3b8('0x37')]=_0x22aae8[_0xa3b8('0x37')][_0xa3b8('0x4c')]?_0x22aae8[_0xa3b8('0x37')]:_0x4e55e8[_0xa3b8('0x33')];if(!_0x30b6ea[_0xa3b8('0x3a')][_0xa3b8('0x39')](_0xa3b8('0x5b'))){_0x22aae8[_0xa3b8('0x21')]=qs['limit'](_0x30b6ea[_0xa3b8('0x3a')][_0xa3b8('0x21')]);_0x22aae8[_0xa3b8('0x1f')]=qs[_0xa3b8('0x1f')](_0x30b6ea['query'][_0xa3b8('0x1f')]);}_0x22aae8[_0xa3b8('0x3b')]=qs[_0xa3b8('0x3c')](_0x30b6ea[_0xa3b8('0x3a')][_0xa3b8('0x3c')]);_0x22aae8[_0xa3b8('0x3d')]=qs[_0xa3b8('0x35')](_['pick'](_0x30b6ea['query'],_0x4e55e8[_0xa3b8('0x35')]));_0x22aae8[_0xa3b8('0x3d')][_0xa3b8('0x5c')]=_0x24550f['id'];if(_0x30b6ea['query'][_0xa3b8('0x3f')]){_0x22aae8[_0xa3b8('0x3d')]=_[_0xa3b8('0x42')](_0x22aae8[_0xa3b8('0x3d')],{'$or':_['map'](_0x22aae8[_0xa3b8('0x37')],function(_0x2b9811){var _0x51f2e7={};_0x51f2e7[_0x2b9811]={'$like':'%'+_0x30b6ea[_0xa3b8('0x3a')][_0xa3b8('0x3f')]+'%'};return _0x51f2e7;})});}_0x22aae8=_['merge']({},_0x22aae8,_0x30b6ea[_0xa3b8('0x43')]);return db[_0xa3b8('0x59')][_0xa3b8('0x46')](_0x22aae8);}})['then'](function(_0x36cc68){if(_0x36cc68){return db[_0xa3b8('0x5d')]['findAndCountAll']({'where':{'id':_[_0xa3b8('0x31')](_0x36cc68,_0xa3b8('0x5e')),'role':_0xa3b8('0x5f')},'attributes':['id',_0xa3b8('0x2e'),_0xa3b8('0x60'),_0xa3b8('0x61'),_0xa3b8('0x62')]});}})[_0xa3b8('0x28')](function(_0x3f4e0b){if(_0x3f4e0b){return{'count':_0x3f4e0b[_0xa3b8('0x22')],'rows':_[_0xa3b8('0x31')](_0x3f4e0b[_0xa3b8('0x47')],function(_0xbe53eb){return{'membername':_0xbe53eb[_0xa3b8('0x2e')],'UserId':_0xbe53eb['id'],'queue_name':_0x216df3[_0xa3b8('0x2e')],'OpenchannelQueueId':_0x216df3['id'],'interface':util[_0xa3b8('0x63')](_0xa3b8('0x64'),_0xa3b8('0x65'),_0xbe53eb[_0xa3b8('0x2e')]),'penalty':0x0,'paused':_0xbe53eb[_0xa3b8('0x60')],'createdAt':_0xbe53eb[_0xa3b8('0x62')],'updatedAt':_0xbe53eb['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xa3b8('0x28')](respondWithFilteredResult(_0x53fea0,_0x22aae8))[_0xa3b8('0x48')](handleError(_0x53fea0,null));};exports[_0xa3b8('0x66')]=function(_0x5135c2,_0x3fef40,_0x3f0005){var _0x5a54bc={};var _0x211f15={};var _0xdb9f7a;var _0x2ea537;return db[_0xa3b8('0x4b')][_0xa3b8('0x58')]({'where':{'id':_0x5135c2['params']['id']}})['then'](handleEntityNotFound(_0x3fef40,null))[_0xa3b8('0x28')](function(_0xdd397d){if(_0xdd397d){_0xdb9f7a=_0xdd397d;_0x211f15[_0xa3b8('0x33')]=_[_0xa3b8('0x34')](db[_0xa3b8('0x67')]['rawAttributes']);_0x211f15[_0xa3b8('0x3a')]=_[_0xa3b8('0x34')](_0x5135c2['query']);_0x211f15[_0xa3b8('0x35')]=_[_0xa3b8('0x36')](_0x211f15[_0xa3b8('0x33')],_0x211f15[_0xa3b8('0x3a')]);_0x5a54bc[_0xa3b8('0x37')]=_[_0xa3b8('0x36')](_0x211f15[_0xa3b8('0x33')],qs[_0xa3b8('0x38')](_0x5135c2['query'][_0xa3b8('0x38')]));_0x5a54bc['attributes']=_0x5a54bc[_0xa3b8('0x37')][_0xa3b8('0x4c')]?_0x5a54bc[_0xa3b8('0x37')]:_0x211f15[_0xa3b8('0x33')];_0x5a54bc[_0xa3b8('0x3b')]=qs[_0xa3b8('0x3c')](_0x5135c2[_0xa3b8('0x3a')][_0xa3b8('0x3c')]);_0x5a54bc[_0xa3b8('0x3d')]=qs[_0xa3b8('0x35')](_['pick'](_0x5135c2[_0xa3b8('0x3a')],_0x211f15[_0xa3b8('0x35')]));if(_0x5135c2[_0xa3b8('0x3a')][_0xa3b8('0x3f')]){_0x5a54bc[_0xa3b8('0x3d')]=_[_0xa3b8('0x42')](_0x5a54bc['where'],{'$or':_['map'](_0x5a54bc[_0xa3b8('0x37')],function(_0xf68ac2){var _0x4680d3={};_0x4680d3[_0xf68ac2]={'$like':'%'+_0x5135c2[_0xa3b8('0x3a')][_0xa3b8('0x3f')]+'%'};return _0x4680d3;})});}_0x5a54bc=_[_0xa3b8('0x42')]({},_0x5a54bc,_0x5135c2['options']);return _0xdb9f7a[_0xa3b8('0x66')](_0x5a54bc);}})['then'](function(_0x3ea4c7){if(_0x3ea4c7){_0x2ea537=_0x3ea4c7[_0xa3b8('0x4c')];if(!_0x5135c2[_0xa3b8('0x3a')]['hasOwnProperty'](_0xa3b8('0x5b'))){_0x5a54bc[_0xa3b8('0x21')]=qs[_0xa3b8('0x21')](_0x5135c2[_0xa3b8('0x3a')][_0xa3b8('0x21')]);_0x5a54bc[_0xa3b8('0x1f')]=qs[_0xa3b8('0x1f')](_0x5135c2[_0xa3b8('0x3a')][_0xa3b8('0x1f')]);}return _0xdb9f7a['getTeams'](_0x5a54bc);}})[_0xa3b8('0x28')](function(_0x134881){if(_0x134881){return _0x134881?{'count':_0x2ea537,'rows':_0x134881}:null;}})[_0xa3b8('0x28')](respondWithResult(_0x3fef40,null))['catch'](handleError(_0x3fef40,null));};exports['addTeams']=function(_0x190d5a,_0x4f1211,_0x1fe3a1){var _0x40ce36=_0x190d5a[_0xa3b8('0x4f')][_0xa3b8('0x68')];return db[_0xa3b8('0x67')]['findAll']({'where':{'id':_0x40ce36},'attributes':['id'],'include':[{'model':db[_0xa3b8('0x5d')],'as':_0xa3b8('0x69'),'attributes':['id',_0xa3b8('0x2e'),_0xa3b8('0x6a'),_0xa3b8('0x6b'),_0xa3b8('0x6c')],'raw':!![]}]})['then'](function(_0x5bbc16){if(_0x5bbc16){var _0x1b7bf9=_[_0xa3b8('0x6d')](_0x5bbc16,function(_0x5d58ec){var _0x57bbc7=_0x5d58ec[_0xa3b8('0x53')]({'plain':!![]});return _0x57bbc7[_0xa3b8('0x69')];});return db[_0xa3b8('0x4b')][_0xa3b8('0x4d')]({'where':{'id':_0x190d5a[_0xa3b8('0x4a')]['id']}})[_0xa3b8('0x28')](function(_0x18f44c){return db['sequelize'][_0xa3b8('0x6e')](function(_0x44f410){return _0x18f44c[_0xa3b8('0x6f')](_0x40ce36,{'transaction':_0x44f410})['then'](function(){return BPromise[_0xa3b8('0x70')](_0x1b7bf9,function(_0xafcca0){return db['UserOpenchannelQueue']['findOrCreate']({'where':{'UserId':_0xafcca0['id'],'OpenchannelQueueId':_0x190d5a[_0xa3b8('0x4a')]['id']},'transaction':_0x44f410});});})[_0xa3b8('0x28')](function(){_0x1b7bf9['forEach'](function(_0x581a76){socket[_0xa3b8('0x71')]('userOpenchannelQueue:save',{'UserId':_0x581a76['id'],'OpenchannelQueueId':_0x18f44c['id']});});});});});}})['then'](respondWithStatusCode(_0x4f1211,null))[_0xa3b8('0x48')](handleError(_0x4f1211,null));};exports[_0xa3b8('0x72')]=function(_0x3804c6,_0x589d4e,_0x388e14){return db[_0xa3b8('0x67')][_0xa3b8('0x46')]({'where':{'id':_0x3804c6[_0xa3b8('0x3a')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0xa3b8('0x69'),'attributes':['id'],'raw':!![]}]})[_0xa3b8('0x28')](handleEntityNotFound(_0x589d4e,null))[_0xa3b8('0x28')](function(_0x3fa4d7){var _0x3847a4=_['map'](_0x3fa4d7,'id');var _0x5195ec=[];var _0x8d5a51=[];var _0xebcdbf=squel[_0xa3b8('0x73')]();_0xebcdbf[_0xa3b8('0x74')](_0xa3b8('0x75'))[_0xa3b8('0x76')](_0xa3b8('0x77'),'tq')['join']('user_has_teams','ut',_0xa3b8('0x78'))['where'](_0xa3b8('0x79'),_0x3804c6[_0xa3b8('0x4a')]['id']);for(var _0x53cb8e=0x0;_0x53cb8e<_0x3fa4d7['length'];_0x53cb8e+=0x1){let _0x172c4d=_0x3fa4d7[_0x53cb8e];for(var _0x3b9819=0x0;_0x3b9819<_0x172c4d[_0xa3b8('0x69')]['length'];_0x3b9819+=0x1){let _0x4ee5ac=_0x172c4d[_0xa3b8('0x69')][_0x3b9819];var _0x4e2e06=_0xebcdbf[_0xa3b8('0x7a')]();_0x4e2e06['where'](_0xa3b8('0x7b'),_0x4ee5ac['id']);_0x8d5a51[_0xa3b8('0x7c')](db[_0xa3b8('0x7d')]['query'](_0x4e2e06[_0xa3b8('0x7e')](),{'type':db[_0xa3b8('0x7d')][_0xa3b8('0x7f')][_0xa3b8('0x80')]})[_0xa3b8('0x28')](function(_0x22bf55){if(_0x22bf55[_0xa3b8('0x4c')]===0x1){return _0x4ee5ac['id'];}else{var _0x332240=_[_0xa3b8('0x81')](_[_0xa3b8('0x31')](_0x22bf55,_0xa3b8('0x82')),function(_0x2782a9){return _[_0xa3b8('0x83')](_0x3847a4,_0x2782a9);});if(_0x332240){return _0x4ee5ac['id'];}}}));}}return BPromise[_0xa3b8('0x84')](_0x8d5a51)[_0xa3b8('0x28')](function(_0x1af5bb){_0x5195ec=_(_0x5195ec)[_0xa3b8('0x85')](_0x1af5bb)['compact']()[_0xa3b8('0x86')]();return db['OpenchannelQueue'][_0xa3b8('0x4d')]({'where':{'id':_0x3804c6[_0xa3b8('0x4a')]['id']}})[_0xa3b8('0x28')](function(_0x5a50bc){return db[_0xa3b8('0x7d')]['transaction'](function(_0x37432b){return _0x5a50bc['removeTeams'](_0x3804c6[_0xa3b8('0x3a')][_0xa3b8('0x68')],{'transaction':_0x37432b})[_0xa3b8('0x28')](function(){if(!_[_0xa3b8('0x87')](_0x5195ec)){return _0x5a50bc[_0xa3b8('0x88')](_0x5195ec,{'transaction':_0x37432b});}})['then'](function(){_0x5195ec['forEach'](function(_0x37fce9){socket[_0xa3b8('0x71')](_0xa3b8('0x89'),{'UserId':_0x37fce9,'OpenchannelQueueId':_0x5a50bc['id']});});});});});});})[_0xa3b8('0x28')](respondWithStatusCode(_0x589d4e,null))[_0xa3b8('0x48')](handleError(_0x589d4e,null));};exports['addAgents']=function(_0x1a8e07,_0x1910bd,_0x18c655){return db[_0xa3b8('0x4b')][_0xa3b8('0x4d')]({'where':{'id':_0x1a8e07[_0xa3b8('0x4a')]['id']}})[_0xa3b8('0x28')](handleEntityNotFound(_0x1910bd,null))[_0xa3b8('0x28')](function(_0x5b42af){if(_0x5b42af){return _0x5b42af[_0xa3b8('0x8a')](_0x1a8e07['body'][_0xa3b8('0x68')],_[_0xa3b8('0x8b')](_0x1a8e07['body'],[_0xa3b8('0x68'),'id'])||{})[_0xa3b8('0x8c')](function(_0x30d3a8){for(var _0x2f40c6=0x0;_0x2f40c6<_0x1a8e07[_0xa3b8('0x4f')]['ids'][_0xa3b8('0x4c')];_0x2f40c6+=0x1){socket[_0xa3b8('0x71')](_0xa3b8('0x8d'),{'UserId':Number(_0x1a8e07[_0xa3b8('0x4f')][_0xa3b8('0x68')][_0x2f40c6]),'OpenchannelQueueId':Number(_0x1a8e07['params']['id'])});}return _0x30d3a8;});}})[_0xa3b8('0x28')](respondWithResult(_0x1910bd,null))[_0xa3b8('0x48')](handleError(_0x1910bd,null));};exports[_0xa3b8('0x88')]=function(_0x48c925,_0x28079c,_0x30679b){return db['OpenchannelQueue']['find']({'where':{'id':_0x48c925[_0xa3b8('0x4a')]['id']}})[_0xa3b8('0x28')](handleEntityNotFound(_0x28079c,null))[_0xa3b8('0x28')](function(_0x35c6cd){if(_0x35c6cd){return _0x35c6cd[_0xa3b8('0x88')](_0x48c925['query'][_0xa3b8('0x68')])['then'](function(){if(_[_0xa3b8('0x8e')](_0x48c925[_0xa3b8('0x3a')][_0xa3b8('0x68')])){for(var _0x31d162=0x0;_0x31d162<_0x48c925[_0xa3b8('0x3a')][_0xa3b8('0x68')][_0xa3b8('0x4c')];_0x31d162+=0x1){socket[_0xa3b8('0x71')](_0xa3b8('0x89'),{'UserId':Number(_0x48c925['query'][_0xa3b8('0x68')][_0x31d162]),'OpenchannelQueueId':Number(_0x48c925[_0xa3b8('0x4a')]['id'])});}}else{socket[_0xa3b8('0x71')](_0xa3b8('0x89'),{'UserId':Number(_0x48c925[_0xa3b8('0x3a')][_0xa3b8('0x68')]),'OpenchannelQueueId':Number(_0x48c925[_0xa3b8('0x4a')]['id'])});}});}})[_0xa3b8('0x28')](respondWithStatusCode(_0x28079c,null))[_0xa3b8('0x48')](handleError(_0x28079c,null));};exports[_0xa3b8('0x8f')]=function(_0x142f09,_0x16aebd,_0x36f366){var _0x51119d={};var _0x11eb56={};var _0x453ecb;var _0x5dbe5d;return db[_0xa3b8('0x4b')][_0xa3b8('0x58')]({'where':{'id':_0x142f09['params']['id']}})[_0xa3b8('0x28')](handleEntityNotFound(_0x16aebd,null))[_0xa3b8('0x28')](function(_0x410506){if(_0x410506){_0x453ecb=_0x410506;_0x11eb56['model']=_['keys'](db['User']['rawAttributes']);_0x11eb56['query']=_[_0xa3b8('0x34')](_0x142f09[_0xa3b8('0x3a')]);_0x11eb56[_0xa3b8('0x35')]=_[_0xa3b8('0x36')](_0x11eb56[_0xa3b8('0x33')],_0x11eb56['query']);_0x51119d['attributes']=_[_0xa3b8('0x36')](_0x11eb56[_0xa3b8('0x33')],qs[_0xa3b8('0x38')](_0x142f09[_0xa3b8('0x3a')]['fields']));_0x51119d[_0xa3b8('0x37')]=_0x51119d[_0xa3b8('0x37')][_0xa3b8('0x4c')]?_0x51119d['attributes']:_0x11eb56['model'];_0x51119d[_0xa3b8('0x3b')]=qs[_0xa3b8('0x3c')](_0x142f09[_0xa3b8('0x3a')][_0xa3b8('0x3c')]);_0x51119d['where']=qs['filters'](_[_0xa3b8('0x3e')](_0x142f09['query'],_0x11eb56[_0xa3b8('0x35')]));if(_0x142f09[_0xa3b8('0x3a')][_0xa3b8('0x3f')]){_0x51119d[_0xa3b8('0x3d')]=_[_0xa3b8('0x42')](_0x51119d['where'],{'$or':_[_0xa3b8('0x31')](_0x51119d[_0xa3b8('0x37')],function(_0x18011b){var _0x41421f={};_0x41421f[_0x18011b]={'$like':'%'+_0x142f09['query']['filter']+'%'};return _0x41421f;})});}_0x51119d=_[_0xa3b8('0x42')]({},_0x51119d,_0x142f09[_0xa3b8('0x43')]);return _0x453ecb[_0xa3b8('0x8f')](_0x51119d);}})['then'](function(_0x217226){if(_0x217226){_0x5dbe5d=_0x217226[_0xa3b8('0x4c')];if(!_0x142f09[_0xa3b8('0x3a')][_0xa3b8('0x39')](_0xa3b8('0x5b'))){_0x51119d[_0xa3b8('0x21')]=qs[_0xa3b8('0x21')](_0x142f09[_0xa3b8('0x3a')]['limit']);_0x51119d[_0xa3b8('0x1f')]=qs[_0xa3b8('0x1f')](_0x142f09[_0xa3b8('0x3a')][_0xa3b8('0x1f')]);}return _0x453ecb[_0xa3b8('0x8f')](_0x51119d);}})[_0xa3b8('0x28')](function(_0x56a7c5){if(_0x56a7c5){return _0x56a7c5?{'count':_0x5dbe5d,'rows':_0x56a7c5}:null;}})[_0xa3b8('0x28')](respondWithResult(_0x16aebd,null))[_0xa3b8('0x48')](handleError(_0x16aebd,null));};
\ No newline at end of file
+var _0x47f4=['socket.io-emitter','./openchannelQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','rawAttributes','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','OpenchannelQueue','findAll','rows','catch','show','params','include','find','create','body','user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','OpenchannelQueueId','UserOpenchannelQueue','User','findAndCountAll','UserId','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','ids','Agents','online','voicePause','flatMap','addTeams','each','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','TeamId','includes','all','union','removeAgents','forEach','userOpenchannelQueue:remove','addAgents','omit','spread','getAgents','order','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost'];(function(_0x51472d,_0x592b0b){var _0x5f00f1=function(_0x4a9b97){while(--_0x4a9b97){_0x51472d['push'](_0x51472d['shift']());}};_0x5f00f1(++_0x592b0b);}(_0x47f4,0xf6));var _0x447f=function(_0x585f5f,_0x4c928e){_0x585f5f=_0x585f5f-0x0;var _0x314e72=_0x47f4[_0x585f5f];return _0x314e72;};'use strict';var emlformat=require(_0x447f('0x0'));var rimraf=require(_0x447f('0x1'));var zipdir=require(_0x447f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x447f('0x3'));var BPromise=require(_0x447f('0x4'));var Mustache=require(_0x447f('0x5'));var util=require(_0x447f('0x6'));var path=require('path');var sox=require(_0x447f('0x7'));var csv=require(_0x447f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x447f('0x9'));var _=require(_0x447f('0xa'));var squel=require(_0x447f('0xb'));var crypto=require(_0x447f('0xc'));var jsforce=require(_0x447f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x447f('0x8'));var querystring=require('querystring');var Papa=require(_0x447f('0xe'));var Redis=require('ioredis');var authService=require(_0x447f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x447f('0x10'));var hardwareService=require(_0x447f('0x11'));var logger=require(_0x447f('0x12'))(_0x447f('0x13'));var utils=require(_0x447f('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x447f('0x15'));var db=require(_0x447f('0x16'))['db'];config[_0x447f('0x17')]=_[_0x447f('0x18')](config['redis'],{'host':_0x447f('0x19'),'port':0x18eb});var socket=require(_0x447f('0x1a'))(new Redis(config['redis']));require(_0x447f('0x1b'))['register'](socket);function respondWithStatusCode(_0x35b41b,_0x58360f){_0x58360f=_0x58360f||0xcc;return function(_0x52098c){if(_0x52098c){return _0x35b41b[_0x447f('0x1c')](_0x58360f);}return _0x35b41b[_0x447f('0x1d')](_0x58360f)[_0x447f('0x1e')]();};}function respondWithResult(_0x3174bb,_0x14c3f1){_0x14c3f1=_0x14c3f1||0xc8;return function(_0x15eae6){if(_0x15eae6){return _0x3174bb[_0x447f('0x1d')](_0x14c3f1)[_0x447f('0x1f')](_0x15eae6);}};}function respondWithFilteredResult(_0x3dd163,_0x6eebd0){return function(_0xaa2e4d){if(_0xaa2e4d){var _0xc2eab4=typeof _0x6eebd0[_0x447f('0x20')]===_0x447f('0x21')&&typeof _0x6eebd0[_0x447f('0x22')]===_0x447f('0x21');var _0x428808=_0xaa2e4d[_0x447f('0x23')];var _0x428a07=_0xc2eab4?0x0:_0x6eebd0[_0x447f('0x20')];var _0x345e2d=_0xc2eab4?_0xaa2e4d['count']:_0x6eebd0[_0x447f('0x20')]+_0x6eebd0[_0x447f('0x22')];var _0x1754b1;if(_0x345e2d>=_0x428808){_0x345e2d=_0x428808;_0x1754b1=0xc8;}else{_0x1754b1=0xce;}_0x3dd163[_0x447f('0x1d')](_0x1754b1);return _0x3dd163[_0x447f('0x24')](_0x447f('0x25'),_0x428a07+'-'+_0x345e2d+'/'+_0x428808)[_0x447f('0x1f')](_0xaa2e4d);}return null;};}function patchUpdates(_0xa171cb){return function(_0x1b0457){try{jsonpatch[_0x447f('0x26')](_0x1b0457,_0xa171cb,!![]);}catch(_0x3c8e83){return BPromise[_0x447f('0x27')](_0x3c8e83);}return _0x1b0457[_0x447f('0x28')]();};}function saveUpdates(_0x10f6b2,_0x22a103){return function(_0x29ca51){if(_0x29ca51){return _0x29ca51[_0x447f('0x29')](_0x10f6b2)[_0x447f('0x2a')](function(_0x461c94){return _0x461c94;});}return null;};}function removeEntity(_0x254521,_0x49fd0d){return function(_0x4069a3){if(_0x4069a3){return _0x4069a3[_0x447f('0x2b')]()['then'](function(){var _0x19cef4=_0x4069a3[_0x447f('0x2c')]({'plain':!![]});var _0x5da8cf=_0x447f('0x2d');return db[_0x447f('0x2e')][_0x447f('0x2b')]({'where':{'type':_0x5da8cf,'resourceId':_0x19cef4['id']}})[_0x447f('0x2a')](function(){return _0x4069a3;});})[_0x447f('0x2a')](function(){_0x254521['status'](0xcc)[_0x447f('0x1e')]();});}};}function handleEntityNotFound(_0x488c64,_0xe6298b){return function(_0x3b3e3c){if(!_0x3b3e3c){_0x488c64[_0x447f('0x1c')](0x194);}return _0x3b3e3c;};}function handleError(_0xca0f69,_0x1578ee){_0x1578ee=_0x1578ee||0x1f4;return function(_0x1371b8){logger[_0x447f('0x2f')](_0x1371b8[_0x447f('0x30')]);if(_0x1371b8[_0x447f('0x31')]){delete _0x1371b8[_0x447f('0x31')];}_0xca0f69[_0x447f('0x1d')](_0x1578ee)[_0x447f('0x32')](_0x1371b8);};}exports['index']=function(_0x4304a3,_0x32970f){var _0x45bf8a={},_0x38155f={},_0x3a3bfc={'count':0x0,'rows':[]};var _0x2bba51=_['map'](db['OpenchannelQueue'][_0x447f('0x33')],function(_0x109849){return{'name':_0x109849['fieldName'],'type':_0x109849[_0x447f('0x34')][_0x447f('0x35')]};});_0x38155f[_0x447f('0x36')]=_[_0x447f('0x37')](_0x2bba51,_0x447f('0x31'));_0x38155f['query']=_[_0x447f('0x38')](_0x4304a3[_0x447f('0x39')]);_0x38155f[_0x447f('0x3a')]=_[_0x447f('0x3b')](_0x38155f[_0x447f('0x36')],_0x38155f['query']);_0x45bf8a[_0x447f('0x3c')]=_['intersection'](_0x38155f[_0x447f('0x36')],qs[_0x447f('0x3d')](_0x4304a3[_0x447f('0x39')][_0x447f('0x3d')]));_0x45bf8a['attributes']=_0x45bf8a[_0x447f('0x3c')][_0x447f('0x3e')]?_0x45bf8a[_0x447f('0x3c')]:_0x38155f['model'];if(!_0x4304a3[_0x447f('0x39')][_0x447f('0x3f')](_0x447f('0x40'))){_0x45bf8a[_0x447f('0x22')]=qs[_0x447f('0x22')](_0x4304a3['query'][_0x447f('0x22')]);_0x45bf8a[_0x447f('0x20')]=qs[_0x447f('0x20')](_0x4304a3['query'][_0x447f('0x20')]);}_0x45bf8a['order']=qs[_0x447f('0x41')](_0x4304a3[_0x447f('0x39')][_0x447f('0x41')]);_0x45bf8a[_0x447f('0x42')]=qs['filters'](_[_0x447f('0x43')](_0x4304a3['query'],_0x38155f[_0x447f('0x3a')]),_0x2bba51);if(_0x4304a3[_0x447f('0x39')][_0x447f('0x44')]){_0x45bf8a[_0x447f('0x42')]=_[_0x447f('0x45')](_0x45bf8a[_0x447f('0x42')],{'$or':_[_0x447f('0x37')](_0x2bba51,function(_0x207e03){if(_0x207e03[_0x447f('0x34')]!=='VIRTUAL'){var _0x5db140={};_0x5db140[_0x207e03[_0x447f('0x31')]]={'$like':'%'+_0x4304a3[_0x447f('0x39')][_0x447f('0x44')]+'%'};return _0x5db140;}})});}_0x45bf8a=_[_0x447f('0x45')]({},_0x45bf8a,_0x4304a3[_0x447f('0x46')]);var _0x51073d={'where':_0x45bf8a[_0x447f('0x42')]};return db[_0x447f('0x47')][_0x447f('0x23')](_0x51073d)['then'](function(_0x3bb57f){_0x3a3bfc[_0x447f('0x23')]=_0x3bb57f;if(_0x4304a3[_0x447f('0x39')]['includeAll']){_0x45bf8a['include']=[{'all':!![]}];}return db['OpenchannelQueue'][_0x447f('0x48')](_0x45bf8a);})[_0x447f('0x2a')](function(_0x59d17d){_0x3a3bfc[_0x447f('0x49')]=_0x59d17d;return _0x3a3bfc;})[_0x447f('0x2a')](respondWithFilteredResult(_0x32970f,_0x45bf8a))[_0x447f('0x4a')](handleError(_0x32970f,null));};exports[_0x447f('0x4b')]=function(_0x4e8221,_0x5dcb95){var _0xb61689={'raw':!![],'where':{'id':_0x4e8221[_0x447f('0x4c')]['id']}},_0x24de4a={};_0x24de4a[_0x447f('0x36')]=_[_0x447f('0x38')](db[_0x447f('0x47')]['rawAttributes']);_0x24de4a[_0x447f('0x39')]=_[_0x447f('0x38')](_0x4e8221[_0x447f('0x39')]);_0x24de4a[_0x447f('0x3a')]=_[_0x447f('0x3b')](_0x24de4a['model'],_0x24de4a[_0x447f('0x39')]);_0xb61689[_0x447f('0x3c')]=_[_0x447f('0x3b')](_0x24de4a[_0x447f('0x36')],qs[_0x447f('0x3d')](_0x4e8221[_0x447f('0x39')][_0x447f('0x3d')]));_0xb61689[_0x447f('0x3c')]=_0xb61689[_0x447f('0x3c')][_0x447f('0x3e')]?_0xb61689[_0x447f('0x3c')]:_0x24de4a[_0x447f('0x36')];if(_0x4e8221[_0x447f('0x39')]['includeAll']){_0xb61689[_0x447f('0x4d')]=[{'all':!![]}];}_0xb61689=_[_0x447f('0x45')]({},_0xb61689,_0x4e8221[_0x447f('0x46')]);return db[_0x447f('0x47')][_0x447f('0x4e')](_0xb61689)['then'](handleEntityNotFound(_0x5dcb95,null))[_0x447f('0x2a')](respondWithResult(_0x5dcb95,null))['catch'](handleError(_0x5dcb95,null));};exports[_0x447f('0x4f')]=function(_0x1c672d,_0x51c928){return db['OpenchannelQueue'][_0x447f('0x4f')](_0x1c672d[_0x447f('0x50')],{})[_0x447f('0x2a')](function(_0x19af7e){var _0x85d4e8=_0x1c672d[_0x447f('0x51')]['get']({'plain':!![]});if(!_0x85d4e8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x85d4e8['role']==='user'){var _0x159b63=_0x19af7e[_0x447f('0x2c')]({'plain':!![]});var _0x17ac37=_0x447f('0x2d');return db['UserProfileSection']['find']({'where':{'name':_0x17ac37,'userProfileId':_0x85d4e8[_0x447f('0x52')]},'raw':!![]})['then'](function(_0x173a94){if(_0x173a94&&_0x173a94['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x159b63['name'],'resourceId':_0x159b63['id'],'type':_0x173a94[_0x447f('0x31')],'sectionId':_0x173a94['id']},{})['then'](function(){return _0x19af7e;});}else{return _0x19af7e;}})[_0x447f('0x4a')](function(_0xa1d4bf){logger[_0x447f('0x2f')](_0x447f('0x53'),_0xa1d4bf);throw _0xa1d4bf;});}return _0x19af7e;})[_0x447f('0x2a')](respondWithResult(_0x51c928,0xc9))[_0x447f('0x4a')](handleError(_0x51c928,null));};exports[_0x447f('0x29')]=function(_0x1d8fda,_0x17af53){if(_0x1d8fda[_0x447f('0x50')]['id']){delete _0x1d8fda['body']['id'];}return db[_0x447f('0x47')][_0x447f('0x4e')]({'where':{'id':_0x1d8fda[_0x447f('0x4c')]['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x17af53,null))[_0x447f('0x2a')](saveUpdates(_0x1d8fda[_0x447f('0x50')],null))[_0x447f('0x2a')](respondWithResult(_0x17af53,null))[_0x447f('0x4a')](handleError(_0x17af53,null));};exports['destroy']=function(_0x5e1f54,_0x1dd973){return db['OpenchannelQueue'][_0x447f('0x4e')]({'where':{'id':_0x5e1f54['params']['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x1dd973,null))[_0x447f('0x2a')](removeEntity(_0x1dd973,null))['catch'](handleError(_0x1dd973,null));};exports[_0x447f('0x54')]=function(_0x58b0ab,_0x3ac20a){return db[_0x447f('0x47')][_0x447f('0x54')]()['then'](respondWithResult(_0x3ac20a,null))[_0x447f('0x4a')](handleError(_0x3ac20a,null));};exports['getMembers']=function(_0x1f6c05,_0x4634ec,_0x9adf62){var _0x2e5839={'raw':!![],'where':{}},_0x3f2a3d={},_0x55bbe5;return db[_0x447f('0x47')][_0x447f('0x55')]({'where':{'id':_0x1f6c05[_0x447f('0x4c')]['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x4634ec,null))[_0x447f('0x2a')](function(_0x1acd8a){if(_0x1acd8a){_0x55bbe5=_0x1acd8a[_0x447f('0x2c')]({'plain':!![]});_0x3f2a3d[_0x447f('0x36')]=_['keys'](db['UserOpenchannelQueue']['rawAttributes']);_0x3f2a3d[_0x447f('0x39')]=_[_0x447f('0x38')](_0x1f6c05[_0x447f('0x39')]);_0x3f2a3d[_0x447f('0x3a')]=_[_0x447f('0x3b')](_0x3f2a3d['model'],_0x3f2a3d[_0x447f('0x39')]);_0x2e5839[_0x447f('0x3c')]=_[_0x447f('0x3b')](_0x3f2a3d[_0x447f('0x36')],qs['fields'](_0x1f6c05[_0x447f('0x39')][_0x447f('0x3d')]));_0x2e5839[_0x447f('0x3c')]=_0x2e5839[_0x447f('0x3c')][_0x447f('0x3e')]?_0x2e5839[_0x447f('0x3c')]:_0x3f2a3d[_0x447f('0x36')];if(!_0x1f6c05[_0x447f('0x39')][_0x447f('0x3f')](_0x447f('0x40'))){_0x2e5839[_0x447f('0x22')]=qs[_0x447f('0x22')](_0x1f6c05[_0x447f('0x39')][_0x447f('0x22')]);_0x2e5839[_0x447f('0x20')]=qs[_0x447f('0x20')](_0x1f6c05[_0x447f('0x39')][_0x447f('0x20')]);}_0x2e5839['order']=qs['sort'](_0x1f6c05[_0x447f('0x39')][_0x447f('0x41')]);_0x2e5839['where']=qs['filters'](_['pick'](_0x1f6c05[_0x447f('0x39')],_0x3f2a3d[_0x447f('0x3a')]));_0x2e5839[_0x447f('0x42')][_0x447f('0x56')]=_0x1acd8a['id'];if(_0x1f6c05[_0x447f('0x39')]['filter']){_0x2e5839['where']=_[_0x447f('0x45')](_0x2e5839[_0x447f('0x42')],{'$or':_[_0x447f('0x37')](_0x2e5839[_0x447f('0x3c')],function(_0x2130c9){var _0x3bd5fb={};_0x3bd5fb[_0x2130c9]={'$like':'%'+_0x1f6c05[_0x447f('0x39')][_0x447f('0x44')]+'%'};return _0x3bd5fb;})});}_0x2e5839=_['merge']({},_0x2e5839,_0x1f6c05[_0x447f('0x46')]);return db[_0x447f('0x57')]['findAll'](_0x2e5839);}})[_0x447f('0x2a')](function(_0x2d6c81){if(_0x2d6c81){return db[_0x447f('0x58')][_0x447f('0x59')]({'where':{'id':_[_0x447f('0x37')](_0x2d6c81,_0x447f('0x5a')),'role':'agent'},'attributes':['id',_0x447f('0x31'),_0x447f('0x5b'),_0x447f('0x5c'),_0x447f('0x5d')]});}})[_0x447f('0x2a')](function(_0x516163){if(_0x516163){return{'count':_0x516163['count'],'rows':_[_0x447f('0x37')](_0x516163[_0x447f('0x49')],function(_0x3df923){return{'membername':_0x3df923[_0x447f('0x31')],'UserId':_0x3df923['id'],'queue_name':_0x55bbe5[_0x447f('0x31')],'OpenchannelQueueId':_0x55bbe5['id'],'interface':util[_0x447f('0x5e')](_0x447f('0x5f'),_0x447f('0x60'),_0x3df923[_0x447f('0x31')]),'penalty':0x0,'paused':_0x3df923[_0x447f('0x5b')],'createdAt':_0x3df923[_0x447f('0x5d')],'updatedAt':_0x3df923[_0x447f('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4634ec,_0x2e5839))[_0x447f('0x4a')](handleError(_0x4634ec,null));};exports[_0x447f('0x61')]=function(_0x185b99,_0x3e15e9,_0x3b8641){var _0xd83d3e={};var _0x1a7e57={};var _0x239eb3;var _0x65651e;return db['OpenchannelQueue'][_0x447f('0x55')]({'where':{'id':_0x185b99['params']['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x3e15e9,null))[_0x447f('0x2a')](function(_0x20dcc8){if(_0x20dcc8){_0x239eb3=_0x20dcc8;_0x1a7e57[_0x447f('0x36')]=_['keys'](db[_0x447f('0x62')]['rawAttributes']);_0x1a7e57[_0x447f('0x39')]=_[_0x447f('0x38')](_0x185b99['query']);_0x1a7e57[_0x447f('0x3a')]=_[_0x447f('0x3b')](_0x1a7e57[_0x447f('0x36')],_0x1a7e57[_0x447f('0x39')]);_0xd83d3e[_0x447f('0x3c')]=_[_0x447f('0x3b')](_0x1a7e57[_0x447f('0x36')],qs[_0x447f('0x3d')](_0x185b99[_0x447f('0x39')]['fields']));_0xd83d3e[_0x447f('0x3c')]=_0xd83d3e[_0x447f('0x3c')][_0x447f('0x3e')]?_0xd83d3e[_0x447f('0x3c')]:_0x1a7e57['model'];_0xd83d3e['order']=qs['sort'](_0x185b99[_0x447f('0x39')][_0x447f('0x41')]);_0xd83d3e[_0x447f('0x42')]=qs[_0x447f('0x3a')](_[_0x447f('0x43')](_0x185b99[_0x447f('0x39')],_0x1a7e57[_0x447f('0x3a')]));if(_0x185b99[_0x447f('0x39')][_0x447f('0x44')]){_0xd83d3e[_0x447f('0x42')]=_[_0x447f('0x45')](_0xd83d3e[_0x447f('0x42')],{'$or':_[_0x447f('0x37')](_0xd83d3e[_0x447f('0x3c')],function(_0x1e0a7e){var _0x178918={};_0x178918[_0x1e0a7e]={'$like':'%'+_0x185b99[_0x447f('0x39')][_0x447f('0x44')]+'%'};return _0x178918;})});}_0xd83d3e=_[_0x447f('0x45')]({},_0xd83d3e,_0x185b99[_0x447f('0x46')]);return _0x239eb3[_0x447f('0x61')](_0xd83d3e);}})[_0x447f('0x2a')](function(_0xdbe15f){if(_0xdbe15f){_0x65651e=_0xdbe15f[_0x447f('0x3e')];if(!_0x185b99[_0x447f('0x39')][_0x447f('0x3f')](_0x447f('0x40'))){_0xd83d3e['limit']=qs[_0x447f('0x22')](_0x185b99[_0x447f('0x39')]['limit']);_0xd83d3e[_0x447f('0x20')]=qs[_0x447f('0x20')](_0x185b99['query'][_0x447f('0x20')]);}return _0x239eb3[_0x447f('0x61')](_0xd83d3e);}})[_0x447f('0x2a')](function(_0x4be2ae){if(_0x4be2ae){return _0x4be2ae?{'count':_0x65651e,'rows':_0x4be2ae}:null;}})['then'](respondWithResult(_0x3e15e9,null))[_0x447f('0x4a')](handleError(_0x3e15e9,null));};exports['addTeams']=function(_0x37c84b,_0x3684f2,_0x4ce22e){var _0xfb8ce2=_0x37c84b['body'][_0x447f('0x63')];return db['Team'][_0x447f('0x48')]({'where':{'id':_0xfb8ce2},'attributes':['id'],'include':[{'model':db['User'],'as':_0x447f('0x64'),'attributes':['id',_0x447f('0x31'),_0x447f('0x65'),_0x447f('0x66'),'interface'],'raw':!![]}]})[_0x447f('0x2a')](function(_0x5e924){if(_0x5e924){var _0x4daa4d=_[_0x447f('0x67')](_0x5e924,function(_0x5663e7){var _0x4ab768=_0x5663e7[_0x447f('0x2c')]({'plain':!![]});return _0x4ab768['Agents'];});return db[_0x447f('0x47')][_0x447f('0x4e')]({'where':{'id':_0x37c84b['params']['id']}})[_0x447f('0x2a')](function(_0xb29099){return db['sequelize']['transaction'](function(_0x328591){return _0xb29099[_0x447f('0x68')](_0xfb8ce2,{'transaction':_0x328591})['then'](function(){return BPromise[_0x447f('0x69')](_0x4daa4d,function(_0x4c5cd0){return db[_0x447f('0x57')][_0x447f('0x6a')]({'where':{'UserId':_0x4c5cd0['id'],'OpenchannelQueueId':_0x37c84b[_0x447f('0x4c')]['id']},'transaction':_0x328591});});})['then'](function(){_0x4daa4d['forEach'](function(_0x14b70e){socket[_0x447f('0x6b')](_0x447f('0x6c'),{'UserId':_0x14b70e['id'],'OpenchannelQueueId':_0xb29099['id']});});});});});}})['then'](respondWithStatusCode(_0x3684f2,null))[_0x447f('0x4a')](handleError(_0x3684f2,null));};exports[_0x447f('0x6d')]=function(_0x26fdf8,_0x90bc94,_0x323d10){return db[_0x447f('0x62')]['findAll']({'where':{'id':_0x26fdf8[_0x447f('0x39')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x447f('0x64'),'attributes':['id'],'raw':!![]}]})[_0x447f('0x2a')](handleEntityNotFound(_0x90bc94,null))[_0x447f('0x2a')](function(_0x405c58){var _0x2f067a=_[_0x447f('0x37')](_0x405c58,'id');var _0x311a73=[];var _0x40de98=[];var _0x1664ad=squel[_0x447f('0x6e')]();_0x1664ad[_0x447f('0x6f')](_0x447f('0x70'))[_0x447f('0x71')](_0x447f('0x72'),'tq')[_0x447f('0x73')]('user_has_teams','ut',_0x447f('0x74'))[_0x447f('0x42')](_0x447f('0x75'),_0x26fdf8[_0x447f('0x4c')]['id']);for(var _0x611180=0x0;_0x611180<_0x405c58['length'];_0x611180+=0x1){let _0x40f983=_0x405c58[_0x611180];for(var _0x46f96a=0x0;_0x46f96a<_0x40f983[_0x447f('0x64')]['length'];_0x46f96a+=0x1){let _0xd648e3=_0x40f983[_0x447f('0x64')][_0x46f96a];var _0x207da0=_0x1664ad[_0x447f('0x76')]();_0x207da0['where'](_0x447f('0x77'),_0xd648e3['id']);_0x40de98[_0x447f('0x78')](db[_0x447f('0x79')][_0x447f('0x39')](_0x207da0[_0x447f('0x7a')](),{'type':db[_0x447f('0x79')][_0x447f('0x7b')]['SELECT']})[_0x447f('0x2a')](function(_0x2c06bc){if(_0x2c06bc[_0x447f('0x3e')]===0x1){return _0xd648e3['id'];}else{var _0x3e0639=_['every'](_[_0x447f('0x37')](_0x2c06bc,_0x447f('0x7c')),function(_0x226851){return _[_0x447f('0x7d')](_0x2f067a,_0x226851);});if(_0x3e0639){return _0xd648e3['id'];}}}));}}return BPromise[_0x447f('0x7e')](_0x40de98)[_0x447f('0x2a')](function(_0x567cfe){_0x311a73=_(_0x311a73)[_0x447f('0x7f')](_0x567cfe)['compact']()['value']();return db['OpenchannelQueue'][_0x447f('0x4e')]({'where':{'id':_0x26fdf8['params']['id']}})[_0x447f('0x2a')](function(_0x2bf6ac){return db['sequelize']['transaction'](function(_0x15c492){return _0x2bf6ac['removeTeams'](_0x26fdf8[_0x447f('0x39')][_0x447f('0x63')],{'transaction':_0x15c492})[_0x447f('0x2a')](function(){if(!_['isEmpty'](_0x311a73)){return _0x2bf6ac[_0x447f('0x80')](_0x311a73,{'transaction':_0x15c492});}})[_0x447f('0x2a')](function(){_0x311a73[_0x447f('0x81')](function(_0x404480){socket[_0x447f('0x6b')](_0x447f('0x82'),{'UserId':_0x404480,'OpenchannelQueueId':_0x2bf6ac['id']});});});});});});})['then'](respondWithStatusCode(_0x90bc94,null))[_0x447f('0x4a')](handleError(_0x90bc94,null));};exports[_0x447f('0x83')]=function(_0x131061,_0x478d24,_0x5855f5){return db['OpenchannelQueue'][_0x447f('0x4e')]({'where':{'id':_0x131061[_0x447f('0x4c')]['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x478d24,null))[_0x447f('0x2a')](function(_0x598556){if(_0x598556){return _0x598556['addAgents'](_0x131061['body']['ids'],_[_0x447f('0x84')](_0x131061['body'],[_0x447f('0x63'),'id'])||{})[_0x447f('0x85')](function(_0x350b04){for(var _0x1e26ac=0x0;_0x1e26ac<_0x131061[_0x447f('0x50')][_0x447f('0x63')][_0x447f('0x3e')];_0x1e26ac+=0x1){socket[_0x447f('0x6b')](_0x447f('0x6c'),{'UserId':Number(_0x131061['body'][_0x447f('0x63')][_0x1e26ac]),'OpenchannelQueueId':Number(_0x131061[_0x447f('0x4c')]['id'])});}return _0x350b04;});}})[_0x447f('0x2a')](respondWithResult(_0x478d24,null))[_0x447f('0x4a')](handleError(_0x478d24,null));};exports['removeAgents']=function(_0x333933,_0x4a2fff,_0xb172d3){return db[_0x447f('0x47')][_0x447f('0x4e')]({'where':{'id':_0x333933[_0x447f('0x4c')]['id']}})[_0x447f('0x2a')](handleEntityNotFound(_0x4a2fff,null))['then'](function(_0xba5136){if(_0xba5136){return _0xba5136[_0x447f('0x80')](_0x333933['query']['ids'])[_0x447f('0x2a')](function(){if(_['isArray'](_0x333933[_0x447f('0x39')][_0x447f('0x63')])){for(var _0x35a2a3=0x0;_0x35a2a3<_0x333933[_0x447f('0x39')][_0x447f('0x63')][_0x447f('0x3e')];_0x35a2a3+=0x1){socket['emit'](_0x447f('0x82'),{'UserId':Number(_0x333933['query'][_0x447f('0x63')][_0x35a2a3]),'OpenchannelQueueId':Number(_0x333933[_0x447f('0x4c')]['id'])});}}else{socket[_0x447f('0x6b')](_0x447f('0x82'),{'UserId':Number(_0x333933[_0x447f('0x39')][_0x447f('0x63')]),'OpenchannelQueueId':Number(_0x333933[_0x447f('0x4c')]['id'])});}});}})[_0x447f('0x2a')](respondWithStatusCode(_0x4a2fff,null))[_0x447f('0x4a')](handleError(_0x4a2fff,null));};exports[_0x447f('0x86')]=function(_0x2caebe,_0x415838,_0xbefb2e){var _0x263380={};var _0x5f0ef6={};var _0xa99620;var _0x1d010a;return db[_0x447f('0x47')][_0x447f('0x55')]({'where':{'id':_0x2caebe[_0x447f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x415838,null))['then'](function(_0x5478cf){if(_0x5478cf){_0xa99620=_0x5478cf;_0x5f0ef6['model']=_[_0x447f('0x38')](db[_0x447f('0x58')]['rawAttributes']);_0x5f0ef6[_0x447f('0x39')]=_[_0x447f('0x38')](_0x2caebe[_0x447f('0x39')]);_0x5f0ef6[_0x447f('0x3a')]=_[_0x447f('0x3b')](_0x5f0ef6[_0x447f('0x36')],_0x5f0ef6['query']);_0x263380['attributes']=_[_0x447f('0x3b')](_0x5f0ef6['model'],qs[_0x447f('0x3d')](_0x2caebe[_0x447f('0x39')][_0x447f('0x3d')]));_0x263380['attributes']=_0x263380[_0x447f('0x3c')]['length']?_0x263380[_0x447f('0x3c')]:_0x5f0ef6[_0x447f('0x36')];_0x263380[_0x447f('0x87')]=qs[_0x447f('0x41')](_0x2caebe[_0x447f('0x39')][_0x447f('0x41')]);_0x263380[_0x447f('0x42')]=qs[_0x447f('0x3a')](_[_0x447f('0x43')](_0x2caebe['query'],_0x5f0ef6[_0x447f('0x3a')]));if(_0x2caebe[_0x447f('0x39')][_0x447f('0x44')]){_0x263380[_0x447f('0x42')]=_['merge'](_0x263380[_0x447f('0x42')],{'$or':_[_0x447f('0x37')](_0x263380['attributes'],function(_0x1998c4){var _0xbebcc6={};_0xbebcc6[_0x1998c4]={'$like':'%'+_0x2caebe[_0x447f('0x39')][_0x447f('0x44')]+'%'};return _0xbebcc6;})});}_0x263380=_[_0x447f('0x45')]({},_0x263380,_0x2caebe[_0x447f('0x46')]);return _0xa99620['getAgents'](_0x263380);}})[_0x447f('0x2a')](function(_0x41db79){if(_0x41db79){_0x1d010a=_0x41db79['length'];if(!_0x2caebe[_0x447f('0x39')][_0x447f('0x3f')]('nolimit')){_0x263380[_0x447f('0x22')]=qs['limit'](_0x2caebe['query'][_0x447f('0x22')]);_0x263380[_0x447f('0x20')]=qs[_0x447f('0x20')](_0x2caebe[_0x447f('0x39')]['offset']);}return _0xa99620[_0x447f('0x86')](_0x263380);}})['then'](function(_0x3125a3){if(_0x3125a3){return _0x3125a3?{'count':_0x1d010a,'rows':_0x3125a3}:null;}})[_0x447f('0x2a')](respondWithResult(_0x415838,null))['catch'](handleError(_0x415838,null));};
\ No newline at end of file
index f58d274..da25463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b44=['exports','events','../../mysqldb','save','update','remove','emit','hook'];(function(_0x1ce2b2,_0x4ffd3f){var _0xd0e88f=function(_0x416c9e){while(--_0x416c9e){_0x1ce2b2['push'](_0x1ce2b2['shift']());}};_0xd0e88f(++_0x4ffd3f);}(_0x7b44,0x119));var _0x47b4=function(_0x20b64a,_0x2e6580){_0x20b64a=_0x20b64a-0x0;var _0x140ec4=_0x7b44[_0x20b64a];return _0x140ec4;};'use strict';var EventEmitter=require(_0x47b4('0x0'));var OpenchannelQueue=require(_0x47b4('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x47b4('0x2'),'afterUpdate':_0x47b4('0x3'),'afterDestroy':_0x47b4('0x4')};function emitEvent(_0xbdc012){return function(_0x4f5b07,_0x3c1cc8,_0x97c595){OpenchannelQueueEvents[_0x47b4('0x5')](_0xbdc012+':'+_0x4f5b07['id'],_0x4f5b07);OpenchannelQueueEvents[_0x47b4('0x5')](_0xbdc012,_0x4f5b07);_0x97c595(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0x47b4('0x6')](e,emitEvent(event));}}module[_0x47b4('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x4092=['hasOwnProperty','hook','exports','events','../../mysqldb','update','remove','emit'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4092,0x193));var _0x2409=function(_0x37c455,_0xbe5637){_0x37c455=_0x37c455-0x0;var _0x3ff4a0=_0x4092[_0x37c455];return _0x3ff4a0;};'use strict';var EventEmitter=require(_0x2409('0x0'));var OpenchannelQueue=require(_0x2409('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x2409('0x2'),'afterDestroy':_0x2409('0x3')};function emitEvent(_0x42faaf){return function(_0x55f59b,_0x1732eb,_0x4d9d2d){OpenchannelQueueEvents['emit'](_0x42faaf+':'+_0x55f59b['id'],_0x55f59b);OpenchannelQueueEvents[_0x2409('0x4')](_0x42faaf,_0x55f59b);_0x4d9d2d(null);};}for(var e in events){if(events[_0x2409('0x5')](e)){var event=events[e];OpenchannelQueue[_0x2409('0x6')](e,emitEvent(event));}}module[_0x2409('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
index a8daafd..cc4440c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1426=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues','lodash','util'];(function(_0x23bd90,_0x49a688){var _0x4166a5=function(_0x2c30b6){while(--_0x2c30b6){_0x23bd90['push'](_0x23bd90['shift']());}};_0x4166a5(++_0x49a688);}(_0x1426,0x132));var _0x6142=function(_0x1e1160,_0x48e99e){_0x1e1160=_0x1e1160-0x0;var _0x4bc3bb=_0x1426[_0x1e1160];return _0x4bc3bb;};'use strict';var _=require(_0x6142('0x0'));var util=require(_0x6142('0x1'));var logger=require(_0x6142('0x2'))('api');var moment=require(_0x6142('0x3'));var BPromise=require(_0x6142('0x4'));var rp=require(_0x6142('0x5'));var fs=require('fs');var path=require(_0x6142('0x6'));var rimraf=require(_0x6142('0x7'));var config=require(_0x6142('0x8'));var attributes=require(_0x6142('0x9'));module[_0x6142('0xa')]=function(_0x5641b0,_0x1468b7){return _0x5641b0[_0x6142('0xb')](_0x6142('0xc'),attributes,{'tableName':_0x6142('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2cde=['bluebird','request-promise','path','rimraf','./openchannelQueue.attributes','exports','define','OpenchannelQueue','lodash','util','../../config/logger','api','moment'];(function(_0x495d54,_0x4e8a49){var _0x50215a=function(_0x1769d8){while(--_0x1769d8){_0x495d54['push'](_0x495d54['shift']());}};_0x50215a(++_0x4e8a49);}(_0x2cde,0xcb));var _0xe2cd=function(_0x5de809,_0x189684){_0x5de809=_0x5de809-0x0;var _0xeb671c=_0x2cde[_0x5de809];return _0xeb671c;};'use strict';var _=require(_0xe2cd('0x0'));var util=require(_0xe2cd('0x1'));var logger=require(_0xe2cd('0x2'))(_0xe2cd('0x3'));var moment=require(_0xe2cd('0x4'));var BPromise=require(_0xe2cd('0x5'));var rp=require(_0xe2cd('0x6'));var fs=require('fs');var path=require(_0xe2cd('0x7'));var rimraf=require(_0xe2cd('0x8'));var config=require('../../config/environment');var attributes=require(_0xe2cd('0x9'));module[_0xe2cd('0xa')]=function(_0x57b92f,_0x4d8ba4){return _0x57b92f[_0xe2cd('0xb')](_0xe2cd('0xc'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b4736e3..b9147cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd2d=['../../config/environment','client','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','then','info','OpenchannelQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','GetOpenchannelQueue','options','raw','where','attributes','limit','map','include','model','ShowOpenchannelQueue','OpenchannelQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc'];(function(_0x171dc5,_0x564366){var _0x4a56d0=function(_0x490a93){while(--_0x490a93){_0x171dc5['push'](_0x171dc5['shift']());}};_0x4a56d0(++_0x564366);}(_0xbd2d,0x1cc));var _0xdbd2=function(_0x42e803,_0x1a7cba){_0x42e803=_0x42e803-0x0;var _0x66506d=_0xbd2d[_0x42e803];return _0x66506d;};'use strict';var _=require(_0xdbd2('0x0'));var util=require(_0xdbd2('0x1'));var moment=require(_0xdbd2('0x2'));var BPromise=require(_0xdbd2('0x3'));var rs=require(_0xdbd2('0x4'));var fs=require('fs');var Redis=require(_0xdbd2('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdbd2('0x6'));var logger=require('../../config/logger')(_0xdbd2('0x7'));var config=require(_0xdbd2('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xdbd2('0x9')]['http']({'port':0x232a});config[_0xdbd2('0xa')]=_['defaults'](config[_0xdbd2('0xa')],{'host':_0xdbd2('0xb'),'port':0x18eb});var socket=require(_0xdbd2('0xc'))(new Redis(config['redis']));require(_0xdbd2('0xd'))[_0xdbd2('0xe')](socket);function respondWithRpcPromise(_0x30af9b,_0x50addb,_0x43928f){return new BPromise(function(_0x5b7d74,_0x39d08e){return client['request'](_0x30af9b,_0x43928f)[_0xdbd2('0xf')](function(_0x4089b3){logger[_0xdbd2('0x10')](_0xdbd2('0x11'),_0x50addb,'request\x20sent');logger[_0xdbd2('0x12')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x50addb,_0xdbd2('0x13'),JSON[_0xdbd2('0x14')](_0x4089b3));if(_0x4089b3[_0xdbd2('0x15')]){if(_0x4089b3[_0xdbd2('0x15')][_0xdbd2('0x16')]===0x1f4){logger[_0xdbd2('0x15')](_0xdbd2('0x11'),_0x50addb,_0x4089b3[_0xdbd2('0x15')][_0xdbd2('0x17')]);return _0x39d08e(_0x4089b3[_0xdbd2('0x15')]['message']);}logger[_0xdbd2('0x15')](_0xdbd2('0x11'),_0x50addb,_0x4089b3[_0xdbd2('0x15')]['message']);return _0x5b7d74(_0x4089b3[_0xdbd2('0x15')][_0xdbd2('0x17')]);}else{logger['info'](_0xdbd2('0x11'),_0x50addb,_0xdbd2('0x13'));_0x5b7d74(_0x4089b3['result'][_0xdbd2('0x17')]);}})[_0xdbd2('0x18')](function(_0x4cd7a5){logger['error'](_0xdbd2('0x11'),_0x50addb,_0x4cd7a5);_0x39d08e(_0x4cd7a5);});});}exports[_0xdbd2('0x19')]=function(_0x3b70fa){var _0xb1fb32=this;return new Promise(function(_0x2dfb9e,_0x5cdd54){return db['OpenchannelQueue']['findAll']({'raw':_0x3b70fa['options']?_0x3b70fa[_0xdbd2('0x1a')][_0xdbd2('0x1b')]===undefined?!![]:![]:!![],'where':_0x3b70fa[_0xdbd2('0x1a')]?_0x3b70fa[_0xdbd2('0x1a')][_0xdbd2('0x1c')]||null:null,'attributes':_0x3b70fa[_0xdbd2('0x1a')]?_0x3b70fa[_0xdbd2('0x1a')][_0xdbd2('0x1d')]||null:null,'limit':_0x3b70fa[_0xdbd2('0x1a')]?_0x3b70fa[_0xdbd2('0x1a')][_0xdbd2('0x1e')]||null:null,'include':_0x3b70fa['options']?_0x3b70fa[_0xdbd2('0x1a')]['include']?_[_0xdbd2('0x1f')](_0x3b70fa[_0xdbd2('0x1a')][_0xdbd2('0x20')],function(_0x470aef){return{'model':db[_0x470aef[_0xdbd2('0x21')]],'as':_0x470aef['as'],'attributes':_0x470aef[_0xdbd2('0x1d')],'include':_0x470aef['include']?_[_0xdbd2('0x1f')](_0x470aef[_0xdbd2('0x20')],function(_0x441607){return{'model':db[_0x441607[_0xdbd2('0x21')]],'as':_0x441607['as'],'attributes':_0x441607['attributes'],'include':_0x441607['include']?_[_0xdbd2('0x1f')](_0x441607['include'],function(_0x4e00c8){return{'model':db[_0x4e00c8[_0xdbd2('0x21')]],'as':_0x4e00c8['as'],'attributes':_0x4e00c8['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x50f31d){logger[_0xdbd2('0x10')](_0xdbd2('0x19'),_0x3b70fa);logger[_0xdbd2('0x12')](_0xdbd2('0x19'),_0x3b70fa,JSON[_0xdbd2('0x14')](_0x50f31d));_0x2dfb9e(_0x50f31d);})[_0xdbd2('0x18')](function(_0x5ae107){logger['error'](_0xdbd2('0x19'),_0x5ae107[_0xdbd2('0x17')],_0x3b70fa);_0x5cdd54(_0xb1fb32['error'](0x1f4,_0x5ae107['message']));});});};exports[_0xdbd2('0x22')]=function(_0x20f612){var _0x3ca138=this;return new Promise(function(_0x123669,_0x87f55f){return db[_0xdbd2('0x23')]['find']({'raw':_0x20f612[_0xdbd2('0x1a')]?_0x20f612[_0xdbd2('0x1a')][_0xdbd2('0x1b')]===undefined?!![]:![]:!![],'where':_0x20f612[_0xdbd2('0x1a')]?_0x20f612[_0xdbd2('0x1a')][_0xdbd2('0x1c')]||null:null,'attributes':_0x20f612[_0xdbd2('0x1a')]?_0x20f612[_0xdbd2('0x1a')][_0xdbd2('0x1d')]||null:null,'include':_0x20f612['options']?_0x20f612[_0xdbd2('0x1a')][_0xdbd2('0x20')]?_['map'](_0x20f612[_0xdbd2('0x1a')][_0xdbd2('0x20')],function(_0x17e8ea){return{'model':db[_0x17e8ea['model']],'as':_0x17e8ea['as'],'attributes':_0x17e8ea[_0xdbd2('0x1d')],'include':_0x17e8ea[_0xdbd2('0x20')]?_[_0xdbd2('0x1f')](_0x17e8ea[_0xdbd2('0x20')],function(_0x3cdd23){return{'model':db[_0x3cdd23[_0xdbd2('0x21')]],'as':_0x3cdd23['as'],'attributes':_0x3cdd23[_0xdbd2('0x1d')],'include':_0x3cdd23[_0xdbd2('0x20')]?_[_0xdbd2('0x1f')](_0x3cdd23['include'],function(_0x57004d){return{'model':db[_0x57004d['model']],'as':_0x57004d['as'],'attributes':_0x57004d[_0xdbd2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xdbd2('0xf')](function(_0x265eeb){logger[_0xdbd2('0x10')](_0xdbd2('0x22'),_0x20f612);logger[_0xdbd2('0x12')](_0xdbd2('0x22'),_0x20f612,JSON['stringify'](_0x265eeb));_0x123669(_0x265eeb);})['catch'](function(_0x4b9e9f){logger['error'](_0xdbd2('0x22'),_0x4b9e9f[_0xdbd2('0x17')],_0x20f612);_0x87f55f(_0x3ca138[_0xdbd2('0x15')](0x1f4,_0x4b9e9f[_0xdbd2('0x17')]));});});};
\ No newline at end of file
+var _0xf4c9=['find','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','attributes','limit','include','map','model','stringify','ShowOpenchannelQueue'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0xf4c9,0x14a));var _0x9f4c=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0xf4c9[_0x35885a];return _0xe86249;};'use strict';var _=require('lodash');var util=require(_0x9f4c('0x0'));var moment=require(_0x9f4c('0x1'));var BPromise=require(_0x9f4c('0x2'));var rs=require(_0x9f4c('0x3'));var fs=require('fs');var Redis=require(_0x9f4c('0x4'));var db=require(_0x9f4c('0x5'))['db'];var utils=require(_0x9f4c('0x6'));var logger=require(_0x9f4c('0x7'))('rpc');var config=require(_0x9f4c('0x8'));var jayson=require(_0x9f4c('0x9'));var client=jayson[_0x9f4c('0xa')]['http']({'port':0x232a});config[_0x9f4c('0xb')]=_[_0x9f4c('0xc')](config[_0x9f4c('0xb')],{'host':_0x9f4c('0xd'),'port':0x18eb});var socket=require(_0x9f4c('0xe'))(new Redis(config[_0x9f4c('0xb')]));require('./openchannelQueue.socket')[_0x9f4c('0xf')](socket);function respondWithRpcPromise(_0x45433e,_0x24c21f,_0x56ef80){return new BPromise(function(_0x470c49,_0x7510f6){return client[_0x9f4c('0x10')](_0x45433e,_0x56ef80)[_0x9f4c('0x11')](function(_0x2bdbde){logger[_0x9f4c('0x12')](_0x9f4c('0x13'),_0x24c21f,_0x9f4c('0x14'));logger[_0x9f4c('0x15')](_0x9f4c('0x16'),_0x24c21f,'request\x20sent',JSON['stringify'](_0x2bdbde));if(_0x2bdbde[_0x9f4c('0x17')]){if(_0x2bdbde[_0x9f4c('0x17')][_0x9f4c('0x18')]===0x1f4){logger[_0x9f4c('0x17')](_0x9f4c('0x13'),_0x24c21f,_0x2bdbde['error'][_0x9f4c('0x19')]);return _0x7510f6(_0x2bdbde[_0x9f4c('0x17')]['message']);}logger[_0x9f4c('0x17')](_0x9f4c('0x13'),_0x24c21f,_0x2bdbde[_0x9f4c('0x17')][_0x9f4c('0x19')]);return _0x470c49(_0x2bdbde[_0x9f4c('0x17')][_0x9f4c('0x19')]);}else{logger['info'](_0x9f4c('0x13'),_0x24c21f,'request\x20sent');_0x470c49(_0x2bdbde['result']['message']);}})[_0x9f4c('0x1a')](function(_0x38f1b1){logger[_0x9f4c('0x17')](_0x9f4c('0x13'),_0x24c21f,_0x38f1b1);_0x7510f6(_0x38f1b1);});});}exports[_0x9f4c('0x1b')]=function(_0xc8bf85){var _0x256c79=this;return new Promise(function(_0x13c6d1,_0x28e6b3){return db[_0x9f4c('0x1c')][_0x9f4c('0x1d')]({'raw':_0xc8bf85['options']?_0xc8bf85[_0x9f4c('0x1e')][_0x9f4c('0x1f')]===undefined?!![]:![]:!![],'where':_0xc8bf85['options']?_0xc8bf85[_0x9f4c('0x1e')]['where']||null:null,'attributes':_0xc8bf85[_0x9f4c('0x1e')]?_0xc8bf85[_0x9f4c('0x1e')][_0x9f4c('0x20')]||null:null,'limit':_0xc8bf85[_0x9f4c('0x1e')]?_0xc8bf85[_0x9f4c('0x1e')][_0x9f4c('0x21')]||null:null,'include':_0xc8bf85[_0x9f4c('0x1e')]?_0xc8bf85[_0x9f4c('0x1e')][_0x9f4c('0x22')]?_[_0x9f4c('0x23')](_0xc8bf85[_0x9f4c('0x1e')][_0x9f4c('0x22')],function(_0x426f60){return{'model':db[_0x426f60[_0x9f4c('0x24')]],'as':_0x426f60['as'],'attributes':_0x426f60[_0x9f4c('0x20')],'include':_0x426f60[_0x9f4c('0x22')]?_[_0x9f4c('0x23')](_0x426f60[_0x9f4c('0x22')],function(_0x50601e){return{'model':db[_0x50601e[_0x9f4c('0x24')]],'as':_0x50601e['as'],'attributes':_0x50601e[_0x9f4c('0x20')],'include':_0x50601e['include']?_[_0x9f4c('0x23')](_0x50601e[_0x9f4c('0x22')],function(_0x39ba94){return{'model':db[_0x39ba94['model']],'as':_0x39ba94['as'],'attributes':_0x39ba94['attributes']};}):[]};}):[]};}):[]:[]})[_0x9f4c('0x11')](function(_0x3b6ad3){logger['info'](_0x9f4c('0x1b'),_0xc8bf85);logger[_0x9f4c('0x15')]('GetOpenchannelQueue',_0xc8bf85,JSON[_0x9f4c('0x25')](_0x3b6ad3));_0x13c6d1(_0x3b6ad3);})['catch'](function(_0x441e7c){logger[_0x9f4c('0x17')](_0x9f4c('0x1b'),_0x441e7c['message'],_0xc8bf85);_0x28e6b3(_0x256c79['error'](0x1f4,_0x441e7c[_0x9f4c('0x19')]));});});};exports[_0x9f4c('0x26')]=function(_0x5408db){var _0x4960d4=this;return new Promise(function(_0x2764a2,_0x3aa818){return db[_0x9f4c('0x1c')][_0x9f4c('0x27')]({'raw':_0x5408db['options']?_0x5408db[_0x9f4c('0x1e')][_0x9f4c('0x1f')]===undefined?!![]:![]:!![],'where':_0x5408db['options']?_0x5408db[_0x9f4c('0x1e')][_0x9f4c('0x28')]||null:null,'attributes':_0x5408db[_0x9f4c('0x1e')]?_0x5408db[_0x9f4c('0x1e')][_0x9f4c('0x20')]||null:null,'include':_0x5408db['options']?_0x5408db[_0x9f4c('0x1e')][_0x9f4c('0x22')]?_['map'](_0x5408db[_0x9f4c('0x1e')][_0x9f4c('0x22')],function(_0x5c69c3){return{'model':db[_0x5c69c3['model']],'as':_0x5c69c3['as'],'attributes':_0x5c69c3['attributes'],'include':_0x5c69c3[_0x9f4c('0x22')]?_['map'](_0x5c69c3[_0x9f4c('0x22')],function(_0x579379){return{'model':db[_0x579379['model']],'as':_0x579379['as'],'attributes':_0x579379[_0x9f4c('0x20')],'include':_0x579379[_0x9f4c('0x22')]?_[_0x9f4c('0x23')](_0x579379[_0x9f4c('0x22')],function(_0x96591f){return{'model':db[_0x96591f[_0x9f4c('0x24')]],'as':_0x96591f['as'],'attributes':_0x96591f[_0x9f4c('0x20')]};}):[]};}):[]};}):[]:[]})[_0x9f4c('0x11')](function(_0x30cf44){logger[_0x9f4c('0x12')](_0x9f4c('0x26'),_0x5408db);logger[_0x9f4c('0x15')](_0x9f4c('0x26'),_0x5408db,JSON[_0x9f4c('0x25')](_0x30cf44));_0x2764a2(_0x30cf44);})[_0x9f4c('0x1a')](function(_0x508ee3){logger['error']('ShowOpenchannelQueue',_0x508ee3[_0x9f4c('0x19')],_0x5408db);_0x3aa818(_0x4960d4[_0x9f4c('0x17')](0x1f4,_0x508ee3['message']));});});};
\ No newline at end of file
index 0886b0d..543bf0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71d5=['save','update','emit','removeListener','register','openchannelQueue:','./openchannelQueue.events'];(function(_0x12e79b,_0xac13c0){var _0x12216e=function(_0x3fd53e){while(--_0x3fd53e){_0x12e79b['push'](_0x12e79b['shift']());}};_0x12216e(++_0xac13c0);}(_0x71d5,0x1c6));var _0x571d=function(_0x47d338,_0x23eabf){_0x47d338=_0x47d338-0x0;var _0x5d3f11=_0x71d5[_0x47d338];return _0x5d3f11;};'use strict';var OpenchannelQueueEvents=require(_0x571d('0x0'));var events=[_0x571d('0x1'),'remove',_0x571d('0x2')];function createListener(_0x415c10,_0x340857){return function(_0x5399ef){_0x340857[_0x571d('0x3')](_0x415c10,_0x5399ef);};}function removeListener(_0x495ff6,_0x452d7b){return function(){OpenchannelQueueEvents[_0x571d('0x4')](_0x495ff6,_0x452d7b);};}exports[_0x571d('0x5')]=function(_0x2e795b){for(var _0x2f03f1=0x0,_0x40ec62=events['length'];_0x2f03f1<_0x40ec62;_0x2f03f1++){var _0x2227d4=events[_0x2f03f1];var _0x2af76c=createListener(_0x571d('0x6')+_0x2227d4,_0x2e795b);OpenchannelQueueEvents['on'](_0x2227d4,_0x2af76c);}};
\ No newline at end of file
+var _0x4420=['removeListener','register','openchannelQueue:','./openchannelQueue.events','save','update','emit'];(function(_0x39a07f,_0x5a5988){var _0x231c9e=function(_0x2cbeea){while(--_0x2cbeea){_0x39a07f['push'](_0x39a07f['shift']());}};_0x231c9e(++_0x5a5988);}(_0x4420,0x1a0));var _0x0442=function(_0x4f3f3c,_0x11b2e1){_0x4f3f3c=_0x4f3f3c-0x0;var _0x4100b6=_0x4420[_0x4f3f3c];return _0x4100b6;};'use strict';var OpenchannelQueueEvents=require(_0x0442('0x0'));var events=[_0x0442('0x1'),'remove',_0x0442('0x2')];function createListener(_0x3123b9,_0x2abda1){return function(_0x2c8c1c){_0x2abda1[_0x0442('0x3')](_0x3123b9,_0x2c8c1c);};}function removeListener(_0x204169,_0x3084be){return function(){OpenchannelQueueEvents[_0x0442('0x4')](_0x204169,_0x3084be);};}exports[_0x0442('0x5')]=function(_0x3a4fb2){for(var _0x4c046e=0x0,_0x57dbe5=events['length'];_0x4c046e<_0x57dbe5;_0x4c046e++){var _0x4a0f04=events[_0x4c046e];var _0x57e446=createListener(_0x0442('0x6')+_0x4a0f04,_0x3a4fb2);OpenchannelQueueEvents['on'](_0x4a0f04,_0x57e446);}};
\ No newline at end of file
index 3e9716e..f92868c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0f4=['/describe','describe','/:id','show','post','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0xd0f4,0x13d));var _0x4d0f=function(_0x1ab5da,_0x28bcdf){_0x1ab5da=_0x1ab5da-0x0;var _0x1cb3f3=_0xd0f4[_0x1ab5da];return _0x1cb3f3;};'use strict';var multer=require(_0x4d0f('0x0'));var util=require(_0x4d0f('0x1'));var path=require(_0x4d0f('0x2'));var timeout=require(_0x4d0f('0x3'));var express=require(_0x4d0f('0x4'));var router=express[_0x4d0f('0x5')]();var fs_extra=require(_0x4d0f('0x6'));var auth=require(_0x4d0f('0x7'));var interaction=require(_0x4d0f('0x8'));var config=require(_0x4d0f('0x9'));var controller=require('./openchannelQueueReport.controller');router[_0x4d0f('0xa')]('/',auth[_0x4d0f('0xb')](),controller[_0x4d0f('0xc')]);router[_0x4d0f('0xa')](_0x4d0f('0xd'),auth[_0x4d0f('0xb')](),controller[_0x4d0f('0xe')]);router[_0x4d0f('0xa')](_0x4d0f('0xf'),auth[_0x4d0f('0xb')](),controller[_0x4d0f('0x10')]);router[_0x4d0f('0x11')]('/',auth[_0x4d0f('0xb')](),controller['create']);router[_0x4d0f('0x12')](_0x4d0f('0xf'),auth['isAuthenticated'](),controller[_0x4d0f('0x13')]);router['delete']('/:id',auth[_0x4d0f('0xb')](),controller[_0x4d0f('0x14')]);module[_0x4d0f('0x15')]=router;
\ No newline at end of file
+var _0x1894=['post','create','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x2cb3cd,_0x103cda){var _0x587fa2=function(_0x235549){while(--_0x235549){_0x2cb3cd['push'](_0x2cb3cd['shift']());}};_0x587fa2(++_0x103cda);}(_0x1894,0x17e));var _0x4189=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x1894[_0x126558];return _0x1f6d14;};'use strict';var multer=require(_0x4189('0x0'));var util=require(_0x4189('0x1'));var path=require(_0x4189('0x2'));var timeout=require(_0x4189('0x3'));var express=require(_0x4189('0x4'));var router=express[_0x4189('0x5')]();var fs_extra=require(_0x4189('0x6'));var auth=require(_0x4189('0x7'));var interaction=require(_0x4189('0x8'));var config=require(_0x4189('0x9'));var controller=require(_0x4189('0xa'));router[_0x4189('0xb')]('/',auth[_0x4189('0xc')](),controller[_0x4189('0xd')]);router[_0x4189('0xb')](_0x4189('0xe'),auth[_0x4189('0xc')](),controller[_0x4189('0xf')]);router[_0x4189('0xb')](_0x4189('0x10'),auth[_0x4189('0xc')](),controller['show']);router[_0x4189('0x11')]('/',auth[_0x4189('0xc')](),controller[_0x4189('0x12')]);router['put'](_0x4189('0x10'),auth[_0x4189('0xc')](),controller[_0x4189('0x13')]);router[_0x4189('0x14')](_0x4189('0x10'),auth[_0x4189('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index bc8eb16..f2fe865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d20=['DATE','sequelize','exports','STRING'];(function(_0x85d353,_0x43a61f){var _0x428cbc=function(_0x9f9749){while(--_0x9f9749){_0x85d353['push'](_0x85d353['shift']());}};_0x428cbc(++_0x43a61f);}(_0x8d20,0x1c5));var _0x08d2=function(_0x1a1d02,_0x32a85e){_0x1a1d02=_0x1a1d02-0x0;var _0x2fcbfc=_0x8d20[_0x1a1d02];return _0x2fcbfc;};'use strict';var moment=require('moment');var Sequelize=require(_0x08d2('0x0'));module[_0x08d2('0x1')]={'uniqueid':{'type':Sequelize[_0x08d2('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x08d2('0x2')]},'joinAt':{'type':Sequelize[_0x08d2('0x3')]},'leaveAt':{'type':Sequelize[_0x08d2('0x3')]},'acceptAt':{'type':Sequelize[_0x08d2('0x3')]},'exitAt':{'type':Sequelize[_0x08d2('0x3')]},'reason':{'type':Sequelize[_0x08d2('0x2')]}};
\ No newline at end of file
+var _0xb8c8=['moment','exports','STRING','DATE'];(function(_0x56b52b,_0x168bea){var _0x89e7d3=function(_0x247409){while(--_0x247409){_0x56b52b['push'](_0x56b52b['shift']());}};_0x89e7d3(++_0x168bea);}(_0xb8c8,0x11c));var _0x8b8c=function(_0x1516c5,_0x5af94d){_0x1516c5=_0x1516c5-0x0;var _0x4895e6=_0xb8c8[_0x1516c5];return _0x4895e6;};'use strict';var moment=require(_0x8b8c('0x0'));var Sequelize=require('sequelize');module[_0x8b8c('0x1')]={'uniqueid':{'type':Sequelize[_0x8b8c('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x8b8c('0x2')]},'joinAt':{'type':Sequelize[_0x8b8c('0x3')]},'leaveAt':{'type':Sequelize[_0x8b8c('0x3')]},'acceptAt':{'type':Sequelize[_0x8b8c('0x3')]},'exitAt':{'type':Sequelize[_0x8b8c('0x3')]},'reason':{'type':Sequelize[_0x8b8c('0x2')]}};
\ No newline at end of file
index fe9b60e..7adf39a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1b8=['sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','end','error','stack','name','send','OpenchannelQueueReport','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','rows','show','length','include','catch','create','body','params','destroy','find','describe','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util'];(function(_0x27b8b0,_0x1bea20){var _0x35af84=function(_0x1975ac){while(--_0x1975ac){_0x27b8b0['push'](_0x27b8b0['shift']());}};_0x35af84(++_0x1bea20);}(_0xd1b8,0x1ac));var _0x8d1b=function(_0x2ecc65,_0xd75c48){_0x2ecc65=_0x2ecc65-0x0;var _0x103cc3=_0xd1b8[_0x2ecc65];return _0x103cc3;};'use strict';var emlformat=require(_0x8d1b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8d1b('0x1'));var rp=require(_0x8d1b('0x2'));var moment=require('moment');var BPromise=require(_0x8d1b('0x3'));var Mustache=require(_0x8d1b('0x4'));var util=require(_0x8d1b('0x5'));var path=require(_0x8d1b('0x6'));var sox=require(_0x8d1b('0x7'));var csv=require('to-csv');var ejs=require(_0x8d1b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8d1b('0x9'));var squel=require('squel');var crypto=require(_0x8d1b('0xa'));var jsforce=require(_0x8d1b('0xb'));var deskjs=require(_0x8d1b('0xc'));var toCsv=require(_0x8d1b('0xd'));var querystring=require(_0x8d1b('0xe'));var Papa=require(_0x8d1b('0xf'));var Redis=require(_0x8d1b('0x10'));var authService=require(_0x8d1b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8d1b('0x12'));var hardwareService=require(_0x8d1b('0x13'));var logger=require(_0x8d1b('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8d1b('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x48fb4a,_0x3d0dfe){_0x3d0dfe=_0x3d0dfe||0xcc;return function(_0x541e9c){if(_0x541e9c){return _0x48fb4a[_0x8d1b('0x16')](_0x3d0dfe);}return _0x48fb4a[_0x8d1b('0x17')](_0x3d0dfe)['end']();};}function respondWithResult(_0x58d884,_0x6af17f){_0x6af17f=_0x6af17f||0xc8;return function(_0x351842){if(_0x351842){return _0x58d884[_0x8d1b('0x17')](_0x6af17f)['json'](_0x351842);}};}function respondWithFilteredResult(_0x2b19c5,_0x2724d8){return function(_0xc8db1d){if(_0xc8db1d){var _0x9db923=typeof _0x2724d8[_0x8d1b('0x18')]===_0x8d1b('0x19')&&typeof _0x2724d8[_0x8d1b('0x1a')]===_0x8d1b('0x19');var _0x2d9bff=_0xc8db1d[_0x8d1b('0x1b')];var _0xe68039=_0x9db923?0x0:_0x2724d8[_0x8d1b('0x18')];var _0x3d1867=_0x9db923?_0xc8db1d[_0x8d1b('0x1b')]:_0x2724d8[_0x8d1b('0x18')]+_0x2724d8[_0x8d1b('0x1a')];var _0x2dcccc;if(_0x3d1867>=_0x2d9bff){_0x3d1867=_0x2d9bff;_0x2dcccc=0xc8;}else{_0x2dcccc=0xce;}_0x2b19c5[_0x8d1b('0x17')](_0x2dcccc);return _0x2b19c5['set'](_0x8d1b('0x1c'),_0xe68039+'-'+_0x3d1867+'/'+_0x2d9bff)[_0x8d1b('0x1d')](_0xc8db1d);}return null;};}function patchUpdates(_0x57ea44){return function(_0x7c1dd9){try{jsonpatch[_0x8d1b('0x1e')](_0x7c1dd9,_0x57ea44,!![]);}catch(_0x257589){return BPromise[_0x8d1b('0x1f')](_0x257589);}return _0x7c1dd9[_0x8d1b('0x20')]();};}function saveUpdates(_0x317214,_0x1f6d79){return function(_0x138fb0){if(_0x138fb0){return _0x138fb0[_0x8d1b('0x21')](_0x317214)['then'](function(_0x240d1e){return _0x240d1e;});}return null;};}function removeEntity(_0x245f2b,_0x5a26e4){return function(_0x495840){if(_0x495840){return _0x495840['destroy']()[_0x8d1b('0x22')](function(){_0x245f2b[_0x8d1b('0x17')](0xcc)[_0x8d1b('0x23')]();});}};}function handleEntityNotFound(_0x14912e,_0x317280){return function(_0x51e63e){if(!_0x51e63e){_0x14912e[_0x8d1b('0x16')](0x194);}return _0x51e63e;};}function handleError(_0x53c0df,_0x5321ba){_0x5321ba=_0x5321ba||0x1f4;return function(_0x415752){logger[_0x8d1b('0x24')](_0x415752[_0x8d1b('0x25')]);if(_0x415752['name']){delete _0x415752[_0x8d1b('0x26')];}_0x53c0df[_0x8d1b('0x17')](_0x5321ba)[_0x8d1b('0x27')](_0x415752);};}exports['index']=function(_0x25a4e7,_0x3cf606){var _0x4e1780={},_0x4f4f0a={},_0x1b20d4={'count':0x0,'rows':[]};var _0x40ceca=_['map'](db[_0x8d1b('0x28')][_0x8d1b('0x29')],function(_0x330a19){return{'name':_0x330a19[_0x8d1b('0x2a')],'type':_0x330a19[_0x8d1b('0x2b')][_0x8d1b('0x2c')]};});_0x4f4f0a['model']=_[_0x8d1b('0x2d')](_0x40ceca,_0x8d1b('0x26'));_0x4f4f0a[_0x8d1b('0x2e')]=_[_0x8d1b('0x2f')](_0x25a4e7[_0x8d1b('0x2e')]);_0x4f4f0a['filters']=_[_0x8d1b('0x30')](_0x4f4f0a[_0x8d1b('0x31')],_0x4f4f0a['query']);_0x4e1780[_0x8d1b('0x32')]=_[_0x8d1b('0x30')](_0x4f4f0a[_0x8d1b('0x31')],qs['fields'](_0x25a4e7[_0x8d1b('0x2e')][_0x8d1b('0x33')]));_0x4e1780['attributes']=_0x4e1780[_0x8d1b('0x32')]['length']?_0x4e1780['attributes']:_0x4f4f0a[_0x8d1b('0x31')];if(!_0x25a4e7[_0x8d1b('0x2e')][_0x8d1b('0x34')](_0x8d1b('0x35'))){_0x4e1780['limit']=qs[_0x8d1b('0x1a')](_0x25a4e7[_0x8d1b('0x2e')][_0x8d1b('0x1a')]);_0x4e1780[_0x8d1b('0x18')]=qs['offset'](_0x25a4e7['query'][_0x8d1b('0x18')]);}_0x4e1780[_0x8d1b('0x36')]=qs[_0x8d1b('0x37')](_0x25a4e7[_0x8d1b('0x2e')]['sort']);_0x4e1780[_0x8d1b('0x38')]=qs[_0x8d1b('0x39')](_[_0x8d1b('0x3a')](_0x25a4e7[_0x8d1b('0x2e')],_0x4f4f0a['filters']),_0x40ceca);if(_0x25a4e7[_0x8d1b('0x2e')][_0x8d1b('0x3b')]){_0x4e1780[_0x8d1b('0x38')]=_[_0x8d1b('0x3c')](_0x4e1780[_0x8d1b('0x38')],{'$or':_['map'](_0x40ceca,function(_0x50bbe9){if(_0x50bbe9[_0x8d1b('0x2b')]!==_0x8d1b('0x3d')){var _0x510710={};_0x510710[_0x50bbe9[_0x8d1b('0x26')]]={'$like':'%'+_0x25a4e7['query'][_0x8d1b('0x3b')]+'%'};return _0x510710;}})});}_0x4e1780=_['merge']({},_0x4e1780,_0x25a4e7[_0x8d1b('0x3e')]);var _0x250612={'where':_0x4e1780[_0x8d1b('0x38')]};return db['OpenchannelQueueReport'][_0x8d1b('0x1b')](_0x250612)[_0x8d1b('0x22')](function(_0xdfd43c){_0x1b20d4[_0x8d1b('0x1b')]=_0xdfd43c;if(_0x25a4e7[_0x8d1b('0x2e')][_0x8d1b('0x3f')]){_0x4e1780['include']=[{'all':!![]}];}return db['OpenchannelQueueReport']['findAll'](_0x4e1780);})[_0x8d1b('0x22')](function(_0x2fc87b){_0x1b20d4[_0x8d1b('0x40')]=_0x2fc87b;return _0x1b20d4;})[_0x8d1b('0x22')](respondWithFilteredResult(_0x3cf606,_0x4e1780))['catch'](handleError(_0x3cf606,null));};exports[_0x8d1b('0x41')]=function(_0x4945b4,_0x1f4936){var _0xc1d041={'raw':!![],'where':{'id':_0x4945b4['params']['id']}},_0x21a501={};_0x21a501[_0x8d1b('0x31')]=_[_0x8d1b('0x2f')](db[_0x8d1b('0x28')]['rawAttributes']);_0x21a501[_0x8d1b('0x2e')]=_[_0x8d1b('0x2f')](_0x4945b4['query']);_0x21a501[_0x8d1b('0x39')]=_['intersection'](_0x21a501[_0x8d1b('0x31')],_0x21a501[_0x8d1b('0x2e')]);_0xc1d041[_0x8d1b('0x32')]=_[_0x8d1b('0x30')](_0x21a501['model'],qs[_0x8d1b('0x33')](_0x4945b4[_0x8d1b('0x2e')][_0x8d1b('0x33')]));_0xc1d041[_0x8d1b('0x32')]=_0xc1d041[_0x8d1b('0x32')][_0x8d1b('0x42')]?_0xc1d041[_0x8d1b('0x32')]:_0x21a501[_0x8d1b('0x31')];if(_0x4945b4[_0x8d1b('0x2e')][_0x8d1b('0x3f')]){_0xc1d041[_0x8d1b('0x43')]=[{'all':!![]}];}_0xc1d041=_['merge']({},_0xc1d041,_0x4945b4[_0x8d1b('0x3e')]);return db[_0x8d1b('0x28')]['find'](_0xc1d041)[_0x8d1b('0x22')](handleEntityNotFound(_0x1f4936,null))[_0x8d1b('0x22')](respondWithResult(_0x1f4936,null))[_0x8d1b('0x44')](handleError(_0x1f4936,null));};exports[_0x8d1b('0x45')]=function(_0x489e73,_0x30656e){return db[_0x8d1b('0x28')][_0x8d1b('0x45')](_0x489e73['body'],{})[_0x8d1b('0x22')](respondWithResult(_0x30656e,0xc9))[_0x8d1b('0x44')](handleError(_0x30656e,null));};exports[_0x8d1b('0x21')]=function(_0x15a11b,_0x4ce5f4){if(_0x15a11b[_0x8d1b('0x46')]['id']){delete _0x15a11b[_0x8d1b('0x46')]['id'];}return db[_0x8d1b('0x28')]['find']({'where':{'id':_0x15a11b[_0x8d1b('0x47')]['id']}})['then'](handleEntityNotFound(_0x4ce5f4,null))[_0x8d1b('0x22')](saveUpdates(_0x15a11b[_0x8d1b('0x46')],null))[_0x8d1b('0x22')](respondWithResult(_0x4ce5f4,null))[_0x8d1b('0x44')](handleError(_0x4ce5f4,null));};exports[_0x8d1b('0x48')]=function(_0x3add4e,_0x3a7c86){return db[_0x8d1b('0x28')][_0x8d1b('0x49')]({'where':{'id':_0x3add4e[_0x8d1b('0x47')]['id']}})[_0x8d1b('0x22')](handleEntityNotFound(_0x3a7c86,null))[_0x8d1b('0x22')](removeEntity(_0x3a7c86,null))[_0x8d1b('0x44')](handleError(_0x3a7c86,null));};exports[_0x8d1b('0x4a')]=function(_0x2bdb5a,_0x568f29){return db[_0x8d1b('0x28')][_0x8d1b('0x4a')]()[_0x8d1b('0x22')](respondWithResult(_0x568f29,null))[_0x8d1b('0x44')](handleError(_0x568f29,null));};
\ No newline at end of file
+var _0x7a1a=['fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','OpenchannelQueueReport','includeAll','findAll','rows','catch','params','keys','length','find','create','body','destroy','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','then','error','stack','index','rawAttributes','fieldName','type','key','model','map','name','intersection','query'];(function(_0x3e4d2a,_0x4a6d6e){var _0x585908=function(_0x2d21b1){while(--_0x2d21b1){_0x3e4d2a['push'](_0x3e4d2a['shift']());}};_0x585908(++_0x4a6d6e);}(_0x7a1a,0x17c));var _0xa7a1=function(_0x518fbb,_0xb1b8e5){_0x518fbb=_0x518fbb-0x0;var _0x59a4a3=_0x7a1a[_0x518fbb];return _0x59a4a3;};'use strict';var emlformat=require(_0xa7a1('0x0'));var rimraf=require(_0xa7a1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa7a1('0x2'));var rp=require('request-promise');var moment=require(_0xa7a1('0x3'));var BPromise=require(_0xa7a1('0x4'));var Mustache=require('mustache');var util=require(_0xa7a1('0x5'));var path=require(_0xa7a1('0x6'));var sox=require(_0xa7a1('0x7'));var csv=require(_0xa7a1('0x8'));var ejs=require(_0xa7a1('0x9'));var fs=require('fs');var fs_extra=require(_0xa7a1('0xa'));var _=require('lodash');var squel=require(_0xa7a1('0xb'));var crypto=require(_0xa7a1('0xc'));var jsforce=require(_0xa7a1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xa7a1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa7a1('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xa7a1('0xf'));var as=require(_0xa7a1('0x10'));var hardwareService=require(_0xa7a1('0x11'));var logger=require(_0xa7a1('0x12'))('api');var utils=require(_0xa7a1('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xa7a1('0x14'));var db=require(_0xa7a1('0x15'))['db'];function respondWithStatusCode(_0x575309,_0x21f01){_0x21f01=_0x21f01||0xcc;return function(_0xc517f9){if(_0xc517f9){return _0x575309[_0xa7a1('0x16')](_0x21f01);}return _0x575309[_0xa7a1('0x17')](_0x21f01)[_0xa7a1('0x18')]();};}function respondWithResult(_0x2872eb,_0x37a585){_0x37a585=_0x37a585||0xc8;return function(_0x206671){if(_0x206671){return _0x2872eb['status'](_0x37a585)[_0xa7a1('0x19')](_0x206671);}};}function respondWithFilteredResult(_0x1f6028,_0x1feeb0){return function(_0x318e44){if(_0x318e44){var _0x53cddd=typeof _0x1feeb0[_0xa7a1('0x1a')]==='undefined'&&typeof _0x1feeb0[_0xa7a1('0x1b')]===_0xa7a1('0x1c');var _0x3f10a7=_0x318e44['count'];var _0x168c81=_0x53cddd?0x0:_0x1feeb0[_0xa7a1('0x1a')];var _0x22779e=_0x53cddd?_0x318e44[_0xa7a1('0x1d')]:_0x1feeb0[_0xa7a1('0x1a')]+_0x1feeb0[_0xa7a1('0x1b')];var _0x49125a;if(_0x22779e>=_0x3f10a7){_0x22779e=_0x3f10a7;_0x49125a=0xc8;}else{_0x49125a=0xce;}_0x1f6028['status'](_0x49125a);return _0x1f6028['set'](_0xa7a1('0x1e'),_0x168c81+'-'+_0x22779e+'/'+_0x3f10a7)['json'](_0x318e44);}return null;};}function patchUpdates(_0x5f304c){return function(_0x168f11){try{jsonpatch[_0xa7a1('0x1f')](_0x168f11,_0x5f304c,!![]);}catch(_0x2fd130){return BPromise[_0xa7a1('0x20')](_0x2fd130);}return _0x168f11['save']();};}function saveUpdates(_0x672408,_0x5a700d){return function(_0xcc47be){if(_0xcc47be){return _0xcc47be['update'](_0x672408)['then'](function(_0x3a654f){return _0x3a654f;});}return null;};}function removeEntity(_0xd7a8fb,_0x47f37d){return function(_0x18005f){if(_0x18005f){return _0x18005f['destroy']()[_0xa7a1('0x21')](function(){_0xd7a8fb[_0xa7a1('0x17')](0xcc)[_0xa7a1('0x18')]();});}};}function handleEntityNotFound(_0x516089,_0x1ef102){return function(_0x35bd6c){if(!_0x35bd6c){_0x516089[_0xa7a1('0x16')](0x194);}return _0x35bd6c;};}function handleError(_0x2128a6,_0x297f28){_0x297f28=_0x297f28||0x1f4;return function(_0x4b7b09){logger[_0xa7a1('0x22')](_0x4b7b09[_0xa7a1('0x23')]);if(_0x4b7b09['name']){delete _0x4b7b09['name'];}_0x2128a6[_0xa7a1('0x17')](_0x297f28)['send'](_0x4b7b09);};}exports[_0xa7a1('0x24')]=function(_0x5ec4f9,_0x31bca1){var _0x20f399={},_0x521991={},_0x1d5732={'count':0x0,'rows':[]};var _0x2d14f9=_['map'](db['OpenchannelQueueReport'][_0xa7a1('0x25')],function(_0x5993bb){return{'name':_0x5993bb[_0xa7a1('0x26')],'type':_0x5993bb[_0xa7a1('0x27')][_0xa7a1('0x28')]};});_0x521991[_0xa7a1('0x29')]=_[_0xa7a1('0x2a')](_0x2d14f9,_0xa7a1('0x2b'));_0x521991['query']=_['keys'](_0x5ec4f9['query']);_0x521991['filters']=_[_0xa7a1('0x2c')](_0x521991[_0xa7a1('0x29')],_0x521991[_0xa7a1('0x2d')]);_0x20f399['attributes']=_['intersection'](_0x521991[_0xa7a1('0x29')],qs[_0xa7a1('0x2e')](_0x5ec4f9['query'][_0xa7a1('0x2e')]));_0x20f399[_0xa7a1('0x2f')]=_0x20f399[_0xa7a1('0x2f')]['length']?_0x20f399[_0xa7a1('0x2f')]:_0x521991[_0xa7a1('0x29')];if(!_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x30')](_0xa7a1('0x31'))){_0x20f399[_0xa7a1('0x1b')]=qs[_0xa7a1('0x1b')](_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x1b')]);_0x20f399[_0xa7a1('0x1a')]=qs['offset'](_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x1a')]);}_0x20f399[_0xa7a1('0x32')]=qs[_0xa7a1('0x33')](_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x33')]);_0x20f399[_0xa7a1('0x34')]=qs['filters'](_[_0xa7a1('0x35')](_0x5ec4f9[_0xa7a1('0x2d')],_0x521991[_0xa7a1('0x36')]),_0x2d14f9);if(_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x37')]){_0x20f399[_0xa7a1('0x34')]=_['merge'](_0x20f399[_0xa7a1('0x34')],{'$or':_[_0xa7a1('0x2a')](_0x2d14f9,function(_0x5745e6){if(_0x5745e6[_0xa7a1('0x27')]!=='VIRTUAL'){var _0x5d855d={};_0x5d855d[_0x5745e6['name']]={'$like':'%'+_0x5ec4f9['query'][_0xa7a1('0x37')]+'%'};return _0x5d855d;}})});}_0x20f399=_[_0xa7a1('0x38')]({},_0x20f399,_0x5ec4f9[_0xa7a1('0x39')]);var _0x4ef50b={'where':_0x20f399['where']};return db[_0xa7a1('0x3a')][_0xa7a1('0x1d')](_0x4ef50b)[_0xa7a1('0x21')](function(_0x5d1938){_0x1d5732[_0xa7a1('0x1d')]=_0x5d1938;if(_0x5ec4f9[_0xa7a1('0x2d')][_0xa7a1('0x3b')]){_0x20f399['include']=[{'all':!![]}];}return db[_0xa7a1('0x3a')][_0xa7a1('0x3c')](_0x20f399);})['then'](function(_0x57d16b){_0x1d5732[_0xa7a1('0x3d')]=_0x57d16b;return _0x1d5732;})[_0xa7a1('0x21')](respondWithFilteredResult(_0x31bca1,_0x20f399))[_0xa7a1('0x3e')](handleError(_0x31bca1,null));};exports['show']=function(_0x4ee70d,_0x2141ae){var _0x519ad6={'raw':!![],'where':{'id':_0x4ee70d[_0xa7a1('0x3f')]['id']}},_0x60fc21={};_0x60fc21[_0xa7a1('0x29')]=_['keys'](db[_0xa7a1('0x3a')]['rawAttributes']);_0x60fc21[_0xa7a1('0x2d')]=_[_0xa7a1('0x40')](_0x4ee70d[_0xa7a1('0x2d')]);_0x60fc21['filters']=_['intersection'](_0x60fc21[_0xa7a1('0x29')],_0x60fc21[_0xa7a1('0x2d')]);_0x519ad6['attributes']=_[_0xa7a1('0x2c')](_0x60fc21[_0xa7a1('0x29')],qs[_0xa7a1('0x2e')](_0x4ee70d[_0xa7a1('0x2d')][_0xa7a1('0x2e')]));_0x519ad6[_0xa7a1('0x2f')]=_0x519ad6[_0xa7a1('0x2f')][_0xa7a1('0x41')]?_0x519ad6[_0xa7a1('0x2f')]:_0x60fc21[_0xa7a1('0x29')];if(_0x4ee70d[_0xa7a1('0x2d')]['includeAll']){_0x519ad6['include']=[{'all':!![]}];}_0x519ad6=_[_0xa7a1('0x38')]({},_0x519ad6,_0x4ee70d[_0xa7a1('0x39')]);return db[_0xa7a1('0x3a')][_0xa7a1('0x42')](_0x519ad6)['then'](handleEntityNotFound(_0x2141ae,null))[_0xa7a1('0x21')](respondWithResult(_0x2141ae,null))['catch'](handleError(_0x2141ae,null));};exports['create']=function(_0x3ff714,_0xd9530e){return db[_0xa7a1('0x3a')][_0xa7a1('0x43')](_0x3ff714[_0xa7a1('0x44')],{})[_0xa7a1('0x21')](respondWithResult(_0xd9530e,0xc9))[_0xa7a1('0x3e')](handleError(_0xd9530e,null));};exports['update']=function(_0x34deb3,_0x50e128){if(_0x34deb3[_0xa7a1('0x44')]['id']){delete _0x34deb3[_0xa7a1('0x44')]['id'];}return db[_0xa7a1('0x3a')][_0xa7a1('0x42')]({'where':{'id':_0x34deb3['params']['id']}})[_0xa7a1('0x21')](handleEntityNotFound(_0x50e128,null))[_0xa7a1('0x21')](saveUpdates(_0x34deb3['body'],null))[_0xa7a1('0x21')](respondWithResult(_0x50e128,null))[_0xa7a1('0x3e')](handleError(_0x50e128,null));};exports[_0xa7a1('0x45')]=function(_0xa17f5,_0x2eafb6){return db[_0xa7a1('0x3a')][_0xa7a1('0x42')]({'where':{'id':_0xa17f5[_0xa7a1('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2eafb6,null))[_0xa7a1('0x21')](removeEntity(_0x2eafb6,null))['catch'](handleError(_0x2eafb6,null));};exports[_0xa7a1('0x46')]=function(_0x52532d,_0x431050){return db['OpenchannelQueueReport'][_0xa7a1('0x46')]()['then'](respondWithResult(_0x431050,null))['catch'](handleError(_0x431050,null));};
\ No newline at end of file
index fbb2db7..67a52aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x3f5dca,_0x59472b){var _0x5b833a=function(_0x1cb84b){while(--_0x1cb84b){_0x3f5dca['push'](_0x3f5dca['shift']());}};_0x5b833a(++_0x59472b);}(_0x814b,0x1a2));var _0xb814=function(_0x4d770d,_0x5af4ce){_0x4d770d=_0x4d770d-0x0;var _0x11dc7a=_0x814b[_0x4d770d];return _0x11dc7a;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_openchannel_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x4fb419,_0x55b55f){var _0x1095a3=function(_0x40bbe0){while(--_0x40bbe0){_0x4fb419['push'](_0x4fb419['shift']());}};_0x1095a3(++_0x55b55f);}(_0x1261,0x144));var _0x1126=function(_0x238202,_0x10da07){_0x238202=_0x238202-0x0;var _0x217367=_0x1261[_0x238202];return _0x217367;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index f2f97e2..983e725 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd26f=['OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','options','raw','update','body','attributes','limit','then','UpdateOpenchannelQueueReport','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info'];(function(_0xa716dc,_0x26207a){var _0xb33a04=function(_0x26a1df){while(--_0x26a1df){_0xa716dc['push'](_0xa716dc['shift']());}};_0xb33a04(++_0x26207a);}(_0xd26f,0x113));var _0xfd26=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xd26f[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0xfd26('0x0'));var util=require(_0xfd26('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xfd26('0x2'));var fs=require('fs');var Redis=require(_0xfd26('0x3'));var db=require(_0xfd26('0x4'))['db'];var utils=require(_0xfd26('0x5'));var logger=require(_0xfd26('0x6'))(_0xfd26('0x7'));var config=require(_0xfd26('0x8'));var jayson=require(_0xfd26('0x9'));var client=jayson[_0xfd26('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22b353,_0x3c148d,_0x1905a2){return new BPromise(function(_0x3d405f,_0x3c9154){return client[_0xfd26('0xb')](_0x22b353,_0x1905a2)['then'](function(_0xcf2fdb){logger[_0xfd26('0xc')](_0xfd26('0xd'),_0x3c148d,_0xfd26('0xe'));logger[_0xfd26('0xf')](_0xfd26('0x10'),_0x3c148d,'request\x20sent',JSON[_0xfd26('0x11')](_0xcf2fdb));if(_0xcf2fdb['error']){if(_0xcf2fdb[_0xfd26('0x12')]['code']===0x1f4){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x3c148d,_0xcf2fdb['error']['message']);return _0x3c9154(_0xcf2fdb[_0xfd26('0x12')][_0xfd26('0x13')]);}logger[_0xfd26('0x12')](_0xfd26('0xd'),_0x3c148d,_0xcf2fdb[_0xfd26('0x12')][_0xfd26('0x13')]);return _0x3d405f(_0xcf2fdb[_0xfd26('0x12')][_0xfd26('0x13')]);}else{logger[_0xfd26('0xc')](_0xfd26('0xd'),_0x3c148d,_0xfd26('0xe'));_0x3d405f(_0xcf2fdb[_0xfd26('0x14')][_0xfd26('0x13')]);}})[_0xfd26('0x15')](function(_0x2f9b37){logger['error'](_0xfd26('0xd'),_0x3c148d,_0x2f9b37);_0x3c9154(_0x2f9b37);});});}exports[_0xfd26('0x16')]=function(_0xeb7aeb){var _0x210dd4=this;return new Promise(function(_0x36a275,_0x5b3e8b){return db[_0xfd26('0x17')]['create'](_0xeb7aeb['body'],{'raw':_0xeb7aeb['options']?_0xeb7aeb[_0xfd26('0x18')][_0xfd26('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x523cbe){logger[_0xfd26('0xc')](_0xfd26('0x16'),_0xeb7aeb);logger['debug'](_0xfd26('0x16'),_0xeb7aeb,JSON['stringify'](_0x523cbe));_0x36a275(_0x523cbe);})[_0xfd26('0x15')](function(_0x531bf7){logger[_0xfd26('0x12')]('CreateOpenchannelQueueReport',_0x531bf7[_0xfd26('0x13')],_0xeb7aeb);_0x5b3e8b(_0x210dd4[_0xfd26('0x12')](0x1f4,_0x531bf7['message']));});});};exports['UpdateOpenchannelQueueReport']=function(_0x1194c2){var _0x4bc02c=this;return new Promise(function(_0x1d62c5,_0xebbab7){return db[_0xfd26('0x17')][_0xfd26('0x1a')](_0x1194c2[_0xfd26('0x1b')],{'raw':_0x1194c2['options']?_0x1194c2[_0xfd26('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1194c2[_0xfd26('0x18')]?_0x1194c2[_0xfd26('0x18')]['where']||null:null,'attributes':_0x1194c2[_0xfd26('0x18')]?_0x1194c2[_0xfd26('0x18')][_0xfd26('0x1c')]||null:null,'limit':_0x1194c2[_0xfd26('0x18')]?_0x1194c2[_0xfd26('0x18')][_0xfd26('0x1d')]||null:null})[_0xfd26('0x1e')](function(_0x565c0){logger[_0xfd26('0xc')]('UpdateOpenchannelQueueReport',_0x1194c2);logger['debug']('UpdateOpenchannelQueueReport',_0x1194c2,JSON['stringify'](_0x565c0));_0x1d62c5(_0x565c0);})[_0xfd26('0x15')](function(_0x5d0101){logger[_0xfd26('0x12')](_0xfd26('0x1f'),_0x5d0101['message'],_0x1194c2);_0xebbab7(_0x4bc02c['error'](0x1f4,_0x5d0101[_0xfd26('0x13')]));});});};
\ No newline at end of file
+var _0x4e2e=['OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','OpenchannelQueueReport','create','body','options','raw','CreateOpenchannelQueueReport','debug','catch','update','attributes','UpdateOpenchannelQueueReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x3ac289,_0x4b42f6){_0x3ac289=_0x3ac289-0x0;var _0x5195cf=_0x4e2e[_0x3ac289];return _0x5195cf;};'use strict';var _=require('lodash');var util=require(_0xe4e2('0x0'));var moment=require(_0xe4e2('0x1'));var BPromise=require(_0xe4e2('0x2'));var rs=require(_0xe4e2('0x3'));var fs=require('fs');var Redis=require(_0xe4e2('0x4'));var db=require(_0xe4e2('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe4e2('0x6'))(_0xe4e2('0x7'));var config=require(_0xe4e2('0x8'));var jayson=require(_0xe4e2('0x9'));var client=jayson['client'][_0xe4e2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x36b1c6,_0x1c4e64,_0x125338){return new BPromise(function(_0x956c75,_0x27304b){return client[_0xe4e2('0xb')](_0x36b1c6,_0x125338)[_0xe4e2('0xc')](function(_0x4912da){logger[_0xe4e2('0xd')](_0xe4e2('0xe'),_0x1c4e64,_0xe4e2('0xf'));logger['debug'](_0xe4e2('0x10'),_0x1c4e64,_0xe4e2('0xf'),JSON[_0xe4e2('0x11')](_0x4912da));if(_0x4912da[_0xe4e2('0x12')]){if(_0x4912da[_0xe4e2('0x12')]['code']===0x1f4){logger[_0xe4e2('0x12')](_0xe4e2('0xe'),_0x1c4e64,_0x4912da[_0xe4e2('0x12')][_0xe4e2('0x13')]);return _0x27304b(_0x4912da['error'][_0xe4e2('0x13')]);}logger[_0xe4e2('0x12')](_0xe4e2('0xe'),_0x1c4e64,_0x4912da[_0xe4e2('0x12')][_0xe4e2('0x13')]);return _0x956c75(_0x4912da['error']['message']);}else{logger[_0xe4e2('0xd')](_0xe4e2('0xe'),_0x1c4e64,_0xe4e2('0xf'));_0x956c75(_0x4912da[_0xe4e2('0x14')][_0xe4e2('0x13')]);}})['catch'](function(_0x754778){logger[_0xe4e2('0x12')](_0xe4e2('0xe'),_0x1c4e64,_0x754778);_0x27304b(_0x754778);});});}exports['CreateOpenchannelQueueReport']=function(_0x196f16){var _0x54c80b=this;return new Promise(function(_0x1d5e9d,_0x3f313b){return db[_0xe4e2('0x15')][_0xe4e2('0x16')](_0x196f16[_0xe4e2('0x17')],{'raw':_0x196f16[_0xe4e2('0x18')]?_0x196f16[_0xe4e2('0x18')][_0xe4e2('0x19')]===undefined?!![]:![]:!![]})[_0xe4e2('0xc')](function(_0x362741){logger['info'](_0xe4e2('0x1a'),_0x196f16);logger[_0xe4e2('0x1b')](_0xe4e2('0x1a'),_0x196f16,JSON[_0xe4e2('0x11')](_0x362741));_0x1d5e9d(_0x362741);})[_0xe4e2('0x1c')](function(_0x23b466){logger[_0xe4e2('0x12')]('CreateOpenchannelQueueReport',_0x23b466[_0xe4e2('0x13')],_0x196f16);_0x3f313b(_0x54c80b[_0xe4e2('0x12')](0x1f4,_0x23b466[_0xe4e2('0x13')]));});});};exports['UpdateOpenchannelQueueReport']=function(_0x353030){var _0x12ad33=this;return new Promise(function(_0x598fa3,_0xcba85a){return db[_0xe4e2('0x15')][_0xe4e2('0x1d')](_0x353030[_0xe4e2('0x17')],{'raw':_0x353030[_0xe4e2('0x18')]?_0x353030['options'][_0xe4e2('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x353030[_0xe4e2('0x18')]?_0x353030[_0xe4e2('0x18')]['where']||null:null,'attributes':_0x353030[_0xe4e2('0x18')]?_0x353030[_0xe4e2('0x18')][_0xe4e2('0x1e')]||null:null,'limit':_0x353030['options']?_0x353030[_0xe4e2('0x18')]['limit']||null:null})[_0xe4e2('0xc')](function(_0x1e21c0){logger['info'](_0xe4e2('0x1f'),_0x353030);logger[_0xe4e2('0x1b')](_0xe4e2('0x1f'),_0x353030,JSON[_0xe4e2('0x11')](_0x1e21c0));_0x598fa3(_0x1e21c0);})[_0xe4e2('0x1c')](function(_0x4d33de){logger['error'](_0xe4e2('0x1f'),_0x4d33de[_0xe4e2('0x13')],_0x353030);_0xcba85a(_0x12ad33[_0xe4e2('0x12')](0x1f4,_0x4d33de[_0xe4e2('0x13')]));});});};
\ No newline at end of file
index a20d931..8c33fcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf066=['show','isAuthenticated','create','update','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','describe','/:id'];(function(_0x10921d,_0x242a14){var _0x163ca1=function(_0x3429b2){while(--_0x3429b2){_0x10921d['push'](_0x10921d['shift']());}};_0x163ca1(++_0x242a14);}(_0xf066,0xd2));var _0x6f06=function(_0x501099,_0x223250){_0x501099=_0x501099-0x0;var _0x555ebf=_0xf066[_0x501099];return _0x555ebf;};'use strict';var multer=require(_0x6f06('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6f06('0x1'));var router=express[_0x6f06('0x2')]();var fs_extra=require(_0x6f06('0x3'));var auth=require(_0x6f06('0x4'));var interaction=require(_0x6f06('0x5'));var config=require(_0x6f06('0x6'));var controller=require(_0x6f06('0x7'));router[_0x6f06('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6f06('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x6f06('0x9')]);router[_0x6f06('0x8')](_0x6f06('0xa'),auth['isAuthenticated'](),controller[_0x6f06('0xb')]);router['post']('/',auth[_0x6f06('0xc')](),controller[_0x6f06('0xd')]);router['put'](_0x6f06('0xa'),auth[_0x6f06('0xc')](),controller[_0x6f06('0xe')]);router['delete'](_0x6f06('0xa'),auth[_0x6f06('0xc')](),controller[_0x6f06('0xf')]);module[_0x6f06('0x10')]=router;
\ No newline at end of file
+var _0xd5a1=['create','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','describe','/:id','show'];(function(_0x553b39,_0x253161){var _0x58eafd=function(_0x1d2f9f){while(--_0x1d2f9f){_0x553b39['push'](_0x553b39['shift']());}};_0x58eafd(++_0x253161);}(_0xd5a1,0x190));var _0x1d5a=function(_0x2264a1,_0x238dab){_0x2264a1=_0x2264a1-0x0;var _0x638200=_0xd5a1[_0x2264a1];return _0x638200;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1d5a('0x0'));var timeout=require(_0x1d5a('0x1'));var express=require(_0x1d5a('0x2'));var router=express[_0x1d5a('0x3')]();var fs_extra=require(_0x1d5a('0x4'));var auth=require(_0x1d5a('0x5'));var interaction=require(_0x1d5a('0x6'));var config=require(_0x1d5a('0x7'));var controller=require(_0x1d5a('0x8'));router[_0x1d5a('0x9')]('/',auth[_0x1d5a('0xa')](),controller['index']);router[_0x1d5a('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x1d5a('0xb')]);router[_0x1d5a('0x9')](_0x1d5a('0xc'),auth[_0x1d5a('0xa')](),controller[_0x1d5a('0xd')]);router['post']('/',auth[_0x1d5a('0xa')](),controller[_0x1d5a('0xe')]);router['put']('/:id',auth[_0x1d5a('0xa')](),controller['update']);router[_0x1d5a('0xf')](_0x1d5a('0xc'),auth[_0x1d5a('0xa')](),controller[_0x1d5a('0x10')]);module[_0x1d5a('0x11')]=router;
\ No newline at end of file
index 9711281..a746826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x687ddc,_0x2092fa){var _0x441991=function(_0x49c6a6){while(--_0x49c6a6){_0x687ddc['push'](_0x687ddc['shift']());}};_0x441991(++_0x2092fa);}(_0x9bde,0xe1));var _0xe9bd=function(_0x4d75e8,_0x3e7f3b){_0x4d75e8=_0x4d75e8-0x0;var _0x45d873=_0x9bde[_0x4d75e8];return _0x45d873;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
+var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x59d0cc,_0xa7c52b){var _0x2ae79f=function(_0x33042e){while(--_0x33042e){_0x59d0cc['push'](_0x59d0cc['shift']());}};_0x2ae79f(++_0xa7c52b);}(_0xb43b,0x1b2));var _0xbb43=function(_0x5a00aa,_0x1bf6bc){_0x5a00aa=_0x5a00aa-0x0;var _0xd0bc9f=_0xb43b[_0x5a00aa];return _0xd0bc9f;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
index 1b2d0cf..c13d57c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc232=['jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','OpenchannelTransferReport','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','create','body','find','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto'];(function(_0x5c99f9,_0x5af9b5){var _0x395623=function(_0x28ba22){while(--_0x28ba22){_0x5c99f9['push'](_0x5c99f9['shift']());}};_0x395623(++_0x5af9b5);}(_0xc232,0xd8));var _0x2c23=function(_0x3e1587,_0xe1194e){_0x3e1587=_0x3e1587-0x0;var _0x1a1c1a=_0xc232[_0x3e1587];return _0x1a1c1a;};'use strict';var emlformat=require(_0x2c23('0x0'));var rimraf=require(_0x2c23('0x1'));var zipdir=require(_0x2c23('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2c23('0x3'));var moment=require(_0x2c23('0x4'));var BPromise=require(_0x2c23('0x5'));var Mustache=require(_0x2c23('0x6'));var util=require(_0x2c23('0x7'));var path=require(_0x2c23('0x8'));var sox=require(_0x2c23('0x9'));var csv=require(_0x2c23('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c23('0xb'));var _=require(_0x2c23('0xc'));var squel=require(_0x2c23('0xd'));var crypto=require(_0x2c23('0xe'));var jsforce=require(_0x2c23('0xf'));var deskjs=require(_0x2c23('0x10'));var toCsv=require(_0x2c23('0xa'));var querystring=require(_0x2c23('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2c23('0x12'));var qs=require(_0x2c23('0x13'));var as=require(_0x2c23('0x14'));var hardwareService=require(_0x2c23('0x15'));var logger=require(_0x2c23('0x16'))(_0x2c23('0x17'));var utils=require(_0x2c23('0x18'));var config=require(_0x2c23('0x19'));var licenseUtil=require(_0x2c23('0x1a'));var db=require(_0x2c23('0x1b'))['db'];function respondWithStatusCode(_0x4c94d2,_0x23b52a){_0x23b52a=_0x23b52a||0xcc;return function(_0x159e6f){if(_0x159e6f){return _0x4c94d2[_0x2c23('0x1c')](_0x23b52a);}return _0x4c94d2[_0x2c23('0x1d')](_0x23b52a)[_0x2c23('0x1e')]();};}function respondWithResult(_0x58c09d,_0xcc11fe){_0xcc11fe=_0xcc11fe||0xc8;return function(_0x106611){if(_0x106611){return _0x58c09d[_0x2c23('0x1d')](_0xcc11fe)[_0x2c23('0x1f')](_0x106611);}};}function respondWithFilteredResult(_0x479823,_0x254a92){return function(_0x35c521){if(_0x35c521){var _0x387db0=typeof _0x254a92[_0x2c23('0x20')]==='undefined'&&typeof _0x254a92[_0x2c23('0x21')]===_0x2c23('0x22');var _0xb73dc=_0x35c521[_0x2c23('0x23')];var _0x45c1a9=_0x387db0?0x0:_0x254a92[_0x2c23('0x20')];var _0x1c27cb=_0x387db0?_0x35c521[_0x2c23('0x23')]:_0x254a92[_0x2c23('0x20')]+_0x254a92[_0x2c23('0x21')];var _0x3678bd;if(_0x1c27cb>=_0xb73dc){_0x1c27cb=_0xb73dc;_0x3678bd=0xc8;}else{_0x3678bd=0xce;}_0x479823[_0x2c23('0x1d')](_0x3678bd);return _0x479823[_0x2c23('0x24')](_0x2c23('0x25'),_0x45c1a9+'-'+_0x1c27cb+'/'+_0xb73dc)['json'](_0x35c521);}return null;};}function patchUpdates(_0x4d8335){return function(_0x52bd58){try{jsonpatch['apply'](_0x52bd58,_0x4d8335,!![]);}catch(_0x163f11){return BPromise[_0x2c23('0x26')](_0x163f11);}return _0x52bd58[_0x2c23('0x27')]();};}function saveUpdates(_0x21e06a,_0x102b90){return function(_0xd48e08){if(_0xd48e08){return _0xd48e08[_0x2c23('0x28')](_0x21e06a)[_0x2c23('0x29')](function(_0x328f4c){return _0x328f4c;});}return null;};}function removeEntity(_0x4707fd,_0xdb2db){return function(_0x1a3b7e){if(_0x1a3b7e){return _0x1a3b7e[_0x2c23('0x2a')]()[_0x2c23('0x29')](function(){_0x4707fd[_0x2c23('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xdb0410,_0x21df28){return function(_0x4835e3){if(!_0x4835e3){_0xdb0410[_0x2c23('0x1c')](0x194);}return _0x4835e3;};}function handleError(_0x350ad8,_0x2f963c){_0x2f963c=_0x2f963c||0x1f4;return function(_0x1a6252){logger[_0x2c23('0x2b')](_0x1a6252[_0x2c23('0x2c')]);if(_0x1a6252[_0x2c23('0x2d')]){delete _0x1a6252[_0x2c23('0x2d')];}_0x350ad8[_0x2c23('0x1d')](_0x2f963c)[_0x2c23('0x2e')](_0x1a6252);};}exports['index']=function(_0x415c96,_0x26311c){var _0x3ce11a={},_0x3f09ad={},_0x460f1c={'count':0x0,'rows':[]};var _0x3bb544=_[_0x2c23('0x2f')](db[_0x2c23('0x30')]['rawAttributes'],function(_0x80a463){return{'name':_0x80a463[_0x2c23('0x31')],'type':_0x80a463[_0x2c23('0x32')][_0x2c23('0x33')]};});_0x3f09ad[_0x2c23('0x34')]=_[_0x2c23('0x2f')](_0x3bb544,_0x2c23('0x2d'));_0x3f09ad[_0x2c23('0x35')]=_['keys'](_0x415c96['query']);_0x3f09ad[_0x2c23('0x36')]=_[_0x2c23('0x37')](_0x3f09ad[_0x2c23('0x34')],_0x3f09ad[_0x2c23('0x35')]);_0x3ce11a[_0x2c23('0x38')]=_[_0x2c23('0x37')](_0x3f09ad[_0x2c23('0x34')],qs[_0x2c23('0x39')](_0x415c96[_0x2c23('0x35')][_0x2c23('0x39')]));_0x3ce11a[_0x2c23('0x38')]=_0x3ce11a[_0x2c23('0x38')]['length']?_0x3ce11a[_0x2c23('0x38')]:_0x3f09ad['model'];if(!_0x415c96[_0x2c23('0x35')][_0x2c23('0x3a')](_0x2c23('0x3b'))){_0x3ce11a[_0x2c23('0x21')]=qs[_0x2c23('0x21')](_0x415c96[_0x2c23('0x35')][_0x2c23('0x21')]);_0x3ce11a['offset']=qs['offset'](_0x415c96[_0x2c23('0x35')][_0x2c23('0x20')]);}_0x3ce11a['order']=qs[_0x2c23('0x3c')](_0x415c96[_0x2c23('0x35')][_0x2c23('0x3c')]);_0x3ce11a[_0x2c23('0x3d')]=qs[_0x2c23('0x36')](_['pick'](_0x415c96[_0x2c23('0x35')],_0x3f09ad['filters']),_0x3bb544);if(_0x415c96[_0x2c23('0x35')][_0x2c23('0x3e')]){_0x3ce11a[_0x2c23('0x3d')]=_[_0x2c23('0x3f')](_0x3ce11a[_0x2c23('0x3d')],{'$or':_[_0x2c23('0x2f')](_0x3bb544,function(_0x17031e){if(_0x17031e[_0x2c23('0x32')]!=='VIRTUAL'){var _0x2810a5={};_0x2810a5[_0x17031e[_0x2c23('0x2d')]]={'$like':'%'+_0x415c96['query'][_0x2c23('0x3e')]+'%'};return _0x2810a5;}})});}_0x3ce11a=_[_0x2c23('0x3f')]({},_0x3ce11a,_0x415c96[_0x2c23('0x40')]);var _0x3184c6={'where':_0x3ce11a['where']};return db[_0x2c23('0x30')][_0x2c23('0x23')](_0x3184c6)[_0x2c23('0x29')](function(_0x2a9d18){_0x460f1c[_0x2c23('0x23')]=_0x2a9d18;if(_0x415c96[_0x2c23('0x35')][_0x2c23('0x41')]){_0x3ce11a[_0x2c23('0x42')]=[{'all':!![]}];}return db[_0x2c23('0x30')][_0x2c23('0x43')](_0x3ce11a);})[_0x2c23('0x29')](function(_0x3ab562){_0x460f1c[_0x2c23('0x44')]=_0x3ab562;return _0x460f1c;})[_0x2c23('0x29')](respondWithFilteredResult(_0x26311c,_0x3ce11a))[_0x2c23('0x45')](handleError(_0x26311c,null));};exports[_0x2c23('0x46')]=function(_0x54b127,_0x123dc5){var _0x31cd5a={'raw':!![],'where':{'id':_0x54b127[_0x2c23('0x47')]['id']}},_0x41e6b4={};_0x41e6b4['model']=_['keys'](db[_0x2c23('0x30')][_0x2c23('0x48')]);_0x41e6b4[_0x2c23('0x35')]=_[_0x2c23('0x49')](_0x54b127[_0x2c23('0x35')]);_0x41e6b4[_0x2c23('0x36')]=_['intersection'](_0x41e6b4[_0x2c23('0x34')],_0x41e6b4['query']);_0x31cd5a['attributes']=_[_0x2c23('0x37')](_0x41e6b4[_0x2c23('0x34')],qs[_0x2c23('0x39')](_0x54b127['query'][_0x2c23('0x39')]));_0x31cd5a['attributes']=_0x31cd5a[_0x2c23('0x38')]['length']?_0x31cd5a[_0x2c23('0x38')]:_0x41e6b4['model'];if(_0x54b127[_0x2c23('0x35')][_0x2c23('0x41')]){_0x31cd5a['include']=[{'all':!![]}];}_0x31cd5a=_['merge']({},_0x31cd5a,_0x54b127['options']);return db[_0x2c23('0x30')]['find'](_0x31cd5a)[_0x2c23('0x29')](handleEntityNotFound(_0x123dc5,null))[_0x2c23('0x29')](respondWithResult(_0x123dc5,null))[_0x2c23('0x45')](handleError(_0x123dc5,null));};exports['create']=function(_0x5c0b4e,_0x1a36c4){return db[_0x2c23('0x30')][_0x2c23('0x4a')](_0x5c0b4e[_0x2c23('0x4b')],{})[_0x2c23('0x29')](respondWithResult(_0x1a36c4,0xc9))[_0x2c23('0x45')](handleError(_0x1a36c4,null));};exports[_0x2c23('0x28')]=function(_0x122a3a,_0x121ac7){if(_0x122a3a[_0x2c23('0x4b')]['id']){delete _0x122a3a['body']['id'];}return db['OpenchannelTransferReport'][_0x2c23('0x4c')]({'where':{'id':_0x122a3a[_0x2c23('0x47')]['id']}})[_0x2c23('0x29')](handleEntityNotFound(_0x121ac7,null))[_0x2c23('0x29')](saveUpdates(_0x122a3a[_0x2c23('0x4b')],null))[_0x2c23('0x29')](respondWithResult(_0x121ac7,null))[_0x2c23('0x45')](handleError(_0x121ac7,null));};exports['destroy']=function(_0x39b0d7,_0x1df4af){return db['OpenchannelTransferReport'][_0x2c23('0x4c')]({'where':{'id':_0x39b0d7['params']['id']}})[_0x2c23('0x29')](handleEntityNotFound(_0x1df4af,null))['then'](removeEntity(_0x1df4af,null))['catch'](handleError(_0x1df4af,null));};exports['describe']=function(_0xcb3125,_0x46ef37){return db[_0x2c23('0x30')]['describe']()[_0x2c23('0x29')](respondWithResult(_0x46ef37,null))[_0x2c23('0x45')](handleError(_0x46ef37,null));};
\ No newline at end of file
+var _0x59cf=['destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','squel','crypto','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','undefined','count','offset','limit','status','set','Content-Range','json','apply','save','then','end','error','name','index','map','OpenchannelTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','include','options','create','body','update','find'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0x59cf,0xd7));var _0xf59c=function(_0x4d674b,_0x176474){_0x4d674b=_0x4d674b-0x0;var _0x535a1f=_0x59cf[_0x4d674b];return _0x535a1f;};'use strict';var emlformat=require(_0xf59c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf59c('0x1'));var jsonpatch=require(_0xf59c('0x2'));var rp=require(_0xf59c('0x3'));var moment=require(_0xf59c('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf59c('0x5'));var path=require(_0xf59c('0x6'));var sox=require(_0xf59c('0x7'));var csv=require(_0xf59c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf59c('0x9'));var _=require('lodash');var squel=require(_0xf59c('0xa'));var crypto=require(_0xf59c('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf59c('0x8'));var querystring=require('querystring');var Papa=require(_0xf59c('0xc'));var Redis=require(_0xf59c('0xd'));var authService=require(_0xf59c('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf59c('0xf'))(_0xf59c('0x10'));var utils=require(_0xf59c('0x11'));var config=require(_0xf59c('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31661e,_0x6644d2){_0x6644d2=_0x6644d2||0xcc;return function(_0x290c6e){if(_0x290c6e){return _0x31661e[_0xf59c('0x13')](_0x6644d2);}return _0x31661e['status'](_0x6644d2)['end']();};}function respondWithResult(_0x41a99f,_0x35d072){_0x35d072=_0x35d072||0xc8;return function(_0x2bc9d9){if(_0x2bc9d9){return _0x41a99f['status'](_0x35d072)['json'](_0x2bc9d9);}};}function respondWithFilteredResult(_0x41a737,_0x411890){return function(_0x4e01cc){if(_0x4e01cc){var _0x2f93d0=typeof _0x411890['offset']==='undefined'&&typeof _0x411890['limit']===_0xf59c('0x14');var _0x12f546=_0x4e01cc[_0xf59c('0x15')];var _0x49707f=_0x2f93d0?0x0:_0x411890[_0xf59c('0x16')];var _0x429e5e=_0x2f93d0?_0x4e01cc[_0xf59c('0x15')]:_0x411890[_0xf59c('0x16')]+_0x411890[_0xf59c('0x17')];var _0x51c42b;if(_0x429e5e>=_0x12f546){_0x429e5e=_0x12f546;_0x51c42b=0xc8;}else{_0x51c42b=0xce;}_0x41a737[_0xf59c('0x18')](_0x51c42b);return _0x41a737[_0xf59c('0x19')](_0xf59c('0x1a'),_0x49707f+'-'+_0x429e5e+'/'+_0x12f546)[_0xf59c('0x1b')](_0x4e01cc);}return null;};}function patchUpdates(_0x583654){return function(_0x22f57c){try{jsonpatch[_0xf59c('0x1c')](_0x22f57c,_0x583654,!![]);}catch(_0x4ccc20){return BPromise['reject'](_0x4ccc20);}return _0x22f57c[_0xf59c('0x1d')]();};}function saveUpdates(_0x3b64ef,_0x5d25b8){return function(_0x5bf2de){if(_0x5bf2de){return _0x5bf2de['update'](_0x3b64ef)[_0xf59c('0x1e')](function(_0x14ae70){return _0x14ae70;});}return null;};}function removeEntity(_0xd20653,_0xbfc251){return function(_0x5101e7){if(_0x5101e7){return _0x5101e7['destroy']()[_0xf59c('0x1e')](function(){_0xd20653[_0xf59c('0x18')](0xcc)[_0xf59c('0x1f')]();});}};}function handleEntityNotFound(_0x4841fc,_0x418b51){return function(_0x16fc6a){if(!_0x16fc6a){_0x4841fc[_0xf59c('0x13')](0x194);}return _0x16fc6a;};}function handleError(_0x15acc5,_0x13f913){_0x13f913=_0x13f913||0x1f4;return function(_0x43799f){logger[_0xf59c('0x20')](_0x43799f['stack']);if(_0x43799f[_0xf59c('0x21')]){delete _0x43799f[_0xf59c('0x21')];}_0x15acc5[_0xf59c('0x18')](_0x13f913)['send'](_0x43799f);};}exports[_0xf59c('0x22')]=function(_0x43e987,_0x2816d9){var _0x21ad3e={},_0x160968={},_0x577deb={'count':0x0,'rows':[]};var _0x2a9ca9=_[_0xf59c('0x23')](db[_0xf59c('0x24')][_0xf59c('0x25')],function(_0x1ec58c){return{'name':_0x1ec58c['fieldName'],'type':_0x1ec58c[_0xf59c('0x26')][_0xf59c('0x27')]};});_0x160968[_0xf59c('0x28')]=_[_0xf59c('0x23')](_0x2a9ca9,_0xf59c('0x21'));_0x160968[_0xf59c('0x29')]=_[_0xf59c('0x2a')](_0x43e987[_0xf59c('0x29')]);_0x160968[_0xf59c('0x2b')]=_[_0xf59c('0x2c')](_0x160968[_0xf59c('0x28')],_0x160968['query']);_0x21ad3e['attributes']=_[_0xf59c('0x2c')](_0x160968[_0xf59c('0x28')],qs[_0xf59c('0x2d')](_0x43e987['query'][_0xf59c('0x2d')]));_0x21ad3e['attributes']=_0x21ad3e[_0xf59c('0x2e')][_0xf59c('0x2f')]?_0x21ad3e[_0xf59c('0x2e')]:_0x160968[_0xf59c('0x28')];if(!_0x43e987[_0xf59c('0x29')][_0xf59c('0x30')](_0xf59c('0x31'))){_0x21ad3e['limit']=qs[_0xf59c('0x17')](_0x43e987[_0xf59c('0x29')][_0xf59c('0x17')]);_0x21ad3e[_0xf59c('0x16')]=qs['offset'](_0x43e987['query'][_0xf59c('0x16')]);}_0x21ad3e[_0xf59c('0x32')]=qs[_0xf59c('0x33')](_0x43e987[_0xf59c('0x29')]['sort']);_0x21ad3e[_0xf59c('0x34')]=qs[_0xf59c('0x2b')](_[_0xf59c('0x35')](_0x43e987[_0xf59c('0x29')],_0x160968[_0xf59c('0x2b')]),_0x2a9ca9);if(_0x43e987[_0xf59c('0x29')][_0xf59c('0x36')]){_0x21ad3e[_0xf59c('0x34')]=_['merge'](_0x21ad3e['where'],{'$or':_[_0xf59c('0x23')](_0x2a9ca9,function(_0x446d59){if(_0x446d59['type']!==_0xf59c('0x37')){var _0x3fe007={};_0x3fe007[_0x446d59[_0xf59c('0x21')]]={'$like':'%'+_0x43e987[_0xf59c('0x29')][_0xf59c('0x36')]+'%'};return _0x3fe007;}})});}_0x21ad3e=_[_0xf59c('0x38')]({},_0x21ad3e,_0x43e987['options']);var _0x515e3d={'where':_0x21ad3e[_0xf59c('0x34')]};return db[_0xf59c('0x24')]['count'](_0x515e3d)[_0xf59c('0x1e')](function(_0x5cfb06){_0x577deb[_0xf59c('0x15')]=_0x5cfb06;if(_0x43e987['query'][_0xf59c('0x39')]){_0x21ad3e['include']=[{'all':!![]}];}return db[_0xf59c('0x24')][_0xf59c('0x3a')](_0x21ad3e);})[_0xf59c('0x1e')](function(_0x49f1f4){_0x577deb[_0xf59c('0x3b')]=_0x49f1f4;return _0x577deb;})[_0xf59c('0x1e')](respondWithFilteredResult(_0x2816d9,_0x21ad3e))[_0xf59c('0x3c')](handleError(_0x2816d9,null));};exports[_0xf59c('0x3d')]=function(_0x1eacf2,_0xca9d98){var _0x396579={'raw':!![],'where':{'id':_0x1eacf2[_0xf59c('0x3e')]['id']}},_0x379b3f={};_0x379b3f[_0xf59c('0x28')]=_[_0xf59c('0x2a')](db[_0xf59c('0x24')][_0xf59c('0x25')]);_0x379b3f[_0xf59c('0x29')]=_[_0xf59c('0x2a')](_0x1eacf2['query']);_0x379b3f['filters']=_[_0xf59c('0x2c')](_0x379b3f[_0xf59c('0x28')],_0x379b3f[_0xf59c('0x29')]);_0x396579[_0xf59c('0x2e')]=_[_0xf59c('0x2c')](_0x379b3f[_0xf59c('0x28')],qs[_0xf59c('0x2d')](_0x1eacf2[_0xf59c('0x29')][_0xf59c('0x2d')]));_0x396579[_0xf59c('0x2e')]=_0x396579[_0xf59c('0x2e')]['length']?_0x396579[_0xf59c('0x2e')]:_0x379b3f[_0xf59c('0x28')];if(_0x1eacf2[_0xf59c('0x29')]['includeAll']){_0x396579[_0xf59c('0x3f')]=[{'all':!![]}];}_0x396579=_[_0xf59c('0x38')]({},_0x396579,_0x1eacf2[_0xf59c('0x40')]);return db[_0xf59c('0x24')]['find'](_0x396579)['then'](handleEntityNotFound(_0xca9d98,null))[_0xf59c('0x1e')](respondWithResult(_0xca9d98,null))['catch'](handleError(_0xca9d98,null));};exports[_0xf59c('0x41')]=function(_0x9edf54,_0x43bc6f){return db[_0xf59c('0x24')][_0xf59c('0x41')](_0x9edf54[_0xf59c('0x42')],{})['then'](respondWithResult(_0x43bc6f,0xc9))[_0xf59c('0x3c')](handleError(_0x43bc6f,null));};exports[_0xf59c('0x43')]=function(_0x2ea1c4,_0x37771a){if(_0x2ea1c4[_0xf59c('0x42')]['id']){delete _0x2ea1c4[_0xf59c('0x42')]['id'];}return db[_0xf59c('0x24')][_0xf59c('0x44')]({'where':{'id':_0x2ea1c4[_0xf59c('0x3e')]['id']}})[_0xf59c('0x1e')](handleEntityNotFound(_0x37771a,null))['then'](saveUpdates(_0x2ea1c4[_0xf59c('0x42')],null))[_0xf59c('0x1e')](respondWithResult(_0x37771a,null))[_0xf59c('0x3c')](handleError(_0x37771a,null));};exports[_0xf59c('0x45')]=function(_0x50abda,_0x2a2531){return db[_0xf59c('0x24')]['find']({'where':{'id':_0x50abda[_0xf59c('0x3e')]['id']}})[_0xf59c('0x1e')](handleEntityNotFound(_0x2a2531,null))[_0xf59c('0x1e')](removeEntity(_0x2a2531,null))[_0xf59c('0x3c')](handleError(_0x2a2531,null));};exports['describe']=function(_0x159edd,_0x59d78f){return db[_0xf59c('0x24')][_0xf59c('0x46')]()[_0xf59c('0x1e')](respondWithResult(_0x59d78f,null))[_0xf59c('0x3c')](handleError(_0x59d78f,null));};
\ No newline at end of file
index 7a5695d..39cedfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1811=['exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0x1811,0x83));var _0x1181=function(_0x4fbde2,_0x364951){_0x4fbde2=_0x4fbde2-0x0;var _0x2bce29=_0x1811[_0x4fbde2];return _0x2bce29;};'use strict';var _=require('lodash');var util=require(_0x1181('0x0'));var logger=require(_0x1181('0x1'))(_0x1181('0x2'));var moment=require('moment');var BPromise=require(_0x1181('0x3'));var rp=require(_0x1181('0x4'));var fs=require('fs');var path=require(_0x1181('0x5'));var rimraf=require(_0x1181('0x6'));var config=require(_0x1181('0x7'));var attributes=require(_0x1181('0x8'));module[_0x1181('0x9')]=function(_0x529bbd,_0x43d6ac){return _0x529bbd[_0x1181('0xa')](_0x1181('0xb'),attributes,{'tableName':_0x1181('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x1181('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x199f=['uniqueid','util','bluebird','request-promise','rimraf','./openchannelTransferReport.attributes','exports','define','report_openchannel_transfer'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x199f,0x12a));var _0xf199=function(_0x58b44a,_0x1a7aa6){_0x58b44a=_0x58b44a-0x0;var _0xd6779d=_0x199f[_0x58b44a];return _0xd6779d;};'use strict';var _=require('lodash');var util=require(_0xf199('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xf199('0x1'));var rp=require(_0xf199('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf199('0x3'));var config=require('../../config/environment');var attributes=require(_0xf199('0x4'));module[_0xf199('0x5')]=function(_0x55b0cb,_0x52947f){return _0x55b0cb[_0xf199('0x6')]('OpenchannelTransferReport',attributes,{'tableName':_0xf199('0x7'),'paranoid':![],'indexes':[{'name':_0xf199('0x8'),'fields':[_0xf199('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index c10a0bb..de187c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31c2=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x31c2,0x1e1));var _0x231c=function(_0x5bef43,_0x4d434a){_0x5bef43=_0x5bef43-0x0;var _0x3417e1=_0x31c2[_0x5bef43];return _0x3417e1;};'use strict';var _=require(_0x231c('0x0'));var util=require(_0x231c('0x1'));var moment=require(_0x231c('0x2'));var BPromise=require(_0x231c('0x3'));var rs=require(_0x231c('0x4'));var fs=require('fs');var Redis=require(_0x231c('0x5'));var db=require(_0x231c('0x6'))['db'];var utils=require(_0x231c('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x231c('0x8'));var jayson=require(_0x231c('0x9'));var client=jayson[_0x231c('0xa')][_0x231c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x48bfb2,_0x111bf9,_0x49ff9e){return new BPromise(function(_0x439df8,_0x38b3b9){return client[_0x231c('0xc')](_0x48bfb2,_0x49ff9e)['then'](function(_0x2524bf){logger[_0x231c('0xd')](_0x231c('0xe'),_0x111bf9,_0x231c('0xf'));logger[_0x231c('0x10')](_0x231c('0x11'),_0x111bf9,_0x231c('0xf'),JSON['stringify'](_0x2524bf));if(_0x2524bf[_0x231c('0x12')]){if(_0x2524bf[_0x231c('0x12')]['code']===0x1f4){logger[_0x231c('0x12')](_0x231c('0xe'),_0x111bf9,_0x2524bf[_0x231c('0x12')][_0x231c('0x13')]);return _0x38b3b9(_0x2524bf[_0x231c('0x12')][_0x231c('0x13')]);}logger[_0x231c('0x12')](_0x231c('0xe'),_0x111bf9,_0x2524bf[_0x231c('0x12')][_0x231c('0x13')]);return _0x439df8(_0x2524bf[_0x231c('0x12')][_0x231c('0x13')]);}else{logger[_0x231c('0xd')](_0x231c('0xe'),_0x111bf9,_0x231c('0xf'));_0x439df8(_0x2524bf[_0x231c('0x14')][_0x231c('0x13')]);}})[_0x231c('0x15')](function(_0x1852e5){logger[_0x231c('0x12')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x111bf9,_0x1852e5);_0x38b3b9(_0x1852e5);});});}
\ No newline at end of file
+var _0x4148=['stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4148,0xc6));var _0x8414=function(_0x1aba25,_0x1faed1){_0x1aba25=_0x1aba25-0x0;var _0x47d997=_0x4148[_0x1aba25];return _0x47d997;};'use strict';var _=require(_0x8414('0x0'));var util=require(_0x8414('0x1'));var moment=require(_0x8414('0x2'));var BPromise=require(_0x8414('0x3'));var rs=require(_0x8414('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8414('0x5'))['db'];var utils=require(_0x8414('0x6'));var logger=require(_0x8414('0x7'))(_0x8414('0x8'));var config=require('../../config/environment');var jayson=require(_0x8414('0x9'));var client=jayson['client'][_0x8414('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x507e0b,_0x51ab01,_0x131b88){return new BPromise(function(_0x2444b7,_0x1623c3){return client[_0x8414('0xb')](_0x507e0b,_0x131b88)[_0x8414('0xc')](function(_0xd625a7){logger[_0x8414('0xd')](_0x8414('0xe'),_0x51ab01,_0x8414('0xf'));logger[_0x8414('0x10')](_0x8414('0x11'),_0x51ab01,'request\x20sent',JSON[_0x8414('0x12')](_0xd625a7));if(_0xd625a7['error']){if(_0xd625a7[_0x8414('0x13')][_0x8414('0x14')]===0x1f4){logger[_0x8414('0x13')](_0x8414('0xe'),_0x51ab01,_0xd625a7['error'][_0x8414('0x15')]);return _0x1623c3(_0xd625a7['error'][_0x8414('0x15')]);}logger[_0x8414('0x13')](_0x8414('0xe'),_0x51ab01,_0xd625a7['error'][_0x8414('0x15')]);return _0x2444b7(_0xd625a7[_0x8414('0x13')][_0x8414('0x15')]);}else{logger['info']('OpenchannelTransferReport,\x20%s,\x20%s',_0x51ab01,_0x8414('0xf'));_0x2444b7(_0xd625a7[_0x8414('0x16')][_0x8414('0x15')]);}})[_0x8414('0x17')](function(_0x5b92aa){logger[_0x8414('0x13')](_0x8414('0xe'),_0x51ab01,_0x5b92aa);_0x1623c3(_0x5b92aa);});});}
\ No newline at end of file
index d671244..01bc2b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x136c=['destroy','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete'];(function(_0x496a18,_0xbecb65){var _0x203f14=function(_0x5696c3){while(--_0x5696c3){_0x496a18['push'](_0x496a18['shift']());}};_0x203f14(++_0xbecb65);}(_0x136c,0x65));var _0xc136=function(_0x3d8d42,_0x29efab){_0x3d8d42=_0x3d8d42-0x0;var _0x1873cd=_0x136c[_0x3d8d42];return _0x1873cd;};'use strict';var multer=require('multer');var util=require(_0xc136('0x0'));var path=require(_0xc136('0x1'));var timeout=require('connect-timeout');var express=require(_0xc136('0x2'));var router=express[_0xc136('0x3')]();var fs_extra=require(_0xc136('0x4'));var auth=require(_0xc136('0x5'));var interaction=require(_0xc136('0x6'));var config=require(_0xc136('0x7'));var controller=require(_0xc136('0x8'));router[_0xc136('0x9')]('/',auth['isAuthenticated'](),controller[_0xc136('0xa')]);router[_0xc136('0x9')](_0xc136('0xb'),auth[_0xc136('0xc')](),controller[_0xc136('0xd')]);router[_0xc136('0xe')]('/',auth[_0xc136('0xc')](),controller[_0xc136('0xf')]);router[_0xc136('0x10')](_0xc136('0xb'),auth['isAuthenticated'](),controller[_0xc136('0x11')]);router[_0xc136('0x12')](_0xc136('0xb'),auth[_0xc136('0xc')](),controller[_0xc136('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xfa4c=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./pause.controller','get','isAuthenticated','index','/:id','post','delete','destroy','exports','path'];(function(_0xbab353,_0x37e159){var _0x56871e=function(_0x474f77){while(--_0x474f77){_0xbab353['push'](_0xbab353['shift']());}};_0x56871e(++_0x37e159);}(_0xfa4c,0x194));var _0xcfa4=function(_0x4163fd,_0x1da4ce){_0x4163fd=_0x4163fd-0x0;var _0xbc0548=_0xfa4c[_0x4163fd];return _0xbc0548;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcfa4('0x0'));var timeout=require(_0xcfa4('0x1'));var express=require(_0xcfa4('0x2'));var router=express['Router']();var fs_extra=require(_0xcfa4('0x3'));var auth=require(_0xcfa4('0x4'));var interaction=require(_0xcfa4('0x5'));var config=require('../../config/environment');var controller=require(_0xcfa4('0x6'));router[_0xcfa4('0x7')]('/',auth[_0xcfa4('0x8')](),controller[_0xcfa4('0x9')]);router['get'](_0xcfa4('0xa'),auth[_0xcfa4('0x8')](),controller['show']);router[_0xcfa4('0xb')]('/',auth[_0xcfa4('0x8')](),controller['create']);router['put'](_0xcfa4('0xa'),auth[_0xcfa4('0x8')](),controller['update']);router[_0xcfa4('0xc')]('/:id',auth[_0xcfa4('0x8')](),controller[_0xcfa4('0xd')]);module[_0xcfa4('0xe')]=router;
\ No newline at end of file
index d044465..8874e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fbb=['exports','STRING','name'];(function(_0x439f45,_0x542c73){var _0x6aa2e3=function(_0xc3474){while(--_0xc3474){_0x439f45['push'](_0x439f45['shift']());}};_0x6aa2e3(++_0x542c73);}(_0x8fbb,0x11d));var _0xb8fb=function(_0x57b38f,_0xc26f33){_0x57b38f=_0x57b38f-0x0;var _0x6aa12c=_0x8fbb[_0x57b38f];return _0x6aa12c;};'use strict';var Sequelize=require('sequelize');module[_0xb8fb('0x0')]={'name':{'type':Sequelize[_0xb8fb('0x1')],'unique':_0xb8fb('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4888=['STRING','name','sequelize','exports'];(function(_0x461b04,_0x3f6241){var _0x2fa70b=function(_0x17db0d){while(--_0x17db0d){_0x461b04['push'](_0x461b04['shift']());}};_0x2fa70b(++_0x3f6241);}(_0x4888,0x182));var _0x8488=function(_0x5562fe,_0x4e809c){_0x5562fe=_0x5562fe-0x0;var _0x1829c7=_0x4888[_0x5562fe];return _0x1829c7;};'use strict';var Sequelize=require(_0x8488('0x0'));module[_0x8488('0x1')]={'name':{'type':Sequelize[_0x8488('0x2')],'unique':_0x8488('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x8488('0x2')]}};
\ No newline at end of file
index b4ef800..0af1d8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af2=['params','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','Pauses','UserProfileResource','error','send','index','Pause','rawAttributes','type','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','catch','include','find','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x102654,_0x347919){var _0x2200e3=function(_0x592a93){while(--_0x592a93){_0x102654['push'](_0x102654['shift']());}};_0x2200e3(++_0x347919);}(_0x1af2,0x1f3));var _0x21af=function(_0x27e2c8,_0x5f40a0){_0x27e2c8=_0x27e2c8-0x0;var _0x5454d4=_0x1af2[_0x27e2c8];return _0x5454d4;};'use strict';var emlformat=require(_0x21af('0x0'));var rimraf=require(_0x21af('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x21af('0x2'));var rp=require(_0x21af('0x3'));var moment=require(_0x21af('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x21af('0x5'));var util=require(_0x21af('0x6'));var path=require(_0x21af('0x7'));var sox=require(_0x21af('0x8'));var csv=require(_0x21af('0x9'));var ejs=require(_0x21af('0xa'));var fs=require('fs');var fs_extra=require(_0x21af('0xb'));var _=require(_0x21af('0xc'));var squel=require(_0x21af('0xd'));var crypto=require('crypto');var jsforce=require(_0x21af('0xe'));var deskjs=require(_0x21af('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x21af('0x10'));var Redis=require(_0x21af('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x21af('0x12'));var as=require(_0x21af('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x21af('0x14'))(_0x21af('0x15'));var utils=require('../../config/utils');var config=require(_0x21af('0x16'));var licenseUtil=require(_0x21af('0x17'));var db=require(_0x21af('0x18'))['db'];function respondWithStatusCode(_0x4aa8c6,_0x11b649){_0x11b649=_0x11b649||0xcc;return function(_0x35b79e){if(_0x35b79e){return _0x4aa8c6[_0x21af('0x19')](_0x11b649);}return _0x4aa8c6['status'](_0x11b649)[_0x21af('0x1a')]();};}function respondWithResult(_0x405fdf,_0x23b832){_0x23b832=_0x23b832||0xc8;return function(_0x4ebabf){if(_0x4ebabf){return _0x405fdf[_0x21af('0x1b')](_0x23b832)[_0x21af('0x1c')](_0x4ebabf);}};}function respondWithFilteredResult(_0x37c22c,_0x1c8b58){return function(_0x3092f8){if(_0x3092f8){var _0x10448b=typeof _0x1c8b58[_0x21af('0x1d')]===_0x21af('0x1e')&&typeof _0x1c8b58[_0x21af('0x1f')]===_0x21af('0x1e');var _0x3e096d=_0x3092f8[_0x21af('0x20')];var _0x5aea2e=_0x10448b?0x0:_0x1c8b58[_0x21af('0x1d')];var _0x3ac386=_0x10448b?_0x3092f8['count']:_0x1c8b58['offset']+_0x1c8b58['limit'];var _0x599762;if(_0x3ac386>=_0x3e096d){_0x3ac386=_0x3e096d;_0x599762=0xc8;}else{_0x599762=0xce;}_0x37c22c[_0x21af('0x1b')](_0x599762);return _0x37c22c[_0x21af('0x21')](_0x21af('0x22'),_0x5aea2e+'-'+_0x3ac386+'/'+_0x3e096d)[_0x21af('0x1c')](_0x3092f8);}return null;};}function patchUpdates(_0x2ff918){return function(_0xcc2704){try{jsonpatch[_0x21af('0x23')](_0xcc2704,_0x2ff918,!![]);}catch(_0x3db7cd){return BPromise[_0x21af('0x24')](_0x3db7cd);}return _0xcc2704[_0x21af('0x25')]();};}function saveUpdates(_0x2f92ea,_0x527940){return function(_0x351765){if(_0x351765){return _0x351765[_0x21af('0x26')](_0x2f92ea)[_0x21af('0x27')](function(_0x8fde81){return _0x8fde81;});}return null;};}function removeEntity(_0x38480d,_0x15298c){return function(_0x107ee2){if(_0x107ee2){return _0x107ee2[_0x21af('0x28')]()[_0x21af('0x27')](function(){var _0xf429bc=_0x107ee2['get']({'plain':!![]});var _0x2058ae=_0x21af('0x29');return db[_0x21af('0x2a')][_0x21af('0x28')]({'where':{'type':_0x2058ae,'resourceId':_0xf429bc['id']}})['then'](function(){return _0x107ee2;});})[_0x21af('0x27')](function(){_0x38480d[_0x21af('0x1b')](0xcc)[_0x21af('0x1a')]();});}};}function handleEntityNotFound(_0x59c28e,_0x494293){return function(_0x37bf77){if(!_0x37bf77){_0x59c28e['sendStatus'](0x194);}return _0x37bf77;};}function handleError(_0x5e32d5,_0x19d685){_0x19d685=_0x19d685||0x1f4;return function(_0x2966d5){logger[_0x21af('0x2b')](_0x2966d5['stack']);if(_0x2966d5['name']){delete _0x2966d5['name'];}_0x5e32d5[_0x21af('0x1b')](_0x19d685)[_0x21af('0x2c')](_0x2966d5);};}exports[_0x21af('0x2d')]=function(_0x212036,_0x55628d){var _0x198bf4={},_0x24861f={},_0x44dbf2={'count':0x0,'rows':[]};var _0xd597b4=_['map'](db[_0x21af('0x2e')][_0x21af('0x2f')],function(_0x1e1ad9){return{'name':_0x1e1ad9['fieldName'],'type':_0x1e1ad9[_0x21af('0x30')][_0x21af('0x31')]};});_0x24861f[_0x21af('0x32')]=_[_0x21af('0x33')](_0xd597b4,_0x21af('0x34'));_0x24861f[_0x21af('0x35')]=_[_0x21af('0x36')](_0x212036['query']);_0x24861f[_0x21af('0x37')]=_[_0x21af('0x38')](_0x24861f[_0x21af('0x32')],_0x24861f['query']);_0x198bf4[_0x21af('0x39')]=_[_0x21af('0x38')](_0x24861f[_0x21af('0x32')],qs['fields'](_0x212036[_0x21af('0x35')][_0x21af('0x3a')]));_0x198bf4[_0x21af('0x39')]=_0x198bf4[_0x21af('0x39')][_0x21af('0x3b')]?_0x198bf4[_0x21af('0x39')]:_0x24861f[_0x21af('0x32')];if(!_0x212036[_0x21af('0x35')][_0x21af('0x3c')](_0x21af('0x3d'))){_0x198bf4[_0x21af('0x1f')]=qs[_0x21af('0x1f')](_0x212036['query'][_0x21af('0x1f')]);_0x198bf4[_0x21af('0x1d')]=qs[_0x21af('0x1d')](_0x212036['query'][_0x21af('0x1d')]);}_0x198bf4[_0x21af('0x3e')]=qs[_0x21af('0x3f')](_0x212036[_0x21af('0x35')][_0x21af('0x3f')]);_0x198bf4[_0x21af('0x40')]=qs[_0x21af('0x37')](_[_0x21af('0x41')](_0x212036['query'],_0x24861f[_0x21af('0x37')]),_0xd597b4);if(_0x212036[_0x21af('0x35')][_0x21af('0x42')]){_0x198bf4[_0x21af('0x40')]=_[_0x21af('0x43')](_0x198bf4['where'],{'$or':_[_0x21af('0x33')](_0xd597b4,function(_0xce9a92){if(_0xce9a92[_0x21af('0x30')]!=='VIRTUAL'){var _0x561e12={};_0x561e12[_0xce9a92[_0x21af('0x34')]]={'$like':'%'+_0x212036['query'][_0x21af('0x42')]+'%'};return _0x561e12;}})});}_0x198bf4=_[_0x21af('0x43')]({},_0x198bf4,_0x212036[_0x21af('0x44')]);var _0x2d9eb={'where':_0x198bf4[_0x21af('0x40')]};return db[_0x21af('0x2e')][_0x21af('0x20')](_0x2d9eb)[_0x21af('0x27')](function(_0xc627f0){_0x44dbf2[_0x21af('0x20')]=_0xc627f0;if(_0x212036[_0x21af('0x35')][_0x21af('0x45')]){_0x198bf4['include']=[{'all':!![]}];}return db[_0x21af('0x2e')]['findAll'](_0x198bf4);})[_0x21af('0x27')](function(_0x5a037c){_0x44dbf2['rows']=_0x5a037c;return _0x44dbf2;})[_0x21af('0x27')](respondWithFilteredResult(_0x55628d,_0x198bf4))[_0x21af('0x46')](handleError(_0x55628d,null));};exports['show']=function(_0x4e196c,_0x3b5b06){var _0x538270={'raw':!![],'where':{'id':_0x4e196c['params']['id']}},_0x12b859={};_0x12b859[_0x21af('0x32')]=_[_0x21af('0x36')](db[_0x21af('0x2e')][_0x21af('0x2f')]);_0x12b859[_0x21af('0x35')]=_[_0x21af('0x36')](_0x4e196c['query']);_0x12b859['filters']=_[_0x21af('0x38')](_0x12b859[_0x21af('0x32')],_0x12b859[_0x21af('0x35')]);_0x538270[_0x21af('0x39')]=_[_0x21af('0x38')](_0x12b859[_0x21af('0x32')],qs[_0x21af('0x3a')](_0x4e196c[_0x21af('0x35')]['fields']));_0x538270[_0x21af('0x39')]=_0x538270[_0x21af('0x39')][_0x21af('0x3b')]?_0x538270[_0x21af('0x39')]:_0x12b859[_0x21af('0x32')];if(_0x4e196c[_0x21af('0x35')][_0x21af('0x45')]){_0x538270[_0x21af('0x47')]=[{'all':!![]}];}_0x538270=_[_0x21af('0x43')]({},_0x538270,_0x4e196c[_0x21af('0x44')]);return db[_0x21af('0x2e')][_0x21af('0x48')](_0x538270)['then'](handleEntityNotFound(_0x3b5b06,null))[_0x21af('0x27')](respondWithResult(_0x3b5b06,null))['catch'](handleError(_0x3b5b06,null));};exports['create']=function(_0x466fee,_0x2f17ef){return db[_0x21af('0x2e')]['create'](_0x466fee[_0x21af('0x49')],{})[_0x21af('0x27')](function(_0x383ff3){var _0x48901d=_0x466fee[_0x21af('0x4a')][_0x21af('0x4b')]({'plain':!![]});if(!_0x48901d)throw new Error(_0x21af('0x4c'));if(_0x48901d[_0x21af('0x4d')]===_0x21af('0x4a')){var _0x518b1f=_0x383ff3[_0x21af('0x4b')]({'plain':!![]});var _0x182284=_0x21af('0x29');return db['UserProfileSection'][_0x21af('0x48')]({'where':{'name':_0x182284,'userProfileId':_0x48901d[_0x21af('0x4e')]},'raw':!![]})[_0x21af('0x27')](function(_0x40de5d){if(_0x40de5d&&_0x40de5d[_0x21af('0x4f')]===0x0){return db[_0x21af('0x2a')][_0x21af('0x50')]({'name':_0x518b1f[_0x21af('0x34')],'resourceId':_0x518b1f['id'],'type':_0x40de5d['name'],'sectionId':_0x40de5d['id']},{})[_0x21af('0x27')](function(){return _0x383ff3;});}else{return _0x383ff3;}})[_0x21af('0x46')](function(_0x361a75){logger[_0x21af('0x2b')](_0x21af('0x51'),_0x361a75);throw _0x361a75;});}return _0x383ff3;})[_0x21af('0x27')](respondWithResult(_0x2f17ef,0xc9))[_0x21af('0x46')](handleError(_0x2f17ef,null));};exports['update']=function(_0x228dba,_0xa318bc){if(_0x228dba[_0x21af('0x49')]['id']){delete _0x228dba[_0x21af('0x49')]['id'];}return db[_0x21af('0x2e')][_0x21af('0x48')]({'where':{'id':_0x228dba[_0x21af('0x52')]['id']}})[_0x21af('0x27')](handleEntityNotFound(_0xa318bc,null))[_0x21af('0x27')](saveUpdates(_0x228dba[_0x21af('0x49')],null))[_0x21af('0x27')](respondWithResult(_0xa318bc,null))['catch'](handleError(_0xa318bc,null));};exports['destroy']=function(_0x483308,_0x8f5584){return db[_0x21af('0x2e')][_0x21af('0x48')]({'where':{'id':_0x483308[_0x21af('0x52')]['id']}})[_0x21af('0x27')](handleEntityNotFound(_0x8f5584,null))[_0x21af('0x27')](removeEntity(_0x8f5584,null))[_0x21af('0x46')](handleError(_0x8f5584,null));};
\ No newline at end of file
+var _0x3de2=['moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','Pauses','UserProfileResource','name','index','Pause','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x3a17fb,_0x4c73ed){var _0xad0f8b=function(_0x4a33af){while(--_0x4a33af){_0x3a17fb['push'](_0x3a17fb['shift']());}};_0xad0f8b(++_0x4c73ed);}(_0x3de2,0x1f4));var _0x23de=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0x3de2[_0x1b2ff7];return _0x31656a;};'use strict';var emlformat=require(_0x23de('0x0'));var rimraf=require(_0x23de('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x23de('0x2'));var rp=require(_0x23de('0x3'));var moment=require(_0x23de('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x23de('0x5'));var util=require(_0x23de('0x6'));var path=require('path');var sox=require(_0x23de('0x7'));var csv=require(_0x23de('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x23de('0x9'));var _=require(_0x23de('0xa'));var squel=require(_0x23de('0xb'));var crypto=require('crypto');var jsforce=require(_0x23de('0xc'));var deskjs=require(_0x23de('0xd'));var toCsv=require(_0x23de('0x8'));var querystring=require(_0x23de('0xe'));var Papa=require(_0x23de('0xf'));var Redis=require(_0x23de('0x10'));var authService=require(_0x23de('0x11'));var qs=require(_0x23de('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x23de('0x13'));var logger=require(_0x23de('0x14'))(_0x23de('0x15'));var utils=require(_0x23de('0x16'));var config=require(_0x23de('0x17'));var licenseUtil=require(_0x23de('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5236b0,_0x4bd4e4){_0x4bd4e4=_0x4bd4e4||0xcc;return function(_0x11eca9){if(_0x11eca9){return _0x5236b0[_0x23de('0x19')](_0x4bd4e4);}return _0x5236b0[_0x23de('0x1a')](_0x4bd4e4)[_0x23de('0x1b')]();};}function respondWithResult(_0x4f518d,_0x32a8c9){_0x32a8c9=_0x32a8c9||0xc8;return function(_0x2f8ddb){if(_0x2f8ddb){return _0x4f518d[_0x23de('0x1a')](_0x32a8c9)[_0x23de('0x1c')](_0x2f8ddb);}};}function respondWithFilteredResult(_0x266e90,_0x4301ac){return function(_0x239102){if(_0x239102){var _0x457c3b=typeof _0x4301ac[_0x23de('0x1d')]===_0x23de('0x1e')&&typeof _0x4301ac[_0x23de('0x1f')]===_0x23de('0x1e');var _0x817449=_0x239102['count'];var _0x27de29=_0x457c3b?0x0:_0x4301ac[_0x23de('0x1d')];var _0x1d67c5=_0x457c3b?_0x239102[_0x23de('0x20')]:_0x4301ac['offset']+_0x4301ac['limit'];var _0x34e262;if(_0x1d67c5>=_0x817449){_0x1d67c5=_0x817449;_0x34e262=0xc8;}else{_0x34e262=0xce;}_0x266e90[_0x23de('0x1a')](_0x34e262);return _0x266e90[_0x23de('0x21')](_0x23de('0x22'),_0x27de29+'-'+_0x1d67c5+'/'+_0x817449)[_0x23de('0x1c')](_0x239102);}return null;};}function patchUpdates(_0x388705){return function(_0x1a2aa8){try{jsonpatch[_0x23de('0x23')](_0x1a2aa8,_0x388705,!![]);}catch(_0x3cab0b){return BPromise[_0x23de('0x24')](_0x3cab0b);}return _0x1a2aa8['save']();};}function saveUpdates(_0x29f722,_0xcfd7c){return function(_0x5c671b){if(_0x5c671b){return _0x5c671b['update'](_0x29f722)[_0x23de('0x25')](function(_0x14faa9){return _0x14faa9;});}return null;};}function removeEntity(_0x91d7a,_0x55ef3f){return function(_0x1d8b44){if(_0x1d8b44){return _0x1d8b44[_0x23de('0x26')]()[_0x23de('0x25')](function(){var _0x5c7dde=_0x1d8b44[_0x23de('0x27')]({'plain':!![]});var _0x3c6095=_0x23de('0x28');return db[_0x23de('0x29')][_0x23de('0x26')]({'where':{'type':_0x3c6095,'resourceId':_0x5c7dde['id']}})[_0x23de('0x25')](function(){return _0x1d8b44;});})[_0x23de('0x25')](function(){_0x91d7a[_0x23de('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e340d,_0x3f9431){return function(_0x2135ab){if(!_0x2135ab){_0x4e340d['sendStatus'](0x194);}return _0x2135ab;};}function handleError(_0x55003c,_0x3a6f3f){_0x3a6f3f=_0x3a6f3f||0x1f4;return function(_0x420ec7){logger['error'](_0x420ec7['stack']);if(_0x420ec7[_0x23de('0x2a')]){delete _0x420ec7[_0x23de('0x2a')];}_0x55003c[_0x23de('0x1a')](_0x3a6f3f)['send'](_0x420ec7);};}exports[_0x23de('0x2b')]=function(_0x51a1f1,_0x2f1494){var _0x12b3c4={},_0x5dc9bd={},_0x4f70b1={'count':0x0,'rows':[]};var _0x119fa3=_['map'](db[_0x23de('0x2c')][_0x23de('0x2d')],function(_0x6f5678){return{'name':_0x6f5678[_0x23de('0x2e')],'type':_0x6f5678[_0x23de('0x2f')][_0x23de('0x30')]};});_0x5dc9bd[_0x23de('0x31')]=_[_0x23de('0x32')](_0x119fa3,'name');_0x5dc9bd[_0x23de('0x33')]=_[_0x23de('0x34')](_0x51a1f1[_0x23de('0x33')]);_0x5dc9bd[_0x23de('0x35')]=_[_0x23de('0x36')](_0x5dc9bd[_0x23de('0x31')],_0x5dc9bd['query']);_0x12b3c4['attributes']=_['intersection'](_0x5dc9bd[_0x23de('0x31')],qs[_0x23de('0x37')](_0x51a1f1['query'][_0x23de('0x37')]));_0x12b3c4['attributes']=_0x12b3c4[_0x23de('0x38')][_0x23de('0x39')]?_0x12b3c4[_0x23de('0x38')]:_0x5dc9bd[_0x23de('0x31')];if(!_0x51a1f1[_0x23de('0x33')]['hasOwnProperty'](_0x23de('0x3a'))){_0x12b3c4['limit']=qs['limit'](_0x51a1f1['query'][_0x23de('0x1f')]);_0x12b3c4[_0x23de('0x1d')]=qs[_0x23de('0x1d')](_0x51a1f1[_0x23de('0x33')][_0x23de('0x1d')]);}_0x12b3c4[_0x23de('0x3b')]=qs['sort'](_0x51a1f1['query'][_0x23de('0x3c')]);_0x12b3c4[_0x23de('0x3d')]=qs['filters'](_[_0x23de('0x3e')](_0x51a1f1[_0x23de('0x33')],_0x5dc9bd[_0x23de('0x35')]),_0x119fa3);if(_0x51a1f1[_0x23de('0x33')][_0x23de('0x3f')]){_0x12b3c4[_0x23de('0x3d')]=_[_0x23de('0x40')](_0x12b3c4[_0x23de('0x3d')],{'$or':_[_0x23de('0x32')](_0x119fa3,function(_0x5e41d7){if(_0x5e41d7[_0x23de('0x2f')]!=='VIRTUAL'){var _0x5a144b={};_0x5a144b[_0x5e41d7[_0x23de('0x2a')]]={'$like':'%'+_0x51a1f1['query'][_0x23de('0x3f')]+'%'};return _0x5a144b;}})});}_0x12b3c4=_[_0x23de('0x40')]({},_0x12b3c4,_0x51a1f1[_0x23de('0x41')]);var _0x292745={'where':_0x12b3c4['where']};return db[_0x23de('0x2c')][_0x23de('0x20')](_0x292745)[_0x23de('0x25')](function(_0x40521f){_0x4f70b1['count']=_0x40521f;if(_0x51a1f1[_0x23de('0x33')][_0x23de('0x42')]){_0x12b3c4['include']=[{'all':!![]}];}return db[_0x23de('0x2c')][_0x23de('0x43')](_0x12b3c4);})['then'](function(_0x5a5051){_0x4f70b1[_0x23de('0x44')]=_0x5a5051;return _0x4f70b1;})[_0x23de('0x25')](respondWithFilteredResult(_0x2f1494,_0x12b3c4))[_0x23de('0x45')](handleError(_0x2f1494,null));};exports[_0x23de('0x46')]=function(_0x5340c4,_0x5d52c3){var _0x3c2fbc={'raw':!![],'where':{'id':_0x5340c4[_0x23de('0x47')]['id']}},_0x538223={};_0x538223[_0x23de('0x31')]=_[_0x23de('0x34')](db[_0x23de('0x2c')][_0x23de('0x2d')]);_0x538223[_0x23de('0x33')]=_['keys'](_0x5340c4[_0x23de('0x33')]);_0x538223[_0x23de('0x35')]=_[_0x23de('0x36')](_0x538223['model'],_0x538223[_0x23de('0x33')]);_0x3c2fbc[_0x23de('0x38')]=_['intersection'](_0x538223[_0x23de('0x31')],qs['fields'](_0x5340c4[_0x23de('0x33')][_0x23de('0x37')]));_0x3c2fbc[_0x23de('0x38')]=_0x3c2fbc[_0x23de('0x38')][_0x23de('0x39')]?_0x3c2fbc[_0x23de('0x38')]:_0x538223[_0x23de('0x31')];if(_0x5340c4[_0x23de('0x33')][_0x23de('0x42')]){_0x3c2fbc[_0x23de('0x48')]=[{'all':!![]}];}_0x3c2fbc=_['merge']({},_0x3c2fbc,_0x5340c4[_0x23de('0x41')]);return db[_0x23de('0x2c')][_0x23de('0x49')](_0x3c2fbc)[_0x23de('0x25')](handleEntityNotFound(_0x5d52c3,null))[_0x23de('0x25')](respondWithResult(_0x5d52c3,null))['catch'](handleError(_0x5d52c3,null));};exports[_0x23de('0x4a')]=function(_0x343d80,_0x4dcbe1){return db[_0x23de('0x2c')][_0x23de('0x4a')](_0x343d80['body'],{})['then'](function(_0x1c7a9f){var _0x1f0e52=_0x343d80[_0x23de('0x4b')][_0x23de('0x27')]({'plain':!![]});if(!_0x1f0e52)throw new Error(_0x23de('0x4c'));if(_0x1f0e52[_0x23de('0x4d')]===_0x23de('0x4b')){var _0x578cbc=_0x1c7a9f[_0x23de('0x27')]({'plain':!![]});var _0x2bc58a=_0x23de('0x28');return db[_0x23de('0x4e')][_0x23de('0x49')]({'where':{'name':_0x2bc58a,'userProfileId':_0x1f0e52[_0x23de('0x4f')]},'raw':!![]})[_0x23de('0x25')](function(_0x5469ee){if(_0x5469ee&&_0x5469ee['autoAssociation']===0x0){return db['UserProfileResource'][_0x23de('0x4a')]({'name':_0x578cbc[_0x23de('0x2a')],'resourceId':_0x578cbc['id'],'type':_0x5469ee[_0x23de('0x2a')],'sectionId':_0x5469ee['id']},{})[_0x23de('0x25')](function(){return _0x1c7a9f;});}else{return _0x1c7a9f;}})[_0x23de('0x45')](function(_0x449100){logger[_0x23de('0x50')](_0x23de('0x51'),_0x449100);throw _0x449100;});}return _0x1c7a9f;})['then'](respondWithResult(_0x4dcbe1,0xc9))['catch'](handleError(_0x4dcbe1,null));};exports[_0x23de('0x52')]=function(_0x20ec2d,_0x30c378){if(_0x20ec2d['body']['id']){delete _0x20ec2d['body']['id'];}return db['Pause']['find']({'where':{'id':_0x20ec2d[_0x23de('0x47')]['id']}})[_0x23de('0x25')](handleEntityNotFound(_0x30c378,null))[_0x23de('0x25')](saveUpdates(_0x20ec2d[_0x23de('0x53')],null))[_0x23de('0x25')](respondWithResult(_0x30c378,null))['catch'](handleError(_0x30c378,null));};exports[_0x23de('0x26')]=function(_0x172bc1,_0xdefe23){return db[_0x23de('0x2c')][_0x23de('0x49')]({'where':{'id':_0x172bc1[_0x23de('0x47')]['id']}})[_0x23de('0x25')](handleEntityNotFound(_0xdefe23,null))[_0x23de('0x25')](removeEntity(_0xdefe23,null))[_0x23de('0x45')](handleError(_0xdefe23,null));};
\ No newline at end of file
index f8909af..dac56cf 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(_0x523cdf,_0x495050){var _0x3586f2=function(_0x44ee04){while(--_0x44ee04){_0x523cdf['push'](_0x523cdf['shift']());}};_0x3586f2(++_0x495050);}(_0x8ef6,0xf2));var _0x68ef=function(_0x28b418,_0x5b6e08){_0x28b418=_0x28b418-0x0;var _0x47b036=_0x8ef6[_0x28b418];return _0x47b036;};'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 _0xf494=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','lodash','util'];(function(_0xd5df90,_0x1f3d39){var _0x141f09=function(_0x518c70){while(--_0x518c70){_0xd5df90['push'](_0xd5df90['shift']());}};_0x141f09(++_0x1f3d39);}(_0xf494,0x1c6));var _0x4f49=function(_0x26e4f6,_0x43a921){_0x26e4f6=_0x26e4f6-0x0;var _0x55ce07=_0xf494[_0x26e4f6];return _0x55ce07;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('Pause',attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4e35e48..2bb9c63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x4074bb,_0x2f03ee){var _0x24c6b2=function(_0x1a0ee5){while(--_0x1a0ee5){_0x4074bb['push'](_0x4074bb['shift']());}};_0x24c6b2(++_0x2f03ee);}(_0x7a54,0x106));var _0x47a5=function(_0x4ad1b5,_0x3d7abd){_0x4ad1b5=_0x4ad1b5-0x0;var _0x56e765=_0x7a54[_0x4ad1b5];return _0x56e765;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x2d1499,_0x4f43f5){var _0x38da7c=function(_0x3a0895){while(--_0x3a0895){_0x2d1499['push'](_0x2d1499['shift']());}};_0x38da7c(++_0x4f43f5);}(_0x7a54,0x106));var _0x47a5=function(_0x49bd30,_0x17270b){_0x49bd30=_0x49bd30-0x0;var _0x380c01=_0x7a54[_0x49bd30];return _0x380c01;};'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 f7080f0..9015c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bde=['originalname','replace','format','%s-%s%s','basename','extname','post','single','file','upload','put','update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','/:id','show','/:id/download','download','server/files/plugins'];(function(_0x5ed135,_0x399a49){var _0x2df1bc=function(_0xa2470){while(--_0xa2470){_0x5ed135['push'](_0x5ed135['shift']());}};_0x2df1bc(++_0x399a49);}(_0x0bde,0xe7));var _0xe0bd=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0bde[_0x2641f9];return _0x585741;};'use strict';var multer=require('multer');var util=require(_0xe0bd('0x0'));var path=require('path');var timeout=require(_0xe0bd('0x1'));var express=require(_0xe0bd('0x2'));var router=express[_0xe0bd('0x3')]();var fs_extra=require(_0xe0bd('0x4'));var auth=require(_0xe0bd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe0bd('0x6'));var controller=require(_0xe0bd('0x7'));router[_0xe0bd('0x8')]('/',auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xa')]);router[_0xe0bd('0x8')](_0xe0bd('0xb'),controller['webhookGet']);router[_0xe0bd('0x8')](_0xe0bd('0xc'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xd')]);router[_0xe0bd('0x8')](_0xe0bd('0xe'),auth[_0xe0bd('0x9')](),controller[_0xe0bd('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x595dac,_0x47f96d,_0x44ffa9){_0x44ffa9(null,path['join'](config['root'],_0xe0bd('0x10')));},'filename':function(_0x415093,_0x54d40e,_0xc492b4){_0x54d40e['originalname']=_0x54d40e[_0xe0bd('0x11')][_0xe0bd('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xc492b4(null,util[_0xe0bd('0x13')](_0xe0bd('0x14'),path[_0xe0bd('0x15')](_0x54d40e[_0xe0bd('0x11')],path[_0xe0bd('0x16')](_0x54d40e[_0xe0bd('0x11')])),Date['now'](),path['extname'](_0x54d40e['originalname'])));}})});router[_0xe0bd('0x17')]('/',upload[_0xe0bd('0x18')](_0xe0bd('0x19')),controller[_0xe0bd('0x1a')]);router[_0xe0bd('0x17')]('/webhook',controller['webhookPost']);router[_0xe0bd('0x1b')]('/:id',auth[_0xe0bd('0x9')](),controller[_0xe0bd('0x1c')]);router[_0xe0bd('0x1d')](_0xe0bd('0xc'),auth['isAuthenticated'](),controller[_0xe0bd('0x1d')]);module[_0xe0bd('0x1e')]=router;
\ No newline at end of file
+var _0xb4e6=['put','/:id','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./plugin.controller','get','isAuthenticated','show','/:id/download','download','diskStorage','join','server/files/plugins','originalname','replace','%s-%s%s','basename','extname','now','post','single','file','/webhook','webhookPost'];(function(_0x447154,_0x57fc74){var _0x2dfe2d=function(_0x5c471e){while(--_0x5c471e){_0x447154['push'](_0x447154['shift']());}};_0x2dfe2d(++_0x57fc74);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x377a6e,_0x59b99d){_0x377a6e=_0x377a6e-0x0;var _0x37f751=_0xb4e6[_0x377a6e];return _0x37f751;};'use strict';var multer=require(_0x6b4e('0x0'));var util=require('util');var path=require(_0x6b4e('0x1'));var timeout=require(_0x6b4e('0x2'));var express=require(_0x6b4e('0x3'));var router=express[_0x6b4e('0x4')]();var fs_extra=require(_0x6b4e('0x5'));var auth=require(_0x6b4e('0x6'));var interaction=require(_0x6b4e('0x7'));var config=require('../../config/environment');var controller=require(_0x6b4e('0x8'));router[_0x6b4e('0x9')]('/',auth[_0x6b4e('0xa')](),controller['index']);router[_0x6b4e('0x9')]('/webhook',controller['webhookGet']);router[_0x6b4e('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x6b4e('0xb')]);router[_0x6b4e('0x9')](_0x6b4e('0xc'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xd')]);var upload=multer({'storage':multer[_0x6b4e('0xe')]({'destination':function(_0x323487,_0x49c734,_0x39b4ec){_0x39b4ec(null,path[_0x6b4e('0xf')](config['root'],_0x6b4e('0x10')));},'filename':function(_0x9cd7da,_0x432399,_0x2b2ce0){_0x432399[_0x6b4e('0x11')]=_0x432399[_0x6b4e('0x11')][_0x6b4e('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2b2ce0(null,util['format'](_0x6b4e('0x13'),path[_0x6b4e('0x14')](_0x432399['originalname'],path[_0x6b4e('0x15')](_0x432399['originalname'])),Date[_0x6b4e('0x16')](),path[_0x6b4e('0x15')](_0x432399[_0x6b4e('0x11')])));}})});router[_0x6b4e('0x17')]('/',upload[_0x6b4e('0x18')](_0x6b4e('0x19')),controller['upload']);router['post'](_0x6b4e('0x1a'),controller[_0x6b4e('0x1b')]);router[_0x6b4e('0x1c')](_0x6b4e('0x1d'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x1e')]);router[_0x6b4e('0x1f')](_0x6b4e('0x1d'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x1f')]);module[_0x6b4e('0x20')]=router;
\ No newline at end of file
index 7e5ee33..b1789d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e55=['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.','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM'];(function(_0x3ec1a0,_0x2df235){var _0x12279e=function(_0x173fa4){while(--_0x173fa4){_0x3ec1a0['push'](_0x3ec1a0['shift']());}};_0x12279e(++_0x2df235);}(_0x1e55,0xce));var _0x51e5=function(_0x2f6f50,_0x33095e){_0x2f6f50=_0x2f6f50-0x0;var _0x225200=_0x1e55[_0x2f6f50];return _0x225200;};'use strict';var Sequelize=require(_0x51e5('0x0'));module[_0x51e5('0x1')]={'name':{'type':Sequelize[_0x51e5('0x2')]},'type':{'type':Sequelize[_0x51e5('0x3')](_0x51e5('0x4'),_0x51e5('0x5'))},'description':{'type':Sequelize[_0x51e5('0x6')]},'version':{'type':Sequelize[_0x51e5('0x6')]},'path':{'type':Sequelize[_0x51e5('0x2')],'comment':_0x51e5('0x7')},'active':{'type':Sequelize[_0x51e5('0x8')],'defaultValue':0x0,'comment':_0x51e5('0x9')},'sidebar':{'type':Sequelize['ENUM'](_0x51e5('0xa'),_0x51e5('0xb'),_0x51e5('0xc'),_0x51e5('0xd')),'defaultValue':_0x51e5('0xc'),'comment':_0x51e5('0xe')},'icon':{'type':Sequelize[_0x51e5('0x2')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0x51e5('0x2')]},'scriptName':{'type':Sequelize[_0x51e5('0x2')]},'scriptPath':{'type':Sequelize[_0x51e5('0x2')]}};
\ No newline at end of file
+var _0x579e=['TEXT','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','STRING','sequelize','exports','ENUM','html','script'];(function(_0x322bef,_0x4890d4){var _0x229e60=function(_0x45f89b){while(--_0x45f89b){_0x322bef['push'](_0x322bef['shift']());}};_0x229e60(++_0x4890d4);}(_0x579e,0x14d));var _0xe579=function(_0x4ba1e0,_0x3d854a){_0x4ba1e0=_0x4ba1e0-0x0;var _0x34900e=_0x579e[_0x4ba1e0];return _0x34900e;};'use strict';var Sequelize=require(_0xe579('0x0'));module[_0xe579('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xe579('0x2')](_0xe579('0x3'),_0xe579('0x4'))},'description':{'type':Sequelize[_0xe579('0x5')]},'version':{'type':Sequelize[_0xe579('0x5')]},'path':{'type':Sequelize['STRING'],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xe579('0x6')],'defaultValue':0x0,'comment':_0xe579('0x7')},'sidebar':{'type':Sequelize['ENUM']('adminOnly',_0xe579('0x8'),_0xe579('0x9'),_0xe579('0xa')),'defaultValue':_0xe579('0x9'),'comment':_0xe579('0xb')},'icon':{'type':Sequelize[_0xe579('0xc')]},'adminUrl':{'type':Sequelize[_0xe579('0xc')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0xe579('0xc')]},'scriptPath':{'type':Sequelize[_0xe579('0xc')]}};
\ No newline at end of file
index 71f3716..3a52d3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44ed=['join','root','server/files/plugins','format','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','**/*','basename','attachments/**/*','close','existsSync','Plugin\x20not\x20found','download','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','file','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','readFileSync','Invalid\x20manifest:\x20name\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Extracted\x20folder\x20removed','update','dirname','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','hostname','http://localhost:','encoding','method','headers','content-length','content-type','endsWith','webhookPost','\x27PORT\x27\x20parameter\x20not\x20specified','%s%s','statusCode','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','extract-zip','rimraf','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./plugin.socket','status','end','json','limit','undefined','count','set','save','then','get','Plugins','UserProfileResource','destroy','sendStatus','error','stack','index','map','Plugin','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','offset','order','sort','filters','pick','filter','where','merge','type','name','options','includeAll','include','rows','catch','show','params','find'];(function(_0x5b6092,_0x5563bd){var _0x3de6aa=function(_0x22732d){while(--_0x22732d){_0x5b6092['push'](_0x5b6092['shift']());}};_0x3de6aa(++_0x5563bd);}(_0x44ed,0x1ac));var _0xd44e=function(_0x305b86,_0x475f5a){_0x305b86=_0x305b86-0x0;var _0x2b0c9e=_0x44ed[_0x305b86];return _0x2b0c9e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd44e('0x0'));var jsonpatch=require(_0xd44e('0x1'));var rp=require(_0xd44e('0x2'));var moment=require(_0xd44e('0x3'));var BPromise=require(_0xd44e('0x4'));var Mustache=require(_0xd44e('0x5'));var util=require('util');var path=require(_0xd44e('0x6'));var sox=require(_0xd44e('0x7'));var csv=require(_0xd44e('0x8'));var ejs=require(_0xd44e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd44e('0xa'));var squel=require(_0xd44e('0xb'));var crypto=require(_0xd44e('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xd44e('0xd'));var toCsv=require(_0xd44e('0x8'));var querystring=require(_0xd44e('0xe'));var Papa=require(_0xd44e('0xf'));var extract=require(_0xd44e('0x10'));var rimraf=require(_0xd44e('0x11'));var archiver=require(_0xd44e('0x12'));var Redis=require(_0xd44e('0x13'));var authService=require(_0xd44e('0x14'));var qs=require(_0xd44e('0x15'));var as=require(_0xd44e('0x16'));var hardwareService=require(_0xd44e('0x17'));var logger=require('../../config/logger')(_0xd44e('0x18'));var utils=require(_0xd44e('0x19'));var config=require(_0xd44e('0x1a'));var licenseUtil=require(_0xd44e('0x1b'));var db=require(_0xd44e('0x1c'))['db'];config[_0xd44e('0x1d')]=_['defaults'](config[_0xd44e('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0xd44e('0x1e'))(new Redis(config[_0xd44e('0x1d')]));require(_0xd44e('0x1f'))['register'](socket);function respondWithStatusCode(_0x415848,_0x469040){_0x469040=_0x469040||0xcc;return function(_0x55bfd2){if(_0x55bfd2){return _0x415848['sendStatus'](_0x469040);}return _0x415848[_0xd44e('0x20')](_0x469040)[_0xd44e('0x21')]();};}function respondWithResult(_0x26dcb3,_0x1290c1){_0x1290c1=_0x1290c1||0xc8;return function(_0x88afca){if(_0x88afca){return _0x26dcb3['status'](_0x1290c1)[_0xd44e('0x22')](_0x88afca);}};}function respondWithFilteredResult(_0xb0d84b,_0x4ec147){return function(_0xd59e14){if(_0xd59e14){var _0x1753d9=typeof _0x4ec147['offset']==='undefined'&&typeof _0x4ec147[_0xd44e('0x23')]===_0xd44e('0x24');var _0x1c0a29=_0xd59e14['count'];var _0x270bba=_0x1753d9?0x0:_0x4ec147['offset'];var _0x27a1c5=_0x1753d9?_0xd59e14[_0xd44e('0x25')]:_0x4ec147['offset']+_0x4ec147[_0xd44e('0x23')];var _0x17d19e;if(_0x27a1c5>=_0x1c0a29){_0x27a1c5=_0x1c0a29;_0x17d19e=0xc8;}else{_0x17d19e=0xce;}_0xb0d84b['status'](_0x17d19e);return _0xb0d84b[_0xd44e('0x26')]('Content-Range',_0x270bba+'-'+_0x27a1c5+'/'+_0x1c0a29)[_0xd44e('0x22')](_0xd59e14);}return null;};}function patchUpdates(_0x4651ce){return function(_0x5bec23){try{jsonpatch['apply'](_0x5bec23,_0x4651ce,!![]);}catch(_0x29bbd1){return BPromise['reject'](_0x29bbd1);}return _0x5bec23[_0xd44e('0x27')]();};}function saveUpdates(_0x5d6bc6,_0x2056b1){return function(_0x5c6473){if(_0x5c6473){return _0x5c6473['update'](_0x5d6bc6)['then'](function(_0x38562c){return _0x38562c;});}return null;};}function removeEntity(_0x56126b,_0x2f546d){return function(_0x5d2a2d){if(_0x5d2a2d){return _0x5d2a2d['destroy']()[_0xd44e('0x28')](function(){var _0x4782c2=_0x5d2a2d[_0xd44e('0x29')]({'plain':!![]});var _0x38566a=_0xd44e('0x2a');return db[_0xd44e('0x2b')][_0xd44e('0x2c')]({'where':{'type':_0x38566a,'resourceId':_0x4782c2['id']}})['then'](function(){return _0x5d2a2d;});})[_0xd44e('0x28')](function(){_0x56126b[_0xd44e('0x20')](0xcc)[_0xd44e('0x21')]();});}};}function handleEntityNotFound(_0x211fc0,_0x3e7452){return function(_0xeec7c6){if(!_0xeec7c6){_0x211fc0[_0xd44e('0x2d')](0x194);}return _0xeec7c6;};}function handleError(_0x74fa6f,_0x4a92be){_0x4a92be=_0x4a92be||0x1f4;return function(_0x18ff51){logger[_0xd44e('0x2e')](_0x18ff51[_0xd44e('0x2f')]);if(_0x18ff51['name']){delete _0x18ff51['name'];}_0x74fa6f['status'](_0x4a92be)['send'](_0x18ff51);};}exports[_0xd44e('0x30')]=function(_0x563272,_0x48898e){var _0x1e7c25={},_0x17dfa8={},_0x5b1133={'count':0x0,'rows':[]};var _0x44eb0d=_[_0xd44e('0x31')](db[_0xd44e('0x32')][_0xd44e('0x33')],function(_0x1a2c54){return{'name':_0x1a2c54[_0xd44e('0x34')],'type':_0x1a2c54['type'][_0xd44e('0x35')]};});_0x17dfa8[_0xd44e('0x36')]=_['map'](_0x44eb0d,'name');_0x17dfa8[_0xd44e('0x37')]=_[_0xd44e('0x38')](_0x563272[_0xd44e('0x37')]);_0x17dfa8['filters']=_[_0xd44e('0x39')](_0x17dfa8[_0xd44e('0x36')],_0x17dfa8[_0xd44e('0x37')]);_0x1e7c25[_0xd44e('0x3a')]=_[_0xd44e('0x39')](_0x17dfa8['model'],qs[_0xd44e('0x3b')](_0x563272[_0xd44e('0x37')][_0xd44e('0x3b')]));_0x1e7c25[_0xd44e('0x3a')]=_0x1e7c25[_0xd44e('0x3a')][_0xd44e('0x3c')]?_0x1e7c25[_0xd44e('0x3a')]:_0x17dfa8[_0xd44e('0x36')];if(!_0x563272[_0xd44e('0x37')]['hasOwnProperty']('nolimit')){_0x1e7c25[_0xd44e('0x23')]=qs['limit'](_0x563272[_0xd44e('0x37')]['limit']);_0x1e7c25['offset']=qs['offset'](_0x563272[_0xd44e('0x37')][_0xd44e('0x3d')]);}_0x1e7c25[_0xd44e('0x3e')]=qs[_0xd44e('0x3f')](_0x563272['query']['sort']);_0x1e7c25['where']=qs[_0xd44e('0x40')](_[_0xd44e('0x41')](_0x563272['query'],_0x17dfa8[_0xd44e('0x40')]),_0x44eb0d);if(_0x563272[_0xd44e('0x37')][_0xd44e('0x42')]){_0x1e7c25[_0xd44e('0x43')]=_[_0xd44e('0x44')](_0x1e7c25[_0xd44e('0x43')],{'$or':_[_0xd44e('0x31')](_0x44eb0d,function(_0x2195ec){if(_0x2195ec[_0xd44e('0x45')]!=='VIRTUAL'){var _0x5afa20={};_0x5afa20[_0x2195ec[_0xd44e('0x46')]]={'$like':'%'+_0x563272[_0xd44e('0x37')][_0xd44e('0x42')]+'%'};return _0x5afa20;}})});}_0x1e7c25=_['merge']({},_0x1e7c25,_0x563272[_0xd44e('0x47')]);var _0x31ecd8={'where':_0x1e7c25['where']};return db[_0xd44e('0x32')][_0xd44e('0x25')](_0x31ecd8)[_0xd44e('0x28')](function(_0x5311db){_0x5b1133[_0xd44e('0x25')]=_0x5311db;if(_0x563272[_0xd44e('0x37')][_0xd44e('0x48')]){_0x1e7c25[_0xd44e('0x49')]=[{'all':!![]}];}return db[_0xd44e('0x32')]['findAll'](_0x1e7c25);})['then'](function(_0xd2cf6){_0x5b1133[_0xd44e('0x4a')]=_0xd2cf6;return _0x5b1133;})['then'](respondWithFilteredResult(_0x48898e,_0x1e7c25))[_0xd44e('0x4b')](handleError(_0x48898e,null));};exports[_0xd44e('0x4c')]=function(_0x5a68dc,_0x5ebf31){var _0x59a59f={'raw':!![],'where':{'id':_0x5a68dc[_0xd44e('0x4d')]['id']}},_0x56ba69={};_0x56ba69[_0xd44e('0x36')]=_[_0xd44e('0x38')](db[_0xd44e('0x32')][_0xd44e('0x33')]);_0x56ba69[_0xd44e('0x37')]=_[_0xd44e('0x38')](_0x5a68dc[_0xd44e('0x37')]);_0x56ba69['filters']=_[_0xd44e('0x39')](_0x56ba69[_0xd44e('0x36')],_0x56ba69[_0xd44e('0x37')]);_0x59a59f['attributes']=_[_0xd44e('0x39')](_0x56ba69[_0xd44e('0x36')],qs[_0xd44e('0x3b')](_0x5a68dc[_0xd44e('0x37')][_0xd44e('0x3b')]));_0x59a59f['attributes']=_0x59a59f['attributes'][_0xd44e('0x3c')]?_0x59a59f['attributes']:_0x56ba69[_0xd44e('0x36')];if(_0x5a68dc[_0xd44e('0x37')]['includeAll']){_0x59a59f[_0xd44e('0x49')]=[{'all':!![]}];}_0x59a59f=_['merge']({},_0x59a59f,_0x5a68dc['options']);return db[_0xd44e('0x32')][_0xd44e('0x4e')](_0x59a59f)['then'](handleEntityNotFound(_0x5ebf31,null))[_0xd44e('0x28')](respondWithResult(_0x5ebf31,null))[_0xd44e('0x4b')](handleError(_0x5ebf31,null));};exports['download']=function(_0x59351e,_0x31b5e8,_0x30a968){return db['Plugin']['find']({'where':{'id':_0x59351e[_0xd44e('0x4d')]['id']},'attributes':[_0xd44e('0x46'),_0xd44e('0x6')],'raw':!![]})[_0xd44e('0x28')](handleEntityNotFound(_0x31b5e8,null))[_0xd44e('0x28')](function(_0x1098c1){if(_0x1098c1){var _0x46ca7e=path[_0xd44e('0x4f')](config[_0xd44e('0x50')],_0xd44e('0x51'),util[_0xd44e('0x52')]('%s.zip',path['basename'](_0x1098c1['path'])));var _0x308e22=fs[_0xd44e('0x53')](_0x46ca7e);var _0x1353f6=archiver(_0xd44e('0x54'),{'zlib':{'level':0x9}});_0x1353f6['on'](_0xd44e('0x55'),function(_0x4c70c8){if(_0x4c70c8[_0xd44e('0x56')]===_0xd44e('0x57')){logger[_0xd44e('0x2e')](_0x4c70c8);}else{throw new db[(_0xd44e('0x58'))][(_0xd44e('0x59'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x1353f6['on'](_0xd44e('0x2e'),function(_0xb54e7b){throw new db['Sequelize']['Error'](_0xd44e('0x5a'));});_0x1353f6[_0xd44e('0x5b')](_0x308e22);_0x1353f6['glob'](_0xd44e('0x5c'),{'cwd':path[_0xd44e('0x4f')](config['root'],'server/files/plugins',path['dirname'](_0x1098c1[_0xd44e('0x6')])),'ignore':[path['join'](path[_0xd44e('0x5d')](_0x1098c1[_0xd44e('0x6')]),'node_modules/**/*'),path['join'](path[_0xd44e('0x5d')](_0x1098c1[_0xd44e('0x6')]),_0xd44e('0x5e'))],'nodir':!![]})['finalize']();_0x308e22['on'](_0xd44e('0x5f'),function(){if(!fs[_0xd44e('0x60')](_0x46ca7e)){throw new db[(_0xd44e('0x58'))][(_0xd44e('0x59'))](_0xd44e('0x61'));}return _0x31b5e8[_0xd44e('0x62')](_0x46ca7e,util[_0xd44e('0x52')]('%s.zip',path[_0xd44e('0x5d')](_0x1098c1['path'])),function(_0x114c77){if(_0x114c77){throw new db['Sequelize'][(_0xd44e('0x59'))](_0xd44e('0x63'));}fs[_0xd44e('0x64')](_0x46ca7e);logger[_0xd44e('0x65')](_0xd44e('0x66'));logger[_0xd44e('0x65')](_0xd44e('0x67'));});});}return null;})['catch'](handleError(_0x31b5e8,null));};exports['upload']=function(_0xd0948f,_0x2ae8ee,_0x4fbb1a){var _0xcbcb3d=path['basename'](_0xd0948f[_0xd44e('0x68')][_0xd44e('0x69')],path['extname'](_0xd0948f[_0xd44e('0x68')][_0xd44e('0x69')]));var _0x5c2cdd=path['join'](config[_0xd44e('0x50')],_0xd44e('0x51'),_0xd0948f[_0xd44e('0x68')]['filename']);var _0x5958a9=path[_0xd44e('0x4f')](config[_0xd44e('0x50')],_0xd44e('0x51'),_0xcbcb3d);logger[_0xd44e('0x65')](_0xd44e('0x6a'),_0x5c2cdd);logger[_0xd44e('0x65')](_0xd44e('0x6b'),_0x5958a9);try{fs[_0xd44e('0x6c')](_0x5c2cdd,parseInt(_0xd44e('0x6d'),0x8));extract(_0x5c2cdd,{'dir':_0x5958a9},function(_0x555d12){if(_0x555d12){logger[_0xd44e('0x2e')](_0x555d12);handleError(_0x555d12,!![]);};var _0x2fc3f0=fs['readdirSync'](_0x5958a9);if(_0x2fc3f0[_0xd44e('0x3c')]>0x1){removeReferences(_0x5c2cdd,_0x5958a9);logger['error'](_0xd44e('0x6e'));return _0x4fbb1a(new Error('Invalid\x20plugin\x20structure'));}var _0x41b5bb=fs[_0xd44e('0x6f')](path[_0xd44e('0x4f')](_0x5958a9,_0x2fc3f0[0x0]));if(_0x41b5bb[_0xd44e('0x70')]()){removeReferences(_0x5c2cdd,_0x5958a9);logger[_0xd44e('0x2e')]('Invalid\x20plugin\x20structure');return _0x4fbb1a(new Error(_0xd44e('0x6e')));}if(_0x41b5bb[_0xd44e('0x71')]()){var _0x4a405c=fs['readdirSync'](path[_0xd44e('0x4f')](_0x5958a9,_0x2fc3f0[0x0]));if(_0x4a405c[_0xd44e('0x3c')]===0x0){removeReferences(_0x5c2cdd,_0x5958a9);logger['error'](_0xd44e('0x6e'));return _0x4fbb1a(new Error(_0xd44e('0x6e')));}var _0x2a2df6=_0x4a405c[_0xd44e('0x72')](function(_0x160058){return _0x160058===_0xd44e('0x73');});if(!_0x2a2df6){return _0x4fbb1a(new Error('Plugin\x20manifest\x20missing'));}var _0x6b023=fs[_0xd44e('0x74')](path[_0xd44e('0x4f')](_0x5958a9,_0x2fc3f0[0x0],_0xd44e('0x73')));var _0x51f487=JSON['parse'](_0x6b023);if(_0xd44e('0x24')==typeof _0x51f487[_0xd44e('0x46')]){return _0x4fbb1a(new Error(_0xd44e('0x75')));}if('undefined'==typeof _0x51f487[_0xd44e('0x45')]){return _0x4fbb1a(new Error('Invalid\x20manifest:\x20type\x20missing'));}if(_0xd44e('0x24')==typeof _0x51f487[_0xd44e('0x76')]){return _0x4fbb1a(new Error(_0xd44e('0x77')));}if(_0xd44e('0x24')==typeof _0x51f487[_0xd44e('0x78')]){return _0x4fbb1a(new Error(_0xd44e('0x79')));}if(_0x51f487[_0xd44e('0x45')]===_0xd44e('0x7a')){if(_0xd44e('0x24')==typeof _0x51f487[_0xd44e('0x78')][_0xd44e('0x7b')]){return _0x4fbb1a(new Error(_0xd44e('0x7c')));}if(_0xd44e('0x24')==typeof _0x51f487[_0xd44e('0x78')][_0xd44e('0x7b')][_0xd44e('0x7d')]&&_0xd44e('0x24')==typeof _0x51f487['parameters']['views'][_0xd44e('0x7e')]){return _0x4fbb1a(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x51f487['type']===_0xd44e('0x7f')){if('undefined'==typeof _0x51f487['parameters'][_0xd44e('0x80')]){return _0x4fbb1a(new Error(_0xd44e('0x81')));}if(_0xd44e('0x24')==typeof _0x51f487[_0xd44e('0x78')][_0xd44e('0x82')]){return _0x4fbb1a(new Error(_0xd44e('0x83')));}}else{return _0x4fbb1a(new Error(_0xd44e('0x84')));}var _0x557f79=_0x51f487[_0xd44e('0x46')];var _0x2d5db9=_0x51f487[_0xd44e('0x85')];var _0x5ee4e3=_0x51f487[_0xd44e('0x45')];var _0x25990d=_0x51f487['sidebar']?_0x51f487[_0xd44e('0x86')]:_0xd44e('0x87');var _0x5cc7f1=_0x51f487['icon']?_0x51f487[_0xd44e('0x88')]:_0xd44e('0x89');var _0xc2e44f='';var _0x51117c='';var _0x32214f='';var _0x6f158e='';var _0x5bde0b=_0x51f487[_0xd44e('0x76')];if(_0x5ee4e3===_0xd44e('0x7a')){if(_0xd44e('0x24')!=typeof _0x51f487[_0xd44e('0x78')][_0xd44e('0x7b')][_0xd44e('0x7d')]){var _0xc645de=_0x51f487[_0xd44e('0x78')][_0xd44e('0x7b')][_0xd44e('0x7d')];if(!/^(f|ht)tps?:\/\//i[_0xd44e('0x8a')](_0xc645de)){_0xc2e44f=path[_0xd44e('0x4f')](_0xd44e('0x8b'),_0xcbcb3d,_0x2fc3f0[0x0],_0xc645de);}else{_0xc2e44f=_0xc645de;}}else{logger[_0xd44e('0x65')](_0xd44e('0x8c'));}if('undefined'!=typeof _0x51f487[_0xd44e('0x78')]['views'][_0xd44e('0x7e')]){var _0x1dbdd6=_0x51f487[_0xd44e('0x78')]['views'][_0xd44e('0x7e')];if(!/^(f|ht)tps?:\/\//i[_0xd44e('0x8a')](_0x1dbdd6)){_0x51117c=path['join'](_0xd44e('0x8b'),_0xcbcb3d,_0x2fc3f0[0x0],_0x1dbdd6);}else{_0x51117c=_0x1dbdd6;}}else{logger[_0xd44e('0x65')](_0xd44e('0x8d'));}}else if(_0x5ee4e3===_0xd44e('0x7f')){_0x32214f=_0x51f487[_0xd44e('0x78')][_0xd44e('0x80')];_0x6f158e=_0x51f487[_0xd44e('0x78')][_0xd44e('0x82')];if(_0xd44e('0x24')!=typeof _0x51f487[_0xd44e('0x78')]['views']){if(_0xd44e('0x24')!=typeof _0x51f487[_0xd44e('0x78')][_0xd44e('0x7b')][_0xd44e('0x7d')]){var _0xc645de=_0x51f487[_0xd44e('0x78')][_0xd44e('0x7b')][_0xd44e('0x7d')];if(!/^(f|ht)tps?:\/\//i[_0xd44e('0x8a')](_0xc645de)){_0xc2e44f=path['join']('plugins',_0xcbcb3d,_0x2fc3f0[0x0],_0xc645de);}else{_0xc2e44f=_0xc645de;}}if('undefined'!=typeof _0x51f487[_0xd44e('0x78')][_0xd44e('0x7b')]['agent']){var _0x1dbdd6=_0x51f487[_0xd44e('0x78')][_0xd44e('0x7b')][_0xd44e('0x7e')];if(!/^(f|ht)tps?:\/\//i[_0xd44e('0x8a')](_0x1dbdd6)){_0x51117c=path[_0xd44e('0x4f')](_0xd44e('0x8b'),_0xcbcb3d,_0x2fc3f0[0x0],_0x1dbdd6);}else{_0x51117c=_0x1dbdd6;}}}}var _0x7cbefa={'name':_0x557f79,'description':_0x2d5db9,'path':path[_0xd44e('0x4f')](_0xcbcb3d,_0x2fc3f0[0x0]),'type':_0x5ee4e3,'sidebar':_0x25990d,'icon':_0x5cc7f1,'adminUrl':_0xc2e44f,'agentUrl':_0x51117c,'scriptName':_0x32214f,'scriptPath':_0x6f158e,'version':_0x5bde0b};removeReferences(_0x5c2cdd,null);return db['Plugin']['create'](_0x7cbefa)[_0xd44e('0x28')](function(_0x15796a){var _0x41114d={'role':_0xd0948f[_0xd44e('0x8e')][_0xd44e('0x8f')],'userProfileId':_0xd0948f[_0xd44e('0x8e')][_0xd44e('0x90')]};if(!_0x41114d)throw new Error(_0xd44e('0x91'));if(_0x41114d['role']===_0xd44e('0x92')){var _0x11f642=_0x15796a['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xd44e('0x2a'),'userProfileId':_0x41114d[_0xd44e('0x90')]},'raw':!![]})[_0xd44e('0x28')](function(_0x3fde57){if(_0x3fde57&&_0x3fde57[_0xd44e('0x93')]===0x0){return db['UserProfileResource']['create']({'name':_0x11f642[_0xd44e('0x46')],'resourceId':_0x11f642['id'],'type':_0x3fde57['name'],'sectionId':_0x3fde57['id']},{})[_0xd44e('0x28')](function(){return _0x15796a;});}else{return _0x15796a;}})[_0xd44e('0x4b')](function(_0x3248d1){logger['error'](_0xd44e('0x94'),_0x3248d1);throw _0x3248d1;});}return _0x15796a;})[_0xd44e('0x28')](respondWithResult(_0x2ae8ee,null))[_0xd44e('0x4b')](handleError(_0x2ae8ee,null));}});}catch(_0x105410){_0x2ae8ee['status'](0x1f4)[_0xd44e('0x95')](_0x105410);}};function removeReferences(_0x37edbb,_0x10cc71){try{if(_0x37edbb){fs[_0xd44e('0x64')](_0x37edbb);logger[_0xd44e('0x65')]('Zip\x20archive\x20removed');}if(_0x10cc71){rimraf(_0x10cc71,function(){});logger[_0xd44e('0x65')](_0xd44e('0x96'));}}catch(_0x1c98b4){logger[_0xd44e('0x2e')](_0x1c98b4);}}exports[_0xd44e('0x97')]=function(_0x485aab,_0x10d7fb,_0x8a0659){return db[_0xd44e('0x32')]['find']({'where':{'id':_0x485aab[_0xd44e('0x4d')]['id']}})[_0xd44e('0x28')](handleEntityNotFound(_0x10d7fb,null))[_0xd44e('0x28')](saveUpdates(_0x485aab['body'],null))[_0xd44e('0x28')](respondWithResult(_0x10d7fb,null))[_0xd44e('0x4b')](handleError(_0x10d7fb,null));};exports['delete']=function(_0x2f43ee,_0x4c00e5,_0x5397ef){return db['Plugin'][_0xd44e('0x4e')]({'where':{'id':_0x2f43ee[_0xd44e('0x4d')]['id']}})[_0xd44e('0x28')](function(_0x26a554){if(_0x26a554){return _0x26a554[_0xd44e('0x2c')]();}})[_0xd44e('0x28')](function(_0x591564){rimraf(path['join'](config['root'],_0xd44e('0x51'),path[_0xd44e('0x98')](_0x591564[_0xd44e('0x6')])),function(){});return _0x591564;})[_0xd44e('0x28')](handleEntityNotFound(_0x4c00e5,null))[_0xd44e('0x28')](respondWithStatusCode(_0x4c00e5,null))['catch'](handleError(_0x4c00e5,null));};exports[_0xd44e('0x99')]=function(_0x392ef6,_0x3b20d6,_0x522859){return BPromise[_0xd44e('0x9a')]()[_0xd44e('0x28')](function(){if(!_0x392ef6[_0xd44e('0x37')][_0xd44e('0x6')]){throw new Error(_0xd44e('0x9b'));}if(!_0x392ef6['query'][_0xd44e('0x9c')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x501729=_0x392ef6['query'][_0xd44e('0x9d')]?_0x392ef6['query'][_0xd44e('0x9d')]+':'+_0x392ef6[_0xd44e('0x37')][_0xd44e('0x9c')]:_0xd44e('0x9e')+_0x392ef6[_0xd44e('0x37')][_0xd44e('0x9c')];var _0x41fe9c=_0x392ef6['query'][_0xd44e('0x22')]?_0x392ef6[_0xd44e('0x37')][_0xd44e('0x22')]:!![];var _0x2101ca=_0x392ef6[_0xd44e('0x37')][_0xd44e('0x9f')]?_0x392ef6[_0xd44e('0x37')][_0xd44e('0x9f')]:null;var _0x3705d4={'method':_0x392ef6[_0xd44e('0xa0')],'uri':util[_0xd44e('0x52')]('%s%s',_0x501729,_0x392ef6['query']['path']),'json':_0x41fe9c,'resolveWithFullResponse':!![],'encoding':_0x2101ca,'qs':_0x392ef6[_0xd44e('0x37')]};if(_0x392ef6[_0xd44e('0xa1')]){_0x3705d4[_0xd44e('0xa1')]=_0x392ef6[_0xd44e('0xa1')];if(_0x3705d4['headers'][_0xd44e('0xa2')]){delete _0x3705d4['headers'][_0xd44e('0xa2')];}}if(_0x3705d4['headers'][_0xd44e('0xa3')]){delete _0x3705d4[_0xd44e('0xa1')][_0xd44e('0xa3')];}return rp(_0x3705d4);})[_0xd44e('0x28')](function(_0x2371ef){if(_0x2371ef){_0x3b20d6[_0xd44e('0x26')](_0x2371ef[_0xd44e('0xa1')]);logger['info'](_0x2371ef[_0xd44e('0x8e')]);if(_[_0xd44e('0xa4')](_0x392ef6[_0xd44e('0x37')][_0xd44e('0x6')],'download')&&_0x2371ef['statusCode']==0x1f4){return _0x3b20d6['sendStatus'](_0x2371ef['statusCode']);}else{return _0x3b20d6[_0xd44e('0x20')](_0x2371ef['statusCode'])[_0xd44e('0x95')](_0x2371ef['body']);}}else{return _0x3b20d6[_0xd44e('0x2d')](0xc8);}})[_0xd44e('0x4b')](handleError(_0x3b20d6,null));};exports[_0xd44e('0xa5')]=function(_0x43d7c1,_0x3e9a9e,_0x28dff3){return BPromise[_0xd44e('0x9a')]()[_0xd44e('0x28')](function(){if(!_0x43d7c1[_0xd44e('0x37')]['path']){throw new Error(_0xd44e('0x9b'));}if(!_0x43d7c1['query']['port']){throw new Error(_0xd44e('0xa6'));}var _0x2266e0=_0x43d7c1[_0xd44e('0x37')][_0xd44e('0x9d')]?_0x43d7c1[_0xd44e('0x37')][_0xd44e('0x9d')]+':'+_0x43d7c1['query']['port']:_0xd44e('0x9e')+_0x43d7c1[_0xd44e('0x37')]['port'];var _0x18e425=_0x43d7c1['query']['json']?_0x43d7c1[_0xd44e('0x37')]['json']:!![];var _0x39ee29=_0x43d7c1[_0xd44e('0x37')]['encoding']?_0x43d7c1[_0xd44e('0x37')][_0xd44e('0x9f')]:null;var _0x2b442a={'method':_0x43d7c1[_0xd44e('0xa0')],'uri':util['format'](_0xd44e('0xa7'),_0x2266e0,_0x43d7c1['query'][_0xd44e('0x6')]),'json':_0x18e425,'resolveWithFullResponse':!![],'encoding':_0x39ee29,'body':_0x43d7c1[_0xd44e('0x8e')]};if(_0x43d7c1[_0xd44e('0xa1')]){_0x2b442a['headers']=_0x43d7c1[_0xd44e('0xa1')];if(_0x2b442a[_0xd44e('0xa1')][_0xd44e('0xa2')]){delete _0x2b442a[_0xd44e('0xa1')]['content-length'];}}if(_0x2b442a[_0xd44e('0xa1')][_0xd44e('0xa3')]){delete _0x2b442a[_0xd44e('0xa1')][_0xd44e('0xa3')];}return rp(_0x2b442a);})[_0xd44e('0x28')](function(_0x8f4a37){if(_0x8f4a37){_0x3e9a9e[_0xd44e('0x26')](_0x8f4a37[_0xd44e('0xa1')]);logger[_0xd44e('0x65')](_0x8f4a37[_0xd44e('0x8e')]);return _0x3e9a9e[_0xd44e('0x20')](_0x8f4a37[_0xd44e('0xa8')])[_0xd44e('0x95')](_0x8f4a37[_0xd44e('0x8e')]);}else{return _0x3e9a9e[_0xd44e('0x2d')](0xc8);}})[_0xd44e('0x4b')](handleError(_0x3e9a9e,null));};
\ No newline at end of file
+var _0x813b=['Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','readdirSync','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','parameters','Invalid\x20manifest:\x20parameters\x20missing','Invalid\x20manifest:\x20views\x20missing','views','agent','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','html','admin','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','create','unlinkSync','Zip\x20archive\x20removed','delete','dirname','webhookGet','resolve','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s','headers','content-length','content-type','statusCode','webhookPost','\x27PATH\x27\x20parameter\x20not\x20specified','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','archiver','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','json','offset','limit','undefined','count','status','set','Content-Range','reject','save','update','then','destroy','Plugins','UserProfileResource','end','error','stack','name','send','index','Plugin','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','merge','VIRTUAL','options','includeAll','findAll','rows','params','length','include','find','catch','download','path','join','format','createWriteStream','zip','warning','code','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','root','server/files/plugins','node_modules/**/*','basename','attachments/**/*','finalize','Plugin\x20not\x20found','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','info','Download\x20completed','upload','file','extname','filename'];(function(_0x5146f3,_0xe728c4){var _0x2672bb=function(_0x5a4a34){while(--_0x5a4a34){_0x5146f3['push'](_0x5146f3['shift']());}};_0x2672bb(++_0xe728c4);}(_0x813b,0xf0));var _0xb813=function(_0x41080d,_0x213a8c){_0x41080d=_0x41080d-0x0;var _0x5f2f4d=_0x813b[_0x41080d];return _0x5f2f4d;};'use strict';var emlformat=require(_0xb813('0x0'));var rimraf=require(_0xb813('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb813('0x2'));var rp=require(_0xb813('0x3'));var moment=require(_0xb813('0x4'));var BPromise=require(_0xb813('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xb813('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb813('0x7'));var _=require(_0xb813('0x8'));var squel=require(_0xb813('0x9'));var crypto=require(_0xb813('0xa'));var jsforce=require(_0xb813('0xb'));var deskjs=require(_0xb813('0xc'));var toCsv=require(_0xb813('0x6'));var querystring=require(_0xb813('0xd'));var Papa=require(_0xb813('0xe'));var extract=require(_0xb813('0xf'));var rimraf=require(_0xb813('0x1'));var archiver=require(_0xb813('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb813('0x11'));var hardwareService=require(_0xb813('0x12'));var logger=require(_0xb813('0x13'))(_0xb813('0x14'));var utils=require(_0xb813('0x15'));var config=require(_0xb813('0x16'));var licenseUtil=require(_0xb813('0x17'));var db=require(_0xb813('0x18'))['db'];config[_0xb813('0x19')]=_[_0xb813('0x1a')](config[_0xb813('0x19')],{'host':_0xb813('0x1b'),'port':0x18eb});var socket=require(_0xb813('0x1c'))(new Redis(config['redis']));require(_0xb813('0x1d'))[_0xb813('0x1e')](socket);function respondWithStatusCode(_0x14ee61,_0x5319f0){_0x5319f0=_0x5319f0||0xcc;return function(_0x4f6b05){if(_0x4f6b05){return _0x14ee61[_0xb813('0x1f')](_0x5319f0);}return _0x14ee61['status'](_0x5319f0)['end']();};}function respondWithResult(_0x1672c3,_0x584985){_0x584985=_0x584985||0xc8;return function(_0x51f684){if(_0x51f684){return _0x1672c3['status'](_0x584985)[_0xb813('0x20')](_0x51f684);}};}function respondWithFilteredResult(_0x3ee94c,_0x3a6868){return function(_0xc64a9c){if(_0xc64a9c){var _0x7382d1=typeof _0x3a6868[_0xb813('0x21')]==='undefined'&&typeof _0x3a6868[_0xb813('0x22')]===_0xb813('0x23');var _0x345105=_0xc64a9c['count'];var _0x5aefca=_0x7382d1?0x0:_0x3a6868[_0xb813('0x21')];var _0x4cbbc7=_0x7382d1?_0xc64a9c[_0xb813('0x24')]:_0x3a6868[_0xb813('0x21')]+_0x3a6868[_0xb813('0x22')];var _0x2b6f79;if(_0x4cbbc7>=_0x345105){_0x4cbbc7=_0x345105;_0x2b6f79=0xc8;}else{_0x2b6f79=0xce;}_0x3ee94c[_0xb813('0x25')](_0x2b6f79);return _0x3ee94c[_0xb813('0x26')](_0xb813('0x27'),_0x5aefca+'-'+_0x4cbbc7+'/'+_0x345105)[_0xb813('0x20')](_0xc64a9c);}return null;};}function patchUpdates(_0xce7434){return function(_0x88f6d){try{jsonpatch['apply'](_0x88f6d,_0xce7434,!![]);}catch(_0x229e71){return BPromise[_0xb813('0x28')](_0x229e71);}return _0x88f6d[_0xb813('0x29')]();};}function saveUpdates(_0x207bce,_0x3772b2){return function(_0x74a902){if(_0x74a902){return _0x74a902[_0xb813('0x2a')](_0x207bce)[_0xb813('0x2b')](function(_0x2466d8){return _0x2466d8;});}return null;};}function removeEntity(_0x3946c7,_0x2976b1){return function(_0x556d14){if(_0x556d14){return _0x556d14[_0xb813('0x2c')]()[_0xb813('0x2b')](function(){var _0x2960ad=_0x556d14['get']({'plain':!![]});var _0x5dbbcb=_0xb813('0x2d');return db[_0xb813('0x2e')][_0xb813('0x2c')]({'where':{'type':_0x5dbbcb,'resourceId':_0x2960ad['id']}})['then'](function(){return _0x556d14;});})[_0xb813('0x2b')](function(){_0x3946c7[_0xb813('0x25')](0xcc)[_0xb813('0x2f')]();});}};}function handleEntityNotFound(_0x34b1ef,_0x1edae3){return function(_0x563bf1){if(!_0x563bf1){_0x34b1ef[_0xb813('0x1f')](0x194);}return _0x563bf1;};}function handleError(_0x1c987f,_0x1a3c11){_0x1a3c11=_0x1a3c11||0x1f4;return function(_0x2060d8){logger[_0xb813('0x30')](_0x2060d8[_0xb813('0x31')]);if(_0x2060d8[_0xb813('0x32')]){delete _0x2060d8[_0xb813('0x32')];}_0x1c987f['status'](_0x1a3c11)[_0xb813('0x33')](_0x2060d8);};}exports[_0xb813('0x34')]=function(_0x253b7c,_0xdd5341){var _0x16f388={},_0x1ef104={},_0xe5056d={'count':0x0,'rows':[]};var _0x2f6a9a=_['map'](db[_0xb813('0x35')][_0xb813('0x36')],function(_0x30edee){return{'name':_0x30edee[_0xb813('0x37')],'type':_0x30edee[_0xb813('0x38')][_0xb813('0x39')]};});_0x1ef104[_0xb813('0x3a')]=_[_0xb813('0x3b')](_0x2f6a9a,'name');_0x1ef104[_0xb813('0x3c')]=_[_0xb813('0x3d')](_0x253b7c[_0xb813('0x3c')]);_0x1ef104[_0xb813('0x3e')]=_[_0xb813('0x3f')](_0x1ef104[_0xb813('0x3a')],_0x1ef104[_0xb813('0x3c')]);_0x16f388['attributes']=_[_0xb813('0x3f')](_0x1ef104[_0xb813('0x3a')],qs[_0xb813('0x40')](_0x253b7c['query'][_0xb813('0x40')]));_0x16f388[_0xb813('0x41')]=_0x16f388[_0xb813('0x41')]['length']?_0x16f388[_0xb813('0x41')]:_0x1ef104[_0xb813('0x3a')];if(!_0x253b7c['query']['hasOwnProperty'](_0xb813('0x42'))){_0x16f388[_0xb813('0x22')]=qs[_0xb813('0x22')](_0x253b7c['query']['limit']);_0x16f388[_0xb813('0x21')]=qs[_0xb813('0x21')](_0x253b7c[_0xb813('0x3c')][_0xb813('0x21')]);}_0x16f388[_0xb813('0x43')]=qs[_0xb813('0x44')](_0x253b7c[_0xb813('0x3c')][_0xb813('0x44')]);_0x16f388[_0xb813('0x45')]=qs['filters'](_['pick'](_0x253b7c[_0xb813('0x3c')],_0x1ef104[_0xb813('0x3e')]),_0x2f6a9a);if(_0x253b7c['query']['filter']){_0x16f388[_0xb813('0x45')]=_[_0xb813('0x46')](_0x16f388[_0xb813('0x45')],{'$or':_[_0xb813('0x3b')](_0x2f6a9a,function(_0x6adb){if(_0x6adb['type']!==_0xb813('0x47')){var _0x48f883={};_0x48f883[_0x6adb[_0xb813('0x32')]]={'$like':'%'+_0x253b7c[_0xb813('0x3c')]['filter']+'%'};return _0x48f883;}})});}_0x16f388=_[_0xb813('0x46')]({},_0x16f388,_0x253b7c[_0xb813('0x48')]);var _0x212f25={'where':_0x16f388[_0xb813('0x45')]};return db[_0xb813('0x35')][_0xb813('0x24')](_0x212f25)[_0xb813('0x2b')](function(_0x16bdbc){_0xe5056d[_0xb813('0x24')]=_0x16bdbc;if(_0x253b7c[_0xb813('0x3c')][_0xb813('0x49')]){_0x16f388['include']=[{'all':!![]}];}return db['Plugin'][_0xb813('0x4a')](_0x16f388);})[_0xb813('0x2b')](function(_0x252223){_0xe5056d[_0xb813('0x4b')]=_0x252223;return _0xe5056d;})[_0xb813('0x2b')](respondWithFilteredResult(_0xdd5341,_0x16f388))['catch'](handleError(_0xdd5341,null));};exports['show']=function(_0x10df9f,_0x382a9f){var _0x2902be={'raw':!![],'where':{'id':_0x10df9f[_0xb813('0x4c')]['id']}},_0xafcd18={};_0xafcd18[_0xb813('0x3a')]=_[_0xb813('0x3d')](db['Plugin']['rawAttributes']);_0xafcd18['query']=_[_0xb813('0x3d')](_0x10df9f[_0xb813('0x3c')]);_0xafcd18[_0xb813('0x3e')]=_[_0xb813('0x3f')](_0xafcd18[_0xb813('0x3a')],_0xafcd18[_0xb813('0x3c')]);_0x2902be[_0xb813('0x41')]=_[_0xb813('0x3f')](_0xafcd18['model'],qs[_0xb813('0x40')](_0x10df9f['query']['fields']));_0x2902be[_0xb813('0x41')]=_0x2902be['attributes'][_0xb813('0x4d')]?_0x2902be[_0xb813('0x41')]:_0xafcd18[_0xb813('0x3a')];if(_0x10df9f[_0xb813('0x3c')][_0xb813('0x49')]){_0x2902be[_0xb813('0x4e')]=[{'all':!![]}];}_0x2902be=_['merge']({},_0x2902be,_0x10df9f[_0xb813('0x48')]);return db[_0xb813('0x35')][_0xb813('0x4f')](_0x2902be)[_0xb813('0x2b')](handleEntityNotFound(_0x382a9f,null))[_0xb813('0x2b')](respondWithResult(_0x382a9f,null))[_0xb813('0x50')](handleError(_0x382a9f,null));};exports[_0xb813('0x51')]=function(_0x3a5467,_0x4296ae,_0x5c457b){return db['Plugin'][_0xb813('0x4f')]({'where':{'id':_0x3a5467[_0xb813('0x4c')]['id']},'attributes':[_0xb813('0x32'),_0xb813('0x52')],'raw':!![]})[_0xb813('0x2b')](handleEntityNotFound(_0x4296ae,null))[_0xb813('0x2b')](function(_0xfca1fd){if(_0xfca1fd){var _0x177e4c=path[_0xb813('0x53')](config['root'],'server/files/plugins',util[_0xb813('0x54')]('%s.zip',path['basename'](_0xfca1fd[_0xb813('0x52')])));var _0x399215=fs[_0xb813('0x55')](_0x177e4c);var _0x2e17cd=archiver(_0xb813('0x56'),{'zlib':{'level':0x9}});_0x2e17cd['on'](_0xb813('0x57'),function(_0x5a44d1){if(_0x5a44d1[_0xb813('0x58')]==='ENOENT'){logger['error'](_0x5a44d1);}else{throw new db[(_0xb813('0x59'))][(_0xb813('0x5a'))](_0xb813('0x5b'));}});_0x2e17cd['on'](_0xb813('0x30'),function(_0x2db29a){throw new db[(_0xb813('0x59'))][(_0xb813('0x5a'))](_0xb813('0x5b'));});_0x2e17cd[_0xb813('0x5c')](_0x399215);_0x2e17cd[_0xb813('0x5d')](_0xb813('0x5e'),{'cwd':path[_0xb813('0x53')](config[_0xb813('0x5f')],_0xb813('0x60'),path['dirname'](_0xfca1fd['path'])),'ignore':[path[_0xb813('0x53')](path['basename'](_0xfca1fd[_0xb813('0x52')]),_0xb813('0x61')),path[_0xb813('0x53')](path[_0xb813('0x62')](_0xfca1fd['path']),_0xb813('0x63'))],'nodir':!![]})[_0xb813('0x64')]();_0x399215['on']('close',function(){if(!fs['existsSync'](_0x177e4c)){throw new db[(_0xb813('0x59'))][(_0xb813('0x5a'))](_0xb813('0x65'));}return _0x4296ae[_0xb813('0x51')](_0x177e4c,util[_0xb813('0x54')](_0xb813('0x66'),path['basename'](_0xfca1fd[_0xb813('0x52')])),function(_0x37074c){if(_0x37074c){throw new db[(_0xb813('0x59'))][(_0xb813('0x5a'))](_0xb813('0x67'));}fs['unlinkSync'](_0x177e4c);logger[_0xb813('0x68')](_0xb813('0x69'));logger['info']('Temporary\x20file\x20removed');});});}return null;})['catch'](handleError(_0x4296ae,null));};exports[_0xb813('0x6a')]=function(_0xbc78e7,_0x3f4615,_0x3227ca){var _0x3dfba7=path[_0xb813('0x62')](_0xbc78e7[_0xb813('0x6b')]['filename'],path[_0xb813('0x6c')](_0xbc78e7[_0xb813('0x6b')][_0xb813('0x6d')]));var _0x10036f=path[_0xb813('0x53')](config['root'],_0xb813('0x60'),_0xbc78e7[_0xb813('0x6b')][_0xb813('0x6d')]);var _0x1d61d8=path[_0xb813('0x53')](config[_0xb813('0x5f')],'server/files/plugins',_0x3dfba7);logger[_0xb813('0x68')](_0xb813('0x6e'),_0x10036f);logger[_0xb813('0x68')](_0xb813('0x6f'),_0x1d61d8);try{fs[_0xb813('0x70')](_0x10036f,parseInt(_0xb813('0x71'),0x8));extract(_0x10036f,{'dir':_0x1d61d8},function(_0x69577d){if(_0x69577d){logger['error'](_0x69577d);handleError(_0x69577d,!![]);};var _0x2961f6=fs['readdirSync'](_0x1d61d8);if(_0x2961f6[_0xb813('0x4d')]>0x1){removeReferences(_0x10036f,_0x1d61d8);logger['error'](_0xb813('0x72'));return _0x3227ca(new Error(_0xb813('0x72')));}var _0x1532d4=fs[_0xb813('0x73')](path[_0xb813('0x53')](_0x1d61d8,_0x2961f6[0x0]));if(_0x1532d4[_0xb813('0x74')]()){removeReferences(_0x10036f,_0x1d61d8);logger[_0xb813('0x30')](_0xb813('0x72'));return _0x3227ca(new Error(_0xb813('0x72')));}if(_0x1532d4[_0xb813('0x75')]()){var _0x59963c=fs[_0xb813('0x76')](path['join'](_0x1d61d8,_0x2961f6[0x0]));if(_0x59963c[_0xb813('0x4d')]===0x0){removeReferences(_0x10036f,_0x1d61d8);logger[_0xb813('0x30')](_0xb813('0x72'));return _0x3227ca(new Error('Invalid\x20plugin\x20structure'));}var _0x3dd640=_0x59963c[_0xb813('0x77')](function(_0xb1cce7){return _0xb1cce7===_0xb813('0x78');});if(!_0x3dd640){return _0x3227ca(new Error(_0xb813('0x79')));}var _0x1be0a6=fs[_0xb813('0x7a')](path[_0xb813('0x53')](_0x1d61d8,_0x2961f6[0x0],'manifest.json'));var _0x39820a=JSON['parse'](_0x1be0a6);if('undefined'==typeof _0x39820a[_0xb813('0x32')]){return _0x3227ca(new Error(_0xb813('0x7b')));}if(_0xb813('0x23')==typeof _0x39820a[_0xb813('0x38')]){return _0x3227ca(new Error(_0xb813('0x7c')));}if(_0xb813('0x23')==typeof _0x39820a[_0xb813('0x7d')]){return _0x3227ca(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if('undefined'==typeof _0x39820a[_0xb813('0x7e')]){return _0x3227ca(new Error(_0xb813('0x7f')));}if(_0x39820a[_0xb813('0x38')]==='html'){if(_0xb813('0x23')==typeof _0x39820a[_0xb813('0x7e')]['views']){return _0x3227ca(new Error(_0xb813('0x80')));}if(_0xb813('0x23')==typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')]['admin']&&'undefined'==typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x82')]){return _0x3227ca(new Error(_0xb813('0x83')));}}else if(_0x39820a['type']===_0xb813('0x84')){if('undefined'==typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x85')]){return _0x3227ca(new Error(_0xb813('0x86')));}if('undefined'==typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x87')]){return _0x3227ca(new Error(_0xb813('0x88')));}}else{return _0x3227ca(new Error(_0xb813('0x89')));}var _0x5bff0d=_0x39820a[_0xb813('0x32')];var _0x228e94=_0x39820a[_0xb813('0x8a')];var _0x1995db=_0x39820a[_0xb813('0x38')];var _0x341e81=_0x39820a[_0xb813('0x8b')]?_0x39820a[_0xb813('0x8b')]:_0xb813('0x8c');var _0x53876d=_0x39820a[_0xb813('0x8d')]?_0x39820a[_0xb813('0x8d')]:_0xb813('0x8e');var _0x3fdfa9='';var _0x5e28e0='';var _0x2c2034='';var _0x2afb74='';var _0x462d65=_0x39820a[_0xb813('0x7d')];if(_0x1995db===_0xb813('0x8f')){if(_0xb813('0x23')!=typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x90')]){var _0x48db79=_0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x90')];if(!/^(f|ht)tps?:\/\//i[_0xb813('0x91')](_0x48db79)){_0x3fdfa9=path[_0xb813('0x53')](_0xb813('0x92'),_0x3dfba7,_0x2961f6[0x0],_0x48db79);}else{_0x3fdfa9=_0x48db79;}}else{logger['info'](_0xb813('0x93'));}if('undefined'!=typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')]['agent']){var _0x19b5bc=_0x39820a[_0xb813('0x7e')]['views'][_0xb813('0x82')];if(!/^(f|ht)tps?:\/\//i[_0xb813('0x91')](_0x19b5bc)){_0x5e28e0=path[_0xb813('0x53')](_0xb813('0x92'),_0x3dfba7,_0x2961f6[0x0],_0x19b5bc);}else{_0x5e28e0=_0x19b5bc;}}else{logger['info'](_0xb813('0x94'));}}else if(_0x1995db===_0xb813('0x84')){_0x2c2034=_0x39820a[_0xb813('0x7e')]['scriptName'];_0x2afb74=_0x39820a[_0xb813('0x7e')][_0xb813('0x87')];if('undefined'!=typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')]){if(_0xb813('0x23')!=typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x90')]){var _0x48db79=_0x39820a[_0xb813('0x7e')]['views']['admin'];if(!/^(f|ht)tps?:\/\//i[_0xb813('0x91')](_0x48db79)){_0x3fdfa9=path['join'](_0xb813('0x92'),_0x3dfba7,_0x2961f6[0x0],_0x48db79);}else{_0x3fdfa9=_0x48db79;}}if(_0xb813('0x23')!=typeof _0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x82')]){var _0x19b5bc=_0x39820a[_0xb813('0x7e')][_0xb813('0x81')][_0xb813('0x82')];if(!/^(f|ht)tps?:\/\//i[_0xb813('0x91')](_0x19b5bc)){_0x5e28e0=path[_0xb813('0x53')](_0xb813('0x92'),_0x3dfba7,_0x2961f6[0x0],_0x19b5bc);}else{_0x5e28e0=_0x19b5bc;}}}}var _0x501fa2={'name':_0x5bff0d,'description':_0x228e94,'path':path[_0xb813('0x53')](_0x3dfba7,_0x2961f6[0x0]),'type':_0x1995db,'sidebar':_0x341e81,'icon':_0x53876d,'adminUrl':_0x3fdfa9,'agentUrl':_0x5e28e0,'scriptName':_0x2c2034,'scriptPath':_0x2afb74,'version':_0x462d65};removeReferences(_0x10036f,null);return db['Plugin']['create'](_0x501fa2)[_0xb813('0x2b')](function(_0x44c9a5){var _0x3ee57c={'role':_0xbc78e7[_0xb813('0x95')]['role'],'userProfileId':_0xbc78e7[_0xb813('0x95')][_0xb813('0x96')]};if(!_0x3ee57c)throw new Error(_0xb813('0x97'));if(_0x3ee57c[_0xb813('0x98')]===_0xb813('0x99')){var _0x525ec9=_0x44c9a5[_0xb813('0x9a')]({'plain':!![]});return db[_0xb813('0x9b')][_0xb813('0x4f')]({'where':{'name':_0xb813('0x2d'),'userProfileId':_0x3ee57c[_0xb813('0x96')]},'raw':!![]})[_0xb813('0x2b')](function(_0x49e792){if(_0x49e792&&_0x49e792['autoAssociation']===0x0){return db['UserProfileResource'][_0xb813('0x9c')]({'name':_0x525ec9[_0xb813('0x32')],'resourceId':_0x525ec9['id'],'type':_0x49e792[_0xb813('0x32')],'sectionId':_0x49e792['id']},{})[_0xb813('0x2b')](function(){return _0x44c9a5;});}else{return _0x44c9a5;}})[_0xb813('0x50')](function(_0x3d9a73){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3d9a73);throw _0x3d9a73;});}return _0x44c9a5;})['then'](respondWithResult(_0x3f4615,null))[_0xb813('0x50')](handleError(_0x3f4615,null));}});}catch(_0x49bf5a){_0x3f4615[_0xb813('0x25')](0x1f4)['send'](_0x49bf5a);}};function removeReferences(_0x1df7b1,_0x19f915){try{if(_0x1df7b1){fs[_0xb813('0x9d')](_0x1df7b1);logger[_0xb813('0x68')](_0xb813('0x9e'));}if(_0x19f915){rimraf(_0x19f915,function(){});logger[_0xb813('0x68')]('Extracted\x20folder\x20removed');}}catch(_0x400ef1){logger[_0xb813('0x30')](_0x400ef1);}}exports[_0xb813('0x2a')]=function(_0x662979,_0x4e596d,_0x1a224f){return db[_0xb813('0x35')][_0xb813('0x4f')]({'where':{'id':_0x662979[_0xb813('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4e596d,null))[_0xb813('0x2b')](saveUpdates(_0x662979[_0xb813('0x95')],null))[_0xb813('0x2b')](respondWithResult(_0x4e596d,null))['catch'](handleError(_0x4e596d,null));};exports[_0xb813('0x9f')]=function(_0x4aefb2,_0x339a3a,_0x1f40be){return db[_0xb813('0x35')][_0xb813('0x4f')]({'where':{'id':_0x4aefb2[_0xb813('0x4c')]['id']}})[_0xb813('0x2b')](function(_0x29d700){if(_0x29d700){return _0x29d700[_0xb813('0x2c')]();}})[_0xb813('0x2b')](function(_0x559199){rimraf(path[_0xb813('0x53')](config[_0xb813('0x5f')],_0xb813('0x60'),path[_0xb813('0xa0')](_0x559199[_0xb813('0x52')])),function(){});return _0x559199;})[_0xb813('0x2b')](handleEntityNotFound(_0x339a3a,null))[_0xb813('0x2b')](respondWithStatusCode(_0x339a3a,null))[_0xb813('0x50')](handleError(_0x339a3a,null));};exports[_0xb813('0xa1')]=function(_0x16d235,_0x24038c,_0x726d5a){return BPromise[_0xb813('0xa2')]()[_0xb813('0x2b')](function(){if(!_0x16d235[_0xb813('0x3c')][_0xb813('0x52')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x16d235['query'][_0xb813('0xa3')]){throw new Error(_0xb813('0xa4'));}var _0x774dd8=_0x16d235[_0xb813('0x3c')][_0xb813('0xa5')]?_0x16d235['query'][_0xb813('0xa5')]+':'+_0x16d235['query'][_0xb813('0xa3')]:'http://localhost:'+_0x16d235['query']['port'];var _0x1d287a=_0x16d235[_0xb813('0x3c')][_0xb813('0x20')]?_0x16d235['query'][_0xb813('0x20')]:!![];var _0x1481a0=_0x16d235[_0xb813('0x3c')][_0xb813('0xa6')]?_0x16d235['query'][_0xb813('0xa6')]:null;var _0x2049d3={'method':_0x16d235[_0xb813('0xa7')],'uri':util['format'](_0xb813('0xa8'),_0x774dd8,_0x16d235[_0xb813('0x3c')][_0xb813('0x52')]),'json':_0x1d287a,'resolveWithFullResponse':!![],'encoding':_0x1481a0,'qs':_0x16d235[_0xb813('0x3c')]};if(_0x16d235[_0xb813('0xa9')]){_0x2049d3[_0xb813('0xa9')]=_0x16d235['headers'];if(_0x2049d3[_0xb813('0xa9')][_0xb813('0xaa')]){delete _0x2049d3['headers'][_0xb813('0xaa')];}}if(_0x2049d3[_0xb813('0xa9')][_0xb813('0xab')]){delete _0x2049d3[_0xb813('0xa9')][_0xb813('0xab')];}return rp(_0x2049d3);})['then'](function(_0x3e8692){if(_0x3e8692){_0x24038c[_0xb813('0x26')](_0x3e8692[_0xb813('0xa9')]);logger['info'](_0x3e8692['body']);if(_['endsWith'](_0x16d235[_0xb813('0x3c')][_0xb813('0x52')],_0xb813('0x51'))&&_0x3e8692['statusCode']==0x1f4){return _0x24038c[_0xb813('0x1f')](_0x3e8692[_0xb813('0xac')]);}else{return _0x24038c[_0xb813('0x25')](_0x3e8692['statusCode'])[_0xb813('0x33')](_0x3e8692[_0xb813('0x95')]);}}else{return _0x24038c[_0xb813('0x1f')](0xc8);}})['catch'](handleError(_0x24038c,null));};exports[_0xb813('0xad')]=function(_0x142e23,_0x1c4497,_0x5e02af){return BPromise[_0xb813('0xa2')]()[_0xb813('0x2b')](function(){if(!_0x142e23[_0xb813('0x3c')]['path']){throw new Error(_0xb813('0xae'));}if(!_0x142e23['query'][_0xb813('0xa3')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x322c21=_0x142e23['query'][_0xb813('0xa5')]?_0x142e23[_0xb813('0x3c')][_0xb813('0xa5')]+':'+_0x142e23[_0xb813('0x3c')][_0xb813('0xa3')]:'http://localhost:'+_0x142e23[_0xb813('0x3c')][_0xb813('0xa3')];var _0xf17d5f=_0x142e23[_0xb813('0x3c')][_0xb813('0x20')]?_0x142e23[_0xb813('0x3c')][_0xb813('0x20')]:!![];var _0x5a7f03=_0x142e23[_0xb813('0x3c')][_0xb813('0xa6')]?_0x142e23[_0xb813('0x3c')]['encoding']:null;var _0x32c622={'method':_0x142e23[_0xb813('0xa7')],'uri':util[_0xb813('0x54')]('%s%s',_0x322c21,_0x142e23[_0xb813('0x3c')][_0xb813('0x52')]),'json':_0xf17d5f,'resolveWithFullResponse':!![],'encoding':_0x5a7f03,'body':_0x142e23['body']};if(_0x142e23[_0xb813('0xa9')]){_0x32c622['headers']=_0x142e23[_0xb813('0xa9')];if(_0x32c622[_0xb813('0xa9')]['content-length']){delete _0x32c622[_0xb813('0xa9')][_0xb813('0xaa')];}}if(_0x32c622[_0xb813('0xa9')]['content-type']){delete _0x32c622['headers']['content-type'];}return rp(_0x32c622);})[_0xb813('0x2b')](function(_0x44bf8d){if(_0x44bf8d){_0x1c4497[_0xb813('0x26')](_0x44bf8d[_0xb813('0xa9')]);logger[_0xb813('0x68')](_0x44bf8d['body']);return _0x1c4497[_0xb813('0x25')](_0x44bf8d[_0xb813('0xac')])[_0xb813('0x33')](_0x44bf8d[_0xb813('0x95')]);}else{return _0x1c4497[_0xb813('0x1f')](0xc8);}})[_0xb813('0x50')](handleError(_0x1c4497,null));};
\ No newline at end of file
index d56f0ce..9232da5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04f9=['Plugin','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x292c3e,_0x12b861){var _0x1a87c6=function(_0x1f4d8c){while(--_0x1f4d8c){_0x292c3e['push'](_0x292c3e['shift']());}};_0x1a87c6(++_0x12b861);}(_0x04f9,0xb3));var _0x904f=function(_0x184d15,_0x42fd81){_0x184d15=_0x184d15-0x0;var _0x19dfa7=_0x04f9[_0x184d15];return _0x19dfa7;};'use strict';var EventEmitter=require('events');var Plugin=require(_0x904f('0x0'))['db'][_0x904f('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0x904f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x904f('0x3'),'afterDestroy':_0x904f('0x4')};function emitEvent(_0x123003){return function(_0x8cc251,_0x243fb2,_0x43a7b4){PluginEvents['emit'](_0x123003+':'+_0x8cc251['id'],_0x8cc251);PluginEvents[_0x904f('0x5')](_0x123003,_0x8cc251);_0x43a7b4(null);};}for(var e in events){if(events[_0x904f('0x6')](e)){var event=events[e];Plugin[_0x904f('0x7')](e,emitEvent(event));}}module[_0x904f('0x8')]=PluginEvents;
\ No newline at end of file
+var _0xc838=['../../mysqldb','Plugin','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc838,0xbd));var _0x8c83=function(_0x49a87f,_0x12bc55){_0x49a87f=_0x49a87f-0x0;var _0x2e3956=_0xc838[_0x49a87f];return _0x2e3956;};'use strict';var EventEmitter=require(_0x8c83('0x0'));var Plugin=require(_0x8c83('0x1'))['db'][_0x8c83('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x8c83('0x3')](0x0);var events={'afterCreate':_0x8c83('0x4'),'afterUpdate':_0x8c83('0x5'),'afterDestroy':_0x8c83('0x6')};function emitEvent(_0x25a345){return function(_0x2bb018,_0x85c36d,_0x37a3d9){PluginEvents[_0x8c83('0x7')](_0x25a345+':'+_0x2bb018['id'],_0x2bb018);PluginEvents[_0x8c83('0x7')](_0x25a345,_0x2bb018);_0x37a3d9(null);};}for(var e in events){if(events[_0x8c83('0x8')](e)){var event=events[e];Plugin[_0x8c83('0x9')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index 36f5b6c..a5be389 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd535=['request-promise','rimraf','../../config/environment','./plugin.attributes','define','Plugin','plugins','lodash','util','../../config/logger','moment'];(function(_0x4d5bb6,_0x2e502f){var _0x4d3317=function(_0x1b2210){while(--_0x1b2210){_0x4d5bb6['push'](_0x4d5bb6['shift']());}};_0x4d3317(++_0x2e502f);}(_0xd535,0xe3));var _0x5d53=function(_0x3c9c91,_0x44a2cf){_0x3c9c91=_0x3c9c91-0x0;var _0x3f04b1=_0xd535[_0x3c9c91];return _0x3f04b1;};'use strict';var _=require(_0x5d53('0x0'));var util=require(_0x5d53('0x1'));var logger=require(_0x5d53('0x2'))('api');var moment=require(_0x5d53('0x3'));var BPromise=require('bluebird');var rp=require(_0x5d53('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5d53('0x5'));var config=require(_0x5d53('0x6'));var attributes=require(_0x5d53('0x7'));module['exports']=function(_0x345fea,_0x2f37bd){return _0x345fea[_0x5d53('0x8')](_0x5d53('0x9'),attributes,{'tableName':_0x5d53('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ad6=['./plugin.attributes','Plugin','plugins','lodash','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x56feee,_0x4d26c7){var _0x554d3e=function(_0x4f25bf){while(--_0x4f25bf){_0x56feee['push'](_0x56feee['shift']());}};_0x554d3e(++_0x4d26c7);}(_0x5ad6,0xfd));var _0x65ad=function(_0x55a89e,_0x1a05ab){_0x55a89e=_0x55a89e-0x0;var _0x3aa2bd=_0x5ad6[_0x55a89e];return _0x3aa2bd;};'use strict';var _=require(_0x65ad('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x65ad('0x1'));var BPromise=require(_0x65ad('0x2'));var rp=require(_0x65ad('0x3'));var fs=require('fs');var path=require(_0x65ad('0x4'));var rimraf=require(_0x65ad('0x5'));var config=require(_0x65ad('0x6'));var attributes=require(_0x65ad('0x7'));module['exports']=function(_0x577aac,_0x569b64){return _0x577aac['define'](_0x65ad('0x8'),attributes,{'tableName':_0x65ad('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fead4c9..bb81be1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddb5=['message','result','catch','CreatePlugin','create','body','options','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','localhost','redis','register','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x74962,_0x283a33){var _0x274859=function(_0x284568){while(--_0x284568){_0x74962['push'](_0x74962['shift']());}};_0x274859(++_0x283a33);}(_0xddb5,0x120));var _0x5ddb=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xddb5[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require('lodash');var util=require(_0x5ddb('0x0'));var moment=require(_0x5ddb('0x1'));var BPromise=require(_0x5ddb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5ddb('0x3'));var db=require(_0x5ddb('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5ddb('0x5'))(_0x5ddb('0x6'));var config=require(_0x5ddb('0x7'));var jayson=require(_0x5ddb('0x8'));var client=jayson['client'][_0x5ddb('0x9')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x5ddb('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5ddb('0xb')]));require('./plugin.socket')[_0x5ddb('0xc')](socket);function respondWithRpcPromise(_0x38dac6,_0x228779,_0x5bd52f){return new BPromise(function(_0x769671,_0x491d02){return client['request'](_0x38dac6,_0x5bd52f)[_0x5ddb('0xd')](function(_0x112adb){logger[_0x5ddb('0xe')](_0x5ddb('0xf'),_0x228779,_0x5ddb('0x10'));logger[_0x5ddb('0x11')]('Plugin,\x20%s,\x20%s,\x20%s',_0x228779,_0x5ddb('0x10'),JSON[_0x5ddb('0x12')](_0x112adb));if(_0x112adb[_0x5ddb('0x13')]){if(_0x112adb[_0x5ddb('0x13')]['code']===0x1f4){logger[_0x5ddb('0x13')](_0x5ddb('0xf'),_0x228779,_0x112adb[_0x5ddb('0x13')][_0x5ddb('0x14')]);return _0x491d02(_0x112adb['error'][_0x5ddb('0x14')]);}logger['error'](_0x5ddb('0xf'),_0x228779,_0x112adb[_0x5ddb('0x13')]['message']);return _0x769671(_0x112adb[_0x5ddb('0x13')][_0x5ddb('0x14')]);}else{logger['info'](_0x5ddb('0xf'),_0x228779,_0x5ddb('0x10'));_0x769671(_0x112adb[_0x5ddb('0x15')][_0x5ddb('0x14')]);}})[_0x5ddb('0x16')](function(_0x2d5887){logger[_0x5ddb('0x13')](_0x5ddb('0xf'),_0x228779,_0x2d5887);_0x491d02(_0x2d5887);});});}exports[_0x5ddb('0x17')]=function(_0x118e24){var _0x4d46ea=this;return new Promise(function(_0x430ec9,_0x271b6d){return db['Plugin'][_0x5ddb('0x18')](_0x118e24[_0x5ddb('0x19')],{'raw':_0x118e24[_0x5ddb('0x1a')]?_0x118e24[_0x5ddb('0x1a')][_0x5ddb('0x1b')]===undefined?!![]:![]:!![]})[_0x5ddb('0xd')](function(_0x57218a){logger[_0x5ddb('0xe')]('CreatePlugin',_0x118e24);logger[_0x5ddb('0x11')](_0x5ddb('0x17'),_0x118e24,JSON[_0x5ddb('0x12')](_0x57218a));_0x430ec9(_0x57218a);})[_0x5ddb('0x16')](function(_0x2a52bf){logger[_0x5ddb('0x13')](_0x5ddb('0x17'),_0x2a52bf[_0x5ddb('0x14')],_0x118e24);_0x271b6d(_0x4d46ea['error'](0x1f4,_0x2a52bf['message']));});});};
\ No newline at end of file
+var _0xf215=['socket.io-emitter','./plugin.socket','register','then','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Plugin,\x20%s,\x20%s','result','CreatePlugin','create','body','options','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults'];(function(_0x4bbd22,_0x88f040){var _0x4c6e27=function(_0x52cb1d){while(--_0x52cb1d){_0x4bbd22['push'](_0x4bbd22['shift']());}};_0x4c6e27(++_0x88f040);}(_0xf215,0xec));var _0x5f21=function(_0x34debb,_0x4c3a11){_0x34debb=_0x34debb-0x0;var _0x4e0a89=_0xf215[_0x34debb];return _0x4e0a89;};'use strict';var _=require(_0x5f21('0x0'));var util=require(_0x5f21('0x1'));var moment=require('moment');var BPromise=require(_0x5f21('0x2'));var rs=require(_0x5f21('0x3'));var fs=require('fs');var Redis=require(_0x5f21('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5f21('0x5'));var logger=require(_0x5f21('0x6'))(_0x5f21('0x7'));var config=require(_0x5f21('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5f21('0x9')]({'port':0x232a});config[_0x5f21('0xa')]=_[_0x5f21('0xb')](config[_0x5f21('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x5f21('0xc'))(new Redis(config[_0x5f21('0xa')]));require(_0x5f21('0xd'))[_0x5f21('0xe')](socket);function respondWithRpcPromise(_0xb3b421,_0x42cac5,_0x58fc72){return new BPromise(function(_0x5971d3,_0xbd6d96){return client['request'](_0xb3b421,_0x58fc72)[_0x5f21('0xf')](function(_0x5f5b86){logger[_0x5f21('0x10')]('Plugin,\x20%s,\x20%s',_0x42cac5,_0x5f21('0x11'));logger[_0x5f21('0x12')](_0x5f21('0x13'),_0x42cac5,_0x5f21('0x11'),JSON[_0x5f21('0x14')](_0x5f5b86));if(_0x5f5b86[_0x5f21('0x15')]){if(_0x5f5b86[_0x5f21('0x15')][_0x5f21('0x16')]===0x1f4){logger[_0x5f21('0x15')]('Plugin,\x20%s,\x20%s',_0x42cac5,_0x5f5b86[_0x5f21('0x15')][_0x5f21('0x17')]);return _0xbd6d96(_0x5f5b86['error'][_0x5f21('0x17')]);}logger[_0x5f21('0x15')](_0x5f21('0x18'),_0x42cac5,_0x5f5b86[_0x5f21('0x15')][_0x5f21('0x17')]);return _0x5971d3(_0x5f5b86[_0x5f21('0x15')][_0x5f21('0x17')]);}else{logger[_0x5f21('0x10')]('Plugin,\x20%s,\x20%s',_0x42cac5,_0x5f21('0x11'));_0x5971d3(_0x5f5b86[_0x5f21('0x19')][_0x5f21('0x17')]);}})['catch'](function(_0x1ef72d){logger[_0x5f21('0x15')](_0x5f21('0x18'),_0x42cac5,_0x1ef72d);_0xbd6d96(_0x1ef72d);});});}exports[_0x5f21('0x1a')]=function(_0x3aa83c){var _0xf69eec=this;return new Promise(function(_0x4aa40b,_0x551414){return db['Plugin'][_0x5f21('0x1b')](_0x3aa83c[_0x5f21('0x1c')],{'raw':_0x3aa83c['options']?_0x3aa83c[_0x5f21('0x1d')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x548cba){logger['info'](_0x5f21('0x1a'),_0x3aa83c);logger[_0x5f21('0x12')]('CreatePlugin',_0x3aa83c,JSON[_0x5f21('0x14')](_0x548cba));_0x4aa40b(_0x548cba);})[_0x5f21('0x1e')](function(_0x41817c){logger[_0x5f21('0x15')](_0x5f21('0x1a'),_0x41817c[_0x5f21('0x17')],_0x3aa83c);_0x551414(_0xf69eec[_0x5f21('0x15')](0x1f4,_0x41817c[_0x5f21('0x17')]));});});};
\ No newline at end of file
index c95cf2e..ac3d0e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd083=['plugin:','./plugin.events','save','remove','emit','register','length'];(function(_0x34d003,_0x8e4fa7){var _0x134880=function(_0x4386be){while(--_0x4386be){_0x34d003['push'](_0x34d003['shift']());}};_0x134880(++_0x8e4fa7);}(_0xd083,0xa9));var _0x3d08=function(_0x456bd2,_0x156c79){_0x456bd2=_0x456bd2-0x0;var _0x2218c1=_0xd083[_0x456bd2];return _0x2218c1;};'use strict';var PluginEvents=require(_0x3d08('0x0'));var events=[_0x3d08('0x1'),_0x3d08('0x2'),'update'];function createListener(_0x64099,_0x3eb555){return function(_0xff5dd9){_0x3eb555[_0x3d08('0x3')](_0x64099,_0xff5dd9);};}function removeListener(_0x1cb506,_0x1f0eed){return function(){PluginEvents['removeListener'](_0x1cb506,_0x1f0eed);};}exports[_0x3d08('0x4')]=function(_0x5e22a0){for(var _0x275f73=0x0,_0x1a9e2d=events[_0x3d08('0x5')];_0x275f73<_0x1a9e2d;_0x275f73++){var _0x129b0a=events[_0x275f73];var _0x3a0d29=createListener(_0x3d08('0x6')+_0x129b0a,_0x5e22a0);PluginEvents['on'](_0x129b0a,_0x3a0d29);}};
\ No newline at end of file
+var _0x0157=['plugin:','./plugin.events','save','remove','update','removeListener','length'];(function(_0xf4f343,_0x41fe4a){var _0x4cda68=function(_0x3850e6){while(--_0x3850e6){_0xf4f343['push'](_0xf4f343['shift']());}};_0x4cda68(++_0x41fe4a);}(_0x0157,0x14a));var _0x7015=function(_0x3d0e9b,_0x42b1cb){_0x3d0e9b=_0x3d0e9b-0x0;var _0xf9a578=_0x0157[_0x3d0e9b];return _0xf9a578;};'use strict';var PluginEvents=require(_0x7015('0x0'));var events=[_0x7015('0x1'),_0x7015('0x2'),_0x7015('0x3')];function createListener(_0x2d9894,_0x3720e9){return function(_0x3e9369){_0x3720e9['emit'](_0x2d9894,_0x3e9369);};}function removeListener(_0x21c55a,_0x45b126){return function(){PluginEvents[_0x7015('0x4')](_0x21c55a,_0x45b126);};}exports['register']=function(_0x42320a){for(var _0xa8ec2d=0x0,_0xc45015=events[_0x7015('0x5')];_0xa8ec2d<_0xc45015;_0xa8ec2d++){var _0x41797e=events[_0xa8ec2d];var _0x22bf26=createListener(_0x7015('0x6')+_0x41797e,_0x42320a);PluginEvents['on'](_0x41797e,_0x22bf26);}};
\ No newline at end of file
index c15f7bc..8f72b07 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(_0x41a385,_0x5fa102){var _0x1e12d7=function(_0x1bcb55){while(--_0x1bcb55){_0x41a385['push'](_0x41a385['shift']());}};_0x1e12d7(++_0x5fa102);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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(_0x52f034,_0x36e342){var _0x390ca4=function(_0x70a24e){while(--_0x70a24e){_0x52f034['push'](_0x52f034['shift']());}};_0x390ca4(++_0x36e342);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
index d7749dc..cd22697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c76=['status','npm\x20install','info','error','index','list','then','reject','motion2','length','catch','params','create','body','script','join','../../files/plugins','cwd','chdir','start','dump','send','restart','stop','hasOwnProperty','Unknown\x20status','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','path','child_process','sendStatus','stack','name'];(function(_0x5727fc,_0x101501){var _0x5c3859=function(_0x6883ac){while(--_0x6883ac){_0x5727fc['push'](_0x5727fc['shift']());}};_0x5c3859(++_0x101501);}(_0x6c76,0x184));var _0x66c7=function(_0xaad33,_0x34a032){_0xaad33=_0xaad33-0x0;var _0x4847f3=_0x6c76[_0xaad33];return _0x4847f3;};'use strict';var _=require(_0x66c7('0x0'));var pm2=require(_0x66c7('0x1'));var logger=require(_0x66c7('0x2'))('api');var path=require(_0x66c7('0x3'));var exec=require(_0x66c7('0x4'))['exec'];var BPromise=require('bluebird');function handleEntityNotFound(_0x2f6db7,_0x2b7cf3){return function(_0x49d437){if(!_0x49d437){_0x2f6db7[_0x66c7('0x5')](0x194);;}return _0x49d437;};}function respondWithResult(_0x45b0a5,_0x52f71b){_0x52f71b=_0x52f71b||0xc8;return function(_0x23408c){if(_0x23408c){return _0x45b0a5['status'](_0x52f71b)['json'](_0x23408c);}return null;};}function handleError(_0x208d06,_0x2b0065){_0x2b0065=_0x2b0065||0x1f4;return function(_0x24349f){logger['error'](_0x24349f[_0x66c7('0x6')]);if(_0x24349f[_0x66c7('0x7')]){delete _0x24349f[_0x66c7('0x7')];}_0x208d06[_0x66c7('0x8')](_0x2b0065)['send'](_0x24349f);};}function execChildProcess(){return new BPromise(function(_0x464085,_0x45db57){exec(_0x66c7('0x9'),function(_0x187e00,_0x21fb64,_0x406e41){logger[_0x66c7('0xa')](_0x21fb64);logger['info'](_0x406e41);if(_0x187e00){logger[_0x66c7('0xb')](_0x187e00);return _0x45db57(_0x187e00);}return _0x464085(_0x21fb64);});});}exports[_0x66c7('0xc')]=function(_0x35cbc2,_0xea3f56){return pm2[_0x66c7('0xd')]()[_0x66c7('0xe')](function(_0x618bd7){if(_0x618bd7){var _0xf3b04=_[_0x66c7('0xf')](_0x618bd7,function(_0x5d44e1){return _0x5d44e1[_0x66c7('0x7')]==='express'||_0x5d44e1[_0x66c7('0x7')]===_0x66c7('0x10');});return{'rows':_0xf3b04,'count':_0xf3b04[_0x66c7('0x11')]};}return null;})[_0x66c7('0xe')](respondWithResult(_0xea3f56,null))[_0x66c7('0x12')](handleError(_0xea3f56,null));};exports['show']=function(_0x5cf913,_0x53fb36){return pm2['describe'](_0x5cf913[_0x66c7('0x13')]['id'])[_0x66c7('0xe')](respondWithResult(_0x53fb36,null))['then'](handleEntityNotFound(_0x53fb36,null))['catch'](handleError(_0x53fb36,null));};exports[_0x66c7('0x14')]=function(_0x9b65cf,_0x4756f7){if(_0x9b65cf[_0x66c7('0x15')]['name']&&_0x9b65cf['body'][_0x66c7('0x16')]){var _0x237177=path[_0x66c7('0x17')](__dirname,_0x66c7('0x18'),_0x9b65cf[_0x66c7('0x15')][_0x66c7('0x16')]);var _0x4804cf=process[_0x66c7('0x19')]();process[_0x66c7('0x1a')](path['dirname'](_0x237177));return execChildProcess()[_0x66c7('0xe')](function(_0x8b96b1){process[_0x66c7('0x1a')](_0x4804cf);return pm2[_0x66c7('0x1b')]({'name':_0x9b65cf['body'][_0x66c7('0x7')],'script':_0x237177});})[_0x66c7('0xe')](function(_0x5b28e6){pm2[_0x66c7('0x1c')]();return _0x5b28e6[0x0];})[_0x66c7('0xe')](respondWithResult(_0x4756f7,0xc9))[_0x66c7('0x12')](handleError(_0x4756f7,null));}else{return _0x4756f7[_0x66c7('0x8')](0x1f4)[_0x66c7('0x1d')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports['update']=function(_0x4e514a,_0x2dd131){if(_0x4e514a[_0x66c7('0x15')]['id']){delete _0x4e514a['body']['id'];}var _0x9afd50={'online':_0x66c7('0x1e'),'stopped':_0x66c7('0x1f')};if(_0x9afd50[_0x66c7('0x20')](_0x4e514a[_0x66c7('0x15')][_0x66c7('0x8')])){return pm2[_0x9afd50[_0x4e514a['body'][_0x66c7('0x8')]]](_0x4e514a[_0x66c7('0x13')]['id'])[_0x66c7('0xe')](respondWithResult(_0x2dd131,0xc8))[_0x66c7('0x12')](handleError(_0x2dd131,null));}else{return _0x2dd131[_0x66c7('0x8')](0x1f4)['send']({'message':_0x66c7('0x21')});}};exports['destroy']=function(_0xfbd97,_0x543fbf){if(_0xfbd97[_0x66c7('0x15')]['id']){delete _0xfbd97[_0x66c7('0x15')]['id'];}if(_0xfbd97[_0x66c7('0x13')]['id']){return pm2[_0x66c7('0x22')](_0xfbd97[_0x66c7('0x13')]['id'])[_0x66c7('0xe')](function(_0x559ab9){pm2['dump']();return _0x559ab9[0x0];})[_0x66c7('0xe')](respondWithResult(_0x543fbf,null))[_0x66c7('0x12')](handleError(_0x543fbf,null));}else{return _0x543fbf[_0x66c7('0x8')](0x1f4)[_0x66c7('0x1d')]({'message':_0x66c7('0x23')});}};
\ No newline at end of file
+var _0x0713=['Unknown\x20status','destroy','../../config/logger','api','path','child_process','exec','sendStatus','status','json','error','name','send','npm\x20install','info','index','list','reject','express','motion2','length','then','catch','show','describe','params','create','body','../../files/plugins','script','cwd','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty'];(function(_0x4cee4b,_0x1dfff3){var _0x4d891d=function(_0x3722ba){while(--_0x3722ba){_0x4cee4b['push'](_0x4cee4b['shift']());}};_0x4d891d(++_0x1dfff3);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var pm2=require('../../config/pm2');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var path=require(_0x3071('0x2'));var exec=require(_0x3071('0x3'))[_0x3071('0x4')];var BPromise=require('bluebird');function handleEntityNotFound(_0x2c547f,_0x7b18a4){return function(_0x33a70c){if(!_0x33a70c){_0x2c547f[_0x3071('0x5')](0x194);;}return _0x33a70c;};}function respondWithResult(_0xabd7b6,_0x41cf76){_0x41cf76=_0x41cf76||0xc8;return function(_0x1d3dd6){if(_0x1d3dd6){return _0xabd7b6[_0x3071('0x6')](_0x41cf76)[_0x3071('0x7')](_0x1d3dd6);}return null;};}function handleError(_0x22274c,_0x3e9a5e){_0x3e9a5e=_0x3e9a5e||0x1f4;return function(_0x2fce7a){logger[_0x3071('0x8')](_0x2fce7a['stack']);if(_0x2fce7a[_0x3071('0x9')]){delete _0x2fce7a[_0x3071('0x9')];}_0x22274c[_0x3071('0x6')](_0x3e9a5e)[_0x3071('0xa')](_0x2fce7a);};}function execChildProcess(){return new BPromise(function(_0x1ce844,_0x4a470a){exec(_0x3071('0xb'),function(_0x11a7ee,_0x401b4d,_0x3ed4a0){logger[_0x3071('0xc')](_0x401b4d);logger['info'](_0x3ed4a0);if(_0x11a7ee){logger['error'](_0x11a7ee);return _0x4a470a(_0x11a7ee);}return _0x1ce844(_0x401b4d);});});}exports[_0x3071('0xd')]=function(_0x5dc13b,_0x31c220){return pm2[_0x3071('0xe')]()['then'](function(_0x104e73){if(_0x104e73){var _0x4e1219=_[_0x3071('0xf')](_0x104e73,function(_0x45c93b){return _0x45c93b[_0x3071('0x9')]===_0x3071('0x10')||_0x45c93b[_0x3071('0x9')]===_0x3071('0x11');});return{'rows':_0x4e1219,'count':_0x4e1219[_0x3071('0x12')]};}return null;})[_0x3071('0x13')](respondWithResult(_0x31c220,null))[_0x3071('0x14')](handleError(_0x31c220,null));};exports[_0x3071('0x15')]=function(_0x5f3c22,_0x224996){return pm2[_0x3071('0x16')](_0x5f3c22[_0x3071('0x17')]['id'])[_0x3071('0x13')](respondWithResult(_0x224996,null))[_0x3071('0x13')](handleEntityNotFound(_0x224996,null))[_0x3071('0x14')](handleError(_0x224996,null));};exports[_0x3071('0x18')]=function(_0x26f113,_0x502a16){if(_0x26f113[_0x3071('0x19')][_0x3071('0x9')]&&_0x26f113[_0x3071('0x19')]['script']){var _0xb8f4e3=path['join'](__dirname,_0x3071('0x1a'),_0x26f113[_0x3071('0x19')][_0x3071('0x1b')]);var _0x457b57=process[_0x3071('0x1c')]();process[_0x3071('0x1d')](path[_0x3071('0x1e')](_0xb8f4e3));return execChildProcess()[_0x3071('0x13')](function(_0x542646){process['chdir'](_0x457b57);return pm2[_0x3071('0x1f')]({'name':_0x26f113[_0x3071('0x19')][_0x3071('0x9')],'script':_0xb8f4e3});})[_0x3071('0x13')](function(_0x2793ef){pm2[_0x3071('0x20')]();return _0x2793ef[0x0];})[_0x3071('0x13')](respondWithResult(_0x502a16,0xc9))[_0x3071('0x14')](handleError(_0x502a16,null));}else{return _0x502a16[_0x3071('0x6')](0x1f4)['send']({'message':_0x3071('0x21')});}};exports[_0x3071('0x22')]=function(_0x177138,_0x4d5c4b){if(_0x177138[_0x3071('0x19')]['id']){delete _0x177138[_0x3071('0x19')]['id'];}var _0x163604={'online':_0x3071('0x23'),'stopped':_0x3071('0x24')};if(_0x163604[_0x3071('0x25')](_0x177138[_0x3071('0x19')][_0x3071('0x6')])){return pm2[_0x163604[_0x177138[_0x3071('0x19')][_0x3071('0x6')]]](_0x177138[_0x3071('0x17')]['id'])['then'](respondWithResult(_0x4d5c4b,0xc8))['catch'](handleError(_0x4d5c4b,null));}else{return _0x4d5c4b[_0x3071('0x6')](0x1f4)[_0x3071('0xa')]({'message':_0x3071('0x26')});}};exports[_0x3071('0x27')]=function(_0x3f6d90,_0x29538c){if(_0x3f6d90[_0x3071('0x19')]['id']){delete _0x3f6d90[_0x3071('0x19')]['id'];}if(_0x3f6d90['params']['id']){return pm2['delete'](_0x3f6d90['params']['id'])[_0x3071('0x13')](function(_0x392800){pm2['dump']();return _0x392800[0x0];})[_0x3071('0x13')](respondWithResult(_0x29538c,null))[_0x3071('0x14')](handleError(_0x29538c,null));}else{return _0x29538c[_0x3071('0x6')](0x1f4)[_0x3071('0xa')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
index 8f05b08..4e9cc9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf970=['exports','express','../../components/auth/service','./realtime.controller','get','/queues','isAuthenticated','getQueues'];(function(_0x556cd0,_0x3a2d89){var _0x5a3238=function(_0x27513e){while(--_0x27513e){_0x556cd0['push'](_0x556cd0['shift']());}};_0x5a3238(++_0x3a2d89);}(_0xf970,0x1d9));var _0x0f97=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf970[_0x14add3];return _0x4a174f;};'use strict';var express=require(_0x0f97('0x0'));var router=express['Router']();var auth=require(_0x0f97('0x1'));var controller=require(_0x0f97('0x2'));router[_0x0f97('0x3')](_0x0f97('0x4'),auth[_0x0f97('0x5')](),controller[_0x0f97('0x6')]);module[_0x0f97('0x7')]=router;
\ No newline at end of file
+var _0xe6f1=['express','fs-extra','../../components/interaction/service','../../config/environment','./realtime.controller','get','/queues','multer','path'];(function(_0x478d76,_0x9ad44b){var _0x2817b1=function(_0x3380a4){while(--_0x3380a4){_0x478d76['push'](_0x478d76['shift']());}};_0x2817b1(++_0x9ad44b);}(_0xe6f1,0x19c));var _0x1e6f=function(_0x4cba56,_0x5b2c44){_0x4cba56=_0x4cba56-0x0;var _0x3cc9f3=_0xe6f1[_0x4cba56];return _0x3cc9f3;};'use strict';var multer=require(_0x1e6f('0x0'));var util=require('util');var path=require(_0x1e6f('0x1'));var timeout=require('connect-timeout');var express=require(_0x1e6f('0x2'));var router=express['Router']();var fs_extra=require(_0x1e6f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x1e6f('0x4'));var config=require(_0x1e6f('0x5'));var controller=require(_0x1e6f('0x6'));router[_0x1e6f('0x7')](_0x1e6f('0x8'),auth['isAuthenticated'](),controller['getQueues']);module['exports']=router;
\ No newline at end of file
index 4a59b65..47e87bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1295=['Queue','findAll','QueueId','online','mail','chat','sms','openchannel','fax','channel','includes','toLowerCase','Invalid\x20channel','query','rawAttributes','fieldName','type','key','user','userProfileId','QueueCampaigns','UserProfile','rows','util','lodash','../../config/logger','api','../../mysqldb','client','http','offset','limit','undefined','count','status','set','error','name','send','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','merge','catch','voice','startCase','format','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','available','waiting','outbound','push','pTalking','originated','message','dialMethod','Trunk','startProgressive','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','get','agents','paused','loggedInDb','talking','find','pick','filter','queue','length','busy','some','connectedlinenum','internal','toString','UserId','accountcode','User'];(function(_0x2ae00e,_0x232e88){var _0x1fc16f=function(_0x26f0cf){while(--_0x26f0cf){_0x2ae00e['push'](_0x2ae00e['shift']());}};_0x1fc16f(++_0x232e88);}(_0x1295,0x1ed));var _0x5129=function(_0x4d26c4,_0x3583da){_0x4d26c4=_0x4d26c4-0x0;var _0x541834=_0x1295[_0x4d26c4];return _0x541834;};'use strict';var util=require(_0x5129('0x0'));var _=require(_0x5129('0x1'));var jayson=require('jayson/promise');var qs=require('../../components/parsers/qs');var logger=require(_0x5129('0x2'))(_0x5129('0x3'));var db=require(_0x5129('0x4'))['db'];var amiClient=jayson[_0x5129('0x5')][_0x5129('0x6')]({'port':0x232a});var routingClient=jayson['client'][_0x5129('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x226428,_0x2c04bb){return function(_0x4be677){if(_0x4be677){var _0x1160bc=typeof _0x2c04bb[_0x5129('0x7')]==='undefined'&&typeof _0x2c04bb[_0x5129('0x8')]===_0x5129('0x9');var _0x36c3f3=_0x4be677['count'];var _0xe7cb11=_0x1160bc?0x0:_0x2c04bb['offset'];var _0x151113=_0x1160bc?_0x4be677[_0x5129('0xa')]:_0x2c04bb[_0x5129('0x7')]+_0x2c04bb[_0x5129('0x8')];var _0x2242c0;if(_0x151113>=_0x36c3f3){_0x151113=_0x36c3f3;_0x2242c0=0xc8;}else{_0x2242c0=0xce;}_0x226428[_0x5129('0xb')](_0x2242c0);return _0x226428[_0x5129('0xc')]('Content-Range',_0xe7cb11+'-'+_0x151113+'/'+_0x36c3f3)['json'](_0x4be677);}return null;};}function handleError(_0x5f7239,_0x357ddf){_0x357ddf=_0x357ddf||0x1f4;return function(_0x5ddafb){logger[_0x5129('0xd')](_0x5ddafb['stack']);if(_0x5ddafb['name']){delete _0x5ddafb[_0x5129('0xe')];}_0x5f7239[_0x5129('0xb')](_0x357ddf)[_0x5129('0xf')](_0x5ddafb);};}function getRealtimeAgents(){return new Promise(function(_0x18cf3a,_0x472d71){return amiClient[_0x5129('0x10')](_0x5129('0x11'),{})[_0x5129('0x12')](function(_0x276ccd){if(_0x276ccd[_0x5129('0xd')])throw new Error(_0x5129('0x13'));var _0x42cde4=_0x276ccd[_0x5129('0x14')];return routingClient['request']('Agents',{})[_0x5129('0x12')](function(_0x24f905){if(_0x24f905[_0x5129('0xd')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x1adf0b=_0x24f905[_0x5129('0x14')];return _0x18cf3a(_[_0x5129('0x15')]({},_0x42cde4,_0x1adf0b));});})[_0x5129('0x16')](function(_0x12c318){_0x472d71(_0x12c318);});});}function getRealtimeQueues(_0x50b43f,_0x5bd071){return new Promise(function(_0x55e221,_0x2a87c6){var _0x1db0bb=_0x5bd071===_0x5129('0x17')?amiClient:routingClient;return _0x1db0bb[_0x5129('0x10')](_[_0x5129('0x18')](_0x5bd071)+'Queues',_0x50b43f)[_0x5129('0x12')](function(_0x2b9ff3){if(_0x2b9ff3[_0x5129('0xd')])throw new Error(util[_0x5129('0x19')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x5bd071));return _0x55e221(_0x2b9ff3[_0x5129('0x14')]);})[_0x5129('0x16')](function(_0x332581){_0x2a87c6(_0x332581);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x39f755,_0x486a00){return amiClient[_0x5129('0x10')](_0x5129('0x1a'),{})[_0x5129('0x12')](function(_0x222d6c){if(_0x222d6c[_0x5129('0xd')])throw new Error(_0x5129('0x1b'));return _0x39f755(_0x222d6c['result']);})[_0x5129('0x16')](function(_0x16fc81){_0x486a00(_0x16fc81);});});}function initializeQueues(_0x46ad03,_0x5c5c3d,_0x15b048,_0x186c21){var _0x42dff8=[_0x5129('0x1c'),_0x5129('0x1d'),_0x5129('0x1e'),'talking','paused'];if(_0x15b048===_0x5129('0x17')&&_0x186c21===_0x5129('0x1f')){_0x42dff8[_0x5129('0x20')](_0x5129('0x21'),_0x5129('0x22'),_0x5129('0x23'),'dialActive',_0x5129('0x24'),_0x5129('0x25'),'startPredictive',_0x5129('0x26'),'erlangCalls',_0x5129('0x27'),_0x5129('0x28'),_0x5129('0x29'),_0x5129('0x2a'),_0x5129('0x2b'),_0x5129('0x2c'),_0x5129('0x2d'),_0x5129('0x2e'),_0x5129('0x2f'),_0x5129('0x30'),_0x5129('0x31'),_0x5129('0x32'),_0x5129('0x33'));}return _0x46ad03[_0x5129('0x34')](function(_0x15c202){var _0x1a6b45=_0x15c202[_0x5129('0x35')]({'plain':!![]});_0x1a6b45[_0x5129('0x36')]=[];_0x1a6b45[_0x5129('0x37')]=0x0;_0x1a6b45[_0x5129('0x38')]=0x0;_0x1a6b45[_0x5129('0x1c')]=0x0;_0x1a6b45['available']=0x0;_0x1a6b45[_0x5129('0x1e')]=0x0;if(_0x15b048===_0x5129('0x17')){_0x1a6b45[_0x5129('0x39')]=0x0;_0x1a6b45['busy']=0x0;if(_0x186c21===_0x5129('0x1f')){_0x1a6b45[_0x5129('0x21')]=0x0;_0x1a6b45[_0x5129('0x22')]=0x0;}}var _0x38e20a=_[_0x5129('0x3a')](_0x5c5c3d,['id',_0x1a6b45['id']]);if(_0x38e20a)_['merge'](_0x1a6b45,_[_0x5129('0x3b')](_0x38e20a,_0x42dff8));return _0x1a6b45;});}function updateAgentVoiceStatus(_0x47fc74,_0x51ac8b,_0x364b1b){var _0x989f1d=_[_0x5129('0x3c')](_0x364b1b,[_0x5129('0x3d'),_0x51ac8b[_0x5129('0xe')]]);if(_0x989f1d[_0x5129('0x3e')]===0x0)return _0x47fc74[_0x5129('0x3f')]=!![];if(_[_0x5129('0x40')](_0x989f1d,[_0x5129('0x41'),_0x47fc74[_0x5129('0x42')][_0x5129('0x43')]()]))return _0x47fc74[_0x5129('0x39')]=!![];if(!_0x47fc74['talking'])return _0x47fc74[_0x5129('0x3f')]=!![];}function getVoiceQueueAgents(_0x14dd0b,_0x1258d5,_0xe77c61,_0xa135af){var _0x37a984=_[_0x5129('0x3a')](_0x1258d5,['id',_0x14dd0b['id']]);if(!_0x37a984)return _0x14dd0b;return _0x37a984['getMembers']({'raw':!![]})[_0x5129('0x12')](function(_0x3e7870){for(var _0x103101=0x0;_0x103101<_0x3e7870[_0x5129('0x3e')];_0x103101++){var _0x1dfbf0=_[_0x5129('0x3a')](_0xe77c61,['id',_0x3e7870[_0x103101][_0x5129('0x44')]]);if(!_0x1dfbf0){_0x1dfbf0={'id':_0x3e7870[_0x103101][_0x5129('0x44')],'name':_0x3e7870[_0x103101][_0x5129('0x44')],'accountcode':'','online':![]};}var _0x17f00f={'id':_0x1dfbf0['id'],'name':_0x1dfbf0[_0x5129('0xe')],'internal':_0x1dfbf0[_0x5129('0x45')],'online':Boolean(_0x1dfbf0['online']),'paused':Boolean(_0x3e7870[_0x103101][_0x5129('0x37')])};if(_0x1dfbf0['voiceStatus']===_0x5129('0x39'))updateAgentVoiceStatus(_0x17f00f,_0x14dd0b,_0xa135af);if(_0x17f00f['online'])_0x14dd0b[_0x5129('0x38')]++;if(_0x17f00f['busy'])_0x14dd0b['busy']++;if(_0x17f00f[_0x5129('0x37')]&&!_0x17f00f['busy']&&!_0x17f00f[_0x5129('0x39')])_0x14dd0b[_0x5129('0x37')]++;_0x14dd0b[_0x5129('0x36')][_0x5129('0x20')](_0x17f00f);}return _0x14dd0b;});}function getQueueAgents(_0x223451,_0x4a29a0,_0x583207){var _0x382b85=_0x5129('0x46')+_[_0x5129('0x18')](_0x583207)+_0x5129('0x47');var _0x5ac64b=_0x583207+'Pause';return db[_0x382b85][_0x5129('0x48')]({'where':{[_[_0x5129('0x18')](_0x583207)+_0x5129('0x49')]:_0x223451['id']},'raw':!![]})[_0x5129('0x12')](function(_0x484f8d){for(var _0x4b2fee=0x0;_0x4b2fee<_0x484f8d['length'];_0x4b2fee++){var _0x4121de=_['find'](_0x4a29a0,['id',_0x484f8d[_0x4b2fee][_0x5129('0x44')]]);if(!_0x4121de){_0x4121de={'id':_0x484f8d[_0x4b2fee][_0x5129('0x44')],'name':_0x484f8d[_0x4b2fee][_0x5129('0x44')],'online':![],['pauseField']:![]};}var _0x3b30da={'id':_0x4121de['id'],'name':_0x4121de[_0x5129('0xe')],'online':Boolean(_0x4121de[_0x5129('0x4a')]),'paused':Boolean(_0x4121de[_0x5ac64b])};if(_0x3b30da['online'])_0x223451[_0x5129('0x38')]++;_0x223451['agents'][_0x5129('0x20')](_0x3b30da);}return _0x223451;});}exports['getQueues']=function(_0x2ba632,_0x26883f){var _0x5b0183=[_0x5129('0x4b'),_0x5129('0x4c'),_0x5129('0x4d'),_0x5129('0x4e'),_0x5129('0x4f'),'whatsapp',_0x5129('0x17')];var _0x463934={'count':0x0,'rows':[]},_0x1b47f7={},_0x12356b,_0x4d8a38,_0x4bd6d9,_0x123cc7,_0x34153f;Promise['resolve']()[_0x5129('0x12')](function(){if(_0x2ba632['query'][_0x5129('0x50')]){if(!_[_0x5129('0x51')](_0x5b0183,_0x2ba632['query']['channel'][_0x5129('0x52')]()))throw new Error(_0x5129('0x53'));_0x12356b=_0x2ba632[_0x5129('0x54')][_0x5129('0x50')]['toLowerCase']();}var _0x578e5f=_[_0x5129('0x18')](_0x12356b)+'Queue';var _0x1e6e03=_[_0x5129('0x34')](db[_0x578e5f][_0x5129('0x55')],function(_0x8b90a9){return{'name':_0x8b90a9[_0x5129('0x56')],'type':_0x8b90a9[_0x5129('0x57')][_0x5129('0x58')]};});_0x1b47f7=qs['getOptions'](_0x1e6e03,_0x2ba632);if(_0x2ba632[_0x5129('0x59')]['role']===_0x5129('0x59')){var _0x50986c={'params':{'id':_0x2ba632[_0x5129('0x59')][_0x5129('0x5a')]},'query':{'section':_0x12356b==='voice'&&_0x2ba632[_0x5129('0x54')][_0x5129('0x57')]===_0x5129('0x1f')?_0x5129('0x5b'):_['startCase'](_0x12356b)+'Queues','type':_0x2ba632[_0x5129('0x54')]['type'],'nolimit':!![],'sort':_0x5129('0xe'),'filter':_0x2ba632[_0x5129('0x54')]['filter']}};return db[_0x5129('0x5c')]['getResources'](_0x50986c);}return db[_0x578e5f]['findAndCountAll'](_0x1b47f7);})[_0x5129('0x12')](function(_0xf869c5){_0x463934[_0x5129('0xa')]=_0xf869c5['count'];_0x4d8a38=_0xf869c5[_0x5129('0x5d')];return getRealtimeQueues(_0x2ba632,_0x12356b);})['then'](function(_0x44707e){_0x123cc7=_0x44707e[_0x5129('0x5d')];return getRealtimeAgents();})[_0x5129('0x12')](function(_0x4dfa14){_0x4bd6d9=_0x4dfa14[_0x5129('0x5d')];if(_0x12356b!=_0x5129('0x17'))return;return getRealtimeVoiceQueueChannels();})[_0x5129('0x12')](function(_0x2d2bab){_0x34153f=_0x2d2bab?_0x2d2bab['rows']:[];return initializeQueues(_0x4d8a38,_0x123cc7,_0x12356b,_0x2ba632[_0x5129('0x54')][_0x5129('0x57')]);})[_0x5129('0x12')](function(_0x5364cd){var _0x490c96=_0x5364cd['map'](function(_0x278018){if(_0x12356b===_0x5129('0x17'))return getVoiceQueueAgents(_0x278018,_0x4d8a38,_0x4bd6d9,_0x34153f);else return getQueueAgents(_0x278018,_0x4bd6d9,_0x12356b);});return Promise['all'](_0x490c96);})[_0x5129('0x12')](function(_0x266076){_0x463934[_0x5129('0x5d')]=_0x266076;return _0x463934;})['then'](respondWithFilteredResult(_0x26883f,_0x1b47f7))[_0x5129('0x16')](handleError(_0x26883f,null));};
\ No newline at end of file
+var _0x641c=['lodash','crypto','desk.js','querystring','../../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','Realtime,\x20%s,\x20%s','request\x20sent','Realtime,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','end','stack','name','send','getQueues','mail','chat','sms','openchannel','fax','whatsapp','query','toLowerCase','rawAttributes','key','getOptions','user','userProfileId','voice','type','QueueCampaigns','startCase','Queues','filter','UserProfile','getResources','findAndCountAll','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','loggedIn','talking','paused','push','pTalking','dialActive','dialMethod','Trunk','startPredictive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','predictiveIntervalAvailable','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','rows','map','get','available','waiting','originated','agents','find','merge','getAgents','online','getMembers','length','UserId','User','Queue','QueueId','Pause','findAll','agent','all','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv'];(function(_0x449a3c,_0x333fc5){var _0x5e0d91=function(_0x496c4c){while(--_0x496c4c){_0x449a3c['push'](_0x449a3c['shift']());}};_0x5e0d91(++_0x333fc5);}(_0x641c,0x1c3));var _0xc641=function(_0x13163b,_0x37c20a){_0x13163b=_0x13163b-0x0;var _0x11e38d=_0x641c[_0x13163b];return _0x11e38d;};'use strict';var emlformat=require(_0xc641('0x0'));var rimraf=require(_0xc641('0x1'));var zipdir=require(_0xc641('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc641('0x3'));var moment=require(_0xc641('0x4'));var BPromise=require(_0xc641('0x5'));var Mustache=require(_0xc641('0x6'));var util=require(_0xc641('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xc641('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc641('0x9'));var squel=require('squel');var crypto=require(_0xc641('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xc641('0xb'));var toCsv=require(_0xc641('0x8'));var querystring=require(_0xc641('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc641('0xd'));var qs=require(_0xc641('0xe'));var as=require(_0xc641('0xf'));var hardwareService=require(_0xc641('0x10'));var logger=require(_0xc641('0x11'))(_0xc641('0x12'));var utils=require(_0xc641('0x13'));var config=require(_0xc641('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc641('0x15'))['db'];var jayson=require(_0xc641('0x16'));var client=jayson[_0xc641('0x17')][_0xc641('0x18')]({'port':0x232a});var routingClient=jayson['client'][_0xc641('0x18')]({'port':0x232c});function respondWithRpcPromise(_0x588a3b,_0x32de6b,_0x178692,_0x3d181f){return new BPromise(function(_0x2e559c,_0x1c41c5){var _0x87c4d9=_0x3d181f||client;return _0x87c4d9[_0xc641('0x19')](_0x588a3b,_0x178692)['then'](function(_0xde4cb7){logger['info'](_0xc641('0x1a'),_0x32de6b,_0xc641('0x1b'));logger['debug'](_0xc641('0x1c'),_0x32de6b,_0xc641('0x1b'),JSON[_0xc641('0x1d')](_0xde4cb7));if(_0xde4cb7[_0xc641('0x1e')]){if(_0xde4cb7['error'][_0xc641('0x1f')]===0x1f4){logger[_0xc641('0x1e')](_0xc641('0x1a'),_0x32de6b,_0xde4cb7['error']['message']);return _0x1c41c5(_0xde4cb7[_0xc641('0x1e')]['message']);}logger['error']('Realtime,\x20%s,\x20%s',_0x32de6b,_0xde4cb7['error'][_0xc641('0x20')]);return _0x2e559c(_0xde4cb7['error'][_0xc641('0x20')]);}else{logger[_0xc641('0x21')](_0xc641('0x1a'),_0x32de6b,_0xc641('0x1b'));_0x2e559c(_0xde4cb7[_0xc641('0x22')]['message']);}})['catch'](function(_0x45fb03){logger[_0xc641('0x1e')](_0xc641('0x1a'),_0x32de6b,_0x45fb03);_0x1c41c5(_0x45fb03);});});}function respondWithStatusCode(_0x45ea24,_0x8485b5){_0x8485b5=_0x8485b5||0xcc;return function(_0xa9cbfe){if(_0xa9cbfe){return _0x45ea24[_0xc641('0x23')](_0x8485b5);}return _0x45ea24[_0xc641('0x24')](_0x8485b5)['end']();};}function respondWithResult(_0x26ee03,_0x26a817){_0x26a817=_0x26a817||0xc8;return function(_0x4adb03){if(_0x4adb03){return _0x26ee03[_0xc641('0x24')](_0x26a817)['json'](_0x4adb03);}};}function respondWithFilteredResult(_0x372ea0,_0x5e1227){return function(_0x314996){if(_0x314996){var _0x4068ec=typeof _0x5e1227[_0xc641('0x25')]===_0xc641('0x26')&&typeof _0x5e1227[_0xc641('0x27')]===_0xc641('0x26');var _0x4ef5d9=_0x314996[_0xc641('0x28')];var _0x598eac=_0x4068ec?0x0:_0x5e1227['offset'];var _0x502482=_0x4068ec?_0x314996[_0xc641('0x28')]:_0x5e1227[_0xc641('0x25')]+_0x5e1227[_0xc641('0x27')];var _0x1e437f;if(_0x502482>=_0x4ef5d9){_0x502482=_0x4ef5d9;_0x1e437f=0xc8;}else{_0x1e437f=0xce;}_0x372ea0['status'](_0x1e437f);return _0x372ea0['set'](_0xc641('0x29'),_0x598eac+'-'+_0x502482+'/'+_0x4ef5d9)[_0xc641('0x2a')](_0x314996);}return null;};}function patchUpdates(_0x1f7e0c){return function(_0x2e3203){try{jsonpatch[_0xc641('0x2b')](_0x2e3203,_0x1f7e0c,!![]);}catch(_0xe4992a){return BPromise[_0xc641('0x2c')](_0xe4992a);}return _0x2e3203[_0xc641('0x2d')]();};}function saveUpdates(_0x6a85f5,_0x1d2c15){return function(_0x49e97e){if(_0x49e97e){return _0x49e97e['update'](_0x6a85f5)[_0xc641('0x2e')](function(_0x549031){return _0x549031;});}return null;};}function removeEntity(_0xc30f0b,_0x5598ea){return function(_0x986a0e){if(_0x986a0e){return _0x986a0e[_0xc641('0x2f')]()[_0xc641('0x2e')](function(){_0xc30f0b[_0xc641('0x24')](0xcc)[_0xc641('0x30')]();});}};}function handleEntityNotFound(_0x245679,_0x5d8a39){return function(_0x11525e){if(!_0x11525e){_0x245679[_0xc641('0x23')](0x194);}return _0x11525e;};}function handleError(_0x2d5c31,_0x2e4aff){_0x2e4aff=_0x2e4aff||0x1f4;return function(_0x2d4424){logger[_0xc641('0x1e')](_0x2d4424[_0xc641('0x31')]);if(_0x2d4424[_0xc641('0x32')]){delete _0x2d4424['name'];}_0x2d5c31[_0xc641('0x24')](_0x2e4aff)[_0xc641('0x33')](_0x2d4424);};}exports[_0xc641('0x34')]=function(_0x34a2f0,_0x593065){var _0x586d96=[_0xc641('0x35'),_0xc641('0x36'),_0xc641('0x37'),_0xc641('0x38'),_0xc641('0x39'),_0xc641('0x3a'),'voice'];var _0x5d6f59={'count':0x0,'rows':[]},_0x5471b2={},_0x31d3bf;Promise['resolve']()['then'](function(){if(_0x34a2f0[_0xc641('0x3b')]['channel']){if(!_['includes'](_0x586d96,_0x34a2f0[_0xc641('0x3b')]['channel']['toLowerCase']()))throw new Error('Invalid\x20channel');_0x31d3bf=_0x34a2f0[_0xc641('0x3b')]['channel'][_0xc641('0x3c')]();}var _0x8d40c9=_['startCase'](_0x31d3bf)+'Queue';var _0x16e97e=_['map'](db[_0x8d40c9][_0xc641('0x3d')],function(_0x1b9c34){return{'name':_0x1b9c34['fieldName'],'type':_0x1b9c34['type'][_0xc641('0x3e')]};});_0x5471b2=qs[_0xc641('0x3f')](_0x16e97e,_0x34a2f0);if(_0x34a2f0[_0xc641('0x40')]['role']==='user'){var _0x239170={'params':{'id':_0x34a2f0[_0xc641('0x40')][_0xc641('0x41')]},'query':{'section':_0x31d3bf===_0xc641('0x42')&&_0x34a2f0[_0xc641('0x3b')][_0xc641('0x43')]==='outbound'?_0xc641('0x44'):_[_0xc641('0x45')](_0x31d3bf)+_0xc641('0x46'),'type':_0x34a2f0[_0xc641('0x3b')][_0xc641('0x43')],'nolimit':!![],'sort':_0xc641('0x32'),'filter':_0x34a2f0[_0xc641('0x3b')][_0xc641('0x47')]}};return db[_0xc641('0x48')][_0xc641('0x49')](_0x239170);}return db[_0x8d40c9][_0xc641('0x4a')](_0x5471b2);})[_0xc641('0x2e')](function(_0x3031c5){_0x5d6f59[_0xc641('0x28')]=_0x3031c5[_0xc641('0x28')];var _0x5831c0=_0x31d3bf==='voice'?client:routingClient;return _0x5831c0[_0xc641('0x19')](_[_0xc641('0x45')](_0x31d3bf)+'Queues',_0x34a2f0)['then'](function(_0x5c8db6){if(_0x5c8db6[_0xc641('0x1e')])throw new Error(util[_0xc641('0x4b')](_0xc641('0x4c'),_0x31d3bf));var _0x3d6ee0=_0x5c8db6[_0xc641('0x22')];var _0x4a0d5d=[_0xc641('0x4d'),'available','waiting',_0xc641('0x4e'),_0xc641('0x4f')];if(_0x31d3bf===_0xc641('0x42')&&_0x34a2f0[_0xc641('0x3b')][_0xc641('0x43')]==='outbound'){_0x4a0d5d[_0xc641('0x50')](_0xc641('0x51'),'originated','message',_0xc641('0x52'),_0xc641('0x53'),_0xc641('0x54'),_0xc641('0x55'),'startProgressive',_0xc641('0x56'),_0xc641('0x57'),_0xc641('0x58'),_0xc641('0x59'),'dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold',_0xc641('0x5a'),'predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls',_0xc641('0x5b'),'predictiveIntervalDroppedCallsCallersExit',_0xc641('0x5c'),'predictiveIntervalAvgTalktime');}var _0x4f03d7=_0x3031c5[_0xc641('0x5d')][_0xc641('0x5e')](function(_0x235da3){var _0x502ca6=_0x235da3[_0xc641('0x5f')]({'plain':!![]});_0x502ca6[_0xc641('0x4f')]=0x0;_0x502ca6['loggedInDb']=0x0;_0x502ca6[_0xc641('0x4d')]=0x0;_0x502ca6[_0xc641('0x60')]=0x0;_0x502ca6[_0xc641('0x4f')]=0x0;_0x502ca6[_0xc641('0x61')]=0x0;if(_0x31d3bf===_0xc641('0x42')){_0x502ca6['talking']=0x0;if(_0x34a2f0[_0xc641('0x3b')][_0xc641('0x43')]==='outbound'){_0x502ca6[_0xc641('0x51')]=0x0;_0x502ca6[_0xc641('0x62')]=0x0;}}_0x502ca6[_0xc641('0x63')]=[];var _0x53fd9e=_[_0xc641('0x64')](_0x3d6ee0[_0xc641('0x5d')],['id',_0x502ca6['id']]);if(_0x53fd9e)_[_0xc641('0x65')](_0x502ca6,_['pick'](_0x53fd9e,_0x4a0d5d));if(_0x31d3bf==='voice'){return _0x235da3[_0xc641('0x66')]({'attributes':['id','name',_0xc641('0x67')],'joinTableAttributes':[],'raw':!![]})[_0xc641('0x2e')](function(_0x182522){return _0x235da3[_0xc641('0x68')]({'raw':!![]})[_0xc641('0x2e')](function(_0x32b015){for(var _0x5d2ccf=0x0;_0x5d2ccf<_0x182522[_0xc641('0x69')];_0x5d2ccf++){var _0x1ee410=_[_0xc641('0x64')](_0x32b015,[_0xc641('0x6a'),_0x182522[_0x5d2ccf]['id']]);var _0x4fbd6f={'id':_0x182522[_0x5d2ccf]['id'],'name':_0x182522[_0x5d2ccf][_0xc641('0x32')],'online':Boolean(_0x182522[_0x5d2ccf][_0xc641('0x67')]),'paused':_0x1ee410?Boolean(_0x1ee410[_0xc641('0x4f')]):![]};if(_0x4fbd6f['online'])_0x502ca6['loggedInDb']++;if(_0x4fbd6f[_0xc641('0x4f')])_0x502ca6['paused']++;_0x502ca6[_0xc641('0x63')][_0xc641('0x50')](_0x4fbd6f);}return _0x502ca6;});});}else{var _0x4072da=_0xc641('0x6b')+_[_0xc641('0x45')](_0x31d3bf)+_0xc641('0x6c');var _0x269101=_['startCase'](_0x31d3bf)+_0xc641('0x6d');var _0x2f3347=_0x31d3bf+_0xc641('0x6e');return db[_0x4072da][_0xc641('0x6f')]({'where':{['userQueueKey']:_0x235da3['id']},'raw':!![]})[_0xc641('0x2e')](function(_0x273471){return db[_0xc641('0x6b')][_0xc641('0x6f')]({'attributes':['id',_0xc641('0x32'),_0xc641('0x67'),_0x2f3347],'where':{'id':_[_0xc641('0x5e')](_0x273471,'UserId'),'role':_0xc641('0x70')},'raw':!![]});})[_0xc641('0x2e')](function(_0xf2cfc0){for(var _0x1b667e=0x0;_0x1b667e<_0xf2cfc0[_0xc641('0x69')];_0x1b667e++){var _0x3471fb={'id':_0xf2cfc0[_0x1b667e]['id'],'name':_0xf2cfc0[_0x1b667e][_0xc641('0x32')],'online':Boolean(_0xf2cfc0[_0x1b667e][_0xc641('0x67')]),'paused':Boolean(_0xf2cfc0[_0x1b667e][_0x2f3347])};if(_0x3471fb[_0xc641('0x67')])_0x502ca6['loggedInDb']++;if(_0x3471fb['paused'])_0x502ca6[_0xc641('0x4f')]++;_0x502ca6['agents'][_0xc641('0x50')](_0x3471fb);}return _0x502ca6;});}});return Promise[_0xc641('0x71')](_0x4f03d7);});})[_0xc641('0x2e')](function(_0x4b7ee4){_0x5d6f59[_0xc641('0x5d')]=_0x4b7ee4;return _0x5d6f59;})[_0xc641('0x2e')](respondWithFilteredResult(_0x593065,_0x5471b2))[_0xc641('0x72')](handleError(_0x593065,null));};
\ No newline at end of file
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8b8=['INTEGER','exports'];(function(_0x301630,_0x2db8b4){var _0x3c651a=function(_0x63e45){while(--_0x63e45){_0x301630['push'](_0x301630['shift']());}};_0x3c651a(++_0x2db8b4);}(_0xb8b8,0x6f));var _0x8b8b=function(_0x4d7607,_0x321271){_0x4d7607=_0x4d7607-0x0;var _0x2155d8=_0xb8b8[_0x4d7607];return _0x2155d8;};'use strict';var Sequelize=require('sequelize');module[_0x8b8b('0x0')]={'UserId':{'type':Sequelize[_0x8b8b('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x8b8b('0x1')]}};
\ No newline at end of file
+var _0x6a30=['rimraf','../../config/environment','define','Realtime','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4d2752,_0x16f0c5){var _0x3d2e74=function(_0x50d2d6){while(--_0x50d2d6){_0x4d2752['push'](_0x4d2752['shift']());}};_0x3d2e74(++_0x16f0c5);}(_0x6a30,0x1bc));var _0x06a3=function(_0x59a0af,_0x543d28){_0x59a0af=_0x59a0af-0x0;var _0x9aaae5=_0x6a30[_0x59a0af];return _0x9aaae5;};'use strict';var _=require(_0x06a3('0x0'));var util=require(_0x06a3('0x1'));var logger=require(_0x06a3('0x2'))(_0x06a3('0x3'));var moment=require(_0x06a3('0x4'));var BPromise=require('bluebird');var rp=require(_0x06a3('0x5'));var fs=require('fs');var path=require(_0x06a3('0x6'));var rimraf=require(_0x06a3('0x7'));var config=require(_0x06a3('0x8'));;module['exports']=function(_0x266b06,_0x5d9f68){return _0x266b06[_0x06a3('0x9')](_0x06a3('0xa'),[],{});};
\ No newline at end of file
index b860b9c..1d1c1bc 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(_0x48717c,_0x28c558){var _0x24ecab=function(_0x4d037a){while(--_0x4d037a){_0x48717c['push'](_0x48717c['shift']());}};_0x24ecab(++_0x28c558);}(_0x70e0,0x17b));var _0x070e=function(_0x266ca8,_0x50230d){_0x266ca8=_0x266ca8-0x0;var _0x552bf8=_0x70e0[_0x266ca8];return _0x552bf8;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x4b8dc1,_0x4a2495){var _0x736b02=function(_0x411773){while(--_0x411773){_0x4b8dc1['push'](_0x4b8dc1['shift']());}};_0x736b02(++_0x4a2495);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xdd2bfa,_0x5bd304){_0xdd2bfa=_0xdd2bfa-0x0;var _0x55397e=_0xcb91[_0xdd2bfa];return _0x55397e;};'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 148f477..6c9b9a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf98=['DATE','exports','INTEGER','STRING'];(function(_0x5b1078,_0x16c786){var _0x28bc87=function(_0x45707f){while(--_0x45707f){_0x5b1078['push'](_0x5b1078['shift']());}};_0x28bc87(++_0x16c786);}(_0xcf98,0x8d));var _0x8cf9=function(_0x3ba158,_0x3bc5dd){_0x3ba158=_0x3ba158-0x0;var _0x13f546=_0xcf98[_0x3ba158];return _0x13f546;};'use strict';var Sequelize=require('sequelize');module[_0x8cf9('0x0')]={'state':{'type':Sequelize[_0x8cf9('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x8cf9('0x2')]},'scheduledat':{'type':Sequelize[_0x8cf9('0x3')]},'uniqueid':{'type':Sequelize[_0x8cf9('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x8cf9('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x8cf9('0x2')]},'campaigntype':{'type':Sequelize[_0x8cf9('0x2')]},'membername':{'type':Sequelize[_0x8cf9('0x2')]}};
\ No newline at end of file
+var _0x6333=['DATE','INTEGER','STRING'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x6333,0x83));var _0x3633=function(_0xe4269d,_0x29f263){_0xe4269d=_0xe4269d-0x0;var _0x43330a=_0x6333[_0xe4269d];return _0x43330a;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x3633('0x0')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0x3633('0x0')]},'starttime':{'type':Sequelize[_0x3633('0x1')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x3633('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x3633('0x0')]},'membername':{'type':Sequelize[_0x3633('0x0')]}};
\ No newline at end of file
index 0e9b0ac..572012c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc06b=['rimraf','../../config/environment','./reportAgentPreview.attributes','ReportAgentPreview','report_agent_preview','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3592c6,_0x4ab3b9){var _0x29396b=function(_0x16653d){while(--_0x16653d){_0x3592c6['push'](_0x3592c6['shift']());}};_0x29396b(++_0x4ab3b9);}(_0xc06b,0x1cd));var _0xbc06=function(_0x4709c8,_0x3384ca){_0x4709c8=_0x4709c8-0x0;var _0x478cdd=_0xc06b[_0x4709c8];return _0x478cdd;};'use strict';var _=require(_0xbc06('0x0'));var util=require('util');var logger=require(_0xbc06('0x1'))(_0xbc06('0x2'));var moment=require(_0xbc06('0x3'));var BPromise=require(_0xbc06('0x4'));var rp=require(_0xbc06('0x5'));var fs=require('fs');var path=require(_0xbc06('0x6'));var rimraf=require(_0xbc06('0x7'));var config=require(_0xbc06('0x8'));var attributes=require(_0xbc06('0x9'));module['exports']=function(_0x2d4b3f,_0x31afe3){return _0x2d4b3f['define'](_0xbc06('0xa'),attributes,{'tableName':_0xbc06('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa467=['exports','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./reportAgentPreview.attributes'];(function(_0x4c5409,_0x274a87){var _0x333406=function(_0x3adbbf){while(--_0x3adbbf){_0x4c5409['push'](_0x4c5409['shift']());}};_0x333406(++_0x274a87);}(_0xa467,0x162));var _0x7a46=function(_0xc466f3,_0x1d184f){_0xc466f3=_0xc466f3-0x0;var _0x2bae19=_0xa467[_0xc466f3];return _0x2bae19;};'use strict';var _=require(_0x7a46('0x0'));var util=require(_0x7a46('0x1'));var logger=require(_0x7a46('0x2'))(_0x7a46('0x3'));var moment=require(_0x7a46('0x4'));var BPromise=require(_0x7a46('0x5'));var rp=require(_0x7a46('0x6'));var fs=require('fs');var path=require(_0x7a46('0x7'));var rimraf=require('rimraf');var config=require(_0x7a46('0x8'));var attributes=require(_0x7a46('0x9'));module[_0x7a46('0xa')]=function(_0x352c19,_0x4960ae){return _0x352c19['define'](_0x7a46('0xb'),attributes,{'tableName':_0x7a46('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0b8e07d..95cfcff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5af7=['then','ReportAgentPreview,\x20%s,\x20%s','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0x57d628,_0xda6747){var _0x2f8486=function(_0x5f2cba){while(--_0x5f2cba){_0x57d628['push'](_0x57d628['shift']());}};_0x2f8486(++_0xda6747);}(_0x5af7,0xf2));var _0x75af=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0x5af7[_0x4a3898];return _0x25ceb0;};'use strict';var _=require('lodash');var util=require(_0x75af('0x0'));var moment=require(_0x75af('0x1'));var BPromise=require(_0x75af('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x75af('0x3'));var db=require(_0x75af('0x4'))['db'];var utils=require(_0x75af('0x5'));var logger=require(_0x75af('0x6'))('rpc');var config=require(_0x75af('0x7'));var jayson=require(_0x75af('0x8'));var client=jayson['client'][_0x75af('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1e58bb,_0x142f70,_0x3fedb3){return new BPromise(function(_0x54d22e,_0x3e3db2){return client['request'](_0x1e58bb,_0x3fedb3)[_0x75af('0xa')](function(_0x42ff93){logger['info'](_0x75af('0xb'),_0x142f70,'request\x20sent');logger[_0x75af('0xc')](_0x75af('0xd'),_0x142f70,_0x75af('0xe'),JSON[_0x75af('0xf')](_0x42ff93));if(_0x42ff93[_0x75af('0x10')]){if(_0x42ff93[_0x75af('0x10')][_0x75af('0x11')]===0x1f4){logger[_0x75af('0x10')](_0x75af('0xb'),_0x142f70,_0x42ff93[_0x75af('0x10')]['message']);return _0x3e3db2(_0x42ff93['error'][_0x75af('0x12')]);}logger['error']('ReportAgentPreview,\x20%s,\x20%s',_0x142f70,_0x42ff93[_0x75af('0x10')][_0x75af('0x12')]);return _0x54d22e(_0x42ff93[_0x75af('0x10')][_0x75af('0x12')]);}else{logger[_0x75af('0x13')]('ReportAgentPreview,\x20%s,\x20%s',_0x142f70,_0x75af('0xe'));_0x54d22e(_0x42ff93[_0x75af('0x14')][_0x75af('0x12')]);}})['catch'](function(_0x13c7bd){logger[_0x75af('0x10')](_0x75af('0xb'),_0x142f70,_0x13c7bd);_0x3e3db2(_0x13c7bd);});});}exports[_0x75af('0x15')]=function(_0xb2a4b0){var _0x3487d2=this;return new Promise(function(_0x2e02ff,_0x16df21){return db[_0x75af('0x16')][_0x75af('0x17')](_0xb2a4b0[_0x75af('0x18')],{'raw':_0xb2a4b0[_0x75af('0x19')]?_0xb2a4b0['options'][_0x75af('0x1a')]===undefined?!![]:![]:!![]})[_0x75af('0xa')](function(_0x4fca30){logger['info'](_0x75af('0x15'),_0xb2a4b0);logger[_0x75af('0xc')]('CreateReportAgentPreview',_0xb2a4b0,JSON['stringify'](_0x4fca30));_0x2e02ff(_0x4fca30);})[_0x75af('0x1b')](function(_0xc87fce){logger[_0x75af('0x10')]('CreateReportAgentPreview',_0xc87fce[_0x75af('0x12')],_0xb2a4b0);_0x16df21(_0x3487d2[_0x75af('0x10')](0x1f4,_0xc87fce[_0x75af('0x12')]));});});};
\ No newline at end of file
+var _0x89b4=['create','body','options','raw','info','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview'];(function(_0x9fc132,_0x18ec3a){var _0x58351b=function(_0x5258e7){while(--_0x5258e7){_0x9fc132['push'](_0x9fc132['shift']());}};_0x58351b(++_0x18ec3a);}(_0x89b4,0xe5));var _0x489b=function(_0x548b61,_0x34c9aa){_0x548b61=_0x548b61-0x0;var _0x5618c1=_0x89b4[_0x548b61];return _0x5618c1;};'use strict';var _=require('lodash');var util=require(_0x489b('0x0'));var moment=require(_0x489b('0x1'));var BPromise=require(_0x489b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x489b('0x3'));var db=require(_0x489b('0x4'))['db'];var utils=require(_0x489b('0x5'));var logger=require(_0x489b('0x6'))(_0x489b('0x7'));var config=require('../../config/environment');var jayson=require(_0x489b('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x55c7d0,_0x4b1397,_0x1babd4){return new BPromise(function(_0x4c2aff,_0x3d4f73){return client[_0x489b('0x9')](_0x55c7d0,_0x1babd4)[_0x489b('0xa')](function(_0x12a789){logger['info'](_0x489b('0xb'),_0x4b1397,_0x489b('0xc'));logger[_0x489b('0xd')](_0x489b('0xe'),_0x4b1397,'request\x20sent',JSON[_0x489b('0xf')](_0x12a789));if(_0x12a789[_0x489b('0x10')]){if(_0x12a789[_0x489b('0x10')][_0x489b('0x11')]===0x1f4){logger['error'](_0x489b('0xb'),_0x4b1397,_0x12a789[_0x489b('0x10')]['message']);return _0x3d4f73(_0x12a789[_0x489b('0x10')][_0x489b('0x12')]);}logger[_0x489b('0x10')](_0x489b('0xb'),_0x4b1397,_0x12a789['error'][_0x489b('0x12')]);return _0x4c2aff(_0x12a789[_0x489b('0x10')][_0x489b('0x12')]);}else{logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x4b1397,'request\x20sent');_0x4c2aff(_0x12a789[_0x489b('0x13')]['message']);}})[_0x489b('0x14')](function(_0x27df8f){logger[_0x489b('0x10')](_0x489b('0xb'),_0x4b1397,_0x27df8f);_0x3d4f73(_0x27df8f);});});}exports[_0x489b('0x15')]=function(_0x1e7e22){var _0x18827e=this;return new Promise(function(_0x1d1aa7,_0x5438f6){return db[_0x489b('0x16')][_0x489b('0x17')](_0x1e7e22[_0x489b('0x18')],{'raw':_0x1e7e22[_0x489b('0x19')]?_0x1e7e22[_0x489b('0x19')][_0x489b('0x1a')]===undefined?!![]:![]:!![]})[_0x489b('0xa')](function(_0xf70891){logger[_0x489b('0x1b')](_0x489b('0x15'),_0x1e7e22);logger['debug'](_0x489b('0x15'),_0x1e7e22,JSON[_0x489b('0xf')](_0xf70891));_0x1d1aa7(_0xf70891);})[_0x489b('0x14')](function(_0x5932ba){logger[_0x489b('0x10')](_0x489b('0x15'),_0x5932ba[_0x489b('0x12')],_0x1e7e22);_0x5438f6(_0x18827e[_0x489b('0x10')](0x1f4,_0x5932ba[_0x489b('0x12')]));});});};
\ No newline at end of file
index 0ee905b..e996d39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc3=['mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','agentNotify','exports','multer','path','express','Router','./rpc.controller','/voice/channels','isAuthenticated','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','/whatsapp/queues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','outbound','outboundChannels','agents','put','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','faxAccounts','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify'];(function(_0x310ad1,_0x2d5bde){var _0x15374b=function(_0x5e09bf){while(--_0x5e09bf){_0x310ad1['push'](_0x310ad1['shift']());}};_0x15374b(++_0x2d5bde);}(_0x4bc3,0xfe));var _0x34bc=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x4bc3[_0x45d55e];return _0x29812a;};'use strict';var multer=require(_0x34bc('0x0'));var util=require('util');var path=require(_0x34bc('0x1'));var express=require(_0x34bc('0x2'));var router=express[_0x34bc('0x3')]();var auth=require('../../components/auth/service');var controller=require(_0x34bc('0x4'));router['get'](_0x34bc('0x5'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x7')]);router[_0x34bc('0x8')](_0x34bc('0x9'),auth[_0x34bc('0x6')](),controller[_0x34bc('0xa')]);router[_0x34bc('0x8')](_0x34bc('0xb'),auth[_0x34bc('0x6')](),controller[_0x34bc('0xc')]);router[_0x34bc('0x8')](_0x34bc('0xd'),auth[_0x34bc('0x6')](),controller['voiceQueues']);router[_0x34bc('0x8')](_0x34bc('0xe'),auth[_0x34bc('0x6')](),controller[_0x34bc('0xf')]);router['get'](_0x34bc('0x10'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x11')]);router[_0x34bc('0x8')](_0x34bc('0x12'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x13')]);router[_0x34bc('0x8')](_0x34bc('0x14'),auth['isAuthenticated'](),controller[_0x34bc('0x15')]);router[_0x34bc('0x8')](_0x34bc('0x16'),auth[_0x34bc('0x6')](),controller['smsQueues']);router[_0x34bc('0x8')](_0x34bc('0x17'),auth[_0x34bc('0x6')](),controller['whatsappQueues']);router[_0x34bc('0x8')](_0x34bc('0x18'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x19')]);router[_0x34bc('0x8')](_0x34bc('0x1a'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x1b')]);router[_0x34bc('0x8')]('/voice/queues/channels',auth['isAuthenticated'](),controller[_0x34bc('0x1c')]);router[_0x34bc('0x8')]('/voice/queues/channels/:uniqueid',auth[_0x34bc('0x6')](),controller[_0x34bc('0x1d')]);router[_0x34bc('0x8')](_0x34bc('0x1e'),auth[_0x34bc('0x6')](),controller['voiceQueuesChannelHangup']);router['get'](_0x34bc('0x1f'),auth[_0x34bc('0x6')](),controller['voiceQueuesChannelRedirect']);router[_0x34bc('0x8')](_0x34bc('0x20'),auth[_0x34bc('0x6')](),controller['showVoiceQueues']);router['put'](_0x34bc('0x20'),auth[_0x34bc('0x6')](),controller['updateVoiceQueue']);router[_0x34bc('0x8')]('/outbound',auth[_0x34bc('0x6')](),controller[_0x34bc('0x21')]);router[_0x34bc('0x8')]('/outbound/channels',auth[_0x34bc('0x6')](),controller[_0x34bc('0x22')]);router[_0x34bc('0x8')]('/agents',auth[_0x34bc('0x6')](),controller[_0x34bc('0x23')]);router[_0x34bc('0x24')](_0x34bc('0x25'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x26')]);router[_0x34bc('0x8')](_0x34bc('0x27'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x28')]);router[_0x34bc('0x8')](_0x34bc('0x29'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x2a')]);router[_0x34bc('0x8')](_0x34bc('0x2b'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x2c')]);router[_0x34bc('0x8')]('/fax/accounts',auth['isAuthenticated'](),controller[_0x34bc('0x2d')]);router[_0x34bc('0x8')]('/chat/queues/waitinginteractions',auth[_0x34bc('0x6')](),controller[_0x34bc('0x2e')]);router[_0x34bc('0x8')]('/mail/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0x34bc('0x2f')]);router[_0x34bc('0x8')](_0x34bc('0x30'),auth['isAuthenticated'](),controller[_0x34bc('0x31')]);router[_0x34bc('0x8')]('/openchannel/queues/:id/waitinginteractions',auth[_0x34bc('0x6')](),controller[_0x34bc('0x32')]);router[_0x34bc('0x8')](_0x34bc('0x33'),auth['isAuthenticated'](),controller['smsQueuesWaitingInteractions']);router['get']('/whatsapp/queues/waitinginteractions',auth[_0x34bc('0x6')](),controller[_0x34bc('0x34')]);router[_0x34bc('0x8')](_0x34bc('0x35'),auth['isAuthenticated'](),controller[_0x34bc('0x36')]);router[_0x34bc('0x37')](_0x34bc('0x38'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x39')](_0x34bc('0x3a')));router[_0x34bc('0x8')](_0x34bc('0x3b'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x3c')]);router[_0x34bc('0x37')](_0x34bc('0x3d'),auth[_0x34bc('0x6')](),controller['queueNotify'](_0x34bc('0x3e')));router[_0x34bc('0x8')](_0x34bc('0x3f'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x40')]);router[_0x34bc('0x37')](_0x34bc('0x41'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x39')]('fax'));router[_0x34bc('0x8')]('/fax/queues/:id',auth[_0x34bc('0x6')](),controller['showFaxQueues']);router['post'](_0x34bc('0x42'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x39')](_0x34bc('0x43')));router[_0x34bc('0x8')](_0x34bc('0x44'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x45')]);router['post'](_0x34bc('0x46'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x39')](_0x34bc('0x47')));router[_0x34bc('0x37')](_0x34bc('0x48'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x39')]('whatsapp'));router[_0x34bc('0x8')]('/sms/queues/:id',auth['isAuthenticated'](),controller[_0x34bc('0x49')]);router[_0x34bc('0x8')](_0x34bc('0x4a'),auth[_0x34bc('0x6')](),controller[_0x34bc('0x4b')]);router['post']('/agents/:id/notify',auth[_0x34bc('0x6')](),controller[_0x34bc('0x4c')]);module[_0x34bc('0x4d')]=router;
\ No newline at end of file
+var _0x650f=['/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','express','Router','../../components/auth/service','./rpc.controller','isAuthenticated','/voice/channels/:uniqueid/mixmonitor','get','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','openchannelQueues','/sms/queues','/whatsapp/queues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','put','updateVoiceQueue','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','telephones','trunks','campaigns','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/fax/queues/:id/notify','queueNotify','fax','/fax/queues/:id','showFaxQueues'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0x650f,0x13c));var _0xf650=function(_0x11233b,_0x5650ee){_0x11233b=_0x11233b-0x0;var _0x27ad6c=_0x650f[_0x11233b];return _0x27ad6c;};'use strict';var multer=require(_0xf650('0x0'));var util=require(_0xf650('0x1'));var path=require(_0xf650('0x2'));var express=require(_0xf650('0x3'));var router=express[_0xf650('0x4')]();var auth=require(_0xf650('0x5'));var controller=require(_0xf650('0x6'));router['get']('/voice/channels',auth[_0xf650('0x7')](),controller['voiceChannels']);router['get'](_0xf650('0x8'),auth['isAuthenticated'](),controller['voiceChannelMixMonitor']);router[_0xf650('0x9')](_0xf650('0xa'),auth[_0xf650('0x7')](),controller[_0xf650('0xb')]);router[_0xf650('0x9')]('/voice/queues',auth[_0xf650('0x7')](),controller[_0xf650('0xc')]);router['get'](_0xf650('0xd'),auth['isAuthenticated'](),controller[_0xf650('0xe')]);router[_0xf650('0x9')](_0xf650('0xf'),auth['isAuthenticated'](),controller[_0xf650('0x10')]);router[_0xf650('0x9')](_0xf650('0x11'),auth[_0xf650('0x7')](),controller['mailAccounts']);router[_0xf650('0x9')](_0xf650('0x12'),auth[_0xf650('0x7')](),controller[_0xf650('0x13')]);router[_0xf650('0x9')](_0xf650('0x14'),auth[_0xf650('0x7')](),controller['smsQueues']);router[_0xf650('0x9')](_0xf650('0x15'),auth[_0xf650('0x7')](),controller['whatsappQueues']);router['get'](_0xf650('0x16'),auth[_0xf650('0x7')](),controller[_0xf650('0x17')]);router[_0xf650('0x9')]('/voice/queues/preview/:id',auth[_0xf650('0x7')](),controller[_0xf650('0x18')]);router[_0xf650('0x9')](_0xf650('0x19'),auth[_0xf650('0x7')](),controller['voiceQueuesChannels']);router[_0xf650('0x9')](_0xf650('0x1a'),auth[_0xf650('0x7')](),controller[_0xf650('0x1b')]);router[_0xf650('0x9')](_0xf650('0x1c'),auth[_0xf650('0x7')](),controller[_0xf650('0x1d')]);router['get'](_0xf650('0x1e'),auth[_0xf650('0x7')](),controller['voiceQueuesChannelRedirect']);router['get'](_0xf650('0x1f'),auth[_0xf650('0x7')](),controller['showVoiceQueues']);router[_0xf650('0x20')](_0xf650('0x1f'),auth['isAuthenticated'](),controller[_0xf650('0x21')]);router['get']('/outbound',auth[_0xf650('0x7')](),controller['outbound']);router[_0xf650('0x9')]('/outbound/channels',auth[_0xf650('0x7')](),controller[_0xf650('0x22')]);router[_0xf650('0x9')](_0xf650('0x23'),auth[_0xf650('0x7')](),controller[_0xf650('0x24')]);router['put'](_0xf650('0x25'),auth[_0xf650('0x7')](),controller[_0xf650('0x26')]);router[_0xf650('0x9')]('/telephones',auth[_0xf650('0x7')](),controller[_0xf650('0x27')]);router[_0xf650('0x9')]('/trunks',auth[_0xf650('0x7')](),controller[_0xf650('0x28')]);router['get']('/campaigns',auth['isAuthenticated'](),controller[_0xf650('0x29')]);router[_0xf650('0x9')]('/fax/accounts',auth[_0xf650('0x7')](),controller[_0xf650('0x2a')]);router[_0xf650('0x9')](_0xf650('0x2b'),auth['isAuthenticated'](),controller[_0xf650('0x2c')]);router[_0xf650('0x9')]('/mail/queues/waitinginteractions',auth[_0xf650('0x7')](),controller[_0xf650('0x2d')]);router[_0xf650('0x9')]('/openchannel/queues/waitinginteractions',auth[_0xf650('0x7')](),controller['openchannelQueuesWaitingInteractions']);router[_0xf650('0x9')](_0xf650('0x2e'),auth['isAuthenticated'](),controller[_0xf650('0x2f')]);router['get'](_0xf650('0x30'),auth[_0xf650('0x7')](),controller['smsQueuesWaitingInteractions']);router[_0xf650('0x9')](_0xf650('0x31'),auth[_0xf650('0x7')](),controller[_0xf650('0x32')]);router[_0xf650('0x9')](_0xf650('0x33'),auth[_0xf650('0x7')](),controller[_0xf650('0x34')]);router[_0xf650('0x35')]('/mail/queues/:id/notify',auth[_0xf650('0x7')](),controller['queueNotify'](_0xf650('0x36')));router[_0xf650('0x9')](_0xf650('0x37'),auth['isAuthenticated'](),controller[_0xf650('0x38')]);router[_0xf650('0x35')](_0xf650('0x39'),auth[_0xf650('0x7')](),controller['queueNotify'](_0xf650('0x3a')));router[_0xf650('0x9')]('/chat/queues/:id',auth[_0xf650('0x7')](),controller['showChatQueues']);router[_0xf650('0x35')](_0xf650('0x3b'),auth[_0xf650('0x7')](),controller[_0xf650('0x3c')](_0xf650('0x3d')));router['get'](_0xf650('0x3e'),auth['isAuthenticated'](),controller[_0xf650('0x3f')]);router[_0xf650('0x35')](_0xf650('0x40'),auth['isAuthenticated'](),controller[_0xf650('0x3c')](_0xf650('0x41')));router[_0xf650('0x9')](_0xf650('0x42'),auth[_0xf650('0x7')](),controller[_0xf650('0x43')]);router[_0xf650('0x35')](_0xf650('0x44'),auth[_0xf650('0x7')](),controller[_0xf650('0x3c')](_0xf650('0x45')));router[_0xf650('0x35')](_0xf650('0x46'),auth[_0xf650('0x7')](),controller[_0xf650('0x3c')]('whatsapp'));router[_0xf650('0x9')]('/sms/queues/:id',auth['isAuthenticated'](),controller['showSmsQueues']);router[_0xf650('0x9')](_0xf650('0x47'),auth['isAuthenticated'](),controller[_0xf650('0x48')]);router[_0xf650('0x35')](_0xf650('0x49'),auth[_0xf650('0x7')](),controller[_0xf650('0x4a')]);module[_0xf650('0x4b')]=router;
\ No newline at end of file
index 960fd7d..abaf7e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['MessageId','InteractionId','QueueId','TransferReport','create','Start','queue','queueTransferTimeout','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','channel','chat','Website','User','agent','Agent\x20not\x20found','Message','update','From','bluebird','moment','../../mysqldb','../../config/logger','jayson/promise','client','http','request','then','error','message','result','catch','status','json','sendStatus','name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','VoiceChannelStopMixMonitor','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','findOrCreate','interface','internal','AgentCapacity','capacity','telephones','Trunks','Campaigns','chatQueues','ChatQueues','showChatQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','Account','Queue','findOne','\x20Queue\x20not\x20found','messageId','Interaction','\x20Message\x20not\x20found'];(function(_0x4a43ad,_0x3194cf){var _0x9adf9e=function(_0x4b4ccf){while(--_0x4b4ccf){_0x4a43ad['push'](_0x4a43ad['shift']());}};_0x9adf9e(++_0x3194cf);}(_0xe14b,0x93));var _0xbe14=function(_0x4248ee,_0x1a3b4a){_0x4248ee=_0x4248ee-0x0;var _0x5c1c8f=_0xe14b[_0x4248ee];return _0x5c1c8f;};'use strict';var BPromise=require(_0xbe14('0x0'));var moment=require(_0xbe14('0x1'));var _=require('lodash');var util=require('util');var db=require(_0xbe14('0x2'))['db'];var logger=require(_0xbe14('0x3'))('api');var jayson=require(_0xbe14('0x4'));var amiClient=jayson['client']['http']({'port':0x232a});var mailClient=jayson[_0xbe14('0x5')][_0xbe14('0x6')]({'port':0x232b});var routingClient=jayson[_0xbe14('0x5')][_0xbe14('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){var _0x496063=_0x196fca?_0x196fca:amiClient;return _0x496063[_0xbe14('0x7')](_0x1d9ade,_0x39387e)[_0xbe14('0x8')](function(_0xd68cd7){if(_0xd68cd7[_0xbe14('0x9')]){if(_0xd68cd7['error']['code']===0x1f4){return _0x50f909(_0xd68cd7[_0xbe14('0x9')][_0xbe14('0xa')]);}return _0x566ae7(_0xd68cd7['error'][_0xbe14('0xa')]);}else{_0x566ae7(_0xd68cd7[_0xbe14('0xb')]);}})[_0xbe14('0xc')](function(_0x3d38c2){_0x50f909(_0x3d38c2);});});}function respondWithResult(_0x27792f,_0x3b898d){_0x3b898d=_0x3b898d||0xc8;return function(_0x23a730){if(_0x23a730){return _0x27792f[_0xbe14('0xd')](_0x3b898d)[_0xbe14('0xe')](_0x23a730);}return _0x27792f[_0xbe14('0xf')](0x194);};}function handleError(_0x1e4826,_0x33fd54){_0x33fd54=_0x33fd54||0x1f4;return function(_0x813399){logger['error'](_0x813399['stack']);if(_0x813399[_0xbe14('0x10')]){delete _0x813399[_0xbe14('0x10')];}_0x1e4826[_0xbe14('0xd')](_0x33fd54)[_0xbe14('0x11')](_0x813399);};}function findById(_0x4e8f34){return function(_0x21c789){if(!_[_0xbe14('0x12')](_0x4e8f34)&&!_[_0xbe14('0x12')](_0x21c789)&&!_[_0xbe14('0x12')](_0x21c789[_0xbe14('0x13')])){return _[_0xbe14('0x14')](_0x21c789[_0xbe14('0x13')],function(_0x5ea1f8){return _0x5ea1f8['id']==_0x4e8f34;});}return null;};}exports[_0xbe14('0x15')]=function(_0x456ca8,_0x329588){return respondWithRpcPromise(_0xbe14('0x16'),_0x456ca8[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x329588,null))['catch'](handleError(_0x329588,null));};exports[_0xbe14('0x18')]=function(_0x4a1bbd,_0x417c8d){return respondWithRpcPromise(_0xbe14('0x19'),_[_0xbe14('0x1a')](_0x4a1bbd['query'],_0x4a1bbd[_0xbe14('0x1b')]))['then'](respondWithResult(_0x417c8d,null))[_0xbe14('0xc')](handleError(_0x417c8d,null));};exports['voiceChannelStopMixMonitor']=function(_0x32e8eb,_0x4a25fa){return respondWithRpcPromise(_0xbe14('0x1c'),_[_0xbe14('0x1a')](_0x32e8eb['query'],_0x32e8eb[_0xbe14('0x1b')]))['then'](respondWithResult(_0x4a25fa,null))[_0xbe14('0xc')](handleError(_0x4a25fa,null));};exports['voiceQueues']=function(_0x36a21e,_0x5fa043){return respondWithRpcPromise(_0xbe14('0x1d'),_0x36a21e[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x5fa043,null))[_0xbe14('0xc')](handleError(_0x5fa043,null));};exports['showVoiceQueues']=function(_0x1822e0,_0x1ba46a){return respondWithRpcPromise(_0xbe14('0x1d'),_0x1822e0[_0xbe14('0x17')])['then'](findById(_0x1822e0[_0xbe14('0x1b')]['id']))[_0xbe14('0x8')](respondWithResult(_0x1ba46a,null))['catch'](handleError(_0x1ba46a,null));};exports[_0xbe14('0x1e')]=function(_0x3b3e84,_0x1c7cc7){return respondWithRpcPromise(_0xbe14('0x1f'),_[_0xbe14('0x1a')](_0x3b3e84[_0xbe14('0x20')],_0x3b3e84[_0xbe14('0x1b')]))[_0xbe14('0x8')](respondWithResult(_0x1c7cc7,null))[_0xbe14('0xc')](handleError(_0x1c7cc7,null));};exports[_0xbe14('0x21')]=function(_0x40538f,_0x3bf43c){return respondWithRpcPromise(_0xbe14('0x22'),_[_0xbe14('0x1a')](_0x40538f[_0xbe14('0x17')],_0x40538f[_0xbe14('0x1b')]))[_0xbe14('0x8')](respondWithResult(_0x3bf43c,null))[_0xbe14('0xc')](handleError(_0x3bf43c,null));};exports[_0xbe14('0x23')]=function(_0x14e7c4,_0x581e86){return respondWithRpcPromise(_0xbe14('0x24'),_0x14e7c4['query'])['then'](respondWithResult(_0x581e86,null))[_0xbe14('0xc')](handleError(_0x581e86,null));};exports['voiceQueuesChannel']=function(_0x243524,_0x345b0){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x243524['query'],_0x243524[_0xbe14('0x1b')]))[_0xbe14('0x8')](respondWithResult(_0x345b0,null))['catch'](handleError(_0x345b0,null));};exports[_0xbe14('0x25')]=function(_0x1faf3e,_0x452635){return respondWithRpcPromise(_0xbe14('0x26'),_[_0xbe14('0x1a')](_0x1faf3e['query'],_0x1faf3e['params']))[_0xbe14('0x8')](respondWithResult(_0x452635,null))['catch'](handleError(_0x452635,null));};exports['voiceQueuesChannelRedirect']=function(_0x5c5e9f,_0x163ef7){return respondWithRpcPromise(_0xbe14('0x27'),_[_0xbe14('0x1a')](_0x5c5e9f[_0xbe14('0x17')],_0x5c5e9f[_0xbe14('0x1b')]))[_0xbe14('0x8')](respondWithResult(_0x163ef7,null))[_0xbe14('0xc')](handleError(_0x163ef7,null));};exports[_0xbe14('0x28')]=function(_0x2d9c12,_0x2dfd5a){return respondWithRpcPromise(_0xbe14('0x29'),_0x2d9c12[_0xbe14('0x17')])['then'](respondWithResult(_0x2dfd5a,null))['catch'](handleError(_0x2dfd5a,null));};exports[_0xbe14('0x2a')]=function(_0x2951e1,_0x13bfcf){return respondWithRpcPromise('OutboundChannels',_0x2951e1[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x13bfcf,null))[_0xbe14('0xc')](handleError(_0x13bfcf,null));};exports[_0xbe14('0x2b')]=function(_0x3bd454,_0x25ee1f){var _0x19fa30;return respondWithRpcPromise(_0xbe14('0x2c'),_0x3bd454[_0xbe14('0x17')])['then'](function(_0xe51424){_0x19fa30=_0xe51424;return respondWithRpcPromise(_0xbe14('0x2c'),_0x3bd454[_0xbe14('0x17')],routingClient);})[_0xbe14('0x8')](function(_0x3287b9){return _[_0xbe14('0x1a')]({},_0x3287b9,_0x19fa30);})['then'](respondWithResult(_0x25ee1f,null))[_0xbe14('0xc')](handleError(_0x25ee1f,null));};exports[_0xbe14('0x2d')]=function(_0x1220c9,_0x36263c){if(_0x1220c9['body']&&_0x1220c9['body'][_0xbe14('0x2e')]&&_0x1220c9[_0xbe14('0x2f')]&&_0x1220c9[_0xbe14('0x2f')]['name']){for(var _0x5d5318 in _0x1220c9[_0xbe14('0x20')]['interaction']){if(_0x1220c9['body'][_0xbe14('0x2e')][_0xbe14('0x30')](_0x5d5318)){db[_0xbe14('0x31')]['findAll']({'where':{'channel':_0x5d5318,'membername':_0x1220c9['user']['name'],'type':_0xbe14('0x32'),'exitAt':null,'uniqueid':_0x1220c9[_0xbe14('0x20')][_0xbe14('0x2e')][_0x5d5318]&&_0x1220c9['body'][_0xbe14('0x2e')][_0x5d5318][_0xbe14('0x33')]?{'$notIn':_0x1220c9[_0xbe14('0x20')][_0xbe14('0x2e')][_0x5d5318]}:{'$ne':null}}})['then'](function(_0x4a1a4b){var _0x3e2fd3=moment()[_0xbe14('0x34')](_0xbe14('0x35'));for(var _0xb2b285=0x0,_0x2550dc=_0x4a1a4b['length'];_0xb2b285<_0x2550dc;_0xb2b285+=0x1){_0x4a1a4b[_0xb2b285]['updateAttributes']({'exitAt':_0x3e2fd3});}});for(var _0x46af81=0x0;_0x46af81<_0x1220c9[_0xbe14('0x20')][_0xbe14('0x2e')][_0x5d5318][_0xbe14('0x33')];_0x46af81+=0x1){db['MemberReport'][_0xbe14('0x36')]({'where':{'channel':_0x5d5318,'membername':_0x1220c9[_0xbe14('0x2f')]['name'],'type':_0xbe14('0x32'),'uniqueid':_0x1220c9[_0xbe14('0x20')][_0xbe14('0x2e')][_0x5d5318][_0x46af81],'exitAt':null},'defaults':{'channel':_0x5d5318,'membername':_0x1220c9[_0xbe14('0x2f')]['name'],'interface':_['isNil'](_0x1220c9[_0xbe14('0x2f')][_0xbe14('0x37')])?util['format']('SIP/%s',_0x1220c9[_0xbe14('0x2f')][_0xbe14('0x10')]):_0x1220c9[_0xbe14('0x2f')][_0xbe14('0x37')],'type':_0xbe14('0x32'),'enterAt':moment()[_0xbe14('0x34')](_0xbe14('0x35')),'role':'agent','internal':_0x1220c9[_0xbe14('0x2f')][_0xbe14('0x38')],'uniqueid':_0x1220c9[_0xbe14('0x20')][_0xbe14('0x2e')][_0x5d5318][_0x46af81]}});}}}}return respondWithRpcPromise(_0xbe14('0x39'),{'id':_0x1220c9['params']['id'],'capacity':_0x1220c9[_0xbe14('0x20')][_0xbe14('0x3a')]},routingClient)[_0xbe14('0x8')](respondWithResult(_0x36263c,null))[_0xbe14('0xc')](handleError(_0x36263c,null));};exports[_0xbe14('0x3b')]=function(_0x2dbeb1,_0x505829){return respondWithRpcPromise('Telephones',_0x2dbeb1[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x505829,null))[_0xbe14('0xc')](handleError(_0x505829,null));};exports['trunks']=function(_0x497b00,_0x44fe0d){return respondWithRpcPromise(_0xbe14('0x3c'),_0x497b00['query'])[_0xbe14('0x8')](respondWithResult(_0x44fe0d,null))[_0xbe14('0xc')](handleError(_0x44fe0d,null));};exports['campaigns']=function(_0x28f995,_0x4a40d2){return respondWithRpcPromise(_0xbe14('0x3d'),_0x28f995[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x4a40d2,null))['catch'](handleError(_0x4a40d2,null));};exports[_0xbe14('0x3e')]=function(_0x404212,_0x5dc78a){return respondWithRpcPromise(_0xbe14('0x3f'),_0x404212[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x5dc78a,null))[_0xbe14('0xc')](handleError(_0x5dc78a,null));};exports[_0xbe14('0x40')]=function(_0x4f06a3,_0x42a346){return respondWithRpcPromise(_0xbe14('0x3f'),_0x4f06a3[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](findById(_0x4f06a3[_0xbe14('0x1b')]['id']))[_0xbe14('0x8')](respondWithResult(_0x42a346,null))[_0xbe14('0xc')](handleError(_0x42a346,null));};exports['mailQueues']=function(_0x72c875,_0x1b47a4){return respondWithRpcPromise(_0xbe14('0x41'),_0x72c875[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x1b47a4,null))[_0xbe14('0xc')](handleError(_0x1b47a4,null));};exports[_0xbe14('0x42')]=function(_0x32df3c,_0x285b6e){return respondWithRpcPromise(_0xbe14('0x41'),_0x32df3c[_0xbe14('0x17')],routingClient)['then'](findById(_0x32df3c['params']['id']))['then'](respondWithResult(_0x285b6e,null))[_0xbe14('0xc')](handleError(_0x285b6e,null));};exports[_0xbe14('0x43')]=function(_0x2f4e52,_0xf79b21){return respondWithRpcPromise(_0xbe14('0x44'),_0x2f4e52[_0xbe14('0x17')],mailClient)[_0xbe14('0x8')](respondWithResult(_0xf79b21,null))[_0xbe14('0xc')](handleError(_0xf79b21,null));};exports[_0xbe14('0x45')]=function(_0x451b0b,_0x603816){return respondWithRpcPromise(_0xbe14('0x46'),_0x451b0b[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x603816,null))[_0xbe14('0xc')](handleError(_0x603816,null));};exports[_0xbe14('0x47')]=function(_0x179077,_0x2225d9){return respondWithRpcPromise(_0xbe14('0x46'),_0x179077[_0xbe14('0x17')],routingClient)['then'](findById(_0x179077[_0xbe14('0x1b')]['id']))[_0xbe14('0x8')](respondWithResult(_0x2225d9,null))[_0xbe14('0xc')](handleError(_0x2225d9,null));};exports[_0xbe14('0x48')]=function(_0x3ee6b7,_0x222944){return respondWithRpcPromise(_0xbe14('0x49'),_0x3ee6b7[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x222944,null))[_0xbe14('0xc')](handleError(_0x222944,null));};exports['showSmsQueues']=function(_0x18be56,_0x442ec4){return respondWithRpcPromise(_0xbe14('0x49'),_0x18be56[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](findById(_0x18be56['params']['id']))[_0xbe14('0x8')](respondWithResult(_0x442ec4,null))[_0xbe14('0xc')](handleError(_0x442ec4,null));};exports[_0xbe14('0x4a')]=function(_0xd4e1c7,_0x46ac9c){return respondWithRpcPromise('WhatsappQueues',_0xd4e1c7[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x46ac9c,null))[_0xbe14('0xc')](handleError(_0x46ac9c,null));};exports[_0xbe14('0x4b')]=function(_0xaebce8,_0x289c4d){return respondWithRpcPromise(_0xbe14('0x4c'),_0xaebce8[_0xbe14('0x17')],routingClient)['then'](findById(_0xaebce8[_0xbe14('0x1b')]['id']))[_0xbe14('0x8')](respondWithResult(_0x289c4d,null))[_0xbe14('0xc')](handleError(_0x289c4d,null));};exports[_0xbe14('0x4d')]=function(_0x5982b7,_0xa4b2a3){return respondWithRpcPromise(_0xbe14('0x4e'),_0x5982b7['query'],routingClient)['then'](respondWithResult(_0xa4b2a3,null))[_0xbe14('0xc')](handleError(_0xa4b2a3,null));};exports[_0xbe14('0x4f')]=function(_0x2d2643,_0x2510a0){return respondWithRpcPromise(_0xbe14('0x4e'),_0x2d2643[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](findById(_0x2d2643[_0xbe14('0x1b')]['id']))['then'](respondWithResult(_0x2510a0,null))['catch'](handleError(_0x2510a0,null));};exports[_0xbe14('0x50')]=function(_0x1c18b6,_0x29aa52){return respondWithRpcPromise('FaxAccounts',_0x1c18b6[_0xbe14('0x17')])[_0xbe14('0x8')](respondWithResult(_0x29aa52,null))[_0xbe14('0xc')](handleError(_0x29aa52,null));};exports[_0xbe14('0x51')]=function(_0x468e9f,_0x1ef09b){return respondWithRpcPromise(_0xbe14('0x52'),_0x468e9f['query'],routingClient)[_0xbe14('0x8')](respondWithResult(_0x1ef09b,null))[_0xbe14('0xc')](handleError(_0x1ef09b,null));};exports[_0xbe14('0x53')]=function(_0x3afc5a,_0x469555){return respondWithRpcPromise(_0xbe14('0x54'),_0x3afc5a[_0xbe14('0x17')],routingClient)['then'](respondWithResult(_0x469555,null))[_0xbe14('0xc')](handleError(_0x469555,null));};exports[_0xbe14('0x55')]=function(_0x3cd17e,_0x1c0932){return respondWithRpcPromise(_0xbe14('0x56'),_0x3cd17e[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x1c0932,null))[_0xbe14('0xc')](handleError(_0x1c0932,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x1e5ce1,_0x401968){return respondWithRpcPromise(_0xbe14('0x56'),_0x1e5ce1[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](function(_0x17576b){if(_0x1e5ce1['query'][_0xbe14('0x57')]!==undefined){var _0x175213=_(_0x17576b[_0xbe14('0x13')])[_0xbe14('0x58')]([_0x1e5ce1['query'][_0xbe14('0x57')],_0x1e5ce1[_0xbe14('0x1b')]['id']])[_0xbe14('0x59')](_0xbe14('0x5a'))[_0xbe14('0x5b')]()[_0xbe14('0x5c')]();return _0x17576b[_0xbe14('0x13')]['filter'](function(_0x70ed08){return _0x175213['indexOf'](_0x70ed08[_0xbe14('0x5a')])>-0x1;});}else{return _0x17576b['rows'][_0xbe14('0x58')](function(_0x21837c){return _0x21837c[_0xbe14('0x5a')]===parseInt(_0x1e5ce1['params']['id']);});}})[_0xbe14('0x8')](respondWithResult(_0x401968,null))[_0xbe14('0xc')](handleError(_0x401968,null));};exports[_0xbe14('0x5d')]=function(_0x546f22,_0x41a896){return respondWithRpcPromise(_0xbe14('0x5e'),_0x546f22[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x41a896,null))['catch'](handleError(_0x41a896,null));};exports[_0xbe14('0x5f')]=function(_0x39bc54,_0x34f90b){return respondWithRpcPromise(_0xbe14('0x60'),_0x39bc54[_0xbe14('0x17')],routingClient)[_0xbe14('0x8')](respondWithResult(_0x34f90b,null))[_0xbe14('0xc')](handleError(_0x34f90b,null));};exports['faxQueuesWaitingInteractions']=function(_0x2ff94c,_0x123f4f){return respondWithRpcPromise(_0xbe14('0x61'),_0x2ff94c['query'],routingClient)[_0xbe14('0x8')](respondWithResult(_0x123f4f,null))[_0xbe14('0xc')](handleError(_0x123f4f,null));};exports[_0xbe14('0x62')]=function(_0x5bc52b){return function(_0xa53262,_0x1205d1){var _0x47d7bb,_0x2be969;var _0x49990b=_[_0xbe14('0x63')](_0x5bc52b);var _0x337073=_0x5bc52b==='chat'?'Website':_0xbe14('0x64');return db[_0x49990b+_0xbe14('0x65')][_0xbe14('0x66')]({'raw':!![],'where':{'id':_0xa53262['params']['id']}})[_0xbe14('0x8')](function(_0x30c03b){if(_[_0xbe14('0x12')](_0x30c03b)){throw new Error(_0x49990b+_0xbe14('0x67'));}_0x47d7bb=_0x30c03b;return db[_0x49990b+'Message']['findOne']({'where':{'id':_0xa53262[_0xbe14('0x20')][_0xbe14('0x68')]},'include':[{'model':db[_0x49990b+_0xbe14('0x69')],'as':_0xbe14('0x69')},{'model':db[_0x49990b+_0x337073],'as':_0xbe14('0x64')}]});})[_0xbe14('0x8')](function(_0x139aab){if(_['isNil'](_0x139aab)){throw new Error(_0x49990b+_0xbe14('0x6a'));}_0x2be969=_0x139aab;return _0x139aab['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xbe14('0x8')](function(){var _0x3a01bb={'uniqueid':_0x5bc52b+'.'+_0x2be969['id']+'.'+_0x2be969[_0xbe14('0x69')]['id'],'FromUserId':_0xa53262[_0xbe14('0x2f')]['id'],'type':'queue'};_0x3a01bb[_0x49990b+_0xbe14('0x6b')]=_0x2be969['id'];_0x3a01bb[_0x49990b+_0xbe14('0x6c')]=_0x2be969[_0xbe14('0x69')]['id'];_0x3a01bb['From'+_0x49990b+_0x337073+'Id']=_0x2be969[_0xbe14('0x64')]['id'];_0x3a01bb['To'+_0x49990b+_0xbe14('0x6d')]=_0x47d7bb['id'];return db[_0x49990b+_0xbe14('0x6e')][_0xbe14('0x6f')](_0x3a01bb);})[_0xbe14('0x8')](function(){return respondWithRpcPromise(_0xbe14('0x70'),{'channel':_0x5bc52b,'interaction':_0x2be969[_0xbe14('0x69')],'message':_0x2be969,'account':_0x2be969[_0xbe14('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':_0xbe14('0x71'),'appdata':_0x47d7bb[_0xbe14('0x10')]+','+(_0x2be969[_0xbe14('0x64')][_0xbe14('0x72')]||0x12c),'interval':_0xbe14('0x73')}]},routingClient);})[_0xbe14('0x8')](respondWithResult(_0x1205d1,null))[_0xbe14('0xc')](handleError(_0x1205d1,null));};};exports[_0xbe14('0x74')]=function(_0x1de70d,_0x30be9e){var _0x1679bd,_0x2ca6e6;if(_['isNil'](_0x1de70d[_0xbe14('0x20')]['channel'])){throw new Error(_0xbe14('0x75'));}var _0x1b8733=_0x1de70d[_0xbe14('0x20')][_0xbe14('0x76')];var _0x1d7b08=_['capitalize'](_0x1b8733);var _0x5868d7=_0x1b8733===_0xbe14('0x77')?_0xbe14('0x78'):_0xbe14('0x64');return db[_0xbe14('0x79')]['findOne']({'raw':!![],'where':{'id':_0x1de70d[_0xbe14('0x1b')]['id'],'role':_0xbe14('0x7a')}})['then'](function(_0x186225){if(_[_0xbe14('0x12')](_0x186225)){throw new Error(_0xbe14('0x7b'));}_0x1679bd=_0x186225;return db[_0x1d7b08+_0xbe14('0x7c')]['findOne']({'where':{'id':_0x1de70d[_0xbe14('0x20')]['messageId']},'include':[{'model':db[_0x1d7b08+'Interaction'],'as':_0xbe14('0x69')},{'model':db[_0x1d7b08+_0x5868d7],'as':_0xbe14('0x64')}]});})[_0xbe14('0x8')](function(_0x3d890b){if(_[_0xbe14('0x12')](_0x3d890b)){throw new Error(_0x1d7b08+'\x20Message\x20not\x20found');}_0x2ca6e6=_0x3d890b;return _0x3d890b[_0xbe14('0x7d')]({'read':0x0,'readAt':null,'UserId':null});})[_0xbe14('0x8')](function(){var _0x5dc793={'uniqueid':_0x1b8733+'.'+_0x2ca6e6['id']+'.'+_0x2ca6e6['Interaction']['id'],'FromUserId':_0x1de70d[_0xbe14('0x2f')]['id'],'type':_0xbe14('0x71'),'ToUserId':_0x1679bd['id']};_0x5dc793[_0x1d7b08+'MessageId']=_0x2ca6e6['id'];_0x5dc793[_0x1d7b08+_0xbe14('0x6c')]=_0x2ca6e6['Interaction']['id'];_0x5dc793[_0xbe14('0x7e')+_0x1d7b08+_0x5868d7+'Id']=_0x2ca6e6['Account']['id'];return db[_0x1d7b08+_0xbe14('0x6e')]['create'](_0x5dc793);})[_0xbe14('0x8')](function(){return respondWithRpcPromise('Start',{'channel':_0x1b8733,'interaction':_0x2ca6e6[_0xbe14('0x69')],'message':_0x2ca6e6,'account':_0x2ca6e6[_0xbe14('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x1679bd['name']+','+(_0x2ca6e6[_0xbe14('0x64')]['agentTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xbe14('0x8')](respondWithResult(_0x30be9e,null))[_0xbe14('0xc')](handleError(_0x30be9e,null));};
\ No newline at end of file
+var _0x2675=['request','error','result','catch','status','json','sendStatus','name','send','isNil','rows','find','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','then','voiceChannelStopMixMonitor','params','voiceQueues','VoiceQueues','updateVoiceQueue','body','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','merge','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','findAll','INTERACTION','length','format','MemberReport','findOrCreate','interface','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','telephones','Telephones','trunks','Trunks','Campaigns','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','showOpenchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','type','map','queue_id','indexOf','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','\x20Queue\x20not\x20found','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Agent\x20not\x20found','Message','findOne','agentTransferTimeout','bluebird','../../mysqldb','../../config/logger','jayson/promise','client','http'];(function(_0x45ece3,_0x13a1cc){var _0x3e5c1a=function(_0x561cde){while(--_0x561cde){_0x45ece3['push'](_0x45ece3['shift']());}};_0x3e5c1a(++_0x13a1cc);}(_0x2675,0x75));var _0x5267=function(_0x226230,_0x515e03){_0x226230=_0x226230-0x0;var _0x1f5ada=_0x2675[_0x226230];return _0x1f5ada;};'use strict';var BPromise=require(_0x5267('0x0'));var moment=require('moment');var _=require('lodash');var util=require('util');var db=require(_0x5267('0x1'))['db'];var logger=require(_0x5267('0x2'))('api');var jayson=require(_0x5267('0x3'));var amiClient=jayson[_0x5267('0x4')]['http']({'port':0x232a});var mailClient=jayson[_0x5267('0x4')][_0x5267('0x5')]({'port':0x232b});var routingClient=jayson[_0x5267('0x4')][_0x5267('0x5')]({'port':0x232c});function respondWithRpcPromise(_0x20f065,_0xc56cd5,_0x527c16){return new BPromise(function(_0x9e0a27,_0x46bfdf){var _0x506fd7=_0x527c16?_0x527c16:amiClient;return _0x506fd7[_0x5267('0x6')](_0x20f065,_0xc56cd5)['then'](function(_0x3ff4e9){if(_0x3ff4e9[_0x5267('0x7')]){if(_0x3ff4e9[_0x5267('0x7')]['code']===0x1f4){return _0x46bfdf(_0x3ff4e9[_0x5267('0x7')]['message']);}return _0x9e0a27(_0x3ff4e9[_0x5267('0x7')]['message']);}else{_0x9e0a27(_0x3ff4e9[_0x5267('0x8')]);}})[_0x5267('0x9')](function(_0x268a8a){_0x46bfdf(_0x268a8a);});});}function respondWithResult(_0x1f9be3,_0x1d7090){_0x1d7090=_0x1d7090||0xc8;return function(_0x1171b9){if(_0x1171b9){return _0x1f9be3[_0x5267('0xa')](_0x1d7090)[_0x5267('0xb')](_0x1171b9);}return _0x1f9be3[_0x5267('0xc')](0x194);};}function handleError(_0x1e2d3b,_0x16e5a7){_0x16e5a7=_0x16e5a7||0x1f4;return function(_0x29349a){logger[_0x5267('0x7')](_0x29349a['stack']);if(_0x29349a['name']){delete _0x29349a[_0x5267('0xd')];}_0x1e2d3b[_0x5267('0xa')](_0x16e5a7)[_0x5267('0xe')](_0x29349a);};}function findById(_0x3f5344){return function(_0x46b2c2){if(!_[_0x5267('0xf')](_0x3f5344)&&!_[_0x5267('0xf')](_0x46b2c2)&&!_[_0x5267('0xf')](_0x46b2c2[_0x5267('0x10')])){return _[_0x5267('0x11')](_0x46b2c2[_0x5267('0x10')],function(_0x1ab03){return _0x1ab03['id']==_0x3f5344;});}return null;};}exports['voiceChannels']=function(_0x18f32e,_0x2afd38){return respondWithRpcPromise('VoiceChannels',_0x18f32e[_0x5267('0x12')])['then'](respondWithResult(_0x2afd38,null))[_0x5267('0x9')](handleError(_0x2afd38,null));};exports[_0x5267('0x13')]=function(_0x39c0c3,_0x2a9f99){return respondWithRpcPromise(_0x5267('0x14'),_['merge'](_0x39c0c3[_0x5267('0x12')],_0x39c0c3['params']))[_0x5267('0x15')](respondWithResult(_0x2a9f99,null))[_0x5267('0x9')](handleError(_0x2a9f99,null));};exports[_0x5267('0x16')]=function(_0x56dd95,_0x499f19){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_['merge'](_0x56dd95['query'],_0x56dd95[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x499f19,null))[_0x5267('0x9')](handleError(_0x499f19,null));};exports[_0x5267('0x18')]=function(_0x11c8ea,_0x40d1be){return respondWithRpcPromise(_0x5267('0x19'),_0x11c8ea[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x40d1be,null))['catch'](handleError(_0x40d1be,null));};exports['showVoiceQueues']=function(_0x354111,_0x472938){return respondWithRpcPromise('VoiceQueues',_0x354111[_0x5267('0x12')])['then'](findById(_0x354111['params']['id']))[_0x5267('0x15')](respondWithResult(_0x472938,null))[_0x5267('0x9')](handleError(_0x472938,null));};exports[_0x5267('0x1a')]=function(_0x2d2ace,_0x33c431){return respondWithRpcPromise('UpdateVoiceQueue',_['merge'](_0x2d2ace[_0x5267('0x1b')],_0x2d2ace[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x33c431,null))['catch'](handleError(_0x33c431,null));};exports['voiceQueuesPreview']=function(_0xbe7922,_0x3ef2a8){return respondWithRpcPromise(_0x5267('0x1c'),_['merge'](_0xbe7922['query'],_0xbe7922[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x3ef2a8,null))[_0x5267('0x9')](handleError(_0x3ef2a8,null));};exports[_0x5267('0x1d')]=function(_0x5bbb83,_0x33e456){return respondWithRpcPromise(_0x5267('0x1e'),_0x5bbb83[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x33e456,null))[_0x5267('0x9')](handleError(_0x33e456,null));};exports[_0x5267('0x1f')]=function(_0x341bae,_0x1dda95){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x341bae[_0x5267('0x12')],_0x341bae['params']))[_0x5267('0x15')](respondWithResult(_0x1dda95,null))[_0x5267('0x9')](handleError(_0x1dda95,null));};exports[_0x5267('0x20')]=function(_0x3a729c,_0x4ac4a0){return respondWithRpcPromise(_0x5267('0x21'),_[_0x5267('0x22')](_0x3a729c[_0x5267('0x12')],_0x3a729c[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x4ac4a0,null))[_0x5267('0x9')](handleError(_0x4ac4a0,null));};exports[_0x5267('0x23')]=function(_0xa0ea89,_0x484b77){return respondWithRpcPromise(_0x5267('0x24'),_['merge'](_0xa0ea89[_0x5267('0x12')],_0xa0ea89[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x484b77,null))[_0x5267('0x9')](handleError(_0x484b77,null));};exports[_0x5267('0x25')]=function(_0x33ecd7,_0x465ad9){return respondWithRpcPromise('Outbound',_0x33ecd7[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x465ad9,null))[_0x5267('0x9')](handleError(_0x465ad9,null));};exports[_0x5267('0x26')]=function(_0x82cea7,_0x21eabf){return respondWithRpcPromise(_0x5267('0x27'),_0x82cea7['query'])[_0x5267('0x15')](respondWithResult(_0x21eabf,null))['catch'](handleError(_0x21eabf,null));};exports[_0x5267('0x28')]=function(_0x5c0cdf,_0x4dee66){var _0x51bddd;return respondWithRpcPromise(_0x5267('0x29'),_0x5c0cdf['query'])[_0x5267('0x15')](function(_0x146476){_0x51bddd=_0x146476;return respondWithRpcPromise(_0x5267('0x29'),_0x5c0cdf[_0x5267('0x12')],routingClient);})['then'](function(_0x456b33){return _[_0x5267('0x22')]({},_0x456b33,_0x51bddd);})['then'](respondWithResult(_0x4dee66,null))['catch'](handleError(_0x4dee66,null));};exports[_0x5267('0x2a')]=function(_0x560cdf,_0x12df83){if(_0x560cdf[_0x5267('0x1b')]&&_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')]&&_0x560cdf[_0x5267('0x2c')]&&_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')]){for(var _0x5697b3 in _0x560cdf['body'][_0x5267('0x2b')]){if(_0x560cdf['body'][_0x5267('0x2b')][_0x5267('0x2d')](_0x5697b3)){db['MemberReport'][_0x5267('0x2e')]({'where':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')],'type':_0x5267('0x2f'),'exitAt':null,'uniqueid':_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')][_0x5697b3]&&_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')][_0x5697b3][_0x5267('0x30')]?{'$notIn':_0x560cdf['body'][_0x5267('0x2b')][_0x5697b3]}:{'$ne':null}}})[_0x5267('0x15')](function(_0x19b015){var _0x45241a=moment()[_0x5267('0x31')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x3d15ac=0x0,_0x4e0132=_0x19b015[_0x5267('0x30')];_0x3d15ac<_0x4e0132;_0x3d15ac+=0x1){_0x19b015[_0x3d15ac]['updateAttributes']({'exitAt':_0x45241a});}});for(var _0x4ae9f9=0x0;_0x4ae9f9<_0x560cdf[_0x5267('0x1b')]['interaction'][_0x5697b3][_0x5267('0x30')];_0x4ae9f9+=0x1){db[_0x5267('0x32')][_0x5267('0x33')]({'where':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')]['name'],'type':_0x5267('0x2f'),'uniqueid':_0x560cdf['body']['interaction'][_0x5697b3][_0x4ae9f9],'exitAt':null},'defaults':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')],'interface':_['isNil'](_0x560cdf['user'][_0x5267('0x34')])?util[_0x5267('0x31')](_0x5267('0x35'),_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')]):_0x560cdf[_0x5267('0x2c')][_0x5267('0x34')],'type':_0x5267('0x2f'),'enterAt':moment()[_0x5267('0x31')](_0x5267('0x36')),'role':_0x5267('0x37'),'internal':_0x560cdf[_0x5267('0x2c')][_0x5267('0x38')],'uniqueid':_0x560cdf[_0x5267('0x1b')]['interaction'][_0x5697b3][_0x4ae9f9]}});}}}}return respondWithRpcPromise(_0x5267('0x39'),{'id':_0x560cdf[_0x5267('0x17')]['id'],'capacity':_0x560cdf[_0x5267('0x1b')]['capacity']},routingClient)[_0x5267('0x15')](respondWithResult(_0x12df83,null))[_0x5267('0x9')](handleError(_0x12df83,null));};exports[_0x5267('0x3a')]=function(_0x2a97f1,_0x119546){return respondWithRpcPromise(_0x5267('0x3b'),_0x2a97f1['query'])[_0x5267('0x15')](respondWithResult(_0x119546,null))['catch'](handleError(_0x119546,null));};exports[_0x5267('0x3c')]=function(_0x30fcd2,_0xa49fd7){return respondWithRpcPromise(_0x5267('0x3d'),_0x30fcd2[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0xa49fd7,null))[_0x5267('0x9')](handleError(_0xa49fd7,null));};exports['campaigns']=function(_0x57ca8f,_0x200855){return respondWithRpcPromise(_0x5267('0x3e'),_0x57ca8f['query'])[_0x5267('0x15')](respondWithResult(_0x200855,null))['catch'](handleError(_0x200855,null));};exports['chatQueues']=function(_0x1eeb21,_0x79cee1){return respondWithRpcPromise(_0x5267('0x3f'),_0x1eeb21[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x79cee1,null))[_0x5267('0x9')](handleError(_0x79cee1,null));};exports[_0x5267('0x40')]=function(_0x3fd8f9,_0xf0b5a9){return respondWithRpcPromise(_0x5267('0x3f'),_0x3fd8f9['query'],routingClient)[_0x5267('0x15')](findById(_0x3fd8f9[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0xf0b5a9,null))[_0x5267('0x9')](handleError(_0xf0b5a9,null));};exports[_0x5267('0x41')]=function(_0x34c205,_0x552211){return respondWithRpcPromise(_0x5267('0x42'),_0x34c205['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x552211,null))[_0x5267('0x9')](handleError(_0x552211,null));};exports[_0x5267('0x43')]=function(_0x4a72c3,_0x1593ce){return respondWithRpcPromise(_0x5267('0x42'),_0x4a72c3[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0x4a72c3[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x1593ce,null))['catch'](handleError(_0x1593ce,null));};exports[_0x5267('0x44')]=function(_0x190d02,_0x186667){return respondWithRpcPromise(_0x5267('0x45'),_0x190d02['query'],mailClient)['then'](respondWithResult(_0x186667,null))[_0x5267('0x9')](handleError(_0x186667,null));};exports['openchannelQueues']=function(_0x3f5cda,_0x47059c){return respondWithRpcPromise('OpenchannelQueues',_0x3f5cda['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x47059c,null))[_0x5267('0x9')](handleError(_0x47059c,null));};exports[_0x5267('0x46')]=function(_0x537f75,_0x457dca){return respondWithRpcPromise(_0x5267('0x47'),_0x537f75[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0x537f75['params']['id']))['then'](respondWithResult(_0x457dca,null))['catch'](handleError(_0x457dca,null));};exports[_0x5267('0x48')]=function(_0x2457a3,_0x45ee25){return respondWithRpcPromise(_0x5267('0x49'),_0x2457a3[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x45ee25,null))[_0x5267('0x9')](handleError(_0x45ee25,null));};exports[_0x5267('0x4a')]=function(_0x486b02,_0x1ddfad){return respondWithRpcPromise(_0x5267('0x49'),_0x486b02['query'],routingClient)[_0x5267('0x15')](findById(_0x486b02[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x1ddfad,null))[_0x5267('0x9')](handleError(_0x1ddfad,null));};exports[_0x5267('0x4b')]=function(_0xde1ecd,_0x4915f4){return respondWithRpcPromise(_0x5267('0x4c'),_0xde1ecd[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x4915f4,null))[_0x5267('0x9')](handleError(_0x4915f4,null));};exports[_0x5267('0x4d')]=function(_0xd9bcf9,_0x4aac32){return respondWithRpcPromise(_0x5267('0x4c'),_0xd9bcf9[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0xd9bcf9[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x4aac32,null))[_0x5267('0x9')](handleError(_0x4aac32,null));};exports['faxQueues']=function(_0x283423,_0x41299c){return respondWithRpcPromise(_0x5267('0x4e'),_0x283423[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x41299c,null))['catch'](handleError(_0x41299c,null));};exports['showFaxQueues']=function(_0x910f97,_0x5cca85){return respondWithRpcPromise(_0x5267('0x4e'),_0x910f97['query'],routingClient)[_0x5267('0x15')](findById(_0x910f97[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x5cca85,null))[_0x5267('0x9')](handleError(_0x5cca85,null));};exports[_0x5267('0x4f')]=function(_0xa92aa5,_0x21338f){return respondWithRpcPromise(_0x5267('0x50'),_0xa92aa5['query'])['then'](respondWithResult(_0x21338f,null))['catch'](handleError(_0x21338f,null));};exports[_0x5267('0x51')]=function(_0x28a101,_0x2ab2be){return respondWithRpcPromise(_0x5267('0x52'),_0x28a101['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x2ab2be,null))[_0x5267('0x9')](handleError(_0x2ab2be,null));};exports[_0x5267('0x53')]=function(_0xc3ac3f,_0x5a0e73){return respondWithRpcPromise(_0x5267('0x54'),_0xc3ac3f[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x5a0e73,null))[_0x5267('0x9')](handleError(_0x5a0e73,null));};exports[_0x5267('0x55')]=function(_0x4a9995,_0x47e235){return respondWithRpcPromise(_0x5267('0x56'),_0x4a9995[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x47e235,null))['catch'](handleError(_0x47e235,null));};exports[_0x5267('0x57')]=function(_0x2e7f8a,_0x35b302){return respondWithRpcPromise(_0x5267('0x56'),_0x2e7f8a[_0x5267('0x12')],routingClient)['then'](function(_0x4643ae){if(_0x2e7f8a[_0x5267('0x12')]['type']!==undefined){var _0x26c628=_(_0x4643ae[_0x5267('0x10')])[_0x5267('0x58')]([_0x2e7f8a[_0x5267('0x12')][_0x5267('0x59')],_0x2e7f8a[_0x5267('0x17')]['id']])[_0x5267('0x5a')](_0x5267('0x5b'))['uniq']()['value']();return _0x4643ae[_0x5267('0x10')][_0x5267('0x58')](function(_0x3f729f){return _0x26c628[_0x5267('0x5c')](_0x3f729f['queue_id'])>-0x1;});}else{return _0x4643ae[_0x5267('0x10')]['filter'](function(_0x2988a1){return _0x2988a1[_0x5267('0x5b')]===parseInt(_0x2e7f8a[_0x5267('0x17')]['id']);});}})[_0x5267('0x15')](respondWithResult(_0x35b302,null))['catch'](handleError(_0x35b302,null));};exports['smsQueuesWaitingInteractions']=function(_0x3a67a0,_0x3e2cf5){return respondWithRpcPromise(_0x5267('0x5d'),_0x3a67a0[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x3e2cf5,null))[_0x5267('0x9')](handleError(_0x3e2cf5,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x1b8d72,_0x4a05c9){return respondWithRpcPromise(_0x5267('0x5e'),_0x1b8d72['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x4a05c9,null))[_0x5267('0x9')](handleError(_0x4a05c9,null));};exports[_0x5267('0x5f')]=function(_0x87aa90,_0x164cc1){return respondWithRpcPromise(_0x5267('0x60'),_0x87aa90[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x164cc1,null))[_0x5267('0x9')](handleError(_0x164cc1,null));};exports[_0x5267('0x61')]=function(_0x555c8){return function(_0x531bb9,_0x40c7b5){var _0x14baf4,_0x4d9ec9;var _0xde179f=_[_0x5267('0x62')](_0x555c8);var _0x3ebda6=_0x555c8===_0x5267('0x63')?_0x5267('0x64'):_0x5267('0x65');return db[_0xde179f+_0x5267('0x66')]['findOne']({'raw':!![],'where':{'id':_0x531bb9[_0x5267('0x17')]['id']}})[_0x5267('0x15')](function(_0x2543a4){if(_[_0x5267('0xf')](_0x2543a4)){throw new Error(_0xde179f+_0x5267('0x67'));}_0x14baf4=_0x2543a4;return db[_0xde179f+'Message']['findOne']({'where':{'id':_0x531bb9[_0x5267('0x1b')][_0x5267('0x68')]},'include':[{'model':db[_0xde179f+_0x5267('0x69')],'as':_0x5267('0x69')},{'model':db[_0xde179f+_0x3ebda6],'as':'Account'}]});})[_0x5267('0x15')](function(_0x3cc775){if(_[_0x5267('0xf')](_0x3cc775)){throw new Error(_0xde179f+_0x5267('0x6a'));}_0x4d9ec9=_0x3cc775;return _0x3cc775[_0x5267('0x6b')]({'read':0x0,'readAt':null,'UserId':null});})[_0x5267('0x15')](function(){var _0x2b38f2={'uniqueid':_0x555c8+'.'+_0x4d9ec9['id']+'.'+_0x4d9ec9[_0x5267('0x69')]['id'],'FromUserId':_0x531bb9[_0x5267('0x2c')]['id'],'type':_0x5267('0x6c')};_0x2b38f2[_0xde179f+_0x5267('0x6d')]=_0x4d9ec9['id'];_0x2b38f2[_0xde179f+_0x5267('0x6e')]=_0x4d9ec9[_0x5267('0x69')]['id'];_0x2b38f2['From'+_0xde179f+_0x3ebda6+'Id']=_0x4d9ec9[_0x5267('0x65')]['id'];_0x2b38f2['To'+_0xde179f+_0x5267('0x6f')]=_0x14baf4['id'];return db[_0xde179f+_0x5267('0x70')][_0x5267('0x71')](_0x2b38f2);})[_0x5267('0x15')](function(){return respondWithRpcPromise(_0x5267('0x72'),{'channel':_0x555c8,'interaction':_0x4d9ec9[_0x5267('0x69')],'message':_0x4d9ec9,'account':_0x4d9ec9[_0x5267('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5267('0x6c'),'appdata':_0x14baf4[_0x5267('0xd')]+','+(_0x4d9ec9[_0x5267('0x65')][_0x5267('0x73')]||0x12c),'interval':_0x5267('0x74')}]},routingClient);})[_0x5267('0x15')](respondWithResult(_0x40c7b5,null))[_0x5267('0x9')](handleError(_0x40c7b5,null));};};exports[_0x5267('0x75')]=function(_0x28884b,_0x35a4a3){var _0x7ecf0e,_0x676556;if(_[_0x5267('0xf')](_0x28884b[_0x5267('0x1b')][_0x5267('0x76')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x339f3f=_0x28884b[_0x5267('0x1b')][_0x5267('0x76')];var _0x405eb4=_[_0x5267('0x62')](_0x339f3f);var _0x557749=_0x339f3f===_0x5267('0x63')?_0x5267('0x64'):'Account';return db['User']['findOne']({'raw':!![],'where':{'id':_0x28884b[_0x5267('0x17')]['id'],'role':'agent'}})[_0x5267('0x15')](function(_0x54422c){if(_['isNil'](_0x54422c)){throw new Error(_0x5267('0x77'));}_0x7ecf0e=_0x54422c;return db[_0x405eb4+_0x5267('0x78')][_0x5267('0x79')]({'where':{'id':_0x28884b[_0x5267('0x1b')][_0x5267('0x68')]},'include':[{'model':db[_0x405eb4+'Interaction'],'as':'Interaction'},{'model':db[_0x405eb4+_0x557749],'as':_0x5267('0x65')}]});})[_0x5267('0x15')](function(_0x1a6245){if(_[_0x5267('0xf')](_0x1a6245)){throw new Error(_0x405eb4+_0x5267('0x6a'));}_0x676556=_0x1a6245;return _0x1a6245['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x5267('0x15')](function(){var _0x5bece1={'uniqueid':_0x339f3f+'.'+_0x676556['id']+'.'+_0x676556['Interaction']['id'],'FromUserId':_0x28884b[_0x5267('0x2c')]['id'],'type':'queue','ToUserId':_0x7ecf0e['id']};_0x5bece1[_0x405eb4+'MessageId']=_0x676556['id'];_0x5bece1[_0x405eb4+_0x5267('0x6e')]=_0x676556[_0x5267('0x69')]['id'];_0x5bece1['From'+_0x405eb4+_0x557749+'Id']=_0x676556['Account']['id'];return db[_0x405eb4+'TransferReport'][_0x5267('0x71')](_0x5bece1);})['then'](function(){return respondWithRpcPromise(_0x5267('0x72'),{'channel':_0x339f3f,'interaction':_0x676556['Interaction'],'message':_0x676556,'account':_0x676556[_0x5267('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5267('0x37'),'appdata':_0x7ecf0e['name']+','+(_0x676556[_0x5267('0x65')][_0x5267('0x7a')]||0x12c),'interval':_0x5267('0x74')}]},routingClient);})[_0x5267('0x15')](respondWithResult(_0x35a4a3,null))[_0x5267('0x9')](handleError(_0x35a4a3,null));};
\ No newline at end of file
index a9e26f9..ed2eafe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6652=['express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','/:id/run','run','post','create','delete','multer','util','path','connect-timeout'];(function(_0x38c676,_0x5524d4){var _0x1853c4=function(_0x7ea8f8){while(--_0x7ea8f8){_0x38c676['push'](_0x38c676['shift']());}};_0x1853c4(++_0x5524d4);}(_0x6652,0xfb));var _0x2665=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0x6652[_0x4b7b62];return _0x2280df;};'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('fs-extra');var auth=require(_0x2665('0x6'));var interaction=require(_0x2665('0x7'));var config=require('../../config/environment');var controller=require('./schedule.controller');router[_0x2665('0x8')]('/',auth[_0x2665('0x9')](),controller[_0x2665('0xa')]);router['get'](_0x2665('0xb'),auth[_0x2665('0x9')](),controller['show']);router['get'](_0x2665('0xc'),auth[_0x2665('0x9')](),controller[_0x2665('0xd')]);router[_0x2665('0xe')]('/',auth[_0x2665('0x9')](),controller[_0x2665('0xf')]);router['put'](_0x2665('0xb'),auth[_0x2665('0x9')](),controller['update']);router[_0x2665('0x10')](_0x2665('0xb'),auth[_0x2665('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x0411=['../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','destroy','exports','util','path','connect-timeout','express','fs-extra'];(function(_0x15e60a,_0x41d6a2){var _0x36722b=function(_0x8f2539){while(--_0x8f2539){_0x15e60a['push'](_0x15e60a['shift']());}};_0x36722b(++_0x41d6a2);}(_0x0411,0x19f));var _0x1041=function(_0x58f911,_0x28ecb4){_0x58f911=_0x58f911-0x0;var _0x12b4ee=_0x0411[_0x58f911];return _0x12b4ee;};'use strict';var multer=require('multer');var util=require(_0x1041('0x0'));var path=require(_0x1041('0x1'));var timeout=require(_0x1041('0x2'));var express=require(_0x1041('0x3'));var router=express['Router']();var fs_extra=require(_0x1041('0x4'));var auth=require(_0x1041('0x5'));var interaction=require(_0x1041('0x6'));var config=require(_0x1041('0x7'));var controller=require(_0x1041('0x8'));router[_0x1041('0x9')]('/',auth[_0x1041('0xa')](),controller[_0x1041('0xb')]);router[_0x1041('0x9')]('/:id',auth[_0x1041('0xa')](),controller[_0x1041('0xc')]);router[_0x1041('0x9')]('/:id/run',auth[_0x1041('0xa')](),controller['run']);router[_0x1041('0xd')]('/',auth[_0x1041('0xa')](),controller[_0x1041('0xe')]);router[_0x1041('0xf')](_0x1041('0x10'),auth[_0x1041('0xa')](),controller[_0x1041('0x11')]);router['delete'](_0x1041('0x10'),auth[_0x1041('0xa')](),controller[_0x1041('0x12')]);module[_0x1041('0x13')]=router;
\ No newline at end of file
index c4110dd..8fe9356 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a76=['STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','years','quarters','months','days','hours','ENUM','csv','pdf','xlsx','custom','default','sequelize'];(function(_0x5c80b7,_0x5c6250){var _0x4a20a7=function(_0x22dd64){while(--_0x22dd64){_0x5c80b7['push'](_0x5c80b7['shift']());}};_0x4a20a7(++_0x5c6250);}(_0x7a76,0x1df));var _0x67a7=function(_0x2bddf9,_0x22c873){_0x2bddf9=_0x2bddf9-0x0;var _0x3f3ae9=_0x7a76[_0x2bddf9];return _0x3f3ae9;};'use strict';var Sequelize=require(_0x67a7('0x0'));module['exports']={'name':{'type':Sequelize[_0x67a7('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x67a7('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x67a7('0x1')],'allowNull':![],'defaultValue':_0x67a7('0x3')},'startAt':{'type':Sequelize[_0x67a7('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x67a7('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x67a7('0x5'),_0x67a7('0x6'),_0x67a7('0x7'),'weeks',_0x67a7('0x8'),_0x67a7('0x9'),'minutes'),'allowNull':![],'defaultValue':_0x67a7('0x8')},'output':{'type':Sequelize[_0x67a7('0xa')](_0x67a7('0xb'),_0x67a7('0xc'),_0x67a7('0xd')),'allowNull':![],'defaultValue':_0x67a7('0xb')},'type':{'type':Sequelize[_0x67a7('0xa')](_0x67a7('0xe'),_0x67a7('0xf')),'allowNull':![],'defaultValue':_0x67a7('0xe')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x67a7('0x1')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x23c0=['days','hours','pdf','xlsx','default','custom','BOOLEAN','TEXT','sequelize','exports','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','quarters','months'];(function(_0x2cc746,_0x58f895){var _0x221811=function(_0x2ece90){while(--_0x2ece90){_0x2cc746['push'](_0x2cc746['shift']());}};_0x221811(++_0x58f895);}(_0x23c0,0x1d3));var _0x023c=function(_0x1e52bf,_0x4cfa32){_0x1e52bf=_0x1e52bf-0x0;var _0x2fdc63=_0x23c0[_0x1e52bf];return _0x2fdc63;};'use strict';var Sequelize=require(_0x023c('0x0'));module[_0x023c('0x1')]={'name':{'type':Sequelize[_0x023c('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x023c('0x2')],'allowNull':![],'defaultValue':_0x023c('0x3')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0x023c('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x023c('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x023c('0x6')]('years',_0x023c('0x7'),_0x023c('0x8'),'weeks',_0x023c('0x9'),_0x023c('0xa'),'minutes'),'allowNull':![],'defaultValue':_0x023c('0x9')},'output':{'type':Sequelize['ENUM']('csv',_0x023c('0xb'),_0x023c('0xc')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0x023c('0x6')]('custom',_0x023c('0xd')),'allowNull':![],'defaultValue':_0x023c('0xe')},'sendMail':{'type':Sequelize[_0x023c('0xf')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x023c('0x10')]},'bcc':{'type':Sequelize[_0x023c('0x10')]},'sendIfEmpty':{'type':Sequelize[_0x023c('0xf')],'defaultValue':!![]}};
\ No newline at end of file
index a240100..d55a157 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a9d=['stack','name','send','index','map','Schedule','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','pick','filter','where','merge','includeAll','include','findAll','params','options','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','../../config/schedule','run','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','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','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','Scheduler','UserProfileResource','error'];(function(_0x42be6d,_0x52fdd6){var _0x164ca8=function(_0x820098){while(--_0x820098){_0x42be6d['push'](_0x42be6d['shift']());}};_0x164ca8(++_0x52fdd6);}(_0x1a9d,0x11f));var _0xd1a9=function(_0xcad34d,_0x1b63bd){_0xcad34d=_0xcad34d-0x0;var _0x4360f9=_0x1a9d[_0xcad34d];return _0x4360f9;};'use strict';var emlformat=require(_0xd1a9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd1a9('0x1'));var rp=require(_0xd1a9('0x2'));var moment=require(_0xd1a9('0x3'));var BPromise=require(_0xd1a9('0x4'));var Mustache=require(_0xd1a9('0x5'));var util=require(_0xd1a9('0x6'));var path=require(_0xd1a9('0x7'));var sox=require(_0xd1a9('0x8'));var csv=require(_0xd1a9('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd1a9('0xa'));var squel=require(_0xd1a9('0xb'));var crypto=require(_0xd1a9('0xc'));var jsforce=require(_0xd1a9('0xd'));var deskjs=require(_0xd1a9('0xe'));var toCsv=require(_0xd1a9('0x9'));var querystring=require(_0xd1a9('0xf'));var Papa=require(_0xd1a9('0x10'));var Redis=require('ioredis');var authService=require(_0xd1a9('0x11'));var qs=require(_0xd1a9('0x12'));var as=require(_0xd1a9('0x13'));var hardwareService=require(_0xd1a9('0x14'));var logger=require(_0xd1a9('0x15'))(_0xd1a9('0x16'));var utils=require(_0xd1a9('0x17'));var config=require(_0xd1a9('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd1a9('0x19'))['db'];function respondWithStatusCode(_0x24e11d,_0x3e2ec4){_0x3e2ec4=_0x3e2ec4||0xcc;return function(_0x1efd07){if(_0x1efd07){return _0x24e11d[_0xd1a9('0x1a')](_0x3e2ec4);}return _0x24e11d[_0xd1a9('0x1b')](_0x3e2ec4)[_0xd1a9('0x1c')]();};}function respondWithResult(_0x13ddd9,_0x3a6cad){_0x3a6cad=_0x3a6cad||0xc8;return function(_0x459709){if(_0x459709){return _0x13ddd9[_0xd1a9('0x1b')](_0x3a6cad)[_0xd1a9('0x1d')](_0x459709);}};}function respondWithFilteredResult(_0x47c848,_0x51b166){return function(_0x3c0a1d){if(_0x3c0a1d){var _0x58ebce=typeof _0x51b166['offset']==='undefined'&&typeof _0x51b166[_0xd1a9('0x1e')]===_0xd1a9('0x1f');var _0x280e97=_0x3c0a1d[_0xd1a9('0x20')];var _0x1b23b0=_0x58ebce?0x0:_0x51b166['offset'];var _0x34a9af=_0x58ebce?_0x3c0a1d[_0xd1a9('0x20')]:_0x51b166[_0xd1a9('0x21')]+_0x51b166[_0xd1a9('0x1e')];var _0x22be76;if(_0x34a9af>=_0x280e97){_0x34a9af=_0x280e97;_0x22be76=0xc8;}else{_0x22be76=0xce;}_0x47c848['status'](_0x22be76);return _0x47c848[_0xd1a9('0x22')](_0xd1a9('0x23'),_0x1b23b0+'-'+_0x34a9af+'/'+_0x280e97)[_0xd1a9('0x1d')](_0x3c0a1d);}return null;};}function patchUpdates(_0x9e1031){return function(_0x16cbfe){try{jsonpatch[_0xd1a9('0x24')](_0x16cbfe,_0x9e1031,!![]);}catch(_0x2e7a39){return BPromise[_0xd1a9('0x25')](_0x2e7a39);}return _0x16cbfe['save']();};}function saveUpdates(_0x192a89,_0x44e0e7){return function(_0x5cb955){if(_0x5cb955){return _0x5cb955[_0xd1a9('0x26')](_0x192a89)[_0xd1a9('0x27')](function(_0x4e6e8e){return _0x4e6e8e;});}return null;};}function removeEntity(_0x2131ee,_0xc53c7d){return function(_0x4f6e9f){if(_0x4f6e9f){return _0x4f6e9f[_0xd1a9('0x28')]()[_0xd1a9('0x27')](function(){var _0x39de86=_0x4f6e9f[_0xd1a9('0x29')]({'plain':!![]});var _0x1740a6=_0xd1a9('0x2a');return db[_0xd1a9('0x2b')]['destroy']({'where':{'type':_0x1740a6,'resourceId':_0x39de86['id']}})[_0xd1a9('0x27')](function(){return _0x4f6e9f;});})[_0xd1a9('0x27')](function(){_0x2131ee[_0xd1a9('0x1b')](0xcc)[_0xd1a9('0x1c')]();});}};}function handleEntityNotFound(_0x46543d,_0x44cc0b){return function(_0x2ee1b7){if(!_0x2ee1b7){_0x46543d[_0xd1a9('0x1a')](0x194);}return _0x2ee1b7;};}function handleError(_0xf59161,_0x340c09){_0x340c09=_0x340c09||0x1f4;return function(_0x132f4e){logger[_0xd1a9('0x2c')](_0x132f4e[_0xd1a9('0x2d')]);if(_0x132f4e[_0xd1a9('0x2e')]){delete _0x132f4e[_0xd1a9('0x2e')];}_0xf59161['status'](_0x340c09)[_0xd1a9('0x2f')](_0x132f4e);};}exports[_0xd1a9('0x30')]=function(_0x14a6fc,_0x50a357){var _0x2821db={},_0x5ba025={},_0x258374={'count':0x0,'rows':[]};var _0x3133e5=_[_0xd1a9('0x31')](db[_0xd1a9('0x32')][_0xd1a9('0x33')],function(_0x43ef8d){return{'name':_0x43ef8d[_0xd1a9('0x34')],'type':_0x43ef8d[_0xd1a9('0x35')][_0xd1a9('0x36')]};});_0x5ba025[_0xd1a9('0x37')]=_[_0xd1a9('0x31')](_0x3133e5,_0xd1a9('0x2e'));_0x5ba025[_0xd1a9('0x38')]=_[_0xd1a9('0x39')](_0x14a6fc[_0xd1a9('0x38')]);_0x5ba025[_0xd1a9('0x3a')]=_[_0xd1a9('0x3b')](_0x5ba025[_0xd1a9('0x37')],_0x5ba025[_0xd1a9('0x38')]);_0x2821db['attributes']=_['intersection'](_0x5ba025[_0xd1a9('0x37')],qs[_0xd1a9('0x3c')](_0x14a6fc[_0xd1a9('0x38')]['fields']));_0x2821db[_0xd1a9('0x3d')]=_0x2821db[_0xd1a9('0x3d')][_0xd1a9('0x3e')]?_0x2821db['attributes']:_0x5ba025[_0xd1a9('0x37')];if(!_0x14a6fc[_0xd1a9('0x38')]['hasOwnProperty']('nolimit')){_0x2821db[_0xd1a9('0x1e')]=qs['limit'](_0x14a6fc[_0xd1a9('0x38')]['limit']);_0x2821db['offset']=qs[_0xd1a9('0x21')](_0x14a6fc[_0xd1a9('0x38')][_0xd1a9('0x21')]);}_0x2821db['order']=qs['sort'](_0x14a6fc[_0xd1a9('0x38')]['sort']);_0x2821db['where']=qs[_0xd1a9('0x3a')](_[_0xd1a9('0x3f')](_0x14a6fc[_0xd1a9('0x38')],_0x5ba025['filters']),_0x3133e5);if(_0x14a6fc[_0xd1a9('0x38')][_0xd1a9('0x40')]){_0x2821db[_0xd1a9('0x41')]=_[_0xd1a9('0x42')](_0x2821db[_0xd1a9('0x41')],{'$or':_[_0xd1a9('0x31')](_0x3133e5,function(_0x4129eb){if(_0x4129eb[_0xd1a9('0x35')]!=='VIRTUAL'){var _0x186c70={};_0x186c70[_0x4129eb[_0xd1a9('0x2e')]]={'$like':'%'+_0x14a6fc[_0xd1a9('0x38')][_0xd1a9('0x40')]+'%'};return _0x186c70;}})});}_0x2821db=_['merge']({},_0x2821db,_0x14a6fc['options']);var _0x94d21c={'where':_0x2821db[_0xd1a9('0x41')]};return db[_0xd1a9('0x32')][_0xd1a9('0x20')](_0x94d21c)[_0xd1a9('0x27')](function(_0x4c4518){_0x258374[_0xd1a9('0x20')]=_0x4c4518;if(_0x14a6fc[_0xd1a9('0x38')][_0xd1a9('0x43')]){_0x2821db[_0xd1a9('0x44')]=[{'all':!![]}];}return db['Schedule'][_0xd1a9('0x45')](_0x2821db);})[_0xd1a9('0x27')](function(_0x3993f5){_0x258374['rows']=_0x3993f5;return _0x258374;})[_0xd1a9('0x27')](respondWithFilteredResult(_0x50a357,_0x2821db))['catch'](handleError(_0x50a357,null));};exports['show']=function(_0x4faf85,_0x551ca1){var _0x1f4e9f={'raw':![],'where':{'id':_0x4faf85[_0xd1a9('0x46')]['id']}},_0x42a01a={};_0x42a01a['model']=_[_0xd1a9('0x39')](db['Schedule'][_0xd1a9('0x33')]);_0x42a01a[_0xd1a9('0x38')]=_[_0xd1a9('0x39')](_0x4faf85[_0xd1a9('0x38')]);_0x42a01a[_0xd1a9('0x3a')]=_[_0xd1a9('0x3b')](_0x42a01a[_0xd1a9('0x37')],_0x42a01a['query']);_0x1f4e9f[_0xd1a9('0x3d')]=_[_0xd1a9('0x3b')](_0x42a01a[_0xd1a9('0x37')],qs[_0xd1a9('0x3c')](_0x4faf85[_0xd1a9('0x38')][_0xd1a9('0x3c')]));_0x1f4e9f[_0xd1a9('0x3d')]=_0x1f4e9f[_0xd1a9('0x3d')][_0xd1a9('0x3e')]?_0x1f4e9f['attributes']:_0x42a01a[_0xd1a9('0x37')];if(_0x4faf85[_0xd1a9('0x38')][_0xd1a9('0x43')]){_0x1f4e9f['include']=[{'all':!![]}];}_0x1f4e9f=_['merge']({},_0x1f4e9f,_0x4faf85[_0xd1a9('0x47')]);return db['Schedule'][_0xd1a9('0x48')](_0x1f4e9f)[_0xd1a9('0x27')](handleEntityNotFound(_0x551ca1,null))[_0xd1a9('0x27')](respondWithResult(_0x551ca1,null))[_0xd1a9('0x49')](handleError(_0x551ca1,null));};exports['create']=function(_0x31e1d1,_0x1b9214){return db[_0xd1a9('0x32')][_0xd1a9('0x4a')](_0x31e1d1['body'],{})['then'](function(_0xbf09d9){var _0xd29efd=_0x31e1d1['user'][_0xd1a9('0x29')]({'plain':!![]});if(!_0xd29efd)throw new Error(_0xd1a9('0x4b'));if(_0xd29efd[_0xd1a9('0x4c')]===_0xd1a9('0x4d')){var _0x1ed620=_0xbf09d9[_0xd1a9('0x29')]({'plain':!![]});var _0x1ea78a=_0xd1a9('0x2a');return db[_0xd1a9('0x4e')]['find']({'where':{'name':_0x1ea78a,'userProfileId':_0xd29efd[_0xd1a9('0x4f')]},'raw':!![]})[_0xd1a9('0x27')](function(_0x5f43be){if(_0x5f43be&&_0x5f43be['autoAssociation']===0x0){return db['UserProfileResource'][_0xd1a9('0x4a')]({'name':_0x1ed620[_0xd1a9('0x2e')],'resourceId':_0x1ed620['id'],'type':_0x5f43be[_0xd1a9('0x2e')],'sectionId':_0x5f43be['id']},{})['then'](function(){return _0xbf09d9;});}else{return _0xbf09d9;}})['catch'](function(_0x41ad4c){logger[_0xd1a9('0x2c')](_0xd1a9('0x50'),_0x41ad4c);throw _0x41ad4c;});}return _0xbf09d9;})[_0xd1a9('0x27')](respondWithResult(_0x1b9214,0xc9))[_0xd1a9('0x49')](handleError(_0x1b9214,null));};exports[_0xd1a9('0x26')]=function(_0x55acaf,_0x559c3a){if(_0x55acaf['body']['id']){delete _0x55acaf['body']['id'];}return db['Schedule'][_0xd1a9('0x48')]({'where':{'id':_0x55acaf['params']['id']}})[_0xd1a9('0x27')](handleEntityNotFound(_0x559c3a,null))[_0xd1a9('0x27')](saveUpdates(_0x55acaf['body'],null))[_0xd1a9('0x27')](respondWithResult(_0x559c3a,null))[_0xd1a9('0x49')](handleError(_0x559c3a,null));};exports[_0xd1a9('0x28')]=function(_0x44eec2,_0x48913e){return db[_0xd1a9('0x32')][_0xd1a9('0x48')]({'where':{'id':_0x44eec2[_0xd1a9('0x46')]['id']}})[_0xd1a9('0x27')](handleEntityNotFound(_0x48913e,null))[_0xd1a9('0x27')](removeEntity(_0x48913e,null))[_0xd1a9('0x49')](handleError(_0x48913e,null));};exports['run']=function(_0x1bf266,_0x647d52,_0x4dec65){var _0x256664=require(_0xd1a9('0x51'));return db[_0xd1a9('0x32')][_0xd1a9('0x48')]({'where':{'id':_0x1bf266[_0xd1a9('0x46')]['id']},'raw':!![]})[_0xd1a9('0x27')](handleEntityNotFound(_0x647d52,null))[_0xd1a9('0x27')](function(){_0x256664[_0xd1a9('0x52')](_0x1bf266[_0xd1a9('0x46')]['id']);})[_0xd1a9('0x27')](respondWithStatusCode(_0x647d52,null))['catch'](handleError(_0x647d52,null));};
\ No newline at end of file
+var _0xd8d9=['stack','name','send','map','Schedule','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','show','fields','options','find','catch','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','run','../../config/schedule','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','Scheduler','end','error'];(function(_0x10ecc7,_0x586fb5){var _0x2c9614=function(_0x53105c){while(--_0x53105c){_0x10ecc7['push'](_0x10ecc7['shift']());}};_0x2c9614(++_0x586fb5);}(_0xd8d9,0x17a));var _0x9d8d=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xd8d9[_0x13ea00];return _0x1f7347;};'use strict';var emlformat=require(_0x9d8d('0x0'));var rimraf=require(_0x9d8d('0x1'));var zipdir=require(_0x9d8d('0x2'));var jsonpatch=require(_0x9d8d('0x3'));var rp=require(_0x9d8d('0x4'));var moment=require(_0x9d8d('0x5'));var BPromise=require(_0x9d8d('0x6'));var Mustache=require(_0x9d8d('0x7'));var util=require(_0x9d8d('0x8'));var path=require(_0x9d8d('0x9'));var sox=require('sox');var csv=require(_0x9d8d('0xa'));var ejs=require(_0x9d8d('0xb'));var fs=require('fs');var fs_extra=require(_0x9d8d('0xc'));var _=require('lodash');var squel=require(_0x9d8d('0xd'));var crypto=require(_0x9d8d('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9d8d('0xa'));var querystring=require(_0x9d8d('0xf'));var Papa=require(_0x9d8d('0x10'));var Redis=require('ioredis');var authService=require(_0x9d8d('0x11'));var qs=require(_0x9d8d('0x12'));var as=require(_0x9d8d('0x13'));var hardwareService=require(_0x9d8d('0x14'));var logger=require(_0x9d8d('0x15'))(_0x9d8d('0x16'));var utils=require(_0x9d8d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x9d8d('0x18'));var db=require(_0x9d8d('0x19'))['db'];function respondWithStatusCode(_0x328c7b,_0x26e011){_0x26e011=_0x26e011||0xcc;return function(_0x371f83){if(_0x371f83){return _0x328c7b[_0x9d8d('0x1a')](_0x26e011);}return _0x328c7b[_0x9d8d('0x1b')](_0x26e011)['end']();};}function respondWithResult(_0x4a8925,_0x5728f2){_0x5728f2=_0x5728f2||0xc8;return function(_0x59d8d5){if(_0x59d8d5){return _0x4a8925['status'](_0x5728f2)['json'](_0x59d8d5);}};}function respondWithFilteredResult(_0x5e3936,_0x45f055){return function(_0x378443){if(_0x378443){var _0x2fef8f=typeof _0x45f055[_0x9d8d('0x1c')]===_0x9d8d('0x1d')&&typeof _0x45f055[_0x9d8d('0x1e')]===_0x9d8d('0x1d');var _0x43f8dc=_0x378443[_0x9d8d('0x1f')];var _0x4adb4d=_0x2fef8f?0x0:_0x45f055[_0x9d8d('0x1c')];var _0x291ee2=_0x2fef8f?_0x378443[_0x9d8d('0x1f')]:_0x45f055[_0x9d8d('0x1c')]+_0x45f055[_0x9d8d('0x1e')];var _0x597676;if(_0x291ee2>=_0x43f8dc){_0x291ee2=_0x43f8dc;_0x597676=0xc8;}else{_0x597676=0xce;}_0x5e3936[_0x9d8d('0x1b')](_0x597676);return _0x5e3936['set'](_0x9d8d('0x20'),_0x4adb4d+'-'+_0x291ee2+'/'+_0x43f8dc)['json'](_0x378443);}return null;};}function patchUpdates(_0x113157){return function(_0x39ae3d){try{jsonpatch[_0x9d8d('0x21')](_0x39ae3d,_0x113157,!![]);}catch(_0x52553f){return BPromise[_0x9d8d('0x22')](_0x52553f);}return _0x39ae3d[_0x9d8d('0x23')]();};}function saveUpdates(_0x58de2e,_0x281cbe){return function(_0x464d43){if(_0x464d43){return _0x464d43[_0x9d8d('0x24')](_0x58de2e)[_0x9d8d('0x25')](function(_0x4f2393){return _0x4f2393;});}return null;};}function removeEntity(_0x5d4d01,_0x221345){return function(_0x3c7ce1){if(_0x3c7ce1){return _0x3c7ce1[_0x9d8d('0x26')]()['then'](function(){var _0x194be9=_0x3c7ce1['get']({'plain':!![]});var _0x1795b0=_0x9d8d('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x1795b0,'resourceId':_0x194be9['id']}})[_0x9d8d('0x25')](function(){return _0x3c7ce1;});})[_0x9d8d('0x25')](function(){_0x5d4d01['status'](0xcc)[_0x9d8d('0x28')]();});}};}function handleEntityNotFound(_0x441ab9,_0x50ac0a){return function(_0x23f5b8){if(!_0x23f5b8){_0x441ab9[_0x9d8d('0x1a')](0x194);}return _0x23f5b8;};}function handleError(_0x1d8dec,_0x201330){_0x201330=_0x201330||0x1f4;return function(_0x486801){logger[_0x9d8d('0x29')](_0x486801[_0x9d8d('0x2a')]);if(_0x486801['name']){delete _0x486801[_0x9d8d('0x2b')];}_0x1d8dec[_0x9d8d('0x1b')](_0x201330)[_0x9d8d('0x2c')](_0x486801);};}exports['index']=function(_0x3c9f86,_0x592798){var _0x74ba1b={},_0xf0efb4={},_0x528eee={'count':0x0,'rows':[]};var _0x2e17e9=_[_0x9d8d('0x2d')](db[_0x9d8d('0x2e')][_0x9d8d('0x2f')],function(_0x433337){return{'name':_0x433337['fieldName'],'type':_0x433337[_0x9d8d('0x30')][_0x9d8d('0x31')]};});_0xf0efb4[_0x9d8d('0x32')]=_['map'](_0x2e17e9,_0x9d8d('0x2b'));_0xf0efb4[_0x9d8d('0x33')]=_[_0x9d8d('0x34')](_0x3c9f86[_0x9d8d('0x33')]);_0xf0efb4[_0x9d8d('0x35')]=_['intersection'](_0xf0efb4[_0x9d8d('0x32')],_0xf0efb4[_0x9d8d('0x33')]);_0x74ba1b['attributes']=_[_0x9d8d('0x36')](_0xf0efb4[_0x9d8d('0x32')],qs['fields'](_0x3c9f86[_0x9d8d('0x33')]['fields']));_0x74ba1b['attributes']=_0x74ba1b[_0x9d8d('0x37')][_0x9d8d('0x38')]?_0x74ba1b[_0x9d8d('0x37')]:_0xf0efb4['model'];if(!_0x3c9f86[_0x9d8d('0x33')][_0x9d8d('0x39')]('nolimit')){_0x74ba1b[_0x9d8d('0x1e')]=qs[_0x9d8d('0x1e')](_0x3c9f86['query']['limit']);_0x74ba1b[_0x9d8d('0x1c')]=qs[_0x9d8d('0x1c')](_0x3c9f86[_0x9d8d('0x33')][_0x9d8d('0x1c')]);}_0x74ba1b[_0x9d8d('0x3a')]=qs[_0x9d8d('0x3b')](_0x3c9f86['query'][_0x9d8d('0x3b')]);_0x74ba1b[_0x9d8d('0x3c')]=qs[_0x9d8d('0x35')](_[_0x9d8d('0x3d')](_0x3c9f86[_0x9d8d('0x33')],_0xf0efb4['filters']),_0x2e17e9);if(_0x3c9f86[_0x9d8d('0x33')][_0x9d8d('0x3e')]){_0x74ba1b[_0x9d8d('0x3c')]=_[_0x9d8d('0x3f')](_0x74ba1b['where'],{'$or':_[_0x9d8d('0x2d')](_0x2e17e9,function(_0x588418){if(_0x588418[_0x9d8d('0x30')]!==_0x9d8d('0x40')){var _0x30dfce={};_0x30dfce[_0x588418['name']]={'$like':'%'+_0x3c9f86[_0x9d8d('0x33')][_0x9d8d('0x3e')]+'%'};return _0x30dfce;}})});}_0x74ba1b=_['merge']({},_0x74ba1b,_0x3c9f86['options']);var _0x4afbb1={'where':_0x74ba1b[_0x9d8d('0x3c')]};return db[_0x9d8d('0x2e')]['count'](_0x4afbb1)[_0x9d8d('0x25')](function(_0x3ab110){_0x528eee[_0x9d8d('0x1f')]=_0x3ab110;if(_0x3c9f86[_0x9d8d('0x33')][_0x9d8d('0x41')]){_0x74ba1b['include']=[{'all':!![]}];}return db[_0x9d8d('0x2e')][_0x9d8d('0x42')](_0x74ba1b);})[_0x9d8d('0x25')](function(_0x4ba923){_0x528eee['rows']=_0x4ba923;return _0x528eee;})['then'](respondWithFilteredResult(_0x592798,_0x74ba1b))['catch'](handleError(_0x592798,null));};exports[_0x9d8d('0x43')]=function(_0x3db776,_0x524d40){var _0x5154c2={'raw':![],'where':{'id':_0x3db776['params']['id']}},_0x4360f6={};_0x4360f6[_0x9d8d('0x32')]=_[_0x9d8d('0x34')](db[_0x9d8d('0x2e')][_0x9d8d('0x2f')]);_0x4360f6[_0x9d8d('0x33')]=_[_0x9d8d('0x34')](_0x3db776[_0x9d8d('0x33')]);_0x4360f6[_0x9d8d('0x35')]=_[_0x9d8d('0x36')](_0x4360f6[_0x9d8d('0x32')],_0x4360f6[_0x9d8d('0x33')]);_0x5154c2[_0x9d8d('0x37')]=_[_0x9d8d('0x36')](_0x4360f6[_0x9d8d('0x32')],qs['fields'](_0x3db776[_0x9d8d('0x33')][_0x9d8d('0x44')]));_0x5154c2[_0x9d8d('0x37')]=_0x5154c2[_0x9d8d('0x37')][_0x9d8d('0x38')]?_0x5154c2['attributes']:_0x4360f6[_0x9d8d('0x32')];if(_0x3db776[_0x9d8d('0x33')][_0x9d8d('0x41')]){_0x5154c2['include']=[{'all':!![]}];}_0x5154c2=_[_0x9d8d('0x3f')]({},_0x5154c2,_0x3db776[_0x9d8d('0x45')]);return db['Schedule'][_0x9d8d('0x46')](_0x5154c2)['then'](handleEntityNotFound(_0x524d40,null))[_0x9d8d('0x25')](respondWithResult(_0x524d40,null))[_0x9d8d('0x47')](handleError(_0x524d40,null));};exports[_0x9d8d('0x48')]=function(_0x3b5ee8,_0x31dc4d){return db['Schedule'][_0x9d8d('0x48')](_0x3b5ee8['body'],{})[_0x9d8d('0x25')](function(_0x56519a){var _0x200caa=_0x3b5ee8['user'][_0x9d8d('0x49')]({'plain':!![]});if(!_0x200caa)throw new Error(_0x9d8d('0x4a'));if(_0x200caa[_0x9d8d('0x4b')]===_0x9d8d('0x4c')){var _0x1c0f9b=_0x56519a[_0x9d8d('0x49')]({'plain':!![]});var _0x36f0a7=_0x9d8d('0x27');return db['UserProfileSection'][_0x9d8d('0x46')]({'where':{'name':_0x36f0a7,'userProfileId':_0x200caa['userProfileId']},'raw':!![]})['then'](function(_0x47767b){if(_0x47767b&&_0x47767b[_0x9d8d('0x4d')]===0x0){return db[_0x9d8d('0x4e')][_0x9d8d('0x48')]({'name':_0x1c0f9b[_0x9d8d('0x2b')],'resourceId':_0x1c0f9b['id'],'type':_0x47767b[_0x9d8d('0x2b')],'sectionId':_0x47767b['id']},{})[_0x9d8d('0x25')](function(){return _0x56519a;});}else{return _0x56519a;}})[_0x9d8d('0x47')](function(_0x445a6d){logger['error'](_0x9d8d('0x4f'),_0x445a6d);throw _0x445a6d;});}return _0x56519a;})[_0x9d8d('0x25')](respondWithResult(_0x31dc4d,0xc9))[_0x9d8d('0x47')](handleError(_0x31dc4d,null));};exports[_0x9d8d('0x24')]=function(_0x168937,_0x4fb455){if(_0x168937[_0x9d8d('0x50')]['id']){delete _0x168937[_0x9d8d('0x50')]['id'];}return db['Schedule']['find']({'where':{'id':_0x168937['params']['id']}})[_0x9d8d('0x25')](handleEntityNotFound(_0x4fb455,null))[_0x9d8d('0x25')](saveUpdates(_0x168937[_0x9d8d('0x50')],null))[_0x9d8d('0x25')](respondWithResult(_0x4fb455,null))['catch'](handleError(_0x4fb455,null));};exports[_0x9d8d('0x26')]=function(_0x1229cd,_0x33cd32){return db[_0x9d8d('0x2e')][_0x9d8d('0x46')]({'where':{'id':_0x1229cd['params']['id']}})[_0x9d8d('0x25')](handleEntityNotFound(_0x33cd32,null))[_0x9d8d('0x25')](removeEntity(_0x33cd32,null))['catch'](handleError(_0x33cd32,null));};exports[_0x9d8d('0x51')]=function(_0x51af4e,_0x1d50a2,_0x174c3c){var _0x32b937=require(_0x9d8d('0x52'));return db['Schedule'][_0x9d8d('0x46')]({'where':{'id':_0x51af4e[_0x9d8d('0x53')]['id']},'raw':!![]})[_0x9d8d('0x25')](handleEntityNotFound(_0x1d50a2,null))[_0x9d8d('0x25')](function(){_0x32b937[_0x9d8d('0x51')](_0x51af4e['params']['id']);})['then'](respondWithStatusCode(_0x1d50a2,null))[_0x9d8d('0x47')](handleError(_0x1d50a2,null));};
\ No newline at end of file
index 9e02c35..f854115 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x493a=['define','tools_schedules','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./schedule.attributes'];(function(_0x1c75bc,_0x474bac){var _0x30578b=function(_0xc94d85){while(--_0xc94d85){_0x1c75bc['push'](_0x1c75bc['shift']());}};_0x30578b(++_0x474bac);}(_0x493a,0x1ca));var _0xa493=function(_0x51b661,_0x566ef8){_0x51b661=_0x51b661-0x0;var _0x5d1971=_0x493a[_0x51b661];return _0x5d1971;};'use strict';var _=require(_0xa493('0x0'));var util=require('util');var logger=require(_0xa493('0x1'))(_0xa493('0x2'));var moment=require(_0xa493('0x3'));var BPromise=require(_0xa493('0x4'));var rp=require(_0xa493('0x5'));var fs=require('fs');var path=require(_0xa493('0x6'));var rimraf=require(_0xa493('0x7'));var config=require(_0xa493('0x8'));var attributes=require(_0xa493('0x9'));module['exports']=function(_0x113147,_0x2d4b85){return _0x113147[_0xa493('0xa')]('Schedule',attributes,{'tableName':_0xa493('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6f6a=['api','moment','bluebird','request-promise','../../config/environment','exports','define','Schedule','tools_schedules','lodash','util','../../config/logger'];(function(_0xd204b0,_0x4c7d1d){var _0xfc8310=function(_0x4f4b5a){while(--_0x4f4b5a){_0xd204b0['push'](_0xd204b0['shift']());}};_0xfc8310(++_0x4c7d1d);}(_0x6f6a,0x8d));var _0xa6f6=function(_0x1f45a9,_0x6af208){_0x1f45a9=_0x1f45a9-0x0;var _0x63e3a9=_0x6f6a[_0x1f45a9];return _0x63e3a9;};'use strict';var _=require(_0xa6f6('0x0'));var util=require(_0xa6f6('0x1'));var logger=require(_0xa6f6('0x2'))(_0xa6f6('0x3'));var moment=require(_0xa6f6('0x4'));var BPromise=require(_0xa6f6('0x5'));var rp=require(_0xa6f6('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa6f6('0x7'));var attributes=require('./schedule.attributes');module[_0xa6f6('0x8')]=function(_0x37cd5b,_0x137ee3){return _0x37cd5b[_0xa6f6('0x9')](_0xa6f6('0xa'),attributes,{'tableName':_0xa6f6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7d028ad..cf8e9a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd53b=['bluebird','randomstring','ioredis','rpc','../../config/environment','client','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','lodash','util','moment'];(function(_0x476b6a,_0x1581c8){var _0x526570=function(_0x8459c7){while(--_0x8459c7){_0x476b6a['push'](_0x476b6a['shift']());}};_0x526570(++_0x1581c8);}(_0xd53b,0x11d));var _0xbd53=function(_0x2d062b,_0x7d1243){_0x2d062b=_0x2d062b-0x0;var _0x288391=_0xd53b[_0x2d062b];return _0x288391;};'use strict';var _=require(_0xbd53('0x0'));var util=require(_0xbd53('0x1'));var moment=require(_0xbd53('0x2'));var BPromise=require(_0xbd53('0x3'));var rs=require(_0xbd53('0x4'));var fs=require('fs');var Redis=require(_0xbd53('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbd53('0x6'));var config=require(_0xbd53('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xbd53('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5809d0,_0x3573e7,_0x5e0f2b){return new BPromise(function(_0x25feee,_0x24b8e5){return client['request'](_0x5809d0,_0x5e0f2b)['then'](function(_0x41f384){logger['info'](_0xbd53('0x9'),_0x3573e7,_0xbd53('0xa'));logger[_0xbd53('0xb')](_0xbd53('0xc'),_0x3573e7,'request\x20sent',JSON[_0xbd53('0xd')](_0x41f384));if(_0x41f384[_0xbd53('0xe')]){if(_0x41f384['error']['code']===0x1f4){logger[_0xbd53('0xe')](_0xbd53('0x9'),_0x3573e7,_0x41f384[_0xbd53('0xe')]['message']);return _0x24b8e5(_0x41f384['error']['message']);}logger['error'](_0xbd53('0x9'),_0x3573e7,_0x41f384[_0xbd53('0xe')][_0xbd53('0xf')]);return _0x25feee(_0x41f384[_0xbd53('0xe')][_0xbd53('0xf')]);}else{logger[_0xbd53('0x10')](_0xbd53('0x9'),_0x3573e7,_0xbd53('0xa'));_0x25feee(_0x41f384['result']['message']);}})[_0xbd53('0x11')](function(_0x35a8b2){logger['error'](_0xbd53('0x9'),_0x3573e7,_0x35a8b2);_0x24b8e5(_0x35a8b2);});});}
\ No newline at end of file
+var _0x0946=['request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','error','code','message','Schedule,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x1ab180,_0x382b2c){var _0xfb2c2d=function(_0x1c5fd3){while(--_0x1c5fd3){_0x1ab180['push'](_0x1ab180['shift']());}};_0xfb2c2d(++_0x382b2c);}(_0x0946,0x18f));var _0x6094=function(_0x47568e,_0x5ccdaf){_0x47568e=_0x47568e-0x0;var _0x33815b=_0x0946[_0x47568e];return _0x33815b;};'use strict';var _=require(_0x6094('0x0'));var util=require(_0x6094('0x1'));var moment=require('moment');var BPromise=require(_0x6094('0x2'));var rs=require(_0x6094('0x3'));var fs=require('fs');var Redis=require(_0x6094('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6094('0x5'));var logger=require(_0x6094('0x6'))(_0x6094('0x7'));var config=require(_0x6094('0x8'));var jayson=require(_0x6094('0x9'));var client=jayson[_0x6094('0xa')][_0x6094('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x294fdb,_0x3f50ff,_0x16b368){return new BPromise(function(_0x55bf91,_0x136a59){return client[_0x6094('0xc')](_0x294fdb,_0x16b368)[_0x6094('0xd')](function(_0x2b0e2d){logger[_0x6094('0xe')]('Schedule,\x20%s,\x20%s',_0x3f50ff,_0x6094('0xf'));logger['debug'](_0x6094('0x10'),_0x3f50ff,'request\x20sent',JSON['stringify'](_0x2b0e2d));if(_0x2b0e2d[_0x6094('0x11')]){if(_0x2b0e2d[_0x6094('0x11')][_0x6094('0x12')]===0x1f4){logger[_0x6094('0x11')]('Schedule,\x20%s,\x20%s',_0x3f50ff,_0x2b0e2d[_0x6094('0x11')][_0x6094('0x13')]);return _0x136a59(_0x2b0e2d[_0x6094('0x11')][_0x6094('0x13')]);}logger[_0x6094('0x11')](_0x6094('0x14'),_0x3f50ff,_0x2b0e2d[_0x6094('0x11')][_0x6094('0x13')]);return _0x55bf91(_0x2b0e2d[_0x6094('0x11')][_0x6094('0x13')]);}else{logger[_0x6094('0xe')](_0x6094('0x14'),_0x3f50ff,_0x6094('0xf'));_0x55bf91(_0x2b0e2d[_0x6094('0x15')]['message']);}})[_0x6094('0x16')](function(_0x1a4492){logger[_0x6094('0x11')](_0x6094('0x14'),_0x3f50ff,_0x1a4492);_0x136a59(_0x1a4492);});});}
\ No newline at end of file
index 906e7de..1cdfa37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd624=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','create','put','update','delete','destroy','multer','util','path'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xd624,0x129));var _0x4d62=function(_0xf219a5,_0x2331d4){_0xf219a5=_0xf219a5-0x0;var _0x10eab7=_0xd624[_0xf219a5];return _0x10eab7;};'use strict';var multer=require(_0x4d62('0x0'));var util=require(_0x4d62('0x1'));var path=require(_0x4d62('0x2'));var timeout=require(_0x4d62('0x3'));var express=require(_0x4d62('0x4'));var router=express['Router']();var fs_extra=require(_0x4d62('0x5'));var auth=require(_0x4d62('0x6'));var interaction=require(_0x4d62('0x7'));var config=require(_0x4d62('0x8'));var controller=require('./screenRecording.controller');router[_0x4d62('0x9')]('/',auth[_0x4d62('0xa')](),controller[_0x4d62('0xb')]);router[_0x4d62('0x9')](_0x4d62('0xc'),auth[_0x4d62('0xa')](),controller[_0x4d62('0xd')]);router['get'](_0x4d62('0xe'),auth[_0x4d62('0xa')](),controller['show']);router[_0x4d62('0x9')]('/:id/download',auth['isAuthenticated'](),controller['download']);router['post']('/',auth[_0x4d62('0xa')](),controller[_0x4d62('0xf')]);router[_0x4d62('0x10')](_0x4d62('0xe'),auth['isAuthenticated'](),controller[_0x4d62('0x11')]);router[_0x4d62('0x12')](_0x4d62('0xe'),auth['isAuthenticated'](),controller[_0x4d62('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x7c26=['path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','show','download','post','create','put','/:id','update','delete','exports','multer','util'];(function(_0x94c47a,_0x5bdc53){var _0x1cdb1d=function(_0x121352){while(--_0x121352){_0x94c47a['push'](_0x94c47a['shift']());}};_0x1cdb1d(++_0x5bdc53);}(_0x7c26,0x14e));var _0x67c2=function(_0x1560dc,_0x49d2c){_0x1560dc=_0x1560dc-0x0;var _0x1caeaa=_0x7c26[_0x1560dc];return _0x1caeaa;};'use strict';var multer=require(_0x67c2('0x0'));var util=require(_0x67c2('0x1'));var path=require(_0x67c2('0x2'));var timeout=require(_0x67c2('0x3'));var express=require('express');var router=express[_0x67c2('0x4')]();var fs_extra=require(_0x67c2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x67c2('0x6'));var config=require(_0x67c2('0x7'));var controller=require('./screenRecording.controller');router['get']('/',auth[_0x67c2('0x8')](),controller['index']);router[_0x67c2('0x9')](_0x67c2('0xa'),auth['isAuthenticated'](),controller[_0x67c2('0xb')]);router['get']('/:id',auth[_0x67c2('0x8')](),controller[_0x67c2('0xc')]);router['get']('/:id/download',auth[_0x67c2('0x8')](),controller[_0x67c2('0xd')]);router[_0x67c2('0xe')]('/',auth[_0x67c2('0x8')](),controller[_0x67c2('0xf')]);router[_0x67c2('0x10')](_0x67c2('0x11'),auth[_0x67c2('0x8')](),controller[_0x67c2('0x12')]);router[_0x67c2('0x13')](_0x67c2('0x11'),auth[_0x67c2('0x8')](),controller['destroy']);module[_0x67c2('0x14')]=router;
\ No newline at end of file
index 55ee8af..cde2c98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8f2=['MM-DD-YYYY\x20HH:mm','toString','format','createdAt','updatedAt','sequelize','moment','path','../../config/environment','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','closedAt','duration','DATE'];(function(_0x5b45da,_0x52bb87){var _0x2327f7=function(_0x35c430){while(--_0x35c430){_0x5b45da['push'](_0x5b45da['shift']());}};_0x2327f7(++_0x52bb87);}(_0xf8f2,0xc2));var _0x2f8f=function(_0xee3505,_0x2379c0){_0xee3505=_0xee3505-0x0;var _0x370ade=_0xf8f2[_0xee3505];return _0x370ade;};'use strict';var Sequelize=require(_0x2f8f('0x0'));var moment=require(_0x2f8f('0x1'));var path=require(_0x2f8f('0x2'));var config=require(_0x2f8f('0x3'));module['exports']={'format':{'type':Sequelize[_0x2f8f('0x4')],'get':function(){return this[_0x2f8f('0x5')](_0x2f8f('0x6'))?path[_0x2f8f('0x7')](this[_0x2f8f('0x5')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0x2f8f('0x8')]},'channel':{'type':Sequelize[_0x2f8f('0x8')]},'value':{'type':Sequelize[_0x2f8f('0x8')],'set':function(_0x107748){var _0x590ff4=_0x107748[_0x2f8f('0x9')](/\\/g,'/');this[_0x2f8f('0xa')](_0x2f8f('0x6'),_0x590ff4);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x2f8f('0xb')],'set':function(_0x1ce821){this[_0x2f8f('0xa')](_0x2f8f('0xc'),moment()['subtract'](_0x1ce821,'ms'));this[_0x2f8f('0xa')](_0x2f8f('0xd'),moment());this['setDataValue'](_0x2f8f('0xe'),_0x1ce821);}},'startedAt':{'type':Sequelize[_0x2f8f('0xf')],'get':function(){return moment(this[_0x2f8f('0x5')](_0x2f8f('0xc')))['format'](_0x2f8f('0x10'))[_0x2f8f('0x11')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x2f8f('0xd')))[_0x2f8f('0x12')]('MM-DD-YYYY\x20HH:mm')[_0x2f8f('0x11')]();}},'createdAt':{'type':Sequelize[_0x2f8f('0xf')],'get':function(){return moment(this[_0x2f8f('0x5')](_0x2f8f('0x13')))[_0x2f8f('0x12')]('MM-DD-YYYY\x20HH:mm')['toString']();}},'updatedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x2f8f('0x14')))[_0x2f8f('0x12')](_0x2f8f('0x10'))[_0x2f8f('0x11')]();}}};
\ No newline at end of file
+var _0x6f3e=['replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','format','MM-DD-YYYY\x20HH:mm','DATE','toString','createdAt','sequelize','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','extname','STRING'];(function(_0x536f25,_0x516127){var _0x52d236=function(_0x4e07ce){while(--_0x4e07ce){_0x536f25['push'](_0x536f25['shift']());}};_0x52d236(++_0x516127);}(_0x6f3e,0x9f));var _0xe6f3=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6f3e[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xe6f3('0x0'));var moment=require(_0xe6f3('0x1'));var path=require(_0xe6f3('0x2'));var config=require(_0xe6f3('0x3'));module[_0xe6f3('0x4')]={'format':{'type':Sequelize[_0xe6f3('0x5')],'get':function(){return this[_0xe6f3('0x6')]('value')?path[_0xe6f3('0x7')](this[_0xe6f3('0x6')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0xe6f3('0x8')]},'channel':{'type':Sequelize[_0xe6f3('0x8')]},'value':{'type':Sequelize[_0xe6f3('0x8')],'set':function(_0x5b59eb){var _0x44cedc=_0x5b59eb[_0xe6f3('0x9')](/\\/g,'/');this[_0xe6f3('0xa')]('value',_0x44cedc);}},'rating':{'type':Sequelize[_0xe6f3('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x331856){this[_0xe6f3('0xa')](_0xe6f3('0xc'),moment()[_0xe6f3('0xd')](_0x331856,'ms'));this[_0xe6f3('0xa')](_0xe6f3('0xe'),moment());this['setDataValue'](_0xe6f3('0xf'),_0x331856);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xe6f3('0x6')](_0xe6f3('0xc')))[_0xe6f3('0x10')](_0xe6f3('0x11'))['toString']();}},'closedAt':{'type':Sequelize[_0xe6f3('0x12')],'get':function(){return moment(this[_0xe6f3('0x6')](_0xe6f3('0xe')))[_0xe6f3('0x10')](_0xe6f3('0x11'))[_0xe6f3('0x13')]();}},'createdAt':{'type':Sequelize[_0xe6f3('0x12')],'get':function(){return moment(this['getDataValue'](_0xe6f3('0x14')))[_0xe6f3('0x10')](_0xe6f3('0x11'))[_0xe6f3('0x13')]();}},'updatedAt':{'type':Sequelize[_0xe6f3('0x12')],'get':function(){return moment(this['getDataValue']('updatedAt'))[_0xe6f3('0x10')](_0xe6f3('0x11'))[_0xe6f3('0x13')]();}}};
\ No newline at end of file
index 69f49ec..002377f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5075=['send','Not\x20found','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','isNil','info','File:\x20\x22','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','save','update','then','destroy','end','error','name','index','map','ScreenRecording','rawAttributes','fieldName','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','createdAt','closedAt','value','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ScreenRecording\x20not\x20found','filename','extname','unlink','message'];(function(_0x421a58,_0x118878){var _0x3793a8=function(_0x11a907){while(--_0x11a907){_0x421a58['push'](_0x421a58['shift']());}};_0x3793a8(++_0x118878);}(_0x5075,0x73));var _0x5507=function(_0x414f67,_0x861aed){_0x414f67=_0x414f67-0x0;var _0x338537=_0x5075[_0x414f67];return _0x338537;};'use strict';var emlformat=require(_0x5507('0x0'));var rimraf=require(_0x5507('0x1'));var zipdir=require(_0x5507('0x2'));var jsonpatch=require(_0x5507('0x3'));var rp=require(_0x5507('0x4'));var moment=require(_0x5507('0x5'));var BPromise=require(_0x5507('0x6'));var Mustache=require('mustache');var util=require(_0x5507('0x7'));var path=require(_0x5507('0x8'));var sox=require(_0x5507('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5507('0xa'));var _=require(_0x5507('0xb'));var squel=require('squel');var crypto=require(_0x5507('0xc'));var jsforce=require(_0x5507('0xd'));var deskjs=require(_0x5507('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5507('0xf'));var Redis=require(_0x5507('0x10'));var authService=require(_0x5507('0x11'));var qs=require(_0x5507('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5507('0x13'));var logger=require(_0x5507('0x14'))('api');var utils=require(_0x5507('0x15'));var config=require(_0x5507('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x5507('0x17'))['db'];function respondWithStatusCode(_0x2a2ea0,_0x32c872){_0x32c872=_0x32c872||0xcc;return function(_0x267f27){if(_0x267f27){return _0x2a2ea0[_0x5507('0x18')](_0x32c872);}return _0x2a2ea0[_0x5507('0x19')](_0x32c872)['end']();};}function respondWithResult(_0x9cc3f9,_0x2b7c43){_0x2b7c43=_0x2b7c43||0xc8;return function(_0xc828e5){if(_0xc828e5){return _0x9cc3f9[_0x5507('0x19')](_0x2b7c43)['json'](_0xc828e5);}};}function respondWithFilteredResult(_0x49e400,_0x10d7b9){return function(_0x2dfd06){if(_0x2dfd06){var _0x1ab167=typeof _0x10d7b9[_0x5507('0x1a')]===_0x5507('0x1b')&&typeof _0x10d7b9[_0x5507('0x1c')]===_0x5507('0x1b');var _0x3d1619=_0x2dfd06[_0x5507('0x1d')];var _0x233b6a=_0x1ab167?0x0:_0x10d7b9[_0x5507('0x1a')];var _0x3822dd=_0x1ab167?_0x2dfd06['count']:_0x10d7b9[_0x5507('0x1a')]+_0x10d7b9[_0x5507('0x1c')];var _0x4054c6;if(_0x3822dd>=_0x3d1619){_0x3822dd=_0x3d1619;_0x4054c6=0xc8;}else{_0x4054c6=0xce;}_0x49e400[_0x5507('0x19')](_0x4054c6);return _0x49e400['set'](_0x5507('0x1e'),_0x233b6a+'-'+_0x3822dd+'/'+_0x3d1619)[_0x5507('0x1f')](_0x2dfd06);}return null;};}function patchUpdates(_0x1a54b0){return function(_0x3ca1f7){try{jsonpatch[_0x5507('0x20')](_0x3ca1f7,_0x1a54b0,!![]);}catch(_0x1be8b1){return BPromise['reject'](_0x1be8b1);}return _0x3ca1f7[_0x5507('0x21')]();};}function saveUpdates(_0x105535,_0x1f6325){return function(_0xa3e2cf){if(_0xa3e2cf){return _0xa3e2cf[_0x5507('0x22')](_0x105535)[_0x5507('0x23')](function(_0x1fcc8d){return _0x1fcc8d;});}return null;};}function removeEntity(_0x10f149,_0x398911){return function(_0xa47641){if(_0xa47641){return _0xa47641[_0x5507('0x24')]()[_0x5507('0x23')](function(){_0x10f149[_0x5507('0x19')](0xcc)[_0x5507('0x25')]();});}};}function handleEntityNotFound(_0x1a2203,_0x4915ed){return function(_0x4e8906){if(!_0x4e8906){_0x1a2203['sendStatus'](0x194);}return _0x4e8906;};}function handleError(_0x26335e,_0x4ea271){_0x4ea271=_0x4ea271||0x1f4;return function(_0xa66a01){logger[_0x5507('0x26')](_0xa66a01['stack']);if(_0xa66a01['name']){delete _0xa66a01[_0x5507('0x27')];}_0x26335e[_0x5507('0x19')](_0x4ea271)['send'](_0xa66a01);};}exports[_0x5507('0x28')]=function(_0x24574b,_0x85d383){var _0x38f4d9={},_0x1e5ce6={},_0x14fdea={'count':0x0,'rows':[]};var _0x55e889=_[_0x5507('0x29')](db[_0x5507('0x2a')][_0x5507('0x2b')],function(_0x38f0f5){return{'name':_0x38f0f5[_0x5507('0x2c')],'type':_0x38f0f5['type']['key']};});_0x1e5ce6[_0x5507('0x2d')]=_[_0x5507('0x2e')](_[_0x5507('0x29')](_0x55e889,_0x5507('0x27')),['format']);_0x1e5ce6[_0x5507('0x2f')]=_[_0x5507('0x30')](_0x24574b[_0x5507('0x2f')]);_0x1e5ce6[_0x5507('0x31')]=_[_0x5507('0x32')](_0x1e5ce6[_0x5507('0x2d')],_0x1e5ce6[_0x5507('0x2f')]);_0x38f4d9[_0x5507('0x33')]=_['intersection'](_0x1e5ce6[_0x5507('0x2d')],qs[_0x5507('0x34')](_0x24574b[_0x5507('0x2f')]['fields']));_0x38f4d9['attributes']=_0x38f4d9[_0x5507('0x33')][_0x5507('0x35')]?_0x38f4d9[_0x5507('0x33')]:_0x1e5ce6[_0x5507('0x2d')];if(!_0x24574b[_0x5507('0x2f')]['hasOwnProperty']('nolimit')){_0x38f4d9[_0x5507('0x1c')]=qs[_0x5507('0x1c')](_0x24574b[_0x5507('0x2f')][_0x5507('0x1c')]);_0x38f4d9['offset']=qs['offset'](_0x24574b[_0x5507('0x2f')]['offset']);}_0x38f4d9[_0x5507('0x36')]=qs[_0x5507('0x37')](_0x24574b[_0x5507('0x2f')][_0x5507('0x37')]);_0x38f4d9[_0x5507('0x38')]=qs[_0x5507('0x31')](_[_0x5507('0x39')](_0x24574b[_0x5507('0x2f')],_0x1e5ce6[_0x5507('0x31')]),_0x55e889);if(_0x24574b[_0x5507('0x2f')]['filter']){_0x38f4d9['where']=_['merge'](_0x38f4d9['where'],{'$or':_[_0x5507('0x29')](_0x55e889,function(_0x2cf512){if(_0x2cf512[_0x5507('0x3a')]!==_0x5507('0x3b')){var _0x2b32a5={};_0x2b32a5[_0x2cf512[_0x5507('0x27')]]={'$like':'%'+_0x24574b[_0x5507('0x2f')][_0x5507('0x3c')]+'%'};return _0x2b32a5;}})});}_0x38f4d9=_[_0x5507('0x3d')]({},_0x38f4d9,_0x24574b[_0x5507('0x3e')]);var _0x3ec0ed={'where':_0x38f4d9[_0x5507('0x38')]};return db[_0x5507('0x2a')][_0x5507('0x1d')](_0x3ec0ed)['then'](function(_0x53b3f3){_0x14fdea['count']=_0x53b3f3;if(_0x24574b[_0x5507('0x2f')][_0x5507('0x3f')]){_0x38f4d9[_0x5507('0x40')]=[{'all':!![]}];}return db[_0x5507('0x2a')][_0x5507('0x41')](_0x38f4d9);})[_0x5507('0x23')](function(_0x340c4c){_0x14fdea[_0x5507('0x42')]=_0x340c4c;return _0x14fdea;})[_0x5507('0x23')](respondWithFilteredResult(_0x85d383,_0x38f4d9))[_0x5507('0x43')](handleError(_0x85d383,null));};exports[_0x5507('0x44')]=function(_0x192a00,_0x24d7b5){var _0x25496b={'raw':![],'where':{'id':_0x192a00[_0x5507('0x45')]['id']}},_0x1b3006={};_0x1b3006[_0x5507('0x2d')]=_[_0x5507('0x30')](db[_0x5507('0x2a')]['rawAttributes']);_0x1b3006[_0x5507('0x2f')]=_[_0x5507('0x30')](_0x192a00['query']);_0x1b3006['filters']=_[_0x5507('0x32')](_0x1b3006[_0x5507('0x2d')],_0x1b3006[_0x5507('0x2f')]);_0x25496b[_0x5507('0x33')]=_[_0x5507('0x32')](_0x1b3006['model'],qs[_0x5507('0x34')](_0x192a00[_0x5507('0x2f')][_0x5507('0x34')]));_0x25496b['attributes']=_0x25496b[_0x5507('0x33')][_0x5507('0x35')]?_0x25496b[_0x5507('0x33')]:_0x1b3006[_0x5507('0x2d')];if(_0x192a00[_0x5507('0x2f')]['includeAll']){_0x25496b[_0x5507('0x40')]=[{'all':!![]}];}_0x25496b=_['merge']({},_0x25496b,_0x192a00[_0x5507('0x3e')]);return db[_0x5507('0x2a')][_0x5507('0x46')](_0x25496b)[_0x5507('0x23')](handleEntityNotFound(_0x24d7b5,null))[_0x5507('0x23')](respondWithResult(_0x24d7b5,null))[_0x5507('0x43')](handleError(_0x24d7b5,null));};exports[_0x5507('0x47')]=function(_0x3452e4,_0x549cf0){return db[_0x5507('0x2a')][_0x5507('0x47')](_0x3452e4['body'],{})['then'](respondWithResult(_0x549cf0,0xc9))['catch'](handleError(_0x549cf0,null));};exports[_0x5507('0x22')]=function(_0x5961fd,_0x403d03){if(_0x5961fd['body']['id']){delete _0x5961fd[_0x5507('0x48')]['id'];}delete _0x5961fd['body']['duration'];delete _0x5961fd[_0x5507('0x48')][_0x5507('0x49')];delete _0x5961fd[_0x5507('0x48')][_0x5507('0x4a')];delete _0x5961fd[_0x5507('0x48')][_0x5507('0x4b')];return db['ScreenRecording'][_0x5507('0x46')]({'where':{'id':_0x5961fd[_0x5507('0x45')]['id']}})[_0x5507('0x23')](handleEntityNotFound(_0x403d03,null))['then'](saveUpdates(_0x5961fd[_0x5507('0x48')],null))[_0x5507('0x23')](respondWithResult(_0x403d03,null))[_0x5507('0x43')](handleError(_0x403d03,null));};exports[_0x5507('0x4c')]=function(_0x300c9f,_0x3af70f){return db[_0x5507('0x2a')][_0x5507('0x4c')]()[_0x5507('0x23')](respondWithResult(_0x3af70f,null))[_0x5507('0x43')](handleError(_0x3af70f,null));};exports[_0x5507('0x4d')]=function(_0x49a2f8,_0x570928,_0x1992fa){var _0x5d7753=require(_0x5507('0x4e'));var _0x1b34c8=![];var _0xce851d={};if(_0x49a2f8[_0x5507('0x2f')][_0x5507('0x3a')]&&_0x49a2f8[_0x5507('0x2f')][_0x5507('0x3a')]===_0x5507('0x4f')){_0xce851d[_0x5507('0x4f')]=_0x49a2f8[_0x5507('0x45')]['id'];}else{_0xce851d['id']=_0x49a2f8[_0x5507('0x45')]['id'];}return db[_0x5507('0x2a')][_0x5507('0x46')]({'where':_0xce851d,'attributes':['id',_0x5507('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x570928,null))[_0x5507('0x23')](function(_0x56e0cd){if(_0x56e0cd){var _0x5af5f5=path[_0x5507('0x50')](config[_0x5507('0x51')],_0x5507('0x52'),_0x56e0cd[_0x5507('0x4b')]);var _0x52b9f2=util[_0x5507('0x53')](_0x5507('0x54'),_0x5af5f5);if(fs[_0x5507('0x55')](_0x52b9f2)){_0x1b34c8=!![];return _0x5d7753[_0x5507('0x56')](_0x52b9f2,_0x5af5f5,config[_0x5507('0x57')][_0x5507('0x58')])['then'](function(){return _0x56e0cd;});}return _0x56e0cd;}})[_0x5507('0x23')](function(_0x46e589){if(_0x46e589){var _0x3a2f9f=path['join'](config['root'],_0x5507('0x52'),_0x46e589['value']);if(!fs[_0x5507('0x55')](_0x3a2f9f)){throw new db[(_0x5507('0x59'))]['ValidationError'](_0x5507('0x5a'));}if(_0x46e589[_0x5507('0x5b')]){return _0x570928[_0x5507('0x4d')](_0x3a2f9f,_0x46e589[_0x5507('0x5b')]+path[_0x5507('0x5c')](_0x3a2f9f),function(){if(_0x1b34c8){fs[_0x5507('0x5d')](_0x3a2f9f);}});}else{return _0x570928[_0x5507('0x4d')](_0x3a2f9f,function(_0x2928f2){if(_0x1b34c8){fs[_0x5507('0x5d')](_0x3a2f9f);}});}}})[_0x5507('0x43')](function(_0x1453f1){if(_0x1453f1[_0x5507('0x5e')]==='ScreenRecording\x20not\x20found'){_0x570928[_0x5507('0x19')](0x194)[_0x5507('0x5f')](_0x5507('0x60'));}else{return handleError(_0x570928,null);}});};exports[_0x5507('0x24')]=function(_0x3c4422,_0x5183ae){return db[_0x5507('0x2a')]['find']({'where':{'id':_0x3c4422[_0x5507('0x45')]['id']}})[_0x5507('0x23')](function(_0x241733){if(_['isNil'](_0x241733)){throw new ReferenceError(_0x5507('0x61'));}return _0x241733;})[_0x5507('0x23')](function(_0x2a9672){var _0x56632b=path[_0x5507('0x50')](config['root'],_0x5507('0x52'),_0x2a9672['value']);logger['info'](_0x5507('0x62'),_0x56632b);if(!_[_0x5507('0x63')](_0x2a9672[_0x5507('0x4b')])&&fs[_0x5507('0x55')](_0x56632b)){logger[_0x5507('0x64')](_0x5507('0x65')+_0x56632b+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x56632b);}_0x56632b=_0x56632b+_0x5507('0x66');if(!_[_0x5507('0x63')](_0x2a9672[_0x5507('0x4b')])&&fs[_0x5507('0x55')](_0x56632b)){logger['info'](_0x5507('0x65')+_0x56632b+_0x5507('0x67'));fs[_0x5507('0x68')](_0x56632b);}return _0x2a9672;})[_0x5507('0x23')](function(_0x296cf5){if(!_0x296cf5)throw new InternalError();return _0x296cf5[_0x5507('0x24')]();})[_0x5507('0x23')](function(){_0x5183ae['status'](0xcc)[_0x5507('0x25')]();})[_0x5507('0x43')](handleError(_0x5183ae,null));};
\ No newline at end of file
+var _0x7da7=['stack','name','send','index','map','ScreenRecording','fieldName','type','key','model','differenceBy','format','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','filter','includeAll','findAll','rows','show','params','rawAttributes','options','find','create','body','duration','createdAt','value','catch','describe','download','../../components/encryptor','root','server/files/screen_recordings','%s.cypher','decryptFile','secrets','recording','join','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','json','apply','reject','update','then','destroy','end','error'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7da7,0x10d));var _0x77da=function(_0x1d8119,_0xc98f17){_0x1d8119=_0x1d8119-0x0;var _0x3e30f6=_0x7da7[_0x1d8119];return _0x3e30f6;};'use strict';var emlformat=require(_0x77da('0x0'));var rimraf=require(_0x77da('0x1'));var zipdir=require(_0x77da('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x77da('0x3'));var BPromise=require(_0x77da('0x4'));var Mustache=require('mustache');var util=require(_0x77da('0x5'));var path=require(_0x77da('0x6'));var sox=require('sox');var csv=require(_0x77da('0x7'));var ejs=require(_0x77da('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x77da('0x9'));var squel=require('squel');var crypto=require(_0x77da('0xa'));var jsforce=require(_0x77da('0xb'));var deskjs=require(_0x77da('0xc'));var toCsv=require(_0x77da('0x7'));var querystring=require(_0x77da('0xd'));var Papa=require('papaparse');var Redis=require(_0x77da('0xe'));var authService=require(_0x77da('0xf'));var qs=require(_0x77da('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77da('0x11'));var logger=require(_0x77da('0x12'))(_0x77da('0x13'));var utils=require(_0x77da('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x77da('0x15'));var db=require(_0x77da('0x16'))['db'];function respondWithStatusCode(_0x2acc65,_0x5d6e2f){_0x5d6e2f=_0x5d6e2f||0xcc;return function(_0x4a7748){if(_0x4a7748){return _0x2acc65[_0x77da('0x17')](_0x5d6e2f);}return _0x2acc65[_0x77da('0x18')](_0x5d6e2f)['end']();};}function respondWithResult(_0x3b0ff2,_0x369df0){_0x369df0=_0x369df0||0xc8;return function(_0x355719){if(_0x355719){return _0x3b0ff2[_0x77da('0x18')](_0x369df0)['json'](_0x355719);}};}function respondWithFilteredResult(_0x2172d0,_0x4e130c){return function(_0x29cd7b){if(_0x29cd7b){var _0x366443=typeof _0x4e130c[_0x77da('0x19')]===_0x77da('0x1a')&&typeof _0x4e130c['limit']==='undefined';var _0x514016=_0x29cd7b['count'];var _0x103e46=_0x366443?0x0:_0x4e130c[_0x77da('0x19')];var _0x289887=_0x366443?_0x29cd7b[_0x77da('0x1b')]:_0x4e130c[_0x77da('0x19')]+_0x4e130c[_0x77da('0x1c')];var _0x1d325c;if(_0x289887>=_0x514016){_0x289887=_0x514016;_0x1d325c=0xc8;}else{_0x1d325c=0xce;}_0x2172d0[_0x77da('0x18')](_0x1d325c);return _0x2172d0['set']('Content-Range',_0x103e46+'-'+_0x289887+'/'+_0x514016)[_0x77da('0x1d')](_0x29cd7b);}return null;};}function patchUpdates(_0x4d1512){return function(_0x507979){try{jsonpatch[_0x77da('0x1e')](_0x507979,_0x4d1512,!![]);}catch(_0x304a2b){return BPromise[_0x77da('0x1f')](_0x304a2b);}return _0x507979['save']();};}function saveUpdates(_0x58270c,_0x3e6cfe){return function(_0x58f6c1){if(_0x58f6c1){return _0x58f6c1[_0x77da('0x20')](_0x58270c)[_0x77da('0x21')](function(_0xc52f0e){return _0xc52f0e;});}return null;};}function removeEntity(_0x27b6c7,_0x10399a){return function(_0x270318){if(_0x270318){return _0x270318[_0x77da('0x22')]()['then'](function(){_0x27b6c7['status'](0xcc)[_0x77da('0x23')]();});}};}function handleEntityNotFound(_0x2d009f,_0x835167){return function(_0xbd06b7){if(!_0xbd06b7){_0x2d009f['sendStatus'](0x194);}return _0xbd06b7;};}function handleError(_0x42240b,_0x167240){_0x167240=_0x167240||0x1f4;return function(_0x470c9f){logger[_0x77da('0x24')](_0x470c9f[_0x77da('0x25')]);if(_0x470c9f['name']){delete _0x470c9f[_0x77da('0x26')];}_0x42240b[_0x77da('0x18')](_0x167240)[_0x77da('0x27')](_0x470c9f);};}exports[_0x77da('0x28')]=function(_0x496ecd,_0x5b4638){var _0x4d395a={},_0x2258e9={},_0x30456a={'count':0x0,'rows':[]};var _0x410d09=_[_0x77da('0x29')](db[_0x77da('0x2a')]['rawAttributes'],function(_0x350b4e){return{'name':_0x350b4e[_0x77da('0x2b')],'type':_0x350b4e[_0x77da('0x2c')][_0x77da('0x2d')]};});_0x2258e9[_0x77da('0x2e')]=_[_0x77da('0x2f')](_['map'](_0x410d09,_0x77da('0x26')),[_0x77da('0x30')]);_0x2258e9[_0x77da('0x31')]=_[_0x77da('0x32')](_0x496ecd[_0x77da('0x31')]);_0x2258e9[_0x77da('0x33')]=_[_0x77da('0x34')](_0x2258e9[_0x77da('0x2e')],_0x2258e9['query']);_0x4d395a['attributes']=_[_0x77da('0x34')](_0x2258e9[_0x77da('0x2e')],qs['fields'](_0x496ecd[_0x77da('0x31')][_0x77da('0x35')]));_0x4d395a[_0x77da('0x36')]=_0x4d395a[_0x77da('0x36')][_0x77da('0x37')]?_0x4d395a[_0x77da('0x36')]:_0x2258e9[_0x77da('0x2e')];if(!_0x496ecd['query'][_0x77da('0x38')]('nolimit')){_0x4d395a['limit']=qs['limit'](_0x496ecd[_0x77da('0x31')]['limit']);_0x4d395a[_0x77da('0x19')]=qs[_0x77da('0x19')](_0x496ecd[_0x77da('0x31')][_0x77da('0x19')]);}_0x4d395a[_0x77da('0x39')]=qs[_0x77da('0x3a')](_0x496ecd[_0x77da('0x31')]['sort']);_0x4d395a[_0x77da('0x3b')]=qs[_0x77da('0x33')](_[_0x77da('0x3c')](_0x496ecd[_0x77da('0x31')],_0x2258e9[_0x77da('0x33')]),_0x410d09);if(_0x496ecd[_0x77da('0x31')]['filter']){_0x4d395a[_0x77da('0x3b')]=_[_0x77da('0x3d')](_0x4d395a[_0x77da('0x3b')],{'$or':_['map'](_0x410d09,function(_0xc5f0b8){if(_0xc5f0b8['type']!=='VIRTUAL'){var _0x599e21={};_0x599e21[_0xc5f0b8['name']]={'$like':'%'+_0x496ecd[_0x77da('0x31')][_0x77da('0x3e')]+'%'};return _0x599e21;}})});}_0x4d395a=_[_0x77da('0x3d')]({},_0x4d395a,_0x496ecd['options']);var _0x21d337={'where':_0x4d395a['where']};return db[_0x77da('0x2a')]['count'](_0x21d337)[_0x77da('0x21')](function(_0xa19b50){_0x30456a[_0x77da('0x1b')]=_0xa19b50;if(_0x496ecd[_0x77da('0x31')][_0x77da('0x3f')]){_0x4d395a['include']=[{'all':!![]}];}return db[_0x77da('0x2a')][_0x77da('0x40')](_0x4d395a);})[_0x77da('0x21')](function(_0x2f14f4){_0x30456a[_0x77da('0x41')]=_0x2f14f4;return _0x30456a;})[_0x77da('0x21')](respondWithFilteredResult(_0x5b4638,_0x4d395a))['catch'](handleError(_0x5b4638,null));};exports[_0x77da('0x42')]=function(_0x2f0495,_0x21de41){var _0x2dfeca={'raw':![],'where':{'id':_0x2f0495[_0x77da('0x43')]['id']}},_0x7d11f9={};_0x7d11f9['model']=_[_0x77da('0x32')](db['ScreenRecording'][_0x77da('0x44')]);_0x7d11f9[_0x77da('0x31')]=_[_0x77da('0x32')](_0x2f0495['query']);_0x7d11f9[_0x77da('0x33')]=_[_0x77da('0x34')](_0x7d11f9[_0x77da('0x2e')],_0x7d11f9[_0x77da('0x31')]);_0x2dfeca[_0x77da('0x36')]=_[_0x77da('0x34')](_0x7d11f9[_0x77da('0x2e')],qs[_0x77da('0x35')](_0x2f0495[_0x77da('0x31')]['fields']));_0x2dfeca[_0x77da('0x36')]=_0x2dfeca[_0x77da('0x36')][_0x77da('0x37')]?_0x2dfeca[_0x77da('0x36')]:_0x7d11f9[_0x77da('0x2e')];if(_0x2f0495[_0x77da('0x31')]['includeAll']){_0x2dfeca['include']=[{'all':!![]}];}_0x2dfeca=_[_0x77da('0x3d')]({},_0x2dfeca,_0x2f0495[_0x77da('0x45')]);return db[_0x77da('0x2a')][_0x77da('0x46')](_0x2dfeca)[_0x77da('0x21')](handleEntityNotFound(_0x21de41,null))[_0x77da('0x21')](respondWithResult(_0x21de41,null))['catch'](handleError(_0x21de41,null));};exports[_0x77da('0x47')]=function(_0x357ee4,_0x332f80){return db[_0x77da('0x2a')]['create'](_0x357ee4[_0x77da('0x48')],{})['then'](respondWithResult(_0x332f80,0xc9))['catch'](handleError(_0x332f80,null));};exports[_0x77da('0x20')]=function(_0x176f01,_0x143a68){if(_0x176f01[_0x77da('0x48')]['id']){delete _0x176f01['body']['id'];}delete _0x176f01[_0x77da('0x48')][_0x77da('0x49')];delete _0x176f01['body'][_0x77da('0x4a')];delete _0x176f01[_0x77da('0x48')]['closedAt'];delete _0x176f01[_0x77da('0x48')][_0x77da('0x4b')];return db[_0x77da('0x2a')][_0x77da('0x46')]({'where':{'id':_0x176f01[_0x77da('0x43')]['id']}})[_0x77da('0x21')](handleEntityNotFound(_0x143a68,null))[_0x77da('0x21')](saveUpdates(_0x176f01[_0x77da('0x48')],null))[_0x77da('0x21')](respondWithResult(_0x143a68,null))[_0x77da('0x4c')](handleError(_0x143a68,null));};exports['describe']=function(_0x3d04a3,_0x513017){return db[_0x77da('0x2a')][_0x77da('0x4d')]()[_0x77da('0x21')](respondWithResult(_0x513017,null))[_0x77da('0x4c')](handleError(_0x513017,null));};exports[_0x77da('0x4e')]=function(_0x8b377d,_0x3a78d2,_0x4c271d){var _0x17ed71=require(_0x77da('0x4f'));var _0x1a7115=![];var _0x353be9={};if(_0x8b377d['query'][_0x77da('0x2c')]&&_0x8b377d[_0x77da('0x31')][_0x77da('0x2c')]==='uniqueid'){_0x353be9['uniqueid']=_0x8b377d[_0x77da('0x43')]['id'];}else{_0x353be9['id']=_0x8b377d[_0x77da('0x43')]['id'];}return db[_0x77da('0x2a')][_0x77da('0x46')]({'where':_0x353be9,'attributes':['id',_0x77da('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x3a78d2,null))['then'](function(_0x365e91){if(_0x365e91){var _0x36f161=path['join'](config[_0x77da('0x50')],_0x77da('0x51'),_0x365e91[_0x77da('0x4b')]);var _0x4b1515=util[_0x77da('0x30')](_0x77da('0x52'),_0x36f161);if(fs['existsSync'](_0x4b1515)){_0x1a7115=!![];return _0x17ed71[_0x77da('0x53')](_0x4b1515,_0x36f161,config[_0x77da('0x54')][_0x77da('0x55')])[_0x77da('0x21')](function(){return _0x365e91;});}return _0x365e91;}})[_0x77da('0x21')](function(_0x99ac27){if(_0x99ac27){var _0x1dc4ab=path[_0x77da('0x56')](config[_0x77da('0x50')],'server/files/screen_recordings',_0x99ac27[_0x77da('0x4b')]);if(!fs[_0x77da('0x57')](_0x1dc4ab)){throw new db[(_0x77da('0x58'))][(_0x77da('0x59'))](_0x77da('0x5a'));}if(_0x99ac27[_0x77da('0x5b')]){return _0x3a78d2['download'](_0x1dc4ab,_0x99ac27[_0x77da('0x5b')]+path[_0x77da('0x5c')](_0x1dc4ab),function(){if(_0x1a7115){fs[_0x77da('0x5d')](_0x1dc4ab);}});}else{return _0x3a78d2['download'](_0x1dc4ab,function(_0x3e5dd9){if(_0x1a7115){fs[_0x77da('0x5d')](_0x1dc4ab);}});}}})[_0x77da('0x4c')](function(_0x8592c7){if(_0x8592c7[_0x77da('0x5e')]===_0x77da('0x5a')){_0x3a78d2[_0x77da('0x18')](0x194)['send'](_0x77da('0x5f'));}else{return handleError(_0x3a78d2,null);}});};exports['destroy']=function(_0x211310,_0x1922ab){return db[_0x77da('0x2a')]['find']({'where':{'id':_0x211310[_0x77da('0x43')]['id']}})[_0x77da('0x21')](function(_0x282481){if(_[_0x77da('0x60')](_0x282481)){throw new ReferenceError('Entity\x20not\x20found');}return _0x282481;})['then'](function(_0x571b1b){var _0x6b74fd=path[_0x77da('0x56')](config[_0x77da('0x50')],_0x77da('0x51'),_0x571b1b[_0x77da('0x4b')]);logger[_0x77da('0x61')](_0x77da('0x62'),_0x6b74fd);if(!_[_0x77da('0x60')](_0x571b1b[_0x77da('0x4b')])&&fs[_0x77da('0x57')](_0x6b74fd)){logger['info'](_0x77da('0x63')+_0x6b74fd+_0x77da('0x64'));fs['unlinkSync'](_0x6b74fd);}_0x6b74fd=_0x6b74fd+'.cypher';if(!_[_0x77da('0x60')](_0x571b1b['value'])&&fs[_0x77da('0x57')](_0x6b74fd)){logger[_0x77da('0x61')](_0x77da('0x63')+_0x6b74fd+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x77da('0x65')](_0x6b74fd);}return _0x571b1b;})[_0x77da('0x21')](function(_0x27fc45){if(!_0x27fc45)throw new InternalError();return _0x27fc45[_0x77da('0x22')]();})[_0x77da('0x21')](function(){_0x1922ab['status'](0xcc)[_0x77da('0x23')]();})[_0x77da('0x4c')](handleError(_0x1922ab,null));};
\ No newline at end of file
index 21360ed..f5e1fb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7687=['path','rimraf','../../config/environment','./screenRecording.attributes','exports','define','ScreenRecording','interactionid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x179d21,_0x365700){var _0x5e352a=function(_0xeb664e){while(--_0xeb664e){_0x179d21['push'](_0x179d21['shift']());}};_0x5e352a(++_0x365700);}(_0x7687,0x1e8));var _0x7768=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x7687[_0x491a7f];return _0x3d8f44;};'use strict';var _=require(_0x7768('0x0'));var util=require(_0x7768('0x1'));var logger=require(_0x7768('0x2'))(_0x7768('0x3'));var moment=require(_0x7768('0x4'));var BPromise=require(_0x7768('0x5'));var rp=require(_0x7768('0x6'));var fs=require('fs');var path=require(_0x7768('0x7'));var rimraf=require(_0x7768('0x8'));var config=require(_0x7768('0x9'));var attributes=require(_0x7768('0xa'));module[_0x7768('0xb')]=function(_0x1698e5,_0x490d52){return _0x1698e5[_0x7768('0xc')](_0x7768('0xd'),attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0x7768('0xe'),'fields':[_0x7768('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf5e4=['exports','define','ScreenRecording','screen_recordings','interactionid','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes'];(function(_0x4d9bb2,_0x3db50d){var _0x3179fe=function(_0x5272f3){while(--_0x5272f3){_0x4d9bb2['push'](_0x4d9bb2['shift']());}};_0x3179fe(++_0x3db50d);}(_0xf5e4,0x1f3));var _0x4f5e=function(_0x792e1b,_0x5c1d2f){_0x792e1b=_0x792e1b-0x0;var _0x484c83=_0xf5e4[_0x792e1b];return _0x484c83;};'use strict';var _=require('lodash');var util=require(_0x4f5e('0x0'));var logger=require(_0x4f5e('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4f5e('0x2'));var rp=require(_0x4f5e('0x3'));var fs=require('fs');var path=require(_0x4f5e('0x4'));var rimraf=require(_0x4f5e('0x5'));var config=require(_0x4f5e('0x6'));var attributes=require(_0x4f5e('0x7'));module[_0x4f5e('0x8')]=function(_0x2d4a14,_0x6a343d){return _0x2d4a14[_0x4f5e('0x9')](_0x4f5e('0xa'),attributes,{'tableName':_0x4f5e('0xb'),'paranoid':![],'indexes':[{'name':_0x4f5e('0xc'),'fields':[_0x4f5e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 864fa24..fc131f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe198=['request\x20sent','debug','stringify','error','code','message','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s'];(function(_0x4c39f5,_0x109684){var _0x1db24f=function(_0x44879b){while(--_0x44879b){_0x4c39f5['push'](_0x4c39f5['shift']());}};_0x1db24f(++_0x109684);}(_0xe198,0x11e));var _0x8e19=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xe198[_0xfae23b];return _0x200640;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8e19('0x0'));var BPromise=require('bluebird');var rs=require(_0x8e19('0x1'));var fs=require('fs');var Redis=require(_0x8e19('0x2'));var db=require(_0x8e19('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e19('0x4'))(_0x8e19('0x5'));var config=require(_0x8e19('0x6'));var jayson=require(_0x8e19('0x7'));var client=jayson[_0x8e19('0x8')][_0x8e19('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x975ab1,_0x74d364,_0x13bb51){return new BPromise(function(_0x162b5e,_0x291805){return client[_0x8e19('0xa')](_0x975ab1,_0x13bb51)[_0x8e19('0xb')](function(_0x39c6a5){logger[_0x8e19('0xc')](_0x8e19('0xd'),_0x74d364,_0x8e19('0xe'));logger[_0x8e19('0xf')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x74d364,_0x8e19('0xe'),JSON[_0x8e19('0x10')](_0x39c6a5));if(_0x39c6a5[_0x8e19('0x11')]){if(_0x39c6a5[_0x8e19('0x11')][_0x8e19('0x12')]===0x1f4){logger[_0x8e19('0x11')](_0x8e19('0xd'),_0x74d364,_0x39c6a5[_0x8e19('0x11')][_0x8e19('0x13')]);return _0x291805(_0x39c6a5[_0x8e19('0x11')][_0x8e19('0x13')]);}logger[_0x8e19('0x11')]('ScreenRecording,\x20%s,\x20%s',_0x74d364,_0x39c6a5['error'][_0x8e19('0x13')]);return _0x162b5e(_0x39c6a5[_0x8e19('0x11')][_0x8e19('0x13')]);}else{logger[_0x8e19('0xc')](_0x8e19('0xd'),_0x74d364,_0x8e19('0xe'));_0x162b5e(_0x39c6a5['result'][_0x8e19('0x13')]);}})['catch'](function(_0x333239){logger['error'](_0x8e19('0xd'),_0x74d364,_0x333239);_0x291805(_0x333239);});});}
\ No newline at end of file
+var _0x3084=['util','bluebird','randomstring','ioredis','../../config/logger','rpc','client','http','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','catch'];(function(_0x22cc04,_0x791e3){var _0x1f1800=function(_0x3f60e4){while(--_0x3f60e4){_0x22cc04['push'](_0x22cc04['shift']());}};_0x1f1800(++_0x791e3);}(_0x3084,0x7e));var _0x4308=function(_0x55454f,_0x910c5e){_0x55454f=_0x55454f-0x0;var _0x2c030a=_0x3084[_0x55454f];return _0x2c030a;};'use strict';var _=require('lodash');var util=require(_0x4308('0x0'));var moment=require('moment');var BPromise=require(_0x4308('0x1'));var rs=require(_0x4308('0x2'));var fs=require('fs');var Redis=require(_0x4308('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4308('0x4'))(_0x4308('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4308('0x6')][_0x4308('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x778742,_0x511378,_0xba1431){return new BPromise(function(_0xb20e5b,_0x1516c5){return client['request'](_0x778742,_0xba1431)[_0x4308('0x8')](function(_0x37bca7){logger[_0x4308('0x9')](_0x4308('0xa'),_0x511378,_0x4308('0xb'));logger[_0x4308('0xc')](_0x4308('0xd'),_0x511378,_0x4308('0xb'),JSON[_0x4308('0xe')](_0x37bca7));if(_0x37bca7[_0x4308('0xf')]){if(_0x37bca7[_0x4308('0xf')]['code']===0x1f4){logger['error'](_0x4308('0xa'),_0x511378,_0x37bca7[_0x4308('0xf')]['message']);return _0x1516c5(_0x37bca7[_0x4308('0xf')][_0x4308('0x10')]);}logger['error']('ScreenRecording,\x20%s,\x20%s',_0x511378,_0x37bca7['error']['message']);return _0xb20e5b(_0x37bca7[_0x4308('0xf')][_0x4308('0x10')]);}else{logger[_0x4308('0x9')](_0x4308('0xa'),_0x511378,'request\x20sent');_0xb20e5b(_0x37bca7['result'][_0x4308('0x10')]);}})[_0x4308('0x11')](function(_0xd15db4){logger[_0x4308('0xf')](_0x4308('0xa'),_0x511378,_0xd15db4);_0x1516c5(_0xd15db4);});});}
\ No newline at end of file
index 12cd5f8..21385f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b38=['server/files/images/logos/','format','%s%s','extname','originalname','single','file','logologin','preferred','post','addPreferred','put','isAuthenticated','update','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./setting.controller','get','index','/now','getDate','/:id','show','/:id/logo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','/:id/favicon','diskStorage','join','root'];(function(_0x23f43c,_0x4606b6){var _0x4bc94e=function(_0x4c1bba){while(--_0x4c1bba){_0x23f43c['push'](_0x23f43c['shift']());}};_0x4bc94e(++_0x4606b6);}(_0x5b38,0x1c6));var _0x85b3=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x5b38[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x85b3('0x0'));var util=require(_0x85b3('0x1'));var path=require(_0x85b3('0x2'));var timeout=require(_0x85b3('0x3'));var express=require(_0x85b3('0x4'));var router=express[_0x85b3('0x5')]();var fs_extra=require(_0x85b3('0x6'));var auth=require(_0x85b3('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x85b3('0x8'));var controller=require(_0x85b3('0x9'));router[_0x85b3('0xa')]('/',auth['isAuthenticated'](),controller[_0x85b3('0xb')]);router[_0x85b3('0xa')](_0x85b3('0xc'),controller[_0x85b3('0xd')]);router[_0x85b3('0xa')](_0x85b3('0xe'),controller[_0x85b3('0xf')]);router[_0x85b3('0xa')](_0x85b3('0x10'),controller['getLogo']);router['get'](_0x85b3('0x11'),controller[_0x85b3('0x12')]);router[_0x85b3('0xa')](_0x85b3('0x13'),controller[_0x85b3('0x14')]);router[_0x85b3('0xa')](_0x85b3('0x15'),controller['getPreferred']);router[_0x85b3('0xa')](_0x85b3('0x16'),controller['getFavicon']);var upload=multer({'storage':multer[_0x85b3('0x17')]({'destination':function(_0x1a3ab9,_0x44c4c6,_0x11da11){_0x11da11(null,path[_0x85b3('0x18')](config[_0x85b3('0x19')],_0x85b3('0x1a')));},'filename':function(_0x2233b5,_0x18c11e,_0x3ece1b){_0x3ece1b(null,util[_0x85b3('0x1b')](_0x85b3('0x1c'),'logo',path[_0x85b3('0x1d')](_0x18c11e[_0x85b3('0x1e')])));}})});router['post'](_0x85b3('0x10'),upload[_0x85b3('0x1f')](_0x85b3('0x20')),controller['addLogo']);var upload=multer({'storage':multer[_0x85b3('0x17')]({'destination':function(_0x169aa8,_0x11ce07,_0x54561d){_0x54561d(null,path[_0x85b3('0x18')](config['root'],_0x85b3('0x1a')));},'filename':function(_0xa6a778,_0x4ce172,_0x1de852){_0x1de852(null,util[_0x85b3('0x1b')](_0x85b3('0x1c'),_0x85b3('0x21'),path['extname'](_0x4ce172['originalname'])));}})});router['post'](_0x85b3('0x11'),upload[_0x85b3('0x1f')]('file'),controller['addLogoLogin']);var upload=multer({'storage':multer[_0x85b3('0x17')]({'destination':function(_0xb18155,_0x2cf154,_0x1f63c1){_0x1f63c1(null,path[_0x85b3('0x18')](config[_0x85b3('0x19')],'server/files/images/logos/'));},'filename':function(_0x466902,_0x19dacc,_0x5e308a){_0x5e308a(null,util[_0x85b3('0x1b')](_0x85b3('0x1c'),_0x85b3('0x22'),path[_0x85b3('0x1d')](_0x19dacc[_0x85b3('0x1e')])));}})});router[_0x85b3('0x23')]('/:id/preferred',upload[_0x85b3('0x1f')](_0x85b3('0x20')),controller[_0x85b3('0x24')]);var upload=multer({'storage':multer[_0x85b3('0x17')]({'destination':function(_0x206333,_0x3560ce,_0x211152){_0x211152(null,path['join'](config[_0x85b3('0x19')],_0x85b3('0x1a')));},'filename':function(_0x69c936,_0x59b57d,_0x51b023){_0x51b023(null,util[_0x85b3('0x1b')](_0x85b3('0x1c'),'favicon',path[_0x85b3('0x1d')](_0x59b57d['originalname'])));}})});router[_0x85b3('0x23')](_0x85b3('0x16'),upload['single']('file'),controller['addFavicon']);router[_0x85b3('0x25')]('/:id',auth[_0x85b3('0x26')](),controller[_0x85b3('0x27')]);module['exports']=router;
\ No newline at end of file
+var _0xc9ee=['file','addLogoLogin','server/files/images/logos/','addPreferred','put','update','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./setting.controller','isAuthenticated','get','/now','/:id','/:id/logo','getLogo','/:id/logo_login','gdpr','/:id/preferred','/:id/favicon','getFavicon','diskStorage','join','format','%s%s','logo','extname','originalname','post','single','addLogo','root','logologin'];(function(_0x590999,_0x33b319){var _0x3016a9=function(_0x9c8835){while(--_0x9c8835){_0x590999['push'](_0x590999['shift']());}};_0x3016a9(++_0x33b319);}(_0xc9ee,0xc5));var _0xec9e=function(_0x237546,_0xa81b26){_0x237546=_0x237546-0x0;var _0x233e29=_0xc9ee[_0x237546];return _0x233e29;};'use strict';var multer=require('multer');var util=require(_0xec9e('0x0'));var path=require(_0xec9e('0x1'));var timeout=require(_0xec9e('0x2'));var express=require(_0xec9e('0x3'));var router=express[_0xec9e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xec9e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xec9e('0x6'));var controller=require(_0xec9e('0x7'));router['get']('/',auth[_0xec9e('0x8')](),controller['index']);router[_0xec9e('0x9')](_0xec9e('0xa'),controller['getDate']);router['get'](_0xec9e('0xb'),controller['show']);router[_0xec9e('0x9')](_0xec9e('0xc'),controller[_0xec9e('0xd')]);router['get'](_0xec9e('0xe'),controller['getLogoLogin']);router[_0xec9e('0x9')]('/:id/gdpr',controller[_0xec9e('0xf')]);router[_0xec9e('0x9')](_0xec9e('0x10'),controller['getPreferred']);router[_0xec9e('0x9')](_0xec9e('0x11'),controller[_0xec9e('0x12')]);var upload=multer({'storage':multer[_0xec9e('0x13')]({'destination':function(_0x43672d,_0x2b1416,_0x3168d4){_0x3168d4(null,path[_0xec9e('0x14')](config['root'],'server/files/images/logos/'));},'filename':function(_0x4d85ff,_0x2c6f4b,_0x3126a9){_0x3126a9(null,util[_0xec9e('0x15')](_0xec9e('0x16'),_0xec9e('0x17'),path[_0xec9e('0x18')](_0x2c6f4b[_0xec9e('0x19')])));}})});router[_0xec9e('0x1a')]('/:id/logo',upload[_0xec9e('0x1b')]('file'),controller[_0xec9e('0x1c')]);var upload=multer({'storage':multer[_0xec9e('0x13')]({'destination':function(_0xf38bf6,_0xed9ec5,_0x587f64){_0x587f64(null,path[_0xec9e('0x14')](config[_0xec9e('0x1d')],'server/files/images/logos/'));},'filename':function(_0x2c540e,_0x3e6d19,_0x35adfc){_0x35adfc(null,util[_0xec9e('0x15')]('%s%s',_0xec9e('0x1e'),path['extname'](_0x3e6d19[_0xec9e('0x19')])));}})});router[_0xec9e('0x1a')](_0xec9e('0xe'),upload[_0xec9e('0x1b')](_0xec9e('0x1f')),controller[_0xec9e('0x20')]);var upload=multer({'storage':multer[_0xec9e('0x13')]({'destination':function(_0x47c6d5,_0x22ee24,_0x340a96){_0x340a96(null,path[_0xec9e('0x14')](config[_0xec9e('0x1d')],_0xec9e('0x21')));},'filename':function(_0x1fa902,_0x501204,_0x4a9104){_0x4a9104(null,util[_0xec9e('0x15')](_0xec9e('0x16'),'preferred',path[_0xec9e('0x18')](_0x501204['originalname'])));}})});router[_0xec9e('0x1a')](_0xec9e('0x10'),upload[_0xec9e('0x1b')](_0xec9e('0x1f')),controller[_0xec9e('0x22')]);var upload=multer({'storage':multer[_0xec9e('0x13')]({'destination':function(_0x3085e1,_0x6f4331,_0x2b5c5c){_0x2b5c5c(null,path['join'](config[_0xec9e('0x1d')],_0xec9e('0x21')));},'filename':function(_0x3b914e,_0x16f62e,_0x278e4e){_0x278e4e(null,util['format'](_0xec9e('0x16'),'favicon',path['extname'](_0x16f62e[_0xec9e('0x19')])));}})});router[_0xec9e('0x1a')](_0xec9e('0x11'),upload['single'](_0xec9e('0x1f')),controller['addFavicon']);router[_0xec9e('0x23')](_0xec9e('0xb'),auth[_0xec9e('0x8')](),controller[_0xec9e('0x24')]);module[_0xec9e('0x25')]=router;
\ No newline at end of file
index 43fcd8f..1ecfedb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['STRING','BOOLEAN','UNSIGNED','exports','min_internal','INTEGER','min_mailbox'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x5f66,0x1a0));var _0x65f6=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x5f66[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require('sequelize');module[_0x65f6('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x65f6('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x65f6('0x2')](0xb),'unique':_0x65f6('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x65f6('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x65f6('0x4')],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize[_0x65f6('0x4')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x65f6('0x4')]},'defaultLoginLogo':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize['STRING']},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x65f6('0x4')]},'turnaddr':{'type':Sequelize[_0x65f6('0x4')]},'turnusername':{'type':Sequelize[_0x65f6('0x4')]},'turnpassword':{'type':Sequelize[_0x65f6('0x4')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x65f6('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x65f6('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x65f6('0x4')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x65f6('0x4')]},'defaultPreferred':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x65f6('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x65f6('0x4')]},'defaultFavicon':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x65f6('0x4')]},'sentiment':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x65f6('0x2')]},'sentimentRegion':{'type':Sequelize[_0x65f6('0x4')]},'language':{'type':Sequelize[_0x65f6('0x4')]},'bucket':{'type':Sequelize[_0x65f6('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x65f6('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize['INTEGER'](0x2)[_0x65f6('0x6')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x65f6('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x2ef3=['min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','UNSIGNED','sequelize','exports','INTEGER','min_internal'];(function(_0x124fa9,_0x312842){var _0x48b724=function(_0x8c5bc4){while(--_0x8c5bc4){_0x124fa9['push'](_0x124fa9['shift']());}};_0x48b724(++_0x312842);}(_0x2ef3,0xba));var _0x32ef=function(_0x6dae0c,_0x34f4d7){_0x6dae0c=_0x6dae0c-0x0;var _0x1f714f=_0x2ef3[_0x6dae0c];return _0x1f714f;};'use strict';var Sequelize=require(_0x32ef('0x0'));module[_0x32ef('0x1')]={'min_internal':{'type':Sequelize[_0x32ef('0x2')](0xb),'unique':_0x32ef('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x32ef('0x2')](0xb),'unique':_0x32ef('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':_0x32ef('0x6')},'logo':{'type':Sequelize['STRING']},'defaultLogo':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x32ef('0x5')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize['STRING']},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x32ef('0x5')]},'turnaddr':{'type':Sequelize[_0x32ef('0x5')]},'turnusername':{'type':Sequelize[_0x32ef('0x5')]},'turnpassword':{'type':Sequelize[_0x32ef('0x5')]},'pageTitle':{'type':Sequelize[_0x32ef('0x5')]},'defaultPageTitle':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':_0x32ef('0x8')},'enableEmailPreview':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'split':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize['STRING']},'allowedLoginAttempts':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x32ef('0x5')]},'defaultFavicon':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x32ef('0x2')]},'transcribeRegion':{'type':Sequelize[_0x32ef('0x5')]},'sentiment':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize['INTEGER']},'sentimentRegion':{'type':Sequelize[_0x32ef('0x5')]},'language':{'type':Sequelize[_0x32ef('0x5')]},'bucket':{'type':Sequelize[_0x32ef('0x5')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x32ef('0x2')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]}};
\ No newline at end of file
index 768cc1f..6b23fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f38=['stringify','error','code','message','result','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','destroy','stack','name','send','index','map','Setting','rawAttributes','type','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','find','catch','body','addLogo','file','filename','logo','params','../../config/license/util','getLogo','getLicense','loginLogo','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','upperFirst','custom','ValidationError','download','preferred','default_loginLogo.svg','default','Sequelize','\x20not\x20found','server/files/images/logos','default_preferred.png','addFavicon','getFavicon','getDate','now','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s'];(function(_0x30ad8f,_0x400f82){var _0x3a70a1=function(_0x40f04e){while(--_0x40f04e){_0x30ad8f['push'](_0x30ad8f['shift']());}};_0x3a70a1(++_0x400f82);}(_0x1f38,0xd7));var _0x81f3=function(_0x5b4303,_0x225e71){_0x5b4303=_0x5b4303-0x0;var _0x1aacba=_0x1f38[_0x5b4303];return _0x1aacba;};'use strict';var emlformat=require(_0x81f3('0x0'));var rimraf=require(_0x81f3('0x1'));var zipdir=require(_0x81f3('0x2'));var jsonpatch=require(_0x81f3('0x3'));var rp=require(_0x81f3('0x4'));var moment=require(_0x81f3('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x81f3('0x6'));var util=require(_0x81f3('0x7'));var path=require(_0x81f3('0x8'));var sox=require(_0x81f3('0x9'));var csv=require(_0x81f3('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x81f3('0xb'));var _=require(_0x81f3('0xc'));var squel=require(_0x81f3('0xd'));var crypto=require(_0x81f3('0xe'));var jsforce=require(_0x81f3('0xf'));var deskjs=require(_0x81f3('0x10'));var toCsv=require(_0x81f3('0xa'));var querystring=require(_0x81f3('0x11'));var Papa=require(_0x81f3('0x12'));var Redis=require(_0x81f3('0x13'));var authService=require(_0x81f3('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x81f3('0x15'));var hardwareService=require(_0x81f3('0x16'));var logger=require(_0x81f3('0x17'))(_0x81f3('0x18'));var utils=require(_0x81f3('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x81f3('0x1a'))['db'];var jayson=require(_0x81f3('0x1b'));var client=jayson[_0x81f3('0x1c')][_0x81f3('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0xf71e9a,_0x232c74,_0x4ffea5,_0x169119){return new BPromise(function(_0x79b7b,_0x469b84){var _0x5ad9e8=_0x169119||client;return _0x5ad9e8[_0x81f3('0x1e')](_0xf71e9a,_0x4ffea5)[_0x81f3('0x1f')](function(_0x3f177b){logger[_0x81f3('0x20')](_0x81f3('0x21'),_0x232c74,_0x81f3('0x22'));logger[_0x81f3('0x23')](_0x81f3('0x24'),_0x232c74,_0x81f3('0x22'),JSON[_0x81f3('0x25')](_0x3f177b));if(_0x3f177b[_0x81f3('0x26')]){if(_0x3f177b['error'][_0x81f3('0x27')]===0x1f4){logger[_0x81f3('0x26')](_0x81f3('0x21'),_0x232c74,_0x3f177b[_0x81f3('0x26')][_0x81f3('0x28')]);return _0x469b84(_0x3f177b['error'][_0x81f3('0x28')]);}logger[_0x81f3('0x26')]('Setting,\x20%s,\x20%s',_0x232c74,_0x3f177b[_0x81f3('0x26')]['message']);return _0x79b7b(_0x3f177b[_0x81f3('0x26')][_0x81f3('0x28')]);}else{logger[_0x81f3('0x20')]('Setting,\x20%s,\x20%s',_0x232c74,'request\x20sent');_0x79b7b(_0x3f177b[_0x81f3('0x29')][_0x81f3('0x28')]);}})['catch'](function(_0x25d4b4){logger[_0x81f3('0x26')]('Setting,\x20%s,\x20%s',_0x232c74,_0x25d4b4);_0x469b84(_0x25d4b4);});});}function respondWithStatusCode(_0x3f22a4,_0x1ced46){_0x1ced46=_0x1ced46||0xcc;return function(_0x1acee8){if(_0x1acee8){return _0x3f22a4[_0x81f3('0x2a')](_0x1ced46);}return _0x3f22a4[_0x81f3('0x2b')](_0x1ced46)[_0x81f3('0x2c')]();};}function respondWithResult(_0x13778a,_0x521c6d){_0x521c6d=_0x521c6d||0xc8;return function(_0x1c7302){if(_0x1c7302){return _0x13778a['status'](_0x521c6d)['json'](_0x1c7302);}};}function respondWithFilteredResult(_0x33c276,_0x76e8d){return function(_0x5a94a0){if(_0x5a94a0){var _0x60a157=typeof _0x76e8d['offset']===_0x81f3('0x2d')&&typeof _0x76e8d[_0x81f3('0x2e')]==='undefined';var _0x278a43=_0x5a94a0[_0x81f3('0x2f')];var _0x46025a=_0x60a157?0x0:_0x76e8d[_0x81f3('0x30')];var _0x37ed34=_0x60a157?_0x5a94a0[_0x81f3('0x2f')]:_0x76e8d[_0x81f3('0x30')]+_0x76e8d['limit'];var _0x30bfd1;if(_0x37ed34>=_0x278a43){_0x37ed34=_0x278a43;_0x30bfd1=0xc8;}else{_0x30bfd1=0xce;}_0x33c276[_0x81f3('0x2b')](_0x30bfd1);return _0x33c276[_0x81f3('0x31')](_0x81f3('0x32'),_0x46025a+'-'+_0x37ed34+'/'+_0x278a43)[_0x81f3('0x33')](_0x5a94a0);}return null;};}function patchUpdates(_0x46838d){return function(_0x504e2b){try{jsonpatch[_0x81f3('0x34')](_0x504e2b,_0x46838d,!![]);}catch(_0x5430ef){return BPromise['reject'](_0x5430ef);}return _0x504e2b[_0x81f3('0x35')]();};}function saveUpdates(_0x490098,_0x3b88ec){return function(_0x26a6a0){if(_0x26a6a0){return _0x26a6a0[_0x81f3('0x36')](_0x490098)[_0x81f3('0x1f')](function(_0x1db657){return _0x1db657;});}return null;};}function removeEntity(_0x106cbb,_0x356f38){return function(_0x3a0800){if(_0x3a0800){return _0x3a0800[_0x81f3('0x37')]()[_0x81f3('0x1f')](function(){_0x106cbb[_0x81f3('0x2b')](0xcc)[_0x81f3('0x2c')]();});}};}function handleEntityNotFound(_0x19f49c,_0x46cf96){return function(_0x5e40d0){if(!_0x5e40d0){_0x19f49c[_0x81f3('0x2a')](0x194);}return _0x5e40d0;};}function handleError(_0x35ab8a,_0x59fe5c){_0x59fe5c=_0x59fe5c||0x1f4;return function(_0x5be9dd){logger[_0x81f3('0x26')](_0x5be9dd[_0x81f3('0x38')]);if(_0x5be9dd[_0x81f3('0x39')]){delete _0x5be9dd['name'];}_0x35ab8a[_0x81f3('0x2b')](_0x59fe5c)[_0x81f3('0x3a')](_0x5be9dd);};}exports[_0x81f3('0x3b')]=function(_0xc58b66,_0x458ba3){var _0x4c12b7={},_0x14ac62={},_0x593231={'count':0x0,'rows':[]};var _0xbfbb93=_[_0x81f3('0x3c')](db[_0x81f3('0x3d')][_0x81f3('0x3e')],function(_0x5e61f5){return{'name':_0x5e61f5['fieldName'],'type':_0x5e61f5[_0x81f3('0x3f')]['key']};});_0x14ac62['model']=_[_0x81f3('0x3c')](_0xbfbb93,_0x81f3('0x39'));_0x14ac62[_0x81f3('0x40')]=_[_0x81f3('0x41')](_0xc58b66[_0x81f3('0x40')]);_0x14ac62['filters']=_[_0x81f3('0x42')](_0x14ac62['model'],_0x14ac62['query']);_0x4c12b7[_0x81f3('0x43')]=_[_0x81f3('0x42')](_0x14ac62[_0x81f3('0x44')],qs['fields'](_0xc58b66[_0x81f3('0x40')][_0x81f3('0x45')]));_0x4c12b7[_0x81f3('0x43')]=_0x4c12b7[_0x81f3('0x43')][_0x81f3('0x46')]?_0x4c12b7[_0x81f3('0x43')]:_0x14ac62[_0x81f3('0x44')];if(!_0xc58b66[_0x81f3('0x40')][_0x81f3('0x47')](_0x81f3('0x48'))){_0x4c12b7[_0x81f3('0x2e')]=qs[_0x81f3('0x2e')](_0xc58b66['query'][_0x81f3('0x2e')]);_0x4c12b7[_0x81f3('0x30')]=qs[_0x81f3('0x30')](_0xc58b66[_0x81f3('0x40')][_0x81f3('0x30')]);}_0x4c12b7[_0x81f3('0x49')]=qs[_0x81f3('0x4a')](_0xc58b66['query'][_0x81f3('0x4a')]);_0x4c12b7[_0x81f3('0x4b')]=qs[_0x81f3('0x4c')](_[_0x81f3('0x4d')](_0xc58b66[_0x81f3('0x40')],_0x14ac62[_0x81f3('0x4c')]),_0xbfbb93);if(_0xc58b66[_0x81f3('0x40')][_0x81f3('0x4e')]){_0x4c12b7[_0x81f3('0x4b')]=_[_0x81f3('0x4f')](_0x4c12b7[_0x81f3('0x4b')],{'$or':_[_0x81f3('0x3c')](_0xbfbb93,function(_0x3512c4){if(_0x3512c4['type']!==_0x81f3('0x50')){var _0x1d4863={};_0x1d4863[_0x3512c4[_0x81f3('0x39')]]={'$like':'%'+_0xc58b66[_0x81f3('0x40')][_0x81f3('0x4e')]+'%'};return _0x1d4863;}})});}_0x4c12b7=_[_0x81f3('0x4f')]({},_0x4c12b7,_0xc58b66[_0x81f3('0x51')]);var _0x5e1a60={'where':_0x4c12b7[_0x81f3('0x4b')]};return db[_0x81f3('0x3d')]['count'](_0x5e1a60)[_0x81f3('0x1f')](function(_0x223df6){_0x593231[_0x81f3('0x2f')]=_0x223df6;if(_0xc58b66['query'][_0x81f3('0x52')]){_0x4c12b7[_0x81f3('0x53')]=[{'all':!![]}];}return db[_0x81f3('0x3d')][_0x81f3('0x54')](_0x4c12b7);})[_0x81f3('0x1f')](function(_0x53944a){_0x593231[_0x81f3('0x55')]=_0x53944a;return _0x593231;})['then'](respondWithFilteredResult(_0x458ba3,_0x4c12b7))['catch'](handleError(_0x458ba3,null));};exports['show']=function(_0x43609b,_0x318f67){var _0x53caf9={'raw':![],'where':{'id':_0x43609b['params']['id']}},_0x2cd316={};_0x2cd316[_0x81f3('0x44')]=_['keys'](db[_0x81f3('0x3d')]['rawAttributes']);_0x2cd316[_0x81f3('0x40')]=_[_0x81f3('0x41')](_0x43609b[_0x81f3('0x40')]);_0x2cd316['filters']=_[_0x81f3('0x42')](_0x2cd316[_0x81f3('0x44')],_0x2cd316['query']);_0x53caf9[_0x81f3('0x43')]=_[_0x81f3('0x42')](_0x2cd316['model'],qs[_0x81f3('0x45')](_0x43609b[_0x81f3('0x40')][_0x81f3('0x45')]));_0x53caf9[_0x81f3('0x43')]=_0x53caf9[_0x81f3('0x43')][_0x81f3('0x46')]?_0x53caf9[_0x81f3('0x43')]:_0x2cd316['model'];if(_0x43609b['query'][_0x81f3('0x52')]){_0x53caf9[_0x81f3('0x53')]=[{'all':!![]}];}_0x53caf9=_[_0x81f3('0x4f')]({},_0x53caf9,_0x43609b[_0x81f3('0x51')]);return db[_0x81f3('0x3d')][_0x81f3('0x56')](_0x53caf9)[_0x81f3('0x1f')](handleEntityNotFound(_0x318f67,null))[_0x81f3('0x1f')](respondWithResult(_0x318f67,null))[_0x81f3('0x57')](handleError(_0x318f67,null));};exports[_0x81f3('0x36')]=function(_0x501551,_0x576534){if(_0x501551[_0x81f3('0x58')]['id']){delete _0x501551[_0x81f3('0x58')]['id'];}return db[_0x81f3('0x3d')][_0x81f3('0x56')]({'where':{'id':_0x501551['params']['id']}})[_0x81f3('0x1f')](handleEntityNotFound(_0x576534,null))[_0x81f3('0x1f')](saveUpdates(_0x501551[_0x81f3('0x58')],null))[_0x81f3('0x1f')](respondWithResult(_0x576534,null))[_0x81f3('0x57')](handleError(_0x576534,null));};exports[_0x81f3('0x59')]=function(_0x54414d,_0x312fa8,_0x17a37d){if(_0x54414d[_0x81f3('0x5a')]&&_0x54414d['file'][_0x81f3('0x5b')]){_0x54414d[_0x81f3('0x58')][_0x81f3('0x5c')]=_0x54414d[_0x81f3('0x5a')][_0x81f3('0x5b')];}return db['Setting'][_0x81f3('0x56')]({'where':{'id':_0x54414d[_0x81f3('0x5d')]['id']}})['then'](handleEntityNotFound(_0x312fa8,null))['then'](saveUpdates(_0x54414d['body'],null))[_0x81f3('0x1f')](respondWithResult(_0x312fa8,null))[_0x81f3('0x57')](handleError(_0x312fa8,null));};exports['addLogoLogin']=function(_0x5c4376,_0x5cff41,_0x59d5f1){if(_0x5c4376['file']&&_0x5c4376[_0x81f3('0x5a')][_0x81f3('0x5b')]){_0x5c4376[_0x81f3('0x58')]['loginLogo']=_0x5c4376[_0x81f3('0x5a')][_0x81f3('0x5b')];}return db[_0x81f3('0x3d')][_0x81f3('0x56')]({'where':{'id':_0x5c4376['params']['id']}})[_0x81f3('0x1f')](handleEntityNotFound(_0x5cff41,null))[_0x81f3('0x1f')](saveUpdates(_0x5c4376['body'],null))['then'](respondWithResult(_0x5cff41,null))[_0x81f3('0x57')](handleError(_0x5cff41,null));};var utilLicense=require(_0x81f3('0x5e'));exports[_0x81f3('0x5f')]=function(_0x437662,_0x5c49e6,_0x4d54da){var _0x58025d='server/files/images/logos';var _0x208876={'custom':![]};return utilLicense[_0x81f3('0x60')]()[_0x81f3('0x1f')](function(_0xf0a0d5){if(_0xf0a0d5){_0x208876=_0xf0a0d5;}return db[_0x81f3('0x3d')][_0x81f3('0x56')]({'where':{'id':_0x437662[_0x81f3('0x5d')]['id']},'attributes':[_0x81f3('0x5c'),_0x81f3('0x61'),'preferred',_0x81f3('0x62'),_0x81f3('0x63'),_0x81f3('0x64'),_0x81f3('0x65'),_0x81f3('0x66')],'raw':!![]});})[_0x81f3('0x1f')](handleEntityNotFound(_0x5c49e6,null))[_0x81f3('0x1f')](function(_0x4d8212){if(_0x4d8212){var _0x1b495f=_0x4d8212[_0x81f3('0x5c')]&&fs[_0x81f3('0x67')](path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x58025d,_[_0x81f3('0x6a')](_0x4d8212[_0x81f3('0x5c')])))?path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x58025d,_[_0x81f3('0x6a')](_0x4d8212[_0x81f3('0x5c')])):path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x58025d,_[_0x81f3('0x6a')](_0x81f3('0x6b')));var _0x2fca3d='default'+_[_0x81f3('0x6c')](_0x81f3('0x5c'));if(_0x4d8212[_0x2fca3d]||!_0x208876[_0x81f3('0x6d')]){_0x1b495f=path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x58025d,_[_0x81f3('0x6a')](_0x81f3('0x6b')));}if(!fs['existsSync'](_0x1b495f)){throw new db['Sequelize'][(_0x81f3('0x6e'))](_[_0x81f3('0x6c')]('logo')+'\x20not\x20found');}return _0x5c49e6[_0x81f3('0x6f')](_0x1b495f);}})['catch'](handleError(_0x5c49e6,null));};var utilLicense=require(_0x81f3('0x5e'));exports['getLogoLogin']=function(_0x4bc34b,_0x5c2d59,_0x4c25f7){var _0x46969e='server/files/images/logos';var _0x48d47f={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x1e7d46){if(_0x1e7d46){_0x48d47f=_0x1e7d46;}return db[_0x81f3('0x3d')][_0x81f3('0x56')]({'where':{'id':_0x4bc34b[_0x81f3('0x5d')]['id']},'attributes':['logo',_0x81f3('0x61'),_0x81f3('0x70'),_0x81f3('0x62'),'defaultLogo',_0x81f3('0x64'),_0x81f3('0x65'),'defaultFavicon'],'raw':!![]});})[_0x81f3('0x1f')](handleEntityNotFound(_0x5c2d59,null))[_0x81f3('0x1f')](function(_0x491b7f){if(_0x491b7f){var _0x527f98=_0x491b7f[_0x81f3('0x61')]&&fs[_0x81f3('0x67')](path[_0x81f3('0x68')](config['root'],_0x46969e,_[_0x81f3('0x6a')](_0x491b7f[_0x81f3('0x61')])))?path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x46969e,_[_0x81f3('0x6a')](_0x491b7f[_0x81f3('0x61')])):path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x46969e,_[_0x81f3('0x6a')](_0x81f3('0x71')));var _0x3bc8d4=_0x81f3('0x72')+_[_0x81f3('0x6c')](_0x81f3('0x61'));if(_0x491b7f[_0x3bc8d4]||!_0x48d47f[_0x81f3('0x6d')]){_0x527f98=path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x46969e,_[_0x81f3('0x6a')](_0x81f3('0x71')));}if(!fs[_0x81f3('0x67')](_0x527f98)){throw new db[(_0x81f3('0x73'))][(_0x81f3('0x6e'))](_[_0x81f3('0x6c')](_0x81f3('0x61'))+_0x81f3('0x74'));}return _0x5c2d59[_0x81f3('0x6f')](_0x527f98);}})[_0x81f3('0x57')](handleError(_0x5c2d59,null));};exports['gdpr']=function(_0x16cd62,_0x35682a){return db['Setting'][_0x81f3('0x56')]({'where':{'id':_0x16cd62[_0x81f3('0x5d')]['id']},'attributes':['securePassword']})[_0x81f3('0x1f')](respondWithResult(_0x35682a,null))[_0x81f3('0x57')](handleError(_0x35682a,null));};exports['addPreferred']=function(_0x2d4d4e,_0x48743b,_0x171dd6){if(_0x2d4d4e['file']&&_0x2d4d4e['file'][_0x81f3('0x5b')]){_0x2d4d4e[_0x81f3('0x58')]['preferred']=_0x2d4d4e['file']['filename'];}return db[_0x81f3('0x3d')]['find']({'where':{'id':_0x2d4d4e[_0x81f3('0x5d')]['id']}})[_0x81f3('0x1f')](handleEntityNotFound(_0x48743b,null))[_0x81f3('0x1f')](saveUpdates(_0x2d4d4e[_0x81f3('0x58')],null))[_0x81f3('0x1f')](respondWithResult(_0x48743b,null))[_0x81f3('0x57')](handleError(_0x48743b,null));};var utilLicense=require(_0x81f3('0x5e'));exports['getPreferred']=function(_0x2397fd,_0x5b0fc5,_0x294c8c){var _0x1b8aef=_0x81f3('0x75');var _0x253eeb={'custom':![]};return utilLicense[_0x81f3('0x60')]()[_0x81f3('0x1f')](function(_0x5a4e97){if(_0x5a4e97){_0x253eeb=_0x5a4e97;}return db['Setting'][_0x81f3('0x56')]({'where':{'id':_0x2397fd[_0x81f3('0x5d')]['id']},'attributes':['logo',_0x81f3('0x61'),_0x81f3('0x70'),_0x81f3('0x62'),_0x81f3('0x63'),'defaultLoginLogo',_0x81f3('0x65'),_0x81f3('0x66')],'raw':!![]});})[_0x81f3('0x1f')](handleEntityNotFound(_0x5b0fc5,null))[_0x81f3('0x1f')](function(_0x25ef10){if(_0x25ef10){var _0xd5afd=_0x25ef10[_0x81f3('0x70')]&&fs['existsSync'](path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x1b8aef,_[_0x81f3('0x6a')](_0x25ef10['preferred'])))?path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x1b8aef,_[_0x81f3('0x6a')](_0x25ef10['preferred'])):path[_0x81f3('0x68')](config['root'],_0x1b8aef,_[_0x81f3('0x6a')](_0x81f3('0x76')));var _0x265293=_0x81f3('0x72')+_[_0x81f3('0x6c')](_0x81f3('0x70'));if(_0x25ef10[_0x265293]||!_0x253eeb[_0x81f3('0x6d')]||!_0x253eeb[_0x81f3('0x70')]){_0xd5afd=path['join'](config['root'],_0x1b8aef,_[_0x81f3('0x6a')]('default_preferred.png'));}if(!fs[_0x81f3('0x67')](_0xd5afd)){throw new db[(_0x81f3('0x73'))][(_0x81f3('0x6e'))](_['upperFirst'](_0x81f3('0x70'))+_0x81f3('0x74'));}return _0x5b0fc5['download'](_0xd5afd);}})[_0x81f3('0x57')](handleError(_0x5b0fc5,null));};exports[_0x81f3('0x77')]=function(_0x38abd9,_0x55f6a9,_0x30906b){if(_0x38abd9['file']&&_0x38abd9[_0x81f3('0x5a')][_0x81f3('0x5b')]){_0x38abd9[_0x81f3('0x58')]['favicon']=_0x38abd9[_0x81f3('0x5a')][_0x81f3('0x5b')];}return db[_0x81f3('0x3d')]['find']({'where':{'id':_0x38abd9['params']['id']}})[_0x81f3('0x1f')](handleEntityNotFound(_0x55f6a9,null))[_0x81f3('0x1f')](saveUpdates(_0x38abd9[_0x81f3('0x58')],null))[_0x81f3('0x1f')](respondWithResult(_0x55f6a9,null))[_0x81f3('0x57')](handleError(_0x55f6a9,null));};var utilLicense=require(_0x81f3('0x5e'));exports[_0x81f3('0x78')]=function(_0x424d38,_0x47bc0a,_0x428cd2){var _0x29ea4c=_0x81f3('0x75');var _0x4a18c5={'custom':![]};return utilLicense[_0x81f3('0x60')]()['then'](function(_0x5a2de2){if(_0x5a2de2){_0x4a18c5=_0x5a2de2;}return db['Setting'][_0x81f3('0x56')]({'where':{'id':_0x424d38[_0x81f3('0x5d')]['id']},'attributes':[_0x81f3('0x5c'),_0x81f3('0x61'),'preferred',_0x81f3('0x62'),_0x81f3('0x63'),_0x81f3('0x64'),_0x81f3('0x65'),_0x81f3('0x66')],'raw':!![]});})[_0x81f3('0x1f')](handleEntityNotFound(_0x47bc0a,null))[_0x81f3('0x1f')](function(_0x5a69d9){if(_0x5a69d9){var _0x7869b4=_0x5a69d9[_0x81f3('0x62')]&&fs[_0x81f3('0x67')](path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x29ea4c,_[_0x81f3('0x6a')](_0x5a69d9['favicon'])))?path[_0x81f3('0x68')](config[_0x81f3('0x69')],_0x29ea4c,_[_0x81f3('0x6a')](_0x5a69d9[_0x81f3('0x62')])):path[_0x81f3('0x68')](config['root'],_0x29ea4c,_[_0x81f3('0x6a')]('default_favicon.ico'));var _0x23140b='default'+_['upperFirst'](_0x81f3('0x62'));if(_0x5a69d9[_0x23140b]||!_0x4a18c5[_0x81f3('0x6d')]){_0x7869b4=path['join'](config[_0x81f3('0x69')],_0x29ea4c,_[_0x81f3('0x6a')]('default_favicon.ico'));}if(!fs['existsSync'](_0x7869b4)){throw new db['Sequelize'][(_0x81f3('0x6e'))](_[_0x81f3('0x6c')]('favicon')+'\x20not\x20found');}return _0x47bc0a[_0x81f3('0x6f')](_0x7869b4);}})['catch'](handleError(_0x47bc0a,null));};exports[_0x81f3('0x79')]=function(_0x559f06,_0x40de66){var _0x3ea657={'offset':moment()['utcOffset']()};_0x3ea657[_0x81f3('0x7a')]=moment()[_0x81f3('0x7b')](_0x3ea657[_0x81f3('0x30')])[_0x81f3('0x7c')](_0x81f3('0x7d'));return _0x40de66[_0x81f3('0x2b')](0xc8)[_0x81f3('0x3a')](_0x3ea657);};
\ No newline at end of file
+var _0xa5ad=['logo','filename','loginLogo','getLogo','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','root','toLower','join','default_logo.svg','default','upperFirst','existsSync','Sequelize','ValidationError','\x20not\x20found','server/files/images/logos','custom','default_loginLogo.svg','download','gdpr','securePassword','addPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','format','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','name','Setting','fieldName','type','map','query','keys','intersection','model','fields','length','attributes','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','rawAttributes','find','body','addLogo','file'];(function(_0x19b4aa,_0x3353be){var _0x40479e=function(_0xba7e20){while(--_0xba7e20){_0x19b4aa['push'](_0x19b4aa['shift']());}};_0x40479e(++_0x3353be);}(_0xa5ad,0xa3));var _0xda5a=function(_0x4f4a2e,_0x2d1c33){_0x4f4a2e=_0x4f4a2e-0x0;var _0x135abc=_0xa5ad[_0x4f4a2e];return _0x135abc;};'use strict';var emlformat=require(_0xda5a('0x0'));var rimraf=require(_0xda5a('0x1'));var zipdir=require(_0xda5a('0x2'));var jsonpatch=require(_0xda5a('0x3'));var rp=require(_0xda5a('0x4'));var moment=require(_0xda5a('0x5'));var BPromise=require(_0xda5a('0x6'));var Mustache=require(_0xda5a('0x7'));var util=require(_0xda5a('0x8'));var path=require(_0xda5a('0x9'));var sox=require(_0xda5a('0xa'));var csv=require(_0xda5a('0xb'));var ejs=require(_0xda5a('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda5a('0xd'));var squel=require(_0xda5a('0xe'));var crypto=require(_0xda5a('0xf'));var jsforce=require(_0xda5a('0x10'));var deskjs=require(_0xda5a('0x11'));var toCsv=require('to-csv');var querystring=require(_0xda5a('0x12'));var Papa=require(_0xda5a('0x13'));var Redis=require(_0xda5a('0x14'));var authService=require(_0xda5a('0x15'));var qs=require(_0xda5a('0x16'));var as=require(_0xda5a('0x17'));var hardwareService=require(_0xda5a('0x18'));var logger=require(_0xda5a('0x19'))(_0xda5a('0x1a'));var utils=require(_0xda5a('0x1b'));var config=require(_0xda5a('0x1c'));var licenseUtil=require(_0xda5a('0x1d'));var db=require(_0xda5a('0x1e'))['db'];var jayson=require(_0xda5a('0x1f'));var client=jayson[_0xda5a('0x20')][_0xda5a('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x27a590,_0x56032f,_0x4f64ab,_0x244d00){return new BPromise(function(_0x2eeaeb,_0x4e7687){var _0x559578=_0x244d00||client;return _0x559578[_0xda5a('0x22')](_0x27a590,_0x4f64ab)[_0xda5a('0x23')](function(_0x6b9805){logger['info'](_0xda5a('0x24'),_0x56032f,_0xda5a('0x25'));logger[_0xda5a('0x26')](_0xda5a('0x27'),_0x56032f,_0xda5a('0x25'),JSON[_0xda5a('0x28')](_0x6b9805));if(_0x6b9805[_0xda5a('0x29')]){if(_0x6b9805[_0xda5a('0x29')][_0xda5a('0x2a')]===0x1f4){logger[_0xda5a('0x29')]('Setting,\x20%s,\x20%s',_0x56032f,_0x6b9805[_0xda5a('0x29')]['message']);return _0x4e7687(_0x6b9805['error'][_0xda5a('0x2b')]);}logger[_0xda5a('0x29')]('Setting,\x20%s,\x20%s',_0x56032f,_0x6b9805[_0xda5a('0x29')][_0xda5a('0x2b')]);return _0x2eeaeb(_0x6b9805['error'][_0xda5a('0x2b')]);}else{logger['info'](_0xda5a('0x24'),_0x56032f,_0xda5a('0x25'));_0x2eeaeb(_0x6b9805[_0xda5a('0x2c')][_0xda5a('0x2b')]);}})[_0xda5a('0x2d')](function(_0x3e96e5){logger[_0xda5a('0x29')](_0xda5a('0x24'),_0x56032f,_0x3e96e5);_0x4e7687(_0x3e96e5);});});}function respondWithStatusCode(_0x304bb3,_0x55baeb){_0x55baeb=_0x55baeb||0xcc;return function(_0x1d63af){if(_0x1d63af){return _0x304bb3[_0xda5a('0x2e')](_0x55baeb);}return _0x304bb3['status'](_0x55baeb)[_0xda5a('0x2f')]();};}function respondWithResult(_0x290be7,_0x318f8c){_0x318f8c=_0x318f8c||0xc8;return function(_0x45520b){if(_0x45520b){return _0x290be7[_0xda5a('0x30')](_0x318f8c)['json'](_0x45520b);}};}function respondWithFilteredResult(_0x3ea5b2,_0x3ac2f6){return function(_0x1f4d0f){if(_0x1f4d0f){var _0x18833e=typeof _0x3ac2f6[_0xda5a('0x31')]===_0xda5a('0x32')&&typeof _0x3ac2f6[_0xda5a('0x33')]===_0xda5a('0x32');var _0x2f9166=_0x1f4d0f[_0xda5a('0x34')];var _0x3dcd11=_0x18833e?0x0:_0x3ac2f6['offset'];var _0xe5dde9=_0x18833e?_0x1f4d0f[_0xda5a('0x34')]:_0x3ac2f6[_0xda5a('0x31')]+_0x3ac2f6[_0xda5a('0x33')];var _0x282ca6;if(_0xe5dde9>=_0x2f9166){_0xe5dde9=_0x2f9166;_0x282ca6=0xc8;}else{_0x282ca6=0xce;}_0x3ea5b2[_0xda5a('0x30')](_0x282ca6);return _0x3ea5b2[_0xda5a('0x35')](_0xda5a('0x36'),_0x3dcd11+'-'+_0xe5dde9+'/'+_0x2f9166)['json'](_0x1f4d0f);}return null;};}function patchUpdates(_0x30c1e4){return function(_0x321b18){try{jsonpatch[_0xda5a('0x37')](_0x321b18,_0x30c1e4,!![]);}catch(_0x3869f5){return BPromise[_0xda5a('0x38')](_0x3869f5);}return _0x321b18[_0xda5a('0x39')]();};}function saveUpdates(_0x150714,_0x264908){return function(_0x32dca1){if(_0x32dca1){return _0x32dca1[_0xda5a('0x3a')](_0x150714)['then'](function(_0xd063ce){return _0xd063ce;});}return null;};}function removeEntity(_0x557153,_0x3be5ae){return function(_0x13f5d9){if(_0x13f5d9){return _0x13f5d9[_0xda5a('0x3b')]()[_0xda5a('0x23')](function(){_0x557153[_0xda5a('0x30')](0xcc)[_0xda5a('0x2f')]();});}};}function handleEntityNotFound(_0x369043,_0x57faec){return function(_0x565690){if(!_0x565690){_0x369043[_0xda5a('0x2e')](0x194);}return _0x565690;};}function handleError(_0x5be618,_0x1082f5){_0x1082f5=_0x1082f5||0x1f4;return function(_0x125c9c){logger[_0xda5a('0x29')](_0x125c9c['stack']);if(_0x125c9c[_0xda5a('0x3c')]){delete _0x125c9c[_0xda5a('0x3c')];}_0x5be618[_0xda5a('0x30')](_0x1082f5)['send'](_0x125c9c);};}exports['index']=function(_0x4e0dc0,_0x556747){var _0x478068={},_0x35b0fa={},_0x53299e={'count':0x0,'rows':[]};var _0x3bfc14=_['map'](db[_0xda5a('0x3d')]['rawAttributes'],function(_0x2cf326){return{'name':_0x2cf326[_0xda5a('0x3e')],'type':_0x2cf326[_0xda5a('0x3f')]['key']};});_0x35b0fa['model']=_[_0xda5a('0x40')](_0x3bfc14,_0xda5a('0x3c'));_0x35b0fa[_0xda5a('0x41')]=_[_0xda5a('0x42')](_0x4e0dc0[_0xda5a('0x41')]);_0x35b0fa['filters']=_[_0xda5a('0x43')](_0x35b0fa[_0xda5a('0x44')],_0x35b0fa[_0xda5a('0x41')]);_0x478068['attributes']=_[_0xda5a('0x43')](_0x35b0fa[_0xda5a('0x44')],qs['fields'](_0x4e0dc0[_0xda5a('0x41')][_0xda5a('0x45')]));_0x478068['attributes']=_0x478068['attributes'][_0xda5a('0x46')]?_0x478068[_0xda5a('0x47')]:_0x35b0fa[_0xda5a('0x44')];if(!_0x4e0dc0[_0xda5a('0x41')]['hasOwnProperty'](_0xda5a('0x48'))){_0x478068[_0xda5a('0x33')]=qs[_0xda5a('0x33')](_0x4e0dc0[_0xda5a('0x41')]['limit']);_0x478068[_0xda5a('0x31')]=qs[_0xda5a('0x31')](_0x4e0dc0[_0xda5a('0x41')][_0xda5a('0x31')]);}_0x478068['order']=qs['sort'](_0x4e0dc0['query'][_0xda5a('0x49')]);_0x478068[_0xda5a('0x4a')]=qs[_0xda5a('0x4b')](_[_0xda5a('0x4c')](_0x4e0dc0[_0xda5a('0x41')],_0x35b0fa[_0xda5a('0x4b')]),_0x3bfc14);if(_0x4e0dc0['query'][_0xda5a('0x4d')]){_0x478068[_0xda5a('0x4a')]=_['merge'](_0x478068[_0xda5a('0x4a')],{'$or':_['map'](_0x3bfc14,function(_0x39f5b8){if(_0x39f5b8['type']!==_0xda5a('0x4e')){var _0x3cb5e4={};_0x3cb5e4[_0x39f5b8['name']]={'$like':'%'+_0x4e0dc0[_0xda5a('0x41')][_0xda5a('0x4d')]+'%'};return _0x3cb5e4;}})});}_0x478068=_[_0xda5a('0x4f')]({},_0x478068,_0x4e0dc0['options']);var _0x1396b1={'where':_0x478068[_0xda5a('0x4a')]};return db[_0xda5a('0x3d')][_0xda5a('0x34')](_0x1396b1)['then'](function(_0x5c6720){_0x53299e[_0xda5a('0x34')]=_0x5c6720;if(_0x4e0dc0['query'][_0xda5a('0x50')]){_0x478068[_0xda5a('0x51')]=[{'all':!![]}];}return db[_0xda5a('0x3d')][_0xda5a('0x52')](_0x478068);})['then'](function(_0x5aea88){_0x53299e[_0xda5a('0x53')]=_0x5aea88;return _0x53299e;})[_0xda5a('0x23')](respondWithFilteredResult(_0x556747,_0x478068))[_0xda5a('0x2d')](handleError(_0x556747,null));};exports[_0xda5a('0x54')]=function(_0x2a6c31,_0x5beb4c){var _0x1bf284={'raw':![],'where':{'id':_0x2a6c31[_0xda5a('0x55')]['id']}},_0x4c1ec3={};_0x4c1ec3[_0xda5a('0x44')]=_[_0xda5a('0x42')](db['Setting'][_0xda5a('0x56')]);_0x4c1ec3[_0xda5a('0x41')]=_[_0xda5a('0x42')](_0x2a6c31['query']);_0x4c1ec3[_0xda5a('0x4b')]=_['intersection'](_0x4c1ec3[_0xda5a('0x44')],_0x4c1ec3[_0xda5a('0x41')]);_0x1bf284[_0xda5a('0x47')]=_[_0xda5a('0x43')](_0x4c1ec3[_0xda5a('0x44')],qs[_0xda5a('0x45')](_0x2a6c31[_0xda5a('0x41')][_0xda5a('0x45')]));_0x1bf284[_0xda5a('0x47')]=_0x1bf284[_0xda5a('0x47')][_0xda5a('0x46')]?_0x1bf284['attributes']:_0x4c1ec3[_0xda5a('0x44')];if(_0x2a6c31[_0xda5a('0x41')][_0xda5a('0x50')]){_0x1bf284[_0xda5a('0x51')]=[{'all':!![]}];}_0x1bf284=_[_0xda5a('0x4f')]({},_0x1bf284,_0x2a6c31['options']);return db[_0xda5a('0x3d')][_0xda5a('0x57')](_0x1bf284)[_0xda5a('0x23')](handleEntityNotFound(_0x5beb4c,null))[_0xda5a('0x23')](respondWithResult(_0x5beb4c,null))[_0xda5a('0x2d')](handleError(_0x5beb4c,null));};exports[_0xda5a('0x3a')]=function(_0x5d0702,_0x429c0e){if(_0x5d0702['body']['id']){delete _0x5d0702[_0xda5a('0x58')]['id'];}return db['Setting'][_0xda5a('0x57')]({'where':{'id':_0x5d0702[_0xda5a('0x55')]['id']}})[_0xda5a('0x23')](handleEntityNotFound(_0x429c0e,null))['then'](saveUpdates(_0x5d0702['body'],null))['then'](respondWithResult(_0x429c0e,null))[_0xda5a('0x2d')](handleError(_0x429c0e,null));};exports[_0xda5a('0x59')]=function(_0x1bd799,_0x5466e1,_0x576040){if(_0x1bd799[_0xda5a('0x5a')]&&_0x1bd799[_0xda5a('0x5a')]['filename']){_0x1bd799[_0xda5a('0x58')][_0xda5a('0x5b')]=_0x1bd799['file'][_0xda5a('0x5c')];}return db['Setting']['find']({'where':{'id':_0x1bd799[_0xda5a('0x55')]['id']}})[_0xda5a('0x23')](handleEntityNotFound(_0x5466e1,null))['then'](saveUpdates(_0x1bd799[_0xda5a('0x58')],null))[_0xda5a('0x23')](respondWithResult(_0x5466e1,null))[_0xda5a('0x2d')](handleError(_0x5466e1,null));};exports['addLogoLogin']=function(_0x3a198f,_0x18f926,_0xbac19f){if(_0x3a198f[_0xda5a('0x5a')]&&_0x3a198f[_0xda5a('0x5a')]['filename']){_0x3a198f[_0xda5a('0x58')][_0xda5a('0x5d')]=_0x3a198f[_0xda5a('0x5a')][_0xda5a('0x5c')];}return db[_0xda5a('0x3d')][_0xda5a('0x57')]({'where':{'id':_0x3a198f[_0xda5a('0x55')]['id']}})[_0xda5a('0x23')](handleEntityNotFound(_0x18f926,null))[_0xda5a('0x23')](saveUpdates(_0x3a198f[_0xda5a('0x58')],null))[_0xda5a('0x23')](respondWithResult(_0x18f926,null))['catch'](handleError(_0x18f926,null));};var utilLicense=require(_0xda5a('0x1d'));exports[_0xda5a('0x5e')]=function(_0x1994b1,_0x2f4587,_0x5535e7){var _0x17ee27='server/files/images/logos';var _0x5d464d={'custom':![]};return utilLicense[_0xda5a('0x5f')]()[_0xda5a('0x23')](function(_0x1a9e8d){if(_0x1a9e8d){_0x5d464d=_0x1a9e8d;}return db['Setting']['find']({'where':{'id':_0x1994b1[_0xda5a('0x55')]['id']},'attributes':[_0xda5a('0x5b'),_0xda5a('0x5d'),_0xda5a('0x60'),_0xda5a('0x61'),_0xda5a('0x62'),_0xda5a('0x63'),_0xda5a('0x64'),_0xda5a('0x65')],'raw':!![]});})['then'](handleEntityNotFound(_0x2f4587,null))[_0xda5a('0x23')](function(_0x2c170c){if(_0x2c170c){var _0x47aee9=_0x2c170c[_0xda5a('0x5b')]&&fs['existsSync'](path['join'](config[_0xda5a('0x66')],_0x17ee27,_[_0xda5a('0x67')](_0x2c170c[_0xda5a('0x5b')])))?path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x17ee27,_[_0xda5a('0x67')](_0x2c170c['logo'])):path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x17ee27,_[_0xda5a('0x67')](_0xda5a('0x69')));var _0x1fbc70=_0xda5a('0x6a')+_[_0xda5a('0x6b')](_0xda5a('0x5b'));if(_0x2c170c[_0x1fbc70]||!_0x5d464d['custom']){_0x47aee9=path['join'](config['root'],_0x17ee27,_[_0xda5a('0x67')](_0xda5a('0x69')));}if(!fs[_0xda5a('0x6c')](_0x47aee9)){throw new db[(_0xda5a('0x6d'))][(_0xda5a('0x6e'))](_[_0xda5a('0x6b')](_0xda5a('0x5b'))+_0xda5a('0x6f'));}return _0x2f4587['download'](_0x47aee9);}})['catch'](handleError(_0x2f4587,null));};var utilLicense=require('../../config/license/util');exports['getLogoLogin']=function(_0x36dc95,_0x1d5073,_0xdb9c1d){var _0x48139b=_0xda5a('0x70');var _0x33ca86={'custom':![]};return utilLicense['getLicense']()[_0xda5a('0x23')](function(_0x4af708){if(_0x4af708){_0x33ca86=_0x4af708;}return db[_0xda5a('0x3d')]['find']({'where':{'id':_0x36dc95['params']['id']},'attributes':[_0xda5a('0x5b'),'loginLogo',_0xda5a('0x60'),_0xda5a('0x61'),_0xda5a('0x62'),'defaultLoginLogo','defaultPreferred',_0xda5a('0x65')],'raw':!![]});})[_0xda5a('0x23')](handleEntityNotFound(_0x1d5073,null))[_0xda5a('0x23')](function(_0x6b8ae7){if(_0x6b8ae7){var _0xb27b61=_0x6b8ae7['loginLogo']&&fs[_0xda5a('0x6c')](path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x48139b,_[_0xda5a('0x67')](_0x6b8ae7[_0xda5a('0x5d')])))?path[_0xda5a('0x68')](config['root'],_0x48139b,_[_0xda5a('0x67')](_0x6b8ae7[_0xda5a('0x5d')])):path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x48139b,_[_0xda5a('0x67')]('default_loginLogo.svg'));var _0x4eb5b1=_0xda5a('0x6a')+_[_0xda5a('0x6b')]('loginLogo');if(_0x6b8ae7[_0x4eb5b1]||!_0x33ca86[_0xda5a('0x71')]){_0xb27b61=path['join'](config[_0xda5a('0x66')],_0x48139b,_[_0xda5a('0x67')](_0xda5a('0x72')));}if(!fs[_0xda5a('0x6c')](_0xb27b61)){throw new db[(_0xda5a('0x6d'))][(_0xda5a('0x6e'))](_[_0xda5a('0x6b')](_0xda5a('0x5d'))+_0xda5a('0x6f'));}return _0x1d5073[_0xda5a('0x73')](_0xb27b61);}})[_0xda5a('0x2d')](handleError(_0x1d5073,null));};exports[_0xda5a('0x74')]=function(_0x32a3ae,_0x4555cb){return db[_0xda5a('0x3d')][_0xda5a('0x57')]({'where':{'id':_0x32a3ae[_0xda5a('0x55')]['id']},'attributes':[_0xda5a('0x75')]})[_0xda5a('0x23')](respondWithResult(_0x4555cb,null))[_0xda5a('0x2d')](handleError(_0x4555cb,null));};exports[_0xda5a('0x76')]=function(_0x321fbd,_0x380d23,_0x3ad6ba){if(_0x321fbd['file']&&_0x321fbd[_0xda5a('0x5a')]['filename']){_0x321fbd[_0xda5a('0x58')][_0xda5a('0x60')]=_0x321fbd[_0xda5a('0x5a')][_0xda5a('0x5c')];}return db[_0xda5a('0x3d')]['find']({'where':{'id':_0x321fbd[_0xda5a('0x55')]['id']}})[_0xda5a('0x23')](handleEntityNotFound(_0x380d23,null))[_0xda5a('0x23')](saveUpdates(_0x321fbd['body'],null))[_0xda5a('0x23')](respondWithResult(_0x380d23,null))[_0xda5a('0x2d')](handleError(_0x380d23,null));};var utilLicense=require(_0xda5a('0x1d'));exports['getPreferred']=function(_0x6b1908,_0xd7bb73,_0xd451e3){var _0x412724='server/files/images/logos';var _0x785465={'custom':![]};return utilLicense[_0xda5a('0x5f')]()[_0xda5a('0x23')](function(_0x2dd598){if(_0x2dd598){_0x785465=_0x2dd598;}return db[_0xda5a('0x3d')]['find']({'where':{'id':_0x6b1908[_0xda5a('0x55')]['id']},'attributes':[_0xda5a('0x5b'),'loginLogo',_0xda5a('0x60'),_0xda5a('0x61'),_0xda5a('0x62'),_0xda5a('0x63'),_0xda5a('0x64'),_0xda5a('0x65')],'raw':!![]});})[_0xda5a('0x23')](handleEntityNotFound(_0xd7bb73,null))[_0xda5a('0x23')](function(_0x4cf3f6){if(_0x4cf3f6){var _0x10e964=_0x4cf3f6['preferred']&&fs[_0xda5a('0x6c')](path['join'](config[_0xda5a('0x66')],_0x412724,_['toLower'](_0x4cf3f6['preferred'])))?path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x412724,_[_0xda5a('0x67')](_0x4cf3f6[_0xda5a('0x60')])):path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x412724,_['toLower'](_0xda5a('0x77')));var _0x50ef8a=_0xda5a('0x6a')+_[_0xda5a('0x6b')](_0xda5a('0x60'));if(_0x4cf3f6[_0x50ef8a]||!_0x785465[_0xda5a('0x71')]||!_0x785465[_0xda5a('0x60')]){_0x10e964=path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x412724,_[_0xda5a('0x67')](_0xda5a('0x77')));}if(!fs[_0xda5a('0x6c')](_0x10e964)){throw new db[(_0xda5a('0x6d'))]['ValidationError'](_['upperFirst'](_0xda5a('0x60'))+_0xda5a('0x6f'));}return _0xd7bb73[_0xda5a('0x73')](_0x10e964);}})[_0xda5a('0x2d')](handleError(_0xd7bb73,null));};exports[_0xda5a('0x78')]=function(_0xfdd430,_0x10c78c,_0x8a1a49){if(_0xfdd430['file']&&_0xfdd430[_0xda5a('0x5a')]['filename']){_0xfdd430[_0xda5a('0x58')][_0xda5a('0x61')]=_0xfdd430[_0xda5a('0x5a')][_0xda5a('0x5c')];}return db['Setting'][_0xda5a('0x57')]({'where':{'id':_0xfdd430[_0xda5a('0x55')]['id']}})[_0xda5a('0x23')](handleEntityNotFound(_0x10c78c,null))[_0xda5a('0x23')](saveUpdates(_0xfdd430[_0xda5a('0x58')],null))[_0xda5a('0x23')](respondWithResult(_0x10c78c,null))['catch'](handleError(_0x10c78c,null));};var utilLicense=require(_0xda5a('0x1d'));exports[_0xda5a('0x79')]=function(_0xef5e27,_0x361e53,_0x372b92){var _0x33b5e2='server/files/images/logos';var _0x513b3f={'custom':![]};return utilLicense['getLicense']()[_0xda5a('0x23')](function(_0x1e6649){if(_0x1e6649){_0x513b3f=_0x1e6649;}return db[_0xda5a('0x3d')][_0xda5a('0x57')]({'where':{'id':_0xef5e27[_0xda5a('0x55')]['id']},'attributes':['logo',_0xda5a('0x5d'),_0xda5a('0x60'),_0xda5a('0x61'),_0xda5a('0x62'),_0xda5a('0x63'),'defaultPreferred',_0xda5a('0x65')],'raw':!![]});})[_0xda5a('0x23')](handleEntityNotFound(_0x361e53,null))['then'](function(_0x5f21d3){if(_0x5f21d3){var _0x39a6d9=_0x5f21d3['favicon']&&fs[_0xda5a('0x6c')](path['join'](config[_0xda5a('0x66')],_0x33b5e2,_[_0xda5a('0x67')](_0x5f21d3[_0xda5a('0x61')])))?path[_0xda5a('0x68')](config['root'],_0x33b5e2,_[_0xda5a('0x67')](_0x5f21d3['favicon'])):path[_0xda5a('0x68')](config[_0xda5a('0x66')],_0x33b5e2,_['toLower'](_0xda5a('0x7a')));var _0x5346a4=_0xda5a('0x6a')+_[_0xda5a('0x6b')](_0xda5a('0x61'));if(_0x5f21d3[_0x5346a4]||!_0x513b3f[_0xda5a('0x71')]){_0x39a6d9=path['join'](config['root'],_0x33b5e2,_[_0xda5a('0x67')]('default_favicon.ico'));}if(!fs[_0xda5a('0x6c')](_0x39a6d9)){throw new db[(_0xda5a('0x6d'))]['ValidationError'](_[_0xda5a('0x6b')]('favicon')+_0xda5a('0x6f'));}return _0x361e53['download'](_0x39a6d9);}})[_0xda5a('0x2d')](handleError(_0x361e53,null));};exports[_0xda5a('0x7b')]=function(_0x4f6afe,_0x4cb2d8){var _0x27b67d={'offset':moment()[_0xda5a('0x7c')]()};_0x27b67d['now']=moment()['utcOffset'](_0x27b67d['offset'])[_0xda5a('0x7d')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x4cb2d8[_0xda5a('0x30')](0xc8)[_0xda5a('0x7e')](_0x27b67d);};
\ No newline at end of file
index 3348e23..1410074 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./setting.attributes','exports','Setting','util'];(function(_0x5ebc51,_0x19d7a9){var _0x5b203e=function(_0x46c9ab){while(--_0x46c9ab){_0x5ebc51['push'](_0x5ebc51['shift']());}};_0x5b203e(++_0x19d7a9);}(_0xedd9,0xfc));var _0x9edd=function(_0x5b43e1,_0x321e9e){_0x5b43e1=_0x5b43e1-0x0;var _0x477523=_0xedd9[_0x5b43e1];return _0x477523;};'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':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./setting.attributes','exports','Setting','util'];(function(_0x2ed6eb,_0x5f1d6f){var _0x206855=function(_0x3c0458){while(--_0x3c0458){_0x2ed6eb['push'](_0x2ed6eb['shift']());}};_0x206855(++_0x5f1d6f);}(_0xedd9,0xfc));var _0x9edd=function(_0x390e6c,_0x4d7d42){_0x390e6c=_0x390e6c-0x0;var _0x596b05=_0xedd9[_0x390e6c];return _0x596b05;};'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':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 509f728..c13a512 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e54=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','message','Setting,\x20%s,\x20%s','catch','ShowSetting','find','options','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger'];(function(_0x4a687d,_0x2f96e6){var _0x18a3a4=function(_0x276d2a){while(--_0x276d2a){_0x4a687d['push'](_0x4a687d['shift']());}};_0x18a3a4(++_0x2f96e6);}(_0x6e54,0xad));var _0x46e5=function(_0x471448,_0x1c0e9e){_0x471448=_0x471448-0x0;var _0x38190b=_0x6e54[_0x471448];return _0x38190b;};'use strict';var _=require(_0x46e5('0x0'));var util=require(_0x46e5('0x1'));var moment=require(_0x46e5('0x2'));var BPromise=require(_0x46e5('0x3'));var rs=require(_0x46e5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x46e5('0x5'));var logger=require(_0x46e5('0x6'))(_0x46e5('0x7'));var config=require(_0x46e5('0x8'));var jayson=require(_0x46e5('0x9'));var client=jayson[_0x46e5('0xa')][_0x46e5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d8df2,_0x4cf260,_0x489a2f){return new BPromise(function(_0x187fad,_0x136725){return client[_0x46e5('0xc')](_0x1d8df2,_0x489a2f)[_0x46e5('0xd')](function(_0x16d839){logger[_0x46e5('0xe')]('Setting,\x20%s,\x20%s',_0x4cf260,_0x46e5('0xf'));logger[_0x46e5('0x10')](_0x46e5('0x11'),_0x4cf260,_0x46e5('0xf'),JSON[_0x46e5('0x12')](_0x16d839));if(_0x16d839[_0x46e5('0x13')]){if(_0x16d839[_0x46e5('0x13')]['code']===0x1f4){logger[_0x46e5('0x13')]('Setting,\x20%s,\x20%s',_0x4cf260,_0x16d839[_0x46e5('0x13')][_0x46e5('0x14')]);return _0x136725(_0x16d839[_0x46e5('0x13')][_0x46e5('0x14')]);}logger[_0x46e5('0x13')](_0x46e5('0x15'),_0x4cf260,_0x16d839[_0x46e5('0x13')][_0x46e5('0x14')]);return _0x187fad(_0x16d839[_0x46e5('0x13')][_0x46e5('0x14')]);}else{logger[_0x46e5('0xe')]('Setting,\x20%s,\x20%s',_0x4cf260,_0x46e5('0xf'));_0x187fad(_0x16d839['result'][_0x46e5('0x14')]);}})[_0x46e5('0x16')](function(_0x44fff7){logger[_0x46e5('0x13')](_0x46e5('0x15'),_0x4cf260,_0x44fff7);_0x136725(_0x44fff7);});});}exports[_0x46e5('0x17')]=function(_0x458581){var _0x14ef82=this;return new Promise(function(_0x1ae920,_0x5eb1eb){return db['Setting'][_0x46e5('0x18')]({'raw':_0x458581['options']?_0x458581[_0x46e5('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x458581[_0x46e5('0x19')]?_0x458581[_0x46e5('0x19')]['where']||null:null,'attributes':_0x458581[_0x46e5('0x19')]?_0x458581[_0x46e5('0x19')][_0x46e5('0x1a')]||null:null,'include':_0x458581[_0x46e5('0x19')]?_0x458581[_0x46e5('0x19')][_0x46e5('0x1b')]?_[_0x46e5('0x1c')](_0x458581[_0x46e5('0x19')][_0x46e5('0x1b')],function(_0x5639bf){return{'model':db[_0x5639bf['model']],'as':_0x5639bf['as'],'attributes':_0x5639bf[_0x46e5('0x1a')],'include':_0x5639bf[_0x46e5('0x1b')]?_[_0x46e5('0x1c')](_0x5639bf[_0x46e5('0x1b')],function(_0x478c39){return{'model':db[_0x478c39[_0x46e5('0x1d')]],'as':_0x478c39['as'],'attributes':_0x478c39['attributes'],'include':_0x478c39[_0x46e5('0x1b')]?_['map'](_0x478c39[_0x46e5('0x1b')],function(_0x142765){return{'model':db[_0x142765['model']],'as':_0x142765['as'],'attributes':_0x142765[_0x46e5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x46e5('0xd')](function(_0x76fd28){logger[_0x46e5('0xe')]('ShowSetting',_0x458581);logger[_0x46e5('0x10')](_0x46e5('0x17'),_0x458581,JSON[_0x46e5('0x12')](_0x76fd28));_0x1ae920(_0x76fd28);})[_0x46e5('0x16')](function(_0x4b3f43){logger['error'](_0x46e5('0x17'),_0x4b3f43[_0x46e5('0x14')],_0x458581);_0x5eb1eb(_0x14ef82[_0x46e5('0x13')](0x1f4,_0x4b3f43[_0x46e5('0x14')]));});});};
\ No newline at end of file
+var _0x2c5c=['Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','ShowSetting','Setting','find','options','raw','attributes','include','model','map','catch','lodash','util','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Setting,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5a2f71,_0x98029e){var _0x3267cc=function(_0x5d64db){while(--_0x5d64db){_0x5a2f71['push'](_0x5a2f71['shift']());}};_0x3267cc(++_0x98029e);}(_0x2c5c,0xe9));var _0xc2c5=function(_0x545c51,_0x4551a8){_0x545c51=_0x545c51-0x0;var _0x18e103=_0x2c5c[_0x545c51];return _0x18e103;};'use strict';var _=require(_0xc2c5('0x0'));var util=require(_0xc2c5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc2c5('0x2'));var fs=require('fs');var Redis=require(_0xc2c5('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc2c5('0x4'))(_0xc2c5('0x5'));var config=require(_0xc2c5('0x6'));var jayson=require(_0xc2c5('0x7'));var client=jayson[_0xc2c5('0x8')][_0xc2c5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x34511c,_0x4c13a9,_0x2cae3b){return new BPromise(function(_0x1c10c9,_0x1a976e){return client[_0xc2c5('0xa')](_0x34511c,_0x2cae3b)[_0xc2c5('0xb')](function(_0x180b97){logger['info'](_0xc2c5('0xc'),_0x4c13a9,_0xc2c5('0xd'));logger[_0xc2c5('0xe')](_0xc2c5('0xf'),_0x4c13a9,_0xc2c5('0xd'),JSON[_0xc2c5('0x10')](_0x180b97));if(_0x180b97[_0xc2c5('0x11')]){if(_0x180b97['error'][_0xc2c5('0x12')]===0x1f4){logger[_0xc2c5('0x11')]('Setting,\x20%s,\x20%s',_0x4c13a9,_0x180b97['error'][_0xc2c5('0x13')]);return _0x1a976e(_0x180b97[_0xc2c5('0x11')]['message']);}logger[_0xc2c5('0x11')]('Setting,\x20%s,\x20%s',_0x4c13a9,_0x180b97[_0xc2c5('0x11')][_0xc2c5('0x13')]);return _0x1c10c9(_0x180b97['error']['message']);}else{logger[_0xc2c5('0x14')](_0xc2c5('0xc'),_0x4c13a9,'request\x20sent');_0x1c10c9(_0x180b97['result'][_0xc2c5('0x13')]);}})['catch'](function(_0xf83ee2){logger[_0xc2c5('0x11')](_0xc2c5('0xc'),_0x4c13a9,_0xf83ee2);_0x1a976e(_0xf83ee2);});});}exports[_0xc2c5('0x15')]=function(_0x1cab9f){var _0xf302ec=this;return new Promise(function(_0x2718de,_0x159a0a){return db[_0xc2c5('0x16')][_0xc2c5('0x17')]({'raw':_0x1cab9f[_0xc2c5('0x18')]?_0x1cab9f[_0xc2c5('0x18')][_0xc2c5('0x19')]===undefined?!![]:![]:!![],'where':_0x1cab9f[_0xc2c5('0x18')]?_0x1cab9f[_0xc2c5('0x18')]['where']||null:null,'attributes':_0x1cab9f[_0xc2c5('0x18')]?_0x1cab9f['options'][_0xc2c5('0x1a')]||null:null,'include':_0x1cab9f['options']?_0x1cab9f[_0xc2c5('0x18')][_0xc2c5('0x1b')]?_['map'](_0x1cab9f[_0xc2c5('0x18')][_0xc2c5('0x1b')],function(_0x5c2b33){return{'model':db[_0x5c2b33[_0xc2c5('0x1c')]],'as':_0x5c2b33['as'],'attributes':_0x5c2b33[_0xc2c5('0x1a')],'include':_0x5c2b33[_0xc2c5('0x1b')]?_[_0xc2c5('0x1d')](_0x5c2b33[_0xc2c5('0x1b')],function(_0x34630c){return{'model':db[_0x34630c[_0xc2c5('0x1c')]],'as':_0x34630c['as'],'attributes':_0x34630c[_0xc2c5('0x1a')],'include':_0x34630c[_0xc2c5('0x1b')]?_[_0xc2c5('0x1d')](_0x34630c['include'],function(_0x3e2cdb){return{'model':db[_0x3e2cdb['model']],'as':_0x3e2cdb['as'],'attributes':_0x3e2cdb[_0xc2c5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc2c5('0xb')](function(_0x419e1b){logger['info'](_0xc2c5('0x15'),_0x1cab9f);logger[_0xc2c5('0xe')](_0xc2c5('0x15'),_0x1cab9f,JSON[_0xc2c5('0x10')](_0x419e1b));_0x2718de(_0x419e1b);})[_0xc2c5('0x1e')](function(_0x4ddbc2){logger[_0xc2c5('0x11')](_0xc2c5('0x15'),_0x4ddbc2[_0xc2c5('0x13')],_0x1cab9f);_0x159a0a(_0xf302ec['error'](0x1f4,_0x4ddbc2['message']));});});};
\ No newline at end of file
index c919720..c134f44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['create','post','/:id/dispositions','addAnswer','/:id/notify','notify','addApplications','status','addAgents','put','update','delete','removeDispositions','removeAnswers','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users'];(function(_0x28467d,_0x2ac2bf){var _0x22cbbd=function(_0x3288ec){while(--_0x3288ec){_0x28467d['push'](_0x28467d['shift']());}};_0x22cbbd(++_0x2ac2bf);}(_0x5fab,0x177));var _0xb5fa=function(_0xd2e2ab,_0x2440cf){_0xd2e2ab=_0xd2e2ab-0x0;var _0x1703a2=_0x5fab[_0xd2e2ab];return _0x1703a2;};'use strict';var multer=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var path=require('path');var timeout=require(_0xb5fa('0x2'));var express=require(_0xb5fa('0x3'));var router=express[_0xb5fa('0x4')]();var fs_extra=require(_0xb5fa('0x5'));var auth=require(_0xb5fa('0x6'));var interaction=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var controller=require(_0xb5fa('0x9'));router[_0xb5fa('0xa')]('/',auth[_0xb5fa('0xb')](),controller['index']);router['get'](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xd')]);router['get'](_0xb5fa('0xe'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xf')]);router['get']('/:id/dispositions',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x10')]);router[_0xb5fa('0xa')](_0xb5fa('0x11'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x12')]);router[_0xb5fa('0xa')](_0xb5fa('0x13'),auth[_0xb5fa('0xb')](),controller['getApplications']);router[_0xb5fa('0xa')](_0xb5fa('0x14'),auth['isAuthenticated'](),controller[_0xb5fa('0x15')]);router['get'](_0xb5fa('0x16'),controller[_0xb5fa('0x17')]);router[_0xb5fa('0xa')](_0xb5fa('0x18'),auth[_0xb5fa('0xb')](),controller['getAgents']);router['post']('/',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x19')]);router[_0xb5fa('0x1a')](_0xb5fa('0x1b'),auth['isAuthenticated'](),controller['addDisposition']);router[_0xb5fa('0x1a')](_0xb5fa('0x11'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x1c')]);router[_0xb5fa('0x1a')](_0xb5fa('0x1d'),controller[_0xb5fa('0x1e')]);router[_0xb5fa('0x1a')](_0xb5fa('0x13'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x1f')]);router[_0xb5fa('0x1a')]('/:id/send',auth[_0xb5fa('0xb')](),controller['send']);router[_0xb5fa('0x1a')]('/:id/status',controller[_0xb5fa('0x20')]);router[_0xb5fa('0x1a')]('/:id/users',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x21')]);router[_0xb5fa('0x22')]('/:id',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x23')]);router[_0xb5fa('0x24')]('/:id',auth[_0xb5fa('0xb')](),controller['destroy']);router[_0xb5fa('0x24')](_0xb5fa('0x1b'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x25')]);router[_0xb5fa('0x24')](_0xb5fa('0x11'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x26')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xb5fa('0x27')]=router;
\ No newline at end of file
+var _0x814b=['/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/send','status','addAgents','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated'];(function(_0x595604,_0x2cc998){var _0x1466f3=function(_0x4e1d9b){while(--_0x4e1d9b){_0x595604['push'](_0x595604['shift']());}};_0x1466f3(++_0x2cc998);}(_0x814b,0x1a2));var _0xb814=function(_0x104b35,_0x13f218){_0x104b35=_0x104b35-0x0;var _0x55584d=_0x814b[_0x104b35];return _0x55584d;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0xa')](_0xb814('0x16'),auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0xa')](_0xb814('0x18'),controller[_0xb814('0x19')]);router[_0xb814('0xa')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router[_0xb814('0x1c')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x1e')]);router['post'](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x1f')]);router[_0xb814('0x1c')]('/:id/notify',controller['notify']);router['post'](_0xb814('0x14'),auth['isAuthenticated'](),controller['addApplications']);router[_0xb814('0x1c')](_0xb814('0x20'),auth[_0xb814('0xb')](),controller['send']);router[_0xb814('0x1c')]('/:id/status',controller[_0xb814('0x21')]);router[_0xb814('0x1c')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x22')]);router[_0xb814('0x23')](_0xb814('0xe'),auth['isAuthenticated'](),controller[_0xb814('0x24')]);router['delete'](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x25')]);router[_0xb814('0x26')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x27')]);router['delete'](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x28')]);router[_0xb814('0x26')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x29')]);module[_0xb814('0x2a')]=router;
\ No newline at end of file
index 5da9aba..b950bea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3006=['clicksend','plivo','bandwidth','csc','infobip','intelepeer','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','STRING','generate','ENUM','twilio','skebby','connectel'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x3006,0x1f2));var _0x6300=function(_0x1b742a,_0x29b2f2){_0x1b742a=_0x1b742a-0x0;var _0x54d366=_0x3006[_0x1b742a];return _0x54d366;};'use strict';var Sequelize=require(_0x6300('0x0'));var rs=require(_0x6300('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x6300('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x6300('0x2')],'defaultValue':function(){return rs[_0x6300('0x3')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x6300('0x4')](_0x6300('0x5'),_0x6300('0x6'),_0x6300('0x7'),_0x6300('0x8'),_0x6300('0x9'),'clickatell',_0x6300('0xa'),_0x6300('0xb'),_0x6300('0xc'),_0x6300('0xd'))},'accountSid':{'type':Sequelize[_0x6300('0x2')]},'authId':{'type':Sequelize[_0x6300('0x2')]},'authToken':{'type':Sequelize[_0x6300('0x2')]},'smsMethod':{'type':Sequelize[_0x6300('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x6300('0x2')]},'password':{'type':Sequelize[_0x6300('0x2')]},'apiKey':{'type':Sequelize[_0x6300('0x2')]},'applicationId':{'type':Sequelize[_0x6300('0x2')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0x6300('0x2')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x6300('0x2')]},'notificationTemplate':{'type':Sequelize[_0x6300('0xe')],'defaultValue':function(){return _0x6300('0xf');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x6300('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6300('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6300('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x6300('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6300('0x11')],'comment':_0x6300('0x12')},'mandatoryDisposition':{'type':Sequelize[_0x6300('0x10')],'defaultValue':![],'comment':_0x6300('0x13'),'set':function(_0x263701){if(!_0x263701)this[_0x6300('0x14')](_0x6300('0x15'),null);this[_0x6300('0x14')]('mandatoryDisposition',_0x263701);}}};
\ No newline at end of file
+var _0x5b75=['skebby','connectel','clicksend','clickatell','bandwidth','csc','infobip','intelepeer','ENUM','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','name','STRING','generate'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x5b75,0x8d));var _0x55b7=function(_0x2da2e2,_0x512d34){_0x2da2e2=_0x2da2e2-0x0;var _0x2bea48=_0x5b75[_0x2da2e2];return _0x2bea48;};'use strict';var Sequelize=require(_0x55b7('0x0'));var rs=require(_0x55b7('0x1'));module[_0x55b7('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x55b7('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x55b7('0x4')],'allowNull':![]},'remote':{'type':Sequelize[_0x55b7('0x4')],'allowNull':![]},'token':{'type':Sequelize[_0x55b7('0x4')],'defaultValue':function(){return rs[_0x55b7('0x5')]();}},'phone':{'type':Sequelize[_0x55b7('0x4')]},'type':{'type':Sequelize['ENUM']('twilio',_0x55b7('0x6'),_0x55b7('0x7'),_0x55b7('0x8'),'plivo',_0x55b7('0x9'),_0x55b7('0xa'),_0x55b7('0xb'),_0x55b7('0xc'),_0x55b7('0xd'))},'accountSid':{'type':Sequelize[_0x55b7('0x4')]},'authId':{'type':Sequelize[_0x55b7('0x4')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x55b7('0xe')]('SI','TI','GP')},'username':{'type':Sequelize[_0x55b7('0x4')]},'password':{'type':Sequelize[_0x55b7('0x4')]},'apiKey':{'type':Sequelize[_0x55b7('0x4')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0x55b7('0xf')],'defaultValue':![]},'description':{'type':Sequelize[_0x55b7('0x4')]},'notificationTemplate':{'type':Sequelize[_0x55b7('0x10')],'defaultValue':function(){return _0x55b7('0x11');}},'notificationSound':{'type':Sequelize[_0x55b7('0xf')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x55b7('0xf')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x55b7('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x55b7('0xf')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x55b7('0x4')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x55b7('0x12')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x55b7('0xf')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x11ec50){if(!_0x11ec50)this[_0x55b7('0x13')]('mandatoryDispositionPauseId',null);this[_0x55b7('0x13')](_0x55b7('0x14'),_0x11ec50);}}};
\ No newline at end of file
index 5dc66f3..864af92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4f=['redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','http','then','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','SmsAccount,\x20%s,\x20%s','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','destroy','get','SmsAccounts','stack','name','send','index','Pause','map','SmsAccount','fieldName','key','model','keys','query','attributes','intersection','fields','hasOwnProperty','order','sort','where','filters','filter','type','VIRTUAL','merge','options','includeAll','include','params','rawAttributes','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','mandatoryDispositionPause','describe','addDisposition','getDispositions','Disposition','nolimit','SmsAccountId','rows','removeDispositions','ids','addAnswer','findOne','CannedAnswer','length','pick','findAll','removeAnswers','sms','SmsApplication','account','Applications','priority','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','messageId','MessageSid','skebby','sender','text','From','Text','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','bandwidth','intelepeer','refid','from\x20is\x20mandatory','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','omit','defaults','SmsInteraction','spread','interaction','created','applications','unmanaged','ContactId','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','*,*,*,*','Start','receiveMessage','info','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','Contact','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','SmsMessage','Messages','dataValues','push','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','connectel','requestid','statusInt','clicksend','message_id','groupName','DELIVERED','redif','update','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','message-id','state','emit','userSmsAccount:save','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util'];(function(_0x51256f,_0x376a8b){var _0x35d5e1=function(_0x124170){while(--_0x124170){_0x51256f['push'](_0x51256f['shift']());}};_0x35d5e1(++_0x376a8b);}(_0xac4f,0xc5));var _0xfac4=function(_0x5842c3,_0x56bd74){_0x5842c3=_0x5842c3-0x0;var _0x44bf8c=_0xac4f[_0x5842c3];return _0x44bf8c;};'use strict';var emlformat=require(_0xfac4('0x0'));var rimraf=require(_0xfac4('0x1'));var zipdir=require(_0xfac4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfac4('0x3'));var moment=require('moment');var BPromise=require(_0xfac4('0x4'));var Mustache=require('mustache');var util=require(_0xfac4('0x5'));var path=require(_0xfac4('0x6'));var sox=require(_0xfac4('0x7'));var csv=require(_0xfac4('0x8'));var ejs=require(_0xfac4('0x9'));var fs=require('fs');var fs_extra=require(_0xfac4('0xa'));var _=require('lodash');var squel=require(_0xfac4('0xb'));var crypto=require('crypto');var jsforce=require(_0xfac4('0xc'));var deskjs=require(_0xfac4('0xd'));var toCsv=require(_0xfac4('0x8'));var querystring=require('querystring');var Papa=require(_0xfac4('0xe'));var Redis=require(_0xfac4('0xf'));var authService=require(_0xfac4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xfac4('0x11'));var hardwareService=require(_0xfac4('0x12'));var logger=require(_0xfac4('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xfac4('0x14'));var licenseUtil=require(_0xfac4('0x15'));var db=require('../../mysqldb')['db'];config[_0xfac4('0x16')]=_['defaults'](config[_0xfac4('0x16')],{'host':_0xfac4('0x17'),'port':0x18eb});var socket=require(_0xfac4('0x18'))(new Redis(config[_0xfac4('0x16')]));require(_0xfac4('0x19'))[_0xfac4('0x1a')](socket);var jayson=require(_0xfac4('0x1b'));var client=jayson['client'][_0xfac4('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x43fdfd,_0x54b3c9,_0x4faf45,_0x39d6eb){return new BPromise(function(_0x297c8e,_0x1e3120){var _0x34291c=_0x39d6eb||client;return _0x34291c['request'](_0x43fdfd,_0x4faf45)[_0xfac4('0x1d')](function(_0x1ce020){logger['info']('SmsAccount,\x20%s,\x20%s',_0x54b3c9,_0xfac4('0x1e'));logger[_0xfac4('0x1f')](_0xfac4('0x20'),_0x54b3c9,_0xfac4('0x1e'),JSON['stringify'](_0x1ce020));if(_0x1ce020[_0xfac4('0x21')]){if(_0x1ce020[_0xfac4('0x21')][_0xfac4('0x22')]===0x1f4){logger[_0xfac4('0x21')]('SmsAccount,\x20%s,\x20%s',_0x54b3c9,_0x1ce020[_0xfac4('0x21')]['message']);return _0x1e3120(_0x1ce020[_0xfac4('0x21')][_0xfac4('0x23')]);}logger[_0xfac4('0x21')]('SmsAccount,\x20%s,\x20%s',_0x54b3c9,_0x1ce020[_0xfac4('0x21')][_0xfac4('0x23')]);return _0x297c8e(_0x1ce020[_0xfac4('0x21')][_0xfac4('0x23')]);}else{logger['info'](_0xfac4('0x24'),_0x54b3c9,'request\x20sent');_0x297c8e(_0x1ce020['result']['message']);}})['catch'](function(_0x2bc3b5){logger['error'](_0xfac4('0x24'),_0x54b3c9,_0x2bc3b5);_0x1e3120(_0x2bc3b5);});});}function respondWithStatusCode(_0x2991d3,_0x45d9ae){_0x45d9ae=_0x45d9ae||0xcc;return function(_0x19ed99){if(_0x19ed99){return _0x2991d3['sendStatus'](_0x45d9ae);}return _0x2991d3['status'](_0x45d9ae)[_0xfac4('0x25')]();};}function respondWithResult(_0x33696d,_0x2924ef){_0x2924ef=_0x2924ef||0xc8;return function(_0x340f2a){if(_0x340f2a){return _0x33696d[_0xfac4('0x26')](_0x2924ef)[_0xfac4('0x27')](_0x340f2a);}};}function respondWithFilteredResult(_0x23286b,_0x4f7bf7){return function(_0x4aed4b){if(_0x4aed4b){var _0x4701ae=typeof _0x4f7bf7['offset']===_0xfac4('0x28')&&typeof _0x4f7bf7[_0xfac4('0x29')]===_0xfac4('0x28');var _0x40dbab=_0x4aed4b[_0xfac4('0x2a')];var _0x4bddc3=_0x4701ae?0x0:_0x4f7bf7['offset'];var _0x483bc6=_0x4701ae?_0x4aed4b[_0xfac4('0x2a')]:_0x4f7bf7[_0xfac4('0x2b')]+_0x4f7bf7['limit'];var _0x486db9;if(_0x483bc6>=_0x40dbab){_0x483bc6=_0x40dbab;_0x486db9=0xc8;}else{_0x486db9=0xce;}_0x23286b[_0xfac4('0x26')](_0x486db9);return _0x23286b[_0xfac4('0x2c')](_0xfac4('0x2d'),_0x4bddc3+'-'+_0x483bc6+'/'+_0x40dbab)[_0xfac4('0x27')](_0x4aed4b);}return null;};}function patchUpdates(_0x31ae27){return function(_0x1e2631){try{jsonpatch[_0xfac4('0x2e')](_0x1e2631,_0x31ae27,!![]);}catch(_0x43cf2a){return BPromise[_0xfac4('0x2f')](_0x43cf2a);}return _0x1e2631[_0xfac4('0x30')]();};}function saveUpdates(_0x5d5b96,_0x3322fc){return function(_0x170a08){if(_0x170a08){return _0x170a08['update'](_0x5d5b96)[_0xfac4('0x1d')](function(_0x524718){return _0x524718;});}return null;};}function removeEntity(_0x255401,_0x476068){return function(_0x48d959){if(_0x48d959){return _0x48d959[_0xfac4('0x31')]()['then'](function(){var _0x583c1d=_0x48d959[_0xfac4('0x32')]({'plain':!![]});var _0x27ac05=_0xfac4('0x33');return db['UserProfileResource'][_0xfac4('0x31')]({'where':{'type':_0x27ac05,'resourceId':_0x583c1d['id']}})['then'](function(){return _0x48d959;});})['then'](function(){_0x255401[_0xfac4('0x26')](0xcc)[_0xfac4('0x25')]();});}};}function handleEntityNotFound(_0x445249,_0x37544c){return function(_0x492c2a){if(!_0x492c2a){_0x445249['sendStatus'](0x194);}return _0x492c2a;};}function handleError(_0x433b7b,_0x2ea958){_0x2ea958=_0x2ea958||0x1f4;return function(_0x3c064c){logger[_0xfac4('0x21')](_0x3c064c[_0xfac4('0x34')]);if(_0x3c064c[_0xfac4('0x35')]){delete _0x3c064c[_0xfac4('0x35')];}_0x433b7b['status'](_0x2ea958)[_0xfac4('0x36')](_0x3c064c);};}exports[_0xfac4('0x37')]=function(_0x46d94a,_0x218083){var _0x2c33ea={'include':[{'model':db[_0xfac4('0x38')],'as':'mandatoryDispositionPause'}]},_0x198499={},_0x3ab887={'count':0x0,'rows':[]};var _0x3e7334=_[_0xfac4('0x39')](db[_0xfac4('0x3a')]['rawAttributes'],function(_0x16463f){return{'name':_0x16463f[_0xfac4('0x3b')],'type':_0x16463f['type'][_0xfac4('0x3c')]};});_0x198499[_0xfac4('0x3d')]=_['map'](_0x3e7334,_0xfac4('0x35'));_0x198499['query']=_[_0xfac4('0x3e')](_0x46d94a[_0xfac4('0x3f')]);_0x198499['filters']=_['intersection'](_0x198499['model'],_0x198499['query']);_0x2c33ea[_0xfac4('0x40')]=_[_0xfac4('0x41')](_0x198499[_0xfac4('0x3d')],qs[_0xfac4('0x42')](_0x46d94a['query']['fields']));_0x2c33ea['attributes']=_0x2c33ea[_0xfac4('0x40')]['length']?_0x2c33ea['attributes']:_0x198499[_0xfac4('0x3d')];if(!_0x46d94a[_0xfac4('0x3f')][_0xfac4('0x43')]('nolimit')){_0x2c33ea[_0xfac4('0x29')]=qs[_0xfac4('0x29')](_0x46d94a[_0xfac4('0x3f')][_0xfac4('0x29')]);_0x2c33ea[_0xfac4('0x2b')]=qs['offset'](_0x46d94a['query'][_0xfac4('0x2b')]);}_0x2c33ea[_0xfac4('0x44')]=qs[_0xfac4('0x45')](_0x46d94a[_0xfac4('0x3f')]['sort']);_0x2c33ea[_0xfac4('0x46')]=qs[_0xfac4('0x47')](_['pick'](_0x46d94a[_0xfac4('0x3f')],_0x198499['filters']),_0x3e7334);if(_0x46d94a[_0xfac4('0x3f')][_0xfac4('0x48')]){_0x2c33ea[_0xfac4('0x46')]=_['merge'](_0x2c33ea[_0xfac4('0x46')],{'$or':_[_0xfac4('0x39')](_0x3e7334,function(_0x751f42){if(_0x751f42[_0xfac4('0x49')]!==_0xfac4('0x4a')){var _0x4cf421={};_0x4cf421[_0x751f42[_0xfac4('0x35')]]={'$like':'%'+_0x46d94a[_0xfac4('0x3f')][_0xfac4('0x48')]+'%'};return _0x4cf421;}})});}_0x2c33ea=_[_0xfac4('0x4b')]({},_0x2c33ea,_0x46d94a[_0xfac4('0x4c')]);var _0x2a8736={'where':_0x2c33ea['where']};return db[_0xfac4('0x3a')][_0xfac4('0x2a')](_0x2a8736)[_0xfac4('0x1d')](function(_0x4f3a25){_0x3ab887[_0xfac4('0x2a')]=_0x4f3a25;if(_0x46d94a[_0xfac4('0x3f')][_0xfac4('0x4d')]){_0x2c33ea[_0xfac4('0x4e')]=[{'all':!![]}];}return db[_0xfac4('0x3a')]['findAll'](_0x2c33ea);})[_0xfac4('0x1d')](function(_0x45ab2f){_0x3ab887['rows']=_0x45ab2f;return _0x3ab887;})[_0xfac4('0x1d')](respondWithFilteredResult(_0x218083,_0x2c33ea))['catch'](handleError(_0x218083,null));};exports['show']=function(_0x101ca6,_0x11da9d){var _0x25952a={'raw':![],'where':{'id':_0x101ca6[_0xfac4('0x4f')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x25c7af={};_0x25c7af[_0xfac4('0x3d')]=_['keys'](db['SmsAccount'][_0xfac4('0x50')]);_0x25c7af[_0xfac4('0x3f')]=_[_0xfac4('0x3e')](_0x101ca6['query']);_0x25c7af['filters']=_[_0xfac4('0x41')](_0x25c7af['model'],_0x25c7af['query']);_0x25952a[_0xfac4('0x40')]=_[_0xfac4('0x41')](_0x25c7af[_0xfac4('0x3d')],qs[_0xfac4('0x42')](_0x101ca6[_0xfac4('0x3f')][_0xfac4('0x42')]));_0x25952a[_0xfac4('0x40')]=_0x25952a[_0xfac4('0x40')]['length']?_0x25952a[_0xfac4('0x40')]:_0x25c7af[_0xfac4('0x3d')];if(_0x101ca6[_0xfac4('0x3f')][_0xfac4('0x4d')]){_0x25952a[_0xfac4('0x4e')]=[{'all':!![]}];}_0x25952a=_[_0xfac4('0x4b')]({},_0x25952a,_0x101ca6[_0xfac4('0x4c')]);return db['SmsAccount'][_0xfac4('0x51')](_0x25952a)[_0xfac4('0x1d')](handleEntityNotFound(_0x11da9d,null))[_0xfac4('0x1d')](respondWithResult(_0x11da9d,null))[_0xfac4('0x52')](handleError(_0x11da9d,null));};exports['create']=function(_0x5d7180,_0x4d330b){return db[_0xfac4('0x3a')][_0xfac4('0x53')](_0x5d7180['body'],{})['then'](function(_0x4b4bc6){var _0x5a4db7=_0x5d7180['user'][_0xfac4('0x32')]({'plain':!![]});if(!_0x5a4db7)throw new Error(_0xfac4('0x54'));if(_0x5a4db7[_0xfac4('0x55')]===_0xfac4('0x56')){var _0x3c26db=_0x4b4bc6[_0xfac4('0x32')]({'plain':!![]});var _0x26d265=_0xfac4('0x33');return db[_0xfac4('0x57')][_0xfac4('0x51')]({'where':{'name':_0x26d265,'userProfileId':_0x5a4db7[_0xfac4('0x58')]},'raw':!![]})[_0xfac4('0x1d')](function(_0x4ff22d){if(_0x4ff22d&&_0x4ff22d['autoAssociation']===0x0){return db['UserProfileResource'][_0xfac4('0x53')]({'name':_0x3c26db['name'],'resourceId':_0x3c26db['id'],'type':_0x4ff22d[_0xfac4('0x35')],'sectionId':_0x4ff22d['id']},{})[_0xfac4('0x1d')](function(){return _0x4b4bc6;});}else{return _0x4b4bc6;}})[_0xfac4('0x52')](function(_0x516167){logger[_0xfac4('0x21')](_0xfac4('0x59'),_0x516167);throw _0x516167;});}return _0x4b4bc6;})[_0xfac4('0x1d')](respondWithResult(_0x4d330b,0xc9))[_0xfac4('0x52')](handleError(_0x4d330b,null));};exports['update']=function(_0x5ca950,_0x34de14){if(_0x5ca950[_0xfac4('0x5a')]['id']){delete _0x5ca950['body']['id'];}return db['SmsAccount'][_0xfac4('0x51')]({'where':{'id':_0x5ca950[_0xfac4('0x4f')]['id']},'include':[{'model':db['Pause'],'as':_0xfac4('0x5b')}]})['then'](handleEntityNotFound(_0x34de14,null))[_0xfac4('0x1d')](saveUpdates(_0x5ca950['body'],null))['then'](respondWithResult(_0x34de14,null))[_0xfac4('0x52')](handleError(_0x34de14,null));};exports['destroy']=function(_0x26f329,_0x42659e){return db[_0xfac4('0x3a')]['find']({'where':{'id':_0x26f329['params']['id']}})['then'](handleEntityNotFound(_0x42659e,null))[_0xfac4('0x1d')](removeEntity(_0x42659e,null))[_0xfac4('0x52')](handleError(_0x42659e,null));};exports[_0xfac4('0x5c')]=function(_0x59db6a,_0x8981f2){return db[_0xfac4('0x3a')][_0xfac4('0x5c')]()['then'](respondWithResult(_0x8981f2,null))[_0xfac4('0x52')](handleError(_0x8981f2,null));};exports[_0xfac4('0x5d')]=function(_0xd0cf1b,_0x3cdc48,_0x3df44d){if(_0xd0cf1b[_0xfac4('0x5a')]['id']){delete _0xd0cf1b[_0xfac4('0x5a')]['id'];}return db[_0xfac4('0x3a')][_0xfac4('0x51')]({'where':{'id':_0xd0cf1b[_0xfac4('0x4f')]['id']}})[_0xfac4('0x1d')](handleEntityNotFound(_0x3cdc48,null))[_0xfac4('0x1d')](function(_0x3bce8a){if(_0x3bce8a){_0xd0cf1b[_0xfac4('0x5a')]['SmsAccountId']=_0x3bce8a['id'];return db['Disposition'][_0xfac4('0x53')](_0xd0cf1b[_0xfac4('0x5a')]);}})[_0xfac4('0x1d')](respondWithResult(_0x3cdc48,null))[_0xfac4('0x52')](handleError(_0x3cdc48,null));};exports[_0xfac4('0x5e')]=function(_0x264083,_0x232ea8,_0x2c60a2){var _0x231eac={'raw':![],'where':{}};var _0x3997d0={};var _0x5fa409={'count':0x0,'rows':[]};return db['SmsAccount']['findOne']({'where':{'id':_0x264083[_0xfac4('0x4f')]['id']}})['then'](handleEntityNotFound(_0x232ea8,null))['then'](function(_0xfa4668){if(_0xfa4668){_0x3997d0[_0xfac4('0x3d')]=_[_0xfac4('0x3e')](db[_0xfac4('0x5f')][_0xfac4('0x50')]);_0x3997d0['query']=_[_0xfac4('0x3e')](_0x264083[_0xfac4('0x3f')]);_0x3997d0[_0xfac4('0x47')]=_[_0xfac4('0x41')](_0x3997d0[_0xfac4('0x3d')],_0x3997d0[_0xfac4('0x3f')]);_0x231eac[_0xfac4('0x40')]=_[_0xfac4('0x41')](_0x3997d0[_0xfac4('0x3d')],qs[_0xfac4('0x42')](_0x264083[_0xfac4('0x3f')][_0xfac4('0x42')]));_0x231eac[_0xfac4('0x40')]=_0x231eac[_0xfac4('0x40')]['length']?_0x231eac['attributes']:_0x3997d0[_0xfac4('0x3d')];if(!_0x264083['query'][_0xfac4('0x43')](_0xfac4('0x60'))){_0x231eac[_0xfac4('0x29')]=qs['limit'](_0x264083[_0xfac4('0x3f')][_0xfac4('0x29')]);_0x231eac[_0xfac4('0x2b')]=qs[_0xfac4('0x2b')](_0x264083[_0xfac4('0x3f')]['offset']);}_0x231eac[_0xfac4('0x44')]=qs['sort'](_0x264083[_0xfac4('0x3f')][_0xfac4('0x45')]);_0x231eac[_0xfac4('0x46')]=qs[_0xfac4('0x47')](_['pick'](_0x264083[_0xfac4('0x3f')],_0x3997d0['filters']));_0x231eac[_0xfac4('0x46')][_0xfac4('0x61')]=_0xfa4668['id'];if(_0x264083[_0xfac4('0x3f')][_0xfac4('0x48')]){_0x231eac[_0xfac4('0x46')]=_[_0xfac4('0x4b')](_0x231eac[_0xfac4('0x46')],{'$or':_['map'](_0x231eac[_0xfac4('0x40')],function(_0x2cba4a){var _0xf241ae={};_0xf241ae[_0x2cba4a]={'$like':'%'+_0x264083[_0xfac4('0x3f')][_0xfac4('0x48')]+'%'};return _0xf241ae;})});}_0x231eac=_[_0xfac4('0x4b')]({},_0x231eac,_0x264083[_0xfac4('0x4c')]);return db['Disposition']['count']({'where':_0x231eac['where']})[_0xfac4('0x1d')](function(_0x1f5c80){_0x5fa409[_0xfac4('0x2a')]=_0x1f5c80;if(_0x264083[_0xfac4('0x3f')][_0xfac4('0x4d')]){_0x231eac[_0xfac4('0x4e')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x231eac);})['then'](function(_0x2ff42e){_0x5fa409[_0xfac4('0x62')]=_0x2ff42e;return _0x5fa409;});}})[_0xfac4('0x1d')](respondWithFilteredResult(_0x232ea8,_0x231eac))['catch'](handleError(_0x232ea8,null));};exports['removeDispositions']=function(_0x5c082d,_0x4b37db,_0x1ade3e){return db[_0xfac4('0x3a')][_0xfac4('0x51')]({'where':{'id':_0x5c082d[_0xfac4('0x4f')]['id']}})[_0xfac4('0x1d')](handleEntityNotFound(_0x4b37db,null))['then'](function(_0x357ba8){if(_0x357ba8){return _0x357ba8[_0xfac4('0x63')](_0x5c082d[_0xfac4('0x3f')][_0xfac4('0x64')]);}})[_0xfac4('0x1d')](respondWithStatusCode(_0x4b37db,null))[_0xfac4('0x52')](handleError(_0x4b37db,null));};exports[_0xfac4('0x65')]=function(_0x24903c,_0x17b300,_0x34b2ae){if(_0x24903c[_0xfac4('0x5a')]['id']){delete _0x24903c[_0xfac4('0x5a')]['id'];}return db[_0xfac4('0x3a')][_0xfac4('0x51')]({'where':{'id':_0x24903c[_0xfac4('0x4f')]['id']}})[_0xfac4('0x1d')](handleEntityNotFound(_0x17b300,null))[_0xfac4('0x1d')](function(_0x1f16b5){if(_0x1f16b5){_0x24903c['body']['SmsAccountId']=_0x1f16b5['id'];return db['CannedAnswer'][_0xfac4('0x53')](_0x24903c[_0xfac4('0x5a')]);}})[_0xfac4('0x1d')](respondWithResult(_0x17b300,null))['catch'](handleError(_0x17b300,null));};exports['getAnswers']=function(_0x28731c,_0x38e8b4,_0x1a454a){var _0x765643={'raw':![],'where':{}};var _0x5a893d={};var _0x24eb42={'count':0x0,'rows':[]};return db[_0xfac4('0x3a')][_0xfac4('0x66')]({'where':{'id':_0x28731c[_0xfac4('0x4f')]['id']}})['then'](handleEntityNotFound(_0x38e8b4,null))[_0xfac4('0x1d')](function(_0x4e1608){if(_0x4e1608){_0x5a893d[_0xfac4('0x3d')]=_[_0xfac4('0x3e')](db[_0xfac4('0x67')][_0xfac4('0x50')]);_0x5a893d[_0xfac4('0x3f')]=_[_0xfac4('0x3e')](_0x28731c['query']);_0x5a893d['filters']=_[_0xfac4('0x41')](_0x5a893d[_0xfac4('0x3d')],_0x5a893d['query']);_0x765643[_0xfac4('0x40')]=_[_0xfac4('0x41')](_0x5a893d[_0xfac4('0x3d')],qs[_0xfac4('0x42')](_0x28731c[_0xfac4('0x3f')][_0xfac4('0x42')]));_0x765643[_0xfac4('0x40')]=_0x765643['attributes'][_0xfac4('0x68')]?_0x765643[_0xfac4('0x40')]:_0x5a893d[_0xfac4('0x3d')];if(!_0x28731c['query'][_0xfac4('0x43')](_0xfac4('0x60'))){_0x765643['limit']=qs[_0xfac4('0x29')](_0x28731c[_0xfac4('0x3f')][_0xfac4('0x29')]);_0x765643[_0xfac4('0x2b')]=qs[_0xfac4('0x2b')](_0x28731c[_0xfac4('0x3f')][_0xfac4('0x2b')]);}_0x765643[_0xfac4('0x44')]=qs[_0xfac4('0x45')](_0x28731c[_0xfac4('0x3f')][_0xfac4('0x45')]);_0x765643['where']=qs[_0xfac4('0x47')](_[_0xfac4('0x69')](_0x28731c[_0xfac4('0x3f')],_0x5a893d[_0xfac4('0x47')]));_0x765643[_0xfac4('0x46')][_0xfac4('0x61')]=_0x4e1608['id'];if(_0x28731c[_0xfac4('0x3f')][_0xfac4('0x48')]){_0x765643[_0xfac4('0x46')]=_[_0xfac4('0x4b')](_0x765643[_0xfac4('0x46')],{'$or':_[_0xfac4('0x39')](_0x765643[_0xfac4('0x40')],function(_0x1642b7){var _0x447033={};_0x447033[_0x1642b7]={'$like':'%'+_0x28731c[_0xfac4('0x3f')]['filter']+'%'};return _0x447033;})});}_0x765643=_[_0xfac4('0x4b')]({},_0x765643,_0x28731c[_0xfac4('0x4c')]);return db['CannedAnswer'][_0xfac4('0x2a')]({'where':_0x765643['where']})[_0xfac4('0x1d')](function(_0x1d80d9){_0x24eb42['count']=_0x1d80d9;if(_0x28731c[_0xfac4('0x3f')][_0xfac4('0x4d')]){_0x765643[_0xfac4('0x4e')]=[{'all':!![]}];}return db['CannedAnswer'][_0xfac4('0x6a')](_0x765643);})['then'](function(_0x19cd4d){_0x24eb42[_0xfac4('0x62')]=_0x19cd4d;return _0x24eb42;});}})[_0xfac4('0x1d')](respondWithFilteredResult(_0x38e8b4,_0x765643))[_0xfac4('0x52')](handleError(_0x38e8b4,null));};exports[_0xfac4('0x6b')]=function(_0x1c1249,_0x20d5f4,_0x5f2132){return db[_0xfac4('0x3a')][_0xfac4('0x51')]({'where':{'id':_0x1c1249[_0xfac4('0x4f')]['id']}})[_0xfac4('0x1d')](handleEntityNotFound(_0x20d5f4,null))[_0xfac4('0x1d')](function(_0x475fc3){if(_0x475fc3){return _0x475fc3[_0xfac4('0x6b')](_0x1c1249[_0xfac4('0x3f')]['ids']);}})[_0xfac4('0x1d')](respondWithStatusCode(_0x20d5f4,null))['catch'](handleError(_0x20d5f4,null));};exports['notify']=function(_0x5bbcc7,_0x3e1628,_0x172c89){var _0x5a279a={'channel':_0xfac4('0x6c')};var _0xe58333=[];var _0x382640=[];var _0xf8bd94={};return db[_0xfac4('0x3a')][_0xfac4('0x51')]({'where':{'id':_0x5bbcc7[_0xfac4('0x4f')]['id']},'include':[{'model':db[_0xfac4('0x6d')],'as':'Applications'}]})[_0xfac4('0x1d')](handleEntityNotFound(_0x3e1628,null))[_0xfac4('0x1d')](function(_0x43f27d){_0x5a279a[_0xfac4('0x6e')]=_0x43f27d;_0x5a279a['applications']=_['orderBy'](_0x43f27d[_0xfac4('0x6f')],[_0xfac4('0x70')],['asc']);if(_0x5a279a['account'][_0xfac4('0x6f')]){delete _0x5a279a['account'][_0xfac4('0x6f')];}return db[_0xfac4('0x71')][_0xfac4('0x5c')]();})[_0xfac4('0x1d')](function(_0x723560){if(!_0x723560){throw new db[(_0xfac4('0x72'))][(_0xfac4('0x73'))]('no\x20available\x20attributes');}_0xe58333=_[_0xfac4('0x74')](_['keys'](_0x723560),[_0xfac4('0x75'),_0xfac4('0x76')]);_0x382640=_[_0xfac4('0x74')](_[_0xfac4('0x3e')](_0x723560),[_0xfac4('0x75'),_0xfac4('0x76'),_0xfac4('0x77'),_0xfac4('0x78')]);_0x5a279a[_0xfac4('0x5a')]={'mapKey':_0xfac4('0x79')};if(_0x5a279a[_0xfac4('0x6e')][_0xfac4('0x49')]){switch(_0x5a279a['account'][_0xfac4('0x49')]){case _0xfac4('0x7a'):_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')]=_0x5bbcc7['body']['From'];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x5a')]=_0x5bbcc7[_0xfac4('0x5a')]['Body'];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7c')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x7d')];break;case _0xfac4('0x7e'):_0x5a279a[_0xfac4('0x5a')]['from']='+'+_0x5bbcc7['body'][_0xfac4('0x7f')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x5a')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x80')];break;case'connectel':_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')]=_0x5bbcc7['body']['from'];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x5a')]=_0x5bbcc7[_0xfac4('0x5a')]['message'];break;case'clicksend':_0x5a279a[_0xfac4('0x5a')]['from']=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x7b')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x5a')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x5a')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7c')]=_0x5bbcc7['body']['message_id'];break;case'plivo':_0x5a279a['body'][_0xfac4('0x7b')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x81')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x5a')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x82')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7c')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x83')];break;case _0xfac4('0x84'):_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')]='+'+_0x5bbcc7[_0xfac4('0x5a')]['results'][0x0]['from'];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x5a')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x85')][0x0][_0xfac4('0x80')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7c')]=_0x5bbcc7['body'][_0xfac4('0x85')][0x0][_0xfac4('0x7c')];break;case _0xfac4('0x86'):_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x87')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x5a')]=_0x5bbcc7['body'][_0xfac4('0x88')][_0xfac4('0x23')];break;case _0xfac4('0x89'):_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x8a')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x5a')]=_0x5bbcc7['body'][_0xfac4('0x80')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7c')]=_0x5bbcc7['body']['replyMessageId'];break;case _0xfac4('0x8b'):_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7c')]=_0x5bbcc7[_0xfac4('0x5a')][0x0][_0xfac4('0x23')]['id'];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')]=_0x5bbcc7[_0xfac4('0x5a')][0x0][_0xfac4('0x23')][_0xfac4('0x7b')];_0x5a279a[_0xfac4('0x5a')]['body']=_0x5bbcc7['body'][0x0][_0xfac4('0x23')][_0xfac4('0x80')];break;case _0xfac4('0x8c'):_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x7b')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x5a')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x23')];_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7c')]=_0x5bbcc7[_0xfac4('0x5a')][_0xfac4('0x8d')];break;}}if(_0x5a279a[_0xfac4('0x5a')]['id']){delete _0x5a279a['body']['id'];}if(_['isNil'](_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')])){throw new db[(_0xfac4('0x72'))]['ValidationError'](_0xfac4('0x8e'));}if(_['isNil'](_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x5a')])||_0x5a279a[_0xfac4('0x5a')]['body']===''){throw new db[(_0xfac4('0x72'))][(_0xfac4('0x73'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xfac4('0x8f')](_0x5a279a['body']['mapKey'])){throw new db[(_0xfac4('0x72'))][(_0xfac4('0x73'))](_0xfac4('0x90')+_0x382640);}if(!_['includes'](_0x382640,_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x91')])){throw new db['Sequelize'][(_0xfac4('0x73'))](_0xfac4('0x92')+_0x382640);}_0xf8bd94[_0x5a279a['body'][_0xfac4('0x91')]]=_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')];return db[_0xfac4('0x93')]['find']({'where':{'id':_0x5a279a[_0xfac4('0x6e')]['ListId']},'include':[{'model':db[_0xfac4('0x71')],'as':_0xfac4('0x94'),'where':_0xf8bd94,'limit':0x1,'order':[[_0xfac4('0x76'),_0xfac4('0x95')]]}]});})[_0xfac4('0x1d')](handleEntityNotFound(_0x3e1628,null))['then'](function(_0x41667c){if(_0x41667c){_0x5a279a[_0xfac4('0x96')]=_[_0xfac4('0x97')](_0x41667c,[_0xfac4('0x94')]);if(_0x41667c['Contacts']['length']){return _0x41667c[_0xfac4('0x94')][0x0];}var _0x3ca137=_[_0xfac4('0x98')](_0x5a279a['body'],{'firstName':_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')],'ListId':_0x41667c['id']});_0x3ca137[_0x5a279a[_0xfac4('0x5a')]['mapKey']]=_0x5a279a['body'][_0xfac4('0x7b')];return db['CmContact'][_0xfac4('0x53')](_0x3ca137,{'fields':_0xe58333,'raw':!![]});}})['then'](handleEntityNotFound(_0x3e1628,null))[_0xfac4('0x1d')](function(_0x3054f6){if(_0x3054f6){_0x5a279a['contact']=_0x3054f6;var _0x4f3355={'ContactId':_0x3054f6['id'],'phone':_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7b')],'SmsAccountId':_0x5bbcc7[_0xfac4('0x4f')]['id']};var _0x59e5ae={'ContactId':_0x3054f6['id'],'SmsAccountId':_0x5bbcc7['params']['id'],'closed':![]};return db[_0xfac4('0x99')][_0xfac4('0x51')]({'where':_0x59e5ae})[_0xfac4('0x1d')](function(_0x1d56ef){if(_0x1d56ef){return[_0x1d56ef,![]];}return db[_0xfac4('0x99')][_0xfac4('0x53')](_0x4f3355)[_0xfac4('0x1d')](function(_0x439336){return[_0x439336,!![]];});});}})[_0xfac4('0x9a')](function(_0x4f6af9,_0x199192){_0x5a279a[_0xfac4('0x9b')]=_0x4f6af9[_0xfac4('0x32')]({'plain':!![]});_0x5a279a[_0xfac4('0x9b')][_0xfac4('0x9c')]=![];if(_0x199192){if(_0x5a279a[_0xfac4('0x6e')]['autoclose']){_0x5a279a[_0xfac4('0x9d')]['push']({'id':0x0,'priority':_0x5a279a[_0xfac4('0x9d')][_0xfac4('0x68')]+0x1,'app':'close','appdata':_0xfac4('0x9e'),'interval':'*,*,*,*'});}_0x5a279a[_0xfac4('0x9b')][_0xfac4('0x9c')]=!![];}return db['SmsMessage'][_0xfac4('0x53')]({'phone':_0x5a279a[_0xfac4('0x5a')]['from'],'messageId':_0x5a279a[_0xfac4('0x5a')][_0xfac4('0x7c')],'body':_0x5a279a['body'][_0xfac4('0x5a')],'SmsAccountId':_0x5bbcc7[_0xfac4('0x4f')]['id'],'SmsInteractionId':_0x4f6af9['id'],'direction':'in','ContactId':_0x4f6af9[_0xfac4('0x9f')],'AttachmentId':_0x5a279a[_0xfac4('0x5a')][_0xfac4('0xa0')]});})[_0xfac4('0x1d')](function(_0x2bad42){_0x5a279a['message']=_0x2bad42;if(_0x5a279a[_0xfac4('0x9b')][_0xfac4('0xa1')]){return db[_0xfac4('0xa2')][_0xfac4('0x51')]({'attributes':['id',_0xfac4('0x35')],'where':{'id':_0x5a279a['interaction']['UserId']}})[_0xfac4('0x1d')](function(_0x1342be){if(_0x1342be){_0x5a279a[_0xfac4('0x9d')]['unshift']({'id':0x0,'priority':0x0,'app':_0xfac4('0xa3'),'appdata':_0x1342be['name']+','+(_0x5a279a['account'][_0xfac4('0xa4')]||0xa),'interval':_0xfac4('0xa5')});}return respondWithRpcPromise(_0xfac4('0xa6'),'startRouting',_0x5a279a);});}return respondWithRpcPromise(_0xfac4('0xa6'),'startRouting',_0x5a279a);})[_0xfac4('0x1d')](function(_0xa023af){if(_0xa023af){var _0x505e50=0xc8;var _0xdb1d20=_0xfac4('0xa7');logger[_0xfac4('0xa8')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xdb1d20,_0x505e50,_0xfac4('0xa9'));logger[_0xfac4('0x1f')](_0xfac4('0xaa'),_0xdb1d20,_0x505e50,'entity\x20found',JSON[_0xfac4('0xab')](_0xa023af));if(_0x5a279a[_0xfac4('0x6e')][_0xfac4('0x49')]===_0xfac4('0x7a')){return _0x3e1628['status'](_0x505e50)[_0xfac4('0x2c')](_0xfac4('0xac'),_0xfac4('0xad'))[_0xfac4('0x36')](_0xfac4('0xae'));}else{return _0x3e1628['status'](_0x505e50)['json'](_0xa023af);}}})[_0xfac4('0x52')](handleError(_0x3e1628,null));};exports[_0xfac4('0xaf')]=function(_0x2c7b49,_0x29d505,_0x233384){return db[_0xfac4('0x3a')][_0xfac4('0x66')]({'where':{'id':_0x2c7b49[_0xfac4('0x4f')]['id']}})[_0xfac4('0x1d')](handleEntityNotFound(_0x29d505,null))[_0xfac4('0x1d')](function(_0x139bb0){if(_0x139bb0){return db[_0xfac4('0xb0')][_0xfac4('0xb1')](function(_0x1be151){return db['SmsApplication'][_0xfac4('0x31')]({'where':{'SmsAccountId':_0x2c7b49[_0xfac4('0x4f')]['id']},'transaction':_0x1be151})[_0xfac4('0x1d')](function(_0x26aa0d){var _0x3ee838=_['map'](_0x2c7b49['body'],function(_0x3ae820){_0x3ae820[_0xfac4('0x61')]=_0x2c7b49[_0xfac4('0x4f')]['id'];return _0x3ae820;});return db['SmsApplication'][_0xfac4('0xb2')](_0x3ee838,{'transaction':_0x1be151});});})[_0xfac4('0x1d')](function(){return db[_0xfac4('0x6d')][_0xfac4('0xb3')]({'where':{'SmsAccountId':_0x2c7b49[_0xfac4('0x4f')]['id']},'order':'priority'});});}})['then'](respondWithResult(_0x29d505,null))[_0xfac4('0x52')](handleError(_0x29d505,null));};exports[_0xfac4('0xb4')]=function(_0x180c83,_0x5ed148,_0x216103){var _0x49ae9a={};var _0x1a0f7c={};var _0x20378a;var _0x94577d;return db['SmsAccount']['findOne']({'where':{'id':_0x180c83[_0xfac4('0x4f')]['id']}})[_0xfac4('0x1d')](handleEntityNotFound(_0x5ed148,null))[_0xfac4('0x1d')](function(_0x59fcba){if(_0x59fcba){_0x20378a=_0x59fcba;_0x1a0f7c['model']=_[_0xfac4('0x3e')](db[_0xfac4('0x6d')]['rawAttributes']);_0x1a0f7c[_0xfac4('0x3f')]=_[_0xfac4('0x3e')](_0x180c83[_0xfac4('0x3f')]);_0x1a0f7c[_0xfac4('0x47')]=_['intersection'](_0x1a0f7c[_0xfac4('0x3d')],_0x1a0f7c[_0xfac4('0x3f')]);_0x49ae9a[_0xfac4('0x40')]=_['intersection'](_0x1a0f7c[_0xfac4('0x3d')],qs['fields'](_0x180c83[_0xfac4('0x3f')]['fields']));_0x49ae9a['attributes']=_0x49ae9a[_0xfac4('0x40')][_0xfac4('0x68')]?_0x49ae9a['attributes']:_0x1a0f7c[_0xfac4('0x3d')];_0x49ae9a[_0xfac4('0x44')]=qs[_0xfac4('0x45')](_0x180c83[_0xfac4('0x3f')]['sort']);_0x49ae9a['where']=qs[_0xfac4('0x47')](_[_0xfac4('0x69')](_0x180c83[_0xfac4('0x3f')],_0x1a0f7c['filters']));if(_0x180c83[_0xfac4('0x3f')]['filter']){_0x49ae9a[_0xfac4('0x46')]=_[_0xfac4('0x4b')](_0x49ae9a[_0xfac4('0x46')],{'$or':_[_0xfac4('0x39')](_0x49ae9a['attributes'],function(_0x21537b){var _0x1c2aaa={};_0x1c2aaa[_0x21537b]={'$like':'%'+_0x180c83['query']['filter']+'%'};return _0x1c2aaa;})});}_0x49ae9a=_[_0xfac4('0x4b')]({},_0x49ae9a,_0x180c83['options']);return _0x20378a[_0xfac4('0xb4')](_0x49ae9a);}})[_0xfac4('0x1d')](function(_0x434b30){if(_0x434b30){_0x94577d=_0x434b30[_0xfac4('0x68')];if(!_0x180c83['query'][_0xfac4('0x43')](_0xfac4('0x60'))){_0x49ae9a[_0xfac4('0x29')]=qs['limit'](_0x180c83[_0xfac4('0x3f')][_0xfac4('0x29')]);_0x49ae9a[_0xfac4('0x2b')]=qs[_0xfac4('0x2b')](_0x180c83[_0xfac4('0x3f')][_0xfac4('0x2b')]);}return _0x20378a['getApplications'](_0x49ae9a);}})[_0xfac4('0x1d')](function(_0xfaeb3){if(_0xfaeb3){return _0xfaeb3?{'count':_0x94577d,'rows':_0xfaeb3}:null;}})[_0xfac4('0x1d')](respondWithResult(_0x5ed148,null))[_0xfac4('0x52')](handleError(_0x5ed148,null));};exports['getInteractions']=function(_0x573397,_0x1b5161,_0x400f68){var _0x8c2fbe={'raw':![],'where':{}};var _0xea2eb7={};var _0x71040d={'count':0x0,'rows':[]};return db[_0xfac4('0x3a')][_0xfac4('0x66')]({'where':{'id':_0x573397[_0xfac4('0x4f')]['id']}})[_0xfac4('0x1d')](handleEntityNotFound(_0x1b5161,null))[_0xfac4('0x1d')](function(_0xab10b6){if(_0xab10b6){_0xea2eb7[_0xfac4('0x3d')]=_[_0xfac4('0x3e')](db['SmsInteraction'][_0xfac4('0x50')]);_0xea2eb7[_0xfac4('0x3f')]=_['keys'](_0x573397['query']);_0xea2eb7['filters']=_['intersection'](_0xea2eb7[_0xfac4('0x3d')],_0xea2eb7[_0xfac4('0x3f')]);_0x8c2fbe[_0xfac4('0x40')]=_[_0xfac4('0x41')](_0xea2eb7[_0xfac4('0x3d')],qs[_0xfac4('0x42')](_0x573397[_0xfac4('0x3f')][_0xfac4('0x42')]));_0x8c2fbe[_0xfac4('0x40')]=_0x8c2fbe[_0xfac4('0x40')][_0xfac4('0x68')]?_0x8c2fbe[_0xfac4('0x40')]:_0xea2eb7['model'];if(!_0x573397['query'][_0xfac4('0x43')](_0xfac4('0x60'))){_0x8c2fbe[_0xfac4('0x29')]=qs[_0xfac4('0x29')](_0x573397[_0xfac4('0x3f')][_0xfac4('0x29')]);_0x8c2fbe['offset']=qs[_0xfac4('0x2b')](_0x573397['query'][_0xfac4('0x2b')]);}_0x8c2fbe[_0xfac4('0x44')]=qs[_0xfac4('0x45')](_0x573397[_0xfac4('0x3f')][_0xfac4('0x45')]);_0x8c2fbe[_0xfac4('0x46')]=qs[_0xfac4('0x47')](_['pick'](_0x573397[_0xfac4('0x3f')],_0xea2eb7[_0xfac4('0x47')]));_0x8c2fbe[_0xfac4('0x46')][_0xfac4('0x61')]=_0xab10b6['id'];if(_0x573397['query']['filter']){_0x8c2fbe[_0xfac4('0x46')]=_['merge'](_0x8c2fbe[_0xfac4('0x46')],{'$or':_['map'](_0x8c2fbe[_0xfac4('0x40')],function(_0x16d9cc){var _0x40f380={};_0x40f380[_0x16d9cc]={'$like':'%'+_0x573397[_0xfac4('0x3f')][_0xfac4('0x48')]+'%'};return _0x40f380;})});}_0x8c2fbe=_[_0xfac4('0x4b')]({},_0x8c2fbe,_0x573397['options']);return db[_0xfac4('0x99')]['count']({'where':_0x8c2fbe[_0xfac4('0x46')]})['then'](function(_0x4c6eef){_0x71040d['count']=_0x4c6eef;if(_0x573397[_0xfac4('0x3f')]['includeAll']){_0x8c2fbe[_0xfac4('0x4e')]=[{'model':db[_0xfac4('0x71')],'as':_0xfac4('0xb5'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0xfac4('0x35'),_0xfac4('0xb6'),_0xfac4('0xb7')],'required':![]},{'model':db[_0xfac4('0xb8')],'as':_0xfac4('0xb9'),'attributes':['id','name',_0xfac4('0xba')],'where':_0x573397[_0xfac4('0x3f')][_0xfac4('0xbb')]?{'id':_0x573397[_0xfac4('0x3f')][_0xfac4('0xbb')]}:undefined,'required':_0x573397['query']['tag']?!![]:![]}];}return db[_0xfac4('0x99')][_0xfac4('0x6a')](_0x8c2fbe);})[_0xfac4('0x1d')](function(_0x2824ba){_0x71040d[_0xfac4('0x62')]=_0x2824ba;return _0x71040d;});}})[_0xfac4('0x1d')](respondWithFilteredResult(_0x1b5161,_0x8c2fbe))[_0xfac4('0x52')](handleError(_0x1b5161,null));};exports['send']=function(_0x657edd,_0x23168d,_0x33b873){var _0x102f3e,_0x5eb16e,_0x1418ad;if(_[_0xfac4('0x8f')](_0x657edd['body']['body'])||_0x657edd['body'][_0xfac4('0x5a')]===''){throw new db['Sequelize'][(_0xfac4('0x73'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xfac4('0x8f')](_0x657edd[_0xfac4('0x5a')]['to'])){throw new db['Sequelize'][(_0xfac4('0x73'))](_0xfac4('0xbc'));}_0x102f3e=_0x657edd[_0xfac4('0x5a')]['to'];return db[_0xfac4('0x3a')]['find']({'where':{'id':_0x657edd[_0xfac4('0x4f')]['id']},'include':[{'model':db['CmList'],'as':_0xfac4('0xbd'),'include':[{'model':db[_0xfac4('0x71')],'as':'Contacts','where':{'mobile':_0x102f3e},'limit':0x1,'order':[[_0xfac4('0x76'),_0xfac4('0x95')]]}]}]})[_0xfac4('0x1d')](handleEntityNotFound(_0x23168d,null))[_0xfac4('0x1d')](function(_0x552b14){if(_0x552b14&&_0x552b14[_0xfac4('0xbd')]){_0x5eb16e=_0x552b14['get']({'plain':!![]});if(_0x5eb16e[_0xfac4('0xbd')]&&_0x5eb16e['List'][_0xfac4('0x94')][_0xfac4('0x68')]){return _0x5eb16e['List'][_0xfac4('0x94')][0x0];}return db['CmContact']['create'](_['defaults'](_0x657edd['body'],{'firstName':_0x102f3e,'mobile':_0x102f3e,'phone':_0x102f3e,'ListId':_0x5eb16e[_0xfac4('0x78')]}));}})[_0xfac4('0x1d')](handleEntityNotFound(_0x23168d,null))[_0xfac4('0x1d')](function(_0x333ca8){if(_0x333ca8){_0x1418ad=_0x333ca8;return db['SmsInteraction'][_0xfac4('0x51')]({'where':{'ContactId':_0x1418ad['id'],'closed':![],'SmsAccountId':_0x5eb16e['id']}})[_0xfac4('0x1d')](function(_0x540ae4){if(_0x540ae4){return[_0x540ae4,![]];}return db[_0xfac4('0x99')]['create']({'UserId':_0x657edd[_0xfac4('0x56')]['id'],'ContactId':_0x1418ad['id'],'SmsAccountId':_0x5eb16e['id'],'phone':_0x102f3e,'firstMsgDirection':'out','Messages':[_[_0xfac4('0x4b')](_0x657edd[_0xfac4('0x5a')],{'read':![],'body':_0x657edd[_0xfac4('0x5a')]['body'],'phone':_0x102f3e,'SmsAccountId':_0x5eb16e['id'],'UserId':_0x657edd['user']['id'],'ContactId':_0x1418ad['id']})]},{'include':[{'model':db[_0xfac4('0xbe')],'as':_0xfac4('0xbf')}]})['then'](function(_0xc1800c){return[_0xc1800c,!![]];});});}})['spread'](function(_0x35d98c,_0x5ae25c){if(_0x5ae25c){return _0x35d98c;}return db['SmsMessage'][_0xfac4('0x53')](_[_0xfac4('0x4b')](_0x657edd['body'],{'read':![],'body':_0x657edd[_0xfac4('0x5a')]['body'],'phone':_0x102f3e,'SmsAccountId':_0x5eb16e['id'],'SmsInteractionId':_0x35d98c['id'],'UserId':_0x657edd['user']['id'],'ContactId':_0x1418ad['id']}))[_0xfac4('0x1d')](function(_0x480518){_0x35d98c['dataValues'][_0xfac4('0xbf')]=[];_0x35d98c[_0xfac4('0xc0')][_0xfac4('0xbf')][_0xfac4('0xc1')](_0x480518[_0xfac4('0xc0')]);return _0x35d98c;});})[_0xfac4('0x1d')](respondWithResult(_0x23168d,null))['catch'](handleError(_0x23168d,null));};exports[_0xfac4('0x26')]=function(_0x126dae,_0x5dedfd,_0x2531a5){if(_0x126dae[_0xfac4('0x5a')]['id']){delete _0x126dae[_0xfac4('0x5a')]['id'];}var _0x1664ab,_0x239d46,_0x454f81;return db['SmsAccount']['find']({'where':{'id':_0x126dae[_0xfac4('0x4f')]['id']}})[_0xfac4('0x1d')](handleEntityNotFound(_0x5dedfd,null))[_0xfac4('0x1d')](function(_0x1e0559){if(_0x1e0559){_0x454f81=_0x1e0559;logger[_0xfac4('0x1f')](_0xfac4('0x20'),_0xfac4('0x26'),_0xfac4('0xc2'),_0x1e0559[_0xfac4('0x49')],util[_0xfac4('0xc3')](_0x126dae[_0xfac4('0x5a')],{'showHidden':![],'depth':null}));switch(_0x1e0559[_0xfac4('0x49')]){case _0xfac4('0x7e'):if(_0x126dae[_0xfac4('0x5a')][_0xfac4('0xc4')]&&_0x126dae['body'][_0xfac4('0x26')]){_0x239d46=_0x126dae[_0xfac4('0x5a')][_0xfac4('0x26')];return db[_0xfac4('0xbe')][_0xfac4('0x51')]({'where':{'messageId':_0x126dae[_0xfac4('0x5a')][_0xfac4('0xc4')]}});}break;case _0xfac4('0xc5'):if(_0x126dae[_0xfac4('0x5a')][_0xfac4('0xc6')]&&_0x126dae[_0xfac4('0x5a')][_0xfac4('0xc7')]){_0x239d46=_0x126dae[_0xfac4('0x5a')]['statusInt'];return db[_0xfac4('0xbe')][_0xfac4('0x51')]({'where':{'messageId':_0x126dae['body'][_0xfac4('0xc6')]}});}break;case _0xfac4('0xc8'):if(_0x126dae[_0xfac4('0x5a')][_0xfac4('0xc9')]&&_0x126dae[_0xfac4('0x5a')]['status_code']){_0x239d46=_0x126dae[_0xfac4('0x5a')]['status_code'];return db[_0xfac4('0xbe')]['find']({'where':{'messageId':_0x126dae[_0xfac4('0x5a')][_0xfac4('0xc9')]}});}break;case'infobip':var _0x278791=_0x126dae['body'][_0xfac4('0x85')][0x0];if(_0x278791[_0xfac4('0x7c')]&&_0x278791[_0xfac4('0x26')][_0xfac4('0xca')]===_0xfac4('0xcb')){_0x239d46=_0x278791['status'][_0xfac4('0xca')];return db[_0xfac4('0xbe')]['find']({'where':{'messageId':_0x278791[_0xfac4('0x7c')]}});}break;case _0xfac4('0x89'):if(_0x126dae[_0xfac4('0x5a')]['messageId']&&_0x126dae[_0xfac4('0x5a')][_0xfac4('0x26')]){_0x239d46=_0x126dae['body'][_0xfac4('0x26')];return db[_0xfac4('0xbe')]['find']({'where':{'messageId':_0x126dae[_0xfac4('0x5a')]['messageId']}});}break;case'bandwidth':if(_0x126dae['body'][0x0]['message']['id']){_0x239d46=_0x126dae[_0xfac4('0x5a')][0x0][_0xfac4('0x49')];return db[_0xfac4('0xbe')][_0xfac4('0x51')]({'where':{'messageId':_0x126dae[_0xfac4('0x5a')][0x0]['message']['id']}});}break;case'intelepeer':if(_0x126dae[_0xfac4('0x5a')][_0xfac4('0xcc')]&&_0x126dae[_0xfac4('0x5a')][_0xfac4('0x26')]){_0x239d46=_0x126dae[_0xfac4('0x5a')][_0xfac4('0x26')];return db['SmsMessage'][_0xfac4('0x51')]({'where':{'messageId':_0x126dae[_0xfac4('0x5a')][_0xfac4('0xcc')]}});}break;}}})[_0xfac4('0x1d')](handleEntityNotFound(_0x5dedfd,null))['then'](function(_0x5f15e1){if(_0x5f15e1){_0x1664ab=_0x5f15e1;switch(_0x454f81[_0xfac4('0x49')]){case _0xfac4('0x7e'):if(_0x239d46===_0xfac4('0xcb')){return _0x1664ab[_0xfac4('0xcd')]({'read':!![]});}else{logger[_0xfac4('0x21')](_0xfac4('0x20'),_0xfac4('0x26'),_0xfac4('0x7e'),util[_0xfac4('0xc3')](_0x126dae['body'],{'showHidden':![],'depth':null}));}break;case _0xfac4('0xc5'):if(_0x239d46==='1'){return _0x1664ab[_0xfac4('0xcd')]({'read':!![]});}else{logger[_0xfac4('0x21')](_0xfac4('0x20'),_0xfac4('0x26'),_0xfac4('0x7e'),util[_0xfac4('0xc3')](_0x126dae[_0xfac4('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xfac4('0xc8'):if(!_0x126dae[_0xfac4('0x5a')][_0xfac4('0xce')]&&_0x239d46>=0xc8&&_0x239d46<=0xce){return _0x1664ab['update']({'read':!![]});}else{logger[_0xfac4('0x21')](_0xfac4('0x20'),'status',_0xfac4('0xc8'),util['inspect'](_0x126dae[_0xfac4('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xfac4('0x84'):var _0x44d5bb=_0x126dae[_0xfac4('0x5a')]['results'][0x0];if(_0x44d5bb[_0xfac4('0x26')][_0xfac4('0xca')]===_0xfac4('0xcb')){return _0x1664ab[_0xfac4('0xcd')]({'read':!![]});}else{logger['error'](_0xfac4('0x20'),_0xfac4('0x26'),_0xfac4('0x84'),util[_0xfac4('0xc3')](_0x126dae[_0xfac4('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xfac4('0x89'):if(_0x239d46==_0xfac4('0xcf')||_0x239d46==_0xfac4('0xd0')){return _0x1664ab[_0xfac4('0xcd')]({'read':!![]});}else{logger[_0xfac4('0x21')](_0xfac4('0x20'),_0xfac4('0x26'),_0xfac4('0x89'),util[_0xfac4('0xc3')](_0x126dae[_0xfac4('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xfac4('0x8b'):if(_0x239d46=='message-delivered'){return _0x1664ab[_0xfac4('0xcd')]({'read':!![]});}else{logger[_0xfac4('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfac4('0x26'),_0xfac4('0x8b'),util[_0xfac4('0xc3')](_0x126dae['body'],{'showHidden':![],'depth':null}));}break;case _0xfac4('0x8c'):if(_0x239d46===_0xfac4('0xd1')||_0x239d46===_0xfac4('0xd2')){return _0x1664ab[_0xfac4('0xcd')]({'read':!![]});}else{logger[_0xfac4('0x21')](_0xfac4('0x20'),_0xfac4('0x26'),_0xfac4('0x8c'),util[_0xfac4('0xc3')](_0x126dae[_0xfac4('0x5a')],{'showHidden':![],'depth':null}));}break;}return _0x1664ab;}})['then'](respondWithResult(_0x5dedfd,null))[_0xfac4('0x52')](handleError(_0x5dedfd,null));};exports[_0xfac4('0xd3')]=function(_0x850ff3,_0x1d6f42,_0x505107){var _0x16db97,_0xa9a85f,_0x2ea88f;return db[_0xfac4('0x3a')][_0xfac4('0x51')]({'where':{'id':_0x850ff3[_0xfac4('0x4f')]['id']}})[_0xfac4('0x1d')](handleEntityNotFound(_0x1d6f42,null))[_0xfac4('0x1d')](function(_0x3af87c){if(_0x3af87c){_0x2ea88f=_0x3af87c;logger[_0xfac4('0x1f')](_0xfac4('0x20'),_0xfac4('0x26'),_0xfac4('0xc2'),_0x3af87c['type'],util[_0xfac4('0xc3')](_0x850ff3['query'],{'showHidden':![],'depth':null}));switch(_0x3af87c['type']){case _0xfac4('0x86'):if(_0x850ff3[_0xfac4('0x3f')][_0xfac4('0xd4')]&&_0x850ff3[_0xfac4('0x3f')][_0xfac4('0xd5')]){_0xa9a85f=_0x850ff3[_0xfac4('0x3f')][_0xfac4('0xd5')];return db[_0xfac4('0xbe')]['find']({'where':{'messageId':_0x850ff3[_0xfac4('0x3f')][_0xfac4('0xd4')]}});}break;}}})[_0xfac4('0x1d')](handleEntityNotFound(_0x1d6f42,null))[_0xfac4('0x1d')](function(_0x16c78b){if(_0x16c78b){_0x16db97=_0x16c78b;switch(_0x2ea88f[_0xfac4('0x49')]){case _0xfac4('0x86'):if(_0xa9a85f==='2'||_0xa9a85f==='6'){return _0x16db97[_0xfac4('0xcd')]({'read':!![]});}else{logger['error'](_0xfac4('0x20'),_0xfac4('0x26'),_0xfac4('0x86'),util[_0xfac4('0xc3')](_0x850ff3[_0xfac4('0x3f')],{'showHidden':![],'depth':null}));};break;}return _0x16db97;}})[_0xfac4('0x1d')](respondWithResult(_0x1d6f42,null))[_0xfac4('0x52')](handleError(_0x1d6f42,null));};exports['addAgents']=function(_0x440f30,_0x375c25,_0x653354){return db['SmsAccount'][_0xfac4('0x51')]({'where':{'id':_0x440f30[_0xfac4('0x4f')]['id']}})['then'](handleEntityNotFound(_0x375c25,null))[_0xfac4('0x1d')](function(_0x388449){if(_0x388449){return _0x388449['addAgents'](_0x440f30[_0xfac4('0x5a')][_0xfac4('0x64')],_[_0xfac4('0x97')](_0x440f30['body'],[_0xfac4('0x64'),'id'])||{})['spread'](function(_0x22a12a){for(var _0x2cfd36=0x0;_0x2cfd36<_0x440f30['body'][_0xfac4('0x64')][_0xfac4('0x68')];_0x2cfd36+=0x1){socket[_0xfac4('0xd6')](_0xfac4('0xd7'),{'UserId':Number(_0x440f30[_0xfac4('0x5a')][_0xfac4('0x64')][_0x2cfd36]),'SmsAccountId':Number(_0x440f30[_0xfac4('0x4f')]['id'])});}return _0x22a12a;});}})[_0xfac4('0x1d')](respondWithResult(_0x375c25,null))[_0xfac4('0x52')](handleError(_0x375c25,null));};exports['removeAgents']=function(_0xe87ffd,_0x590da9,_0x310539){return db[_0xfac4('0x3a')][_0xfac4('0x51')]({'where':{'id':_0xe87ffd[_0xfac4('0x4f')]['id']}})[_0xfac4('0x1d')](handleEntityNotFound(_0x590da9,null))[_0xfac4('0x1d')](function(_0x20cf1d){if(_0x20cf1d){return _0x20cf1d['removeAgents'](_0xe87ffd[_0xfac4('0x3f')][_0xfac4('0x64')])[_0xfac4('0x1d')](function(){if(_[_0xfac4('0xd8')](_0xe87ffd[_0xfac4('0x3f')][_0xfac4('0x64')])){for(var _0x2c72bd=0x0;_0x2c72bd<_0xe87ffd[_0xfac4('0x3f')][_0xfac4('0x64')][_0xfac4('0x68')];_0x2c72bd+=0x1){socket[_0xfac4('0xd6')](_0xfac4('0xd9'),{'UserId':Number(_0xe87ffd[_0xfac4('0x3f')][_0xfac4('0x64')][_0x2c72bd]),'SmsAccountId':Number(_0xe87ffd[_0xfac4('0x4f')]['id'])});}}else{socket[_0xfac4('0xd6')](_0xfac4('0xd9'),{'UserId':Number(_0xe87ffd[_0xfac4('0x3f')][_0xfac4('0x64')]),'SmsAccountId':Number(_0xe87ffd[_0xfac4('0x4f')]['id'])});}});}})[_0xfac4('0x1d')](respondWithStatusCode(_0x590da9,null))[_0xfac4('0x52')](handleError(_0x590da9,null));};exports['getAgents']=function(_0x3bdf75,_0x176278,_0x2bd4bf){var _0x3d211f={};var _0x26cffb={};var _0xe0bd53;var _0x2a850d;return db[_0xfac4('0x3a')][_0xfac4('0x66')]({'where':{'id':_0x3bdf75[_0xfac4('0x4f')]['id']}})['then'](handleEntityNotFound(_0x176278,null))['then'](function(_0x37e83e){if(_0x37e83e){_0xe0bd53=_0x37e83e;_0x26cffb[_0xfac4('0x3d')]=_[_0xfac4('0x3e')](db[_0xfac4('0xa2')][_0xfac4('0x50')]);_0x26cffb[_0xfac4('0x3f')]=_[_0xfac4('0x3e')](_0x3bdf75[_0xfac4('0x3f')]);_0x26cffb[_0xfac4('0x47')]=_['intersection'](_0x26cffb[_0xfac4('0x3d')],_0x26cffb[_0xfac4('0x3f')]);_0x3d211f[_0xfac4('0x40')]=_[_0xfac4('0x41')](_0x26cffb[_0xfac4('0x3d')],qs[_0xfac4('0x42')](_0x3bdf75[_0xfac4('0x3f')][_0xfac4('0x42')]));_0x3d211f[_0xfac4('0x40')]=_0x3d211f['attributes'][_0xfac4('0x68')]?_0x3d211f[_0xfac4('0x40')]:_0x26cffb['model'];_0x3d211f[_0xfac4('0x44')]=qs[_0xfac4('0x45')](_0x3bdf75['query'][_0xfac4('0x45')]);_0x3d211f[_0xfac4('0x46')]=qs[_0xfac4('0x47')](_['pick'](_0x3bdf75[_0xfac4('0x3f')],_0x26cffb[_0xfac4('0x47')]));if(_0x3bdf75[_0xfac4('0x3f')][_0xfac4('0x48')]){_0x3d211f['where']=_['merge'](_0x3d211f[_0xfac4('0x46')],{'$or':_['map'](_0x3d211f[_0xfac4('0x40')],function(_0x23b703){var _0x1e78ed={};_0x1e78ed[_0x23b703]={'$like':'%'+_0x3bdf75[_0xfac4('0x3f')][_0xfac4('0x48')]+'%'};return _0x1e78ed;})});}_0x3d211f=_['merge']({},_0x3d211f,_0x3bdf75[_0xfac4('0x4c')]);return _0xe0bd53[_0xfac4('0xda')](_0x3d211f);}})[_0xfac4('0x1d')](function(_0x4dad90){if(_0x4dad90){_0x2a850d=_0x4dad90[_0xfac4('0x68')];if(!_0x3bdf75[_0xfac4('0x3f')][_0xfac4('0x43')](_0xfac4('0x60'))){_0x3d211f[_0xfac4('0x29')]=qs[_0xfac4('0x29')](_0x3bdf75[_0xfac4('0x3f')][_0xfac4('0x29')]);_0x3d211f['offset']=qs[_0xfac4('0x2b')](_0x3bdf75[_0xfac4('0x3f')]['offset']);}return _0xe0bd53['getAgents'](_0x3d211f);}})[_0xfac4('0x1d')](function(_0x2b9cf0){if(_0x2b9cf0){return _0x2b9cf0?{'count':_0x2a850d,'rows':_0x2b9cf0}:null;}})[_0xfac4('0x1d')](respondWithResult(_0x176278,null))[_0xfac4('0x52')](handleError(_0x176278,null));};
\ No newline at end of file
+var _0x971d=['Disposition','getDispositions','findOne','nolimit','SmsAccountId','removeDispositions','ids','getAnswers','CannedAnswer','removeAnswers','notify','sms','SmsApplication','Applications','account','applications','orderBy','priority','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','Body','messageId','MessageSid','skebby','from','sender','text','connectel','clicksend','message_id','From','Text','infobip','results','csc','originatingAddress','clickatell','fromNumber','replyMessageId','bandwidth','refid','isNil','Sequelize','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','CmContact','DESC','list','omit','Contacts','defaults','SmsInteraction','spread','interaction','created','autoclose','close','unmanaged','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','twilio','Content-Type','text/xml','send','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','fullname','internal','Tag','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','Messages','dataValues','received\x20delivery\x20report\x20from','skebby_dispatch_id','requestid','statusInt','groupName','DELIVERED','intelepeer','redif','inspect','error_code','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./smsAccount.socket','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','offset','undefined','count','limit','set','json','apply','save','update','destroy','get','SmsAccounts','UserProfileResource','end','name','Pause','mandatoryDispositionPause','SmsAccount','rawAttributes','type','key','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x971d,0x15b));var _0xd971=function(_0x38668a,_0x3aaad9){_0x38668a=_0x38668a-0x0;var _0x48c1e4=_0x971d[_0x38668a];return _0x48c1e4;};'use strict';var emlformat=require(_0xd971('0x0'));var rimraf=require(_0xd971('0x1'));var zipdir=require(_0xd971('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd971('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd971('0x4'));var util=require(_0xd971('0x5'));var path=require(_0xd971('0x6'));var sox=require('sox');var csv=require(_0xd971('0x7'));var ejs=require(_0xd971('0x8'));var fs=require('fs');var fs_extra=require(_0xd971('0x9'));var _=require(_0xd971('0xa'));var squel=require('squel');var crypto=require(_0xd971('0xb'));var jsforce=require(_0xd971('0xc'));var deskjs=require(_0xd971('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd971('0xe'));var Papa=require(_0xd971('0xf'));var Redis=require(_0xd971('0x10'));var authService=require(_0xd971('0x11'));var qs=require(_0xd971('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd971('0x13'));var logger=require(_0xd971('0x14'))(_0xd971('0x15'));var utils=require(_0xd971('0x16'));var config=require(_0xd971('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xd971('0x18'))['db'];config['redis']=_['defaults'](config[_0xd971('0x19')],{'host':_0xd971('0x1a'),'port':0x18eb});var socket=require(_0xd971('0x1b'))(new Redis(config[_0xd971('0x19')]));require(_0xd971('0x1c'))['register'](socket);var jayson=require(_0xd971('0x1d'));var client=jayson[_0xd971('0x1e')][_0xd971('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x33e43b,_0x1f5a17,_0x397374,_0x541030){return new BPromise(function(_0x4af7c3,_0x156ebd){var _0x26779d=_0x541030||client;return _0x26779d[_0xd971('0x20')](_0x33e43b,_0x397374)[_0xd971('0x21')](function(_0x3785ad){logger[_0xd971('0x22')](_0xd971('0x23'),_0x1f5a17,_0xd971('0x24'));logger[_0xd971('0x25')](_0xd971('0x26'),_0x1f5a17,_0xd971('0x24'),JSON[_0xd971('0x27')](_0x3785ad));if(_0x3785ad[_0xd971('0x28')]){if(_0x3785ad['error'][_0xd971('0x29')]===0x1f4){logger[_0xd971('0x28')](_0xd971('0x23'),_0x1f5a17,_0x3785ad['error'][_0xd971('0x2a')]);return _0x156ebd(_0x3785ad['error'][_0xd971('0x2a')]);}logger[_0xd971('0x28')](_0xd971('0x23'),_0x1f5a17,_0x3785ad['error'][_0xd971('0x2a')]);return _0x4af7c3(_0x3785ad[_0xd971('0x28')][_0xd971('0x2a')]);}else{logger[_0xd971('0x22')](_0xd971('0x23'),_0x1f5a17,_0xd971('0x24'));_0x4af7c3(_0x3785ad['result'][_0xd971('0x2a')]);}})[_0xd971('0x2b')](function(_0x27adef){logger['error'](_0xd971('0x23'),_0x1f5a17,_0x27adef);_0x156ebd(_0x27adef);});});}function respondWithStatusCode(_0xbe6820,_0x208e83){_0x208e83=_0x208e83||0xcc;return function(_0x205844){if(_0x205844){return _0xbe6820[_0xd971('0x2c')](_0x208e83);}return _0xbe6820[_0xd971('0x2d')](_0x208e83)['end']();};}function respondWithResult(_0x59fba5,_0x31dd2a){_0x31dd2a=_0x31dd2a||0xc8;return function(_0x3cf349){if(_0x3cf349){return _0x59fba5[_0xd971('0x2d')](_0x31dd2a)['json'](_0x3cf349);}};}function respondWithFilteredResult(_0xfa6441,_0x59cc49){return function(_0x468c71){if(_0x468c71){var _0x370c2e=typeof _0x59cc49[_0xd971('0x2e')]===_0xd971('0x2f')&&typeof _0x59cc49['limit']==='undefined';var _0x2af45d=_0x468c71[_0xd971('0x30')];var _0x406e6=_0x370c2e?0x0:_0x59cc49[_0xd971('0x2e')];var _0xd1f0f3=_0x370c2e?_0x468c71['count']:_0x59cc49['offset']+_0x59cc49[_0xd971('0x31')];var _0x30b6d8;if(_0xd1f0f3>=_0x2af45d){_0xd1f0f3=_0x2af45d;_0x30b6d8=0xc8;}else{_0x30b6d8=0xce;}_0xfa6441[_0xd971('0x2d')](_0x30b6d8);return _0xfa6441[_0xd971('0x32')]('Content-Range',_0x406e6+'-'+_0xd1f0f3+'/'+_0x2af45d)[_0xd971('0x33')](_0x468c71);}return null;};}function patchUpdates(_0x1404b5){return function(_0x256f50){try{jsonpatch[_0xd971('0x34')](_0x256f50,_0x1404b5,!![]);}catch(_0x4a4611){return BPromise['reject'](_0x4a4611);}return _0x256f50[_0xd971('0x35')]();};}function saveUpdates(_0x492e7b,_0x1b69d0){return function(_0x238381){if(_0x238381){return _0x238381[_0xd971('0x36')](_0x492e7b)['then'](function(_0x4efe42){return _0x4efe42;});}return null;};}function removeEntity(_0x918a78,_0x5b7d9e){return function(_0x5cc301){if(_0x5cc301){return _0x5cc301[_0xd971('0x37')]()['then'](function(){var _0x3698e0=_0x5cc301[_0xd971('0x38')]({'plain':!![]});var _0x13fbb2=_0xd971('0x39');return db[_0xd971('0x3a')][_0xd971('0x37')]({'where':{'type':_0x13fbb2,'resourceId':_0x3698e0['id']}})[_0xd971('0x21')](function(){return _0x5cc301;});})['then'](function(){_0x918a78[_0xd971('0x2d')](0xcc)[_0xd971('0x3b')]();});}};}function handleEntityNotFound(_0xaaa89,_0x3d3768){return function(_0x1401eb){if(!_0x1401eb){_0xaaa89[_0xd971('0x2c')](0x194);}return _0x1401eb;};}function handleError(_0x52dae6,_0x33f1a9){_0x33f1a9=_0x33f1a9||0x1f4;return function(_0x28d05d){logger['error'](_0x28d05d['stack']);if(_0x28d05d[_0xd971('0x3c')]){delete _0x28d05d[_0xd971('0x3c')];}_0x52dae6['status'](_0x33f1a9)['send'](_0x28d05d);};}exports['index']=function(_0x9486a9,_0x3a923d){var _0x346470={'include':[{'model':db[_0xd971('0x3d')],'as':_0xd971('0x3e')}]},_0x575c0d={},_0x437ee3={'count':0x0,'rows':[]};var _0x232d6f=_['map'](db[_0xd971('0x3f')][_0xd971('0x40')],function(_0x176ed5){return{'name':_0x176ed5['fieldName'],'type':_0x176ed5[_0xd971('0x41')][_0xd971('0x42')]};});_0x575c0d['model']=_[_0xd971('0x43')](_0x232d6f,_0xd971('0x3c'));_0x575c0d[_0xd971('0x44')]=_[_0xd971('0x45')](_0x9486a9['query']);_0x575c0d[_0xd971('0x46')]=_[_0xd971('0x47')](_0x575c0d[_0xd971('0x48')],_0x575c0d[_0xd971('0x44')]);_0x346470['attributes']=_[_0xd971('0x47')](_0x575c0d[_0xd971('0x48')],qs[_0xd971('0x49')](_0x9486a9[_0xd971('0x44')][_0xd971('0x49')]));_0x346470[_0xd971('0x4a')]=_0x346470[_0xd971('0x4a')][_0xd971('0x4b')]?_0x346470[_0xd971('0x4a')]:_0x575c0d[_0xd971('0x48')];if(!_0x9486a9['query'][_0xd971('0x4c')]('nolimit')){_0x346470[_0xd971('0x31')]=qs[_0xd971('0x31')](_0x9486a9[_0xd971('0x44')][_0xd971('0x31')]);_0x346470[_0xd971('0x2e')]=qs['offset'](_0x9486a9[_0xd971('0x44')][_0xd971('0x2e')]);}_0x346470[_0xd971('0x4d')]=qs[_0xd971('0x4e')](_0x9486a9[_0xd971('0x44')][_0xd971('0x4e')]);_0x346470['where']=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x9486a9[_0xd971('0x44')],_0x575c0d['filters']),_0x232d6f);if(_0x9486a9[_0xd971('0x44')][_0xd971('0x50')]){_0x346470[_0xd971('0x51')]=_[_0xd971('0x52')](_0x346470[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x232d6f,function(_0xe2c17d){if(_0xe2c17d[_0xd971('0x41')]!=='VIRTUAL'){var _0xf025fb={};_0xf025fb[_0xe2c17d[_0xd971('0x3c')]]={'$like':'%'+_0x9486a9['query'][_0xd971('0x50')]+'%'};return _0xf025fb;}})});}_0x346470=_['merge']({},_0x346470,_0x9486a9[_0xd971('0x53')]);var _0x462daf={'where':_0x346470[_0xd971('0x51')]};return db[_0xd971('0x3f')]['count'](_0x462daf)[_0xd971('0x21')](function(_0x1ba018){_0x437ee3[_0xd971('0x30')]=_0x1ba018;if(_0x9486a9['query'][_0xd971('0x54')]){_0x346470[_0xd971('0x55')]=[{'all':!![]}];}return db[_0xd971('0x3f')][_0xd971('0x56')](_0x346470);})[_0xd971('0x21')](function(_0x12c151){_0x437ee3[_0xd971('0x57')]=_0x12c151;return _0x437ee3;})['then'](respondWithFilteredResult(_0x3a923d,_0x346470))[_0xd971('0x2b')](handleError(_0x3a923d,null));};exports['show']=function(_0x3e9810,_0x455a97){var _0x350d1a={'raw':![],'where':{'id':_0x3e9810[_0xd971('0x58')]['id']},'include':[{'model':db[_0xd971('0x3d')],'as':_0xd971('0x3e')}]},_0x190c2b={};_0x190c2b[_0xd971('0x48')]=_[_0xd971('0x45')](db['SmsAccount'][_0xd971('0x40')]);_0x190c2b[_0xd971('0x44')]=_[_0xd971('0x45')](_0x3e9810[_0xd971('0x44')]);_0x190c2b['filters']=_[_0xd971('0x47')](_0x190c2b[_0xd971('0x48')],_0x190c2b[_0xd971('0x44')]);_0x350d1a[_0xd971('0x4a')]=_[_0xd971('0x47')](_0x190c2b[_0xd971('0x48')],qs[_0xd971('0x49')](_0x3e9810[_0xd971('0x44')]['fields']));_0x350d1a[_0xd971('0x4a')]=_0x350d1a[_0xd971('0x4a')]['length']?_0x350d1a[_0xd971('0x4a')]:_0x190c2b[_0xd971('0x48')];if(_0x3e9810[_0xd971('0x44')][_0xd971('0x54')]){_0x350d1a[_0xd971('0x55')]=[{'all':!![]}];}_0x350d1a=_[_0xd971('0x52')]({},_0x350d1a,_0x3e9810['options']);return db[_0xd971('0x3f')][_0xd971('0x59')](_0x350d1a)[_0xd971('0x21')](handleEntityNotFound(_0x455a97,null))[_0xd971('0x21')](respondWithResult(_0x455a97,null))[_0xd971('0x2b')](handleError(_0x455a97,null));};exports[_0xd971('0x5a')]=function(_0x59ca5e,_0x1df62e){return db[_0xd971('0x3f')][_0xd971('0x5a')](_0x59ca5e[_0xd971('0x5b')],{})[_0xd971('0x21')](function(_0x5575dc){var _0x1064f0=_0x59ca5e['user'][_0xd971('0x38')]({'plain':!![]});if(!_0x1064f0)throw new Error(_0xd971('0x5c'));if(_0x1064f0[_0xd971('0x5d')]===_0xd971('0x5e')){var _0x39fd54=_0x5575dc['get']({'plain':!![]});var _0x1b8aef=_0xd971('0x39');return db[_0xd971('0x5f')][_0xd971('0x59')]({'where':{'name':_0x1b8aef,'userProfileId':_0x1064f0[_0xd971('0x60')]},'raw':!![]})[_0xd971('0x21')](function(_0x21d269){if(_0x21d269&&_0x21d269[_0xd971('0x61')]===0x0){return db[_0xd971('0x3a')][_0xd971('0x5a')]({'name':_0x39fd54[_0xd971('0x3c')],'resourceId':_0x39fd54['id'],'type':_0x21d269[_0xd971('0x3c')],'sectionId':_0x21d269['id']},{})[_0xd971('0x21')](function(){return _0x5575dc;});}else{return _0x5575dc;}})[_0xd971('0x2b')](function(_0x535bb8){logger[_0xd971('0x28')](_0xd971('0x62'),_0x535bb8);throw _0x535bb8;});}return _0x5575dc;})[_0xd971('0x21')](respondWithResult(_0x1df62e,0xc9))[_0xd971('0x2b')](handleError(_0x1df62e,null));};exports[_0xd971('0x36')]=function(_0x22c9ce,_0x458e0e){if(_0x22c9ce[_0xd971('0x5b')]['id']){delete _0x22c9ce[_0xd971('0x5b')]['id'];}return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x22c9ce[_0xd971('0x58')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0xd971('0x21')](handleEntityNotFound(_0x458e0e,null))[_0xd971('0x21')](saveUpdates(_0x22c9ce[_0xd971('0x5b')],null))[_0xd971('0x21')](respondWithResult(_0x458e0e,null))[_0xd971('0x2b')](handleError(_0x458e0e,null));};exports['destroy']=function(_0x256348,_0x18a71e){return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x256348[_0xd971('0x58')]['id']}})['then'](handleEntityNotFound(_0x18a71e,null))[_0xd971('0x21')](removeEntity(_0x18a71e,null))['catch'](handleError(_0x18a71e,null));};exports['describe']=function(_0x30c7b6,_0x36c45a){return db[_0xd971('0x3f')][_0xd971('0x63')]()[_0xd971('0x21')](respondWithResult(_0x36c45a,null))[_0xd971('0x2b')](handleError(_0x36c45a,null));};exports[_0xd971('0x64')]=function(_0x3d2054,_0x5f5b7f,_0x4a0323){if(_0x3d2054['body']['id']){delete _0x3d2054[_0xd971('0x5b')]['id'];}return db[_0xd971('0x3f')]['find']({'where':{'id':_0x3d2054[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x5f5b7f,null))[_0xd971('0x21')](function(_0x45870b){if(_0x45870b){_0x3d2054[_0xd971('0x5b')]['SmsAccountId']=_0x45870b['id'];return db[_0xd971('0x65')][_0xd971('0x5a')](_0x3d2054[_0xd971('0x5b')]);}})[_0xd971('0x21')](respondWithResult(_0x5f5b7f,null))[_0xd971('0x2b')](handleError(_0x5f5b7f,null));};exports[_0xd971('0x66')]=function(_0x2acd0c,_0x24f6e7,_0x4ab00e){var _0x42fe33={'raw':![],'where':{}};var _0x2456b0={};var _0x4e9cda={'count':0x0,'rows':[]};return db[_0xd971('0x3f')][_0xd971('0x67')]({'where':{'id':_0x2acd0c['params']['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x24f6e7,null))[_0xd971('0x21')](function(_0x4cdb02){if(_0x4cdb02){_0x2456b0[_0xd971('0x48')]=_['keys'](db['Disposition']['rawAttributes']);_0x2456b0['query']=_['keys'](_0x2acd0c[_0xd971('0x44')]);_0x2456b0[_0xd971('0x46')]=_[_0xd971('0x47')](_0x2456b0[_0xd971('0x48')],_0x2456b0[_0xd971('0x44')]);_0x42fe33[_0xd971('0x4a')]=_[_0xd971('0x47')](_0x2456b0['model'],qs[_0xd971('0x49')](_0x2acd0c[_0xd971('0x44')][_0xd971('0x49')]));_0x42fe33[_0xd971('0x4a')]=_0x42fe33[_0xd971('0x4a')]['length']?_0x42fe33[_0xd971('0x4a')]:_0x2456b0[_0xd971('0x48')];if(!_0x2acd0c[_0xd971('0x44')][_0xd971('0x4c')](_0xd971('0x68'))){_0x42fe33[_0xd971('0x31')]=qs[_0xd971('0x31')](_0x2acd0c[_0xd971('0x44')][_0xd971('0x31')]);_0x42fe33[_0xd971('0x2e')]=qs[_0xd971('0x2e')](_0x2acd0c[_0xd971('0x44')]['offset']);}_0x42fe33[_0xd971('0x4d')]=qs[_0xd971('0x4e')](_0x2acd0c[_0xd971('0x44')][_0xd971('0x4e')]);_0x42fe33['where']=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x2acd0c[_0xd971('0x44')],_0x2456b0[_0xd971('0x46')]));_0x42fe33[_0xd971('0x51')][_0xd971('0x69')]=_0x4cdb02['id'];if(_0x2acd0c[_0xd971('0x44')][_0xd971('0x50')]){_0x42fe33[_0xd971('0x51')]=_['merge'](_0x42fe33[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x42fe33[_0xd971('0x4a')],function(_0x54864a){var _0x44ae85={};_0x44ae85[_0x54864a]={'$like':'%'+_0x2acd0c[_0xd971('0x44')][_0xd971('0x50')]+'%'};return _0x44ae85;})});}_0x42fe33=_[_0xd971('0x52')]({},_0x42fe33,_0x2acd0c[_0xd971('0x53')]);return db[_0xd971('0x65')][_0xd971('0x30')]({'where':_0x42fe33['where']})[_0xd971('0x21')](function(_0x249d73){_0x4e9cda[_0xd971('0x30')]=_0x249d73;if(_0x2acd0c[_0xd971('0x44')][_0xd971('0x54')]){_0x42fe33['include']=[{'all':!![]}];}return db['Disposition'][_0xd971('0x56')](_0x42fe33);})[_0xd971('0x21')](function(_0x528c45){_0x4e9cda[_0xd971('0x57')]=_0x528c45;return _0x4e9cda;});}})[_0xd971('0x21')](respondWithFilteredResult(_0x24f6e7,_0x42fe33))['catch'](handleError(_0x24f6e7,null));};exports[_0xd971('0x6a')]=function(_0x52877d,_0x3c740e,_0x397453){return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x52877d[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x3c740e,null))[_0xd971('0x21')](function(_0x266755){if(_0x266755){return _0x266755[_0xd971('0x6a')](_0x52877d['query'][_0xd971('0x6b')]);}})[_0xd971('0x21')](respondWithStatusCode(_0x3c740e,null))[_0xd971('0x2b')](handleError(_0x3c740e,null));};exports['addAnswer']=function(_0x40b5f2,_0x520128,_0x189730){if(_0x40b5f2['body']['id']){delete _0x40b5f2[_0xd971('0x5b')]['id'];}return db['SmsAccount'][_0xd971('0x59')]({'where':{'id':_0x40b5f2[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x520128,null))[_0xd971('0x21')](function(_0x208005){if(_0x208005){_0x40b5f2[_0xd971('0x5b')][_0xd971('0x69')]=_0x208005['id'];return db['CannedAnswer']['create'](_0x40b5f2['body']);}})['then'](respondWithResult(_0x520128,null))[_0xd971('0x2b')](handleError(_0x520128,null));};exports[_0xd971('0x6c')]=function(_0x346bf7,_0x766c07,_0x30928a){var _0x2bc89e={'raw':![],'where':{}};var _0x130e61={};var _0xb38711={'count':0x0,'rows':[]};return db[_0xd971('0x3f')][_0xd971('0x67')]({'where':{'id':_0x346bf7['params']['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x766c07,null))[_0xd971('0x21')](function(_0x31182c){if(_0x31182c){_0x130e61['model']=_[_0xd971('0x45')](db[_0xd971('0x6d')]['rawAttributes']);_0x130e61[_0xd971('0x44')]=_['keys'](_0x346bf7['query']);_0x130e61['filters']=_[_0xd971('0x47')](_0x130e61['model'],_0x130e61[_0xd971('0x44')]);_0x2bc89e['attributes']=_['intersection'](_0x130e61[_0xd971('0x48')],qs[_0xd971('0x49')](_0x346bf7[_0xd971('0x44')][_0xd971('0x49')]));_0x2bc89e[_0xd971('0x4a')]=_0x2bc89e[_0xd971('0x4a')][_0xd971('0x4b')]?_0x2bc89e[_0xd971('0x4a')]:_0x130e61['model'];if(!_0x346bf7[_0xd971('0x44')][_0xd971('0x4c')]('nolimit')){_0x2bc89e['limit']=qs[_0xd971('0x31')](_0x346bf7[_0xd971('0x44')][_0xd971('0x31')]);_0x2bc89e[_0xd971('0x2e')]=qs[_0xd971('0x2e')](_0x346bf7[_0xd971('0x44')][_0xd971('0x2e')]);}_0x2bc89e[_0xd971('0x4d')]=qs['sort'](_0x346bf7[_0xd971('0x44')][_0xd971('0x4e')]);_0x2bc89e[_0xd971('0x51')]=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x346bf7[_0xd971('0x44')],_0x130e61['filters']));_0x2bc89e[_0xd971('0x51')][_0xd971('0x69')]=_0x31182c['id'];if(_0x346bf7[_0xd971('0x44')][_0xd971('0x50')]){_0x2bc89e[_0xd971('0x51')]=_[_0xd971('0x52')](_0x2bc89e[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x2bc89e['attributes'],function(_0x420a6d){var _0x3db276={};_0x3db276[_0x420a6d]={'$like':'%'+_0x346bf7[_0xd971('0x44')]['filter']+'%'};return _0x3db276;})});}_0x2bc89e=_[_0xd971('0x52')]({},_0x2bc89e,_0x346bf7[_0xd971('0x53')]);return db[_0xd971('0x6d')][_0xd971('0x30')]({'where':_0x2bc89e['where']})[_0xd971('0x21')](function(_0x58e355){_0xb38711[_0xd971('0x30')]=_0x58e355;if(_0x346bf7[_0xd971('0x44')][_0xd971('0x54')]){_0x2bc89e[_0xd971('0x55')]=[{'all':!![]}];}return db['CannedAnswer'][_0xd971('0x56')](_0x2bc89e);})['then'](function(_0x4fb2a9){_0xb38711[_0xd971('0x57')]=_0x4fb2a9;return _0xb38711;});}})[_0xd971('0x21')](respondWithFilteredResult(_0x766c07,_0x2bc89e))['catch'](handleError(_0x766c07,null));};exports['removeAnswers']=function(_0x589701,_0x1e7f3f,_0x33d30d){return db[_0xd971('0x3f')]['find']({'where':{'id':_0x589701[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x1e7f3f,null))[_0xd971('0x21')](function(_0x3608f4){if(_0x3608f4){return _0x3608f4[_0xd971('0x6e')](_0x589701[_0xd971('0x44')]['ids']);}})['then'](respondWithStatusCode(_0x1e7f3f,null))[_0xd971('0x2b')](handleError(_0x1e7f3f,null));};exports[_0xd971('0x6f')]=function(_0x56dca5,_0x5ebddf,_0x558702){var _0x578222={'channel':_0xd971('0x70')};var _0x6d9eb3=[];var _0x25910f=[];var _0x18cda1={};return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x56dca5['params']['id']},'include':[{'model':db[_0xd971('0x71')],'as':_0xd971('0x72')}]})['then'](handleEntityNotFound(_0x5ebddf,null))['then'](function(_0x43f3e0){_0x578222[_0xd971('0x73')]=_0x43f3e0;_0x578222[_0xd971('0x74')]=_[_0xd971('0x75')](_0x43f3e0[_0xd971('0x72')],[_0xd971('0x76')],['asc']);if(_0x578222[_0xd971('0x73')][_0xd971('0x72')]){delete _0x578222['account'][_0xd971('0x72')];}return db['CmContact'][_0xd971('0x63')]();})[_0xd971('0x21')](function(_0x352936){if(!_0x352936){throw new db['Sequelize'][(_0xd971('0x77'))]('no\x20available\x20attributes');}_0x6d9eb3=_[_0xd971('0x78')](_['keys'](_0x352936),['createdAt','updatedAt']);_0x25910f=_[_0xd971('0x78')](_[_0xd971('0x45')](_0x352936),[_0xd971('0x79'),_0xd971('0x7a'),_0xd971('0x7b'),_0xd971('0x7c')]);_0x578222[_0xd971('0x5b')]={'mapKey':_0xd971('0x7d')};if(_0x578222[_0xd971('0x73')][_0xd971('0x41')]){switch(_0x578222[_0xd971('0x73')]['type']){case'twilio':_0x578222[_0xd971('0x5b')]['from']=_0x56dca5['body']['From'];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x7e')];_0x578222['body'][_0xd971('0x7f')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x80')];break;case _0xd971('0x81'):_0x578222['body'][_0xd971('0x82')]='+'+_0x56dca5[_0xd971('0x5b')][_0xd971('0x83')];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5['body'][_0xd971('0x84')];break;case _0xd971('0x85'):_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x82')];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5['body'][_0xd971('0x2a')];break;case _0xd971('0x86'):_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x82')];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x5b')];_0x578222[_0xd971('0x5b')]['messageId']=_0x56dca5[_0xd971('0x5b')][_0xd971('0x87')];break;case'plivo':_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x88')];_0x578222[_0xd971('0x5b')]['body']=_0x56dca5['body'][_0xd971('0x89')];_0x578222[_0xd971('0x5b')][_0xd971('0x7f')]=_0x56dca5[_0xd971('0x5b')]['MessageUUID'];break;case _0xd971('0x8a'):_0x578222['body'][_0xd971('0x82')]='+'+_0x56dca5['body'][_0xd971('0x8b')][0x0][_0xd971('0x82')];_0x578222['body'][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x8b')][0x0]['text'];_0x578222[_0xd971('0x5b')][_0xd971('0x7f')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x8b')][0x0][_0xd971('0x7f')];break;case _0xd971('0x8c'):_0x578222['body']['from']=_0x56dca5[_0xd971('0x5b')][_0xd971('0x8d')];_0x578222['body'][_0xd971('0x5b')]=_0x56dca5['body']['segmentedMessage'][_0xd971('0x2a')];break;case _0xd971('0x8e'):_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x8f')];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')]['text'];_0x578222[_0xd971('0x5b')][_0xd971('0x7f')]=_0x56dca5['body'][_0xd971('0x90')];break;case _0xd971('0x91'):_0x578222[_0xd971('0x5b')][_0xd971('0x7f')]=_0x56dca5[_0xd971('0x5b')][0x0]['message']['id'];_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')][0x0][_0xd971('0x2a')][_0xd971('0x82')];_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')][0x0][_0xd971('0x2a')]['text'];break;case'intelepeer':_0x578222[_0xd971('0x5b')][_0xd971('0x82')]=_0x56dca5[_0xd971('0x5b')]['from'];_0x578222['body'][_0xd971('0x5b')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x2a')];_0x578222[_0xd971('0x5b')][_0xd971('0x7f')]=_0x56dca5[_0xd971('0x5b')][_0xd971('0x92')];break;}}if(_0x578222[_0xd971('0x5b')]['id']){delete _0x578222['body']['id'];}if(_[_0xd971('0x93')](_0x578222[_0xd971('0x5b')][_0xd971('0x82')])){throw new db['Sequelize']['ValidationError']('from\x20is\x20mandatory');}if(_['isNil'](_0x578222[_0xd971('0x5b')][_0xd971('0x5b')])||_0x578222[_0xd971('0x5b')][_0xd971('0x5b')]===''){throw new db[(_0xd971('0x94'))][(_0xd971('0x77'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xd971('0x93')](_0x578222['body'][_0xd971('0x95')])){throw new db[(_0xd971('0x94'))][(_0xd971('0x77'))](_0xd971('0x96')+_0x25910f);}if(!_[_0xd971('0x97')](_0x25910f,_0x578222[_0xd971('0x5b')]['mapKey'])){throw new db[(_0xd971('0x94'))][(_0xd971('0x77'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x25910f);}_0x18cda1[_0x578222[_0xd971('0x5b')]['mapKey']]=_0x578222[_0xd971('0x5b')][_0xd971('0x82')];return db[_0xd971('0x98')][_0xd971('0x59')]({'where':{'id':_0x578222[_0xd971('0x73')][_0xd971('0x7c')]},'include':[{'model':db[_0xd971('0x99')],'as':'Contacts','where':_0x18cda1,'limit':0x1,'order':[[_0xd971('0x7a'),_0xd971('0x9a')]]}]});})[_0xd971('0x21')](handleEntityNotFound(_0x5ebddf,null))[_0xd971('0x21')](function(_0x46f13a){if(_0x46f13a){_0x578222[_0xd971('0x9b')]=_[_0xd971('0x9c')](_0x46f13a,[_0xd971('0x9d')]);if(_0x46f13a[_0xd971('0x9d')][_0xd971('0x4b')]){return _0x46f13a['Contacts'][0x0];}var _0x174460=_[_0xd971('0x9e')](_0x578222[_0xd971('0x5b')],{'firstName':_0x578222['body']['from'],'ListId':_0x46f13a['id']});_0x174460[_0x578222[_0xd971('0x5b')][_0xd971('0x95')]]=_0x578222[_0xd971('0x5b')][_0xd971('0x82')];return db[_0xd971('0x99')][_0xd971('0x5a')](_0x174460,{'fields':_0x6d9eb3,'raw':!![]});}})['then'](handleEntityNotFound(_0x5ebddf,null))['then'](function(_0x37ad11){if(_0x37ad11){_0x578222['contact']=_0x37ad11;var _0x322a11={'ContactId':_0x37ad11['id'],'phone':_0x578222[_0xd971('0x5b')][_0xd971('0x82')],'SmsAccountId':_0x56dca5[_0xd971('0x58')]['id']};var _0x460bc9={'ContactId':_0x37ad11['id'],'SmsAccountId':_0x56dca5[_0xd971('0x58')]['id'],'closed':![]};return db[_0xd971('0x9f')][_0xd971('0x59')]({'where':_0x460bc9})[_0xd971('0x21')](function(_0x170bf1){if(_0x170bf1){return[_0x170bf1,![]];}return db['SmsInteraction']['create'](_0x322a11)[_0xd971('0x21')](function(_0x5effa3){return[_0x5effa3,!![]];});});}})[_0xd971('0xa0')](function(_0x196d80,_0x381bc8){_0x578222[_0xd971('0xa1')]=_0x196d80[_0xd971('0x38')]({'plain':!![]});_0x578222[_0xd971('0xa1')][_0xd971('0xa2')]=![];if(_0x381bc8){if(_0x578222['account'][_0xd971('0xa3')]){_0x578222[_0xd971('0x74')]['push']({'id':0x0,'priority':_0x578222[_0xd971('0x74')][_0xd971('0x4b')]+0x1,'app':_0xd971('0xa4'),'appdata':_0xd971('0xa5'),'interval':'*,*,*,*'});}_0x578222[_0xd971('0xa1')]['created']=!![];}return db[_0xd971('0xa6')][_0xd971('0x5a')]({'phone':_0x578222['body'][_0xd971('0x82')],'messageId':_0x578222[_0xd971('0x5b')][_0xd971('0x7f')],'body':_0x578222['body'][_0xd971('0x5b')],'SmsAccountId':_0x56dca5[_0xd971('0x58')]['id'],'SmsInteractionId':_0x196d80['id'],'direction':'in','ContactId':_0x196d80[_0xd971('0xa7')],'AttachmentId':_0x578222[_0xd971('0x5b')][_0xd971('0xa8')]});})['then'](function(_0x35ce2a){_0x578222[_0xd971('0x2a')]=_0x35ce2a;if(_0x578222[_0xd971('0xa1')][_0xd971('0xa9')]){return db[_0xd971('0xaa')][_0xd971('0x59')]({'attributes':['id',_0xd971('0x3c')],'where':{'id':_0x578222[_0xd971('0xa1')][_0xd971('0xa9')]}})[_0xd971('0x21')](function(_0x247728){if(_0x247728){_0x578222[_0xd971('0x74')][_0xd971('0xab')]({'id':0x0,'priority':0x0,'app':_0xd971('0xac'),'appdata':_0x247728[_0xd971('0x3c')]+','+(_0x578222[_0xd971('0x73')][_0xd971('0xad')]||0xa),'interval':_0xd971('0xae')});}return respondWithRpcPromise(_0xd971('0xaf'),_0xd971('0xb0'),_0x578222);});}return respondWithRpcPromise('Start',_0xd971('0xb0'),_0x578222);})[_0xd971('0x21')](function(_0x5784cc){if(_0x5784cc){var _0x54420c=0xc8;var _0x3277ca=_0xd971('0xb1');logger[_0xd971('0x22')](_0xd971('0x26'),_0x3277ca,_0x54420c,_0xd971('0xb2'));logger[_0xd971('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x3277ca,_0x54420c,'entity\x20found',JSON[_0xd971('0x27')](_0x5784cc));if(_0x578222[_0xd971('0x73')]['type']===_0xd971('0xb3')){return _0x5ebddf[_0xd971('0x2d')](_0x54420c)[_0xd971('0x32')](_0xd971('0xb4'),_0xd971('0xb5'))[_0xd971('0xb6')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x5ebddf[_0xd971('0x2d')](_0x54420c)['json'](_0x5784cc);}}})[_0xd971('0x2b')](handleError(_0x5ebddf,null));};exports['addApplications']=function(_0x114a80,_0x39efa7,_0x38c227){return db[_0xd971('0x3f')][_0xd971('0x67')]({'where':{'id':_0x114a80[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x39efa7,null))[_0xd971('0x21')](function(_0x5cad19){if(_0x5cad19){return db[_0xd971('0xb7')][_0xd971('0xb8')](function(_0x42a81c){return db['SmsApplication'][_0xd971('0x37')]({'where':{'SmsAccountId':_0x114a80[_0xd971('0x58')]['id']},'transaction':_0x42a81c})[_0xd971('0x21')](function(_0x4bfa97){var _0x51cd36=_[_0xd971('0x43')](_0x114a80[_0xd971('0x5b')],function(_0xd1f18c){_0xd1f18c[_0xd971('0x69')]=_0x114a80[_0xd971('0x58')]['id'];return _0xd1f18c;});return db['SmsApplication'][_0xd971('0xb9')](_0x51cd36,{'transaction':_0x42a81c});});})[_0xd971('0x21')](function(){return db[_0xd971('0x71')][_0xd971('0xba')]({'where':{'SmsAccountId':_0x114a80[_0xd971('0x58')]['id']},'order':_0xd971('0x76')});});}})[_0xd971('0x21')](respondWithResult(_0x39efa7,null))[_0xd971('0x2b')](handleError(_0x39efa7,null));};exports[_0xd971('0xbb')]=function(_0x90dbfb,_0x58f74a,_0x2c0bb0){var _0x276099={};var _0x184e4a={};var _0x483c52;var _0x119a24;return db[_0xd971('0x3f')]['findOne']({'where':{'id':_0x90dbfb[_0xd971('0x58')]['id']}})['then'](handleEntityNotFound(_0x58f74a,null))[_0xd971('0x21')](function(_0x3517c4){if(_0x3517c4){_0x483c52=_0x3517c4;_0x184e4a[_0xd971('0x48')]=_['keys'](db[_0xd971('0x71')]['rawAttributes']);_0x184e4a[_0xd971('0x44')]=_[_0xd971('0x45')](_0x90dbfb[_0xd971('0x44')]);_0x184e4a[_0xd971('0x46')]=_['intersection'](_0x184e4a['model'],_0x184e4a['query']);_0x276099[_0xd971('0x4a')]=_[_0xd971('0x47')](_0x184e4a['model'],qs[_0xd971('0x49')](_0x90dbfb[_0xd971('0x44')]['fields']));_0x276099['attributes']=_0x276099[_0xd971('0x4a')][_0xd971('0x4b')]?_0x276099[_0xd971('0x4a')]:_0x184e4a[_0xd971('0x48')];_0x276099[_0xd971('0x4d')]=qs[_0xd971('0x4e')](_0x90dbfb['query'][_0xd971('0x4e')]);_0x276099[_0xd971('0x51')]=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x90dbfb[_0xd971('0x44')],_0x184e4a[_0xd971('0x46')]));if(_0x90dbfb[_0xd971('0x44')][_0xd971('0x50')]){_0x276099[_0xd971('0x51')]=_['merge'](_0x276099[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x276099[_0xd971('0x4a')],function(_0x4ad914){var _0x5b3682={};_0x5b3682[_0x4ad914]={'$like':'%'+_0x90dbfb[_0xd971('0x44')][_0xd971('0x50')]+'%'};return _0x5b3682;})});}_0x276099=_[_0xd971('0x52')]({},_0x276099,_0x90dbfb[_0xd971('0x53')]);return _0x483c52[_0xd971('0xbb')](_0x276099);}})['then'](function(_0x12fb03){if(_0x12fb03){_0x119a24=_0x12fb03[_0xd971('0x4b')];if(!_0x90dbfb[_0xd971('0x44')][_0xd971('0x4c')]('nolimit')){_0x276099[_0xd971('0x31')]=qs[_0xd971('0x31')](_0x90dbfb[_0xd971('0x44')][_0xd971('0x31')]);_0x276099['offset']=qs[_0xd971('0x2e')](_0x90dbfb[_0xd971('0x44')][_0xd971('0x2e')]);}return _0x483c52[_0xd971('0xbb')](_0x276099);}})[_0xd971('0x21')](function(_0x3a0e45){if(_0x3a0e45){return _0x3a0e45?{'count':_0x119a24,'rows':_0x3a0e45}:null;}})['then'](respondWithResult(_0x58f74a,null))[_0xd971('0x2b')](handleError(_0x58f74a,null));};exports[_0xd971('0xbc')]=function(_0x46b794,_0x119d7b,_0x31a3a1){var _0x3986e5={'raw':![],'where':{}};var _0x459d05={};var _0xdb29e7={'count':0x0,'rows':[]};return db[_0xd971('0x3f')][_0xd971('0x67')]({'where':{'id':_0x46b794[_0xd971('0x58')]['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x119d7b,null))['then'](function(_0x194043){if(_0x194043){_0x459d05[_0xd971('0x48')]=_['keys'](db[_0xd971('0x9f')][_0xd971('0x40')]);_0x459d05[_0xd971('0x44')]=_['keys'](_0x46b794[_0xd971('0x44')]);_0x459d05[_0xd971('0x46')]=_[_0xd971('0x47')](_0x459d05[_0xd971('0x48')],_0x459d05[_0xd971('0x44')]);_0x3986e5['attributes']=_[_0xd971('0x47')](_0x459d05['model'],qs[_0xd971('0x49')](_0x46b794[_0xd971('0x44')][_0xd971('0x49')]));_0x3986e5[_0xd971('0x4a')]=_0x3986e5[_0xd971('0x4a')][_0xd971('0x4b')]?_0x3986e5[_0xd971('0x4a')]:_0x459d05[_0xd971('0x48')];if(!_0x46b794[_0xd971('0x44')][_0xd971('0x4c')](_0xd971('0x68'))){_0x3986e5[_0xd971('0x31')]=qs[_0xd971('0x31')](_0x46b794['query'][_0xd971('0x31')]);_0x3986e5['offset']=qs[_0xd971('0x2e')](_0x46b794['query'][_0xd971('0x2e')]);}_0x3986e5[_0xd971('0x4d')]=qs['sort'](_0x46b794[_0xd971('0x44')][_0xd971('0x4e')]);_0x3986e5[_0xd971('0x51')]=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x46b794[_0xd971('0x44')],_0x459d05['filters']));_0x3986e5['where'][_0xd971('0x69')]=_0x194043['id'];if(_0x46b794[_0xd971('0x44')][_0xd971('0x50')]){_0x3986e5[_0xd971('0x51')]=_[_0xd971('0x52')](_0x3986e5[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x3986e5[_0xd971('0x4a')],function(_0x361e62){var _0x357688={};_0x357688[_0x361e62]={'$like':'%'+_0x46b794[_0xd971('0x44')]['filter']+'%'};return _0x357688;})});}_0x3986e5=_['merge']({},_0x3986e5,_0x46b794[_0xd971('0x53')]);return db[_0xd971('0x9f')]['count']({'where':_0x3986e5[_0xd971('0x51')]})[_0xd971('0x21')](function(_0x9d4a28){_0xdb29e7['count']=_0x9d4a28;if(_0x46b794[_0xd971('0x44')]['includeAll']){_0x3986e5[_0xd971('0x55')]=[{'model':db[_0xd971('0x99')],'as':_0xd971('0xbd'),'required':![]},{'model':db[_0xd971('0xaa')],'as':'Owner','attributes':['name',_0xd971('0xbe'),_0xd971('0xbf')],'required':![]},{'model':db[_0xd971('0xc0')],'as':_0xd971('0xc1'),'attributes':['id','name',_0xd971('0xc2')],'where':_0x46b794[_0xd971('0x44')]['tag']?{'id':_0x46b794[_0xd971('0x44')][_0xd971('0xc3')]}:undefined,'required':_0x46b794[_0xd971('0x44')][_0xd971('0xc3')]?!![]:![]}];}return db['SmsInteraction'][_0xd971('0x56')](_0x3986e5);})[_0xd971('0x21')](function(_0x289af0){_0xdb29e7[_0xd971('0x57')]=_0x289af0;return _0xdb29e7;});}})[_0xd971('0x21')](respondWithFilteredResult(_0x119d7b,_0x3986e5))['catch'](handleError(_0x119d7b,null));};exports[_0xd971('0xb6')]=function(_0xbe5bd,_0x4813e6,_0x2455b3){var _0xd0b66f,_0xab3165,_0x332afd;if(_[_0xd971('0x93')](_0xbe5bd[_0xd971('0x5b')][_0xd971('0x5b')])||_0xbe5bd[_0xd971('0x5b')][_0xd971('0x5b')]===''){throw new db[(_0xd971('0x94'))][(_0xd971('0x77'))](_0xd971('0xc4'));}if(_[_0xd971('0x93')](_0xbe5bd['body']['to'])){throw new db[(_0xd971('0x94'))][(_0xd971('0x77'))](_0xd971('0xc5'));}_0xd0b66f=_0xbe5bd[_0xd971('0x5b')]['to'];return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0xbe5bd[_0xd971('0x58')]['id']},'include':[{'model':db[_0xd971('0x98')],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0xd0b66f},'limit':0x1,'order':[['updatedAt',_0xd971('0x9a')]]}]}]})[_0xd971('0x21')](handleEntityNotFound(_0x4813e6,null))[_0xd971('0x21')](function(_0x3e590a){if(_0x3e590a&&_0x3e590a[_0xd971('0xc6')]){_0xab3165=_0x3e590a['get']({'plain':!![]});if(_0xab3165[_0xd971('0xc6')]&&_0xab3165[_0xd971('0xc6')][_0xd971('0x9d')][_0xd971('0x4b')]){return _0xab3165[_0xd971('0xc6')]['Contacts'][0x0];}return db[_0xd971('0x99')][_0xd971('0x5a')](_[_0xd971('0x9e')](_0xbe5bd[_0xd971('0x5b')],{'firstName':_0xd0b66f,'mobile':_0xd0b66f,'phone':_0xd0b66f,'ListId':_0xab3165['ListId']}));}})[_0xd971('0x21')](handleEntityNotFound(_0x4813e6,null))[_0xd971('0x21')](function(_0x155237){if(_0x155237){_0x332afd=_0x155237;return db[_0xd971('0x9f')][_0xd971('0x59')]({'where':{'ContactId':_0x332afd['id'],'closed':![],'SmsAccountId':_0xab3165['id']}})['then'](function(_0xfc8e3f){if(_0xfc8e3f){return[_0xfc8e3f,![]];}return db[_0xd971('0x9f')][_0xd971('0x5a')]({'UserId':_0xbe5bd[_0xd971('0x5e')]['id'],'ContactId':_0x332afd['id'],'SmsAccountId':_0xab3165['id'],'phone':_0xd0b66f,'firstMsgDirection':'out','Messages':[_[_0xd971('0x52')](_0xbe5bd['body'],{'read':![],'body':_0xbe5bd['body'][_0xd971('0x5b')],'phone':_0xd0b66f,'SmsAccountId':_0xab3165['id'],'UserId':_0xbe5bd[_0xd971('0x5e')]['id'],'ContactId':_0x332afd['id']})]},{'include':[{'model':db[_0xd971('0xa6')],'as':_0xd971('0xc7')}]})[_0xd971('0x21')](function(_0x554c1a){return[_0x554c1a,!![]];});});}})['spread'](function(_0x3126bf,_0x515330){if(_0x515330){return _0x3126bf;}return db[_0xd971('0xa6')][_0xd971('0x5a')](_[_0xd971('0x52')](_0xbe5bd['body'],{'read':![],'body':_0xbe5bd['body'][_0xd971('0x5b')],'phone':_0xd0b66f,'SmsAccountId':_0xab3165['id'],'SmsInteractionId':_0x3126bf['id'],'UserId':_0xbe5bd[_0xd971('0x5e')]['id'],'ContactId':_0x332afd['id']}))[_0xd971('0x21')](function(_0x121969){_0x3126bf[_0xd971('0xc8')][_0xd971('0xc7')]=[];_0x3126bf[_0xd971('0xc8')][_0xd971('0xc7')]['push'](_0x121969[_0xd971('0xc8')]);return _0x3126bf;});})[_0xd971('0x21')](respondWithResult(_0x4813e6,null))['catch'](handleError(_0x4813e6,null));};exports[_0xd971('0x2d')]=function(_0x206c83,_0x425ee8,_0x3fe1ce){if(_0x206c83[_0xd971('0x5b')]['id']){delete _0x206c83[_0xd971('0x5b')]['id'];}var _0x1148c2,_0x5c3aed,_0x3ddbd6;return db['SmsAccount'][_0xd971('0x59')]({'where':{'id':_0x206c83['params']['id']}})['then'](handleEntityNotFound(_0x425ee8,null))[_0xd971('0x21')](function(_0x51abe5){if(_0x51abe5){_0x3ddbd6=_0x51abe5;logger['debug'](_0xd971('0x26'),'status',_0xd971('0xc9'),_0x51abe5['type'],util['inspect'](_0x206c83['body'],{'showHidden':![],'depth':null}));switch(_0x51abe5[_0xd971('0x41')]){case _0xd971('0x81'):if(_0x206c83['body'][_0xd971('0xca')]&&_0x206c83[_0xd971('0x5b')]['status']){_0x5c3aed=_0x206c83[_0xd971('0x5b')]['status'];return db['SmsMessage']['find']({'where':{'messageId':_0x206c83[_0xd971('0x5b')]['skebby_dispatch_id']}});}break;case _0xd971('0x85'):if(_0x206c83[_0xd971('0x5b')][_0xd971('0xcb')]&&_0x206c83[_0xd971('0x5b')][_0xd971('0xcc')]){_0x5c3aed=_0x206c83['body'][_0xd971('0xcc')];return db['SmsMessage'][_0xd971('0x59')]({'where':{'messageId':_0x206c83[_0xd971('0x5b')]['requestid']}});}break;case _0xd971('0x86'):if(_0x206c83['body'][_0xd971('0x87')]&&_0x206c83['body']['status_code']){_0x5c3aed=_0x206c83['body']['status_code'];return db[_0xd971('0xa6')]['find']({'where':{'messageId':_0x206c83['body']['message_id']}});}break;case _0xd971('0x8a'):var _0x26f776=_0x206c83['body'][_0xd971('0x8b')][0x0];if(_0x26f776[_0xd971('0x7f')]&&_0x26f776[_0xd971('0x2d')][_0xd971('0xcd')]===_0xd971('0xce')){_0x5c3aed=_0x26f776[_0xd971('0x2d')]['groupName'];return db[_0xd971('0xa6')][_0xd971('0x59')]({'where':{'messageId':_0x26f776['messageId']}});}break;case'clickatell':if(_0x206c83[_0xd971('0x5b')][_0xd971('0x7f')]&&_0x206c83[_0xd971('0x5b')][_0xd971('0x2d')]){_0x5c3aed=_0x206c83[_0xd971('0x5b')][_0xd971('0x2d')];return db['SmsMessage'][_0xd971('0x59')]({'where':{'messageId':_0x206c83['body'][_0xd971('0x7f')]}});}break;case _0xd971('0x91'):if(_0x206c83[_0xd971('0x5b')][0x0][_0xd971('0x2a')]['id']){_0x5c3aed=_0x206c83['body'][0x0]['type'];return db[_0xd971('0xa6')][_0xd971('0x59')]({'where':{'messageId':_0x206c83[_0xd971('0x5b')][0x0][_0xd971('0x2a')]['id']}});}break;case _0xd971('0xcf'):if(_0x206c83['body']['redif']&&_0x206c83[_0xd971('0x5b')]['status']){_0x5c3aed=_0x206c83[_0xd971('0x5b')][_0xd971('0x2d')];return db[_0xd971('0xa6')][_0xd971('0x59')]({'where':{'messageId':_0x206c83[_0xd971('0x5b')][_0xd971('0xd0')]}});}break;}}})[_0xd971('0x21')](handleEntityNotFound(_0x425ee8,null))[_0xd971('0x21')](function(_0x57b5a7){if(_0x57b5a7){_0x1148c2=_0x57b5a7;switch(_0x3ddbd6[_0xd971('0x41')]){case _0xd971('0x81'):if(_0x5c3aed===_0xd971('0xce')){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),_0xd971('0x2d'),_0xd971('0x81'),util[_0xd971('0xd1')](_0x206c83['body'],{'showHidden':![],'depth':null}));}break;case _0xd971('0x85'):if(_0x5c3aed==='1'){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),_0xd971('0x2d'),_0xd971('0x81'),util[_0xd971('0xd1')](_0x206c83[_0xd971('0x5b')],{'showHidden':![],'depth':null}));}break;case _0xd971('0x86'):if(!_0x206c83[_0xd971('0x5b')][_0xd971('0xd2')]&&_0x5c3aed>=0xc8&&_0x5c3aed<=0xce){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),_0xd971('0x2d'),_0xd971('0x86'),util[_0xd971('0xd1')](_0x206c83[_0xd971('0x5b')],{'showHidden':![],'depth':null}));}break;case _0xd971('0x8a'):var _0x3ba927=_0x206c83[_0xd971('0x5b')][_0xd971('0x8b')][0x0];if(_0x3ba927['status'][_0xd971('0xcd')]===_0xd971('0xce')){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),'status','infobip',util[_0xd971('0xd1')](_0x206c83['body'],{'showHidden':![],'depth':null}));}break;case _0xd971('0x8e'):if(_0x5c3aed=='DELIVERED_TO_GATEWAY'||_0x5c3aed==_0xd971('0xd3')){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xd971('0x2d'),_0xd971('0x8e'),util[_0xd971('0xd1')](_0x206c83[_0xd971('0x5b')],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x5c3aed==_0xd971('0xd4')){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger['error'](_0xd971('0x26'),'status','bandwidth',util['inspect'](_0x206c83[_0xd971('0x5b')],{'showHidden':![],'depth':null}));}break;case _0xd971('0xcf'):if(_0x5c3aed===_0xd971('0xd5')||_0x5c3aed===_0xd971('0xd6')){return _0x1148c2[_0xd971('0x36')]({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),'status',_0xd971('0xcf'),util[_0xd971('0xd1')](_0x206c83[_0xd971('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x1148c2;}})['then'](respondWithResult(_0x425ee8,null))[_0xd971('0x2b')](handleError(_0x425ee8,null));};exports['statusGet']=function(_0x5e868a,_0x3a184f,_0x1dbc74){var _0x4ea2f8,_0x53f967,_0x4c85cc;return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x5e868a[_0xd971('0x58')]['id']}})['then'](handleEntityNotFound(_0x3a184f,null))[_0xd971('0x21')](function(_0x2f7ff2){if(_0x2f7ff2){_0x4c85cc=_0x2f7ff2;logger[_0xd971('0x25')](_0xd971('0x26'),'status',_0xd971('0xc9'),_0x2f7ff2[_0xd971('0x41')],util[_0xd971('0xd1')](_0x5e868a['query'],{'showHidden':![],'depth':null}));switch(_0x2f7ff2[_0xd971('0x41')]){case _0xd971('0x8c'):if(_0x5e868a[_0xd971('0x44')][_0xd971('0xd7')]&&_0x5e868a[_0xd971('0x44')][_0xd971('0xd8')]){_0x53f967=_0x5e868a[_0xd971('0x44')][_0xd971('0xd8')];return db[_0xd971('0xa6')][_0xd971('0x59')]({'where':{'messageId':_0x5e868a['query'][_0xd971('0xd7')]}});}break;}}})[_0xd971('0x21')](handleEntityNotFound(_0x3a184f,null))[_0xd971('0x21')](function(_0xf053d9){if(_0xf053d9){_0x4ea2f8=_0xf053d9;switch(_0x4c85cc[_0xd971('0x41')]){case _0xd971('0x8c'):if(_0x53f967==='2'||_0x53f967==='6'){return _0x4ea2f8['update']({'read':!![]});}else{logger[_0xd971('0x28')](_0xd971('0x26'),_0xd971('0x2d'),'csc',util['inspect'](_0x5e868a[_0xd971('0x44')],{'showHidden':![],'depth':null}));};break;}return _0x4ea2f8;}})[_0xd971('0x21')](respondWithResult(_0x3a184f,null))['catch'](handleError(_0x3a184f,null));};exports[_0xd971('0xd9')]=function(_0x2c9416,_0x5a75bf,_0x5049a2){return db[_0xd971('0x3f')][_0xd971('0x59')]({'where':{'id':_0x2c9416[_0xd971('0x58')]['id']}})['then'](handleEntityNotFound(_0x5a75bf,null))[_0xd971('0x21')](function(_0x37ab56){if(_0x37ab56){return _0x37ab56[_0xd971('0xd9')](_0x2c9416[_0xd971('0x5b')][_0xd971('0x6b')],_[_0xd971('0x9c')](_0x2c9416[_0xd971('0x5b')],['ids','id'])||{})['spread'](function(_0x875ae8){for(var _0x8232d0=0x0;_0x8232d0<_0x2c9416[_0xd971('0x5b')][_0xd971('0x6b')]['length'];_0x8232d0+=0x1){socket[_0xd971('0xda')](_0xd971('0xdb'),{'UserId':Number(_0x2c9416[_0xd971('0x5b')]['ids'][_0x8232d0]),'SmsAccountId':Number(_0x2c9416[_0xd971('0x58')]['id'])});}return _0x875ae8;});}})[_0xd971('0x21')](respondWithResult(_0x5a75bf,null))['catch'](handleError(_0x5a75bf,null));};exports['removeAgents']=function(_0x734ad1,_0xb8cee8,_0x251754){return db['SmsAccount']['find']({'where':{'id':_0x734ad1['params']['id']}})[_0xd971('0x21')](handleEntityNotFound(_0xb8cee8,null))[_0xd971('0x21')](function(_0x1d9350){if(_0x1d9350){return _0x1d9350[_0xd971('0xdc')](_0x734ad1[_0xd971('0x44')][_0xd971('0x6b')])[_0xd971('0x21')](function(){if(_[_0xd971('0xdd')](_0x734ad1[_0xd971('0x44')][_0xd971('0x6b')])){for(var _0x22208f=0x0;_0x22208f<_0x734ad1[_0xd971('0x44')][_0xd971('0x6b')]['length'];_0x22208f+=0x1){socket[_0xd971('0xda')](_0xd971('0xde'),{'UserId':Number(_0x734ad1[_0xd971('0x44')][_0xd971('0x6b')][_0x22208f]),'SmsAccountId':Number(_0x734ad1[_0xd971('0x58')]['id'])});}}else{socket[_0xd971('0xda')](_0xd971('0xde'),{'UserId':Number(_0x734ad1[_0xd971('0x44')]['ids']),'SmsAccountId':Number(_0x734ad1['params']['id'])});}});}})['then'](respondWithStatusCode(_0xb8cee8,null))['catch'](handleError(_0xb8cee8,null));};exports[_0xd971('0xdf')]=function(_0x2acafb,_0x4b3a13,_0x1c495a){var _0x5d5e2c={};var _0x1490ee={};var _0x2f27eb;var _0xedff05;return db[_0xd971('0x3f')]['findOne']({'where':{'id':_0x2acafb['params']['id']}})[_0xd971('0x21')](handleEntityNotFound(_0x4b3a13,null))[_0xd971('0x21')](function(_0x2a3d8a){if(_0x2a3d8a){_0x2f27eb=_0x2a3d8a;_0x1490ee[_0xd971('0x48')]=_[_0xd971('0x45')](db[_0xd971('0xaa')][_0xd971('0x40')]);_0x1490ee[_0xd971('0x44')]=_[_0xd971('0x45')](_0x2acafb['query']);_0x1490ee['filters']=_['intersection'](_0x1490ee[_0xd971('0x48')],_0x1490ee['query']);_0x5d5e2c[_0xd971('0x4a')]=_[_0xd971('0x47')](_0x1490ee['model'],qs[_0xd971('0x49')](_0x2acafb['query'][_0xd971('0x49')]));_0x5d5e2c[_0xd971('0x4a')]=_0x5d5e2c[_0xd971('0x4a')]['length']?_0x5d5e2c[_0xd971('0x4a')]:_0x1490ee[_0xd971('0x48')];_0x5d5e2c[_0xd971('0x4d')]=qs[_0xd971('0x4e')](_0x2acafb['query'][_0xd971('0x4e')]);_0x5d5e2c[_0xd971('0x51')]=qs[_0xd971('0x46')](_[_0xd971('0x4f')](_0x2acafb[_0xd971('0x44')],_0x1490ee[_0xd971('0x46')]));if(_0x2acafb[_0xd971('0x44')][_0xd971('0x50')]){_0x5d5e2c[_0xd971('0x51')]=_[_0xd971('0x52')](_0x5d5e2c[_0xd971('0x51')],{'$or':_[_0xd971('0x43')](_0x5d5e2c[_0xd971('0x4a')],function(_0x5e6574){var _0x27e0ef={};_0x27e0ef[_0x5e6574]={'$like':'%'+_0x2acafb[_0xd971('0x44')][_0xd971('0x50')]+'%'};return _0x27e0ef;})});}_0x5d5e2c=_['merge']({},_0x5d5e2c,_0x2acafb[_0xd971('0x53')]);return _0x2f27eb[_0xd971('0xdf')](_0x5d5e2c);}})[_0xd971('0x21')](function(_0x41f267){if(_0x41f267){_0xedff05=_0x41f267['length'];if(!_0x2acafb[_0xd971('0x44')]['hasOwnProperty']('nolimit')){_0x5d5e2c['limit']=qs[_0xd971('0x31')](_0x2acafb['query'][_0xd971('0x31')]);_0x5d5e2c['offset']=qs['offset'](_0x2acafb[_0xd971('0x44')][_0xd971('0x2e')]);}return _0x2f27eb[_0xd971('0xdf')](_0x5d5e2c);}})[_0xd971('0x21')](function(_0x82ae10){if(_0x82ae10){return _0x82ae10?{'count':_0xedff05,'rows':_0x82ae10}:null;}})['then'](respondWithResult(_0x4b3a13,null))[_0xd971('0x2b')](handleError(_0x4b3a13,null));};
\ No newline at end of file
index 218be34..0791627 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x831e=['exports','../../mysqldb','SmsAccount','save','remove','emit','hasOwnProperty','hook'];(function(_0x56e2ed,_0x1c4781){var _0x5237b2=function(_0x587150){while(--_0x587150){_0x56e2ed['push'](_0x56e2ed['shift']());}};_0x5237b2(++_0x1c4781);}(_0x831e,0x169));var _0xe831=function(_0x4a8db4,_0x134b3e){_0x4a8db4=_0x4a8db4-0x0;var _0xaf5b15=_0x831e[_0x4a8db4];return _0xaf5b15;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xe831('0x0'))['db'][_0xe831('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe831('0x2'),'afterUpdate':'update','afterDestroy':_0xe831('0x3')};function emitEvent(_0x5e306f){return function(_0x3c402e,_0x59e7af,_0x11e1f1){SmsAccountEvents[_0xe831('0x4')](_0x5e306f+':'+_0x3c402e['id'],_0x3c402e);SmsAccountEvents[_0xe831('0x4')](_0x5e306f,_0x3c402e);_0x11e1f1(null);};}for(var e in events){if(events[_0xe831('0x5')](e)){var event=events[e];SmsAccount[_0xe831('0x6')](e,emitEvent(event));}}module[_0xe831('0x7')]=SmsAccountEvents;
\ No newline at end of file
+var _0x46a7=['../../mysqldb','SmsAccount','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x3dc008,_0x2866df){var _0x33af86=function(_0x3f37d5){while(--_0x3f37d5){_0x3dc008['push'](_0x3dc008['shift']());}};_0x33af86(++_0x2866df);}(_0x46a7,0x6d));var _0x746a=function(_0x3df99f,_0x4731d5){_0x3df99f=_0x3df99f-0x0;var _0x75892=_0x46a7[_0x3df99f];return _0x75892;};'use strict';var EventEmitter=require(_0x746a('0x0'));var SmsAccount=require(_0x746a('0x1'))['db'][_0x746a('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x746a('0x3')](0x0);var events={'afterCreate':_0x746a('0x4'),'afterUpdate':'update','afterDestroy':_0x746a('0x5')};function emitEvent(_0x34e5a8){return function(_0x28555a,_0x227b24,_0x1276bb){SmsAccountEvents[_0x746a('0x6')](_0x34e5a8+':'+_0x28555a['id'],_0x28555a);SmsAccountEvents[_0x746a('0x6')](_0x34e5a8,_0x28555a);_0x1276bb(null);};}for(var e in events){if(events[_0x746a('0x7')](e)){var event=events[e];SmsAccount[_0x746a('0x8')](e,emitEvent(event));}}module[_0x746a('0x9')]=SmsAccountEvents;
\ No newline at end of file
index 276ee78..4350faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa857=['./smsAccount.attributes','exports','SmsAccount','lodash','util','api','moment','request-promise'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0xa857,0x1bb));var _0x7a85=function(_0x59bd9f,_0xb3896a){_0x59bd9f=_0x59bd9f-0x0;var _0x26f3ec=_0xa857[_0x59bd9f];return _0x26f3ec;};'use strict';var _=require(_0x7a85('0x0'));var util=require(_0x7a85('0x1'));var logger=require('../../config/logger')(_0x7a85('0x2'));var moment=require(_0x7a85('0x3'));var BPromise=require('bluebird');var rp=require(_0x7a85('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7a85('0x5'));module[_0x7a85('0x6')]=function(_0x4cba2a,_0x2b52b9){return _0x4cba2a['define'](_0x7a85('0x7'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7920=['SmsAccount','sms_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./smsAccount.attributes'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x7920,0x15e));var _0x0792=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x7920[_0x580576];return _0x3f55a0;};'use strict';var _=require(_0x0792('0x0'));var util=require(_0x0792('0x1'));var logger=require(_0x0792('0x2'))(_0x0792('0x3'));var moment=require(_0x0792('0x4'));var BPromise=require('bluebird');var rp=require(_0x0792('0x5'));var fs=require('fs');var path=require(_0x0792('0x6'));var rimraf=require(_0x0792('0x7'));var config=require(_0x0792('0x8'));var attributes=require(_0x0792('0x9'));module['exports']=function(_0x1fb871,_0x3898a4){return _0x1fb871['define'](_0x0792('0xa'),attributes,{'tableName':_0x0792('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2302742..07bf0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93f3=['include','map','model','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','client','http','redis','defaults','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0x93f3,0x123));var _0x393f=function(_0x393c99,_0x24258e){_0x393c99=_0x393c99-0x0;var _0x4b5778=_0x93f3[_0x393c99];return _0x4b5778;};'use strict';var _=require(_0x393f('0x0'));var util=require(_0x393f('0x1'));var moment=require(_0x393f('0x2'));var BPromise=require('bluebird');var rs=require(_0x393f('0x3'));var fs=require('fs');var Redis=require(_0x393f('0x4'));var db=require(_0x393f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x393f('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x393f('0x7')][_0x393f('0x8')]({'port':0x232a});config[_0x393f('0x9')]=_[_0x393f('0xa')](config[_0x393f('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x393f('0xb'))(new Redis(config[_0x393f('0x9')]));require(_0x393f('0xc'))[_0x393f('0xd')](socket);function respondWithRpcPromise(_0x25a6e8,_0x2d7716,_0x4a2171){return new BPromise(function(_0x21960d,_0x53a519){return client[_0x393f('0xe')](_0x25a6e8,_0x4a2171)[_0x393f('0xf')](function(_0x591b4b){logger[_0x393f('0x10')](_0x393f('0x11'),_0x2d7716,_0x393f('0x12'));logger[_0x393f('0x13')](_0x393f('0x14'),_0x2d7716,_0x393f('0x12'),JSON[_0x393f('0x15')](_0x591b4b));if(_0x591b4b[_0x393f('0x16')]){if(_0x591b4b[_0x393f('0x16')][_0x393f('0x17')]===0x1f4){logger['error'](_0x393f('0x11'),_0x2d7716,_0x591b4b[_0x393f('0x16')][_0x393f('0x18')]);return _0x53a519(_0x591b4b[_0x393f('0x16')][_0x393f('0x18')]);}logger[_0x393f('0x16')]('SmsAccount,\x20%s,\x20%s',_0x2d7716,_0x591b4b['error'][_0x393f('0x18')]);return _0x21960d(_0x591b4b[_0x393f('0x16')][_0x393f('0x18')]);}else{logger[_0x393f('0x10')](_0x393f('0x11'),_0x2d7716,_0x393f('0x12'));_0x21960d(_0x591b4b['result'][_0x393f('0x18')]);}})[_0x393f('0x19')](function(_0x686e57){logger['error']('SmsAccount,\x20%s,\x20%s',_0x2d7716,_0x686e57);_0x53a519(_0x686e57);});});}exports[_0x393f('0x1a')]=function(_0x4491e5){var _0x48e081=this;return new Promise(function(_0x147e9b,_0x1a6511){return db[_0x393f('0x1b')][_0x393f('0x1c')]({'raw':_0x4491e5[_0x393f('0x1d')]?_0x4491e5[_0x393f('0x1d')][_0x393f('0x1e')]===undefined?!![]:![]:!![],'where':_0x4491e5['options']?_0x4491e5[_0x393f('0x1d')][_0x393f('0x1f')]||null:null,'attributes':_0x4491e5['options']?_0x4491e5[_0x393f('0x1d')][_0x393f('0x20')]||null:null,'include':_0x4491e5['options']?_0x4491e5[_0x393f('0x1d')][_0x393f('0x21')]?_[_0x393f('0x22')](_0x4491e5[_0x393f('0x1d')][_0x393f('0x21')],function(_0x5ae3be){return{'model':db[_0x5ae3be['model']],'as':_0x5ae3be['as'],'attributes':_0x5ae3be[_0x393f('0x20')],'include':_0x5ae3be[_0x393f('0x21')]?_['map'](_0x5ae3be[_0x393f('0x21')],function(_0x1544a6){return{'model':db[_0x1544a6[_0x393f('0x23')]],'as':_0x1544a6['as'],'attributes':_0x1544a6[_0x393f('0x20')],'include':_0x1544a6['include']?_[_0x393f('0x22')](_0x1544a6[_0x393f('0x21')],function(_0x124176){return{'model':db[_0x124176[_0x393f('0x23')]],'as':_0x124176['as'],'attributes':_0x124176[_0x393f('0x20')]};}):[]};}):[]};}):[]:[]})[_0x393f('0xf')](function(_0x263344){logger[_0x393f('0x10')](_0x393f('0x1a'),_0x4491e5);logger[_0x393f('0x13')](_0x393f('0x1a'),_0x4491e5,JSON[_0x393f('0x15')](_0x263344));_0x147e9b(_0x263344);})[_0x393f('0x19')](function(_0x159756){logger[_0x393f('0x16')](_0x393f('0x1a'),_0x159756[_0x393f('0x18')],_0x4491e5);_0x1a6511(_0x48e081['error'](0x1f4,_0x159756[_0x393f('0x18')]));});});};
\ No newline at end of file
+var _0x05ce=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','ShowSmsAccount','SmsAccount','find','options','where','attributes','include','map','model','lodash','util','moment','bluebird'];(function(_0x3a4082,_0x5a7324){var _0x246d4c=function(_0x19decc){while(--_0x19decc){_0x3a4082['push'](_0x3a4082['shift']());}};_0x246d4c(++_0x5a7324);}(_0x05ce,0x10d));var _0xe05c=function(_0x353530,_0x380a38){_0x353530=_0x353530-0x0;var _0x178390=_0x05ce[_0x353530];return _0x178390;};'use strict';var _=require(_0xe05c('0x0'));var util=require(_0xe05c('0x1'));var moment=require(_0xe05c('0x2'));var BPromise=require(_0xe05c('0x3'));var rs=require(_0xe05c('0x4'));var fs=require('fs');var Redis=require(_0xe05c('0x5'));var db=require(_0xe05c('0x6'))['db'];var utils=require(_0xe05c('0x7'));var logger=require(_0xe05c('0x8'))(_0xe05c('0x9'));var config=require(_0xe05c('0xa'));var jayson=require(_0xe05c('0xb'));var client=jayson[_0xe05c('0xc')][_0xe05c('0xd')]({'port':0x232a});config[_0xe05c('0xe')]=_[_0xe05c('0xf')](config[_0xe05c('0xe')],{'host':_0xe05c('0x10'),'port':0x18eb});var socket=require(_0xe05c('0x11'))(new Redis(config['redis']));require(_0xe05c('0x12'))[_0xe05c('0x13')](socket);function respondWithRpcPromise(_0x52d66d,_0x20a4d9,_0x47c90b){return new BPromise(function(_0x57eb3c,_0x24bac8){return client[_0xe05c('0x14')](_0x52d66d,_0x47c90b)[_0xe05c('0x15')](function(_0x52daa6){logger[_0xe05c('0x16')](_0xe05c('0x17'),_0x20a4d9,_0xe05c('0x18'));logger[_0xe05c('0x19')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x20a4d9,_0xe05c('0x18'),JSON[_0xe05c('0x1a')](_0x52daa6));if(_0x52daa6[_0xe05c('0x1b')]){if(_0x52daa6[_0xe05c('0x1b')]['code']===0x1f4){logger[_0xe05c('0x1b')](_0xe05c('0x17'),_0x20a4d9,_0x52daa6[_0xe05c('0x1b')][_0xe05c('0x1c')]);return _0x24bac8(_0x52daa6[_0xe05c('0x1b')]['message']);}logger[_0xe05c('0x1b')]('SmsAccount,\x20%s,\x20%s',_0x20a4d9,_0x52daa6[_0xe05c('0x1b')][_0xe05c('0x1c')]);return _0x57eb3c(_0x52daa6['error']['message']);}else{logger[_0xe05c('0x16')](_0xe05c('0x17'),_0x20a4d9,_0xe05c('0x18'));_0x57eb3c(_0x52daa6['result'][_0xe05c('0x1c')]);}})[_0xe05c('0x1d')](function(_0x292d18){logger['error'](_0xe05c('0x17'),_0x20a4d9,_0x292d18);_0x24bac8(_0x292d18);});});}exports[_0xe05c('0x1e')]=function(_0x213778){var _0x2b3af7=this;return new Promise(function(_0x89d2d,_0x171460){return db[_0xe05c('0x1f')][_0xe05c('0x20')]({'raw':_0x213778[_0xe05c('0x21')]?_0x213778[_0xe05c('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x213778[_0xe05c('0x21')]?_0x213778[_0xe05c('0x21')][_0xe05c('0x22')]||null:null,'attributes':_0x213778[_0xe05c('0x21')]?_0x213778[_0xe05c('0x21')][_0xe05c('0x23')]||null:null,'include':_0x213778[_0xe05c('0x21')]?_0x213778[_0xe05c('0x21')][_0xe05c('0x24')]?_['map'](_0x213778[_0xe05c('0x21')][_0xe05c('0x24')],function(_0x43f119){return{'model':db[_0x43f119['model']],'as':_0x43f119['as'],'attributes':_0x43f119['attributes'],'include':_0x43f119[_0xe05c('0x24')]?_[_0xe05c('0x25')](_0x43f119[_0xe05c('0x24')],function(_0x559b1d){return{'model':db[_0x559b1d[_0xe05c('0x26')]],'as':_0x559b1d['as'],'attributes':_0x559b1d['attributes'],'include':_0x559b1d[_0xe05c('0x24')]?_['map'](_0x559b1d['include'],function(_0x6d2394){return{'model':db[_0x6d2394[_0xe05c('0x26')]],'as':_0x6d2394['as'],'attributes':_0x6d2394[_0xe05c('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x294902){logger[_0xe05c('0x16')](_0xe05c('0x1e'),_0x213778);logger[_0xe05c('0x19')]('ShowSmsAccount',_0x213778,JSON[_0xe05c('0x1a')](_0x294902));_0x89d2d(_0x294902);})['catch'](function(_0x183bb3){logger['error'](_0xe05c('0x1e'),_0x183bb3[_0xe05c('0x1c')],_0x213778);_0x171460(_0x2b3af7[_0xe05c('0x1b')](0x1f4,_0x183bb3[_0xe05c('0x1c')]));});});};
\ No newline at end of file
index 9d9e372..2e60133 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index c9dd7d8..6fb4f11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','post','put','/:id'];(function(_0x285547,_0x1f1211){var _0x5ab672=function(_0x1cbef5){while(--_0x1cbef5){_0x285547['push'](_0x285547['shift']());}};_0x5ab672(++_0x1f1211);}(_0x008c,0x188));var _0xc008=function(_0x34bab7,_0xedfc66){_0x34bab7=_0x34bab7-0x0;var _0x8319f7=_0x008c[_0x34bab7];return _0x8319f7;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc008('0xe')](_0xc008('0xf'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc008('0xf'),auth[_0xc008('0xb')](),controller['destroy']);module[_0xc008('0x10')]=router;
\ No newline at end of file
+var _0x3e74=['path','connect-timeout','express','../../components/auth/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x50f298,_0x15ec50){var _0xa1ab2=function(_0x4d1f34){while(--_0x4d1f34){_0x50f298['push'](_0x50f298['shift']());}};_0xa1ab2(++_0x15ec50);}(_0x3e74,0x175));var _0x43e7=function(_0x16e634,_0x4c5ebd){_0x16e634=_0x16e634-0x0;var _0x322248=_0x3e74[_0x16e634];return _0x322248;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0xc')]('/',auth[_0x43e7('0x8')](),controller['create']);router[_0x43e7('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x43e7('0xe')]);router[_0x43e7('0xf')]('/:id',auth[_0x43e7('0x8')](),controller['destroy']);module[_0x43e7('0x10')]=router;
\ No newline at end of file
index 9c9cf9e..f6a248d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbb=['exports','INTEGER','STRING','noop','*,*,*,*'];(function(_0x5278f9,_0x3a03af){var _0x36c30d=function(_0x4985fc){while(--_0x4985fc){_0x5278f9['push'](_0x5278f9['shift']());}};_0x36c30d(++_0x3a03af);}(_0xbbbb,0x154));var _0xbbbb=function(_0x5e6c25,_0x4ecd3c){_0x5e6c25=_0x5e6c25-0x0;var _0x2a5a38=_0xbbbb[_0x5e6c25];return _0x2a5a38;};'use strict';var Sequelize=require('sequelize');module[_0xbbbb('0x0')]={'priority':{'type':Sequelize[_0xbbbb('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xbbbb('0x2')],'allowNull':![],'defaultValue':_0xbbbb('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xbbbb('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xbbbb('0x4')}};
\ No newline at end of file
+var _0x85d1=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0xae1e51,_0x4306a6){var _0x1c2e67=function(_0x4ccde0){while(--_0x4ccde0){_0xae1e51['push'](_0xae1e51['shift']());}};_0x1c2e67(++_0x4306a6);}(_0x85d1,0x1a0));var _0x185d=function(_0x1f7120,_0x53456a){_0x1f7120=_0x1f7120-0x0;var _0x512142=_0x85d1[_0x1f7120];return _0x512142;};'use strict';var Sequelize=require(_0x185d('0x0'));module[_0x185d('0x1')]={'priority':{'type':Sequelize[_0x185d('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x185d('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x185d('0x4')]()},'description':{'type':Sequelize[_0x185d('0x3')]},'interval':{'type':Sequelize[_0x185d('0x3')],'defaultValue':_0x185d('0x5')}};
\ No newline at end of file
index bb2bce3..9944b22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc452=['apply','save','update','destroy','then','status','sendStatus','error','stack','name','send','index','map','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','count','include','SmsApplication','findAll','rows','catch','show','params','rawAttributes','includeAll','options','find','create','body','rimraf','zip-dir','request-promise','moment','bluebird','util','path','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','offset','undefined','limit','set','Content-Range'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc452,0x155));var _0x2c45=function(_0x3bc56d,_0x34890e){_0x3bc56d=_0x3bc56d-0x0;var _0x3e20a0=_0xc452[_0x3bc56d];return _0x3e20a0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2c45('0x0'));var zipdir=require(_0x2c45('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2c45('0x2'));var moment=require(_0x2c45('0x3'));var BPromise=require(_0x2c45('0x4'));var Mustache=require('mustache');var util=require(_0x2c45('0x5'));var path=require(_0x2c45('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c45('0x7'));var _=require(_0x2c45('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2c45('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x2c45('0xa'));var querystring=require(_0x2c45('0xb'));var Papa=require(_0x2c45('0xc'));var Redis=require(_0x2c45('0xd'));var authService=require(_0x2c45('0xe'));var qs=require(_0x2c45('0xf'));var as=require(_0x2c45('0x10'));var hardwareService=require(_0x2c45('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x2c45('0x12'));var config=require(_0x2c45('0x13'));var licenseUtil=require(_0x2c45('0x14'));var db=require(_0x2c45('0x15'))['db'];function respondWithStatusCode(_0x17d972,_0x184fba){_0x184fba=_0x184fba||0xcc;return function(_0x2107bb){if(_0x2107bb){return _0x17d972['sendStatus'](_0x184fba);}return _0x17d972['status'](_0x184fba)[_0x2c45('0x16')]();};}function respondWithResult(_0x57d4ad,_0x2089ee){_0x2089ee=_0x2089ee||0xc8;return function(_0x548158){if(_0x548158){return _0x57d4ad['status'](_0x2089ee)[_0x2c45('0x17')](_0x548158);}};}function respondWithFilteredResult(_0x34b428,_0x559d16){return function(_0x1c9086){if(_0x1c9086){var _0x45c771=typeof _0x559d16[_0x2c45('0x18')]===_0x2c45('0x19')&&typeof _0x559d16[_0x2c45('0x1a')]===_0x2c45('0x19');var _0x3dc0ce=_0x1c9086['count'];var _0x44a29d=_0x45c771?0x0:_0x559d16[_0x2c45('0x18')];var _0x24b754=_0x45c771?_0x1c9086['count']:_0x559d16['offset']+_0x559d16[_0x2c45('0x1a')];var _0x38096b;if(_0x24b754>=_0x3dc0ce){_0x24b754=_0x3dc0ce;_0x38096b=0xc8;}else{_0x38096b=0xce;}_0x34b428['status'](_0x38096b);return _0x34b428[_0x2c45('0x1b')](_0x2c45('0x1c'),_0x44a29d+'-'+_0x24b754+'/'+_0x3dc0ce)['json'](_0x1c9086);}return null;};}function patchUpdates(_0x4c4096){return function(_0x55cc3d){try{jsonpatch[_0x2c45('0x1d')](_0x55cc3d,_0x4c4096,!![]);}catch(_0x37752f){return BPromise['reject'](_0x37752f);}return _0x55cc3d[_0x2c45('0x1e')]();};}function saveUpdates(_0x38415d,_0x118519){return function(_0x2eec11){if(_0x2eec11){return _0x2eec11[_0x2c45('0x1f')](_0x38415d)['then'](function(_0x2d5c29){return _0x2d5c29;});}return null;};}function removeEntity(_0xfd372d,_0xa12bf1){return function(_0x23aa03){if(_0x23aa03){return _0x23aa03[_0x2c45('0x20')]()[_0x2c45('0x21')](function(){_0xfd372d[_0x2c45('0x22')](0xcc)[_0x2c45('0x16')]();});}};}function handleEntityNotFound(_0x2f179a,_0x491fe1){return function(_0x44222a){if(!_0x44222a){_0x2f179a[_0x2c45('0x23')](0x194);}return _0x44222a;};}function handleError(_0xa6aa7b,_0x43220c){_0x43220c=_0x43220c||0x1f4;return function(_0x411ad4){logger[_0x2c45('0x24')](_0x411ad4[_0x2c45('0x25')]);if(_0x411ad4[_0x2c45('0x26')]){delete _0x411ad4[_0x2c45('0x26')];}_0xa6aa7b['status'](_0x43220c)[_0x2c45('0x27')](_0x411ad4);};}exports[_0x2c45('0x28')]=function(_0x42a0ba,_0x29f5d2){var _0x55e07a={},_0x2dfce9={},_0x1c71f0={'count':0x0,'rows':[]};var _0x4b2488=_[_0x2c45('0x29')](db['SmsApplication']['rawAttributes'],function(_0x1eab9c){return{'name':_0x1eab9c[_0x2c45('0x2a')],'type':_0x1eab9c['type'][_0x2c45('0x2b')]};});_0x2dfce9[_0x2c45('0x2c')]=_[_0x2c45('0x29')](_0x4b2488,_0x2c45('0x26'));_0x2dfce9[_0x2c45('0x2d')]=_[_0x2c45('0x2e')](_0x42a0ba[_0x2c45('0x2d')]);_0x2dfce9[_0x2c45('0x2f')]=_[_0x2c45('0x30')](_0x2dfce9[_0x2c45('0x2c')],_0x2dfce9[_0x2c45('0x2d')]);_0x55e07a[_0x2c45('0x31')]=_[_0x2c45('0x30')](_0x2dfce9[_0x2c45('0x2c')],qs[_0x2c45('0x32')](_0x42a0ba[_0x2c45('0x2d')][_0x2c45('0x32')]));_0x55e07a[_0x2c45('0x31')]=_0x55e07a[_0x2c45('0x31')]['length']?_0x55e07a[_0x2c45('0x31')]:_0x2dfce9[_0x2c45('0x2c')];if(!_0x42a0ba['query'][_0x2c45('0x33')](_0x2c45('0x34'))){_0x55e07a[_0x2c45('0x1a')]=qs['limit'](_0x42a0ba[_0x2c45('0x2d')][_0x2c45('0x1a')]);_0x55e07a[_0x2c45('0x18')]=qs[_0x2c45('0x18')](_0x42a0ba[_0x2c45('0x2d')][_0x2c45('0x18')]);}_0x55e07a[_0x2c45('0x35')]=qs[_0x2c45('0x36')](_0x42a0ba[_0x2c45('0x2d')][_0x2c45('0x36')]);_0x55e07a[_0x2c45('0x37')]=qs[_0x2c45('0x2f')](_[_0x2c45('0x38')](_0x42a0ba[_0x2c45('0x2d')],_0x2dfce9[_0x2c45('0x2f')]),_0x4b2488);if(_0x42a0ba[_0x2c45('0x2d')][_0x2c45('0x39')]){_0x55e07a[_0x2c45('0x37')]=_[_0x2c45('0x3a')](_0x55e07a[_0x2c45('0x37')],{'$or':_[_0x2c45('0x29')](_0x4b2488,function(_0x49708a){if(_0x49708a[_0x2c45('0x3b')]!=='VIRTUAL'){var _0x2346f4={};_0x2346f4[_0x49708a['name']]={'$like':'%'+_0x42a0ba['query'][_0x2c45('0x39')]+'%'};return _0x2346f4;}})});}_0x55e07a=_['merge']({},_0x55e07a,_0x42a0ba['options']);var _0x1334a3={'where':_0x55e07a[_0x2c45('0x37')]};return db['SmsApplication'][_0x2c45('0x3c')](_0x1334a3)[_0x2c45('0x21')](function(_0x1f7687){_0x1c71f0[_0x2c45('0x3c')]=_0x1f7687;if(_0x42a0ba['query']['includeAll']){_0x55e07a[_0x2c45('0x3d')]=[{'all':!![]}];}return db[_0x2c45('0x3e')][_0x2c45('0x3f')](_0x55e07a);})['then'](function(_0x2c7ce8){_0x1c71f0[_0x2c45('0x40')]=_0x2c7ce8;return _0x1c71f0;})[_0x2c45('0x21')](respondWithFilteredResult(_0x29f5d2,_0x55e07a))[_0x2c45('0x41')](handleError(_0x29f5d2,null));};exports[_0x2c45('0x42')]=function(_0x1b8ecb,_0x1e7deb){var _0x333933={'raw':!![],'where':{'id':_0x1b8ecb[_0x2c45('0x43')]['id']}},_0x28463d={};_0x28463d[_0x2c45('0x2c')]=_['keys'](db[_0x2c45('0x3e')][_0x2c45('0x44')]);_0x28463d['query']=_[_0x2c45('0x2e')](_0x1b8ecb[_0x2c45('0x2d')]);_0x28463d[_0x2c45('0x2f')]=_['intersection'](_0x28463d['model'],_0x28463d['query']);_0x333933[_0x2c45('0x31')]=_[_0x2c45('0x30')](_0x28463d[_0x2c45('0x2c')],qs['fields'](_0x1b8ecb[_0x2c45('0x2d')][_0x2c45('0x32')]));_0x333933[_0x2c45('0x31')]=_0x333933[_0x2c45('0x31')]['length']?_0x333933['attributes']:_0x28463d[_0x2c45('0x2c')];if(_0x1b8ecb[_0x2c45('0x2d')][_0x2c45('0x45')]){_0x333933[_0x2c45('0x3d')]=[{'all':!![]}];}_0x333933=_['merge']({},_0x333933,_0x1b8ecb[_0x2c45('0x46')]);return db[_0x2c45('0x3e')][_0x2c45('0x47')](_0x333933)[_0x2c45('0x21')](handleEntityNotFound(_0x1e7deb,null))[_0x2c45('0x21')](respondWithResult(_0x1e7deb,null))[_0x2c45('0x41')](handleError(_0x1e7deb,null));};exports[_0x2c45('0x48')]=function(_0x21909c,_0x276027){return db[_0x2c45('0x3e')][_0x2c45('0x48')](_0x21909c['body'],{})['then'](respondWithResult(_0x276027,0xc9))[_0x2c45('0x41')](handleError(_0x276027,null));};exports[_0x2c45('0x1f')]=function(_0x7edb13,_0x42651d){if(_0x7edb13['body']['id']){delete _0x7edb13[_0x2c45('0x49')]['id'];}return db['SmsApplication'][_0x2c45('0x47')]({'where':{'id':_0x7edb13[_0x2c45('0x43')]['id']}})[_0x2c45('0x21')](handleEntityNotFound(_0x42651d,null))[_0x2c45('0x21')](saveUpdates(_0x7edb13['body'],null))['then'](respondWithResult(_0x42651d,null))[_0x2c45('0x41')](handleError(_0x42651d,null));};exports[_0x2c45('0x20')]=function(_0x103b9b,_0x5137d0){return db[_0x2c45('0x3e')]['find']({'where':{'id':_0x103b9b[_0x2c45('0x43')]['id']}})['then'](handleEntityNotFound(_0x5137d0,null))[_0x2c45('0x21')](removeEntity(_0x5137d0,null))[_0x2c45('0x41')](handleError(_0x5137d0,null));};
\ No newline at end of file
+var _0x931a=['key','model','name','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','includeAll','include','then','catch','show','options','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','end','error','stack','send','index','map','SmsApplication','rawAttributes','fieldName'];(function(_0x4422c9,_0x1f4879){var _0x53c8cd=function(_0x10322e){while(--_0x10322e){_0x4422c9['push'](_0x4422c9['shift']());}};_0x53c8cd(++_0x1f4879);}(_0x931a,0x10d));var _0xa931=function(_0x51d2b1,_0x3fcc3f){_0x51d2b1=_0x51d2b1-0x0;var _0x1d71ae=_0x931a[_0x51d2b1];return _0x1d71ae;};'use strict';var emlformat=require(_0xa931('0x0'));var rimraf=require(_0xa931('0x1'));var zipdir=require(_0xa931('0x2'));var jsonpatch=require(_0xa931('0x3'));var rp=require(_0xa931('0x4'));var moment=require(_0xa931('0x5'));var BPromise=require(_0xa931('0x6'));var Mustache=require(_0xa931('0x7'));var util=require(_0xa931('0x8'));var path=require('path');var sox=require(_0xa931('0x9'));var csv=require(_0xa931('0xa'));var ejs=require(_0xa931('0xb'));var fs=require('fs');var fs_extra=require(_0xa931('0xc'));var _=require(_0xa931('0xd'));var squel=require(_0xa931('0xe'));var crypto=require(_0xa931('0xf'));var jsforce=require(_0xa931('0x10'));var deskjs=require(_0xa931('0x11'));var toCsv=require(_0xa931('0xa'));var querystring=require(_0xa931('0x12'));var Papa=require(_0xa931('0x13'));var Redis=require(_0xa931('0x14'));var authService=require(_0xa931('0x15'));var qs=require(_0xa931('0x16'));var as=require(_0xa931('0x17'));var hardwareService=require(_0xa931('0x18'));var logger=require('../../config/logger')('api');var utils=require(_0xa931('0x19'));var config=require(_0xa931('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xa931('0x1b'))['db'];function respondWithStatusCode(_0x18e6bc,_0x4d3b1c){_0x4d3b1c=_0x4d3b1c||0xcc;return function(_0x47b964){if(_0x47b964){return _0x18e6bc[_0xa931('0x1c')](_0x4d3b1c);}return _0x18e6bc[_0xa931('0x1d')](_0x4d3b1c)['end']();};}function respondWithResult(_0x28a627,_0x4f7502){_0x4f7502=_0x4f7502||0xc8;return function(_0x52dc59){if(_0x52dc59){return _0x28a627[_0xa931('0x1d')](_0x4f7502)[_0xa931('0x1e')](_0x52dc59);}};}function respondWithFilteredResult(_0x1c06d3,_0x46394d){return function(_0x44fef7){if(_0x44fef7){var _0x56b6f8=typeof _0x46394d[_0xa931('0x1f')]===_0xa931('0x20')&&typeof _0x46394d[_0xa931('0x21')]===_0xa931('0x20');var _0x2b3b11=_0x44fef7[_0xa931('0x22')];var _0x1cea3a=_0x56b6f8?0x0:_0x46394d[_0xa931('0x1f')];var _0x88d4e2=_0x56b6f8?_0x44fef7[_0xa931('0x22')]:_0x46394d[_0xa931('0x1f')]+_0x46394d[_0xa931('0x21')];var _0x50e7be;if(_0x88d4e2>=_0x2b3b11){_0x88d4e2=_0x2b3b11;_0x50e7be=0xc8;}else{_0x50e7be=0xce;}_0x1c06d3[_0xa931('0x1d')](_0x50e7be);return _0x1c06d3[_0xa931('0x23')](_0xa931('0x24'),_0x1cea3a+'-'+_0x88d4e2+'/'+_0x2b3b11)[_0xa931('0x1e')](_0x44fef7);}return null;};}function patchUpdates(_0x35f608){return function(_0x13ae66){try{jsonpatch[_0xa931('0x25')](_0x13ae66,_0x35f608,!![]);}catch(_0x37b73f){return BPromise[_0xa931('0x26')](_0x37b73f);}return _0x13ae66[_0xa931('0x27')]();};}function saveUpdates(_0x5edbbf,_0xdfee9){return function(_0x4f5564){if(_0x4f5564){return _0x4f5564[_0xa931('0x28')](_0x5edbbf)['then'](function(_0x93d4d9){return _0x93d4d9;});}return null;};}function removeEntity(_0x2ede98,_0x1ade00){return function(_0x1b10bd){if(_0x1b10bd){return _0x1b10bd[_0xa931('0x29')]()['then'](function(){_0x2ede98[_0xa931('0x1d')](0xcc)[_0xa931('0x2a')]();});}};}function handleEntityNotFound(_0x425c85,_0x3a0f1e){return function(_0x193e74){if(!_0x193e74){_0x425c85[_0xa931('0x1c')](0x194);}return _0x193e74;};}function handleError(_0x4f8133,_0x33cbd0){_0x33cbd0=_0x33cbd0||0x1f4;return function(_0x51cbe6){logger[_0xa931('0x2b')](_0x51cbe6[_0xa931('0x2c')]);if(_0x51cbe6['name']){delete _0x51cbe6['name'];}_0x4f8133[_0xa931('0x1d')](_0x33cbd0)[_0xa931('0x2d')](_0x51cbe6);};}exports[_0xa931('0x2e')]=function(_0x117c55,_0x3440b3){var _0x5d3884={},_0x502252={},_0x335cc1={'count':0x0,'rows':[]};var _0x3e2853=_[_0xa931('0x2f')](db[_0xa931('0x30')][_0xa931('0x31')],function(_0x5e040a){return{'name':_0x5e040a[_0xa931('0x32')],'type':_0x5e040a['type'][_0xa931('0x33')]};});_0x502252[_0xa931('0x34')]=_['map'](_0x3e2853,_0xa931('0x35'));_0x502252[_0xa931('0x36')]=_[_0xa931('0x37')](_0x117c55[_0xa931('0x36')]);_0x502252[_0xa931('0x38')]=_['intersection'](_0x502252[_0xa931('0x34')],_0x502252[_0xa931('0x36')]);_0x5d3884['attributes']=_[_0xa931('0x39')](_0x502252[_0xa931('0x34')],qs['fields'](_0x117c55['query'][_0xa931('0x3a')]));_0x5d3884[_0xa931('0x3b')]=_0x5d3884[_0xa931('0x3b')][_0xa931('0x3c')]?_0x5d3884['attributes']:_0x502252[_0xa931('0x34')];if(!_0x117c55['query']['hasOwnProperty'](_0xa931('0x3d'))){_0x5d3884[_0xa931('0x21')]=qs['limit'](_0x117c55['query']['limit']);_0x5d3884[_0xa931('0x1f')]=qs[_0xa931('0x1f')](_0x117c55['query'][_0xa931('0x1f')]);}_0x5d3884[_0xa931('0x3e')]=qs[_0xa931('0x3f')](_0x117c55[_0xa931('0x36')][_0xa931('0x3f')]);_0x5d3884[_0xa931('0x40')]=qs[_0xa931('0x38')](_[_0xa931('0x41')](_0x117c55['query'],_0x502252[_0xa931('0x38')]),_0x3e2853);if(_0x117c55[_0xa931('0x36')]['filter']){_0x5d3884[_0xa931('0x40')]=_[_0xa931('0x42')](_0x5d3884[_0xa931('0x40')],{'$or':_[_0xa931('0x2f')](_0x3e2853,function(_0x3b377b){if(_0x3b377b[_0xa931('0x43')]!==_0xa931('0x44')){var _0x5db0b5={};_0x5db0b5[_0x3b377b['name']]={'$like':'%'+_0x117c55[_0xa931('0x36')][_0xa931('0x45')]+'%'};return _0x5db0b5;}})});}_0x5d3884=_['merge']({},_0x5d3884,_0x117c55['options']);var _0x44197c={'where':_0x5d3884[_0xa931('0x40')]};return db[_0xa931('0x30')]['count'](_0x44197c)['then'](function(_0x56410f){_0x335cc1[_0xa931('0x22')]=_0x56410f;if(_0x117c55[_0xa931('0x36')][_0xa931('0x46')]){_0x5d3884[_0xa931('0x47')]=[{'all':!![]}];}return db[_0xa931('0x30')]['findAll'](_0x5d3884);})['then'](function(_0x1aee4e){_0x335cc1['rows']=_0x1aee4e;return _0x335cc1;})[_0xa931('0x48')](respondWithFilteredResult(_0x3440b3,_0x5d3884))[_0xa931('0x49')](handleError(_0x3440b3,null));};exports[_0xa931('0x4a')]=function(_0x2805e2,_0xa470){var _0x1e03a6={'raw':!![],'where':{'id':_0x2805e2['params']['id']}},_0xd0f967={};_0xd0f967['model']=_[_0xa931('0x37')](db[_0xa931('0x30')][_0xa931('0x31')]);_0xd0f967[_0xa931('0x36')]=_[_0xa931('0x37')](_0x2805e2[_0xa931('0x36')]);_0xd0f967[_0xa931('0x38')]=_[_0xa931('0x39')](_0xd0f967[_0xa931('0x34')],_0xd0f967[_0xa931('0x36')]);_0x1e03a6[_0xa931('0x3b')]=_['intersection'](_0xd0f967[_0xa931('0x34')],qs['fields'](_0x2805e2[_0xa931('0x36')][_0xa931('0x3a')]));_0x1e03a6[_0xa931('0x3b')]=_0x1e03a6[_0xa931('0x3b')][_0xa931('0x3c')]?_0x1e03a6[_0xa931('0x3b')]:_0xd0f967['model'];if(_0x2805e2[_0xa931('0x36')][_0xa931('0x46')]){_0x1e03a6[_0xa931('0x47')]=[{'all':!![]}];}_0x1e03a6=_['merge']({},_0x1e03a6,_0x2805e2[_0xa931('0x4b')]);return db['SmsApplication'][_0xa931('0x4c')](_0x1e03a6)[_0xa931('0x48')](handleEntityNotFound(_0xa470,null))[_0xa931('0x48')](respondWithResult(_0xa470,null))[_0xa931('0x49')](handleError(_0xa470,null));};exports[_0xa931('0x4d')]=function(_0x23a22e,_0x3600d3){return db[_0xa931('0x30')][_0xa931('0x4d')](_0x23a22e[_0xa931('0x4e')],{})[_0xa931('0x48')](respondWithResult(_0x3600d3,0xc9))['catch'](handleError(_0x3600d3,null));};exports['update']=function(_0x5cbef0,_0x48b232){if(_0x5cbef0['body']['id']){delete _0x5cbef0[_0xa931('0x4e')]['id'];}return db['SmsApplication'][_0xa931('0x4c')]({'where':{'id':_0x5cbef0['params']['id']}})[_0xa931('0x48')](handleEntityNotFound(_0x48b232,null))[_0xa931('0x48')](saveUpdates(_0x5cbef0[_0xa931('0x4e')],null))[_0xa931('0x48')](respondWithResult(_0x48b232,null))[_0xa931('0x49')](handleError(_0x48b232,null));};exports[_0xa931('0x29')]=function(_0x5524e1,_0x32a0ee){return db[_0xa931('0x30')]['find']({'where':{'id':_0x5524e1[_0xa931('0x4f')]['id']}})[_0xa931('0x48')](handleEntityNotFound(_0x32a0ee,null))['then'](removeEntity(_0x32a0ee,null))['catch'](handleError(_0x32a0ee,null));};
\ No newline at end of file
index 7a09139..6af1f9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x514e=['define','SmsApplication','sms_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes'];(function(_0x581220,_0x39fe06){var _0x6578cd=function(_0x13b514){while(--_0x13b514){_0x581220['push'](_0x581220['shift']());}};_0x6578cd(++_0x39fe06);}(_0x514e,0x146));var _0xe514=function(_0x3d5244,_0x4a98bc){_0x3d5244=_0x3d5244-0x0;var _0x47f052=_0x514e[_0x3d5244];return _0x47f052;};'use strict';var _=require(_0xe514('0x0'));var util=require(_0xe514('0x1'));var logger=require(_0xe514('0x2'))(_0xe514('0x3'));var moment=require('moment');var BPromise=require(_0xe514('0x4'));var rp=require(_0xe514('0x5'));var fs=require('fs');var path=require(_0xe514('0x6'));var rimraf=require(_0xe514('0x7'));var config=require(_0xe514('0x8'));var attributes=require(_0xe514('0x9'));module['exports']=function(_0x46a1d2,_0x12fda1){return _0x46a1d2[_0xe514('0xa')](_0xe514('0xb'),attributes,{'tableName':_0xe514('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xe514('0xd')});};
\ No newline at end of file
+var _0xcf73=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','SmsApplication','utf8mb4','utf8mb4_unicode_ci'];(function(_0x4dd24b,_0x49b06b){var _0x951311=function(_0x2001d7){while(--_0x2001d7){_0x4dd24b['push'](_0x4dd24b['shift']());}};_0x951311(++_0x49b06b);}(_0xcf73,0x15c));var _0x3cf7=function(_0x53d3ad,_0x47bd1b){_0x53d3ad=_0x53d3ad-0x0;var _0x1362b0=_0xcf73[_0x53d3ad];return _0x1362b0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3cf7('0x0'))('api');var moment=require(_0x3cf7('0x1'));var BPromise=require(_0x3cf7('0x2'));var rp=require(_0x3cf7('0x3'));var fs=require('fs');var path=require(_0x3cf7('0x4'));var rimraf=require(_0x3cf7('0x5'));var config=require(_0x3cf7('0x6'));var attributes=require(_0x3cf7('0x7'));module[_0x3cf7('0x8')]=function(_0x207292,_0x5e68bb){return _0x207292['define'](_0x3cf7('0x9'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3cf7('0xa'),'collate':_0x3cf7('0xb')});};
\ No newline at end of file
index 06de4fd..f9723ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc599=['rpc','../../config/environment','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x4544cd,_0x3da8a3){var _0x477de0=function(_0xb16f66){while(--_0xb16f66){_0x4544cd['push'](_0x4544cd['shift']());}};_0x477de0(++_0x3da8a3);}(_0xc599,0x1b2));var _0x9c59=function(_0x5c50f7,_0x312a25){_0x5c50f7=_0x5c50f7-0x0;var _0x41aa2d=_0xc599[_0x5c50f7];return _0x41aa2d;};'use strict';var _=require('lodash');var util=require(_0x9c59('0x0'));var moment=require('moment');var BPromise=require(_0x9c59('0x1'));var rs=require(_0x9c59('0x2'));var fs=require('fs');var Redis=require(_0x9c59('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9c59('0x4'));var logger=require(_0x9c59('0x5'))(_0x9c59('0x6'));var config=require(_0x9c59('0x7'));var jayson=require(_0x9c59('0x8'));var client=jayson[_0x9c59('0x9')][_0x9c59('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a92a1,_0x5eb661,_0x23169c){return new BPromise(function(_0x5ae4ab,_0x1220ad){return client['request'](_0x4a92a1,_0x23169c)[_0x9c59('0xb')](function(_0x458903){logger[_0x9c59('0xc')](_0x9c59('0xd'),_0x5eb661,'request\x20sent');logger['debug'](_0x9c59('0xe'),_0x5eb661,'request\x20sent',JSON[_0x9c59('0xf')](_0x458903));if(_0x458903['error']){if(_0x458903[_0x9c59('0x10')]['code']===0x1f4){logger[_0x9c59('0x10')](_0x9c59('0xd'),_0x5eb661,_0x458903[_0x9c59('0x10')]['message']);return _0x1220ad(_0x458903['error']['message']);}logger['error']('SmsApplication,\x20%s,\x20%s',_0x5eb661,_0x458903[_0x9c59('0x10')][_0x9c59('0x11')]);return _0x5ae4ab(_0x458903[_0x9c59('0x10')][_0x9c59('0x11')]);}else{logger['info'](_0x9c59('0xd'),_0x5eb661,_0x9c59('0x12'));_0x5ae4ab(_0x458903[_0x9c59('0x13')]['message']);}})['catch'](function(_0x4d6ca7){logger[_0x9c59('0x10')](_0x9c59('0xd'),_0x5eb661,_0x4d6ca7);_0x1220ad(_0x4d6ca7);});});}
\ No newline at end of file
+var _0x6f83=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x6f83,0x72));var _0x36f8=function(_0x3230f9,_0x4f6bbd){_0x3230f9=_0x3230f9-0x0;var _0x44f77d=_0x6f83[_0x3230f9];return _0x44f77d;};'use strict';var _=require('lodash');var util=require(_0x36f8('0x0'));var moment=require(_0x36f8('0x1'));var BPromise=require('bluebird');var rs=require(_0x36f8('0x2'));var fs=require('fs');var Redis=require(_0x36f8('0x3'));var db=require(_0x36f8('0x4'))['db'];var utils=require(_0x36f8('0x5'));var logger=require(_0x36f8('0x6'))(_0x36f8('0x7'));var config=require(_0x36f8('0x8'));var jayson=require(_0x36f8('0x9'));var client=jayson[_0x36f8('0xa')][_0x36f8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27d94b,_0x2c0367,_0x370a97){return new BPromise(function(_0x3fe644,_0x22b992){return client[_0x36f8('0xc')](_0x27d94b,_0x370a97)['then'](function(_0x48c7b2){logger['info'](_0x36f8('0xd'),_0x2c0367,_0x36f8('0xe'));logger[_0x36f8('0xf')](_0x36f8('0x10'),_0x2c0367,_0x36f8('0xe'),JSON[_0x36f8('0x11')](_0x48c7b2));if(_0x48c7b2[_0x36f8('0x12')]){if(_0x48c7b2[_0x36f8('0x12')][_0x36f8('0x13')]===0x1f4){logger['error'](_0x36f8('0xd'),_0x2c0367,_0x48c7b2[_0x36f8('0x12')][_0x36f8('0x14')]);return _0x22b992(_0x48c7b2[_0x36f8('0x12')]['message']);}logger[_0x36f8('0x12')](_0x36f8('0xd'),_0x2c0367,_0x48c7b2[_0x36f8('0x12')]['message']);return _0x3fe644(_0x48c7b2[_0x36f8('0x12')][_0x36f8('0x14')]);}else{logger[_0x36f8('0x15')]('SmsApplication,\x20%s,\x20%s',_0x2c0367,_0x36f8('0xe'));_0x3fe644(_0x48c7b2[_0x36f8('0x16')][_0x36f8('0x14')]);}})[_0x36f8('0x17')](function(_0x5ec545){logger['error'](_0x36f8('0xd'),_0x2c0367,_0x5ec545);_0x22b992(_0x5ec545);});});}
\ No newline at end of file
index 2815ecc..94f3a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36ee=['../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','smsinteraction:addtags','addTags','put','tracked','sms','smsinteraction:update','update','delete','smsinteraction:destroy','/:id/tags','removeTags','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3a329d,_0x55e6c6){var _0x1aaf90=function(_0x555bdc){while(--_0x555bdc){_0x3a329d['push'](_0x3a329d['shift']());}};_0x1aaf90(++_0x55e6c6);}(_0x36ee,0xe8));var _0xe36e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x36ee[_0x397e5f];return _0x5302b8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe36e('0x0'));var timeout=require('connect-timeout');var express=require(_0xe36e('0x1'));var router=express[_0xe36e('0x2')]();var fs_extra=require(_0xe36e('0x3'));var auth=require(_0xe36e('0x4'));var interaction=require(_0xe36e('0x5'));var config=require(_0xe36e('0x6'));var controller=require(_0xe36e('0x7'));router[_0xe36e('0x8')]('/',auth[_0xe36e('0x9')](),controller[_0xe36e('0xa')]);router[_0xe36e('0x8')](_0xe36e('0xb'),auth['isAuthenticated'](),controller[_0xe36e('0xc')]);router['get'](_0xe36e('0xd'),auth[_0xe36e('0x9')](),controller[_0xe36e('0xe')]);router['get'](_0xe36e('0xf'),auth['isAuthenticated'](),controller[_0xe36e('0x10')]);router[_0xe36e('0x8')](_0xe36e('0x11'),auth[_0xe36e('0x9')](),controller[_0xe36e('0x12')]);router[_0xe36e('0x13')]('/',auth[_0xe36e('0x9')](),controller[_0xe36e('0x14')]);router['post'](_0xe36e('0xf'),auth[_0xe36e('0x9')](),controller[_0xe36e('0x15')]);router[_0xe36e('0x13')]('/:id/tags',auth[_0xe36e('0x9')](),interaction['tracked']('sms',_0xe36e('0x16')),controller[_0xe36e('0x17')]);router[_0xe36e('0x18')](_0xe36e('0xd'),auth[_0xe36e('0x9')](),interaction[_0xe36e('0x19')](_0xe36e('0x1a'),_0xe36e('0x1b')),controller[_0xe36e('0x1c')]);router[_0xe36e('0x1d')]('/:id',auth[_0xe36e('0x9')](),interaction[_0xe36e('0x19')]('sms',_0xe36e('0x1e')),controller['destroy']);router[_0xe36e('0x1d')](_0xe36e('0x1f'),auth['isAuthenticated'](),controller[_0xe36e('0x20')]);module[_0xe36e('0x21')]=router;
\ No newline at end of file
+var _0xb62e=['removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','isAuthenticated','index','get','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','smsinteraction:addtags','addTags','put','sms','smsinteraction:update','update','delete','smsinteraction:destroy','destroy'];(function(_0x208caa,_0x17d73e){var _0x5decd5=function(_0x196cea){while(--_0x196cea){_0x208caa['push'](_0x208caa['shift']());}};_0x5decd5(++_0x17d73e);}(_0xb62e,0x1de));var _0xeb62=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xb62e[_0x6131cd];return _0x47e916;};'use strict';var multer=require(_0xeb62('0x0'));var util=require(_0xeb62('0x1'));var path=require(_0xeb62('0x2'));var timeout=require(_0xeb62('0x3'));var express=require('express');var router=express[_0xeb62('0x4')]();var fs_extra=require(_0xeb62('0x5'));var auth=require(_0xeb62('0x6'));var interaction=require(_0xeb62('0x7'));var config=require(_0xeb62('0x8'));var controller=require(_0xeb62('0x9'));router['get']('/',auth[_0xeb62('0xa')](),controller[_0xeb62('0xb')]);router[_0xeb62('0xc')]('/describe',auth[_0xeb62('0xa')](),controller[_0xeb62('0xd')]);router[_0xeb62('0xc')](_0xeb62('0xe'),auth['isAuthenticated'](),controller['show']);router[_0xeb62('0xc')](_0xeb62('0xf'),auth[_0xeb62('0xa')](),controller[_0xeb62('0x10')]);router[_0xeb62('0xc')](_0xeb62('0x11'),auth[_0xeb62('0xa')](),controller[_0xeb62('0x12')]);router[_0xeb62('0x13')]('/',auth[_0xeb62('0xa')](),controller['create']);router[_0xeb62('0x13')](_0xeb62('0xf'),auth[_0xeb62('0xa')](),controller[_0xeb62('0x14')]);router['post'](_0xeb62('0x15'),auth[_0xeb62('0xa')](),interaction[_0xeb62('0x16')]('sms',_0xeb62('0x17')),controller[_0xeb62('0x18')]);router[_0xeb62('0x19')]('/:id',auth[_0xeb62('0xa')](),interaction[_0xeb62('0x16')](_0xeb62('0x1a'),_0xeb62('0x1b')),controller[_0xeb62('0x1c')]);router[_0xeb62('0x1d')](_0xeb62('0xe'),auth[_0xeb62('0xa')](),interaction[_0xeb62('0x16')](_0xeb62('0x1a'),_0xeb62('0x1e')),controller[_0xeb62('0x1f')]);router[_0xeb62('0x1d')]('/:id/tags',auth[_0xeb62('0xa')](),controller[_0xeb62('0x20')]);module[_0xeb62('0x21')]=router;
\ No newline at end of file
index cf9b9df..9669e18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d9=['BOOLEAN','DATE','STRING','out','ENUM','sequelize','exports'];(function(_0x4c8057,_0x4c381c){var _0x4c3928=function(_0x54bdbd){while(--_0x54bdbd){_0x4c8057['push'](_0x4c8057['shift']());}};_0x4c3928(++_0x4c381c);}(_0xf4d9,0x7c));var _0x9f4d=function(_0x4007a0,_0x5e2a52){_0x4007a0=_0x4007a0-0x0;var _0x16801a=_0xf4d9[_0x4007a0];return _0x16801a;};'use strict';var Sequelize=require(_0x9f4d('0x0'));var moment=require('moment');module[_0x9f4d('0x1')]={'closed':{'type':Sequelize[_0x9f4d('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9f4d('0x3')]},'disposition':{'type':Sequelize[_0x9f4d('0x4')]},'secondDisposition':{'type':Sequelize[_0x9f4d('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x9f4d('0x4')]},'phone':{'type':Sequelize[_0x9f4d('0x4')]},'read1stAt':{'type':Sequelize[_0x9f4d('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x9f4d('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9f4d('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x9f4d('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9f4d('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x308a=['out','sequelize','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0x1bb7d8,_0x2b3471){var _0x134faf=function(_0x5a0236){while(--_0x5a0236){_0x1bb7d8['push'](_0x1bb7d8['shift']());}};_0x134faf(++_0x2b3471);}(_0x308a,0x71));var _0xa308=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x308a[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xa308('0x0'));var moment=require('moment');module[_0xa308('0x1')]={'closed':{'type':Sequelize[_0xa308('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xa308('0x3')]},'disposition':{'type':Sequelize[_0xa308('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xa308('0x4')]},'phone':{'type':Sequelize[_0xa308('0x4')]},'read1stAt':{'type':Sequelize[_0xa308('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xa308('0x5')]('in',_0xa308('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xa308('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xa308('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index c29785f..ca40c99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6424=['N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','out','System','renderFile','views','transcript-','.pdf','createPdfFromHTML','unlinkSync','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','then','stack','name','send','Users','map','fullname','TagIds','Tags','split','forEach','catch','index','SmsInteraction','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','nolimit','order','sort','where','pick','filters','field','color','from','tools_tags','select','u.id','ui.SmsInteractionId','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','expr','parseSearch','search','length','conditions','find','unreadMessages','value','`\x20=\x200','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','having','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','agent','sequelize','toString','keyBy','merge','fields','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','push','all','rows','includeAll','include','options','create','update','body','params','describe','SmsMessage','addMessage','ids','getMessages','findOne','hasOwnProperty','format','findAll','addTags','setTags','omit','spread','emit','smsInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','CmContact','firstName','lastName','Messages','direction','secret','Account','Owner','mkdirSync','Sms'];(function(_0x19ef43,_0x54b99d){var _0x346117=function(_0x3d9ad0){while(--_0x3d9ad0){_0x19ef43['push'](_0x19ef43['shift']());}};_0x346117(++_0x54b99d);}(_0x6424,0x100));var _0x4642=function(_0x107013,_0x1b8303){_0x107013=_0x107013-0x0;var _0x592050=_0x6424[_0x107013];return _0x592050;};'use strict';var emlformat=require(_0x4642('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4642('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4642('0x2'));var moment=require(_0x4642('0x3'));var BPromise=require(_0x4642('0x4'));var Mustache=require(_0x4642('0x5'));var util=require(_0x4642('0x6'));var path=require(_0x4642('0x7'));var sox=require(_0x4642('0x8'));var csv=require(_0x4642('0x9'));var ejs=require(_0x4642('0xa'));var fs=require('fs');var fs_extra=require(_0x4642('0xb'));var _=require('lodash');var squel=require(_0x4642('0xc'));var crypto=require(_0x4642('0xd'));var jsforce=require(_0x4642('0xe'));var deskjs=require(_0x4642('0xf'));var toCsv=require(_0x4642('0x9'));var querystring=require(_0x4642('0x10'));var Papa=require(_0x4642('0x11'));var Redis=require(_0x4642('0x12'));var authService=require(_0x4642('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x4642('0x14'));var hardwareService=require(_0x4642('0x15'));var logger=require(_0x4642('0x16'))(_0x4642('0x17'));var utils=require(_0x4642('0x18'));var config=require(_0x4642('0x19'));var licenseUtil=require(_0x4642('0x1a'));var db=require(_0x4642('0x1b'))['db'];config[_0x4642('0x1c')]=_[_0x4642('0x1d')](config[_0x4642('0x1c')],{'host':_0x4642('0x1e'),'port':0x18eb});var socket=require(_0x4642('0x1f'))(new Redis(config[_0x4642('0x1c')]));require('./smsInteraction.socket')[_0x4642('0x20')](socket);function respondWithStatusCode(_0x40096e,_0x3a4eaa){_0x3a4eaa=_0x3a4eaa||0xcc;return function(_0x5022a3){if(_0x5022a3){return _0x40096e[_0x4642('0x21')](_0x3a4eaa);}return _0x40096e[_0x4642('0x22')](_0x3a4eaa)[_0x4642('0x23')]();};}function respondWithResult(_0x3c6df4,_0x3cd4bd){_0x3cd4bd=_0x3cd4bd||0xc8;return function(_0x5a0c18){if(_0x5a0c18){return _0x3c6df4[_0x4642('0x22')](_0x3cd4bd)[_0x4642('0x24')](_0x5a0c18);}};}function respondWithFilteredResult(_0x5cc566,_0xae4588){return function(_0x1b73f5){if(_0x1b73f5){var _0x19f8ad=typeof _0xae4588[_0x4642('0x25')]===_0x4642('0x26')&&typeof _0xae4588[_0x4642('0x27')]===_0x4642('0x26');var _0x508903=_0x1b73f5[_0x4642('0x28')];var _0x4bb93d=_0x19f8ad?0x0:_0xae4588['offset'];var _0x1432bb=_0x19f8ad?_0x1b73f5[_0x4642('0x28')]:_0xae4588['offset']+_0xae4588[_0x4642('0x27')];var _0x49fc26;if(_0x1432bb>=_0x508903){_0x1432bb=_0x508903;_0x49fc26=0xc8;}else{_0x49fc26=0xce;}_0x5cc566['status'](_0x49fc26);return _0x5cc566[_0x4642('0x29')](_0x4642('0x2a'),_0x4bb93d+'-'+_0x1432bb+'/'+_0x508903)[_0x4642('0x24')](_0x1b73f5);}return null;};}function patchUpdates(_0x1967df){return function(_0x100546){try{jsonpatch[_0x4642('0x2b')](_0x100546,_0x1967df,!![]);}catch(_0xe9df15){return BPromise['reject'](_0xe9df15);}return _0x100546[_0x4642('0x2c')]();};}function saveUpdates(_0x125f48,_0x5bbfed){return function(_0x125641){if(_0x125641){return _0x125641['update'](_0x125f48)['then'](function(_0x4f5c01){return _0x4f5c01;});}return null;};}function removeEntity(_0xfaeaed,_0x5901d2){return function(_0x291c81){if(_0x291c81){return _0x291c81[_0x4642('0x2d')]()[_0x4642('0x2e')](function(){_0xfaeaed['status'](0xcc)[_0x4642('0x23')]();});}};}function handleEntityNotFound(_0x116553,_0x394299){return function(_0x138c43){if(!_0x138c43){_0x116553[_0x4642('0x21')](0x194);}return _0x138c43;};}function handleError(_0x3045c6,_0x264af4){_0x264af4=_0x264af4||0x1f4;return function(_0x2dd570){logger['error'](_0x2dd570[_0x4642('0x2f')]);if(_0x2dd570['name']){delete _0x2dd570[_0x4642('0x30')];}_0x3045c6[_0x4642('0x22')](_0x264af4)[_0x4642('0x31')](_0x2dd570);};}function getInteractionUsers(_0x1bde02,_0x450bd2){return new BPromise(function(_0x19d515,_0x411005){try{if(_0x450bd2[_0x1bde02['id']]){_0x1bde02[_0x4642('0x32')]=_[_0x4642('0x33')](_0x450bd2[_0x1bde02['id']],function(_0x2a3409){return{'id':_0x2a3409['id'],'fullname':_0x2a3409[_0x4642('0x34')]};});}}catch(_0x133160){_0x411005(_0x133160);}_0x19d515(_0x1bde02);});}function getInteractionTags(_0x5707e8,_0x3ae8d){return new BPromise(function(_0x58389f,_0x3893d5){try{if(_0x5707e8[_0x4642('0x35')]){_0x5707e8[_0x4642('0x36')]=[];_0x5707e8['TagIds'][_0x4642('0x37')](',')[_0x4642('0x38')](function(_0x4a42dd){_0x5707e8[_0x4642('0x36')]['push'](_0x3ae8d[_0x4a42dd]);});}delete _0x5707e8[_0x4642('0x35')];}catch(_0x3a6b8c){_0x3893d5(_0x3a6b8c);}_0x58389f(_0x5707e8);});}function updateSmsInteraction(_0x7fd097,_0x483be0,_0x468a7b){return new BPromise(function(_0x354769,_0x44f3ba){return getInteractionUsers(_0x7fd097,_0x468a7b)[_0x4642('0x2e')](function(_0x510216){return getInteractionTags(_0x510216,_0x483be0);})[_0x4642('0x2e')](function(_0x4f1c8f){_0x354769(_0x4f1c8f);})[_0x4642('0x39')](function(_0x834ae1){_0x44f3ba(_0x834ae1);});});}exports[_0x4642('0x3a')]=function(_0x1547c9,_0x2e9dbf){var _0x58680e={},_0x3e6a9f={},_0x565de4={'count':0x0,'rows':[]};var _0x1aa955=_[_0x4642('0x33')](db[_0x4642('0x3b')][_0x4642('0x3c')],function(_0xa9e135){return{'name':_0xa9e135[_0x4642('0x3d')],'type':_0xa9e135[_0x4642('0x3e')][_0x4642('0x3f')]};});_0x3e6a9f[_0x4642('0x40')]=_[_0x4642('0x33')](_0x1aa955,_0x4642('0x30'));_0x3e6a9f['query']=_[_0x4642('0x41')](_0x1547c9[_0x4642('0x42')]);_0x3e6a9f['filters']=_[_0x4642('0x43')](_0x3e6a9f[_0x4642('0x40')],_0x3e6a9f[_0x4642('0x42')]);_0x58680e['attributes']=_[_0x4642('0x43')](_0x3e6a9f['model'],qs['fields'](_0x1547c9[_0x4642('0x42')]['fields']));_0x58680e[_0x4642('0x44')]=_0x58680e[_0x4642('0x44')]['length']?_0x58680e[_0x4642('0x44')]:_0x3e6a9f[_0x4642('0x40')];if(!_0x1547c9['query']['hasOwnProperty'](_0x4642('0x45'))){_0x58680e['limit']=qs['limit'](_0x1547c9[_0x4642('0x42')][_0x4642('0x27')]);_0x58680e[_0x4642('0x25')]=qs['offset'](_0x1547c9['query'][_0x4642('0x25')]);}_0x58680e[_0x4642('0x46')]=qs[_0x4642('0x47')](_0x1547c9[_0x4642('0x42')][_0x4642('0x47')]);_0x58680e[_0x4642('0x48')]=qs['filters'](_[_0x4642('0x49')](_0x1547c9[_0x4642('0x42')],_0x3e6a9f[_0x4642('0x4a')]),_0x1aa955);var _0x57da64=[];var _0x2ca199=squel['select']()['field']('id')[_0x4642('0x4b')](_0x4642('0x30'))['field'](_0x4642('0x4c'))[_0x4642('0x4d')](_0x4642('0x4e'));var _0x2ecc55=squel[_0x4642('0x4f')]()[_0x4642('0x4b')](_0x4642('0x50'))[_0x4642('0x4b')]('u.fullname')[_0x4642('0x4b')](_0x4642('0x51'))[_0x4642('0x4d')](_0x4642('0x52'),'ui')[_0x4642('0x53')](_0x4642('0x54'),'u',_0x4642('0x55'));var _0x422283=squel[_0x4642('0x4f')]()[_0x4642('0x4d')](_0x4642('0x56'),'i')[_0x4642('0x53')](_0x4642('0x57'),'c',_0x4642('0x58'))[_0x4642('0x53')](_0x4642('0x54'),'o',_0x4642('0x59'))[_0x4642('0x53')](_0x4642('0x5a'),'a',_0x4642('0x5b'))[_0x4642('0x53')](_0x4642('0x5c'),'me',_0x4642('0x5d'))[_0x4642('0x53')](_0x4642('0x5e'),'it',_0x4642('0x5f'))[_0x4642('0x53')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x346b17=squel[_0x4642('0x60')]();var _0x5d5b84=[];var _0x201406=squel[_0x4642('0x60')]();var _0x49b3f3;if(_0x1547c9[_0x4642('0x42')]['search']){_0x49b3f3=as[_0x4642('0x61')](_0x1547c9[_0x4642('0x42')][_0x4642('0x62')]);var _0x5705ef=_0x49b3f3['sqlOperator'];for(var _0x4bf8d6=0x0;_0x4bf8d6<_0x49b3f3['conditions'][_0x4642('0x63')];_0x4bf8d6++){var _0x7e8c84=_0x49b3f3[_0x4642('0x64')][_0x4bf8d6];var _0x1f0bc3='i';var _0x288a56=_[_0x4642('0x65')](_0x1aa955,['name',_0x7e8c84['field']]);if(!_0x288a56){switch(_0x7e8c84[_0x4642('0x4b')]){case _0x4642('0x66'):if(_0x7e8c84[_0x4642('0x67')]==0x1){_0x422283['having']('`'+_0x7e8c84[_0x4642('0x4b')]+_0x4642('0x68'));}else{_0x422283['having']('`'+_0x7e8c84['field']+_0x4642('0x69'));}break;case _0x4642('0x6a'):if(_0x7e8c84['operator']===_0x4642('0x6b')){if(_0x7e8c84[_0x4642('0x67')][_0x4642('0x37')]('\x20')[_0x4642('0x63')]>0x1){_0x346b17[_0x5705ef](_0x4642('0x6c'),qs[_0x4642('0x6d')](_0x7e8c84[_0x4642('0x67')]),null);}else{var _0x44ee70='%'+_0x7e8c84['value']+'%';_0x346b17[_0x5705ef](_0x4642('0x6e'),_0x44ee70,_0x44ee70,_0x44ee70);}}else{_0x288a56=_[_0x4642('0x65')](_0x1aa955,[_0x4642('0x30'),_0x4642('0x6f')]);_0x7e8c84[_0x4642('0x4b')]=_0x4642('0x6f');_0x2d775f=as[_0x4642('0x70')](_0x1f0bc3,_0x288a56[_0x4642('0x3e')],_0x7e8c84);_0x346b17[_0x5705ef](_0x2d775f['text'],_0x2d775f[_0x4642('0x67')][_0x4642('0x71')],_0x2d775f[_0x4642('0x67')][_0x4642('0x23')]);}break;case _0x4642('0x72'):var _0x122701=_0x7e8c84['value'][_0x4642('0x37')](',')['map'](function(_0x3af61a){return Number(_0x3af61a);});_0x122701[_0x4642('0x38')](function(_0x2cc8b8){_0x201406['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2cc8b8+',%');});_0x5d5b84=_[_0x4642('0x73')](_0x5d5b84,_0x122701);break;case _0x4642('0x74'):if(_0x7e8c84[_0x4642('0x75')]==='$substring'){_0x346b17[_0x5705ef](_0x4642('0x76'),'%'+_0x7e8c84[_0x4642('0x67')]+'%',null);}else{_0x288a56=_[_0x4642('0x65')](_0x1aa955,[_0x4642('0x30'),_0x4642('0x77')]);_0x7e8c84[_0x4642('0x4b')]='UserId';_0x2d775f=as[_0x4642('0x70')](_0x1f0bc3,_0x288a56[_0x4642('0x3e')],_0x7e8c84);_0x346b17[_0x5705ef](_0x2d775f[_0x4642('0x78')],_0x2d775f[_0x4642('0x67')][_0x4642('0x71')],_0x2d775f['value'][_0x4642('0x23')]);}break;case'body':_0x2d775f=as[_0x4642('0x70')]('me',null,_0x7e8c84);_0x346b17[_0x5705ef](_0x2d775f[_0x4642('0x78')],_0x2d775f[_0x4642('0x67')][_0x4642('0x71')],_0x2d775f[_0x4642('0x67')]['end']);break;}}else{var _0x2d775f=as['buildExpression'](_0x1f0bc3,_0x288a56[_0x4642('0x3e')],_0x7e8c84);_0x346b17[_0x5705ef](_0x2d775f['text'],_0x2d775f['value']['start'],_0x2d775f[_0x4642('0x67')]['end']);}}}else{var _0x494295=_(_0x1547c9[_0x4642('0x42')])[_0x4642('0x41')]()[_0x4642('0x33')](function(_0x2e5681){return _['some'](_0x1aa955,['name',_0x2e5681])?_0x2e5681:undefined;})['compact']()[_0x4642('0x67')]();if(!_[_0x4642('0x79')](_0x494295)){_0x494295['forEach'](function(_0x3a3d2b){if(_0x3a3d2b===_0x4642('0x7a')){_0x422283[_0x4642('0x48')](_0x4642('0x7b'),[][_0x4642('0x7c')](_0x1547c9[_0x4642('0x42')][_0x3a3d2b]));}else if(_0x3a3d2b===_0x4642('0x7d')){var _0x2c42ac=JSON['parse'](_0x1547c9[_0x4642('0x42')][_0x3a3d2b])[_0x4642('0x7e')];var _0x385156=JSON[_0x4642('0x7f')](_0x1547c9['query'][_0x3a3d2b])[_0x4642('0x80')];_0x422283[_0x4642('0x48')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x2c42ac,_0x385156);}else{if(_0x1547c9[_0x4642('0x42')][_0x3a3d2b]===_0x4642('0x81')){_0x422283[_0x4642('0x48')]('i.'+_0x3a3d2b+_0x4642('0x82'));}else{_0x422283['where']('i.'+_0x3a3d2b+_0x4642('0x83'),_0x1547c9[_0x4642('0x42')][_0x3a3d2b]);}}});}if(_0x1547c9[_0x4642('0x42')][_0x4642('0x84')]){if(_0x1547c9[_0x4642('0x42')]['read']==0x1){_0x422283[_0x4642('0x85')](_0x4642('0x86'));}else{_0x422283['having'](_0x4642('0x87'));}}if(_0x1547c9['query'][_0x4642('0x88')]){_0x5d5b84=_[_0x4642('0x89')](_0x1547c9[_0x4642('0x42')]['tag'])?_0x1547c9[_0x4642('0x42')]['tag']:new Array(_0x1547c9[_0x4642('0x42')][_0x4642('0x88')]);_0x5d5b84[_0x4642('0x38')](function(_0x479470){_0x201406['or'](_0x4642('0x8a'),'%,'+_0x479470+',%');});}if(_0x1547c9[_0x4642('0x42')][_0x4642('0x8b')]){var _0x391219=_0x1547c9[_0x4642('0x42')][_0x4642('0x8b')][_0x4642('0x8c')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x4642('0x8d')](_0x391219)){_0x346b17['or'](_0x4642('0x8e'),_0x391219+'%')['or'](_0x4642('0x8f'),_0x391219+'%');}else{_0x346b17['or'](_0x4642('0x90'),qs[_0x4642('0x6d')](_0x391219))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x391219+'%');}}}_0x422283[_0x4642('0x48')](_0x346b17);_0x422283[_0x4642('0x91')](_0x4642('0x92'));var _0x9d99a9={'type':db[_0x4642('0x93')][_0x4642('0x94')][_0x4642('0x95')],'raw':!![]};var _0x405152=_0x422283['clone']();_0x405152[_0x4642('0x4b')](_0x4642('0x92'));_0x405152['field'](_0x4642('0x96'),'unreadMessages');if(_0x58680e['order']){_0x58680e[_0x4642('0x46')][_0x4642('0x38')](function(_0x36d9bb){var _0x2c0716=_0x36d9bb[0x0]===_0x4642('0x97')?_0x36d9bb[0x0]:'i.'+_0x36d9bb[0x0];_0x422283['order'](_0x2c0716,_0x36d9bb[0x1]===_0x4642('0x98')?![]:!![]);});}if(!_[_0x4642('0x79')](_0x5d5b84)){_0x422283[_0x4642('0x85')](_0x201406);_0x405152[_0x4642('0x48')]('t.id\x20IN\x20?',_0x5d5b84);}BPromise[_0x4642('0x99')]()[_0x4642('0x2e')](function(){if(!_0x49b3f3){if(_0x1547c9[_0x4642('0x42')][_0x4642('0x7a')])return;_0x405152[_0x4642('0x48')](_0x4642('0x9a'));_0x422283[_0x4642('0x48')](_0x4642('0x9a'));return;}if(_0x1547c9[_0x4642('0x9b')][_0x4642('0x9c')]!=='agent')return;return _0x1547c9[_0x4642('0x9b')][_0x4642('0x9d')]({'attributes':['id'],'raw':!![]})[_0x4642('0x2e')](function(_0x744f92){if(_[_0x4642('0x79')](_0x744f92)){_0x405152[_0x4642('0x48')](_0x4642('0x9e'));_0x422283[_0x4642('0x48')](_0x4642('0x9e'));}else{_0x405152[_0x4642('0x48')](_0x4642('0x7b'),_[_0x4642('0x33')](_0x744f92,'id'));_0x422283[_0x4642('0x48')](_0x4642('0x7b'),_[_0x4642('0x33')](_0x744f92,'id'));}});})[_0x4642('0x2e')](function(){if(_0x1547c9[_0x4642('0x9b')][_0x4642('0x9c')]===_0x4642('0x9f')&&!_0x49b3f3&&!_0x1547c9['query'][_0x4642('0x7a')])return[];return db[_0x4642('0xa0')][_0x4642('0x42')](_0x405152[_0x4642('0xa1')](),_0x9d99a9);})[_0x4642('0x2e')](function(_0x457646){_0x565de4['count']=_0x457646['length'];if(_0x565de4[_0x4642('0x28')]===0x0)return[];return db['sequelize'][_0x4642('0x42')](_0x2ca199[_0x4642('0xa1')](),_0x9d99a9)[_0x4642('0x2e')](function(_0x3b083a){_0x57da64=_[_0x4642('0xa2')](_0x3b083a,'id');_0x9d99a9=_[_0x4642('0xa3')](_0x9d99a9,{'model':db[_0x4642('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1547c9[_0x4642('0x42')][_0x4642('0xa4')]){_0x58680e[_0x4642('0x44')][_0x4642('0x38')](function(_0x2ee0c7){_0x422283[_0x4642('0x4b')]('i.'+_0x2ee0c7);});}else{_0x422283[_0x4642('0x4b')](_0x4642('0x96'),'unreadMessages');_0x422283[_0x4642('0x4b')](_0x4642('0xa5'),_0x4642('0xa6'));_0x422283[_0x4642('0x4b')](_0x4642('0xa7'),_0x4642('0xa8'));_0x422283[_0x4642('0x4b')](_0x4642('0xa9'),_0x4642('0x97'));_0x422283['field']('i.*');_0x422283[_0x4642('0x4b')]('c.firstName',_0x4642('0xaa'));_0x422283['field'](_0x4642('0xab'),_0x4642('0xac'));_0x422283[_0x4642('0x4b')](_0x4642('0xad'),_0x4642('0xae'));_0x422283[_0x4642('0x4b')](_0x4642('0xaf'),_0x4642('0xb0'));_0x422283[_0x4642('0x4b')](_0x4642('0xb1'),'Contact.mobile');_0x422283[_0x4642('0x4b')](_0x4642('0xb2'),_0x4642('0xb3'));_0x422283[_0x4642('0x4b')](_0x4642('0xb4'),_0x4642('0xb5'));_0x422283[_0x4642('0x4b')](_0x4642('0xb6'),_0x4642('0xb7'));_0x422283[_0x4642('0x4b')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x4642('0x35'));}if(_0x58680e[_0x4642('0x27')])_0x422283[_0x4642('0x27')](_0x58680e[_0x4642('0x27')]);if(_0x58680e[_0x4642('0x25')])_0x422283[_0x4642('0x25')](_0x58680e['offset']);return db[_0x4642('0xa0')][_0x4642('0x42')](_0x422283[_0x4642('0xa1')](),_0x9d99a9);})['then'](function(_0x53c80f){if(_0x53c80f[_0x4642('0x63')]>0x0)_0x2ecc55[_0x4642('0x48')](_0x4642('0xb8'),_[_0x4642('0x33')](_0x53c80f,'id'));return db['sequelize']['query'](_0x2ecc55['toString'](),_0x9d99a9)[_0x4642('0x2e')](function(_0x5a0809){var _0x2d503c=_[_0x4642('0xb9')](_0x5a0809,_0x4642('0xba'));var _0x4d92b5=[];_0x53c80f[_0x4642('0x38')](function(_0x30c25b){_0x4d92b5[_0x4642('0xbb')](updateSmsInteraction(_0x30c25b,_0x57da64,_0x2d503c));});return BPromise[_0x4642('0xbc')](_0x4d92b5);});});})[_0x4642('0x2e')](function(_0x1728b4){_0x565de4[_0x4642('0xbd')]=_0x1728b4;return _0x565de4;})[_0x4642('0x2e')](respondWithFilteredResult(_0x2e9dbf,_0x58680e))[_0x4642('0x39')](handleError(_0x2e9dbf,null));};exports['show']=function(_0xbc4e75,_0x1ec5af){var _0x11d502={'raw':![],'where':{'id':_0xbc4e75['params']['id']}},_0x50276b={};_0x50276b[_0x4642('0x40')]=_[_0x4642('0x41')](db[_0x4642('0x3b')][_0x4642('0x3c')]);_0x50276b[_0x4642('0x42')]=_[_0x4642('0x41')](_0xbc4e75[_0x4642('0x42')]);_0x50276b['filters']=_[_0x4642('0x43')](_0x50276b['model'],_0x50276b['query']);_0x11d502[_0x4642('0x44')]=_['intersection'](_0x50276b['model'],qs['fields'](_0xbc4e75[_0x4642('0x42')][_0x4642('0xa4')]));_0x11d502['attributes']=_0x11d502['attributes'][_0x4642('0x63')]?_0x11d502['attributes']:_0x50276b[_0x4642('0x40')];if(_0xbc4e75[_0x4642('0x42')][_0x4642('0xbe')]){_0x11d502[_0x4642('0xbf')]=[{'all':!![]}];}_0x11d502=_[_0x4642('0xa3')]({},_0x11d502,_0xbc4e75[_0x4642('0xc0')]);return db[_0x4642('0x3b')][_0x4642('0x65')](_0x11d502)[_0x4642('0x2e')](handleEntityNotFound(_0x1ec5af,null))[_0x4642('0x2e')](respondWithResult(_0x1ec5af,null))['catch'](handleError(_0x1ec5af,null));};exports['create']=function(_0x5a6d93,_0xd7aa15){return db[_0x4642('0x3b')][_0x4642('0xc1')](_0x5a6d93['body'],{})[_0x4642('0x2e')](respondWithResult(_0xd7aa15,0xc9))['catch'](handleError(_0xd7aa15,null));};exports[_0x4642('0xc2')]=function(_0xd980b2,_0x195d17){if(_0xd980b2[_0x4642('0xc3')]['id']){delete _0xd980b2[_0x4642('0xc3')]['id'];}return db[_0x4642('0x3b')][_0x4642('0x65')]({'where':{'id':_0xd980b2[_0x4642('0xc4')]['id']}})[_0x4642('0x2e')](handleEntityNotFound(_0x195d17,null))['then'](saveUpdates(_0xd980b2[_0x4642('0xc3')],null))[_0x4642('0x2e')](respondWithResult(_0x195d17,null))[_0x4642('0x39')](handleError(_0x195d17,null));};exports[_0x4642('0x2d')]=function(_0x4008df,_0x23cf62){return db[_0x4642('0x3b')][_0x4642('0x65')]({'where':{'id':_0x4008df[_0x4642('0xc4')]['id']}})['then'](handleEntityNotFound(_0x23cf62,null))['then'](removeEntity(_0x23cf62,null))[_0x4642('0x39')](handleError(_0x23cf62,null));};exports[_0x4642('0xc5')]=function(_0x9bf5e3,_0x5b85ba){return db[_0x4642('0x3b')][_0x4642('0xc5')]()[_0x4642('0x2e')](respondWithResult(_0x5b85ba,null))['catch'](handleError(_0x5b85ba,null));};exports['addMessage']=function(_0x5445a9,_0x7aed3d,_0x13b6d3){return db[_0x4642('0xc6')]['find']({'where':{'id':_0x5445a9[_0x4642('0xc4')]['id']}})[_0x4642('0x2e')](handleEntityNotFound(_0x7aed3d,null))[_0x4642('0x2e')](function(_0x1a718e){if(_0x1a718e){return _0x1a718e[_0x4642('0xc7')](_0x5445a9[_0x4642('0xc3')][_0x4642('0xc8')],_['omit'](_0x5445a9[_0x4642('0xc3')],[_0x4642('0xc8'),'id'])||{});}})[_0x4642('0x2e')](respondWithResult(_0x7aed3d,null))[_0x4642('0x39')](handleError(_0x7aed3d,null));};exports[_0x4642('0xc9')]=function(_0x5221e2,_0x549a58,_0x17a2ab){var _0x58e35f={'raw':![],'where':{}};var _0x513d28={};var _0x12e6e3={'count':0x0,'rows':[]};return db[_0x4642('0x3b')][_0x4642('0xca')]({'where':{'id':_0x5221e2[_0x4642('0xc4')]['id']}})[_0x4642('0x2e')](handleEntityNotFound(_0x549a58,null))[_0x4642('0x2e')](function(_0xa14513){if(_0xa14513){_0x513d28[_0x4642('0x40')]=_[_0x4642('0x41')](db['SmsMessage'][_0x4642('0x3c')]);_0x513d28[_0x4642('0x42')]=_[_0x4642('0x41')](_0x5221e2[_0x4642('0x42')]);_0x513d28['filters']=_[_0x4642('0x43')](_0x513d28[_0x4642('0x40')],_0x513d28[_0x4642('0x42')]);_0x58e35f[_0x4642('0x44')]=_[_0x4642('0x43')](_0x513d28[_0x4642('0x40')],qs[_0x4642('0xa4')](_0x5221e2[_0x4642('0x42')][_0x4642('0xa4')]));_0x58e35f[_0x4642('0x44')]=_0x58e35f[_0x4642('0x44')][_0x4642('0x63')]?_0x58e35f[_0x4642('0x44')]:_0x513d28[_0x4642('0x40')];if(!_0x5221e2[_0x4642('0x42')][_0x4642('0xcb')](_0x4642('0x45'))){_0x58e35f['limit']=qs['limit'](_0x5221e2[_0x4642('0x42')][_0x4642('0x27')]);_0x58e35f[_0x4642('0x25')]=qs[_0x4642('0x25')](_0x5221e2[_0x4642('0x42')][_0x4642('0x25')]);}_0x58e35f[_0x4642('0x46')]=qs['sort'](_0x5221e2[_0x4642('0x42')][_0x4642('0x47')]);_0x58e35f[_0x4642('0x48')]=qs['filters'](_[_0x4642('0x49')](_0x5221e2[_0x4642('0x42')],_0x513d28[_0x4642('0x4a')]));_0x58e35f[_0x4642('0x48')]['SmsInteractionId']=_0xa14513['id'];if(_0x5221e2[_0x4642('0x42')][_0x4642('0x8b')]){_0x58e35f[_0x4642('0x48')]=_['merge'](_0x58e35f['where'],{'$or':_[_0x4642('0x33')](_0x58e35f[_0x4642('0x44')],function(_0x4e1ffb){var _0x26b5a3={};_0x26b5a3[_0x4e1ffb]={'$like':'%'+_0x5221e2[_0x4642('0x42')][_0x4642('0x8b')]+'%'};return _0x26b5a3;})});}if(_0x5221e2[_0x4642('0x42')][_0x4642('0x7e')]){var _0x1b197e=_0x5221e2[_0x4642('0x42')][_0x4642('0x7e')]['split'](',');var _0x5cf835={};_0x5cf835[_0x1b197e[0x0]]={'$gte':moment(_0x1b197e[0x1])[_0x4642('0xcc')]('YYYY-MM-DD\x20HH:mm:ss')};_0x58e35f[_0x4642('0x48')]=_['merge'](_0x58e35f[_0x4642('0x48')],_0x5cf835);}_0x58e35f=_['merge']({},_0x58e35f,_0x5221e2[_0x4642('0xc0')]);return db[_0x4642('0xc6')]['count']({'where':_0x58e35f['where']})[_0x4642('0x2e')](function(_0x5b1520){_0x12e6e3['count']=_0x5b1520;if(_0x5221e2[_0x4642('0x42')][_0x4642('0xbe')]){_0x58e35f[_0x4642('0xbf')]=[{'all':!![]}];}return db[_0x4642('0xc6')][_0x4642('0xcd')](_0x58e35f);})['then'](function(_0x2368cb){_0x12e6e3[_0x4642('0xbd')]=_0x2368cb;return _0x12e6e3;});}})[_0x4642('0x2e')](respondWithFilteredResult(_0x549a58,_0x58e35f))[_0x4642('0x39')](handleError(_0x549a58,null));};exports[_0x4642('0xce')]=function(_0x3919e8,_0x86eb65,_0x6a8e05){return db[_0x4642('0x3b')][_0x4642('0x65')]({'where':{'id':_0x3919e8[_0x4642('0xc4')]['id']}})[_0x4642('0x2e')](handleEntityNotFound(_0x86eb65,null))[_0x4642('0x2e')](function(_0x9612db){if(_0x9612db){return _0x9612db[_0x4642('0xcf')](_0x3919e8['body'][_0x4642('0xc8')],_[_0x4642('0xd0')](_0x3919e8[_0x4642('0xc3')],['ids','id'])||{})[_0x4642('0xd1')](function(){return db[_0x4642('0x72')][_0x4642('0xcd')]({'attributes':['id','name','color'],'where':{'id':_0x3919e8[_0x4642('0xc3')]['ids']}});})[_0x4642('0x2e')](function(_0x415673){socket[_0x4642('0xd2')](_0x4642('0xd3'),{'id':Number(_0x3919e8[_0x4642('0xc4')]['id']),'tags':_0x415673||[]});return{'id':Number(_0x3919e8[_0x4642('0xc4')]['id']),'tags':_0x415673||[]};});}})[_0x4642('0x2e')](respondWithResult(_0x86eb65,null))[_0x4642('0x39')](handleError(_0x86eb65,null));};exports[_0x4642('0xd4')]=function(_0xddc56a,_0x1f1701,_0x4533c3){return db[_0x4642('0x3b')][_0x4642('0x65')]({'where':{'id':_0xddc56a['params']['id']}})[_0x4642('0x2e')](handleEntityNotFound(_0x1f1701,null))[_0x4642('0x2e')](function(_0x2e5123){if(_0x2e5123){return _0x2e5123[_0x4642('0xd4')](_0xddc56a['query'][_0x4642('0xc8')]);}})[_0x4642('0x2e')](respondWithStatusCode(_0x1f1701,null))[_0x4642('0x39')](handleError(_0x1f1701,null));};exports[_0x4642('0xd5')]=function(_0x5f449d,_0x4e59ac){var _0x45c46a=moment()[_0x4642('0xd6')]()[_0x4642('0xa1')]();var _0x34f538=path[_0x4642('0xd7')](config[_0x4642('0xd8')],_0x4642('0xd9'),_0x4642('0xda'),_0x4642('0xdb'));var _0x5b5dde=path[_0x4642('0xd7')](config['root'],_0x4642('0xd9'),_0x4642('0xda'),_0x4642('0xdc'));var _0x1bdd09=path[_0x4642('0xd7')](_0x34f538,_0x45c46a);var _0x9ac750=util[_0x4642('0xcc')](_0x4642('0xdd'),_0x5f449d[_0x4642('0xc4')]['id'],_0x45c46a);var _0x10b152=path['join'](_0x34f538,_0x9ac750);var _0x234028=[];_0x234028[_0x4642('0xbb')]({'model':db[_0x4642('0x74')],'as':_0x4642('0x74'),'attributes':['id',_0x4642('0x34')],'raw':!![]});_0x234028[_0x4642('0xbb')]({'model':db[_0x4642('0xde')],'as':_0x4642('0x6a'),'attributes':['id',_0x4642('0xdf'),_0x4642('0xe0')],'raw':!![]});var _0x284d00=[{'model':db['SmsMessage'],'as':_0x4642('0xe1'),'attributes':['id',_0x4642('0xc3'),'createdAt',_0x4642('0xe2'),_0x4642('0xe3'),'read'],'include':_0x234028}];_0x284d00[_0x4642('0xbb')]({'model':db['SmsAccount'],'as':_0x4642('0xe4'),'attributes':['id',_0x4642('0x30')]});_0x284d00['push']({'model':db[_0x4642('0x74')],'as':_0x4642('0xe5'),'attributes':['id',_0x4642('0x34')]});return db[_0x4642('0x3b')][_0x4642('0x65')]({'where':{'id':_0x5f449d[_0x4642('0xc4')]['id']},'include':_0x284d00})[_0x4642('0x2e')](handleEntityNotFound(_0x4e59ac,null))[_0x4642('0x2e')](function(_0x9a5cee){if(_0x9a5cee){var _0x59e6c4=_0x9a5cee['get']({'plain':!![]});fs[_0x4642('0xe6')](_0x1bdd09);var _0x1ce42e={'channel':_0x4642('0xe7'),'account':_0x59e6c4[_0x4642('0xe4')][_0x4642('0x30')],'agent':_0x59e6c4[_0x4642('0xe5')]?_0x59e6c4[_0x4642('0xe5')][_0x4642('0x34')]:_0x4642('0xe8'),'createdAt':moment(_0x59e6c4[_0x4642('0x7d')])['format'](_0x4642('0xe9'))[_0x4642('0xa1')](),'closedAt':_0x59e6c4['closed']?moment(_0x59e6c4[_0x4642('0xea')])[_0x4642('0xcc')]('YYYY-MM-DD\x20HH:mm:ss')[_0x4642('0xa1')]():'','disposition':_0x59e6c4[_0x4642('0xeb')],'messages':_(_0x59e6c4[_0x4642('0xe1')])[_0x4642('0x8b')]({'secret':![]})[_0x4642('0x33')](function(_0x3c492d){return{'date':moment(_0x3c492d[_0x4642('0x7d')])[_0x4642('0xcc')](_0x4642('0xe9'))['toString'](),'sender':_0x3c492d[_0x4642('0xe2')]===_0x4642('0xec')?_0x3c492d[_0x4642('0x74')]?_0x3c492d['User'][_0x4642('0x34')]:_0x4642('0xed'):_0x3c492d[_0x4642('0x6a')][_0x4642('0xdf')]+(_0x3c492d[_0x4642('0x6a')][_0x4642('0xe0')]?'\x20'+_0x3c492d[_0x4642('0x6a')][_0x4642('0xe0')]:''),'body':_0x3c492d[_0x4642('0xc3')],'direction':_0x3c492d['direction']===_0x4642('0xec')?'A':'C','secret':_0x3c492d[_0x4642('0xe3')],'read':_0x3c492d[_0x4642('0x84')]};})[_0x4642('0x67')]()};return ejs[_0x4642('0xee')](path['join'](config[_0x4642('0xd8')],'server',_0x4642('0xef'),'downloadInteraction.ejs'),{'interaction':_0x1ce42e})['then'](function(_0x3f01f3){var _0x47f5b2=path['join'](_0x1bdd09,_0x4642('0xf0')+_0x59e6c4['id']+'-'+_0x45c46a+_0x4642('0xf1'));var _0x3d4770={'path':_0x47f5b2,'channel':_0x4642('0xe7'),'interactionId':_0x59e6c4['id']};return pdf[_0x4642('0xf2')](_0x3f01f3,_0x3d4770);})[_0x4642('0x2e')](function(){return new BPromise(function(_0xa20aae,_0x5ee7f4){zipdir(_0x1bdd09,{'saveTo':_0x10b152},function(_0x6993b5,_0x5dd7c8){if(_0x6993b5)return _0x5ee7f4(_0x6993b5);return _0xa20aae(_0x5dd7c8);});})[_0x4642('0x2e')](function(){return new BPromise(function(_0x1dc701,_0x455805){rimraf(_0x1bdd09,function(_0x2275ac){if(_0x2275ac)_0x455805(_0x2275ac);return _0x1dc701();});});})[_0x4642('0x2e')](function(){return _0x4e59ac[_0x4642('0xd5')](_0x10b152,_0x9ac750,function(_0x55e213){if(_0x55e213){console['log']('err',_0x55e213);}else{fs[_0x4642('0xf3')](_0x10b152);}});});});}else{return _0x4e59ac[_0x4642('0x21')](0xc8);}})[_0x4642('0x39')](handleError(_0x4e59ac,null));};
\ No newline at end of file
+var _0xb50c=['send','Users','map','TagIds','Tags','forEach','push','catch','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','select','field','color','tools_tags','u.id','user_has_sms_interactions','left_join','u.id\x20=\x20ui.UserId','from','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','value','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','some','compact','SmsAccountId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','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','QueryTypes','SELECT','clone','i.id','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','agent','sequelize','toString','keyBy','merge','SmsInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','SmsInteractionId','all','rows','show','params','keys','options','create','update','body','describe','addMessage','ids','getMessages','findOne','SmsMessage','filter','includeAll','include','findAll','addTags','setTags','omit','spread','emit','smsInteractionTags:save','removeTags','download','unix','join','root','files','server','attachments','transcript-%d-%s.zip','User','fullname','CmContact','lastName','secret','Account','get','mkdirSync','Sms','Owner','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','out','System','firstName','direction','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','sendStatus','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','status','end','json','undefined','count','offset','set','Content-Range','apply','destroy','then','stack','name'];(function(_0x43c7e4,_0x5cf7e4){var _0x32a4eb=function(_0x56dfc2){while(--_0x56dfc2){_0x43c7e4['push'](_0x43c7e4['shift']());}};_0x32a4eb(++_0x5cf7e4);}(_0xb50c,0x1bb));var _0xcb50=function(_0x1cb0c8,_0x318554){_0x1cb0c8=_0x1cb0c8-0x0;var _0x4da112=_0xb50c[_0x1cb0c8];return _0x4da112;};'use strict';var emlformat=require(_0xcb50('0x0'));var rimraf=require(_0xcb50('0x1'));var zipdir=require(_0xcb50('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xcb50('0x3'));var BPromise=require(_0xcb50('0x4'));var Mustache=require('mustache');var util=require(_0xcb50('0x5'));var path=require(_0xcb50('0x6'));var sox=require(_0xcb50('0x7'));var csv=require(_0xcb50('0x8'));var ejs=require(_0xcb50('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xcb50('0xa'));var crypto=require(_0xcb50('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xcb50('0xc'));var toCsv=require(_0xcb50('0x8'));var querystring=require(_0xcb50('0xd'));var Papa=require('papaparse');var Redis=require(_0xcb50('0xe'));var authService=require(_0xcb50('0xf'));var qs=require(_0xcb50('0x10'));var as=require(_0xcb50('0x11'));var pdf=require(_0xcb50('0x12'));var hardwareService=require(_0xcb50('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xcb50('0x14'));var config=require(_0xcb50('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xcb50('0x16'))['db'];config[_0xcb50('0x17')]=_[_0xcb50('0x18')](config[_0xcb50('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xcb50('0x19'))(new Redis(config[_0xcb50('0x17')]));require(_0xcb50('0x1a'))[_0xcb50('0x1b')](socket);function respondWithStatusCode(_0x1ced47,_0x3b08f5){_0x3b08f5=_0x3b08f5||0xcc;return function(_0x371251){if(_0x371251){return _0x1ced47['sendStatus'](_0x3b08f5);}return _0x1ced47[_0xcb50('0x1c')](_0x3b08f5)[_0xcb50('0x1d')]();};}function respondWithResult(_0x55f188,_0x18db9e){_0x18db9e=_0x18db9e||0xc8;return function(_0xa0073c){if(_0xa0073c){return _0x55f188[_0xcb50('0x1c')](_0x18db9e)[_0xcb50('0x1e')](_0xa0073c);}};}function respondWithFilteredResult(_0x31269d,_0x2b94a9){return function(_0x332465){if(_0x332465){var _0x49675a=typeof _0x2b94a9['offset']===_0xcb50('0x1f')&&typeof _0x2b94a9['limit']==='undefined';var _0x36d2d1=_0x332465[_0xcb50('0x20')];var _0x4268d9=_0x49675a?0x0:_0x2b94a9[_0xcb50('0x21')];var _0x37cb27=_0x49675a?_0x332465[_0xcb50('0x20')]:_0x2b94a9[_0xcb50('0x21')]+_0x2b94a9['limit'];var _0x20c84f;if(_0x37cb27>=_0x36d2d1){_0x37cb27=_0x36d2d1;_0x20c84f=0xc8;}else{_0x20c84f=0xce;}_0x31269d[_0xcb50('0x1c')](_0x20c84f);return _0x31269d[_0xcb50('0x22')](_0xcb50('0x23'),_0x4268d9+'-'+_0x37cb27+'/'+_0x36d2d1)[_0xcb50('0x1e')](_0x332465);}return null;};}function patchUpdates(_0x2e885b){return function(_0x2d60b1){try{jsonpatch[_0xcb50('0x24')](_0x2d60b1,_0x2e885b,!![]);}catch(_0x3be5a9){return BPromise['reject'](_0x3be5a9);}return _0x2d60b1['save']();};}function saveUpdates(_0x38b8f2,_0x3daebd){return function(_0x419a63){if(_0x419a63){return _0x419a63['update'](_0x38b8f2)['then'](function(_0x22b989){return _0x22b989;});}return null;};}function removeEntity(_0x151405,_0x50196c){return function(_0x1837bf){if(_0x1837bf){return _0x1837bf[_0xcb50('0x25')]()[_0xcb50('0x26')](function(){_0x151405[_0xcb50('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a4602,_0x274854){return function(_0x94a3df){if(!_0x94a3df){_0x4a4602['sendStatus'](0x194);}return _0x94a3df;};}function handleError(_0x46f6f5,_0x59a979){_0x59a979=_0x59a979||0x1f4;return function(_0x5a4297){logger['error'](_0x5a4297[_0xcb50('0x27')]);if(_0x5a4297[_0xcb50('0x28')]){delete _0x5a4297[_0xcb50('0x28')];}_0x46f6f5['status'](_0x59a979)[_0xcb50('0x29')](_0x5a4297);};}function getInteractionUsers(_0x5f1fc8,_0x123d7e){return new BPromise(function(_0xcd9bde,_0x254bb7){try{if(_0x123d7e[_0x5f1fc8['id']]){_0x5f1fc8[_0xcb50('0x2a')]=_[_0xcb50('0x2b')](_0x123d7e[_0x5f1fc8['id']],function(_0x5b62df){return{'id':_0x5b62df['id'],'fullname':_0x5b62df['fullname']};});}}catch(_0x554ea4){_0x254bb7(_0x554ea4);}_0xcd9bde(_0x5f1fc8);});}function getInteractionTags(_0x59fba1,_0x571e43){return new BPromise(function(_0x3c398d,_0x527a70){try{if(_0x59fba1[_0xcb50('0x2c')]){_0x59fba1[_0xcb50('0x2d')]=[];_0x59fba1[_0xcb50('0x2c')]['split'](',')[_0xcb50('0x2e')](function(_0x1cf387){_0x59fba1['Tags'][_0xcb50('0x2f')](_0x571e43[_0x1cf387]);});}delete _0x59fba1[_0xcb50('0x2c')];}catch(_0x443afb){_0x527a70(_0x443afb);}_0x3c398d(_0x59fba1);});}function updateSmsInteraction(_0x58705d,_0x23fde1,_0x137fbd){return new BPromise(function(_0x4acd00,_0x223537){return getInteractionUsers(_0x58705d,_0x137fbd)[_0xcb50('0x26')](function(_0xca1d44){return getInteractionTags(_0xca1d44,_0x23fde1);})['then'](function(_0x5e963e){_0x4acd00(_0x5e963e);})[_0xcb50('0x30')](function(_0x59b0f7){_0x223537(_0x59b0f7);});});}exports[_0xcb50('0x31')]=function(_0x6baf76,_0xbe7bf9){var _0xfdff22={},_0x26ce68={},_0x56032d={'count':0x0,'rows':[]};var _0x2f917d=_[_0xcb50('0x2b')](db['SmsInteraction'][_0xcb50('0x32')],function(_0x5dfd7c){return{'name':_0x5dfd7c[_0xcb50('0x33')],'type':_0x5dfd7c[_0xcb50('0x34')][_0xcb50('0x35')]};});_0x26ce68[_0xcb50('0x36')]=_[_0xcb50('0x2b')](_0x2f917d,_0xcb50('0x28'));_0x26ce68[_0xcb50('0x37')]=_['keys'](_0x6baf76[_0xcb50('0x37')]);_0x26ce68[_0xcb50('0x38')]=_[_0xcb50('0x39')](_0x26ce68[_0xcb50('0x36')],_0x26ce68[_0xcb50('0x37')]);_0xfdff22[_0xcb50('0x3a')]=_[_0xcb50('0x39')](_0x26ce68['model'],qs[_0xcb50('0x3b')](_0x6baf76['query']['fields']));_0xfdff22['attributes']=_0xfdff22['attributes'][_0xcb50('0x3c')]?_0xfdff22['attributes']:_0x26ce68[_0xcb50('0x36')];if(!_0x6baf76[_0xcb50('0x37')][_0xcb50('0x3d')](_0xcb50('0x3e'))){_0xfdff22['limit']=qs[_0xcb50('0x3f')](_0x6baf76['query'][_0xcb50('0x3f')]);_0xfdff22[_0xcb50('0x21')]=qs['offset'](_0x6baf76[_0xcb50('0x37')]['offset']);}_0xfdff22[_0xcb50('0x40')]=qs[_0xcb50('0x41')](_0x6baf76['query'][_0xcb50('0x41')]);_0xfdff22[_0xcb50('0x42')]=qs[_0xcb50('0x38')](_[_0xcb50('0x43')](_0x6baf76[_0xcb50('0x37')],_0x26ce68[_0xcb50('0x38')]),_0x2f917d);var _0x390154=[];var _0x5afa73=squel[_0xcb50('0x44')]()[_0xcb50('0x45')]('id')[_0xcb50('0x45')](_0xcb50('0x28'))['field'](_0xcb50('0x46'))['from'](_0xcb50('0x47'));var _0x3422e5=squel[_0xcb50('0x44')]()[_0xcb50('0x45')](_0xcb50('0x48'))[_0xcb50('0x45')]('u.fullname')['field']('ui.SmsInteractionId')['from'](_0xcb50('0x49'),'ui')[_0xcb50('0x4a')]('users','u',_0xcb50('0x4b'));var _0x1abd27=squel[_0xcb50('0x44')]()[_0xcb50('0x4c')](_0xcb50('0x4d'),'i')[_0xcb50('0x4a')](_0xcb50('0x4e'),'c',_0xcb50('0x4f'))['left_join'](_0xcb50('0x50'),'o',_0xcb50('0x51'))['left_join'](_0xcb50('0x52'),'a',_0xcb50('0x53'))['left_join'](_0xcb50('0x54'),'me',_0xcb50('0x55'))[_0xcb50('0x4a')](_0xcb50('0x56'),'it',_0xcb50('0x57'))[_0xcb50('0x4a')](_0xcb50('0x47'),'t',_0xcb50('0x58'));var _0x397dac=squel[_0xcb50('0x59')]();var _0x381b1e=[];var _0x2b0547=squel[_0xcb50('0x59')]();var _0x130204;if(_0x6baf76[_0xcb50('0x37')][_0xcb50('0x5a')]){_0x130204=as['parseSearch'](_0x6baf76[_0xcb50('0x37')][_0xcb50('0x5a')]);var _0x4ac408=_0x130204[_0xcb50('0x5b')];for(var _0x5edf70=0x0;_0x5edf70<_0x130204[_0xcb50('0x5c')][_0xcb50('0x3c')];_0x5edf70++){var _0x32bfef=_0x130204['conditions'][_0x5edf70];var _0x911fb2='i';var _0x31d4e4=_[_0xcb50('0x5d')](_0x2f917d,[_0xcb50('0x28'),_0x32bfef[_0xcb50('0x45')]]);if(!_0x31d4e4){switch(_0x32bfef[_0xcb50('0x45')]){case _0xcb50('0x5e'):if(_0x32bfef['value']==0x1){_0x1abd27[_0xcb50('0x5f')]('`'+_0x32bfef[_0xcb50('0x45')]+_0xcb50('0x60'));}else{_0x1abd27[_0xcb50('0x5f')]('`'+_0x32bfef[_0xcb50('0x45')]+_0xcb50('0x61'));}break;case _0xcb50('0x62'):if(_0x32bfef[_0xcb50('0x63')]===_0xcb50('0x64')){if(_0x32bfef[_0xcb50('0x65')][_0xcb50('0x66')]('\x20')[_0xcb50('0x3c')]>0x1){_0x397dac[_0x4ac408](_0xcb50('0x67'),qs[_0xcb50('0x68')](_0x32bfef[_0xcb50('0x65')]),null);}else{var _0xa84f43='%'+_0x32bfef['value']+'%';_0x397dac[_0x4ac408](_0xcb50('0x69'),_0xa84f43,_0xa84f43,_0xa84f43);}}else{_0x31d4e4=_[_0xcb50('0x5d')](_0x2f917d,[_0xcb50('0x28'),_0xcb50('0x6a')]);_0x32bfef['field']=_0xcb50('0x6a');_0x2c3b13=as[_0xcb50('0x6b')](_0x911fb2,_0x31d4e4[_0xcb50('0x34')],_0x32bfef);_0x397dac[_0x4ac408](_0x2c3b13['text'],_0x2c3b13[_0xcb50('0x65')][_0xcb50('0x6c')],_0x2c3b13[_0xcb50('0x65')][_0xcb50('0x1d')]);}break;case _0xcb50('0x6d'):var _0x57a216=_0x32bfef[_0xcb50('0x65')][_0xcb50('0x66')](',')[_0xcb50('0x2b')](function(_0x3f6b74){return Number(_0x3f6b74);});_0x57a216[_0xcb50('0x2e')](function(_0x46ed3d){_0x2b0547['or'](_0xcb50('0x6e'),'%,'+_0x46ed3d+',%');});_0x381b1e=_[_0xcb50('0x6f')](_0x381b1e,_0x57a216);break;case'User':if(_0x32bfef[_0xcb50('0x63')]===_0xcb50('0x64')){_0x397dac[_0x4ac408](_0xcb50('0x70'),'%'+_0x32bfef[_0xcb50('0x65')]+'%',null);}else{_0x31d4e4=_[_0xcb50('0x5d')](_0x2f917d,['name','UserId']);_0x32bfef[_0xcb50('0x45')]=_0xcb50('0x71');_0x2c3b13=as[_0xcb50('0x6b')](_0x911fb2,_0x31d4e4[_0xcb50('0x34')],_0x32bfef);_0x397dac[_0x4ac408](_0x2c3b13[_0xcb50('0x72')],_0x2c3b13['value'][_0xcb50('0x6c')],_0x2c3b13[_0xcb50('0x65')][_0xcb50('0x1d')]);}break;case'body':_0x2c3b13=as[_0xcb50('0x6b')]('me',null,_0x32bfef);_0x397dac[_0x4ac408](_0x2c3b13['text'],_0x2c3b13[_0xcb50('0x65')]['start'],_0x2c3b13[_0xcb50('0x65')][_0xcb50('0x1d')]);break;}}else{var _0x2c3b13=as[_0xcb50('0x6b')](_0x911fb2,_0x31d4e4[_0xcb50('0x34')],_0x32bfef);_0x397dac[_0x4ac408](_0x2c3b13[_0xcb50('0x72')],_0x2c3b13['value'][_0xcb50('0x6c')],_0x2c3b13['value'][_0xcb50('0x1d')]);}}}else{var _0x265557=_(_0x6baf76['query'])['keys']()['map'](function(_0x5238d5){return _[_0xcb50('0x73')](_0x2f917d,['name',_0x5238d5])?_0x5238d5:undefined;})[_0xcb50('0x74')]()[_0xcb50('0x65')]();if(!_['isEmpty'](_0x265557)){_0x265557[_0xcb50('0x2e')](function(_0x59a416){if(_0x59a416===_0xcb50('0x75')){_0x1abd27[_0xcb50('0x42')]('i.SmsAccountId\x20IN\x20?',[][_0xcb50('0x76')](_0x6baf76[_0xcb50('0x37')][_0x59a416]));}else if(_0x59a416===_0xcb50('0x77')){var _0x5c7f76=JSON[_0xcb50('0x78')](_0x6baf76['query'][_0x59a416])[_0xcb50('0x79')];var _0x242f93=JSON[_0xcb50('0x78')](_0x6baf76[_0xcb50('0x37')][_0x59a416])[_0xcb50('0x7a')];_0x1abd27[_0xcb50('0x42')](_0xcb50('0x7b'),_0x5c7f76,_0x242f93);}else{if(_0x6baf76[_0xcb50('0x37')][_0x59a416]===_0xcb50('0x7c')){_0x1abd27[_0xcb50('0x42')]('i.'+_0x59a416+_0xcb50('0x7d'));}else{_0x1abd27['where']('i.'+_0x59a416+'\x20=\x20?',_0x6baf76[_0xcb50('0x37')][_0x59a416]);}}});}if(_0x6baf76[_0xcb50('0x37')][_0xcb50('0x7e')]){if(_0x6baf76[_0xcb50('0x37')]['read']==0x1){_0x1abd27[_0xcb50('0x5f')](_0xcb50('0x7f'));}else{_0x1abd27[_0xcb50('0x5f')](_0xcb50('0x80'));}}if(_0x6baf76['query'][_0xcb50('0x81')]){_0x381b1e=_[_0xcb50('0x82')](_0x6baf76[_0xcb50('0x37')][_0xcb50('0x81')])?_0x6baf76[_0xcb50('0x37')][_0xcb50('0x81')]:new Array(_0x6baf76[_0xcb50('0x37')][_0xcb50('0x81')]);_0x381b1e[_0xcb50('0x2e')](function(_0x14c367){_0x2b0547['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x14c367+',%');});}if(_0x6baf76[_0xcb50('0x37')]['filter']){var _0x55be91=_0x6baf76['query']['filter'][_0xcb50('0x83')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xcb50('0x84')](_0x55be91)){_0x397dac['or'](_0xcb50('0x85'),_0x55be91+'%')['or']('i.phone\x20LIKE\x20?',_0x55be91+'%');}else{_0x397dac['or'](_0xcb50('0x86'),qs['getFullTextValue'](_0x55be91))['or'](_0xcb50('0x87'),_0x55be91+'%');}}}_0x1abd27['where'](_0x397dac);_0x1abd27[_0xcb50('0x88')]('i.id');var _0x1a8217={'type':db['Sequelize'][_0xcb50('0x89')][_0xcb50('0x8a')],'raw':!![]};var _0x68830c=_0x1abd27[_0xcb50('0x8b')]();_0x68830c[_0xcb50('0x45')](_0xcb50('0x8c'));_0x68830c[_0xcb50('0x45')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xcb50('0x5e'));if(_0xfdff22[_0xcb50('0x40')]){_0xfdff22[_0xcb50('0x40')][_0xcb50('0x2e')](function(_0x5cd7f6){var _0x11d876=_0x5cd7f6[0x0]===_0xcb50('0x8d')?_0x5cd7f6[0x0]:'i.'+_0x5cd7f6[0x0];_0x1abd27['order'](_0x11d876,_0x5cd7f6[0x1]===_0xcb50('0x8e')?![]:!![]);});}if(!_[_0xcb50('0x8f')](_0x381b1e)){_0x1abd27['having'](_0x2b0547);_0x68830c[_0xcb50('0x42')](_0xcb50('0x90'),_0x381b1e);}BPromise[_0xcb50('0x91')]()[_0xcb50('0x26')](function(){if(!_0x130204){if(_0x6baf76[_0xcb50('0x37')][_0xcb50('0x75')])return;_0x68830c[_0xcb50('0x42')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');_0x1abd27[_0xcb50('0x42')](_0xcb50('0x92'));return;}if(_0x6baf76[_0xcb50('0x93')][_0xcb50('0x94')]!=='agent')return;return _0x6baf76[_0xcb50('0x93')][_0xcb50('0x95')]({'attributes':['id'],'raw':!![]})[_0xcb50('0x26')](function(_0x39b26b){if(_[_0xcb50('0x8f')](_0x39b26b)){_0x68830c[_0xcb50('0x42')](_0xcb50('0x96'));_0x1abd27['where'](_0xcb50('0x96'));}else{_0x68830c[_0xcb50('0x42')](_0xcb50('0x97'),_[_0xcb50('0x2b')](_0x39b26b,'id'));_0x1abd27['where']('i.SmsAccountId\x20IN\x20?',_[_0xcb50('0x2b')](_0x39b26b,'id'));}});})[_0xcb50('0x26')](function(){if(_0x6baf76['user'][_0xcb50('0x94')]===_0xcb50('0x98')&&!_0x130204&&!_0x6baf76['query'][_0xcb50('0x75')])return[];return db['sequelize'][_0xcb50('0x37')](_0x68830c['toString'](),_0x1a8217);})[_0xcb50('0x26')](function(_0xbbecaf){_0x56032d[_0xcb50('0x20')]=_0xbbecaf[_0xcb50('0x3c')];if(_0x56032d[_0xcb50('0x20')]===0x0)return[];return db[_0xcb50('0x99')]['query'](_0x5afa73[_0xcb50('0x9a')](),_0x1a8217)[_0xcb50('0x26')](function(_0x12309a){_0x390154=_[_0xcb50('0x9b')](_0x12309a,'id');_0x1a8217=_[_0xcb50('0x9c')](_0x1a8217,{'model':db[_0xcb50('0x9d')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x6baf76[_0xcb50('0x37')][_0xcb50('0x3b')]){_0xfdff22[_0xcb50('0x3a')]['forEach'](function(_0x45f334){_0x1abd27[_0xcb50('0x45')]('i.'+_0x45f334);});}else{_0x1abd27[_0xcb50('0x45')](_0xcb50('0x9e'),_0xcb50('0x5e'));_0x1abd27[_0xcb50('0x45')]('a.key',_0xcb50('0x9f'));_0x1abd27[_0xcb50('0x45')]('a.mandatoryDisposition',_0xcb50('0xa0'));_0x1abd27['field'](_0xcb50('0xa1'),_0xcb50('0x8d'));_0x1abd27['field'](_0xcb50('0xa2'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xa3'),'Contact.firstName');_0x1abd27['field'](_0xcb50('0xa4'),_0xcb50('0xa5'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xa6'),_0xcb50('0xa7'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xa8'),_0xcb50('0xa9'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xaa'),_0xcb50('0xab'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xac'),_0xcb50('0xad'));_0x1abd27['field'](_0xcb50('0xae'),'Owner.fullname');_0x1abd27['field'](_0xcb50('0xaf'),_0xcb50('0xb0'));_0x1abd27[_0xcb50('0x45')](_0xcb50('0xb1'),_0xcb50('0x2c'));}if(_0xfdff22[_0xcb50('0x3f')])_0x1abd27[_0xcb50('0x3f')](_0xfdff22[_0xcb50('0x3f')]);if(_0xfdff22[_0xcb50('0x21')])_0x1abd27[_0xcb50('0x21')](_0xfdff22['offset']);return db[_0xcb50('0x99')][_0xcb50('0x37')](_0x1abd27[_0xcb50('0x9a')](),_0x1a8217);})[_0xcb50('0x26')](function(_0x56a7ea){if(_0x56a7ea[_0xcb50('0x3c')]>0x0)_0x3422e5[_0xcb50('0x42')]('ui.SmsInteractionId\x20IN\x20?',_[_0xcb50('0x2b')](_0x56a7ea,'id'));return db[_0xcb50('0x99')]['query'](_0x3422e5['toString'](),_0x1a8217)[_0xcb50('0x26')](function(_0x2a6ccd){var _0x3d238c=_[_0xcb50('0xb2')](_0x2a6ccd,_0xcb50('0xb3'));var _0x15c2e2=[];_0x56a7ea[_0xcb50('0x2e')](function(_0x53ade6){_0x15c2e2[_0xcb50('0x2f')](updateSmsInteraction(_0x53ade6,_0x390154,_0x3d238c));});return BPromise[_0xcb50('0xb4')](_0x15c2e2);});});})['then'](function(_0x30d48a){_0x56032d[_0xcb50('0xb5')]=_0x30d48a;return _0x56032d;})[_0xcb50('0x26')](respondWithFilteredResult(_0xbe7bf9,_0xfdff22))[_0xcb50('0x30')](handleError(_0xbe7bf9,null));};exports[_0xcb50('0xb6')]=function(_0x60169e,_0x5784f0){var _0x47f08e={'raw':![],'where':{'id':_0x60169e[_0xcb50('0xb7')]['id']}},_0x30b8f4={};_0x30b8f4['model']=_[_0xcb50('0xb8')](db[_0xcb50('0x9d')][_0xcb50('0x32')]);_0x30b8f4[_0xcb50('0x37')]=_[_0xcb50('0xb8')](_0x60169e['query']);_0x30b8f4[_0xcb50('0x38')]=_[_0xcb50('0x39')](_0x30b8f4[_0xcb50('0x36')],_0x30b8f4[_0xcb50('0x37')]);_0x47f08e['attributes']=_[_0xcb50('0x39')](_0x30b8f4[_0xcb50('0x36')],qs[_0xcb50('0x3b')](_0x60169e[_0xcb50('0x37')][_0xcb50('0x3b')]));_0x47f08e['attributes']=_0x47f08e[_0xcb50('0x3a')][_0xcb50('0x3c')]?_0x47f08e[_0xcb50('0x3a')]:_0x30b8f4[_0xcb50('0x36')];if(_0x60169e['query']['includeAll']){_0x47f08e['include']=[{'all':!![]}];}_0x47f08e=_[_0xcb50('0x9c')]({},_0x47f08e,_0x60169e[_0xcb50('0xb9')]);return db[_0xcb50('0x9d')][_0xcb50('0x5d')](_0x47f08e)[_0xcb50('0x26')](handleEntityNotFound(_0x5784f0,null))[_0xcb50('0x26')](respondWithResult(_0x5784f0,null))[_0xcb50('0x30')](handleError(_0x5784f0,null));};exports[_0xcb50('0xba')]=function(_0x137459,_0x373140){return db[_0xcb50('0x9d')]['create'](_0x137459['body'],{})['then'](respondWithResult(_0x373140,0xc9))[_0xcb50('0x30')](handleError(_0x373140,null));};exports[_0xcb50('0xbb')]=function(_0x56dd4c,_0x26f3dd){if(_0x56dd4c['body']['id']){delete _0x56dd4c[_0xcb50('0xbc')]['id'];}return db['SmsInteraction'][_0xcb50('0x5d')]({'where':{'id':_0x56dd4c['params']['id']}})[_0xcb50('0x26')](handleEntityNotFound(_0x26f3dd,null))[_0xcb50('0x26')](saveUpdates(_0x56dd4c['body'],null))[_0xcb50('0x26')](respondWithResult(_0x26f3dd,null))[_0xcb50('0x30')](handleError(_0x26f3dd,null));};exports['destroy']=function(_0x46a53d,_0x5583b7){return db[_0xcb50('0x9d')]['find']({'where':{'id':_0x46a53d[_0xcb50('0xb7')]['id']}})[_0xcb50('0x26')](handleEntityNotFound(_0x5583b7,null))[_0xcb50('0x26')](removeEntity(_0x5583b7,null))[_0xcb50('0x30')](handleError(_0x5583b7,null));};exports['describe']=function(_0x4c1f02,_0x402d8f){return db['SmsInteraction'][_0xcb50('0xbd')]()['then'](respondWithResult(_0x402d8f,null))[_0xcb50('0x30')](handleError(_0x402d8f,null));};exports[_0xcb50('0xbe')]=function(_0x4304b9,_0x402751,_0x550e01){return db['SmsMessage'][_0xcb50('0x5d')]({'where':{'id':_0x4304b9[_0xcb50('0xb7')]['id']}})[_0xcb50('0x26')](handleEntityNotFound(_0x402751,null))['then'](function(_0x40d605){if(_0x40d605){return _0x40d605[_0xcb50('0xbe')](_0x4304b9['body'][_0xcb50('0xbf')],_['omit'](_0x4304b9[_0xcb50('0xbc')],[_0xcb50('0xbf'),'id'])||{});}})[_0xcb50('0x26')](respondWithResult(_0x402751,null))[_0xcb50('0x30')](handleError(_0x402751,null));};exports[_0xcb50('0xc0')]=function(_0x2a4aa2,_0x592a69,_0x5044c1){var _0x4f2b3a={'raw':![],'where':{}};var _0x321585={};var _0xf7f6fe={'count':0x0,'rows':[]};return db[_0xcb50('0x9d')][_0xcb50('0xc1')]({'where':{'id':_0x2a4aa2[_0xcb50('0xb7')]['id']}})[_0xcb50('0x26')](handleEntityNotFound(_0x592a69,null))[_0xcb50('0x26')](function(_0x307462){if(_0x307462){_0x321585[_0xcb50('0x36')]=_['keys'](db[_0xcb50('0xc2')]['rawAttributes']);_0x321585[_0xcb50('0x37')]=_[_0xcb50('0xb8')](_0x2a4aa2[_0xcb50('0x37')]);_0x321585[_0xcb50('0x38')]=_[_0xcb50('0x39')](_0x321585['model'],_0x321585[_0xcb50('0x37')]);_0x4f2b3a[_0xcb50('0x3a')]=_['intersection'](_0x321585[_0xcb50('0x36')],qs['fields'](_0x2a4aa2['query'][_0xcb50('0x3b')]));_0x4f2b3a[_0xcb50('0x3a')]=_0x4f2b3a[_0xcb50('0x3a')][_0xcb50('0x3c')]?_0x4f2b3a[_0xcb50('0x3a')]:_0x321585[_0xcb50('0x36')];if(!_0x2a4aa2[_0xcb50('0x37')][_0xcb50('0x3d')](_0xcb50('0x3e'))){_0x4f2b3a[_0xcb50('0x3f')]=qs[_0xcb50('0x3f')](_0x2a4aa2[_0xcb50('0x37')]['limit']);_0x4f2b3a['offset']=qs[_0xcb50('0x21')](_0x2a4aa2['query'][_0xcb50('0x21')]);}_0x4f2b3a['order']=qs['sort'](_0x2a4aa2[_0xcb50('0x37')][_0xcb50('0x41')]);_0x4f2b3a[_0xcb50('0x42')]=qs[_0xcb50('0x38')](_[_0xcb50('0x43')](_0x2a4aa2['query'],_0x321585[_0xcb50('0x38')]));_0x4f2b3a['where']['SmsInteractionId']=_0x307462['id'];if(_0x2a4aa2['query']['filter']){_0x4f2b3a[_0xcb50('0x42')]=_[_0xcb50('0x9c')](_0x4f2b3a[_0xcb50('0x42')],{'$or':_[_0xcb50('0x2b')](_0x4f2b3a[_0xcb50('0x3a')],function(_0x12ece2){var _0x42290d={};_0x42290d[_0x12ece2]={'$like':'%'+_0x2a4aa2[_0xcb50('0x37')][_0xcb50('0xc3')]+'%'};return _0x42290d;})});}if(_0x2a4aa2[_0xcb50('0x37')]['$gte']){var _0x12102e=_0x2a4aa2[_0xcb50('0x37')][_0xcb50('0x79')][_0xcb50('0x66')](',');var _0x7dc955={};_0x7dc955[_0x12102e[0x0]]={'$gte':moment(_0x12102e[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x4f2b3a[_0xcb50('0x42')]=_['merge'](_0x4f2b3a[_0xcb50('0x42')],_0x7dc955);}_0x4f2b3a=_[_0xcb50('0x9c')]({},_0x4f2b3a,_0x2a4aa2['options']);return db[_0xcb50('0xc2')][_0xcb50('0x20')]({'where':_0x4f2b3a[_0xcb50('0x42')]})[_0xcb50('0x26')](function(_0x3cd31d){_0xf7f6fe[_0xcb50('0x20')]=_0x3cd31d;if(_0x2a4aa2[_0xcb50('0x37')][_0xcb50('0xc4')]){_0x4f2b3a[_0xcb50('0xc5')]=[{'all':!![]}];}return db[_0xcb50('0xc2')][_0xcb50('0xc6')](_0x4f2b3a);})[_0xcb50('0x26')](function(_0x3dcbe6){_0xf7f6fe[_0xcb50('0xb5')]=_0x3dcbe6;return _0xf7f6fe;});}})[_0xcb50('0x26')](respondWithFilteredResult(_0x592a69,_0x4f2b3a))[_0xcb50('0x30')](handleError(_0x592a69,null));};exports[_0xcb50('0xc7')]=function(_0x22c0a8,_0x382ec0,_0x22f9ba){return db[_0xcb50('0x9d')]['find']({'where':{'id':_0x22c0a8[_0xcb50('0xb7')]['id']}})[_0xcb50('0x26')](handleEntityNotFound(_0x382ec0,null))['then'](function(_0x52a00c){if(_0x52a00c){return _0x52a00c[_0xcb50('0xc8')](_0x22c0a8[_0xcb50('0xbc')][_0xcb50('0xbf')],_[_0xcb50('0xc9')](_0x22c0a8[_0xcb50('0xbc')],[_0xcb50('0xbf'),'id'])||{})[_0xcb50('0xca')](function(){return db[_0xcb50('0x6d')][_0xcb50('0xc6')]({'attributes':['id',_0xcb50('0x28'),_0xcb50('0x46')],'where':{'id':_0x22c0a8['body'][_0xcb50('0xbf')]}});})['then'](function(_0x22c837){socket[_0xcb50('0xcb')](_0xcb50('0xcc'),{'id':Number(_0x22c0a8[_0xcb50('0xb7')]['id']),'tags':_0x22c837||[]});return{'id':Number(_0x22c0a8[_0xcb50('0xb7')]['id']),'tags':_0x22c837||[]};});}})[_0xcb50('0x26')](respondWithResult(_0x382ec0,null))[_0xcb50('0x30')](handleError(_0x382ec0,null));};exports[_0xcb50('0xcd')]=function(_0x45cddd,_0x286d57,_0x251fe4){return db[_0xcb50('0x9d')][_0xcb50('0x5d')]({'where':{'id':_0x45cddd[_0xcb50('0xb7')]['id']}})['then'](handleEntityNotFound(_0x286d57,null))['then'](function(_0x236b68){if(_0x236b68){return _0x236b68[_0xcb50('0xcd')](_0x45cddd[_0xcb50('0x37')][_0xcb50('0xbf')]);}})[_0xcb50('0x26')](respondWithStatusCode(_0x286d57,null))['catch'](handleError(_0x286d57,null));};exports[_0xcb50('0xce')]=function(_0xa2d609,_0x497cd1){var _0x141f97=moment()[_0xcb50('0xcf')]()[_0xcb50('0x9a')]();var _0x2df4a0=path[_0xcb50('0xd0')](config[_0xcb50('0xd1')],'server',_0xcb50('0xd2'),'tmp');var _0x45754a=path[_0xcb50('0xd0')](config[_0xcb50('0xd1')],_0xcb50('0xd3'),'files',_0xcb50('0xd4'));var _0x1c08ad=path[_0xcb50('0xd0')](_0x2df4a0,_0x141f97);var _0x5bfc2f=util['format'](_0xcb50('0xd5'),_0xa2d609['params']['id'],_0x141f97);var _0x38bd25=path[_0xcb50('0xd0')](_0x2df4a0,_0x5bfc2f);var _0x2cafb3=[];_0x2cafb3[_0xcb50('0x2f')]({'model':db['User'],'as':_0xcb50('0xd6'),'attributes':['id',_0xcb50('0xd7')],'raw':!![]});_0x2cafb3['push']({'model':db[_0xcb50('0xd8')],'as':_0xcb50('0x62'),'attributes':['id','firstName',_0xcb50('0xd9')],'raw':!![]});var _0xd5249c=[{'model':db[_0xcb50('0xc2')],'as':'Messages','attributes':['id','body',_0xcb50('0x77'),'direction',_0xcb50('0xda'),_0xcb50('0x7e')],'include':_0x2cafb3}];_0xd5249c[_0xcb50('0x2f')]({'model':db['SmsAccount'],'as':_0xcb50('0xdb'),'attributes':['id',_0xcb50('0x28')]});_0xd5249c['push']({'model':db[_0xcb50('0xd6')],'as':'Owner','attributes':['id','fullname']});return db[_0xcb50('0x9d')][_0xcb50('0x5d')]({'where':{'id':_0xa2d609[_0xcb50('0xb7')]['id']},'include':_0xd5249c})[_0xcb50('0x26')](handleEntityNotFound(_0x497cd1,null))[_0xcb50('0x26')](function(_0x37589f){if(_0x37589f){var _0x207895=_0x37589f[_0xcb50('0xdc')]({'plain':!![]});fs[_0xcb50('0xdd')](_0x1c08ad);var _0x3c5231={'channel':_0xcb50('0xde'),'account':_0x207895[_0xcb50('0xdb')]['name'],'agent':_0x207895[_0xcb50('0xdf')]?_0x207895[_0xcb50('0xdf')][_0xcb50('0xd7')]:_0xcb50('0xe0'),'createdAt':moment(_0x207895[_0xcb50('0x77')])['format'](_0xcb50('0xe1'))[_0xcb50('0x9a')](),'closedAt':_0x207895['closed']?moment(_0x207895[_0xcb50('0xe2')])['format'](_0xcb50('0xe1'))[_0xcb50('0x9a')]():'','disposition':_0x207895[_0xcb50('0xe3')],'messages':_(_0x207895['Messages'])[_0xcb50('0xc3')]({'secret':![]})[_0xcb50('0x2b')](function(_0x5a0b76){return{'date':moment(_0x5a0b76['createdAt'])['format'](_0xcb50('0xe1'))[_0xcb50('0x9a')](),'sender':_0x5a0b76['direction']===_0xcb50('0xe4')?_0x5a0b76[_0xcb50('0xd6')]?_0x5a0b76[_0xcb50('0xd6')][_0xcb50('0xd7')]:_0xcb50('0xe5'):_0x5a0b76['Contact'][_0xcb50('0xe6')]+(_0x5a0b76[_0xcb50('0x62')][_0xcb50('0xd9')]?'\x20'+_0x5a0b76[_0xcb50('0x62')]['lastName']:''),'body':_0x5a0b76[_0xcb50('0xbc')],'direction':_0x5a0b76[_0xcb50('0xe7')]==='out'?'A':'C','secret':_0x5a0b76[_0xcb50('0xda')],'read':_0x5a0b76['read']};})[_0xcb50('0x65')]()};return ejs[_0xcb50('0xe8')](path['join'](config[_0xcb50('0xd1')],_0xcb50('0xd3'),_0xcb50('0xe9'),_0xcb50('0xea')),{'interaction':_0x3c5231})['then'](function(_0x5ae329){var _0x5b9b58=path['join'](_0x1c08ad,_0xcb50('0xeb')+_0x207895['id']+'-'+_0x141f97+_0xcb50('0xec'));var _0x10acc9={'path':_0x5b9b58,'channel':_0xcb50('0xde'),'interactionId':_0x207895['id']};return pdf[_0xcb50('0xed')](_0x5ae329,_0x10acc9);})[_0xcb50('0x26')](function(){return new BPromise(function(_0x445195,_0x25abf7){zipdir(_0x1c08ad,{'saveTo':_0x38bd25},function(_0x5b5bca,_0x226651){if(_0x5b5bca)return _0x25abf7(_0x5b5bca);return _0x445195(_0x226651);});})['then'](function(){return new BPromise(function(_0x44ac00,_0x180295){rimraf(_0x1c08ad,function(_0x5d1507){if(_0x5d1507)_0x180295(_0x5d1507);return _0x44ac00();});});})[_0xcb50('0x26')](function(){return _0x497cd1[_0xcb50('0xce')](_0x38bd25,_0x5bfc2f,function(_0x186e2c){if(_0x186e2c){console[_0xcb50('0xee')](_0xcb50('0xef'),_0x186e2c);}else{fs[_0xcb50('0xf0')](_0x38bd25);}});});});}else{return _0x497cd1[_0xcb50('0xf1')](0xc8);}})[_0xcb50('0x30')](handleError(_0x497cd1,null));};
\ No newline at end of file
index 31040e5..b7b9ce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaebd=['SmsInteraction','../../mysqldb','SmsMessage','setMaxListeners','save','remove','then','map','findAll','unreadMessages','emit','catch','hasOwnProperty','events'];(function(_0x2c49d9,_0x365e13){var _0x4c6457=function(_0x578d1a){while(--_0x578d1a){_0x2c49d9['push'](_0x2c49d9['shift']());}};_0x4c6457(++_0x365e13);}(_0xaebd,0x1e9));var _0xdaeb=function(_0x5ef054,_0x4d976c){_0x5ef054=_0x5ef054-0x0;var _0x1077d5=_0xaebd[_0x5ef054];return _0x1077d5;};'use strict';var EventEmitter=require(_0xdaeb('0x0'));var SmsInteraction=require('../../mysqldb')['db'][_0xdaeb('0x1')];var SmsMessage=require(_0xdaeb('0x2'))['db'][_0xdaeb('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xdaeb('0x4')](0x0);var events={'afterCreate':_0xdaeb('0x5'),'afterUpdate':'update','afterDestroy':_0xdaeb('0x6')};function emitEvent(_0x1c617a){return function(_0x1a99be,_0x1141fe,_0xee94f9){_0x1a99be['getUsers']({'attributes':['id'],'raw':!![]})[_0xdaeb('0x7')](function(_0x3f7ba1){_0x1a99be['setDataValue']('Users',_0x3f7ba1[_0xdaeb('0x8')](function(_0x11b164){return{'id':_0x11b164['id']};}));return SmsMessage[_0xdaeb('0x9')]({'where':{'SmsInteractionId':_0x1a99be['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0xbb4b72){_0x1a99be['setDataValue'](_0xdaeb('0xa'),_0xbb4b72['length']);SmsInteractionEvents[_0xdaeb('0xb')](_0x1c617a+':'+_0x1a99be['id'],_0x1a99be);SmsInteractionEvents['emit'](_0x1c617a,_0x1a99be);_0xee94f9(null);})[_0xdaeb('0xc')](_0xee94f9(null));};}for(var e in events){if(events[_0xdaeb('0xd')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0x7708=['hook','exports','events','../../mysqldb','remove','getUsers','then','setDataValue','Users','map','length','emit','catch'];(function(_0x5c6f53,_0x5f08f6){var _0x4b9fff=function(_0x34595f){while(--_0x34595f){_0x5c6f53['push'](_0x5c6f53['shift']());}};_0x4b9fff(++_0x5f08f6);}(_0x7708,0x188));var _0x8770=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x7708[_0x40ac5e];return _0x2839d6;};'use strict';var EventEmitter=require(_0x8770('0x0'));var SmsInteraction=require(_0x8770('0x1'))['db']['SmsInteraction'];var SmsMessage=require(_0x8770('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x8770('0x2')};function emitEvent(_0x1a796d){return function(_0x577b13,_0x40d401,_0x50bab7){_0x577b13[_0x8770('0x3')]({'attributes':['id'],'raw':!![]})[_0x8770('0x4')](function(_0x2b0295){_0x577b13[_0x8770('0x5')](_0x8770('0x6'),_0x2b0295[_0x8770('0x7')](function(_0x2d4a1d){return{'id':_0x2d4a1d['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x577b13['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8770('0x4')](function(_0x2ca830){_0x577b13[_0x8770('0x5')]('unreadMessages',_0x2ca830[_0x8770('0x8')]);SmsInteractionEvents[_0x8770('0x9')](_0x1a796d+':'+_0x577b13['id'],_0x577b13);SmsInteractionEvents[_0x8770('0x9')](_0x1a796d,_0x577b13);_0x50bab7(null);})[_0x8770('0xa')](_0x50bab7(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0x8770('0xb')](e,emitEvent(event));}}module[_0x8770('0xc')]=SmsInteractionEvents;
\ No newline at end of file
index 20bd7c5..4d0cb2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbaf=['closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','sms_interactions'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0xbbaf,0xa4));var _0xfbba=function(_0x3f042c,_0x3d2cfe){_0x3f042c=_0x3f042c-0x0;var _0x280d2e=_0xbbaf[_0x3f042c];return _0x280d2e;};'use strict';var _=require(_0xfbba('0x0'));var util=require(_0xfbba('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xfbba('0x2'));var BPromise=require(_0xfbba('0x3'));var rp=require(_0xfbba('0x4'));var fs=require('fs');var path=require(_0xfbba('0x5'));var rimraf=require(_0xfbba('0x6'));var config=require(_0xfbba('0x7'));var attributes=require(_0xfbba('0x8'));module[_0xfbba('0x9')]=function(_0x428683,_0x2de7eb){return _0x428683[_0xfbba('0xa')]('SmsInteraction',attributes,{'tableName':_0xfbba('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4ec877,_0x575275,_0x4fbe5d){if(_0x4ec877['changed'](_0xfbba('0xc'))){_0x4ec877[_0xfbba('0xd')]=moment()[_0xfbba('0xe')](_0xfbba('0xf'));}_0x4fbe5d(null,_0x4ec877);}}});};
\ No newline at end of file
+var _0x5867=['SmsInteraction','sms_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsInteraction.attributes','exports'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x5867,0x9f));var _0x7586=function(_0x35b91e,_0x58d408){_0x35b91e=_0x35b91e-0x0;var _0x2251b9=_0x5867[_0x35b91e];return _0x2251b9;};'use strict';var _=require(_0x7586('0x0'));var util=require(_0x7586('0x1'));var logger=require(_0x7586('0x2'))(_0x7586('0x3'));var moment=require(_0x7586('0x4'));var BPromise=require(_0x7586('0x5'));var rp=require(_0x7586('0x6'));var fs=require('fs');var path=require(_0x7586('0x7'));var rimraf=require('rimraf');var config=require(_0x7586('0x8'));var attributes=require(_0x7586('0x9'));module[_0x7586('0xa')]=function(_0x49c603,_0x518f4f){return _0x49c603['define'](_0x7586('0xb'),attributes,{'tableName':_0x7586('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xb44db0,_0x4cc7e7,_0xd64916){if(_0xb44db0[_0x7586('0xd')](_0x7586('0xe'))){_0xb44db0[_0x7586('0xf')]=moment()['format'](_0x7586('0x10'));}_0xd64916(null,_0xb44db0);}}});};
\ No newline at end of file
index 81e26d4..76d201a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5148=['spread','AddTags','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','stringify','error','code','message','SmsInteraction,\x20%s,\x20%s','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','limit','debug','AddTagsToSmsInteraction','find','where','ids','omit'];(function(_0x498334,_0x27b6fe){var _0x13bb70=function(_0x4087b1){while(--_0x4087b1){_0x498334['push'](_0x498334['shift']());}};_0x13bb70(++_0x27b6fe);}(_0x5148,0x113));var _0x8514=function(_0x432af8,_0x477b3d){_0x432af8=_0x432af8-0x0;var _0x228f4f=_0x5148[_0x432af8];return _0x228f4f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8514('0x0'));var BPromise=require(_0x8514('0x1'));var rs=require(_0x8514('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8514('0x3'))['db'];var utils=require(_0x8514('0x4'));var logger=require('../../config/logger')(_0x8514('0x5'));var config=require(_0x8514('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8514('0x7')][_0x8514('0x8')]({'port':0x232a});config[_0x8514('0x9')]=_[_0x8514('0xa')](config[_0x8514('0x9')],{'host':_0x8514('0xb'),'port':0x18eb});var socket=require(_0x8514('0xc'))(new Redis(config[_0x8514('0x9')]));require('./smsInteraction.socket')[_0x8514('0xd')](socket);function respondWithRpcPromise(_0x2c0f98,_0x31135c,_0x3f87dd){return new BPromise(function(_0x1f7c48,_0x48d2bf){return client[_0x8514('0xe')](_0x2c0f98,_0x3f87dd)[_0x8514('0xf')](function(_0x44659a){logger[_0x8514('0x10')]('SmsInteraction,\x20%s,\x20%s',_0x31135c,_0x8514('0x11'));logger['debug']('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x31135c,_0x8514('0x11'),JSON[_0x8514('0x12')](_0x44659a));if(_0x44659a[_0x8514('0x13')]){if(_0x44659a['error'][_0x8514('0x14')]===0x1f4){logger[_0x8514('0x13')]('SmsInteraction,\x20%s,\x20%s',_0x31135c,_0x44659a[_0x8514('0x13')][_0x8514('0x15')]);return _0x48d2bf(_0x44659a[_0x8514('0x13')][_0x8514('0x15')]);}logger[_0x8514('0x13')](_0x8514('0x16'),_0x31135c,_0x44659a[_0x8514('0x13')][_0x8514('0x15')]);return _0x1f7c48(_0x44659a[_0x8514('0x13')][_0x8514('0x15')]);}else{logger[_0x8514('0x10')](_0x8514('0x16'),_0x31135c,_0x8514('0x11'));_0x1f7c48(_0x44659a[_0x8514('0x17')][_0x8514('0x15')]);}})[_0x8514('0x18')](function(_0x2b5f58){logger[_0x8514('0x13')](_0x8514('0x16'),_0x31135c,_0x2b5f58);_0x48d2bf(_0x2b5f58);});});}exports[_0x8514('0x19')]=function(_0x35079f){var _0x4e1db0=this;return new Promise(function(_0x369d2d,_0x4477a5){return db[_0x8514('0x1a')][_0x8514('0x1b')](_0x35079f[_0x8514('0x1c')],{'raw':_0x35079f['options']?_0x35079f['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x35079f[_0x8514('0x1d')]?_0x35079f[_0x8514('0x1d')]['where']||null:null,'attributes':_0x35079f[_0x8514('0x1d')]?_0x35079f[_0x8514('0x1d')]['attributes']||null:null,'limit':_0x35079f[_0x8514('0x1d')]?_0x35079f[_0x8514('0x1d')][_0x8514('0x1e')]||null:null})[_0x8514('0xf')](function(_0x4b7fb1){logger['info'](_0x8514('0x19'),_0x35079f);logger[_0x8514('0x1f')]('UpdateSmsInteraction',_0x35079f,JSON['stringify'](_0x4b7fb1));_0x369d2d(_0x4b7fb1);})['catch'](function(_0x158bfd){logger['error'](_0x8514('0x19'),_0x158bfd[_0x8514('0x15')],_0x35079f);_0x4477a5(_0x4e1db0[_0x8514('0x13')](0x1f4,_0x158bfd[_0x8514('0x15')]));});});};exports[_0x8514('0x20')]=function(_0x28513d){return new Promise(function(_0x39a52d,_0x231dde){return db['SmsInteraction'][_0x8514('0x21')]({'where':_0x28513d[_0x8514('0x1d')]?_0x28513d[_0x8514('0x1d')][_0x8514('0x22')]||null:null})[_0x8514('0xf')](function(_0x458daf){if(_0x458daf){return _0x458daf['addTags'](_0x28513d[_0x8514('0x1c')][_0x8514('0x23')],_[_0x8514('0x24')](_0x28513d['body'],[_0x8514('0x23'),'id'])||{});}})[_0x8514('0x25')](function(_0x1db6df){logger[_0x8514('0x10')](_0x8514('0x26'),_0x28513d);logger[_0x8514('0x1f')](_0x8514('0x26'),_0x28513d,JSON[_0x8514('0x12')](_0x1db6df));_0x39a52d(_0x1db6df);})[_0x8514('0x18')](function(_0x5565e4){logger[_0x8514('0x13')]('AddTags',_0x5565e4[_0x8514('0x15')],_0x28513d);_0x231dde(_this['error'](0x1f4,_0x5565e4[_0x8514('0x15')]));});});};
\ No newline at end of file
+var _0xe5eb=['stringify','error','code','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','options','raw','where','attributes','AddTagsToSmsInteraction','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x507c81,_0x3e1b56){var _0x368a25=function(_0x1e7519){while(--_0x1e7519){_0x507c81['push'](_0x507c81['shift']());}};_0x368a25(++_0x3e1b56);}(_0xe5eb,0x173));var _0xbe5e=function(_0x37e961,_0x457dba){_0x37e961=_0x37e961-0x0;var _0x5862b5=_0xe5eb[_0x37e961];return _0x5862b5;};'use strict';var _=require(_0xbe5e('0x0'));var util=require(_0xbe5e('0x1'));var moment=require(_0xbe5e('0x2'));var BPromise=require(_0xbe5e('0x3'));var rs=require(_0xbe5e('0x4'));var fs=require('fs');var Redis=require(_0xbe5e('0x5'));var db=require(_0xbe5e('0x6'))['db'];var utils=require(_0xbe5e('0x7'));var logger=require('../../config/logger')(_0xbe5e('0x8'));var config=require(_0xbe5e('0x9'));var jayson=require(_0xbe5e('0xa'));var client=jayson['client'][_0xbe5e('0xb')]({'port':0x232a});config[_0xbe5e('0xc')]=_[_0xbe5e('0xd')](config[_0xbe5e('0xc')],{'host':_0xbe5e('0xe'),'port':0x18eb});var socket=require(_0xbe5e('0xf'))(new Redis(config['redis']));require(_0xbe5e('0x10'))[_0xbe5e('0x11')](socket);function respondWithRpcPromise(_0x2e9261,_0x4d0927,_0x4c4194){return new BPromise(function(_0x25ce07,_0x537f98){return client[_0xbe5e('0x12')](_0x2e9261,_0x4c4194)[_0xbe5e('0x13')](function(_0x10e428){logger[_0xbe5e('0x14')](_0xbe5e('0x15'),_0x4d0927,_0xbe5e('0x16'));logger[_0xbe5e('0x17')](_0xbe5e('0x18'),_0x4d0927,_0xbe5e('0x16'),JSON[_0xbe5e('0x19')](_0x10e428));if(_0x10e428[_0xbe5e('0x1a')]){if(_0x10e428[_0xbe5e('0x1a')][_0xbe5e('0x1b')]===0x1f4){logger[_0xbe5e('0x1a')](_0xbe5e('0x15'),_0x4d0927,_0x10e428['error'][_0xbe5e('0x1c')]);return _0x537f98(_0x10e428['error'][_0xbe5e('0x1c')]);}logger[_0xbe5e('0x1a')](_0xbe5e('0x15'),_0x4d0927,_0x10e428['error'][_0xbe5e('0x1c')]);return _0x25ce07(_0x10e428[_0xbe5e('0x1a')][_0xbe5e('0x1c')]);}else{logger['info'](_0xbe5e('0x15'),_0x4d0927,_0xbe5e('0x16'));_0x25ce07(_0x10e428[_0xbe5e('0x1d')]['message']);}})[_0xbe5e('0x1e')](function(_0x159acb){logger[_0xbe5e('0x1a')](_0xbe5e('0x15'),_0x4d0927,_0x159acb);_0x537f98(_0x159acb);});});}exports[_0xbe5e('0x1f')]=function(_0x281e90){var _0x3d9f35=this;return new Promise(function(_0x53d548,_0x3d96ce){return db[_0xbe5e('0x20')][_0xbe5e('0x21')](_0x281e90['body'],{'raw':_0x281e90[_0xbe5e('0x22')]?_0x281e90['options'][_0xbe5e('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x281e90[_0xbe5e('0x22')]?_0x281e90[_0xbe5e('0x22')][_0xbe5e('0x24')]||null:null,'attributes':_0x281e90['options']?_0x281e90[_0xbe5e('0x22')][_0xbe5e('0x25')]||null:null,'limit':_0x281e90[_0xbe5e('0x22')]?_0x281e90[_0xbe5e('0x22')]['limit']||null:null})[_0xbe5e('0x13')](function(_0x2dbcb5){logger[_0xbe5e('0x14')]('UpdateSmsInteraction',_0x281e90);logger[_0xbe5e('0x17')](_0xbe5e('0x1f'),_0x281e90,JSON[_0xbe5e('0x19')](_0x2dbcb5));_0x53d548(_0x2dbcb5);})[_0xbe5e('0x1e')](function(_0x555b3a){logger[_0xbe5e('0x1a')](_0xbe5e('0x1f'),_0x555b3a[_0xbe5e('0x1c')],_0x281e90);_0x3d96ce(_0x3d9f35[_0xbe5e('0x1a')](0x1f4,_0x555b3a['message']));});});};exports[_0xbe5e('0x26')]=function(_0x2175d6){return new Promise(function(_0x338ceb,_0x13590e){return db['SmsInteraction']['find']({'where':_0x2175d6[_0xbe5e('0x22')]?_0x2175d6[_0xbe5e('0x22')]['where']||null:null})['then'](function(_0x3e4577){if(_0x3e4577){return _0x3e4577['addTags'](_0x2175d6[_0xbe5e('0x27')][_0xbe5e('0x28')],_[_0xbe5e('0x29')](_0x2175d6['body'],['ids','id'])||{});}})[_0xbe5e('0x2a')](function(_0x36004b){logger[_0xbe5e('0x14')]('AddTags',_0x2175d6);logger[_0xbe5e('0x17')](_0xbe5e('0x2b'),_0x2175d6,JSON[_0xbe5e('0x19')](_0x36004b));_0x338ceb(_0x36004b);})['catch'](function(_0x161e2d){logger[_0xbe5e('0x1a')]('AddTags',_0x161e2d[_0xbe5e('0x1c')],_0x2175d6);_0x13590e(_this['error'](0x1f4,_0x161e2d['message']));});});};
\ No newline at end of file
index 69b61d1..677138c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ae=['removeListener','length','smsInteraction:','save','remove','update','emit'];(function(_0x3951a6,_0x1ef76e){var _0x27daf8=function(_0x5457bd){while(--_0x5457bd){_0x3951a6['push'](_0x3951a6['shift']());}};_0x27daf8(++_0x1ef76e);}(_0x57ae,0x10d));var _0xe57a=function(_0x5ede09,_0x118079){_0x5ede09=_0x5ede09-0x0;var _0x272d3c=_0x57ae[_0x5ede09];return _0x272d3c;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0xe57a('0x0'),_0xe57a('0x1'),_0xe57a('0x2')];function createListener(_0x1c87e8,_0x2942a4){return function(_0x496bfe){_0x2942a4[_0xe57a('0x3')](_0x1c87e8,_0x496bfe);};}function removeListener(_0xe93fa3,_0x19b588){return function(){SmsInteractionEvents[_0xe57a('0x4')](_0xe93fa3,_0x19b588);};}exports['register']=function(_0x548934){for(var _0x5466ee=0x0,_0x5683f0=events[_0xe57a('0x5')];_0x5466ee<_0x5683f0;_0x5466ee++){var _0x4e3d94=events[_0x5466ee];var _0x8f7963=createListener(_0xe57a('0x6')+_0x4e3d94,_0x548934);SmsInteractionEvents['on'](_0x4e3d94,_0x8f7963);}};
\ No newline at end of file
+var _0xd146=['save','remove','emit','register'];(function(_0x1c33d2,_0x278c84){var _0x235ad2=function(_0x4e3418){while(--_0x4e3418){_0x1c33d2['push'](_0x1c33d2['shift']());}};_0x235ad2(++_0x278c84);}(_0xd146,0x114));var _0x6d14=function(_0x3814ff,_0x1f42f7){_0x3814ff=_0x3814ff-0x0;var _0x40147c=_0xd146[_0x3814ff];return _0x40147c;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x6d14('0x0'),_0x6d14('0x1'),'update'];function createListener(_0x3f9472,_0x5a3eb6){return function(_0x19e683){_0x5a3eb6[_0x6d14('0x2')](_0x3f9472,_0x19e683);};}function removeListener(_0x662f4d,_0x2343a4){return function(){SmsInteractionEvents['removeListener'](_0x662f4d,_0x2343a4);};}exports[_0x6d14('0x3')]=function(_0x57189f){for(var _0x3cccdb=0x0,_0x115d08=events['length'];_0x3cccdb<_0x115d08;_0x3cccdb++){var _0xa5f16d=events[_0x3cccdb];var _0x3c98e7=createListener('smsInteraction:'+_0xa5f16d,_0x57189f);SmsInteractionEvents['on'](_0xa5f16d,_0x3c98e7);}};
\ No newline at end of file
index baa0417..8d58b79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47a1=['show','post','tracked','sms','smsmessage:create','create','/:id/status','status','put','update','/:id/reject','delete','exports','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0x47a1,0x179));var _0x147a=function(_0x2ecdfa,_0x244181){_0x2ecdfa=_0x2ecdfa-0x0;var _0x445618=_0x47a1[_0x2ecdfa];return _0x445618;};'use strict';var multer=require('multer');var util=require(_0x147a('0x0'));var path=require(_0x147a('0x1'));var timeout=require('connect-timeout');var express=require(_0x147a('0x2'));var router=express['Router']();var fs_extra=require(_0x147a('0x3'));var auth=require(_0x147a('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x147a('0x5'));var controller=require(_0x147a('0x6'));router[_0x147a('0x7')]('/',auth[_0x147a('0x8')](),controller[_0x147a('0x9')]);router['get'](_0x147a('0xa'),auth[_0x147a('0x8')](),controller[_0x147a('0xb')]);router['get'](_0x147a('0xc'),auth[_0x147a('0x8')](),controller[_0x147a('0xd')]);router[_0x147a('0xe')]('/',auth[_0x147a('0x8')](),interaction[_0x147a('0xf')](_0x147a('0x10'),_0x147a('0x11')),controller[_0x147a('0x12')]);router[_0x147a('0xe')](_0x147a('0x13'),controller[_0x147a('0x14')]);router[_0x147a('0x15')](_0x147a('0xc'),auth[_0x147a('0x8')](),controller[_0x147a('0x16')]);router[_0x147a('0x15')]('/:id/accept',auth[_0x147a('0x8')](),controller['accept']);router[_0x147a('0x15')](_0x147a('0x17'),auth[_0x147a('0x8')](),controller['reject']);router[_0x147a('0x18')](_0x147a('0xc'),auth[_0x147a('0x8')](),controller['destroy']);module[_0x147a('0x19')]=router;
\ No newline at end of file
+var _0x9b85=['create','/:id/status','put','/:id','update','/:id/accept','reject','exports','util','connect-timeout','express','Router','fs-extra','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','post','tracked','sms','smsmessage:create'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x9b85,0xd7));var _0x59b8=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x9b85[_0x5d4607];return _0x5e4a86;};'use strict';var multer=require('multer');var util=require(_0x59b8('0x0'));var path=require('path');var timeout=require(_0x59b8('0x1'));var express=require(_0x59b8('0x2'));var router=express[_0x59b8('0x3')]();var fs_extra=require(_0x59b8('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x59b8('0x5'));router[_0x59b8('0x6')]('/',auth[_0x59b8('0x7')](),controller[_0x59b8('0x8')]);router[_0x59b8('0x6')](_0x59b8('0x9'),auth[_0x59b8('0x7')](),controller[_0x59b8('0xa')]);router[_0x59b8('0x6')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x59b8('0xb')]('/',auth[_0x59b8('0x7')](),interaction[_0x59b8('0xc')](_0x59b8('0xd'),_0x59b8('0xe')),controller[_0x59b8('0xf')]);router[_0x59b8('0xb')](_0x59b8('0x10'),controller['status']);router[_0x59b8('0x11')](_0x59b8('0x12'),auth[_0x59b8('0x7')](),controller[_0x59b8('0x13')]);router[_0x59b8('0x11')](_0x59b8('0x14'),auth['isAuthenticated'](),controller['accept']);router[_0x59b8('0x11')]('/:id/reject',auth[_0x59b8('0x7')](),controller[_0x59b8('0x15')]);router['delete']('/:id',auth[_0x59b8('0x7')](),controller['destroy']);module[_0x59b8('0x16')]=router;
\ No newline at end of file
index c17c39d..6a88428 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fce=['sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE'];(function(_0x1ee351,_0x54261b){var _0x245aaf=function(_0x3e4b65){while(--_0x3e4b65){_0x1ee351['push'](_0x1ee351['shift']());}};_0x245aaf(++_0x54261b);}(_0x9fce,0x99));var _0xe9fc=function(_0x3c51d4,_0x36ba53){_0x3c51d4=_0x3c51d4-0x0;var _0x53c45f=_0x9fce[_0x3c51d4];return _0x53c45f;};'use strict';var Sequelize=require(_0xe9fc('0x0'));module[_0xe9fc('0x1')]={'body':{'type':Sequelize[_0xe9fc('0x2')](_0xe9fc('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xe9fc('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe9fc('0x5')]('in',_0xe9fc('0x6')),'defaultValue':_0xe9fc('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0xe9fc('0x7')](0xbe)},'phone':{'type':Sequelize[_0xe9fc('0x7')]},'readAt':{'type':Sequelize[_0xe9fc('0x8')]},'secret':{'type':Sequelize[_0xe9fc('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xe9fc('0x7')]},'providerResponse':{'type':Sequelize[_0xe9fc('0x2')]}};
\ No newline at end of file
+var _0x4277=['out','STRING','DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x14e536,_0x3079fb){var _0x4db7db=function(_0x861672){while(--_0x861672){_0x14e536['push'](_0x14e536['shift']());}};_0x4db7db(++_0x3079fb);}(_0x4277,0xc9));var _0x7427=function(_0x3e5772,_0x5e3bd5){_0x3e5772=_0x3e5772-0x0;var _0x418660=_0x4277[_0x3e5772];return _0x418660;};'use strict';var Sequelize=require(_0x7427('0x0'));module[_0x7427('0x1')]={'body':{'type':Sequelize[_0x7427('0x2')](_0x7427('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x7427('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x7427('0x5')]('in',_0x7427('0x6')),'defaultValue':_0x7427('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x7427('0x7')](0xbe)},'phone':{'type':Sequelize[_0x7427('0x7')]},'readAt':{'type':Sequelize[_0x7427('0x8')]},'secret':{'type':Sequelize[_0x7427('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x7427('0x7')]},'providerResponse':{'type':Sequelize[_0x7427('0x2')]}};
\ No newline at end of file
index 6ca22c9..f5ba669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf954=['socket.io-emitter','./smsMessage.socket','register','client','http','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','SmsMessage','rawAttributes','fieldName','type','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','create','body','find','params','sms','read','readAt','format','UserId','user','agent','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','AcceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','internal','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','sms-interactions','interaction','null','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','email','motionChannel','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','messageId','Status','plivio','infobip','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults'];(function(_0x5b6382,_0x4b2ad1){var _0x4995d8=function(_0x3d7e1e){while(--_0x3d7e1e){_0x5b6382['push'](_0x5b6382['shift']());}};_0x4995d8(++_0x4b2ad1);}(_0xf954,0x10e));var _0x4f95=function(_0x45cf7c,_0x5090d5){_0x45cf7c=_0x45cf7c-0x0;var _0x1444b3=_0xf954[_0x45cf7c];return _0x1444b3;};'use strict';var emlformat=require(_0x4f95('0x0'));var rimraf=require(_0x4f95('0x1'));var zipdir=require(_0x4f95('0x2'));var jsonpatch=require(_0x4f95('0x3'));var rp=require(_0x4f95('0x4'));var moment=require(_0x4f95('0x5'));var BPromise=require(_0x4f95('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4f95('0x7'));var sox=require(_0x4f95('0x8'));var csv=require(_0x4f95('0x9'));var ejs=require(_0x4f95('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4f95('0xb'));var squel=require(_0x4f95('0xc'));var crypto=require(_0x4f95('0xd'));var jsforce=require(_0x4f95('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4f95('0xf'));var Papa=require(_0x4f95('0x10'));var Redis=require(_0x4f95('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4f95('0x12'));var logger=require(_0x4f95('0x13'))(_0x4f95('0x14'));var utils=require(_0x4f95('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x4f95('0x16'));var db=require(_0x4f95('0x17'))['db'];config[_0x4f95('0x18')]=_[_0x4f95('0x19')](config[_0x4f95('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x4f95('0x1a'))(new Redis(config[_0x4f95('0x18')]));require(_0x4f95('0x1b'))[_0x4f95('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x4f95('0x1d')][_0x4f95('0x1e')]({'port':0x232c});var client9002=jayson[_0x4f95('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfd3673,_0x451dc2,_0x1d9bd1,_0x12d95e){return new BPromise(function(_0x3ea415,_0x197ad5){var _0x2aa444=_0x12d95e||client;return _0x2aa444[_0x4f95('0x1f')](_0xfd3673,_0x1d9bd1)[_0x4f95('0x20')](function(_0x3a3508){logger['info'](_0x4f95('0x21'),_0x451dc2,_0x4f95('0x22'));logger[_0x4f95('0x23')](_0x4f95('0x24'),_0x451dc2,_0x4f95('0x22'),JSON[_0x4f95('0x25')](_0x3a3508));if(_0x3a3508[_0x4f95('0x26')]){if(_0x3a3508[_0x4f95('0x26')][_0x4f95('0x27')]===0x1f4){logger['error'](_0x4f95('0x21'),_0x451dc2,_0x3a3508[_0x4f95('0x26')][_0x4f95('0x28')]);return _0x197ad5(_0x3a3508[_0x4f95('0x26')][_0x4f95('0x28')]);}logger[_0x4f95('0x26')](_0x4f95('0x21'),_0x451dc2,_0x3a3508[_0x4f95('0x26')][_0x4f95('0x28')]);return _0x3ea415(_0x3a3508[_0x4f95('0x26')][_0x4f95('0x28')]);}else{logger[_0x4f95('0x29')](_0x4f95('0x21'),_0x451dc2,'request\x20sent');_0x3ea415(_0x3a3508[_0x4f95('0x2a')][_0x4f95('0x28')]);}})[_0x4f95('0x2b')](function(_0x34a4de){logger[_0x4f95('0x26')](_0x4f95('0x21'),_0x451dc2,_0x34a4de);_0x197ad5(_0x34a4de);});});}function respondWithStatusCode(_0x303f65,_0x49677d){_0x49677d=_0x49677d||0xcc;return function(_0x2154c4){if(_0x2154c4){return _0x303f65['sendStatus'](_0x49677d);}return _0x303f65[_0x4f95('0x2c')](_0x49677d)[_0x4f95('0x2d')]();};}function respondWithResult(_0x224a0a,_0x1079fd){_0x1079fd=_0x1079fd||0xc8;return function(_0x449aa1){if(_0x449aa1){return _0x224a0a['status'](_0x1079fd)[_0x4f95('0x2e')](_0x449aa1);}};}function respondWithFilteredResult(_0x2dc278,_0x1cdd1b){return function(_0x6ff6c4){if(_0x6ff6c4){var _0x1ae268=typeof _0x1cdd1b[_0x4f95('0x2f')]===_0x4f95('0x30')&&typeof _0x1cdd1b[_0x4f95('0x31')]==='undefined';var _0x5d9c7a=_0x6ff6c4['count'];var _0x4cb67d=_0x1ae268?0x0:_0x1cdd1b['offset'];var _0x40d115=_0x1ae268?_0x6ff6c4[_0x4f95('0x32')]:_0x1cdd1b[_0x4f95('0x2f')]+_0x1cdd1b[_0x4f95('0x31')];var _0x3d6ca4;if(_0x40d115>=_0x5d9c7a){_0x40d115=_0x5d9c7a;_0x3d6ca4=0xc8;}else{_0x3d6ca4=0xce;}_0x2dc278[_0x4f95('0x2c')](_0x3d6ca4);return _0x2dc278[_0x4f95('0x33')](_0x4f95('0x34'),_0x4cb67d+'-'+_0x40d115+'/'+_0x5d9c7a)['json'](_0x6ff6c4);}return null;};}function patchUpdates(_0x30dd91){return function(_0x234dc5){try{jsonpatch[_0x4f95('0x35')](_0x234dc5,_0x30dd91,!![]);}catch(_0x4fbb4c){return BPromise[_0x4f95('0x36')](_0x4fbb4c);}return _0x234dc5[_0x4f95('0x37')]();};}function saveUpdates(_0x4c055a,_0x2b04e7){return function(_0x592129){if(_0x592129){return _0x592129[_0x4f95('0x38')](_0x4c055a)[_0x4f95('0x20')](function(_0x2038e0){return _0x2038e0;});}return null;};}function removeEntity(_0xede25,_0x3c8be4){return function(_0xd27454){if(_0xd27454){return _0xd27454[_0x4f95('0x39')]()[_0x4f95('0x20')](function(){_0xede25[_0x4f95('0x2c')](0xcc)[_0x4f95('0x2d')]();});}};}function handleEntityNotFound(_0x34afc9,_0x5511e7){return function(_0x60973f){if(!_0x60973f){_0x34afc9['sendStatus'](0x194);}return _0x60973f;};}function handleError(_0x5df581,_0x199de5){_0x199de5=_0x199de5||0x1f4;return function(_0x1dff41){logger[_0x4f95('0x26')](_0x1dff41[_0x4f95('0x3a')]);if(_0x1dff41[_0x4f95('0x3b')]){delete _0x1dff41['name'];}_0x5df581['status'](_0x199de5)[_0x4f95('0x3c')](_0x1dff41);};}exports[_0x4f95('0x3d')]=function(_0x3768ee,_0x2cc8df){var _0x2435b1={},_0x22f2a6={},_0x51f5e4={'count':0x0,'rows':[]};var _0xcc4bf2=_[_0x4f95('0x3e')](db[_0x4f95('0x3f')][_0x4f95('0x40')],function(_0x203b19){return{'name':_0x203b19[_0x4f95('0x41')],'type':_0x203b19[_0x4f95('0x42')]['key']};});_0x22f2a6['model']=_['map'](_0xcc4bf2,'name');_0x22f2a6[_0x4f95('0x43')]=_[_0x4f95('0x44')](_0x3768ee['query']);_0x22f2a6['filters']=_['intersection'](_0x22f2a6[_0x4f95('0x45')],_0x22f2a6[_0x4f95('0x43')]);_0x2435b1[_0x4f95('0x46')]=_[_0x4f95('0x47')](_0x22f2a6[_0x4f95('0x45')],qs['fields'](_0x3768ee[_0x4f95('0x43')][_0x4f95('0x48')]));_0x2435b1[_0x4f95('0x46')]=_0x2435b1[_0x4f95('0x46')][_0x4f95('0x49')]?_0x2435b1[_0x4f95('0x46')]:_0x22f2a6[_0x4f95('0x45')];if(!_0x3768ee[_0x4f95('0x43')][_0x4f95('0x4a')]('nolimit')){_0x2435b1[_0x4f95('0x31')]=qs[_0x4f95('0x31')](_0x3768ee[_0x4f95('0x43')][_0x4f95('0x31')]);_0x2435b1[_0x4f95('0x2f')]=qs['offset'](_0x3768ee['query']['offset']);}_0x2435b1[_0x4f95('0x4b')]=qs[_0x4f95('0x4c')](_0x3768ee[_0x4f95('0x43')]['sort']);_0x2435b1['where']=qs[_0x4f95('0x4d')](_[_0x4f95('0x4e')](_0x3768ee[_0x4f95('0x43')],_0x22f2a6['filters']),_0xcc4bf2);if(_0x3768ee[_0x4f95('0x43')][_0x4f95('0x4f')]){_0x2435b1['where']=_['merge'](_0x2435b1[_0x4f95('0x50')],{'$or':_[_0x4f95('0x3e')](_0xcc4bf2,function(_0x17bb9a){if(_0x17bb9a[_0x4f95('0x42')]!==_0x4f95('0x51')){var _0x43715a={};_0x43715a[_0x17bb9a[_0x4f95('0x3b')]]={'$like':'%'+_0x3768ee[_0x4f95('0x43')][_0x4f95('0x4f')]+'%'};return _0x43715a;}})});}_0x2435b1=_[_0x4f95('0x52')]({},_0x2435b1,_0x3768ee[_0x4f95('0x53')]);var _0x59689a={'where':_0x2435b1[_0x4f95('0x50')]};return db[_0x4f95('0x3f')][_0x4f95('0x32')](_0x59689a)[_0x4f95('0x20')](function(_0x570c81){_0x51f5e4[_0x4f95('0x32')]=_0x570c81;if(_0x3768ee[_0x4f95('0x43')][_0x4f95('0x54')]){_0x2435b1[_0x4f95('0x55')]=[{'all':!![]}];}return db[_0x4f95('0x3f')][_0x4f95('0x56')](_0x2435b1);})['then'](function(_0x14ed18){_0x51f5e4[_0x4f95('0x57')]=_0x14ed18;return _0x51f5e4;})[_0x4f95('0x20')](respondWithFilteredResult(_0x2cc8df,_0x2435b1))[_0x4f95('0x2b')](handleError(_0x2cc8df,null));};exports[_0x4f95('0x58')]=function(_0x3c57ab,_0x3ea1bf){var _0x59a820={'raw':!![],'where':{'id':_0x3c57ab['params']['id']}},_0x107c7a={};_0x107c7a[_0x4f95('0x45')]=_[_0x4f95('0x44')](db[_0x4f95('0x3f')]['rawAttributes']);_0x107c7a['query']=_[_0x4f95('0x44')](_0x3c57ab['query']);_0x107c7a[_0x4f95('0x4d')]=_[_0x4f95('0x47')](_0x107c7a[_0x4f95('0x45')],_0x107c7a[_0x4f95('0x43')]);_0x59a820[_0x4f95('0x46')]=_['intersection'](_0x107c7a[_0x4f95('0x45')],qs['fields'](_0x3c57ab[_0x4f95('0x43')][_0x4f95('0x48')]));_0x59a820[_0x4f95('0x46')]=_0x59a820[_0x4f95('0x46')][_0x4f95('0x49')]?_0x59a820[_0x4f95('0x46')]:_0x107c7a[_0x4f95('0x45')];if(_0x3c57ab[_0x4f95('0x43')][_0x4f95('0x54')]){_0x59a820[_0x4f95('0x55')]=[{'all':!![]}];}_0x59a820=_[_0x4f95('0x52')]({},_0x59a820,_0x3c57ab[_0x4f95('0x53')]);return db[_0x4f95('0x3f')]['find'](_0x59a820)[_0x4f95('0x20')](handleEntityNotFound(_0x3ea1bf,null))[_0x4f95('0x20')](respondWithResult(_0x3ea1bf,null))[_0x4f95('0x2b')](handleError(_0x3ea1bf,null));};exports[_0x4f95('0x59')]=function(_0x454c5c,_0x107f09){return db[_0x4f95('0x3f')][_0x4f95('0x59')](_0x454c5c[_0x4f95('0x5a')],{})[_0x4f95('0x20')](respondWithResult(_0x107f09,0xc9))[_0x4f95('0x2b')](handleError(_0x107f09,null));};exports[_0x4f95('0x38')]=function(_0x3e425e,_0x55c450){if(_0x3e425e[_0x4f95('0x5a')]['id']){delete _0x3e425e['body']['id'];}return db[_0x4f95('0x3f')][_0x4f95('0x5b')]({'where':{'id':_0x3e425e[_0x4f95('0x5c')]['id']}})[_0x4f95('0x20')](handleEntityNotFound(_0x55c450,null))[_0x4f95('0x20')](saveUpdates(_0x3e425e[_0x4f95('0x5a')],null))[_0x4f95('0x20')](respondWithResult(_0x55c450,null))[_0x4f95('0x2b')](handleError(_0x55c450,null));};exports[_0x4f95('0x39')]=function(_0x39f973,_0x55fff3){return db[_0x4f95('0x3f')][_0x4f95('0x5b')]({'where':{'id':_0x39f973[_0x4f95('0x5c')]['id']}})[_0x4f95('0x20')](handleEntityNotFound(_0x55fff3,null))[_0x4f95('0x20')](removeEntity(_0x55fff3,null))['catch'](handleError(_0x55fff3,null));};exports['describe']=function(_0x4527de,_0x1c1611){return db[_0x4f95('0x3f')]['describe']()[_0x4f95('0x20')](respondWithResult(_0x1c1611,null))[_0x4f95('0x2b')](handleError(_0x1c1611,null));};var interaction_log=require(_0x4f95('0x13'))('sms-interactions');exports['accept']=function(_0x52c8ec,_0x1e1cf9,_0x3767cb){var _0x180178={'agent':{},'channel':_0x4f95('0x5d')};if(_0x52c8ec[_0x4f95('0x5a')]['id']){delete _0x52c8ec[_0x4f95('0x5a')]['id'];}_0x52c8ec[_0x4f95('0x5a')][_0x4f95('0x5e')]=!![];_0x52c8ec[_0x4f95('0x5a')][_0x4f95('0x5f')]=moment()[_0x4f95('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0x52c8ec['body'][_0x4f95('0x61')]=_0x52c8ec[_0x4f95('0x5a')]['UserId']||_0x52c8ec[_0x4f95('0x62')]['id'];_0x180178[_0x4f95('0x63')]['id']=_0x52c8ec[_0x4f95('0x5a')][_0x4f95('0x61')];return db[_0x4f95('0x3f')]['find']({'where':{'id':_0x52c8ec[_0x4f95('0x5c')]['id'],'UserId':null}})[_0x4f95('0x20')](handleEntityNotFound(_0x1e1cf9,null))[_0x4f95('0x20')](saveUpdates(_0x52c8ec[_0x4f95('0x5a')],null))['then'](function(_0x53f0df){if(_0x53f0df){_0x180178[_0x4f95('0x28')]=_0x53f0df[_0x4f95('0x64')]({'plain':!![]});return db[_0x4f95('0x65')][_0x4f95('0x5b')]({'where':{'id':_0x53f0df[_0x4f95('0x66')]}});}return null;})[_0x4f95('0x20')](handleEntityNotFound(_0x1e1cf9,null))[_0x4f95('0x20')](function(_0x30caad){if(_0x30caad){return _0x30caad['update']({'UserId':_0x52c8ec[_0x4f95('0x5a')][_0x4f95('0x61')],'read1stAt':_[_0x4f95('0x67')](_0x30caad[_0x4f95('0x68')])?moment()[_0x4f95('0x60')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x51541b){if(_0x51541b){_0x180178['interaction']=_0x51541b['get']({'plain':!![]});interaction_log[_0x4f95('0x29')](_0x4f95('0x69'),_0x52c8ec['user']['id'],_0x52c8ec['user'][_0x4f95('0x3b')],_0x52c8ec['user']['role'],_0x180178['interaction']['id'],_0x52c8ec['body']?JSON[_0x4f95('0x25')](_0x52c8ec[_0x4f95('0x5a')]):'null');return respondWithRpcPromise(_0x4f95('0x6a'),'acceptMessage',_0x180178);}return null;})[_0x4f95('0x20')](function(_0x2a97d8){var _0x3e0e1d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2a97d8[_0x4f95('0x28')][_0x4f95('0x6b')];return db[_0x4f95('0x6c')][_0x4f95('0x43')](_0x3e0e1d,{'type':db[_0x4f95('0x6d')][_0x4f95('0x6e')][_0x4f95('0x6f')],'raw':!![]})['then'](function(_0x55a73e){return _0x55a73e;});})['then'](function(_0x36c4e8){if(_0x36c4e8){_0x180178[_0x4f95('0x28')][_0x4f95('0x70')]=_0x36c4e8[0x0];if(!_0x52c8ec[_0x4f95('0x5a')]['UserId'])return;return db[_0x4f95('0x71')][_0x4f95('0x5b')]({'where':{'id':_0x52c8ec[_0x4f95('0x5a')][_0x4f95('0x61')],'role':_0x4f95('0x63')},'attributes':['id',_0x4f95('0x3b'),'fullname','email',_0x4f95('0x72')],'raw':!![]});}return null;})[_0x4f95('0x20')](function(_0xe451af){if(!_0xe451af)return null;_0x180178[_0x4f95('0x28')][_0x4f95('0x63')]=_0xe451af;return _0x180178;})[_0x4f95('0x20')](function(_0x4ef6ee){if(_0x4ef6ee){if(_0x52c8ec[_0x4f95('0x5a')][_0x4f95('0x73')]){_0x180178['message'][_0x4f95('0x74')]=util[_0x4f95('0x60')](_0x4f95('0x75'),_0x52c8ec[_0x4f95('0x62')][_0x4f95('0x3b')]);_0x180178[_0x4f95('0x28')][_0x4f95('0x76')]=_0x180178[_0x4f95('0x76')];_0x180178[_0x4f95('0x28')]['motionChannel']=_0x180178['channel'];_0x180178['message'][_0x4f95('0x77')]=_0x4f95('0x78');return respondWithRpcPromise('EventManager',_0x4f95('0x79'),{'event':_0x4f95('0x7a'),'message':_0x180178[_0x4f95('0x28')]},client9002)[_0x4f95('0x20')](function(){return _0x180178;});}return _0x180178;}return null;})[_0x4f95('0x20')](respondWithResult(_0x1e1cf9,null))[_0x4f95('0x2b')](handleError(_0x1e1cf9,null));};var interaction_log=require(_0x4f95('0x13'))(_0x4f95('0x7b'));exports[_0x4f95('0x36')]=function(_0x203e81,_0x2b2323,_0x2f936a){var _0x1cf4a3={'agent':{},'channel':'sms'};if(_0x203e81[_0x4f95('0x5a')]['id']){delete _0x203e81[_0x4f95('0x5a')]['id'];}_0x203e81['body'][_0x4f95('0x61')]=_0x203e81['body'][_0x4f95('0x61')]||_0x203e81[_0x4f95('0x62')]['id'];_0x1cf4a3[_0x4f95('0x63')]['id']=_0x203e81[_0x4f95('0x5a')]['UserId'];return db['SmsMessage']['find']({'where':{'id':_0x203e81[_0x4f95('0x5c')]['id'],'UserId':null}})[_0x4f95('0x20')](handleEntityNotFound(_0x2b2323,null))[_0x4f95('0x20')](function(_0x41d646){if(_0x41d646){_0x1cf4a3[_0x4f95('0x28')]=_0x41d646[_0x4f95('0x64')]({'plain':!![]});return db['SmsInteraction'][_0x4f95('0x5b')]({'where':{'id':_0x41d646[_0x4f95('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x2b2323,null))[_0x4f95('0x20')](function(_0x522d5b){if(_0x522d5b){_0x1cf4a3[_0x4f95('0x7c')]=_0x522d5b[_0x4f95('0x64')]({'plain':!![]});interaction_log[_0x4f95('0x29')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x203e81['user']['id'],_0x203e81['user'][_0x4f95('0x3b')],_0x203e81[_0x4f95('0x62')]['role'],_0x1cf4a3['interaction']['id'],_0x203e81[_0x4f95('0x5a')]?JSON['stringify'](_0x203e81['body']):_0x4f95('0x7d'));return respondWithRpcPromise(_0x4f95('0x7e'),_0x4f95('0x7f'),_0x1cf4a3);}return null;})[_0x4f95('0x20')](function(_0x24050e){var _0x198b25=_0x4f95('0x80')+_0x24050e[_0x4f95('0x28')][_0x4f95('0x6b')];return db[_0x4f95('0x6c')]['query'](_0x198b25,{'type':db['Sequelize']['QueryTypes'][_0x4f95('0x6f')],'raw':!![]})['then'](function(_0xb1e0c){return _0xb1e0c;});})[_0x4f95('0x20')](function(_0x4ef439){if(_0x4ef439){_0x1cf4a3[_0x4f95('0x28')]['contact']=_0x4ef439[0x0];if(!_0x203e81[_0x4f95('0x5a')][_0x4f95('0x61')])return;return db[_0x4f95('0x71')][_0x4f95('0x5b')]({'where':{'id':_0x203e81[_0x4f95('0x5a')][_0x4f95('0x61')],'role':_0x4f95('0x63')},'attributes':['id',_0x4f95('0x3b'),'fullname',_0x4f95('0x81'),_0x4f95('0x72')],'raw':!![]});}return null;})[_0x4f95('0x20')](function(_0x49c93d){if(!_0x49c93d)return null;_0x1cf4a3[_0x4f95('0x28')]['agent']=_0x49c93d;return _0x1cf4a3;})['then'](function(_0x181015){if(_0x181015){_0x181015['message'][_0x4f95('0x74')]=util['format'](_0x4f95('0x75'),_0x203e81[_0x4f95('0x62')][_0x4f95('0x3b')]);_0x181015[_0x4f95('0x28')][_0x4f95('0x76')]=_0x1cf4a3[_0x4f95('0x76')];_0x181015[_0x4f95('0x28')][_0x4f95('0x82')]=_0x1cf4a3[_0x4f95('0x76')];_0x181015[_0x4f95('0x28')][_0x4f95('0x77')]='reject';respondWithRpcPromise(_0x4f95('0x79'),_0x4f95('0x79'),{'event':_0x4f95('0x83'),'message':_0x181015[_0x4f95('0x28')]},client9002);return _0x1cf4a3;}return null;})[_0x4f95('0x20')](respondWithResult(_0x2b2323,null))[_0x4f95('0x2b')](handleError(_0x2b2323,null));};exports[_0x4f95('0x2c')]=function(_0x47002,_0x18dd5c,_0x33d859){if(_0x47002['body']['id']){delete _0x47002[_0x4f95('0x5a')]['id'];}var _0x51b492;return db[_0x4f95('0x3f')]['find']({'where':{'id':_0x47002['params']['id']}})[_0x4f95('0x20')](handleEntityNotFound(_0x18dd5c,null))[_0x4f95('0x20')](function(_0x5ed915){if(_0x5ed915){_0x51b492=_0x5ed915;return db[_0x4f95('0x84')][_0x4f95('0x5b')]({'where':{'id':_0x5ed915[_0x4f95('0x85')]}});}})[_0x4f95('0x20')](handleEntityNotFound(_0x18dd5c,null))[_0x4f95('0x20')](function(_0x13d36e){if(_0x13d36e){logger[_0x4f95('0x23')](_0x4f95('0x24'),_0x4f95('0x2c'),_0x4f95('0x86'),_0x13d36e[_0x4f95('0x42')],util[_0x4f95('0x87')](_0x47002[_0x4f95('0x5a')],{'showHidden':![],'depth':null}));switch(_0x13d36e['type']){case _0x4f95('0x88'):if(_0x47002['body'][_0x4f95('0x89')]&&_0x47002[_0x4f95('0x5a')]['MessageSid']===_0x51b492['messageId']){return _0x51b492[_0x4f95('0x38')]({'read':!![]});}else{logger['error'](_0x4f95('0x8a'),_0x4f95('0x2c'),_0x4f95('0x88'),util[_0x4f95('0x87')](_0x47002['body'],{'showHidden':![],'depth':null}));}break;case _0x4f95('0x8b'):if(_0x47002['body'][_0x4f95('0x8c')]&&_0x47002[_0x4f95('0x5a')]['MessageUUID']===_0x51b492[_0x4f95('0x8d')]&&_['indexOf'](['sent','delivered'],_0x47002[_0x4f95('0x5a')][_0x4f95('0x8e')])>=0x0){return _0x51b492[_0x4f95('0x38')]({'read':!![]});}else{logger[_0x4f95('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x4f95('0x2c'),_0x4f95('0x8f'),util[_0x4f95('0x87')](_0x47002[_0x4f95('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x4f95('0x90'):var _0x587d64=_0x47002[_0x4f95('0x5a')][_0x4f95('0x91')][0x0];if(_0x587d64[_0x4f95('0x2c')][_0x4f95('0x92')]===_0x4f95('0x93')){return _0x51b492[_0x4f95('0x38')]({'read':!![]});}else{logger[_0x4f95('0x26')](_0x4f95('0x8a'),'status',_0x4f95('0x90'),util['inspect'](_0x47002['body'],{'showHidden':![],'depth':null}));}break;}return _0x51b492;}})[_0x4f95('0x20')](respondWithResult(_0x18dd5c,null))[_0x4f95('0x2b')](handleError(_0x18dd5c,null));};
\ No newline at end of file
+var _0x5f8f=['end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','map','SmsMessage','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','rows','show','find','create','body','params','sms-interactions','accept','sms','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','SmsInteractionId','isNil','read1stAt','interaction','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','acceptmessage','SmsInteraction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','EventManager','rejectmessage','SmsAccount','SmsAccountId','inspect','twilio','MessageSid','messageId','plivo','MessageUUID','indexOf','delivered','Status','SmsAccount,\x20%s,\x20%s,\x20%s','plivio','infobip','results','groupName','DELIVERED','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','client','http','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','sendStatus','status'];(function(_0x3674a4,_0x1fccd6){var _0x516bc3=function(_0x1153a3){while(--_0x1153a3){_0x3674a4['push'](_0x3674a4['shift']());}};_0x516bc3(++_0x1fccd6);}(_0x5f8f,0x189));var _0xf5f8=function(_0x5d8e26,_0x314e50){_0x5d8e26=_0x5d8e26-0x0;var _0x339873=_0x5f8f[_0x5d8e26];return _0x339873;};'use strict';var emlformat=require(_0xf5f8('0x0'));var rimraf=require(_0xf5f8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf5f8('0x2'));var rp=require(_0xf5f8('0x3'));var moment=require(_0xf5f8('0x4'));var BPromise=require(_0xf5f8('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xf5f8('0x6'));var csv=require(_0xf5f8('0x7'));var ejs=require(_0xf5f8('0x8'));var fs=require('fs');var fs_extra=require(_0xf5f8('0x9'));var _=require(_0xf5f8('0xa'));var squel=require(_0xf5f8('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf5f8('0xc'));var toCsv=require(_0xf5f8('0x7'));var querystring=require(_0xf5f8('0xd'));var Papa=require('papaparse');var Redis=require(_0xf5f8('0xe'));var authService=require(_0xf5f8('0xf'));var qs=require(_0xf5f8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf5f8('0x11'));var logger=require(_0xf5f8('0x12'))(_0xf5f8('0x13'));var utils=require('../../config/utils');var config=require(_0xf5f8('0x14'));var licenseUtil=require(_0xf5f8('0x15'));var db=require(_0xf5f8('0x16'))['db'];config[_0xf5f8('0x17')]=_[_0xf5f8('0x18')](config[_0xf5f8('0x17')],{'host':_0xf5f8('0x19'),'port':0x18eb});var socket=require(_0xf5f8('0x1a'))(new Redis(config[_0xf5f8('0x17')]));require(_0xf5f8('0x1b'))[_0xf5f8('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0xf5f8('0x1d')]['http']({'port':0x232c});var client9002=jayson[_0xf5f8('0x1d')][_0xf5f8('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x3e7a81,_0x5df336,_0x526694,_0xf2f41e){return new BPromise(function(_0xde9cdd,_0x289016){var _0x36789a=_0xf2f41e||client;return _0x36789a['request'](_0x3e7a81,_0x526694)['then'](function(_0x1ccc1c){logger[_0xf5f8('0x1f')](_0xf5f8('0x20'),_0x5df336,'request\x20sent');logger[_0xf5f8('0x21')](_0xf5f8('0x22'),_0x5df336,'request\x20sent',JSON[_0xf5f8('0x23')](_0x1ccc1c));if(_0x1ccc1c['error']){if(_0x1ccc1c['error'][_0xf5f8('0x24')]===0x1f4){logger[_0xf5f8('0x25')]('SmsMessage,\x20%s,\x20%s',_0x5df336,_0x1ccc1c[_0xf5f8('0x25')][_0xf5f8('0x26')]);return _0x289016(_0x1ccc1c['error'][_0xf5f8('0x26')]);}logger[_0xf5f8('0x25')](_0xf5f8('0x20'),_0x5df336,_0x1ccc1c[_0xf5f8('0x25')][_0xf5f8('0x26')]);return _0xde9cdd(_0x1ccc1c[_0xf5f8('0x25')]['message']);}else{logger[_0xf5f8('0x1f')](_0xf5f8('0x20'),_0x5df336,'request\x20sent');_0xde9cdd(_0x1ccc1c['result'][_0xf5f8('0x26')]);}})[_0xf5f8('0x27')](function(_0x1c206c){logger['error'](_0xf5f8('0x20'),_0x5df336,_0x1c206c);_0x289016(_0x1c206c);});});}function respondWithStatusCode(_0x6df6cd,_0x2dff8c){_0x2dff8c=_0x2dff8c||0xcc;return function(_0x7d0325){if(_0x7d0325){return _0x6df6cd[_0xf5f8('0x28')](_0x2dff8c);}return _0x6df6cd[_0xf5f8('0x29')](_0x2dff8c)[_0xf5f8('0x2a')]();};}function respondWithResult(_0x22533a,_0x389f16){_0x389f16=_0x389f16||0xc8;return function(_0x5c85dd){if(_0x5c85dd){return _0x22533a['status'](_0x389f16)[_0xf5f8('0x2b')](_0x5c85dd);}};}function respondWithFilteredResult(_0x58d743,_0x4b5f9c){return function(_0x4dddd5){if(_0x4dddd5){var _0x4c4f31=typeof _0x4b5f9c['offset']===_0xf5f8('0x2c')&&typeof _0x4b5f9c[_0xf5f8('0x2d')]===_0xf5f8('0x2c');var _0x33178f=_0x4dddd5[_0xf5f8('0x2e')];var _0x50a1cb=_0x4c4f31?0x0:_0x4b5f9c[_0xf5f8('0x2f')];var _0x1d1706=_0x4c4f31?_0x4dddd5['count']:_0x4b5f9c[_0xf5f8('0x2f')]+_0x4b5f9c[_0xf5f8('0x2d')];var _0x51436d;if(_0x1d1706>=_0x33178f){_0x1d1706=_0x33178f;_0x51436d=0xc8;}else{_0x51436d=0xce;}_0x58d743[_0xf5f8('0x29')](_0x51436d);return _0x58d743['set'](_0xf5f8('0x30'),_0x50a1cb+'-'+_0x1d1706+'/'+_0x33178f)['json'](_0x4dddd5);}return null;};}function patchUpdates(_0x34da32){return function(_0x2e2483){try{jsonpatch[_0xf5f8('0x31')](_0x2e2483,_0x34da32,!![]);}catch(_0x278d70){return BPromise[_0xf5f8('0x32')](_0x278d70);}return _0x2e2483[_0xf5f8('0x33')]();};}function saveUpdates(_0x3155c4,_0xd7daed){return function(_0x10ea6b){if(_0x10ea6b){return _0x10ea6b[_0xf5f8('0x34')](_0x3155c4)[_0xf5f8('0x35')](function(_0x10960d){return _0x10960d;});}return null;};}function removeEntity(_0x1737cc,_0xdeafec){return function(_0x354b41){if(_0x354b41){return _0x354b41[_0xf5f8('0x36')]()['then'](function(){_0x1737cc[_0xf5f8('0x29')](0xcc)[_0xf5f8('0x2a')]();});}};}function handleEntityNotFound(_0x3e07a9,_0x2440a2){return function(_0x52da62){if(!_0x52da62){_0x3e07a9[_0xf5f8('0x28')](0x194);}return _0x52da62;};}function handleError(_0x440cd0,_0x205129){_0x205129=_0x205129||0x1f4;return function(_0x2067ba){logger[_0xf5f8('0x25')](_0x2067ba[_0xf5f8('0x37')]);if(_0x2067ba['name']){delete _0x2067ba[_0xf5f8('0x38')];}_0x440cd0[_0xf5f8('0x29')](_0x205129)[_0xf5f8('0x39')](_0x2067ba);};}exports['index']=function(_0x2ebb22,_0x188017){var _0x1f609b={},_0x363b4e={},_0x2b9eb7={'count':0x0,'rows':[]};var _0x46ee4c=_[_0xf5f8('0x3a')](db[_0xf5f8('0x3b')]['rawAttributes'],function(_0x2e9995){return{'name':_0x2e9995[_0xf5f8('0x3c')],'type':_0x2e9995[_0xf5f8('0x3d')][_0xf5f8('0x3e')]};});_0x363b4e[_0xf5f8('0x3f')]=_[_0xf5f8('0x3a')](_0x46ee4c,_0xf5f8('0x38'));_0x363b4e[_0xf5f8('0x40')]=_[_0xf5f8('0x41')](_0x2ebb22[_0xf5f8('0x40')]);_0x363b4e['filters']=_[_0xf5f8('0x42')](_0x363b4e[_0xf5f8('0x3f')],_0x363b4e['query']);_0x1f609b[_0xf5f8('0x43')]=_[_0xf5f8('0x42')](_0x363b4e[_0xf5f8('0x3f')],qs[_0xf5f8('0x44')](_0x2ebb22[_0xf5f8('0x40')][_0xf5f8('0x44')]));_0x1f609b[_0xf5f8('0x43')]=_0x1f609b[_0xf5f8('0x43')][_0xf5f8('0x45')]?_0x1f609b[_0xf5f8('0x43')]:_0x363b4e[_0xf5f8('0x3f')];if(!_0x2ebb22[_0xf5f8('0x40')]['hasOwnProperty'](_0xf5f8('0x46'))){_0x1f609b[_0xf5f8('0x2d')]=qs[_0xf5f8('0x2d')](_0x2ebb22['query'][_0xf5f8('0x2d')]);_0x1f609b['offset']=qs[_0xf5f8('0x2f')](_0x2ebb22[_0xf5f8('0x40')][_0xf5f8('0x2f')]);}_0x1f609b[_0xf5f8('0x47')]=qs[_0xf5f8('0x48')](_0x2ebb22['query'][_0xf5f8('0x48')]);_0x1f609b[_0xf5f8('0x49')]=qs[_0xf5f8('0x4a')](_[_0xf5f8('0x4b')](_0x2ebb22[_0xf5f8('0x40')],_0x363b4e[_0xf5f8('0x4a')]),_0x46ee4c);if(_0x2ebb22[_0xf5f8('0x40')][_0xf5f8('0x4c')]){_0x1f609b[_0xf5f8('0x49')]=_[_0xf5f8('0x4d')](_0x1f609b['where'],{'$or':_['map'](_0x46ee4c,function(_0x35df8e){if(_0x35df8e['type']!=='VIRTUAL'){var _0x42e64a={};_0x42e64a[_0x35df8e[_0xf5f8('0x38')]]={'$like':'%'+_0x2ebb22[_0xf5f8('0x40')]['filter']+'%'};return _0x42e64a;}})});}_0x1f609b=_[_0xf5f8('0x4d')]({},_0x1f609b,_0x2ebb22[_0xf5f8('0x4e')]);var _0x40fe33={'where':_0x1f609b[_0xf5f8('0x49')]};return db[_0xf5f8('0x3b')][_0xf5f8('0x2e')](_0x40fe33)[_0xf5f8('0x35')](function(_0x2109aa){_0x2b9eb7['count']=_0x2109aa;if(_0x2ebb22[_0xf5f8('0x40')][_0xf5f8('0x4f')]){_0x1f609b['include']=[{'all':!![]}];}return db[_0xf5f8('0x3b')]['findAll'](_0x1f609b);})[_0xf5f8('0x35')](function(_0x2ee9e7){_0x2b9eb7[_0xf5f8('0x50')]=_0x2ee9e7;return _0x2b9eb7;})['then'](respondWithFilteredResult(_0x188017,_0x1f609b))['catch'](handleError(_0x188017,null));};exports[_0xf5f8('0x51')]=function(_0x792647,_0x4d2f29){var _0x379a83={'raw':!![],'where':{'id':_0x792647['params']['id']}},_0x5004db={};_0x5004db[_0xf5f8('0x3f')]=_['keys'](db[_0xf5f8('0x3b')]['rawAttributes']);_0x5004db['query']=_['keys'](_0x792647[_0xf5f8('0x40')]);_0x5004db[_0xf5f8('0x4a')]=_[_0xf5f8('0x42')](_0x5004db['model'],_0x5004db[_0xf5f8('0x40')]);_0x379a83[_0xf5f8('0x43')]=_[_0xf5f8('0x42')](_0x5004db[_0xf5f8('0x3f')],qs[_0xf5f8('0x44')](_0x792647['query'][_0xf5f8('0x44')]));_0x379a83[_0xf5f8('0x43')]=_0x379a83[_0xf5f8('0x43')][_0xf5f8('0x45')]?_0x379a83[_0xf5f8('0x43')]:_0x5004db[_0xf5f8('0x3f')];if(_0x792647['query'][_0xf5f8('0x4f')]){_0x379a83['include']=[{'all':!![]}];}_0x379a83=_[_0xf5f8('0x4d')]({},_0x379a83,_0x792647[_0xf5f8('0x4e')]);return db[_0xf5f8('0x3b')][_0xf5f8('0x52')](_0x379a83)['then'](handleEntityNotFound(_0x4d2f29,null))[_0xf5f8('0x35')](respondWithResult(_0x4d2f29,null))[_0xf5f8('0x27')](handleError(_0x4d2f29,null));};exports[_0xf5f8('0x53')]=function(_0x284d92,_0x2ddd3a){return db[_0xf5f8('0x3b')]['create'](_0x284d92[_0xf5f8('0x54')],{})[_0xf5f8('0x35')](respondWithResult(_0x2ddd3a,0xc9))[_0xf5f8('0x27')](handleError(_0x2ddd3a,null));};exports[_0xf5f8('0x34')]=function(_0x506bf8,_0x1198de){if(_0x506bf8['body']['id']){delete _0x506bf8[_0xf5f8('0x54')]['id'];}return db[_0xf5f8('0x3b')][_0xf5f8('0x52')]({'where':{'id':_0x506bf8[_0xf5f8('0x55')]['id']}})[_0xf5f8('0x35')](handleEntityNotFound(_0x1198de,null))[_0xf5f8('0x35')](saveUpdates(_0x506bf8[_0xf5f8('0x54')],null))[_0xf5f8('0x35')](respondWithResult(_0x1198de,null))[_0xf5f8('0x27')](handleError(_0x1198de,null));};exports[_0xf5f8('0x36')]=function(_0x1c9367,_0x3f58f5){return db[_0xf5f8('0x3b')][_0xf5f8('0x52')]({'where':{'id':_0x1c9367[_0xf5f8('0x55')]['id']}})['then'](handleEntityNotFound(_0x3f58f5,null))[_0xf5f8('0x35')](removeEntity(_0x3f58f5,null))['catch'](handleError(_0x3f58f5,null));};exports['describe']=function(_0x173ca2,_0xafe60){return db['SmsMessage']['describe']()[_0xf5f8('0x35')](respondWithResult(_0xafe60,null))[_0xf5f8('0x27')](handleError(_0xafe60,null));};var interaction_log=require(_0xf5f8('0x12'))(_0xf5f8('0x56'));exports[_0xf5f8('0x57')]=function(_0x13fb0d,_0x4ccdd5,_0x2f24bb){var _0x36233b={'agent':{},'channel':_0xf5f8('0x58')};if(_0x13fb0d[_0xf5f8('0x54')]['id']){delete _0x13fb0d['body']['id'];}_0x13fb0d[_0xf5f8('0x54')][_0xf5f8('0x59')]=!![];_0x13fb0d[_0xf5f8('0x54')]['readAt']=moment()[_0xf5f8('0x5a')](_0xf5f8('0x5b'));_0x13fb0d['body'][_0xf5f8('0x5c')]=_0x13fb0d[_0xf5f8('0x54')][_0xf5f8('0x5c')]||_0x13fb0d['user']['id'];_0x36233b[_0xf5f8('0x5d')]['id']=_0x13fb0d['body'][_0xf5f8('0x5c')];return db[_0xf5f8('0x3b')][_0xf5f8('0x52')]({'where':{'id':_0x13fb0d[_0xf5f8('0x55')]['id'],'UserId':null}})[_0xf5f8('0x35')](handleEntityNotFound(_0x4ccdd5,null))[_0xf5f8('0x35')](saveUpdates(_0x13fb0d[_0xf5f8('0x54')],null))['then'](function(_0x5a5d32){if(_0x5a5d32){_0x36233b['message']=_0x5a5d32['get']({'plain':!![]});return db['SmsInteraction'][_0xf5f8('0x52')]({'where':{'id':_0x5a5d32[_0xf5f8('0x5e')]}});}return null;})['then'](handleEntityNotFound(_0x4ccdd5,null))['then'](function(_0x44f662){if(_0x44f662){return _0x44f662[_0xf5f8('0x34')]({'UserId':_0x13fb0d['body'][_0xf5f8('0x5c')],'read1stAt':_[_0xf5f8('0x5f')](_0x44f662[_0xf5f8('0x60')])?moment()[_0xf5f8('0x5a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xf5f8('0x35')](function(_0x3f4f6e){if(_0x3f4f6e){_0x36233b[_0xf5f8('0x61')]=_0x3f4f6e[_0xf5f8('0x62')]({'plain':!![]});interaction_log['info'](_0xf5f8('0x63'),_0x13fb0d['user']['id'],_0x13fb0d[_0xf5f8('0x64')][_0xf5f8('0x38')],_0x13fb0d[_0xf5f8('0x64')][_0xf5f8('0x65')],_0x36233b[_0xf5f8('0x61')]['id'],_0x13fb0d['body']?JSON[_0xf5f8('0x23')](_0x13fb0d[_0xf5f8('0x54')]):_0xf5f8('0x66'));return respondWithRpcPromise(_0xf5f8('0x67'),_0xf5f8('0x68'),_0x36233b);}return null;})[_0xf5f8('0x35')](function(_0x3cc015){var _0x4abd19=_0xf5f8('0x69')+_0x3cc015[_0xf5f8('0x26')][_0xf5f8('0x6a')];return db[_0xf5f8('0x6b')][_0xf5f8('0x40')](_0x4abd19,{'type':db[_0xf5f8('0x6c')][_0xf5f8('0x6d')][_0xf5f8('0x6e')],'raw':!![]})[_0xf5f8('0x35')](function(_0x177255){return _0x177255;});})[_0xf5f8('0x35')](function(_0xdc653f){if(_0xdc653f){_0x36233b[_0xf5f8('0x26')][_0xf5f8('0x6f')]=_0xdc653f[0x0];if(!_0x13fb0d['body'][_0xf5f8('0x5c')])return;return db[_0xf5f8('0x70')][_0xf5f8('0x52')]({'where':{'id':_0x13fb0d[_0xf5f8('0x54')][_0xf5f8('0x5c')],'role':_0xf5f8('0x5d')},'attributes':['id','name',_0xf5f8('0x71'),_0xf5f8('0x72'),_0xf5f8('0x73')],'raw':!![]});}return null;})[_0xf5f8('0x35')](function(_0x58484f){if(!_0x58484f)return null;_0x36233b[_0xf5f8('0x26')]['agent']=_0x58484f;return _0x36233b;})[_0xf5f8('0x35')](function(_0x36a534){if(_0x36a534){if(_0x13fb0d[_0xf5f8('0x54')][_0xf5f8('0x74')]){_0x36233b[_0xf5f8('0x26')][_0xf5f8('0x75')]=util[_0xf5f8('0x5a')](_0xf5f8('0x76'),_0x13fb0d[_0xf5f8('0x64')][_0xf5f8('0x38')]);_0x36233b['message'][_0xf5f8('0x77')]=_0x36233b[_0xf5f8('0x77')];_0x36233b['message'][_0xf5f8('0x78')]='accept';return respondWithRpcPromise('EventManager','EventManager',{'event':_0xf5f8('0x79'),'message':_0x36233b[_0xf5f8('0x26')]},client9002)[_0xf5f8('0x35')](function(){return _0x36233b;});}return _0x36233b;}return null;})['then'](respondWithResult(_0x4ccdd5,null))[_0xf5f8('0x27')](handleError(_0x4ccdd5,null));};var interaction_log=require(_0xf5f8('0x12'))(_0xf5f8('0x56'));exports[_0xf5f8('0x32')]=function(_0x27fdf9,_0x2cb006,_0x1e4983){var _0x430814={'agent':{},'channel':'sms'};if(_0x27fdf9[_0xf5f8('0x54')]['id']){delete _0x27fdf9[_0xf5f8('0x54')]['id'];}_0x27fdf9[_0xf5f8('0x54')]['UserId']=_0x27fdf9[_0xf5f8('0x54')][_0xf5f8('0x5c')]||_0x27fdf9['user']['id'];_0x430814[_0xf5f8('0x5d')]['id']=_0x27fdf9['body'][_0xf5f8('0x5c')];return db['SmsMessage'][_0xf5f8('0x52')]({'where':{'id':_0x27fdf9[_0xf5f8('0x55')]['id'],'UserId':null}})[_0xf5f8('0x35')](handleEntityNotFound(_0x2cb006,null))['then'](function(_0x596936){if(_0x596936){_0x430814[_0xf5f8('0x26')]=_0x596936[_0xf5f8('0x62')]({'plain':!![]});return db[_0xf5f8('0x7a')][_0xf5f8('0x52')]({'where':{'id':_0x596936[_0xf5f8('0x5e')]}});}return null;})[_0xf5f8('0x35')](handleEntityNotFound(_0x2cb006,null))[_0xf5f8('0x35')](function(_0x5132f1){if(_0x5132f1){_0x430814['interaction']=_0x5132f1[_0xf5f8('0x62')]({'plain':!![]});interaction_log[_0xf5f8('0x1f')](_0xf5f8('0x7b'),_0x27fdf9['user']['id'],_0x27fdf9[_0xf5f8('0x64')]['name'],_0x27fdf9['user'][_0xf5f8('0x65')],_0x430814[_0xf5f8('0x61')]['id'],_0x27fdf9[_0xf5f8('0x54')]?JSON[_0xf5f8('0x23')](_0x27fdf9[_0xf5f8('0x54')]):'null');return respondWithRpcPromise(_0xf5f8('0x7c'),_0xf5f8('0x7d'),_0x430814);}return null;})['then'](function(_0x3bd597){var _0xa27e08=_0xf5f8('0x69')+_0x3bd597[_0xf5f8('0x26')]['ContactId'];return db[_0xf5f8('0x6b')][_0xf5f8('0x40')](_0xa27e08,{'type':db[_0xf5f8('0x6c')][_0xf5f8('0x6d')][_0xf5f8('0x6e')],'raw':!![]})[_0xf5f8('0x35')](function(_0xafe534){return _0xafe534;});})[_0xf5f8('0x35')](function(_0x1440f5){if(_0x1440f5){_0x430814[_0xf5f8('0x26')][_0xf5f8('0x6f')]=_0x1440f5[0x0];if(!_0x27fdf9['body'][_0xf5f8('0x5c')])return;return db['User']['find']({'where':{'id':_0x27fdf9[_0xf5f8('0x54')]['UserId'],'role':_0xf5f8('0x5d')},'attributes':['id',_0xf5f8('0x38'),_0xf5f8('0x71'),_0xf5f8('0x72'),_0xf5f8('0x73')],'raw':!![]});}return null;})[_0xf5f8('0x35')](function(_0x231d2a){if(!_0x231d2a)return null;_0x430814['message'][_0xf5f8('0x5d')]=_0x231d2a;return _0x430814;})[_0xf5f8('0x35')](function(_0x569c92){if(_0x569c92){_0x569c92[_0xf5f8('0x26')][_0xf5f8('0x75')]=util[_0xf5f8('0x5a')]('SIP/%s',_0x27fdf9[_0xf5f8('0x64')][_0xf5f8('0x38')]);_0x569c92['message'][_0xf5f8('0x77')]=_0x430814[_0xf5f8('0x77')];_0x569c92[_0xf5f8('0x26')][_0xf5f8('0x78')]=_0xf5f8('0x32');respondWithRpcPromise(_0xf5f8('0x7e'),_0xf5f8('0x7e'),{'event':_0xf5f8('0x7f'),'message':_0x569c92[_0xf5f8('0x26')]},client9002);return _0x430814;}return null;})['then'](respondWithResult(_0x2cb006,null))['catch'](handleError(_0x2cb006,null));};exports[_0xf5f8('0x29')]=function(_0x41f9aa,_0x1f0ce6,_0x23ce25){if(_0x41f9aa[_0xf5f8('0x54')]['id']){delete _0x41f9aa[_0xf5f8('0x54')]['id'];}var _0x5b57ae;return db[_0xf5f8('0x3b')]['find']({'where':{'id':_0x41f9aa['params']['id']}})[_0xf5f8('0x35')](handleEntityNotFound(_0x1f0ce6,null))[_0xf5f8('0x35')](function(_0x4201fe){if(_0x4201fe){_0x5b57ae=_0x4201fe;return db[_0xf5f8('0x80')][_0xf5f8('0x52')]({'where':{'id':_0x4201fe[_0xf5f8('0x81')]}});}})[_0xf5f8('0x35')](handleEntityNotFound(_0x1f0ce6,null))[_0xf5f8('0x35')](function(_0x17c210){if(_0x17c210){logger[_0xf5f8('0x21')](_0xf5f8('0x22'),_0xf5f8('0x29'),'received\x20delivery\x20report\x20from',_0x17c210[_0xf5f8('0x3d')],util[_0xf5f8('0x82')](_0x41f9aa[_0xf5f8('0x54')],{'showHidden':![],'depth':null}));switch(_0x17c210[_0xf5f8('0x3d')]){case _0xf5f8('0x83'):if(_0x41f9aa[_0xf5f8('0x54')][_0xf5f8('0x84')]&&_0x41f9aa['body']['MessageSid']===_0x5b57ae[_0xf5f8('0x85')]){return _0x5b57ae[_0xf5f8('0x34')]({'read':!![]});}else{logger[_0xf5f8('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xf5f8('0x29'),_0xf5f8('0x83'),util[_0xf5f8('0x82')](_0x41f9aa[_0xf5f8('0x54')],{'showHidden':![],'depth':null}));}break;case _0xf5f8('0x86'):if(_0x41f9aa[_0xf5f8('0x54')][_0xf5f8('0x87')]&&_0x41f9aa['body'][_0xf5f8('0x87')]===_0x5b57ae[_0xf5f8('0x85')]&&_[_0xf5f8('0x88')](['sent',_0xf5f8('0x89')],_0x41f9aa[_0xf5f8('0x54')][_0xf5f8('0x8a')])>=0x0){return _0x5b57ae[_0xf5f8('0x34')]({'read':!![]});}else{logger[_0xf5f8('0x25')](_0xf5f8('0x8b'),_0xf5f8('0x29'),_0xf5f8('0x8c'),util['inspect'](_0x41f9aa[_0xf5f8('0x54')],{'showHidden':![],'depth':null}));}break;case _0xf5f8('0x8d'):var _0x1954db=_0x41f9aa['body'][_0xf5f8('0x8e')][0x0];if(_0x1954db[_0xf5f8('0x29')][_0xf5f8('0x8f')]===_0xf5f8('0x90')){return _0x5b57ae[_0xf5f8('0x34')]({'read':!![]});}else{logger[_0xf5f8('0x25')](_0xf5f8('0x8b'),_0xf5f8('0x29'),_0xf5f8('0x8d'),util[_0xf5f8('0x82')](_0x41f9aa[_0xf5f8('0x54')],{'showHidden':![],'depth':null}));}break;}return _0x5b57ae;}})[_0xf5f8('0x35')](respondWithResult(_0x1f0ce6,null))[_0xf5f8('0x27')](handleError(_0x1f0ce6,null));};
\ No newline at end of file
index efae5d4..ea2fd9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf269=['SmsMessage','setMaxListeners','save','update','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x3d3b8b,_0x46213a){var _0x52d410=function(_0x18ce5c){while(--_0x18ce5c){_0x3d3b8b['push'](_0x3d3b8b['shift']());}};_0x52d410(++_0x46213a);}(_0xf269,0x178));var _0x9f26=function(_0x457759,_0x4fb33a){_0x457759=_0x457759-0x0;var _0xc50bc9=_0xf269[_0x457759];return _0xc50bc9;};'use strict';var EventEmitter=require(_0x9f26('0x0'));var SmsMessage=require(_0x9f26('0x1'))['db'][_0x9f26('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x9f26('0x3')](0x0);var events={'afterCreate':_0x9f26('0x4'),'afterUpdate':_0x9f26('0x5'),'afterDestroy':'remove'};function emitEvent(_0x17e656){return function(_0x41a785,_0x5726e5,_0x3ccf43){SmsMessageEvents[_0x9f26('0x6')](_0x17e656+':'+_0x41a785['id'],_0x41a785);SmsMessageEvents[_0x9f26('0x6')](_0x17e656,_0x41a785);_0x3ccf43(null);};}for(var e in events){if(events[_0x9f26('0x7')](e)){var event=events[e];SmsMessage[_0x9f26('0x8')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
+var _0x079d=['hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update','remove','emit'];(function(_0x37e975,_0x2f29df){var _0x3792ec=function(_0x3a117c){while(--_0x3a117c){_0x37e975['push'](_0x37e975['shift']());}};_0x3792ec(++_0x2f29df);}(_0x079d,0xb3));var _0xd079=function(_0x104fda,_0x3ee961){_0x104fda=_0x104fda-0x0;var _0x20cfee=_0x079d[_0x104fda];return _0x20cfee;};'use strict';var EventEmitter=require(_0xd079('0x0'));var SmsMessage=require(_0xd079('0x1'))['db'][_0xd079('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xd079('0x3')](0x0);var events={'afterCreate':_0xd079('0x4'),'afterUpdate':_0xd079('0x5'),'afterDestroy':_0xd079('0x6')};function emitEvent(_0x4c5747){return function(_0x87dcd7,_0x8df5ed,_0x731d3d){SmsMessageEvents[_0xd079('0x7')](_0x4c5747+':'+_0x87dcd7['id'],_0x87dcd7);SmsMessageEvents[_0xd079('0x7')](_0x4c5747,_0x87dcd7);_0x731d3d(null);};}for(var e in events){if(events[_0xd079('0x8')](e)){var event=events[e];SmsMessage[_0xd079('0x9')](e,emitEvent(event));}}module[_0xd079('0xa')]=SmsMessageEvents;
\ No newline at end of file
index aedd3cb..9267e4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffe1=['applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','application/json','code','message','Bearer\x20','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./smsMessage.attributes','define','SmsMessage','sms_messages','messageId','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','SmsInteraction','findOne','SmsInteractionId','then','createdAt','type','twilio','accountSid','authToken','phone','create','/api/sms/messages/','/status?token=','token','sid','update','catch','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','error','username','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','user_key','deliveryReport','read','skebby','Missing\x20parameters:\x20username,\x20password','connectel','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','senderString','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','messages','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','IBSSO\x20','Missing\x20parameters:\x20base_url','crypto','login','text','timestamp','keys','sort','length','apiKey','createHash','md5','digest','signature=','/external/get/send.php?','id_sms','csc','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','bandwidth','accountId'];(function(_0x1fd447,_0x4918b4){var _0x1b9f1a=function(_0x2405bc){while(--_0x2405bc){_0x1fd447['push'](_0x1fd447['shift']());}};_0x1b9f1a(++_0x4918b4);}(_0xffe1,0x175));var _0x1ffe=function(_0x155766,_0x35cd86){_0x155766=_0x155766-0x0;var _0x2be586=_0xffe1[_0x155766];return _0x2be586;};'use strict';var _=require(_0x1ffe('0x0'));var util=require(_0x1ffe('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x1ffe('0x2'));var BPromise=require(_0x1ffe('0x3'));var rp=require(_0x1ffe('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1ffe('0x5'));var config=require(_0x1ffe('0x6'));var attributes=require(_0x1ffe('0x7'));module['exports']=function(_0x219223,_0x22d421){return _0x219223[_0x1ffe('0x8')](_0x1ffe('0x9'),attributes,{'tableName':_0x1ffe('0xa'),'paranoid':![],'indexes':[{'name':_0x1ffe('0xb'),'fields':['messageId']},{'name':'fti_sms_messages','fields':[_0x1ffe('0xc')],'type':_0x1ffe('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4774a8,_0x1cc54d,_0x558992){var _0x415a78=_0x219223[_0x1ffe('0xe')];var _0x42904e=_0x4774a8[_0x1ffe('0xf')]({'plain':!![]});if(_0x42904e[_0x1ffe('0x10')][_0x1ffe('0x11')]()==='in'||_0x42904e[_0x1ffe('0x10')][_0x1ffe('0x11')]()==='out'&&!_0x42904e[_0x1ffe('0x12')]&&!_[_0x1ffe('0x13')](_0x42904e['UserId'])){_0x415a78[_0x1ffe('0x14')][_0x1ffe('0x15')]({'where':{'id':_0x42904e[_0x1ffe('0x16')]}})[_0x1ffe('0x17')](function(_0x1a5cb0){if(_0x1a5cb0){_0x1a5cb0['update']({'lastMsgAt':_0x42904e[_0x1ffe('0x18')],'lastMsgDirection':_0x42904e[_0x1ffe('0x10')][_0x1ffe('0x11')]()});}})['catch'](function(_0x20293f){console['error'](_0x20293f);});}if(_0x42904e[_0x1ffe('0x10')]==='out'&&!_0x42904e[_0x1ffe('0x12')]){var _0x3c0584;_0x415a78['SmsAccount']['find']({'where':{'id':_0x42904e['SmsAccountId']},'raw':!![]})[_0x1ffe('0x17')](function(_0x21950f){_0x3c0584=_0x21950f;if(_0x3c0584&&_0x3c0584[_0x1ffe('0x19')]){switch(_0x3c0584[_0x1ffe('0x19')]){case _0x1ffe('0x1a'):var _0x73c91e=require(_0x1ffe('0x1a'));if(_0x3c0584[_0x1ffe('0x1b')]&&_0x3c0584[_0x1ffe('0x1c')]&&_0x3c0584[_0x1ffe('0x1d')]){var _0x63b49b=new _0x73c91e(_0x3c0584[_0x1ffe('0x1b')],_0x3c0584['authToken']);_0x63b49b['messages'][_0x1ffe('0x1e')]({'body':_0x42904e[_0x1ffe('0xc')],'to':_0x42904e[_0x1ffe('0x1d')],'from':_0x3c0584['phone'],'statusCallback':_0x3c0584['remote']+_0x1ffe('0x1f')+_0x42904e['id']+_0x1ffe('0x20')+_0x3c0584[_0x1ffe('0x21')]})['then'](function(_0x2f7bcc){if(_0x2f7bcc[_0x1ffe('0x22')]){return _0x4774a8[_0x1ffe('0x23')]({'messageId':_0x2f7bcc[_0x1ffe('0x22')]});}})[_0x1ffe('0x24')](function(_0x33e82d){logger['error'](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x1a'),util[_0x1ffe('0x27')](_0x33e82d,{'showHidden':![],'depth':null}));});}else{logger[_0x1ffe('0x28')](_0x1ffe('0x25'),_0x1ffe('0x26'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case'skebby':var _0x2550e5='https://api.skebby.it/API/v1.0/REST/';if(_0x3c0584[_0x1ffe('0x29')]&&_0x3c0584[_0x1ffe('0x2a')]){var _0x3ef042={'recipient':[_0x42904e['phone']],'message':_0x42904e[_0x1ffe('0xc')],'message_type':_0x3c0584[_0x1ffe('0x2b')]};if(_0x3c0584[_0x1ffe('0x2b')]&&_0x3c0584[_0x1ffe('0x2b')]!=='SI'){_0x3ef042[_0x1ffe('0x2c')]=_0x3c0584['phone'];}var _0x40984a={'url':_0x2550e5+_0x1ffe('0x2d')+_0x3c0584[_0x1ffe('0x29')]+_0x1ffe('0x2e')+_0x3c0584[_0x1ffe('0x2a')],'method':_0x1ffe('0x2f')};rp(_0x40984a)['then'](function(_0x179590){var _0x59b8e1=_0x179590[_0x1ffe('0x30')](';');var _0x460464={'user_key':_0x59b8e1[0x0],'session_key':_0x59b8e1[0x1]};_0x40984a={'url':_0x2550e5+_0x1ffe('0x31'),'method':_0x1ffe('0x32'),'headers':{'user_key':_0x460464[_0x1ffe('0x33')],'Session_key':_0x460464['session_key']},'json':!![],'body':_0x3ef042};return rp(_0x40984a);})['then'](function(_0xbbe09a){if(_0xbbe09a['total_sent']>=0x1){var _0x2d9be4={'messageId':_0xbbe09a['internal_order_id']};if(_0x3c0584[_0x1ffe('0x2b')]!=='GP'||!_0x3c0584[_0x1ffe('0x34')]){_0x2d9be4[_0x1ffe('0x35')]=!![];}return _0x4774a8[_0x1ffe('0x23')](_0x2d9be4);}else{return logger[_0x1ffe('0x28')](_0x1ffe('0x25'),'afterCreate',_0x1ffe('0x36'),util[_0x1ffe('0x27')](_0xbbe09a,{'showHidden':![],'depth':null}));}})[_0x1ffe('0x24')](function(_0x57201b){return logger['error'](_0x1ffe('0x25'),_0x1ffe('0x26'),'skebby',util[_0x1ffe('0x27')](_0x57201b,{'showHidden':![],'depth':null}));});}else{logger[_0x1ffe('0x28')](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x36'),_0x1ffe('0x37'));}break;case _0x1ffe('0x38'):if(_0x3c0584['authToken']){var _0x344683={'recipient':_0x42904e[_0x1ffe('0x1d')],'message':_0x42904e['body'],'sender':_0x3c0584['senderString']||_0x3c0584['phone'],'authorization':_0x3c0584[_0x1ffe('0x1c')]};var _0x1cc54d={'method':_0x1ffe('0x32'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x344683,'json':!![]};rp(_0x1cc54d)[_0x1ffe('0x17')](function(_0x208936){var _0x2cc58e={'messageId':_0x208936[_0x1ffe('0x39')]};if(!_0x3c0584[_0x1ffe('0x34')]){_0x2cc58e['read']=!![];}return _0x4774a8[_0x1ffe('0x23')](_0x2cc58e);})[_0x1ffe('0x24')](function(_0x459bac){logger[_0x1ffe('0x28')](_0x1ffe('0x25'),'afterCreate',_0x1ffe('0x38'),util[_0x1ffe('0x27')](_0x459bac,{'showHidden':![],'depth':null}));});}else{logger[_0x1ffe('0x28')](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x38'),_0x1ffe('0x3a'));}break;case _0x1ffe('0x3b'):if(_0x3c0584[_0x1ffe('0x29')]&&_0x3c0584[_0x1ffe('0x2a')]){var _0x344683={'messages':[{'source':_0x1ffe('0x3c'),'to':_0x42904e['phone'],'body':_0x42904e[_0x1ffe('0xc')],'from':_0x3c0584[_0x1ffe('0x3d')]||_0x3c0584[_0x1ffe('0x1d')]}]};var _0x55967a=util[_0x1ffe('0x3e')](_0x1ffe('0x3f'),_0x3c0584['username'],_0x3c0584['password']);var _0x1cc54d={'method':_0x1ffe('0x32'),'uri':_0x1ffe('0x40'),'body':_0x344683,'headers':{'Authorization':util[_0x1ffe('0x3e')](_0x1ffe('0x41'),new Buffer(_0x55967a)[_0x1ffe('0x42')](_0x1ffe('0x43')))},'json':!![]};rp(_0x1cc54d)['then'](function(_0x3168bd){if(_0x3168bd[_0x1ffe('0x44')]>=0xc8&&_0x3168bd[_0x1ffe('0x44')]<=0xce){if(_0x3168bd[_0x1ffe('0x45')]&&_0x3168bd[_0x1ffe('0x45')][_0x1ffe('0x46')]>0x0){var _0x4f98d6=_[_0x1ffe('0x47')](_0x3168bd[_0x1ffe('0x45')][_0x1ffe('0x48')]);var _0x2ffd14={'messageId':_0x4f98d6['message_id']};if(!_0x3c0584[_0x1ffe('0x34')]){_0x2ffd14['read']=!![];}return _0x4774a8['update'](_0x2ffd14);}else{logger['error'](_0x1ffe('0x25'),'afterCreate',_0x1ffe('0x49'),util[_0x1ffe('0x27')](_0x3168bd,{'showHidden':![],'depth':null}));}}else{logger[_0x1ffe('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1ffe('0x26'),'clickSend',util[_0x1ffe('0x27')](_0x3168bd,{'showHidden':![],'depth':null}));}})[_0x1ffe('0x24')](function(_0x1426a1){logger[_0x1ffe('0x28')](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x49'),util[_0x1ffe('0x27')](_0x1426a1,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x1ffe('0x25'),'afterCreate',_0x1ffe('0x49'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x1ffe('0x4a'):if(_0x3c0584['authId']&&_0x3c0584[_0x1ffe('0x1c')]){var _0x344683={'dst':_0x42904e[_0x1ffe('0x1d')],'text':_0x42904e[_0x1ffe('0xc')],'src':_0x3c0584['senderString']||_0x3c0584['phone'],'url':_0x3c0584['remote']+_0x1ffe('0x1f')+_0x42904e['id']+_0x1ffe('0x20')+_0x3c0584[_0x1ffe('0x21')]};var _0x55967a=util['format'](_0x1ffe('0x3f'),_0x3c0584[_0x1ffe('0x4b')],_0x3c0584[_0x1ffe('0x1c')]);var _0x1cc54d={'method':'POST','uri':util[_0x1ffe('0x3e')](_0x1ffe('0x4c'),_0x3c0584['authId']),'body':_0x344683,'headers':{'Authorization':util[_0x1ffe('0x3e')](_0x1ffe('0x41'),new Buffer(_0x55967a)[_0x1ffe('0x42')](_0x1ffe('0x43')))},'json':!![]};rp(_0x1cc54d)[_0x1ffe('0x17')](function(_0x395dda){var _0x2381b5={'messageId':_0x395dda[_0x1ffe('0x4d')][0x0]};return _0x4774a8[_0x1ffe('0x23')](_0x2381b5);})[_0x1ffe('0x24')](function(_0x556391){logger[_0x1ffe('0x28')](_0x1ffe('0x25'),'afterCreate',_0x1ffe('0x4a'),util[_0x1ffe('0x27')](_0x556391,{'showHidden':![],'depth':null}));});}else{logger[_0x1ffe('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1ffe('0x26'),_0x1ffe('0x4a'),_0x1ffe('0x4e'));}break;case _0x1ffe('0x4f'):if(_0x3c0584[_0x1ffe('0x29')]&&_0x3c0584['password']){if(_0x3c0584[_0x1ffe('0x50')]){var _0x5dc7e0={'method':_0x1ffe('0x32'),'uri':_0x3c0584[_0x1ffe('0x50')]+_0x1ffe('0x51'),'body':{'username':_0x3c0584[_0x1ffe('0x29')],'password':_0x3c0584[_0x1ffe('0x2a')]},'json':!![]};return rp(_0x5dc7e0)[_0x1ffe('0x17')](function(_0x10147a){var _0xa7c499={'method':'POST','uri':_0x3c0584['baseUrl']+_0x1ffe('0x52'),'body':{'messages':[{'from':_0x3c0584[_0x1ffe('0x1d')],'destinations':[{'to':_0x42904e[_0x1ffe('0x1d')]}],'text':_0x42904e[_0x1ffe('0xc')],'notifyUrl':_0x3c0584['remote']+_0x1ffe('0x1f')+_0x42904e['id']+_0x1ffe('0x20')+_0x3c0584[_0x1ffe('0x21')],'notifyContentType':'application/json','callbackData':_0x3c0584[_0x1ffe('0x1d')]+';'+_0x42904e[_0x1ffe('0xc')]}]},'headers':{'Authorization':_0x1ffe('0x53')+_0x10147a[_0x1ffe('0x21')]},'json':!![]};return rp(_0xa7c499)[_0x1ffe('0x17')](function(_0x64b0cb){if(_0x64b0cb[_0x1ffe('0x48')]){var _0x34d460={'messageId':_0x64b0cb['messages'][0x0][_0x1ffe('0xb')]};if(!_0x3c0584[_0x1ffe('0x34')]){_0x34d460[_0x1ffe('0x35')]=!![];}return _0x4774a8[_0x1ffe('0x23')](_0x34d460);}else{return logger['error'](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x4f'),util[_0x1ffe('0x27')](_0x64b0cb,{'showHidden':![],'depth':null}));}});})[_0x1ffe('0x24')](function(_0x46c5b4){return logger[_0x1ffe('0x28')](_0x1ffe('0x25'),'afterCreate','infobip',util[_0x1ffe('0x27')](_0x46c5b4,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x4f'),_0x1ffe('0x54'));}}else{logger['error'](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x4f'),'Missing\x20parameters:\x20username,\x20password');}break;case'csc':var _0x5024ab=require(_0x1ffe('0x55'));if(_0x3c0584['apiKey']){var _0x15151f={};_0x15151f[_0x1ffe('0x56')]=_0x3c0584[_0x1ffe('0x29')];_0x15151f[_0x1ffe('0x1d')]=_0x42904e[_0x1ffe('0x1d')];_0x15151f[_0x1ffe('0x2c')]=_0x3c0584[_0x1ffe('0x1d')];_0x15151f[_0x1ffe('0x57')]=_0x42904e[_0x1ffe('0xc')];_0x15151f[_0x1ffe('0x58')]=+new Date();var _0x22fd49='';var _0x37d373='';var _0x35f833=Object[_0x1ffe('0x59')](_0x15151f);_0x35f833[_0x1ffe('0x5a')]();for(var _0x31b0a1=0x0;_0x31b0a1<_0x35f833[_0x1ffe('0x5b')];_0x31b0a1++){if(_0x22fd49!=''){_0x22fd49+='&';}_0x22fd49+=_0x35f833[_0x31b0a1]+'='+encodeURIComponent(_0x15151f[_0x35f833[_0x31b0a1]]);_0x37d373+=_0x15151f[_0x35f833[_0x31b0a1]];}_0x37d373+=_0x3c0584[_0x1ffe('0x5c')];_0x37d373=_0x5024ab[_0x1ffe('0x5d')](_0x1ffe('0x5e'))[_0x1ffe('0x23')](_0x37d373)[_0x1ffe('0x5f')]('hex');if(_0x22fd49!==''){_0x22fd49+='&';}_0x22fd49+=_0x1ffe('0x60')+_0x37d373;var _0x40984a={'method':'GET','uri':_0x3c0584[_0x1ffe('0x50')]+_0x1ffe('0x61')+_0x22fd49,'json':!![]};return rp(_0x40984a)['then'](function(_0x5b1b8a){var _0x56f466=Object[_0x1ffe('0x59')](_0x5b1b8a);if(_0x5b1b8a[_0x56f466[0x0]][_0x1ffe('0x28')]&&parseInt(_0x5b1b8a[_0x56f466[0x0]][_0x1ffe('0x28')])===0x0){var _0xa90c01={'messageId':_0x5b1b8a[_0x56f466[0x0]][_0x1ffe('0x62')]};if(!_0x3c0584[_0x1ffe('0x34')]){_0xa90c01[_0x1ffe('0x35')]=!![];}return _0x4774a8['update'](_0xa90c01);}else{return logger['error'](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x63'),util[_0x1ffe('0x27')](_0x5b1b8a[_0x1ffe('0x28')],{'showHidden':![],'depth':null}));}})[_0x1ffe('0x24')](function(_0x4c4c67){return logger['error'](_0x1ffe('0x25'),'afterCreate',_0x1ffe('0x63'),util[_0x1ffe('0x27')](_0x4c4c67,{'showHidden':![],'depth':null}));});}else{logger[_0x1ffe('0x28')](_0x1ffe('0x25'),'afterCreate',_0x1ffe('0x63'),_0x1ffe('0x64'));}break;case _0x1ffe('0x65'):if(_0x3c0584[_0x1ffe('0x5c')]){var _0x38d78c={'method':_0x1ffe('0x32'),'uri':_0x1ffe('0x66'),'headers':{'Authorization':_0x3c0584[_0x1ffe('0x5c')]},'body':{'content':_0x42904e['body'],'to':[_0x42904e[_0x1ffe('0x1d')]],'from':_0x3c0584['phone'],'binary':![],'clientMessageId':_0x1ffe('0x67'),'charset':_0x1ffe('0x68')},'json':!![]};rp(_0x38d78c)[_0x1ffe('0x17')](function(_0x5158b9){if(!_0x5158b9[_0x1ffe('0x28')]){var _0x1e1d4c={'messageId':_0x5158b9['messages'][0x0]['apiMessageId']};if(!_0x3c0584[_0x1ffe('0x34')]){_0x1e1d4c['read']=!![];}return _0x4774a8[_0x1ffe('0x23')](_0x1e1d4c);}else{return logger[_0x1ffe('0x28')](_0x1ffe('0x25'),_0x1ffe('0x26'),'clickatell',util[_0x1ffe('0x27')](_0x5158b9['error'],{'showHidden':![],'depth':null}));}})[_0x1ffe('0x24')](function(_0x339531){return logger[_0x1ffe('0x28')](_0x1ffe('0x25'),_0x1ffe('0x26'),'clickatell',util[_0x1ffe('0x27')](_0x339531,{'showHidden':![],'depth':null}));});}else{logger[_0x1ffe('0x28')](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x65'),_0x1ffe('0x64'));}break;case _0x1ffe('0x69'):if(_0x3c0584[_0x1ffe('0x29')]&&_0x3c0584[_0x1ffe('0x2a')]){var _0x55967a=util[_0x1ffe('0x3e')](_0x1ffe('0x3f'),_0x3c0584['username'],_0x3c0584[_0x1ffe('0x2a')]);var _0x1cc54d={'method':'POST','uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x3c0584[_0x1ffe('0x6a')]+'/messages','body':{'to':[_0x42904e[_0x1ffe('0x1d')]],'text':_0x42904e[_0x1ffe('0xc')],'from':_0x3c0584['phone'],'applicationId':_0x3c0584[_0x1ffe('0x6b')]},'headers':{'Authorization':util['format'](_0x1ffe('0x41'),new Buffer(_0x55967a)[_0x1ffe('0x42')]('base64'))},'json':!![]};rp(_0x1cc54d)[_0x1ffe('0x17')](function(_0xe46c21){if(_0xe46c21['id']){var _0x37070c={'messageId':_0xe46c21['id']};return _0x4774a8[_0x1ffe('0x23')](_0x37070c);}else{logger[_0x1ffe('0x28')](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x69'),util[_0x1ffe('0x27')](_0xe46c21,{'showHidden':![],'depth':null}));}})[_0x1ffe('0x24')](function(_0xc0d1d1){logger[_0x1ffe('0x28')](_0x1ffe('0x25'),'afterCreate',_0x1ffe('0x69'),util[_0x1ffe('0x27')](_0xc0d1d1,{'showHidden':![],'depth':null}));});}else{logger[_0x1ffe('0x28')](_0x1ffe('0x25'),_0x1ffe('0x26'),_0x1ffe('0x69'),_0x1ffe('0x37'));}break;case _0x1ffe('0x6c'):if(_0x3c0584['apiKey']){var _0x1636cc={};var _0x40984a={'method':_0x1ffe('0x32'),'uri':_0x1ffe('0x6d'),'headers':{'Authorization':'Bearer\x20'+_0x3c0584[_0x1ffe('0x5c')],'Content-Type':_0x1ffe('0x6e')},'body':{'from':_0x3c0584[_0x1ffe('0x1d')],'to':_0x42904e[_0x1ffe('0x1d')],'text':_0x42904e['body']},'json':!![]};return rp(_0x40984a)[_0x1ffe('0x17')](function(_0x327b6e){if(_0x327b6e[_0x1ffe('0x6f')]==0xca){_0x1636cc[_0x1ffe('0x70')]=_0x327b6e;var _0x4359e3={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x1ffe('0x71')+_0x3c0584['apiKey'],'Content-Type':_0x1ffe('0x6e')},'body':{'refid':_0x1636cc[_0x1ffe('0x70')][_0x1ffe('0x72')]},'json':!![]};return rp(_0x4359e3)['then'](function(_0x4fc131){_0x1636cc[_0x1ffe('0x73')]=_0x4fc131;var _0x2c912d={'messageId':_0x1636cc[_0x1ffe('0x70')][_0x1ffe('0x72')],'read':!![]};return _0x4774a8['update'](_0x2c912d);});}else{return logger[_0x1ffe('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1ffe('0x26'),_0x1ffe('0x6c'),util[_0x1ffe('0x27')](_0x327b6e,{'showHidden':![],'depth':null}));}})[_0x1ffe('0x24')](function(_0x17791e){return logger['error'](_0x1ffe('0x25'),_0x1ffe('0x26'),'intelepeer',util[_0x1ffe('0x27')](_0x17791e,{'showHidden':![],'depth':null}));});}else{return logger[_0x1ffe('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1ffe('0x6c'),_0x1ffe('0x74'));}break;}}})[_0x1ffe('0x75')](function(){_0x558992();});}else{_0x558992();}}},'charset':_0x1ffe('0x76'),'collate':_0x1ffe('0x77')});};
\ No newline at end of file
+var _0x6f7f=['accountId','/messages','applicationId','bandwidth','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','intelepeer','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','fti_sms_messages','body','models','get','direction','toLowerCase','secret','isNil','UserId','SmsInteraction','then','update','catch','error','out','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','remote','/api/sms/messages/','token','sid','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','&password=','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','Missing\x20parameters:\x20username,\x20password','connectel','senderString','requestid','read','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','http_code','data','queued_count','clickSend','plivo','/status?token=','%s:%s','authId','https://api.plivo.com/v1/Account/%s/Message/','base64','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','text','sort','length','createHash','digest','hex','/external/get/send.php?','keys','id_sms','Missing\x20parameters:\x20apiKey','clickatell','uuid','UTF-8','apiMessageId','https://messaging.bandwidth.com/api/v2/users/'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6f7f,0x177));var _0xf6f7=function(_0x388978,_0x4cd938){_0x388978=_0x388978-0x0;var _0x45436c=_0x6f7f[_0x388978];return _0x45436c;};'use strict';var _=require('lodash');var util=require(_0xf6f7('0x0'));var logger=require(_0xf6f7('0x1'))(_0xf6f7('0x2'));var moment=require(_0xf6f7('0x3'));var BPromise=require(_0xf6f7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf6f7('0x5'));var rimraf=require('rimraf');var config=require(_0xf6f7('0x6'));var attributes=require(_0xf6f7('0x7'));module[_0xf6f7('0x8')]=function(_0x5495b9,_0x2f6df9){return _0x5495b9['define'](_0xf6f7('0x9'),attributes,{'tableName':_0xf6f7('0xa'),'paranoid':![],'indexes':[{'name':_0xf6f7('0xb'),'fields':[_0xf6f7('0xb')]},{'name':_0xf6f7('0xc'),'fields':[_0xf6f7('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x13cf44,_0x5299eb,_0x4de365){var _0x518b87=_0x5495b9[_0xf6f7('0xe')];var _0x43082f=_0x13cf44[_0xf6f7('0xf')]({'plain':!![]});if(_0x43082f[_0xf6f7('0x10')][_0xf6f7('0x11')]()==='in'||_0x43082f[_0xf6f7('0x10')]['toLowerCase']()==='out'&&!_0x43082f[_0xf6f7('0x12')]&&!_[_0xf6f7('0x13')](_0x43082f[_0xf6f7('0x14')])){_0x518b87[_0xf6f7('0x15')]['findOne']({'where':{'id':_0x43082f['SmsInteractionId']}})[_0xf6f7('0x16')](function(_0x4f8d9b){if(_0x4f8d9b){_0x4f8d9b[_0xf6f7('0x17')]({'lastMsgAt':_0x43082f['createdAt'],'lastMsgDirection':_0x43082f[_0xf6f7('0x10')][_0xf6f7('0x11')]()});}})[_0xf6f7('0x18')](function(_0x2758c0){console[_0xf6f7('0x19')](_0x2758c0);});}if(_0x43082f['direction']===_0xf6f7('0x1a')&&!_0x43082f[_0xf6f7('0x12')]){var _0x566589;_0x518b87[_0xf6f7('0x1b')][_0xf6f7('0x1c')]({'where':{'id':_0x43082f[_0xf6f7('0x1d')]},'raw':!![]})[_0xf6f7('0x16')](function(_0x5ba9f0){_0x566589=_0x5ba9f0;if(_0x566589&&_0x566589[_0xf6f7('0x1e')]){switch(_0x566589[_0xf6f7('0x1e')]){case'twilio':var _0x1a7ba2=require(_0xf6f7('0x1f'));if(_0x566589[_0xf6f7('0x20')]&&_0x566589[_0xf6f7('0x21')]&&_0x566589[_0xf6f7('0x22')]){var _0x93bbfc=new _0x1a7ba2(_0x566589[_0xf6f7('0x20')],_0x566589['authToken']);_0x93bbfc[_0xf6f7('0x23')]['create']({'body':_0x43082f['body'],'to':_0x43082f[_0xf6f7('0x22')],'from':_0x566589['phone'],'statusCallback':_0x566589[_0xf6f7('0x24')]+_0xf6f7('0x25')+_0x43082f['id']+'/status?token='+_0x566589[_0xf6f7('0x26')]})['then'](function(_0x4c349d){if(_0x4c349d[_0xf6f7('0x27')]){return _0x13cf44[_0xf6f7('0x17')]({'messageId':_0x4c349d[_0xf6f7('0x27')]});}})[_0xf6f7('0x18')](function(_0xa903ff){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6f7('0x28'),_0xf6f7('0x1f'),util[_0xf6f7('0x29')](_0xa903ff,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),'twilio',_0xf6f7('0x2b'));}break;case _0xf6f7('0x2c'):var _0x3a6f6a=_0xf6f7('0x2d');if(_0x566589[_0xf6f7('0x2e')]&&_0x566589[_0xf6f7('0x2f')]){var _0x3be42f={'recipient':[_0x43082f['phone']],'message':_0x43082f['body'],'message_type':_0x566589['smsMethod']};if(_0x566589[_0xf6f7('0x30')]&&_0x566589['smsMethod']!=='SI'){_0x3be42f[_0xf6f7('0x31')]=_0x566589[_0xf6f7('0x22')];}var _0x4931d6={'url':_0x3a6f6a+'login?username='+_0x566589[_0xf6f7('0x2e')]+_0xf6f7('0x32')+_0x566589[_0xf6f7('0x2f')],'method':'GET'};rp(_0x4931d6)[_0xf6f7('0x16')](function(_0x505b20){var _0x34b223=_0x505b20[_0xf6f7('0x33')](';');var _0x958646={'user_key':_0x34b223[0x0],'session_key':_0x34b223[0x1]};_0x4931d6={'url':_0x3a6f6a+_0xf6f7('0x34'),'method':_0xf6f7('0x35'),'headers':{'user_key':_0x958646[_0xf6f7('0x36')],'Session_key':_0x958646[_0xf6f7('0x37')]},'json':!![],'body':_0x3be42f};return rp(_0x4931d6);})[_0xf6f7('0x16')](function(_0x3fbbf2){if(_0x3fbbf2[_0xf6f7('0x38')]>=0x1){var _0xd755e6={'messageId':_0x3fbbf2[_0xf6f7('0x39')]};if(_0x566589['smsMethod']!=='GP'||!_0x566589[_0xf6f7('0x3a')]){_0xd755e6['read']=!![];}return _0x13cf44[_0xf6f7('0x17')](_0xd755e6);}else{return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x2c'),util[_0xf6f7('0x29')](_0x3fbbf2,{'showHidden':![],'depth':null}));}})[_0xf6f7('0x18')](function(_0x16522e){return logger[_0xf6f7('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xf6f7('0x2c'),util[_0xf6f7('0x29')](_0x16522e,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x2c'),_0xf6f7('0x3b'));}break;case _0xf6f7('0x3c'):if(_0x566589[_0xf6f7('0x21')]){var _0x3312b3={'recipient':_0x43082f[_0xf6f7('0x22')],'message':_0x43082f[_0xf6f7('0xd')],'sender':_0x566589[_0xf6f7('0x3d')]||_0x566589[_0xf6f7('0x22')],'authorization':_0x566589[_0xf6f7('0x21')]};var _0x5299eb={'method':'POST','uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x3312b3,'json':!![]};rp(_0x5299eb)[_0xf6f7('0x16')](function(_0x1de44f){var _0x9dde0a={'messageId':_0x1de44f[_0xf6f7('0x3e')]};if(!_0x566589[_0xf6f7('0x3a')]){_0x9dde0a[_0xf6f7('0x3f')]=!![];}return _0x13cf44['update'](_0x9dde0a);})[_0xf6f7('0x18')](function(_0x329648){logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),'afterCreate','connectel',util[_0xf6f7('0x29')](_0x329648,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6f7('0x28'),_0xf6f7('0x3c'),_0xf6f7('0x40'));}break;case'clicksend':if(_0x566589[_0xf6f7('0x2e')]&&_0x566589[_0xf6f7('0x2f')]){var _0x3312b3={'messages':[{'source':_0xf6f7('0x41'),'to':_0x43082f['phone'],'body':_0x43082f[_0xf6f7('0xd')],'from':_0x566589[_0xf6f7('0x3d')]||_0x566589['phone']}]};var _0x5bd8f7=util[_0xf6f7('0x42')]('%s:%s',_0x566589[_0xf6f7('0x2e')],_0x566589['password']);var _0x5299eb={'method':'POST','uri':_0xf6f7('0x43'),'body':_0x3312b3,'headers':{'Authorization':util[_0xf6f7('0x42')](_0xf6f7('0x44'),new Buffer(_0x5bd8f7)[_0xf6f7('0x45')]('base64'))},'json':!![]};rp(_0x5299eb)[_0xf6f7('0x16')](function(_0x59389e){if(_0x59389e[_0xf6f7('0x46')]>=0xc8&&_0x59389e['http_code']<=0xce){if(_0x59389e['data']&&_0x59389e[_0xf6f7('0x47')][_0xf6f7('0x48')]>0x0){var _0xff8a0f=_['head'](_0x59389e[_0xf6f7('0x47')][_0xf6f7('0x23')]);var _0x4fd4e1={'messageId':_0xff8a0f['message_id']};if(!_0x566589[_0xf6f7('0x3a')]){_0x4fd4e1['read']=!![];}return _0x13cf44[_0xf6f7('0x17')](_0x4fd4e1);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6f7('0x28'),'clickSend',util[_0xf6f7('0x29')](_0x59389e,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xf6f7('0x2a'),'afterCreate','clickSend',util[_0xf6f7('0x29')](_0x59389e,{'showHidden':![],'depth':null}));}})[_0xf6f7('0x18')](function(_0x2b1a0c){logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x49'),util[_0xf6f7('0x29')](_0x2b1a0c,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x49'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xf6f7('0x4a'):if(_0x566589['authId']&&_0x566589[_0xf6f7('0x21')]){var _0x3312b3={'dst':_0x43082f[_0xf6f7('0x22')],'text':_0x43082f['body'],'src':_0x566589[_0xf6f7('0x3d')]||_0x566589[_0xf6f7('0x22')],'url':_0x566589[_0xf6f7('0x24')]+_0xf6f7('0x25')+_0x43082f['id']+_0xf6f7('0x4b')+_0x566589['token']};var _0x5bd8f7=util['format'](_0xf6f7('0x4c'),_0x566589[_0xf6f7('0x4d')],_0x566589[_0xf6f7('0x21')]);var _0x5299eb={'method':'POST','uri':util[_0xf6f7('0x42')](_0xf6f7('0x4e'),_0x566589[_0xf6f7('0x4d')]),'body':_0x3312b3,'headers':{'Authorization':util['format'](_0xf6f7('0x44'),new Buffer(_0x5bd8f7)[_0xf6f7('0x45')](_0xf6f7('0x4f')))},'json':!![]};rp(_0x5299eb)[_0xf6f7('0x16')](function(_0x294270){var _0x1c03fe={'messageId':_0x294270['message_uuid'][0x0]};return _0x13cf44[_0xf6f7('0x17')](_0x1c03fe);})[_0xf6f7('0x18')](function(_0x5a1679){logger['error'](_0xf6f7('0x2a'),_0xf6f7('0x28'),'plivo',util[_0xf6f7('0x29')](_0x5a1679,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x4a'),_0xf6f7('0x50'));}break;case _0xf6f7('0x51'):if(_0x566589[_0xf6f7('0x2e')]&&_0x566589[_0xf6f7('0x2f')]){if(_0x566589[_0xf6f7('0x52')]){var _0x58ed71={'method':'POST','uri':_0x566589['baseUrl']+_0xf6f7('0x53'),'body':{'username':_0x566589[_0xf6f7('0x2e')],'password':_0x566589[_0xf6f7('0x2f')]},'json':!![]};return rp(_0x58ed71)[_0xf6f7('0x16')](function(_0x552fa6){var _0x30d9c2={'method':'POST','uri':_0x566589[_0xf6f7('0x52')]+_0xf6f7('0x54'),'body':{'messages':[{'from':_0x566589[_0xf6f7('0x22')],'destinations':[{'to':_0x43082f[_0xf6f7('0x22')]}],'text':_0x43082f['body'],'notifyUrl':_0x566589[_0xf6f7('0x24')]+_0xf6f7('0x25')+_0x43082f['id']+_0xf6f7('0x4b')+_0x566589[_0xf6f7('0x26')],'notifyContentType':_0xf6f7('0x55'),'callbackData':_0x566589[_0xf6f7('0x22')]+';'+_0x43082f[_0xf6f7('0xd')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x552fa6['token']},'json':!![]};return rp(_0x30d9c2)['then'](function(_0x20b843){if(_0x20b843[_0xf6f7('0x23')]){var _0xbc6c20={'messageId':_0x20b843[_0xf6f7('0x23')][0x0][_0xf6f7('0xb')]};if(!_0x566589[_0xf6f7('0x3a')]){_0xbc6c20[_0xf6f7('0x3f')]=!![];}return _0x13cf44['update'](_0xbc6c20);}else{return logger['error'](_0xf6f7('0x2a'),_0xf6f7('0x28'),'infobip',util[_0xf6f7('0x29')](_0x20b843,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x5ebf15){return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x51'),util[_0xf6f7('0x29')](_0x5ebf15,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x51'),_0xf6f7('0x56'));}}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),'infobip','Missing\x20parameters:\x20username,\x20password');}break;case _0xf6f7('0x57'):var _0x5f125d=require(_0xf6f7('0x58'));if(_0x566589[_0xf6f7('0x59')]){var _0x13a8e8={};_0x13a8e8['login']=_0x566589[_0xf6f7('0x2e')];_0x13a8e8[_0xf6f7('0x22')]=_0x43082f[_0xf6f7('0x22')];_0x13a8e8[_0xf6f7('0x31')]=_0x566589['phone'];_0x13a8e8[_0xf6f7('0x5a')]=_0x43082f[_0xf6f7('0xd')];_0x13a8e8['timestamp']=+new Date();var _0x584ac9='';var _0x1012dd='';var _0x4a8a51=Object['keys'](_0x13a8e8);_0x4a8a51[_0xf6f7('0x5b')]();for(var _0x4b1ed7=0x0;_0x4b1ed7<_0x4a8a51[_0xf6f7('0x5c')];_0x4b1ed7++){if(_0x584ac9!=''){_0x584ac9+='&';}_0x584ac9+=_0x4a8a51[_0x4b1ed7]+'='+encodeURIComponent(_0x13a8e8[_0x4a8a51[_0x4b1ed7]]);_0x1012dd+=_0x13a8e8[_0x4a8a51[_0x4b1ed7]];}_0x1012dd+=_0x566589[_0xf6f7('0x59')];_0x1012dd=_0x5f125d[_0xf6f7('0x5d')]('md5')[_0xf6f7('0x17')](_0x1012dd)[_0xf6f7('0x5e')](_0xf6f7('0x5f'));if(_0x584ac9!==''){_0x584ac9+='&';}_0x584ac9+='signature='+_0x1012dd;var _0x4931d6={'method':'GET','uri':_0x566589[_0xf6f7('0x52')]+_0xf6f7('0x60')+_0x584ac9,'json':!![]};return rp(_0x4931d6)[_0xf6f7('0x16')](function(_0x27c118){var _0x31ca78=Object[_0xf6f7('0x61')](_0x27c118);if(_0x27c118[_0x31ca78[0x0]]['error']&&parseInt(_0x27c118[_0x31ca78[0x0]]['error'])===0x0){var _0xda22d2={'messageId':_0x27c118[_0x31ca78[0x0]][_0xf6f7('0x62')]};if(!_0x566589['deliveryReport']){_0xda22d2['read']=!![];}return _0x13cf44[_0xf6f7('0x17')](_0xda22d2);}else{return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x57'),util[_0xf6f7('0x29')](_0x27c118['error'],{'showHidden':![],'depth':null}));}})[_0xf6f7('0x18')](function(_0x3bba6c){return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),'csc',util[_0xf6f7('0x29')](_0x3bba6c,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf6f7('0x28'),_0xf6f7('0x57'),_0xf6f7('0x63'));}break;case _0xf6f7('0x64'):if(_0x566589[_0xf6f7('0x59')]){var _0x1cf3a5={'method':_0xf6f7('0x35'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x566589[_0xf6f7('0x59')]},'body':{'content':_0x43082f['body'],'to':[_0x43082f['phone']],'from':_0x566589[_0xf6f7('0x22')],'binary':![],'clientMessageId':_0xf6f7('0x65'),'charset':_0xf6f7('0x66')},'json':!![]};rp(_0x1cf3a5)['then'](function(_0x111b47){if(!_0x111b47[_0xf6f7('0x19')]){var _0x40c872={'messageId':_0x111b47[_0xf6f7('0x23')][0x0][_0xf6f7('0x67')]};if(!_0x566589[_0xf6f7('0x3a')]){_0x40c872[_0xf6f7('0x3f')]=!![];}return _0x13cf44[_0xf6f7('0x17')](_0x40c872);}else{return logger[_0xf6f7('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xf6f7('0x64'),util[_0xf6f7('0x29')](_0x111b47[_0xf6f7('0x19')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x296223){return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x64'),util[_0xf6f7('0x29')](_0x296223,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),'afterCreate',_0xf6f7('0x64'),_0xf6f7('0x63'));}break;case'bandwidth':if(_0x566589['username']&&_0x566589[_0xf6f7('0x2f')]){var _0x5bd8f7=util['format']('%s:%s',_0x566589[_0xf6f7('0x2e')],_0x566589[_0xf6f7('0x2f')]);var _0x5299eb={'method':_0xf6f7('0x35'),'uri':_0xf6f7('0x68')+_0x566589[_0xf6f7('0x69')]+_0xf6f7('0x6a'),'body':{'to':[_0x43082f[_0xf6f7('0x22')]],'text':_0x43082f[_0xf6f7('0xd')],'from':_0x566589[_0xf6f7('0x22')],'applicationId':_0x566589[_0xf6f7('0x6b')]},'headers':{'Authorization':util[_0xf6f7('0x42')]('Basic\x20%s',new Buffer(_0x5bd8f7)[_0xf6f7('0x45')](_0xf6f7('0x4f')))},'json':!![]};rp(_0x5299eb)['then'](function(_0x39f210){if(_0x39f210['id']){var _0x14a319={'messageId':_0x39f210['id']};return _0x13cf44[_0xf6f7('0x17')](_0x14a319);}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),'bandwidth',util[_0xf6f7('0x29')](_0x39f210,{'showHidden':![],'depth':null}));}})[_0xf6f7('0x18')](function(_0x89b8c){logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x6c'),util['inspect'](_0x89b8c,{'showHidden':![],'depth':null}));});}else{logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),'afterCreate',_0xf6f7('0x6c'),_0xf6f7('0x3b'));}break;case'intelepeer':if(_0x566589[_0xf6f7('0x59')]){var _0x54f9a6={};var _0x4931d6={'method':'POST','uri':_0xf6f7('0x6d'),'headers':{'Authorization':_0xf6f7('0x6e')+_0x566589[_0xf6f7('0x59')],'Content-Type':'application/json'},'body':{'from':_0x566589[_0xf6f7('0x22')],'to':_0x43082f[_0xf6f7('0x22')],'text':_0x43082f[_0xf6f7('0xd')]},'json':!![]};return rp(_0x4931d6)[_0xf6f7('0x16')](function(_0x3425b6){if(_0x3425b6[_0xf6f7('0x6f')]==0xca){_0x54f9a6[_0xf6f7('0x70')]=_0x3425b6;var _0x2913c4={'method':_0xf6f7('0x35'),'uri':_0xf6f7('0x71'),'headers':{'Authorization':_0xf6f7('0x6e')+_0x566589[_0xf6f7('0x59')],'Content-Type':_0xf6f7('0x55')},'body':{'refid':_0x54f9a6['message'][_0xf6f7('0x72')]},'json':!![]};return rp(_0x2913c4)['then'](function(_0x6ea343){_0x54f9a6['status']=_0x6ea343;var _0x4a5f00={'messageId':_0x54f9a6['message'][_0xf6f7('0x72')],'read':!![]};return _0x13cf44[_0xf6f7('0x17')](_0x4a5f00);});}else{return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),'intelepeer',util[_0xf6f7('0x29')](_0x3425b6,{'showHidden':![],'depth':null}));}})[_0xf6f7('0x18')](function(_0x4ec6dd){return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),'afterCreate',_0xf6f7('0x73'),util[_0xf6f7('0x29')](_0x4ec6dd,{'showHidden':![],'depth':null}));});}else{return logger[_0xf6f7('0x19')](_0xf6f7('0x2a'),_0xf6f7('0x28'),_0xf6f7('0x73'),_0xf6f7('0x74'));}break;}}})[_0xf6f7('0x75')](function(){_0x4de365();});}else{_0x4de365();}}},'charset':_0xf6f7('0x76'),'collate':_0xf6f7('0x77')});};
\ No newline at end of file
index 2cb564e..846d5c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb522=['code','SmsMessage,\x20%s,\x20%s','message','result','catch','SmsMessage','create','options','raw','info','CreateSmsMessage','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','redis','defaults','socket.io-emitter','./smsMessage.socket','register','request','then','debug','request\x20sent','stringify','error'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb522,0x12b));var _0x2b52=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb522[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2b52('0x0'));var util=require(_0x2b52('0x1'));var moment=require(_0x2b52('0x2'));var BPromise=require(_0x2b52('0x3'));var rs=require(_0x2b52('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2b52('0x5'))['db'];var utils=require(_0x2b52('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x2b52('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2b52('0x8')][_0x2b52('0x9')]({'port':0x232a});config[_0x2b52('0xa')]=_[_0x2b52('0xb')](config[_0x2b52('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x2b52('0xc'))(new Redis(config['redis']));require(_0x2b52('0xd'))[_0x2b52('0xe')](socket);function respondWithRpcPromise(_0x2471f1,_0x560cae,_0x319500){return new BPromise(function(_0x33700b,_0x3f30ad){return client[_0x2b52('0xf')](_0x2471f1,_0x319500)[_0x2b52('0x10')](function(_0x4cee7b){logger['info']('SmsMessage,\x20%s,\x20%s',_0x560cae,'request\x20sent');logger[_0x2b52('0x11')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x560cae,_0x2b52('0x12'),JSON[_0x2b52('0x13')](_0x4cee7b));if(_0x4cee7b[_0x2b52('0x14')]){if(_0x4cee7b[_0x2b52('0x14')][_0x2b52('0x15')]===0x1f4){logger[_0x2b52('0x14')](_0x2b52('0x16'),_0x560cae,_0x4cee7b[_0x2b52('0x14')][_0x2b52('0x17')]);return _0x3f30ad(_0x4cee7b['error'][_0x2b52('0x17')]);}logger[_0x2b52('0x14')](_0x2b52('0x16'),_0x560cae,_0x4cee7b[_0x2b52('0x14')]['message']);return _0x33700b(_0x4cee7b[_0x2b52('0x14')][_0x2b52('0x17')]);}else{logger['info'](_0x2b52('0x16'),_0x560cae,_0x2b52('0x12'));_0x33700b(_0x4cee7b[_0x2b52('0x18')][_0x2b52('0x17')]);}})[_0x2b52('0x19')](function(_0x9a9d1d){logger['error'](_0x2b52('0x16'),_0x560cae,_0x9a9d1d);_0x3f30ad(_0x9a9d1d);});});}exports['CreateSmsMessage']=function(_0x45deae){var _0x3d104f=this;return new Promise(function(_0x419adc,_0x19c2a4){return db[_0x2b52('0x1a')][_0x2b52('0x1b')](_0x45deae['body'],{'raw':_0x45deae[_0x2b52('0x1c')]?_0x45deae[_0x2b52('0x1c')][_0x2b52('0x1d')]===undefined?!![]:![]:!![]})[_0x2b52('0x10')](function(_0xf92151){logger[_0x2b52('0x1e')]('CreateSmsMessage',_0x45deae);logger[_0x2b52('0x11')](_0x2b52('0x1f'),_0x45deae,JSON['stringify'](_0xf92151));_0x419adc(_0xf92151);})[_0x2b52('0x19')](function(_0x5a89dc){logger[_0x2b52('0x14')](_0x2b52('0x1f'),_0x5a89dc['message'],_0x45deae);_0x19c2a4(_0x3d104f[_0x2b52('0x14')](0x1f4,_0x5a89dc[_0x2b52('0x17')]));});});};
\ No newline at end of file
+var _0x2627=['info','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','body','options','raw','lodash','moment','ioredis','../../config/utils','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','then'];(function(_0x38d657,_0x3522a1){var _0x1de063=function(_0x3354be){while(--_0x3354be){_0x38d657['push'](_0x38d657['shift']());}};_0x1de063(++_0x3522a1);}(_0x2627,0x1be));var _0x7262=function(_0x26ecf1,_0x2a40d5){_0x26ecf1=_0x26ecf1-0x0;var _0x276c07=_0x2627[_0x26ecf1];return _0x276c07;};'use strict';var _=require(_0x7262('0x0'));var util=require('util');var moment=require(_0x7262('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7262('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x7262('0x3'));var logger=require('../../config/logger')(_0x7262('0x4'));var config=require('../../config/environment');var jayson=require(_0x7262('0x5'));var client=jayson[_0x7262('0x6')][_0x7262('0x7')]({'port':0x232a});config[_0x7262('0x8')]=_['defaults'](config['redis'],{'host':_0x7262('0x9'),'port':0x18eb});var socket=require(_0x7262('0xa'))(new Redis(config['redis']));require('./smsMessage.socket')[_0x7262('0xb')](socket);function respondWithRpcPromise(_0x476c0f,_0x2b8762,_0x1f145b){return new BPromise(function(_0x1578cb,_0x9dd2a1){return client['request'](_0x476c0f,_0x1f145b)[_0x7262('0xc')](function(_0x20d890){logger[_0x7262('0xd')]('SmsMessage,\x20%s,\x20%s',_0x2b8762,_0x7262('0xe'));logger[_0x7262('0xf')](_0x7262('0x10'),_0x2b8762,_0x7262('0xe'),JSON[_0x7262('0x11')](_0x20d890));if(_0x20d890[_0x7262('0x12')]){if(_0x20d890[_0x7262('0x12')]['code']===0x1f4){logger[_0x7262('0x12')](_0x7262('0x13'),_0x2b8762,_0x20d890[_0x7262('0x12')]['message']);return _0x9dd2a1(_0x20d890[_0x7262('0x12')]['message']);}logger['error']('SmsMessage,\x20%s,\x20%s',_0x2b8762,_0x20d890[_0x7262('0x12')]['message']);return _0x1578cb(_0x20d890['error'][_0x7262('0x14')]);}else{logger[_0x7262('0xd')]('SmsMessage,\x20%s,\x20%s',_0x2b8762,_0x7262('0xe'));_0x1578cb(_0x20d890[_0x7262('0x15')][_0x7262('0x14')]);}})[_0x7262('0x16')](function(_0x5f0552){logger['error'](_0x7262('0x13'),_0x2b8762,_0x5f0552);_0x9dd2a1(_0x5f0552);});});}exports[_0x7262('0x17')]=function(_0x4c255d){var _0x162946=this;return new Promise(function(_0x4467e3,_0x3b3568){return db['SmsMessage']['create'](_0x4c255d[_0x7262('0x18')],{'raw':_0x4c255d[_0x7262('0x19')]?_0x4c255d['options'][_0x7262('0x1a')]===undefined?!![]:![]:!![]})[_0x7262('0xc')](function(_0xd51b9f){logger[_0x7262('0xd')](_0x7262('0x17'),_0x4c255d);logger[_0x7262('0xf')](_0x7262('0x17'),_0x4c255d,JSON['stringify'](_0xd51b9f));_0x4467e3(_0xd51b9f);})[_0x7262('0x16')](function(_0x42c7d1){logger[_0x7262('0x12')](_0x7262('0x17'),_0x42c7d1[_0x7262('0x14')],_0x4c255d);_0x3b3568(_0x162946[_0x7262('0x12')](0x1f4,_0x42c7d1[_0x7262('0x14')]));});});};
\ No newline at end of file
index 932fbc5..4b4dd83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ac2=['length','smsMessage:','./smsMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x4bb487,_0x54684e){var _0x1b63bf=function(_0x7fbe3d){while(--_0x7fbe3d){_0x4bb487['push'](_0x4bb487['shift']());}};_0x1b63bf(++_0x54684e);}(_0x8ac2,0xb6));var _0x28ac=function(_0x50d877,_0x3a441e){_0x50d877=_0x50d877-0x0;var _0x79c905=_0x8ac2[_0x50d877];return _0x79c905;};'use strict';var SmsMessageEvents=require(_0x28ac('0x0'));var events=[_0x28ac('0x1'),_0x28ac('0x2'),_0x28ac('0x3')];function createListener(_0x33b15b,_0x35ce7f){return function(_0x228194){_0x35ce7f[_0x28ac('0x4')](_0x33b15b,_0x228194);};}function removeListener(_0x348b33,_0x29670d){return function(){SmsMessageEvents[_0x28ac('0x5')](_0x348b33,_0x29670d);};}exports[_0x28ac('0x6')]=function(_0x188103){for(var _0x19dc43=0x0,_0xe131ae=events[_0x28ac('0x7')];_0x19dc43<_0xe131ae;_0x19dc43++){var _0x191d1b=events[_0x19dc43];var _0xb45c80=createListener(_0x28ac('0x8')+_0x191d1b,_0x188103);SmsMessageEvents['on'](_0x191d1b,_0xb45c80);}};
\ No newline at end of file
+var _0x1c9d=['register','smsMessage:','./smsMessage.events','save','remove','update','emit'];(function(_0x44a784,_0x479da0){var _0x70d93a=function(_0x2774b8){while(--_0x2774b8){_0x44a784['push'](_0x44a784['shift']());}};_0x70d93a(++_0x479da0);}(_0x1c9d,0x144));var _0xd1c9=function(_0x5ce781,_0x736b15){_0x5ce781=_0x5ce781-0x0;var _0xa70499=_0x1c9d[_0x5ce781];return _0xa70499;};'use strict';var SmsMessageEvents=require(_0xd1c9('0x0'));var events=[_0xd1c9('0x1'),_0xd1c9('0x2'),_0xd1c9('0x3')];function createListener(_0x34d292,_0x36ab22){return function(_0x5afdd5){_0x36ab22[_0xd1c9('0x4')](_0x34d292,_0x5afdd5);};}function removeListener(_0x3e6957,_0x2f7e60){return function(){SmsMessageEvents['removeListener'](_0x3e6957,_0x2f7e60);};}exports[_0xd1c9('0x5')]=function(_0x76880f){for(var _0x407e4c=0x0,_0x15241d=events['length'];_0x407e4c<_0x15241d;_0x407e4c++){var _0x15fbf2=events[_0x407e4c];var _0x2961e8=createListener(_0xd1c9('0x6')+_0x15fbf2,_0x76880f);SmsMessageEvents['on'](_0x15fbf2,_0x2961e8);}};
\ No newline at end of file
index 593db3e..4a2df98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a88=['isAuthenticated','index','describe','/:id','show','/:id/members','/:id/teams','getAgents','post','create','addTeams','put','update','destroy','delete','removeTeams','/:id/users','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get'];(function(_0x1e1077,_0x29aabe){var _0x5393bf=function(_0x4f9fe2){while(--_0x4f9fe2){_0x1e1077['push'](_0x1e1077['shift']());}};_0x5393bf(++_0x29aabe);}(_0x7a88,0xb4));var _0x87a8=function(_0x21b1e0,_0x59d6e4){_0x21b1e0=_0x21b1e0-0x0;var _0x18e44c=_0x7a88[_0x21b1e0];return _0x18e44c;};'use strict';var multer=require(_0x87a8('0x0'));var util=require(_0x87a8('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x87a8('0x2')]();var fs_extra=require(_0x87a8('0x3'));var auth=require(_0x87a8('0x4'));var interaction=require(_0x87a8('0x5'));var config=require(_0x87a8('0x6'));var controller=require(_0x87a8('0x7'));router[_0x87a8('0x8')]('/',auth[_0x87a8('0x9')](),controller[_0x87a8('0xa')]);router['get']('/describe',auth[_0x87a8('0x9')](),controller[_0x87a8('0xb')]);router[_0x87a8('0x8')](_0x87a8('0xc'),auth[_0x87a8('0x9')](),controller[_0x87a8('0xd')]);router[_0x87a8('0x8')](_0x87a8('0xe'),auth['isAuthenticated'](),controller['getMembers']);router['get'](_0x87a8('0xf'),auth[_0x87a8('0x9')](),controller['getTeams']);router['get']('/:id/users',auth['isAuthenticated'](),controller[_0x87a8('0x10')]);router[_0x87a8('0x11')]('/',auth[_0x87a8('0x9')](),controller[_0x87a8('0x12')]);router[_0x87a8('0x11')](_0x87a8('0xf'),auth[_0x87a8('0x9')](),controller[_0x87a8('0x13')]);router['post']('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x87a8('0x14')](_0x87a8('0xc'),auth['isAuthenticated'](),controller[_0x87a8('0x15')]);router['delete'](_0x87a8('0xc'),auth[_0x87a8('0x9')](),controller[_0x87a8('0x16')]);router[_0x87a8('0x17')](_0x87a8('0xf'),auth[_0x87a8('0x9')](),controller[_0x87a8('0x18')]);router[_0x87a8('0x17')](_0x87a8('0x19'),auth[_0x87a8('0x9')](),controller['removeAgents']);module[_0x87a8('0x1a')]=router;
\ No newline at end of file
+var _0x6286=['getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','update','delete','destroy','removeTeams','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6286,0x18b));var _0x6628=function(_0x573932,_0x112974){_0x573932=_0x573932-0x0;var _0xfd54b6=_0x6286[_0x573932];return _0xfd54b6;};'use strict';var multer=require(_0x6628('0x0'));var util=require(_0x6628('0x1'));var path=require(_0x6628('0x2'));var timeout=require(_0x6628('0x3'));var express=require(_0x6628('0x4'));var router=express[_0x6628('0x5')]();var fs_extra=require(_0x6628('0x6'));var auth=require(_0x6628('0x7'));var interaction=require(_0x6628('0x8'));var config=require(_0x6628('0x9'));var controller=require(_0x6628('0xa'));router['get']('/',auth[_0x6628('0xb')](),controller[_0x6628('0xc')]);router[_0x6628('0xd')](_0x6628('0xe'),auth['isAuthenticated'](),controller[_0x6628('0xf')]);router[_0x6628('0xd')](_0x6628('0x10'),auth[_0x6628('0xb')](),controller[_0x6628('0x11')]);router[_0x6628('0xd')](_0x6628('0x12'),auth[_0x6628('0xb')](),controller[_0x6628('0x13')]);router[_0x6628('0xd')](_0x6628('0x14'),auth[_0x6628('0xb')](),controller[_0x6628('0x15')]);router['get'](_0x6628('0x16'),auth[_0x6628('0xb')](),controller[_0x6628('0x17')]);router[_0x6628('0x18')]('/',auth['isAuthenticated'](),controller[_0x6628('0x19')]);router[_0x6628('0x18')](_0x6628('0x14'),auth['isAuthenticated'](),controller[_0x6628('0x1a')]);router[_0x6628('0x18')]('/:id/users',auth['isAuthenticated'](),controller[_0x6628('0x1b')]);router['put'](_0x6628('0x10'),auth[_0x6628('0xb')](),controller[_0x6628('0x1c')]);router[_0x6628('0x1d')](_0x6628('0x10'),auth[_0x6628('0xb')](),controller[_0x6628('0x1e')]);router[_0x6628('0x1d')](_0x6628('0x14'),auth[_0x6628('0xb')](),controller[_0x6628('0x1f')]);router[_0x6628('0x1d')](_0x6628('0x16'),auth[_0x6628('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 4c03835..cdd58dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cc=['sequelize','exports','name','STRING','ENUM','rrmemory','beepall'];(function(_0x9c8db5,_0xdd9453){var _0x9ba19d=function(_0x162f97){while(--_0x162f97){_0x9c8db5['push'](_0x9c8db5['shift']());}};_0x9ba19d(++_0xdd9453);}(_0xe2cc,0x1a4));var _0xce2c=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0xe2cc[_0xefd519];return _0x4bb882;};'use strict';var Sequelize=require(_0xce2c('0x0'));module[_0xce2c('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xce2c('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xce2c('0x3')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xce2c('0x4')](_0xce2c('0x5'),_0xce2c('0x6'),'roundrobin')}};
\ No newline at end of file
+var _0x8d9e=['roundrobin','sequelize','STRING','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x29982b,_0x594e0){var _0xb1f0a9=function(_0x3d824c){while(--_0x3d824c){_0x29982b['push'](_0x29982b['shift']());}};_0xb1f0a9(++_0x594e0);}(_0x8d9e,0x159));var _0xe8d9=function(_0x147007,_0x1f90b6){_0x147007=_0x147007-0x0;var _0x614f59=_0x8d9e[_0x147007];return _0x614f59;};'use strict';var Sequelize=require(_0xe8d9('0x0'));module['exports']={'name':{'type':Sequelize[_0xe8d9('0x1')],'unique':_0xe8d9('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xe8d9('0x1')]},'timeout':{'type':Sequelize[_0xe8d9('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xe8d9('0x4')](_0xe8d9('0x5'),_0xe8d9('0x6'),_0xe8d9('0x7'))}};
\ No newline at end of file
index d00eac5..a42ab46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88b5=['attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','user','role','autoAssociation','error','describe','getMembers','findOne','UserSmsQueue','order','pick','SmsQueueId','findAndCountAll','UserId','agent','smsPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','Team','addTeams','ids','User','Agents','online','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','emit','userSmsQueue:save','removeTeams','field','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','push','SELECT','every','all','value','isEmpty','removeAgents','forEach','userSmsQueue:remove','addAgents','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsQueue.socket','register','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','update','destroy','get','UserProfileResource','then','sendStatus','stack','name','send','SmsQueue','type','key','model','map','query','keys','filters','intersection'];(function(_0x2063ba,_0x342f8a){var _0x2b09e6=function(_0x422517){while(--_0x422517){_0x2063ba['push'](_0x2063ba['shift']());}};_0x2b09e6(++_0x342f8a);}(_0x88b5,0x167));var _0x588b=function(_0x4cb75a,_0x3afc17){_0x4cb75a=_0x4cb75a-0x0;var _0x19b2e6=_0x88b5[_0x4cb75a];return _0x19b2e6;};'use strict';var emlformat=require(_0x588b('0x0'));var rimraf=require(_0x588b('0x1'));var zipdir=require(_0x588b('0x2'));var jsonpatch=require(_0x588b('0x3'));var rp=require(_0x588b('0x4'));var moment=require(_0x588b('0x5'));var BPromise=require(_0x588b('0x6'));var Mustache=require(_0x588b('0x7'));var util=require(_0x588b('0x8'));var path=require(_0x588b('0x9'));var sox=require(_0x588b('0xa'));var csv=require(_0x588b('0xb'));var ejs=require(_0x588b('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x588b('0xd'));var squel=require(_0x588b('0xe'));var crypto=require(_0x588b('0xf'));var jsforce=require(_0x588b('0x10'));var deskjs=require(_0x588b('0x11'));var toCsv=require(_0x588b('0xb'));var querystring=require(_0x588b('0x12'));var Papa=require('papaparse');var Redis=require(_0x588b('0x13'));var authService=require(_0x588b('0x14'));var qs=require(_0x588b('0x15'));var as=require(_0x588b('0x16'));var hardwareService=require(_0x588b('0x17'));var logger=require('../../config/logger')(_0x588b('0x18'));var utils=require(_0x588b('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x588b('0x1a'));var db=require(_0x588b('0x1b'))['db'];config[_0x588b('0x1c')]=_[_0x588b('0x1d')](config[_0x588b('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x588b('0x1e'))(new Redis(config[_0x588b('0x1c')]));require(_0x588b('0x1f'))[_0x588b('0x20')](socket);function respondWithStatusCode(_0x150952,_0x521d37){_0x521d37=_0x521d37||0xcc;return function(_0x37faa6){if(_0x37faa6){return _0x150952['sendStatus'](_0x521d37);}return _0x150952[_0x588b('0x21')](_0x521d37)[_0x588b('0x22')]();};}function respondWithResult(_0x2b8ec6,_0x432f1c){_0x432f1c=_0x432f1c||0xc8;return function(_0x14d8ea){if(_0x14d8ea){return _0x2b8ec6['status'](_0x432f1c)[_0x588b('0x23')](_0x14d8ea);}};}function respondWithFilteredResult(_0x9b4e36,_0x278cfb){return function(_0x429b9b){if(_0x429b9b){var _0x20cd17=typeof _0x278cfb[_0x588b('0x24')]==='undefined'&&typeof _0x278cfb['limit']===_0x588b('0x25');var _0x30c002=_0x429b9b[_0x588b('0x26')];var _0x5f387c=_0x20cd17?0x0:_0x278cfb[_0x588b('0x24')];var _0xc0ede9=_0x20cd17?_0x429b9b[_0x588b('0x26')]:_0x278cfb[_0x588b('0x24')]+_0x278cfb[_0x588b('0x27')];var _0x474649;if(_0xc0ede9>=_0x30c002){_0xc0ede9=_0x30c002;_0x474649=0xc8;}else{_0x474649=0xce;}_0x9b4e36[_0x588b('0x21')](_0x474649);return _0x9b4e36[_0x588b('0x28')](_0x588b('0x29'),_0x5f387c+'-'+_0xc0ede9+'/'+_0x30c002)[_0x588b('0x23')](_0x429b9b);}return null;};}function patchUpdates(_0xd65f0e){return function(_0x5685e8){try{jsonpatch[_0x588b('0x2a')](_0x5685e8,_0xd65f0e,!![]);}catch(_0x4eff4e){return BPromise['reject'](_0x4eff4e);}return _0x5685e8['save']();};}function saveUpdates(_0x2e05b3,_0x22b8ec){return function(_0x378a0d){if(_0x378a0d){return _0x378a0d[_0x588b('0x2b')](_0x2e05b3)['then'](function(_0x2723e1){return _0x2723e1;});}return null;};}function removeEntity(_0x595504,_0xcd8e7d){return function(_0x408465){if(_0x408465){return _0x408465[_0x588b('0x2c')]()['then'](function(){var _0x230996=_0x408465[_0x588b('0x2d')]({'plain':!![]});var _0x91cea6='SmsQueues';return db[_0x588b('0x2e')][_0x588b('0x2c')]({'where':{'type':_0x91cea6,'resourceId':_0x230996['id']}})[_0x588b('0x2f')](function(){return _0x408465;});})[_0x588b('0x2f')](function(){_0x595504[_0x588b('0x21')](0xcc)[_0x588b('0x22')]();});}};}function handleEntityNotFound(_0x12bed7,_0x4506c7){return function(_0x35bee6){if(!_0x35bee6){_0x12bed7[_0x588b('0x30')](0x194);}return _0x35bee6;};}function handleError(_0x58543d,_0xd90032){_0xd90032=_0xd90032||0x1f4;return function(_0x5b1b08){logger['error'](_0x5b1b08[_0x588b('0x31')]);if(_0x5b1b08[_0x588b('0x32')]){delete _0x5b1b08[_0x588b('0x32')];}_0x58543d[_0x588b('0x21')](_0xd90032)[_0x588b('0x33')](_0x5b1b08);};}exports['index']=function(_0x4ff34e,_0x5e71a1){var _0x2e5411={},_0x4e50fd={},_0x39ad34={'count':0x0,'rows':[]};var _0x4197e7=_['map'](db[_0x588b('0x34')]['rawAttributes'],function(_0x599292){return{'name':_0x599292['fieldName'],'type':_0x599292[_0x588b('0x35')][_0x588b('0x36')]};});_0x4e50fd[_0x588b('0x37')]=_[_0x588b('0x38')](_0x4197e7,'name');_0x4e50fd[_0x588b('0x39')]=_[_0x588b('0x3a')](_0x4ff34e[_0x588b('0x39')]);_0x4e50fd[_0x588b('0x3b')]=_[_0x588b('0x3c')](_0x4e50fd[_0x588b('0x37')],_0x4e50fd[_0x588b('0x39')]);_0x2e5411[_0x588b('0x3d')]=_['intersection'](_0x4e50fd['model'],qs[_0x588b('0x3e')](_0x4ff34e[_0x588b('0x39')][_0x588b('0x3e')]));_0x2e5411[_0x588b('0x3d')]=_0x2e5411[_0x588b('0x3d')][_0x588b('0x3f')]?_0x2e5411[_0x588b('0x3d')]:_0x4e50fd[_0x588b('0x37')];if(!_0x4ff34e[_0x588b('0x39')][_0x588b('0x40')](_0x588b('0x41'))){_0x2e5411[_0x588b('0x27')]=qs[_0x588b('0x27')](_0x4ff34e[_0x588b('0x39')]['limit']);_0x2e5411[_0x588b('0x24')]=qs[_0x588b('0x24')](_0x4ff34e[_0x588b('0x39')]['offset']);}_0x2e5411['order']=qs[_0x588b('0x42')](_0x4ff34e[_0x588b('0x39')]['sort']);_0x2e5411[_0x588b('0x43')]=qs[_0x588b('0x3b')](_['pick'](_0x4ff34e[_0x588b('0x39')],_0x4e50fd[_0x588b('0x3b')]),_0x4197e7);if(_0x4ff34e['query'][_0x588b('0x44')]){_0x2e5411[_0x588b('0x43')]=_[_0x588b('0x45')](_0x2e5411[_0x588b('0x43')],{'$or':_[_0x588b('0x38')](_0x4197e7,function(_0x547583){if(_0x547583['type']!==_0x588b('0x46')){var _0x423cc1={};_0x423cc1[_0x547583['name']]={'$like':'%'+_0x4ff34e[_0x588b('0x39')][_0x588b('0x44')]+'%'};return _0x423cc1;}})});}_0x2e5411=_[_0x588b('0x45')]({},_0x2e5411,_0x4ff34e[_0x588b('0x47')]);var _0x253c81={'where':_0x2e5411[_0x588b('0x43')]};return db[_0x588b('0x34')]['count'](_0x253c81)[_0x588b('0x2f')](function(_0x42d852){_0x39ad34[_0x588b('0x26')]=_0x42d852;if(_0x4ff34e[_0x588b('0x39')]['includeAll']){_0x2e5411[_0x588b('0x48')]=[{'all':!![]}];}return db[_0x588b('0x34')][_0x588b('0x49')](_0x2e5411);})[_0x588b('0x2f')](function(_0x4e7119){_0x39ad34[_0x588b('0x4a')]=_0x4e7119;return _0x39ad34;})[_0x588b('0x2f')](respondWithFilteredResult(_0x5e71a1,_0x2e5411))[_0x588b('0x4b')](handleError(_0x5e71a1,null));};exports[_0x588b('0x4c')]=function(_0x5c455f,_0x46cb1b){var _0x55814f={'raw':!![],'where':{'id':_0x5c455f[_0x588b('0x4d')]['id']}},_0x568ba4={};_0x568ba4[_0x588b('0x37')]=_[_0x588b('0x3a')](db[_0x588b('0x34')][_0x588b('0x4e')]);_0x568ba4['query']=_['keys'](_0x5c455f[_0x588b('0x39')]);_0x568ba4[_0x588b('0x3b')]=_[_0x588b('0x3c')](_0x568ba4[_0x588b('0x37')],_0x568ba4['query']);_0x55814f[_0x588b('0x3d')]=_[_0x588b('0x3c')](_0x568ba4['model'],qs['fields'](_0x5c455f[_0x588b('0x39')][_0x588b('0x3e')]));_0x55814f[_0x588b('0x3d')]=_0x55814f['attributes'][_0x588b('0x3f')]?_0x55814f[_0x588b('0x3d')]:_0x568ba4[_0x588b('0x37')];if(_0x5c455f[_0x588b('0x39')][_0x588b('0x4f')]){_0x55814f['include']=[{'all':!![]}];}_0x55814f=_[_0x588b('0x45')]({},_0x55814f,_0x5c455f['options']);return db['SmsQueue'][_0x588b('0x50')](_0x55814f)['then'](handleEntityNotFound(_0x46cb1b,null))['then'](respondWithResult(_0x46cb1b,null))[_0x588b('0x4b')](handleError(_0x46cb1b,null));};exports[_0x588b('0x51')]=function(_0x1bc33d,_0x360f58){return db[_0x588b('0x34')][_0x588b('0x51')](_0x1bc33d[_0x588b('0x52')],{})[_0x588b('0x2f')](function(_0x2e1e47){var _0x524efe=_0x1bc33d[_0x588b('0x53')][_0x588b('0x2d')]({'plain':!![]});if(!_0x524efe)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x524efe[_0x588b('0x54')]==='user'){var _0x208bec=_0x2e1e47[_0x588b('0x2d')]({'plain':!![]});var _0x4d7269='SmsQueues';return db['UserProfileSection'][_0x588b('0x50')]({'where':{'name':_0x4d7269,'userProfileId':_0x524efe['userProfileId']},'raw':!![]})[_0x588b('0x2f')](function(_0x3003cd){if(_0x3003cd&&_0x3003cd[_0x588b('0x55')]===0x0){return db[_0x588b('0x2e')][_0x588b('0x51')]({'name':_0x208bec[_0x588b('0x32')],'resourceId':_0x208bec['id'],'type':_0x3003cd['name'],'sectionId':_0x3003cd['id']},{})[_0x588b('0x2f')](function(){return _0x2e1e47;});}else{return _0x2e1e47;}})[_0x588b('0x4b')](function(_0x1fa3bb){logger[_0x588b('0x56')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1fa3bb);throw _0x1fa3bb;});}return _0x2e1e47;})['then'](respondWithResult(_0x360f58,0xc9))[_0x588b('0x4b')](handleError(_0x360f58,null));};exports['update']=function(_0x4f5484,_0x392bd5){if(_0x4f5484[_0x588b('0x52')]['id']){delete _0x4f5484[_0x588b('0x52')]['id'];}return db[_0x588b('0x34')][_0x588b('0x50')]({'where':{'id':_0x4f5484['params']['id']}})[_0x588b('0x2f')](handleEntityNotFound(_0x392bd5,null))[_0x588b('0x2f')](saveUpdates(_0x4f5484[_0x588b('0x52')],null))[_0x588b('0x2f')](respondWithResult(_0x392bd5,null))[_0x588b('0x4b')](handleError(_0x392bd5,null));};exports['destroy']=function(_0x48b7ce,_0x54d5dc){return db[_0x588b('0x34')][_0x588b('0x50')]({'where':{'id':_0x48b7ce[_0x588b('0x4d')]['id']}})[_0x588b('0x2f')](handleEntityNotFound(_0x54d5dc,null))['then'](removeEntity(_0x54d5dc,null))['catch'](handleError(_0x54d5dc,null));};exports[_0x588b('0x57')]=function(_0x284d80,_0x5461ca){return db[_0x588b('0x34')][_0x588b('0x57')]()[_0x588b('0x2f')](respondWithResult(_0x5461ca,null))['catch'](handleError(_0x5461ca,null));};exports[_0x588b('0x58')]=function(_0xfbf247,_0x1ed924,_0x17732f){var _0x8fe64e={'raw':!![],'where':{}},_0x419d5a={},_0x4178de;return db[_0x588b('0x34')][_0x588b('0x59')]({'where':{'id':_0xfbf247[_0x588b('0x4d')]['id']}})[_0x588b('0x2f')](handleEntityNotFound(_0x1ed924,null))[_0x588b('0x2f')](function(_0x3a2716){if(_0x3a2716){_0x4178de=_0x3a2716[_0x588b('0x2d')]({'plain':!![]});_0x419d5a['model']=_[_0x588b('0x3a')](db[_0x588b('0x5a')]['rawAttributes']);_0x419d5a[_0x588b('0x39')]=_['keys'](_0xfbf247[_0x588b('0x39')]);_0x419d5a[_0x588b('0x3b')]=_[_0x588b('0x3c')](_0x419d5a['model'],_0x419d5a[_0x588b('0x39')]);_0x8fe64e[_0x588b('0x3d')]=_[_0x588b('0x3c')](_0x419d5a[_0x588b('0x37')],qs[_0x588b('0x3e')](_0xfbf247[_0x588b('0x39')]['fields']));_0x8fe64e[_0x588b('0x3d')]=_0x8fe64e[_0x588b('0x3d')][_0x588b('0x3f')]?_0x8fe64e[_0x588b('0x3d')]:_0x419d5a['model'];if(!_0xfbf247['query'][_0x588b('0x40')](_0x588b('0x41'))){_0x8fe64e[_0x588b('0x27')]=qs[_0x588b('0x27')](_0xfbf247[_0x588b('0x39')][_0x588b('0x27')]);_0x8fe64e[_0x588b('0x24')]=qs['offset'](_0xfbf247[_0x588b('0x39')][_0x588b('0x24')]);}_0x8fe64e[_0x588b('0x5b')]=qs['sort'](_0xfbf247[_0x588b('0x39')][_0x588b('0x42')]);_0x8fe64e[_0x588b('0x43')]=qs[_0x588b('0x3b')](_[_0x588b('0x5c')](_0xfbf247[_0x588b('0x39')],_0x419d5a[_0x588b('0x3b')]));_0x8fe64e[_0x588b('0x43')][_0x588b('0x5d')]=_0x3a2716['id'];if(_0xfbf247['query'][_0x588b('0x44')]){_0x8fe64e[_0x588b('0x43')]=_[_0x588b('0x45')](_0x8fe64e[_0x588b('0x43')],{'$or':_[_0x588b('0x38')](_0x8fe64e[_0x588b('0x3d')],function(_0x29e10f){var _0xe2cd45={};_0xe2cd45[_0x29e10f]={'$like':'%'+_0xfbf247[_0x588b('0x39')][_0x588b('0x44')]+'%'};return _0xe2cd45;})});}_0x8fe64e=_[_0x588b('0x45')]({},_0x8fe64e,_0xfbf247[_0x588b('0x47')]);return db[_0x588b('0x5a')][_0x588b('0x49')](_0x8fe64e);}})[_0x588b('0x2f')](function(_0x46c6d0){if(_0x46c6d0){return db['User'][_0x588b('0x5e')]({'where':{'id':_[_0x588b('0x38')](_0x46c6d0,_0x588b('0x5f')),'role':_0x588b('0x60')},'attributes':['id','name',_0x588b('0x61'),'updatedAt',_0x588b('0x62')]});}})[_0x588b('0x2f')](function(_0x1cbfe9){if(_0x1cbfe9){return{'count':_0x1cbfe9[_0x588b('0x26')],'rows':_[_0x588b('0x38')](_0x1cbfe9['rows'],function(_0x497485){return{'membername':_0x497485[_0x588b('0x32')],'UserId':_0x497485['id'],'queue_name':_0x4178de[_0x588b('0x32')],'SmsQueueId':_0x4178de['id'],'interface':util[_0x588b('0x63')](_0x588b('0x64'),_0x588b('0x65'),_0x497485[_0x588b('0x32')]),'penalty':0x0,'paused':_0x497485[_0x588b('0x61')],'createdAt':_0x497485['createdAt'],'updatedAt':_0x497485[_0x588b('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x1ed924,_0x8fe64e))['catch'](handleError(_0x1ed924,null));};exports[_0x588b('0x67')]=function(_0xf6671b,_0x16c2a1,_0xb9cb4){var _0x2f04ef={};var _0x3710b9={};var _0x192cee;var _0x28d684;return db[_0x588b('0x34')][_0x588b('0x59')]({'where':{'id':_0xf6671b[_0x588b('0x4d')]['id']}})[_0x588b('0x2f')](handleEntityNotFound(_0x16c2a1,null))[_0x588b('0x2f')](function(_0x4a279f){if(_0x4a279f){_0x192cee=_0x4a279f;_0x3710b9['model']=_[_0x588b('0x3a')](db[_0x588b('0x68')][_0x588b('0x4e')]);_0x3710b9[_0x588b('0x39')]=_[_0x588b('0x3a')](_0xf6671b[_0x588b('0x39')]);_0x3710b9[_0x588b('0x3b')]=_['intersection'](_0x3710b9[_0x588b('0x37')],_0x3710b9['query']);_0x2f04ef['attributes']=_['intersection'](_0x3710b9[_0x588b('0x37')],qs[_0x588b('0x3e')](_0xf6671b['query'][_0x588b('0x3e')]));_0x2f04ef[_0x588b('0x3d')]=_0x2f04ef[_0x588b('0x3d')][_0x588b('0x3f')]?_0x2f04ef['attributes']:_0x3710b9[_0x588b('0x37')];_0x2f04ef['order']=qs[_0x588b('0x42')](_0xf6671b[_0x588b('0x39')][_0x588b('0x42')]);_0x2f04ef['where']=qs[_0x588b('0x3b')](_[_0x588b('0x5c')](_0xf6671b[_0x588b('0x39')],_0x3710b9[_0x588b('0x3b')]));if(_0xf6671b[_0x588b('0x39')][_0x588b('0x44')]){_0x2f04ef[_0x588b('0x43')]=_[_0x588b('0x45')](_0x2f04ef['where'],{'$or':_[_0x588b('0x38')](_0x2f04ef['attributes'],function(_0x45b8d9){var _0x22e93c={};_0x22e93c[_0x45b8d9]={'$like':'%'+_0xf6671b[_0x588b('0x39')]['filter']+'%'};return _0x22e93c;})});}_0x2f04ef=_[_0x588b('0x45')]({},_0x2f04ef,_0xf6671b[_0x588b('0x47')]);return _0x192cee[_0x588b('0x67')](_0x2f04ef);}})['then'](function(_0x4b07a0){if(_0x4b07a0){_0x28d684=_0x4b07a0[_0x588b('0x3f')];if(!_0xf6671b[_0x588b('0x39')]['hasOwnProperty']('nolimit')){_0x2f04ef[_0x588b('0x27')]=qs[_0x588b('0x27')](_0xf6671b[_0x588b('0x39')][_0x588b('0x27')]);_0x2f04ef[_0x588b('0x24')]=qs[_0x588b('0x24')](_0xf6671b[_0x588b('0x39')][_0x588b('0x24')]);}return _0x192cee[_0x588b('0x67')](_0x2f04ef);}})[_0x588b('0x2f')](function(_0x4212c4){if(_0x4212c4){return _0x4212c4?{'count':_0x28d684,'rows':_0x4212c4}:null;}})['then'](respondWithResult(_0x16c2a1,null))[_0x588b('0x4b')](handleError(_0x16c2a1,null));};exports[_0x588b('0x69')]=function(_0x141717,_0x464837,_0x1bf7fb){var _0x717cf9=_0x141717[_0x588b('0x52')][_0x588b('0x6a')];return db['Team'][_0x588b('0x49')]({'where':{'id':_0x717cf9},'attributes':['id'],'include':[{'model':db[_0x588b('0x6b')],'as':_0x588b('0x6c'),'attributes':['id',_0x588b('0x32'),_0x588b('0x6d'),_0x588b('0x6e'),_0x588b('0x6f')],'raw':!![]}]})[_0x588b('0x2f')](function(_0xf2e293){if(_0xf2e293){var _0x210619=_[_0x588b('0x70')](_0xf2e293,function(_0x40a2b4){var _0x3b3af2=_0x40a2b4[_0x588b('0x2d')]({'plain':!![]});return _0x3b3af2[_0x588b('0x6c')];});return db['SmsQueue'][_0x588b('0x50')]({'where':{'id':_0x141717[_0x588b('0x4d')]['id']}})[_0x588b('0x2f')](function(_0x527bba){return db[_0x588b('0x71')][_0x588b('0x72')](function(_0x309417){return _0x527bba['addTeams'](_0x717cf9,{'transaction':_0x309417})[_0x588b('0x2f')](function(){return BPromise['each'](_0x210619,function(_0xf4893d){return db[_0x588b('0x5a')][_0x588b('0x73')]({'where':{'UserId':_0xf4893d['id'],'SmsQueueId':_0x141717['params']['id']},'transaction':_0x309417});});})[_0x588b('0x2f')](function(){_0x210619['forEach'](function(_0x5329be){socket[_0x588b('0x74')](_0x588b('0x75'),{'UserId':_0x5329be['id'],'SmsQueueId':_0x527bba['id']});});});});});}})['then'](respondWithStatusCode(_0x464837,null))['catch'](handleError(_0x464837,null));};exports[_0x588b('0x76')]=function(_0x57d1d9,_0x3032fd,_0x532533){return db['Team']['findAll']({'where':{'id':_0x57d1d9[_0x588b('0x39')][_0x588b('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x588b('0x6b')],'as':_0x588b('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x588b('0x2f')](handleEntityNotFound(_0x3032fd,null))[_0x588b('0x2f')](function(_0x13eacf){var _0x38ce99=_['map'](_0x13eacf,'id');var _0x4d6482=[];var _0x394d91=[];var _0x552efe=squel['select']();_0x552efe[_0x588b('0x77')](_0x588b('0x78'))[_0x588b('0x79')](_0x588b('0x7a'),'tq')[_0x588b('0x7b')](_0x588b('0x7c'),'ut',_0x588b('0x7d'))[_0x588b('0x43')](_0x588b('0x7e'),_0x57d1d9[_0x588b('0x4d')]['id']);for(var _0x5cf3f5=0x0;_0x5cf3f5<_0x13eacf[_0x588b('0x3f')];_0x5cf3f5+=0x1){let _0x3aa30e=_0x13eacf[_0x5cf3f5];for(var _0x263997=0x0;_0x263997<_0x3aa30e[_0x588b('0x6c')][_0x588b('0x3f')];_0x263997+=0x1){let _0x5d6126=_0x3aa30e[_0x588b('0x6c')][_0x263997];var _0x53e7f1=_0x552efe['clone']();_0x53e7f1[_0x588b('0x43')]('ut.UserId\x20=\x20?',_0x5d6126['id']);_0x394d91[_0x588b('0x7f')](db['sequelize']['query'](_0x53e7f1['toString'](),{'type':db[_0x588b('0x71')]['QueryTypes'][_0x588b('0x80')]})[_0x588b('0x2f')](function(_0x51aa11){if(_0x51aa11['length']===0x1){return _0x5d6126['id'];}else{var _0x279835=_[_0x588b('0x81')](_[_0x588b('0x38')](_0x51aa11,'TeamId'),function(_0xdb465f){return _['includes'](_0x38ce99,_0xdb465f);});if(_0x279835){return _0x5d6126['id'];}}}));}}return BPromise[_0x588b('0x82')](_0x394d91)[_0x588b('0x2f')](function(_0x222193){_0x4d6482=_(_0x4d6482)['union'](_0x222193)['compact']()[_0x588b('0x83')]();return db[_0x588b('0x34')][_0x588b('0x50')]({'where':{'id':_0x57d1d9[_0x588b('0x4d')]['id']}})['then'](function(_0x36db75){return db['sequelize']['transaction'](function(_0x303664){return _0x36db75[_0x588b('0x76')](_0x57d1d9['query'][_0x588b('0x6a')],{'transaction':_0x303664})[_0x588b('0x2f')](function(){if(!_[_0x588b('0x84')](_0x4d6482)){return _0x36db75[_0x588b('0x85')](_0x4d6482,{'transaction':_0x303664});}})['then'](function(){_0x4d6482[_0x588b('0x86')](function(_0x5bb1f5){socket[_0x588b('0x74')](_0x588b('0x87'),{'UserId':_0x5bb1f5,'SmsQueueId':_0x36db75['id']});});});});});});})['then'](respondWithStatusCode(_0x3032fd,null))[_0x588b('0x4b')](handleError(_0x3032fd,null));};exports[_0x588b('0x88')]=function(_0x468ef7,_0x1ae7ce,_0x4082d0){return db['SmsQueue'][_0x588b('0x50')]({'where':{'id':_0x468ef7['params']['id']}})['then'](handleEntityNotFound(_0x1ae7ce,null))['then'](function(_0x226f0a){if(_0x226f0a){return _0x226f0a[_0x588b('0x88')](_0x468ef7['body']['ids'],_['omit'](_0x468ef7[_0x588b('0x52')],[_0x588b('0x6a'),'id'])||{})[_0x588b('0x89')](function(_0x236b02){for(var _0x5d0738=0x0;_0x5d0738<_0x468ef7[_0x588b('0x52')][_0x588b('0x6a')]['length'];_0x5d0738+=0x1){socket[_0x588b('0x74')](_0x588b('0x75'),{'UserId':Number(_0x468ef7[_0x588b('0x52')][_0x588b('0x6a')][_0x5d0738]),'SmsQueueId':Number(_0x468ef7[_0x588b('0x4d')]['id'])});}return _0x236b02;});}})[_0x588b('0x2f')](respondWithResult(_0x1ae7ce,null))['catch'](handleError(_0x1ae7ce,null));};exports['removeAgents']=function(_0x34b1f9,_0x230a44,_0x10f84b){return db[_0x588b('0x34')][_0x588b('0x50')]({'where':{'id':_0x34b1f9[_0x588b('0x4d')]['id']}})[_0x588b('0x2f')](handleEntityNotFound(_0x230a44,null))[_0x588b('0x2f')](function(_0x3a9915){if(_0x3a9915){return _0x3a9915[_0x588b('0x85')](_0x34b1f9['query'][_0x588b('0x6a')])[_0x588b('0x2f')](function(){if(_[_0x588b('0x8a')](_0x34b1f9['query'][_0x588b('0x6a')])){for(var _0xe987aa=0x0;_0xe987aa<_0x34b1f9[_0x588b('0x39')][_0x588b('0x6a')][_0x588b('0x3f')];_0xe987aa+=0x1){socket[_0x588b('0x74')](_0x588b('0x87'),{'UserId':Number(_0x34b1f9[_0x588b('0x39')]['ids'][_0xe987aa]),'SmsQueueId':Number(_0x34b1f9[_0x588b('0x4d')]['id'])});}}else{socket[_0x588b('0x74')]('userSmsQueue:remove',{'UserId':Number(_0x34b1f9[_0x588b('0x39')][_0x588b('0x6a')]),'SmsQueueId':Number(_0x34b1f9['params']['id'])});}});}})[_0x588b('0x2f')](respondWithStatusCode(_0x230a44,null))[_0x588b('0x4b')](handleError(_0x230a44,null));};exports[_0x588b('0x8b')]=function(_0x267056,_0x472daa,_0x78268b){var _0x29f8fe={};var _0x14c4d7={};var _0xc531a5;var _0x4678fd;return db[_0x588b('0x34')][_0x588b('0x59')]({'where':{'id':_0x267056['params']['id']}})['then'](handleEntityNotFound(_0x472daa,null))[_0x588b('0x2f')](function(_0x4d9534){if(_0x4d9534){_0xc531a5=_0x4d9534;_0x14c4d7[_0x588b('0x37')]=_[_0x588b('0x3a')](db[_0x588b('0x6b')]['rawAttributes']);_0x14c4d7[_0x588b('0x39')]=_[_0x588b('0x3a')](_0x267056[_0x588b('0x39')]);_0x14c4d7[_0x588b('0x3b')]=_[_0x588b('0x3c')](_0x14c4d7[_0x588b('0x37')],_0x14c4d7['query']);_0x29f8fe['attributes']=_[_0x588b('0x3c')](_0x14c4d7['model'],qs[_0x588b('0x3e')](_0x267056[_0x588b('0x39')][_0x588b('0x3e')]));_0x29f8fe['attributes']=_0x29f8fe['attributes'][_0x588b('0x3f')]?_0x29f8fe['attributes']:_0x14c4d7[_0x588b('0x37')];_0x29f8fe[_0x588b('0x5b')]=qs[_0x588b('0x42')](_0x267056[_0x588b('0x39')][_0x588b('0x42')]);_0x29f8fe[_0x588b('0x43')]=qs[_0x588b('0x3b')](_[_0x588b('0x5c')](_0x267056['query'],_0x14c4d7[_0x588b('0x3b')]));if(_0x267056[_0x588b('0x39')][_0x588b('0x44')]){_0x29f8fe[_0x588b('0x43')]=_['merge'](_0x29f8fe[_0x588b('0x43')],{'$or':_[_0x588b('0x38')](_0x29f8fe[_0x588b('0x3d')],function(_0xf87ffd){var _0x4657a4={};_0x4657a4[_0xf87ffd]={'$like':'%'+_0x267056[_0x588b('0x39')]['filter']+'%'};return _0x4657a4;})});}_0x29f8fe=_['merge']({},_0x29f8fe,_0x267056[_0x588b('0x47')]);return _0xc531a5[_0x588b('0x8b')](_0x29f8fe);}})[_0x588b('0x2f')](function(_0x512b35){if(_0x512b35){_0x4678fd=_0x512b35[_0x588b('0x3f')];if(!_0x267056['query'][_0x588b('0x40')]('nolimit')){_0x29f8fe[_0x588b('0x27')]=qs[_0x588b('0x27')](_0x267056[_0x588b('0x39')][_0x588b('0x27')]);_0x29f8fe['offset']=qs[_0x588b('0x24')](_0x267056['query'][_0x588b('0x24')]);}return _0xc531a5[_0x588b('0x8b')](_0x29f8fe);}})['then'](function(_0x3279da){if(_0x3279da){return _0x3279da?{'count':_0x4678fd,'rows':_0x3279da}:null;}})['then'](respondWithResult(_0x472daa,null))[_0x588b('0x4b')](handleError(_0x472daa,null));};
\ No newline at end of file
+var _0x2efb=['socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','SmsQueues','UserProfileResource','error','name','index','map','SmsQueue','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','getMembers','findOne','UserSmsQueue','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','%s/%s','SIP','Team','getTeams','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','each','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','user_has_teams','clone','push','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','transaction','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost'];(function(_0x5edc94,_0xc509d){var _0x2972d9=function(_0xcbf897){while(--_0xcbf897){_0x5edc94['push'](_0x5edc94['shift']());}};_0x2972d9(++_0xc509d);}(_0x2efb,0x105));var _0xb2ef=function(_0x3b359f,_0xa25ad6){_0x3b359f=_0x3b359f-0x0;var _0x2f855b=_0x2efb[_0x3b359f];return _0x2f855b;};'use strict';var emlformat=require(_0xb2ef('0x0'));var rimraf=require(_0xb2ef('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb2ef('0x2'));var rp=require(_0xb2ef('0x3'));var moment=require(_0xb2ef('0x4'));var BPromise=require(_0xb2ef('0x5'));var Mustache=require(_0xb2ef('0x6'));var util=require(_0xb2ef('0x7'));var path=require(_0xb2ef('0x8'));var sox=require(_0xb2ef('0x9'));var csv=require(_0xb2ef('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb2ef('0xb'));var _=require('lodash');var squel=require(_0xb2ef('0xc'));var crypto=require(_0xb2ef('0xd'));var jsforce=require(_0xb2ef('0xe'));var deskjs=require(_0xb2ef('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb2ef('0x10'));var Redis=require(_0xb2ef('0x11'));var authService=require(_0xb2ef('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xb2ef('0x13'));var hardwareService=require(_0xb2ef('0x14'));var logger=require(_0xb2ef('0x15'))(_0xb2ef('0x16'));var utils=require(_0xb2ef('0x17'));var config=require(_0xb2ef('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xb2ef('0x19'))['db'];config[_0xb2ef('0x1a')]=_[_0xb2ef('0x1b')](config[_0xb2ef('0x1a')],{'host':_0xb2ef('0x1c'),'port':0x18eb});var socket=require(_0xb2ef('0x1d'))(new Redis(config['redis']));require(_0xb2ef('0x1e'))[_0xb2ef('0x1f')](socket);function respondWithStatusCode(_0x3c3012,_0x3b3970){_0x3b3970=_0x3b3970||0xcc;return function(_0x20048b){if(_0x20048b){return _0x3c3012[_0xb2ef('0x20')](_0x3b3970);}return _0x3c3012[_0xb2ef('0x21')](_0x3b3970)[_0xb2ef('0x22')]();};}function respondWithResult(_0x59c2cb,_0x38b29b){_0x38b29b=_0x38b29b||0xc8;return function(_0x299d82){if(_0x299d82){return _0x59c2cb['status'](_0x38b29b)[_0xb2ef('0x23')](_0x299d82);}};}function respondWithFilteredResult(_0x39be25,_0x265d3d){return function(_0x414eb7){if(_0x414eb7){var _0xcaa4c4=typeof _0x265d3d[_0xb2ef('0x24')]===_0xb2ef('0x25')&&typeof _0x265d3d[_0xb2ef('0x26')]===_0xb2ef('0x25');var _0x2f6fc8=_0x414eb7[_0xb2ef('0x27')];var _0x1191ef=_0xcaa4c4?0x0:_0x265d3d[_0xb2ef('0x24')];var _0x2276fb=_0xcaa4c4?_0x414eb7[_0xb2ef('0x27')]:_0x265d3d[_0xb2ef('0x24')]+_0x265d3d[_0xb2ef('0x26')];var _0x407c91;if(_0x2276fb>=_0x2f6fc8){_0x2276fb=_0x2f6fc8;_0x407c91=0xc8;}else{_0x407c91=0xce;}_0x39be25['status'](_0x407c91);return _0x39be25[_0xb2ef('0x28')](_0xb2ef('0x29'),_0x1191ef+'-'+_0x2276fb+'/'+_0x2f6fc8)[_0xb2ef('0x23')](_0x414eb7);}return null;};}function patchUpdates(_0x42cc41){return function(_0x52f135){try{jsonpatch[_0xb2ef('0x2a')](_0x52f135,_0x42cc41,!![]);}catch(_0x2cdc56){return BPromise['reject'](_0x2cdc56);}return _0x52f135[_0xb2ef('0x2b')]();};}function saveUpdates(_0x40b729,_0x2e83d5){return function(_0x4798d8){if(_0x4798d8){return _0x4798d8['update'](_0x40b729)[_0xb2ef('0x2c')](function(_0x4f82a2){return _0x4f82a2;});}return null;};}function removeEntity(_0x44a3c0,_0x2c8c62){return function(_0x67599c){if(_0x67599c){return _0x67599c[_0xb2ef('0x2d')]()[_0xb2ef('0x2c')](function(){var _0xd79071=_0x67599c[_0xb2ef('0x2e')]({'plain':!![]});var _0x332dee=_0xb2ef('0x2f');return db[_0xb2ef('0x30')]['destroy']({'where':{'type':_0x332dee,'resourceId':_0xd79071['id']}})[_0xb2ef('0x2c')](function(){return _0x67599c;});})['then'](function(){_0x44a3c0[_0xb2ef('0x21')](0xcc)[_0xb2ef('0x22')]();});}};}function handleEntityNotFound(_0x1ead7a,_0x2983fa){return function(_0x4913f5){if(!_0x4913f5){_0x1ead7a[_0xb2ef('0x20')](0x194);}return _0x4913f5;};}function handleError(_0x54b610,_0x1d1a16){_0x1d1a16=_0x1d1a16||0x1f4;return function(_0x1b4086){logger[_0xb2ef('0x31')](_0x1b4086['stack']);if(_0x1b4086[_0xb2ef('0x32')]){delete _0x1b4086[_0xb2ef('0x32')];}_0x54b610[_0xb2ef('0x21')](_0x1d1a16)['send'](_0x1b4086);};}exports[_0xb2ef('0x33')]=function(_0xefdf2a,_0x4a1f19){var _0x4ce10c={},_0x2766d6={},_0x54ad45={'count':0x0,'rows':[]};var _0xcf330e=_[_0xb2ef('0x34')](db[_0xb2ef('0x35')][_0xb2ef('0x36')],function(_0x43d4cb){return{'name':_0x43d4cb['fieldName'],'type':_0x43d4cb['type'][_0xb2ef('0x37')]};});_0x2766d6[_0xb2ef('0x38')]=_[_0xb2ef('0x34')](_0xcf330e,_0xb2ef('0x32'));_0x2766d6[_0xb2ef('0x39')]=_[_0xb2ef('0x3a')](_0xefdf2a[_0xb2ef('0x39')]);_0x2766d6[_0xb2ef('0x3b')]=_[_0xb2ef('0x3c')](_0x2766d6[_0xb2ef('0x38')],_0x2766d6[_0xb2ef('0x39')]);_0x4ce10c[_0xb2ef('0x3d')]=_['intersection'](_0x2766d6[_0xb2ef('0x38')],qs[_0xb2ef('0x3e')](_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x3e')]));_0x4ce10c[_0xb2ef('0x3d')]=_0x4ce10c[_0xb2ef('0x3d')][_0xb2ef('0x3f')]?_0x4ce10c[_0xb2ef('0x3d')]:_0x2766d6[_0xb2ef('0x38')];if(!_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x40')](_0xb2ef('0x41'))){_0x4ce10c[_0xb2ef('0x26')]=qs[_0xb2ef('0x26')](_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x26')]);_0x4ce10c[_0xb2ef('0x24')]=qs[_0xb2ef('0x24')](_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x24')]);}_0x4ce10c[_0xb2ef('0x42')]=qs[_0xb2ef('0x43')](_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x43')]);_0x4ce10c[_0xb2ef('0x44')]=qs[_0xb2ef('0x3b')](_[_0xb2ef('0x45')](_0xefdf2a[_0xb2ef('0x39')],_0x2766d6[_0xb2ef('0x3b')]),_0xcf330e);if(_0xefdf2a['query']['filter']){_0x4ce10c[_0xb2ef('0x44')]=_['merge'](_0x4ce10c['where'],{'$or':_[_0xb2ef('0x34')](_0xcf330e,function(_0x20ee6a){if(_0x20ee6a[_0xb2ef('0x46')]!==_0xb2ef('0x47')){var _0x464749={};_0x464749[_0x20ee6a[_0xb2ef('0x32')]]={'$like':'%'+_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x48')]+'%'};return _0x464749;}})});}_0x4ce10c=_[_0xb2ef('0x49')]({},_0x4ce10c,_0xefdf2a[_0xb2ef('0x4a')]);var _0x1926b9={'where':_0x4ce10c[_0xb2ef('0x44')]};return db['SmsQueue']['count'](_0x1926b9)['then'](function(_0x329a59){_0x54ad45[_0xb2ef('0x27')]=_0x329a59;if(_0xefdf2a[_0xb2ef('0x39')][_0xb2ef('0x4b')]){_0x4ce10c[_0xb2ef('0x4c')]=[{'all':!![]}];}return db[_0xb2ef('0x35')][_0xb2ef('0x4d')](_0x4ce10c);})[_0xb2ef('0x2c')](function(_0x423c66){_0x54ad45[_0xb2ef('0x4e')]=_0x423c66;return _0x54ad45;})[_0xb2ef('0x2c')](respondWithFilteredResult(_0x4a1f19,_0x4ce10c))[_0xb2ef('0x4f')](handleError(_0x4a1f19,null));};exports[_0xb2ef('0x50')]=function(_0x46d79b,_0x7213bd){var _0x403c60={'raw':!![],'where':{'id':_0x46d79b['params']['id']}},_0xe18e60={};_0xe18e60[_0xb2ef('0x38')]=_[_0xb2ef('0x3a')](db[_0xb2ef('0x35')][_0xb2ef('0x36')]);_0xe18e60[_0xb2ef('0x39')]=_[_0xb2ef('0x3a')](_0x46d79b[_0xb2ef('0x39')]);_0xe18e60[_0xb2ef('0x3b')]=_[_0xb2ef('0x3c')](_0xe18e60[_0xb2ef('0x38')],_0xe18e60[_0xb2ef('0x39')]);_0x403c60['attributes']=_[_0xb2ef('0x3c')](_0xe18e60['model'],qs[_0xb2ef('0x3e')](_0x46d79b[_0xb2ef('0x39')][_0xb2ef('0x3e')]));_0x403c60[_0xb2ef('0x3d')]=_0x403c60[_0xb2ef('0x3d')][_0xb2ef('0x3f')]?_0x403c60[_0xb2ef('0x3d')]:_0xe18e60[_0xb2ef('0x38')];if(_0x46d79b[_0xb2ef('0x39')][_0xb2ef('0x4b')]){_0x403c60[_0xb2ef('0x4c')]=[{'all':!![]}];}_0x403c60=_['merge']({},_0x403c60,_0x46d79b[_0xb2ef('0x4a')]);return db[_0xb2ef('0x35')][_0xb2ef('0x51')](_0x403c60)[_0xb2ef('0x2c')](handleEntityNotFound(_0x7213bd,null))[_0xb2ef('0x2c')](respondWithResult(_0x7213bd,null))[_0xb2ef('0x4f')](handleError(_0x7213bd,null));};exports[_0xb2ef('0x52')]=function(_0x2f20c6,_0x20b13c){return db[_0xb2ef('0x35')]['create'](_0x2f20c6[_0xb2ef('0x53')],{})[_0xb2ef('0x2c')](function(_0x23aa11){var _0x313692=_0x2f20c6[_0xb2ef('0x54')][_0xb2ef('0x2e')]({'plain':!![]});if(!_0x313692)throw new Error(_0xb2ef('0x55'));if(_0x313692[_0xb2ef('0x56')]===_0xb2ef('0x54')){var _0x405965=_0x23aa11[_0xb2ef('0x2e')]({'plain':!![]});var _0x4c94c0='SmsQueues';return db[_0xb2ef('0x57')]['find']({'where':{'name':_0x4c94c0,'userProfileId':_0x313692['userProfileId']},'raw':!![]})['then'](function(_0x29bbb3){if(_0x29bbb3&&_0x29bbb3[_0xb2ef('0x58')]===0x0){return db['UserProfileResource'][_0xb2ef('0x52')]({'name':_0x405965[_0xb2ef('0x32')],'resourceId':_0x405965['id'],'type':_0x29bbb3[_0xb2ef('0x32')],'sectionId':_0x29bbb3['id']},{})[_0xb2ef('0x2c')](function(){return _0x23aa11;});}else{return _0x23aa11;}})['catch'](function(_0xeac41a){logger['error'](_0xb2ef('0x59'),_0xeac41a);throw _0xeac41a;});}return _0x23aa11;})[_0xb2ef('0x2c')](respondWithResult(_0x20b13c,0xc9))[_0xb2ef('0x4f')](handleError(_0x20b13c,null));};exports[_0xb2ef('0x5a')]=function(_0x512b0c,_0x5dec12){if(_0x512b0c[_0xb2ef('0x53')]['id']){delete _0x512b0c[_0xb2ef('0x53')]['id'];}return db[_0xb2ef('0x35')][_0xb2ef('0x51')]({'where':{'id':_0x512b0c[_0xb2ef('0x5b')]['id']}})[_0xb2ef('0x2c')](handleEntityNotFound(_0x5dec12,null))[_0xb2ef('0x2c')](saveUpdates(_0x512b0c[_0xb2ef('0x53')],null))[_0xb2ef('0x2c')](respondWithResult(_0x5dec12,null))[_0xb2ef('0x4f')](handleError(_0x5dec12,null));};exports[_0xb2ef('0x2d')]=function(_0x28baa9,_0x4f73e2){return db[_0xb2ef('0x35')][_0xb2ef('0x51')]({'where':{'id':_0x28baa9[_0xb2ef('0x5b')]['id']}})[_0xb2ef('0x2c')](handleEntityNotFound(_0x4f73e2,null))['then'](removeEntity(_0x4f73e2,null))['catch'](handleError(_0x4f73e2,null));};exports['describe']=function(_0xdd3b92,_0xff3720){return db[_0xb2ef('0x35')]['describe']()[_0xb2ef('0x2c')](respondWithResult(_0xff3720,null))[_0xb2ef('0x4f')](handleError(_0xff3720,null));};exports[_0xb2ef('0x5c')]=function(_0x250eb1,_0x46eac3,_0x20cb35){var _0x30fc8b={'raw':!![],'where':{}},_0x1de7e1={},_0x209dd2;return db[_0xb2ef('0x35')][_0xb2ef('0x5d')]({'where':{'id':_0x250eb1[_0xb2ef('0x5b')]['id']}})['then'](handleEntityNotFound(_0x46eac3,null))[_0xb2ef('0x2c')](function(_0xed8bfa){if(_0xed8bfa){_0x209dd2=_0xed8bfa[_0xb2ef('0x2e')]({'plain':!![]});_0x1de7e1[_0xb2ef('0x38')]=_[_0xb2ef('0x3a')](db[_0xb2ef('0x5e')][_0xb2ef('0x36')]);_0x1de7e1['query']=_[_0xb2ef('0x3a')](_0x250eb1[_0xb2ef('0x39')]);_0x1de7e1['filters']=_['intersection'](_0x1de7e1[_0xb2ef('0x38')],_0x1de7e1[_0xb2ef('0x39')]);_0x30fc8b[_0xb2ef('0x3d')]=_[_0xb2ef('0x3c')](_0x1de7e1[_0xb2ef('0x38')],qs[_0xb2ef('0x3e')](_0x250eb1[_0xb2ef('0x39')][_0xb2ef('0x3e')]));_0x30fc8b[_0xb2ef('0x3d')]=_0x30fc8b['attributes'][_0xb2ef('0x3f')]?_0x30fc8b[_0xb2ef('0x3d')]:_0x1de7e1[_0xb2ef('0x38')];if(!_0x250eb1[_0xb2ef('0x39')]['hasOwnProperty']('nolimit')){_0x30fc8b['limit']=qs[_0xb2ef('0x26')](_0x250eb1[_0xb2ef('0x39')][_0xb2ef('0x26')]);_0x30fc8b[_0xb2ef('0x24')]=qs['offset'](_0x250eb1[_0xb2ef('0x39')][_0xb2ef('0x24')]);}_0x30fc8b[_0xb2ef('0x42')]=qs['sort'](_0x250eb1[_0xb2ef('0x39')]['sort']);_0x30fc8b[_0xb2ef('0x44')]=qs['filters'](_[_0xb2ef('0x45')](_0x250eb1[_0xb2ef('0x39')],_0x1de7e1[_0xb2ef('0x3b')]));_0x30fc8b[_0xb2ef('0x44')][_0xb2ef('0x5f')]=_0xed8bfa['id'];if(_0x250eb1[_0xb2ef('0x39')]['filter']){_0x30fc8b[_0xb2ef('0x44')]=_[_0xb2ef('0x49')](_0x30fc8b['where'],{'$or':_[_0xb2ef('0x34')](_0x30fc8b[_0xb2ef('0x3d')],function(_0xb8ceb1){var _0x107d3d={};_0x107d3d[_0xb8ceb1]={'$like':'%'+_0x250eb1[_0xb2ef('0x39')]['filter']+'%'};return _0x107d3d;})});}_0x30fc8b=_['merge']({},_0x30fc8b,_0x250eb1[_0xb2ef('0x4a')]);return db[_0xb2ef('0x5e')][_0xb2ef('0x4d')](_0x30fc8b);}})[_0xb2ef('0x2c')](function(_0x234b81){if(_0x234b81){return db[_0xb2ef('0x60')][_0xb2ef('0x61')]({'where':{'id':_[_0xb2ef('0x34')](_0x234b81,_0xb2ef('0x62')),'role':_0xb2ef('0x63')},'attributes':['id','name',_0xb2ef('0x64'),_0xb2ef('0x65'),_0xb2ef('0x66')]});}})[_0xb2ef('0x2c')](function(_0x3f6e74){if(_0x3f6e74){return{'count':_0x3f6e74[_0xb2ef('0x27')],'rows':_[_0xb2ef('0x34')](_0x3f6e74[_0xb2ef('0x4e')],function(_0x5abd47){return{'membername':_0x5abd47[_0xb2ef('0x32')],'UserId':_0x5abd47['id'],'queue_name':_0x209dd2[_0xb2ef('0x32')],'SmsQueueId':_0x209dd2['id'],'interface':util['format'](_0xb2ef('0x67'),_0xb2ef('0x68'),_0x5abd47[_0xb2ef('0x32')]),'penalty':0x0,'paused':_0x5abd47[_0xb2ef('0x64')],'createdAt':_0x5abd47['createdAt'],'updatedAt':_0x5abd47[_0xb2ef('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb2ef('0x2c')](respondWithFilteredResult(_0x46eac3,_0x30fc8b))['catch'](handleError(_0x46eac3,null));};exports['getTeams']=function(_0x56fe42,_0x3537c0,_0x7a6557){var _0x5c104a={};var _0x4ccf9e={};var _0x3f8738;var _0x411f19;return db[_0xb2ef('0x35')][_0xb2ef('0x5d')]({'where':{'id':_0x56fe42[_0xb2ef('0x5b')]['id']}})[_0xb2ef('0x2c')](handleEntityNotFound(_0x3537c0,null))[_0xb2ef('0x2c')](function(_0xc60db1){if(_0xc60db1){_0x3f8738=_0xc60db1;_0x4ccf9e[_0xb2ef('0x38')]=_[_0xb2ef('0x3a')](db[_0xb2ef('0x69')][_0xb2ef('0x36')]);_0x4ccf9e[_0xb2ef('0x39')]=_[_0xb2ef('0x3a')](_0x56fe42[_0xb2ef('0x39')]);_0x4ccf9e['filters']=_['intersection'](_0x4ccf9e[_0xb2ef('0x38')],_0x4ccf9e['query']);_0x5c104a['attributes']=_[_0xb2ef('0x3c')](_0x4ccf9e[_0xb2ef('0x38')],qs['fields'](_0x56fe42[_0xb2ef('0x39')]['fields']));_0x5c104a[_0xb2ef('0x3d')]=_0x5c104a[_0xb2ef('0x3d')][_0xb2ef('0x3f')]?_0x5c104a['attributes']:_0x4ccf9e['model'];_0x5c104a[_0xb2ef('0x42')]=qs['sort'](_0x56fe42['query']['sort']);_0x5c104a[_0xb2ef('0x44')]=qs['filters'](_[_0xb2ef('0x45')](_0x56fe42[_0xb2ef('0x39')],_0x4ccf9e[_0xb2ef('0x3b')]));if(_0x56fe42['query'][_0xb2ef('0x48')]){_0x5c104a[_0xb2ef('0x44')]=_['merge'](_0x5c104a[_0xb2ef('0x44')],{'$or':_[_0xb2ef('0x34')](_0x5c104a['attributes'],function(_0x1b2640){var _0x551a11={};_0x551a11[_0x1b2640]={'$like':'%'+_0x56fe42[_0xb2ef('0x39')]['filter']+'%'};return _0x551a11;})});}_0x5c104a=_[_0xb2ef('0x49')]({},_0x5c104a,_0x56fe42['options']);return _0x3f8738['getTeams'](_0x5c104a);}})[_0xb2ef('0x2c')](function(_0x1c7e66){if(_0x1c7e66){_0x411f19=_0x1c7e66['length'];if(!_0x56fe42[_0xb2ef('0x39')][_0xb2ef('0x40')](_0xb2ef('0x41'))){_0x5c104a['limit']=qs[_0xb2ef('0x26')](_0x56fe42[_0xb2ef('0x39')]['limit']);_0x5c104a[_0xb2ef('0x24')]=qs[_0xb2ef('0x24')](_0x56fe42[_0xb2ef('0x39')][_0xb2ef('0x24')]);}return _0x3f8738[_0xb2ef('0x6a')](_0x5c104a);}})[_0xb2ef('0x2c')](function(_0xcd5657){if(_0xcd5657){return _0xcd5657?{'count':_0x411f19,'rows':_0xcd5657}:null;}})['then'](respondWithResult(_0x3537c0,null))[_0xb2ef('0x4f')](handleError(_0x3537c0,null));};exports[_0xb2ef('0x6b')]=function(_0x5eaf9c,_0xf2bf59,_0x5de6f9){var _0x279a4d=_0x5eaf9c['body'][_0xb2ef('0x6c')];return db['Team'][_0xb2ef('0x4d')]({'where':{'id':_0x279a4d},'attributes':['id'],'include':[{'model':db[_0xb2ef('0x60')],'as':_0xb2ef('0x6d'),'attributes':['id','name','online',_0xb2ef('0x6e'),_0xb2ef('0x6f')],'raw':!![]}]})[_0xb2ef('0x2c')](function(_0x7b77be){if(_0x7b77be){var _0x4ee239=_[_0xb2ef('0x70')](_0x7b77be,function(_0x2f72c2){var _0x43d49e=_0x2f72c2[_0xb2ef('0x2e')]({'plain':!![]});return _0x43d49e['Agents'];});return db[_0xb2ef('0x35')][_0xb2ef('0x51')]({'where':{'id':_0x5eaf9c[_0xb2ef('0x5b')]['id']}})[_0xb2ef('0x2c')](function(_0x4c51c9){return db[_0xb2ef('0x71')]['transaction'](function(_0x15e9fd){return _0x4c51c9['addTeams'](_0x279a4d,{'transaction':_0x15e9fd})[_0xb2ef('0x2c')](function(){return BPromise[_0xb2ef('0x72')](_0x4ee239,function(_0x1bf88f){return db[_0xb2ef('0x5e')][_0xb2ef('0x73')]({'where':{'UserId':_0x1bf88f['id'],'SmsQueueId':_0x5eaf9c[_0xb2ef('0x5b')]['id']},'transaction':_0x15e9fd});});})[_0xb2ef('0x2c')](function(){_0x4ee239[_0xb2ef('0x74')](function(_0x429557){socket[_0xb2ef('0x75')](_0xb2ef('0x76'),{'UserId':_0x429557['id'],'SmsQueueId':_0x4c51c9['id']});});});});});}})[_0xb2ef('0x2c')](respondWithStatusCode(_0xf2bf59,null))[_0xb2ef('0x4f')](handleError(_0xf2bf59,null));};exports[_0xb2ef('0x77')]=function(_0x30377d,_0x2afd70,_0x2e97ed){return db[_0xb2ef('0x69')][_0xb2ef('0x4d')]({'where':{'id':_0x30377d[_0xb2ef('0x39')][_0xb2ef('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xb2ef('0x60')],'as':_0xb2ef('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xb2ef('0x2c')](handleEntityNotFound(_0x2afd70,null))['then'](function(_0x3218c5){var _0x1f0698=_[_0xb2ef('0x34')](_0x3218c5,'id');var _0x578813=[];var _0x17b3ed=[];var _0x3364e1=squel[_0xb2ef('0x78')]();_0x3364e1[_0xb2ef('0x79')](_0xb2ef('0x7a'))[_0xb2ef('0x7b')](_0xb2ef('0x7c'),'tq')['join'](_0xb2ef('0x7d'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where']('SmsQueueId\x20=\x20?',_0x30377d[_0xb2ef('0x5b')]['id']);for(var _0x57e1b1=0x0;_0x57e1b1<_0x3218c5[_0xb2ef('0x3f')];_0x57e1b1+=0x1){let _0x46d65e=_0x3218c5[_0x57e1b1];for(var _0x49cb78=0x0;_0x49cb78<_0x46d65e[_0xb2ef('0x6d')][_0xb2ef('0x3f')];_0x49cb78+=0x1){let _0x231393=_0x46d65e['Agents'][_0x49cb78];var _0x5f4c6b=_0x3364e1[_0xb2ef('0x7e')]();_0x5f4c6b[_0xb2ef('0x44')]('ut.UserId\x20=\x20?',_0x231393['id']);_0x17b3ed[_0xb2ef('0x7f')](db[_0xb2ef('0x71')]['query'](_0x5f4c6b[_0xb2ef('0x80')](),{'type':db[_0xb2ef('0x71')][_0xb2ef('0x81')][_0xb2ef('0x82')]})[_0xb2ef('0x2c')](function(_0x3fca59){if(_0x3fca59[_0xb2ef('0x3f')]===0x1){return _0x231393['id'];}else{var _0x26e841=_[_0xb2ef('0x83')](_[_0xb2ef('0x34')](_0x3fca59,_0xb2ef('0x84')),function(_0x8a7259){return _['includes'](_0x1f0698,_0x8a7259);});if(_0x26e841){return _0x231393['id'];}}}));}}return BPromise[_0xb2ef('0x85')](_0x17b3ed)[_0xb2ef('0x2c')](function(_0x404555){_0x578813=_(_0x578813)[_0xb2ef('0x86')](_0x404555)[_0xb2ef('0x87')]()[_0xb2ef('0x88')]();return db[_0xb2ef('0x35')][_0xb2ef('0x51')]({'where':{'id':_0x30377d[_0xb2ef('0x5b')]['id']}})[_0xb2ef('0x2c')](function(_0x23e65c){return db[_0xb2ef('0x71')][_0xb2ef('0x89')](function(_0x3366ed){return _0x23e65c[_0xb2ef('0x77')](_0x30377d['query']['ids'],{'transaction':_0x3366ed})[_0xb2ef('0x2c')](function(){if(!_[_0xb2ef('0x8a')](_0x578813)){return _0x23e65c[_0xb2ef('0x8b')](_0x578813,{'transaction':_0x3366ed});}})[_0xb2ef('0x2c')](function(){_0x578813[_0xb2ef('0x74')](function(_0x329795){socket['emit'](_0xb2ef('0x8c'),{'UserId':_0x329795,'SmsQueueId':_0x23e65c['id']});});});});});});})[_0xb2ef('0x2c')](respondWithStatusCode(_0x2afd70,null))[_0xb2ef('0x4f')](handleError(_0x2afd70,null));};exports['addAgents']=function(_0x30c13c,_0x387ca6,_0x24ac9a){return db[_0xb2ef('0x35')][_0xb2ef('0x51')]({'where':{'id':_0x30c13c[_0xb2ef('0x5b')]['id']}})['then'](handleEntityNotFound(_0x387ca6,null))['then'](function(_0x1e7967){if(_0x1e7967){return _0x1e7967[_0xb2ef('0x8d')](_0x30c13c[_0xb2ef('0x53')][_0xb2ef('0x6c')],_[_0xb2ef('0x8e')](_0x30c13c['body'],['ids','id'])||{})[_0xb2ef('0x8f')](function(_0x19a46f){for(var _0x30d03f=0x0;_0x30d03f<_0x30c13c[_0xb2ef('0x53')][_0xb2ef('0x6c')][_0xb2ef('0x3f')];_0x30d03f+=0x1){socket[_0xb2ef('0x75')](_0xb2ef('0x76'),{'UserId':Number(_0x30c13c[_0xb2ef('0x53')][_0xb2ef('0x6c')][_0x30d03f]),'SmsQueueId':Number(_0x30c13c[_0xb2ef('0x5b')]['id'])});}return _0x19a46f;});}})[_0xb2ef('0x2c')](respondWithResult(_0x387ca6,null))[_0xb2ef('0x4f')](handleError(_0x387ca6,null));};exports[_0xb2ef('0x8b')]=function(_0x4ca48d,_0x1b8575,_0x3e5b75){return db['SmsQueue'][_0xb2ef('0x51')]({'where':{'id':_0x4ca48d[_0xb2ef('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1b8575,null))['then'](function(_0x3b45d6){if(_0x3b45d6){return _0x3b45d6[_0xb2ef('0x8b')](_0x4ca48d[_0xb2ef('0x39')]['ids'])['then'](function(){if(_['isArray'](_0x4ca48d[_0xb2ef('0x39')][_0xb2ef('0x6c')])){for(var _0x575142=0x0;_0x575142<_0x4ca48d[_0xb2ef('0x39')][_0xb2ef('0x6c')][_0xb2ef('0x3f')];_0x575142+=0x1){socket[_0xb2ef('0x75')]('userSmsQueue:remove',{'UserId':Number(_0x4ca48d[_0xb2ef('0x39')]['ids'][_0x575142]),'SmsQueueId':Number(_0x4ca48d[_0xb2ef('0x5b')]['id'])});}}else{socket[_0xb2ef('0x75')](_0xb2ef('0x8c'),{'UserId':Number(_0x4ca48d[_0xb2ef('0x39')]['ids']),'SmsQueueId':Number(_0x4ca48d['params']['id'])});}});}})[_0xb2ef('0x2c')](respondWithStatusCode(_0x1b8575,null))[_0xb2ef('0x4f')](handleError(_0x1b8575,null));};exports[_0xb2ef('0x90')]=function(_0x2eae02,_0x3afa8c,_0x585e63){var _0x3a4692={};var _0x5c67e5={};var _0x2f13c0;var _0x1dd0b0;return db[_0xb2ef('0x35')][_0xb2ef('0x5d')]({'where':{'id':_0x2eae02['params']['id']}})[_0xb2ef('0x2c')](handleEntityNotFound(_0x3afa8c,null))[_0xb2ef('0x2c')](function(_0x3605bb){if(_0x3605bb){_0x2f13c0=_0x3605bb;_0x5c67e5[_0xb2ef('0x38')]=_[_0xb2ef('0x3a')](db[_0xb2ef('0x60')][_0xb2ef('0x36')]);_0x5c67e5['query']=_['keys'](_0x2eae02[_0xb2ef('0x39')]);_0x5c67e5[_0xb2ef('0x3b')]=_[_0xb2ef('0x3c')](_0x5c67e5[_0xb2ef('0x38')],_0x5c67e5[_0xb2ef('0x39')]);_0x3a4692[_0xb2ef('0x3d')]=_['intersection'](_0x5c67e5[_0xb2ef('0x38')],qs[_0xb2ef('0x3e')](_0x2eae02['query']['fields']));_0x3a4692['attributes']=_0x3a4692[_0xb2ef('0x3d')][_0xb2ef('0x3f')]?_0x3a4692[_0xb2ef('0x3d')]:_0x5c67e5[_0xb2ef('0x38')];_0x3a4692[_0xb2ef('0x42')]=qs[_0xb2ef('0x43')](_0x2eae02[_0xb2ef('0x39')][_0xb2ef('0x43')]);_0x3a4692[_0xb2ef('0x44')]=qs['filters'](_['pick'](_0x2eae02[_0xb2ef('0x39')],_0x5c67e5[_0xb2ef('0x3b')]));if(_0x2eae02[_0xb2ef('0x39')]['filter']){_0x3a4692[_0xb2ef('0x44')]=_['merge'](_0x3a4692[_0xb2ef('0x44')],{'$or':_[_0xb2ef('0x34')](_0x3a4692[_0xb2ef('0x3d')],function(_0x50c8e0){var _0x342693={};_0x342693[_0x50c8e0]={'$like':'%'+_0x2eae02[_0xb2ef('0x39')][_0xb2ef('0x48')]+'%'};return _0x342693;})});}_0x3a4692=_[_0xb2ef('0x49')]({},_0x3a4692,_0x2eae02[_0xb2ef('0x4a')]);return _0x2f13c0[_0xb2ef('0x90')](_0x3a4692);}})['then'](function(_0xbf3f5e){if(_0xbf3f5e){_0x1dd0b0=_0xbf3f5e[_0xb2ef('0x3f')];if(!_0x2eae02[_0xb2ef('0x39')][_0xb2ef('0x40')]('nolimit')){_0x3a4692[_0xb2ef('0x26')]=qs['limit'](_0x2eae02['query'][_0xb2ef('0x26')]);_0x3a4692[_0xb2ef('0x24')]=qs[_0xb2ef('0x24')](_0x2eae02[_0xb2ef('0x39')][_0xb2ef('0x24')]);}return _0x2f13c0[_0xb2ef('0x90')](_0x3a4692);}})[_0xb2ef('0x2c')](function(_0x1eace4){if(_0x1eace4){return _0x1eace4?{'count':_0x1dd0b0,'rows':_0x1eace4}:null;}})[_0xb2ef('0x2c')](respondWithResult(_0x3afa8c,null))['catch'](handleError(_0x3afa8c,null));};
\ No newline at end of file
index 6083dfa..b877676 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x987e=['exports','events','../../mysqldb','SmsQueue','save','update','remove','emit','hook'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x987e,0x7f));var _0xe987=function(_0x5a18a1,_0x36eb89){_0x5a18a1=_0x5a18a1-0x0;var _0x47d8b3=_0x987e[_0x5a18a1];return _0x47d8b3;};'use strict';var EventEmitter=require(_0xe987('0x0'));var SmsQueue=require(_0xe987('0x1'))['db'][_0xe987('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe987('0x3'),'afterUpdate':_0xe987('0x4'),'afterDestroy':_0xe987('0x5')};function emitEvent(_0x2202ae){return function(_0x2d1d87,_0x12d64c,_0x246b3a){SmsQueueEvents['emit'](_0x2202ae+':'+_0x2d1d87['id'],_0x2d1d87);SmsQueueEvents[_0xe987('0x6')](_0x2202ae,_0x2d1d87);_0x246b3a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0xe987('0x7')](e,emitEvent(event));}}module[_0xe987('0x8')]=SmsQueueEvents;
\ No newline at end of file
+var _0x39da=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','SmsQueue'];(function(_0x39941c,_0x4ad1bb){var _0x52d9c7=function(_0x4e107e){while(--_0x4e107e){_0x39941c['push'](_0x39941c['shift']());}};_0x52d9c7(++_0x4ad1bb);}(_0x39da,0x69));var _0xa39d=function(_0x332314,_0x3bb09f){_0x332314=_0x332314-0x0;var _0x54f544=_0x39da[_0x332314];return _0x54f544;};'use strict';var EventEmitter=require(_0xa39d('0x0'));var SmsQueue=require(_0xa39d('0x1'))['db'][_0xa39d('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa39d('0x3'),'afterUpdate':_0xa39d('0x4'),'afterDestroy':_0xa39d('0x5')};function emitEvent(_0x2c7d60){return function(_0x53ec21,_0x2f17c5,_0x2c79aa){SmsQueueEvents['emit'](_0x2c7d60+':'+_0x53ec21['id'],_0x53ec21);SmsQueueEvents[_0xa39d('0x6')](_0x2c7d60,_0x53ec21);_0x2c79aa(null);};}for(var e in events){if(events[_0xa39d('0x7')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0xa39d('0x8')]=SmsQueueEvents;
\ No newline at end of file
index a05eb41..c6aa3c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e8c=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','SmsQueue'];(function(_0xa4f636,_0xaca1b6){var _0x37e02a=function(_0x49bd47){while(--_0x49bd47){_0xa4f636['push'](_0xa4f636['shift']());}};_0x37e02a(++_0xaca1b6);}(_0x0e8c,0x1e0));var _0xc0e8=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0e8c[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0xc0e8('0x0'));var logger=require(_0xc0e8('0x1'))(_0xc0e8('0x2'));var moment=require(_0xc0e8('0x3'));var BPromise=require(_0xc0e8('0x4'));var rp=require(_0xc0e8('0x5'));var fs=require('fs');var path=require(_0xc0e8('0x6'));var rimraf=require(_0xc0e8('0x7'));var config=require('../../config/environment');var attributes=require('./smsQueue.attributes');module['exports']=function(_0xdacdea,_0x3d726e){return _0xdacdea[_0xc0e8('0x8')](_0xc0e8('0x9'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x770f=['./smsQueue.attributes','exports','define','SmsQueue','sms_queues','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x26bcc1,_0x32756e){var _0x38e0d9=function(_0x18980a){while(--_0x18980a){_0x26bcc1['push'](_0x26bcc1['shift']());}};_0x38e0d9(++_0x32756e);}(_0x770f,0x7e));var _0xf770=function(_0x242a98,_0x13988e){_0x242a98=_0x242a98-0x0;var _0x580999=_0x770f[_0x242a98];return _0x580999;};'use strict';var _=require('lodash');var util=require(_0xf770('0x0'));var logger=require(_0xf770('0x1'))('api');var moment=require('moment');var BPromise=require(_0xf770('0x2'));var rp=require(_0xf770('0x3'));var fs=require('fs');var path=require(_0xf770('0x4'));var rimraf=require(_0xf770('0x5'));var config=require('../../config/environment');var attributes=require(_0xf770('0x6'));module[_0xf770('0x7')]=function(_0x4fe207,_0x49c875){return _0x4fe207[_0xf770('0x8')](_0xf770('0x9'),attributes,{'tableName':_0xf770('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index afa4846..4f25131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a38=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetSmsQueue','SmsQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowSmsQueue'];(function(_0x2652e4,_0x166734){var _0x7a92e8=function(_0x12fbce){while(--_0x12fbce){_0x2652e4['push'](_0x2652e4['shift']());}};_0x7a92e8(++_0x166734);}(_0x7a38,0x1c3));var _0x87a3=function(_0x38c2fb,_0x23937d){_0x38c2fb=_0x38c2fb-0x0;var _0x410d23=_0x7a38[_0x38c2fb];return _0x410d23;};'use strict';var _=require(_0x87a3('0x0'));var util=require(_0x87a3('0x1'));var moment=require(_0x87a3('0x2'));var BPromise=require(_0x87a3('0x3'));var rs=require(_0x87a3('0x4'));var fs=require('fs');var Redis=require(_0x87a3('0x5'));var db=require(_0x87a3('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x87a3('0x7'));var config=require(_0x87a3('0x8'));var jayson=require(_0x87a3('0x9'));var client=jayson[_0x87a3('0xa')][_0x87a3('0xb')]({'port':0x232a});config[_0x87a3('0xc')]=_[_0x87a3('0xd')](config[_0x87a3('0xc')],{'host':_0x87a3('0xe'),'port':0x18eb});var socket=require(_0x87a3('0xf'))(new Redis(config[_0x87a3('0xc')]));require(_0x87a3('0x10'))[_0x87a3('0x11')](socket);function respondWithRpcPromise(_0x485042,_0x133e59,_0x3b9d33){return new BPromise(function(_0x418c31,_0x1a2dec){return client['request'](_0x485042,_0x3b9d33)[_0x87a3('0x12')](function(_0x1f10b4){logger[_0x87a3('0x13')](_0x87a3('0x14'),_0x133e59,_0x87a3('0x15'));logger[_0x87a3('0x16')](_0x87a3('0x17'),_0x133e59,_0x87a3('0x15'),JSON[_0x87a3('0x18')](_0x1f10b4));if(_0x1f10b4[_0x87a3('0x19')]){if(_0x1f10b4[_0x87a3('0x19')]['code']===0x1f4){logger['error'](_0x87a3('0x14'),_0x133e59,_0x1f10b4['error'][_0x87a3('0x1a')]);return _0x1a2dec(_0x1f10b4[_0x87a3('0x19')]['message']);}logger['error'](_0x87a3('0x14'),_0x133e59,_0x1f10b4[_0x87a3('0x19')][_0x87a3('0x1a')]);return _0x418c31(_0x1f10b4[_0x87a3('0x19')][_0x87a3('0x1a')]);}else{logger[_0x87a3('0x13')]('SmsQueue,\x20%s,\x20%s',_0x133e59,_0x87a3('0x15'));_0x418c31(_0x1f10b4[_0x87a3('0x1b')][_0x87a3('0x1a')]);}})[_0x87a3('0x1c')](function(_0x4c897f){logger[_0x87a3('0x19')](_0x87a3('0x14'),_0x133e59,_0x4c897f);_0x1a2dec(_0x4c897f);});});}exports[_0x87a3('0x1d')]=function(_0x3f5d13){var _0x12b962=this;return new Promise(function(_0x4461c9,_0x27df1c){return db[_0x87a3('0x1e')][_0x87a3('0x1f')]({'raw':_0x3f5d13[_0x87a3('0x20')]?_0x3f5d13['options'][_0x87a3('0x21')]===undefined?!![]:![]:!![],'where':_0x3f5d13[_0x87a3('0x20')]?_0x3f5d13[_0x87a3('0x20')][_0x87a3('0x22')]||null:null,'attributes':_0x3f5d13[_0x87a3('0x20')]?_0x3f5d13[_0x87a3('0x20')][_0x87a3('0x23')]||null:null,'limit':_0x3f5d13[_0x87a3('0x20')]?_0x3f5d13[_0x87a3('0x20')][_0x87a3('0x24')]||null:null,'include':_0x3f5d13['options']?_0x3f5d13[_0x87a3('0x20')][_0x87a3('0x25')]?_[_0x87a3('0x26')](_0x3f5d13[_0x87a3('0x20')][_0x87a3('0x25')],function(_0x25662a){return{'model':db[_0x25662a['model']],'as':_0x25662a['as'],'attributes':_0x25662a['attributes'],'include':_0x25662a['include']?_[_0x87a3('0x26')](_0x25662a[_0x87a3('0x25')],function(_0x5e59f6){return{'model':db[_0x5e59f6[_0x87a3('0x27')]],'as':_0x5e59f6['as'],'attributes':_0x5e59f6[_0x87a3('0x23')],'include':_0x5e59f6[_0x87a3('0x25')]?_['map'](_0x5e59f6[_0x87a3('0x25')],function(_0x1aaa43){return{'model':db[_0x1aaa43[_0x87a3('0x27')]],'as':_0x1aaa43['as'],'attributes':_0x1aaa43['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5a2496){logger[_0x87a3('0x13')]('GetSmsQueue',_0x3f5d13);logger[_0x87a3('0x16')](_0x87a3('0x1d'),_0x3f5d13,JSON['stringify'](_0x5a2496));_0x4461c9(_0x5a2496);})[_0x87a3('0x1c')](function(_0x1a39bb){logger[_0x87a3('0x19')](_0x87a3('0x1d'),_0x1a39bb['message'],_0x3f5d13);_0x27df1c(_0x12b962[_0x87a3('0x19')](0x1f4,_0x1a39bb[_0x87a3('0x1a')]));});});};exports[_0x87a3('0x28')]=function(_0x40ff9f){var _0x298e67=this;return new Promise(function(_0x28e0f9,_0x5df125){return db[_0x87a3('0x1e')]['find']({'raw':_0x40ff9f[_0x87a3('0x20')]?_0x40ff9f[_0x87a3('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x40ff9f[_0x87a3('0x20')]?_0x40ff9f['options']['where']||null:null,'attributes':_0x40ff9f['options']?_0x40ff9f[_0x87a3('0x20')][_0x87a3('0x23')]||null:null,'include':_0x40ff9f['options']?_0x40ff9f['options'][_0x87a3('0x25')]?_[_0x87a3('0x26')](_0x40ff9f['options'][_0x87a3('0x25')],function(_0x4063b0){return{'model':db[_0x4063b0[_0x87a3('0x27')]],'as':_0x4063b0['as'],'attributes':_0x4063b0[_0x87a3('0x23')],'include':_0x4063b0[_0x87a3('0x25')]?_[_0x87a3('0x26')](_0x4063b0[_0x87a3('0x25')],function(_0x39a5d9){return{'model':db[_0x39a5d9[_0x87a3('0x27')]],'as':_0x39a5d9['as'],'attributes':_0x39a5d9[_0x87a3('0x23')],'include':_0x39a5d9[_0x87a3('0x25')]?_['map'](_0x39a5d9['include'],function(_0x563870){return{'model':db[_0x563870[_0x87a3('0x27')]],'as':_0x563870['as'],'attributes':_0x563870[_0x87a3('0x23')]};}):[]};}):[]};}):[]:[]})[_0x87a3('0x12')](function(_0x13d828){logger[_0x87a3('0x13')](_0x87a3('0x28'),_0x40ff9f);logger['debug'](_0x87a3('0x28'),_0x40ff9f,JSON['stringify'](_0x13d828));_0x28e0f9(_0x13d828);})[_0x87a3('0x1c')](function(_0x403c27){logger['error']('ShowSmsQueue',_0x403c27[_0x87a3('0x1a')],_0x40ff9f);_0x5df125(_0x298e67[_0x87a3('0x19')](0x1f4,_0x403c27[_0x87a3('0x1a')]));});});};
\ No newline at end of file
+var _0xe49f=['debug','find','where','ShowSmsQueue','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetSmsQueue','SmsQueue','findAll','options','raw','limit','include','map','model','attributes'];(function(_0x4c4239,_0x5c3328){var _0x4d2d86=function(_0x535e2f){while(--_0x535e2f){_0x4c4239['push'](_0x4c4239['shift']());}};_0x4d2d86(++_0x5c3328);}(_0xe49f,0x163));var _0xfe49=function(_0x5016b5,_0x38eb27){_0x5016b5=_0x5016b5-0x0;var _0x4da6e5=_0xe49f[_0x5016b5];return _0x4da6e5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfe49('0x0'));var BPromise=require(_0xfe49('0x1'));var rs=require(_0xfe49('0x2'));var fs=require('fs');var Redis=require(_0xfe49('0x3'));var db=require(_0xfe49('0x4'))['db'];var utils=require(_0xfe49('0x5'));var logger=require(_0xfe49('0x6'))(_0xfe49('0x7'));var config=require(_0xfe49('0x8'));var jayson=require(_0xfe49('0x9'));var client=jayson[_0xfe49('0xa')][_0xfe49('0xb')]({'port':0x232a});config[_0xfe49('0xc')]=_[_0xfe49('0xd')](config[_0xfe49('0xc')],{'host':_0xfe49('0xe'),'port':0x18eb});var socket=require(_0xfe49('0xf'))(new Redis(config['redis']));require('./smsQueue.socket')['register'](socket);function respondWithRpcPromise(_0x5bbf2e,_0x280ece,_0x3fd916){return new BPromise(function(_0x568661,_0x22aecc){return client['request'](_0x5bbf2e,_0x3fd916)[_0xfe49('0x10')](function(_0x1d32f9){logger[_0xfe49('0x11')](_0xfe49('0x12'),_0x280ece,_0xfe49('0x13'));logger['debug']('SmsQueue,\x20%s,\x20%s,\x20%s',_0x280ece,_0xfe49('0x13'),JSON[_0xfe49('0x14')](_0x1d32f9));if(_0x1d32f9[_0xfe49('0x15')]){if(_0x1d32f9[_0xfe49('0x15')][_0xfe49('0x16')]===0x1f4){logger[_0xfe49('0x15')](_0xfe49('0x12'),_0x280ece,_0x1d32f9[_0xfe49('0x15')][_0xfe49('0x17')]);return _0x22aecc(_0x1d32f9[_0xfe49('0x15')][_0xfe49('0x17')]);}logger[_0xfe49('0x15')](_0xfe49('0x12'),_0x280ece,_0x1d32f9[_0xfe49('0x15')][_0xfe49('0x17')]);return _0x568661(_0x1d32f9[_0xfe49('0x15')][_0xfe49('0x17')]);}else{logger['info'](_0xfe49('0x12'),_0x280ece,_0xfe49('0x13'));_0x568661(_0x1d32f9['result'][_0xfe49('0x17')]);}})[_0xfe49('0x18')](function(_0x18b128){logger[_0xfe49('0x15')](_0xfe49('0x12'),_0x280ece,_0x18b128);_0x22aecc(_0x18b128);});});}exports[_0xfe49('0x19')]=function(_0x568e8f){var _0x2521b9=this;return new Promise(function(_0x57d74b,_0x201bd9){return db[_0xfe49('0x1a')][_0xfe49('0x1b')]({'raw':_0x568e8f[_0xfe49('0x1c')]?_0x568e8f[_0xfe49('0x1c')][_0xfe49('0x1d')]===undefined?!![]:![]:!![],'where':_0x568e8f[_0xfe49('0x1c')]?_0x568e8f[_0xfe49('0x1c')]['where']||null:null,'attributes':_0x568e8f['options']?_0x568e8f[_0xfe49('0x1c')]['attributes']||null:null,'limit':_0x568e8f[_0xfe49('0x1c')]?_0x568e8f[_0xfe49('0x1c')][_0xfe49('0x1e')]||null:null,'include':_0x568e8f[_0xfe49('0x1c')]?_0x568e8f['options'][_0xfe49('0x1f')]?_[_0xfe49('0x20')](_0x568e8f[_0xfe49('0x1c')]['include'],function(_0x2243e0){return{'model':db[_0x2243e0[_0xfe49('0x21')]],'as':_0x2243e0['as'],'attributes':_0x2243e0['attributes'],'include':_0x2243e0[_0xfe49('0x1f')]?_[_0xfe49('0x20')](_0x2243e0[_0xfe49('0x1f')],function(_0x402f47){return{'model':db[_0x402f47[_0xfe49('0x21')]],'as':_0x402f47['as'],'attributes':_0x402f47['attributes'],'include':_0x402f47[_0xfe49('0x1f')]?_[_0xfe49('0x20')](_0x402f47[_0xfe49('0x1f')],function(_0x5ac966){return{'model':db[_0x5ac966[_0xfe49('0x21')]],'as':_0x5ac966['as'],'attributes':_0x5ac966[_0xfe49('0x22')]};}):[]};}):[]};}):[]:[]})[_0xfe49('0x10')](function(_0x330161){logger['info'](_0xfe49('0x19'),_0x568e8f);logger[_0xfe49('0x23')](_0xfe49('0x19'),_0x568e8f,JSON['stringify'](_0x330161));_0x57d74b(_0x330161);})[_0xfe49('0x18')](function(_0x27cbe6){logger['error']('GetSmsQueue',_0x27cbe6[_0xfe49('0x17')],_0x568e8f);_0x201bd9(_0x2521b9[_0xfe49('0x15')](0x1f4,_0x27cbe6['message']));});});};exports['ShowSmsQueue']=function(_0x3cec36){var _0x2be5a1=this;return new Promise(function(_0x266d1e,_0x5c4c45){return db[_0xfe49('0x1a')][_0xfe49('0x24')]({'raw':_0x3cec36[_0xfe49('0x1c')]?_0x3cec36['options'][_0xfe49('0x1d')]===undefined?!![]:![]:!![],'where':_0x3cec36['options']?_0x3cec36[_0xfe49('0x1c')][_0xfe49('0x25')]||null:null,'attributes':_0x3cec36[_0xfe49('0x1c')]?_0x3cec36[_0xfe49('0x1c')][_0xfe49('0x22')]||null:null,'include':_0x3cec36[_0xfe49('0x1c')]?_0x3cec36[_0xfe49('0x1c')][_0xfe49('0x1f')]?_[_0xfe49('0x20')](_0x3cec36[_0xfe49('0x1c')][_0xfe49('0x1f')],function(_0xae2c9a){return{'model':db[_0xae2c9a['model']],'as':_0xae2c9a['as'],'attributes':_0xae2c9a[_0xfe49('0x22')],'include':_0xae2c9a[_0xfe49('0x1f')]?_[_0xfe49('0x20')](_0xae2c9a[_0xfe49('0x1f')],function(_0x48ff5b){return{'model':db[_0x48ff5b[_0xfe49('0x21')]],'as':_0x48ff5b['as'],'attributes':_0x48ff5b['attributes'],'include':_0x48ff5b['include']?_[_0xfe49('0x20')](_0x48ff5b[_0xfe49('0x1f')],function(_0x348187){return{'model':db[_0x348187[_0xfe49('0x21')]],'as':_0x348187['as'],'attributes':_0x348187[_0xfe49('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45cec7){logger[_0xfe49('0x11')](_0xfe49('0x26'),_0x3cec36);logger[_0xfe49('0x23')]('ShowSmsQueue',_0x3cec36,JSON[_0xfe49('0x14')](_0x45cec7));_0x266d1e(_0x45cec7);})['catch'](function(_0x5e5826){logger[_0xfe49('0x15')]('ShowSmsQueue',_0x5e5826[_0xfe49('0x17')],_0x3cec36);_0x5c4c45(_0x2be5a1[_0xfe49('0x15')](0x1f4,_0x5e5826['message']));});});};
\ No newline at end of file
index 8e66990..bfe9708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53f9=['remove','update','emit','removeListener','register','smsQueue:','save'];(function(_0x2d3836,_0x5b8daa){var _0x1e2361=function(_0xe452c5){while(--_0xe452c5){_0x2d3836['push'](_0x2d3836['shift']());}};_0x1e2361(++_0x5b8daa);}(_0x53f9,0x18e));var _0x953f=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x53f9[_0x2235bf];return _0x4c3a64;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x953f('0x0'),_0x953f('0x1'),_0x953f('0x2')];function createListener(_0x44e9ac,_0x4c814c){return function(_0x13fa98){_0x4c814c[_0x953f('0x3')](_0x44e9ac,_0x13fa98);};}function removeListener(_0xa57ee6,_0x3dd6b6){return function(){SmsQueueEvents[_0x953f('0x4')](_0xa57ee6,_0x3dd6b6);};}exports[_0x953f('0x5')]=function(_0x56af2f){for(var _0x40c9b4=0x0,_0x573cc0=events['length'];_0x40c9b4<_0x573cc0;_0x40c9b4++){var _0x2c9df2=events[_0x40c9b4];var _0x2e8838=createListener(_0x953f('0x6')+_0x2c9df2,_0x56af2f);SmsQueueEvents['on'](_0x2c9df2,_0x2e8838);}};
\ No newline at end of file
+var _0x0ff1=['remove','update','emit','removeListener','register','length','./smsQueue.events','save'];(function(_0x2deccd,_0x91a2b){var _0x1927bc=function(_0x3f69b4){while(--_0x3f69b4){_0x2deccd['push'](_0x2deccd['shift']());}};_0x1927bc(++_0x91a2b);}(_0x0ff1,0xa6));var _0x10ff=function(_0x2e913b,_0x4b7071){_0x2e913b=_0x2e913b-0x0;var _0x173899=_0x0ff1[_0x2e913b];return _0x173899;};'use strict';var SmsQueueEvents=require(_0x10ff('0x0'));var events=[_0x10ff('0x1'),_0x10ff('0x2'),_0x10ff('0x3')];function createListener(_0x1bbfcb,_0xe4ced2){return function(_0x5008a5){_0xe4ced2[_0x10ff('0x4')](_0x1bbfcb,_0x5008a5);};}function removeListener(_0x5e4d78,_0x207e3a){return function(){SmsQueueEvents[_0x10ff('0x5')](_0x5e4d78,_0x207e3a);};}exports[_0x10ff('0x6')]=function(_0x2ede90){for(var _0x424a9c=0x0,_0x45051c=events[_0x10ff('0x7')];_0x424a9c<_0x45051c;_0x424a9c++){var _0x304471=events[_0x424a9c];var _0x5bfcbc=createListener('smsQueue:'+_0x304471,_0x2ede90);SmsQueueEvents['on'](_0x304471,_0x5bfcbc);}};
\ No newline at end of file
index 7d87e17..06d6e18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf228=['create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','isAuthenticated','describe','/:id','show','post'];(function(_0x41b0a8,_0x1b05cc){var _0x3a83d4=function(_0x3d1011){while(--_0x3d1011){_0x41b0a8['push'](_0x41b0a8['shift']());}};_0x3a83d4(++_0x1b05cc);}(_0xf228,0x1a9));var _0x8f22=function(_0x6533fc,_0x3a166c){_0x6533fc=_0x6533fc-0x0;var _0x41241d=_0xf228[_0x6533fc];return _0x41241d;};'use strict';var multer=require(_0x8f22('0x0'));var util=require(_0x8f22('0x1'));var path=require('path');var timeout=require(_0x8f22('0x2'));var express=require(_0x8f22('0x3'));var router=express[_0x8f22('0x4')]();var fs_extra=require(_0x8f22('0x5'));var auth=require(_0x8f22('0x6'));var interaction=require(_0x8f22('0x7'));var config=require('../../config/environment');var controller=require('./smsQueueReport.controller');router[_0x8f22('0x8')]('/',auth['isAuthenticated'](),controller[_0x8f22('0x9')]);router[_0x8f22('0x8')]('/describe',auth[_0x8f22('0xa')](),controller[_0x8f22('0xb')]);router['get'](_0x8f22('0xc'),auth[_0x8f22('0xa')](),controller[_0x8f22('0xd')]);router[_0x8f22('0xe')]('/',auth[_0x8f22('0xa')](),controller[_0x8f22('0xf')]);router[_0x8f22('0x10')](_0x8f22('0xc'),auth['isAuthenticated'](),controller[_0x8f22('0x11')]);router[_0x8f22('0x12')](_0x8f22('0xc'),auth['isAuthenticated'](),controller[_0x8f22('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xc4f5=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','util','path','connect-timeout'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0xc4f5,0xa5));var _0x5c4f=function(_0x524b2a,_0x13e281){_0x524b2a=_0x524b2a-0x0;var _0x176cc5=_0xc4f5[_0x524b2a];return _0x176cc5;};'use strict';var multer=require('multer');var util=require(_0x5c4f('0x0'));var path=require(_0x5c4f('0x1'));var timeout=require(_0x5c4f('0x2'));var express=require('express');var router=express[_0x5c4f('0x3')]();var fs_extra=require(_0x5c4f('0x4'));var auth=require(_0x5c4f('0x5'));var interaction=require(_0x5c4f('0x6'));var config=require(_0x5c4f('0x7'));var controller=require('./smsQueueReport.controller');router[_0x5c4f('0x8')]('/',auth[_0x5c4f('0x9')](),controller[_0x5c4f('0xa')]);router[_0x5c4f('0x8')](_0x5c4f('0xb'),auth['isAuthenticated'](),controller[_0x5c4f('0xc')]);router['get'](_0x5c4f('0xd'),auth['isAuthenticated'](),controller[_0x5c4f('0xe')]);router[_0x5c4f('0xf')]('/',auth[_0x5c4f('0x9')](),controller[_0x5c4f('0x10')]);router[_0x5c4f('0x11')](_0x5c4f('0xd'),auth[_0x5c4f('0x9')](),controller['update']);router[_0x5c4f('0x12')](_0x5c4f('0xd'),auth['isAuthenticated'](),controller[_0x5c4f('0x13')]);module[_0x5c4f('0x14')]=router;
\ No newline at end of file
index e8d30bd..2baa53e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a06=['STRING','DATE','exports'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x3a06,0x71));var _0x63a0=function(_0x2a8674,_0x313563){_0x2a8674=_0x2a8674-0x0;var _0x35aaff=_0x3a06[_0x2a8674];return _0x35aaff;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x63a0('0x0')]={'uniqueid':{'type':Sequelize[_0x63a0('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x63a0('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x63a0('0x2')]},'exitAt':{'type':Sequelize[_0x63a0('0x2')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x576b=['DATE','STRING'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x576b,0x1d9));var _0xb576=function(_0x26f96d,_0x2bc3d2){_0x26f96d=_0x26f96d-0x0;var _0x52c0f7=_0x576b[_0x26f96d];return _0x52c0f7;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xb576('0x0')],'allowNull':![]},'from':{'type':Sequelize[_0xb576('0x0')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xb576('0x1')]},'acceptAt':{'type':Sequelize[_0xb576('0x1')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xb576('0x0')]}};
\ No newline at end of file
index 655fb72..e9886e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8ab=['desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','map','rawAttributes','fieldName','key','query','keys','filters','model','attributes','fields','length','nolimit','sort','where','pick','merge','type','VIRTUAL','SmsQueueReport','include','findAll','rows','catch','show','params','intersection','includeAll','options','find','body','update','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce'];(function(_0x21a9cf,_0x51f954){var _0x5d4ba7=function(_0x18d186){while(--_0x18d186){_0x21a9cf['push'](_0x21a9cf['shift']());}};_0x5d4ba7(++_0x51f954);}(_0xa8ab,0x1a3));var _0xba8a=function(_0xe2da76,_0x3f0a96){_0xe2da76=_0xe2da76-0x0;var _0x5d603f=_0xa8ab[_0xe2da76];return _0x5d603f;};'use strict';var emlformat=require(_0xba8a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xba8a('0x1'));var rp=require(_0xba8a('0x2'));var moment=require(_0xba8a('0x3'));var BPromise=require(_0xba8a('0x4'));var Mustache=require('mustache');var util=require(_0xba8a('0x5'));var path=require(_0xba8a('0x6'));var sox=require(_0xba8a('0x7'));var csv=require(_0xba8a('0x8'));var ejs=require(_0xba8a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xba8a('0xa'));var squel=require(_0xba8a('0xb'));var crypto=require('crypto');var jsforce=require(_0xba8a('0xc'));var deskjs=require(_0xba8a('0xd'));var toCsv=require(_0xba8a('0x8'));var querystring=require(_0xba8a('0xe'));var Papa=require(_0xba8a('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xba8a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xba8a('0x11'));var logger=require(_0xba8a('0x12'))(_0xba8a('0x13'));var utils=require(_0xba8a('0x14'));var config=require(_0xba8a('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xba8a('0x16'))['db'];function respondWithStatusCode(_0x5d7fee,_0x986806){_0x986806=_0x986806||0xcc;return function(_0x3209f9){if(_0x3209f9){return _0x5d7fee['sendStatus'](_0x986806);}return _0x5d7fee[_0xba8a('0x17')](_0x986806)[_0xba8a('0x18')]();};}function respondWithResult(_0x5e8e9b,_0x82fb86){_0x82fb86=_0x82fb86||0xc8;return function(_0x353228){if(_0x353228){return _0x5e8e9b[_0xba8a('0x17')](_0x82fb86)[_0xba8a('0x19')](_0x353228);}};}function respondWithFilteredResult(_0x238571,_0x37068d){return function(_0x1085ad){if(_0x1085ad){var _0x8cf62d=typeof _0x37068d[_0xba8a('0x1a')]===_0xba8a('0x1b')&&typeof _0x37068d['limit']===_0xba8a('0x1b');var _0xedf5e8=_0x1085ad[_0xba8a('0x1c')];var _0x218639=_0x8cf62d?0x0:_0x37068d['offset'];var _0x50d9f1=_0x8cf62d?_0x1085ad[_0xba8a('0x1c')]:_0x37068d['offset']+_0x37068d[_0xba8a('0x1d')];var _0x815eb8;if(_0x50d9f1>=_0xedf5e8){_0x50d9f1=_0xedf5e8;_0x815eb8=0xc8;}else{_0x815eb8=0xce;}_0x238571['status'](_0x815eb8);return _0x238571[_0xba8a('0x1e')](_0xba8a('0x1f'),_0x218639+'-'+_0x50d9f1+'/'+_0xedf5e8)[_0xba8a('0x19')](_0x1085ad);}return null;};}function patchUpdates(_0x198606){return function(_0x2572de){try{jsonpatch[_0xba8a('0x20')](_0x2572de,_0x198606,!![]);}catch(_0x3b10fb){return BPromise['reject'](_0x3b10fb);}return _0x2572de[_0xba8a('0x21')]();};}function saveUpdates(_0x141e7b,_0x1684c9){return function(_0x27c1f5){if(_0x27c1f5){return _0x27c1f5['update'](_0x141e7b)[_0xba8a('0x22')](function(_0x4e2f8a){return _0x4e2f8a;});}return null;};}function removeEntity(_0x3b7e57,_0xdf29b5){return function(_0xfcc8){if(_0xfcc8){return _0xfcc8[_0xba8a('0x23')]()[_0xba8a('0x22')](function(){_0x3b7e57[_0xba8a('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b304f,_0x54c7bd){return function(_0xff63d1){if(!_0xff63d1){_0x2b304f[_0xba8a('0x24')](0x194);}return _0xff63d1;};}function handleError(_0x288991,_0x39813c){_0x39813c=_0x39813c||0x1f4;return function(_0x1abc4a){logger[_0xba8a('0x25')](_0x1abc4a[_0xba8a('0x26')]);if(_0x1abc4a[_0xba8a('0x27')]){delete _0x1abc4a[_0xba8a('0x27')];}_0x288991['status'](_0x39813c)['send'](_0x1abc4a);};}exports['index']=function(_0x58c282,_0x3197dd){var _0x31c1b2={},_0x5b2c2b={},_0x112f13={'count':0x0,'rows':[]};var _0x3bfbf0=_[_0xba8a('0x28')](db['SmsQueueReport'][_0xba8a('0x29')],function(_0x59471a){return{'name':_0x59471a[_0xba8a('0x2a')],'type':_0x59471a['type'][_0xba8a('0x2b')]};});_0x5b2c2b['model']=_[_0xba8a('0x28')](_0x3bfbf0,_0xba8a('0x27'));_0x5b2c2b[_0xba8a('0x2c')]=_[_0xba8a('0x2d')](_0x58c282[_0xba8a('0x2c')]);_0x5b2c2b[_0xba8a('0x2e')]=_['intersection'](_0x5b2c2b[_0xba8a('0x2f')],_0x5b2c2b[_0xba8a('0x2c')]);_0x31c1b2[_0xba8a('0x30')]=_['intersection'](_0x5b2c2b[_0xba8a('0x2f')],qs[_0xba8a('0x31')](_0x58c282[_0xba8a('0x2c')]['fields']));_0x31c1b2[_0xba8a('0x30')]=_0x31c1b2['attributes'][_0xba8a('0x32')]?_0x31c1b2['attributes']:_0x5b2c2b[_0xba8a('0x2f')];if(!_0x58c282['query']['hasOwnProperty'](_0xba8a('0x33'))){_0x31c1b2[_0xba8a('0x1d')]=qs[_0xba8a('0x1d')](_0x58c282[_0xba8a('0x2c')][_0xba8a('0x1d')]);_0x31c1b2[_0xba8a('0x1a')]=qs[_0xba8a('0x1a')](_0x58c282[_0xba8a('0x2c')][_0xba8a('0x1a')]);}_0x31c1b2['order']=qs[_0xba8a('0x34')](_0x58c282[_0xba8a('0x2c')][_0xba8a('0x34')]);_0x31c1b2[_0xba8a('0x35')]=qs[_0xba8a('0x2e')](_[_0xba8a('0x36')](_0x58c282[_0xba8a('0x2c')],_0x5b2c2b['filters']),_0x3bfbf0);if(_0x58c282[_0xba8a('0x2c')]['filter']){_0x31c1b2[_0xba8a('0x35')]=_[_0xba8a('0x37')](_0x31c1b2[_0xba8a('0x35')],{'$or':_[_0xba8a('0x28')](_0x3bfbf0,function(_0x5d0a95){if(_0x5d0a95[_0xba8a('0x38')]!==_0xba8a('0x39')){var _0x268925={};_0x268925[_0x5d0a95[_0xba8a('0x27')]]={'$like':'%'+_0x58c282[_0xba8a('0x2c')]['filter']+'%'};return _0x268925;}})});}_0x31c1b2=_[_0xba8a('0x37')]({},_0x31c1b2,_0x58c282['options']);var _0x219ce5={'where':_0x31c1b2['where']};return db[_0xba8a('0x3a')][_0xba8a('0x1c')](_0x219ce5)[_0xba8a('0x22')](function(_0x4bfc6b){_0x112f13['count']=_0x4bfc6b;if(_0x58c282[_0xba8a('0x2c')]['includeAll']){_0x31c1b2[_0xba8a('0x3b')]=[{'all':!![]}];}return db[_0xba8a('0x3a')][_0xba8a('0x3c')](_0x31c1b2);})[_0xba8a('0x22')](function(_0x56f1ce){_0x112f13[_0xba8a('0x3d')]=_0x56f1ce;return _0x112f13;})['then'](respondWithFilteredResult(_0x3197dd,_0x31c1b2))[_0xba8a('0x3e')](handleError(_0x3197dd,null));};exports[_0xba8a('0x3f')]=function(_0x3fbb4a,_0x3c84c0){var _0x3a4068={'raw':!![],'where':{'id':_0x3fbb4a[_0xba8a('0x40')]['id']}},_0x2e409f={};_0x2e409f[_0xba8a('0x2f')]=_[_0xba8a('0x2d')](db[_0xba8a('0x3a')][_0xba8a('0x29')]);_0x2e409f['query']=_[_0xba8a('0x2d')](_0x3fbb4a['query']);_0x2e409f[_0xba8a('0x2e')]=_[_0xba8a('0x41')](_0x2e409f[_0xba8a('0x2f')],_0x2e409f[_0xba8a('0x2c')]);_0x3a4068[_0xba8a('0x30')]=_[_0xba8a('0x41')](_0x2e409f[_0xba8a('0x2f')],qs[_0xba8a('0x31')](_0x3fbb4a[_0xba8a('0x2c')][_0xba8a('0x31')]));_0x3a4068[_0xba8a('0x30')]=_0x3a4068['attributes']['length']?_0x3a4068[_0xba8a('0x30')]:_0x2e409f[_0xba8a('0x2f')];if(_0x3fbb4a['query'][_0xba8a('0x42')]){_0x3a4068['include']=[{'all':!![]}];}_0x3a4068=_[_0xba8a('0x37')]({},_0x3a4068,_0x3fbb4a[_0xba8a('0x43')]);return db[_0xba8a('0x3a')][_0xba8a('0x44')](_0x3a4068)[_0xba8a('0x22')](handleEntityNotFound(_0x3c84c0,null))['then'](respondWithResult(_0x3c84c0,null))[_0xba8a('0x3e')](handleError(_0x3c84c0,null));};exports['create']=function(_0x21d73a,_0x47682f){return db['SmsQueueReport']['create'](_0x21d73a[_0xba8a('0x45')],{})[_0xba8a('0x22')](respondWithResult(_0x47682f,0xc9))['catch'](handleError(_0x47682f,null));};exports[_0xba8a('0x46')]=function(_0x5a5a69,_0x1aff3e){if(_0x5a5a69[_0xba8a('0x45')]['id']){delete _0x5a5a69[_0xba8a('0x45')]['id'];}return db[_0xba8a('0x3a')][_0xba8a('0x44')]({'where':{'id':_0x5a5a69[_0xba8a('0x40')]['id']}})[_0xba8a('0x22')](handleEntityNotFound(_0x1aff3e,null))[_0xba8a('0x22')](saveUpdates(_0x5a5a69['body'],null))[_0xba8a('0x22')](respondWithResult(_0x1aff3e,null))['catch'](handleError(_0x1aff3e,null));};exports[_0xba8a('0x23')]=function(_0x48c576,_0x238877){return db[_0xba8a('0x3a')][_0xba8a('0x44')]({'where':{'id':_0x48c576[_0xba8a('0x40')]['id']}})[_0xba8a('0x22')](handleEntityNotFound(_0x238877,null))[_0xba8a('0x22')](removeEntity(_0x238877,null))[_0xba8a('0x3e')](handleError(_0x238877,null));};exports[_0xba8a('0x47')]=function(_0x2068db,_0x527e4e){return db[_0xba8a('0x3a')][_0xba8a('0x47')]()[_0xba8a('0x22')](respondWithResult(_0x527e4e,null))[_0xba8a('0x3e')](handleError(_0x527e4e,null));};
\ No newline at end of file
+var _0x26a6=['Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','options','includeAll','SmsQueueReport','findAll','rows','show','params','keys','rawAttributes','include','merge','find','catch','create','body','describe','rimraf','request-promise','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set'];(function(_0x3430aa,_0x57cd92){var _0x2ac5c=function(_0x3068dd){while(--_0x3068dd){_0x3430aa['push'](_0x3430aa['shift']());}};_0x2ac5c(++_0x57cd92);}(_0x26a6,0x194));var _0x626a=function(_0x556631,_0x22a74c){_0x556631=_0x556631-0x0;var _0x3e10c6=_0x26a6[_0x556631];return _0x3e10c6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x626a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x626a('0x1'));var moment=require('moment');var BPromise=require(_0x626a('0x2'));var Mustache=require(_0x626a('0x3'));var util=require(_0x626a('0x4'));var path=require(_0x626a('0x5'));var sox=require(_0x626a('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x626a('0x7'));var squel=require(_0x626a('0x8'));var crypto=require('crypto');var jsforce=require(_0x626a('0x9'));var deskjs=require(_0x626a('0xa'));var toCsv=require('to-csv');var querystring=require(_0x626a('0xb'));var Papa=require(_0x626a('0xc'));var Redis=require(_0x626a('0xd'));var authService=require(_0x626a('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x626a('0xf'));var hardwareService=require(_0x626a('0x10'));var logger=require('../../config/logger')(_0x626a('0x11'));var utils=require(_0x626a('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x626a('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x57accd,_0x17e346){_0x17e346=_0x17e346||0xcc;return function(_0x47bd31){if(_0x47bd31){return _0x57accd[_0x626a('0x14')](_0x17e346);}return _0x57accd['status'](_0x17e346)['end']();};}function respondWithResult(_0x50474e,_0x2cd06a){_0x2cd06a=_0x2cd06a||0xc8;return function(_0xd131b1){if(_0xd131b1){return _0x50474e[_0x626a('0x15')](_0x2cd06a)[_0x626a('0x16')](_0xd131b1);}};}function respondWithFilteredResult(_0x2dcfd2,_0x4aad37){return function(_0x44d249){if(_0x44d249){var _0x4a547a=typeof _0x4aad37['offset']===_0x626a('0x17')&&typeof _0x4aad37[_0x626a('0x18')]===_0x626a('0x17');var _0x2fe0ec=_0x44d249['count'];var _0x11f3bd=_0x4a547a?0x0:_0x4aad37['offset'];var _0x33974c=_0x4a547a?_0x44d249[_0x626a('0x19')]:_0x4aad37[_0x626a('0x1a')]+_0x4aad37[_0x626a('0x18')];var _0x5284d9;if(_0x33974c>=_0x2fe0ec){_0x33974c=_0x2fe0ec;_0x5284d9=0xc8;}else{_0x5284d9=0xce;}_0x2dcfd2[_0x626a('0x15')](_0x5284d9);return _0x2dcfd2[_0x626a('0x1b')](_0x626a('0x1c'),_0x11f3bd+'-'+_0x33974c+'/'+_0x2fe0ec)['json'](_0x44d249);}return null;};}function patchUpdates(_0x5a80ca){return function(_0x18fc85){try{jsonpatch['apply'](_0x18fc85,_0x5a80ca,!![]);}catch(_0x45db56){return BPromise[_0x626a('0x1d')](_0x45db56);}return _0x18fc85[_0x626a('0x1e')]();};}function saveUpdates(_0x37f347,_0x3aafd8){return function(_0x2f0f1e){if(_0x2f0f1e){return _0x2f0f1e[_0x626a('0x1f')](_0x37f347)[_0x626a('0x20')](function(_0x4ee49e){return _0x4ee49e;});}return null;};}function removeEntity(_0x551cc6,_0x10ec7e){return function(_0x57cd3a){if(_0x57cd3a){return _0x57cd3a[_0x626a('0x21')]()['then'](function(){_0x551cc6[_0x626a('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44575f,_0x23e24f){return function(_0x5388ef){if(!_0x5388ef){_0x44575f[_0x626a('0x14')](0x194);}return _0x5388ef;};}function handleError(_0x121104,_0x151f9e){_0x151f9e=_0x151f9e||0x1f4;return function(_0x9a03dd){logger[_0x626a('0x22')](_0x9a03dd[_0x626a('0x23')]);if(_0x9a03dd[_0x626a('0x24')]){delete _0x9a03dd['name'];}_0x121104[_0x626a('0x15')](_0x151f9e)[_0x626a('0x25')](_0x9a03dd);};}exports['index']=function(_0x2e2530,_0x259694){var _0x2a0205={},_0x35c68f={},_0x3b44c5={'count':0x0,'rows':[]};var _0x2dda0b=_[_0x626a('0x26')](db['SmsQueueReport']['rawAttributes'],function(_0x78763f){return{'name':_0x78763f[_0x626a('0x27')],'type':_0x78763f[_0x626a('0x28')][_0x626a('0x29')]};});_0x35c68f[_0x626a('0x2a')]=_[_0x626a('0x26')](_0x2dda0b,'name');_0x35c68f['query']=_['keys'](_0x2e2530[_0x626a('0x2b')]);_0x35c68f[_0x626a('0x2c')]=_['intersection'](_0x35c68f['model'],_0x35c68f[_0x626a('0x2b')]);_0x2a0205[_0x626a('0x2d')]=_[_0x626a('0x2e')](_0x35c68f[_0x626a('0x2a')],qs[_0x626a('0x2f')](_0x2e2530[_0x626a('0x2b')][_0x626a('0x2f')]));_0x2a0205['attributes']=_0x2a0205['attributes'][_0x626a('0x30')]?_0x2a0205[_0x626a('0x2d')]:_0x35c68f['model'];if(!_0x2e2530[_0x626a('0x2b')][_0x626a('0x31')]('nolimit')){_0x2a0205[_0x626a('0x18')]=qs[_0x626a('0x18')](_0x2e2530['query']['limit']);_0x2a0205[_0x626a('0x1a')]=qs[_0x626a('0x1a')](_0x2e2530[_0x626a('0x2b')]['offset']);}_0x2a0205[_0x626a('0x32')]=qs['sort'](_0x2e2530[_0x626a('0x2b')][_0x626a('0x33')]);_0x2a0205[_0x626a('0x34')]=qs['filters'](_[_0x626a('0x35')](_0x2e2530[_0x626a('0x2b')],_0x35c68f[_0x626a('0x2c')]),_0x2dda0b);if(_0x2e2530[_0x626a('0x2b')]['filter']){_0x2a0205[_0x626a('0x34')]=_['merge'](_0x2a0205[_0x626a('0x34')],{'$or':_[_0x626a('0x26')](_0x2dda0b,function(_0xa5344){if(_0xa5344[_0x626a('0x28')]!==_0x626a('0x36')){var _0x5215db={};_0x5215db[_0xa5344[_0x626a('0x24')]]={'$like':'%'+_0x2e2530[_0x626a('0x2b')][_0x626a('0x37')]+'%'};return _0x5215db;}})});}_0x2a0205=_['merge']({},_0x2a0205,_0x2e2530[_0x626a('0x38')]);var _0x4ca71a={'where':_0x2a0205[_0x626a('0x34')]};return db['SmsQueueReport'][_0x626a('0x19')](_0x4ca71a)[_0x626a('0x20')](function(_0x365187){_0x3b44c5[_0x626a('0x19')]=_0x365187;if(_0x2e2530['query'][_0x626a('0x39')]){_0x2a0205['include']=[{'all':!![]}];}return db[_0x626a('0x3a')][_0x626a('0x3b')](_0x2a0205);})[_0x626a('0x20')](function(_0x17603a){_0x3b44c5[_0x626a('0x3c')]=_0x17603a;return _0x3b44c5;})['then'](respondWithFilteredResult(_0x259694,_0x2a0205))['catch'](handleError(_0x259694,null));};exports[_0x626a('0x3d')]=function(_0x53b2ac,_0x4e0add){var _0x4effbb={'raw':!![],'where':{'id':_0x53b2ac[_0x626a('0x3e')]['id']}},_0x59033d={};_0x59033d['model']=_[_0x626a('0x3f')](db['SmsQueueReport'][_0x626a('0x40')]);_0x59033d[_0x626a('0x2b')]=_[_0x626a('0x3f')](_0x53b2ac[_0x626a('0x2b')]);_0x59033d[_0x626a('0x2c')]=_[_0x626a('0x2e')](_0x59033d[_0x626a('0x2a')],_0x59033d[_0x626a('0x2b')]);_0x4effbb[_0x626a('0x2d')]=_[_0x626a('0x2e')](_0x59033d[_0x626a('0x2a')],qs[_0x626a('0x2f')](_0x53b2ac['query'][_0x626a('0x2f')]));_0x4effbb[_0x626a('0x2d')]=_0x4effbb['attributes'][_0x626a('0x30')]?_0x4effbb['attributes']:_0x59033d[_0x626a('0x2a')];if(_0x53b2ac[_0x626a('0x2b')][_0x626a('0x39')]){_0x4effbb[_0x626a('0x41')]=[{'all':!![]}];}_0x4effbb=_[_0x626a('0x42')]({},_0x4effbb,_0x53b2ac['options']);return db[_0x626a('0x3a')][_0x626a('0x43')](_0x4effbb)[_0x626a('0x20')](handleEntityNotFound(_0x4e0add,null))[_0x626a('0x20')](respondWithResult(_0x4e0add,null))[_0x626a('0x44')](handleError(_0x4e0add,null));};exports[_0x626a('0x45')]=function(_0x245da4,_0x4894f3){return db[_0x626a('0x3a')]['create'](_0x245da4[_0x626a('0x46')],{})[_0x626a('0x20')](respondWithResult(_0x4894f3,0xc9))[_0x626a('0x44')](handleError(_0x4894f3,null));};exports[_0x626a('0x1f')]=function(_0x11f1ba,_0x175e66){if(_0x11f1ba[_0x626a('0x46')]['id']){delete _0x11f1ba[_0x626a('0x46')]['id'];}return db[_0x626a('0x3a')][_0x626a('0x43')]({'where':{'id':_0x11f1ba[_0x626a('0x3e')]['id']}})[_0x626a('0x20')](handleEntityNotFound(_0x175e66,null))['then'](saveUpdates(_0x11f1ba[_0x626a('0x46')],null))[_0x626a('0x20')](respondWithResult(_0x175e66,null))[_0x626a('0x44')](handleError(_0x175e66,null));};exports[_0x626a('0x21')]=function(_0x5411dc,_0x4c8359){return db['SmsQueueReport'][_0x626a('0x43')]({'where':{'id':_0x5411dc[_0x626a('0x3e')]['id']}})[_0x626a('0x20')](handleEntityNotFound(_0x4c8359,null))[_0x626a('0x20')](removeEntity(_0x4c8359,null))[_0x626a('0x44')](handleError(_0x4c8359,null));};exports[_0x626a('0x47')]=function(_0x482665,_0x2cb046){return db['SmsQueueReport'][_0x626a('0x47')]()['then'](respondWithResult(_0x2cb046,null))[_0x626a('0x44')](handleError(_0x2cb046,null));};
\ No newline at end of file
index 54653a6..ee97223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','SmsQueueReport','report_sms_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x3dd06d,_0x9e863c){var _0x3a22df=function(_0x37f47d){while(--_0x37f47d){_0x3dd06d['push'](_0x3dd06d['shift']());}};_0x3a22df(++_0x9e863c);}(_0xbaf0,0x12a));var _0x0baf=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xbaf0[_0x19e35c];return _0x3e1fe8;};'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':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaf0=['define','SmsQueueReport','report_sms_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x5e1dda,_0x35faa4){var _0x5395d1=function(_0x2ff431){while(--_0x2ff431){_0x5e1dda['push'](_0x5e1dda['shift']());}};_0x5395d1(++_0x35faa4);}(_0xbaf0,0x12a));var _0x0baf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbaf0[_0x14add3];return _0x4a174f;};'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':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 4d11690..fddff4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04e1=['debug','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSmsQueueReport','SmsQueueReport','body','options','raw','update','where','attributes','limit','UpdateSmsQueueReport'];(function(_0x355002,_0x2a9fb6){var _0x3e9b7c=function(_0x566d55){while(--_0x566d55){_0x355002['push'](_0x355002['shift']());}};_0x3e9b7c(++_0x2a9fb6);}(_0x04e1,0x1cf));var _0x104e=function(_0x1ed9e1,_0x2e8361){_0x1ed9e1=_0x1ed9e1-0x0;var _0x5e04f7=_0x04e1[_0x1ed9e1];return _0x5e04f7;};'use strict';var _=require('lodash');var util=require(_0x104e('0x0'));var moment=require(_0x104e('0x1'));var BPromise=require(_0x104e('0x2'));var rs=require(_0x104e('0x3'));var fs=require('fs');var Redis=require(_0x104e('0x4'));var db=require(_0x104e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x104e('0x6'))('rpc');var config=require(_0x104e('0x7'));var jayson=require(_0x104e('0x8'));var client=jayson[_0x104e('0x9')][_0x104e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a5f2e,_0x1f7fe8,_0x17ca38){return new BPromise(function(_0x927d88,_0xf115cd){return client[_0x104e('0xb')](_0x3a5f2e,_0x17ca38)[_0x104e('0xc')](function(_0x378c88){logger[_0x104e('0xd')](_0x104e('0xe'),_0x1f7fe8,_0x104e('0xf'));logger['debug'](_0x104e('0x10'),_0x1f7fe8,_0x104e('0xf'),JSON[_0x104e('0x11')](_0x378c88));if(_0x378c88[_0x104e('0x12')]){if(_0x378c88[_0x104e('0x12')]['code']===0x1f4){logger[_0x104e('0x12')](_0x104e('0xe'),_0x1f7fe8,_0x378c88['error'][_0x104e('0x13')]);return _0xf115cd(_0x378c88[_0x104e('0x12')]['message']);}logger[_0x104e('0x12')](_0x104e('0xe'),_0x1f7fe8,_0x378c88[_0x104e('0x12')][_0x104e('0x13')]);return _0x927d88(_0x378c88[_0x104e('0x12')][_0x104e('0x13')]);}else{logger['info'](_0x104e('0xe'),_0x1f7fe8,_0x104e('0xf'));_0x927d88(_0x378c88[_0x104e('0x14')]['message']);}})[_0x104e('0x15')](function(_0x1aab6c){logger['error'](_0x104e('0xe'),_0x1f7fe8,_0x1aab6c);_0xf115cd(_0x1aab6c);});});}exports[_0x104e('0x16')]=function(_0x20065b){var _0x537344=this;return new Promise(function(_0x5cecd8,_0x313e92){return db[_0x104e('0x17')]['create'](_0x20065b[_0x104e('0x18')],{'raw':_0x20065b[_0x104e('0x19')]?_0x20065b[_0x104e('0x19')][_0x104e('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x414061){logger[_0x104e('0xd')]('CreateSmsQueueReport',_0x20065b);logger['debug'](_0x104e('0x16'),_0x20065b,JSON[_0x104e('0x11')](_0x414061));_0x5cecd8(_0x414061);})[_0x104e('0x15')](function(_0x3a2369){logger[_0x104e('0x12')](_0x104e('0x16'),_0x3a2369['message'],_0x20065b);_0x313e92(_0x537344[_0x104e('0x12')](0x1f4,_0x3a2369[_0x104e('0x13')]));});});};exports['UpdateSmsQueueReport']=function(_0x2dc512){var _0x3bc289=this;return new Promise(function(_0x57fcb7,_0x2aedef){return db[_0x104e('0x17')][_0x104e('0x1b')](_0x2dc512[_0x104e('0x18')],{'raw':_0x2dc512[_0x104e('0x19')]?_0x2dc512[_0x104e('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2dc512[_0x104e('0x19')]?_0x2dc512['options'][_0x104e('0x1c')]||null:null,'attributes':_0x2dc512['options']?_0x2dc512['options'][_0x104e('0x1d')]||null:null,'limit':_0x2dc512[_0x104e('0x19')]?_0x2dc512[_0x104e('0x19')][_0x104e('0x1e')]||null:null})['then'](function(_0x4eb7a8){logger[_0x104e('0xd')](_0x104e('0x1f'),_0x2dc512);logger[_0x104e('0x20')]('UpdateSmsQueueReport',_0x2dc512,JSON[_0x104e('0x11')](_0x4eb7a8));_0x57fcb7(_0x4eb7a8);})[_0x104e('0x15')](function(_0x39cfee){logger[_0x104e('0x12')](_0x104e('0x1f'),_0x39cfee[_0x104e('0x13')],_0x2dc512);_0x2aedef(_0x3bc289[_0x104e('0x12')](0x1f4,_0x39cfee['message']));});});};
\ No newline at end of file
+var _0xbdb7=['lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','SmsQueueReport,\x20%s,\x20%s','message','info','result','catch','CreateSmsQueueReport','SmsQueueReport','create','options','raw','UpdateSmsQueueReport','update','where','limit'];(function(_0x5baed9,_0x409757){var _0x43aad3=function(_0x4e6713){while(--_0x4e6713){_0x5baed9['push'](_0x5baed9['shift']());}};_0x43aad3(++_0x409757);}(_0xbdb7,0xd2));var _0x7bdb=function(_0x5958d2,_0x550300){_0x5958d2=_0x5958d2-0x0;var _0x2a4809=_0xbdb7[_0x5958d2];return _0x2a4809;};'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('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7bdb('0x5'));var logger=require(_0x7bdb('0x6'))('rpc');var config=require(_0x7bdb('0x7'));var jayson=require(_0x7bdb('0x8'));var client=jayson[_0x7bdb('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xcc1442,_0x45818e,_0x4e7299){return new BPromise(function(_0x21e20d,_0x3c3b2e){return client['request'](_0xcc1442,_0x4e7299)[_0x7bdb('0xa')](function(_0x1edeb1){logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x45818e,'request\x20sent');logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x45818e,_0x7bdb('0xd'),JSON[_0x7bdb('0xe')](_0x1edeb1));if(_0x1edeb1['error']){if(_0x1edeb1[_0x7bdb('0xf')]['code']===0x1f4){logger[_0x7bdb('0xf')](_0x7bdb('0x10'),_0x45818e,_0x1edeb1[_0x7bdb('0xf')]['message']);return _0x3c3b2e(_0x1edeb1[_0x7bdb('0xf')]['message']);}logger[_0x7bdb('0xf')](_0x7bdb('0x10'),_0x45818e,_0x1edeb1[_0x7bdb('0xf')][_0x7bdb('0x11')]);return _0x21e20d(_0x1edeb1[_0x7bdb('0xf')][_0x7bdb('0x11')]);}else{logger[_0x7bdb('0x12')](_0x7bdb('0x10'),_0x45818e,_0x7bdb('0xd'));_0x21e20d(_0x1edeb1[_0x7bdb('0x13')][_0x7bdb('0x11')]);}})[_0x7bdb('0x14')](function(_0x10e29d){logger[_0x7bdb('0xf')](_0x7bdb('0x10'),_0x45818e,_0x10e29d);_0x3c3b2e(_0x10e29d);});});}exports[_0x7bdb('0x15')]=function(_0x53b4f9){var _0x47d64a=this;return new Promise(function(_0x52750e,_0x2e5621){return db[_0x7bdb('0x16')][_0x7bdb('0x17')](_0x53b4f9['body'],{'raw':_0x53b4f9['options']?_0x53b4f9[_0x7bdb('0x18')][_0x7bdb('0x19')]===undefined?!![]:![]:!![]})[_0x7bdb('0xa')](function(_0x3e4355){logger[_0x7bdb('0x12')](_0x7bdb('0x15'),_0x53b4f9);logger['debug'](_0x7bdb('0x15'),_0x53b4f9,JSON[_0x7bdb('0xe')](_0x3e4355));_0x52750e(_0x3e4355);})[_0x7bdb('0x14')](function(_0x4dd236){logger[_0x7bdb('0xf')]('CreateSmsQueueReport',_0x4dd236[_0x7bdb('0x11')],_0x53b4f9);_0x2e5621(_0x47d64a[_0x7bdb('0xf')](0x1f4,_0x4dd236[_0x7bdb('0x11')]));});});};exports[_0x7bdb('0x1a')]=function(_0x503b15){var _0x28b5db=this;return new Promise(function(_0x3f8d6d,_0x1ad9fc){return db[_0x7bdb('0x16')][_0x7bdb('0x1b')](_0x503b15['body'],{'raw':_0x503b15[_0x7bdb('0x18')]?_0x503b15[_0x7bdb('0x18')][_0x7bdb('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x503b15[_0x7bdb('0x18')]?_0x503b15['options'][_0x7bdb('0x1c')]||null:null,'attributes':_0x503b15[_0x7bdb('0x18')]?_0x503b15['options']['attributes']||null:null,'limit':_0x503b15['options']?_0x503b15[_0x7bdb('0x18')][_0x7bdb('0x1d')]||null:null})[_0x7bdb('0xa')](function(_0x24e274){logger['info'](_0x7bdb('0x1a'),_0x503b15);logger[_0x7bdb('0xb')](_0x7bdb('0x1a'),_0x503b15,JSON[_0x7bdb('0xe')](_0x24e274));_0x3f8d6d(_0x24e274);})[_0x7bdb('0x14')](function(_0xc45792){logger[_0x7bdb('0xf')]('UpdateSmsQueueReport',_0xc45792[_0x7bdb('0x11')],_0x503b15);_0x1ad9fc(_0x28b5db['error'](0x1f4,_0xc45792['message']));});});};
\ No newline at end of file
index de45234..ddfae5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b8f=['destroy','exports','util','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./smsTransferReport.controller','get','index','/describe','isAuthenticated','/:id','show','post','create','put'];(function(_0xfecbad,_0x5915f8){var _0x5e1806=function(_0x2a46ec){while(--_0x2a46ec){_0xfecbad['push'](_0xfecbad['shift']());}};_0x5e1806(++_0x5915f8);}(_0x6b8f,0x1bc));var _0xf6b8=function(_0x39b27f,_0x4afae9){_0x39b27f=_0x39b27f-0x0;var _0x3889c2=_0x6b8f[_0x39b27f];return _0x3889c2;};'use strict';var multer=require('multer');var util=require(_0xf6b8('0x0'));var path=require('path');var timeout=require(_0xf6b8('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf6b8('0x2'));var auth=require(_0xf6b8('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xf6b8('0x4'));var controller=require(_0xf6b8('0x5'));router[_0xf6b8('0x6')]('/',auth['isAuthenticated'](),controller[_0xf6b8('0x7')]);router[_0xf6b8('0x6')](_0xf6b8('0x8'),auth[_0xf6b8('0x9')](),controller['describe']);router['get'](_0xf6b8('0xa'),auth['isAuthenticated'](),controller[_0xf6b8('0xb')]);router[_0xf6b8('0xc')]('/',auth[_0xf6b8('0x9')](),controller[_0xf6b8('0xd')]);router[_0xf6b8('0xe')](_0xf6b8('0xa'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xf6b8('0xa'),auth[_0xf6b8('0x9')](),controller[_0xf6b8('0xf')]);module[_0xf6b8('0x10')]=router;
\ No newline at end of file
+var _0xe181=['/describe','isAuthenticated','describe','show','post','create','put','update','delete','/:id','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','index','get'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xe181,0x68));var _0x1e18=function(_0x51f5f7,_0x4e1492){_0x51f5f7=_0x51f5f7-0x0;var _0x6afaa=_0xe181[_0x51f5f7];return _0x6afaa;};'use strict';var multer=require(_0x1e18('0x0'));var util=require('util');var path=require(_0x1e18('0x1'));var timeout=require(_0x1e18('0x2'));var express=require(_0x1e18('0x3'));var router=express[_0x1e18('0x4')]();var fs_extra=require(_0x1e18('0x5'));var auth=require(_0x1e18('0x6'));var interaction=require(_0x1e18('0x7'));var config=require('../../config/environment');var controller=require(_0x1e18('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x1e18('0x9')]);router[_0x1e18('0xa')](_0x1e18('0xb'),auth[_0x1e18('0xc')](),controller[_0x1e18('0xd')]);router[_0x1e18('0xa')]('/:id',auth[_0x1e18('0xc')](),controller[_0x1e18('0xe')]);router[_0x1e18('0xf')]('/',auth[_0x1e18('0xc')](),controller[_0x1e18('0x10')]);router[_0x1e18('0x11')]('/:id',auth[_0x1e18('0xc')](),controller[_0x1e18('0x12')]);router[_0x1e18('0x13')](_0x1e18('0x14'),auth[_0x1e18('0xc')](),controller[_0x1e18('0x15')]);module[_0x1e18('0x16')]=router;
\ No newline at end of file
index 7b2160d..8e2308a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x186b9b,_0xd61a0c){var _0x3f9d65=function(_0x547988){while(--_0x547988){_0x186b9b['push'](_0x186b9b['shift']());}};_0x3f9d65(++_0xd61a0c);}(_0xf4eb,0xec));var _0xbf4e=function(_0xc03953,_0x4de6a3){_0xc03953=_0xc03953-0x0;var _0x3f275d=_0xf4eb[_0xc03953];return _0x3f275d;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
+var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x2401e3,_0x5b8c77){var _0x2f9381=function(_0x44aa77){while(--_0x44aa77){_0x2401e3['push'](_0x2401e3['shift']());}};_0x2f9381(++_0x5b8c77);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x2ace95,_0x186b37){_0x2ace95=_0x2ace95-0x0;var _0x35ecfa=_0xf3cd[_0x2ace95];return _0x35ecfa;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 780c19e..257e798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb4b=['create','body','params','describe','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','index','map','SmsTransferReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','rawAttributes','find'];(function(_0x4de184,_0x4d6f6a){var _0x18b63b=function(_0x331708){while(--_0x331708){_0x4de184['push'](_0x4de184['shift']());}};_0x18b63b(++_0x4d6f6a);}(_0xbb4b,0x1b4));var _0xbbb4=function(_0x582b72,_0x439510){_0x582b72=_0x582b72-0x0;var _0x197b03=_0xbb4b[_0x582b72];return _0x197b03;};'use strict';var emlformat=require(_0xbbb4('0x0'));var rimraf=require(_0xbbb4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbbb4('0x2'));var moment=require(_0xbbb4('0x3'));var BPromise=require(_0xbbb4('0x4'));var Mustache=require('mustache');var util=require(_0xbbb4('0x5'));var path=require(_0xbbb4('0x6'));var sox=require(_0xbbb4('0x7'));var csv=require(_0xbbb4('0x8'));var ejs=require(_0xbbb4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xbbb4('0xa'));var crypto=require(_0xbbb4('0xb'));var jsforce=require(_0xbbb4('0xc'));var deskjs=require(_0xbbb4('0xd'));var toCsv=require(_0xbbb4('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xbbb4('0xe'));var as=require(_0xbbb4('0xf'));var hardwareService=require(_0xbbb4('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0xbbb4('0x11'));var config=require(_0xbbb4('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xbbb4('0x13'))['db'];function respondWithStatusCode(_0x5b2d3c,_0x269653){_0x269653=_0x269653||0xcc;return function(_0x3ba519){if(_0x3ba519){return _0x5b2d3c[_0xbbb4('0x14')](_0x269653);}return _0x5b2d3c['status'](_0x269653)['end']();};}function respondWithResult(_0x404079,_0x13b7ea){_0x13b7ea=_0x13b7ea||0xc8;return function(_0x35fb35){if(_0x35fb35){return _0x404079['status'](_0x13b7ea)[_0xbbb4('0x15')](_0x35fb35);}};}function respondWithFilteredResult(_0x4948a6,_0x22c46a){return function(_0x206ca9){if(_0x206ca9){var _0x51a05a=typeof _0x22c46a[_0xbbb4('0x16')]===_0xbbb4('0x17')&&typeof _0x22c46a[_0xbbb4('0x18')]===_0xbbb4('0x17');var _0x54ae71=_0x206ca9[_0xbbb4('0x19')];var _0x284ead=_0x51a05a?0x0:_0x22c46a['offset'];var _0xf608f8=_0x51a05a?_0x206ca9['count']:_0x22c46a[_0xbbb4('0x16')]+_0x22c46a[_0xbbb4('0x18')];var _0x4cdf49;if(_0xf608f8>=_0x54ae71){_0xf608f8=_0x54ae71;_0x4cdf49=0xc8;}else{_0x4cdf49=0xce;}_0x4948a6[_0xbbb4('0x1a')](_0x4cdf49);return _0x4948a6[_0xbbb4('0x1b')](_0xbbb4('0x1c'),_0x284ead+'-'+_0xf608f8+'/'+_0x54ae71)[_0xbbb4('0x15')](_0x206ca9);}return null;};}function patchUpdates(_0x18e898){return function(_0x312acd){try{jsonpatch[_0xbbb4('0x1d')](_0x312acd,_0x18e898,!![]);}catch(_0x58f45b){return BPromise[_0xbbb4('0x1e')](_0x58f45b);}return _0x312acd['save']();};}function saveUpdates(_0x403053,_0x1bcc21){return function(_0x55597b){if(_0x55597b){return _0x55597b[_0xbbb4('0x1f')](_0x403053)[_0xbbb4('0x20')](function(_0x274bf2){return _0x274bf2;});}return null;};}function removeEntity(_0x3ff097,_0x250649){return function(_0x5554ba){if(_0x5554ba){return _0x5554ba[_0xbbb4('0x21')]()[_0xbbb4('0x20')](function(){_0x3ff097[_0xbbb4('0x1a')](0xcc)[_0xbbb4('0x22')]();});}};}function handleEntityNotFound(_0x255e1f,_0x1e39c8){return function(_0x38eafe){if(!_0x38eafe){_0x255e1f[_0xbbb4('0x14')](0x194);}return _0x38eafe;};}function handleError(_0x7f88c7,_0xc8f157){_0xc8f157=_0xc8f157||0x1f4;return function(_0x326cd4){logger[_0xbbb4('0x23')](_0x326cd4[_0xbbb4('0x24')]);if(_0x326cd4[_0xbbb4('0x25')]){delete _0x326cd4[_0xbbb4('0x25')];}_0x7f88c7['status'](_0xc8f157)['send'](_0x326cd4);};}exports[_0xbbb4('0x26')]=function(_0x21e629,_0x3cf3c1){var _0x1bda74={},_0x4a4557={},_0x136773={'count':0x0,'rows':[]};var _0x5c00b4=_[_0xbbb4('0x27')](db[_0xbbb4('0x28')]['rawAttributes'],function(_0x5765d5){return{'name':_0x5765d5[_0xbbb4('0x29')],'type':_0x5765d5[_0xbbb4('0x2a')][_0xbbb4('0x2b')]};});_0x4a4557[_0xbbb4('0x2c')]=_[_0xbbb4('0x27')](_0x5c00b4,'name');_0x4a4557[_0xbbb4('0x2d')]=_[_0xbbb4('0x2e')](_0x21e629[_0xbbb4('0x2d')]);_0x4a4557[_0xbbb4('0x2f')]=_[_0xbbb4('0x30')](_0x4a4557[_0xbbb4('0x2c')],_0x4a4557[_0xbbb4('0x2d')]);_0x1bda74[_0xbbb4('0x31')]=_['intersection'](_0x4a4557[_0xbbb4('0x2c')],qs[_0xbbb4('0x32')](_0x21e629[_0xbbb4('0x2d')][_0xbbb4('0x32')]));_0x1bda74[_0xbbb4('0x31')]=_0x1bda74[_0xbbb4('0x31')][_0xbbb4('0x33')]?_0x1bda74[_0xbbb4('0x31')]:_0x4a4557[_0xbbb4('0x2c')];if(!_0x21e629[_0xbbb4('0x2d')]['hasOwnProperty'](_0xbbb4('0x34'))){_0x1bda74['limit']=qs[_0xbbb4('0x18')](_0x21e629[_0xbbb4('0x2d')][_0xbbb4('0x18')]);_0x1bda74['offset']=qs[_0xbbb4('0x16')](_0x21e629[_0xbbb4('0x2d')][_0xbbb4('0x16')]);}_0x1bda74[_0xbbb4('0x35')]=qs[_0xbbb4('0x36')](_0x21e629[_0xbbb4('0x2d')][_0xbbb4('0x36')]);_0x1bda74[_0xbbb4('0x37')]=qs[_0xbbb4('0x2f')](_[_0xbbb4('0x38')](_0x21e629['query'],_0x4a4557['filters']),_0x5c00b4);if(_0x21e629['query'][_0xbbb4('0x39')]){_0x1bda74[_0xbbb4('0x37')]=_['merge'](_0x1bda74[_0xbbb4('0x37')],{'$or':_[_0xbbb4('0x27')](_0x5c00b4,function(_0xee8adb){if(_0xee8adb[_0xbbb4('0x2a')]!==_0xbbb4('0x3a')){var _0x42da0e={};_0x42da0e[_0xee8adb[_0xbbb4('0x25')]]={'$like':'%'+_0x21e629[_0xbbb4('0x2d')][_0xbbb4('0x39')]+'%'};return _0x42da0e;}})});}_0x1bda74=_[_0xbbb4('0x3b')]({},_0x1bda74,_0x21e629[_0xbbb4('0x3c')]);var _0x1991a3={'where':_0x1bda74[_0xbbb4('0x37')]};return db[_0xbbb4('0x28')][_0xbbb4('0x19')](_0x1991a3)['then'](function(_0x2976af){_0x136773[_0xbbb4('0x19')]=_0x2976af;if(_0x21e629[_0xbbb4('0x2d')][_0xbbb4('0x3d')]){_0x1bda74[_0xbbb4('0x3e')]=[{'all':!![]}];}return db[_0xbbb4('0x28')]['findAll'](_0x1bda74);})[_0xbbb4('0x20')](function(_0x2ed13b){_0x136773[_0xbbb4('0x3f')]=_0x2ed13b;return _0x136773;})[_0xbbb4('0x20')](respondWithFilteredResult(_0x3cf3c1,_0x1bda74))[_0xbbb4('0x40')](handleError(_0x3cf3c1,null));};exports[_0xbbb4('0x41')]=function(_0x5e3173,_0x7c8fce){var _0x958654={'raw':!![],'where':{'id':_0x5e3173['params']['id']}},_0x8b002c={};_0x8b002c[_0xbbb4('0x2c')]=_['keys'](db[_0xbbb4('0x28')][_0xbbb4('0x42')]);_0x8b002c[_0xbbb4('0x2d')]=_['keys'](_0x5e3173['query']);_0x8b002c[_0xbbb4('0x2f')]=_[_0xbbb4('0x30')](_0x8b002c[_0xbbb4('0x2c')],_0x8b002c['query']);_0x958654[_0xbbb4('0x31')]=_['intersection'](_0x8b002c[_0xbbb4('0x2c')],qs[_0xbbb4('0x32')](_0x5e3173['query'][_0xbbb4('0x32')]));_0x958654['attributes']=_0x958654[_0xbbb4('0x31')]['length']?_0x958654[_0xbbb4('0x31')]:_0x8b002c[_0xbbb4('0x2c')];if(_0x5e3173['query'][_0xbbb4('0x3d')]){_0x958654[_0xbbb4('0x3e')]=[{'all':!![]}];}_0x958654=_[_0xbbb4('0x3b')]({},_0x958654,_0x5e3173[_0xbbb4('0x3c')]);return db[_0xbbb4('0x28')][_0xbbb4('0x43')](_0x958654)[_0xbbb4('0x20')](handleEntityNotFound(_0x7c8fce,null))['then'](respondWithResult(_0x7c8fce,null))[_0xbbb4('0x40')](handleError(_0x7c8fce,null));};exports['create']=function(_0xc901f1,_0x36b276){return db[_0xbbb4('0x28')][_0xbbb4('0x44')](_0xc901f1['body'],{})[_0xbbb4('0x20')](respondWithResult(_0x36b276,0xc9))[_0xbbb4('0x40')](handleError(_0x36b276,null));};exports[_0xbbb4('0x1f')]=function(_0x26419,_0x1604f6){if(_0x26419['body']['id']){delete _0x26419[_0xbbb4('0x45')]['id'];}return db[_0xbbb4('0x28')][_0xbbb4('0x43')]({'where':{'id':_0x26419['params']['id']}})[_0xbbb4('0x20')](handleEntityNotFound(_0x1604f6,null))[_0xbbb4('0x20')](saveUpdates(_0x26419[_0xbbb4('0x45')],null))[_0xbbb4('0x20')](respondWithResult(_0x1604f6,null))[_0xbbb4('0x40')](handleError(_0x1604f6,null));};exports[_0xbbb4('0x21')]=function(_0x3d6568,_0x3589e9){return db[_0xbbb4('0x28')][_0xbbb4('0x43')]({'where':{'id':_0x3d6568[_0xbbb4('0x46')]['id']}})['then'](handleEntityNotFound(_0x3589e9,null))[_0xbbb4('0x20')](removeEntity(_0x3589e9,null))['catch'](handleError(_0x3589e9,null));};exports[_0xbbb4('0x47')]=function(_0xc32610,_0x309ce2){return db[_0xbbb4('0x28')][_0xbbb4('0x47')]()[_0xbbb4('0x20')](respondWithResult(_0x309ce2,null))[_0xbbb4('0x40')](handleError(_0x309ce2,null));};
\ No newline at end of file
+var _0xc5a5=['fields','attributes','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','show','catch','create','body','find','params','describe','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','end','status','limit','undefined','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','index','SmsTransferReport','fieldName','type','key','model','query','keys','filters','intersection'];(function(_0x3e112d,_0x2bb132){var _0x531c31=function(_0x1954bc){while(--_0x1954bc){_0x3e112d['push'](_0x3e112d['shift']());}};_0x531c31(++_0x2bb132);}(_0xc5a5,0x1b1));var _0x5c5a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc5a5[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x5c5a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5c5a('0x1'));var rp=require(_0x5c5a('0x2'));var moment=require(_0x5c5a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5c5a('0x4'));var util=require(_0x5c5a('0x5'));var path=require(_0x5c5a('0x6'));var sox=require(_0x5c5a('0x7'));var csv=require(_0x5c5a('0x8'));var ejs=require(_0x5c5a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5c5a('0xa'));var squel=require(_0x5c5a('0xb'));var crypto=require(_0x5c5a('0xc'));var jsforce=require(_0x5c5a('0xd'));var deskjs=require(_0x5c5a('0xe'));var toCsv=require(_0x5c5a('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5c5a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x5c5a('0x10'));var as=require(_0x5c5a('0x11'));var hardwareService=require(_0x5c5a('0x12'));var logger=require(_0x5c5a('0x13'))('api');var utils=require(_0x5c5a('0x14'));var config=require(_0x5c5a('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x595d24,_0x2f8d84){_0x2f8d84=_0x2f8d84||0xcc;return function(_0x22c5a8){if(_0x22c5a8){return _0x595d24[_0x5c5a('0x16')](_0x2f8d84);}return _0x595d24['status'](_0x2f8d84)[_0x5c5a('0x17')]();};}function respondWithResult(_0x3b9428,_0x352064){_0x352064=_0x352064||0xc8;return function(_0x34b1ae){if(_0x34b1ae){return _0x3b9428[_0x5c5a('0x18')](_0x352064)['json'](_0x34b1ae);}};}function respondWithFilteredResult(_0x4f5636,_0x2d8b51){return function(_0x33d10a){if(_0x33d10a){var _0x173802=typeof _0x2d8b51['offset']==='undefined'&&typeof _0x2d8b51[_0x5c5a('0x19')]===_0x5c5a('0x1a');var _0x496a2f=_0x33d10a[_0x5c5a('0x1b')];var _0x4da590=_0x173802?0x0:_0x2d8b51[_0x5c5a('0x1c')];var _0x250f1f=_0x173802?_0x33d10a[_0x5c5a('0x1b')]:_0x2d8b51['offset']+_0x2d8b51[_0x5c5a('0x19')];var _0x2304a2;if(_0x250f1f>=_0x496a2f){_0x250f1f=_0x496a2f;_0x2304a2=0xc8;}else{_0x2304a2=0xce;}_0x4f5636['status'](_0x2304a2);return _0x4f5636[_0x5c5a('0x1d')](_0x5c5a('0x1e'),_0x4da590+'-'+_0x250f1f+'/'+_0x496a2f)[_0x5c5a('0x1f')](_0x33d10a);}return null;};}function patchUpdates(_0x4ca11d){return function(_0x3d008b){try{jsonpatch[_0x5c5a('0x20')](_0x3d008b,_0x4ca11d,!![]);}catch(_0x32a1ae){return BPromise[_0x5c5a('0x21')](_0x32a1ae);}return _0x3d008b[_0x5c5a('0x22')]();};}function saveUpdates(_0x112fbb,_0x279731){return function(_0xa61c7e){if(_0xa61c7e){return _0xa61c7e[_0x5c5a('0x23')](_0x112fbb)[_0x5c5a('0x24')](function(_0x33b607){return _0x33b607;});}return null;};}function removeEntity(_0x5c97cf,_0x22b999){return function(_0x20cf0b){if(_0x20cf0b){return _0x20cf0b[_0x5c5a('0x25')]()[_0x5c5a('0x24')](function(){_0x5c97cf[_0x5c5a('0x18')](0xcc)[_0x5c5a('0x17')]();});}};}function handleEntityNotFound(_0x1708f4,_0x54211f){return function(_0x4c82f1){if(!_0x4c82f1){_0x1708f4[_0x5c5a('0x16')](0x194);}return _0x4c82f1;};}function handleError(_0x341b53,_0x2bd1f5){_0x2bd1f5=_0x2bd1f5||0x1f4;return function(_0x3293ac){logger[_0x5c5a('0x26')](_0x3293ac['stack']);if(_0x3293ac[_0x5c5a('0x27')]){delete _0x3293ac['name'];}_0x341b53[_0x5c5a('0x18')](_0x2bd1f5)['send'](_0x3293ac);};}exports[_0x5c5a('0x28')]=function(_0x569612,_0x2dec0a){var _0x4cc2d4={},_0x4b3438={},_0x455599={'count':0x0,'rows':[]};var _0x5766eb=_['map'](db[_0x5c5a('0x29')]['rawAttributes'],function(_0x318107){return{'name':_0x318107[_0x5c5a('0x2a')],'type':_0x318107[_0x5c5a('0x2b')][_0x5c5a('0x2c')]};});_0x4b3438[_0x5c5a('0x2d')]=_['map'](_0x5766eb,_0x5c5a('0x27'));_0x4b3438[_0x5c5a('0x2e')]=_[_0x5c5a('0x2f')](_0x569612[_0x5c5a('0x2e')]);_0x4b3438[_0x5c5a('0x30')]=_[_0x5c5a('0x31')](_0x4b3438['model'],_0x4b3438['query']);_0x4cc2d4['attributes']=_['intersection'](_0x4b3438[_0x5c5a('0x2d')],qs[_0x5c5a('0x32')](_0x569612[_0x5c5a('0x2e')][_0x5c5a('0x32')]));_0x4cc2d4[_0x5c5a('0x33')]=_0x4cc2d4[_0x5c5a('0x33')]['length']?_0x4cc2d4['attributes']:_0x4b3438[_0x5c5a('0x2d')];if(!_0x569612['query'][_0x5c5a('0x34')](_0x5c5a('0x35'))){_0x4cc2d4['limit']=qs[_0x5c5a('0x19')](_0x569612[_0x5c5a('0x2e')]['limit']);_0x4cc2d4[_0x5c5a('0x1c')]=qs[_0x5c5a('0x1c')](_0x569612['query'][_0x5c5a('0x1c')]);}_0x4cc2d4['order']=qs[_0x5c5a('0x36')](_0x569612[_0x5c5a('0x2e')][_0x5c5a('0x36')]);_0x4cc2d4[_0x5c5a('0x37')]=qs[_0x5c5a('0x30')](_['pick'](_0x569612[_0x5c5a('0x2e')],_0x4b3438['filters']),_0x5766eb);if(_0x569612[_0x5c5a('0x2e')][_0x5c5a('0x38')]){_0x4cc2d4[_0x5c5a('0x37')]=_['merge'](_0x4cc2d4[_0x5c5a('0x37')],{'$or':_['map'](_0x5766eb,function(_0x3a02e6){if(_0x3a02e6['type']!==_0x5c5a('0x39')){var _0x1b0616={};_0x1b0616[_0x3a02e6[_0x5c5a('0x27')]]={'$like':'%'+_0x569612[_0x5c5a('0x2e')][_0x5c5a('0x38')]+'%'};return _0x1b0616;}})});}_0x4cc2d4=_[_0x5c5a('0x3a')]({},_0x4cc2d4,_0x569612[_0x5c5a('0x3b')]);var _0x3cb53d={'where':_0x4cc2d4['where']};return db[_0x5c5a('0x29')]['count'](_0x3cb53d)['then'](function(_0x411df7){_0x455599[_0x5c5a('0x1b')]=_0x411df7;if(_0x569612[_0x5c5a('0x2e')][_0x5c5a('0x3c')]){_0x4cc2d4['include']=[{'all':!![]}];}return db[_0x5c5a('0x29')][_0x5c5a('0x3d')](_0x4cc2d4);})[_0x5c5a('0x24')](function(_0x16394a){_0x455599['rows']=_0x16394a;return _0x455599;})['then'](respondWithFilteredResult(_0x2dec0a,_0x4cc2d4))['catch'](handleError(_0x2dec0a,null));};exports[_0x5c5a('0x3e')]=function(_0xc77f9,_0x1c1959){var _0xf5a0b2={'raw':!![],'where':{'id':_0xc77f9['params']['id']}},_0x1dce52={};_0x1dce52[_0x5c5a('0x2d')]=_[_0x5c5a('0x2f')](db['SmsTransferReport']['rawAttributes']);_0x1dce52[_0x5c5a('0x2e')]=_['keys'](_0xc77f9[_0x5c5a('0x2e')]);_0x1dce52[_0x5c5a('0x30')]=_[_0x5c5a('0x31')](_0x1dce52['model'],_0x1dce52[_0x5c5a('0x2e')]);_0xf5a0b2['attributes']=_[_0x5c5a('0x31')](_0x1dce52[_0x5c5a('0x2d')],qs[_0x5c5a('0x32')](_0xc77f9['query'][_0x5c5a('0x32')]));_0xf5a0b2['attributes']=_0xf5a0b2[_0x5c5a('0x33')]['length']?_0xf5a0b2[_0x5c5a('0x33')]:_0x1dce52[_0x5c5a('0x2d')];if(_0xc77f9[_0x5c5a('0x2e')]['includeAll']){_0xf5a0b2['include']=[{'all':!![]}];}_0xf5a0b2=_[_0x5c5a('0x3a')]({},_0xf5a0b2,_0xc77f9[_0x5c5a('0x3b')]);return db[_0x5c5a('0x29')]['find'](_0xf5a0b2)['then'](handleEntityNotFound(_0x1c1959,null))['then'](respondWithResult(_0x1c1959,null))[_0x5c5a('0x3f')](handleError(_0x1c1959,null));};exports[_0x5c5a('0x40')]=function(_0x5afcdb,_0x22d9d5){return db['SmsTransferReport'][_0x5c5a('0x40')](_0x5afcdb['body'],{})['then'](respondWithResult(_0x22d9d5,0xc9))[_0x5c5a('0x3f')](handleError(_0x22d9d5,null));};exports[_0x5c5a('0x23')]=function(_0x2b066f,_0x5cec6f){if(_0x2b066f[_0x5c5a('0x41')]['id']){delete _0x2b066f[_0x5c5a('0x41')]['id'];}return db[_0x5c5a('0x29')][_0x5c5a('0x42')]({'where':{'id':_0x2b066f['params']['id']}})['then'](handleEntityNotFound(_0x5cec6f,null))['then'](saveUpdates(_0x2b066f[_0x5c5a('0x41')],null))[_0x5c5a('0x24')](respondWithResult(_0x5cec6f,null))['catch'](handleError(_0x5cec6f,null));};exports[_0x5c5a('0x25')]=function(_0x412fdd,_0x4339fa){return db[_0x5c5a('0x29')][_0x5c5a('0x42')]({'where':{'id':_0x412fdd[_0x5c5a('0x43')]['id']}})[_0x5c5a('0x24')](handleEntityNotFound(_0x4339fa,null))['then'](removeEntity(_0x4339fa,null))[_0x5c5a('0x3f')](handleError(_0x4339fa,null));};exports[_0x5c5a('0x44')]=function(_0x2c8df0,_0x4a8edd){return db[_0x5c5a('0x29')]['describe']()['then'](respondWithResult(_0x4a8edd,null))[_0x5c5a('0x3f')](handleError(_0x4a8edd,null));};
\ No newline at end of file
index 8d781f5..1ad6da4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02ac=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsTransferReport.attributes','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash'];(function(_0x289a67,_0x1e5a3c){var _0x572b49=function(_0x22e036){while(--_0x22e036){_0x289a67['push'](_0x289a67['shift']());}};_0x572b49(++_0x1e5a3c);}(_0x02ac,0x1ed));var _0xc02a=function(_0xdc1d6f,_0x49aa02){_0xdc1d6f=_0xdc1d6f-0x0;var _0x451029=_0x02ac[_0xdc1d6f];return _0x451029;};'use strict';var _=require(_0xc02a('0x0'));var util=require('util');var logger=require(_0xc02a('0x1'))(_0xc02a('0x2'));var moment=require(_0xc02a('0x3'));var BPromise=require(_0xc02a('0x4'));var rp=require(_0xc02a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc02a('0x6'));var config=require(_0xc02a('0x7'));var attributes=require(_0xc02a('0x8'));module['exports']=function(_0x16ac2d,_0x7dc966){return _0x16ac2d[_0xc02a('0x9')](_0xc02a('0xa'),attributes,{'tableName':_0xc02a('0xb'),'paranoid':![],'indexes':[{'name':_0xc02a('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x25b0=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util'];(function(_0x72e04a,_0x398f0b){var _0x4e8acf=function(_0x56ea91){while(--_0x56ea91){_0x72e04a['push'](_0x72e04a['shift']());}};_0x4e8acf(++_0x398f0b);}(_0x25b0,0x140));var _0x025b=function(_0x365be9,_0x3c88b9){_0x365be9=_0x365be9-0x0;var _0x185c12=_0x25b0[_0x365be9];return _0x185c12;};'use strict';var _=require(_0x025b('0x0'));var util=require(_0x025b('0x1'));var logger=require(_0x025b('0x2'))(_0x025b('0x3'));var moment=require(_0x025b('0x4'));var BPromise=require(_0x025b('0x5'));var rp=require(_0x025b('0x6'));var fs=require('fs');var path=require(_0x025b('0x7'));var rimraf=require(_0x025b('0x8'));var config=require(_0x025b('0x9'));var attributes=require('./smsTransferReport.attributes');module[_0x025b('0xa')]=function(_0x41b88b,_0x41d8a4){return _0x41b88b['define'](_0x025b('0xb'),attributes,{'tableName':_0x025b('0xc'),'paranoid':![],'indexes':[{'name':_0x025b('0xd'),'fields':[_0x025b('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 3c37bee..b24d283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b83=['../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','SmsTransferReport,\x20%s,\x20%s','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x1f62c3,_0x1ff95b){var _0x385c1c=function(_0x1db580){while(--_0x1db580){_0x1f62c3['push'](_0x1f62c3['shift']());}};_0x385c1c(++_0x1ff95b);}(_0x7b83,0xa1));var _0x37b8=function(_0x1cb931,_0x41493d){_0x1cb931=_0x1cb931-0x0;var _0x1ef86b=_0x7b83[_0x1cb931];return _0x1ef86b;};'use strict';var _=require(_0x37b8('0x0'));var util=require(_0x37b8('0x1'));var moment=require(_0x37b8('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x37b8('0x3'));var db=require(_0x37b8('0x4'))['db'];var utils=require(_0x37b8('0x5'));var logger=require('../../config/logger')(_0x37b8('0x6'));var config=require(_0x37b8('0x7'));var jayson=require(_0x37b8('0x8'));var client=jayson[_0x37b8('0x9')][_0x37b8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x220cd2,_0x5eb540,_0x45e094){return new BPromise(function(_0xc3ab5b,_0x50f729){return client[_0x37b8('0xb')](_0x220cd2,_0x45e094)['then'](function(_0x548dfd){logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x5eb540,_0x37b8('0xc'));logger[_0x37b8('0xd')](_0x37b8('0xe'),_0x5eb540,_0x37b8('0xc'),JSON[_0x37b8('0xf')](_0x548dfd));if(_0x548dfd['error']){if(_0x548dfd[_0x37b8('0x10')]['code']===0x1f4){logger[_0x37b8('0x10')]('SmsTransferReport,\x20%s,\x20%s',_0x5eb540,_0x548dfd[_0x37b8('0x10')][_0x37b8('0x11')]);return _0x50f729(_0x548dfd[_0x37b8('0x10')][_0x37b8('0x11')]);}logger[_0x37b8('0x10')]('SmsTransferReport,\x20%s,\x20%s',_0x5eb540,_0x548dfd['error'][_0x37b8('0x11')]);return _0xc3ab5b(_0x548dfd[_0x37b8('0x10')][_0x37b8('0x11')]);}else{logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x5eb540,_0x37b8('0xc'));_0xc3ab5b(_0x548dfd[_0x37b8('0x12')][_0x37b8('0x11')]);}})[_0x37b8('0x13')](function(_0x290068){logger[_0x37b8('0x10')](_0x37b8('0x14'),_0x5eb540,_0x290068);_0x50f729(_0x290068);});});}
\ No newline at end of file
+var _0xbf07=['request','then','info','SmsTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment'];(function(_0x478d4b,_0x127e44){var _0x3e3aa5=function(_0x441871){while(--_0x441871){_0x478d4b['push'](_0x478d4b['shift']());}};_0x3e3aa5(++_0x127e44);}(_0xbf07,0x77));var _0x7bf0=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xbf07[_0x25e7cb];return _0x375d92;};'use strict';var _=require(_0x7bf0('0x0'));var util=require(_0x7bf0('0x1'));var moment=require(_0x7bf0('0x2'));var BPromise=require(_0x7bf0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7bf0('0x4'));var db=require(_0x7bf0('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x7bf0('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x44f656,_0x50e680,_0x263964){return new BPromise(function(_0x536214,_0x415291){return client[_0x7bf0('0x7')](_0x44f656,_0x263964)[_0x7bf0('0x8')](function(_0x2565c7){logger[_0x7bf0('0x9')](_0x7bf0('0xa'),_0x50e680,'request\x20sent');logger[_0x7bf0('0xb')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x50e680,_0x7bf0('0xc'),JSON[_0x7bf0('0xd')](_0x2565c7));if(_0x2565c7[_0x7bf0('0xe')]){if(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0xf')]===0x1f4){logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);return _0x415291(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);}logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);return _0x536214(_0x2565c7[_0x7bf0('0xe')][_0x7bf0('0x10')]);}else{logger[_0x7bf0('0x9')](_0x7bf0('0xa'),_0x50e680,_0x7bf0('0xc'));_0x536214(_0x2565c7['result'][_0x7bf0('0x10')]);}})[_0x7bf0('0x11')](function(_0x187489){logger[_0x7bf0('0xe')](_0x7bf0('0xa'),_0x50e680,_0x187489);_0x415291(_0x187489);});});}
\ No newline at end of file
index 41a79d1..b9ddbc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4a6=['delete','exports','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','/:id/download','download','diskStorage','join','root','originalname','basename','now','post','single','file','create','put','update'];(function(_0x31ec1f,_0x5a5559){var _0x37463f=function(_0x4ba49a){while(--_0x4ba49a){_0x31ec1f['push'](_0x31ec1f['shift']());}};_0x37463f(++_0x5a5559);}(_0xe4a6,0x1a2));var _0x6e4a=function(_0x364390,_0x46b408){_0x364390=_0x364390-0x0;var _0x3cf60d=_0xe4a6[_0x364390];return _0x3cf60d;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6e4a('0x0'));var router=express[_0x6e4a('0x1')]();var fs_extra=require(_0x6e4a('0x2'));var auth=require(_0x6e4a('0x3'));var interaction=require(_0x6e4a('0x4'));var config=require(_0x6e4a('0x5'));var controller=require('./sound.controller');router['get']('/',auth[_0x6e4a('0x6')](),controller[_0x6e4a('0x7')]);router[_0x6e4a('0x8')](_0x6e4a('0x9'),auth[_0x6e4a('0x6')](),controller['show']);router['get'](_0x6e4a('0xa'),auth['isAuthenticated'](),controller[_0x6e4a('0xb')]);var upload=multer({'storage':multer[_0x6e4a('0xc')]({'destination':function(_0x42a987,_0x14279c,_0x41d227){_0x41d227(null,path[_0x6e4a('0xd')](config[_0x6e4a('0xe')],'server/files/sounds/original/'));},'filename':function(_0x54ab66,_0x32244f,_0x1da249){_0x32244f[_0x6e4a('0xf')]=_0x32244f[_0x6e4a('0xf')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1da249(null,util['format']('%s-%s%s',path[_0x6e4a('0x10')](_0x32244f[_0x6e4a('0xf')],path['extname'](_0x32244f['originalname'])),Date[_0x6e4a('0x11')](),path['extname'](_0x32244f[_0x6e4a('0xf')])));}})});router[_0x6e4a('0x12')]('/',upload[_0x6e4a('0x13')](_0x6e4a('0x14')),controller[_0x6e4a('0x15')]);router[_0x6e4a('0x16')](_0x6e4a('0x9'),auth[_0x6e4a('0x6')](),controller[_0x6e4a('0x17')]);router[_0x6e4a('0x18')](_0x6e4a('0x9'),auth[_0x6e4a('0x6')](),controller[_0x6e4a('0x18')]);module[_0x6e4a('0x19')]=router;
\ No newline at end of file
+var _0x8573=['create','put','/:id','update','delete','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','isAuthenticated','index','get','show','/:id/download','download','diskStorage','join','server/files/sounds/original/','originalname','%s-%s%s','basename','extname','now','post'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x8573,0x10b));var _0x3857=function(_0x2044ef,_0x1efad5){_0x2044ef=_0x2044ef-0x0;var _0x348b13=_0x8573[_0x2044ef];return _0x348b13;};'use strict';var multer=require(_0x3857('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3857('0x1'));var express=require(_0x3857('0x2'));var router=express[_0x3857('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3857('0x4'));var interaction=require(_0x3857('0x5'));var config=require(_0x3857('0x6'));var controller=require(_0x3857('0x7'));router['get']('/',auth[_0x3857('0x8')](),controller[_0x3857('0x9')]);router[_0x3857('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x3857('0xb')]);router[_0x3857('0xa')](_0x3857('0xc'),auth[_0x3857('0x8')](),controller[_0x3857('0xd')]);var upload=multer({'storage':multer[_0x3857('0xe')]({'destination':function(_0x5024d9,_0x12c6e3,_0x5bef90){_0x5bef90(null,path[_0x3857('0xf')](config['root'],_0x3857('0x10')));},'filename':function(_0x4c6046,_0x2b73a5,_0x1161fd){_0x2b73a5[_0x3857('0x11')]=_0x2b73a5['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1161fd(null,util['format'](_0x3857('0x12'),path[_0x3857('0x13')](_0x2b73a5['originalname'],path[_0x3857('0x14')](_0x2b73a5['originalname'])),Date[_0x3857('0x15')](),path['extname'](_0x2b73a5[_0x3857('0x11')])));}})});router[_0x3857('0x16')]('/',upload['single']('file'),controller[_0x3857('0x17')]);router[_0x3857('0x18')](_0x3857('0x19'),auth[_0x3857('0x8')](),controller[_0x3857('0x1a')]);router[_0x3857('0x1b')](_0x3857('0x19'),auth[_0x3857('0x8')](),controller['delete']);module[_0x3857('0x1c')]=router;
\ No newline at end of file
index 5730521..09f8104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47cf=['BIGINT','INTEGER','FLOAT','exports','STRING'];(function(_0x4ea413,_0x51ff3a){var _0x51cf25=function(_0x3c6456){while(--_0x3c6456){_0x4ea413['push'](_0x4ea413['shift']());}};_0x51cf25(++_0x51ff3a);}(_0x47cf,0x189));var _0xf47c=function(_0x3d7a33,_0x1b5b41){_0x3d7a33=_0x3d7a33-0x0;var _0x167339=_0x47cf[_0x3d7a33];return _0x167339;};'use strict';var Sequelize=require('sequelize');module[_0xf47c('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0xf47c('0x1')]},'display_name':{'type':Sequelize[_0xf47c('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0xf47c('0x1')]},'original_format':{'type':Sequelize[_0xf47c('0x1')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0xf47c('0x2')]},'original_channelCount':{'type':Sequelize[_0xf47c('0x3')]},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize[_0xf47c('0x3')]},'converted_format':{'type':Sequelize[_0xf47c('0x1')]},'converted_duration':{'type':Sequelize[_0xf47c('0x4')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0xf47c('0x2')]},'converted_sampleRate':{'type':Sequelize[_0xf47c('0x3')]}};
\ No newline at end of file
+var _0xaf7c=['INTEGER','sequelize','exports','STRING','name','FLOAT','BIGINT'];(function(_0x474bc0,_0x26989c){var _0x4b24cf=function(_0x4be866){while(--_0x4be866){_0x474bc0['push'](_0x474bc0['shift']());}};_0x4b24cf(++_0x26989c);}(_0xaf7c,0x1b3));var _0xcaf7=function(_0x195299,_0x7a1c77){_0x195299=_0x195299-0x0;var _0x258842=_0xaf7c[_0x195299];return _0x258842;};'use strict';var Sequelize=require(_0xcaf7('0x0'));module[_0xcaf7('0x1')]={'name':{'type':Sequelize[_0xcaf7('0x2')],'unique':_0xcaf7('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xcaf7('0x2')]},'display_name':{'type':Sequelize[_0xcaf7('0x2')],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0xcaf7('0x2')]},'original_duration':{'type':Sequelize[_0xcaf7('0x4')]},'original_sampleCount':{'type':Sequelize[_0xcaf7('0x5')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0xcaf7('0x5')]},'original_sampleRate':{'type':Sequelize[_0xcaf7('0x6')]},'converted_format':{'type':Sequelize[_0xcaf7('0x2')]},'converted_duration':{'type':Sequelize[_0xcaf7('0x4')]},'converted_sampleCount':{'type':Sequelize[_0xcaf7('0x5')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0xcaf7('0x5')]},'converted_sampleRate':{'type':Sequelize[_0xcaf7('0x6')]}};
\ No newline at end of file
index 3824e36..3ec93a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaad=['transcode','unlinkSync','src','duration','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_channelCount','converted_bitRate','converted_sampleRate','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','update','pick','description','delete','original_format','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','Content-Range','reject','save','then','destroy','Sounds','UserProfileResource','end','sendStatus','error','stack','name','send','index','map','Sound','rawAttributes','key','model','keys','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','find','download','params','converted_format','existsSync','join','root','server/files/sounds/converted','save_name','Sequelize','ValidationError','Sound\x20not\x20found','format','%s.%s','create','basename','originalname','extname','file','filename','wav','server/files/sounds/original','info','Sound\x20upload\x20destination:\x20%s','chmodSync','0777'];(function(_0x84055f,_0x52c771){var _0x45fb92=function(_0x22420a){while(--_0x22420a){_0x84055f['push'](_0x84055f['shift']());}};_0x45fb92(++_0x52c771);}(_0xdaad,0x9c));var _0xddaa=function(_0x252927,_0x3f8cab){_0x252927=_0x252927-0x0;var _0x358956=_0xdaad[_0x252927];return _0x358956;};'use strict';var emlformat=require(_0xddaa('0x0'));var rimraf=require(_0xddaa('0x1'));var zipdir=require(_0xddaa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xddaa('0x3'));var moment=require(_0xddaa('0x4'));var BPromise=require(_0xddaa('0x5'));var Mustache=require(_0xddaa('0x6'));var util=require('util');var path=require(_0xddaa('0x7'));var sox=require(_0xddaa('0x8'));var csv=require(_0xddaa('0x9'));var ejs=require(_0xddaa('0xa'));var fs=require('fs');var fs_extra=require(_0xddaa('0xb'));var _=require(_0xddaa('0xc'));var squel=require(_0xddaa('0xd'));var crypto=require('crypto');var jsforce=require(_0xddaa('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xddaa('0x9'));var querystring=require(_0xddaa('0xf'));var Papa=require(_0xddaa('0x10'));var Redis=require(_0xddaa('0x11'));var authService=require(_0xddaa('0x12'));var qs=require(_0xddaa('0x13'));var as=require(_0xddaa('0x14'));var hardwareService=require(_0xddaa('0x15'));var logger=require(_0xddaa('0x16'))(_0xddaa('0x17'));var utils=require(_0xddaa('0x18'));var config=require(_0xddaa('0x19'));var licenseUtil=require(_0xddaa('0x1a'));var db=require(_0xddaa('0x1b'))['db'];function respondWithStatusCode(_0x3e2a93,_0x48a70a){_0x48a70a=_0x48a70a||0xcc;return function(_0x388830){if(_0x388830){return _0x3e2a93['sendStatus'](_0x48a70a);}return _0x3e2a93['status'](_0x48a70a)['end']();};}function respondWithResult(_0x482163,_0x34ba51){_0x34ba51=_0x34ba51||0xc8;return function(_0x5159ed){if(_0x5159ed){return _0x482163[_0xddaa('0x1c')](_0x34ba51)['json'](_0x5159ed);}};}function respondWithFilteredResult(_0x212d80,_0x438e6d){return function(_0x10ae18){if(_0x10ae18){var _0x2c512f=typeof _0x438e6d[_0xddaa('0x1d')]===_0xddaa('0x1e')&&typeof _0x438e6d[_0xddaa('0x1f')]===_0xddaa('0x1e');var _0x32082c=_0x10ae18[_0xddaa('0x20')];var _0x534f71=_0x2c512f?0x0:_0x438e6d[_0xddaa('0x1d')];var _0x3ab8e2=_0x2c512f?_0x10ae18[_0xddaa('0x20')]:_0x438e6d['offset']+_0x438e6d[_0xddaa('0x1f')];var _0x167f7a;if(_0x3ab8e2>=_0x32082c){_0x3ab8e2=_0x32082c;_0x167f7a=0xc8;}else{_0x167f7a=0xce;}_0x212d80[_0xddaa('0x1c')](_0x167f7a);return _0x212d80['set'](_0xddaa('0x21'),_0x534f71+'-'+_0x3ab8e2+'/'+_0x32082c)['json'](_0x10ae18);}return null;};}function patchUpdates(_0x164371){return function(_0x490c9b){try{jsonpatch['apply'](_0x490c9b,_0x164371,!![]);}catch(_0x390ee5){return BPromise[_0xddaa('0x22')](_0x390ee5);}return _0x490c9b[_0xddaa('0x23')]();};}function saveUpdates(_0x5a63df,_0x4f4699){return function(_0x47c6be){if(_0x47c6be){return _0x47c6be['update'](_0x5a63df)[_0xddaa('0x24')](function(_0x3e02b1){return _0x3e02b1;});}return null;};}function removeEntity(_0x2d5f78,_0x5ea44f){return function(_0x19283d){if(_0x19283d){return _0x19283d[_0xddaa('0x25')]()[_0xddaa('0x24')](function(){var _0x2db8b9=_0x19283d['get']({'plain':!![]});var _0x57ef07=_0xddaa('0x26');return db[_0xddaa('0x27')][_0xddaa('0x25')]({'where':{'type':_0x57ef07,'resourceId':_0x2db8b9['id']}})[_0xddaa('0x24')](function(){return _0x19283d;});})[_0xddaa('0x24')](function(){_0x2d5f78['status'](0xcc)[_0xddaa('0x28')]();});}};}function handleEntityNotFound(_0x59807c,_0xc7e7ec){return function(_0x724d4c){if(!_0x724d4c){_0x59807c[_0xddaa('0x29')](0x194);}return _0x724d4c;};}function handleError(_0x36202d,_0x4955e0){_0x4955e0=_0x4955e0||0x1f4;return function(_0x1d4149){logger[_0xddaa('0x2a')](_0x1d4149[_0xddaa('0x2b')]);if(_0x1d4149[_0xddaa('0x2c')]){delete _0x1d4149['name'];}_0x36202d[_0xddaa('0x1c')](_0x4955e0)[_0xddaa('0x2d')](_0x1d4149);};}exports[_0xddaa('0x2e')]=function(_0x488058,_0x470e48){var _0x2e6c47={},_0xfe472a={},_0x54cb37={'count':0x0,'rows':[]};var _0xa6f21=_[_0xddaa('0x2f')](db[_0xddaa('0x30')][_0xddaa('0x31')],function(_0x307a3c){return{'name':_0x307a3c['fieldName'],'type':_0x307a3c['type'][_0xddaa('0x32')]};});_0xfe472a[_0xddaa('0x33')]=_['map'](_0xa6f21,_0xddaa('0x2c'));_0xfe472a['query']=_[_0xddaa('0x34')](_0x488058[_0xddaa('0x35')]);_0xfe472a[_0xddaa('0x36')]=_['intersection'](_0xfe472a[_0xddaa('0x33')],_0xfe472a['query']);_0x2e6c47[_0xddaa('0x37')]=_[_0xddaa('0x38')](_0xfe472a[_0xddaa('0x33')],qs[_0xddaa('0x39')](_0x488058[_0xddaa('0x35')]['fields']));_0x2e6c47['attributes']=_0x2e6c47[_0xddaa('0x37')][_0xddaa('0x3a')]?_0x2e6c47[_0xddaa('0x37')]:_0xfe472a['model'];if(!_0x488058[_0xddaa('0x35')]['hasOwnProperty'](_0xddaa('0x3b'))){_0x2e6c47[_0xddaa('0x1f')]=qs[_0xddaa('0x1f')](_0x488058[_0xddaa('0x35')][_0xddaa('0x1f')]);_0x2e6c47[_0xddaa('0x1d')]=qs[_0xddaa('0x1d')](_0x488058[_0xddaa('0x35')][_0xddaa('0x1d')]);}_0x2e6c47[_0xddaa('0x3c')]=qs[_0xddaa('0x3d')](_0x488058[_0xddaa('0x35')][_0xddaa('0x3d')]);_0x2e6c47[_0xddaa('0x3e')]=qs[_0xddaa('0x36')](_['pick'](_0x488058[_0xddaa('0x35')],_0xfe472a[_0xddaa('0x36')]),_0xa6f21);if(_0x488058[_0xddaa('0x35')][_0xddaa('0x3f')]){_0x2e6c47['where']=_[_0xddaa('0x40')](_0x2e6c47['where'],{'$or':_[_0xddaa('0x2f')](_0xa6f21,function(_0x345e39){if(_0x345e39[_0xddaa('0x41')]!==_0xddaa('0x42')){var _0x52643c={};_0x52643c[_0x345e39['name']]={'$like':'%'+_0x488058['query'][_0xddaa('0x3f')]+'%'};return _0x52643c;}})});}_0x2e6c47=_['merge']({},_0x2e6c47,_0x488058[_0xddaa('0x43')]);var _0x2eeb47={'where':_0x2e6c47['where']};return db[_0xddaa('0x30')][_0xddaa('0x20')](_0x2eeb47)[_0xddaa('0x24')](function(_0x17cf53){_0x54cb37['count']=_0x17cf53;if(_0x488058[_0xddaa('0x35')][_0xddaa('0x44')]){_0x2e6c47[_0xddaa('0x45')]=[{'all':!![]}];}return db[_0xddaa('0x30')][_0xddaa('0x46')](_0x2e6c47);})[_0xddaa('0x24')](function(_0x49e8d5){_0x54cb37['rows']=_0x49e8d5;return _0x54cb37;})[_0xddaa('0x24')](respondWithFilteredResult(_0x470e48,_0x2e6c47))[_0xddaa('0x47')](handleError(_0x470e48,null));};exports['show']=function(_0x2d827b,_0x5c3fe0){var _0x47dbe1={'raw':!![],'where':{'id':_0x2d827b['params']['id']}},_0x5ac572={};_0x5ac572[_0xddaa('0x33')]=_['keys'](db[_0xddaa('0x30')]['rawAttributes']);_0x5ac572[_0xddaa('0x35')]=_[_0xddaa('0x34')](_0x2d827b[_0xddaa('0x35')]);_0x5ac572[_0xddaa('0x36')]=_['intersection'](_0x5ac572['model'],_0x5ac572[_0xddaa('0x35')]);_0x47dbe1['attributes']=_[_0xddaa('0x38')](_0x5ac572['model'],qs[_0xddaa('0x39')](_0x2d827b[_0xddaa('0x35')][_0xddaa('0x39')]));_0x47dbe1[_0xddaa('0x37')]=_0x47dbe1[_0xddaa('0x37')]['length']?_0x47dbe1[_0xddaa('0x37')]:_0x5ac572['model'];if(_0x2d827b[_0xddaa('0x35')]['includeAll']){_0x47dbe1[_0xddaa('0x45')]=[{'all':!![]}];}_0x47dbe1=_[_0xddaa('0x40')]({},_0x47dbe1,_0x2d827b[_0xddaa('0x43')]);return db[_0xddaa('0x30')][_0xddaa('0x48')](_0x47dbe1)['then'](handleEntityNotFound(_0x5c3fe0,null))[_0xddaa('0x24')](respondWithResult(_0x5c3fe0,null))[_0xddaa('0x47')](handleError(_0x5c3fe0,null));};exports[_0xddaa('0x49')]=function(_0x22b88c,_0x430534,_0x1ccde6){return db[_0xddaa('0x30')][_0xddaa('0x48')]({'where':{'id':_0x22b88c[_0xddaa('0x4a')]['id']},'attributes':['name','save_name',_0xddaa('0x4b')],'raw':!![]})[_0xddaa('0x24')](handleEntityNotFound(_0x430534,null))[_0xddaa('0x24')](function(_0x383230){if(_0x383230){if(!fs[_0xddaa('0x4c')](path[_0xddaa('0x4d')](config[_0xddaa('0x4e')],_0xddaa('0x4f'),_0x383230[_0xddaa('0x50')]+'.'+_0x383230[_0xddaa('0x4b')]))){throw new db[(_0xddaa('0x51'))][(_0xddaa('0x52'))](_0xddaa('0x53'));}return _0x430534[_0xddaa('0x49')](path['join'](config['root'],'server/files/sounds/converted',util[_0xddaa('0x54')](_0xddaa('0x55'),_0x383230[_0xddaa('0x50')],_0x383230[_0xddaa('0x4b')])),util['format'](_0xddaa('0x55'),_0x383230[_0xddaa('0x2c')],_0x383230[_0xddaa('0x4b')]));}return null;})[_0xddaa('0x47')](handleError(_0x430534,null));};exports[_0xddaa('0x56')]=function(_0x57f8fb,_0x4d247c,_0x3067cf){var _0x1e8781={'name':path[_0xddaa('0x57')](_0x57f8fb['file'][_0xddaa('0x58')],path[_0xddaa('0x59')](_0x57f8fb[_0xddaa('0x5a')][_0xddaa('0x58')])),'save_name':path[_0xddaa('0x57')](_0x57f8fb['file'][_0xddaa('0x5b')],path[_0xddaa('0x59')](_0x57f8fb[_0xddaa('0x5a')][_0xddaa('0x5b')])),'original_format':path['extname'](_0x57f8fb[_0xddaa('0x5a')]['originalname'])['substring'](0x1),'converted_format':_0xddaa('0x5c')};var _0x435605=path[_0xddaa('0x4d')](config[_0xddaa('0x4e')],_0xddaa('0x5d'),_0x57f8fb['file'][_0xddaa('0x5b')]);var _0x340ff5=path['join'](config[_0xddaa('0x4e')],_0xddaa('0x4f'),util[_0xddaa('0x54')]('%s.%s',path['basename'](_0x57f8fb['file'][_0xddaa('0x5b')],path[_0xddaa('0x59')](_0x57f8fb[_0xddaa('0x5a')][_0xddaa('0x5b')])),_0x1e8781[_0xddaa('0x4b')]));logger[_0xddaa('0x5e')]('Sound\x20upload\x20filepath:\x20%s',_0x435605);logger[_0xddaa('0x5e')](_0xddaa('0x5f'),_0x340ff5);try{fs[_0xddaa('0x60')](_0x435605,parseInt(_0xddaa('0x61'),0x8));var _0x52ccad=sox[_0xddaa('0x62')](_0x435605,_0x340ff5,{'sampleRate':0x1f40,'format':_0xddaa('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x52ccad['on'](_0xddaa('0x2a'),function(_0x524844){fs[_0xddaa('0x63')](_0x435605);_0x4d247c[_0xddaa('0x1c')](0x1f4)[_0xddaa('0x2d')](_0x524844);});_0x52ccad['on'](_0xddaa('0x64'),function(_0x383337){_0x1e8781['original_duration']=isNaN(_0x383337[_0xddaa('0x65')])?null:_0x383337['duration']*0x3e8;_0x1e8781['original_sampleCount']=isNaN(_0x383337[_0xddaa('0x66')])?null:_0x383337['sampleCount'];_0x1e8781[_0xddaa('0x67')]=isNaN(_0x383337[_0xddaa('0x68')])?null:_0x383337[_0xddaa('0x68')];_0x1e8781[_0xddaa('0x69')]=isNaN(_0x383337[_0xddaa('0x6a')])?null:_0x383337[_0xddaa('0x6a')];_0x1e8781[_0xddaa('0x6b')]=isNaN(_0x383337[_0xddaa('0x6c')])?null:_0x383337[_0xddaa('0x6c')];});_0x52ccad['on'](_0xddaa('0x6d'),function(_0x519b3d){_0x1e8781[_0xddaa('0x6e')]=isNaN(_0x519b3d[_0xddaa('0x65')])?null:_0x519b3d[_0xddaa('0x65')]*0x3e8;_0x1e8781['converted_sampleCount']=isNaN(_0x519b3d[_0xddaa('0x66')])?null:_0x519b3d['sampleCount'];_0x1e8781[_0xddaa('0x6f')]=isNaN(_0x519b3d[_0xddaa('0x68')])?null:_0x519b3d[_0xddaa('0x68')];_0x1e8781[_0xddaa('0x70')]=isNaN(_0x519b3d[_0xddaa('0x6a')])?null:_0x519b3d[_0xddaa('0x6a')];_0x1e8781[_0xddaa('0x71')]=isNaN(_0x519b3d['sampleRate'])?null:_0x519b3d[_0xddaa('0x6c')];});_0x52ccad['on'](_0xddaa('0x28'),function(){fs[_0xddaa('0x60')](_0x340ff5,parseInt(_0xddaa('0x61'),0x8));return db[_0xddaa('0x30')]['create'](_0x1e8781)[_0xddaa('0x24')](function(_0x2d56de){var _0x49532b={'role':_0x57f8fb[_0xddaa('0x72')][_0xddaa('0x73')],'userProfileId':_0x57f8fb[_0xddaa('0x72')][_0xddaa('0x74')]};if(!_0x49532b)throw new Error(_0xddaa('0x75'));if(_0x49532b[_0xddaa('0x73')]===_0xddaa('0x76')){var _0xe5cbe=_0x2d56de[_0xddaa('0x77')]({'plain':!![]});return db['UserProfileSection'][_0xddaa('0x48')]({'where':{'name':_0xddaa('0x26'),'userProfileId':_0x49532b[_0xddaa('0x74')]},'raw':!![]})[_0xddaa('0x24')](function(_0xc2c826){if(_0xc2c826&&_0xc2c826['autoAssociation']===0x0){return db[_0xddaa('0x27')][_0xddaa('0x56')]({'name':_0xe5cbe[_0xddaa('0x2c')],'resourceId':_0xe5cbe['id'],'type':_0xc2c826[_0xddaa('0x2c')],'sectionId':_0xc2c826['id']},{})['then'](function(){return _0x2d56de;});}else{return _0x2d56de;}})[_0xddaa('0x47')](function(_0x2bde18){logger[_0xddaa('0x2a')](_0xddaa('0x78'),_0x2bde18);throw _0x2bde18;});}return _0x2d56de;})[_0xddaa('0x24')](respondWithResult(_0x4d247c,null))[_0xddaa('0x47')](handleError(_0x4d247c,null));});_0x52ccad[_0xddaa('0x79')]();}catch(_0x5540eb){_0x4d247c[_0xddaa('0x1c')](0x1f4)[_0xddaa('0x2d')](_0x5540eb);}};exports[_0xddaa('0x7a')]=function(_0x2f9569,_0x10f10f,_0xcb28db){return db[_0xddaa('0x30')][_0xddaa('0x48')]({'where':{'id':_0x2f9569['params']['id']}})[_0xddaa('0x24')](handleEntityNotFound(_0x10f10f,null))['then'](saveUpdates(_[_0xddaa('0x7b')](_0x2f9569['body'],['name',_0xddaa('0x7c')]),null))[_0xddaa('0x24')](respondWithResult(_0x10f10f,null))[_0xddaa('0x47')](handleError(_0x10f10f,null));};exports[_0xddaa('0x7d')]=function(_0x54f710,_0x1a2924,_0xf7b740){return db[_0xddaa('0x30')][_0xddaa('0x48')]({'where':{'id':_0x54f710[_0xddaa('0x4a')]['id']}})[_0xddaa('0x24')](function(_0x56c6e2){if(_0x56c6e2){return _0x56c6e2[_0xddaa('0x25')]();}})[_0xddaa('0x24')](function(_0x2ed81e){var _0x30df75=path[_0xddaa('0x4d')](config[_0xddaa('0x4e')],_0xddaa('0x5d'),util[_0xddaa('0x54')](_0xddaa('0x55'),_0x2ed81e[_0xddaa('0x50')],_0x2ed81e[_0xddaa('0x7e')]));var _0x1cf0c9=path[_0xddaa('0x4d')](config['root'],'server/files/sounds/converted',util[_0xddaa('0x54')](_0xddaa('0x55'),_0x2ed81e[_0xddaa('0x50')],_0x2ed81e['converted_format']));fs[_0xddaa('0x63')](_0x30df75);fs[_0xddaa('0x63')](_0x1cf0c9);return _0x2ed81e;})[_0xddaa('0x24')](function(_0x135d7e){if(_0x135d7e){return _0x1a2924[_0xddaa('0x1c')](0xcc)[_0xddaa('0x28')]();}})['then'](handleEntityNotFound(_0x1a2924,null))[_0xddaa('0x47')](handleError(_0x1a2924,null));};
\ No newline at end of file
+var _0x5450=['json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','Sounds','UserProfileResource','end','stack','name','index','Sound','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','includeAll','rows','catch','params','options','find','download','save_name','converted_format','root','server/files/sounds/converted','ValidationError','join','format','%s.%s','create','file','originalname','basename','filename','extname','substring','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','error','unlinkSync','src','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_bitRate','body','userProfileId','role','user','UserProfileSection','autoAssociation','start','send','description','delete','original_format','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0x5450,0xd6));var _0x0545=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x5450[_0x334841];return _0x5beb4b;};'use strict';var emlformat=require(_0x0545('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0545('0x1'));var jsonpatch=require(_0x0545('0x2'));var rp=require(_0x0545('0x3'));var moment=require('moment');var BPromise=require(_0x0545('0x4'));var Mustache=require(_0x0545('0x5'));var util=require(_0x0545('0x6'));var path=require('path');var sox=require(_0x0545('0x7'));var csv=require(_0x0545('0x8'));var ejs=require(_0x0545('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0545('0xa'));var squel=require(_0x0545('0xb'));var crypto=require(_0x0545('0xc'));var jsforce=require(_0x0545('0xd'));var deskjs=require(_0x0545('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0545('0xf'));var Papa=require(_0x0545('0x10'));var Redis=require(_0x0545('0x11'));var authService=require(_0x0545('0x12'));var qs=require(_0x0545('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0545('0x14'));var logger=require(_0x0545('0x15'))(_0x0545('0x16'));var utils=require('../../config/utils');var config=require(_0x0545('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0545('0x18'))['db'];function respondWithStatusCode(_0x57dd91,_0x172b4c){_0x172b4c=_0x172b4c||0xcc;return function(_0x178e8d){if(_0x178e8d){return _0x57dd91['sendStatus'](_0x172b4c);}return _0x57dd91[_0x0545('0x19')](_0x172b4c)['end']();};}function respondWithResult(_0xc9d861,_0xb9d2f4){_0xb9d2f4=_0xb9d2f4||0xc8;return function(_0x1df33b){if(_0x1df33b){return _0xc9d861[_0x0545('0x19')](_0xb9d2f4)[_0x0545('0x1a')](_0x1df33b);}};}function respondWithFilteredResult(_0x2e2ac6,_0x31b27c){return function(_0xc7b1c){if(_0xc7b1c){var _0x1789d0=typeof _0x31b27c[_0x0545('0x1b')]===_0x0545('0x1c')&&typeof _0x31b27c[_0x0545('0x1d')]===_0x0545('0x1c');var _0xa533f1=_0xc7b1c['count'];var _0x2d319e=_0x1789d0?0x0:_0x31b27c[_0x0545('0x1b')];var _0x47fb26=_0x1789d0?_0xc7b1c[_0x0545('0x1e')]:_0x31b27c[_0x0545('0x1b')]+_0x31b27c[_0x0545('0x1d')];var _0x467e84;if(_0x47fb26>=_0xa533f1){_0x47fb26=_0xa533f1;_0x467e84=0xc8;}else{_0x467e84=0xce;}_0x2e2ac6['status'](_0x467e84);return _0x2e2ac6[_0x0545('0x1f')]('Content-Range',_0x2d319e+'-'+_0x47fb26+'/'+_0xa533f1)[_0x0545('0x1a')](_0xc7b1c);}return null;};}function patchUpdates(_0x1f192c){return function(_0x11656d){try{jsonpatch[_0x0545('0x20')](_0x11656d,_0x1f192c,!![]);}catch(_0x572ca5){return BPromise[_0x0545('0x21')](_0x572ca5);}return _0x11656d[_0x0545('0x22')]();};}function saveUpdates(_0x1a2ca3,_0x20cf06){return function(_0x510a24){if(_0x510a24){return _0x510a24[_0x0545('0x23')](_0x1a2ca3)[_0x0545('0x24')](function(_0x5cda11){return _0x5cda11;});}return null;};}function removeEntity(_0x4bb359,_0x4df0ea){return function(_0x50dd87){if(_0x50dd87){return _0x50dd87[_0x0545('0x25')]()['then'](function(){var _0x509b63=_0x50dd87[_0x0545('0x26')]({'plain':!![]});var _0x677ef=_0x0545('0x27');return db[_0x0545('0x28')]['destroy']({'where':{'type':_0x677ef,'resourceId':_0x509b63['id']}})[_0x0545('0x24')](function(){return _0x50dd87;});})[_0x0545('0x24')](function(){_0x4bb359[_0x0545('0x19')](0xcc)[_0x0545('0x29')]();});}};}function handleEntityNotFound(_0x25d51b,_0x2a35c3){return function(_0x328dc2){if(!_0x328dc2){_0x25d51b['sendStatus'](0x194);}return _0x328dc2;};}function handleError(_0x731927,_0x1f7f7c){_0x1f7f7c=_0x1f7f7c||0x1f4;return function(_0x1c787f){logger['error'](_0x1c787f[_0x0545('0x2a')]);if(_0x1c787f[_0x0545('0x2b')]){delete _0x1c787f[_0x0545('0x2b')];}_0x731927['status'](_0x1f7f7c)['send'](_0x1c787f);};}exports[_0x0545('0x2c')]=function(_0xb906ff,_0x159cff){var _0x3e0e01={},_0x17bc24={},_0x419479={'count':0x0,'rows':[]};var _0x534b4d=_['map'](db[_0x0545('0x2d')][_0x0545('0x2e')],function(_0x583979){return{'name':_0x583979[_0x0545('0x2f')],'type':_0x583979['type'][_0x0545('0x30')]};});_0x17bc24[_0x0545('0x31')]=_[_0x0545('0x32')](_0x534b4d,_0x0545('0x2b'));_0x17bc24[_0x0545('0x33')]=_[_0x0545('0x34')](_0xb906ff[_0x0545('0x33')]);_0x17bc24[_0x0545('0x35')]=_[_0x0545('0x36')](_0x17bc24[_0x0545('0x31')],_0x17bc24[_0x0545('0x33')]);_0x3e0e01[_0x0545('0x37')]=_[_0x0545('0x36')](_0x17bc24[_0x0545('0x31')],qs[_0x0545('0x38')](_0xb906ff[_0x0545('0x33')][_0x0545('0x38')]));_0x3e0e01[_0x0545('0x37')]=_0x3e0e01[_0x0545('0x37')][_0x0545('0x39')]?_0x3e0e01[_0x0545('0x37')]:_0x17bc24[_0x0545('0x31')];if(!_0xb906ff['query'][_0x0545('0x3a')]('nolimit')){_0x3e0e01[_0x0545('0x1d')]=qs[_0x0545('0x1d')](_0xb906ff[_0x0545('0x33')][_0x0545('0x1d')]);_0x3e0e01[_0x0545('0x1b')]=qs[_0x0545('0x1b')](_0xb906ff[_0x0545('0x33')]['offset']);}_0x3e0e01[_0x0545('0x3b')]=qs[_0x0545('0x3c')](_0xb906ff['query']['sort']);_0x3e0e01['where']=qs[_0x0545('0x35')](_[_0x0545('0x3d')](_0xb906ff['query'],_0x17bc24[_0x0545('0x35')]),_0x534b4d);if(_0xb906ff[_0x0545('0x33')][_0x0545('0x3e')]){_0x3e0e01[_0x0545('0x3f')]=_[_0x0545('0x40')](_0x3e0e01[_0x0545('0x3f')],{'$or':_['map'](_0x534b4d,function(_0x563175){if(_0x563175['type']!=='VIRTUAL'){var _0x487f40={};_0x487f40[_0x563175[_0x0545('0x2b')]]={'$like':'%'+_0xb906ff[_0x0545('0x33')][_0x0545('0x3e')]+'%'};return _0x487f40;}})});}_0x3e0e01=_[_0x0545('0x40')]({},_0x3e0e01,_0xb906ff['options']);var _0x415bef={'where':_0x3e0e01['where']};return db['Sound'][_0x0545('0x1e')](_0x415bef)[_0x0545('0x24')](function(_0x49274d){_0x419479[_0x0545('0x1e')]=_0x49274d;if(_0xb906ff[_0x0545('0x33')][_0x0545('0x41')]){_0x3e0e01['include']=[{'all':!![]}];}return db[_0x0545('0x2d')]['findAll'](_0x3e0e01);})[_0x0545('0x24')](function(_0x55b3b4){_0x419479[_0x0545('0x42')]=_0x55b3b4;return _0x419479;})['then'](respondWithFilteredResult(_0x159cff,_0x3e0e01))[_0x0545('0x43')](handleError(_0x159cff,null));};exports['show']=function(_0x24ff43,_0x540611){var _0x5f1b2c={'raw':!![],'where':{'id':_0x24ff43[_0x0545('0x44')]['id']}},_0x2c9797={};_0x2c9797[_0x0545('0x31')]=_[_0x0545('0x34')](db[_0x0545('0x2d')][_0x0545('0x2e')]);_0x2c9797[_0x0545('0x33')]=_[_0x0545('0x34')](_0x24ff43[_0x0545('0x33')]);_0x2c9797[_0x0545('0x35')]=_[_0x0545('0x36')](_0x2c9797[_0x0545('0x31')],_0x2c9797[_0x0545('0x33')]);_0x5f1b2c[_0x0545('0x37')]=_['intersection'](_0x2c9797[_0x0545('0x31')],qs[_0x0545('0x38')](_0x24ff43[_0x0545('0x33')]['fields']));_0x5f1b2c[_0x0545('0x37')]=_0x5f1b2c[_0x0545('0x37')][_0x0545('0x39')]?_0x5f1b2c[_0x0545('0x37')]:_0x2c9797['model'];if(_0x24ff43[_0x0545('0x33')]['includeAll']){_0x5f1b2c['include']=[{'all':!![]}];}_0x5f1b2c=_[_0x0545('0x40')]({},_0x5f1b2c,_0x24ff43[_0x0545('0x45')]);return db[_0x0545('0x2d')][_0x0545('0x46')](_0x5f1b2c)['then'](handleEntityNotFound(_0x540611,null))['then'](respondWithResult(_0x540611,null))['catch'](handleError(_0x540611,null));};exports[_0x0545('0x47')]=function(_0x3b22a9,_0x46a03b,_0x291c6f){return db[_0x0545('0x2d')][_0x0545('0x46')]({'where':{'id':_0x3b22a9[_0x0545('0x44')]['id']},'attributes':['name',_0x0545('0x48'),_0x0545('0x49')],'raw':!![]})[_0x0545('0x24')](handleEntityNotFound(_0x46a03b,null))[_0x0545('0x24')](function(_0x50c4f9){if(_0x50c4f9){if(!fs['existsSync'](path['join'](config[_0x0545('0x4a')],_0x0545('0x4b'),_0x50c4f9[_0x0545('0x48')]+'.'+_0x50c4f9[_0x0545('0x49')]))){throw new db['Sequelize'][(_0x0545('0x4c'))]('Sound\x20not\x20found');}return _0x46a03b[_0x0545('0x47')](path[_0x0545('0x4d')](config[_0x0545('0x4a')],'server/files/sounds/converted',util[_0x0545('0x4e')](_0x0545('0x4f'),_0x50c4f9['save_name'],_0x50c4f9[_0x0545('0x49')])),util[_0x0545('0x4e')](_0x0545('0x4f'),_0x50c4f9[_0x0545('0x2b')],_0x50c4f9['converted_format']));}return null;})['catch'](handleError(_0x46a03b,null));};exports[_0x0545('0x50')]=function(_0x7cb9ab,_0x4c507e,_0x41e1ef){var _0x3ccab8={'name':path['basename'](_0x7cb9ab[_0x0545('0x51')][_0x0545('0x52')],path['extname'](_0x7cb9ab[_0x0545('0x51')][_0x0545('0x52')])),'save_name':path[_0x0545('0x53')](_0x7cb9ab[_0x0545('0x51')][_0x0545('0x54')],path[_0x0545('0x55')](_0x7cb9ab['file'][_0x0545('0x54')])),'original_format':path[_0x0545('0x55')](_0x7cb9ab['file'][_0x0545('0x52')])[_0x0545('0x56')](0x1),'converted_format':'wav'};var _0x8e90cb=path[_0x0545('0x4d')](config['root'],_0x0545('0x57'),_0x7cb9ab['file'][_0x0545('0x54')]);var _0x282ece=path[_0x0545('0x4d')](config[_0x0545('0x4a')],_0x0545('0x4b'),util['format'](_0x0545('0x4f'),path[_0x0545('0x53')](_0x7cb9ab[_0x0545('0x51')]['filename'],path[_0x0545('0x55')](_0x7cb9ab['file'][_0x0545('0x54')])),_0x3ccab8[_0x0545('0x49')]));logger[_0x0545('0x58')](_0x0545('0x59'),_0x8e90cb);logger[_0x0545('0x58')](_0x0545('0x5a'),_0x282ece);try{fs[_0x0545('0x5b')](_0x8e90cb,parseInt(_0x0545('0x5c'),0x8));var _0xd4a011=sox['transcode'](_0x8e90cb,_0x282ece,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xd4a011['on'](_0x0545('0x5d'),function(_0x5d52af){fs[_0x0545('0x5e')](_0x8e90cb);_0x4c507e[_0x0545('0x19')](0x1f4)['send'](_0x5d52af);});_0xd4a011['on'](_0x0545('0x5f'),function(_0xfdfb00){_0x3ccab8['original_duration']=isNaN(_0xfdfb00[_0x0545('0x60')])?null:_0xfdfb00['duration']*0x3e8;_0x3ccab8[_0x0545('0x61')]=isNaN(_0xfdfb00[_0x0545('0x62')])?null:_0xfdfb00[_0x0545('0x62')];_0x3ccab8[_0x0545('0x63')]=isNaN(_0xfdfb00['channelCount'])?null:_0xfdfb00[_0x0545('0x64')];_0x3ccab8[_0x0545('0x65')]=isNaN(_0xfdfb00[_0x0545('0x66')])?null:_0xfdfb00[_0x0545('0x66')];_0x3ccab8[_0x0545('0x67')]=isNaN(_0xfdfb00[_0x0545('0x68')])?null:_0xfdfb00[_0x0545('0x68')];});_0xd4a011['on'](_0x0545('0x69'),function(_0x3ffea4){_0x3ccab8[_0x0545('0x6a')]=isNaN(_0x3ffea4['duration'])?null:_0x3ffea4[_0x0545('0x60')]*0x3e8;_0x3ccab8[_0x0545('0x6b')]=isNaN(_0x3ffea4[_0x0545('0x62')])?null:_0x3ffea4['sampleCount'];_0x3ccab8['converted_channelCount']=isNaN(_0x3ffea4['channelCount'])?null:_0x3ffea4[_0x0545('0x64')];_0x3ccab8[_0x0545('0x6c')]=isNaN(_0x3ffea4['bitRate'])?null:_0x3ffea4[_0x0545('0x66')];_0x3ccab8['converted_sampleRate']=isNaN(_0x3ffea4['sampleRate'])?null:_0x3ffea4['sampleRate'];});_0xd4a011['on']('end',function(){fs[_0x0545('0x5b')](_0x282ece,parseInt(_0x0545('0x5c'),0x8));return db[_0x0545('0x2d')][_0x0545('0x50')](_0x3ccab8)[_0x0545('0x24')](function(_0x59ae65){var _0xc951c0={'role':_0x7cb9ab['body']['role'],'userProfileId':_0x7cb9ab[_0x0545('0x6d')][_0x0545('0x6e')]};if(!_0xc951c0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xc951c0[_0x0545('0x6f')]===_0x0545('0x70')){var _0x2b61e1=_0x59ae65[_0x0545('0x26')]({'plain':!![]});return db[_0x0545('0x71')][_0x0545('0x46')]({'where':{'name':_0x0545('0x27'),'userProfileId':_0xc951c0[_0x0545('0x6e')]},'raw':!![]})[_0x0545('0x24')](function(_0xd3505c){if(_0xd3505c&&_0xd3505c[_0x0545('0x72')]===0x0){return db[_0x0545('0x28')]['create']({'name':_0x2b61e1[_0x0545('0x2b')],'resourceId':_0x2b61e1['id'],'type':_0xd3505c[_0x0545('0x2b')],'sectionId':_0xd3505c['id']},{})[_0x0545('0x24')](function(){return _0x59ae65;});}else{return _0x59ae65;}})[_0x0545('0x43')](function(_0x437eb1){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x437eb1);throw _0x437eb1;});}return _0x59ae65;})['then'](respondWithResult(_0x4c507e,null))[_0x0545('0x43')](handleError(_0x4c507e,null));});_0xd4a011[_0x0545('0x73')]();}catch(_0x4f265f){_0x4c507e[_0x0545('0x19')](0x1f4)[_0x0545('0x74')](_0x4f265f);}};exports[_0x0545('0x23')]=function(_0x5dc1f3,_0x3a874d,_0x5b9c4a){return db['Sound']['find']({'where':{'id':_0x5dc1f3[_0x0545('0x44')]['id']}})[_0x0545('0x24')](handleEntityNotFound(_0x3a874d,null))[_0x0545('0x24')](saveUpdates(_['pick'](_0x5dc1f3[_0x0545('0x6d')],['name',_0x0545('0x75')]),null))['then'](respondWithResult(_0x3a874d,null))['catch'](handleError(_0x3a874d,null));};exports[_0x0545('0x76')]=function(_0x3d1a00,_0x239be0,_0x4041fa){return db['Sound'][_0x0545('0x46')]({'where':{'id':_0x3d1a00['params']['id']}})[_0x0545('0x24')](function(_0x299098){if(_0x299098){return _0x299098[_0x0545('0x25')]();}})[_0x0545('0x24')](function(_0x5cdb22){var _0x2a4633=path[_0x0545('0x4d')](config[_0x0545('0x4a')],_0x0545('0x57'),util[_0x0545('0x4e')](_0x0545('0x4f'),_0x5cdb22[_0x0545('0x48')],_0x5cdb22[_0x0545('0x77')]));var _0x5b5c65=path[_0x0545('0x4d')](config[_0x0545('0x4a')],_0x0545('0x4b'),util['format']('%s.%s',_0x5cdb22[_0x0545('0x48')],_0x5cdb22[_0x0545('0x49')]));fs[_0x0545('0x5e')](_0x2a4633);fs[_0x0545('0x5e')](_0x5b5c65);return _0x5cdb22;})[_0x0545('0x24')](function(_0xd20da7){if(_0xd20da7){return _0x239be0['status'](0xcc)[_0x0545('0x29')]();}})['then'](handleEntityNotFound(_0x239be0,null))[_0x0545('0x43')](handleError(_0x239be0,null));};
\ No newline at end of file
index ce89661..34ab1a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e3f=['request-promise','./sound.attributes','exports','define','tools_sounds','lodash','util','../../config/logger','moment','bluebird'];(function(_0x384bb9,_0x447607){var _0x649cf2=function(_0x556a6d){while(--_0x556a6d){_0x384bb9['push'](_0x384bb9['shift']());}};_0x649cf2(++_0x447607);}(_0x4e3f,0xaf));var _0xf4e3=function(_0x513980,_0xdb33f1){_0x513980=_0x513980-0x0;var _0x5cbcfe=_0x4e3f[_0x513980];return _0x5cbcfe;};'use strict';var _=require(_0xf4e3('0x0'));var util=require(_0xf4e3('0x1'));var logger=require(_0xf4e3('0x2'))('api');var moment=require(_0xf4e3('0x3'));var BPromise=require(_0xf4e3('0x4'));var rp=require(_0xf4e3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf4e3('0x6'));module[_0xf4e3('0x7')]=function(_0x42c549,_0x3c0c27){return _0x42c549[_0xf4e3('0x8')]('Sound',attributes,{'tableName':_0xf4e3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x090d=['request-promise','path','./sound.attributes','exports','define','../../config/logger','api','moment','bluebird'];(function(_0x25b24a,_0x1c0163){var _0x224e68=function(_0x1fc9d2){while(--_0x1fc9d2){_0x25b24a['push'](_0x25b24a['shift']());}};_0x224e68(++_0x1c0163);}(_0x090d,0x71));var _0xd090=function(_0x12d17d,_0x2ee1f7){_0x12d17d=_0x12d17d-0x0;var _0x47219d=_0x090d[_0x12d17d];return _0x47219d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd090('0x0'))(_0xd090('0x1'));var moment=require(_0xd090('0x2'));var BPromise=require(_0xd090('0x3'));var rp=require(_0xd090('0x4'));var fs=require('fs');var path=require(_0xd090('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd090('0x6'));module[_0xd090('0x7')]=function(_0x1ffd44,_0x47a457){return _0x1ffd44[_0xd090('0x8')]('Sound',attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c5085d7..86a664c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe50a=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','error','code','Sound,\x20%s,\x20%s','message','result','catch','ShowSound','find','options','where','map','include','attributes','model','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x51d129,_0x175d7d){var _0x44c377=function(_0x5ee454){while(--_0x5ee454){_0x51d129['push'](_0x51d129['shift']());}};_0x44c377(++_0x175d7d);}(_0xe50a,0x130));var _0xae50=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xe50a[_0x187ee1];return _0x388160;};'use strict';var _=require(_0xae50('0x0'));var util=require(_0xae50('0x1'));var moment=require('moment');var BPromise=require(_0xae50('0x2'));var rs=require(_0xae50('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xae50('0x4'))['db'];var utils=require(_0xae50('0x5'));var logger=require(_0xae50('0x6'))(_0xae50('0x7'));var config=require(_0xae50('0x8'));var jayson=require(_0xae50('0x9'));var client=jayson['client'][_0xae50('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1f5cb8,_0x5517e9,_0x4f1c5b){return new BPromise(function(_0x44b254,_0x4453cd){return client[_0xae50('0xb')](_0x1f5cb8,_0x4f1c5b)[_0xae50('0xc')](function(_0x224269){logger[_0xae50('0xd')]('Sound,\x20%s,\x20%s',_0x5517e9,_0xae50('0xe'));logger[_0xae50('0xf')](_0xae50('0x10'),_0x5517e9,'request\x20sent',JSON['stringify'](_0x224269));if(_0x224269[_0xae50('0x11')]){if(_0x224269[_0xae50('0x11')][_0xae50('0x12')]===0x1f4){logger['error'](_0xae50('0x13'),_0x5517e9,_0x224269['error'][_0xae50('0x14')]);return _0x4453cd(_0x224269[_0xae50('0x11')][_0xae50('0x14')]);}logger['error'](_0xae50('0x13'),_0x5517e9,_0x224269[_0xae50('0x11')]['message']);return _0x44b254(_0x224269[_0xae50('0x11')][_0xae50('0x14')]);}else{logger[_0xae50('0xd')]('Sound,\x20%s,\x20%s',_0x5517e9,_0xae50('0xe'));_0x44b254(_0x224269[_0xae50('0x15')][_0xae50('0x14')]);}})[_0xae50('0x16')](function(_0x57767d){logger['error']('Sound,\x20%s,\x20%s',_0x5517e9,_0x57767d);_0x4453cd(_0x57767d);});});}exports[_0xae50('0x17')]=function(_0x4e7964){var _0xc7b762=this;return new Promise(function(_0x390d29,_0x33d998){return db['Sound'][_0xae50('0x18')]({'raw':_0x4e7964['options']?_0x4e7964[_0xae50('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4e7964[_0xae50('0x19')]?_0x4e7964[_0xae50('0x19')][_0xae50('0x1a')]||null:null,'attributes':_0x4e7964[_0xae50('0x19')]?_0x4e7964['options']['attributes']||null:null,'include':_0x4e7964[_0xae50('0x19')]?_0x4e7964['options']['include']?_[_0xae50('0x1b')](_0x4e7964[_0xae50('0x19')][_0xae50('0x1c')],function(_0x34e4ec){return{'model':db[_0x34e4ec['model']],'as':_0x34e4ec['as'],'attributes':_0x34e4ec[_0xae50('0x1d')],'include':_0x34e4ec[_0xae50('0x1c')]?_[_0xae50('0x1b')](_0x34e4ec[_0xae50('0x1c')],function(_0x4179b3){return{'model':db[_0x4179b3[_0xae50('0x1e')]],'as':_0x4179b3['as'],'attributes':_0x4179b3[_0xae50('0x1d')],'include':_0x4179b3['include']?_[_0xae50('0x1b')](_0x4179b3[_0xae50('0x1c')],function(_0x24337e){return{'model':db[_0x24337e[_0xae50('0x1e')]],'as':_0x24337e['as'],'attributes':_0x24337e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x680b40){logger[_0xae50('0xd')](_0xae50('0x17'),_0x4e7964);logger[_0xae50('0xf')](_0xae50('0x17'),_0x4e7964,JSON['stringify'](_0x680b40));_0x390d29(_0x680b40);})['catch'](function(_0x33c9a9){logger[_0xae50('0x11')]('ShowSound',_0x33c9a9[_0xae50('0x14')],_0x4e7964);_0x33d998(_0xc7b762[_0xae50('0x11')](0x1f4,_0x33c9a9[_0xae50('0x14')]));});});};
\ No newline at end of file
+var _0x0d7b=['attributes','include','model','map','catch','ShowSound','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','client','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','message','result','Sound','find','options','where'];(function(_0x3245f0,_0x3b3c10){var _0x1997a1=function(_0x24a76c){while(--_0x24a76c){_0x3245f0['push'](_0x3245f0['shift']());}};_0x1997a1(++_0x3b3c10);}(_0x0d7b,0x145));var _0xb0d7=function(_0x15fc8f,_0x5cdcde){_0x15fc8f=_0x15fc8f-0x0;var _0x480536=_0x0d7b[_0x15fc8f];return _0x480536;};'use strict';var _=require(_0xb0d7('0x0'));var util=require(_0xb0d7('0x1'));var moment=require(_0xb0d7('0x2'));var BPromise=require('bluebird');var rs=require(_0xb0d7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb0d7('0x4'))['db'];var utils=require(_0xb0d7('0x5'));var logger=require('../../config/logger')(_0xb0d7('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb0d7('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x23972e,_0x5ea0a5,_0x4ecc45){return new BPromise(function(_0x580147,_0x56f8f7){return client[_0xb0d7('0x8')](_0x23972e,_0x4ecc45)[_0xb0d7('0x9')](function(_0x407dc4){logger[_0xb0d7('0xa')](_0xb0d7('0xb'),_0x5ea0a5,_0xb0d7('0xc'));logger[_0xb0d7('0xd')](_0xb0d7('0xe'),_0x5ea0a5,_0xb0d7('0xc'),JSON[_0xb0d7('0xf')](_0x407dc4));if(_0x407dc4['error']){if(_0x407dc4['error']['code']===0x1f4){logger[_0xb0d7('0x10')](_0xb0d7('0xb'),_0x5ea0a5,_0x407dc4[_0xb0d7('0x10')]['message']);return _0x56f8f7(_0x407dc4[_0xb0d7('0x10')]['message']);}logger[_0xb0d7('0x10')](_0xb0d7('0xb'),_0x5ea0a5,_0x407dc4['error'][_0xb0d7('0x11')]);return _0x580147(_0x407dc4[_0xb0d7('0x10')][_0xb0d7('0x11')]);}else{logger[_0xb0d7('0xa')](_0xb0d7('0xb'),_0x5ea0a5,_0xb0d7('0xc'));_0x580147(_0x407dc4[_0xb0d7('0x12')][_0xb0d7('0x11')]);}})['catch'](function(_0x2a128d){logger[_0xb0d7('0x10')](_0xb0d7('0xb'),_0x5ea0a5,_0x2a128d);_0x56f8f7(_0x2a128d);});});}exports['ShowSound']=function(_0x5bcf50){var _0x3a0951=this;return new Promise(function(_0x58094b,_0x34395c){return db[_0xb0d7('0x13')][_0xb0d7('0x14')]({'raw':_0x5bcf50[_0xb0d7('0x15')]?_0x5bcf50['options']['raw']===undefined?!![]:![]:!![],'where':_0x5bcf50['options']?_0x5bcf50[_0xb0d7('0x15')][_0xb0d7('0x16')]||null:null,'attributes':_0x5bcf50[_0xb0d7('0x15')]?_0x5bcf50[_0xb0d7('0x15')][_0xb0d7('0x17')]||null:null,'include':_0x5bcf50[_0xb0d7('0x15')]?_0x5bcf50[_0xb0d7('0x15')]['include']?_['map'](_0x5bcf50[_0xb0d7('0x15')][_0xb0d7('0x18')],function(_0x3213bd){return{'model':db[_0x3213bd[_0xb0d7('0x19')]],'as':_0x3213bd['as'],'attributes':_0x3213bd[_0xb0d7('0x17')],'include':_0x3213bd['include']?_[_0xb0d7('0x1a')](_0x3213bd[_0xb0d7('0x18')],function(_0x3b81ee){return{'model':db[_0x3b81ee[_0xb0d7('0x19')]],'as':_0x3b81ee['as'],'attributes':_0x3b81ee[_0xb0d7('0x17')],'include':_0x3b81ee[_0xb0d7('0x18')]?_[_0xb0d7('0x1a')](_0x3b81ee[_0xb0d7('0x18')],function(_0x1b5173){return{'model':db[_0x1b5173[_0xb0d7('0x19')]],'as':_0x1b5173['as'],'attributes':_0x1b5173[_0xb0d7('0x17')]};}):[]};}):[]};}):[]:[]})[_0xb0d7('0x9')](function(_0x1e4bd4){logger[_0xb0d7('0xa')]('ShowSound',_0x5bcf50);logger[_0xb0d7('0xd')]('ShowSound',_0x5bcf50,JSON[_0xb0d7('0xf')](_0x1e4bd4));_0x58094b(_0x1e4bd4);})[_0xb0d7('0x1b')](function(_0x341282){logger['error'](_0xb0d7('0x1c'),_0x341282[_0xb0d7('0x11')],_0x5bcf50);_0x34395c(_0x3a0951[_0xb0d7('0x10')](0x1f4,_0x341282[_0xb0d7('0x11')]));});});};
\ No newline at end of file
index 7790054..d691a19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['./squareMessage.controller','get','index','isAuthenticated','show','post','create','put','/:id','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3eb24f,_0x59863f){var _0x57ffa9=function(_0x4d63c5){while(--_0x4d63c5){_0x3eb24f['push'](_0x3eb24f['shift']());}};_0x57ffa9(++_0x59863f);}(_0xb10b,0x12a));var _0xbb10=function(_0x3e2f39,_0x52276d){_0x3e2f39=_0x3e2f39-0x0;var _0x1f915c=_0xb10b[_0x3e2f39];return _0x1f915c;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0xd')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['update']);router['delete'](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x5f66=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','update','delete','destroy'];(function(_0x46946a,_0x47484b){var _0x374f0e=function(_0x54de33){while(--_0x54de33){_0x46946a['push'](_0x46946a['shift']());}};_0x374f0e(++_0x47484b);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x5f66[_0x4243a3];return _0x1b2a33;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./squareMessage.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0xb')]('/',auth[_0x65f6('0x8')](),controller[_0x65f6('0xc')]);router['put']('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0xe')](_0x65f6('0x9'),auth['isAuthenticated'](),controller[_0x65f6('0xf')]);module['exports']=router;
\ No newline at end of file
index 3ff0cc3..20a1445 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b9d=['TEXT','medium','ENUM','out','STRING'];(function(_0x1b074d,_0x24f3a5){var _0x2c7573=function(_0x41e127){while(--_0x41e127){_0x1b074d['push'](_0x1b074d['shift']());}};_0x2c7573(++_0x24f3a5);}(_0x5b9d,0x1da));var _0xd5b9=function(_0x12d0bb,_0x56430a){_0x12d0bb=_0x12d0bb-0x0;var _0x44e5af=_0x5b9d[_0x12d0bb];return _0x44e5af;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xd5b9('0x0')]},'body':{'type':Sequelize[_0xd5b9('0x1')](_0xd5b9('0x2')),'allowNull':![]},'direction':{'type':Sequelize[_0xd5b9('0x3')]('in',_0xd5b9('0x4')),'defaultValue':_0xd5b9('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0xd5b9('0x0')]},'providerResponse':{'type':Sequelize[_0xd5b9('0x1')]}};
\ No newline at end of file
+var _0xb649=['sequelize','exports','TEXT','ENUM','out','STRING'];(function(_0x9cf913,_0x47721d){var _0x2aff3b=function(_0x3b666d){while(--_0x3b666d){_0x9cf913['push'](_0x9cf913['shift']());}};_0x2aff3b(++_0x47721d);}(_0xb649,0xe4));var _0x9b64=function(_0x2e2f84,_0x24e46f){_0x2e2f84=_0x2e2f84-0x0;var _0x448191=_0xb649[_0x2e2f84];return _0x448191;};'use strict';var Sequelize=require(_0x9b64('0x0'));module[_0x9b64('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0x9b64('0x2')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x9b64('0x3')]('in',_0x9b64('0x4')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0x9b64('0x5')]},'providerResponse':{'type':Sequelize[_0x9b64('0x2')]}};
\ No newline at end of file
index 530b694..d81df72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb6a=['set','apply','reject','save','update','then','error','name','index','SquareMessage','type','key','model','map','keys','query','filters','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','length','find','create','body','eml-format','rimraf','request-promise','moment','mustache','util','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','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xeb6a,0x1a1));var _0xaeb6=function(_0xd17549,_0x13c545){_0xd17549=_0xd17549-0x0;var _0x577488=_0xeb6a[_0xd17549];return _0x577488;};'use strict';var emlformat=require(_0xaeb6('0x0'));var rimraf=require(_0xaeb6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xaeb6('0x2'));var moment=require(_0xaeb6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xaeb6('0x4'));var util=require(_0xaeb6('0x5'));var path=require(_0xaeb6('0x6'));var sox=require(_0xaeb6('0x7'));var csv=require(_0xaeb6('0x8'));var ejs=require(_0xaeb6('0x9'));var fs=require('fs');var fs_extra=require(_0xaeb6('0xa'));var _=require(_0xaeb6('0xb'));var squel=require(_0xaeb6('0xc'));var crypto=require(_0xaeb6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xaeb6('0xe'));var toCsv=require(_0xaeb6('0x8'));var querystring=require(_0xaeb6('0xf'));var Papa=require(_0xaeb6('0x10'));var Redis=require('ioredis');var authService=require(_0xaeb6('0x11'));var qs=require(_0xaeb6('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaeb6('0x13'));var logger=require('../../config/logger')(_0xaeb6('0x14'));var utils=require(_0xaeb6('0x15'));var config=require(_0xaeb6('0x16'));var licenseUtil=require(_0xaeb6('0x17'));var db=require(_0xaeb6('0x18'))['db'];function respondWithStatusCode(_0x339cb1,_0x1db952){_0x1db952=_0x1db952||0xcc;return function(_0x23423e){if(_0x23423e){return _0x339cb1[_0xaeb6('0x19')](_0x1db952);}return _0x339cb1['status'](_0x1db952)[_0xaeb6('0x1a')]();};}function respondWithResult(_0x53c5cd,_0x5a1759){_0x5a1759=_0x5a1759||0xc8;return function(_0x294d19){if(_0x294d19){return _0x53c5cd[_0xaeb6('0x1b')](_0x5a1759)[_0xaeb6('0x1c')](_0x294d19);}};}function respondWithFilteredResult(_0x20455b,_0x3533e9){return function(_0x1ee6c3){if(_0x1ee6c3){var _0x5424e6=typeof _0x3533e9['offset']===_0xaeb6('0x1d')&&typeof _0x3533e9[_0xaeb6('0x1e')]===_0xaeb6('0x1d');var _0x5d12af=_0x1ee6c3[_0xaeb6('0x1f')];var _0x1c965f=_0x5424e6?0x0:_0x3533e9[_0xaeb6('0x20')];var _0x1c39cc=_0x5424e6?_0x1ee6c3[_0xaeb6('0x1f')]:_0x3533e9[_0xaeb6('0x20')]+_0x3533e9[_0xaeb6('0x1e')];var _0x4586a5;if(_0x1c39cc>=_0x5d12af){_0x1c39cc=_0x5d12af;_0x4586a5=0xc8;}else{_0x4586a5=0xce;}_0x20455b[_0xaeb6('0x1b')](_0x4586a5);return _0x20455b[_0xaeb6('0x21')]('Content-Range',_0x1c965f+'-'+_0x1c39cc+'/'+_0x5d12af)[_0xaeb6('0x1c')](_0x1ee6c3);}return null;};}function patchUpdates(_0x4281ae){return function(_0xeca542){try{jsonpatch[_0xaeb6('0x22')](_0xeca542,_0x4281ae,!![]);}catch(_0x3d37e6){return BPromise[_0xaeb6('0x23')](_0x3d37e6);}return _0xeca542[_0xaeb6('0x24')]();};}function saveUpdates(_0xdea92c,_0x31e65a){return function(_0xac9481){if(_0xac9481){return _0xac9481[_0xaeb6('0x25')](_0xdea92c)[_0xaeb6('0x26')](function(_0xa73e59){return _0xa73e59;});}return null;};}function removeEntity(_0x37ac57,_0x47655f){return function(_0x1c7990){if(_0x1c7990){return _0x1c7990['destroy']()['then'](function(){_0x37ac57[_0xaeb6('0x1b')](0xcc)[_0xaeb6('0x1a')]();});}};}function handleEntityNotFound(_0x246edf,_0x3c2196){return function(_0x5cbff6){if(!_0x5cbff6){_0x246edf[_0xaeb6('0x19')](0x194);}return _0x5cbff6;};}function handleError(_0x4ed5fb,_0x597806){_0x597806=_0x597806||0x1f4;return function(_0x3fff77){logger[_0xaeb6('0x27')](_0x3fff77['stack']);if(_0x3fff77[_0xaeb6('0x28')]){delete _0x3fff77[_0xaeb6('0x28')];}_0x4ed5fb[_0xaeb6('0x1b')](_0x597806)['send'](_0x3fff77);};}exports[_0xaeb6('0x29')]=function(_0x16b300,_0x3afc07){var _0x38715f={},_0x1dbc60={},_0xf3c6d6={'count':0x0,'rows':[]};var _0x3d13b8=_['map'](db[_0xaeb6('0x2a')]['rawAttributes'],function(_0x3de7d8){return{'name':_0x3de7d8['fieldName'],'type':_0x3de7d8[_0xaeb6('0x2b')][_0xaeb6('0x2c')]};});_0x1dbc60[_0xaeb6('0x2d')]=_[_0xaeb6('0x2e')](_0x3d13b8,'name');_0x1dbc60['query']=_[_0xaeb6('0x2f')](_0x16b300[_0xaeb6('0x30')]);_0x1dbc60[_0xaeb6('0x31')]=_['intersection'](_0x1dbc60['model'],_0x1dbc60[_0xaeb6('0x30')]);_0x38715f['attributes']=_['intersection'](_0x1dbc60[_0xaeb6('0x2d')],qs[_0xaeb6('0x32')](_0x16b300[_0xaeb6('0x30')][_0xaeb6('0x32')]));_0x38715f['attributes']=_0x38715f[_0xaeb6('0x33')]['length']?_0x38715f[_0xaeb6('0x33')]:_0x1dbc60[_0xaeb6('0x2d')];if(!_0x16b300[_0xaeb6('0x30')][_0xaeb6('0x34')](_0xaeb6('0x35'))){_0x38715f[_0xaeb6('0x1e')]=qs[_0xaeb6('0x1e')](_0x16b300[_0xaeb6('0x30')]['limit']);_0x38715f[_0xaeb6('0x20')]=qs[_0xaeb6('0x20')](_0x16b300['query'][_0xaeb6('0x20')]);}_0x38715f[_0xaeb6('0x36')]=qs[_0xaeb6('0x37')](_0x16b300[_0xaeb6('0x30')][_0xaeb6('0x37')]);_0x38715f['where']=qs[_0xaeb6('0x31')](_[_0xaeb6('0x38')](_0x16b300['query'],_0x1dbc60[_0xaeb6('0x31')]),_0x3d13b8);if(_0x16b300[_0xaeb6('0x30')][_0xaeb6('0x39')]){_0x38715f['where']=_[_0xaeb6('0x3a')](_0x38715f[_0xaeb6('0x3b')],{'$or':_['map'](_0x3d13b8,function(_0x45255e){if(_0x45255e[_0xaeb6('0x2b')]!==_0xaeb6('0x3c')){var _0x570e51={};_0x570e51[_0x45255e[_0xaeb6('0x28')]]={'$like':'%'+_0x16b300[_0xaeb6('0x30')][_0xaeb6('0x39')]+'%'};return _0x570e51;}})});}_0x38715f=_[_0xaeb6('0x3a')]({},_0x38715f,_0x16b300[_0xaeb6('0x3d')]);var _0x50ab9c={'where':_0x38715f[_0xaeb6('0x3b')]};return db['SquareMessage'][_0xaeb6('0x1f')](_0x50ab9c)[_0xaeb6('0x26')](function(_0x10c47c){_0xf3c6d6[_0xaeb6('0x1f')]=_0x10c47c;if(_0x16b300[_0xaeb6('0x30')][_0xaeb6('0x3e')]){_0x38715f[_0xaeb6('0x3f')]=[{'all':!![]}];}return db[_0xaeb6('0x2a')][_0xaeb6('0x40')](_0x38715f);})[_0xaeb6('0x26')](function(_0x36e679){_0xf3c6d6[_0xaeb6('0x41')]=_0x36e679;return _0xf3c6d6;})[_0xaeb6('0x26')](respondWithFilteredResult(_0x3afc07,_0x38715f))[_0xaeb6('0x42')](handleError(_0x3afc07,null));};exports[_0xaeb6('0x43')]=function(_0x4b6533,_0x287549){var _0x88761c={'raw':!![],'where':{'id':_0x4b6533[_0xaeb6('0x44')]['id']}},_0x5861a6={};_0x5861a6[_0xaeb6('0x2d')]=_['keys'](db[_0xaeb6('0x2a')][_0xaeb6('0x45')]);_0x5861a6[_0xaeb6('0x30')]=_[_0xaeb6('0x2f')](_0x4b6533[_0xaeb6('0x30')]);_0x5861a6[_0xaeb6('0x31')]=_[_0xaeb6('0x46')](_0x5861a6[_0xaeb6('0x2d')],_0x5861a6[_0xaeb6('0x30')]);_0x88761c['attributes']=_[_0xaeb6('0x46')](_0x5861a6['model'],qs['fields'](_0x4b6533[_0xaeb6('0x30')][_0xaeb6('0x32')]));_0x88761c[_0xaeb6('0x33')]=_0x88761c[_0xaeb6('0x33')][_0xaeb6('0x47')]?_0x88761c[_0xaeb6('0x33')]:_0x5861a6[_0xaeb6('0x2d')];if(_0x4b6533[_0xaeb6('0x30')][_0xaeb6('0x3e')]){_0x88761c[_0xaeb6('0x3f')]=[{'all':!![]}];}_0x88761c=_[_0xaeb6('0x3a')]({},_0x88761c,_0x4b6533[_0xaeb6('0x3d')]);return db[_0xaeb6('0x2a')][_0xaeb6('0x48')](_0x88761c)['then'](handleEntityNotFound(_0x287549,null))[_0xaeb6('0x26')](respondWithResult(_0x287549,null))[_0xaeb6('0x42')](handleError(_0x287549,null));};exports[_0xaeb6('0x49')]=function(_0xb5f9c8,_0x15ec3e){return db[_0xaeb6('0x2a')]['create'](_0xb5f9c8['body'],{})[_0xaeb6('0x26')](respondWithResult(_0x15ec3e,0xc9))['catch'](handleError(_0x15ec3e,null));};exports[_0xaeb6('0x25')]=function(_0xd65c9d,_0x546a00){if(_0xd65c9d[_0xaeb6('0x4a')]['id']){delete _0xd65c9d[_0xaeb6('0x4a')]['id'];}return db['SquareMessage']['find']({'where':{'id':_0xd65c9d[_0xaeb6('0x44')]['id']}})[_0xaeb6('0x26')](handleEntityNotFound(_0x546a00,null))['then'](saveUpdates(_0xd65c9d[_0xaeb6('0x4a')],null))[_0xaeb6('0x26')](respondWithResult(_0x546a00,null))[_0xaeb6('0x42')](handleError(_0x546a00,null));};exports['destroy']=function(_0x5be568,_0x2e5c58){return db[_0xaeb6('0x2a')][_0xaeb6('0x48')]({'where':{'id':_0x5be568[_0xaeb6('0x44')]['id']}})['then'](handleEntityNotFound(_0x2e5c58,null))[_0xaeb6('0x26')](removeEntity(_0x2e5c58,null))[_0xaeb6('0x42')](handleError(_0x2e5c58,null));};
\ No newline at end of file
+var _0x219f=['then','destroy','sendStatus','error','name','send','index','map','SquareMessage','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','show','params','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','end','offset','undefined','count','limit','reject','save','update'];(function(_0x31fe36,_0x5814de){var _0x5f3add=function(_0x33fd21){while(--_0x33fd21){_0x31fe36['push'](_0x31fe36['shift']());}};_0x5f3add(++_0x5814de);}(_0x219f,0x141));var _0xf219=function(_0x418a57,_0x104e92){_0x418a57=_0x418a57-0x0;var _0x439e7c=_0x219f[_0x418a57];return _0x439e7c;};'use strict';var emlformat=require(_0xf219('0x0'));var rimraf=require(_0xf219('0x1'));var zipdir=require(_0xf219('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf219('0x3'));var moment=require(_0xf219('0x4'));var BPromise=require(_0xf219('0x5'));var Mustache=require(_0xf219('0x6'));var util=require(_0xf219('0x7'));var path=require(_0xf219('0x8'));var sox=require(_0xf219('0x9'));var csv=require('to-csv');var ejs=require(_0xf219('0xa'));var fs=require('fs');var fs_extra=require(_0xf219('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf219('0xc'));var deskjs=require(_0xf219('0xd'));var toCsv=require(_0xf219('0xe'));var querystring=require(_0xf219('0xf'));var Papa=require(_0xf219('0x10'));var Redis=require('ioredis');var authService=require(_0xf219('0x11'));var qs=require(_0xf219('0x12'));var as=require(_0xf219('0x13'));var hardwareService=require(_0xf219('0x14'));var logger=require(_0xf219('0x15'))(_0xf219('0x16'));var utils=require('../../config/utils');var config=require(_0xf219('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf219('0x18'))['db'];function respondWithStatusCode(_0x107037,_0x3cb053){_0x3cb053=_0x3cb053||0xcc;return function(_0x299d67){if(_0x299d67){return _0x107037['sendStatus'](_0x3cb053);}return _0x107037[_0xf219('0x19')](_0x3cb053)[_0xf219('0x1a')]();};}function respondWithResult(_0x4adec9,_0x1fd275){_0x1fd275=_0x1fd275||0xc8;return function(_0x2695a5){if(_0x2695a5){return _0x4adec9['status'](_0x1fd275)['json'](_0x2695a5);}};}function respondWithFilteredResult(_0x5c3953,_0x1c39e1){return function(_0x942311){if(_0x942311){var _0x8db7ad=typeof _0x1c39e1[_0xf219('0x1b')]===_0xf219('0x1c')&&typeof _0x1c39e1['limit']==='undefined';var _0x585b25=_0x942311[_0xf219('0x1d')];var _0x465739=_0x8db7ad?0x0:_0x1c39e1[_0xf219('0x1b')];var _0x270dff=_0x8db7ad?_0x942311['count']:_0x1c39e1['offset']+_0x1c39e1[_0xf219('0x1e')];var _0x59b2a8;if(_0x270dff>=_0x585b25){_0x270dff=_0x585b25;_0x59b2a8=0xc8;}else{_0x59b2a8=0xce;}_0x5c3953[_0xf219('0x19')](_0x59b2a8);return _0x5c3953['set']('Content-Range',_0x465739+'-'+_0x270dff+'/'+_0x585b25)['json'](_0x942311);}return null;};}function patchUpdates(_0x35ea24){return function(_0x59b330){try{jsonpatch['apply'](_0x59b330,_0x35ea24,!![]);}catch(_0x58b26c){return BPromise[_0xf219('0x1f')](_0x58b26c);}return _0x59b330[_0xf219('0x20')]();};}function saveUpdates(_0x507e1a,_0x7af441){return function(_0x207b4d){if(_0x207b4d){return _0x207b4d[_0xf219('0x21')](_0x507e1a)[_0xf219('0x22')](function(_0x16507a){return _0x16507a;});}return null;};}function removeEntity(_0x188443,_0x1eea60){return function(_0x5a49bb){if(_0x5a49bb){return _0x5a49bb[_0xf219('0x23')]()['then'](function(){_0x188443[_0xf219('0x19')](0xcc)[_0xf219('0x1a')]();});}};}function handleEntityNotFound(_0x324d09,_0x4034e2){return function(_0x1f808e){if(!_0x1f808e){_0x324d09[_0xf219('0x24')](0x194);}return _0x1f808e;};}function handleError(_0x20aee8,_0x576c1d){_0x576c1d=_0x576c1d||0x1f4;return function(_0x382b1e){logger[_0xf219('0x25')](_0x382b1e['stack']);if(_0x382b1e[_0xf219('0x26')]){delete _0x382b1e['name'];}_0x20aee8[_0xf219('0x19')](_0x576c1d)[_0xf219('0x27')](_0x382b1e);};}exports[_0xf219('0x28')]=function(_0x2e8370,_0x5697c4){var _0x5ae949={},_0xa45fed={},_0xd179ec={'count':0x0,'rows':[]};var _0x1e45d2=_[_0xf219('0x29')](db[_0xf219('0x2a')]['rawAttributes'],function(_0x275079){return{'name':_0x275079['fieldName'],'type':_0x275079[_0xf219('0x2b')]['key']};});_0xa45fed[_0xf219('0x2c')]=_[_0xf219('0x29')](_0x1e45d2,_0xf219('0x26'));_0xa45fed[_0xf219('0x2d')]=_[_0xf219('0x2e')](_0x2e8370['query']);_0xa45fed[_0xf219('0x2f')]=_[_0xf219('0x30')](_0xa45fed[_0xf219('0x2c')],_0xa45fed[_0xf219('0x2d')]);_0x5ae949[_0xf219('0x31')]=_[_0xf219('0x30')](_0xa45fed[_0xf219('0x2c')],qs[_0xf219('0x32')](_0x2e8370[_0xf219('0x2d')]['fields']));_0x5ae949['attributes']=_0x5ae949[_0xf219('0x31')][_0xf219('0x33')]?_0x5ae949[_0xf219('0x31')]:_0xa45fed[_0xf219('0x2c')];if(!_0x2e8370['query'][_0xf219('0x34')](_0xf219('0x35'))){_0x5ae949[_0xf219('0x1e')]=qs[_0xf219('0x1e')](_0x2e8370[_0xf219('0x2d')][_0xf219('0x1e')]);_0x5ae949[_0xf219('0x1b')]=qs[_0xf219('0x1b')](_0x2e8370['query'][_0xf219('0x1b')]);}_0x5ae949[_0xf219('0x36')]=qs['sort'](_0x2e8370['query'][_0xf219('0x37')]);_0x5ae949['where']=qs['filters'](_[_0xf219('0x38')](_0x2e8370['query'],_0xa45fed[_0xf219('0x2f')]),_0x1e45d2);if(_0x2e8370[_0xf219('0x2d')][_0xf219('0x39')]){_0x5ae949[_0xf219('0x3a')]=_[_0xf219('0x3b')](_0x5ae949['where'],{'$or':_[_0xf219('0x29')](_0x1e45d2,function(_0x56cc9b){if(_0x56cc9b[_0xf219('0x2b')]!==_0xf219('0x3c')){var _0x25c21c={};_0x25c21c[_0x56cc9b[_0xf219('0x26')]]={'$like':'%'+_0x2e8370['query']['filter']+'%'};return _0x25c21c;}})});}_0x5ae949=_[_0xf219('0x3b')]({},_0x5ae949,_0x2e8370[_0xf219('0x3d')]);var _0x4615c1={'where':_0x5ae949[_0xf219('0x3a')]};return db[_0xf219('0x2a')]['count'](_0x4615c1)['then'](function(_0xbaf26d){_0xd179ec[_0xf219('0x1d')]=_0xbaf26d;if(_0x2e8370[_0xf219('0x2d')]['includeAll']){_0x5ae949[_0xf219('0x3e')]=[{'all':!![]}];}return db['SquareMessage'][_0xf219('0x3f')](_0x5ae949);})['then'](function(_0x13e6ea){_0xd179ec['rows']=_0x13e6ea;return _0xd179ec;})[_0xf219('0x22')](respondWithFilteredResult(_0x5697c4,_0x5ae949))['catch'](handleError(_0x5697c4,null));};exports[_0xf219('0x40')]=function(_0x177201,_0xcdcf47){var _0x3419c1={'raw':!![],'where':{'id':_0x177201[_0xf219('0x41')]['id']}},_0xbcb8fb={};_0xbcb8fb[_0xf219('0x2c')]=_['keys'](db[_0xf219('0x2a')]['rawAttributes']);_0xbcb8fb[_0xf219('0x2d')]=_['keys'](_0x177201[_0xf219('0x2d')]);_0xbcb8fb[_0xf219('0x2f')]=_['intersection'](_0xbcb8fb[_0xf219('0x2c')],_0xbcb8fb[_0xf219('0x2d')]);_0x3419c1[_0xf219('0x31')]=_[_0xf219('0x30')](_0xbcb8fb[_0xf219('0x2c')],qs[_0xf219('0x32')](_0x177201['query'][_0xf219('0x32')]));_0x3419c1[_0xf219('0x31')]=_0x3419c1[_0xf219('0x31')][_0xf219('0x33')]?_0x3419c1[_0xf219('0x31')]:_0xbcb8fb['model'];if(_0x177201['query'][_0xf219('0x42')]){_0x3419c1[_0xf219('0x3e')]=[{'all':!![]}];}_0x3419c1=_[_0xf219('0x3b')]({},_0x3419c1,_0x177201[_0xf219('0x3d')]);return db['SquareMessage'][_0xf219('0x43')](_0x3419c1)[_0xf219('0x22')](handleEntityNotFound(_0xcdcf47,null))[_0xf219('0x22')](respondWithResult(_0xcdcf47,null))[_0xf219('0x44')](handleError(_0xcdcf47,null));};exports[_0xf219('0x45')]=function(_0x42f81b,_0x158915){return db[_0xf219('0x2a')][_0xf219('0x45')](_0x42f81b['body'],{})[_0xf219('0x22')](respondWithResult(_0x158915,0xc9))[_0xf219('0x44')](handleError(_0x158915,null));};exports['update']=function(_0xba85aa,_0x39f5a7){if(_0xba85aa[_0xf219('0x46')]['id']){delete _0xba85aa[_0xf219('0x46')]['id'];}return db['SquareMessage']['find']({'where':{'id':_0xba85aa[_0xf219('0x41')]['id']}})['then'](handleEntityNotFound(_0x39f5a7,null))[_0xf219('0x22')](saveUpdates(_0xba85aa[_0xf219('0x46')],null))['then'](respondWithResult(_0x39f5a7,null))['catch'](handleError(_0x39f5a7,null));};exports[_0xf219('0x23')]=function(_0x5a64d9,_0x293a65){return db['SquareMessage'][_0xf219('0x43')]({'where':{'id':_0x5a64d9[_0xf219('0x41')]['id']}})[_0xf219('0x22')](handleEntityNotFound(_0x293a65,null))['then'](removeEntity(_0x293a65,null))[_0xf219('0x44')](handleError(_0x293a65,null));};
\ No newline at end of file
index 6ac60c5..c37b715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8163=['lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','SquareMessage','square_messages'];(function(_0x8c1005,_0x1f3f16){var _0x175354=function(_0xd0e9c4){while(--_0xd0e9c4){_0x8c1005['push'](_0x8c1005['shift']());}};_0x175354(++_0x1f3f16);}(_0x8163,0x174));var _0x3816=function(_0x499665,_0x53c690){_0x499665=_0x499665-0x0;var _0x4a4bae=_0x8163[_0x499665];return _0x4a4bae;};'use strict';var _=require(_0x3816('0x0'));var util=require(_0x3816('0x1'));var logger=require('../../config/logger')(_0x3816('0x2'));var moment=require(_0x3816('0x3'));var BPromise=require(_0x3816('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3816('0x5'));var rimraf=require(_0x3816('0x6'));var config=require(_0x3816('0x7'));var attributes=require('./squareMessage.attributes');module[_0x3816('0x8')]=function(_0x4888c,_0x3eae00){return _0x4888c[_0x3816('0x9')](_0x3816('0xa'),attributes,{'tableName':_0x3816('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x837c=['../../config/environment','./squareMessage.attributes','define','SquareMessage','square_messages','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x2389bc,_0x167cd2){var _0x170548=function(_0x2da7f2){while(--_0x2da7f2){_0x2389bc['push'](_0x2389bc['shift']());}};_0x170548(++_0x167cd2);}(_0x837c,0x10d));var _0xc837=function(_0x563856,_0x3016f7){_0x563856=_0x563856-0x0;var _0x8f4add=_0x837c[_0x563856];return _0x8f4add;};'use strict';var _=require('lodash');var util=require(_0xc837('0x0'));var logger=require(_0xc837('0x1'))(_0xc837('0x2'));var moment=require('moment');var BPromise=require(_0xc837('0x3'));var rp=require(_0xc837('0x4'));var fs=require('fs');var path=require(_0xc837('0x5'));var rimraf=require(_0xc837('0x6'));var config=require(_0xc837('0x7'));var attributes=require(_0xc837('0x8'));module['exports']=function(_0x4a383d,_0x33f902){return _0x4a383d[_0xc837('0x9')](_0xc837('0xa'),attributes,{'tableName':_0xc837('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6cad5d3..fa63f80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2a7=['error','message','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x40d7e1,_0x5a1cac){var _0x54bcf4=function(_0x3b4c3a){while(--_0x3b4c3a){_0x40d7e1['push'](_0x40d7e1['shift']());}};_0x54bcf4(++_0x5a1cac);}(_0xd2a7,0x1ba));var _0x7d2a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2a7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x7d2a('0x0'));var moment=require(_0x7d2a('0x1'));var BPromise=require(_0x7d2a('0x2'));var rs=require(_0x7d2a('0x3'));var fs=require('fs');var Redis=require(_0x7d2a('0x4'));var db=require(_0x7d2a('0x5'))['db'];var utils=require(_0x7d2a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x7d2a('0x7'));var jayson=require(_0x7d2a('0x8'));var client=jayson[_0x7d2a('0x9')][_0x7d2a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x293f6d,_0x43d932,_0x2c9b03){return new BPromise(function(_0x5897fe,_0x1db0d9){return client['request'](_0x293f6d,_0x2c9b03)[_0x7d2a('0xb')](function(_0x48fdd4){logger[_0x7d2a('0xc')](_0x7d2a('0xd'),_0x43d932,_0x7d2a('0xe'));logger['debug'](_0x7d2a('0xf'),_0x43d932,_0x7d2a('0xe'),JSON[_0x7d2a('0x10')](_0x48fdd4));if(_0x48fdd4[_0x7d2a('0x11')]){if(_0x48fdd4[_0x7d2a('0x11')]['code']===0x1f4){logger[_0x7d2a('0x11')](_0x7d2a('0xd'),_0x43d932,_0x48fdd4[_0x7d2a('0x11')][_0x7d2a('0x12')]);return _0x1db0d9(_0x48fdd4[_0x7d2a('0x11')][_0x7d2a('0x12')]);}logger[_0x7d2a('0x11')]('SquareMessage,\x20%s,\x20%s',_0x43d932,_0x48fdd4['error'][_0x7d2a('0x12')]);return _0x5897fe(_0x48fdd4['error'][_0x7d2a('0x12')]);}else{logger[_0x7d2a('0xc')](_0x7d2a('0xd'),_0x43d932,'request\x20sent');_0x5897fe(_0x48fdd4[_0x7d2a('0x13')][_0x7d2a('0x12')]);}})[_0x7d2a('0x14')](function(_0x322e9d){logger[_0x7d2a('0x11')](_0x7d2a('0xd'),_0x43d932,_0x322e9d);_0x1db0d9(_0x322e9d);});});}exports[_0x7d2a('0x15')]=function(_0x1e3fd7){var _0x54fe87=this;return new Promise(function(_0x2446a0,_0x3d03f9){return db[_0x7d2a('0x16')][_0x7d2a('0x17')](_0x1e3fd7[_0x7d2a('0x18')],{'raw':_0x1e3fd7[_0x7d2a('0x19')]?_0x1e3fd7[_0x7d2a('0x19')][_0x7d2a('0x1a')]===undefined?!![]:![]:!![]})[_0x7d2a('0xb')](function(_0x27922b){logger[_0x7d2a('0xc')](_0x7d2a('0x15'),_0x1e3fd7);logger['debug']('CreateSquareMessage',_0x1e3fd7,JSON['stringify'](_0x27922b));_0x2446a0(_0x27922b);})[_0x7d2a('0x14')](function(_0x34ce7d){logger[_0x7d2a('0x11')]('CreateSquareMessage',_0x34ce7d[_0x7d2a('0x12')],_0x1e3fd7);_0x3d03f9(_0x54fe87['error'](0x1f4,_0x34ce7d[_0x7d2a('0x12')]));});});};
\ No newline at end of file
+var _0x2b8a=['http','request','info','request\x20sent','debug','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','result','catch','SquareMessage','create','body','options','raw','CreateSquareMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client'];(function(_0x8c51b6,_0x431aff){var _0x2fe4b7=function(_0x58051a){while(--_0x58051a){_0x8c51b6['push'](_0x8c51b6['shift']());}};_0x2fe4b7(++_0x431aff);}(_0x2b8a,0x66));var _0xa2b8=function(_0x2bc23b,_0x4e6fc8){_0x2bc23b=_0x2bc23b-0x0;var _0x48d496=_0x2b8a[_0x2bc23b];return _0x48d496;};'use strict';var _=require(_0xa2b8('0x0'));var util=require(_0xa2b8('0x1'));var moment=require(_0xa2b8('0x2'));var BPromise=require(_0xa2b8('0x3'));var rs=require(_0xa2b8('0x4'));var fs=require('fs');var Redis=require(_0xa2b8('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa2b8('0x6'));var logger=require('../../config/logger')(_0xa2b8('0x7'));var config=require(_0xa2b8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa2b8('0x9')][_0xa2b8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x51d451,_0x25bf82,_0x59972b){return new BPromise(function(_0x536ae1,_0x1474a1){return client[_0xa2b8('0xb')](_0x51d451,_0x59972b)['then'](function(_0x24f4af){logger[_0xa2b8('0xc')]('SquareMessage,\x20%s,\x20%s',_0x25bf82,_0xa2b8('0xd'));logger[_0xa2b8('0xe')]('SquareMessage,\x20%s,\x20%s,\x20%s',_0x25bf82,_0xa2b8('0xd'),JSON[_0xa2b8('0xf')](_0x24f4af));if(_0x24f4af[_0xa2b8('0x10')]){if(_0x24f4af[_0xa2b8('0x10')][_0xa2b8('0x11')]===0x1f4){logger[_0xa2b8('0x10')](_0xa2b8('0x12'),_0x25bf82,_0x24f4af[_0xa2b8('0x10')]['message']);return _0x1474a1(_0x24f4af[_0xa2b8('0x10')][_0xa2b8('0x13')]);}logger[_0xa2b8('0x10')](_0xa2b8('0x12'),_0x25bf82,_0x24f4af['error']['message']);return _0x536ae1(_0x24f4af['error'][_0xa2b8('0x13')]);}else{logger[_0xa2b8('0xc')](_0xa2b8('0x12'),_0x25bf82,'request\x20sent');_0x536ae1(_0x24f4af[_0xa2b8('0x14')][_0xa2b8('0x13')]);}})[_0xa2b8('0x15')](function(_0x2238c7){logger[_0xa2b8('0x10')](_0xa2b8('0x12'),_0x25bf82,_0x2238c7);_0x1474a1(_0x2238c7);});});}exports['CreateSquareMessage']=function(_0x1d9658){var _0x34a43e=this;return new Promise(function(_0x44b7c6,_0x22fee9){return db[_0xa2b8('0x16')][_0xa2b8('0x17')](_0x1d9658[_0xa2b8('0x18')],{'raw':_0x1d9658[_0xa2b8('0x19')]?_0x1d9658[_0xa2b8('0x19')][_0xa2b8('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x19cada){logger[_0xa2b8('0xc')](_0xa2b8('0x1b'),_0x1d9658);logger[_0xa2b8('0xe')]('CreateSquareMessage',_0x1d9658,JSON[_0xa2b8('0xf')](_0x19cada));_0x44b7c6(_0x19cada);})[_0xa2b8('0x15')](function(_0x4ee7ca){logger[_0xa2b8('0x10')](_0xa2b8('0x1b'),_0x4ee7ca['message'],_0x1d9658);_0x22fee9(_0x34a43e[_0xa2b8('0x10')](0x1f4,_0x4ee7ca[_0xa2b8('0x13')]));});});};
\ No newline at end of file
index a5640e0..e050f55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21da=['put','update','exports','path','express','../../components/auth/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id','/:id/test','test','post'];(function(_0x23e207,_0x34850b){var _0x2e25fa=function(_0x41bf81){while(--_0x41bf81){_0x23e207['push'](_0x23e207['shift']());}};_0x2e25fa(++_0x34850b);}(_0x21da,0x1b6));var _0xa21d=function(_0x3ed843,_0x17393a){_0x3ed843=_0x3ed843-0x0;var _0x1d424b=_0x21da[_0x3ed843];return _0x1d424b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa21d('0x0'));var timeout=require('connect-timeout');var express=require(_0xa21d('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa21d('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xa21d('0x3'));var controller=require(_0xa21d('0x4'));router[_0xa21d('0x5')]('/',auth[_0xa21d('0x6')](),controller[_0xa21d('0x7')]);router[_0xa21d('0x5')](_0xa21d('0x8'),auth[_0xa21d('0x6')](),controller['show']);router[_0xa21d('0x5')](_0xa21d('0x9'),auth[_0xa21d('0x6')](),timeout('15s'),controller[_0xa21d('0xa')]);router[_0xa21d('0xb')]('/',auth[_0xa21d('0x6')](),controller['create']);router[_0xa21d('0xc')](_0xa21d('0x8'),auth[_0xa21d('0x6')](),controller[_0xa21d('0xd')]);router['delete'](_0xa21d('0x8'),auth['isAuthenticated'](),controller['destroy']);module[_0xa21d('0xe')]=router;
\ No newline at end of file
+var _0xefb9=['15s','test','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','index','isAuthenticated','show','/:id/test'];(function(_0x20d595,_0x5965fd){var _0x1a9ed8=function(_0x590029){while(--_0x590029){_0x20d595['push'](_0x20d595['shift']());}};_0x1a9ed8(++_0x5965fd);}(_0xefb9,0x16f));var _0x9efb=function(_0x5e2b34,_0x58385c){_0x5e2b34=_0x5e2b34-0x0;var _0x4859f9=_0xefb9[_0x5e2b34];return _0x4859f9;};'use strict';var multer=require(_0x9efb('0x0'));var util=require(_0x9efb('0x1'));var path=require(_0x9efb('0x2'));var timeout=require(_0x9efb('0x3'));var express=require('express');var router=express[_0x9efb('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9efb('0x5'));var config=require(_0x9efb('0x6'));var controller=require(_0x9efb('0x7'));router[_0x9efb('0x8')]('/',auth['isAuthenticated'](),controller[_0x9efb('0x9')]);router[_0x9efb('0x8')]('/:id',auth[_0x9efb('0xa')](),controller[_0x9efb('0xb')]);router[_0x9efb('0x8')](_0x9efb('0xc'),auth[_0x9efb('0xa')](),timeout(_0x9efb('0xd')),controller[_0x9efb('0xe')]);router['post']('/',auth[_0x9efb('0xa')](),controller['create']);router[_0x9efb('0xf')](_0x9efb('0x10'),auth[_0x9efb('0xa')](),controller['update']);router[_0x9efb('0x11')](_0x9efb('0x10'),auth[_0x9efb('0xa')](),controller[_0x9efb('0x12')]);module[_0x9efb('0x13')]=router;
\ No newline at end of file
index 1c1005f..6cba4d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf56=['sequelize','exports','STRING'];(function(_0x20f688,_0x2f9afb){var _0x50da69=function(_0x252094){while(--_0x252094){_0x20f688['push'](_0x20f688['shift']());}};_0x50da69(++_0x2f9afb);}(_0xdf56,0x17d));var _0x6df5=function(_0x3345c1,_0x4c1ba5){_0x3345c1=_0x3345c1-0x0;var _0x10d736=_0xdf56[_0x3345c1];return _0x10d736;};'use strict';var Sequelize=require(_0x6df5('0x0'));module[_0x6df5('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x6df5('0x2')]},'description':{'type':Sequelize[_0x6df5('0x2')]}};
\ No newline at end of file
+var _0x9a17=['sequelize','exports','STRING'];(function(_0x1c0a44,_0x51c3b3){var _0x2b71f9=function(_0x49e622){while(--_0x49e622){_0x1c0a44['push'](_0x1c0a44['shift']());}};_0x2b71f9(++_0x51c3b3);}(_0x9a17,0x11d));var _0x79a1=function(_0x55efea,_0x12a924){_0x55efea=_0x55efea-0x0;var _0x4d8756=_0x9a17[_0x55efea];return _0x4d8756;};'use strict';var Sequelize=require(_0x79a1('0x0'));module[_0x79a1('0x1')]={'name':{'type':Sequelize[_0x79a1('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x79a1('0x2')]},'description':{'type':Sequelize[_0x79a1('0x2')]}};
\ No newline at end of file
index 5564bba..dd05e55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf508=['VIRTUAL','filter','merge','includeAll','include','rows','show','keys','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','test','dsn','odbc','openSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','status','end','offset','limit','undefined','count','set','json','apply','reject','save','then','destroy','get','ODBC','UserProfileResource','sendStatus','stack','name','send','index','map','SquareOdbc','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x5288a6,_0x4c7eaa){var _0x3f8270=function(_0x1d52c0){while(--_0x1d52c0){_0x5288a6['push'](_0x5288a6['shift']());}};_0x3f8270(++_0x4c7eaa);}(_0xf508,0x126));var _0x8f50=function(_0x56e556,_0x434a0a){_0x56e556=_0x56e556-0x0;var _0x2a0717=_0xf508[_0x56e556];return _0x2a0717;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8f50('0x0'));var zipdir=require(_0x8f50('0x1'));var jsonpatch=require(_0x8f50('0x2'));var rp=require(_0x8f50('0x3'));var moment=require(_0x8f50('0x4'));var BPromise=require(_0x8f50('0x5'));var Mustache=require(_0x8f50('0x6'));var util=require(_0x8f50('0x7'));var path=require(_0x8f50('0x8'));var sox=require(_0x8f50('0x9'));var csv=require(_0x8f50('0xa'));var ejs=require(_0x8f50('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8f50('0xc'));var squel=require('squel');var crypto=require(_0x8f50('0xd'));var jsforce=require(_0x8f50('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x8f50('0xa'));var querystring=require(_0x8f50('0xf'));var Papa=require(_0x8f50('0x10'));var Redis=require('ioredis');var authService=require(_0x8f50('0x11'));var qs=require(_0x8f50('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8f50('0x13'))(_0x8f50('0x14'));var utils=require(_0x8f50('0x15'));var config=require(_0x8f50('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38b3e3,_0x1c9507){_0x1c9507=_0x1c9507||0xcc;return function(_0xd84fc5){if(_0xd84fc5){return _0x38b3e3['sendStatus'](_0x1c9507);}return _0x38b3e3[_0x8f50('0x17')](_0x1c9507)[_0x8f50('0x18')]();};}function respondWithResult(_0x38b4a1,_0xec6804){_0xec6804=_0xec6804||0xc8;return function(_0x418a4f){if(_0x418a4f){return _0x38b4a1['status'](_0xec6804)['json'](_0x418a4f);}};}function respondWithFilteredResult(_0x3565b6,_0x200c6d){return function(_0x21d485){if(_0x21d485){var _0x4d9023=typeof _0x200c6d[_0x8f50('0x19')]==='undefined'&&typeof _0x200c6d[_0x8f50('0x1a')]===_0x8f50('0x1b');var _0x192f8a=_0x21d485['count'];var _0x3bc68e=_0x4d9023?0x0:_0x200c6d['offset'];var _0x1a7b21=_0x4d9023?_0x21d485[_0x8f50('0x1c')]:_0x200c6d['offset']+_0x200c6d['limit'];var _0x124a59;if(_0x1a7b21>=_0x192f8a){_0x1a7b21=_0x192f8a;_0x124a59=0xc8;}else{_0x124a59=0xce;}_0x3565b6['status'](_0x124a59);return _0x3565b6[_0x8f50('0x1d')]('Content-Range',_0x3bc68e+'-'+_0x1a7b21+'/'+_0x192f8a)[_0x8f50('0x1e')](_0x21d485);}return null;};}function patchUpdates(_0x46b2ca){return function(_0x1b858c){try{jsonpatch[_0x8f50('0x1f')](_0x1b858c,_0x46b2ca,!![]);}catch(_0x100656){return BPromise[_0x8f50('0x20')](_0x100656);}return _0x1b858c[_0x8f50('0x21')]();};}function saveUpdates(_0x2739e8,_0x5ce1a8){return function(_0x55d671){if(_0x55d671){return _0x55d671['update'](_0x2739e8)[_0x8f50('0x22')](function(_0x40a3f7){return _0x40a3f7;});}return null;};}function removeEntity(_0x4a1071,_0x130df5){return function(_0x5e146d){if(_0x5e146d){return _0x5e146d[_0x8f50('0x23')]()[_0x8f50('0x22')](function(){var _0x160782=_0x5e146d[_0x8f50('0x24')]({'plain':!![]});var _0x2e0e9d=_0x8f50('0x25');return db[_0x8f50('0x26')][_0x8f50('0x23')]({'where':{'type':_0x2e0e9d,'resourceId':_0x160782['id']}})[_0x8f50('0x22')](function(){return _0x5e146d;});})['then'](function(){_0x4a1071['status'](0xcc)[_0x8f50('0x18')]();});}};}function handleEntityNotFound(_0xa5f167,_0x387462){return function(_0x1b3382){if(!_0x1b3382){_0xa5f167[_0x8f50('0x27')](0x194);}return _0x1b3382;};}function handleError(_0x23f300,_0x629332){_0x629332=_0x629332||0x1f4;return function(_0x39da1d){logger['error'](_0x39da1d[_0x8f50('0x28')]);if(_0x39da1d[_0x8f50('0x29')]){delete _0x39da1d['name'];}_0x23f300[_0x8f50('0x17')](_0x629332)[_0x8f50('0x2a')](_0x39da1d);};}exports[_0x8f50('0x2b')]=function(_0x5017fc,_0x5b2b75){var _0x176dc5={},_0x55573b={},_0x831ca8={'count':0x0,'rows':[]};var _0x5abcb4=_[_0x8f50('0x2c')](db[_0x8f50('0x2d')][_0x8f50('0x2e')],function(_0xd31b9f){return{'name':_0xd31b9f['fieldName'],'type':_0xd31b9f[_0x8f50('0x2f')][_0x8f50('0x30')]};});_0x55573b[_0x8f50('0x31')]=_['map'](_0x5abcb4,_0x8f50('0x29'));_0x55573b[_0x8f50('0x32')]=_['keys'](_0x5017fc[_0x8f50('0x32')]);_0x55573b[_0x8f50('0x33')]=_[_0x8f50('0x34')](_0x55573b['model'],_0x55573b[_0x8f50('0x32')]);_0x176dc5[_0x8f50('0x35')]=_[_0x8f50('0x34')](_0x55573b[_0x8f50('0x31')],qs[_0x8f50('0x36')](_0x5017fc['query'][_0x8f50('0x36')]));_0x176dc5[_0x8f50('0x35')]=_0x176dc5['attributes'][_0x8f50('0x37')]?_0x176dc5[_0x8f50('0x35')]:_0x55573b[_0x8f50('0x31')];if(!_0x5017fc['query'][_0x8f50('0x38')](_0x8f50('0x39'))){_0x176dc5[_0x8f50('0x1a')]=qs[_0x8f50('0x1a')](_0x5017fc['query'][_0x8f50('0x1a')]);_0x176dc5[_0x8f50('0x19')]=qs[_0x8f50('0x19')](_0x5017fc[_0x8f50('0x32')][_0x8f50('0x19')]);}_0x176dc5[_0x8f50('0x3a')]=qs[_0x8f50('0x3b')](_0x5017fc[_0x8f50('0x32')][_0x8f50('0x3b')]);_0x176dc5[_0x8f50('0x3c')]=qs['filters'](_[_0x8f50('0x3d')](_0x5017fc[_0x8f50('0x32')],_0x55573b['filters']),_0x5abcb4);if(_0x5017fc[_0x8f50('0x32')]['filter']){_0x176dc5[_0x8f50('0x3c')]=_['merge'](_0x176dc5[_0x8f50('0x3c')],{'$or':_[_0x8f50('0x2c')](_0x5abcb4,function(_0x522afc){if(_0x522afc['type']!==_0x8f50('0x3e')){var _0x3cbcbf={};_0x3cbcbf[_0x522afc['name']]={'$like':'%'+_0x5017fc[_0x8f50('0x32')][_0x8f50('0x3f')]+'%'};return _0x3cbcbf;}})});}_0x176dc5=_[_0x8f50('0x40')]({},_0x176dc5,_0x5017fc['options']);var _0x3a5d1e={'where':_0x176dc5['where']};return db[_0x8f50('0x2d')][_0x8f50('0x1c')](_0x3a5d1e)[_0x8f50('0x22')](function(_0x1d3216){_0x831ca8[_0x8f50('0x1c')]=_0x1d3216;if(_0x5017fc['query'][_0x8f50('0x41')]){_0x176dc5[_0x8f50('0x42')]=[{'all':!![]}];}return db[_0x8f50('0x2d')]['findAll'](_0x176dc5);})[_0x8f50('0x22')](function(_0x1b4a2b){_0x831ca8[_0x8f50('0x43')]=_0x1b4a2b;return _0x831ca8;})[_0x8f50('0x22')](respondWithFilteredResult(_0x5b2b75,_0x176dc5))['catch'](handleError(_0x5b2b75,null));};exports[_0x8f50('0x44')]=function(_0xd5495d,_0xb1e668){var _0x36894a={'raw':!![],'where':{'id':_0xd5495d['params']['id']}},_0x1a593e={};_0x1a593e['model']=_['keys'](db['SquareOdbc'][_0x8f50('0x2e')]);_0x1a593e['query']=_[_0x8f50('0x45')](_0xd5495d[_0x8f50('0x32')]);_0x1a593e[_0x8f50('0x33')]=_[_0x8f50('0x34')](_0x1a593e[_0x8f50('0x31')],_0x1a593e[_0x8f50('0x32')]);_0x36894a[_0x8f50('0x35')]=_[_0x8f50('0x34')](_0x1a593e[_0x8f50('0x31')],qs['fields'](_0xd5495d[_0x8f50('0x32')]['fields']));_0x36894a['attributes']=_0x36894a['attributes']['length']?_0x36894a[_0x8f50('0x35')]:_0x1a593e[_0x8f50('0x31')];if(_0xd5495d[_0x8f50('0x32')][_0x8f50('0x41')]){_0x36894a['include']=[{'all':!![]}];}_0x36894a=_[_0x8f50('0x40')]({},_0x36894a,_0xd5495d[_0x8f50('0x46')]);return db[_0x8f50('0x2d')][_0x8f50('0x47')](_0x36894a)[_0x8f50('0x22')](handleEntityNotFound(_0xb1e668,null))['then'](respondWithResult(_0xb1e668,null))[_0x8f50('0x48')](handleError(_0xb1e668,null));};exports[_0x8f50('0x49')]=function(_0x1ee888,_0xe7098){return db[_0x8f50('0x2d')]['create'](_0x1ee888[_0x8f50('0x4a')],{})[_0x8f50('0x22')](function(_0x42c966){var _0x36355b=_0x1ee888[_0x8f50('0x4b')][_0x8f50('0x24')]({'plain':!![]});if(!_0x36355b)throw new Error(_0x8f50('0x4c'));if(_0x36355b[_0x8f50('0x4d')]==='user'){var _0x43d909=_0x42c966[_0x8f50('0x24')]({'plain':!![]});var _0x404d7b='ODBC';return db[_0x8f50('0x4e')][_0x8f50('0x47')]({'where':{'name':_0x404d7b,'userProfileId':_0x36355b[_0x8f50('0x4f')]},'raw':!![]})[_0x8f50('0x22')](function(_0x3d2055){if(_0x3d2055&&_0x3d2055[_0x8f50('0x50')]===0x0){return db[_0x8f50('0x26')][_0x8f50('0x49')]({'name':_0x43d909[_0x8f50('0x29')],'resourceId':_0x43d909['id'],'type':_0x3d2055['name'],'sectionId':_0x3d2055['id']},{})['then'](function(){return _0x42c966;});}else{return _0x42c966;}})['catch'](function(_0x584e6d){logger[_0x8f50('0x51')](_0x8f50('0x52'),_0x584e6d);throw _0x584e6d;});}return _0x42c966;})[_0x8f50('0x22')](respondWithResult(_0xe7098,0xc9))['catch'](handleError(_0xe7098,null));};exports[_0x8f50('0x53')]=function(_0x4de7b2,_0xa9c40e){if(_0x4de7b2['body']['id']){delete _0x4de7b2[_0x8f50('0x4a')]['id'];}return db[_0x8f50('0x2d')][_0x8f50('0x47')]({'where':{'id':_0x4de7b2[_0x8f50('0x54')]['id']}})[_0x8f50('0x22')](handleEntityNotFound(_0xa9c40e,null))[_0x8f50('0x22')](saveUpdates(_0x4de7b2[_0x8f50('0x4a')],null))['then'](respondWithResult(_0xa9c40e,null))[_0x8f50('0x48')](handleError(_0xa9c40e,null));};exports['destroy']=function(_0x537cab,_0x1ea9ec){return db['SquareOdbc'][_0x8f50('0x47')]({'where':{'id':_0x537cab['params']['id']}})['then'](handleEntityNotFound(_0x1ea9ec,null))[_0x8f50('0x22')](removeEntity(_0x1ea9ec,null))[_0x8f50('0x48')](handleError(_0x1ea9ec,null));};exports[_0x8f50('0x55')]=function(_0x3d01a1,_0x16b5e3,_0x2e64d2){var _0x879afb;return db[_0x8f50('0x2d')][_0x8f50('0x47')]({'where':{'id':_0x3d01a1[_0x8f50('0x54')]['id']},'attributes':['id',_0x8f50('0x56')]})[_0x8f50('0x22')](handleEntityNotFound(_0x16b5e3,null))['then'](function(_0x397f28){if(_0x397f28){var _0x40ea83=require(_0x8f50('0x57'))();_0x40ea83[_0x8f50('0x58')](_0x397f28[_0x8f50('0x56')]);_0x40ea83['closeSync']();return _0x397f28;}})[_0x8f50('0x22')](respondWithResult(_0x16b5e3,null))[_0x8f50('0x48')](handleError(_0x16b5e3,null));};
\ No newline at end of file
+var _0x9816=['fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','SquareOdbc','count','includeAll','include','rows','show','params','find','catch','create','body','user','role','ODBC','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','end','name','send','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes'];(function(_0x195150,_0x5dfdf5){var _0x117228=function(_0x458ae){while(--_0x458ae){_0x195150['push'](_0x195150['shift']());}};_0x117228(++_0x5dfdf5);}(_0x9816,0xcc));var _0x6981=function(_0x4b5e4a,_0xec7f05){_0x4b5e4a=_0x4b5e4a-0x0;var _0xf14639=_0x9816[_0x4b5e4a];return _0xf14639;};'use strict';var emlformat=require(_0x6981('0x0'));var rimraf=require(_0x6981('0x1'));var zipdir=require(_0x6981('0x2'));var jsonpatch=require(_0x6981('0x3'));var rp=require(_0x6981('0x4'));var moment=require(_0x6981('0x5'));var BPromise=require(_0x6981('0x6'));var Mustache=require(_0x6981('0x7'));var util=require(_0x6981('0x8'));var path=require('path');var sox=require(_0x6981('0x9'));var csv=require(_0x6981('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6981('0xb'));var _=require(_0x6981('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6981('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6981('0xe'));var Papa=require(_0x6981('0xf'));var Redis=require(_0x6981('0x10'));var authService=require(_0x6981('0x11'));var qs=require(_0x6981('0x12'));var as=require(_0x6981('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6981('0x14'))('api');var utils=require(_0x6981('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6981('0x16'));var db=require(_0x6981('0x17'))['db'];function respondWithStatusCode(_0x5ee506,_0x2adbf6){_0x2adbf6=_0x2adbf6||0xcc;return function(_0x256eaf){if(_0x256eaf){return _0x5ee506['sendStatus'](_0x2adbf6);}return _0x5ee506[_0x6981('0x18')](_0x2adbf6)['end']();};}function respondWithResult(_0x232f5b,_0x11b9ed){_0x11b9ed=_0x11b9ed||0xc8;return function(_0x5c8485){if(_0x5c8485){return _0x232f5b['status'](_0x11b9ed)[_0x6981('0x19')](_0x5c8485);}};}function respondWithFilteredResult(_0x3b32e8,_0x4c986d){return function(_0x570908){if(_0x570908){var _0x17f4ee=typeof _0x4c986d[_0x6981('0x1a')]===_0x6981('0x1b')&&typeof _0x4c986d[_0x6981('0x1c')]===_0x6981('0x1b');var _0x5cf2ce=_0x570908['count'];var _0xccb6fc=_0x17f4ee?0x0:_0x4c986d[_0x6981('0x1a')];var _0x438622=_0x17f4ee?_0x570908['count']:_0x4c986d[_0x6981('0x1a')]+_0x4c986d[_0x6981('0x1c')];var _0x2e3aa7;if(_0x438622>=_0x5cf2ce){_0x438622=_0x5cf2ce;_0x2e3aa7=0xc8;}else{_0x2e3aa7=0xce;}_0x3b32e8[_0x6981('0x18')](_0x2e3aa7);return _0x3b32e8['set'](_0x6981('0x1d'),_0xccb6fc+'-'+_0x438622+'/'+_0x5cf2ce)[_0x6981('0x19')](_0x570908);}return null;};}function patchUpdates(_0x1c6310){return function(_0x25c30d){try{jsonpatch[_0x6981('0x1e')](_0x25c30d,_0x1c6310,!![]);}catch(_0x1aa926){return BPromise[_0x6981('0x1f')](_0x1aa926);}return _0x25c30d[_0x6981('0x20')]();};}function saveUpdates(_0x2e5702,_0x487bdf){return function(_0x20e3fd){if(_0x20e3fd){return _0x20e3fd['update'](_0x2e5702)[_0x6981('0x21')](function(_0xb9e6c8){return _0xb9e6c8;});}return null;};}function removeEntity(_0x5644d5,_0x135120){return function(_0x11c7f5){if(_0x11c7f5){return _0x11c7f5[_0x6981('0x22')]()[_0x6981('0x21')](function(){var _0x1cd3c3=_0x11c7f5[_0x6981('0x23')]({'plain':!![]});var _0x463989='ODBC';return db[_0x6981('0x24')][_0x6981('0x22')]({'where':{'type':_0x463989,'resourceId':_0x1cd3c3['id']}})[_0x6981('0x21')](function(){return _0x11c7f5;});})[_0x6981('0x21')](function(){_0x5644d5[_0x6981('0x18')](0xcc)[_0x6981('0x25')]();});}};}function handleEntityNotFound(_0x31e886,_0x30b75d){return function(_0x55181a){if(!_0x55181a){_0x31e886['sendStatus'](0x194);}return _0x55181a;};}function handleError(_0x168994,_0x3d6038){_0x3d6038=_0x3d6038||0x1f4;return function(_0x46b551){logger['error'](_0x46b551['stack']);if(_0x46b551[_0x6981('0x26')]){delete _0x46b551['name'];}_0x168994[_0x6981('0x18')](_0x3d6038)[_0x6981('0x27')](_0x46b551);};}exports['index']=function(_0x3af6b5,_0x255102){var _0x3079a9={},_0x4d28e1={},_0x44ac89={'count':0x0,'rows':[]};var _0x13b1a5=_['map'](db['SquareOdbc'][_0x6981('0x28')],function(_0x8e4e54){return{'name':_0x8e4e54[_0x6981('0x29')],'type':_0x8e4e54[_0x6981('0x2a')][_0x6981('0x2b')]};});_0x4d28e1[_0x6981('0x2c')]=_[_0x6981('0x2d')](_0x13b1a5,_0x6981('0x26'));_0x4d28e1[_0x6981('0x2e')]=_[_0x6981('0x2f')](_0x3af6b5[_0x6981('0x2e')]);_0x4d28e1[_0x6981('0x30')]=_[_0x6981('0x31')](_0x4d28e1['model'],_0x4d28e1[_0x6981('0x2e')]);_0x3079a9[_0x6981('0x32')]=_[_0x6981('0x31')](_0x4d28e1[_0x6981('0x2c')],qs['fields'](_0x3af6b5[_0x6981('0x2e')][_0x6981('0x33')]));_0x3079a9[_0x6981('0x32')]=_0x3079a9['attributes'][_0x6981('0x34')]?_0x3079a9['attributes']:_0x4d28e1['model'];if(!_0x3af6b5['query'][_0x6981('0x35')](_0x6981('0x36'))){_0x3079a9[_0x6981('0x1c')]=qs[_0x6981('0x1c')](_0x3af6b5[_0x6981('0x2e')][_0x6981('0x1c')]);_0x3079a9[_0x6981('0x1a')]=qs[_0x6981('0x1a')](_0x3af6b5[_0x6981('0x2e')]['offset']);}_0x3079a9[_0x6981('0x37')]=qs[_0x6981('0x38')](_0x3af6b5['query'][_0x6981('0x38')]);_0x3079a9[_0x6981('0x39')]=qs[_0x6981('0x30')](_['pick'](_0x3af6b5[_0x6981('0x2e')],_0x4d28e1[_0x6981('0x30')]),_0x13b1a5);if(_0x3af6b5[_0x6981('0x2e')]['filter']){_0x3079a9['where']=_['merge'](_0x3079a9[_0x6981('0x39')],{'$or':_[_0x6981('0x2d')](_0x13b1a5,function(_0x38683c){if(_0x38683c[_0x6981('0x2a')]!=='VIRTUAL'){var _0x4da0b2={};_0x4da0b2[_0x38683c[_0x6981('0x26')]]={'$like':'%'+_0x3af6b5[_0x6981('0x2e')][_0x6981('0x3a')]+'%'};return _0x4da0b2;}})});}_0x3079a9=_[_0x6981('0x3b')]({},_0x3079a9,_0x3af6b5[_0x6981('0x3c')]);var _0x2d9253={'where':_0x3079a9[_0x6981('0x39')]};return db[_0x6981('0x3d')]['count'](_0x2d9253)['then'](function(_0x5de6c6){_0x44ac89[_0x6981('0x3e')]=_0x5de6c6;if(_0x3af6b5['query'][_0x6981('0x3f')]){_0x3079a9[_0x6981('0x40')]=[{'all':!![]}];}return db[_0x6981('0x3d')]['findAll'](_0x3079a9);})[_0x6981('0x21')](function(_0x411cd6){_0x44ac89[_0x6981('0x41')]=_0x411cd6;return _0x44ac89;})['then'](respondWithFilteredResult(_0x255102,_0x3079a9))['catch'](handleError(_0x255102,null));};exports[_0x6981('0x42')]=function(_0x4772f9,_0xb62d0d){var _0x3b9401={'raw':!![],'where':{'id':_0x4772f9[_0x6981('0x43')]['id']}},_0x2701c0={};_0x2701c0['model']=_['keys'](db['SquareOdbc'][_0x6981('0x28')]);_0x2701c0[_0x6981('0x2e')]=_[_0x6981('0x2f')](_0x4772f9['query']);_0x2701c0[_0x6981('0x30')]=_['intersection'](_0x2701c0[_0x6981('0x2c')],_0x2701c0['query']);_0x3b9401[_0x6981('0x32')]=_[_0x6981('0x31')](_0x2701c0['model'],qs[_0x6981('0x33')](_0x4772f9[_0x6981('0x2e')][_0x6981('0x33')]));_0x3b9401[_0x6981('0x32')]=_0x3b9401[_0x6981('0x32')][_0x6981('0x34')]?_0x3b9401[_0x6981('0x32')]:_0x2701c0['model'];if(_0x4772f9[_0x6981('0x2e')][_0x6981('0x3f')]){_0x3b9401[_0x6981('0x40')]=[{'all':!![]}];}_0x3b9401=_[_0x6981('0x3b')]({},_0x3b9401,_0x4772f9[_0x6981('0x3c')]);return db['SquareOdbc'][_0x6981('0x44')](_0x3b9401)[_0x6981('0x21')](handleEntityNotFound(_0xb62d0d,null))[_0x6981('0x21')](respondWithResult(_0xb62d0d,null))[_0x6981('0x45')](handleError(_0xb62d0d,null));};exports[_0x6981('0x46')]=function(_0x2ba9b7,_0x3a491c){return db[_0x6981('0x3d')]['create'](_0x2ba9b7[_0x6981('0x47')],{})[_0x6981('0x21')](function(_0x3c4b0b){var _0x20ea3f=_0x2ba9b7[_0x6981('0x48')][_0x6981('0x23')]({'plain':!![]});if(!_0x20ea3f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x20ea3f[_0x6981('0x49')]==='user'){var _0x50e9e5=_0x3c4b0b['get']({'plain':!![]});var _0x152dd0=_0x6981('0x4a');return db[_0x6981('0x4b')][_0x6981('0x44')]({'where':{'name':_0x152dd0,'userProfileId':_0x20ea3f[_0x6981('0x4c')]},'raw':!![]})[_0x6981('0x21')](function(_0x2acd65){if(_0x2acd65&&_0x2acd65['autoAssociation']===0x0){return db[_0x6981('0x24')][_0x6981('0x46')]({'name':_0x50e9e5['name'],'resourceId':_0x50e9e5['id'],'type':_0x2acd65[_0x6981('0x26')],'sectionId':_0x2acd65['id']},{})[_0x6981('0x21')](function(){return _0x3c4b0b;});}else{return _0x3c4b0b;}})[_0x6981('0x45')](function(_0xd30dab){logger[_0x6981('0x4d')](_0x6981('0x4e'),_0xd30dab);throw _0xd30dab;});}return _0x3c4b0b;})[_0x6981('0x21')](respondWithResult(_0x3a491c,0xc9))[_0x6981('0x45')](handleError(_0x3a491c,null));};exports[_0x6981('0x4f')]=function(_0x129c4f,_0x2e6f92){if(_0x129c4f[_0x6981('0x47')]['id']){delete _0x129c4f[_0x6981('0x47')]['id'];}return db[_0x6981('0x3d')][_0x6981('0x44')]({'where':{'id':_0x129c4f[_0x6981('0x43')]['id']}})[_0x6981('0x21')](handleEntityNotFound(_0x2e6f92,null))['then'](saveUpdates(_0x129c4f[_0x6981('0x47')],null))[_0x6981('0x21')](respondWithResult(_0x2e6f92,null))[_0x6981('0x45')](handleError(_0x2e6f92,null));};exports[_0x6981('0x22')]=function(_0x1309d3,_0x5b0871){return db[_0x6981('0x3d')][_0x6981('0x44')]({'where':{'id':_0x1309d3[_0x6981('0x43')]['id']}})[_0x6981('0x21')](handleEntityNotFound(_0x5b0871,null))[_0x6981('0x21')](removeEntity(_0x5b0871,null))[_0x6981('0x45')](handleError(_0x5b0871,null));};exports[_0x6981('0x50')]=function(_0x3d608c,_0x50eea8,_0x3f0d0b){var _0x3514a3;return db[_0x6981('0x3d')][_0x6981('0x44')]({'where':{'id':_0x3d608c[_0x6981('0x43')]['id']},'attributes':['id',_0x6981('0x51')]})[_0x6981('0x21')](handleEntityNotFound(_0x50eea8,null))[_0x6981('0x21')](function(_0x2d08ce){if(_0x2d08ce){var _0x442fdc=require(_0x6981('0x52'))();_0x442fdc[_0x6981('0x53')](_0x2d08ce[_0x6981('0x51')]);_0x442fdc[_0x6981('0x54')]();return _0x2d08ce;}})[_0x6981('0x21')](respondWithResult(_0x50eea8,null))['catch'](handleError(_0x50eea8,null));};
\ No newline at end of file
index 6f04c3b..f1e61cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7488=['moment','request-promise','rimraf','../../config/environment','exports','define','SquareOdbc','lodash','util','../../config/logger','api'];(function(_0x1c7500,_0x55b800){var _0x519873=function(_0x4e3276){while(--_0x4e3276){_0x1c7500['push'](_0x1c7500['shift']());}};_0x519873(++_0x55b800);}(_0x7488,0xf9));var _0x8748=function(_0x4f8c73,_0x226905){_0x4f8c73=_0x4f8c73-0x0;var _0xc3ae2f=_0x7488[_0x4f8c73];return _0xc3ae2f;};'use strict';var _=require(_0x8748('0x0'));var util=require(_0x8748('0x1'));var logger=require(_0x8748('0x2'))(_0x8748('0x3'));var moment=require(_0x8748('0x4'));var BPromise=require('bluebird');var rp=require(_0x8748('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8748('0x6'));var config=require(_0x8748('0x7'));var attributes=require('./squareOdbc.attributes');module[_0x8748('0x8')]=function(_0x5bafbc,_0x541fac){return _0x5bafbc[_0x8748('0x9')](_0x8748('0xa'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x501b=['square_odbc','lodash','api','request-promise','path','../../config/environment','exports','SquareOdbc'];(function(_0x1cfbe3,_0x2f2892){var _0x2dd91f=function(_0x157e52){while(--_0x157e52){_0x1cfbe3['push'](_0x1cfbe3['shift']());}};_0x2dd91f(++_0x2f2892);}(_0x501b,0xe9));var _0xb501=function(_0x543043,_0x17d6c8){_0x543043=_0x543043-0x0;var _0x599972=_0x501b[_0x543043];return _0x599972;};'use strict';var _=require(_0xb501('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb501('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb501('0x2'));var fs=require('fs');var path=require(_0xb501('0x3'));var rimraf=require('rimraf');var config=require(_0xb501('0x4'));var attributes=require('./squareOdbc.attributes');module[_0xb501('0x5')]=function(_0x1ddebb,_0x319909){return _0x1ddebb['define'](_0xb501('0x6'),attributes,{'tableName':_0xb501('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9ef8adf..556453e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0643=['request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowSquareOdbc','options','raw','where','attributes','map','include','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareOdbc,\x20%s,\x20%s'];(function(_0x1986ea,_0x2ab3f3){var _0x451709=function(_0xcc6a3e){while(--_0xcc6a3e){_0x1986ea['push'](_0x1986ea['shift']());}};_0x451709(++_0x2ab3f3);}(_0x0643,0xd6));var _0x3064=function(_0x40b457,_0x3e178f){_0x40b457=_0x40b457-0x0;var _0x199b0d=_0x0643[_0x40b457];return _0x199b0d;};'use strict';var _=require(_0x3064('0x0'));var util=require(_0x3064('0x1'));var moment=require(_0x3064('0x2'));var BPromise=require(_0x3064('0x3'));var rs=require(_0x3064('0x4'));var fs=require('fs');var Redis=require(_0x3064('0x5'));var db=require(_0x3064('0x6'))['db'];var utils=require(_0x3064('0x7'));var logger=require('../../config/logger')(_0x3064('0x8'));var config=require(_0x3064('0x9'));var jayson=require(_0x3064('0xa'));var client=jayson[_0x3064('0xb')][_0x3064('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x319450,_0x374216,_0x204a35){return new BPromise(function(_0x4cec79,_0x4ea2d0){return client[_0x3064('0xd')](_0x319450,_0x204a35)[_0x3064('0xe')](function(_0x196dc8){logger[_0x3064('0xf')](_0x3064('0x10'),_0x374216,_0x3064('0x11'));logger[_0x3064('0x12')](_0x3064('0x13'),_0x374216,_0x3064('0x11'),JSON[_0x3064('0x14')](_0x196dc8));if(_0x196dc8[_0x3064('0x15')]){if(_0x196dc8[_0x3064('0x15')]['code']===0x1f4){logger[_0x3064('0x15')](_0x3064('0x10'),_0x374216,_0x196dc8['error'][_0x3064('0x16')]);return _0x4ea2d0(_0x196dc8[_0x3064('0x15')][_0x3064('0x16')]);}logger[_0x3064('0x15')](_0x3064('0x10'),_0x374216,_0x196dc8[_0x3064('0x15')][_0x3064('0x16')]);return _0x4cec79(_0x196dc8[_0x3064('0x15')][_0x3064('0x16')]);}else{logger[_0x3064('0xf')]('SquareOdbc,\x20%s,\x20%s',_0x374216,_0x3064('0x11'));_0x4cec79(_0x196dc8[_0x3064('0x17')][_0x3064('0x16')]);}})[_0x3064('0x18')](function(_0x2ebd29){logger['error']('SquareOdbc,\x20%s,\x20%s',_0x374216,_0x2ebd29);_0x4ea2d0(_0x2ebd29);});});}exports[_0x3064('0x19')]=function(_0x498fa2){var _0x2d94bd=this;return new Promise(function(_0x5afc2d,_0xa38fd8){return db['SquareOdbc']['find']({'raw':_0x498fa2['options']?_0x498fa2[_0x3064('0x1a')][_0x3064('0x1b')]===undefined?!![]:![]:!![],'where':_0x498fa2[_0x3064('0x1a')]?_0x498fa2['options'][_0x3064('0x1c')]||null:null,'attributes':_0x498fa2[_0x3064('0x1a')]?_0x498fa2[_0x3064('0x1a')][_0x3064('0x1d')]||null:null,'include':_0x498fa2['options']?_0x498fa2['options']['include']?_[_0x3064('0x1e')](_0x498fa2['options'][_0x3064('0x1f')],function(_0x1e4f46){return{'model':db[_0x1e4f46['model']],'as':_0x1e4f46['as'],'attributes':_0x1e4f46[_0x3064('0x1d')],'include':_0x1e4f46[_0x3064('0x1f')]?_['map'](_0x1e4f46[_0x3064('0x1f')],function(_0xc9685f){return{'model':db[_0xc9685f['model']],'as':_0xc9685f['as'],'attributes':_0xc9685f[_0x3064('0x1d')],'include':_0xc9685f[_0x3064('0x1f')]?_['map'](_0xc9685f[_0x3064('0x1f')],function(_0x3b24ff){return{'model':db[_0x3b24ff[_0x3064('0x20')]],'as':_0x3b24ff['as'],'attributes':_0x3b24ff[_0x3064('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x3064('0xe')](function(_0x321584){logger[_0x3064('0xf')]('ShowSquareOdbc',_0x498fa2);logger[_0x3064('0x12')]('ShowSquareOdbc',_0x498fa2,JSON['stringify'](_0x321584));_0x5afc2d(_0x321584);})[_0x3064('0x18')](function(_0x5ca9a4){logger[_0x3064('0x15')](_0x3064('0x19'),_0x5ca9a4['message'],_0x498fa2);_0xa38fd8(_0x2d94bd[_0x3064('0x15')](0x1f4,_0x5ca9a4[_0x3064('0x16')]));});});};
\ No newline at end of file
+var _0xdbfc=['options','where','attributes','map','include','model','then','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','message','ShowSquareOdbc','SquareOdbc','find'];(function(_0x4be8ba,_0x5d10ba){var _0x1af822=function(_0x40ed8a){while(--_0x40ed8a){_0x4be8ba['push'](_0x4be8ba['shift']());}};_0x1af822(++_0x5d10ba);}(_0xdbfc,0xaa));var _0xcdbf=function(_0x233f4e,_0x17df95){_0x233f4e=_0x233f4e-0x0;var _0x218ac9=_0xdbfc[_0x233f4e];return _0x218ac9;};'use strict';var _=require(_0xcdbf('0x0'));var util=require(_0xcdbf('0x1'));var moment=require(_0xcdbf('0x2'));var BPromise=require('bluebird');var rs=require(_0xcdbf('0x3'));var fs=require('fs');var Redis=require(_0xcdbf('0x4'));var db=require(_0xcdbf('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xcdbf('0x6'));var config=require('../../config/environment');var jayson=require(_0xcdbf('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x459730,_0x51ee87,_0x138329){return new BPromise(function(_0x2cbfb4,_0x19573d){return client['request'](_0x459730,_0x138329)['then'](function(_0x3674e1){logger[_0xcdbf('0x8')](_0xcdbf('0x9'),_0x51ee87,_0xcdbf('0xa'));logger[_0xcdbf('0xb')](_0xcdbf('0xc'),_0x51ee87,_0xcdbf('0xa'),JSON[_0xcdbf('0xd')](_0x3674e1));if(_0x3674e1['error']){if(_0x3674e1[_0xcdbf('0xe')]['code']===0x1f4){logger['error']('SquareOdbc,\x20%s,\x20%s',_0x51ee87,_0x3674e1[_0xcdbf('0xe')]['message']);return _0x19573d(_0x3674e1['error'][_0xcdbf('0xf')]);}logger[_0xcdbf('0xe')](_0xcdbf('0x9'),_0x51ee87,_0x3674e1['error'][_0xcdbf('0xf')]);return _0x2cbfb4(_0x3674e1[_0xcdbf('0xe')][_0xcdbf('0xf')]);}else{logger[_0xcdbf('0x8')](_0xcdbf('0x9'),_0x51ee87,_0xcdbf('0xa'));_0x2cbfb4(_0x3674e1['result']['message']);}})['catch'](function(_0x48721b){logger[_0xcdbf('0xe')](_0xcdbf('0x9'),_0x51ee87,_0x48721b);_0x19573d(_0x48721b);});});}exports[_0xcdbf('0x10')]=function(_0x1fa4bc){var _0x2ec878=this;return new Promise(function(_0x53b9f2,_0x340aa5){return db[_0xcdbf('0x11')][_0xcdbf('0x12')]({'raw':_0x1fa4bc[_0xcdbf('0x13')]?_0x1fa4bc[_0xcdbf('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x1fa4bc[_0xcdbf('0x13')]?_0x1fa4bc[_0xcdbf('0x13')][_0xcdbf('0x14')]||null:null,'attributes':_0x1fa4bc[_0xcdbf('0x13')]?_0x1fa4bc[_0xcdbf('0x13')][_0xcdbf('0x15')]||null:null,'include':_0x1fa4bc[_0xcdbf('0x13')]?_0x1fa4bc[_0xcdbf('0x13')]['include']?_[_0xcdbf('0x16')](_0x1fa4bc['options'][_0xcdbf('0x17')],function(_0x86b246){return{'model':db[_0x86b246[_0xcdbf('0x18')]],'as':_0x86b246['as'],'attributes':_0x86b246[_0xcdbf('0x15')],'include':_0x86b246[_0xcdbf('0x17')]?_[_0xcdbf('0x16')](_0x86b246[_0xcdbf('0x17')],function(_0x2357b6){return{'model':db[_0x2357b6[_0xcdbf('0x18')]],'as':_0x2357b6['as'],'attributes':_0x2357b6['attributes'],'include':_0x2357b6[_0xcdbf('0x17')]?_[_0xcdbf('0x16')](_0x2357b6[_0xcdbf('0x17')],function(_0x22abfa){return{'model':db[_0x22abfa['model']],'as':_0x22abfa['as'],'attributes':_0x22abfa[_0xcdbf('0x15')]};}):[]};}):[]};}):[]:[]})[_0xcdbf('0x19')](function(_0x31ef78){logger['info'](_0xcdbf('0x10'),_0x1fa4bc);logger[_0xcdbf('0xb')]('ShowSquareOdbc',_0x1fa4bc,JSON[_0xcdbf('0xd')](_0x31ef78));_0x53b9f2(_0x31ef78);})[_0xcdbf('0x1a')](function(_0x3dc33e){logger[_0xcdbf('0xe')](_0xcdbf('0x10'),_0x3dc33e[_0xcdbf('0xf')],_0x1fa4bc);_0x340aa5(_0x2ec878[_0xcdbf('0xe')](0x1f4,_0x3dc33e['message']));});});};
\ No newline at end of file
index 70b1ab7..3bde916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a1d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id','show','/:id/users','post','create','addUsers','put','update','delete','destroy','removeUsers','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x5b2d55,_0x462fdd){var _0x538b36=function(_0x8c97ae){while(--_0x8c97ae){_0x5b2d55['push'](_0x5b2d55['shift']());}};_0x538b36(++_0x462fdd);}(_0x4a1d,0x77));var _0xd4a1=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x4a1d[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0xd4a1('0x0'));var util=require(_0xd4a1('0x1'));var path=require(_0xd4a1('0x2'));var timeout=require(_0xd4a1('0x3'));var express=require(_0xd4a1('0x4'));var router=express['Router']();var fs_extra=require(_0xd4a1('0x5'));var auth=require(_0xd4a1('0x6'));var interaction=require(_0xd4a1('0x7'));var config=require(_0xd4a1('0x8'));var controller=require(_0xd4a1('0x9'));router[_0xd4a1('0xa')]('/',auth[_0xd4a1('0xb')](),controller[_0xd4a1('0xc')]);router['get'](_0xd4a1('0xd'),auth[_0xd4a1('0xb')](),controller[_0xd4a1('0xe')]);router[_0xd4a1('0xa')](_0xd4a1('0xf'),auth['isAuthenticated'](),controller['getUsers']);router[_0xd4a1('0x10')]('/',auth[_0xd4a1('0xb')](),controller[_0xd4a1('0x11')]);router[_0xd4a1('0x10')]('/:id/users',auth[_0xd4a1('0xb')](),controller[_0xd4a1('0x12')]);router[_0xd4a1('0x13')]('/:id',auth[_0xd4a1('0xb')](),controller[_0xd4a1('0x14')]);router[_0xd4a1('0x15')](_0xd4a1('0xd'),auth['isAuthenticated'](),controller[_0xd4a1('0x16')]);router[_0xd4a1('0x15')](_0xd4a1('0xf'),auth['isAuthenticated'](),controller[_0xd4a1('0x17')]);module[_0xd4a1('0x18')]=router;
\ No newline at end of file
+var _0x6305=['getUsers','post','create','addUsers','put','delete','destroy','removeUsers','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareProject.controller','get','/:id','isAuthenticated','show','/:id/users'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6305,0x1ab));var _0x5630=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x6305[_0x36eaaa];return _0x461349;};'use strict';var multer=require('multer');var util=require(_0x5630('0x0'));var path=require('path');var timeout=require(_0x5630('0x1'));var express=require(_0x5630('0x2'));var router=express[_0x5630('0x3')]();var fs_extra=require(_0x5630('0x4'));var auth=require(_0x5630('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5630('0x6'));var controller=require(_0x5630('0x7'));router[_0x5630('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5630('0x8')](_0x5630('0x9'),auth[_0x5630('0xa')](),controller[_0x5630('0xb')]);router[_0x5630('0x8')](_0x5630('0xc'),auth[_0x5630('0xa')](),controller[_0x5630('0xd')]);router[_0x5630('0xe')]('/',auth[_0x5630('0xa')](),controller[_0x5630('0xf')]);router[_0x5630('0xe')]('/:id/users',auth[_0x5630('0xa')](),controller[_0x5630('0x10')]);router[_0x5630('0x11')](_0x5630('0x9'),auth[_0x5630('0xa')](),controller['update']);router[_0x5630('0x12')](_0x5630('0x9'),auth['isAuthenticated'](),controller[_0x5630('0x13')]);router[_0x5630('0x12')](_0x5630('0xc'),auth[_0x5630('0xa')](),controller[_0x5630('0x14')]);module[_0x5630('0x15')]=router;
\ No newline at end of file
index 41d2bc3..7fa6044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0f9=['sequelize','exports','name','STRING','TEXT','BLOB','getDataValue','preproduction','long','production','utf8','DATE'];(function(_0x567b36,_0x1c47ad){var _0x46235c=function(_0x6039cb){while(--_0x6039cb){_0x567b36['push'](_0x567b36['shift']());}};_0x46235c(++_0x1c47ad);}(_0xe0f9,0x6c));var _0x9e0f=function(_0x51a256,_0x418035){_0x51a256=_0x51a256-0x0;var _0x4b01aa=_0xe0f9[_0x51a256];return _0x4b01aa;};'use strict';var Sequelize=require(_0x9e0f('0x0'));module[_0x9e0f('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x9e0f('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x9e0f('0x3')]},'notes':{'type':Sequelize[_0x9e0f('0x4')]},'preproduction':{'type':Sequelize[_0x9e0f('0x5')]('long'),'get':function(){if(this[_0x9e0f('0x6')](_0x9e0f('0x7'))){return this['getDataValue'](_0x9e0f('0x7'))['toString']('utf8');}}},'production':{'type':Sequelize['BLOB'](_0x9e0f('0x8')),'get':function(){if(this['getDataValue']('production')){return this[_0x9e0f('0x6')](_0x9e0f('0x9'))['toString'](_0x9e0f('0xa'));}}},'savedAt':{'type':Sequelize[_0x9e0f('0xb')]},'publishedAt':{'type':Sequelize[_0x9e0f('0xb')]}};
\ No newline at end of file
+var _0xc035=['preproduction','production','DATE','sequelize','STRING','name','BLOB','long','getDataValue'];(function(_0x25d4b1,_0x4e896d){var _0x2d51a5=function(_0x9c766){while(--_0x9c766){_0x25d4b1['push'](_0x25d4b1['shift']());}};_0x2d51a5(++_0x4e896d);}(_0xc035,0xf6));var _0x5c03=function(_0x59bb6d,_0x3f6c67){_0x59bb6d=_0x59bb6d-0x0;var _0x134bef=_0xc035[_0x59bb6d];return _0x134bef;};'use strict';var Sequelize=require(_0x5c03('0x0'));module['exports']={'name':{'type':Sequelize[_0x5c03('0x1')],'unique':_0x5c03('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x5c03('0x1')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x5c03('0x3')](_0x5c03('0x4')),'get':function(){if(this[_0x5c03('0x5')]('preproduction')){return this['getDataValue'](_0x5c03('0x6'))['toString']('utf8');}}},'production':{'type':Sequelize[_0x5c03('0x3')](_0x5c03('0x4')),'get':function(){if(this['getDataValue'](_0x5c03('0x7'))){return this[_0x5c03('0x5')](_0x5c03('0x7'))['toString']('utf8');}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x5c03('0x8')]}};
\ No newline at end of file
index 7a744dc..ba2807d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd389=['addUsers','removeUsers','isArray','ids','emit','userSquareProject:remove','getUsers','findOne','User','rawAttributes','eml-format','fast-json-patch','request-promise','moment','bluebird','path','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./squareProject.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','get','SquareProjects','UserProfileResource','destroy','then','error','stack','name','send','index','map','SquareProject','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId'];(function(_0x90bb79,_0x4cd1ab){var _0x14e8d8=function(_0x1962ce){while(--_0x1962ce){_0x90bb79['push'](_0x90bb79['shift']());}};_0x14e8d8(++_0x4cd1ab);}(_0xd389,0x69));var _0x9d38=function(_0x83dcd2,_0x4b4fa0){_0x83dcd2=_0x83dcd2-0x0;var _0x178998=_0xd389[_0x83dcd2];return _0x178998;};'use strict';var emlformat=require(_0x9d38('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9d38('0x1'));var rp=require(_0x9d38('0x2'));var moment=require(_0x9d38('0x3'));var BPromise=require(_0x9d38('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9d38('0x5'));var sox=require('sox');var csv=require(_0x9d38('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9d38('0x7'));var crypto=require(_0x9d38('0x8'));var jsforce=require(_0x9d38('0x9'));var deskjs=require(_0x9d38('0xa'));var toCsv=require(_0x9d38('0x6'));var querystring=require(_0x9d38('0xb'));var Papa=require(_0x9d38('0xc'));var Redis=require('ioredis');var authService=require(_0x9d38('0xd'));var qs=require(_0x9d38('0xe'));var as=require(_0x9d38('0xf'));var hardwareService=require(_0x9d38('0x10'));var logger=require(_0x9d38('0x11'))('api');var utils=require(_0x9d38('0x12'));var config=require(_0x9d38('0x13'));var licenseUtil=require(_0x9d38('0x14'));var db=require(_0x9d38('0x15'))['db'];config[_0x9d38('0x16')]=_['defaults'](config[_0x9d38('0x16')],{'host':_0x9d38('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9d38('0x16')]));require(_0x9d38('0x18'))[_0x9d38('0x19')](socket);function respondWithStatusCode(_0x9eb141,_0x548f36){_0x548f36=_0x548f36||0xcc;return function(_0x4d4e56){if(_0x4d4e56){return _0x9eb141[_0x9d38('0x1a')](_0x548f36);}return _0x9eb141['status'](_0x548f36)[_0x9d38('0x1b')]();};}function respondWithResult(_0x2461c5,_0x444518){_0x444518=_0x444518||0xc8;return function(_0x21a5ce){if(_0x21a5ce){return _0x2461c5[_0x9d38('0x1c')](_0x444518)[_0x9d38('0x1d')](_0x21a5ce);}};}function respondWithFilteredResult(_0x294242,_0x4d5e5b){return function(_0x250c2a){if(_0x250c2a){var _0x3e324d=typeof _0x4d5e5b[_0x9d38('0x1e')]===_0x9d38('0x1f')&&typeof _0x4d5e5b[_0x9d38('0x20')]===_0x9d38('0x1f');var _0x4e0dfc=_0x250c2a[_0x9d38('0x21')];var _0x25034c=_0x3e324d?0x0:_0x4d5e5b[_0x9d38('0x1e')];var _0x531fbf=_0x3e324d?_0x250c2a[_0x9d38('0x21')]:_0x4d5e5b[_0x9d38('0x1e')]+_0x4d5e5b[_0x9d38('0x20')];var _0x2c256f;if(_0x531fbf>=_0x4e0dfc){_0x531fbf=_0x4e0dfc;_0x2c256f=0xc8;}else{_0x2c256f=0xce;}_0x294242['status'](_0x2c256f);return _0x294242[_0x9d38('0x22')](_0x9d38('0x23'),_0x25034c+'-'+_0x531fbf+'/'+_0x4e0dfc)[_0x9d38('0x1d')](_0x250c2a);}return null;};}function patchUpdates(_0x2f8e5b){return function(_0x343166){try{jsonpatch[_0x9d38('0x24')](_0x343166,_0x2f8e5b,!![]);}catch(_0x982a85){return BPromise[_0x9d38('0x25')](_0x982a85);}return _0x343166['save']();};}function saveUpdates(_0x53b957,_0x6cbd93){return function(_0x463fe8){if(_0x463fe8){return _0x463fe8[_0x9d38('0x26')](_0x53b957)['then'](function(_0x1f8be7){return _0x1f8be7;});}return null;};}function removeEntity(_0x6bed08,_0x463ceb){return function(_0x306c95){if(_0x306c95){return _0x306c95['destroy']()['then'](function(){var _0x4b400b=_0x306c95[_0x9d38('0x27')]({'plain':!![]});var _0x1a5785=_0x9d38('0x28');return db[_0x9d38('0x29')][_0x9d38('0x2a')]({'where':{'type':_0x1a5785,'resourceId':_0x4b400b['id']}})[_0x9d38('0x2b')](function(){return _0x306c95;});})[_0x9d38('0x2b')](function(){_0x6bed08[_0x9d38('0x1c')](0xcc)[_0x9d38('0x1b')]();});}};}function handleEntityNotFound(_0x117508,_0x224394){return function(_0x4cc87a){if(!_0x4cc87a){_0x117508[_0x9d38('0x1a')](0x194);}return _0x4cc87a;};}function handleError(_0x407ffe,_0x297e98){_0x297e98=_0x297e98||0x1f4;return function(_0x7c869d){logger[_0x9d38('0x2c')](_0x7c869d[_0x9d38('0x2d')]);if(_0x7c869d['name']){delete _0x7c869d[_0x9d38('0x2e')];}_0x407ffe[_0x9d38('0x1c')](_0x297e98)[_0x9d38('0x2f')](_0x7c869d);};}exports[_0x9d38('0x30')]=function(_0x19549a,_0x4eb7c1){var _0x433c88={},_0x5f5adb={},_0x2d971b={'count':0x0,'rows':[]};var _0x32f82f=_[_0x9d38('0x31')](db[_0x9d38('0x32')]['rawAttributes'],function(_0x535dbc){return{'name':_0x535dbc[_0x9d38('0x33')],'type':_0x535dbc[_0x9d38('0x34')]['key']};});_0x5f5adb[_0x9d38('0x35')]=_[_0x9d38('0x31')](_0x32f82f,_0x9d38('0x2e'));_0x5f5adb[_0x9d38('0x36')]=_[_0x9d38('0x37')](_0x19549a[_0x9d38('0x36')]);_0x5f5adb[_0x9d38('0x38')]=_[_0x9d38('0x39')](_0x5f5adb['model'],_0x5f5adb[_0x9d38('0x36')]);_0x433c88[_0x9d38('0x3a')]=_[_0x9d38('0x39')](_0x5f5adb['model'],qs[_0x9d38('0x3b')](_0x19549a['query'][_0x9d38('0x3b')]));_0x433c88[_0x9d38('0x3a')]=_0x433c88['attributes']['length']?_0x433c88[_0x9d38('0x3a')]:_0x5f5adb[_0x9d38('0x35')];if(!_0x19549a[_0x9d38('0x36')][_0x9d38('0x3c')](_0x9d38('0x3d'))){_0x433c88[_0x9d38('0x20')]=qs['limit'](_0x19549a[_0x9d38('0x36')][_0x9d38('0x20')]);_0x433c88[_0x9d38('0x1e')]=qs['offset'](_0x19549a[_0x9d38('0x36')][_0x9d38('0x1e')]);}_0x433c88[_0x9d38('0x3e')]=qs[_0x9d38('0x3f')](_0x19549a['query'][_0x9d38('0x3f')]);_0x433c88[_0x9d38('0x40')]=qs['filters'](_[_0x9d38('0x41')](_0x19549a[_0x9d38('0x36')],_0x5f5adb[_0x9d38('0x38')]),_0x32f82f);if(_0x19549a[_0x9d38('0x36')][_0x9d38('0x42')]){_0x433c88[_0x9d38('0x40')]=_[_0x9d38('0x43')](_0x433c88[_0x9d38('0x40')],{'$or':_[_0x9d38('0x31')](_0x32f82f,function(_0x4f17cd){if(_0x4f17cd['type']!==_0x9d38('0x44')){var _0x4c13c1={};_0x4c13c1[_0x4f17cd[_0x9d38('0x2e')]]={'$like':'%'+_0x19549a[_0x9d38('0x36')][_0x9d38('0x42')]+'%'};return _0x4c13c1;}})});}_0x433c88=_['merge']({},_0x433c88,_0x19549a[_0x9d38('0x45')]);var _0x5ef92e={'where':_0x433c88[_0x9d38('0x40')]};return db['SquareProject'][_0x9d38('0x21')](_0x5ef92e)[_0x9d38('0x2b')](function(_0x1ee7cb){_0x2d971b[_0x9d38('0x21')]=_0x1ee7cb;if(_0x19549a[_0x9d38('0x36')][_0x9d38('0x46')]){_0x433c88[_0x9d38('0x47')]=[{'all':!![]}];}return db[_0x9d38('0x32')][_0x9d38('0x48')](_0x433c88);})[_0x9d38('0x2b')](function(_0x5e24b2){_0x2d971b[_0x9d38('0x49')]=_0x5e24b2;return _0x2d971b;})['then'](respondWithFilteredResult(_0x4eb7c1,_0x433c88))['catch'](handleError(_0x4eb7c1,null));};exports[_0x9d38('0x4a')]=function(_0x2ad7a6,_0x311d4d){var _0x75c40d={'raw':![],'where':{'id':_0x2ad7a6[_0x9d38('0x4b')]['id']}},_0x286c98={};_0x286c98['model']=_[_0x9d38('0x37')](db[_0x9d38('0x32')]['rawAttributes']);_0x286c98[_0x9d38('0x36')]=_[_0x9d38('0x37')](_0x2ad7a6[_0x9d38('0x36')]);_0x286c98[_0x9d38('0x38')]=_[_0x9d38('0x39')](_0x286c98[_0x9d38('0x35')],_0x286c98[_0x9d38('0x36')]);_0x75c40d[_0x9d38('0x3a')]=_[_0x9d38('0x39')](_0x286c98[_0x9d38('0x35')],qs[_0x9d38('0x3b')](_0x2ad7a6[_0x9d38('0x36')][_0x9d38('0x3b')]));_0x75c40d[_0x9d38('0x3a')]=_0x75c40d[_0x9d38('0x3a')][_0x9d38('0x4c')]?_0x75c40d[_0x9d38('0x3a')]:_0x286c98[_0x9d38('0x35')];if(_0x2ad7a6[_0x9d38('0x36')]['includeAll']){_0x75c40d['include']=[{'all':!![]}];}_0x75c40d=_[_0x9d38('0x43')]({},_0x75c40d,_0x2ad7a6[_0x9d38('0x45')]);return db[_0x9d38('0x32')][_0x9d38('0x4d')](_0x75c40d)['then'](handleEntityNotFound(_0x311d4d,null))[_0x9d38('0x2b')](respondWithResult(_0x311d4d,null))[_0x9d38('0x4e')](handleError(_0x311d4d,null));};exports[_0x9d38('0x4f')]=function(_0x1124c6,_0x2e578b){return db[_0x9d38('0x32')][_0x9d38('0x4f')](_0x1124c6[_0x9d38('0x50')],{})[_0x9d38('0x2b')](function(_0x2ee568){var _0x5e2f73=_0x1124c6['user'][_0x9d38('0x27')]({'plain':!![]});if(!_0x5e2f73)throw new Error(_0x9d38('0x51'));if(_0x5e2f73['role']===_0x9d38('0x52')){var _0x1de3ac=_0x2ee568[_0x9d38('0x27')]({'plain':!![]});var _0x5e1abc=_0x9d38('0x28');return db[_0x9d38('0x53')][_0x9d38('0x4d')]({'where':{'name':_0x5e1abc,'userProfileId':_0x5e2f73[_0x9d38('0x54')]},'raw':!![]})[_0x9d38('0x2b')](function(_0x4d39f6){if(_0x4d39f6&&_0x4d39f6['autoAssociation']===0x0){return db[_0x9d38('0x29')][_0x9d38('0x4f')]({'name':_0x1de3ac['name'],'resourceId':_0x1de3ac['id'],'type':_0x4d39f6['name'],'sectionId':_0x4d39f6['id']},{})['then'](function(){return _0x2ee568;});}else{return _0x2ee568;}})['catch'](function(_0x3300e6){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3300e6);throw _0x3300e6;});}return _0x2ee568;})[_0x9d38('0x2b')](respondWithResult(_0x2e578b,0xc9))[_0x9d38('0x4e')](handleError(_0x2e578b,null));};exports[_0x9d38('0x26')]=function(_0x14c617,_0x4a8cf5){if(_0x14c617[_0x9d38('0x50')]['id']){delete _0x14c617[_0x9d38('0x50')]['id'];}return db[_0x9d38('0x32')][_0x9d38('0x4d')]({'where':{'id':_0x14c617['params']['id']}})['then'](handleEntityNotFound(_0x4a8cf5,null))[_0x9d38('0x2b')](saveUpdates(_0x14c617[_0x9d38('0x50')],null))[_0x9d38('0x2b')](respondWithResult(_0x4a8cf5,null))['catch'](handleError(_0x4a8cf5,null));};exports[_0x9d38('0x2a')]=function(_0x557a20,_0x7389f3){return db[_0x9d38('0x32')][_0x9d38('0x4d')]({'where':{'id':_0x557a20[_0x9d38('0x4b')]['id']}})[_0x9d38('0x2b')](handleEntityNotFound(_0x7389f3,null))[_0x9d38('0x2b')](removeEntity(_0x7389f3,null))[_0x9d38('0x4e')](handleError(_0x7389f3,null));};exports[_0x9d38('0x55')]=function(_0x5c30dc,_0x2528bb,_0x1cf8d5){return db[_0x9d38('0x32')][_0x9d38('0x4d')]({'where':{'id':_0x5c30dc[_0x9d38('0x4b')]['id']}})[_0x9d38('0x2b')](handleEntityNotFound(_0x2528bb,null))[_0x9d38('0x2b')](function(_0x39eb26){if(_0x39eb26){return _0x39eb26[_0x9d38('0x55')](_0x5c30dc[_0x9d38('0x50')]['ids'],_['omit'](_0x5c30dc[_0x9d38('0x50')],['ids','id'])||{});}})['then'](respondWithResult(_0x2528bb,null))[_0x9d38('0x4e')](handleError(_0x2528bb,null));};exports[_0x9d38('0x56')]=function(_0x1dea42,_0x361c54,_0x56f8dc){return db['SquareProject'][_0x9d38('0x4d')]({'where':{'id':_0x1dea42[_0x9d38('0x4b')]['id']}})[_0x9d38('0x2b')](handleEntityNotFound(_0x361c54,null))[_0x9d38('0x2b')](function(_0x4aabff){if(_0x4aabff){return _0x4aabff[_0x9d38('0x56')](_0x1dea42[_0x9d38('0x36')]['ids'])[_0x9d38('0x2b')](function(){if(_[_0x9d38('0x57')](_0x1dea42[_0x9d38('0x36')][_0x9d38('0x58')])){for(var _0x3f6d9e=0x0;_0x3f6d9e<_0x1dea42['query'][_0x9d38('0x58')][_0x9d38('0x4c')];_0x3f6d9e+=0x1){socket[_0x9d38('0x59')](_0x9d38('0x5a'),{'UserId':Number(_0x1dea42[_0x9d38('0x36')]['ids'][_0x3f6d9e]),'SquareProjectId':Number(_0x1dea42[_0x9d38('0x4b')]['id'])});}}else{socket[_0x9d38('0x59')](_0x9d38('0x5a'),{'UserId':Number(_0x1dea42[_0x9d38('0x36')][_0x9d38('0x58')]),'SquareProjectId':Number(_0x1dea42[_0x9d38('0x4b')]['id'])});}});}})[_0x9d38('0x2b')](respondWithStatusCode(_0x361c54,null))[_0x9d38('0x4e')](handleError(_0x361c54,null));};exports[_0x9d38('0x5b')]=function(_0x26a76d,_0x49780a,_0x54d72a){var _0x5f3bfe={};var _0x1850b3={};var _0x383350;var _0x4ff10e;return db[_0x9d38('0x32')][_0x9d38('0x5c')]({'where':{'id':_0x26a76d[_0x9d38('0x4b')]['id']}})[_0x9d38('0x2b')](handleEntityNotFound(_0x49780a,null))['then'](function(_0x11a09f){if(_0x11a09f){_0x383350=_0x11a09f;_0x1850b3[_0x9d38('0x35')]=_[_0x9d38('0x37')](db[_0x9d38('0x5d')][_0x9d38('0x5e')]);_0x1850b3['query']=_[_0x9d38('0x37')](_0x26a76d['query']);_0x1850b3['filters']=_[_0x9d38('0x39')](_0x1850b3['model'],_0x1850b3[_0x9d38('0x36')]);_0x5f3bfe['attributes']=_[_0x9d38('0x39')](_0x1850b3['model'],qs[_0x9d38('0x3b')](_0x26a76d[_0x9d38('0x36')][_0x9d38('0x3b')]));_0x5f3bfe[_0x9d38('0x3a')]=_0x5f3bfe[_0x9d38('0x3a')][_0x9d38('0x4c')]?_0x5f3bfe[_0x9d38('0x3a')]:_0x1850b3[_0x9d38('0x35')];_0x5f3bfe[_0x9d38('0x3e')]=qs[_0x9d38('0x3f')](_0x26a76d['query'][_0x9d38('0x3f')]);_0x5f3bfe['where']=qs['filters'](_['pick'](_0x26a76d[_0x9d38('0x36')],_0x1850b3['filters']));if(_0x26a76d[_0x9d38('0x36')]['filter']){_0x5f3bfe[_0x9d38('0x40')]=_[_0x9d38('0x43')](_0x5f3bfe[_0x9d38('0x40')],{'$or':_[_0x9d38('0x31')](_0x5f3bfe[_0x9d38('0x3a')],function(_0x41fc8d){var _0x2c6964={};_0x2c6964[_0x41fc8d]={'$like':'%'+_0x26a76d[_0x9d38('0x36')]['filter']+'%'};return _0x2c6964;})});}_0x5f3bfe=_[_0x9d38('0x43')]({},_0x5f3bfe,_0x26a76d[_0x9d38('0x45')]);return _0x383350['getUsers'](_0x5f3bfe);}})[_0x9d38('0x2b')](function(_0x4020c7){if(_0x4020c7){_0x4ff10e=_0x4020c7[_0x9d38('0x4c')];if(!_0x26a76d[_0x9d38('0x36')][_0x9d38('0x3c')]('nolimit')){_0x5f3bfe[_0x9d38('0x20')]=qs[_0x9d38('0x20')](_0x26a76d[_0x9d38('0x36')][_0x9d38('0x20')]);_0x5f3bfe[_0x9d38('0x1e')]=qs['offset'](_0x26a76d[_0x9d38('0x36')][_0x9d38('0x1e')]);}return _0x383350[_0x9d38('0x5b')](_0x5f3bfe);}})[_0x9d38('0x2b')](function(_0x4eeb82){if(_0x4eeb82){return _0x4eeb82?{'count':_0x4ff10e,'rows':_0x4eeb82}:null;}})[_0x9d38('0x2b')](respondWithResult(_0x49780a,null))['catch'](handleError(_0x49780a,null));};
\ No newline at end of file
+var _0xfdf2=['keys','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','rows','catch','show','params','filters','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','eml-format','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','update','then','destroy','SquareProjects','error','name','send','map','SquareProject','rawAttributes','fieldName','type','key','model','query'];(function(_0x37c0df,_0x5ce53f){var _0x1820b6=function(_0x500e8a){while(--_0x500e8a){_0x37c0df['push'](_0x37c0df['shift']());}};_0x1820b6(++_0x5ce53f);}(_0xfdf2,0x1f1));var _0x2fdf=function(_0x300ae8,_0x1ae6ce){_0x300ae8=_0x300ae8-0x0;var _0x5a48ef=_0xfdf2[_0x300ae8];return _0x5a48ef;};'use strict';var emlformat=require(_0x2fdf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2fdf('0x1'));var rp=require(_0x2fdf('0x2'));var moment=require(_0x2fdf('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x2fdf('0x4'));var sox=require(_0x2fdf('0x5'));var csv=require(_0x2fdf('0x6'));var ejs=require(_0x2fdf('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2fdf('0x8'));var squel=require(_0x2fdf('0x9'));var crypto=require(_0x2fdf('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x2fdf('0xb'));var toCsv=require(_0x2fdf('0x6'));var querystring=require(_0x2fdf('0xc'));var Papa=require(_0x2fdf('0xd'));var Redis=require(_0x2fdf('0xe'));var authService=require(_0x2fdf('0xf'));var qs=require(_0x2fdf('0x10'));var as=require(_0x2fdf('0x11'));var hardwareService=require(_0x2fdf('0x12'));var logger=require(_0x2fdf('0x13'))(_0x2fdf('0x14'));var utils=require(_0x2fdf('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2fdf('0x16'));var db=require(_0x2fdf('0x17'))['db'];config[_0x2fdf('0x18')]=_['defaults'](config[_0x2fdf('0x18')],{'host':_0x2fdf('0x19'),'port':0x18eb});var socket=require(_0x2fdf('0x1a'))(new Redis(config[_0x2fdf('0x18')]));require(_0x2fdf('0x1b'))[_0x2fdf('0x1c')](socket);function respondWithStatusCode(_0x265a42,_0x2daef9){_0x2daef9=_0x2daef9||0xcc;return function(_0x519ba2){if(_0x519ba2){return _0x265a42[_0x2fdf('0x1d')](_0x2daef9);}return _0x265a42[_0x2fdf('0x1e')](_0x2daef9)[_0x2fdf('0x1f')]();};}function respondWithResult(_0x529a85,_0xec8f6c){_0xec8f6c=_0xec8f6c||0xc8;return function(_0x47b9ac){if(_0x47b9ac){return _0x529a85['status'](_0xec8f6c)[_0x2fdf('0x20')](_0x47b9ac);}};}function respondWithFilteredResult(_0x18693e,_0x38cc57){return function(_0x48ccba){if(_0x48ccba){var _0x2fafaa=typeof _0x38cc57['offset']==='undefined'&&typeof _0x38cc57['limit']==='undefined';var _0x1dfb64=_0x48ccba[_0x2fdf('0x21')];var _0x18aa18=_0x2fafaa?0x0:_0x38cc57[_0x2fdf('0x22')];var _0x2a2877=_0x2fafaa?_0x48ccba[_0x2fdf('0x21')]:_0x38cc57[_0x2fdf('0x22')]+_0x38cc57[_0x2fdf('0x23')];var _0x551550;if(_0x2a2877>=_0x1dfb64){_0x2a2877=_0x1dfb64;_0x551550=0xc8;}else{_0x551550=0xce;}_0x18693e[_0x2fdf('0x1e')](_0x551550);return _0x18693e[_0x2fdf('0x24')](_0x2fdf('0x25'),_0x18aa18+'-'+_0x2a2877+'/'+_0x1dfb64)[_0x2fdf('0x20')](_0x48ccba);}return null;};}function patchUpdates(_0x550995){return function(_0x4a9a48){try{jsonpatch[_0x2fdf('0x26')](_0x4a9a48,_0x550995,!![]);}catch(_0x239363){return BPromise[_0x2fdf('0x27')](_0x239363);}return _0x4a9a48['save']();};}function saveUpdates(_0x290710,_0x1167af){return function(_0x354e0e){if(_0x354e0e){return _0x354e0e[_0x2fdf('0x28')](_0x290710)[_0x2fdf('0x29')](function(_0x28d42e){return _0x28d42e;});}return null;};}function removeEntity(_0x374846,_0x4615c4){return function(_0x292e14){if(_0x292e14){return _0x292e14[_0x2fdf('0x2a')]()[_0x2fdf('0x29')](function(){var _0x1182f2=_0x292e14['get']({'plain':!![]});var _0xa09859=_0x2fdf('0x2b');return db['UserProfileResource'][_0x2fdf('0x2a')]({'where':{'type':_0xa09859,'resourceId':_0x1182f2['id']}})[_0x2fdf('0x29')](function(){return _0x292e14;});})[_0x2fdf('0x29')](function(){_0x374846[_0x2fdf('0x1e')](0xcc)[_0x2fdf('0x1f')]();});}};}function handleEntityNotFound(_0x1d65f9,_0x3386b3){return function(_0x233bef){if(!_0x233bef){_0x1d65f9[_0x2fdf('0x1d')](0x194);}return _0x233bef;};}function handleError(_0x11099c,_0x1c6003){_0x1c6003=_0x1c6003||0x1f4;return function(_0x480cc4){logger[_0x2fdf('0x2c')](_0x480cc4['stack']);if(_0x480cc4[_0x2fdf('0x2d')]){delete _0x480cc4[_0x2fdf('0x2d')];}_0x11099c[_0x2fdf('0x1e')](_0x1c6003)[_0x2fdf('0x2e')](_0x480cc4);};}exports['index']=function(_0x59da4e,_0x5d2d98){var _0x40a534={},_0x68b25b={},_0x20c693={'count':0x0,'rows':[]};var _0x1404a9=_[_0x2fdf('0x2f')](db[_0x2fdf('0x30')][_0x2fdf('0x31')],function(_0x2006d0){return{'name':_0x2006d0[_0x2fdf('0x32')],'type':_0x2006d0[_0x2fdf('0x33')][_0x2fdf('0x34')]};});_0x68b25b[_0x2fdf('0x35')]=_[_0x2fdf('0x2f')](_0x1404a9,_0x2fdf('0x2d'));_0x68b25b[_0x2fdf('0x36')]=_[_0x2fdf('0x37')](_0x59da4e[_0x2fdf('0x36')]);_0x68b25b['filters']=_[_0x2fdf('0x38')](_0x68b25b[_0x2fdf('0x35')],_0x68b25b[_0x2fdf('0x36')]);_0x40a534[_0x2fdf('0x39')]=_[_0x2fdf('0x38')](_0x68b25b[_0x2fdf('0x35')],qs['fields'](_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x3a')]));_0x40a534[_0x2fdf('0x39')]=_0x40a534[_0x2fdf('0x39')][_0x2fdf('0x3b')]?_0x40a534[_0x2fdf('0x39')]:_0x68b25b['model'];if(!_0x59da4e[_0x2fdf('0x36')]['hasOwnProperty'](_0x2fdf('0x3c'))){_0x40a534[_0x2fdf('0x23')]=qs['limit'](_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x23')]);_0x40a534[_0x2fdf('0x22')]=qs[_0x2fdf('0x22')](_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x22')]);}_0x40a534['order']=qs[_0x2fdf('0x3d')](_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x3d')]);_0x40a534[_0x2fdf('0x3e')]=qs['filters'](_[_0x2fdf('0x3f')](_0x59da4e['query'],_0x68b25b['filters']),_0x1404a9);if(_0x59da4e[_0x2fdf('0x36')]['filter']){_0x40a534[_0x2fdf('0x3e')]=_[_0x2fdf('0x40')](_0x40a534['where'],{'$or':_[_0x2fdf('0x2f')](_0x1404a9,function(_0x4abbb1){if(_0x4abbb1['type']!==_0x2fdf('0x41')){var _0x37f093={};_0x37f093[_0x4abbb1['name']]={'$like':'%'+_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x42')]+'%'};return _0x37f093;}})});}_0x40a534=_[_0x2fdf('0x40')]({},_0x40a534,_0x59da4e['options']);var _0x5ecafb={'where':_0x40a534[_0x2fdf('0x3e')]};return db[_0x2fdf('0x30')]['count'](_0x5ecafb)[_0x2fdf('0x29')](function(_0x408ae3){_0x20c693[_0x2fdf('0x21')]=_0x408ae3;if(_0x59da4e[_0x2fdf('0x36')][_0x2fdf('0x43')]){_0x40a534[_0x2fdf('0x44')]=[{'all':!![]}];}return db[_0x2fdf('0x30')]['findAll'](_0x40a534);})[_0x2fdf('0x29')](function(_0x47f4b6){_0x20c693[_0x2fdf('0x45')]=_0x47f4b6;return _0x20c693;})['then'](respondWithFilteredResult(_0x5d2d98,_0x40a534))[_0x2fdf('0x46')](handleError(_0x5d2d98,null));};exports[_0x2fdf('0x47')]=function(_0x4a49e1,_0xd199bd){var _0x4a97ee={'raw':![],'where':{'id':_0x4a49e1[_0x2fdf('0x48')]['id']}},_0x358e2f={};_0x358e2f[_0x2fdf('0x35')]=_[_0x2fdf('0x37')](db[_0x2fdf('0x30')][_0x2fdf('0x31')]);_0x358e2f[_0x2fdf('0x36')]=_['keys'](_0x4a49e1[_0x2fdf('0x36')]);_0x358e2f[_0x2fdf('0x49')]=_[_0x2fdf('0x38')](_0x358e2f[_0x2fdf('0x35')],_0x358e2f['query']);_0x4a97ee[_0x2fdf('0x39')]=_[_0x2fdf('0x38')](_0x358e2f[_0x2fdf('0x35')],qs[_0x2fdf('0x3a')](_0x4a49e1['query'][_0x2fdf('0x3a')]));_0x4a97ee[_0x2fdf('0x39')]=_0x4a97ee[_0x2fdf('0x39')][_0x2fdf('0x3b')]?_0x4a97ee[_0x2fdf('0x39')]:_0x358e2f[_0x2fdf('0x35')];if(_0x4a49e1[_0x2fdf('0x36')][_0x2fdf('0x43')]){_0x4a97ee[_0x2fdf('0x44')]=[{'all':!![]}];}_0x4a97ee=_[_0x2fdf('0x40')]({},_0x4a97ee,_0x4a49e1[_0x2fdf('0x4a')]);return db[_0x2fdf('0x30')]['find'](_0x4a97ee)[_0x2fdf('0x29')](handleEntityNotFound(_0xd199bd,null))['then'](respondWithResult(_0xd199bd,null))['catch'](handleError(_0xd199bd,null));};exports['create']=function(_0x32429e,_0x650f61){return db[_0x2fdf('0x30')][_0x2fdf('0x4b')](_0x32429e['body'],{})[_0x2fdf('0x29')](function(_0x321eaa){var _0xcab754=_0x32429e[_0x2fdf('0x4c')]['get']({'plain':!![]});if(!_0xcab754)throw new Error(_0x2fdf('0x4d'));if(_0xcab754['role']===_0x2fdf('0x4c')){var _0x27898b=_0x321eaa[_0x2fdf('0x4e')]({'plain':!![]});var _0x13fb86=_0x2fdf('0x2b');return db[_0x2fdf('0x4f')]['find']({'where':{'name':_0x13fb86,'userProfileId':_0xcab754[_0x2fdf('0x50')]},'raw':!![]})[_0x2fdf('0x29')](function(_0x139500){if(_0x139500&&_0x139500['autoAssociation']===0x0){return db['UserProfileResource'][_0x2fdf('0x4b')]({'name':_0x27898b['name'],'resourceId':_0x27898b['id'],'type':_0x139500[_0x2fdf('0x2d')],'sectionId':_0x139500['id']},{})[_0x2fdf('0x29')](function(){return _0x321eaa;});}else{return _0x321eaa;}})[_0x2fdf('0x46')](function(_0x308127){logger['error'](_0x2fdf('0x51'),_0x308127);throw _0x308127;});}return _0x321eaa;})[_0x2fdf('0x29')](respondWithResult(_0x650f61,0xc9))[_0x2fdf('0x46')](handleError(_0x650f61,null));};exports[_0x2fdf('0x28')]=function(_0x515f3f,_0x33d4fc){if(_0x515f3f[_0x2fdf('0x52')]['id']){delete _0x515f3f['body']['id'];}return db['SquareProject'][_0x2fdf('0x53')]({'where':{'id':_0x515f3f['params']['id']}})[_0x2fdf('0x29')](handleEntityNotFound(_0x33d4fc,null))[_0x2fdf('0x29')](saveUpdates(_0x515f3f[_0x2fdf('0x52')],null))[_0x2fdf('0x29')](respondWithResult(_0x33d4fc,null))[_0x2fdf('0x46')](handleError(_0x33d4fc,null));};exports[_0x2fdf('0x2a')]=function(_0x28ab02,_0xc5a835){return db[_0x2fdf('0x30')][_0x2fdf('0x53')]({'where':{'id':_0x28ab02[_0x2fdf('0x48')]['id']}})['then'](handleEntityNotFound(_0xc5a835,null))[_0x2fdf('0x29')](removeEntity(_0xc5a835,null))[_0x2fdf('0x46')](handleError(_0xc5a835,null));};exports['addUsers']=function(_0x26b86c,_0x18edea,_0x48a0b6){return db[_0x2fdf('0x30')][_0x2fdf('0x53')]({'where':{'id':_0x26b86c['params']['id']}})[_0x2fdf('0x29')](handleEntityNotFound(_0x18edea,null))[_0x2fdf('0x29')](function(_0x232895){if(_0x232895){return _0x232895[_0x2fdf('0x54')](_0x26b86c[_0x2fdf('0x52')][_0x2fdf('0x55')],_[_0x2fdf('0x56')](_0x26b86c[_0x2fdf('0x52')],[_0x2fdf('0x55'),'id'])||{});}})[_0x2fdf('0x29')](respondWithResult(_0x18edea,null))[_0x2fdf('0x46')](handleError(_0x18edea,null));};exports[_0x2fdf('0x57')]=function(_0x1e3ac9,_0x1ffe03,_0x4a119d){return db[_0x2fdf('0x30')]['find']({'where':{'id':_0x1e3ac9[_0x2fdf('0x48')]['id']}})[_0x2fdf('0x29')](handleEntityNotFound(_0x1ffe03,null))['then'](function(_0x1ea0f8){if(_0x1ea0f8){return _0x1ea0f8[_0x2fdf('0x57')](_0x1e3ac9[_0x2fdf('0x36')][_0x2fdf('0x55')])[_0x2fdf('0x29')](function(){if(_[_0x2fdf('0x58')](_0x1e3ac9[_0x2fdf('0x36')][_0x2fdf('0x55')])){for(var _0x3e635f=0x0;_0x3e635f<_0x1e3ac9['query'][_0x2fdf('0x55')]['length'];_0x3e635f+=0x1){socket[_0x2fdf('0x59')]('userSquareProject:remove',{'UserId':Number(_0x1e3ac9['query']['ids'][_0x3e635f]),'SquareProjectId':Number(_0x1e3ac9[_0x2fdf('0x48')]['id'])});}}else{socket[_0x2fdf('0x59')](_0x2fdf('0x5a'),{'UserId':Number(_0x1e3ac9['query'][_0x2fdf('0x55')]),'SquareProjectId':Number(_0x1e3ac9[_0x2fdf('0x48')]['id'])});}});}})[_0x2fdf('0x29')](respondWithStatusCode(_0x1ffe03,null))[_0x2fdf('0x46')](handleError(_0x1ffe03,null));};exports[_0x2fdf('0x5b')]=function(_0x22d7e4,_0x15b71c,_0x4735af){var _0x17c9e4={};var _0x3e4a24={};var _0x47e52e;var _0x449b47;return db[_0x2fdf('0x30')]['findOne']({'where':{'id':_0x22d7e4[_0x2fdf('0x48')]['id']}})['then'](handleEntityNotFound(_0x15b71c,null))[_0x2fdf('0x29')](function(_0x2c0022){if(_0x2c0022){_0x47e52e=_0x2c0022;_0x3e4a24[_0x2fdf('0x35')]=_[_0x2fdf('0x37')](db['User'][_0x2fdf('0x31')]);_0x3e4a24[_0x2fdf('0x36')]=_[_0x2fdf('0x37')](_0x22d7e4[_0x2fdf('0x36')]);_0x3e4a24[_0x2fdf('0x49')]=_[_0x2fdf('0x38')](_0x3e4a24[_0x2fdf('0x35')],_0x3e4a24[_0x2fdf('0x36')]);_0x17c9e4[_0x2fdf('0x39')]=_[_0x2fdf('0x38')](_0x3e4a24[_0x2fdf('0x35')],qs[_0x2fdf('0x3a')](_0x22d7e4['query'][_0x2fdf('0x3a')]));_0x17c9e4['attributes']=_0x17c9e4['attributes'][_0x2fdf('0x3b')]?_0x17c9e4['attributes']:_0x3e4a24[_0x2fdf('0x35')];_0x17c9e4['order']=qs[_0x2fdf('0x3d')](_0x22d7e4['query'][_0x2fdf('0x3d')]);_0x17c9e4[_0x2fdf('0x3e')]=qs[_0x2fdf('0x49')](_[_0x2fdf('0x3f')](_0x22d7e4[_0x2fdf('0x36')],_0x3e4a24['filters']));if(_0x22d7e4['query'][_0x2fdf('0x42')]){_0x17c9e4[_0x2fdf('0x3e')]=_[_0x2fdf('0x40')](_0x17c9e4[_0x2fdf('0x3e')],{'$or':_[_0x2fdf('0x2f')](_0x17c9e4['attributes'],function(_0x2c5b51){var _0x198d32={};_0x198d32[_0x2c5b51]={'$like':'%'+_0x22d7e4[_0x2fdf('0x36')][_0x2fdf('0x42')]+'%'};return _0x198d32;})});}_0x17c9e4=_[_0x2fdf('0x40')]({},_0x17c9e4,_0x22d7e4['options']);return _0x47e52e[_0x2fdf('0x5b')](_0x17c9e4);}})['then'](function(_0x3fc11a){if(_0x3fc11a){_0x449b47=_0x3fc11a[_0x2fdf('0x3b')];if(!_0x22d7e4[_0x2fdf('0x36')]['hasOwnProperty']('nolimit')){_0x17c9e4[_0x2fdf('0x23')]=qs[_0x2fdf('0x23')](_0x22d7e4['query'][_0x2fdf('0x23')]);_0x17c9e4[_0x2fdf('0x22')]=qs[_0x2fdf('0x22')](_0x22d7e4[_0x2fdf('0x36')]['offset']);}return _0x47e52e[_0x2fdf('0x5b')](_0x17c9e4);}})[_0x2fdf('0x29')](function(_0x5d148b){if(_0x5d148b){return _0x5d148b?{'count':_0x449b47,'rows':_0x5d148b}:null;}})['then'](respondWithResult(_0x15b71c,null))[_0x2fdf('0x46')](handleError(_0x15b71c,null));};
\ No newline at end of file
index a9f8e64..6cabc22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd5a=['hasOwnProperty','hook','events','../../mysqldb','SquareProject','setMaxListeners','remove'];(function(_0x5e0147,_0x2faf8a){var _0x292679=function(_0x1dd860){while(--_0x1dd860){_0x5e0147['push'](_0x5e0147['shift']());}};_0x292679(++_0x2faf8a);}(_0xdd5a,0x16e));var _0xadd5=function(_0x3858d5,_0x306814){_0x3858d5=_0x3858d5-0x0;var _0x443d04=_0xdd5a[_0x3858d5];return _0x443d04;};'use strict';var EventEmitter=require(_0xadd5('0x0'));var SquareProject=require(_0xadd5('0x1'))['db'][_0xadd5('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xadd5('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xadd5('0x4')};function emitEvent(_0x1cdb95){return function(_0x359615,_0x2056b0,_0x547b61){SquareProjectEvents['emit'](_0x1cdb95+':'+_0x359615['id'],_0x359615);SquareProjectEvents['emit'](_0x1cdb95,_0x359615);_0x547b61(null);};}for(var e in events){if(events[_0xadd5('0x5')](e)){var event=events[e];SquareProject[_0xadd5('0x6')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
+var _0x7e97=['../../mysqldb','SquareProject','setMaxListeners','save','remove','emit','hasOwnProperty','exports','events'];(function(_0x5ce1c2,_0x4c256e){var _0x3fa9a5=function(_0x224da8){while(--_0x224da8){_0x5ce1c2['push'](_0x5ce1c2['shift']());}};_0x3fa9a5(++_0x4c256e);}(_0x7e97,0x13a));var _0x77e9=function(_0x45fb8f,_0x46da98){_0x45fb8f=_0x45fb8f-0x0;var _0x3d906b=_0x7e97[_0x45fb8f];return _0x3d906b;};'use strict';var EventEmitter=require(_0x77e9('0x0'));var SquareProject=require(_0x77e9('0x1'))['db'][_0x77e9('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x77e9('0x3')](0x0);var events={'afterCreate':_0x77e9('0x4'),'afterUpdate':'update','afterDestroy':_0x77e9('0x5')};function emitEvent(_0x58cd93){return function(_0x2b1765,_0x5962d0,_0x341b0c){SquareProjectEvents['emit'](_0x58cd93+':'+_0x2b1765['id'],_0x2b1765);SquareProjectEvents[_0x77e9('0x6')](_0x58cd93,_0x2b1765);_0x341b0c(null);};}for(var e in events){if(events[_0x77e9('0x7')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x77e9('0x8')]=SquareProjectEvents;
\ No newline at end of file
index dd7d74d..856ec1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb13a=['api','bluebird','request-promise','rimraf','../../config/environment','./squareProject.attributes','define','SquareProject','square_projects','changed','preproduction','savedAt','production','publishedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger'];(function(_0x56cd48,_0x1f71e6){var _0x41933f=function(_0x5d351f){while(--_0x5d351f){_0x56cd48['push'](_0x56cd48['shift']());}};_0x41933f(++_0x1f71e6);}(_0xb13a,0x1d2));var _0xab13=function(_0x5eb427,_0x26b6ad){_0x5eb427=_0x5eb427-0x0;var _0x1481d8=_0xb13a[_0x5eb427];return _0x1481d8;};'use strict';var _=require('lodash');var util=require(_0xab13('0x0'));var logger=require(_0xab13('0x1'))(_0xab13('0x2'));var moment=require('moment');var BPromise=require(_0xab13('0x3'));var rp=require(_0xab13('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xab13('0x5'));var config=require(_0xab13('0x6'));var attributes=require(_0xab13('0x7'));module['exports']=function(_0x1f509e,_0x34c8cc){return _0x1f509e[_0xab13('0x8')](_0xab13('0x9'),attributes,{'tableName':_0xab13('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x498a24,_0xa064c1,_0x20f839){if(_0x498a24[_0xab13('0xb')](_0xab13('0xc'))){_0x498a24[_0xab13('0xd')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x498a24[_0xab13('0xb')](_0xab13('0xe'))){_0x498a24[_0xab13('0xf')]=moment()[_0xab13('0x10')](_0xab13('0x11'));}_0x20f839(null,_0x498a24);}}});};
\ No newline at end of file
+var _0xc38d=['lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','SquareProject','changed','preproduction','savedAt','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','format'];(function(_0x1a3ee2,_0x2194f0){var _0x1e729f=function(_0x9d6846){while(--_0x9d6846){_0x1a3ee2['push'](_0x1a3ee2['shift']());}};_0x1e729f(++_0x2194f0);}(_0xc38d,0x110));var _0xdc38=function(_0x2775ae,_0x19aeb1){_0x2775ae=_0x2775ae-0x0;var _0x4b16e2=_0xc38d[_0x2775ae];return _0x4b16e2;};'use strict';var _=require(_0xdc38('0x0'));var util=require(_0xdc38('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xdc38('0x2'));var BPromise=require(_0xdc38('0x3'));var rp=require(_0xdc38('0x4'));var fs=require('fs');var path=require(_0xdc38('0x5'));var rimraf=require(_0xdc38('0x6'));var config=require(_0xdc38('0x7'));var attributes=require(_0xdc38('0x8'));module['exports']=function(_0x33fa3f,_0x36835d){return _0x33fa3f['define'](_0xdc38('0x9'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1b952a,_0x81d274,_0x3a60b2){if(_0x1b952a[_0xdc38('0xa')](_0xdc38('0xb'))){_0x1b952a[_0xdc38('0xc')]=moment()['format'](_0xdc38('0xd'));}if(_0x1b952a[_0xdc38('0xa')](_0xdc38('0xe'))){_0x1b952a[_0xdc38('0xf')]=moment()[_0xdc38('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3a60b2(null,_0x1b952a);}}});};
\ No newline at end of file
index 990848f..2fc22c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6c3=['then','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','SquareProject','find','options','raw','where','include','model','attributes','ShowSquareProject','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./squareProject.socket','register','request'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0xf6c3,0xb1));var _0x3f6c=function(_0x32e4a5,_0x116842){_0x32e4a5=_0x32e4a5-0x0;var _0x1d3951=_0xf6c3[_0x32e4a5];return _0x1d3951;};'use strict';var _=require(_0x3f6c('0x0'));var util=require(_0x3f6c('0x1'));var moment=require('moment');var BPromise=require(_0x3f6c('0x2'));var rs=require(_0x3f6c('0x3'));var fs=require('fs');var Redis=require(_0x3f6c('0x4'));var db=require(_0x3f6c('0x5'))['db'];var utils=require(_0x3f6c('0x6'));var logger=require(_0x3f6c('0x7'))(_0x3f6c('0x8'));var config=require(_0x3f6c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3f6c('0xa')][_0x3f6c('0xb')]({'port':0x232a});config[_0x3f6c('0xc')]=_['defaults'](config[_0x3f6c('0xc')],{'host':_0x3f6c('0xd'),'port':0x18eb});var socket=require(_0x3f6c('0xe'))(new Redis(config['redis']));require(_0x3f6c('0xf'))[_0x3f6c('0x10')](socket);function respondWithRpcPromise(_0x4da74f,_0x2124f6,_0x490efb){return new BPromise(function(_0x2efbaf,_0x1ec250){return client[_0x3f6c('0x11')](_0x4da74f,_0x490efb)[_0x3f6c('0x12')](function(_0x1be340){logger[_0x3f6c('0x13')](_0x3f6c('0x14'),_0x2124f6,_0x3f6c('0x15'));logger[_0x3f6c('0x16')](_0x3f6c('0x17'),_0x2124f6,'request\x20sent',JSON['stringify'](_0x1be340));if(_0x1be340['error']){if(_0x1be340[_0x3f6c('0x18')][_0x3f6c('0x19')]===0x1f4){logger['error'](_0x3f6c('0x14'),_0x2124f6,_0x1be340[_0x3f6c('0x18')]['message']);return _0x1ec250(_0x1be340[_0x3f6c('0x18')]['message']);}logger[_0x3f6c('0x18')](_0x3f6c('0x14'),_0x2124f6,_0x1be340['error']['message']);return _0x2efbaf(_0x1be340[_0x3f6c('0x18')][_0x3f6c('0x1a')]);}else{logger[_0x3f6c('0x13')](_0x3f6c('0x14'),_0x2124f6,'request\x20sent');_0x2efbaf(_0x1be340[_0x3f6c('0x1b')][_0x3f6c('0x1a')]);}})[_0x3f6c('0x1c')](function(_0x2d65f1){logger[_0x3f6c('0x18')]('SquareProject,\x20%s,\x20%s',_0x2124f6,_0x2d65f1);_0x1ec250(_0x2d65f1);});});}exports['ShowSquareProject']=function(_0x4fc2be){var _0x2492b0=this;return new Promise(function(_0x5e9094,_0x3941e0){return db[_0x3f6c('0x1d')][_0x3f6c('0x1e')]({'raw':_0x4fc2be[_0x3f6c('0x1f')]?_0x4fc2be[_0x3f6c('0x1f')][_0x3f6c('0x20')]===undefined?!![]:![]:!![],'where':_0x4fc2be[_0x3f6c('0x1f')]?_0x4fc2be[_0x3f6c('0x1f')][_0x3f6c('0x21')]||null:null,'attributes':_0x4fc2be['options']?_0x4fc2be[_0x3f6c('0x1f')]['attributes']||null:null,'include':_0x4fc2be[_0x3f6c('0x1f')]?_0x4fc2be[_0x3f6c('0x1f')][_0x3f6c('0x22')]?_['map'](_0x4fc2be[_0x3f6c('0x1f')][_0x3f6c('0x22')],function(_0x16fd03){return{'model':db[_0x16fd03[_0x3f6c('0x23')]],'as':_0x16fd03['as'],'attributes':_0x16fd03[_0x3f6c('0x24')],'include':_0x16fd03['include']?_['map'](_0x16fd03[_0x3f6c('0x22')],function(_0x367454){return{'model':db[_0x367454['model']],'as':_0x367454['as'],'attributes':_0x367454['attributes'],'include':_0x367454[_0x3f6c('0x22')]?_['map'](_0x367454[_0x3f6c('0x22')],function(_0x56d8a7){return{'model':db[_0x56d8a7[_0x3f6c('0x23')]],'as':_0x56d8a7['as'],'attributes':_0x56d8a7[_0x3f6c('0x24')]};}):[]};}):[]};}):[]:[]})[_0x3f6c('0x12')](function(_0x566e60){logger['info'](_0x3f6c('0x25'),_0x4fc2be);logger[_0x3f6c('0x16')]('ShowSquareProject',_0x4fc2be,JSON[_0x3f6c('0x26')](_0x566e60));_0x5e9094(_0x566e60);})[_0x3f6c('0x1c')](function(_0x4b78b0){logger['error'](_0x3f6c('0x25'),_0x4b78b0[_0x3f6c('0x1a')],_0x4fc2be);_0x3941e0(_0x2492b0['error'](0x1f4,_0x4b78b0['message']));});});};
\ No newline at end of file
+var _0x7f21=['result','catch','ShowSquareProject','SquareProject','find','raw','options','where','attributes','include','map','model','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','stringify','error','code','SquareProject,\x20%s,\x20%s','message'];(function(_0x3b348c,_0x1aa5b1){var _0x31d71e=function(_0x55f0b0){while(--_0x55f0b0){_0x3b348c['push'](_0x3b348c['shift']());}};_0x31d71e(++_0x1aa5b1);}(_0x7f21,0x1a3));var _0x17f2=function(_0x181c06,_0x39138f){_0x181c06=_0x181c06-0x0;var _0x3f80a4=_0x7f21[_0x181c06];return _0x3f80a4;};'use strict';var _=require('lodash');var util=require(_0x17f2('0x0'));var moment=require(_0x17f2('0x1'));var BPromise=require(_0x17f2('0x2'));var rs=require(_0x17f2('0x3'));var fs=require('fs');var Redis=require(_0x17f2('0x4'));var db=require(_0x17f2('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x17f2('0x6'))(_0x17f2('0x7'));var config=require('../../config/environment');var jayson=require(_0x17f2('0x8'));var client=jayson[_0x17f2('0x9')]['http']({'port':0x232a});config[_0x17f2('0xa')]=_[_0x17f2('0xb')](config[_0x17f2('0xa')],{'host':_0x17f2('0xc'),'port':0x18eb});var socket=require(_0x17f2('0xd'))(new Redis(config['redis']));require('./squareProject.socket')[_0x17f2('0xe')](socket);function respondWithRpcPromise(_0x41ece6,_0x180fb4,_0x59c767){return new BPromise(function(_0x230327,_0x3a03fd){return client[_0x17f2('0xf')](_0x41ece6,_0x59c767)[_0x17f2('0x10')](function(_0x237bf6){logger[_0x17f2('0x11')]('SquareProject,\x20%s,\x20%s',_0x180fb4,_0x17f2('0x12'));logger[_0x17f2('0x13')]('SquareProject,\x20%s,\x20%s,\x20%s',_0x180fb4,_0x17f2('0x12'),JSON[_0x17f2('0x14')](_0x237bf6));if(_0x237bf6[_0x17f2('0x15')]){if(_0x237bf6[_0x17f2('0x15')][_0x17f2('0x16')]===0x1f4){logger[_0x17f2('0x15')](_0x17f2('0x17'),_0x180fb4,_0x237bf6[_0x17f2('0x15')]['message']);return _0x3a03fd(_0x237bf6[_0x17f2('0x15')][_0x17f2('0x18')]);}logger[_0x17f2('0x15')](_0x17f2('0x17'),_0x180fb4,_0x237bf6[_0x17f2('0x15')]['message']);return _0x230327(_0x237bf6[_0x17f2('0x15')][_0x17f2('0x18')]);}else{logger[_0x17f2('0x11')](_0x17f2('0x17'),_0x180fb4,_0x17f2('0x12'));_0x230327(_0x237bf6[_0x17f2('0x19')][_0x17f2('0x18')]);}})[_0x17f2('0x1a')](function(_0x27404b){logger[_0x17f2('0x15')]('SquareProject,\x20%s,\x20%s',_0x180fb4,_0x27404b);_0x3a03fd(_0x27404b);});});}exports[_0x17f2('0x1b')]=function(_0x3e12ff){var _0x4fc915=this;return new Promise(function(_0x2446dc,_0x51db8a){return db[_0x17f2('0x1c')][_0x17f2('0x1d')]({'raw':_0x3e12ff['options']?_0x3e12ff['options'][_0x17f2('0x1e')]===undefined?!![]:![]:!![],'where':_0x3e12ff[_0x17f2('0x1f')]?_0x3e12ff[_0x17f2('0x1f')][_0x17f2('0x20')]||null:null,'attributes':_0x3e12ff[_0x17f2('0x1f')]?_0x3e12ff[_0x17f2('0x1f')][_0x17f2('0x21')]||null:null,'include':_0x3e12ff['options']?_0x3e12ff[_0x17f2('0x1f')][_0x17f2('0x22')]?_[_0x17f2('0x23')](_0x3e12ff['options'][_0x17f2('0x22')],function(_0x41e5b4){return{'model':db[_0x41e5b4['model']],'as':_0x41e5b4['as'],'attributes':_0x41e5b4[_0x17f2('0x21')],'include':_0x41e5b4['include']?_['map'](_0x41e5b4[_0x17f2('0x22')],function(_0x599764){return{'model':db[_0x599764[_0x17f2('0x24')]],'as':_0x599764['as'],'attributes':_0x599764[_0x17f2('0x21')],'include':_0x599764[_0x17f2('0x22')]?_[_0x17f2('0x23')](_0x599764[_0x17f2('0x22')],function(_0x33db41){return{'model':db[_0x33db41['model']],'as':_0x33db41['as'],'attributes':_0x33db41[_0x17f2('0x21')]};}):[]};}):[]};}):[]:[]})[_0x17f2('0x10')](function(_0x1ccc81){logger[_0x17f2('0x11')]('ShowSquareProject',_0x3e12ff);logger[_0x17f2('0x13')](_0x17f2('0x1b'),_0x3e12ff,JSON['stringify'](_0x1ccc81));_0x2446dc(_0x1ccc81);})['catch'](function(_0x59023f){logger['error']('ShowSquareProject',_0x59023f[_0x17f2('0x18')],_0x3e12ff);_0x51db8a(_0x4fc915[_0x17f2('0x15')](0x1f4,_0x59023f['message']));});});};
\ No newline at end of file
index c8b1600..dbf4b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fdb=['remove','emit','removeListener','register','squareProject:','save'];(function(_0x3bc1fc,_0x3ab1dc){var _0x31dc2f=function(_0xaafb6f){while(--_0xaafb6f){_0x3bc1fc['push'](_0x3bc1fc['shift']());}};_0x31dc2f(++_0x3ab1dc);}(_0x7fdb,0x1a3));var _0xb7fd=function(_0x5cc8b9,_0x20e3c3){_0x5cc8b9=_0x5cc8b9-0x0;var _0x58892e=_0x7fdb[_0x5cc8b9];return _0x58892e;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0xb7fd('0x0'),_0xb7fd('0x1'),'update'];function createListener(_0x3c87e9,_0xba6a62){return function(_0x3ced74){_0xba6a62[_0xb7fd('0x2')](_0x3c87e9,_0x3ced74);};}function removeListener(_0x4ebd53,_0x3bf86f){return function(){SquareProjectEvents[_0xb7fd('0x3')](_0x4ebd53,_0x3bf86f);};}exports[_0xb7fd('0x4')]=function(_0x439808){for(var _0x3eba46=0x0,_0x156120=events['length'];_0x3eba46<_0x156120;_0x3eba46++){var _0x1e4cc0=events[_0x3eba46];var _0x395b07=createListener(_0xb7fd('0x5')+_0x1e4cc0,_0x439808);SquareProjectEvents['on'](_0x1e4cc0,_0x395b07);}};
\ No newline at end of file
+var _0x6b47=['length','squareProject:','./squareProject.events','save','remove','update'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0x6b47,0x1b2));var _0x76b4=function(_0xd89fde,_0x4d2417){_0xd89fde=_0xd89fde-0x0;var _0xe67f58=_0x6b47[_0xd89fde];return _0xe67f58;};'use strict';var SquareProjectEvents=require(_0x76b4('0x0'));var events=[_0x76b4('0x1'),_0x76b4('0x2'),_0x76b4('0x3')];function createListener(_0x3004f8,_0x388f7f){return function(_0x1f4b76){_0x388f7f['emit'](_0x3004f8,_0x1f4b76);};}function removeListener(_0x35c110,_0xd0b68b){return function(){SquareProjectEvents['removeListener'](_0x35c110,_0xd0b68b);};}exports['register']=function(_0x59fabb){for(var _0x2c42c0=0x0,_0xf802d4=events[_0x76b4('0x4')];_0x2c42c0<_0xf802d4;_0x2c42c0++){var _0x4e9ea3=events[_0x2c42c0];var _0x1e70f6=createListener(_0x76b4('0x5')+_0x4e9ea3,_0x59fabb);SquareProjectEvents['on'](_0x4e9ea3,_0x1e70f6);}};
\ No newline at end of file
index e05b35f..acd5e90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','download','post','create','put','delete','exports'];(function(_0x337748,_0x402b05){var _0x3bb03f=function(_0x2fcdf4){while(--_0x2fcdf4){_0x337748['push'](_0x337748['shift']());}};_0x3bb03f(++_0x402b05);}(_0x326f,0xd1));var _0xf326=function(_0x32ed2e,_0x1696f3){_0x32ed2e=_0x32ed2e-0x0;var _0xc1a4d3=_0x326f[_0x32ed2e];return _0xc1a4d3;};'use strict';var multer=require(_0xf326('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf326('0x1'));var express=require(_0xf326('0x2'));var router=express[_0xf326('0x3')]();var fs_extra=require(_0xf326('0x4'));var auth=require(_0xf326('0x5'));var interaction=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var controller=require(_0xf326('0x8'));router[_0xf326('0x9')]('/',auth[_0xf326('0xa')](),controller['index']);router[_0xf326('0x9')](_0xf326('0xb'),auth[_0xf326('0xa')](),controller[_0xf326('0xc')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0xf326('0xd')]);router[_0xf326('0xe')]('/',auth[_0xf326('0xa')](),controller[_0xf326('0xf')]);router[_0xf326('0x10')]('/:id',auth[_0xf326('0xa')](),controller['update']);router[_0xf326('0x11')]('/:id',auth[_0xf326('0xa')](),controller['destroy']);module[_0xf326('0x12')]=router;
\ No newline at end of file
+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(_0x554a75,_0x133864){var _0x3de032=function(_0xd92d4d){while(--_0xd92d4d){_0x554a75['push'](_0x554a75['shift']());}};_0x3de032(++_0x133864);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x42c56b,_0x58ae76){_0x42c56b=_0x42c56b-0x0;var _0x13f59d=_0x7fbe[_0x42c56b];return _0x13f59d;};'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
index e202d65..b7689bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f47=['savePath','substring','lastIndexOf','exports','STRING','VIRTUAL','getDataValue'];(function(_0x315da6,_0xfeae10){var _0x33e90f=function(_0x45271c){while(--_0x45271c){_0x315da6['push'](_0x315da6['shift']());}};_0x33e90f(++_0xfeae10);}(_0x6f47,0xc7));var _0x76f4=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0x6f47[_0xa6cc5c];return _0x44803d;};'use strict';var Sequelize=require('sequelize');module[_0x76f4('0x0')]={'uniqueid':{'type':Sequelize[_0x76f4('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x76f4('0x1')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x76f4('0x1')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x76f4('0x1')]},'dnid':{'type':Sequelize[_0x76f4('0x1')]},'projectName':{'type':Sequelize[_0x76f4('0x1')]},'saveName':{'type':Sequelize[_0x76f4('0x1')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0x76f4('0x1')]},'format':{'type':Sequelize[_0x76f4('0x2')],'get':function(){var _0x2176a7='';var _0x497f99=this[_0x76f4('0x3')](_0x76f4('0x4'));if(_0x497f99){_0x2176a7=_0x497f99[_0x76f4('0x5')](_0x497f99[_0x76f4('0x6')]('.'));}return _0x2176a7;}}};
\ No newline at end of file
+var _0x326f=['getDataValue','sequelize','STRING','VIRTUAL'];(function(_0x5edcd7,_0x4c5e59){var _0x2f5b45=function(_0x11aa0c){while(--_0x11aa0c){_0x5edcd7['push'](_0x5edcd7['shift']());}};_0x2f5b45(++_0x4c5e59);}(_0x326f,0xd1));var _0xf326=function(_0x157535,_0x53534c){_0x157535=_0x157535-0x0;var _0x1add69=_0x326f[_0x157535];return _0x1add69;};'use strict';var Sequelize=require(_0xf326('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xf326('0x1')]},'calleridname':{'type':Sequelize[_0xf326('0x1')]},'context':{'type':Sequelize[_0xf326('0x1')]},'extension':{'type':Sequelize[_0xf326('0x1')]},'priority':{'type':Sequelize[_0xf326('0x1')]},'accountcode':{'type':Sequelize[_0xf326('0x1')]},'dnid':{'type':Sequelize[_0xf326('0x1')]},'projectName':{'type':Sequelize[_0xf326('0x1')]},'saveName':{'type':Sequelize[_0xf326('0x1')]},'filename':{'type':Sequelize[_0xf326('0x1')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xf326('0x2')],'get':function(){var _0x3851eb='';var _0x165f95=this[_0xf326('0x3')]('savePath');if(_0x165f95){_0x3851eb=_0x165f95['substring'](_0x165f95['lastIndexOf']('.'));}return _0x3851eb;}}};
\ No newline at end of file
index c592b23..bcfc47e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebdf=['sort','filters','pick','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','create','body','find','../../components/encryptor','uniqueid','savePath','filename','format','secrets','existsSync','ValidationError','SquareRecording\x20not\x20found','download','unlink','message','Not\x20found','destroy','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','unlinkSync','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','limit','undefined','count','offset','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','map','SquareRecording','rawAttributes','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order'];(function(_0x16c365,_0x264519){var _0x1be48a=function(_0x3c8274){while(--_0x3c8274){_0x16c365['push'](_0x16c365['shift']());}};_0x1be48a(++_0x264519);}(_0xebdf,0x1a7));var _0xfebd=function(_0x29e3b6,_0x40b0b4){_0x29e3b6=_0x29e3b6-0x0;var _0x55d4b0=_0xebdf[_0x29e3b6];return _0x55d4b0;};'use strict';var emlformat=require(_0xfebd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfebd('0x1'));var jsonpatch=require(_0xfebd('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfebd('0x3'));var Mustache=require(_0xfebd('0x4'));var util=require(_0xfebd('0x5'));var path=require('path');var sox=require(_0xfebd('0x6'));var csv=require('to-csv');var ejs=require(_0xfebd('0x7'));var fs=require('fs');var fs_extra=require(_0xfebd('0x8'));var _=require(_0xfebd('0x9'));var squel=require(_0xfebd('0xa'));var crypto=require(_0xfebd('0xb'));var jsforce=require(_0xfebd('0xc'));var deskjs=require(_0xfebd('0xd'));var toCsv=require(_0xfebd('0xe'));var querystring=require(_0xfebd('0xf'));var Papa=require(_0xfebd('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfebd('0x11'));var as=require(_0xfebd('0x12'));var hardwareService=require(_0xfebd('0x13'));var logger=require('../../config/logger')(_0xfebd('0x14'));var utils=require(_0xfebd('0x15'));var config=require(_0xfebd('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x458297,_0x2cb2a3){_0x2cb2a3=_0x2cb2a3||0xcc;return function(_0x1f9a3c){if(_0x1f9a3c){return _0x458297[_0xfebd('0x17')](_0x2cb2a3);}return _0x458297[_0xfebd('0x18')](_0x2cb2a3)[_0xfebd('0x19')]();};}function respondWithResult(_0x43508a,_0x25aef0){_0x25aef0=_0x25aef0||0xc8;return function(_0x8392f5){if(_0x8392f5){return _0x43508a[_0xfebd('0x18')](_0x25aef0)['json'](_0x8392f5);}};}function respondWithFilteredResult(_0xb8abbd,_0x59c38c){return function(_0x1b23dd){if(_0x1b23dd){var _0x2823ba=typeof _0x59c38c['offset']==='undefined'&&typeof _0x59c38c[_0xfebd('0x1a')]===_0xfebd('0x1b');var _0x42710a=_0x1b23dd[_0xfebd('0x1c')];var _0x1f87ad=_0x2823ba?0x0:_0x59c38c[_0xfebd('0x1d')];var _0x492e9f=_0x2823ba?_0x1b23dd[_0xfebd('0x1c')]:_0x59c38c[_0xfebd('0x1d')]+_0x59c38c['limit'];var _0x573e9f;if(_0x492e9f>=_0x42710a){_0x492e9f=_0x42710a;_0x573e9f=0xc8;}else{_0x573e9f=0xce;}_0xb8abbd[_0xfebd('0x18')](_0x573e9f);return _0xb8abbd[_0xfebd('0x1e')](_0xfebd('0x1f'),_0x1f87ad+'-'+_0x492e9f+'/'+_0x42710a)[_0xfebd('0x20')](_0x1b23dd);}return null;};}function patchUpdates(_0x558632){return function(_0xf937d3){try{jsonpatch[_0xfebd('0x21')](_0xf937d3,_0x558632,!![]);}catch(_0x295718){return BPromise[_0xfebd('0x22')](_0x295718);}return _0xf937d3[_0xfebd('0x23')]();};}function saveUpdates(_0x188114,_0x168855){return function(_0x2c4828){if(_0x2c4828){return _0x2c4828[_0xfebd('0x24')](_0x188114)[_0xfebd('0x25')](function(_0xf03630){return _0xf03630;});}return null;};}function removeEntity(_0x45aac8,_0x501597){return function(_0x1d37ee){if(_0x1d37ee){return _0x1d37ee['destroy']()[_0xfebd('0x25')](function(){_0x45aac8[_0xfebd('0x18')](0xcc)[_0xfebd('0x19')]();});}};}function handleEntityNotFound(_0x395cfb,_0x1f5906){return function(_0x8a45b7){if(!_0x8a45b7){_0x395cfb[_0xfebd('0x17')](0x194);}return _0x8a45b7;};}function handleError(_0x2d3969,_0x54edc7){_0x54edc7=_0x54edc7||0x1f4;return function(_0x3ac671){logger[_0xfebd('0x26')](_0x3ac671[_0xfebd('0x27')]);if(_0x3ac671[_0xfebd('0x28')]){delete _0x3ac671[_0xfebd('0x28')];}_0x2d3969[_0xfebd('0x18')](_0x54edc7)[_0xfebd('0x29')](_0x3ac671);};}exports[_0xfebd('0x2a')]=function(_0x66b088,_0x2196e2){var _0x3429e5={},_0x3ba8d4={},_0x3392ce={'count':0x0,'rows':[]};var _0x4be6c8=_[_0xfebd('0x2b')](db[_0xfebd('0x2c')][_0xfebd('0x2d')],function(_0x18fe29){return{'name':_0x18fe29['fieldName'],'type':_0x18fe29[_0xfebd('0x2e')][_0xfebd('0x2f')]};});_0x3ba8d4[_0xfebd('0x30')]=_['map'](_0x4be6c8,_0xfebd('0x28'));_0x3ba8d4[_0xfebd('0x31')]=_['keys'](_0x66b088['query']);_0x3ba8d4['filters']=_['intersection'](_0x3ba8d4['model'],_0x3ba8d4['query']);_0x3429e5['attributes']=_[_0xfebd('0x32')](_0x3ba8d4[_0xfebd('0x30')],qs['fields'](_0x66b088[_0xfebd('0x31')][_0xfebd('0x33')]));_0x3429e5[_0xfebd('0x34')]=_0x3429e5[_0xfebd('0x34')][_0xfebd('0x35')]?_0x3429e5[_0xfebd('0x34')]:_0x3ba8d4[_0xfebd('0x30')];if(!_0x66b088[_0xfebd('0x31')][_0xfebd('0x36')](_0xfebd('0x37'))){_0x3429e5[_0xfebd('0x1a')]=qs[_0xfebd('0x1a')](_0x66b088[_0xfebd('0x31')]['limit']);_0x3429e5[_0xfebd('0x1d')]=qs[_0xfebd('0x1d')](_0x66b088['query'][_0xfebd('0x1d')]);}_0x3429e5[_0xfebd('0x38')]=qs['sort'](_0x66b088['query'][_0xfebd('0x39')]);_0x3429e5['where']=qs[_0xfebd('0x3a')](_[_0xfebd('0x3b')](_0x66b088['query'],_0x3ba8d4[_0xfebd('0x3a')]),_0x4be6c8);if(_0x66b088[_0xfebd('0x31')]['filter']){_0x3429e5[_0xfebd('0x3c')]=_[_0xfebd('0x3d')](_0x3429e5[_0xfebd('0x3c')],{'$or':_['map'](_0x4be6c8,function(_0x4a3d84){if(_0x4a3d84[_0xfebd('0x2e')]!==_0xfebd('0x3e')){var _0x4b6efc={};_0x4b6efc[_0x4a3d84[_0xfebd('0x28')]]={'$like':'%'+_0x66b088[_0xfebd('0x31')]['filter']+'%'};return _0x4b6efc;}})});}_0x3429e5=_[_0xfebd('0x3d')]({},_0x3429e5,_0x66b088['options']);var _0x2103d3={'where':_0x3429e5['where']};return db[_0xfebd('0x2c')][_0xfebd('0x1c')](_0x2103d3)[_0xfebd('0x25')](function(_0x198f6e){_0x3392ce[_0xfebd('0x1c')]=_0x198f6e;if(_0x66b088[_0xfebd('0x31')][_0xfebd('0x3f')]){_0x3429e5[_0xfebd('0x40')]=[{'all':!![]}];}return db['SquareRecording'][_0xfebd('0x41')](_0x3429e5);})[_0xfebd('0x25')](function(_0x4a5b16){_0x3392ce[_0xfebd('0x42')]=_0x4a5b16;return _0x3392ce;})['then'](respondWithFilteredResult(_0x2196e2,_0x3429e5))[_0xfebd('0x43')](handleError(_0x2196e2,null));};exports[_0xfebd('0x44')]=function(_0x4e12fc,_0x2abbdb){var _0x4b7a64={'raw':!![],'where':{'id':_0x4e12fc[_0xfebd('0x45')]['id']}},_0x2db222={};_0x2db222['model']=_[_0xfebd('0x46')](db[_0xfebd('0x2c')][_0xfebd('0x2d')]);_0x2db222[_0xfebd('0x31')]=_[_0xfebd('0x46')](_0x4e12fc[_0xfebd('0x31')]);_0x2db222[_0xfebd('0x3a')]=_[_0xfebd('0x32')](_0x2db222[_0xfebd('0x30')],_0x2db222[_0xfebd('0x31')]);_0x4b7a64[_0xfebd('0x34')]=_['intersection'](_0x2db222[_0xfebd('0x30')],qs['fields'](_0x4e12fc[_0xfebd('0x31')]['fields']));_0x4b7a64[_0xfebd('0x34')]=_0x4b7a64['attributes'][_0xfebd('0x35')]?_0x4b7a64[_0xfebd('0x34')]:_0x2db222[_0xfebd('0x30')];if(_0x4e12fc[_0xfebd('0x31')]['includeAll']){_0x4b7a64[_0xfebd('0x40')]=[{'all':!![]}];}_0x4b7a64=_[_0xfebd('0x3d')]({},_0x4b7a64,_0x4e12fc[_0xfebd('0x47')]);return db[_0xfebd('0x2c')]['find'](_0x4b7a64)[_0xfebd('0x25')](handleEntityNotFound(_0x2abbdb,null))['then'](respondWithResult(_0x2abbdb,null))[_0xfebd('0x43')](handleError(_0x2abbdb,null));};exports[_0xfebd('0x48')]=function(_0x281cce,_0x285f76){return db['SquareRecording'][_0xfebd('0x48')](_0x281cce['body'],{})[_0xfebd('0x25')](respondWithResult(_0x285f76,0xc9))[_0xfebd('0x43')](handleError(_0x285f76,null));};exports['update']=function(_0x5b90f1,_0x36fd6b){if(_0x5b90f1[_0xfebd('0x49')]['id']){delete _0x5b90f1[_0xfebd('0x49')]['id'];}return db[_0xfebd('0x2c')][_0xfebd('0x4a')]({'where':{'id':_0x5b90f1['params']['id']}})[_0xfebd('0x25')](handleEntityNotFound(_0x36fd6b,null))['then'](saveUpdates(_0x5b90f1[_0xfebd('0x49')],null))[_0xfebd('0x25')](respondWithResult(_0x36fd6b,null))[_0xfebd('0x43')](handleError(_0x36fd6b,null));};exports['download']=function(_0x1d8e4d,_0x519138,_0x4de12d){var _0x263eb1=require(_0xfebd('0x4b'));var _0x353f58=![];var _0x548ab1={};if(_0x1d8e4d[_0xfebd('0x31')]['type']&&_0x1d8e4d['query']['type']==='uniqueid'){_0x548ab1[_0xfebd('0x4c')]=_0x1d8e4d[_0xfebd('0x45')]['id'];}else{_0x548ab1['id']=_0x1d8e4d['params']['id'];}return db[_0xfebd('0x2c')][_0xfebd('0x4a')]({'where':_0x548ab1,'attributes':['id',_0xfebd('0x4d'),_0xfebd('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x519138,null))[_0xfebd('0x25')](function(_0x19ce1c){if(_0x19ce1c){var _0x4007a1=_0x19ce1c['savePath'];var _0x311304=util[_0xfebd('0x4f')]('%s.cypher',_0x4007a1);if(fs['existsSync'](_0x311304)){_0x353f58=!![];return _0x263eb1['decryptFile'](_0x311304,_0x4007a1,config[_0xfebd('0x50')]['recording'])[_0xfebd('0x25')](function(){return _0x19ce1c;});}return _0x19ce1c;}})['then'](function(_0x59200){if(_0x59200){var _0x16b1b2=_0x59200[_0xfebd('0x4d')];if(!fs[_0xfebd('0x51')](_0x16b1b2)){throw new db['Sequelize'][(_0xfebd('0x52'))](_0xfebd('0x53'));}if(_0x59200[_0xfebd('0x4e')]){return _0x519138[_0xfebd('0x54')](_0x16b1b2,_0x59200[_0xfebd('0x4e')]+path['extname'](_0x16b1b2),function(){if(_0x353f58){fs[_0xfebd('0x55')](_0x16b1b2);}});}else{return _0x519138[_0xfebd('0x54')](_0x16b1b2,function(_0x1b46bd){if(_0x353f58){fs['unlink'](_0x16b1b2);}});}}})[_0xfebd('0x43')](function(_0x3e95b6){if(_0x3e95b6[_0xfebd('0x56')]===_0xfebd('0x53')){_0x519138[_0xfebd('0x18')](0x194)[_0xfebd('0x29')](_0xfebd('0x57'));}else{return handleError(_0x519138,null);}});};exports[_0xfebd('0x58')]=function(_0xfc81a6,_0x25620e){return db[_0xfebd('0x2c')][_0xfebd('0x4a')]({'where':{'id':_0xfc81a6[_0xfebd('0x45')]['id']}})[_0xfebd('0x25')](function(_0x3835d7){if(_['isNil'](_0x3835d7)){throw new ReferenceError(_0xfebd('0x59'));}return _0x3835d7;})[_0xfebd('0x25')](function(_0x49f4d3){var _0x37c5e7=_0x49f4d3['savePath'];logger[_0xfebd('0x5a')](_0xfebd('0x5b'),_0x37c5e7);if(!_[_0xfebd('0x5c')](_0x49f4d3[_0xfebd('0x4d')])&&fs[_0xfebd('0x51')](_0x37c5e7)){logger['info']('File:\x20\x22'+_0x37c5e7+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xfebd('0x5d')](_0x37c5e7);}_0x37c5e7=_0x37c5e7+'.cypher';if(!_[_0xfebd('0x5c')](_0x49f4d3['savePath'])&&fs[_0xfebd('0x51')](_0x37c5e7)){logger[_0xfebd('0x5a')](_0xfebd('0x5e')+_0x37c5e7+_0xfebd('0x5f'));fs[_0xfebd('0x5d')](_0x37c5e7);}return _0x49f4d3;})[_0xfebd('0x25')](function(_0x2d27fc){if(!_0x2d27fc)throw new InternalError();return _0x2d27fc[_0xfebd('0x58')]();})[_0xfebd('0x25')](function(){_0x25620e['status'](0xcc)[_0xfebd('0x19')]();})['catch'](handleError(_0x25620e,null));};
\ No newline at end of file
+var _0xbb8f=['SquareRecording','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','download','../../components/encryptor','uniqueid','format','%s.cypher','existsSync','secrets','recording','filename','extname','unlink','Not\x20found','isNil','Entity\x20not\x20found','savePath','unlinkSync','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','then','destroy','sendStatus','name','send','index','map'];(function(_0x597c16,_0x2292fe){var _0x30cc2c=function(_0x26cb58){while(--_0x26cb58){_0x597c16['push'](_0x597c16['shift']());}};_0x30cc2c(++_0x2292fe);}(_0xbb8f,0x1ef));var _0xfbb8=function(_0x2834f1,_0x2ca288){_0x2834f1=_0x2834f1-0x0;var _0x93594e=_0xbb8f[_0x2834f1];return _0x93594e;};'use strict';var emlformat=require(_0xfbb8('0x0'));var rimraf=require(_0xfbb8('0x1'));var zipdir=require(_0xfbb8('0x2'));var jsonpatch=require(_0xfbb8('0x3'));var rp=require(_0xfbb8('0x4'));var moment=require('moment');var BPromise=require(_0xfbb8('0x5'));var Mustache=require(_0xfbb8('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xfbb8('0x7'));var ejs=require(_0xfbb8('0x8'));var fs=require('fs');var fs_extra=require(_0xfbb8('0x9'));var _=require(_0xfbb8('0xa'));var squel=require(_0xfbb8('0xb'));var crypto=require(_0xfbb8('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xfbb8('0x7'));var querystring=require(_0xfbb8('0xd'));var Papa=require(_0xfbb8('0xe'));var Redis=require(_0xfbb8('0xf'));var authService=require(_0xfbb8('0x10'));var qs=require(_0xfbb8('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfbb8('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xfbb8('0x13'));var config=require(_0xfbb8('0x14'));var licenseUtil=require(_0xfbb8('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x14abd5,_0x3ec69c){_0x3ec69c=_0x3ec69c||0xcc;return function(_0x3abf57){if(_0x3abf57){return _0x14abd5['sendStatus'](_0x3ec69c);}return _0x14abd5[_0xfbb8('0x16')](_0x3ec69c)[_0xfbb8('0x17')]();};}function respondWithResult(_0x5a92fb,_0x33d504){_0x33d504=_0x33d504||0xc8;return function(_0x48c27d){if(_0x48c27d){return _0x5a92fb[_0xfbb8('0x16')](_0x33d504)[_0xfbb8('0x18')](_0x48c27d);}};}function respondWithFilteredResult(_0x41071a,_0x16f6ca){return function(_0x38c40a){if(_0x38c40a){var _0x1faaa6=typeof _0x16f6ca[_0xfbb8('0x19')]==='undefined'&&typeof _0x16f6ca[_0xfbb8('0x1a')]===_0xfbb8('0x1b');var _0x21233c=_0x38c40a[_0xfbb8('0x1c')];var _0x27405c=_0x1faaa6?0x0:_0x16f6ca['offset'];var _0x577c51=_0x1faaa6?_0x38c40a['count']:_0x16f6ca[_0xfbb8('0x19')]+_0x16f6ca['limit'];var _0x51c452;if(_0x577c51>=_0x21233c){_0x577c51=_0x21233c;_0x51c452=0xc8;}else{_0x51c452=0xce;}_0x41071a['status'](_0x51c452);return _0x41071a[_0xfbb8('0x1d')](_0xfbb8('0x1e'),_0x27405c+'-'+_0x577c51+'/'+_0x21233c)[_0xfbb8('0x18')](_0x38c40a);}return null;};}function patchUpdates(_0x45157e){return function(_0x1b3d37){try{jsonpatch[_0xfbb8('0x1f')](_0x1b3d37,_0x45157e,!![]);}catch(_0x463115){return BPromise['reject'](_0x463115);}return _0x1b3d37['save']();};}function saveUpdates(_0x497a60,_0x3574d3){return function(_0x18b151){if(_0x18b151){return _0x18b151['update'](_0x497a60)[_0xfbb8('0x20')](function(_0x39999c){return _0x39999c;});}return null;};}function removeEntity(_0x2c319c,_0x216146){return function(_0x30312b){if(_0x30312b){return _0x30312b[_0xfbb8('0x21')]()['then'](function(){_0x2c319c[_0xfbb8('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d2125,_0x4b89e4){return function(_0x39185e){if(!_0x39185e){_0x3d2125[_0xfbb8('0x22')](0x194);}return _0x39185e;};}function handleError(_0x18fae9,_0x2f4ce2){_0x2f4ce2=_0x2f4ce2||0x1f4;return function(_0xe806a9){logger['error'](_0xe806a9['stack']);if(_0xe806a9[_0xfbb8('0x23')]){delete _0xe806a9['name'];}_0x18fae9[_0xfbb8('0x16')](_0x2f4ce2)[_0xfbb8('0x24')](_0xe806a9);};}exports[_0xfbb8('0x25')]=function(_0x31b1f0,_0x38f2b2){var _0x2415e4={},_0x530afb={},_0x141d7b={'count':0x0,'rows':[]};var _0x2730b9=_[_0xfbb8('0x26')](db[_0xfbb8('0x27')][_0xfbb8('0x28')],function(_0x5259d1){return{'name':_0x5259d1[_0xfbb8('0x29')],'type':_0x5259d1[_0xfbb8('0x2a')][_0xfbb8('0x2b')]};});_0x530afb[_0xfbb8('0x2c')]=_[_0xfbb8('0x26')](_0x2730b9,'name');_0x530afb['query']=_[_0xfbb8('0x2d')](_0x31b1f0[_0xfbb8('0x2e')]);_0x530afb['filters']=_['intersection'](_0x530afb['model'],_0x530afb['query']);_0x2415e4[_0xfbb8('0x2f')]=_[_0xfbb8('0x30')](_0x530afb['model'],qs[_0xfbb8('0x31')](_0x31b1f0[_0xfbb8('0x2e')][_0xfbb8('0x31')]));_0x2415e4['attributes']=_0x2415e4['attributes'][_0xfbb8('0x32')]?_0x2415e4[_0xfbb8('0x2f')]:_0x530afb['model'];if(!_0x31b1f0[_0xfbb8('0x2e')][_0xfbb8('0x33')]('nolimit')){_0x2415e4[_0xfbb8('0x1a')]=qs['limit'](_0x31b1f0[_0xfbb8('0x2e')][_0xfbb8('0x1a')]);_0x2415e4[_0xfbb8('0x19')]=qs[_0xfbb8('0x19')](_0x31b1f0['query']['offset']);}_0x2415e4[_0xfbb8('0x34')]=qs[_0xfbb8('0x35')](_0x31b1f0[_0xfbb8('0x2e')][_0xfbb8('0x35')]);_0x2415e4[_0xfbb8('0x36')]=qs[_0xfbb8('0x37')](_[_0xfbb8('0x38')](_0x31b1f0[_0xfbb8('0x2e')],_0x530afb[_0xfbb8('0x37')]),_0x2730b9);if(_0x31b1f0[_0xfbb8('0x2e')][_0xfbb8('0x39')]){_0x2415e4[_0xfbb8('0x36')]=_['merge'](_0x2415e4[_0xfbb8('0x36')],{'$or':_[_0xfbb8('0x26')](_0x2730b9,function(_0x2ce8fb){if(_0x2ce8fb[_0xfbb8('0x2a')]!==_0xfbb8('0x3a')){var _0x4301db={};_0x4301db[_0x2ce8fb[_0xfbb8('0x23')]]={'$like':'%'+_0x31b1f0['query'][_0xfbb8('0x39')]+'%'};return _0x4301db;}})});}_0x2415e4=_[_0xfbb8('0x3b')]({},_0x2415e4,_0x31b1f0[_0xfbb8('0x3c')]);var _0x1d5619={'where':_0x2415e4['where']};return db['SquareRecording'][_0xfbb8('0x1c')](_0x1d5619)[_0xfbb8('0x20')](function(_0x22c0fe){_0x141d7b[_0xfbb8('0x1c')]=_0x22c0fe;if(_0x31b1f0[_0xfbb8('0x2e')]['includeAll']){_0x2415e4[_0xfbb8('0x3d')]=[{'all':!![]}];}return db['SquareRecording'][_0xfbb8('0x3e')](_0x2415e4);})[_0xfbb8('0x20')](function(_0x328d4f){_0x141d7b[_0xfbb8('0x3f')]=_0x328d4f;return _0x141d7b;})[_0xfbb8('0x20')](respondWithFilteredResult(_0x38f2b2,_0x2415e4))[_0xfbb8('0x40')](handleError(_0x38f2b2,null));};exports[_0xfbb8('0x41')]=function(_0x5c8cf5,_0x30a749){var _0x95a13e={'raw':!![],'where':{'id':_0x5c8cf5[_0xfbb8('0x42')]['id']}},_0x8f6a20={};_0x8f6a20['model']=_[_0xfbb8('0x2d')](db['SquareRecording']['rawAttributes']);_0x8f6a20[_0xfbb8('0x2e')]=_[_0xfbb8('0x2d')](_0x5c8cf5[_0xfbb8('0x2e')]);_0x8f6a20[_0xfbb8('0x37')]=_[_0xfbb8('0x30')](_0x8f6a20['model'],_0x8f6a20[_0xfbb8('0x2e')]);_0x95a13e[_0xfbb8('0x2f')]=_[_0xfbb8('0x30')](_0x8f6a20['model'],qs[_0xfbb8('0x31')](_0x5c8cf5[_0xfbb8('0x2e')][_0xfbb8('0x31')]));_0x95a13e[_0xfbb8('0x2f')]=_0x95a13e['attributes'][_0xfbb8('0x32')]?_0x95a13e[_0xfbb8('0x2f')]:_0x8f6a20[_0xfbb8('0x2c')];if(_0x5c8cf5['query'][_0xfbb8('0x43')]){_0x95a13e[_0xfbb8('0x3d')]=[{'all':!![]}];}_0x95a13e=_['merge']({},_0x95a13e,_0x5c8cf5['options']);return db[_0xfbb8('0x27')][_0xfbb8('0x44')](_0x95a13e)[_0xfbb8('0x20')](handleEntityNotFound(_0x30a749,null))['then'](respondWithResult(_0x30a749,null))[_0xfbb8('0x40')](handleError(_0x30a749,null));};exports['create']=function(_0x4bda3a,_0x5ec2f7){return db[_0xfbb8('0x27')][_0xfbb8('0x45')](_0x4bda3a[_0xfbb8('0x46')],{})[_0xfbb8('0x20')](respondWithResult(_0x5ec2f7,0xc9))[_0xfbb8('0x40')](handleError(_0x5ec2f7,null));};exports['update']=function(_0x1efa73,_0x1039c5){if(_0x1efa73[_0xfbb8('0x46')]['id']){delete _0x1efa73[_0xfbb8('0x46')]['id'];}return db['SquareRecording'][_0xfbb8('0x44')]({'where':{'id':_0x1efa73[_0xfbb8('0x42')]['id']}})['then'](handleEntityNotFound(_0x1039c5,null))[_0xfbb8('0x20')](saveUpdates(_0x1efa73[_0xfbb8('0x46')],null))[_0xfbb8('0x20')](respondWithResult(_0x1039c5,null))[_0xfbb8('0x40')](handleError(_0x1039c5,null));};exports[_0xfbb8('0x47')]=function(_0x59aced,_0x5ac5ce,_0x29f6b5){var _0x1f391e=require(_0xfbb8('0x48'));var _0x16c8a5=![];var _0x42faeb={};if(_0x59aced[_0xfbb8('0x2e')][_0xfbb8('0x2a')]&&_0x59aced[_0xfbb8('0x2e')]['type']===_0xfbb8('0x49')){_0x42faeb['uniqueid']=_0x59aced[_0xfbb8('0x42')]['id'];}else{_0x42faeb['id']=_0x59aced[_0xfbb8('0x42')]['id'];}return db[_0xfbb8('0x27')][_0xfbb8('0x44')]({'where':_0x42faeb,'attributes':['id','savePath','filename'],'raw':!![]})[_0xfbb8('0x20')](handleEntityNotFound(_0x5ac5ce,null))[_0xfbb8('0x20')](function(_0x5c658c){if(_0x5c658c){var _0x4e652e=_0x5c658c['savePath'];var _0x45a04e=util[_0xfbb8('0x4a')](_0xfbb8('0x4b'),_0x4e652e);if(fs[_0xfbb8('0x4c')](_0x45a04e)){_0x16c8a5=!![];return _0x1f391e['decryptFile'](_0x45a04e,_0x4e652e,config[_0xfbb8('0x4d')][_0xfbb8('0x4e')])[_0xfbb8('0x20')](function(){return _0x5c658c;});}return _0x5c658c;}})[_0xfbb8('0x20')](function(_0x15e2f3){if(_0x15e2f3){var _0x5900aa=_0x15e2f3['savePath'];if(!fs[_0xfbb8('0x4c')](_0x5900aa)){throw new db['Sequelize']['ValidationError']('SquareRecording\x20not\x20found');}if(_0x15e2f3[_0xfbb8('0x4f')]){return _0x5ac5ce['download'](_0x5900aa,_0x15e2f3[_0xfbb8('0x4f')]+path[_0xfbb8('0x50')](_0x5900aa),function(){if(_0x16c8a5){fs[_0xfbb8('0x51')](_0x5900aa);}});}else{return _0x5ac5ce[_0xfbb8('0x47')](_0x5900aa,function(_0x26192d){if(_0x16c8a5){fs[_0xfbb8('0x51')](_0x5900aa);}});}}})['catch'](function(_0x183176){if(_0x183176['message']==='SquareRecording\x20not\x20found'){_0x5ac5ce[_0xfbb8('0x16')](0x194)[_0xfbb8('0x24')](_0xfbb8('0x52'));}else{return handleError(_0x5ac5ce,null);}});};exports['destroy']=function(_0x3b3cfc,_0x402617){return db[_0xfbb8('0x27')][_0xfbb8('0x44')]({'where':{'id':_0x3b3cfc[_0xfbb8('0x42')]['id']}})[_0xfbb8('0x20')](function(_0x3a9c10){if(_[_0xfbb8('0x53')](_0x3a9c10)){throw new ReferenceError(_0xfbb8('0x54'));}return _0x3a9c10;})[_0xfbb8('0x20')](function(_0x2ce103){var _0x39c304=_0x2ce103[_0xfbb8('0x55')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x39c304);if(!_[_0xfbb8('0x53')](_0x2ce103[_0xfbb8('0x55')])&&fs['existsSync'](_0x39c304)){logger['info']('File:\x20\x22'+_0x39c304+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xfbb8('0x56')](_0x39c304);}_0x39c304=_0x39c304+'.cypher';if(!_[_0xfbb8('0x53')](_0x2ce103[_0xfbb8('0x55')])&&fs[_0xfbb8('0x4c')](_0x39c304)){logger['info'](_0xfbb8('0x57')+_0x39c304+_0xfbb8('0x58'));fs[_0xfbb8('0x56')](_0x39c304);}return _0x2ce103;})[_0xfbb8('0x20')](function(_0x1e49f9){if(!_0x1e49f9)throw new InternalError();return _0x1e49f9[_0xfbb8('0x21')]();})[_0xfbb8('0x20')](function(){_0x402617['status'](0xcc)[_0xfbb8('0x17')]();})[_0xfbb8('0x40')](handleError(_0x402617,null));};
\ No newline at end of file
index f699f8a..0b77c1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe714=['path','../../config/environment','./squareRecording.attributes','exports','define','square_recordings','lodash','../../config/logger','api','moment','bluebird'];(function(_0x20d089,_0x508784){var _0x327c54=function(_0x192e10){while(--_0x192e10){_0x20d089['push'](_0x20d089['shift']());}};_0x327c54(++_0x508784);}(_0xe714,0xe2));var _0x4e71=function(_0x521aad,_0xda3810){_0x521aad=_0x521aad-0x0;var _0x34a93a=_0xe714[_0x521aad];return _0x34a93a;};'use strict';var _=require(_0x4e71('0x0'));var util=require('util');var logger=require(_0x4e71('0x1'))(_0x4e71('0x2'));var moment=require(_0x4e71('0x3'));var BPromise=require(_0x4e71('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4e71('0x5'));var rimraf=require('rimraf');var config=require(_0x4e71('0x6'));var attributes=require(_0x4e71('0x7'));module[_0x4e71('0x8')]=function(_0x204a19,_0xfe1559){return _0x204a19[_0x4e71('0x9')]('SquareRecording',attributes,{'tableName':_0x4e71('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x96f2=['request-promise','path','rimraf','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','lodash','../../config/logger','api','moment'];(function(_0x5e49de,_0x1d3dd9){var _0x328849=function(_0x457210){while(--_0x457210){_0x5e49de['push'](_0x5e49de['shift']());}};_0x328849(++_0x1d3dd9);}(_0x96f2,0xb0));var _0x296f=function(_0x33f183,_0x417e8c){_0x33f183=_0x33f183-0x0;var _0x3ea623=_0x96f2[_0x33f183];return _0x3ea623;};'use strict';var _=require(_0x296f('0x0'));var util=require('util');var logger=require(_0x296f('0x1'))(_0x296f('0x2'));var moment=require(_0x296f('0x3'));var BPromise=require('bluebird');var rp=require(_0x296f('0x4'));var fs=require('fs');var path=require(_0x296f('0x5'));var rimraf=require(_0x296f('0x6'));var config=require('../../config/environment');var attributes=require(_0x296f('0x7'));module[_0x296f('0x8')]=function(_0x4c3626,_0x4c55c7){return _0x4c3626[_0x296f('0x9')](_0x296f('0xa'),attributes,{'tableName':_0x296f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c2ade8..6846c60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4b1=['SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareRecording','SquareRecording','create','options','raw','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5ca353,_0x21eb37){var _0x4f2fe5=function(_0x14cd1b){while(--_0x14cd1b){_0x5ca353['push'](_0x5ca353['shift']());}};_0x4f2fe5(++_0x21eb37);}(_0xf4b1,0x7c));var _0x1f4b=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xf4b1[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x1f4b('0x0'));var util=require(_0x1f4b('0x1'));var moment=require('moment');var BPromise=require(_0x1f4b('0x2'));var rs=require(_0x1f4b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1f4b('0x4'))['db'];var utils=require(_0x1f4b('0x5'));var logger=require('../../config/logger')(_0x1f4b('0x6'));var config=require(_0x1f4b('0x7'));var jayson=require(_0x1f4b('0x8'));var client=jayson[_0x1f4b('0x9')][_0x1f4b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a1c1f,_0x19a270,_0x181764){return new BPromise(function(_0x424672,_0xeb3a08){return client[_0x1f4b('0xb')](_0x3a1c1f,_0x181764)['then'](function(_0x18160b){logger[_0x1f4b('0xc')](_0x1f4b('0xd'),_0x19a270,_0x1f4b('0xe'));logger[_0x1f4b('0xf')](_0x1f4b('0x10'),_0x19a270,_0x1f4b('0xe'),JSON[_0x1f4b('0x11')](_0x18160b));if(_0x18160b[_0x1f4b('0x12')]){if(_0x18160b[_0x1f4b('0x12')][_0x1f4b('0x13')]===0x1f4){logger[_0x1f4b('0x12')]('SquareRecording,\x20%s,\x20%s',_0x19a270,_0x18160b[_0x1f4b('0x12')]['message']);return _0xeb3a08(_0x18160b[_0x1f4b('0x12')][_0x1f4b('0x14')]);}logger[_0x1f4b('0x12')](_0x1f4b('0xd'),_0x19a270,_0x18160b[_0x1f4b('0x12')][_0x1f4b('0x14')]);return _0x424672(_0x18160b[_0x1f4b('0x12')][_0x1f4b('0x14')]);}else{logger[_0x1f4b('0xc')](_0x1f4b('0xd'),_0x19a270,_0x1f4b('0xe'));_0x424672(_0x18160b[_0x1f4b('0x15')][_0x1f4b('0x14')]);}})[_0x1f4b('0x16')](function(_0x3effa0){logger['error'](_0x1f4b('0xd'),_0x19a270,_0x3effa0);_0xeb3a08(_0x3effa0);});});}exports[_0x1f4b('0x17')]=function(_0x2d01a3){var _0x1ccbcc=this;return new Promise(function(_0x1e0072,_0x331046){return db[_0x1f4b('0x18')][_0x1f4b('0x19')](_0x2d01a3['body'],{'raw':_0x2d01a3['options']?_0x2d01a3[_0x1f4b('0x1a')][_0x1f4b('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x561f76){logger[_0x1f4b('0xc')](_0x1f4b('0x17'),_0x2d01a3);logger[_0x1f4b('0xf')](_0x1f4b('0x17'),_0x2d01a3,JSON[_0x1f4b('0x11')](_0x561f76));_0x1e0072(_0x561f76);})[_0x1f4b('0x16')](function(_0x3e2ee5){logger[_0x1f4b('0x12')](_0x1f4b('0x17'),_0x3e2ee5[_0x1f4b('0x14')],_0x2d01a3);_0x331046(_0x1ccbcc[_0x1f4b('0x12')](0x1f4,_0x3e2ee5[_0x1f4b('0x14')]));});});};
\ No newline at end of file
+var _0x78ab=['SquareRecording,\x20%s,\x20%s','message','result','catch','CreateSquareRecording','SquareRecording','create','body','options','info','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x38bec0,_0x39b91e){var _0x42922b=function(_0xdd5870){while(--_0xdd5870){_0x38bec0['push'](_0x38bec0['shift']());}};_0x42922b(++_0x39b91e);}(_0x78ab,0xbe));var _0xb78a=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x78ab[_0x4a53d];return _0x27410e;};'use strict';var _=require(_0xb78a('0x0'));var util=require(_0xb78a('0x1'));var moment=require(_0xb78a('0x2'));var BPromise=require('bluebird');var rs=require(_0xb78a('0x3'));var fs=require('fs');var Redis=require(_0xb78a('0x4'));var db=require(_0xb78a('0x5'))['db'];var utils=require(_0xb78a('0x6'));var logger=require(_0xb78a('0x7'))(_0xb78a('0x8'));var config=require('../../config/environment');var jayson=require(_0xb78a('0x9'));var client=jayson[_0xb78a('0xa')][_0xb78a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31bc1a,_0x35f697,_0x3e7321){return new BPromise(function(_0x2d01a0,_0x5a265c){return client[_0xb78a('0xc')](_0x31bc1a,_0x3e7321)[_0xb78a('0xd')](function(_0x4116b7){logger['info']('SquareRecording,\x20%s,\x20%s',_0x35f697,_0xb78a('0xe'));logger[_0xb78a('0xf')](_0xb78a('0x10'),_0x35f697,_0xb78a('0xe'),JSON[_0xb78a('0x11')](_0x4116b7));if(_0x4116b7[_0xb78a('0x12')]){if(_0x4116b7[_0xb78a('0x12')][_0xb78a('0x13')]===0x1f4){logger['error'](_0xb78a('0x14'),_0x35f697,_0x4116b7[_0xb78a('0x12')][_0xb78a('0x15')]);return _0x5a265c(_0x4116b7[_0xb78a('0x12')]['message']);}logger['error'](_0xb78a('0x14'),_0x35f697,_0x4116b7[_0xb78a('0x12')]['message']);return _0x2d01a0(_0x4116b7[_0xb78a('0x12')][_0xb78a('0x15')]);}else{logger['info']('SquareRecording,\x20%s,\x20%s',_0x35f697,'request\x20sent');_0x2d01a0(_0x4116b7[_0xb78a('0x16')][_0xb78a('0x15')]);}})[_0xb78a('0x17')](function(_0x1cff88){logger['error'](_0xb78a('0x14'),_0x35f697,_0x1cff88);_0x5a265c(_0x1cff88);});});}exports[_0xb78a('0x18')]=function(_0x39e682){var _0x916d3=this;return new Promise(function(_0x5ada79,_0x6a5d7f){return db[_0xb78a('0x19')][_0xb78a('0x1a')](_0x39e682[_0xb78a('0x1b')],{'raw':_0x39e682[_0xb78a('0x1c')]?_0x39e682[_0xb78a('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xb78a('0xd')](function(_0x10a844){logger[_0xb78a('0x1d')](_0xb78a('0x18'),_0x39e682);logger[_0xb78a('0xf')](_0xb78a('0x18'),_0x39e682,JSON[_0xb78a('0x11')](_0x10a844));_0x5ada79(_0x10a844);})[_0xb78a('0x17')](function(_0x2465fd){logger['error'](_0xb78a('0x18'),_0x2465fd[_0xb78a('0x15')],_0x39e682);_0x6a5d7f(_0x916d3['error'](0x1f4,_0x2465fd[_0xb78a('0x15')]));});});};
\ No newline at end of file
index da5e7bf..7b560f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0xc81b4d,_0x2f055d){var _0x4f2e11=function(_0x2809d1){while(--_0x2809d1){_0xc81b4d['push'](_0xc81b4d['shift']());}};_0x4f2e11(++_0x2f055d);}(_0xe706,0xa3));var _0x6e70=function(_0x49ed67,_0x290989){_0x49ed67=_0x49ed67-0x0;var _0x1523d5=_0xe706[_0x49ed67];return _0x1523d5;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _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(_0x570c8a,_0x4a11cc){var _0x25dc12=function(_0x4585d9){while(--_0x4585d9){_0x570c8a['push'](_0x570c8a['shift']());}};_0x25dc12(++_0x4a11cc);}(_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('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index 6214335..1c2ed45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x662a=['DATE','STRING'];(function(_0x5281d9,_0x4f8ce8){var _0x43fc19=function(_0x5adb21){while(--_0x5adb21){_0x5281d9['push'](_0x5281d9['shift']());}};_0x43fc19(++_0x4f8ce8);}(_0x662a,0x1cf));var _0xa662=function(_0x3ea197,_0x4bd963){_0x3ea197=_0x3ea197-0x0;var _0x34d79c=_0x662a[_0x3ea197];return _0x34d79c;};'use strict';var Sequelize=require('sequelize');module['exports']={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize[_0xa662('0x0')]},'channel':{'type':Sequelize[_0xa662('0x0')]},'language':{'type':Sequelize[_0xa662('0x0')]},'type':{'type':Sequelize[_0xa662('0x0')]},'uniqueid':{'type':Sequelize[_0xa662('0x0')]},'version':{'type':Sequelize[_0xa662('0x0')]},'callerid':{'type':Sequelize[_0xa662('0x0')]},'calleridname':{'type':Sequelize[_0xa662('0x0')]},'callingpres':{'type':Sequelize[_0xa662('0x0')]},'callingani2':{'type':Sequelize[_0xa662('0x0')]},'callington':{'type':Sequelize[_0xa662('0x0')]},'callingtns':{'type':Sequelize[_0xa662('0x0')]},'dnid':{'type':Sequelize[_0xa662('0x0')]},'rdnis':{'type':Sequelize[_0xa662('0x0')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xa662('0x0')]},'enhanced':{'type':Sequelize[_0xa662('0x0')]},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize[_0xa662('0x0')]},'project_name':{'type':Sequelize[_0xa662('0x0')]},'joinAt':{'type':Sequelize[_0xa662('0x1')]},'leaveAt':{'type':Sequelize[_0xa662('0x1')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xaec5=['BOOLEAN','sequelize','exports','STRING','DATE'];(function(_0x4e1f27,_0x2c3409){var _0x1162e0=function(_0x9e6bf0){while(--_0x9e6bf0){_0x4e1f27['push'](_0x4e1f27['shift']());}};_0x1162e0(++_0x2c3409);}(_0xaec5,0x92));var _0x5aec=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaec5[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x5aec('0x0'));module[_0x5aec('0x1')]={'network':{'type':Sequelize[_0x5aec('0x2')]},'network_script':{'type':Sequelize[_0x5aec('0x2')]},'request':{'type':Sequelize[_0x5aec('0x2')]},'channel':{'type':Sequelize[_0x5aec('0x2')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x5aec('0x2')]},'uniqueid':{'type':Sequelize[_0x5aec('0x2')]},'version':{'type':Sequelize[_0x5aec('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x5aec('0x2')]},'callingtns':{'type':Sequelize[_0x5aec('0x2')]},'dnid':{'type':Sequelize[_0x5aec('0x2')]},'rdnis':{'type':Sequelize[_0x5aec('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x5aec('0x2')]},'priority':{'type':Sequelize[_0x5aec('0x2')]},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x5aec('0x2')]},'threadid':{'type':Sequelize[_0x5aec('0x2')]},'project_name':{'type':Sequelize[_0x5aec('0x2')]},'joinAt':{'type':Sequelize[_0x5aec('0x3')]},'leaveAt':{'type':Sequelize[_0x5aec('0x3')]},'bot':{'type':Sequelize[_0x5aec('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 4cb4be0..90eddfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7910=['rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','nolimit','sort','pick','filter','merge','where','VIRTUAL','options','include','findAll','rows','catch','show','keys','length','find','body','update','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','then','destroy','sendStatus','name','send','map','SquareReport'];(function(_0x254d9f,_0x54ddb5){var _0x1eedb9=function(_0x2d05f1){while(--_0x2d05f1){_0x254d9f['push'](_0x254d9f['shift']());}};_0x1eedb9(++_0x54ddb5);}(_0x7910,0xf6));var _0x0791=function(_0x1f5887,_0x2fa1f1){_0x1f5887=_0x1f5887-0x0;var _0x21774b=_0x7910[_0x1f5887];return _0x21774b;};'use strict';var emlformat=require(_0x0791('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0791('0x1'));var jsonpatch=require(_0x0791('0x2'));var rp=require(_0x0791('0x3'));var moment=require(_0x0791('0x4'));var BPromise=require(_0x0791('0x5'));var Mustache=require(_0x0791('0x6'));var util=require(_0x0791('0x7'));var path=require(_0x0791('0x8'));var sox=require('sox');var csv=require(_0x0791('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0791('0xa'));var _=require(_0x0791('0xb'));var squel=require(_0x0791('0xc'));var crypto=require(_0x0791('0xd'));var jsforce=require(_0x0791('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0791('0x9'));var querystring=require(_0x0791('0xf'));var Papa=require(_0x0791('0x10'));var Redis=require('ioredis');var authService=require(_0x0791('0x11'));var qs=require(_0x0791('0x12'));var as=require(_0x0791('0x13'));var hardwareService=require(_0x0791('0x14'));var logger=require(_0x0791('0x15'))(_0x0791('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0791('0x17'));var db=require(_0x0791('0x18'))['db'];function respondWithStatusCode(_0x177b12,_0x325cb9){_0x325cb9=_0x325cb9||0xcc;return function(_0x567ff8){if(_0x567ff8){return _0x177b12['sendStatus'](_0x325cb9);}return _0x177b12[_0x0791('0x19')](_0x325cb9)[_0x0791('0x1a')]();};}function respondWithResult(_0x2c7fde,_0x5db597){_0x5db597=_0x5db597||0xc8;return function(_0xa4cd1d){if(_0xa4cd1d){return _0x2c7fde[_0x0791('0x19')](_0x5db597)[_0x0791('0x1b')](_0xa4cd1d);}};}function respondWithFilteredResult(_0x54167e,_0x462f9c){return function(_0x495f66){if(_0x495f66){var _0x1e4f1c=typeof _0x462f9c[_0x0791('0x1c')]===_0x0791('0x1d')&&typeof _0x462f9c[_0x0791('0x1e')]==='undefined';var _0x24d82b=_0x495f66[_0x0791('0x1f')];var _0x37d76b=_0x1e4f1c?0x0:_0x462f9c[_0x0791('0x1c')];var _0x1f867b=_0x1e4f1c?_0x495f66[_0x0791('0x1f')]:_0x462f9c[_0x0791('0x1c')]+_0x462f9c[_0x0791('0x1e')];var _0x52647c;if(_0x1f867b>=_0x24d82b){_0x1f867b=_0x24d82b;_0x52647c=0xc8;}else{_0x52647c=0xce;}_0x54167e[_0x0791('0x19')](_0x52647c);return _0x54167e[_0x0791('0x20')](_0x0791('0x21'),_0x37d76b+'-'+_0x1f867b+'/'+_0x24d82b)['json'](_0x495f66);}return null;};}function patchUpdates(_0x4383de){return function(_0x14d60b){try{jsonpatch[_0x0791('0x22')](_0x14d60b,_0x4383de,!![]);}catch(_0x3a4a3d){return BPromise['reject'](_0x3a4a3d);}return _0x14d60b['save']();};}function saveUpdates(_0x2d75b7,_0x329972){return function(_0x5f445a){if(_0x5f445a){return _0x5f445a['update'](_0x2d75b7)[_0x0791('0x23')](function(_0x25d0de){return _0x25d0de;});}return null;};}function removeEntity(_0x342dc6,_0x5310f2){return function(_0x3175f8){if(_0x3175f8){return _0x3175f8[_0x0791('0x24')]()[_0x0791('0x23')](function(){_0x342dc6['status'](0xcc)[_0x0791('0x1a')]();});}};}function handleEntityNotFound(_0x10676f,_0xbbcc8e){return function(_0x47f71c){if(!_0x47f71c){_0x10676f[_0x0791('0x25')](0x194);}return _0x47f71c;};}function handleError(_0x26a6cd,_0x35865f){_0x35865f=_0x35865f||0x1f4;return function(_0x508866){logger['error'](_0x508866['stack']);if(_0x508866[_0x0791('0x26')]){delete _0x508866[_0x0791('0x26')];}_0x26a6cd['status'](_0x35865f)[_0x0791('0x27')](_0x508866);};}exports['index']=function(_0x32c868,_0x574804){var _0x500173={},_0x4dba33={},_0x572e1b={'count':0x0,'rows':[]};var _0x4c38ea=_[_0x0791('0x28')](db[_0x0791('0x29')][_0x0791('0x2a')],function(_0x3d1aed){return{'name':_0x3d1aed[_0x0791('0x2b')],'type':_0x3d1aed[_0x0791('0x2c')][_0x0791('0x2d')]};});_0x4dba33['model']=_[_0x0791('0x28')](_0x4c38ea,'name');_0x4dba33['query']=_['keys'](_0x32c868[_0x0791('0x2e')]);_0x4dba33[_0x0791('0x2f')]=_[_0x0791('0x30')](_0x4dba33[_0x0791('0x31')],_0x4dba33[_0x0791('0x2e')]);_0x500173['attributes']=_['intersection'](_0x4dba33[_0x0791('0x31')],qs['fields'](_0x32c868[_0x0791('0x2e')][_0x0791('0x32')]));_0x500173[_0x0791('0x33')]=_0x500173['attributes']['length']?_0x500173[_0x0791('0x33')]:_0x4dba33[_0x0791('0x31')];if(!_0x32c868[_0x0791('0x2e')]['hasOwnProperty'](_0x0791('0x34'))){_0x500173[_0x0791('0x1e')]=qs['limit'](_0x32c868[_0x0791('0x2e')]['limit']);_0x500173['offset']=qs[_0x0791('0x1c')](_0x32c868['query'][_0x0791('0x1c')]);}_0x500173['order']=qs[_0x0791('0x35')](_0x32c868[_0x0791('0x2e')]['sort']);_0x500173['where']=qs['filters'](_[_0x0791('0x36')](_0x32c868['query'],_0x4dba33[_0x0791('0x2f')]),_0x4c38ea);if(_0x32c868[_0x0791('0x2e')][_0x0791('0x37')]){_0x500173['where']=_[_0x0791('0x38')](_0x500173[_0x0791('0x39')],{'$or':_[_0x0791('0x28')](_0x4c38ea,function(_0x32296f){if(_0x32296f['type']!==_0x0791('0x3a')){var _0x4e827a={};_0x4e827a[_0x32296f[_0x0791('0x26')]]={'$like':'%'+_0x32c868[_0x0791('0x2e')]['filter']+'%'};return _0x4e827a;}})});}_0x500173=_['merge']({},_0x500173,_0x32c868[_0x0791('0x3b')]);var _0x3a5a1e={'where':_0x500173[_0x0791('0x39')]};return db['SquareReport'][_0x0791('0x1f')](_0x3a5a1e)[_0x0791('0x23')](function(_0x47668e){_0x572e1b['count']=_0x47668e;if(_0x32c868[_0x0791('0x2e')]['includeAll']){_0x500173[_0x0791('0x3c')]=[{'all':!![]}];}return db['SquareReport'][_0x0791('0x3d')](_0x500173);})[_0x0791('0x23')](function(_0x2eaf50){_0x572e1b[_0x0791('0x3e')]=_0x2eaf50;return _0x572e1b;})['then'](respondWithFilteredResult(_0x574804,_0x500173))[_0x0791('0x3f')](handleError(_0x574804,null));};exports[_0x0791('0x40')]=function(_0x5eee86,_0x265a02){var _0x1a21b0={'raw':!![],'where':{'id':_0x5eee86['params']['id']}},_0x144cc8={};_0x144cc8[_0x0791('0x31')]=_[_0x0791('0x41')](db[_0x0791('0x29')]['rawAttributes']);_0x144cc8[_0x0791('0x2e')]=_[_0x0791('0x41')](_0x5eee86[_0x0791('0x2e')]);_0x144cc8[_0x0791('0x2f')]=_[_0x0791('0x30')](_0x144cc8[_0x0791('0x31')],_0x144cc8[_0x0791('0x2e')]);_0x1a21b0[_0x0791('0x33')]=_['intersection'](_0x144cc8['model'],qs['fields'](_0x5eee86[_0x0791('0x2e')]['fields']));_0x1a21b0[_0x0791('0x33')]=_0x1a21b0[_0x0791('0x33')][_0x0791('0x42')]?_0x1a21b0[_0x0791('0x33')]:_0x144cc8[_0x0791('0x31')];if(_0x5eee86[_0x0791('0x2e')]['includeAll']){_0x1a21b0[_0x0791('0x3c')]=[{'all':!![]}];}_0x1a21b0=_[_0x0791('0x38')]({},_0x1a21b0,_0x5eee86['options']);return db[_0x0791('0x29')][_0x0791('0x43')](_0x1a21b0)['then'](handleEntityNotFound(_0x265a02,null))[_0x0791('0x23')](respondWithResult(_0x265a02,null))[_0x0791('0x3f')](handleError(_0x265a02,null));};exports['create']=function(_0x143ae3,_0x1b306d){return db[_0x0791('0x29')]['create'](_0x143ae3[_0x0791('0x44')],{})[_0x0791('0x23')](respondWithResult(_0x1b306d,0xc9))['catch'](handleError(_0x1b306d,null));};exports[_0x0791('0x45')]=function(_0x548de7,_0x4eb8af){if(_0x548de7[_0x0791('0x44')]['id']){delete _0x548de7[_0x0791('0x44')]['id'];}return db[_0x0791('0x29')][_0x0791('0x43')]({'where':{'id':_0x548de7[_0x0791('0x46')]['id']}})[_0x0791('0x23')](handleEntityNotFound(_0x4eb8af,null))[_0x0791('0x23')](saveUpdates(_0x548de7['body'],null))[_0x0791('0x23')](respondWithResult(_0x4eb8af,null))[_0x0791('0x3f')](handleError(_0x4eb8af,null));};exports['destroy']=function(_0x583fa3,_0x29fefe){return db['SquareReport']['find']({'where':{'id':_0x583fa3['params']['id']}})[_0x0791('0x23')](handleEntityNotFound(_0x29fefe,null))['then'](removeEntity(_0x29fefe,null))[_0x0791('0x3f')](handleError(_0x29fefe,null));};exports['describe']=function(_0x17b70f,_0x474e7c){return db['SquareReport'][_0x0791('0x47')]()['then'](respondWithResult(_0x474e7c,null))['catch'](handleError(_0x474e7c,null));};
\ No newline at end of file
+var _0x11fb=['body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','send','index','map','SquareReport','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','options','create'];(function(_0x51c437,_0xd0b176){var _0xb3b097=function(_0x54e052){while(--_0x54e052){_0x51c437['push'](_0x51c437['shift']());}};_0xb3b097(++_0xd0b176);}(_0x11fb,0xf0));var _0xb11f=function(_0x338623,_0x4dc491){_0x338623=_0x338623-0x0;var _0x11578f=_0x11fb[_0x338623];return _0x11578f;};'use strict';var emlformat=require(_0xb11f('0x0'));var rimraf=require(_0xb11f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb11f('0x2'));var rp=require(_0xb11f('0x3'));var moment=require(_0xb11f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb11f('0x5'));var util=require(_0xb11f('0x6'));var path=require(_0xb11f('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb11f('0x8'));var _=require(_0xb11f('0x9'));var squel=require(_0xb11f('0xa'));var crypto=require(_0xb11f('0xb'));var jsforce=require(_0xb11f('0xc'));var deskjs=require(_0xb11f('0xd'));var toCsv=require(_0xb11f('0xe'));var querystring=require(_0xb11f('0xf'));var Papa=require('papaparse');var Redis=require(_0xb11f('0x10'));var authService=require(_0xb11f('0x11'));var qs=require(_0xb11f('0x12'));var as=require(_0xb11f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb11f('0x14'))(_0xb11f('0x15'));var utils=require(_0xb11f('0x16'));var config=require(_0xb11f('0x17'));var licenseUtil=require(_0xb11f('0x18'));var db=require(_0xb11f('0x19'))['db'];function respondWithStatusCode(_0x3e7afc,_0x2f9801){_0x2f9801=_0x2f9801||0xcc;return function(_0x3446e3){if(_0x3446e3){return _0x3e7afc[_0xb11f('0x1a')](_0x2f9801);}return _0x3e7afc['status'](_0x2f9801)[_0xb11f('0x1b')]();};}function respondWithResult(_0x530d79,_0x240ae3){_0x240ae3=_0x240ae3||0xc8;return function(_0x51a882){if(_0x51a882){return _0x530d79[_0xb11f('0x1c')](_0x240ae3)['json'](_0x51a882);}};}function respondWithFilteredResult(_0x3654b7,_0x167806){return function(_0x4f606d){if(_0x4f606d){var _0x2a98e4=typeof _0x167806[_0xb11f('0x1d')]===_0xb11f('0x1e')&&typeof _0x167806[_0xb11f('0x1f')]===_0xb11f('0x1e');var _0x1dd003=_0x4f606d[_0xb11f('0x20')];var _0x50ab78=_0x2a98e4?0x0:_0x167806['offset'];var _0x148de3=_0x2a98e4?_0x4f606d['count']:_0x167806[_0xb11f('0x1d')]+_0x167806['limit'];var _0x1ad079;if(_0x148de3>=_0x1dd003){_0x148de3=_0x1dd003;_0x1ad079=0xc8;}else{_0x1ad079=0xce;}_0x3654b7[_0xb11f('0x1c')](_0x1ad079);return _0x3654b7[_0xb11f('0x21')](_0xb11f('0x22'),_0x50ab78+'-'+_0x148de3+'/'+_0x1dd003)[_0xb11f('0x23')](_0x4f606d);}return null;};}function patchUpdates(_0x11cb90){return function(_0x442832){try{jsonpatch['apply'](_0x442832,_0x11cb90,!![]);}catch(_0x4e72ae){return BPromise[_0xb11f('0x24')](_0x4e72ae);}return _0x442832[_0xb11f('0x25')]();};}function saveUpdates(_0x3ef669,_0x484b4e){return function(_0x2ca4dc){if(_0x2ca4dc){return _0x2ca4dc[_0xb11f('0x26')](_0x3ef669)[_0xb11f('0x27')](function(_0x3ff955){return _0x3ff955;});}return null;};}function removeEntity(_0x487970,_0x40392c){return function(_0x584cba){if(_0x584cba){return _0x584cba[_0xb11f('0x28')]()[_0xb11f('0x27')](function(){_0x487970[_0xb11f('0x1c')](0xcc)[_0xb11f('0x1b')]();});}};}function handleEntityNotFound(_0x45f2e2,_0x2aea07){return function(_0x3a20ed){if(!_0x3a20ed){_0x45f2e2[_0xb11f('0x1a')](0x194);}return _0x3a20ed;};}function handleError(_0x1b4b8b,_0xecfda0){_0xecfda0=_0xecfda0||0x1f4;return function(_0x13e010){logger[_0xb11f('0x29')](_0x13e010[_0xb11f('0x2a')]);if(_0x13e010[_0xb11f('0x2b')]){delete _0x13e010[_0xb11f('0x2b')];}_0x1b4b8b[_0xb11f('0x1c')](_0xecfda0)[_0xb11f('0x2c')](_0x13e010);};}exports[_0xb11f('0x2d')]=function(_0x8cc703,_0x4c2a31){var _0x52255b={},_0x36c556={},_0x2bbd33={'count':0x0,'rows':[]};var _0x5e7a81=_[_0xb11f('0x2e')](db[_0xb11f('0x2f')][_0xb11f('0x30')],function(_0x290a93){return{'name':_0x290a93[_0xb11f('0x31')],'type':_0x290a93[_0xb11f('0x32')]['key']};});_0x36c556['model']=_[_0xb11f('0x2e')](_0x5e7a81,_0xb11f('0x2b'));_0x36c556[_0xb11f('0x33')]=_[_0xb11f('0x34')](_0x8cc703[_0xb11f('0x33')]);_0x36c556[_0xb11f('0x35')]=_[_0xb11f('0x36')](_0x36c556[_0xb11f('0x37')],_0x36c556[_0xb11f('0x33')]);_0x52255b[_0xb11f('0x38')]=_[_0xb11f('0x36')](_0x36c556[_0xb11f('0x37')],qs['fields'](_0x8cc703[_0xb11f('0x33')][_0xb11f('0x39')]));_0x52255b['attributes']=_0x52255b[_0xb11f('0x38')][_0xb11f('0x3a')]?_0x52255b[_0xb11f('0x38')]:_0x36c556[_0xb11f('0x37')];if(!_0x8cc703[_0xb11f('0x33')][_0xb11f('0x3b')](_0xb11f('0x3c'))){_0x52255b['limit']=qs[_0xb11f('0x1f')](_0x8cc703['query'][_0xb11f('0x1f')]);_0x52255b[_0xb11f('0x1d')]=qs[_0xb11f('0x1d')](_0x8cc703[_0xb11f('0x33')][_0xb11f('0x1d')]);}_0x52255b[_0xb11f('0x3d')]=qs[_0xb11f('0x3e')](_0x8cc703[_0xb11f('0x33')]['sort']);_0x52255b[_0xb11f('0x3f')]=qs[_0xb11f('0x35')](_[_0xb11f('0x40')](_0x8cc703[_0xb11f('0x33')],_0x36c556[_0xb11f('0x35')]),_0x5e7a81);if(_0x8cc703[_0xb11f('0x33')][_0xb11f('0x41')]){_0x52255b[_0xb11f('0x3f')]=_[_0xb11f('0x42')](_0x52255b[_0xb11f('0x3f')],{'$or':_[_0xb11f('0x2e')](_0x5e7a81,function(_0x1eb97b){if(_0x1eb97b[_0xb11f('0x32')]!==_0xb11f('0x43')){var _0x4b79ed={};_0x4b79ed[_0x1eb97b['name']]={'$like':'%'+_0x8cc703[_0xb11f('0x33')][_0xb11f('0x41')]+'%'};return _0x4b79ed;}})});}_0x52255b=_['merge']({},_0x52255b,_0x8cc703['options']);var _0x3d1830={'where':_0x52255b[_0xb11f('0x3f')]};return db['SquareReport'][_0xb11f('0x20')](_0x3d1830)[_0xb11f('0x27')](function(_0x1ebc76){_0x2bbd33[_0xb11f('0x20')]=_0x1ebc76;if(_0x8cc703[_0xb11f('0x33')][_0xb11f('0x44')]){_0x52255b[_0xb11f('0x45')]=[{'all':!![]}];}return db['SquareReport'][_0xb11f('0x46')](_0x52255b);})['then'](function(_0x1c36c2){_0x2bbd33['rows']=_0x1c36c2;return _0x2bbd33;})[_0xb11f('0x27')](respondWithFilteredResult(_0x4c2a31,_0x52255b))[_0xb11f('0x47')](handleError(_0x4c2a31,null));};exports[_0xb11f('0x48')]=function(_0x2b0b9e,_0x3eb87b){var _0x5b8867={'raw':!![],'where':{'id':_0x2b0b9e[_0xb11f('0x49')]['id']}},_0x5a03c6={};_0x5a03c6[_0xb11f('0x37')]=_[_0xb11f('0x34')](db[_0xb11f('0x2f')][_0xb11f('0x30')]);_0x5a03c6['query']=_['keys'](_0x2b0b9e[_0xb11f('0x33')]);_0x5a03c6[_0xb11f('0x35')]=_[_0xb11f('0x36')](_0x5a03c6[_0xb11f('0x37')],_0x5a03c6[_0xb11f('0x33')]);_0x5b8867['attributes']=_[_0xb11f('0x36')](_0x5a03c6[_0xb11f('0x37')],qs[_0xb11f('0x39')](_0x2b0b9e['query']['fields']));_0x5b8867['attributes']=_0x5b8867[_0xb11f('0x38')]['length']?_0x5b8867[_0xb11f('0x38')]:_0x5a03c6[_0xb11f('0x37')];if(_0x2b0b9e[_0xb11f('0x33')]['includeAll']){_0x5b8867[_0xb11f('0x45')]=[{'all':!![]}];}_0x5b8867=_['merge']({},_0x5b8867,_0x2b0b9e[_0xb11f('0x4a')]);return db['SquareReport']['find'](_0x5b8867)[_0xb11f('0x27')](handleEntityNotFound(_0x3eb87b,null))[_0xb11f('0x27')](respondWithResult(_0x3eb87b,null))['catch'](handleError(_0x3eb87b,null));};exports[_0xb11f('0x4b')]=function(_0x496f09,_0x1f2f76){return db[_0xb11f('0x2f')]['create'](_0x496f09[_0xb11f('0x4c')],{})[_0xb11f('0x27')](respondWithResult(_0x1f2f76,0xc9))[_0xb11f('0x47')](handleError(_0x1f2f76,null));};exports[_0xb11f('0x26')]=function(_0x29faf8,_0x1ab70c){if(_0x29faf8[_0xb11f('0x4c')]['id']){delete _0x29faf8[_0xb11f('0x4c')]['id'];}return db[_0xb11f('0x2f')][_0xb11f('0x4d')]({'where':{'id':_0x29faf8[_0xb11f('0x49')]['id']}})[_0xb11f('0x27')](handleEntityNotFound(_0x1ab70c,null))[_0xb11f('0x27')](saveUpdates(_0x29faf8[_0xb11f('0x4c')],null))['then'](respondWithResult(_0x1ab70c,null))[_0xb11f('0x47')](handleError(_0x1ab70c,null));};exports['destroy']=function(_0x47b53d,_0x2d0e24){return db['SquareReport'][_0xb11f('0x4d')]({'where':{'id':_0x47b53d[_0xb11f('0x49')]['id']}})[_0xb11f('0x27')](handleEntityNotFound(_0x2d0e24,null))[_0xb11f('0x27')](removeEntity(_0x2d0e24,null))[_0xb11f('0x47')](handleError(_0x2d0e24,null));};exports['describe']=function(_0x430ca7,_0x1c9efc){return db['SquareReport'][_0xb11f('0x4e')]()[_0xb11f('0x27')](respondWithResult(_0x1c9efc,null))['catch'](handleError(_0x1c9efc,null));};
\ No newline at end of file
index 8e9d444..fa48de0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fb3=['bluebird','request-promise','path','../../config/environment','./squareReport.attributes','exports','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util','../../config/logger'];(function(_0x3723c7,_0x54fede){var _0x414b4d=function(_0x336404){while(--_0x336404){_0x3723c7['push'](_0x3723c7['shift']());}};_0x414b4d(++_0x54fede);}(_0x1fb3,0xed));var _0x31fb=function(_0x5d9449,_0x5382b7){_0x5d9449=_0x5d9449-0x0;var _0x583cf7=_0x1fb3[_0x5d9449];return _0x583cf7;};'use strict';var _=require(_0x31fb('0x0'));var util=require(_0x31fb('0x1'));var logger=require(_0x31fb('0x2'))('api');var moment=require('moment');var BPromise=require(_0x31fb('0x3'));var rp=require(_0x31fb('0x4'));var fs=require('fs');var path=require(_0x31fb('0x5'));var rimraf=require('rimraf');var config=require(_0x31fb('0x6'));var attributes=require(_0x31fb('0x7'));module[_0x31fb('0x8')]=function(_0x1aca8a,_0x51d07c){return _0x1aca8a['define'](_0x31fb('0x9'),attributes,{'tableName':_0x31fb('0xa'),'paranoid':![],'indexes':[{'name':_0x31fb('0xb'),'fields':[_0x31fb('0xc'),_0x31fb('0xd')]},{'name':_0x31fb('0xe'),'fields':[_0x31fb('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x093b=['uniqueid','project_name','leaveAt','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport'];(function(_0x2f39c0,_0x4253d0){var _0x3c2daa=function(_0x5651b9){while(--_0x5651b9){_0x2f39c0['push'](_0x2f39c0['shift']());}};_0x3c2daa(++_0x4253d0);}(_0x093b,0x12f));var _0xb093=function(_0x3ee55a,_0x19aeea){_0x3ee55a=_0x3ee55a-0x0;var _0x581800=_0x093b[_0x3ee55a];return _0x581800;};'use strict';var _=require(_0xb093('0x0'));var util=require(_0xb093('0x1'));var logger=require('../../config/logger')(_0xb093('0x2'));var moment=require('moment');var BPromise=require(_0xb093('0x3'));var rp=require(_0xb093('0x4'));var fs=require('fs');var path=require(_0xb093('0x5'));var rimraf=require(_0xb093('0x6'));var config=require(_0xb093('0x7'));var attributes=require(_0xb093('0x8'));module[_0xb093('0x9')]=function(_0x408328,_0x336c17){return _0x408328[_0xb093('0xa')](_0xb093('0xb'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0xb093('0xc'),_0xb093('0xd')]},{'name':'leaveAt','fields':[_0xb093('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 40818eb..4e38ba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb6=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','SquareReport,\x20%s,\x20%s','request\x20sent','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','SquareReport','create','options','raw','then','CreateSquareReport','debug','UpdateSquareReport','update','body','where','lodash','util','moment','ioredis'];(function(_0x3cb9e7,_0x4fc68a){var _0x22092d=function(_0x4358ff){while(--_0x4358ff){_0x3cb9e7['push'](_0x3cb9e7['shift']());}};_0x22092d(++_0x4fc68a);}(_0x4fb6,0x1cd));var _0x64fb=function(_0x4bc4c8,_0x3139d3){_0x4bc4c8=_0x4bc4c8-0x0;var _0x3bb121=_0x4fb6[_0x4bc4c8];return _0x3bb121;};'use strict';var _=require(_0x64fb('0x0'));var util=require(_0x64fb('0x1'));var moment=require(_0x64fb('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x64fb('0x3'));var db=require(_0x64fb('0x4'))['db'];var utils=require(_0x64fb('0x5'));var logger=require(_0x64fb('0x6'))(_0x64fb('0x7'));var config=require(_0x64fb('0x8'));var jayson=require(_0x64fb('0x9'));var client=jayson[_0x64fb('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3ed690,_0xb6b49d,_0x541275){return new BPromise(function(_0x12a680,_0x5797b8){return client[_0x64fb('0xb')](_0x3ed690,_0x541275)['then'](function(_0x4155f8){logger[_0x64fb('0xc')](_0x64fb('0xd'),_0xb6b49d,_0x64fb('0xe'));logger['debug'](_0x64fb('0xf'),_0xb6b49d,_0x64fb('0xe'),JSON[_0x64fb('0x10')](_0x4155f8));if(_0x4155f8['error']){if(_0x4155f8['error']['code']===0x1f4){logger['error']('SquareReport,\x20%s,\x20%s',_0xb6b49d,_0x4155f8[_0x64fb('0x11')][_0x64fb('0x12')]);return _0x5797b8(_0x4155f8[_0x64fb('0x11')]['message']);}logger[_0x64fb('0x11')](_0x64fb('0xd'),_0xb6b49d,_0x4155f8[_0x64fb('0x11')][_0x64fb('0x12')]);return _0x12a680(_0x4155f8['error'][_0x64fb('0x12')]);}else{logger['info'](_0x64fb('0xd'),_0xb6b49d,_0x64fb('0xe'));_0x12a680(_0x4155f8['result']['message']);}})[_0x64fb('0x13')](function(_0x1625b2){logger['error']('SquareReport,\x20%s,\x20%s',_0xb6b49d,_0x1625b2);_0x5797b8(_0x1625b2);});});}exports['CreateSquareReport']=function(_0x220cfb){var _0x54b2d7=this;return new Promise(function(_0x55beec,_0x15e5da){return db[_0x64fb('0x14')][_0x64fb('0x15')](_0x220cfb['body'],{'raw':_0x220cfb[_0x64fb('0x16')]?_0x220cfb[_0x64fb('0x16')][_0x64fb('0x17')]===undefined?!![]:![]:!![]})[_0x64fb('0x18')](function(_0x5904a1){logger[_0x64fb('0xc')](_0x64fb('0x19'),_0x220cfb);logger[_0x64fb('0x1a')](_0x64fb('0x19'),_0x220cfb,JSON[_0x64fb('0x10')](_0x5904a1));_0x55beec(_0x5904a1);})[_0x64fb('0x13')](function(_0x18c77b){logger[_0x64fb('0x11')](_0x64fb('0x19'),_0x18c77b['message'],_0x220cfb);_0x15e5da(_0x54b2d7['error'](0x1f4,_0x18c77b[_0x64fb('0x12')]));});});};exports[_0x64fb('0x1b')]=function(_0xd802bf){var _0x6dc02d=this;return new Promise(function(_0x243eb5,_0x2ce4a1){return db[_0x64fb('0x14')][_0x64fb('0x1c')](_0xd802bf[_0x64fb('0x1d')],{'raw':_0xd802bf[_0x64fb('0x16')]?_0xd802bf[_0x64fb('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xd802bf[_0x64fb('0x16')]?_0xd802bf[_0x64fb('0x16')][_0x64fb('0x1e')]||null:null,'attributes':_0xd802bf[_0x64fb('0x16')]?_0xd802bf[_0x64fb('0x16')]['attributes']||null:null,'limit':_0xd802bf[_0x64fb('0x16')]?_0xd802bf['options']['limit']||null:null})[_0x64fb('0x18')](function(_0xbbd0ed){logger[_0x64fb('0xc')](_0x64fb('0x1b'),_0xd802bf);logger[_0x64fb('0x1a')](_0x64fb('0x1b'),_0xd802bf,JSON[_0x64fb('0x10')](_0xbbd0ed));_0x243eb5(_0xbbd0ed);})[_0x64fb('0x13')](function(_0x1a51df){logger[_0x64fb('0x11')](_0x64fb('0x1b'),_0x1a51df[_0x64fb('0x12')],_0xd802bf);_0x2ce4a1(_0x6dc02d[_0x64fb('0x11')](0x1f4,_0x1a51df[_0x64fb('0x12')]));});});};
\ No newline at end of file
+var _0x922d=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','SquareReport,\x20%s,\x20%s,\x20%s','error','code','SquareReport,\x20%s,\x20%s','message','catch','CreateSquareReport','SquareReport','body','options','info','debug','stringify','UpdateSquareReport','update','where','attributes','limit','util','moment'];(function(_0x211c6,_0x456608){var _0x4c7eb7=function(_0x555f27){while(--_0x555f27){_0x211c6['push'](_0x211c6['shift']());}};_0x4c7eb7(++_0x456608);}(_0x922d,0xec));var _0xd922=function(_0xd7301,_0x35a916){_0xd7301=_0xd7301-0x0;var _0x21172c=_0x922d[_0xd7301];return _0x21172c;};'use strict';var _=require('lodash');var util=require(_0xd922('0x0'));var moment=require(_0xd922('0x1'));var BPromise=require(_0xd922('0x2'));var rs=require(_0xd922('0x3'));var fs=require('fs');var Redis=require(_0xd922('0x4'));var db=require(_0xd922('0x5'))['db'];var utils=require(_0xd922('0x6'));var logger=require(_0xd922('0x7'))(_0xd922('0x8'));var config=require(_0xd922('0x9'));var jayson=require(_0xd922('0xa'));var client=jayson[_0xd922('0xb')][_0xd922('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5229cc,_0x34acd8,_0x5118bd){return new BPromise(function(_0x2a0f0c,_0x5a8fb6){return client[_0xd922('0xd')](_0x5229cc,_0x5118bd)[_0xd922('0xe')](function(_0x12dde1){logger['info']('SquareReport,\x20%s,\x20%s',_0x34acd8,_0xd922('0xf'));logger['debug'](_0xd922('0x10'),_0x34acd8,'request\x20sent',JSON['stringify'](_0x12dde1));if(_0x12dde1[_0xd922('0x11')]){if(_0x12dde1[_0xd922('0x11')][_0xd922('0x12')]===0x1f4){logger[_0xd922('0x11')](_0xd922('0x13'),_0x34acd8,_0x12dde1[_0xd922('0x11')]['message']);return _0x5a8fb6(_0x12dde1[_0xd922('0x11')]['message']);}logger[_0xd922('0x11')](_0xd922('0x13'),_0x34acd8,_0x12dde1[_0xd922('0x11')]['message']);return _0x2a0f0c(_0x12dde1[_0xd922('0x11')][_0xd922('0x14')]);}else{logger['info']('SquareReport,\x20%s,\x20%s',_0x34acd8,'request\x20sent');_0x2a0f0c(_0x12dde1['result'][_0xd922('0x14')]);}})[_0xd922('0x15')](function(_0x26ee1f){logger[_0xd922('0x11')]('SquareReport,\x20%s,\x20%s',_0x34acd8,_0x26ee1f);_0x5a8fb6(_0x26ee1f);});});}exports[_0xd922('0x16')]=function(_0x169e4e){var _0x44ad9b=this;return new Promise(function(_0x49a20c,_0x2f5b89){return db[_0xd922('0x17')]['create'](_0x169e4e[_0xd922('0x18')],{'raw':_0x169e4e[_0xd922('0x19')]?_0x169e4e[_0xd922('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xd922('0xe')](function(_0x4a2af4){logger[_0xd922('0x1a')](_0xd922('0x16'),_0x169e4e);logger[_0xd922('0x1b')](_0xd922('0x16'),_0x169e4e,JSON[_0xd922('0x1c')](_0x4a2af4));_0x49a20c(_0x4a2af4);})[_0xd922('0x15')](function(_0xca6f4){logger[_0xd922('0x11')](_0xd922('0x16'),_0xca6f4[_0xd922('0x14')],_0x169e4e);_0x2f5b89(_0x44ad9b[_0xd922('0x11')](0x1f4,_0xca6f4['message']));});});};exports[_0xd922('0x1d')]=function(_0x5eeb16){var _0x1b1818=this;return new Promise(function(_0x5d10f9,_0x3c5143){return db[_0xd922('0x17')][_0xd922('0x1e')](_0x5eeb16['body'],{'raw':_0x5eeb16['options']?_0x5eeb16['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5eeb16[_0xd922('0x19')]?_0x5eeb16[_0xd922('0x19')][_0xd922('0x1f')]||null:null,'attributes':_0x5eeb16[_0xd922('0x19')]?_0x5eeb16[_0xd922('0x19')][_0xd922('0x20')]||null:null,'limit':_0x5eeb16['options']?_0x5eeb16['options'][_0xd922('0x21')]||null:null})[_0xd922('0xe')](function(_0x2f58ad){logger[_0xd922('0x1a')](_0xd922('0x1d'),_0x5eeb16);logger[_0xd922('0x1b')](_0xd922('0x1d'),_0x5eeb16,JSON[_0xd922('0x1c')](_0x2f58ad));_0x5d10f9(_0x2f58ad);})[_0xd922('0x15')](function(_0x28bfa4){logger['error']('UpdateSquareReport',_0x28bfa4[_0xd922('0x14')],_0x5eeb16);_0x3c5143(_0x1b1818[_0xd922('0x11')](0x1f4,_0x28bfa4['message']));});});};
\ No newline at end of file
index 2de7496..b1bf2af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcef=['fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','/:id','put','update','delete','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x50f895,_0x5e61ec){var _0x4211af=function(_0x41ecb1){while(--_0x41ecb1){_0x50f895['push'](_0x50f895['shift']());}};_0x4211af(++_0x5e61ec);}(_0xfcef,0x1f2));var _0xffce=function(_0x299f6b,_0x583d53){_0x299f6b=_0x299f6b-0x0;var _0xb816aa=_0xfcef[_0x299f6b];return _0xb816aa;};'use strict';var multer=require(_0xffce('0x0'));var util=require(_0xffce('0x1'));var path=require(_0xffce('0x2'));var timeout=require(_0xffce('0x3'));var express=require(_0xffce('0x4'));var router=express[_0xffce('0x5')]();var fs_extra=require(_0xffce('0x6'));var auth=require(_0xffce('0x7'));var interaction=require(_0xffce('0x8'));var config=require('../../config/environment');var controller=require('./squareReportDetail.controller');router[_0xffce('0x9')]('/',auth[_0xffce('0xa')](),controller[_0xffce('0xb')]);router['get']('/describe',auth[_0xffce('0xa')](),controller[_0xffce('0xc')]);router[_0xffce('0x9')](_0xffce('0xd'),auth[_0xffce('0xa')](),controller['show']);router['post']('/',auth[_0xffce('0xa')](),controller['create']);router[_0xffce('0xe')]('/:id',auth[_0xffce('0xa')](),controller[_0xffce('0xf')]);router[_0xffce('0x10')](_0xffce('0xd'),auth[_0xffce('0xa')](),controller['destroy']);module[_0xffce('0x11')]=router;
\ No newline at end of file
+var _0x8c66=['isAuthenticated','index','describe','post','create','put','update','delete','/:id','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get'];(function(_0x2d1c82,_0x43e3ad){var _0x5c24fc=function(_0x3ea6b5){while(--_0x3ea6b5){_0x2d1c82['push'](_0x2d1c82['shift']());}};_0x5c24fc(++_0x43e3ad);}(_0x8c66,0x73));var _0x68c6=function(_0x11dfbb,_0x1f4c8a){_0x11dfbb=_0x11dfbb-0x0;var _0x22d016=_0x8c66[_0x11dfbb];return _0x22d016;};'use strict';var multer=require(_0x68c6('0x0'));var util=require(_0x68c6('0x1'));var path=require(_0x68c6('0x2'));var timeout=require(_0x68c6('0x3'));var express=require('express');var router=express[_0x68c6('0x4')]();var fs_extra=require(_0x68c6('0x5'));var auth=require(_0x68c6('0x6'));var interaction=require(_0x68c6('0x7'));var config=require(_0x68c6('0x8'));var controller=require(_0x68c6('0x9'));router[_0x68c6('0xa')]('/',auth[_0x68c6('0xb')](),controller[_0x68c6('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x68c6('0xd')]);router[_0x68c6('0xa')]('/:id',auth[_0x68c6('0xb')](),controller['show']);router[_0x68c6('0xe')]('/',auth[_0x68c6('0xb')](),controller[_0x68c6('0xf')]);router[_0x68c6('0x10')]('/:id',auth[_0x68c6('0xb')](),controller[_0x68c6('0x11')]);router[_0x68c6('0x12')](_0x68c6('0x13'),auth['isAuthenticated'](),controller['destroy']);module[_0x68c6('0x14')]=router;
\ No newline at end of file
index ae15ada..2c37b46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b4f=['exports','STRING','TEXT'];(function(_0x53a5e2,_0x4d0f98){var _0x1eb46e=function(_0x13cc65){while(--_0x13cc65){_0x53a5e2['push'](_0x53a5e2['shift']());}};_0x1eb46e(++_0x4d0f98);}(_0x8b4f,0x108));var _0xf8b4=function(_0x2e655a,_0x6d5799){_0x2e655a=_0x2e655a-0x0;var _0x26f13b=_0x8b4f[_0x2e655a];return _0x26f13b;};'use strict';var Sequelize=require('sequelize');module[_0xf8b4('0x0')]={'uniqueid':{'type':Sequelize[_0xf8b4('0x1')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0xf8b4('0x1')]},'data':{'type':Sequelize[_0xf8b4('0x2')]},'project_name':{'type':Sequelize[_0xf8b4('0x1')]},'callerid':{'type':Sequelize[_0xf8b4('0x1')]}};
\ No newline at end of file
+var _0x5922=['sequelize','STRING','TEXT'];(function(_0x4d236d,_0x51d4ae){var _0x2b850b=function(_0x431d06){while(--_0x431d06){_0x4d236d['push'](_0x4d236d['shift']());}};_0x2b850b(++_0x51d4ae);}(_0x5922,0x1c2));var _0x2592=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x5922[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0x2592('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2592('0x1')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0x2592('0x2')]},'project_name':{'type':Sequelize[_0x2592('0x1')]},'callerid':{'type':Sequelize[_0x2592('0x1')]}};
\ No newline at end of file
index 78e4419..7da05cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x204a=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','limit','sort','filters','pick','filter','merge','where','VIRTUAL','options','SquareDetailsReport','includeAll','include','rows','show','rawAttributes','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0x27ffa8,_0x3629bd){var _0x4542f7=function(_0x248668){while(--_0x248668){_0x27ffa8['push'](_0x27ffa8['shift']());}};_0x4542f7(++_0x3629bd);}(_0x204a,0x7f));var _0xa204=function(_0x39ebe2,_0x483b07){_0x39ebe2=_0x39ebe2-0x0;var _0x128a7c=_0x204a[_0x39ebe2];return _0x128a7c;};'use strict';var emlformat=require(_0xa204('0x0'));var rimraf=require(_0xa204('0x1'));var zipdir=require(_0xa204('0x2'));var jsonpatch=require(_0xa204('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa204('0x4'));var Mustache=require(_0xa204('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xa204('0x6'));var ejs=require(_0xa204('0x7'));var fs=require('fs');var fs_extra=require(_0xa204('0x8'));var _=require(_0xa204('0x9'));var squel=require(_0xa204('0xa'));var crypto=require('crypto');var jsforce=require(_0xa204('0xb'));var deskjs=require(_0xa204('0xc'));var toCsv=require(_0xa204('0x6'));var querystring=require(_0xa204('0xd'));var Papa=require(_0xa204('0xe'));var Redis=require(_0xa204('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa204('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa204('0x11'))(_0xa204('0x12'));var utils=require('../../config/utils');var config=require(_0xa204('0x13'));var licenseUtil=require(_0xa204('0x14'));var db=require(_0xa204('0x15'))['db'];function respondWithStatusCode(_0x12d278,_0x4844ce){_0x4844ce=_0x4844ce||0xcc;return function(_0x1ebac0){if(_0x1ebac0){return _0x12d278[_0xa204('0x16')](_0x4844ce);}return _0x12d278[_0xa204('0x17')](_0x4844ce)[_0xa204('0x18')]();};}function respondWithResult(_0x58d4b0,_0x5a8514){_0x5a8514=_0x5a8514||0xc8;return function(_0x1e8c44){if(_0x1e8c44){return _0x58d4b0[_0xa204('0x17')](_0x5a8514)[_0xa204('0x19')](_0x1e8c44);}};}function respondWithFilteredResult(_0x2c0a4e,_0x2918f5){return function(_0x1b8a2f){if(_0x1b8a2f){var _0x133367=typeof _0x2918f5[_0xa204('0x1a')]==='undefined'&&typeof _0x2918f5['limit']===_0xa204('0x1b');var _0x208c46=_0x1b8a2f[_0xa204('0x1c')];var _0x5a2798=_0x133367?0x0:_0x2918f5[_0xa204('0x1a')];var _0x182ca6=_0x133367?_0x1b8a2f[_0xa204('0x1c')]:_0x2918f5['offset']+_0x2918f5['limit'];var _0x4ef5af;if(_0x182ca6>=_0x208c46){_0x182ca6=_0x208c46;_0x4ef5af=0xc8;}else{_0x4ef5af=0xce;}_0x2c0a4e[_0xa204('0x17')](_0x4ef5af);return _0x2c0a4e[_0xa204('0x1d')](_0xa204('0x1e'),_0x5a2798+'-'+_0x182ca6+'/'+_0x208c46)[_0xa204('0x19')](_0x1b8a2f);}return null;};}function patchUpdates(_0x42fabb){return function(_0x31c95c){try{jsonpatch[_0xa204('0x1f')](_0x31c95c,_0x42fabb,!![]);}catch(_0x3fa0f3){return BPromise[_0xa204('0x20')](_0x3fa0f3);}return _0x31c95c[_0xa204('0x21')]();};}function saveUpdates(_0x3b78c3,_0x167d03){return function(_0x24cfb5){if(_0x24cfb5){return _0x24cfb5[_0xa204('0x22')](_0x3b78c3)[_0xa204('0x23')](function(_0x55a29d){return _0x55a29d;});}return null;};}function removeEntity(_0x3d415c,_0x3cad06){return function(_0x47f9c3){if(_0x47f9c3){return _0x47f9c3[_0xa204('0x24')]()['then'](function(){_0x3d415c[_0xa204('0x17')](0xcc)[_0xa204('0x18')]();});}};}function handleEntityNotFound(_0x5eb479,_0x273cc6){return function(_0xccdc69){if(!_0xccdc69){_0x5eb479['sendStatus'](0x194);}return _0xccdc69;};}function handleError(_0x562ca0,_0x10adc9){_0x10adc9=_0x10adc9||0x1f4;return function(_0x46ae08){logger['error'](_0x46ae08[_0xa204('0x25')]);if(_0x46ae08[_0xa204('0x26')]){delete _0x46ae08[_0xa204('0x26')];}_0x562ca0[_0xa204('0x17')](_0x10adc9)[_0xa204('0x27')](_0x46ae08);};}exports[_0xa204('0x28')]=function(_0x10e76e,_0x3ba08b){var _0x21fc62={},_0x10b408={},_0x15ea9d={'count':0x0,'rows':[]};var _0x2fc9df=_[_0xa204('0x29')](db['SquareDetailsReport']['rawAttributes'],function(_0x5817ba){return{'name':_0x5817ba['fieldName'],'type':_0x5817ba[_0xa204('0x2a')][_0xa204('0x2b')]};});_0x10b408[_0xa204('0x2c')]=_['map'](_0x2fc9df,_0xa204('0x26'));_0x10b408[_0xa204('0x2d')]=_[_0xa204('0x2e')](_0x10e76e[_0xa204('0x2d')]);_0x10b408['filters']=_[_0xa204('0x2f')](_0x10b408[_0xa204('0x2c')],_0x10b408[_0xa204('0x2d')]);_0x21fc62[_0xa204('0x30')]=_[_0xa204('0x2f')](_0x10b408[_0xa204('0x2c')],qs[_0xa204('0x31')](_0x10e76e[_0xa204('0x2d')][_0xa204('0x31')]));_0x21fc62[_0xa204('0x30')]=_0x21fc62['attributes'][_0xa204('0x32')]?_0x21fc62['attributes']:_0x10b408[_0xa204('0x2c')];if(!_0x10e76e[_0xa204('0x2d')][_0xa204('0x33')]('nolimit')){_0x21fc62['limit']=qs['limit'](_0x10e76e[_0xa204('0x2d')][_0xa204('0x34')]);_0x21fc62[_0xa204('0x1a')]=qs[_0xa204('0x1a')](_0x10e76e[_0xa204('0x2d')]['offset']);}_0x21fc62['order']=qs['sort'](_0x10e76e['query'][_0xa204('0x35')]);_0x21fc62['where']=qs[_0xa204('0x36')](_[_0xa204('0x37')](_0x10e76e[_0xa204('0x2d')],_0x10b408[_0xa204('0x36')]),_0x2fc9df);if(_0x10e76e[_0xa204('0x2d')][_0xa204('0x38')]){_0x21fc62['where']=_[_0xa204('0x39')](_0x21fc62[_0xa204('0x3a')],{'$or':_['map'](_0x2fc9df,function(_0x12e17f){if(_0x12e17f[_0xa204('0x2a')]!==_0xa204('0x3b')){var _0x5735fe={};_0x5735fe[_0x12e17f[_0xa204('0x26')]]={'$like':'%'+_0x10e76e[_0xa204('0x2d')]['filter']+'%'};return _0x5735fe;}})});}_0x21fc62=_['merge']({},_0x21fc62,_0x10e76e[_0xa204('0x3c')]);var _0x20ecbb={'where':_0x21fc62[_0xa204('0x3a')]};return db[_0xa204('0x3d')][_0xa204('0x1c')](_0x20ecbb)[_0xa204('0x23')](function(_0x39a878){_0x15ea9d[_0xa204('0x1c')]=_0x39a878;if(_0x10e76e[_0xa204('0x2d')][_0xa204('0x3e')]){_0x21fc62[_0xa204('0x3f')]=[{'all':!![]}];}return db['SquareDetailsReport']['findAll'](_0x21fc62);})['then'](function(_0x3e2c57){_0x15ea9d[_0xa204('0x40')]=_0x3e2c57;return _0x15ea9d;})[_0xa204('0x23')](respondWithFilteredResult(_0x3ba08b,_0x21fc62))['catch'](handleError(_0x3ba08b,null));};exports[_0xa204('0x41')]=function(_0x330ccf,_0xff128b){var _0x2febf5={'raw':!![],'where':{'id':_0x330ccf['params']['id']}},_0x1bcc78={};_0x1bcc78[_0xa204('0x2c')]=_[_0xa204('0x2e')](db[_0xa204('0x3d')][_0xa204('0x42')]);_0x1bcc78[_0xa204('0x2d')]=_[_0xa204('0x2e')](_0x330ccf[_0xa204('0x2d')]);_0x1bcc78[_0xa204('0x36')]=_['intersection'](_0x1bcc78[_0xa204('0x2c')],_0x1bcc78[_0xa204('0x2d')]);_0x2febf5[_0xa204('0x30')]=_['intersection'](_0x1bcc78[_0xa204('0x2c')],qs['fields'](_0x330ccf['query']['fields']));_0x2febf5[_0xa204('0x30')]=_0x2febf5['attributes'][_0xa204('0x32')]?_0x2febf5[_0xa204('0x30')]:_0x1bcc78[_0xa204('0x2c')];if(_0x330ccf[_0xa204('0x2d')]['includeAll']){_0x2febf5[_0xa204('0x3f')]=[{'all':!![]}];}_0x2febf5=_['merge']({},_0x2febf5,_0x330ccf['options']);return db['SquareDetailsReport'][_0xa204('0x43')](_0x2febf5)[_0xa204('0x23')](handleEntityNotFound(_0xff128b,null))['then'](respondWithResult(_0xff128b,null))[_0xa204('0x44')](handleError(_0xff128b,null));};exports[_0xa204('0x45')]=function(_0x4ea0ee,_0x50ec69){return db[_0xa204('0x3d')]['create'](_0x4ea0ee[_0xa204('0x46')],{})[_0xa204('0x23')](respondWithResult(_0x50ec69,0xc9))[_0xa204('0x44')](handleError(_0x50ec69,null));};exports[_0xa204('0x22')]=function(_0x318956,_0x7d5d5a){if(_0x318956[_0xa204('0x46')]['id']){delete _0x318956[_0xa204('0x46')]['id'];}return db[_0xa204('0x3d')]['find']({'where':{'id':_0x318956['params']['id']}})[_0xa204('0x23')](handleEntityNotFound(_0x7d5d5a,null))[_0xa204('0x23')](saveUpdates(_0x318956[_0xa204('0x46')],null))[_0xa204('0x23')](respondWithResult(_0x7d5d5a,null))[_0xa204('0x44')](handleError(_0x7d5d5a,null));};exports[_0xa204('0x24')]=function(_0x2b4171,_0x46261f){return db['SquareDetailsReport'][_0xa204('0x43')]({'where':{'id':_0x2b4171[_0xa204('0x47')]['id']}})['then'](handleEntityNotFound(_0x46261f,null))['then'](removeEntity(_0x46261f,null))['catch'](handleError(_0x46261f,null));};exports[_0xa204('0x48')]=function(_0x2115c5,_0x24237b){return db[_0xa204('0x3d')][_0xa204('0x48')]()[_0xa204('0x23')](respondWithResult(_0x24237b,null))[_0xa204('0x44')](handleError(_0x24237b,null));};
\ No newline at end of file
+var _0x9ac0=['request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','SquareDetailsReport','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','limit','order','sort','where','pick','filter','merge','includeAll','findAll','rows','show','params','options','find','catch','create','body','describe','eml-format','fast-json-patch'];(function(_0x346747,_0x5da1b4){var _0xf871d5=function(_0x543b01){while(--_0x543b01){_0x346747['push'](_0x346747['shift']());}};_0xf871d5(++_0x5da1b4);}(_0x9ac0,0x1c0));var _0x09ac=function(_0x22e418,_0x100250){_0x22e418=_0x22e418-0x0;var _0x14cb2c=_0x9ac0[_0x22e418];return _0x14cb2c;};'use strict';var emlformat=require(_0x09ac('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x09ac('0x1'));var rp=require(_0x09ac('0x2'));var moment=require(_0x09ac('0x3'));var BPromise=require(_0x09ac('0x4'));var Mustache=require(_0x09ac('0x5'));var util=require(_0x09ac('0x6'));var path=require(_0x09ac('0x7'));var sox=require(_0x09ac('0x8'));var csv=require(_0x09ac('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x09ac('0xa'));var _=require(_0x09ac('0xb'));var squel=require(_0x09ac('0xc'));var crypto=require(_0x09ac('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x09ac('0x9'));var querystring=require(_0x09ac('0xe'));var Papa=require(_0x09ac('0xf'));var Redis=require(_0x09ac('0x10'));var authService=require(_0x09ac('0x11'));var qs=require(_0x09ac('0x12'));var as=require(_0x09ac('0x13'));var hardwareService=require(_0x09ac('0x14'));var logger=require(_0x09ac('0x15'))(_0x09ac('0x16'));var utils=require(_0x09ac('0x17'));var config=require(_0x09ac('0x18'));var licenseUtil=require(_0x09ac('0x19'));var db=require(_0x09ac('0x1a'))['db'];function respondWithStatusCode(_0x14c214,_0x361ad2){_0x361ad2=_0x361ad2||0xcc;return function(_0x3d55cb){if(_0x3d55cb){return _0x14c214[_0x09ac('0x1b')](_0x361ad2);}return _0x14c214[_0x09ac('0x1c')](_0x361ad2)[_0x09ac('0x1d')]();};}function respondWithResult(_0x18d905,_0x19f2a2){_0x19f2a2=_0x19f2a2||0xc8;return function(_0x347edf){if(_0x347edf){return _0x18d905['status'](_0x19f2a2)[_0x09ac('0x1e')](_0x347edf);}};}function respondWithFilteredResult(_0xb79a20,_0x30c74c){return function(_0x5f18c1){if(_0x5f18c1){var _0x3f8400=typeof _0x30c74c['offset']===_0x09ac('0x1f')&&typeof _0x30c74c['limit']===_0x09ac('0x1f');var _0xf480=_0x5f18c1['count'];var _0x3fe994=_0x3f8400?0x0:_0x30c74c[_0x09ac('0x20')];var _0x5217f8=_0x3f8400?_0x5f18c1[_0x09ac('0x21')]:_0x30c74c[_0x09ac('0x20')]+_0x30c74c['limit'];var _0x1f193d;if(_0x5217f8>=_0xf480){_0x5217f8=_0xf480;_0x1f193d=0xc8;}else{_0x1f193d=0xce;}_0xb79a20[_0x09ac('0x1c')](_0x1f193d);return _0xb79a20['set'](_0x09ac('0x22'),_0x3fe994+'-'+_0x5217f8+'/'+_0xf480)['json'](_0x5f18c1);}return null;};}function patchUpdates(_0x53af05){return function(_0x48cdec){try{jsonpatch['apply'](_0x48cdec,_0x53af05,!![]);}catch(_0x3dac21){return BPromise[_0x09ac('0x23')](_0x3dac21);}return _0x48cdec[_0x09ac('0x24')]();};}function saveUpdates(_0x2bade8,_0x3c91f4){return function(_0x7547c0){if(_0x7547c0){return _0x7547c0[_0x09ac('0x25')](_0x2bade8)[_0x09ac('0x26')](function(_0x231369){return _0x231369;});}return null;};}function removeEntity(_0x16992b,_0x4d8252){return function(_0x598ed8){if(_0x598ed8){return _0x598ed8[_0x09ac('0x27')]()[_0x09ac('0x26')](function(){_0x16992b['status'](0xcc)[_0x09ac('0x1d')]();});}};}function handleEntityNotFound(_0x13d28e,_0x32c10a){return function(_0x31b960){if(!_0x31b960){_0x13d28e['sendStatus'](0x194);}return _0x31b960;};}function handleError(_0x222003,_0x148056){_0x148056=_0x148056||0x1f4;return function(_0x43c1fb){logger[_0x09ac('0x28')](_0x43c1fb[_0x09ac('0x29')]);if(_0x43c1fb[_0x09ac('0x2a')]){delete _0x43c1fb[_0x09ac('0x2a')];}_0x222003['status'](_0x148056)[_0x09ac('0x2b')](_0x43c1fb);};}exports['index']=function(_0x5acfa4,_0x4dee58){var _0x3ae73c={},_0x110545={},_0x460f67={'count':0x0,'rows':[]};var _0x19c267=_[_0x09ac('0x2c')](db[_0x09ac('0x2d')]['rawAttributes'],function(_0x50d108){return{'name':_0x50d108[_0x09ac('0x2e')],'type':_0x50d108[_0x09ac('0x2f')]['key']};});_0x110545[_0x09ac('0x30')]=_[_0x09ac('0x2c')](_0x19c267,_0x09ac('0x2a'));_0x110545[_0x09ac('0x31')]=_[_0x09ac('0x32')](_0x5acfa4['query']);_0x110545[_0x09ac('0x33')]=_[_0x09ac('0x34')](_0x110545[_0x09ac('0x30')],_0x110545['query']);_0x3ae73c['attributes']=_[_0x09ac('0x34')](_0x110545['model'],qs['fields'](_0x5acfa4[_0x09ac('0x31')][_0x09ac('0x35')]));_0x3ae73c['attributes']=_0x3ae73c[_0x09ac('0x36')][_0x09ac('0x37')]?_0x3ae73c['attributes']:_0x110545[_0x09ac('0x30')];if(!_0x5acfa4[_0x09ac('0x31')][_0x09ac('0x38')]('nolimit')){_0x3ae73c['limit']=qs[_0x09ac('0x39')](_0x5acfa4[_0x09ac('0x31')]['limit']);_0x3ae73c['offset']=qs[_0x09ac('0x20')](_0x5acfa4[_0x09ac('0x31')]['offset']);}_0x3ae73c[_0x09ac('0x3a')]=qs[_0x09ac('0x3b')](_0x5acfa4['query'][_0x09ac('0x3b')]);_0x3ae73c[_0x09ac('0x3c')]=qs[_0x09ac('0x33')](_[_0x09ac('0x3d')](_0x5acfa4[_0x09ac('0x31')],_0x110545[_0x09ac('0x33')]),_0x19c267);if(_0x5acfa4[_0x09ac('0x31')][_0x09ac('0x3e')]){_0x3ae73c[_0x09ac('0x3c')]=_[_0x09ac('0x3f')](_0x3ae73c['where'],{'$or':_[_0x09ac('0x2c')](_0x19c267,function(_0x386f21){if(_0x386f21[_0x09ac('0x2f')]!=='VIRTUAL'){var _0xbcea71={};_0xbcea71[_0x386f21[_0x09ac('0x2a')]]={'$like':'%'+_0x5acfa4[_0x09ac('0x31')]['filter']+'%'};return _0xbcea71;}})});}_0x3ae73c=_['merge']({},_0x3ae73c,_0x5acfa4['options']);var _0x5aeadd={'where':_0x3ae73c[_0x09ac('0x3c')]};return db['SquareDetailsReport'][_0x09ac('0x21')](_0x5aeadd)[_0x09ac('0x26')](function(_0x1a8e19){_0x460f67['count']=_0x1a8e19;if(_0x5acfa4[_0x09ac('0x31')][_0x09ac('0x40')]){_0x3ae73c['include']=[{'all':!![]}];}return db[_0x09ac('0x2d')][_0x09ac('0x41')](_0x3ae73c);})[_0x09ac('0x26')](function(_0x558058){_0x460f67[_0x09ac('0x42')]=_0x558058;return _0x460f67;})[_0x09ac('0x26')](respondWithFilteredResult(_0x4dee58,_0x3ae73c))['catch'](handleError(_0x4dee58,null));};exports[_0x09ac('0x43')]=function(_0x30f684,_0x10fd42){var _0x11dda7={'raw':!![],'where':{'id':_0x30f684[_0x09ac('0x44')]['id']}},_0x1e9238={};_0x1e9238['model']=_['keys'](db[_0x09ac('0x2d')]['rawAttributes']);_0x1e9238['query']=_['keys'](_0x30f684['query']);_0x1e9238[_0x09ac('0x33')]=_[_0x09ac('0x34')](_0x1e9238[_0x09ac('0x30')],_0x1e9238[_0x09ac('0x31')]);_0x11dda7[_0x09ac('0x36')]=_[_0x09ac('0x34')](_0x1e9238['model'],qs['fields'](_0x30f684[_0x09ac('0x31')][_0x09ac('0x35')]));_0x11dda7[_0x09ac('0x36')]=_0x11dda7['attributes'][_0x09ac('0x37')]?_0x11dda7[_0x09ac('0x36')]:_0x1e9238[_0x09ac('0x30')];if(_0x30f684[_0x09ac('0x31')][_0x09ac('0x40')]){_0x11dda7['include']=[{'all':!![]}];}_0x11dda7=_['merge']({},_0x11dda7,_0x30f684[_0x09ac('0x45')]);return db[_0x09ac('0x2d')][_0x09ac('0x46')](_0x11dda7)[_0x09ac('0x26')](handleEntityNotFound(_0x10fd42,null))[_0x09ac('0x26')](respondWithResult(_0x10fd42,null))[_0x09ac('0x47')](handleError(_0x10fd42,null));};exports[_0x09ac('0x48')]=function(_0x584bad,_0x5e84ea){return db[_0x09ac('0x2d')][_0x09ac('0x48')](_0x584bad['body'],{})[_0x09ac('0x26')](respondWithResult(_0x5e84ea,0xc9))[_0x09ac('0x47')](handleError(_0x5e84ea,null));};exports[_0x09ac('0x25')]=function(_0x122f5d,_0x449350){if(_0x122f5d[_0x09ac('0x49')]['id']){delete _0x122f5d[_0x09ac('0x49')]['id'];}return db[_0x09ac('0x2d')][_0x09ac('0x46')]({'where':{'id':_0x122f5d[_0x09ac('0x44')]['id']}})[_0x09ac('0x26')](handleEntityNotFound(_0x449350,null))['then'](saveUpdates(_0x122f5d[_0x09ac('0x49')],null))[_0x09ac('0x26')](respondWithResult(_0x449350,null))[_0x09ac('0x47')](handleError(_0x449350,null));};exports[_0x09ac('0x27')]=function(_0x5322fa,_0x3b48c3){return db['SquareDetailsReport'][_0x09ac('0x46')]({'where':{'id':_0x5322fa['params']['id']}})[_0x09ac('0x26')](handleEntityNotFound(_0x3b48c3,null))[_0x09ac('0x26')](removeEntity(_0x3b48c3,null))[_0x09ac('0x47')](handleError(_0x3b48c3,null));};exports[_0x09ac('0x4a')]=function(_0x432d50,_0x19e734){return db[_0x09ac('0x2d')]['describe']()[_0x09ac('0x26')](respondWithResult(_0x19e734,null))[_0x09ac('0x47')](handleError(_0x19e734,null));};
\ No newline at end of file
index 7329c5e..d86dea7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca61=['define','report_square_details','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x4458b0,_0x5c4d10){var _0xa3feb4=function(_0x585e8a){while(--_0x585e8a){_0x4458b0['push'](_0x4458b0['shift']());}};_0xa3feb4(++_0x5c4d10);}(_0xca61,0x1be));var _0x1ca6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xca61[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x1ca6('0x0'));var logger=require(_0x1ca6('0x1'))(_0x1ca6('0x2'));var moment=require(_0x1ca6('0x3'));var BPromise=require(_0x1ca6('0x4'));var rp=require(_0x1ca6('0x5'));var fs=require('fs');var path=require(_0x1ca6('0x6'));var rimraf=require(_0x1ca6('0x7'));var config=require(_0x1ca6('0x8'));var attributes=require('./squareReportDetail.attributes');module[_0x1ca6('0x9')]=function(_0x4ce98a,_0x1e91ef){return _0x4ce98a[_0x1ca6('0xa')]('SquareDetailsReport',attributes,{'tableName':_0x1ca6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x05df=['bluebird','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','define','SquareDetailsReport','lodash','util','api','moment'];(function(_0x359b4f,_0x361a5c){var _0x47c149=function(_0x5d7f60){while(--_0x5d7f60){_0x359b4f['push'](_0x359b4f['shift']());}};_0x47c149(++_0x361a5c);}(_0x05df,0x17c));var _0xf05d=function(_0xa2ffe8,_0x5c8ef1){_0xa2ffe8=_0xa2ffe8-0x0;var _0x2e3ecf=_0x05df[_0xa2ffe8];return _0x2e3ecf;};'use strict';var _=require(_0xf05d('0x0'));var util=require(_0xf05d('0x1'));var logger=require('../../config/logger')(_0xf05d('0x2'));var moment=require(_0xf05d('0x3'));var BPromise=require(_0xf05d('0x4'));var rp=require(_0xf05d('0x5'));var fs=require('fs');var path=require(_0xf05d('0x6'));var rimraf=require(_0xf05d('0x7'));var config=require(_0xf05d('0x8'));var attributes=require(_0xf05d('0x9'));module['exports']=function(_0x59bd5d,_0x5d3669){return _0x59bd5d[_0xf05d('0xa')](_0xf05d('0xb'),attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d0d1c97..84e0972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','options','raw','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xef0f,0x168));var _0xfef0=function(_0x1fc03a,_0x3c1936){_0x1fc03a=_0x1fc03a-0x0;var _0x528c01=_0xef0f[_0x1fc03a];return _0x528c01;};'use strict';var _=require(_0xfef0('0x0'));var util=require('util');var moment=require(_0xfef0('0x1'));var BPromise=require(_0xfef0('0x2'));var rs=require(_0xfef0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfef0('0x4'))['db'];var utils=require(_0xfef0('0x5'));var logger=require(_0xfef0('0x6'))('rpc');var config=require(_0xfef0('0x7'));var jayson=require(_0xfef0('0x8'));var client=jayson[_0xfef0('0x9')][_0xfef0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xad43e,_0x11dfd7,_0x5130bd){return new BPromise(function(_0x41ec94,_0x58cf6d){return client[_0xfef0('0xb')](_0xad43e,_0x5130bd)[_0xfef0('0xc')](function(_0x3a81cc){logger[_0xfef0('0xd')](_0xfef0('0xe'),_0x11dfd7,_0xfef0('0xf'));logger[_0xfef0('0x10')](_0xfef0('0x11'),_0x11dfd7,_0xfef0('0xf'),JSON[_0xfef0('0x12')](_0x3a81cc));if(_0x3a81cc[_0xfef0('0x13')]){if(_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x14')]===0x1f4){logger[_0xfef0('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0x11dfd7,_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x15')]);return _0x58cf6d(_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x15')]);}logger[_0xfef0('0x13')](_0xfef0('0xe'),_0x11dfd7,_0x3a81cc[_0xfef0('0x13')]['message']);return _0x41ec94(_0x3a81cc[_0xfef0('0x13')]['message']);}else{logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x11dfd7,_0xfef0('0xf'));_0x41ec94(_0x3a81cc[_0xfef0('0x16')][_0xfef0('0x15')]);}})[_0xfef0('0x17')](function(_0x2a96d9){logger[_0xfef0('0x13')](_0xfef0('0xe'),_0x11dfd7,_0x2a96d9);_0x58cf6d(_0x2a96d9);});});}exports[_0xfef0('0x18')]=function(_0x581459){var _0xd60678=this;return new Promise(function(_0x1642cd,_0x1577fa){return db[_0xfef0('0x19')][_0xfef0('0x1a')](_0x581459['body'],{'raw':_0x581459[_0xfef0('0x1b')]?_0x581459['options'][_0xfef0('0x1c')]===undefined?!![]:![]:!![]})[_0xfef0('0xc')](function(_0x28dee1){logger['info'](_0xfef0('0x18'),_0x581459);logger['debug'](_0xfef0('0x18'),_0x581459,JSON[_0xfef0('0x12')](_0x28dee1));_0x1642cd(_0x28dee1);})['catch'](function(_0x4897af){logger['error'](_0xfef0('0x18'),_0x4897af['message'],_0x581459);_0x1577fa(_0xd60678[_0xfef0('0x13')](0x1f4,_0x4897af[_0xfef0('0x15')]));});});};
\ No newline at end of file
+var _0x236c=['catch','CreateSquareDetailsReport','body','options','raw','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x236c,0x155));var _0xc236=function(_0x3d2e5e,_0x464b84){_0x3d2e5e=_0x3d2e5e-0x0;var _0x35b963=_0x236c[_0x3d2e5e];return _0x35b963;};'use strict';var _=require(_0xc236('0x0'));var util=require('util');var moment=require(_0xc236('0x1'));var BPromise=require(_0xc236('0x2'));var rs=require(_0xc236('0x3'));var fs=require('fs');var Redis=require(_0xc236('0x4'));var db=require(_0xc236('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc236('0x6'))(_0xc236('0x7'));var config=require(_0xc236('0x8'));var jayson=require(_0xc236('0x9'));var client=jayson[_0xc236('0xa')][_0xc236('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5abd65,_0xd612c6,_0x4d349b){return new BPromise(function(_0x51a13b,_0x5bc6a2){return client['request'](_0x5abd65,_0x4d349b)[_0xc236('0xc')](function(_0x4b8dc6){logger[_0xc236('0xd')](_0xc236('0xe'),_0xd612c6,_0xc236('0xf'));logger[_0xc236('0x10')](_0xc236('0x11'),_0xd612c6,'request\x20sent',JSON[_0xc236('0x12')](_0x4b8dc6));if(_0x4b8dc6[_0xc236('0x13')]){if(_0x4b8dc6['error'][_0xc236('0x14')]===0x1f4){logger[_0xc236('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0xd612c6,_0x4b8dc6[_0xc236('0x13')]['message']);return _0x5bc6a2(_0x4b8dc6['error'][_0xc236('0x15')]);}logger[_0xc236('0x13')](_0xc236('0xe'),_0xd612c6,_0x4b8dc6[_0xc236('0x13')]['message']);return _0x51a13b(_0x4b8dc6[_0xc236('0x13')]['message']);}else{logger['info'](_0xc236('0xe'),_0xd612c6,_0xc236('0xf'));_0x51a13b(_0x4b8dc6[_0xc236('0x16')][_0xc236('0x15')]);}})[_0xc236('0x17')](function(_0x5ac3ed){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0xd612c6,_0x5ac3ed);_0x5bc6a2(_0x5ac3ed);});});}exports[_0xc236('0x18')]=function(_0x76f45){var _0x11ec65=this;return new Promise(function(_0x541a20,_0x13b432){return db['SquareDetailsReport']['create'](_0x76f45[_0xc236('0x19')],{'raw':_0x76f45[_0xc236('0x1a')]?_0x76f45[_0xc236('0x1a')][_0xc236('0x1b')]===undefined?!![]:![]:!![]})[_0xc236('0xc')](function(_0x27c6ab){logger[_0xc236('0xd')](_0xc236('0x18'),_0x76f45);logger[_0xc236('0x10')](_0xc236('0x18'),_0x76f45,JSON[_0xc236('0x12')](_0x27c6ab));_0x541a20(_0x27c6ab);})['catch'](function(_0x208c3f){logger[_0xc236('0x13')](_0xc236('0x18'),_0x208c3f[_0xc236('0x15')],_0x76f45);_0x13b432(_0x11ec65[_0xc236('0x13')](0x1f4,_0x208c3f[_0xc236('0x15')]));});});};
\ No newline at end of file
index 6db12d0..d762cec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7776=['Router','../../components/auth/service','./system.controller','isAuthenticated','index','get','killProcess','express'];(function(_0x2b81be,_0x544bdf){var _0x8ed4a7=function(_0x4a7bf4){while(--_0x4a7bf4){_0x2b81be['push'](_0x2b81be['shift']());}};_0x8ed4a7(++_0x544bdf);}(_0x7776,0xff));var _0x6777=function(_0x1b356f,_0x3663d8){_0x1b356f=_0x1b356f-0x0;var _0x1fdb50=_0x7776[_0x1b356f];return _0x1fdb50;};'use strict';var express=require(_0x6777('0x0'));var router=express[_0x6777('0x1')]();var auth=require(_0x6777('0x2'));var controller=require(_0x6777('0x3'));router['get']('/',auth[_0x6777('0x4')](),controller[_0x6777('0x5')]);router[_0x6777('0x6')]('/process/:pid/kill',auth[_0x6777('0x4')](),controller[_0x6777('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x8ea4=['isAuthenticated','exports','express','Router'];(function(_0x3e25ba,_0x4d5399){var _0x393fb8=function(_0x4fc023){while(--_0x4fc023){_0x3e25ba['push'](_0x3e25ba['shift']());}};_0x393fb8(++_0x4d5399);}(_0x8ea4,0xba));var _0x48ea=function(_0x4ed1d4,_0x512d9a){_0x4ed1d4=_0x4ed1d4-0x0;var _0x28e363=_0x8ea4[_0x4ed1d4];return _0x28e363;};'use strict';var express=require(_0x48ea('0x0'));var router=express[_0x48ea('0x1')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/process/:pid/kill',auth[_0x48ea('0x2')](),controller['killProcess']);module[_0x48ea('0x3')]=router;
\ No newline at end of file
index f1b80cf..ad0ff7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f56=['SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','exec','api','bluebird','lodash','inspect','name','status','send','index','getAllData','then','catch','json','killProcess','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill'];(function(_0x174583,_0x468485){var _0x14e46f=function(_0x227127){while(--_0x227127){_0x174583['push'](_0x174583['shift']());}};_0x14e46f(++_0x468485);}(_0x8f56,0x1e2));var _0x68f5=function(_0x5f12b0,_0x5a84fa){_0x5f12b0=_0x5f12b0-0x0;var _0x36d5ca=_0x8f56[_0x5f12b0];return _0x36d5ca;};'use strict';var info=require(_0x68f5('0x0'));var exec=require('child_process')[_0x68f5('0x1')];var logger=require('../../config/logger')(_0x68f5('0x2'));var util=require('util');var BPromise=require(_0x68f5('0x3'));var _=require(_0x68f5('0x4'));function handleError(_0x152cfb,_0x1ee5a7,_0x4c22a0){_0x1ee5a7=_0x1ee5a7||0x1f4;return function(_0x3d1ad3){logger['error']('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x4c22a0,_0x1ee5a7,util[_0x68f5('0x5')](_0x3d1ad3,{'showHidden':![],'depth':null}));delete _0x3d1ad3[_0x68f5('0x6')];_0x152cfb[_0x68f5('0x7')](_0x1ee5a7)[_0x68f5('0x8')](_0x3d1ad3);};}exports[_0x68f5('0x9')]=function(_0x290f88,_0x48a90b){return info[_0x68f5('0xa')]()[_0x68f5('0xb')](function(_0x237dc0){return _0x48a90b[_0x68f5('0x7')](0xc8)['json'](_0x237dc0);})[_0x68f5('0xc')](function(_0x5f59ba){return _0x48a90b[_0x68f5('0x7')](0x1f4)[_0x68f5('0xd')](_0x5f59ba);});};exports[_0x68f5('0xe')]=function(_0x4910c3,_0x174162){var _0x289483=['components/import/cm'];return new BPromise(function(_0x3865b4,_0x3a73c3){return exec(util['format'](_0x68f5('0xf'),_0x4910c3[_0x68f5('0x10')][_0x68f5('0x11')]),function(_0x292fd4,_0x2af341,_0x327ee9){if(_0x292fd4){return _0x3a73c3(_0x292fd4);}return _0x3865b4(_0x2af341);});})[_0x68f5('0xb')](function(_0x10af60){var _0x2111a6=![];var _0xa02923=_0x10af60['split'](/\n/);for(var _0x4c4917=0x0,_0x17c10b=_0x289483[_0x68f5('0x12')];_0x4c4917<_0x17c10b,_0x2111a6===![];_0x4c4917+=0x1){if(_0x10af60[_0x68f5('0x13')](_0x289483[_0x4c4917])>=0x0){_0x2111a6=!![];}}if(!_0x2111a6){throw new Error(util['format'](_0x68f5('0x14'),_0x4910c3['params'][_0x68f5('0x11')]));}process[_0x68f5('0x15')](_0x4910c3[_0x68f5('0x10')][_0x68f5('0x11')],_0x68f5('0x16'));return _0x174162[_0x68f5('0x7')](0xc8)[_0x68f5('0xd')]({'message':util['format'](_0x68f5('0x17'),_0x4910c3[_0x68f5('0x10')]['pid'])});})[_0x68f5('0xc')](handleError(_0x174162,null,'killProcess'));};
\ No newline at end of file
+var _0xdcd8=['json','killProcess','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','catch','exec','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','send','index','getAllData','then','status'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xdcd8,0x181));var _0x8dcd=function(_0x508acd,_0x852c77){_0x508acd=_0x508acd-0x0;var _0x4e8524=_0xdcd8[_0x508acd];return _0x4e8524;};'use strict';var info=require('systeminformation');var exec=require('child_process')[_0x8dcd('0x0')];var logger=require('../../config/logger')('api');var util=require(_0x8dcd('0x1'));var BPromise=require(_0x8dcd('0x2'));var _=require(_0x8dcd('0x3'));function handleError(_0x29b144,_0x118c70,_0x721ce1){_0x118c70=_0x118c70||0x1f4;return function(_0x370428){logger[_0x8dcd('0x4')](_0x8dcd('0x5'),_0x721ce1,_0x118c70,util['inspect'](_0x370428,{'showHidden':![],'depth':null}));delete _0x370428['name'];_0x29b144['status'](_0x118c70)[_0x8dcd('0x6')](_0x370428);};}exports[_0x8dcd('0x7')]=function(_0x89a7dc,_0x171195){return info[_0x8dcd('0x8')]()[_0x8dcd('0x9')](function(_0x2ab2e0){return _0x171195[_0x8dcd('0xa')](0xc8)[_0x8dcd('0xb')](_0x2ab2e0);})['catch'](function(_0x581e46){return _0x171195[_0x8dcd('0xa')](0x1f4)[_0x8dcd('0xb')](_0x581e46);});};exports[_0x8dcd('0xc')]=function(_0x4a475e,_0xa592d2){var _0x22db61=['components/import/cm'];return new BPromise(function(_0x4eddde,_0x3a5800){return exec(util[_0x8dcd('0xd')](_0x8dcd('0xe'),_0x4a475e['params'][_0x8dcd('0xf')]),function(_0x341cf3,_0xf0745c,_0x1bf651){if(_0x341cf3){return _0x3a5800(_0x341cf3);}return _0x4eddde(_0xf0745c);});})[_0x8dcd('0x9')](function(_0xb4b03b){var _0xae40d2=![];var _0x2ebe56=_0xb4b03b['split'](/\n/);for(var _0x3c9772=0x0,_0x2cf252=_0x22db61[_0x8dcd('0x10')];_0x3c9772<_0x2cf252,_0xae40d2===![];_0x3c9772+=0x1){if(_0xb4b03b[_0x8dcd('0x11')](_0x22db61[_0x3c9772])>=0x0){_0xae40d2=!![];}}if(!_0xae40d2){throw new Error(util[_0x8dcd('0xd')](_0x8dcd('0x12'),_0x4a475e[_0x8dcd('0x13')]['pid']));}process[_0x8dcd('0x14')](_0x4a475e[_0x8dcd('0x13')]['pid'],'SIGINT');return _0xa592d2[_0x8dcd('0xa')](0xc8)[_0x8dcd('0xb')]({'message':util['format']('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x4a475e[_0x8dcd('0x13')][_0x8dcd('0xf')])});})[_0x8dcd('0x15')](handleError(_0xa592d2,null,_0x8dcd('0xc')));};
\ No newline at end of file
index 3c4946e..a32d475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x123d=['multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','post','create','delete','destroy','exports'];(function(_0x154fb3,_0x38875f){var _0x575fa8=function(_0x268337){while(--_0x268337){_0x154fb3['push'](_0x154fb3['shift']());}};_0x575fa8(++_0x38875f);}(_0x123d,0x187));var _0xd123=function(_0x3ee809,_0x44f094){_0x3ee809=_0x3ee809-0x0;var _0x4e5019=_0x123d[_0x3ee809];return _0x4e5019;};'use strict';var multer=require(_0xd123('0x0'));var util=require('util');var path=require(_0xd123('0x1'));var timeout=require('connect-timeout');var express=require(_0xd123('0x2'));var router=express[_0xd123('0x3')]();var fs_extra=require(_0xd123('0x4'));var auth=require(_0xd123('0x5'));var interaction=require(_0xd123('0x6'));var config=require('../../config/environment');var controller=require('./tag.controller');router['get']('/',auth[_0xd123('0x7')](),controller[_0xd123('0x8')]);router[_0xd123('0x9')](_0xd123('0xa'),auth[_0xd123('0x7')](),controller[_0xd123('0xb')]);router[_0xd123('0xc')]('/',auth[_0xd123('0x7')](),controller[_0xd123('0xd')]);router['put'](_0xd123('0xa'),auth[_0xd123('0x7')](),controller['update']);router[_0xd123('0xe')](_0xd123('0xa'),auth[_0xd123('0x7')](),controller[_0xd123('0xf')]);module[_0xd123('0x10')]=router;
\ No newline at end of file
+var _0xac19=['create','put','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','get','index','/:id','show','post','isAuthenticated'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0xac19,0x11d));var _0x9ac1=function(_0x380a93,_0x63d51d){_0x380a93=_0x380a93-0x0;var _0x2be539=_0xac19[_0x380a93];return _0x2be539;};'use strict';var multer=require(_0x9ac1('0x0'));var util=require(_0x9ac1('0x1'));var path=require('path');var timeout=require(_0x9ac1('0x2'));var express=require(_0x9ac1('0x3'));var router=express[_0x9ac1('0x4')]();var fs_extra=require(_0x9ac1('0x5'));var auth=require(_0x9ac1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9ac1('0x7'));var controller=require(_0x9ac1('0x8'));router[_0x9ac1('0x9')]('/',auth['isAuthenticated'](),controller[_0x9ac1('0xa')]);router[_0x9ac1('0x9')](_0x9ac1('0xb'),auth['isAuthenticated'](),controller[_0x9ac1('0xc')]);router[_0x9ac1('0xd')]('/',auth[_0x9ac1('0xe')](),controller[_0x9ac1('0xf')]);router[_0x9ac1('0x10')](_0x9ac1('0xb'),auth[_0x9ac1('0xe')](),controller[_0x9ac1('0x11')]);router['delete'](_0x9ac1('0xb'),auth[_0x9ac1('0xe')](),controller[_0x9ac1('0x12')]);module[_0x9ac1('0x13')]=router;
\ No newline at end of file
index 1e531b3..9b8815a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ffe=['STRING','#0091EA','sequelize','exports'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x4ffe,0x172));var _0xe4ff=function(_0x3b37d0,_0x5e3d41){_0x3b37d0=_0x3b37d0-0x0;var _0x4987b6=_0x4ffe[_0x3b37d0];return _0x4987b6;};'use strict';var Sequelize=require(_0xe4ff('0x0'));module[_0xe4ff('0x1')]={'name':{'type':Sequelize[_0xe4ff('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xe4ff('0x2')],'defaultValue':_0xe4ff('0x3')},'description':{'type':Sequelize[_0xe4ff('0x2')]}};
\ No newline at end of file
+var _0x80ed=['STRING','name','sequelize'];(function(_0x4fec12,_0x3ec5bf){var _0x4c8151=function(_0x55a923){while(--_0x55a923){_0x4fec12['push'](_0x4fec12['shift']());}};_0x4c8151(++_0x3ec5bf);}(_0x80ed,0x11c));var _0xd80e=function(_0x38ecf7,_0x58587a){_0x38ecf7=_0x38ecf7-0x0;var _0x4044b0=_0x80ed[_0x38ecf7];return _0x4044b0;};'use strict';var Sequelize=require(_0xd80e('0x0'));module['exports']={'name':{'type':Sequelize[_0xd80e('0x1')],'unique':_0xd80e('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xd80e('0x1')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0xd80e('0x1')]}};
\ No newline at end of file
index 87efbd8..bf1c833 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['pick','filter','where','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','get','Tags','UserProfileResource','error','stack','name','map','Tag','rawAttributes','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters'];(function(_0x28ab1a,_0x41638e){var _0x2db742=function(_0x5f5d8f){while(--_0x5f5d8f){_0x28ab1a['push'](_0x28ab1a['shift']());}};_0x2db742(++_0x41638e);}(_0x54ef,0x112));var _0xf54e=function(_0x51c147,_0x5df871){_0x51c147=_0x51c147-0x0;var _0xdd7e37=_0x54ef[_0x51c147];return _0xdd7e37;};'use strict';var emlformat=require(_0xf54e('0x0'));var rimraf=require(_0xf54e('0x1'));var zipdir=require(_0xf54e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf54e('0x3'));var moment=require(_0xf54e('0x4'));var BPromise=require(_0xf54e('0x5'));var Mustache=require(_0xf54e('0x6'));var util=require(_0xf54e('0x7'));var path=require(_0xf54e('0x8'));var sox=require(_0xf54e('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf54e('0xa'));var _=require(_0xf54e('0xb'));var squel=require(_0xf54e('0xc'));var crypto=require('crypto');var jsforce=require(_0xf54e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf54e('0xe'));var querystring=require(_0xf54e('0xf'));var Papa=require('papaparse');var Redis=require(_0xf54e('0x10'));var authService=require(_0xf54e('0x11'));var qs=require(_0xf54e('0x12'));var as=require(_0xf54e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf54e('0x14'))(_0xf54e('0x15'));var utils=require(_0xf54e('0x16'));var config=require(_0xf54e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf54e('0x18'))['db'];function respondWithStatusCode(_0x4b0ee1,_0x4bd828){_0x4bd828=_0x4bd828||0xcc;return function(_0x15a9d4){if(_0x15a9d4){return _0x4b0ee1[_0xf54e('0x19')](_0x4bd828);}return _0x4b0ee1[_0xf54e('0x1a')](_0x4bd828)[_0xf54e('0x1b')]();};}function respondWithResult(_0x5644aa,_0x331732){_0x331732=_0x331732||0xc8;return function(_0x1bbeaa){if(_0x1bbeaa){return _0x5644aa[_0xf54e('0x1a')](_0x331732)[_0xf54e('0x1c')](_0x1bbeaa);}};}function respondWithFilteredResult(_0x56828e,_0x2366ee){return function(_0x389abc){if(_0x389abc){var _0x3eb415=typeof _0x2366ee['offset']==='undefined'&&typeof _0x2366ee[_0xf54e('0x1d')]===_0xf54e('0x1e');var _0x1c02e7=_0x389abc[_0xf54e('0x1f')];var _0x15cc48=_0x3eb415?0x0:_0x2366ee[_0xf54e('0x20')];var _0x2e27b6=_0x3eb415?_0x389abc[_0xf54e('0x1f')]:_0x2366ee[_0xf54e('0x20')]+_0x2366ee[_0xf54e('0x1d')];var _0x226c96;if(_0x2e27b6>=_0x1c02e7){_0x2e27b6=_0x1c02e7;_0x226c96=0xc8;}else{_0x226c96=0xce;}_0x56828e['status'](_0x226c96);return _0x56828e['set'](_0xf54e('0x21'),_0x15cc48+'-'+_0x2e27b6+'/'+_0x1c02e7)['json'](_0x389abc);}return null;};}function patchUpdates(_0x3e1556){return function(_0x1bfe99){try{jsonpatch[_0xf54e('0x22')](_0x1bfe99,_0x3e1556,!![]);}catch(_0x9903fc){return BPromise[_0xf54e('0x23')](_0x9903fc);}return _0x1bfe99[_0xf54e('0x24')]();};}function saveUpdates(_0x388aa0,_0x11985e){return function(_0x3c0169){if(_0x3c0169){return _0x3c0169[_0xf54e('0x25')](_0x388aa0)[_0xf54e('0x26')](function(_0x5b83df){return _0x5b83df;});}return null;};}function removeEntity(_0x6f6d29,_0x54f914){return function(_0x264a8f){if(_0x264a8f){return _0x264a8f[_0xf54e('0x27')]()[_0xf54e('0x26')](function(){var _0x474b61=_0x264a8f[_0xf54e('0x28')]({'plain':!![]});var _0x160160=_0xf54e('0x29');return db[_0xf54e('0x2a')][_0xf54e('0x27')]({'where':{'type':_0x160160,'resourceId':_0x474b61['id']}})[_0xf54e('0x26')](function(){return _0x264a8f;});})[_0xf54e('0x26')](function(){_0x6f6d29[_0xf54e('0x1a')](0xcc)[_0xf54e('0x1b')]();});}};}function handleEntityNotFound(_0x5390b8,_0xb3706e){return function(_0x4cbf7c){if(!_0x4cbf7c){_0x5390b8[_0xf54e('0x19')](0x194);}return _0x4cbf7c;};}function handleError(_0x5e63f4,_0x15b888){_0x15b888=_0x15b888||0x1f4;return function(_0x269f47){logger[_0xf54e('0x2b')](_0x269f47[_0xf54e('0x2c')]);if(_0x269f47[_0xf54e('0x2d')]){delete _0x269f47[_0xf54e('0x2d')];}_0x5e63f4[_0xf54e('0x1a')](_0x15b888)['send'](_0x269f47);};}exports['index']=function(_0x2f96b1,_0x258d29){var _0x2ec92e={},_0x16d00f={},_0xb2d4c4={'count':0x0,'rows':[]};var _0x133cd7=_[_0xf54e('0x2e')](db[_0xf54e('0x2f')][_0xf54e('0x30')],function(_0x12edc3){return{'name':_0x12edc3['fieldName'],'type':_0x12edc3['type'][_0xf54e('0x31')]};});_0x16d00f[_0xf54e('0x32')]=_['map'](_0x133cd7,_0xf54e('0x2d'));_0x16d00f[_0xf54e('0x33')]=_[_0xf54e('0x34')](_0x2f96b1[_0xf54e('0x33')]);_0x16d00f['filters']=_['intersection'](_0x16d00f['model'],_0x16d00f[_0xf54e('0x33')]);_0x2ec92e[_0xf54e('0x35')]=_[_0xf54e('0x36')](_0x16d00f[_0xf54e('0x32')],qs[_0xf54e('0x37')](_0x2f96b1[_0xf54e('0x33')]['fields']));_0x2ec92e['attributes']=_0x2ec92e['attributes'][_0xf54e('0x38')]?_0x2ec92e[_0xf54e('0x35')]:_0x16d00f['model'];if(!_0x2f96b1['query'][_0xf54e('0x39')](_0xf54e('0x3a'))){_0x2ec92e[_0xf54e('0x1d')]=qs['limit'](_0x2f96b1[_0xf54e('0x33')][_0xf54e('0x1d')]);_0x2ec92e['offset']=qs[_0xf54e('0x20')](_0x2f96b1[_0xf54e('0x33')][_0xf54e('0x20')]);}_0x2ec92e[_0xf54e('0x3b')]=qs[_0xf54e('0x3c')](_0x2f96b1[_0xf54e('0x33')]['sort']);_0x2ec92e['where']=qs[_0xf54e('0x3d')](_[_0xf54e('0x3e')](_0x2f96b1[_0xf54e('0x33')],_0x16d00f['filters']),_0x133cd7);if(_0x2f96b1[_0xf54e('0x33')][_0xf54e('0x3f')]){_0x2ec92e[_0xf54e('0x40')]=_[_0xf54e('0x41')](_0x2ec92e[_0xf54e('0x40')],{'$or':_[_0xf54e('0x2e')](_0x133cd7,function(_0x17c7ec){if(_0x17c7ec[_0xf54e('0x42')]!==_0xf54e('0x43')){var _0x2087b3={};_0x2087b3[_0x17c7ec[_0xf54e('0x2d')]]={'$like':'%'+_0x2f96b1[_0xf54e('0x33')][_0xf54e('0x3f')]+'%'};return _0x2087b3;}})});}_0x2ec92e=_[_0xf54e('0x41')]({},_0x2ec92e,_0x2f96b1[_0xf54e('0x44')]);var _0x5085c1={'where':_0x2ec92e['where']};return db['Tag'][_0xf54e('0x1f')](_0x5085c1)[_0xf54e('0x26')](function(_0x5398b2){_0xb2d4c4[_0xf54e('0x1f')]=_0x5398b2;if(_0x2f96b1[_0xf54e('0x33')][_0xf54e('0x45')]){_0x2ec92e['include']=[{'all':!![]}];}return db[_0xf54e('0x2f')][_0xf54e('0x46')](_0x2ec92e);})[_0xf54e('0x26')](function(_0x794be7){_0xb2d4c4[_0xf54e('0x47')]=_0x794be7;return _0xb2d4c4;})[_0xf54e('0x26')](respondWithFilteredResult(_0x258d29,_0x2ec92e))[_0xf54e('0x48')](handleError(_0x258d29,null));};exports[_0xf54e('0x49')]=function(_0x5b4ea1,_0x47bedd){var _0x11c736={'raw':!![],'where':{'id':_0x5b4ea1[_0xf54e('0x4a')]['id']}},_0x3447fd={};_0x3447fd[_0xf54e('0x32')]=_[_0xf54e('0x34')](db[_0xf54e('0x2f')]['rawAttributes']);_0x3447fd[_0xf54e('0x33')]=_['keys'](_0x5b4ea1[_0xf54e('0x33')]);_0x3447fd['filters']=_[_0xf54e('0x36')](_0x3447fd[_0xf54e('0x32')],_0x3447fd[_0xf54e('0x33')]);_0x11c736['attributes']=_[_0xf54e('0x36')](_0x3447fd[_0xf54e('0x32')],qs[_0xf54e('0x37')](_0x5b4ea1[_0xf54e('0x33')][_0xf54e('0x37')]));_0x11c736['attributes']=_0x11c736[_0xf54e('0x35')][_0xf54e('0x38')]?_0x11c736[_0xf54e('0x35')]:_0x3447fd[_0xf54e('0x32')];if(_0x5b4ea1['query'][_0xf54e('0x45')]){_0x11c736[_0xf54e('0x4b')]=[{'all':!![]}];}_0x11c736=_['merge']({},_0x11c736,_0x5b4ea1[_0xf54e('0x44')]);return db[_0xf54e('0x2f')][_0xf54e('0x4c')](_0x11c736)[_0xf54e('0x26')](handleEntityNotFound(_0x47bedd,null))['then'](respondWithResult(_0x47bedd,null))[_0xf54e('0x48')](handleError(_0x47bedd,null));};exports[_0xf54e('0x4d')]=function(_0x2527f6,_0xb4654f){return db[_0xf54e('0x2f')][_0xf54e('0x4d')](_0x2527f6[_0xf54e('0x4e')],{})[_0xf54e('0x26')](function(_0x15bfef){var _0x21f2f8=_0x2527f6[_0xf54e('0x4f')][_0xf54e('0x28')]({'plain':!![]});if(!_0x21f2f8)throw new Error(_0xf54e('0x50'));if(_0x21f2f8[_0xf54e('0x51')]===_0xf54e('0x4f')){var _0xa6c305=_0x15bfef[_0xf54e('0x28')]({'plain':!![]});var _0xe9338b=_0xf54e('0x29');return db[_0xf54e('0x52')]['find']({'where':{'name':_0xe9338b,'userProfileId':_0x21f2f8['userProfileId']},'raw':!![]})[_0xf54e('0x26')](function(_0x1106bb){if(_0x1106bb&&_0x1106bb[_0xf54e('0x53')]===0x0){return db[_0xf54e('0x2a')][_0xf54e('0x4d')]({'name':_0xa6c305[_0xf54e('0x2d')],'resourceId':_0xa6c305['id'],'type':_0x1106bb[_0xf54e('0x2d')],'sectionId':_0x1106bb['id']},{})[_0xf54e('0x26')](function(){return _0x15bfef;});}else{return _0x15bfef;}})[_0xf54e('0x48')](function(_0xdf63c4){logger[_0xf54e('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xdf63c4);throw _0xdf63c4;});}return _0x15bfef;})[_0xf54e('0x26')](respondWithResult(_0xb4654f,0xc9))[_0xf54e('0x48')](handleError(_0xb4654f,null));};exports[_0xf54e('0x25')]=function(_0x37e4f8,_0x1b8f16){if(_0x37e4f8[_0xf54e('0x4e')]['id']){delete _0x37e4f8[_0xf54e('0x4e')]['id'];}return db['Tag'][_0xf54e('0x4c')]({'where':{'id':_0x37e4f8[_0xf54e('0x4a')]['id']}})[_0xf54e('0x26')](handleEntityNotFound(_0x1b8f16,null))['then'](saveUpdates(_0x37e4f8[_0xf54e('0x4e')],null))['then'](respondWithResult(_0x1b8f16,null))[_0xf54e('0x48')](handleError(_0x1b8f16,null));};exports[_0xf54e('0x27')]=function(_0x3e2fd1,_0x5b882f){return db[_0xf54e('0x2f')][_0xf54e('0x4c')]({'where':{'id':_0x3e2fd1[_0xf54e('0x4a')]['id']}})[_0xf54e('0x26')](handleEntityNotFound(_0x5b882f,null))[_0xf54e('0x26')](removeEntity(_0x5b882f,null))[_0xf54e('0x48')](handleError(_0x5b882f,null));};
\ No newline at end of file
+var _0x07c3=['key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','include','rows','catch','show','params','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','update','then','destroy','get','Tags','error','stack','name','send','map','Tag','rawAttributes','fieldName','type'];(function(_0x48dd11,_0x1a546c){var _0x1d3ae2=function(_0x3784d8){while(--_0x3784d8){_0x48dd11['push'](_0x48dd11['shift']());}};_0x1d3ae2(++_0x1a546c);}(_0x07c3,0x1bf));var _0x307c=function(_0x547456,_0x1de17e){_0x547456=_0x547456-0x0;var _0xc1fd7b=_0x07c3[_0x547456];return _0xc1fd7b;};'use strict';var emlformat=require(_0x307c('0x0'));var rimraf=require(_0x307c('0x1'));var zipdir=require(_0x307c('0x2'));var jsonpatch=require(_0x307c('0x3'));var rp=require(_0x307c('0x4'));var moment=require(_0x307c('0x5'));var BPromise=require(_0x307c('0x6'));var Mustache=require(_0x307c('0x7'));var util=require('util');var path=require(_0x307c('0x8'));var sox=require(_0x307c('0x9'));var csv=require(_0x307c('0xa'));var ejs=require(_0x307c('0xb'));var fs=require('fs');var fs_extra=require(_0x307c('0xc'));var _=require(_0x307c('0xd'));var squel=require(_0x307c('0xe'));var crypto=require(_0x307c('0xf'));var jsforce=require(_0x307c('0x10'));var deskjs=require(_0x307c('0x11'));var toCsv=require(_0x307c('0xa'));var querystring=require(_0x307c('0x12'));var Papa=require(_0x307c('0x13'));var Redis=require(_0x307c('0x14'));var authService=require(_0x307c('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x307c('0x16'));var hardwareService=require(_0x307c('0x17'));var logger=require(_0x307c('0x18'))(_0x307c('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x307c('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3c21fb,_0x1a00ec){_0x1a00ec=_0x1a00ec||0xcc;return function(_0x4d2559){if(_0x4d2559){return _0x3c21fb[_0x307c('0x1b')](_0x1a00ec);}return _0x3c21fb[_0x307c('0x1c')](_0x1a00ec)[_0x307c('0x1d')]();};}function respondWithResult(_0x45ef78,_0x4193d8){_0x4193d8=_0x4193d8||0xc8;return function(_0x2ea8c3){if(_0x2ea8c3){return _0x45ef78[_0x307c('0x1c')](_0x4193d8)[_0x307c('0x1e')](_0x2ea8c3);}};}function respondWithFilteredResult(_0x65678e,_0x38f028){return function(_0x405273){if(_0x405273){var _0x424a74=typeof _0x38f028['offset']===_0x307c('0x1f')&&typeof _0x38f028[_0x307c('0x20')]===_0x307c('0x1f');var _0x2f44ce=_0x405273[_0x307c('0x21')];var _0x2e21a6=_0x424a74?0x0:_0x38f028[_0x307c('0x22')];var _0x13f03b=_0x424a74?_0x405273[_0x307c('0x21')]:_0x38f028['offset']+_0x38f028['limit'];var _0x3bbb1e;if(_0x13f03b>=_0x2f44ce){_0x13f03b=_0x2f44ce;_0x3bbb1e=0xc8;}else{_0x3bbb1e=0xce;}_0x65678e['status'](_0x3bbb1e);return _0x65678e[_0x307c('0x23')]('Content-Range',_0x2e21a6+'-'+_0x13f03b+'/'+_0x2f44ce)['json'](_0x405273);}return null;};}function patchUpdates(_0x4bcc1a){return function(_0x25a503){try{jsonpatch['apply'](_0x25a503,_0x4bcc1a,!![]);}catch(_0x2b07da){return BPromise[_0x307c('0x24')](_0x2b07da);}return _0x25a503['save']();};}function saveUpdates(_0x1cdc48,_0x45fe2){return function(_0x574622){if(_0x574622){return _0x574622[_0x307c('0x25')](_0x1cdc48)[_0x307c('0x26')](function(_0x9a66a0){return _0x9a66a0;});}return null;};}function removeEntity(_0x519985,_0x36802c){return function(_0x2b5f2f){if(_0x2b5f2f){return _0x2b5f2f[_0x307c('0x27')]()[_0x307c('0x26')](function(){var _0xa278fc=_0x2b5f2f[_0x307c('0x28')]({'plain':!![]});var _0x5da864=_0x307c('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x5da864,'resourceId':_0xa278fc['id']}})[_0x307c('0x26')](function(){return _0x2b5f2f;});})[_0x307c('0x26')](function(){_0x519985[_0x307c('0x1c')](0xcc)[_0x307c('0x1d')]();});}};}function handleEntityNotFound(_0x25dede,_0x1591d1){return function(_0x4fd125){if(!_0x4fd125){_0x25dede[_0x307c('0x1b')](0x194);}return _0x4fd125;};}function handleError(_0x181fa2,_0x2ebab3){_0x2ebab3=_0x2ebab3||0x1f4;return function(_0x54da33){logger[_0x307c('0x2a')](_0x54da33[_0x307c('0x2b')]);if(_0x54da33[_0x307c('0x2c')]){delete _0x54da33[_0x307c('0x2c')];}_0x181fa2[_0x307c('0x1c')](_0x2ebab3)[_0x307c('0x2d')](_0x54da33);};}exports['index']=function(_0x1203f6,_0x1e448e){var _0x27dba3={},_0x313fcf={},_0x912246={'count':0x0,'rows':[]};var _0x80a20c=_[_0x307c('0x2e')](db[_0x307c('0x2f')][_0x307c('0x30')],function(_0x55f4c0){return{'name':_0x55f4c0[_0x307c('0x31')],'type':_0x55f4c0[_0x307c('0x32')][_0x307c('0x33')]};});_0x313fcf[_0x307c('0x34')]=_[_0x307c('0x2e')](_0x80a20c,_0x307c('0x2c'));_0x313fcf[_0x307c('0x35')]=_[_0x307c('0x36')](_0x1203f6[_0x307c('0x35')]);_0x313fcf[_0x307c('0x37')]=_[_0x307c('0x38')](_0x313fcf['model'],_0x313fcf[_0x307c('0x35')]);_0x27dba3[_0x307c('0x39')]=_['intersection'](_0x313fcf[_0x307c('0x34')],qs[_0x307c('0x3a')](_0x1203f6['query'][_0x307c('0x3a')]));_0x27dba3['attributes']=_0x27dba3[_0x307c('0x39')][_0x307c('0x3b')]?_0x27dba3[_0x307c('0x39')]:_0x313fcf[_0x307c('0x34')];if(!_0x1203f6[_0x307c('0x35')][_0x307c('0x3c')](_0x307c('0x3d'))){_0x27dba3['limit']=qs[_0x307c('0x20')](_0x1203f6[_0x307c('0x35')][_0x307c('0x20')]);_0x27dba3[_0x307c('0x22')]=qs[_0x307c('0x22')](_0x1203f6[_0x307c('0x35')][_0x307c('0x22')]);}_0x27dba3['order']=qs['sort'](_0x1203f6['query'][_0x307c('0x3e')]);_0x27dba3[_0x307c('0x3f')]=qs[_0x307c('0x37')](_['pick'](_0x1203f6[_0x307c('0x35')],_0x313fcf['filters']),_0x80a20c);if(_0x1203f6[_0x307c('0x35')][_0x307c('0x40')]){_0x27dba3[_0x307c('0x3f')]=_[_0x307c('0x41')](_0x27dba3[_0x307c('0x3f')],{'$or':_[_0x307c('0x2e')](_0x80a20c,function(_0x34fea9){if(_0x34fea9[_0x307c('0x32')]!=='VIRTUAL'){var _0x2d7544={};_0x2d7544[_0x34fea9['name']]={'$like':'%'+_0x1203f6[_0x307c('0x35')]['filter']+'%'};return _0x2d7544;}})});}_0x27dba3=_[_0x307c('0x41')]({},_0x27dba3,_0x1203f6[_0x307c('0x42')]);var _0x25f65e={'where':_0x27dba3[_0x307c('0x3f')]};return db[_0x307c('0x2f')][_0x307c('0x21')](_0x25f65e)[_0x307c('0x26')](function(_0x45cc33){_0x912246[_0x307c('0x21')]=_0x45cc33;if(_0x1203f6[_0x307c('0x35')][_0x307c('0x43')]){_0x27dba3[_0x307c('0x44')]=[{'all':!![]}];}return db['Tag']['findAll'](_0x27dba3);})[_0x307c('0x26')](function(_0x264aa8){_0x912246[_0x307c('0x45')]=_0x264aa8;return _0x912246;})[_0x307c('0x26')](respondWithFilteredResult(_0x1e448e,_0x27dba3))[_0x307c('0x46')](handleError(_0x1e448e,null));};exports[_0x307c('0x47')]=function(_0x4a7f36,_0x492f8d){var _0x104aa4={'raw':!![],'where':{'id':_0x4a7f36[_0x307c('0x48')]['id']}},_0x5d7d0d={};_0x5d7d0d[_0x307c('0x34')]=_[_0x307c('0x36')](db['Tag'][_0x307c('0x30')]);_0x5d7d0d[_0x307c('0x35')]=_[_0x307c('0x36')](_0x4a7f36[_0x307c('0x35')]);_0x5d7d0d[_0x307c('0x37')]=_['intersection'](_0x5d7d0d[_0x307c('0x34')],_0x5d7d0d[_0x307c('0x35')]);_0x104aa4['attributes']=_[_0x307c('0x38')](_0x5d7d0d[_0x307c('0x34')],qs[_0x307c('0x3a')](_0x4a7f36[_0x307c('0x35')][_0x307c('0x3a')]));_0x104aa4[_0x307c('0x39')]=_0x104aa4[_0x307c('0x39')]['length']?_0x104aa4[_0x307c('0x39')]:_0x5d7d0d[_0x307c('0x34')];if(_0x4a7f36[_0x307c('0x35')]['includeAll']){_0x104aa4[_0x307c('0x44')]=[{'all':!![]}];}_0x104aa4=_[_0x307c('0x41')]({},_0x104aa4,_0x4a7f36[_0x307c('0x42')]);return db[_0x307c('0x2f')]['find'](_0x104aa4)[_0x307c('0x26')](handleEntityNotFound(_0x492f8d,null))['then'](respondWithResult(_0x492f8d,null))['catch'](handleError(_0x492f8d,null));};exports['create']=function(_0x26081b,_0x9820dc){return db[_0x307c('0x2f')][_0x307c('0x49')](_0x26081b['body'],{})[_0x307c('0x26')](function(_0x42263f){var _0x398ef5=_0x26081b[_0x307c('0x4a')][_0x307c('0x28')]({'plain':!![]});if(!_0x398ef5)throw new Error(_0x307c('0x4b'));if(_0x398ef5[_0x307c('0x4c')]==='user'){var _0x50876a=_0x42263f[_0x307c('0x28')]({'plain':!![]});var _0x424a92=_0x307c('0x29');return db[_0x307c('0x4d')][_0x307c('0x4e')]({'where':{'name':_0x424a92,'userProfileId':_0x398ef5[_0x307c('0x4f')]},'raw':!![]})[_0x307c('0x26')](function(_0x58e3ff){if(_0x58e3ff&&_0x58e3ff['autoAssociation']===0x0){return db[_0x307c('0x50')][_0x307c('0x49')]({'name':_0x50876a[_0x307c('0x2c')],'resourceId':_0x50876a['id'],'type':_0x58e3ff[_0x307c('0x2c')],'sectionId':_0x58e3ff['id']},{})[_0x307c('0x26')](function(){return _0x42263f;});}else{return _0x42263f;}})['catch'](function(_0x4792a7){logger['error'](_0x307c('0x51'),_0x4792a7);throw _0x4792a7;});}return _0x42263f;})[_0x307c('0x26')](respondWithResult(_0x9820dc,0xc9))['catch'](handleError(_0x9820dc,null));};exports[_0x307c('0x25')]=function(_0x1ce41a,_0x68b3ba){if(_0x1ce41a['body']['id']){delete _0x1ce41a['body']['id'];}return db['Tag'][_0x307c('0x4e')]({'where':{'id':_0x1ce41a[_0x307c('0x48')]['id']}})['then'](handleEntityNotFound(_0x68b3ba,null))['then'](saveUpdates(_0x1ce41a[_0x307c('0x52')],null))[_0x307c('0x26')](respondWithResult(_0x68b3ba,null))['catch'](handleError(_0x68b3ba,null));};exports[_0x307c('0x27')]=function(_0x383260,_0xd27876){return db[_0x307c('0x2f')]['find']({'where':{'id':_0x383260[_0x307c('0x48')]['id']}})[_0x307c('0x26')](handleEntityNotFound(_0xd27876,null))[_0x307c('0x26')](removeEntity(_0xd27876,null))[_0x307c('0x46')](handleError(_0xd27876,null));};
\ No newline at end of file
index ac9e9fc..4c38924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb33=['rimraf','../../config/environment','exports','define','Tag','tools_tags','lodash','util','../../config/logger','moment','request-promise','path'];(function(_0x17e686,_0xbeb954){var _0x4e4d47=function(_0x432479){while(--_0x432479){_0x17e686['push'](_0x17e686['shift']());}};_0x4e4d47(++_0xbeb954);}(_0xcb33,0xae));var _0x3cb3=function(_0x19d8b6,_0x49563a){_0x19d8b6=_0x19d8b6-0x0;var _0x405aef=_0xcb33[_0x19d8b6];return _0x405aef;};'use strict';var _=require(_0x3cb3('0x0'));var util=require(_0x3cb3('0x1'));var logger=require(_0x3cb3('0x2'))('api');var moment=require(_0x3cb3('0x3'));var BPromise=require('bluebird');var rp=require(_0x3cb3('0x4'));var fs=require('fs');var path=require(_0x3cb3('0x5'));var rimraf=require(_0x3cb3('0x6'));var config=require(_0x3cb3('0x7'));var attributes=require('./tag.attributes');module[_0x3cb3('0x8')]=function(_0x149e76,_0x1379f4){return _0x149e76[_0x3cb3('0x9')](_0x3cb3('0xa'),attributes,{'tableName':_0x3cb3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x48ae=['moment','request-promise','path','./tag.attributes','exports','define','tools_tags','../../config/logger','api'];(function(_0x307835,_0x52c3b8){var _0x51797a=function(_0x12f13f){while(--_0x12f13f){_0x307835['push'](_0x307835['shift']());}};_0x51797a(++_0x52c3b8);}(_0x48ae,0xdf));var _0xe48a=function(_0xa2812,_0x4d773d){_0xa2812=_0xa2812-0x0;var _0x2100e1=_0x48ae[_0xa2812];return _0x2100e1;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe48a('0x0'))(_0xe48a('0x1'));var moment=require(_0xe48a('0x2'));var BPromise=require('bluebird');var rp=require(_0xe48a('0x3'));var fs=require('fs');var path=require(_0xe48a('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe48a('0x5'));module[_0xe48a('0x6')]=function(_0x42392c,_0x1c9994){return _0x42392c[_0xe48a('0x7')]('Tag',attributes,{'tableName':_0xe48a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a7ffc0..18afc8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37f8=['catch','util','moment','bluebird','randomstring','../../mysqldb','client','http','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x13e300,_0x1bcb41){var _0x5a3eea=function(_0x2dfd2a){while(--_0x2dfd2a){_0x13e300['push'](_0x13e300['shift']());}};_0x5a3eea(++_0x1bcb41);}(_0x37f8,0xd2));var _0x837f=function(_0x34ee2b,_0xc30d08){_0x34ee2b=_0x34ee2b-0x0;var _0x514217=_0x37f8[_0x34ee2b];return _0x514217;};'use strict';var _=require('lodash');var util=require(_0x837f('0x0'));var moment=require(_0x837f('0x1'));var BPromise=require(_0x837f('0x2'));var rs=require(_0x837f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x837f('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x837f('0x5')][_0x837f('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x224ad2,_0x40270f,_0x4111cb){return new BPromise(function(_0x25bbcb,_0x12c732){return client[_0x837f('0x7')](_0x224ad2,_0x4111cb)[_0x837f('0x8')](function(_0x2f1dc7){logger[_0x837f('0x9')](_0x837f('0xa'),_0x40270f,_0x837f('0xb'));logger[_0x837f('0xc')](_0x837f('0xd'),_0x40270f,'request\x20sent',JSON[_0x837f('0xe')](_0x2f1dc7));if(_0x2f1dc7[_0x837f('0xf')]){if(_0x2f1dc7[_0x837f('0xf')][_0x837f('0x10')]===0x1f4){logger[_0x837f('0xf')]('Tag,\x20%s,\x20%s',_0x40270f,_0x2f1dc7['error'][_0x837f('0x11')]);return _0x12c732(_0x2f1dc7[_0x837f('0xf')][_0x837f('0x11')]);}logger[_0x837f('0xf')](_0x837f('0xa'),_0x40270f,_0x2f1dc7['error'][_0x837f('0x11')]);return _0x25bbcb(_0x2f1dc7[_0x837f('0xf')][_0x837f('0x11')]);}else{logger[_0x837f('0x9')](_0x837f('0xa'),_0x40270f,_0x837f('0xb'));_0x25bbcb(_0x2f1dc7['result'][_0x837f('0x11')]);}})[_0x837f('0x12')](function(_0x47bbe7){logger[_0x837f('0xf')](_0x837f('0xa'),_0x40270f,_0x47bbe7);_0x12c732(_0x47bbe7);});});}
\ No newline at end of file
+var _0x54f3=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','then','info','Tag,\x20%s,\x20%s','Tag,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','util'];(function(_0x466b80,_0x49fb2b){var _0x3804bd=function(_0x2dbb11){while(--_0x2dbb11){_0x466b80['push'](_0x466b80['shift']());}};_0x3804bd(++_0x49fb2b);}(_0x54f3,0x120));var _0x354f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x54f3[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x354f('0x0'));var moment=require(_0x354f('0x1'));var BPromise=require(_0x354f('0x2'));var rs=require(_0x354f('0x3'));var fs=require('fs');var Redis=require(_0x354f('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x354f('0x5'))(_0x354f('0x6'));var config=require(_0x354f('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x354f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x51cd16,_0x1da503,_0x4311ad){return new BPromise(function(_0x2f111a,_0x173e1d){return client['request'](_0x51cd16,_0x4311ad)[_0x354f('0x9')](function(_0x5d1e5d){logger[_0x354f('0xa')](_0x354f('0xb'),_0x1da503,'request\x20sent');logger['debug'](_0x354f('0xc'),_0x1da503,_0x354f('0xd'),JSON['stringify'](_0x5d1e5d));if(_0x5d1e5d[_0x354f('0xe')]){if(_0x5d1e5d[_0x354f('0xe')]['code']===0x1f4){logger[_0x354f('0xe')](_0x354f('0xb'),_0x1da503,_0x5d1e5d[_0x354f('0xe')][_0x354f('0xf')]);return _0x173e1d(_0x5d1e5d[_0x354f('0xe')][_0x354f('0xf')]);}logger[_0x354f('0xe')]('Tag,\x20%s,\x20%s',_0x1da503,_0x5d1e5d[_0x354f('0xe')][_0x354f('0xf')]);return _0x2f111a(_0x5d1e5d[_0x354f('0xe')]['message']);}else{logger[_0x354f('0xa')](_0x354f('0xb'),_0x1da503,_0x354f('0xd'));_0x2f111a(_0x5d1e5d['result']['message']);}})[_0x354f('0x10')](function(_0x1d7627){logger[_0x354f('0xe')](_0x354f('0xb'),_0x1da503,_0x1d7627);_0x173e1d(_0x1d7627);});});}
\ No newline at end of file
index 280ffbd..c1a01ac 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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'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(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/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 7a3e3ff..f8afa25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0xd79c88,_0xda32a9){var _0x4afb2a=function(_0x50ddca){while(--_0x50ddca){_0xd79c88['push'](_0xd79c88['shift']());}};_0x4afb2a(++_0xda32a9);}(_0xb10b,0x12a));var _0xbb10=function(_0x458eef,_0x551783){_0x458eef=_0x458eef-0x0;var _0x2fb384=_0xb10b[_0x458eef];return _0x2fb384;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
+var _0x757a=['exports','STRING'];(function(_0x200a5a,_0x367318){var _0x56da1c=function(_0x5f6f19){while(--_0x5f6f19){_0x200a5a['push'](_0x200a5a['shift']());}};_0x56da1c(++_0x367318);}(_0x757a,0xde));var _0xa757=function(_0x454661,_0x531af4){_0x454661=_0x454661-0x0;var _0x9a6704=_0x757a[_0x454661];return _0x9a6704;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 847f0e1..a96e7d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7fb=['findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queues','addQueues','removeQueues','remove','isArray','ids','Voice','Chat','Mail','Fax','Openchannel','Whatsapp','through','QueueId','TeamVoiceQueue','penalty','User','Queue','findOrCreate','emit','Queue:save','online','voicePause','UserVoiceQueueRt','format','SIP/%s','all','spread','Sms','removeAgents','Queue:remove','getAgents','hasOwnProperty','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./team.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','then','error','stack','name','send','index','map','Team','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','fields','length','create','user','get','role','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','destroy','sequelize','transaction','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','VoiceQueueId','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','Sequelize','MailQueueId','UserMailQueue','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','Teams'];(function(_0x48a983,_0x2a3b8a){var _0x110c1c=function(_0x3b2438){while(--_0x3b2438){_0x48a983['push'](_0x48a983['shift']());}};_0x110c1c(++_0x2a3b8a);}(_0xc7fb,0xc6));var _0xbc7f=function(_0x2aa2be,_0x10723a){_0x2aa2be=_0x2aa2be-0x0;var _0x1feb74=_0xc7fb[_0x2aa2be];return _0x1feb74;};'use strict';var emlformat=require(_0xbc7f('0x0'));var rimraf=require(_0xbc7f('0x1'));var zipdir=require(_0xbc7f('0x2'));var jsonpatch=require(_0xbc7f('0x3'));var rp=require(_0xbc7f('0x4'));var moment=require(_0xbc7f('0x5'));var BPromise=require(_0xbc7f('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xbc7f('0x7'));var sox=require(_0xbc7f('0x8'));var csv=require(_0xbc7f('0x9'));var ejs=require(_0xbc7f('0xa'));var fs=require('fs');var fs_extra=require(_0xbc7f('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xbc7f('0xc'));var jsforce=require(_0xbc7f('0xd'));var deskjs=require(_0xbc7f('0xe'));var toCsv=require(_0xbc7f('0x9'));var querystring=require(_0xbc7f('0xf'));var Papa=require(_0xbc7f('0x10'));var Redis=require(_0xbc7f('0x11'));var authService=require(_0xbc7f('0x12'));var qs=require(_0xbc7f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbc7f('0x14'));var logger=require(_0xbc7f('0x15'))(_0xbc7f('0x16'));var utils=require('../../config/utils');var config=require(_0xbc7f('0x17'));var licenseUtil=require(_0xbc7f('0x18'));var db=require(_0xbc7f('0x19'))['db'];config['redis']=_[_0xbc7f('0x1a')](config[_0xbc7f('0x1b')],{'host':_0xbc7f('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbc7f('0x1b')]));require(_0xbc7f('0x1d'))[_0xbc7f('0x1e')](socket);function respondWithStatusCode(_0x5909e2,_0x68a5a6){_0x68a5a6=_0x68a5a6||0xcc;return function(_0xb1d411){if(_0xb1d411){return _0x5909e2[_0xbc7f('0x1f')](_0x68a5a6);}return _0x5909e2[_0xbc7f('0x20')](_0x68a5a6)[_0xbc7f('0x21')]();};}function respondWithResult(_0x2059ed,_0x1032a1){_0x1032a1=_0x1032a1||0xc8;return function(_0x63cb65){if(_0x63cb65){return _0x2059ed[_0xbc7f('0x20')](_0x1032a1)[_0xbc7f('0x22')](_0x63cb65);}};}function respondWithFilteredResult(_0x21f43b,_0x1e01ba){return function(_0x4fbf37){if(_0x4fbf37){var _0x3cb7c4=typeof _0x1e01ba[_0xbc7f('0x23')]===_0xbc7f('0x24')&&typeof _0x1e01ba[_0xbc7f('0x25')]===_0xbc7f('0x24');var _0x546548=_0x4fbf37[_0xbc7f('0x26')];var _0x39e8a1=_0x3cb7c4?0x0:_0x1e01ba[_0xbc7f('0x23')];var _0x1b1567=_0x3cb7c4?_0x4fbf37[_0xbc7f('0x26')]:_0x1e01ba[_0xbc7f('0x23')]+_0x1e01ba[_0xbc7f('0x25')];var _0x3e8a09;if(_0x1b1567>=_0x546548){_0x1b1567=_0x546548;_0x3e8a09=0xc8;}else{_0x3e8a09=0xce;}_0x21f43b[_0xbc7f('0x20')](_0x3e8a09);return _0x21f43b['set'](_0xbc7f('0x27'),_0x39e8a1+'-'+_0x1b1567+'/'+_0x546548)[_0xbc7f('0x22')](_0x4fbf37);}return null;};}function patchUpdates(_0x5e3cab){return function(_0x128ad8){try{jsonpatch['apply'](_0x128ad8,_0x5e3cab,!![]);}catch(_0x5809a2){return BPromise[_0xbc7f('0x28')](_0x5809a2);}return _0x128ad8[_0xbc7f('0x29')]();};}function saveUpdates(_0xc58e6,_0x1e7960){return function(_0x161d1b){if(_0x161d1b){return _0x161d1b['update'](_0xc58e6)[_0xbc7f('0x2a')](function(_0x4e39dd){return _0x4e39dd;});}return null;};}function handleEntityNotFound(_0x484406,_0x586739){return function(_0x4187a2){if(!_0x4187a2){_0x484406[_0xbc7f('0x1f')](0x194);}return _0x4187a2;};}function handleError(_0x1d4b38,_0x162482){_0x162482=_0x162482||0x1f4;return function(_0x326ab8){logger[_0xbc7f('0x2b')](_0x326ab8[_0xbc7f('0x2c')]);if(_0x326ab8[_0xbc7f('0x2d')]){delete _0x326ab8[_0xbc7f('0x2d')];}_0x1d4b38[_0xbc7f('0x20')](_0x162482)[_0xbc7f('0x2e')](_0x326ab8);};}exports[_0xbc7f('0x2f')]=function(_0x5af674,_0x54ee75){var _0x3a6ade={},_0xda885b={},_0x44ff57={'count':0x0,'rows':[]};var _0x437655=_[_0xbc7f('0x30')](db[_0xbc7f('0x31')][_0xbc7f('0x32')],function(_0xb4a1db){return{'name':_0xb4a1db[_0xbc7f('0x33')],'type':_0xb4a1db[_0xbc7f('0x34')][_0xbc7f('0x35')]};});_0xda885b[_0xbc7f('0x36')]=_[_0xbc7f('0x30')](_0x437655,_0xbc7f('0x2d'));_0xda885b[_0xbc7f('0x37')]=_['keys'](_0x5af674['query']);_0xda885b[_0xbc7f('0x38')]=_[_0xbc7f('0x39')](_0xda885b[_0xbc7f('0x36')],_0xda885b[_0xbc7f('0x37')]);_0x3a6ade[_0xbc7f('0x3a')]=_[_0xbc7f('0x39')](_0xda885b[_0xbc7f('0x36')],qs['fields'](_0x5af674['query']['fields']));_0x3a6ade['attributes']=_0x3a6ade['attributes']['length']?_0x3a6ade[_0xbc7f('0x3a')]:_0xda885b[_0xbc7f('0x36')];if(!_0x5af674[_0xbc7f('0x37')]['hasOwnProperty']('nolimit')){_0x3a6ade[_0xbc7f('0x25')]=qs[_0xbc7f('0x25')](_0x5af674['query'][_0xbc7f('0x25')]);_0x3a6ade[_0xbc7f('0x23')]=qs['offset'](_0x5af674[_0xbc7f('0x37')]['offset']);}_0x3a6ade[_0xbc7f('0x3b')]=qs[_0xbc7f('0x3c')](_0x5af674[_0xbc7f('0x37')][_0xbc7f('0x3c')]);_0x3a6ade[_0xbc7f('0x3d')]=qs['filters'](_[_0xbc7f('0x3e')](_0x5af674['query'],_0xda885b[_0xbc7f('0x38')]),_0x437655);if(_0x5af674[_0xbc7f('0x37')][_0xbc7f('0x3f')]){_0x3a6ade[_0xbc7f('0x3d')]=_[_0xbc7f('0x40')](_0x3a6ade[_0xbc7f('0x3d')],{'$or':_[_0xbc7f('0x30')](_0x437655,function(_0x4f229e){if(_0x4f229e['type']!==_0xbc7f('0x41')){var _0x4c8545={};_0x4c8545[_0x4f229e['name']]={'$like':'%'+_0x5af674[_0xbc7f('0x37')][_0xbc7f('0x3f')]+'%'};return _0x4c8545;}})});}_0x3a6ade=_[_0xbc7f('0x40')]({},_0x3a6ade,_0x5af674[_0xbc7f('0x42')]);var _0x3b99a9={'where':_0x3a6ade[_0xbc7f('0x3d')]};return db['Team'][_0xbc7f('0x26')](_0x3b99a9)[_0xbc7f('0x2a')](function(_0x3e2d78){_0x44ff57[_0xbc7f('0x26')]=_0x3e2d78;if(_0x5af674[_0xbc7f('0x37')][_0xbc7f('0x43')]){_0x3a6ade[_0xbc7f('0x44')]=[{'all':!![]}];}return db[_0xbc7f('0x31')][_0xbc7f('0x45')](_0x3a6ade);})[_0xbc7f('0x2a')](function(_0x7c7ad9){_0x44ff57[_0xbc7f('0x46')]=_0x7c7ad9;return _0x44ff57;})[_0xbc7f('0x2a')](respondWithFilteredResult(_0x54ee75,_0x3a6ade))[_0xbc7f('0x47')](handleError(_0x54ee75,null));};exports[_0xbc7f('0x48')]=function(_0x17c325,_0x24cc49){var _0x4d2f05={'raw':![],'where':{'id':_0x17c325['params']['id']}},_0x294f32={};_0x294f32[_0xbc7f('0x36')]=_[_0xbc7f('0x49')](db[_0xbc7f('0x31')][_0xbc7f('0x32')]);_0x294f32['query']=_[_0xbc7f('0x49')](_0x17c325[_0xbc7f('0x37')]);_0x294f32[_0xbc7f('0x38')]=_[_0xbc7f('0x39')](_0x294f32[_0xbc7f('0x36')],_0x294f32[_0xbc7f('0x37')]);_0x4d2f05[_0xbc7f('0x3a')]=_[_0xbc7f('0x39')](_0x294f32[_0xbc7f('0x36')],qs[_0xbc7f('0x4a')](_0x17c325['query'][_0xbc7f('0x4a')]));_0x4d2f05[_0xbc7f('0x3a')]=_0x4d2f05[_0xbc7f('0x3a')][_0xbc7f('0x4b')]?_0x4d2f05[_0xbc7f('0x3a')]:_0x294f32['model'];if(_0x17c325[_0xbc7f('0x37')][_0xbc7f('0x43')]){_0x4d2f05[_0xbc7f('0x44')]=[{'all':!![]}];}_0x4d2f05=_[_0xbc7f('0x40')]({},_0x4d2f05,_0x17c325['options']);return db[_0xbc7f('0x31')]['find'](_0x4d2f05)[_0xbc7f('0x2a')](handleEntityNotFound(_0x24cc49,null))[_0xbc7f('0x2a')](respondWithResult(_0x24cc49,null))[_0xbc7f('0x47')](handleError(_0x24cc49,null));};exports[_0xbc7f('0x4c')]=function(_0x4cbca3,_0x3db620){return db[_0xbc7f('0x31')][_0xbc7f('0x4c')](_0x4cbca3['body'],{})[_0xbc7f('0x2a')](function(_0x5501ea){var _0x1e0b3f=_0x4cbca3[_0xbc7f('0x4d')][_0xbc7f('0x4e')]({'plain':!![]});if(!_0x1e0b3f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1e0b3f[_0xbc7f('0x4f')]===_0xbc7f('0x4d')){var _0x127bf1=_0x5501ea[_0xbc7f('0x4e')]({'plain':!![]});var _0x15b69f='Teams';return db['UserProfileSection'][_0xbc7f('0x50')]({'where':{'name':_0x15b69f,'userProfileId':_0x1e0b3f[_0xbc7f('0x51')]},'raw':!![]})['then'](function(_0x82033a){if(_0x82033a&&_0x82033a[_0xbc7f('0x52')]===0x0){return db[_0xbc7f('0x53')][_0xbc7f('0x4c')]({'name':_0x127bf1['name'],'resourceId':_0x127bf1['id'],'type':_0x82033a['name'],'sectionId':_0x82033a['id']},{})['then'](function(){return _0x5501ea;});}else{return _0x5501ea;}})[_0xbc7f('0x47')](function(_0x4b222a){logger['error'](_0xbc7f('0x54'),_0x4b222a);throw _0x4b222a;});}return _0x5501ea;})[_0xbc7f('0x2a')](respondWithResult(_0x3db620,0xc9))['catch'](handleError(_0x3db620,null));};exports[_0xbc7f('0x55')]=function(_0x15365f,_0x39c748){if(_0x15365f[_0xbc7f('0x56')]['id']){delete _0x15365f[_0xbc7f('0x56')]['id'];}return db['Team'][_0xbc7f('0x50')]({'where':{'id':_0x15365f[_0xbc7f('0x57')]['id']}})[_0xbc7f('0x2a')](handleEntityNotFound(_0x39c748,null))['then'](saveUpdates(_0x15365f[_0xbc7f('0x56')],null))['then'](respondWithResult(_0x39c748,null))[_0xbc7f('0x47')](handleError(_0x39c748,null));};exports[_0xbc7f('0x58')]=function(_0x2868e6,_0x4cdd98){var _0x549ba9=_0x2868e6[_0xbc7f('0x57')]['id'];var _0x4d5695=[];return db[_0xbc7f('0x59')][_0xbc7f('0x5a')](function(_0x1e87fd){var _0x10be57='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x549ba9;return db['sequelize'][_0xbc7f('0x37')](_0x10be57,{'type':db['Sequelize'][_0xbc7f('0x5b')][_0xbc7f('0x5c')],'raw':!![],'transaction':_0x1e87fd})['then'](function(_0xf426b7){_0x4d5695=_['map'](_0xf426b7,function(_0x213719){return Number(_0x213719[_0xbc7f('0x5d')]);});})['then'](function(){var _0x591c84=_0xbc7f('0x5e')+_0x549ba9;return db['sequelize'][_0xbc7f('0x37')](_0x591c84,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(_0x349f32){var _0x5275fd=_[_0xbc7f('0x30')](_0x349f32,function(_0x5561b2){return Number(_0x5561b2[_0xbc7f('0x5f')]);});return db[_0xbc7f('0x60')][_0xbc7f('0x58')]({'where':{'UserId':{'$in':_0x4d5695},'VoiceQueueId':{'$in':_0x5275fd}},'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(){var _0x56690a=_0xbc7f('0x61')+_0x549ba9;return db[_0xbc7f('0x59')]['query'](_0x56690a,{'type':db[_0xbc7f('0x62')][_0xbc7f('0x5b')][_0xbc7f('0x5c')],'raw':!![],'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(_0x117858){var _0x3d634f=_[_0xbc7f('0x30')](_0x117858,function(_0x2357a9){return Number(_0x2357a9[_0xbc7f('0x63')]);});return db[_0xbc7f('0x64')][_0xbc7f('0x58')]({'where':{'UserId':{'$in':_0x4d5695},'MailQueueId':{'$in':_0x3d634f}},'transaction':_0x1e87fd});})['then'](function(){var _0x3aa9bf='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x549ba9;return db[_0xbc7f('0x59')][_0xbc7f('0x37')](_0x3aa9bf,{'type':db['Sequelize'][_0xbc7f('0x5b')][_0xbc7f('0x5c')],'raw':!![],'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(_0x5d2ee2){var _0x58f45f=_[_0xbc7f('0x30')](_0x5d2ee2,function(_0xc05748){return Number(_0xc05748[_0xbc7f('0x65')]);});return db['UserSmsQueue']['destroy']({'where':{'UserId':{'$in':_0x4d5695},'SmsQueueId':{'$in':_0x58f45f}},'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(){var _0x11efd6=_0xbc7f('0x66')+_0x549ba9;return db['sequelize'][_0xbc7f('0x37')](_0x11efd6,{'type':db[_0xbc7f('0x62')][_0xbc7f('0x5b')][_0xbc7f('0x5c')],'raw':!![],'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(_0x22ae98){var _0x50f8c9=_['map'](_0x22ae98,function(_0x2ac5af){return Number(_0x2ac5af['ChatQueueId']);});return db['UserChatQueue'][_0xbc7f('0x58')]({'where':{'UserId':{'$in':_0x4d5695},'ChatQueueId':{'$in':_0x50f8c9}},'transaction':_0x1e87fd});})['then'](function(){var _0x527c4d=_0xbc7f('0x67')+_0x549ba9;return db[_0xbc7f('0x59')][_0xbc7f('0x37')](_0x527c4d,{'type':db[_0xbc7f('0x62')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x1e87fd});})['then'](function(_0x5ed16e){var _0x54ee67=_['map'](_0x5ed16e,function(_0xbcd7e){return Number(_0xbcd7e[_0xbc7f('0x68')]);});return db[_0xbc7f('0x69')][_0xbc7f('0x58')]({'where':{'UserId':{'$in':_0x4d5695},'FaxQueueId':{'$in':_0x54ee67}},'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(){var _0x569d6d=_0xbc7f('0x6a')+_0x549ba9;return db['sequelize'][_0xbc7f('0x37')](_0x569d6d,{'type':db[_0xbc7f('0x62')]['QueryTypes'][_0xbc7f('0x5c')],'raw':!![],'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(_0x328882){var _0x4e4121=_[_0xbc7f('0x30')](_0x328882,function(_0x2b0f54){return Number(_0x2b0f54[_0xbc7f('0x6b')]);});return db[_0xbc7f('0x6c')][_0xbc7f('0x58')]({'where':{'UserId':{'$in':_0x4d5695},'OpenchannelQueueId':{'$in':_0x4e4121}},'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(){var _0x4d6f7d=_0xbc7f('0x6d')+_0x549ba9;return db[_0xbc7f('0x59')][_0xbc7f('0x37')](_0x4d6f7d,{'type':db['Sequelize']['QueryTypes'][_0xbc7f('0x5c')],'raw':!![],'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(_0x4951a9){var _0x376000=_['map'](_0x4951a9,function(_0x6d326b){return Number(_0x6d326b[_0xbc7f('0x6e')]);});return db[_0xbc7f('0x6f')][_0xbc7f('0x58')]({'where':{'UserId':{'$in':_0x4d5695},'WhatsappQueueId':{'$in':_0x376000}},'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(){return db[_0xbc7f('0x70')]['find']({'where':{'TeamId':_0x549ba9}});})[_0xbc7f('0x2a')](function(_0x370715){if(_0x370715===null){return;}return db[_0xbc7f('0x71')][_0xbc7f('0x58')]({'where':{'UserId':{'$in':_0x4d5695},'VoicePrefixId':_0x370715[_0xbc7f('0x72')]},'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(){return db['Team'][_0xbc7f('0x58')]({'where':{'id':_0x549ba9},'cascade':!![],'transaction':_0x1e87fd});})[_0xbc7f('0x2a')](function(_0x13cd2f){if(_0x13cd2f===0x0){_0x4cdd98[_0xbc7f('0x1f')](0x194);}else{return db[_0xbc7f('0x53')][_0xbc7f('0x58')]({'where':{'type':_0xbc7f('0x73'),'resourceId':_0x549ba9},'cascade':!![],'transaction':_0x1e87fd})[_0xbc7f('0x2a')](function(){_0x4cdd98[_0xbc7f('0x20')](0xcc)['end']();});}})['catch'](function(_0x29bbe5){_0x4cdd98[_0xbc7f('0x20')](0x1f4)[_0xbc7f('0x2e')](_0x29bbe5);});});};exports['getQueues']=function(_0x31a0af,_0x14c668,_0x24820d){return db[_0xbc7f('0x31')][_0xbc7f('0x74')]({'where':{'id':_0x31a0af[_0xbc7f('0x57')]['id']}})[_0xbc7f('0x2a')](handleEntityNotFound(_0x14c668,null))[_0xbc7f('0x2a')](function(_0x380c76){if(!_0x31a0af[_0xbc7f('0x37')][_0xbc7f('0x75')]||!utils[_0xbc7f('0x76')](_0x31a0af['query'][_0xbc7f('0x75')])){throw new db[(_0xbc7f('0x62'))][(_0xbc7f('0x77'))](_0xbc7f('0x78'));}var _0x4dd37f={};var _0x4a0452={};_0x4a0452['model']=_['keys'](db[_[_0xbc7f('0x79')](_0x31a0af[_0xbc7f('0x37')][_0xbc7f('0x75')][_0xbc7f('0x7a')]())+'Queue'][_0xbc7f('0x32')]);_0x4a0452[_0xbc7f('0x37')]=_[_0xbc7f('0x49')](_0x31a0af['query']);_0x4a0452[_0xbc7f('0x38')]=_[_0xbc7f('0x39')](_0x4a0452[_0xbc7f('0x36')],_0x4a0452[_0xbc7f('0x37')]);_0x4dd37f[_0xbc7f('0x3a')]=_['intersection'](_0x4a0452[_0xbc7f('0x36')],qs[_0xbc7f('0x4a')](_0x31a0af['query']['fields']));_0x4dd37f[_0xbc7f('0x3a')]=_0x4dd37f['attributes']['length']?_0x4dd37f['attributes']:_0x4a0452['model'];_0x4dd37f[_0xbc7f('0x25')]=qs[_0xbc7f('0x25')](_0x31a0af['query'][_0xbc7f('0x25')]);_0x4dd37f[_0xbc7f('0x23')]=qs[_0xbc7f('0x23')](_0x31a0af['query'][_0xbc7f('0x23')]);_0x4dd37f['order']=qs['sort'](_0x31a0af[_0xbc7f('0x37')][_0xbc7f('0x3c')]);_0x4dd37f[_0xbc7f('0x3d')]=qs[_0xbc7f('0x38')](_[_0xbc7f('0x3e')](_0x31a0af[_0xbc7f('0x37')],_0x4a0452[_0xbc7f('0x38')]));_0x4dd37f=_[_0xbc7f('0x40')]({},_0x4dd37f,_0x31a0af[_0xbc7f('0x42')]);return _0x380c76[_0xbc7f('0x4e')+_[_0xbc7f('0x79')](_0x31a0af[_0xbc7f('0x37')][_0xbc7f('0x75')]['toLowerCase']())+_0xbc7f('0x7b')](_0x4dd37f);})[_0xbc7f('0x2a')](respondWithResult(_0x14c668,null))[_0xbc7f('0x47')](handleError(_0x14c668,null));};exports[_0xbc7f('0x7c')]=function(_0x422e37,_0x4193fe,_0xa9009d){return db[_0xbc7f('0x31')]['findOne']({'where':{'id':_0x422e37[_0xbc7f('0x57')]['id']}})[_0xbc7f('0x2a')](function(_0x30cdd8){if(_0x30cdd8){if(!_0x422e37[_0xbc7f('0x56')][_0xbc7f('0x75')]||!utils[_0xbc7f('0x76')](_0x422e37['body'][_0xbc7f('0x75')])){throw new db[(_0xbc7f('0x62'))][(_0xbc7f('0x77'))]('Unknown\x20channel');}return _0x30cdd8['add'+_[_0xbc7f('0x79')](_0x422e37[_0xbc7f('0x56')][_0xbc7f('0x75')][_0xbc7f('0x7a')]())+_0xbc7f('0x7b')](_0x422e37[_0xbc7f('0x56')]['ids']);}return null;})[_0xbc7f('0x2a')](handleEntityNotFound(_0x4193fe,null))[_0xbc7f('0x2a')](respondWithStatusCode(_0x4193fe,null))[_0xbc7f('0x47')](handleError(_0x4193fe,null));};exports[_0xbc7f('0x7d')]=function(_0x46de9f,_0x1a239f,_0x462d1b){return db['Team'][_0xbc7f('0x74')]({'where':{'id':_0x46de9f[_0xbc7f('0x57')]['id']}})[_0xbc7f('0x2a')](function(_0x510d16){if(_0x510d16){if(!_0x46de9f['query'][_0xbc7f('0x75')]||!utils[_0xbc7f('0x76')](_0x46de9f['query'][_0xbc7f('0x75')])){throw new db['Sequelize'][(_0xbc7f('0x77'))](_0xbc7f('0x78'));}return _0x510d16[_0xbc7f('0x7e')+_[_0xbc7f('0x79')](_0x46de9f[_0xbc7f('0x37')][_0xbc7f('0x75')][_0xbc7f('0x7a')]())+'Queues'](_0x46de9f[_0xbc7f('0x37')]['ids']);}return null;})[_0xbc7f('0x2a')](handleEntityNotFound(_0x1a239f,null))['then'](respondWithStatusCode(_0x1a239f,null))[_0xbc7f('0x47')](handleError(_0x1a239f,null));};exports['addAgents']=function(_0x49fedd,_0x387568){var _0xddd7d9=_[_0xbc7f('0x7f')](_0x49fedd['body']['ids'])?_0x49fedd[_0xbc7f('0x56')][_0xbc7f('0x80')]:[_0x49fedd[_0xbc7f('0x56')][_0xbc7f('0x80')]];var _0x173598=_0x49fedd[_0xbc7f('0x57')]['id'];return db[_0xbc7f('0x31')][_0xbc7f('0x50')]({'where':{'id':_0x173598}})[_0xbc7f('0x2a')](handleEntityNotFound(_0x387568,null))['then'](function(_0x487fd2){if(_0x487fd2){var _0x11a47c=[_0xbc7f('0x81'),_0xbc7f('0x82'),_0xbc7f('0x83'),'Sms',_0xbc7f('0x84'),_0xbc7f('0x85'),_0xbc7f('0x86')];return db['sequelize'][_0xbc7f('0x5a')](function(_0x1575d7){var _0x223535=_['map'](_0x11a47c,function(_0x5a215c){var _0x523081={'attributes':['id',_0xbc7f('0x2d')]};if(_0x5a215c===_0xbc7f('0x81')){_0x523081[_0xbc7f('0x87')]={'attributes':['penalty']};}return _0x487fd2[_0xbc7f('0x4e')+_0x5a215c+'Queues'](_0x523081)[_0xbc7f('0x2a')](function(_0x4bdba6){var _0xdf10d=_['map'](_0x4bdba6,function(_0x20caf3){var _0x4c3102=_[_0xbc7f('0x30')](_0xddd7d9,function(_0x37440a){var _0x4a4465={'where':{'UserId':_0x37440a,[_0x5a215c+_0xbc7f('0x88')]:_0x20caf3['id']},'transaction':_0x1575d7};if(_0x5a215c==='Voice'){_0x4a4465[_0xbc7f('0x1a')]={'penalty':_0x20caf3[_0xbc7f('0x89')][_0xbc7f('0x8a')]};}return db[_0xbc7f('0x8b')+_0x5a215c+_0xbc7f('0x8c')][_0xbc7f('0x8d')](_0x4a4465)[_0xbc7f('0x2a')](function(){socket[_0xbc7f('0x8e')](_0xbc7f('0x4d')+_0x5a215c+_0xbc7f('0x8f'),{'UserId':_0x37440a,[_0x5a215c+_0xbc7f('0x88')]:_0x20caf3['id']});if(_0x5a215c!==_0xbc7f('0x81')){return;}return db[_0xbc7f('0x8b')][_0xbc7f('0x45')]({'where':{'id':_0xddd7d9,'online':0x1},'attributes':['id',_0xbc7f('0x2d'),_0xbc7f('0x90'),_0xbc7f('0x91'),'interface'],'raw':!![]})[_0xbc7f('0x2a')](function(_0x2ca358){var _0x35a3cb=_[_0xbc7f('0x30')](_0x2ca358,function(_0x4ad4d1){return db[_0xbc7f('0x92')]['upsert']({'membername':_0x4ad4d1[_0xbc7f('0x2d')],'UserId':_0x4ad4d1['id'],'queue_name':_0x20caf3['name'],'VoiceQueueId':_0x20caf3['id'],'interface':_['isNil'](_0x4ad4d1['interface'])?util[_0xbc7f('0x93')](_0xbc7f('0x94'),_0x4ad4d1[_0xbc7f('0x2d')]):_0x4ad4d1['interface'],'paused':_0x4ad4d1[_0xbc7f('0x91')]||![],'penalty':_0x20caf3[_0xbc7f('0x89')][_0xbc7f('0x8a')]},{'transaction':_0x1575d7});});return Promise[_0xbc7f('0x95')](_0x35a3cb);});});});return Promise[_0xbc7f('0x95')](_0x4c3102);});return Promise[_0xbc7f('0x95')](_0xdf10d);})[_0xbc7f('0x2a')](function(){return db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x173598}})[_0xbc7f('0x2a')](function(_0x17987c){if(_0x17987c){var _0x4cc39e=_[_0xbc7f('0x30')](_0xddd7d9,function(_0x136698){db[_0xbc7f('0x71')]['upsert']({'UserId':_0x136698,'VoicePrefixId':_0x17987c['VoicePrefixId']});});return Promise[_0xbc7f('0x95')](_0x4cc39e);}});});});return Promise[_0xbc7f('0x95')](_0x223535)[_0xbc7f('0x2a')](function(){return _0x487fd2['addAgents'](_0xddd7d9,{'transaction':_0x1575d7})[_0xbc7f('0x96')](function(_0x289ac6){return _0x289ac6;});});});}})[_0xbc7f('0x2a')](respondWithResult(_0x387568,null))[_0xbc7f('0x47')](handleError(_0x387568,null));};exports['removeAgents']=function(_0x45654c,_0x5287cd){var _0xe289d8=_[_0xbc7f('0x7f')](_0x45654c[_0xbc7f('0x37')][_0xbc7f('0x80')])?_0x45654c[_0xbc7f('0x37')]['ids']:[_0x45654c['query'][_0xbc7f('0x80')]];var _0x2cd75d=_0x45654c[_0xbc7f('0x57')]['id'];return db[_0xbc7f('0x31')][_0xbc7f('0x50')]({'where':{'id':_0x2cd75d}})[_0xbc7f('0x2a')](handleEntityNotFound(_0x5287cd,null))['then'](function(_0x17b9ef){if(_0x17b9ef){var _0xe3bb90=['Voice',_0xbc7f('0x82'),_0xbc7f('0x83'),_0xbc7f('0x97'),'Fax',_0xbc7f('0x85'),_0xbc7f('0x86')];return db[_0xbc7f('0x59')][_0xbc7f('0x5a')](function(_0x5c4c26){var _0x352af2=_['map'](_0xe3bb90,function(_0x1f3592){var _0x562f5a={'attributes':['id',_0xbc7f('0x2d')]};return _0x17b9ef[_0xbc7f('0x4e')+_0x1f3592+'Queues'](_0x562f5a)[_0xbc7f('0x2a')](function(_0x106619){var _0x23403d=_['map'](_0x106619,function(_0x8da08b){return _0x8da08b[_0xbc7f('0x98')](_0xe289d8,{'transaction':_0x5c4c26})[_0xbc7f('0x2a')](function(){var _0x8b266e=_['map'](_0xe289d8,function(_0x32de60){socket[_0xbc7f('0x8e')]('user'+_0x1f3592+_0xbc7f('0x99'),{'UserId':Number(_0x32de60),[_0x1f3592+_0xbc7f('0x88')]:_0x8da08b['id']});if(_0x1f3592!==_0xbc7f('0x81')){return;}return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x8da08b['id'],'UserId':_0x32de60},'transaction':_0x5c4c26});});return Promise[_0xbc7f('0x95')](_0x8b266e);});});return Promise[_0xbc7f('0x95')](_0x23403d);});});return Promise[_0xbc7f('0x95')](_0x352af2)[_0xbc7f('0x2a')](function(){return _0x17b9ef[_0xbc7f('0x98')](_0xe289d8,{'transaction':_0x5c4c26});})[_0xbc7f('0x2a')](function(){return db[_0xbc7f('0x70')][_0xbc7f('0x74')]({'where':{'teamId':_0x2cd75d}})[_0xbc7f('0x2a')](function(_0x41b59a){if(_0x41b59a){var _0x1ed0b9=_[_0xbc7f('0x30')](_0xe289d8,function(_0x581ead){db[_0xbc7f('0x71')][_0xbc7f('0x58')]({'where':{'UserId':_0x581ead,'VoicePrefixId':_0x41b59a[_0xbc7f('0x72')]}});});return Promise[_0xbc7f('0x95')](_0x1ed0b9);}});});});}})[_0xbc7f('0x2a')](respondWithStatusCode(_0x5287cd,null))[_0xbc7f('0x47')](handleError(_0x5287cd,null));};exports[_0xbc7f('0x9a')]=function(_0x5ed270,_0x46edd4,_0x2aa259){var _0x39f496={};var _0x228ee3={};var _0x503764;var _0x30e4a1;return db[_0xbc7f('0x31')][_0xbc7f('0x74')]({'where':{'id':_0x5ed270['params']['id']}})[_0xbc7f('0x2a')](handleEntityNotFound(_0x46edd4,null))[_0xbc7f('0x2a')](function(_0x5b2f9d){if(_0x5b2f9d){_0x503764=_0x5b2f9d;_0x228ee3[_0xbc7f('0x36')]=_['keys'](db[_0xbc7f('0x8b')]['rawAttributes']);_0x228ee3[_0xbc7f('0x37')]=_['keys'](_0x5ed270['query']);_0x228ee3[_0xbc7f('0x38')]=_['intersection'](_0x228ee3['model'],_0x228ee3[_0xbc7f('0x37')]);_0x39f496['attributes']=_[_0xbc7f('0x39')](_0x228ee3[_0xbc7f('0x36')],qs[_0xbc7f('0x4a')](_0x5ed270[_0xbc7f('0x37')]['fields']));_0x39f496['attributes']=_0x39f496['attributes'][_0xbc7f('0x4b')]?_0x39f496[_0xbc7f('0x3a')]:_0x228ee3[_0xbc7f('0x36')];_0x39f496[_0xbc7f('0x3b')]=qs[_0xbc7f('0x3c')](_0x5ed270[_0xbc7f('0x37')][_0xbc7f('0x3c')]);_0x39f496[_0xbc7f('0x3d')]=qs[_0xbc7f('0x38')](_[_0xbc7f('0x3e')](_0x5ed270[_0xbc7f('0x37')],_0x228ee3[_0xbc7f('0x38')]));if(_0x5ed270[_0xbc7f('0x37')]['filter']){_0x39f496[_0xbc7f('0x3d')]=_['merge'](_0x39f496[_0xbc7f('0x3d')],{'$or':_[_0xbc7f('0x30')](_0x39f496[_0xbc7f('0x3a')],function(_0x142994){var _0x2d9b8a={};_0x2d9b8a[_0x142994]={'$like':'%'+_0x5ed270[_0xbc7f('0x37')][_0xbc7f('0x3f')]+'%'};return _0x2d9b8a;})});}_0x39f496=_[_0xbc7f('0x40')]({},_0x39f496,_0x5ed270['options']);return _0x503764['getAgents'](_0x39f496);}})[_0xbc7f('0x2a')](function(_0x5d4d9e){if(_0x5d4d9e){_0x30e4a1=_0x5d4d9e['length'];if(!_0x5ed270[_0xbc7f('0x37')][_0xbc7f('0x9b')](_0xbc7f('0x9c'))){_0x39f496[_0xbc7f('0x25')]=qs['limit'](_0x5ed270[_0xbc7f('0x37')][_0xbc7f('0x25')]);_0x39f496[_0xbc7f('0x23')]=qs[_0xbc7f('0x23')](_0x5ed270[_0xbc7f('0x37')]['offset']);}return _0x503764[_0xbc7f('0x9a')](_0x39f496);}})[_0xbc7f('0x2a')](function(_0x2ebf2c){if(_0x2ebf2c){return _0x2ebf2c?{'count':_0x30e4a1,'rows':_0x2ebf2c}:null;}})[_0xbc7f('0x2a')](respondWithResult(_0x46edd4,null))[_0xbc7f('0x47')](handleError(_0x46edd4,null));};
\ No newline at end of file
+var _0xef0f=['end','status','json','offset','undefined','limit','count','set','reject','save','destroy','then','get','UserProfileResource','sendStatus','error','name','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','merge','VIRTUAL','options','Team','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getQueues','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','order','where','Queues','addQueues','Sequelize','add','ids','findOne','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','sequelize','transaction','map','Voice','through','penalty','QueueId','User','Queue:save','online','voicePause','interface','UserVoiceQueueRt','isNil','format','SIP/%s','TeamVoiceQueue','all','addAgents','spread','removeAgents','emit','getAgents','filter','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','defaults','redis','localhost','socket.io-emitter','./team.socket','register'];(function(_0x22a929,_0x427ef1){var _0x1cb8ac=function(_0x213471){while(--_0x213471){_0x22a929['push'](_0x22a929['shift']());}};_0x1cb8ac(++_0x427ef1);}(_0xef0f,0x168));var _0xfef0=function(_0x282fee,_0x4202f5){_0x282fee=_0x282fee-0x0;var _0x113e3d=_0xef0f[_0x282fee];return _0x113e3d;};'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'];config['redis']=_[_0xfef0('0x1b')](config[_0xfef0('0x1c')],{'host':_0xfef0('0x1d'),'port':0x18eb});var socket=require(_0xfef0('0x1e'))(new Redis(config[_0xfef0('0x1c')]));require(_0xfef0('0x1f'))[_0xfef0('0x20')](socket);function respondWithStatusCode(_0x573ae7,_0x3d1f02){_0x3d1f02=_0x3d1f02||0xcc;return function(_0x554aaa){if(_0x554aaa){return _0x573ae7['sendStatus'](_0x3d1f02);}return _0x573ae7['status'](_0x3d1f02)[_0xfef0('0x21')]();};}function respondWithResult(_0x284b6d,_0x3510a7){_0x3510a7=_0x3510a7||0xc8;return function(_0x1bce2f){if(_0x1bce2f){return _0x284b6d[_0xfef0('0x22')](_0x3510a7)[_0xfef0('0x23')](_0x1bce2f);}};}function respondWithFilteredResult(_0x155833,_0x2887e6){return function(_0x581459){if(_0x581459){var _0xd60678=typeof _0x2887e6[_0xfef0('0x24')]===_0xfef0('0x25')&&typeof _0x2887e6[_0xfef0('0x26')]===_0xfef0('0x25');var _0x55912f=_0x581459[_0xfef0('0x27')];var _0x4e24de=_0xd60678?0x0:_0x2887e6[_0xfef0('0x24')];var _0x1a0aa0=_0xd60678?_0x581459[_0xfef0('0x27')]:_0x2887e6['offset']+_0x2887e6[_0xfef0('0x26')];var _0x4c304d;if(_0x1a0aa0>=_0x55912f){_0x1a0aa0=_0x55912f;_0x4c304d=0xc8;}else{_0x4c304d=0xce;}_0x155833[_0xfef0('0x22')](_0x4c304d);return _0x155833[_0xfef0('0x28')]('Content-Range',_0x4e24de+'-'+_0x1a0aa0+'/'+_0x55912f)['json'](_0x581459);}return null;};}function patchUpdates(_0x4b8b22){return function(_0x19fde8){try{jsonpatch['apply'](_0x19fde8,_0x4b8b22,!![]);}catch(_0x1f9970){return BPromise[_0xfef0('0x29')](_0x1f9970);}return _0x19fde8[_0xfef0('0x2a')]();};}function saveUpdates(_0x4483f2,_0x249fe4){return function(_0xd687ed){if(_0xd687ed){return _0xd687ed['update'](_0x4483f2)['then'](function(_0x316e20){return _0x316e20;});}return null;};}function removeEntity(_0x1ffaa4,_0x924f6e){return function(_0x34ca65){if(_0x34ca65){return _0x34ca65[_0xfef0('0x2b')]()[_0xfef0('0x2c')](function(){var _0x5df04f=_0x34ca65[_0xfef0('0x2d')]({'plain':!![]});var _0x391279='Teams';return db[_0xfef0('0x2e')][_0xfef0('0x2b')]({'where':{'type':_0x391279,'resourceId':_0x5df04f['id']}})[_0xfef0('0x2c')](function(){return _0x34ca65;});})[_0xfef0('0x2c')](function(){_0x1ffaa4[_0xfef0('0x22')](0xcc)[_0xfef0('0x21')]();});}};}function handleEntityNotFound(_0x3e3c4c,_0x3e026a){return function(_0x26cb9a){if(!_0x26cb9a){_0x3e3c4c[_0xfef0('0x2f')](0x194);}return _0x26cb9a;};}function handleError(_0x3ee42f,_0x3ffea0){_0x3ffea0=_0x3ffea0||0x1f4;return function(_0x51af0f){logger[_0xfef0('0x30')](_0x51af0f['stack']);if(_0x51af0f['name']){delete _0x51af0f[_0xfef0('0x31')];}_0x3ee42f[_0xfef0('0x22')](_0x3ffea0)['send'](_0x51af0f);};}exports['index']=function(_0x5cf518,_0x4f65cd){var _0x4cce8a={},_0x417535={},_0x172d94={'count':0x0,'rows':[]};var _0x2fffae=_['map'](db['Team']['rawAttributes'],function(_0x1f8110){return{'name':_0x1f8110['fieldName'],'type':_0x1f8110[_0xfef0('0x32')][_0xfef0('0x33')]};});_0x417535[_0xfef0('0x34')]=_['map'](_0x2fffae,_0xfef0('0x31'));_0x417535['query']=_[_0xfef0('0x35')](_0x5cf518[_0xfef0('0x36')]);_0x417535[_0xfef0('0x37')]=_[_0xfef0('0x38')](_0x417535[_0xfef0('0x34')],_0x417535[_0xfef0('0x36')]);_0x4cce8a[_0xfef0('0x39')]=_[_0xfef0('0x38')](_0x417535['model'],qs[_0xfef0('0x3a')](_0x5cf518[_0xfef0('0x36')][_0xfef0('0x3a')]));_0x4cce8a[_0xfef0('0x39')]=_0x4cce8a[_0xfef0('0x39')][_0xfef0('0x3b')]?_0x4cce8a[_0xfef0('0x39')]:_0x417535[_0xfef0('0x34')];if(!_0x5cf518[_0xfef0('0x36')][_0xfef0('0x3c')](_0xfef0('0x3d'))){_0x4cce8a[_0xfef0('0x26')]=qs[_0xfef0('0x26')](_0x5cf518['query'][_0xfef0('0x26')]);_0x4cce8a['offset']=qs[_0xfef0('0x24')](_0x5cf518[_0xfef0('0x36')][_0xfef0('0x24')]);}_0x4cce8a['order']=qs[_0xfef0('0x3e')](_0x5cf518[_0xfef0('0x36')][_0xfef0('0x3e')]);_0x4cce8a['where']=qs[_0xfef0('0x37')](_[_0xfef0('0x3f')](_0x5cf518[_0xfef0('0x36')],_0x417535['filters']),_0x2fffae);if(_0x5cf518[_0xfef0('0x36')]['filter']){_0x4cce8a['where']=_[_0xfef0('0x40')](_0x4cce8a['where'],{'$or':_['map'](_0x2fffae,function(_0xbf6ddd){if(_0xbf6ddd[_0xfef0('0x32')]!==_0xfef0('0x41')){var _0x1a6593={};_0x1a6593[_0xbf6ddd[_0xfef0('0x31')]]={'$like':'%'+_0x5cf518[_0xfef0('0x36')]['filter']+'%'};return _0x1a6593;}})});}_0x4cce8a=_[_0xfef0('0x40')]({},_0x4cce8a,_0x5cf518[_0xfef0('0x42')]);var _0x5a9ed3={'where':_0x4cce8a['where']};return db[_0xfef0('0x43')]['count'](_0x5a9ed3)[_0xfef0('0x2c')](function(_0x22c940){_0x172d94[_0xfef0('0x27')]=_0x22c940;if(_0x5cf518[_0xfef0('0x36')][_0xfef0('0x44')]){_0x4cce8a[_0xfef0('0x45')]=[{'all':!![]}];}return db[_0xfef0('0x43')][_0xfef0('0x46')](_0x4cce8a);})['then'](function(_0x1813dc){_0x172d94['rows']=_0x1813dc;return _0x172d94;})['then'](respondWithFilteredResult(_0x4f65cd,_0x4cce8a))[_0xfef0('0x47')](handleError(_0x4f65cd,null));};exports[_0xfef0('0x48')]=function(_0x5bf416,_0x2af79f){var _0x5587a9={'raw':![],'where':{'id':_0x5bf416[_0xfef0('0x49')]['id']}},_0x39df7c={};_0x39df7c[_0xfef0('0x34')]=_[_0xfef0('0x35')](db['Team'][_0xfef0('0x4a')]);_0x39df7c[_0xfef0('0x36')]=_['keys'](_0x5bf416['query']);_0x39df7c[_0xfef0('0x37')]=_['intersection'](_0x39df7c[_0xfef0('0x34')],_0x39df7c[_0xfef0('0x36')]);_0x5587a9[_0xfef0('0x39')]=_[_0xfef0('0x38')](_0x39df7c[_0xfef0('0x34')],qs[_0xfef0('0x3a')](_0x5bf416['query'][_0xfef0('0x3a')]));_0x5587a9['attributes']=_0x5587a9['attributes'][_0xfef0('0x3b')]?_0x5587a9[_0xfef0('0x39')]:_0x39df7c[_0xfef0('0x34')];if(_0x5bf416['query'][_0xfef0('0x44')]){_0x5587a9['include']=[{'all':!![]}];}_0x5587a9=_['merge']({},_0x5587a9,_0x5bf416['options']);return db[_0xfef0('0x43')][_0xfef0('0x4b')](_0x5587a9)[_0xfef0('0x2c')](handleEntityNotFound(_0x2af79f,null))[_0xfef0('0x2c')](respondWithResult(_0x2af79f,null))[_0xfef0('0x47')](handleError(_0x2af79f,null));};exports[_0xfef0('0x4c')]=function(_0x1b78af,_0x3853bb){return db[_0xfef0('0x43')]['create'](_0x1b78af['body'],{})[_0xfef0('0x2c')](function(_0x18e5ba){var _0x34e9ed=_0x1b78af[_0xfef0('0x4d')][_0xfef0('0x2d')]({'plain':!![]});if(!_0x34e9ed)throw new Error(_0xfef0('0x4e'));if(_0x34e9ed[_0xfef0('0x4f')]===_0xfef0('0x4d')){var _0x5e989f=_0x18e5ba[_0xfef0('0x2d')]({'plain':!![]});var _0x19e449=_0xfef0('0x50');return db[_0xfef0('0x51')][_0xfef0('0x4b')]({'where':{'name':_0x19e449,'userProfileId':_0x34e9ed['userProfileId']},'raw':!![]})['then'](function(_0x523763){if(_0x523763&&_0x523763[_0xfef0('0x52')]===0x0){return db[_0xfef0('0x2e')][_0xfef0('0x4c')]({'name':_0x5e989f[_0xfef0('0x31')],'resourceId':_0x5e989f['id'],'type':_0x523763['name'],'sectionId':_0x523763['id']},{})[_0xfef0('0x2c')](function(){return _0x18e5ba;});}else{return _0x18e5ba;}})[_0xfef0('0x47')](function(_0x302908){logger[_0xfef0('0x30')](_0xfef0('0x53'),_0x302908);throw _0x302908;});}return _0x18e5ba;})[_0xfef0('0x2c')](respondWithResult(_0x3853bb,0xc9))[_0xfef0('0x47')](handleError(_0x3853bb,null));};exports['update']=function(_0x3458b0,_0x163255){if(_0x3458b0['body']['id']){delete _0x3458b0[_0xfef0('0x54')]['id'];}return db['Team'][_0xfef0('0x4b')]({'where':{'id':_0x3458b0[_0xfef0('0x49')]['id']}})['then'](handleEntityNotFound(_0x163255,null))[_0xfef0('0x2c')](saveUpdates(_0x3458b0['body'],null))['then'](respondWithResult(_0x163255,null))['catch'](handleError(_0x163255,null));};exports[_0xfef0('0x2b')]=function(_0x1db467,_0x455923){return db[_0xfef0('0x43')][_0xfef0('0x4b')]({'where':{'id':_0x1db467[_0xfef0('0x49')]['id']}})['then'](handleEntityNotFound(_0x455923,null))[_0xfef0('0x2c')](removeEntity(_0x455923,null))[_0xfef0('0x47')](handleError(_0x455923,null));};exports[_0xfef0('0x55')]=function(_0x45abb3,_0x21fd2b,_0x58d95e){return db[_0xfef0('0x43')]['findOne']({'where':{'id':_0x45abb3[_0xfef0('0x49')]['id']}})['then'](handleEntityNotFound(_0x21fd2b,null))[_0xfef0('0x2c')](function(_0x851e97){if(!_0x45abb3[_0xfef0('0x36')][_0xfef0('0x56')]||!utils[_0xfef0('0x57')](_0x45abb3['query'][_0xfef0('0x56')])){throw new db['Sequelize'][(_0xfef0('0x58'))](_0xfef0('0x59'));}var _0x4a4d36={};var _0x3a12c5={};_0x3a12c5[_0xfef0('0x34')]=_[_0xfef0('0x35')](db[_[_0xfef0('0x5a')](_0x45abb3[_0xfef0('0x36')][_0xfef0('0x56')][_0xfef0('0x5b')]())+_0xfef0('0x5c')][_0xfef0('0x4a')]);_0x3a12c5[_0xfef0('0x36')]=_[_0xfef0('0x35')](_0x45abb3[_0xfef0('0x36')]);_0x3a12c5['filters']=_[_0xfef0('0x38')](_0x3a12c5[_0xfef0('0x34')],_0x3a12c5[_0xfef0('0x36')]);_0x4a4d36[_0xfef0('0x39')]=_[_0xfef0('0x38')](_0x3a12c5['model'],qs[_0xfef0('0x3a')](_0x45abb3[_0xfef0('0x36')][_0xfef0('0x3a')]));_0x4a4d36[_0xfef0('0x39')]=_0x4a4d36[_0xfef0('0x39')][_0xfef0('0x3b')]?_0x4a4d36[_0xfef0('0x39')]:_0x3a12c5[_0xfef0('0x34')];_0x4a4d36[_0xfef0('0x26')]=qs[_0xfef0('0x26')](_0x45abb3['query'][_0xfef0('0x26')]);_0x4a4d36['offset']=qs[_0xfef0('0x24')](_0x45abb3[_0xfef0('0x36')]['offset']);_0x4a4d36[_0xfef0('0x5d')]=qs[_0xfef0('0x3e')](_0x45abb3[_0xfef0('0x36')][_0xfef0('0x3e')]);_0x4a4d36[_0xfef0('0x5e')]=qs['filters'](_[_0xfef0('0x3f')](_0x45abb3[_0xfef0('0x36')],_0x3a12c5[_0xfef0('0x37')]));_0x4a4d36=_['merge']({},_0x4a4d36,_0x45abb3[_0xfef0('0x42')]);return _0x851e97[_0xfef0('0x2d')+_[_0xfef0('0x5a')](_0x45abb3[_0xfef0('0x36')][_0xfef0('0x56')][_0xfef0('0x5b')]())+_0xfef0('0x5f')](_0x4a4d36);})['then'](respondWithResult(_0x21fd2b,null))[_0xfef0('0x47')](handleError(_0x21fd2b,null));};exports[_0xfef0('0x60')]=function(_0x3cd0c5,_0x350ca1,_0x317eda){return db[_0xfef0('0x43')]['findOne']({'where':{'id':_0x3cd0c5[_0xfef0('0x49')]['id']}})[_0xfef0('0x2c')](function(_0x100fc4){if(_0x100fc4){if(!_0x3cd0c5[_0xfef0('0x54')]['channel']||!utils[_0xfef0('0x57')](_0x3cd0c5[_0xfef0('0x54')]['channel'])){throw new db[(_0xfef0('0x61'))][(_0xfef0('0x58'))](_0xfef0('0x59'));}return _0x100fc4[_0xfef0('0x62')+_[_0xfef0('0x5a')](_0x3cd0c5['body']['channel']['toLowerCase']())+_0xfef0('0x5f')](_0x3cd0c5[_0xfef0('0x54')][_0xfef0('0x63')]);}return null;})['then'](handleEntityNotFound(_0x350ca1,null))[_0xfef0('0x2c')](respondWithStatusCode(_0x350ca1,null))['catch'](handleError(_0x350ca1,null));};exports['removeQueues']=function(_0x519efe,_0x2a92de,_0x1cf182){return db['Team'][_0xfef0('0x64')]({'where':{'id':_0x519efe[_0xfef0('0x49')]['id']}})[_0xfef0('0x2c')](function(_0x4a0460){if(_0x4a0460){if(!_0x519efe[_0xfef0('0x36')]['channel']||!utils['isValidChannel'](_0x519efe[_0xfef0('0x36')][_0xfef0('0x56')])){throw new db[(_0xfef0('0x61'))][(_0xfef0('0x58'))]('Unknown\x20channel');}return _0x4a0460['remove'+_['capitalize'](_0x519efe[_0xfef0('0x36')]['channel'][_0xfef0('0x5b')]())+_0xfef0('0x5f')](_0x519efe[_0xfef0('0x36')][_0xfef0('0x63')]);}return null;})[_0xfef0('0x2c')](handleEntityNotFound(_0x2a92de,null))['then'](respondWithStatusCode(_0x2a92de,null))[_0xfef0('0x47')](handleError(_0x2a92de,null));};exports['addAgents']=function(_0x5b9138,_0x2260e3){return db[_0xfef0('0x43')][_0xfef0('0x4b')]({'where':{'id':_0x5b9138[_0xfef0('0x49')]['id']}})['then'](handleEntityNotFound(_0x2260e3,null))['then'](function(_0x40ee27){if(_0x40ee27){var _0x3039a0=['Voice',_0xfef0('0x65'),_0xfef0('0x66'),_0xfef0('0x67'),_0xfef0('0x68'),_0xfef0('0x69'),_0xfef0('0x6a')];return db[_0xfef0('0x6b')][_0xfef0('0x6c')](function(_0x3e140f){var _0x52fe45=_[_0xfef0('0x6d')](_0x3039a0,function(_0x1fd223){var _0x3c1136={'attributes':['id',_0xfef0('0x31')]};if(_0x1fd223===_0xfef0('0x6e')){_0x3c1136[_0xfef0('0x6f')]={'attributes':[_0xfef0('0x70')]};}return _0x40ee27['get'+_0x1fd223+_0xfef0('0x5f')](_0x3c1136)[_0xfef0('0x2c')](function(_0x196d03){var _0x29d397=_[_0xfef0('0x6d')](_0x196d03,function(_0xa93548){var _0x2fb34a=_[_0xfef0('0x6d')](_0x5b9138[_0xfef0('0x54')][_0xfef0('0x63')],function(_0x1f2413){var _0x17c350={'where':{'UserId':_0x1f2413,[_0x1fd223+_0xfef0('0x71')]:_0xa93548['id']},'transaction':_0x3e140f};if(_0x1fd223==='Voice'){_0x17c350[_0xfef0('0x1b')]={'penalty':_0xa93548['TeamVoiceQueue']['penalty']};}return db[_0xfef0('0x72')+_0x1fd223+_0xfef0('0x5c')]['findOrCreate'](_0x17c350)[_0xfef0('0x2c')](function(){socket['emit']('user'+_0x1fd223+_0xfef0('0x73'),{'UserId':_0x1f2413,[_0x1fd223+_0xfef0('0x71')]:_0xa93548['id']});if(_0x1fd223!==_0xfef0('0x6e'))return;return db[_0xfef0('0x72')]['findAll']({'where':{'id':_0x5b9138[_0xfef0('0x54')][_0xfef0('0x63')],'online':0x1},'attributes':['id','name',_0xfef0('0x74'),_0xfef0('0x75'),_0xfef0('0x76')],'raw':!![]})['then'](function(_0x5842fc){var _0x3c6d6f=_['map'](_0x5842fc,function(_0x48f207){return db[_0xfef0('0x77')]['upsert']({'membername':_0x48f207[_0xfef0('0x31')],'UserId':_0x48f207['id'],'queue_name':_0xa93548[_0xfef0('0x31')],'VoiceQueueId':_0xa93548['id'],'interface':_[_0xfef0('0x78')](_0x48f207[_0xfef0('0x76')])?util[_0xfef0('0x79')](_0xfef0('0x7a'),_0x48f207[_0xfef0('0x31')]):_0x48f207[_0xfef0('0x76')],'paused':_0x48f207[_0xfef0('0x75')]||![],'penalty':_0xa93548[_0xfef0('0x7b')]['penalty']},{'transaction':_0x3e140f});});return Promise[_0xfef0('0x7c')](_0x3c6d6f);});});});return Promise['all'](_0x2fb34a);});return Promise['all'](_0x29d397);});});return Promise[_0xfef0('0x7c')](_0x52fe45)['then'](function(){return _0x40ee27[_0xfef0('0x7d')](_0x5b9138[_0xfef0('0x54')][_0xfef0('0x63')],{'transaction':_0x3e140f})[_0xfef0('0x7e')](function(_0x2e5aeb){return _0x2e5aeb;});});});}})[_0xfef0('0x2c')](respondWithResult(_0x2260e3,null))['catch'](handleError(_0x2260e3,null));};exports[_0xfef0('0x7f')]=function(_0x211577,_0x138be3){return db[_0xfef0('0x43')][_0xfef0('0x4b')]({'where':{'id':_0x211577[_0xfef0('0x49')]['id']}})[_0xfef0('0x2c')](handleEntityNotFound(_0x138be3,null))[_0xfef0('0x2c')](function(_0x52e982){if(_0x52e982){var _0x439909=[_0xfef0('0x6e'),'Chat',_0xfef0('0x66'),_0xfef0('0x67'),_0xfef0('0x68'),'Openchannel',_0xfef0('0x6a')];return db['sequelize'][_0xfef0('0x6c')](function(_0x5ec7d2){var _0x4ff342=_[_0xfef0('0x6d')](_0x439909,function(_0x51f79b){var _0x1fa881={'attributes':['id',_0xfef0('0x31')]};return _0x52e982[_0xfef0('0x2d')+_0x51f79b+_0xfef0('0x5f')](_0x1fa881)[_0xfef0('0x2c')](function(_0x306319){var _0x2a27fe=_[_0xfef0('0x6d')](_0x306319,function(_0x269d51){return _0x269d51[_0xfef0('0x7f')](_0x211577[_0xfef0('0x36')]['ids'],{'transaction':_0x5ec7d2})[_0xfef0('0x2c')](function(){var _0x48d36d=JSON['parse']('['+_0x211577[_0xfef0('0x36')]['ids']+']');var _0x3567d8=_['map'](_0x48d36d,function(_0x4eae82){socket[_0xfef0('0x80')]('user'+_0x51f79b+'Queue:remove',{'UserId':Number(_0x4eae82),[_0x51f79b+'QueueId']:_0x269d51['id']});if(_0x51f79b!==_0xfef0('0x6e'))return;return db[_0xfef0('0x77')][_0xfef0('0x2b')]({'where':{'VoiceQueueId':_0x269d51['id'],'UserId':_0x4eae82},'transaction':_0x5ec7d2});});return Promise[_0xfef0('0x7c')](_0x3567d8);});});return Promise['all'](_0x2a27fe);});});return Promise[_0xfef0('0x7c')](_0x4ff342)[_0xfef0('0x2c')](function(){return _0x52e982[_0xfef0('0x7f')](_0x211577[_0xfef0('0x36')][_0xfef0('0x63')],{'transaction':_0x5ec7d2});});});}})['then'](respondWithStatusCode(_0x138be3,null))['catch'](handleError(_0x138be3,null));};exports[_0xfef0('0x81')]=function(_0x1e595c,_0x5ab4ce,_0x2780ba){var _0x359b24={};var _0x3be21b={};var _0x10ff58;var _0x69217d;return db[_0xfef0('0x43')][_0xfef0('0x64')]({'where':{'id':_0x1e595c[_0xfef0('0x49')]['id']}})['then'](handleEntityNotFound(_0x5ab4ce,null))['then'](function(_0x3e267c){if(_0x3e267c){_0x10ff58=_0x3e267c;_0x3be21b[_0xfef0('0x34')]=_[_0xfef0('0x35')](db[_0xfef0('0x72')][_0xfef0('0x4a')]);_0x3be21b[_0xfef0('0x36')]=_[_0xfef0('0x35')](_0x1e595c[_0xfef0('0x36')]);_0x3be21b['filters']=_['intersection'](_0x3be21b[_0xfef0('0x34')],_0x3be21b[_0xfef0('0x36')]);_0x359b24[_0xfef0('0x39')]=_[_0xfef0('0x38')](_0x3be21b[_0xfef0('0x34')],qs[_0xfef0('0x3a')](_0x1e595c['query'][_0xfef0('0x3a')]));_0x359b24[_0xfef0('0x39')]=_0x359b24['attributes'][_0xfef0('0x3b')]?_0x359b24[_0xfef0('0x39')]:_0x3be21b[_0xfef0('0x34')];_0x359b24[_0xfef0('0x5d')]=qs[_0xfef0('0x3e')](_0x1e595c[_0xfef0('0x36')]['sort']);_0x359b24['where']=qs[_0xfef0('0x37')](_[_0xfef0('0x3f')](_0x1e595c[_0xfef0('0x36')],_0x3be21b[_0xfef0('0x37')]));if(_0x1e595c[_0xfef0('0x36')][_0xfef0('0x82')]){_0x359b24['where']=_[_0xfef0('0x40')](_0x359b24['where'],{'$or':_[_0xfef0('0x6d')](_0x359b24['attributes'],function(_0x22f544){var _0x8826ff={};_0x8826ff[_0x22f544]={'$like':'%'+_0x1e595c['query'][_0xfef0('0x82')]+'%'};return _0x8826ff;})});}_0x359b24=_[_0xfef0('0x40')]({},_0x359b24,_0x1e595c[_0xfef0('0x42')]);return _0x10ff58['getAgents'](_0x359b24);}})['then'](function(_0x57083a){if(_0x57083a){_0x69217d=_0x57083a[_0xfef0('0x3b')];if(!_0x1e595c['query'][_0xfef0('0x3c')](_0xfef0('0x3d'))){_0x359b24['limit']=qs[_0xfef0('0x26')](_0x1e595c['query'][_0xfef0('0x26')]);_0x359b24[_0xfef0('0x24')]=qs[_0xfef0('0x24')](_0x1e595c[_0xfef0('0x36')][_0xfef0('0x24')]);}return _0x10ff58[_0xfef0('0x81')](_0x359b24);}})[_0xfef0('0x2c')](function(_0x53ecba){if(_0x53ecba){return _0x53ecba?{'count':_0x69217d,'rows':_0x53ecba}:null;}})[_0xfef0('0x2c')](respondWithResult(_0x5ab4ce,null))[_0xfef0('0x47')](handleError(_0x5ab4ce,null));};
\ No newline at end of file
index fe4fc04..a59852e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26f5=['events','../../mysqldb','Team','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x368bd1,_0x1d6fae){var _0x3b01cb=function(_0x37db57){while(--_0x37db57){_0x368bd1['push'](_0x368bd1['shift']());}};_0x3b01cb(++_0x1d6fae);}(_0x26f5,0x1d9));var _0x526f=function(_0x51846c,_0x1eaa3d){_0x51846c=_0x51846c-0x0;var _0x4a83c5=_0x26f5[_0x51846c];return _0x4a83c5;};'use strict';var EventEmitter=require(_0x526f('0x0'));var Team=require(_0x526f('0x1'))['db'][_0x526f('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x526f('0x3')](0x0);var events={'afterCreate':_0x526f('0x4'),'afterUpdate':_0x526f('0x5'),'afterDestroy':_0x526f('0x6')};function emitEvent(_0x448aa7){return function(_0x331c3e,_0x3ecd21,_0x142178){TeamEvents['emit'](_0x448aa7+':'+_0x331c3e['id'],_0x331c3e);TeamEvents[_0x526f('0x7')](_0x448aa7,_0x331c3e);_0x142178(null);};}for(var e in events){if(events[_0x526f('0x8')](e)){var event=events[e];Team[_0x526f('0x9')](e,emitEvent(event));}}module[_0x526f('0xa')]=TeamEvents;
\ No newline at end of file
+var _0xd79c=['update','emit','hasOwnProperty','exports','events','../../mysqldb','Team','save'];(function(_0x12ca16,_0x281fd9){var _0x56fb78=function(_0x3479b2){while(--_0x3479b2){_0x12ca16['push'](_0x12ca16['shift']());}};_0x56fb78(++_0x281fd9);}(_0xd79c,0xe4));var _0xcd79=function(_0x45c261,_0x1deab0){_0x45c261=_0x45c261-0x0;var _0x31ecc1=_0xd79c[_0x45c261];return _0x31ecc1;};'use strict';var EventEmitter=require(_0xcd79('0x0'));var Team=require(_0xcd79('0x1'))['db'][_0xcd79('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcd79('0x3'),'afterUpdate':_0xcd79('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3b82a3){return function(_0x58d9d8,_0x6b0540,_0x4c5467){TeamEvents['emit'](_0x3b82a3+':'+_0x58d9d8['id'],_0x58d9d8);TeamEvents[_0xcd79('0x5')](_0x3b82a3,_0x58d9d8);_0x4c5467(null);};}for(var e in events){if(events[_0xcd79('0x6')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0xcd79('0x7')]=TeamEvents;
\ No newline at end of file
index face168..b16615d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ff8=['rimraf','../../config/environment','./team.attributes','exports','define','Team','teams','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x15ddd3,_0x559d1f){var _0x20c568=function(_0x368ee6){while(--_0x368ee6){_0x15ddd3['push'](_0x15ddd3['shift']());}};_0x20c568(++_0x559d1f);}(_0x1ff8,0x7f));var _0x81ff=function(_0x3a5b97,_0x2da2ae){_0x3a5b97=_0x3a5b97-0x0;var _0x302862=_0x1ff8[_0x3a5b97];return _0x302862;};'use strict';var _=require(_0x81ff('0x0'));var util=require(_0x81ff('0x1'));var logger=require(_0x81ff('0x2'))(_0x81ff('0x3'));var moment=require(_0x81ff('0x4'));var BPromise=require(_0x81ff('0x5'));var rp=require(_0x81ff('0x6'));var fs=require('fs');var path=require(_0x81ff('0x7'));var rimraf=require(_0x81ff('0x8'));var config=require(_0x81ff('0x9'));var attributes=require(_0x81ff('0xa'));module[_0x81ff('0xb')]=function(_0x4b4702,_0x46560a){return _0x4b4702[_0x81ff('0xc')](_0x81ff('0xd'),attributes,{'tableName':_0x81ff('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x81c6=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./team.attributes','exports','define','teams','lodash','util','../../config/logger'];(function(_0x5edce2,_0x5ade7d){var _0x19d053=function(_0x3f2898){while(--_0x3f2898){_0x5edce2['push'](_0x5edce2['shift']());}};_0x19d053(++_0x5ade7d);}(_0x81c6,0x7b));var _0x681c=function(_0x96cefd,_0x25cb5d){_0x96cefd=_0x96cefd-0x0;var _0x4310c1=_0x81c6[_0x96cefd];return _0x4310c1;};'use strict';var _=require(_0x681c('0x0'));var util=require(_0x681c('0x1'));var logger=require(_0x681c('0x2'))(_0x681c('0x3'));var moment=require(_0x681c('0x4'));var BPromise=require(_0x681c('0x5'));var rp=require(_0x681c('0x6'));var fs=require('fs');var path=require(_0x681c('0x7'));var rimraf=require(_0x681c('0x8'));var config=require(_0x681c('0x9'));var attributes=require(_0x681c('0xa'));module[_0x681c('0xb')]=function(_0x4b4067,_0x68a1e6){return _0x4b4067[_0x681c('0xc')]('Team',attributes,{'tableName':_0x681c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 89e8bdb..456bcdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1949=['debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','info','Team,\x20%s,\x20%s','request\x20sent'];(function(_0x6955bf,_0x3ad999){var _0x3114f8=function(_0x4c6b3d){while(--_0x4c6b3d){_0x6955bf['push'](_0x6955bf['shift']());}};_0x3114f8(++_0x3ad999);}(_0x1949,0xd5));var _0x9194=function(_0x2bcd20,_0x5a0a8c){_0x2bcd20=_0x2bcd20-0x0;var _0x22f810=_0x1949[_0x2bcd20];return _0x22f810;};'use strict';var _=require(_0x9194('0x0'));var util=require(_0x9194('0x1'));var moment=require(_0x9194('0x2'));var BPromise=require(_0x9194('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9194('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9194('0x5'));var config=require(_0x9194('0x6'));var jayson=require(_0x9194('0x7'));var client=jayson[_0x9194('0x8')]['http']({'port':0x232a});config[_0x9194('0x9')]=_[_0x9194('0xa')](config[_0x9194('0x9')],{'host':_0x9194('0xb'),'port':0x18eb});var socket=require(_0x9194('0xc'))(new Redis(config[_0x9194('0x9')]));require('./team.socket')[_0x9194('0xd')](socket);function respondWithRpcPromise(_0x51d7da,_0x1ebb35,_0x291fa1){return new BPromise(function(_0x3ac717,_0x3377b3){return client['request'](_0x51d7da,_0x291fa1)['then'](function(_0xf0e0a8){logger[_0x9194('0xe')](_0x9194('0xf'),_0x1ebb35,_0x9194('0x10'));logger[_0x9194('0x11')](_0x9194('0x12'),_0x1ebb35,_0x9194('0x10'),JSON[_0x9194('0x13')](_0xf0e0a8));if(_0xf0e0a8[_0x9194('0x14')]){if(_0xf0e0a8['error'][_0x9194('0x15')]===0x1f4){logger['error'](_0x9194('0xf'),_0x1ebb35,_0xf0e0a8[_0x9194('0x14')][_0x9194('0x16')]);return _0x3377b3(_0xf0e0a8[_0x9194('0x14')][_0x9194('0x16')]);}logger[_0x9194('0x14')](_0x9194('0xf'),_0x1ebb35,_0xf0e0a8['error']['message']);return _0x3ac717(_0xf0e0a8[_0x9194('0x14')][_0x9194('0x16')]);}else{logger[_0x9194('0xe')](_0x9194('0xf'),_0x1ebb35,_0x9194('0x10'));_0x3ac717(_0xf0e0a8['result'][_0x9194('0x16')]);}})['catch'](function(_0x2917c2){logger[_0x9194('0x14')]('Team,\x20%s,\x20%s',_0x1ebb35,_0x2917c2);_0x3377b3(_0x2917c2);});});}
\ No newline at end of file
+var _0x79cd=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./team.socket','register','Team,\x20%s,\x20%s','request\x20sent','Team,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x19f56f,_0x8d98b7){var _0x331f59=function(_0x11e37a){while(--_0x11e37a){_0x19f56f['push'](_0x19f56f['shift']());}};_0x331f59(++_0x8d98b7);}(_0x79cd,0x157));var _0xd79c=function(_0x15bbf1,_0x40ef96){_0x15bbf1=_0x15bbf1-0x0;var _0x5c4b47=_0x79cd[_0x15bbf1];return _0x5c4b47;};'use strict';var _=require(_0xd79c('0x0'));var util=require(_0xd79c('0x1'));var moment=require(_0xd79c('0x2'));var BPromise=require(_0xd79c('0x3'));var rs=require(_0xd79c('0x4'));var fs=require('fs');var Redis=require(_0xd79c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd79c('0x6'));var logger=require(_0xd79c('0x7'))(_0xd79c('0x8'));var config=require(_0xd79c('0x9'));var jayson=require(_0xd79c('0xa'));var client=jayson[_0xd79c('0xb')][_0xd79c('0xc')]({'port':0x232a});config[_0xd79c('0xd')]=_[_0xd79c('0xe')](config[_0xd79c('0xd')],{'host':_0xd79c('0xf'),'port':0x18eb});var socket=require(_0xd79c('0x10'))(new Redis(config[_0xd79c('0xd')]));require(_0xd79c('0x11'))[_0xd79c('0x12')](socket);function respondWithRpcPromise(_0x49dcd6,_0x2eb10e,_0x347c79){return new BPromise(function(_0x2df12d,_0x513d8d){return client['request'](_0x49dcd6,_0x347c79)['then'](function(_0x1a6fd1){logger['info'](_0xd79c('0x13'),_0x2eb10e,_0xd79c('0x14'));logger['debug'](_0xd79c('0x15'),_0x2eb10e,_0xd79c('0x14'),JSON['stringify'](_0x1a6fd1));if(_0x1a6fd1[_0xd79c('0x16')]){if(_0x1a6fd1['error'][_0xd79c('0x17')]===0x1f4){logger[_0xd79c('0x16')](_0xd79c('0x13'),_0x2eb10e,_0x1a6fd1[_0xd79c('0x16')][_0xd79c('0x18')]);return _0x513d8d(_0x1a6fd1[_0xd79c('0x16')][_0xd79c('0x18')]);}logger[_0xd79c('0x16')](_0xd79c('0x13'),_0x2eb10e,_0x1a6fd1['error']['message']);return _0x2df12d(_0x1a6fd1[_0xd79c('0x16')][_0xd79c('0x18')]);}else{logger['info'](_0xd79c('0x13'),_0x2eb10e,'request\x20sent');_0x2df12d(_0x1a6fd1[_0xd79c('0x19')][_0xd79c('0x18')]);}})[_0xd79c('0x1a')](function(_0x4a139c){logger[_0xd79c('0x16')](_0xd79c('0x13'),_0x2eb10e,_0x4a139c);_0x513d8d(_0x4a139c);});});}
\ No newline at end of file
index d9221fa..5c77a22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf3f=['team:','./team.events','emit','removeListener','register','length'];(function(_0x5346f8,_0x17287e){var _0x2a66e9=function(_0x59477a){while(--_0x59477a){_0x5346f8['push'](_0x5346f8['shift']());}};_0x2a66e9(++_0x17287e);}(_0xbf3f,0x10f));var _0xfbf3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbf3f[_0x3dd15e];return _0x231fd0;};'use strict';var TeamEvents=require(_0xfbf3('0x0'));var events=['save','remove','update'];function createListener(_0x5a4e2c,_0x4a5854){return function(_0x3f0335){_0x4a5854[_0xfbf3('0x1')](_0x5a4e2c,_0x3f0335);};}function removeListener(_0x181cbe,_0x5bc16d){return function(){TeamEvents[_0xfbf3('0x2')](_0x181cbe,_0x5bc16d);};}exports[_0xfbf3('0x3')]=function(_0x117730){for(var _0x1584e2=0x0,_0x218007=events[_0xfbf3('0x4')];_0x1584e2<_0x218007;_0x1584e2++){var _0x7bf395=events[_0x1584e2];var _0x58460f=createListener(_0xfbf3('0x5')+_0x7bf395,_0x117730);TeamEvents['on'](_0x7bf395,_0x58460f);}};
\ No newline at end of file
+var _0x0a78=['./team.events','save','update','emit','register','length','team:'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x0a78,0x1ab));var _0x80a7=function(_0x2ff500,_0x26249f){_0x2ff500=_0x2ff500-0x0;var _0x208269=_0x0a78[_0x2ff500];return _0x208269;};'use strict';var TeamEvents=require(_0x80a7('0x0'));var events=[_0x80a7('0x1'),'remove',_0x80a7('0x2')];function createListener(_0x5b7d4f,_0xae575){return function(_0xf7d19){_0xae575[_0x80a7('0x3')](_0x5b7d4f,_0xf7d19);};}function removeListener(_0x4e1208,_0x445615){return function(){TeamEvents['removeListener'](_0x4e1208,_0x445615);};}exports[_0x80a7('0x4')]=function(_0x38425e){for(var _0x546c40=0x0,_0xbf10df=events[_0x80a7('0x5')];_0x546c40<_0xbf10df;_0x546c40++){var _0x444932=events[_0x546c40];var _0xd52f2b=createListener(_0x80a7('0x6')+_0x444932,_0x38425e);TeamEvents['on'](_0x444932,_0xd52f2b);}};
\ 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 e3a238b..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 _0xee5b=['sequelize','INTEGER'];(function(_0x28014e,_0x4e5a91){var _0x162e4c=function(_0x74b2a8){while(--_0x74b2a8){_0x28014e['push'](_0x28014e['shift']());}};_0x162e4c(++_0x4e5a91);}(_0xee5b,0x1f4));var _0xbee5=function(_0x51f0a6,_0x1dfc98){_0x51f0a6=_0x51f0a6-0x0;var _0x19ab4a=_0xee5b[_0x51f0a6];return _0x19ab4a;};'use strict';var Sequelize=require(_0xbee5('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0xbee5('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xbee5('0x1')]}};
\ 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 e2c193a..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 _0x30d6=['define','TeamVoicePrefix','team_has_voice_prefixes','lodash','util','api','bluebird','request-promise','path','./teamVoicePrefix.attributes','exports'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0x30d6,0x1b0));var _0x630d=function(_0x673722,_0x275d7e){_0x673722=_0x673722-0x0;var _0x21249c=_0x30d6[_0x673722];return _0x21249c;};'use strict';var _=require(_0x630d('0x0'));var util=require(_0x630d('0x1'));var logger=require('../../config/logger')(_0x630d('0x2'));var moment=require('moment');var BPromise=require(_0x630d('0x3'));var rp=require(_0x630d('0x4'));var fs=require('fs');var path=require(_0x630d('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x630d('0x6'));module[_0x630d('0x7')]=function(_0x83b614,_0x5217c8){return _0x83b614[_0x630d('0x8')](_0x630d('0x9'),attributes,{'tableName':_0x630d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1b9156a..17c2c34 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(_0x2e8418,_0x58c529){var _0x548fe6=function(_0x2b2877){while(--_0x2b2877){_0x2e8418['push'](_0x2e8418['shift']());}};_0x548fe6(++_0x58c529);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2205c0,_0x3f7d1d){var _0x327454=function(_0x1979a1){while(--_0x1979a1){_0x2205c0['push'](_0x2205c0['shift']());}};_0x327454(++_0x3f7d1d);}(_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 daa9b64..b85aec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5797=['exports'];(function(_0x603220,_0x3428a9){var _0x135f2e=function(_0x5afbb8){while(--_0x5afbb8){_0x603220['push'](_0x603220['shift']());}};_0x135f2e(++_0x3428a9);}(_0x5797,0xc4));var _0x7579=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x5797[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require('sequelize');module[_0x7579('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf33d=['exports','INTEGER','sequelize'];(function(_0xbfc4ac,_0x10176d){var _0x5537be=function(_0x540a1f){while(--_0x540a1f){_0xbfc4ac['push'](_0xbfc4ac['shift']());}};_0x5537be(++_0x10176d);}(_0xf33d,0xc5));var _0xdf33=function(_0x545789,_0x3df038){_0x545789=_0x545789-0x0;var _0x506c59=_0xf33d[_0x545789];return _0x506c59;};'use strict';var Sequelize=require(_0xdf33('0x0'));module[_0xdf33('0x1')]={'penalty':{'type':Sequelize[_0xdf33('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index bd8d856..69a8069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fda=['lodash','api','moment','bluebird','request-promise','path','exports','define','TeamVoiceQueue','team_has_voice_queues'];(function(_0x3e52d5,_0x128785){var _0x4146ea=function(_0x7354b4){while(--_0x7354b4){_0x3e52d5['push'](_0x3e52d5['shift']());}};_0x4146ea(++_0x128785);}(_0x2fda,0x186));var _0xa2fd=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0x2fda[_0x3054be];return _0x3df150;};'use strict';var _=require(_0xa2fd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa2fd('0x1'));var moment=require(_0xa2fd('0x2'));var BPromise=require(_0xa2fd('0x3'));var rp=require(_0xa2fd('0x4'));var fs=require('fs');var path=require(_0xa2fd('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./teamVoiceQueue.attributes');module[_0xa2fd('0x6')]=function(_0x1bab5a,_0x4c6b0b){return _0x1bab5a[_0xa2fd('0x7')](_0xa2fd('0x8'),attributes,{'tableName':_0xa2fd('0x9'),'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(_0x871ef5,_0x58880b){var _0x1f62ea=function(_0x13934c){while(--_0x13934c){_0x871ef5['push'](_0x871ef5['shift']());}};_0x1f62ea(++_0x58880b);}(_0x25b5,0x198));var _0x525b=function(_0x180407,_0x174d23){_0x180407=_0x180407-0x0;var _0xfcf171=_0x25b5[_0x180407];return _0xfcf171;};'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 8514498..86b2008 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x073c=['../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x5bbad0,_0x59de36){var _0x5ed7da=function(_0x124755){while(--_0x124755){_0x5bbad0['push'](_0x5bbad0['shift']());}};_0x5ed7da(++_0x59de36);}(_0x073c,0x118));var _0xc073=function(_0x13ac24,_0x1cc1e6){_0x13ac24=_0x13ac24-0x0;var _0x2cf9b3=_0x073c[_0x13ac24];return _0x2cf9b3;};'use strict';var _=require('lodash');var util=require(_0xc073('0x0'));var moment=require(_0xc073('0x1'));var BPromise=require(_0xc073('0x2'));var rs=require(_0xc073('0x3'));var fs=require('fs');var Redis=require(_0xc073('0x4'));var db=require(_0xc073('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc073('0x6'))('rpc');var config=require(_0xc073('0x7'));var jayson=require(_0xc073('0x8'));var client=jayson[_0xc073('0x9')][_0xc073('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4557f2,_0x5029ce,_0x49f6dc){return new BPromise(function(_0x1be710,_0x56ad85){return client[_0xc073('0xb')](_0x4557f2,_0x49f6dc)[_0xc073('0xc')](function(_0x50a2dc){logger[_0xc073('0xd')](_0xc073('0xe'),_0x5029ce,_0xc073('0xf'));logger[_0xc073('0x10')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x5029ce,_0xc073('0xf'),JSON[_0xc073('0x11')](_0x50a2dc));if(_0x50a2dc[_0xc073('0x12')]){if(_0x50a2dc[_0xc073('0x12')][_0xc073('0x13')]===0x1f4){logger[_0xc073('0x12')](_0xc073('0xe'),_0x5029ce,_0x50a2dc['error'][_0xc073('0x14')]);return _0x56ad85(_0x50a2dc[_0xc073('0x12')][_0xc073('0x14')]);}logger[_0xc073('0x12')](_0xc073('0xe'),_0x5029ce,_0x50a2dc[_0xc073('0x12')][_0xc073('0x14')]);return _0x1be710(_0x50a2dc[_0xc073('0x12')][_0xc073('0x14')]);}else{logger[_0xc073('0xd')]('TeamVoiceQueue,\x20%s,\x20%s',_0x5029ce,'request\x20sent');_0x1be710(_0x50a2dc['result'][_0xc073('0x14')]);}})[_0xc073('0x15')](function(_0x294033){logger['error'](_0xc073('0xe'),_0x5029ce,_0x294033);_0x56ad85(_0x294033);});});}
\ No newline at end of file
+var _0x0c02=['TeamVoiceQueue,\x20%s,\x20%s','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0xfc3b8d,_0x5dc696){var _0x736e75=function(_0x30b535){while(--_0x30b535){_0xfc3b8d['push'](_0xfc3b8d['shift']());}};_0x736e75(++_0x5dc696);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x20c0('0x0'));var moment=require(_0x20c0('0x1'));var BPromise=require('bluebird');var rs=require(_0x20c0('0x2'));var fs=require('fs');var Redis=require(_0x20c0('0x3'));var db=require(_0x20c0('0x4'))['db'];var utils=require(_0x20c0('0x5'));var logger=require(_0x20c0('0x6'))(_0x20c0('0x7'));var config=require(_0x20c0('0x8'));var jayson=require(_0x20c0('0x9'));var client=jayson[_0x20c0('0xa')][_0x20c0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5d6408,_0x4e1dac,_0x5da127){return new BPromise(function(_0x4db532,_0x1e35e2){return client[_0x20c0('0xc')](_0x5d6408,_0x5da127)[_0x20c0('0xd')](function(_0x41a4af){logger[_0x20c0('0xe')](_0x20c0('0xf'),_0x4e1dac,'request\x20sent');logger['debug']('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x4e1dac,'request\x20sent',JSON['stringify'](_0x41a4af));if(_0x41a4af[_0x20c0('0x10')]){if(_0x41a4af[_0x20c0('0x10')][_0x20c0('0x11')]===0x1f4){logger[_0x20c0('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x4e1dac,_0x41a4af[_0x20c0('0x10')]['message']);return _0x1e35e2(_0x41a4af['error'][_0x20c0('0x12')]);}logger[_0x20c0('0x10')](_0x20c0('0xf'),_0x4e1dac,_0x41a4af[_0x20c0('0x10')][_0x20c0('0x12')]);return _0x4db532(_0x41a4af[_0x20c0('0x10')][_0x20c0('0x12')]);}else{logger[_0x20c0('0xe')](_0x20c0('0xf'),_0x4e1dac,'request\x20sent');_0x4db532(_0x41a4af[_0x20c0('0x13')][_0x20c0('0x12')]);}})[_0x20c0('0x14')](function(_0x46b9e5){logger[_0x20c0('0x10')](_0x20c0('0xf'),_0x4e1dac,_0x46b9e5);_0x1e35e2(_0x46b9e5);});});}
\ No newline at end of file
index 8d0c408..630762b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f1a=['express','Router','fs-extra','../../components/auth/service','./template.controller','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x4fa1d9,_0x38cdb6){var _0x55ad71=function(_0x21071e){while(--_0x21071e){_0x4fa1d9['push'](_0x4fa1d9['shift']());}};_0x55ad71(++_0x38cdb6);}(_0x8f1a,0xcd));var _0xa8f1=function(_0x566da6,_0x5edcf1){_0x566da6=_0x566da6-0x0;var _0x3d81e4=_0x8f1a[_0x566da6];return _0x3d81e4;};'use strict';var multer=require(_0xa8f1('0x0'));var util=require(_0xa8f1('0x1'));var path=require(_0xa8f1('0x2'));var timeout=require(_0xa8f1('0x3'));var express=require(_0xa8f1('0x4'));var router=express[_0xa8f1('0x5')]();var fs_extra=require(_0xa8f1('0x6'));var auth=require(_0xa8f1('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa8f1('0x8'));router['get']('/',auth[_0xa8f1('0x9')](),controller[_0xa8f1('0xa')]);router['get'](_0xa8f1('0xb'),auth[_0xa8f1('0x9')](),controller[_0xa8f1('0xc')]);router[_0xa8f1('0xd')]('/',auth[_0xa8f1('0x9')](),controller[_0xa8f1('0xe')]);router[_0xa8f1('0xf')](_0xa8f1('0xb'),auth['isAuthenticated'](),controller[_0xa8f1('0x10')]);router[_0xa8f1('0x11')]('/:id',auth[_0xa8f1('0x9')](),controller['destroy']);module[_0xa8f1('0x12')]=router;
\ No newline at end of file
+var _0xcf37=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','exports'];(function(_0x54ea98,_0x61c07f){var _0x1a703a=function(_0x319c53){while(--_0x319c53){_0x54ea98['push'](_0x54ea98['shift']());}};_0x1a703a(++_0x61c07f);}(_0xcf37,0xdc));var _0x7cf3=function(_0x55ac1c,_0x394c93){_0x55ac1c=_0x55ac1c-0x0;var _0x551be8=_0xcf37[_0x55ac1c];return _0x551be8;};'use strict';var multer=require('multer');var util=require(_0x7cf3('0x0'));var path=require(_0x7cf3('0x1'));var timeout=require(_0x7cf3('0x2'));var express=require(_0x7cf3('0x3'));var router=express[_0x7cf3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7cf3('0x5'));var interaction=require(_0x7cf3('0x6'));var config=require(_0x7cf3('0x7'));var controller=require(_0x7cf3('0x8'));router[_0x7cf3('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0x7cf3('0xa')](),controller[_0x7cf3('0xb')]);router[_0x7cf3('0xc')]('/',auth['isAuthenticated'](),controller[_0x7cf3('0xd')]);router[_0x7cf3('0xe')](_0x7cf3('0xf'),auth[_0x7cf3('0xa')](),controller[_0x7cf3('0x10')]);router[_0x7cf3('0x11')]('/:id',auth[_0x7cf3('0xa')](),controller[_0x7cf3('0x12')]);module[_0x7cf3('0x13')]=router;
\ No newline at end of file
index 1bfd73d..f82166f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaf4=['exports','STRING','TEXT'];(function(_0x5bb4e8,_0x44b756){var _0x2a86f2=function(_0x279ab2){while(--_0x279ab2){_0x5bb4e8['push'](_0x5bb4e8['shift']());}};_0x2a86f2(++_0x44b756);}(_0xeaf4,0xe7));var _0x4eaf=function(_0x199db7,_0x233a37){_0x199db7=_0x199db7-0x0;var _0x315189=_0xeaf4[_0x199db7];return _0x315189;};'use strict';var Sequelize=require('sequelize');module[_0x4eaf('0x0')]={'name':{'type':Sequelize[_0x4eaf('0x1')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize[_0x4eaf('0x2')]}};
\ No newline at end of file
+var _0xa277=['STRING','TEXT','sequelize'];(function(_0x7d2cf2,_0x464bb5){var _0x5e45d3=function(_0x2b74e7){while(--_0x2b74e7){_0x7d2cf2['push'](_0x7d2cf2['shift']());}};_0x5e45d3(++_0x464bb5);}(_0xa277,0x152));var _0x7a27=function(_0x344ded,_0x38c136){_0x344ded=_0x344ded-0x0;var _0x1ad089=_0xa277[_0x344ded];return _0x1ad089;};'use strict';var Sequelize=require(_0x7a27('0x0'));module['exports']={'name':{'type':Sequelize[_0x7a27('0x1')]},'description':{'type':Sequelize[_0x7a27('0x1')]},'html':{'type':Sequelize[_0x7a27('0x2')]}};
\ No newline at end of file
index 493f797..2cf45a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9186=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Templates','UserProfileResource','sendStatus','error','stack','name','send','index','map','Template','rawAttributes','fieldName','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','params','include','find','catch','create','body','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x5e028a,_0x2629d2){var _0x2a6f1c=function(_0x1a9de5){while(--_0x1a9de5){_0x5e028a['push'](_0x5e028a['shift']());}};_0x2a6f1c(++_0x2629d2);}(_0x9186,0xa0));var _0x6918=function(_0x1db251,_0xf0443d){_0x1db251=_0x1db251-0x0;var _0x56685a=_0x9186[_0x1db251];return _0x56685a;};'use strict';var emlformat=require(_0x6918('0x0'));var rimraf=require(_0x6918('0x1'));var zipdir=require(_0x6918('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6918('0x3'));var moment=require(_0x6918('0x4'));var BPromise=require(_0x6918('0x5'));var Mustache=require(_0x6918('0x6'));var util=require(_0x6918('0x7'));var path=require(_0x6918('0x8'));var sox=require(_0x6918('0x9'));var csv=require(_0x6918('0xa'));var ejs=require(_0x6918('0xb'));var fs=require('fs');var fs_extra=require(_0x6918('0xc'));var _=require(_0x6918('0xd'));var squel=require(_0x6918('0xe'));var crypto=require(_0x6918('0xf'));var jsforce=require(_0x6918('0x10'));var deskjs=require(_0x6918('0x11'));var toCsv=require('to-csv');var querystring=require(_0x6918('0x12'));var Papa=require('papaparse');var Redis=require(_0x6918('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6918('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6918('0x15'));var utils=require(_0x6918('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6918('0x17'));var db=require(_0x6918('0x18'))['db'];function respondWithStatusCode(_0x1c7207,_0x201cac){_0x201cac=_0x201cac||0xcc;return function(_0x326457){if(_0x326457){return _0x1c7207['sendStatus'](_0x201cac);}return _0x1c7207[_0x6918('0x19')](_0x201cac)[_0x6918('0x1a')]();};}function respondWithResult(_0x53ac64,_0x34f846){_0x34f846=_0x34f846||0xc8;return function(_0x12fbd6){if(_0x12fbd6){return _0x53ac64[_0x6918('0x19')](_0x34f846)[_0x6918('0x1b')](_0x12fbd6);}};}function respondWithFilteredResult(_0x2cf7f6,_0x583408){return function(_0x335af6){if(_0x335af6){var _0x29d801=typeof _0x583408[_0x6918('0x1c')]===_0x6918('0x1d')&&typeof _0x583408[_0x6918('0x1e')]===_0x6918('0x1d');var _0x5d90d2=_0x335af6['count'];var _0x456526=_0x29d801?0x0:_0x583408[_0x6918('0x1c')];var _0x51f315=_0x29d801?_0x335af6[_0x6918('0x1f')]:_0x583408[_0x6918('0x1c')]+_0x583408[_0x6918('0x1e')];var _0x41d7a8;if(_0x51f315>=_0x5d90d2){_0x51f315=_0x5d90d2;_0x41d7a8=0xc8;}else{_0x41d7a8=0xce;}_0x2cf7f6[_0x6918('0x19')](_0x41d7a8);return _0x2cf7f6[_0x6918('0x20')](_0x6918('0x21'),_0x456526+'-'+_0x51f315+'/'+_0x5d90d2)[_0x6918('0x1b')](_0x335af6);}return null;};}function patchUpdates(_0x4d4da3){return function(_0x2b321e){try{jsonpatch[_0x6918('0x22')](_0x2b321e,_0x4d4da3,!![]);}catch(_0x52c781){return BPromise[_0x6918('0x23')](_0x52c781);}return _0x2b321e[_0x6918('0x24')]();};}function saveUpdates(_0x386fac,_0x1b1c5e){return function(_0x4ce06f){if(_0x4ce06f){return _0x4ce06f[_0x6918('0x25')](_0x386fac)['then'](function(_0xc02936){return _0xc02936;});}return null;};}function removeEntity(_0x5ed9fa,_0x24e7da){return function(_0x38a4e7){if(_0x38a4e7){return _0x38a4e7['destroy']()[_0x6918('0x26')](function(){var _0x25e022=_0x38a4e7[_0x6918('0x27')]({'plain':!![]});var _0x5162c0=_0x6918('0x28');return db[_0x6918('0x29')]['destroy']({'where':{'type':_0x5162c0,'resourceId':_0x25e022['id']}})[_0x6918('0x26')](function(){return _0x38a4e7;});})['then'](function(){_0x5ed9fa[_0x6918('0x19')](0xcc)[_0x6918('0x1a')]();});}};}function handleEntityNotFound(_0x38ed49,_0x29ee92){return function(_0x504687){if(!_0x504687){_0x38ed49[_0x6918('0x2a')](0x194);}return _0x504687;};}function handleError(_0x198202,_0x5aa0a9){_0x5aa0a9=_0x5aa0a9||0x1f4;return function(_0x2028d7){logger[_0x6918('0x2b')](_0x2028d7[_0x6918('0x2c')]);if(_0x2028d7[_0x6918('0x2d')]){delete _0x2028d7[_0x6918('0x2d')];}_0x198202[_0x6918('0x19')](_0x5aa0a9)[_0x6918('0x2e')](_0x2028d7);};}exports[_0x6918('0x2f')]=function(_0x3e2088,_0x1af359){var _0x3e8c1e={},_0x519cf9={},_0x538a2e={'count':0x0,'rows':[]};var _0xf41277=_[_0x6918('0x30')](db[_0x6918('0x31')][_0x6918('0x32')],function(_0x479c64){return{'name':_0x479c64[_0x6918('0x33')],'type':_0x479c64['type']['key']};});_0x519cf9[_0x6918('0x34')]=_[_0x6918('0x30')](_0xf41277,'name');_0x519cf9['query']=_[_0x6918('0x35')](_0x3e2088[_0x6918('0x36')]);_0x519cf9[_0x6918('0x37')]=_['intersection'](_0x519cf9[_0x6918('0x34')],_0x519cf9[_0x6918('0x36')]);_0x3e8c1e[_0x6918('0x38')]=_[_0x6918('0x39')](_0x519cf9[_0x6918('0x34')],qs[_0x6918('0x3a')](_0x3e2088[_0x6918('0x36')][_0x6918('0x3a')]));_0x3e8c1e[_0x6918('0x38')]=_0x3e8c1e[_0x6918('0x38')][_0x6918('0x3b')]?_0x3e8c1e[_0x6918('0x38')]:_0x519cf9[_0x6918('0x34')];if(!_0x3e2088[_0x6918('0x36')][_0x6918('0x3c')](_0x6918('0x3d'))){_0x3e8c1e[_0x6918('0x1e')]=qs['limit'](_0x3e2088[_0x6918('0x36')][_0x6918('0x1e')]);_0x3e8c1e['offset']=qs[_0x6918('0x1c')](_0x3e2088[_0x6918('0x36')]['offset']);}_0x3e8c1e[_0x6918('0x3e')]=qs['sort'](_0x3e2088['query'][_0x6918('0x3f')]);_0x3e8c1e[_0x6918('0x40')]=qs[_0x6918('0x37')](_[_0x6918('0x41')](_0x3e2088[_0x6918('0x36')],_0x519cf9[_0x6918('0x37')]),_0xf41277);if(_0x3e2088[_0x6918('0x36')][_0x6918('0x42')]){_0x3e8c1e[_0x6918('0x40')]=_['merge'](_0x3e8c1e[_0x6918('0x40')],{'$or':_[_0x6918('0x30')](_0xf41277,function(_0x3fd91d){if(_0x3fd91d[_0x6918('0x43')]!==_0x6918('0x44')){var _0x4bf916={};_0x4bf916[_0x3fd91d[_0x6918('0x2d')]]={'$like':'%'+_0x3e2088[_0x6918('0x36')]['filter']+'%'};return _0x4bf916;}})});}_0x3e8c1e=_[_0x6918('0x45')]({},_0x3e8c1e,_0x3e2088[_0x6918('0x46')]);var _0x20d789={'where':_0x3e8c1e['where']};return db[_0x6918('0x31')][_0x6918('0x1f')](_0x20d789)[_0x6918('0x26')](function(_0x4a1db7){_0x538a2e[_0x6918('0x1f')]=_0x4a1db7;if(_0x3e2088[_0x6918('0x36')][_0x6918('0x47')]){_0x3e8c1e['include']=[{'all':!![]}];}return db[_0x6918('0x31')][_0x6918('0x48')](_0x3e8c1e);})[_0x6918('0x26')](function(_0x50cc42){_0x538a2e[_0x6918('0x49')]=_0x50cc42;return _0x538a2e;})[_0x6918('0x26')](respondWithFilteredResult(_0x1af359,_0x3e8c1e))['catch'](handleError(_0x1af359,null));};exports['show']=function(_0x160a04,_0x2d61df){var _0x377003={'raw':!![],'where':{'id':_0x160a04[_0x6918('0x4a')]['id']}},_0x54cdf1={};_0x54cdf1[_0x6918('0x34')]=_[_0x6918('0x35')](db['Template'][_0x6918('0x32')]);_0x54cdf1[_0x6918('0x36')]=_[_0x6918('0x35')](_0x160a04[_0x6918('0x36')]);_0x54cdf1[_0x6918('0x37')]=_[_0x6918('0x39')](_0x54cdf1[_0x6918('0x34')],_0x54cdf1[_0x6918('0x36')]);_0x377003[_0x6918('0x38')]=_[_0x6918('0x39')](_0x54cdf1['model'],qs[_0x6918('0x3a')](_0x160a04['query'][_0x6918('0x3a')]));_0x377003[_0x6918('0x38')]=_0x377003['attributes']['length']?_0x377003[_0x6918('0x38')]:_0x54cdf1[_0x6918('0x34')];if(_0x160a04[_0x6918('0x36')][_0x6918('0x47')]){_0x377003[_0x6918('0x4b')]=[{'all':!![]}];}_0x377003=_[_0x6918('0x45')]({},_0x377003,_0x160a04[_0x6918('0x46')]);return db[_0x6918('0x31')][_0x6918('0x4c')](_0x377003)['then'](handleEntityNotFound(_0x2d61df,null))[_0x6918('0x26')](respondWithResult(_0x2d61df,null))[_0x6918('0x4d')](handleError(_0x2d61df,null));};exports[_0x6918('0x4e')]=function(_0xa62da1,_0x5827e6){return db[_0x6918('0x31')][_0x6918('0x4e')](_0xa62da1[_0x6918('0x4f')],{})[_0x6918('0x26')](function(_0x50e005){var _0x1092cb=_0xa62da1[_0x6918('0x50')][_0x6918('0x27')]({'plain':!![]});if(!_0x1092cb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1092cb[_0x6918('0x51')]===_0x6918('0x50')){var _0x596ede=_0x50e005[_0x6918('0x27')]({'plain':!![]});var _0xfb1f2f=_0x6918('0x28');return db['UserProfileSection']['find']({'where':{'name':_0xfb1f2f,'userProfileId':_0x1092cb[_0x6918('0x52')]},'raw':!![]})[_0x6918('0x26')](function(_0x3ed3a6){if(_0x3ed3a6&&_0x3ed3a6[_0x6918('0x53')]===0x0){return db['UserProfileResource']['create']({'name':_0x596ede[_0x6918('0x2d')],'resourceId':_0x596ede['id'],'type':_0x3ed3a6['name'],'sectionId':_0x3ed3a6['id']},{})[_0x6918('0x26')](function(){return _0x50e005;});}else{return _0x50e005;}})[_0x6918('0x4d')](function(_0x541ae0){logger[_0x6918('0x2b')](_0x6918('0x54'),_0x541ae0);throw _0x541ae0;});}return _0x50e005;})[_0x6918('0x26')](respondWithResult(_0x5827e6,0xc9))['catch'](handleError(_0x5827e6,null));};exports[_0x6918('0x25')]=function(_0x3536ec,_0x54c390){if(_0x3536ec['body']['id']){delete _0x3536ec[_0x6918('0x4f')]['id'];}return db['Template'][_0x6918('0x4c')]({'where':{'id':_0x3536ec[_0x6918('0x4a')]['id']}})[_0x6918('0x26')](handleEntityNotFound(_0x54c390,null))[_0x6918('0x26')](saveUpdates(_0x3536ec['body'],null))[_0x6918('0x26')](respondWithResult(_0x54c390,null))[_0x6918('0x4d')](handleError(_0x54c390,null));};exports['destroy']=function(_0x12d28a,_0x5b8b99){return db['Template'][_0x6918('0x4c')]({'where':{'id':_0x12d28a[_0x6918('0x4a')]['id']}})[_0x6918('0x26')](handleEntityNotFound(_0x5b8b99,null))[_0x6918('0x26')](removeEntity(_0x5b8b99,null))[_0x6918('0x4d')](handleError(_0x5b8b99,null));};
\ No newline at end of file
+var _0x7ee5=['save','then','destroy','get','UserProfileResource','end','error','stack','name','send','index','map','Template','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','UserProfileSection','userProfileId','autoAssociation','update','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','apply'];(function(_0x301868,_0x52cd50){var _0x4683a8=function(_0x30a1d6){while(--_0x30a1d6){_0x301868['push'](_0x301868['shift']());}};_0x4683a8(++_0x52cd50);}(_0x7ee5,0xda));var _0x57ee=function(_0x192772,_0x100b16){_0x192772=_0x192772-0x0;var _0x2b50bd=_0x7ee5[_0x192772];return _0x2b50bd;};'use strict';var emlformat=require(_0x57ee('0x0'));var rimraf=require(_0x57ee('0x1'));var zipdir=require(_0x57ee('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x57ee('0x3'));var moment=require(_0x57ee('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x57ee('0x5'));var util=require(_0x57ee('0x6'));var path=require(_0x57ee('0x7'));var sox=require(_0x57ee('0x8'));var csv=require('to-csv');var ejs=require(_0x57ee('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x57ee('0xa'));var squel=require(_0x57ee('0xb'));var crypto=require(_0x57ee('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x57ee('0xd'));var toCsv=require('to-csv');var querystring=require(_0x57ee('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x57ee('0xf'));var qs=require(_0x57ee('0x10'));var as=require(_0x57ee('0x11'));var hardwareService=require(_0x57ee('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x57ee('0x13'));var config=require(_0x57ee('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x57ee('0x15'))['db'];function respondWithStatusCode(_0x4db288,_0xbf5634){_0xbf5634=_0xbf5634||0xcc;return function(_0x4524a0){if(_0x4524a0){return _0x4db288[_0x57ee('0x16')](_0xbf5634);}return _0x4db288[_0x57ee('0x17')](_0xbf5634)['end']();};}function respondWithResult(_0x29f8b5,_0x491bb1){_0x491bb1=_0x491bb1||0xc8;return function(_0x35e5f8){if(_0x35e5f8){return _0x29f8b5[_0x57ee('0x17')](_0x491bb1)[_0x57ee('0x18')](_0x35e5f8);}};}function respondWithFilteredResult(_0x1429db,_0x303e6e){return function(_0x13756d){if(_0x13756d){var _0x3171a2=typeof _0x303e6e[_0x57ee('0x19')]==='undefined'&&typeof _0x303e6e[_0x57ee('0x1a')]===_0x57ee('0x1b');var _0xc570c2=_0x13756d[_0x57ee('0x1c')];var _0x8a491=_0x3171a2?0x0:_0x303e6e[_0x57ee('0x19')];var _0x4ae878=_0x3171a2?_0x13756d[_0x57ee('0x1c')]:_0x303e6e['offset']+_0x303e6e[_0x57ee('0x1a')];var _0x5d2e9c;if(_0x4ae878>=_0xc570c2){_0x4ae878=_0xc570c2;_0x5d2e9c=0xc8;}else{_0x5d2e9c=0xce;}_0x1429db[_0x57ee('0x17')](_0x5d2e9c);return _0x1429db[_0x57ee('0x1d')]('Content-Range',_0x8a491+'-'+_0x4ae878+'/'+_0xc570c2)[_0x57ee('0x18')](_0x13756d);}return null;};}function patchUpdates(_0x533d67){return function(_0x4c0a30){try{jsonpatch[_0x57ee('0x1e')](_0x4c0a30,_0x533d67,!![]);}catch(_0xb34434){return BPromise['reject'](_0xb34434);}return _0x4c0a30[_0x57ee('0x1f')]();};}function saveUpdates(_0x51e613,_0x576e4e){return function(_0x5b3e29){if(_0x5b3e29){return _0x5b3e29['update'](_0x51e613)[_0x57ee('0x20')](function(_0x12a5dd){return _0x12a5dd;});}return null;};}function removeEntity(_0x176ce5,_0x4e9cbb){return function(_0x224d29){if(_0x224d29){return _0x224d29[_0x57ee('0x21')]()[_0x57ee('0x20')](function(){var _0x19c5d0=_0x224d29[_0x57ee('0x22')]({'plain':!![]});var _0x1ea962='Templates';return db[_0x57ee('0x23')][_0x57ee('0x21')]({'where':{'type':_0x1ea962,'resourceId':_0x19c5d0['id']}})[_0x57ee('0x20')](function(){return _0x224d29;});})[_0x57ee('0x20')](function(){_0x176ce5['status'](0xcc)[_0x57ee('0x24')]();});}};}function handleEntityNotFound(_0xf71f42,_0xece221){return function(_0x268de8){if(!_0x268de8){_0xf71f42['sendStatus'](0x194);}return _0x268de8;};}function handleError(_0xda93c2,_0x3008f8){_0x3008f8=_0x3008f8||0x1f4;return function(_0x19aac5){logger[_0x57ee('0x25')](_0x19aac5[_0x57ee('0x26')]);if(_0x19aac5['name']){delete _0x19aac5[_0x57ee('0x27')];}_0xda93c2[_0x57ee('0x17')](_0x3008f8)[_0x57ee('0x28')](_0x19aac5);};}exports[_0x57ee('0x29')]=function(_0x1514cd,_0x2a3a46){var _0x2f17f4={},_0x3075db={},_0x427619={'count':0x0,'rows':[]};var _0x1b6119=_[_0x57ee('0x2a')](db[_0x57ee('0x2b')][_0x57ee('0x2c')],function(_0x1034ca){return{'name':_0x1034ca[_0x57ee('0x2d')],'type':_0x1034ca[_0x57ee('0x2e')][_0x57ee('0x2f')]};});_0x3075db['model']=_[_0x57ee('0x2a')](_0x1b6119,_0x57ee('0x27'));_0x3075db['query']=_['keys'](_0x1514cd[_0x57ee('0x30')]);_0x3075db[_0x57ee('0x31')]=_[_0x57ee('0x32')](_0x3075db[_0x57ee('0x33')],_0x3075db[_0x57ee('0x30')]);_0x2f17f4[_0x57ee('0x34')]=_[_0x57ee('0x32')](_0x3075db[_0x57ee('0x33')],qs['fields'](_0x1514cd[_0x57ee('0x30')][_0x57ee('0x35')]));_0x2f17f4['attributes']=_0x2f17f4[_0x57ee('0x34')][_0x57ee('0x36')]?_0x2f17f4[_0x57ee('0x34')]:_0x3075db[_0x57ee('0x33')];if(!_0x1514cd[_0x57ee('0x30')][_0x57ee('0x37')](_0x57ee('0x38'))){_0x2f17f4[_0x57ee('0x1a')]=qs[_0x57ee('0x1a')](_0x1514cd['query'][_0x57ee('0x1a')]);_0x2f17f4['offset']=qs[_0x57ee('0x19')](_0x1514cd[_0x57ee('0x30')]['offset']);}_0x2f17f4[_0x57ee('0x39')]=qs[_0x57ee('0x3a')](_0x1514cd[_0x57ee('0x30')]['sort']);_0x2f17f4[_0x57ee('0x3b')]=qs[_0x57ee('0x31')](_[_0x57ee('0x3c')](_0x1514cd[_0x57ee('0x30')],_0x3075db[_0x57ee('0x31')]),_0x1b6119);if(_0x1514cd[_0x57ee('0x30')][_0x57ee('0x3d')]){_0x2f17f4[_0x57ee('0x3b')]=_['merge'](_0x2f17f4['where'],{'$or':_[_0x57ee('0x2a')](_0x1b6119,function(_0x9b7b6){if(_0x9b7b6['type']!==_0x57ee('0x3e')){var _0x2fd799={};_0x2fd799[_0x9b7b6[_0x57ee('0x27')]]={'$like':'%'+_0x1514cd['query']['filter']+'%'};return _0x2fd799;}})});}_0x2f17f4=_[_0x57ee('0x3f')]({},_0x2f17f4,_0x1514cd[_0x57ee('0x40')]);var _0x4ec8a5={'where':_0x2f17f4[_0x57ee('0x3b')]};return db[_0x57ee('0x2b')][_0x57ee('0x1c')](_0x4ec8a5)['then'](function(_0x1c2bc1){_0x427619['count']=_0x1c2bc1;if(_0x1514cd['query'][_0x57ee('0x41')]){_0x2f17f4[_0x57ee('0x42')]=[{'all':!![]}];}return db[_0x57ee('0x2b')][_0x57ee('0x43')](_0x2f17f4);})['then'](function(_0x1911cd){_0x427619[_0x57ee('0x44')]=_0x1911cd;return _0x427619;})[_0x57ee('0x20')](respondWithFilteredResult(_0x2a3a46,_0x2f17f4))[_0x57ee('0x45')](handleError(_0x2a3a46,null));};exports[_0x57ee('0x46')]=function(_0xf4365d,_0x1994a0){var _0x5cfede={'raw':!![],'where':{'id':_0xf4365d[_0x57ee('0x47')]['id']}},_0x19277d={};_0x19277d[_0x57ee('0x33')]=_['keys'](db[_0x57ee('0x2b')][_0x57ee('0x2c')]);_0x19277d[_0x57ee('0x30')]=_['keys'](_0xf4365d[_0x57ee('0x30')]);_0x19277d[_0x57ee('0x31')]=_[_0x57ee('0x32')](_0x19277d[_0x57ee('0x33')],_0x19277d[_0x57ee('0x30')]);_0x5cfede[_0x57ee('0x34')]=_['intersection'](_0x19277d[_0x57ee('0x33')],qs[_0x57ee('0x35')](_0xf4365d[_0x57ee('0x30')]['fields']));_0x5cfede['attributes']=_0x5cfede['attributes'][_0x57ee('0x36')]?_0x5cfede[_0x57ee('0x34')]:_0x19277d[_0x57ee('0x33')];if(_0xf4365d['query'][_0x57ee('0x41')]){_0x5cfede[_0x57ee('0x42')]=[{'all':!![]}];}_0x5cfede=_[_0x57ee('0x3f')]({},_0x5cfede,_0xf4365d[_0x57ee('0x40')]);return db['Template'][_0x57ee('0x48')](_0x5cfede)['then'](handleEntityNotFound(_0x1994a0,null))['then'](respondWithResult(_0x1994a0,null))[_0x57ee('0x45')](handleError(_0x1994a0,null));};exports[_0x57ee('0x49')]=function(_0x1141f8,_0x33a385){return db[_0x57ee('0x2b')][_0x57ee('0x49')](_0x1141f8[_0x57ee('0x4a')],{})[_0x57ee('0x20')](function(_0x31fe34){var _0x50dc74=_0x1141f8[_0x57ee('0x4b')][_0x57ee('0x22')]({'plain':!![]});if(!_0x50dc74)throw new Error(_0x57ee('0x4c'));if(_0x50dc74[_0x57ee('0x4d')]===_0x57ee('0x4b')){var _0xbaf2ad=_0x31fe34[_0x57ee('0x22')]({'plain':!![]});var _0x26ee8b=_0x57ee('0x4e');return db[_0x57ee('0x4f')][_0x57ee('0x48')]({'where':{'name':_0x26ee8b,'userProfileId':_0x50dc74[_0x57ee('0x50')]},'raw':!![]})['then'](function(_0x17c63f){if(_0x17c63f&&_0x17c63f[_0x57ee('0x51')]===0x0){return db[_0x57ee('0x23')][_0x57ee('0x49')]({'name':_0xbaf2ad[_0x57ee('0x27')],'resourceId':_0xbaf2ad['id'],'type':_0x17c63f[_0x57ee('0x27')],'sectionId':_0x17c63f['id']},{})[_0x57ee('0x20')](function(){return _0x31fe34;});}else{return _0x31fe34;}})[_0x57ee('0x45')](function(_0x388b5d){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x388b5d);throw _0x388b5d;});}return _0x31fe34;})[_0x57ee('0x20')](respondWithResult(_0x33a385,0xc9))['catch'](handleError(_0x33a385,null));};exports[_0x57ee('0x52')]=function(_0x85eedc,_0x51ca54){if(_0x85eedc[_0x57ee('0x4a')]['id']){delete _0x85eedc[_0x57ee('0x4a')]['id'];}return db['Template'][_0x57ee('0x48')]({'where':{'id':_0x85eedc[_0x57ee('0x47')]['id']}})[_0x57ee('0x20')](handleEntityNotFound(_0x51ca54,null))[_0x57ee('0x20')](saveUpdates(_0x85eedc['body'],null))[_0x57ee('0x20')](respondWithResult(_0x51ca54,null))[_0x57ee('0x45')](handleError(_0x51ca54,null));};exports[_0x57ee('0x21')]=function(_0x4e6fd9,_0x9a10ea){return db[_0x57ee('0x2b')][_0x57ee('0x48')]({'where':{'id':_0x4e6fd9[_0x57ee('0x47')]['id']}})[_0x57ee('0x20')](handleEntityNotFound(_0x9a10ea,null))[_0x57ee('0x20')](removeEntity(_0x9a10ea,null))[_0x57ee('0x45')](handleError(_0x9a10ea,null));};
\ No newline at end of file
index 9adeaf7..1502e60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x467d=['api','moment','bluebird','request-promise','./template.attributes','exports','tools_templates','lodash','util','../../config/logger'];(function(_0x571a17,_0x63fb3d){var _0x3ef337=function(_0x12096b){while(--_0x12096b){_0x571a17['push'](_0x571a17['shift']());}};_0x3ef337(++_0x63fb3d);}(_0x467d,0xcf));var _0xd467=function(_0x30c2fa,_0x19ca64){_0x30c2fa=_0x30c2fa-0x0;var _0x53c8d1=_0x467d[_0x30c2fa];return _0x53c8d1;};'use strict';var _=require(_0xd467('0x0'));var util=require(_0xd467('0x1'));var logger=require(_0xd467('0x2'))(_0xd467('0x3'));var moment=require(_0xd467('0x4'));var BPromise=require(_0xd467('0x5'));var rp=require(_0xd467('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd467('0x7'));module[_0xd467('0x8')]=function(_0x4360d9,_0x29660f){return _0x4360d9['define']('Template',attributes,{'tableName':_0xd467('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0346=['request-promise','path','rimraf','../../config/environment','./template.attributes','exports','define','Template','tools_templates','lodash','util','../../config/logger','api','moment'];(function(_0x4fd129,_0xc78de9){var _0xf43481=function(_0x286b37){while(--_0x286b37){_0x4fd129['push'](_0x4fd129['shift']());}};_0xf43481(++_0xc78de9);}(_0x0346,0x1ad));var _0x6034=function(_0x41dddf,_0x3dfe9e){_0x41dddf=_0x41dddf-0x0;var _0x54eb40=_0x0346[_0x41dddf];return _0x54eb40;};'use strict';var _=require(_0x6034('0x0'));var util=require(_0x6034('0x1'));var logger=require(_0x6034('0x2'))(_0x6034('0x3'));var moment=require(_0x6034('0x4'));var BPromise=require('bluebird');var rp=require(_0x6034('0x5'));var fs=require('fs');var path=require(_0x6034('0x6'));var rimraf=require(_0x6034('0x7'));var config=require(_0x6034('0x8'));var attributes=require(_0x6034('0x9'));module[_0x6034('0xa')]=function(_0x5f4029,_0x340476){return _0x5f4029[_0x6034('0xb')](_0x6034('0xc'),attributes,{'tableName':_0x6034('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 12549cf..1ddc834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x128c=['debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','Template,\x20%s,\x20%s','message','result','catch','GetTemplate','findAll','options','raw','where','attributes','limit','include','map','then','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','request\x20sent'];(function(_0x1f8e67,_0x274515){var _0x3b79a0=function(_0x7107f8){while(--_0x7107f8){_0x1f8e67['push'](_0x1f8e67['shift']());}};_0x3b79a0(++_0x274515);}(_0x128c,0x168));var _0xc128=function(_0x1843f7,_0x263aea){_0x1843f7=_0x1843f7-0x0;var _0x3834bd=_0x128c[_0x1843f7];return _0x3834bd;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc128('0x0'));var BPromise=require('bluebird');var rs=require(_0xc128('0x1'));var fs=require('fs');var Redis=require(_0xc128('0x2'));var db=require(_0xc128('0x3'))['db'];var utils=require(_0xc128('0x4'));var logger=require(_0xc128('0x5'))('rpc');var config=require(_0xc128('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xc128('0x7')][_0xc128('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xdb97df,_0x12365d,_0x2524f0){return new BPromise(function(_0x2c9989,_0x527492){return client[_0xc128('0x9')](_0xdb97df,_0x2524f0)['then'](function(_0xa8ef5e){logger[_0xc128('0xa')]('Template,\x20%s,\x20%s',_0x12365d,_0xc128('0xb'));logger[_0xc128('0xc')](_0xc128('0xd'),_0x12365d,_0xc128('0xb'),JSON[_0xc128('0xe')](_0xa8ef5e));if(_0xa8ef5e['error']){if(_0xa8ef5e[_0xc128('0xf')][_0xc128('0x10')]===0x1f4){logger[_0xc128('0xf')](_0xc128('0x11'),_0x12365d,_0xa8ef5e[_0xc128('0xf')][_0xc128('0x12')]);return _0x527492(_0xa8ef5e[_0xc128('0xf')][_0xc128('0x12')]);}logger[_0xc128('0xf')]('Template,\x20%s,\x20%s',_0x12365d,_0xa8ef5e[_0xc128('0xf')][_0xc128('0x12')]);return _0x2c9989(_0xa8ef5e[_0xc128('0xf')]['message']);}else{logger[_0xc128('0xa')](_0xc128('0x11'),_0x12365d,_0xc128('0xb'));_0x2c9989(_0xa8ef5e[_0xc128('0x13')][_0xc128('0x12')]);}})[_0xc128('0x14')](function(_0x401ca2){logger[_0xc128('0xf')]('Template,\x20%s,\x20%s',_0x12365d,_0x401ca2);_0x527492(_0x401ca2);});});}exports[_0xc128('0x15')]=function(_0x2bcca8){var _0x5d03e1=this;return new Promise(function(_0x8fd14,_0x5abc28){return db['Template'][_0xc128('0x16')]({'raw':_0x2bcca8[_0xc128('0x17')]?_0x2bcca8[_0xc128('0x17')][_0xc128('0x18')]===undefined?!![]:![]:!![],'where':_0x2bcca8[_0xc128('0x17')]?_0x2bcca8[_0xc128('0x17')][_0xc128('0x19')]||null:null,'attributes':_0x2bcca8[_0xc128('0x17')]?_0x2bcca8[_0xc128('0x17')][_0xc128('0x1a')]||null:null,'limit':_0x2bcca8[_0xc128('0x17')]?_0x2bcca8['options'][_0xc128('0x1b')]||null:null,'include':_0x2bcca8[_0xc128('0x17')]?_0x2bcca8[_0xc128('0x17')][_0xc128('0x1c')]?_[_0xc128('0x1d')](_0x2bcca8[_0xc128('0x17')][_0xc128('0x1c')],function(_0x26c2a4){return{'model':db[_0x26c2a4['model']],'as':_0x26c2a4['as'],'attributes':_0x26c2a4['attributes'],'include':_0x26c2a4['include']?_[_0xc128('0x1d')](_0x26c2a4[_0xc128('0x1c')],function(_0x19aea5){return{'model':db[_0x19aea5['model']],'as':_0x19aea5['as'],'attributes':_0x19aea5[_0xc128('0x1a')],'include':_0x19aea5[_0xc128('0x1c')]?_['map'](_0x19aea5[_0xc128('0x1c')],function(_0x53dbe8){return{'model':db[_0x53dbe8['model']],'as':_0x53dbe8['as'],'attributes':_0x53dbe8[_0xc128('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc128('0x1e')](function(_0x2217a8){logger['info'](_0xc128('0x15'),_0x2bcca8);logger[_0xc128('0xc')]('GetTemplate',_0x2bcca8,JSON[_0xc128('0xe')](_0x2217a8));_0x8fd14(_0x2217a8);})[_0xc128('0x14')](function(_0x446acc){logger[_0xc128('0xf')](_0xc128('0x15'),_0x446acc[_0xc128('0x12')],_0x2bcca8);_0x5abc28(_0x5d03e1[_0xc128('0xf')](0x1f4,_0x446acc[_0xc128('0x12')]));});});};
\ No newline at end of file
+var _0x3c1f=['info','Template,\x20%s,\x20%s','request\x20sent','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTemplate','Template','options','raw','attributes','limit','include','model','map','debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x49e0e5,_0x1f1f6b){var _0x249c90=function(_0x2851ea){while(--_0x2851ea){_0x49e0e5['push'](_0x49e0e5['shift']());}};_0x249c90(++_0x1f1f6b);}(_0x3c1f,0x1ce));var _0xf3c1=function(_0x442727,_0x4fc0a6){_0x442727=_0x442727-0x0;var _0x35faf4=_0x3c1f[_0x442727];return _0x35faf4;};'use strict';var _=require(_0xf3c1('0x0'));var util=require('util');var moment=require(_0xf3c1('0x1'));var BPromise=require(_0xf3c1('0x2'));var rs=require(_0xf3c1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf3c1('0x4'))['db'];var utils=require(_0xf3c1('0x5'));var logger=require(_0xf3c1('0x6'))(_0xf3c1('0x7'));var config=require(_0xf3c1('0x8'));var jayson=require(_0xf3c1('0x9'));var client=jayson[_0xf3c1('0xa')][_0xf3c1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1bdf83,_0x1b5885,_0x4e225e){return new BPromise(function(_0x29475a,_0xd0b1fa){return client[_0xf3c1('0xc')](_0x1bdf83,_0x4e225e)[_0xf3c1('0xd')](function(_0xe518da){logger[_0xf3c1('0xe')](_0xf3c1('0xf'),_0x1b5885,_0xf3c1('0x10'));logger['debug'](_0xf3c1('0x11'),_0x1b5885,_0xf3c1('0x10'),JSON[_0xf3c1('0x12')](_0xe518da));if(_0xe518da[_0xf3c1('0x13')]){if(_0xe518da[_0xf3c1('0x13')][_0xf3c1('0x14')]===0x1f4){logger[_0xf3c1('0x13')]('Template,\x20%s,\x20%s',_0x1b5885,_0xe518da[_0xf3c1('0x13')][_0xf3c1('0x15')]);return _0xd0b1fa(_0xe518da[_0xf3c1('0x13')][_0xf3c1('0x15')]);}logger[_0xf3c1('0x13')](_0xf3c1('0xf'),_0x1b5885,_0xe518da['error'][_0xf3c1('0x15')]);return _0x29475a(_0xe518da[_0xf3c1('0x13')][_0xf3c1('0x15')]);}else{logger[_0xf3c1('0xe')](_0xf3c1('0xf'),_0x1b5885,_0xf3c1('0x10'));_0x29475a(_0xe518da[_0xf3c1('0x16')][_0xf3c1('0x15')]);}})[_0xf3c1('0x17')](function(_0x3c250e){logger[_0xf3c1('0x13')](_0xf3c1('0xf'),_0x1b5885,_0x3c250e);_0xd0b1fa(_0x3c250e);});});}exports[_0xf3c1('0x18')]=function(_0x1917af){var _0x3d1056=this;return new Promise(function(_0x55cef2,_0x45f3e4){return db[_0xf3c1('0x19')]['findAll']({'raw':_0x1917af[_0xf3c1('0x1a')]?_0x1917af[_0xf3c1('0x1a')][_0xf3c1('0x1b')]===undefined?!![]:![]:!![],'where':_0x1917af[_0xf3c1('0x1a')]?_0x1917af[_0xf3c1('0x1a')]['where']||null:null,'attributes':_0x1917af[_0xf3c1('0x1a')]?_0x1917af[_0xf3c1('0x1a')][_0xf3c1('0x1c')]||null:null,'limit':_0x1917af['options']?_0x1917af[_0xf3c1('0x1a')][_0xf3c1('0x1d')]||null:null,'include':_0x1917af[_0xf3c1('0x1a')]?_0x1917af[_0xf3c1('0x1a')][_0xf3c1('0x1e')]?_['map'](_0x1917af[_0xf3c1('0x1a')][_0xf3c1('0x1e')],function(_0x5c7406){return{'model':db[_0x5c7406[_0xf3c1('0x1f')]],'as':_0x5c7406['as'],'attributes':_0x5c7406['attributes'],'include':_0x5c7406[_0xf3c1('0x1e')]?_[_0xf3c1('0x20')](_0x5c7406['include'],function(_0xe2c02b){return{'model':db[_0xe2c02b[_0xf3c1('0x1f')]],'as':_0xe2c02b['as'],'attributes':_0xe2c02b[_0xf3c1('0x1c')],'include':_0xe2c02b[_0xf3c1('0x1e')]?_['map'](_0xe2c02b[_0xf3c1('0x1e')],function(_0x1d0e69){return{'model':db[_0x1d0e69[_0xf3c1('0x1f')]],'as':_0x1d0e69['as'],'attributes':_0x1d0e69[_0xf3c1('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xf3c1('0xd')](function(_0x2154fa){logger[_0xf3c1('0xe')](_0xf3c1('0x18'),_0x1917af);logger[_0xf3c1('0x21')](_0xf3c1('0x18'),_0x1917af,JSON[_0xf3c1('0x12')](_0x2154fa));_0x55cef2(_0x2154fa);})[_0xf3c1('0x17')](function(_0x5b5aa4){logger[_0xf3c1('0x13')](_0xf3c1('0x18'),_0x5b5aa4[_0xf3c1('0x15')],_0x1917af);_0x45f3e4(_0x3d1056[_0xf3c1('0x13')](0x1f4,_0x5b5aa4[_0xf3c1('0x15')]));});});};
\ No newline at end of file
index b8708ed..14d5e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1477=['delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./trigger.controller','get','isAuthenticated','index','/:id/all_conditions','/:id/any_conditions','getActions','create','addAllCondition','post','/:id/actions','addAction','put','/:id'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x1477,0x122));var _0x7147=function(_0x559b2d,_0x23c7b2){_0x559b2d=_0x559b2d-0x0;var _0x2c4553=_0x1477[_0x559b2d];return _0x2c4553;};'use strict';var multer=require(_0x7147('0x0'));var util=require(_0x7147('0x1'));var path=require(_0x7147('0x2'));var timeout=require(_0x7147('0x3'));var express=require(_0x7147('0x4'));var router=express['Router']();var fs_extra=require(_0x7147('0x5'));var auth=require(_0x7147('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7147('0x7'));var controller=require(_0x7147('0x8'));router[_0x7147('0x9')]('/',auth[_0x7147('0xa')](),controller[_0x7147('0xb')]);router[_0x7147('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x7147('0xc'),auth[_0x7147('0xa')](),controller['getAllConditions']);router[_0x7147('0x9')](_0x7147('0xd'),auth[_0x7147('0xa')](),controller['getAnyConditions']);router[_0x7147('0x9')]('/:id/actions',auth['isAuthenticated'](),controller[_0x7147('0xe')]);router['post']('/',auth[_0x7147('0xa')](),controller[_0x7147('0xf')]);router['post']('/:id/all_conditions',auth[_0x7147('0xa')](),controller[_0x7147('0x10')]);router[_0x7147('0x11')](_0x7147('0xd'),auth[_0x7147('0xa')](),controller['addAnyCondition']);router[_0x7147('0x11')](_0x7147('0x12'),auth[_0x7147('0xa')](),controller[_0x7147('0x13')]);router[_0x7147('0x14')](_0x7147('0x15'),auth[_0x7147('0xa')](),controller['update']);router[_0x7147('0x16')](_0x7147('0x15'),auth[_0x7147('0xa')](),controller['destroy']);module[_0x7147('0x17')]=router;
\ No newline at end of file
+var _0x2e98=['connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./trigger.controller','index','get','/:id','isAuthenticated','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','/:id/all_conditions','addAllCondition','addAnyCondition','addAction','update','delete','multer','util','path'];(function(_0x204e8f,_0x551d92){var _0x75770=function(_0x40ace5){while(--_0x40ace5){_0x204e8f['push'](_0x204e8f['shift']());}};_0x75770(++_0x551d92);}(_0x2e98,0x110));var _0x82e9=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x2e98[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0x82e9('0x0'));var util=require(_0x82e9('0x1'));var path=require(_0x82e9('0x2'));var timeout=require(_0x82e9('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x82e9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x82e9('0x5'));var config=require(_0x82e9('0x6'));var controller=require(_0x82e9('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x82e9('0x8')]);router[_0x82e9('0x9')](_0x82e9('0xa'),auth[_0x82e9('0xb')](),controller['show']);router[_0x82e9('0x9')]('/:id/all_conditions',auth[_0x82e9('0xb')](),controller[_0x82e9('0xc')]);router[_0x82e9('0x9')](_0x82e9('0xd'),auth[_0x82e9('0xb')](),controller[_0x82e9('0xe')]);router[_0x82e9('0x9')](_0x82e9('0xf'),auth[_0x82e9('0xb')](),controller[_0x82e9('0x10')]);router[_0x82e9('0x11')]('/',auth['isAuthenticated'](),controller[_0x82e9('0x12')]);router[_0x82e9('0x11')](_0x82e9('0x13'),auth[_0x82e9('0xb')](),controller[_0x82e9('0x14')]);router[_0x82e9('0x11')]('/:id/any_conditions',auth[_0x82e9('0xb')](),controller[_0x82e9('0x15')]);router[_0x82e9('0x11')]('/:id/actions',auth['isAuthenticated'](),controller[_0x82e9('0x16')]);router['put'](_0x82e9('0xa'),auth[_0x82e9('0xb')](),controller[_0x82e9('0x17')]);router[_0x82e9('0x18')]('/:id',auth[_0x82e9('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 3831c8d..fe03d03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc340=['STRING','exports'];(function(_0x47f545,_0x162485){var _0x370fe3=function(_0x45c9e3){while(--_0x45c9e3){_0x47f545['push'](_0x47f545['shift']());}};_0x370fe3(++_0x162485);}(_0xc340,0x9b));var _0x0c34=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc340[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0x0c34('0x0')]={'name':{'type':Sequelize[_0x0c34('0x1')]},'channel':{'type':Sequelize[_0x0c34('0x1')]},'description':{'type':Sequelize[_0x0c34('0x1')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xfbc3=['exports','STRING','sequelize'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xfbc3,0x19d));var _0x3fbc=function(_0x46c5ec,_0x270606){_0x46c5ec=_0x46c5ec-0x0;var _0x3d29f1=_0xfbc3[_0x46c5ec];return _0x3d29f1;};'use strict';var Sequelize=require(_0x3fbc('0x0'));module[_0x3fbc('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x3fbc('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 6bf78a6..2bcc2b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f16=['type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','keys','find','create','user','UserProfileSection','userProfileId','autoAssociation','body','addAllCondition','Condition','addAnyCondition','getAllConditions','findOne','length','pick','getAnyConditions','Action','getActions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','Triggers','UserProfileResource','error','stack','name','send','index','map','Trigger','rawAttributes','fieldName'];(function(_0x10a212,_0x579d85){var _0x23c82b=function(_0x412ea9){while(--_0x412ea9){_0x10a212['push'](_0x10a212['shift']());}};_0x23c82b(++_0x579d85);}(_0x0f16,0xdf));var _0x60f1=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0f16[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0x60f1('0x0'));var rimraf=require(_0x60f1('0x1'));var zipdir=require(_0x60f1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x60f1('0x3'));var moment=require(_0x60f1('0x4'));var BPromise=require(_0x60f1('0x5'));var Mustache=require(_0x60f1('0x6'));var util=require('util');var path=require('path');var sox=require(_0x60f1('0x7'));var csv=require(_0x60f1('0x8'));var ejs=require(_0x60f1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x60f1('0xa'));var squel=require(_0x60f1('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x60f1('0xc'));var Papa=require('papaparse');var Redis=require(_0x60f1('0xd'));var authService=require(_0x60f1('0xe'));var qs=require(_0x60f1('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x60f1('0x10'));var logger=require('../../config/logger')(_0x60f1('0x11'));var utils=require(_0x60f1('0x12'));var config=require(_0x60f1('0x13'));var licenseUtil=require(_0x60f1('0x14'));var db=require(_0x60f1('0x15'))['db'];function respondWithStatusCode(_0x24470d,_0x9e9aca){_0x9e9aca=_0x9e9aca||0xcc;return function(_0x5b6db3){if(_0x5b6db3){return _0x24470d[_0x60f1('0x16')](_0x9e9aca);}return _0x24470d[_0x60f1('0x17')](_0x9e9aca)[_0x60f1('0x18')]();};}function respondWithResult(_0x16b561,_0x3783a1){_0x3783a1=_0x3783a1||0xc8;return function(_0x2fa019){if(_0x2fa019){return _0x16b561['status'](_0x3783a1)['json'](_0x2fa019);}};}function respondWithFilteredResult(_0x41e7d4,_0x1954f5){return function(_0x16ca89){if(_0x16ca89){var _0x2f7685=typeof _0x1954f5[_0x60f1('0x19')]===_0x60f1('0x1a')&&typeof _0x1954f5[_0x60f1('0x1b')]===_0x60f1('0x1a');var _0x54f4cd=_0x16ca89[_0x60f1('0x1c')];var _0x5341d4=_0x2f7685?0x0:_0x1954f5[_0x60f1('0x19')];var _0x52d8ec=_0x2f7685?_0x16ca89[_0x60f1('0x1c')]:_0x1954f5['offset']+_0x1954f5['limit'];var _0x5b02bc;if(_0x52d8ec>=_0x54f4cd){_0x52d8ec=_0x54f4cd;_0x5b02bc=0xc8;}else{_0x5b02bc=0xce;}_0x41e7d4[_0x60f1('0x17')](_0x5b02bc);return _0x41e7d4[_0x60f1('0x1d')](_0x60f1('0x1e'),_0x5341d4+'-'+_0x52d8ec+'/'+_0x54f4cd)[_0x60f1('0x1f')](_0x16ca89);}return null;};}function patchUpdates(_0x2b029f){return function(_0x5ddead){try{jsonpatch[_0x60f1('0x20')](_0x5ddead,_0x2b029f,!![]);}catch(_0x8be0de){return BPromise[_0x60f1('0x21')](_0x8be0de);}return _0x5ddead[_0x60f1('0x22')]();};}function saveUpdates(_0x3c1799,_0x559cfc){return function(_0x22547e){if(_0x22547e){return _0x22547e[_0x60f1('0x23')](_0x3c1799)[_0x60f1('0x24')](function(_0x528ea3){return _0x528ea3;});}return null;};}function removeEntity(_0x572f4b,_0x43425d){return function(_0x5bf326){if(_0x5bf326){return _0x5bf326[_0x60f1('0x25')]()[_0x60f1('0x24')](function(){var _0x5258de=_0x5bf326[_0x60f1('0x26')]({'plain':!![]});var _0x46eb6d=_0x60f1('0x27');return db[_0x60f1('0x28')]['destroy']({'where':{'type':_0x46eb6d,'resourceId':_0x5258de['id']}})['then'](function(){return _0x5bf326;});})['then'](function(){_0x572f4b[_0x60f1('0x17')](0xcc)[_0x60f1('0x18')]();});}};}function handleEntityNotFound(_0x4eff21,_0x48d6c4){return function(_0x328cde){if(!_0x328cde){_0x4eff21[_0x60f1('0x16')](0x194);}return _0x328cde;};}function handleError(_0x53ca5d,_0x2f3f33){_0x2f3f33=_0x2f3f33||0x1f4;return function(_0x20e7d9){logger[_0x60f1('0x29')](_0x20e7d9[_0x60f1('0x2a')]);if(_0x20e7d9['name']){delete _0x20e7d9[_0x60f1('0x2b')];}_0x53ca5d[_0x60f1('0x17')](_0x2f3f33)[_0x60f1('0x2c')](_0x20e7d9);};}exports[_0x60f1('0x2d')]=function(_0x2aad8d,_0x455b0a){var _0x505869={},_0x2b43b3={},_0x27e175={'count':0x0,'rows':[]};var _0x72de46=_[_0x60f1('0x2e')](db[_0x60f1('0x2f')][_0x60f1('0x30')],function(_0x44e303){return{'name':_0x44e303[_0x60f1('0x31')],'type':_0x44e303[_0x60f1('0x32')][_0x60f1('0x33')]};});_0x2b43b3[_0x60f1('0x34')]=_[_0x60f1('0x2e')](_0x72de46,_0x60f1('0x2b'));_0x2b43b3[_0x60f1('0x35')]=_['keys'](_0x2aad8d[_0x60f1('0x35')]);_0x2b43b3['filters']=_[_0x60f1('0x36')](_0x2b43b3[_0x60f1('0x34')],_0x2b43b3['query']);_0x505869[_0x60f1('0x37')]=_[_0x60f1('0x36')](_0x2b43b3[_0x60f1('0x34')],qs[_0x60f1('0x38')](_0x2aad8d[_0x60f1('0x35')]['fields']));_0x505869[_0x60f1('0x37')]=_0x505869[_0x60f1('0x37')]['length']?_0x505869[_0x60f1('0x37')]:_0x2b43b3['model'];if(!_0x2aad8d[_0x60f1('0x35')][_0x60f1('0x39')](_0x60f1('0x3a'))){_0x505869[_0x60f1('0x1b')]=qs['limit'](_0x2aad8d[_0x60f1('0x35')]['limit']);_0x505869[_0x60f1('0x19')]=qs[_0x60f1('0x19')](_0x2aad8d[_0x60f1('0x35')][_0x60f1('0x19')]);}_0x505869[_0x60f1('0x3b')]=qs[_0x60f1('0x3c')](_0x2aad8d[_0x60f1('0x35')]['sort']);_0x505869['where']=qs[_0x60f1('0x3d')](_['pick'](_0x2aad8d['query'],_0x2b43b3['filters']),_0x72de46);if(_0x2aad8d['query'][_0x60f1('0x3e')]){_0x505869[_0x60f1('0x3f')]=_['merge'](_0x505869[_0x60f1('0x3f')],{'$or':_[_0x60f1('0x2e')](_0x72de46,function(_0x294825){if(_0x294825[_0x60f1('0x32')]!==_0x60f1('0x40')){var _0x4ea906={};_0x4ea906[_0x294825['name']]={'$like':'%'+_0x2aad8d[_0x60f1('0x35')][_0x60f1('0x3e')]+'%'};return _0x4ea906;}})});}_0x505869=_[_0x60f1('0x41')]({},_0x505869,_0x2aad8d[_0x60f1('0x42')]);var _0x470d09={'where':_0x505869[_0x60f1('0x3f')]};return db[_0x60f1('0x2f')][_0x60f1('0x1c')](_0x470d09)[_0x60f1('0x24')](function(_0x644019){_0x27e175[_0x60f1('0x1c')]=_0x644019;if(_0x2aad8d[_0x60f1('0x35')][_0x60f1('0x43')]){_0x505869[_0x60f1('0x44')]=[{'all':!![]}];}return db[_0x60f1('0x2f')][_0x60f1('0x45')](_0x505869);})[_0x60f1('0x24')](function(_0x526ca9){_0x27e175['rows']=_0x526ca9;return _0x27e175;})[_0x60f1('0x24')](respondWithFilteredResult(_0x455b0a,_0x505869))[_0x60f1('0x46')](handleError(_0x455b0a,null));};exports[_0x60f1('0x47')]=function(_0x483142,_0x216982){var _0x5827e7={'raw':![],'where':{'id':_0x483142[_0x60f1('0x48')]['id']}},_0x1022fd={};_0x1022fd[_0x60f1('0x34')]=_[_0x60f1('0x49')](db['Trigger']['rawAttributes']);_0x1022fd['query']=_['keys'](_0x483142[_0x60f1('0x35')]);_0x1022fd[_0x60f1('0x3d')]=_['intersection'](_0x1022fd['model'],_0x1022fd[_0x60f1('0x35')]);_0x5827e7['attributes']=_['intersection'](_0x1022fd[_0x60f1('0x34')],qs[_0x60f1('0x38')](_0x483142['query']['fields']));_0x5827e7[_0x60f1('0x37')]=_0x5827e7[_0x60f1('0x37')]['length']?_0x5827e7[_0x60f1('0x37')]:_0x1022fd[_0x60f1('0x34')];if(_0x483142[_0x60f1('0x35')]['includeAll']){_0x5827e7['include']=[{'all':!![]}];}_0x5827e7=_[_0x60f1('0x41')]({},_0x5827e7,_0x483142[_0x60f1('0x42')]);return db[_0x60f1('0x2f')][_0x60f1('0x4a')](_0x5827e7)[_0x60f1('0x24')](handleEntityNotFound(_0x216982,null))[_0x60f1('0x24')](respondWithResult(_0x216982,null))[_0x60f1('0x46')](handleError(_0x216982,null));};exports[_0x60f1('0x4b')]=function(_0x454f74,_0x216382){return db[_0x60f1('0x2f')][_0x60f1('0x4b')](_0x454f74['body'],{})[_0x60f1('0x24')](function(_0x58b6ec){var _0x475d8=_0x454f74[_0x60f1('0x4c')][_0x60f1('0x26')]({'plain':!![]});if(!_0x475d8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x475d8['role']===_0x60f1('0x4c')){var _0x255022=_0x58b6ec['get']({'plain':!![]});var _0x45b4f7=_0x60f1('0x27');return db[_0x60f1('0x4d')]['find']({'where':{'name':_0x45b4f7,'userProfileId':_0x475d8[_0x60f1('0x4e')]},'raw':!![]})[_0x60f1('0x24')](function(_0x34b028){if(_0x34b028&&_0x34b028[_0x60f1('0x4f')]===0x0){return db[_0x60f1('0x28')][_0x60f1('0x4b')]({'name':_0x255022[_0x60f1('0x2b')],'resourceId':_0x255022['id'],'type':_0x34b028[_0x60f1('0x2b')],'sectionId':_0x34b028['id']},{})[_0x60f1('0x24')](function(){return _0x58b6ec;});}else{return _0x58b6ec;}})['catch'](function(_0x5f1ab9){logger[_0x60f1('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5f1ab9);throw _0x5f1ab9;});}return _0x58b6ec;})[_0x60f1('0x24')](respondWithResult(_0x216382,0xc9))[_0x60f1('0x46')](handleError(_0x216382,null));};exports[_0x60f1('0x23')]=function(_0x364ccf,_0x2030df){if(_0x364ccf[_0x60f1('0x50')]['id']){delete _0x364ccf[_0x60f1('0x50')]['id'];}return db[_0x60f1('0x2f')][_0x60f1('0x4a')]({'where':{'id':_0x364ccf[_0x60f1('0x48')]['id']}})[_0x60f1('0x24')](handleEntityNotFound(_0x2030df,null))[_0x60f1('0x24')](saveUpdates(_0x364ccf['body'],null))[_0x60f1('0x24')](respondWithResult(_0x2030df,null))[_0x60f1('0x46')](handleError(_0x2030df,null));};exports['destroy']=function(_0x348b70,_0x5e5629){return db['Trigger'][_0x60f1('0x4a')]({'where':{'id':_0x348b70['params']['id']}})[_0x60f1('0x24')](handleEntityNotFound(_0x5e5629,null))['then'](removeEntity(_0x5e5629,null))[_0x60f1('0x46')](handleError(_0x5e5629,null));};exports[_0x60f1('0x51')]=function(_0x6bbddb,_0x4b5841,_0x18291e){if(_0x6bbddb[_0x60f1('0x50')]['id']){delete _0x6bbddb['body']['id'];}return db[_0x60f1('0x2f')][_0x60f1('0x4a')]({'where':{'id':_0x6bbddb[_0x60f1('0x48')]['id']}})[_0x60f1('0x24')](handleEntityNotFound(_0x4b5841,null))[_0x60f1('0x24')](function(_0x1305c5){if(_0x1305c5){_0x6bbddb[_0x60f1('0x50')]['TriggerAllId']=_0x1305c5['id'];return db[_0x60f1('0x52')]['create'](_0x6bbddb[_0x60f1('0x50')]);}})[_0x60f1('0x24')](respondWithResult(_0x4b5841,null))[_0x60f1('0x46')](handleError(_0x4b5841,null));};exports[_0x60f1('0x53')]=function(_0x335b09,_0xe5174c,_0x797348){if(_0x335b09['body']['id']){delete _0x335b09[_0x60f1('0x50')]['id'];}return db['Trigger'][_0x60f1('0x4a')]({'where':{'id':_0x335b09[_0x60f1('0x48')]['id']}})['then'](handleEntityNotFound(_0xe5174c,null))[_0x60f1('0x24')](function(_0x232838){if(_0x232838){_0x335b09[_0x60f1('0x50')]['TriggerAnyId']=_0x232838['id'];return db['Condition'][_0x60f1('0x4b')](_0x335b09[_0x60f1('0x50')]);}})['then'](respondWithResult(_0xe5174c,null))[_0x60f1('0x46')](handleError(_0xe5174c,null));};exports[_0x60f1('0x54')]=function(_0x3d1382,_0x1f56ce,_0x1d767f){var _0x59ef8b={};var _0x55e9a9={};var _0x36321d;var _0x51c418;return db[_0x60f1('0x2f')][_0x60f1('0x55')]({'where':{'id':_0x3d1382[_0x60f1('0x48')]['id']}})[_0x60f1('0x24')](handleEntityNotFound(_0x1f56ce,null))[_0x60f1('0x24')](function(_0x5e582c){if(_0x5e582c){_0x36321d=_0x5e582c;_0x55e9a9['model']=_[_0x60f1('0x49')](db[_0x60f1('0x52')]['rawAttributes']);_0x55e9a9[_0x60f1('0x35')]=_['keys'](_0x3d1382[_0x60f1('0x35')]);_0x55e9a9[_0x60f1('0x3d')]=_['intersection'](_0x55e9a9[_0x60f1('0x34')],_0x55e9a9[_0x60f1('0x35')]);_0x59ef8b[_0x60f1('0x37')]=_[_0x60f1('0x36')](_0x55e9a9[_0x60f1('0x34')],qs[_0x60f1('0x38')](_0x3d1382[_0x60f1('0x35')][_0x60f1('0x38')]));_0x59ef8b[_0x60f1('0x37')]=_0x59ef8b[_0x60f1('0x37')][_0x60f1('0x56')]?_0x59ef8b['attributes']:_0x55e9a9[_0x60f1('0x34')];_0x59ef8b['order']=qs[_0x60f1('0x3c')](_0x3d1382[_0x60f1('0x35')]['sort']);_0x59ef8b['where']=qs['filters'](_[_0x60f1('0x57')](_0x3d1382[_0x60f1('0x35')],_0x55e9a9['filters']));if(_0x3d1382['query'][_0x60f1('0x3e')]){_0x59ef8b[_0x60f1('0x3f')]=_[_0x60f1('0x41')](_0x59ef8b[_0x60f1('0x3f')],{'$or':_['map'](_0x59ef8b[_0x60f1('0x37')],function(_0x2de8a8){var _0x3d1fc2={};_0x3d1fc2[_0x2de8a8]={'$like':'%'+_0x3d1382['query'][_0x60f1('0x3e')]+'%'};return _0x3d1fc2;})});}_0x59ef8b=_[_0x60f1('0x41')]({},_0x59ef8b,_0x3d1382[_0x60f1('0x42')]);return _0x36321d[_0x60f1('0x54')](_0x59ef8b);}})[_0x60f1('0x24')](function(_0x400471){if(_0x400471){_0x51c418=_0x400471['length'];if(!_0x3d1382['query'][_0x60f1('0x39')](_0x60f1('0x3a'))){_0x59ef8b[_0x60f1('0x1b')]=qs['limit'](_0x3d1382[_0x60f1('0x35')][_0x60f1('0x1b')]);_0x59ef8b['offset']=qs[_0x60f1('0x19')](_0x3d1382['query']['offset']);}return _0x36321d[_0x60f1('0x54')](_0x59ef8b);}})[_0x60f1('0x24')](function(_0x23d258){if(_0x23d258){return _0x23d258?{'count':_0x51c418,'rows':_0x23d258}:null;}})[_0x60f1('0x24')](respondWithResult(_0x1f56ce,null))[_0x60f1('0x46')](handleError(_0x1f56ce,null));};exports[_0x60f1('0x58')]=function(_0x4ca1cb,_0x4c89d8,_0x15bb4f){var _0x2894f5={};var _0x4cb4e4={};var _0x2f148f;var _0x2fd90d;return db['Trigger']['findOne']({'where':{'id':_0x4ca1cb[_0x60f1('0x48')]['id']}})['then'](handleEntityNotFound(_0x4c89d8,null))[_0x60f1('0x24')](function(_0x4f9755){if(_0x4f9755){_0x2f148f=_0x4f9755;_0x4cb4e4['model']=_[_0x60f1('0x49')](db[_0x60f1('0x52')]['rawAttributes']);_0x4cb4e4[_0x60f1('0x35')]=_[_0x60f1('0x49')](_0x4ca1cb[_0x60f1('0x35')]);_0x4cb4e4[_0x60f1('0x3d')]=_[_0x60f1('0x36')](_0x4cb4e4[_0x60f1('0x34')],_0x4cb4e4['query']);_0x2894f5[_0x60f1('0x37')]=_[_0x60f1('0x36')](_0x4cb4e4[_0x60f1('0x34')],qs[_0x60f1('0x38')](_0x4ca1cb[_0x60f1('0x35')][_0x60f1('0x38')]));_0x2894f5['attributes']=_0x2894f5[_0x60f1('0x37')][_0x60f1('0x56')]?_0x2894f5['attributes']:_0x4cb4e4['model'];_0x2894f5[_0x60f1('0x3b')]=qs[_0x60f1('0x3c')](_0x4ca1cb[_0x60f1('0x35')][_0x60f1('0x3c')]);_0x2894f5[_0x60f1('0x3f')]=qs[_0x60f1('0x3d')](_[_0x60f1('0x57')](_0x4ca1cb[_0x60f1('0x35')],_0x4cb4e4[_0x60f1('0x3d')]));if(_0x4ca1cb['query'][_0x60f1('0x3e')]){_0x2894f5[_0x60f1('0x3f')]=_['merge'](_0x2894f5['where'],{'$or':_['map'](_0x2894f5[_0x60f1('0x37')],function(_0x289596){var _0x11ac6b={};_0x11ac6b[_0x289596]={'$like':'%'+_0x4ca1cb[_0x60f1('0x35')]['filter']+'%'};return _0x11ac6b;})});}_0x2894f5=_[_0x60f1('0x41')]({},_0x2894f5,_0x4ca1cb[_0x60f1('0x42')]);return _0x2f148f[_0x60f1('0x58')](_0x2894f5);}})[_0x60f1('0x24')](function(_0xc976c8){if(_0xc976c8){_0x2fd90d=_0xc976c8[_0x60f1('0x56')];if(!_0x4ca1cb['query'][_0x60f1('0x39')](_0x60f1('0x3a'))){_0x2894f5[_0x60f1('0x1b')]=qs[_0x60f1('0x1b')](_0x4ca1cb['query'][_0x60f1('0x1b')]);_0x2894f5[_0x60f1('0x19')]=qs[_0x60f1('0x19')](_0x4ca1cb[_0x60f1('0x35')][_0x60f1('0x19')]);}return _0x2f148f[_0x60f1('0x58')](_0x2894f5);}})[_0x60f1('0x24')](function(_0x499b44){if(_0x499b44){return _0x499b44?{'count':_0x2fd90d,'rows':_0x499b44}:null;}})[_0x60f1('0x24')](respondWithResult(_0x4c89d8,null))[_0x60f1('0x46')](handleError(_0x4c89d8,null));};exports['addAction']=function(_0x3f661f,_0x27b526,_0x39da99){if(_0x3f661f[_0x60f1('0x50')]['id']){delete _0x3f661f[_0x60f1('0x50')]['id'];}return db[_0x60f1('0x2f')][_0x60f1('0x4a')]({'where':{'id':_0x3f661f[_0x60f1('0x48')]['id']}})[_0x60f1('0x24')](handleEntityNotFound(_0x27b526,null))['then'](function(_0x1f4dd8){if(_0x1f4dd8){_0x3f661f[_0x60f1('0x50')]['TriggerId']=_0x1f4dd8['id'];return db[_0x60f1('0x59')][_0x60f1('0x4b')](_0x3f661f[_0x60f1('0x50')]);}})['then'](respondWithResult(_0x27b526,null))[_0x60f1('0x46')](handleError(_0x27b526,null));};exports[_0x60f1('0x5a')]=function(_0x4af323,_0x25b94f,_0x534fd9){var _0x101f85={};var _0xcf20fa={};var _0x8fa7ee;var _0x1be7ff;return db[_0x60f1('0x2f')][_0x60f1('0x55')]({'where':{'id':_0x4af323[_0x60f1('0x48')]['id']}})[_0x60f1('0x24')](handleEntityNotFound(_0x25b94f,null))[_0x60f1('0x24')](function(_0xf6ad1){if(_0xf6ad1){_0x8fa7ee=_0xf6ad1;_0xcf20fa['model']=_[_0x60f1('0x49')](db['Action'][_0x60f1('0x30')]);_0xcf20fa[_0x60f1('0x35')]=_[_0x60f1('0x49')](_0x4af323['query']);_0xcf20fa['filters']=_['intersection'](_0xcf20fa[_0x60f1('0x34')],_0xcf20fa[_0x60f1('0x35')]);_0x101f85[_0x60f1('0x37')]=_[_0x60f1('0x36')](_0xcf20fa[_0x60f1('0x34')],qs['fields'](_0x4af323[_0x60f1('0x35')][_0x60f1('0x38')]));_0x101f85[_0x60f1('0x37')]=_0x101f85[_0x60f1('0x37')][_0x60f1('0x56')]?_0x101f85[_0x60f1('0x37')]:_0xcf20fa[_0x60f1('0x34')];_0x101f85['order']=qs[_0x60f1('0x3c')](_0x4af323[_0x60f1('0x35')][_0x60f1('0x3c')]);_0x101f85[_0x60f1('0x3f')]=qs[_0x60f1('0x3d')](_[_0x60f1('0x57')](_0x4af323[_0x60f1('0x35')],_0xcf20fa[_0x60f1('0x3d')]));if(_0x4af323['query'][_0x60f1('0x3e')]){_0x101f85['where']=_['merge'](_0x101f85[_0x60f1('0x3f')],{'$or':_['map'](_0x101f85[_0x60f1('0x37')],function(_0x4540c6){var _0x2e7cbd={};_0x2e7cbd[_0x4540c6]={'$like':'%'+_0x4af323[_0x60f1('0x35')][_0x60f1('0x3e')]+'%'};return _0x2e7cbd;})});}_0x101f85=_['merge']({},_0x101f85,_0x4af323['options']);return _0x8fa7ee['getActions'](_0x101f85);}})[_0x60f1('0x24')](function(_0x27e92d){if(_0x27e92d){_0x1be7ff=_0x27e92d[_0x60f1('0x56')];if(!_0x4af323[_0x60f1('0x35')][_0x60f1('0x39')](_0x60f1('0x3a'))){_0x101f85[_0x60f1('0x1b')]=qs[_0x60f1('0x1b')](_0x4af323[_0x60f1('0x35')][_0x60f1('0x1b')]);_0x101f85['offset']=qs[_0x60f1('0x19')](_0x4af323[_0x60f1('0x35')][_0x60f1('0x19')]);}return _0x8fa7ee[_0x60f1('0x5a')](_0x101f85);}})['then'](function(_0x185914){if(_0x185914){return _0x185914?{'count':_0x1be7ff,'rows':_0x185914}:null;}})[_0x60f1('0x24')](respondWithResult(_0x25b94f,null))[_0x60f1('0x46')](handleError(_0x25b94f,null));};
\ No newline at end of file
+var _0xd595=['save','update','then','get','Triggers','destroy','sendStatus','error','name','send','index','map','Trigger','rawAttributes','fieldName','model','keys','query','filters','fields','attributes','length','hasOwnProperty','sort','pick','where','type','filter','merge','options','includeAll','include','findAll','rows','show','params','intersection','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addAllCondition','TriggerAllId','addAnyCondition','Condition','getAllConditions','nolimit','getAnyConditions','order','getActions','Action','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject'];(function(_0x391a02,_0x28f8f7){var _0x33f83=function(_0x486fdf){while(--_0x486fdf){_0x391a02['push'](_0x391a02['shift']());}};_0x33f83(++_0x28f8f7);}(_0xd595,0x1bb));var _0x5d59=function(_0x5e1fc5,_0x4eec6f){_0x5e1fc5=_0x5e1fc5-0x0;var _0x5e6488=_0xd595[_0x5e1fc5];return _0x5e6488;};'use strict';var emlformat=require(_0x5d59('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5d59('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5d59('0x2'));var moment=require('moment');var BPromise=require(_0x5d59('0x3'));var Mustache=require(_0x5d59('0x4'));var util=require(_0x5d59('0x5'));var path=require(_0x5d59('0x6'));var sox=require(_0x5d59('0x7'));var csv=require(_0x5d59('0x8'));var ejs=require(_0x5d59('0x9'));var fs=require('fs');var fs_extra=require(_0x5d59('0xa'));var _=require('lodash');var squel=require(_0x5d59('0xb'));var crypto=require(_0x5d59('0xc'));var jsforce=require(_0x5d59('0xd'));var deskjs=require(_0x5d59('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5d59('0xf'));var Papa=require(_0x5d59('0x10'));var Redis=require(_0x5d59('0x11'));var authService=require(_0x5d59('0x12'));var qs=require(_0x5d59('0x13'));var as=require(_0x5d59('0x14'));var hardwareService=require(_0x5d59('0x15'));var logger=require(_0x5d59('0x16'))('api');var utils=require(_0x5d59('0x17'));var config=require(_0x5d59('0x18'));var licenseUtil=require(_0x5d59('0x19'));var db=require(_0x5d59('0x1a'))['db'];function respondWithStatusCode(_0x829f51,_0x5873a8){_0x5873a8=_0x5873a8||0xcc;return function(_0x393585){if(_0x393585){return _0x829f51['sendStatus'](_0x5873a8);}return _0x829f51[_0x5d59('0x1b')](_0x5873a8)[_0x5d59('0x1c')]();};}function respondWithResult(_0x341619,_0x569035){_0x569035=_0x569035||0xc8;return function(_0x277605){if(_0x277605){return _0x341619['status'](_0x569035)[_0x5d59('0x1d')](_0x277605);}};}function respondWithFilteredResult(_0x5dffad,_0x46bdec){return function(_0x28c916){if(_0x28c916){var _0x2b2584=typeof _0x46bdec[_0x5d59('0x1e')]===_0x5d59('0x1f')&&typeof _0x46bdec[_0x5d59('0x20')]===_0x5d59('0x1f');var _0x267e16=_0x28c916[_0x5d59('0x21')];var _0x3dc70b=_0x2b2584?0x0:_0x46bdec[_0x5d59('0x1e')];var _0x2238be=_0x2b2584?_0x28c916[_0x5d59('0x21')]:_0x46bdec['offset']+_0x46bdec[_0x5d59('0x20')];var _0x99d8ba;if(_0x2238be>=_0x267e16){_0x2238be=_0x267e16;_0x99d8ba=0xc8;}else{_0x99d8ba=0xce;}_0x5dffad['status'](_0x99d8ba);return _0x5dffad[_0x5d59('0x22')]('Content-Range',_0x3dc70b+'-'+_0x2238be+'/'+_0x267e16)[_0x5d59('0x1d')](_0x28c916);}return null;};}function patchUpdates(_0xd4af50){return function(_0xc66ea8){try{jsonpatch[_0x5d59('0x23')](_0xc66ea8,_0xd4af50,!![]);}catch(_0x4402a8){return BPromise[_0x5d59('0x24')](_0x4402a8);}return _0xc66ea8[_0x5d59('0x25')]();};}function saveUpdates(_0x7bdec9,_0x44858e){return function(_0xffb833){if(_0xffb833){return _0xffb833[_0x5d59('0x26')](_0x7bdec9)[_0x5d59('0x27')](function(_0x7247bc){return _0x7247bc;});}return null;};}function removeEntity(_0x2d7ecb,_0x5c9127){return function(_0x2e4eed){if(_0x2e4eed){return _0x2e4eed['destroy']()[_0x5d59('0x27')](function(){var _0x5913c7=_0x2e4eed[_0x5d59('0x28')]({'plain':!![]});var _0x46f0cc=_0x5d59('0x29');return db['UserProfileResource'][_0x5d59('0x2a')]({'where':{'type':_0x46f0cc,'resourceId':_0x5913c7['id']}})[_0x5d59('0x27')](function(){return _0x2e4eed;});})[_0x5d59('0x27')](function(){_0x2d7ecb['status'](0xcc)[_0x5d59('0x1c')]();});}};}function handleEntityNotFound(_0x322158,_0x2973de){return function(_0x1606f9){if(!_0x1606f9){_0x322158[_0x5d59('0x2b')](0x194);}return _0x1606f9;};}function handleError(_0x44dd15,_0x19d22a){_0x19d22a=_0x19d22a||0x1f4;return function(_0x5b5cf9){logger[_0x5d59('0x2c')](_0x5b5cf9['stack']);if(_0x5b5cf9['name']){delete _0x5b5cf9[_0x5d59('0x2d')];}_0x44dd15[_0x5d59('0x1b')](_0x19d22a)[_0x5d59('0x2e')](_0x5b5cf9);};}exports[_0x5d59('0x2f')]=function(_0x15a398,_0x1db4a1){var _0x59fdc8={},_0x5a9abf={},_0x46ef87={'count':0x0,'rows':[]};var _0x228f0d=_[_0x5d59('0x30')](db[_0x5d59('0x31')][_0x5d59('0x32')],function(_0x4635e0){return{'name':_0x4635e0[_0x5d59('0x33')],'type':_0x4635e0['type']['key']};});_0x5a9abf[_0x5d59('0x34')]=_[_0x5d59('0x30')](_0x228f0d,_0x5d59('0x2d'));_0x5a9abf['query']=_[_0x5d59('0x35')](_0x15a398[_0x5d59('0x36')]);_0x5a9abf[_0x5d59('0x37')]=_['intersection'](_0x5a9abf[_0x5d59('0x34')],_0x5a9abf['query']);_0x59fdc8['attributes']=_['intersection'](_0x5a9abf[_0x5d59('0x34')],qs[_0x5d59('0x38')](_0x15a398['query'][_0x5d59('0x38')]));_0x59fdc8['attributes']=_0x59fdc8[_0x5d59('0x39')][_0x5d59('0x3a')]?_0x59fdc8['attributes']:_0x5a9abf['model'];if(!_0x15a398['query'][_0x5d59('0x3b')]('nolimit')){_0x59fdc8[_0x5d59('0x20')]=qs[_0x5d59('0x20')](_0x15a398[_0x5d59('0x36')][_0x5d59('0x20')]);_0x59fdc8[_0x5d59('0x1e')]=qs[_0x5d59('0x1e')](_0x15a398[_0x5d59('0x36')][_0x5d59('0x1e')]);}_0x59fdc8['order']=qs[_0x5d59('0x3c')](_0x15a398[_0x5d59('0x36')][_0x5d59('0x3c')]);_0x59fdc8['where']=qs[_0x5d59('0x37')](_[_0x5d59('0x3d')](_0x15a398['query'],_0x5a9abf[_0x5d59('0x37')]),_0x228f0d);if(_0x15a398[_0x5d59('0x36')]['filter']){_0x59fdc8[_0x5d59('0x3e')]=_['merge'](_0x59fdc8[_0x5d59('0x3e')],{'$or':_[_0x5d59('0x30')](_0x228f0d,function(_0x2c88b1){if(_0x2c88b1[_0x5d59('0x3f')]!=='VIRTUAL'){var _0x340f9b={};_0x340f9b[_0x2c88b1[_0x5d59('0x2d')]]={'$like':'%'+_0x15a398[_0x5d59('0x36')][_0x5d59('0x40')]+'%'};return _0x340f9b;}})});}_0x59fdc8=_[_0x5d59('0x41')]({},_0x59fdc8,_0x15a398[_0x5d59('0x42')]);var _0x4a66a9={'where':_0x59fdc8[_0x5d59('0x3e')]};return db[_0x5d59('0x31')][_0x5d59('0x21')](_0x4a66a9)[_0x5d59('0x27')](function(_0xe43e33){_0x46ef87['count']=_0xe43e33;if(_0x15a398[_0x5d59('0x36')][_0x5d59('0x43')]){_0x59fdc8[_0x5d59('0x44')]=[{'all':!![]}];}return db[_0x5d59('0x31')][_0x5d59('0x45')](_0x59fdc8);})[_0x5d59('0x27')](function(_0x50295f){_0x46ef87[_0x5d59('0x46')]=_0x50295f;return _0x46ef87;})[_0x5d59('0x27')](respondWithFilteredResult(_0x1db4a1,_0x59fdc8))['catch'](handleError(_0x1db4a1,null));};exports[_0x5d59('0x47')]=function(_0x54c057,_0x4c097d){var _0x9860e5={'raw':![],'where':{'id':_0x54c057[_0x5d59('0x48')]['id']}},_0x22bfe3={};_0x22bfe3[_0x5d59('0x34')]=_[_0x5d59('0x35')](db[_0x5d59('0x31')][_0x5d59('0x32')]);_0x22bfe3[_0x5d59('0x36')]=_[_0x5d59('0x35')](_0x54c057[_0x5d59('0x36')]);_0x22bfe3['filters']=_[_0x5d59('0x49')](_0x22bfe3[_0x5d59('0x34')],_0x22bfe3[_0x5d59('0x36')]);_0x9860e5[_0x5d59('0x39')]=_[_0x5d59('0x49')](_0x22bfe3[_0x5d59('0x34')],qs[_0x5d59('0x38')](_0x54c057[_0x5d59('0x36')][_0x5d59('0x38')]));_0x9860e5[_0x5d59('0x39')]=_0x9860e5['attributes'][_0x5d59('0x3a')]?_0x9860e5[_0x5d59('0x39')]:_0x22bfe3[_0x5d59('0x34')];if(_0x54c057[_0x5d59('0x36')][_0x5d59('0x43')]){_0x9860e5[_0x5d59('0x44')]=[{'all':!![]}];}_0x9860e5=_[_0x5d59('0x41')]({},_0x9860e5,_0x54c057['options']);return db[_0x5d59('0x31')][_0x5d59('0x4a')](_0x9860e5)[_0x5d59('0x27')](handleEntityNotFound(_0x4c097d,null))['then'](respondWithResult(_0x4c097d,null))[_0x5d59('0x4b')](handleError(_0x4c097d,null));};exports[_0x5d59('0x4c')]=function(_0xaa5808,_0x283700){return db[_0x5d59('0x31')][_0x5d59('0x4c')](_0xaa5808['body'],{})['then'](function(_0x6427b8){var _0x27de15=_0xaa5808[_0x5d59('0x4d')][_0x5d59('0x28')]({'plain':!![]});if(!_0x27de15)throw new Error(_0x5d59('0x4e'));if(_0x27de15[_0x5d59('0x4f')]===_0x5d59('0x4d')){var _0x20c3d2=_0x6427b8[_0x5d59('0x28')]({'plain':!![]});var _0x1b4c78=_0x5d59('0x29');return db[_0x5d59('0x50')]['find']({'where':{'name':_0x1b4c78,'userProfileId':_0x27de15[_0x5d59('0x51')]},'raw':!![]})[_0x5d59('0x27')](function(_0x9bace5){if(_0x9bace5&&_0x9bace5[_0x5d59('0x52')]===0x0){return db[_0x5d59('0x53')]['create']({'name':_0x20c3d2[_0x5d59('0x2d')],'resourceId':_0x20c3d2['id'],'type':_0x9bace5[_0x5d59('0x2d')],'sectionId':_0x9bace5['id']},{})[_0x5d59('0x27')](function(){return _0x6427b8;});}else{return _0x6427b8;}})[_0x5d59('0x4b')](function(_0x44ea39){logger[_0x5d59('0x2c')](_0x5d59('0x54'),_0x44ea39);throw _0x44ea39;});}return _0x6427b8;})[_0x5d59('0x27')](respondWithResult(_0x283700,0xc9))[_0x5d59('0x4b')](handleError(_0x283700,null));};exports[_0x5d59('0x26')]=function(_0x5932ef,_0x461472){if(_0x5932ef[_0x5d59('0x55')]['id']){delete _0x5932ef[_0x5d59('0x55')]['id'];}return db[_0x5d59('0x31')][_0x5d59('0x4a')]({'where':{'id':_0x5932ef[_0x5d59('0x48')]['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x461472,null))[_0x5d59('0x27')](saveUpdates(_0x5932ef[_0x5d59('0x55')],null))[_0x5d59('0x27')](respondWithResult(_0x461472,null))[_0x5d59('0x4b')](handleError(_0x461472,null));};exports[_0x5d59('0x2a')]=function(_0x1ec012,_0x332b4f){return db[_0x5d59('0x31')][_0x5d59('0x4a')]({'where':{'id':_0x1ec012['params']['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x332b4f,null))[_0x5d59('0x27')](removeEntity(_0x332b4f,null))[_0x5d59('0x4b')](handleError(_0x332b4f,null));};exports[_0x5d59('0x56')]=function(_0x2edfd5,_0x583cd3,_0x17833d){if(_0x2edfd5[_0x5d59('0x55')]['id']){delete _0x2edfd5[_0x5d59('0x55')]['id'];}return db[_0x5d59('0x31')][_0x5d59('0x4a')]({'where':{'id':_0x2edfd5['params']['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x583cd3,null))[_0x5d59('0x27')](function(_0x541df2){if(_0x541df2){_0x2edfd5['body'][_0x5d59('0x57')]=_0x541df2['id'];return db['Condition'][_0x5d59('0x4c')](_0x2edfd5[_0x5d59('0x55')]);}})[_0x5d59('0x27')](respondWithResult(_0x583cd3,null))[_0x5d59('0x4b')](handleError(_0x583cd3,null));};exports[_0x5d59('0x58')]=function(_0x1759cf,_0x5ad262,_0x1423c1){if(_0x1759cf['body']['id']){delete _0x1759cf[_0x5d59('0x55')]['id'];}return db[_0x5d59('0x31')][_0x5d59('0x4a')]({'where':{'id':_0x1759cf[_0x5d59('0x48')]['id']}})['then'](handleEntityNotFound(_0x5ad262,null))[_0x5d59('0x27')](function(_0x3c4f4a){if(_0x3c4f4a){_0x1759cf[_0x5d59('0x55')]['TriggerAnyId']=_0x3c4f4a['id'];return db[_0x5d59('0x59')]['create'](_0x1759cf[_0x5d59('0x55')]);}})[_0x5d59('0x27')](respondWithResult(_0x5ad262,null))[_0x5d59('0x4b')](handleError(_0x5ad262,null));};exports[_0x5d59('0x5a')]=function(_0x505f86,_0xd7aba9,_0x2e4642){var _0x42dd43={};var _0x246da5={};var _0x5eea45;var _0x3c2c9e;return db[_0x5d59('0x31')]['findOne']({'where':{'id':_0x505f86[_0x5d59('0x48')]['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0xd7aba9,null))[_0x5d59('0x27')](function(_0x35d5b0){if(_0x35d5b0){_0x5eea45=_0x35d5b0;_0x246da5[_0x5d59('0x34')]=_[_0x5d59('0x35')](db[_0x5d59('0x59')][_0x5d59('0x32')]);_0x246da5[_0x5d59('0x36')]=_[_0x5d59('0x35')](_0x505f86[_0x5d59('0x36')]);_0x246da5[_0x5d59('0x37')]=_[_0x5d59('0x49')](_0x246da5['model'],_0x246da5['query']);_0x42dd43[_0x5d59('0x39')]=_['intersection'](_0x246da5[_0x5d59('0x34')],qs[_0x5d59('0x38')](_0x505f86[_0x5d59('0x36')][_0x5d59('0x38')]));_0x42dd43[_0x5d59('0x39')]=_0x42dd43['attributes'][_0x5d59('0x3a')]?_0x42dd43[_0x5d59('0x39')]:_0x246da5[_0x5d59('0x34')];_0x42dd43['order']=qs[_0x5d59('0x3c')](_0x505f86[_0x5d59('0x36')][_0x5d59('0x3c')]);_0x42dd43[_0x5d59('0x3e')]=qs['filters'](_['pick'](_0x505f86['query'],_0x246da5[_0x5d59('0x37')]));if(_0x505f86['query']['filter']){_0x42dd43[_0x5d59('0x3e')]=_[_0x5d59('0x41')](_0x42dd43['where'],{'$or':_['map'](_0x42dd43[_0x5d59('0x39')],function(_0x465ab6){var _0x335b48={};_0x335b48[_0x465ab6]={'$like':'%'+_0x505f86[_0x5d59('0x36')][_0x5d59('0x40')]+'%'};return _0x335b48;})});}_0x42dd43=_[_0x5d59('0x41')]({},_0x42dd43,_0x505f86[_0x5d59('0x42')]);return _0x5eea45[_0x5d59('0x5a')](_0x42dd43);}})[_0x5d59('0x27')](function(_0xe7acad){if(_0xe7acad){_0x3c2c9e=_0xe7acad[_0x5d59('0x3a')];if(!_0x505f86[_0x5d59('0x36')][_0x5d59('0x3b')](_0x5d59('0x5b'))){_0x42dd43['limit']=qs[_0x5d59('0x20')](_0x505f86['query'][_0x5d59('0x20')]);_0x42dd43[_0x5d59('0x1e')]=qs[_0x5d59('0x1e')](_0x505f86[_0x5d59('0x36')][_0x5d59('0x1e')]);}return _0x5eea45['getAllConditions'](_0x42dd43);}})[_0x5d59('0x27')](function(_0x1b1c88){if(_0x1b1c88){return _0x1b1c88?{'count':_0x3c2c9e,'rows':_0x1b1c88}:null;}})[_0x5d59('0x27')](respondWithResult(_0xd7aba9,null))[_0x5d59('0x4b')](handleError(_0xd7aba9,null));};exports[_0x5d59('0x5c')]=function(_0x5dbbfa,_0x241249,_0x2b1d6e){var _0x3850d4={};var _0x50018a={};var _0x2fb131;var _0x1ff0d2;return db['Trigger']['findOne']({'where':{'id':_0x5dbbfa[_0x5d59('0x48')]['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x241249,null))[_0x5d59('0x27')](function(_0x373eb9){if(_0x373eb9){_0x2fb131=_0x373eb9;_0x50018a[_0x5d59('0x34')]=_[_0x5d59('0x35')](db['Condition'][_0x5d59('0x32')]);_0x50018a[_0x5d59('0x36')]=_[_0x5d59('0x35')](_0x5dbbfa['query']);_0x50018a['filters']=_['intersection'](_0x50018a[_0x5d59('0x34')],_0x50018a[_0x5d59('0x36')]);_0x3850d4['attributes']=_[_0x5d59('0x49')](_0x50018a[_0x5d59('0x34')],qs[_0x5d59('0x38')](_0x5dbbfa[_0x5d59('0x36')][_0x5d59('0x38')]));_0x3850d4[_0x5d59('0x39')]=_0x3850d4['attributes']['length']?_0x3850d4[_0x5d59('0x39')]:_0x50018a['model'];_0x3850d4[_0x5d59('0x5d')]=qs[_0x5d59('0x3c')](_0x5dbbfa['query'][_0x5d59('0x3c')]);_0x3850d4[_0x5d59('0x3e')]=qs[_0x5d59('0x37')](_['pick'](_0x5dbbfa['query'],_0x50018a[_0x5d59('0x37')]));if(_0x5dbbfa[_0x5d59('0x36')][_0x5d59('0x40')]){_0x3850d4[_0x5d59('0x3e')]=_[_0x5d59('0x41')](_0x3850d4[_0x5d59('0x3e')],{'$or':_['map'](_0x3850d4[_0x5d59('0x39')],function(_0x433f4e){var _0x12daf5={};_0x12daf5[_0x433f4e]={'$like':'%'+_0x5dbbfa[_0x5d59('0x36')][_0x5d59('0x40')]+'%'};return _0x12daf5;})});}_0x3850d4=_[_0x5d59('0x41')]({},_0x3850d4,_0x5dbbfa['options']);return _0x2fb131[_0x5d59('0x5c')](_0x3850d4);}})[_0x5d59('0x27')](function(_0x2a94e4){if(_0x2a94e4){_0x1ff0d2=_0x2a94e4['length'];if(!_0x5dbbfa['query']['hasOwnProperty'](_0x5d59('0x5b'))){_0x3850d4[_0x5d59('0x20')]=qs[_0x5d59('0x20')](_0x5dbbfa['query'][_0x5d59('0x20')]);_0x3850d4[_0x5d59('0x1e')]=qs['offset'](_0x5dbbfa[_0x5d59('0x36')][_0x5d59('0x1e')]);}return _0x2fb131[_0x5d59('0x5c')](_0x3850d4);}})[_0x5d59('0x27')](function(_0x16c00d){if(_0x16c00d){return _0x16c00d?{'count':_0x1ff0d2,'rows':_0x16c00d}:null;}})[_0x5d59('0x27')](respondWithResult(_0x241249,null))[_0x5d59('0x4b')](handleError(_0x241249,null));};exports['addAction']=function(_0x341d33,_0x40567a,_0x3e20ca){if(_0x341d33[_0x5d59('0x55')]['id']){delete _0x341d33[_0x5d59('0x55')]['id'];}return db['Trigger'][_0x5d59('0x4a')]({'where':{'id':_0x341d33['params']['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x40567a,null))[_0x5d59('0x27')](function(_0x252e3c){if(_0x252e3c){_0x341d33[_0x5d59('0x55')]['TriggerId']=_0x252e3c['id'];return db['Action'][_0x5d59('0x4c')](_0x341d33[_0x5d59('0x55')]);}})['then'](respondWithResult(_0x40567a,null))[_0x5d59('0x4b')](handleError(_0x40567a,null));};exports[_0x5d59('0x5e')]=function(_0x2a4a54,_0x1873ee,_0x11cb8a){var _0x20b719={};var _0x5364b5={};var _0x3294cc;var _0x58d0d6;return db[_0x5d59('0x31')]['findOne']({'where':{'id':_0x2a4a54[_0x5d59('0x48')]['id']}})[_0x5d59('0x27')](handleEntityNotFound(_0x1873ee,null))[_0x5d59('0x27')](function(_0x251cfb){if(_0x251cfb){_0x3294cc=_0x251cfb;_0x5364b5[_0x5d59('0x34')]=_['keys'](db[_0x5d59('0x5f')]['rawAttributes']);_0x5364b5['query']=_[_0x5d59('0x35')](_0x2a4a54['query']);_0x5364b5[_0x5d59('0x37')]=_['intersection'](_0x5364b5[_0x5d59('0x34')],_0x5364b5[_0x5d59('0x36')]);_0x20b719[_0x5d59('0x39')]=_['intersection'](_0x5364b5['model'],qs[_0x5d59('0x38')](_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x38')]));_0x20b719[_0x5d59('0x39')]=_0x20b719['attributes'][_0x5d59('0x3a')]?_0x20b719[_0x5d59('0x39')]:_0x5364b5[_0x5d59('0x34')];_0x20b719[_0x5d59('0x5d')]=qs[_0x5d59('0x3c')](_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x3c')]);_0x20b719[_0x5d59('0x3e')]=qs[_0x5d59('0x37')](_[_0x5d59('0x3d')](_0x2a4a54[_0x5d59('0x36')],_0x5364b5['filters']));if(_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x40')]){_0x20b719[_0x5d59('0x3e')]=_[_0x5d59('0x41')](_0x20b719[_0x5d59('0x3e')],{'$or':_[_0x5d59('0x30')](_0x20b719['attributes'],function(_0x3d061e){var _0x1e7cf3={};_0x1e7cf3[_0x3d061e]={'$like':'%'+_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x40')]+'%'};return _0x1e7cf3;})});}_0x20b719=_[_0x5d59('0x41')]({},_0x20b719,_0x2a4a54['options']);return _0x3294cc[_0x5d59('0x5e')](_0x20b719);}})[_0x5d59('0x27')](function(_0x1bcaa2){if(_0x1bcaa2){_0x58d0d6=_0x1bcaa2['length'];if(!_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x3b')](_0x5d59('0x5b'))){_0x20b719[_0x5d59('0x20')]=qs[_0x5d59('0x20')](_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x20')]);_0x20b719[_0x5d59('0x1e')]=qs[_0x5d59('0x1e')](_0x2a4a54[_0x5d59('0x36')][_0x5d59('0x1e')]);}return _0x3294cc['getActions'](_0x20b719);}})[_0x5d59('0x27')](function(_0x1a1cb7){if(_0x1a1cb7){return _0x1a1cb7?{'count':_0x58d0d6,'rows':_0x1a1cb7}:null;}})[_0x5d59('0x27')](respondWithResult(_0x1873ee,null))[_0x5d59('0x4b')](handleError(_0x1873ee,null));};
\ No newline at end of file
index c95395b..c30aa11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd5=['Trigger','tools_triggers','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./trigger.attributes'];(function(_0x5d9386,_0x4a7953){var _0x304b77=function(_0x358b7d){while(--_0x358b7d){_0x5d9386['push'](_0x5d9386['shift']());}};_0x304b77(++_0x4a7953);}(_0xecd5,0x110));var _0x5ecd=function(_0x3e7dcd,_0x11364b){_0x3e7dcd=_0x3e7dcd-0x0;var _0x20e998=_0xecd5[_0x3e7dcd];return _0x20e998;};'use strict';var _=require('lodash');var util=require(_0x5ecd('0x0'));var logger=require(_0x5ecd('0x1'))(_0x5ecd('0x2'));var moment=require('moment');var BPromise=require(_0x5ecd('0x3'));var rp=require(_0x5ecd('0x4'));var fs=require('fs');var path=require(_0x5ecd('0x5'));var rimraf=require(_0x5ecd('0x6'));var config=require('../../config/environment');var attributes=require(_0x5ecd('0x7'));module['exports']=function(_0x1ddbad,_0x492eba){return _0x1ddbad['define'](_0x5ecd('0x8'),attributes,{'tableName':_0x5ecd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x87f8=['request-promise','rimraf','../../config/environment','./trigger.attributes','exports','define','Trigger','tools_triggers','api','moment'];(function(_0x1e65a9,_0xe784c2){var _0xd8c0e=function(_0x6b28a6){while(--_0x6b28a6){_0x1e65a9['push'](_0x1e65a9['shift']());}};_0xd8c0e(++_0xe784c2);}(_0x87f8,0x152));var _0x887f=function(_0x1922e6,_0x3ddba2){_0x1922e6=_0x1922e6-0x0;var _0x329e72=_0x87f8[_0x1922e6];return _0x329e72;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x887f('0x0'));var moment=require(_0x887f('0x1'));var BPromise=require('bluebird');var rp=require(_0x887f('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x887f('0x3'));var config=require(_0x887f('0x4'));var attributes=require(_0x887f('0x5'));module[_0x887f('0x6')]=function(_0x4f735d,_0x3847b1){return _0x4f735d[_0x887f('0x7')](_0x887f('0x8'),attributes,{'tableName':_0x887f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 910c6d2..3760b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78f6=['rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','error','code','Trigger,\x20%s,\x20%s','message','catch','Trigger','findAll','options','raw','where','attributes','include','map','model','GetTrigger','ShowTrigger','find','stringify','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x78f6,0x81));var _0x678f=function(_0x2f5fd3,_0x11f948){_0x2f5fd3=_0x2f5fd3-0x0;var _0x40b2c8=_0x78f6[_0x2f5fd3];return _0x40b2c8;};'use strict';var _=require(_0x678f('0x0'));var util=require(_0x678f('0x1'));var moment=require('moment');var BPromise=require(_0x678f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x678f('0x3'));var db=require(_0x678f('0x4'))['db'];var utils=require(_0x678f('0x5'));var logger=require(_0x678f('0x6'))(_0x678f('0x7'));var config=require(_0x678f('0x8'));var jayson=require(_0x678f('0x9'));var client=jayson[_0x678f('0xa')][_0x678f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x43c6d0,_0x3646e4,_0x3c9ac4){return new BPromise(function(_0x147315,_0x601326){return client['request'](_0x43c6d0,_0x3c9ac4)[_0x678f('0xc')](function(_0x3c9ea5){logger[_0x678f('0xd')]('Trigger,\x20%s,\x20%s',_0x3646e4,_0x678f('0xe'));logger[_0x678f('0xf')]('Trigger,\x20%s,\x20%s,\x20%s',_0x3646e4,_0x678f('0xe'),JSON['stringify'](_0x3c9ea5));if(_0x3c9ea5[_0x678f('0x10')]){if(_0x3c9ea5['error'][_0x678f('0x11')]===0x1f4){logger[_0x678f('0x10')](_0x678f('0x12'),_0x3646e4,_0x3c9ea5[_0x678f('0x10')][_0x678f('0x13')]);return _0x601326(_0x3c9ea5[_0x678f('0x10')]['message']);}logger[_0x678f('0x10')]('Trigger,\x20%s,\x20%s',_0x3646e4,_0x3c9ea5[_0x678f('0x10')][_0x678f('0x13')]);return _0x147315(_0x3c9ea5['error'][_0x678f('0x13')]);}else{logger[_0x678f('0xd')]('Trigger,\x20%s,\x20%s',_0x3646e4,'request\x20sent');_0x147315(_0x3c9ea5['result'][_0x678f('0x13')]);}})[_0x678f('0x14')](function(_0x44f332){logger['error'](_0x678f('0x12'),_0x3646e4,_0x44f332);_0x601326(_0x44f332);});});}exports['GetTrigger']=function(_0x225374){var _0x4daafa=this;return new Promise(function(_0x730825,_0x358a66){return db[_0x678f('0x15')][_0x678f('0x16')]({'raw':_0x225374[_0x678f('0x17')]?_0x225374[_0x678f('0x17')][_0x678f('0x18')]===undefined?!![]:![]:!![],'where':_0x225374[_0x678f('0x17')]?_0x225374['options'][_0x678f('0x19')]||null:null,'attributes':_0x225374['options']?_0x225374[_0x678f('0x17')][_0x678f('0x1a')]||null:null,'limit':_0x225374[_0x678f('0x17')]?_0x225374[_0x678f('0x17')]['limit']||null:null,'include':_0x225374[_0x678f('0x17')]?_0x225374[_0x678f('0x17')][_0x678f('0x1b')]?_[_0x678f('0x1c')](_0x225374[_0x678f('0x17')][_0x678f('0x1b')],function(_0x2b0ec1){return{'model':db[_0x2b0ec1[_0x678f('0x1d')]],'as':_0x2b0ec1['as'],'attributes':_0x2b0ec1[_0x678f('0x1a')],'include':_0x2b0ec1[_0x678f('0x1b')]?_[_0x678f('0x1c')](_0x2b0ec1['include'],function(_0x4c4467){return{'model':db[_0x4c4467[_0x678f('0x1d')]],'as':_0x4c4467['as'],'attributes':_0x4c4467[_0x678f('0x1a')],'include':_0x4c4467[_0x678f('0x1b')]?_[_0x678f('0x1c')](_0x4c4467[_0x678f('0x1b')],function(_0x3cc914){return{'model':db[_0x3cc914[_0x678f('0x1d')]],'as':_0x3cc914['as'],'attributes':_0x3cc914[_0x678f('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x678f('0xc')](function(_0x1c14ca){logger['info'](_0x678f('0x1e'),_0x225374);logger[_0x678f('0xf')](_0x678f('0x1e'),_0x225374,JSON['stringify'](_0x1c14ca));_0x730825(_0x1c14ca);})['catch'](function(_0x131618){logger[_0x678f('0x10')](_0x678f('0x1e'),_0x131618['message'],_0x225374);_0x358a66(_0x4daafa[_0x678f('0x10')](0x1f4,_0x131618[_0x678f('0x13')]));});});};exports[_0x678f('0x1f')]=function(_0x2b845b){var _0x134bc3=this;return new Promise(function(_0x20ff3e,_0x38b20d){return db[_0x678f('0x15')][_0x678f('0x20')]({'raw':_0x2b845b[_0x678f('0x17')]?_0x2b845b[_0x678f('0x17')][_0x678f('0x18')]===undefined?!![]:![]:!![],'where':_0x2b845b['options']?_0x2b845b[_0x678f('0x17')]['where']||null:null,'attributes':_0x2b845b[_0x678f('0x17')]?_0x2b845b[_0x678f('0x17')][_0x678f('0x1a')]||null:null,'include':_0x2b845b[_0x678f('0x17')]?_0x2b845b[_0x678f('0x17')][_0x678f('0x1b')]?_[_0x678f('0x1c')](_0x2b845b[_0x678f('0x17')][_0x678f('0x1b')],function(_0x4968b9){return{'model':db[_0x4968b9['model']],'as':_0x4968b9['as'],'attributes':_0x4968b9[_0x678f('0x1a')],'include':_0x4968b9[_0x678f('0x1b')]?_[_0x678f('0x1c')](_0x4968b9[_0x678f('0x1b')],function(_0xb32eab){return{'model':db[_0xb32eab[_0x678f('0x1d')]],'as':_0xb32eab['as'],'attributes':_0xb32eab[_0x678f('0x1a')],'include':_0xb32eab[_0x678f('0x1b')]?_[_0x678f('0x1c')](_0xb32eab[_0x678f('0x1b')],function(_0x23baab){return{'model':db[_0x23baab[_0x678f('0x1d')]],'as':_0x23baab['as'],'attributes':_0x23baab[_0x678f('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5822bb){logger[_0x678f('0xd')](_0x678f('0x1f'),_0x2b845b);logger[_0x678f('0xf')](_0x678f('0x1f'),_0x2b845b,JSON[_0x678f('0x21')](_0x5822bb));_0x20ff3e(_0x5822bb);})[_0x678f('0x14')](function(_0x27f85c){logger[_0x678f('0x10')](_0x678f('0x1f'),_0x27f85c['message'],_0x2b845b);_0x38b20d(_0x134bc3[_0x678f('0x10')](0x1f4,_0x27f85c[_0x678f('0x13')]));});});};
\ No newline at end of file
+var _0xfb61=['Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','findAll','options','raw','limit','include','map','model','attributes','then','GetTrigger','catch','Trigger','find','where','ShowTrigger','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','Trigger,\x20%s,\x20%s','debug'];(function(_0x2bea6e,_0x1f75f3){var _0x2a6225=function(_0xf8f4db){while(--_0xf8f4db){_0x2bea6e['push'](_0x2bea6e['shift']());}};_0x2a6225(++_0x1f75f3);}(_0xfb61,0xf3));var _0x1fb6=function(_0x30ba61,_0x48b905){_0x30ba61=_0x30ba61-0x0;var _0x7300ad=_0xfb61[_0x30ba61];return _0x7300ad;};'use strict';var _=require(_0x1fb6('0x0'));var util=require('util');var moment=require(_0x1fb6('0x1'));var BPromise=require(_0x1fb6('0x2'));var rs=require(_0x1fb6('0x3'));var fs=require('fs');var Redis=require(_0x1fb6('0x4'));var db=require(_0x1fb6('0x5'))['db'];var utils=require(_0x1fb6('0x6'));var logger=require(_0x1fb6('0x7'))(_0x1fb6('0x8'));var config=require('../../config/environment');var jayson=require(_0x1fb6('0x9'));var client=jayson[_0x1fb6('0xa')][_0x1fb6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x663287,_0x5d3c65,_0x491596){return new BPromise(function(_0x22fcc0,_0x15070c){return client[_0x1fb6('0xc')](_0x663287,_0x491596)['then'](function(_0x5abd85){logger[_0x1fb6('0xd')](_0x1fb6('0xe'),_0x5d3c65,'request\x20sent');logger[_0x1fb6('0xf')](_0x1fb6('0x10'),_0x5d3c65,_0x1fb6('0x11'),JSON[_0x1fb6('0x12')](_0x5abd85));if(_0x5abd85[_0x1fb6('0x13')]){if(_0x5abd85[_0x1fb6('0x13')]['code']===0x1f4){logger['error']('Trigger,\x20%s,\x20%s',_0x5d3c65,_0x5abd85[_0x1fb6('0x13')]['message']);return _0x15070c(_0x5abd85[_0x1fb6('0x13')][_0x1fb6('0x14')]);}logger[_0x1fb6('0x13')]('Trigger,\x20%s,\x20%s',_0x5d3c65,_0x5abd85[_0x1fb6('0x13')][_0x1fb6('0x14')]);return _0x22fcc0(_0x5abd85[_0x1fb6('0x13')]['message']);}else{logger['info'](_0x1fb6('0xe'),_0x5d3c65,_0x1fb6('0x11'));_0x22fcc0(_0x5abd85[_0x1fb6('0x15')][_0x1fb6('0x14')]);}})['catch'](function(_0xac13b2){logger[_0x1fb6('0x13')](_0x1fb6('0xe'),_0x5d3c65,_0xac13b2);_0x15070c(_0xac13b2);});});}exports['GetTrigger']=function(_0x36a074){var _0x5d29c9=this;return new Promise(function(_0x210e31,_0x41dbe1){return db['Trigger'][_0x1fb6('0x16')]({'raw':_0x36a074[_0x1fb6('0x17')]?_0x36a074[_0x1fb6('0x17')][_0x1fb6('0x18')]===undefined?!![]:![]:!![],'where':_0x36a074[_0x1fb6('0x17')]?_0x36a074[_0x1fb6('0x17')]['where']||null:null,'attributes':_0x36a074['options']?_0x36a074[_0x1fb6('0x17')]['attributes']||null:null,'limit':_0x36a074[_0x1fb6('0x17')]?_0x36a074[_0x1fb6('0x17')][_0x1fb6('0x19')]||null:null,'include':_0x36a074[_0x1fb6('0x17')]?_0x36a074[_0x1fb6('0x17')][_0x1fb6('0x1a')]?_[_0x1fb6('0x1b')](_0x36a074[_0x1fb6('0x17')]['include'],function(_0x3b0cb1){return{'model':db[_0x3b0cb1['model']],'as':_0x3b0cb1['as'],'attributes':_0x3b0cb1['attributes'],'include':_0x3b0cb1[_0x1fb6('0x1a')]?_[_0x1fb6('0x1b')](_0x3b0cb1[_0x1fb6('0x1a')],function(_0x190a6c){return{'model':db[_0x190a6c[_0x1fb6('0x1c')]],'as':_0x190a6c['as'],'attributes':_0x190a6c['attributes'],'include':_0x190a6c[_0x1fb6('0x1a')]?_['map'](_0x190a6c[_0x1fb6('0x1a')],function(_0x334a65){return{'model':db[_0x334a65['model']],'as':_0x334a65['as'],'attributes':_0x334a65[_0x1fb6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1fb6('0x1e')](function(_0x20dfa6){logger[_0x1fb6('0xd')](_0x1fb6('0x1f'),_0x36a074);logger[_0x1fb6('0xf')](_0x1fb6('0x1f'),_0x36a074,JSON[_0x1fb6('0x12')](_0x20dfa6));_0x210e31(_0x20dfa6);})[_0x1fb6('0x20')](function(_0x596bda){logger[_0x1fb6('0x13')]('GetTrigger',_0x596bda[_0x1fb6('0x14')],_0x36a074);_0x41dbe1(_0x5d29c9[_0x1fb6('0x13')](0x1f4,_0x596bda[_0x1fb6('0x14')]));});});};exports['ShowTrigger']=function(_0x204330){var _0x4e4e66=this;return new Promise(function(_0x443b59,_0x59e49b){return db[_0x1fb6('0x21')][_0x1fb6('0x22')]({'raw':_0x204330[_0x1fb6('0x17')]?_0x204330[_0x1fb6('0x17')][_0x1fb6('0x18')]===undefined?!![]:![]:!![],'where':_0x204330[_0x1fb6('0x17')]?_0x204330[_0x1fb6('0x17')][_0x1fb6('0x23')]||null:null,'attributes':_0x204330[_0x1fb6('0x17')]?_0x204330[_0x1fb6('0x17')]['attributes']||null:null,'include':_0x204330['options']?_0x204330[_0x1fb6('0x17')][_0x1fb6('0x1a')]?_[_0x1fb6('0x1b')](_0x204330[_0x1fb6('0x17')][_0x1fb6('0x1a')],function(_0x473f41){return{'model':db[_0x473f41[_0x1fb6('0x1c')]],'as':_0x473f41['as'],'attributes':_0x473f41[_0x1fb6('0x1d')],'include':_0x473f41[_0x1fb6('0x1a')]?_[_0x1fb6('0x1b')](_0x473f41[_0x1fb6('0x1a')],function(_0x3b16f3){return{'model':db[_0x3b16f3[_0x1fb6('0x1c')]],'as':_0x3b16f3['as'],'attributes':_0x3b16f3['attributes'],'include':_0x3b16f3[_0x1fb6('0x1a')]?_[_0x1fb6('0x1b')](_0x3b16f3[_0x1fb6('0x1a')],function(_0x5834e7){return{'model':db[_0x5834e7[_0x1fb6('0x1c')]],'as':_0x5834e7['as'],'attributes':_0x5834e7[_0x1fb6('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x13a3ea){logger[_0x1fb6('0xd')](_0x1fb6('0x24'),_0x204330);logger['debug'](_0x1fb6('0x24'),_0x204330,JSON[_0x1fb6('0x12')](_0x13a3ea));_0x443b59(_0x13a3ea);})[_0x1fb6('0x20')](function(_0x2b8bb5){logger['error'](_0x1fb6('0x24'),_0x2b8bb5['message'],_0x204330);_0x59e49b(_0x4e4e66[_0x1fb6('0x13')](0x1f4,_0x2b8bb5['message']));});});};
\ No newline at end of file
index 466cec9..7dc0dd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x409d=['clone','create','put','update','delete','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','get','isAuthenticated','index','/:id','show','post','/:id/clone'];(function(_0x1d8a5d,_0x59a110){var _0x54d59f=function(_0x54ce10){while(--_0x54ce10){_0x1d8a5d['push'](_0x1d8a5d['shift']());}};_0x54d59f(++_0x59a110);}(_0x409d,0xa0));var _0xd409=function(_0x2adb1b,_0x13221a){_0x2adb1b=_0x2adb1b-0x0;var _0x578cd2=_0x409d[_0x2adb1b];return _0x578cd2;};'use strict';var multer=require(_0xd409('0x0'));var util=require(_0xd409('0x1'));var path=require(_0xd409('0x2'));var timeout=require(_0xd409('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd409('0x4'));var auth=require(_0xd409('0x5'));var interaction=require(_0xd409('0x6'));var config=require(_0xd409('0x7'));var controller=require(_0xd409('0x8'));router[_0xd409('0x9')]('/',auth[_0xd409('0xa')](),controller[_0xd409('0xb')]);router[_0xd409('0x9')](_0xd409('0xc'),auth[_0xd409('0xa')](),controller[_0xd409('0xd')]);router[_0xd409('0xe')](_0xd409('0xf'),auth[_0xd409('0xa')](),controller[_0xd409('0x10')]);router[_0xd409('0xe')]('/',auth['isAuthenticated'](),controller[_0xd409('0x11')]);router[_0xd409('0x12')](_0xd409('0xc'),auth[_0xd409('0xa')](),controller[_0xd409('0x13')]);router[_0xd409('0x14')](_0xd409('0xc'),auth[_0xd409('0xa')](),controller['destroy']);module[_0xd409('0x15')]=router;
\ No newline at end of file
+var _0xaa06=['isAuthenticated','index','/:id','show','/:id/clone','clone','post','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0xb29e91,_0x450d38){var _0x632a7d=function(_0x79728b){while(--_0x79728b){_0xb29e91['push'](_0xb29e91['shift']());}};_0x632a7d(++_0x450d38);}(_0xaa06,0x108));var _0x6aa0=function(_0x248516,_0xfc37c9){_0x248516=_0x248516-0x0;var _0x1b2bd4=_0xaa06[_0x248516];return _0x1b2bd4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6aa0('0x0'));var timeout=require(_0x6aa0('0x1'));var express=require(_0x6aa0('0x2'));var router=express[_0x6aa0('0x3')]();var fs_extra=require(_0x6aa0('0x4'));var auth=require(_0x6aa0('0x5'));var interaction=require(_0x6aa0('0x6'));var config=require(_0x6aa0('0x7'));var controller=require('./trunk.controller');router[_0x6aa0('0x8')]('/',auth[_0x6aa0('0x9')](),controller[_0x6aa0('0xa')]);router[_0x6aa0('0x8')](_0x6aa0('0xb'),auth[_0x6aa0('0x9')](),controller[_0x6aa0('0xc')]);router['post'](_0x6aa0('0xd'),auth[_0x6aa0('0x9')](),controller[_0x6aa0('0xe')]);router[_0x6aa0('0xf')]('/',auth[_0x6aa0('0x9')](),controller['create']);router[_0x6aa0('0x10')](_0x6aa0('0xb'),auth['isAuthenticated'](),controller[_0x6aa0('0x11')]);router[_0x6aa0('0x12')]('/:id',auth[_0x6aa0('0x9')](),controller[_0x6aa0('0x13')]);module[_0x6aa0('0x14')]=router;
\ No newline at end of file
index 29327e3..b4d884e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2561=['force_rport,comedia','join','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','always','originate','INTEGER','uac','uas','pai','fingerprint','certificate','active','passive','actpass','nonat','update,nonat','exports','STRING','name','ENUM','user','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','udp','setDataValue','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','yes','update','outgoing'];(function(_0x40e357,_0x369b6f){var _0x1014d3=function(_0x16d6df){while(--_0x16d6df){_0x40e357['push'](_0x40e357['shift']());}};_0x1014d3(++_0x369b6f);}(_0x2561,0x1e2));var _0x1256=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x2561[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require('sequelize');module[_0x1256('0x0')]={'name':{'type':Sequelize[_0x1256('0x1')],'allowNull':![],'unique':_0x1256('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x1256('0x3')]('friend',_0x1256('0x4'),'peer'),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x1256('0x1')],'allowNull':![],'defaultValue':_0x1256('0x5')},'callingpres':{'type':Sequelize['ENUM'](_0x1256('0x6'),'ALLOWED_PASSED_SCREEN',_0x1256('0x7'),_0x1256('0x8'),_0x1256('0x9'),'PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB')},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0x1256('0x1')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0x1256('0x1')],'defaultValue':_0x1256('0xa'),'set':function(_0x79c24b){this[_0x1256('0xb')](_0x1256('0xc'),_0x79c24b?_0x79c24b['join'](','):null);},'get':function(){return this[_0x1256('0xd')](_0x1256('0xc'))?this[_0x1256('0xd')](_0x1256('0xc'))[_0x1256('0xe')](','):null;},'comment':_0x1256('0xf')},'dtmfmode':{'type':Sequelize[_0x1256('0x3')]('rfc2833',_0x1256('0x10'),_0x1256('0x11'),_0x1256('0x12'),_0x1256('0x13')),'defaultValue':_0x1256('0x14')},'directmedia':{'type':Sequelize['ENUM'](_0x1256('0x15'),'no','nonat',_0x1256('0x16'),_0x1256('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x1256('0x1')]},'directmediadeny':{'type':Sequelize[_0x1256('0x1')]},'nat':{'type':Sequelize[_0x1256('0x1')],'defaultValue':_0x1256('0x18'),'set':function(_0x1a139d){this[_0x1256('0xb')]('nat',_0x1a139d?_0x1a139d[_0x1256('0x19')](','):null);},'get':function(){return this[_0x1256('0xd')](_0x1256('0x1a'))?this[_0x1256('0xd')](_0x1256('0x1a'))['split'](','):null;},'comment':_0x1256('0x1b')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x1256('0x1')]},'pickupgroup':{'type':Sequelize[_0x1256('0x1')]},'namedpickupgroup':{'type':Sequelize[_0x1256('0x1')]},'language':{'type':Sequelize[_0x1256('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x1256('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x1256('0x1')],'defaultValue':'all'},'allow':{'type':Sequelize[_0x1256('0x1')],'allowNull':![],'defaultValue':_0x1256('0x1c'),'set':function(_0x1ea1e4){this[_0x1256('0xb')](_0x1256('0x1d'),_0x1ea1e4?_0x1ea1e4[_0x1256('0x19')](';'):_0x1256('0x1c'));},'get':function(){return this['getDataValue'](_0x1256('0x1d'))?this[_0x1256('0xd')]('allow')[_0x1256('0xe')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0x1256('0x15'),'no')},'insecure':{'type':Sequelize[_0x1256('0x1')],'defaultValue':_0x1256('0x1e'),'set':function(_0x31fa0f){this[_0x1256('0xb')](_0x1256('0x1f'),_0x31fa0f?_0x31fa0f[_0x1256('0x19')](','):null);},'get':function(){return this[_0x1256('0xd')](_0x1256('0x1f'))?this[_0x1256('0xd')](_0x1256('0x1f'))[_0x1256('0xe')](','):null;},'comment':_0x1256('0x20')},'trustrpid':{'type':Sequelize[_0x1256('0x3')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x1256('0x15'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x1256('0x15'),'no','never')},'promiscredir':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no')},'useclientcode':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x1256('0x1')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0x1256('0x1')]},'callcounter':{'type':Sequelize[_0x1256('0x3')]('yes','no'),'defaultValue':_0x1256('0x15')},'busylevel':{'type':Sequelize['INTEGER'](0xb)},'allowoverlap':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x1256('0x15'),'no')},'allowtransfer':{'type':Sequelize[_0x1256('0x3')]('yes','no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0x1256('0x15'),'no')},'subscribecontext':{'type':Sequelize[_0x1256('0x1')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0x1256('0x3')]('yes','no',_0x1256('0x21')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x1256('0x15'),'no')},'mailbox':{'type':Sequelize[_0x1256('0x1')]},'session_timers':{'type':Sequelize[_0x1256('0x3')]('accept','refuse',_0x1256('0x22'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0x1256('0x23')](0xb)},'session_refresher':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x24'),_0x1256('0x25')),'defaultValue':_0x1256('0x25')},'t38pt_usertpsource':{'type':Sequelize[_0x1256('0x1')]},'regexten':{'type':Sequelize[_0x1256('0x1')]},'fromdomain':{'type':Sequelize[_0x1256('0x1')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x1256('0x23')](0x5)},'qualify':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no'),'defaultValue':_0x1256('0x15')},'keepalive':{'type':Sequelize[_0x1256('0x23')](0xb)},'defaultip':{'type':Sequelize[_0x1256('0x1')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x1256('0x23')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0x1256('0x23')](0xb)},'sendrpid':{'type':Sequelize[_0x1256('0x3')]('yes','no',_0x1256('0x26')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1256('0x1')]},'callbackextension':{'type':Sequelize[_0x1256('0x1')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x1256('0x23')](0xb)},'qualifyfreq':{'type':Sequelize[_0x1256('0x23')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0x1256('0x1')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0x1256('0x1')]},'maxforwards':{'type':Sequelize[_0x1256('0x23')](0xb)},'encryption':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no')},'force_avp':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0x1256('0x15'),'no')},'dtlsenable':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no')},'dtlsverify':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no',_0x1256('0x27'),_0x1256('0x28'))},'dtlsrekey':{'type':Sequelize[_0x1256('0x23')](0xb)},'dtlscertfile':{'type':Sequelize[_0x1256('0x1')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0x1256('0x1')]},'dtlssetup':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x29'),_0x1256('0x2a'),_0x1256('0x2b')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0x1256('0x1')]},'call_limit':{'type':Sequelize[_0x1256('0x23')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x1256('0x3')]('yes','no')},'subscribemwi':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0x1256('0x1')]},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0x1256('0x1')]},'description':{'type':Sequelize[_0x1256('0x1')]},'host':{'type':Sequelize[_0x1256('0x1')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0x1256('0x3')](_0x1256('0x15'),'no',_0x1256('0x2c'),'update',_0x1256('0x2d')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x1256('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x1256('0x1')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x2637=['nat','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','uac','uas','fingerprint','certificate','active','passive','actpass','dynamic','update,nonat','BOOLEAN','sequelize','exports','ENUM','friend','peer','STRING','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','join','transport','split','rfc2833','info','inband','auto','yes','nonat','update','outgoing','force_rport,comedia'];(function(_0x4b430a,_0x9e4425){var _0x2fef54=function(_0x4672f3){while(--_0x4672f3){_0x4b430a['push'](_0x4b430a['shift']());}};_0x2fef54(++_0x9e4425);}(_0x2637,0x7f));var _0x7263=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x2637[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require(_0x7263('0x0'));module[_0x7263('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x3'),'user',_0x7263('0x4')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x7263('0x5')],'allowNull':![],'defaultValue':_0x7263('0x6')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0x7263('0x7'),_0x7263('0x8'),'ALLOWED','PROHIB_NOT_SCREENED',_0x7263('0x9'),_0x7263('0xa'),_0x7263('0xb'))},'deny':{'type':Sequelize[_0x7263('0x5')]},'permit':{'type':Sequelize[_0x7263('0x5')]},'secret':{'type':Sequelize[_0x7263('0x5')]},'md5secret':{'type':Sequelize[_0x7263('0x5')]},'remotesecret':{'type':Sequelize[_0x7263('0x5')]},'transport':{'type':Sequelize[_0x7263('0x5')],'defaultValue':_0x7263('0xc'),'set':function(_0x4deff1){this[_0x7263('0xd')]('transport',_0x4deff1?_0x4deff1[_0x7263('0xe')](','):null);},'get':function(){return this['getDataValue'](_0x7263('0xf'))?this['getDataValue'](_0x7263('0xf'))[_0x7263('0x10')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x11'),_0x7263('0x12'),'shortinfo',_0x7263('0x13'),_0x7263('0x14')),'defaultValue':_0x7263('0x11')},'directmedia':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no',_0x7263('0x16'),_0x7263('0x17'),_0x7263('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x7263('0x5')]},'directmediadeny':{'type':Sequelize[_0x7263('0x5')]},'nat':{'type':Sequelize[_0x7263('0x5')],'defaultValue':_0x7263('0x19'),'set':function(_0x4b03df){this['setDataValue'](_0x7263('0x1a'),_0x4b03df?_0x4b03df[_0x7263('0xe')](','):null);},'get':function(){return this[_0x7263('0x1b')](_0x7263('0x1a'))?this[_0x7263('0x1b')](_0x7263('0x1a'))[_0x7263('0x10')](','):null;},'comment':_0x7263('0x1c')},'callgroup':{'type':Sequelize[_0x7263('0x5')]},'namedcallgroup':{'type':Sequelize[_0x7263('0x5')]},'pickupgroup':{'type':Sequelize[_0x7263('0x5')]},'namedpickupgroup':{'type':Sequelize[_0x7263('0x5')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x7263('0x5')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0x7263('0x1d')},'allow':{'type':Sequelize[_0x7263('0x5')],'allowNull':![],'defaultValue':_0x7263('0x1e'),'set':function(_0x58fa48){this[_0x7263('0xd')](_0x7263('0x1f'),_0x58fa48?_0x58fa48[_0x7263('0xe')](';'):_0x7263('0x1e'));},'get':function(){return this['getDataValue']('allow')?this[_0x7263('0x1b')](_0x7263('0x1f'))[_0x7263('0x10')](';'):null;},'comment':_0x7263('0x20')},'autoframing':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x7263('0x21'),'set':function(_0x43ced2){this[_0x7263('0xd')](_0x7263('0x22'),_0x43ced2?_0x43ced2[_0x7263('0xe')](','):null);},'get':function(){return this[_0x7263('0x1b')]('insecure')?this[_0x7263('0x1b')](_0x7263('0x22'))[_0x7263('0x10')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x7263('0x2')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x7263('0x15'),'no',_0x7263('0x23'))},'promiscredir':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'useclientcode':{'type':Sequelize[_0x7263('0x2')]('yes','no')},'accountcode':{'type':Sequelize[_0x7263('0x24')](0xb)},'setvar':{'type':Sequelize[_0x7263('0x5')]},'callerid':{'type':Sequelize[_0x7263('0x5')],'defaultValue':_0x7263('0x25')},'amaflags':{'type':Sequelize[_0x7263('0x5')]},'callcounter':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no'),'defaultValue':_0x7263('0x15')},'busylevel':{'type':Sequelize[_0x7263('0x24')](0xb)},'allowoverlap':{'type':Sequelize['ENUM'](_0x7263('0x15'),'no')},'allowsubscribe':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'allowtransfer':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'ignoresdpversion':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'subscribecontext':{'type':Sequelize[_0x7263('0x5')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no',_0x7263('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x7263('0x24')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'mailbox':{'type':Sequelize[_0x7263('0x5')]},'session_timers':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x27'),_0x7263('0x28'),'originate')},'session_expires':{'type':Sequelize[_0x7263('0x24')](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x29'),_0x7263('0x2a')),'defaultValue':_0x7263('0x2a')},'t38pt_usertpsource':{'type':Sequelize[_0x7263('0x5')]},'regexten':{'type':Sequelize[_0x7263('0x5')]},'fromdomain':{'type':Sequelize[_0x7263('0x5')]},'fromuser':{'type':Sequelize[_0x7263('0x5')]},'port':{'type':Sequelize[_0x7263('0x24')](0x5)},'qualify':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x7263('0x24')](0xb)},'defaultip':{'type':Sequelize[_0x7263('0x5')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x7263('0x24')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0x7263('0x24')](0xb)},'sendrpid':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0x7263('0x5')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x7263('0x24')](0xb)},'qualifyfreq':{'type':Sequelize[_0x7263('0x24')](0xb)},'contactpermit':{'type':Sequelize[_0x7263('0x5')]},'contactdeny':{'type':Sequelize[_0x7263('0x5')]},'contactacl':{'type':Sequelize[_0x7263('0x5')]},'unsolicited_mailbox':{'type':Sequelize[_0x7263('0x5')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x7263('0x24')](0xb)},'encryption':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x7263('0x2')]('yes','no')},'force_avp':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'icesupport':{'type':Sequelize[_0x7263('0x2')]('yes','no')},'dtlsenable':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'dtlsverify':{'type':Sequelize['ENUM'](_0x7263('0x15'),'no',_0x7263('0x2b'),_0x7263('0x2c'))},'dtlsrekey':{'type':Sequelize[_0x7263('0x24')](0xb)},'dtlscertfile':{'type':Sequelize[_0x7263('0x5')]},'dtlsprivatekey':{'type':Sequelize[_0x7263('0x5')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize['ENUM'](_0x7263('0x2d'),_0x7263('0x2e'),_0x7263('0x2f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x7263('0x5')]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x7263('0x5')]},'recordofffeature':{'type':Sequelize[_0x7263('0x5')]},'call_limit':{'type':Sequelize[_0x7263('0x24')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'subscribemwi':{'type':Sequelize[_0x7263('0x2')](_0x7263('0x15'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0x7263('0x5')]},'mohsuggest':{'type':Sequelize[_0x7263('0x5')]},'parkinglot':{'type':Sequelize[_0x7263('0x5')]},'description':{'type':Sequelize[_0x7263('0x5')]},'host':{'type':Sequelize[_0x7263('0x5')],'defaultValue':_0x7263('0x30')},'canreinvite':{'type':Sequelize['ENUM'](_0x7263('0x15'),'no',_0x7263('0x16'),_0x7263('0x17'),_0x7263('0x31')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x7263('0x5')]},'active':{'type':Sequelize[_0x7263('0x32')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x7263('0x5')],'defaultValue':'no'}};
\ No newline at end of file
index 6204eff..62f03dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','create','readFileSync','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','mustache','util','path','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Trunk,\x20%s,\x20%s','request\x20sent','result','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','Trunks','UserProfileResource','stack','name','send','index','Trunk','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','include','findAll','rows','catch','show','params','length','find','includeAll','get'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x4b84,0x1cc));var _0x44b8=function(_0x3b16e1,_0x3bda3e){_0x3b16e1=_0x3b16e1-0x0;var _0x311d1b=_0x4b84[_0x3b16e1];return _0x311d1b;};'use strict';var emlformat=require(_0x44b8('0x0'));var rimraf=require(_0x44b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x44b8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44b8('0x3'));var util=require(_0x44b8('0x4'));var path=require(_0x44b8('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44b8('0x6'));var _=require('lodash');var squel=require(_0x44b8('0x7'));var crypto=require('crypto');var jsforce=require(_0x44b8('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x44b8('0x9'));var Papa=require(_0x44b8('0xa'));var Redis=require(_0x44b8('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x44b8('0xc'));var as=require(_0x44b8('0xd'));var hardwareService=require(_0x44b8('0xe'));var logger=require(_0x44b8('0xf'))(_0x44b8('0x10'));var utils=require(_0x44b8('0x11'));var config=require(_0x44b8('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x44b8('0x13'))['db'];var jayson=require(_0x44b8('0x14'));var client=jayson['client'][_0x44b8('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x490bc6,_0x833ea3,_0x18d642,_0x4df670){return new BPromise(function(_0x63e8f6,_0x4be54c){var _0x54fa95=_0x4df670||client;return _0x54fa95[_0x44b8('0x16')](_0x490bc6,_0x18d642)[_0x44b8('0x17')](function(_0x1722da){logger[_0x44b8('0x18')]('Trunk,\x20%s,\x20%s',_0x833ea3,'request\x20sent');logger['debug'](_0x44b8('0x19'),_0x833ea3,'request\x20sent',JSON[_0x44b8('0x1a')](_0x1722da));if(_0x1722da[_0x44b8('0x1b')]){if(_0x1722da['error'][_0x44b8('0x1c')]===0x1f4){logger[_0x44b8('0x1b')]('Trunk,\x20%s,\x20%s',_0x833ea3,_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);return _0x4be54c(_0x1722da['error'][_0x44b8('0x1d')]);}logger[_0x44b8('0x1b')](_0x44b8('0x1e'),_0x833ea3,_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);return _0x63e8f6(_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);}else{logger[_0x44b8('0x18')](_0x44b8('0x1e'),_0x833ea3,_0x44b8('0x1f'));_0x63e8f6(_0x1722da[_0x44b8('0x20')][_0x44b8('0x1d')]);}})['catch'](function(_0x56549a){logger[_0x44b8('0x1b')](_0x44b8('0x1e'),_0x833ea3,_0x56549a);_0x4be54c(_0x56549a);});});}function respondWithStatusCode(_0x1418db,_0x305a5c){_0x305a5c=_0x305a5c||0xcc;return function(_0x51a34a){if(_0x51a34a){return _0x1418db[_0x44b8('0x21')](_0x305a5c);}return _0x1418db['status'](_0x305a5c)[_0x44b8('0x22')]();};}function respondWithResult(_0x228c81,_0x25a0c1){_0x25a0c1=_0x25a0c1||0xc8;return function(_0x47689e){if(_0x47689e){return _0x228c81[_0x44b8('0x23')](_0x25a0c1)['json'](_0x47689e);}};}function respondWithFilteredResult(_0x474f01,_0x502acf){return function(_0x41d673){if(_0x41d673){var _0x350482=typeof _0x502acf['offset']===_0x44b8('0x24')&&typeof _0x502acf[_0x44b8('0x25')]===_0x44b8('0x24');var _0x59c1bf=_0x41d673[_0x44b8('0x26')];var _0x242342=_0x350482?0x0:_0x502acf['offset'];var _0x2e0174=_0x350482?_0x41d673['count']:_0x502acf[_0x44b8('0x27')]+_0x502acf['limit'];var _0x559f0b;if(_0x2e0174>=_0x59c1bf){_0x2e0174=_0x59c1bf;_0x559f0b=0xc8;}else{_0x559f0b=0xce;}_0x474f01['status'](_0x559f0b);return _0x474f01[_0x44b8('0x28')](_0x44b8('0x29'),_0x242342+'-'+_0x2e0174+'/'+_0x59c1bf)[_0x44b8('0x2a')](_0x41d673);}return null;};}function patchUpdates(_0x1bd1be){return function(_0x38cd17){try{jsonpatch[_0x44b8('0x2b')](_0x38cd17,_0x1bd1be,!![]);}catch(_0x2cf205){return BPromise[_0x44b8('0x2c')](_0x2cf205);}return _0x38cd17[_0x44b8('0x2d')]();};}function saveUpdates(_0x28f918,_0x5e1129){return function(_0x417d81){if(_0x417d81){return _0x417d81[_0x44b8('0x2e')](_0x28f918)['then'](function(_0x261ff2){return _0x261ff2;});}return null;};}function removeEntity(_0x538db7,_0x212983){return function(_0x1652cb){if(_0x1652cb){return _0x1652cb[_0x44b8('0x2f')]()[_0x44b8('0x17')](function(){var _0x1b63a7=_0x1652cb['get']({'plain':!![]});var _0x16b706=_0x44b8('0x30');return db[_0x44b8('0x31')][_0x44b8('0x2f')]({'where':{'type':_0x16b706,'resourceId':_0x1b63a7['id']}})[_0x44b8('0x17')](function(){return _0x1652cb;});})['then'](function(){_0x538db7[_0x44b8('0x23')](0xcc)[_0x44b8('0x22')]();});}};}function handleEntityNotFound(_0x1a30fc,_0x3e93af){return function(_0x140a79){if(!_0x140a79){_0x1a30fc[_0x44b8('0x21')](0x194);}return _0x140a79;};}function handleError(_0x2e8b88,_0x14a9d7){_0x14a9d7=_0x14a9d7||0x1f4;return function(_0x28c10d){logger[_0x44b8('0x1b')](_0x28c10d[_0x44b8('0x32')]);if(_0x28c10d[_0x44b8('0x33')]){delete _0x28c10d[_0x44b8('0x33')];}_0x2e8b88[_0x44b8('0x23')](_0x14a9d7)[_0x44b8('0x34')](_0x28c10d);};}exports[_0x44b8('0x35')]=function(_0x323c50,_0xeff999){var _0x28faa9={},_0x3984f8={},_0x2c02d6={'count':0x0,'rows':[]};var _0x282345=_['map'](db[_0x44b8('0x36')][_0x44b8('0x37')],function(_0x4fcfa0){return{'name':_0x4fcfa0[_0x44b8('0x38')],'type':_0x4fcfa0[_0x44b8('0x39')][_0x44b8('0x3a')]};});_0x3984f8[_0x44b8('0x3b')]=_['map'](_0x282345,_0x44b8('0x33'));_0x3984f8[_0x44b8('0x3c')]=_[_0x44b8('0x3d')](_0x323c50[_0x44b8('0x3c')]);_0x3984f8[_0x44b8('0x3e')]=_[_0x44b8('0x3f')](_0x3984f8[_0x44b8('0x3b')],_0x3984f8[_0x44b8('0x3c')]);_0x28faa9[_0x44b8('0x40')]=_[_0x44b8('0x3f')](_0x3984f8[_0x44b8('0x3b')],qs[_0x44b8('0x41')](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x41')]));_0x28faa9[_0x44b8('0x40')]=_0x28faa9[_0x44b8('0x40')]['length']?_0x28faa9[_0x44b8('0x40')]:_0x3984f8[_0x44b8('0x3b')];if(!_0x323c50[_0x44b8('0x3c')]['hasOwnProperty'](_0x44b8('0x42'))){_0x28faa9[_0x44b8('0x25')]=qs[_0x44b8('0x25')](_0x323c50['query'][_0x44b8('0x25')]);_0x28faa9[_0x44b8('0x27')]=qs[_0x44b8('0x27')](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x27')]);}_0x28faa9['order']=qs['sort'](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x43')]);_0x28faa9[_0x44b8('0x44')]=qs[_0x44b8('0x3e')](_[_0x44b8('0x45')](_0x323c50[_0x44b8('0x3c')],_0x3984f8[_0x44b8('0x3e')]),_0x282345);if(_0x323c50[_0x44b8('0x3c')][_0x44b8('0x46')]){_0x28faa9[_0x44b8('0x44')]=_[_0x44b8('0x47')](_0x28faa9[_0x44b8('0x44')],{'$or':_[_0x44b8('0x48')](_0x282345,function(_0x1236c7){if(_0x1236c7[_0x44b8('0x39')]!==_0x44b8('0x49')){var _0xce06dc={};_0xce06dc[_0x1236c7[_0x44b8('0x33')]]={'$like':'%'+_0x323c50[_0x44b8('0x3c')]['filter']+'%'};return _0xce06dc;}})});}_0x28faa9=_['merge']({},_0x28faa9,_0x323c50[_0x44b8('0x4a')]);var _0x1df74b={'where':_0x28faa9[_0x44b8('0x44')]};return db[_0x44b8('0x36')][_0x44b8('0x26')](_0x1df74b)[_0x44b8('0x17')](function(_0x411ed6){_0x2c02d6['count']=_0x411ed6;if(_0x323c50[_0x44b8('0x3c')]['includeAll']){_0x28faa9[_0x44b8('0x4b')]=[{'all':!![]}];}return db[_0x44b8('0x36')][_0x44b8('0x4c')](_0x28faa9);})[_0x44b8('0x17')](function(_0x103d57){_0x2c02d6[_0x44b8('0x4d')]=_0x103d57;return _0x2c02d6;})['then'](respondWithFilteredResult(_0xeff999,_0x28faa9))[_0x44b8('0x4e')](handleError(_0xeff999,null));};exports[_0x44b8('0x4f')]=function(_0x10602c,_0x25d266){var _0x4ccc77={'raw':![],'where':{'id':_0x10602c[_0x44b8('0x50')]['id']}},_0x4e4ed1={};_0x4e4ed1[_0x44b8('0x3b')]=_[_0x44b8('0x3d')](db[_0x44b8('0x36')][_0x44b8('0x37')]);_0x4e4ed1['query']=_[_0x44b8('0x3d')](_0x10602c[_0x44b8('0x3c')]);_0x4e4ed1[_0x44b8('0x3e')]=_[_0x44b8('0x3f')](_0x4e4ed1[_0x44b8('0x3b')],_0x4e4ed1['query']);_0x4ccc77['attributes']=_[_0x44b8('0x3f')](_0x4e4ed1['model'],qs[_0x44b8('0x41')](_0x10602c['query'][_0x44b8('0x41')]));_0x4ccc77[_0x44b8('0x40')]=_0x4ccc77[_0x44b8('0x40')][_0x44b8('0x51')]?_0x4ccc77[_0x44b8('0x40')]:_0x4e4ed1[_0x44b8('0x3b')];if(_0x10602c[_0x44b8('0x3c')]['includeAll']){_0x4ccc77[_0x44b8('0x4b')]=[{'all':!![]}];}_0x4ccc77=_[_0x44b8('0x47')]({},_0x4ccc77,_0x10602c[_0x44b8('0x4a')]);return db['Trunk'][_0x44b8('0x52')](_0x4ccc77)[_0x44b8('0x17')](handleEntityNotFound(_0x25d266,null))[_0x44b8('0x17')](respondWithResult(_0x25d266,null))[_0x44b8('0x4e')](handleError(_0x25d266,null));};exports['clone']=function(_0x399d6b,_0x308f7b){var _0x4a6e55={'where':{'id':_0x399d6b[_0x44b8('0x50')]['id']}},_0x3de425={};_0x3de425[_0x44b8('0x3b')]=_[_0x44b8('0x3d')](db[_0x44b8('0x36')]['rawAttributes']);_0x4a6e55['attributes']=_[_0x44b8('0x3f')](_0x3de425[_0x44b8('0x3b')],qs[_0x44b8('0x41')](_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x41')]));_0x4a6e55[_0x44b8('0x40')]=_0x4a6e55[_0x44b8('0x40')][_0x44b8('0x51')]?_0x4a6e55[_0x44b8('0x40')]:_0x3de425[_0x44b8('0x3b')];if(_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x53')]){_0x4a6e55['include']=[{'all':!![]}];}_0x4a6e55=_[_0x44b8('0x47')]({},_0x4a6e55,_0x399d6b[_0x44b8('0x4a')]);return db[_0x44b8('0x36')][_0x44b8('0x52')](_0x4a6e55)[_0x44b8('0x17')](handleEntityNotFound(_0x308f7b,null))[_0x44b8('0x17')](function(_0x426a6a){if(_0x426a6a){var _0x172ff3=_0x426a6a[_0x44b8('0x54')]({'plain':!![]});_0x172ff3=qs[_0x44b8('0x55')](_0x172ff3,['id',_0x44b8('0x56'),_0x44b8('0x57')]);_0x399d6b[_0x44b8('0x58')]=_[_0x44b8('0x55')](_0x399d6b[_0x44b8('0x58')],['id',_0x44b8('0x56'),_0x44b8('0x57')]);return db[_0x44b8('0x36')]['create'](_[_0x44b8('0x47')](_0x172ff3,_0x399d6b[_0x44b8('0x58')]),{'include':_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x53')]?[{'all':!![]}]:undefined})[_0x44b8('0x17')](function(_0x29ed5d){var _0x2ecf65=_0x399d6b['user'][_0x44b8('0x54')]({'plain':!![]});if(!_0x2ecf65)throw new Error(_0x44b8('0x59'));if(_0x2ecf65['role']===_0x44b8('0x5a')){var _0x3354bd=_0x29ed5d['get']({'plain':!![]});var _0x37e42e=_0x44b8('0x30');return db[_0x44b8('0x5b')]['find']({'where':{'name':_0x37e42e,'userProfileId':_0x2ecf65[_0x44b8('0x5c')]},'raw':!![]})['then'](function(_0x36cdd8){if(_0x36cdd8&&_0x36cdd8['autoAssociation']===0x0){return db[_0x44b8('0x31')][_0x44b8('0x5d')]({'name':_0x3354bd[_0x44b8('0x33')],'resourceId':_0x3354bd['id'],'type':_0x36cdd8[_0x44b8('0x33')],'sectionId':_0x36cdd8['id']},{})[_0x44b8('0x17')](function(){return _0x29ed5d;});}else{return _0x29ed5d;}})[_0x44b8('0x4e')](function(_0x4c7edd){logger[_0x44b8('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c7edd);throw _0x4c7edd;});}return _0x29ed5d;});}})[_0x44b8('0x17')](respondWithResult(_0x308f7b,0xc9))[_0x44b8('0x4e')](handleError(_0x308f7b,null));};exports['create']=function(_0x3f9438,_0x1ee26b,_0x1cf31f){var _0x30d60f;return db[_0x44b8('0x36')][_0x44b8('0x5d')](_0x3f9438[_0x44b8('0x58')],{'raw':!![]})[_0x44b8('0x17')](function(_0x3f9102){_0x30d60f=_0x3f9102;return db[_0x44b8('0x36')][_0x44b8('0x4c')]({'raw':!![]});})[_0x44b8('0x17')](function(_0x52381a){var _0xd20d0=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],_0x44b8('0x60')),_0x44b8('0x61'));var _0x5bff09=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config[_0x44b8('0x62')],_0x44b8('0x63')),_0x44b8('0x61'));var _0x59060b=ejs[_0x44b8('0x64')](_0xd20d0,{'trunks':_0x52381a||[]});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x59060b);if(_0x30d60f[_0x44b8('0x67')]){var _0x2e02d7=ejs[_0x44b8('0x64')](_0x5bff09,{'trunks':_0x52381a||[]});fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x2e02d7);}})['then'](function(){return respondWithRpcPromise(_0x44b8('0x69'),_0x44b8('0x5d'),{'module':_0x44b8('0x6a')});})[_0x44b8('0x17')](function(){var _0x5b26e8=_0x3f9438['user']['get']({'plain':!![]});if(!_0x5b26e8)throw new Error(_0x44b8('0x59'));if(_0x5b26e8[_0x44b8('0x6b')]===_0x44b8('0x5a')){var _0x46e20f=_0x30d60f[_0x44b8('0x54')]({'plain':!![]});return db['UserProfileSection'][_0x44b8('0x52')]({'where':{'name':'Trunks','userProfileId':_0x5b26e8[_0x44b8('0x5c')]},'raw':!![]})[_0x44b8('0x17')](function(_0xea2c3e){if(_0xea2c3e&&_0xea2c3e['autoAssociation']===0x0){return db['UserProfileResource'][_0x44b8('0x5d')]({'name':_0x46e20f[_0x44b8('0x33')],'resourceId':_0x46e20f['id'],'type':_0xea2c3e[_0x44b8('0x33')],'sectionId':_0xea2c3e['id']},{})['then'](function(){return _0x30d60f;});}else{return _0x30d60f;}})[_0x44b8('0x4e')](function(_0x36f217){logger[_0x44b8('0x1b')](_0x44b8('0x6c'),_0x36f217);throw _0x36f217;});}return _0x30d60f;})[_0x44b8('0x17')](respondWithResult(_0x1ee26b,0xc9))['catch'](handleError(_0x1ee26b,null));};exports[_0x44b8('0x2e')]=function(_0x1888f8,_0xbbdab9,_0x2a8ccc){var _0x220f1b;return db['Trunk'][_0x44b8('0x52')]({'where':{'id':_0x1888f8[_0x44b8('0x50')]['id']}})[_0x44b8('0x17')](handleEntityNotFound(_0xbbdab9,null))[_0x44b8('0x17')](saveUpdates(_0x1888f8[_0x44b8('0x58')],null))[_0x44b8('0x17')](function(_0x1c7ef2){if(_0x1c7ef2){_0x220f1b=_0x1c7ef2;return db['Trunk'][_0x44b8('0x4c')]({'raw':!![]});}})[_0x44b8('0x17')](function(_0x4c3fea){if(_0x4c3fea){var _0x3bb7d8=fs[_0x44b8('0x5e')](path['join'](config[_0x44b8('0x62')],'server/files/templates/trunk.ejs'),'utf8');var _0x31d3b6=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],'server/files/templates/registry.ejs'),'utf8');var _0x36334a=ejs[_0x44b8('0x64')](_0x3bb7d8,{'trunks':_0x4c3fea||[]});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x36334a);var _0x1a5621=ejs[_0x44b8('0x64')](_0x31d3b6,{'trunks':_0x4c3fea||[]});fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x1a5621);return respondWithRpcPromise('Reload',_0x44b8('0x2e'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x55f4e4){if(_0x55f4e4){return _0x220f1b;}})[_0x44b8('0x17')](respondWithResult(_0xbbdab9,null))['catch'](handleError(_0xbbdab9,null));};exports[_0x44b8('0x2f')]=function(_0x1e37fd,_0x268e1e,_0x306793){var _0x3a9780;return db[_0x44b8('0x36')][_0x44b8('0x52')]({'where':{'id':_0x1e37fd[_0x44b8('0x50')]['id']}})['then'](handleEntityNotFound(_0x268e1e,null))[_0x44b8('0x17')](removeEntity(_0x268e1e,null))[_0x44b8('0x17')](function(){return db[_0x44b8('0x36')][_0x44b8('0x4c')]({'raw':!![]});})[_0x44b8('0x17')](function(_0xee44b3){var _0x10034d=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],'server/files/templates/trunk.ejs'),_0x44b8('0x61'));var _0x553aa9=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config[_0x44b8('0x62')],'server/files/templates/registry.ejs'),'utf8');var _0x4b22e7=ejs[_0x44b8('0x64')](_0x10034d,{'trunks':_0xee44b3});var _0x4860af=ejs[_0x44b8('0x64')](_0x553aa9,{'trunks':_0xee44b3});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x4b22e7);fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x4860af);return respondWithRpcPromise(_0x44b8('0x69'),_0x44b8('0x2f'),{'module':_0x44b8('0x6a')});})[_0x44b8('0x4e')](handleError(_0x268e1e,null));};
\ No newline at end of file
+var _0xd6d6=['sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','get','Trunks','UserProfileResource','stack','send','index','rawAttributes','fieldName','type','model','map','name','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','VIRTUAL','filter','merge','options','Trunk','includeAll','include','findAll','rows','show','params','find','clone','omit','createdAt','updatedAt','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','create','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','role','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','jayson/promise','client','http','request','then','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch'];(function(_0x53f609,_0x3217e1){var _0x4b649a=function(_0x4bb5fe){while(--_0x4bb5fe){_0x53f609['push'](_0x53f609['shift']());}};_0x4b649a(++_0x3217e1);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x4d89f4,_0x283018){_0x4d89f4=_0x4d89f4-0x0;var _0x39f9ee=_0xd6d6[_0x4d89f4];return _0x39f9ee;};'use strict';var emlformat=require(_0x6d6d('0x0'));var rimraf=require(_0x6d6d('0x1'));var zipdir=require(_0x6d6d('0x2'));var jsonpatch=require(_0x6d6d('0x3'));var rp=require('request-promise');var moment=require(_0x6d6d('0x4'));var BPromise=require(_0x6d6d('0x5'));var Mustache=require(_0x6d6d('0x6'));var util=require(_0x6d6d('0x7'));var path=require(_0x6d6d('0x8'));var sox=require(_0x6d6d('0x9'));var csv=require(_0x6d6d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d6d('0xb'));var _=require(_0x6d6d('0xc'));var squel=require(_0x6d6d('0xd'));var crypto=require(_0x6d6d('0xe'));var jsforce=require(_0x6d6d('0xf'));var deskjs=require(_0x6d6d('0x10'));var toCsv=require(_0x6d6d('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6d6d('0x11'));var authService=require(_0x6d6d('0x12'));var qs=require(_0x6d6d('0x13'));var as=require(_0x6d6d('0x14'));var hardwareService=require(_0x6d6d('0x15'));var logger=require('../../config/logger')(_0x6d6d('0x16'));var utils=require(_0x6d6d('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6d6d('0x18'))['db'];var jayson=require(_0x6d6d('0x19'));var client=jayson[_0x6d6d('0x1a')][_0x6d6d('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x2b74ed,_0x41fbdf,_0x19cf50,_0x2cb2dd){return new BPromise(function(_0x5f4154,_0xd09ea7){var _0x3dd4b3=_0x2cb2dd||client;return _0x3dd4b3[_0x6d6d('0x1c')](_0x2b74ed,_0x19cf50)[_0x6d6d('0x1d')](function(_0x29cbd8){logger['info'](_0x6d6d('0x1e'),_0x41fbdf,'request\x20sent');logger[_0x6d6d('0x1f')](_0x6d6d('0x20'),_0x41fbdf,_0x6d6d('0x21'),JSON['stringify'](_0x29cbd8));if(_0x29cbd8['error']){if(_0x29cbd8[_0x6d6d('0x22')][_0x6d6d('0x23')]===0x1f4){logger[_0x6d6d('0x22')](_0x6d6d('0x1e'),_0x41fbdf,_0x29cbd8['error']['message']);return _0xd09ea7(_0x29cbd8[_0x6d6d('0x22')]['message']);}logger[_0x6d6d('0x22')](_0x6d6d('0x1e'),_0x41fbdf,_0x29cbd8[_0x6d6d('0x22')][_0x6d6d('0x24')]);return _0x5f4154(_0x29cbd8[_0x6d6d('0x22')][_0x6d6d('0x24')]);}else{logger[_0x6d6d('0x25')](_0x6d6d('0x1e'),_0x41fbdf,_0x6d6d('0x21'));_0x5f4154(_0x29cbd8[_0x6d6d('0x26')][_0x6d6d('0x24')]);}})[_0x6d6d('0x27')](function(_0x466a29){logger[_0x6d6d('0x22')](_0x6d6d('0x1e'),_0x41fbdf,_0x466a29);_0xd09ea7(_0x466a29);});});}function respondWithStatusCode(_0x25a02e,_0xced622){_0xced622=_0xced622||0xcc;return function(_0x583b10){if(_0x583b10){return _0x25a02e[_0x6d6d('0x28')](_0xced622);}return _0x25a02e[_0x6d6d('0x29')](_0xced622)[_0x6d6d('0x2a')]();};}function respondWithResult(_0x97ec9e,_0xf0df7f){_0xf0df7f=_0xf0df7f||0xc8;return function(_0x12fab2){if(_0x12fab2){return _0x97ec9e['status'](_0xf0df7f)[_0x6d6d('0x2b')](_0x12fab2);}};}function respondWithFilteredResult(_0x2b5e31,_0x235451){return function(_0x126ac8){if(_0x126ac8){var _0x25c121=typeof _0x235451[_0x6d6d('0x2c')]===_0x6d6d('0x2d')&&typeof _0x235451['limit']===_0x6d6d('0x2d');var _0x9595d8=_0x126ac8['count'];var _0x553645=_0x25c121?0x0:_0x235451[_0x6d6d('0x2c')];var _0x5273cd=_0x25c121?_0x126ac8[_0x6d6d('0x2e')]:_0x235451['offset']+_0x235451[_0x6d6d('0x2f')];var _0x20255e;if(_0x5273cd>=_0x9595d8){_0x5273cd=_0x9595d8;_0x20255e=0xc8;}else{_0x20255e=0xce;}_0x2b5e31[_0x6d6d('0x29')](_0x20255e);return _0x2b5e31[_0x6d6d('0x30')](_0x6d6d('0x31'),_0x553645+'-'+_0x5273cd+'/'+_0x9595d8)[_0x6d6d('0x2b')](_0x126ac8);}return null;};}function patchUpdates(_0xdda3f2){return function(_0x359cfd){try{jsonpatch[_0x6d6d('0x32')](_0x359cfd,_0xdda3f2,!![]);}catch(_0x34050a){return BPromise['reject'](_0x34050a);}return _0x359cfd[_0x6d6d('0x33')]();};}function saveUpdates(_0x4f1fc5,_0x18015a){return function(_0x1ea9b2){if(_0x1ea9b2){return _0x1ea9b2[_0x6d6d('0x34')](_0x4f1fc5)[_0x6d6d('0x1d')](function(_0x5c6248){return _0x5c6248;});}return null;};}function removeEntity(_0x182441,_0x4f2f13){return function(_0x3cc702){if(_0x3cc702){return _0x3cc702[_0x6d6d('0x35')]()['then'](function(){var _0x37993f=_0x3cc702[_0x6d6d('0x36')]({'plain':!![]});var _0x37ac94=_0x6d6d('0x37');return db[_0x6d6d('0x38')][_0x6d6d('0x35')]({'where':{'type':_0x37ac94,'resourceId':_0x37993f['id']}})[_0x6d6d('0x1d')](function(){return _0x3cc702;});})[_0x6d6d('0x1d')](function(){_0x182441[_0x6d6d('0x29')](0xcc)[_0x6d6d('0x2a')]();});}};}function handleEntityNotFound(_0x2fcf88,_0x3693da){return function(_0x17d863){if(!_0x17d863){_0x2fcf88[_0x6d6d('0x28')](0x194);}return _0x17d863;};}function handleError(_0x5a2397,_0x1335ef){_0x1335ef=_0x1335ef||0x1f4;return function(_0xf98bfa){logger[_0x6d6d('0x22')](_0xf98bfa[_0x6d6d('0x39')]);if(_0xf98bfa['name']){delete _0xf98bfa['name'];}_0x5a2397[_0x6d6d('0x29')](_0x1335ef)[_0x6d6d('0x3a')](_0xf98bfa);};}exports[_0x6d6d('0x3b')]=function(_0x4d42ff,_0x2a3f67){var _0x2607c1={},_0x23c173={},_0x125d79={'count':0x0,'rows':[]};var _0x52556b=_['map'](db['Trunk'][_0x6d6d('0x3c')],function(_0x4196f0){return{'name':_0x4196f0[_0x6d6d('0x3d')],'type':_0x4196f0[_0x6d6d('0x3e')]['key']};});_0x23c173[_0x6d6d('0x3f')]=_[_0x6d6d('0x40')](_0x52556b,_0x6d6d('0x41'));_0x23c173[_0x6d6d('0x42')]=_[_0x6d6d('0x43')](_0x4d42ff[_0x6d6d('0x42')]);_0x23c173['filters']=_[_0x6d6d('0x44')](_0x23c173[_0x6d6d('0x3f')],_0x23c173[_0x6d6d('0x42')]);_0x2607c1[_0x6d6d('0x45')]=_[_0x6d6d('0x44')](_0x23c173[_0x6d6d('0x3f')],qs[_0x6d6d('0x46')](_0x4d42ff['query'][_0x6d6d('0x46')]));_0x2607c1[_0x6d6d('0x45')]=_0x2607c1[_0x6d6d('0x45')][_0x6d6d('0x47')]?_0x2607c1[_0x6d6d('0x45')]:_0x23c173['model'];if(!_0x4d42ff[_0x6d6d('0x42')][_0x6d6d('0x48')]('nolimit')){_0x2607c1[_0x6d6d('0x2f')]=qs['limit'](_0x4d42ff[_0x6d6d('0x42')][_0x6d6d('0x2f')]);_0x2607c1['offset']=qs[_0x6d6d('0x2c')](_0x4d42ff[_0x6d6d('0x42')][_0x6d6d('0x2c')]);}_0x2607c1[_0x6d6d('0x49')]=qs[_0x6d6d('0x4a')](_0x4d42ff['query']['sort']);_0x2607c1[_0x6d6d('0x4b')]=qs['filters'](_['pick'](_0x4d42ff[_0x6d6d('0x42')],_0x23c173[_0x6d6d('0x4c')]),_0x52556b);if(_0x4d42ff[_0x6d6d('0x42')]['filter']){_0x2607c1[_0x6d6d('0x4b')]=_['merge'](_0x2607c1[_0x6d6d('0x4b')],{'$or':_[_0x6d6d('0x40')](_0x52556b,function(_0x1d3826){if(_0x1d3826[_0x6d6d('0x3e')]!==_0x6d6d('0x4d')){var _0x2669f0={};_0x2669f0[_0x1d3826[_0x6d6d('0x41')]]={'$like':'%'+_0x4d42ff['query'][_0x6d6d('0x4e')]+'%'};return _0x2669f0;}})});}_0x2607c1=_[_0x6d6d('0x4f')]({},_0x2607c1,_0x4d42ff[_0x6d6d('0x50')]);var _0x389e51={'where':_0x2607c1[_0x6d6d('0x4b')]};return db[_0x6d6d('0x51')][_0x6d6d('0x2e')](_0x389e51)[_0x6d6d('0x1d')](function(_0x24cec2){_0x125d79['count']=_0x24cec2;if(_0x4d42ff['query'][_0x6d6d('0x52')]){_0x2607c1[_0x6d6d('0x53')]=[{'all':!![]}];}return db[_0x6d6d('0x51')][_0x6d6d('0x54')](_0x2607c1);})[_0x6d6d('0x1d')](function(_0x492834){_0x125d79[_0x6d6d('0x55')]=_0x492834;return _0x125d79;})[_0x6d6d('0x1d')](respondWithFilteredResult(_0x2a3f67,_0x2607c1))[_0x6d6d('0x27')](handleError(_0x2a3f67,null));};exports[_0x6d6d('0x56')]=function(_0x2ee917,_0x23c2db){var _0x1f7a09={'raw':![],'where':{'id':_0x2ee917[_0x6d6d('0x57')]['id']}},_0x39ec2a={};_0x39ec2a[_0x6d6d('0x3f')]=_[_0x6d6d('0x43')](db[_0x6d6d('0x51')]['rawAttributes']);_0x39ec2a[_0x6d6d('0x42')]=_[_0x6d6d('0x43')](_0x2ee917[_0x6d6d('0x42')]);_0x39ec2a[_0x6d6d('0x4c')]=_[_0x6d6d('0x44')](_0x39ec2a['model'],_0x39ec2a[_0x6d6d('0x42')]);_0x1f7a09[_0x6d6d('0x45')]=_[_0x6d6d('0x44')](_0x39ec2a['model'],qs['fields'](_0x2ee917[_0x6d6d('0x42')]['fields']));_0x1f7a09[_0x6d6d('0x45')]=_0x1f7a09[_0x6d6d('0x45')][_0x6d6d('0x47')]?_0x1f7a09[_0x6d6d('0x45')]:_0x39ec2a[_0x6d6d('0x3f')];if(_0x2ee917[_0x6d6d('0x42')][_0x6d6d('0x52')]){_0x1f7a09[_0x6d6d('0x53')]=[{'all':!![]}];}_0x1f7a09=_[_0x6d6d('0x4f')]({},_0x1f7a09,_0x2ee917[_0x6d6d('0x50')]);return db['Trunk'][_0x6d6d('0x58')](_0x1f7a09)[_0x6d6d('0x1d')](handleEntityNotFound(_0x23c2db,null))[_0x6d6d('0x1d')](respondWithResult(_0x23c2db,null))[_0x6d6d('0x27')](handleError(_0x23c2db,null));};exports[_0x6d6d('0x59')]=function(_0x45f44a,_0x243be3){var _0x5e5ace={'where':{'id':_0x45f44a[_0x6d6d('0x57')]['id']}},_0x5a1cdc={};_0x5a1cdc[_0x6d6d('0x3f')]=_['keys'](db[_0x6d6d('0x51')][_0x6d6d('0x3c')]);_0x5e5ace[_0x6d6d('0x45')]=_[_0x6d6d('0x44')](_0x5a1cdc[_0x6d6d('0x3f')],qs[_0x6d6d('0x46')](_0x45f44a[_0x6d6d('0x42')][_0x6d6d('0x46')]));_0x5e5ace[_0x6d6d('0x45')]=_0x5e5ace[_0x6d6d('0x45')][_0x6d6d('0x47')]?_0x5e5ace[_0x6d6d('0x45')]:_0x5a1cdc[_0x6d6d('0x3f')];if(_0x45f44a[_0x6d6d('0x42')][_0x6d6d('0x52')]){_0x5e5ace['include']=[{'all':!![]}];}_0x5e5ace=_[_0x6d6d('0x4f')]({},_0x5e5ace,_0x45f44a[_0x6d6d('0x50')]);return db['Trunk'][_0x6d6d('0x58')](_0x5e5ace)[_0x6d6d('0x1d')](handleEntityNotFound(_0x243be3,null))[_0x6d6d('0x1d')](function(_0x407357){if(_0x407357){var _0x2d61cc=_0x407357[_0x6d6d('0x36')]({'plain':!![]});_0x2d61cc=qs[_0x6d6d('0x5a')](_0x2d61cc,['id',_0x6d6d('0x5b'),_0x6d6d('0x5c')]);_0x45f44a['body']=_['omit'](_0x45f44a[_0x6d6d('0x5d')],['id',_0x6d6d('0x5b'),_0x6d6d('0x5c')]);return db['Trunk']['create'](_[_0x6d6d('0x4f')](_0x2d61cc,_0x45f44a['body']),{'include':_0x45f44a[_0x6d6d('0x42')]['includeAll']?[{'all':!![]}]:undefined})[_0x6d6d('0x1d')](function(_0x367a6f){var _0x21f14c=_0x45f44a[_0x6d6d('0x5e')][_0x6d6d('0x36')]({'plain':!![]});if(!_0x21f14c)throw new Error(_0x6d6d('0x5f'));if(_0x21f14c['role']===_0x6d6d('0x5e')){var _0x5eb78f=_0x367a6f[_0x6d6d('0x36')]({'plain':!![]});var _0x52d9e7=_0x6d6d('0x37');return db[_0x6d6d('0x60')][_0x6d6d('0x58')]({'where':{'name':_0x52d9e7,'userProfileId':_0x21f14c[_0x6d6d('0x61')]},'raw':!![]})[_0x6d6d('0x1d')](function(_0x163bb7){if(_0x163bb7&&_0x163bb7[_0x6d6d('0x62')]===0x0){return db['UserProfileResource']['create']({'name':_0x5eb78f[_0x6d6d('0x41')],'resourceId':_0x5eb78f['id'],'type':_0x163bb7['name'],'sectionId':_0x163bb7['id']},{})[_0x6d6d('0x1d')](function(){return _0x367a6f;});}else{return _0x367a6f;}})['catch'](function(_0xe19d23){logger[_0x6d6d('0x22')](_0x6d6d('0x63'),_0xe19d23);throw _0xe19d23;});}return _0x367a6f;});}})[_0x6d6d('0x1d')](respondWithResult(_0x243be3,0xc9))[_0x6d6d('0x27')](handleError(_0x243be3,null));};exports[_0x6d6d('0x64')]=function(_0x5dd3b0,_0x3cedc0,_0xbca58e){var _0x3a6d79;return db[_0x6d6d('0x51')][_0x6d6d('0x64')](_0x5dd3b0[_0x6d6d('0x5d')],{'raw':!![]})[_0x6d6d('0x1d')](function(_0x589d64){_0x3a6d79=_0x589d64;return db[_0x6d6d('0x51')][_0x6d6d('0x54')]({'raw':!![]});})[_0x6d6d('0x1d')](function(_0x3bf8a7){var _0x1aa25d=fs[_0x6d6d('0x65')](path[_0x6d6d('0x66')](config[_0x6d6d('0x67')],_0x6d6d('0x68')),_0x6d6d('0x69'));var _0x1efc55=fs['readFileSync'](path['join'](config[_0x6d6d('0x67')],'server/files/templates/registry.ejs'),'utf8');var _0x5b6ca7=ejs[_0x6d6d('0x6a')](_0x1aa25d,{'trunks':_0x3bf8a7||[]});fs[_0x6d6d('0x6b')](_0x6d6d('0x6c'),_0x5b6ca7);if(_0x3a6d79[_0x6d6d('0x6d')]){var _0x2d4a04=ejs[_0x6d6d('0x6a')](_0x1efc55,{'trunks':_0x3bf8a7||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x2d4a04);}})[_0x6d6d('0x1d')](function(){return respondWithRpcPromise('Reload','create',{'module':'chan_sip.so'});})[_0x6d6d('0x1d')](function(){var _0x5cd494=_0x5dd3b0[_0x6d6d('0x5e')]['get']({'plain':!![]});if(!_0x5cd494)throw new Error(_0x6d6d('0x5f'));if(_0x5cd494[_0x6d6d('0x6e')]==='user'){var _0x52dca9=_0x3a6d79[_0x6d6d('0x36')]({'plain':!![]});return db[_0x6d6d('0x60')][_0x6d6d('0x58')]({'where':{'name':_0x6d6d('0x37'),'userProfileId':_0x5cd494['userProfileId']},'raw':!![]})[_0x6d6d('0x1d')](function(_0x264d24){if(_0x264d24&&_0x264d24[_0x6d6d('0x62')]===0x0){return db[_0x6d6d('0x38')]['create']({'name':_0x52dca9[_0x6d6d('0x41')],'resourceId':_0x52dca9['id'],'type':_0x264d24['name'],'sectionId':_0x264d24['id']},{})['then'](function(){return _0x3a6d79;});}else{return _0x3a6d79;}})['catch'](function(_0x3da125){logger['error'](_0x6d6d('0x63'),_0x3da125);throw _0x3da125;});}return _0x3a6d79;})[_0x6d6d('0x1d')](respondWithResult(_0x3cedc0,0xc9))[_0x6d6d('0x27')](handleError(_0x3cedc0,null));};exports['update']=function(_0x5146a4,_0x55d877,_0xcba8dd){var _0x542386;return db['Trunk'][_0x6d6d('0x58')]({'where':{'id':_0x5146a4[_0x6d6d('0x57')]['id']}})[_0x6d6d('0x1d')](handleEntityNotFound(_0x55d877,null))[_0x6d6d('0x1d')](saveUpdates(_0x5146a4[_0x6d6d('0x5d')],null))[_0x6d6d('0x1d')](function(_0x3f9aad){if(_0x3f9aad){_0x542386=_0x3f9aad;return db['Trunk']['findAll']({'raw':!![]});}})['then'](function(_0x5c20c5){if(_0x5c20c5){var _0x54bdef=fs['readFileSync'](path[_0x6d6d('0x66')](config[_0x6d6d('0x67')],_0x6d6d('0x68')),_0x6d6d('0x69'));var _0x59998e=fs['readFileSync'](path['join'](config[_0x6d6d('0x67')],_0x6d6d('0x6f')),_0x6d6d('0x69'));var _0x1c8d15=ejs['render'](_0x54bdef,{'trunks':_0x5c20c5||[]});fs['writeFileSync'](_0x6d6d('0x6c'),_0x1c8d15);var _0x1e1c4e=ejs['render'](_0x59998e,{'trunks':_0x5c20c5||[]});fs[_0x6d6d('0x6b')](_0x6d6d('0x70'),_0x1e1c4e);return respondWithRpcPromise(_0x6d6d('0x71'),_0x6d6d('0x34'),{'module':_0x6d6d('0x72')});}return null;})['then'](function(_0xf5586f){if(_0xf5586f){return _0x542386;}})['then'](respondWithResult(_0x55d877,null))[_0x6d6d('0x27')](handleError(_0x55d877,null));};exports['destroy']=function(_0x108108,_0x54a5a9,_0x445196){var _0x1bfce6;return db[_0x6d6d('0x51')][_0x6d6d('0x58')]({'where':{'id':_0x108108[_0x6d6d('0x57')]['id']}})[_0x6d6d('0x1d')](handleEntityNotFound(_0x54a5a9,null))[_0x6d6d('0x1d')](removeEntity(_0x54a5a9,null))[_0x6d6d('0x1d')](function(){return db[_0x6d6d('0x51')][_0x6d6d('0x54')]({'raw':!![]});})[_0x6d6d('0x1d')](function(_0xb2940d){var _0x7c1934=fs[_0x6d6d('0x65')](path[_0x6d6d('0x66')](config[_0x6d6d('0x67')],'server/files/templates/trunk.ejs'),'utf8');var _0x139b61=fs['readFileSync'](path[_0x6d6d('0x66')](config[_0x6d6d('0x67')],'server/files/templates/registry.ejs'),'utf8');var _0x1d2668=ejs['render'](_0x7c1934,{'trunks':_0xb2940d});var _0x2ab52f=ejs[_0x6d6d('0x6a')](_0x139b61,{'trunks':_0xb2940d});fs[_0x6d6d('0x6b')](_0x6d6d('0x6c'),_0x1d2668);fs[_0x6d6d('0x6b')](_0x6d6d('0x70'),_0x2ab52f);return respondWithRpcPromise(_0x6d6d('0x71'),_0x6d6d('0x35'),{'module':'chan_sip.so'});})[_0x6d6d('0x27')](handleError(_0x54a5a9,null));};
\ No newline at end of file
index 84c3046..85839ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1ae=['../../config/logger','api','moment','bluebird','path','rimraf','exports','define','Trunk','util'];(function(_0x30faee,_0x1c3794){var _0x3a90ab=function(_0x11129b){while(--_0x11129b){_0x30faee['push'](_0x30faee['shift']());}};_0x3a90ab(++_0x1c3794);}(_0xe1ae,0x95));var _0xee1a=function(_0xf5fbb7,_0xdb7f69){_0xf5fbb7=_0xf5fbb7-0x0;var _0x330d55=_0xe1ae[_0xf5fbb7];return _0x330d55;};'use strict';var _=require('lodash');var util=require(_0xee1a('0x0'));var logger=require(_0xee1a('0x1'))(_0xee1a('0x2'));var moment=require(_0xee1a('0x3'));var BPromise=require(_0xee1a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xee1a('0x5'));var rimraf=require(_0xee1a('0x6'));var config=require('../../config/environment');var attributes=require('./trunk.attributes');module[_0xee1a('0x7')]=function(_0x3042c9,_0x1f9348){return _0x3042c9[_0xee1a('0x8')](_0xee1a('0x9'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8341=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./trunk.attributes','exports','define','lodash','util'];(function(_0x45f707,_0x514c77){var _0x5a71c2=function(_0x305ea8){while(--_0x305ea8){_0x45f707['push'](_0x45f707['shift']());}};_0x5a71c2(++_0x514c77);}(_0x8341,0x14e));var _0x1834=function(_0x4a4ebb,_0x18fb3c){_0x4a4ebb=_0x4a4ebb-0x0;var _0x3c3262=_0x8341[_0x4a4ebb];return _0x3c3262;};'use strict';var _=require(_0x1834('0x0'));var util=require(_0x1834('0x1'));var logger=require(_0x1834('0x2'))(_0x1834('0x3'));var moment=require(_0x1834('0x4'));var BPromise=require(_0x1834('0x5'));var rp=require(_0x1834('0x6'));var fs=require('fs');var path=require(_0x1834('0x7'));var rimraf=require('rimraf');var config=require(_0x1834('0x8'));var attributes=require(_0x1834('0x9'));module[_0x1834('0xa')]=function(_0x294bad,_0x4ad3f9){return _0x294bad[_0x1834('0xb')]('Trunk',attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ede193f..0bdc1db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc93=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','Trunk','findAll','options','attributes','include','map','model','GetTrunk','find','raw','where','catch','ShowTrunk','lodash','moment','bluebird'];(function(_0x4ba54b,_0x46f4de){var _0x364bfe=function(_0xe601b3){while(--_0xe601b3){_0x4ba54b['push'](_0x4ba54b['shift']());}};_0x364bfe(++_0x46f4de);}(_0xfc93,0x66));var _0x3fc9=function(_0x360671,_0x170219){_0x360671=_0x360671-0x0;var _0x5e13b0=_0xfc93[_0x360671];return _0x5e13b0;};'use strict';var _=require(_0x3fc9('0x0'));var util=require('util');var moment=require(_0x3fc9('0x1'));var BPromise=require(_0x3fc9('0x2'));var rs=require(_0x3fc9('0x3'));var fs=require('fs');var Redis=require(_0x3fc9('0x4'));var db=require(_0x3fc9('0x5'))['db'];var utils=require(_0x3fc9('0x6'));var logger=require(_0x3fc9('0x7'))('rpc');var config=require(_0x3fc9('0x8'));var jayson=require(_0x3fc9('0x9'));var client=jayson[_0x3fc9('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34dbae,_0xa2f6a2,_0x343cbf){return new BPromise(function(_0x27b728,_0x58a852){return client['request'](_0x34dbae,_0x343cbf)[_0x3fc9('0xb')](function(_0x4b9e0b){logger[_0x3fc9('0xc')](_0x3fc9('0xd'),_0xa2f6a2,_0x3fc9('0xe'));logger[_0x3fc9('0xf')](_0x3fc9('0x10'),_0xa2f6a2,_0x3fc9('0xe'),JSON[_0x3fc9('0x11')](_0x4b9e0b));if(_0x4b9e0b[_0x3fc9('0x12')]){if(_0x4b9e0b[_0x3fc9('0x12')][_0x3fc9('0x13')]===0x1f4){logger[_0x3fc9('0x12')](_0x3fc9('0xd'),_0xa2f6a2,_0x4b9e0b[_0x3fc9('0x12')][_0x3fc9('0x14')]);return _0x58a852(_0x4b9e0b['error']['message']);}logger[_0x3fc9('0x12')](_0x3fc9('0xd'),_0xa2f6a2,_0x4b9e0b[_0x3fc9('0x12')][_0x3fc9('0x14')]);return _0x27b728(_0x4b9e0b['error'][_0x3fc9('0x14')]);}else{logger['info'](_0x3fc9('0xd'),_0xa2f6a2,_0x3fc9('0xe'));_0x27b728(_0x4b9e0b[_0x3fc9('0x15')][_0x3fc9('0x14')]);}})['catch'](function(_0x2a5bcb){logger[_0x3fc9('0x12')](_0x3fc9('0xd'),_0xa2f6a2,_0x2a5bcb);_0x58a852(_0x2a5bcb);});});}exports['GetTrunk']=function(_0x52f389){var _0x4c4731=this;return new Promise(function(_0x1cf955,_0x5c8cbe){return db[_0x3fc9('0x16')][_0x3fc9('0x17')]({'raw':_0x52f389[_0x3fc9('0x18')]?_0x52f389[_0x3fc9('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x52f389[_0x3fc9('0x18')]?_0x52f389[_0x3fc9('0x18')]['where']||null:null,'attributes':_0x52f389[_0x3fc9('0x18')]?_0x52f389[_0x3fc9('0x18')][_0x3fc9('0x19')]||null:null,'limit':_0x52f389['options']?_0x52f389[_0x3fc9('0x18')]['limit']||null:null,'include':_0x52f389[_0x3fc9('0x18')]?_0x52f389[_0x3fc9('0x18')][_0x3fc9('0x1a')]?_[_0x3fc9('0x1b')](_0x52f389[_0x3fc9('0x18')][_0x3fc9('0x1a')],function(_0x4f7086){return{'model':db[_0x4f7086[_0x3fc9('0x1c')]],'as':_0x4f7086['as'],'attributes':_0x4f7086['attributes'],'include':_0x4f7086[_0x3fc9('0x1a')]?_[_0x3fc9('0x1b')](_0x4f7086[_0x3fc9('0x1a')],function(_0x559fea){return{'model':db[_0x559fea['model']],'as':_0x559fea['as'],'attributes':_0x559fea[_0x3fc9('0x19')],'include':_0x559fea[_0x3fc9('0x1a')]?_[_0x3fc9('0x1b')](_0x559fea[_0x3fc9('0x1a')],function(_0x56a523){return{'model':db[_0x56a523['model']],'as':_0x56a523['as'],'attributes':_0x56a523[_0x3fc9('0x19')]};}):[]};}):[]};}):[]:[]})[_0x3fc9('0xb')](function(_0x10acc1){logger[_0x3fc9('0xc')](_0x3fc9('0x1d'),_0x52f389);logger[_0x3fc9('0xf')](_0x3fc9('0x1d'),_0x52f389,JSON[_0x3fc9('0x11')](_0x10acc1));_0x1cf955(_0x10acc1);})['catch'](function(_0x4322be){logger[_0x3fc9('0x12')](_0x3fc9('0x1d'),_0x4322be[_0x3fc9('0x14')],_0x52f389);_0x5c8cbe(_0x4c4731[_0x3fc9('0x12')](0x1f4,_0x4322be[_0x3fc9('0x14')]));});});};exports['ShowTrunk']=function(_0x365d43){var _0x538891=this;return new Promise(function(_0x26c7cc,_0x325218){return db[_0x3fc9('0x16')][_0x3fc9('0x1e')]({'raw':_0x365d43[_0x3fc9('0x18')]?_0x365d43['options'][_0x3fc9('0x1f')]===undefined?!![]:![]:!![],'where':_0x365d43[_0x3fc9('0x18')]?_0x365d43[_0x3fc9('0x18')][_0x3fc9('0x20')]||null:null,'attributes':_0x365d43[_0x3fc9('0x18')]?_0x365d43[_0x3fc9('0x18')][_0x3fc9('0x19')]||null:null,'include':_0x365d43[_0x3fc9('0x18')]?_0x365d43[_0x3fc9('0x18')][_0x3fc9('0x1a')]?_[_0x3fc9('0x1b')](_0x365d43[_0x3fc9('0x18')][_0x3fc9('0x1a')],function(_0x15709a){return{'model':db[_0x15709a['model']],'as':_0x15709a['as'],'attributes':_0x15709a['attributes'],'include':_0x15709a[_0x3fc9('0x1a')]?_[_0x3fc9('0x1b')](_0x15709a[_0x3fc9('0x1a')],function(_0x59297e){return{'model':db[_0x59297e[_0x3fc9('0x1c')]],'as':_0x59297e['as'],'attributes':_0x59297e[_0x3fc9('0x19')],'include':_0x59297e[_0x3fc9('0x1a')]?_[_0x3fc9('0x1b')](_0x59297e['include'],function(_0xdb80ad){return{'model':db[_0xdb80ad[_0x3fc9('0x1c')]],'as':_0xdb80ad['as'],'attributes':_0xdb80ad['attributes']};}):[]};}):[]};}):[]:[]})[_0x3fc9('0xb')](function(_0x2fe676){logger[_0x3fc9('0xc')]('ShowTrunk',_0x365d43);logger[_0x3fc9('0xf')]('ShowTrunk',_0x365d43,JSON[_0x3fc9('0x11')](_0x2fe676));_0x26c7cc(_0x2fe676);})[_0x3fc9('0x21')](function(_0x3e2083){logger[_0x3fc9('0x12')](_0x3fc9('0x22'),_0x3e2083[_0x3fc9('0x14')],_0x365d43);_0x325218(_0x538891[_0x3fc9('0x12')](0x1f4,_0x3e2083['message']));});});};
\ No newline at end of file
+var _0x3edb=['attributes','map','include','model','debug','ShowTrunk','find','raw','where','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','Trunk,\x20%s,\x20%s','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','GetTrunk','Trunk','findAll','options'];(function(_0x1b7900,_0x53b775){var _0x1a91c4=function(_0xa83743){while(--_0xa83743){_0x1b7900['push'](_0x1b7900['shift']());}};_0x1a91c4(++_0x53b775);}(_0x3edb,0x1c9));var _0xb3ed=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x3edb[_0x297fd3];return _0x2af381;};'use strict';var _=require(_0xb3ed('0x0'));var util=require(_0xb3ed('0x1'));var moment=require('moment');var BPromise=require(_0xb3ed('0x2'));var rs=require(_0xb3ed('0x3'));var fs=require('fs');var Redis=require(_0xb3ed('0x4'));var db=require(_0xb3ed('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb3ed('0x6'))('rpc');var config=require(_0xb3ed('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb3ed('0x8')][_0xb3ed('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xa0f681,_0x50fd32,_0xcd6a84){return new BPromise(function(_0x3c968c,_0x2e1a7d){return client[_0xb3ed('0xa')](_0xa0f681,_0xcd6a84)[_0xb3ed('0xb')](function(_0x33d48f){logger['info'](_0xb3ed('0xc'),_0x50fd32,'request\x20sent');logger['debug'](_0xb3ed('0xd'),_0x50fd32,_0xb3ed('0xe'),JSON[_0xb3ed('0xf')](_0x33d48f));if(_0x33d48f[_0xb3ed('0x10')]){if(_0x33d48f[_0xb3ed('0x10')]['code']===0x1f4){logger[_0xb3ed('0x10')]('Trunk,\x20%s,\x20%s',_0x50fd32,_0x33d48f['error'][_0xb3ed('0x11')]);return _0x2e1a7d(_0x33d48f[_0xb3ed('0x10')]['message']);}logger[_0xb3ed('0x10')](_0xb3ed('0xc'),_0x50fd32,_0x33d48f[_0xb3ed('0x10')][_0xb3ed('0x11')]);return _0x3c968c(_0x33d48f[_0xb3ed('0x10')][_0xb3ed('0x11')]);}else{logger['info'](_0xb3ed('0xc'),_0x50fd32,_0xb3ed('0xe'));_0x3c968c(_0x33d48f['result'][_0xb3ed('0x11')]);}})[_0xb3ed('0x12')](function(_0x1887da){logger['error']('Trunk,\x20%s,\x20%s',_0x50fd32,_0x1887da);_0x2e1a7d(_0x1887da);});});}exports[_0xb3ed('0x13')]=function(_0x2f0469){var _0x3e5ab7=this;return new Promise(function(_0x18b619,_0x2f3cf7){return db[_0xb3ed('0x14')][_0xb3ed('0x15')]({'raw':_0x2f0469[_0xb3ed('0x16')]?_0x2f0469[_0xb3ed('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x2f0469[_0xb3ed('0x16')]?_0x2f0469['options']['where']||null:null,'attributes':_0x2f0469[_0xb3ed('0x16')]?_0x2f0469[_0xb3ed('0x16')][_0xb3ed('0x17')]||null:null,'limit':_0x2f0469[_0xb3ed('0x16')]?_0x2f0469['options']['limit']||null:null,'include':_0x2f0469[_0xb3ed('0x16')]?_0x2f0469['options']['include']?_[_0xb3ed('0x18')](_0x2f0469[_0xb3ed('0x16')]['include'],function(_0xf54322){return{'model':db[_0xf54322['model']],'as':_0xf54322['as'],'attributes':_0xf54322['attributes'],'include':_0xf54322[_0xb3ed('0x19')]?_[_0xb3ed('0x18')](_0xf54322['include'],function(_0x3c33cb){return{'model':db[_0x3c33cb[_0xb3ed('0x1a')]],'as':_0x3c33cb['as'],'attributes':_0x3c33cb['attributes'],'include':_0x3c33cb[_0xb3ed('0x19')]?_[_0xb3ed('0x18')](_0x3c33cb['include'],function(_0x48f902){return{'model':db[_0x48f902[_0xb3ed('0x1a')]],'as':_0x48f902['as'],'attributes':_0x48f902[_0xb3ed('0x17')]};}):[]};}):[]};}):[]:[]})[_0xb3ed('0xb')](function(_0x5918e8){logger['info'](_0xb3ed('0x13'),_0x2f0469);logger[_0xb3ed('0x1b')](_0xb3ed('0x13'),_0x2f0469,JSON[_0xb3ed('0xf')](_0x5918e8));_0x18b619(_0x5918e8);})[_0xb3ed('0x12')](function(_0x2a9706){logger[_0xb3ed('0x10')](_0xb3ed('0x13'),_0x2a9706['message'],_0x2f0469);_0x2f3cf7(_0x3e5ab7[_0xb3ed('0x10')](0x1f4,_0x2a9706[_0xb3ed('0x11')]));});});};exports[_0xb3ed('0x1c')]=function(_0x319c42){var _0xc46ae8=this;return new Promise(function(_0x2e31ea,_0x5783d8){return db[_0xb3ed('0x14')][_0xb3ed('0x1d')]({'raw':_0x319c42[_0xb3ed('0x16')]?_0x319c42[_0xb3ed('0x16')][_0xb3ed('0x1e')]===undefined?!![]:![]:!![],'where':_0x319c42[_0xb3ed('0x16')]?_0x319c42[_0xb3ed('0x16')][_0xb3ed('0x1f')]||null:null,'attributes':_0x319c42[_0xb3ed('0x16')]?_0x319c42[_0xb3ed('0x16')][_0xb3ed('0x17')]||null:null,'include':_0x319c42[_0xb3ed('0x16')]?_0x319c42[_0xb3ed('0x16')][_0xb3ed('0x19')]?_['map'](_0x319c42['options'][_0xb3ed('0x19')],function(_0x222f6a){return{'model':db[_0x222f6a[_0xb3ed('0x1a')]],'as':_0x222f6a['as'],'attributes':_0x222f6a[_0xb3ed('0x17')],'include':_0x222f6a[_0xb3ed('0x19')]?_['map'](_0x222f6a[_0xb3ed('0x19')],function(_0x27b052){return{'model':db[_0x27b052[_0xb3ed('0x1a')]],'as':_0x27b052['as'],'attributes':_0x27b052[_0xb3ed('0x17')],'include':_0x27b052['include']?_['map'](_0x27b052['include'],function(_0x1cadf9){return{'model':db[_0x1cadf9[_0xb3ed('0x1a')]],'as':_0x1cadf9['as'],'attributes':_0x1cadf9[_0xb3ed('0x17')]};}):[]};}):[]};}):[]:[]})[_0xb3ed('0xb')](function(_0x58140a){logger['info'](_0xb3ed('0x1c'),_0x319c42);logger[_0xb3ed('0x1b')](_0xb3ed('0x1c'),_0x319c42,JSON['stringify'](_0x58140a));_0x2e31ea(_0x58140a);})[_0xb3ed('0x12')](function(_0x37da1a){logger[_0xb3ed('0x10')](_0xb3ed('0x1c'),_0x37da1a[_0xb3ed('0x11')],_0x319c42);_0x5783d8(_0xc46ae8[_0xb3ed('0x10')](0x1f4,_0x37da1a[_0xb3ed('0x11')]));});});};
\ No newline at end of file
index add8dc8..b740524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f96=['removeTeams','destroy','/:id/chat_interactions','removeChatInteractions','removeMailInteractions','removeFaxInteractions','/:id/sms_interactions','removeSmsInteractions','/:id/openchannel_interactions','removeOpenchannelInteractions','removeFaxAccounts','removeOpenchannelAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./user.controller','isAuthenticated','index','/describe','describe','/whoami','whoami','get','/presence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','/:id/queues','getQueues','/:id/queues_rt','/:id/groups','getGroups','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getMailInteractions','getSmsInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','create','bulkCreate','diskStorage','join','root','server/files/images/','%s-%s','now','originalname','/:id/login','login','/:id/pause','pause','/:id/unpause','unpause','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','addSmsInteractions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','/:id/sms_accounts','createApiKey','update','/:id/password','changePassword','delete','removeQueues'];(function(_0x59bf34,_0x9dbfe){var _0x3a323b=function(_0x15e823){while(--_0x15e823){_0x59bf34['push'](_0x59bf34['shift']());}};_0x3a323b(++_0x9dbfe);}(_0x7f96,0xf4));var _0x67f9=function(_0x3ceaa6,_0x3b9978){_0x3ceaa6=_0x3ceaa6-0x0;var _0x199c68=_0x7f96[_0x3ceaa6];return _0x199c68;};'use strict';var multer=require(_0x67f9('0x0'));var util=require(_0x67f9('0x1'));var path=require(_0x67f9('0x2'));var timeout=require(_0x67f9('0x3'));var express=require(_0x67f9('0x4'));var router=express[_0x67f9('0x5')]();var fs_extra=require(_0x67f9('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x67f9('0x7'));var config=require(_0x67f9('0x8'));var controller=require(_0x67f9('0x9'));router['get']('/',auth[_0x67f9('0xa')](),controller[_0x67f9('0xb')]);router['get'](_0x67f9('0xc'),auth[_0x67f9('0xa')](),controller[_0x67f9('0xd')]);router['get'](_0x67f9('0xe'),auth[_0x67f9('0xa')](),controller[_0x67f9('0xf')]);router[_0x67f9('0x10')](_0x67f9('0x11'),auth[_0x67f9('0xa')](),controller['getPresence']);router[_0x67f9('0x10')](_0x67f9('0x12'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x13')]);router[_0x67f9('0x10')](_0x67f9('0x14'),controller[_0x67f9('0x15')]);router[_0x67f9('0x10')](_0x67f9('0x16'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x17')]);router['get'](_0x67f9('0x18'),auth[_0x67f9('0xa')](),controller['getContacts']);router['get'](_0x67f9('0x19'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x1a')]);router[_0x67f9('0x10')](_0x67f9('0x1b'),auth[_0x67f9('0xa')](),controller['getVoiceQueuesRt']);router[_0x67f9('0x10')](_0x67f9('0x1c'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x1d')]);router[_0x67f9('0x10')]('/:id/recordings',auth[_0x67f9('0xa')](),controller[_0x67f9('0x1e')]);router[_0x67f9('0x10')](_0x67f9('0x1f'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x20')]);router[_0x67f9('0x10')](_0x67f9('0x21'),auth['isAuthenticated'](),controller[_0x67f9('0x22')]);router[_0x67f9('0x10')](_0x67f9('0x23'),auth[_0x67f9('0xa')](),controller['getOpenchannelInteractions']);router[_0x67f9('0x10')]('/:id/mail/interactions',auth['isAuthenticated'](),controller[_0x67f9('0x24')]);router[_0x67f9('0x10')]('/:id/sms/interactions',auth[_0x67f9('0xa')](),controller[_0x67f9('0x25')]);router['get']('/:id/fax/interactions',auth[_0x67f9('0xa')](),controller['getFaxInteractions']);router['get'](_0x67f9('0x26'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x27')]);router[_0x67f9('0x10')](_0x67f9('0x28'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x29')]);router[_0x67f9('0x10')](_0x67f9('0x2a'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x2b')]);router[_0x67f9('0x10')](_0x67f9('0x2c'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x2d')]);router[_0x67f9('0x10')](_0x67f9('0x2e'),auth[_0x67f9('0xa')](),controller['getVoicePrefixes']);router[_0x67f9('0x10')]('/:id/fax_accounts',auth[_0x67f9('0xa')](),controller[_0x67f9('0x2f')]);router[_0x67f9('0x10')](_0x67f9('0x30'),auth['isAuthenticated'](),controller[_0x67f9('0x31')]);router[_0x67f9('0x10')](_0x67f9('0x32'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x33')]);router[_0x67f9('0x10')]('/:id/sms_accounts',auth[_0x67f9('0xa')](),controller[_0x67f9('0x34')]);router[_0x67f9('0x10')](_0x67f9('0x35'),auth['isAuthenticated'](),controller[_0x67f9('0x36')]);router[_0x67f9('0x10')](_0x67f9('0x37'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x38')]);router[_0x67f9('0x10')](_0x67f9('0x39'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x3a')]);router[_0x67f9('0x10')](_0x67f9('0x3b'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x3c')]);router[_0x67f9('0x10')](_0x67f9('0x3d'),auth['isAuthenticated'](),controller[_0x67f9('0x3e')]);router['post'](_0x67f9('0x18'),auth['isAuthenticated'](),controller['addContacts']);router[_0x67f9('0x3f')]('/',auth['isAuthenticated'](),controller[_0x67f9('0x40')]);router['post']('/create_many',auth[_0x67f9('0xa')](),controller[_0x67f9('0x41')]);router[_0x67f9('0x3f')](_0x67f9('0x19'),auth[_0x67f9('0xa')](),controller['addQueues']);var upload=multer({'storage':multer[_0x67f9('0x42')]({'destination':function(_0x266ac7,_0x3dad98,_0x56961b){_0x56961b(null,path[_0x67f9('0x43')](config[_0x67f9('0x44')],_0x67f9('0x45')));},'filename':function(_0x3e9cde,_0x22736c,_0x48c176){_0x48c176(null,util['format'](_0x67f9('0x46'),Date[_0x67f9('0x47')](),_0x22736c[_0x67f9('0x48')]));}})});router[_0x67f9('0x3f')](_0x67f9('0x14'),upload['single']('file'),controller['addAvatar']);router['post'](_0x67f9('0x49'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x4a')]);router['post']('/:id/logout',auth[_0x67f9('0xa')](),controller['logout']);router[_0x67f9('0x3f')](_0x67f9('0x4b'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x4c')]);router[_0x67f9('0x3f')](_0x67f9('0x4d'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x4e')]);router[_0x67f9('0x3f')](_0x67f9('0x28'),auth[_0x67f9('0xa')](),controller['addTeams']);router[_0x67f9('0x3f')]('/:id/chat_interactions',auth[_0x67f9('0xa')](),controller[_0x67f9('0x4f')]);router['post'](_0x67f9('0x50'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x51')]);router['post'](_0x67f9('0x52'),auth['isAuthenticated'](),controller[_0x67f9('0x53')]);router[_0x67f9('0x3f')]('/:id/sms_interactions',auth[_0x67f9('0xa')](),controller[_0x67f9('0x54')]);router[_0x67f9('0x3f')]('/:id/openchannel_interactions',auth[_0x67f9('0xa')](),controller[_0x67f9('0x55')]);router['post'](_0x67f9('0x56'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x57')]);router[_0x67f9('0x3f')]('/:id/fax_accounts',auth[_0x67f9('0xa')](),controller[_0x67f9('0x58')]);router[_0x67f9('0x3f')](_0x67f9('0x30'),auth['isAuthenticated'](),controller[_0x67f9('0x59')]);router[_0x67f9('0x3f')](_0x67f9('0x32'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x5a')]);router[_0x67f9('0x3f')](_0x67f9('0x5b'),auth[_0x67f9('0xa')](),controller['addSmsAccounts']);router['post'](_0x67f9('0x35'),auth[_0x67f9('0xa')](),controller['addChatWebsites']);router[_0x67f9('0x3f')](_0x67f9('0x37'),auth['isAuthenticated'](),controller['addWhatsappAccounts']);router[_0x67f9('0x3f')](_0x67f9('0x39'),auth[_0x67f9('0xa')](),controller['addSquareProjects']);router[_0x67f9('0x3f')](_0x67f9('0x3d'),auth['isAuthenticated'](),controller[_0x67f9('0x5c')]);router['put'](_0x67f9('0x12'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x5d')]);router['put'](_0x67f9('0x5e'),auth['isAuthenticated'](),controller[_0x67f9('0x5f')]);router[_0x67f9('0x60')](_0x67f9('0x19'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x61')]);router[_0x67f9('0x60')](_0x67f9('0x28'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x62')]);router['delete'](_0x67f9('0x12'),auth['isAuthenticated'](),controller[_0x67f9('0x63')]);router[_0x67f9('0x60')](_0x67f9('0x64'),auth['isAuthenticated'](),controller[_0x67f9('0x65')]);router['delete']('/:id/mail_interactions',auth['isAuthenticated'](),controller[_0x67f9('0x66')]);router[_0x67f9('0x60')](_0x67f9('0x52'),auth['isAuthenticated'](),controller[_0x67f9('0x67')]);router[_0x67f9('0x60')](_0x67f9('0x68'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x69')]);router[_0x67f9('0x60')](_0x67f9('0x6a'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x6b')]);router[_0x67f9('0x60')]('/:id/whatsapp_interactions',auth[_0x67f9('0xa')](),controller['removeWhatsappInteractions']);router[_0x67f9('0x60')]('/:id/fax_accounts',auth[_0x67f9('0xa')](),controller[_0x67f9('0x6c')]);router[_0x67f9('0x60')](_0x67f9('0x30'),auth[_0x67f9('0xa')](),controller['removeMailAccounts']);router['delete'](_0x67f9('0x32'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x6d')]);router['delete'](_0x67f9('0x5b'),auth[_0x67f9('0xa')](),controller['removeSmsAccounts']);router[_0x67f9('0x60')](_0x67f9('0x35'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x6e')]);router['delete'](_0x67f9('0x37'),auth[_0x67f9('0xa')](),controller[_0x67f9('0x6f')]);router[_0x67f9('0x60')]('/:id/square_projects',auth[_0x67f9('0xa')](),controller['removeSquareProjects']);router[_0x67f9('0x60')]('/:id/api_key',auth[_0x67f9('0xa')](),controller[_0x67f9('0x70')]);module[_0x67f9('0x71')]=router;
\ No newline at end of file
+var _0x1c68=['now','originalname','/:id/avatar','single','file','addAvatar','login','/:id/logout','logout','pause','/:id/unpause','unpause','/:id/chat_interactions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','/:id/sms_accounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','/:id/api_key','createApiKey','put','update','changePassword','delete','/:id/queues','removeTeams','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/presence','getPresence','/:id','show','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','getQueues','/:id/queues_rt','/:id/recordings','/:id/screen_recordings','getScreenRecordings','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','getLists','getAgents','/:id/prefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getApiKey','addContacts','post','create','bulkCreate','addQueues','join','root','server/files/images/','%s-%s'];(function(_0x4c8f01,_0x170514){var _0x30c1f7=function(_0x2aae01){while(--_0x2aae01){_0x4c8f01['push'](_0x4c8f01['shift']());}};_0x30c1f7(++_0x170514);}(_0x1c68,0x18f));var _0x81c6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1c68[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x81c6('0x0'));var util=require(_0x81c6('0x1'));var path=require(_0x81c6('0x2'));var timeout=require(_0x81c6('0x3'));var express=require(_0x81c6('0x4'));var router=express[_0x81c6('0x5')]();var fs_extra=require(_0x81c6('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x81c6('0x7'));var config=require(_0x81c6('0x8'));var controller=require(_0x81c6('0x9'));router[_0x81c6('0xa')]('/',auth[_0x81c6('0xb')](),controller[_0x81c6('0xc')]);router['get'](_0x81c6('0xd'),auth[_0x81c6('0xb')](),controller[_0x81c6('0xe')]);router[_0x81c6('0xa')](_0x81c6('0xf'),auth['isAuthenticated'](),controller[_0x81c6('0x10')]);router[_0x81c6('0xa')](_0x81c6('0x11'),auth['isAuthenticated'](),controller[_0x81c6('0x12')]);router[_0x81c6('0xa')](_0x81c6('0x13'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x14')]);router[_0x81c6('0xa')]('/:id/avatar',controller[_0x81c6('0x15')]);router[_0x81c6('0xa')](_0x81c6('0x16'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x17')]);router[_0x81c6('0xa')](_0x81c6('0x18'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x19')]);router[_0x81c6('0xa')]('/:id/queues',auth[_0x81c6('0xb')](),controller[_0x81c6('0x1a')]);router[_0x81c6('0xa')](_0x81c6('0x1b'),auth['isAuthenticated'](),controller['getVoiceQueuesRt']);router['get']('/:id/groups',auth[_0x81c6('0xb')](),controller['getGroups']);router['get'](_0x81c6('0x1c'),auth[_0x81c6('0xb')](),controller['getRecordings']);router['get'](_0x81c6('0x1d'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x1e')]);router[_0x81c6('0xa')]('/:id/chat/interactions',auth[_0x81c6('0xb')](),controller[_0x81c6('0x1f')]);router[_0x81c6('0xa')](_0x81c6('0x20'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x21')]);router[_0x81c6('0xa')](_0x81c6('0x22'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x23')]);router[_0x81c6('0xa')](_0x81c6('0x24'),auth[_0x81c6('0xb')](),controller['getSmsInteractions']);router[_0x81c6('0xa')](_0x81c6('0x25'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x26')]);router[_0x81c6('0xa')](_0x81c6('0x27'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x28')]);router[_0x81c6('0xa')](_0x81c6('0x29'),auth['isAuthenticated'](),controller[_0x81c6('0x2a')]);router[_0x81c6('0xa')]('/:id/lists',auth[_0x81c6('0xb')](),controller[_0x81c6('0x2b')]);router['get']('/:id/agents',auth[_0x81c6('0xb')](),controller[_0x81c6('0x2c')]);router[_0x81c6('0xa')](_0x81c6('0x2d'),auth[_0x81c6('0xb')](),controller['getVoicePrefixes']);router['get'](_0x81c6('0x2e'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x2f')]);router[_0x81c6('0xa')](_0x81c6('0x30'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x31')]);router['get'](_0x81c6('0x32'),auth['isAuthenticated'](),controller['getOpenchannelAccounts']);router['get']('/:id/sms_accounts',auth[_0x81c6('0xb')](),controller[_0x81c6('0x33')]);router[_0x81c6('0xa')](_0x81c6('0x34'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x35')]);router[_0x81c6('0xa')](_0x81c6('0x36'),auth['isAuthenticated'](),controller[_0x81c6('0x37')]);router[_0x81c6('0xa')](_0x81c6('0x38'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x39')]);router[_0x81c6('0xa')](_0x81c6('0x3a'),auth[_0x81c6('0xb')](),controller['getScheduledCalls']);router[_0x81c6('0xa')]('/:id/api_key',auth[_0x81c6('0xb')](),controller[_0x81c6('0x3b')]);router['post']('/:id/contacts',auth[_0x81c6('0xb')](),controller[_0x81c6('0x3c')]);router[_0x81c6('0x3d')]('/',auth['isAuthenticated'](),controller[_0x81c6('0x3e')]);router['post']('/create_many',auth[_0x81c6('0xb')](),controller[_0x81c6('0x3f')]);router[_0x81c6('0x3d')]('/:id/queues',auth['isAuthenticated'](),controller[_0x81c6('0x40')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x524844,_0x4b1a4d,_0x5beb71){_0x5beb71(null,path[_0x81c6('0x41')](config[_0x81c6('0x42')],_0x81c6('0x43')));},'filename':function(_0x117829,_0x363af0,_0x3ed017){_0x3ed017(null,util['format'](_0x81c6('0x44'),Date[_0x81c6('0x45')](),_0x363af0[_0x81c6('0x46')]));}})});router[_0x81c6('0x3d')](_0x81c6('0x47'),upload[_0x81c6('0x48')](_0x81c6('0x49')),controller[_0x81c6('0x4a')]);router[_0x81c6('0x3d')]('/:id/login',auth[_0x81c6('0xb')](),controller[_0x81c6('0x4b')]);router[_0x81c6('0x3d')](_0x81c6('0x4c'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x4d')]);router[_0x81c6('0x3d')]('/:id/pause',auth[_0x81c6('0xb')](),controller[_0x81c6('0x4e')]);router[_0x81c6('0x3d')](_0x81c6('0x4f'),auth['isAuthenticated'](),controller[_0x81c6('0x50')]);router[_0x81c6('0x3d')](_0x81c6('0x29'),auth['isAuthenticated'](),controller['addTeams']);router[_0x81c6('0x3d')](_0x81c6('0x51'),auth[_0x81c6('0xb')](),controller['addChatInteractions']);router[_0x81c6('0x3d')]('/:id/mail_interactions',auth[_0x81c6('0xb')](),controller['addMailInteractions']);router['post'](_0x81c6('0x52'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x53')]);router['post'](_0x81c6('0x54'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x55')]);router[_0x81c6('0x3d')](_0x81c6('0x56'),auth['isAuthenticated'](),controller['addOpenchannelInteractions']);router[_0x81c6('0x3d')](_0x81c6('0x57'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x58')]);router[_0x81c6('0x3d')](_0x81c6('0x2e'),auth['isAuthenticated'](),controller[_0x81c6('0x59')]);router['post'](_0x81c6('0x30'),auth['isAuthenticated'](),controller[_0x81c6('0x5a')]);router[_0x81c6('0x3d')]('/:id/openchannel_accounts',auth[_0x81c6('0xb')](),controller['addOpenchannelAccounts']);router['post'](_0x81c6('0x5b'),auth['isAuthenticated'](),controller[_0x81c6('0x5c')]);router[_0x81c6('0x3d')]('/:id/chat_websites',auth[_0x81c6('0xb')](),controller[_0x81c6('0x5d')]);router['post'](_0x81c6('0x36'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x5e')]);router['post']('/:id/square_projects',auth['isAuthenticated'](),controller[_0x81c6('0x5f')]);router['post'](_0x81c6('0x60'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x61')]);router[_0x81c6('0x62')](_0x81c6('0x13'),auth['isAuthenticated'](),controller[_0x81c6('0x63')]);router[_0x81c6('0x62')]('/:id/password',auth['isAuthenticated'](),controller[_0x81c6('0x64')]);router[_0x81c6('0x65')](_0x81c6('0x66'),auth['isAuthenticated'](),controller['removeQueues']);router[_0x81c6('0x65')](_0x81c6('0x29'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x67')]);router[_0x81c6('0x65')]('/:id',auth[_0x81c6('0xb')](),controller['destroy']);router[_0x81c6('0x65')](_0x81c6('0x51'),auth['isAuthenticated'](),controller[_0x81c6('0x68')]);router['delete'](_0x81c6('0x69'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x6a')]);router[_0x81c6('0x65')](_0x81c6('0x52'),auth[_0x81c6('0xb')](),controller['removeFaxInteractions']);router[_0x81c6('0x65')]('/:id/sms_interactions',auth[_0x81c6('0xb')](),controller[_0x81c6('0x6b')]);router[_0x81c6('0x65')]('/:id/openchannel_interactions',auth['isAuthenticated'](),controller[_0x81c6('0x6c')]);router[_0x81c6('0x65')]('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller[_0x81c6('0x6d')]);router['delete'](_0x81c6('0x2e'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x6e')]);router['delete'](_0x81c6('0x30'),auth[_0x81c6('0xb')](),controller['removeMailAccounts']);router[_0x81c6('0x65')]('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0x81c6('0x6f')]);router['delete'](_0x81c6('0x5b'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x70')]);router[_0x81c6('0x65')](_0x81c6('0x34'),auth[_0x81c6('0xb')](),controller[_0x81c6('0x71')]);router[_0x81c6('0x65')]('/:id/whatsapp_accounts',auth[_0x81c6('0xb')](),controller[_0x81c6('0x72')]);router[_0x81c6('0x65')](_0x81c6('0x38'),auth['isAuthenticated'](),controller[_0x81c6('0x73')]);router['delete'](_0x81c6('0x60'),auth['isAuthenticated'](),controller[_0x81c6('0x74')]);module['exports']=router;
\ No newline at end of file
index c3d1180..273b0c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc051=['setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','admin','user','agent','telephone','local','INTEGER','accountcode','callerid','DATE','BOOLEAN','dynamic','ENUM','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','join','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','always','accept','refuse','uac','uas','fingerprint','certificate','active','passive','update,nonat','showWebBar','isArray','wss','encryption','avpf','icesupport','dtlsenable','dtlscertfile','dtlsprivatekey','rtcp_mux','force_avp','dtlssetup','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','TEXT','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','false','screenrecording','blocked','loginAttempts','blockedAt','sequelize','moment','exports','STRING','name'];(function(_0xad99cb,_0x56d27f){var _0x5ebb7a=function(_0x146b04){while(--_0x146b04){_0xad99cb['push'](_0xad99cb['shift']());}};_0x5ebb7a(++_0x56d27f);}(_0xc051,0xb5));var _0x1c05=function(_0x10fcf0,_0x2aa3a2){_0x10fcf0=_0x10fcf0-0x0;var _0x562433=_0xc051[_0x10fcf0];return _0x562433;};'use strict';var Sequelize=require(_0x1c05('0x0'));var moment=require(_0x1c05('0x1'));var util=require('util');var _=require('lodash');module[_0x1c05('0x2')]={'name':{'type':Sequelize[_0x1c05('0x3')],'allowNull':![],'unique':_0x1c05('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0xd5f638){this['setDataValue'](_0x1c05('0x4'),_0xd5f638);this[_0x1c05('0x5')](_0x1c05('0x6'),_0xd5f638);},'comment':_0x1c05('0x7')},'fullname':{'type':Sequelize[_0x1c05('0x3')],'allowNull':![],'set':function(_0x28a978){this[_0x1c05('0x5')](_0x1c05('0x8'),_0x28a978);this[_0x1c05('0x5')]('callerid',util[_0x1c05('0x9')](_0x1c05('0xa'),_0x28a978,this[_0x1c05('0xb')](_0x1c05('0xc'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x1c05('0x3')],'allowNull':![],'unique':_0x1c05('0xd'),'validate':{'isEmail':!![]},'set':function(_0x4241a4){if(_0x4241a4){this[_0x1c05('0x5')]('email',_0x4241a4[_0x1c05('0xe')]());}}},'role':{'type':Sequelize['ENUM'](_0x1c05('0xf'),_0x1c05('0x10'),_0x1c05('0x11'),_0x1c05('0x12')),'allowNull':![]},'password':{'type':Sequelize[_0x1c05('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x1c05('0x3')],'defaultValue':_0x1c05('0x13')},'internal':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':![],'unique':_0x1c05('0xc'),'set':function(_0x2ba5a2){this[_0x1c05('0x5')](_0x1c05('0xc'),_0x2ba5a2);this['setDataValue'](_0x1c05('0x15'),_0x2ba5a2);this[_0x1c05('0x5')](_0x1c05('0x16'),util['format'](_0x1c05('0xa'),this['getDataValue'](_0x1c05('0x8')),_0x2ba5a2));}},'salt':{'type':Sequelize[_0x1c05('0x3')]},'phone':{'type':Sequelize[_0x1c05('0x3')]},'mobile':{'type':Sequelize[_0x1c05('0x3')]},'address':{'type':Sequelize[_0x1c05('0x3')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x1c05('0x3')]},'city':{'type':Sequelize[_0x1c05('0x3')]},'country':{'type':Sequelize[_0x1c05('0x3')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x1c05('0x17')]},'voicePause':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x1c05('0x3')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x1c05('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x1c05('0x14')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x1c05('0x14')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x1c05('0x14')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x1c05('0x14')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x1c05('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![],'defaultValue':_0x1c05('0x19')},'ipaddr':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0x1c05('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x1b'),'user','peer'),'allowNull':!![],'defaultValue':_0x1c05('0x1b')},'context':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![],'defaultValue':_0x1c05('0x1c')},'callingpres':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x1d'),_0x1c05('0x1e'),_0x1c05('0x1f'),_0x1c05('0x20'),_0x1c05('0x21'),_0x1c05('0x22'),_0x1c05('0x23'),_0x1c05('0x24')),'allowNull':!![]},'deny':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1c05('0x25'),'set':function(_0x19323d){this[_0x1c05('0x5')](_0x1c05('0x26'),_0x19323d?_0x19323d['join'](','):null);},'get':function(){return this[_0x1c05('0xb')]('transport')?this[_0x1c05('0xb')]('transport')[_0x1c05('0x27')](','):null;},'comment':_0x1c05('0x28')},'dtmfmode':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x29'),_0x1c05('0x2a'),_0x1c05('0x2b'),_0x1c05('0x2c'),_0x1c05('0x2d')),'allowNull':!![],'defaultValue':_0x1c05('0x29')},'directmedia':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no',_0x1c05('0x2f'),_0x1c05('0x30'),_0x1c05('0x31')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1c05('0x32'),'set':function(_0x1da52a){this['setDataValue']('nat',_0x1da52a?_0x1da52a[_0x1c05('0x33')](','):null);},'get':function(){return this[_0x1c05('0xb')](_0x1c05('0x34'))?this['getDataValue'](_0x1c05('0x34'))[_0x1c05('0x27')](','):null;},'comment':_0x1c05('0x35')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x1c05('0x3')]},'pickupgroup':{'type':Sequelize[_0x1c05('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x1c05('0x3')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0x1c05('0x3')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x583062){this[_0x1c05('0x5')](_0x1c05('0x36'),_0x583062?_0x583062[_0x1c05('0x33')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x1c05('0xb')](_0x1c05('0x36'))?this[_0x1c05('0xb')](_0x1c05('0x36'))[_0x1c05('0x27')](';'):null;},'comment':_0x1c05('0x37')},'autoframing':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize['STRING'],'allowNull':!![],'set':function(_0x3531ec){this[_0x1c05('0x5')]('insecure',_0x3531ec?_0x3531ec[_0x1c05('0x33')](','):null);},'get':function(){return this[_0x1c05('0xb')]('insecure')?this[_0x1c05('0xb')](_0x1c05('0x38'))[_0x1c05('0x27')](','):null;},'comment':_0x1c05('0x39')},'trustrpid':{'type':Sequelize['ENUM'](_0x1c05('0x2e'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no',_0x1c05('0x3a')),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x1c05('0x2e'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0x1c05('0x2e'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![],'defaultValue':_0x1c05('0x2e')},'busylevel':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x1c05('0x2e'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize['STRING'],'allowNull':!![]},'template':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no',_0x1c05('0x3b')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x3c'),_0x1c05('0x3d'),'originate'),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x3e'),_0x1c05('0x3f')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize['STRING'],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![],'defaultValue':_0x1c05('0x2e')},'keepalive':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x1c05('0x1a')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x1c05('0x1a')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x1c05('0x2e'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no',_0x1c05('0x40'),_0x1c05('0x41')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM'](_0x1c05('0x42'),_0x1c05('0x43'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x1c05('0x1a')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x1c05('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x1c05('0x1a')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x1c05('0x1a')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x1c05('0x1a')](_0x1c05('0x2e'),'no',_0x1c05('0x2f'),'update',_0x1c05('0x44')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x1c05('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x1c05('0x17')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0x1c05('0x14')],'defaultValue':0x0,'set':function(_0x3e9064){this[_0x1c05('0x5')](_0x1c05('0x45'),_0x3e9064);var _0x2a3fbf=this['get']({'plain':!![]});switch(_0x3e9064){case 0x0:case 0x1:var _0x3bbfa0=_0x2a3fbf[_0x1c05('0x26')]?_[_0x1c05('0x46')](_0x2a3fbf['transport'])?_0x2a3fbf['transport'][_0x1c05('0x33')]():_0x2a3fbf[_0x1c05('0x26')]:'udp';if(_0x3bbfa0===_0x1c05('0x47')){_0x3bbfa0='udp';}this[_0x1c05('0x5')](_0x1c05('0x26'),_0x3bbfa0);this[_0x1c05('0x5')](_0x1c05('0x48'),'no');this[_0x1c05('0x5')](_0x1c05('0x49'),null);this['setDataValue']('force_avp',null);this[_0x1c05('0x5')](_0x1c05('0x4a'),null);this['setDataValue'](_0x1c05('0x4b'),null);this['setDataValue']('dtlsverify',null);this[_0x1c05('0x5')]('dtlssetup',null);this[_0x1c05('0x5')](_0x1c05('0x4c'),null);this['setDataValue'](_0x1c05('0x4d'),null);this[_0x1c05('0x5')](_0x1c05('0x4e'),'no');break;case 0x2:this[_0x1c05('0x5')]('transport','wss');this['setDataValue'](_0x1c05('0x48'),'yes');this[_0x1c05('0x5')](_0x1c05('0x49'),_0x1c05('0x2e'));this[_0x1c05('0x5')](_0x1c05('0x4f'),_0x1c05('0x2e'));this[_0x1c05('0x5')]('icesupport',_0x1c05('0x2e'));this['setDataValue'](_0x1c05('0x4b'),_0x1c05('0x2e'));this[_0x1c05('0x5')]('dtlsverify','no');this[_0x1c05('0x5')](_0x1c05('0x50'),'actpass');this[_0x1c05('0x5')](_0x1c05('0x4c'),_0x2a3fbf[_0x1c05('0x4c')]||_0x1c05('0x51'));this['setDataValue'](_0x1c05('0x4d'),_0x2a3fbf['dtlsprivatekey']||_0x1c05('0x52'));this['setDataValue'](_0x1c05('0x4e'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0x1c05('0x53')],'set':function(_0x52c15d){this['setDataValue'](_0x1c05('0x54'),_0x52c15d?_0x52c15d['join'](','):[]);},'get':function(){return this[_0x1c05('0xb')](_0x1c05('0x54'))?_[_0x1c05('0x55')](this['getDataValue'](_0x1c05('0x54'))['split'](','),function(_0x599efc){return parseInt(_0x599efc,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x1c05('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x1c05('0x2e'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x1c05('0x56')],'get':function(){return this['getDataValue'](_0x1c05('0x57'))?this[_0x1c05('0xb')](_0x1c05('0x57')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'interface':{'type':Sequelize[_0x1c05('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x1c05('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![],'set':function(_0x3be429){if(typeof _0x3be429==='string'){var _0x4e8185=_0x3be429==='1'?!![]:_0x3be429==='0'?![]:_0x3be429==='true'?!![]:_0x3be429===_0x1c05('0x58')?![]:![];this[_0x1c05('0x5')](_0x1c05('0x59'),_0x4e8185);}else{this['setDataValue'](_0x1c05('0x59'),_0x3be429);}}},'blocked':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![],'set':function(_0x485397){this[_0x1c05('0x5')](_0x1c05('0x5a'),_0x485397);if(_0x485397===!![]){this['setDataValue']('blockedAt',moment());this['setDataValue'](_0x1c05('0x5b'),0x0);}else{this[_0x1c05('0x5')](_0x1c05('0x5c'),null);}}},'blockedAt':{'type':Sequelize[_0x1c05('0x17')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x1c05('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x1c05('0x14')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x1c05('0x18')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xabce=['util','lodash','exports','setDataValue','name','The\x20name\x20of\x20the\x20user','fullname','callerid','\x22%s\x22\x20<%s>','getDataValue','internal','STRING','email','toLowerCase','ENUM','admin','user','agent','telephone','local','INTEGER','accountcode','format','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','rfc2833','nonat','update','outgoing','yes','force_rport,comedia','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','always','accept','refuse','originate','uac','uas','fingerprint','certificate','passive','actpass','TEXT','showWebBar','get','isArray','udp','wss','encryption','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','avpf','/etc/pki/tls/private/motion.key','join','permissions','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blockedAt','loginAttempts','sequelize','moment'];(function(_0x5db65f,_0xf89cc8){var _0x34fb4b=function(_0x7c641){while(--_0x7c641){_0x5db65f['push'](_0x5db65f['shift']());}};_0x34fb4b(++_0xf89cc8);}(_0xabce,0x103));var _0xeabc=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xabce[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require(_0xeabc('0x0'));var moment=require(_0xeabc('0x1'));var util=require(_0xeabc('0x2'));var _=require(_0xeabc('0x3'));module[_0xeabc('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2e01eb){this[_0xeabc('0x5')](_0xeabc('0x6'),_0x2e01eb);this['setDataValue']('defaultuser',_0x2e01eb);},'comment':_0xeabc('0x7')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x229ba4){this['setDataValue'](_0xeabc('0x8'),_0x229ba4);this[_0xeabc('0x5')](_0xeabc('0x9'),util['format'](_0xeabc('0xa'),_0x229ba4,this[_0xeabc('0xb')](_0xeabc('0xc'))));}},'alias':{'type':Sequelize[_0xeabc('0xd')]},'email':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'unique':_0xeabc('0xe'),'validate':{'isEmail':!![]},'set':function(_0x111aaf){if(_0x111aaf){this[_0xeabc('0x5')](_0xeabc('0xe'),_0x111aaf[_0xeabc('0xf')]());}}},'role':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x11'),_0xeabc('0x12'),_0xeabc('0x13'),_0xeabc('0x14')),'allowNull':![]},'password':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0xeabc('0x15')},'internal':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':![],'unique':_0xeabc('0xc'),'set':function(_0x55f0de){this['setDataValue'](_0xeabc('0xc'),_0x55f0de);this[_0xeabc('0x5')](_0xeabc('0x17'),_0x55f0de);this['setDataValue'](_0xeabc('0x9'),util[_0xeabc('0x18')]('\x22%s\x22\x20<%s>',this['getDataValue'](_0xeabc('0x8')),_0x55f0de));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xeabc('0xd')]},'mobile':{'type':Sequelize[_0xeabc('0xd')]},'address':{'type':Sequelize[_0xeabc('0xd')]},'zipcode':{'type':Sequelize[_0xeabc('0xd')]},'userpic':{'type':Sequelize[_0xeabc('0xd')]},'city':{'type':Sequelize[_0xeabc('0xd')]},'country':{'type':Sequelize[_0xeabc('0xd')]},'online':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':_0xeabc('0x1a')},'lastPauseAt':{'type':Sequelize[_0xeabc('0x1b')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xeabc('0x16')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'description':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'host':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':_0xeabc('0x1c')},'ipaddr':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'port':{'type':Sequelize[_0xeabc('0x16')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x1d'),'user',_0xeabc('0x1e')),'allowNull':!![],'defaultValue':_0xeabc('0x1d')},'context':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':_0xeabc('0x1f')},'callingpres':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x20'),_0xeabc('0x21'),_0xeabc('0x22'),_0xeabc('0x23'),'PROHIB_NOT_SCREENED',_0xeabc('0x24'),'PROHIB_FAILED_SCREEN',_0xeabc('0x25')),'allowNull':!![]},'deny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'permit':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'secret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'transport':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':'udp','set':function(_0x78510a){this[_0xeabc('0x5')](_0xeabc('0x26'),_0x78510a?_0x78510a['join'](','):null);},'get':function(){return this[_0xeabc('0xb')](_0xeabc('0x26'))?this[_0xeabc('0xb')]('transport')[_0xeabc('0x27')](','):null;},'comment':_0xeabc('0x28')},'dtmfmode':{'type':Sequelize[_0xeabc('0x10')]('rfc2833',_0xeabc('0x29'),_0xeabc('0x2a'),'inband','auto'),'allowNull':!![],'defaultValue':_0xeabc('0x2b')},'directmedia':{'type':Sequelize[_0xeabc('0x10')]('yes','no',_0xeabc('0x2c'),_0xeabc('0x2d'),_0xeabc('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xeabc('0x30'),'set':function(_0x2bda29){this[_0xeabc('0x5')]('nat',_0x2bda29?_0x2bda29['join'](','):null);},'get':function(){return this[_0xeabc('0xb')]('nat')?this[_0xeabc('0xb')]('nat')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xeabc('0xd')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xeabc('0xd')]},'language':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0xbd7f03){this[_0xeabc('0x5')](_0xeabc('0x31'),_0xbd7f03?_0xbd7f03['join'](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0xeabc('0x31'))?this[_0xeabc('0xb')](_0xeabc('0x31'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize['STRING'],'allowNull':!![],'set':function(_0xc6af4d){this['setDataValue'](_0xeabc('0x32'),_0xc6af4d?_0xc6af4d['join'](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0xeabc('0xb')](_0xeabc('0x32'))[_0xeabc('0x27')](','):null;},'comment':_0xeabc('0x33')},'trustrpid':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x34')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':_0xeabc('0x2f')},'busylevel':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'template':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x35')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x36'),_0xeabc('0x37'),_0xeabc('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x39'),_0xeabc('0x3a')),'allowNull':!![],'defaultValue':_0xeabc('0x3a')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![],'defaultValue':_0xeabc('0x2f')},'keepalive':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x3b'),_0xeabc('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM']('active',_0xeabc('0x3d'),_0xeabc('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no',_0xeabc('0x2c'),_0xeabc('0x2d'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0xeabc('0x1b')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xeabc('0x3f')]},'showWebBar':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0,'set':function(_0x4f5451){this[_0xeabc('0x5')](_0xeabc('0x40'),_0x4f5451);var _0x520f4c=this[_0xeabc('0x41')]({'plain':!![]});switch(_0x4f5451){case 0x0:case 0x1:var _0x800880=_0x520f4c[_0xeabc('0x26')]?_[_0xeabc('0x42')](_0x520f4c[_0xeabc('0x26')])?_0x520f4c[_0xeabc('0x26')]['join']():_0x520f4c[_0xeabc('0x26')]:_0xeabc('0x43');if(_0x800880===_0xeabc('0x44')){_0x800880=_0xeabc('0x43');}this[_0xeabc('0x5')](_0xeabc('0x26'),_0x800880);this[_0xeabc('0x5')](_0xeabc('0x45'),'no');this[_0xeabc('0x5')]('avpf',null);this[_0xeabc('0x5')]('force_avp',null);this[_0xeabc('0x5')](_0xeabc('0x46'),null);this[_0xeabc('0x5')](_0xeabc('0x47'),null);this[_0xeabc('0x5')](_0xeabc('0x48'),null);this[_0xeabc('0x5')](_0xeabc('0x49'),null);this[_0xeabc('0x5')](_0xeabc('0x4a'),null);this['setDataValue'](_0xeabc('0x4b'),null);this[_0xeabc('0x5')](_0xeabc('0x4c'),'no');break;case 0x2:this[_0xeabc('0x5')]('transport',_0xeabc('0x44'));this['setDataValue']('encryption',_0xeabc('0x2f'));this[_0xeabc('0x5')](_0xeabc('0x4d'),_0xeabc('0x2f'));this['setDataValue']('force_avp',_0xeabc('0x2f'));this['setDataValue']('icesupport',_0xeabc('0x2f'));this['setDataValue']('dtlsenable',_0xeabc('0x2f'));this[_0xeabc('0x5')]('dtlsverify','no');this['setDataValue'](_0xeabc('0x49'),'actpass');this[_0xeabc('0x5')](_0xeabc('0x4a'),_0x520f4c['dtlscertfile']||'/etc/pki/tls/certs/motion.crt');this[_0xeabc('0x5')](_0xeabc('0x4b'),_0x520f4c[_0xeabc('0x4b')]||_0xeabc('0x4e'));this[_0xeabc('0x5')]('rtcp_mux','yes');break;default:}}},'permissions':{'type':Sequelize[_0xeabc('0x3f')],'set':function(_0x5c760d){this[_0xeabc('0x5')]('permissions',_0x5c760d?_0x5c760d[_0xeabc('0x4f')](','):[]);},'get':function(){return this['getDataValue'](_0xeabc('0x50'))?_['map'](this[_0xeabc('0xb')](_0xeabc('0x50'))[_0xeabc('0x27')](','),function(_0x36cc41){return parseInt(_0x36cc41,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0xeabc('0xd')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xeabc('0xd')]},'phoneBarEnableJaws':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xeabc('0xb')](_0xeabc('0x51'))?this[_0xeabc('0xb')](_0xeabc('0x51')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![],'set':function(_0x49679d){if(typeof _0x49679d===_0xeabc('0x52')){var _0x403b18=_0x49679d==='1'?!![]:_0x49679d==='0'?![]:_0x49679d==='true'?!![]:_0x49679d===_0xeabc('0x53')?![]:![];this[_0xeabc('0x5')](_0xeabc('0x54'),_0x403b18);}else{this[_0xeabc('0x5')](_0xeabc('0x54'),_0x49679d);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x3df657){this['setDataValue']('blocked',_0x3df657);if(_0x3df657===!![]){this['setDataValue'](_0xeabc('0x55'),moment());this[_0xeabc('0x5')](_0xeabc('0x56'),0x0);}else{this[_0xeabc('0x5')](_0xeabc('0x55'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xeabc('0x16')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 3161530..7354d53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['set','Content-Range','update','destroy','get','role','admin','Users','user','Agents','agent','Telephones','value','includes','find','UserProfileResource','stack','name','send','index','rawAttributes','fieldName','type','key','filter','getOptions','User','query','includeAll','include','attributes','push','findAll','rows','openTabs','true','length','chat','dataValues','fax','mail','openchannel','whatsapp','all','show','params','keys','password','filters','intersection','model','fields','merge','options','sms','body','describe','addContacts','omit','internal','Setting','findById','securePassword','validatePasswordPattern','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','SELECT','from','mailbox','permissions','101','113','110','105','106','107','108','100','111','114','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','userProfileId','VoiceMail','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','telephone','isEmpty','map','oldPassword','newPassword','Sequelize','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','online','loginInPause','interface','Unknown\x20channel','add','capitalize','toLowerCase','Queues','penalty','ids','QueueId','emit','Queue:save','voice','VoiceQueue','format','SIP/%s','UserVoiceQueueRt','upsert','isValidChannel','remove','isArray','Queue:remove','addAvatar','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','order','sort','where','pick','getContacts','hasOwnProperty','List','Tag','Tags','tag','nolimit','getQueues','Queue','Unknown\x20role','getVoiceQueuesRt','getGroups','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','OpenchannelInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','device','PAUSE','concat','LOGININPAUSE','isMiddleware','resolve','logout','pause','updateAttributes','DEFAULT\x20PAUSE','unpause','voicePause','mailPause','chatPause','faxPause','whatsapppause','lastPauseAt','manual','%s%s','Pause','QueuePause','getTeams','Team','addTeams','setDataValue','Voice','getMailQueues','Mail','getSmsQueues','getWhatsappQueues','getFaxQueues','getOpenchannelQueues','Openchannel','flatten','transaction','getDataValue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','getChatQueues','Chat','Sms','Whatsapp','Fax','removeAgent','getLists','CmList','values','You\x20can\x27t\x20delete\x20yourself','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','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gt','$lt','$lte','$ne','$not','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','firstName','lastName','CmContact','Contact','getApiKey','retrieveApiKey','token','createApiKey','generateApiKey','iat','nonce','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','inbound','getAgents','toString','asc','desc','substring','uniqBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unavailable','ringing','voiceStatus','slice','charAt','toUpperCase','select','field','ui.','InteractionId','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','bluebird','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','socket.io-emitter','redis','register','defaults','client','http','then','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','count'];(function(_0x48b3cc,_0xf4b95d){var _0x3ac638=function(_0x4f5fea){while(--_0x4f5fea){_0x48b3cc['push'](_0x48b3cc['shift']());}};_0x3ac638(++_0xf4b95d);}(_0x5fab,0x177));var _0xb5fa=function(_0x422fa5,_0x4fc338){_0x422fa5=_0x422fa5-0x0;var _0x132d59=_0x5fab[_0x422fa5];return _0x132d59;};'use strict';var moment=require(_0xb5fa('0x0'));var BPromise=require(_0xb5fa('0x1'));var util=require('util');var path=require(_0xb5fa('0x2'));var fs=require('fs');var _=require(_0xb5fa('0x3'));var squel=require(_0xb5fa('0x4'));var jayson=require(_0xb5fa('0x5'));var Redis=require(_0xb5fa('0x6'));var authService=require(_0xb5fa('0x7'));var qs=require(_0xb5fa('0x8'));var logger=require(_0xb5fa('0x9'))(_0xb5fa('0xa'));var utils=require(_0xb5fa('0xb'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb5fa('0xc'))['db'];var socket=require(_0xb5fa('0xd'))(new Redis(config[_0xb5fa('0xe')]));require('./user.socket')[_0xb5fa('0xf')](socket);config[_0xb5fa('0xe')]=_[_0xb5fa('0x10')](config['redis'],{'host':'localhost','port':0x18eb});var client=jayson[_0xb5fa('0x11')][_0xb5fa('0x12')]({'port':0x232a});var values;function respondWithRpcPromise(_0xe46b26,_0x44e6c8,_0x35ad13,_0xadef41){return new BPromise(function(_0x65c6b6,_0x46da66){var _0x309740=_0xadef41||client;return _0x309740['request'](_0xe46b26,_0x35ad13)[_0xb5fa('0x13')](function(_0x3dad4d){logger['info'](_0xb5fa('0x14'),_0x44e6c8,'request\x20sent');logger[_0xb5fa('0x15')](_0xb5fa('0x16'),_0x44e6c8,_0xb5fa('0x17'),JSON[_0xb5fa('0x18')](_0x3dad4d));if(_0x3dad4d[_0xb5fa('0x19')]){if(_0x3dad4d['error']['code']===0x1f4){logger[_0xb5fa('0x19')](_0xb5fa('0x14'),_0x44e6c8,_0x3dad4d[_0xb5fa('0x19')][_0xb5fa('0x1a')]);return _0x46da66(_0x3dad4d['error']['message']);}logger[_0xb5fa('0x19')](_0xb5fa('0x14'),_0x44e6c8,_0x3dad4d[_0xb5fa('0x19')][_0xb5fa('0x1a')]);return _0x65c6b6(_0x3dad4d[_0xb5fa('0x19')][_0xb5fa('0x1a')]);}else{logger[_0xb5fa('0x1b')](_0xb5fa('0x14'),_0x44e6c8,_0xb5fa('0x17'));_0x65c6b6(_0x3dad4d[_0xb5fa('0x1c')][_0xb5fa('0x1a')]);}})[_0xb5fa('0x1d')](function(_0x5cd822){logger[_0xb5fa('0x19')]('User,\x20%s,\x20%s',_0x44e6c8,_0x5cd822);_0x46da66(_0x5cd822);});});}function respondWithStatusCode(_0x37ae06,_0x4a6c04){_0x4a6c04=_0x4a6c04||0xcc;return function(_0xd0fe2b){if(_0xd0fe2b){return _0x37ae06[_0xb5fa('0x1e')](_0x4a6c04);}return _0x37ae06['status'](_0x4a6c04)[_0xb5fa('0x1f')]();};}function respondWithResult(_0x3a2ab9,_0x283a56){_0x283a56=_0x283a56||0xc8;return function(_0x47f71a){if(_0x47f71a){return _0x3a2ab9[_0xb5fa('0x20')](_0x283a56)[_0xb5fa('0x21')](_0x47f71a);}};}function respondWithFilteredResult(_0x444237,_0x542348){return function(_0x224ec8){if(_0x224ec8){var _0x5d55f7=typeof _0x542348[_0xb5fa('0x22')]===_0xb5fa('0x23')&&typeof _0x542348[_0xb5fa('0x24')]===_0xb5fa('0x23');var _0x2dbd22=_0x224ec8[_0xb5fa('0x25')];var _0x6a455c=_0x5d55f7?0x0:_0x542348[_0xb5fa('0x22')];var _0x568870=_0x5d55f7?_0x224ec8['count']:_0x542348['offset']+_0x542348['limit'];var _0x28a350;if(_0x568870>=_0x2dbd22){_0x568870=_0x2dbd22;_0x28a350=0xc8;}else{_0x28a350=0xce;}_0x444237[_0xb5fa('0x20')](_0x28a350);return _0x444237[_0xb5fa('0x26')](_0xb5fa('0x27'),_0x6a455c+'-'+_0x568870+'/'+_0x2dbd22)[_0xb5fa('0x21')](_0x224ec8);}return null;};}function saveUpdates(_0x3506a4){return function(_0x358549){if(_0x358549){return _0x358549[_0xb5fa('0x28')](_0x3506a4)[_0xb5fa('0x13')](function(_0x2a5690){return _0x2a5690;});}return null;};}function removeEntity(_0x142bfa){return function(_0x259d21){if(_0x259d21){return _0x259d21[_0xb5fa('0x29')]()[_0xb5fa('0x13')](function(){var _0xed02e=_0x259d21[_0xb5fa('0x2a')]({'plain':!![]});if(_0xed02e[_0xb5fa('0x2b')]===_0xb5fa('0x2c'))return;var _0x21fc7e=[{'name':_0xb5fa('0x2d'),'value':_0xb5fa('0x2e'),'ignore':!![]},{'name':_0xb5fa('0x2f'),'value':_0xb5fa('0x30'),'ignore':![]},{'name':_0xb5fa('0x31'),'value':'telephone','ignore':![]}];var _0x2cc6cb=_(_0x21fc7e)['filter']('ignore')['map'](_0xb5fa('0x32'))['value']();if(_[_0xb5fa('0x33')](_0x2cc6cb,_0xed02e['role'])){return;}var _0x5518b1=_[_0xb5fa('0x34')](_0x21fc7e,[_0xb5fa('0x32'),_0xed02e['role']])['name'];return db[_0xb5fa('0x35')][_0xb5fa('0x29')]({'where':{'type':_0x5518b1,'resourceId':_0xed02e['id']}})[_0xb5fa('0x13')](function(){return _0x259d21;});})['then'](function(){_0x142bfa[_0xb5fa('0x20')](0xcc)[_0xb5fa('0x1f')]();});}};}function handleEntityNotFound(_0x4a7137){return function(_0x18398f){if(!_0x18398f){_0x4a7137[_0xb5fa('0x1e')](0x194);}return _0x18398f;};}function handleError(_0x204d6b,_0x5580f0){_0x5580f0=_0x5580f0||0x1f4;return function(_0x4652cd){logger[_0xb5fa('0x19')](_0x4652cd[_0xb5fa('0x36')]);if(_0x4652cd['name']){delete _0x4652cd[_0xb5fa('0x37')];}_0x204d6b[_0xb5fa('0x20')](_0x5580f0)[_0xb5fa('0x38')](_0x4652cd);};}exports[_0xb5fa('0x39')]=function(_0x5e7770,_0x4bba91){var _0x4901ad={},_0x49e786={'count':0x0,'rows':[]};var _0x5989e1=_(db['User'][_0xb5fa('0x3a')])['map'](function(_0x43de71){return{'name':_0x43de71[_0xb5fa('0x3b')],'type':_0x43de71[_0xb5fa('0x3c')][_0xb5fa('0x3d')]};})[_0xb5fa('0x3e')](function(_0x269d21){return!_['includes'](['password','salt'],_0x269d21[_0xb5fa('0x37')]);})['value']();_0x4901ad=qs[_0xb5fa('0x3f')](_0x5989e1,_0x5e7770);var _0x5addd5={'where':_0x4901ad['where']};return db[_0xb5fa('0x40')][_0xb5fa('0x25')](_0x5addd5)[_0xb5fa('0x13')](function(_0x36c345){_0x49e786[_0xb5fa('0x25')]=_0x36c345;if(_0x5e7770[_0xb5fa('0x41')][_0xb5fa('0x42')]){_0x4901ad[_0xb5fa('0x43')]=[{'all':!![]}];}if(!_[_0xb5fa('0x33')](_0x4901ad[_0xb5fa('0x44')],'id')){_0x4901ad['attributes'][_0xb5fa('0x45')]('id');}return db['User'][_0xb5fa('0x46')](_0x4901ad);})[_0xb5fa('0x13')](function(_0x2c7c5f){_0x49e786[_0xb5fa('0x47')]=_0x2c7c5f;if(_0x5e7770[_0xb5fa('0x41')][_0xb5fa('0x48')]===_0xb5fa('0x49')){var _0x10c381=[];for(var _0x4da448=0x0;_0x4da448<_0x49e786[_0xb5fa('0x47')][_0xb5fa('0x4a')];_0x4da448++){_0x10c381['push'](get_open_tabs(_0xb5fa('0x4b'),_0x49e786['rows'][_0x4da448][_0xb5fa('0x4c')]));_0x10c381[_0xb5fa('0x45')](get_open_tabs('sms',_0x49e786['rows'][_0x4da448][_0xb5fa('0x4c')]));_0x10c381[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x4d'),_0x49e786[_0xb5fa('0x47')][_0x4da448][_0xb5fa('0x4c')]));_0x10c381[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x4e'),_0x49e786[_0xb5fa('0x47')][_0x4da448]['dataValues']));_0x10c381[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x4f'),_0x49e786['rows'][_0x4da448][_0xb5fa('0x4c')]));_0x10c381[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x50'),_0x49e786[_0xb5fa('0x47')][_0x4da448][_0xb5fa('0x4c')]));}return BPromise[_0xb5fa('0x51')](_0x10c381)[_0xb5fa('0x13')](function(_0x33eb2c){return _0x49e786;});}else{return _0x49e786;}})[_0xb5fa('0x13')](respondWithFilteredResult(_0x4bba91,_0x4901ad))[_0xb5fa('0x1d')](handleError(_0x4bba91,null));};exports[_0xb5fa('0x52')]=function(_0x2bafe4,_0x6ae261){var _0x23be4c={'raw':![],'where':{'id':_0x2bafe4[_0xb5fa('0x53')]['id']}},_0x42a359={};_0x42a359['model']=_['differenceBy'](_[_0xb5fa('0x54')](db['User'][_0xb5fa('0x3a')]),[_0xb5fa('0x55'),'salt']);_0x42a359[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0x2bafe4[_0xb5fa('0x41')]);_0x42a359[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x42a359[_0xb5fa('0x58')],_0x42a359['query']);_0x23be4c[_0xb5fa('0x44')]=_['intersection'](_0x42a359[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x2bafe4[_0xb5fa('0x41')]['fields']));_0x23be4c[_0xb5fa('0x44')]=_0x23be4c[_0xb5fa('0x44')]['length']?_0x23be4c['attributes']:_0x42a359[_0xb5fa('0x58')];if(_0x2bafe4[_0xb5fa('0x41')][_0xb5fa('0x42')]){_0x23be4c[_0xb5fa('0x43')]=[{'all':!![]}];}_0x23be4c=_[_0xb5fa('0x5a')]({},_0x23be4c,_0x2bafe4[_0xb5fa('0x5b')]);if(!_[_0xb5fa('0x33')](_0x23be4c[_0xb5fa('0x44')],'id')){_0x23be4c[_0xb5fa('0x44')][_0xb5fa('0x45')]('id');}return db[_0xb5fa('0x40')][_0xb5fa('0x34')](_0x23be4c)[_0xb5fa('0x13')](handleEntityNotFound(_0x6ae261,null))[_0xb5fa('0x13')](function(_0x23f235){var _0x42c34f=[];values=_0x23f235;if(_0x2bafe4[_0xb5fa('0x41')][_0xb5fa('0x48')]==='true'){_0x42c34f[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x4b'),_0x23f235[_0xb5fa('0x4c')]));_0x42c34f[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x5c'),_0x23f235[_0xb5fa('0x4c')]));_0x42c34f[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x4f'),_0x23f235[_0xb5fa('0x4c')]));_0x42c34f[_0xb5fa('0x45')](get_open_tabs('whatsapp',_0x23f235['dataValues']));_0x42c34f[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x4d'),_0x23f235[_0xb5fa('0x4c')]));_0x42c34f['push'](get_open_tabs(_0xb5fa('0x4e'),_0x23f235[_0xb5fa('0x4c')]));return BPromise[_0xb5fa('0x51')](_0x42c34f);}else{return values;}})[_0xb5fa('0x13')](function(_0x31ab22){return values;})[_0xb5fa('0x13')](respondWithResult(_0x6ae261,null))[_0xb5fa('0x1d')](handleError(_0x6ae261,null));};exports['update']=function(_0x7bcd09,_0x4611f3){if(_0x7bcd09['body']['id']){delete _0x7bcd09[_0xb5fa('0x5d')]['id'];}delete _0x7bcd09[_0xb5fa('0x5d')]['role'];return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x7bcd09[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x4611f3,null))[_0xb5fa('0x13')](saveUpdates(_0x7bcd09[_0xb5fa('0x5d')],null))[_0xb5fa('0x13')](respondWithResult(_0x4611f3,null))[_0xb5fa('0x1d')](handleError(_0x4611f3,null));};exports[_0xb5fa('0x5e')]=function(_0x1c24e3,_0xfb88cc){return db[_0xb5fa('0x40')][_0xb5fa('0x5e')]()[_0xb5fa('0x13')](respondWithResult(_0xfb88cc,null))[_0xb5fa('0x1d')](handleError(_0xfb88cc,null));};exports[_0xb5fa('0x5f')]=function(_0x41cce9,_0x23fb01){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x41cce9[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x23fb01,null))['then'](function(_0x41fd9c){if(_0x41fd9c){return _0x41fd9c[_0xb5fa('0x5f')](_0x41cce9[_0xb5fa('0x5d')]['ids'],_[_0xb5fa('0x60')](_0x41cce9[_0xb5fa('0x5d')],['ids','id'])||{});}})[_0xb5fa('0x13')](respondWithResult(_0x23fb01,null))[_0xb5fa('0x1d')](handleError(_0x23fb01,null));};function validateUser(_0x5c25f6){return new BPromise(function(_0x571bb9,_0x5c93a0){if(_0x5c25f6[_0xb5fa('0x61')])return _0x571bb9(_0x5c25f6);return db[_0xb5fa('0x62')][_0xb5fa('0x63')](0x1)['then'](function(_0x597206){if(_0x597206[_0xb5fa('0x64')])authService[_0xb5fa('0x65')](_0x5c25f6[_0xb5fa('0x55')]);db['User']['max']('internal')[_0xb5fa('0x13')](function(_0x28a5f1){if(_[_0xb5fa('0x66')](_0x28a5f1)){_0x5c25f6['internal']=_0x597206[_0xb5fa('0x67')]||0x1;return;}if(_[_0xb5fa('0x66')](_0x597206[_0xb5fa('0x67')])||_0x597206[_0xb5fa('0x67')]===_0x28a5f1){_0x5c25f6[_0xb5fa('0x61')]=_0x28a5f1+0x1;return;}if(_0x597206[_0xb5fa('0x67')]>_0x28a5f1){_0x5c25f6[_0xb5fa('0x61')]=_0x597206[_0xb5fa('0x67')];return;}return db[_0xb5fa('0x68')][_0xb5fa('0x41')](_0xb5fa('0x69'),{'type':db[_0xb5fa('0x68')][_0xb5fa('0x6a')][_0xb5fa('0x6b')]})[_0xb5fa('0x13')](function(_0x5eeaa1){if(_0x5eeaa1&&_0x5eeaa1[_0xb5fa('0x4a')]){for(var _0x5a6f74=0x0,_0x47193c=_0x5eeaa1[_0xb5fa('0x4a')];_0x5a6f74<_0x47193c&&_[_0xb5fa('0x66')](_0x5c25f6[_0xb5fa('0x61')]);_0x5a6f74++){if(_0x597206[_0xb5fa('0x67')]<=_0x5eeaa1[_0x5a6f74]['from']){_0x5c25f6[_0xb5fa('0x61')]=_0x5eeaa1[_0x5a6f74]['from'];}else if(_0x597206[_0xb5fa('0x67')]>_0x5eeaa1[_0x5a6f74][_0xb5fa('0x6c')]&&_0x597206[_0xb5fa('0x67')]<=_0x5eeaa1[_0x5a6f74]['to']){_0x5c25f6[_0xb5fa('0x61')]=_0x597206['min_internal'];}}}if(_['isNil'](_0x5c25f6['internal'])){_0x5c25f6[_0xb5fa('0x61')]=_0x28a5f1+0x1;}return _0x571bb9(_0x5c25f6);});});})[_0xb5fa('0x1d')](function(_0x421dff){_0x5c93a0(_0x421dff);});});}function updateUser(_0x32e329){return new BPromise(function(_0x14bba6,_0x2f867e){try{if(_0x32e329['voicemail']){_0x32e329[_0xb5fa('0x6d')]=_0x32e329['internal'];_0x32e329['VoiceMail']={'mailbox':_0x32e329[_0xb5fa('0x61')],'password':_0x32e329['password'],'fullname':_0x32e329['fullname'],'email':_0x32e329['email']};}if(_0x32e329[_0xb5fa('0x2b')]==='agent'){if(!_0x32e329[_0xb5fa('0x6e')])_0x32e329[_0xb5fa('0x6e')]=[_0xb5fa('0x6f'),'102','103',_0xb5fa('0x70'),_0xb5fa('0x71'),'104',_0xb5fa('0x72'),_0xb5fa('0x73'),_0xb5fa('0x74'),_0xb5fa('0x75'),'109',_0xb5fa('0x76'),_0xb5fa('0x77'),_0xb5fa('0x78'),_0xb5fa('0x79')];}_0x14bba6(_0x32e329);}catch(_0x1c0f49){_0x2f867e(_0x1c0f49);}});}exports[_0xb5fa('0x7a')]=function(_0x33da84,_0x56f88c){if(_0x33da84[_0xb5fa('0x2e')]['role']===_0xb5fa('0x30'))throw new Error(_0xb5fa('0x7b'));if(_0x33da84['body'][_0xb5fa('0x2b')]===_0xb5fa('0x2e')&&_0x33da84[_0xb5fa('0x2e')][_0xb5fa('0x2b')]!==_0xb5fa('0x2c')){throw new Error(_0xb5fa('0x7c'));}if(_0x33da84[_0xb5fa('0x5d')][_0xb5fa('0x2b')]==='admin'&&_0x33da84[_0xb5fa('0x2e')][_0xb5fa('0x2b')]!==_0xb5fa('0x2c')){throw new Error(_0xb5fa('0x7d'));}return licenseUtil['checkUserLimits']([_0x33da84['body']])['then'](function(){return validateUser(_0x33da84['body']);})[_0xb5fa('0x13')](function(_0x1e607b){return updateUser(_0x1e607b)[_0xb5fa('0x13')](function(_0x188e66){if(_0x188e66['role']==='admin'){_0x188e66[_0xb5fa('0x7e')]=_0x33da84['user'][_0xb5fa('0x7e')];delete _0x188e66[_0xb5fa('0x7f')];}return _0x188e66;});})[_0xb5fa('0x13')](function(_0xfbd3ee){return db['User'][_0xb5fa('0x7a')](_0xfbd3ee,{'include':[{'model':db['VoiceMail'],'as':_0xb5fa('0x80')}]});})[_0xb5fa('0x13')](function(_0x524b10){if(_0x33da84['body'][_0xb5fa('0x2b')]===_0xb5fa('0x2e'))return _0x524b10;if(_0x33da84[_0xb5fa('0x2e')][_0xb5fa('0x2b')]!==_0xb5fa('0x2e'))return _0x524b10;return db[_0xb5fa('0x81')][_0xb5fa('0x34')]({'where':{'name':_0x524b10[_0xb5fa('0x2b')]===_0xb5fa('0x30')?_0xb5fa('0x2f'):_0xb5fa('0x31'),'userProfileId':_0x33da84[_0xb5fa('0x2e')][_0xb5fa('0x7f')]},'raw':!![]})['then'](function(_0x4b2818){if(!_0x4b2818||_0x4b2818[_0xb5fa('0x82')]!=0x0)return _0x524b10;return db['UserProfileResource'][_0xb5fa('0x7a')]({'name':_0x524b10[_0xb5fa('0x37')],'resourceId':_0x524b10['id'],'type':_0x4b2818['name'],'sectionId':_0x4b2818['id']},{})[_0xb5fa('0x13')](function(){return _0x524b10;});})[_0xb5fa('0x1d')](function(_0x4c2414){logger[_0xb5fa('0x19')](_0xb5fa('0x83'),_0x4c2414);throw _0x4c2414;});})['then'](respondWithResult(_0x56f88c,0xc9))[_0xb5fa('0x1d')](handleError(_0x56f88c,null));};exports[_0xb5fa('0x84')]=function(_0x367593,_0x5a358d){var _0x55c1c0=_0x367593[_0xb5fa('0x5d')];var _0x1a24a2=[];if(_0x367593[_0xb5fa('0x2e')][_0xb5fa('0x2b')]===_0xb5fa('0x30'))throw new Error(_0xb5fa('0x7b'));if(_[_0xb5fa('0x85')](_0x55c1c0,[_0xb5fa('0x2b'),_0xb5fa('0x2e')])&&_0x367593[_0xb5fa('0x2e')]['role']!=='admin'){throw new Error(_0xb5fa('0x7c'));}if(_[_0xb5fa('0x85')](_0x55c1c0,[_0xb5fa('0x2b'),_0xb5fa('0x2c')])&&_0x367593['user'][_0xb5fa('0x2b')]!==_0xb5fa('0x2c')){throw new Error(_0xb5fa('0x86'));}return licenseUtil['checkUserLimits'](_0x55c1c0)[_0xb5fa('0x13')](function(){return validateUser(_0x55c1c0[0x0]);})[_0xb5fa('0x13')](function(){for(var _0x109dd9=0x1;_0x109dd9<_0x55c1c0[_0xb5fa('0x4a')];_0x109dd9++){var _0x5ba2e7=_0x55c1c0[_0x109dd9-0x1][_0xb5fa('0x61')];if(!_0x55c1c0[_0x109dd9][_0xb5fa('0x61')])_0x55c1c0[_0x109dd9][_0xb5fa('0x61')]=_0x5ba2e7+0x1;_0x1a24a2[_0xb5fa('0x45')](validateUser(_0x55c1c0[_0x109dd9]));}return BPromise[_0xb5fa('0x51')](_0x1a24a2);})[_0xb5fa('0x13')](function(){_0x1a24a2=[];for(var _0x36014a=0x0;_0x36014a<_0x55c1c0[_0xb5fa('0x4a')];_0x36014a++){_0x1a24a2[_0xb5fa('0x45')](updateUser(_0x55c1c0[_0x36014a]));}return BPromise[_0xb5fa('0x51')](_0x1a24a2);})[_0xb5fa('0x13')](function(){return BPromise[_0xb5fa('0x87')](_0x55c1c0,function(_0x26d371){return db[_0xb5fa('0x40')][_0xb5fa('0x7a')](_0x26d371,{'include':[{'model':db['VoiceMail'],'as':_0xb5fa('0x80')}]})[_0xb5fa('0x13')](function(_0x2930bd){_0x26d371['id']=_0x2930bd['id'];return _0x26d371;});});})[_0xb5fa('0x13')](function(_0x464292){if(_0x367593[_0xb5fa('0x5d')][_0xb5fa('0x2b')]===_0xb5fa('0x2e'))return _0x464292;if(_0x367593['user']['role']!==_0xb5fa('0x2e'))return _0x464292;var _0x5b55a5=_['some'](_0x464292,function(_0x3b24fb){return _0x3b24fb[_0xb5fa('0x2b')]===_0xb5fa('0x30')||_0x3b24fb['role']===_0xb5fa('0x88');});if(!_0x5b55a5)return _0x464292;return db[_0xb5fa('0x81')][_0xb5fa('0x46')]({'where':{'name':{'$or':['Agents',_0xb5fa('0x31')]},'userProfileId':_0x367593[_0xb5fa('0x2e')]['userProfileId']},'raw':!![]})[_0xb5fa('0x13')](function(_0x3217b0){if(_[_0xb5fa('0x89')](_0x3217b0)||!_[_0xb5fa('0x85')](_0x3217b0,[_0xb5fa('0x82'),0x0]))return _0x464292;_0x1a24a2=[];var _0x40f10f=_(_0x3217b0)[_0xb5fa('0x8a')](function(_0x5266e7){if(_0x5266e7[_0xb5fa('0x82')]===0x1)return;return _0x5266e7[_0xb5fa('0x37')]===_0xb5fa('0x2f')?_0xb5fa('0x30'):'telephone';})['compact']()[_0xb5fa('0x32')]();for(var _0x21fa37=0x0;_0x21fa37<_0x464292[_0xb5fa('0x4a')];_0x21fa37++){if(!_[_0xb5fa('0x33')](_0x40f10f,_0x464292[_0x21fa37]['role']))return;var _0x4ee36b=_0x464292[_0x21fa37]['role']==='agent'?_0xb5fa('0x2f'):_0xb5fa('0x31');_0x1a24a2[_0xb5fa('0x45')](db[_0xb5fa('0x35')][_0xb5fa('0x7a')]({'name':_0x464292[_0x21fa37][_0xb5fa('0x37')],'resourceId':_0x464292[_0x21fa37]['id'],'type':_0x4ee36b,'sectionId':_[_0xb5fa('0x34')](_0x3217b0,[_0xb5fa('0x37'),_0x4ee36b])['id']},{}));}return BPromise[_0xb5fa('0x51')](_0x1a24a2);});})[_0xb5fa('0x13')](respondWithResult(_0x5a358d,0xc9))[_0xb5fa('0x1d')](handleError(_0x5a358d,null));};exports['changePassword']=function(_0x427d61,_0x2a6f66){if(_0x427d61['body']['id']){delete _0x427d61[_0xb5fa('0x5d')]['id'];}return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x427d61[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](function(_0x902ba9){if(!_0x902ba9)return null;if(_0x902ba9['id']===_0x427d61[_0xb5fa('0x2e')]['id']){if(!_0x427d61[_0xb5fa('0x5d')][_0xb5fa('0x8b')]||!_0x427d61[_0xb5fa('0x5d')][_0xb5fa('0x8c')]){throw new db[(_0xb5fa('0x8d'))]['ValidationError'](_0xb5fa('0x8e'));}if(!_0x902ba9[_0xb5fa('0x8f')](_0x427d61[_0xb5fa('0x5d')][_0xb5fa('0x8b')])){throw new db[(_0xb5fa('0x8d'))][(_0xb5fa('0x90'))](_0xb5fa('0x91'));}if(_0x427d61[_0xb5fa('0x5d')]['oldPassword']===_0x427d61[_0xb5fa('0x5d')]['newPassword']){throw new db[(_0xb5fa('0x8d'))][(_0xb5fa('0x90'))](_0xb5fa('0x92'));}}else if(_0x427d61[_0xb5fa('0x2e')][_0xb5fa('0x2b')]===_0xb5fa('0x2c')){if(!_0x427d61[_0xb5fa('0x5d')][_0xb5fa('0x8c')]){throw new db[(_0xb5fa('0x8d'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x427d61[_0xb5fa('0x2e')][_0xb5fa('0x2b')]===_0xb5fa('0x2e')){if(!_0x427d61[_0xb5fa('0x5d')]['newPassword']){throw new db[(_0xb5fa('0x8d'))]['ValidationError'](_0xb5fa('0x93'));}if(_0x902ba9[_0xb5fa('0x2b')]!=='agent'){throw new db[(_0xb5fa('0x8d'))]['ValidationError'](_0xb5fa('0x7b'));}}else{throw new db['Sequelize'][(_0xb5fa('0x90'))](_0xb5fa('0x7b'));}return _0x902ba9;})[_0xb5fa('0x13')](handleEntityNotFound(_0x2a6f66,null))[_0xb5fa('0x13')](function(_0x70e28d){return db[_0xb5fa('0x62')][_0xb5fa('0x94')]({'attributes':['id',_0xb5fa('0x64'),_0xb5fa('0x95'),_0xb5fa('0x96')]})[_0xb5fa('0x13')](function(_0x4f5aed){if(_0x4f5aed[_0xb5fa('0x64')])authService[_0xb5fa('0x65')](_0x427d61[_0xb5fa('0x5d')]['newPassword']);if(!_0x4f5aed[_0xb5fa('0x95')]||!_0x70e28d[_0xb5fa('0x97')])return _0x70e28d;authService[_0xb5fa('0x98')](_0x427d61[_0xb5fa('0x5d')][_0xb5fa('0x8c')],_0x70e28d[_0xb5fa('0x97')],_0x4f5aed[_0xb5fa('0x96')]);return _0x70e28d;})[_0xb5fa('0x13')](saveUpdates({'password':_0x427d61['body'][_0xb5fa('0x8c')],'passwordResetAt':_0x427d61['user']['id']==_0x427d61[_0xb5fa('0x53')]['id']?moment():null,'previousPasswords':authService[_0xb5fa('0x99')](_0x427d61[_0xb5fa('0x5d')][_0xb5fa('0x8c')],_0x70e28d[_0xb5fa('0x97')])},null));})[_0xb5fa('0x13')](respondWithResult(_0x2a6f66,null))[_0xb5fa('0x1d')](handleError(_0x2a6f66,null));};exports[_0xb5fa('0x9a')]=function(_0x190810,_0x25d7d4){var _0x1feb1d=_0x190810[_0xb5fa('0x5d')][_0xb5fa('0x9b')];return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x190810[_0xb5fa('0x53')]['id']},'attributes':['id',_0xb5fa('0x37'),'role',_0xb5fa('0x9c'),_0xb5fa('0x9d'),'voicePause',_0xb5fa('0x9e')]})[_0xb5fa('0x13')](handleEntityNotFound(_0x25d7d4,null))['then'](function(_0x4fefa0){if(_0x4fefa0){if(!utils['isValidChannel'](_0x1feb1d)){throw new db[(_0xb5fa('0x8d'))][(_0xb5fa('0x90'))](_0xb5fa('0x9f'));}return _0x4fefa0[_0xb5fa('0xa0')+_[_0xb5fa('0xa1')](_0x1feb1d[_0xb5fa('0xa2')]())+_0xb5fa('0xa3')](_0x190810['body']['ids'],{'penalty':_0x190810['body'][_0xb5fa('0xa4')]||0x0})['spread'](function(_0x4d1ba6){for(var _0x2c7076=0x0;_0x2c7076<_0x190810['body'][_0xb5fa('0xa5')][_0xb5fa('0x4a')];_0x2c7076+=0x1){var _0x267737={'UserId':Number(_0x190810[_0xb5fa('0x53')]['id'])};_0x267737[_[_0xb5fa('0xa1')](_0x1feb1d['toLowerCase']())+_0xb5fa('0xa6')]=Number(_0x190810[_0xb5fa('0x5d')][_0xb5fa('0xa5')][_0x2c7076]);socket[_0xb5fa('0xa7')](_0xb5fa('0x2e')+_['capitalize'](_0x1feb1d[_0xb5fa('0xa2')]())+_0xb5fa('0xa8'),_0x267737);}return _0x4d1ba6;})[_0xb5fa('0x13')](function(){if(_0x1feb1d===_0xb5fa('0xa9')){return db[_0xb5fa('0xaa')][_0xb5fa('0x46')]({'where':{'id':_0x190810['body'][_0xb5fa('0xa5')]||[]},'raw':!![],'attributes':['id',_0xb5fa('0x37')]});}})[_0xb5fa('0x13')](function(_0xc6d275){var _0x32c191=_0x4fefa0[_0xb5fa('0x2a')]({'plain':!![]});var _0x210976=[];if(_0x1feb1d===_0xb5fa('0xa9')&&_0x32c191[_0xb5fa('0x2b')]===_0xb5fa('0x30')&&_0x32c191[_0xb5fa('0x9c')]){for(var _0x1e770d=0x0;_0x1e770d<_0xc6d275[_0xb5fa('0x4a')];_0x1e770d+=0x1){_0x210976[_0xb5fa('0x45')]({'membername':_0x32c191[_0xb5fa('0x37')],'UserId':_0x32c191['id'],'queue_name':_0xc6d275[_0x1e770d][_0xb5fa('0x37')],'VoiceQueueId':_0xc6d275[_0x1e770d]['id'],'interface':_[_0xb5fa('0x66')](_0x32c191[_0xb5fa('0x9e')])?util[_0xb5fa('0xab')](_0xb5fa('0xac'),_0x32c191[_0xb5fa('0x37')]):_0x32c191[_0xb5fa('0x9e')],'paused':_0x32c191['voicePause']||![],'penalty':_0x190810['body'][_0xb5fa('0xa4')]||0x0});}return BPromise[_0xb5fa('0x87')](_0x210976,function(_0x43bc62){return db[_0xb5fa('0xad')][_0xb5fa('0xae')](_0x43bc62);});}return _0x4fefa0;});}})[_0xb5fa('0x13')](respondWithStatusCode(_0x25d7d4,null))['catch'](handleError(_0x25d7d4,null));};exports['removeQueues']=function(_0x52e1e2,_0x44f198){var _0x9a691f;return db['User'][_0xb5fa('0x34')]({'where':{'id':_0x52e1e2[_0xb5fa('0x53')]['id']},'attributes':['id','name',_0xb5fa('0x2b')]})[_0xb5fa('0x13')](handleEntityNotFound(_0x44f198,null))[_0xb5fa('0x13')](function(_0x3fd4de){if(_0x3fd4de){_0x9a691f=_0x3fd4de;if(!_0x52e1e2[_0xb5fa('0x41')][_0xb5fa('0x9b')]||!utils[_0xb5fa('0xaf')](_0x52e1e2[_0xb5fa('0x41')]['channel'])){throw new db[(_0xb5fa('0x8d'))]['ValidationError'](_0xb5fa('0x9f'));}return _0x3fd4de[_0xb5fa('0xb0')+_[_0xb5fa('0xa1')](_0x52e1e2[_0xb5fa('0x41')]['channel'][_0xb5fa('0xa2')]())+_0xb5fa('0xa3')](_0x52e1e2[_0xb5fa('0x41')][_0xb5fa('0xa5')]);}})['then'](function(_0xa1b25a){if(_[_0xb5fa('0xb1')](_0x52e1e2[_0xb5fa('0x41')][_0xb5fa('0xa5')])){for(var _0x16221f=0x0;_0x16221f<_0x52e1e2[_0xb5fa('0x41')][_0xb5fa('0xa5')]['length'];_0x16221f+=0x1){var _0x81e1b2={'UserId':Number(_0x52e1e2['params']['id'])};_0x81e1b2[_[_0xb5fa('0xa1')](_0x52e1e2[_0xb5fa('0x41')][_0xb5fa('0x9b')][_0xb5fa('0xa2')]())+_0xb5fa('0xa6')]=Number(_0x52e1e2[_0xb5fa('0x41')][_0xb5fa('0xa5')][_0x16221f]);socket['emit']('user'+_[_0xb5fa('0xa1')](_0x52e1e2[_0xb5fa('0x41')][_0xb5fa('0x9b')][_0xb5fa('0xa2')]())+_0xb5fa('0xb2'),_0x81e1b2);}}else{var _0x81e1b2={'UserId':Number(_0x52e1e2[_0xb5fa('0x53')]['id'])};_0x81e1b2[_[_0xb5fa('0xa1')](_0x52e1e2['query'][_0xb5fa('0x9b')][_0xb5fa('0xa2')]())+_0xb5fa('0xa6')]=Number(_0x52e1e2[_0xb5fa('0x41')][_0xb5fa('0xa5')]);socket[_0xb5fa('0xa7')](_0xb5fa('0x2e')+_[_0xb5fa('0xa1')](_0x52e1e2[_0xb5fa('0x41')]['channel'][_0xb5fa('0xa2')]())+'Queue:remove',_0x81e1b2);}return _0xa1b25a;})[_0xb5fa('0x13')](function(){if(_0x52e1e2[_0xb5fa('0x41')][_0xb5fa('0x9b')]===_0xb5fa('0xa9')){return db[_0xb5fa('0xad')][_0xb5fa('0x29')]({'where':{'UserId':_0x52e1e2['params']['id'],'VoiceQueueId':_0x52e1e2[_0xb5fa('0x41')][_0xb5fa('0xa5')]},'individualHooks':!![]})[_0xb5fa('0x13')](function(){return _0x9a691f;});}return _0x9a691f;})[_0xb5fa('0x13')](respondWithStatusCode(_0x44f198,null))[_0xb5fa('0x1d')](handleError(_0x44f198,null));};exports[_0xb5fa('0xb3')]=function(_0x4444da,_0x55ec26){_0x4444da['body'][_0xb5fa('0xb4')]=_0x4444da[_0xb5fa('0xb5')][_0xb5fa('0xb6')];return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x4444da[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x55ec26,null))[_0xb5fa('0x13')](saveUpdates(_0x4444da[_0xb5fa('0x5d')],null))[_0xb5fa('0x13')](respondWithResult(_0x55ec26,null))['catch'](handleError(_0x55ec26,null));};exports[_0xb5fa('0xb7')]=function(_0x2dec50,_0x1b29c3){var _0x280ff2=path[_0xb5fa('0xb8')](config[_0xb5fa('0xb9')],_0xb5fa('0xba'));return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x2dec50[_0xb5fa('0x53')]['id']},'attributes':['id',_0xb5fa('0xb4')],'raw':!![]})[_0xb5fa('0x13')](handleEntityNotFound(_0x1b29c3,null))[_0xb5fa('0x13')](function(_0x17bff3){if(_0x17bff3){if(_['isNil'](_0x17bff3['userpic'])){return _0x1b29c3[_0xb5fa('0xbb')](_0x280ff2);}else{if(!fs[_0xb5fa('0xbc')](path['join'](config[_0xb5fa('0xb9')],_0xb5fa('0xbd'),_0x17bff3[_0xb5fa('0xb4')]))){return _0x1b29c3['download'](_0x280ff2);}return _0x1b29c3[_0xb5fa('0xbb')](path[_0xb5fa('0xb8')](config[_0xb5fa('0xb9')],_0xb5fa('0xbd'),_0x17bff3[_0xb5fa('0xb4')]));}}})[_0xb5fa('0x1d')](handleError(_0x1b29c3,null));};exports[_0xb5fa('0xbe')]=function(_0x3c3590,_0x53a7be){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x3c3590['params']['id']},'attributes':['id']})[_0xb5fa('0x13')](handleEntityNotFound(_0x53a7be,null))[_0xb5fa('0x13')](function(_0x567ad1){var _0x1a38c2=[];values=_0x567ad1[_0xb5fa('0x4c')];_0x1a38c2[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x4b'),_0x567ad1[_0xb5fa('0x4c')]));_0x1a38c2[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x5c'),_0x567ad1[_0xb5fa('0x4c')]));_0x1a38c2['push'](get_open_tabs(_0xb5fa('0x4f'),_0x567ad1[_0xb5fa('0x4c')]));_0x1a38c2[_0xb5fa('0x45')](get_open_tabs(_0xb5fa('0x50'),_0x567ad1[_0xb5fa('0x4c')]));_0x1a38c2['push'](get_open_tabs(_0xb5fa('0x4d'),_0x567ad1[_0xb5fa('0x4c')]));_0x1a38c2[_0xb5fa('0x45')](get_open_tabs('mail',_0x567ad1[_0xb5fa('0x4c')]));return BPromise[_0xb5fa('0x51')](_0x1a38c2);})[_0xb5fa('0x13')](function(_0x539254){var _0x1cd1d8=[];if(_0x539254){for(var _0x3ae31a=0x0;_0x3ae31a<values[_0xb5fa('0xbf')][_0xb5fa('0x4a')];_0x3ae31a++){var _0x529616=values[_0xb5fa('0xbf')][_0x3ae31a];_0x1cd1d8[_0xb5fa('0x45')]({'channel':_0xb5fa('0xc0'),'id':_0x529616['id'],'createdAt':_0x529616[_0xb5fa('0xc1')]});}for(var _0x3ae31a=0x0;_0x3ae31a<values[_0xb5fa('0xc2')][_0xb5fa('0x4a')];_0x3ae31a++){var _0x529616=values['FaxOpenTabs'][_0x3ae31a];_0x1cd1d8['push']({'channel':'FAX','id':_0x529616['id'],'createdAt':_0x529616['createdAt']});}for(var _0x3ae31a=0x0;_0x3ae31a<values[_0xb5fa('0xc3')][_0xb5fa('0x4a')];_0x3ae31a++){var _0x529616=values[_0xb5fa('0xc3')][_0x3ae31a];_0x1cd1d8[_0xb5fa('0x45')]({'channel':_0xb5fa('0xc4'),'id':_0x529616['id'],'createdAt':_0x529616[_0xb5fa('0xc1')]});}for(var _0x3ae31a=0x0;_0x3ae31a<values[_0xb5fa('0xc5')][_0xb5fa('0x4a')];_0x3ae31a++){var _0x529616=values['MailOpenTabs'][_0x3ae31a];_0x1cd1d8[_0xb5fa('0x45')]({'channel':_0xb5fa('0xc6'),'id':_0x529616['id'],'createdAt':_0x529616[_0xb5fa('0xc1')]});}for(var _0x3ae31a=0x0;_0x3ae31a<values['SmsOpenTabs'][_0xb5fa('0x4a')];_0x3ae31a++){var _0x529616=values[_0xb5fa('0xc7')][_0x3ae31a];_0x1cd1d8[_0xb5fa('0x45')]({'channel':_0xb5fa('0xc8'),'id':_0x529616['id'],'createdAt':_0x529616[_0xb5fa('0xc1')]});}for(var _0x3ae31a=0x0;_0x3ae31a<values[_0xb5fa('0xc9')][_0xb5fa('0x4a')];_0x3ae31a++){var _0x529616=values[_0xb5fa('0xc9')][_0x3ae31a];_0x1cd1d8[_0xb5fa('0x45')]({'channel':_0xb5fa('0xca'),'id':_0x529616['id'],'createdAt':_0x529616[_0xb5fa('0xc1')]});}var _0x130bf1={'count':_0x1cd1d8[_0xb5fa('0x4a')],'rows':_0x1cd1d8};return _0x130bf1;}else return null;})[_0xb5fa('0x13')](respondWithResult(_0x53a7be,null))[_0xb5fa('0x1d')](handleError(_0x53a7be,null));};exports['getContacts']=function(_0x187456,_0x1845f3){var _0x55da0a={};var _0x510ce8={};var _0x2a87ec;var _0x5b2381;return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0x187456[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x1845f3,null))[_0xb5fa('0x13')](function(_0x283367){if(_0x283367){_0x2a87ec=_0x283367;_0x510ce8[_0xb5fa('0x58')]=_[_0xb5fa('0x54')](db['CmContact'][_0xb5fa('0x3a')]);_0x510ce8[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0x187456[_0xb5fa('0x41')]);_0x510ce8['filters']=_[_0xb5fa('0x57')](_0x510ce8[_0xb5fa('0x58')],_0x510ce8['query']);_0x55da0a[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x510ce8['model'],qs[_0xb5fa('0x59')](_0x187456[_0xb5fa('0x41')]['fields']));_0x55da0a[_0xb5fa('0x44')]=_0x55da0a['attributes']['length']?_0x55da0a[_0xb5fa('0x44')]:_0x510ce8[_0xb5fa('0x58')];_0x55da0a[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x187456[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x55da0a[_0xb5fa('0xcd')]=qs['filters'](_[_0xb5fa('0xce')](_0x187456[_0xb5fa('0x41')],_0x510ce8['filters']));if(_0x187456['query'][_0xb5fa('0x3e')]){_0x55da0a[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x55da0a['where'],{'$or':_[_0xb5fa('0x8a')](_0x55da0a['attributes'],function(_0x30aa71){var _0x48d5b9={};_0x48d5b9[_0x30aa71]={'$like':'%'+_0x187456[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x48d5b9;})});}_0x55da0a=_[_0xb5fa('0x5a')]({},_0x55da0a,_0x187456[_0xb5fa('0x5b')]);return _0x2a87ec[_0xb5fa('0xcf')](_0x55da0a);}})[_0xb5fa('0x13')](function(_0x392e5d){if(_0x392e5d){_0x5b2381=_0x392e5d['length'];if(_0x187456[_0xb5fa('0x41')][_0xb5fa('0xd0')]('includeAll')){_0x55da0a[_0xb5fa('0x43')]=[{'model':db['CmList'],'as':_0xb5fa('0xd1'),'required':![]},{'model':db[_0xb5fa('0xd2')],'as':_0xb5fa('0xd3'),'attributes':['id',_0xb5fa('0x37'),'color'],'where':_0x187456[_0xb5fa('0x41')]['tag']?{'id':_0x187456[_0xb5fa('0x41')][_0xb5fa('0xd4')]}:undefined,'required':_0x187456['query'][_0xb5fa('0xd4')]?!![]:![]}];}if(!_0x187456[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x55da0a[_0xb5fa('0x24')]=qs['limit'](_0x187456[_0xb5fa('0x41')]['limit']);_0x55da0a[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x187456['query'][_0xb5fa('0x22')]);}return _0x2a87ec[_0xb5fa('0xcf')](_0x55da0a);}})['then'](function(_0x4ee06e){if(_0x4ee06e){return _0x4ee06e?{'count':_0x5b2381,'rows':_0x4ee06e}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x1845f3,null))[_0xb5fa('0x1d')](handleError(_0x1845f3,null));};exports[_0xb5fa('0xd6')]=function(_0x1a501e,_0x35ffac){var _0x20c4d7;var _0x257d8a;var _0x1f0cec={};var _0x5dbfd7;return db[_0xb5fa('0x40')]['findOne']({'where':{'id':_0x1a501e['params']['id']},'attributes':['id','name',_0xb5fa('0x2b')]})[_0xb5fa('0x13')](handleEntityNotFound(_0x35ffac,null))['then'](function(_0x57a6bd){if(!utils['isValidChannel'](_0x1a501e['query'][_0xb5fa('0x9b')])){throw new db['Sequelize'][(_0xb5fa('0x90'))](_0xb5fa('0x9f'));}_0x20c4d7=_0x57a6bd;var _0x189e6b={};_0x189e6b['model']=_[_0xb5fa('0x54')](db[_[_0xb5fa('0xa1')](_0x1a501e['query'][_0xb5fa('0x9b')])+_0xb5fa('0xd7')]['rawAttributes']);_0x189e6b['query']=_['keys'](_0x1a501e[_0xb5fa('0x41')]);_0x189e6b[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x189e6b['model'],_0x189e6b[_0xb5fa('0x41')]);_0x1f0cec[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x189e6b[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x1a501e['query'][_0xb5fa('0x59')]));_0x1f0cec['attributes']=_0x1f0cec[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x1f0cec[_0xb5fa('0x44')]:_0x189e6b[_0xb5fa('0x58')];_0x1f0cec[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x1a501e[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x1f0cec[_0xb5fa('0xcd')]=qs['filters'](_['pick'](_0x1a501e[_0xb5fa('0x41')],_0x189e6b[_0xb5fa('0x56')]));if(_0x1a501e['query'][_0xb5fa('0x3e')]){_0x1f0cec[_0xb5fa('0xcd')]=_['merge'](_0x1f0cec[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x1f0cec[_0xb5fa('0x44')],function(_0x480336){var _0x270ccd={};_0x270ccd[_0x480336]={'$like':'%'+_0x1a501e[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x270ccd;})});}_0x1f0cec=_[_0xb5fa('0x5a')]({},_0x1f0cec,_0x1a501e[_0xb5fa('0x5b')]);switch(_0x20c4d7['role']){case _0xb5fa('0x2c'):return db[_[_0xb5fa('0xa1')](_0x1a501e[_0xb5fa('0x41')][_0xb5fa('0x9b')])+_0xb5fa('0xd7')]['findAll'](_0x1f0cec);case'user':case _0xb5fa('0x30'):return _0x20c4d7[_0xb5fa('0x2a')+_[_0xb5fa('0xa1')](_0x1a501e[_0xb5fa('0x41')][_0xb5fa('0x9b')])+'Queues'](_0x1f0cec);default:throw new db['Sequelize']['ValidationError'](_0xb5fa('0xd8'));}})[_0xb5fa('0x13')](function(_0x55090b){_0x5dbfd7=_0x55090b[_0xb5fa('0x4a')];if(!_0x1a501e[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x1f0cec[_0xb5fa('0x24')]=qs['limit'](_0x1a501e[_0xb5fa('0x41')]['limit']);_0x1f0cec[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x1a501e[_0xb5fa('0x41')][_0xb5fa('0x22')]);}switch(_0x20c4d7[_0xb5fa('0x2b')]){case _0xb5fa('0x2c'):return db[_[_0xb5fa('0xa1')](_0x1a501e[_0xb5fa('0x41')][_0xb5fa('0x9b')])+'Queue'][_0xb5fa('0x46')](_0x1f0cec);case _0xb5fa('0x2e'):case _0xb5fa('0x30'):return _0x20c4d7[_0xb5fa('0x2a')+_['capitalize'](_0x1a501e[_0xb5fa('0x41')][_0xb5fa('0x9b')])+'Queues'](_0x1f0cec);}})['then'](function(_0x17e66a){return{'count':_0x5dbfd7,'rows':_0x17e66a};})[_0xb5fa('0x13')](respondWithResult(_0x35ffac,null))['catch'](handleError(_0x35ffac,null));};exports['getVoiceQueuesRt']=function(_0x317cee,_0x101ed7){var _0x274a31={};var _0x2cacaa={};var _0xacd832;var _0x57ccd3;return db['User'][_0xb5fa('0x94')]({'where':{'id':_0x317cee['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x101ed7,null))['then'](function(_0x22d178){if(_0x22d178){_0xacd832=_0x22d178;_0x2cacaa[_0xb5fa('0x58')]=_['keys'](db['UserVoiceQueueRt'][_0xb5fa('0x3a')]);_0x2cacaa['query']=_[_0xb5fa('0x54')](_0x317cee[_0xb5fa('0x41')]);_0x2cacaa['filters']=_[_0xb5fa('0x57')](_0x2cacaa[_0xb5fa('0x58')],_0x2cacaa[_0xb5fa('0x41')]);_0x274a31['attributes']=_[_0xb5fa('0x57')](_0x2cacaa[_0xb5fa('0x58')],qs['fields'](_0x317cee[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x274a31[_0xb5fa('0x44')]=_0x274a31[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x274a31[_0xb5fa('0x44')]:_0x2cacaa[_0xb5fa('0x58')];_0x274a31[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x317cee[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x274a31[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x317cee[_0xb5fa('0x41')],_0x2cacaa[_0xb5fa('0x56')]));if(_0x317cee[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0x274a31[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x274a31[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x274a31[_0xb5fa('0x44')],function(_0x39621f){var _0x58907b={};_0x58907b[_0x39621f]={'$like':'%'+_0x317cee[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x58907b;})});}_0x274a31=_[_0xb5fa('0x5a')]({},_0x274a31,_0x317cee[_0xb5fa('0x5b')]);return _0xacd832[_0xb5fa('0xd9')](_0x274a31);}})[_0xb5fa('0x13')](function(_0x58b963){if(_0x58b963){_0x57ccd3=_0x58b963[_0xb5fa('0x4a')];if(!_0x317cee[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x274a31[_0xb5fa('0x24')]=qs[_0xb5fa('0x24')](_0x317cee[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0x274a31[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x317cee[_0xb5fa('0x41')]['offset']);}return _0xacd832[_0xb5fa('0xd9')](_0x274a31);}})[_0xb5fa('0x13')](function(_0x49a97d){if(_0x49a97d){return _0x49a97d?{'count':_0x57ccd3,'rows':_0x49a97d}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x101ed7,null))['catch'](handleError(_0x101ed7,null));};exports[_0xb5fa('0xda')]=function(_0x513b6d,_0x41b213){var _0x56fa59={};var _0x523f9b={};var _0x4581af;var _0x19c54c;return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0x513b6d[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x41b213,null))[_0xb5fa('0x13')](function(_0x986cd2){if(_0x986cd2){_0x4581af=_0x986cd2;_0x523f9b[_0xb5fa('0x58')]=_[_0xb5fa('0x54')](db['ChatGroup'][_0xb5fa('0x3a')]);_0x523f9b['query']=_[_0xb5fa('0x54')](_0x513b6d[_0xb5fa('0x41')]);_0x523f9b[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x523f9b[_0xb5fa('0x58')],_0x523f9b[_0xb5fa('0x41')]);_0x56fa59[_0xb5fa('0x44')]=_['intersection'](_0x523f9b['model'],qs[_0xb5fa('0x59')](_0x513b6d[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x56fa59[_0xb5fa('0x44')]=_0x56fa59[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x56fa59['attributes']:_0x523f9b[_0xb5fa('0x58')];_0x56fa59[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x513b6d[_0xb5fa('0x41')]['sort']);_0x56fa59[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x513b6d['query'],_0x523f9b[_0xb5fa('0x56')]));if(_0x513b6d[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0x56fa59['where']=_[_0xb5fa('0x5a')](_0x56fa59[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x56fa59[_0xb5fa('0x44')],function(_0x35ac29){var _0x257623={};_0x257623[_0x35ac29]={'$like':'%'+_0x513b6d[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x257623;})});}_0x56fa59=_['merge']({},_0x56fa59,_0x513b6d[_0xb5fa('0x5b')]);return _0x4581af[_0xb5fa('0xda')](_0x56fa59);}})[_0xb5fa('0x13')](function(_0x450183){if(_0x450183){_0x19c54c=_0x450183[_0xb5fa('0x4a')];if(!_0x513b6d[_0xb5fa('0x41')]['hasOwnProperty'](_0xb5fa('0xd5'))){_0x56fa59[_0xb5fa('0x24')]=qs['limit'](_0x513b6d[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0x56fa59[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x513b6d[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x4581af[_0xb5fa('0xda')](_0x56fa59);}})[_0xb5fa('0x13')](function(_0x4f64ca){if(_0x4f64ca){return _0x4f64ca?{'count':_0x19c54c,'rows':_0x4f64ca}:null;}})['then'](respondWithResult(_0x41b213,null))['catch'](handleError(_0x41b213,null));};exports[_0xb5fa('0xdb')]=function(_0x1a83de,_0xb8dfb8){var _0x8ab614={'raw':!![],'where':{}};var _0x562e8a={};var _0xf33bc9={'count':0x0,'rows':[]};return db[_0xb5fa('0x40')]['findOne']({'where':{'id':_0x1a83de[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0xb8dfb8,null))[_0xb5fa('0x13')](function(_0x534af4){if(_0x534af4){_0x562e8a['model']=_['keys'](db[_0xb5fa('0xdc')][_0xb5fa('0x3a')]);_0x562e8a[_0xb5fa('0x41')]=_['keys'](_0x1a83de[_0xb5fa('0x41')]);_0x562e8a['filters']=_[_0xb5fa('0x57')](_0x562e8a[_0xb5fa('0x58')],_0x562e8a['query']);_0x8ab614[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x562e8a[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x1a83de[_0xb5fa('0x41')]['fields']));_0x8ab614[_0xb5fa('0x44')]=_0x8ab614[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x8ab614[_0xb5fa('0x44')]:_0x562e8a[_0xb5fa('0x58')];if(!_0x1a83de[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x8ab614[_0xb5fa('0x24')]=qs['limit'](_0x1a83de[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0x8ab614[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x1a83de[_0xb5fa('0x41')][_0xb5fa('0x22')]);}_0x8ab614['order']=qs['sort'](_0x1a83de[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x8ab614['where']=qs['filters'](_[_0xb5fa('0xce')](_0x1a83de[_0xb5fa('0x41')],_0x562e8a[_0xb5fa('0x56')]));_0x8ab614[_0xb5fa('0xcd')][_0xb5fa('0xdd')]=_0x534af4['id'];if(_0x1a83de[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0x8ab614[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x8ab614[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x8ab614[_0xb5fa('0x44')],function(_0x58439e){var _0x2949fa={};_0x2949fa[_0x58439e]={'$like':'%'+_0x1a83de[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x2949fa;})});}_0x8ab614=_[_0xb5fa('0x5a')]({},_0x8ab614,_0x1a83de[_0xb5fa('0x5b')]);return db['VoiceRecording'][_0xb5fa('0x25')]({'where':_0x8ab614[_0xb5fa('0xcd')]})[_0xb5fa('0x13')](function(_0x3b0668){_0xf33bc9[_0xb5fa('0x25')]=_0x3b0668;if(_0x1a83de[_0xb5fa('0x41')][_0xb5fa('0x42')]){_0x8ab614[_0xb5fa('0x43')]=[{'all':!![]}];}return db[_0xb5fa('0xdc')][_0xb5fa('0x46')](_0x8ab614);})['then'](function(_0x2aac1e){_0xf33bc9['rows']=_0x2aac1e;return _0xf33bc9;});}})[_0xb5fa('0x13')](respondWithFilteredResult(_0xb8dfb8,_0x8ab614))[_0xb5fa('0x1d')](handleError(_0xb8dfb8,null));};exports[_0xb5fa('0xde')]=function(_0x15ed11,_0x32aa58){var _0x5c5311={'raw':!![],'where':{}};var _0x24100c={};var _0x4a2840={'count':0x0,'rows':[]};return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0x15ed11[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x32aa58,null))[_0xb5fa('0x13')](function(_0x6166c0){if(_0x6166c0){_0x24100c[_0xb5fa('0x58')]=_[_0xb5fa('0x54')](db[_0xb5fa('0xdf')][_0xb5fa('0x3a')]);_0x24100c[_0xb5fa('0x41')]=_['keys'](_0x15ed11['query']);_0x24100c[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x24100c['model'],_0x24100c['query']);_0x5c5311[_0xb5fa('0x44')]=_['intersection'](_0x24100c[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x15ed11[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x5c5311[_0xb5fa('0x44')]=_0x5c5311[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x5c5311[_0xb5fa('0x44')]:_0x24100c[_0xb5fa('0x58')];if(!_0x15ed11[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x5c5311[_0xb5fa('0x24')]=qs['limit'](_0x15ed11[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0x5c5311[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x15ed11[_0xb5fa('0x41')][_0xb5fa('0x22')]);}_0x5c5311['order']=qs[_0xb5fa('0xcc')](_0x15ed11['query'][_0xb5fa('0xcc')]);_0x5c5311['where']=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x15ed11[_0xb5fa('0x41')],_0x24100c[_0xb5fa('0x56')]));_0x5c5311[_0xb5fa('0xcd')][_0xb5fa('0xdd')]=_0x6166c0['id'];if(_0x15ed11[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0x5c5311[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x5c5311[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x5c5311[_0xb5fa('0x44')],function(_0x1939e9){var _0xbb9364={};_0xbb9364[_0x1939e9]={'$like':'%'+_0x15ed11[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0xbb9364;})});}_0x5c5311=_[_0xb5fa('0x5a')]({},_0x5c5311,_0x15ed11['options']);return db[_0xb5fa('0xdf')][_0xb5fa('0x25')]({'where':_0x5c5311[_0xb5fa('0xcd')]})['then'](function(_0x11a694){_0x4a2840[_0xb5fa('0x25')]=_0x11a694;if(_0x15ed11[_0xb5fa('0x41')][_0xb5fa('0x42')]){_0x5c5311[_0xb5fa('0x43')]=[{'all':!![]}];}return db[_0xb5fa('0xdf')][_0xb5fa('0x46')](_0x5c5311);})[_0xb5fa('0x13')](function(_0x4ecc46){_0x4a2840[_0xb5fa('0x47')]=_0x4ecc46;return _0x4a2840;});}})[_0xb5fa('0x13')](respondWithFilteredResult(_0x32aa58,_0x5c5311))[_0xb5fa('0x1d')](handleError(_0x32aa58,null));};exports[_0xb5fa('0xe0')]=function(_0x5026f4,_0x542ce9){var _0x7a96a8={};var _0x28e29b={};var _0x2be8f3;var _0x38a531;return db['User']['findOne']({'where':{'id':_0x5026f4[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x542ce9,null))[_0xb5fa('0x13')](function(_0x2ce1e0){if(_0x2ce1e0){_0x2be8f3=_0x2ce1e0;_0x28e29b[_0xb5fa('0x58')]=_['keys'](db[_0xb5fa('0xe1')][_0xb5fa('0x3a')]);_0x28e29b[_0xb5fa('0x41')]=_['keys'](_0x5026f4[_0xb5fa('0x41')]);_0x28e29b[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x28e29b[_0xb5fa('0x58')],_0x28e29b[_0xb5fa('0x41')]);_0x7a96a8[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x28e29b['model'],qs[_0xb5fa('0x59')](_0x5026f4['query'][_0xb5fa('0x59')]));_0x7a96a8[_0xb5fa('0x44')]=_0x7a96a8['attributes'][_0xb5fa('0x4a')]?_0x7a96a8[_0xb5fa('0x44')]:_0x28e29b[_0xb5fa('0x58')];_0x7a96a8['order']=qs[_0xb5fa('0xcc')](_0x5026f4[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x7a96a8[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x5026f4[_0xb5fa('0x41')],_0x28e29b['filters']));if(_0x5026f4['query'][_0xb5fa('0x3e')]){_0x7a96a8[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x7a96a8[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x7a96a8[_0xb5fa('0x44')],function(_0x260a2e){var _0x5c83c2={};_0x5c83c2[_0x260a2e]={'$like':'%'+_0x5026f4['query']['filter']+'%'};return _0x5c83c2;})});}_0x7a96a8=_['merge']({},_0x7a96a8,_0x5026f4[_0xb5fa('0x5b')]);return _0x2be8f3[_0xb5fa('0xe0')](_0x7a96a8);}})[_0xb5fa('0x13')](function(_0x159d2c){if(_0x159d2c){_0x38a531=_0x159d2c['length'];if(!_0x5026f4['query']['hasOwnProperty']('nolimit')){_0x7a96a8[_0xb5fa('0x24')]=qs['limit'](_0x5026f4[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0x7a96a8[_0xb5fa('0x22')]=qs['offset'](_0x5026f4[_0xb5fa('0x41')]['offset']);}return _0x2be8f3[_0xb5fa('0xe0')](_0x7a96a8);}})[_0xb5fa('0x13')](function(_0x4b7330){if(_0x4b7330){return _0x4b7330?{'count':_0x38a531,'rows':_0x4b7330}:null;}})['then'](respondWithResult(_0x542ce9,null))['catch'](handleError(_0x542ce9,null));};exports['getOpenchannelInteractions']=function(_0x36d242,_0x4cf135){var _0xdae94={};var _0x27b719={};var _0x55c63c;var _0x401997;return db[_0xb5fa('0x40')]['findOne']({'where':{'id':_0x36d242[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x4cf135,null))['then'](function(_0x56db90){if(_0x56db90){_0x55c63c=_0x56db90;_0x27b719[_0xb5fa('0x58')]=_[_0xb5fa('0x54')](db[_0xb5fa('0xe2')][_0xb5fa('0x3a')]);_0x27b719[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0x36d242[_0xb5fa('0x41')]);_0x27b719[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x27b719[_0xb5fa('0x58')],_0x27b719['query']);_0xdae94[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x27b719[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x36d242['query'][_0xb5fa('0x59')]));_0xdae94['attributes']=_0xdae94['attributes'][_0xb5fa('0x4a')]?_0xdae94['attributes']:_0x27b719[_0xb5fa('0x58')];_0xdae94[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x36d242[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0xdae94[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_['pick'](_0x36d242[_0xb5fa('0x41')],_0x27b719[_0xb5fa('0x56')]));if(_0x36d242[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0xdae94[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0xdae94[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0xdae94['attributes'],function(_0x5a18b1){var _0x258e2b={};_0x258e2b[_0x5a18b1]={'$like':'%'+_0x36d242[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x258e2b;})});}_0xdae94=_[_0xb5fa('0x5a')]({},_0xdae94,_0x36d242[_0xb5fa('0x5b')]);return _0x55c63c[_0xb5fa('0xe3')](_0xdae94);}})[_0xb5fa('0x13')](function(_0x380c30){if(_0x380c30){_0x401997=_0x380c30[_0xb5fa('0x4a')];if(!_0x36d242['query'][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0xdae94[_0xb5fa('0x24')]=qs[_0xb5fa('0x24')](_0x36d242['query'][_0xb5fa('0x24')]);_0xdae94[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x36d242[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x55c63c[_0xb5fa('0xe3')](_0xdae94);}})[_0xb5fa('0x13')](function(_0x2d9eba){if(_0x2d9eba){return _0x2d9eba?{'count':_0x401997,'rows':_0x2d9eba}:null;}})['then'](respondWithResult(_0x4cf135,null))[_0xb5fa('0x1d')](handleError(_0x4cf135,null));};exports[_0xb5fa('0xe4')]=function(_0x2772f4,_0x2527b8){var _0xe2d44={'raw':!![],'where':{}};var _0x247a8c={};var _0x3e385a={'count':0x0,'rows':[]};return db[_0xb5fa('0x40')]['findOne']({'where':{'id':_0x2772f4['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x2527b8,null))[_0xb5fa('0x13')](function(_0x4337db){if(_0x4337db){_0x247a8c['model']=_[_0xb5fa('0x54')](db[_0xb5fa('0xe5')]['rawAttributes']);_0x247a8c[_0xb5fa('0x41')]=_['keys'](_0x2772f4['query']);_0x247a8c[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x247a8c['model'],_0x247a8c[_0xb5fa('0x41')]);_0xe2d44[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x247a8c[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x2772f4['query'][_0xb5fa('0x59')]));_0xe2d44[_0xb5fa('0x44')]=_0xe2d44['attributes'][_0xb5fa('0x4a')]?_0xe2d44['attributes']:_0x247a8c['model'];if(!_0x2772f4[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0xe2d44[_0xb5fa('0x24')]=qs[_0xb5fa('0x24')](_0x2772f4[_0xb5fa('0x41')]['limit']);_0xe2d44[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x2772f4[_0xb5fa('0x41')][_0xb5fa('0x22')]);}_0xe2d44[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x2772f4[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0xe2d44[_0xb5fa('0xcd')]=qs['filters'](_[_0xb5fa('0xce')](_0x2772f4['query'],_0x247a8c[_0xb5fa('0x56')]));_0xe2d44[_0xb5fa('0xcd')]['UserId']=_0x4337db['id'];if(_0x2772f4[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0xe2d44[_0xb5fa('0xcd')]=_['merge'](_0xe2d44[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0xe2d44[_0xb5fa('0x44')],function(_0x4843f4){var _0x54d08c={};_0x54d08c[_0x4843f4]={'$like':'%'+_0x2772f4['query']['filter']+'%'};return _0x54d08c;})});}_0xe2d44=_[_0xb5fa('0x5a')]({},_0xe2d44,_0x2772f4[_0xb5fa('0x5b')]);return db[_0xb5fa('0xe5')][_0xb5fa('0x25')]({'where':_0xe2d44['where']})['then'](function(_0x4f9be0){_0x3e385a[_0xb5fa('0x25')]=_0x4f9be0;if(_0x2772f4['query']['includeAll']){_0xe2d44['include']=[{'all':!![]}];}return db['MailInteraction']['findAll'](_0xe2d44);})['then'](function(_0x3fb210){_0x3e385a['rows']=_0x3fb210;return _0x3e385a;});}})[_0xb5fa('0x13')](respondWithFilteredResult(_0x2527b8,_0xe2d44))[_0xb5fa('0x1d')](handleError(_0x2527b8,null));};exports[_0xb5fa('0xe6')]=function(_0xc99d35,_0x394de6){var _0x4763c0={};var _0x3a4984={};var _0x44c463;var _0xadffd7;return db['User'][_0xb5fa('0x94')]({'where':{'id':_0xc99d35['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x394de6,null))['then'](function(_0x32ca37){if(_0x32ca37){_0x44c463=_0x32ca37;_0x3a4984[_0xb5fa('0x58')]=_[_0xb5fa('0x54')](db['SmsInteraction'][_0xb5fa('0x3a')]);_0x3a4984['query']=_[_0xb5fa('0x54')](_0xc99d35[_0xb5fa('0x41')]);_0x3a4984[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x3a4984[_0xb5fa('0x58')],_0x3a4984['query']);_0x4763c0[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x3a4984[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0xc99d35[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x4763c0['attributes']=_0x4763c0[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x4763c0[_0xb5fa('0x44')]:_0x3a4984['model'];_0x4763c0[_0xb5fa('0xcb')]=qs['sort'](_0xc99d35[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x4763c0[_0xb5fa('0xcd')]=qs['filters'](_[_0xb5fa('0xce')](_0xc99d35['query'],_0x3a4984[_0xb5fa('0x56')]));if(_0xc99d35['query'][_0xb5fa('0x3e')]){_0x4763c0[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x4763c0['where'],{'$or':_[_0xb5fa('0x8a')](_0x4763c0[_0xb5fa('0x44')],function(_0x356603){var _0xe04d6b={};_0xe04d6b[_0x356603]={'$like':'%'+_0xc99d35[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0xe04d6b;})});}_0x4763c0=_['merge']({},_0x4763c0,_0xc99d35['options']);return _0x44c463['getSmsInteractions'](_0x4763c0);}})[_0xb5fa('0x13')](function(_0xc54f52){if(_0xc54f52){_0xadffd7=_0xc54f52[_0xb5fa('0x4a')];if(!_0xc99d35[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x4763c0[_0xb5fa('0x24')]=qs['limit'](_0xc99d35[_0xb5fa('0x41')]['limit']);_0x4763c0[_0xb5fa('0x22')]=qs['offset'](_0xc99d35[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x44c463['getSmsInteractions'](_0x4763c0);}})[_0xb5fa('0x13')](function(_0x496192){if(_0x496192){return _0x496192?{'count':_0xadffd7,'rows':_0x496192}:null;}})['then'](respondWithResult(_0x394de6,null))[_0xb5fa('0x1d')](handleError(_0x394de6,null));};exports[_0xb5fa('0xe7')]=function(_0x177186,_0x4645fc){var _0x261abd={};var _0x3643a5={};var _0x11c7a9;var _0x415e27;return db[_0xb5fa('0x40')]['findOne']({'where':{'id':_0x177186[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x4645fc,null))[_0xb5fa('0x13')](function(_0x3e4455){if(_0x3e4455){_0x11c7a9=_0x3e4455;_0x3643a5[_0xb5fa('0x58')]=_[_0xb5fa('0x54')](db[_0xb5fa('0xe8')]['rawAttributes']);_0x3643a5[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0x177186['query']);_0x3643a5[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x3643a5['model'],_0x3643a5['query']);_0x261abd['attributes']=_[_0xb5fa('0x57')](_0x3643a5[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x177186[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x261abd[_0xb5fa('0x44')]=_0x261abd[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x261abd[_0xb5fa('0x44')]:_0x3643a5['model'];_0x261abd[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x177186[_0xb5fa('0x41')]['sort']);_0x261abd['where']=qs['filters'](_[_0xb5fa('0xce')](_0x177186['query'],_0x3643a5[_0xb5fa('0x56')]));if(_0x177186[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0x261abd[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x261abd['where'],{'$or':_[_0xb5fa('0x8a')](_0x261abd[_0xb5fa('0x44')],function(_0x4c91d1){var _0x4d0125={};_0x4d0125[_0x4c91d1]={'$like':'%'+_0x177186[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x4d0125;})});}_0x261abd=_[_0xb5fa('0x5a')]({},_0x261abd,_0x177186[_0xb5fa('0x5b')]);return _0x11c7a9['getFaxInteractions'](_0x261abd);}})[_0xb5fa('0x13')](function(_0x2e64c6){if(_0x2e64c6){_0x415e27=_0x2e64c6[_0xb5fa('0x4a')];if(!_0x177186[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x261abd[_0xb5fa('0x24')]=qs[_0xb5fa('0x24')](_0x177186['query'][_0xb5fa('0x24')]);_0x261abd[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x177186['query'][_0xb5fa('0x22')]);}return _0x11c7a9[_0xb5fa('0xe7')](_0x261abd);}})['then'](function(_0x311fa2){if(_0x311fa2){return _0x311fa2?{'count':_0x415e27,'rows':_0x311fa2}:null;}})['then'](respondWithResult(_0x4645fc,null))['catch'](handleError(_0x4645fc,null));};exports[_0xb5fa('0xe9')]=function(_0x2c9234,_0x406b39){var _0x14cbbc={};var _0xe4c2a={};var _0x45606c;var _0xc42866;return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0x2c9234['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x406b39,null))['then'](function(_0x5c80b5){if(_0x5c80b5){_0x45606c=_0x5c80b5;_0xe4c2a[_0xb5fa('0x58')]=_[_0xb5fa('0x54')](db[_0xb5fa('0xea')][_0xb5fa('0x3a')]);_0xe4c2a['query']=_['keys'](_0x2c9234['query']);_0xe4c2a[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0xe4c2a['model'],_0xe4c2a[_0xb5fa('0x41')]);_0x14cbbc[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0xe4c2a[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x2c9234[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x14cbbc['attributes']=_0x14cbbc[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x14cbbc[_0xb5fa('0x44')]:_0xe4c2a['model'];_0x14cbbc['order']=qs['sort'](_0x2c9234[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x14cbbc[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x2c9234[_0xb5fa('0x41')],_0xe4c2a[_0xb5fa('0x56')]));if(_0x2c9234[_0xb5fa('0x41')]['filter']){_0x14cbbc[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x14cbbc[_0xb5fa('0xcd')],{'$or':_['map'](_0x14cbbc[_0xb5fa('0x44')],function(_0x3eaa0a){var _0x1e4aa4={};_0x1e4aa4[_0x3eaa0a]={'$like':'%'+_0x2c9234[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x1e4aa4;})});}_0x14cbbc=_[_0xb5fa('0x5a')]({},_0x14cbbc,_0x2c9234[_0xb5fa('0x5b')]);return _0x45606c[_0xb5fa('0xe9')](_0x14cbbc);}})[_0xb5fa('0x13')](function(_0x137470){if(_0x137470){_0xc42866=_0x137470[_0xb5fa('0x4a')];if(!_0x2c9234[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x14cbbc[_0xb5fa('0x24')]=qs[_0xb5fa('0x24')](_0x2c9234['query'][_0xb5fa('0x24')]);_0x14cbbc['offset']=qs[_0xb5fa('0x22')](_0x2c9234[_0xb5fa('0x41')]['offset']);}return _0x45606c[_0xb5fa('0xe9')](_0x14cbbc);}})[_0xb5fa('0x13')](function(_0x26a8a3){if(_0x26a8a3){return _0x26a8a3?{'count':_0xc42866,'rows':_0x26a8a3}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x406b39,null))[_0xb5fa('0x1d')](handleError(_0x406b39,null));};exports[_0xb5fa('0xeb')]=function(_0x5811e3,_0x51efbd,_0x4002e3){var _0x4dbd8d;var _0x4362e2;var _0x2b6750;var _0x55d674=!_['isNil'](_0x5811e3['params']['id'])?_0x5811e3['params']['id']:!_[_0xb5fa('0x66')](_0x5811e3['user']['id'])?_0x5811e3[_0xb5fa('0x2e')]['id']:null;return db['User'][_0xb5fa('0x34')]({'where':{'id':_0x55d674,'role':{'$or':[_0xb5fa('0x2c'),_0xb5fa('0x2e'),'agent']}},'attributes':['id',_0xb5fa('0x37'),_0xb5fa('0xec'),_0xb5fa('0xed'),'role','internal','loginInPause']})['then'](function(_0x335ed9){if(_0x335ed9){if(_0x335ed9[_0xb5fa('0x2b')]===_0xb5fa('0x30')){_0x4dbd8d=_0x335ed9;if(_0x5811e3[_0xb5fa('0x5d')][_0xb5fa('0x9e')]){_0x2b6750=util[_0xb5fa('0xab')](_0xb5fa('0xee'),_0x4dbd8d[_0x5811e3[_0xb5fa('0x5d')][_0xb5fa('0x9e')]]);}else if(_0x5811e3[_0xb5fa('0x5d')][_0xb5fa('0xef')]){_0x2b6750=util['format']('SIP/%s',_0x5811e3[_0xb5fa('0x5d')]['intrf']);}else{_0x2b6750=util[_0xb5fa('0xab')](_0xb5fa('0xac'),_0x4dbd8d[_0xb5fa('0x37')]);}socket['to'](util[_0xb5fa('0xab')](_0xb5fa('0xf0'),_0x4dbd8d[_0xb5fa('0x37')]))[_0xb5fa('0xa7')](_0xb5fa('0xf1'),{'user':{'id':_0x4dbd8d['id'],'name':_0x4dbd8d[_0xb5fa('0x37')]},'ip':_0x5811e3[_0xb5fa('0xf2')][_0xb5fa('0xf3')]||_0x5811e3[_0xb5fa('0xf4')][_0xb5fa('0xf5')]||_0x5811e3[_0xb5fa('0xf6')]['remoteAddress']||_0x5811e3[_0xb5fa('0xf4')]['socket'][_0xb5fa('0xf5')]});return db[_0xb5fa('0xad')]['destroy']({'where':{'membername':_0x4dbd8d[_0xb5fa('0x37')]},'individualHooks':!![]});}}else{throw new db[(_0xb5fa('0x8d'))][(_0xb5fa('0x90'))]('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0xb5fa('0x13')](function(){if(_0x4dbd8d){return _0x4dbd8d[_0xb5fa('0xf7')]({'raw':!![]});}})[_0xb5fa('0x13')](function(_0x31b579){if(_0x4dbd8d){var _0x42b136=[];if(_0x31b579){_0x4362e2=_0x31b579;if(_0x4362e2['length']){for(var _0x111579=0x0;_0x111579<_0x4362e2[_0xb5fa('0x4a')];_0x111579++){_0x42b136[_0xb5fa('0x45')]({'membername':_0x4dbd8d[_0xb5fa('0x37')],'UserId':_0x4dbd8d['id'],'queue_name':_0x4362e2[_0x111579][_0xb5fa('0x37')],'VoiceQueueId':_0x4362e2[_0x111579]['id'],'interface':_0x2b6750,'paused':_0x4dbd8d['loginInPause']||![],'penalty':_0x4362e2[_0x111579][_0xb5fa('0xf8')]||0x0});}return BPromise['each'](_0x42b136,function(_0x579f98){return db[_0xb5fa('0xad')][_0xb5fa('0xae')](_0x579f98);});}}}})[_0xb5fa('0x13')](function(){if(_0x4dbd8d){return db[_0xb5fa('0xf9')][_0xb5fa('0x46')]({'where':{'membername':_0x4dbd8d[_0xb5fa('0x37')],'exitAt':null}});}})[_0xb5fa('0x13')](function(_0x516b10){if(_0x4dbd8d){var _0x365731=[];_0x516b10[_0xb5fa('0xfa')](function(_0x1cccc4){_0x365731[_0xb5fa('0x45')](_0x1cccc4['update']({'exitAt':moment()[_0xb5fa('0xab')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xb5fa('0x51')](_0x365731);}})[_0xb5fa('0x13')](function(){if(_0x4dbd8d){var _0x4f6c9d=[];var _0x203221=[];var _0x516a11=utils['getChannels']();var _0x5d7212={'membername':_0x4dbd8d['name'],'interface':_0x2b6750,'enterAt':moment()[_0xb5fa('0xab')](_0xb5fa('0xfb')),'role':_0x4dbd8d[_0xb5fa('0x2b')],'internal':_0x4dbd8d[_0xb5fa('0x61')]};_0x516a11[_0xb5fa('0xfa')](function(_0x37d632){_0x4f6c9d[_0xb5fa('0x45')](_[_0xb5fa('0x5a')]({'channel':_0x37d632,'type':'LOGIN','data1':_0x5811e3[_0xb5fa('0x5d')][_0xb5fa('0xfc')],'data2':_0x2b6750},_0x5d7212));if(_0x4dbd8d[_0xb5fa('0x9d')]){_0x203221[_0xb5fa('0x45')](_['merge']({'channel':_0x37d632,'type':_0xb5fa('0xfd'),'data1':'LOGININPAUSE'},_0x5d7212));}});return db[_0xb5fa('0xf9')][_0xb5fa('0x84')](_0x4f6c9d[_0xb5fa('0xfe')](_0x203221),{'individualHooks':!![]});}})[_0xb5fa('0x13')](function(){if(_0x4dbd8d){return _0x4dbd8d[_0xb5fa('0x28')]({'online':!![],'lastLoginAt':moment()[_0xb5fa('0xab')](_0xb5fa('0xfb')),'voicePause':_0x4dbd8d[_0xb5fa('0x9d')]||![],'mailPause':_0x4dbd8d[_0xb5fa('0x9d')]||![],'chatPause':_0x4dbd8d['loginInPause']||![],'faxPause':_0x4dbd8d[_0xb5fa('0x9d')]||![],'smsPause':_0x4dbd8d['loginInPause']||![],'openchannelPause':_0x4dbd8d[_0xb5fa('0x9d')]||![],'whatsappPause':_0x4dbd8d['loginInPause']||![],'pauseType':_0x4dbd8d[_0xb5fa('0x9d')]?_0xb5fa('0xff'):null,'interface':_0x2b6750,'lastPauseAt':moment()[_0xb5fa('0xab')]('YYYY-MM-DD\x20HH:mm:ss')});}})['then'](function(_0xdbbc6c){if(_0x5811e3[_0xb5fa('0x100')]){return _0x4002e3();}else{return BPromise[_0xb5fa('0x101')](_0xdbbc6c)[_0xb5fa('0x13')](respondWithResult(_0x51efbd,null));}})[_0xb5fa('0x1d')](handleError(_0x51efbd,null));};exports[_0xb5fa('0x102')]=function(_0x4f4c83,_0x5cce20){var _0x16af16;return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x4f4c83[_0xb5fa('0x53')]['id'],'role':'agent'},'attributes':['id','name','role']})[_0xb5fa('0x13')](handleEntityNotFound(_0x5cce20,null))[_0xb5fa('0x13')](function(_0x189e02){if(_0x189e02){_0x16af16=_0x189e02;return db[_0xb5fa('0xad')]['destroy']({'where':{'membername':_0x16af16[_0xb5fa('0x37')]},'individualHooks':!![]});}})[_0xb5fa('0x13')](function(){return db[_0xb5fa('0xf9')][_0xb5fa('0x46')]({'where':{'membername':_0x16af16[_0xb5fa('0x37')],'exitAt':null}});})[_0xb5fa('0x13')](function(_0x5e1cfd){var _0x4b4dad=[];_0x5e1cfd[_0xb5fa('0xfa')](function(_0x31cc17){_0x4b4dad[_0xb5fa('0x45')](_0x31cc17[_0xb5fa('0x28')]({'exitAt':moment()[_0xb5fa('0xab')](_0xb5fa('0xfb'))}));});return BPromise['all'](_0x4b4dad);})[_0xb5fa('0x13')](function(){return _0x16af16[_0xb5fa('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xb5fa('0x13')](respondWithResult(_0x5cce20,null))[_0xb5fa('0x1d')](handleError(_0x5cce20,null));};exports[_0xb5fa('0x103')]=function(_0x1a6a2b,_0x113951){var _0x4cf503;return db[_0xb5fa('0xad')][_0xb5fa('0x28')]({'paused':0x1},{'where':{'UserId':_0x1a6a2b[_0xb5fa('0x53')]['id']},'individualHooks':!![]})['then'](function(){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x1a6a2b[_0xb5fa('0x53')]['id'],'role':_0xb5fa('0x30')},'attributes':['id',_0xb5fa('0x37'),_0xb5fa('0x2b'),_0xb5fa('0x61'),'interface']});})[_0xb5fa('0x13')](handleEntityNotFound(_0x113951,null))[_0xb5fa('0x13')](function(_0x3558f2){if(_0x3558f2){_0x4cf503=_0x3558f2;return respondWithRpcPromise('QueuePause',_0xb5fa('0x103'),{'id':_0x4cf503['id'],'name':_0x4cf503[_0xb5fa('0x37')],'pause':!![]});}})[_0xb5fa('0x13')](function(){if(_0x4cf503){return db[_0xb5fa('0xf9')]['findAll']({'where':{'membername':_0x4cf503[_0xb5fa('0x37')],'type':_0xb5fa('0xfd'),'exitAt':null}});}})[_0xb5fa('0x13')](function(_0x4da8c9){if(_0x4da8c9[_0xb5fa('0x4a')]){var _0x4ab495=moment()['format'](_0xb5fa('0xfb'));for(var _0x4987c6=0x0,_0xb16d49=_0x4da8c9[_0xb5fa('0x4a')];_0x4987c6<_0xb16d49;_0x4987c6++){_0x4da8c9[_0x4987c6][_0xb5fa('0x104')]({'exitAt':_0x4ab495});}}})['then'](function(){var _0x2caef9=[];var _0x4ea0ea=utils['getChannels']();_0x4ea0ea['forEach'](function(_0x5c7f05){_0x2caef9['push']({'channel':_0x5c7f05,'membername':_0x4cf503[_0xb5fa('0x37')],'interface':_[_0xb5fa('0x66')](_0x4cf503[_0xb5fa('0x9e')])?util[_0xb5fa('0xab')](_0xb5fa('0xac'),_0x4cf503[_0xb5fa('0x37')]):_0x4cf503[_0xb5fa('0x9e')],'type':'PAUSE','enterAt':moment()[_0xb5fa('0xab')](_0xb5fa('0xfb')),'data1':_0x1a6a2b[_0xb5fa('0x5d')]['type']||_0xb5fa('0x105'),'role':_0x4cf503[_0xb5fa('0x2b')],'internal':_0x4cf503[_0xb5fa('0x61')]});});return db[_0xb5fa('0xf9')][_0xb5fa('0x84')](_0x2caef9,{'individualHooks':!![]});})[_0xb5fa('0x13')](function(){return _0x4cf503['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x1a6a2b[_0xb5fa('0x5d')][_0xb5fa('0x3c')]||_0xb5fa('0x105'),'lastPauseAt':moment()['format'](_0xb5fa('0xfb'))});})[_0xb5fa('0x13')](respondWithResult(_0x113951,null))[_0xb5fa('0x1d')](handleError(_0x113951,null));};exports[_0xb5fa('0x106')]=function(_0x2bd9b5,_0x34f3a8){var _0xdde20e;return db['User'][_0xb5fa('0x34')]({'where':{'id':_0x2bd9b5[_0xb5fa('0x53')]['id']},'attributes':['id',_0xb5fa('0x37'),'role',_0xb5fa('0x107'),_0xb5fa('0x108'),_0xb5fa('0x109'),_0xb5fa('0x10a'),'openchannelPause','smsPause',_0xb5fa('0x10b'),'pauseType',_0xb5fa('0x10c')]})['then'](handleEntityNotFound(_0x34f3a8,null))[_0xb5fa('0x13')](function(_0x547540){if(_0x547540){_0xdde20e=_0x547540;if(_0x2bd9b5[_0xb5fa('0x5d')][_0xb5fa('0x9b')]&&!utils[_0xb5fa('0xaf')](_0x2bd9b5[_0xb5fa('0x5d')]['channel'])){throw new db[(_0xb5fa('0x8d'))][(_0xb5fa('0x90'))](_0xb5fa('0x9f'));}switch(_0x2bd9b5[_0xb5fa('0x5d')][_0xb5fa('0x9b')]){case _0xb5fa('0xa9'):return respondWithRpcPromise('QueuePause',_0xb5fa('0x106'),{'id':_0xdde20e['id'],'name':_0xdde20e[_0xb5fa('0x37')],'pause':![]})[_0xb5fa('0x13')](function(){return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0xdde20e['id']},'individualHooks':!![]});})[_0xb5fa('0x13')](function(){return db[_0xb5fa('0xf9')]['find']({'where':{'channel':_0x2bd9b5[_0xb5fa('0x5d')][_0xb5fa('0x9b')],'membername':_0xdde20e[_0xb5fa('0x37')],'type':_0xb5fa('0xfd'),'exitAt':null}});})[_0xb5fa('0x13')](function(_0x59ac41){if(_0x59ac41){return _0x59ac41[_0xb5fa('0x28')]({'exitAt':moment()[_0xb5fa('0xab')](_0xb5fa('0xfb')),'data2':'manual'},{'individualHooks':!![]});}return null;})['then'](function(){return _0xdde20e[_0xb5fa('0x28')]({'voicePause':![]});});case'mail':case _0xb5fa('0x4b'):case'fax':case _0xb5fa('0x5c'):case'whatsapp':case _0xb5fa('0x4f'):return db[_0xb5fa('0xf9')]['find']({'where':{'channel':_0x2bd9b5[_0xb5fa('0x5d')][_0xb5fa('0x9b')],'membername':_0xdde20e[_0xb5fa('0x37')],'type':_0xb5fa('0xfd'),'exitAt':null}})['then'](function(_0x17c9d1){if(_0x17c9d1){return _0x17c9d1[_0xb5fa('0x28')]({'exitAt':moment()[_0xb5fa('0xab')](_0xb5fa('0xfb')),'data2':_0xb5fa('0x10d')},{'individualHooks':!![]});}return null;})[_0xb5fa('0x13')](function(){var _0x4678db={};_['set'](_0x4678db,util[_0xb5fa('0xab')](_0xb5fa('0x10e'),_0x2bd9b5[_0xb5fa('0x5d')]['channel'],_0xb5fa('0x10f')),![]);return _0xdde20e['update'](_0x4678db);});default:return respondWithRpcPromise(_0xb5fa('0x110'),_0xb5fa('0x106'),{'id':_0xdde20e['id'],'name':_0xdde20e[_0xb5fa('0x37')],'pause':![]})['then'](function(){return db[_0xb5fa('0xad')][_0xb5fa('0x28')]({'paused':0x0},{'where':{'UserId':_0xdde20e['id']}});})[_0xb5fa('0x13')](function(){return db[_0xb5fa('0xf9')][_0xb5fa('0x46')]({'where':{'membername':_0xdde20e['name'],'type':_0xb5fa('0xfd'),'exitAt':null}});})['then'](function(_0x4174b0){var _0x73d119=[];_0x4174b0[_0xb5fa('0xfa')](function(_0x40bf30){_0x73d119[_0xb5fa('0x45')](_0x40bf30[_0xb5fa('0x28')]({'exitAt':moment()[_0xb5fa('0xab')](_0xb5fa('0xfb')),'data2':_0xb5fa('0x10d')}));});return BPromise[_0xb5fa('0x51')](_0x73d119);})[_0xb5fa('0x13')](function(){return _0xdde20e[_0xb5fa('0x28')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xb5fa('0x13')](respondWithResult(_0x34f3a8,null))[_0xb5fa('0x1d')](handleError(_0x34f3a8,null));};exports[_0xb5fa('0x111')]=function(_0x3b0269,_0x130638){var _0x4a9627={};var _0x41f26a={};var _0x19fa54;var _0x3568e4;return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0x3b0269['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x130638,null))[_0xb5fa('0x13')](function(_0x5a4389){if(_0x5a4389){_0x19fa54=_0x5a4389;_0x41f26a[_0xb5fa('0x58')]=_['keys'](db[_0xb5fa('0x112')][_0xb5fa('0x3a')]);_0x41f26a[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0x3b0269[_0xb5fa('0x41')]);_0x41f26a[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x41f26a[_0xb5fa('0x58')],_0x41f26a[_0xb5fa('0x41')]);_0x4a9627[_0xb5fa('0x44')]=_['intersection'](_0x41f26a[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x3b0269[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x4a9627[_0xb5fa('0x44')]=_0x4a9627['attributes'][_0xb5fa('0x4a')]?_0x4a9627[_0xb5fa('0x44')]:_0x41f26a[_0xb5fa('0x58')];_0x4a9627['order']=qs['sort'](_0x3b0269[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x4a9627[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x3b0269['query'],_0x41f26a[_0xb5fa('0x56')]));if(_0x3b0269['query'][_0xb5fa('0x3e')]){_0x4a9627[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x4a9627[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x4a9627[_0xb5fa('0x44')],function(_0x25d6ad){var _0x273020={};_0x273020[_0x25d6ad]={'$like':'%'+_0x3b0269['query'][_0xb5fa('0x3e')]+'%'};return _0x273020;})});}_0x4a9627=_[_0xb5fa('0x5a')]({},_0x4a9627,_0x3b0269['options']);return _0x19fa54[_0xb5fa('0x111')](_0x4a9627);}})[_0xb5fa('0x13')](function(_0x6e002a){if(_0x6e002a){_0x3568e4=_0x6e002a['length'];if(!_0x3b0269[_0xb5fa('0x41')][_0xb5fa('0xd0')]('nolimit')){_0x4a9627[_0xb5fa('0x24')]=qs[_0xb5fa('0x24')](_0x3b0269[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0x4a9627[_0xb5fa('0x22')]=qs['offset'](_0x3b0269[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x19fa54[_0xb5fa('0x111')](_0x4a9627);}})[_0xb5fa('0x13')](function(_0x359e64){if(_0x359e64){return _0x359e64?{'count':_0x3568e4,'rows':_0x359e64}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x130638,null))[_0xb5fa('0x1d')](handleError(_0x130638,null));};exports[_0xb5fa('0x113')]=function(_0x46f462,_0x406d35){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x46f462[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x406d35,null))['then'](function(_0x2b40b3){if(_0x2b40b3){var _0x274691=_0x2b40b3[_0xb5fa('0x2a')]({'plain':!![]});return _0x2b40b3[_0xb5fa('0x113')](_0x46f462[_0xb5fa('0x5d')][_0xb5fa('0xa5')],_[_0xb5fa('0x60')](_0x46f462[_0xb5fa('0x5d')],['ids','id'])||{})['then'](function(){for(var _0xcfe937=0x0;_0xcfe937<_0x46f462[_0xb5fa('0x5d')][_0xb5fa('0xa5')][_0xb5fa('0x4a')];_0xcfe937++){var _0x596e0a=[];var _0x1b8155={};db[_0xb5fa('0x112')][_0xb5fa('0x94')]({'where':{'id':_0x46f462[_0xb5fa('0x5d')]['ids'][_0xcfe937]}})[_0xb5fa('0x13')](function(_0x35f780){_0x1b8155=_0x35f780['dataValues'];_0x596e0a['push'](_0x35f780[_0xb5fa('0xf7')]()[_0xb5fa('0x13')](function(_0x28c2bc){for(var _0x34a639=0x0;_0x34a639<_0x28c2bc[_0xb5fa('0x4a')];_0x34a639++){_0x28c2bc[_0x34a639][_0xb5fa('0x114')]('channel',_0xb5fa('0x115'));}return _0x28c2bc;}));_0x596e0a['push'](_0x35f780['getChatQueues']()[_0xb5fa('0x13')](function(_0x314194){for(var _0x478df7=0x0;_0x478df7<_0x314194[_0xb5fa('0x4a')];_0x478df7++){_0x314194[_0x478df7][_0xb5fa('0x114')](_0xb5fa('0x9b'),'Chat');}return _0x314194;}));_0x596e0a[_0xb5fa('0x45')](_0x35f780[_0xb5fa('0x116')]()[_0xb5fa('0x13')](function(_0x4b5a3b){for(var _0x39b38b=0x0;_0x39b38b<_0x4b5a3b['length'];_0x39b38b++){_0x4b5a3b[_0x39b38b][_0xb5fa('0x114')](_0xb5fa('0x9b'),_0xb5fa('0x117'));}return _0x4b5a3b;}));_0x596e0a[_0xb5fa('0x45')](_0x35f780[_0xb5fa('0x118')]()[_0xb5fa('0x13')](function(_0x27a18f){for(var _0xc49af1=0x0;_0xc49af1<_0x27a18f[_0xb5fa('0x4a')];_0xc49af1++){_0x27a18f[_0xc49af1][_0xb5fa('0x114')](_0xb5fa('0x9b'),'Sms');}return _0x27a18f;}));_0x596e0a['push'](_0x35f780[_0xb5fa('0x119')]()[_0xb5fa('0x13')](function(_0xd5c215){for(var _0x3b6be9=0x0;_0x3b6be9<_0xd5c215['length'];_0x3b6be9++){_0xd5c215[_0x3b6be9]['setDataValue'](_0xb5fa('0x9b'),'Whatsapp');}return _0xd5c215;}));_0x596e0a[_0xb5fa('0x45')](_0x35f780[_0xb5fa('0x11a')]()[_0xb5fa('0x13')](function(_0x46e381){for(var _0x45544c=0x0;_0x45544c<_0x46e381[_0xb5fa('0x4a')];_0x45544c++){_0x46e381[_0x45544c]['setDataValue'](_0xb5fa('0x9b'),'Fax');}return _0x46e381;}));_0x596e0a[_0xb5fa('0x45')](_0x35f780[_0xb5fa('0x11b')]()['then'](function(_0x23309c){for(var _0xeb086b=0x0;_0xeb086b<_0x23309c['length'];_0xeb086b++){_0x23309c[_0xeb086b][_0xb5fa('0x114')](_0xb5fa('0x9b'),_0xb5fa('0x11c'));}return _0x23309c;}));return BPromise[_0xb5fa('0x51')](_0x596e0a);})[_0xb5fa('0x13')](function(_0x2a95bd){var _0x733073=_[_0xb5fa('0x11d')](_0x2a95bd);_0x596e0a=[];return db[_0xb5fa('0x68')][_0xb5fa('0x11e')](function(_0xa42fd){for(var _0x50b9f3=0x0;_0x50b9f3<_0x733073['length'];_0x50b9f3++){_0x596e0a[_0xb5fa('0x45')](_0x733073[_0x50b9f3]['addAgent'](_0x274691['id']),{'transaction':_0xa42fd});}return BPromise[_0xb5fa('0x51')](_0x596e0a)[_0xb5fa('0x13')](function(){if(_0x274691[_0xb5fa('0x9c')]){return BPromise[_0xb5fa('0x87')](_[_0xb5fa('0x3e')](_0x733073,function(_0x1c5309){return _0x1c5309[_0xb5fa('0x11f')](_0xb5fa('0x9b'))===_0xb5fa('0x115');}),function(_0x57b2df){return db['UserVoiceQueueRt'][_0xb5fa('0xae')]({'membername':_0x274691[_0xb5fa('0x37')],'UserId':_0x274691['id'],'queue_name':_0x57b2df['name'],'VoiceQueueId':_0x57b2df['id'],'interface':_[_0xb5fa('0x66')](_0x274691[_0xb5fa('0x9e')])?util[_0xb5fa('0xab')](_0xb5fa('0xac'),_0x274691[_0xb5fa('0x37')]):_0x274691[_0xb5fa('0x9e')],'paused':_0x274691[_0xb5fa('0x107')]||![],'penalty':_0x274691['penalty']},{'transaction':_0xa42fd});});}else{return;}})[_0xb5fa('0x13')](function(){for(var _0x566198=0x0;_0x566198<_0x733073[_0xb5fa('0x4a')];_0x566198++){var _0x435d1e=_0x733073[_0x566198][_0xb5fa('0x11f')](_0xb5fa('0x9b'));var _0x49f8fd=_0x435d1e+_0xb5fa('0xa6');socket[_0xb5fa('0xa7')](_0xb5fa('0x2e')+_0x435d1e+_0xb5fa('0xa8'),{'UserId':_0x274691['id'],['queueField']:_0x733073[_0x566198]['id']});}});});})[_0xb5fa('0x13')](function(){db[_0xb5fa('0x120')][_0xb5fa('0x94')]({'where':{'teamId':_0x1b8155['id']}})['then'](function(_0x1750ff){if(_0x1750ff){db[_0xb5fa('0x121')][_0xb5fa('0x7a')]({'UserId':_0x46f462[_0xb5fa('0x53')]['id'],'VoicePrefixId':_0x1750ff[_0xb5fa('0x122')]});}});});}});}})[_0xb5fa('0x13')](respondWithStatusCode(_0x406d35,null))[_0xb5fa('0x1d')](handleError(_0x406d35,null));};exports['removeTeams']=function(_0x177304,_0x4dab35){return db['User'][_0xb5fa('0x94')]({'where':{'id':_0x177304[_0xb5fa('0x53')]['id']}})['then'](handleEntityNotFound(_0x4dab35,null))[_0xb5fa('0x13')](function(_0x3f1012){if(_0x3f1012){var _0x54b2ed=_0x3f1012[_0xb5fa('0x2a')]({'plain':!![]});var _0x4d266c=_0x177304[_0xb5fa('0x41')][_0xb5fa('0xa5')];return _0x3f1012['removeTeams'](_0x4d266c)[_0xb5fa('0x13')](function(){for(var _0x375574=0x0;_0x375574<_0x4d266c['length'];_0x375574++){var _0xffd55=[];var _0x27870e={};db[_0xb5fa('0x112')]['findOne']({'where':{'id':_0x4d266c[_0x375574]}})[_0xb5fa('0x13')](function(_0x23bf45){_0x27870e=_0x23bf45[_0xb5fa('0x4c')];_0xffd55[_0xb5fa('0x45')](_0x23bf45['getVoiceQueues']()[_0xb5fa('0x13')](function(_0x3c0ed6){for(var _0xbe80ae=0x0;_0xbe80ae<_0x3c0ed6[_0xb5fa('0x4a')];_0xbe80ae++){_0x3c0ed6[_0xbe80ae]['setDataValue'](_0xb5fa('0x9b'),_0xb5fa('0x115'));}return _0x3c0ed6;}));_0xffd55[_0xb5fa('0x45')](_0x23bf45[_0xb5fa('0x123')]()[_0xb5fa('0x13')](function(_0x41c96f){for(var _0x4b7def=0x0;_0x4b7def<_0x41c96f['length'];_0x4b7def++){_0x41c96f[_0x4b7def][_0xb5fa('0x114')](_0xb5fa('0x9b'),_0xb5fa('0x124'));}return _0x41c96f;}));_0xffd55[_0xb5fa('0x45')](_0x23bf45[_0xb5fa('0x116')]()[_0xb5fa('0x13')](function(_0x1f6251){for(var _0x40c69e=0x0;_0x40c69e<_0x1f6251[_0xb5fa('0x4a')];_0x40c69e++){_0x1f6251[_0x40c69e][_0xb5fa('0x114')](_0xb5fa('0x9b'),'Mail');}return _0x1f6251;}));_0xffd55[_0xb5fa('0x45')](_0x23bf45['getSmsQueues']()[_0xb5fa('0x13')](function(_0xc8c6a6){for(var _0x930afe=0x0;_0x930afe<_0xc8c6a6['length'];_0x930afe++){_0xc8c6a6[_0x930afe]['setDataValue']('channel',_0xb5fa('0x125'));}return _0xc8c6a6;}));_0xffd55['push'](_0x23bf45[_0xb5fa('0x119')]()['then'](function(_0x503a79){for(var _0x46d03e=0x0;_0x46d03e<_0x503a79[_0xb5fa('0x4a')];_0x46d03e++){_0x503a79[_0x46d03e][_0xb5fa('0x114')]('channel',_0xb5fa('0x126'));}return _0x503a79;}));_0xffd55[_0xb5fa('0x45')](_0x23bf45[_0xb5fa('0x11a')]()[_0xb5fa('0x13')](function(_0x574d64){for(var _0x4b9318=0x0;_0x4b9318<_0x574d64[_0xb5fa('0x4a')];_0x4b9318++){_0x574d64[_0x4b9318]['setDataValue'](_0xb5fa('0x9b'),_0xb5fa('0x127'));}return _0x574d64;}));_0xffd55[_0xb5fa('0x45')](_0x23bf45[_0xb5fa('0x11b')]()[_0xb5fa('0x13')](function(_0x4327b5){for(var _0x2af23c=0x0;_0x2af23c<_0x4327b5['length'];_0x2af23c++){_0x4327b5[_0x2af23c]['setDataValue'](_0xb5fa('0x9b'),_0xb5fa('0x11c'));}return _0x4327b5;}));return BPromise[_0xb5fa('0x51')](_0xffd55);})[_0xb5fa('0x13')](function(_0x877452){var _0x1946e4=_[_0xb5fa('0x11d')](_0x877452);_0xffd55=[];return db[_0xb5fa('0x68')][_0xb5fa('0x11e')](function(_0x118b6c){for(var _0x1a70f6=0x0;_0x1a70f6<_0x1946e4['length'];_0x1a70f6++){_0xffd55[_0xb5fa('0x45')](_0x1946e4[_0x1a70f6][_0xb5fa('0x128')](_0x54b2ed['id']),{'transaction':_0x118b6c});}return BPromise['all'](_0xffd55)[_0xb5fa('0x13')](function(){if(_0x54b2ed['online']){return BPromise[_0xb5fa('0x87')](_[_0xb5fa('0x3e')](_0x1946e4,function(_0x4bb54e){return _0x4bb54e['getDataValue'](_0xb5fa('0x9b'))==='Voice';}),function(_0x4ff779){return db[_0xb5fa('0xad')]['destroy']({'where':{'VoiceQueueId':_0x4ff779['id'],'UserId':_0x54b2ed['id']},'transaction':_0x118b6c});});}else{return;}})[_0xb5fa('0x13')](function(){db[_0xb5fa('0x120')][_0xb5fa('0x94')]({'where':{'teamId':_0x27870e['id']}})[_0xb5fa('0x13')](function(_0x63e31e){if(_0x63e31e){return db[_0xb5fa('0x121')][_0xb5fa('0x29')]({'where':{'UserId':_0x54b2ed['id'],'VoicePrefixId':_0x63e31e[_0xb5fa('0x4c')]['VoicePrefixId']}});}});})[_0xb5fa('0x13')](function(){for(var _0x160b55=0x0;_0x160b55<_0x1946e4[_0xb5fa('0x4a')];_0x160b55++){var _0x510e8c=_0x1946e4[_0x160b55][_0xb5fa('0x11f')](_0xb5fa('0x9b'));var _0x3d25c7=_0x510e8c+_0xb5fa('0xa6');socket[_0xb5fa('0xa7')](_0xb5fa('0x2e')+_0x510e8c+'Queue:remove',{'UserId':_0x54b2ed['id'],['queueField']:_0x1946e4[_0x160b55]['id']});}});});});}});}})[_0xb5fa('0x13')](respondWithStatusCode(_0x4dab35,null))[_0xb5fa('0x1d')](handleError(_0x4dab35,null));};exports[_0xb5fa('0x129')]=function(_0x4e8117,_0x3a373e){var _0x4e94aa={};var _0x46140b={};var _0x28aee7;var _0x4b5623;return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0x4e8117[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x3a373e,null))[_0xb5fa('0x13')](function(_0x157a9e){if(_0x157a9e){_0x28aee7=_0x157a9e;_0x46140b[_0xb5fa('0x58')]=_[_0xb5fa('0x54')](db[_0xb5fa('0x12a')][_0xb5fa('0x3a')]);_0x46140b[_0xb5fa('0x41')]=_['keys'](_0x4e8117[_0xb5fa('0x41')]);_0x46140b[_0xb5fa('0x56')]=_['intersection'](_0x46140b[_0xb5fa('0x58')],_0x46140b[_0xb5fa('0x41')]);_0x4e94aa[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x46140b['model'],qs[_0xb5fa('0x59')](_0x4e8117[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x4e94aa[_0xb5fa('0x44')]=_0x4e94aa['attributes'][_0xb5fa('0x4a')]?_0x4e94aa[_0xb5fa('0x44')]:_0x46140b[_0xb5fa('0x58')];_0x4e94aa[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x4e8117['query'][_0xb5fa('0xcc')]);_0x4e94aa['where']=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x4e8117[_0xb5fa('0x41')],_0x46140b[_0xb5fa('0x56')]));if(_0x4e8117[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0x4e94aa[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x4e94aa[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x4e94aa['attributes'],function(_0x34e9e1){var _0x9157e5={};_0x9157e5[_0x34e9e1]={'$like':'%'+_0x4e8117['query'][_0xb5fa('0x3e')]+'%'};return _0x9157e5;})});}_0x4e94aa=_['merge']({},_0x4e94aa,_0x4e8117[_0xb5fa('0x5b')]);return _0x28aee7['getLists'](_0x4e94aa);}})[_0xb5fa('0x13')](function(_0x1d2757){if(_0x1d2757){_0x4b5623=_0x1d2757[_0xb5fa('0x4a')];if(!_0x4e8117[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x4e94aa['limit']=qs['limit'](_0x4e8117[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0x4e94aa[_0xb5fa('0x22')]=qs['offset'](_0x4e8117[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x28aee7[_0xb5fa('0x129')](_0x4e94aa);}})[_0xb5fa('0x13')](function(_0x1ff028){if(_0x1ff028){return _0x1ff028?{'count':_0x4b5623,'rows':_0x1ff028}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x3a373e,null))[_0xb5fa('0x1d')](handleError(_0x3a373e,null));};exports['getAgents']=function(_0xa54f50,_0x2f7e27){var _0xee6670={};var _0x5c6e45={};var _0x109673;var _0x542966;return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0xa54f50[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x2f7e27,null))[_0xb5fa('0x13')](function(_0x223c40){if(_0x223c40){_0x109673=_0x223c40;_0x5c6e45[_0xb5fa('0x58')]=_['keys'](db['User']['rawAttributes']);_0x5c6e45[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0xa54f50['query']);_0x5c6e45[_0xb5fa('0x56')]=_['intersection'](_0x5c6e45['model'],_0x5c6e45[_0xb5fa('0x41')]);_0xee6670[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x5c6e45[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0xa54f50[_0xb5fa('0x41')]['fields']));_0xee6670[_0xb5fa('0x44')]=_0xee6670[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0xee6670['attributes']:_0x5c6e45[_0xb5fa('0x58')];_0xee6670[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0xa54f50['query'][_0xb5fa('0xcc')]);_0xee6670[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0xa54f50[_0xb5fa('0x41')],_0x5c6e45['filters']));if(_0xa54f50['query'][_0xb5fa('0x3e')]){_0xee6670[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0xee6670[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0xee6670[_0xb5fa('0x44')],function(_0x1f97b7){var _0x2e0b55={};_0x2e0b55[_0x1f97b7]={'$like':'%'+_0xa54f50[_0xb5fa('0x41')]['filter']+'%'};return _0x2e0b55;})});}_0xee6670[_0xb5fa('0x58')]=db['User'];_0xee6670['as']=_0xb5fa('0x2f');_0xee6670=_['merge']({},_0xee6670,_0xa54f50[_0xb5fa('0x5b')]);return _0x109673['getVoiceQueues']({'include':[_0xee6670]});}})['then'](function(_0x22336){if(_0x22336){var _0x3da146={},_0x4df43b=[],_0x5adc35=0x0;for(var _0x1a24a0=0x0;_0x1a24a0<_0x22336[_0xb5fa('0x4a')];_0x1a24a0+=0x1){for(var _0x3e5e6d=0x0,_0x2bf57e;_0x3e5e6d<_0x22336[_0x1a24a0][_0xb5fa('0x2f')][_0xb5fa('0x4a')];_0x3e5e6d+=0x1){_0x2bf57e=_0x22336[_0x1a24a0][_0xb5fa('0x2f')][_0x3e5e6d][_0xb5fa('0x2a')]({'plain':!![]});_0x3da146[_0x2bf57e['id']]=_0x2bf57e;}}_0x3da146=_[_0xb5fa('0x12b')](_0x3da146);for(var _0xe43d8d=qs['offset'](_0xa54f50[_0xb5fa('0x41')]['offset']);_0xe43d8d<_0x3da146[_0xb5fa('0x4a')]&&_0x4df43b['length']<qs[_0xb5fa('0x24')](_0xa54f50[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0xe43d8d+=0x1){if(_0x3da146[_0xe43d8d]){_0x4df43b[_0xb5fa('0x45')](_0x3da146[_0xe43d8d]);}}return{'count':_0x3da146[_0xb5fa('0x4a')],'rows':_0x4df43b};}})[_0xb5fa('0x13')](respondWithResult(_0x2f7e27,null))[_0xb5fa('0x1d')](handleError(_0x2f7e27,null));};exports[_0xb5fa('0x29')]=function(_0x5019df,_0xa66819){if(_0x5019df[_0xb5fa('0x2e')]['id']==_0x5019df['params']['id']){return _0xa66819[_0xb5fa('0x20')](0x1f4)['send']({'message':_0xb5fa('0x12c')});}return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x5019df[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0xa66819,null))[_0xb5fa('0x13')](removeEntity(_0xa66819,null))[_0xb5fa('0x1d')](handleError(_0xa66819,null));};exports['addChatInteractions']=function(_0x8da9c2,_0x36bef0){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x8da9c2['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x36bef0,null))[_0xb5fa('0x13')](function(_0xe5ef8a){if(_0xe5ef8a){return _0xe5ef8a[_0xb5fa('0x12d')](_0x8da9c2[_0xb5fa('0x5d')][_0xb5fa('0xa5')],_[_0xb5fa('0x60')](_0x8da9c2[_0xb5fa('0x5d')],[_0xb5fa('0xa5'),'id'])||{})[_0xb5fa('0x12e')](function(){for(var _0x2dbcb2=0x0;_0x2dbcb2<_0x8da9c2['body'][_0xb5fa('0xa5')]['length'];_0x2dbcb2+=0x1){socket[_0xb5fa('0xa7')](_0xb5fa('0x12f'),{'ChatInteractionId':Number(_0x8da9c2['body']['ids'][_0x2dbcb2]),'UserId':Number(_0x8da9c2[_0xb5fa('0x53')]['id'])});}return _0x8da9c2[_0xb5fa('0x5d')][_0xb5fa('0xa5')];});}})['then'](respondWithResult(_0x36bef0,null))[_0xb5fa('0x1d')](handleError(_0x36bef0,null));};exports[_0xb5fa('0x130')]=function(_0x2bfa55,_0x4bae11){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x2bfa55[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x4bae11,null))['then'](function(_0x195287){if(_0x195287){return _0x195287[_0xb5fa('0x130')](_0x2bfa55[_0xb5fa('0x41')][_0xb5fa('0xa5')])[_0xb5fa('0x13')](function(){if(_[_0xb5fa('0xb1')](_0x2bfa55[_0xb5fa('0x41')]['ids'])){for(var _0x2fd20e=0x0;_0x2fd20e<_0x2bfa55[_0xb5fa('0x41')]['ids'][_0xb5fa('0x4a')];_0x2fd20e+=0x1){socket[_0xb5fa('0xa7')](_0xb5fa('0x131'),{'ChatInteractionId':Number(_0x2bfa55['query'][_0xb5fa('0xa5')][_0x2fd20e]),'UserId':Number(_0x2bfa55[_0xb5fa('0x53')]['id'])});}}else{socket[_0xb5fa('0xa7')](_0xb5fa('0x131'),{'ChatInteractionId':Number(_0x2bfa55[_0xb5fa('0x41')][_0xb5fa('0xa5')]),'UserId':Number(_0x2bfa55[_0xb5fa('0x53')]['id'])});}});}})[_0xb5fa('0x13')](respondWithStatusCode(_0x4bae11,null))[_0xb5fa('0x1d')](handleError(_0x4bae11,null));};exports[_0xb5fa('0x132')]=function(_0x36a0d0,_0xd527db){return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x36a0d0[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0xd527db,null))[_0xb5fa('0x13')](function(_0x1b9631){if(_0x1b9631){return _0x1b9631[_0xb5fa('0x132')](_0x36a0d0[_0xb5fa('0x5d')][_0xb5fa('0xa5')],_[_0xb5fa('0x60')](_0x36a0d0['body'],['ids','id'])||{})[_0xb5fa('0x12e')](function(){for(var _0x5707fa=0x0;_0x5707fa<_0x36a0d0[_0xb5fa('0x5d')]['ids'][_0xb5fa('0x4a')];_0x5707fa+=0x1){socket[_0xb5fa('0xa7')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x36a0d0[_0xb5fa('0x5d')][_0xb5fa('0xa5')][_0x5707fa]),'UserId':Number(_0x36a0d0[_0xb5fa('0x53')]['id'])});}return _0x36a0d0[_0xb5fa('0x5d')][_0xb5fa('0xa5')];});}})['then'](respondWithResult(_0xd527db,null))[_0xb5fa('0x1d')](handleError(_0xd527db,null));};exports['removeMailInteractions']=function(_0x102492,_0x2f0271){return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x102492['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x2f0271,null))['then'](function(_0x1972a3){if(_0x1972a3){return _0x1972a3[_0xb5fa('0x133')](_0x102492[_0xb5fa('0x41')][_0xb5fa('0xa5')])[_0xb5fa('0x13')](function(){if(_[_0xb5fa('0xb1')](_0x102492[_0xb5fa('0x41')]['ids'])){for(var _0x39b096=0x0;_0x39b096<_0x102492[_0xb5fa('0x41')][_0xb5fa('0xa5')][_0xb5fa('0x4a')];_0x39b096+=0x1){socket[_0xb5fa('0xa7')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x102492[_0xb5fa('0x41')][_0xb5fa('0xa5')][_0x39b096]),'UserId':Number(_0x102492[_0xb5fa('0x53')]['id'])});}}else{socket['emit'](_0xb5fa('0x134'),{'MailInteractionId':Number(_0x102492[_0xb5fa('0x41')][_0xb5fa('0xa5')]),'UserId':Number(_0x102492['params']['id'])});}});}})['then'](respondWithStatusCode(_0x2f0271,null))[_0xb5fa('0x1d')](handleError(_0x2f0271,null));};exports[_0xb5fa('0x135')]=function(_0x2cf1c0,_0x3bdd6c){return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x2cf1c0[_0xb5fa('0x53')]['id']}})['then'](handleEntityNotFound(_0x3bdd6c,null))[_0xb5fa('0x13')](function(_0x2d1cdb){if(_0x2d1cdb){return _0x2d1cdb['addFaxInteractions'](_0x2cf1c0[_0xb5fa('0x5d')][_0xb5fa('0xa5')],_[_0xb5fa('0x60')](_0x2cf1c0['body'],[_0xb5fa('0xa5'),'id'])||{})[_0xb5fa('0x12e')](function(){for(var _0x567fc3=0x0;_0x567fc3<_0x2cf1c0[_0xb5fa('0x5d')]['ids'][_0xb5fa('0x4a')];_0x567fc3+=0x1){socket[_0xb5fa('0xa7')](_0xb5fa('0x136'),{'FaxInteractionId':Number(_0x2cf1c0[_0xb5fa('0x5d')]['ids'][_0x567fc3]),'UserId':Number(_0x2cf1c0[_0xb5fa('0x53')]['id'])});}return _0x2cf1c0['body'][_0xb5fa('0xa5')];});}})[_0xb5fa('0x13')](respondWithResult(_0x3bdd6c,null))[_0xb5fa('0x1d')](handleError(_0x3bdd6c,null));};exports[_0xb5fa('0x137')]=function(_0x2bcfcb,_0x12febc){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x2bcfcb['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x12febc,null))['then'](function(_0x2c0d76){if(_0x2c0d76){return _0x2c0d76[_0xb5fa('0x137')](_0x2bcfcb['query'][_0xb5fa('0xa5')])[_0xb5fa('0x13')](function(){if(_[_0xb5fa('0xb1')](_0x2bcfcb[_0xb5fa('0x41')]['ids'])){for(var _0x387cc1=0x0;_0x387cc1<_0x2bcfcb[_0xb5fa('0x41')][_0xb5fa('0xa5')][_0xb5fa('0x4a')];_0x387cc1+=0x1){socket[_0xb5fa('0xa7')](_0xb5fa('0x138'),{'FaxInteractionId':Number(_0x2bcfcb[_0xb5fa('0x41')][_0xb5fa('0xa5')][_0x387cc1]),'UserId':Number(_0x2bcfcb[_0xb5fa('0x53')]['id'])});}}else{socket[_0xb5fa('0xa7')](_0xb5fa('0x138'),{'FaxInteractionId':Number(_0x2bcfcb[_0xb5fa('0x41')][_0xb5fa('0xa5')]),'UserId':Number(_0x2bcfcb[_0xb5fa('0x53')]['id'])});}});}})[_0xb5fa('0x13')](respondWithStatusCode(_0x12febc,null))[_0xb5fa('0x1d')](handleError(_0x12febc,null));};exports['addSmsInteractions']=function(_0x53b3d0,_0xf8a4b8){return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x53b3d0['params']['id']}})['then'](handleEntityNotFound(_0xf8a4b8,null))[_0xb5fa('0x13')](function(_0x557573){if(_0x557573){return _0x557573[_0xb5fa('0x139')](_0x53b3d0['body']['ids'],_[_0xb5fa('0x60')](_0x53b3d0[_0xb5fa('0x5d')],[_0xb5fa('0xa5'),'id'])||{})[_0xb5fa('0x12e')](function(){for(var _0x52b82a=0x0;_0x52b82a<_0x53b3d0[_0xb5fa('0x5d')][_0xb5fa('0xa5')][_0xb5fa('0x4a')];_0x52b82a+=0x1){socket['emit'](_0xb5fa('0x13a'),{'SmsInteractionId':Number(_0x53b3d0[_0xb5fa('0x5d')][_0xb5fa('0xa5')][_0x52b82a]),'UserId':Number(_0x53b3d0[_0xb5fa('0x53')]['id'])});}return _0x53b3d0[_0xb5fa('0x5d')][_0xb5fa('0xa5')];});}})['then'](respondWithResult(_0xf8a4b8,null))[_0xb5fa('0x1d')](handleError(_0xf8a4b8,null));};exports[_0xb5fa('0x13b')]=function(_0x564e08,_0x29383c){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x564e08['params']['id']}})['then'](handleEntityNotFound(_0x29383c,null))[_0xb5fa('0x13')](function(_0x453939){if(_0x453939){return _0x453939[_0xb5fa('0x13b')](_0x564e08['query'][_0xb5fa('0xa5')])[_0xb5fa('0x13')](function(){if(_[_0xb5fa('0xb1')](_0x564e08[_0xb5fa('0x41')][_0xb5fa('0xa5')])){for(var _0x34ff59=0x0;_0x34ff59<_0x564e08[_0xb5fa('0x41')]['ids'][_0xb5fa('0x4a')];_0x34ff59+=0x1){socket[_0xb5fa('0xa7')](_0xb5fa('0x13c'),{'SmsInteractionId':Number(_0x564e08[_0xb5fa('0x41')]['ids'][_0x34ff59]),'UserId':Number(_0x564e08[_0xb5fa('0x53')]['id'])});}}else{socket['emit'](_0xb5fa('0x13c'),{'SmsInteractionId':Number(_0x564e08[_0xb5fa('0x41')][_0xb5fa('0xa5')]),'UserId':Number(_0x564e08[_0xb5fa('0x53')]['id'])});}});}})[_0xb5fa('0x13')](respondWithStatusCode(_0x29383c,null))[_0xb5fa('0x1d')](handleError(_0x29383c,null));};exports[_0xb5fa('0x13d')]=function(_0x2f1542,_0x3f6b17){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x2f1542[_0xb5fa('0x53')]['id']}})['then'](handleEntityNotFound(_0x3f6b17,null))[_0xb5fa('0x13')](function(_0x38bfbf){if(_0x38bfbf){return _0x38bfbf['addOpenchannelInteractions'](_0x2f1542['body'][_0xb5fa('0xa5')],_[_0xb5fa('0x60')](_0x2f1542['body'],[_0xb5fa('0xa5'),'id'])||{})[_0xb5fa('0x12e')](function(){for(var _0x1a5e7b=0x0;_0x1a5e7b<_0x2f1542[_0xb5fa('0x5d')]['ids'][_0xb5fa('0x4a')];_0x1a5e7b+=0x1){socket[_0xb5fa('0xa7')](_0xb5fa('0x13e'),{'OpenchannelInteractionId':Number(_0x2f1542[_0xb5fa('0x5d')]['ids'][_0x1a5e7b]),'UserId':Number(_0x2f1542[_0xb5fa('0x53')]['id'])});}return _0x2f1542[_0xb5fa('0x5d')]['ids'];});}})[_0xb5fa('0x13')](respondWithResult(_0x3f6b17,null))[_0xb5fa('0x1d')](handleError(_0x3f6b17,null));};exports[_0xb5fa('0x13f')]=function(_0xd35395,_0xdcae52){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0xd35395[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0xdcae52,null))[_0xb5fa('0x13')](function(_0x1e2a59){if(_0x1e2a59){return _0x1e2a59[_0xb5fa('0x13f')](_0xd35395[_0xb5fa('0x41')][_0xb5fa('0xa5')])[_0xb5fa('0x13')](function(){if(_[_0xb5fa('0xb1')](_0xd35395[_0xb5fa('0x41')][_0xb5fa('0xa5')])){for(var _0x2f52e6=0x0;_0x2f52e6<_0xd35395[_0xb5fa('0x41')][_0xb5fa('0xa5')][_0xb5fa('0x4a')];_0x2f52e6+=0x1){socket[_0xb5fa('0xa7')](_0xb5fa('0x140'),{'OpenchannelInteractionId':Number(_0xd35395[_0xb5fa('0x41')][_0xb5fa('0xa5')][_0x2f52e6]),'UserId':Number(_0xd35395['params']['id'])});}}else{socket[_0xb5fa('0xa7')](_0xb5fa('0x140'),{'OpenchannelInteractionId':Number(_0xd35395['query']['ids']),'UserId':Number(_0xd35395[_0xb5fa('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0xdcae52,null))['catch'](handleError(_0xdcae52,null));};exports[_0xb5fa('0x141')]=function(_0x4dc1ee,_0x2a4774){return db['User'][_0xb5fa('0x34')]({'where':{'id':_0x4dc1ee[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x2a4774,null))[_0xb5fa('0x13')](function(_0xec9fe9){if(_0xec9fe9){return _0xec9fe9[_0xb5fa('0x141')](_0x4dc1ee[_0xb5fa('0x5d')][_0xb5fa('0xa5')],_['omit'](_0x4dc1ee[_0xb5fa('0x5d')],[_0xb5fa('0xa5'),'id'])||{})[_0xb5fa('0x12e')](function(){for(var _0x18d90a=0x0;_0x18d90a<_0x4dc1ee['body'][_0xb5fa('0xa5')][_0xb5fa('0x4a')];_0x18d90a+=0x1){socket['emit'](_0xb5fa('0x142'),{'WhatsappInteractionId':Number(_0x4dc1ee[_0xb5fa('0x5d')]['ids'][_0x18d90a]),'UserId':Number(_0x4dc1ee[_0xb5fa('0x53')]['id'])});}return _0x4dc1ee[_0xb5fa('0x5d')][_0xb5fa('0xa5')];});}})[_0xb5fa('0x13')](respondWithResult(_0x2a4774,null))['catch'](handleError(_0x2a4774,null));};exports['removeWhatsappInteractions']=function(_0x3cc2ba,_0x56d0ee){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x3cc2ba['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x56d0ee,null))[_0xb5fa('0x13')](function(_0x3b25b7){if(_0x3b25b7){return _0x3b25b7[_0xb5fa('0x143')](_0x3cc2ba[_0xb5fa('0x41')]['ids']);}})[_0xb5fa('0x13')](respondWithStatusCode(_0x56d0ee,null))[_0xb5fa('0x1d')](handleError(_0x56d0ee,null));};exports['getVoicePrefixes']=function(_0x1a50bc,_0x44ff48){var _0xb724d6={};var _0x3258a6={};var _0x44d313;var _0x20cfb1;return db[_0xb5fa('0x40')]['findOne']({'where':{'id':_0x1a50bc[_0xb5fa('0x53')]['id']}})['then'](handleEntityNotFound(_0x44ff48,null))[_0xb5fa('0x13')](function(_0x172c7d){if(_0x172c7d){_0x44d313=_0x172c7d;_0x3258a6['model']=_[_0xb5fa('0x54')](db['VoicePrefix']['rawAttributes']);_0x3258a6['query']=_[_0xb5fa('0x54')](_0x1a50bc[_0xb5fa('0x41')]);_0x3258a6['filters']=_[_0xb5fa('0x57')](_0x3258a6[_0xb5fa('0x58')],_0x3258a6[_0xb5fa('0x41')]);_0xb724d6[_0xb5fa('0x44')]=_['intersection'](_0x3258a6[_0xb5fa('0x58')],qs['fields'](_0x1a50bc[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0xb724d6[_0xb5fa('0x44')]=_0xb724d6['attributes'][_0xb5fa('0x4a')]?_0xb724d6[_0xb5fa('0x44')]:_0x3258a6[_0xb5fa('0x58')];_0xb724d6['order']=qs[_0xb5fa('0xcc')](_0x1a50bc[_0xb5fa('0x41')]['sort']);_0xb724d6['where']=qs['filters'](_['pick'](_0x1a50bc['query'],_0x3258a6['filters']));if(_0x1a50bc[_0xb5fa('0x41')]['filter']){_0xb724d6[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0xb724d6[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0xb724d6[_0xb5fa('0x44')],function(_0x3dc3a9){var _0x38dd99={};_0x38dd99[_0x3dc3a9]={'$like':'%'+_0x1a50bc[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x38dd99;})});}_0xb724d6=_[_0xb5fa('0x5a')]({},_0xb724d6,_0x1a50bc[_0xb5fa('0x5b')]);return _0x44d313[_0xb5fa('0x144')](_0xb724d6);}})[_0xb5fa('0x13')](function(_0x2d82bc){if(_0x2d82bc){_0x20cfb1=_0x2d82bc[_0xb5fa('0x4a')];if(!_0x1a50bc[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0xb724d6['limit']=qs[_0xb5fa('0x24')](_0x1a50bc[_0xb5fa('0x41')]['limit']);_0xb724d6[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x1a50bc[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x44d313['getVoicePrefixes'](_0xb724d6);}})[_0xb5fa('0x13')](function(_0x302525){if(_0x302525){return _0x302525?{'count':_0x20cfb1,'rows':_0x302525}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x44ff48,null))['catch'](handleError(_0x44ff48,null));};exports[_0xb5fa('0x145')]=function(_0x1f1c28,_0x578e7e){var _0x234a1d={};var _0xaefe47={};var _0x3d321f;var _0x42ca87;return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0x1f1c28[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x578e7e,null))[_0xb5fa('0x13')](function(_0x5bc00a){if(_0x5bc00a){_0x3d321f=_0x5bc00a;_0xaefe47['model']=_[_0xb5fa('0x54')](db[_0xb5fa('0x146')][_0xb5fa('0x3a')]);_0xaefe47[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0x1f1c28[_0xb5fa('0x41')]);_0xaefe47[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0xaefe47[_0xb5fa('0x58')],_0xaefe47[_0xb5fa('0x41')]);_0x234a1d[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0xaefe47[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x1f1c28['query'][_0xb5fa('0x59')]));_0x234a1d['attributes']=_0x234a1d[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x234a1d[_0xb5fa('0x44')]:_0xaefe47['model'];_0x234a1d[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x1f1c28['query'][_0xb5fa('0xcc')]);_0x234a1d[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_['pick'](_0x1f1c28[_0xb5fa('0x41')],_0xaefe47[_0xb5fa('0x56')]));if(_0x1f1c28[_0xb5fa('0x41')]['filter']){_0x234a1d[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x234a1d[_0xb5fa('0xcd')],{'$or':_['map'](_0x234a1d['attributes'],function(_0x3cfe67){var _0x2feebb={};_0x2feebb[_0x3cfe67]={'$like':'%'+_0x1f1c28[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x2feebb;})});}_0x234a1d=_['merge']({},_0x234a1d,_0x1f1c28[_0xb5fa('0x5b')]);return _0x3d321f[_0xb5fa('0x145')](_0x234a1d);}})[_0xb5fa('0x13')](function(_0x471c05){if(_0x471c05){_0x42ca87=_0x471c05[_0xb5fa('0x4a')];if(!_0x1f1c28['query'][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x234a1d[_0xb5fa('0x24')]=qs['limit'](_0x1f1c28['query'][_0xb5fa('0x24')]);_0x234a1d['offset']=qs[_0xb5fa('0x22')](_0x1f1c28[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x3d321f[_0xb5fa('0x145')](_0x234a1d);}})[_0xb5fa('0x13')](function(_0x2b2f31){if(_0x2b2f31){return _0x2b2f31?{'count':_0x42ca87,'rows':_0x2b2f31}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x578e7e,null))[_0xb5fa('0x1d')](handleError(_0x578e7e,null));};exports[_0xb5fa('0x147')]=function(_0x3b0a48,_0xe6a7da){return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x3b0a48[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0xe6a7da,null))[_0xb5fa('0x13')](function(_0x2784a2){if(_0x2784a2){return _0x2784a2['addFaxAccounts'](_0x3b0a48['body'][_0xb5fa('0xa5')],_[_0xb5fa('0x60')](_0x3b0a48[_0xb5fa('0x5d')],[_0xb5fa('0xa5'),'id'])||{});}})[_0xb5fa('0x13')](respondWithResult(_0xe6a7da,null))[_0xb5fa('0x1d')](handleError(_0xe6a7da,null));};exports[_0xb5fa('0x148')]=function(_0x4a305a,_0x445c65){return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x4a305a[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x445c65,null))['then'](function(_0x37ebb5){if(_0x37ebb5){return _0x37ebb5['removeFaxAccounts'](_0x4a305a[_0xb5fa('0x41')][_0xb5fa('0xa5')]);}})[_0xb5fa('0x13')](respondWithStatusCode(_0x445c65,null))[_0xb5fa('0x1d')](handleError(_0x445c65,null));};exports[_0xb5fa('0x149')]=function(_0xae3c6f,_0x174896){var _0x5aa34b={};var _0xe3cc0d={};var _0x45711d;var _0x5c0f8d;return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0xae3c6f['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x174896,null))[_0xb5fa('0x13')](function(_0x2f475f){if(_0x2f475f){_0x45711d=_0x2f475f;_0xe3cc0d[_0xb5fa('0x58')]=_[_0xb5fa('0x54')](db['MailAccount']['rawAttributes']);_0xe3cc0d['query']=_[_0xb5fa('0x54')](_0xae3c6f[_0xb5fa('0x41')]);_0xe3cc0d['filters']=_[_0xb5fa('0x57')](_0xe3cc0d[_0xb5fa('0x58')],_0xe3cc0d['query']);_0x5aa34b['attributes']=_[_0xb5fa('0x57')](_0xe3cc0d[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0xae3c6f[_0xb5fa('0x41')]['fields']));_0x5aa34b[_0xb5fa('0x44')]=_0x5aa34b[_0xb5fa('0x44')]['length']?_0x5aa34b[_0xb5fa('0x44')]:_0xe3cc0d['model'];_0x5aa34b[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0xae3c6f[_0xb5fa('0x41')]['sort']);_0x5aa34b[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_['pick'](_0xae3c6f[_0xb5fa('0x41')],_0xe3cc0d[_0xb5fa('0x56')]));if(_0xae3c6f[_0xb5fa('0x41')]['filter']){_0x5aa34b[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x5aa34b[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x5aa34b[_0xb5fa('0x44')],function(_0x3b9c17){var _0x38fe09={};_0x38fe09[_0x3b9c17]={'$like':'%'+_0xae3c6f[_0xb5fa('0x41')]['filter']+'%'};return _0x38fe09;})});}_0x5aa34b=_[_0xb5fa('0x5a')]({},_0x5aa34b,_0xae3c6f[_0xb5fa('0x5b')]);return _0x45711d[_0xb5fa('0x149')](_0x5aa34b);}})[_0xb5fa('0x13')](function(_0x1966e2){if(_0x1966e2){_0x5c0f8d=_0x1966e2[_0xb5fa('0x4a')];if(!_0xae3c6f['query'][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x5aa34b[_0xb5fa('0x24')]=qs['limit'](_0xae3c6f[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0x5aa34b[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0xae3c6f[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x45711d['getMailAccounts'](_0x5aa34b);}})[_0xb5fa('0x13')](function(_0xf03006){if(_0xf03006){return _0xf03006?{'count':_0x5c0f8d,'rows':_0xf03006}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x174896,null))[_0xb5fa('0x1d')](handleError(_0x174896,null));};exports[_0xb5fa('0x14a')]=function(_0x422c81,_0x414285){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x422c81['params']['id']}})['then'](handleEntityNotFound(_0x414285,null))['then'](function(_0x1b912f){if(_0x1b912f){return _0x1b912f[_0xb5fa('0x14a')](_0x422c81[_0xb5fa('0x5d')][_0xb5fa('0xa5')],_[_0xb5fa('0x60')](_0x422c81[_0xb5fa('0x5d')],[_0xb5fa('0xa5'),'id'])||{});}})['then'](respondWithResult(_0x414285,null))[_0xb5fa('0x1d')](handleError(_0x414285,null));};exports['removeMailAccounts']=function(_0x463084,_0x1c4408){return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x463084[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x1c4408,null))[_0xb5fa('0x13')](function(_0x40ae6b){if(_0x40ae6b){return _0x40ae6b[_0xb5fa('0x14b')](_0x463084[_0xb5fa('0x41')][_0xb5fa('0xa5')]);}})['then'](respondWithStatusCode(_0x1c4408,null))[_0xb5fa('0x1d')](handleError(_0x1c4408,null));};exports[_0xb5fa('0x14c')]=function(_0x187535,_0x4c18f7){var _0x5900ed={};var _0x2588c9={};var _0x4d1ad6;var _0x32ee5d;return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0x187535[_0xb5fa('0x53')]['id']}})['then'](handleEntityNotFound(_0x4c18f7,null))[_0xb5fa('0x13')](function(_0x200604){if(_0x200604){_0x4d1ad6=_0x200604;_0x2588c9[_0xb5fa('0x58')]=_['keys'](db['OpenchannelAccount'][_0xb5fa('0x3a')]);_0x2588c9[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0x187535[_0xb5fa('0x41')]);_0x2588c9['filters']=_[_0xb5fa('0x57')](_0x2588c9[_0xb5fa('0x58')],_0x2588c9[_0xb5fa('0x41')]);_0x5900ed[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x2588c9['model'],qs[_0xb5fa('0x59')](_0x187535[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x5900ed[_0xb5fa('0x44')]=_0x5900ed[_0xb5fa('0x44')]['length']?_0x5900ed[_0xb5fa('0x44')]:_0x2588c9['model'];_0x5900ed[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x187535[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x5900ed[_0xb5fa('0xcd')]=qs['filters'](_['pick'](_0x187535[_0xb5fa('0x41')],_0x2588c9[_0xb5fa('0x56')]));if(_0x187535[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0x5900ed[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x5900ed[_0xb5fa('0xcd')],{'$or':_['map'](_0x5900ed[_0xb5fa('0x44')],function(_0x460c30){var _0x4ac457={};_0x4ac457[_0x460c30]={'$like':'%'+_0x187535[_0xb5fa('0x41')]['filter']+'%'};return _0x4ac457;})});}_0x5900ed=_[_0xb5fa('0x5a')]({},_0x5900ed,_0x187535[_0xb5fa('0x5b')]);return _0x4d1ad6[_0xb5fa('0x14c')](_0x5900ed);}})[_0xb5fa('0x13')](function(_0x3d65ca){if(_0x3d65ca){_0x32ee5d=_0x3d65ca[_0xb5fa('0x4a')];if(!_0x187535['query'][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x5900ed[_0xb5fa('0x24')]=qs[_0xb5fa('0x24')](_0x187535[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0x5900ed[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x187535[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x4d1ad6[_0xb5fa('0x14c')](_0x5900ed);}})[_0xb5fa('0x13')](function(_0x31b9ee){if(_0x31b9ee){return _0x31b9ee?{'count':_0x32ee5d,'rows':_0x31b9ee}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x4c18f7,null))['catch'](handleError(_0x4c18f7,null));};exports['addOpenchannelAccounts']=function(_0xd32844,_0x3f927){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0xd32844['params']['id']}})['then'](handleEntityNotFound(_0x3f927,null))['then'](function(_0x53baee){if(_0x53baee){return _0x53baee['addOpenchannelAccounts'](_0xd32844[_0xb5fa('0x5d')]['ids'],_[_0xb5fa('0x60')](_0xd32844[_0xb5fa('0x5d')],[_0xb5fa('0xa5'),'id'])||{});}})['then'](respondWithResult(_0x3f927,null))[_0xb5fa('0x1d')](handleError(_0x3f927,null));};exports[_0xb5fa('0x14d')]=function(_0x4f7d7f,_0x58858c){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x4f7d7f[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x58858c,null))[_0xb5fa('0x13')](function(_0x14cc27){if(_0x14cc27){return _0x14cc27['removeOpenchannelAccounts'](_0x4f7d7f[_0xb5fa('0x41')][_0xb5fa('0xa5')]);}})[_0xb5fa('0x13')](respondWithStatusCode(_0x58858c,null))[_0xb5fa('0x1d')](handleError(_0x58858c,null));};exports[_0xb5fa('0x14e')]=function(_0x34bd97,_0x47cb24){var _0xec12bf={};var _0x38d24d={};var _0x314833;var _0x637a5d;return db[_0xb5fa('0x40')]['findOne']({'where':{'id':_0x34bd97[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x47cb24,null))[_0xb5fa('0x13')](function(_0x41e5cf){if(_0x41e5cf){_0x314833=_0x41e5cf;_0x38d24d['model']=_[_0xb5fa('0x54')](db[_0xb5fa('0x14f')][_0xb5fa('0x3a')]);_0x38d24d[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0x34bd97[_0xb5fa('0x41')]);_0x38d24d[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x38d24d['model'],_0x38d24d[_0xb5fa('0x41')]);_0xec12bf[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x38d24d[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x34bd97[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0xec12bf[_0xb5fa('0x44')]=_0xec12bf[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0xec12bf[_0xb5fa('0x44')]:_0x38d24d[_0xb5fa('0x58')];_0xec12bf[_0xb5fa('0xcb')]=qs[_0xb5fa('0xcc')](_0x34bd97[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0xec12bf[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x34bd97[_0xb5fa('0x41')],_0x38d24d[_0xb5fa('0x56')]));if(_0x34bd97[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0xec12bf[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0xec12bf[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0xec12bf[_0xb5fa('0x44')],function(_0x443020){var _0x4f0411={};_0x4f0411[_0x443020]={'$like':'%'+_0x34bd97[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x4f0411;})});}_0xec12bf=_['merge']({},_0xec12bf,_0x34bd97[_0xb5fa('0x5b')]);return _0x314833[_0xb5fa('0x14e')](_0xec12bf);}})['then'](function(_0x1929fa){if(_0x1929fa){_0x637a5d=_0x1929fa[_0xb5fa('0x4a')];if(!_0x34bd97['query'][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0xec12bf['limit']=qs[_0xb5fa('0x24')](_0x34bd97[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0xec12bf['offset']=qs[_0xb5fa('0x22')](_0x34bd97[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x314833[_0xb5fa('0x14e')](_0xec12bf);}})[_0xb5fa('0x13')](function(_0x337d87){if(_0x337d87){return _0x337d87?{'count':_0x637a5d,'rows':_0x337d87}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x47cb24,null))[_0xb5fa('0x1d')](handleError(_0x47cb24,null));};exports[_0xb5fa('0x150')]=function(_0x2cebcd,_0x2a1b07){return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x2cebcd[_0xb5fa('0x53')]['id']}})['then'](handleEntityNotFound(_0x2a1b07,null))[_0xb5fa('0x13')](function(_0x51d9cf){if(_0x51d9cf){return _0x51d9cf[_0xb5fa('0x150')](_0x2cebcd[_0xb5fa('0x5d')]['ids'],_['omit'](_0x2cebcd[_0xb5fa('0x5d')],[_0xb5fa('0xa5'),'id'])||{});}})[_0xb5fa('0x13')](respondWithResult(_0x2a1b07,null))[_0xb5fa('0x1d')](handleError(_0x2a1b07,null));};exports['removeSmsAccounts']=function(_0x55c17e,_0x2b515b){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x55c17e[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x2b515b,null))[_0xb5fa('0x13')](function(_0xd3901){if(_0xd3901){return _0xd3901['removeSmsAccounts'](_0x55c17e['query']['ids']);}})['then'](respondWithStatusCode(_0x2b515b,null))['catch'](handleError(_0x2b515b,null));};exports['getChatWebsites']=function(_0x123d1c,_0x575b13){var _0x442d8e={};var _0x394542={};var _0x2f85a6;var _0x32186e;return db[_0xb5fa('0x40')]['findOne']({'where':{'id':_0x123d1c[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x575b13,null))[_0xb5fa('0x13')](function(_0x1f483b){if(_0x1f483b){_0x2f85a6=_0x1f483b;_0x394542[_0xb5fa('0x58')]=_[_0xb5fa('0x54')](db[_0xb5fa('0x151')]['rawAttributes']);_0x394542[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0x123d1c[_0xb5fa('0x41')]);_0x394542[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x394542['model'],_0x394542[_0xb5fa('0x41')]);_0x442d8e[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x394542['model'],qs[_0xb5fa('0x59')](_0x123d1c[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x442d8e[_0xb5fa('0x44')]=_0x442d8e['attributes']['length']?_0x442d8e[_0xb5fa('0x44')]:_0x394542[_0xb5fa('0x58')];_0x442d8e[_0xb5fa('0xcb')]=qs['sort'](_0x123d1c[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x442d8e[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x123d1c[_0xb5fa('0x41')],_0x394542[_0xb5fa('0x56')]));if(_0x123d1c[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0x442d8e['where']=_[_0xb5fa('0x5a')](_0x442d8e[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x442d8e['attributes'],function(_0x3da818){var _0x3c3ce9={};_0x3c3ce9[_0x3da818]={'$like':'%'+_0x123d1c['query'][_0xb5fa('0x3e')]+'%'};return _0x3c3ce9;})});}_0x442d8e=_[_0xb5fa('0x5a')]({},_0x442d8e,_0x123d1c[_0xb5fa('0x5b')]);return _0x2f85a6[_0xb5fa('0x152')](_0x442d8e);}})[_0xb5fa('0x13')](function(_0x130353){if(_0x130353){_0x32186e=_0x130353[_0xb5fa('0x4a')];if(!_0x123d1c[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x442d8e[_0xb5fa('0x24')]=qs[_0xb5fa('0x24')](_0x123d1c[_0xb5fa('0x41')]['limit']);_0x442d8e[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x123d1c['query'][_0xb5fa('0x22')]);}return _0x2f85a6[_0xb5fa('0x152')](_0x442d8e);}})[_0xb5fa('0x13')](function(_0x4c9b49){if(_0x4c9b49){return _0x4c9b49?{'count':_0x32186e,'rows':_0x4c9b49}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x575b13,null))[_0xb5fa('0x1d')](handleError(_0x575b13,null));};exports[_0xb5fa('0x153')]=function(_0x2e35c4,_0x1ecb05){return db['User'][_0xb5fa('0x34')]({'where':{'id':_0x2e35c4[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x1ecb05,null))[_0xb5fa('0x13')](function(_0x4dc343){if(_0x4dc343){return _0x4dc343[_0xb5fa('0x153')](_0x2e35c4[_0xb5fa('0x5d')][_0xb5fa('0xa5')],_['omit'](_0x2e35c4[_0xb5fa('0x5d')],[_0xb5fa('0xa5'),'id'])||{});}})[_0xb5fa('0x13')](respondWithResult(_0x1ecb05,null))['catch'](handleError(_0x1ecb05,null));};exports[_0xb5fa('0x154')]=function(_0x446584,_0x109721){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x446584[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x109721,null))['then'](function(_0x4fd4e7){if(_0x4fd4e7){return _0x4fd4e7[_0xb5fa('0x154')](_0x446584[_0xb5fa('0x41')][_0xb5fa('0xa5')]);}})['then'](respondWithStatusCode(_0x109721,null))[_0xb5fa('0x1d')](handleError(_0x109721,null));};exports[_0xb5fa('0x155')]=function(_0x45db39,_0x5f1503){var _0x4273a2={};var _0x459dae={};var _0x1bee4a;var _0x28f026;return db['User'][_0xb5fa('0x94')]({'where':{'id':_0x45db39['params']['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x5f1503,null))['then'](function(_0x5718de){if(_0x5718de){_0x1bee4a=_0x5718de;_0x459dae['model']=_[_0xb5fa('0x54')](db[_0xb5fa('0x156')]['rawAttributes']);_0x459dae[_0xb5fa('0x41')]=_[_0xb5fa('0x54')](_0x45db39[_0xb5fa('0x41')]);_0x459dae[_0xb5fa('0x56')]=_['intersection'](_0x459dae[_0xb5fa('0x58')],_0x459dae[_0xb5fa('0x41')]);_0x4273a2[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x459dae[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x45db39[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x4273a2[_0xb5fa('0x44')]=_0x4273a2[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x4273a2[_0xb5fa('0x44')]:_0x459dae[_0xb5fa('0x58')];_0x4273a2[_0xb5fa('0xcb')]=qs['sort'](_0x45db39['query'][_0xb5fa('0xcc')]);_0x4273a2[_0xb5fa('0xcd')]=qs['filters'](_[_0xb5fa('0xce')](_0x45db39[_0xb5fa('0x41')],_0x459dae[_0xb5fa('0x56')]));if(_0x45db39[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0x4273a2[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x4273a2[_0xb5fa('0xcd')],{'$or':_[_0xb5fa('0x8a')](_0x4273a2['attributes'],function(_0x1e3b97){var _0x1b1e34={};_0x1b1e34[_0x1e3b97]={'$like':'%'+_0x45db39['query'][_0xb5fa('0x3e')]+'%'};return _0x1b1e34;})});}_0x4273a2=_[_0xb5fa('0x5a')]({},_0x4273a2,_0x45db39[_0xb5fa('0x5b')]);return _0x1bee4a[_0xb5fa('0x155')](_0x4273a2);}})['then'](function(_0x430a68){if(_0x430a68){_0x28f026=_0x430a68[_0xb5fa('0x4a')];if(!_0x45db39[_0xb5fa('0x41')][_0xb5fa('0xd0')]('nolimit')){_0x4273a2[_0xb5fa('0x24')]=qs[_0xb5fa('0x24')](_0x45db39['query']['limit']);_0x4273a2['offset']=qs['offset'](_0x45db39[_0xb5fa('0x41')]['offset']);}return _0x1bee4a[_0xb5fa('0x155')](_0x4273a2);}})['then'](function(_0x37c207){if(_0x37c207){return _0x37c207?{'count':_0x28f026,'rows':_0x37c207}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x5f1503,null))[_0xb5fa('0x1d')](handleError(_0x5f1503,null));};exports[_0xb5fa('0x157')]=function(_0x4fec22,_0x2657dc){return db[_0xb5fa('0x40')]['find']({'where':{'id':_0x4fec22[_0xb5fa('0x53')]['id']}})['then'](handleEntityNotFound(_0x2657dc,null))['then'](function(_0x3d8650){if(_0x3d8650){return _0x3d8650[_0xb5fa('0x157')](_0x4fec22[_0xb5fa('0x5d')]['ids'],_['omit'](_0x4fec22[_0xb5fa('0x5d')],['ids','id'])||{});}})[_0xb5fa('0x13')](respondWithResult(_0x2657dc,null))[_0xb5fa('0x1d')](handleError(_0x2657dc,null));};exports[_0xb5fa('0x158')]=function(_0x28a78d,_0x45f37f){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x28a78d['params']['id']}})['then'](handleEntityNotFound(_0x45f37f,null))['then'](function(_0x393bd3){if(_0x393bd3){return _0x393bd3[_0xb5fa('0x158')](_0x28a78d[_0xb5fa('0x41')][_0xb5fa('0xa5')]);}})['then'](respondWithStatusCode(_0x45f37f,null))[_0xb5fa('0x1d')](handleError(_0x45f37f,null));};exports['getSquareProjects']=function(_0x47c87b,_0x589f47){var _0x4a05a7={};var _0x358eac={};var _0x7db857;var _0x2167e4;return db['User']['findOne']({'where':{'id':_0x47c87b[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](handleEntityNotFound(_0x589f47,null))['then'](function(_0x2462b9){if(_0x2462b9){_0x7db857=_0x2462b9;_0x358eac[_0xb5fa('0x58')]=_['keys'](db['SquareProject'][_0xb5fa('0x3a')]);_0x358eac[_0xb5fa('0x41')]=_['keys'](_0x47c87b['query']);_0x358eac[_0xb5fa('0x56')]=_[_0xb5fa('0x57')](_0x358eac[_0xb5fa('0x58')],_0x358eac[_0xb5fa('0x41')]);_0x4a05a7[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x358eac['model'],qs['fields'](_0x47c87b[_0xb5fa('0x41')]['fields']));_0x4a05a7[_0xb5fa('0x44')]=_0x4a05a7[_0xb5fa('0x44')][_0xb5fa('0x4a')]?_0x4a05a7[_0xb5fa('0x44')]:_0x358eac['model'];_0x4a05a7['order']=qs[_0xb5fa('0xcc')](_0x47c87b[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x4a05a7[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x47c87b[_0xb5fa('0x41')],_0x358eac[_0xb5fa('0x56')]));if(_0x47c87b['query']['filter']){_0x4a05a7[_0xb5fa('0xcd')]=_[_0xb5fa('0x5a')](_0x4a05a7[_0xb5fa('0xcd')],{'$or':_['map'](_0x4a05a7[_0xb5fa('0x44')],function(_0x44a228){var _0x141175={};_0x141175[_0x44a228]={'$like':'%'+_0x47c87b[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'};return _0x141175;})});}_0x4a05a7=_[_0xb5fa('0x5a')]({},_0x4a05a7,_0x47c87b[_0xb5fa('0x5b')]);return _0x7db857[_0xb5fa('0x159')](_0x4a05a7);}})[_0xb5fa('0x13')](function(_0x1149d1){if(_0x1149d1){_0x2167e4=_0x1149d1[_0xb5fa('0x4a')];if(!_0x47c87b[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x4a05a7['limit']=qs[_0xb5fa('0x24')](_0x47c87b[_0xb5fa('0x41')][_0xb5fa('0x24')]);_0x4a05a7['offset']=qs['offset'](_0x47c87b[_0xb5fa('0x41')][_0xb5fa('0x22')]);}return _0x7db857[_0xb5fa('0x159')](_0x4a05a7);}})['then'](function(_0x1020e9){if(_0x1020e9){return _0x1020e9?{'count':_0x2167e4,'rows':_0x1020e9}:null;}})[_0xb5fa('0x13')](respondWithResult(_0x589f47,null))['catch'](handleError(_0x589f47,null));};exports['addSquareProjects']=function(_0x110dfe,_0x38de92){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x110dfe[_0xb5fa('0x53')]['id']}})['then'](handleEntityNotFound(_0x38de92,null))[_0xb5fa('0x13')](function(_0x11d174){if(_0x11d174){return _0x11d174[_0xb5fa('0x15a')](_0x110dfe[_0xb5fa('0x5d')]['ids'],_[_0xb5fa('0x60')](_0x110dfe['body'],[_0xb5fa('0xa5'),'id'])||{});}})[_0xb5fa('0x13')](respondWithResult(_0x38de92,null))['catch'](handleError(_0x38de92,null));};exports[_0xb5fa('0x15b')]=function(_0x55561d,_0x3c0aec){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x55561d[_0xb5fa('0x53')]['id']}})['then'](handleEntityNotFound(_0x3c0aec,null))[_0xb5fa('0x13')](function(_0x47ffed){if(_0x47ffed){return _0x47ffed[_0xb5fa('0x15b')](_0x55561d[_0xb5fa('0x41')][_0xb5fa('0xa5')]);}})[_0xb5fa('0x13')](respondWithStatusCode(_0x3c0aec,null))['catch'](handleError(_0x3c0aec,null));};exports[_0xb5fa('0x15c')]=function(_0x403ccc,_0x3972a6){var _0x521fff={},_0x395c95={},_0x2e635f={'count':0x0,'rows':[]};var _0x520f9c=db[_0xb5fa('0x15d')][_0xb5fa('0x3a')];_0x395c95['model']=_[_0xb5fa('0x54')](_0x520f9c);_0x395c95[_0xb5fa('0x41')]=_['keys'](_0x403ccc[_0xb5fa('0x41')]);_0x395c95['filters']=_[_0xb5fa('0x57')](_0x395c95['model'],_0x395c95['query']);_0x395c95[_0xb5fa('0x56')]=_[_0xb5fa('0xfe')](_0x395c95[_0xb5fa('0x56')],[_0xb5fa('0x15e'),_0xb5fa('0x15f'),_0xb5fa('0x160'),'$gte',_0xb5fa('0x161'),_0xb5fa('0x162'),_0xb5fa('0x163'),'$eq',_0xb5fa('0x164'),'$between',_0xb5fa('0x165'),_0xb5fa('0x166'),'$notIn',_0xb5fa('0x167'),_0xb5fa('0x168'),_0xb5fa('0x169'),_0xb5fa('0x16a'),_0xb5fa('0x167'),_0xb5fa('0x16b'),_0xb5fa('0x16c'),_0xb5fa('0x16d'),_0xb5fa('0x16e')]);_0x521fff[_0xb5fa('0x44')]=_[_0xb5fa('0x57')](_0x395c95[_0xb5fa('0x58')],qs[_0xb5fa('0x59')](_0x403ccc[_0xb5fa('0x41')][_0xb5fa('0x59')]));_0x521fff['attributes']=_0x521fff['attributes']['length']?_0x521fff['attributes']:_0x395c95[_0xb5fa('0x58')];if(!_0x403ccc[_0xb5fa('0x41')][_0xb5fa('0xd0')](_0xb5fa('0xd5'))){_0x521fff['limit']=qs[_0xb5fa('0x24')](_0x403ccc['query'][_0xb5fa('0x24')]);_0x521fff[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x403ccc[_0xb5fa('0x41')][_0xb5fa('0x22')]);}_0x521fff['order']=qs['sort'](_0x403ccc[_0xb5fa('0x41')][_0xb5fa('0xcc')]);_0x521fff[_0xb5fa('0xcd')]=qs[_0xb5fa('0x56')](_[_0xb5fa('0xce')](_0x403ccc[_0xb5fa('0x41')],_0x395c95[_0xb5fa('0x56')]));if(_0x403ccc[_0xb5fa('0x41')][_0xb5fa('0x3e')]){_0x521fff['where']=_[_0xb5fa('0x5a')](_0x521fff['where'],{'$or':_[_0xb5fa('0x8a')](_0x521fff[_0xb5fa('0x44')],function(_0x53a541){var _0x15d0f0={};_0x15d0f0[_0x53a541]={'$like':'%'+_0x403ccc['query'][_0xb5fa('0x3e')]+'%'};return _0x15d0f0;})});}_0x521fff[_0xb5fa('0xcd')]={'$and':[_0x521fff[_0xb5fa('0xcd')],{'$or':[{'UserId':_0x403ccc[_0xb5fa('0x53')]['id']},{'OwnerId':_0x403ccc[_0xb5fa('0x53')]['id']}]}]};_0x521fff=_[_0xb5fa('0x5a')]({},_0x521fff,_0x403ccc[_0xb5fa('0x5b')]);var _0x378d10={'where':_0x521fff[_0xb5fa('0xcd')]};return db[_0xb5fa('0x15d')][_0xb5fa('0x25')](_0x378d10)[_0xb5fa('0x13')](function(_0x4aa189){_0x2e635f[_0xb5fa('0x25')]=_0x4aa189;if(_0x403ccc[_0xb5fa('0x41')][_0xb5fa('0x42')]){_0x521fff[_0xb5fa('0x43')]=[{'attributes':['id',_0xb5fa('0x16f'),_0xb5fa('0x170'),_0xb5fa('0xec')],'model':db[_0xb5fa('0x171')],'as':_0xb5fa('0x172')},{'attributes':['id',_0xb5fa('0x37'),'dialActive'],'model':db[_0xb5fa('0xaa')],'as':_0xb5fa('0xd7')}];}return db[_0xb5fa('0x15d')][_0xb5fa('0x46')](_0x521fff);})[_0xb5fa('0x13')](function(_0x51e4c5){_0x2e635f[_0xb5fa('0x47')]=_0x51e4c5;return _0x2e635f;})[_0xb5fa('0x13')](respondWithFilteredResult(_0x3972a6,_0x521fff))[_0xb5fa('0x1d')](handleError(_0x3972a6,null));};exports[_0xb5fa('0x173')]=function(_0x4650be,_0x7765b2){if(!_[_0xb5fa('0x66')](_0x4650be['user']['id'])&&(_0x4650be[_0xb5fa('0x2e')][_0xb5fa('0x2b')]==_0xb5fa('0x2c')||_0x4650be['user'][_0xb5fa('0x2b')]==_0xb5fa('0x2e'))){return db[_0xb5fa('0x40')][_0xb5fa('0x94')]({'where':{'id':_0x4650be[_0xb5fa('0x53')]['id']},'raw':!![]})[_0xb5fa('0x13')](function(_0xba706c){return authService[_0xb5fa('0x174')](_0xba706c);})[_0xb5fa('0x13')](function(_0x230fac){if(_0x230fac){return _0x7765b2['status'](0xc8)[_0xb5fa('0x21')]({'api_key':_0x230fac[_0xb5fa('0x175')]});}else{return _0x7765b2[_0xb5fa('0x20')](0xcc)[_0xb5fa('0x21')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0xb5fa('0x1d')](handleError(_0x7765b2,0x193));}else{return _0x7765b2[_0xb5fa('0x20')](0x191)[_0xb5fa('0x21')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xb5fa('0x176')]=function(_0x67e71e,_0x57e430){if(!_[_0xb5fa('0x66')](_0x67e71e[_0xb5fa('0x2e')]['id'])&&(_0x67e71e['user']['role']==_0xb5fa('0x2c')||_0x67e71e['user'][_0xb5fa('0x2b')]==_0xb5fa('0x2e'))){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x67e71e['params']['id']}})[_0xb5fa('0x13')](function(_0xdcdf23){return authService[_0xb5fa('0x177')](_0xdcdf23);})[_0xb5fa('0x13')](function(_0x188378){return db[_0xb5fa('0x40')][_0xb5fa('0x28')]({'apiKeyIat':_0x188378[_0xb5fa('0x178')],'apiKeyNonce':_0x188378[_0xb5fa('0x179')]},{'where':{'id':_0x67e71e[_0xb5fa('0x53')]['id']}})[_0xb5fa('0x13')](function(){return _0x57e430[_0xb5fa('0x20')](0xc8)[_0xb5fa('0x21')]({'api_key':_0x188378[_0xb5fa('0x175')]});});})['catch'](handleError(_0x57e430,0x193));}else{return _0x57e430['status'](0x191)[_0xb5fa('0x21')]({'message':_0xb5fa('0x17a')});}};exports[_0xb5fa('0x17b')]=function(_0x7884b2,_0x5d7505){if(!_['isNil'](_0x7884b2['user']['id'])&&(_0x7884b2[_0xb5fa('0x2e')][_0xb5fa('0x2b')]=='admin'||_0x7884b2[_0xb5fa('0x2e')]['role']==_0xb5fa('0x2e'))){return db[_0xb5fa('0x40')][_0xb5fa('0x34')]({'where':{'id':_0x7884b2[_0xb5fa('0x53')]['id']}})['then'](handleEntityNotFound(_0x5d7505,null))[_0xb5fa('0x13')](function(_0x47fb7b){if(_0x47fb7b&&_0x47fb7b[_0xb5fa('0x17c')]&&_0x47fb7b[_0xb5fa('0x17d')])return _0x47fb7b;else throw{'message':_0xb5fa('0x17e')};})['then'](function(_0x23882c){return db[_0xb5fa('0x40')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x7884b2['params']['id']}});})[_0xb5fa('0x13')](respondWithStatusCode(_0x5d7505,0xc8))[_0xb5fa('0x1d')](handleError(_0x5d7505,0x193));}else{return _0x5d7505[_0xb5fa('0x20')](0x191)[_0xb5fa('0x21')]({'message':_0xb5fa('0x17a')});}};exports[_0xb5fa('0x17f')]=function(_0x4e28a2,_0x256602){var _0x5dea8a=_0x4e28a2[_0xb5fa('0x2e')][_0xb5fa('0x2a')]({'plain':!![]});if(!_0x5dea8a){return _0x256602[_0xb5fa('0x20')](0x191)[_0xb5fa('0x38')](_0xb5fa('0x180'));}else{return _0x256602[_0xb5fa('0x20')](0xc8)[_0xb5fa('0x21')](_0x5dea8a);}};exports[_0xb5fa('0x181')]=function(_0x541e26,_0x1adf97){var _0xa10e2={'offset':0x0},_0x565b3c={'count':0x0,'rows':[]};Promise['resolve']()[_0xb5fa('0x13')](function(){if(!_0x541e26['query'][_0xb5fa('0x3e')]&&!_0x541e26['query'][_0xb5fa('0x182')]&&!_0x541e26[_0xb5fa('0x41')][_0xb5fa('0x183')])return[];return Promise['resolve']()[_0xb5fa('0x13')](function(){var _0x795926=[];if(!_[_0xb5fa('0x89')](_0x541e26[_0xb5fa('0x41')][_0xb5fa('0x182')])){_0x795926[_0xb5fa('0x45')](db['Team'][_0xb5fa('0x46')]({'attributes':['id','name'],'where':{'id':_0x541e26[_0xb5fa('0x41')][_0xb5fa('0x182')]}}));}if(!_[_0xb5fa('0x89')](_0x541e26[_0xb5fa('0x41')][_0xb5fa('0x183')])){_0x795926['push'](db[_0xb5fa('0xaa')][_0xb5fa('0x46')]({'attributes':['id','name'],'type':_0xb5fa('0x184'),'where':{'id':_0x541e26[_0xb5fa('0x41')]['queues']}}));}return Promise['all'](_0x795926);})[_0xb5fa('0x13')](function(_0x342709){var _0x1f59b1=_[_0xb5fa('0x11d')](_0x342709)['map'](function(_0x318e4b){return _0x318e4b[_0xb5fa('0x185')]({'attributes':['id','name','internal',_0xb5fa('0x9c')],'raw':!![]});});return Promise[_0xb5fa('0x51')](_0x1f59b1);})[_0xb5fa('0x13')](function(_0x29adda){var _0x481e27=_[_0xb5fa('0x11d')](_0x29adda);if(!_0x541e26[_0xb5fa('0x41')]['filter'])return _0x481e27;if(_[_0xb5fa('0x89')](_0x481e27)){return db[_0xb5fa('0x40')][_0xb5fa('0x46')]({'attributes':['id',_0xb5fa('0x37'),'internal','online'],'where':{'role':_0xb5fa('0x30'),'$or':[db[_0xb5fa('0x68')]['where'](db[_0xb5fa('0x68')]['fn']('lower',db[_0xb5fa('0x68')]['col'](_0xb5fa('0x37'))),{'$like':'%'+_0x541e26['query'][_0xb5fa('0x3e')][_0xb5fa('0xa2')]()+'%'}),{'internal':{'$like':'%'+_0x541e26[_0xb5fa('0x41')][_0xb5fa('0x3e')]+'%'}}]},'raw':!![]});}else{return _(_0x481e27)[_0xb5fa('0x11d')]()['filter'](function(_0x40473f){return _0x40473f[_0xb5fa('0x37')][_0xb5fa('0xa2')]()['includes'](_0x541e26[_0xb5fa('0x41')][_0xb5fa('0x3e')][_0xb5fa('0xa2')]())||_0x40473f[_0xb5fa('0x61')][_0xb5fa('0x186')]()[_0xb5fa('0x33')](_0x541e26['query'][_0xb5fa('0x3e')]);})[_0xb5fa('0x32')]();}})[_0xb5fa('0x13')](function(_0x21b9fa){var _0x5846a0=_0xb5fa('0x37');var _0x3c8c7c=_0xb5fa('0x187');if(_0x541e26[_0xb5fa('0x41')]['sort']){var _0x3c8c7c=_0x541e26[_0xb5fa('0x41')][_0xb5fa('0xcc')][0x0]==='-'?_0xb5fa('0x188'):'asc';var _0x5846a0=_0x3c8c7c===_0xb5fa('0x187')?_0x541e26[_0xb5fa('0x41')][_0xb5fa('0xcc')]:_0x541e26[_0xb5fa('0x41')][_0xb5fa('0xcc')][_0xb5fa('0x189')](0x1);}return _(_0x21b9fa)[_0xb5fa('0x18a')]('id')['orderBy']([function(_0x1deaa1){return _0x5846a0===_0xb5fa('0x37')?_0x1deaa1[_0x5846a0][_0xb5fa('0xa2')]():_0x1deaa1[_0x5846a0];}],[_0x3c8c7c])[_0xb5fa('0x8a')](function(_0x1d15ab){return _['pick'](_0x1d15ab,['id',_0xb5fa('0x37'),_0xb5fa('0x61'),_0xb5fa('0x9c')]);})[_0xb5fa('0x32')]();})['then'](function(_0x13bebe){return client[_0xb5fa('0x18b')](_0xb5fa('0x2f'),_0x541e26)[_0xb5fa('0x13')](function(_0x48462b){if(_0x48462b[_0xb5fa('0x19')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x1e1134=_0x48462b[_0xb5fa('0x1c')];var _0x27c420=jayson[_0xb5fa('0x11')][_0xb5fa('0x12')]({'port':0x232c});return _0x27c420[_0xb5fa('0x18b')](_0xb5fa('0x2f'),_0x541e26)['then'](function(_0x42b150){if(_0x42b150[_0xb5fa('0x19')])throw new Error(_0xb5fa('0x18c'));var _0x375524=_0x42b150[_0xb5fa('0x1c')];return _[_0xb5fa('0x5a')]({},_0x375524,_0x1e1134);});})[_0xb5fa('0x13')](function(_0xd3e77f){return _[_0xb5fa('0x8a')](_0x13bebe,function(_0x2e875d){var _0x382fdb=_[_0xb5fa('0x34')](_0xd3e77f['rows'],['id',_0x2e875d['id']]);if(!_0x382fdb||!_0x2e875d[_0xb5fa('0x9c')]){_0x2e875d[_0xb5fa('0x20')]=_0xb5fa('0x18d');}else if(_0x382fdb[_0xb5fa('0x107')]){_0x2e875d[_0xb5fa('0x20')]=_0xb5fa('0x103');}else{_0x2e875d[_0xb5fa('0x20')]=_[_0xb5fa('0x33')]([_0xb5fa('0x18e'),'unknown',_0xb5fa('0x18f'),_0xb5fa('0x190'),null,undefined],_0x382fdb[_0xb5fa('0x191')])?_0xb5fa('0x9c'):'busy';}return _0x2e875d;});});});})[_0xb5fa('0x13')](function(_0x2d81b0){if(!_0x541e26[_0xb5fa('0x41')]['hasOwnProperty'](_0xb5fa('0xd5'))){_0xa10e2[_0xb5fa('0x24')]=qs['limit'](_0x541e26['query'][_0xb5fa('0x24')]||0xa);_0xa10e2[_0xb5fa('0x22')]=qs[_0xb5fa('0x22')](_0x541e26[_0xb5fa('0x41')][_0xb5fa('0x22')]);}_0x565b3c[_0xb5fa('0x25')]=_0x2d81b0[_0xb5fa('0x4a')];_0x565b3c[_0xb5fa('0x47')]=_0xa10e2['limit']?_0x2d81b0[_0xb5fa('0x192')](_0xa10e2['offset'],_0xa10e2['offset']+_0xa10e2['limit']):_0x2d81b0;return _0x565b3c;})['then'](respondWithFilteredResult(_0x1adf97,_0xa10e2))[_0xb5fa('0x1d')](handleError(_0x1adf97,null));};function get_open_tabs(_0xa21f62,_0x425e9a){var _0x4d28f1=_0xa21f62[_0xb5fa('0x193')](0x0)[_0xb5fa('0x194')]()+_0xa21f62[_0xb5fa('0x192')](0x1);var _0x504410={'type':db[_0xb5fa('0x8d')][_0xb5fa('0x6a')][_0xb5fa('0x6b')],'raw':!![]};return new BPromise(function(_0x58cb9a,_0x309692){var _0x3aba5d=squel[_0xb5fa('0x195')]()[_0xb5fa('0x196')](_0xb5fa('0x197')+_0x4d28f1+_0xb5fa('0x198'),'id')[_0xb5fa('0x196')]('ui.createdAt')[_0xb5fa('0x6c')](_0xb5fa('0x199')+_0xa21f62+_0xb5fa('0x19a'),'ui')[_0xb5fa('0xcd')](_0xb5fa('0x19b'),_0x425e9a['id']);return db[_0xb5fa('0x68')][_0xb5fa('0x41')](_0x3aba5d['toString'](),_0x504410)[_0xb5fa('0x13')](function(_0xdb4942){_0x425e9a[_0x4d28f1+_0xb5fa('0x19c')]=_0xdb4942;_0x58cb9a(_0xdb4942);})[_0xb5fa('0x1d')](function(_0x5a8552){_0x309692(_0x5a8552);});});};
\ No newline at end of file
+var _0xdd6e=['User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','upsert','MemberReport','YYYY-MM-DD\x20HH:mm:ss','forEach','LOGIN','device','LOGININPAUSE','bulkCreate','concat','isMiddleware','resolve','logout','pause','QueuePause','PAUSE','updateAttributes','SIP/%s','DEFAULT\x20PAUSE','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','unpause','manual','%s%s','Pause','getTeams','Team','addTeams','getVoiceQueues','setDataValue','getChatQueues','Chat','getMailQueues','Mail','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','Fax','Openchannel','flatten','Voice','removeTeams','getFaxQueues','getOpenchannelQueues','removeAgent','getDataValue','getLists','getAgents','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','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gte','$lt','$lte','$eq','$between','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','lastName','phone','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','isEmpty','inbound','lower','col','asc','desc','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','client','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','unknown','ringing','voiceStatus','busy','slice','charAt','toUpperCase','select','field','ui.','InteractionId','ui.createdAt','user_has_','ui.UserId\x20=\x20?','toString','moment','bluebird','util','path','squel','jayson/promise','ioredis','../../components/auth/service','../../config/utils','../../config/environment','../../mysqldb','socket.io-emitter','redis','./user.socket','register','localhost','http','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','update','destroy','get','role','admin','Agents','agent','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','stack','send','index','User','rawAttributes','type','key','password','getOptions','where','includeAll','include','attributes','push','findAll','rows','query','openTabs','length','chat','dataValues','sms','fax','whatsapp','all','show','keys','filters','model','intersection','fields','true','mail','body','params','describe','addContacts','ids','omit','internal','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','sequelize','QueryTypes','SELECT','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','102','103','113','110','104','106','107','108','109','111','create','user','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','compact','changePassword','oldPassword','newPassword','Sequelize','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','passwordHistoryLimit','enforcePasswordHistory','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','voicePause','interface','isValidChannel','Unknown\x20channel','add','toLowerCase','Queues','spread','capitalize','QueueId','emit','Queue:save','voice','VoiceQueue','online','isArray','Queue:remove','UserVoiceQueueRt','addAvatar','userpic','file','filename','getAvatar','join','download','existsSync','root','server/files/images/','getOpenTabs','openchannel','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','CmContact','order','sort','merge','options','getContacts','hasOwnProperty','CmList','List','Tag','color','tag','getQueues','Queue','pick','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','mobile','loginInPause','intrf','format','user:%s','user:forcelogout','headers','x-forwarded-for','remoteAddress','socket','connection'];(function(_0x46ae5a,_0x2a38d0){var _0x434986=function(_0x22735d){while(--_0x22735d){_0x46ae5a['push'](_0x46ae5a['shift']());}};_0x434986(++_0x2a38d0);}(_0xdd6e,0xa5));var _0xedd6=function(_0x3532bb,_0xab8751){_0x3532bb=_0x3532bb-0x0;var _0x297b0d=_0xdd6e[_0x3532bb];return _0x297b0d;};'use strict';var moment=require(_0xedd6('0x0'));var BPromise=require(_0xedd6('0x1'));var util=require(_0xedd6('0x2'));var path=require(_0xedd6('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0xedd6('0x4'));var jayson=require(_0xedd6('0x5'));var Redis=require(_0xedd6('0x6'));var authService=require(_0xedd6('0x7'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var utils=require(_0xedd6('0x8'));var config=require(_0xedd6('0x9'));var licenseUtil=require('../../config/license/util');var db=require(_0xedd6('0xa'))['db'];var socket=require(_0xedd6('0xb'))(new Redis(config[_0xedd6('0xc')]));require(_0xedd6('0xd'))[_0xedd6('0xe')](socket);config['redis']=_['defaults'](config[_0xedd6('0xc')],{'host':_0xedd6('0xf'),'port':0x18eb});var client=jayson['client'][_0xedd6('0x10')]({'port':0x232a});var values;function respondWithRpcPromise(_0x25703e,_0xfa040f,_0x406a36,_0x5e2a3a){return new BPromise(function(_0xb1dc9,_0x5ce3c6){var _0x2657be=_0x5e2a3a||client;return _0x2657be[_0xedd6('0x11')](_0x25703e,_0x406a36)[_0xedd6('0x12')](function(_0x339ab6){logger['info'](_0xedd6('0x13'),_0xfa040f,_0xedd6('0x14'));logger[_0xedd6('0x15')](_0xedd6('0x16'),_0xfa040f,_0xedd6('0x14'),JSON[_0xedd6('0x17')](_0x339ab6));if(_0x339ab6[_0xedd6('0x18')]){if(_0x339ab6[_0xedd6('0x18')][_0xedd6('0x19')]===0x1f4){logger[_0xedd6('0x18')](_0xedd6('0x13'),_0xfa040f,_0x339ab6[_0xedd6('0x18')]['message']);return _0x5ce3c6(_0x339ab6[_0xedd6('0x18')][_0xedd6('0x1a')]);}logger[_0xedd6('0x18')](_0xedd6('0x13'),_0xfa040f,_0x339ab6['error']['message']);return _0xb1dc9(_0x339ab6[_0xedd6('0x18')]['message']);}else{logger[_0xedd6('0x1b')](_0xedd6('0x13'),_0xfa040f,_0xedd6('0x14'));_0xb1dc9(_0x339ab6[_0xedd6('0x1c')][_0xedd6('0x1a')]);}})[_0xedd6('0x1d')](function(_0x3e5443){logger[_0xedd6('0x18')]('User,\x20%s,\x20%s',_0xfa040f,_0x3e5443);_0x5ce3c6(_0x3e5443);});});}function respondWithStatusCode(_0x16c33c,_0x7f0e4){_0x7f0e4=_0x7f0e4||0xcc;return function(_0x4d89df){if(_0x4d89df){return _0x16c33c[_0xedd6('0x1e')](_0x7f0e4);}return _0x16c33c['status'](_0x7f0e4)[_0xedd6('0x1f')]();};}function respondWithResult(_0x330d32,_0x8bd25c){_0x8bd25c=_0x8bd25c||0xc8;return function(_0x5bba15){if(_0x5bba15){return _0x330d32[_0xedd6('0x20')](_0x8bd25c)[_0xedd6('0x21')](_0x5bba15);}};}function respondWithFilteredResult(_0xdda721,_0x3f86ab){return function(_0x59b3b1){if(_0x59b3b1){var _0x200b78=typeof _0x3f86ab[_0xedd6('0x22')]===_0xedd6('0x23')&&typeof _0x3f86ab[_0xedd6('0x24')]==='undefined';var _0x5968bf=_0x59b3b1['count'];var _0x54bc1a=_0x200b78?0x0:_0x3f86ab[_0xedd6('0x22')];var _0x449eea=_0x200b78?_0x59b3b1[_0xedd6('0x25')]:_0x3f86ab[_0xedd6('0x22')]+_0x3f86ab[_0xedd6('0x24')];var _0x3e7e0b;if(_0x449eea>=_0x5968bf){_0x449eea=_0x5968bf;_0x3e7e0b=0xc8;}else{_0x3e7e0b=0xce;}_0xdda721[_0xedd6('0x20')](_0x3e7e0b);return _0xdda721[_0xedd6('0x26')]('Content-Range',_0x54bc1a+'-'+_0x449eea+'/'+_0x5968bf)[_0xedd6('0x21')](_0x59b3b1);}return null;};}function saveUpdates(_0x25e146){return function(_0x53cc63){if(_0x53cc63){return _0x53cc63[_0xedd6('0x27')](_0x25e146)[_0xedd6('0x12')](function(_0x1875c9){return _0x1875c9;});}return null;};}function removeEntity(_0xcb60fb){return function(_0x16d88e){if(_0x16d88e){return _0x16d88e[_0xedd6('0x28')]()[_0xedd6('0x12')](function(){var _0x35bb6a=_0x16d88e[_0xedd6('0x29')]({'plain':!![]});if(_0x35bb6a[_0xedd6('0x2a')]===_0xedd6('0x2b'))return;var _0x2e1073=[{'name':'Users','value':'user','ignore':!![]},{'name':_0xedd6('0x2c'),'value':_0xedd6('0x2d'),'ignore':![]},{'name':_0xedd6('0x2e'),'value':_0xedd6('0x2f'),'ignore':![]}];var _0x872006=_(_0x2e1073)[_0xedd6('0x30')](_0xedd6('0x31'))[_0xedd6('0x32')]('value')[_0xedd6('0x33')]();if(_[_0xedd6('0x34')](_0x872006,_0x35bb6a['role'])){return;}var _0x3b76c8=_[_0xedd6('0x35')](_0x2e1073,[_0xedd6('0x33'),_0x35bb6a[_0xedd6('0x2a')]])[_0xedd6('0x36')];return db[_0xedd6('0x37')][_0xedd6('0x28')]({'where':{'type':_0x3b76c8,'resourceId':_0x35bb6a['id']}})[_0xedd6('0x12')](function(){return _0x16d88e;});})['then'](function(){_0xcb60fb['status'](0xcc)[_0xedd6('0x1f')]();});}};}function handleEntityNotFound(_0x97d808){return function(_0x18972c){if(!_0x18972c){_0x97d808[_0xedd6('0x1e')](0x194);}return _0x18972c;};}function handleError(_0x4ff5a9,_0x315ea3){_0x315ea3=_0x315ea3||0x1f4;return function(_0x18f7d3){logger[_0xedd6('0x18')](_0x18f7d3[_0xedd6('0x38')]);if(_0x18f7d3[_0xedd6('0x36')]){delete _0x18f7d3[_0xedd6('0x36')];}_0x4ff5a9[_0xedd6('0x20')](_0x315ea3)[_0xedd6('0x39')](_0x18f7d3);};}exports[_0xedd6('0x3a')]=function(_0xef90bb,_0x5c110b){var _0x390370={},_0x10eb7d={'count':0x0,'rows':[]};var _0x3efd84=_(db[_0xedd6('0x3b')][_0xedd6('0x3c')])[_0xedd6('0x32')](function(_0x4525b6){return{'name':_0x4525b6['fieldName'],'type':_0x4525b6[_0xedd6('0x3d')][_0xedd6('0x3e')]};})[_0xedd6('0x30')](function(_0x561c06){return!_[_0xedd6('0x34')]([_0xedd6('0x3f'),'salt'],_0x561c06[_0xedd6('0x36')]);})['value']();_0x390370=qs[_0xedd6('0x40')](_0x3efd84,_0xef90bb);var _0x335838={'where':_0x390370[_0xedd6('0x41')]};return db['User'][_0xedd6('0x25')](_0x335838)[_0xedd6('0x12')](function(_0xee22e1){_0x10eb7d[_0xedd6('0x25')]=_0xee22e1;if(_0xef90bb['query'][_0xedd6('0x42')]){_0x390370[_0xedd6('0x43')]=[{'all':!![]}];}if(!_[_0xedd6('0x34')](_0x390370[_0xedd6('0x44')],'id')){_0x390370['attributes'][_0xedd6('0x45')]('id');}return db[_0xedd6('0x3b')][_0xedd6('0x46')](_0x390370);})[_0xedd6('0x12')](function(_0x553522){_0x10eb7d[_0xedd6('0x47')]=_0x553522;if(_0xef90bb[_0xedd6('0x48')][_0xedd6('0x49')]==='true'){var _0x471731=[];for(var _0x1d0410=0x0;_0x1d0410<_0x10eb7d[_0xedd6('0x47')][_0xedd6('0x4a')];_0x1d0410++){_0x471731[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4b'),_0x10eb7d[_0xedd6('0x47')][_0x1d0410][_0xedd6('0x4c')]));_0x471731[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4d'),_0x10eb7d['rows'][_0x1d0410][_0xedd6('0x4c')]));_0x471731[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4e'),_0x10eb7d[_0xedd6('0x47')][_0x1d0410]['dataValues']));_0x471731[_0xedd6('0x45')](get_open_tabs('mail',_0x10eb7d[_0xedd6('0x47')][_0x1d0410][_0xedd6('0x4c')]));_0x471731['push'](get_open_tabs('openchannel',_0x10eb7d[_0xedd6('0x47')][_0x1d0410][_0xedd6('0x4c')]));_0x471731['push'](get_open_tabs(_0xedd6('0x4f'),_0x10eb7d[_0xedd6('0x47')][_0x1d0410][_0xedd6('0x4c')]));}return BPromise[_0xedd6('0x50')](_0x471731)[_0xedd6('0x12')](function(_0xce3f73){return _0x10eb7d;});}else{return _0x10eb7d;}})['then'](respondWithFilteredResult(_0x5c110b,_0x390370))['catch'](handleError(_0x5c110b,null));};exports[_0xedd6('0x51')]=function(_0x5d4ff6,_0x5e5c9e){var _0x2b60c8={'raw':![],'where':{'id':_0x5d4ff6['params']['id']}},_0x793f15={};_0x793f15['model']=_['differenceBy'](_[_0xedd6('0x52')](db[_0xedd6('0x3b')][_0xedd6('0x3c')]),[_0xedd6('0x3f'),'salt']);_0x793f15['query']=_[_0xedd6('0x52')](_0x5d4ff6['query']);_0x793f15[_0xedd6('0x53')]=_['intersection'](_0x793f15[_0xedd6('0x54')],_0x793f15[_0xedd6('0x48')]);_0x2b60c8['attributes']=_[_0xedd6('0x55')](_0x793f15['model'],qs[_0xedd6('0x56')](_0x5d4ff6[_0xedd6('0x48')][_0xedd6('0x56')]));_0x2b60c8[_0xedd6('0x44')]=_0x2b60c8[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x2b60c8[_0xedd6('0x44')]:_0x793f15[_0xedd6('0x54')];if(_0x5d4ff6[_0xedd6('0x48')][_0xedd6('0x42')]){_0x2b60c8['include']=[{'all':!![]}];}_0x2b60c8=_['merge']({},_0x2b60c8,_0x5d4ff6['options']);if(!_[_0xedd6('0x34')](_0x2b60c8[_0xedd6('0x44')],'id')){_0x2b60c8[_0xedd6('0x44')][_0xedd6('0x45')]('id');}return db[_0xedd6('0x3b')][_0xedd6('0x35')](_0x2b60c8)[_0xedd6('0x12')](handleEntityNotFound(_0x5e5c9e,null))[_0xedd6('0x12')](function(_0x587693){var _0x47c887=[];values=_0x587693;if(_0x5d4ff6[_0xedd6('0x48')]['openTabs']===_0xedd6('0x57')){_0x47c887[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4b'),_0x587693[_0xedd6('0x4c')]));_0x47c887[_0xedd6('0x45')](get_open_tabs('sms',_0x587693[_0xedd6('0x4c')]));_0x47c887[_0xedd6('0x45')](get_open_tabs('openchannel',_0x587693[_0xedd6('0x4c')]));_0x47c887[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4f'),_0x587693[_0xedd6('0x4c')]));_0x47c887['push'](get_open_tabs(_0xedd6('0x4e'),_0x587693[_0xedd6('0x4c')]));_0x47c887[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x58'),_0x587693[_0xedd6('0x4c')]));return BPromise['all'](_0x47c887);}else{return values;}})[_0xedd6('0x12')](function(_0x2caf8c){return values;})['then'](respondWithResult(_0x5e5c9e,null))[_0xedd6('0x1d')](handleError(_0x5e5c9e,null));};exports[_0xedd6('0x27')]=function(_0x23cd52,_0x4cc66e){if(_0x23cd52[_0xedd6('0x59')]['id']){delete _0x23cd52[_0xedd6('0x59')]['id'];}delete _0x23cd52[_0xedd6('0x59')][_0xedd6('0x2a')];return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x23cd52[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x4cc66e,null))[_0xedd6('0x12')](saveUpdates(_0x23cd52[_0xedd6('0x59')],null))[_0xedd6('0x12')](respondWithResult(_0x4cc66e,null))[_0xedd6('0x1d')](handleError(_0x4cc66e,null));};exports['describe']=function(_0x3861fd,_0x3bcb82){return db[_0xedd6('0x3b')][_0xedd6('0x5b')]()['then'](respondWithResult(_0x3bcb82,null))[_0xedd6('0x1d')](handleError(_0x3bcb82,null));};exports[_0xedd6('0x5c')]=function(_0x46df7f,_0x37fe40){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x46df7f[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x37fe40,null))['then'](function(_0x557890){if(_0x557890){return _0x557890['addContacts'](_0x46df7f['body'][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x46df7f[_0xedd6('0x59')],['ids','id'])||{});}})['then'](respondWithResult(_0x37fe40,null))[_0xedd6('0x1d')](handleError(_0x37fe40,null));};function validateUser(_0x255fca){return new BPromise(function(_0x3dfa86,_0x4cf86a){if(_0x255fca[_0xedd6('0x5f')])return _0x3dfa86(_0x255fca);return db['Setting'][_0xedd6('0x60')](0x1)[_0xedd6('0x12')](function(_0xffeabc){if(_0xffeabc[_0xedd6('0x61')])authService[_0xedd6('0x62')](_0x255fca[_0xedd6('0x3f')]);db[_0xedd6('0x3b')][_0xedd6('0x63')]('internal')[_0xedd6('0x12')](function(_0x199865){if(_[_0xedd6('0x64')](_0x199865)){_0x255fca[_0xedd6('0x5f')]=_0xffeabc[_0xedd6('0x65')]||0x1;return;}if(_[_0xedd6('0x64')](_0xffeabc[_0xedd6('0x65')])||_0xffeabc['min_internal']===_0x199865){_0x255fca[_0xedd6('0x5f')]=_0x199865+0x1;return;}if(_0xffeabc[_0xedd6('0x65')]>_0x199865){_0x255fca['internal']=_0xffeabc['min_internal'];return;}return db[_0xedd6('0x66')][_0xedd6('0x48')]('select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)',{'type':db[_0xedd6('0x66')][_0xedd6('0x67')][_0xedd6('0x68')]})[_0xedd6('0x12')](function(_0x46d887){if(_0x46d887&&_0x46d887['length']){for(var _0x1008f8=0x0,_0x1c6ad5=_0x46d887[_0xedd6('0x4a')];_0x1008f8<_0x1c6ad5&&_[_0xedd6('0x64')](_0x255fca[_0xedd6('0x5f')]);_0x1008f8++){if(_0xffeabc[_0xedd6('0x65')]<=_0x46d887[_0x1008f8][_0xedd6('0x69')]){_0x255fca[_0xedd6('0x5f')]=_0x46d887[_0x1008f8][_0xedd6('0x69')];}else if(_0xffeabc[_0xedd6('0x65')]>_0x46d887[_0x1008f8][_0xedd6('0x69')]&&_0xffeabc[_0xedd6('0x65')]<=_0x46d887[_0x1008f8]['to']){_0x255fca[_0xedd6('0x5f')]=_0xffeabc[_0xedd6('0x65')];}}}if(_[_0xedd6('0x64')](_0x255fca['internal'])){_0x255fca[_0xedd6('0x5f')]=_0x199865+0x1;}return _0x3dfa86(_0x255fca);});});})[_0xedd6('0x1d')](function(_0x2739de){_0x4cf86a(_0x2739de);});});}function updateUser(_0xa45c46){return new BPromise(function(_0x100eb2,_0xe1c314){try{if(_0xa45c46[_0xedd6('0x6a')]){_0xa45c46[_0xedd6('0x6b')]=_0xa45c46[_0xedd6('0x5f')];_0xa45c46[_0xedd6('0x6c')]={'mailbox':_0xa45c46[_0xedd6('0x5f')],'password':_0xa45c46[_0xedd6('0x3f')],'fullname':_0xa45c46[_0xedd6('0x6d')],'email':_0xa45c46[_0xedd6('0x6e')]};}if(_0xa45c46['role']===_0xedd6('0x2d')){if(!_0xa45c46['permissions'])_0xa45c46[_0xedd6('0x6f')]=[_0xedd6('0x70'),_0xedd6('0x71'),_0xedd6('0x72'),_0xedd6('0x73'),_0xedd6('0x74'),_0xedd6('0x75'),'105',_0xedd6('0x76'),_0xedd6('0x77'),_0xedd6('0x78'),_0xedd6('0x79'),'100',_0xedd6('0x7a'),'114','115'];}_0x100eb2(_0xa45c46);}catch(_0xd2e35d){_0xe1c314(_0xd2e35d);}});}exports[_0xedd6('0x7b')]=function(_0xca4b8c,_0x214802){if(_0xca4b8c[_0xedd6('0x7c')][_0xedd6('0x2a')]===_0xedd6('0x2d'))throw new Error(_0xedd6('0x7d'));if(_0xca4b8c[_0xedd6('0x59')]['role']===_0xedd6('0x7c')&&_0xca4b8c[_0xedd6('0x7c')]['role']!==_0xedd6('0x2b')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0xca4b8c[_0xedd6('0x59')][_0xedd6('0x2a')]===_0xedd6('0x2b')&&_0xca4b8c['user'][_0xedd6('0x2a')]!==_0xedd6('0x2b')){throw new Error(_0xedd6('0x7e'));}return licenseUtil[_0xedd6('0x7f')]([_0xca4b8c['body']])[_0xedd6('0x12')](function(){return validateUser(_0xca4b8c[_0xedd6('0x59')]);})[_0xedd6('0x12')](function(_0x26fa94){return updateUser(_0x26fa94)[_0xedd6('0x12')](function(_0x51a875){if(_0x51a875[_0xedd6('0x2a')]==='admin'){_0x51a875[_0xedd6('0x80')]=_0xca4b8c[_0xedd6('0x7c')]['settingsEnabled'];delete _0x51a875['userProfileId'];}return _0x51a875;});})[_0xedd6('0x12')](function(_0x4212ef){return db[_0xedd6('0x3b')]['create'](_0x4212ef,{'include':[{'model':db[_0xedd6('0x6c')],'as':_0xedd6('0x6c')}]});})[_0xedd6('0x12')](function(_0x2a8e4b){if(_0xca4b8c[_0xedd6('0x59')][_0xedd6('0x2a')]===_0xedd6('0x7c'))return _0x2a8e4b;if(_0xca4b8c['user']['role']!==_0xedd6('0x7c'))return _0x2a8e4b;return db[_0xedd6('0x81')]['find']({'where':{'name':_0x2a8e4b['role']==='agent'?'Agents':'Telephones','userProfileId':_0xca4b8c[_0xedd6('0x7c')][_0xedd6('0x82')]},'raw':!![]})[_0xedd6('0x12')](function(_0x10cffb){if(!_0x10cffb||_0x10cffb[_0xedd6('0x83')]!=0x0)return _0x2a8e4b;return db[_0xedd6('0x37')][_0xedd6('0x7b')]({'name':_0x2a8e4b[_0xedd6('0x36')],'resourceId':_0x2a8e4b['id'],'type':_0x10cffb[_0xedd6('0x36')],'sectionId':_0x10cffb['id']},{})[_0xedd6('0x12')](function(){return _0x2a8e4b;});})[_0xedd6('0x1d')](function(_0x2ed44d){logger[_0xedd6('0x18')](_0xedd6('0x84'),_0x2ed44d);throw _0x2ed44d;});})['then'](respondWithResult(_0x214802,0xc9))[_0xedd6('0x1d')](handleError(_0x214802,null));};exports['bulkCreate']=function(_0x20786b,_0x1616dc){var _0x11419e=_0x20786b[_0xedd6('0x59')];var _0x101f69=[];if(_0x20786b['user'][_0xedd6('0x2a')]===_0xedd6('0x2d'))throw new Error('Unauthorized');if(_['some'](_0x11419e,[_0xedd6('0x2a'),_0xedd6('0x7c')])&&_0x20786b[_0xedd6('0x7c')][_0xedd6('0x2a')]!==_0xedd6('0x2b')){throw new Error(_0xedd6('0x85'));}if(_[_0xedd6('0x86')](_0x11419e,[_0xedd6('0x2a'),_0xedd6('0x2b')])&&_0x20786b[_0xedd6('0x7c')]['role']!==_0xedd6('0x2b')){throw new Error(_0xedd6('0x87'));}return licenseUtil['checkUserLimits'](_0x11419e)[_0xedd6('0x12')](function(){return validateUser(_0x11419e[0x0]);})[_0xedd6('0x12')](function(){for(var _0x1e7c6a=0x1;_0x1e7c6a<_0x11419e[_0xedd6('0x4a')];_0x1e7c6a++){var _0x47eac7=_0x11419e[_0x1e7c6a-0x1][_0xedd6('0x5f')];if(!_0x11419e[_0x1e7c6a][_0xedd6('0x5f')])_0x11419e[_0x1e7c6a][_0xedd6('0x5f')]=_0x47eac7+0x1;_0x101f69[_0xedd6('0x45')](validateUser(_0x11419e[_0x1e7c6a]));}return BPromise[_0xedd6('0x50')](_0x101f69);})[_0xedd6('0x12')](function(){_0x101f69=[];for(var _0x45cd2a=0x0;_0x45cd2a<_0x11419e[_0xedd6('0x4a')];_0x45cd2a++){_0x101f69[_0xedd6('0x45')](updateUser(_0x11419e[_0x45cd2a]));}return BPromise[_0xedd6('0x50')](_0x101f69);})['then'](function(){return BPromise[_0xedd6('0x88')](_0x11419e,function(_0x5ec672){return db[_0xedd6('0x3b')]['create'](_0x5ec672,{'include':[{'model':db[_0xedd6('0x6c')],'as':_0xedd6('0x6c')}]})[_0xedd6('0x12')](function(_0x3d6e64){_0x5ec672['id']=_0x3d6e64['id'];return _0x5ec672;});});})['then'](function(_0x198a32){if(_0x20786b['body']['role']===_0xedd6('0x7c'))return _0x198a32;if(_0x20786b[_0xedd6('0x7c')][_0xedd6('0x2a')]!=='user')return _0x198a32;var _0x5ec1e4=_[_0xedd6('0x86')](_0x198a32,function(_0x3f729f){return _0x3f729f[_0xedd6('0x2a')]===_0xedd6('0x2d')||_0x3f729f['role']===_0xedd6('0x2f');});if(!_0x5ec1e4)return _0x198a32;return db[_0xedd6('0x81')][_0xedd6('0x46')]({'where':{'name':{'$or':[_0xedd6('0x2c'),_0xedd6('0x2e')]},'userProfileId':_0x20786b[_0xedd6('0x7c')][_0xedd6('0x82')]},'raw':!![]})[_0xedd6('0x12')](function(_0x39257e){if(_['isEmpty'](_0x39257e)||!_[_0xedd6('0x86')](_0x39257e,[_0xedd6('0x83'),0x0]))return _0x198a32;_0x101f69=[];var _0x4bb5d1=_(_0x39257e)[_0xedd6('0x32')](function(_0x437f5f){if(_0x437f5f[_0xedd6('0x83')]===0x1)return;return _0x437f5f[_0xedd6('0x36')]==='Agents'?_0xedd6('0x2d'):_0xedd6('0x2f');})[_0xedd6('0x89')]()[_0xedd6('0x33')]();for(var _0x155f6d=0x0;_0x155f6d<_0x198a32[_0xedd6('0x4a')];_0x155f6d++){if(!_[_0xedd6('0x34')](_0x4bb5d1,_0x198a32[_0x155f6d][_0xedd6('0x2a')]))return;var _0x5071f6=_0x198a32[_0x155f6d][_0xedd6('0x2a')]===_0xedd6('0x2d')?_0xedd6('0x2c'):_0xedd6('0x2e');_0x101f69[_0xedd6('0x45')](db[_0xedd6('0x37')]['create']({'name':_0x198a32[_0x155f6d][_0xedd6('0x36')],'resourceId':_0x198a32[_0x155f6d]['id'],'type':_0x5071f6,'sectionId':_[_0xedd6('0x35')](_0x39257e,[_0xedd6('0x36'),_0x5071f6])['id']},{}));}return BPromise[_0xedd6('0x50')](_0x101f69);});})[_0xedd6('0x12')](respondWithResult(_0x1616dc,0xc9))[_0xedd6('0x1d')](handleError(_0x1616dc,null));};exports[_0xedd6('0x8a')]=function(_0x524546,_0x233e8e){if(_0x524546[_0xedd6('0x59')]['id']){delete _0x524546[_0xedd6('0x59')]['id'];}return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x524546[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](function(_0x118b43){if(!_0x118b43)return null;if(_0x118b43['id']===_0x524546[_0xedd6('0x7c')]['id']){if(!_0x524546[_0xedd6('0x59')][_0xedd6('0x8b')]||!_0x524546['body'][_0xedd6('0x8c')]){throw new db[(_0xedd6('0x8d'))]['ValidationError'](_0xedd6('0x8e'));}if(!_0x118b43['authenticate'](_0x524546['body'][_0xedd6('0x8b')])){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x90'));}if(_0x524546[_0xedd6('0x59')][_0xedd6('0x8b')]===_0x524546['body']['newPassword']){throw new db[(_0xedd6('0x8d'))]['ValidationError'](_0xedd6('0x91'));}}else if(_0x524546[_0xedd6('0x7c')][_0xedd6('0x2a')]===_0xedd6('0x2b')){if(!_0x524546[_0xedd6('0x59')]['newPassword']){throw new db['Sequelize'][(_0xedd6('0x8f'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x524546[_0xedd6('0x7c')][_0xedd6('0x2a')]===_0xedd6('0x7c')){if(!_0x524546['body']['newPassword']){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x92'));}if(_0x118b43[_0xedd6('0x2a')]!==_0xedd6('0x2d')){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x7d'));}}else{throw new db['Sequelize'][(_0xedd6('0x8f'))]('Unauthorized');}return _0x118b43;})['then'](handleEntityNotFound(_0x233e8e,null))[_0xedd6('0x12')](function(_0x12f78d){return db[_0xedd6('0x93')][_0xedd6('0x94')]({'attributes':['id',_0xedd6('0x61'),'enforcePasswordHistory',_0xedd6('0x95')]})[_0xedd6('0x12')](function(_0x462909){if(_0x462909[_0xedd6('0x61')])authService[_0xedd6('0x62')](_0x524546[_0xedd6('0x59')]['newPassword']);if(!_0x462909[_0xedd6('0x96')]||!_0x12f78d[_0xedd6('0x97')])return _0x12f78d;authService[_0xedd6('0x98')](_0x524546[_0xedd6('0x59')][_0xedd6('0x8c')],_0x12f78d[_0xedd6('0x97')],_0x462909['passwordHistoryLimit']);return _0x12f78d;})[_0xedd6('0x12')](saveUpdates({'password':_0x524546[_0xedd6('0x59')][_0xedd6('0x8c')],'passwordResetAt':_0x524546[_0xedd6('0x7c')]['id']==_0x524546[_0xedd6('0x5a')]['id']?moment():null,'previousPasswords':authService[_0xedd6('0x99')](_0x524546[_0xedd6('0x59')][_0xedd6('0x8c')],_0x12f78d[_0xedd6('0x97')])},null));})[_0xedd6('0x12')](respondWithResult(_0x233e8e,null))[_0xedd6('0x1d')](handleError(_0x233e8e,null));};exports[_0xedd6('0x9a')]=function(_0x4f2e18,_0x5e444a){var _0x2ac20a=_0x4f2e18['body'][_0xedd6('0x9b')];return db['User'][_0xedd6('0x35')]({'where':{'id':_0x4f2e18[_0xedd6('0x5a')]['id']},'attributes':['id','name',_0xedd6('0x2a'),'online','loginInPause',_0xedd6('0x9c'),_0xedd6('0x9d')]})['then'](handleEntityNotFound(_0x5e444a,null))[_0xedd6('0x12')](function(_0x324d85){if(_0x324d85){if(!utils[_0xedd6('0x9e')](_0x2ac20a)){throw new db[(_0xedd6('0x8d'))]['ValidationError'](_0xedd6('0x9f'));}return _0x324d85[_0xedd6('0xa0')+_['capitalize'](_0x2ac20a[_0xedd6('0xa1')]())+_0xedd6('0xa2')](_0x4f2e18[_0xedd6('0x59')][_0xedd6('0x5d')],{'penalty':_0x4f2e18[_0xedd6('0x59')]['penalty']||0x0})[_0xedd6('0xa3')](function(_0x3b1a2d){for(var _0x2a35ad=0x0;_0x2a35ad<_0x4f2e18[_0xedd6('0x59')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x2a35ad+=0x1){var _0x3b97a3={'UserId':Number(_0x4f2e18[_0xedd6('0x5a')]['id'])};_0x3b97a3[_[_0xedd6('0xa4')](_0x2ac20a['toLowerCase']())+_0xedd6('0xa5')]=Number(_0x4f2e18[_0xedd6('0x59')][_0xedd6('0x5d')][_0x2a35ad]);socket[_0xedd6('0xa6')](_0xedd6('0x7c')+_[_0xedd6('0xa4')](_0x2ac20a['toLowerCase']())+_0xedd6('0xa7'),_0x3b97a3);}return _0x3b1a2d;})[_0xedd6('0x12')](function(){if(_0x2ac20a===_0xedd6('0xa8')){return db[_0xedd6('0xa9')][_0xedd6('0x46')]({'where':{'id':_0x4f2e18[_0xedd6('0x59')][_0xedd6('0x5d')]||[]},'raw':!![],'attributes':['id','name']});}})[_0xedd6('0x12')](function(_0x17e0ef){var _0x52cf9f=_0x324d85[_0xedd6('0x29')]({'plain':!![]});var _0x389762=[];if(_0x2ac20a==='voice'&&_0x52cf9f[_0xedd6('0x2a')]==='agent'&&_0x52cf9f[_0xedd6('0xaa')]){for(var _0x248770=0x0;_0x248770<_0x17e0ef[_0xedd6('0x4a')];_0x248770+=0x1){_0x389762[_0xedd6('0x45')]({'membername':_0x52cf9f['name'],'UserId':_0x52cf9f['id'],'queue_name':_0x17e0ef[_0x248770][_0xedd6('0x36')],'VoiceQueueId':_0x17e0ef[_0x248770]['id'],'interface':_['isNil'](_0x52cf9f['interface'])?util['format']('SIP/%s',_0x52cf9f['name']):_0x52cf9f['interface'],'paused':_0x52cf9f[_0xedd6('0x9c')]||![],'penalty':_0x4f2e18[_0xedd6('0x59')]['penalty']||0x0});}return BPromise[_0xedd6('0x88')](_0x389762,function(_0x54afe2){return db['UserVoiceQueueRt']['upsert'](_0x54afe2);});}return _0x324d85;});}})[_0xedd6('0x12')](respondWithStatusCode(_0x5e444a,null))[_0xedd6('0x1d')](handleError(_0x5e444a,null));};exports['removeQueues']=function(_0x279bda,_0x60a163){var _0x57d145;return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x279bda['params']['id']},'attributes':['id',_0xedd6('0x36'),_0xedd6('0x2a')]})[_0xedd6('0x12')](handleEntityNotFound(_0x60a163,null))['then'](function(_0x1073fd){if(_0x1073fd){_0x57d145=_0x1073fd;if(!_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')]||!utils[_0xedd6('0x9e')](_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')])){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x9f'));}return _0x1073fd['remove'+_[_0xedd6('0xa4')](_0x279bda['query'][_0xedd6('0x9b')][_0xedd6('0xa1')]())+_0xedd6('0xa2')](_0x279bda['query']['ids']);}})[_0xedd6('0x12')](function(_0x28ce25){if(_[_0xedd6('0xab')](_0x279bda[_0xedd6('0x48')][_0xedd6('0x5d')])){for(var _0x1f906f=0x0;_0x1f906f<_0x279bda[_0xedd6('0x48')][_0xedd6('0x5d')]['length'];_0x1f906f+=0x1){var _0x2f6a6d={'UserId':Number(_0x279bda[_0xedd6('0x5a')]['id'])};_0x2f6a6d[_[_0xedd6('0xa4')](_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')][_0xedd6('0xa1')]())+_0xedd6('0xa5')]=Number(_0x279bda[_0xedd6('0x48')][_0xedd6('0x5d')][_0x1f906f]);socket['emit'](_0xedd6('0x7c')+_['capitalize'](_0x279bda['query'][_0xedd6('0x9b')][_0xedd6('0xa1')]())+_0xedd6('0xac'),_0x2f6a6d);}}else{var _0x2f6a6d={'UserId':Number(_0x279bda['params']['id'])};_0x2f6a6d[_[_0xedd6('0xa4')](_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')][_0xedd6('0xa1')]())+_0xedd6('0xa5')]=Number(_0x279bda[_0xedd6('0x48')][_0xedd6('0x5d')]);socket['emit'](_0xedd6('0x7c')+_[_0xedd6('0xa4')](_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')][_0xedd6('0xa1')]())+_0xedd6('0xac'),_0x2f6a6d);}return _0x28ce25;})['then'](function(){if(_0x279bda[_0xedd6('0x48')][_0xedd6('0x9b')]===_0xedd6('0xa8')){return db[_0xedd6('0xad')][_0xedd6('0x28')]({'where':{'UserId':_0x279bda[_0xedd6('0x5a')]['id'],'VoiceQueueId':_0x279bda[_0xedd6('0x48')][_0xedd6('0x5d')]},'individualHooks':!![]})[_0xedd6('0x12')](function(){return _0x57d145;});}return _0x57d145;})[_0xedd6('0x12')](respondWithStatusCode(_0x60a163,null))[_0xedd6('0x1d')](handleError(_0x60a163,null));};exports[_0xedd6('0xae')]=function(_0x488f61,_0x6d79b0){_0x488f61[_0xedd6('0x59')][_0xedd6('0xaf')]=_0x488f61[_0xedd6('0xb0')][_0xedd6('0xb1')];return db['User'][_0xedd6('0x35')]({'where':{'id':_0x488f61[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x6d79b0,null))[_0xedd6('0x12')](saveUpdates(_0x488f61['body'],null))[_0xedd6('0x12')](respondWithResult(_0x6d79b0,null))[_0xedd6('0x1d')](handleError(_0x6d79b0,null));};exports[_0xedd6('0xb2')]=function(_0x316287,_0x33c9bc){var _0x55ac9c=path[_0xedd6('0xb3')](config['root'],'server/files/images/logos/default_profile.png');return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x316287[_0xedd6('0x5a')]['id']},'attributes':['id',_0xedd6('0xaf')],'raw':!![]})[_0xedd6('0x12')](handleEntityNotFound(_0x33c9bc,null))[_0xedd6('0x12')](function(_0x36c643){if(_0x36c643){if(_[_0xedd6('0x64')](_0x36c643['userpic'])){return _0x33c9bc[_0xedd6('0xb4')](_0x55ac9c);}else{if(!fs[_0xedd6('0xb5')](path[_0xedd6('0xb3')](config[_0xedd6('0xb6')],_0xedd6('0xb7'),_0x36c643[_0xedd6('0xaf')]))){return _0x33c9bc['download'](_0x55ac9c);}return _0x33c9bc[_0xedd6('0xb4')](path['join'](config[_0xedd6('0xb6')],'server/files/images/',_0x36c643[_0xedd6('0xaf')]));}}})['catch'](handleError(_0x33c9bc,null));};exports[_0xedd6('0xb8')]=function(_0x5e01df,_0x5691ae){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x5e01df[_0xedd6('0x5a')]['id']},'attributes':['id']})[_0xedd6('0x12')](handleEntityNotFound(_0x5691ae,null))[_0xedd6('0x12')](function(_0x427d39){var _0x44afae=[];values=_0x427d39['dataValues'];_0x44afae[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4b'),_0x427d39['dataValues']));_0x44afae[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x4d'),_0x427d39['dataValues']));_0x44afae[_0xedd6('0x45')](get_open_tabs(_0xedd6('0xb9'),_0x427d39[_0xedd6('0x4c')]));_0x44afae['push'](get_open_tabs(_0xedd6('0x4f'),_0x427d39[_0xedd6('0x4c')]));_0x44afae['push'](get_open_tabs(_0xedd6('0x4e'),_0x427d39['dataValues']));_0x44afae[_0xedd6('0x45')](get_open_tabs(_0xedd6('0x58'),_0x427d39[_0xedd6('0x4c')]));return BPromise[_0xedd6('0x50')](_0x44afae);})['then'](function(_0x4c92ab){var _0x27dd55=[];if(_0x4c92ab){for(var _0x39ad81=0x0;_0x39ad81<values[_0xedd6('0xba')]['length'];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xba')][_0x39ad81];_0x27dd55[_0xedd6('0x45')]({'channel':_0xedd6('0xbb'),'id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}for(var _0x39ad81=0x0;_0x39ad81<values[_0xedd6('0xbd')][_0xedd6('0x4a')];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xbd')][_0x39ad81];_0x27dd55['push']({'channel':_0xedd6('0xbe'),'id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}for(var _0x39ad81=0x0;_0x39ad81<values[_0xedd6('0xbf')][_0xedd6('0x4a')];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xbf')][_0x39ad81];_0x27dd55[_0xedd6('0x45')]({'channel':_0xedd6('0xc0'),'id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}for(var _0x39ad81=0x0;_0x39ad81<values[_0xedd6('0xc1')][_0xedd6('0x4a')];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xc1')][_0x39ad81];_0x27dd55[_0xedd6('0x45')]({'channel':'MAIL','id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}for(var _0x39ad81=0x0;_0x39ad81<values[_0xedd6('0xc2')][_0xedd6('0x4a')];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xc2')][_0x39ad81];_0x27dd55[_0xedd6('0x45')]({'channel':'SMS','id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}for(var _0x39ad81=0x0;_0x39ad81<values['WhatsappOpenTabs']['length'];_0x39ad81++){var _0x4b84ee=values[_0xedd6('0xc3')][_0x39ad81];_0x27dd55[_0xedd6('0x45')]({'channel':_0xedd6('0xc4'),'id':_0x4b84ee['id'],'createdAt':_0x4b84ee[_0xedd6('0xbc')]});}var _0x59e8e4={'count':_0x27dd55[_0xedd6('0x4a')],'rows':_0x27dd55};return _0x59e8e4;}else return null;})['then'](respondWithResult(_0x5691ae,null))[_0xedd6('0x1d')](handleError(_0x5691ae,null));};exports['getContacts']=function(_0x1e8e94,_0x1f3ea7){var _0x3d5f5c={};var _0x14b9a6={};var _0x122724;var _0x45eb50;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x1e8e94[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x1f3ea7,null))[_0xedd6('0x12')](function(_0x2a0c51){if(_0x2a0c51){_0x122724=_0x2a0c51;_0x14b9a6[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xc5')][_0xedd6('0x3c')]);_0x14b9a6['query']=_[_0xedd6('0x52')](_0x1e8e94[_0xedd6('0x48')]);_0x14b9a6['filters']=_[_0xedd6('0x55')](_0x14b9a6[_0xedd6('0x54')],_0x14b9a6[_0xedd6('0x48')]);_0x3d5f5c[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x14b9a6[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x1e8e94['query'][_0xedd6('0x56')]));_0x3d5f5c[_0xedd6('0x44')]=_0x3d5f5c[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x3d5f5c[_0xedd6('0x44')]:_0x14b9a6[_0xedd6('0x54')];_0x3d5f5c[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x1e8e94[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x3d5f5c[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_['pick'](_0x1e8e94[_0xedd6('0x48')],_0x14b9a6[_0xedd6('0x53')]));if(_0x1e8e94[_0xedd6('0x48')][_0xedd6('0x30')]){_0x3d5f5c['where']=_[_0xedd6('0xc8')](_0x3d5f5c[_0xedd6('0x41')],{'$or':_['map'](_0x3d5f5c[_0xedd6('0x44')],function(_0x372ac5){var _0x394896={};_0x394896[_0x372ac5]={'$like':'%'+_0x1e8e94[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x394896;})});}_0x3d5f5c=_[_0xedd6('0xc8')]({},_0x3d5f5c,_0x1e8e94[_0xedd6('0xc9')]);return _0x122724[_0xedd6('0xca')](_0x3d5f5c);}})[_0xedd6('0x12')](function(_0x318249){if(_0x318249){_0x45eb50=_0x318249[_0xedd6('0x4a')];if(_0x1e8e94[_0xedd6('0x48')][_0xedd6('0xcb')]('includeAll')){_0x3d5f5c[_0xedd6('0x43')]=[{'model':db[_0xedd6('0xcc')],'as':_0xedd6('0xcd'),'required':![]},{'model':db[_0xedd6('0xce')],'as':'Tags','attributes':['id',_0xedd6('0x36'),_0xedd6('0xcf')],'where':_0x1e8e94[_0xedd6('0x48')]['tag']?{'id':_0x1e8e94[_0xedd6('0x48')][_0xedd6('0xd0')]}:undefined,'required':_0x1e8e94['query'][_0xedd6('0xd0')]?!![]:![]}];}if(!_0x1e8e94['query'][_0xedd6('0xcb')]('nolimit')){_0x3d5f5c[_0xedd6('0x24')]=qs['limit'](_0x1e8e94[_0xedd6('0x48')][_0xedd6('0x24')]);_0x3d5f5c[_0xedd6('0x22')]=qs['offset'](_0x1e8e94[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x122724[_0xedd6('0xca')](_0x3d5f5c);}})['then'](function(_0x21d157){if(_0x21d157){return _0x21d157?{'count':_0x45eb50,'rows':_0x21d157}:null;}})['then'](respondWithResult(_0x1f3ea7,null))[_0xedd6('0x1d')](handleError(_0x1f3ea7,null));};exports[_0xedd6('0xd1')]=function(_0x546a59,_0xc37a10){var _0x4c6324;var _0x55351f;var _0x50e058={};var _0x265ba6;return db['User'][_0xedd6('0x94')]({'where':{'id':_0x546a59['params']['id']},'attributes':['id',_0xedd6('0x36'),'role']})['then'](handleEntityNotFound(_0xc37a10,null))[_0xedd6('0x12')](function(_0x4568da){if(!utils[_0xedd6('0x9e')](_0x546a59[_0xedd6('0x48')]['channel'])){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x9f'));}_0x4c6324=_0x4568da;var _0x33fa67={};_0x33fa67[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_['capitalize'](_0x546a59[_0xedd6('0x48')][_0xedd6('0x9b')])+_0xedd6('0xd2')][_0xedd6('0x3c')]);_0x33fa67[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x546a59[_0xedd6('0x48')]);_0x33fa67[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x33fa67[_0xedd6('0x54')],_0x33fa67[_0xedd6('0x48')]);_0x50e058[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x33fa67[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x546a59[_0xedd6('0x48')][_0xedd6('0x56')]));_0x50e058['attributes']=_0x50e058[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x50e058['attributes']:_0x33fa67[_0xedd6('0x54')];_0x50e058[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x546a59[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x50e058[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x546a59[_0xedd6('0x48')],_0x33fa67['filters']));if(_0x546a59['query']['filter']){_0x50e058[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x50e058['where'],{'$or':_[_0xedd6('0x32')](_0x50e058['attributes'],function(_0x32d275){var _0x408b08={};_0x408b08[_0x32d275]={'$like':'%'+_0x546a59[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x408b08;})});}_0x50e058=_[_0xedd6('0xc8')]({},_0x50e058,_0x546a59[_0xedd6('0xc9')]);switch(_0x4c6324['role']){case _0xedd6('0x2b'):return db[_[_0xedd6('0xa4')](_0x546a59[_0xedd6('0x48')]['channel'])+_0xedd6('0xd2')]['findAll'](_0x50e058);case _0xedd6('0x7c'):case _0xedd6('0x2d'):return _0x4c6324['get'+_[_0xedd6('0xa4')](_0x546a59[_0xedd6('0x48')][_0xedd6('0x9b')])+_0xedd6('0xa2')](_0x50e058);default:throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0xd4'));}})[_0xedd6('0x12')](function(_0x17bdd2){_0x265ba6=_0x17bdd2[_0xedd6('0x4a')];if(!_0x546a59[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x50e058[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x546a59[_0xedd6('0x48')][_0xedd6('0x24')]);_0x50e058['offset']=qs['offset'](_0x546a59[_0xedd6('0x48')][_0xedd6('0x22')]);}switch(_0x4c6324[_0xedd6('0x2a')]){case'admin':return db[_[_0xedd6('0xa4')](_0x546a59['query']['channel'])+_0xedd6('0xd2')]['findAll'](_0x50e058);case _0xedd6('0x7c'):case _0xedd6('0x2d'):return _0x4c6324['get'+_[_0xedd6('0xa4')](_0x546a59[_0xedd6('0x48')][_0xedd6('0x9b')])+'Queues'](_0x50e058);}})[_0xedd6('0x12')](function(_0x4024f5){return{'count':_0x265ba6,'rows':_0x4024f5};})[_0xedd6('0x12')](respondWithResult(_0xc37a10,null))[_0xedd6('0x1d')](handleError(_0xc37a10,null));};exports[_0xedd6('0xd6')]=function(_0x3e4737,_0xb008f){var _0xeb826b={};var _0x30b321={};var _0x37dd7a;var _0x4aa222;return db['User']['findOne']({'where':{'id':_0x3e4737['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xb008f,null))[_0xedd6('0x12')](function(_0x289a1c){if(_0x289a1c){_0x37dd7a=_0x289a1c;_0x30b321[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xad')][_0xedd6('0x3c')]);_0x30b321[_0xedd6('0x48')]=_['keys'](_0x3e4737[_0xedd6('0x48')]);_0x30b321[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x30b321['model'],_0x30b321[_0xedd6('0x48')]);_0xeb826b['attributes']=_['intersection'](_0x30b321['model'],qs['fields'](_0x3e4737[_0xedd6('0x48')][_0xedd6('0x56')]));_0xeb826b[_0xedd6('0x44')]=_0xeb826b[_0xedd6('0x44')][_0xedd6('0x4a')]?_0xeb826b[_0xedd6('0x44')]:_0x30b321[_0xedd6('0x54')];_0xeb826b[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x3e4737[_0xedd6('0x48')][_0xedd6('0xc7')]);_0xeb826b['where']=qs[_0xedd6('0x53')](_['pick'](_0x3e4737[_0xedd6('0x48')],_0x30b321[_0xedd6('0x53')]));if(_0x3e4737['query'][_0xedd6('0x30')]){_0xeb826b['where']=_[_0xedd6('0xc8')](_0xeb826b[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0xeb826b[_0xedd6('0x44')],function(_0x5d457b){var _0x9a1fb2={};_0x9a1fb2[_0x5d457b]={'$like':'%'+_0x3e4737[_0xedd6('0x48')]['filter']+'%'};return _0x9a1fb2;})});}_0xeb826b=_['merge']({},_0xeb826b,_0x3e4737[_0xedd6('0xc9')]);return _0x37dd7a[_0xedd6('0xd6')](_0xeb826b);}})[_0xedd6('0x12')](function(_0x434a73){if(_0x434a73){_0x4aa222=_0x434a73[_0xedd6('0x4a')];if(!_0x3e4737['query'][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0xeb826b['limit']=qs[_0xedd6('0x24')](_0x3e4737[_0xedd6('0x48')][_0xedd6('0x24')]);_0xeb826b[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x3e4737['query']['offset']);}return _0x37dd7a[_0xedd6('0xd6')](_0xeb826b);}})[_0xedd6('0x12')](function(_0x497c87){if(_0x497c87){return _0x497c87?{'count':_0x4aa222,'rows':_0x497c87}:null;}})['then'](respondWithResult(_0xb008f,null))[_0xedd6('0x1d')](handleError(_0xb008f,null));};exports[_0xedd6('0xd7')]=function(_0x2563c6,_0x418641){var _0x21bc23={};var _0x44925b={};var _0x3ff98f;var _0x14c882;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x2563c6[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x418641,null))['then'](function(_0x18fc92){if(_0x18fc92){_0x3ff98f=_0x18fc92;_0x44925b['model']=_[_0xedd6('0x52')](db[_0xedd6('0xd8')]['rawAttributes']);_0x44925b[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x2563c6['query']);_0x44925b[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x44925b[_0xedd6('0x54')],_0x44925b[_0xedd6('0x48')]);_0x21bc23[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x44925b[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x2563c6[_0xedd6('0x48')][_0xedd6('0x56')]));_0x21bc23[_0xedd6('0x44')]=_0x21bc23[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x21bc23[_0xedd6('0x44')]:_0x44925b[_0xedd6('0x54')];_0x21bc23[_0xedd6('0xc6')]=qs['sort'](_0x2563c6['query'][_0xedd6('0xc7')]);_0x21bc23[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x2563c6[_0xedd6('0x48')],_0x44925b[_0xedd6('0x53')]));if(_0x2563c6[_0xedd6('0x48')]['filter']){_0x21bc23[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x21bc23[_0xedd6('0x41')],{'$or':_['map'](_0x21bc23['attributes'],function(_0x2da130){var _0x4c4f29={};_0x4c4f29[_0x2da130]={'$like':'%'+_0x2563c6[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x4c4f29;})});}_0x21bc23=_[_0xedd6('0xc8')]({},_0x21bc23,_0x2563c6[_0xedd6('0xc9')]);return _0x3ff98f[_0xedd6('0xd7')](_0x21bc23);}})['then'](function(_0x57b22d){if(_0x57b22d){_0x14c882=_0x57b22d[_0xedd6('0x4a')];if(!_0x2563c6[_0xedd6('0x48')][_0xedd6('0xcb')]('nolimit')){_0x21bc23[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x2563c6[_0xedd6('0x48')][_0xedd6('0x24')]);_0x21bc23['offset']=qs[_0xedd6('0x22')](_0x2563c6['query'][_0xedd6('0x22')]);}return _0x3ff98f['getGroups'](_0x21bc23);}})[_0xedd6('0x12')](function(_0x108120){if(_0x108120){return _0x108120?{'count':_0x14c882,'rows':_0x108120}:null;}})[_0xedd6('0x12')](respondWithResult(_0x418641,null))[_0xedd6('0x1d')](handleError(_0x418641,null));};exports['getRecordings']=function(_0x5ace39,_0x5675b8){var _0x86e52d={'raw':!![],'where':{}};var _0x24de25={};var _0x1de42a={'count':0x0,'rows':[]};return db['User'][_0xedd6('0x94')]({'where':{'id':_0x5ace39[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x5675b8,null))['then'](function(_0x56da5d){if(_0x56da5d){_0x24de25[_0xedd6('0x54')]=_['keys'](db['VoiceRecording'][_0xedd6('0x3c')]);_0x24de25[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x5ace39[_0xedd6('0x48')]);_0x24de25[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x24de25[_0xedd6('0x54')],_0x24de25[_0xedd6('0x48')]);_0x86e52d[_0xedd6('0x44')]=_['intersection'](_0x24de25['model'],qs[_0xedd6('0x56')](_0x5ace39[_0xedd6('0x48')][_0xedd6('0x56')]));_0x86e52d[_0xedd6('0x44')]=_0x86e52d['attributes'][_0xedd6('0x4a')]?_0x86e52d[_0xedd6('0x44')]:_0x24de25[_0xedd6('0x54')];if(!_0x5ace39['query'][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x86e52d['limit']=qs[_0xedd6('0x24')](_0x5ace39[_0xedd6('0x48')]['limit']);_0x86e52d[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x5ace39[_0xedd6('0x48')][_0xedd6('0x22')]);}_0x86e52d[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x5ace39['query'][_0xedd6('0xc7')]);_0x86e52d[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x5ace39[_0xedd6('0x48')],_0x24de25[_0xedd6('0x53')]));_0x86e52d['where'][_0xedd6('0xd9')]=_0x56da5d['id'];if(_0x5ace39[_0xedd6('0x48')][_0xedd6('0x30')]){_0x86e52d[_0xedd6('0x41')]=_['merge'](_0x86e52d[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x86e52d['attributes'],function(_0x210319){var _0x17d9d7={};_0x17d9d7[_0x210319]={'$like':'%'+_0x5ace39['query']['filter']+'%'};return _0x17d9d7;})});}_0x86e52d=_[_0xedd6('0xc8')]({},_0x86e52d,_0x5ace39[_0xedd6('0xc9')]);return db[_0xedd6('0xda')][_0xedd6('0x25')]({'where':_0x86e52d[_0xedd6('0x41')]})[_0xedd6('0x12')](function(_0x14d822){_0x1de42a[_0xedd6('0x25')]=_0x14d822;if(_0x5ace39['query'][_0xedd6('0x42')]){_0x86e52d['include']=[{'all':!![]}];}return db[_0xedd6('0xda')]['findAll'](_0x86e52d);})[_0xedd6('0x12')](function(_0x4e8147){_0x1de42a[_0xedd6('0x47')]=_0x4e8147;return _0x1de42a;});}})[_0xedd6('0x12')](respondWithFilteredResult(_0x5675b8,_0x86e52d))['catch'](handleError(_0x5675b8,null));};exports[_0xedd6('0xdb')]=function(_0xc05ebd,_0x1a50e4){var _0x3c8489={'raw':!![],'where':{}};var _0x163e99={};var _0x4e47ce={'count':0x0,'rows':[]};return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0xc05ebd['params']['id']}})['then'](handleEntityNotFound(_0x1a50e4,null))[_0xedd6('0x12')](function(_0x2b7324){if(_0x2b7324){_0x163e99[_0xedd6('0x54')]=_['keys'](db[_0xedd6('0xdc')][_0xedd6('0x3c')]);_0x163e99[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0xc05ebd[_0xedd6('0x48')]);_0x163e99[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x163e99['model'],_0x163e99[_0xedd6('0x48')]);_0x3c8489['attributes']=_[_0xedd6('0x55')](_0x163e99[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0xc05ebd[_0xedd6('0x48')]['fields']));_0x3c8489[_0xedd6('0x44')]=_0x3c8489[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x3c8489[_0xedd6('0x44')]:_0x163e99[_0xedd6('0x54')];if(!_0xc05ebd['query'][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x3c8489['limit']=qs[_0xedd6('0x24')](_0xc05ebd[_0xedd6('0x48')][_0xedd6('0x24')]);_0x3c8489[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0xc05ebd[_0xedd6('0x48')]['offset']);}_0x3c8489[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0xc05ebd['query']['sort']);_0x3c8489[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_['pick'](_0xc05ebd['query'],_0x163e99[_0xedd6('0x53')]));_0x3c8489[_0xedd6('0x41')]['UserId']=_0x2b7324['id'];if(_0xc05ebd['query'][_0xedd6('0x30')]){_0x3c8489[_0xedd6('0x41')]=_['merge'](_0x3c8489[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x3c8489[_0xedd6('0x44')],function(_0x2f89af){var _0x1b2bcc={};_0x1b2bcc[_0x2f89af]={'$like':'%'+_0xc05ebd[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x1b2bcc;})});}_0x3c8489=_['merge']({},_0x3c8489,_0xc05ebd[_0xedd6('0xc9')]);return db[_0xedd6('0xdc')]['count']({'where':_0x3c8489[_0xedd6('0x41')]})[_0xedd6('0x12')](function(_0x2e013d){_0x4e47ce[_0xedd6('0x25')]=_0x2e013d;if(_0xc05ebd[_0xedd6('0x48')][_0xedd6('0x42')]){_0x3c8489[_0xedd6('0x43')]=[{'all':!![]}];}return db[_0xedd6('0xdc')]['findAll'](_0x3c8489);})[_0xedd6('0x12')](function(_0x3bfb64){_0x4e47ce[_0xedd6('0x47')]=_0x3bfb64;return _0x4e47ce;});}})[_0xedd6('0x12')](respondWithFilteredResult(_0x1a50e4,_0x3c8489))[_0xedd6('0x1d')](handleError(_0x1a50e4,null));};exports[_0xedd6('0xdd')]=function(_0x1aa37f,_0xcaa2a9){var _0x16e7f4={};var _0x11b106={};var _0x3ee5aa;var _0x1d0cb0;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x1aa37f[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xcaa2a9,null))['then'](function(_0x44e5b0){if(_0x44e5b0){_0x3ee5aa=_0x44e5b0;_0x11b106['model']=_[_0xedd6('0x52')](db['ChatInteraction'][_0xedd6('0x3c')]);_0x11b106['query']=_[_0xedd6('0x52')](_0x1aa37f[_0xedd6('0x48')]);_0x11b106[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x11b106[_0xedd6('0x54')],_0x11b106['query']);_0x16e7f4['attributes']=_['intersection'](_0x11b106['model'],qs['fields'](_0x1aa37f['query'][_0xedd6('0x56')]));_0x16e7f4['attributes']=_0x16e7f4[_0xedd6('0x44')]['length']?_0x16e7f4['attributes']:_0x11b106[_0xedd6('0x54')];_0x16e7f4['order']=qs[_0xedd6('0xc7')](_0x1aa37f[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x16e7f4[_0xedd6('0x41')]=qs['filters'](_[_0xedd6('0xd3')](_0x1aa37f[_0xedd6('0x48')],_0x11b106[_0xedd6('0x53')]));if(_0x1aa37f[_0xedd6('0x48')]['filter']){_0x16e7f4[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x16e7f4['where'],{'$or':_[_0xedd6('0x32')](_0x16e7f4[_0xedd6('0x44')],function(_0x16f28a){var _0x4f7b9e={};_0x4f7b9e[_0x16f28a]={'$like':'%'+_0x1aa37f[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x4f7b9e;})});}_0x16e7f4=_[_0xedd6('0xc8')]({},_0x16e7f4,_0x1aa37f[_0xedd6('0xc9')]);return _0x3ee5aa['getChatInteractions'](_0x16e7f4);}})[_0xedd6('0x12')](function(_0x19b689){if(_0x19b689){_0x1d0cb0=_0x19b689['length'];if(!_0x1aa37f[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x16e7f4['limit']=qs[_0xedd6('0x24')](_0x1aa37f[_0xedd6('0x48')][_0xedd6('0x24')]);_0x16e7f4[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x1aa37f[_0xedd6('0x48')]['offset']);}return _0x3ee5aa[_0xedd6('0xdd')](_0x16e7f4);}})[_0xedd6('0x12')](function(_0x3e0740){if(_0x3e0740){return _0x3e0740?{'count':_0x1d0cb0,'rows':_0x3e0740}:null;}})[_0xedd6('0x12')](respondWithResult(_0xcaa2a9,null))[_0xedd6('0x1d')](handleError(_0xcaa2a9,null));};exports[_0xedd6('0xde')]=function(_0x2267c8,_0x26a6fb){var _0x40ae7d={};var _0x190fe1={};var _0x108b3e;var _0xb8e38c;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x2267c8['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x26a6fb,null))[_0xedd6('0x12')](function(_0x455550){if(_0x455550){_0x108b3e=_0x455550;_0x190fe1[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xdf')][_0xedd6('0x3c')]);_0x190fe1[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x2267c8[_0xedd6('0x48')]);_0x190fe1[_0xedd6('0x53')]=_['intersection'](_0x190fe1['model'],_0x190fe1['query']);_0x40ae7d[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x190fe1['model'],qs[_0xedd6('0x56')](_0x2267c8[_0xedd6('0x48')]['fields']));_0x40ae7d[_0xedd6('0x44')]=_0x40ae7d[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x40ae7d['attributes']:_0x190fe1[_0xedd6('0x54')];_0x40ae7d[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x2267c8[_0xedd6('0x48')]['sort']);_0x40ae7d[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x2267c8[_0xedd6('0x48')],_0x190fe1['filters']));if(_0x2267c8[_0xedd6('0x48')][_0xedd6('0x30')]){_0x40ae7d[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x40ae7d['where'],{'$or':_[_0xedd6('0x32')](_0x40ae7d[_0xedd6('0x44')],function(_0x4e7eed){var _0x5ee0fd={};_0x5ee0fd[_0x4e7eed]={'$like':'%'+_0x2267c8['query'][_0xedd6('0x30')]+'%'};return _0x5ee0fd;})});}_0x40ae7d=_[_0xedd6('0xc8')]({},_0x40ae7d,_0x2267c8['options']);return _0x108b3e[_0xedd6('0xde')](_0x40ae7d);}})[_0xedd6('0x12')](function(_0x4b052a){if(_0x4b052a){_0xb8e38c=_0x4b052a[_0xedd6('0x4a')];if(!_0x2267c8[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x40ae7d[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x2267c8['query']['limit']);_0x40ae7d[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x2267c8[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x108b3e['getOpenchannelInteractions'](_0x40ae7d);}})[_0xedd6('0x12')](function(_0x1a8c99){if(_0x1a8c99){return _0x1a8c99?{'count':_0xb8e38c,'rows':_0x1a8c99}:null;}})['then'](respondWithResult(_0x26a6fb,null))[_0xedd6('0x1d')](handleError(_0x26a6fb,null));};exports['getMailInteractions']=function(_0x13ef2d,_0x24757e){var _0x49dc90={'raw':!![],'where':{}};var _0x3e60d0={};var _0xccd1e2={'count':0x0,'rows':[]};return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x13ef2d[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x24757e,null))['then'](function(_0x3cdf0a){if(_0x3cdf0a){_0x3e60d0[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xe0')]['rawAttributes']);_0x3e60d0[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x13ef2d[_0xedd6('0x48')]);_0x3e60d0[_0xedd6('0x53')]=_['intersection'](_0x3e60d0['model'],_0x3e60d0[_0xedd6('0x48')]);_0x49dc90[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x3e60d0[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x13ef2d[_0xedd6('0x48')][_0xedd6('0x56')]));_0x49dc90[_0xedd6('0x44')]=_0x49dc90[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x49dc90['attributes']:_0x3e60d0[_0xedd6('0x54')];if(!_0x13ef2d[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x49dc90[_0xedd6('0x24')]=qs['limit'](_0x13ef2d[_0xedd6('0x48')][_0xedd6('0x24')]);_0x49dc90[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x13ef2d[_0xedd6('0x48')]['offset']);}_0x49dc90[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x13ef2d['query']['sort']);_0x49dc90[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x13ef2d[_0xedd6('0x48')],_0x3e60d0['filters']));_0x49dc90[_0xedd6('0x41')]['UserId']=_0x3cdf0a['id'];if(_0x13ef2d[_0xedd6('0x48')][_0xedd6('0x30')]){_0x49dc90[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x49dc90[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x49dc90[_0xedd6('0x44')],function(_0x47e950){var _0x46fcb1={};_0x46fcb1[_0x47e950]={'$like':'%'+_0x13ef2d[_0xedd6('0x48')]['filter']+'%'};return _0x46fcb1;})});}_0x49dc90=_[_0xedd6('0xc8')]({},_0x49dc90,_0x13ef2d[_0xedd6('0xc9')]);return db[_0xedd6('0xe0')]['count']({'where':_0x49dc90[_0xedd6('0x41')]})[_0xedd6('0x12')](function(_0x3ba794){_0xccd1e2[_0xedd6('0x25')]=_0x3ba794;if(_0x13ef2d['query'][_0xedd6('0x42')]){_0x49dc90[_0xedd6('0x43')]=[{'all':!![]}];}return db[_0xedd6('0xe0')]['findAll'](_0x49dc90);})['then'](function(_0x4773d6){_0xccd1e2[_0xedd6('0x47')]=_0x4773d6;return _0xccd1e2;});}})[_0xedd6('0x12')](respondWithFilteredResult(_0x24757e,_0x49dc90))[_0xedd6('0x1d')](handleError(_0x24757e,null));};exports['getSmsInteractions']=function(_0x57d88a,_0x36d055){var _0x926141={};var _0x4d3afb={};var _0x414d47;var _0x43e528;return db['User'][_0xedd6('0x94')]({'where':{'id':_0x57d88a['params']['id']}})['then'](handleEntityNotFound(_0x36d055,null))[_0xedd6('0x12')](function(_0x119528){if(_0x119528){_0x414d47=_0x119528;_0x4d3afb[_0xedd6('0x54')]=_['keys'](db['SmsInteraction'][_0xedd6('0x3c')]);_0x4d3afb[_0xedd6('0x48')]=_['keys'](_0x57d88a[_0xedd6('0x48')]);_0x4d3afb['filters']=_['intersection'](_0x4d3afb[_0xedd6('0x54')],_0x4d3afb['query']);_0x926141['attributes']=_['intersection'](_0x4d3afb['model'],qs['fields'](_0x57d88a['query']['fields']));_0x926141[_0xedd6('0x44')]=_0x926141[_0xedd6('0x44')]['length']?_0x926141[_0xedd6('0x44')]:_0x4d3afb[_0xedd6('0x54')];_0x926141[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x57d88a['query'][_0xedd6('0xc7')]);_0x926141[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x57d88a[_0xedd6('0x48')],_0x4d3afb[_0xedd6('0x53')]));if(_0x57d88a['query'][_0xedd6('0x30')]){_0x926141[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x926141[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x926141[_0xedd6('0x44')],function(_0x14012c){var _0x14e26a={};_0x14e26a[_0x14012c]={'$like':'%'+_0x57d88a['query'][_0xedd6('0x30')]+'%'};return _0x14e26a;})});}_0x926141=_[_0xedd6('0xc8')]({},_0x926141,_0x57d88a[_0xedd6('0xc9')]);return _0x414d47[_0xedd6('0xe1')](_0x926141);}})['then'](function(_0x1214d1){if(_0x1214d1){_0x43e528=_0x1214d1['length'];if(!_0x57d88a[_0xedd6('0x48')]['hasOwnProperty'](_0xedd6('0xd5'))){_0x926141[_0xedd6('0x24')]=qs['limit'](_0x57d88a[_0xedd6('0x48')][_0xedd6('0x24')]);_0x926141[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x57d88a[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x414d47[_0xedd6('0xe1')](_0x926141);}})['then'](function(_0x36967f){if(_0x36967f){return _0x36967f?{'count':_0x43e528,'rows':_0x36967f}:null;}})['then'](respondWithResult(_0x36d055,null))[_0xedd6('0x1d')](handleError(_0x36d055,null));};exports[_0xedd6('0xe2')]=function(_0x423910,_0x47d934){var _0x55f07c={};var _0x280286={};var _0x4361c5;var _0x13bdec;return db[_0xedd6('0x3b')]['findOne']({'where':{'id':_0x423910['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x47d934,null))[_0xedd6('0x12')](function(_0x40314d){if(_0x40314d){_0x4361c5=_0x40314d;_0x280286[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xe3')][_0xedd6('0x3c')]);_0x280286['query']=_['keys'](_0x423910[_0xedd6('0x48')]);_0x280286['filters']=_[_0xedd6('0x55')](_0x280286[_0xedd6('0x54')],_0x280286[_0xedd6('0x48')]);_0x55f07c['attributes']=_[_0xedd6('0x55')](_0x280286[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x423910[_0xedd6('0x48')][_0xedd6('0x56')]));_0x55f07c[_0xedd6('0x44')]=_0x55f07c[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x55f07c[_0xedd6('0x44')]:_0x280286[_0xedd6('0x54')];_0x55f07c[_0xedd6('0xc6')]=qs['sort'](_0x423910[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x55f07c[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_['pick'](_0x423910['query'],_0x280286[_0xedd6('0x53')]));if(_0x423910[_0xedd6('0x48')][_0xedd6('0x30')]){_0x55f07c[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x55f07c[_0xedd6('0x41')],{'$or':_['map'](_0x55f07c[_0xedd6('0x44')],function(_0x5d9c3e){var _0x2c7743={};_0x2c7743[_0x5d9c3e]={'$like':'%'+_0x423910[_0xedd6('0x48')]['filter']+'%'};return _0x2c7743;})});}_0x55f07c=_['merge']({},_0x55f07c,_0x423910[_0xedd6('0xc9')]);return _0x4361c5[_0xedd6('0xe2')](_0x55f07c);}})[_0xedd6('0x12')](function(_0x2d31c7){if(_0x2d31c7){_0x13bdec=_0x2d31c7[_0xedd6('0x4a')];if(!_0x423910['query'][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x55f07c[_0xedd6('0x24')]=qs['limit'](_0x423910['query']['limit']);_0x55f07c[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x423910['query'][_0xedd6('0x22')]);}return _0x4361c5[_0xedd6('0xe2')](_0x55f07c);}})[_0xedd6('0x12')](function(_0x155f91){if(_0x155f91){return _0x155f91?{'count':_0x13bdec,'rows':_0x155f91}:null;}})['then'](respondWithResult(_0x47d934,null))['catch'](handleError(_0x47d934,null));};exports[_0xedd6('0xe4')]=function(_0x3df75b,_0x22e1eb){var _0x42b240={};var _0x503e1a={};var _0x4d1a50;var _0x5b7ae2;return db['User'][_0xedd6('0x94')]({'where':{'id':_0x3df75b[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x22e1eb,null))[_0xedd6('0x12')](function(_0x49d99a){if(_0x49d99a){_0x4d1a50=_0x49d99a;_0x503e1a[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xe5')][_0xedd6('0x3c')]);_0x503e1a[_0xedd6('0x48')]=_['keys'](_0x3df75b[_0xedd6('0x48')]);_0x503e1a[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x503e1a[_0xedd6('0x54')],_0x503e1a['query']);_0x42b240[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x503e1a['model'],qs[_0xedd6('0x56')](_0x3df75b['query']['fields']));_0x42b240['attributes']=_0x42b240[_0xedd6('0x44')]['length']?_0x42b240[_0xedd6('0x44')]:_0x503e1a[_0xedd6('0x54')];_0x42b240[_0xedd6('0xc6')]=qs['sort'](_0x3df75b[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x42b240[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x3df75b[_0xedd6('0x48')],_0x503e1a[_0xedd6('0x53')]));if(_0x3df75b['query'][_0xedd6('0x30')]){_0x42b240['where']=_['merge'](_0x42b240[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x42b240[_0xedd6('0x44')],function(_0x36cfe2){var _0xfc54aa={};_0xfc54aa[_0x36cfe2]={'$like':'%'+_0x3df75b[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0xfc54aa;})});}_0x42b240=_[_0xedd6('0xc8')]({},_0x42b240,_0x3df75b['options']);return _0x4d1a50['getWhatsappInteractions'](_0x42b240);}})[_0xedd6('0x12')](function(_0x135416){if(_0x135416){_0x5b7ae2=_0x135416[_0xedd6('0x4a')];if(!_0x3df75b[_0xedd6('0x48')]['hasOwnProperty'](_0xedd6('0xd5'))){_0x42b240[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x3df75b[_0xedd6('0x48')][_0xedd6('0x24')]);_0x42b240[_0xedd6('0x22')]=qs['offset'](_0x3df75b[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x4d1a50['getWhatsappInteractions'](_0x42b240);}})['then'](function(_0x18859e){if(_0x18859e){return _0x18859e?{'count':_0x5b7ae2,'rows':_0x18859e}:null;}})[_0xedd6('0x12')](respondWithResult(_0x22e1eb,null))[_0xedd6('0x1d')](handleError(_0x22e1eb,null));};exports[_0xedd6('0xe6')]=function(_0x4f62be,_0x10e14d,_0x52f1de){var _0x59c3e2;var _0x1b7d09;var _0x5881cb;var _0x535b23=!_[_0xedd6('0x64')](_0x4f62be['params']['id'])?_0x4f62be[_0xedd6('0x5a')]['id']:!_[_0xedd6('0x64')](_0x4f62be['user']['id'])?_0x4f62be[_0xedd6('0x7c')]['id']:null;return db['User']['find']({'where':{'id':_0x535b23,'role':{'$or':[_0xedd6('0x2b'),_0xedd6('0x7c'),_0xedd6('0x2d')]}},'attributes':['id',_0xedd6('0x36'),'phone',_0xedd6('0xe7'),'role',_0xedd6('0x5f'),_0xedd6('0xe8')]})['then'](function(_0x14ec29){if(_0x14ec29){if(_0x14ec29[_0xedd6('0x2a')]==='agent'){_0x59c3e2=_0x14ec29;if(_0x4f62be[_0xedd6('0x59')][_0xedd6('0x9d')]){_0x5881cb=util['format']('LOCAL/%s@from-sip/n',_0x59c3e2[_0x4f62be[_0xedd6('0x59')][_0xedd6('0x9d')]]);}else if(_0x4f62be['body']['intrf']){_0x5881cb=util['format']('SIP/%s',_0x4f62be[_0xedd6('0x59')][_0xedd6('0xe9')]);}else{_0x5881cb=util[_0xedd6('0xea')]('SIP/%s',_0x59c3e2[_0xedd6('0x36')]);}socket['to'](util['format'](_0xedd6('0xeb'),_0x59c3e2[_0xedd6('0x36')]))[_0xedd6('0xa6')](_0xedd6('0xec'),{'user':{'id':_0x59c3e2['id'],'name':_0x59c3e2['name']},'ip':_0x4f62be[_0xedd6('0xed')][_0xedd6('0xee')]||_0x4f62be['connection'][_0xedd6('0xef')]||_0x4f62be[_0xedd6('0xf0')]['remoteAddress']||_0x4f62be[_0xedd6('0xf1')][_0xedd6('0xf0')][_0xedd6('0xef')]});return db['UserVoiceQueueRt'][_0xedd6('0x28')]({'where':{'membername':_0x59c3e2[_0xedd6('0x36')]},'individualHooks':!![]});}}else{throw new db[(_0xedd6('0x8d'))]['ValidationError'](_0xedd6('0xf2'));}})['then'](function(){if(_0x59c3e2){return _0x59c3e2['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x1f47a4){if(_0x59c3e2){var _0x4cac41=[];if(_0x1f47a4){_0x1b7d09=_0x1f47a4;if(_0x1b7d09['length']){for(var _0x12e306=0x0;_0x12e306<_0x1b7d09[_0xedd6('0x4a')];_0x12e306++){_0x4cac41[_0xedd6('0x45')]({'membername':_0x59c3e2['name'],'UserId':_0x59c3e2['id'],'queue_name':_0x1b7d09[_0x12e306]['name'],'VoiceQueueId':_0x1b7d09[_0x12e306]['id'],'interface':_0x5881cb,'paused':_0x59c3e2['loginInPause']||![],'penalty':_0x1b7d09[_0x12e306][_0xedd6('0xf3')]||0x0});}return BPromise[_0xedd6('0x88')](_0x4cac41,function(_0x50e1f7){return db[_0xedd6('0xad')][_0xedd6('0xf4')](_0x50e1f7);});}}}})[_0xedd6('0x12')](function(){if(_0x59c3e2){return db[_0xedd6('0xf5')]['findAll']({'where':{'membername':_0x59c3e2[_0xedd6('0x36')],'exitAt':null}});}})[_0xedd6('0x12')](function(_0x1a1865){if(_0x59c3e2){var _0x35e07c=[];_0x1a1865['forEach'](function(_0x433bad){_0x35e07c[_0xedd6('0x45')](_0x433bad[_0xedd6('0x27')]({'exitAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6'))}));});return BPromise[_0xedd6('0x50')](_0x35e07c);}})[_0xedd6('0x12')](function(){if(_0x59c3e2){var _0x68190d=[];var _0x50fd4a=[];var _0x54fc33=utils['getChannels']();var _0x3aab2a={'membername':_0x59c3e2['name'],'interface':_0x5881cb,'enterAt':moment()[_0xedd6('0xea')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x59c3e2[_0xedd6('0x2a')],'internal':_0x59c3e2[_0xedd6('0x5f')]};_0x54fc33[_0xedd6('0xf7')](function(_0x24c750){_0x68190d[_0xedd6('0x45')](_[_0xedd6('0xc8')]({'channel':_0x24c750,'type':_0xedd6('0xf8'),'data1':_0x4f62be[_0xedd6('0x59')][_0xedd6('0xf9')],'data2':_0x5881cb},_0x3aab2a));if(_0x59c3e2[_0xedd6('0xe8')]){_0x50fd4a[_0xedd6('0x45')](_[_0xedd6('0xc8')]({'channel':_0x24c750,'type':'PAUSE','data1':_0xedd6('0xfa')},_0x3aab2a));}});return db['MemberReport'][_0xedd6('0xfb')](_0x68190d[_0xedd6('0xfc')](_0x50fd4a),{'individualHooks':!![]});}})[_0xedd6('0x12')](function(){if(_0x59c3e2){return _0x59c3e2['update']({'online':!![],'lastLoginAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6')),'voicePause':_0x59c3e2['loginInPause']||![],'mailPause':_0x59c3e2[_0xedd6('0xe8')]||![],'chatPause':_0x59c3e2['loginInPause']||![],'faxPause':_0x59c3e2['loginInPause']||![],'smsPause':_0x59c3e2[_0xedd6('0xe8')]||![],'openchannelPause':_0x59c3e2[_0xedd6('0xe8')]||![],'whatsappPause':_0x59c3e2[_0xedd6('0xe8')]||![],'pauseType':_0x59c3e2['loginInPause']?_0xedd6('0xfa'):null,'interface':_0x5881cb,'lastPauseAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6'))});}})[_0xedd6('0x12')](function(_0x51f7c6){if(_0x4f62be[_0xedd6('0xfd')]){return _0x52f1de();}else{return BPromise[_0xedd6('0xfe')](_0x51f7c6)[_0xedd6('0x12')](respondWithResult(_0x10e14d,null));}})['catch'](handleError(_0x10e14d,null));};exports[_0xedd6('0xff')]=function(_0x50cb11,_0x37e95a){var _0x284997;return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x50cb11[_0xedd6('0x5a')]['id'],'role':_0xedd6('0x2d')},'attributes':['id',_0xedd6('0x36'),'role']})[_0xedd6('0x12')](handleEntityNotFound(_0x37e95a,null))[_0xedd6('0x12')](function(_0x448724){if(_0x448724){_0x284997=_0x448724;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x284997[_0xedd6('0x36')]},'individualHooks':!![]});}})[_0xedd6('0x12')](function(){return db['MemberReport'][_0xedd6('0x46')]({'where':{'membername':_0x284997[_0xedd6('0x36')],'exitAt':null}});})[_0xedd6('0x12')](function(_0x4a2148){var _0x2f6f46=[];_0x4a2148['forEach'](function(_0x31ae33){_0x2f6f46[_0xedd6('0x45')](_0x31ae33[_0xedd6('0x27')]({'exitAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6'))}));});return BPromise['all'](_0x2f6f46);})['then'](function(){return _0x284997['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xedd6('0x12')](respondWithResult(_0x37e95a,null))[_0xedd6('0x1d')](handleError(_0x37e95a,null));};exports[_0xedd6('0x100')]=function(_0x53f667,_0x4b4889){var _0x38d000;return db['UserVoiceQueueRt'][_0xedd6('0x27')]({'paused':0x1},{'where':{'UserId':_0x53f667['params']['id']},'individualHooks':!![]})[_0xedd6('0x12')](function(){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x53f667['params']['id'],'role':_0xedd6('0x2d')},'attributes':['id',_0xedd6('0x36'),_0xedd6('0x2a'),_0xedd6('0x5f'),_0xedd6('0x9d')]});})[_0xedd6('0x12')](handleEntityNotFound(_0x4b4889,null))[_0xedd6('0x12')](function(_0x32f66b){if(_0x32f66b){_0x38d000=_0x32f66b;return respondWithRpcPromise(_0xedd6('0x101'),'pause',{'id':_0x38d000['id'],'name':_0x38d000[_0xedd6('0x36')],'pause':!![]});}})[_0xedd6('0x12')](function(){if(_0x38d000){return db[_0xedd6('0xf5')][_0xedd6('0x46')]({'where':{'membername':_0x38d000[_0xedd6('0x36')],'type':_0xedd6('0x102'),'exitAt':null}});}})[_0xedd6('0x12')](function(_0x9b5f77){if(_0x9b5f77[_0xedd6('0x4a')]){var _0x16066e=moment()[_0xedd6('0xea')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x163fdc=0x0,_0x2c0f78=_0x9b5f77['length'];_0x163fdc<_0x2c0f78;_0x163fdc++){_0x9b5f77[_0x163fdc][_0xedd6('0x103')]({'exitAt':_0x16066e});}}})['then'](function(){var _0x53397f=[];var _0x165d1b=utils['getChannels']();_0x165d1b[_0xedd6('0xf7')](function(_0x438054){_0x53397f[_0xedd6('0x45')]({'channel':_0x438054,'membername':_0x38d000['name'],'interface':_['isNil'](_0x38d000[_0xedd6('0x9d')])?util[_0xedd6('0xea')](_0xedd6('0x104'),_0x38d000[_0xedd6('0x36')]):_0x38d000[_0xedd6('0x9d')],'type':_0xedd6('0x102'),'enterAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6')),'data1':_0x53f667[_0xedd6('0x59')][_0xedd6('0x3d')]||_0xedd6('0x105'),'role':_0x38d000[_0xedd6('0x2a')],'internal':_0x38d000[_0xedd6('0x5f')]});});return db[_0xedd6('0xf5')][_0xedd6('0xfb')](_0x53397f,{'individualHooks':!![]});})['then'](function(){return _0x38d000[_0xedd6('0x27')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x53f667[_0xedd6('0x59')]['type']||_0xedd6('0x105'),'lastPauseAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6'))});})[_0xedd6('0x12')](respondWithResult(_0x4b4889,null))[_0xedd6('0x1d')](handleError(_0x4b4889,null));};exports['unpause']=function(_0x21a8ce,_0xf4d5cb){var _0x477950;return db['User']['find']({'where':{'id':_0x21a8ce[_0xedd6('0x5a')]['id']},'attributes':['id',_0xedd6('0x36'),_0xedd6('0x2a'),_0xedd6('0x9c'),_0xedd6('0x106'),_0xedd6('0x107'),_0xedd6('0x108'),_0xedd6('0x109'),_0xedd6('0x10a'),_0xedd6('0x10b'),'pauseType','lastPauseAt']})[_0xedd6('0x12')](handleEntityNotFound(_0xf4d5cb,null))[_0xedd6('0x12')](function(_0x2ef073){if(_0x2ef073){_0x477950=_0x2ef073;if(_0x21a8ce['body'][_0xedd6('0x9b')]&&!utils[_0xedd6('0x9e')](_0x21a8ce[_0xedd6('0x59')][_0xedd6('0x9b')])){throw new db[(_0xedd6('0x8d'))][(_0xedd6('0x8f'))](_0xedd6('0x9f'));}switch(_0x21a8ce['body'][_0xedd6('0x9b')]){case _0xedd6('0xa8'):return respondWithRpcPromise(_0xedd6('0x101'),_0xedd6('0x10c'),{'id':_0x477950['id'],'name':_0x477950[_0xedd6('0x36')],'pause':![]})[_0xedd6('0x12')](function(){return db[_0xedd6('0xad')][_0xedd6('0x27')]({'paused':0x0},{'where':{'UserId':_0x477950['id']},'individualHooks':!![]});})['then'](function(){return db[_0xedd6('0xf5')][_0xedd6('0x35')]({'where':{'channel':_0x21a8ce[_0xedd6('0x59')]['channel'],'membername':_0x477950['name'],'type':_0xedd6('0x102'),'exitAt':null}});})[_0xedd6('0x12')](function(_0xf88efa){if(_0xf88efa){return _0xf88efa[_0xedd6('0x27')]({'exitAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6')),'data2':_0xedd6('0x10d')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x477950[_0xedd6('0x27')]({'voicePause':![]});});case _0xedd6('0x58'):case'chat':case'fax':case _0xedd6('0x4d'):case _0xedd6('0x4f'):case'openchannel':return db[_0xedd6('0xf5')][_0xedd6('0x35')]({'where':{'channel':_0x21a8ce[_0xedd6('0x59')][_0xedd6('0x9b')],'membername':_0x477950['name'],'type':_0xedd6('0x102'),'exitAt':null}})[_0xedd6('0x12')](function(_0x24c1b6){if(_0x24c1b6){return _0x24c1b6['update']({'exitAt':moment()[_0xedd6('0xea')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xedd6('0x10d')},{'individualHooks':!![]});}return null;})[_0xedd6('0x12')](function(){var _0x5c86a5={};_['set'](_0x5c86a5,util['format'](_0xedd6('0x10e'),_0x21a8ce[_0xedd6('0x59')][_0xedd6('0x9b')],_0xedd6('0x10f')),![]);return _0x477950['update'](_0x5c86a5);});default:return respondWithRpcPromise(_0xedd6('0x101'),_0xedd6('0x10c'),{'id':_0x477950['id'],'name':_0x477950[_0xedd6('0x36')],'pause':![]})[_0xedd6('0x12')](function(){return db[_0xedd6('0xad')][_0xedd6('0x27')]({'paused':0x0},{'where':{'UserId':_0x477950['id']}});})[_0xedd6('0x12')](function(){return db[_0xedd6('0xf5')][_0xedd6('0x46')]({'where':{'membername':_0x477950[_0xedd6('0x36')],'type':_0xedd6('0x102'),'exitAt':null}});})[_0xedd6('0x12')](function(_0x12a0ce){var _0x21245f=[];_0x12a0ce[_0xedd6('0xf7')](function(_0x32a6fd){_0x21245f['push'](_0x32a6fd[_0xedd6('0x27')]({'exitAt':moment()[_0xedd6('0xea')](_0xedd6('0xf6')),'data2':_0xedd6('0x10d')}));});return BPromise[_0xedd6('0x50')](_0x21245f);})[_0xedd6('0x12')](function(){return _0x477950[_0xedd6('0x27')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xedd6('0x12')](respondWithResult(_0xf4d5cb,null))[_0xedd6('0x1d')](handleError(_0xf4d5cb,null));};exports[_0xedd6('0x110')]=function(_0x4bd5e2,_0xd0bd69){var _0x3d413c={};var _0x1b363f={};var _0x427808;var _0x451377;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x4bd5e2[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xd0bd69,null))[_0xedd6('0x12')](function(_0x797c44){if(_0x797c44){_0x427808=_0x797c44;_0x1b363f[_0xedd6('0x54')]=_['keys'](db[_0xedd6('0x111')][_0xedd6('0x3c')]);_0x1b363f[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x4bd5e2[_0xedd6('0x48')]);_0x1b363f[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x1b363f[_0xedd6('0x54')],_0x1b363f[_0xedd6('0x48')]);_0x3d413c[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x1b363f[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x4bd5e2[_0xedd6('0x48')][_0xedd6('0x56')]));_0x3d413c[_0xedd6('0x44')]=_0x3d413c['attributes'][_0xedd6('0x4a')]?_0x3d413c[_0xedd6('0x44')]:_0x1b363f[_0xedd6('0x54')];_0x3d413c[_0xedd6('0xc6')]=qs['sort'](_0x4bd5e2[_0xedd6('0x48')]['sort']);_0x3d413c[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x4bd5e2['query'],_0x1b363f['filters']));if(_0x4bd5e2[_0xedd6('0x48')][_0xedd6('0x30')]){_0x3d413c[_0xedd6('0x41')]=_['merge'](_0x3d413c['where'],{'$or':_[_0xedd6('0x32')](_0x3d413c[_0xedd6('0x44')],function(_0x11957c){var _0x4f2192={};_0x4f2192[_0x11957c]={'$like':'%'+_0x4bd5e2['query'][_0xedd6('0x30')]+'%'};return _0x4f2192;})});}_0x3d413c=_[_0xedd6('0xc8')]({},_0x3d413c,_0x4bd5e2[_0xedd6('0xc9')]);return _0x427808[_0xedd6('0x110')](_0x3d413c);}})['then'](function(_0x30c736){if(_0x30c736){_0x451377=_0x30c736[_0xedd6('0x4a')];if(!_0x4bd5e2[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x3d413c['limit']=qs[_0xedd6('0x24')](_0x4bd5e2[_0xedd6('0x48')][_0xedd6('0x24')]);_0x3d413c[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x4bd5e2[_0xedd6('0x48')]['offset']);}return _0x427808[_0xedd6('0x110')](_0x3d413c);}})[_0xedd6('0x12')](function(_0xf57399){if(_0xf57399){return _0xf57399?{'count':_0x451377,'rows':_0xf57399}:null;}})[_0xedd6('0x12')](respondWithResult(_0xd0bd69,null))[_0xedd6('0x1d')](handleError(_0xd0bd69,null));};exports[_0xedd6('0x112')]=function(_0x5226b5,_0x282f64){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x5226b5[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x282f64,null))['then'](function(_0x3f5a84){if(_0x3f5a84){var _0x444c62=_0x3f5a84['get']({'plain':!![]});return _0x3f5a84['addTeams'](_0x5226b5[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x5226b5[_0xedd6('0x59')],['ids','id'])||{})[_0xedd6('0x12')](function(){for(var _0x2a223c=0x0;_0x2a223c<_0x5226b5['body'][_0xedd6('0x5d')]['length'];_0x2a223c++){var _0x5a2ef7=[];db['Team'][_0xedd6('0x94')]({'where':{'id':_0x5226b5[_0xedd6('0x59')][_0xedd6('0x5d')][_0x2a223c]}})[_0xedd6('0x12')](function(_0x5337b9){_0x5a2ef7['push'](_0x5337b9[_0xedd6('0x113')]()[_0xedd6('0x12')](function(_0x1b3425){for(var _0x7d607d=0x0;_0x7d607d<_0x1b3425['length'];_0x7d607d++){_0x1b3425[_0x7d607d][_0xedd6('0x114')](_0xedd6('0x9b'),'Voice');}return _0x1b3425;}));_0x5a2ef7[_0xedd6('0x45')](_0x5337b9[_0xedd6('0x115')]()[_0xedd6('0x12')](function(_0x1daf1e){for(var _0x45755e=0x0;_0x45755e<_0x1daf1e['length'];_0x45755e++){_0x1daf1e[_0x45755e][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x116'));}return _0x1daf1e;}));_0x5a2ef7[_0xedd6('0x45')](_0x5337b9[_0xedd6('0x117')]()['then'](function(_0xa2a320){for(var _0x172716=0x0;_0x172716<_0xa2a320[_0xedd6('0x4a')];_0x172716++){_0xa2a320[_0x172716][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x118'));}return _0xa2a320;}));_0x5a2ef7['push'](_0x5337b9[_0xedd6('0x119')]()[_0xedd6('0x12')](function(_0x5eb552){for(var _0x482e3d=0x0;_0x482e3d<_0x5eb552['length'];_0x482e3d++){_0x5eb552[_0x482e3d][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x11a'));}return _0x5eb552;}));_0x5a2ef7[_0xedd6('0x45')](_0x5337b9[_0xedd6('0x11b')]()[_0xedd6('0x12')](function(_0x2931af){for(var _0x56578f=0x0;_0x56578f<_0x2931af['length'];_0x56578f++){_0x2931af[_0x56578f][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x11c'));}return _0x2931af;}));_0x5a2ef7[_0xedd6('0x45')](_0x5337b9['getFaxQueues']()[_0xedd6('0x12')](function(_0x58e375){for(var _0x2d7355=0x0;_0x2d7355<_0x58e375[_0xedd6('0x4a')];_0x2d7355++){_0x58e375[_0x2d7355]['setDataValue'](_0xedd6('0x9b'),_0xedd6('0x11d'));}return _0x58e375;}));_0x5a2ef7['push'](_0x5337b9['getOpenchannelQueues']()[_0xedd6('0x12')](function(_0x531725){for(var _0x20b93b=0x0;_0x20b93b<_0x531725[_0xedd6('0x4a')];_0x20b93b++){_0x531725[_0x20b93b][_0xedd6('0x114')]('channel',_0xedd6('0x11e'));}return _0x531725;}));return BPromise[_0xedd6('0x50')](_0x5a2ef7);})['then'](function(_0x4bd401){var _0x1f2cc3=_[_0xedd6('0x11f')](_0x4bd401);_0x5a2ef7=[];return db[_0xedd6('0x66')]['transaction'](function(_0x1bc610){for(var _0x476bba=0x0;_0x476bba<_0x1f2cc3[_0xedd6('0x4a')];_0x476bba++){_0x5a2ef7[_0xedd6('0x45')](_0x1f2cc3[_0x476bba]['addAgent'](_0x444c62['id']),{'transaction':_0x1bc610});}return BPromise[_0xedd6('0x50')](_0x5a2ef7)[_0xedd6('0x12')](function(){if(_0x444c62[_0xedd6('0xaa')]){return BPromise[_0xedd6('0x88')](_[_0xedd6('0x30')](_0x1f2cc3,function(_0x194f3b){return _0x194f3b['getDataValue'](_0xedd6('0x9b'))===_0xedd6('0x120');}),function(_0x3ae4eb){return db['UserVoiceQueueRt']['upsert']({'membername':_0x444c62[_0xedd6('0x36')],'UserId':_0x444c62['id'],'queue_name':_0x3ae4eb['name'],'VoiceQueueId':_0x3ae4eb['id'],'interface':_[_0xedd6('0x64')](_0x444c62['interface'])?util[_0xedd6('0xea')]('SIP/%s',_0x444c62[_0xedd6('0x36')]):_0x444c62[_0xedd6('0x9d')],'paused':_0x444c62[_0xedd6('0x9c')]||![],'penalty':_0x444c62['penalty']},{'transaction':_0x1bc610});});}else{return;}})[_0xedd6('0x12')](function(){for(var _0x4e5ce1=0x0;_0x4e5ce1<_0x1f2cc3[_0xedd6('0x4a')];_0x4e5ce1++){var _0x325f6b=_0x1f2cc3[_0x4e5ce1]['getDataValue']('channel');var _0x29b7b5=_0x325f6b+_0xedd6('0xa5');socket[_0xedd6('0xa6')](_0xedd6('0x7c')+_0x325f6b+_0xedd6('0xa7'),{'UserId':_0x444c62['id'],['queueField']:_0x1f2cc3[_0x4e5ce1]['id']});}});});});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0x282f64,null))['catch'](handleError(_0x282f64,null));};exports[_0xedd6('0x121')]=function(_0x135ff8,_0x26c844){return db[_0xedd6('0x3b')]['findOne']({'where':{'id':_0x135ff8['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x26c844,null))[_0xedd6('0x12')](function(_0x1045de){if(_0x1045de){var _0xc617=_0x1045de['get']({'plain':!![]});var _0x6541dc=_0x135ff8[_0xedd6('0x48')][_0xedd6('0x5d')];return _0x1045de[_0xedd6('0x121')](_0x6541dc)[_0xedd6('0x12')](function(){for(var _0x966626=0x0;_0x966626<_0x6541dc[_0xedd6('0x4a')];_0x966626++){var _0x3d5391=[];db[_0xedd6('0x111')]['findOne']({'where':{'id':_0x6541dc[_0x966626]}})[_0xedd6('0x12')](function(_0x41b53d){_0x3d5391[_0xedd6('0x45')](_0x41b53d[_0xedd6('0x113')]()['then'](function(_0x39536f){for(var _0x4636c9=0x0;_0x4636c9<_0x39536f[_0xedd6('0x4a')];_0x4636c9++){_0x39536f[_0x4636c9][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x120'));}return _0x39536f;}));_0x3d5391['push'](_0x41b53d[_0xedd6('0x115')]()[_0xedd6('0x12')](function(_0x33d356){for(var _0x4c3395=0x0;_0x4c3395<_0x33d356['length'];_0x4c3395++){_0x33d356[_0x4c3395][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x116'));}return _0x33d356;}));_0x3d5391[_0xedd6('0x45')](_0x41b53d[_0xedd6('0x117')]()[_0xedd6('0x12')](function(_0x19955d){for(var _0x459696=0x0;_0x459696<_0x19955d['length'];_0x459696++){_0x19955d[_0x459696][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x118'));}return _0x19955d;}));_0x3d5391[_0xedd6('0x45')](_0x41b53d[_0xedd6('0x119')]()[_0xedd6('0x12')](function(_0x38c7ae){for(var _0xf3538=0x0;_0xf3538<_0x38c7ae[_0xedd6('0x4a')];_0xf3538++){_0x38c7ae[_0xf3538][_0xedd6('0x114')](_0xedd6('0x9b'),_0xedd6('0x11a'));}return _0x38c7ae;}));_0x3d5391[_0xedd6('0x45')](_0x41b53d[_0xedd6('0x11b')]()[_0xedd6('0x12')](function(_0x107ec9){for(var _0x2021f0=0x0;_0x2021f0<_0x107ec9['length'];_0x2021f0++){_0x107ec9[_0x2021f0]['setDataValue'](_0xedd6('0x9b'),'Whatsapp');}return _0x107ec9;}));_0x3d5391['push'](_0x41b53d[_0xedd6('0x122')]()['then'](function(_0x1a7e76){for(var _0x2b219d=0x0;_0x2b219d<_0x1a7e76[_0xedd6('0x4a')];_0x2b219d++){_0x1a7e76[_0x2b219d][_0xedd6('0x114')](_0xedd6('0x9b'),'Fax');}return _0x1a7e76;}));_0x3d5391[_0xedd6('0x45')](_0x41b53d[_0xedd6('0x123')]()[_0xedd6('0x12')](function(_0x85910e){for(var _0x3ebb90=0x0;_0x3ebb90<_0x85910e[_0xedd6('0x4a')];_0x3ebb90++){_0x85910e[_0x3ebb90]['setDataValue'](_0xedd6('0x9b'),'Openchannel');}return _0x85910e;}));return BPromise[_0xedd6('0x50')](_0x3d5391);})[_0xedd6('0x12')](function(_0xd701c8){var _0x576951=_['flatten'](_0xd701c8);_0x3d5391=[];return db[_0xedd6('0x66')]['transaction'](function(_0x32cbbe){for(var _0x2d51b4=0x0;_0x2d51b4<_0x576951[_0xedd6('0x4a')];_0x2d51b4++){_0x3d5391[_0xedd6('0x45')](_0x576951[_0x2d51b4][_0xedd6('0x124')](_0xc617['id']),{'transaction':_0x32cbbe});}return BPromise[_0xedd6('0x50')](_0x3d5391)[_0xedd6('0x12')](function(){if(_0xc617['online']){return BPromise[_0xedd6('0x88')](_['filter'](_0x576951,function(_0x41ca76){return _0x41ca76[_0xedd6('0x125')](_0xedd6('0x9b'))===_0xedd6('0x120');}),function(_0x5d937c){return db[_0xedd6('0xad')][_0xedd6('0x28')]({'where':{'VoiceQueueId':_0x5d937c['id'],'UserId':_0xc617['id']},'transaction':_0x32cbbe});});}else{return;}})[_0xedd6('0x12')](function(){for(var _0xd7d87c=0x0;_0xd7d87c<_0x576951[_0xedd6('0x4a')];_0xd7d87c++){var _0x34310f=_0x576951[_0xd7d87c]['getDataValue'](_0xedd6('0x9b'));var _0x30f158=_0x34310f+_0xedd6('0xa5');socket[_0xedd6('0xa6')]('user'+_0x34310f+_0xedd6('0xac'),{'UserId':_0xc617['id'],['queueField']:_0x576951[_0xd7d87c]['id']});}});});});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0x26c844,null))[_0xedd6('0x1d')](handleError(_0x26c844,null));};exports['getLists']=function(_0x541ddf,_0x5bbfd3){var _0x1eeab1={};var _0x1bf030={};var _0xc6d090;var _0x2eee41;return db['User']['findOne']({'where':{'id':_0x541ddf[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5bbfd3,null))[_0xedd6('0x12')](function(_0x52a22f){if(_0x52a22f){_0xc6d090=_0x52a22f;_0x1bf030[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0xcc')][_0xedd6('0x3c')]);_0x1bf030[_0xedd6('0x48')]=_['keys'](_0x541ddf[_0xedd6('0x48')]);_0x1bf030[_0xedd6('0x53')]=_['intersection'](_0x1bf030[_0xedd6('0x54')],_0x1bf030['query']);_0x1eeab1[_0xedd6('0x44')]=_['intersection'](_0x1bf030[_0xedd6('0x54')],qs['fields'](_0x541ddf['query'][_0xedd6('0x56')]));_0x1eeab1['attributes']=_0x1eeab1[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x1eeab1['attributes']:_0x1bf030['model'];_0x1eeab1[_0xedd6('0xc6')]=qs['sort'](_0x541ddf[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x1eeab1[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x541ddf['query'],_0x1bf030['filters']));if(_0x541ddf[_0xedd6('0x48')][_0xedd6('0x30')]){_0x1eeab1[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x1eeab1[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x1eeab1[_0xedd6('0x44')],function(_0x50fa88){var _0x5d10bb={};_0x5d10bb[_0x50fa88]={'$like':'%'+_0x541ddf[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x5d10bb;})});}_0x1eeab1=_[_0xedd6('0xc8')]({},_0x1eeab1,_0x541ddf['options']);return _0xc6d090[_0xedd6('0x126')](_0x1eeab1);}})[_0xedd6('0x12')](function(_0x522700){if(_0x522700){_0x2eee41=_0x522700[_0xedd6('0x4a')];if(!_0x541ddf[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x1eeab1['limit']=qs[_0xedd6('0x24')](_0x541ddf['query']['limit']);_0x1eeab1['offset']=qs['offset'](_0x541ddf['query'][_0xedd6('0x22')]);}return _0xc6d090[_0xedd6('0x126')](_0x1eeab1);}})[_0xedd6('0x12')](function(_0x33fcf2){if(_0x33fcf2){return _0x33fcf2?{'count':_0x2eee41,'rows':_0x33fcf2}:null;}})[_0xedd6('0x12')](respondWithResult(_0x5bbfd3,null))[_0xedd6('0x1d')](handleError(_0x5bbfd3,null));};exports[_0xedd6('0x127')]=function(_0x35ab98,_0x15eb48){var _0x23db95={};var _0x127a48={};var _0x5c5b40;var _0x244c26;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x35ab98[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x15eb48,null))[_0xedd6('0x12')](function(_0x536f2a){if(_0x536f2a){_0x5c5b40=_0x536f2a;_0x127a48[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0x3b')][_0xedd6('0x3c')]);_0x127a48[_0xedd6('0x48')]=_['keys'](_0x35ab98[_0xedd6('0x48')]);_0x127a48['filters']=_[_0xedd6('0x55')](_0x127a48[_0xedd6('0x54')],_0x127a48[_0xedd6('0x48')]);_0x23db95[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x127a48[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x35ab98[_0xedd6('0x48')]['fields']));_0x23db95[_0xedd6('0x44')]=_0x23db95[_0xedd6('0x44')]['length']?_0x23db95['attributes']:_0x127a48[_0xedd6('0x54')];_0x23db95[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x35ab98['query'][_0xedd6('0xc7')]);_0x23db95[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x35ab98[_0xedd6('0x48')],_0x127a48['filters']));if(_0x35ab98[_0xedd6('0x48')][_0xedd6('0x30')]){_0x23db95[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x23db95[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x23db95[_0xedd6('0x44')],function(_0x236daf){var _0x436815={};_0x436815[_0x236daf]={'$like':'%'+_0x35ab98[_0xedd6('0x48')]['filter']+'%'};return _0x436815;})});}_0x23db95['model']=db[_0xedd6('0x3b')];_0x23db95['as']=_0xedd6('0x2c');_0x23db95=_[_0xedd6('0xc8')]({},_0x23db95,_0x35ab98[_0xedd6('0xc9')]);return _0x5c5b40[_0xedd6('0x113')]({'include':[_0x23db95]});}})['then'](function(_0x5641cf){if(_0x5641cf){var _0x18c3f0={},_0x5849a8=[],_0x53b6dc=0x0;for(var _0x1ef147=0x0;_0x1ef147<_0x5641cf[_0xedd6('0x4a')];_0x1ef147+=0x1){for(var _0x733544=0x0,_0x4db584;_0x733544<_0x5641cf[_0x1ef147]['Agents'][_0xedd6('0x4a')];_0x733544+=0x1){_0x4db584=_0x5641cf[_0x1ef147]['Agents'][_0x733544][_0xedd6('0x29')]({'plain':!![]});_0x18c3f0[_0x4db584['id']]=_0x4db584;}}_0x18c3f0=_[_0xedd6('0x128')](_0x18c3f0);for(var _0x18bc63=qs[_0xedd6('0x22')](_0x35ab98[_0xedd6('0x48')][_0xedd6('0x22')]);_0x18bc63<_0x18c3f0[_0xedd6('0x4a')]&&_0x5849a8['length']<qs[_0xedd6('0x24')](_0x35ab98[_0xedd6('0x48')][_0xedd6('0x24')]);_0x18bc63+=0x1){if(_0x18c3f0[_0x18bc63]){_0x5849a8['push'](_0x18c3f0[_0x18bc63]);}}return{'count':_0x18c3f0[_0xedd6('0x4a')],'rows':_0x5849a8};}})[_0xedd6('0x12')](respondWithResult(_0x15eb48,null))[_0xedd6('0x1d')](handleError(_0x15eb48,null));};exports[_0xedd6('0x28')]=function(_0x3d9f74,_0x384668){if(_0x3d9f74[_0xedd6('0x7c')]['id']==_0x3d9f74[_0xedd6('0x5a')]['id']){return _0x384668[_0xedd6('0x20')](0x1f4)[_0xedd6('0x39')]({'message':_0xedd6('0x129')});}return db['User'][_0xedd6('0x35')]({'where':{'id':_0x3d9f74[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x384668,null))[_0xedd6('0x12')](removeEntity(_0x384668,null))[_0xedd6('0x1d')](handleError(_0x384668,null));};exports[_0xedd6('0x12a')]=function(_0xc9e635,_0x5ddaf3){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0xc9e635[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5ddaf3,null))['then'](function(_0x217115){if(_0x217115){return _0x217115[_0xedd6('0x12a')](_0xc9e635['body'][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0xc9e635[_0xedd6('0x59')],['ids','id'])||{})[_0xedd6('0xa3')](function(){for(var _0x26aeff=0x0;_0x26aeff<_0xc9e635[_0xedd6('0x59')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x26aeff+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x12b'),{'ChatInteractionId':Number(_0xc9e635[_0xedd6('0x59')][_0xedd6('0x5d')][_0x26aeff]),'UserId':Number(_0xc9e635['params']['id'])});}return _0xc9e635[_0xedd6('0x59')][_0xedd6('0x5d')];});}})['then'](respondWithResult(_0x5ddaf3,null))[_0xedd6('0x1d')](handleError(_0x5ddaf3,null));};exports[_0xedd6('0x12c')]=function(_0x3fe4b0,_0xea9123){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x3fe4b0[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xea9123,null))['then'](function(_0x157cd3){if(_0x157cd3){return _0x157cd3[_0xedd6('0x12c')](_0x3fe4b0[_0xedd6('0x48')]['ids'])[_0xedd6('0x12')](function(){if(_[_0xedd6('0xab')](_0x3fe4b0[_0xedd6('0x48')][_0xedd6('0x5d')])){for(var _0x55da74=0x0;_0x55da74<_0x3fe4b0[_0xedd6('0x48')]['ids'][_0xedd6('0x4a')];_0x55da74+=0x1){socket['emit'](_0xedd6('0x12d'),{'ChatInteractionId':Number(_0x3fe4b0[_0xedd6('0x48')][_0xedd6('0x5d')][_0x55da74]),'UserId':Number(_0x3fe4b0[_0xedd6('0x5a')]['id'])});}}else{socket[_0xedd6('0xa6')](_0xedd6('0x12d'),{'ChatInteractionId':Number(_0x3fe4b0[_0xedd6('0x48')][_0xedd6('0x5d')]),'UserId':Number(_0x3fe4b0['params']['id'])});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0xea9123,null))[_0xedd6('0x1d')](handleError(_0xea9123,null));};exports[_0xedd6('0x12e')]=function(_0x29517a,_0x3a4c91){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x29517a[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x3a4c91,null))[_0xedd6('0x12')](function(_0x7466fc){if(_0x7466fc){return _0x7466fc[_0xedd6('0x12e')](_0x29517a[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x29517a[_0xedd6('0x59')],['ids','id'])||{})[_0xedd6('0xa3')](function(){for(var _0x1e0ddb=0x0;_0x1e0ddb<_0x29517a['body']['ids'][_0xedd6('0x4a')];_0x1e0ddb+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x12f'),{'MailInteractionId':Number(_0x29517a[_0xedd6('0x59')]['ids'][_0x1e0ddb]),'UserId':Number(_0x29517a[_0xedd6('0x5a')]['id'])});}return _0x29517a[_0xedd6('0x59')][_0xedd6('0x5d')];});}})[_0xedd6('0x12')](respondWithResult(_0x3a4c91,null))['catch'](handleError(_0x3a4c91,null));};exports[_0xedd6('0x130')]=function(_0x30d8a7,_0x26aadc){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x30d8a7[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x26aadc,null))[_0xedd6('0x12')](function(_0x26706c){if(_0x26706c){return _0x26706c[_0xedd6('0x130')](_0x30d8a7['query'][_0xedd6('0x5d')])[_0xedd6('0x12')](function(){if(_[_0xedd6('0xab')](_0x30d8a7[_0xedd6('0x48')]['ids'])){for(var _0x4a00dd=0x0;_0x4a00dd<_0x30d8a7[_0xedd6('0x48')]['ids'][_0xedd6('0x4a')];_0x4a00dd+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x131'),{'MailInteractionId':Number(_0x30d8a7[_0xedd6('0x48')][_0xedd6('0x5d')][_0x4a00dd]),'UserId':Number(_0x30d8a7[_0xedd6('0x5a')]['id'])});}}else{socket[_0xedd6('0xa6')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x30d8a7[_0xedd6('0x48')][_0xedd6('0x5d')]),'UserId':Number(_0x30d8a7['params']['id'])});}});}})['then'](respondWithStatusCode(_0x26aadc,null))[_0xedd6('0x1d')](handleError(_0x26aadc,null));};exports['addFaxInteractions']=function(_0x2bc5eb,_0x2243a4){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x2bc5eb[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2243a4,null))[_0xedd6('0x12')](function(_0x25367c){if(_0x25367c){return _0x25367c['addFaxInteractions'](_0x2bc5eb[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x2bc5eb[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{})['spread'](function(){for(var _0x826660=0x0;_0x826660<_0x2bc5eb[_0xedd6('0x59')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x826660+=0x1){socket['emit']('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x2bc5eb[_0xedd6('0x59')][_0xedd6('0x5d')][_0x826660]),'UserId':Number(_0x2bc5eb['params']['id'])});}return _0x2bc5eb[_0xedd6('0x59')][_0xedd6('0x5d')];});}})[_0xedd6('0x12')](respondWithResult(_0x2243a4,null))[_0xedd6('0x1d')](handleError(_0x2243a4,null));};exports['removeFaxInteractions']=function(_0x39d0ce,_0x482146){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x39d0ce['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x482146,null))[_0xedd6('0x12')](function(_0x501a28){if(_0x501a28){return _0x501a28['removeFaxInteractions'](_0x39d0ce[_0xedd6('0x48')][_0xedd6('0x5d')])[_0xedd6('0x12')](function(){if(_[_0xedd6('0xab')](_0x39d0ce['query'][_0xedd6('0x5d')])){for(var _0x1d10e6=0x0;_0x1d10e6<_0x39d0ce['query']['ids'][_0xedd6('0x4a')];_0x1d10e6+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x132'),{'FaxInteractionId':Number(_0x39d0ce[_0xedd6('0x48')][_0xedd6('0x5d')][_0x1d10e6]),'UserId':Number(_0x39d0ce[_0xedd6('0x5a')]['id'])});}}else{socket[_0xedd6('0xa6')](_0xedd6('0x132'),{'FaxInteractionId':Number(_0x39d0ce[_0xedd6('0x48')][_0xedd6('0x5d')]),'UserId':Number(_0x39d0ce['params']['id'])});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0x482146,null))['catch'](handleError(_0x482146,null));};exports[_0xedd6('0x133')]=function(_0x24c0ca,_0x396c1e){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x24c0ca['params']['id']}})['then'](handleEntityNotFound(_0x396c1e,null))[_0xedd6('0x12')](function(_0xa7d603){if(_0xa7d603){return _0xa7d603['addSmsInteractions'](_0x24c0ca['body'][_0xedd6('0x5d')],_['omit'](_0x24c0ca[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{})[_0xedd6('0xa3')](function(){for(var _0x49269f=0x0;_0x49269f<_0x24c0ca[_0xedd6('0x59')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x49269f+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x134'),{'SmsInteractionId':Number(_0x24c0ca[_0xedd6('0x59')][_0xedd6('0x5d')][_0x49269f]),'UserId':Number(_0x24c0ca[_0xedd6('0x5a')]['id'])});}return _0x24c0ca[_0xedd6('0x59')][_0xedd6('0x5d')];});}})[_0xedd6('0x12')](respondWithResult(_0x396c1e,null))[_0xedd6('0x1d')](handleError(_0x396c1e,null));};exports[_0xedd6('0x135')]=function(_0x565a3d,_0x6d982f){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x565a3d[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x6d982f,null))[_0xedd6('0x12')](function(_0x3ae806){if(_0x3ae806){return _0x3ae806[_0xedd6('0x135')](_0x565a3d[_0xedd6('0x48')][_0xedd6('0x5d')])[_0xedd6('0x12')](function(){if(_[_0xedd6('0xab')](_0x565a3d['query'][_0xedd6('0x5d')])){for(var _0xedac2c=0x0;_0xedac2c<_0x565a3d['query']['ids'][_0xedd6('0x4a')];_0xedac2c+=0x1){socket[_0xedd6('0xa6')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x565a3d['query']['ids'][_0xedac2c]),'UserId':Number(_0x565a3d[_0xedd6('0x5a')]['id'])});}}else{socket['emit'](_0xedd6('0x136'),{'SmsInteractionId':Number(_0x565a3d[_0xedd6('0x48')]['ids']),'UserId':Number(_0x565a3d[_0xedd6('0x5a')]['id'])});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0x6d982f,null))[_0xedd6('0x1d')](handleError(_0x6d982f,null));};exports[_0xedd6('0x137')]=function(_0x4ff484,_0x5cccac){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x4ff484[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5cccac,null))[_0xedd6('0x12')](function(_0x1438c0){if(_0x1438c0){return _0x1438c0[_0xedd6('0x137')](_0x4ff484[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x4ff484[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{})['spread'](function(){for(var _0x2cc119=0x0;_0x2cc119<_0x4ff484[_0xedd6('0x59')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x2cc119+=0x1){socket['emit']('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x4ff484[_0xedd6('0x59')]['ids'][_0x2cc119]),'UserId':Number(_0x4ff484[_0xedd6('0x5a')]['id'])});}return _0x4ff484[_0xedd6('0x59')][_0xedd6('0x5d')];});}})['then'](respondWithResult(_0x5cccac,null))[_0xedd6('0x1d')](handleError(_0x5cccac,null));};exports[_0xedd6('0x138')]=function(_0xeee825,_0x58923a){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0xeee825[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x58923a,null))[_0xedd6('0x12')](function(_0x42e00e){if(_0x42e00e){return _0x42e00e[_0xedd6('0x138')](_0xeee825[_0xedd6('0x48')][_0xedd6('0x5d')])[_0xedd6('0x12')](function(){if(_[_0xedd6('0xab')](_0xeee825[_0xedd6('0x48')][_0xedd6('0x5d')])){for(var _0x5312b8=0x0;_0x5312b8<_0xeee825[_0xedd6('0x48')][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x5312b8+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x139'),{'OpenchannelInteractionId':Number(_0xeee825[_0xedd6('0x48')][_0xedd6('0x5d')][_0x5312b8]),'UserId':Number(_0xeee825[_0xedd6('0x5a')]['id'])});}}else{socket['emit'](_0xedd6('0x139'),{'OpenchannelInteractionId':Number(_0xeee825[_0xedd6('0x48')][_0xedd6('0x5d')]),'UserId':Number(_0xeee825[_0xedd6('0x5a')]['id'])});}});}})[_0xedd6('0x12')](respondWithStatusCode(_0x58923a,null))[_0xedd6('0x1d')](handleError(_0x58923a,null));};exports[_0xedd6('0x13a')]=function(_0x43af1b,_0x428b3c){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x43af1b[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x428b3c,null))['then'](function(_0xeca069){if(_0xeca069){return _0xeca069[_0xedd6('0x13a')](_0x43af1b[_0xedd6('0x59')]['ids'],_[_0xedd6('0x5e')](_0x43af1b[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{})[_0xedd6('0xa3')](function(){for(var _0x4ad2a9=0x0;_0x4ad2a9<_0x43af1b['body'][_0xedd6('0x5d')][_0xedd6('0x4a')];_0x4ad2a9+=0x1){socket[_0xedd6('0xa6')](_0xedd6('0x13b'),{'WhatsappInteractionId':Number(_0x43af1b[_0xedd6('0x59')][_0xedd6('0x5d')][_0x4ad2a9]),'UserId':Number(_0x43af1b[_0xedd6('0x5a')]['id'])});}return _0x43af1b[_0xedd6('0x59')][_0xedd6('0x5d')];});}})[_0xedd6('0x12')](respondWithResult(_0x428b3c,null))['catch'](handleError(_0x428b3c,null));};exports[_0xedd6('0x13c')]=function(_0x16d746,_0x46ccdb){return db['User'][_0xedd6('0x35')]({'where':{'id':_0x16d746[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x46ccdb,null))['then'](function(_0x5a91de){if(_0x5a91de){return _0x5a91de[_0xedd6('0x13c')](_0x16d746[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x46ccdb,null))[_0xedd6('0x1d')](handleError(_0x46ccdb,null));};exports[_0xedd6('0x13d')]=function(_0xdd34c4,_0x4cc640){var _0x4759d5={};var _0x2234b2={};var _0x43eca3;var _0x181851;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0xdd34c4['params']['id']}})['then'](handleEntityNotFound(_0x4cc640,null))['then'](function(_0xc17bcc){if(_0xc17bcc){_0x43eca3=_0xc17bcc;_0x2234b2[_0xedd6('0x54')]=_['keys'](db[_0xedd6('0x13e')][_0xedd6('0x3c')]);_0x2234b2['query']=_[_0xedd6('0x52')](_0xdd34c4[_0xedd6('0x48')]);_0x2234b2[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x2234b2[_0xedd6('0x54')],_0x2234b2[_0xedd6('0x48')]);_0x4759d5['attributes']=_['intersection'](_0x2234b2['model'],qs[_0xedd6('0x56')](_0xdd34c4[_0xedd6('0x48')][_0xedd6('0x56')]));_0x4759d5[_0xedd6('0x44')]=_0x4759d5[_0xedd6('0x44')]['length']?_0x4759d5[_0xedd6('0x44')]:_0x2234b2[_0xedd6('0x54')];_0x4759d5['order']=qs[_0xedd6('0xc7')](_0xdd34c4[_0xedd6('0x48')]['sort']);_0x4759d5[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_['pick'](_0xdd34c4[_0xedd6('0x48')],_0x2234b2[_0xedd6('0x53')]));if(_0xdd34c4['query'][_0xedd6('0x30')]){_0x4759d5[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x4759d5[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x4759d5[_0xedd6('0x44')],function(_0x176f70){var _0x55319a={};_0x55319a[_0x176f70]={'$like':'%'+_0xdd34c4[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x55319a;})});}_0x4759d5=_[_0xedd6('0xc8')]({},_0x4759d5,_0xdd34c4[_0xedd6('0xc9')]);return _0x43eca3[_0xedd6('0x13d')](_0x4759d5);}})[_0xedd6('0x12')](function(_0x51171c){if(_0x51171c){_0x181851=_0x51171c[_0xedd6('0x4a')];if(!_0xdd34c4[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x4759d5[_0xedd6('0x24')]=qs['limit'](_0xdd34c4[_0xedd6('0x48')][_0xedd6('0x24')]);_0x4759d5['offset']=qs[_0xedd6('0x22')](_0xdd34c4[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x43eca3['getVoicePrefixes'](_0x4759d5);}})['then'](function(_0x1ed156){if(_0x1ed156){return _0x1ed156?{'count':_0x181851,'rows':_0x1ed156}:null;}})[_0xedd6('0x12')](respondWithResult(_0x4cc640,null))[_0xedd6('0x1d')](handleError(_0x4cc640,null));};exports[_0xedd6('0x13f')]=function(_0x27b56e,_0x480af9){var _0x54adf6={};var _0x3d6841={};var _0x1822d6;var _0x4a45d9;return db[_0xedd6('0x3b')]['findOne']({'where':{'id':_0x27b56e[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x480af9,null))['then'](function(_0x2e4b5d){if(_0x2e4b5d){_0x1822d6=_0x2e4b5d;_0x3d6841[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0x140')][_0xedd6('0x3c')]);_0x3d6841[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x27b56e[_0xedd6('0x48')]);_0x3d6841[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x3d6841[_0xedd6('0x54')],_0x3d6841['query']);_0x54adf6['attributes']=_[_0xedd6('0x55')](_0x3d6841[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x27b56e[_0xedd6('0x48')][_0xedd6('0x56')]));_0x54adf6['attributes']=_0x54adf6[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x54adf6['attributes']:_0x3d6841['model'];_0x54adf6['order']=qs[_0xedd6('0xc7')](_0x27b56e['query'][_0xedd6('0xc7')]);_0x54adf6[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x27b56e['query'],_0x3d6841[_0xedd6('0x53')]));if(_0x27b56e[_0xedd6('0x48')][_0xedd6('0x30')]){_0x54adf6[_0xedd6('0x41')]=_['merge'](_0x54adf6[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x54adf6['attributes'],function(_0xedc7ad){var _0x3bce33={};_0x3bce33[_0xedc7ad]={'$like':'%'+_0x27b56e['query'][_0xedd6('0x30')]+'%'};return _0x3bce33;})});}_0x54adf6=_['merge']({},_0x54adf6,_0x27b56e[_0xedd6('0xc9')]);return _0x1822d6['getFaxAccounts'](_0x54adf6);}})[_0xedd6('0x12')](function(_0x3520b3){if(_0x3520b3){_0x4a45d9=_0x3520b3[_0xedd6('0x4a')];if(!_0x27b56e['query'][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x54adf6['limit']=qs[_0xedd6('0x24')](_0x27b56e['query'][_0xedd6('0x24')]);_0x54adf6['offset']=qs[_0xedd6('0x22')](_0x27b56e[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x1822d6[_0xedd6('0x13f')](_0x54adf6);}})[_0xedd6('0x12')](function(_0x8beea3){if(_0x8beea3){return _0x8beea3?{'count':_0x4a45d9,'rows':_0x8beea3}:null;}})['then'](respondWithResult(_0x480af9,null))[_0xedd6('0x1d')](handleError(_0x480af9,null));};exports[_0xedd6('0x141')]=function(_0x3f3a6b,_0x1615dc){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x3f3a6b[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x1615dc,null))['then'](function(_0x200237){if(_0x200237){return _0x200237[_0xedd6('0x141')](_0x3f3a6b[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x3f3a6b['body'],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x1615dc,null))[_0xedd6('0x1d')](handleError(_0x1615dc,null));};exports[_0xedd6('0x142')]=function(_0x48dc8e,_0xece83){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x48dc8e[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xece83,null))['then'](function(_0x58ede0){if(_0x58ede0){return _0x58ede0['removeFaxAccounts'](_0x48dc8e['query'][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0xece83,null))[_0xedd6('0x1d')](handleError(_0xece83,null));};exports[_0xedd6('0x143')]=function(_0x16cf32,_0x4fc61e){var _0x5dbf57={};var _0x32b6ad={};var _0x23f6a1;var _0xec690a;return db['User'][_0xedd6('0x94')]({'where':{'id':_0x16cf32[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x4fc61e,null))[_0xedd6('0x12')](function(_0x75af23){if(_0x75af23){_0x23f6a1=_0x75af23;_0x32b6ad[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0x144')][_0xedd6('0x3c')]);_0x32b6ad[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x16cf32['query']);_0x32b6ad[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x32b6ad[_0xedd6('0x54')],_0x32b6ad[_0xedd6('0x48')]);_0x5dbf57[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x32b6ad[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x16cf32[_0xedd6('0x48')][_0xedd6('0x56')]));_0x5dbf57[_0xedd6('0x44')]=_0x5dbf57['attributes'][_0xedd6('0x4a')]?_0x5dbf57[_0xedd6('0x44')]:_0x32b6ad[_0xedd6('0x54')];_0x5dbf57[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x16cf32[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x5dbf57[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x16cf32['query'],_0x32b6ad[_0xedd6('0x53')]));if(_0x16cf32['query'][_0xedd6('0x30')]){_0x5dbf57[_0xedd6('0x41')]=_['merge'](_0x5dbf57[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x5dbf57[_0xedd6('0x44')],function(_0xfe3850){var _0x5ce6cd={};_0x5ce6cd[_0xfe3850]={'$like':'%'+_0x16cf32['query'][_0xedd6('0x30')]+'%'};return _0x5ce6cd;})});}_0x5dbf57=_[_0xedd6('0xc8')]({},_0x5dbf57,_0x16cf32[_0xedd6('0xc9')]);return _0x23f6a1[_0xedd6('0x143')](_0x5dbf57);}})['then'](function(_0x4667c1){if(_0x4667c1){_0xec690a=_0x4667c1[_0xedd6('0x4a')];if(!_0x16cf32[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x5dbf57['limit']=qs[_0xedd6('0x24')](_0x16cf32['query'][_0xedd6('0x24')]);_0x5dbf57['offset']=qs[_0xedd6('0x22')](_0x16cf32[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x23f6a1[_0xedd6('0x143')](_0x5dbf57);}})[_0xedd6('0x12')](function(_0x46e3d6){if(_0x46e3d6){return _0x46e3d6?{'count':_0xec690a,'rows':_0x46e3d6}:null;}})['then'](respondWithResult(_0x4fc61e,null))[_0xedd6('0x1d')](handleError(_0x4fc61e,null));};exports[_0xedd6('0x145')]=function(_0x21d1d4,_0xf228f0){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x21d1d4['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0xf228f0,null))['then'](function(_0x31b3e3){if(_0x31b3e3){return _0x31b3e3[_0xedd6('0x145')](_0x21d1d4[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x21d1d4['body'],[_0xedd6('0x5d'),'id'])||{});}})['then'](respondWithResult(_0xf228f0,null))[_0xedd6('0x1d')](handleError(_0xf228f0,null));};exports[_0xedd6('0x146')]=function(_0x164824,_0x1e953b){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x164824['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x1e953b,null))[_0xedd6('0x12')](function(_0xf76941){if(_0xf76941){return _0xf76941['removeMailAccounts'](_0x164824[_0xedd6('0x48')]['ids']);}})[_0xedd6('0x12')](respondWithStatusCode(_0x1e953b,null))[_0xedd6('0x1d')](handleError(_0x1e953b,null));};exports[_0xedd6('0x147')]=function(_0x4bf150,_0x4c1400){var _0x1cb8f4={};var _0x1f54ac={};var _0x712b93;var _0x45a901;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x4bf150[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x4c1400,null))[_0xedd6('0x12')](function(_0x5c7d79){if(_0x5c7d79){_0x712b93=_0x5c7d79;_0x1f54ac[_0xedd6('0x54')]=_[_0xedd6('0x52')](db['OpenchannelAccount'][_0xedd6('0x3c')]);_0x1f54ac[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x4bf150[_0xedd6('0x48')]);_0x1f54ac['filters']=_[_0xedd6('0x55')](_0x1f54ac['model'],_0x1f54ac[_0xedd6('0x48')]);_0x1cb8f4[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x1f54ac[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x4bf150['query'][_0xedd6('0x56')]));_0x1cb8f4[_0xedd6('0x44')]=_0x1cb8f4[_0xedd6('0x44')]['length']?_0x1cb8f4[_0xedd6('0x44')]:_0x1f54ac[_0xedd6('0x54')];_0x1cb8f4[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x4bf150['query'][_0xedd6('0xc7')]);_0x1cb8f4[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x4bf150['query'],_0x1f54ac['filters']));if(_0x4bf150[_0xedd6('0x48')]['filter']){_0x1cb8f4[_0xedd6('0x41')]=_['merge'](_0x1cb8f4['where'],{'$or':_[_0xedd6('0x32')](_0x1cb8f4[_0xedd6('0x44')],function(_0x547ec2){var _0x57ac2e={};_0x57ac2e[_0x547ec2]={'$like':'%'+_0x4bf150['query'][_0xedd6('0x30')]+'%'};return _0x57ac2e;})});}_0x1cb8f4=_[_0xedd6('0xc8')]({},_0x1cb8f4,_0x4bf150[_0xedd6('0xc9')]);return _0x712b93['getOpenchannelAccounts'](_0x1cb8f4);}})['then'](function(_0x40adff){if(_0x40adff){_0x45a901=_0x40adff['length'];if(!_0x4bf150[_0xedd6('0x48')][_0xedd6('0xcb')]('nolimit')){_0x1cb8f4[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x4bf150[_0xedd6('0x48')][_0xedd6('0x24')]);_0x1cb8f4[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x4bf150['query'][_0xedd6('0x22')]);}return _0x712b93[_0xedd6('0x147')](_0x1cb8f4);}})['then'](function(_0x167d49){if(_0x167d49){return _0x167d49?{'count':_0x45a901,'rows':_0x167d49}:null;}})[_0xedd6('0x12')](respondWithResult(_0x4c1400,null))['catch'](handleError(_0x4c1400,null));};exports[_0xedd6('0x148')]=function(_0x4e45ce,_0x1ea890){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x4e45ce[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1ea890,null))['then'](function(_0x17da4b){if(_0x17da4b){return _0x17da4b[_0xedd6('0x148')](_0x4e45ce[_0xedd6('0x59')]['ids'],_[_0xedd6('0x5e')](_0x4e45ce['body'],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x1ea890,null))[_0xedd6('0x1d')](handleError(_0x1ea890,null));};exports[_0xedd6('0x149')]=function(_0x1fb8a2,_0x49c92d){return db['User'][_0xedd6('0x35')]({'where':{'id':_0x1fb8a2[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x49c92d,null))['then'](function(_0x36861c){if(_0x36861c){return _0x36861c['removeOpenchannelAccounts'](_0x1fb8a2[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x49c92d,null))[_0xedd6('0x1d')](handleError(_0x49c92d,null));};exports[_0xedd6('0x14a')]=function(_0x4623a3,_0x556aaa){var _0x3656ff={};var _0x2de047={};var _0xb19785;var _0x242729;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x4623a3[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x556aaa,null))[_0xedd6('0x12')](function(_0x11fe7b){if(_0x11fe7b){_0xb19785=_0x11fe7b;_0x2de047['model']=_[_0xedd6('0x52')](db[_0xedd6('0x14b')][_0xedd6('0x3c')]);_0x2de047[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x4623a3[_0xedd6('0x48')]);_0x2de047[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x2de047['model'],_0x2de047[_0xedd6('0x48')]);_0x3656ff[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x2de047[_0xedd6('0x54')],qs['fields'](_0x4623a3[_0xedd6('0x48')][_0xedd6('0x56')]));_0x3656ff[_0xedd6('0x44')]=_0x3656ff[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x3656ff[_0xedd6('0x44')]:_0x2de047[_0xedd6('0x54')];_0x3656ff[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x4623a3[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x3656ff[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x4623a3[_0xedd6('0x48')],_0x2de047[_0xedd6('0x53')]));if(_0x4623a3[_0xedd6('0x48')][_0xedd6('0x30')]){_0x3656ff[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x3656ff['where'],{'$or':_[_0xedd6('0x32')](_0x3656ff[_0xedd6('0x44')],function(_0x4b9022){var _0x31a94f={};_0x31a94f[_0x4b9022]={'$like':'%'+_0x4623a3[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x31a94f;})});}_0x3656ff=_[_0xedd6('0xc8')]({},_0x3656ff,_0x4623a3[_0xedd6('0xc9')]);return _0xb19785[_0xedd6('0x14a')](_0x3656ff);}})[_0xedd6('0x12')](function(_0x55e7fe){if(_0x55e7fe){_0x242729=_0x55e7fe[_0xedd6('0x4a')];if(!_0x4623a3[_0xedd6('0x48')]['hasOwnProperty'](_0xedd6('0xd5'))){_0x3656ff['limit']=qs[_0xedd6('0x24')](_0x4623a3[_0xedd6('0x48')]['limit']);_0x3656ff[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x4623a3[_0xedd6('0x48')]['offset']);}return _0xb19785[_0xedd6('0x14a')](_0x3656ff);}})[_0xedd6('0x12')](function(_0x35ec9d){if(_0x35ec9d){return _0x35ec9d?{'count':_0x242729,'rows':_0x35ec9d}:null;}})[_0xedd6('0x12')](respondWithResult(_0x556aaa,null))['catch'](handleError(_0x556aaa,null));};exports[_0xedd6('0x14c')]=function(_0x1280e9,_0x473e25){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x1280e9[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x473e25,null))[_0xedd6('0x12')](function(_0x5bfe87){if(_0x5bfe87){return _0x5bfe87[_0xedd6('0x14c')](_0x1280e9[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x1280e9[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x473e25,null))[_0xedd6('0x1d')](handleError(_0x473e25,null));};exports[_0xedd6('0x14d')]=function(_0x14731e,_0x7d0da9){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x14731e['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x7d0da9,null))[_0xedd6('0x12')](function(_0x247a3b){if(_0x247a3b){return _0x247a3b[_0xedd6('0x14d')](_0x14731e[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x7d0da9,null))[_0xedd6('0x1d')](handleError(_0x7d0da9,null));};exports[_0xedd6('0x14e')]=function(_0x2bdd98,_0x1d33f3){var _0x57bd6f={};var _0x2c7f86={};var _0x23eddf;var _0x123833;return db[_0xedd6('0x3b')]['findOne']({'where':{'id':_0x2bdd98[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x1d33f3,null))[_0xedd6('0x12')](function(_0x5da74f){if(_0x5da74f){_0x23eddf=_0x5da74f;_0x2c7f86[_0xedd6('0x54')]=_['keys'](db[_0xedd6('0x14f')][_0xedd6('0x3c')]);_0x2c7f86[_0xedd6('0x48')]=_['keys'](_0x2bdd98[_0xedd6('0x48')]);_0x2c7f86['filters']=_[_0xedd6('0x55')](_0x2c7f86[_0xedd6('0x54')],_0x2c7f86['query']);_0x57bd6f[_0xedd6('0x44')]=_[_0xedd6('0x55')](_0x2c7f86['model'],qs['fields'](_0x2bdd98[_0xedd6('0x48')][_0xedd6('0x56')]));_0x57bd6f[_0xedd6('0x44')]=_0x57bd6f['attributes'][_0xedd6('0x4a')]?_0x57bd6f[_0xedd6('0x44')]:_0x2c7f86[_0xedd6('0x54')];_0x57bd6f[_0xedd6('0xc6')]=qs[_0xedd6('0xc7')](_0x2bdd98['query'][_0xedd6('0xc7')]);_0x57bd6f[_0xedd6('0x41')]=qs['filters'](_[_0xedd6('0xd3')](_0x2bdd98['query'],_0x2c7f86[_0xedd6('0x53')]));if(_0x2bdd98['query'][_0xedd6('0x30')]){_0x57bd6f[_0xedd6('0x41')]=_['merge'](_0x57bd6f[_0xedd6('0x41')],{'$or':_[_0xedd6('0x32')](_0x57bd6f[_0xedd6('0x44')],function(_0x439d6b){var _0x27859f={};_0x27859f[_0x439d6b]={'$like':'%'+_0x2bdd98[_0xedd6('0x48')]['filter']+'%'};return _0x27859f;})});}_0x57bd6f=_['merge']({},_0x57bd6f,_0x2bdd98[_0xedd6('0xc9')]);return _0x23eddf['getChatWebsites'](_0x57bd6f);}})[_0xedd6('0x12')](function(_0x879651){if(_0x879651){_0x123833=_0x879651[_0xedd6('0x4a')];if(!_0x2bdd98[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x57bd6f[_0xedd6('0x24')]=qs['limit'](_0x2bdd98[_0xedd6('0x48')][_0xedd6('0x24')]);_0x57bd6f[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x2bdd98['query']['offset']);}return _0x23eddf[_0xedd6('0x14e')](_0x57bd6f);}})[_0xedd6('0x12')](function(_0x2e8126){if(_0x2e8126){return _0x2e8126?{'count':_0x123833,'rows':_0x2e8126}:null;}})[_0xedd6('0x12')](respondWithResult(_0x1d33f3,null))['catch'](handleError(_0x1d33f3,null));};exports['addChatWebsites']=function(_0x58a5d5,_0x4810e0){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x58a5d5[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4810e0,null))[_0xedd6('0x12')](function(_0x4b59b6){if(_0x4b59b6){return _0x4b59b6[_0xedd6('0x150')](_0x58a5d5[_0xedd6('0x59')][_0xedd6('0x5d')],_[_0xedd6('0x5e')](_0x58a5d5['body'],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x4810e0,null))[_0xedd6('0x1d')](handleError(_0x4810e0,null));};exports[_0xedd6('0x151')]=function(_0x29ae2d,_0x500830){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x29ae2d['params']['id']}})['then'](handleEntityNotFound(_0x500830,null))['then'](function(_0x3a3a82){if(_0x3a3a82){return _0x3a3a82['removeChatWebsites'](_0x29ae2d[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x500830,null))[_0xedd6('0x1d')](handleError(_0x500830,null));};exports[_0xedd6('0x152')]=function(_0x4ea0e1,_0x4d061c){var _0x2a0c13={};var _0x51c324={};var _0x3e9733;var _0x3cb0e2;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x4ea0e1[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4d061c,null))[_0xedd6('0x12')](function(_0x46f46f){if(_0x46f46f){_0x3e9733=_0x46f46f;_0x51c324[_0xedd6('0x54')]=_['keys'](db[_0xedd6('0x153')][_0xedd6('0x3c')]);_0x51c324[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x4ea0e1[_0xedd6('0x48')]);_0x51c324[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x51c324['model'],_0x51c324['query']);_0x2a0c13[_0xedd6('0x44')]=_['intersection'](_0x51c324[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0x56')]));_0x2a0c13[_0xedd6('0x44')]=_0x2a0c13[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x2a0c13[_0xedd6('0x44')]:_0x51c324['model'];_0x2a0c13[_0xedd6('0xc6')]=qs['sort'](_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x2a0c13[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x4ea0e1[_0xedd6('0x48')],_0x51c324[_0xedd6('0x53')]));if(_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0x30')]){_0x2a0c13[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x2a0c13['where'],{'$or':_['map'](_0x2a0c13[_0xedd6('0x44')],function(_0x8479eb){var _0x5c3341={};_0x5c3341[_0x8479eb]={'$like':'%'+_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x5c3341;})});}_0x2a0c13=_[_0xedd6('0xc8')]({},_0x2a0c13,_0x4ea0e1[_0xedd6('0xc9')]);return _0x3e9733[_0xedd6('0x152')](_0x2a0c13);}})[_0xedd6('0x12')](function(_0x47c3ca){if(_0x47c3ca){_0x3cb0e2=_0x47c3ca['length'];if(!_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0xcb')]('nolimit')){_0x2a0c13[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x4ea0e1[_0xedd6('0x48')][_0xedd6('0x24')]);_0x2a0c13[_0xedd6('0x22')]=qs['offset'](_0x4ea0e1['query']['offset']);}return _0x3e9733['getWhatsappAccounts'](_0x2a0c13);}})[_0xedd6('0x12')](function(_0x4b7711){if(_0x4b7711){return _0x4b7711?{'count':_0x3cb0e2,'rows':_0x4b7711}:null;}})['then'](respondWithResult(_0x4d061c,null))[_0xedd6('0x1d')](handleError(_0x4d061c,null));};exports[_0xedd6('0x154')]=function(_0x33490b,_0x20713c){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x33490b['params']['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x20713c,null))[_0xedd6('0x12')](function(_0x35d6fa){if(_0x35d6fa){return _0x35d6fa['addWhatsappAccounts'](_0x33490b[_0xedd6('0x59')][_0xedd6('0x5d')],_['omit'](_0x33490b[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x20713c,null))[_0xedd6('0x1d')](handleError(_0x20713c,null));};exports[_0xedd6('0x155')]=function(_0x402217,_0x385475){return db[_0xedd6('0x3b')][_0xedd6('0x35')]({'where':{'id':_0x402217[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x385475,null))[_0xedd6('0x12')](function(_0x37a842){if(_0x37a842){return _0x37a842[_0xedd6('0x155')](_0x402217[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x385475,null))[_0xedd6('0x1d')](handleError(_0x385475,null));};exports[_0xedd6('0x156')]=function(_0x4499f1,_0x3d937e){var _0x334521={};var _0x1b9375={};var _0x386e22;var _0x4a8a06;return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x4499f1[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3d937e,null))[_0xedd6('0x12')](function(_0x26cecc){if(_0x26cecc){_0x386e22=_0x26cecc;_0x1b9375[_0xedd6('0x54')]=_[_0xedd6('0x52')](db[_0xedd6('0x157')][_0xedd6('0x3c')]);_0x1b9375[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x4499f1[_0xedd6('0x48')]);_0x1b9375['filters']=_['intersection'](_0x1b9375['model'],_0x1b9375[_0xedd6('0x48')]);_0x334521[_0xedd6('0x44')]=_['intersection'](_0x1b9375[_0xedd6('0x54')],qs[_0xedd6('0x56')](_0x4499f1[_0xedd6('0x48')]['fields']));_0x334521[_0xedd6('0x44')]=_0x334521['attributes'][_0xedd6('0x4a')]?_0x334521['attributes']:_0x1b9375[_0xedd6('0x54')];_0x334521['order']=qs[_0xedd6('0xc7')](_0x4499f1[_0xedd6('0x48')]['sort']);_0x334521[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_['pick'](_0x4499f1[_0xedd6('0x48')],_0x1b9375['filters']));if(_0x4499f1[_0xedd6('0x48')][_0xedd6('0x30')]){_0x334521[_0xedd6('0x41')]=_['merge'](_0x334521[_0xedd6('0x41')],{'$or':_['map'](_0x334521['attributes'],function(_0x135406){var _0x3218ba={};_0x3218ba[_0x135406]={'$like':'%'+_0x4499f1[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x3218ba;})});}_0x334521=_[_0xedd6('0xc8')]({},_0x334521,_0x4499f1['options']);return _0x386e22[_0xedd6('0x156')](_0x334521);}})[_0xedd6('0x12')](function(_0x2a3b3d){if(_0x2a3b3d){_0x4a8a06=_0x2a3b3d[_0xedd6('0x4a')];if(!_0x4499f1[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0x334521['limit']=qs['limit'](_0x4499f1['query'][_0xedd6('0x24')]);_0x334521[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x4499f1[_0xedd6('0x48')][_0xedd6('0x22')]);}return _0x386e22[_0xedd6('0x156')](_0x334521);}})['then'](function(_0x503888){if(_0x503888){return _0x503888?{'count':_0x4a8a06,'rows':_0x503888}:null;}})[_0xedd6('0x12')](respondWithResult(_0x3d937e,null))['catch'](handleError(_0x3d937e,null));};exports[_0xedd6('0x158')]=function(_0x5b93ee,_0x47aba9){return db['User']['find']({'where':{'id':_0x5b93ee[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x47aba9,null))['then'](function(_0x42ecfe){if(_0x42ecfe){return _0x42ecfe[_0xedd6('0x158')](_0x5b93ee[_0xedd6('0x59')][_0xedd6('0x5d')],_['omit'](_0x5b93ee[_0xedd6('0x59')],[_0xedd6('0x5d'),'id'])||{});}})[_0xedd6('0x12')](respondWithResult(_0x47aba9,null))[_0xedd6('0x1d')](handleError(_0x47aba9,null));};exports['removeSquareProjects']=function(_0x21a9ef,_0x15b449){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x21a9ef[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](handleEntityNotFound(_0x15b449,null))[_0xedd6('0x12')](function(_0x4e5b39){if(_0x4e5b39){return _0x4e5b39[_0xedd6('0x159')](_0x21a9ef[_0xedd6('0x48')][_0xedd6('0x5d')]);}})[_0xedd6('0x12')](respondWithStatusCode(_0x15b449,null))['catch'](handleError(_0x15b449,null));};exports[_0xedd6('0x15a')]=function(_0x48c997,_0x5453a5){var _0x2fbdf1={},_0x2bd46e={},_0x2d22d3={'count':0x0,'rows':[]};var _0x4ea97e=db[_0xedd6('0x15b')][_0xedd6('0x3c')];_0x2bd46e['model']=_[_0xedd6('0x52')](_0x4ea97e);_0x2bd46e[_0xedd6('0x48')]=_[_0xedd6('0x52')](_0x48c997[_0xedd6('0x48')]);_0x2bd46e[_0xedd6('0x53')]=_[_0xedd6('0x55')](_0x2bd46e[_0xedd6('0x54')],_0x2bd46e[_0xedd6('0x48')]);_0x2bd46e[_0xedd6('0x53')]=_[_0xedd6('0xfc')](_0x2bd46e[_0xedd6('0x53')],[_0xedd6('0x15c'),_0xedd6('0x15d'),'$gt',_0xedd6('0x15e'),_0xedd6('0x15f'),_0xedd6('0x160'),'$ne',_0xedd6('0x161'),'$not',_0xedd6('0x162'),_0xedd6('0x163'),_0xedd6('0x164'),'$notIn',_0xedd6('0x165'),_0xedd6('0x166'),_0xedd6('0x167'),_0xedd6('0x168'),_0xedd6('0x165'),_0xedd6('0x169'),_0xedd6('0x16a'),'$contained',_0xedd6('0x16b')]);_0x2fbdf1['attributes']=_[_0xedd6('0x55')](_0x2bd46e['model'],qs[_0xedd6('0x56')](_0x48c997[_0xedd6('0x48')][_0xedd6('0x56')]));_0x2fbdf1[_0xedd6('0x44')]=_0x2fbdf1[_0xedd6('0x44')][_0xedd6('0x4a')]?_0x2fbdf1[_0xedd6('0x44')]:_0x2bd46e[_0xedd6('0x54')];if(!_0x48c997['query'][_0xedd6('0xcb')]('nolimit')){_0x2fbdf1['limit']=qs[_0xedd6('0x24')](_0x48c997[_0xedd6('0x48')][_0xedd6('0x24')]);_0x2fbdf1[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x48c997[_0xedd6('0x48')][_0xedd6('0x22')]);}_0x2fbdf1['order']=qs['sort'](_0x48c997[_0xedd6('0x48')][_0xedd6('0xc7')]);_0x2fbdf1[_0xedd6('0x41')]=qs[_0xedd6('0x53')](_[_0xedd6('0xd3')](_0x48c997[_0xedd6('0x48')],_0x2bd46e[_0xedd6('0x53')]));if(_0x48c997[_0xedd6('0x48')][_0xedd6('0x30')]){_0x2fbdf1[_0xedd6('0x41')]=_[_0xedd6('0xc8')](_0x2fbdf1['where'],{'$or':_[_0xedd6('0x32')](_0x2fbdf1[_0xedd6('0x44')],function(_0x567503){var _0x567bb3={};_0x567bb3[_0x567503]={'$like':'%'+_0x48c997[_0xedd6('0x48')][_0xedd6('0x30')]+'%'};return _0x567bb3;})});}_0x2fbdf1['where']={'$and':[_0x2fbdf1['where'],{'$or':[{'UserId':_0x48c997[_0xedd6('0x5a')]['id']},{'OwnerId':_0x48c997[_0xedd6('0x5a')]['id']}]}]};_0x2fbdf1=_[_0xedd6('0xc8')]({},_0x2fbdf1,_0x48c997[_0xedd6('0xc9')]);var _0x16ead7={'where':_0x2fbdf1[_0xedd6('0x41')]};return db[_0xedd6('0x15b')]['count'](_0x16ead7)[_0xedd6('0x12')](function(_0x3a955c){_0x2d22d3[_0xedd6('0x25')]=_0x3a955c;if(_0x48c997[_0xedd6('0x48')]['includeAll']){_0x2fbdf1[_0xedd6('0x43')]=[{'attributes':['id','firstName',_0xedd6('0x16c'),_0xedd6('0x16d')],'model':db[_0xedd6('0xc5')],'as':'Contact'},{'attributes':['id',_0xedd6('0x36'),'dialActive'],'model':db[_0xedd6('0xa9')],'as':_0xedd6('0xd2')}];}return db[_0xedd6('0x15b')]['findAll'](_0x2fbdf1);})[_0xedd6('0x12')](function(_0x513b06){_0x2d22d3[_0xedd6('0x47')]=_0x513b06;return _0x2d22d3;})['then'](respondWithFilteredResult(_0x5453a5,_0x2fbdf1))[_0xedd6('0x1d')](handleError(_0x5453a5,null));};exports[_0xedd6('0x16e')]=function(_0x3ec803,_0x18f88a){if(!_['isNil'](_0x3ec803['user']['id'])&&(_0x3ec803['user']['role']=='admin'||_0x3ec803[_0xedd6('0x7c')]['role']==_0xedd6('0x7c'))){return db[_0xedd6('0x3b')][_0xedd6('0x94')]({'where':{'id':_0x3ec803[_0xedd6('0x5a')]['id']},'raw':!![]})[_0xedd6('0x12')](function(_0xed15ae){return authService[_0xedd6('0x16f')](_0xed15ae);})[_0xedd6('0x12')](function(_0x59b1d9){if(_0x59b1d9){return _0x18f88a[_0xedd6('0x20')](0xc8)[_0xedd6('0x21')]({'api_key':_0x59b1d9[_0xedd6('0x170')]});}else{return _0x18f88a[_0xedd6('0x20')](0xcc)[_0xedd6('0x21')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0xedd6('0x1d')](handleError(_0x18f88a,0x193));}else{return _0x18f88a['status'](0x191)[_0xedd6('0x21')]({'message':_0xedd6('0x171')});}};exports[_0xedd6('0x172')]=function(_0x1a8145,_0x5877e9){if(!_[_0xedd6('0x64')](_0x1a8145[_0xedd6('0x7c')]['id'])&&(_0x1a8145[_0xedd6('0x7c')][_0xedd6('0x2a')]==_0xedd6('0x2b')||_0x1a8145[_0xedd6('0x7c')][_0xedd6('0x2a')]==_0xedd6('0x7c'))){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x1a8145[_0xedd6('0x5a')]['id']}})['then'](function(_0x25d64c){return authService[_0xedd6('0x173')](_0x25d64c);})[_0xedd6('0x12')](function(_0x577789){return db[_0xedd6('0x3b')][_0xedd6('0x27')]({'apiKeyIat':_0x577789[_0xedd6('0x174')],'apiKeyNonce':_0x577789[_0xedd6('0x175')]},{'where':{'id':_0x1a8145[_0xedd6('0x5a')]['id']}})[_0xedd6('0x12')](function(){return _0x5877e9[_0xedd6('0x20')](0xc8)[_0xedd6('0x21')]({'api_key':_0x577789['token']});});})['catch'](handleError(_0x5877e9,0x193));}else{return _0x5877e9[_0xedd6('0x20')](0x191)[_0xedd6('0x21')]({'message':_0xedd6('0x171')});}};exports[_0xedd6('0x176')]=function(_0x2b75b7,_0x4e307b){if(!_[_0xedd6('0x64')](_0x2b75b7[_0xedd6('0x7c')]['id'])&&(_0x2b75b7['user']['role']=='admin'||_0x2b75b7[_0xedd6('0x7c')][_0xedd6('0x2a')]==_0xedd6('0x7c'))){return db[_0xedd6('0x3b')]['find']({'where':{'id':_0x2b75b7[_0xedd6('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4e307b,null))[_0xedd6('0x12')](function(_0x595cf0){if(_0x595cf0&&_0x595cf0[_0xedd6('0x177')]&&_0x595cf0['apiKeyIat'])return _0x595cf0;else throw{'message':'API\x20key\x20not\x20available'};})[_0xedd6('0x12')](function(_0x20f498){return db['User'][_0xedd6('0x27')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x2b75b7[_0xedd6('0x5a')]['id']}});})[_0xedd6('0x12')](respondWithStatusCode(_0x4e307b,0xc8))[_0xedd6('0x1d')](handleError(_0x4e307b,0x193));}else{return _0x4e307b['status'](0x191)['json']({'message':_0xedd6('0x171')});}};exports[_0xedd6('0x178')]=function(_0x5d94af,_0x44fc32){var _0x4347a2=_0x5d94af[_0xedd6('0x7c')][_0xedd6('0x29')]({'plain':!![]});if(!_0x4347a2){return _0x44fc32['status'](0x191)[_0xedd6('0x39')](_0xedd6('0x179'));}else{return _0x44fc32['status'](0xc8)[_0xedd6('0x21')](_0x4347a2);}};exports[_0xedd6('0x17a')]=function(_0x223567,_0x294f4f){var _0xdfc33d={'offset':0x0},_0x52b4ae={'count':0x0,'rows':[]};Promise[_0xedd6('0xfe')]()[_0xedd6('0x12')](function(){if(!_0x223567['query'][_0xedd6('0x30')]&&!_0x223567[_0xedd6('0x48')][_0xedd6('0x17b')]&&!_0x223567[_0xedd6('0x48')][_0xedd6('0x17c')])return[];return Promise[_0xedd6('0xfe')]()[_0xedd6('0x12')](function(){var _0x3b9666=[];if(!_[_0xedd6('0x17d')](_0x223567[_0xedd6('0x48')][_0xedd6('0x17b')])){_0x3b9666[_0xedd6('0x45')](db[_0xedd6('0x111')]['findAll']({'attributes':['id',_0xedd6('0x36')],'where':{'id':_0x223567[_0xedd6('0x48')]['teams']}}));}if(!_[_0xedd6('0x17d')](_0x223567[_0xedd6('0x48')][_0xedd6('0x17c')])){_0x3b9666[_0xedd6('0x45')](db['VoiceQueue'][_0xedd6('0x46')]({'attributes':['id',_0xedd6('0x36')],'type':_0xedd6('0x17e'),'where':{'id':_0x223567[_0xedd6('0x48')]['queues']}}));}return Promise[_0xedd6('0x50')](_0x3b9666);})['then'](function(_0x27d84f){var _0x1382ed=_[_0xedd6('0x11f')](_0x27d84f)[_0xedd6('0x32')](function(_0x4f72d1){return _0x4f72d1[_0xedd6('0x127')]({'attributes':['id',_0xedd6('0x36'),'internal',_0xedd6('0xaa')],'raw':!![]});});return Promise['all'](_0x1382ed);})[_0xedd6('0x12')](function(_0x212f45){var _0x5eb1d4=_['flatten'](_0x212f45);if(!_0x223567[_0xedd6('0x48')]['filter'])return _0x5eb1d4;if(_[_0xedd6('0x17d')](_0x5eb1d4)){return db[_0xedd6('0x3b')][_0xedd6('0x46')]({'attributes':['id',_0xedd6('0x36'),_0xedd6('0x5f'),_0xedd6('0xaa')],'where':{'role':_0xedd6('0x2d'),'$or':[db[_0xedd6('0x66')][_0xedd6('0x41')](db['sequelize']['fn'](_0xedd6('0x17f'),db['sequelize'][_0xedd6('0x180')]('name')),{'$like':'%'+_0x223567[_0xedd6('0x48')][_0xedd6('0x30')][_0xedd6('0xa1')]()+'%'}),{'internal':{'$like':'%'+_0x223567[_0xedd6('0x48')][_0xedd6('0x30')]+'%'}}]},'raw':!![]});}else{return _(_0x5eb1d4)['flatten']()[_0xedd6('0x30')](function(_0x51de0f){return _0x51de0f['name'][_0xedd6('0xa1')]()[_0xedd6('0x34')](_0x223567['query'][_0xedd6('0x30')][_0xedd6('0xa1')]())||_0x51de0f[_0xedd6('0x5f')]['toString']()[_0xedd6('0x34')](_0x223567['query'][_0xedd6('0x30')]);})[_0xedd6('0x33')]();}})[_0xedd6('0x12')](function(_0x10490c){var _0x24a6f4=_0xedd6('0x36');var _0x1004e3=_0xedd6('0x181');if(_0x223567[_0xedd6('0x48')]['sort']){var _0x1004e3=_0x223567['query']['sort'][0x0]==='-'?_0xedd6('0x182'):_0xedd6('0x181');var _0x24a6f4=_0x1004e3===_0xedd6('0x181')?_0x223567[_0xedd6('0x48')][_0xedd6('0xc7')]:_0x223567[_0xedd6('0x48')][_0xedd6('0xc7')]['substring'](0x1);}return _(_0x10490c)[_0xedd6('0x183')]('id')[_0xedd6('0x184')]([function(_0x32887e){return _0x24a6f4==='name'?_0x32887e[_0x24a6f4]['toLowerCase']():_0x32887e[_0x24a6f4];}],[_0x1004e3])[_0xedd6('0x32')](function(_0x1ace1d){return _[_0xedd6('0xd3')](_0x1ace1d,['id',_0xedd6('0x36'),_0xedd6('0x5f'),'online']);})[_0xedd6('0x33')]();})[_0xedd6('0x12')](function(_0x2275e1){return client[_0xedd6('0x11')](_0xedd6('0x2c'),_0x223567)['then'](function(_0x406e02){if(_0x406e02[_0xedd6('0x18')])throw new Error(_0xedd6('0x185'));var _0x213fe3=_0x406e02[_0xedd6('0x1c')];var _0x46d854=jayson[_0xedd6('0x186')]['http']({'port':0x232c});return _0x46d854[_0xedd6('0x11')]('Agents',_0x223567)[_0xedd6('0x12')](function(_0x34782a){if(_0x34782a[_0xedd6('0x18')])throw new Error(_0xedd6('0x187'));var _0x4bc691=_0x34782a[_0xedd6('0x1c')];return _[_0xedd6('0xc8')]({},_0x4bc691,_0x213fe3);});})[_0xedd6('0x12')](function(_0x152efe){return _[_0xedd6('0x32')](_0x2275e1,function(_0x40b013){var _0x3dfadd=_[_0xedd6('0x35')](_0x152efe['rows'],['id',_0x40b013['id']]);if(!_0x3dfadd||!_0x40b013[_0xedd6('0xaa')]){_0x40b013[_0xedd6('0x20')]='offline';}else if(_0x3dfadd[_0xedd6('0x9c')]){_0x40b013[_0xedd6('0x20')]=_0xedd6('0x100');}else{_0x40b013[_0xedd6('0x20')]=_[_0xedd6('0x34')](['idle',_0xedd6('0x188'),'unavailable',_0xedd6('0x189'),null,undefined],_0x3dfadd[_0xedd6('0x18a')])?_0xedd6('0xaa'):_0xedd6('0x18b');}return _0x40b013;});});});})[_0xedd6('0x12')](function(_0x30101a){if(!_0x223567[_0xedd6('0x48')][_0xedd6('0xcb')](_0xedd6('0xd5'))){_0xdfc33d[_0xedd6('0x24')]=qs[_0xedd6('0x24')](_0x223567['query']['limit']||0xa);_0xdfc33d[_0xedd6('0x22')]=qs[_0xedd6('0x22')](_0x223567[_0xedd6('0x48')][_0xedd6('0x22')]);}_0x52b4ae['count']=_0x30101a['length'];_0x52b4ae['rows']=_0xdfc33d['limit']?_0x30101a[_0xedd6('0x18c')](_0xdfc33d['offset'],_0xdfc33d['offset']+_0xdfc33d[_0xedd6('0x24')]):_0x30101a;return _0x52b4ae;})[_0xedd6('0x12')](respondWithFilteredResult(_0x294f4f,_0xdfc33d))[_0xedd6('0x1d')](handleError(_0x294f4f,null));};function get_open_tabs(_0xa1cb65,_0x227fe4){var _0x24fea9=_0xa1cb65[_0xedd6('0x18d')](0x0)[_0xedd6('0x18e')]()+_0xa1cb65[_0xedd6('0x18c')](0x1);var _0x3c7056={'type':db[_0xedd6('0x8d')][_0xedd6('0x67')][_0xedd6('0x68')],'raw':!![]};return new BPromise(function(_0x266991,_0x9fc544){var _0x16e865=squel[_0xedd6('0x18f')]()[_0xedd6('0x190')](_0xedd6('0x191')+_0x24fea9+_0xedd6('0x192'),'id')['field'](_0xedd6('0x193'))[_0xedd6('0x69')](_0xedd6('0x194')+_0xa1cb65+'_interactions','ui')[_0xedd6('0x41')](_0xedd6('0x195'),_0x227fe4['id']);return db[_0xedd6('0x66')][_0xedd6('0x48')](_0x16e865[_0xedd6('0x196')](),_0x3c7056)[_0xedd6('0x12')](function(_0x50c4eb){_0x227fe4[_0x24fea9+'OpenTabs']=_0x50c4eb;_0x266991(_0x50c4eb);})[_0xedd6('0x1d')](function(_0x509a26){_0x9fc544(_0x509a26);});});};
\ No newline at end of file
index c88c9d1..3c11d06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c68=['hasOwnProperty','exports','User','setMaxListeners','save','emit'];(function(_0x35fe68,_0x298e2e){var _0x11e3c4=function(_0xbd5e9f){while(--_0xbd5e9f){_0x35fe68['push'](_0x35fe68['shift']());}};_0x11e3c4(++_0x298e2e);}(_0x0c68,0xa4));var _0x80c6=function(_0x100a14,_0x2d781f){_0x100a14=_0x100a14-0x0;var _0xbf26b1=_0x0c68[_0x100a14];return _0xbf26b1;};'use strict';var EventEmitter=require('events');var User=require('../../mysqldb')['db'][_0x80c6('0x0')];var UserEvents=new EventEmitter();UserEvents[_0x80c6('0x1')](0x0);var events={'afterCreate':_0x80c6('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x102a8a){return function(_0x168540,_0xe720aa,_0x279822){UserEvents[_0x80c6('0x3')](_0x102a8a+':'+_0x168540['id'],_0x168540);UserEvents[_0x80c6('0x3')](_0x102a8a,_0x168540);_0x279822(null);};}for(var e in events){if(events[_0x80c6('0x4')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x80c6('0x5')]=UserEvents;
\ No newline at end of file
+var _0x3d58=['exports','../../mysqldb','User','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x101134,_0x1ed1d3){var _0xc47acc=function(_0x7ea469){while(--_0x7ea469){_0x101134['push'](_0x101134['shift']());}};_0xc47acc(++_0x1ed1d3);}(_0x3d58,0x1b1));var _0x83d5=function(_0xdf885b,_0xf3e478){_0xdf885b=_0xdf885b-0x0;var _0xf56f=_0x3d58[_0xdf885b];return _0xf56f;};'use strict';var EventEmitter=require('events');var User=require(_0x83d5('0x0'))['db'][_0x83d5('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x83d5('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x83d5('0x3'),'afterDestroy':_0x83d5('0x4')};function emitEvent(_0x23c045){return function(_0x1ef2d0,_0x5ad005,_0x2b7426){UserEvents['emit'](_0x23c045+':'+_0x1ef2d0['id'],_0x1ef2d0);UserEvents[_0x83d5('0x5')](_0x23c045,_0x1ef2d0);_0x2b7426(null);};}for(var e in events){if(events[_0x83d5('0x6')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x83d5('0x7')]=UserEvents;
\ No newline at end of file
index 1d88f10..51910b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3f=['updateMd5Password','updatePassword','changed','UserProfile','concat','bulkCreate','VoiceExtension','destroy','encryptPassword','Missing\x20Callback','randomBytes','salt','base64','pbkdf2Sync','toString','sha1','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','md5secret','bluebird','crypto','util','md5','./user.attributes','google','length','context','from-sip','system','format','prefix','push','Set','CDR(type)=%s','chanspy','record','recordingFormat','Authenticate','password','ChanSpy','SIP/%s,%s','name','join','merge','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','findAll','then','internal','catch','exports','models','define','User','users','utf8','userProfileId','resolve','find','privacyEnabled'];(function(_0x28278f,_0x574b0d){var _0x3d9f74=function(_0x306742){while(--_0x306742){_0x28278f['push'](_0x28278f['shift']());}};_0x3d9f74(++_0x574b0d);}(_0xeb3f,0x1de));var _0xfeb3=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xeb3f[_0x21a9d9];return _0x46adce;};'use strict';var BPromise=require(_0xfeb3('0x0'));var crypto=require(_0xfeb3('0x1'));var util=require(_0xfeb3('0x2'));var md5=require(_0xfeb3('0x3'));var _=require('lodash');var attributes=require(_0xfeb3('0x4'));var authTypes=[_0xfeb3('0x5')];var validatePresenceOf=function(_0x41acc4){return _0x41acc4&&_0x41acc4[_0xfeb3('0x6')];};var getChanSpyApplications=function(_0x49399e,_0x43318c,_0x508f3e){var _0x227ed8={'context':_0x49399e[_0xfeb3('0x7')]||_0xfeb3('0x8'),'type':_0xfeb3('0x9'),'isApp':![],'UserId':_0x49399e['id']};var _0x4a5175=[];for(var _0x3183a2=0x0,_0x1aed8a=0x1;_0x3183a2<_0x508f3e[_0xfeb3('0x6')];_0x3183a2++,_0x1aed8a=0x1){var _0x3e77eb={'exten':util[_0xfeb3('0xa')]('%s%s',_0x508f3e[_0x3183a2][_0xfeb3('0xb')],_0x43318c),'ChanSpyId':_0x508f3e[_0x3183a2]['id']};_0x4a5175[_0xfeb3('0xc')](_['merge']({'app':_0xfeb3('0xd'),'appdata':util[_0xfeb3('0xa')](_0xfeb3('0xe'),_0xfeb3('0xf')),'priority':_0x1aed8a++},_0x227ed8,_0x3e77eb));if(_0x508f3e[_0x3183a2][_0xfeb3('0x10')]){_0x4a5175[_0xfeb3('0xc')](_['merge']({'app':'MixMonitor','appdata':util[_0xfeb3('0xa')]('${UNIQUEID}.%s,a',_0x508f3e[_0x3183a2][_0xfeb3('0x11')]),'priority':_0x1aed8a++},_0x227ed8,_0x3e77eb));}if(_0x508f3e[_0x3183a2]['auth']){_0x4a5175[_0xfeb3('0xc')](_['merge']({'app':_0xfeb3('0x12'),'appdata':_0x508f3e[_0x3183a2][_0xfeb3('0x13')],'priority':_0x1aed8a++},_0x227ed8,_0x3e77eb));}_0x4a5175[_0xfeb3('0xc')](_['merge']({'app':_0xfeb3('0x14'),'appdata':util[_0xfeb3('0xa')](_0xfeb3('0x15'),_0x49399e[_0xfeb3('0x16')],_0x508f3e[_0x3183a2]['options']?_0x508f3e[_0x3183a2]['options'][_0xfeb3('0x17')](''):''),'priority':_0x1aed8a++},_0x227ed8,_0x3e77eb));if(_0x508f3e[_0x3183a2]['record']){_0x4a5175[_0xfeb3('0xc')](_[_0xfeb3('0x18')]({'app':_0xfeb3('0x19'),'priority':_0x1aed8a++},_0x227ed8,_0x3e77eb));}}return _0x4a5175;};var getUserApplications=function(_0x1b1c4d,_0x36423b){var _0x97ff8f=[_0xfeb3('0x1a'),_0xfeb3('0x1b'),_0xfeb3('0x1c')];var _0x2c418a={'context':_0x1b1c4d[_0xfeb3('0x7')]||_0xfeb3('0x8'),'exten':_0x36423b,'type':_0xfeb3('0x9'),'isApp':![],'UserId':_0x1b1c4d['id']};var _0x4a1b5c=[{'app':_0xfeb3('0xd'),'appdata':_0xfeb3('0x1d')}];if(_0x1b1c4d['extensionMonitor']&&_[_0xfeb3('0x1e')](_0x97ff8f,_0x1b1c4d[_0xfeb3('0x1f')])){_0x4a1b5c[_0xfeb3('0xc')]({'app':'Set','appdata':_0xfeb3('0x20')});_0x4a1b5c['push']({'app':_0xfeb3('0xd'),'appdata':util['format'](_0xfeb3('0x21'),_0x1b1c4d[_0xfeb3('0x1f')])});_0x4a1b5c[_0xfeb3('0xc')]({'app':_0xfeb3('0x22'),'appdata':util[_0xfeb3('0xa')](_0xfeb3('0x23'),_0x1b1c4d[_0xfeb3('0x16')])});}else{_0x4a1b5c['push']({'app':_0xfeb3('0x22'),'appdata':util[_0xfeb3('0xa')](_0xfeb3('0x24'),_0x1b1c4d[_0xfeb3('0x16')])});}_0x4a1b5c[_0xfeb3('0xc')]({'app':_0xfeb3('0x25')});for(var _0x4a77b4=0x0;_0x4a77b4<_0x4a1b5c[_0xfeb3('0x6')];_0x4a77b4++){_0x4a1b5c[_0x4a77b4][_0xfeb3('0x26')]=_0x4a77b4+0x1;_0x4a1b5c[_0x4a77b4]=_['defaults'](_0x4a1b5c[_0x4a77b4],_0x2c418a);}return _0x4a1b5c;};var getChanSpyPromise=function(_0x55532d,_0x5190ed){return new BPromise(function(_0x5be538,_0x12b760){return _0x55532d[_0xfeb3('0x27')][_0xfeb3('0x28')]()[_0xfeb3('0x29')](function(_0x5b942a){if(_0x5b942a){var _0x3c5f62=getChanSpyApplications(_0x5190ed,_0x5190ed[_0xfeb3('0x2a')],_0x5b942a);if(_0x5190ed[_0xfeb3('0x2a')]!=_0x5190ed[_0xfeb3('0x16')]){_0x3c5f62=_0x3c5f62['concat'](getChanSpyApplications(_0x5190ed,_0x5190ed['name'],_0x5b942a));}return _0x5be538(_0x3c5f62);}return _0x5be538([]);})[_0xfeb3('0x2b')](function(_0x3a1092){_0x12b760(_0x3a1092);});});};module[_0xfeb3('0x2c')]=function(_0x174b09,_0x5cefab){var _0x9a30ab=_0x174b09[_0xfeb3('0x2d')];return _0x174b09[_0xfeb3('0x2e')](_0xfeb3('0x2f'),attributes,{'tableName':_0xfeb3('0x30'),'charset':_0xfeb3('0x31'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x1410b1,_0x271041,_0x5a91b6){var _0x4de9d3=typeof _0x1410b1[_0xfeb3('0x32')]==='undefined'?BPromise[_0xfeb3('0x33')](null):_0x9a30ab['UserProfile'][_0xfeb3('0x34')]({'where':{'id':_0x1410b1[_0xfeb3('0x32')]}});_0x4de9d3[_0xfeb3('0x29')](function(_0x21c0b0){if(_0x21c0b0){_0x1410b1[_0xfeb3('0x35')]=_0x21c0b0[_0xfeb3('0x35')];}})[_0xfeb3('0x29')](function(){_0x1410b1[_0xfeb3('0x36')]();_0x1410b1[_0xfeb3('0x37')](_0x5a91b6);})[_0xfeb3('0x2b')](function(_0x4e555b){_0x5a91b6(_0x4e555b);});},'beforeUpdate':function(_0x4f6bf2,_0x1108b1,_0x1b3944){Promise[_0xfeb3('0x33')]()[_0xfeb3('0x29')](function(){if(_0x4f6bf2[_0xfeb3('0x38')](_0xfeb3('0x32'))===![])return;return _0x9a30ab[_0xfeb3('0x39')]['find']({'where':{'id':_0x4f6bf2[_0xfeb3('0x32')]}})[_0xfeb3('0x29')](function(_0x6fb65a){if(_0x6fb65a)_0x4f6bf2[_0xfeb3('0x35')]=_0x6fb65a[_0xfeb3('0x35')];return;});})[_0xfeb3('0x29')](function(){if(_0x4f6bf2[_0xfeb3('0x38')]('password')){_0x4f6bf2['updateMd5Password']();return _0x4f6bf2[_0xfeb3('0x37')](_0x1b3944);}_0x1b3944();})[_0xfeb3('0x2b')](function(_0x140ce5){_0x1b3944(_0x140ce5);});},'afterCreate':function(_0x24b0ad,_0x476fc4,_0x5138ea){var _0x5b7b4d=getUserApplications(_0x24b0ad,_0x24b0ad[_0xfeb3('0x2a')]);if(_0x24b0ad['internal']!=_0x24b0ad[_0xfeb3('0x16')]){_0x5b7b4d=_0x5b7b4d[_0xfeb3('0x3a')](getUserApplications(_0x24b0ad,_0x24b0ad[_0xfeb3('0x16')]));}return _0x9a30ab['VoiceExtension'][_0xfeb3('0x3b')](_0x5b7b4d)['then'](function(){if(_0x24b0ad[_0xfeb3('0xf')]){return getChanSpyPromise(_0x9a30ab,_0x24b0ad);}})[_0xfeb3('0x29')](function(_0xc068f5){if(_0xc068f5&&_0xc068f5[_0xfeb3('0x6')]){return _0x9a30ab[_0xfeb3('0x3c')]['bulkCreate'](_0xc068f5);}})[_0xfeb3('0x29')](function(){_0x5138ea();})[_0xfeb3('0x2b')](function(_0x5556f3){_0x5138ea(_0x5556f3);});},'afterUpdate':function(_0x4a9696,_0x18a2f0,_0x359df8){return BPromise['resolve']()[_0xfeb3('0x29')](function(){if(_0x4a9696[_0xfeb3('0x38')]('chanspy')||_0x4a9696[_0xfeb3('0x38')](_0xfeb3('0x7'))){return _0x9a30ab[_0xfeb3('0x3c')]['destroy']({'where':{'UserId':_0x4a9696['id'],'type':_0xfeb3('0x9'),'ChanSpyId':{'$ne':null}}})[_0xfeb3('0x29')](function(){if(_0x4a9696[_0xfeb3('0xf')]){return getChanSpyPromise(_0x9a30ab,_0x4a9696)[_0xfeb3('0x29')](function(_0x25cdf4){if(_0x25cdf4&&_0x25cdf4[_0xfeb3('0x6')]){return _0x9a30ab[_0xfeb3('0x3c')][_0xfeb3('0x3b')](_0x25cdf4);}});}});}})[_0xfeb3('0x29')](function(){if(_0x4a9696[_0xfeb3('0x38')](_0xfeb3('0x1f'))||_0x4a9696['changed'](_0xfeb3('0x7'))){return _0x9a30ab['VoiceExtension'][_0xfeb3('0x3d')]({'where':{'UserId':_0x4a9696['id'],'type':_0xfeb3('0x9'),'ChanSpyId':null}})[_0xfeb3('0x29')](function(){var _0x44e24d=getUserApplications(_0x4a9696,_0x4a9696['internal']);if(_0x4a9696[_0xfeb3('0x2a')]!=_0x4a9696[_0xfeb3('0x16')]){_0x44e24d=_0x44e24d[_0xfeb3('0x3a')](getUserApplications(_0x4a9696,_0x4a9696[_0xfeb3('0x16')]));}return _0x9a30ab[_0xfeb3('0x3c')][_0xfeb3('0x3b')](_0x44e24d);});}})[_0xfeb3('0x29')](function(){_0x359df8();})[_0xfeb3('0x2b')](function(_0x3a41ce){_0x359df8(_0x3a41ce);});},'afterDestroy':function(_0x322893,_0x1c3667){return _0x9a30ab[_0xfeb3('0x3c')][_0xfeb3('0x3d')]({'where':{'UserId':_0x322893['id'],'type':_0xfeb3('0x9')}});}},'instanceMethods':{'authenticate':function(_0x5814a4,_0x40b645){if(!_0x40b645){return this[_0xfeb3('0x13')]===this[_0xfeb3('0x3e')](_0x5814a4);}var _0x4818be=this;this[_0xfeb3('0x3e')](_0x5814a4,function(_0x56bf7b,_0x5655f2){if(_0x56bf7b){_0x40b645(_0x56bf7b);}if(_0x4818be['password']===_0x5655f2){_0x40b645(null,!![]);}else{_0x40b645(null,![]);}});},'makeSalt':function(_0x3176ba,_0x1f1f49){var _0x1567ca=0x10;if(typeof arguments[0x0]==='function'){_0x1f1f49=arguments[0x0];_0x3176ba=_0x1567ca;}else if(typeof arguments[0x1]==='function'){_0x1f1f49=arguments[0x1];}else{throw new Error(_0xfeb3('0x3f'));}if(!_0x3176ba){_0x3176ba=_0x1567ca;}return crypto[_0xfeb3('0x40')](_0x3176ba,function(_0x228e28,_0x2931cb){if(_0x228e28){_0x1f1f49(_0x228e28);}return _0x1f1f49(null,_0x2931cb['toString']('base64'));});},'encryptPassword':function(_0x2f02e5,_0xf87012){if(!_0x2f02e5||!this[_0xfeb3('0x41')]){return _0xf87012?_0xf87012(null):null;}var _0x41c70c=0x2710;var _0x4cf668=0x40;var _0x3eb112=new Buffer(this[_0xfeb3('0x41')],_0xfeb3('0x42'));if(!_0xf87012){return crypto[_0xfeb3('0x43')](_0x2f02e5,_0x3eb112,_0x41c70c,_0x4cf668,'sha1')[_0xfeb3('0x44')](_0xfeb3('0x42'));}return crypto['pbkdf2'](_0x2f02e5,_0x3eb112,_0x41c70c,_0x4cf668,_0xfeb3('0x45'),function(_0x2a2f89,_0x392d42){if(_0x2a2f89){_0xf87012(_0x2a2f89);}return _0xf87012(null,_0x392d42[_0xfeb3('0x44')](_0xfeb3('0x42')));});},'updatePassword':function(_0xbb18ee){if(!this[_0xfeb3('0x13')]){return _0xbb18ee(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xfeb3('0x46')](this[_0xfeb3('0x47')])===-0x1){_0xbb18ee(new Error(_0xfeb3('0x48')));}var _0x3b4d0b=this;this[_0xfeb3('0x49')](function(_0x44ce05,_0x19a22b){if(_0x44ce05){return _0xbb18ee(_0x44ce05);}_0x3b4d0b[_0xfeb3('0x41')]=_0x19a22b;_0x3b4d0b['encryptPassword'](_0x3b4d0b[_0xfeb3('0x13')],function(_0x497972,_0x332696){if(_0x497972){_0xbb18ee(_0x497972);}_0x3b4d0b[_0xfeb3('0x13')]=_0x332696;_0xbb18ee(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+_0xfeb3('0x4a')+this[_0xfeb3('0x13')]);return this[_0xfeb3('0x4b')];}}});};
\ No newline at end of file
+var _0xf716=['Dial','Hangup','priority','defaults','then','internal','concat','catch','models','define','User','users','utf8','utf8_bin','userProfileId','find','privacyEnabled','updateMd5Password','updatePassword','changed','VoiceExtension','context','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','toString','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','bluebird','crypto','md5','lodash','./user.attributes','google','length','from-sip','system','format','%s%s','prefix','push','Set','CDR(type)=%s','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','Authenticate','password','name','options','join','StopMixMonitor','wav','WAV','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xf716,0xfe));var _0x6f71=function(_0x651ab9,_0x4162e8){_0x651ab9=_0x651ab9-0x0;var _0x14ec5b=_0xf716[_0x651ab9];return _0x14ec5b;};'use strict';var BPromise=require(_0x6f71('0x0'));var crypto=require(_0x6f71('0x1'));var util=require('util');var md5=require(_0x6f71('0x2'));var _=require(_0x6f71('0x3'));var attributes=require(_0x6f71('0x4'));var authTypes=[_0x6f71('0x5')];var validatePresenceOf=function(_0x17b698){return _0x17b698&&_0x17b698[_0x6f71('0x6')];};var getChanSpyApplications=function(_0x4eddbd,_0x19ed64,_0x3b6140){var _0x4c0f96={'context':_0x4eddbd['context']||_0x6f71('0x7'),'type':_0x6f71('0x8'),'isApp':![],'UserId':_0x4eddbd['id']};var _0x15979a=[];for(var _0x28eb1e=0x0,_0x45c25d=0x1;_0x28eb1e<_0x3b6140[_0x6f71('0x6')];_0x28eb1e++,_0x45c25d=0x1){var _0x2d5fde={'exten':util[_0x6f71('0x9')](_0x6f71('0xa'),_0x3b6140[_0x28eb1e][_0x6f71('0xb')],_0x19ed64),'ChanSpyId':_0x3b6140[_0x28eb1e]['id']};_0x15979a[_0x6f71('0xc')](_['merge']({'app':_0x6f71('0xd'),'appdata':util[_0x6f71('0x9')](_0x6f71('0xe'),_0x6f71('0xf')),'priority':_0x45c25d++},_0x4c0f96,_0x2d5fde));if(_0x3b6140[_0x28eb1e][_0x6f71('0x10')]){_0x15979a[_0x6f71('0xc')](_[_0x6f71('0x11')]({'app':_0x6f71('0x12'),'appdata':util[_0x6f71('0x9')](_0x6f71('0x13'),_0x3b6140[_0x28eb1e]['recordingFormat']),'priority':_0x45c25d++},_0x4c0f96,_0x2d5fde));}if(_0x3b6140[_0x28eb1e]['auth']){_0x15979a['push'](_[_0x6f71('0x11')]({'app':_0x6f71('0x14'),'appdata':_0x3b6140[_0x28eb1e][_0x6f71('0x15')],'priority':_0x45c25d++},_0x4c0f96,_0x2d5fde));}_0x15979a[_0x6f71('0xc')](_['merge']({'app':'ChanSpy','appdata':util['format']('SIP/%s,%s',_0x4eddbd[_0x6f71('0x16')],_0x3b6140[_0x28eb1e][_0x6f71('0x17')]?_0x3b6140[_0x28eb1e][_0x6f71('0x17')][_0x6f71('0x18')](''):''),'priority':_0x45c25d++},_0x4c0f96,_0x2d5fde));if(_0x3b6140[_0x28eb1e]['record']){_0x15979a[_0x6f71('0xc')](_['merge']({'app':_0x6f71('0x19'),'priority':_0x45c25d++},_0x4c0f96,_0x2d5fde));}}return _0x15979a;};var getUserApplications=function(_0x511fb4,_0x53afec){var _0x36b309=[_0x6f71('0x1a'),_0x6f71('0x1b'),'gsm'];var _0x13d85e={'context':_0x511fb4['context']||_0x6f71('0x7'),'exten':_0x53afec,'type':'system','isApp':![],'UserId':_0x511fb4['id']};var _0x33e9d6=[{'app':'Set','appdata':_0x6f71('0x1c')}];if(_0x511fb4['extensionMonitor']&&_[_0x6f71('0x1d')](_0x36b309,_0x511fb4[_0x6f71('0x1e')])){_0x33e9d6['push']({'app':_0x6f71('0xd'),'appdata':_0x6f71('0x1f')});_0x33e9d6[_0x6f71('0xc')]({'app':_0x6f71('0xd'),'appdata':util[_0x6f71('0x9')](_0x6f71('0x20'),_0x511fb4['extensionMonitor'])});_0x33e9d6[_0x6f71('0xc')]({'app':'Dial','appdata':util[_0x6f71('0x9')](_0x6f71('0x21'),_0x511fb4[_0x6f71('0x16')])});}else{_0x33e9d6[_0x6f71('0xc')]({'app':_0x6f71('0x22'),'appdata':util[_0x6f71('0x9')]('SIP/%s,,tTxX',_0x511fb4[_0x6f71('0x16')])});}_0x33e9d6['push']({'app':_0x6f71('0x23')});for(var _0x14f11b=0x0;_0x14f11b<_0x33e9d6['length'];_0x14f11b++){_0x33e9d6[_0x14f11b][_0x6f71('0x24')]=_0x14f11b+0x1;_0x33e9d6[_0x14f11b]=_[_0x6f71('0x25')](_0x33e9d6[_0x14f11b],_0x13d85e);}return _0x33e9d6;};var getChanSpyPromise=function(_0x5ee3a5,_0x27aa8d){return new BPromise(function(_0xfd244d,_0xaffdd7){return _0x5ee3a5['VoiceChanSpy']['findAll']()[_0x6f71('0x26')](function(_0x1235b3){if(_0x1235b3){var _0x58c7ff=getChanSpyApplications(_0x27aa8d,_0x27aa8d['internal'],_0x1235b3);if(_0x27aa8d[_0x6f71('0x27')]!=_0x27aa8d[_0x6f71('0x16')]){_0x58c7ff=_0x58c7ff[_0x6f71('0x28')](getChanSpyApplications(_0x27aa8d,_0x27aa8d['name'],_0x1235b3));}return _0xfd244d(_0x58c7ff);}return _0xfd244d([]);})[_0x6f71('0x29')](function(_0x478e12){_0xaffdd7(_0x478e12);});});};module['exports']=function(_0xe2aa65,_0x3cf97b){var _0x32e1b7=_0xe2aa65[_0x6f71('0x2a')];return _0xe2aa65[_0x6f71('0x2b')](_0x6f71('0x2c'),attributes,{'tableName':_0x6f71('0x2d'),'charset':_0x6f71('0x2e'),'collate':_0x6f71('0x2f'),'hooks':{'beforeCreate':function(_0x1137ce,_0x421540,_0x160b5f){var _0x59ed3c=typeof _0x1137ce[_0x6f71('0x30')]==='undefined'?BPromise['resolve'](null):_0x32e1b7['UserProfile'][_0x6f71('0x31')]({'where':{'id':_0x1137ce[_0x6f71('0x30')]}});_0x59ed3c[_0x6f71('0x26')](function(_0x356ebd){if(_0x356ebd){_0x1137ce['privacyEnabled']=_0x356ebd[_0x6f71('0x32')];}})[_0x6f71('0x26')](function(){_0x1137ce[_0x6f71('0x33')]();_0x1137ce[_0x6f71('0x34')](_0x160b5f);})[_0x6f71('0x29')](function(_0x1ff5ad){_0x160b5f(_0x1ff5ad);});},'beforeUpdate':function(_0x2ffcf4,_0x3ab9c1,_0x91682c){Promise['resolve']()[_0x6f71('0x26')](function(){if(_0x2ffcf4[_0x6f71('0x35')]('userProfileId')===![])return;return _0x32e1b7['UserProfile'][_0x6f71('0x31')]({'where':{'id':_0x2ffcf4[_0x6f71('0x30')]}})['then'](function(_0x3b6398){if(_0x3b6398)_0x2ffcf4['privacyEnabled']=_0x3b6398[_0x6f71('0x32')];return;});})[_0x6f71('0x26')](function(){if(_0x2ffcf4[_0x6f71('0x35')](_0x6f71('0x15'))){_0x2ffcf4[_0x6f71('0x33')]();return _0x2ffcf4[_0x6f71('0x34')](_0x91682c);}_0x91682c();})[_0x6f71('0x29')](function(_0x39dc1f){_0x91682c(_0x39dc1f);});},'afterCreate':function(_0x4ca5e6,_0x5e85f3,_0x485b9b){var _0x1fb0d6=getUserApplications(_0x4ca5e6,_0x4ca5e6[_0x6f71('0x27')]);if(_0x4ca5e6['internal']!=_0x4ca5e6['name']){_0x1fb0d6=_0x1fb0d6['concat'](getUserApplications(_0x4ca5e6,_0x4ca5e6['name']));}return _0x32e1b7['VoiceExtension']['bulkCreate'](_0x1fb0d6)[_0x6f71('0x26')](function(){if(_0x4ca5e6['chanspy']){return getChanSpyPromise(_0x32e1b7,_0x4ca5e6);}})[_0x6f71('0x26')](function(_0x3a0f0a){if(_0x3a0f0a&&_0x3a0f0a['length']){return _0x32e1b7[_0x6f71('0x36')]['bulkCreate'](_0x3a0f0a);}})[_0x6f71('0x26')](function(){_0x485b9b();})[_0x6f71('0x29')](function(_0x16180e){_0x485b9b(_0x16180e);});},'afterUpdate':function(_0x174f60,_0x4e2146,_0xe2eb47){return BPromise['resolve']()['then'](function(){if(_0x174f60[_0x6f71('0x35')]('chanspy')||_0x174f60[_0x6f71('0x35')](_0x6f71('0x37'))){return _0x32e1b7[_0x6f71('0x36')]['destroy']({'where':{'UserId':_0x174f60['id'],'type':_0x6f71('0x8'),'ChanSpyId':{'$ne':null}}})[_0x6f71('0x26')](function(){if(_0x174f60[_0x6f71('0xf')]){return getChanSpyPromise(_0x32e1b7,_0x174f60)[_0x6f71('0x26')](function(_0x448ceb){if(_0x448ceb&&_0x448ceb['length']){return _0x32e1b7[_0x6f71('0x36')][_0x6f71('0x38')](_0x448ceb);}});}});}})['then'](function(){if(_0x174f60[_0x6f71('0x35')](_0x6f71('0x1e'))||_0x174f60[_0x6f71('0x35')](_0x6f71('0x37'))){return _0x32e1b7[_0x6f71('0x36')][_0x6f71('0x39')]({'where':{'UserId':_0x174f60['id'],'type':_0x6f71('0x8'),'ChanSpyId':null}})[_0x6f71('0x26')](function(){var _0x4ac146=getUserApplications(_0x174f60,_0x174f60['internal']);if(_0x174f60[_0x6f71('0x27')]!=_0x174f60[_0x6f71('0x16')]){_0x4ac146=_0x4ac146[_0x6f71('0x28')](getUserApplications(_0x174f60,_0x174f60[_0x6f71('0x16')]));}return _0x32e1b7[_0x6f71('0x36')][_0x6f71('0x38')](_0x4ac146);});}})[_0x6f71('0x26')](function(){_0xe2eb47();})[_0x6f71('0x29')](function(_0x4ec94b){_0xe2eb47(_0x4ec94b);});},'afterDestroy':function(_0x100c3e,_0x235031){return _0x32e1b7[_0x6f71('0x36')]['destroy']({'where':{'UserId':_0x100c3e['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x6fdde3,_0xbdce4c){if(!_0xbdce4c){return this[_0x6f71('0x15')]===this[_0x6f71('0x3a')](_0x6fdde3);}var _0x2831c2=this;this[_0x6f71('0x3a')](_0x6fdde3,function(_0x1b17a2,_0x10e95e){if(_0x1b17a2){_0xbdce4c(_0x1b17a2);}if(_0x2831c2['password']===_0x10e95e){_0xbdce4c(null,!![]);}else{_0xbdce4c(null,![]);}});},'makeSalt':function(_0x1bfcc2,_0x58c399){var _0x355a0d=0x10;if(typeof arguments[0x0]===_0x6f71('0x3b')){_0x58c399=arguments[0x0];_0x1bfcc2=_0x355a0d;}else if(typeof arguments[0x1]===_0x6f71('0x3b')){_0x58c399=arguments[0x1];}else{throw new Error(_0x6f71('0x3c'));}if(!_0x1bfcc2){_0x1bfcc2=_0x355a0d;}return crypto[_0x6f71('0x3d')](_0x1bfcc2,function(_0x3bd08b,_0x3c8160){if(_0x3bd08b){_0x58c399(_0x3bd08b);}return _0x58c399(null,_0x3c8160['toString'](_0x6f71('0x3e')));});},'encryptPassword':function(_0x3f975b,_0x4c3200){if(!_0x3f975b||!this[_0x6f71('0x3f')]){return _0x4c3200?_0x4c3200(null):null;}var _0x1fa809=0x2710;var _0x3b83a9=0x40;var _0x46b586=new Buffer(this[_0x6f71('0x3f')],_0x6f71('0x3e'));if(!_0x4c3200){return crypto[_0x6f71('0x40')](_0x3f975b,_0x46b586,_0x1fa809,_0x3b83a9,'sha1')[_0x6f71('0x41')](_0x6f71('0x3e'));}return crypto[_0x6f71('0x42')](_0x3f975b,_0x46b586,_0x1fa809,_0x3b83a9,'sha1',function(_0x533483,_0x29c9a8){if(_0x533483){_0x4c3200(_0x533483);}return _0x4c3200(null,_0x29c9a8['toString'](_0x6f71('0x3e')));});},'updatePassword':function(_0x55a344){if(!this[_0x6f71('0x15')]){return _0x55a344(null);}if(!validatePresenceOf(this[_0x6f71('0x15')])&&authTypes[_0x6f71('0x43')](this[_0x6f71('0x44')])===-0x1){_0x55a344(new Error(_0x6f71('0x45')));}var _0xbc82db=this;this[_0x6f71('0x46')](function(_0x5a61db,_0x51a7a5){if(_0x5a61db){return _0x55a344(_0x5a61db);}_0xbc82db[_0x6f71('0x3f')]=_0x51a7a5;_0xbc82db[_0x6f71('0x3a')](_0xbc82db[_0x6f71('0x15')],function(_0x21549c,_0x55fec3){if(_0x21549c){_0x55a344(_0x21549c);}_0xbc82db['password']=_0x55fec3;_0x55a344(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x6f71('0x16')]+_0x6f71('0x47')+this[_0x6f71('0x15')]);return this['md5secret'];}}});};
\ No newline at end of file
index 9338fd8..4883bf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bb6=['voice','UserVoiceQueueRt','mail','fax','sms','openchannel','whatsapp','system','set','%s%s','all','LogoutUser','destroy','push','findOne','role','mobile','phone','count','agent','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','LOGIN','callysquare','loginInPause','LOGININPAUSE','concat','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','./user.socket','register','request','then','info','User,\x20%s,\x20%s','User,\x20%s,\x20%s,\x20%s','error','code','message','result','GetUser','User','findAll','raw','options','where','attributes','limit','include','model','map','debug','stringify','ShowUser','find','catch','internal','interface','update','MemberReport','name','format','length','updateAttributes','getChannels','forEach','isNil','SIP/%s','PAUSE','YYYY-MM-DD\x20HH:mm:ss','type','DEFAULT\x20PAUSE','body','uniqueid','bulkCreate','channel','Unknown\x20channel'];(function(_0x45518f,_0x475a6b){var _0x198175=function(_0x40d333){while(--_0x40d333){_0x45518f['push'](_0x45518f['shift']());}};_0x198175(++_0x475a6b);}(_0x9bb6,0x197));var _0x69bb=function(_0x454713,_0x3436dc){_0x454713=_0x454713-0x0;var _0x2509fe=_0x9bb6[_0x454713];return _0x2509fe;};'use strict';var _=require(_0x69bb('0x0'));var util=require(_0x69bb('0x1'));var moment=require(_0x69bb('0x2'));var BPromise=require('bluebird');var rs=require(_0x69bb('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x69bb('0x4'))['db'];var utils=require(_0x69bb('0x5'));var logger=require(_0x69bb('0x6'))(_0x69bb('0x7'));var config=require(_0x69bb('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x69bb('0x9')][_0x69bb('0xa')]({'port':0x232a});config['redis']=_[_0x69bb('0xb')](config[_0x69bb('0xc')],{'host':_0x69bb('0xd'),'port':0x18eb});var socket=require(_0x69bb('0xe'))(new Redis(config[_0x69bb('0xc')]));require(_0x69bb('0xf'))[_0x69bb('0x10')](socket);function respondWithRpcPromise(_0xb07509,_0x42c6ea,_0x17397b){return new BPromise(function(_0x2675c8,_0x518e82){return client[_0x69bb('0x11')](_0xb07509,_0x17397b)[_0x69bb('0x12')](function(_0x48f986){logger[_0x69bb('0x13')](_0x69bb('0x14'),_0x42c6ea,'request\x20sent');logger['debug'](_0x69bb('0x15'),_0x42c6ea,'request\x20sent',JSON['stringify'](_0x48f986));if(_0x48f986[_0x69bb('0x16')]){if(_0x48f986[_0x69bb('0x16')][_0x69bb('0x17')]===0x1f4){logger['error'](_0x69bb('0x14'),_0x42c6ea,_0x48f986['error']['message']);return _0x518e82(_0x48f986['error'][_0x69bb('0x18')]);}logger[_0x69bb('0x16')](_0x69bb('0x14'),_0x42c6ea,_0x48f986[_0x69bb('0x16')][_0x69bb('0x18')]);return _0x2675c8(_0x48f986['error'][_0x69bb('0x18')]);}else{logger[_0x69bb('0x13')]('User,\x20%s,\x20%s',_0x42c6ea,'request\x20sent');_0x2675c8(_0x48f986[_0x69bb('0x19')]['message']);}})['catch'](function(_0xa3792e){logger[_0x69bb('0x16')](_0x69bb('0x14'),_0x42c6ea,_0xa3792e);_0x518e82(_0xa3792e);});});}exports[_0x69bb('0x1a')]=function(_0x405210){var _0x3739a0=this;return new Promise(function(_0x5465cb,_0x1578a4){return db[_0x69bb('0x1b')][_0x69bb('0x1c')]({'raw':_0x405210['options']?_0x405210['options'][_0x69bb('0x1d')]===undefined?!![]:![]:!![],'where':_0x405210[_0x69bb('0x1e')]?_0x405210[_0x69bb('0x1e')][_0x69bb('0x1f')]||null:null,'attributes':_0x405210[_0x69bb('0x1e')]?_0x405210[_0x69bb('0x1e')][_0x69bb('0x20')]||null:null,'limit':_0x405210[_0x69bb('0x1e')]?_0x405210['options'][_0x69bb('0x21')]||null:null,'include':_0x405210[_0x69bb('0x1e')]?_0x405210[_0x69bb('0x1e')][_0x69bb('0x22')]?_['map'](_0x405210[_0x69bb('0x1e')]['include'],function(_0x1aeb40){return{'model':db[_0x1aeb40[_0x69bb('0x23')]],'as':_0x1aeb40['as'],'attributes':_0x1aeb40[_0x69bb('0x20')],'include':_0x1aeb40[_0x69bb('0x22')]?_[_0x69bb('0x24')](_0x1aeb40[_0x69bb('0x22')],function(_0x4eff7a){return{'model':db[_0x4eff7a[_0x69bb('0x23')]],'as':_0x4eff7a['as'],'attributes':_0x4eff7a[_0x69bb('0x20')],'include':_0x4eff7a[_0x69bb('0x22')]?_[_0x69bb('0x24')](_0x4eff7a[_0x69bb('0x22')],function(_0x565118){return{'model':db[_0x565118[_0x69bb('0x23')]],'as':_0x565118['as'],'attributes':_0x565118[_0x69bb('0x20')]};}):[]};}):[]};}):[]:[]})[_0x69bb('0x12')](function(_0x6388fb){logger[_0x69bb('0x13')]('GetUser',_0x405210);logger[_0x69bb('0x25')]('GetUser',_0x405210,JSON[_0x69bb('0x26')](_0x6388fb));_0x5465cb(_0x6388fb);})['catch'](function(_0x33311b){logger[_0x69bb('0x16')](_0x69bb('0x1a'),_0x33311b[_0x69bb('0x18')],_0x405210);_0x1578a4(_0x3739a0[_0x69bb('0x16')](0x1f4,_0x33311b[_0x69bb('0x18')]));});});};exports[_0x69bb('0x27')]=function(_0x1a4e55){var _0x2a065a=this;return new Promise(function(_0x4f900c,_0x3d1774){return db[_0x69bb('0x1b')][_0x69bb('0x28')]({'raw':_0x1a4e55['options']?_0x1a4e55[_0x69bb('0x1e')][_0x69bb('0x1d')]===undefined?!![]:![]:!![],'where':_0x1a4e55[_0x69bb('0x1e')]?_0x1a4e55[_0x69bb('0x1e')]['where']||null:null,'attributes':_0x1a4e55['options']?_0x1a4e55[_0x69bb('0x1e')][_0x69bb('0x20')]||null:null,'include':_0x1a4e55[_0x69bb('0x1e')]?_0x1a4e55[_0x69bb('0x1e')][_0x69bb('0x22')]?_[_0x69bb('0x24')](_0x1a4e55['options']['include'],function(_0x4fedd0){return{'model':db[_0x4fedd0[_0x69bb('0x23')]],'as':_0x4fedd0['as'],'attributes':_0x4fedd0[_0x69bb('0x20')],'include':_0x4fedd0[_0x69bb('0x22')]?_[_0x69bb('0x24')](_0x4fedd0[_0x69bb('0x22')],function(_0x296361){return{'model':db[_0x296361[_0x69bb('0x23')]],'as':_0x296361['as'],'attributes':_0x296361[_0x69bb('0x20')],'include':_0x296361['include']?_['map'](_0x296361[_0x69bb('0x22')],function(_0x577e65){return{'model':db[_0x577e65[_0x69bb('0x23')]],'as':_0x577e65['as'],'attributes':_0x577e65[_0x69bb('0x20')]};}):[]};}):[]};}):[]:[]})[_0x69bb('0x12')](function(_0x5b7ff8){logger[_0x69bb('0x13')]('ShowUser',_0x1a4e55);logger[_0x69bb('0x25')](_0x69bb('0x27'),_0x1a4e55,JSON[_0x69bb('0x26')](_0x5b7ff8));_0x4f900c(_0x5b7ff8);})[_0x69bb('0x29')](function(_0x1a2f4e){logger['error']('ShowUser',_0x1a2f4e[_0x69bb('0x18')],_0x1a4e55);_0x3d1774(_0x2a065a[_0x69bb('0x16')](0x1f4,_0x1a2f4e[_0x69bb('0x18')]));});});};exports['PauseUser']=function(_0x18b839){var _0x4dbefc=this;return new Promise(function(_0x473f42,_0x38423a){var _0x1f29a3;return db[_0x69bb('0x1b')][_0x69bb('0x28')]({'where':_0x18b839[_0x69bb('0x1e')][_0x69bb('0x1f')]||{},'attributes':['id','name','role',_0x69bb('0x2a'),_0x69bb('0x2b')]})['then'](function(_0x4e384a){if(_0x4e384a){_0x1f29a3=_0x4e384a;return db['UserVoiceQueueRt'][_0x69bb('0x2c')]({'paused':0x1},{'where':{'UserId':_0x1f29a3['id']},'individualHooks':!![]});}})[_0x69bb('0x12')](function(){if(_0x1f29a3){return db[_0x69bb('0x2d')][_0x69bb('0x1c')]({'where':{'membername':_0x1f29a3[_0x69bb('0x2e')],'type':'PAUSE','exitAt':null}});}})['then'](function(_0x5a51c3){if(_0x1f29a3){if(_0x5a51c3&&_0x5a51c3['length']){var _0x5bc118=moment()[_0x69bb('0x2f')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x188081=0x0,_0x69afe3=_0x5a51c3[_0x69bb('0x30')];_0x188081<_0x69afe3;_0x188081++){_0x5a51c3[_0x188081][_0x69bb('0x31')]({'exitAt':_0x5bc118});}}}})[_0x69bb('0x12')](function(){if(_0x1f29a3){var _0x3f87b2=[];var _0x1701d9=utils[_0x69bb('0x32')]();_0x1701d9[_0x69bb('0x33')](function(_0x52f160){_0x3f87b2['push']({'channel':_0x52f160,'membername':_0x1f29a3['name'],'interface':_[_0x69bb('0x34')](_0x1f29a3[_0x69bb('0x2b')])?util[_0x69bb('0x2f')](_0x69bb('0x35'),_0x1f29a3[_0x69bb('0x2e')]):_0x1f29a3[_0x69bb('0x2b')],'type':_0x69bb('0x36'),'enterAt':moment()['format'](_0x69bb('0x37')),'data1':_0x18b839['body'][_0x69bb('0x38')]||_0x69bb('0x39'),'role':_0x1f29a3['role'],'internal':_0x1f29a3['internal'],'uniqueid':_0x18b839[_0x69bb('0x3a')][_0x69bb('0x3b')]||null});});return db[_0x69bb('0x2d')][_0x69bb('0x3c')](_0x3f87b2,{'individualHooks':!![]});}})[_0x69bb('0x12')](function(){if(_0x1f29a3){return _0x1f29a3[_0x69bb('0x2c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x18b839['body'][_0x69bb('0x38')]||_0x69bb('0x39'),'lastPauseAt':moment()['format'](_0x69bb('0x37'))});}})[_0x69bb('0x12')](function(_0xf2d2ee){_0x473f42(_0xf2d2ee);})['catch'](function(_0x1e4687){_0x38423a(_0x4dbefc[_0x69bb('0x16')](0x1f4,_0x1e4687['message']));});});};exports['UnpauseUser']=function(_0x502608){var _0x16eed2=this;return new Promise(function(_0x2b1930,_0x5bffb6){var _0xf6e3d6;return db[_0x69bb('0x1b')]['findOne']({'where':_0x502608[_0x69bb('0x1e')][_0x69bb('0x1f')]||{},'attributes':['id',_0x69bb('0x2e')]})[_0x69bb('0x12')](function(_0x2a00c2){if(_0x2a00c2){_0xf6e3d6=_0x2a00c2;if(_0x502608[_0x69bb('0x3a')]['channel']&&!utils['isValidChannel'](_0x502608[_0x69bb('0x3a')][_0x69bb('0x3d')])){throw new Error(_0x69bb('0x3e'));}switch(_0x502608[_0x69bb('0x3a')][_0x69bb('0x3d')]){case _0x69bb('0x3f'):return db[_0x69bb('0x40')][_0x69bb('0x2c')]({'paused':0x0},{'where':{'UserId':_0xf6e3d6['id']}})[_0x69bb('0x12')](function(){return db['MemberReport'][_0x69bb('0x28')]({'where':{'channel':_0x502608['body'][_0x69bb('0x3d')],'membername':_0xf6e3d6[_0x69bb('0x2e')],'type':_0x69bb('0x36'),'exitAt':null}});})[_0x69bb('0x12')](function(_0x23ae01){if(_0x23ae01){return _0x23ae01[_0x69bb('0x2c')]({'exitAt':moment()[_0x69bb('0x2f')](_0x69bb('0x37')),'data2':'system'},{'individualHooks':!![]});}return null;})[_0x69bb('0x12')](function(){return _0xf6e3d6['update']({'voicePause':![]});});case _0x69bb('0x41'):case'chat':case _0x69bb('0x42'):case _0x69bb('0x43'):case _0x69bb('0x44'):case _0x69bb('0x45'):return db[_0x69bb('0x2d')][_0x69bb('0x28')]({'where':{'channel':_0x502608['body']['channel'],'membername':_0xf6e3d6['name'],'type':'PAUSE','exitAt':null}})[_0x69bb('0x12')](function(_0x46998c){return _0x46998c[_0x69bb('0x2c')]({'exitAt':moment()[_0x69bb('0x2f')](_0x69bb('0x37')),'data2':_0x69bb('0x46')},{'individualHooks':!![]});})[_0x69bb('0x12')](function(){var _0x2ed872={};_[_0x69bb('0x47')](_0x2ed872,util[_0x69bb('0x2f')](_0x69bb('0x48'),_0x502608['body'][_0x69bb('0x3d')],'Pause'),![]);return _0xf6e3d6[_0x69bb('0x2c')](_0x2ed872);});default:return db[_0x69bb('0x40')]['update']({'paused':0x0},{'where':{'UserId':_0xf6e3d6['id']}})['then'](function(){return db[_0x69bb('0x2d')][_0x69bb('0x1c')]({'where':{'membername':_0xf6e3d6[_0x69bb('0x2e')],'type':_0x69bb('0x36'),'exitAt':null}});})[_0x69bb('0x12')](function(_0x33f9a2){var _0x37f7ce=[];_0x33f9a2[_0x69bb('0x33')](function(_0x565c34){_0x37f7ce['push'](_0x565c34[_0x69bb('0x2c')]({'exitAt':moment()['format'](_0x69bb('0x37')),'data2':_0x69bb('0x46')}));});return BPromise[_0x69bb('0x49')](_0x37f7ce);})[_0x69bb('0x12')](function(){return _0xf6e3d6['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x69bb('0x12')](function(_0x305eba){_0x2b1930(_0x305eba);})['catch'](function(_0x4172be){_0x5bffb6(_0x16eed2[_0x69bb('0x16')](0x1f4,_0x4172be[_0x69bb('0x18')]));});});};exports[_0x69bb('0x4a')]=function(_0x55038a){var _0x4d4843=this;return new Promise(function(_0x75a716,_0x188965){var _0x5069a3;return db[_0x69bb('0x1b')]['findOne']({'where':_0x55038a[_0x69bb('0x1e')][_0x69bb('0x1f')]||{},'attributes':['id',_0x69bb('0x2e')]})[_0x69bb('0x12')](function(_0x4966df){if(_0x4966df){_0x5069a3=_0x4966df;return db[_0x69bb('0x40')][_0x69bb('0x4b')]({'where':{'membername':_0x5069a3['name']},'individualHooks':!![]});}})[_0x69bb('0x12')](function(){if(_0x5069a3){return db[_0x69bb('0x2d')][_0x69bb('0x1c')]({'where':{'membername':_0x5069a3['name'],'exitAt':null}});}})[_0x69bb('0x12')](function(_0x208b1b){if(_0x5069a3){if(_0x208b1b&&_0x208b1b[_0x69bb('0x30')]){var _0xe72ba3=[];_0x208b1b['forEach'](function(_0x26effd){_0xe72ba3[_0x69bb('0x4c')](_0x26effd[_0x69bb('0x2c')]({'exitAt':moment()[_0x69bb('0x2f')](_0x69bb('0x37'))}));});return BPromise[_0x69bb('0x49')](_0xe72ba3);}}})[_0x69bb('0x12')](function(){if(_0x5069a3){return _0x5069a3[_0x69bb('0x2c')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x69bb('0x12')](function(_0x1ba910){_0x75a716(_0x1ba910);})[_0x69bb('0x29')](function(_0x2a4c86){_0x188965(_0x4d4843[_0x69bb('0x16')](0x1f4,_0x2a4c86[_0x69bb('0x18')]));});});};exports['LoginUser']=function(_0x159541){var _0x3dc947=this;return new Promise(function(_0x5de2f0,_0x35622d){var _0x1b6c41;var _0x5ea1f8;var _0xefb010;var _0x248bce;return db[_0x69bb('0x1b')][_0x69bb('0x4d')]({'where':_0x159541[_0x69bb('0x1e')][_0x69bb('0x1f')]||{},'attributes':['id',_0x69bb('0x2e'),_0x69bb('0x4e'),_0x69bb('0x4f'),_0x69bb('0x50'),_0x69bb('0x2a'),'loginInPause','interface']})[_0x69bb('0x12')](function(_0x1173b3){if(_0x1173b3){_0x1b6c41=_0x1173b3;_0x248bce=_0x159541[_0x69bb('0x3a')]['interface']?_0x159541[_0x69bb('0x3a')][_0x69bb('0x2b')]:util[_0x69bb('0x2f')]('SIP/%s',_0x1b6c41['name']);return db[_0x69bb('0x1b')][_0x69bb('0x51')]({'where':{'role':_0x69bb('0x52'),'online':!![],'id':{'$ne':_0x1b6c41['id']}}});}})['then'](function(_0x1b4ff4){if(_0x1b4ff4){_0xefb010=_0x1b4ff4;return require('../../config/license/util')['getLicense']();}})[_0x69bb('0x12')](function(_0x4cc7cf){if(_0x4cc7cf&&_0x4cc7cf[_0x69bb('0x53')]&&_0xefb010>=_0x4cc7cf['agents']){throw new Error(_0x69bb('0x54'));}})[_0x69bb('0x12')](function(){if(_0x1b6c41){return db[_0x69bb('0x40')][_0x69bb('0x4b')]({'where':{'membername':_0x1b6c41[_0x69bb('0x2e')]},'individualHooks':!![]});}})[_0x69bb('0x12')](function(){if(_0x1b6c41){return _0x1b6c41[_0x69bb('0x55')]({'raw':!![]});}})['then'](function(_0x7bb214){if(_0x1b6c41){if(_0x7bb214){var _0x24a3e6=[];_0x5ea1f8=_0x7bb214;if(_0x5ea1f8[_0x69bb('0x30')]){for(var _0x347810=0x0;_0x347810<_0x5ea1f8[_0x69bb('0x30')];_0x347810++){_0x24a3e6['push'](db[_0x69bb('0x40')][_0x69bb('0x56')]({'membername':_0x1b6c41[_0x69bb('0x2e')],'UserId':_0x1b6c41['id'],'queue_name':_0x5ea1f8[_0x347810][_0x69bb('0x2e')],'VoiceQueueId':_0x5ea1f8[_0x347810]['id'],'interface':_0x248bce,'paused':_0x1b6c41['loginInPause']||![],'penalty':_0x5ea1f8[_0x347810][_0x69bb('0x57')]||0x0}));}return BPromise[_0x69bb('0x49')](_0x24a3e6);}}}})[_0x69bb('0x12')](function(){if(_0x1b6c41){return db['MemberReport'][_0x69bb('0x1c')]({'where':{'membername':_0x1b6c41[_0x69bb('0x2e')],'exitAt':null}});}})[_0x69bb('0x12')](function(_0x21b512){if(_0x1b6c41){if(_0x21b512&&_0x21b512[_0x69bb('0x30')]){var _0x9c001e=[];_0x21b512['forEach'](function(_0x15cd7f){_0x9c001e[_0x69bb('0x4c')](_0x15cd7f['update']({'exitAt':moment()[_0x69bb('0x2f')](_0x69bb('0x37'))}));});return BPromise['all'](_0x9c001e);}}})[_0x69bb('0x12')](function(_0x4e0d3f){if(_0x1b6c41){var _0x497e47=[];var _0x5c1348=[];var _0x29f368=utils['getChannels']();var _0x4f6074={'membername':_0x1b6c41[_0x69bb('0x2e')],'interface':_0x248bce,'enterAt':moment()[_0x69bb('0x2f')](_0x69bb('0x37')),'role':_0x1b6c41['role'],'internal':_0x1b6c41[_0x69bb('0x2a')]};_0x29f368[_0x69bb('0x33')](function(_0x240839){_0x497e47[_0x69bb('0x4c')](_[_0x69bb('0x58')]({'channel':_0x240839,'type':_0x69bb('0x59'),'data1':_0x69bb('0x5a'),'data2':_0x248bce},_0x4f6074));if(_0x1b6c41[_0x69bb('0x5b')]){_0x5c1348[_0x69bb('0x4c')](_['merge']({'channel':_0x240839,'type':_0x69bb('0x36'),'data1':_0x69bb('0x5c')},_0x4f6074));}});return db[_0x69bb('0x2d')][_0x69bb('0x3c')](_0x497e47[_0x69bb('0x5d')](_0x5c1348),{'individualHooks':!![]});}})[_0x69bb('0x12')](function(){if(_0x1b6c41){return _0x1b6c41[_0x69bb('0x2c')]({'online':!![],'lastLoginAt':moment()[_0x69bb('0x2f')](_0x69bb('0x37')),'voicePause':_0x1b6c41[_0x69bb('0x5b')]||![],'mailPause':_0x1b6c41[_0x69bb('0x5b')]||![],'chatPause':_0x1b6c41[_0x69bb('0x5b')]||![],'faxPause':_0x1b6c41[_0x69bb('0x5b')]||![],'smsPause':_0x1b6c41[_0x69bb('0x5b')]||![],'openchannelPause':_0x1b6c41[_0x69bb('0x5b')]||![],'pauseType':_0x1b6c41[_0x69bb('0x5b')]?_0x69bb('0x5c'):null,'lastPauseAt':moment()[_0x69bb('0x2f')](_0x69bb('0x37')),'interface':_0x248bce});}})[_0x69bb('0x12')](function(_0x470e42){_0x5de2f0(_0x470e42);})[_0x69bb('0x29')](function(_0x34ddc7){_0x35622d(_0x3dc947[_0x69bb('0x16')](0x1f4,_0x34ddc7[_0x69bb('0x18')]));});});};
\ No newline at end of file
+var _0x31ce=['register','request','then','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','User','findAll','options','raw','where','include','map','model','attributes','GetUser','catch','ShowUser','find','PauseUser','name','role','internal','interface','UserVoiceQueueRt','MemberReport','PAUSE','length','updateAttributes','getChannels','isNil','format','YYYY-MM-DD\x20HH:mm:ss','type','DEFAULT\x20PAUSE','uniqueid','bulkCreate','update','body','findOne','isValidChannel','voice','system','mail','chat','fax','sms','set','channel','Pause','forEach','push','all','LogoutUser','destroy','mobile','phone','loginInPause','SIP/%s','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','UserVoiceQueue.penalty','merge','LOGIN','LOGININPAUSE','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket'];(function(_0x2bbab2,_0xdb622d){var _0x2ca775=function(_0x5820b6){while(--_0x5820b6){_0x2bbab2['push'](_0x2bbab2['shift']());}};_0x2ca775(++_0xdb622d);}(_0x31ce,0xa6));var _0xe31c=function(_0x5517c0,_0x358609){_0x5517c0=_0x5517c0-0x0;var _0x33803b=_0x31ce[_0x5517c0];return _0x33803b;};'use strict';var _=require(_0xe31c('0x0'));var util=require(_0xe31c('0x1'));var moment=require(_0xe31c('0x2'));var BPromise=require(_0xe31c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe31c('0x4'));var db=require(_0xe31c('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe31c('0x6'));var config=require(_0xe31c('0x7'));var jayson=require(_0xe31c('0x8'));var client=jayson[_0xe31c('0x9')][_0xe31c('0xa')]({'port':0x232a});config[_0xe31c('0xb')]=_[_0xe31c('0xc')](config[_0xe31c('0xb')],{'host':_0xe31c('0xd'),'port':0x18eb});var socket=require(_0xe31c('0xe'))(new Redis(config[_0xe31c('0xb')]));require(_0xe31c('0xf'))[_0xe31c('0x10')](socket);function respondWithRpcPromise(_0x1c1375,_0x4de208,_0x3981cc){return new BPromise(function(_0x3e6dab,_0x59e90b){return client[_0xe31c('0x11')](_0x1c1375,_0x3981cc)[_0xe31c('0x12')](function(_0x532225){logger['info'](_0xe31c('0x13'),_0x4de208,'request\x20sent');logger[_0xe31c('0x14')](_0xe31c('0x15'),_0x4de208,'request\x20sent',JSON[_0xe31c('0x16')](_0x532225));if(_0x532225['error']){if(_0x532225[_0xe31c('0x17')][_0xe31c('0x18')]===0x1f4){logger[_0xe31c('0x17')](_0xe31c('0x13'),_0x4de208,_0x532225[_0xe31c('0x17')][_0xe31c('0x19')]);return _0x59e90b(_0x532225[_0xe31c('0x17')][_0xe31c('0x19')]);}logger['error'](_0xe31c('0x13'),_0x4de208,_0x532225[_0xe31c('0x17')][_0xe31c('0x19')]);return _0x3e6dab(_0x532225[_0xe31c('0x17')][_0xe31c('0x19')]);}else{logger[_0xe31c('0x1a')](_0xe31c('0x13'),_0x4de208,_0xe31c('0x1b'));_0x3e6dab(_0x532225['result'][_0xe31c('0x19')]);}})['catch'](function(_0x363a52){logger['error'](_0xe31c('0x13'),_0x4de208,_0x363a52);_0x59e90b(_0x363a52);});});}exports['GetUser']=function(_0x5b1e07){var _0x4f7127=this;return new Promise(function(_0x5e11f6,_0x59e367){return db[_0xe31c('0x1c')][_0xe31c('0x1d')]({'raw':_0x5b1e07[_0xe31c('0x1e')]?_0x5b1e07[_0xe31c('0x1e')][_0xe31c('0x1f')]===undefined?!![]:![]:!![],'where':_0x5b1e07[_0xe31c('0x1e')]?_0x5b1e07[_0xe31c('0x1e')][_0xe31c('0x20')]||null:null,'attributes':_0x5b1e07[_0xe31c('0x1e')]?_0x5b1e07[_0xe31c('0x1e')]['attributes']||null:null,'limit':_0x5b1e07[_0xe31c('0x1e')]?_0x5b1e07[_0xe31c('0x1e')]['limit']||null:null,'include':_0x5b1e07['options']?_0x5b1e07[_0xe31c('0x1e')][_0xe31c('0x21')]?_[_0xe31c('0x22')](_0x5b1e07[_0xe31c('0x1e')]['include'],function(_0x3c7a66){return{'model':db[_0x3c7a66[_0xe31c('0x23')]],'as':_0x3c7a66['as'],'attributes':_0x3c7a66[_0xe31c('0x24')],'include':_0x3c7a66[_0xe31c('0x21')]?_[_0xe31c('0x22')](_0x3c7a66[_0xe31c('0x21')],function(_0x606090){return{'model':db[_0x606090[_0xe31c('0x23')]],'as':_0x606090['as'],'attributes':_0x606090['attributes'],'include':_0x606090[_0xe31c('0x21')]?_[_0xe31c('0x22')](_0x606090[_0xe31c('0x21')],function(_0x342c9e){return{'model':db[_0x342c9e[_0xe31c('0x23')]],'as':_0x342c9e['as'],'attributes':_0x342c9e[_0xe31c('0x24')]};}):[]};}):[]};}):[]:[]})[_0xe31c('0x12')](function(_0x545a2b){logger[_0xe31c('0x1a')](_0xe31c('0x25'),_0x5b1e07);logger['debug'](_0xe31c('0x25'),_0x5b1e07,JSON[_0xe31c('0x16')](_0x545a2b));_0x5e11f6(_0x545a2b);})[_0xe31c('0x26')](function(_0x42dbda){logger[_0xe31c('0x17')](_0xe31c('0x25'),_0x42dbda[_0xe31c('0x19')],_0x5b1e07);_0x59e367(_0x4f7127['error'](0x1f4,_0x42dbda['message']));});});};exports[_0xe31c('0x27')]=function(_0x4db768){var _0x88b443=this;return new Promise(function(_0x5e66b4,_0x4482c0){return db[_0xe31c('0x1c')][_0xe31c('0x28')]({'raw':_0x4db768[_0xe31c('0x1e')]?_0x4db768['options']['raw']===undefined?!![]:![]:!![],'where':_0x4db768[_0xe31c('0x1e')]?_0x4db768['options'][_0xe31c('0x20')]||null:null,'attributes':_0x4db768[_0xe31c('0x1e')]?_0x4db768['options'][_0xe31c('0x24')]||null:null,'include':_0x4db768[_0xe31c('0x1e')]?_0x4db768[_0xe31c('0x1e')][_0xe31c('0x21')]?_[_0xe31c('0x22')](_0x4db768['options']['include'],function(_0x3e002b){return{'model':db[_0x3e002b['model']],'as':_0x3e002b['as'],'attributes':_0x3e002b[_0xe31c('0x24')],'include':_0x3e002b[_0xe31c('0x21')]?_[_0xe31c('0x22')](_0x3e002b[_0xe31c('0x21')],function(_0x54f303){return{'model':db[_0x54f303[_0xe31c('0x23')]],'as':_0x54f303['as'],'attributes':_0x54f303[_0xe31c('0x24')],'include':_0x54f303[_0xe31c('0x21')]?_['map'](_0x54f303[_0xe31c('0x21')],function(_0x213c3b){return{'model':db[_0x213c3b['model']],'as':_0x213c3b['as'],'attributes':_0x213c3b[_0xe31c('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3879da){logger[_0xe31c('0x1a')](_0xe31c('0x27'),_0x4db768);logger[_0xe31c('0x14')]('ShowUser',_0x4db768,JSON[_0xe31c('0x16')](_0x3879da));_0x5e66b4(_0x3879da);})['catch'](function(_0x1b46b4){logger[_0xe31c('0x17')](_0xe31c('0x27'),_0x1b46b4[_0xe31c('0x19')],_0x4db768);_0x4482c0(_0x88b443['error'](0x1f4,_0x1b46b4['message']));});});};exports[_0xe31c('0x29')]=function(_0x5b44a9){var _0x126e86=this;return new Promise(function(_0x13a413,_0xb6f831){var _0x3841ab;return db[_0xe31c('0x1c')]['find']({'where':_0x5b44a9['options']['where']||{},'attributes':['id',_0xe31c('0x2a'),_0xe31c('0x2b'),_0xe31c('0x2c'),_0xe31c('0x2d')]})['then'](function(_0x4ebdfe){if(_0x4ebdfe){_0x3841ab=_0x4ebdfe;return db[_0xe31c('0x2e')]['update']({'paused':0x1},{'where':{'UserId':_0x3841ab['id']},'individualHooks':!![]});}})[_0xe31c('0x12')](function(){if(_0x3841ab){return db[_0xe31c('0x2f')]['findAll']({'where':{'membername':_0x3841ab[_0xe31c('0x2a')],'type':_0xe31c('0x30'),'exitAt':null}});}})[_0xe31c('0x12')](function(_0xd97b82){if(_0x3841ab){if(_0xd97b82&&_0xd97b82[_0xe31c('0x31')]){var _0x6afbeb=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x379209=0x0,_0x5c842b=_0xd97b82[_0xe31c('0x31')];_0x379209<_0x5c842b;_0x379209++){_0xd97b82[_0x379209][_0xe31c('0x32')]({'exitAt':_0x6afbeb});}}}})[_0xe31c('0x12')](function(){if(_0x3841ab){var _0x54c279=[];var _0x1d6d2a=utils[_0xe31c('0x33')]();_0x1d6d2a['forEach'](function(_0x48189a){_0x54c279['push']({'channel':_0x48189a,'membername':_0x3841ab[_0xe31c('0x2a')],'interface':_[_0xe31c('0x34')](_0x3841ab['interface'])?util[_0xe31c('0x35')]('SIP/%s',_0x3841ab[_0xe31c('0x2a')]):_0x3841ab['interface'],'type':_0xe31c('0x30'),'enterAt':moment()[_0xe31c('0x35')](_0xe31c('0x36')),'data1':_0x5b44a9['body'][_0xe31c('0x37')]||_0xe31c('0x38'),'role':_0x3841ab[_0xe31c('0x2b')],'internal':_0x3841ab['internal'],'uniqueid':_0x5b44a9['body'][_0xe31c('0x39')]||null});});return db['MemberReport'][_0xe31c('0x3a')](_0x54c279,{'individualHooks':!![]});}})[_0xe31c('0x12')](function(){if(_0x3841ab){return _0x3841ab[_0xe31c('0x3b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x5b44a9[_0xe31c('0x3c')]['type']||_0xe31c('0x38'),'lastPauseAt':moment()[_0xe31c('0x35')]('YYYY-MM-DD\x20HH:mm:ss')});}})['then'](function(_0xb3947){_0x13a413(_0xb3947);})[_0xe31c('0x26')](function(_0x48538b){_0xb6f831(_0x126e86[_0xe31c('0x17')](0x1f4,_0x48538b[_0xe31c('0x19')]));});});};exports['UnpauseUser']=function(_0x21f3b9){var _0x5c71b4=this;return new Promise(function(_0x1109ae,_0x223ae2){var _0x2059b9;return db['User'][_0xe31c('0x3d')]({'where':_0x21f3b9[_0xe31c('0x1e')][_0xe31c('0x20')]||{},'attributes':['id',_0xe31c('0x2a')]})['then'](function(_0x2eac13){if(_0x2eac13){_0x2059b9=_0x2eac13;if(_0x21f3b9['body']['channel']&&!utils[_0xe31c('0x3e')](_0x21f3b9[_0xe31c('0x3c')]['channel'])){throw new Error('Unknown\x20channel');}switch(_0x21f3b9[_0xe31c('0x3c')]['channel']){case _0xe31c('0x3f'):return db[_0xe31c('0x2e')]['update']({'paused':0x0},{'where':{'UserId':_0x2059b9['id']}})[_0xe31c('0x12')](function(){return db[_0xe31c('0x2f')][_0xe31c('0x28')]({'where':{'channel':_0x21f3b9[_0xe31c('0x3c')]['channel'],'membername':_0x2059b9['name'],'type':_0xe31c('0x30'),'exitAt':null}});})[_0xe31c('0x12')](function(_0x538b3a){if(_0x538b3a){return _0x538b3a[_0xe31c('0x3b')]({'exitAt':moment()[_0xe31c('0x35')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xe31c('0x40')},{'individualHooks':!![]});}return null;})[_0xe31c('0x12')](function(){return _0x2059b9[_0xe31c('0x3b')]({'voicePause':![]});});case _0xe31c('0x41'):case _0xe31c('0x42'):case _0xe31c('0x43'):case _0xe31c('0x44'):case'openchannel':case'whatsapp':return db[_0xe31c('0x2f')][_0xe31c('0x28')]({'where':{'channel':_0x21f3b9[_0xe31c('0x3c')]['channel'],'membername':_0x2059b9[_0xe31c('0x2a')],'type':_0xe31c('0x30'),'exitAt':null}})[_0xe31c('0x12')](function(_0x2c7390){return _0x2c7390[_0xe31c('0x3b')]({'exitAt':moment()[_0xe31c('0x35')](_0xe31c('0x36')),'data2':_0xe31c('0x40')},{'individualHooks':!![]});})[_0xe31c('0x12')](function(){var _0x380b81={};_[_0xe31c('0x45')](_0x380b81,util[_0xe31c('0x35')]('%s%s',_0x21f3b9[_0xe31c('0x3c')][_0xe31c('0x46')],_0xe31c('0x47')),![]);return _0x2059b9['update'](_0x380b81);});default:return db[_0xe31c('0x2e')][_0xe31c('0x3b')]({'paused':0x0},{'where':{'UserId':_0x2059b9['id']}})[_0xe31c('0x12')](function(){return db[_0xe31c('0x2f')][_0xe31c('0x1d')]({'where':{'membername':_0x2059b9['name'],'type':'PAUSE','exitAt':null}});})[_0xe31c('0x12')](function(_0x4f6b8e){var _0x106f52=[];_0x4f6b8e[_0xe31c('0x48')](function(_0x4b21b9){_0x106f52[_0xe31c('0x49')](_0x4b21b9[_0xe31c('0x3b')]({'exitAt':moment()[_0xe31c('0x35')](_0xe31c('0x36')),'data2':_0xe31c('0x40')}));});return BPromise[_0xe31c('0x4a')](_0x106f52);})[_0xe31c('0x12')](function(){return _0x2059b9[_0xe31c('0x3b')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xe31c('0x12')](function(_0x1a08f3){_0x1109ae(_0x1a08f3);})[_0xe31c('0x26')](function(_0x251010){_0x223ae2(_0x5c71b4[_0xe31c('0x17')](0x1f4,_0x251010[_0xe31c('0x19')]));});});};exports[_0xe31c('0x4b')]=function(_0x4ad321){var _0x6ef2f4=this;return new Promise(function(_0x48e90d,_0x5569d9){var _0x173855;return db[_0xe31c('0x1c')]['findOne']({'where':_0x4ad321[_0xe31c('0x1e')][_0xe31c('0x20')]||{},'attributes':['id',_0xe31c('0x2a')]})['then'](function(_0x2c5359){if(_0x2c5359){_0x173855=_0x2c5359;return db[_0xe31c('0x2e')][_0xe31c('0x4c')]({'where':{'membername':_0x173855[_0xe31c('0x2a')]},'individualHooks':!![]});}})['then'](function(){if(_0x173855){return db['MemberReport'][_0xe31c('0x1d')]({'where':{'membername':_0x173855[_0xe31c('0x2a')],'exitAt':null}});}})[_0xe31c('0x12')](function(_0x5609bb){if(_0x173855){if(_0x5609bb&&_0x5609bb[_0xe31c('0x31')]){var _0x17ddc1=[];_0x5609bb['forEach'](function(_0x492f84){_0x17ddc1[_0xe31c('0x49')](_0x492f84[_0xe31c('0x3b')]({'exitAt':moment()[_0xe31c('0x35')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xe31c('0x4a')](_0x17ddc1);}}})[_0xe31c('0x12')](function(){if(_0x173855){return _0x173855[_0xe31c('0x3b')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xe31c('0x12')](function(_0x38e6cc){_0x48e90d(_0x38e6cc);})['catch'](function(_0x5b006a){_0x5569d9(_0x6ef2f4[_0xe31c('0x17')](0x1f4,_0x5b006a[_0xe31c('0x19')]));});});};exports['LoginUser']=function(_0x402af9){var _0x2343b0=this;return new Promise(function(_0x594acc,_0x2fd87b){var _0x238a48;var _0x1f7ac4;var _0x1d772c;var _0x475b46;return db[_0xe31c('0x1c')][_0xe31c('0x3d')]({'where':_0x402af9[_0xe31c('0x1e')][_0xe31c('0x20')]||{},'attributes':['id','name',_0xe31c('0x2b'),_0xe31c('0x4d'),_0xe31c('0x4e'),_0xe31c('0x2c'),_0xe31c('0x4f'),'interface']})[_0xe31c('0x12')](function(_0x2487af){if(_0x2487af){_0x238a48=_0x2487af;_0x475b46=_0x402af9['body'][_0xe31c('0x2d')]?_0x402af9[_0xe31c('0x3c')]['interface']:util['format'](_0xe31c('0x50'),_0x238a48['name']);return db[_0xe31c('0x1c')]['count']({'where':{'role':_0xe31c('0x51'),'online':!![],'id':{'$ne':_0x238a48['id']}}});}})['then'](function(_0x209b62){if(_0x209b62){_0x1d772c=_0x209b62;return require(_0xe31c('0x52'))[_0xe31c('0x53')]();}})[_0xe31c('0x12')](function(_0x2e52eb){if(_0x2e52eb&&_0x2e52eb['agents']&&_0x1d772c>=_0x2e52eb[_0xe31c('0x54')]){throw new Error(_0xe31c('0x55'));}})[_0xe31c('0x12')](function(){if(_0x238a48){return db[_0xe31c('0x2e')]['destroy']({'where':{'membername':_0x238a48[_0xe31c('0x2a')]},'individualHooks':!![]});}})[_0xe31c('0x12')](function(){if(_0x238a48){return _0x238a48['getVoiceQueues']({'raw':!![]});}})[_0xe31c('0x12')](function(_0xad3eb6){if(_0x238a48){if(_0xad3eb6){var _0x29e3c=[];_0x1f7ac4=_0xad3eb6;if(_0x1f7ac4[_0xe31c('0x31')]){for(var _0x3dbb52=0x0;_0x3dbb52<_0x1f7ac4[_0xe31c('0x31')];_0x3dbb52++){_0x29e3c[_0xe31c('0x49')](db[_0xe31c('0x2e')][_0xe31c('0x56')]({'membername':_0x238a48[_0xe31c('0x2a')],'UserId':_0x238a48['id'],'queue_name':_0x1f7ac4[_0x3dbb52][_0xe31c('0x2a')],'VoiceQueueId':_0x1f7ac4[_0x3dbb52]['id'],'interface':_0x475b46,'paused':_0x238a48[_0xe31c('0x4f')]||![],'penalty':_0x1f7ac4[_0x3dbb52][_0xe31c('0x57')]||0x0}));}return BPromise['all'](_0x29e3c);}}}})[_0xe31c('0x12')](function(){if(_0x238a48){return db[_0xe31c('0x2f')]['findAll']({'where':{'membername':_0x238a48[_0xe31c('0x2a')],'exitAt':null}});}})[_0xe31c('0x12')](function(_0x33899e){if(_0x238a48){if(_0x33899e&&_0x33899e[_0xe31c('0x31')]){var _0x40b271=[];_0x33899e[_0xe31c('0x48')](function(_0x494930){_0x40b271[_0xe31c('0x49')](_0x494930[_0xe31c('0x3b')]({'exitAt':moment()[_0xe31c('0x35')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x40b271);}}})[_0xe31c('0x12')](function(_0x59f1b7){if(_0x238a48){var _0x4bc795=[];var _0x16e55b=[];var _0x7ffdc7=utils[_0xe31c('0x33')]();var _0x45f3e2={'membername':_0x238a48[_0xe31c('0x2a')],'interface':_0x475b46,'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x238a48['role'],'internal':_0x238a48[_0xe31c('0x2c')]};_0x7ffdc7[_0xe31c('0x48')](function(_0x1e30ff){_0x4bc795[_0xe31c('0x49')](_[_0xe31c('0x58')]({'channel':_0x1e30ff,'type':_0xe31c('0x59'),'data1':'callysquare','data2':_0x475b46},_0x45f3e2));if(_0x238a48['loginInPause']){_0x16e55b[_0xe31c('0x49')](_[_0xe31c('0x58')]({'channel':_0x1e30ff,'type':_0xe31c('0x30'),'data1':_0xe31c('0x5a')},_0x45f3e2));}});return db[_0xe31c('0x2f')]['bulkCreate'](_0x4bc795['concat'](_0x16e55b),{'individualHooks':!![]});}})[_0xe31c('0x12')](function(){if(_0x238a48){return _0x238a48[_0xe31c('0x3b')]({'online':!![],'lastLoginAt':moment()[_0xe31c('0x35')](_0xe31c('0x36')),'voicePause':_0x238a48[_0xe31c('0x4f')]||![],'mailPause':_0x238a48[_0xe31c('0x4f')]||![],'chatPause':_0x238a48[_0xe31c('0x4f')]||![],'faxPause':_0x238a48['loginInPause']||![],'smsPause':_0x238a48[_0xe31c('0x4f')]||![],'openchannelPause':_0x238a48[_0xe31c('0x4f')]||![],'pauseType':_0x238a48[_0xe31c('0x4f')]?_0xe31c('0x5a'):null,'lastPauseAt':moment()[_0xe31c('0x35')](_0xe31c('0x36')),'interface':_0x475b46});}})['then'](function(_0x597077){_0x594acc(_0x597077);})['catch'](function(_0x1564a5){_0x2fd87b(_0x2343b0[_0xe31c('0x17')](0x1f4,_0x1564a5[_0xe31c('0x19')]));});});};
\ No newline at end of file
index 67b24f2..e59bb27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeafb=['emit','removeListener','register','length','./user.events','save','remove','update'];(function(_0x535619,_0x19109a){var _0x4a9a79=function(_0x5b0023){while(--_0x5b0023){_0x535619['push'](_0x535619['shift']());}};_0x4a9a79(++_0x19109a);}(_0xeafb,0xd4));var _0xbeaf=function(_0x373059,_0x17b09c){_0x373059=_0x373059-0x0;var _0x368f67=_0xeafb[_0x373059];return _0x368f67;};'use strict';var UserEvents=require(_0xbeaf('0x0'));var events=[_0xbeaf('0x1'),_0xbeaf('0x2'),_0xbeaf('0x3')];function createListener(_0x44fbcb,_0x4119c5){return function(_0x2be4c7){_0x4119c5[_0xbeaf('0x4')](_0x44fbcb,_0x2be4c7);};}function removeListener(_0x3c0e97,_0x5b33c2){return function(){UserEvents[_0xbeaf('0x5')](_0x3c0e97,_0x5b33c2);};}exports[_0xbeaf('0x6')]=function(_0x2a7911){for(var _0x25b464=0x0,_0x52f81a=events[_0xbeaf('0x7')];_0x25b464<_0x52f81a;_0x25b464++){var _0x3b99c9=events[_0x25b464];var _0x34f405=createListener('user:'+_0x3b99c9,_0x2a7911);UserEvents['on'](_0x3b99c9,_0x34f405);}};
\ No newline at end of file
+var _0xb4fe=['length','./user.events','update','register'];(function(_0x4d29eb,_0x5ba766){var _0x53cadb=function(_0x121326){while(--_0x121326){_0x4d29eb['push'](_0x4d29eb['shift']());}};_0x53cadb(++_0x5ba766);}(_0xb4fe,0x1ad));var _0xeb4f=function(_0x2119fd,_0x5f1163){_0x2119fd=_0x2119fd-0x0;var _0x1e38cc=_0xb4fe[_0x2119fd];return _0x1e38cc;};'use strict';var UserEvents=require(_0xeb4f('0x0'));var events=['save','remove',_0xeb4f('0x1')];function createListener(_0x3a7e8e,_0x782079){return function(_0x2d0be6){_0x782079['emit'](_0x3a7e8e,_0x2d0be6);};}function removeListener(_0x4d96b6,_0x1d6972){return function(){UserEvents['removeListener'](_0x4d96b6,_0x1d6972);};}exports[_0xeb4f('0x2')]=function(_0x4026a3){for(var _0x386761=0x0,_0x347cb3=events[_0xeb4f('0x3')];_0x386761<_0x347cb3;_0x386761++){var _0x220a10=events[_0x386761];var _0x9406f2=createListener('user:'+_0x220a10,_0x4026a3);UserEvents['on'](_0x220a10,_0x9406f2);}};
\ No newline at end of file
index b266449..b78f3da 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(_0x4b839e,_0x53eba0){var _0x2d7370=function(_0xda3d0d){while(--_0xda3d0d){_0x4b839e['push'](_0x4b839e['shift']());}};_0x2d7370(++_0x53eba0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x34d275,_0x5d84ee){_0x34d275=_0x34d275-0x0;var _0x1379cc=_0xcb91[_0x34d275];return _0x1379cc;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x22bcc8,_0x3b9436){var _0x271e88=function(_0x2a31a5){while(--_0x2a31a5){_0x22bcc8['push'](_0x22bcc8['shift']());}};_0x271e88(++_0x3b9436);}(_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 736bc7f..2ec9b20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb9d=['exports','INTEGER','sequelize'];(function(_0x4d3681,_0x136f19){var _0x22c7ac=function(_0x3c6120){while(--_0x3c6120){_0x4d3681['push'](_0x4d3681['shift']());}};_0x22c7ac(++_0x136f19);}(_0xbb9d,0x1d3));var _0xdbb9=function(_0x17d86e,_0x45e284){_0x17d86e=_0x17d86e-0x0;var _0x75bea0=_0xbb9d[_0x17d86e];return _0x75bea0;};'use strict';var Sequelize=require(_0xdbb9('0x0'));module[_0xdbb9('0x1')]={'penalty':{'type':Sequelize[_0xdbb9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x909d=['exports','INTEGER','sequelize'];(function(_0x409251,_0x40f525){var _0x216f47=function(_0x517895){while(--_0x517895){_0x409251['push'](_0x409251['shift']());}};_0x216f47(++_0x40f525);}(_0x909d,0x7a));var _0xd909=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x909d[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0xd909('0x0'));module[_0xd909('0x1')]={'penalty':{'type':Sequelize[_0xd909('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 337fcce..0a62145 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde8d=['UserChatQueue','user_has_chat_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','define'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xde8d,0x1de));var _0xdde8=function(_0x31ba0f,_0x521571){_0x31ba0f=_0x31ba0f-0x0;var _0xe991a0=_0xde8d[_0x31ba0f];return _0xe991a0;};'use strict';var _=require(_0xdde8('0x0'));var util=require(_0xdde8('0x1'));var logger=require('../../config/logger')(_0xdde8('0x2'));var moment=require(_0xdde8('0x3'));var BPromise=require(_0xdde8('0x4'));var rp=require(_0xdde8('0x5'));var fs=require('fs');var path=require(_0xdde8('0x6'));var rimraf=require(_0xdde8('0x7'));var config=require(_0xdde8('0x8'));var attributes=require(_0xdde8('0x9'));module[_0xdde8('0xa')]=function(_0x39cad0,_0x3980a6){return _0x39cad0[_0xdde8('0xb')](_0xdde8('0xc'),attributes,{'tableName':_0xdde8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe5bd=['./userChatQueue.attributes','exports','UserChatQueue','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x11dc18,_0x5c0613){var _0x1f353c=function(_0x66b86b){while(--_0x66b86b){_0x11dc18['push'](_0x11dc18['shift']());}};_0x1f353c(++_0x5c0613);}(_0xe5bd,0x121));var _0xde5b=function(_0x9e3d41,_0x2d1994){_0x9e3d41=_0x9e3d41-0x0;var _0x4ba34f=_0xe5bd[_0x9e3d41];return _0x4ba34f;};'use strict';var _=require(_0xde5b('0x0'));var util=require(_0xde5b('0x1'));var logger=require(_0xde5b('0x2'))(_0xde5b('0x3'));var moment=require(_0xde5b('0x4'));var BPromise=require(_0xde5b('0x5'));var rp=require(_0xde5b('0x6'));var fs=require('fs');var path=require(_0xde5b('0x7'));var rimraf=require(_0xde5b('0x8'));var config=require(_0xde5b('0x9'));var attributes=require(_0xde5b('0xa'));module[_0xde5b('0xb')]=function(_0x4cd3d7,_0x312b0e){return _0x4cd3d7['define'](_0xde5b('0xc'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8f2af27..e96fc7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c61=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x29e0eb,_0x9acb52){var _0x597d2d=function(_0x596ef9){while(--_0x596ef9){_0x29e0eb['push'](_0x29e0eb['shift']());}};_0x597d2d(++_0x9acb52);}(_0x9c61,0x16f));var _0x19c6=function(_0x1ebc56,_0x27e0ab){_0x1ebc56=_0x1ebc56-0x0;var _0x205431=_0x9c61[_0x1ebc56];return _0x205431;};'use strict';var _=require(_0x19c6('0x0'));var util=require('util');var moment=require(_0x19c6('0x1'));var BPromise=require(_0x19c6('0x2'));var rs=require(_0x19c6('0x3'));var fs=require('fs');var Redis=require(_0x19c6('0x4'));var db=require(_0x19c6('0x5'))['db'];var utils=require(_0x19c6('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x19c6('0x7'));var jayson=require(_0x19c6('0x8'));var client=jayson[_0x19c6('0x9')][_0x19c6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x38599d,_0x371daf,_0x14c9ce){return new BPromise(function(_0x539fa8,_0x431194){return client[_0x19c6('0xb')](_0x38599d,_0x14c9ce)[_0x19c6('0xc')](function(_0x508425){logger[_0x19c6('0xd')](_0x19c6('0xe'),_0x371daf,_0x19c6('0xf'));logger['debug'](_0x19c6('0x10'),_0x371daf,_0x19c6('0xf'),JSON[_0x19c6('0x11')](_0x508425));if(_0x508425[_0x19c6('0x12')]){if(_0x508425[_0x19c6('0x12')][_0x19c6('0x13')]===0x1f4){logger[_0x19c6('0x12')](_0x19c6('0xe'),_0x371daf,_0x508425['error'][_0x19c6('0x14')]);return _0x431194(_0x508425[_0x19c6('0x12')]['message']);}logger[_0x19c6('0x12')](_0x19c6('0xe'),_0x371daf,_0x508425[_0x19c6('0x12')][_0x19c6('0x14')]);return _0x539fa8(_0x508425[_0x19c6('0x12')][_0x19c6('0x14')]);}else{logger[_0x19c6('0xd')]('UserChatQueue,\x20%s,\x20%s',_0x371daf,'request\x20sent');_0x539fa8(_0x508425[_0x19c6('0x15')][_0x19c6('0x14')]);}})[_0x19c6('0x16')](function(_0x59f78d){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x371daf,_0x59f78d);_0x431194(_0x59f78d);});});}
\ No newline at end of file
+var _0xc796=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0x11c032,_0x4ca503){var _0x55919f=function(_0x97e42c){while(--_0x97e42c){_0x11c032['push'](_0x11c032['shift']());}};_0x55919f(++_0x4ca503);}(_0xc796,0x73));var _0x6c79=function(_0x5e8d3e,_0x18ed2e){_0x5e8d3e=_0x5e8d3e-0x0;var _0x1348c0=_0xc796[_0x5e8d3e];return _0x1348c0;};'use strict';var _=require('lodash');var util=require(_0x6c79('0x0'));var moment=require(_0x6c79('0x1'));var BPromise=require(_0x6c79('0x2'));var rs=require(_0x6c79('0x3'));var fs=require('fs');var Redis=require(_0x6c79('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6c79('0x5'));var logger=require(_0x6c79('0x6'))('rpc');var config=require(_0x6c79('0x7'));var jayson=require(_0x6c79('0x8'));var client=jayson['client'][_0x6c79('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f3cd3,_0x528238,_0x52d8d4){return new BPromise(function(_0x485138,_0x5af1fc){return client[_0x6c79('0xa')](_0x1f3cd3,_0x52d8d4)[_0x6c79('0xb')](function(_0x24284d){logger['info'](_0x6c79('0xc'),_0x528238,_0x6c79('0xd'));logger[_0x6c79('0xe')](_0x6c79('0xf'),_0x528238,_0x6c79('0xd'),JSON[_0x6c79('0x10')](_0x24284d));if(_0x24284d['error']){if(_0x24284d[_0x6c79('0x11')][_0x6c79('0x12')]===0x1f4){logger[_0x6c79('0x11')](_0x6c79('0xc'),_0x528238,_0x24284d[_0x6c79('0x11')]['message']);return _0x5af1fc(_0x24284d[_0x6c79('0x11')]['message']);}logger['error']('UserChatQueue,\x20%s,\x20%s',_0x528238,_0x24284d[_0x6c79('0x11')][_0x6c79('0x13')]);return _0x485138(_0x24284d[_0x6c79('0x11')][_0x6c79('0x13')]);}else{logger[_0x6c79('0x14')](_0x6c79('0xc'),_0x528238,_0x6c79('0xd'));_0x485138(_0x24284d[_0x6c79('0x15')][_0x6c79('0x13')]);}})[_0x6c79('0x16')](function(_0x5a8916){logger[_0x6c79('0x11')](_0x6c79('0xc'),_0x528238,_0x5a8916);_0x5af1fc(_0x5a8916);});});}
\ No newline at end of file
index 33da627..e3dd5ba 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(_0x4edd73,_0x31c9f4){var _0x60a855=function(_0x183bce){while(--_0x183bce){_0x4edd73['push'](_0x4edd73['shift']());}};_0x60a855(++_0x31c9f4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x1d0264,_0xad952a){var _0x2d9b32=function(_0x3e1369){while(--_0x3e1369){_0x1d0264['push'](_0x1d0264['shift']());}};_0x2d9b32(++_0xad952a);}(_0xe706,0xa3));var _0x6e70=function(_0xfe08ac,_0x5a238c){_0xfe08ac=_0xfe08ac-0x0;var _0xd6e9b3=_0xe706[_0xfe08ac];return _0xd6e9b3;};'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 7089b0d..ed0450d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb4=['sequelize','STRING'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x3cb4,0xc6));var _0x43cb=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x3cb4[_0x1ac595];return _0x455fff;};'use strict';var Sequelize=require(_0x43cb('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0x43cb('0x1')]}};
\ No newline at end of file
+var _0x233e=['STRING','sequelize','exports','INTEGER'];(function(_0x43a84a,_0x6c500e){var _0x2ed43a=function(_0x8f88c3){while(--_0x8f88c3){_0x43a84a['push'](_0x43a84a['shift']());}};_0x2ed43a(++_0x6c500e);}(_0x233e,0x81));var _0xe233=function(_0x3b40dc,_0x415c22){_0x3b40dc=_0x3b40dc-0x0;var _0x40d2fb=_0x233e[_0x3b40dc];return _0x40d2fb;};'use strict';var Sequelize=require(_0xe233('0x0'));module[_0xe233('0x1')]={'penalty':{'type':Sequelize[_0xe233('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xe233('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xe233('0x3')]}};
\ No newline at end of file
index 749ce87..47a0658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5434=['lodash','bluebird','request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','define','user_has_fax_queues'];(function(_0x64daf7,_0x3ce579){var _0x11d8d8=function(_0x3d986b){while(--_0x3d986b){_0x64daf7['push'](_0x64daf7['shift']());}};_0x11d8d8(++_0x3ce579);}(_0x5434,0xb4));var _0x4543=function(_0x5409cf,_0x2f8477){_0x5409cf=_0x5409cf-0x0;var _0x270d90=_0x5434[_0x5409cf];return _0x270d90;};'use strict';var _=require(_0x4543('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x4543('0x1'));var rp=require(_0x4543('0x2'));var fs=require('fs');var path=require(_0x4543('0x3'));var rimraf=require(_0x4543('0x4'));var config=require(_0x4543('0x5'));var attributes=require(_0x4543('0x6'));module['exports']=function(_0x293abc,_0x4a492c){return _0x293abc[_0x4543('0x7')]('UserFaxQueue',attributes,{'tableName':_0x4543('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbfa2=['define','UserFaxQueue','user_has_fax_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./userFaxQueue.attributes','exports'];(function(_0x39ec06,_0xa5e032){var _0x43c12f=function(_0x31fcfc){while(--_0x31fcfc){_0x39ec06['push'](_0x39ec06['shift']());}};_0x43c12f(++_0xa5e032);}(_0xbfa2,0x13b));var _0x2bfa=function(_0x465c04,_0x547823){_0x465c04=_0x465c04-0x0;var _0x8b78e4=_0xbfa2[_0x465c04];return _0x8b78e4;};'use strict';var _=require(_0x2bfa('0x0'));var util=require(_0x2bfa('0x1'));var logger=require('../../config/logger')(_0x2bfa('0x2'));var moment=require(_0x2bfa('0x3'));var BPromise=require(_0x2bfa('0x4'));var rp=require(_0x2bfa('0x5'));var fs=require('fs');var path=require(_0x2bfa('0x6'));var rimraf=require(_0x2bfa('0x7'));var config=require('../../config/environment');var attributes=require(_0x2bfa('0x8'));module[_0x2bfa('0x9')]=function(_0x1615b8,_0x453768){return _0x1615b8[_0x2bfa('0xa')](_0x2bfa('0xb'),attributes,{'tableName':_0x2bfa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 351f6fb..d034432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b3a=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x319784,_0x47e6d4){var _0x1917da=function(_0x2cb921){while(--_0x2cb921){_0x319784['push'](_0x319784['shift']());}};_0x1917da(++_0x47e6d4);}(_0x1b3a,0x119));var _0xa1b3=function(_0x1fe461,_0xefd92a){_0x1fe461=_0x1fe461-0x0;var _0x4d9b8f=_0x1b3a[_0x1fe461];return _0x4d9b8f;};'use strict';var _=require(_0xa1b3('0x0'));var util=require('util');var moment=require(_0xa1b3('0x1'));var BPromise=require(_0xa1b3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa1b3('0x3'));var db=require(_0xa1b3('0x4'))['db'];var utils=require(_0xa1b3('0x5'));var logger=require(_0xa1b3('0x6'))(_0xa1b3('0x7'));var config=require(_0xa1b3('0x8'));var jayson=require(_0xa1b3('0x9'));var client=jayson[_0xa1b3('0xa')][_0xa1b3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x263bf6,_0x2a97a6,_0x3a3a18){return new BPromise(function(_0x49fa39,_0xf10cd5){return client[_0xa1b3('0xc')](_0x263bf6,_0x3a3a18)[_0xa1b3('0xd')](function(_0x39e088){logger[_0xa1b3('0xe')](_0xa1b3('0xf'),_0x2a97a6,_0xa1b3('0x10'));logger[_0xa1b3('0x11')](_0xa1b3('0x12'),_0x2a97a6,'request\x20sent',JSON['stringify'](_0x39e088));if(_0x39e088[_0xa1b3('0x13')]){if(_0x39e088['error'][_0xa1b3('0x14')]===0x1f4){logger['error'](_0xa1b3('0xf'),_0x2a97a6,_0x39e088[_0xa1b3('0x13')][_0xa1b3('0x15')]);return _0xf10cd5(_0x39e088[_0xa1b3('0x13')][_0xa1b3('0x15')]);}logger[_0xa1b3('0x13')](_0xa1b3('0xf'),_0x2a97a6,_0x39e088[_0xa1b3('0x13')][_0xa1b3('0x15')]);return _0x49fa39(_0x39e088[_0xa1b3('0x13')]['message']);}else{logger['info']('UserFaxQueue,\x20%s,\x20%s',_0x2a97a6,_0xa1b3('0x10'));_0x49fa39(_0x39e088[_0xa1b3('0x16')][_0xa1b3('0x15')]);}})[_0xa1b3('0x17')](function(_0x22a8e5){logger[_0xa1b3('0x13')]('UserFaxQueue,\x20%s,\x20%s',_0x2a97a6,_0x22a8e5);_0xf10cd5(_0x22a8e5);});});}
\ No newline at end of file
+var _0x3beb=['../../config/utils','rpc','../../config/environment','http','request','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserFaxQueue,\x20%s,\x20%s','info','result','catch','lodash','util','moment','bluebird'];(function(_0x4179e2,_0xf2dbb){var _0x24cb50=function(_0x3b7899){while(--_0x3b7899){_0x4179e2['push'](_0x4179e2['shift']());}};_0x24cb50(++_0xf2dbb);}(_0x3beb,0x164));var _0xb3be=function(_0x1587dd,_0x14e199){_0x1587dd=_0x1587dd-0x0;var _0x3c519e=_0x3beb[_0x1587dd];return _0x3c519e;};'use strict';var _=require(_0xb3be('0x0'));var util=require(_0xb3be('0x1'));var moment=require(_0xb3be('0x2'));var BPromise=require(_0xb3be('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb3be('0x4'));var logger=require('../../config/logger')(_0xb3be('0x5'));var config=require(_0xb3be('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb3be('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2e68be,_0xa0f919,_0x57f553){return new BPromise(function(_0x1b407c,_0x3ed40d){return client[_0xb3be('0x8')](_0x2e68be,_0x57f553)['then'](function(_0x192c4c){logger['info']('UserFaxQueue,\x20%s,\x20%s',_0xa0f919,_0xb3be('0x9'));logger[_0xb3be('0xa')](_0xb3be('0xb'),_0xa0f919,'request\x20sent',JSON[_0xb3be('0xc')](_0x192c4c));if(_0x192c4c[_0xb3be('0xd')]){if(_0x192c4c['error'][_0xb3be('0xe')]===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0xa0f919,_0x192c4c[_0xb3be('0xd')]['message']);return _0x3ed40d(_0x192c4c[_0xb3be('0xd')][_0xb3be('0xf')]);}logger[_0xb3be('0xd')](_0xb3be('0x10'),_0xa0f919,_0x192c4c[_0xb3be('0xd')][_0xb3be('0xf')]);return _0x1b407c(_0x192c4c[_0xb3be('0xd')][_0xb3be('0xf')]);}else{logger[_0xb3be('0x11')](_0xb3be('0x10'),_0xa0f919,_0xb3be('0x9'));_0x1b407c(_0x192c4c[_0xb3be('0x12')][_0xb3be('0xf')]);}})[_0xb3be('0x13')](function(_0x21864c){logger[_0xb3be('0xd')](_0xb3be('0x10'),_0xa0f919,_0x21864c);_0x3ed40d(_0x21864c);});});}
\ No newline at end of file
index 1fba9da..4ce5295 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(_0x3b92db,_0x4ef472){var _0x2d5cec=function(_0x354f4){while(--_0x354f4){_0x3b92db['push'](_0x3b92db['shift']());}};_0x2d5cec(++_0x4ef472);}(_0x70e0,0x17b));var _0x070e=function(_0x2fbe6c,_0x354ead){_0x2fbe6c=_0x2fbe6c-0x0;var _0x1d739e=_0x70e0[_0x2fbe6c];return _0x1d739e;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x5949d4,_0x36fe3a){var _0x1a5f68=function(_0x1466a0){while(--_0x1466a0){_0x5949d4['push'](_0x5949d4['shift']());}};_0x1a5f68(++_0x36fe3a);}(_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 f750ce7..ce91bd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd20e=['sequelize'];(function(_0x53de44,_0x2d11a3){var _0x512468=function(_0x772498){while(--_0x772498){_0x53de44['push'](_0x53de44['shift']());}};_0x512468(++_0x2d11a3);}(_0xd20e,0x198));var _0xed20=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0xd20e[_0x4792c8];return _0x35edb1;};'use strict';var Sequelize=require(_0xed20('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x105b=['sequelize'];(function(_0x399577,_0x58c48a){var _0x41b4c1=function(_0x3f380a){while(--_0x3f380a){_0x399577['push'](_0x399577['shift']());}};_0x41b4c1(++_0x58c48a);}(_0x105b,0x1b9));var _0xb105=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x105b[_0x1e7b16];return _0x37fadc;};'use strict';var Sequelize=require(_0xb105('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 28d7049..f3ce250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabf8=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xabf8,0x1ab));var _0x8abf=function(_0x464629,_0x5ce87e){_0x464629=_0x464629-0x0;var _0x1d454f=_0xabf8[_0x464629];return _0x1d454f;};'use strict';var _=require(_0x8abf('0x0'));var util=require(_0x8abf('0x1'));var logger=require(_0x8abf('0x2'))(_0x8abf('0x3'));var moment=require(_0x8abf('0x4'));var BPromise=require(_0x8abf('0x5'));var rp=require(_0x8abf('0x6'));var fs=require('fs');var path=require(_0x8abf('0x7'));var rimraf=require(_0x8abf('0x8'));var config=require(_0x8abf('0x9'));var attributes=require(_0x8abf('0xa'));module['exports']=function(_0x7f7633,_0x59456d){return _0x7f7633['define']('UserMailQueue',attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf1ba=['exports','UserMailQueue','lodash','util','../../config/logger','api','rimraf','../../config/environment','./userMailQueue.attributes'];(function(_0x199dc6,_0x5d844d){var _0xdfa6d7=function(_0x1aae6b){while(--_0x1aae6b){_0x199dc6['push'](_0x199dc6['shift']());}};_0xdfa6d7(++_0x5d844d);}(_0xf1ba,0x18e));var _0xaf1b=function(_0x3f10b9,_0xae9096){_0x3f10b9=_0x3f10b9-0x0;var _0x2d63de=_0xf1ba[_0x3f10b9];return _0x2d63de;};'use strict';var _=require(_0xaf1b('0x0'));var util=require(_0xaf1b('0x1'));var logger=require(_0xaf1b('0x2'))(_0xaf1b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xaf1b('0x4'));var config=require(_0xaf1b('0x5'));var attributes=require(_0xaf1b('0x6'));module[_0xaf1b('0x7')]=function(_0x1535de,_0x20333e){return _0x1535de['define'](_0xaf1b('0x8'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a81fdff..4ec96c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x34b9de,_0xc48f61){var _0x24ca90=function(_0x4afd1e){while(--_0x4afd1e){_0x34b9de['push'](_0x34b9de['shift']());}};_0x24ca90(++_0xc48f61);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('UserMailQueue,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2af49f,_0x4af0b1){var _0x4f92df=function(_0x5a8a4e){while(--_0x5a8a4e){_0x2af49f['push'](_0x2af49f['shift']());}};_0x4f92df(++_0x4af0b1);}(_0x6aa7,0x178));var _0x76aa=function(_0x62b95,_0x5e3d0a){_0x62b95=_0x62b95-0x0;var _0x155531=_0x6aa7[_0x62b95];return _0x155531;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
index 669de8a..ac3bde7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3721=['./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x50b881,_0x33ba68){var _0x4ad702=function(_0x57f7ea){while(--_0x57f7ea){_0x50b881['push'](_0x50b881['shift']());}};_0x4ad702(++_0x33ba68);}(_0x3721,0x116));var _0x1372=function(_0x3276ed,_0x2ff885){_0x3276ed=_0x3276ed-0x0;var _0x47815c=_0x3721[_0x3276ed];return _0x47815c;};'use strict';var multer=require(_0x1372('0x0'));var util=require('util');var path=require(_0x1372('0x1'));var timeout=require(_0x1372('0x2'));var express=require('express');var router=express[_0x1372('0x3')]();var fs_extra=require(_0x1372('0x4'));var auth=require(_0x1372('0x5'));var interaction=require(_0x1372('0x6'));var config=require(_0x1372('0x7'));var controller=require(_0x1372('0x8'));router[_0x1372('0x9')]('/',auth[_0x1372('0xa')](),controller[_0x1372('0xb')]);module[_0x1372('0xc')]=router;
\ No newline at end of file
+var _0xc273=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userNotification.controller','post','isAuthenticated','sendUserNotification','util','connect-timeout','express'];(function(_0x4a599b,_0x1d2125){var _0x2d53d3=function(_0x5e7982){while(--_0x5e7982){_0x4a599b['push'](_0x4a599b['shift']());}};_0x2d53d3(++_0x1d2125);}(_0xc273,0x1aa));var _0x3c27=function(_0x19b3f9,_0xade753){_0x19b3f9=_0x19b3f9-0x0;var _0x18c3f6=_0xc273[_0x19b3f9];return _0x18c3f6;};'use strict';var multer=require('multer');var util=require(_0x3c27('0x0'));var path=require('path');var timeout=require(_0x3c27('0x1'));var express=require(_0x3c27('0x2'));var router=express[_0x3c27('0x3')]();var fs_extra=require(_0x3c27('0x4'));var auth=require(_0x3c27('0x5'));var interaction=require(_0x3c27('0x6'));var config=require('../../config/environment');var controller=require(_0x3c27('0x7'));router[_0x3c27('0x8')]('/',auth[_0x3c27('0x9')](),controller[_0x3c27('0xa')]);module['exports']=router;
\ No newline at end of file
index d9b677c..2d0c4d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814f=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x4e7af4,_0x758572){var _0x2548f1=function(_0xa849c){while(--_0xa849c){_0x4e7af4['push'](_0x4e7af4['shift']());}};_0x2548f1(++_0x758572);}(_0x814f,0x156));var _0xf814=function(_0x197425,_0x5392df){_0x197425=_0x197425-0x0;var _0x5a2bc2=_0x814f[_0x197425];return _0x5a2bc2;};'use strict';var Sequelize=require(_0xf814('0x0'));module[_0xf814('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0xf814('0x2')]},'recipientsDescription':{'type':Sequelize[_0xf814('0x3')]},'beep':{'type':Sequelize[_0xf814('0x4')]}};
\ No newline at end of file
+var _0x8e52=['STRING','sequelize','TEXT'];(function(_0x5c98cc,_0x58190a){var _0x164644=function(_0x540bae){while(--_0x540bae){_0x5c98cc['push'](_0x5c98cc['shift']());}};_0x164644(++_0x58190a);}(_0x8e52,0x73));var _0x28e5=function(_0x4e0026,_0x2b52b6){_0x4e0026=_0x4e0026-0x0;var _0x3f8ee7=_0x8e52[_0x4e0026];return _0x3f8ee7;};'use strict';var Sequelize=require(_0x28e5('0x0'));module['exports']={'body':{'type':Sequelize[_0x28e5('0x1')]},'senderName':{'type':Sequelize[_0x28e5('0x2')]},'recipientsId':{'type':Sequelize[_0x28e5('0x1')]},'recipientsDescription':{'type':Sequelize[_0x28e5('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index 0a00df3..de87966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21bc=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./userNotification.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','recipients','Sequelize','Missing\x20\x27recipients\x27\x20parameter','Invalid\x20\x27recipients\x27\x20object','mailqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','recipientsId','sortBy','transaction','create','forEach','recipient','userNotification:send','catch','Template','findOne','html','render','model','toLowerCase','User','union','ids','includes','queue','replace','Queue','push','flatten','map','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse'];(function(_0x999b85,_0x1edc2b){var _0x1d7124=function(_0x59cd29){while(--_0x59cd29){_0x999b85['push'](_0x999b85['shift']());}};_0x1d7124(++_0x1edc2b);}(_0x21bc,0x110));var _0xc21b=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x21bc[_0x1cc8fe];return _0x230054;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc21b('0x0'));var zipdir=require(_0xc21b('0x1'));var jsonpatch=require(_0xc21b('0x2'));var rp=require(_0xc21b('0x3'));var moment=require(_0xc21b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc21b('0x5'));var util=require(_0xc21b('0x6'));var path=require(_0xc21b('0x7'));var sox=require(_0xc21b('0x8'));var csv=require(_0xc21b('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc21b('0xa'));var _=require(_0xc21b('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc21b('0xc'));var deskjs=require(_0xc21b('0xd'));var toCsv=require(_0xc21b('0x9'));var querystring=require(_0xc21b('0xe'));var Papa=require(_0xc21b('0xf'));var Redis=require(_0xc21b('0x10'));var authService=require(_0xc21b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xc21b('0x12'));var hardwareService=require(_0xc21b('0x13'));var logger=require(_0xc21b('0x14'))('api');var utils=require(_0xc21b('0x15'));var config=require(_0xc21b('0x16'));var licenseUtil=require(_0xc21b('0x17'));var db=require(_0xc21b('0x18'))['db'];config[_0xc21b('0x19')]=_[_0xc21b('0x1a')](config[_0xc21b('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xc21b('0x1b'))(new Redis(config[_0xc21b('0x19')]));require(_0xc21b('0x1c'))['register'](socket);function respondWithStatusCode(_0x56acce,_0x30d373){_0x30d373=_0x30d373||0xcc;return function(_0x115ef7){if(_0x115ef7){return _0x56acce['sendStatus'](_0x30d373);}return _0x56acce[_0xc21b('0x1d')](_0x30d373)[_0xc21b('0x1e')]();};}function respondWithResult(_0x5487ba,_0x143c67){_0x143c67=_0x143c67||0xc8;return function(_0x5df1cc){if(_0x5df1cc){return _0x5487ba[_0xc21b('0x1d')](_0x143c67)[_0xc21b('0x1f')](_0x5df1cc);}};}function respondWithFilteredResult(_0x278d6f,_0x588caa){return function(_0x491e48){if(_0x491e48){var _0x455d52=typeof _0x588caa[_0xc21b('0x20')]===_0xc21b('0x21')&&typeof _0x588caa[_0xc21b('0x22')]==='undefined';var _0x351d04=_0x491e48[_0xc21b('0x23')];var _0x3e5654=_0x455d52?0x0:_0x588caa[_0xc21b('0x20')];var _0x17bae4=_0x455d52?_0x491e48[_0xc21b('0x23')]:_0x588caa[_0xc21b('0x20')]+_0x588caa[_0xc21b('0x22')];var _0x3c7055;if(_0x17bae4>=_0x351d04){_0x17bae4=_0x351d04;_0x3c7055=0xc8;}else{_0x3c7055=0xce;}_0x278d6f[_0xc21b('0x1d')](_0x3c7055);return _0x278d6f[_0xc21b('0x24')](_0xc21b('0x25'),_0x3e5654+'-'+_0x17bae4+'/'+_0x351d04)[_0xc21b('0x1f')](_0x491e48);}return null;};}function patchUpdates(_0x2f7c84){return function(_0x55b8eb){try{jsonpatch[_0xc21b('0x26')](_0x55b8eb,_0x2f7c84,!![]);}catch(_0x49c7af){return BPromise[_0xc21b('0x27')](_0x49c7af);}return _0x55b8eb['save']();};}function saveUpdates(_0x12e564,_0x5b10f7){return function(_0x1291e1){if(_0x1291e1){return _0x1291e1[_0xc21b('0x28')](_0x12e564)[_0xc21b('0x29')](function(_0x3475a0){return _0x3475a0;});}return null;};}function removeEntity(_0x4c1182,_0x2f9e0d){return function(_0x2b25b9){if(_0x2b25b9){return _0x2b25b9[_0xc21b('0x2a')]()['then'](function(){_0x4c1182[_0xc21b('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5eb071,_0x2e09ec){return function(_0x54c5c0){if(!_0x54c5c0){_0x5eb071[_0xc21b('0x2b')](0x194);}return _0x54c5c0;};}function handleError(_0x138a1f,_0x3e8505){_0x3e8505=_0x3e8505||0x1f4;return function(_0x29e54a){logger[_0xc21b('0x2c')](_0x29e54a['stack']);if(_0x29e54a['name']){delete _0x29e54a[_0xc21b('0x2d')];}_0x138a1f[_0xc21b('0x1d')](_0x3e8505)[_0xc21b('0x2e')](_0x29e54a);};}exports[_0xc21b('0x2f')]=function(_0x38dba0,_0x1a4873,_0x433b28){if(!_0x38dba0[_0xc21b('0x30')][_0xc21b('0x31')](_0xc21b('0x32'))&&!_0x38dba0[_0xc21b('0x30')][_0xc21b('0x31')](_0xc21b('0x33'))){throw new db['Sequelize'][(_0xc21b('0x34'))](_0xc21b('0x35'));}else{if(_0x38dba0[_0xc21b('0x30')][_0xc21b('0x31')]('TemplateId')&&!_0x38dba0[_0xc21b('0x30')][_0xc21b('0x31')](_0xc21b('0x36'))){throw new db['Sequelize'][(_0xc21b('0x34'))]('Missing\x20\x27view\x27\x20parameter');}if(!_0x38dba0['body'][_0xc21b('0x31')](_0xc21b('0x37'))){throw new db[(_0xc21b('0x38'))][(_0xc21b('0x34'))](_0xc21b('0x39'));}else{try{var _0x533d70=JSON['parse'](_0x38dba0['body']['recipients']);}catch(_0x4ad65c){logger['error'](_0x4ad65c);throw new db[(_0xc21b('0x38'))][(_0xc21b('0x34'))](_0xc21b('0x3a'));}var _0x21ddb0=['chatqueue','faxqueue',_0xc21b('0x3b'),'openchannelqueue',_0xc21b('0x3c'),_0xc21b('0x3d'),_0xc21b('0x3e'),_0xc21b('0x3f'),_0xc21b('0x40')];if(_[_0xc21b('0x41')](_0x533d70,function(_0x235843){return!_['includes'](_0x21ddb0,_0x235843['model']['toLowerCase']());})){throw new db[(_0xc21b('0x38'))]['ValidationError'](_0xc21b('0x42'));}}}var _0x3d2b57={};_0x3d2b57[_0xc21b('0x43')]=_0x38dba0[_0xc21b('0x30')]['hasOwnProperty'](_0xc21b('0x43'))?_0x38dba0[_0xc21b('0x30')][_0xc21b('0x43')]:_0x38dba0['user'][_0xc21b('0x44')];_0x3d2b57[_0xc21b('0x45')]=_[_0xc21b('0x46')](_0x38dba0[_0xc21b('0x30')][_0xc21b('0x45')])?null:_0x38dba0[_0xc21b('0x30')]['recipientsDescription'];_0x3d2b57[_0xc21b('0x47')]=_0x38dba0[_0xc21b('0x30')][_0xc21b('0x47')]||![];_0x3d2b57['SenderId']=_0x38dba0[_0xc21b('0x40')]['id'];return getContent(_0x38dba0['body'])[_0xc21b('0x29')](function(_0x32d004){_0x3d2b57['body']=_0x32d004;return getRecipients(_0x533d70);})[_0xc21b('0x29')](function(_0x502223){_0x3d2b57[_0xc21b('0x48')]=_[_0xc21b('0x49')](_0x502223)['join'](',');return db['sequelize'][_0xc21b('0x4a')](function(_0x30e13d){return db['UserNotification'][_0xc21b('0x4b')](_0x3d2b57,{'raw':!![],'transaction':_0x30e13d})[_0xc21b('0x29')](function(_0x294904){var _0x43b2f1={'sender':_0x3d2b57[_0xc21b('0x43')],'description':_0x3d2b57[_0xc21b('0x45')],'content':_0x3d2b57['body'],'beep':_0x3d2b57[_0xc21b('0x47')]};_0x502223[_0xc21b('0x4c')](function(_0x33404e){_0x43b2f1[_0xc21b('0x4d')]=_0x33404e;socket['emit'](_0xc21b('0x4e'),_0x43b2f1);});return _0x294904;});});})[_0xc21b('0x29')](respondWithResult(_0x1a4873,0xc9))[_0xc21b('0x4f')](handleError(_0x1a4873,null));};function getContent(_0x1a253f){return new BPromise(function(_0x17555a,_0x4d70f6){if(_0x1a253f[_0xc21b('0x32')]){_0x17555a(_0x1a253f[_0xc21b('0x32')]);return;}return db[_0xc21b('0x50')][_0xc21b('0x51')]({'attributes':[_0xc21b('0x52')],'where':{'id':_0x1a253f['TemplateId']},'raw':!![]})[_0xc21b('0x29')](function(_0x496b9b){if(!_0x496b9b)throw new db['Sequelize'][(_0xc21b('0x34'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0xe7bd89=Mustache[_0xc21b('0x53')](_0x496b9b[_0xc21b('0x52')],_0x1a253f[_0xc21b('0x36')]);_0x17555a(_0xe7bd89);})[_0xc21b('0x4f')](function(_0x378606){_0x4d70f6(_0x378606);});});}function getRecipients(_0x5a2e22){return new BPromise(function(_0x4654d8,_0x4d1281){var _0x583bcc=[];var _0x541250=[];_0x5a2e22[_0xc21b('0x4c')](function(_0x132585){var _0x21e951=_['startCase'](_0x132585[_0xc21b('0x54')][_0xc21b('0x55')]());if(_0x21e951===_0xc21b('0x56')){_0x583bcc=_[_0xc21b('0x57')](_0x583bcc,_0x132585[_0xc21b('0x58')]);}else{if(_[_0xc21b('0x59')](_0x21e951,_0xc21b('0x5a')))_0x21e951=_0x21e951[_0xc21b('0x5b')](_0xc21b('0x5a'),_0xc21b('0x5c'));_0x132585['ids']['forEach'](function(_0x21bd98){_0x541250[_0xc21b('0x5d')](getAgents(_0x21e951,_0x21bd98));});}});return BPromise['all'](_0x541250)[_0xc21b('0x29')](function(_0x5c0612){_0x583bcc=_[_0xc21b('0x57')](_0x583bcc,_[_0xc21b('0x5e')](_0x5c0612));_0x4654d8(_0x583bcc);})[_0xc21b('0x4f')](function(_0x3b258b){_0x4d1281(_0x3b258b);});});}function getAgents(_0x34b379,_0x41a3bc){return new BPromise(function(_0x3853a7,_0x122c4a){return db[_0x34b379][_0xc21b('0x51')]({'where':{'id':_0x41a3bc}})['then'](function(_0x4f90de){return _0x4f90de['getAgents']({'attributes':['id'],'raw':!![]})[_0xc21b('0x29')](function(_0x5c465e){var _0x151baf=_[_0xc21b('0x5f')](_0x5c465e,'id');_0x3853a7(_0x151baf);});})[_0xc21b('0x4f')](function(_0x38b584){_0x122c4a(_0x38b584);});});}
\ No newline at end of file
+var _0x499c=['reject','save','then','destroy','error','send','sendUserNotification','hasOwnProperty','text','Sequelize','ValidationError','body','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','chatqueue','faxqueue','mailqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','join','transaction','UserNotification','forEach','recipient','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','toLowerCase','User','union','ids','includes','queue','Queue','push','all','flatten','getAgents','map','rimraf','zip-dir','fast-json-patch','moment','mustache','path','to-csv','ejs','squel','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set'];(function(_0x31d56d,_0x10f433){var _0x22c016=function(_0x3336af){while(--_0x3336af){_0x31d56d['push'](_0x31d56d['shift']());}};_0x22c016(++_0x10f433);}(_0x499c,0x153));var _0xc499=function(_0x3eaf21,_0x488bf7){_0x3eaf21=_0x3eaf21-0x0;var _0x218f80=_0x499c[_0x3eaf21];return _0x218f80;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc499('0x0'));var zipdir=require(_0xc499('0x1'));var jsonpatch=require(_0xc499('0x2'));var rp=require('request-promise');var moment=require(_0xc499('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xc499('0x4'));var util=require('util');var path=require(_0xc499('0x5'));var sox=require('sox');var csv=require(_0xc499('0x6'));var ejs=require(_0xc499('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc499('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc499('0x9'));var Papa=require('papaparse');var Redis=require(_0xc499('0xa'));var authService=require(_0xc499('0xb'));var qs=require('../../components/parsers/qs');var as=require(_0xc499('0xc'));var hardwareService=require(_0xc499('0xd'));var logger=require(_0xc499('0xe'))(_0xc499('0xf'));var utils=require('../../config/utils');var config=require(_0xc499('0x10'));var licenseUtil=require(_0xc499('0x11'));var db=require(_0xc499('0x12'))['db'];config[_0xc499('0x13')]=_['defaults'](config[_0xc499('0x13')],{'host':_0xc499('0x14'),'port':0x18eb});var socket=require(_0xc499('0x15'))(new Redis(config[_0xc499('0x13')]));require(_0xc499('0x16'))[_0xc499('0x17')](socket);function respondWithStatusCode(_0x21e881,_0xec4b0e){_0xec4b0e=_0xec4b0e||0xcc;return function(_0x38ab52){if(_0x38ab52){return _0x21e881[_0xc499('0x18')](_0xec4b0e);}return _0x21e881[_0xc499('0x19')](_0xec4b0e)[_0xc499('0x1a')]();};}function respondWithResult(_0x31363b,_0x65645f){_0x65645f=_0x65645f||0xc8;return function(_0x4b2a48){if(_0x4b2a48){return _0x31363b[_0xc499('0x19')](_0x65645f)[_0xc499('0x1b')](_0x4b2a48);}};}function respondWithFilteredResult(_0x387bb0,_0x4adb02){return function(_0x18dd1f){if(_0x18dd1f){var _0x1f1cf4=typeof _0x4adb02[_0xc499('0x1c')]==='undefined'&&typeof _0x4adb02['limit']===_0xc499('0x1d');var _0x39bc59=_0x18dd1f[_0xc499('0x1e')];var _0x2ef7b8=_0x1f1cf4?0x0:_0x4adb02[_0xc499('0x1c')];var _0x331654=_0x1f1cf4?_0x18dd1f[_0xc499('0x1e')]:_0x4adb02[_0xc499('0x1c')]+_0x4adb02[_0xc499('0x1f')];var _0x1a46a3;if(_0x331654>=_0x39bc59){_0x331654=_0x39bc59;_0x1a46a3=0xc8;}else{_0x1a46a3=0xce;}_0x387bb0[_0xc499('0x19')](_0x1a46a3);return _0x387bb0[_0xc499('0x20')]('Content-Range',_0x2ef7b8+'-'+_0x331654+'/'+_0x39bc59)[_0xc499('0x1b')](_0x18dd1f);}return null;};}function patchUpdates(_0x1c5107){return function(_0x284a23){try{jsonpatch['apply'](_0x284a23,_0x1c5107,!![]);}catch(_0x5c3e8e){return BPromise[_0xc499('0x21')](_0x5c3e8e);}return _0x284a23[_0xc499('0x22')]();};}function saveUpdates(_0x4c300d,_0x5ca046){return function(_0x233a58){if(_0x233a58){return _0x233a58['update'](_0x4c300d)[_0xc499('0x23')](function(_0x200a9b){return _0x200a9b;});}return null;};}function removeEntity(_0x32aeef,_0x414851){return function(_0x4328ff){if(_0x4328ff){return _0x4328ff[_0xc499('0x24')]()[_0xc499('0x23')](function(){_0x32aeef[_0xc499('0x19')](0xcc)[_0xc499('0x1a')]();});}};}function handleEntityNotFound(_0x118d7b,_0x47fc88){return function(_0x5a04aa){if(!_0x5a04aa){_0x118d7b[_0xc499('0x18')](0x194);}return _0x5a04aa;};}function handleError(_0x4fab44,_0x23e6e6){_0x23e6e6=_0x23e6e6||0x1f4;return function(_0x4058cd){logger[_0xc499('0x25')](_0x4058cd['stack']);if(_0x4058cd['name']){delete _0x4058cd['name'];}_0x4fab44[_0xc499('0x19')](_0x23e6e6)[_0xc499('0x26')](_0x4058cd);};}exports[_0xc499('0x27')]=function(_0x2633aa,_0x2c92e7,_0x17402a){if(!_0x2633aa['body'][_0xc499('0x28')](_0xc499('0x29'))&&!_0x2633aa['body'][_0xc499('0x28')]('TemplateId')){throw new db[(_0xc499('0x2a'))][(_0xc499('0x2b'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x2633aa[_0xc499('0x2c')]['hasOwnProperty'](_0xc499('0x2d'))&&!_0x2633aa[_0xc499('0x2c')][_0xc499('0x28')](_0xc499('0x2e'))){throw new db[(_0xc499('0x2a'))][(_0xc499('0x2b'))](_0xc499('0x2f'));}if(!_0x2633aa[_0xc499('0x2c')]['hasOwnProperty'](_0xc499('0x30'))){throw new db[(_0xc499('0x2a'))]['ValidationError'](_0xc499('0x31'));}else{try{var _0x3acae9=JSON[_0xc499('0x32')](_0x2633aa[_0xc499('0x2c')][_0xc499('0x30')]);}catch(_0x59e4bc){logger[_0xc499('0x25')](_0x59e4bc);throw new db[(_0xc499('0x2a'))][(_0xc499('0x2b'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x3b14e7=[_0xc499('0x33'),_0xc499('0x34'),_0xc499('0x35'),'openchannelqueue',_0xc499('0x36'),_0xc499('0x37'),_0xc499('0x38'),_0xc499('0x39'),_0xc499('0x3a')];if(_[_0xc499('0x3b')](_0x3acae9,function(_0x31817d){return!_['includes'](_0x3b14e7,_0x31817d[_0xc499('0x3c')]['toLowerCase']());})){throw new db['Sequelize'][(_0xc499('0x2b'))](_0xc499('0x3d'));}}}var _0x573ddd={};_0x573ddd[_0xc499('0x3e')]=_0x2633aa['body'][_0xc499('0x28')](_0xc499('0x3e'))?_0x2633aa[_0xc499('0x2c')][_0xc499('0x3e')]:_0x2633aa[_0xc499('0x3a')][_0xc499('0x3f')];_0x573ddd['recipientsDescription']=_[_0xc499('0x40')](_0x2633aa[_0xc499('0x2c')][_0xc499('0x41')])?null:_0x2633aa[_0xc499('0x2c')][_0xc499('0x41')];_0x573ddd[_0xc499('0x42')]=_0x2633aa[_0xc499('0x2c')][_0xc499('0x42')]||![];_0x573ddd[_0xc499('0x43')]=_0x2633aa[_0xc499('0x3a')]['id'];return getContent(_0x2633aa['body'])[_0xc499('0x23')](function(_0x5f5195){_0x573ddd[_0xc499('0x2c')]=_0x5f5195;return getRecipients(_0x3acae9);})[_0xc499('0x23')](function(_0x1ec2c1){_0x573ddd['recipientsId']=_['sortBy'](_0x1ec2c1)[_0xc499('0x44')](',');return db['sequelize'][_0xc499('0x45')](function(_0x25762c){return db[_0xc499('0x46')]['create'](_0x573ddd,{'raw':!![],'transaction':_0x25762c})[_0xc499('0x23')](function(_0xbd9ebf){var _0x4b8e54={'sender':_0x573ddd[_0xc499('0x3e')],'description':_0x573ddd[_0xc499('0x41')],'content':_0x573ddd[_0xc499('0x2c')],'beep':_0x573ddd[_0xc499('0x42')]};_0x1ec2c1[_0xc499('0x47')](function(_0x42851f){_0x4b8e54[_0xc499('0x48')]=_0x42851f;socket['emit'](_0xc499('0x49'),_0x4b8e54);});return _0xbd9ebf;});});})['then'](respondWithResult(_0x2c92e7,0xc9))[_0xc499('0x4a')](handleError(_0x2c92e7,null));};function getContent(_0x55079c){return new BPromise(function(_0x2a6a35,_0x32d6a7){if(_0x55079c[_0xc499('0x29')]){_0x2a6a35(_0x55079c['text']);return;}return db[_0xc499('0x4b')][_0xc499('0x4c')]({'attributes':[_0xc499('0x4d')],'where':{'id':_0x55079c[_0xc499('0x2d')]},'raw':!![]})[_0xc499('0x23')](function(_0x2b25a2){if(!_0x2b25a2)throw new db[(_0xc499('0x2a'))][(_0xc499('0x2b'))](_0xc499('0x4e'));var _0x51cbb9=Mustache[_0xc499('0x4f')](_0x2b25a2[_0xc499('0x4d')],_0x55079c[_0xc499('0x2e')]);_0x2a6a35(_0x51cbb9);})['catch'](function(_0x13d575){_0x32d6a7(_0x13d575);});});}function getRecipients(_0x1c4a49){return new BPromise(function(_0x4aa27c,_0x46190c){var _0x18beb5=[];var _0x28ff8d=[];_0x1c4a49[_0xc499('0x47')](function(_0x21691a){var _0x5587d2=_[_0xc499('0x50')](_0x21691a[_0xc499('0x3c')][_0xc499('0x51')]());if(_0x5587d2===_0xc499('0x52')){_0x18beb5=_[_0xc499('0x53')](_0x18beb5,_0x21691a[_0xc499('0x54')]);}else{if(_[_0xc499('0x55')](_0x5587d2,_0xc499('0x56')))_0x5587d2=_0x5587d2['replace'](_0xc499('0x56'),_0xc499('0x57'));_0x21691a[_0xc499('0x54')]['forEach'](function(_0x2a902d){_0x28ff8d[_0xc499('0x58')](getAgents(_0x5587d2,_0x2a902d));});}});return BPromise[_0xc499('0x59')](_0x28ff8d)[_0xc499('0x23')](function(_0x17a779){_0x18beb5=_[_0xc499('0x53')](_0x18beb5,_[_0xc499('0x5a')](_0x17a779));_0x4aa27c(_0x18beb5);})[_0xc499('0x4a')](function(_0x2fa8a8){_0x46190c(_0x2fa8a8);});});}function getAgents(_0x2d3daa,_0x3465d7){return new BPromise(function(_0x331052,_0x3654e2){return db[_0x2d3daa][_0xc499('0x4c')]({'where':{'id':_0x3465d7}})[_0xc499('0x23')](function(_0x26ee1e){return _0x26ee1e[_0xc499('0x5b')]({'attributes':['id'],'raw':!![]})[_0xc499('0x23')](function(_0x574727){var _0x3aaaa3=_[_0xc499('0x5c')](_0x574727,'id');_0x331052(_0x3aaaa3);});})[_0xc499('0x4a')](function(_0x2b0084){_0x3654e2(_0x2b0084);});});}
\ No newline at end of file
index 5f88b63..e630dad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa6=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','remove'];(function(_0x30527d,_0x1a8f0a){var _0x276c50=function(_0x1f786a){while(--_0x1f786a){_0x30527d['push'](_0x30527d['shift']());}};_0x276c50(++_0x1a8f0a);}(_0x6aa6,0xdc));var _0x66aa=function(_0x3f4729,_0x392c33){_0x3f4729=_0x3f4729-0x0;var _0x4ffbbf=_0x6aa6[_0x3f4729];return _0x4ffbbf;};'use strict';var EventEmitter=require(_0x66aa('0x0'));var UserNotification=require(_0x66aa('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x66aa('0x2')](0x0);var events={'afterCreate':_0x66aa('0x3'),'afterUpdate':'update','afterDestroy':_0x66aa('0x4')};function emitEvent(_0x5b3429){return function(_0xd72208,_0x5c6a0a,_0xf0df15){UserNotificationEvents[_0x66aa('0x5')](_0x5b3429+':'+_0xd72208['id'],_0xd72208);UserNotificationEvents[_0x66aa('0x5')](_0x5b3429,_0xd72208);_0xf0df15(null);};}for(var e in events){if(events[_0x66aa('0x6')](e)){var event=events[e];UserNotification[_0x66aa('0x7')](e,emitEvent(event));}}module[_0x66aa('0x8')]=UserNotificationEvents;
\ No newline at end of file
+var _0x1066=['events','../../mysqldb','UserNotification','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x23ad03,_0x1d4f79){var _0x2af698=function(_0x29a7c3){while(--_0x29a7c3){_0x23ad03['push'](_0x23ad03['shift']());}};_0x2af698(++_0x1d4f79);}(_0x1066,0x190));var _0x6106=function(_0x1f4f41,_0x16bcfc){_0x1f4f41=_0x1f4f41-0x0;var _0x59562c=_0x1066[_0x1f4f41];return _0x59562c;};'use strict';var EventEmitter=require(_0x6106('0x0'));var UserNotification=require(_0x6106('0x1'))['db'][_0x6106('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x6106('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6106('0x4'),'afterDestroy':_0x6106('0x5')};function emitEvent(_0x2fef6d){return function(_0x3ff32d,_0x3bed5b,_0x188d77){UserNotificationEvents[_0x6106('0x6')](_0x2fef6d+':'+_0x3ff32d['id'],_0x3ff32d);UserNotificationEvents[_0x6106('0x6')](_0x2fef6d,_0x3ff32d);_0x188d77(null);};}for(var e in events){if(events[_0x6106('0x7')](e)){var event=events[e];UserNotification[_0x6106('0x8')](e,emitEvent(event));}}module[_0x6106('0x9')]=UserNotificationEvents;
\ No newline at end of file
index 90ca587..763cfbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb717=['util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','exports','define','UserNotification','userNotifications','utf8mb4','lodash'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xb717,0x12a));var _0x7b71=function(_0x5c1e8e,_0x465630){_0x5c1e8e=_0x5c1e8e-0x0;var _0x4fe669=_0xb717[_0x5c1e8e];return _0x4fe669;};'use strict';var _=require(_0x7b71('0x0'));var util=require(_0x7b71('0x1'));var logger=require(_0x7b71('0x2'))(_0x7b71('0x3'));var moment=require('moment');var BPromise=require(_0x7b71('0x4'));var rp=require(_0x7b71('0x5'));var fs=require('fs');var path=require(_0x7b71('0x6'));var rimraf=require('rimraf');var config=require(_0x7b71('0x7'));var attributes=require('./userNotification.attributes');module[_0x7b71('0x8')]=function(_0x6ac26d,_0x50776f){return _0x6ac26d[_0x7b71('0x9')](_0x7b71('0xa'),attributes,{'tableName':_0x7b71('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7b71('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4db6=['./userNotification.attributes','exports','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x21040d,_0xd1da12){var _0x360fb3=function(_0x921a7c){while(--_0x921a7c){_0x21040d['push'](_0x21040d['shift']());}};_0x360fb3(++_0xd1da12);}(_0x4db6,0xca));var _0x64db=function(_0xbf4ddf,_0x66b3cb){_0xbf4ddf=_0xbf4ddf-0x0;var _0x3cb273=_0x4db6[_0xbf4ddf];return _0x3cb273;};'use strict';var _=require(_0x64db('0x0'));var util=require(_0x64db('0x1'));var logger=require(_0x64db('0x2'))(_0x64db('0x3'));var moment=require(_0x64db('0x4'));var BPromise=require(_0x64db('0x5'));var rp=require(_0x64db('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x64db('0x7'));var attributes=require(_0x64db('0x8'));module[_0x64db('0x9')]=function(_0x56ead3,_0x457424){return _0x56ead3['define'](_0x64db('0xa'),attributes,{'tableName':_0x64db('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x64db('0xc'),'collate':_0x64db('0xd')});};
\ No newline at end of file
index cf403f8..e073aaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf922=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./userNotification.socket','register','request','then','info','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','UserNotification,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis'];(function(_0x31c133,_0x3075f7){var _0x596121=function(_0xcb270e){while(--_0xcb270e){_0x31c133['push'](_0x31c133['shift']());}};_0x596121(++_0x3075f7);}(_0xf922,0x1cc));var _0x2f92=function(_0x13fe79,_0x2669f3){_0x13fe79=_0x13fe79-0x0;var _0x28ef67=_0xf922[_0x13fe79];return _0x28ef67;};'use strict';var _=require(_0x2f92('0x0'));var util=require('util');var moment=require(_0x2f92('0x1'));var BPromise=require('bluebird');var rs=require(_0x2f92('0x2'));var fs=require('fs');var Redis=require(_0x2f92('0x3'));var db=require(_0x2f92('0x4'))['db'];var utils=require(_0x2f92('0x5'));var logger=require(_0x2f92('0x6'))(_0x2f92('0x7'));var config=require(_0x2f92('0x8'));var jayson=require(_0x2f92('0x9'));var client=jayson[_0x2f92('0xa')]['http']({'port':0x232a});config[_0x2f92('0xb')]=_[_0x2f92('0xc')](config[_0x2f92('0xb')],{'host':_0x2f92('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2f92('0xb')]));require(_0x2f92('0xe'))[_0x2f92('0xf')](socket);function respondWithRpcPromise(_0x325c9f,_0xc2c1e4,_0x56a10d){return new BPromise(function(_0x10ed3a,_0x3e9759){return client[_0x2f92('0x10')](_0x325c9f,_0x56a10d)[_0x2f92('0x11')](function(_0x46f6fe){logger[_0x2f92('0x12')]('UserNotification,\x20%s,\x20%s',_0xc2c1e4,_0x2f92('0x13'));logger[_0x2f92('0x14')](_0x2f92('0x15'),_0xc2c1e4,'request\x20sent',JSON[_0x2f92('0x16')](_0x46f6fe));if(_0x46f6fe[_0x2f92('0x17')]){if(_0x46f6fe[_0x2f92('0x17')][_0x2f92('0x18')]===0x1f4){logger[_0x2f92('0x17')](_0x2f92('0x19'),_0xc2c1e4,_0x46f6fe[_0x2f92('0x17')][_0x2f92('0x1a')]);return _0x3e9759(_0x46f6fe[_0x2f92('0x17')][_0x2f92('0x1a')]);}logger[_0x2f92('0x17')]('UserNotification,\x20%s,\x20%s',_0xc2c1e4,_0x46f6fe['error'][_0x2f92('0x1a')]);return _0x10ed3a(_0x46f6fe[_0x2f92('0x17')]['message']);}else{logger[_0x2f92('0x12')]('UserNotification,\x20%s,\x20%s',_0xc2c1e4,'request\x20sent');_0x10ed3a(_0x46f6fe[_0x2f92('0x1b')][_0x2f92('0x1a')]);}})[_0x2f92('0x1c')](function(_0x536d40){logger[_0x2f92('0x17')](_0x2f92('0x19'),_0xc2c1e4,_0x536d40);_0x3e9759(_0x536d40);});});}
\ No newline at end of file
+var _0x2557=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','socket.io-emitter','./userNotification.socket','request','then','info','UserNotification,\x20%s,\x20%s','UserNotification,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util'];(function(_0x1a35d1,_0x4771b6){var _0x14b56e=function(_0x5bc578){while(--_0x5bc578){_0x1a35d1['push'](_0x1a35d1['shift']());}};_0x14b56e(++_0x4771b6);}(_0x2557,0x1da));var _0x7255=function(_0x489c66,_0x260663){_0x489c66=_0x489c66-0x0;var _0x152652=_0x2557[_0x489c66];return _0x152652;};'use strict';var _=require('lodash');var util=require(_0x7255('0x0'));var moment=require('moment');var BPromise=require(_0x7255('0x1'));var rs=require(_0x7255('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7255('0x3'))['db'];var utils=require(_0x7255('0x4'));var logger=require(_0x7255('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7255('0x6'));var client=jayson[_0x7255('0x7')][_0x7255('0x8')]({'port':0x232a});config[_0x7255('0x9')]=_[_0x7255('0xa')](config[_0x7255('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x7255('0xb'))(new Redis(config[_0x7255('0x9')]));require(_0x7255('0xc'))['register'](socket);function respondWithRpcPromise(_0x2dbc65,_0x56de19,_0x4aec71){return new BPromise(function(_0xff39b1,_0x44ac76){return client[_0x7255('0xd')](_0x2dbc65,_0x4aec71)[_0x7255('0xe')](function(_0x66a6f1){logger[_0x7255('0xf')](_0x7255('0x10'),_0x56de19,'request\x20sent');logger['debug'](_0x7255('0x11'),_0x56de19,_0x7255('0x12'),JSON[_0x7255('0x13')](_0x66a6f1));if(_0x66a6f1[_0x7255('0x14')]){if(_0x66a6f1[_0x7255('0x14')][_0x7255('0x15')]===0x1f4){logger[_0x7255('0x14')](_0x7255('0x10'),_0x56de19,_0x66a6f1[_0x7255('0x14')][_0x7255('0x16')]);return _0x44ac76(_0x66a6f1[_0x7255('0x14')][_0x7255('0x16')]);}logger[_0x7255('0x14')](_0x7255('0x10'),_0x56de19,_0x66a6f1[_0x7255('0x14')][_0x7255('0x16')]);return _0xff39b1(_0x66a6f1[_0x7255('0x14')]['message']);}else{logger[_0x7255('0xf')](_0x7255('0x10'),_0x56de19,_0x7255('0x12'));_0xff39b1(_0x66a6f1[_0x7255('0x17')][_0x7255('0x16')]);}})[_0x7255('0x18')](function(_0x4ae63d){logger[_0x7255('0x14')]('UserNotification,\x20%s,\x20%s',_0x56de19,_0x4ae63d);_0x44ac76(_0x4ae63d);});});}
\ No newline at end of file
index 45a1b91..c11375e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62b2=['emit','removeListener','userNotification:','./userNotification.events','remove'];(function(_0x1576e6,_0x4fbe0f){var _0x2c1b1e=function(_0x2b05ba){while(--_0x2b05ba){_0x1576e6['push'](_0x1576e6['shift']());}};_0x2c1b1e(++_0x4fbe0f);}(_0x62b2,0xcb));var _0x262b=function(_0x1aeed9,_0x55c3d0){_0x1aeed9=_0x1aeed9-0x0;var _0x2da5eb=_0x62b2[_0x1aeed9];return _0x2da5eb;};'use strict';var UserNotificationEvents=require(_0x262b('0x0'));var events=['save',_0x262b('0x1'),'update'];function createListener(_0x1ab3aa,_0x58a915){return function(_0x38b162){_0x58a915[_0x262b('0x2')](_0x1ab3aa,_0x38b162);};}function removeListener(_0x52928b,_0x36f1fb){return function(){UserNotificationEvents[_0x262b('0x3')](_0x52928b,_0x36f1fb);};}exports['register']=function(_0x4bc2cd){for(var _0x19336d=0x0,_0x401f42=events['length'];_0x19336d<_0x401f42;_0x19336d++){var _0x581310=events[_0x19336d];var _0x2ed921=createListener(_0x262b('0x4')+_0x581310,_0x4bc2cd);UserNotificationEvents['on'](_0x581310,_0x2ed921);}};
\ No newline at end of file
+var _0x94c0=['register','length','userNotification:','./userNotification.events','remove','update','removeListener'];(function(_0x3165d4,_0x5db1e0){var _0x23b317=function(_0x494705){while(--_0x494705){_0x3165d4['push'](_0x3165d4['shift']());}};_0x23b317(++_0x5db1e0);}(_0x94c0,0x11b));var _0x094c=function(_0x110e11,_0x2386fb){_0x110e11=_0x110e11-0x0;var _0x16d509=_0x94c0[_0x110e11];return _0x16d509;};'use strict';var UserNotificationEvents=require(_0x094c('0x0'));var events=['save',_0x094c('0x1'),_0x094c('0x2')];function createListener(_0x3ca4f8,_0x1fee25){return function(_0x5d2fa7){_0x1fee25['emit'](_0x3ca4f8,_0x5d2fa7);};}function removeListener(_0x145695,_0x3a6419){return function(){UserNotificationEvents[_0x094c('0x3')](_0x145695,_0x3a6419);};}exports[_0x094c('0x4')]=function(_0x57bf07){for(var _0x5d87c3=0x0,_0xf38e85=events[_0x094c('0x5')];_0x5d87c3<_0xf38e85;_0x5d87c3++){var _0x2a4537=events[_0x5d87c3];var _0x1a1ee0=createListener(_0x094c('0x6')+_0x2a4537,_0x57bf07);UserNotificationEvents['on'](_0x2a4537,_0x1a1ee0);}};
\ No newline at end of file
index 05256fd..812d175 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0xd869a,_0x2b7172){var _0xa3f46b=function(_0x1866d0){while(--_0x1866d0){_0xd869a['push'](_0xd869a['shift']());}};_0xa3f46b(++_0x2b7172);}(_0xe706,0xa3));var _0x6e70=function(_0x21cf80,_0x1fb0a1){_0x21cf80=_0x21cf80-0x0;var _0x5c6bed=_0xe706[_0x21cf80];return _0x5c6bed;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0xf16a02,_0x511866){var _0x444d4f=function(_0x25548f){while(--_0x25548f){_0xf16a02['push'](_0xf16a02['shift']());}};_0x444d4f(++_0x511866);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'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 b782e27..6d416b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf97d=['INTEGER','sequelize','exports'];(function(_0xfab345,_0x43fc6e){var _0x1a60fd=function(_0x10d788){while(--_0x10d788){_0xfab345['push'](_0xfab345['shift']());}};_0x1a60fd(++_0x43fc6e);}(_0xf97d,0x199));var _0xdf97=function(_0x160148,_0x5c0639){_0x160148=_0x160148-0x0;var _0x5d4a2c=_0xf97d[_0x160148];return _0x5d4a2c;};'use strict';var Sequelize=require(_0xdf97('0x0'));module[_0xdf97('0x1')]={'penalty':{'type':Sequelize[_0xdf97('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x609b=['INTEGER'];(function(_0x2bf259,_0x592580){var _0x1954c1=function(_0x4dfae5){while(--_0x4dfae5){_0x2bf259['push'](_0x2bf259['shift']());}};_0x1954c1(++_0x592580);}(_0x609b,0x1b7));var _0xb609=function(_0x3cbe3c,_0x3e3c74){_0x3cbe3c=_0x3cbe3c-0x0;var _0x50fe08=_0x609b[_0x3cbe3c];return _0x50fe08;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xb609('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index 6adbf38..f054e4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8856=['user_has_openchannel_queues','api','moment','request-promise','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue'];(function(_0x468ed9,_0x21de15){var _0x529c7c=function(_0x53c2d9){while(--_0x53c2d9){_0x468ed9['push'](_0x468ed9['shift']());}};_0x529c7c(++_0x21de15);}(_0x8856,0x1b9));var _0x6885=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8856[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x6885('0x0'));var moment=require(_0x6885('0x1'));var BPromise=require('bluebird');var rp=require(_0x6885('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6885('0x3'));var config=require(_0x6885('0x4'));var attributes=require(_0x6885('0x5'));module[_0x6885('0x6')]=function(_0xf83535,_0x4b99a5){return _0xf83535[_0x6885('0x7')](_0x6885('0x8'),attributes,{'tableName':_0x6885('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa84b=['define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xa84b,0x1c3));var _0xba84=function(_0x11ba06,_0x41d28d){_0x11ba06=_0x11ba06-0x0;var _0x3053d8=_0xa84b[_0x11ba06];return _0x3053d8;};'use strict';var _=require(_0xba84('0x0'));var util=require(_0xba84('0x1'));var logger=require(_0xba84('0x2'))(_0xba84('0x3'));var moment=require('moment');var BPromise=require(_0xba84('0x4'));var rp=require(_0xba84('0x5'));var fs=require('fs');var path=require(_0xba84('0x6'));var rimraf=require(_0xba84('0x7'));var config=require(_0xba84('0x8'));var attributes=require(_0xba84('0x9'));module[_0xba84('0xa')]=function(_0x23eb7f,_0x98415c){return _0x23eb7f[_0xba84('0xb')](_0xba84('0xc'),attributes,{'tableName':_0xba84('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f690fd8..0f26b40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x360d=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x34d346,_0x4c6502){var _0x122d76=function(_0x22a5fd){while(--_0x22a5fd){_0x34d346['push'](_0x34d346['shift']());}};_0x122d76(++_0x4c6502);}(_0x360d,0xe2));var _0xd360=function(_0x175290,_0x42e572){_0x175290=_0x175290-0x0;var _0x52bd78=_0x360d[_0x175290];return _0x52bd78;};'use strict';var _=require(_0xd360('0x0'));var util=require('util');var moment=require(_0xd360('0x1'));var BPromise=require(_0xd360('0x2'));var rs=require(_0xd360('0x3'));var fs=require('fs');var Redis=require(_0xd360('0x4'));var db=require(_0xd360('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd360('0x6'))(_0xd360('0x7'));var config=require(_0xd360('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd360('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x18e3fd,_0x2639b8,_0x5f276e){return new BPromise(function(_0x2942ef,_0x29d2b0){return client[_0xd360('0xa')](_0x18e3fd,_0x5f276e)[_0xd360('0xb')](function(_0x4632b1){logger[_0xd360('0xc')](_0xd360('0xd'),_0x2639b8,_0xd360('0xe'));logger[_0xd360('0xf')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x2639b8,'request\x20sent',JSON[_0xd360('0x10')](_0x4632b1));if(_0x4632b1['error']){if(_0x4632b1[_0xd360('0x11')][_0xd360('0x12')]===0x1f4){logger[_0xd360('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2639b8,_0x4632b1['error'][_0xd360('0x13')]);return _0x29d2b0(_0x4632b1[_0xd360('0x11')][_0xd360('0x13')]);}logger['error'](_0xd360('0xd'),_0x2639b8,_0x4632b1[_0xd360('0x11')][_0xd360('0x13')]);return _0x2942ef(_0x4632b1[_0xd360('0x11')][_0xd360('0x13')]);}else{logger[_0xd360('0xc')](_0xd360('0xd'),_0x2639b8,_0xd360('0xe'));_0x2942ef(_0x4632b1[_0xd360('0x14')][_0xd360('0x13')]);}})[_0xd360('0x15')](function(_0x4aac38){logger[_0xd360('0x11')](_0xd360('0xd'),_0x2639b8,_0x4aac38);_0x29d2b0(_0x4aac38);});});}
\ No newline at end of file
+var _0x13d1=['result','moment','bluebird','ioredis','../../config/logger','../../config/environment','request','then','UserOpenchannelQueue,\x20%s,\x20%s','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent'];(function(_0x2caa58,_0x28b4d9){var _0x250357=function(_0x5817b0){while(--_0x5817b0){_0x2caa58['push'](_0x2caa58['shift']());}};_0x250357(++_0x28b4d9);}(_0x13d1,0x14b));var _0x113d=function(_0xa54427,_0x42db28){_0xa54427=_0xa54427-0x0;var _0x3bb61c=_0x13d1[_0xa54427];return _0x3bb61c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x113d('0x0'));var BPromise=require(_0x113d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x113d('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x113d('0x3'))('rpc');var config=require(_0x113d('0x4'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x511983,_0x4af39e,_0x1afb45){return new BPromise(function(_0x457871,_0x2e6668){return client[_0x113d('0x5')](_0x511983,_0x1afb45)[_0x113d('0x6')](function(_0x4757d9){logger['info'](_0x113d('0x7'),_0x4af39e,'request\x20sent');logger['debug'](_0x113d('0x8'),_0x4af39e,'request\x20sent',JSON[_0x113d('0x9')](_0x4757d9));if(_0x4757d9[_0x113d('0xa')]){if(_0x4757d9[_0x113d('0xa')][_0x113d('0xb')]===0x1f4){logger[_0x113d('0xa')](_0x113d('0x7'),_0x4af39e,_0x4757d9[_0x113d('0xa')][_0x113d('0xc')]);return _0x2e6668(_0x4757d9[_0x113d('0xa')]['message']);}logger['error'](_0x113d('0x7'),_0x4af39e,_0x4757d9['error'][_0x113d('0xc')]);return _0x457871(_0x4757d9[_0x113d('0xa')]['message']);}else{logger['info'](_0x113d('0x7'),_0x4af39e,_0x113d('0xd'));_0x457871(_0x4757d9[_0x113d('0xe')]['message']);}})['catch'](function(_0x173489){logger[_0x113d('0xa')](_0x113d('0x7'),_0x4af39e,_0x173489);_0x2e6668(_0x173489);});});}
\ No newline at end of file
index 60616b9..70985fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dca=['/:id/clone','clone','/:id/sections','addSections','addResources','put','/:id','update','destroy','delete','removeSections','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./userProfile.controller','get','isAuthenticated','index','/describe','describe','show','getSections','/:id/resources','getResources','post','create'];(function(_0x4328a1,_0x33006a){var _0x8d1590=function(_0x5a1ba4){while(--_0x5a1ba4){_0x4328a1['push'](_0x4328a1['shift']());}};_0x8d1590(++_0x33006a);}(_0x7dca,0x191));var _0xa7dc=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x7dca[_0x88cd7b];return _0x56fcc8;};'use strict';var multer=require(_0xa7dc('0x0'));var util=require(_0xa7dc('0x1'));var path=require('path');var timeout=require(_0xa7dc('0x2'));var express=require(_0xa7dc('0x3'));var router=express[_0xa7dc('0x4')]();var fs_extra=require(_0xa7dc('0x5'));var auth=require(_0xa7dc('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa7dc('0x7'));router[_0xa7dc('0x8')]('/',auth[_0xa7dc('0x9')](),controller[_0xa7dc('0xa')]);router['get'](_0xa7dc('0xb'),auth['isAuthenticated'](),controller[_0xa7dc('0xc')]);router[_0xa7dc('0x8')]('/:id',auth[_0xa7dc('0x9')](),controller[_0xa7dc('0xd')]);router['get']('/:id/sections',auth[_0xa7dc('0x9')](),controller[_0xa7dc('0xe')]);router[_0xa7dc('0x8')](_0xa7dc('0xf'),auth[_0xa7dc('0x9')](),controller[_0xa7dc('0x10')]);router[_0xa7dc('0x11')]('/',auth[_0xa7dc('0x9')](),controller[_0xa7dc('0x12')]);router['post'](_0xa7dc('0x13'),auth[_0xa7dc('0x9')](),controller[_0xa7dc('0x14')]);router[_0xa7dc('0x11')](_0xa7dc('0x15'),auth[_0xa7dc('0x9')](),controller[_0xa7dc('0x16')]);router[_0xa7dc('0x11')](_0xa7dc('0xf'),auth[_0xa7dc('0x9')](),controller[_0xa7dc('0x17')]);router[_0xa7dc('0x18')](_0xa7dc('0x19'),auth['isAuthenticated'](),controller[_0xa7dc('0x1a')]);router['delete'](_0xa7dc('0x19'),auth['isAuthenticated'](),controller[_0xa7dc('0x1b')]);router[_0xa7dc('0x1c')]('/:id/sections',auth[_0xa7dc('0x9')](),controller[_0xa7dc('0x1d')]);router[_0xa7dc('0x1c')](_0xa7dc('0xf'),auth[_0xa7dc('0x9')](),controller['removeResources']);module['exports']=router;
\ No newline at end of file
+var _0xd1e5=['addResources','delete','destroy','/:id/resources','removeResources','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','index','/:id','show','/:id/sections','isAuthenticated','getSections','getResources','post','create','/:id/clone','clone','addSections'];(function(_0x310a1b,_0x4c9129){var _0xdea206=function(_0x1f1e8d){while(--_0x1f1e8d){_0x310a1b['push'](_0x310a1b['shift']());}};_0xdea206(++_0x4c9129);}(_0xd1e5,0xb4));var _0x5d1e=function(_0x4c8547,_0x54051f){_0x4c8547=_0x4c8547-0x0;var _0x10f2d7=_0xd1e5[_0x4c8547];return _0x10f2d7;};'use strict';var multer=require(_0x5d1e('0x0'));var util=require('util');var path=require(_0x5d1e('0x1'));var timeout=require(_0x5d1e('0x2'));var express=require(_0x5d1e('0x3'));var router=express[_0x5d1e('0x4')]();var fs_extra=require(_0x5d1e('0x5'));var auth=require(_0x5d1e('0x6'));var interaction=require(_0x5d1e('0x7'));var config=require(_0x5d1e('0x8'));var controller=require(_0x5d1e('0x9'));router[_0x5d1e('0xa')]('/',auth['isAuthenticated'](),controller[_0x5d1e('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0x5d1e('0xc'),auth['isAuthenticated'](),controller[_0x5d1e('0xd')]);router[_0x5d1e('0xa')](_0x5d1e('0xe'),auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x10')]);router[_0x5d1e('0xa')]('/:id/resources',auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x11')]);router[_0x5d1e('0x12')]('/',auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x13')]);router[_0x5d1e('0x12')](_0x5d1e('0x14'),auth['isAuthenticated'](),controller[_0x5d1e('0x15')]);router[_0x5d1e('0x12')]('/:id/sections',auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x16')]);router[_0x5d1e('0x12')]('/:id/resources',auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x17')]);router['put'](_0x5d1e('0xc'),auth[_0x5d1e('0xf')](),controller['update']);router[_0x5d1e('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x5d1e('0x19')]);router[_0x5d1e('0x18')](_0x5d1e('0xe'),auth[_0x5d1e('0xf')](),controller['removeSections']);router[_0x5d1e('0x18')](_0x5d1e('0x1a'),auth[_0x5d1e('0xf')](),controller[_0x5d1e('0x1b')]);module[_0x5d1e('0x1c')]=router;
\ No newline at end of file
index 017944e..eb06837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x462b=['setDataValue','join','crudPermissions','getDataValue','split','BOOLEAN','sequelize','STRING','name'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x462b,0xf0));var _0xb462=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x462b[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0xb462('0x0'));module['exports']={'name':{'type':Sequelize[_0xb462('0x1')],'allowNull':![],'unique':_0xb462('0x2')},'crudPermissions':{'type':Sequelize[_0xb462('0x1')],'set':function(_0x5955aa){this[_0xb462('0x3')]('crudPermissions',_0x5955aa?_0x5955aa[_0xb462('0x4')](''):[]);},'get':function(){return this['getDataValue'](_0xb462('0x5'))?this[_0xb462('0x6')](_0xb462('0x5'))[_0xb462('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xb462('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xb462('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xb462('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xb462('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xb462('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xb462('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xb462('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xb462('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x5a1e=['split','BOOLEAN','sequelize','exports','STRING','name','crudPermissions','join','getDataValue'];(function(_0xe4b5d,_0x27d747){var _0x2a064e=function(_0x10eee0){while(--_0x10eee0){_0xe4b5d['push'](_0xe4b5d['shift']());}};_0x2a064e(++_0x27d747);}(_0x5a1e,0x1bb));var _0xe5a1=function(_0x13461f,_0x496fc3){_0x13461f=_0x13461f-0x0;var _0x39131d=_0x5a1e[_0x13461f];return _0x39131d;};'use strict';var Sequelize=require(_0xe5a1('0x0'));module[_0xe5a1('0x1')]={'name':{'type':Sequelize[_0xe5a1('0x2')],'allowNull':![],'unique':_0xe5a1('0x3')},'crudPermissions':{'type':Sequelize[_0xe5a1('0x2')],'set':function(_0x567c4c){this['setDataValue'](_0xe5a1('0x4'),_0x567c4c?_0x567c4c[_0xe5a1('0x5')](''):[]);},'get':function(){return this[_0xe5a1('0x6')](_0xe5a1('0x4'))?this[_0xe5a1('0x6')]('crudPermissions')[_0xe5a1('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xe5a1('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xe5a1('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index e9b5148..7bebe56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc23d=['findOne','Dashboard','forEach','resourceId','addResources','bulkCreate','removeResources','getResources','Missing\x20section\x20parameter','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','sendStatus','error','stack','name','send','index','map','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','UserProfile','includeAll','rows','catch','show','params','rawAttributes','find','create','body','clone','include','get','omit','updatedAt','createdAt','sequelize','UserProfileSection','findAll','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','destroy','describe','addSections','transaction','ids','includes','isEmpty','subsections','enabled','push'];(function(_0x193263,_0x346558){var _0xaabaf4=function(_0x36a838){while(--_0x36a838){_0x193263['push'](_0x193263['shift']());}};_0xaabaf4(++_0x346558);}(_0xc23d,0x7f));var _0xdc23=function(_0x1b964a,_0x40fdc2){_0x1b964a=_0x1b964a-0x0;var _0x2559fa=_0xc23d[_0x1b964a];return _0x2559fa;};'use strict';var emlformat=require(_0xdc23('0x0'));var rimraf=require(_0xdc23('0x1'));var zipdir=require(_0xdc23('0x2'));var jsonpatch=require(_0xdc23('0x3'));var rp=require(_0xdc23('0x4'));var moment=require(_0xdc23('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xdc23('0x6'));var util=require(_0xdc23('0x7'));var path=require(_0xdc23('0x8'));var sox=require(_0xdc23('0x9'));var csv=require(_0xdc23('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdc23('0xb'));var squel=require('squel');var crypto=require(_0xdc23('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdc23('0xd'));var toCsv=require(_0xdc23('0xa'));var querystring=require(_0xdc23('0xe'));var Papa=require(_0xdc23('0xf'));var Redis=require(_0xdc23('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xdc23('0x11'));var as=require(_0xdc23('0x12'));var hardwareService=require(_0xdc23('0x13'));var logger=require(_0xdc23('0x14'))(_0xdc23('0x15'));var utils=require(_0xdc23('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xdc23('0x17'));var db=require(_0xdc23('0x18'))['db'];config[_0xdc23('0x19')]=_[_0xdc23('0x1a')](config['redis'],{'host':_0xdc23('0x1b'),'port':0x18eb});var socket=require(_0xdc23('0x1c'))(new Redis(config[_0xdc23('0x19')]));require(_0xdc23('0x1d'))[_0xdc23('0x1e')](socket);function respondWithStatusCode(_0xc0f0a2,_0x4908de){_0x4908de=_0x4908de||0xcc;return function(_0x134037){if(_0x134037){return _0xc0f0a2['sendStatus'](_0x4908de);}return _0xc0f0a2[_0xdc23('0x1f')](_0x4908de)[_0xdc23('0x20')]();};}function respondWithResult(_0x2ba40a,_0x5b99f5){_0x5b99f5=_0x5b99f5||0xc8;return function(_0x26573a){if(_0x26573a){return _0x2ba40a[_0xdc23('0x1f')](_0x5b99f5)[_0xdc23('0x21')](_0x26573a);}};}function respondWithFilteredResult(_0x436e4a,_0x4eaad7){return function(_0x258f61){if(_0x258f61){var _0x4472b3=typeof _0x4eaad7[_0xdc23('0x22')]==='undefined'&&typeof _0x4eaad7['limit']===_0xdc23('0x23');var _0x21bd43=_0x258f61[_0xdc23('0x24')];var _0x21ec4a=_0x4472b3?0x0:_0x4eaad7[_0xdc23('0x22')];var _0x3c7d4c=_0x4472b3?_0x258f61[_0xdc23('0x24')]:_0x4eaad7['offset']+_0x4eaad7[_0xdc23('0x25')];var _0x535926;if(_0x3c7d4c>=_0x21bd43){_0x3c7d4c=_0x21bd43;_0x535926=0xc8;}else{_0x535926=0xce;}_0x436e4a[_0xdc23('0x1f')](_0x535926);return _0x436e4a[_0xdc23('0x26')](_0xdc23('0x27'),_0x21ec4a+'-'+_0x3c7d4c+'/'+_0x21bd43)[_0xdc23('0x21')](_0x258f61);}return null;};}function patchUpdates(_0x42c77e){return function(_0x5f02cb){try{jsonpatch['apply'](_0x5f02cb,_0x42c77e,!![]);}catch(_0x4e8054){return BPromise[_0xdc23('0x28')](_0x4e8054);}return _0x5f02cb[_0xdc23('0x29')]();};}function saveUpdates(_0x276fb4,_0x163700){return function(_0xa5abb3){if(_0xa5abb3){return _0xa5abb3[_0xdc23('0x2a')](_0x276fb4)[_0xdc23('0x2b')](function(_0x26e4ed){return _0x26e4ed;});}return null;};}function removeEntity(_0x168411,_0x210237){return function(_0x4696bb){if(_0x4696bb){return _0x4696bb['destroy']()[_0xdc23('0x2b')](function(){_0x168411['status'](0xcc)[_0xdc23('0x20')]();});}};}function handleEntityNotFound(_0x2545b4,_0x37871){return function(_0x3c0647){if(!_0x3c0647){_0x2545b4[_0xdc23('0x2c')](0x194);}return _0x3c0647;};}function handleError(_0xb932ff,_0x2fe0a4){_0x2fe0a4=_0x2fe0a4||0x1f4;return function(_0x553f03){logger[_0xdc23('0x2d')](_0x553f03[_0xdc23('0x2e')]);if(_0x553f03['name']){delete _0x553f03[_0xdc23('0x2f')];}_0xb932ff[_0xdc23('0x1f')](_0x2fe0a4)[_0xdc23('0x30')](_0x553f03);};}exports[_0xdc23('0x31')]=function(_0xafd0e1,_0x2337f3){var _0x43e483={},_0x40becf={},_0xc20b91={'count':0x0,'rows':[]};var _0x501c9a=_[_0xdc23('0x32')](db['UserProfile']['rawAttributes'],function(_0x1c13b8){return{'name':_0x1c13b8[_0xdc23('0x33')],'type':_0x1c13b8[_0xdc23('0x34')]['key']};});_0x40becf[_0xdc23('0x35')]=_[_0xdc23('0x32')](_0x501c9a,'name');_0x40becf[_0xdc23('0x36')]=_[_0xdc23('0x37')](_0xafd0e1[_0xdc23('0x36')]);_0x40becf[_0xdc23('0x38')]=_['intersection'](_0x40becf[_0xdc23('0x35')],_0x40becf[_0xdc23('0x36')]);_0x43e483['attributes']=_[_0xdc23('0x39')](_0x40becf[_0xdc23('0x35')],qs[_0xdc23('0x3a')](_0xafd0e1[_0xdc23('0x36')][_0xdc23('0x3a')]));_0x43e483[_0xdc23('0x3b')]=_0x43e483[_0xdc23('0x3b')][_0xdc23('0x3c')]?_0x43e483[_0xdc23('0x3b')]:_0x40becf[_0xdc23('0x35')];if(!_0xafd0e1[_0xdc23('0x36')][_0xdc23('0x3d')]('nolimit')){_0x43e483[_0xdc23('0x25')]=qs['limit'](_0xafd0e1[_0xdc23('0x36')][_0xdc23('0x25')]);_0x43e483[_0xdc23('0x22')]=qs[_0xdc23('0x22')](_0xafd0e1[_0xdc23('0x36')][_0xdc23('0x22')]);}_0x43e483[_0xdc23('0x3e')]=qs[_0xdc23('0x3f')](_0xafd0e1[_0xdc23('0x36')][_0xdc23('0x3f')]);_0x43e483[_0xdc23('0x40')]=qs['filters'](_[_0xdc23('0x41')](_0xafd0e1[_0xdc23('0x36')],_0x40becf[_0xdc23('0x38')]),_0x501c9a);if(_0xafd0e1[_0xdc23('0x36')][_0xdc23('0x42')]){_0x43e483[_0xdc23('0x40')]=_[_0xdc23('0x43')](_0x43e483['where'],{'$or':_[_0xdc23('0x32')](_0x501c9a,function(_0x213062){if(_0x213062[_0xdc23('0x34')]!==_0xdc23('0x44')){var _0x36d4ef={};_0x36d4ef[_0x213062[_0xdc23('0x2f')]]={'$like':'%'+_0xafd0e1[_0xdc23('0x36')]['filter']+'%'};return _0x36d4ef;}})});}_0x43e483=_['merge']({},_0x43e483,_0xafd0e1[_0xdc23('0x45')]);var _0x46d2e3={'where':_0x43e483['where']};return db[_0xdc23('0x46')][_0xdc23('0x24')](_0x46d2e3)[_0xdc23('0x2b')](function(_0x366e77){_0xc20b91['count']=_0x366e77;if(_0xafd0e1[_0xdc23('0x36')][_0xdc23('0x47')]){_0x43e483['include']=[{'all':!![]}];}return db[_0xdc23('0x46')]['findAll'](_0x43e483);})[_0xdc23('0x2b')](function(_0x597373){_0xc20b91[_0xdc23('0x48')]=_0x597373;return _0xc20b91;})[_0xdc23('0x2b')](respondWithFilteredResult(_0x2337f3,_0x43e483))[_0xdc23('0x49')](handleError(_0x2337f3,null));};exports[_0xdc23('0x4a')]=function(_0x20a49c,_0x218e67){var _0x352152={'raw':![],'where':{'id':_0x20a49c[_0xdc23('0x4b')]['id']}},_0x4cf525={};_0x4cf525['model']=_[_0xdc23('0x37')](db[_0xdc23('0x46')][_0xdc23('0x4c')]);_0x4cf525[_0xdc23('0x36')]=_[_0xdc23('0x37')](_0x20a49c[_0xdc23('0x36')]);_0x4cf525[_0xdc23('0x38')]=_['intersection'](_0x4cf525['model'],_0x4cf525[_0xdc23('0x36')]);_0x352152[_0xdc23('0x3b')]=_[_0xdc23('0x39')](_0x4cf525['model'],qs[_0xdc23('0x3a')](_0x20a49c[_0xdc23('0x36')][_0xdc23('0x3a')]));_0x352152[_0xdc23('0x3b')]=_0x352152[_0xdc23('0x3b')][_0xdc23('0x3c')]?_0x352152['attributes']:_0x4cf525[_0xdc23('0x35')];if(_0x20a49c['query'][_0xdc23('0x47')]){_0x352152['include']=[{'all':!![]}];}_0x352152=_[_0xdc23('0x43')]({},_0x352152,_0x20a49c[_0xdc23('0x45')]);return db[_0xdc23('0x46')][_0xdc23('0x4d')](_0x352152)[_0xdc23('0x2b')](handleEntityNotFound(_0x218e67,null))[_0xdc23('0x2b')](respondWithResult(_0x218e67,null))[_0xdc23('0x49')](handleError(_0x218e67,null));};exports[_0xdc23('0x4e')]=function(_0x46aff9,_0x3f81f0){return db[_0xdc23('0x46')]['create'](_0x46aff9[_0xdc23('0x4f')],{})['then'](respondWithResult(_0x3f81f0,0xc9))[_0xdc23('0x49')](handleError(_0x3f81f0,null));};exports[_0xdc23('0x50')]=function(_0x48eab5,_0x27f9e4){var _0x13354f={'where':{'id':_0x48eab5[_0xdc23('0x4b')]['id']}},_0x4325c7={};_0x4325c7['model']=_[_0xdc23('0x37')](db['UserProfile'][_0xdc23('0x4c')]);_0x13354f[_0xdc23('0x3b')]=_[_0xdc23('0x39')](_0x4325c7[_0xdc23('0x35')],qs[_0xdc23('0x3a')](_0x48eab5[_0xdc23('0x36')][_0xdc23('0x3a')]));_0x13354f[_0xdc23('0x3b')]=_0x13354f[_0xdc23('0x3b')][_0xdc23('0x3c')]?_0x13354f['attributes']:_0x4325c7['model'];if(_0x48eab5['query'][_0xdc23('0x47')]){_0x13354f[_0xdc23('0x51')]=[{'all':!![]}];}_0x13354f=_[_0xdc23('0x43')]({},_0x13354f,_0x48eab5['options']);return db['UserProfile'][_0xdc23('0x4d')](_0x13354f)[_0xdc23('0x2b')](handleEntityNotFound(_0x27f9e4,null))[_0xdc23('0x2b')](function(_0x248f66){if(_0x248f66){var _0x2589d5=_0x248f66[_0xdc23('0x52')]({'plain':!![]});_0x2589d5=qs[_0xdc23('0x53')](_0x2589d5,['id','createdAt',_0xdc23('0x54'),'crudPermissions']);_0x48eab5[_0xdc23('0x4f')]=_[_0xdc23('0x53')](_0x48eab5[_0xdc23('0x4f')],['id',_0xdc23('0x55'),'updatedAt']);return db[_0xdc23('0x56')]['transaction'](function(_0x1adefd){return db['UserProfile'][_0xdc23('0x4e')](_[_0xdc23('0x43')](_0x2589d5,_0x48eab5['body']),{'include':_0x48eab5[_0xdc23('0x36')][_0xdc23('0x47')]?[{'all':!![]}]:undefined,'transaction':_0x1adefd})[_0xdc23('0x2b')](function(_0x2d2fdf){var _0x5b7fb3=_0x2d2fdf[_0xdc23('0x52')]({'plain':!![]});return db[_0xdc23('0x57')][_0xdc23('0x58')]({'where':{'userProfileId':_0x48eab5[_0xdc23('0x4b')]['id']},'raw':!![]})[_0xdc23('0x2b')](function(_0x42cde4){if(_0x42cde4){return BPromise[_0xdc23('0x59')](_0x42cde4,function(_0x6e8494){return new BPromise(function(_0x3b6c2e,_0x45998d){if(_0x6e8494[_0xdc23('0x5a')]===null||_0x6e8494[_0xdc23('0x5a')]===0x1)_0x3b6c2e(null);return db[_0xdc23('0x5b')][_0xdc23('0x58')]({'where':{'sectionId':_0x6e8494['id']},'raw':!![]})[_0xdc23('0x2b')](function(_0x276647){var _0xfc9f53=_[_0xdc23('0x32')](_0x276647,function(_0x5dfb7b){return qs[_0xdc23('0x53')](_0x5dfb7b,['id',_0xdc23('0x55'),_0xdc23('0x54'),_0xdc23('0x5c')]);});_0x3b6c2e(_0xfc9f53);})[_0xdc23('0x49')](function(_0x561fc1){_0x45998d(_0x561fc1);});})[_0xdc23('0x2b')](function(_0x357e36){var _0xcd03b3=qs[_0xdc23('0x53')](_0x6e8494,['id',_0xdc23('0x55'),_0xdc23('0x54')]);_0xcd03b3[_0xdc23('0x5d')]=_0x5b7fb3['id'];if(_0x357e36)_0xcd03b3[_0xdc23('0x5e')]=_0x357e36;return _0xcd03b3;})['then'](function(_0x352a65){return db[_0xdc23('0x57')][_0xdc23('0x4e')](_0x352a65,{'include':[{'model':db[_0xdc23('0x5b')],'as':_0xdc23('0x5e')}],'raw':!![],'transaction':_0x1adefd});});})[_0xdc23('0x2b')](function(){return _0x5b7fb3;});}});});});}})[_0xdc23('0x2b')](respondWithResult(_0x27f9e4,0xc9))['catch'](handleError(_0x27f9e4,null));};exports[_0xdc23('0x2a')]=function(_0x43e081,_0x4cc5c4){if(_0x43e081[_0xdc23('0x4f')]['id']){delete _0x43e081[_0xdc23('0x4f')]['id'];}return db[_0xdc23('0x46')][_0xdc23('0x4d')]({'where':{'id':_0x43e081[_0xdc23('0x4b')]['id']}})[_0xdc23('0x2b')](handleEntityNotFound(_0x4cc5c4,null))[_0xdc23('0x2b')](saveUpdates(_0x43e081[_0xdc23('0x4f')],null))[_0xdc23('0x2b')](respondWithResult(_0x4cc5c4,null))['catch'](handleError(_0x4cc5c4,null));};exports[_0xdc23('0x5f')]=function(_0x2c3ddf,_0x2fe1fc){return db[_0xdc23('0x46')][_0xdc23('0x4d')]({'where':{'id':_0x2c3ddf[_0xdc23('0x4b')]['id']}})[_0xdc23('0x2b')](handleEntityNotFound(_0x2fe1fc,null))['then'](removeEntity(_0x2fe1fc,null))[_0xdc23('0x49')](handleError(_0x2fe1fc,null));};exports[_0xdc23('0x60')]=function(_0x55435a,_0x3b5ae1){return db[_0xdc23('0x46')][_0xdc23('0x60')]()['then'](respondWithResult(_0x3b5ae1,null))['catch'](handleError(_0x3b5ae1,null));};exports[_0xdc23('0x61')]=function(_0x94091f,_0xaf561e){var _0x59765b=_0x94091f['body'];return db['UserProfile'][_0xdc23('0x4d')]({'where':{'id':_0x94091f['params']['id']}})[_0xdc23('0x2b')](handleEntityNotFound(_0xaf561e,null))['then'](function(_0x35984d){if(_0x35984d){return db['sequelize'][_0xdc23('0x62')](function(_0x3dfe60){return db[_0xdc23('0x57')][_0xdc23('0x5f')]({'where':{'userProfileId':_0x94091f[_0xdc23('0x4b')]['id'],'sectionId':_[_0xdc23('0x32')](_0x59765b,function(_0x2c5219){return _0x2c5219['sectionId'];})},'transaction':_0x3dfe60})[_0xdc23('0x2b')](function(){var _0x569a27=_[_0xdc23('0x32')](_0x59765b,function(_0x38c3df){_0x38c3df['userProfileId']=_0x94091f[_0xdc23('0x4b')]['id'];return _0x38c3df;});var _0x35a088=[];return BPromise[_0xdc23('0x59')](_0x569a27,function(_0x518b72){return db[_0xdc23('0x57')][_0xdc23('0x4e')](_0x518b72,{'include':[{'model':db[_0xdc23('0x5b')],'as':_0xdc23('0x5e')}],'raw':!![],'transaction':_0x3dfe60})[_0xdc23('0x2b')](function(_0x447852){_0x35a088['push'](_0x447852[_0xdc23('0x52')]({'plain':!![]}));});})['then'](function(){return _0x35a088;});});});}})['then'](function(_0x115645){return _0x115645;})['then'](respondWithResult(_0xaf561e,null))[_0xdc23('0x49')](handleError(_0xaf561e,null));};exports['removeSections']=function(_0x1f6290,_0x21f2b2){var _0x2f171c;return db['UserProfile'][_0xdc23('0x4d')]({'where':{'id':_0x1f6290[_0xdc23('0x4b')]['id']},'attributes':['id',_0xdc23('0x2f')]})[_0xdc23('0x2b')](handleEntityNotFound(_0x21f2b2,null))['then'](function(_0x42cd80){if(_0x42cd80){_0x2f171c=_0x42cd80;return db[_0xdc23('0x57')]['destroy']({'where':{'userProfileId':_0x1f6290[_0xdc23('0x4b')]['id'],'sectionId':_0x1f6290[_0xdc23('0x36')][_0xdc23('0x63')]}});}})[_0xdc23('0x2b')](function(){return _0x2f171c;})['then'](respondWithStatusCode(_0x21f2b2,null))[_0xdc23('0x49')](handleError(_0x21f2b2,null));};exports['getSections']=function(_0x259351,_0x2e8d1a){var _0x598f79=[];var _0x35666c=[];return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x259351[_0xdc23('0x4b')]['id']},'raw':!![]})[_0xdc23('0x2b')](function(_0x23d471){_0x598f79=_['filter'](_0x23d471,function(_0x4d52c3){return _0x4d52c3['enabled']===0x1||_[_0xdc23('0x64')]([0x3eb,0x709],_0x4d52c3['sectionId']);});if(!_[_0xdc23('0x65')](_0x598f79)){return _[_0xdc23('0x32')](_0x598f79,function(_0x4dddc7){return _0x4dddc7[_0xdc23('0x5c')];});}else{return;}})['then'](function(_0x9c0ea7){if(_0x9c0ea7)_0x35666c=_0x9c0ea7;if(_[_0xdc23('0x64')](_0x35666c,0x64)){var _0x43fbb6=_[_0xdc23('0x4d')](_0x598f79,{'sectionId':0x64});return hasDefaultDashboard(_0x43fbb6)['then'](function(_0x42efb3){return _['map'](_0x598f79,function(_0x36f4ba){if(_0x36f4ba[_0xdc23('0x5c')]===0x64){_0x36f4ba[_0xdc23('0x66')]=_0x42efb3;}return _0x36f4ba;});});}else{return;}})[_0xdc23('0x2b')](function(_0x4b235a){if(_0x4b235a)_0x598f79=_0x4b235a;if(_[_0xdc23('0x64')](_0x35666c,0x3eb)){var _0x1f10e7=_[_0xdc23('0x4d')](_0x598f79,{'sectionId':0x3eb});return getCustomDashboards(_0x1f10e7)[_0xdc23('0x2b')](function(_0x853e90){return _[_0xdc23('0x32')](_0x598f79,function(_0x3b4397){if(_0x1f10e7[_0xdc23('0x67')]){if(_0x3b4397[_0xdc23('0x5c')]===0x3eb){_0x3b4397[_0xdc23('0x66')]=_0x853e90;}}else{if(_0x3b4397[_0xdc23('0x5c')]===0x64){_0x3b4397[_0xdc23('0x66')]=_0x853e90;}}return _0x3b4397;});});}else{return;}})[_0xdc23('0x2b')](function(_0x4cff40){if(_0x4cff40)_0x598f79=_0x4cff40;if(_[_0xdc23('0x64')](_0x35666c,0x709)){var _0x536a34=_[_0xdc23('0x4d')](_0x598f79,{'sectionId':0x709});return getPlugins(_0x536a34)[_0xdc23('0x2b')](function(_0x1c4866){if(_0x536a34[_0xdc23('0x67')]){return _[_0xdc23('0x32')](_0x598f79,function(_0xb9f0a7){if(_0xb9f0a7[_0xdc23('0x5c')]===0x709){_0xb9f0a7[_0xdc23('0x66')]=_0x1c4866;}return _0xb9f0a7;});}else{var _0xccc938={'sectionId':0x76c,'enabled':0x1,'subsections':_0x1c4866};var _0x1e9df3=_[_0xdc23('0x32')](_0x598f79);_0x1e9df3[_0xdc23('0x68')](_0xccc938);return _0x1e9df3;}});}else{return;}})[_0xdc23('0x2b')](function(_0x43bf95){if(_0x43bf95)_0x598f79=_0x43bf95;return _[_0xdc23('0x42')](_0x598f79,[_0xdc23('0x67'),0x1]);})[_0xdc23('0x2b')](respondWithResult(_0x2e8d1a,null))[_0xdc23('0x49')](handleError(_0x2e8d1a,null));};function hasDefaultDashboard(_0x3fac1d){var _0x573a93=[0x65];return new BPromise(function(_0x5e6ca3,_0x57d785){try{if(_0x3fac1d[_0xdc23('0x5a')]){_0x5e6ca3(_0x573a93);}else{return db['UserProfileResource'][_0xdc23('0x69')]({'where':{'sectionId':_0x3fac1d['id']},'raw':!![]})[_0xdc23('0x2b')](function(_0x247dac){_0x247dac?_0x5e6ca3(_0x573a93):_0x5e6ca3();});}}catch(_0x54b2e1){_0x57d785(_0x54b2e1);}});}function getCustomDashboards(_0x1ca3da){var _0x4961c3=[];return new BPromise(function(_0x12e35e,_0x218a9c){try{if(_0x1ca3da[_0xdc23('0x5a')]){return db[_0xdc23('0x6a')]['findAll']({'raw':!![]})[_0xdc23('0x2b')](function(_0x4a45a9){_0x4a45a9[_0xdc23('0x6b')](function(_0x2349f2){_0x4961c3[_0xdc23('0x68')](_0x2349f2['id']+0x1869f);});_0x12e35e(_0x4961c3);});}else{return db[_0xdc23('0x5b')][_0xdc23('0x58')]({'where':{'sectionId':_0x1ca3da['id']},'raw':!![]})['then'](function(_0x3b796b){_0x3b796b[_0xdc23('0x6b')](function(_0x3c62b9){_0x4961c3[_0xdc23('0x68')](_0x3c62b9[_0xdc23('0x6c')]+0x1869f);});_0x12e35e(_0x4961c3);});}}catch(_0x2cd80d){_0x218a9c(_0x2cd80d);}});}function getPlugins(_0x221588){var _0x313dab=[];return new BPromise(function(_0x197fc2,_0x1fcb6e){try{if(_0x221588[_0xdc23('0x5a')]){return db['Plugin'][_0xdc23('0x58')]({'raw':!![]})['then'](function(_0x4ab16f){_0x4ab16f[_0xdc23('0x6b')](function(_0xa0a893){_0x313dab[_0xdc23('0x68')](_0xa0a893['id']+0x15b38);});_0x197fc2(_0x313dab);});}else{return db[_0xdc23('0x5b')][_0xdc23('0x58')]({'where':{'sectionId':_0x221588['id']},'raw':!![]})[_0xdc23('0x2b')](function(_0x5dcb90){_0x5dcb90[_0xdc23('0x6b')](function(_0x3941be){_0x313dab[_0xdc23('0x68')](_0x3941be[_0xdc23('0x6c')]+0x15b38);});_0x197fc2(_0x313dab);});}}catch(_0x4e3615){_0x1fcb6e(_0x4e3615);}});}exports[_0xdc23('0x6d')]=function(_0x335aba,_0x326f4e){return db[_0xdc23('0x46')]['find']({'where':{'id':_0x335aba[_0xdc23('0x4b')]['id']}})['then'](handleEntityNotFound(_0x326f4e,null))[_0xdc23('0x2b')](function(_0x3c1d68){if(_0x3c1d68){return db[_0xdc23('0x56')][_0xdc23('0x62')](function(_0x5d8f79){return db[_0xdc23('0x57')][_0xdc23('0x58')]({'where':{'userProfileId':_0x335aba[_0xdc23('0x4b')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x59e71f){if(_0x59e71f){return db['UserProfileSection'][_0xdc23('0x5f')]({'where':{'userProfileId':_0x335aba[_0xdc23('0x4b')]['id'],'id':_[_0xdc23('0x32')](_0x59e71f,function(_0x832f6b){return _0x832f6b['id'];})},'transaction':_0x5d8f79});}})[_0xdc23('0x2b')](function(_0x32e27c){var _0x380cb0=_[_0xdc23('0x32')](_0x335aba[_0xdc23('0x4f')],function(_0x352df6){_0x352df6[_0xdc23('0x5d')]=_0x335aba[_0xdc23('0x4b')]['id'];return _0x352df6;});return db[_0xdc23('0x57')][_0xdc23('0x6e')](_0x380cb0,{'raw':!![],'transaction':_0x5d8f79});})[_0xdc23('0x2b')](function(_0xf84e04){var _0x3700d6=_[_0xdc23('0x42')](_[_0xdc23('0x32')](_0xf84e04,function(_0x2ed997){return _0x2ed997[_0xdc23('0x52')]({'plain':!![]});}),{'includeAll':![]});if(_0x3700d6){return db[_0xdc23('0x57')][_0xdc23('0x58')]({'where':{'userProfileId':_0x335aba['params']['id'],'sectionId':_[_0xdc23('0x32')](_0x3700d6,function(_0x3d10b5){return _0x3d10b5['sectionId'];})},'attributes':['id','sectionId'],'raw':!![]})[_0xdc23('0x2b')](function(_0x4acb83){var _0x3a1bf1=_[_0xdc23('0x32')](_0x335aba[_0xdc23('0x4f')],function(_0x25226a){_0x25226a[_0xdc23('0x5d')]=_0x335aba['params']['id'];return _0x25226a;});return db[_0xdc23('0x5b')][_0xdc23('0x6e')](_0x3a1bf1,{'raw':!![],'transaction':_0x5d8f79});});}})[_0xdc23('0x49')](handleError(_0x326f4e,null));});}})[_0xdc23('0x2b')](function(_0x2c1f65){var _0x23ea54=_[_0xdc23('0x32')](_0x2c1f65,function(_0x21f453){return _0x21f453[_0xdc23('0x52')]({'plain':!![]});});})['then'](respondWithResult(_0x326f4e,null))['catch'](handleError(_0x326f4e,null));};exports[_0xdc23('0x6f')]=function(_0x3917f3,_0x11b347,_0x462038){return db[_0xdc23('0x46')][_0xdc23('0x4d')]({'where':{'id':_0x3917f3[_0xdc23('0x4b')]['id']}})['then'](handleEntityNotFound(_0x11b347,null))[_0xdc23('0x2b')](function(_0x56f142){if(_0x56f142){return _0x56f142[_0xdc23('0x6f')](_0x3917f3[_0xdc23('0x36')][_0xdc23('0x63')]);}})[_0xdc23('0x2b')](respondWithStatusCode(_0x11b347,null))[_0xdc23('0x49')](handleError(_0x11b347,null));};exports[_0xdc23('0x70')]=function(_0x54f54f,_0x4f250c){var _0x443938={};if(!_0x54f54f['query']['section'])throw new Error(_0xdc23('0x71'));if(!_0x54f54f[_0xdc23('0x36')][_0xdc23('0x3d')](_0xdc23('0x72'))){_0x443938[_0xdc23('0x25')]=qs[_0xdc23('0x25')](_0x54f54f['query']['limit']);_0x443938[_0xdc23('0x22')]=qs[_0xdc23('0x22')](_0x54f54f[_0xdc23('0x36')]['offset']);}return db[_0xdc23('0x46')][_0xdc23('0x4d')]({'where':{'id':_0x54f54f[_0xdc23('0x4b')]['id']}})[_0xdc23('0x2b')](function(_0x5d2342){if(!_0x5d2342)throw new Error(_0xdc23('0x73')+_0x54f54f[_0xdc23('0x4b')]['id']);return db[_0xdc23('0x46')][_0xdc23('0x70')](_0x54f54f);})[_0xdc23('0x2b')](respondWithFilteredResult(_0x4f250c,_0x443938))[_0xdc23('0x49')](handleError(_0x4f250c,null));};
\ No newline at end of file
+var _0x1775=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','name','send','index','UserProfile','fieldName','type','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','then','include','params','includeAll','find','catch','create','clone','rawAttributes','options','get','updatedAt','crudPermissions','body','omit','createdAt','sequelize','UserProfileSection','findAll','each','autoAssociation','UserProfileResource','sectionId','Resources','describe','addSections','transaction','userProfileId','removeSections','ids','getSections','includes','isEmpty','subsections','enabled','push','findOne','Dashboard','resourceId','forEach','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x37ec27,_0x51cfeb){var _0x26f0c2=function(_0x23c0a0){while(--_0x23c0a0){_0x37ec27['push'](_0x37ec27['shift']());}};_0x26f0c2(++_0x51cfeb);}(_0x1775,0x1db));var _0x5177=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x1775[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5177('0x0'));var zipdir=require(_0x5177('0x1'));var jsonpatch=require(_0x5177('0x2'));var rp=require(_0x5177('0x3'));var moment=require(_0x5177('0x4'));var BPromise=require(_0x5177('0x5'));var Mustache=require(_0x5177('0x6'));var util=require(_0x5177('0x7'));var path=require(_0x5177('0x8'));var sox=require(_0x5177('0x9'));var csv=require(_0x5177('0xa'));var ejs=require(_0x5177('0xb'));var fs=require('fs');var fs_extra=require(_0x5177('0xc'));var _=require(_0x5177('0xd'));var squel=require(_0x5177('0xe'));var crypto=require(_0x5177('0xf'));var jsforce=require(_0x5177('0x10'));var deskjs=require(_0x5177('0x11'));var toCsv=require(_0x5177('0xa'));var querystring=require(_0x5177('0x12'));var Papa=require(_0x5177('0x13'));var Redis=require(_0x5177('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5177('0x15'));var hardwareService=require(_0x5177('0x16'));var logger=require(_0x5177('0x17'))(_0x5177('0x18'));var utils=require(_0x5177('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x5177('0x1a'));var db=require(_0x5177('0x1b'))['db'];config[_0x5177('0x1c')]=_[_0x5177('0x1d')](config[_0x5177('0x1c')],{'host':_0x5177('0x1e'),'port':0x18eb});var socket=require(_0x5177('0x1f'))(new Redis(config[_0x5177('0x1c')]));require(_0x5177('0x20'))[_0x5177('0x21')](socket);function respondWithStatusCode(_0x41bef4,_0x2bf5bb){_0x2bf5bb=_0x2bf5bb||0xcc;return function(_0x29cd2c){if(_0x29cd2c){return _0x41bef4[_0x5177('0x22')](_0x2bf5bb);}return _0x41bef4[_0x5177('0x23')](_0x2bf5bb)[_0x5177('0x24')]();};}function respondWithResult(_0x2ab5e5,_0x7dba6f){_0x7dba6f=_0x7dba6f||0xc8;return function(_0xe6dcf6){if(_0xe6dcf6){return _0x2ab5e5['status'](_0x7dba6f)[_0x5177('0x25')](_0xe6dcf6);}};}function respondWithFilteredResult(_0x41e687,_0x3f5ab5){return function(_0x1b4102){if(_0x1b4102){var _0x5f5bd4=typeof _0x3f5ab5[_0x5177('0x26')]===_0x5177('0x27')&&typeof _0x3f5ab5[_0x5177('0x28')]==='undefined';var _0x86f5f8=_0x1b4102['count'];var _0xc2b2b5=_0x5f5bd4?0x0:_0x3f5ab5[_0x5177('0x26')];var _0x219744=_0x5f5bd4?_0x1b4102[_0x5177('0x29')]:_0x3f5ab5[_0x5177('0x26')]+_0x3f5ab5[_0x5177('0x28')];var _0x174c4f;if(_0x219744>=_0x86f5f8){_0x219744=_0x86f5f8;_0x174c4f=0xc8;}else{_0x174c4f=0xce;}_0x41e687[_0x5177('0x23')](_0x174c4f);return _0x41e687[_0x5177('0x2a')](_0x5177('0x2b'),_0xc2b2b5+'-'+_0x219744+'/'+_0x86f5f8)[_0x5177('0x25')](_0x1b4102);}return null;};}function patchUpdates(_0x3b0c37){return function(_0x5d9a9c){try{jsonpatch[_0x5177('0x2c')](_0x5d9a9c,_0x3b0c37,!![]);}catch(_0x556f96){return BPromise[_0x5177('0x2d')](_0x556f96);}return _0x5d9a9c[_0x5177('0x2e')]();};}function saveUpdates(_0x3b39b5,_0x2d51d0){return function(_0x4bc8e2){if(_0x4bc8e2){return _0x4bc8e2[_0x5177('0x2f')](_0x3b39b5)['then'](function(_0x564139){return _0x564139;});}return null;};}function removeEntity(_0x19a0c2,_0x15cb93){return function(_0x577bf7){if(_0x577bf7){return _0x577bf7[_0x5177('0x30')]()['then'](function(){_0x19a0c2[_0x5177('0x23')](0xcc)[_0x5177('0x24')]();});}};}function handleEntityNotFound(_0x58846c,_0x3e021a){return function(_0x2554ec){if(!_0x2554ec){_0x58846c[_0x5177('0x22')](0x194);}return _0x2554ec;};}function handleError(_0x7f86e,_0xe98ff1){_0xe98ff1=_0xe98ff1||0x1f4;return function(_0x1cef5d){logger['error'](_0x1cef5d['stack']);if(_0x1cef5d[_0x5177('0x31')]){delete _0x1cef5d[_0x5177('0x31')];}_0x7f86e[_0x5177('0x23')](_0xe98ff1)[_0x5177('0x32')](_0x1cef5d);};}exports[_0x5177('0x33')]=function(_0x8134f9,_0x31eb9f){var _0x72dced={},_0x49f6f1={},_0x42e1db={'count':0x0,'rows':[]};var _0x2233a2=_['map'](db[_0x5177('0x34')]['rawAttributes'],function(_0x172b36){return{'name':_0x172b36[_0x5177('0x35')],'type':_0x172b36[_0x5177('0x36')]['key']};});_0x49f6f1['model']=_[_0x5177('0x37')](_0x2233a2,_0x5177('0x31'));_0x49f6f1[_0x5177('0x38')]=_[_0x5177('0x39')](_0x8134f9[_0x5177('0x38')]);_0x49f6f1[_0x5177('0x3a')]=_[_0x5177('0x3b')](_0x49f6f1[_0x5177('0x3c')],_0x49f6f1['query']);_0x72dced[_0x5177('0x3d')]=_[_0x5177('0x3b')](_0x49f6f1['model'],qs[_0x5177('0x3e')](_0x8134f9[_0x5177('0x38')][_0x5177('0x3e')]));_0x72dced[_0x5177('0x3d')]=_0x72dced[_0x5177('0x3d')][_0x5177('0x3f')]?_0x72dced['attributes']:_0x49f6f1[_0x5177('0x3c')];if(!_0x8134f9[_0x5177('0x38')][_0x5177('0x40')](_0x5177('0x41'))){_0x72dced[_0x5177('0x28')]=qs[_0x5177('0x28')](_0x8134f9[_0x5177('0x38')]['limit']);_0x72dced[_0x5177('0x26')]=qs[_0x5177('0x26')](_0x8134f9['query']['offset']);}_0x72dced[_0x5177('0x42')]=qs[_0x5177('0x43')](_0x8134f9[_0x5177('0x38')][_0x5177('0x43')]);_0x72dced[_0x5177('0x44')]=qs[_0x5177('0x3a')](_[_0x5177('0x45')](_0x8134f9[_0x5177('0x38')],_0x49f6f1[_0x5177('0x3a')]),_0x2233a2);if(_0x8134f9[_0x5177('0x38')][_0x5177('0x46')]){_0x72dced[_0x5177('0x44')]=_[_0x5177('0x47')](_0x72dced['where'],{'$or':_[_0x5177('0x37')](_0x2233a2,function(_0x2a4db1){if(_0x2a4db1['type']!==_0x5177('0x48')){var _0x56f297={};_0x56f297[_0x2a4db1[_0x5177('0x31')]]={'$like':'%'+_0x8134f9[_0x5177('0x38')][_0x5177('0x46')]+'%'};return _0x56f297;}})});}_0x72dced=_['merge']({},_0x72dced,_0x8134f9['options']);var _0x210510={'where':_0x72dced[_0x5177('0x44')]};return db[_0x5177('0x34')][_0x5177('0x29')](_0x210510)[_0x5177('0x49')](function(_0x3e710d){_0x42e1db[_0x5177('0x29')]=_0x3e710d;if(_0x8134f9[_0x5177('0x38')]['includeAll']){_0x72dced[_0x5177('0x4a')]=[{'all':!![]}];}return db['UserProfile']['findAll'](_0x72dced);})[_0x5177('0x49')](function(_0x17dc98){_0x42e1db['rows']=_0x17dc98;return _0x42e1db;})[_0x5177('0x49')](respondWithFilteredResult(_0x31eb9f,_0x72dced))['catch'](handleError(_0x31eb9f,null));};exports['show']=function(_0x46c833,_0x1769cd){var _0x262c71={'raw':![],'where':{'id':_0x46c833[_0x5177('0x4b')]['id']}},_0x3776b8={};_0x3776b8[_0x5177('0x3c')]=_[_0x5177('0x39')](db['UserProfile']['rawAttributes']);_0x3776b8[_0x5177('0x38')]=_['keys'](_0x46c833[_0x5177('0x38')]);_0x3776b8[_0x5177('0x3a')]=_[_0x5177('0x3b')](_0x3776b8[_0x5177('0x3c')],_0x3776b8['query']);_0x262c71[_0x5177('0x3d')]=_[_0x5177('0x3b')](_0x3776b8[_0x5177('0x3c')],qs[_0x5177('0x3e')](_0x46c833[_0x5177('0x38')][_0x5177('0x3e')]));_0x262c71[_0x5177('0x3d')]=_0x262c71[_0x5177('0x3d')][_0x5177('0x3f')]?_0x262c71[_0x5177('0x3d')]:_0x3776b8[_0x5177('0x3c')];if(_0x46c833['query'][_0x5177('0x4c')]){_0x262c71['include']=[{'all':!![]}];}_0x262c71=_['merge']({},_0x262c71,_0x46c833['options']);return db[_0x5177('0x34')][_0x5177('0x4d')](_0x262c71)['then'](handleEntityNotFound(_0x1769cd,null))[_0x5177('0x49')](respondWithResult(_0x1769cd,null))[_0x5177('0x4e')](handleError(_0x1769cd,null));};exports[_0x5177('0x4f')]=function(_0x4891fe,_0x1d4ae4){return db['UserProfile']['create'](_0x4891fe['body'],{})[_0x5177('0x49')](respondWithResult(_0x1d4ae4,0xc9))[_0x5177('0x4e')](handleError(_0x1d4ae4,null));};exports[_0x5177('0x50')]=function(_0x5a1f8b,_0x4e53e4){var _0x42b827={'where':{'id':_0x5a1f8b[_0x5177('0x4b')]['id']}},_0x5be355={};_0x5be355[_0x5177('0x3c')]=_[_0x5177('0x39')](db[_0x5177('0x34')][_0x5177('0x51')]);_0x42b827[_0x5177('0x3d')]=_[_0x5177('0x3b')](_0x5be355[_0x5177('0x3c')],qs[_0x5177('0x3e')](_0x5a1f8b[_0x5177('0x38')][_0x5177('0x3e')]));_0x42b827[_0x5177('0x3d')]=_0x42b827[_0x5177('0x3d')]['length']?_0x42b827['attributes']:_0x5be355[_0x5177('0x3c')];if(_0x5a1f8b['query'][_0x5177('0x4c')]){_0x42b827['include']=[{'all':!![]}];}_0x42b827=_[_0x5177('0x47')]({},_0x42b827,_0x5a1f8b[_0x5177('0x52')]);return db[_0x5177('0x34')]['find'](_0x42b827)['then'](handleEntityNotFound(_0x4e53e4,null))[_0x5177('0x49')](function(_0x43b5b9){if(_0x43b5b9){var _0x2eb560=_0x43b5b9[_0x5177('0x53')]({'plain':!![]});_0x2eb560=qs['omit'](_0x2eb560,['id','createdAt',_0x5177('0x54'),_0x5177('0x55')]);_0x5a1f8b[_0x5177('0x56')]=_[_0x5177('0x57')](_0x5a1f8b['body'],['id',_0x5177('0x58'),_0x5177('0x54')]);return db[_0x5177('0x59')]['transaction'](function(_0x2b39ba){return db[_0x5177('0x34')][_0x5177('0x4f')](_['merge'](_0x2eb560,_0x5a1f8b[_0x5177('0x56')]),{'include':_0x5a1f8b['query'][_0x5177('0x4c')]?[{'all':!![]}]:undefined,'transaction':_0x2b39ba})[_0x5177('0x49')](function(_0x3268bd){var _0x5101fc=_0x3268bd[_0x5177('0x53')]({'plain':!![]});return db[_0x5177('0x5a')][_0x5177('0x5b')]({'where':{'userProfileId':_0x5a1f8b[_0x5177('0x4b')]['id']},'raw':!![]})[_0x5177('0x49')](function(_0x74589e){if(_0x74589e){return BPromise[_0x5177('0x5c')](_0x74589e,function(_0x267599){return new BPromise(function(_0x5ceed2,_0x5d96ce){if(_0x267599['autoAssociation']===null||_0x267599[_0x5177('0x5d')]===0x1)_0x5ceed2(null);return db[_0x5177('0x5e')][_0x5177('0x5b')]({'where':{'sectionId':_0x267599['id']},'raw':!![]})[_0x5177('0x49')](function(_0x2472e9){var _0x62a68a=_['map'](_0x2472e9,function(_0x523531){return qs[_0x5177('0x57')](_0x523531,['id',_0x5177('0x58'),_0x5177('0x54'),_0x5177('0x5f')]);});_0x5ceed2(_0x62a68a);})[_0x5177('0x4e')](function(_0x1b1778){_0x5d96ce(_0x1b1778);});})[_0x5177('0x49')](function(_0xd9c1db){var _0xbfb3d7=qs['omit'](_0x267599,['id',_0x5177('0x58'),_0x5177('0x54')]);_0xbfb3d7['userProfileId']=_0x5101fc['id'];if(_0xd9c1db)_0xbfb3d7[_0x5177('0x60')]=_0xd9c1db;return _0xbfb3d7;})[_0x5177('0x49')](function(_0x4edebc){return db[_0x5177('0x5a')][_0x5177('0x4f')](_0x4edebc,{'include':[{'model':db[_0x5177('0x5e')],'as':'Resources'}],'raw':!![],'transaction':_0x2b39ba});});})[_0x5177('0x49')](function(){return _0x5101fc;});}});});});}})[_0x5177('0x49')](respondWithResult(_0x4e53e4,0xc9))['catch'](handleError(_0x4e53e4,null));};exports['update']=function(_0x102c27,_0x4f76d7){if(_0x102c27[_0x5177('0x56')]['id']){delete _0x102c27['body']['id'];}return db[_0x5177('0x34')][_0x5177('0x4d')]({'where':{'id':_0x102c27['params']['id']}})[_0x5177('0x49')](handleEntityNotFound(_0x4f76d7,null))[_0x5177('0x49')](saveUpdates(_0x102c27[_0x5177('0x56')],null))[_0x5177('0x49')](respondWithResult(_0x4f76d7,null))[_0x5177('0x4e')](handleError(_0x4f76d7,null));};exports[_0x5177('0x30')]=function(_0x20d476,_0x58ebdd){return db[_0x5177('0x34')]['find']({'where':{'id':_0x20d476['params']['id']}})[_0x5177('0x49')](handleEntityNotFound(_0x58ebdd,null))[_0x5177('0x49')](removeEntity(_0x58ebdd,null))['catch'](handleError(_0x58ebdd,null));};exports[_0x5177('0x61')]=function(_0xa889bd,_0x43abdd){return db[_0x5177('0x34')][_0x5177('0x61')]()[_0x5177('0x49')](respondWithResult(_0x43abdd,null))[_0x5177('0x4e')](handleError(_0x43abdd,null));};exports[_0x5177('0x62')]=function(_0x478d5e,_0x54b28f){var _0xee5f8b=_0x478d5e[_0x5177('0x56')];return db[_0x5177('0x34')][_0x5177('0x4d')]({'where':{'id':_0x478d5e[_0x5177('0x4b')]['id']}})[_0x5177('0x49')](handleEntityNotFound(_0x54b28f,null))['then'](function(_0x3692b2){if(_0x3692b2){return db[_0x5177('0x59')][_0x5177('0x63')](function(_0x46d72e){return db['UserProfileSection'][_0x5177('0x30')]({'where':{'userProfileId':_0x478d5e[_0x5177('0x4b')]['id'],'sectionId':_[_0x5177('0x37')](_0xee5f8b,function(_0x22da9d){return _0x22da9d[_0x5177('0x5f')];})},'transaction':_0x46d72e})['then'](function(){var _0x2734fc=_['map'](_0xee5f8b,function(_0x1a6499){_0x1a6499[_0x5177('0x64')]=_0x478d5e['params']['id'];return _0x1a6499;});var _0x67d605=[];return BPromise[_0x5177('0x5c')](_0x2734fc,function(_0x367784){return db[_0x5177('0x5a')]['create'](_0x367784,{'include':[{'model':db[_0x5177('0x5e')],'as':_0x5177('0x60')}],'raw':!![],'transaction':_0x46d72e})[_0x5177('0x49')](function(_0x20fc85){_0x67d605['push'](_0x20fc85[_0x5177('0x53')]({'plain':!![]}));});})[_0x5177('0x49')](function(){return _0x67d605;});});});}})[_0x5177('0x49')](function(_0x4c8a15){return _0x4c8a15;})['then'](respondWithResult(_0x54b28f,null))[_0x5177('0x4e')](handleError(_0x54b28f,null));};exports[_0x5177('0x65')]=function(_0x3f42a5,_0x170e25){var _0xb2aca2;return db[_0x5177('0x34')][_0x5177('0x4d')]({'where':{'id':_0x3f42a5[_0x5177('0x4b')]['id']},'attributes':['id',_0x5177('0x31')]})['then'](handleEntityNotFound(_0x170e25,null))['then'](function(_0x597a84){if(_0x597a84){_0xb2aca2=_0x597a84;return db[_0x5177('0x5a')]['destroy']({'where':{'userProfileId':_0x3f42a5[_0x5177('0x4b')]['id'],'sectionId':_0x3f42a5[_0x5177('0x38')][_0x5177('0x66')]}});}})[_0x5177('0x49')](function(){return _0xb2aca2;})[_0x5177('0x49')](respondWithStatusCode(_0x170e25,null))['catch'](handleError(_0x170e25,null));};exports[_0x5177('0x67')]=function(_0x10247,_0x41a7fa){var _0x4fce32=[];var _0x3d845e=[];return db['UserProfileSection'][_0x5177('0x5b')]({'where':{'userProfileId':_0x10247[_0x5177('0x4b')]['id']},'raw':!![]})['then'](function(_0xe5a705){_0x4fce32=_[_0x5177('0x46')](_0xe5a705,function(_0x53ccd8){return _0x53ccd8['enabled']===0x1||_[_0x5177('0x68')]([0x3eb,0x709],_0x53ccd8['sectionId']);});if(!_[_0x5177('0x69')](_0x4fce32)){return _[_0x5177('0x37')](_0x4fce32,function(_0x5a9bc8){return _0x5a9bc8[_0x5177('0x5f')];});}else{return;}})[_0x5177('0x49')](function(_0xcbbb73){if(_0xcbbb73)_0x3d845e=_0xcbbb73;if(_[_0x5177('0x68')](_0x3d845e,0x64)){var _0x43a584=_[_0x5177('0x4d')](_0x4fce32,{'sectionId':0x64});return hasDefaultDashboard(_0x43a584)[_0x5177('0x49')](function(_0x10b062){return _['map'](_0x4fce32,function(_0x2c9025){if(_0x2c9025['sectionId']===0x64){_0x2c9025[_0x5177('0x6a')]=_0x10b062;}return _0x2c9025;});});}else{return;}})[_0x5177('0x49')](function(_0x46d726){if(_0x46d726)_0x4fce32=_0x46d726;if(_[_0x5177('0x68')](_0x3d845e,0x3eb)){var _0x4ea67b=_[_0x5177('0x4d')](_0x4fce32,{'sectionId':0x3eb});return getCustomDashboards(_0x4ea67b)[_0x5177('0x49')](function(_0x52f8ca){return _[_0x5177('0x37')](_0x4fce32,function(_0x30c2dc){if(_0x4ea67b['enabled']){if(_0x30c2dc[_0x5177('0x5f')]===0x3eb){_0x30c2dc['subsections']=_0x52f8ca;}}else{if(_0x30c2dc[_0x5177('0x5f')]===0x64){_0x30c2dc['subsections']=_0x52f8ca;}}return _0x30c2dc;});});}else{return;}})['then'](function(_0x5cd8a1){if(_0x5cd8a1)_0x4fce32=_0x5cd8a1;if(_[_0x5177('0x68')](_0x3d845e,0x709)){var _0x348da7=_[_0x5177('0x4d')](_0x4fce32,{'sectionId':0x709});return getPlugins(_0x348da7)['then'](function(_0x34f74c){if(_0x348da7[_0x5177('0x6b')]){return _[_0x5177('0x37')](_0x4fce32,function(_0x3b68b2){if(_0x3b68b2[_0x5177('0x5f')]===0x709){_0x3b68b2['subsections']=_0x34f74c;}return _0x3b68b2;});}else{var _0x346d91={'sectionId':0x76c,'enabled':0x1,'subsections':_0x34f74c};var _0x1dccb4=_['map'](_0x4fce32);_0x1dccb4[_0x5177('0x6c')](_0x346d91);return _0x1dccb4;}});}else{return;}})['then'](function(_0x5b8953){if(_0x5b8953)_0x4fce32=_0x5b8953;return _['filter'](_0x4fce32,[_0x5177('0x6b'),0x1]);})[_0x5177('0x49')](respondWithResult(_0x41a7fa,null))[_0x5177('0x4e')](handleError(_0x41a7fa,null));};function hasDefaultDashboard(_0x11cce2){var _0x3447b9=[0x65];return new BPromise(function(_0x2d4619,_0x4ba911){try{if(_0x11cce2['autoAssociation']){_0x2d4619(_0x3447b9);}else{return db[_0x5177('0x5e')][_0x5177('0x6d')]({'where':{'sectionId':_0x11cce2['id']},'raw':!![]})[_0x5177('0x49')](function(_0x550197){_0x550197?_0x2d4619(_0x3447b9):_0x2d4619();});}}catch(_0x405b03){_0x4ba911(_0x405b03);}});}function getCustomDashboards(_0x2f2939){var _0x4ee41d=[];return new BPromise(function(_0x43e2ee,_0x568174){try{if(_0x2f2939[_0x5177('0x5d')]){return db[_0x5177('0x6e')][_0x5177('0x5b')]({'raw':!![]})['then'](function(_0x33b82b){_0x33b82b['forEach'](function(_0x11dbd1){_0x4ee41d[_0x5177('0x6c')](_0x11dbd1['id']+0x1869f);});_0x43e2ee(_0x4ee41d);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x2f2939['id']},'raw':!![]})['then'](function(_0x249b0f){_0x249b0f['forEach'](function(_0x34b17e){_0x4ee41d[_0x5177('0x6c')](_0x34b17e[_0x5177('0x6f')]+0x1869f);});_0x43e2ee(_0x4ee41d);});}}catch(_0x57adf4){_0x568174(_0x57adf4);}});}function getPlugins(_0x5e4963){var _0x5e870f=[];return new BPromise(function(_0x10ad1c,_0x3a9b08){try{if(_0x5e4963[_0x5177('0x5d')]){return db['Plugin'][_0x5177('0x5b')]({'raw':!![]})[_0x5177('0x49')](function(_0x5225a4){_0x5225a4[_0x5177('0x70')](function(_0x526459){_0x5e870f[_0x5177('0x6c')](_0x526459['id']+0x15b38);});_0x10ad1c(_0x5e870f);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x5e4963['id']},'raw':!![]})['then'](function(_0x3940dd){_0x3940dd['forEach'](function(_0x16426e){_0x5e870f[_0x5177('0x6c')](_0x16426e[_0x5177('0x6f')]+0x15b38);});_0x10ad1c(_0x5e870f);});}}catch(_0x1372ad){_0x3a9b08(_0x1372ad);}});}exports[_0x5177('0x71')]=function(_0x197377,_0x580d34){return db[_0x5177('0x34')][_0x5177('0x4d')]({'where':{'id':_0x197377['params']['id']}})[_0x5177('0x49')](handleEntityNotFound(_0x580d34,null))[_0x5177('0x49')](function(_0x1e64fa){if(_0x1e64fa){return db['sequelize']['transaction'](function(_0x5de7f4){return db[_0x5177('0x5a')][_0x5177('0x5b')]({'where':{'userProfileId':_0x197377[_0x5177('0x4b')]['id']},'attributes':['id'],'raw':!![]})[_0x5177('0x49')](function(_0x10dc41){if(_0x10dc41){return db[_0x5177('0x5a')][_0x5177('0x30')]({'where':{'userProfileId':_0x197377[_0x5177('0x4b')]['id'],'id':_[_0x5177('0x37')](_0x10dc41,function(_0x107705){return _0x107705['id'];})},'transaction':_0x5de7f4});}})[_0x5177('0x49')](function(_0x39f1db){var _0x59930d=_[_0x5177('0x37')](_0x197377['body'],function(_0x2f254e){_0x2f254e[_0x5177('0x64')]=_0x197377[_0x5177('0x4b')]['id'];return _0x2f254e;});return db['UserProfileSection'][_0x5177('0x72')](_0x59930d,{'raw':!![],'transaction':_0x5de7f4});})[_0x5177('0x49')](function(_0x3867c9){var _0x221a4e=_[_0x5177('0x46')](_[_0x5177('0x37')](_0x3867c9,function(_0x2c9c12){return _0x2c9c12[_0x5177('0x53')]({'plain':!![]});}),{'includeAll':![]});if(_0x221a4e){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x197377[_0x5177('0x4b')]['id'],'sectionId':_['map'](_0x221a4e,function(_0x2e8e26){return _0x2e8e26[_0x5177('0x5f')];})},'attributes':['id','sectionId'],'raw':!![]})[_0x5177('0x49')](function(_0x1fb680){var _0x54efd0=_[_0x5177('0x37')](_0x197377[_0x5177('0x56')],function(_0x2458a9){_0x2458a9[_0x5177('0x64')]=_0x197377[_0x5177('0x4b')]['id'];return _0x2458a9;});return db[_0x5177('0x5e')][_0x5177('0x72')](_0x54efd0,{'raw':!![],'transaction':_0x5de7f4});});}})[_0x5177('0x4e')](handleError(_0x580d34,null));});}})[_0x5177('0x49')](function(_0x8c0153){var _0x3cd09d=_[_0x5177('0x37')](_0x8c0153,function(_0xf2635c){return _0xf2635c['get']({'plain':!![]});});})[_0x5177('0x49')](respondWithResult(_0x580d34,null))[_0x5177('0x4e')](handleError(_0x580d34,null));};exports[_0x5177('0x73')]=function(_0x4e5ee8,_0x363010,_0xa08446){return db['UserProfile'][_0x5177('0x4d')]({'where':{'id':_0x4e5ee8['params']['id']}})['then'](handleEntityNotFound(_0x363010,null))[_0x5177('0x49')](function(_0x1eaea0){if(_0x1eaea0){return _0x1eaea0[_0x5177('0x73')](_0x4e5ee8[_0x5177('0x38')][_0x5177('0x66')]);}})[_0x5177('0x49')](respondWithStatusCode(_0x363010,null))['catch'](handleError(_0x363010,null));};exports[_0x5177('0x74')]=function(_0xcb831c,_0x48c814){var _0x1aa8ca={};if(!_0xcb831c[_0x5177('0x38')][_0x5177('0x75')])throw new Error(_0x5177('0x76'));if(!_0xcb831c[_0x5177('0x38')][_0x5177('0x40')](_0x5177('0x41'))){_0x1aa8ca[_0x5177('0x28')]=qs['limit'](_0xcb831c[_0x5177('0x38')]['limit']);_0x1aa8ca[_0x5177('0x26')]=qs['offset'](_0xcb831c[_0x5177('0x38')][_0x5177('0x26')]);}return db[_0x5177('0x34')][_0x5177('0x4d')]({'where':{'id':_0xcb831c['params']['id']}})[_0x5177('0x49')](function(_0x1b7c52){if(!_0x1b7c52)throw new Error(_0x5177('0x77')+_0xcb831c[_0x5177('0x4b')]['id']);return db['UserProfile']['getResources'](_0xcb831c);})['then'](respondWithFilteredResult(_0x48c814,_0x1aa8ca))['catch'](handleError(_0x48c814,null));};
\ No newline at end of file
index 5016905..61f12be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeb3=['remove','emit','hook','../../mysqldb','UserProfile','setMaxListeners'];(function(_0x475529,_0x8fb3cd){var _0x47e30d=function(_0x38e60e){while(--_0x38e60e){_0x475529['push'](_0x475529['shift']());}};_0x47e30d(++_0x8fb3cd);}(_0xdeb3,0xb7));var _0x3deb=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xdeb3[_0xfae23b];return _0x200640;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0x3deb('0x0'))['db'][_0x3deb('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x3deb('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x3deb('0x3')};function emitEvent(_0x2e9b78){return function(_0x365134,_0x3114e7,_0x23bc12){UserProfileEvents['emit'](_0x2e9b78+':'+_0x365134['id'],_0x365134);UserProfileEvents[_0x3deb('0x4')](_0x2e9b78,_0x365134);_0x23bc12(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0x3deb('0x5')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
+var _0x81d4=['hook','exports','../../mysqldb','UserProfile','save','update','remove','emit','hasOwnProperty'];(function(_0x53e7a2,_0x3f252e){var _0x2d9378=function(_0x376045){while(--_0x376045){_0x53e7a2['push'](_0x53e7a2['shift']());}};_0x2d9378(++_0x3f252e);}(_0x81d4,0x197));var _0x481d=function(_0x29e181,_0x3028a8){_0x29e181=_0x29e181-0x0;var _0x4b544f=_0x81d4[_0x29e181];return _0x4b544f;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0x481d('0x0'))['db'][_0x481d('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x481d('0x2'),'afterUpdate':_0x481d('0x3'),'afterDestroy':_0x481d('0x4')};function emitEvent(_0x5b69a0){return function(_0x5af777,_0x37813e,_0x1a9ee1){UserProfileEvents[_0x481d('0x5')](_0x5b69a0+':'+_0x5af777['id'],_0x5af777);UserProfileEvents['emit'](_0x5b69a0,_0x5af777);_0x1a9ee1(null);};}for(var e in events){if(events[_0x481d('0x6')](e)){var event=events[e];UserProfile[_0x481d('0x7')](e,emitEvent(event));}}module[_0x481d('0x8')]=UserProfileEvents;
\ No newline at end of file
index 41be778..f2dd867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['extractedreports','Reports','reportId','metrics','AnalyticMetric','slice','Sequelize','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','where','sequelize','query','toString','OpenTabs','define','UserProfile','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','all','ignore','union','autoAssociation','rawAttributes','keys','filters','intersection','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','pick','VIRTUAL','foreignKey','forEach','merge','options','includeAll','default','DefaultReports','custom','CustomReports','count','include','Tag','color','tag','ThroughTags','rows','openTabs','true','chat','sms','dataValues','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','models','filter','field','value','findAll','then','map','catch','model','associatedResources','name','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','JscriptyProject','contacts','CmContact','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','ChatQueue','chatwebsites','ChatWebsite','FaxQueue','FaxAccount','internalroutes','VoiceExtension','contexts','VoiceContext','VoiceMail','voicerecordings','User','membername','role','VoiceQueues','queue','VoiceQueue','inbound','outbound','musiconholds','VoiceMusicOnHold','voiceprefixes','VoicePrefix','ivrcampaigns','mailqueues','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','QueueCampaigns','users','agents','Users','admin','user','Agents','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','dispositions','customdashboards','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','templates','Template','triggers','trunks','Trunk','variables','Variable','Plugin'];(function(_0x44c5c1,_0x4d9d55){var _0x467172=function(_0x584e24){while(--_0x584e24){_0x44c5c1['push'](_0x44c5c1['shift']());}};_0x467172(++_0x4d9d55);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x43dece,_0xd66879){_0x43dece=_0x43dece-0x0;var _0x1290ba=_0x3f8a[_0x43dece];return _0x1290ba;};'use strict';var _=require(_0xa3f8('0x0'));var attributes=require(_0xa3f8('0x1'));var qs=require(_0xa3f8('0x2'));var squel=require(_0xa3f8('0x3'));module['exports']=function(_0x467a6c){var _0x143375=_0x467a6c[_0xa3f8('0x4')];function _0x15b6aa(_0x2553fd,_0x2847b4){return new Promise(function(_0x39d2e4,_0x471464){if(!_0x2847b4)return _0x39d2e4(null);var _0x1f160a=_0x2847b4[_0xa3f8('0x5')]?{[_0x2847b4[_0xa3f8('0x5')][_0xa3f8('0x6')]]:_0x2847b4[_0xa3f8('0x5')][_0xa3f8('0x7')]}:undefined;return _0x143375[_0x2553fd][_0xa3f8('0x8')]({'where':_0x1f160a,'raw':!![]})[_0xa3f8('0x9')](function(_0xcdb0d4){_0x2847b4['associatedResources']=_[_0xa3f8('0xa')](_0xcdb0d4,'id');_0x39d2e4(_0x2847b4);})[_0xa3f8('0xb')](function(_0x3c1833){_0x471464(_0x3c1833);});});}function _0x22dcda(_0x53cf1f,_0x206b69){return new Promise(function(_0x26f0a0,_0x414bd7){var _0x24f421=_0x53cf1f[_0xa3f8('0x5')]?{[_0x53cf1f[_0xa3f8('0x5')][_0xa3f8('0x6')]]:_0x53cf1f[_0xa3f8('0x5')][_0xa3f8('0x7')]}:undefined;return _0x143375[_0x53cf1f[_0xa3f8('0xc')]][_0xa3f8('0x8')]({'where':_0x24f421,'raw':!![]})[_0xa3f8('0x9')](function(_0x5b2c33){_0x206b69[_0xa3f8('0xd')]=_[_0xa3f8('0xa')](_0x5b2c33,function(_0x45014f){return _0x45014f[_0xa3f8('0xe')];});_0x26f0a0(_0x206b69);})['catch'](function(_0x39c450){_0x414bd7(_0x39c450);});});}function _0x33b98e(_0x46a8d9,_0x8cd130,_0x45ef64){if(!_0x8cd130)return Promise[_0xa3f8('0xf')](null);return new Promise(function(_0x2f0659,_0x3e2e1c){return _0x143375[_0xa3f8('0x10')][_0xa3f8('0x8')]({'where':{'sectionId':_0x8cd130['id']},'raw':!![]})['then'](function(_0x3ad8cd){if(_0x46a8d9['field']&&_0x46a8d9[_0xa3f8('0x6')]!=='id'){_0x8cd130[_0xa3f8('0xd')]=_[_0xa3f8('0xa')](_0x3ad8cd,function(_0x46042d){return _0x46042d[_0x46a8d9['field']];});}else{if(_0x45ef64===_0xa3f8('0x11')){_0x8cd130['associatedResources']=_[_0xa3f8('0xa')](_0x3ad8cd,function(_0x58336d){return{'id':_0x58336d[_0xa3f8('0x12')],'type':_0x58336d[_0xa3f8('0x13')]};});}else{_0x8cd130[_0xa3f8('0xd')]=_[_0xa3f8('0xa')](_0x3ad8cd,function(_0x3a6a57){return _0x3a6a57[_0xa3f8('0x12')];});}}_0x2f0659(_0x8cd130);})[_0xa3f8('0xb')](function(_0x490717){_0x3e2e1c(_0x490717);});});}function _0xae76ec(_0x4d0e72,_0x3ce57b){var _0xa5a697={'parentSections':[]};switch(_0x4d0e72[_0xa3f8('0x14')]()){case _0xa3f8('0x15'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x17');break;case _0xa3f8('0x18'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x19');break;case _0xa3f8('0x1a'):_0xa5a697['childModel']=_0xa3f8('0x1b');_0xa5a697[_0xa3f8('0x1c')]=[{'name':_0xa3f8('0x1d'),'field':'name','foreignKey':_0xa3f8('0x1e')}];break;case'projects':_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x1f');break;case _0xa3f8('0x20'):_0xa5a697['childModel']=_0xa3f8('0x21');_0xa5a697['parentSections']=[{'name':_0xa3f8('0x22'),'field':'id','foreignKey':_0xa3f8('0x23')}];break;case _0xa3f8('0x24'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x25');break;case _0xa3f8('0x26'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x27');break;case _0xa3f8('0x28'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x29');break;case'chatqueues':_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x2a');break;case _0xa3f8('0x2b'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x2c');break;case'faxqueues':_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x2d');break;case'faxaccounts':_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x2e');break;case'inboundroutes':case _0xa3f8('0x2f'):case'outboundroutes':_0xa5a697['childModel']=_0xa3f8('0x30');break;case _0xa3f8('0x31'):_0xa5a697['childModel']=_0xa3f8('0x32');break;case'voicemails':_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x33');break;case _0xa3f8('0x34'):_0xa5a697[_0xa3f8('0x16')]='VoiceRecording';_0xa5a697[_0xa3f8('0x1c')]=[{'name':'Agents','field':_0xa3f8('0xe'),'foreignKey':'membername','model':_0xa3f8('0x35'),'filter':{'field':'role','value':['agent']}},{'name':'Telephones','field':_0xa3f8('0xe'),'foreignKey':_0xa3f8('0x36'),'model':_0xa3f8('0x35'),'filter':{'field':_0xa3f8('0x37'),'value':['telephone']}},{'name':_0xa3f8('0x38'),'field':_0xa3f8('0xe'),'foreignKey':_0xa3f8('0x39'),'model':_0xa3f8('0x3a'),'filter':{'field':_0xa3f8('0x13'),'value':[_0xa3f8('0x3b')]}},{'name':'QueueCampaigns','field':_0xa3f8('0xe'),'foreignKey':_0xa3f8('0x39'),'model':_0xa3f8('0x3a'),'filter':{'field':'type','value':[_0xa3f8('0x3c')]}}];break;case _0xa3f8('0x3d'):_0xa5a697['childModel']=_0xa3f8('0x3e');break;case'chanspies':_0xa5a697[_0xa3f8('0x16')]='VoiceChanSpy';break;case _0xa3f8('0x3f'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x40');break;case _0xa3f8('0x41'):_0xa5a697[_0xa3f8('0x16')]='Campaign';break;case _0xa3f8('0x42'):_0xa5a697[_0xa3f8('0x16')]='MailQueue';break;case _0xa3f8('0x43'):_0xa5a697['childModel']=_0xa3f8('0x44');break;case _0xa3f8('0x45'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x46');break;case _0xa3f8('0x47'):_0xa5a697['childModel']=_0xa3f8('0x48');break;case _0xa3f8('0x49'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x4a');break;case _0xa3f8('0x4b'):_0xa5a697['childModel']=_0xa3f8('0x4c');break;case _0xa3f8('0x4d'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x4e');break;case _0xa3f8('0x4f'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x50');break;case _0xa3f8('0x51'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x52');break;case _0xa3f8('0x53'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x54');break;case'voicequeues':case'queuecampaigns':_0xa5a697['childModel']=_0xa3f8('0x3a');if(_0x3ce57b){_0xa5a697[_0xa3f8('0x1c')]=[{'name':_0xa3f8('0x38')},{'name':_0xa3f8('0x55')}];}break;case _0xa3f8('0x56'):case _0xa3f8('0x57'):case'telephones':_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x35');if(_0x3ce57b){_0xa5a697[_0xa3f8('0x1c')]=[{'name':_0xa3f8('0x58'),'filter':{'field':'role','value':[_0xa3f8('0x59'),_0xa3f8('0x5a')]},'ignore':!![]},{'name':_0xa3f8('0x5b')},{'name':'Telephones'}];}break;case'zendeskaccounts':_0xa5a697['childModel']=_0xa3f8('0x5c');break;case _0xa3f8('0x5d'):_0xa5a697['childModel']=_0xa3f8('0x5e');break;case _0xa3f8('0x5f'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x60');break;case _0xa3f8('0x61'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x62');break;case _0xa3f8('0x63'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x64');break;case _0xa3f8('0x65'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x66');break;case _0xa3f8('0x67'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x35');break;case _0xa3f8('0x68'):_0xa5a697['childModel']='CannedAnswer';break;case _0xa3f8('0x69'):_0xa5a697[_0xa3f8('0x16')]='Disposition';break;case _0xa3f8('0x6a'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x6b');break;case _0xa3f8('0x6c'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x6d');break;case _0xa3f8('0x6e'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x6f');break;case _0xa3f8('0x70'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x71');break;case _0xa3f8('0x72'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x73');break;case _0xa3f8('0x74'):_0xa5a697['childModel']='Tag';break;case _0xa3f8('0x75'):_0xa5a697['childModel']=_0xa3f8('0x76');break;case _0xa3f8('0x77'):_0xa5a697[_0xa3f8('0x16')]='Trigger';break;case _0xa3f8('0x78'):_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x79');break;case _0xa3f8('0x7a'):_0xa5a697['childModel']=_0xa3f8('0x7b');break;case'plugins':_0xa5a697[_0xa3f8('0x16')]=_0xa3f8('0x7c');break;case _0xa3f8('0x7d'):_0xa5a697['childModel']='AnalyticExtractedReport';_0xa5a697[_0xa3f8('0x1c')]=[{'name':_0xa3f8('0x7e'),'field':'id','foreignKey':_0xa3f8('0x7f')}];break;case _0xa3f8('0x80'):_0xa5a697['childModel']=_0xa3f8('0x81');break;}return _0xa5a697;}function _0x3478e8(_0x38dba4,_0x270ffc){var _0xc60091=_0x38dba4['charAt'](0x0)['toUpperCase']()+_0x38dba4[_0xa3f8('0x82')](0x1);var _0x102107={'type':_0x143375[_0xa3f8('0x83')][_0xa3f8('0x84')][_0xa3f8('0x85')],'raw':!![]};return new Promise(function(_0x2b0af7,_0xb17e21){var _0x5a7393=squel['select']()['field'](_0xa3f8('0x86')+_0xc60091+_0xa3f8('0x87'),'id')[_0xa3f8('0x6')](_0xa3f8('0x88'))[_0xa3f8('0x89')](_0xa3f8('0x8a')+_0x38dba4+_0xa3f8('0x8b'),'ui')[_0xa3f8('0x8c')]('ui.UserId\x20=\x20?',_0x270ffc['id']);return _0x143375[_0xa3f8('0x8d')][_0xa3f8('0x8e')](_0x5a7393[_0xa3f8('0x8f')](),_0x102107)[_0xa3f8('0x9')](function(_0x27c5aa){_0x270ffc[_0xc60091+_0xa3f8('0x90')]=_0x27c5aa;_0x2b0af7(_0x27c5aa);})[_0xa3f8('0xb')](function(_0x4d0404){_0xb17e21(_0x4d0404);});});}return _0x467a6c[_0xa3f8('0x91')](_0xa3f8('0x92'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x23614c){var _0x331629={'raw':![],'where':{}};var _0x44d566={};var _0x2bf252={'count':0x0,'rows':[]};var _0x11f5f7=_0x23614c[_0xa3f8('0x8e')][_0xa3f8('0x93')];var _0x4a2f72=_0x23614c['query'][_0xa3f8('0x94')]||![];var _0x5a61f1=_0xae76ec(_0x11f5f7,_0x4a2f72);if(!_0x5a61f1[_0xa3f8('0x16')])throw new Error(_0xa3f8('0x95')+_0x11f5f7+'\x27');var _0x3ff369=[{'name':_0x11f5f7}];if(!_[_0xa3f8('0x96')](_0x5a61f1[_0xa3f8('0x1c')]))_0x3ff369=_0x5a61f1[_0xa3f8('0x1c')];var _0xeca2dc=[];for(var _0x14508d=0x0;_0x14508d<_0x3ff369[_0xa3f8('0x97')];_0x14508d++){_0xeca2dc[_0xa3f8('0x98')](_0x143375[_0xa3f8('0x99')][_0xa3f8('0x9a')]({'where':{'userProfileId':_0x23614c[_0xa3f8('0x9b')]['id'],'name':_0x3ff369[_0x14508d]['name']},'raw':!![]}));}return Promise[_0xa3f8('0x9c')](_0xeca2dc)[_0xa3f8('0x9')](function(_0x42e827){var _0x1688ca=_[_0xa3f8('0x5')](_0x42e827,function(_0x3420ec){return _0x3420ec?_0x3420ec:undefined;});var _0x4b6169=_[_0xa3f8('0x5')](_0x3ff369,[_0xa3f8('0x9d'),!![]]);var _0x1f01c1=_[_0xa3f8('0x96')](_0x1688ca)&&_[_0xa3f8('0x96')](_0x4b6169)?null:_[_0xa3f8('0x9e')](_0x4b6169,_0x1688ca);if(!_0x1f01c1)return null;var _0x3d45ae=[];for(var _0x3a2362=0x0;_0x3a2362<_0x1f01c1[_0xa3f8('0x97')];_0x3a2362++){var _0x33fef6=_[_0xa3f8('0x9a')](_0x3ff369,function(_0x5d4fe5){return _0x1f01c1[_0x3a2362]?_0x5d4fe5[_0xa3f8('0xe')]===_0x1f01c1[_0x3a2362][_0xa3f8('0xe')]:null;});if(_0x33fef6){if(_0x1f01c1[_0x3a2362]['ignore']){_0x3d45ae['push'](_0x15b6aa(_0x5a61f1[_0xa3f8('0x16')],_0x1f01c1[_0x3a2362]));}else{if(!_0x1f01c1[_0x3a2362][_0xa3f8('0x9f')]){_0x3d45ae[_0xa3f8('0x98')](_0x33b98e(_0x33fef6,_0x1f01c1[_0x3a2362],_0x5a61f1[_0xa3f8('0x16')]));}else{if(_0x33fef6[_0xa3f8('0xc')]){_0x3d45ae[_0xa3f8('0x98')](_0x22dcda(_0x33fef6,_0x1f01c1[_0x3a2362]));}}}}}return Promise[_0xa3f8('0x9c')](_0x3d45ae);})[_0xa3f8('0x9')](function(_0x4f5f62){var _0xf76898=_0x4f5f62;var _0x3c30d0=null;if(_0xf76898){_0x3c30d0=_0xf76898[_0xa3f8('0x97')]===0x1?_0xf76898[0x0]:null;}if(!_0x3c30d0&&!_0xf76898)return _0x2bf252;var _0x52f3ae=_0x143375[_0x5a61f1[_0xa3f8('0x16')]][_0xa3f8('0xa0')];_0x44d566['model']=_[_0xa3f8('0xa1')](_0x52f3ae);_0x44d566[_0xa3f8('0x8e')]=_[_0xa3f8('0xa1')](_0x23614c[_0xa3f8('0x8e')]);_0x44d566[_0xa3f8('0xa2')]=_[_0xa3f8('0xa3')](_0x44d566[_0xa3f8('0xc')],_0x44d566[_0xa3f8('0x8e')]);_0x331629[_0xa3f8('0xa4')]=_['intersection'](_0x44d566[_0xa3f8('0xc')],qs['fields'](_0x23614c[_0xa3f8('0x8e')]['fields']));_0x331629[_0xa3f8('0xa4')]=_0x331629[_0xa3f8('0xa4')][_0xa3f8('0x97')]?_0x331629[_0xa3f8('0xa4')]:_0x44d566[_0xa3f8('0xc')];if(!_0x23614c['query'][_0xa3f8('0xa5')](_0xa3f8('0xa6'))){_0x331629['limit']=qs[_0xa3f8('0xa7')](_0x23614c[_0xa3f8('0x8e')][_0xa3f8('0xa7')]);_0x331629[_0xa3f8('0xa8')]=qs[_0xa3f8('0xa8')](_0x23614c[_0xa3f8('0x8e')]['offset']);}_0x331629[_0xa3f8('0xa9')]=qs[_0xa3f8('0xaa')](_0x23614c[_0xa3f8('0x8e')]['sort']);_0x331629[_0xa3f8('0x8c')]=qs['filters'](_[_0xa3f8('0xab')](_0x23614c['query'],_0x44d566['filters']));if(_0x23614c[_0xa3f8('0x8e')]['filter']){_0x331629[_0xa3f8('0x8c')]=_['merge'](_0x331629[_0xa3f8('0x8c')],{'$or':_[_0xa3f8('0xa')](_0x52f3ae,function(_0x279131){if(_0x279131[_0xa3f8('0x13')]['key']!==_0xa3f8('0xac')){var _0x35db48={};_0x35db48[_0x279131['field']]={'$like':'%'+_0x23614c[_0xa3f8('0x8e')][_0xa3f8('0x5')]+'%'};return _0x35db48;}})});}var _0x3715ea=[];var _0x345089=null;var _0x25d8c1={};if(_0x3c30d0){_0x345089=_[_0xa3f8('0x9a')](_0x3ff369,[_0xa3f8('0xe'),_0x3c30d0[_0xa3f8('0xe')]]);if(_0x345089[_0xa3f8('0x6')]){_0x25d8c1={};if(_0x5a61f1[_0xa3f8('0x16')]==='AnalyticExtractedReport'){_0x25d8c1[_0x345089[_0xa3f8('0xad')]]=_[_0xa3f8('0xa')](_0x3c30d0[_0xa3f8('0xd')],'id');}else{_0x25d8c1[_0x345089[_0xa3f8('0xad')]]=_0x3c30d0[_0xa3f8('0xd')];}_0x3715ea[_0xa3f8('0x98')](_0x25d8c1);}else{_0x331629[_0xa3f8('0x8c')]['id']=_0x3c30d0[_0xa3f8('0xd')];}}else{for(var _0x32f937=0x0;_0x32f937<_0xf76898['length'];_0x32f937++){_0x345089=_[_0xa3f8('0x9a')](_0x3ff369,[_0xa3f8('0xe'),_0xf76898[_0x32f937][_0xa3f8('0xe')]]);if(_0x345089[_0xa3f8('0x6')]){_0x25d8c1={};_0x25d8c1[_0x345089[_0xa3f8('0xad')]]=_0xf76898[_0x32f937][_0xa3f8('0xd')];_0x3715ea['push'](_0x25d8c1);}else{if(!_0x331629[_0xa3f8('0x8c')]['id'])_0x331629[_0xa3f8('0x8c')]['id']=[];_0xf76898[_0x32f937][_0xa3f8('0xd')][_0xa3f8('0xae')](function(_0x4c47e6){_0x331629[_0xa3f8('0x8c')]['id'][_0xa3f8('0x98')](_0x4c47e6);});}}}if(!_[_0xa3f8('0x96')](_0x3715ea)){_0x331629[_0xa3f8('0x8c')]=_[_0xa3f8('0xaf')](_0x331629[_0xa3f8('0x8c')],{'$and':{'$or':_0x3715ea}});}_0x331629=_[_0xa3f8('0xaf')]({},_0x331629,_0x23614c[_0xa3f8('0xb0')]);if(_0x3c30d0&&!_0x3c30d0[_0xa3f8('0x9f')]&&_0x5a61f1[_0xa3f8('0x16')]===_0xa3f8('0x11')){if(_0x23614c['query'][_0xa3f8('0xb1')]){_0x331629['include']=[{'all':!![]}];}return _0x143375[_0x5a61f1[_0xa3f8('0x16')]][_0xa3f8('0x8')](_0x331629)[_0xa3f8('0x9')](function(_0x6a1e95){var _0x5b0ed5=[];_0x6a1e95[_0xa3f8('0xae')](function(_0x3d9702){var _0x365688;switch(_0x3d9702['reportType']){case _0xa3f8('0xb2'):_0x365688=_['find'](_0x3c30d0[_0xa3f8('0xd')],function(_0x52fcc3){return _0x52fcc3['id']===_0x3d9702[_0xa3f8('0x7f')]&&_0x52fcc3['type']===_0xa3f8('0xb3');});break;case _0xa3f8('0xb4'):_0x365688=_[_0xa3f8('0x9a')](_0x3c30d0[_0xa3f8('0xd')],function(_0x4f333f){return _0x4f333f['id']===_0x3d9702[_0xa3f8('0x7f')]&&_0x4f333f[_0xa3f8('0x13')]===_0xa3f8('0xb5');});break;}if(_0x365688)_0x5b0ed5[_0xa3f8('0x98')](_0x3d9702);});_0x2bf252[_0xa3f8('0xb6')]=_0x5b0ed5[_0xa3f8('0x97')];_0x2bf252['rows']=_0x5b0ed5;return _0x2bf252;});}else{return _0x143375[_0x5a61f1[_0xa3f8('0x16')]][_0xa3f8('0xb6')]({'where':_0x331629[_0xa3f8('0x8c')]})[_0xa3f8('0x9')](function(_0x477b0a){_0x2bf252['count']=_0x477b0a;if(_0x23614c[_0xa3f8('0x8e')][_0xa3f8('0xb1')]){if(_0x5a61f1['childModel']===_0xa3f8('0x21')){_0x331629[_0xa3f8('0xb7')]=[{'model':_0x143375[_0xa3f8('0xb8')],'as':'Tags','attributes':['id',_0xa3f8('0xe'),_0xa3f8('0xb9')],'required':_0x23614c[_0xa3f8('0x8e')][_0xa3f8('0xba')]?!![]:![]},{'model':_0x143375[_0xa3f8('0xb8')],'as':_0xa3f8('0xbb'),'attributes':['id',_0xa3f8('0xe'),'color'],'through':_0x23614c[_0xa3f8('0x8e')][_0xa3f8('0xba')]?{'attributes':[],'where':{'TagId':_0x23614c['query'][_0xa3f8('0xba')]||undefined}}:{},'required':_0x23614c[_0xa3f8('0x8e')][_0xa3f8('0xba')]?!![]:![]}];}else{_0x331629[_0xa3f8('0xb7')]=[{'all':!![]}];}}return _0x143375[_0x5a61f1[_0xa3f8('0x16')]][_0xa3f8('0x8')](_0x331629);})[_0xa3f8('0x9')](function(_0x525a21){_0x2bf252[_0xa3f8('0xbc')]=_0x525a21;if(_0x11f5f7===_0xa3f8('0x5b')&&_0x23614c[_0xa3f8('0x8e')][_0xa3f8('0xbd')]===_0xa3f8('0xbe')){var _0x1673ac=[];for(var _0xb1dca4=0x0;_0xb1dca4<_0x2bf252['rows'][_0xa3f8('0x97')];_0xb1dca4++){_0x1673ac[_0xa3f8('0x98')](_0x3478e8(_0xa3f8('0xbf'),_0x2bf252[_0xa3f8('0xbc')][_0xb1dca4]['dataValues']));_0x1673ac['push'](_0x3478e8(_0xa3f8('0xc0'),_0x2bf252['rows'][_0xb1dca4][_0xa3f8('0xc1')]));_0x1673ac[_0xa3f8('0x98')](_0x3478e8(_0xa3f8('0xc2'),_0x2bf252['rows'][_0xb1dca4]['dataValues']));_0x1673ac[_0xa3f8('0x98')](_0x3478e8(_0xa3f8('0xc3'),_0x2bf252[_0xa3f8('0xbc')][_0xb1dca4][_0xa3f8('0xc1')]));_0x1673ac['push'](_0x3478e8(_0xa3f8('0xc4'),_0x2bf252['rows'][_0xb1dca4][_0xa3f8('0xc1')]));_0x1673ac[_0xa3f8('0x98')](_0x3478e8(_0xa3f8('0xc5'),_0x2bf252['rows'][_0xb1dca4]['dataValues']));}return Promise['all'](_0x1673ac)[_0xa3f8('0x9')](function(){return _0x2bf252;});}return _0x2bf252;});}});}}});};
\ No newline at end of file
+var _0x89b3=['smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','users','agents','telephones','zendeskaccounts','salesforceaccounts','SalesforceAccount','FreshdeskAccount','SugarcrmAccount','deskaccounts','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','dispositions','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','templates','Template','trunks','Trunk','plugins','Plugin','metrics','AnalyticMetric','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','section','mergeResources','isEmpty','push','find','all','ignore','union','length','autoAssociation','rawAttributes','keys','filters','intersection','fields','attributes','hasOwnProperty','limit','offset','order','sort','pick','key','VIRTUAL','foreignKey','forEach','merge','options','includeAll','include','reportType','default','reportId','custom','rows','count','Tags','color','tag','ThroughTags','true','chat','dataValues','sms','fax','mail','openchannel','lodash','./userProfile.attributes','../../components/parsers/qs','exports','filter','field','then','map','value','model','findAll','associatedResources','name','catch','AnalyticExtractedReport','resourceId','type','squareprojects','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','projects','JscriptyProject','contacts','CmContact','parentSections','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','chatqueues','ChatQueue','ChatWebsite','faxqueues','faxaccounts','FaxAccount','inboundroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','VoiceMail','VoiceRecording','Agents','membername','User','agent','Telephones','telephone','VoiceQueues','VoiceQueue','inbound','QueueCampaigns','queue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount'];(function(_0x353cf4,_0x43aac9){var _0x1a00a1=function(_0x26b201){while(--_0x26b201){_0x353cf4['push'](_0x353cf4['shift']());}};_0x1a00a1(++_0x43aac9);}(_0x89b3,0x12a));var _0x389b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x89b3[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x389b('0x0'));var attributes=require(_0x389b('0x1'));var qs=require(_0x389b('0x2'));module[_0x389b('0x3')]=function(_0x536dc5){var _0x15bf46=_0x536dc5['models'];function _0x1edcd3(_0x4b0ebd,_0x8c6747){return new Promise(function(_0x568b0d,_0x4f625a){if(!_0x8c6747)return _0x568b0d(null);var _0x2e3973=_0x8c6747[_0x389b('0x4')]?{[_0x8c6747[_0x389b('0x4')][_0x389b('0x5')]]:_0x8c6747[_0x389b('0x4')]['value']}:undefined;return _0x15bf46[_0x4b0ebd]['findAll']({'where':_0x2e3973,'raw':!![]})[_0x389b('0x6')](function(_0x3d0e7b){_0x8c6747['associatedResources']=_[_0x389b('0x7')](_0x3d0e7b,'id');_0x568b0d(_0x8c6747);})['catch'](function(_0x5109af){_0x4f625a(_0x5109af);});});}function _0x28b59c(_0x14a2f8,_0x45ea90){return new Promise(function(_0x5097ba,_0x3b28bc){var _0x14b0bd=_0x14a2f8[_0x389b('0x4')]?{[_0x14a2f8['filter'][_0x389b('0x5')]]:_0x14a2f8[_0x389b('0x4')][_0x389b('0x8')]}:undefined;return _0x15bf46[_0x14a2f8[_0x389b('0x9')]][_0x389b('0xa')]({'where':_0x14b0bd,'raw':!![]})[_0x389b('0x6')](function(_0x56b63b){_0x45ea90[_0x389b('0xb')]=_[_0x389b('0x7')](_0x56b63b,function(_0x436abc){return _0x436abc[_0x389b('0xc')];});_0x5097ba(_0x45ea90);})[_0x389b('0xd')](function(_0x1b5832){_0x3b28bc(_0x1b5832);});});}function _0x4fc756(_0xfaa2bd,_0x415758,_0x457d1e){if(!_0x415758)return resolve(null);return new Promise(function(_0x3ca88,_0xd4a0cf){return _0x15bf46['UserProfileResource'][_0x389b('0xa')]({'where':{'sectionId':_0x415758['id']},'raw':!![]})[_0x389b('0x6')](function(_0x208b60){if(_0xfaa2bd[_0x389b('0x5')]&&_0xfaa2bd[_0x389b('0x5')]!=='id'){_0x415758[_0x389b('0xb')]=_[_0x389b('0x7')](_0x208b60,function(_0x552617){return _0x552617[_0xfaa2bd[_0x389b('0x5')]];});}else{if(_0x457d1e===_0x389b('0xe')){_0x415758[_0x389b('0xb')]=_[_0x389b('0x7')](_0x208b60,function(_0x155010){return{'id':_0x155010[_0x389b('0xf')],'type':_0x155010[_0x389b('0x10')]};});}else{_0x415758[_0x389b('0xb')]=_['map'](_0x208b60,function(_0x31e786){return _0x31e786['resourceId'];});}}_0x3ca88(_0x415758);})[_0x389b('0xd')](function(_0x5de061){_0xd4a0cf(_0x5de061);});});}function _0x4f10b1(_0x5f329f,_0xc67f36){var _0x1f91b2={'parentSections':[]};switch(_0x5f329f['toLowerCase']()){case _0x389b('0x11'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x13');break;case _0x389b('0x14'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x15');break;case'squarerecordings':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x16');_0x1f91b2['parentSections']=[{'name':'SquareProjects','field':_0x389b('0xc'),'foreignKey':'projectName'}];break;case _0x389b('0x17'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x18');break;case _0x389b('0x19'):_0x1f91b2['childModel']=_0x389b('0x1a');_0x1f91b2[_0x389b('0x1b')]=[{'name':_0x389b('0x1c'),'field':'id','foreignKey':_0x389b('0x1d')}];break;case _0x389b('0x1e'):_0x1f91b2['childModel']=_0x389b('0x1f');break;case _0x389b('0x20'):_0x1f91b2['childModel']=_0x389b('0x21');break;case _0x389b('0x22'):_0x1f91b2[_0x389b('0x12')]='CmCustomField';break;case _0x389b('0x23'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x24');break;case'chatwebsites':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x25');break;case _0x389b('0x26'):_0x1f91b2['childModel']='FaxQueue';break;case _0x389b('0x27'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x28');break;case _0x389b('0x29'):case'internalroutes':case _0x389b('0x2a'):_0x1f91b2['childModel']=_0x389b('0x2b');break;case _0x389b('0x2c'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x2d');break;case'voicemails':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x2e');break;case'voicerecordings':_0x1f91b2['childModel']=_0x389b('0x2f');_0x1f91b2[_0x389b('0x1b')]=[{'name':_0x389b('0x30'),'field':_0x389b('0xc'),'foreignKey':_0x389b('0x31'),'model':_0x389b('0x32'),'filter':{'field':'role','value':[_0x389b('0x33')]}},{'name':_0x389b('0x34'),'field':'name','foreignKey':_0x389b('0x31'),'model':_0x389b('0x32'),'filter':{'field':'role','value':[_0x389b('0x35')]}},{'name':_0x389b('0x36'),'field':_0x389b('0xc'),'foreignKey':'queue','model':_0x389b('0x37'),'filter':{'field':'type','value':[_0x389b('0x38')]}},{'name':_0x389b('0x39'),'field':_0x389b('0xc'),'foreignKey':_0x389b('0x3a'),'model':_0x389b('0x37'),'filter':{'field':'type','value':[_0x389b('0x3b')]}}];break;case _0x389b('0x3c'):_0x1f91b2['childModel']=_0x389b('0x3d');break;case _0x389b('0x3e'):_0x1f91b2['childModel']=_0x389b('0x3f');break;case'voiceprefixes':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x40');break;case _0x389b('0x41'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x42');break;case _0x389b('0x43'):_0x1f91b2['childModel']=_0x389b('0x44');break;case'mailaccounts':_0x1f91b2['childModel']=_0x389b('0x45');break;case _0x389b('0x46'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x47');break;case _0x389b('0x48'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x49');break;case _0x389b('0x4a'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x4b');break;case _0x389b('0x4c'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x4d');break;case _0x389b('0x4e'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x4f');break;case _0x389b('0x50'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x51');break;case _0x389b('0x52'):_0x1f91b2['childModel']=_0x389b('0x53');break;case _0x389b('0x54'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x55');break;case'voicequeues':case'queuecampaigns':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x37');if(_0xc67f36){_0x1f91b2[_0x389b('0x1b')]=[{'name':_0x389b('0x36')},{'name':'QueueCampaigns'}];}break;case _0x389b('0x56'):case _0x389b('0x57'):case _0x389b('0x58'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x32');if(_0xc67f36){_0x1f91b2[_0x389b('0x1b')]=[{'name':'Users','filter':{'field':'role','value':['admin','user']},'ignore':!![]},{'name':_0x389b('0x30')},{'name':_0x389b('0x34')}];}break;case _0x389b('0x59'):_0x1f91b2[_0x389b('0x12')]='ZendeskAccount';break;case _0x389b('0x5a'):_0x1f91b2['childModel']=_0x389b('0x5b');break;case'freshdeskaccounts':_0x1f91b2['childModel']=_0x389b('0x5c');break;case'sugarcrmaccounts':_0x1f91b2[_0x389b('0x12')]=_0x389b('0x5d');break;case _0x389b('0x5e'):_0x1f91b2[_0x389b('0x12')]='DeskAccount';break;case _0x389b('0x5f'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x60');break;case _0x389b('0x61'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x32');break;case _0x389b('0x62'):_0x1f91b2[_0x389b('0x12')]='CannedAnswer';break;case _0x389b('0x63'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x64');break;case _0x389b('0x65'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x66');break;case _0x389b('0x67'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x68');break;case _0x389b('0x69'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x6a');break;case _0x389b('0x6b'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x6c');break;case _0x389b('0x6d'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x6e');break;case _0x389b('0x6f'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x70');break;case _0x389b('0x71'):_0x1f91b2['childModel']=_0x389b('0x72');break;case'triggers':_0x1f91b2[_0x389b('0x12')]='Trigger';break;case _0x389b('0x73'):_0x1f91b2['childModel']=_0x389b('0x74');break;case'variables':_0x1f91b2[_0x389b('0x12')]='Variable';break;case _0x389b('0x75'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x76');break;case'extractedreports':_0x1f91b2[_0x389b('0x12')]=_0x389b('0xe');_0x1f91b2[_0x389b('0x1b')]=[{'name':'Reports','field':'id','foreignKey':'reportId'}];break;case _0x389b('0x77'):_0x1f91b2[_0x389b('0x12')]=_0x389b('0x78');break;case'whatsappaccounts':_0x1f91b2['childModel']=_0x389b('0x53');break;}return _0x1f91b2;}function _0xa1fe00(_0x19f5a7,_0x1d1ea6){var _0x341ed0=_0x19f5a7['charAt'](0x0)[_0x389b('0x79')]()+_0x19f5a7[_0x389b('0x7a')](0x1);var _0x4b3f2b={'type':_0x15bf46[_0x389b('0x7b')][_0x389b('0x7c')][_0x389b('0x7d')],'raw':!![]};return new BPromise(function(_0x4796b5,_0x4ee08e){var _0x38f651=squel[_0x389b('0x7e')]()['field'](_0x389b('0x7f')+_0x341ed0+_0x389b('0x80'),'id')[_0x389b('0x5')](_0x389b('0x81'))[_0x389b('0x82')]('user_has_'+_0x19f5a7+'_interactions','ui')[_0x389b('0x83')](_0x389b('0x84'),_0x1d1ea6['id']);return _0x15bf46[_0x389b('0x85')][_0x389b('0x86')](_0x38f651[_0x389b('0x87')](),_0x4b3f2b)[_0x389b('0x6')](function(_0x215f7b){_0x1d1ea6[_0x341ed0+_0x389b('0x88')]=_0x215f7b;_0x4796b5(_0x215f7b);})[_0x389b('0xd')](function(_0xfb86a4){_0x4ee08e(_0xfb86a4);});});}return _0x536dc5[_0x389b('0x89')](_0x389b('0x8a'),attributes,{'tableName':_0x389b('0x8b'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x25a945){var _0x5dc87d={'raw':![],'where':{}};var _0x1f15c8={};var _0x21c895={'count':0x0,'rows':[]};var _0x131ac8=_0x25a945[_0x389b('0x86')][_0x389b('0x8c')];var _0x7a7817=_0x25a945['query'][_0x389b('0x8d')]||![];var _0x479e8d=_0x4f10b1(_0x131ac8,_0x7a7817);if(!_0x479e8d['childModel'])throw new Error('Invalid\x20section\x20\x27'+_0x131ac8+'\x27');var _0x319f8a=[{'name':_0x131ac8}];if(!_[_0x389b('0x8e')](_0x479e8d['parentSections']))_0x319f8a=_0x479e8d['parentSections'];var _0x5ab01f=[];for(var _0x36f84a=0x0;_0x36f84a<_0x319f8a['length'];_0x36f84a++){_0x5ab01f[_0x389b('0x8f')](_0x15bf46['UserProfileSection'][_0x389b('0x90')]({'where':{'userProfileId':_0x25a945['params']['id'],'name':_0x319f8a[_0x36f84a][_0x389b('0xc')]},'raw':!![]}));}return Promise[_0x389b('0x91')](_0x5ab01f)[_0x389b('0x6')](function(_0x2efd2a){var _0x5b65e8=_['filter'](_0x2efd2a,function(_0x452458){return _0x452458?_0x452458:undefined;});var _0x25a12b=_[_0x389b('0x4')](_0x319f8a,[_0x389b('0x92'),!![]]);var _0x55a7e9=_[_0x389b('0x8e')](_0x5b65e8)&&_['isEmpty'](_0x25a12b)?null:_[_0x389b('0x93')](_0x25a12b,_0x5b65e8);if(!_0x55a7e9)return null;var _0x55c56e=[];for(var _0x5d46fb=0x0;_0x5d46fb<_0x55a7e9[_0x389b('0x94')];_0x5d46fb++){var _0x389002=_['find'](_0x319f8a,function(_0x5a1db3){return _0x55a7e9[_0x5d46fb]?_0x5a1db3[_0x389b('0xc')]===_0x55a7e9[_0x5d46fb][_0x389b('0xc')]:null;});if(_0x389002){if(_0x55a7e9[_0x5d46fb]['ignore']){_0x55c56e[_0x389b('0x8f')](_0x1edcd3(_0x479e8d[_0x389b('0x12')],_0x55a7e9[_0x5d46fb]));}else{if(!_0x55a7e9[_0x5d46fb][_0x389b('0x95')]){_0x55c56e[_0x389b('0x8f')](_0x4fc756(_0x389002,_0x55a7e9[_0x5d46fb],_0x479e8d[_0x389b('0x12')]));}else{if(_0x389002[_0x389b('0x9')]){_0x55c56e['push'](_0x28b59c(_0x389002,_0x55a7e9[_0x5d46fb]));}}}}}return Promise['all'](_0x55c56e);})[_0x389b('0x6')](function(_0x16ec9f){var _0x3003a9=_0x16ec9f;var _0x4896fe=null;if(_0x3003a9){_0x4896fe=_0x3003a9[_0x389b('0x94')]===0x1?_0x3003a9[0x0]:null;}if(!_0x4896fe&&!_0x3003a9)return _0x21c895;var _0x5cd2c9=_0x15bf46[_0x479e8d[_0x389b('0x12')]][_0x389b('0x96')];_0x1f15c8[_0x389b('0x9')]=_[_0x389b('0x97')](_0x5cd2c9);_0x1f15c8[_0x389b('0x86')]=_[_0x389b('0x97')](_0x25a945[_0x389b('0x86')]);_0x1f15c8[_0x389b('0x98')]=_['intersection'](_0x1f15c8[_0x389b('0x9')],_0x1f15c8['query']);_0x5dc87d['attributes']=_[_0x389b('0x99')](_0x1f15c8[_0x389b('0x9')],qs[_0x389b('0x9a')](_0x25a945['query'][_0x389b('0x9a')]));_0x5dc87d[_0x389b('0x9b')]=_0x5dc87d[_0x389b('0x9b')]['length']?_0x5dc87d[_0x389b('0x9b')]:_0x1f15c8['model'];if(!_0x25a945['query'][_0x389b('0x9c')]('nolimit')){_0x5dc87d[_0x389b('0x9d')]=qs[_0x389b('0x9d')](_0x25a945[_0x389b('0x86')][_0x389b('0x9d')]);_0x5dc87d['offset']=qs[_0x389b('0x9e')](_0x25a945['query'][_0x389b('0x9e')]);}_0x5dc87d[_0x389b('0x9f')]=qs[_0x389b('0xa0')](_0x25a945['query'][_0x389b('0xa0')]);_0x5dc87d[_0x389b('0x83')]=qs[_0x389b('0x98')](_[_0x389b('0xa1')](_0x25a945[_0x389b('0x86')],_0x1f15c8[_0x389b('0x98')]));if(_0x25a945[_0x389b('0x86')][_0x389b('0x4')]){_0x5dc87d[_0x389b('0x83')]=_['merge'](_0x5dc87d[_0x389b('0x83')],{'$or':_[_0x389b('0x7')](_0x5cd2c9,function(_0x219b4f){if(_0x219b4f[_0x389b('0x10')][_0x389b('0xa2')]!==_0x389b('0xa3')){var _0x2a7947={};_0x2a7947[_0x219b4f[_0x389b('0x5')]]={'$like':'%'+_0x25a945[_0x389b('0x86')][_0x389b('0x4')]+'%'};return _0x2a7947;}})});}var _0x2d80e6=[];if(_0x4896fe){var _0x68da55=_[_0x389b('0x90')](_0x319f8a,['name',_0x4896fe[_0x389b('0xc')]]);if(_0x68da55['field']){var _0x1e1750={};if(_0x479e8d[_0x389b('0x12')]==='AnalyticExtractedReport'){_0x1e1750[_0x68da55[_0x389b('0xa4')]]=_[_0x389b('0x7')](_0x4896fe[_0x389b('0xb')],'id');}else{_0x1e1750[_0x68da55[_0x389b('0xa4')]]=_0x4896fe[_0x389b('0xb')];}_0x2d80e6[_0x389b('0x8f')](_0x1e1750);}else{_0x5dc87d[_0x389b('0x83')]['id']=_0x4896fe[_0x389b('0xb')];}}else{for(var _0x27d6f1=0x0;_0x27d6f1<_0x3003a9[_0x389b('0x94')];_0x27d6f1++){var _0x68da55=_[_0x389b('0x90')](_0x319f8a,[_0x389b('0xc'),_0x3003a9[_0x27d6f1]['name']]);if(_0x68da55['field']){var _0x1e1750={};_0x1e1750[_0x68da55['foreignKey']]=_0x3003a9[_0x27d6f1]['associatedResources'];_0x2d80e6[_0x389b('0x8f')](_0x1e1750);}else{if(!_0x5dc87d[_0x389b('0x83')]['id'])_0x5dc87d[_0x389b('0x83')]['id']=[];_0x3003a9[_0x27d6f1][_0x389b('0xb')][_0x389b('0xa5')](function(_0x3edc0e){_0x5dc87d[_0x389b('0x83')]['id'][_0x389b('0x8f')](_0x3edc0e);});}}}if(!_[_0x389b('0x8e')](_0x2d80e6)){_0x5dc87d['where']=_[_0x389b('0xa6')](_0x5dc87d[_0x389b('0x83')],{'$and':{'$or':_0x2d80e6}});}_0x5dc87d=_[_0x389b('0xa6')]({},_0x5dc87d,_0x25a945[_0x389b('0xa7')]);if(_0x4896fe&&!_0x4896fe[_0x389b('0x95')]&&_0x479e8d[_0x389b('0x12')]===_0x389b('0xe')){if(_0x25a945[_0x389b('0x86')][_0x389b('0xa8')]){_0x5dc87d[_0x389b('0xa9')]=[{'all':!![]}];}return _0x15bf46[_0x479e8d[_0x389b('0x12')]][_0x389b('0xa')](_0x5dc87d)[_0x389b('0x6')](function(_0x17d498){var _0x214a5a=[];_0x17d498[_0x389b('0xa5')](function(_0x185f54){var _0x205cf7;switch(_0x185f54[_0x389b('0xaa')]){case _0x389b('0xab'):_0x205cf7=_[_0x389b('0x90')](_0x4896fe[_0x389b('0xb')],function(_0x29a46b){return _0x29a46b['id']===_0x185f54[_0x389b('0xac')]&&_0x29a46b[_0x389b('0x10')]==='DefaultReports';});break;case _0x389b('0xad'):_0x205cf7=_['find'](_0x4896fe[_0x389b('0xb')],function(_0x2b3fc2){return _0x2b3fc2['id']===_0x185f54[_0x389b('0xac')]&&_0x2b3fc2['type']==='CustomReports';});break;}if(_0x205cf7)_0x214a5a[_0x389b('0x8f')](_0x185f54);});_0x21c895['count']=_0x214a5a[_0x389b('0x94')];_0x21c895[_0x389b('0xae')]=_0x214a5a;return _0x21c895;});}else{return _0x15bf46[_0x479e8d[_0x389b('0x12')]][_0x389b('0xaf')]({'where':_0x5dc87d[_0x389b('0x83')]})['then'](function(_0x11d1fe){_0x21c895['count']=_0x11d1fe;if(_0x25a945[_0x389b('0x86')][_0x389b('0xa8')]){if(_0x479e8d['childModel']==='CmContact'){_0x5dc87d[_0x389b('0xa9')]=[{'model':_0x15bf46[_0x389b('0x70')],'as':_0x389b('0xb0'),'attributes':['id',_0x389b('0xc'),_0x389b('0xb1')],'required':_0x25a945[_0x389b('0x86')][_0x389b('0xb2')]?!![]:![]},{'model':_0x15bf46[_0x389b('0x70')],'as':_0x389b('0xb3'),'attributes':['id',_0x389b('0xc'),_0x389b('0xb1')],'through':_0x25a945[_0x389b('0x86')]['tag']?{'attributes':[],'where':{'TagId':_0x25a945[_0x389b('0x86')][_0x389b('0xb2')]||undefined}}:{},'required':_0x25a945[_0x389b('0x86')][_0x389b('0xb2')]?!![]:![]}];}else{_0x5dc87d['include']=[{'all':!![]}];}}return _0x15bf46[_0x479e8d[_0x389b('0x12')]][_0x389b('0xa')](_0x5dc87d);})[_0x389b('0x6')](function(_0x57b85b){_0x21c895[_0x389b('0xae')]=_0x57b85b;if(_0x131ac8===_0x389b('0x30')&&_0x25a945[_0x389b('0x86')]['openTabs']===_0x389b('0xb4')){var _0x1de586=[];for(var _0x4b2ee3=0x0;_0x4b2ee3<_0x21c895['rows'][_0x389b('0x94')];_0x4b2ee3++){_0x1de586['push'](_0xa1fe00(_0x389b('0xb5'),_0x21c895[_0x389b('0xae')][_0x4b2ee3][_0x389b('0xb6')]));_0x1de586['push'](_0xa1fe00(_0x389b('0xb7'),_0x21c895['rows'][_0x4b2ee3][_0x389b('0xb6')]));_0x1de586['push'](_0xa1fe00(_0x389b('0xb8'),_0x21c895[_0x389b('0xae')][_0x4b2ee3][_0x389b('0xb6')]));_0x1de586[_0x389b('0x8f')](_0xa1fe00(_0x389b('0xb9'),_0x21c895[_0x389b('0xae')][_0x4b2ee3][_0x389b('0xb6')]));_0x1de586['push'](_0xa1fe00(_0x389b('0xba'),_0x21c895[_0x389b('0xae')][_0x4b2ee3][_0x389b('0xb6')]));_0x1de586['push'](_0xa1fe00('whatsapp',_0x21c895['rows'][_0x4b2ee3]['dataValues']));}return Promise[_0x389b('0x91')](_0x1de586)[_0x389b('0x6')](function(){return _0x21c895;});}return _0x21c895;});}});}}});};
\ No newline at end of file
index 635f515..36b1ff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','request','then','info','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','UserProfile,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird'];(function(_0x1bd2a6,_0x45f0fc){var _0x525206=function(_0x3ae097){while(--_0x3ae097){_0x1bd2a6['push'](_0x1bd2a6['shift']());}};_0x525206(++_0x45f0fc);}(_0x2a07,0x74));var _0x72a0=function(_0xe12735,_0x1c7687){_0xe12735=_0xe12735-0x0;var _0xe06435=_0x2a07[_0xe12735];return _0xe06435;};'use strict';var _=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var moment=require(_0x72a0('0x2'));var BPromise=require(_0x72a0('0x3'));var rs=require(_0x72a0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x72a0('0x5'))['db'];var utils=require(_0x72a0('0x6'));var logger=require(_0x72a0('0x7'))(_0x72a0('0x8'));var config=require(_0x72a0('0x9'));var jayson=require(_0x72a0('0xa'));var client=jayson[_0x72a0('0xb')][_0x72a0('0xc')]({'port':0x232a});config[_0x72a0('0xd')]=_[_0x72a0('0xe')](config[_0x72a0('0xd')],{'host':_0x72a0('0xf'),'port':0x18eb});var socket=require(_0x72a0('0x10'))(new Redis(config[_0x72a0('0xd')]));require(_0x72a0('0x11'))[_0x72a0('0x12')](socket);function respondWithRpcPromise(_0x5c1d1e,_0x169dc2,_0x1109f7){return new BPromise(function(_0x54abf6,_0x46fb8a){return client[_0x72a0('0x13')](_0x5c1d1e,_0x1109f7)[_0x72a0('0x14')](function(_0x44d7cf){logger[_0x72a0('0x15')]('UserProfile,\x20%s,\x20%s',_0x169dc2,_0x72a0('0x16'));logger[_0x72a0('0x17')](_0x72a0('0x18'),_0x169dc2,_0x72a0('0x16'),JSON[_0x72a0('0x19')](_0x44d7cf));if(_0x44d7cf[_0x72a0('0x1a')]){if(_0x44d7cf[_0x72a0('0x1a')]['code']===0x1f4){logger['error'](_0x72a0('0x1b'),_0x169dc2,_0x44d7cf[_0x72a0('0x1a')][_0x72a0('0x1c')]);return _0x46fb8a(_0x44d7cf[_0x72a0('0x1a')][_0x72a0('0x1c')]);}logger[_0x72a0('0x1a')]('UserProfile,\x20%s,\x20%s',_0x169dc2,_0x44d7cf[_0x72a0('0x1a')][_0x72a0('0x1c')]);return _0x54abf6(_0x44d7cf[_0x72a0('0x1a')][_0x72a0('0x1c')]);}else{logger[_0x72a0('0x15')]('UserProfile,\x20%s,\x20%s',_0x169dc2,_0x72a0('0x16'));_0x54abf6(_0x44d7cf[_0x72a0('0x1d')][_0x72a0('0x1c')]);}})['catch'](function(_0x144bfc){logger[_0x72a0('0x1a')](_0x72a0('0x1b'),_0x169dc2,_0x144bfc);_0x46fb8a(_0x144bfc);});});}
\ No newline at end of file
+var _0xde81=['stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s'];(function(_0x310a1b,_0x4c9129){var _0xdea206=function(_0x1f1e8d){while(--_0x1f1e8d){_0x310a1b['push'](_0x310a1b['shift']());}};_0xdea206(++_0x4c9129);}(_0xde81,0x109));var _0x1de8=function(_0x4f492c,_0x2f5d87){_0x4f492c=_0x4f492c-0x0;var _0x347ea5=_0xde81[_0x4f492c];return _0x347ea5;};'use strict';var _=require(_0x1de8('0x0'));var util=require(_0x1de8('0x1'));var moment=require(_0x1de8('0x2'));var BPromise=require(_0x1de8('0x3'));var rs=require(_0x1de8('0x4'));var fs=require('fs');var Redis=require(_0x1de8('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1de8('0x6'))('rpc');var config=require(_0x1de8('0x7'));var jayson=require(_0x1de8('0x8'));var client=jayson[_0x1de8('0x9')][_0x1de8('0xa')]({'port':0x232a});config[_0x1de8('0xb')]=_[_0x1de8('0xc')](config[_0x1de8('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1de8('0xb')]));require('./userProfile.socket')[_0x1de8('0xd')](socket);function respondWithRpcPromise(_0x1d6e97,_0x2ed525,_0x587afa){return new BPromise(function(_0x2c1bb5,_0x14fd0f){return client[_0x1de8('0xe')](_0x1d6e97,_0x587afa)[_0x1de8('0xf')](function(_0x100d62){logger[_0x1de8('0x10')](_0x1de8('0x11'),_0x2ed525,_0x1de8('0x12'));logger[_0x1de8('0x13')](_0x1de8('0x14'),_0x2ed525,'request\x20sent',JSON[_0x1de8('0x15')](_0x100d62));if(_0x100d62['error']){if(_0x100d62[_0x1de8('0x16')][_0x1de8('0x17')]===0x1f4){logger['error']('UserProfile,\x20%s,\x20%s',_0x2ed525,_0x100d62[_0x1de8('0x16')][_0x1de8('0x18')]);return _0x14fd0f(_0x100d62[_0x1de8('0x16')][_0x1de8('0x18')]);}logger['error'](_0x1de8('0x11'),_0x2ed525,_0x100d62[_0x1de8('0x16')][_0x1de8('0x18')]);return _0x2c1bb5(_0x100d62['error'][_0x1de8('0x18')]);}else{logger[_0x1de8('0x10')]('UserProfile,\x20%s,\x20%s',_0x2ed525,_0x1de8('0x12'));_0x2c1bb5(_0x100d62['result']['message']);}})[_0x1de8('0x19')](function(_0x53515e){logger[_0x1de8('0x16')](_0x1de8('0x11'),_0x2ed525,_0x53515e);_0x14fd0f(_0x53515e);});});}
\ No newline at end of file
index db00f83..6c549af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c64=['register','userProfile:','./userProfile.events','emit','removeListener'];(function(_0x476a7e,_0x237ca5){var _0x1335d6=function(_0x455c9c){while(--_0x455c9c){_0x476a7e['push'](_0x476a7e['shift']());}};_0x1335d6(++_0x237ca5);}(_0x7c64,0xbb));var _0x47c6=function(_0x293213,_0x58c3b9){_0x293213=_0x293213-0x0;var _0x53a910=_0x7c64[_0x293213];return _0x53a910;};'use strict';var UserProfileEvents=require(_0x47c6('0x0'));var events=['save','remove','update'];function createListener(_0x2203cd,_0x5e2c2e){return function(_0x456547){_0x5e2c2e[_0x47c6('0x1')](_0x2203cd,_0x456547);};}function removeListener(_0xd26a96,_0xa3c46f){return function(){UserProfileEvents[_0x47c6('0x2')](_0xd26a96,_0xa3c46f);};}exports[_0x47c6('0x3')]=function(_0xc5dca4){for(var _0x1d8772=0x0,_0x505fd3=events['length'];_0x1d8772<_0x505fd3;_0x1d8772++){var _0x2b28f5=events[_0x1d8772];var _0x3357a3=createListener(_0x47c6('0x4')+_0x2b28f5,_0xc5dca4);UserProfileEvents['on'](_0x2b28f5,_0x3357a3);}};
\ No newline at end of file
+var _0x5a0f=['./userProfile.events','save','remove','update','emit','removeListener','register','length','userProfile:'];(function(_0x218005,_0x4abdf5){var _0x14daac=function(_0x42961d){while(--_0x42961d){_0x218005['push'](_0x218005['shift']());}};_0x14daac(++_0x4abdf5);}(_0x5a0f,0xfc));var _0xf5a0=function(_0x1f5a67,_0x3ae48a){_0x1f5a67=_0x1f5a67-0x0;var _0x1b570c=_0x5a0f[_0x1f5a67];return _0x1b570c;};'use strict';var UserProfileEvents=require(_0xf5a0('0x0'));var events=[_0xf5a0('0x1'),_0xf5a0('0x2'),_0xf5a0('0x3')];function createListener(_0x2f54e9,_0x5771fb){return function(_0x4d226f){_0x5771fb[_0xf5a0('0x4')](_0x2f54e9,_0x4d226f);};}function removeListener(_0x56f1eb,_0x520c07){return function(){UserProfileEvents[_0xf5a0('0x5')](_0x56f1eb,_0x520c07);};}exports[_0xf5a0('0x6')]=function(_0x1d3fcb){for(var _0x5099f5=0x0,_0xcc4df0=events[_0xf5a0('0x7')];_0x5099f5<_0xcc4df0;_0x5099f5++){var _0xdd9cb4=events[_0x5099f5];var _0x2647b0=createListener(_0xf5a0('0x8')+_0xdd9cb4,_0x1d3fcb);UserProfileEvents['on'](_0xdd9cb4,_0x2647b0);}};
\ No newline at end of file
index 164c302..d2d643b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51d9=['/:id','show','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x49e4c5,_0x1bdc1e){var _0x2a4ceb=function(_0x1091cd){while(--_0x1091cd){_0x49e4c5['push'](_0x49e4c5['shift']());}};_0x2a4ceb(++_0x1bdc1e);}(_0x51d9,0x11c));var _0x951d=function(_0x2ae80a,_0x5deb6e){_0x2ae80a=_0x2ae80a-0x0;var _0x1fb292=_0x51d9[_0x2ae80a];return _0x1fb292;};'use strict';var multer=require('multer');var util=require(_0x951d('0x0'));var path=require(_0x951d('0x1'));var timeout=require(_0x951d('0x2'));var express=require(_0x951d('0x3'));var router=express[_0x951d('0x4')]();var fs_extra=require(_0x951d('0x5'));var auth=require(_0x951d('0x6'));var interaction=require(_0x951d('0x7'));var config=require(_0x951d('0x8'));var controller=require(_0x951d('0x9'));router[_0x951d('0xa')]('/',auth[_0x951d('0xb')](),controller[_0x951d('0xc')]);router[_0x951d('0xa')](_0x951d('0xd'),auth[_0x951d('0xb')](),controller[_0x951d('0xe')]);router[_0x951d('0xa')](_0x951d('0xf'),auth[_0x951d('0xb')](),controller[_0x951d('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x951d('0x11')]);router[_0x951d('0x12')]('/:id',auth[_0x951d('0xb')](),controller[_0x951d('0x13')]);router[_0x951d('0x14')](_0x951d('0xf'),auth[_0x951d('0xb')](),controller[_0x951d('0x15')]);module[_0x951d('0x16')]=router;
\ No newline at end of file
+var _0x6a89=['index','/describe','describe','show','post','create','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x4a578e,_0x466c76){var _0x5b4711=function(_0xcd621d){while(--_0xcd621d){_0x4a578e['push'](_0x4a578e['shift']());}};_0x5b4711(++_0x466c76);}(_0x6a89,0x96));var _0x96a8=function(_0x5b8a90,_0x571f55){_0x5b8a90=_0x5b8a90-0x0;var _0x3fb741=_0x6a89[_0x5b8a90];return _0x3fb741;};'use strict';var multer=require(_0x96a8('0x0'));var util=require(_0x96a8('0x1'));var path=require(_0x96a8('0x2'));var timeout=require(_0x96a8('0x3'));var express=require(_0x96a8('0x4'));var router=express[_0x96a8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x96a8('0x6'));var interaction=require(_0x96a8('0x7'));var config=require('../../config/environment');var controller=require('./userProfileResource.controller');router[_0x96a8('0x8')]('/',auth[_0x96a8('0x9')](),controller[_0x96a8('0xa')]);router['get'](_0x96a8('0xb'),auth['isAuthenticated'](),controller[_0x96a8('0xc')]);router[_0x96a8('0x8')]('/:id',auth[_0x96a8('0x9')](),controller[_0x96a8('0xd')]);router[_0x96a8('0xe')]('/',auth['isAuthenticated'](),controller[_0x96a8('0xf')]);router['put'](_0x96a8('0x10'),auth['isAuthenticated'](),controller[_0x96a8('0x11')]);router['delete'](_0x96a8('0x10'),auth[_0x96a8('0x9')](),controller[_0x96a8('0x12')]);module[_0x96a8('0x13')]=router;
\ No newline at end of file
index d2307b0..615acb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b67=['STRING','sequelize','exports','INTEGER'];(function(_0x391067,_0x5f0232){var _0x286420=function(_0x4642ef){while(--_0x4642ef){_0x391067['push'](_0x391067['shift']());}};_0x286420(++_0x5f0232);}(_0x2b67,0x10d));var _0x72b6=function(_0x59cf41,_0x5e463b){_0x59cf41=_0x59cf41-0x0;var _0x1d22d0=_0x2b67[_0x59cf41];return _0x1d22d0;};'use strict';var Sequelize=require(_0x72b6('0x0'));module[_0x72b6('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x72b6('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x72b6('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0xfb4a=['exports','INTEGER','STRING'];(function(_0x534845,_0x866d61){var _0x3e65f2=function(_0x5a1795){while(--_0x5a1795){_0x534845['push'](_0x534845['shift']());}};_0x3e65f2(++_0x866d61);}(_0xfb4a,0x9c));var _0xafb4=function(_0x622035,_0x1a4b91){_0x622035=_0x622035-0x0;var _0x326cf2=_0xfb4a[_0x622035];return _0x326cf2;};'use strict';var Sequelize=require('sequelize');module[_0xafb4('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0xafb4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xafb4('0x2')],'allowNull':![]}};
\ No newline at end of file
index 26a47c6..7edc8da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c60=['../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','then','destroy','end','error','stack','name','index','map','UserProfileResource','rawAttributes','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','includeAll','find','create','update','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util'];(function(_0x38de16,_0x2acea8){var _0x594a90=function(_0x2b80c0){while(--_0x2b80c0){_0x38de16['push'](_0x38de16['shift']());}};_0x594a90(++_0x2acea8);}(_0x4c60,0xc1));var _0x04c6=function(_0x4c056f,_0x2fc5ac){_0x4c056f=_0x4c056f-0x0;var _0x9b399f=_0x4c60[_0x4c056f];return _0x9b399f;};'use strict';var emlformat=require(_0x04c6('0x0'));var rimraf=require(_0x04c6('0x1'));var zipdir=require(_0x04c6('0x2'));var jsonpatch=require(_0x04c6('0x3'));var rp=require('request-promise');var moment=require(_0x04c6('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x04c6('0x5'));var csv=require(_0x04c6('0x6'));var ejs=require(_0x04c6('0x7'));var fs=require('fs');var fs_extra=require(_0x04c6('0x8'));var _=require(_0x04c6('0x9'));var squel=require(_0x04c6('0xa'));var crypto=require(_0x04c6('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x04c6('0xc'));var toCsv=require(_0x04c6('0x6'));var querystring=require(_0x04c6('0xd'));var Papa=require(_0x04c6('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x04c6('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x04c6('0x10'))(_0x04c6('0x11'));var utils=require('../../config/utils');var config=require(_0x04c6('0x12'));var licenseUtil=require(_0x04c6('0x13'));var db=require(_0x04c6('0x14'))['db'];function respondWithStatusCode(_0x4e5e6,_0x52cdcf){_0x52cdcf=_0x52cdcf||0xcc;return function(_0x257a0a){if(_0x257a0a){return _0x4e5e6[_0x04c6('0x15')](_0x52cdcf);}return _0x4e5e6[_0x04c6('0x16')](_0x52cdcf)['end']();};}function respondWithResult(_0x12d1c5,_0x15cbe0){_0x15cbe0=_0x15cbe0||0xc8;return function(_0x28632e){if(_0x28632e){return _0x12d1c5[_0x04c6('0x16')](_0x15cbe0)[_0x04c6('0x17')](_0x28632e);}};}function respondWithFilteredResult(_0x19a26f,_0x1cd963){return function(_0x3d46a9){if(_0x3d46a9){var _0x5a5a66=typeof _0x1cd963[_0x04c6('0x18')]===_0x04c6('0x19')&&typeof _0x1cd963[_0x04c6('0x1a')]===_0x04c6('0x19');var _0x43596a=_0x3d46a9[_0x04c6('0x1b')];var _0x21674a=_0x5a5a66?0x0:_0x1cd963[_0x04c6('0x18')];var _0x47f400=_0x5a5a66?_0x3d46a9[_0x04c6('0x1b')]:_0x1cd963[_0x04c6('0x18')]+_0x1cd963[_0x04c6('0x1a')];var _0x558b43;if(_0x47f400>=_0x43596a){_0x47f400=_0x43596a;_0x558b43=0xc8;}else{_0x558b43=0xce;}_0x19a26f['status'](_0x558b43);return _0x19a26f['set'](_0x04c6('0x1c'),_0x21674a+'-'+_0x47f400+'/'+_0x43596a)[_0x04c6('0x17')](_0x3d46a9);}return null;};}function patchUpdates(_0x50dd61){return function(_0x5a5e9e){try{jsonpatch[_0x04c6('0x1d')](_0x5a5e9e,_0x50dd61,!![]);}catch(_0x2eed94){return BPromise[_0x04c6('0x1e')](_0x2eed94);}return _0x5a5e9e['save']();};}function saveUpdates(_0x33a0f7,_0x13f2dc){return function(_0x9d41f8){if(_0x9d41f8){return _0x9d41f8['update'](_0x33a0f7)[_0x04c6('0x1f')](function(_0x41e29f){return _0x41e29f;});}return null;};}function removeEntity(_0x562491,_0x54a8b0){return function(_0x4c8d72){if(_0x4c8d72){return _0x4c8d72[_0x04c6('0x20')]()[_0x04c6('0x1f')](function(){_0x562491[_0x04c6('0x16')](0xcc)[_0x04c6('0x21')]();});}};}function handleEntityNotFound(_0x3e1328,_0x52e5f5){return function(_0x562952){if(!_0x562952){_0x3e1328[_0x04c6('0x15')](0x194);}return _0x562952;};}function handleError(_0x2ab1d2,_0x9acfa){_0x9acfa=_0x9acfa||0x1f4;return function(_0x3233d7){logger[_0x04c6('0x22')](_0x3233d7[_0x04c6('0x23')]);if(_0x3233d7['name']){delete _0x3233d7[_0x04c6('0x24')];}_0x2ab1d2[_0x04c6('0x16')](_0x9acfa)['send'](_0x3233d7);};}exports[_0x04c6('0x25')]=function(_0x1cd16a,_0x5f1331){var _0x5c9003={},_0x115d84={},_0x3a6d92={'count':0x0,'rows':[]};var _0x2a191f=_[_0x04c6('0x26')](db[_0x04c6('0x27')][_0x04c6('0x28')],function(_0x49c4ed){return{'name':_0x49c4ed['fieldName'],'type':_0x49c4ed['type'][_0x04c6('0x29')]};});_0x115d84['model']=_[_0x04c6('0x26')](_0x2a191f,_0x04c6('0x24'));_0x115d84['query']=_[_0x04c6('0x2a')](_0x1cd16a[_0x04c6('0x2b')]);_0x115d84[_0x04c6('0x2c')]=_[_0x04c6('0x2d')](_0x115d84['model'],_0x115d84[_0x04c6('0x2b')]);_0x5c9003[_0x04c6('0x2e')]=_[_0x04c6('0x2d')](_0x115d84[_0x04c6('0x2f')],qs[_0x04c6('0x30')](_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x30')]));_0x5c9003[_0x04c6('0x2e')]=_0x5c9003[_0x04c6('0x2e')][_0x04c6('0x31')]?_0x5c9003[_0x04c6('0x2e')]:_0x115d84[_0x04c6('0x2f')];if(!_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x32')](_0x04c6('0x33'))){_0x5c9003['limit']=qs[_0x04c6('0x1a')](_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x1a')]);_0x5c9003[_0x04c6('0x18')]=qs['offset'](_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x18')]);}_0x5c9003['order']=qs['sort'](_0x1cd16a['query'][_0x04c6('0x34')]);_0x5c9003[_0x04c6('0x35')]=qs['filters'](_[_0x04c6('0x36')](_0x1cd16a['query'],_0x115d84[_0x04c6('0x2c')]),_0x2a191f);if(_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x37')]){_0x5c9003[_0x04c6('0x35')]=_['merge'](_0x5c9003['where'],{'$or':_[_0x04c6('0x26')](_0x2a191f,function(_0x3a9a3b){if(_0x3a9a3b['type']!==_0x04c6('0x38')){var _0x5ce4b0={};_0x5ce4b0[_0x3a9a3b['name']]={'$like':'%'+_0x1cd16a[_0x04c6('0x2b')]['filter']+'%'};return _0x5ce4b0;}})});}_0x5c9003=_[_0x04c6('0x39')]({},_0x5c9003,_0x1cd16a[_0x04c6('0x3a')]);var _0x59ca18={'where':_0x5c9003[_0x04c6('0x35')]};return db['UserProfileResource'][_0x04c6('0x1b')](_0x59ca18)[_0x04c6('0x1f')](function(_0x2d83eb){_0x3a6d92[_0x04c6('0x1b')]=_0x2d83eb;if(_0x1cd16a[_0x04c6('0x2b')]['includeAll']){_0x5c9003[_0x04c6('0x3b')]=[{'all':!![]}];}return db['UserProfileResource'][_0x04c6('0x3c')](_0x5c9003);})['then'](function(_0x1f7ead){_0x3a6d92[_0x04c6('0x3d')]=_0x1f7ead;return _0x3a6d92;})[_0x04c6('0x1f')](respondWithFilteredResult(_0x5f1331,_0x5c9003))[_0x04c6('0x3e')](handleError(_0x5f1331,null));};exports[_0x04c6('0x3f')]=function(_0x2cdf34,_0x40477f){var _0x4a3c45={'raw':![],'where':{'id':_0x2cdf34['params']['id']}},_0xdfdc34={};_0xdfdc34[_0x04c6('0x2f')]=_['keys'](db['UserProfileResource'][_0x04c6('0x28')]);_0xdfdc34['query']=_[_0x04c6('0x2a')](_0x2cdf34[_0x04c6('0x2b')]);_0xdfdc34[_0x04c6('0x2c')]=_['intersection'](_0xdfdc34[_0x04c6('0x2f')],_0xdfdc34[_0x04c6('0x2b')]);_0x4a3c45[_0x04c6('0x2e')]=_[_0x04c6('0x2d')](_0xdfdc34[_0x04c6('0x2f')],qs[_0x04c6('0x30')](_0x2cdf34[_0x04c6('0x2b')]['fields']));_0x4a3c45['attributes']=_0x4a3c45[_0x04c6('0x2e')][_0x04c6('0x31')]?_0x4a3c45[_0x04c6('0x2e')]:_0xdfdc34['model'];if(_0x2cdf34[_0x04c6('0x2b')][_0x04c6('0x40')]){_0x4a3c45[_0x04c6('0x3b')]=[{'all':!![]}];}_0x4a3c45=_['merge']({},_0x4a3c45,_0x2cdf34['options']);return db['UserProfileResource'][_0x04c6('0x41')](_0x4a3c45)[_0x04c6('0x1f')](handleEntityNotFound(_0x40477f,null))['then'](respondWithResult(_0x40477f,null))[_0x04c6('0x3e')](handleError(_0x40477f,null));};exports[_0x04c6('0x42')]=function(_0x2bd045,_0x4ef366){return db[_0x04c6('0x27')][_0x04c6('0x42')](_0x2bd045['body'],{})[_0x04c6('0x1f')](respondWithResult(_0x4ef366,0xc9))[_0x04c6('0x3e')](handleError(_0x4ef366,null));};exports[_0x04c6('0x43')]=function(_0xee2822,_0x4cfde2){if(_0xee2822[_0x04c6('0x44')]['id']){delete _0xee2822[_0x04c6('0x44')]['id'];}return db[_0x04c6('0x27')][_0x04c6('0x41')]({'where':{'id':_0xee2822['params']['id']}})[_0x04c6('0x1f')](handleEntityNotFound(_0x4cfde2,null))[_0x04c6('0x1f')](saveUpdates(_0xee2822[_0x04c6('0x44')],null))[_0x04c6('0x1f')](respondWithResult(_0x4cfde2,null))['catch'](handleError(_0x4cfde2,null));};exports[_0x04c6('0x20')]=function(_0x42273e,_0x15ec61){return db['UserProfileResource'][_0x04c6('0x41')]({'where':{'id':_0x42273e[_0x04c6('0x45')]['id']}})[_0x04c6('0x1f')](handleEntityNotFound(_0x15ec61,null))[_0x04c6('0x1f')](removeEntity(_0x15ec61,null))[_0x04c6('0x3e')](handleError(_0x15ec61,null));};exports[_0x04c6('0x46')]=function(_0x1b8fa4,_0x160f91){return db[_0x04c6('0x27')][_0x04c6('0x46')]()[_0x04c6('0x1f')](respondWithResult(_0x160f91,null))[_0x04c6('0x3e')](handleError(_0x160f91,null));};
\ No newline at end of file
+var _0xb016=['util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','name','send','index','map','UserProfileResource','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','update','find','body','describe','eml-format','rimraf','request-promise','bluebird','mustache'];(function(_0x48366a,_0x48bc2a){var _0x172769=function(_0x1792f1){while(--_0x1792f1){_0x48366a['push'](_0x48366a['shift']());}};_0x172769(++_0x48bc2a);}(_0xb016,0x159));var _0x6b01=function(_0x257244,_0x1bd4c5){_0x257244=_0x257244-0x0;var _0x3b3780=_0xb016[_0x257244];return _0x3b3780;};'use strict';var emlformat=require(_0x6b01('0x0'));var rimraf=require(_0x6b01('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6b01('0x2'));var moment=require('moment');var BPromise=require(_0x6b01('0x3'));var Mustache=require(_0x6b01('0x4'));var util=require(_0x6b01('0x5'));var path=require(_0x6b01('0x6'));var sox=require('sox');var csv=require(_0x6b01('0x7'));var ejs=require(_0x6b01('0x8'));var fs=require('fs');var fs_extra=require(_0x6b01('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6b01('0xa'));var jsforce=require(_0x6b01('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6b01('0xc'));var Papa=require(_0x6b01('0xd'));var Redis=require(_0x6b01('0xe'));var authService=require(_0x6b01('0xf'));var qs=require(_0x6b01('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6b01('0x11'))(_0x6b01('0x12'));var utils=require(_0x6b01('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x6b01('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51f976,_0x26f2a0){_0x26f2a0=_0x26f2a0||0xcc;return function(_0x4fa826){if(_0x4fa826){return _0x51f976[_0x6b01('0x15')](_0x26f2a0);}return _0x51f976[_0x6b01('0x16')](_0x26f2a0)['end']();};}function respondWithResult(_0x2c305e,_0x4ea5fa){_0x4ea5fa=_0x4ea5fa||0xc8;return function(_0x50d778){if(_0x50d778){return _0x2c305e['status'](_0x4ea5fa)[_0x6b01('0x17')](_0x50d778);}};}function respondWithFilteredResult(_0x4cbd38,_0x5b2f60){return function(_0x3a259f){if(_0x3a259f){var _0x327e86=typeof _0x5b2f60[_0x6b01('0x18')]===_0x6b01('0x19')&&typeof _0x5b2f60[_0x6b01('0x1a')]===_0x6b01('0x19');var _0x122769=_0x3a259f[_0x6b01('0x1b')];var _0x9c6571=_0x327e86?0x0:_0x5b2f60[_0x6b01('0x18')];var _0x18f336=_0x327e86?_0x3a259f['count']:_0x5b2f60[_0x6b01('0x18')]+_0x5b2f60[_0x6b01('0x1a')];var _0x3b0bab;if(_0x18f336>=_0x122769){_0x18f336=_0x122769;_0x3b0bab=0xc8;}else{_0x3b0bab=0xce;}_0x4cbd38[_0x6b01('0x16')](_0x3b0bab);return _0x4cbd38[_0x6b01('0x1c')](_0x6b01('0x1d'),_0x9c6571+'-'+_0x18f336+'/'+_0x122769)[_0x6b01('0x17')](_0x3a259f);}return null;};}function patchUpdates(_0x3c0573){return function(_0x54a942){try{jsonpatch[_0x6b01('0x1e')](_0x54a942,_0x3c0573,!![]);}catch(_0xc1f453){return BPromise[_0x6b01('0x1f')](_0xc1f453);}return _0x54a942[_0x6b01('0x20')]();};}function saveUpdates(_0x1fced4,_0x181b09){return function(_0x2cea6e){if(_0x2cea6e){return _0x2cea6e['update'](_0x1fced4)[_0x6b01('0x21')](function(_0xcf9200){return _0xcf9200;});}return null;};}function removeEntity(_0x42c990,_0x51243c){return function(_0x399808){if(_0x399808){return _0x399808[_0x6b01('0x22')]()[_0x6b01('0x21')](function(){_0x42c990[_0x6b01('0x16')](0xcc)[_0x6b01('0x23')]();});}};}function handleEntityNotFound(_0x2456e9,_0x1b46fb){return function(_0x136452){if(!_0x136452){_0x2456e9[_0x6b01('0x15')](0x194);}return _0x136452;};}function handleError(_0x152dda,_0x3c0607){_0x3c0607=_0x3c0607||0x1f4;return function(_0xa846d8){logger[_0x6b01('0x24')](_0xa846d8['stack']);if(_0xa846d8[_0x6b01('0x25')]){delete _0xa846d8[_0x6b01('0x25')];}_0x152dda[_0x6b01('0x16')](_0x3c0607)[_0x6b01('0x26')](_0xa846d8);};}exports[_0x6b01('0x27')]=function(_0x528cbd,_0x54f030){var _0x3fae61={},_0x3df3d4={},_0xc574c={'count':0x0,'rows':[]};var _0x8883d1=_[_0x6b01('0x28')](db[_0x6b01('0x29')]['rawAttributes'],function(_0x39f193){return{'name':_0x39f193['fieldName'],'type':_0x39f193[_0x6b01('0x2a')]['key']};});_0x3df3d4[_0x6b01('0x2b')]=_[_0x6b01('0x28')](_0x8883d1,_0x6b01('0x25'));_0x3df3d4[_0x6b01('0x2c')]=_[_0x6b01('0x2d')](_0x528cbd['query']);_0x3df3d4[_0x6b01('0x2e')]=_[_0x6b01('0x2f')](_0x3df3d4[_0x6b01('0x2b')],_0x3df3d4['query']);_0x3fae61['attributes']=_[_0x6b01('0x2f')](_0x3df3d4['model'],qs[_0x6b01('0x30')](_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x30')]));_0x3fae61['attributes']=_0x3fae61[_0x6b01('0x31')][_0x6b01('0x32')]?_0x3fae61[_0x6b01('0x31')]:_0x3df3d4['model'];if(!_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x33')](_0x6b01('0x34'))){_0x3fae61[_0x6b01('0x1a')]=qs[_0x6b01('0x1a')](_0x528cbd['query'][_0x6b01('0x1a')]);_0x3fae61[_0x6b01('0x18')]=qs[_0x6b01('0x18')](_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x18')]);}_0x3fae61[_0x6b01('0x35')]=qs[_0x6b01('0x36')](_0x528cbd[_0x6b01('0x2c')]['sort']);_0x3fae61[_0x6b01('0x37')]=qs['filters'](_[_0x6b01('0x38')](_0x528cbd[_0x6b01('0x2c')],_0x3df3d4[_0x6b01('0x2e')]),_0x8883d1);if(_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x39')]){_0x3fae61[_0x6b01('0x37')]=_[_0x6b01('0x3a')](_0x3fae61['where'],{'$or':_[_0x6b01('0x28')](_0x8883d1,function(_0x15f274){if(_0x15f274[_0x6b01('0x2a')]!==_0x6b01('0x3b')){var _0x1ca3aa={};_0x1ca3aa[_0x15f274[_0x6b01('0x25')]]={'$like':'%'+_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x39')]+'%'};return _0x1ca3aa;}})});}_0x3fae61=_['merge']({},_0x3fae61,_0x528cbd[_0x6b01('0x3c')]);var _0x55907f={'where':_0x3fae61[_0x6b01('0x37')]};return db[_0x6b01('0x29')]['count'](_0x55907f)[_0x6b01('0x21')](function(_0x2e661b){_0xc574c[_0x6b01('0x1b')]=_0x2e661b;if(_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x3d')]){_0x3fae61[_0x6b01('0x3e')]=[{'all':!![]}];}return db[_0x6b01('0x29')][_0x6b01('0x3f')](_0x3fae61);})[_0x6b01('0x21')](function(_0x17f335){_0xc574c['rows']=_0x17f335;return _0xc574c;})[_0x6b01('0x21')](respondWithFilteredResult(_0x54f030,_0x3fae61))[_0x6b01('0x40')](handleError(_0x54f030,null));};exports['show']=function(_0x52cec0,_0x32b9ec){var _0xd11195={'raw':![],'where':{'id':_0x52cec0[_0x6b01('0x41')]['id']}},_0x558ec1={};_0x558ec1[_0x6b01('0x2b')]=_['keys'](db[_0x6b01('0x29')]['rawAttributes']);_0x558ec1[_0x6b01('0x2c')]=_[_0x6b01('0x2d')](_0x52cec0[_0x6b01('0x2c')]);_0x558ec1['filters']=_[_0x6b01('0x2f')](_0x558ec1[_0x6b01('0x2b')],_0x558ec1['query']);_0xd11195['attributes']=_['intersection'](_0x558ec1[_0x6b01('0x2b')],qs[_0x6b01('0x30')](_0x52cec0[_0x6b01('0x2c')][_0x6b01('0x30')]));_0xd11195[_0x6b01('0x31')]=_0xd11195[_0x6b01('0x31')]['length']?_0xd11195[_0x6b01('0x31')]:_0x558ec1[_0x6b01('0x2b')];if(_0x52cec0[_0x6b01('0x2c')][_0x6b01('0x3d')]){_0xd11195[_0x6b01('0x3e')]=[{'all':!![]}];}_0xd11195=_[_0x6b01('0x3a')]({},_0xd11195,_0x52cec0['options']);return db[_0x6b01('0x29')]['find'](_0xd11195)['then'](handleEntityNotFound(_0x32b9ec,null))[_0x6b01('0x21')](respondWithResult(_0x32b9ec,null))[_0x6b01('0x40')](handleError(_0x32b9ec,null));};exports['create']=function(_0x408bb0,_0x27442e){return db[_0x6b01('0x29')]['create'](_0x408bb0['body'],{})['then'](respondWithResult(_0x27442e,0xc9))[_0x6b01('0x40')](handleError(_0x27442e,null));};exports[_0x6b01('0x42')]=function(_0x518d94,_0x34cef6){if(_0x518d94['body']['id']){delete _0x518d94['body']['id'];}return db['UserProfileResource'][_0x6b01('0x43')]({'where':{'id':_0x518d94[_0x6b01('0x41')]['id']}})['then'](handleEntityNotFound(_0x34cef6,null))['then'](saveUpdates(_0x518d94[_0x6b01('0x44')],null))['then'](respondWithResult(_0x34cef6,null))[_0x6b01('0x40')](handleError(_0x34cef6,null));};exports[_0x6b01('0x22')]=function(_0x32d446,_0x172a56){return db[_0x6b01('0x29')]['find']({'where':{'id':_0x32d446[_0x6b01('0x41')]['id']}})[_0x6b01('0x21')](handleEntityNotFound(_0x172a56,null))[_0x6b01('0x21')](removeEntity(_0x172a56,null))['catch'](handleError(_0x172a56,null));};exports[_0x6b01('0x45')]=function(_0x13ab4f,_0x5617d7){return db[_0x6b01('0x29')][_0x6b01('0x45')]()[_0x6b01('0x21')](respondWithResult(_0x5617d7,null))[_0x6b01('0x40')](handleError(_0x5617d7,null));};
\ No newline at end of file
index 6965eaa..9735561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3780=['define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash','util','../../config/logger','bluebird','request-promise','../../config/environment','./userProfileResource.attributes','exports'];(function(_0x43fff7,_0x191f03){var _0x129e97=function(_0x340bab){while(--_0x340bab){_0x43fff7['push'](_0x43fff7['shift']());}};_0x129e97(++_0x191f03);}(_0x3780,0x1b8));var _0x0378=function(_0x49d511,_0x38e1a5){_0x49d511=_0x49d511-0x0;var _0x36001b=_0x3780[_0x49d511];return _0x36001b;};'use strict';var _=require(_0x0378('0x0'));var util=require(_0x0378('0x1'));var logger=require(_0x0378('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0378('0x3'));var rp=require(_0x0378('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0378('0x5'));var attributes=require(_0x0378('0x6'));module[_0x0378('0x7')]=function(_0x204d9c,_0x29afa6){return _0x204d9c[_0x0378('0x8')](_0x0378('0x9'),attributes,{'tableName':_0x0378('0xa'),'paranoid':![],'indexes':[{'name':_0x0378('0xb'),'fields':[_0x0378('0xc'),_0x0378('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x99f1=['user_profile_has_resources','compositeIndex','sectionId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','UserProfileResource'];(function(_0x2785c5,_0x364d12){var _0x275828=function(_0x535ec4){while(--_0x535ec4){_0x2785c5['push'](_0x2785c5['shift']());}};_0x275828(++_0x364d12);}(_0x99f1,0xa8));var _0x199f=function(_0xfa634c,_0x414e0e){_0xfa634c=_0xfa634c-0x0;var _0x73e478=_0x99f1[_0xfa634c];return _0x73e478;};'use strict';var _=require(_0x199f('0x0'));var util=require(_0x199f('0x1'));var logger=require(_0x199f('0x2'))('api');var moment=require(_0x199f('0x3'));var BPromise=require(_0x199f('0x4'));var rp=require(_0x199f('0x5'));var fs=require('fs');var path=require(_0x199f('0x6'));var rimraf=require(_0x199f('0x7'));var config=require(_0x199f('0x8'));var attributes=require(_0x199f('0x9'));module[_0x199f('0xa')]=function(_0x3c1b50,_0x3c6081){return _0x3c1b50['define'](_0x199f('0xb'),attributes,{'tableName':_0x199f('0xc'),'paranoid':![],'indexes':[{'name':_0x199f('0xd'),'fields':['resourceId',_0x199f('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 44eeddc..60948ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0589=['client','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0x0589,0xe9));var _0x9058=function(_0x1f1d29,_0x1ac639){_0x1f1d29=_0x1f1d29-0x0;var _0x172ec7=_0x0589[_0x1f1d29];return _0x172ec7;};'use strict';var _=require(_0x9058('0x0'));var util=require(_0x9058('0x1'));var moment=require('moment');var BPromise=require(_0x9058('0x2'));var rs=require(_0x9058('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9058('0x4'))('rpc');var config=require(_0x9058('0x5'));var jayson=require(_0x9058('0x6'));var client=jayson[_0x9058('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x302eaa,_0x3fe960,_0xac20ed){return new BPromise(function(_0xa80de,_0x70aa86){return client[_0x9058('0x8')](_0x302eaa,_0xac20ed)[_0x9058('0x9')](function(_0x2c4acf){logger[_0x9058('0xa')](_0x9058('0xb'),_0x3fe960,_0x9058('0xc'));logger[_0x9058('0xd')](_0x9058('0xe'),_0x3fe960,'request\x20sent',JSON[_0x9058('0xf')](_0x2c4acf));if(_0x2c4acf[_0x9058('0x10')]){if(_0x2c4acf[_0x9058('0x10')]['code']===0x1f4){logger[_0x9058('0x10')](_0x9058('0xb'),_0x3fe960,_0x2c4acf[_0x9058('0x10')][_0x9058('0x11')]);return _0x70aa86(_0x2c4acf[_0x9058('0x10')]['message']);}logger[_0x9058('0x10')](_0x9058('0xb'),_0x3fe960,_0x2c4acf[_0x9058('0x10')][_0x9058('0x11')]);return _0xa80de(_0x2c4acf[_0x9058('0x10')]['message']);}else{logger[_0x9058('0xa')](_0x9058('0xb'),_0x3fe960,_0x9058('0xc'));_0xa80de(_0x2c4acf[_0x9058('0x12')][_0x9058('0x11')]);}})[_0x9058('0x13')](function(_0x243489){logger[_0x9058('0x10')](_0x9058('0xb'),_0x3fe960,_0x243489);_0x70aa86(_0x243489);});});}
\ No newline at end of file
+var _0xf5f7=['lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch'];(function(_0x109371,_0x441c8e){var _0x4fd858=function(_0x13504f){while(--_0x13504f){_0x109371['push'](_0x109371['shift']());}};_0x4fd858(++_0x441c8e);}(_0xf5f7,0xc6));var _0x7f5f=function(_0x266ed3,_0x1c9f6d){_0x266ed3=_0x266ed3-0x0;var _0x402274=_0xf5f7[_0x266ed3];return _0x402274;};'use strict';var _=require(_0x7f5f('0x0'));var util=require('util');var moment=require(_0x7f5f('0x1'));var BPromise=require(_0x7f5f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f5f('0x3'));var db=require(_0x7f5f('0x4'))['db'];var utils=require(_0x7f5f('0x5'));var logger=require('../../config/logger')(_0x7f5f('0x6'));var config=require(_0x7f5f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x7f5f('0x8')][_0x7f5f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1e5c76,_0x5c9027,_0x17a148){return new BPromise(function(_0xdf8709,_0x56b525){return client[_0x7f5f('0xa')](_0x1e5c76,_0x17a148)['then'](function(_0x3c0fbb){logger[_0x7f5f('0xb')](_0x7f5f('0xc'),_0x5c9027,_0x7f5f('0xd'));logger[_0x7f5f('0xe')](_0x7f5f('0xf'),_0x5c9027,'request\x20sent',JSON[_0x7f5f('0x10')](_0x3c0fbb));if(_0x3c0fbb['error']){if(_0x3c0fbb['error'][_0x7f5f('0x11')]===0x1f4){logger[_0x7f5f('0x12')](_0x7f5f('0xc'),_0x5c9027,_0x3c0fbb[_0x7f5f('0x12')][_0x7f5f('0x13')]);return _0x56b525(_0x3c0fbb[_0x7f5f('0x12')]['message']);}logger['error'](_0x7f5f('0xc'),_0x5c9027,_0x3c0fbb['error']['message']);return _0xdf8709(_0x3c0fbb[_0x7f5f('0x12')][_0x7f5f('0x13')]);}else{logger[_0x7f5f('0xb')](_0x7f5f('0xc'),_0x5c9027,_0x7f5f('0xd'));_0xdf8709(_0x3c0fbb[_0x7f5f('0x14')][_0x7f5f('0x13')]);}})[_0x7f5f('0x15')](function(_0x47b528){logger[_0x7f5f('0x12')](_0x7f5f('0xc'),_0x5c9027,_0x47b528);_0x56b525(_0x47b528);});});}
\ No newline at end of file
index b41ad94..07c6c33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d78=['index','describe','/:id','show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x0d78,0x1ae));var _0x80d7=function(_0x279702,_0x12e9b5){_0x279702=_0x279702-0x0;var _0x34f62e=_0x0d78[_0x279702];return _0x34f62e;};'use strict';var multer=require(_0x80d7('0x0'));var util=require(_0x80d7('0x1'));var path=require(_0x80d7('0x2'));var timeout=require(_0x80d7('0x3'));var express=require(_0x80d7('0x4'));var router=express['Router']();var fs_extra=require(_0x80d7('0x5'));var auth=require(_0x80d7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x80d7('0x7'));var controller=require(_0x80d7('0x8'));router[_0x80d7('0x9')]('/',auth[_0x80d7('0xa')](),controller[_0x80d7('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x80d7('0xc')]);router[_0x80d7('0x9')](_0x80d7('0xd'),auth['isAuthenticated'](),controller[_0x80d7('0xe')]);router[_0x80d7('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x80d7('0x10')](_0x80d7('0xd'),auth[_0x80d7('0xa')](),controller[_0x80d7('0x11')]);router[_0x80d7('0x12')](_0x80d7('0xd'),auth[_0x80d7('0xa')](),controller[_0x80d7('0x13')]);module[_0x80d7('0x14')]=router;
\ No newline at end of file
+var _0xd98d=['describe','/:id','show','post','create','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe'];(function(_0x5ab068,_0x4a888a){var _0x19faee=function(_0x156f9e){while(--_0x156f9e){_0x5ab068['push'](_0x5ab068['shift']());}};_0x19faee(++_0x4a888a);}(_0xd98d,0x1ae));var _0xdd98=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd98d[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xdd98('0x0'));var path=require(_0xdd98('0x1'));var timeout=require('connect-timeout');var express=require(_0xdd98('0x2'));var router=express[_0xdd98('0x3')]();var fs_extra=require(_0xdd98('0x4'));var auth=require(_0xdd98('0x5'));var interaction=require(_0xdd98('0x6'));var config=require(_0xdd98('0x7'));var controller=require('./userProfileSection.controller');router['get']('/',auth[_0xdd98('0x8')](),controller[_0xdd98('0x9')]);router['get'](_0xdd98('0xa'),auth[_0xdd98('0x8')](),controller[_0xdd98('0xb')]);router['get'](_0xdd98('0xc'),auth[_0xdd98('0x8')](),controller[_0xdd98('0xd')]);router[_0xdd98('0xe')]('/',auth[_0xdd98('0x8')](),controller[_0xdd98('0xf')]);router[_0xdd98('0x10')]('/:id',auth[_0xdd98('0x8')](),controller[_0xdd98('0x11')]);router[_0xdd98('0x12')](_0xdd98('0xc'),auth[_0xdd98('0x8')](),controller[_0xdd98('0x13')]);module[_0xdd98('0x14')]=router;
\ No newline at end of file
index cc3e433..9aa41db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['getDataValue','split','exports','BOOLEAN','STRING','setDataValue','crudPermissions','join'];(function(_0x23a99d,_0xaddad1){var _0xb77fd6=function(_0x52e33b){while(--_0x52e33b){_0x23a99d['push'](_0x23a99d['shift']());}};_0xb77fd6(++_0xaddad1);}(_0xb9a7,0x112));var _0x7b9a=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xb9a7[_0x209941];return _0x1e8729;};'use strict';var Sequelize=require('sequelize');module[_0x7b9a('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x7b9a('0x1')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x7b9a('0x2')],'set':function(_0x40ef7d){this[_0x7b9a('0x3')](_0x7b9a('0x4'),_0x40ef7d?_0x40ef7d[_0x7b9a('0x5')](''):[]);},'get':function(){return this[_0x7b9a('0x6')](_0x7b9a('0x4'))?this[_0x7b9a('0x6')](_0x7b9a('0x4'))[_0x7b9a('0x7')](''):[];}}};
\ No newline at end of file
+var _0x4e81=['join','getDataValue','split','sequelize','exports','STRING','BOOLEAN','setDataValue','crudPermissions'];(function(_0x478c8a,_0x9afc92){var _0x3b6b3e=function(_0x37634e){while(--_0x37634e){_0x478c8a['push'](_0x478c8a['shift']());}};_0x3b6b3e(++_0x9afc92);}(_0x4e81,0x1bc));var _0x14e8=function(_0x57a50d,_0x2871f8){_0x57a50d=_0x57a50d-0x0;var _0x1b25b3=_0x4e81[_0x57a50d];return _0x1b25b3;};'use strict';var Sequelize=require(_0x14e8('0x0'));module[_0x14e8('0x1')]={'name':{'type':Sequelize[_0x14e8('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x14e8('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x14e8('0x2')],'set':function(_0x224121){this[_0x14e8('0x4')](_0x14e8('0x5'),_0x224121?_0x224121[_0x14e8('0x6')](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this[_0x14e8('0x7')](_0x14e8('0x5'))[_0x14e8('0x8')](''):[];}}};
\ No newline at end of file
index 0f13547..1fbc942 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c85=['model','name','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','where','merge','filter','options','UserProfileSection','include','findAll','rows','show','params','rawAttributes','intersection','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','apply','save','update','then','error','stack','index','map','fieldName','type','key'];(function(_0x2dc70d,_0x26e805){var _0x3b9ecc=function(_0x52f7ef){while(--_0x52f7ef){_0x2dc70d['push'](_0x2dc70d['shift']());}};_0x3b9ecc(++_0x26e805);}(_0x8c85,0x1e4));var _0x58c8=function(_0x59dc04,_0x95f226){_0x59dc04=_0x59dc04-0x0;var _0x1b8ccc=_0x8c85[_0x59dc04];return _0x1b8ccc;};'use strict';var emlformat=require(_0x58c8('0x0'));var rimraf=require(_0x58c8('0x1'));var zipdir=require(_0x58c8('0x2'));var jsonpatch=require(_0x58c8('0x3'));var rp=require(_0x58c8('0x4'));var moment=require('moment');var BPromise=require(_0x58c8('0x5'));var Mustache=require(_0x58c8('0x6'));var util=require(_0x58c8('0x7'));var path=require(_0x58c8('0x8'));var sox=require('sox');var csv=require(_0x58c8('0x9'));var ejs=require(_0x58c8('0xa'));var fs=require('fs');var fs_extra=require(_0x58c8('0xb'));var _=require(_0x58c8('0xc'));var squel=require(_0x58c8('0xd'));var crypto=require(_0x58c8('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x58c8('0xf'));var toCsv=require(_0x58c8('0x9'));var querystring=require('querystring');var Papa=require(_0x58c8('0x10'));var Redis=require(_0x58c8('0x11'));var authService=require(_0x58c8('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x58c8('0x13'));var hardwareService=require(_0x58c8('0x14'));var logger=require(_0x58c8('0x15'))(_0x58c8('0x16'));var utils=require(_0x58c8('0x17'));var config=require(_0x58c8('0x18'));var licenseUtil=require(_0x58c8('0x19'));var db=require(_0x58c8('0x1a'))['db'];function respondWithStatusCode(_0x2f6b2e,_0x4d5a8d){_0x4d5a8d=_0x4d5a8d||0xcc;return function(_0xd706b2){if(_0xd706b2){return _0x2f6b2e[_0x58c8('0x1b')](_0x4d5a8d);}return _0x2f6b2e['status'](_0x4d5a8d)[_0x58c8('0x1c')]();};}function respondWithResult(_0x1282b6,_0x1eec97){_0x1eec97=_0x1eec97||0xc8;return function(_0x41e117){if(_0x41e117){return _0x1282b6['status'](_0x1eec97)['json'](_0x41e117);}};}function respondWithFilteredResult(_0x2c8b50,_0x5860f4){return function(_0x30b22d){if(_0x30b22d){var _0x2f5f4d=typeof _0x5860f4[_0x58c8('0x1d')]===_0x58c8('0x1e')&&typeof _0x5860f4[_0x58c8('0x1f')]==='undefined';var _0x1a0fb6=_0x30b22d[_0x58c8('0x20')];var _0x3c3218=_0x2f5f4d?0x0:_0x5860f4[_0x58c8('0x1d')];var _0x34b2c8=_0x2f5f4d?_0x30b22d[_0x58c8('0x20')]:_0x5860f4[_0x58c8('0x1d')]+_0x5860f4[_0x58c8('0x1f')];var _0x23a1b2;if(_0x34b2c8>=_0x1a0fb6){_0x34b2c8=_0x1a0fb6;_0x23a1b2=0xc8;}else{_0x23a1b2=0xce;}_0x2c8b50[_0x58c8('0x21')](_0x23a1b2);return _0x2c8b50[_0x58c8('0x22')](_0x58c8('0x23'),_0x3c3218+'-'+_0x34b2c8+'/'+_0x1a0fb6)[_0x58c8('0x24')](_0x30b22d);}return null;};}function patchUpdates(_0x2bbbeb){return function(_0x10afa7){try{jsonpatch[_0x58c8('0x25')](_0x10afa7,_0x2bbbeb,!![]);}catch(_0x2b0cd1){return BPromise['reject'](_0x2b0cd1);}return _0x10afa7[_0x58c8('0x26')]();};}function saveUpdates(_0xee8992,_0x2ed202){return function(_0x3aa4c1){if(_0x3aa4c1){return _0x3aa4c1[_0x58c8('0x27')](_0xee8992)['then'](function(_0x18afc8){return _0x18afc8;});}return null;};}function removeEntity(_0x1061ee,_0x28e4fb){return function(_0x287df1){if(_0x287df1){return _0x287df1['destroy']()[_0x58c8('0x28')](function(){_0x1061ee[_0x58c8('0x21')](0xcc)[_0x58c8('0x1c')]();});}};}function handleEntityNotFound(_0x2eceac,_0x1deb18){return function(_0x678980){if(!_0x678980){_0x2eceac[_0x58c8('0x1b')](0x194);}return _0x678980;};}function handleError(_0x377dcc,_0x135cf4){_0x135cf4=_0x135cf4||0x1f4;return function(_0x499995){logger[_0x58c8('0x29')](_0x499995[_0x58c8('0x2a')]);if(_0x499995['name']){delete _0x499995['name'];}_0x377dcc['status'](_0x135cf4)['send'](_0x499995);};}exports[_0x58c8('0x2b')]=function(_0x3f53d1,_0x1bf197){var _0x15c602={},_0x5a0f17={},_0x3d2bdf={'count':0x0,'rows':[]};var _0x44734e=_[_0x58c8('0x2c')](db['UserProfileSection']['rawAttributes'],function(_0x4dbe0c){return{'name':_0x4dbe0c[_0x58c8('0x2d')],'type':_0x4dbe0c[_0x58c8('0x2e')][_0x58c8('0x2f')]};});_0x5a0f17[_0x58c8('0x30')]=_[_0x58c8('0x2c')](_0x44734e,_0x58c8('0x31'));_0x5a0f17[_0x58c8('0x32')]=_[_0x58c8('0x33')](_0x3f53d1['query']);_0x5a0f17[_0x58c8('0x34')]=_['intersection'](_0x5a0f17[_0x58c8('0x30')],_0x5a0f17[_0x58c8('0x32')]);_0x15c602[_0x58c8('0x35')]=_['intersection'](_0x5a0f17[_0x58c8('0x30')],qs[_0x58c8('0x36')](_0x3f53d1[_0x58c8('0x32')][_0x58c8('0x36')]));_0x15c602[_0x58c8('0x35')]=_0x15c602[_0x58c8('0x35')][_0x58c8('0x37')]?_0x15c602[_0x58c8('0x35')]:_0x5a0f17[_0x58c8('0x30')];if(!_0x3f53d1[_0x58c8('0x32')][_0x58c8('0x38')](_0x58c8('0x39'))){_0x15c602[_0x58c8('0x1f')]=qs[_0x58c8('0x1f')](_0x3f53d1[_0x58c8('0x32')][_0x58c8('0x1f')]);_0x15c602[_0x58c8('0x1d')]=qs[_0x58c8('0x1d')](_0x3f53d1[_0x58c8('0x32')][_0x58c8('0x1d')]);}_0x15c602[_0x58c8('0x3a')]=qs['sort'](_0x3f53d1['query']['sort']);_0x15c602['where']=qs[_0x58c8('0x34')](_['pick'](_0x3f53d1['query'],_0x5a0f17[_0x58c8('0x34')]),_0x44734e);if(_0x3f53d1['query']['filter']){_0x15c602[_0x58c8('0x3b')]=_[_0x58c8('0x3c')](_0x15c602[_0x58c8('0x3b')],{'$or':_['map'](_0x44734e,function(_0x82699c){if(_0x82699c[_0x58c8('0x2e')]!=='VIRTUAL'){var _0x5ac2ab={};_0x5ac2ab[_0x82699c[_0x58c8('0x31')]]={'$like':'%'+_0x3f53d1['query'][_0x58c8('0x3d')]+'%'};return _0x5ac2ab;}})});}_0x15c602=_[_0x58c8('0x3c')]({},_0x15c602,_0x3f53d1[_0x58c8('0x3e')]);var _0x32b759={'where':_0x15c602[_0x58c8('0x3b')]};return db[_0x58c8('0x3f')]['count'](_0x32b759)[_0x58c8('0x28')](function(_0x2c029d){_0x3d2bdf['count']=_0x2c029d;if(_0x3f53d1[_0x58c8('0x32')]['includeAll']){_0x15c602[_0x58c8('0x40')]=[{'all':!![]}];}return db[_0x58c8('0x3f')][_0x58c8('0x41')](_0x15c602);})[_0x58c8('0x28')](function(_0x13aec2){_0x3d2bdf[_0x58c8('0x42')]=_0x13aec2;return _0x3d2bdf;})[_0x58c8('0x28')](respondWithFilteredResult(_0x1bf197,_0x15c602))['catch'](handleError(_0x1bf197,null));};exports[_0x58c8('0x43')]=function(_0x1a40a9,_0x146b66){var _0x291156={'raw':![],'where':{'id':_0x1a40a9[_0x58c8('0x44')]['id']}},_0x171ad1={};_0x171ad1[_0x58c8('0x30')]=_['keys'](db[_0x58c8('0x3f')][_0x58c8('0x45')]);_0x171ad1[_0x58c8('0x32')]=_[_0x58c8('0x33')](_0x1a40a9[_0x58c8('0x32')]);_0x171ad1[_0x58c8('0x34')]=_[_0x58c8('0x46')](_0x171ad1[_0x58c8('0x30')],_0x171ad1['query']);_0x291156[_0x58c8('0x35')]=_[_0x58c8('0x46')](_0x171ad1[_0x58c8('0x30')],qs[_0x58c8('0x36')](_0x1a40a9[_0x58c8('0x32')]['fields']));_0x291156[_0x58c8('0x35')]=_0x291156['attributes']['length']?_0x291156[_0x58c8('0x35')]:_0x171ad1[_0x58c8('0x30')];if(_0x1a40a9[_0x58c8('0x32')]['includeAll']){_0x291156[_0x58c8('0x40')]=[{'all':!![]}];}_0x291156=_[_0x58c8('0x3c')]({},_0x291156,_0x1a40a9[_0x58c8('0x3e')]);return db[_0x58c8('0x3f')][_0x58c8('0x47')](_0x291156)[_0x58c8('0x28')](handleEntityNotFound(_0x146b66,null))[_0x58c8('0x28')](respondWithResult(_0x146b66,null))[_0x58c8('0x48')](handleError(_0x146b66,null));};exports['create']=function(_0x593d8a,_0x49f9bd){return db[_0x58c8('0x3f')][_0x58c8('0x49')](_0x593d8a['body'],{})['then'](respondWithResult(_0x49f9bd,0xc9))['catch'](handleError(_0x49f9bd,null));};exports[_0x58c8('0x27')]=function(_0x4b54f2,_0x57eea6){if(_0x4b54f2['body']['id']){delete _0x4b54f2[_0x58c8('0x4a')]['id'];}return db[_0x58c8('0x3f')][_0x58c8('0x47')]({'where':{'id':_0x4b54f2[_0x58c8('0x44')]['id']}})[_0x58c8('0x28')](handleEntityNotFound(_0x57eea6,null))['then'](saveUpdates(_0x4b54f2[_0x58c8('0x4a')],null))[_0x58c8('0x28')](respondWithResult(_0x57eea6,null))[_0x58c8('0x48')](handleError(_0x57eea6,null));};exports['destroy']=function(_0x225fef,_0x459ce0){return db[_0x58c8('0x3f')]['find']({'where':{'id':_0x225fef[_0x58c8('0x44')]['id']}})['then'](handleEntityNotFound(_0x459ce0,null))['then'](removeEntity(_0x459ce0,null))[_0x58c8('0x48')](handleError(_0x459ce0,null));};exports[_0x58c8('0x4b')]=function(_0x8eb508,_0x1ebac8){return db[_0x58c8('0x3f')]['describe']()[_0x58c8('0x28')](respondWithResult(_0x1ebac8,null))['catch'](handleError(_0x1ebac8,null));};
\ No newline at end of file
+var _0x025e=['order','sort','where','pick','filter','merge','VIRTUAL','UserProfileSection','includeAll','include','findAll','catch','show','keys','options','create','body','update','params','find','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','offset','undefined','count','limit','Content-Range','json','apply','reject','save','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','nolimit'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x025e,0xa5));var _0xe025=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x025e[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xe025('0x0'));var rimraf=require(_0xe025('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe025('0x2'));var rp=require('request-promise');var moment=require(_0xe025('0x3'));var BPromise=require(_0xe025('0x4'));var Mustache=require('mustache');var util=require(_0xe025('0x5'));var path=require(_0xe025('0x6'));var sox=require(_0xe025('0x7'));var csv=require(_0xe025('0x8'));var ejs=require(_0xe025('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe025('0xa'));var squel=require('squel');var crypto=require(_0xe025('0xb'));var jsforce=require(_0xe025('0xc'));var deskjs=require(_0xe025('0xd'));var toCsv=require('to-csv');var querystring=require(_0xe025('0xe'));var Papa=require('papaparse');var Redis=require(_0xe025('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe025('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe025('0x11'))(_0xe025('0x12'));var utils=require(_0xe025('0x13'));var config=require(_0xe025('0x14'));var licenseUtil=require(_0xe025('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10f2ef,_0x3cca98){_0x3cca98=_0x3cca98||0xcc;return function(_0x2a3c60){if(_0x2a3c60){return _0x10f2ef['sendStatus'](_0x3cca98);}return _0x10f2ef[_0xe025('0x16')](_0x3cca98)['end']();};}function respondWithResult(_0x482dd0,_0x33ab26){_0x33ab26=_0x33ab26||0xc8;return function(_0x73f26a){if(_0x73f26a){return _0x482dd0[_0xe025('0x16')](_0x33ab26)['json'](_0x73f26a);}};}function respondWithFilteredResult(_0x28aaa3,_0x1bdcd5){return function(_0x5b64a2){if(_0x5b64a2){var _0x8b638b=typeof _0x1bdcd5[_0xe025('0x17')]==='undefined'&&typeof _0x1bdcd5['limit']===_0xe025('0x18');var _0xdc5de0=_0x5b64a2[_0xe025('0x19')];var _0xa50a2b=_0x8b638b?0x0:_0x1bdcd5[_0xe025('0x17')];var _0x261877=_0x8b638b?_0x5b64a2[_0xe025('0x19')]:_0x1bdcd5['offset']+_0x1bdcd5[_0xe025('0x1a')];var _0x1b9e1b;if(_0x261877>=_0xdc5de0){_0x261877=_0xdc5de0;_0x1b9e1b=0xc8;}else{_0x1b9e1b=0xce;}_0x28aaa3[_0xe025('0x16')](_0x1b9e1b);return _0x28aaa3['set'](_0xe025('0x1b'),_0xa50a2b+'-'+_0x261877+'/'+_0xdc5de0)[_0xe025('0x1c')](_0x5b64a2);}return null;};}function patchUpdates(_0x3a90f9){return function(_0x19de00){try{jsonpatch[_0xe025('0x1d')](_0x19de00,_0x3a90f9,!![]);}catch(_0x1a05d4){return BPromise[_0xe025('0x1e')](_0x1a05d4);}return _0x19de00[_0xe025('0x1f')]();};}function saveUpdates(_0x269ff3,_0x2c51e2){return function(_0x93c443){if(_0x93c443){return _0x93c443['update'](_0x269ff3)[_0xe025('0x20')](function(_0x42d082){return _0x42d082;});}return null;};}function removeEntity(_0x6f879b,_0x5af367){return function(_0x2aadcf){if(_0x2aadcf){return _0x2aadcf[_0xe025('0x21')]()[_0xe025('0x20')](function(){_0x6f879b[_0xe025('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4daabc,_0x10bff4){return function(_0x1b4fc9){if(!_0x1b4fc9){_0x4daabc['sendStatus'](0x194);}return _0x1b4fc9;};}function handleError(_0x4bd5c3,_0x400966){_0x400966=_0x400966||0x1f4;return function(_0x2c1878){logger['error'](_0x2c1878[_0xe025('0x22')]);if(_0x2c1878['name']){delete _0x2c1878[_0xe025('0x23')];}_0x4bd5c3[_0xe025('0x16')](_0x400966)[_0xe025('0x24')](_0x2c1878);};}exports[_0xe025('0x25')]=function(_0xf7546,_0x35e923){var _0x427a80={},_0x1a85a5={},_0x2392ef={'count':0x0,'rows':[]};var _0x116991=_[_0xe025('0x26')](db['UserProfileSection'][_0xe025('0x27')],function(_0x5dec21){return{'name':_0x5dec21[_0xe025('0x28')],'type':_0x5dec21[_0xe025('0x29')][_0xe025('0x2a')]};});_0x1a85a5[_0xe025('0x2b')]=_['map'](_0x116991,_0xe025('0x23'));_0x1a85a5['query']=_['keys'](_0xf7546[_0xe025('0x2c')]);_0x1a85a5[_0xe025('0x2d')]=_['intersection'](_0x1a85a5[_0xe025('0x2b')],_0x1a85a5[_0xe025('0x2c')]);_0x427a80[_0xe025('0x2e')]=_[_0xe025('0x2f')](_0x1a85a5[_0xe025('0x2b')],qs[_0xe025('0x30')](_0xf7546[_0xe025('0x2c')][_0xe025('0x30')]));_0x427a80['attributes']=_0x427a80['attributes'][_0xe025('0x31')]?_0x427a80[_0xe025('0x2e')]:_0x1a85a5[_0xe025('0x2b')];if(!_0xf7546[_0xe025('0x2c')]['hasOwnProperty'](_0xe025('0x32'))){_0x427a80[_0xe025('0x1a')]=qs[_0xe025('0x1a')](_0xf7546[_0xe025('0x2c')]['limit']);_0x427a80[_0xe025('0x17')]=qs[_0xe025('0x17')](_0xf7546[_0xe025('0x2c')][_0xe025('0x17')]);}_0x427a80[_0xe025('0x33')]=qs['sort'](_0xf7546[_0xe025('0x2c')][_0xe025('0x34')]);_0x427a80[_0xe025('0x35')]=qs[_0xe025('0x2d')](_[_0xe025('0x36')](_0xf7546[_0xe025('0x2c')],_0x1a85a5[_0xe025('0x2d')]),_0x116991);if(_0xf7546[_0xe025('0x2c')][_0xe025('0x37')]){_0x427a80['where']=_[_0xe025('0x38')](_0x427a80[_0xe025('0x35')],{'$or':_[_0xe025('0x26')](_0x116991,function(_0x14161e){if(_0x14161e[_0xe025('0x29')]!==_0xe025('0x39')){var _0x21c2b2={};_0x21c2b2[_0x14161e[_0xe025('0x23')]]={'$like':'%'+_0xf7546[_0xe025('0x2c')]['filter']+'%'};return _0x21c2b2;}})});}_0x427a80=_['merge']({},_0x427a80,_0xf7546['options']);var _0x3a0f23={'where':_0x427a80[_0xe025('0x35')]};return db[_0xe025('0x3a')][_0xe025('0x19')](_0x3a0f23)[_0xe025('0x20')](function(_0x2e048a){_0x2392ef['count']=_0x2e048a;if(_0xf7546[_0xe025('0x2c')][_0xe025('0x3b')]){_0x427a80[_0xe025('0x3c')]=[{'all':!![]}];}return db['UserProfileSection'][_0xe025('0x3d')](_0x427a80);})['then'](function(_0x5d72c7){_0x2392ef['rows']=_0x5d72c7;return _0x2392ef;})[_0xe025('0x20')](respondWithFilteredResult(_0x35e923,_0x427a80))[_0xe025('0x3e')](handleError(_0x35e923,null));};exports[_0xe025('0x3f')]=function(_0x522c4e,_0x36fafa){var _0x22f16d={'raw':![],'where':{'id':_0x522c4e['params']['id']}},_0x47b002={};_0x47b002['model']=_['keys'](db[_0xe025('0x3a')]['rawAttributes']);_0x47b002[_0xe025('0x2c')]=_[_0xe025('0x40')](_0x522c4e[_0xe025('0x2c')]);_0x47b002[_0xe025('0x2d')]=_['intersection'](_0x47b002[_0xe025('0x2b')],_0x47b002[_0xe025('0x2c')]);_0x22f16d[_0xe025('0x2e')]=_[_0xe025('0x2f')](_0x47b002[_0xe025('0x2b')],qs[_0xe025('0x30')](_0x522c4e[_0xe025('0x2c')][_0xe025('0x30')]));_0x22f16d[_0xe025('0x2e')]=_0x22f16d[_0xe025('0x2e')][_0xe025('0x31')]?_0x22f16d[_0xe025('0x2e')]:_0x47b002[_0xe025('0x2b')];if(_0x522c4e[_0xe025('0x2c')][_0xe025('0x3b')]){_0x22f16d['include']=[{'all':!![]}];}_0x22f16d=_['merge']({},_0x22f16d,_0x522c4e[_0xe025('0x41')]);return db[_0xe025('0x3a')]['find'](_0x22f16d)[_0xe025('0x20')](handleEntityNotFound(_0x36fafa,null))['then'](respondWithResult(_0x36fafa,null))[_0xe025('0x3e')](handleError(_0x36fafa,null));};exports[_0xe025('0x42')]=function(_0x14dc09,_0x4c9ec1){return db[_0xe025('0x3a')][_0xe025('0x42')](_0x14dc09[_0xe025('0x43')],{})[_0xe025('0x20')](respondWithResult(_0x4c9ec1,0xc9))[_0xe025('0x3e')](handleError(_0x4c9ec1,null));};exports[_0xe025('0x44')]=function(_0x36b970,_0x33a727){if(_0x36b970['body']['id']){delete _0x36b970[_0xe025('0x43')]['id'];}return db[_0xe025('0x3a')]['find']({'where':{'id':_0x36b970[_0xe025('0x45')]['id']}})[_0xe025('0x20')](handleEntityNotFound(_0x33a727,null))[_0xe025('0x20')](saveUpdates(_0x36b970[_0xe025('0x43')],null))[_0xe025('0x20')](respondWithResult(_0x33a727,null))['catch'](handleError(_0x33a727,null));};exports['destroy']=function(_0x168766,_0x5c1a17){return db[_0xe025('0x3a')][_0xe025('0x46')]({'where':{'id':_0x168766['params']['id']}})[_0xe025('0x20')](handleEntityNotFound(_0x5c1a17,null))[_0xe025('0x20')](removeEntity(_0x5c1a17,null))['catch'](handleError(_0x5c1a17,null));};exports[_0xe025('0x47')]=function(_0x3c1fc8,_0x43ea44){return db[_0xe025('0x3a')][_0xe025('0x47')]()['then'](respondWithResult(_0x43ea44,null))[_0xe025('0x3e')](handleError(_0x43ea44,null));};
\ No newline at end of file
index 7c0c765..7ac0196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3853=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./userProfileSection.attributes','exports','UserProfileSection','user_profile_has_sections','sectionId','lodash'];(function(_0x3a7a9c,_0x24f7d6){var _0x59156e=function(_0x5bc930){while(--_0x5bc930){_0x3a7a9c['push'](_0x3a7a9c['shift']());}};_0x59156e(++_0x24f7d6);}(_0x3853,0x1af));var _0x3385=function(_0x58c3b2,_0x445a89){_0x58c3b2=_0x58c3b2-0x0;var _0x4b2146=_0x3853[_0x58c3b2];return _0x4b2146;};'use strict';var _=require(_0x3385('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3385('0x1'));var moment=require(_0x3385('0x2'));var BPromise=require(_0x3385('0x3'));var rp=require(_0x3385('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3385('0x5'));var config=require(_0x3385('0x6'));var attributes=require(_0x3385('0x7'));module[_0x3385('0x8')]=function(_0x41fd2a,_0x5d4d3a){return _0x41fd2a['define'](_0x3385('0x9'),attributes,{'tableName':_0x3385('0xa'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x3385('0xb'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xda93=['rimraf','./userProfileSection.attributes','exports','user_profile_has_sections','compositeIndex','sectionId','util','api','moment','bluebird','request-promise','path'];(function(_0x43776a,_0x4eb74c){var _0x18eb8f=function(_0x319afb){while(--_0x319afb){_0x43776a['push'](_0x43776a['shift']());}};_0x18eb8f(++_0x4eb74c);}(_0xda93,0x126));var _0x3da9=function(_0x2c0118,_0x5ac359){_0x2c0118=_0x2c0118-0x0;var _0x4f002c=_0xda93[_0x2c0118];return _0x4f002c;};'use strict';var _=require('lodash');var util=require(_0x3da9('0x0'));var logger=require('../../config/logger')(_0x3da9('0x1'));var moment=require(_0x3da9('0x2'));var BPromise=require(_0x3da9('0x3'));var rp=require(_0x3da9('0x4'));var fs=require('fs');var path=require(_0x3da9('0x5'));var rimraf=require(_0x3da9('0x6'));var config=require('../../config/environment');var attributes=require(_0x3da9('0x7'));module[_0x3da9('0x8')]=function(_0x12b8b0,_0x512bb9){return _0x12b8b0['define']('UserProfileSection',attributes,{'tableName':_0x3da9('0x9'),'paranoid':![],'indexes':[{'name':_0x3da9('0xa'),'fields':[_0x3da9('0xb'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index 1c4ab69..ac684a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5844=['code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','info','UserProfileSection,\x20%s,\x20%s','debug','stringify','error'];(function(_0x2bb9a0,_0x575816){var _0x7d59e=function(_0x3e4eeb){while(--_0x3e4eeb){_0x2bb9a0['push'](_0x2bb9a0['shift']());}};_0x7d59e(++_0x575816);}(_0x5844,0x10d));var _0x4584=function(_0x54ee04,_0x3aa9d6){_0x54ee04=_0x54ee04-0x0;var _0x564f3f=_0x5844[_0x54ee04];return _0x564f3f;};'use strict';var _=require(_0x4584('0x0'));var util=require(_0x4584('0x1'));var moment=require(_0x4584('0x2'));var BPromise=require(_0x4584('0x3'));var rs=require(_0x4584('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4584('0x5'))['db'];var utils=require(_0x4584('0x6'));var logger=require(_0x4584('0x7'))(_0x4584('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4584('0x9')][_0x4584('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x63747f,_0xee6aeb,_0x3ee4c8){return new BPromise(function(_0xdcbc2d,_0x24b6e7){return client[_0x4584('0xb')](_0x63747f,_0x3ee4c8)['then'](function(_0x244815){logger[_0x4584('0xc')](_0x4584('0xd'),_0xee6aeb,'request\x20sent');logger[_0x4584('0xe')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0xee6aeb,'request\x20sent',JSON[_0x4584('0xf')](_0x244815));if(_0x244815[_0x4584('0x10')]){if(_0x244815['error'][_0x4584('0x11')]===0x1f4){logger[_0x4584('0x10')](_0x4584('0xd'),_0xee6aeb,_0x244815[_0x4584('0x10')][_0x4584('0x12')]);return _0x24b6e7(_0x244815[_0x4584('0x10')][_0x4584('0x12')]);}logger['error']('UserProfileSection,\x20%s,\x20%s',_0xee6aeb,_0x244815[_0x4584('0x10')][_0x4584('0x12')]);return _0xdcbc2d(_0x244815[_0x4584('0x10')][_0x4584('0x12')]);}else{logger[_0x4584('0xc')](_0x4584('0xd'),_0xee6aeb,_0x4584('0x13'));_0xdcbc2d(_0x244815[_0x4584('0x14')][_0x4584('0x12')]);}})[_0x4584('0x15')](function(_0x425bc0){logger[_0x4584('0x10')](_0x4584('0xd'),_0xee6aeb,_0x425bc0);_0x24b6e7(_0x425bc0);});});}
\ No newline at end of file
+var _0x00e0=['request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','jayson/promise','client','request','info','UserProfileSection,\x20%s,\x20%s'];(function(_0x58dc25,_0x49b9d5){var _0x21b0a7=function(_0x38a186){while(--_0x38a186){_0x58dc25['push'](_0x58dc25['shift']());}};_0x21b0a7(++_0x49b9d5);}(_0x00e0,0x1e3));var _0x000e=function(_0x32803f,_0x169b13){_0x32803f=_0x32803f-0x0;var _0x4be0f3=_0x00e0[_0x32803f];return _0x4be0f3;};'use strict';var _=require(_0x000e('0x0'));var util=require(_0x000e('0x1'));var moment=require(_0x000e('0x2'));var BPromise=require('bluebird');var rs=require(_0x000e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x000e('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x000e('0x5'));var client=jayson[_0x000e('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43d523,_0x3c6d9d,_0x3a2025){return new BPromise(function(_0x243cd6,_0x4974e1){return client[_0x000e('0x7')](_0x43d523,_0x3a2025)['then'](function(_0x3fe7f8){logger[_0x000e('0x8')](_0x000e('0x9'),_0x3c6d9d,_0x000e('0xa'));logger[_0x000e('0xb')](_0x000e('0xc'),_0x3c6d9d,_0x000e('0xa'),JSON['stringify'](_0x3fe7f8));if(_0x3fe7f8['error']){if(_0x3fe7f8['error']['code']===0x1f4){logger['error'](_0x000e('0x9'),_0x3c6d9d,_0x3fe7f8[_0x000e('0xd')][_0x000e('0xe')]);return _0x4974e1(_0x3fe7f8[_0x000e('0xd')][_0x000e('0xe')]);}logger[_0x000e('0xd')](_0x000e('0x9'),_0x3c6d9d,_0x3fe7f8[_0x000e('0xd')][_0x000e('0xe')]);return _0x243cd6(_0x3fe7f8[_0x000e('0xd')][_0x000e('0xe')]);}else{logger[_0x000e('0x8')](_0x000e('0x9'),_0x3c6d9d,_0x000e('0xa'));_0x243cd6(_0x3fe7f8[_0x000e('0xf')][_0x000e('0xe')]);}})[_0x000e('0x10')](function(_0x15c337){logger['error'](_0x000e('0x9'),_0x3c6d9d,_0x15c337);_0x4974e1(_0x15c337);});});}
\ No newline at end of file
index a0b10be..1f5a816 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x1ec047,_0x548f93){var _0x121dcc=function(_0xd22ced){while(--_0xd22ced){_0x1ec047['push'](_0x1ec047['shift']());}};_0x121dcc(++_0x548f93);}(_0xe706,0xa3));var _0x6e70=function(_0x946779,_0x31cd75){_0x946779=_0x946779-0x0;var _0x40292f=_0xe706[_0x946779];return _0x40292f;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x46c2e9,_0x8176f9){var _0x19fdde=function(_0x1e7ce2){while(--_0x1e7ce2){_0x46c2e9['push'](_0x46c2e9['shift']());}};_0x19fdde(++_0x8176f9);}(_0x70e0,0x17b));var _0x070e=function(_0x4df524,_0x24b9c1){_0x4df524=_0x4df524-0x0;var _0x58ca23=_0x70e0[_0x4df524];return _0x58ca23;};'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 3658d91..8c31f77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce6=['exports','sequelize'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4ce6,0x1eb));var _0x64ce=function(_0x47df54,_0x1aeb61){_0x47df54=_0x47df54-0x0;var _0x261b87=_0x4ce6[_0x47df54];return _0x261b87;};'use strict';var Sequelize=require(_0x64ce('0x0'));module[_0x64ce('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa002=['exports','INTEGER','sequelize'];(function(_0x12fc9d,_0x4f6e22){var _0x4ff791=function(_0x22afbb){while(--_0x22afbb){_0x12fc9d['push'](_0x12fc9d['shift']());}};_0x4ff791(++_0x4f6e22);}(_0xa002,0x17c));var _0x2a00=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xa002[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require(_0x2a00('0x0'));module[_0x2a00('0x1')]={'penalty':{'type':Sequelize[_0x2a00('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 5311b59..9413f6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323f=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues'];(function(_0x29984f,_0x3e9a07){var _0x420a97=function(_0x9667b6){while(--_0x9667b6){_0x29984f['push'](_0x29984f['shift']());}};_0x420a97(++_0x3e9a07);}(_0x323f,0x1ee));var _0xf323=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x323f[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var util=require(_0xf323('0x0'));var logger=require('../../config/logger')(_0xf323('0x1'));var moment=require(_0xf323('0x2'));var BPromise=require(_0xf323('0x3'));var rp=require(_0xf323('0x4'));var fs=require('fs');var path=require(_0xf323('0x5'));var rimraf=require(_0xf323('0x6'));var config=require(_0xf323('0x7'));var attributes=require(_0xf323('0x8'));module[_0xf323('0x9')]=function(_0x371707,_0x5d7d60){return _0x371707[_0xf323('0xa')](_0xf323('0xb'),attributes,{'tableName':_0xf323('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b0d=['define','UserSmsQueue','user_has_sms_queues','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x417f4c,_0x25a081){var _0x317de0=function(_0x3ed7a2){while(--_0x3ed7a2){_0x417f4c['push'](_0x417f4c['shift']());}};_0x317de0(++_0x25a081);}(_0x9b0d,0xb7));var _0xd9b0=function(_0x388972,_0x2d8f0b){_0x388972=_0x388972-0x0;var _0x8fc419=_0x9b0d[_0x388972];return _0x8fc419;};'use strict';var _=require('lodash');var util=require(_0xd9b0('0x0'));var logger=require(_0xd9b0('0x1'))(_0xd9b0('0x2'));var moment=require(_0xd9b0('0x3'));var BPromise=require('bluebird');var rp=require(_0xd9b0('0x4'));var fs=require('fs');var path=require(_0xd9b0('0x5'));var rimraf=require(_0xd9b0('0x6'));var config=require(_0xd9b0('0x7'));var attributes=require('./userSmsQueue.attributes');module[_0xd9b0('0x8')]=function(_0x21798d,_0x41dad9){return _0x21798d[_0xd9b0('0x9')](_0xd9b0('0xa'),attributes,{'tableName':_0xd9b0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 90d488e..5e4eda7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0294=['../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','stringify','error','message','UserSmsQueue,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4899bd,_0x378bb2){var _0x104a79=function(_0x17ec29){while(--_0x17ec29){_0x4899bd['push'](_0x4899bd['shift']());}};_0x104a79(++_0x378bb2);}(_0x0294,0x1b0));var _0x4029=function(_0x6141bf,_0x10c035){_0x6141bf=_0x6141bf-0x0;var _0x4c8cd7=_0x0294[_0x6141bf];return _0x4c8cd7;};'use strict';var _=require(_0x4029('0x0'));var util=require(_0x4029('0x1'));var moment=require(_0x4029('0x2'));var BPromise=require(_0x4029('0x3'));var rs=require(_0x4029('0x4'));var fs=require('fs');var Redis=require(_0x4029('0x5'));var db=require(_0x4029('0x6'))['db'];var utils=require(_0x4029('0x7'));var logger=require(_0x4029('0x8'))(_0x4029('0x9'));var config=require(_0x4029('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x4029('0xb')][_0x4029('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x6f06ad,_0x13854a,_0x119715){return new BPromise(function(_0x2e5c13,_0x23cb26){return client[_0x4029('0xd')](_0x6f06ad,_0x119715)['then'](function(_0x43f3d9){logger[_0x4029('0xe')]('UserSmsQueue,\x20%s,\x20%s',_0x13854a,'request\x20sent');logger['debug']('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x13854a,_0x4029('0xf'),JSON[_0x4029('0x10')](_0x43f3d9));if(_0x43f3d9[_0x4029('0x11')]){if(_0x43f3d9[_0x4029('0x11')]['code']===0x1f4){logger[_0x4029('0x11')]('UserSmsQueue,\x20%s,\x20%s',_0x13854a,_0x43f3d9[_0x4029('0x11')][_0x4029('0x12')]);return _0x23cb26(_0x43f3d9['error']['message']);}logger[_0x4029('0x11')]('UserSmsQueue,\x20%s,\x20%s',_0x13854a,_0x43f3d9['error']['message']);return _0x2e5c13(_0x43f3d9[_0x4029('0x11')][_0x4029('0x12')]);}else{logger['info'](_0x4029('0x13'),_0x13854a,_0x4029('0xf'));_0x2e5c13(_0x43f3d9[_0x4029('0x14')][_0x4029('0x12')]);}})[_0x4029('0x15')](function(_0x39e495){logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x13854a,_0x39e495);_0x23cb26(_0x39e495);});});}
\ No newline at end of file
+var _0x7f28=['message','request\x20sent','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x440ba5,_0x573515){var _0x218106=function(_0x1b9eb6){while(--_0x1b9eb6){_0x440ba5['push'](_0x440ba5['shift']());}};_0x218106(++_0x573515);}(_0x7f28,0x180));var _0x87f2=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7f28[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x87f2('0x0'));var rs=require(_0x87f2('0x1'));var fs=require('fs');var Redis=require(_0x87f2('0x2'));var db=require(_0x87f2('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x87f2('0x4'));var jayson=require(_0x87f2('0x5'));var client=jayson['client'][_0x87f2('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x1bb897,_0x2b33bb,_0x30bea2){return new BPromise(function(_0x121901,_0x254ecf){return client[_0x87f2('0x7')](_0x1bb897,_0x30bea2)[_0x87f2('0x8')](function(_0x19d9c5){logger[_0x87f2('0x9')](_0x87f2('0xa'),_0x2b33bb,'request\x20sent');logger[_0x87f2('0xb')](_0x87f2('0xc'),_0x2b33bb,'request\x20sent',JSON[_0x87f2('0xd')](_0x19d9c5));if(_0x19d9c5['error']){if(_0x19d9c5[_0x87f2('0xe')]['code']===0x1f4){logger[_0x87f2('0xe')](_0x87f2('0xa'),_0x2b33bb,_0x19d9c5[_0x87f2('0xe')][_0x87f2('0xf')]);return _0x254ecf(_0x19d9c5[_0x87f2('0xe')][_0x87f2('0xf')]);}logger[_0x87f2('0xe')]('UserSmsQueue,\x20%s,\x20%s',_0x2b33bb,_0x19d9c5[_0x87f2('0xe')]['message']);return _0x121901(_0x19d9c5[_0x87f2('0xe')]['message']);}else{logger[_0x87f2('0x9')](_0x87f2('0xa'),_0x2b33bb,_0x87f2('0x10'));_0x121901(_0x19d9c5[_0x87f2('0x11')][_0x87f2('0xf')]);}})[_0x87f2('0x12')](function(_0x1874f5){logger[_0x87f2('0xe')](_0x87f2('0xa'),_0x2b33bb,_0x1874f5);_0x254ecf(_0x1874f5);});});}
\ 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 3d01e12..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(_0x3ba287,_0x28905a){var _0x197fb2=function(_0x387c4a){while(--_0x387c4a){_0x3ba287['push'](_0x3ba287['shift']());}};_0x197fb2(++_0x28905a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9a42fac..d583d63 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(_0x4ca6dd,_0x47ed65){var _0x21136d=function(_0x310d99){while(--_0x310d99){_0x4ca6dd['push'](_0x4ca6dd['shift']());}};_0x21136d(++_0x47ed65);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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(_0x1cc07e,_0x527192){var _0xb762fc=function(_0x408f78){while(--_0x408f78){_0x1cc07e['push'](_0x1cc07e['shift']());}};_0xb762fc(++_0x527192);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 665f3c6..94f2f48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc521=['INTEGER','sequelize'];(function(_0x1fb038,_0xc3f69b){var _0x1600dc=function(_0x2a040e){while(--_0x2a040e){_0x1fb038['push'](_0x1fb038['shift']());}};_0x1600dc(++_0xc3f69b);}(_0xc521,0x67));var _0x1c52=function(_0x39ebe2,_0x15aeaa){_0x39ebe2=_0x39ebe2-0x0;var _0x48132a=_0xc521[_0x39ebe2];return _0x48132a;};'use strict';var Sequelize=require(_0x1c52('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x1c52('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x74e2=['sequelize','exports','INTEGER'];(function(_0xaf2c53,_0x5986ee){var _0x232d86=function(_0x388637){while(--_0x388637){_0xaf2c53['push'](_0xaf2c53['shift']());}};_0x232d86(++_0x5986ee);}(_0x74e2,0x1d4));var _0x274e=function(_0x1a9607,_0x39d774){_0x1a9607=_0x1a9607-0x0;var _0x43773c=_0x74e2[_0x1a9607];return _0x43773c;};'use strict';var Sequelize=require(_0x274e('0x0'));module[_0x274e('0x1')]={'penalty':{'type':Sequelize[_0x274e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index ed3a79a..5fed28b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3f5=['moment','request-promise','path','exports','define','UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger','api'];(function(_0xc5a279,_0x155360){var _0xc755d3=function(_0x15051c){while(--_0x15051c){_0xc5a279['push'](_0xc5a279['shift']());}};_0xc755d3(++_0x155360);}(_0xf3f5,0x1a9));var _0x5f3f=function(_0x616617,_0x54a7c0){_0x616617=_0x616617-0x0;var _0x188245=_0xf3f5[_0x616617];return _0x188245;};'use strict';var _=require(_0x5f3f('0x0'));var util=require(_0x5f3f('0x1'));var logger=require(_0x5f3f('0x2'))(_0x5f3f('0x3'));var moment=require(_0x5f3f('0x4'));var BPromise=require('bluebird');var rp=require(_0x5f3f('0x5'));var fs=require('fs');var path=require(_0x5f3f('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userVoiceQueue.attributes');module[_0x5f3f('0x7')]=function(_0x208f61,_0x1c85a3){return _0x208f61[_0x5f3f('0x8')](_0x5f3f('0x9'),attributes,{'tableName':_0x5f3f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x54ac=['UserVoiceQueue','user_has_voice_queues','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x313df3,_0x4fca45){var _0x241d59=function(_0x452786){while(--_0x452786){_0x313df3['push'](_0x313df3['shift']());}};_0x241d59(++_0x4fca45);}(_0x54ac,0x7a));var _0xc54a=function(_0x2567f0,_0x4fa60){_0x2567f0=_0x2567f0-0x0;var _0x14852a=_0x54ac[_0x2567f0];return _0x14852a;};'use strict';var _=require(_0xc54a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc54a('0x1'));var moment=require(_0xc54a('0x2'));var BPromise=require(_0xc54a('0x3'));var rp=require(_0xc54a('0x4'));var fs=require('fs');var path=require(_0xc54a('0x5'));var rimraf=require(_0xc54a('0x6'));var config=require(_0xc54a('0x7'));var attributes=require('./userVoiceQueue.attributes');module[_0xc54a('0x8')]=function(_0x3c76ec,_0x51218a){return _0x3c76ec[_0xc54a('0x9')](_0xc54a('0xa'),attributes,{'tableName':_0xc54a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78bd677..d4501ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['../../config/logger','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserVoiceQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x77e6,0x125));var _0x677e=function(_0x2a710b,_0xbdd084){_0x2a710b=_0x2a710b-0x0;var _0x2f9e3e=_0x77e6[_0x2a710b];return _0x2f9e3e;};'use strict';var _=require(_0x677e('0x0'));var util=require(_0x677e('0x1'));var moment=require(_0x677e('0x2'));var BPromise=require(_0x677e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x677e('0x4'));var db=require(_0x677e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x677e('0x6'))(_0x677e('0x7'));var config=require(_0x677e('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x677e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4e67e2,_0x409ad9,_0x4159ca){return new BPromise(function(_0x52cf2c,_0x5b05d1){return client[_0x677e('0xa')](_0x4e67e2,_0x4159ca)[_0x677e('0xb')](function(_0x579434){logger[_0x677e('0xc')]('UserVoiceQueue,\x20%s,\x20%s',_0x409ad9,_0x677e('0xd'));logger[_0x677e('0xe')](_0x677e('0xf'),_0x409ad9,_0x677e('0xd'),JSON[_0x677e('0x10')](_0x579434));if(_0x579434[_0x677e('0x11')]){if(_0x579434[_0x677e('0x11')][_0x677e('0x12')]===0x1f4){logger[_0x677e('0x11')](_0x677e('0x13'),_0x409ad9,_0x579434[_0x677e('0x11')][_0x677e('0x14')]);return _0x5b05d1(_0x579434[_0x677e('0x11')]['message']);}logger[_0x677e('0x11')](_0x677e('0x13'),_0x409ad9,_0x579434['error'][_0x677e('0x14')]);return _0x52cf2c(_0x579434['error']['message']);}else{logger[_0x677e('0xc')](_0x677e('0x13'),_0x409ad9,_0x677e('0xd'));_0x52cf2c(_0x579434[_0x677e('0x15')]['message']);}})[_0x677e('0x16')](function(_0x550b80){logger[_0x677e('0x11')](_0x677e('0x13'),_0x409ad9,_0x550b80);_0x5b05d1(_0x550b80);});});}
\ No newline at end of file
+var _0x2f80=['http','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1526e1,_0x5ed5a5){var _0x249a1e=function(_0x4a7c12){while(--_0x4a7c12){_0x1526e1['push'](_0x1526e1['shift']());}};_0x249a1e(++_0x5ed5a5);}(_0x2f80,0xd2));var _0x02f8=function(_0x118d99,_0x2988df){_0x118d99=_0x118d99-0x0;var _0x26038a=_0x2f80[_0x118d99];return _0x26038a;};'use strict';var _=require(_0x02f8('0x0'));var util=require('util');var moment=require(_0x02f8('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x02f8('0x2'));var db=require(_0x02f8('0x3'))['db'];var utils=require(_0x02f8('0x4'));var logger=require(_0x02f8('0x5'))(_0x02f8('0x6'));var config=require(_0x02f8('0x7'));var jayson=require(_0x02f8('0x8'));var client=jayson[_0x02f8('0x9')][_0x02f8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x360ef5,_0x2322ff,_0x26883b){return new BPromise(function(_0x462c44,_0x17f279){return client[_0x02f8('0xb')](_0x360ef5,_0x26883b)['then'](function(_0x3f6ce3){logger[_0x02f8('0xc')](_0x02f8('0xd'),_0x2322ff,_0x02f8('0xe'));logger[_0x02f8('0xf')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x2322ff,'request\x20sent',JSON[_0x02f8('0x10')](_0x3f6ce3));if(_0x3f6ce3[_0x02f8('0x11')]){if(_0x3f6ce3[_0x02f8('0x11')]['code']===0x1f4){logger[_0x02f8('0x11')](_0x02f8('0xd'),_0x2322ff,_0x3f6ce3[_0x02f8('0x11')][_0x02f8('0x12')]);return _0x17f279(_0x3f6ce3[_0x02f8('0x11')][_0x02f8('0x12')]);}logger[_0x02f8('0x11')](_0x02f8('0xd'),_0x2322ff,_0x3f6ce3[_0x02f8('0x11')][_0x02f8('0x12')]);return _0x462c44(_0x3f6ce3[_0x02f8('0x11')][_0x02f8('0x12')]);}else{logger[_0x02f8('0xc')](_0x02f8('0xd'),_0x2322ff,_0x02f8('0xe'));_0x462c44(_0x3f6ce3[_0x02f8('0x13')][_0x02f8('0x12')]);}})['catch'](function(_0x58f4b9){logger['error'](_0x02f8('0xd'),_0x2322ff,_0x58f4b9);_0x17f279(_0x58f4b9);});});}
\ No newline at end of file
index b101e07..774e3a0 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(_0x2b2e68,_0x4e7325){var _0x3601bd=function(_0x25b0dd){while(--_0x25b0dd){_0x2b2e68['push'](_0x2b2e68['shift']());}};_0x3601bd(++_0x4e7325);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0x9c44,0x178));var _0x49c4=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x9c44[_0x53ccf2];return _0x5a2964;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 4bf5d58..5100fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f71=['INTEGER','queue_interface','Required\x20by\x20Asterisk','STRING'];(function(_0x4fa605,_0x2363dd){var _0x46a538=function(_0x5e0d5a){while(--_0x5e0d5a){_0x4fa605['push'](_0x4fa605['shift']());}};_0x46a538(++_0x2363dd);}(_0x3f71,0x102));var _0x13f7=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x3f71[_0x334841];return _0x5beb4b;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0x13f7('0x0')},'membername':{'type':Sequelize[_0x13f7('0x1')],'allowNull':![],'comment':_0x13f7('0x0')},'UserId':{'type':Sequelize[_0x13f7('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x13f7('0x3'),'comment':_0x13f7('0x0')},'VoiceQueueId':{'type':Sequelize[_0x13f7('0x2')],'allowNull':![]},'interface':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x13f7('0x3'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x13f7('0x0')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x13f7('0x0')}};
\ No newline at end of file
+var _0x9bce=['exports','INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface','sequelize'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x9bce,0x125));var _0xe9bc=function(_0x363db7,_0x2220f7){_0x363db7=_0x363db7-0x0;var _0x4e82ee=_0x9bce[_0x363db7];return _0x4e82ee;};'use strict';var Sequelize=require(_0xe9bc('0x0'));module[_0xe9bc('0x1')]={'uniqueid':{'type':Sequelize[_0xe9bc('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xe9bc('0x3')],'allowNull':![],'comment':_0xe9bc('0x4')},'UserId':{'type':Sequelize[_0xe9bc('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xe9bc('0x3')],'allowNull':![],'unique':_0xe9bc('0x5'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0xe9bc('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xe9bc('0x3')],'allowNull':![],'unique':_0xe9bc('0x5'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0xe9bc('0x2')](0xb),'defaultValue':0x0,'comment':_0xe9bc('0x4')},'paused':{'type':Sequelize[_0xe9bc('0x2')](0xb),'defaultValue':0x0,'comment':_0xe9bc('0x4')}};
\ No newline at end of file
index 391078c..c907726 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0062=['UserVoiceQueueRt','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x19e426,_0x320e52){var _0x1c596e=function(_0x2b9d31){while(--_0x2b9d31){_0x19e426['push'](_0x19e426['shift']());}};_0x1c596e(++_0x320e52);}(_0x0062,0xb2));var _0x2006=function(_0x3daa8c,_0x388a87){_0x3daa8c=_0x3daa8c-0x0;var _0x2b1bd7=_0x0062[_0x3daa8c];return _0x2b1bd7;};'use strict';var EventEmitter=require(_0x2006('0x0'));var UserVoiceQueueRt=require(_0x2006('0x1'))['db'][_0x2006('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x2006('0x3')](0x0);var events={'afterCreate':_0x2006('0x4'),'afterUpdate':'update','afterDestroy':_0x2006('0x5')};function emitEvent(_0x20e28e){return function(_0xc810bd,_0x25a818,_0x485abf){UserVoiceQueueRtEvents['emit'](_0x20e28e+':'+_0xc810bd['id'],_0xc810bd);UserVoiceQueueRtEvents[_0x2006('0x6')](_0x20e28e,_0xc810bd);_0x485abf(null);};}for(var e in events){if(events[_0x2006('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0x2006('0x8')](e,emitEvent(event));}}module[_0x2006('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xe68d=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners'];(function(_0xa85689,_0x1313fb){var _0x4049b8=function(_0x2ea7f8){while(--_0x2ea7f8){_0xa85689['push'](_0xa85689['shift']());}};_0x4049b8(++_0x1313fb);}(_0xe68d,0xd8));var _0xde68=function(_0x366e99,_0x15d82d){_0x366e99=_0x366e99-0x0;var _0x180bbe=_0xe68d[_0x366e99];return _0x180bbe;};'use strict';var EventEmitter=require(_0xde68('0x0'));var UserVoiceQueueRt=require(_0xde68('0x1'))['db'][_0xde68('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xde68('0x3')](0x0);var events={'afterCreate':_0xde68('0x4'),'afterUpdate':_0xde68('0x5'),'afterDestroy':_0xde68('0x6')};function emitEvent(_0xbed05d){return function(_0x232cd4,_0x223110,_0x36c435){UserVoiceQueueRtEvents['emit'](_0xbed05d+':'+_0x232cd4['id'],_0x232cd4);UserVoiceQueueRtEvents[_0xde68('0x7')](_0xbed05d,_0x232cd4);_0x36c435(null);};}for(var e in events){if(events[_0xde68('0x8')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0xde68('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index c577799..70165f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5761=['define','UserVoiceQueueRt','user_has_voice_queues_rt','../../config/logger','api','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x5761,0x189));var _0x1576=function(_0x21ca16,_0x176a6a){_0x21ca16=_0x21ca16-0x0;var _0x456581=_0x5761[_0x21ca16];return _0x456581;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1576('0x0'))(_0x1576('0x1'));var moment=require('moment');var BPromise=require(_0x1576('0x2'));var rp=require(_0x1576('0x3'));var fs=require('fs');var path=require(_0x1576('0x4'));var rimraf=require('rimraf');var config=require(_0x1576('0x5'));var attributes=require('./userVoiceQueueRt.attributes');module[_0x1576('0x6')]=function(_0x2e1db9,_0x4a7acf){return _0x2e1db9[_0x1576('0x7')](_0x1576('0x8'),attributes,{'tableName':_0x1576('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf9e8=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','api'];(function(_0x473f42,_0x4f8e9e){var _0x2eb99c=function(_0x32b83f){while(--_0x32b83f){_0x473f42['push'](_0x473f42['shift']());}};_0x2eb99c(++_0x4f8e9e);}(_0xf9e8,0x115));var _0x8f9e=function(_0x34b855,_0x28b4cf){_0x34b855=_0x34b855-0x0;var _0x351c0e=_0xf9e8[_0x34b855];return _0x351c0e;};'use strict';var _=require(_0x8f9e('0x0'));var util=require(_0x8f9e('0x1'));var logger=require('../../config/logger')(_0x8f9e('0x2'));var moment=require(_0x8f9e('0x3'));var BPromise=require(_0x8f9e('0x4'));var rp=require(_0x8f9e('0x5'));var fs=require('fs');var path=require(_0x8f9e('0x6'));var rimraf=require(_0x8f9e('0x7'));var config=require(_0x8f9e('0x8'));var attributes=require(_0x8f9e('0x9'));module[_0x8f9e('0xa')]=function(_0x5c0930,_0x146ade){return _0x5c0930[_0x8f9e('0xb')](_0x8f9e('0xc'),attributes,{'tableName':_0x8f9e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df33217..0c58def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3209=['../../config/logger','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','error','code','message','result','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','stringify','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x5e833e,_0x4801c1){var _0x354dd1=function(_0x37fdf8){while(--_0x37fdf8){_0x5e833e['push'](_0x5e833e['shift']());}};_0x354dd1(++_0x4801c1);}(_0x3209,0x8f));var _0x9320=function(_0x33b050,_0x250c6f){_0x33b050=_0x33b050-0x0;var _0xf3567a=_0x3209[_0x33b050];return _0xf3567a;};'use strict';var _=require(_0x9320('0x0'));var util=require(_0x9320('0x1'));var moment=require(_0x9320('0x2'));var BPromise=require(_0x9320('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9320('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9320('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x9320('0x6')]({'port':0x232a});config[_0x9320('0x7')]=_[_0x9320('0x8')](config[_0x9320('0x7')],{'host':_0x9320('0x9'),'port':0x18eb});var socket=require(_0x9320('0xa'))(new Redis(config[_0x9320('0x7')]));require(_0x9320('0xb'))[_0x9320('0xc')](socket);function respondWithRpcPromise(_0x362352,_0x6d3910,_0x3eac9e){return new BPromise(function(_0x4c81b8,_0x215a71){return client[_0x9320('0xd')](_0x362352,_0x3eac9e)[_0x9320('0xe')](function(_0x3d9483){logger[_0x9320('0xf')](_0x9320('0x10'),_0x6d3910,_0x9320('0x11'));logger[_0x9320('0x12')](_0x9320('0x13'),_0x6d3910,'request\x20sent',JSON['stringify'](_0x3d9483));if(_0x3d9483['error']){if(_0x3d9483[_0x9320('0x14')][_0x9320('0x15')]===0x1f4){logger[_0x9320('0x14')](_0x9320('0x10'),_0x6d3910,_0x3d9483[_0x9320('0x14')]['message']);return _0x215a71(_0x3d9483[_0x9320('0x14')][_0x9320('0x16')]);}logger[_0x9320('0x14')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x6d3910,_0x3d9483[_0x9320('0x14')][_0x9320('0x16')]);return _0x4c81b8(_0x3d9483[_0x9320('0x14')][_0x9320('0x16')]);}else{logger[_0x9320('0xf')](_0x9320('0x10'),_0x6d3910,_0x9320('0x11'));_0x4c81b8(_0x3d9483[_0x9320('0x17')][_0x9320('0x16')]);}})['catch'](function(_0x385d2b){logger[_0x9320('0x14')](_0x9320('0x10'),_0x6d3910,_0x385d2b);_0x215a71(_0x385d2b);});});}exports[_0x9320('0x18')]=function(_0x491051){var _0x5cfd6c=this;return new Promise(function(_0xad3132,_0x4cf4a2){return db[_0x9320('0x19')][_0x9320('0x1a')]({'raw':_0x491051[_0x9320('0x1b')]?_0x491051[_0x9320('0x1b')][_0x9320('0x1c')]===undefined?!![]:![]:!![],'where':_0x491051[_0x9320('0x1b')]?_0x491051[_0x9320('0x1b')][_0x9320('0x1d')]||null:null,'attributes':[[db[_0x9320('0x1e')]['fn'](_0x9320('0x1f'),db[_0x9320('0x1e')]['fn']('IF',db[_0x9320('0x1e')][_0x9320('0x20')](_0x9320('0x21')))),_0x9320('0x22')]]})['then'](function(_0xe8e95d){logger['info'](_0x9320('0x18'),_0x491051);logger[_0x9320('0x12')](_0x9320('0x18'),_0x491051,JSON[_0x9320('0x23')](_0xe8e95d));_0xad3132(_0xe8e95d);})[_0x9320('0x24')](function(_0x4e2532){logger[_0x9320('0x14')](_0x9320('0x18'),_0x4e2532[_0x9320('0x16')],_0x491051);_0x4cf4a2(_0x5cfd6c[_0x9320('0x14')](0x1f4,_0x4e2532[_0x9320('0x16')]));});});};
\ No newline at end of file
+var _0x8e18=['request\x20sent','error','code','message','result','catch','GetVoiceQueueRtPauses','findAll','options','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','debug','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s'];(function(_0xe220b0,_0x5761ee){var _0xe1b034=function(_0x1c97d1){while(--_0x1c97d1){_0xe220b0['push'](_0xe220b0['shift']());}};_0xe1b034(++_0x5761ee);}(_0x8e18,0xa9));var _0x88e1=function(_0x43b409,_0x183438){_0x43b409=_0x43b409-0x0;var _0x24e85c=_0x8e18[_0x43b409];return _0x24e85c;};'use strict';var _=require('lodash');var util=require(_0x88e1('0x0'));var moment=require(_0x88e1('0x1'));var BPromise=require(_0x88e1('0x2'));var rs=require(_0x88e1('0x3'));var fs=require('fs');var Redis=require(_0x88e1('0x4'));var db=require(_0x88e1('0x5'))['db'];var utils=require(_0x88e1('0x6'));var logger=require(_0x88e1('0x7'))(_0x88e1('0x8'));var config=require(_0x88e1('0x9'));var jayson=require(_0x88e1('0xa'));var client=jayson[_0x88e1('0xb')]['http']({'port':0x232a});config['redis']=_[_0x88e1('0xc')](config[_0x88e1('0xd')],{'host':_0x88e1('0xe'),'port':0x18eb});var socket=require(_0x88e1('0xf'))(new Redis(config['redis']));require('./userVoiceQueueRt.socket')[_0x88e1('0x10')](socket);function respondWithRpcPromise(_0x3f9207,_0x39ce88,_0xefd7de){return new BPromise(function(_0x69a8f1,_0x1eead4){return client[_0x88e1('0x11')](_0x3f9207,_0xefd7de)[_0x88e1('0x12')](function(_0x44ce17){logger[_0x88e1('0x13')](_0x88e1('0x14'),_0x39ce88,_0x88e1('0x15'));logger['debug']('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x39ce88,_0x88e1('0x15'),JSON['stringify'](_0x44ce17));if(_0x44ce17[_0x88e1('0x16')]){if(_0x44ce17[_0x88e1('0x16')][_0x88e1('0x17')]===0x1f4){logger[_0x88e1('0x16')](_0x88e1('0x14'),_0x39ce88,_0x44ce17[_0x88e1('0x16')][_0x88e1('0x18')]);return _0x1eead4(_0x44ce17['error'][_0x88e1('0x18')]);}logger[_0x88e1('0x16')](_0x88e1('0x14'),_0x39ce88,_0x44ce17[_0x88e1('0x16')]['message']);return _0x69a8f1(_0x44ce17[_0x88e1('0x16')][_0x88e1('0x18')]);}else{logger[_0x88e1('0x13')](_0x88e1('0x14'),_0x39ce88,_0x88e1('0x15'));_0x69a8f1(_0x44ce17[_0x88e1('0x19')]['message']);}})[_0x88e1('0x1a')](function(_0x23264e){logger['error'](_0x88e1('0x14'),_0x39ce88,_0x23264e);_0x1eead4(_0x23264e);});});}exports[_0x88e1('0x1b')]=function(_0x287e0b){var _0x3d9c75=this;return new Promise(function(_0x57986a,_0xdcc09e){return db['UserVoiceQueueRt'][_0x88e1('0x1c')]({'raw':_0x287e0b[_0x88e1('0x1d')]?_0x287e0b[_0x88e1('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x287e0b[_0x88e1('0x1d')]?_0x287e0b[_0x88e1('0x1d')][_0x88e1('0x1e')]||null:null,'attributes':[[db[_0x88e1('0x1f')]['fn'](_0x88e1('0x20'),db[_0x88e1('0x1f')]['fn']('IF',db[_0x88e1('0x1f')][_0x88e1('0x21')](_0x88e1('0x22')))),_0x88e1('0x23')]]})['then'](function(_0x117a9b){logger[_0x88e1('0x13')]('GetVoiceQueueRtPauses',_0x287e0b);logger[_0x88e1('0x24')](_0x88e1('0x1b'),_0x287e0b,JSON[_0x88e1('0x25')](_0x117a9b));_0x57986a(_0x117a9b);})['catch'](function(_0x10942a){logger[_0x88e1('0x16')](_0x88e1('0x1b'),_0x10942a[_0x88e1('0x18')],_0x287e0b);_0xdcc09e(_0x3d9c75[_0x88e1('0x16')](0x1f4,_0x10942a[_0x88e1('0x18')]));});});};
\ No newline at end of file
index 0febc56..5e595d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae30=['length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','emit','removeListener','register'];(function(_0x345e4c,_0x3e73ba){var _0x40c41c=function(_0x23dfe0){while(--_0x23dfe0){_0x345e4c['push'](_0x345e4c['shift']());}};_0x40c41c(++_0x3e73ba);}(_0xae30,0x10a));var _0x0ae3=function(_0x1f1fb4,_0x15a561){_0x1f1fb4=_0x1f1fb4-0x0;var _0x12fa15=_0xae30[_0x1f1fb4];return _0x12fa15;};'use strict';var UserVoiceQueueRtEvents=require(_0x0ae3('0x0'));var events=[_0x0ae3('0x1'),_0x0ae3('0x2'),'update'];function createListener(_0x565144,_0x1352ef){return function(_0x405dd0){_0x1352ef[_0x0ae3('0x3')](_0x565144,_0x405dd0);};}function removeListener(_0x51f481,_0x23a7a1){return function(){UserVoiceQueueRtEvents[_0x0ae3('0x4')](_0x51f481,_0x23a7a1);};}exports[_0x0ae3('0x5')]=function(_0x7ce33e){for(var _0x2b8c53=0x0,_0xda3853=events[_0x0ae3('0x6')];_0x2b8c53<_0xda3853;_0x2b8c53++){var _0x15b7e2=events[_0x2b8c53];var _0x32ea6e=createListener(_0x0ae3('0x7')+_0x15b7e2,_0x7ce33e);UserVoiceQueueRtEvents['on'](_0x15b7e2,_0x32ea6e);}};
\ No newline at end of file
+var _0x737d=['length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','removeListener','register'];(function(_0x494313,_0x11a24e){var _0x244773=function(_0x45da9e){while(--_0x45da9e){_0x494313['push'](_0x494313['shift']());}};_0x244773(++_0x11a24e);}(_0x737d,0xbc));var _0xd737=function(_0x149726,_0x3de58c){_0x149726=_0x149726-0x0;var _0x339753=_0x737d[_0x149726];return _0x339753;};'use strict';var UserVoiceQueueRtEvents=require(_0xd737('0x0'));var events=[_0xd737('0x1'),'remove','update'];function createListener(_0x58b187,_0x47ae10){return function(_0x2e966e){_0x47ae10['emit'](_0x58b187,_0x2e966e);};}function removeListener(_0x2f8396,_0x4a19e0){return function(){UserVoiceQueueRtEvents[_0xd737('0x2')](_0x2f8396,_0x4a19e0);};}exports[_0xd737('0x3')]=function(_0x1cf86e){for(var _0x2e7d75=0x0,_0x46f559=events[_0xd737('0x4')];_0x2e7d75<_0x46f559;_0x2e7d75++){var _0x3a78be=events[_0x2e7d75];var _0xb077fb=createListener(_0xd737('0x5')+_0x3a78be,_0x1cf86e);UserVoiceQueueRtEvents['on'](_0x3a78be,_0xb077fb);}};
\ No newline at end of file
index 413b978..b185d35 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(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x3d4db3,_0x4f90da){var _0x389472=function(_0x303d38){while(--_0x303d38){_0x3d4db3['push'](_0x3d4db3['shift']());}};_0x389472(++_0x4f90da);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4d35f3,_0x19ba66){_0x4d35f3=_0x4d35f3-0x0;var _0x382fea=_0xcb91[_0x4d35f3];return _0x382fea;};'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 5217f65..0c8067f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e8a=['INTEGER','exports'];(function(_0x45d303,_0x48dba3){var _0x22130f=function(_0x200112){while(--_0x200112){_0x45d303['push'](_0x45d303['shift']());}};_0x22130f(++_0x48dba3);}(_0x2e8a,0xc7));var _0xa2e8=function(_0x2a8860,_0x2da926){_0x2a8860=_0x2a8860-0x0;var _0x2f47a4=_0x2e8a[_0x2a8860];return _0x2f47a4;};'use strict';var Sequelize=require('sequelize');module[_0xa2e8('0x0')]={'penalty':{'type':Sequelize[_0xa2e8('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7ecd=['INTEGER','sequelize','exports'];(function(_0x4100a4,_0xfe31e8){var _0x3ea19e=function(_0x4a35e8){while(--_0x4a35e8){_0x4100a4['push'](_0x4100a4['shift']());}};_0x3ea19e(++_0xfe31e8);}(_0x7ecd,0x1ea));var _0xd7ec=function(_0x12bedb,_0x48c64f){_0x12bedb=_0x12bedb-0x0;var _0x41c2e3=_0x7ecd[_0x12bedb];return _0x41c2e3;};'use strict';var Sequelize=require(_0xd7ec('0x0'));module[_0xd7ec('0x1')]={'penalty':{'type':Sequelize[_0xd7ec('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 28b50d4..fdf4b2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe730=['request-promise','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','user_has_whatsapp_queues','lodash','util','../../config/logger','api','bluebird'];(function(_0x2aeb6d,_0x41b50b){var _0x2c2e12=function(_0x273376){while(--_0x273376){_0x2aeb6d['push'](_0x2aeb6d['shift']());}};_0x2c2e12(++_0x41b50b);}(_0xe730,0x19b));var _0x0e73=function(_0x315055,_0x194609){_0x315055=_0x315055-0x0;var _0x3e3d16=_0xe730[_0x315055];return _0x3e3d16;};'use strict';var _=require(_0x0e73('0x0'));var util=require(_0x0e73('0x1'));var logger=require(_0x0e73('0x2'))(_0x0e73('0x3'));var moment=require('moment');var BPromise=require(_0x0e73('0x4'));var rp=require(_0x0e73('0x5'));var fs=require('fs');var path=require(_0x0e73('0x6'));var rimraf=require(_0x0e73('0x7'));var config=require(_0x0e73('0x8'));var attributes=require(_0x0e73('0x9'));module[_0x0e73('0xa')]=function(_0x1a1604,_0x50ee11){return _0x1a1604[_0x0e73('0xb')]('UserWhatsappQueue',attributes,{'tableName':_0x0e73('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3f3d=['path','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x279e6f,_0x566574){var _0x489a5f=function(_0x57e285){while(--_0x57e285){_0x279e6f['push'](_0x279e6f['shift']());}};_0x489a5f(++_0x566574);}(_0x3f3d,0xd7));var _0xd3f3=function(_0x51f357,_0x58d147){_0x51f357=_0x51f357-0x0;var _0x186473=_0x3f3d[_0x51f357];return _0x186473;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd3f3('0x0'))(_0xd3f3('0x1'));var moment=require(_0xd3f3('0x2'));var BPromise=require(_0xd3f3('0x3'));var rp=require(_0xd3f3('0x4'));var fs=require('fs');var path=require(_0xd3f3('0x5'));var rimraf=require('rimraf');var config=require(_0xd3f3('0x6'));var attributes=require(_0xd3f3('0x7'));module[_0xd3f3('0x8')]=function(_0x4ad972,_0x551fd8){return _0x4ad972[_0xd3f3('0x9')](_0xd3f3('0xa'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 32db0ca..4dc5729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88b7=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4bd46c,_0x1ea033){var _0x59a412=function(_0x37e669){while(--_0x37e669){_0x4bd46c['push'](_0x4bd46c['shift']());}};_0x59a412(++_0x1ea033);}(_0x88b7,0x125));var _0x788b=function(_0x4e3793,_0x16003a){_0x4e3793=_0x4e3793-0x0;var _0x7dc917=_0x88b7[_0x4e3793];return _0x7dc917;};'use strict';var _=require(_0x788b('0x0'));var util=require(_0x788b('0x1'));var moment=require('moment');var BPromise=require(_0x788b('0x2'));var rs=require(_0x788b('0x3'));var fs=require('fs');var Redis=require(_0x788b('0x4'));var db=require(_0x788b('0x5'))['db'];var utils=require(_0x788b('0x6'));var logger=require(_0x788b('0x7'))(_0x788b('0x8'));var config=require('../../config/environment');var jayson=require(_0x788b('0x9'));var client=jayson[_0x788b('0xa')][_0x788b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5bee22,_0x50eaf6,_0x227b20){return new BPromise(function(_0x5a068d,_0x3cf9ae){return client[_0x788b('0xc')](_0x5bee22,_0x227b20)['then'](function(_0x2fb197){logger[_0x788b('0xd')](_0x788b('0xe'),_0x50eaf6,_0x788b('0xf'));logger[_0x788b('0x10')](_0x788b('0x11'),_0x50eaf6,_0x788b('0xf'),JSON[_0x788b('0x12')](_0x2fb197));if(_0x2fb197[_0x788b('0x13')]){if(_0x2fb197[_0x788b('0x13')]['code']===0x1f4){logger[_0x788b('0x13')](_0x788b('0xe'),_0x50eaf6,_0x2fb197[_0x788b('0x13')]['message']);return _0x3cf9ae(_0x2fb197[_0x788b('0x13')][_0x788b('0x14')]);}logger[_0x788b('0x13')](_0x788b('0xe'),_0x50eaf6,_0x2fb197[_0x788b('0x13')][_0x788b('0x14')]);return _0x5a068d(_0x2fb197[_0x788b('0x13')]['message']);}else{logger[_0x788b('0xd')](_0x788b('0xe'),_0x50eaf6,_0x788b('0xf'));_0x5a068d(_0x2fb197[_0x788b('0x15')][_0x788b('0x14')]);}})[_0x788b('0x16')](function(_0x21ecc4){logger[_0x788b('0x13')](_0x788b('0xe'),_0x50eaf6,_0x21ecc4);_0x3cf9ae(_0x21ecc4);});});}
\ No newline at end of file
+var _0xa028=['then','info','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','UserWhatsappQueue,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','http','request'];(function(_0x310a54,_0x212d9a){var _0x4e4caa=function(_0x6baec9){while(--_0x6baec9){_0x310a54['push'](_0x310a54['shift']());}};_0x4e4caa(++_0x212d9a);}(_0xa028,0x19a));var _0x8a02=function(_0x20f0b3,_0x2b51cf){_0x20f0b3=_0x20f0b3-0x0;var _0x234d21=_0xa028[_0x20f0b3];return _0x234d21;};'use strict';var _=require(_0x8a02('0x0'));var util=require(_0x8a02('0x1'));var moment=require(_0x8a02('0x2'));var BPromise=require(_0x8a02('0x3'));var rs=require(_0x8a02('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8a02('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8a02('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x8a02('0x7'));var client=jayson['client'][_0x8a02('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1a29c9,_0x15f5da,_0x4d234a){return new BPromise(function(_0x50e6e3,_0x432f1d){return client[_0x8a02('0x9')](_0x1a29c9,_0x4d234a)[_0x8a02('0xa')](function(_0x324f99){logger[_0x8a02('0xb')]('UserWhatsappQueue,\x20%s,\x20%s',_0x15f5da,_0x8a02('0xc'));logger[_0x8a02('0xd')](_0x8a02('0xe'),_0x15f5da,_0x8a02('0xc'),JSON[_0x8a02('0xf')](_0x324f99));if(_0x324f99[_0x8a02('0x10')]){if(_0x324f99[_0x8a02('0x10')]['code']===0x1f4){logger[_0x8a02('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x15f5da,_0x324f99['error'][_0x8a02('0x11')]);return _0x432f1d(_0x324f99[_0x8a02('0x10')][_0x8a02('0x11')]);}logger[_0x8a02('0x10')](_0x8a02('0x12'),_0x15f5da,_0x324f99[_0x8a02('0x10')][_0x8a02('0x11')]);return _0x50e6e3(_0x324f99['error'][_0x8a02('0x11')]);}else{logger[_0x8a02('0xb')]('UserWhatsappQueue,\x20%s,\x20%s',_0x15f5da,_0x8a02('0xc'));_0x50e6e3(_0x324f99[_0x8a02('0x13')][_0x8a02('0x11')]);}})['catch'](function(_0x40ad26){logger[_0x8a02('0x10')](_0x8a02('0x12'),_0x15f5da,_0x40ad26);_0x432f1d(_0x40ad26);});});}
\ No newline at end of file
index 1fc86e8..3101398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6282=['path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x117f4c,_0x36a9b1){var _0x2b24e9=function(_0x31761b){while(--_0x31761b){_0x117f4c['push'](_0x117f4c['shift']());}};_0x2b24e9(++_0x36a9b1);}(_0x6282,0x76));var _0x2628=function(_0xae1a00,_0x24dd7b){_0xae1a00=_0xae1a00-0x0;var _0x19e48b=_0x6282[_0xae1a00];return _0x19e48b;};'use strict';var multer=require(_0x2628('0x0'));var util=require(_0x2628('0x1'));var path=require(_0x2628('0x2'));var timeout=require(_0x2628('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2628('0x4'));var auth=require(_0x2628('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2628('0x6'));var controller=require(_0x2628('0x7'));router[_0x2628('0x8')]('/',auth[_0x2628('0x9')](),controller[_0x2628('0xa')]);router['get'](_0x2628('0xb'),auth[_0x2628('0x9')](),controller[_0x2628('0xc')]);router[_0x2628('0xd')]('/',auth[_0x2628('0x9')](),controller[_0x2628('0xe')]);router[_0x2628('0xf')](_0x2628('0xb'),auth[_0x2628('0x9')](),controller[_0x2628('0x10')]);router[_0x2628('0x11')](_0x2628('0xb'),auth[_0x2628('0x9')](),controller[_0x2628('0x12')]);module[_0x2628('0x13')]=router;
\ No newline at end of file
+var _0x32c0=['update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','post','/:id'];(function(_0x3879bd,_0x4a4857){var _0x4d37b2=function(_0x12e65d){while(--_0x12e65d){_0x3879bd['push'](_0x3879bd['shift']());}};_0x4d37b2(++_0x4a4857);}(_0x32c0,0x1f3));var _0x032c=function(_0x2ef054,_0x14a9e1){_0x2ef054=_0x2ef054-0x0;var _0x5e94e0=_0x32c0[_0x2ef054];return _0x5e94e0;};'use strict';var multer=require(_0x032c('0x0'));var util=require(_0x032c('0x1'));var path=require('path');var timeout=require(_0x032c('0x2'));var express=require(_0x032c('0x3'));var router=express['Router']();var fs_extra=require(_0x032c('0x4'));var auth=require(_0x032c('0x5'));var interaction=require(_0x032c('0x6'));var config=require(_0x032c('0x7'));var controller=require('./variable.controller');router[_0x032c('0x8')]('/',auth[_0x032c('0x9')](),controller[_0x032c('0xa')]);router[_0x032c('0x8')]('/:id',auth[_0x032c('0x9')](),controller['show']);router[_0x032c('0xb')]('/',auth[_0x032c('0x9')](),controller['create']);router['put'](_0x032c('0xc'),auth['isAuthenticated'](),controller[_0x032c('0xd')]);router['delete'](_0x032c('0xc'),auth[_0x032c('0x9')](),controller[_0x032c('0xe')]);module[_0x032c('0xf')]=router;
\ No newline at end of file
index 22f8d38..db22c61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x873a=['sequelize','exports','STRING'];(function(_0x10921d,_0x242a14){var _0x163ca1=function(_0x3429b2){while(--_0x3429b2){_0x10921d['push'](_0x10921d['shift']());}};_0x163ca1(++_0x242a14);}(_0x873a,0x1c2));var _0xa873=function(_0x5bc49c,_0x22d209){_0x5bc49c=_0x5bc49c-0x0;var _0x2b7c0d=_0x873a[_0x5bc49c];return _0x2b7c0d;};'use strict';var Sequelize=require(_0xa873('0x0'));module[_0xa873('0x1')]={'name':{'type':Sequelize[_0xa873('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xa873('0x2')]}};
\ No newline at end of file
+var _0x5bd3=['name'];(function(_0x229527,_0x337664){var _0x1b88d3=function(_0x571b4e){while(--_0x571b4e){_0x229527['push'](_0x229527['shift']());}};_0x1b88d3(++_0x337664);}(_0x5bd3,0x1a3));var _0x35bd=function(_0x368fb9,_0x1a9895){_0x368fb9=_0x368fb9-0x0;var _0x4892fb=_0x5bd3[_0x368fb9];return _0x4892fb;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x35bd('0x0'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d44e9fd..b6d8824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc173=['include','findAll','rows','show','params','find','catch','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','get','UserProfileResource','destroy','stack','name','send','index','map','Variable','rawAttributes','fieldName','type','key','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x35bc02,_0x588fa9){var _0x259a27=function(_0xb5ce23){while(--_0xb5ce23){_0x35bc02['push'](_0x35bc02['shift']());}};_0x259a27(++_0x588fa9);}(_0xc173,0x65));var _0x3c17=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc173[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x3c17('0x0'));var rimraf=require(_0x3c17('0x1'));var zipdir=require(_0x3c17('0x2'));var jsonpatch=require(_0x3c17('0x3'));var rp=require(_0x3c17('0x4'));var moment=require('moment');var BPromise=require(_0x3c17('0x5'));var Mustache=require(_0x3c17('0x6'));var util=require(_0x3c17('0x7'));var path=require(_0x3c17('0x8'));var sox=require(_0x3c17('0x9'));var csv=require(_0x3c17('0xa'));var ejs=require(_0x3c17('0xb'));var fs=require('fs');var fs_extra=require(_0x3c17('0xc'));var _=require(_0x3c17('0xd'));var squel=require(_0x3c17('0xe'));var crypto=require(_0x3c17('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x3c17('0x10'));var toCsv=require(_0x3c17('0xa'));var querystring=require(_0x3c17('0x11'));var Papa=require(_0x3c17('0x12'));var Redis=require(_0x3c17('0x13'));var authService=require(_0x3c17('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x3c17('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3c17('0x16'))(_0x3c17('0x17'));var utils=require('../../config/utils');var config=require(_0x3c17('0x18'));var licenseUtil=require(_0x3c17('0x19'));var db=require(_0x3c17('0x1a'))['db'];function respondWithStatusCode(_0x5bf9ac,_0xc183cc){_0xc183cc=_0xc183cc||0xcc;return function(_0x3278df){if(_0x3278df){return _0x5bf9ac[_0x3c17('0x1b')](_0xc183cc);}return _0x5bf9ac[_0x3c17('0x1c')](_0xc183cc)[_0x3c17('0x1d')]();};}function respondWithResult(_0x4099fc,_0x3fce52){_0x3fce52=_0x3fce52||0xc8;return function(_0x474a57){if(_0x474a57){return _0x4099fc[_0x3c17('0x1c')](_0x3fce52)[_0x3c17('0x1e')](_0x474a57);}};}function respondWithFilteredResult(_0x580224,_0xad462b){return function(_0x1053a7){if(_0x1053a7){var _0x3379b8=typeof _0xad462b[_0x3c17('0x1f')]===_0x3c17('0x20')&&typeof _0xad462b[_0x3c17('0x21')]===_0x3c17('0x20');var _0x13dcac=_0x1053a7[_0x3c17('0x22')];var _0x4d130a=_0x3379b8?0x0:_0xad462b[_0x3c17('0x1f')];var _0x585faf=_0x3379b8?_0x1053a7[_0x3c17('0x22')]:_0xad462b[_0x3c17('0x1f')]+_0xad462b[_0x3c17('0x21')];var _0x4d42d7;if(_0x585faf>=_0x13dcac){_0x585faf=_0x13dcac;_0x4d42d7=0xc8;}else{_0x4d42d7=0xce;}_0x580224[_0x3c17('0x1c')](_0x4d42d7);return _0x580224[_0x3c17('0x23')]('Content-Range',_0x4d130a+'-'+_0x585faf+'/'+_0x13dcac)['json'](_0x1053a7);}return null;};}function patchUpdates(_0x5a272b){return function(_0x4857a9){try{jsonpatch[_0x3c17('0x24')](_0x4857a9,_0x5a272b,!![]);}catch(_0x2f1dca){return BPromise[_0x3c17('0x25')](_0x2f1dca);}return _0x4857a9[_0x3c17('0x26')]();};}function saveUpdates(_0x3a6d71,_0x2a0903){return function(_0x209774){if(_0x209774){return _0x209774[_0x3c17('0x27')](_0x3a6d71)[_0x3c17('0x28')](function(_0x10cae9){return _0x10cae9;});}return null;};}function removeEntity(_0x4fe4c6,_0x1805a1){return function(_0x2ba712){if(_0x2ba712){return _0x2ba712['destroy']()[_0x3c17('0x28')](function(){var _0x25c32b=_0x2ba712[_0x3c17('0x29')]({'plain':!![]});var _0x4b6fc0='Variables';return db[_0x3c17('0x2a')][_0x3c17('0x2b')]({'where':{'type':_0x4b6fc0,'resourceId':_0x25c32b['id']}})[_0x3c17('0x28')](function(){return _0x2ba712;});})[_0x3c17('0x28')](function(){_0x4fe4c6[_0x3c17('0x1c')](0xcc)[_0x3c17('0x1d')]();});}};}function handleEntityNotFound(_0x3c4c81,_0xca3dd){return function(_0xa50ab3){if(!_0xa50ab3){_0x3c4c81[_0x3c17('0x1b')](0x194);}return _0xa50ab3;};}function handleError(_0x17dfb4,_0x2f596d){_0x2f596d=_0x2f596d||0x1f4;return function(_0x1ab80c){logger['error'](_0x1ab80c[_0x3c17('0x2c')]);if(_0x1ab80c[_0x3c17('0x2d')]){delete _0x1ab80c[_0x3c17('0x2d')];}_0x17dfb4['status'](_0x2f596d)[_0x3c17('0x2e')](_0x1ab80c);};}exports[_0x3c17('0x2f')]=function(_0x15e64d,_0x1760fd){var _0x1880b0={},_0xf253cf={},_0x1c3150={'count':0x0,'rows':[]};var _0x454f56=_[_0x3c17('0x30')](db[_0x3c17('0x31')][_0x3c17('0x32')],function(_0x28a25b){return{'name':_0x28a25b[_0x3c17('0x33')],'type':_0x28a25b[_0x3c17('0x34')][_0x3c17('0x35')]};});_0xf253cf[_0x3c17('0x36')]=_[_0x3c17('0x30')](_0x454f56,_0x3c17('0x2d'));_0xf253cf['query']=_[_0x3c17('0x37')](_0x15e64d['query']);_0xf253cf[_0x3c17('0x38')]=_['intersection'](_0xf253cf[_0x3c17('0x36')],_0xf253cf[_0x3c17('0x39')]);_0x1880b0[_0x3c17('0x3a')]=_[_0x3c17('0x3b')](_0xf253cf[_0x3c17('0x36')],qs[_0x3c17('0x3c')](_0x15e64d[_0x3c17('0x39')][_0x3c17('0x3c')]));_0x1880b0['attributes']=_0x1880b0[_0x3c17('0x3a')][_0x3c17('0x3d')]?_0x1880b0[_0x3c17('0x3a')]:_0xf253cf[_0x3c17('0x36')];if(!_0x15e64d[_0x3c17('0x39')][_0x3c17('0x3e')](_0x3c17('0x3f'))){_0x1880b0[_0x3c17('0x21')]=qs[_0x3c17('0x21')](_0x15e64d['query'][_0x3c17('0x21')]);_0x1880b0[_0x3c17('0x1f')]=qs[_0x3c17('0x1f')](_0x15e64d[_0x3c17('0x39')][_0x3c17('0x1f')]);}_0x1880b0[_0x3c17('0x40')]=qs[_0x3c17('0x41')](_0x15e64d[_0x3c17('0x39')][_0x3c17('0x41')]);_0x1880b0[_0x3c17('0x42')]=qs[_0x3c17('0x38')](_[_0x3c17('0x43')](_0x15e64d[_0x3c17('0x39')],_0xf253cf[_0x3c17('0x38')]),_0x454f56);if(_0x15e64d[_0x3c17('0x39')][_0x3c17('0x44')]){_0x1880b0['where']=_[_0x3c17('0x45')](_0x1880b0[_0x3c17('0x42')],{'$or':_[_0x3c17('0x30')](_0x454f56,function(_0x1b58b6){if(_0x1b58b6[_0x3c17('0x34')]!==_0x3c17('0x46')){var _0x5b1a6d={};_0x5b1a6d[_0x1b58b6[_0x3c17('0x2d')]]={'$like':'%'+_0x15e64d[_0x3c17('0x39')][_0x3c17('0x44')]+'%'};return _0x5b1a6d;}})});}_0x1880b0=_[_0x3c17('0x45')]({},_0x1880b0,_0x15e64d[_0x3c17('0x47')]);var _0x14c75b={'where':_0x1880b0[_0x3c17('0x42')]};return db[_0x3c17('0x31')][_0x3c17('0x22')](_0x14c75b)['then'](function(_0x1756e9){_0x1c3150[_0x3c17('0x22')]=_0x1756e9;if(_0x15e64d[_0x3c17('0x39')][_0x3c17('0x48')]){_0x1880b0[_0x3c17('0x49')]=[{'all':!![]}];}return db[_0x3c17('0x31')][_0x3c17('0x4a')](_0x1880b0);})[_0x3c17('0x28')](function(_0x46f822){_0x1c3150[_0x3c17('0x4b')]=_0x46f822;return _0x1c3150;})[_0x3c17('0x28')](respondWithFilteredResult(_0x1760fd,_0x1880b0))['catch'](handleError(_0x1760fd,null));};exports[_0x3c17('0x4c')]=function(_0x322f65,_0x45c89f){var _0x26a9c7={'raw':!![],'where':{'id':_0x322f65[_0x3c17('0x4d')]['id']}},_0x27e9e7={};_0x27e9e7['model']=_['keys'](db[_0x3c17('0x31')]['rawAttributes']);_0x27e9e7['query']=_[_0x3c17('0x37')](_0x322f65[_0x3c17('0x39')]);_0x27e9e7[_0x3c17('0x38')]=_[_0x3c17('0x3b')](_0x27e9e7[_0x3c17('0x36')],_0x27e9e7['query']);_0x26a9c7['attributes']=_['intersection'](_0x27e9e7['model'],qs[_0x3c17('0x3c')](_0x322f65['query'][_0x3c17('0x3c')]));_0x26a9c7[_0x3c17('0x3a')]=_0x26a9c7[_0x3c17('0x3a')]['length']?_0x26a9c7['attributes']:_0x27e9e7[_0x3c17('0x36')];if(_0x322f65['query'][_0x3c17('0x48')]){_0x26a9c7[_0x3c17('0x49')]=[{'all':!![]}];}_0x26a9c7=_[_0x3c17('0x45')]({},_0x26a9c7,_0x322f65[_0x3c17('0x47')]);return db[_0x3c17('0x31')][_0x3c17('0x4e')](_0x26a9c7)['then'](handleEntityNotFound(_0x45c89f,null))['then'](respondWithResult(_0x45c89f,null))[_0x3c17('0x4f')](handleError(_0x45c89f,null));};exports['create']=function(_0x10bb70,_0x1d0799){return db[_0x3c17('0x31')]['create'](_0x10bb70['body'],{})['then'](function(_0x994e9){var _0x47c588=_0x10bb70[_0x3c17('0x50')]['get']({'plain':!![]});if(!_0x47c588)throw new Error(_0x3c17('0x51'));if(_0x47c588[_0x3c17('0x52')]==='user'){var _0x29146c=_0x994e9[_0x3c17('0x29')]({'plain':!![]});var _0x51e1f5='Variables';return db[_0x3c17('0x53')][_0x3c17('0x4e')]({'where':{'name':_0x51e1f5,'userProfileId':_0x47c588['userProfileId']},'raw':!![]})['then'](function(_0x147caf){if(_0x147caf&&_0x147caf[_0x3c17('0x54')]===0x0){return db['UserProfileResource']['create']({'name':_0x29146c[_0x3c17('0x2d')],'resourceId':_0x29146c['id'],'type':_0x147caf[_0x3c17('0x2d')],'sectionId':_0x147caf['id']},{})['then'](function(){return _0x994e9;});}else{return _0x994e9;}})[_0x3c17('0x4f')](function(_0x47469d){logger['error'](_0x3c17('0x55'),_0x47469d);throw _0x47469d;});}return _0x994e9;})['then'](respondWithResult(_0x1d0799,0xc9))['catch'](handleError(_0x1d0799,null));};exports[_0x3c17('0x27')]=function(_0x1a7f7f,_0x4b3ef){if(_0x1a7f7f[_0x3c17('0x56')]['id']){delete _0x1a7f7f['body']['id'];}return db[_0x3c17('0x31')][_0x3c17('0x4e')]({'where':{'id':_0x1a7f7f[_0x3c17('0x4d')]['id']}})[_0x3c17('0x28')](handleEntityNotFound(_0x4b3ef,null))['then'](saveUpdates(_0x1a7f7f[_0x3c17('0x56')],null))['then'](respondWithResult(_0x4b3ef,null))[_0x3c17('0x4f')](handleError(_0x4b3ef,null));};exports[_0x3c17('0x2b')]=function(_0x2396ec,_0x52673e){return db[_0x3c17('0x31')][_0x3c17('0x4e')]({'where':{'id':_0x2396ec[_0x3c17('0x4d')]['id']}})[_0x3c17('0x28')](handleEntityNotFound(_0x52673e,null))['then'](removeEntity(_0x52673e,null))[_0x3c17('0x4f')](handleError(_0x52673e,null));};
\ No newline at end of file
+var _0xd6a0=['reject','save','update','then','destroy','stack','name','send','Variable','rawAttributes','fieldName','type','model','map','keys','query','filters','attributes','intersection','fields','length','order','sort','where','pick','VIRTUAL','filter','merge','includeAll','include','rows','catch','show','params','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','Variables','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply'];(function(_0x51beba,_0x202d19){var _0x167ee0=function(_0x2d5b21){while(--_0x2d5b21){_0x51beba['push'](_0x51beba['shift']());}};_0x167ee0(++_0x202d19);}(_0xd6a0,0x135));var _0x0d6a=function(_0xab07d5,_0x10bd96){_0xab07d5=_0xab07d5-0x0;var _0x3c6a14=_0xd6a0[_0xab07d5];return _0x3c6a14;};'use strict';var emlformat=require(_0x0d6a('0x0'));var rimraf=require(_0x0d6a('0x1'));var zipdir=require(_0x0d6a('0x2'));var jsonpatch=require(_0x0d6a('0x3'));var rp=require(_0x0d6a('0x4'));var moment=require(_0x0d6a('0x5'));var BPromise=require(_0x0d6a('0x6'));var Mustache=require(_0x0d6a('0x7'));var util=require(_0x0d6a('0x8'));var path=require(_0x0d6a('0x9'));var sox=require('sox');var csv=require(_0x0d6a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0d6a('0xb'));var _=require(_0x0d6a('0xc'));var squel=require(_0x0d6a('0xd'));var crypto=require(_0x0d6a('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0d6a('0xf'));var toCsv=require(_0x0d6a('0xa'));var querystring=require(_0x0d6a('0x10'));var Papa=require('papaparse');var Redis=require(_0x0d6a('0x11'));var authService=require(_0x0d6a('0x12'));var qs=require(_0x0d6a('0x13'));var as=require(_0x0d6a('0x14'));var hardwareService=require(_0x0d6a('0x15'));var logger=require(_0x0d6a('0x16'))(_0x0d6a('0x17'));var utils=require(_0x0d6a('0x18'));var config=require(_0x0d6a('0x19'));var licenseUtil=require(_0x0d6a('0x1a'));var db=require(_0x0d6a('0x1b'))['db'];function respondWithStatusCode(_0x3e7f7f,_0x1f728d){_0x1f728d=_0x1f728d||0xcc;return function(_0x161120){if(_0x161120){return _0x3e7f7f[_0x0d6a('0x1c')](_0x1f728d);}return _0x3e7f7f['status'](_0x1f728d)[_0x0d6a('0x1d')]();};}function respondWithResult(_0x594603,_0x23cd4d){_0x23cd4d=_0x23cd4d||0xc8;return function(_0x10919d){if(_0x10919d){return _0x594603[_0x0d6a('0x1e')](_0x23cd4d)['json'](_0x10919d);}};}function respondWithFilteredResult(_0x41bd6,_0x342e04){return function(_0x3d1028){if(_0x3d1028){var _0x2261fe=typeof _0x342e04[_0x0d6a('0x1f')]==='undefined'&&typeof _0x342e04[_0x0d6a('0x20')]===_0x0d6a('0x21');var _0x941015=_0x3d1028[_0x0d6a('0x22')];var _0x2ed1e8=_0x2261fe?0x0:_0x342e04[_0x0d6a('0x1f')];var _0x38acdf=_0x2261fe?_0x3d1028[_0x0d6a('0x22')]:_0x342e04[_0x0d6a('0x1f')]+_0x342e04[_0x0d6a('0x20')];var _0x3a79e7;if(_0x38acdf>=_0x941015){_0x38acdf=_0x941015;_0x3a79e7=0xc8;}else{_0x3a79e7=0xce;}_0x41bd6[_0x0d6a('0x1e')](_0x3a79e7);return _0x41bd6[_0x0d6a('0x23')](_0x0d6a('0x24'),_0x2ed1e8+'-'+_0x38acdf+'/'+_0x941015)[_0x0d6a('0x25')](_0x3d1028);}return null;};}function patchUpdates(_0x1c647a){return function(_0x12b34d){try{jsonpatch[_0x0d6a('0x26')](_0x12b34d,_0x1c647a,!![]);}catch(_0x4863ab){return BPromise[_0x0d6a('0x27')](_0x4863ab);}return _0x12b34d[_0x0d6a('0x28')]();};}function saveUpdates(_0x1ac86b,_0x552b1a){return function(_0xfb98b){if(_0xfb98b){return _0xfb98b[_0x0d6a('0x29')](_0x1ac86b)[_0x0d6a('0x2a')](function(_0x35d8ad){return _0x35d8ad;});}return null;};}function removeEntity(_0x3b7f2f,_0x5ba334){return function(_0x2c2832){if(_0x2c2832){return _0x2c2832[_0x0d6a('0x2b')]()[_0x0d6a('0x2a')](function(){var _0x3840ec=_0x2c2832['get']({'plain':!![]});var _0x3bcee3='Variables';return db['UserProfileResource'][_0x0d6a('0x2b')]({'where':{'type':_0x3bcee3,'resourceId':_0x3840ec['id']}})['then'](function(){return _0x2c2832;});})[_0x0d6a('0x2a')](function(){_0x3b7f2f[_0x0d6a('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39e0f7,_0x2a3477){return function(_0x1b92a4){if(!_0x1b92a4){_0x39e0f7['sendStatus'](0x194);}return _0x1b92a4;};}function handleError(_0x376875,_0x27f5b9){_0x27f5b9=_0x27f5b9||0x1f4;return function(_0x4bad7d){logger['error'](_0x4bad7d[_0x0d6a('0x2c')]);if(_0x4bad7d[_0x0d6a('0x2d')]){delete _0x4bad7d[_0x0d6a('0x2d')];}_0x376875[_0x0d6a('0x1e')](_0x27f5b9)[_0x0d6a('0x2e')](_0x4bad7d);};}exports['index']=function(_0x21254e,_0x4fdbce){var _0xa64805={},_0x241a2f={},_0x42e406={'count':0x0,'rows':[]};var _0x43b7e8=_['map'](db[_0x0d6a('0x2f')][_0x0d6a('0x30')],function(_0xa42751){return{'name':_0xa42751[_0x0d6a('0x31')],'type':_0xa42751[_0x0d6a('0x32')]['key']};});_0x241a2f[_0x0d6a('0x33')]=_[_0x0d6a('0x34')](_0x43b7e8,_0x0d6a('0x2d'));_0x241a2f['query']=_[_0x0d6a('0x35')](_0x21254e[_0x0d6a('0x36')]);_0x241a2f[_0x0d6a('0x37')]=_['intersection'](_0x241a2f[_0x0d6a('0x33')],_0x241a2f['query']);_0xa64805[_0x0d6a('0x38')]=_[_0x0d6a('0x39')](_0x241a2f['model'],qs[_0x0d6a('0x3a')](_0x21254e[_0x0d6a('0x36')][_0x0d6a('0x3a')]));_0xa64805[_0x0d6a('0x38')]=_0xa64805[_0x0d6a('0x38')][_0x0d6a('0x3b')]?_0xa64805[_0x0d6a('0x38')]:_0x241a2f[_0x0d6a('0x33')];if(!_0x21254e['query']['hasOwnProperty']('nolimit')){_0xa64805[_0x0d6a('0x20')]=qs[_0x0d6a('0x20')](_0x21254e['query'][_0x0d6a('0x20')]);_0xa64805[_0x0d6a('0x1f')]=qs[_0x0d6a('0x1f')](_0x21254e[_0x0d6a('0x36')]['offset']);}_0xa64805[_0x0d6a('0x3c')]=qs[_0x0d6a('0x3d')](_0x21254e[_0x0d6a('0x36')][_0x0d6a('0x3d')]);_0xa64805[_0x0d6a('0x3e')]=qs['filters'](_[_0x0d6a('0x3f')](_0x21254e[_0x0d6a('0x36')],_0x241a2f[_0x0d6a('0x37')]),_0x43b7e8);if(_0x21254e[_0x0d6a('0x36')]['filter']){_0xa64805['where']=_['merge'](_0xa64805[_0x0d6a('0x3e')],{'$or':_[_0x0d6a('0x34')](_0x43b7e8,function(_0x15ca71){if(_0x15ca71['type']!==_0x0d6a('0x40')){var _0x4f38b5={};_0x4f38b5[_0x15ca71[_0x0d6a('0x2d')]]={'$like':'%'+_0x21254e[_0x0d6a('0x36')][_0x0d6a('0x41')]+'%'};return _0x4f38b5;}})});}_0xa64805=_[_0x0d6a('0x42')]({},_0xa64805,_0x21254e['options']);var _0x3136dc={'where':_0xa64805[_0x0d6a('0x3e')]};return db[_0x0d6a('0x2f')][_0x0d6a('0x22')](_0x3136dc)[_0x0d6a('0x2a')](function(_0x56663){_0x42e406[_0x0d6a('0x22')]=_0x56663;if(_0x21254e['query'][_0x0d6a('0x43')]){_0xa64805[_0x0d6a('0x44')]=[{'all':!![]}];}return db['Variable']['findAll'](_0xa64805);})[_0x0d6a('0x2a')](function(_0x578976){_0x42e406[_0x0d6a('0x45')]=_0x578976;return _0x42e406;})[_0x0d6a('0x2a')](respondWithFilteredResult(_0x4fdbce,_0xa64805))[_0x0d6a('0x46')](handleError(_0x4fdbce,null));};exports[_0x0d6a('0x47')]=function(_0x359595,_0x15c60b){var _0x164362={'raw':!![],'where':{'id':_0x359595[_0x0d6a('0x48')]['id']}},_0xceb0b2={};_0xceb0b2[_0x0d6a('0x33')]=_[_0x0d6a('0x35')](db[_0x0d6a('0x2f')][_0x0d6a('0x30')]);_0xceb0b2[_0x0d6a('0x36')]=_[_0x0d6a('0x35')](_0x359595[_0x0d6a('0x36')]);_0xceb0b2[_0x0d6a('0x37')]=_['intersection'](_0xceb0b2[_0x0d6a('0x33')],_0xceb0b2[_0x0d6a('0x36')]);_0x164362[_0x0d6a('0x38')]=_[_0x0d6a('0x39')](_0xceb0b2[_0x0d6a('0x33')],qs['fields'](_0x359595[_0x0d6a('0x36')][_0x0d6a('0x3a')]));_0x164362[_0x0d6a('0x38')]=_0x164362[_0x0d6a('0x38')][_0x0d6a('0x3b')]?_0x164362['attributes']:_0xceb0b2[_0x0d6a('0x33')];if(_0x359595[_0x0d6a('0x36')][_0x0d6a('0x43')]){_0x164362[_0x0d6a('0x44')]=[{'all':!![]}];}_0x164362=_[_0x0d6a('0x42')]({},_0x164362,_0x359595[_0x0d6a('0x49')]);return db['Variable'][_0x0d6a('0x4a')](_0x164362)['then'](handleEntityNotFound(_0x15c60b,null))['then'](respondWithResult(_0x15c60b,null))['catch'](handleError(_0x15c60b,null));};exports['create']=function(_0x248803,_0x8137bc){return db['Variable'][_0x0d6a('0x4b')](_0x248803[_0x0d6a('0x4c')],{})[_0x0d6a('0x2a')](function(_0x48d92c){var _0x171d07=_0x248803['user']['get']({'plain':!![]});if(!_0x171d07)throw new Error(_0x0d6a('0x4d'));if(_0x171d07[_0x0d6a('0x4e')]===_0x0d6a('0x4f')){var _0x2aa99c=_0x48d92c[_0x0d6a('0x50')]({'plain':!![]});var _0x4bfde9=_0x0d6a('0x51');return db['UserProfileSection'][_0x0d6a('0x4a')]({'where':{'name':_0x4bfde9,'userProfileId':_0x171d07[_0x0d6a('0x52')]},'raw':!![]})[_0x0d6a('0x2a')](function(_0x3c1f8e){if(_0x3c1f8e&&_0x3c1f8e[_0x0d6a('0x53')]===0x0){return db[_0x0d6a('0x54')][_0x0d6a('0x4b')]({'name':_0x2aa99c[_0x0d6a('0x2d')],'resourceId':_0x2aa99c['id'],'type':_0x3c1f8e[_0x0d6a('0x2d')],'sectionId':_0x3c1f8e['id']},{})[_0x0d6a('0x2a')](function(){return _0x48d92c;});}else{return _0x48d92c;}})[_0x0d6a('0x46')](function(_0x2e72c3){logger[_0x0d6a('0x55')](_0x0d6a('0x56'),_0x2e72c3);throw _0x2e72c3;});}return _0x48d92c;})[_0x0d6a('0x2a')](respondWithResult(_0x8137bc,0xc9))['catch'](handleError(_0x8137bc,null));};exports[_0x0d6a('0x29')]=function(_0x48ad16,_0xb766a9){if(_0x48ad16[_0x0d6a('0x4c')]['id']){delete _0x48ad16['body']['id'];}return db['Variable']['find']({'where':{'id':_0x48ad16['params']['id']}})[_0x0d6a('0x2a')](handleEntityNotFound(_0xb766a9,null))[_0x0d6a('0x2a')](saveUpdates(_0x48ad16[_0x0d6a('0x4c')],null))[_0x0d6a('0x2a')](respondWithResult(_0xb766a9,null))['catch'](handleError(_0xb766a9,null));};exports[_0x0d6a('0x2b')]=function(_0x1080c8,_0x179da6){return db[_0x0d6a('0x2f')][_0x0d6a('0x4a')]({'where':{'id':_0x1080c8[_0x0d6a('0x48')]['id']}})[_0x0d6a('0x2a')](handleEntityNotFound(_0x179da6,null))[_0x0d6a('0x2a')](removeEntity(_0x179da6,null))[_0x0d6a('0x46')](handleError(_0x179da6,null));};
\ No newline at end of file
index e445751..579f78a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bb2=['rimraf','../../config/environment','./variable.attributes','Variable','tools_variables','lodash','api','moment','request-promise','path'];(function(_0xf7bf02,_0x13da13){var _0x4f263f=function(_0x3b5603){while(--_0x3b5603){_0xf7bf02['push'](_0xf7bf02['shift']());}};_0x4f263f(++_0x13da13);}(_0x8bb2,0x14f));var _0x28bb=function(_0x25d386,_0x108d0d){_0x25d386=_0x25d386-0x0;var _0x857f4a=_0x8bb2[_0x25d386];return _0x857f4a;};'use strict';var _=require(_0x28bb('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x28bb('0x1'));var moment=require(_0x28bb('0x2'));var BPromise=require('bluebird');var rp=require(_0x28bb('0x3'));var fs=require('fs');var path=require(_0x28bb('0x4'));var rimraf=require(_0x28bb('0x5'));var config=require(_0x28bb('0x6'));var attributes=require(_0x28bb('0x7'));module['exports']=function(_0x954f99,_0x31fd5e){return _0x954f99['define'](_0x28bb('0x8'),attributes,{'tableName':_0x28bb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcba8=['request-promise','path','rimraf','../../config/environment','./variable.attributes','exports','define','Variable','tools_variables','lodash','util','moment','bluebird'];(function(_0x1c647e,_0x4efcc7){var _0x5db0c9=function(_0x1be155){while(--_0x1be155){_0x1c647e['push'](_0x1c647e['shift']());}};_0x5db0c9(++_0x4efcc7);}(_0xcba8,0x71));var _0x8cba=function(_0x25d4a1,_0x5f13e0){_0x25d4a1=_0x25d4a1-0x0;var _0x4cf763=_0xcba8[_0x25d4a1];return _0x4cf763;};'use strict';var _=require(_0x8cba('0x0'));var util=require(_0x8cba('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8cba('0x2'));var BPromise=require(_0x8cba('0x3'));var rp=require(_0x8cba('0x4'));var fs=require('fs');var path=require(_0x8cba('0x5'));var rimraf=require(_0x8cba('0x6'));var config=require(_0x8cba('0x7'));var attributes=require(_0x8cba('0x8'));module[_0x8cba('0x9')]=function(_0xc83617,_0x25cd05){return _0xc83617[_0x8cba('0xa')](_0x8cba('0xb'),attributes,{'tableName':_0x8cba('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 360aad8..e19769a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['info','request\x20sent','debug','stringify','error','code','message','Variable,\x20%s,\x20%s','result','catch','ShowVariable','find','options','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x502a1c,_0x3c8a0f){var _0xf4aef7=function(_0x5a15f7){while(--_0x5a15f7){_0x502a1c['push'](_0x502a1c['shift']());}};_0xf4aef7(++_0x3c8a0f);}(_0x5fc3,0xa8));var _0x35fc=function(_0x338f73,_0x1945c8){_0x338f73=_0x338f73-0x0;var _0x163fdf=_0x5fc3[_0x338f73];return _0x163fdf;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('Variable,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Variable,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('Variable,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}exports[_0x35fc('0x16')]=function(_0x553677){var _0x41e165=this;return new Promise(function(_0x363e47,_0x2e513b){return db['Variable'][_0x35fc('0x17')]({'raw':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x19')]||null:null,'attributes':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1a')]||null:null,'include':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x553677['options'][_0x35fc('0x1b')],function(_0xd5399f){return{'model':db[_0xd5399f[_0x35fc('0x1d')]],'as':_0xd5399f['as'],'attributes':_0xd5399f[_0x35fc('0x1a')],'include':_0xd5399f[_0x35fc('0x1b')]?_['map'](_0xd5399f[_0x35fc('0x1b')],function(_0x4c587a){return{'model':db[_0x4c587a['model']],'as':_0x4c587a['as'],'attributes':_0x4c587a[_0x35fc('0x1a')],'include':_0x4c587a[_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x4c587a['include'],function(_0x4086e9){return{'model':db[_0x4086e9['model']],'as':_0x4086e9['as'],'attributes':_0x4086e9[_0x35fc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x35fc('0xb')](function(_0x5cb986){logger['info'](_0x35fc('0x16'),_0x553677);logger['debug'](_0x35fc('0x16'),_0x553677,JSON[_0x35fc('0xf')](_0x5cb986));_0x363e47(_0x5cb986);})['catch'](function(_0x26b7cb){logger[_0x35fc('0x10')](_0x35fc('0x16'),_0x26b7cb[_0x35fc('0x12')],_0x553677);_0x2e513b(_0x41e165[_0x35fc('0x10')](0x1f4,_0x26b7cb[_0x35fc('0x12')]));});});};
\ No newline at end of file
+var _0x55ca=['options','where','attributes','include','map','model','lodash','util','ioredis','../../mysqldb','../../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','stringify','error','code','message','info','result','catch','ShowVariable','Variable','find'];(function(_0x3865ea,_0x45f818){var _0x9845a6=function(_0x11efed){while(--_0x11efed){_0x3865ea['push'](_0x3865ea['shift']());}};_0x9845a6(++_0x45f818);}(_0x55ca,0x126));var _0xa55c=function(_0x3cd283,_0x2b8542){_0x3cd283=_0x3cd283-0x0;var _0x5ea1f0=_0x55ca[_0x3cd283];return _0x5ea1f0;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36b623,_0x4d0624,_0x2121fd){return new BPromise(function(_0x2537f0,_0x57e069){return client[_0xa55c('0xa')](_0x36b623,_0x2121fd)[_0xa55c('0xb')](function(_0x52a3bc){logger['info'](_0xa55c('0xc'),_0x4d0624,_0xa55c('0xd'));logger[_0xa55c('0xe')](_0xa55c('0xf'),_0x4d0624,_0xa55c('0xd'),JSON[_0xa55c('0x10')](_0x52a3bc));if(_0x52a3bc[_0xa55c('0x11')]){if(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x11')]('Variable,\x20%s,\x20%s',_0x4d0624,_0x52a3bc['error'][_0xa55c('0x13')]);return _0x57e069(_0x52a3bc['error']['message']);}logger['error'](_0xa55c('0xc'),_0x4d0624,_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);return _0x2537f0(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);}else{logger[_0xa55c('0x14')]('Variable,\x20%s,\x20%s',_0x4d0624,_0xa55c('0xd'));_0x2537f0(_0x52a3bc[_0xa55c('0x15')][_0xa55c('0x13')]);}})[_0xa55c('0x16')](function(_0x1c4cfd){logger[_0xa55c('0x11')](_0xa55c('0xc'),_0x4d0624,_0x1c4cfd);_0x57e069(_0x1c4cfd);});});}exports[_0xa55c('0x17')]=function(_0x24783b){var _0x4cee3c=this;return new Promise(function(_0x3d4c9e,_0x104a99){return db[_0xa55c('0x18')][_0xa55c('0x19')]({'raw':_0x24783b[_0xa55c('0x1a')]?_0x24783b[_0xa55c('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x24783b['options']?_0x24783b[_0xa55c('0x1a')][_0xa55c('0x1b')]||null:null,'attributes':_0x24783b[_0xa55c('0x1a')]?_0x24783b['options'][_0xa55c('0x1c')]||null:null,'include':_0x24783b[_0xa55c('0x1a')]?_0x24783b['options'][_0xa55c('0x1d')]?_[_0xa55c('0x1e')](_0x24783b[_0xa55c('0x1a')][_0xa55c('0x1d')],function(_0x234372){return{'model':db[_0x234372['model']],'as':_0x234372['as'],'attributes':_0x234372[_0xa55c('0x1c')],'include':_0x234372['include']?_['map'](_0x234372['include'],function(_0x19ae88){return{'model':db[_0x19ae88['model']],'as':_0x19ae88['as'],'attributes':_0x19ae88[_0xa55c('0x1c')],'include':_0x19ae88[_0xa55c('0x1d')]?_[_0xa55c('0x1e')](_0x19ae88[_0xa55c('0x1d')],function(_0x2313a9){return{'model':db[_0x2313a9[_0xa55c('0x1f')]],'as':_0x2313a9['as'],'attributes':_0x2313a9[_0xa55c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa55c('0xb')](function(_0x192df2){logger[_0xa55c('0x14')](_0xa55c('0x17'),_0x24783b);logger['debug'](_0xa55c('0x17'),_0x24783b,JSON[_0xa55c('0x10')](_0x192df2));_0x3d4c9e(_0x192df2);})[_0xa55c('0x16')](function(_0x906caa){logger['error'](_0xa55c('0x17'),_0x906caa[_0xa55c('0x13')],_0x24783b);_0x104a99(_0x4cee3c[_0xa55c('0x11')](0x1f4,_0x906caa[_0xa55c('0x13')]));});});};
\ No newline at end of file
index 112e286..f9b5241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fd6=['/restart','restart','/migrations','migrations','exports','express','Router','./version.controller','get','index','/fetch','isAuthenticated','fetch','/reset','canUpdate','reset','/pull','pull'];(function(_0x1a72f3,_0x217011){var _0x57ef47=function(_0x20123d){while(--_0x20123d){_0x1a72f3['push'](_0x1a72f3['shift']());}};_0x57ef47(++_0x217011);}(_0x9fd6,0x83));var _0x69fd=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x9fd6[_0x42cae2];return _0x5f256f;};'use strict';var express=require(_0x69fd('0x0'));var router=express[_0x69fd('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x69fd('0x2'));router[_0x69fd('0x3')]('/',controller[_0x69fd('0x4')]);router[_0x69fd('0x3')](_0x69fd('0x5'),auth[_0x69fd('0x6')](),auth['canUpdate'](),controller[_0x69fd('0x7')]);router[_0x69fd('0x3')](_0x69fd('0x8'),auth[_0x69fd('0x6')](),auth[_0x69fd('0x9')](),controller[_0x69fd('0xa')]);router['get'](_0x69fd('0xb'),auth[_0x69fd('0x6')](),auth[_0x69fd('0x9')](),controller[_0x69fd('0xc')]);router[_0x69fd('0x3')](_0x69fd('0xd'),auth[_0x69fd('0x6')](),controller[_0x69fd('0xe')]);router[_0x69fd('0x3')](_0x69fd('0xf'),controller[_0x69fd('0x10')]);module[_0x69fd('0x11')]=router;
\ No newline at end of file
+var _0x8a22=['../../components/auth/service','./version.controller','index','/fetch','canUpdate','get','/reset','isAuthenticated','reset','restart','/migrations','migrations','exports','Router'];(function(_0x4ae625,_0xf396d0){var _0x31accf=function(_0x3ded6b){while(--_0x3ded6b){_0x4ae625['push'](_0x4ae625['shift']());}};_0x31accf(++_0xf396d0);}(_0x8a22,0xa7));var _0x28a2=function(_0x1eb9a8,_0x4ef290){_0x1eb9a8=_0x1eb9a8-0x0;var _0x1f3836=_0x8a22[_0x1eb9a8];return _0x1f3836;};'use strict';var express=require('express');var router=express[_0x28a2('0x0')]();var auth=require(_0x28a2('0x1'));var controller=require(_0x28a2('0x2'));router['get']('/',controller[_0x28a2('0x3')]);router['get'](_0x28a2('0x4'),auth['isAuthenticated'](),auth[_0x28a2('0x5')](),controller['fetch']);router[_0x28a2('0x6')](_0x28a2('0x7'),auth[_0x28a2('0x8')](),auth[_0x28a2('0x5')](),controller[_0x28a2('0x9')]);router[_0x28a2('0x6')]('/pull',auth[_0x28a2('0x8')](),auth['canUpdate'](),controller['pull']);router[_0x28a2('0x6')]('/restart',auth[_0x28a2('0x8')](),controller[_0x28a2('0xa')]);router[_0x28a2('0x6')](_0x28a2('0xb'),controller[_0x28a2('0xc')]);module[_0x28a2('0xd')]=router;
\ No newline at end of file
index 598e083..3554b2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53d9=['reset','--hard','FETCH_HEAD','error','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','catch','migrations','readdirSync','join','server','length','replace','.js','sort','sequelize','Migration','constructor','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','child_process','exec','../../mysqldb','../../config/pm2','update','simple-git','root','exports','query','latest','fetch','version','status','json','origin','master','info'];(function(_0x37b7b6,_0x165a5c){var _0x10c4c3=function(_0x16d71e){while(--_0x16d71e){_0x37b7b6['push'](_0x37b7b6['shift']());}};_0x10c4c3(++_0x165a5c);}(_0x53d9,0xb4));var _0x953d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x53d9[_0x3dd15e];return _0x231fd0;};'use strict';var Umzug=require(_0x953d('0x0'));var path=require(_0x953d('0x1'));var fs=require('fs');var _=require(_0x953d('0x2'));var pkginfo=require('pkginfo')(module,'version');var compareVersions=require('compare-versions');var exec=require(_0x953d('0x3'))[_0x953d('0x4')];var db=require(_0x953d('0x5'))['db'];var config=require('../../config/environment');var pm2=require(_0x953d('0x6'));var logger=require('../../config/logger')(_0x953d('0x7'));var git=require(_0x953d('0x8'))(config[_0x953d('0x9')]);exports['index']=function(_0x245c73,_0x3be314){var _0x30e3fb={'current':module[_0x953d('0xa')]['version'],'phonebar':0x2};if(_0x245c73[_0x953d('0xb')]&&_0x245c73[_0x953d('0xb')][_0x953d('0xc')]){return git[_0x953d('0xd')]()['tags'](function(_0x403f7d,_0xed7089){_0x30e3fb[_0x953d('0xc')]=(_0x403f7d?module[_0x953d('0xa')][_0x953d('0xe')]:_0xed7089['latest'])||'2.0.0';return _0x3be314[_0x953d('0xf')](0xc8)[_0x953d('0x10')](_0x30e3fb);});}else{return _0x3be314[_0x953d('0xf')](0xc8)[_0x953d('0x10')](_0x30e3fb);}};exports[_0x953d('0xd')]=function(_0x4feb46,_0x5aa429){return git[_0x953d('0xd')]([_0x953d('0x11'),_0x953d('0x12')],function(_0x1443e5){if(_0x1443e5){logger['error'](_0x1443e5);return _0x5aa429[_0x953d('0xf')](0x1f4)['json'](_0x1443e5);}logger[_0x953d('0x13')]('git\x20fetch');return _0x5aa429[_0x953d('0xf')](0xc8)['json']({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x953d('0x14')]=function(_0x2ea176,_0x46d151){return git[_0x953d('0x14')]([_0x953d('0x15'),_0x953d('0x16')],function(_0x4d3ee0){if(_0x4d3ee0){logger[_0x953d('0x17')](_0x4d3ee0);return _0x46d151[_0x953d('0xf')](0x1f4)['json'](_0x4d3ee0);}logger[_0x953d('0x13')](_0x953d('0x18'));return _0x46d151['status'](0xc8)['json']({'output':_0x953d('0x19')});});};exports[_0x953d('0x1a')]=function(_0x2aa342,_0x307b5f){exec(_0x953d('0x1b'),function(_0x292f57,_0x4c4c74,_0x503f87){logger[_0x953d('0x13')](_0x4c4c74);logger[_0x953d('0x13')](_0x503f87);if(_0x292f57){logger[_0x953d('0x17')](_0x292f57);return _0x307b5f[_0x953d('0xf')](0x1f4)['json'](_0x292f57);}return _0x307b5f[_0x953d('0xf')](0xc8)[_0x953d('0x10')]({'output':_0x4c4c74});});};exports['restart']=function(_0x5251ab,_0x580edd){return pm2[_0x953d('0x1c')](_0x953d('0x1d'))[_0x953d('0x1e')](function(_0x309c44){logger['info'](_0x953d('0x1f'),_0x309c44);return _0x580edd['status'](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x953d('0x20')](function(_0x5cd88a){logger['error'](_0x5cd88a);return _0x580edd['status'](0x1f4)[_0x953d('0x10')](_0x5cd88a);});};exports[_0x953d('0x21')]=function(_0x3c7cd1,_0x10a0d4){var _0x4faaa2=fs[_0x953d('0x22')](path[_0x953d('0x23')](config[_0x953d('0x9')],_0x953d('0x24'),_0x953d('0x21')));var _0x599de5=[];for(var _0x93a2f6=0x0;_0x93a2f6<_0x4faaa2[_0x953d('0x25')];_0x93a2f6++){var _0x5075b8=_0x4faaa2[_0x93a2f6][_0x953d('0x26')](_0x953d('0x27'),'');if(compareVersions(module['exports']['version'],_0x5075b8)===-0x1){_0x599de5['push'](_0x5075b8);}}if(_0x599de5[_0x953d('0x25')]){var _0x2e638e=_0x599de5[_0x953d('0x28')](compareVersions);var _0x39304e=new Umzug({'storage':_0x953d('0x29'),'storageOptions':{'model':db[_0x953d('0x2a')],'modelName':'Migration','columnName':_0x953d('0xe')},'migrations':{'params':[db[_0x953d('0x29')]['getQueryInterface'](),db[_0x953d('0x29')][_0x953d('0x2b')],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[_0x953d('0x23')](config['root'],_0x953d('0x24'),_0x953d('0x21')),'pattern':/\.js$/}});_0x39304e['up']({'migrations':_[_0x953d('0x2c')](_0x2e638e,function(_0x39ca00){return _0x39ca00+_0x953d('0x27');})})[_0x953d('0x1e')](function(){return _0x10a0d4[_0x953d('0xf')](0xc8)[_0x953d('0x10')]({'output':_0x953d('0x2d')+module['exports'][_0x953d('0xe')]+_0x953d('0x2e')+_[_0x953d('0x2f')](_0x2e638e),'migrations':_['join'](_0x2e638e)});})['catch'](function(_0x3982cc){if(_0x3982cc instanceof db[_0x953d('0x29')][_0x953d('0x30')]){return _0x10a0d4[_0x953d('0xf')](0xc8)[_0x953d('0x10')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x10a0d4['status'](0x1f4)[_0x953d('0x10')](_0x3982cc);}});}else{return _0x10a0d4['status'](0xc8)[_0x953d('0x10')]({'output':_0x953d('0x31')});}};
\ No newline at end of file
+var _0x1a01=['status','json','error','info','git\x20fetch','reset','FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','migrations','join','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','catch','Database\x20already\x20up-to-date','umzug','path','version','compare-versions','child_process','exec','../../config/environment','../../config/logger','update','simple-git','root','index','exports','query','fetch','tags','latest','2.0.0'];(function(_0x35676d,_0x1ec71c){var _0x1f622b=function(_0x5e9e1f){while(--_0x5e9e1f){_0x35676d['push'](_0x35676d['shift']());}};_0x1f622b(++_0x1ec71c);}(_0x1a01,0x84));var _0x11a0=function(_0x1e6cf1,_0x40c6d8){_0x1e6cf1=_0x1e6cf1-0x0;var _0x527676=_0x1a01[_0x1e6cf1];return _0x527676;};'use strict';var Umzug=require(_0x11a0('0x0'));var path=require(_0x11a0('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require('pkginfo')(module,_0x11a0('0x2'));var compareVersions=require(_0x11a0('0x3'));var exec=require(_0x11a0('0x4'))[_0x11a0('0x5')];var db=require('../../mysqldb')['db'];var config=require(_0x11a0('0x6'));var pm2=require('../../config/pm2');var logger=require(_0x11a0('0x7'))(_0x11a0('0x8'));var git=require(_0x11a0('0x9'))(config[_0x11a0('0xa')]);exports[_0x11a0('0xb')]=function(_0x1c9085,_0x1136a0){var _0x1507d9={'current':module[_0x11a0('0xc')]['version'],'phonebar':0x2};if(_0x1c9085[_0x11a0('0xd')]&&_0x1c9085[_0x11a0('0xd')]['latest']){return git[_0x11a0('0xe')]()[_0x11a0('0xf')](function(_0x53c969,_0xfbb5a8){_0x1507d9[_0x11a0('0x10')]=(_0x53c969?module[_0x11a0('0xc')][_0x11a0('0x2')]:_0xfbb5a8[_0x11a0('0x10')])||_0x11a0('0x11');return _0x1136a0[_0x11a0('0x12')](0xc8)['json'](_0x1507d9);});}else{return _0x1136a0[_0x11a0('0x12')](0xc8)[_0x11a0('0x13')](_0x1507d9);}};exports[_0x11a0('0xe')]=function(_0x4f5872,_0x3c14f5){return git[_0x11a0('0xe')](['origin','master'],function(_0x303bc9){if(_0x303bc9){logger[_0x11a0('0x14')](_0x303bc9);return _0x3c14f5['status'](0x1f4)[_0x11a0('0x13')](_0x303bc9);}logger[_0x11a0('0x15')](_0x11a0('0x16'));return _0x3c14f5['status'](0xc8)['json']({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x11a0('0x17')]=function(_0x398e49,_0x3d206e){return git[_0x11a0('0x17')](['--hard',_0x11a0('0x18')],function(_0x2c4745){if(_0x2c4745){logger[_0x11a0('0x14')](_0x2c4745);return _0x3d206e[_0x11a0('0x12')](0x1f4)[_0x11a0('0x13')](_0x2c4745);}logger[_0x11a0('0x15')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x3d206e[_0x11a0('0x12')](0xc8)[_0x11a0('0x13')]({'output':_0x11a0('0x19')});});};exports[_0x11a0('0x1a')]=function(_0x2fcb18,_0x18b55b){exec(_0x11a0('0x1b'),function(_0x4b7927,_0x29d89d,_0x49c6ce){logger[_0x11a0('0x15')](_0x29d89d);logger[_0x11a0('0x15')](_0x49c6ce);if(_0x4b7927){logger[_0x11a0('0x14')](_0x4b7927);return _0x18b55b['status'](0x1f4)[_0x11a0('0x13')](_0x4b7927);}return _0x18b55b['status'](0xc8)[_0x11a0('0x13')]({'output':_0x29d89d});});};exports[_0x11a0('0x1c')]=function(_0x377509,_0x46ac1f){return pm2[_0x11a0('0x1c')](_0x11a0('0x1d'))[_0x11a0('0x1e')](function(_0xe5657){logger[_0x11a0('0x15')](_0x11a0('0x1f'),_0xe5657);return _0x46ac1f[_0x11a0('0x12')](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})['catch'](function(_0x12aedb){logger[_0x11a0('0x14')](_0x12aedb);return _0x46ac1f[_0x11a0('0x12')](0x1f4)[_0x11a0('0x13')](_0x12aedb);});};exports[_0x11a0('0x20')]=function(_0xa50c4b,_0x40b6b9){var _0x2ef8de=fs['readdirSync'](path[_0x11a0('0x21')](config['root'],_0x11a0('0x22'),_0x11a0('0x20')));var _0x5f283d=[];for(var _0x432b75=0x0;_0x432b75<_0x2ef8de[_0x11a0('0x23')];_0x432b75++){var _0x576492=_0x2ef8de[_0x432b75][_0x11a0('0x24')](_0x11a0('0x25'),'');if(compareVersions(module['exports'][_0x11a0('0x2')],_0x576492)===-0x1){_0x5f283d[_0x11a0('0x26')](_0x576492);}}if(_0x5f283d[_0x11a0('0x23')]){var _0x365215=_0x5f283d[_0x11a0('0x27')](compareVersions);var _0x56dac7=new Umzug({'storage':_0x11a0('0x28'),'storageOptions':{'model':db[_0x11a0('0x29')],'modelName':_0x11a0('0x29'),'columnName':_0x11a0('0x2')},'migrations':{'params':[db[_0x11a0('0x28')][_0x11a0('0x2a')](),db[_0x11a0('0x28')]['constructor'],function(){throw new Error(_0x11a0('0x2b'));}],'path':path[_0x11a0('0x21')](config[_0x11a0('0xa')],_0x11a0('0x22'),_0x11a0('0x20')),'pattern':/\.js$/}});_0x56dac7['up']({'migrations':_[_0x11a0('0x2c')](_0x365215,function(_0x5d9863){return _0x5d9863+_0x11a0('0x25');})})[_0x11a0('0x1e')](function(){return _0x40b6b9[_0x11a0('0x12')](0xc8)[_0x11a0('0x13')]({'output':_0x11a0('0x2d')+module[_0x11a0('0xc')][_0x11a0('0x2')]+_0x11a0('0x2e')+_[_0x11a0('0x2f')](_0x365215),'migrations':_[_0x11a0('0x21')](_0x365215)});})[_0x11a0('0x30')](function(_0x44dab9){if(_0x44dab9 instanceof db['sequelize']['UniqueConstraintError']){return _0x40b6b9[_0x11a0('0x12')](0xc8)[_0x11a0('0x13')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x40b6b9[_0x11a0('0x12')](0x1f4)[_0x11a0('0x13')](_0x44dab9);}});}else{return _0x40b6b9['status'](0xc8)[_0x11a0('0x13')]({'output':_0x11a0('0x31')});}};
\ No newline at end of file
index 091824c..f31b593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7479=['delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','update'];(function(_0xd65a77,_0x3b1d84){var _0x6fc063=function(_0x361881){while(--_0x361881){_0xd65a77['push'](_0xd65a77['shift']());}};_0x6fc063(++_0x3b1d84);}(_0x7479,0x162));var _0x9747=function(_0xa9fe73,_0x3b8d13){_0xa9fe73=_0xa9fe73-0x0;var _0x4a1179=_0x7479[_0xa9fe73];return _0x4a1179;};'use strict';var multer=require(_0x9747('0x0'));var util=require('util');var path=require(_0x9747('0x1'));var timeout=require(_0x9747('0x2'));var express=require(_0x9747('0x3'));var router=express[_0x9747('0x4')]();var fs_extra=require(_0x9747('0x5'));var auth=require(_0x9747('0x6'));var interaction=require(_0x9747('0x7'));var config=require(_0x9747('0x8'));var controller=require(_0x9747('0x9'));router[_0x9747('0xa')]('/',auth[_0x9747('0xb')](),controller[_0x9747('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x9747('0xd')]);router[_0x9747('0xa')](_0x9747('0xe'),auth[_0x9747('0xb')](),controller[_0x9747('0xf')]);router[_0x9747('0x10')]('/',auth['isAuthenticated'](),controller[_0x9747('0x11')]);router[_0x9747('0x12')](_0x9747('0xe'),auth[_0x9747('0xb')](),controller[_0x9747('0x13')]);router[_0x9747('0x14')](_0x9747('0xe'),auth[_0x9747('0xb')](),controller[_0x9747('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x1807=['../../components/interaction/service','./voiceAgentReport.controller','get','isAuthenticated','/describe','describe','/:id','post','create','put','delete','multer','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x46f203,_0x4198cc){var _0x562669=function(_0x1fe334){while(--_0x1fe334){_0x46f203['push'](_0x46f203['shift']());}};_0x562669(++_0x4198cc);}(_0x1807,0xdb));var _0x7180=function(_0x4aa51f,_0x33e730){_0x4aa51f=_0x4aa51f-0x0;var _0x233451=_0x1807[_0x4aa51f];return _0x233451;};'use strict';var multer=require(_0x7180('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7180('0x1'));var express=require(_0x7180('0x2'));var router=express['Router']();var fs_extra=require(_0x7180('0x3'));var auth=require(_0x7180('0x4'));var interaction=require(_0x7180('0x5'));var config=require('../../config/environment');var controller=require(_0x7180('0x6'));router[_0x7180('0x7')]('/',auth[_0x7180('0x8')](),controller['index']);router[_0x7180('0x7')](_0x7180('0x9'),auth[_0x7180('0x8')](),controller[_0x7180('0xa')]);router[_0x7180('0x7')](_0x7180('0xb'),auth[_0x7180('0x8')](),controller['show']);router[_0x7180('0xc')]('/',auth['isAuthenticated'](),controller[_0x7180('0xd')]);router[_0x7180('0xe')](_0x7180('0xb'),auth[_0x7180('0x8')](),controller['update']);router[_0x7180('0xf')](_0x7180('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9043165..f60dfe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc692=['DATE','BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xc692,0x15f));var _0x2c69=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0xc692[_0x13b02f];return _0x12e9a6;};'use strict';var Sequelize=require(_0x2c69('0x0'));module[_0x2c69('0x1')]={'type':{'type':Sequelize[_0x2c69('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x2c69('0x2')]},'queue':{'type':Sequelize[_0x2c69('0x2')]},'interface':{'type':Sequelize[_0x2c69('0x2')]},'membername':{'type':Sequelize[_0x2c69('0x2')]},'agentcalledAt':{'type':Sequelize[_0x2c69('0x3')]},'agentconnectAt':{'type':Sequelize[_0x2c69('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x2c69('0x3')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize[_0x2c69('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x2c69('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x2c69('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x2c69('0x5')]},'agentacw':{'type':Sequelize[_0x2c69('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2c69('0x5')]},'reason':{'type':Sequelize[_0x2c69('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x2c69('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x2c69('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x2c69('0x2')]},'language':{'type':Sequelize[_0x2c69('0x2')]},'accountcode':{'type':Sequelize[_0x2c69('0x2')]},'context':{'type':Sequelize[_0x2c69('0x2')]},'exten':{'type':Sequelize[_0x2c69('0x2')]},'priority':{'type':Sequelize[_0x2c69('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x2c69('0x5')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x2c69('0x2')]},'destcalleridname':{'type':Sequelize[_0x2c69('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x2c69('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x2c69('0x2')]},'destlanguage':{'type':Sequelize[_0x2c69('0x2')]},'destaccountcode':{'type':Sequelize[_0x2c69('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x2c69('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x2c69('0x2')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x2c69('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x2c69('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x2c69('0x2')]},'agententerreason':{'type':Sequelize[_0x2c69('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xde9f=['DATE','BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING'];(function(_0x5740b8,_0x2dbc22){var _0x2ebe76=function(_0x47fa5){while(--_0x47fa5){_0x5740b8['push'](_0x5740b8['shift']());}};_0x2ebe76(++_0x2dbc22);}(_0xde9f,0x118));var _0xfde9=function(_0x32e649,_0x228649){_0x32e649=_0x32e649-0x0;var _0x14d386=_0xde9f[_0x32e649];return _0x14d386;};'use strict';var Sequelize=require(_0xfde9('0x0'));module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xfde9('0x1')]},'calleridnum':{'type':Sequelize[_0xfde9('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xfde9('0x1')]},'interface':{'type':Sequelize[_0xfde9('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xfde9('0x2')]},'agentconnectAt':{'type':Sequelize[_0xfde9('0x2')]},'agentcompleteAt':{'type':Sequelize[_0xfde9('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xfde9('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0xfde9('0x4')]},'agentacw':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xfde9('0x4')]},'reason':{'type':Sequelize[_0xfde9('0x1')]},'lastevent':{'type':Sequelize[_0xfde9('0x1')]},'channel':{'type':Sequelize[_0xfde9('0x1')]},'channelstate':{'type':Sequelize[_0xfde9('0x4')]},'channelstatedesc':{'type':Sequelize[_0xfde9('0x1')]},'connectedlinenum':{'type':Sequelize[_0xfde9('0x1')]},'connectedlinename':{'type':Sequelize[_0xfde9('0x1')]},'language':{'type':Sequelize[_0xfde9('0x1')]},'accountcode':{'type':Sequelize[_0xfde9('0x1')]},'context':{'type':Sequelize[_0xfde9('0x1')]},'exten':{'type':Sequelize[_0xfde9('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xfde9('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xfde9('0x1')]},'destcalleridnum':{'type':Sequelize[_0xfde9('0x1')]},'destcalleridname':{'type':Sequelize[_0xfde9('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xfde9('0x1')]},'destaccountcode':{'type':Sequelize[_0xfde9('0x1')]},'destcontext':{'type':Sequelize[_0xfde9('0x1')]},'destexten':{'type':Sequelize[_0xfde9('0x1')]},'destpriority':{'type':Sequelize[_0xfde9('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xfde9('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xfde9('0x1')]},'transfer':{'type':Sequelize[_0xfde9('0x3')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xfde9('0x5')},'transferexten':{'type':Sequelize[_0xfde9('0x1')]},'transferuniqueid':{'type':Sequelize[_0xfde9('0x1')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index d7b30eb..b580daa 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(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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 3e8153d..2f28d61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['report_agent','destuniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport'];(function(_0x52a739,_0x424453){var _0x27c513=function(_0xab87cf){while(--_0xab87cf){_0x52a739['push'](_0x52a739['shift']());}};_0x27c513(++_0x424453);}(_0x8ef6,0xf2));var _0x68ef=function(_0x586292,_0x62522f){_0x586292=_0x586292-0x0;var _0x56b696=_0x8ef6[_0x586292];return _0x56b696;};'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':[{'fields':['uniqueid',_0x68ef('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd1f9=['request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','../../config/logger','api','moment','bluebird'];(function(_0x3b5505,_0x35a83f){var _0x32a141=function(_0x14f16f){while(--_0x14f16f){_0x3b5505['push'](_0x3b5505['shift']());}};_0x32a141(++_0x35a83f);}(_0xd1f9,0x88));var _0x9d1f=function(_0x54d5c8,_0x344ce5){_0x54d5c8=_0x54d5c8-0x0;var _0x525e2e=_0xd1f9[_0x54d5c8];return _0x525e2e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9d1f('0x0'))(_0x9d1f('0x1'));var moment=require(_0x9d1f('0x2'));var BPromise=require(_0x9d1f('0x3'));var rp=require(_0x9d1f('0x4'));var fs=require('fs');var path=require(_0x9d1f('0x5'));var rimraf=require(_0x9d1f('0x6'));var config=require(_0x9d1f('0x7'));var attributes=require(_0x9d1f('0x8'));module['exports']=function(_0x3c4bad,_0x1a72d8){return _0x3c4bad[_0x9d1f('0x9')](_0x9d1f('0xa'),attributes,{'tableName':_0x9d1f('0xb'),'paranoid':![],'indexes':[{'fields':[_0x9d1f('0xc'),_0x9d1f('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 6ca0058..8da3d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1066=['http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','debug','UpdateVoiceAgentReport','update','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x58f644,_0x5e5a43){var _0xa2d5f6=function(_0x1a8f74){while(--_0x1a8f74){_0x58f644['push'](_0x58f644['shift']());}};_0xa2d5f6(++_0x5e5a43);}(_0x1066,0x153));var _0x6106=function(_0x1b4f4b,_0x20795b){_0x1b4f4b=_0x1b4f4b-0x0;var _0x5a27d2=_0x1066[_0x1b4f4b];return _0x5a27d2;};'use strict';var _=require(_0x6106('0x0'));var util=require(_0x6106('0x1'));var moment=require('moment');var BPromise=require(_0x6106('0x2'));var rs=require(_0x6106('0x3'));var fs=require('fs');var Redis=require(_0x6106('0x4'));var db=require(_0x6106('0x5'))['db'];var utils=require(_0x6106('0x6'));var logger=require('../../config/logger')(_0x6106('0x7'));var config=require(_0x6106('0x8'));var jayson=require(_0x6106('0x9'));var client=jayson[_0x6106('0xa')][_0x6106('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x228e86,_0x19b651,_0x4c27aa){return new BPromise(function(_0x2b4735,_0x384e04){return client[_0x6106('0xc')](_0x228e86,_0x4c27aa)[_0x6106('0xd')](function(_0x587a63){logger[_0x6106('0xe')](_0x6106('0xf'),_0x19b651,_0x6106('0x10'));logger['debug'](_0x6106('0x11'),_0x19b651,_0x6106('0x10'),JSON[_0x6106('0x12')](_0x587a63));if(_0x587a63['error']){if(_0x587a63[_0x6106('0x13')]['code']===0x1f4){logger[_0x6106('0x13')](_0x6106('0xf'),_0x19b651,_0x587a63[_0x6106('0x13')]['message']);return _0x384e04(_0x587a63[_0x6106('0x13')][_0x6106('0x14')]);}logger[_0x6106('0x13')](_0x6106('0xf'),_0x19b651,_0x587a63[_0x6106('0x13')][_0x6106('0x14')]);return _0x2b4735(_0x587a63[_0x6106('0x13')][_0x6106('0x14')]);}else{logger['info'](_0x6106('0xf'),_0x19b651,_0x6106('0x10'));_0x2b4735(_0x587a63[_0x6106('0x15')][_0x6106('0x14')]);}})[_0x6106('0x16')](function(_0x74d539){logger['error'](_0x6106('0xf'),_0x19b651,_0x74d539);_0x384e04(_0x74d539);});});}exports[_0x6106('0x17')]=function(_0x333fb7){var _0x48cc21=this;return new Promise(function(_0x40e16,_0xece1f9){return db[_0x6106('0x18')][_0x6106('0x19')](_0x333fb7[_0x6106('0x1a')],{'raw':_0x333fb7[_0x6106('0x1b')]?_0x333fb7['options'][_0x6106('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x31e31b){logger[_0x6106('0xe')]('CreateVoiceAgentReport',_0x333fb7);logger[_0x6106('0x1d')](_0x6106('0x17'),_0x333fb7,JSON['stringify'](_0x31e31b));_0x40e16(_0x31e31b);})['catch'](function(_0x3ad552){logger['error'](_0x6106('0x17'),_0x3ad552['message'],_0x333fb7);_0xece1f9(_0x48cc21['error'](0x1f4,_0x3ad552['message']));});});};exports[_0x6106('0x1e')]=function(_0x3ec6be){var _0x57349a=this;return new Promise(function(_0xc61b4,_0x58e9bd){return db[_0x6106('0x18')][_0x6106('0x1f')](_0x3ec6be[_0x6106('0x1a')],{'raw':_0x3ec6be[_0x6106('0x1b')]?_0x3ec6be[_0x6106('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ec6be['options']?_0x3ec6be[_0x6106('0x1b')][_0x6106('0x20')]||null:null,'attributes':_0x3ec6be[_0x6106('0x1b')]?_0x3ec6be[_0x6106('0x1b')][_0x6106('0x21')]||null:null,'limit':_0x3ec6be[_0x6106('0x1b')]?_0x3ec6be['options'][_0x6106('0x22')]||null:null})[_0x6106('0xd')](function(_0x253fed){logger['info'](_0x6106('0x1e'),_0x3ec6be);logger[_0x6106('0x1d')](_0x6106('0x1e'),_0x3ec6be,JSON[_0x6106('0x12')](_0x253fed));_0xc61b4(_0x253fed);})['catch'](function(_0x3adc29){logger['error'](_0x6106('0x1e'),_0x3adc29[_0x6106('0x14')],_0x3ec6be);_0x58e9bd(_0x57349a[_0x6106('0x13')](0x1f4,_0x3adc29['message']));});});};
\ No newline at end of file
+var _0x516c=['rpc','jayson/promise','client','http','request','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateVoiceAgentReport','VoiceAgentReport','body','options','raw','then','debug','UpdateVoiceAgentReport','where','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x29db36,_0x410ae9){var _0x234e87=function(_0x48697b){while(--_0x48697b){_0x29db36['push'](_0x29db36['shift']());}};_0x234e87(++_0x410ae9);}(_0x516c,0x1d9));var _0xc516=function(_0x5c8e38,_0x16af9f){_0x5c8e38=_0x5c8e38-0x0;var _0x3b80f5=_0x516c[_0x5c8e38];return _0x3b80f5;};'use strict';var _=require(_0xc516('0x0'));var util=require('util');var moment=require(_0xc516('0x1'));var BPromise=require(_0xc516('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc516('0x3'));var db=require(_0xc516('0x4'))['db'];var utils=require(_0xc516('0x5'));var logger=require(_0xc516('0x6'))(_0xc516('0x7'));var config=require('../../config/environment');var jayson=require(_0xc516('0x8'));var client=jayson[_0xc516('0x9')][_0xc516('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2fad7c,_0x3a6899,_0x48e7d3){return new BPromise(function(_0x51929a,_0x45ce76){return client[_0xc516('0xb')](_0x2fad7c,_0x48e7d3)['then'](function(_0x54dc67){logger['info'](_0xc516('0xc'),_0x3a6899,_0xc516('0xd'));logger['debug'](_0xc516('0xe'),_0x3a6899,_0xc516('0xd'),JSON[_0xc516('0xf')](_0x54dc67));if(_0x54dc67[_0xc516('0x10')]){if(_0x54dc67['error'][_0xc516('0x11')]===0x1f4){logger[_0xc516('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x3a6899,_0x54dc67[_0xc516('0x10')][_0xc516('0x12')]);return _0x45ce76(_0x54dc67['error'][_0xc516('0x12')]);}logger['error'](_0xc516('0xc'),_0x3a6899,_0x54dc67[_0xc516('0x10')][_0xc516('0x12')]);return _0x51929a(_0x54dc67[_0xc516('0x10')][_0xc516('0x12')]);}else{logger[_0xc516('0x13')](_0xc516('0xc'),_0x3a6899,'request\x20sent');_0x51929a(_0x54dc67[_0xc516('0x14')][_0xc516('0x12')]);}})[_0xc516('0x15')](function(_0x354086){logger[_0xc516('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x3a6899,_0x354086);_0x45ce76(_0x354086);});});}exports[_0xc516('0x16')]=function(_0x42010a){var _0x4e517d=this;return new Promise(function(_0x510e7f,_0x5723a9){return db[_0xc516('0x17')]['create'](_0x42010a[_0xc516('0x18')],{'raw':_0x42010a[_0xc516('0x19')]?_0x42010a[_0xc516('0x19')][_0xc516('0x1a')]===undefined?!![]:![]:!![]})[_0xc516('0x1b')](function(_0x5392b8){logger[_0xc516('0x13')]('CreateVoiceAgentReport',_0x42010a);logger[_0xc516('0x1c')](_0xc516('0x16'),_0x42010a,JSON[_0xc516('0xf')](_0x5392b8));_0x510e7f(_0x5392b8);})[_0xc516('0x15')](function(_0x426dd9){logger[_0xc516('0x10')](_0xc516('0x16'),_0x426dd9[_0xc516('0x12')],_0x42010a);_0x5723a9(_0x4e517d[_0xc516('0x10')](0x1f4,_0x426dd9[_0xc516('0x12')]));});});};exports[_0xc516('0x1d')]=function(_0xa6d00e){var _0x1285d8=this;return new Promise(function(_0x3a75ed,_0x5280e0){return db[_0xc516('0x17')]['update'](_0xa6d00e[_0xc516('0x18')],{'raw':_0xa6d00e[_0xc516('0x19')]?_0xa6d00e[_0xc516('0x19')][_0xc516('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xa6d00e[_0xc516('0x19')]?_0xa6d00e[_0xc516('0x19')][_0xc516('0x1e')]||null:null,'attributes':_0xa6d00e['options']?_0xa6d00e[_0xc516('0x19')]['attributes']||null:null,'limit':_0xa6d00e['options']?_0xa6d00e['options'][_0xc516('0x1f')]||null:null})[_0xc516('0x1b')](function(_0x459e3f){logger[_0xc516('0x13')](_0xc516('0x1d'),_0xa6d00e);logger[_0xc516('0x1c')](_0xc516('0x1d'),_0xa6d00e,JSON['stringify'](_0x459e3f));_0x3a75ed(_0x459e3f);})[_0xc516('0x15')](function(_0x5ef51a){logger[_0xc516('0x10')](_0xc516('0x1d'),_0x5ef51a[_0xc516('0x12')],_0xa6d00e);_0x5280e0(_0x1285d8[_0xc516('0x10')](0x1f4,_0x5ef51a['message']));});});};
\ No newline at end of file
index 9b410ca..46718ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/:id','post','create','put','update'];(function(_0x105732,_0x52b0ef){var _0x5be813=function(_0x4b7b60){while(--_0x4b7b60){_0x105732['push'](_0x105732['shift']());}};_0x5be813(++_0x52b0ef);}(_0x9a19,0x114));var _0x99a1=function(_0x4a7631,_0x2c85b9){_0x4a7631=_0x4a7631-0x0;var _0x1a5a6f=_0x9a19[_0x4a7631];return _0x1a5a6f;};'use strict';var multer=require(_0x99a1('0x0'));var util=require(_0x99a1('0x1'));var path=require(_0x99a1('0x2'));var timeout=require('connect-timeout');var express=require(_0x99a1('0x3'));var router=express[_0x99a1('0x4')]();var fs_extra=require(_0x99a1('0x5'));var auth=require(_0x99a1('0x6'));var interaction=require(_0x99a1('0x7'));var config=require(_0x99a1('0x8'));var controller=require(_0x99a1('0x9'));router[_0x99a1('0xa')]('/',auth[_0x99a1('0xb')](),controller[_0x99a1('0xc')]);router[_0x99a1('0xa')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x99a1('0xa')](_0x99a1('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x99a1('0xe')]('/',auth[_0x99a1('0xb')](),controller[_0x99a1('0xf')]);router[_0x99a1('0x10')](_0x99a1('0xd'),auth['isAuthenticated'](),controller[_0x99a1('0x11')]);router[_0x99a1('0x12')](_0x99a1('0xd'),auth[_0x99a1('0xb')](),controller[_0x99a1('0x13')]);module[_0x99a1('0x14')]=router;
\ No newline at end of file
+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(_0x158f01,_0x12af3e){var _0x5ef74e=function(_0x5e7adc){while(--_0x5e7adc){_0x158f01['push'](_0x158f01['shift']());}};_0x5ef74e(++_0x12af3e);}(_0x24ca,0x1bc));var _0xa24c=function(_0x4d180c,_0x45c68e){_0x4d180c=_0x4d180c-0x0;var _0x49b57e=_0x24ca[_0x4d180c];return _0x49b57e;};'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
index 726dcda..fbf826a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87d0=['inbound','outbound','inbound-fax','DATE','INTEGER','sequelize','exports','STRING'];(function(_0x7e3bb8,_0x27c048){var _0x44c887=function(_0x55d7c6){while(--_0x55d7c6){_0x7e3bb8['push'](_0x7e3bb8['shift']());}};_0x44c887(++_0x27c048);}(_0x87d0,0xbd));var _0x087d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x87d0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x087d('0x0'));module[_0x087d('0x1')]={'uniqueid':{'type':Sequelize[_0x087d('0x2')]},'type':{'type':Sequelize['ENUM'](_0x087d('0x3'),'internal',_0x087d('0x4'),_0x087d('0x5'),'outbound-fax','dialer')},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x087d('0x2')]},'source':{'type':Sequelize[_0x087d('0x2')]},'destination':{'type':Sequelize[_0x087d('0x2')]},'destinationcontext':{'type':Sequelize[_0x087d('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x087d('0x2')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x087d('0x2')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0x087d('0x6')]},'systemanswertime':{'type':Sequelize[_0x087d('0x6')]},'answertime':{'type':Sequelize[_0x087d('0x6')]},'endtime':{'type':Sequelize[_0x087d('0x6')]},'duration':{'type':Sequelize[_0x087d('0x7')]},'billableseconds':{'type':Sequelize[_0x087d('0x7')]},'mohtime':{'type':Sequelize[_0x087d('0x7')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x087d('0x2')]},'amaflags':{'type':Sequelize[_0x087d('0x2')]},'userfield':{'type':Sequelize[_0x087d('0x2')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x087d('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x087d('0x2')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x087d('0x2')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize[_0x087d('0x2')]}};
\ No newline at end of file
+var _0x8292=['INTEGER','sequelize','STRING','ENUM','inbound','outbound','inbound-fax','outbound-fax','TEXT','DATE'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8292,0x19b));var _0x2829=function(_0xd93b26,_0x12bbf2){_0xd93b26=_0xd93b26-0x0;var _0x25f668=_0x8292[_0xd93b26];return _0x25f668;};'use strict';var Sequelize=require(_0x2829('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2829('0x1')]},'type':{'type':Sequelize[_0x2829('0x2')](_0x2829('0x3'),'internal',_0x2829('0x4'),_0x2829('0x5'),_0x2829('0x6'),'dialer')},'tag':{'type':Sequelize[_0x2829('0x1')]},'accountcode':{'type':Sequelize[_0x2829('0x1')]},'source':{'type':Sequelize[_0x2829('0x1')]},'destination':{'type':Sequelize[_0x2829('0x1')]},'destinationcontext':{'type':Sequelize[_0x2829('0x1')]},'callerid':{'type':Sequelize[_0x2829('0x1')]},'channel':{'type':Sequelize[_0x2829('0x1')]},'destinationchannel':{'type':Sequelize[_0x2829('0x1')]},'lastapplication':{'type':Sequelize[_0x2829('0x1')]},'lastdata':{'type':Sequelize[_0x2829('0x7')]},'starttime':{'type':Sequelize[_0x2829('0x8')]},'systemanswertime':{'type':Sequelize[_0x2829('0x8')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x2829('0x8')]},'duration':{'type':Sequelize[_0x2829('0x9')]},'billableseconds':{'type':Sequelize[_0x2829('0x9')]},'mohtime':{'type':Sequelize[_0x2829('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x2829('0x1')]},'amaflags':{'type':Sequelize[_0x2829('0x1')]},'userfield':{'type':Sequelize[_0x2829('0x1')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize[_0x2829('0x1')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x2829('0x1')]},'routeid':{'type':Sequelize[_0x2829('0x9')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 90aac13..76ab52c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','merge','where','options','alias','User','rows','catch','show','params','keys','rawAttributes','includeAll','include','create','body','find','describe','uniqueid','user','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2032,0xd9));var _0x2203=function(_0x4a3828,_0x1dacf6){_0x4a3828=_0x4a3828-0x0;var _0x226429=_0x2032[_0x4a3828];return _0x226429;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2203('0x0'));var zipdir=require(_0x2203('0x1'));var jsonpatch=require(_0x2203('0x2'));var rp=require('request-promise');var moment=require(_0x2203('0x3'));var BPromise=require(_0x2203('0x4'));var Mustache=require('mustache');var util=require(_0x2203('0x5'));var path=require(_0x2203('0x6'));var sox=require(_0x2203('0x7'));var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2203('0x16'));var db=require(_0x2203('0x17'))['db'];function respondWithStatusCode(_0x4b9376,_0x583bc7){_0x583bc7=_0x583bc7||0xcc;return function(_0x585c76){if(_0x585c76){return _0x4b9376['sendStatus'](_0x583bc7);}return _0x4b9376['status'](_0x583bc7)[_0x2203('0x18')]();};}function respondWithResult(_0x538b30,_0x592e47){_0x592e47=_0x592e47||0xc8;return function(_0x21a3af){if(_0x21a3af){return _0x538b30[_0x2203('0x19')](_0x592e47)[_0x2203('0x1a')](_0x21a3af);}};}function respondWithFilteredResult(_0x41af85,_0x226209){return function(_0x3fe0a8){if(_0x3fe0a8){var _0x2c36e6=typeof _0x226209[_0x2203('0x1b')]===_0x2203('0x1c')&&typeof _0x226209[_0x2203('0x1d')]==='undefined';var _0x280eda=_0x3fe0a8[_0x2203('0x1e')];var _0x4893ff=_0x2c36e6?0x0:_0x226209[_0x2203('0x1b')];var _0x8906e1=_0x2c36e6?_0x3fe0a8['count']:_0x226209[_0x2203('0x1b')]+_0x226209['limit'];var _0x2904ba;if(_0x8906e1>=_0x280eda){_0x8906e1=_0x280eda;_0x2904ba=0xc8;}else{_0x2904ba=0xce;}_0x41af85[_0x2203('0x19')](_0x2904ba);return _0x41af85[_0x2203('0x1f')](_0x2203('0x20'),_0x4893ff+'-'+_0x8906e1+'/'+_0x280eda)[_0x2203('0x1a')](_0x3fe0a8);}return null;};}function patchUpdates(_0x449039){return function(_0x538c23){try{jsonpatch[_0x2203('0x21')](_0x538c23,_0x449039,!![]);}catch(_0x50822b){return BPromise['reject'](_0x50822b);}return _0x538c23[_0x2203('0x22')]();};}function saveUpdates(_0x496d82,_0x3b8ef9){return function(_0x5bfe61){if(_0x5bfe61){return _0x5bfe61['update'](_0x496d82)[_0x2203('0x23')](function(_0x5e29cd){return _0x5e29cd;});}return null;};}function removeEntity(_0x5c8da9,_0x226374){return function(_0x2718f5){if(_0x2718f5){return _0x2718f5[_0x2203('0x24')]()[_0x2203('0x23')](function(){_0x5c8da9[_0x2203('0x19')](0xcc)[_0x2203('0x18')]();});}};}function handleEntityNotFound(_0x49c12,_0x250349){return function(_0x576378){if(!_0x576378){_0x49c12[_0x2203('0x25')](0x194);}return _0x576378;};}function handleError(_0x36b958,_0x39a11a){_0x39a11a=_0x39a11a||0x1f4;return function(_0x5f11bf){logger[_0x2203('0x26')](_0x5f11bf[_0x2203('0x27')]);if(_0x5f11bf['name']){delete _0x5f11bf[_0x2203('0x28')];}_0x36b958[_0x2203('0x19')](_0x39a11a)[_0x2203('0x29')](_0x5f11bf);};}exports[_0x2203('0x2a')]=function(_0x28ae02,_0x1df508){var _0x9c53f={},_0x5a95c1={},_0x34b8ba={'count':0x0,'rows':[]};var _0x616ed8=_[_0x2203('0x2b')](db[_0x2203('0x2c')]['rawAttributes'],function(_0x3a8e23){return{'name':_0x3a8e23[_0x2203('0x2d')],'type':_0x3a8e23[_0x2203('0x2e')][_0x2203('0x2f')]};});_0x5a95c1['model']=_[_0x2203('0x2b')](_0x616ed8,_0x2203('0x28'));_0x5a95c1['query']=_['keys'](_0x28ae02[_0x2203('0x30')]);_0x5a95c1['filters']=_['intersection'](_0x5a95c1[_0x2203('0x31')],_0x5a95c1[_0x2203('0x30')]);_0x9c53f[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5a95c1[_0x2203('0x31')],qs['fields'](_0x28ae02[_0x2203('0x30')][_0x2203('0x34')]));_0x9c53f['attributes']=_0x9c53f[_0x2203('0x32')][_0x2203('0x35')]?_0x9c53f[_0x2203('0x32')]:_0x5a95c1[_0x2203('0x31')];if(!_0x28ae02[_0x2203('0x30')][_0x2203('0x36')](_0x2203('0x37'))){_0x9c53f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x28ae02['query'][_0x2203('0x1d')]);_0x9c53f[_0x2203('0x1b')]=qs['offset'](_0x28ae02['query'][_0x2203('0x1b')]);}_0x9c53f['order']=qs[_0x2203('0x38')](_0x28ae02[_0x2203('0x30')][_0x2203('0x38')]);_0x9c53f['where']=qs['filters'](_[_0x2203('0x39')](_0x28ae02['query'],_0x5a95c1[_0x2203('0x3a')]),_0x616ed8);if(_0x28ae02['query'][_0x2203('0x3b')]){_0x9c53f['where']=_[_0x2203('0x3c')](_0x9c53f[_0x2203('0x3d')],{'$or':_[_0x2203('0x2b')](_0x616ed8,function(_0x40a793){if(_0x40a793[_0x2203('0x2e')]!=='VIRTUAL'){var _0x5f1561={};_0x5f1561[_0x40a793['name']]={'$like':'%'+_0x28ae02[_0x2203('0x30')][_0x2203('0x3b')]+'%'};return _0x5f1561;}})});}_0x9c53f=_[_0x2203('0x3c')]({},_0x9c53f,_0x28ae02[_0x2203('0x3e')]);var _0x3283fb={'where':_0x9c53f[_0x2203('0x3d')]};return db[_0x2203('0x2c')]['count'](_0x3283fb)[_0x2203('0x23')](function(_0x1b12c3){_0x34b8ba[_0x2203('0x1e')]=_0x1b12c3;if(_0x28ae02[_0x2203('0x30')]['includeAll']){_0x9c53f['include']=[{'attributes':['id',_0x2203('0x28'),'fullname',_0x2203('0x3f')],'model':db[_0x2203('0x40')],'as':_0x2203('0x40')}];}return db['VoiceCallReport']['findAll'](_0x9c53f);})[_0x2203('0x23')](function(_0x3739f6){_0x34b8ba[_0x2203('0x41')]=_0x3739f6;return _0x34b8ba;})[_0x2203('0x23')](respondWithFilteredResult(_0x1df508,_0x9c53f))[_0x2203('0x42')](handleError(_0x1df508,null));};exports[_0x2203('0x43')]=function(_0x5cd573,_0x15d3b6){var _0x165a3f={'raw':!![],'where':{'id':_0x5cd573[_0x2203('0x44')]['id']}},_0x3a866c={};_0x3a866c[_0x2203('0x31')]=_[_0x2203('0x45')](db[_0x2203('0x2c')][_0x2203('0x46')]);_0x3a866c[_0x2203('0x30')]=_[_0x2203('0x45')](_0x5cd573['query']);_0x3a866c[_0x2203('0x3a')]=_[_0x2203('0x33')](_0x3a866c[_0x2203('0x31')],_0x3a866c[_0x2203('0x30')]);_0x165a3f['attributes']=_['intersection'](_0x3a866c[_0x2203('0x31')],qs['fields'](_0x5cd573[_0x2203('0x30')][_0x2203('0x34')]));_0x165a3f[_0x2203('0x32')]=_0x165a3f[_0x2203('0x32')]['length']?_0x165a3f[_0x2203('0x32')]:_0x3a866c[_0x2203('0x31')];if(_0x5cd573['query'][_0x2203('0x47')]){_0x165a3f[_0x2203('0x48')]=[{'all':!![]}];}_0x165a3f=_[_0x2203('0x3c')]({},_0x165a3f,_0x5cd573[_0x2203('0x3e')]);return db['VoiceCallReport']['find'](_0x165a3f)[_0x2203('0x23')](handleEntityNotFound(_0x15d3b6,null))['then'](respondWithResult(_0x15d3b6,null))['catch'](handleError(_0x15d3b6,null));};exports[_0x2203('0x49')]=function(_0x33b7b5,_0x1a2665){return db['VoiceCallReport']['create'](_0x33b7b5[_0x2203('0x4a')],{})[_0x2203('0x23')](respondWithResult(_0x1a2665,0xc9))[_0x2203('0x42')](handleError(_0x1a2665,null));};exports[_0x2203('0x24')]=function(_0x225b0e,_0x21fd78){return db['VoiceCallReport'][_0x2203('0x4b')]({'where':{'id':_0x225b0e['params']['id']}})[_0x2203('0x23')](handleEntityNotFound(_0x21fd78,null))[_0x2203('0x23')](removeEntity(_0x21fd78,null))[_0x2203('0x42')](handleError(_0x21fd78,null));};exports[_0x2203('0x4c')]=function(_0x58b9bb,_0x506795){return db[_0x2203('0x2c')][_0x2203('0x4c')]()[_0x2203('0x23')](respondWithResult(_0x506795,null))[_0x2203('0x42')](handleError(_0x506795,null));};exports['update']=function(_0x4de47a,_0x49999a){if(_0x4de47a[_0x2203('0x4a')][_0x2203('0x4d')]){delete _0x4de47a['body'][_0x2203('0x4d')];}return db[_0x2203('0x2c')]['find']({'where':{'uniqueid':_0x4de47a[_0x2203('0x44')]['id'],'UserId':{'$or':[null,_0x4de47a[_0x2203('0x4e')]['id']]}}})[_0x2203('0x23')](handleEntityNotFound(_0x49999a,null))[_0x2203('0x23')](saveUpdates(_0x4de47a['body'],null))[_0x2203('0x23')](respondWithResult(_0x49999a,null))['catch'](handleError(_0x49999a,null));};
\ No newline at end of file
+var _0xb10b=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','VoiceCallReport','includeAll','include','alias','User','rows','show','find','create','body','catch','params','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce'];(function(_0x4d755c,_0x591379){var _0x4de038=function(_0x2feb86){while(--_0x2feb86){_0x4d755c['push'](_0x4d755c['shift']());}};_0x4de038(++_0x591379);}(_0xb10b,0x12a));var _0xbb10=function(_0x9861ff,_0x41fb17){_0x9861ff=_0x9861ff-0x0;var _0x48852b=_0xb10b[_0x9861ff];return _0x48852b;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['VoiceCallReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'attributes':['id',_0xbb10('0x28'),'fullname',_0xbb10('0x43')],'model':db[_0xbb10('0x44')],'as':_0xbb10('0x44')}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x331751){_0x2e0249[_0xbb10('0x45')]=_0x331751;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x46')]=function(_0x202c60,_0x54ac18){var _0x5d9a4f={'raw':!![],'where':{'id':_0x202c60['params']['id']}},_0x38d78f={};_0x38d78f[_0xbb10('0x2f')]=_[_0xbb10('0x30')](db['VoiceCallReport'][_0xbb10('0x2c')]);_0x38d78f[_0xbb10('0x31')]=_[_0xbb10('0x30')](_0x202c60['query']);_0x38d78f[_0xbb10('0x3a')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],_0x38d78f[_0xbb10('0x31')]);_0x5d9a4f[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x202c60[_0xbb10('0x31')][_0xbb10('0x34')]));_0x5d9a4f[_0xbb10('0x33')]=_0x5d9a4f[_0xbb10('0x33')]['length']?_0x5d9a4f[_0xbb10('0x33')]:_0x38d78f[_0xbb10('0x2f')];if(_0x202c60['query'][_0xbb10('0x41')]){_0x5d9a4f[_0xbb10('0x42')]=[{'all':!![]}];}_0x5d9a4f=_[_0xbb10('0x3e')]({},_0x5d9a4f,_0x202c60[_0xbb10('0x3f')]);return db[_0xbb10('0x40')][_0xbb10('0x47')](_0x5d9a4f)[_0xbb10('0x23')](handleEntityNotFound(_0x54ac18,null))['then'](respondWithResult(_0x54ac18,null))['catch'](handleError(_0x54ac18,null));};exports[_0xbb10('0x48')]=function(_0x76a208,_0x2b12bd){return db['VoiceCallReport']['create'](_0x76a208[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x2b12bd,0xc9))[_0xbb10('0x4a')](handleError(_0x2b12bd,null));};exports[_0xbb10('0x24')]=function(_0x10159b,_0x22b315){return db[_0xbb10('0x40')][_0xbb10('0x47')]({'where':{'id':_0x10159b[_0xbb10('0x4b')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x22b315,null))['then'](removeEntity(_0x22b315,null))['catch'](handleError(_0x22b315,null));};exports[_0xbb10('0x4c')]=function(_0x467dba,_0x36ab7d){return db[_0xbb10('0x40')][_0xbb10('0x4c')]()[_0xbb10('0x23')](respondWithResult(_0x36ab7d,null))[_0xbb10('0x4a')](handleError(_0x36ab7d,null));};exports[_0xbb10('0x22')]=function(_0x1c0d8f,_0x1214f7){if(_0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')]){delete _0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')];}return db[_0xbb10('0x40')]['find']({'where':{'uniqueid':_0x1c0d8f[_0xbb10('0x4b')]['id'],'UserId':{'$or':[null,_0x1c0d8f['user']['id']]}}})[_0xbb10('0x23')](handleEntityNotFound(_0x1214f7,null))[_0xbb10('0x23')](saveUpdates(_0x1c0d8f[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x1214f7,null))[_0xbb10('0x4a')](handleError(_0x1214f7,null));};
\ No newline at end of file
index 8b352d7..b73d542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cff=['VoiceCallReport','report_call','uniqueid','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./voiceCallReport.attributes','exports','define'];(function(_0x3d6e5c,_0x5ef70a){var _0x41cf19=function(_0x160a14){while(--_0x160a14){_0x3d6e5c['push'](_0x3d6e5c['shift']());}};_0x41cf19(++_0x5ef70a);}(_0x9cff,0x1b0));var _0xf9cf=function(_0x1da436,_0x2fab9d){_0x1da436=_0x1da436-0x0;var _0xe4468d=_0x9cff[_0x1da436];return _0xe4468d;};'use strict';var _=require('lodash');var util=require(_0xf9cf('0x0'));var logger=require(_0xf9cf('0x1'))(_0xf9cf('0x2'));var moment=require('moment');var BPromise=require(_0xf9cf('0x3'));var rp=require(_0xf9cf('0x4'));var fs=require('fs');var path=require(_0xf9cf('0x5'));var rimraf=require('rimraf');var config=require(_0xf9cf('0x6'));var attributes=require(_0xf9cf('0x7'));module[_0xf9cf('0x8')]=function(_0x183113,_0xcacbdc){return _0x183113[_0xf9cf('0x9')](_0xf9cf('0xa'),attributes,{'tableName':_0xf9cf('0xb'),'paranoid':![],'indexes':[{'fields':[_0xf9cf('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x19cf=['uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','VoiceCallReport','report_call'];(function(_0x256684,_0x529c1e){var _0x37a0c9=function(_0x4b431b){while(--_0x4b431b){_0x256684['push'](_0x256684['shift']());}};_0x37a0c9(++_0x529c1e);}(_0x19cf,0x197));var _0xf19c=function(_0x39e016,_0x33144b){_0x39e016=_0x39e016-0x0;var _0x11b143=_0x19cf[_0x39e016];return _0x11b143;};'use strict';var _=require(_0xf19c('0x0'));var util=require(_0xf19c('0x1'));var logger=require('../../config/logger')(_0xf19c('0x2'));var moment=require(_0xf19c('0x3'));var BPromise=require(_0xf19c('0x4'));var rp=require(_0xf19c('0x5'));var fs=require('fs');var path=require(_0xf19c('0x6'));var rimraf=require(_0xf19c('0x7'));var config=require(_0xf19c('0x8'));var attributes=require(_0xf19c('0x9'));module[_0xf19c('0xa')]=function(_0x342993,_0x125dee){return _0x342993['define'](_0xf19c('0xb'),attributes,{'tableName':_0xf19c('0xc'),'paranoid':![],'indexes':[{'fields':[_0xf19c('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 63b69ae..2108c4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa957=['GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','limit','include','map','model','attributes','body','CreateVoiceCallReport','UpdateVoiceCallReport','update','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x2156c0,_0x5362b0){var _0x275307=function(_0x266e26){while(--_0x266e26){_0x2156c0['push'](_0x2156c0['shift']());}};_0x275307(++_0x5362b0);}(_0xa957,0x1cb));var _0x7a95=function(_0x2d4b0a,_0x5147ba){_0x2d4b0a=_0x2d4b0a-0x0;var _0xe59a7a=_0xa957[_0x2d4b0a];return _0xe59a7a;};'use strict';var _=require(_0x7a95('0x0'));var util=require('util');var moment=require(_0x7a95('0x1'));var BPromise=require(_0x7a95('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7a95('0x3'));var db=require(_0x7a95('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7a95('0x5'))(_0x7a95('0x6'));var config=require(_0x7a95('0x7'));var jayson=require(_0x7a95('0x8'));var client=jayson['client'][_0x7a95('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x276fbc,_0x448f6c,_0x565117){return new BPromise(function(_0x433d2b,_0x15818c){return client[_0x7a95('0xa')](_0x276fbc,_0x565117)[_0x7a95('0xb')](function(_0x152021){logger[_0x7a95('0xc')](_0x7a95('0xd'),_0x448f6c,'request\x20sent');logger[_0x7a95('0xe')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x448f6c,_0x7a95('0xf'),JSON[_0x7a95('0x10')](_0x152021));if(_0x152021[_0x7a95('0x11')]){if(_0x152021['error'][_0x7a95('0x12')]===0x1f4){logger['error'](_0x7a95('0xd'),_0x448f6c,_0x152021['error'][_0x7a95('0x13')]);return _0x15818c(_0x152021['error']['message']);}logger[_0x7a95('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x448f6c,_0x152021['error'][_0x7a95('0x13')]);return _0x433d2b(_0x152021[_0x7a95('0x11')][_0x7a95('0x13')]);}else{logger[_0x7a95('0xc')](_0x7a95('0xd'),_0x448f6c,'request\x20sent');_0x433d2b(_0x152021[_0x7a95('0x14')][_0x7a95('0x13')]);}})[_0x7a95('0x15')](function(_0x5200bc){logger[_0x7a95('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x448f6c,_0x5200bc);_0x15818c(_0x5200bc);});});}exports[_0x7a95('0x16')]=function(_0x3c9fdf){var _0x490f36=this;return new Promise(function(_0x6fce4f,_0x4c6415){return db[_0x7a95('0x17')][_0x7a95('0x18')]({'raw':_0x3c9fdf['options']?_0x3c9fdf[_0x7a95('0x19')][_0x7a95('0x1a')]===undefined?!![]:![]:!![],'where':_0x3c9fdf['options']?_0x3c9fdf[_0x7a95('0x19')][_0x7a95('0x1b')]||null:null,'attributes':_0x3c9fdf[_0x7a95('0x19')]?_0x3c9fdf[_0x7a95('0x19')]['attributes']||null:null,'limit':_0x3c9fdf['options']?_0x3c9fdf['options'][_0x7a95('0x1c')]||null:null,'include':_0x3c9fdf[_0x7a95('0x19')]?_0x3c9fdf[_0x7a95('0x19')][_0x7a95('0x1d')]?_[_0x7a95('0x1e')](_0x3c9fdf['options']['include'],function(_0x222d9f){return{'model':db[_0x222d9f[_0x7a95('0x1f')]],'as':_0x222d9f['as'],'attributes':_0x222d9f[_0x7a95('0x20')],'include':_0x222d9f[_0x7a95('0x1d')]?_[_0x7a95('0x1e')](_0x222d9f[_0x7a95('0x1d')],function(_0x422fba){return{'model':db[_0x422fba['model']],'as':_0x422fba['as'],'attributes':_0x422fba[_0x7a95('0x20')],'include':_0x422fba[_0x7a95('0x1d')]?_[_0x7a95('0x1e')](_0x422fba[_0x7a95('0x1d')],function(_0x3cc574){return{'model':db[_0x3cc574[_0x7a95('0x1f')]],'as':_0x3cc574['as'],'attributes':_0x3cc574[_0x7a95('0x20')]};}):[]};}):[]};}):[]:[]})[_0x7a95('0xb')](function(_0x1a6585){logger[_0x7a95('0xc')]('GetVoiceCallReport',_0x3c9fdf);logger[_0x7a95('0xe')](_0x7a95('0x16'),_0x3c9fdf,JSON[_0x7a95('0x10')](_0x1a6585));_0x6fce4f(_0x1a6585);})['catch'](function(_0x5935ed){logger[_0x7a95('0x11')](_0x7a95('0x16'),_0x5935ed['message'],_0x3c9fdf);_0x4c6415(_0x490f36['error'](0x1f4,_0x5935ed[_0x7a95('0x13')]));});});};exports['CreateVoiceCallReport']=function(_0x4e7697){var _0x2c4c97=this;return new Promise(function(_0x4f1faf,_0x3ee4c9){return db[_0x7a95('0x17')]['create'](_0x4e7697[_0x7a95('0x21')],{'raw':_0x4e7697[_0x7a95('0x19')]?_0x4e7697[_0x7a95('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x7a95('0xb')](function(_0x1690b9){logger[_0x7a95('0xc')](_0x7a95('0x22'),_0x4e7697);logger[_0x7a95('0xe')]('CreateVoiceCallReport',_0x4e7697,JSON[_0x7a95('0x10')](_0x1690b9));_0x4f1faf(_0x1690b9);})[_0x7a95('0x15')](function(_0x2db095){logger[_0x7a95('0x11')]('CreateVoiceCallReport',_0x2db095[_0x7a95('0x13')],_0x4e7697);_0x3ee4c9(_0x2c4c97[_0x7a95('0x11')](0x1f4,_0x2db095[_0x7a95('0x13')]));});});};exports[_0x7a95('0x23')]=function(_0xaa7175){var _0x113cdf=this;return new Promise(function(_0x54b75e,_0x9640fa){return db[_0x7a95('0x17')][_0x7a95('0x24')](_0xaa7175[_0x7a95('0x21')],{'raw':_0xaa7175[_0x7a95('0x19')]?_0xaa7175[_0x7a95('0x19')][_0x7a95('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xaa7175[_0x7a95('0x19')]?_0xaa7175[_0x7a95('0x19')]['where']||null:null,'attributes':_0xaa7175[_0x7a95('0x19')]?_0xaa7175[_0x7a95('0x19')]['attributes']||null:null,'limit':_0xaa7175[_0x7a95('0x19')]?_0xaa7175[_0x7a95('0x19')][_0x7a95('0x1c')]||null:null})[_0x7a95('0xb')](function(_0x30cf2d){logger['info'](_0x7a95('0x23'),_0xaa7175);logger[_0x7a95('0xe')]('UpdateVoiceCallReport',_0xaa7175,JSON['stringify'](_0x30cf2d));_0x54b75e(_0x30cf2d);})['catch'](function(_0x7eae2e){logger[_0x7a95('0x11')](_0x7a95('0x23'),_0x7eae2e[_0x7a95('0x13')],_0xaa7175);_0x9640fa(_0x113cdf[_0x7a95('0x11')](0x1f4,_0x7eae2e[_0x7a95('0x13')]));});});};
\ No newline at end of file
+var _0x2a07=['CreateVoiceCallReport','create','raw','UpdateVoiceCallReport','update','body','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','where','attributes','limit','map','include','model'];(function(_0x18c9d0,_0x199702){var _0xa3f376=function(_0x586e57){while(--_0x586e57){_0x18c9d0['push'](_0x18c9d0['shift']());}};_0xa3f376(++_0x199702);}(_0x2a07,0x78));var _0x72a0=function(_0x4f0f6d,_0x28b6f4){_0x4f0f6d=_0x4f0f6d-0x0;var _0x2b2c98=_0x2a07[_0x4f0f6d];return _0x2b2c98;};'use strict';var _=require(_0x72a0('0x0'));var util=require('util');var moment=require(_0x72a0('0x1'));var BPromise=require(_0x72a0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x72a0('0x3'));var db=require(_0x72a0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x72a0('0x5'))(_0x72a0('0x6'));var config=require(_0x72a0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x72a0('0x8')][_0x72a0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x35ae79,_0x461b9a,_0x4259b0){return new BPromise(function(_0x2af16f,_0x43ece3){return client[_0x72a0('0xa')](_0x35ae79,_0x4259b0)[_0x72a0('0xb')](function(_0x4f8a09){logger[_0x72a0('0xc')](_0x72a0('0xd'),_0x461b9a,_0x72a0('0xe'));logger[_0x72a0('0xf')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x461b9a,_0x72a0('0xe'),JSON[_0x72a0('0x10')](_0x4f8a09));if(_0x4f8a09[_0x72a0('0x11')]){if(_0x4f8a09['error'][_0x72a0('0x12')]===0x1f4){logger[_0x72a0('0x11')](_0x72a0('0xd'),_0x461b9a,_0x4f8a09[_0x72a0('0x11')]['message']);return _0x43ece3(_0x4f8a09['error']['message']);}logger[_0x72a0('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x461b9a,_0x4f8a09[_0x72a0('0x11')][_0x72a0('0x13')]);return _0x2af16f(_0x4f8a09[_0x72a0('0x11')][_0x72a0('0x13')]);}else{logger['info'](_0x72a0('0xd'),_0x461b9a,_0x72a0('0xe'));_0x2af16f(_0x4f8a09[_0x72a0('0x14')]['message']);}})[_0x72a0('0x15')](function(_0x438ab1){logger[_0x72a0('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x461b9a,_0x438ab1);_0x43ece3(_0x438ab1);});});}exports[_0x72a0('0x16')]=function(_0x29859c){var _0x2e991c=this;return new Promise(function(_0x12c79e,_0x583b4e){return db[_0x72a0('0x17')][_0x72a0('0x18')]({'raw':_0x29859c['options']?_0x29859c[_0x72a0('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x29859c[_0x72a0('0x19')]?_0x29859c[_0x72a0('0x19')][_0x72a0('0x1a')]||null:null,'attributes':_0x29859c[_0x72a0('0x19')]?_0x29859c['options'][_0x72a0('0x1b')]||null:null,'limit':_0x29859c[_0x72a0('0x19')]?_0x29859c[_0x72a0('0x19')][_0x72a0('0x1c')]||null:null,'include':_0x29859c[_0x72a0('0x19')]?_0x29859c[_0x72a0('0x19')]['include']?_[_0x72a0('0x1d')](_0x29859c[_0x72a0('0x19')][_0x72a0('0x1e')],function(_0x5f4b8c){return{'model':db[_0x5f4b8c[_0x72a0('0x1f')]],'as':_0x5f4b8c['as'],'attributes':_0x5f4b8c[_0x72a0('0x1b')],'include':_0x5f4b8c[_0x72a0('0x1e')]?_[_0x72a0('0x1d')](_0x5f4b8c[_0x72a0('0x1e')],function(_0x4e1687){return{'model':db[_0x4e1687[_0x72a0('0x1f')]],'as':_0x4e1687['as'],'attributes':_0x4e1687['attributes'],'include':_0x4e1687[_0x72a0('0x1e')]?_[_0x72a0('0x1d')](_0x4e1687[_0x72a0('0x1e')],function(_0x1d4a10){return{'model':db[_0x1d4a10[_0x72a0('0x1f')]],'as':_0x1d4a10['as'],'attributes':_0x1d4a10[_0x72a0('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x72a0('0xb')](function(_0x34a969){logger['info']('GetVoiceCallReport',_0x29859c);logger[_0x72a0('0xf')](_0x72a0('0x16'),_0x29859c,JSON[_0x72a0('0x10')](_0x34a969));_0x12c79e(_0x34a969);})[_0x72a0('0x15')](function(_0x48e430){logger['error'](_0x72a0('0x16'),_0x48e430[_0x72a0('0x13')],_0x29859c);_0x583b4e(_0x2e991c[_0x72a0('0x11')](0x1f4,_0x48e430[_0x72a0('0x13')]));});});};exports[_0x72a0('0x20')]=function(_0x3b6ac5){var _0x4af774=this;return new Promise(function(_0x388b89,_0x58247a){return db[_0x72a0('0x17')][_0x72a0('0x21')](_0x3b6ac5['body'],{'raw':_0x3b6ac5[_0x72a0('0x19')]?_0x3b6ac5[_0x72a0('0x19')][_0x72a0('0x22')]===undefined?!![]:![]:!![]})[_0x72a0('0xb')](function(_0xb10e2b){logger[_0x72a0('0xc')](_0x72a0('0x20'),_0x3b6ac5);logger[_0x72a0('0xf')]('CreateVoiceCallReport',_0x3b6ac5,JSON[_0x72a0('0x10')](_0xb10e2b));_0x388b89(_0xb10e2b);})['catch'](function(_0x416423){logger[_0x72a0('0x11')](_0x72a0('0x20'),_0x416423[_0x72a0('0x13')],_0x3b6ac5);_0x58247a(_0x4af774[_0x72a0('0x11')](0x1f4,_0x416423[_0x72a0('0x13')]));});});};exports[_0x72a0('0x23')]=function(_0x3a8300){var _0xe16a65=this;return new Promise(function(_0x4c0636,_0x419dba){return db[_0x72a0('0x17')][_0x72a0('0x24')](_0x3a8300[_0x72a0('0x25')],{'raw':_0x3a8300[_0x72a0('0x19')]?_0x3a8300[_0x72a0('0x19')][_0x72a0('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a8300[_0x72a0('0x19')]?_0x3a8300['options'][_0x72a0('0x1a')]||null:null,'attributes':_0x3a8300[_0x72a0('0x19')]?_0x3a8300[_0x72a0('0x19')]['attributes']||null:null,'limit':_0x3a8300[_0x72a0('0x19')]?_0x3a8300[_0x72a0('0x19')][_0x72a0('0x1c')]||null:null})[_0x72a0('0xb')](function(_0x530761){logger[_0x72a0('0xc')]('UpdateVoiceCallReport',_0x3a8300);logger[_0x72a0('0xf')](_0x72a0('0x23'),_0x3a8300,JSON[_0x72a0('0x10')](_0x530761));_0x4c0636(_0x530761);})[_0x72a0('0x15')](function(_0x5b6a2f){logger[_0x72a0('0x11')](_0x72a0('0x23'),_0x5b6a2f[_0x72a0('0x13')],_0x3a8300);_0x419dba(_0xe16a65[_0x72a0('0x11')](0x1f4,_0x5b6a2f['message']));});});};
\ No newline at end of file
index 8c1afa9..485508c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b14=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service'];(function(_0x3fc287,_0x5c3f36){var _0x33af9f=function(_0x27cfc6){while(--_0x27cfc6){_0x3fc287['push'](_0x3fc287['shift']());}};_0x33af9f(++_0x5c3f36);}(_0x9b14,0xb8));var _0x49b1=function(_0x20634c,_0x5534fc){_0x20634c=_0x20634c-0x0;var _0x5d8936=_0x9b14[_0x20634c];return _0x5d8936;};'use strict';var multer=require(_0x49b1('0x0'));var util=require(_0x49b1('0x1'));var path=require(_0x49b1('0x2'));var timeout=require(_0x49b1('0x3'));var express=require('express');var router=express[_0x49b1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x49b1('0x5'));var interaction=require(_0x49b1('0x6'));var config=require(_0x49b1('0x7'));var controller=require('./voiceChanSpy.controller');router[_0x49b1('0x8')]('/',auth[_0x49b1('0x9')](),controller[_0x49b1('0xa')]);router[_0x49b1('0x8')](_0x49b1('0xb'),auth[_0x49b1('0x9')](),controller[_0x49b1('0xc')]);router[_0x49b1('0xd')]('/',auth['isAuthenticated'](),controller[_0x49b1('0xe')]);router[_0x49b1('0xf')](_0x49b1('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x49b1('0x10')](_0x49b1('0xb'),auth[_0x49b1('0x9')](),controller[_0x49b1('0x11')]);module[_0x49b1('0x12')]=router;
\ No newline at end of file
+var _0x7c77=['Router','fs-extra','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','isAuthenticated','post','put','/:id','update','delete','destroy','util','path','connect-timeout','express'];(function(_0x2d0954,_0x5c9e8b){var _0x3ad369=function(_0x31f83d){while(--_0x31f83d){_0x2d0954['push'](_0x2d0954['shift']());}};_0x3ad369(++_0x5c9e8b);}(_0x7c77,0x16c));var _0x77c7=function(_0x5cd3d0,_0x45f135){_0x5cd3d0=_0x5cd3d0-0x0;var _0x26961d=_0x7c77[_0x5cd3d0];return _0x26961d;};'use strict';var multer=require('multer');var util=require(_0x77c7('0x0'));var path=require(_0x77c7('0x1'));var timeout=require(_0x77c7('0x2'));var express=require(_0x77c7('0x3'));var router=express[_0x77c7('0x4')]();var fs_extra=require(_0x77c7('0x5'));var auth=require(_0x77c7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x77c7('0x7'));var controller=require(_0x77c7('0x8'));router['get']('/',auth[_0x77c7('0x9')](),controller['index']);router['get']('/:id',auth[_0x77c7('0x9')](),controller['show']);router[_0x77c7('0xa')]('/',auth[_0x77c7('0x9')](),controller['create']);router[_0x77c7('0xb')](_0x77c7('0xc'),auth['isAuthenticated'](),controller[_0x77c7('0xd')]);router[_0x77c7('0xe')](_0x77c7('0xc'),auth[_0x77c7('0x9')](),controller[_0x77c7('0xf')]);module['exports']=router;
\ No newline at end of file
index e570651..c721c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ae6=['getDataValue','split','BOOLEAN','sequelize','exports','STRING','options','join'];(function(_0x4d869a,_0x4c7344){var _0x11ad01=function(_0x10e34f){while(--_0x10e34f){_0x4d869a['push'](_0x4d869a['shift']());}};_0x11ad01(++_0x4c7344);}(_0x2ae6,0xeb));var _0x62ae=function(_0x547456,_0x1de17e){_0x547456=_0x547456-0x0;var _0xc1fd7b=_0x2ae6[_0x547456];return _0xc1fd7b;};'use strict';var Sequelize=require(_0x62ae('0x0'));module[_0x62ae('0x1')]={'name':{'type':Sequelize[_0x62ae('0x2')]},'prefix':{'type':Sequelize[_0x62ae('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x5e7b02){this['setDataValue'](_0x62ae('0x3'),_0x5e7b02?_0x5e7b02[_0x62ae('0x4')](''):[]);},'get':function(){return this[_0x62ae('0x5')](_0x62ae('0x3'))?this[_0x62ae('0x5')](_0x62ae('0x3'))[_0x62ae('0x6')](''):[];}},'auth':{'type':Sequelize[_0x62ae('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0x62ae('0x2')]},'record':{'type':Sequelize[_0x62ae('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x62ae('0x2')]},'description':{'type':Sequelize[_0x62ae('0x2')]}};
\ No newline at end of file
+var _0x8fa0=['join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','options'];(function(_0x49f24a,_0x3f8da0){var _0x41ae25=function(_0xb08e2a){while(--_0xb08e2a){_0x49f24a['push'](_0x49f24a['shift']());}};_0x41ae25(++_0x3f8da0);}(_0x8fa0,0x12c));var _0x08fa=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x8fa0[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0x08fa('0x0'));module[_0x08fa('0x1')]={'name':{'type':Sequelize[_0x08fa('0x2')]},'prefix':{'type':Sequelize[_0x08fa('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x08fa('0x2')],'set':function(_0x5ad9ba){this['setDataValue'](_0x08fa('0x3'),_0x5ad9ba?_0x5ad9ba[_0x08fa('0x4')](''):[]);},'get':function(){return this[_0x08fa('0x5')](_0x08fa('0x3'))?this[_0x08fa('0x5')](_0x08fa('0x3'))[_0x08fa('0x6')](''):[];}},'auth':{'type':Sequelize[_0x08fa('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0x08fa('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x08fa('0x2')]},'description':{'type':Sequelize[_0x08fa('0x2')]}};
\ No newline at end of file
index 8f196c9..6687361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfe9=['model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','user','role','ChanSpies','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','sendStatus','error','name','send','index','VoiceChanSpy','rawAttributes','type','key','query','keys','intersection'];(function(_0x3c815e,_0x3d8105){var _0xf66654=function(_0x55cf6b){while(--_0x55cf6b){_0x3c815e['push'](_0x3c815e['shift']());}};_0xf66654(++_0x3d8105);}(_0xdfe9,0xc3));var _0x9dfe=function(_0x2997ed,_0x4aae04){_0x2997ed=_0x2997ed-0x0;var _0x2dfeba=_0xdfe9[_0x2997ed];return _0x2dfeba;};'use strict';var emlformat=require(_0x9dfe('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9dfe('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9dfe('0x2'));var BPromise=require(_0x9dfe('0x3'));var Mustache=require(_0x9dfe('0x4'));var util=require(_0x9dfe('0x5'));var path=require(_0x9dfe('0x6'));var sox=require(_0x9dfe('0x7'));var csv=require(_0x9dfe('0x8'));var ejs=require(_0x9dfe('0x9'));var fs=require('fs');var fs_extra=require(_0x9dfe('0xa'));var _=require(_0x9dfe('0xb'));var squel=require(_0x9dfe('0xc'));var crypto=require('crypto');var jsforce=require(_0x9dfe('0xd'));var deskjs=require(_0x9dfe('0xe'));var toCsv=require(_0x9dfe('0x8'));var querystring=require(_0x9dfe('0xf'));var Papa=require(_0x9dfe('0x10'));var Redis=require(_0x9dfe('0x11'));var authService=require(_0x9dfe('0x12'));var qs=require(_0x9dfe('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9dfe('0x14'));var logger=require(_0x9dfe('0x15'))(_0x9dfe('0x16'));var utils=require(_0x9dfe('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9dfe('0x18'))['db'];function respondWithStatusCode(_0x1f3678,_0x4da42d){_0x4da42d=_0x4da42d||0xcc;return function(_0x547ae1){if(_0x547ae1){return _0x1f3678['sendStatus'](_0x4da42d);}return _0x1f3678[_0x9dfe('0x19')](_0x4da42d)[_0x9dfe('0x1a')]();};}function respondWithResult(_0x2a7734,_0x12794d){_0x12794d=_0x12794d||0xc8;return function(_0x189edc){if(_0x189edc){return _0x2a7734[_0x9dfe('0x19')](_0x12794d)[_0x9dfe('0x1b')](_0x189edc);}};}function respondWithFilteredResult(_0x7e1918,_0x316205){return function(_0x56c864){if(_0x56c864){var _0x538be3=typeof _0x316205[_0x9dfe('0x1c')]==='undefined'&&typeof _0x316205[_0x9dfe('0x1d')]===_0x9dfe('0x1e');var _0xc5e804=_0x56c864[_0x9dfe('0x1f')];var _0x15e32b=_0x538be3?0x0:_0x316205[_0x9dfe('0x1c')];var _0x5c7158=_0x538be3?_0x56c864[_0x9dfe('0x1f')]:_0x316205[_0x9dfe('0x1c')]+_0x316205[_0x9dfe('0x1d')];var _0x145e4d;if(_0x5c7158>=_0xc5e804){_0x5c7158=_0xc5e804;_0x145e4d=0xc8;}else{_0x145e4d=0xce;}_0x7e1918[_0x9dfe('0x19')](_0x145e4d);return _0x7e1918[_0x9dfe('0x20')](_0x9dfe('0x21'),_0x15e32b+'-'+_0x5c7158+'/'+_0xc5e804)[_0x9dfe('0x1b')](_0x56c864);}return null;};}function patchUpdates(_0x439cd4){return function(_0x1cf33d){try{jsonpatch[_0x9dfe('0x22')](_0x1cf33d,_0x439cd4,!![]);}catch(_0x2971b){return BPromise[_0x9dfe('0x23')](_0x2971b);}return _0x1cf33d[_0x9dfe('0x24')]();};}function saveUpdates(_0x54ee52,_0x484f22){return function(_0x35cb5c){if(_0x35cb5c){return _0x35cb5c[_0x9dfe('0x25')](_0x54ee52)[_0x9dfe('0x26')](function(_0x12ef2a){return _0x12ef2a;});}return null;};}function removeEntity(_0x30f0cd,_0x3da663){return function(_0x3354b7){if(_0x3354b7){return _0x3354b7[_0x9dfe('0x27')]()[_0x9dfe('0x26')](function(){var _0xf7fc28=_0x3354b7[_0x9dfe('0x28')]({'plain':!![]});var _0x512599='ChanSpies';return db[_0x9dfe('0x29')][_0x9dfe('0x27')]({'where':{'type':_0x512599,'resourceId':_0xf7fc28['id']}})['then'](function(){return _0x3354b7;});})[_0x9dfe('0x26')](function(){_0x30f0cd[_0x9dfe('0x19')](0xcc)[_0x9dfe('0x1a')]();});}};}function handleEntityNotFound(_0x5bb850,_0x2fba44){return function(_0xac36fc){if(!_0xac36fc){_0x5bb850[_0x9dfe('0x2a')](0x194);}return _0xac36fc;};}function handleError(_0x29a127,_0x2c8a09){_0x2c8a09=_0x2c8a09||0x1f4;return function(_0x4ae7ad){logger[_0x9dfe('0x2b')](_0x4ae7ad['stack']);if(_0x4ae7ad[_0x9dfe('0x2c')]){delete _0x4ae7ad[_0x9dfe('0x2c')];}_0x29a127[_0x9dfe('0x19')](_0x2c8a09)[_0x9dfe('0x2d')](_0x4ae7ad);};}exports[_0x9dfe('0x2e')]=function(_0x10c2d4,_0x3bf281){var _0x222cea={},_0x4de29c={},_0x580bd4={'count':0x0,'rows':[]};var _0x458521=_['map'](db[_0x9dfe('0x2f')][_0x9dfe('0x30')],function(_0x2fe43e){return{'name':_0x2fe43e['fieldName'],'type':_0x2fe43e[_0x9dfe('0x31')][_0x9dfe('0x32')]};});_0x4de29c['model']=_['map'](_0x458521,_0x9dfe('0x2c'));_0x4de29c[_0x9dfe('0x33')]=_[_0x9dfe('0x34')](_0x10c2d4[_0x9dfe('0x33')]);_0x4de29c['filters']=_[_0x9dfe('0x35')](_0x4de29c[_0x9dfe('0x36')],_0x4de29c[_0x9dfe('0x33')]);_0x222cea[_0x9dfe('0x37')]=_[_0x9dfe('0x35')](_0x4de29c['model'],qs[_0x9dfe('0x38')](_0x10c2d4[_0x9dfe('0x33')][_0x9dfe('0x38')]));_0x222cea[_0x9dfe('0x37')]=_0x222cea[_0x9dfe('0x37')][_0x9dfe('0x39')]?_0x222cea[_0x9dfe('0x37')]:_0x4de29c['model'];if(!_0x10c2d4[_0x9dfe('0x33')][_0x9dfe('0x3a')](_0x9dfe('0x3b'))){_0x222cea[_0x9dfe('0x1d')]=qs[_0x9dfe('0x1d')](_0x10c2d4['query'][_0x9dfe('0x1d')]);_0x222cea[_0x9dfe('0x1c')]=qs['offset'](_0x10c2d4[_0x9dfe('0x33')]['offset']);}_0x222cea[_0x9dfe('0x3c')]=qs[_0x9dfe('0x3d')](_0x10c2d4[_0x9dfe('0x33')][_0x9dfe('0x3d')]);_0x222cea[_0x9dfe('0x3e')]=qs['filters'](_['pick'](_0x10c2d4[_0x9dfe('0x33')],_0x4de29c[_0x9dfe('0x3f')]),_0x458521);if(_0x10c2d4['query'][_0x9dfe('0x40')]){_0x222cea['where']=_[_0x9dfe('0x41')](_0x222cea['where'],{'$or':_['map'](_0x458521,function(_0x5cd65d){if(_0x5cd65d[_0x9dfe('0x31')]!=='VIRTUAL'){var _0x4a1c6f={};_0x4a1c6f[_0x5cd65d[_0x9dfe('0x2c')]]={'$like':'%'+_0x10c2d4['query'][_0x9dfe('0x40')]+'%'};return _0x4a1c6f;}})});}_0x222cea=_[_0x9dfe('0x41')]({},_0x222cea,_0x10c2d4[_0x9dfe('0x42')]);var _0x207454={'where':_0x222cea[_0x9dfe('0x3e')]};return db[_0x9dfe('0x2f')][_0x9dfe('0x1f')](_0x207454)[_0x9dfe('0x26')](function(_0x340f34){_0x580bd4[_0x9dfe('0x1f')]=_0x340f34;if(_0x10c2d4[_0x9dfe('0x33')][_0x9dfe('0x43')]){_0x222cea[_0x9dfe('0x44')]=[{'all':!![]}];}return db[_0x9dfe('0x2f')][_0x9dfe('0x45')](_0x222cea);})[_0x9dfe('0x26')](function(_0x5dfa4b){_0x580bd4[_0x9dfe('0x46')]=_0x5dfa4b;return _0x580bd4;})[_0x9dfe('0x26')](respondWithFilteredResult(_0x3bf281,_0x222cea))[_0x9dfe('0x47')](handleError(_0x3bf281,null));};exports['show']=function(_0x4a17f5,_0x27fa70){var _0x551bbb={'raw':![],'where':{'id':_0x4a17f5[_0x9dfe('0x48')]['id']}},_0x50e327={};_0x50e327[_0x9dfe('0x36')]=_[_0x9dfe('0x34')](db[_0x9dfe('0x2f')][_0x9dfe('0x30')]);_0x50e327[_0x9dfe('0x33')]=_[_0x9dfe('0x34')](_0x4a17f5[_0x9dfe('0x33')]);_0x50e327[_0x9dfe('0x3f')]=_[_0x9dfe('0x35')](_0x50e327['model'],_0x50e327[_0x9dfe('0x33')]);_0x551bbb[_0x9dfe('0x37')]=_[_0x9dfe('0x35')](_0x50e327[_0x9dfe('0x36')],qs[_0x9dfe('0x38')](_0x4a17f5[_0x9dfe('0x33')]['fields']));_0x551bbb[_0x9dfe('0x37')]=_0x551bbb[_0x9dfe('0x37')][_0x9dfe('0x39')]?_0x551bbb[_0x9dfe('0x37')]:_0x50e327[_0x9dfe('0x36')];if(_0x4a17f5[_0x9dfe('0x33')]['includeAll']){_0x551bbb[_0x9dfe('0x44')]=[{'all':!![]}];}_0x551bbb=_[_0x9dfe('0x41')]({},_0x551bbb,_0x4a17f5[_0x9dfe('0x42')]);return db[_0x9dfe('0x2f')][_0x9dfe('0x49')](_0x551bbb)[_0x9dfe('0x26')](handleEntityNotFound(_0x27fa70,null))[_0x9dfe('0x26')](respondWithResult(_0x27fa70,null))[_0x9dfe('0x47')](handleError(_0x27fa70,null));};exports[_0x9dfe('0x4a')]=function(_0x36a433,_0xb597b1){return db[_0x9dfe('0x2f')][_0x9dfe('0x4a')](_0x36a433[_0x9dfe('0x4b')],{})[_0x9dfe('0x26')](function(_0x47b346){var _0x2c9c7a=_0x36a433[_0x9dfe('0x4c')]['get']({'plain':!![]});if(!_0x2c9c7a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2c9c7a[_0x9dfe('0x4d')]===_0x9dfe('0x4c')){var _0x556309=_0x47b346['get']({'plain':!![]});var _0x554811=_0x9dfe('0x4e');return db[_0x9dfe('0x4f')][_0x9dfe('0x49')]({'where':{'name':_0x554811,'userProfileId':_0x2c9c7a[_0x9dfe('0x50')]},'raw':!![]})['then'](function(_0x396bbe){if(_0x396bbe&&_0x396bbe[_0x9dfe('0x51')]===0x0){return db[_0x9dfe('0x29')][_0x9dfe('0x4a')]({'name':_0x556309[_0x9dfe('0x2c')],'resourceId':_0x556309['id'],'type':_0x396bbe['name'],'sectionId':_0x396bbe['id']},{})[_0x9dfe('0x26')](function(){return _0x47b346;});}else{return _0x47b346;}})[_0x9dfe('0x47')](function(_0x5a1f13){logger[_0x9dfe('0x2b')](_0x9dfe('0x52'),_0x5a1f13);throw _0x5a1f13;});}return _0x47b346;})['then'](respondWithResult(_0xb597b1,0xc9))[_0x9dfe('0x47')](handleError(_0xb597b1,null));};exports[_0x9dfe('0x25')]=function(_0x435486,_0x5b2d25){if(_0x435486[_0x9dfe('0x4b')]['id']){delete _0x435486[_0x9dfe('0x4b')]['id'];}return db['VoiceChanSpy']['find']({'where':{'id':_0x435486[_0x9dfe('0x48')]['id']}})['then'](handleEntityNotFound(_0x5b2d25,null))['then'](saveUpdates(_0x435486[_0x9dfe('0x4b')],null))[_0x9dfe('0x26')](respondWithResult(_0x5b2d25,null))[_0x9dfe('0x47')](handleError(_0x5b2d25,null));};exports['destroy']=function(_0x514083,_0x15e6e0){return db[_0x9dfe('0x2f')][_0x9dfe('0x49')]({'where':{'id':_0x514083[_0x9dfe('0x48')]['id']}})[_0x9dfe('0x26')](handleEntityNotFound(_0x15e6e0,null))[_0x9dfe('0x26')](removeEntity(_0x15e6e0,null))[_0x9dfe('0x47')](handleError(_0x15e6e0,null));};
\ No newline at end of file
+var _0x1df5=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','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','undefined','limit','offset','set','Content-Range','save','update','then','destroy','get','ChanSpies','UserProfileResource','error','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x4c533b,_0x1779f9){var _0x2c28ec=function(_0x15e732){while(--_0x15e732){_0x4c533b['push'](_0x4c533b['shift']());}};_0x2c28ec(++_0x1779f9);}(_0x1df5,0xfd));var _0x51df=function(_0x43bc69,_0x83dfc4){_0x43bc69=_0x43bc69-0x0;var _0x20f5ae=_0x1df5[_0x43bc69];return _0x20f5ae;};'use strict';var emlformat=require(_0x51df('0x0'));var rimraf=require(_0x51df('0x1'));var zipdir=require(_0x51df('0x2'));var jsonpatch=require(_0x51df('0x3'));var rp=require(_0x51df('0x4'));var moment=require('moment');var BPromise=require(_0x51df('0x5'));var Mustache=require(_0x51df('0x6'));var util=require(_0x51df('0x7'));var path=require(_0x51df('0x8'));var sox=require(_0x51df('0x9'));var csv=require(_0x51df('0xa'));var ejs=require(_0x51df('0xb'));var fs=require('fs');var fs_extra=require(_0x51df('0xc'));var _=require('lodash');var squel=require(_0x51df('0xd'));var crypto=require('crypto');var jsforce=require(_0x51df('0xe'));var deskjs=require(_0x51df('0xf'));var toCsv=require(_0x51df('0xa'));var querystring=require(_0x51df('0x10'));var Papa=require(_0x51df('0x11'));var Redis=require(_0x51df('0x12'));var authService=require(_0x51df('0x13'));var qs=require(_0x51df('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x51df('0x15'));var logger=require(_0x51df('0x16'))(_0x51df('0x17'));var utils=require(_0x51df('0x18'));var config=require(_0x51df('0x19'));var licenseUtil=require(_0x51df('0x1a'));var db=require(_0x51df('0x1b'))['db'];function respondWithStatusCode(_0x27eb0a,_0x4177cb){_0x4177cb=_0x4177cb||0xcc;return function(_0x312850){if(_0x312850){return _0x27eb0a[_0x51df('0x1c')](_0x4177cb);}return _0x27eb0a[_0x51df('0x1d')](_0x4177cb)[_0x51df('0x1e')]();};}function respondWithResult(_0x41da67,_0x4a1f){_0x4a1f=_0x4a1f||0xc8;return function(_0x4ae823){if(_0x4ae823){return _0x41da67[_0x51df('0x1d')](_0x4a1f)[_0x51df('0x1f')](_0x4ae823);}};}function respondWithFilteredResult(_0x53e65a,_0x1edb49){return function(_0x354cb2){if(_0x354cb2){var _0x37ca13=typeof _0x1edb49['offset']===_0x51df('0x20')&&typeof _0x1edb49[_0x51df('0x21')]===_0x51df('0x20');var _0x2a1158=_0x354cb2['count'];var _0x1bdba3=_0x37ca13?0x0:_0x1edb49[_0x51df('0x22')];var _0x5cd515=_0x37ca13?_0x354cb2['count']:_0x1edb49[_0x51df('0x22')]+_0x1edb49['limit'];var _0x392505;if(_0x5cd515>=_0x2a1158){_0x5cd515=_0x2a1158;_0x392505=0xc8;}else{_0x392505=0xce;}_0x53e65a[_0x51df('0x1d')](_0x392505);return _0x53e65a[_0x51df('0x23')](_0x51df('0x24'),_0x1bdba3+'-'+_0x5cd515+'/'+_0x2a1158)['json'](_0x354cb2);}return null;};}function patchUpdates(_0xfba51f){return function(_0xdf7fa4){try{jsonpatch['apply'](_0xdf7fa4,_0xfba51f,!![]);}catch(_0x354cd2){return BPromise['reject'](_0x354cd2);}return _0xdf7fa4[_0x51df('0x25')]();};}function saveUpdates(_0x4bc3bd,_0x5c4877){return function(_0x102498){if(_0x102498){return _0x102498[_0x51df('0x26')](_0x4bc3bd)[_0x51df('0x27')](function(_0x2a8321){return _0x2a8321;});}return null;};}function removeEntity(_0x42ceac,_0x105475){return function(_0x1e1c9d){if(_0x1e1c9d){return _0x1e1c9d[_0x51df('0x28')]()[_0x51df('0x27')](function(){var _0x40b6c7=_0x1e1c9d[_0x51df('0x29')]({'plain':!![]});var _0x17e807=_0x51df('0x2a');return db[_0x51df('0x2b')][_0x51df('0x28')]({'where':{'type':_0x17e807,'resourceId':_0x40b6c7['id']}})[_0x51df('0x27')](function(){return _0x1e1c9d;});})[_0x51df('0x27')](function(){_0x42ceac[_0x51df('0x1d')](0xcc)[_0x51df('0x1e')]();});}};}function handleEntityNotFound(_0x147e3e,_0x5ec0f0){return function(_0x53b71b){if(!_0x53b71b){_0x147e3e[_0x51df('0x1c')](0x194);}return _0x53b71b;};}function handleError(_0x3889cd,_0x1c961c){_0x1c961c=_0x1c961c||0x1f4;return function(_0x12b16a){logger[_0x51df('0x2c')](_0x12b16a['stack']);if(_0x12b16a['name']){delete _0x12b16a[_0x51df('0x2d')];}_0x3889cd[_0x51df('0x1d')](_0x1c961c)[_0x51df('0x2e')](_0x12b16a);};}exports[_0x51df('0x2f')]=function(_0x223932,_0x1637ab){var _0x4f9b28={},_0x2ee61c={},_0x4719d9={'count':0x0,'rows':[]};var _0x325c0c=_[_0x51df('0x30')](db[_0x51df('0x31')][_0x51df('0x32')],function(_0x6b7cac){return{'name':_0x6b7cac[_0x51df('0x33')],'type':_0x6b7cac[_0x51df('0x34')]['key']};});_0x2ee61c[_0x51df('0x35')]=_[_0x51df('0x30')](_0x325c0c,_0x51df('0x2d'));_0x2ee61c['query']=_[_0x51df('0x36')](_0x223932[_0x51df('0x37')]);_0x2ee61c['filters']=_[_0x51df('0x38')](_0x2ee61c['model'],_0x2ee61c['query']);_0x4f9b28[_0x51df('0x39')]=_[_0x51df('0x38')](_0x2ee61c['model'],qs[_0x51df('0x3a')](_0x223932[_0x51df('0x37')][_0x51df('0x3a')]));_0x4f9b28['attributes']=_0x4f9b28[_0x51df('0x39')][_0x51df('0x3b')]?_0x4f9b28[_0x51df('0x39')]:_0x2ee61c[_0x51df('0x35')];if(!_0x223932[_0x51df('0x37')][_0x51df('0x3c')](_0x51df('0x3d'))){_0x4f9b28[_0x51df('0x21')]=qs[_0x51df('0x21')](_0x223932['query'][_0x51df('0x21')]);_0x4f9b28[_0x51df('0x22')]=qs['offset'](_0x223932[_0x51df('0x37')]['offset']);}_0x4f9b28['order']=qs[_0x51df('0x3e')](_0x223932[_0x51df('0x37')][_0x51df('0x3e')]);_0x4f9b28[_0x51df('0x3f')]=qs[_0x51df('0x40')](_[_0x51df('0x41')](_0x223932[_0x51df('0x37')],_0x2ee61c[_0x51df('0x40')]),_0x325c0c);if(_0x223932[_0x51df('0x37')][_0x51df('0x42')]){_0x4f9b28[_0x51df('0x3f')]=_[_0x51df('0x43')](_0x4f9b28[_0x51df('0x3f')],{'$or':_[_0x51df('0x30')](_0x325c0c,function(_0x417ac0){if(_0x417ac0[_0x51df('0x34')]!==_0x51df('0x44')){var _0x3dcdf5={};_0x3dcdf5[_0x417ac0[_0x51df('0x2d')]]={'$like':'%'+_0x223932['query'][_0x51df('0x42')]+'%'};return _0x3dcdf5;}})});}_0x4f9b28=_[_0x51df('0x43')]({},_0x4f9b28,_0x223932[_0x51df('0x45')]);var _0x23db08={'where':_0x4f9b28['where']};return db[_0x51df('0x31')]['count'](_0x23db08)['then'](function(_0x5e66c7){_0x4719d9[_0x51df('0x46')]=_0x5e66c7;if(_0x223932[_0x51df('0x37')][_0x51df('0x47')]){_0x4f9b28[_0x51df('0x48')]=[{'all':!![]}];}return db[_0x51df('0x31')][_0x51df('0x49')](_0x4f9b28);})[_0x51df('0x27')](function(_0x465707){_0x4719d9[_0x51df('0x4a')]=_0x465707;return _0x4719d9;})[_0x51df('0x27')](respondWithFilteredResult(_0x1637ab,_0x4f9b28))[_0x51df('0x4b')](handleError(_0x1637ab,null));};exports[_0x51df('0x4c')]=function(_0x3e3b70,_0x289531){var _0x4608fc={'raw':![],'where':{'id':_0x3e3b70[_0x51df('0x4d')]['id']}},_0x300e41={};_0x300e41[_0x51df('0x35')]=_[_0x51df('0x36')](db[_0x51df('0x31')][_0x51df('0x32')]);_0x300e41[_0x51df('0x37')]=_[_0x51df('0x36')](_0x3e3b70['query']);_0x300e41[_0x51df('0x40')]=_[_0x51df('0x38')](_0x300e41[_0x51df('0x35')],_0x300e41[_0x51df('0x37')]);_0x4608fc['attributes']=_[_0x51df('0x38')](_0x300e41[_0x51df('0x35')],qs[_0x51df('0x3a')](_0x3e3b70[_0x51df('0x37')][_0x51df('0x3a')]));_0x4608fc[_0x51df('0x39')]=_0x4608fc[_0x51df('0x39')]['length']?_0x4608fc[_0x51df('0x39')]:_0x300e41[_0x51df('0x35')];if(_0x3e3b70[_0x51df('0x37')][_0x51df('0x47')]){_0x4608fc['include']=[{'all':!![]}];}_0x4608fc=_['merge']({},_0x4608fc,_0x3e3b70[_0x51df('0x45')]);return db[_0x51df('0x31')][_0x51df('0x4e')](_0x4608fc)[_0x51df('0x27')](handleEntityNotFound(_0x289531,null))[_0x51df('0x27')](respondWithResult(_0x289531,null))[_0x51df('0x4b')](handleError(_0x289531,null));};exports[_0x51df('0x4f')]=function(_0x1a502a,_0x493da5){return db[_0x51df('0x31')]['create'](_0x1a502a[_0x51df('0x50')],{})[_0x51df('0x27')](function(_0x80c139){var _0x4c1561=_0x1a502a['user'][_0x51df('0x29')]({'plain':!![]});if(!_0x4c1561)throw new Error(_0x51df('0x51'));if(_0x4c1561[_0x51df('0x52')]===_0x51df('0x53')){var _0x58ec08=_0x80c139['get']({'plain':!![]});var _0x7dd3f4=_0x51df('0x2a');return db[_0x51df('0x54')]['find']({'where':{'name':_0x7dd3f4,'userProfileId':_0x4c1561['userProfileId']},'raw':!![]})[_0x51df('0x27')](function(_0x8bf2f3){if(_0x8bf2f3&&_0x8bf2f3['autoAssociation']===0x0){return db[_0x51df('0x2b')]['create']({'name':_0x58ec08[_0x51df('0x2d')],'resourceId':_0x58ec08['id'],'type':_0x8bf2f3['name'],'sectionId':_0x8bf2f3['id']},{})['then'](function(){return _0x80c139;});}else{return _0x80c139;}})[_0x51df('0x4b')](function(_0x3aed50){logger[_0x51df('0x2c')](_0x51df('0x55'),_0x3aed50);throw _0x3aed50;});}return _0x80c139;})[_0x51df('0x27')](respondWithResult(_0x493da5,0xc9))[_0x51df('0x4b')](handleError(_0x493da5,null));};exports[_0x51df('0x26')]=function(_0x418cce,_0xc08422){if(_0x418cce[_0x51df('0x50')]['id']){delete _0x418cce[_0x51df('0x50')]['id'];}return db[_0x51df('0x31')]['find']({'where':{'id':_0x418cce[_0x51df('0x4d')]['id']}})[_0x51df('0x27')](handleEntityNotFound(_0xc08422,null))[_0x51df('0x27')](saveUpdates(_0x418cce['body'],null))['then'](respondWithResult(_0xc08422,null))[_0x51df('0x4b')](handleError(_0xc08422,null));};exports['destroy']=function(_0x1a6cb1,_0x18a686){return db[_0x51df('0x31')][_0x51df('0x4e')]({'where':{'id':_0x1a6cb1[_0x51df('0x4d')]['id']}})[_0x51df('0x27')](handleEntityNotFound(_0x18a686,null))[_0x51df('0x27')](removeEntity(_0x18a686,null))[_0x51df('0x4b')](handleError(_0x18a686,null));};
\ No newline at end of file
index 4addccc..81d93b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd3a=['then','catch','models','define','VoiceChanSpy','voice_chanspy','bulkCreate','VoiceExtension','destroy','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','push','Set','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','password','ChanSpy','SIP/%s,%s','join','length','concat','internal','name','User','findAll','agent'];(function(_0xe4bb3d,_0x21e87e){var _0xd9e51=function(_0x1f732b){while(--_0x1f732b){_0xe4bb3d['push'](_0xe4bb3d['shift']());}};_0xd9e51(++_0x21e87e);}(_0xcd3a,0x14d));var _0xacd3=function(_0x3e002e,_0x4aaf51){_0x3e002e=_0x3e002e-0x0;var _0x49db5c=_0xcd3a[_0x3e002e];return _0x49db5c;};'use strict';var _=require('lodash');var util=require(_0xacd3('0x0'));var BPromise=require(_0xacd3('0x1'));var attributes=require(_0xacd3('0x2'));var getUserApplications=function(_0x494dbe,_0x250ccc,_0x35081e){var _0x2d74ae=0x1;var _0x5e6743=[];var _0x1d19a9={'context':_0x250ccc[_0xacd3('0x3')]||_0xacd3('0x4'),'exten':util[_0xacd3('0x5')](_0xacd3('0x6'),_0x494dbe['prefix'],_0x35081e),'type':'system','isApp':![],'ChanSpyId':_0x494dbe['id'],'UserId':_0x250ccc['id']};_0x5e6743[_0xacd3('0x7')](_['merge']({'app':_0xacd3('0x8'),'appdata':util['format']('CDR(type)=%s',_0xacd3('0x9')),'priority':_0x2d74ae++},_0x1d19a9));if(_0x494dbe[_0xacd3('0xa')]){_0x5e6743[_0xacd3('0x7')](_[_0xacd3('0xb')]({'app':_0xacd3('0xc'),'appdata':util[_0xacd3('0x5')](_0xacd3('0xd'),_0x494dbe['recordingFormat']),'priority':_0x2d74ae++},_0x1d19a9));}if(_0x494dbe[_0xacd3('0xe')]){_0x5e6743['push'](_[_0xacd3('0xb')]({'app':_0xacd3('0xf'),'appdata':_0x494dbe[_0xacd3('0x10')],'priority':_0x2d74ae++},_0x1d19a9));}_0x5e6743['push'](_[_0xacd3('0xb')]({'app':_0xacd3('0x11'),'appdata':util[_0xacd3('0x5')](_0xacd3('0x12'),_0x250ccc['name'],_0x494dbe['options']?_0x494dbe['options'][_0xacd3('0x13')](''):''),'priority':_0x2d74ae++},_0x1d19a9));if(_0x494dbe['record']){_0x5e6743[_0xacd3('0x7')](_['merge']({'app':'StopMixMonitor','priority':_0x2d74ae++},_0x1d19a9));}return _0x5e6743;};var getChanSpyApplications=function(_0x3dd967,_0x11e448){var _0x5115f2=[];for(var _0x14978b=0x0,_0x541e90=0x1;_0x14978b<_0x11e448[_0xacd3('0x14')];_0x14978b++,_0x541e90=0x1){_0x5115f2=_0x5115f2[_0xacd3('0x15')](getUserApplications(_0x3dd967,_0x11e448[_0x14978b],_0x11e448[_0x14978b][_0xacd3('0x16')]));if(_0x11e448[_0x14978b][_0xacd3('0x16')]!=_0x11e448[_0x14978b][_0xacd3('0x17')]){_0x5115f2=_0x5115f2[_0xacd3('0x15')](getUserApplications(_0x3dd967,_0x11e448[_0x14978b],_0x11e448[_0x14978b]['name']));}}return _0x5115f2;};var getChanSpyPromise=function(_0x5d5d00,_0x71b77a){return new BPromise(function(_0x468371,_0x456e16){return _0x5d5d00[_0xacd3('0x18')][_0xacd3('0x19')]({'attributes':['id',_0xacd3('0x17'),_0xacd3('0x16')],'where':{'role':_0xacd3('0x1a'),'chanspy':!![]},'raw':!![]})[_0xacd3('0x1b')](function(_0x698987){if(_0x698987){return _0x468371(getChanSpyApplications(_0x71b77a,_0x698987));}return _0x468371([]);})[_0xacd3('0x1c')](function(_0x59e6df){_0x456e16(_0x59e6df);});});};module['exports']=function(_0x29ef03,_0xca4ac7){var _0x30508c=_0x29ef03[_0xacd3('0x1d')];return _0x29ef03[_0xacd3('0x1e')](_0xacd3('0x1f'),attributes,{'tableName':_0xacd3('0x20'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x36d133,_0x2e8247,_0x4f26c5){return getChanSpyPromise(_0x30508c,_0x36d133)[_0xacd3('0x1b')](function(_0x2a4aa){if(_0x2a4aa&&_0x2a4aa[_0xacd3('0x14')]){return _0x30508c['VoiceExtension'][_0xacd3('0x21')](_0x2a4aa);}})['then'](function(){_0x4f26c5();})['catch'](function(_0x3d881c){_0x4f26c5(_0x3d881c);});},'afterUpdate':function(_0x1b04de,_0xed526f,_0x49cce5){return _0x30508c[_0xacd3('0x22')][_0xacd3('0x23')]({'where':{'ChanSpyId':_0x1b04de['id']}})[_0xacd3('0x1b')](function(){return getChanSpyPromise(_0x30508c,_0x1b04de);})[_0xacd3('0x1b')](function(_0x134f86){if(_0x134f86&&_0x134f86['length']){return _0x30508c[_0xacd3('0x22')][_0xacd3('0x21')](_0x134f86);}})['then'](function(){_0x49cce5();})[_0xacd3('0x1c')](function(_0x4e5f21){_0x49cce5(_0x4e5f21);});},'afterDestroy':function(_0x2d842c,_0x4c6242,_0x4f996b){return _0x30508c[_0xacd3('0x22')][_0xacd3('0x23')]({'where':{'ChanSpyId':_0x2d842c['id']}})[_0xacd3('0x1b')](function(){_0x4f996b();})[_0xacd3('0x1c')](function(_0x290dc0){_0x4f996b(_0x290dc0);});}}});};
\ No newline at end of file
+var _0x1ee6=['${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','options','join','concat','internal','name','User','findAll','agent','catch','exports','models','define','VoiceChanSpy','voice_chanspy','then','length','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','format','%s%s','prefix','system','push','merge','CDR(type)=%s','chanspy','record','MixMonitor'];(function(_0x50221f,_0x59ef1a){var _0x5ed563=function(_0x2464b2){while(--_0x2464b2){_0x50221f['push'](_0x50221f['shift']());}};_0x5ed563(++_0x59ef1a);}(_0x1ee6,0x1c6));var _0x61ee=function(_0x123d52,_0x2f9c3c){_0x123d52=_0x123d52-0x0;var _0x5467c8=_0x1ee6[_0x123d52];return _0x5467c8;};'use strict';var _=require(_0x61ee('0x0'));var util=require(_0x61ee('0x1'));var BPromise=require(_0x61ee('0x2'));var attributes=require(_0x61ee('0x3'));var getUserApplications=function(_0x215412,_0x5bbcd2,_0x312953){var _0x6ce57e=0x1;var _0x5eb691=[];var _0x32530f={'context':_0x5bbcd2['context']||'from-sip','exten':util[_0x61ee('0x4')](_0x61ee('0x5'),_0x215412[_0x61ee('0x6')],_0x312953),'type':_0x61ee('0x7'),'isApp':![],'ChanSpyId':_0x215412['id'],'UserId':_0x5bbcd2['id']};_0x5eb691[_0x61ee('0x8')](_[_0x61ee('0x9')]({'app':'Set','appdata':util['format'](_0x61ee('0xa'),_0x61ee('0xb')),'priority':_0x6ce57e++},_0x32530f));if(_0x215412[_0x61ee('0xc')]){_0x5eb691[_0x61ee('0x8')](_[_0x61ee('0x9')]({'app':_0x61ee('0xd'),'appdata':util[_0x61ee('0x4')](_0x61ee('0xe'),_0x215412[_0x61ee('0xf')]),'priority':_0x6ce57e++},_0x32530f));}if(_0x215412[_0x61ee('0x10')]){_0x5eb691[_0x61ee('0x8')](_['merge']({'app':_0x61ee('0x11'),'appdata':_0x215412[_0x61ee('0x12')],'priority':_0x6ce57e++},_0x32530f));}_0x5eb691[_0x61ee('0x8')](_['merge']({'app':'ChanSpy','appdata':util[_0x61ee('0x4')](_0x61ee('0x13'),_0x5bbcd2['name'],_0x215412['options']?_0x215412[_0x61ee('0x14')][_0x61ee('0x15')](''):''),'priority':_0x6ce57e++},_0x32530f));if(_0x215412[_0x61ee('0xc')]){_0x5eb691[_0x61ee('0x8')](_[_0x61ee('0x9')]({'app':'StopMixMonitor','priority':_0x6ce57e++},_0x32530f));}return _0x5eb691;};var getChanSpyApplications=function(_0x20a620,_0x5ab219){var _0x19530b=[];for(var _0x22fd6d=0x0,_0x2c5a24=0x1;_0x22fd6d<_0x5ab219['length'];_0x22fd6d++,_0x2c5a24=0x1){_0x19530b=_0x19530b[_0x61ee('0x16')](getUserApplications(_0x20a620,_0x5ab219[_0x22fd6d],_0x5ab219[_0x22fd6d][_0x61ee('0x17')]));if(_0x5ab219[_0x22fd6d]['internal']!=_0x5ab219[_0x22fd6d][_0x61ee('0x18')]){_0x19530b=_0x19530b[_0x61ee('0x16')](getUserApplications(_0x20a620,_0x5ab219[_0x22fd6d],_0x5ab219[_0x22fd6d][_0x61ee('0x18')]));}}return _0x19530b;};var getChanSpyPromise=function(_0x22471d,_0x13b338){return new BPromise(function(_0x4e8a0a,_0x45c0ee){return _0x22471d[_0x61ee('0x19')][_0x61ee('0x1a')]({'attributes':['id','name','internal'],'where':{'role':_0x61ee('0x1b'),'chanspy':!![]},'raw':!![]})['then'](function(_0x486ba5){if(_0x486ba5){return _0x4e8a0a(getChanSpyApplications(_0x13b338,_0x486ba5));}return _0x4e8a0a([]);})[_0x61ee('0x1c')](function(_0x56ce37){_0x45c0ee(_0x56ce37);});});};module[_0x61ee('0x1d')]=function(_0x3df5fc,_0x5c3ff0){var _0x35eb37=_0x3df5fc[_0x61ee('0x1e')];return _0x3df5fc[_0x61ee('0x1f')](_0x61ee('0x20'),attributes,{'tableName':_0x61ee('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x270b29,_0x489071,_0x25e24f){return getChanSpyPromise(_0x35eb37,_0x270b29)[_0x61ee('0x22')](function(_0x54b7b9){if(_0x54b7b9&&_0x54b7b9[_0x61ee('0x23')]){return _0x35eb37[_0x61ee('0x24')][_0x61ee('0x25')](_0x54b7b9);}})[_0x61ee('0x22')](function(){_0x25e24f();})[_0x61ee('0x1c')](function(_0xf1d5a8){_0x25e24f(_0xf1d5a8);});},'afterUpdate':function(_0x244156,_0x2eabbe,_0x193a64){return _0x35eb37['VoiceExtension']['destroy']({'where':{'ChanSpyId':_0x244156['id']}})[_0x61ee('0x22')](function(){return getChanSpyPromise(_0x35eb37,_0x244156);})['then'](function(_0x3974ac){if(_0x3974ac&&_0x3974ac[_0x61ee('0x23')]){return _0x35eb37['VoiceExtension'][_0x61ee('0x25')](_0x3974ac);}})[_0x61ee('0x22')](function(){_0x193a64();})[_0x61ee('0x1c')](function(_0x19f824){_0x193a64(_0x19f824);});},'afterDestroy':function(_0x33e373,_0x1278a8,_0x3101f0){return _0x35eb37[_0x61ee('0x24')][_0x61ee('0x26')]({'where':{'ChanSpyId':_0x33e373['id']}})[_0x61ee('0x22')](function(){_0x3101f0();})[_0x61ee('0x1c')](function(_0x4400e1){_0x3101f0(_0x4400e1);});}}});};
\ No newline at end of file
index 45d0094..236870b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4058=['request','then','info','request\x20sent','debug','stringify','VoiceChanSpy,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4058,0x129));var _0x8405=function(_0xf8e900,_0xd20855){_0xf8e900=_0xf8e900-0x0;var _0x2eee42=_0x4058[_0xf8e900];return _0x2eee42;};'use strict';var _=require(_0x8405('0x0'));var util=require(_0x8405('0x1'));var moment=require(_0x8405('0x2'));var BPromise=require(_0x8405('0x3'));var rs=require(_0x8405('0x4'));var fs=require('fs');var Redis=require(_0x8405('0x5'));var db=require(_0x8405('0x6'))['db'];var utils=require(_0x8405('0x7'));var logger=require(_0x8405('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8405('0x9')][_0x8405('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3d9bf6,_0x1322e5,_0x1cb061){return new BPromise(function(_0x479c97,_0x16d810){return client[_0x8405('0xb')](_0x3d9bf6,_0x1cb061)[_0x8405('0xc')](function(_0x53bd7c){logger[_0x8405('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x1322e5,_0x8405('0xe'));logger[_0x8405('0xf')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x1322e5,_0x8405('0xe'),JSON[_0x8405('0x10')](_0x53bd7c));if(_0x53bd7c['error']){if(_0x53bd7c['error']['code']===0x1f4){logger['error'](_0x8405('0x11'),_0x1322e5,_0x53bd7c['error']['message']);return _0x16d810(_0x53bd7c['error']['message']);}logger['error'](_0x8405('0x11'),_0x1322e5,_0x53bd7c[_0x8405('0x12')]['message']);return _0x479c97(_0x53bd7c[_0x8405('0x12')][_0x8405('0x13')]);}else{logger[_0x8405('0xd')](_0x8405('0x11'),_0x1322e5,'request\x20sent');_0x479c97(_0x53bd7c[_0x8405('0x14')][_0x8405('0x13')]);}})[_0x8405('0x15')](function(_0x30cef7){logger[_0x8405('0x12')](_0x8405('0x11'),_0x1322e5,_0x30cef7);_0x16d810(_0x30cef7);});});}
\ No newline at end of file
+var _0x8ce3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird'];(function(_0x559593,_0x1ddef7){var _0x101d6a=function(_0x1edb2c){while(--_0x1edb2c){_0x559593['push'](_0x559593['shift']());}};_0x101d6a(++_0x1ddef7);}(_0x8ce3,0xc3));var _0x38ce=function(_0x1f01f4,_0x5ea9ef){_0x1f01f4=_0x1f01f4-0x0;var _0x42dcb5=_0x8ce3[_0x1f01f4];return _0x42dcb5;};'use strict';var _=require(_0x38ce('0x0'));var util=require(_0x38ce('0x1'));var moment=require('moment');var BPromise=require(_0x38ce('0x2'));var rs=require(_0x38ce('0x3'));var fs=require('fs');var Redis=require(_0x38ce('0x4'));var db=require(_0x38ce('0x5'))['db'];var utils=require(_0x38ce('0x6'));var logger=require(_0x38ce('0x7'))(_0x38ce('0x8'));var config=require(_0x38ce('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x38ce('0xa')][_0x38ce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x58074c,_0x262b13,_0xbe7332){return new BPromise(function(_0x3f8011,_0x482955){return client[_0x38ce('0xc')](_0x58074c,_0xbe7332)['then'](function(_0x725d27){logger['info'](_0x38ce('0xd'),_0x262b13,_0x38ce('0xe'));logger[_0x38ce('0xf')](_0x38ce('0x10'),_0x262b13,_0x38ce('0xe'),JSON[_0x38ce('0x11')](_0x725d27));if(_0x725d27[_0x38ce('0x12')]){if(_0x725d27[_0x38ce('0x12')][_0x38ce('0x13')]===0x1f4){logger[_0x38ce('0x12')](_0x38ce('0xd'),_0x262b13,_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);return _0x482955(_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);}logger[_0x38ce('0x12')]('VoiceChanSpy,\x20%s,\x20%s',_0x262b13,_0x725d27['error'][_0x38ce('0x14')]);return _0x3f8011(_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);}else{logger['info'](_0x38ce('0xd'),_0x262b13,'request\x20sent');_0x3f8011(_0x725d27[_0x38ce('0x15')][_0x38ce('0x14')]);}})['catch'](function(_0x5fc115){logger[_0x38ce('0x12')](_0x38ce('0xd'),_0x262b13,_0x5fc115);_0x482955(_0x5fc115);});});}
\ No newline at end of file
index f06c1cc..87f8dc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cc7=['destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceContext.controller','get','isAuthenticated','index','/:id','show','post','create','put','update'];(function(_0x258fb0,_0x5362dc){var _0x4d1afe=function(_0x1c8f24){while(--_0x1c8f24){_0x258fb0['push'](_0x258fb0['shift']());}};_0x4d1afe(++_0x5362dc);}(_0x9cc7,0x192));var _0x79cc=function(_0x1bb58c,_0x2c8a4d){_0x1bb58c=_0x1bb58c-0x0;var _0x277586=_0x9cc7[_0x1bb58c];return _0x277586;};'use strict';var multer=require('multer');var util=require(_0x79cc('0x0'));var path=require(_0x79cc('0x1'));var timeout=require(_0x79cc('0x2'));var express=require(_0x79cc('0x3'));var router=express[_0x79cc('0x4')]();var fs_extra=require(_0x79cc('0x5'));var auth=require(_0x79cc('0x6'));var interaction=require(_0x79cc('0x7'));var config=require('../../config/environment');var controller=require(_0x79cc('0x8'));router[_0x79cc('0x9')]('/',auth[_0x79cc('0xa')](),controller[_0x79cc('0xb')]);router[_0x79cc('0x9')](_0x79cc('0xc'),auth[_0x79cc('0xa')](),controller[_0x79cc('0xd')]);router[_0x79cc('0xe')]('/',auth['isAuthenticated'](),controller[_0x79cc('0xf')]);router[_0x79cc('0x10')](_0x79cc('0xc'),auth['isAuthenticated'](),controller[_0x79cc('0x11')]);router['delete'](_0x79cc('0xc'),auth[_0x79cc('0xa')](),controller[_0x79cc('0x12')]);module[_0x79cc('0x13')]=router;
\ No newline at end of file
+var _0xd9f2=['post','create','put','update','delete','exports','multer','util','Router','../../components/auth/service','./voiceContext.controller','get','isAuthenticated','index','/:id'];(function(_0x19b680,_0x2a05c3){var _0x17cbe8=function(_0x4c215e){while(--_0x4c215e){_0x19b680['push'](_0x19b680['shift']());}};_0x17cbe8(++_0x2a05c3);}(_0xd9f2,0x1e6));var _0x2d9f=function(_0xea2c93,_0x1b6090){_0xea2c93=_0xea2c93-0x0;var _0x434329=_0xd9f2[_0xea2c93];return _0x434329;};'use strict';var multer=require(_0x2d9f('0x0'));var util=require(_0x2d9f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2d9f('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2d9f('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2d9f('0x4'));router[_0x2d9f('0x5')]('/',auth[_0x2d9f('0x6')](),controller[_0x2d9f('0x7')]);router[_0x2d9f('0x5')](_0x2d9f('0x8'),auth[_0x2d9f('0x6')](),controller['show']);router[_0x2d9f('0x9')]('/',auth[_0x2d9f('0x6')](),controller[_0x2d9f('0xa')]);router[_0x2d9f('0xb')](_0x2d9f('0x8'),auth[_0x2d9f('0x6')](),controller[_0x2d9f('0xc')]);router[_0x2d9f('0xd')](_0x2d9f('0x8'),auth[_0x2d9f('0x6')](),controller['destroy']);module[_0x2d9f('0xe')]=router;
\ No newline at end of file
index 29ab877..be12007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b2d=['STRING','BOOLEAN','sequelize','exports'];(function(_0x514b64,_0x54ab07){var _0x1926fc=function(_0x289085){while(--_0x289085){_0x514b64['push'](_0x514b64['shift']());}};_0x1926fc(++_0x54ab07);}(_0x6b2d,0x14e));var _0xd6b2=function(_0x34c776,_0x52e903){_0x34c776=_0x34c776-0x0;var _0x343ab0=_0x6b2d[_0x34c776];return _0x343ab0;};'use strict';var Sequelize=require(_0xd6b2('0x0'));module[_0xd6b2('0x1')]={'name':{'type':Sequelize[_0xd6b2('0x2')],'unique':'name'},'description':{'type':Sequelize[_0xd6b2('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xd6b2('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe61c=['exports','STRING','name','BOOLEAN','sequelize'];(function(_0x42127d,_0x319f25){var _0x338b8c=function(_0x2360c5){while(--_0x2360c5){_0x42127d['push'](_0x42127d['shift']());}};_0x338b8c(++_0x319f25);}(_0xe61c,0x10d));var _0xce61=function(_0x199c03,_0x3254aa){_0x199c03=_0x199c03-0x0;var _0x11a7d4=_0xe61c[_0x199c03];return _0x11a7d4;};'use strict';var Sequelize=require(_0xce61('0x0'));module[_0xce61('0x1')]={'name':{'type':Sequelize[_0xce61('0x2')],'unique':_0xce61('0x3')},'description':{'type':Sequelize[_0xce61('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xce61('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index def45eb..383e028 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cf4=['VIRTUAL','includeAll','findAll','rows','params','length','include','options','find','create','readFileSync','root','server/files/templates/context.ejs','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','body','utf8','render','writeFileSync','Reload','eml-format','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','squel','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','jayson/promise','client','then','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','VoiceContext,\x20%s,\x20%s','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','get','Contexts','UserProfileResource','destroy','sendStatus','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','key','keys','intersection','model','query','attributes','fields','order','sort','where','filters','filter','merge','type'];(function(_0x2a93ab,_0x3cd987){var _0x52d571=function(_0x524441){while(--_0x524441){_0x2a93ab['push'](_0x2a93ab['shift']());}};_0x52d571(++_0x3cd987);}(_0x7cf4,0x1ae));var _0x47cf=function(_0x2a1c86,_0x4b583c){_0x2a1c86=_0x2a1c86-0x0;var _0x82472d=_0x7cf4[_0x2a1c86];return _0x82472d;};'use strict';var emlformat=require(_0x47cf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x47cf('0x1'));var rp=require(_0x47cf('0x2'));var moment=require(_0x47cf('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x47cf('0x4'));var path=require(_0x47cf('0x5'));var sox=require(_0x47cf('0x6'));var csv=require(_0x47cf('0x7'));var ejs=require(_0x47cf('0x8'));var fs=require('fs');var fs_extra=require(_0x47cf('0x9'));var _=require('lodash');var squel=require(_0x47cf('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x47cf('0xb'));var toCsv=require(_0x47cf('0x7'));var querystring=require(_0x47cf('0xc'));var Papa=require('papaparse');var Redis=require(_0x47cf('0xd'));var authService=require(_0x47cf('0xe'));var qs=require(_0x47cf('0xf'));var as=require(_0x47cf('0x10'));var hardwareService=require(_0x47cf('0x11'));var logger=require(_0x47cf('0x12'))('api');var utils=require(_0x47cf('0x13'));var config=require(_0x47cf('0x14'));var licenseUtil=require(_0x47cf('0x15'));var db=require(_0x47cf('0x16'))['db'];var jayson=require(_0x47cf('0x17'));var client=jayson[_0x47cf('0x18')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e6828,_0x1b6c86,_0x47af75,_0x536303){return new BPromise(function(_0x2bd20d,_0x427ae6){var _0x595203=_0x536303||client;return _0x595203['request'](_0x5e6828,_0x47af75)[_0x47cf('0x19')](function(_0x1c2271){logger[_0x47cf('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x1b6c86,_0x47cf('0x1b'));logger[_0x47cf('0x1c')](_0x47cf('0x1d'),_0x1b6c86,'request\x20sent',JSON[_0x47cf('0x1e')](_0x1c2271));if(_0x1c2271[_0x47cf('0x1f')]){if(_0x1c2271['error']['code']===0x1f4){logger[_0x47cf('0x1f')](_0x47cf('0x20'),_0x1b6c86,_0x1c2271['error'][_0x47cf('0x21')]);return _0x427ae6(_0x1c2271[_0x47cf('0x1f')][_0x47cf('0x21')]);}logger[_0x47cf('0x1f')](_0x47cf('0x20'),_0x1b6c86,_0x1c2271[_0x47cf('0x1f')][_0x47cf('0x21')]);return _0x2bd20d(_0x1c2271[_0x47cf('0x1f')][_0x47cf('0x21')]);}else{logger[_0x47cf('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x1b6c86,_0x47cf('0x1b'));_0x2bd20d(_0x1c2271[_0x47cf('0x22')][_0x47cf('0x21')]);}})[_0x47cf('0x23')](function(_0x35bca5){logger[_0x47cf('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x1b6c86,_0x35bca5);_0x427ae6(_0x35bca5);});});}function respondWithStatusCode(_0x4658c8,_0x4721ec){_0x4721ec=_0x4721ec||0xcc;return function(_0x2ad7dc){if(_0x2ad7dc){return _0x4658c8['sendStatus'](_0x4721ec);}return _0x4658c8[_0x47cf('0x24')](_0x4721ec)[_0x47cf('0x25')]();};}function respondWithResult(_0x7f13d7,_0x21b204){_0x21b204=_0x21b204||0xc8;return function(_0x388a4){if(_0x388a4){return _0x7f13d7[_0x47cf('0x24')](_0x21b204)[_0x47cf('0x26')](_0x388a4);}};}function respondWithFilteredResult(_0x3d0137,_0x2c48b2){return function(_0x559282){if(_0x559282){var _0x186e60=typeof _0x2c48b2[_0x47cf('0x27')]===_0x47cf('0x28')&&typeof _0x2c48b2[_0x47cf('0x29')]===_0x47cf('0x28');var _0x5376fb=_0x559282[_0x47cf('0x2a')];var _0x284c66=_0x186e60?0x0:_0x2c48b2[_0x47cf('0x27')];var _0x727cf0=_0x186e60?_0x559282['count']:_0x2c48b2[_0x47cf('0x27')]+_0x2c48b2[_0x47cf('0x29')];var _0x14d560;if(_0x727cf0>=_0x5376fb){_0x727cf0=_0x5376fb;_0x14d560=0xc8;}else{_0x14d560=0xce;}_0x3d0137[_0x47cf('0x24')](_0x14d560);return _0x3d0137[_0x47cf('0x2b')](_0x47cf('0x2c'),_0x284c66+'-'+_0x727cf0+'/'+_0x5376fb)['json'](_0x559282);}return null;};}function patchUpdates(_0x3ff294){return function(_0x41fa08){try{jsonpatch[_0x47cf('0x2d')](_0x41fa08,_0x3ff294,!![]);}catch(_0x1d9d11){return BPromise[_0x47cf('0x2e')](_0x1d9d11);}return _0x41fa08['save']();};}function saveUpdates(_0x3225a0,_0x4afc0a){return function(_0x563b6d){if(_0x563b6d){return _0x563b6d[_0x47cf('0x2f')](_0x3225a0)[_0x47cf('0x19')](function(_0x42c098){return _0x42c098;});}return null;};}function removeEntity(_0x43f186,_0xc5e964){return function(_0x4c98f5){if(_0x4c98f5){return _0x4c98f5['destroy']()[_0x47cf('0x19')](function(){var _0x5645bf=_0x4c98f5[_0x47cf('0x30')]({'plain':!![]});var _0x7a68e5=_0x47cf('0x31');return db[_0x47cf('0x32')][_0x47cf('0x33')]({'where':{'type':_0x7a68e5,'resourceId':_0x5645bf['id']}})[_0x47cf('0x19')](function(){return _0x4c98f5;});})[_0x47cf('0x19')](function(){_0x43f186[_0x47cf('0x24')](0xcc)[_0x47cf('0x25')]();});}};}function handleEntityNotFound(_0x63f640,_0x52930c){return function(_0x188bfc){if(!_0x188bfc){_0x63f640[_0x47cf('0x34')](0x194);}return _0x188bfc;};}function handleError(_0x20290a,_0x1c5a71){_0x1c5a71=_0x1c5a71||0x1f4;return function(_0x1432b3){logger[_0x47cf('0x1f')](_0x1432b3[_0x47cf('0x35')]);if(_0x1432b3['name']){delete _0x1432b3[_0x47cf('0x36')];}_0x20290a[_0x47cf('0x24')](_0x1c5a71)[_0x47cf('0x37')](_0x1432b3);};}exports[_0x47cf('0x38')]=function(_0x467130,_0x268cf4){var _0x3d9bf2={},_0x2acace={},_0x4b3378={'count':0x0,'rows':[]};var _0x57bc58=_[_0x47cf('0x39')](db[_0x47cf('0x3a')][_0x47cf('0x3b')],function(_0x3db771){return{'name':_0x3db771[_0x47cf('0x3c')],'type':_0x3db771['type'][_0x47cf('0x3d')]};});_0x2acace['model']=_[_0x47cf('0x39')](_0x57bc58,'name');_0x2acace['query']=_[_0x47cf('0x3e')](_0x467130['query']);_0x2acace['filters']=_[_0x47cf('0x3f')](_0x2acace[_0x47cf('0x40')],_0x2acace[_0x47cf('0x41')]);_0x3d9bf2[_0x47cf('0x42')]=_['intersection'](_0x2acace[_0x47cf('0x40')],qs[_0x47cf('0x43')](_0x467130['query'][_0x47cf('0x43')]));_0x3d9bf2['attributes']=_0x3d9bf2['attributes']['length']?_0x3d9bf2[_0x47cf('0x42')]:_0x2acace[_0x47cf('0x40')];if(!_0x467130['query']['hasOwnProperty']('nolimit')){_0x3d9bf2[_0x47cf('0x29')]=qs[_0x47cf('0x29')](_0x467130[_0x47cf('0x41')]['limit']);_0x3d9bf2['offset']=qs[_0x47cf('0x27')](_0x467130[_0x47cf('0x41')][_0x47cf('0x27')]);}_0x3d9bf2[_0x47cf('0x44')]=qs[_0x47cf('0x45')](_0x467130[_0x47cf('0x41')][_0x47cf('0x45')]);_0x3d9bf2[_0x47cf('0x46')]=qs['filters'](_['pick'](_0x467130[_0x47cf('0x41')],_0x2acace[_0x47cf('0x47')]),_0x57bc58);if(_0x467130[_0x47cf('0x41')][_0x47cf('0x48')]){_0x3d9bf2[_0x47cf('0x46')]=_[_0x47cf('0x49')](_0x3d9bf2[_0x47cf('0x46')],{'$or':_[_0x47cf('0x39')](_0x57bc58,function(_0xd1cf0b){if(_0xd1cf0b[_0x47cf('0x4a')]!==_0x47cf('0x4b')){var _0x178466={};_0x178466[_0xd1cf0b[_0x47cf('0x36')]]={'$like':'%'+_0x467130[_0x47cf('0x41')]['filter']+'%'};return _0x178466;}})});}_0x3d9bf2=_[_0x47cf('0x49')]({},_0x3d9bf2,_0x467130['options']);var _0xea4e26={'where':_0x3d9bf2[_0x47cf('0x46')]};return db['VoiceContext']['count'](_0xea4e26)[_0x47cf('0x19')](function(_0x3faab2){_0x4b3378[_0x47cf('0x2a')]=_0x3faab2;if(_0x467130[_0x47cf('0x41')][_0x47cf('0x4c')]){_0x3d9bf2['include']=[{'all':!![]}];}return db[_0x47cf('0x3a')][_0x47cf('0x4d')](_0x3d9bf2);})[_0x47cf('0x19')](function(_0x2b5f61){_0x4b3378[_0x47cf('0x4e')]=_0x2b5f61;return _0x4b3378;})['then'](respondWithFilteredResult(_0x268cf4,_0x3d9bf2))[_0x47cf('0x23')](handleError(_0x268cf4,null));};exports['show']=function(_0x599187,_0x213737){var _0x27f1a9={'raw':![],'where':{'id':_0x599187[_0x47cf('0x4f')]['id']}},_0x3b0450={};_0x3b0450[_0x47cf('0x40')]=_[_0x47cf('0x3e')](db[_0x47cf('0x3a')][_0x47cf('0x3b')]);_0x3b0450[_0x47cf('0x41')]=_[_0x47cf('0x3e')](_0x599187[_0x47cf('0x41')]);_0x3b0450[_0x47cf('0x47')]=_[_0x47cf('0x3f')](_0x3b0450[_0x47cf('0x40')],_0x3b0450[_0x47cf('0x41')]);_0x27f1a9[_0x47cf('0x42')]=_[_0x47cf('0x3f')](_0x3b0450[_0x47cf('0x40')],qs[_0x47cf('0x43')](_0x599187[_0x47cf('0x41')][_0x47cf('0x43')]));_0x27f1a9[_0x47cf('0x42')]=_0x27f1a9[_0x47cf('0x42')][_0x47cf('0x50')]?_0x27f1a9[_0x47cf('0x42')]:_0x3b0450[_0x47cf('0x40')];if(_0x599187[_0x47cf('0x41')][_0x47cf('0x4c')]){_0x27f1a9[_0x47cf('0x51')]=[{'all':!![]}];}_0x27f1a9=_[_0x47cf('0x49')]({},_0x27f1a9,_0x599187[_0x47cf('0x52')]);return db['VoiceContext'][_0x47cf('0x53')](_0x27f1a9)['then'](handleEntityNotFound(_0x213737,null))['then'](respondWithResult(_0x213737,null))[_0x47cf('0x23')](handleError(_0x213737,null));};exports['create']=function(_0x1e4377,_0x2746d8,_0x13a9de){var _0x533bbb;return db['VoiceContext'][_0x47cf('0x54')](_0x1e4377['body'],{'raw':!![]})[_0x47cf('0x19')](function(_0x377e53){_0x533bbb=_0x377e53;return db[_0x47cf('0x3a')][_0x47cf('0x4d')]({'raw':!![]});})['then'](function(_0x354990){var _0x4363d0=fs[_0x47cf('0x55')](path['join'](config[_0x47cf('0x56')],_0x47cf('0x57')),'utf8');var _0x5b0717=ejs['render'](_0x4363d0,{'contexts':_0x354990||[]});fs['writeFileSync'](_0x47cf('0x58'),_0x5b0717);})[_0x47cf('0x19')](function(){return respondWithRpcPromise('Reload',_0x47cf('0x54'),{'module':_0x47cf('0x59')});})['then'](function(){var _0x29151b=_0x1e4377[_0x47cf('0x5a')][_0x47cf('0x30')]({'plain':!![]});if(!_0x29151b)throw new Error(_0x47cf('0x5b'));if(_0x29151b[_0x47cf('0x5c')]===_0x47cf('0x5a')){var _0xad0e32=_0x533bbb[_0x47cf('0x30')]({'plain':!![]});return db[_0x47cf('0x5d')]['find']({'where':{'name':_0x47cf('0x31'),'userProfileId':_0x29151b[_0x47cf('0x5e')]},'raw':!![]})['then'](function(_0x256a0f){if(_0x256a0f&&_0x256a0f[_0x47cf('0x5f')]===0x0){return db[_0x47cf('0x32')][_0x47cf('0x54')]({'name':_0xad0e32[_0x47cf('0x36')],'resourceId':_0xad0e32['id'],'type':_0x256a0f['name'],'sectionId':_0x256a0f['id']},{})[_0x47cf('0x19')](function(){return _0x533bbb;});}else{return _0x533bbb;}})[_0x47cf('0x23')](function(_0x206c92){logger[_0x47cf('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x206c92);throw _0x206c92;});}return _0x533bbb;})[_0x47cf('0x19')](respondWithResult(_0x2746d8,0xc9))[_0x47cf('0x23')](handleError(_0x2746d8,null));};exports[_0x47cf('0x2f')]=function(_0x2078a3,_0xd27249,_0x3badea){var _0x1390f5;return db['VoiceContext'][_0x47cf('0x53')]({'where':{'id':_0x2078a3[_0x47cf('0x4f')]['id']}})['then'](handleEntityNotFound(_0xd27249,null))['then'](saveUpdates(_0x2078a3[_0x47cf('0x60')],null))[_0x47cf('0x19')](function(_0xe0c837){if(_0xe0c837){_0x1390f5=_0xe0c837;return db[_0x47cf('0x3a')][_0x47cf('0x4d')]({'raw':!![]});}})[_0x47cf('0x19')](function(_0x4db208){var _0x1a3c11=fs[_0x47cf('0x55')](path['join'](config[_0x47cf('0x56')],'server/files/templates/context.ejs'),_0x47cf('0x61'));var _0x5a8828=ejs[_0x47cf('0x62')](_0x1a3c11,{'contexts':_0x4db208||[]});fs[_0x47cf('0x63')](_0x47cf('0x58'),_0x5a8828);})[_0x47cf('0x19')](function(){return respondWithRpcPromise(_0x47cf('0x64'),'update',{'module':_0x47cf('0x59')});})[_0x47cf('0x19')](function(){return _0x1390f5;})[_0x47cf('0x19')](respondWithResult(_0xd27249,null))[_0x47cf('0x23')](handleError(_0xd27249,null));};exports[_0x47cf('0x33')]=function(_0xd9442a,_0x54bdaa,_0x160a43){var _0x32b116;return db['VoiceContext'][_0x47cf('0x53')]({'where':{'id':_0xd9442a[_0x47cf('0x4f')]['id']}})[_0x47cf('0x19')](handleEntityNotFound(_0x54bdaa,null))['then'](removeEntity(_0x54bdaa,null))['then'](function(){return db[_0x47cf('0x3a')][_0x47cf('0x4d')]({'raw':!![]});})['then'](function(_0x12110a){var _0x3b93f0=fs[_0x47cf('0x55')](path['join'](config['root'],'server/files/templates/context.ejs'),_0x47cf('0x61'));var _0x4632b5=ejs['render'](_0x3b93f0,{'contexts':_0x12110a});fs[_0x47cf('0x63')](_0x47cf('0x58'),_0x4632b5);return respondWithRpcPromise(_0x47cf('0x64'),_0x47cf('0x33'),{'module':_0x47cf('0x59')});})[_0x47cf('0x23')](handleError(_0x54bdaa,null));};
\ No newline at end of file
+var _0x7aed=['autoAssociation','update','writeFileSync','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','jayson/promise','client','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','get','Contexts','UserProfileResource','stack','send','index','map','VoiceContext','rawAttributes','fieldName','type','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection'];(function(_0x3cba5e,_0x15dac9){var _0x312d63=function(_0x473041){while(--_0x473041){_0x3cba5e['push'](_0x3cba5e['shift']());}};_0x312d63(++_0x15dac9);}(_0x7aed,0x1a3));var _0xd7ae=function(_0x2fe828,_0x44e714){_0x2fe828=_0x2fe828-0x0;var _0x4bfbac=_0x7aed[_0x2fe828];return _0x4bfbac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd7ae('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd7ae('0x1'));var rp=require(_0xd7ae('0x2'));var moment=require('moment');var BPromise=require(_0xd7ae('0x3'));var Mustache=require(_0xd7ae('0x4'));var util=require(_0xd7ae('0x5'));var path=require(_0xd7ae('0x6'));var sox=require(_0xd7ae('0x7'));var csv=require(_0xd7ae('0x8'));var ejs=require(_0xd7ae('0x9'));var fs=require('fs');var fs_extra=require(_0xd7ae('0xa'));var _=require(_0xd7ae('0xb'));var squel=require('squel');var crypto=require(_0xd7ae('0xc'));var jsforce=require(_0xd7ae('0xd'));var deskjs=require(_0xd7ae('0xe'));var toCsv=require(_0xd7ae('0x8'));var querystring=require(_0xd7ae('0xf'));var Papa=require(_0xd7ae('0x10'));var Redis=require(_0xd7ae('0x11'));var authService=require(_0xd7ae('0x12'));var qs=require(_0xd7ae('0x13'));var as=require(_0xd7ae('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd7ae('0x15'))(_0xd7ae('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd7ae('0x17'))['db'];var jayson=require(_0xd7ae('0x18'));var client=jayson[_0xd7ae('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x398e1e,_0x5293f6,_0x763436,_0x2dbedb){return new BPromise(function(_0x2554a2,_0x4f2b44){var _0x5d8d=_0x2dbedb||client;return _0x5d8d[_0xd7ae('0x1a')](_0x398e1e,_0x763436)[_0xd7ae('0x1b')](function(_0x5c894d){logger[_0xd7ae('0x1c')](_0xd7ae('0x1d'),_0x5293f6,_0xd7ae('0x1e'));logger['debug'](_0xd7ae('0x1f'),_0x5293f6,_0xd7ae('0x1e'),JSON[_0xd7ae('0x20')](_0x5c894d));if(_0x5c894d[_0xd7ae('0x21')]){if(_0x5c894d[_0xd7ae('0x21')]['code']===0x1f4){logger[_0xd7ae('0x21')](_0xd7ae('0x1d'),_0x5293f6,_0x5c894d['error'][_0xd7ae('0x22')]);return _0x4f2b44(_0x5c894d[_0xd7ae('0x21')]['message']);}logger[_0xd7ae('0x21')](_0xd7ae('0x1d'),_0x5293f6,_0x5c894d['error'][_0xd7ae('0x22')]);return _0x2554a2(_0x5c894d['error']['message']);}else{logger[_0xd7ae('0x1c')](_0xd7ae('0x1d'),_0x5293f6,_0xd7ae('0x1e'));_0x2554a2(_0x5c894d[_0xd7ae('0x23')][_0xd7ae('0x22')]);}})[_0xd7ae('0x24')](function(_0x5bbf3a){logger[_0xd7ae('0x21')](_0xd7ae('0x1d'),_0x5293f6,_0x5bbf3a);_0x4f2b44(_0x5bbf3a);});});}function respondWithStatusCode(_0x2da67c,_0x4ddd3c){_0x4ddd3c=_0x4ddd3c||0xcc;return function(_0x4a3513){if(_0x4a3513){return _0x2da67c[_0xd7ae('0x25')](_0x4ddd3c);}return _0x2da67c[_0xd7ae('0x26')](_0x4ddd3c)[_0xd7ae('0x27')]();};}function respondWithResult(_0x3ef143,_0x1ec79f){_0x1ec79f=_0x1ec79f||0xc8;return function(_0x25c0d2){if(_0x25c0d2){return _0x3ef143[_0xd7ae('0x26')](_0x1ec79f)[_0xd7ae('0x28')](_0x25c0d2);}};}function respondWithFilteredResult(_0x381e73,_0x400905){return function(_0x3730c2){if(_0x3730c2){var _0x4c2b57=typeof _0x400905[_0xd7ae('0x29')]===_0xd7ae('0x2a')&&typeof _0x400905[_0xd7ae('0x2b')]==='undefined';var _0x39b714=_0x3730c2[_0xd7ae('0x2c')];var _0x1c5515=_0x4c2b57?0x0:_0x400905['offset'];var _0x8e0085=_0x4c2b57?_0x3730c2[_0xd7ae('0x2c')]:_0x400905['offset']+_0x400905[_0xd7ae('0x2b')];var _0x2b337f;if(_0x8e0085>=_0x39b714){_0x8e0085=_0x39b714;_0x2b337f=0xc8;}else{_0x2b337f=0xce;}_0x381e73[_0xd7ae('0x26')](_0x2b337f);return _0x381e73[_0xd7ae('0x2d')](_0xd7ae('0x2e'),_0x1c5515+'-'+_0x8e0085+'/'+_0x39b714)[_0xd7ae('0x28')](_0x3730c2);}return null;};}function patchUpdates(_0x4ea41f){return function(_0x26af94){try{jsonpatch[_0xd7ae('0x2f')](_0x26af94,_0x4ea41f,!![]);}catch(_0x2148e6){return BPromise[_0xd7ae('0x30')](_0x2148e6);}return _0x26af94['save']();};}function saveUpdates(_0x50c95b,_0x140156){return function(_0x192871){if(_0x192871){return _0x192871['update'](_0x50c95b)[_0xd7ae('0x1b')](function(_0x13b6bd){return _0x13b6bd;});}return null;};}function removeEntity(_0x2f6269,_0x3dafd5){return function(_0x58fb00){if(_0x58fb00){return _0x58fb00[_0xd7ae('0x31')]()[_0xd7ae('0x1b')](function(){var _0x5a0cc3=_0x58fb00[_0xd7ae('0x32')]({'plain':!![]});var _0xe4ccec=_0xd7ae('0x33');return db[_0xd7ae('0x34')][_0xd7ae('0x31')]({'where':{'type':_0xe4ccec,'resourceId':_0x5a0cc3['id']}})[_0xd7ae('0x1b')](function(){return _0x58fb00;});})[_0xd7ae('0x1b')](function(){_0x2f6269[_0xd7ae('0x26')](0xcc)[_0xd7ae('0x27')]();});}};}function handleEntityNotFound(_0x48972f,_0x1ae8f7){return function(_0xb411cc){if(!_0xb411cc){_0x48972f['sendStatus'](0x194);}return _0xb411cc;};}function handleError(_0x3fbc58,_0x521d5c){_0x521d5c=_0x521d5c||0x1f4;return function(_0x2bf317){logger[_0xd7ae('0x21')](_0x2bf317[_0xd7ae('0x35')]);if(_0x2bf317['name']){delete _0x2bf317['name'];}_0x3fbc58[_0xd7ae('0x26')](_0x521d5c)[_0xd7ae('0x36')](_0x2bf317);};}exports[_0xd7ae('0x37')]=function(_0x53247e,_0x5c4c68){var _0x4d1f0e={},_0x9a4506={},_0x187554={'count':0x0,'rows':[]};var _0x1453d2=_[_0xd7ae('0x38')](db[_0xd7ae('0x39')][_0xd7ae('0x3a')],function(_0x2db8ca){return{'name':_0x2db8ca[_0xd7ae('0x3b')],'type':_0x2db8ca[_0xd7ae('0x3c')]['key']};});_0x9a4506[_0xd7ae('0x3d')]=_[_0xd7ae('0x38')](_0x1453d2,_0xd7ae('0x3e'));_0x9a4506[_0xd7ae('0x3f')]=_[_0xd7ae('0x40')](_0x53247e['query']);_0x9a4506[_0xd7ae('0x41')]=_[_0xd7ae('0x42')](_0x9a4506[_0xd7ae('0x3d')],_0x9a4506[_0xd7ae('0x3f')]);_0x4d1f0e[_0xd7ae('0x43')]=_[_0xd7ae('0x42')](_0x9a4506[_0xd7ae('0x3d')],qs['fields'](_0x53247e['query'][_0xd7ae('0x44')]));_0x4d1f0e[_0xd7ae('0x43')]=_0x4d1f0e['attributes'][_0xd7ae('0x45')]?_0x4d1f0e[_0xd7ae('0x43')]:_0x9a4506[_0xd7ae('0x3d')];if(!_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x46')](_0xd7ae('0x47'))){_0x4d1f0e[_0xd7ae('0x2b')]=qs['limit'](_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x2b')]);_0x4d1f0e['offset']=qs[_0xd7ae('0x29')](_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x29')]);}_0x4d1f0e[_0xd7ae('0x48')]=qs[_0xd7ae('0x49')](_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x49')]);_0x4d1f0e['where']=qs[_0xd7ae('0x41')](_[_0xd7ae('0x4a')](_0x53247e['query'],_0x9a4506[_0xd7ae('0x41')]),_0x1453d2);if(_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x4b')]){_0x4d1f0e['where']=_[_0xd7ae('0x4c')](_0x4d1f0e[_0xd7ae('0x4d')],{'$or':_[_0xd7ae('0x38')](_0x1453d2,function(_0x266413){if(_0x266413[_0xd7ae('0x3c')]!==_0xd7ae('0x4e')){var _0x404d77={};_0x404d77[_0x266413[_0xd7ae('0x3e')]]={'$like':'%'+_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x4b')]+'%'};return _0x404d77;}})});}_0x4d1f0e=_[_0xd7ae('0x4c')]({},_0x4d1f0e,_0x53247e[_0xd7ae('0x4f')]);var _0x342c55={'where':_0x4d1f0e[_0xd7ae('0x4d')]};return db['VoiceContext']['count'](_0x342c55)[_0xd7ae('0x1b')](function(_0x510aea){_0x187554[_0xd7ae('0x2c')]=_0x510aea;if(_0x53247e[_0xd7ae('0x3f')][_0xd7ae('0x50')]){_0x4d1f0e[_0xd7ae('0x51')]=[{'all':!![]}];}return db['VoiceContext'][_0xd7ae('0x52')](_0x4d1f0e);})[_0xd7ae('0x1b')](function(_0x35c2e0){_0x187554[_0xd7ae('0x53')]=_0x35c2e0;return _0x187554;})[_0xd7ae('0x1b')](respondWithFilteredResult(_0x5c4c68,_0x4d1f0e))[_0xd7ae('0x24')](handleError(_0x5c4c68,null));};exports[_0xd7ae('0x54')]=function(_0x4ea14f,_0xf2a43){var _0x5943a8={'raw':![],'where':{'id':_0x4ea14f[_0xd7ae('0x55')]['id']}},_0x37029d={};_0x37029d[_0xd7ae('0x3d')]=_[_0xd7ae('0x40')](db['VoiceContext'][_0xd7ae('0x3a')]);_0x37029d[_0xd7ae('0x3f')]=_[_0xd7ae('0x40')](_0x4ea14f[_0xd7ae('0x3f')]);_0x37029d[_0xd7ae('0x41')]=_['intersection'](_0x37029d[_0xd7ae('0x3d')],_0x37029d[_0xd7ae('0x3f')]);_0x5943a8[_0xd7ae('0x43')]=_[_0xd7ae('0x42')](_0x37029d['model'],qs['fields'](_0x4ea14f[_0xd7ae('0x3f')][_0xd7ae('0x44')]));_0x5943a8[_0xd7ae('0x43')]=_0x5943a8[_0xd7ae('0x43')][_0xd7ae('0x45')]?_0x5943a8[_0xd7ae('0x43')]:_0x37029d['model'];if(_0x4ea14f[_0xd7ae('0x3f')][_0xd7ae('0x50')]){_0x5943a8[_0xd7ae('0x51')]=[{'all':!![]}];}_0x5943a8=_[_0xd7ae('0x4c')]({},_0x5943a8,_0x4ea14f[_0xd7ae('0x4f')]);return db[_0xd7ae('0x39')][_0xd7ae('0x56')](_0x5943a8)[_0xd7ae('0x1b')](handleEntityNotFound(_0xf2a43,null))[_0xd7ae('0x1b')](respondWithResult(_0xf2a43,null))[_0xd7ae('0x24')](handleError(_0xf2a43,null));};exports['create']=function(_0x4e4519,_0x2f64a0,_0x27652f){var _0xaaa019;return db[_0xd7ae('0x39')][_0xd7ae('0x57')](_0x4e4519[_0xd7ae('0x58')],{'raw':!![]})[_0xd7ae('0x1b')](function(_0x3e4874){_0xaaa019=_0x3e4874;return db[_0xd7ae('0x39')][_0xd7ae('0x52')]({'raw':!![]});})[_0xd7ae('0x1b')](function(_0x2b4617){var _0x2013de=fs[_0xd7ae('0x59')](path[_0xd7ae('0x5a')](config[_0xd7ae('0x5b')],_0xd7ae('0x5c')),_0xd7ae('0x5d'));var _0x184c22=ejs['render'](_0x2013de,{'contexts':_0x2b4617||[]});fs['writeFileSync'](_0xd7ae('0x5e'),_0x184c22);})[_0xd7ae('0x1b')](function(){return respondWithRpcPromise(_0xd7ae('0x5f'),_0xd7ae('0x57'),{'module':_0xd7ae('0x60')});})[_0xd7ae('0x1b')](function(){var _0x4513cb=_0x4e4519[_0xd7ae('0x61')][_0xd7ae('0x32')]({'plain':!![]});if(!_0x4513cb)throw new Error(_0xd7ae('0x62'));if(_0x4513cb[_0xd7ae('0x63')]===_0xd7ae('0x61')){var _0xaa5f2=_0xaaa019[_0xd7ae('0x32')]({'plain':!![]});return db[_0xd7ae('0x64')][_0xd7ae('0x56')]({'where':{'name':_0xd7ae('0x33'),'userProfileId':_0x4513cb['userProfileId']},'raw':!![]})[_0xd7ae('0x1b')](function(_0x11ff15){if(_0x11ff15&&_0x11ff15[_0xd7ae('0x65')]===0x0){return db[_0xd7ae('0x34')][_0xd7ae('0x57')]({'name':_0xaa5f2[_0xd7ae('0x3e')],'resourceId':_0xaa5f2['id'],'type':_0x11ff15['name'],'sectionId':_0x11ff15['id']},{})[_0xd7ae('0x1b')](function(){return _0xaaa019;});}else{return _0xaaa019;}})['catch'](function(_0xf776d8){logger[_0xd7ae('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xf776d8);throw _0xf776d8;});}return _0xaaa019;})['then'](respondWithResult(_0x2f64a0,0xc9))[_0xd7ae('0x24')](handleError(_0x2f64a0,null));};exports[_0xd7ae('0x66')]=function(_0x4f8999,_0x15a5f1,_0x25adcf){var _0x4b79d4;return db['VoiceContext'][_0xd7ae('0x56')]({'where':{'id':_0x4f8999[_0xd7ae('0x55')]['id']}})['then'](handleEntityNotFound(_0x15a5f1,null))[_0xd7ae('0x1b')](saveUpdates(_0x4f8999[_0xd7ae('0x58')],null))[_0xd7ae('0x1b')](function(_0x286716){if(_0x286716){_0x4b79d4=_0x286716;return db[_0xd7ae('0x39')][_0xd7ae('0x52')]({'raw':!![]});}})[_0xd7ae('0x1b')](function(_0x40dbe0){var _0x3e43fe=fs['readFileSync'](path[_0xd7ae('0x5a')](config['root'],_0xd7ae('0x5c')),'utf8');var _0x4dec99=ejs['render'](_0x3e43fe,{'contexts':_0x40dbe0||[]});fs[_0xd7ae('0x67')](_0xd7ae('0x5e'),_0x4dec99);})['then'](function(){return respondWithRpcPromise(_0xd7ae('0x5f'),_0xd7ae('0x66'),{'module':_0xd7ae('0x60')});})[_0xd7ae('0x1b')](function(){return _0x4b79d4;})[_0xd7ae('0x1b')](respondWithResult(_0x15a5f1,null))[_0xd7ae('0x24')](handleError(_0x15a5f1,null));};exports['destroy']=function(_0x138776,_0x1af145,_0x7c1cb6){var _0x2d71cb;return db['VoiceContext'][_0xd7ae('0x56')]({'where':{'id':_0x138776[_0xd7ae('0x55')]['id']}})['then'](handleEntityNotFound(_0x1af145,null))[_0xd7ae('0x1b')](removeEntity(_0x1af145,null))[_0xd7ae('0x1b')](function(){return db[_0xd7ae('0x39')][_0xd7ae('0x52')]({'raw':!![]});})['then'](function(_0x39eff3){var _0x2a7834=fs[_0xd7ae('0x59')](path[_0xd7ae('0x5a')](config[_0xd7ae('0x5b')],_0xd7ae('0x5c')),_0xd7ae('0x5d'));var _0x3e0f16=ejs['render'](_0x2a7834,{'contexts':_0x39eff3});fs[_0xd7ae('0x67')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x3e0f16);return respondWithRpcPromise('Reload',_0xd7ae('0x31'),{'module':_0xd7ae('0x60')});})[_0xd7ae('0x24')](handleError(_0x1af145,null));};
\ No newline at end of file
index 20e5a2a..caa1be9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x098f=['../../config/logger','api','moment','request-promise','path','define','VoiceContext','voice_contexts'];(function(_0x57c4ff,_0x102e4e){var _0x21649c=function(_0x5a4fa9){while(--_0x5a4fa9){_0x57c4ff['push'](_0x57c4ff['shift']());}};_0x21649c(++_0x102e4e);}(_0x098f,0x1c8));var _0xf098=function(_0xb49837,_0x4dc4c3){_0xb49837=_0xb49837-0x0;var _0x19143f=_0x098f[_0xb49837];return _0x19143f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf098('0x0'))(_0xf098('0x1'));var moment=require(_0xf098('0x2'));var BPromise=require('bluebird');var rp=require(_0xf098('0x3'));var fs=require('fs');var path=require(_0xf098('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceContext.attributes');module['exports']=function(_0x15eb0c,_0x44fe6f){return _0x15eb0c[_0xf098('0x5')](_0xf098('0x6'),attributes,{'tableName':_0xf098('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf057=['VoiceContext','voice_contexts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceContext.attributes','exports','define'];(function(_0x441b00,_0x36b2a9){var _0x254172=function(_0x2bf715){while(--_0x2bf715){_0x441b00['push'](_0x441b00['shift']());}};_0x254172(++_0x36b2a9);}(_0xf057,0x16e));var _0x7f05=function(_0x462c17,_0x57357e){_0x462c17=_0x462c17-0x0;var _0x114255=_0xf057[_0x462c17];return _0x114255;};'use strict';var _=require(_0x7f05('0x0'));var util=require(_0x7f05('0x1'));var logger=require(_0x7f05('0x2'))(_0x7f05('0x3'));var moment=require(_0x7f05('0x4'));var BPromise=require(_0x7f05('0x5'));var rp=require(_0x7f05('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7f05('0x7'));var config=require(_0x7f05('0x8'));var attributes=require(_0x7f05('0x9'));module[_0x7f05('0xa')]=function(_0x5b43c6,_0x4d4940){return _0x5b43c6[_0x7f05('0xb')](_0x7f05('0xc'),attributes,{'tableName':_0x7f05('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 37c1355..5754a44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a86=['then','VoiceContext,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4e8e38,_0x4a8e79){var _0x455ccd=function(_0x411131){while(--_0x411131){_0x4e8e38['push'](_0x4e8e38['shift']());}};_0x455ccd(++_0x4a8e79);}(_0x9a86,0x1ed));var _0x69a8=function(_0x480bc8,_0x1fac40){_0x480bc8=_0x480bc8-0x0;var _0x28c245=_0x9a86[_0x480bc8];return _0x28c245;};'use strict';var _=require(_0x69a8('0x0'));var util=require(_0x69a8('0x1'));var moment=require('moment');var BPromise=require(_0x69a8('0x2'));var rs=require(_0x69a8('0x3'));var fs=require('fs');var Redis=require(_0x69a8('0x4'));var db=require(_0x69a8('0x5'))['db'];var utils=require(_0x69a8('0x6'));var logger=require(_0x69a8('0x7'))(_0x69a8('0x8'));var config=require(_0x69a8('0x9'));var jayson=require(_0x69a8('0xa'));var client=jayson[_0x69a8('0xb')][_0x69a8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x47592b,_0x40d196,_0x308ef9){return new BPromise(function(_0x1909fc,_0x1c826b){return client['request'](_0x47592b,_0x308ef9)[_0x69a8('0xd')](function(_0xaf3ed6){logger['info'](_0x69a8('0xe'),_0x40d196,_0x69a8('0xf'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x40d196,_0x69a8('0xf'),JSON[_0x69a8('0x10')](_0xaf3ed6));if(_0xaf3ed6[_0x69a8('0x11')]){if(_0xaf3ed6[_0x69a8('0x11')]['code']===0x1f4){logger['error'](_0x69a8('0xe'),_0x40d196,_0xaf3ed6['error'][_0x69a8('0x12')]);return _0x1c826b(_0xaf3ed6[_0x69a8('0x11')][_0x69a8('0x12')]);}logger[_0x69a8('0x11')](_0x69a8('0xe'),_0x40d196,_0xaf3ed6['error'][_0x69a8('0x12')]);return _0x1909fc(_0xaf3ed6['error'][_0x69a8('0x12')]);}else{logger[_0x69a8('0x13')]('VoiceContext,\x20%s,\x20%s',_0x40d196,_0x69a8('0xf'));_0x1909fc(_0xaf3ed6[_0x69a8('0x14')][_0x69a8('0x12')]);}})[_0x69a8('0x15')](function(_0x1d3ebf){logger[_0x69a8('0x11')](_0x69a8('0xe'),_0x40d196,_0x1d3ebf);_0x1c826b(_0x1d3ebf);});});}
\ No newline at end of file
+var _0x1053=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0xcf2677,_0x890c0e){var _0x80f8a6=function(_0x435069){while(--_0x435069){_0xcf2677['push'](_0xcf2677['shift']());}};_0x80f8a6(++_0x890c0e);}(_0x1053,0xd5));var _0x3105=function(_0x518b99,_0x4333e4){_0x518b99=_0x518b99-0x0;var _0x45faed=_0x1053[_0x518b99];return _0x45faed;};'use strict';var _=require(_0x3105('0x0'));var util=require(_0x3105('0x1'));var moment=require(_0x3105('0x2'));var BPromise=require(_0x3105('0x3'));var rs=require(_0x3105('0x4'));var fs=require('fs');var Redis=require(_0x3105('0x5'));var db=require(_0x3105('0x6'))['db'];var utils=require(_0x3105('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x3105('0x8'));var jayson=require(_0x3105('0x9'));var client=jayson[_0x3105('0xa')][_0x3105('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a97d7,_0x2ef16e,_0x5454c0){return new BPromise(function(_0x50c9cc,_0x49edb4){return client[_0x3105('0xc')](_0x5a97d7,_0x5454c0)['then'](function(_0x35e9cc){logger[_0x3105('0xd')](_0x3105('0xe'),_0x2ef16e,'request\x20sent');logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x2ef16e,_0x3105('0xf'),JSON['stringify'](_0x35e9cc));if(_0x35e9cc[_0x3105('0x10')]){if(_0x35e9cc[_0x3105('0x10')][_0x3105('0x11')]===0x1f4){logger[_0x3105('0x10')](_0x3105('0xe'),_0x2ef16e,_0x35e9cc[_0x3105('0x10')]['message']);return _0x49edb4(_0x35e9cc['error'][_0x3105('0x12')]);}logger[_0x3105('0x10')](_0x3105('0xe'),_0x2ef16e,_0x35e9cc['error']['message']);return _0x50c9cc(_0x35e9cc[_0x3105('0x10')][_0x3105('0x12')]);}else{logger[_0x3105('0xd')](_0x3105('0xe'),_0x2ef16e,_0x3105('0xf'));_0x50c9cc(_0x35e9cc[_0x3105('0x13')]['message']);}})[_0x3105('0x14')](function(_0x2a3483){logger[_0x3105('0x10')](_0x3105('0xe'),_0x2ef16e,_0x2a3483);_0x49edb4(_0x2a3483);});});}
\ No newline at end of file
index 167a26d..6fc5aa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d20=['delete','destroy','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','isAuthenticated','get','/describe','/:id','show','post','create','put','update'];(function(_0x12a064,_0x439211){var _0x2d639f=function(_0x57f27e){while(--_0x57f27e){_0x12a064['push'](_0x12a064['shift']());}};_0x2d639f(++_0x439211);}(_0x1d20,0x106));var _0x01d2=function(_0x3a8e88,_0x27c211){_0x3a8e88=_0x3a8e88-0x0;var _0x2c131e=_0x1d20[_0x3a8e88];return _0x2c131e;};'use strict';var multer=require(_0x01d2('0x0'));var util=require(_0x01d2('0x1'));var path=require(_0x01d2('0x2'));var timeout=require('connect-timeout');var express=require(_0x01d2('0x3'));var router=express[_0x01d2('0x4')]();var fs_extra=require(_0x01d2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x01d2('0x6'));var config=require(_0x01d2('0x7'));var controller=require(_0x01d2('0x8'));router['get']('/',auth[_0x01d2('0x9')](),controller['index']);router[_0x01d2('0xa')](_0x01d2('0xb'),auth[_0x01d2('0x9')](),controller['describe']);router[_0x01d2('0xa')](_0x01d2('0xc'),auth[_0x01d2('0x9')](),controller[_0x01d2('0xd')]);router[_0x01d2('0xe')]('/',auth[_0x01d2('0x9')](),controller[_0x01d2('0xf')]);router[_0x01d2('0x10')](_0x01d2('0xc'),auth['isAuthenticated'](),controller[_0x01d2('0x11')]);router[_0x01d2('0x12')]('/:id',auth[_0x01d2('0x9')](),controller[_0x01d2('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x0269=['put','/:id','update','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','show','post','create'];(function(_0x1265ed,_0x4b85e8){var _0x5ac459=function(_0xf0c114){while(--_0xf0c114){_0x1265ed['push'](_0x1265ed['shift']());}};_0x5ac459(++_0x4b85e8);}(_0x0269,0x135));var _0x9026=function(_0xd6df92,_0x3e8060){_0xd6df92=_0xd6df92-0x0;var _0x5cd33b=_0x0269[_0xd6df92];return _0x5cd33b;};'use strict';var multer=require(_0x9026('0x0'));var util=require('util');var path=require(_0x9026('0x1'));var timeout=require('connect-timeout');var express=require(_0x9026('0x2'));var router=express['Router']();var fs_extra=require(_0x9026('0x3'));var auth=require(_0x9026('0x4'));var interaction=require(_0x9026('0x5'));var config=require(_0x9026('0x6'));var controller=require('./voiceDialReport.controller');router[_0x9026('0x7')]('/',auth[_0x9026('0x8')](),controller['index']);router['get'](_0x9026('0x9'),auth[_0x9026('0x8')](),controller[_0x9026('0xa')]);router[_0x9026('0x7')]('/:id',auth[_0x9026('0x8')](),controller[_0x9026('0xb')]);router[_0x9026('0xc')]('/',auth['isAuthenticated'](),controller[_0x9026('0xd')]);router[_0x9026('0xe')](_0x9026('0xf'),auth['isAuthenticated'](),controller[_0x9026('0x10')]);router['delete'](_0x9026('0xf'),auth[_0x9026('0x8')](),controller[_0x9026('0x11')]);module[_0x9026('0x12')]=router;
\ No newline at end of file
index d978d46..1423232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['INTEGER','DATE','called,connect,complete','sequelize','exports','STRING'];(function(_0x454def,_0x44673a){var _0x38c081=function(_0x249f13){while(--_0x249f13){_0x454def['push'](_0x454def['shift']());}};_0x38c081(++_0x44673a);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'privilege':{'type':Sequelize[_0x7995('0x2')]},'channel':{'type':Sequelize[_0x7995('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x7995('0x2')]},'calleridnum':{'type':Sequelize[_0x7995('0x2')]},'calleridname':{'type':Sequelize[_0x7995('0x2')]},'connectedlinenum':{'type':Sequelize[_0x7995('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x7995('0x2')]},'accountcode':{'type':Sequelize[_0x7995('0x2')]},'context':{'type':Sequelize[_0x7995('0x2')]},'exten':{'type':Sequelize[_0x7995('0x2')]},'priority':{'type':Sequelize[_0x7995('0x3')]},'uniqueid':{'type':Sequelize[_0x7995('0x2')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x7995('0x2')]},'destchannelstate':{'type':Sequelize[_0x7995('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x7995('0x2')]},'destcalleridname':{'type':Sequelize[_0x7995('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x7995('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x7995('0x2')]},'destlanguage':{'type':Sequelize[_0x7995('0x2')]},'destaccountcode':{'type':Sequelize[_0x7995('0x2')]},'destcontext':{'type':Sequelize[_0x7995('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x7995('0x3')]},'destuniqueid':{'type':Sequelize[_0x7995('0x2')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x7995('0x2')]},'dialstatus':{'type':Sequelize[_0x7995('0x2')]},'starttime':{'type':Sequelize[_0x7995('0x4')]},'answertime':{'type':Sequelize[_0x7995('0x4')]},'endtime':{'type':Sequelize[_0x7995('0x4')]},'lastevent':{'type':Sequelize[_0x7995('0x2')],'comment':_0x7995('0x5')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0x7995('0x3')]},'billableseconds':{'type':Sequelize[_0x7995('0x3')]}};
\ No newline at end of file
+var _0x8ef6=['INTEGER','DATE','sequelize','exports','STRING'];(function(_0x3dd991,_0x4bef12){var _0x251609=function(_0x371481){while(--_0x371481){_0x3dd991['push'](_0x3dd991['shift']());}};_0x251609(++_0x4bef12);}(_0x8ef6,0xf2));var _0x68ef=function(_0x444fa9,_0x27c1f7){_0x444fa9=_0x444fa9-0x0;var _0x455a79=_0x8ef6[_0x444fa9];return _0x455a79;};'use strict';var Sequelize=require(_0x68ef('0x0'));module[_0x68ef('0x1')]={'privilege':{'type':Sequelize[_0x68ef('0x2')]},'channel':{'type':Sequelize[_0x68ef('0x2')]},'channelstate':{'type':Sequelize[_0x68ef('0x3')]},'channelstatedesc':{'type':Sequelize[_0x68ef('0x2')]},'calleridnum':{'type':Sequelize[_0x68ef('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x68ef('0x2')]},'connectedlinename':{'type':Sequelize[_0x68ef('0x2')]},'language':{'type':Sequelize[_0x68ef('0x2')]},'accountcode':{'type':Sequelize[_0x68ef('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x68ef('0x3')]},'uniqueid':{'type':Sequelize[_0x68ef('0x2')]},'linkedid':{'type':Sequelize[_0x68ef('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x68ef('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x68ef('0x2')]},'destcalleridnum':{'type':Sequelize[_0x68ef('0x2')]},'destcalleridname':{'type':Sequelize[_0x68ef('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x68ef('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x68ef('0x2')]},'destlanguage':{'type':Sequelize[_0x68ef('0x2')]},'destaccountcode':{'type':Sequelize[_0x68ef('0x2')]},'destcontext':{'type':Sequelize[_0x68ef('0x2')]},'destexten':{'type':Sequelize[_0x68ef('0x2')]},'destpriority':{'type':Sequelize[_0x68ef('0x3')]},'destuniqueid':{'type':Sequelize[_0x68ef('0x2')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x68ef('0x2')]},'dialstatus':{'type':Sequelize[_0x68ef('0x2')]},'starttime':{'type':Sequelize[_0x68ef('0x4')]},'answertime':{'type':Sequelize[_0x68ef('0x4')]},'endtime':{'type':Sequelize[_0x68ef('0x4')]},'lastevent':{'type':Sequelize[_0x68ef('0x2')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0x68ef('0x3')]},'duration':{'type':Sequelize[_0x68ef('0x3')]},'holdtime':{'type':Sequelize[_0x68ef('0x3')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 5db5f3b..52c9f25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe9d=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','VoiceDialReport','includeAll','findAll','rows','catch','show','params','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','querystring','papaparse'];(function(_0x1ed010,_0x734e0b){var _0x6e22bf=function(_0x1ffe15){while(--_0x1ffe15){_0x1ed010['push'](_0x1ed010['shift']());}};_0x6e22bf(++_0x734e0b);}(_0xfe9d,0x1c5));var _0xdfe9=function(_0x1b6a9c,_0x168cf3){_0x1b6a9c=_0x1b6a9c-0x0;var _0x56a969=_0xfe9d[_0x1b6a9c];return _0x56a969;};'use strict';var emlformat=require(_0xdfe9('0x0'));var rimraf=require(_0xdfe9('0x1'));var zipdir=require(_0xdfe9('0x2'));var jsonpatch=require(_0xdfe9('0x3'));var rp=require(_0xdfe9('0x4'));var moment=require(_0xdfe9('0x5'));var BPromise=require(_0xdfe9('0x6'));var Mustache=require(_0xdfe9('0x7'));var util=require(_0xdfe9('0x8'));var path=require('path');var sox=require(_0xdfe9('0x9'));var csv=require(_0xdfe9('0xa'));var ejs=require(_0xdfe9('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdfe9('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdfe9('0xa'));var querystring=require(_0xdfe9('0xd'));var Papa=require(_0xdfe9('0xe'));var Redis=require(_0xdfe9('0xf'));var authService=require(_0xdfe9('0x10'));var qs=require(_0xdfe9('0x11'));var as=require(_0xdfe9('0x12'));var hardwareService=require(_0xdfe9('0x13'));var logger=require(_0xdfe9('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xdfe9('0x15'));var licenseUtil=require(_0xdfe9('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1c496c,_0x5bc24a){_0x5bc24a=_0x5bc24a||0xcc;return function(_0x56d6e2){if(_0x56d6e2){return _0x1c496c[_0xdfe9('0x17')](_0x5bc24a);}return _0x1c496c[_0xdfe9('0x18')](_0x5bc24a)[_0xdfe9('0x19')]();};}function respondWithResult(_0x2802a8,_0x5cdcf3){_0x5cdcf3=_0x5cdcf3||0xc8;return function(_0x56911b){if(_0x56911b){return _0x2802a8[_0xdfe9('0x18')](_0x5cdcf3)[_0xdfe9('0x1a')](_0x56911b);}};}function respondWithFilteredResult(_0x15ed64,_0x4a051d){return function(_0x272749){if(_0x272749){var _0x278686=typeof _0x4a051d['offset']===_0xdfe9('0x1b')&&typeof _0x4a051d[_0xdfe9('0x1c')]===_0xdfe9('0x1b');var _0x52df95=_0x272749[_0xdfe9('0x1d')];var _0x359f6a=_0x278686?0x0:_0x4a051d['offset'];var _0x55dbd2=_0x278686?_0x272749[_0xdfe9('0x1d')]:_0x4a051d[_0xdfe9('0x1e')]+_0x4a051d['limit'];var _0x9a07a6;if(_0x55dbd2>=_0x52df95){_0x55dbd2=_0x52df95;_0x9a07a6=0xc8;}else{_0x9a07a6=0xce;}_0x15ed64[_0xdfe9('0x18')](_0x9a07a6);return _0x15ed64[_0xdfe9('0x1f')](_0xdfe9('0x20'),_0x359f6a+'-'+_0x55dbd2+'/'+_0x52df95)[_0xdfe9('0x1a')](_0x272749);}return null;};}function patchUpdates(_0x36be7f){return function(_0x394ce2){try{jsonpatch['apply'](_0x394ce2,_0x36be7f,!![]);}catch(_0x46d799){return BPromise[_0xdfe9('0x21')](_0x46d799);}return _0x394ce2[_0xdfe9('0x22')]();};}function saveUpdates(_0xbcbfe9,_0x31f069){return function(_0x2dd13a){if(_0x2dd13a){return _0x2dd13a[_0xdfe9('0x23')](_0xbcbfe9)['then'](function(_0x35b35e){return _0x35b35e;});}return null;};}function removeEntity(_0x2415a9,_0x7efc7a){return function(_0x1d4e3d){if(_0x1d4e3d){return _0x1d4e3d[_0xdfe9('0x24')]()[_0xdfe9('0x25')](function(){_0x2415a9[_0xdfe9('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x25ae14,_0x376b3b){return function(_0x5c7a67){if(!_0x5c7a67){_0x25ae14[_0xdfe9('0x17')](0x194);}return _0x5c7a67;};}function handleError(_0x3acedf,_0x142a43){_0x142a43=_0x142a43||0x1f4;return function(_0x2159e7){logger[_0xdfe9('0x26')](_0x2159e7[_0xdfe9('0x27')]);if(_0x2159e7[_0xdfe9('0x28')]){delete _0x2159e7[_0xdfe9('0x28')];}_0x3acedf[_0xdfe9('0x18')](_0x142a43)[_0xdfe9('0x29')](_0x2159e7);};}exports[_0xdfe9('0x2a')]=function(_0x1eaffa,_0x202cff){var _0x27a212={},_0x5353b2={},_0x39e3cd={'count':0x0,'rows':[]};var _0x446126=_['map'](db['VoiceDialReport'][_0xdfe9('0x2b')],function(_0x3ec53c){return{'name':_0x3ec53c[_0xdfe9('0x2c')],'type':_0x3ec53c[_0xdfe9('0x2d')][_0xdfe9('0x2e')]};});_0x5353b2[_0xdfe9('0x2f')]=_[_0xdfe9('0x30')](_0x446126,_0xdfe9('0x28'));_0x5353b2[_0xdfe9('0x31')]=_[_0xdfe9('0x32')](_0x1eaffa[_0xdfe9('0x31')]);_0x5353b2[_0xdfe9('0x33')]=_['intersection'](_0x5353b2[_0xdfe9('0x2f')],_0x5353b2[_0xdfe9('0x31')]);_0x27a212[_0xdfe9('0x34')]=_[_0xdfe9('0x35')](_0x5353b2[_0xdfe9('0x2f')],qs[_0xdfe9('0x36')](_0x1eaffa[_0xdfe9('0x31')][_0xdfe9('0x36')]));_0x27a212[_0xdfe9('0x34')]=_0x27a212[_0xdfe9('0x34')][_0xdfe9('0x37')]?_0x27a212[_0xdfe9('0x34')]:_0x5353b2[_0xdfe9('0x2f')];if(!_0x1eaffa[_0xdfe9('0x31')][_0xdfe9('0x38')](_0xdfe9('0x39'))){_0x27a212[_0xdfe9('0x1c')]=qs[_0xdfe9('0x1c')](_0x1eaffa[_0xdfe9('0x31')][_0xdfe9('0x1c')]);_0x27a212[_0xdfe9('0x1e')]=qs[_0xdfe9('0x1e')](_0x1eaffa[_0xdfe9('0x31')]['offset']);}_0x27a212[_0xdfe9('0x3a')]=qs[_0xdfe9('0x3b')](_0x1eaffa['query'][_0xdfe9('0x3b')]);_0x27a212['where']=qs[_0xdfe9('0x33')](_[_0xdfe9('0x3c')](_0x1eaffa[_0xdfe9('0x31')],_0x5353b2['filters']),_0x446126);if(_0x1eaffa[_0xdfe9('0x31')][_0xdfe9('0x3d')]){_0x27a212[_0xdfe9('0x3e')]=_[_0xdfe9('0x3f')](_0x27a212['where'],{'$or':_['map'](_0x446126,function(_0x15b104){if(_0x15b104[_0xdfe9('0x2d')]!==_0xdfe9('0x40')){var _0x4acb06={};_0x4acb06[_0x15b104[_0xdfe9('0x28')]]={'$like':'%'+_0x1eaffa[_0xdfe9('0x31')][_0xdfe9('0x3d')]+'%'};return _0x4acb06;}})});}_0x27a212=_[_0xdfe9('0x3f')]({},_0x27a212,_0x1eaffa[_0xdfe9('0x41')]);var _0x7a30ab={'where':_0x27a212['where']};return db[_0xdfe9('0x42')]['count'](_0x7a30ab)['then'](function(_0x2291cd){_0x39e3cd['count']=_0x2291cd;if(_0x1eaffa[_0xdfe9('0x31')][_0xdfe9('0x43')]){_0x27a212['include']=[{'all':!![]}];}return db[_0xdfe9('0x42')][_0xdfe9('0x44')](_0x27a212);})[_0xdfe9('0x25')](function(_0x3b1fb8){_0x39e3cd[_0xdfe9('0x45')]=_0x3b1fb8;return _0x39e3cd;})[_0xdfe9('0x25')](respondWithFilteredResult(_0x202cff,_0x27a212))[_0xdfe9('0x46')](handleError(_0x202cff,null));};exports[_0xdfe9('0x47')]=function(_0x67af64,_0x529438){var _0x4505ea={'raw':!![],'where':{'id':_0x67af64[_0xdfe9('0x48')]['id']}},_0x80557b={};_0x80557b[_0xdfe9('0x2f')]=_['keys'](db[_0xdfe9('0x42')][_0xdfe9('0x2b')]);_0x80557b['query']=_[_0xdfe9('0x32')](_0x67af64[_0xdfe9('0x31')]);_0x80557b[_0xdfe9('0x33')]=_[_0xdfe9('0x35')](_0x80557b[_0xdfe9('0x2f')],_0x80557b['query']);_0x4505ea[_0xdfe9('0x34')]=_[_0xdfe9('0x35')](_0x80557b[_0xdfe9('0x2f')],qs['fields'](_0x67af64[_0xdfe9('0x31')][_0xdfe9('0x36')]));_0x4505ea[_0xdfe9('0x34')]=_0x4505ea[_0xdfe9('0x34')][_0xdfe9('0x37')]?_0x4505ea[_0xdfe9('0x34')]:_0x80557b[_0xdfe9('0x2f')];if(_0x67af64['query'][_0xdfe9('0x43')]){_0x4505ea[_0xdfe9('0x49')]=[{'all':!![]}];}_0x4505ea=_[_0xdfe9('0x3f')]({},_0x4505ea,_0x67af64[_0xdfe9('0x41')]);return db[_0xdfe9('0x42')][_0xdfe9('0x4a')](_0x4505ea)[_0xdfe9('0x25')](handleEntityNotFound(_0x529438,null))['then'](respondWithResult(_0x529438,null))['catch'](handleError(_0x529438,null));};exports[_0xdfe9('0x4b')]=function(_0xae5f35,_0x39d901){return db[_0xdfe9('0x42')][_0xdfe9('0x4b')](_0xae5f35['body'],{})[_0xdfe9('0x25')](respondWithResult(_0x39d901,0xc9))['catch'](handleError(_0x39d901,null));};exports[_0xdfe9('0x23')]=function(_0xb9ce6f,_0x16c812){if(_0xb9ce6f[_0xdfe9('0x4c')]['id']){delete _0xb9ce6f[_0xdfe9('0x4c')]['id'];}return db[_0xdfe9('0x42')][_0xdfe9('0x4a')]({'where':{'id':_0xb9ce6f[_0xdfe9('0x48')]['id']}})['then'](handleEntityNotFound(_0x16c812,null))[_0xdfe9('0x25')](saveUpdates(_0xb9ce6f[_0xdfe9('0x4c')],null))[_0xdfe9('0x25')](respondWithResult(_0x16c812,null))['catch'](handleError(_0x16c812,null));};exports[_0xdfe9('0x24')]=function(_0x4f527a,_0x4dc14d){return db['VoiceDialReport'][_0xdfe9('0x4a')]({'where':{'id':_0x4f527a['params']['id']}})[_0xdfe9('0x25')](handleEntityNotFound(_0x4dc14d,null))[_0xdfe9('0x25')](removeEntity(_0x4dc14d,null))[_0xdfe9('0x46')](handleError(_0x4dc14d,null));};exports[_0xdfe9('0x4d')]=function(_0x5dc394,_0x47580c){return db[_0xdfe9('0x42')]['describe']()[_0xdfe9('0x25')](respondWithResult(_0x47580c,null))[_0xdfe9('0x46')](handleError(_0x47580c,null));};
\ No newline at end of file
+var _0x8a4f=['catch','params','keys','length','find','create','body','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','limit','count','offset','apply','update','then','destroy','error','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','rows'];(function(_0x41a8ce,_0x57fd7a){var _0x472459=function(_0x3e55f7){while(--_0x3e55f7){_0x41a8ce['push'](_0x41a8ce['shift']());}};_0x472459(++_0x57fd7a);}(_0x8a4f,0x161));var _0xf8a4=function(_0x4cf76b,_0x5a46a0){_0x4cf76b=_0x4cf76b-0x0;var _0x1b916f=_0x8a4f[_0x4cf76b];return _0x1b916f;};'use strict';var emlformat=require(_0xf8a4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf8a4('0x1'));var rp=require(_0xf8a4('0x2'));var moment=require(_0xf8a4('0x3'));var BPromise=require(_0xf8a4('0x4'));var Mustache=require(_0xf8a4('0x5'));var util=require(_0xf8a4('0x6'));var path=require(_0xf8a4('0x7'));var sox=require(_0xf8a4('0x8'));var csv=require('to-csv');var ejs=require(_0xf8a4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf8a4('0xa'));var squel=require(_0xf8a4('0xb'));var crypto=require('crypto');var jsforce=require(_0xf8a4('0xc'));var deskjs=require(_0xf8a4('0xd'));var toCsv=require('to-csv');var querystring=require(_0xf8a4('0xe'));var Papa=require(_0xf8a4('0xf'));var Redis=require(_0xf8a4('0x10'));var authService=require(_0xf8a4('0x11'));var qs=require(_0xf8a4('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf8a4('0x13'))(_0xf8a4('0x14'));var utils=require('../../config/utils');var config=require(_0xf8a4('0x15'));var licenseUtil=require(_0xf8a4('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38e3b9,_0x4605e3){_0x4605e3=_0x4605e3||0xcc;return function(_0x558257){if(_0x558257){return _0x38e3b9['sendStatus'](_0x4605e3);}return _0x38e3b9[_0xf8a4('0x17')](_0x4605e3)[_0xf8a4('0x18')]();};}function respondWithResult(_0x337f0f,_0x3a2e61){_0x3a2e61=_0x3a2e61||0xc8;return function(_0x36cdac){if(_0x36cdac){return _0x337f0f[_0xf8a4('0x17')](_0x3a2e61)[_0xf8a4('0x19')](_0x36cdac);}};}function respondWithFilteredResult(_0x42f698,_0x57c0e){return function(_0x56378f){if(_0x56378f){var _0x16e0d2=typeof _0x57c0e['offset']==='undefined'&&typeof _0x57c0e[_0xf8a4('0x1a')]==='undefined';var _0x594a26=_0x56378f[_0xf8a4('0x1b')];var _0x4eade8=_0x16e0d2?0x0:_0x57c0e[_0xf8a4('0x1c')];var _0x25549a=_0x16e0d2?_0x56378f[_0xf8a4('0x1b')]:_0x57c0e['offset']+_0x57c0e['limit'];var _0x467eb7;if(_0x25549a>=_0x594a26){_0x25549a=_0x594a26;_0x467eb7=0xc8;}else{_0x467eb7=0xce;}_0x42f698[_0xf8a4('0x17')](_0x467eb7);return _0x42f698['set']('Content-Range',_0x4eade8+'-'+_0x25549a+'/'+_0x594a26)[_0xf8a4('0x19')](_0x56378f);}return null;};}function patchUpdates(_0x27a67e){return function(_0x300196){try{jsonpatch[_0xf8a4('0x1d')](_0x300196,_0x27a67e,!![]);}catch(_0x4067af){return BPromise['reject'](_0x4067af);}return _0x300196['save']();};}function saveUpdates(_0x1e63e1,_0x6a3a7b){return function(_0x27185d){if(_0x27185d){return _0x27185d[_0xf8a4('0x1e')](_0x1e63e1)[_0xf8a4('0x1f')](function(_0x2c691d){return _0x2c691d;});}return null;};}function removeEntity(_0x314b7e,_0x23d08f){return function(_0x27d758){if(_0x27d758){return _0x27d758[_0xf8a4('0x20')]()[_0xf8a4('0x1f')](function(){_0x314b7e[_0xf8a4('0x17')](0xcc)[_0xf8a4('0x18')]();});}};}function handleEntityNotFound(_0x5745c2,_0x19b644){return function(_0x5defe3){if(!_0x5defe3){_0x5745c2['sendStatus'](0x194);}return _0x5defe3;};}function handleError(_0x3a0075,_0x19404b){_0x19404b=_0x19404b||0x1f4;return function(_0x46bc87){logger[_0xf8a4('0x21')](_0x46bc87['stack']);if(_0x46bc87[_0xf8a4('0x22')]){delete _0x46bc87['name'];}_0x3a0075['status'](_0x19404b)[_0xf8a4('0x23')](_0x46bc87);};}exports[_0xf8a4('0x24')]=function(_0x2f3110,_0x49f238){var _0x2f4518={},_0x15635d={},_0x1d7a71={'count':0x0,'rows':[]};var _0x597f88=_[_0xf8a4('0x25')](db[_0xf8a4('0x26')][_0xf8a4('0x27')],function(_0x201e73){return{'name':_0x201e73[_0xf8a4('0x28')],'type':_0x201e73['type'][_0xf8a4('0x29')]};});_0x15635d[_0xf8a4('0x2a')]=_['map'](_0x597f88,_0xf8a4('0x22'));_0x15635d[_0xf8a4('0x2b')]=_['keys'](_0x2f3110[_0xf8a4('0x2b')]);_0x15635d[_0xf8a4('0x2c')]=_[_0xf8a4('0x2d')](_0x15635d[_0xf8a4('0x2a')],_0x15635d[_0xf8a4('0x2b')]);_0x2f4518[_0xf8a4('0x2e')]=_[_0xf8a4('0x2d')](_0x15635d['model'],qs[_0xf8a4('0x2f')](_0x2f3110[_0xf8a4('0x2b')][_0xf8a4('0x2f')]));_0x2f4518['attributes']=_0x2f4518[_0xf8a4('0x2e')]['length']?_0x2f4518[_0xf8a4('0x2e')]:_0x15635d[_0xf8a4('0x2a')];if(!_0x2f3110[_0xf8a4('0x2b')][_0xf8a4('0x30')](_0xf8a4('0x31'))){_0x2f4518[_0xf8a4('0x1a')]=qs['limit'](_0x2f3110[_0xf8a4('0x2b')]['limit']);_0x2f4518['offset']=qs['offset'](_0x2f3110['query'][_0xf8a4('0x1c')]);}_0x2f4518[_0xf8a4('0x32')]=qs[_0xf8a4('0x33')](_0x2f3110['query'][_0xf8a4('0x33')]);_0x2f4518['where']=qs['filters'](_['pick'](_0x2f3110['query'],_0x15635d[_0xf8a4('0x2c')]),_0x597f88);if(_0x2f3110[_0xf8a4('0x2b')]['filter']){_0x2f4518[_0xf8a4('0x34')]=_[_0xf8a4('0x35')](_0x2f4518[_0xf8a4('0x34')],{'$or':_['map'](_0x597f88,function(_0x43cc8d){if(_0x43cc8d[_0xf8a4('0x36')]!==_0xf8a4('0x37')){var _0x30f5f4={};_0x30f5f4[_0x43cc8d[_0xf8a4('0x22')]]={'$like':'%'+_0x2f3110[_0xf8a4('0x2b')][_0xf8a4('0x38')]+'%'};return _0x30f5f4;}})});}_0x2f4518=_[_0xf8a4('0x35')]({},_0x2f4518,_0x2f3110[_0xf8a4('0x39')]);var _0xac628b={'where':_0x2f4518[_0xf8a4('0x34')]};return db[_0xf8a4('0x26')][_0xf8a4('0x1b')](_0xac628b)['then'](function(_0x36ea9e){_0x1d7a71[_0xf8a4('0x1b')]=_0x36ea9e;if(_0x2f3110[_0xf8a4('0x2b')][_0xf8a4('0x3a')]){_0x2f4518[_0xf8a4('0x3b')]=[{'all':!![]}];}return db[_0xf8a4('0x26')]['findAll'](_0x2f4518);})[_0xf8a4('0x1f')](function(_0x4837a5){_0x1d7a71[_0xf8a4('0x3c')]=_0x4837a5;return _0x1d7a71;})[_0xf8a4('0x1f')](respondWithFilteredResult(_0x49f238,_0x2f4518))[_0xf8a4('0x3d')](handleError(_0x49f238,null));};exports['show']=function(_0x4eab7d,_0x3012e6){var _0x416030={'raw':!![],'where':{'id':_0x4eab7d[_0xf8a4('0x3e')]['id']}},_0x2e1d73={};_0x2e1d73[_0xf8a4('0x2a')]=_[_0xf8a4('0x3f')](db['VoiceDialReport'][_0xf8a4('0x27')]);_0x2e1d73['query']=_[_0xf8a4('0x3f')](_0x4eab7d[_0xf8a4('0x2b')]);_0x2e1d73[_0xf8a4('0x2c')]=_[_0xf8a4('0x2d')](_0x2e1d73[_0xf8a4('0x2a')],_0x2e1d73[_0xf8a4('0x2b')]);_0x416030['attributes']=_[_0xf8a4('0x2d')](_0x2e1d73[_0xf8a4('0x2a')],qs[_0xf8a4('0x2f')](_0x4eab7d[_0xf8a4('0x2b')]['fields']));_0x416030['attributes']=_0x416030[_0xf8a4('0x2e')][_0xf8a4('0x40')]?_0x416030[_0xf8a4('0x2e')]:_0x2e1d73[_0xf8a4('0x2a')];if(_0x4eab7d[_0xf8a4('0x2b')][_0xf8a4('0x3a')]){_0x416030[_0xf8a4('0x3b')]=[{'all':!![]}];}_0x416030=_[_0xf8a4('0x35')]({},_0x416030,_0x4eab7d['options']);return db[_0xf8a4('0x26')][_0xf8a4('0x41')](_0x416030)['then'](handleEntityNotFound(_0x3012e6,null))[_0xf8a4('0x1f')](respondWithResult(_0x3012e6,null))['catch'](handleError(_0x3012e6,null));};exports[_0xf8a4('0x42')]=function(_0xfe6c85,_0x36611d){return db[_0xf8a4('0x26')][_0xf8a4('0x42')](_0xfe6c85['body'],{})[_0xf8a4('0x1f')](respondWithResult(_0x36611d,0xc9))['catch'](handleError(_0x36611d,null));};exports[_0xf8a4('0x1e')]=function(_0x2b3b9b,_0x293a51){if(_0x2b3b9b[_0xf8a4('0x43')]['id']){delete _0x2b3b9b[_0xf8a4('0x43')]['id'];}return db[_0xf8a4('0x26')][_0xf8a4('0x41')]({'where':{'id':_0x2b3b9b[_0xf8a4('0x3e')]['id']}})['then'](handleEntityNotFound(_0x293a51,null))[_0xf8a4('0x1f')](saveUpdates(_0x2b3b9b['body'],null))[_0xf8a4('0x1f')](respondWithResult(_0x293a51,null))[_0xf8a4('0x3d')](handleError(_0x293a51,null));};exports[_0xf8a4('0x20')]=function(_0x538725,_0x486a53){return db[_0xf8a4('0x26')][_0xf8a4('0x41')]({'where':{'id':_0x538725[_0xf8a4('0x3e')]['id']}})[_0xf8a4('0x1f')](handleEntityNotFound(_0x486a53,null))[_0xf8a4('0x1f')](removeEntity(_0x486a53,null))['catch'](handleError(_0x486a53,null));};exports[_0xf8a4('0x44')]=function(_0x4994dc,_0x4d39e6){return db[_0xf8a4('0x26')]['describe']()[_0xf8a4('0x1f')](respondWithResult(_0x4d39e6,null))[_0xf8a4('0x3d')](handleError(_0x4d39e6,null));};
\ No newline at end of file
index 91aa2e4..34664cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3584=['../../config/logger','api','moment','request-promise','rimraf','exports','define','VoiceDialReport','report_dial','uniqueid','lodash','util'];(function(_0xb51db3,_0x4c09b6){var _0x54ca89=function(_0x5dd7a2){while(--_0x5dd7a2){_0xb51db3['push'](_0xb51db3['shift']());}};_0x54ca89(++_0x4c09b6);}(_0x3584,0x8e));var _0x4358=function(_0x144a20,_0x157db4){_0x144a20=_0x144a20-0x0;var _0x49aca9=_0x3584[_0x144a20];return _0x49aca9;};'use strict';var _=require(_0x4358('0x0'));var util=require(_0x4358('0x1'));var logger=require(_0x4358('0x2'))(_0x4358('0x3'));var moment=require(_0x4358('0x4'));var BPromise=require('bluebird');var rp=require(_0x4358('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4358('0x6'));var config=require('../../config/environment');var attributes=require('./voiceDialReport.attributes');module[_0x4358('0x7')]=function(_0x48e1bd,_0x323abf){return _0x48e1bd[_0x4358('0x8')](_0x4358('0x9'),attributes,{'tableName':_0x4358('0xa'),'paranoid':![],'indexes':[{'fields':[_0x4358('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cde=['VoiceDialReport','report_dial','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./voiceDialReport.attributes','define'];(function(_0x23e337,_0x1e3c57){var _0x45facf=function(_0x2abfa3){while(--_0x2abfa3){_0x23e337['push'](_0x23e337['shift']());}};_0x45facf(++_0x1e3c57);}(_0x1cde,0x1f1));var _0xe1cd=function(_0x12b938,_0x453109){_0x12b938=_0x12b938-0x0;var _0x46093b=_0x1cde[_0x12b938];return _0x46093b;};'use strict';var _=require('lodash');var util=require(_0xe1cd('0x0'));var logger=require(_0xe1cd('0x1'))(_0xe1cd('0x2'));var moment=require(_0xe1cd('0x3'));var BPromise=require(_0xe1cd('0x4'));var rp=require(_0xe1cd('0x5'));var fs=require('fs');var path=require(_0xe1cd('0x6'));var rimraf=require('rimraf');var config=require(_0xe1cd('0x7'));var attributes=require(_0xe1cd('0x8'));module['exports']=function(_0x2d11d3,_0x2580e8){return _0x2d11d3[_0xe1cd('0x9')](_0xe1cd('0xa'),attributes,{'tableName':_0xe1cd('0xb'),'paranoid':![],'indexes':[{'fields':[_0xe1cd('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 76fd2d4..a3d6785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe205=['create','body','options','raw','then','UpdateVoiceDialReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','VoiceDialReport,\x20%s,\x20%s','message','result','catch','CreateVoiceDialReport','VoiceDialReport'];(function(_0xf471e6,_0x11a808){var _0x4464fd=function(_0x2498e2){while(--_0x2498e2){_0xf471e6['push'](_0xf471e6['shift']());}};_0x4464fd(++_0x11a808);}(_0xe205,0x76));var _0x5e20=function(_0x4ffd22,_0x40ae82){_0x4ffd22=_0x4ffd22-0x0;var _0x566b2d=_0xe205[_0x4ffd22];return _0x566b2d;};'use strict';var _=require(_0x5e20('0x0'));var util=require(_0x5e20('0x1'));var moment=require(_0x5e20('0x2'));var BPromise=require(_0x5e20('0x3'));var rs=require(_0x5e20('0x4'));var fs=require('fs');var Redis=require(_0x5e20('0x5'));var db=require(_0x5e20('0x6'))['db'];var utils=require(_0x5e20('0x7'));var logger=require(_0x5e20('0x8'))(_0x5e20('0x9'));var config=require(_0x5e20('0xa'));var jayson=require(_0x5e20('0xb'));var client=jayson[_0x5e20('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x58f6ff,_0x7e578,_0x1df389){return new BPromise(function(_0x3b17be,_0xcc09ff){return client[_0x5e20('0xd')](_0x58f6ff,_0x1df389)['then'](function(_0x23674c){logger[_0x5e20('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x7e578,_0x5e20('0xf'));logger[_0x5e20('0x10')](_0x5e20('0x11'),_0x7e578,_0x5e20('0xf'),JSON[_0x5e20('0x12')](_0x23674c));if(_0x23674c[_0x5e20('0x13')]){if(_0x23674c['error']['code']===0x1f4){logger[_0x5e20('0x13')](_0x5e20('0x14'),_0x7e578,_0x23674c[_0x5e20('0x13')]['message']);return _0xcc09ff(_0x23674c[_0x5e20('0x13')]['message']);}logger[_0x5e20('0x13')](_0x5e20('0x14'),_0x7e578,_0x23674c[_0x5e20('0x13')]['message']);return _0x3b17be(_0x23674c[_0x5e20('0x13')][_0x5e20('0x15')]);}else{logger[_0x5e20('0xe')](_0x5e20('0x14'),_0x7e578,_0x5e20('0xf'));_0x3b17be(_0x23674c[_0x5e20('0x16')][_0x5e20('0x15')]);}})[_0x5e20('0x17')](function(_0x5c42a1){logger[_0x5e20('0x13')](_0x5e20('0x14'),_0x7e578,_0x5c42a1);_0xcc09ff(_0x5c42a1);});});}exports[_0x5e20('0x18')]=function(_0x2f421f){var _0x29fabc=this;return new Promise(function(_0xd172e,_0xff1ac5){return db[_0x5e20('0x19')][_0x5e20('0x1a')](_0x2f421f[_0x5e20('0x1b')],{'raw':_0x2f421f['options']?_0x2f421f[_0x5e20('0x1c')][_0x5e20('0x1d')]===undefined?!![]:![]:!![]})[_0x5e20('0x1e')](function(_0xe84d33){logger[_0x5e20('0xe')](_0x5e20('0x18'),_0x2f421f);logger[_0x5e20('0x10')]('CreateVoiceDialReport',_0x2f421f,JSON['stringify'](_0xe84d33));_0xd172e(_0xe84d33);})['catch'](function(_0x4ab898){logger[_0x5e20('0x13')](_0x5e20('0x18'),_0x4ab898[_0x5e20('0x15')],_0x2f421f);_0xff1ac5(_0x29fabc['error'](0x1f4,_0x4ab898['message']));});});};exports[_0x5e20('0x1f')]=function(_0x47e38e){var _0x1d724a=this;return new Promise(function(_0x415b82,_0x2dedda){return db['VoiceDialReport'][_0x5e20('0x20')](_0x47e38e[_0x5e20('0x1b')],{'raw':_0x47e38e[_0x5e20('0x1c')]?_0x47e38e[_0x5e20('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x47e38e[_0x5e20('0x1c')]?_0x47e38e['options'][_0x5e20('0x21')]||null:null,'attributes':_0x47e38e[_0x5e20('0x1c')]?_0x47e38e[_0x5e20('0x1c')][_0x5e20('0x22')]||null:null,'limit':_0x47e38e[_0x5e20('0x1c')]?_0x47e38e[_0x5e20('0x1c')][_0x5e20('0x23')]||null:null})['then'](function(_0x4d1753){logger[_0x5e20('0xe')](_0x5e20('0x1f'),_0x47e38e);logger[_0x5e20('0x10')](_0x5e20('0x1f'),_0x47e38e,JSON[_0x5e20('0x12')](_0x4d1753));_0x415b82(_0x4d1753);})[_0x5e20('0x17')](function(_0x3595f6){logger[_0x5e20('0x13')]('UpdateVoiceDialReport',_0x3595f6['message'],_0x47e38e);_0x2dedda(_0x1d724a[_0x5e20('0x13')](0x1f4,_0x3595f6[_0x5e20('0x15')]));});});};
\ No newline at end of file
+var _0xd3b0=['CreateVoiceDialReport','VoiceDialReport','create','body','options','UpdateVoiceDialReport','update','raw','where','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xd3b0,0x1f4));var _0x0d3b=function(_0x10c15e,_0x20d272){_0x10c15e=_0x10c15e-0x0;var _0x1c1600=_0xd3b0[_0x10c15e];return _0x1c1600;};'use strict';var _=require(_0x0d3b('0x0'));var util=require(_0x0d3b('0x1'));var moment=require(_0x0d3b('0x2'));var BPromise=require(_0x0d3b('0x3'));var rs=require(_0x0d3b('0x4'));var fs=require('fs');var Redis=require(_0x0d3b('0x5'));var db=require(_0x0d3b('0x6'))['db'];var utils=require(_0x0d3b('0x7'));var logger=require(_0x0d3b('0x8'))(_0x0d3b('0x9'));var config=require(_0x0d3b('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0d3b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3eafc8,_0x2c6f6f,_0x36d0ab){return new BPromise(function(_0xd5d10b,_0x1a0b63){return client[_0x0d3b('0xc')](_0x3eafc8,_0x36d0ab)[_0x0d3b('0xd')](function(_0x51dca2){logger['info'](_0x0d3b('0xe'),_0x2c6f6f,_0x0d3b('0xf'));logger[_0x0d3b('0x10')](_0x0d3b('0x11'),_0x2c6f6f,_0x0d3b('0xf'),JSON[_0x0d3b('0x12')](_0x51dca2));if(_0x51dca2[_0x0d3b('0x13')]){if(_0x51dca2[_0x0d3b('0x13')][_0x0d3b('0x14')]===0x1f4){logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x2c6f6f,_0x51dca2[_0x0d3b('0x13')]['message']);return _0x1a0b63(_0x51dca2[_0x0d3b('0x13')][_0x0d3b('0x15')]);}logger['error'](_0x0d3b('0xe'),_0x2c6f6f,_0x51dca2['error'][_0x0d3b('0x15')]);return _0xd5d10b(_0x51dca2[_0x0d3b('0x13')]['message']);}else{logger[_0x0d3b('0x16')](_0x0d3b('0xe'),_0x2c6f6f,'request\x20sent');_0xd5d10b(_0x51dca2[_0x0d3b('0x17')][_0x0d3b('0x15')]);}})[_0x0d3b('0x18')](function(_0x329f2c){logger[_0x0d3b('0x13')](_0x0d3b('0xe'),_0x2c6f6f,_0x329f2c);_0x1a0b63(_0x329f2c);});});}exports[_0x0d3b('0x19')]=function(_0x47cd07){var _0xe34a8c=this;return new Promise(function(_0x3283c0,_0x7e1af5){return db[_0x0d3b('0x1a')][_0x0d3b('0x1b')](_0x47cd07[_0x0d3b('0x1c')],{'raw':_0x47cd07[_0x0d3b('0x1d')]?_0x47cd07[_0x0d3b('0x1d')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xb3be12){logger['info'](_0x0d3b('0x19'),_0x47cd07);logger[_0x0d3b('0x10')](_0x0d3b('0x19'),_0x47cd07,JSON[_0x0d3b('0x12')](_0xb3be12));_0x3283c0(_0xb3be12);})[_0x0d3b('0x18')](function(_0x300c44){logger['error'](_0x0d3b('0x19'),_0x300c44[_0x0d3b('0x15')],_0x47cd07);_0x7e1af5(_0xe34a8c[_0x0d3b('0x13')](0x1f4,_0x300c44[_0x0d3b('0x15')]));});});};exports[_0x0d3b('0x1e')]=function(_0x2eb6a1){var _0x13acf8=this;return new Promise(function(_0x539f6a,_0xac6bab){return db['VoiceDialReport'][_0x0d3b('0x1f')](_0x2eb6a1[_0x0d3b('0x1c')],{'raw':_0x2eb6a1['options']?_0x2eb6a1['options'][_0x0d3b('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2eb6a1[_0x0d3b('0x1d')]?_0x2eb6a1[_0x0d3b('0x1d')][_0x0d3b('0x21')]||null:null,'attributes':_0x2eb6a1[_0x0d3b('0x1d')]?_0x2eb6a1[_0x0d3b('0x1d')]['attributes']||null:null,'limit':_0x2eb6a1[_0x0d3b('0x1d')]?_0x2eb6a1[_0x0d3b('0x1d')][_0x0d3b('0x22')]||null:null})['then'](function(_0x5d8212){logger[_0x0d3b('0x16')](_0x0d3b('0x1e'),_0x2eb6a1);logger[_0x0d3b('0x10')](_0x0d3b('0x1e'),_0x2eb6a1,JSON[_0x0d3b('0x12')](_0x5d8212));_0x539f6a(_0x5d8212);})[_0x0d3b('0x18')](function(_0x21f422){logger[_0x0d3b('0x13')]('UpdateVoiceDialReport',_0x21f422[_0x0d3b('0x15')],_0x2eb6a1);_0xac6bab(_0x13acf8[_0x0d3b('0x13')](0x1f4,_0x21f422[_0x0d3b('0x15')]));});});};
\ No newline at end of file
index 9387225..023d9a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5658=['./voiceExtension.controller','get','isAuthenticated','index','show','post','/:id/applications','addApplications','put','/:id','delete','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x31591e,_0xaf8b47){var _0x3e8b62=function(_0x233e83){while(--_0x233e83){_0x31591e['push'](_0x31591e['shift']());}};_0x3e8b62(++_0xaf8b47);}(_0x5658,0x1d6));var _0x8565=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x5658[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0x8565('0x0'));var util=require('util');var path=require(_0x8565('0x1'));var timeout=require(_0x8565('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8565('0x3'));var auth=require(_0x8565('0x4'));var interaction=require(_0x8565('0x5'));var config=require('../../config/environment');var controller=require(_0x8565('0x6'));router[_0x8565('0x7')]('/',auth[_0x8565('0x8')](),controller[_0x8565('0x9')]);router[_0x8565('0x7')]('/:id',auth[_0x8565('0x8')](),controller[_0x8565('0xa')]);router[_0x8565('0xb')]('/',auth[_0x8565('0x8')](),controller['create']);router[_0x8565('0xb')](_0x8565('0xc'),auth[_0x8565('0x8')](),controller[_0x8565('0xd')]);router[_0x8565('0xe')](_0x8565('0xf'),auth[_0x8565('0x8')](),controller['update']);router[_0x8565('0x10')](_0x8565('0xf'),auth[_0x8565('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x8166=['post','create','/:id/applications','addApplications','update','util','path','connect-timeout','express','Router','./voiceExtension.controller','isAuthenticated','index','get','/:id','show'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x8166,0x135));var _0x6816=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0x8166[_0x3e44fa];return _0x2a0aba;};'use strict';var multer=require('multer');var util=require(_0x6816('0x0'));var path=require(_0x6816('0x1'));var timeout=require(_0x6816('0x2'));var express=require(_0x6816('0x3'));var router=express[_0x6816('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(_0x6816('0x5'));router['get']('/',auth[_0x6816('0x6')](),controller[_0x6816('0x7')]);router[_0x6816('0x8')](_0x6816('0x9'),auth[_0x6816('0x6')](),controller[_0x6816('0xa')]);router[_0x6816('0xb')]('/',auth['isAuthenticated'](),controller[_0x6816('0xc')]);router[_0x6816('0xb')](_0x6816('0xd'),auth[_0x6816('0x6')](),controller[_0x6816('0xe')]);router['put'](_0x6816('0x9'),auth[_0x6816('0x6')](),controller[_0x6816('0xf')]);router['delete'](_0x6816('0x9'),auth[_0x6816('0x6')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9d63c2d..2593745 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51a6=['system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exten','sequelize','exports','STRING','compositeIndex','NoOp','inbound','outbound','internal','inbound-fax'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x51a6,0x14d));var _0x651a=function(_0x45a7a6,_0x380289){_0x45a7a6=_0x45a7a6-0x0;var _0x514f51=_0x51a6[_0x45a7a6];return _0x514f51;};'use strict';var Sequelize=require(_0x651a('0x0'));module[_0x651a('0x1')]={'context':{'type':Sequelize[_0x651a('0x2')],'allowNull':![],'unique':_0x651a('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x651a('0x2')],'allowNull':![],'unique':_0x651a('0x3')},'priority':{'type':Sequelize[_0x651a('0x2')],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0x651a('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x651a('0x2')],'allowNull':![],'defaultValue':_0x651a('0x4')},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0x651a('0x5'),_0x651a('0x6'),_0x651a('0x7'),_0x651a('0x8'),'outbound-fax',_0x651a('0x9'),_0x651a('0xa')),'allowNull':![]},'description':{'type':Sequelize[_0x651a('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x651a('0xb')},'IntervalId':{'type':Sequelize[_0x651a('0xc')]},'isApp':{'type':Sequelize[_0x651a('0xd')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize[_0x651a('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0x651a('0xd')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0x651a('0x2')],'defaultValue':_0x651a('0xe')},'answer':{'type':Sequelize[_0x651a('0xd')],'defaultValue':!![]},'name':{'type':Sequelize[_0x651a('0xf')],'get':function(_0x5b70aa){return this[_0x651a('0x10')](_0x651a('0x11'));}},'alias':{'type':Sequelize[_0x651a('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x64da=['exten','sequelize','exports','STRING','compositeIndex','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue'];(function(_0x13c946,_0x59c790){var _0x40d568=function(_0x2ffe80){while(--_0x2ffe80){_0x13c946['push'](_0x13c946['shift']());}};_0x40d568(++_0x59c790);}(_0x64da,0x131));var _0xa64d=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x64da[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require(_0xa64d('0x0'));module[_0xa64d('0x1')]={'context':{'type':Sequelize[_0xa64d('0x2')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa64d('0x3')},'priority':{'type':Sequelize[_0xa64d('0x2')],'allowNull':![],'defaultValue':'1','unique':_0xa64d('0x3')},'tag':{'type':Sequelize[_0xa64d('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xa64d('0x2')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xa64d('0x4')](_0xa64d('0x5'),_0xa64d('0x6'),_0xa64d('0x7'),_0xa64d('0x8'),_0xa64d('0x9'),_0xa64d('0xa'),_0xa64d('0xb')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xa64d('0xc')},'IntervalId':{'type':Sequelize[_0xa64d('0xd')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize[_0xa64d('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0xa64d('0xe')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xa64d('0xd')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0xa64d('0xf')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0xa64d('0x10')],'get':function(_0x112406){return this[_0xa64d('0x11')](_0xa64d('0x12'));}},'alias':{'type':Sequelize[_0xa64d('0x2')],'allowNull':!![]}};
\ No newline at end of file
index e5768f0..c7ddc95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb2b=['status','end','offset','undefined','count','set','Content-Range','json','destroy','InboundRoutes','inbound','InternalRoutes','internal','map','value','includes','type','name','then','error','stack','VoiceExtension','rawAttributes','fieldName','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','outbound','startsWith','exten','concat','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OutboundRoutes','UserProfileSection','userProfileId','autoAssociation','update','recordingFormat','mandatoryDisposition','alias','findOne','sequelize','VoiceExtensionId','isApp','createRouting','log','bulkCreate','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus'];(function(_0x2aaf47,_0x23d0f6){var _0x449351=function(_0x34a1f9){while(--_0x34a1f9){_0x2aaf47['push'](_0x2aaf47['shift']());}};_0x449351(++_0x23d0f6);}(_0xdb2b,0xa2));var _0xbdb2=function(_0x49f856,_0x26dc54){_0x49f856=_0x49f856-0x0;var _0x1bacb6=_0xdb2b[_0x49f856];return _0x1bacb6;};'use strict';var _=require(_0xbdb2('0x0'));var Redis=require('ioredis');var qs=require(_0xbdb2('0x1'));var logger=require(_0xbdb2('0x2'))(_0xbdb2('0x3'));var config=require(_0xbdb2('0x4'));var db=require(_0xbdb2('0x5'))['db'];config[_0xbdb2('0x6')]=_[_0xbdb2('0x7')](config[_0xbdb2('0x6')],{'host':_0xbdb2('0x8'),'port':0x18eb});var socket=require(_0xbdb2('0x9'))(new Redis(config[_0xbdb2('0x6')]));require(_0xbdb2('0xa'))['register'](socket);function respondWithStatusCode(_0x51fc95,_0x762443){_0x762443=_0x762443||0xcc;return function(_0x40717f){if(_0x40717f){return _0x51fc95[_0xbdb2('0xb')](_0x762443);}return _0x51fc95[_0xbdb2('0xc')](_0x762443)[_0xbdb2('0xd')]();};}function respondWithResult(_0x19839f,_0x4cbf3b){_0x4cbf3b=_0x4cbf3b||0xc8;return function(_0xeae40){if(_0xeae40){return _0x19839f[_0xbdb2('0xc')](_0x4cbf3b)['json'](_0xeae40);}};}function respondWithFilteredResult(_0x209b90,_0x1f1c2e){return function(_0x5b9af3){if(_0x5b9af3){var _0x3fcedd=typeof _0x1f1c2e[_0xbdb2('0xe')]===_0xbdb2('0xf')&&typeof _0x1f1c2e['limit']===_0xbdb2('0xf');var _0xb5cd89=_0x5b9af3[_0xbdb2('0x10')];var _0x37bcbf=_0x3fcedd?0x0:_0x1f1c2e['offset'];var _0x3acd95=_0x3fcedd?_0x5b9af3[_0xbdb2('0x10')]:_0x1f1c2e['offset']+_0x1f1c2e['limit'];var _0x18f32f;if(_0x3acd95>=_0xb5cd89){_0x3acd95=_0xb5cd89;_0x18f32f=0xc8;}else{_0x18f32f=0xce;}_0x209b90[_0xbdb2('0xc')](_0x18f32f);return _0x209b90[_0xbdb2('0x11')](_0xbdb2('0x12'),_0x37bcbf+'-'+_0x3acd95+'/'+_0xb5cd89)[_0xbdb2('0x13')](_0x5b9af3);}return null;};}function removeEntity(_0xc38bda){return function(_0x197822){if(_0x197822){return _0x197822[_0xbdb2('0x14')]()['then'](function(){var _0x3ef558=_0x197822['get']({'plain':!![]});var _0x2a8ec8=[{'name':_0xbdb2('0x15'),'value':_0xbdb2('0x16'),'ignore':![]},{'name':'OutboundRoutes','value':'outbound','ignore':![]},{'name':_0xbdb2('0x17'),'value':_0xbdb2('0x18'),'ignore':![]}];var _0x5619e8=_(_0x2a8ec8)['filter']('ignore')[_0xbdb2('0x19')](_0xbdb2('0x1a'))[_0xbdb2('0x1a')]();if(_[_0xbdb2('0x1b')](_0x5619e8,_0x3ef558[_0xbdb2('0x1c')])){return;}var _0xd8f80c=_['find'](_0x2a8ec8,[_0xbdb2('0x1a'),_0x3ef558['type']])[_0xbdb2('0x1d')];return db['UserProfileResource'][_0xbdb2('0x14')]({'where':{'type':_0xd8f80c,'resourceId':_0x3ef558['id']}})[_0xbdb2('0x1e')](function(){return _0x197822;});})['then'](function(){_0xc38bda[_0xbdb2('0xc')](0xcc)[_0xbdb2('0xd')]();});}};}function handleEntityNotFound(_0x48a477){return function(_0x4481d5){if(!_0x4481d5){_0x48a477[_0xbdb2('0xb')](0x194);}return _0x4481d5;};}function handleError(_0xdbfbbb,_0x48dc74){_0x48dc74=_0x48dc74||0x1f4;return function(_0x560feb){logger[_0xbdb2('0x1f')](_0x560feb[_0xbdb2('0x20')]);if(_0x560feb['name']){delete _0x560feb[_0xbdb2('0x1d')];}_0xdbfbbb[_0xbdb2('0xc')](_0x48dc74)['send'](_0x560feb);};}exports['index']=function(_0x4bb221,_0x50d69b){var _0x596704={},_0x45d1a1={},_0x442b94={'count':0x0,'rows':[]};var _0x121312=_['map'](db[_0xbdb2('0x21')][_0xbdb2('0x22')],function(_0x1ad65a){return{'name':_0x1ad65a[_0xbdb2('0x23')],'type':_0x1ad65a['type']['key']};});_0x45d1a1['model']=_['map'](_0x121312,_0xbdb2('0x1d'));_0x45d1a1[_0xbdb2('0x24')]=_[_0xbdb2('0x25')](_0x4bb221[_0xbdb2('0x24')]);_0x45d1a1[_0xbdb2('0x26')]=_[_0xbdb2('0x27')](_0x45d1a1['model'],_0x45d1a1['query']);_0x596704[_0xbdb2('0x28')]=_[_0xbdb2('0x27')](_0x45d1a1[_0xbdb2('0x29')],qs[_0xbdb2('0x2a')](_0x4bb221['query'][_0xbdb2('0x2a')]));_0x596704[_0xbdb2('0x28')]=_0x596704[_0xbdb2('0x28')][_0xbdb2('0x2b')]?_0x596704['attributes']:_0x45d1a1[_0xbdb2('0x29')];if(!_0x4bb221[_0xbdb2('0x24')][_0xbdb2('0x2c')](_0xbdb2('0x2d'))){_0x596704[_0xbdb2('0x2e')]=qs[_0xbdb2('0x2e')](_0x4bb221[_0xbdb2('0x24')]['limit']);_0x596704[_0xbdb2('0xe')]=qs['offset'](_0x4bb221[_0xbdb2('0x24')][_0xbdb2('0xe')]);}_0x596704[_0xbdb2('0x2f')]=qs[_0xbdb2('0x30')](_0x4bb221[_0xbdb2('0x24')][_0xbdb2('0x30')]);_0x596704['where']=qs[_0xbdb2('0x26')](_[_0xbdb2('0x31')](_0x4bb221[_0xbdb2('0x24')],_0x45d1a1['filters']),_0x121312);if(_0x4bb221['query'][_0xbdb2('0x32')]){_0x596704[_0xbdb2('0x33')]=_['merge'](_0x596704[_0xbdb2('0x33')],{'$or':_[_0xbdb2('0x19')](_0x121312,function(_0xf3b945){if(_0xf3b945[_0xbdb2('0x1c')]!=='VIRTUAL'){var _0x53f7e5={};_0x53f7e5[_0xf3b945[_0xbdb2('0x1d')]]={'$like':'%'+_0x4bb221[_0xbdb2('0x24')]['filter']+'%'};return _0x53f7e5;}})});}_0x596704=_[_0xbdb2('0x34')]({},_0x596704,_0x4bb221[_0xbdb2('0x35')]);var _0x33e735={'where':_0x596704[_0xbdb2('0x33')]};return db['VoiceExtension'][_0xbdb2('0x10')](_0x33e735)[_0xbdb2('0x1e')](function(_0x3b4b09){_0x442b94['count']=_0x3b4b09;if(_0x4bb221[_0xbdb2('0x24')]['includeAll']){_0x596704[_0xbdb2('0x36')]=[{'all':!![]}];}return db[_0xbdb2('0x21')][_0xbdb2('0x37')](_0x596704);})['then'](function(_0x169a21){_0x442b94[_0xbdb2('0x38')]=_0x169a21;return _0x442b94;})[_0xbdb2('0x1e')](respondWithFilteredResult(_0x50d69b,_0x596704))[_0xbdb2('0x39')](handleError(_0x50d69b,null));};exports[_0xbdb2('0x3a')]=function(_0x36fba6,_0x272447){var _0x4e7b17={'raw':![],'where':{'id':_0x36fba6[_0xbdb2('0x3b')]['id']}},_0x37ec13={};_0x37ec13['model']=_['keys'](db[_0xbdb2('0x21')][_0xbdb2('0x22')]);_0x37ec13[_0xbdb2('0x24')]=_[_0xbdb2('0x25')](_0x36fba6[_0xbdb2('0x24')]);_0x37ec13[_0xbdb2('0x26')]=_[_0xbdb2('0x27')](_0x37ec13['model'],_0x37ec13['query']);_0x4e7b17['attributes']=_[_0xbdb2('0x27')](_0x37ec13[_0xbdb2('0x29')],qs['fields'](_0x36fba6[_0xbdb2('0x24')][_0xbdb2('0x2a')]));_0x4e7b17[_0xbdb2('0x28')]=_0x4e7b17[_0xbdb2('0x28')][_0xbdb2('0x2b')]?_0x4e7b17['attributes']:_0x37ec13['model'];if(_0x36fba6[_0xbdb2('0x24')][_0xbdb2('0x3c')]){_0x4e7b17['include']=[{'all':!![]}];}_0x4e7b17=_['merge']({},_0x4e7b17,_0x36fba6[_0xbdb2('0x35')]);return db[_0xbdb2('0x21')][_0xbdb2('0x3d')](_0x4e7b17)[_0xbdb2('0x1e')](handleEntityNotFound(_0x272447,null))[_0xbdb2('0x1e')](respondWithResult(_0x272447,null))[_0xbdb2('0x39')](handleError(_0x272447,null));};exports['destroy']=function(_0x13cd6b,_0x114085){return db['VoiceExtension'][_0xbdb2('0x3d')]({'where':{'id':_0x13cd6b[_0xbdb2('0x3b')]['id']}})[_0xbdb2('0x1e')](handleEntityNotFound(_0x114085,null))['then'](removeEntity(_0x114085,null))['catch'](handleError(_0x114085,null));};exports[_0xbdb2('0x3e')]=function(_0x105582,_0x447f73){if(_0x105582[_0xbdb2('0x3f')][_0xbdb2('0x1c')]===_0xbdb2('0x40')&&!_[_0xbdb2('0x41')](_0x105582['body'][_0xbdb2('0x42')],'_')){_0x105582[_0xbdb2('0x3f')][_0xbdb2('0x42')]='_'[_0xbdb2('0x43')](_0x105582['body']['exten']);}return db[_0xbdb2('0x21')][_0xbdb2('0x3e')](_0x105582[_0xbdb2('0x3f')],{'raw':![]})['then'](function(_0x227a6b){var _0x17b8b2=_0x105582[_0xbdb2('0x44')][_0xbdb2('0x45')]({'plain':!![]});if(!_0x17b8b2)throw new Error(_0xbdb2('0x46'));if(_0x17b8b2[_0xbdb2('0x47')]===_0xbdb2('0x44')){var _0x108c02=_0x227a6b[_0xbdb2('0x45')]({'plain':!![]});var _0x12130b=[{'name':'InboundRoutes','value':'inbound'},{'name':_0xbdb2('0x48'),'value':_0xbdb2('0x40')},{'name':_0xbdb2('0x17'),'value':_0xbdb2('0x18')}];var _0x277dfe=_[_0xbdb2('0x3d')](_0x12130b,[_0xbdb2('0x1a'),_0x108c02['type']])[_0xbdb2('0x1d')];return db[_0xbdb2('0x49')][_0xbdb2('0x3d')]({'where':{'name':_0x277dfe,'userProfileId':_0x17b8b2[_0xbdb2('0x4a')]},'raw':!![]})[_0xbdb2('0x1e')](function(_0x285131){if(_0x285131&&_0x285131[_0xbdb2('0x4b')]===0x0){return db['UserProfileResource'][_0xbdb2('0x3e')]({'name':_0x108c02[_0xbdb2('0x1d')],'resourceId':_0x108c02['id'],'type':_0x285131[_0xbdb2('0x1d')],'sectionId':_0x285131['id']},{})[_0xbdb2('0x1e')](function(){return _0x227a6b;});}else{return _0x227a6b;}})['catch'](function(_0x46fd2b){logger[_0xbdb2('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x46fd2b);throw _0x46fd2b;});}return _0x227a6b;})[_0xbdb2('0x1e')](respondWithResult(_0x447f73,0xc9))['catch'](handleError(_0x447f73,null));};exports[_0xbdb2('0x4c')]=function(_0x650f76,_0x1329ff){if(_0x650f76[_0xbdb2('0x3f')]['id']){delete _0x650f76['body']['id'];}return db[_0xbdb2('0x21')][_0xbdb2('0x3d')]({'where':{'id':_0x650f76[_0xbdb2('0x3b')]['id']}})[_0xbdb2('0x1e')](handleEntityNotFound(_0x1329ff,null))[_0xbdb2('0x1e')](function(_0x4b8ab6){if(_0x4b8ab6){return db['VoiceExtension']['update'](_[_0xbdb2('0x31')](_0x650f76[_0xbdb2('0x3f')],[_0xbdb2('0x42'),'context','description',_0xbdb2('0x4d'),'cutdigits',_0xbdb2('0x4e'),_0xbdb2('0x4f')]),{'where':{'context':_0x4b8ab6['context'],'exten':_0x4b8ab6[_0xbdb2('0x42')]},'individualHooks':!![]})[_0xbdb2('0x1e')](function(_0xfcd0a7){return _0xfcd0a7;});}return null;})['then'](respondWithStatusCode(_0x1329ff,null))[_0xbdb2('0x39')](handleError(_0x1329ff,null));};exports['addApplications']=function(_0x344da5,_0x2f5a36){return db[_0xbdb2('0x21')][_0xbdb2('0x50')]({'where':{'id':_0x344da5['params']['id']}})[_0xbdb2('0x1e')](function(_0xd017fb){if(_0xd017fb){return db[_0xbdb2('0x51')]['transaction'](function(_0x3a677a){return db[_0xbdb2('0x21')][_0xbdb2('0x14')]({'where':{'VoiceExtensionId':_0x344da5[_0xbdb2('0x3b')]['id']},'transaction':_0x3a677a})[_0xbdb2('0x1e')](function(){var _0x3b8126=_['map'](_0x344da5['body'],function(_0x18c488){_0x18c488[_0xbdb2('0x52')]=_0x344da5[_0xbdb2('0x3b')]['id'];_0x18c488[_0xbdb2('0x53')]=!![];return _0x18c488;});return _0xd017fb[_0xbdb2('0x54')](_0x3b8126);})[_0xbdb2('0x1e')](function(_0x26db6c){console[_0xbdb2('0x55')]('LOG\x20~\x20.then\x20~\x20routing',_0x26db6c);return db[_0xbdb2('0x21')][_0xbdb2('0x56')](_0x26db6c,{'transaction':_0x3a677a});});})[_0xbdb2('0x1e')](function(){return db[_0xbdb2('0x21')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x344da5['params']['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})['then'](respondWithResult(_0x2f5a36,null))['catch'](handleError(_0x2f5a36,null));};
\ No newline at end of file
+var _0x1a71=['map','value','includes','type','name','UserProfileResource','error','stack','send','index','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','OutboundRoutes','InternalRoutes','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','sequelize','transaction','VoiceExtensionId','isApp','rewriteDial','toLowerCase','createRouting','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','./voiceExtension.socket','register','end','undefined','limit','count','offset','status','set','Content-Range','json','update','then','destroy','get','InboundRoutes','inbound','outbound','internal','filter','ignore'];(function(_0x41273c,_0x4c0c04){var _0x453ce4=function(_0x5504e9){while(--_0x5504e9){_0x41273c['push'](_0x41273c['shift']());}};_0x453ce4(++_0x4c0c04);}(_0x1a71,0xb9));var _0x11a7=function(_0xd49d86,_0x426071){_0xd49d86=_0xd49d86-0x0;var _0x12cd0b=_0x1a71[_0xd49d86];return _0x12cd0b;};'use strict';var emlformat=require(_0x11a7('0x0'));var rimraf=require(_0x11a7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x11a7('0x2'));var rp=require(_0x11a7('0x3'));var moment=require(_0x11a7('0x4'));var BPromise=require(_0x11a7('0x5'));var Mustache=require(_0x11a7('0x6'));var util=require(_0x11a7('0x7'));var path=require(_0x11a7('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x11a7('0x9'));var fs=require('fs');var fs_extra=require(_0x11a7('0xa'));var _=require(_0x11a7('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x11a7('0xc'));var deskjs=require(_0x11a7('0xd'));var toCsv=require(_0x11a7('0xe'));var querystring=require(_0x11a7('0xf'));var Papa=require('papaparse');var Redis=require(_0x11a7('0x10'));var authService=require(_0x11a7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x11a7('0x12'));var hardwareService=require(_0x11a7('0x13'));var logger=require(_0x11a7('0x14'))(_0x11a7('0x15'));var utils=require(_0x11a7('0x16'));var config=require(_0x11a7('0x17'));var licenseUtil=require(_0x11a7('0x18'));var db=require(_0x11a7('0x19'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x11a7('0x1a'),'port':0x18eb});var socket=require(_0x11a7('0x1b'))(new Redis(config['redis']));require(_0x11a7('0x1c'))[_0x11a7('0x1d')](socket);function respondWithStatusCode(_0x36a105,_0xe98242){_0xe98242=_0xe98242||0xcc;return function(_0x5a97af){if(_0x5a97af){return _0x36a105['sendStatus'](_0xe98242);}return _0x36a105['status'](_0xe98242)[_0x11a7('0x1e')]();};}function respondWithResult(_0x4b9470,_0x590622){_0x590622=_0x590622||0xc8;return function(_0x48a60c){if(_0x48a60c){return _0x4b9470['status'](_0x590622)['json'](_0x48a60c);}};}function respondWithFilteredResult(_0x4de031,_0xcf0585){return function(_0x1dc459){if(_0x1dc459){var _0x56a70c=typeof _0xcf0585['offset']===_0x11a7('0x1f')&&typeof _0xcf0585[_0x11a7('0x20')]==='undefined';var _0x5a0802=_0x1dc459[_0x11a7('0x21')];var _0x51a8df=_0x56a70c?0x0:_0xcf0585['offset'];var _0x3bd89b=_0x56a70c?_0x1dc459['count']:_0xcf0585[_0x11a7('0x22')]+_0xcf0585[_0x11a7('0x20')];var _0x2e08a6;if(_0x3bd89b>=_0x5a0802){_0x3bd89b=_0x5a0802;_0x2e08a6=0xc8;}else{_0x2e08a6=0xce;}_0x4de031[_0x11a7('0x23')](_0x2e08a6);return _0x4de031[_0x11a7('0x24')](_0x11a7('0x25'),_0x51a8df+'-'+_0x3bd89b+'/'+_0x5a0802)[_0x11a7('0x26')](_0x1dc459);}return null;};}function patchUpdates(_0x23a4fb){return function(_0xa40a4a){try{jsonpatch['apply'](_0xa40a4a,_0x23a4fb,!![]);}catch(_0x52b755){return BPromise['reject'](_0x52b755);}return _0xa40a4a['save']();};}function saveUpdates(_0x1fc253,_0x1c2aaa){return function(_0x3f5ca8){if(_0x3f5ca8){return _0x3f5ca8[_0x11a7('0x27')](_0x1fc253)[_0x11a7('0x28')](function(_0x4ea62f){return _0x4ea62f;});}return null;};}function removeEntity(_0x10d55a,_0x146742){return function(_0x4a9bd3){if(_0x4a9bd3){return _0x4a9bd3[_0x11a7('0x29')]()[_0x11a7('0x28')](function(){var _0x271aa9=_0x4a9bd3[_0x11a7('0x2a')]({'plain':!![]});var _0x3e2bfb=[{'name':_0x11a7('0x2b'),'value':_0x11a7('0x2c'),'ignore':![]},{'name':'OutboundRoutes','value':_0x11a7('0x2d'),'ignore':![]},{'name':'InternalRoutes','value':_0x11a7('0x2e'),'ignore':![]}];var _0x30131b=_(_0x3e2bfb)[_0x11a7('0x2f')](_0x11a7('0x30'))[_0x11a7('0x31')](_0x11a7('0x32'))[_0x11a7('0x32')]();if(_[_0x11a7('0x33')](_0x30131b,_0x271aa9['type'])){return;}var _0x46b01e=_['find'](_0x3e2bfb,[_0x11a7('0x32'),_0x271aa9[_0x11a7('0x34')]])[_0x11a7('0x35')];return db[_0x11a7('0x36')][_0x11a7('0x29')]({'where':{'type':_0x46b01e,'resourceId':_0x271aa9['id']}})['then'](function(){return _0x4a9bd3;});})['then'](function(){_0x10d55a[_0x11a7('0x23')](0xcc)[_0x11a7('0x1e')]();});}};}function handleEntityNotFound(_0x105379,_0x113c1a){return function(_0x1244e2){if(!_0x1244e2){_0x105379['sendStatus'](0x194);}return _0x1244e2;};}function handleError(_0x2a1049,_0x5e5511){_0x5e5511=_0x5e5511||0x1f4;return function(_0x43b1bb){logger[_0x11a7('0x37')](_0x43b1bb[_0x11a7('0x38')]);if(_0x43b1bb['name']){delete _0x43b1bb[_0x11a7('0x35')];}_0x2a1049[_0x11a7('0x23')](_0x5e5511)[_0x11a7('0x39')](_0x43b1bb);};}exports[_0x11a7('0x3a')]=function(_0x16e69d,_0x2f6dc6){var _0x260c63={},_0x1412c2={},_0x55282e={'count':0x0,'rows':[]};var _0x3d269f=_[_0x11a7('0x31')](db[_0x11a7('0x3b')][_0x11a7('0x3c')],function(_0x544810){return{'name':_0x544810[_0x11a7('0x3d')],'type':_0x544810[_0x11a7('0x34')][_0x11a7('0x3e')]};});_0x1412c2[_0x11a7('0x3f')]=_[_0x11a7('0x31')](_0x3d269f,'name');_0x1412c2[_0x11a7('0x40')]=_[_0x11a7('0x41')](_0x16e69d[_0x11a7('0x40')]);_0x1412c2['filters']=_[_0x11a7('0x42')](_0x1412c2['model'],_0x1412c2[_0x11a7('0x40')]);_0x260c63['attributes']=_[_0x11a7('0x42')](_0x1412c2[_0x11a7('0x3f')],qs[_0x11a7('0x43')](_0x16e69d[_0x11a7('0x40')][_0x11a7('0x43')]));_0x260c63[_0x11a7('0x44')]=_0x260c63[_0x11a7('0x44')][_0x11a7('0x45')]?_0x260c63['attributes']:_0x1412c2[_0x11a7('0x3f')];if(!_0x16e69d[_0x11a7('0x40')][_0x11a7('0x46')](_0x11a7('0x47'))){_0x260c63[_0x11a7('0x20')]=qs[_0x11a7('0x20')](_0x16e69d[_0x11a7('0x40')][_0x11a7('0x20')]);_0x260c63['offset']=qs[_0x11a7('0x22')](_0x16e69d[_0x11a7('0x40')][_0x11a7('0x22')]);}_0x260c63[_0x11a7('0x48')]=qs[_0x11a7('0x49')](_0x16e69d[_0x11a7('0x40')][_0x11a7('0x49')]);_0x260c63[_0x11a7('0x4a')]=qs[_0x11a7('0x4b')](_[_0x11a7('0x4c')](_0x16e69d[_0x11a7('0x40')],_0x1412c2[_0x11a7('0x4b')]),_0x3d269f);if(_0x16e69d['query'][_0x11a7('0x2f')]){_0x260c63['where']=_['merge'](_0x260c63[_0x11a7('0x4a')],{'$or':_[_0x11a7('0x31')](_0x3d269f,function(_0x2109bd){if(_0x2109bd[_0x11a7('0x34')]!==_0x11a7('0x4d')){var _0x5b6c1f={};_0x5b6c1f[_0x2109bd[_0x11a7('0x35')]]={'$like':'%'+_0x16e69d[_0x11a7('0x40')][_0x11a7('0x2f')]+'%'};return _0x5b6c1f;}})});}_0x260c63=_[_0x11a7('0x4e')]({},_0x260c63,_0x16e69d[_0x11a7('0x4f')]);var _0xa0add7={'where':_0x260c63[_0x11a7('0x4a')]};return db['VoiceExtension']['count'](_0xa0add7)[_0x11a7('0x28')](function(_0x4a3ca6){_0x55282e[_0x11a7('0x21')]=_0x4a3ca6;if(_0x16e69d['query'][_0x11a7('0x50')]){_0x260c63[_0x11a7('0x51')]=[{'all':!![]}];}return db['VoiceExtension'][_0x11a7('0x52')](_0x260c63);})[_0x11a7('0x28')](function(_0x40e830){_0x55282e[_0x11a7('0x53')]=_0x40e830;return _0x55282e;})['then'](respondWithFilteredResult(_0x2f6dc6,_0x260c63))[_0x11a7('0x54')](handleError(_0x2f6dc6,null));};exports[_0x11a7('0x55')]=function(_0x2dfb2a,_0x1f47b8){var _0x1925fb={'raw':![],'where':{'id':_0x2dfb2a[_0x11a7('0x56')]['id']}},_0x4e1e97={};_0x4e1e97['model']=_[_0x11a7('0x41')](db[_0x11a7('0x3b')][_0x11a7('0x3c')]);_0x4e1e97[_0x11a7('0x40')]=_[_0x11a7('0x41')](_0x2dfb2a['query']);_0x4e1e97[_0x11a7('0x4b')]=_[_0x11a7('0x42')](_0x4e1e97[_0x11a7('0x3f')],_0x4e1e97[_0x11a7('0x40')]);_0x1925fb['attributes']=_[_0x11a7('0x42')](_0x4e1e97[_0x11a7('0x3f')],qs[_0x11a7('0x43')](_0x2dfb2a[_0x11a7('0x40')][_0x11a7('0x43')]));_0x1925fb[_0x11a7('0x44')]=_0x1925fb[_0x11a7('0x44')][_0x11a7('0x45')]?_0x1925fb['attributes']:_0x4e1e97[_0x11a7('0x3f')];if(_0x2dfb2a[_0x11a7('0x40')][_0x11a7('0x50')]){_0x1925fb[_0x11a7('0x51')]=[{'all':!![]}];}_0x1925fb=_['merge']({},_0x1925fb,_0x2dfb2a[_0x11a7('0x4f')]);return db[_0x11a7('0x3b')][_0x11a7('0x57')](_0x1925fb)['then'](handleEntityNotFound(_0x1f47b8,null))[_0x11a7('0x28')](respondWithResult(_0x1f47b8,null))[_0x11a7('0x54')](handleError(_0x1f47b8,null));};exports['destroy']=function(_0xee2885,_0x2e3c32){return db['VoiceExtension']['find']({'where':{'id':_0xee2885['params']['id']}})[_0x11a7('0x28')](handleEntityNotFound(_0x2e3c32,null))[_0x11a7('0x28')](removeEntity(_0x2e3c32,null))['catch'](handleError(_0x2e3c32,null));};exports[_0x11a7('0x58')]=function(_0x5a62ab,_0xe972c0){if(_0x5a62ab[_0x11a7('0x59')][_0x11a7('0x34')]==='outbound'&&!_[_0x11a7('0x5a')](_0x5a62ab[_0x11a7('0x59')][_0x11a7('0x5b')],'_')){_0x5a62ab['body'][_0x11a7('0x5b')]='_'[_0x11a7('0x5c')](_0x5a62ab[_0x11a7('0x59')][_0x11a7('0x5b')]);}return db[_0x11a7('0x3b')][_0x11a7('0x58')](_0x5a62ab[_0x11a7('0x59')],{'raw':![]})[_0x11a7('0x28')](function(_0x37a95c){var _0x34d8a8=_0x5a62ab[_0x11a7('0x5d')][_0x11a7('0x2a')]({'plain':!![]});if(!_0x34d8a8)throw new Error(_0x11a7('0x5e'));if(_0x34d8a8['role']==='user'){var _0x366bc2=_0x37a95c[_0x11a7('0x2a')]({'plain':!![]});var _0x383adc=[{'name':_0x11a7('0x2b'),'value':_0x11a7('0x2c')},{'name':_0x11a7('0x5f'),'value':_0x11a7('0x2d')},{'name':_0x11a7('0x60'),'value':_0x11a7('0x2e')}];var _0x106187=_[_0x11a7('0x57')](_0x383adc,[_0x11a7('0x32'),_0x366bc2[_0x11a7('0x34')]])[_0x11a7('0x35')];return db[_0x11a7('0x61')][_0x11a7('0x57')]({'where':{'name':_0x106187,'userProfileId':_0x34d8a8[_0x11a7('0x62')]},'raw':!![]})[_0x11a7('0x28')](function(_0x229ad4){if(_0x229ad4&&_0x229ad4[_0x11a7('0x63')]===0x0){return db[_0x11a7('0x36')][_0x11a7('0x58')]({'name':_0x366bc2[_0x11a7('0x35')],'resourceId':_0x366bc2['id'],'type':_0x229ad4[_0x11a7('0x35')],'sectionId':_0x229ad4['id']},{})['then'](function(){return _0x37a95c;});}else{return _0x37a95c;}})['catch'](function(_0x47aa65){logger['error'](_0x11a7('0x64'),_0x47aa65);throw _0x47aa65;});}return _0x37a95c;})['then'](respondWithResult(_0xe972c0,0xc9))['catch'](handleError(_0xe972c0,null));};exports[_0x11a7('0x27')]=function(_0x59cea3,_0x14e645){if(_0x59cea3[_0x11a7('0x59')]['id']){delete _0x59cea3[_0x11a7('0x59')]['id'];}return db['VoiceExtension'][_0x11a7('0x57')]({'where':{'id':_0x59cea3[_0x11a7('0x56')]['id']}})[_0x11a7('0x28')](handleEntityNotFound(_0x14e645,null))[_0x11a7('0x28')](function(_0x9d8038){if(_0x9d8038){return db['VoiceExtension'][_0x11a7('0x27')](_['pick'](_0x59cea3['body'],[_0x11a7('0x5b'),_0x11a7('0x65'),_0x11a7('0x66'),_0x11a7('0x67'),_0x11a7('0x68'),_0x11a7('0x69'),_0x11a7('0x6a')]),{'where':{'context':_0x9d8038[_0x11a7('0x65')],'exten':_0x9d8038['exten']},'individualHooks':!![]})[_0x11a7('0x28')](function(_0x54796d){return _0x54796d;});}return null;})['then'](respondWithStatusCode(_0x14e645,null))[_0x11a7('0x54')](handleError(_0x14e645,null));};exports[_0x11a7('0x6b')]=function(_0x5b0657,_0x3d4421){return db[_0x11a7('0x3b')]['findOne']({'where':{'id':_0x5b0657['params']['id']}})[_0x11a7('0x28')](function(_0x109058){if(_0x109058){return db[_0x11a7('0x6c')][_0x11a7('0x6d')](function(_0xe85fb4){return db['VoiceExtension'][_0x11a7('0x29')]({'where':{'VoiceExtensionId':_0x5b0657[_0x11a7('0x56')]['id']},'transaction':_0xe85fb4})[_0x11a7('0x28')](function(){var _0x5615c4=_['map'](_0x5b0657[_0x11a7('0x59')],function(_0xb7835b){_0xb7835b[_0x11a7('0x6e')]=_0x5b0657[_0x11a7('0x56')]['id'];_0xb7835b[_0x11a7('0x6f')]=!![];return _0xb7835b;});var _0x17237f=_0x5b0657[_0x11a7('0x40')][_0x11a7('0x70')]&&_0x5b0657[_0x11a7('0x40')][_0x11a7('0x70')][_0x11a7('0x71')]()==='true'?!![]:![];return _0x109058[_0x11a7('0x72')](_0x5615c4,_0x17237f);})[_0x11a7('0x28')](function(_0x42aafd){return db[_0x11a7('0x3b')]['bulkCreate'](_0x42aafd,{'transaction':_0xe85fb4});});})['then'](function(){return db['VoiceExtension'][_0x11a7('0x73')]({'where':{'isApp':!![],'VoiceExtensionId':_0x5b0657[_0x11a7('0x56')]['id']},'order':_0x11a7('0x74')});});}})[_0x11a7('0x28')](respondWithResult(_0x3d4421,null))[_0x11a7('0x54')](handleError(_0x3d4421,null));};
\ No newline at end of file
index ec191d9..10fba5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7720=['VoiceExtension','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x3363ae,_0x5c3f3f){var _0x2bc795=function(_0xd9803c){while(--_0xd9803c){_0x3363ae['push'](_0x3363ae['shift']());}};_0x2bc795(++_0x5c3f3f);}(_0x7720,0x171));var _0x0772=function(_0x46255e,_0x36d16e){_0x46255e=_0x46255e-0x0;var _0x42ec9f=_0x7720[_0x46255e];return _0x42ec9f;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0x0772('0x0'))['db'][_0x0772('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x0772('0x2')](0x0);var events={'afterCreate':_0x0772('0x3'),'afterUpdate':_0x0772('0x4'),'afterDestroy':_0x0772('0x5')};function emitEvent(_0x11cc72){return function(_0x4fbedd,_0x3cf3a0,_0xe8688d){VoiceExtensionEvents[_0x0772('0x6')](_0x11cc72+':'+_0x4fbedd['id'],_0x4fbedd);VoiceExtensionEvents['emit'](_0x11cc72,_0x4fbedd);_0xe8688d(null);};}for(var e in events){if(events[_0x0772('0x7')](e)){var event=events[e];VoiceExtension[_0x0772('0x8')](e,emitEvent(event));}}module[_0x0772('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x958b=['emit','hook','events','setMaxListeners','save','update','remove'];(function(_0x5bf53d,_0x4a1d37){var _0x22e809=function(_0x30b26a){while(--_0x30b26a){_0x5bf53d['push'](_0x5bf53d['shift']());}};_0x22e809(++_0x4a1d37);}(_0x958b,0x16e));var _0xb958=function(_0x54bd53,_0x179214){_0x54bd53=_0x54bd53-0x0;var _0x528c0e=_0x958b[_0x54bd53];return _0x528c0e;};'use strict';var EventEmitter=require(_0xb958('0x0'));var VoiceExtension=require('../../mysqldb')['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xb958('0x1')](0x0);var events={'afterCreate':_0xb958('0x2'),'afterUpdate':_0xb958('0x3'),'afterDestroy':_0xb958('0x4')};function emitEvent(_0x5127f6){return function(_0x56799b,_0xbb9453,_0x4d7819){VoiceExtensionEvents['emit'](_0x5127f6+':'+_0x56799b['id'],_0x56799b);VoiceExtensionEvents[_0xb958('0x5')](_0x5127f6,_0x56799b);_0x4d7819(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0xb958('0x6')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
index 078e414..c5b3d3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eed=['appdata','priority','last','concat','catch','VoiceExtension','voice_extensions','get','Hangup','lodash','./voiceExtension.attributes','exports','type','Set','CDR(type)=','context','alias','CDR(routeAlias)=','exten','inbound','CDR(routeid)=','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','NoOp','No\x20alias\x20set','CDR(destination)=','cutdigits','${EXTEN}','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','trunk','timeout','options','url','split','name','prefix','phone','${EXTEN:','param','SIP','join','indexOf','U(xcally-mixmonitor-context)','isEmpty','findAll','then','length','interval','*,*,*,*','IntervalId','map','filter','toLowerCase','tag','CDR(tag)=','intervals','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','NoOp(No\x20number\x20available)','answer','playback','includes','app','custom','ExecIf','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','appType','outboundDial'];(function(_0x52085a,_0x3717ca){var _0x5afc1a=function(_0x2aa175){while(--_0x2aa175){_0x52085a['push'](_0x52085a['shift']());}};_0x5afc1a(++_0x3717ca);}(_0x6eed,0xff));var _0xd6ee=function(_0x26be12,_0x338b2c){_0x26be12=_0x26be12-0x0;var _0x110b3c=_0x6eed[_0x26be12];return _0x110b3c;};'use strict';var _=require(_0xd6ee('0x0'));var attributes=require(_0xd6ee('0x1'));module[_0xd6ee('0x2')]=function(_0x27b7bf){var _0x1a734a=_0x27b7bf['models'];function _0x25a92a(_0x315fdb){var _0x588715=0x2;var _0x53cce9=[{'type':_0x315fdb[_0xd6ee('0x3')],'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0x5')+_0x315fdb[_0xd6ee('0x3')],'context':_0x315fdb[_0xd6ee('0x6')],'exten':_0x315fdb['exten'],'priority':_0x588715++,'VoiceExtensionId':_0x315fdb['id']},{'type':_0x315fdb['type'],'app':_0x315fdb[_0xd6ee('0x7')]?'Set':'NoOp','appdata':_0x315fdb['alias']?_0xd6ee('0x8')+_0x315fdb[_0xd6ee('0x7')]:'No\x20alias\x20set','context':_0x315fdb[_0xd6ee('0x6')],'exten':_0x315fdb[_0xd6ee('0x9')],'priority':_0x588715++,'VoiceExtensionId':_0x315fdb['id']}];if(_0x315fdb[_0xd6ee('0x3')]===_0xd6ee('0xa')){_0x53cce9['push']({'type':_0xd6ee('0xa'),'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0xb')+_0x315fdb['id'],'context':_0x315fdb[_0xd6ee('0x6')],'exten':_0x315fdb[_0xd6ee('0x9')],'priority':_0x588715++,'VoiceExtensionId':_0x315fdb['id']});}_0x53cce9[_0xd6ee('0xc')]({'type':_0x315fdb['type'],'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0xd'),'context':_0x315fdb['context'],'exten':_0x315fdb[_0xd6ee('0x9')],'priority':_0x588715++,'VoiceExtensionId':_0x315fdb['id']},{'type':_0x315fdb[_0xd6ee('0x3')],'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0xe'),'context':_0x315fdb[_0xd6ee('0x6')],'exten':_0x315fdb[_0xd6ee('0x9')],'priority':_0x588715++,'VoiceExtensionId':_0x315fdb['id']},{'type':_0x315fdb['type'],'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0xf'),'context':_0x315fdb[_0xd6ee('0x6')],'exten':_0x315fdb['exten'],'priority':_0x588715++,'VoiceExtensionId':_0x315fdb['id']});return _0x53cce9;}function _0x3196c0(_0x5ef16b){var _0x3a82bf=0x2;var _0x2b0495=[{'type':_0xd6ee('0x10'),'app':'Set','appdata':_0xd6ee('0x11'),'context':_0x5ef16b['context'],'exten':_0x5ef16b[_0xd6ee('0x9')],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']},{'type':'outbound','app':_0x5ef16b[_0xd6ee('0x7')]?_0xd6ee('0x4'):_0xd6ee('0x12'),'appdata':_0x5ef16b[_0xd6ee('0x7')]?_0xd6ee('0x8')+_0x5ef16b['alias']:_0xd6ee('0x13'),'context':_0x5ef16b['context'],'exten':_0x5ef16b[_0xd6ee('0x9')],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']},{'type':_0xd6ee('0x10'),'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0x14')+(_0x5ef16b[_0xd6ee('0x15')]?'${EXTEN:'+_0x5ef16b['cutdigits']+'}':_0xd6ee('0x16')),'context':_0x5ef16b['context'],'exten':_0x5ef16b[_0xd6ee('0x9')],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']},{'type':'outbound','app':_0xd6ee('0x4'),'appdata':_0xd6ee('0xb')+_0x5ef16b['id'],'context':_0x5ef16b[_0xd6ee('0x6')],'exten':_0x5ef16b[_0xd6ee('0x9')],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']},{'type':_0xd6ee('0x10'),'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x3a82bf+0x2)+_0xd6ee('0x17')+(_0x3a82bf+0x1)+')','context':_0x5ef16b[_0xd6ee('0x6')],'exten':_0x5ef16b['exten'],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']},{'type':_0xd6ee('0x10'),'app':_0xd6ee('0x4'),'appdata':_0x5ef16b[_0xd6ee('0x15')]?_0xd6ee('0x18')+_0x5ef16b[_0xd6ee('0x15')]+'}':_0xd6ee('0x19'),'context':_0x5ef16b[_0xd6ee('0x6')],'exten':_0x5ef16b['exten'],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']},{'type':_0xd6ee('0x10'),'app':_0xd6ee('0x4'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x5ef16b['context'],'exten':_0x5ef16b[_0xd6ee('0x9')],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']},{'type':_0xd6ee('0x10'),'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0xe'),'context':_0x5ef16b[_0xd6ee('0x6')],'exten':_0x5ef16b['exten'],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']},{'type':_0xd6ee('0x10'),'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0xf'),'context':_0x5ef16b['context'],'exten':_0x5ef16b[_0xd6ee('0x9')],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']},{'type':_0xd6ee('0x10'),'app':_0xd6ee('0x4'),'appdata':'outboundrouteid='+_0x5ef16b['id'],'context':_0x5ef16b[_0xd6ee('0x6')],'exten':_0x5ef16b[_0xd6ee('0x9')],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']}];if(_0x5ef16b[_0xd6ee('0x1a')](_0xd6ee('0x1b'))&&_0x5ef16b[_0xd6ee('0x1b')]!==_0xd6ee('0x1c')){_0x2b0495['push']({'type':_0xd6ee('0x10'),'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0x1d'),'context':_0x5ef16b[_0xd6ee('0x6')],'exten':_0x5ef16b['exten'],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']},{'type':_0xd6ee('0x10'),'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0x1e')+_0x5ef16b['recordingFormat']||'wav','context':_0x5ef16b[_0xd6ee('0x6')],'exten':_0x5ef16b[_0xd6ee('0x9')],'priority':_0x3a82bf++,'VoiceExtensionId':_0x5ef16b['id']});}return _0x2b0495;}function _0x1479a4(_0x139a15,_0x430b10){var _0x9ba178=[{'name':_0xd6ee('0x1f'),'param':0x0},{'name':_0xd6ee('0x20'),'param':0x1},{'name':_0xd6ee('0x21'),'param':0x2},{'name':_0xd6ee('0x22'),'param':0x3}];var _0x114ad4={};var _0x1ef8e5=_0x430b10[_0xd6ee('0x23')](',');var _0x15b752=[];for(var _0x19be90=0x0;_0x19be90<_0x9ba178['length'];_0x19be90++){switch(_0x9ba178[_0x19be90][_0xd6ee('0x24')]){case _0xd6ee('0x1f'):_0x114ad4[_0xd6ee('0x1f')]=_0x1ef8e5[_0x9ba178[_0x19be90]['param']]['split']('/')[0x1];_0x114ad4['phone']=_0x1ef8e5[_0x9ba178[_0x19be90]['param']][_0xd6ee('0x23')]('/')[0x2];_0x114ad4[_0xd6ee('0x25')]=_0x114ad4[_0xd6ee('0x26')]?_0x114ad4[_0xd6ee('0x26')][_0xd6ee('0x23')]('$')[0x0]:undefined;_0x114ad4[_0xd6ee('0x26')]=_0x139a15[_0xd6ee('0x15')]?(_0x114ad4['prefix']||'')+_0xd6ee('0x27')+_0x139a15[_0xd6ee('0x15')]+'}':(_0x114ad4[_0xd6ee('0x25')]||'')+_0xd6ee('0x16');_0x15b752[_0x9ba178[_0x19be90][_0xd6ee('0x28')]]=[_0xd6ee('0x29'),_0x114ad4[_0xd6ee('0x1f')],_0x114ad4[_0xd6ee('0x26')]][_0xd6ee('0x2a')]('/');break;case _0xd6ee('0x21'):_0x114ad4['options']=_0x1ef8e5[_0x9ba178[_0x19be90]['param']];if(_0x139a15['recordingFormat']!==_0xd6ee('0x1c')){if(_0x114ad4['options'][_0xd6ee('0x2b')](_0xd6ee('0x2c'))<0x0){_0x114ad4[_0xd6ee('0x21')]+=_0xd6ee('0x2c');}}else{_0x114ad4[_0xd6ee('0x21')]=_0x114ad4['options']['replace']('U(xcally-mixmonitor-context)','');}_0x15b752[_0x9ba178[_0x19be90]['param']]=_0x114ad4[_0xd6ee('0x21')];break;default:_0x15b752[_0x9ba178[_0x19be90][_0xd6ee('0x28')]]=_0x1ef8e5[_0x9ba178[_0x19be90][_0xd6ee('0x28')]];}}return _0x15b752[_0xd6ee('0x2a')](',');}function _0x164906(_0x1c48ba,_0x1311c1,_0x23ef7c){return new Promise(function(_0x160d05,_0x4b181c){var _0x331510=[];if(_[_0xd6ee('0x2d')](_0x1311c1))return _0x160d05(_0x331510);_0x1a734a['Interval'][_0xd6ee('0x2e')]({'attributes':['id','interval','IntervalId'],'raw':!![]})[_0xd6ee('0x2f')](function(_0x370c43){for(var _0x409558=0x0,_0x3a6007=0x0;_0x409558<_0x1311c1[_0xd6ee('0x30')];_0x409558++,_0x3a6007=0x0){var _0x878b3=_0x1311c1[_0x409558];var _0x513912=[];var _0x5cf265=[];delete _0x878b3['id'];if(_0x878b3[_0xd6ee('0x31')]!==_0xd6ee('0x32')){_0x878b3['intervals']=[_0x878b3[_0xd6ee('0x31')]];}else{_0x878b3['intervals']=_0x878b3[_0xd6ee('0x33')]?_[_0xd6ee('0x34')](_[_0xd6ee('0x35')](_0x370c43,{'IntervalId':_0x878b3[_0xd6ee('0x33')]}),_0xd6ee('0x31')):[];}_0x878b3[_0xd6ee('0x6')]=_0x1c48ba[_0xd6ee('0x6')];_0x878b3[_0xd6ee('0x9')]=_0x1c48ba[_0xd6ee('0x9')];if(_0x878b3[_0xd6ee('0x3')])_0x878b3[_0xd6ee('0x3')]=_0x878b3['type'][_0xd6ee('0x36')]();if(_0x1c48ba[_0xd6ee('0x3')]===_0xd6ee('0x10')){if(_0x878b3[_0xd6ee('0x1a')](_0xd6ee('0x37'))&&_0x878b3[_0xd6ee('0x37')]&&_0x878b3[_0xd6ee('0x37')]!=='--'){_0x513912[_0xd6ee('0xc')]({'type':_0x878b3[_0xd6ee('0x3')][_0xd6ee('0x36')](),'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0x38')+_0x878b3['tag'],'context':_0x1c48ba[_0xd6ee('0x6')],'exten':_0x1c48ba[_0xd6ee('0x9')],'priority':_0x878b3[_0xd6ee('0x39')]['length']+_0x23ef7c+_0x3a6007++,'VoiceExtensionId':_0x1c48ba['id']});}_0x513912[_0xd6ee('0xc')]({'type':_0x878b3['type'][_0xd6ee('0x36')](),'app':'ExecIf','appdata':_0xd6ee('0x3a')+(_0x878b3[_0xd6ee('0x3b')]?'Set(CALLERID(all)='+_0x878b3[_0xd6ee('0x3b')]+')':_0xd6ee('0x3c')),'context':_0x1c48ba[_0xd6ee('0x6')],'exten':_0x1c48ba['exten'],'priority':_0x878b3[_0xd6ee('0x39')][_0xd6ee('0x30')]+_0x23ef7c+_0x3a6007++,'VoiceExtensionId':_0x1c48ba['id']});}else{if(_0x878b3['hasOwnProperty'](_0xd6ee('0x3d'))){if(['queue',_0xd6ee('0x3e')][_0xd6ee('0x3f')](_0x878b3[_0xd6ee('0x40')][_0xd6ee('0x36')]())&&_0x878b3['appType']!==_0xd6ee('0x41')){if(_0x878b3['answer']){_0x513912[_0xd6ee('0xc')]({'type':_0x878b3[_0xd6ee('0x3')]['toLowerCase'](),'app':_0xd6ee('0x42'),'appdata':_0xd6ee('0x43'),'context':_0x1c48ba[_0xd6ee('0x6')],'exten':_0x1c48ba[_0xd6ee('0x9')],'priority':_0x878b3[_0xd6ee('0x39')][_0xd6ee('0x30')]+_0x23ef7c+_0x3a6007++,'VoiceExtensionId':_0x1c48ba['id']});_0x513912[_0xd6ee('0xc')]({'type':_0x878b3[_0xd6ee('0x3')]['toLowerCase'](),'app':_0xd6ee('0x4'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x1c48ba[_0xd6ee('0x6')],'exten':_0x1c48ba[_0xd6ee('0x9')],'priority':_0x878b3[_0xd6ee('0x39')][_0xd6ee('0x30')]+_0x23ef7c+_0x3a6007++,'VoiceExtensionId':_0x1c48ba['id']});}else{_0x513912['push']({'type':_0x878b3[_0xd6ee('0x3')]['toLowerCase'](),'app':_0xd6ee('0x42'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x1c48ba[_0xd6ee('0x6')],'exten':_0x1c48ba['exten'],'priority':_0x878b3[_0xd6ee('0x39')][_0xd6ee('0x30')]+_0x23ef7c+_0x3a6007++,'VoiceExtensionId':_0x1c48ba['id']});_0x513912[_0xd6ee('0xc')]({'type':_0x878b3[_0xd6ee('0x3')][_0xd6ee('0x36')](),'app':_0xd6ee('0x4'),'appdata':_0xd6ee('0x44'),'context':_0x1c48ba[_0xd6ee('0x6')],'exten':_0x1c48ba[_0xd6ee('0x9')],'priority':_0x878b3['intervals'][_0xd6ee('0x30')]+_0x23ef7c+_0x3a6007++,'VoiceExtensionId':_0x1c48ba['id']});}}}}for(var _0x538a8f=0x0;_0x538a8f<_0x878b3[_0xd6ee('0x39')][_0xd6ee('0x30')];_0x538a8f++){var _0x47c1f5=_0x23ef7c+_0x878b3['intervals'][_0xd6ee('0x30')];var _0x2f25c4=_0x538a8f===_0x878b3[_0xd6ee('0x39')][_0xd6ee('0x30')]-0x1?_0x23ef7c+_0x513912[_0xd6ee('0x30')]+_0x5cf265[_0xd6ee('0x30')]+0x2:_0x23ef7c+_0x538a8f+0x1;_0x513912[_0xd6ee('0x45')](_0x538a8f,0x0,{'type':_0x1c48ba[_0xd6ee('0x3')],'app':'GotoIfTime','appdata':_0x878b3[_0xd6ee('0x39')][_0x538a8f]+'?'+_0x1c48ba[_0xd6ee('0x6')]+',${EXTEN},'+_0x47c1f5+':'+_0x1c48ba[_0xd6ee('0x6')]+_0xd6ee('0x46')+_0x2f25c4,'exten':_0x1c48ba[_0xd6ee('0x9')],'context':_0x1c48ba[_0xd6ee('0x6')],'priority':_0x23ef7c+_0x538a8f,'VoiceExtensionId':_0x1c48ba['id']});}if(_0x878b3[_0xd6ee('0x47')]===_0xd6ee('0x48'))_0x878b3[_0xd6ee('0x49')]=_0x1479a4(_0x1c48ba,_0x878b3[_0xd6ee('0x49')]);_0x878b3[_0xd6ee('0x4a')]=_0x513912[_0xd6ee('0x30')]?_[_0xd6ee('0x4b')](_0x513912)['priority']+0x1:_0x23ef7c;_0x331510=_[_0xd6ee('0x4c')](_0x331510,_0x513912,[_0x878b3],_0x5cf265);_0x23ef7c=_[_0xd6ee('0x4b')](_0x331510)['priority']+0x1;}return _0x160d05(_0x331510);})[_0xd6ee('0x4d')](function(_0x18c951){_0x4b181c(_0x18c951);});});}return _0x27b7bf['define'](_0xd6ee('0x4e'),attributes,{'tableName':_0xd6ee('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x5ce23d){var _0x2c8eb0=this[_0xd6ee('0x50')]({'plain':!![]});var _0x4e55ba=_0x2c8eb0[_0xd6ee('0x3')]===_0xd6ee('0x10')?_0x3196c0(_0x2c8eb0):_0x25a92a(_0x2c8eb0);return _0x164906(_0x2c8eb0,_0x5ce23d,_['last'](_0x4e55ba)['priority']+0x1)['then'](function(_0x517424){var _0x2b4133=_[_0xd6ee('0x4c')](_0x4e55ba,_0x517424);_0x2b4133[_0xd6ee('0xc')]({'type':_0x2c8eb0[_0xd6ee('0x3')],'app':_0xd6ee('0x51'),'exten':_0x2c8eb0[_0xd6ee('0x9')],'context':_0x2c8eb0[_0xd6ee('0x6')],'priority':_[_0xd6ee('0x4b')](_0x2b4133)[_0xd6ee('0x4a')]+0x1,'VoiceExtensionId':_0x2c8eb0['id']});return _0x2b4133;});}}});};
\ No newline at end of file
+var _0x299c=['playback','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},','outboundDial','appdata','last','priority','concat','catch','define','Hangup','util','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','exten','alias','CDR(routeAlias)=','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','CDR(type)=outbound','outbound','NoOp','No\x20alias\x20set','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','timeout','options','url','length','name','trunk','split','phone','param','prefix','SIP','join','U(xcally-mixmonitor-context)','isEmpty','Interval','interval','IntervalId','then','*,*,*,*','intervals','filter','toLowerCase','tag','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer'];(function(_0x4ca796,_0x10dc47){var _0x171f87=function(_0x198d29){while(--_0x198d29){_0x4ca796['push'](_0x4ca796['shift']());}};_0x171f87(++_0x10dc47);}(_0x299c,0x67));var _0xc299=function(_0x6fedd9,_0x2b6515){_0x6fedd9=_0x6fedd9-0x0;var _0x1fc06a=_0x299c[_0x6fedd9];return _0x1fc06a;};'use strict';var util=require(_0xc299('0x0'));var _=require('lodash');var attributes=require(_0xc299('0x1'));module[_0xc299('0x2')]=function(_0x431864){var _0x525acf=_0x431864[_0xc299('0x3')];function _0x6ad2cc(_0x41fbe5){var _0x51dde2=0x2;var _0x40f9f6=[{'type':_0x41fbe5[_0xc299('0x4')],'app':_0xc299('0x5'),'appdata':_0xc299('0x6')+_0x41fbe5[_0xc299('0x4')],'context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']},{'type':_0x41fbe5[_0xc299('0x4')],'app':_0x41fbe5[_0xc299('0x9')]?'Set':'NoOp','appdata':_0x41fbe5[_0xc299('0x9')]?_0xc299('0xa')+_0x41fbe5['alias']:'No\x20alias\x20set','context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']}];if(_0x41fbe5[_0xc299('0x4')]===_0xc299('0xb')){_0x40f9f6[_0xc299('0xc')]({'type':_0xc299('0xb'),'app':_0xc299('0x5'),'appdata':_0xc299('0xd')+_0x41fbe5['id'],'context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']});}_0x40f9f6[_0xc299('0xc')]({'type':_0x41fbe5['type'],'app':_0xc299('0x5'),'appdata':_0xc299('0xe'),'context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']},{'type':_0x41fbe5[_0xc299('0x4')],'app':'Set','appdata':_0xc299('0xf'),'context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']},{'type':_0x41fbe5['type'],'app':_0xc299('0x5'),'appdata':_0xc299('0x10'),'context':_0x41fbe5[_0xc299('0x7')],'exten':_0x41fbe5[_0xc299('0x8')],'priority':_0x51dde2++,'VoiceExtensionId':_0x41fbe5['id']});return _0x40f9f6;}function _0x450eb1(_0x206430){var _0x21e724=0x2;var _0xcf2987=[{'type':'outbound','app':_0xc299('0x5'),'appdata':_0xc299('0x11'),'context':_0x206430['context'],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':_0x206430[_0xc299('0x9')]?_0xc299('0x5'):_0xc299('0x13'),'appdata':_0x206430[_0xc299('0x9')]?_0xc299('0xa')+_0x206430['alias']:_0xc299('0x14'),'context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':'outbound','app':'Set','appdata':_0xc299('0x15')+(_0x206430[_0xc299('0x16')]?_0xc299('0x17')+_0x206430['cutdigits']+'}':_0xc299('0x18')),'context':_0x206430[_0xc299('0x7')],'exten':_0x206430['exten'],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':_0xc299('0x5'),'appdata':_0xc299('0xd')+_0x206430['id'],'context':_0x206430[_0xc299('0x7')],'exten':_0x206430['exten'],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':_0xc299('0x19'),'appdata':_0xc299('0x1a')+(_0x21e724+0x2)+'):Goto('+(_0x21e724+0x1)+')','context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':'Set','appdata':_0x206430[_0xc299('0x16')]?_0xc299('0x1b')+_0x206430[_0xc299('0x16')]+'}':_0xc299('0x1c'),'context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':'Set','appdata':_0xc299('0xe'),'context':_0x206430['context'],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':'outbound','app':_0xc299('0x5'),'appdata':_0xc299('0xf'),'context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':'outbound','app':'Set','appdata':'MONITOR_OPTIONS=ab','context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':'outbound','app':_0xc299('0x5'),'appdata':_0xc299('0x1d')+_0x206430['id'],'context':_0x206430['context'],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']}];if(_0x206430[_0xc299('0x1e')](_0xc299('0x1f'))&&_0x206430['recordingFormat']!==_0xc299('0x20')){_0xcf2987[_0xc299('0xc')]({'type':'outbound','app':'Set','appdata':_0xc299('0x21'),'context':_0x206430['context'],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']},{'type':_0xc299('0x12'),'app':'Set','appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x206430['recordingFormat']||_0xc299('0x22'),'context':_0x206430[_0xc299('0x7')],'exten':_0x206430[_0xc299('0x8')],'priority':_0x21e724++,'VoiceExtensionId':_0x206430['id']});}return _0xcf2987;}function _0xe4553d(_0x272c42){var _0x1390c1=[{'name':'trunk','param':0x0},{'name':_0xc299('0x23'),'param':0x1},{'name':_0xc299('0x24'),'param':0x2},{'name':_0xc299('0x25'),'param':0x3}];var _0x99fa0f={};var _0x37eda4=_0x272c42['split'](',');var _0x177310=[];for(var _0x206a84=0x0;_0x206a84<_0x1390c1[_0xc299('0x26')];_0x206a84++){switch(_0x1390c1[_0x206a84][_0xc299('0x27')]){case _0xc299('0x28'):_0x99fa0f[_0xc299('0x28')]=_0x37eda4[_0x1390c1[_0x206a84]['param']][_0xc299('0x29')]('/')[0x1];_0x99fa0f[_0xc299('0x2a')]=_0x37eda4[_0x1390c1[_0x206a84][_0xc299('0x2b')]][_0xc299('0x29')]('/')[0x2];_0x99fa0f[_0xc299('0x2c')]=_0x99fa0f[_0xc299('0x2a')]?_0x99fa0f[_0xc299('0x2a')]['split']('$')[0x0]:undefined;_0x99fa0f[_0xc299('0x2a')]=route['cutdigits']?(_0x99fa0f[_0xc299('0x2c')]||'')+_0xc299('0x17')+route[_0xc299('0x16')]+'}':(_0x99fa0f[_0xc299('0x2c')]||'')+_0xc299('0x18');_0x177310[_0x1390c1[_0x206a84][_0xc299('0x2b')]]=[_0xc299('0x2d'),_0x99fa0f[_0xc299('0x28')],_0x99fa0f['phone']][_0xc299('0x2e')]('/');break;case'options':_0x99fa0f[_0xc299('0x24')]=_0x37eda4[_0x1390c1[_0x206a84][_0xc299('0x2b')]];if(route['recordingFormat']!==_0xc299('0x20')){if(_0x99fa0f[_0xc299('0x24')]['indexOf'](_0xc299('0x2f'))<0x0){_0x99fa0f[_0xc299('0x24')]+='U(xcally-mixmonitor-context)';}}else{_0x99fa0f[_0xc299('0x24')]=_0x99fa0f['options']['replace']('U(xcally-mixmonitor-context)','');}_0x177310[_0x1390c1[_0x206a84][_0xc299('0x2b')]]=_0x99fa0f[_0xc299('0x24')];break;default:_0x177310[_0x1390c1[_0x206a84][_0xc299('0x2b')]]=_0x37eda4[_0x1390c1[_0x206a84][_0xc299('0x2b')]];}}return _0x177310[_0xc299('0x2e')](',');}function _0x2d8914(_0x18025d,_0x31aa94,_0x4f63b0,_0x1c79b0){return new Promise(function(_0x2df671,_0x25e010){var _0x5b9d3b=[];if(_[_0xc299('0x30')](_0x31aa94))return _0x2df671(_0x5b9d3b);_0x525acf[_0xc299('0x31')]['findAll']({'attributes':['id',_0xc299('0x32'),_0xc299('0x33')],'raw':!![]})[_0xc299('0x34')](function(_0x1f919b){for(var _0x847e15=0x0,_0x4af60b=0x0;_0x847e15<_0x31aa94[_0xc299('0x26')];_0x847e15++,_0x4af60b=0x0){var _0x1c5a07=_0x31aa94[_0x847e15];var _0x380736=[];var _0x28eb19=[];if(_0x1c5a07[_0xc299('0x32')]!==_0xc299('0x35')){_0x1c5a07['intervals']=[_0x1c5a07[_0xc299('0x32')]];}else{_0x1c5a07[_0xc299('0x36')]=_0x1c5a07[_0xc299('0x33')]?_['map'](_[_0xc299('0x37')](_0x1f919b,{'IntervalId':_0x1c5a07[_0xc299('0x33')]}),_0xc299('0x32')):[];}_0x1c5a07['context']=_0x18025d[_0xc299('0x7')];_0x1c5a07[_0xc299('0x8')]=_0x18025d['exten'];if(_0x1c5a07[_0xc299('0x4')])_0x1c5a07[_0xc299('0x4')]=_0x1c5a07[_0xc299('0x4')][_0xc299('0x38')]();if(_0x18025d[_0xc299('0x4')]==='outbound'){if(_0x1c5a07[_0xc299('0x1e')](_0xc299('0x39'))&&_0x1c5a07['tag']&&_0x1c5a07[_0xc299('0x39')]!=='--'){_0x380736['push']({'type':_0x1c5a07['type']['toLowerCase'](),'app':_0xc299('0x5'),'appdata':'CDR(tag)='+_0x1c5a07['tag'],'context':_0x18025d['context'],'exten':_0x18025d[_0xc299('0x8')],'priority':_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});}_0x380736[_0xc299('0xc')]({'type':_0x1c5a07['type'][_0xc299('0x38')](),'app':'ExecIf','appdata':_0xc299('0x3a')+(_0x1c5a07[_0xc299('0x3b')]?_0xc299('0x3c')+_0x1c5a07[_0xc299('0x3b')]+')':_0xc299('0x3d')),'context':_0x18025d[_0xc299('0x7')],'exten':_0x18025d['exten'],'priority':_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});}else{if(_0x1c5a07[_0xc299('0x1e')](_0xc299('0x3e'))){if(['queue',_0xc299('0x3f')][_0xc299('0x40')](_0x1c5a07[_0xc299('0x41')]['toLowerCase']())&&_0x1c5a07[_0xc299('0x42')]!==_0xc299('0x43')){if(_0x1c5a07[_0xc299('0x3e')]){_0x380736[_0xc299('0xc')]({'type':_0x1c5a07[_0xc299('0x4')][_0xc299('0x38')](),'app':'ExecIf','appdata':_0xc299('0x44'),'context':_0x18025d[_0xc299('0x7')],'exten':_0x18025d[_0xc299('0x8')],'priority':_0x1c5a07['intervals'][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});_0x380736['push']({'type':_0x1c5a07[_0xc299('0x4')][_0xc299('0x38')](),'app':_0xc299('0x5'),'appdata':_0xc299('0x45'),'context':_0x18025d['context'],'exten':_0x18025d['exten'],'priority':_0x1c5a07['intervals'][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});}else{_0x380736[_0xc299('0xc')]({'type':_0x1c5a07[_0xc299('0x4')]['toLowerCase'](),'app':_0xc299('0x19'),'appdata':_0xc299('0x46'),'context':_0x18025d[_0xc299('0x7')],'exten':_0x18025d[_0xc299('0x8')],'priority':_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});_0x380736[_0xc299('0xc')]({'type':_0x1c5a07[_0xc299('0x4')][_0xc299('0x38')](),'app':'Set','appdata':_0xc299('0x47'),'context':_0x18025d[_0xc299('0x7')],'exten':_0x18025d[_0xc299('0x8')],'priority':_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')]+_0x4f63b0+_0x4af60b++,'VoiceExtensionId':_0x18025d['id']});}}}}for(var _0x1b132f=0x0;_0x1b132f<_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')];_0x1b132f++){var _0x9dc9de=_0x4f63b0+_0x1c5a07['intervals'][_0xc299('0x26')];var _0x1bcede=_0x1b132f===_0x1c5a07[_0xc299('0x36')][_0xc299('0x26')]-0x1?_0x4f63b0+_0x380736[_0xc299('0x26')]+_0x28eb19[_0xc299('0x26')]+0x2:_0x4f63b0+_0x1b132f+0x1;_0x380736[_0xc299('0x48')](_0x1b132f,0x0,{'type':_0x18025d[_0xc299('0x4')],'app':_0xc299('0x49'),'appdata':_0x1c5a07['intervals'][_0x1b132f]+'?'+_0x18025d[_0xc299('0x7')]+_0xc299('0x4a')+_0x9dc9de+':'+_0x18025d[_0xc299('0x7')]+_0xc299('0x4a')+_0x1bcede,'exten':_0x18025d['exten'],'context':_0x18025d[_0xc299('0x7')],'priority':_0x4f63b0+_0x1b132f,'VoiceExtensionId':_0x18025d['id']});}if(_0x1c79b0&&_0x1c5a07['appType']===_0xc299('0x4b'))_0x1c5a07[_0xc299('0x4c')]=_0xe4553d(_0x1c5a07['appdata']);_0x1c5a07['priority']=_0x380736['length']?_[_0xc299('0x4d')](_0x380736)[_0xc299('0x4e')]+0x1:_0x4f63b0;_0x5b9d3b=_[_0xc299('0x4f')](_0x5b9d3b,_0x380736,[_0x1c5a07],_0x28eb19);_0x4f63b0=_[_0xc299('0x4d')](_0x5b9d3b)['priority']+0x1;}return _0x2df671(_0x5b9d3b);})[_0xc299('0x50')](function(_0x2a5961){_0x25e010(_0x2a5961);});});}return _0x431864[_0xc299('0x51')]('VoiceExtension',attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x16ddf2,_0x2fabb4){var _0x5c961f=this;var _0x315eef=_0x5c961f[_0xc299('0x4')]===_0xc299('0x12')?_0x450eb1(_0x5c961f):_0x6ad2cc(_0x5c961f);return _0x2d8914(_0x5c961f,_0x16ddf2,_[_0xc299('0x4d')](_0x315eef)['priority']+0x1,_0x2fabb4)[_0xc299('0x34')](function(_0x465560){var _0x5ed215=_[_0xc299('0x4f')](_0x315eef,_0x465560);_0x5ed215[_0xc299('0xc')]({'type':_0x5c961f[_0xc299('0x4')],'app':_0xc299('0x52'),'exten':_0x5c961f[_0xc299('0x8')],'context':_0x5c961f[_0xc299('0x7')],'priority':_['last'](_0x5ed215)[_0xc299('0x4e')]+0x1,'VoiceExtensionId':_0x5c961f['id']});return _0x5ed215;});}}});};
\ No newline at end of file
index e7172fe..d75484d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c14=['raw','where','attributes','limit','include','map','model','GetVoiceExtension','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','then','info','VoiceExtension,\x20%s,\x20%s','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','VoiceExtension','findAll','options'];(function(_0x12b2ce,_0x349b04){var _0x546799=function(_0x663a43){while(--_0x663a43){_0x12b2ce['push'](_0x12b2ce['shift']());}};_0x546799(++_0x349b04);}(_0x6c14,0xd1));var _0x46c1=function(_0xe75b20,_0x4a056b){_0xe75b20=_0xe75b20-0x0;var _0x37d207=_0x6c14[_0xe75b20];return _0x37d207;};'use strict';var _=require(_0x46c1('0x0'));var util=require(_0x46c1('0x1'));var moment=require(_0x46c1('0x2'));var BPromise=require(_0x46c1('0x3'));var rs=require(_0x46c1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x46c1('0x5'))['db'];var utils=require(_0x46c1('0x6'));var logger=require(_0x46c1('0x7'))('rpc');var config=require(_0x46c1('0x8'));var jayson=require(_0x46c1('0x9'));var client=jayson[_0x46c1('0xa')][_0x46c1('0xb')]({'port':0x232a});config[_0x46c1('0xc')]=_[_0x46c1('0xd')](config[_0x46c1('0xc')],{'host':_0x46c1('0xe'),'port':0x18eb});var socket=require(_0x46c1('0xf'))(new Redis(config['redis']));require(_0x46c1('0x10'))[_0x46c1('0x11')](socket);function respondWithRpcPromise(_0x28fae2,_0x5e999d,_0x42af02){return new BPromise(function(_0x3676e3,_0x2c718c){return client['request'](_0x28fae2,_0x42af02)[_0x46c1('0x12')](function(_0x2e9325){logger[_0x46c1('0x13')](_0x46c1('0x14'),_0x5e999d,'request\x20sent');logger[_0x46c1('0x15')](_0x46c1('0x16'),_0x5e999d,'request\x20sent',JSON['stringify'](_0x2e9325));if(_0x2e9325[_0x46c1('0x17')]){if(_0x2e9325[_0x46c1('0x17')][_0x46c1('0x18')]===0x1f4){logger[_0x46c1('0x17')](_0x46c1('0x14'),_0x5e999d,_0x2e9325['error'][_0x46c1('0x19')]);return _0x2c718c(_0x2e9325[_0x46c1('0x17')][_0x46c1('0x19')]);}logger[_0x46c1('0x17')](_0x46c1('0x14'),_0x5e999d,_0x2e9325['error']['message']);return _0x3676e3(_0x2e9325[_0x46c1('0x17')][_0x46c1('0x19')]);}else{logger[_0x46c1('0x13')](_0x46c1('0x14'),_0x5e999d,_0x46c1('0x1a'));_0x3676e3(_0x2e9325[_0x46c1('0x1b')][_0x46c1('0x19')]);}})['catch'](function(_0x247a8b){logger[_0x46c1('0x17')]('VoiceExtension,\x20%s,\x20%s',_0x5e999d,_0x247a8b);_0x2c718c(_0x247a8b);});});}exports['GetVoiceExtension']=function(_0x17ff1d){var _0x5a5d95=this;return new Promise(function(_0x5b5290,_0x301c0c){return db[_0x46c1('0x1c')][_0x46c1('0x1d')]({'raw':_0x17ff1d[_0x46c1('0x1e')]?_0x17ff1d[_0x46c1('0x1e')][_0x46c1('0x1f')]===undefined?!![]:![]:!![],'where':_0x17ff1d[_0x46c1('0x1e')]?_0x17ff1d[_0x46c1('0x1e')][_0x46c1('0x20')]||null:null,'attributes':_0x17ff1d[_0x46c1('0x1e')]?_0x17ff1d[_0x46c1('0x1e')][_0x46c1('0x21')]||null:null,'limit':_0x17ff1d[_0x46c1('0x1e')]?_0x17ff1d[_0x46c1('0x1e')][_0x46c1('0x22')]||null:null,'include':_0x17ff1d[_0x46c1('0x1e')]?_0x17ff1d[_0x46c1('0x1e')][_0x46c1('0x23')]?_[_0x46c1('0x24')](_0x17ff1d[_0x46c1('0x1e')][_0x46c1('0x23')],function(_0x2924b8){return{'model':db[_0x2924b8[_0x46c1('0x25')]],'as':_0x2924b8['as'],'attributes':_0x2924b8['attributes'],'include':_0x2924b8['include']?_[_0x46c1('0x24')](_0x2924b8[_0x46c1('0x23')],function(_0x54f5e3){return{'model':db[_0x54f5e3[_0x46c1('0x25')]],'as':_0x54f5e3['as'],'attributes':_0x54f5e3[_0x46c1('0x21')],'include':_0x54f5e3[_0x46c1('0x23')]?_[_0x46c1('0x24')](_0x54f5e3[_0x46c1('0x23')],function(_0x3fdaea){return{'model':db[_0x3fdaea['model']],'as':_0x3fdaea['as'],'attributes':_0x3fdaea[_0x46c1('0x21')]};}):[]};}):[]};}):[]:[]})[_0x46c1('0x12')](function(_0x32f553){logger[_0x46c1('0x13')](_0x46c1('0x26'),_0x17ff1d);logger[_0x46c1('0x15')](_0x46c1('0x26'),_0x17ff1d,JSON['stringify'](_0x32f553));_0x5b5290(_0x32f553);})[_0x46c1('0x27')](function(_0x5448f4){logger[_0x46c1('0x17')](_0x46c1('0x26'),_0x5448f4[_0x46c1('0x19')],_0x17ff1d);_0x301c0c(_0x5a5d95[_0x46c1('0x17')](0x1f4,_0x5448f4['message']));});});};
\ No newline at end of file
+var _0x1d7e=['VoiceExtension','findAll','options','raw','where','attributes','limit','include','map','model','then','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./voiceExtension.socket','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceExtension'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x1d7e,0x7d));var _0xe1d7=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x1d7e[_0x4243a3];return _0x1b2a33;};'use strict';var _=require('lodash');var util=require(_0xe1d7('0x0'));var moment=require(_0xe1d7('0x1'));var BPromise=require(_0xe1d7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe1d7('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe1d7('0x4'));var logger=require(_0xe1d7('0x5'))(_0xe1d7('0x6'));var config=require(_0xe1d7('0x7'));var jayson=require(_0xe1d7('0x8'));var client=jayson[_0xe1d7('0x9')][_0xe1d7('0xa')]({'port':0x232a});config[_0xe1d7('0xb')]=_[_0xe1d7('0xc')](config[_0xe1d7('0xb')],{'host':_0xe1d7('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe1d7('0xb')]));require(_0xe1d7('0xe'))['register'](socket);function respondWithRpcPromise(_0xce8fb3,_0x56f8df,_0x28f0c4){return new BPromise(function(_0x57f715,_0x46e179){return client['request'](_0xce8fb3,_0x28f0c4)['then'](function(_0x3ffa8e){logger[_0xe1d7('0xf')](_0xe1d7('0x10'),_0x56f8df,_0xe1d7('0x11'));logger[_0xe1d7('0x12')](_0xe1d7('0x13'),_0x56f8df,_0xe1d7('0x11'),JSON[_0xe1d7('0x14')](_0x3ffa8e));if(_0x3ffa8e['error']){if(_0x3ffa8e[_0xe1d7('0x15')][_0xe1d7('0x16')]===0x1f4){logger[_0xe1d7('0x15')](_0xe1d7('0x10'),_0x56f8df,_0x3ffa8e[_0xe1d7('0x15')][_0xe1d7('0x17')]);return _0x46e179(_0x3ffa8e[_0xe1d7('0x15')]['message']);}logger[_0xe1d7('0x15')](_0xe1d7('0x10'),_0x56f8df,_0x3ffa8e[_0xe1d7('0x15')]['message']);return _0x57f715(_0x3ffa8e[_0xe1d7('0x15')][_0xe1d7('0x17')]);}else{logger[_0xe1d7('0xf')](_0xe1d7('0x10'),_0x56f8df,_0xe1d7('0x11'));_0x57f715(_0x3ffa8e[_0xe1d7('0x18')][_0xe1d7('0x17')]);}})[_0xe1d7('0x19')](function(_0x4722aa){logger[_0xe1d7('0x15')](_0xe1d7('0x10'),_0x56f8df,_0x4722aa);_0x46e179(_0x4722aa);});});}exports[_0xe1d7('0x1a')]=function(_0x4d8c7d){var _0x10cde2=this;return new Promise(function(_0x17317e,_0x1e9a1e){return db[_0xe1d7('0x1b')][_0xe1d7('0x1c')]({'raw':_0x4d8c7d['options']?_0x4d8c7d[_0xe1d7('0x1d')][_0xe1d7('0x1e')]===undefined?!![]:![]:!![],'where':_0x4d8c7d[_0xe1d7('0x1d')]?_0x4d8c7d[_0xe1d7('0x1d')][_0xe1d7('0x1f')]||null:null,'attributes':_0x4d8c7d['options']?_0x4d8c7d[_0xe1d7('0x1d')][_0xe1d7('0x20')]||null:null,'limit':_0x4d8c7d[_0xe1d7('0x1d')]?_0x4d8c7d[_0xe1d7('0x1d')][_0xe1d7('0x21')]||null:null,'include':_0x4d8c7d[_0xe1d7('0x1d')]?_0x4d8c7d[_0xe1d7('0x1d')][_0xe1d7('0x22')]?_[_0xe1d7('0x23')](_0x4d8c7d[_0xe1d7('0x1d')]['include'],function(_0x672bed){return{'model':db[_0x672bed[_0xe1d7('0x24')]],'as':_0x672bed['as'],'attributes':_0x672bed[_0xe1d7('0x20')],'include':_0x672bed['include']?_[_0xe1d7('0x23')](_0x672bed[_0xe1d7('0x22')],function(_0x19c671){return{'model':db[_0x19c671[_0xe1d7('0x24')]],'as':_0x19c671['as'],'attributes':_0x19c671[_0xe1d7('0x20')],'include':_0x19c671[_0xe1d7('0x22')]?_[_0xe1d7('0x23')](_0x19c671['include'],function(_0x3e8ca3){return{'model':db[_0x3e8ca3['model']],'as':_0x3e8ca3['as'],'attributes':_0x3e8ca3[_0xe1d7('0x20')]};}):[]};}):[]};}):[]:[]})[_0xe1d7('0x25')](function(_0x48d17e){logger['info'](_0xe1d7('0x1a'),_0x4d8c7d);logger[_0xe1d7('0x12')](_0xe1d7('0x1a'),_0x4d8c7d,JSON[_0xe1d7('0x14')](_0x48d17e));_0x17317e(_0x48d17e);})[_0xe1d7('0x19')](function(_0x5bf10c){logger[_0xe1d7('0x15')](_0xe1d7('0x1a'),_0x5bf10c[_0xe1d7('0x17')],_0x4d8c7d);_0x1e9a1e(_0x10cde2[_0xe1d7('0x15')](0x1f4,_0x5bf10c[_0xe1d7('0x17')]));});});};
\ No newline at end of file
index 0e1d86c..81a77c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['update','emit','removeListener','register','length','./voiceExtension.events'];(function(_0x428d39,_0x528e86){var _0x2b9029=function(_0x3999a3){while(--_0x3999a3){_0x428d39['push'](_0x428d39['shift']());}};_0x2b9029(++_0x528e86);}(_0x326f,0xd1));var _0xf326=function(_0xf2d15c,_0x3192a1){_0xf2d15c=_0xf2d15c-0x0;var _0x3c0c80=_0x326f[_0xf2d15c];return _0x3c0c80;};'use strict';var VoiceExtensionEvents=require(_0xf326('0x0'));var events=['save','remove',_0xf326('0x1')];function createListener(_0x330ddb,_0x22aabf){return function(_0x408257){_0x22aabf[_0xf326('0x2')](_0x330ddb,_0x408257);};}function removeListener(_0x120a26,_0x9445c6){return function(){VoiceExtensionEvents[_0xf326('0x3')](_0x120a26,_0x9445c6);};}exports[_0xf326('0x4')]=function(_0x3ace29){for(var _0x4c2249=0x0,_0x3c254d=events[_0xf326('0x5')];_0x4c2249<_0x3c254d;_0x4c2249++){var _0x165f95=events[_0x4c2249];var _0x1e7b8a=createListener('voiceExtension:'+_0x165f95,_0x3ace29);VoiceExtensionEvents['on'](_0x165f95,_0x1e7b8a);}};
\ No newline at end of file
+var _0x326f=['update','emit','removeListener','register','length','./voiceExtension.events'];(function(_0x2f9955,_0x281db4){var _0x174ae7=function(_0x243112){while(--_0x243112){_0x2f9955['push'](_0x2f9955['shift']());}};_0x174ae7(++_0x281db4);}(_0x326f,0xd1));var _0xf326=function(_0x12d8f8,_0x3b0fd2){_0x12d8f8=_0x12d8f8-0x0;var _0x2ceca1=_0x326f[_0x12d8f8];return _0x2ceca1;};'use strict';var VoiceExtensionEvents=require(_0xf326('0x0'));var events=['save','remove',_0xf326('0x1')];function createListener(_0x330ddb,_0x22aabf){return function(_0x408257){_0x22aabf[_0xf326('0x2')](_0x330ddb,_0x408257);};}function removeListener(_0x120a26,_0x9445c6){return function(){VoiceExtensionEvents[_0xf326('0x3')](_0x120a26,_0x9445c6);};}exports[_0xf326('0x4')]=function(_0x3ace29){for(var _0x4c2249=0x0,_0x3c254d=events[_0xf326('0x5')];_0x4c2249<_0x3c254d;_0x4c2249++){var _0x165f95=events[_0x4c2249];var _0x1e7b8a=createListener('voiceExtension:'+_0x165f95,_0x3ace29);VoiceExtensionEvents['on'](_0x165f95,_0x1e7b8a);}};
\ No newline at end of file
index 411a8cd..5e060e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','/:id','isAuthenticated','/:id/messages','getMessages','post','create','put','update','delete','destroy','multer','util'];(function(_0x2cfe2,_0x3b2e20){var _0x287633=function(_0x52f550){while(--_0x52f550){_0x2cfe2['push'](_0x2cfe2['shift']());}};_0x287633(++_0x3b2e20);}(_0x9f0e,0x116));var _0xe9f0=function(_0x521d06,_0x40fa11){_0x521d06=_0x521d06-0x0;var _0x1e430b=_0x9f0e[_0x521d06];return _0x1e430b;};'use strict';var multer=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var path=require(_0xe9f0('0x2'));var timeout=require(_0xe9f0('0x3'));var express=require(_0xe9f0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe9f0('0x5'));var interaction=require(_0xe9f0('0x6'));var config=require(_0xe9f0('0x7'));var controller=require(_0xe9f0('0x8'));router[_0xe9f0('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe9f0('0x9')](_0xe9f0('0xa'),auth[_0xe9f0('0xb')](),controller['show']);router[_0xe9f0('0x9')](_0xe9f0('0xc'),auth[_0xe9f0('0xb')](),controller[_0xe9f0('0xd')]);router[_0xe9f0('0xe')]('/',auth[_0xe9f0('0xb')](),controller[_0xe9f0('0xf')]);router[_0xe9f0('0x10')](_0xe9f0('0xa'),auth['isAuthenticated'](),controller[_0xe9f0('0x11')]);router[_0xe9f0('0x12')](_0xe9f0('0xa'),auth['isAuthenticated'](),controller[_0xe9f0('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xa46e=['delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','index','isAuthenticated','show','/:id/messages','create','put','update'];(function(_0x1e8683,_0x39ed26){var _0x10553f=function(_0x2b172e){while(--_0x2b172e){_0x1e8683['push'](_0x1e8683['shift']());}};_0x10553f(++_0x39ed26);}(_0xa46e,0x8a));var _0xea46=function(_0x21205e,_0x7eb8e7){_0x21205e=_0x21205e-0x0;var _0x136ebb=_0xa46e[_0x21205e];return _0x136ebb;};'use strict';var multer=require(_0xea46('0x0'));var util=require(_0xea46('0x1'));var path=require('path');var timeout=require(_0xea46('0x2'));var express=require(_0xea46('0x3'));var router=express[_0xea46('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xea46('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xea46('0x6'));var controller=require('./voiceMail.controller');router[_0xea46('0x7')]('/',auth['isAuthenticated'](),controller[_0xea46('0x8')]);router[_0xea46('0x7')]('/:id',auth[_0xea46('0x9')](),controller[_0xea46('0xa')]);router[_0xea46('0x7')](_0xea46('0xb'),auth[_0xea46('0x9')](),controller['getMessages']);router['post']('/',auth['isAuthenticated'](),controller[_0xea46('0xc')]);router[_0xea46('0xd')]('/:id',auth[_0xea46('0x9')](),controller[_0xea46('0xe')]);router[_0xea46('0xf')]('/:id',auth[_0xea46('0x9')](),controller[_0xea46('0x10')]);module['exports']=router;
\ No newline at end of file
index bc1a938..8a63529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9004=['INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP'];(function(_0xa79b9,_0x45570c){var _0x33c7db=function(_0x1401db){while(--_0x1401db){_0xa79b9['push'](_0xa79b9['shift']());}};_0x33c7db(++_0x45570c);}(_0x9004,0x146));var _0x4900=function(_0x1865f3,_0x428267){_0x1865f3=_0x1865f3-0x0;var _0xc9e2b0=_0x9004[_0x1865f3];return _0xc9e2b0;};'use strict';var Sequelize=require(_0x4900('0x0'));module[_0x4900('0x1')]={'customer_id':{'type':Sequelize[_0x4900('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':_0x4900('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0x4900('0x2')],'defaultValue':'','allowNull':![],'unique':_0x4900('0x4')},'password':{'type':Sequelize[_0x4900('0x2')]},'fullname':{'type':Sequelize[_0x4900('0x2')]},'email':{'type':Sequelize[_0x4900('0x2')],'validate':{'isEmail':!![]},'set':function(_0x23f91f){this[_0x4900('0x5')](_0x4900('0x6'),typeof _0x23f91f===_0x4900('0x7')&&_0x23f91f['trim']()?_0x23f91f[_0x4900('0x8')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x4900('0x9')},'attach':{'type':Sequelize[_0x4900('0xa')](_0x4900('0xb'),'no'),'defaultValue':_0x4900('0xb'),'allowNull':![]},'saycid':{'type':Sequelize[_0x4900('0xa')](_0x4900('0xb'),'no'),'defaultValue':_0x4900('0xb'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x4900('0x2')]},'review':{'type':Sequelize[_0x4900('0xa')](_0x4900('0xb'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x4900('0xa')](_0x4900('0xb'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x4900('0xa')](_0x4900('0xb'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x4900('0xc'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x4900('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x4900('0xa')](_0x4900('0xb'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0x4900('0xb'),'no'),'defaultValue':_0x4900('0xb'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM'](_0x4900('0xb'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x4900('0xa')](_0x4900('0xb'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x4900('0xa')](_0x4900('0xb'),'no'),'defaultValue':_0x4900('0xb'),'allowNull':![]},'stamp':{'type':_0x4900('0xd')},'emailsubject':{'type':Sequelize[_0x4900('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0x4900('0xe')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x4900('0xe')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x4900('0xf')],'get':function(){return this[_0x4900('0x10')](_0x4900('0x11'))+_0x4900('0x12')+this[_0x4900('0x10')](_0x4900('0x13'));}}};
\ No newline at end of file
+var _0xe0f2=['\x20-\x20','mailbox','sequelize','exports','STRING','contest_mailbox','email','string','trim','ENUM','yes','TIMESTAMP','INTEGER','getDataValue','fullname'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe0f2,0x98));var _0x2e0f=function(_0x4e5f1d,_0x3725bf){_0x4e5f1d=_0x4e5f1d-0x0;var _0x2c093=_0xe0f2[_0x4e5f1d];return _0x2c093;};'use strict';var Sequelize=require(_0x2e0f('0x0'));module[_0x2e0f('0x1')]={'customer_id':{'type':Sequelize[_0x2e0f('0x2')]},'context':{'type':Sequelize[_0x2e0f('0x2')],'defaultValue':'from-voicemail','unique':_0x2e0f('0x3')},'mailbox':{'type':Sequelize[_0x2e0f('0x2')],'defaultValue':'','allowNull':![],'unique':_0x2e0f('0x3')},'password':{'type':Sequelize[_0x2e0f('0x2')]},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x597dcc){this['setDataValue'](_0x2e0f('0x4'),typeof _0x597dcc===_0x2e0f('0x5')&&_0x597dcc['trim']()?_0x597dcc[_0x2e0f('0x6')]():null);}},'pager':{'type':Sequelize[_0x2e0f('0x2')]},'tz':{'type':Sequelize[_0x2e0f('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize[_0x2e0f('0x7')](_0x2e0f('0x8'),'no'),'defaultValue':_0x2e0f('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0x2e0f('0x7')]('yes','no'),'defaultValue':_0x2e0f('0x8'),'allowNull':![]},'dialout':{'type':Sequelize[_0x2e0f('0x2')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0x2e0f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x2e0f('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x2e0f('0x7')](_0x2e0f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0x2e0f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x2e0f('0x7')](_0x2e0f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x2e0f('0x7')](_0x2e0f('0x8'),'no'),'defaultValue':_0x2e0f('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0x2e0f('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x2e0f('0x7')](_0x2e0f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x2e0f('0x7')]('yes','no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x2e0f('0x9')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0x2e0f('0x2')]},'maxsecs':{'type':Sequelize[_0x2e0f('0xa')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x2e0f('0xa')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x2e0f('0xb')](_0x2e0f('0xc'))+_0x2e0f('0xd')+this[_0x2e0f('0xb')](_0x2e0f('0xe'));}}};
\ No newline at end of file
index 559129d..f8d8ede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7916=['update','then','get','destroy','end','error','name','send','index','map','VoiceMail','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','length','attributes','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','getMessages','VoiceMailMessage','hasOwnProperty','pick','mailbox','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','reject'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x7916,0x128));var _0x6791=function(_0x4d4f3e,_0x1d9c5d){_0x4d4f3e=_0x4d4f3e-0x0;var _0xc99ca9=_0x7916[_0x4d4f3e];return _0xc99ca9;};'use strict';var emlformat=require(_0x6791('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6791('0x1'));var jsonpatch=require(_0x6791('0x2'));var rp=require('request-promise');var moment=require(_0x6791('0x3'));var BPromise=require(_0x6791('0x4'));var Mustache=require(_0x6791('0x5'));var util=require(_0x6791('0x6'));var path=require('path');var sox=require(_0x6791('0x7'));var csv=require('to-csv');var ejs=require(_0x6791('0x8'));var fs=require('fs');var fs_extra=require(_0x6791('0x9'));var _=require('lodash');var squel=require(_0x6791('0xa'));var crypto=require('crypto');var jsforce=require(_0x6791('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6791('0xc'));var Papa=require(_0x6791('0xd'));var Redis=require('ioredis');var authService=require(_0x6791('0xe'));var qs=require(_0x6791('0xf'));var as=require(_0x6791('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6791('0x11'))(_0x6791('0x12'));var utils=require(_0x6791('0x13'));var config=require(_0x6791('0x14'));var licenseUtil=require(_0x6791('0x15'));var db=require(_0x6791('0x16'))['db'];function respondWithStatusCode(_0x61ac73,_0x16c62b){_0x16c62b=_0x16c62b||0xcc;return function(_0x423e22){if(_0x423e22){return _0x61ac73[_0x6791('0x17')](_0x16c62b);}return _0x61ac73[_0x6791('0x18')](_0x16c62b)['end']();};}function respondWithResult(_0x4b1719,_0x34b28d){_0x34b28d=_0x34b28d||0xc8;return function(_0x5122f9){if(_0x5122f9){return _0x4b1719[_0x6791('0x18')](_0x34b28d)['json'](_0x5122f9);}};}function respondWithFilteredResult(_0x3be9f0,_0x163898){return function(_0x517910){if(_0x517910){var _0x3e4792=typeof _0x163898['offset']===_0x6791('0x19')&&typeof _0x163898[_0x6791('0x1a')]==='undefined';var _0xbc35d=_0x517910[_0x6791('0x1b')];var _0x5bec14=_0x3e4792?0x0:_0x163898[_0x6791('0x1c')];var _0x4d8a79=_0x3e4792?_0x517910[_0x6791('0x1b')]:_0x163898[_0x6791('0x1c')]+_0x163898[_0x6791('0x1a')];var _0x3a72ce;if(_0x4d8a79>=_0xbc35d){_0x4d8a79=_0xbc35d;_0x3a72ce=0xc8;}else{_0x3a72ce=0xce;}_0x3be9f0[_0x6791('0x18')](_0x3a72ce);return _0x3be9f0[_0x6791('0x1d')](_0x6791('0x1e'),_0x5bec14+'-'+_0x4d8a79+'/'+_0xbc35d)['json'](_0x517910);}return null;};}function patchUpdates(_0x4a2922){return function(_0x306acb){try{jsonpatch['apply'](_0x306acb,_0x4a2922,!![]);}catch(_0x21ef16){return BPromise[_0x6791('0x1f')](_0x21ef16);}return _0x306acb['save']();};}function saveUpdates(_0x17f200,_0x309610){return function(_0x15b9ab){if(_0x15b9ab){return _0x15b9ab[_0x6791('0x20')](_0x17f200)['then'](function(_0x3e17b3){return _0x3e17b3;});}return null;};}function removeEntity(_0x1b516d,_0x4a8717){return function(_0x53bb44){if(_0x53bb44){return _0x53bb44['destroy']()[_0x6791('0x21')](function(){var _0x502043=_0x53bb44[_0x6791('0x22')]({'plain':!![]});var _0x5409f1='Voicemails';return db['UserProfileResource'][_0x6791('0x23')]({'where':{'type':_0x5409f1,'resourceId':_0x502043['id']}})[_0x6791('0x21')](function(){return _0x53bb44;});})[_0x6791('0x21')](function(){_0x1b516d['status'](0xcc)[_0x6791('0x24')]();});}};}function handleEntityNotFound(_0x30cc17,_0x493a59){return function(_0x342107){if(!_0x342107){_0x30cc17['sendStatus'](0x194);}return _0x342107;};}function handleError(_0x424b0e,_0x49dd24){_0x49dd24=_0x49dd24||0x1f4;return function(_0x4fc5d5){logger[_0x6791('0x25')](_0x4fc5d5['stack']);if(_0x4fc5d5[_0x6791('0x26')]){delete _0x4fc5d5[_0x6791('0x26')];}_0x424b0e['status'](_0x49dd24)[_0x6791('0x27')](_0x4fc5d5);};}exports[_0x6791('0x28')]=function(_0x234c5e,_0xd36448){var _0x5d9d54={},_0x4f91d6={},_0x348b9c={'count':0x0,'rows':[]};var _0x5e5ac3=_[_0x6791('0x29')](db[_0x6791('0x2a')][_0x6791('0x2b')],function(_0x2b98b8){return{'name':_0x2b98b8[_0x6791('0x2c')],'type':_0x2b98b8[_0x6791('0x2d')][_0x6791('0x2e')]};});_0x4f91d6[_0x6791('0x2f')]=_[_0x6791('0x29')](_0x5e5ac3,_0x6791('0x26'));_0x4f91d6['query']=_[_0x6791('0x30')](_0x234c5e[_0x6791('0x31')]);_0x4f91d6[_0x6791('0x32')]=_[_0x6791('0x33')](_0x4f91d6[_0x6791('0x2f')],_0x4f91d6[_0x6791('0x31')]);_0x5d9d54['attributes']=_['intersection'](_0x4f91d6['model'],qs[_0x6791('0x34')](_0x234c5e[_0x6791('0x31')][_0x6791('0x34')]));_0x5d9d54['attributes']=_0x5d9d54['attributes'][_0x6791('0x35')]?_0x5d9d54[_0x6791('0x36')]:_0x4f91d6[_0x6791('0x2f')];if(!_0x234c5e[_0x6791('0x31')]['hasOwnProperty'](_0x6791('0x37'))){_0x5d9d54[_0x6791('0x1a')]=qs[_0x6791('0x1a')](_0x234c5e['query'][_0x6791('0x1a')]);_0x5d9d54['offset']=qs['offset'](_0x234c5e[_0x6791('0x31')][_0x6791('0x1c')]);}_0x5d9d54['order']=qs[_0x6791('0x38')](_0x234c5e[_0x6791('0x31')][_0x6791('0x38')]);_0x5d9d54[_0x6791('0x39')]=qs[_0x6791('0x32')](_['pick'](_0x234c5e[_0x6791('0x31')],_0x4f91d6[_0x6791('0x32')]),_0x5e5ac3);if(_0x234c5e[_0x6791('0x31')]['filter']){_0x5d9d54[_0x6791('0x39')]=_[_0x6791('0x3a')](_0x5d9d54[_0x6791('0x39')],{'$or':_['map'](_0x5e5ac3,function(_0x11a012){if(_0x11a012[_0x6791('0x2d')]!==_0x6791('0x3b')){var _0x122aa5={};_0x122aa5[_0x11a012['name']]={'$like':'%'+_0x234c5e[_0x6791('0x31')][_0x6791('0x3c')]+'%'};return _0x122aa5;}})});}_0x5d9d54=_[_0x6791('0x3a')]({},_0x5d9d54,_0x234c5e[_0x6791('0x3d')]);var _0x12f121={'where':_0x5d9d54[_0x6791('0x39')]};return db[_0x6791('0x2a')][_0x6791('0x1b')](_0x12f121)[_0x6791('0x21')](function(_0x4e4004){_0x348b9c['count']=_0x4e4004;if(_0x234c5e[_0x6791('0x31')][_0x6791('0x3e')]){_0x5d9d54['include']=[{'all':!![]}];}return db[_0x6791('0x2a')][_0x6791('0x3f')](_0x5d9d54);})[_0x6791('0x21')](function(_0x3edb86){_0x348b9c[_0x6791('0x40')]=_0x3edb86;return _0x348b9c;})[_0x6791('0x21')](respondWithFilteredResult(_0xd36448,_0x5d9d54))[_0x6791('0x41')](handleError(_0xd36448,null));};exports['show']=function(_0xb3bea8,_0x4b9fca){var _0x17ecf0={'raw':!![],'where':{'id':_0xb3bea8[_0x6791('0x42')]['id']}},_0xfc170e={};_0xfc170e[_0x6791('0x2f')]=_['keys'](db[_0x6791('0x2a')][_0x6791('0x2b')]);_0xfc170e[_0x6791('0x31')]=_[_0x6791('0x30')](_0xb3bea8[_0x6791('0x31')]);_0xfc170e[_0x6791('0x32')]=_[_0x6791('0x33')](_0xfc170e[_0x6791('0x2f')],_0xfc170e['query']);_0x17ecf0[_0x6791('0x36')]=_[_0x6791('0x33')](_0xfc170e[_0x6791('0x2f')],qs[_0x6791('0x34')](_0xb3bea8['query'][_0x6791('0x34')]));_0x17ecf0[_0x6791('0x36')]=_0x17ecf0['attributes'][_0x6791('0x35')]?_0x17ecf0['attributes']:_0xfc170e[_0x6791('0x2f')];if(_0xb3bea8[_0x6791('0x31')][_0x6791('0x3e')]){_0x17ecf0[_0x6791('0x43')]=[{'all':!![]}];}_0x17ecf0=_[_0x6791('0x3a')]({},_0x17ecf0,_0xb3bea8[_0x6791('0x3d')]);return db[_0x6791('0x2a')][_0x6791('0x44')](_0x17ecf0)[_0x6791('0x21')](handleEntityNotFound(_0x4b9fca,null))['then'](respondWithResult(_0x4b9fca,null))[_0x6791('0x41')](handleError(_0x4b9fca,null));};exports['create']=function(_0x10e806,_0x2bb86a){return db[_0x6791('0x2a')][_0x6791('0x45')](_0x10e806[_0x6791('0x46')],{})['then'](function(_0x2bc08d){var _0x35e087=_0x10e806[_0x6791('0x47')][_0x6791('0x22')]({'plain':!![]});if(!_0x35e087)throw new Error(_0x6791('0x48'));if(_0x35e087['role']===_0x6791('0x47')){var _0x42948b=_0x2bc08d['get']({'plain':!![]});var _0x3df699='Voicemails';return db[_0x6791('0x49')][_0x6791('0x44')]({'where':{'name':_0x3df699,'userProfileId':_0x35e087[_0x6791('0x4a')]},'raw':!![]})[_0x6791('0x21')](function(_0x558069){if(_0x558069&&_0x558069[_0x6791('0x4b')]===0x0){return db[_0x6791('0x4c')]['create']({'name':_0x42948b[_0x6791('0x26')],'resourceId':_0x42948b['id'],'type':_0x558069[_0x6791('0x26')],'sectionId':_0x558069['id']},{})[_0x6791('0x21')](function(){return _0x2bc08d;});}else{return _0x2bc08d;}})['catch'](function(_0x355e97){logger[_0x6791('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x355e97);throw _0x355e97;});}return _0x2bc08d;})[_0x6791('0x21')](respondWithResult(_0x2bb86a,0xc9))[_0x6791('0x41')](handleError(_0x2bb86a,null));};exports['update']=function(_0x169531,_0x216498){if(_0x169531[_0x6791('0x46')]['id']){delete _0x169531[_0x6791('0x46')]['id'];}return db['VoiceMail'][_0x6791('0x44')]({'where':{'id':_0x169531[_0x6791('0x42')]['id']}})[_0x6791('0x21')](handleEntityNotFound(_0x216498,null))['then'](saveUpdates(_0x169531['body'],null))[_0x6791('0x21')](respondWithResult(_0x216498,null))[_0x6791('0x41')](handleError(_0x216498,null));};exports[_0x6791('0x23')]=function(_0x45756f,_0x288f05){return db['VoiceMail']['find']({'where':{'id':_0x45756f[_0x6791('0x42')]['id']}})['then'](handleEntityNotFound(_0x288f05,null))['then'](removeEntity(_0x288f05,null))[_0x6791('0x41')](handleError(_0x288f05,null));};exports[_0x6791('0x4d')]=function(_0x2cb48e,_0x10b41b,_0x13089d){return db[_0x6791('0x2a')]['findOne']({'where':{'id':_0x2cb48e['params']['id']}})[_0x6791('0x21')](handleEntityNotFound(_0x10b41b,null))[_0x6791('0x21')](function(_0x56e424){var _0x44b1df;var _0x535ecf={},_0x473443={};_0x473443[_0x6791('0x2f')]=_['keys'](db[_0x6791('0x4e')][_0x6791('0x2b')]);_0x473443[_0x6791('0x31')]=_['keys'](_0x2cb48e[_0x6791('0x31')]);_0x473443[_0x6791('0x32')]=_[_0x6791('0x33')](_0x473443[_0x6791('0x2f')],_0x473443[_0x6791('0x31')]);_0x535ecf['attributes']=_['intersection'](_0x473443[_0x6791('0x2f')],qs[_0x6791('0x34')](_0x2cb48e['query'][_0x6791('0x34')]));_0x535ecf[_0x6791('0x36')]=_0x535ecf[_0x6791('0x36')][_0x6791('0x35')]?_0x535ecf[_0x6791('0x36')]:_0x473443[_0x6791('0x2f')];if(!_0x2cb48e[_0x6791('0x31')][_0x6791('0x4f')]('nolimit')){_0x535ecf[_0x6791('0x1a')]=qs[_0x6791('0x1a')](_0x2cb48e[_0x6791('0x31')][_0x6791('0x1a')]);_0x535ecf['offset']=qs[_0x6791('0x1c')](_0x2cb48e[_0x6791('0x31')][_0x6791('0x1c')]);}_0x535ecf['order']=qs[_0x6791('0x38')](_0x2cb48e[_0x6791('0x31')][_0x6791('0x38')]);_0x535ecf[_0x6791('0x39')]=qs['filters'](_[_0x6791('0x50')](_0x2cb48e[_0x6791('0x31')],_0x473443['filters']));if(_0x2cb48e[_0x6791('0x31')][_0x6791('0x3c')]){_0x535ecf[_0x6791('0x39')]=_[_0x6791('0x3a')](_0x535ecf[_0x6791('0x39')],{'$or':_[_0x6791('0x29')](_0x535ecf['attributes'],function(_0x301f2f){var _0x33caf0={};_0x33caf0[_0x301f2f]={'$like':'%'+_0x2cb48e[_0x6791('0x31')]['filter']+'%'};return _0x33caf0;})});}_0x535ecf[_0x6791('0x39')]=_['merge'](_0x535ecf[_0x6791('0x39')],{'mailboxuser':_0x56e424[_0x6791('0x51')]});_0x535ecf=_[_0x6791('0x3a')]({},_0x535ecf,_0x2cb48e[_0x6791('0x3d')]);return db[_0x6791('0x4e')]['findAndCountAll'](_0x535ecf)[_0x6791('0x21')](respondWithFilteredResult(_0x10b41b,_0x535ecf));})[_0x6791('0x41')](handleError(_0x10b41b,null));};
\ No newline at end of file
+var _0x0abf=['Content-Range','apply','reject','save','update','then','get','Voicemails','UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','model','keys','query','attributes','intersection','fields','length','nolimit','sort','where','filters','pick','filter','map','type','VIRTUAL','merge','options','VoiceMail','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','destroy','getMessages','findOne','VoiceMailMessage','hasOwnProperty','order','eml-format','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x65c1eb,_0x31191b){var _0x65f45c=function(_0xee6714){while(--_0xee6714){_0x65c1eb['push'](_0x65c1eb['shift']());}};_0x65f45c(++_0x31191b);}(_0x0abf,0xe8));var _0xf0ab=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x0abf[_0x2b4411];return _0x8e41ef;};'use strict';var emlformat=require(_0xf0ab('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0ab('0x1'));var jsonpatch=require(_0xf0ab('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf0ab('0x3'));var Mustache=require('mustache');var util=require(_0xf0ab('0x4'));var path=require(_0xf0ab('0x5'));var sox=require(_0xf0ab('0x6'));var csv=require(_0xf0ab('0x7'));var ejs=require(_0xf0ab('0x8'));var fs=require('fs');var fs_extra=require(_0xf0ab('0x9'));var _=require(_0xf0ab('0xa'));var squel=require('squel');var crypto=require(_0xf0ab('0xb'));var jsforce=require(_0xf0ab('0xc'));var deskjs=require(_0xf0ab('0xd'));var toCsv=require(_0xf0ab('0x7'));var querystring=require('querystring');var Papa=require(_0xf0ab('0xe'));var Redis=require(_0xf0ab('0xf'));var authService=require(_0xf0ab('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf0ab('0x11'));var logger=require('../../config/logger')(_0xf0ab('0x12'));var utils=require(_0xf0ab('0x13'));var config=require(_0xf0ab('0x14'));var licenseUtil=require(_0xf0ab('0x15'));var db=require(_0xf0ab('0x16'))['db'];function respondWithStatusCode(_0x38ca67,_0x34ccdc){_0x34ccdc=_0x34ccdc||0xcc;return function(_0x4fdd5f){if(_0x4fdd5f){return _0x38ca67[_0xf0ab('0x17')](_0x34ccdc);}return _0x38ca67[_0xf0ab('0x18')](_0x34ccdc)[_0xf0ab('0x19')]();};}function respondWithResult(_0x35c75f,_0x1824ef){_0x1824ef=_0x1824ef||0xc8;return function(_0x36cabe){if(_0x36cabe){return _0x35c75f[_0xf0ab('0x18')](_0x1824ef)[_0xf0ab('0x1a')](_0x36cabe);}};}function respondWithFilteredResult(_0x180d0b,_0x3c5bfd){return function(_0x20f453){if(_0x20f453){var _0x221bac=typeof _0x3c5bfd[_0xf0ab('0x1b')]===_0xf0ab('0x1c')&&typeof _0x3c5bfd[_0xf0ab('0x1d')]==='undefined';var _0x457465=_0x20f453[_0xf0ab('0x1e')];var _0x1803f0=_0x221bac?0x0:_0x3c5bfd[_0xf0ab('0x1b')];var _0x776619=_0x221bac?_0x20f453[_0xf0ab('0x1e')]:_0x3c5bfd[_0xf0ab('0x1b')]+_0x3c5bfd[_0xf0ab('0x1d')];var _0x1713d6;if(_0x776619>=_0x457465){_0x776619=_0x457465;_0x1713d6=0xc8;}else{_0x1713d6=0xce;}_0x180d0b[_0xf0ab('0x18')](_0x1713d6);return _0x180d0b[_0xf0ab('0x1f')](_0xf0ab('0x20'),_0x1803f0+'-'+_0x776619+'/'+_0x457465)[_0xf0ab('0x1a')](_0x20f453);}return null;};}function patchUpdates(_0x22a205){return function(_0x2cd961){try{jsonpatch[_0xf0ab('0x21')](_0x2cd961,_0x22a205,!![]);}catch(_0x537673){return BPromise[_0xf0ab('0x22')](_0x537673);}return _0x2cd961[_0xf0ab('0x23')]();};}function saveUpdates(_0x1e1483,_0x11ab3a){return function(_0x3bf6a1){if(_0x3bf6a1){return _0x3bf6a1[_0xf0ab('0x24')](_0x1e1483)[_0xf0ab('0x25')](function(_0x20140b){return _0x20140b;});}return null;};}function removeEntity(_0x36ad01,_0x18bb37){return function(_0x43119f){if(_0x43119f){return _0x43119f['destroy']()['then'](function(){var _0x4eee21=_0x43119f[_0xf0ab('0x26')]({'plain':!![]});var _0x4f0caf=_0xf0ab('0x27');return db[_0xf0ab('0x28')]['destroy']({'where':{'type':_0x4f0caf,'resourceId':_0x4eee21['id']}})[_0xf0ab('0x25')](function(){return _0x43119f;});})[_0xf0ab('0x25')](function(){_0x36ad01[_0xf0ab('0x18')](0xcc)[_0xf0ab('0x19')]();});}};}function handleEntityNotFound(_0x7d4ff9,_0x502921){return function(_0x2d0da7){if(!_0x2d0da7){_0x7d4ff9['sendStatus'](0x194);}return _0x2d0da7;};}function handleError(_0x55d799,_0x1dcd2e){_0x1dcd2e=_0x1dcd2e||0x1f4;return function(_0x4306c6){logger[_0xf0ab('0x29')](_0x4306c6[_0xf0ab('0x2a')]);if(_0x4306c6[_0xf0ab('0x2b')]){delete _0x4306c6[_0xf0ab('0x2b')];}_0x55d799[_0xf0ab('0x18')](_0x1dcd2e)[_0xf0ab('0x2c')](_0x4306c6);};}exports[_0xf0ab('0x2d')]=function(_0x2f0fcd,_0x21e8ac){var _0x199753={},_0x58cbe1={},_0x1e1ffb={'count':0x0,'rows':[]};var _0x35973a=_['map'](db['VoiceMail'][_0xf0ab('0x2e')],function(_0x1dc84e){return{'name':_0x1dc84e[_0xf0ab('0x2f')],'type':_0x1dc84e['type']['key']};});_0x58cbe1[_0xf0ab('0x30')]=_['map'](_0x35973a,_0xf0ab('0x2b'));_0x58cbe1['query']=_[_0xf0ab('0x31')](_0x2f0fcd[_0xf0ab('0x32')]);_0x58cbe1['filters']=_['intersection'](_0x58cbe1[_0xf0ab('0x30')],_0x58cbe1[_0xf0ab('0x32')]);_0x199753[_0xf0ab('0x33')]=_[_0xf0ab('0x34')](_0x58cbe1[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x2f0fcd[_0xf0ab('0x32')][_0xf0ab('0x35')]));_0x199753[_0xf0ab('0x33')]=_0x199753[_0xf0ab('0x33')][_0xf0ab('0x36')]?_0x199753[_0xf0ab('0x33')]:_0x58cbe1[_0xf0ab('0x30')];if(!_0x2f0fcd[_0xf0ab('0x32')]['hasOwnProperty'](_0xf0ab('0x37'))){_0x199753[_0xf0ab('0x1d')]=qs[_0xf0ab('0x1d')](_0x2f0fcd['query'][_0xf0ab('0x1d')]);_0x199753[_0xf0ab('0x1b')]=qs[_0xf0ab('0x1b')](_0x2f0fcd['query'][_0xf0ab('0x1b')]);}_0x199753['order']=qs[_0xf0ab('0x38')](_0x2f0fcd['query'][_0xf0ab('0x38')]);_0x199753[_0xf0ab('0x39')]=qs[_0xf0ab('0x3a')](_[_0xf0ab('0x3b')](_0x2f0fcd[_0xf0ab('0x32')],_0x58cbe1[_0xf0ab('0x3a')]),_0x35973a);if(_0x2f0fcd['query'][_0xf0ab('0x3c')]){_0x199753[_0xf0ab('0x39')]=_['merge'](_0x199753[_0xf0ab('0x39')],{'$or':_[_0xf0ab('0x3d')](_0x35973a,function(_0x1d4eec){if(_0x1d4eec[_0xf0ab('0x3e')]!==_0xf0ab('0x3f')){var _0x11e3b7={};_0x11e3b7[_0x1d4eec[_0xf0ab('0x2b')]]={'$like':'%'+_0x2f0fcd['query'][_0xf0ab('0x3c')]+'%'};return _0x11e3b7;}})});}_0x199753=_[_0xf0ab('0x40')]({},_0x199753,_0x2f0fcd[_0xf0ab('0x41')]);var _0x4bd6d1={'where':_0x199753[_0xf0ab('0x39')]};return db[_0xf0ab('0x42')][_0xf0ab('0x1e')](_0x4bd6d1)[_0xf0ab('0x25')](function(_0x2b7ed5){_0x1e1ffb['count']=_0x2b7ed5;if(_0x2f0fcd[_0xf0ab('0x32')][_0xf0ab('0x43')]){_0x199753[_0xf0ab('0x44')]=[{'all':!![]}];}return db[_0xf0ab('0x42')][_0xf0ab('0x45')](_0x199753);})[_0xf0ab('0x25')](function(_0x45849c){_0x1e1ffb[_0xf0ab('0x46')]=_0x45849c;return _0x1e1ffb;})[_0xf0ab('0x25')](respondWithFilteredResult(_0x21e8ac,_0x199753))[_0xf0ab('0x47')](handleError(_0x21e8ac,null));};exports[_0xf0ab('0x48')]=function(_0x32ec93,_0x22a265){var _0x5e6b6b={'raw':!![],'where':{'id':_0x32ec93[_0xf0ab('0x49')]['id']}},_0x4c4ab9={};_0x4c4ab9['model']=_[_0xf0ab('0x31')](db[_0xf0ab('0x42')]['rawAttributes']);_0x4c4ab9[_0xf0ab('0x32')]=_[_0xf0ab('0x31')](_0x32ec93['query']);_0x4c4ab9[_0xf0ab('0x3a')]=_[_0xf0ab('0x34')](_0x4c4ab9[_0xf0ab('0x30')],_0x4c4ab9[_0xf0ab('0x32')]);_0x5e6b6b[_0xf0ab('0x33')]=_[_0xf0ab('0x34')](_0x4c4ab9[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x32ec93[_0xf0ab('0x32')][_0xf0ab('0x35')]));_0x5e6b6b[_0xf0ab('0x33')]=_0x5e6b6b[_0xf0ab('0x33')][_0xf0ab('0x36')]?_0x5e6b6b[_0xf0ab('0x33')]:_0x4c4ab9['model'];if(_0x32ec93['query'][_0xf0ab('0x43')]){_0x5e6b6b['include']=[{'all':!![]}];}_0x5e6b6b=_['merge']({},_0x5e6b6b,_0x32ec93['options']);return db[_0xf0ab('0x42')][_0xf0ab('0x4a')](_0x5e6b6b)[_0xf0ab('0x25')](handleEntityNotFound(_0x22a265,null))[_0xf0ab('0x25')](respondWithResult(_0x22a265,null))[_0xf0ab('0x47')](handleError(_0x22a265,null));};exports[_0xf0ab('0x4b')]=function(_0x472c1b,_0x1a0f21){return db[_0xf0ab('0x42')][_0xf0ab('0x4b')](_0x472c1b[_0xf0ab('0x4c')],{})[_0xf0ab('0x25')](function(_0x4e6c9b){var _0x393c9a=_0x472c1b[_0xf0ab('0x4d')][_0xf0ab('0x26')]({'plain':!![]});if(!_0x393c9a)throw new Error(_0xf0ab('0x4e'));if(_0x393c9a[_0xf0ab('0x4f')]===_0xf0ab('0x4d')){var _0x430921=_0x4e6c9b[_0xf0ab('0x26')]({'plain':!![]});var _0x47f564='Voicemails';return db['UserProfileSection'][_0xf0ab('0x4a')]({'where':{'name':_0x47f564,'userProfileId':_0x393c9a[_0xf0ab('0x50')]},'raw':!![]})['then'](function(_0xa1a416){if(_0xa1a416&&_0xa1a416[_0xf0ab('0x51')]===0x0){return db['UserProfileResource'][_0xf0ab('0x4b')]({'name':_0x430921[_0xf0ab('0x2b')],'resourceId':_0x430921['id'],'type':_0xa1a416[_0xf0ab('0x2b')],'sectionId':_0xa1a416['id']},{})[_0xf0ab('0x25')](function(){return _0x4e6c9b;});}else{return _0x4e6c9b;}})[_0xf0ab('0x47')](function(_0x33112b){logger[_0xf0ab('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x33112b);throw _0x33112b;});}return _0x4e6c9b;})[_0xf0ab('0x25')](respondWithResult(_0x1a0f21,0xc9))['catch'](handleError(_0x1a0f21,null));};exports[_0xf0ab('0x24')]=function(_0x4c9d2b,_0x1a402b){if(_0x4c9d2b['body']['id']){delete _0x4c9d2b['body']['id'];}return db[_0xf0ab('0x42')]['find']({'where':{'id':_0x4c9d2b[_0xf0ab('0x49')]['id']}})['then'](handleEntityNotFound(_0x1a402b,null))[_0xf0ab('0x25')](saveUpdates(_0x4c9d2b['body'],null))[_0xf0ab('0x25')](respondWithResult(_0x1a402b,null))[_0xf0ab('0x47')](handleError(_0x1a402b,null));};exports[_0xf0ab('0x52')]=function(_0x57f9dd,_0x47f270){return db['VoiceMail'][_0xf0ab('0x4a')]({'where':{'id':_0x57f9dd[_0xf0ab('0x49')]['id']}})['then'](handleEntityNotFound(_0x47f270,null))['then'](removeEntity(_0x47f270,null))[_0xf0ab('0x47')](handleError(_0x47f270,null));};exports[_0xf0ab('0x53')]=function(_0x8df75a,_0x4ead7d,_0x227597){return db[_0xf0ab('0x42')][_0xf0ab('0x54')]({'where':{'id':_0x8df75a[_0xf0ab('0x49')]['id']}})[_0xf0ab('0x25')](handleEntityNotFound(_0x4ead7d,null))[_0xf0ab('0x25')](function(_0x1e6a4e){var _0x4d80a6;var _0x41ed17={},_0x5b24e3={};_0x5b24e3[_0xf0ab('0x30')]=_[_0xf0ab('0x31')](db[_0xf0ab('0x55')][_0xf0ab('0x2e')]);_0x5b24e3[_0xf0ab('0x32')]=_[_0xf0ab('0x31')](_0x8df75a[_0xf0ab('0x32')]);_0x5b24e3[_0xf0ab('0x3a')]=_[_0xf0ab('0x34')](_0x5b24e3[_0xf0ab('0x30')],_0x5b24e3['query']);_0x41ed17[_0xf0ab('0x33')]=_[_0xf0ab('0x34')](_0x5b24e3[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x35')]));_0x41ed17[_0xf0ab('0x33')]=_0x41ed17[_0xf0ab('0x33')][_0xf0ab('0x36')]?_0x41ed17['attributes']:_0x5b24e3['model'];if(!_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x56')](_0xf0ab('0x37'))){_0x41ed17['limit']=qs[_0xf0ab('0x1d')](_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x1d')]);_0x41ed17['offset']=qs[_0xf0ab('0x1b')](_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x1b')]);}_0x41ed17[_0xf0ab('0x57')]=qs[_0xf0ab('0x38')](_0x8df75a['query'][_0xf0ab('0x38')]);_0x41ed17[_0xf0ab('0x39')]=qs[_0xf0ab('0x3a')](_[_0xf0ab('0x3b')](_0x8df75a[_0xf0ab('0x32')],_0x5b24e3[_0xf0ab('0x3a')]));if(_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x3c')]){_0x41ed17[_0xf0ab('0x39')]=_[_0xf0ab('0x40')](_0x41ed17[_0xf0ab('0x39')],{'$or':_[_0xf0ab('0x3d')](_0x41ed17[_0xf0ab('0x33')],function(_0x513ed3){var _0x5c9c0e={};_0x5c9c0e[_0x513ed3]={'$like':'%'+_0x8df75a[_0xf0ab('0x32')][_0xf0ab('0x3c')]+'%'};return _0x5c9c0e;})});}_0x41ed17[_0xf0ab('0x39')]=_['merge'](_0x41ed17[_0xf0ab('0x39')],{'mailboxuser':_0x1e6a4e['mailbox']});_0x41ed17=_[_0xf0ab('0x40')]({},_0x41ed17,_0x8df75a[_0xf0ab('0x41')]);return db[_0xf0ab('0x55')]['findAndCountAll'](_0x41ed17)[_0xf0ab('0x25')](respondWithFilteredResult(_0x4ead7d,_0x41ed17));})['catch'](handleError(_0x4ead7d,null));};
\ No newline at end of file
index 0c83d30..d2cd5b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bb7=['../../config/logger','api','moment','request-promise','path','exports','define','VoiceMail','voice_voicemail','context','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9bb7,0x1ae));var _0x79bb=function(_0x2cbec0,_0x262fef){_0x2cbec0=_0x2cbec0-0x0;var _0x3d4101=_0x9bb7[_0x2cbec0];return _0x3d4101;};'use strict';var _=require(_0x79bb('0x0'));var util=require(_0x79bb('0x1'));var logger=require(_0x79bb('0x2'))(_0x79bb('0x3'));var moment=require(_0x79bb('0x4'));var BPromise=require('bluebird');var rp=require(_0x79bb('0x5'));var fs=require('fs');var path=require(_0x79bb('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceMail.attributes');module[_0x79bb('0x7')]=function(_0xc352e6,_0x4d463f){return _0xc352e6[_0x79bb('0x8')](_0x79bb('0x9'),attributes,{'tableName':_0x79bb('0xa'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':['mailbox',_0x79bb('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3aed=['api','moment','bluebird','request-promise','path','rimraf','./voiceMail.attributes','exports','VoiceMail','voice_voicemail','mailbox_context','mailbox','lodash','../../config/logger'];(function(_0x50bb7d,_0x44e3d9){var _0x16b1f3=function(_0x385910){while(--_0x385910){_0x50bb7d['push'](_0x50bb7d['shift']());}};_0x16b1f3(++_0x44e3d9);}(_0x3aed,0x7c));var _0xd3ae=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x3aed[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0xd3ae('0x0'));var util=require('util');var logger=require(_0xd3ae('0x1'))(_0xd3ae('0x2'));var moment=require(_0xd3ae('0x3'));var BPromise=require(_0xd3ae('0x4'));var rp=require(_0xd3ae('0x5'));var fs=require('fs');var path=require(_0xd3ae('0x6'));var rimraf=require(_0xd3ae('0x7'));var config=require('../../config/environment');var attributes=require(_0xd3ae('0x8'));module[_0xd3ae('0x9')]=function(_0x520c3c,_0x408375){return _0x520c3c['define'](_0xd3ae('0xa'),attributes,{'tableName':_0xd3ae('0xb'),'paranoid':![],'indexes':[{'name':_0xd3ae('0xc'),'fields':[_0xd3ae('0xd'),'context']}],'timestamps':!![]});};
\ No newline at end of file
index 7b89e26..cef1a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82b5=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','VoiceMail,\x20%s,\x20%s,\x20%s','error','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x18312e,_0x4c8146){var _0x4a5527=function(_0x3d512d){while(--_0x3d512d){_0x18312e['push'](_0x18312e['shift']());}};_0x4a5527(++_0x4c8146);}(_0x82b5,0x149));var _0x582b=function(_0x278d3c,_0x432df7){_0x278d3c=_0x278d3c-0x0;var _0x381b70=_0x82b5[_0x278d3c];return _0x381b70;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x582b('0x0'));var BPromise=require(_0x582b('0x1'));var rs=require(_0x582b('0x2'));var fs=require('fs');var Redis=require(_0x582b('0x3'));var db=require(_0x582b('0x4'))['db'];var utils=require(_0x582b('0x5'));var logger=require(_0x582b('0x6'))(_0x582b('0x7'));var config=require(_0x582b('0x8'));var jayson=require(_0x582b('0x9'));var client=jayson[_0x582b('0xa')][_0x582b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a32,_0x32b047,_0x1a542b){return new BPromise(function(_0x5119d3,_0x1412e9){return client[_0x582b('0xc')](_0x4a32,_0x1a542b)[_0x582b('0xd')](function(_0x3be6df){logger[_0x582b('0xe')](_0x582b('0xf'),_0x32b047,_0x582b('0x10'));logger['debug'](_0x582b('0x11'),_0x32b047,_0x582b('0x10'),JSON['stringify'](_0x3be6df));if(_0x3be6df[_0x582b('0x12')]){if(_0x3be6df[_0x582b('0x12')]['code']===0x1f4){logger[_0x582b('0x12')](_0x582b('0xf'),_0x32b047,_0x3be6df[_0x582b('0x12')][_0x582b('0x13')]);return _0x1412e9(_0x3be6df[_0x582b('0x12')]['message']);}logger[_0x582b('0x12')]('VoiceMail,\x20%s,\x20%s',_0x32b047,_0x3be6df['error'][_0x582b('0x13')]);return _0x5119d3(_0x3be6df[_0x582b('0x12')][_0x582b('0x13')]);}else{logger[_0x582b('0xe')](_0x582b('0xf'),_0x32b047,_0x582b('0x10'));_0x5119d3(_0x3be6df['result']['message']);}})[_0x582b('0x14')](function(_0x4dfa2e){logger[_0x582b('0x12')](_0x582b('0xf'),_0x32b047,_0x4dfa2e);_0x1412e9(_0x4dfa2e);});});}
\ No newline at end of file
+var _0xf95e=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0xf95e,0xa2));var _0xef95=function(_0x3b73af,_0x33924d){_0x3b73af=_0x3b73af-0x0;var _0x252174=_0xf95e[_0x3b73af];return _0x252174;};'use strict';var _=require(_0xef95('0x0'));var util=require(_0xef95('0x1'));var moment=require(_0xef95('0x2'));var BPromise=require(_0xef95('0x3'));var rs=require(_0xef95('0x4'));var fs=require('fs');var Redis=require(_0xef95('0x5'));var db=require(_0xef95('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xef95('0x7'))(_0xef95('0x8'));var config=require(_0xef95('0x9'));var jayson=require(_0xef95('0xa'));var client=jayson['client'][_0xef95('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xfcfebc,_0xdc3936,_0x237fdb){return new BPromise(function(_0x62c8d0,_0x2723c2){return client[_0xef95('0xc')](_0xfcfebc,_0x237fdb)['then'](function(_0xd56b07){logger['info'](_0xef95('0xd'),_0xdc3936,_0xef95('0xe'));logger[_0xef95('0xf')](_0xef95('0x10'),_0xdc3936,'request\x20sent',JSON[_0xef95('0x11')](_0xd56b07));if(_0xd56b07[_0xef95('0x12')]){if(_0xd56b07[_0xef95('0x12')][_0xef95('0x13')]===0x1f4){logger[_0xef95('0x12')]('VoiceMail,\x20%s,\x20%s',_0xdc3936,_0xd56b07[_0xef95('0x12')][_0xef95('0x14')]);return _0x2723c2(_0xd56b07[_0xef95('0x12')][_0xef95('0x14')]);}logger['error'](_0xef95('0xd'),_0xdc3936,_0xd56b07['error'][_0xef95('0x14')]);return _0x62c8d0(_0xd56b07[_0xef95('0x12')][_0xef95('0x14')]);}else{logger[_0xef95('0x15')](_0xef95('0xd'),_0xdc3936,_0xef95('0xe'));_0x62c8d0(_0xd56b07[_0xef95('0x16')]['message']);}})['catch'](function(_0x24c782){logger[_0xef95('0x12')](_0xef95('0xd'),_0xdc3936,_0x24c782);_0x2723c2(_0x24c782);});});}
\ No newline at end of file
index de2835f..4f7c765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70a1=['/:id','show','/:id/download','download','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated'];(function(_0x4e800a,_0x180a42){var _0x34a328=function(_0x281a65){while(--_0x281a65){_0x4e800a['push'](_0x4e800a['shift']());}};_0x34a328(++_0x180a42);}(_0x70a1,0xec));var _0x170a=function(_0x4d7116,_0xdb8175){_0x4d7116=_0x4d7116-0x0;var _0x4593dc=_0x70a1[_0x4d7116];return _0x4593dc;};'use strict';var multer=require(_0x170a('0x0'));var util=require(_0x170a('0x1'));var path=require(_0x170a('0x2'));var timeout=require('connect-timeout');var express=require(_0x170a('0x3'));var router=express[_0x170a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x170a('0x5'));var interaction=require(_0x170a('0x6'));var config=require(_0x170a('0x7'));var controller=require(_0x170a('0x8'));router[_0x170a('0x9')]('/',auth[_0x170a('0xa')](),controller['index']);router[_0x170a('0x9')](_0x170a('0xb'),auth[_0x170a('0xa')](),controller[_0x170a('0xc')]);router['get'](_0x170a('0xd'),auth[_0x170a('0xa')](),controller[_0x170a('0xe')]);router[_0x170a('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x170a('0xa')](),controller['update']);router[_0x170a('0x10')](_0x170a('0xb'),auth['isAuthenticated'](),controller[_0x170a('0x11')]);module[_0x170a('0x12')]=router;
\ No newline at end of file
+var _0x9dac=['util','path','fs-extra','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id/download','post','create','update','delete','/:id','multer'];(function(_0x3e186f,_0x2eb7be){var _0x3595bf=function(_0x5cb578){while(--_0x5cb578){_0x3e186f['push'](_0x3e186f['shift']());}};_0x3595bf(++_0x2eb7be);}(_0x9dac,0x11f));var _0xc9da=function(_0x166660,_0x42943a){_0x166660=_0x166660-0x0;var _0x56f116=_0x9dac[_0x166660];return _0x56f116;};'use strict';var multer=require(_0xc9da('0x0'));var util=require(_0xc9da('0x1'));var path=require(_0xc9da('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xc9da('0x3'));var auth=require(_0xc9da('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc9da('0x5'));var controller=require(_0xc9da('0x6'));router[_0xc9da('0x7')]('/',auth[_0xc9da('0x8')](),controller[_0xc9da('0x9')]);router[_0xc9da('0x7')]('/:id',auth[_0xc9da('0x8')](),controller['show']);router[_0xc9da('0x7')](_0xc9da('0xa'),auth['isAuthenticated'](),controller['download']);router[_0xc9da('0xb')]('/',auth[_0xc9da('0x8')](),controller[_0xc9da('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc9da('0xd')]);router[_0xc9da('0xe')](_0xc9da('0xf'),auth[_0xc9da('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 55d7983..111076c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18fc=['sequelize','INTEGER','STRING','BLOB','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x18fc,0x14a));var _0xc18f=function(_0x1d8119,_0xc98f17){_0x1d8119=_0x1d8119-0x0;var _0x3e30f6=_0x18fc[_0x1d8119];return _0x3e30f6;};'use strict';var Sequelize=require(_0xc18f('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x171074){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0xc18f('0x1')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xc18f('0x2')],'defaultValue':''},'context':{'type':Sequelize[_0xc18f('0x2')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xc18f('0x2')],'defaultValue':''},'callerid':{'type':Sequelize[_0xc18f('0x2')],'defaultValue':''},'origtime':{'type':Sequelize[_0xc18f('0x2')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xc18f('0x2')],'defaultValue':''},'recording':{'type':Sequelize[_0xc18f('0x3')]('long'),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0xc18f('0x4')](_0xc18f('0x5'))}};
\ No newline at end of file
+var _0xe6ea=['VIRTUAL','getDataValue','INTEGER','STRING','long','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports'];(function(_0x4fec1c,_0x456bb0){var _0x20d244=function(_0x42f9e3){while(--_0x42f9e3){_0x4fec1c['push'](_0x4fec1c['shift']());}};_0x20d244(++_0x456bb0);}(_0xe6ea,0xbb));var _0xae6e=function(_0x404e06,_0x31a9da){_0x404e06=_0x404e06-0x0;var _0x115a01=_0xe6ea[_0x404e06];return _0x115a01;};'use strict';var Sequelize=require(_0xae6e('0x0'));module[_0xae6e('0x1')]={'name':{'type':Sequelize[_0xae6e('0x2')],'get':function(_0x4a56b6){return this[_0xae6e('0x3')]('id');}},'msgnum':{'type':Sequelize[_0xae6e('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xae6e('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0xae6e('0x5')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xae6e('0x5')],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0xae6e('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0xae6e('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xae6e('0x5')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0xae6e('0x7')](_0xae6e('0x8'))}};
\ No newline at end of file
index 1b4a35f..81f977a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a71=['find','download','msg_id','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','set','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','apply','save','update','then','destroy','sendStatus','error','stack','name','index','VoiceMailMessage','rawAttributes','fieldName','type','key','differenceBy','query','keys','intersection','model','fields','attributes','length','where','filters','filter','merge','map','VIRTUAL','includeAll','include','findAll','catch','show','params','options','create','body'];(function(_0x2850c0,_0x1363a7){var _0x21e830=function(_0x3ec70a){while(--_0x3ec70a){_0x2850c0['push'](_0x2850c0['shift']());}};_0x21e830(++_0x1363a7);}(_0x5a71,0x147));var _0x15a7=function(_0x4a9bbf,_0x36fbf3){_0x4a9bbf=_0x4a9bbf-0x0;var _0x37a005=_0x5a71[_0x4a9bbf];return _0x37a005;};'use strict';var emlformat=require(_0x15a7('0x0'));var rimraf=require(_0x15a7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x15a7('0x2'));var rp=require(_0x15a7('0x3'));var moment=require(_0x15a7('0x4'));var BPromise=require(_0x15a7('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x15a7('0x6'));var sox=require(_0x15a7('0x7'));var csv=require(_0x15a7('0x8'));var ejs=require(_0x15a7('0x9'));var fs=require('fs');var fs_extra=require(_0x15a7('0xa'));var _=require('lodash');var squel=require(_0x15a7('0xb'));var crypto=require('crypto');var jsforce=require(_0x15a7('0xc'));var deskjs=require(_0x15a7('0xd'));var toCsv=require(_0x15a7('0x8'));var querystring=require('querystring');var Papa=require(_0x15a7('0xe'));var Redis=require(_0x15a7('0xf'));var authService=require(_0x15a7('0x10'));var qs=require(_0x15a7('0x11'));var as=require(_0x15a7('0x12'));var hardwareService=require(_0x15a7('0x13'));var logger=require('../../config/logger')(_0x15a7('0x14'));var utils=require('../../config/utils');var config=require(_0x15a7('0x15'));var licenseUtil=require(_0x15a7('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f1e85,_0xd3c6c3){_0xd3c6c3=_0xd3c6c3||0xcc;return function(_0xdbe957){if(_0xdbe957){return _0x2f1e85['sendStatus'](_0xd3c6c3);}return _0x2f1e85[_0x15a7('0x17')](_0xd3c6c3)[_0x15a7('0x18')]();};}function respondWithResult(_0x4d59b1,_0x35c5f5){_0x35c5f5=_0x35c5f5||0xc8;return function(_0x2018c5){if(_0x2018c5){return _0x4d59b1['status'](_0x35c5f5)[_0x15a7('0x19')](_0x2018c5);}};}function respondWithFilteredResult(_0x2716b6,_0x3fe69f){return function(_0x57caa8){if(_0x57caa8){var _0x4c1160=typeof _0x3fe69f[_0x15a7('0x1a')]===_0x15a7('0x1b')&&typeof _0x3fe69f[_0x15a7('0x1c')]===_0x15a7('0x1b');var _0xe80a9f=_0x57caa8['count'];var _0x40fa89=_0x4c1160?0x0:_0x3fe69f[_0x15a7('0x1a')];var _0x1688b4=_0x4c1160?_0x57caa8[_0x15a7('0x1d')]:_0x3fe69f[_0x15a7('0x1a')]+_0x3fe69f['limit'];var _0x2f0f9a;if(_0x1688b4>=_0xe80a9f){_0x1688b4=_0xe80a9f;_0x2f0f9a=0xc8;}else{_0x2f0f9a=0xce;}_0x2716b6[_0x15a7('0x17')](_0x2f0f9a);return _0x2716b6['set']('Content-Range',_0x40fa89+'-'+_0x1688b4+'/'+_0xe80a9f)[_0x15a7('0x19')](_0x57caa8);}return null;};}function patchUpdates(_0x2ad5b3){return function(_0x55c4da){try{jsonpatch[_0x15a7('0x1e')](_0x55c4da,_0x2ad5b3,!![]);}catch(_0x4f6de2){return BPromise['reject'](_0x4f6de2);}return _0x55c4da[_0x15a7('0x1f')]();};}function saveUpdates(_0x2e9530,_0x38df6d){return function(_0x4b06e4){if(_0x4b06e4){return _0x4b06e4[_0x15a7('0x20')](_0x2e9530)[_0x15a7('0x21')](function(_0x4ac99c){return _0x4ac99c;});}return null;};}function removeEntity(_0x41e381,_0x533fc3){return function(_0x22705f){if(_0x22705f){return _0x22705f[_0x15a7('0x22')]()[_0x15a7('0x21')](function(){_0x41e381[_0x15a7('0x17')](0xcc)[_0x15a7('0x18')]();});}};}function handleEntityNotFound(_0x3aa618,_0x7820d7){return function(_0x505dba){if(!_0x505dba){_0x3aa618[_0x15a7('0x23')](0x194);}return _0x505dba;};}function handleError(_0x269597,_0x41fb23){_0x41fb23=_0x41fb23||0x1f4;return function(_0xc5b7e8){logger[_0x15a7('0x24')](_0xc5b7e8[_0x15a7('0x25')]);if(_0xc5b7e8['name']){delete _0xc5b7e8[_0x15a7('0x26')];}_0x269597[_0x15a7('0x17')](_0x41fb23)['send'](_0xc5b7e8);};}exports[_0x15a7('0x27')]=function(_0x4b7e03,_0x1c6135){var _0x23904a={},_0x5f0ad8={},_0x51ec84={'count':0x0,'rows':[]};var _0x524e19=_['map'](db[_0x15a7('0x28')][_0x15a7('0x29')],function(_0x430b57){return{'name':_0x430b57[_0x15a7('0x2a')],'type':_0x430b57[_0x15a7('0x2b')][_0x15a7('0x2c')]};});_0x5f0ad8['model']=_[_0x15a7('0x2d')](_['map'](_0x524e19,_0x15a7('0x26')),[_0x15a7('0x26')]);_0x5f0ad8[_0x15a7('0x2e')]=_[_0x15a7('0x2f')](_0x4b7e03['query']);_0x5f0ad8['filters']=_[_0x15a7('0x30')](_0x5f0ad8[_0x15a7('0x31')],_0x5f0ad8['query']);_0x23904a['attributes']=_[_0x15a7('0x30')](_0x5f0ad8['model'],qs['fields'](_0x4b7e03['query'][_0x15a7('0x32')]));_0x23904a['attributes']=_0x23904a[_0x15a7('0x33')][_0x15a7('0x34')]?_0x23904a[_0x15a7('0x33')]:_0x5f0ad8[_0x15a7('0x31')];if(!_0x4b7e03['query']['hasOwnProperty']('nolimit')){_0x23904a[_0x15a7('0x1c')]=qs[_0x15a7('0x1c')](_0x4b7e03[_0x15a7('0x2e')][_0x15a7('0x1c')]);_0x23904a[_0x15a7('0x1a')]=qs[_0x15a7('0x1a')](_0x4b7e03[_0x15a7('0x2e')]['offset']);}_0x23904a['order']=qs['sort'](_0x4b7e03[_0x15a7('0x2e')]['sort']);_0x23904a[_0x15a7('0x35')]=qs[_0x15a7('0x36')](_['pick'](_0x4b7e03[_0x15a7('0x2e')],_0x5f0ad8['filters']),_0x524e19);if(_0x4b7e03['query'][_0x15a7('0x37')]){_0x23904a[_0x15a7('0x35')]=_[_0x15a7('0x38')](_0x23904a['where'],{'$or':_[_0x15a7('0x39')](_0x524e19,function(_0xcb22a1){if(_0xcb22a1['type']!==_0x15a7('0x3a')){var _0x17772f={};_0x17772f[_0xcb22a1[_0x15a7('0x26')]]={'$like':'%'+_0x4b7e03[_0x15a7('0x2e')][_0x15a7('0x37')]+'%'};return _0x17772f;}})});}_0x23904a=_[_0x15a7('0x38')]({},_0x23904a,_0x4b7e03['options']);var _0x10bbe7={'where':_0x23904a[_0x15a7('0x35')]};return db['VoiceMailMessage']['count'](_0x10bbe7)[_0x15a7('0x21')](function(_0x52a1da){_0x51ec84[_0x15a7('0x1d')]=_0x52a1da;if(_0x4b7e03['query'][_0x15a7('0x3b')]){_0x23904a[_0x15a7('0x3c')]=[{'all':!![]}];}return db[_0x15a7('0x28')][_0x15a7('0x3d')](_0x23904a);})[_0x15a7('0x21')](function(_0x2b4f23){_0x51ec84['rows']=_0x2b4f23;return _0x51ec84;})[_0x15a7('0x21')](respondWithFilteredResult(_0x1c6135,_0x23904a))[_0x15a7('0x3e')](handleError(_0x1c6135,null));};exports[_0x15a7('0x3f')]=function(_0x3be719,_0x11e5ba){var _0x42f9d6={'raw':!![],'where':{'id':_0x3be719[_0x15a7('0x40')]['id']}},_0x552fed={};_0x552fed[_0x15a7('0x31')]=_[_0x15a7('0x2f')](db['VoiceMailMessage']['rawAttributes']);_0x552fed[_0x15a7('0x2e')]=_[_0x15a7('0x2f')](_0x3be719['query']);_0x552fed[_0x15a7('0x36')]=_[_0x15a7('0x30')](_0x552fed['model'],_0x552fed[_0x15a7('0x2e')]);_0x42f9d6['attributes']=_['intersection'](_0x552fed[_0x15a7('0x31')],qs[_0x15a7('0x32')](_0x3be719[_0x15a7('0x2e')][_0x15a7('0x32')]));_0x42f9d6[_0x15a7('0x33')]=_0x42f9d6[_0x15a7('0x33')][_0x15a7('0x34')]?_0x42f9d6[_0x15a7('0x33')]:_0x552fed[_0x15a7('0x31')];if(_0x3be719[_0x15a7('0x2e')]['includeAll']){_0x42f9d6[_0x15a7('0x3c')]=[{'all':!![]}];}_0x42f9d6=_[_0x15a7('0x38')]({},_0x42f9d6,_0x3be719[_0x15a7('0x41')]);return db[_0x15a7('0x28')]['find'](_0x42f9d6)[_0x15a7('0x21')](handleEntityNotFound(_0x11e5ba,null))[_0x15a7('0x21')](respondWithResult(_0x11e5ba,null))['catch'](handleError(_0x11e5ba,null));};exports['create']=function(_0x345712,_0x581d79){return db[_0x15a7('0x28')][_0x15a7('0x42')](_0x345712['body'],{})['then'](respondWithResult(_0x581d79,0xc9))[_0x15a7('0x3e')](handleError(_0x581d79,null));};exports[_0x15a7('0x20')]=function(_0x442adc,_0x5e7d17){if(_0x442adc[_0x15a7('0x43')]['id']){delete _0x442adc['body']['id'];}return db[_0x15a7('0x28')][_0x15a7('0x44')]({'where':{'id':_0x442adc[_0x15a7('0x40')]['id']}})[_0x15a7('0x21')](handleEntityNotFound(_0x5e7d17,null))['then'](saveUpdates(_0x442adc['body'],null))['then'](respondWithResult(_0x5e7d17,null))[_0x15a7('0x3e')](handleError(_0x5e7d17,null));};exports[_0x15a7('0x22')]=function(_0xe32bd9,_0x416a33){return db[_0x15a7('0x28')][_0x15a7('0x44')]({'where':{'id':_0xe32bd9[_0x15a7('0x40')]['id']}})[_0x15a7('0x21')](handleEntityNotFound(_0x416a33,null))[_0x15a7('0x21')](removeEntity(_0x416a33,null))[_0x15a7('0x3e')](handleError(_0x416a33,null));};exports[_0x15a7('0x45')]=function(_0x582d30,_0x3fd43b,_0x47878e){return db[_0x15a7('0x28')][_0x15a7('0x44')]({'where':{'id':_0x582d30[_0x15a7('0x40')]['id']},'attributes':['id','recording',_0x15a7('0x46')]})[_0x15a7('0x21')](handleEntityNotFound(_0x3fd43b,null))[_0x15a7('0x21')](function(_0x46b7a2){if(_0x46b7a2){if(!_0x46b7a2[_0x15a7('0x47')]){throw new db[(_0x15a7('0x48'))][(_0x15a7('0x49'))](_0x15a7('0x4a'));}var _0x4e8850={'Content-Type':_0x15a7('0x4b'),'Content-Disposition':_0x15a7('0x4c')};if(_0x46b7a2['msg_id']){_0x4e8850[_0x15a7('0x4d')]='attachment;\x20filename=\x22'+_0x46b7a2[_0x15a7('0x46')]+'.wav\x22';}_0x3fd43b[_0x15a7('0x4e')](_0x4e8850);return _0x3fd43b['send'](new Buffer(_0x46b7a2['recording']));}})[_0x15a7('0x3e')](handleError(_0x3fd43b,null));};
\ No newline at end of file
+var _0x7500=['Content-Range','reject','save','then','stack','name','send','index','rawAttributes','fieldName','type','key','model','differenceBy','map','query','keys','filters','intersection','fields','attributes','sort','where','merge','VIRTUAL','filter','VoiceMailMessage','includeAll','include','findAll','length','find','catch','create','body','update','params','recording','msg_id','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','set'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x7500,0x1be));var _0x0750=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7500[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0750('0x0'));var rimraf=require(_0x0750('0x1'));var zipdir=require(_0x0750('0x2'));var jsonpatch=require(_0x0750('0x3'));var rp=require(_0x0750('0x4'));var moment=require(_0x0750('0x5'));var BPromise=require(_0x0750('0x6'));var Mustache=require(_0x0750('0x7'));var util=require(_0x0750('0x8'));var path=require(_0x0750('0x9'));var sox=require('sox');var csv=require(_0x0750('0xa'));var ejs=require(_0x0750('0xb'));var fs=require('fs');var fs_extra=require(_0x0750('0xc'));var _=require('lodash');var squel=require(_0x0750('0xd'));var crypto=require(_0x0750('0xe'));var jsforce=require(_0x0750('0xf'));var deskjs=require(_0x0750('0x10'));var toCsv=require(_0x0750('0xa'));var querystring=require('querystring');var Papa=require(_0x0750('0x11'));var Redis=require(_0x0750('0x12'));var authService=require(_0x0750('0x13'));var qs=require(_0x0750('0x14'));var as=require(_0x0750('0x15'));var hardwareService=require(_0x0750('0x16'));var logger=require(_0x0750('0x17'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0750('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x293d1d,_0x9855e2){_0x9855e2=_0x9855e2||0xcc;return function(_0x19a5a4){if(_0x19a5a4){return _0x293d1d[_0x0750('0x19')](_0x9855e2);}return _0x293d1d[_0x0750('0x1a')](_0x9855e2)[_0x0750('0x1b')]();};}function respondWithResult(_0x43c051,_0x3d06a3){_0x3d06a3=_0x3d06a3||0xc8;return function(_0x3ceb5e){if(_0x3ceb5e){return _0x43c051[_0x0750('0x1a')](_0x3d06a3)[_0x0750('0x1c')](_0x3ceb5e);}};}function respondWithFilteredResult(_0x5c2132,_0x54ccb3){return function(_0x34961f){if(_0x34961f){var _0x81ab58=typeof _0x54ccb3['offset']==='undefined'&&typeof _0x54ccb3[_0x0750('0x1d')]===_0x0750('0x1e');var _0x227253=_0x34961f[_0x0750('0x1f')];var _0x5701c7=_0x81ab58?0x0:_0x54ccb3[_0x0750('0x20')];var _0x4a3f25=_0x81ab58?_0x34961f['count']:_0x54ccb3['offset']+_0x54ccb3[_0x0750('0x1d')];var _0x1829bc;if(_0x4a3f25>=_0x227253){_0x4a3f25=_0x227253;_0x1829bc=0xc8;}else{_0x1829bc=0xce;}_0x5c2132['status'](_0x1829bc);return _0x5c2132[_0x0750('0x21')](_0x0750('0x22'),_0x5701c7+'-'+_0x4a3f25+'/'+_0x227253)[_0x0750('0x1c')](_0x34961f);}return null;};}function patchUpdates(_0x2c0e86){return function(_0x418367){try{jsonpatch['apply'](_0x418367,_0x2c0e86,!![]);}catch(_0x4d6aad){return BPromise[_0x0750('0x23')](_0x4d6aad);}return _0x418367[_0x0750('0x24')]();};}function saveUpdates(_0x13cad7,_0xa6ebdc){return function(_0x1e2240){if(_0x1e2240){return _0x1e2240['update'](_0x13cad7)[_0x0750('0x25')](function(_0x1d50f2){return _0x1d50f2;});}return null;};}function removeEntity(_0x2d4e20,_0x4cbaac){return function(_0x67c7fc){if(_0x67c7fc){return _0x67c7fc['destroy']()[_0x0750('0x25')](function(){_0x2d4e20['status'](0xcc)[_0x0750('0x1b')]();});}};}function handleEntityNotFound(_0x11fe90,_0x417032){return function(_0x5da7bf){if(!_0x5da7bf){_0x11fe90[_0x0750('0x19')](0x194);}return _0x5da7bf;};}function handleError(_0x1bfe2b,_0xb7f3f1){_0xb7f3f1=_0xb7f3f1||0x1f4;return function(_0x45a81d){logger['error'](_0x45a81d[_0x0750('0x26')]);if(_0x45a81d[_0x0750('0x27')]){delete _0x45a81d[_0x0750('0x27')];}_0x1bfe2b['status'](_0xb7f3f1)[_0x0750('0x28')](_0x45a81d);};}exports[_0x0750('0x29')]=function(_0x35e071,_0x3cf936){var _0x12ae9f={},_0x3b4ddb={},_0x237126={'count':0x0,'rows':[]};var _0x3d2049=_['map'](db['VoiceMailMessage'][_0x0750('0x2a')],function(_0x1b9d4d){return{'name':_0x1b9d4d[_0x0750('0x2b')],'type':_0x1b9d4d[_0x0750('0x2c')][_0x0750('0x2d')]};});_0x3b4ddb[_0x0750('0x2e')]=_[_0x0750('0x2f')](_[_0x0750('0x30')](_0x3d2049,_0x0750('0x27')),['name']);_0x3b4ddb[_0x0750('0x31')]=_[_0x0750('0x32')](_0x35e071['query']);_0x3b4ddb[_0x0750('0x33')]=_['intersection'](_0x3b4ddb[_0x0750('0x2e')],_0x3b4ddb['query']);_0x12ae9f['attributes']=_[_0x0750('0x34')](_0x3b4ddb[_0x0750('0x2e')],qs[_0x0750('0x35')](_0x35e071['query'][_0x0750('0x35')]));_0x12ae9f[_0x0750('0x36')]=_0x12ae9f[_0x0750('0x36')]['length']?_0x12ae9f[_0x0750('0x36')]:_0x3b4ddb[_0x0750('0x2e')];if(!_0x35e071[_0x0750('0x31')]['hasOwnProperty']('nolimit')){_0x12ae9f['limit']=qs['limit'](_0x35e071[_0x0750('0x31')][_0x0750('0x1d')]);_0x12ae9f[_0x0750('0x20')]=qs[_0x0750('0x20')](_0x35e071[_0x0750('0x31')][_0x0750('0x20')]);}_0x12ae9f['order']=qs[_0x0750('0x37')](_0x35e071[_0x0750('0x31')][_0x0750('0x37')]);_0x12ae9f['where']=qs['filters'](_['pick'](_0x35e071[_0x0750('0x31')],_0x3b4ddb[_0x0750('0x33')]),_0x3d2049);if(_0x35e071['query']['filter']){_0x12ae9f[_0x0750('0x38')]=_[_0x0750('0x39')](_0x12ae9f[_0x0750('0x38')],{'$or':_[_0x0750('0x30')](_0x3d2049,function(_0x243a17){if(_0x243a17['type']!==_0x0750('0x3a')){var _0x1881f7={};_0x1881f7[_0x243a17[_0x0750('0x27')]]={'$like':'%'+_0x35e071[_0x0750('0x31')][_0x0750('0x3b')]+'%'};return _0x1881f7;}})});}_0x12ae9f=_[_0x0750('0x39')]({},_0x12ae9f,_0x35e071['options']);var _0x247be6={'where':_0x12ae9f['where']};return db[_0x0750('0x3c')][_0x0750('0x1f')](_0x247be6)['then'](function(_0x3a8449){_0x237126['count']=_0x3a8449;if(_0x35e071[_0x0750('0x31')][_0x0750('0x3d')]){_0x12ae9f[_0x0750('0x3e')]=[{'all':!![]}];}return db[_0x0750('0x3c')][_0x0750('0x3f')](_0x12ae9f);})[_0x0750('0x25')](function(_0x485b8){_0x237126['rows']=_0x485b8;return _0x237126;})['then'](respondWithFilteredResult(_0x3cf936,_0x12ae9f))['catch'](handleError(_0x3cf936,null));};exports['show']=function(_0x258564,_0x238811){var _0x4ceb07={'raw':!![],'where':{'id':_0x258564['params']['id']}},_0x1ec776={};_0x1ec776[_0x0750('0x2e')]=_[_0x0750('0x32')](db[_0x0750('0x3c')][_0x0750('0x2a')]);_0x1ec776[_0x0750('0x31')]=_[_0x0750('0x32')](_0x258564[_0x0750('0x31')]);_0x1ec776[_0x0750('0x33')]=_[_0x0750('0x34')](_0x1ec776[_0x0750('0x2e')],_0x1ec776['query']);_0x4ceb07[_0x0750('0x36')]=_['intersection'](_0x1ec776[_0x0750('0x2e')],qs[_0x0750('0x35')](_0x258564[_0x0750('0x31')][_0x0750('0x35')]));_0x4ceb07['attributes']=_0x4ceb07[_0x0750('0x36')][_0x0750('0x40')]?_0x4ceb07[_0x0750('0x36')]:_0x1ec776[_0x0750('0x2e')];if(_0x258564[_0x0750('0x31')][_0x0750('0x3d')]){_0x4ceb07[_0x0750('0x3e')]=[{'all':!![]}];}_0x4ceb07=_['merge']({},_0x4ceb07,_0x258564['options']);return db['VoiceMailMessage'][_0x0750('0x41')](_0x4ceb07)[_0x0750('0x25')](handleEntityNotFound(_0x238811,null))['then'](respondWithResult(_0x238811,null))[_0x0750('0x42')](handleError(_0x238811,null));};exports['create']=function(_0xffca79,_0x124841){return db[_0x0750('0x3c')][_0x0750('0x43')](_0xffca79[_0x0750('0x44')],{})[_0x0750('0x25')](respondWithResult(_0x124841,0xc9))[_0x0750('0x42')](handleError(_0x124841,null));};exports[_0x0750('0x45')]=function(_0x4bbef2,_0x384f40){if(_0x4bbef2[_0x0750('0x44')]['id']){delete _0x4bbef2['body']['id'];}return db[_0x0750('0x3c')]['find']({'where':{'id':_0x4bbef2[_0x0750('0x46')]['id']}})['then'](handleEntityNotFound(_0x384f40,null))['then'](saveUpdates(_0x4bbef2['body'],null))['then'](respondWithResult(_0x384f40,null))[_0x0750('0x42')](handleError(_0x384f40,null));};exports['destroy']=function(_0x141aae,_0x3a571b){return db[_0x0750('0x3c')][_0x0750('0x41')]({'where':{'id':_0x141aae['params']['id']}})[_0x0750('0x25')](handleEntityNotFound(_0x3a571b,null))[_0x0750('0x25')](removeEntity(_0x3a571b,null))[_0x0750('0x42')](handleError(_0x3a571b,null));};exports['download']=function(_0x23e3f4,_0x285820,_0x12fdfd){return db['VoiceMailMessage']['find']({'where':{'id':_0x23e3f4[_0x0750('0x46')]['id']},'attributes':['id',_0x0750('0x47'),_0x0750('0x48')]})[_0x0750('0x25')](handleEntityNotFound(_0x285820,null))[_0x0750('0x25')](function(_0x65726b){if(_0x65726b){if(!_0x65726b[_0x0750('0x47')]){throw new db[(_0x0750('0x49'))]['ValidationError'](_0x0750('0x4a'));}var _0x5b435f={'Content-Type':_0x0750('0x4b'),'Content-Disposition':_0x0750('0x4c')};if(_0x65726b[_0x0750('0x48')]){_0x5b435f[_0x0750('0x4d')]=_0x0750('0x4e')+_0x65726b['msg_id']+_0x0750('0x4f');}_0x285820[_0x0750('0x21')](_0x5b435f);return _0x285820[_0x0750('0x28')](new Buffer(_0x65726b[_0x0750('0x47')]));}})[_0x0750('0x42')](handleError(_0x285820,null));};
\ No newline at end of file
index b43ef01..ede122b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e7b=['voice_voicemail_messages','dir','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','VoiceMailMessage'];(function(_0x516eb0,_0x256118){var _0x26eb1c=function(_0x1af484){while(--_0x1af484){_0x516eb0['push'](_0x516eb0['shift']());}};_0x26eb1c(++_0x256118);}(_0x9e7b,0x1c9));var _0xb9e7=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x9e7b[_0x2c7618];return _0x5ce3f0;};'use strict';var _=require(_0xb9e7('0x0'));var util=require('util');var logger=require(_0xb9e7('0x1'))(_0xb9e7('0x2'));var moment=require(_0xb9e7('0x3'));var BPromise=require(_0xb9e7('0x4'));var rp=require(_0xb9e7('0x5'));var fs=require('fs');var path=require(_0xb9e7('0x6'));var rimraf=require(_0xb9e7('0x7'));var config=require(_0xb9e7('0x8'));var attributes=require('./voiceMailMessage.attributes');module[_0xb9e7('0x9')]=function(_0x174c43,_0x17fffb){return _0x174c43['define'](_0xb9e7('0xa'),attributes,{'tableName':_0xb9e7('0xb'),'paranoid':![],'indexes':[{'name':_0xb9e7('0xc'),'fields':[_0xb9e7('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x3f76=['lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports','voice_voicemail_messages','dir'];(function(_0x3e3c85,_0x4d6d5a){var _0x2dfa5e=function(_0xacbb16){while(--_0xacbb16){_0x3e3c85['push'](_0x3e3c85['shift']());}};_0x2dfa5e(++_0x4d6d5a);}(_0x3f76,0x1ad));var _0x63f7=function(_0x40fb13,_0x194e76){_0x40fb13=_0x40fb13-0x0;var _0x13ddcc=_0x3f76[_0x40fb13];return _0x13ddcc;};'use strict';var _=require(_0x63f7('0x0'));var util=require(_0x63f7('0x1'));var logger=require(_0x63f7('0x2'))(_0x63f7('0x3'));var moment=require('moment');var BPromise=require(_0x63f7('0x4'));var rp=require(_0x63f7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x63f7('0x6'));var config=require(_0x63f7('0x7'));var attributes=require('./voiceMailMessage.attributes');module[_0x63f7('0x8')]=function(_0x555af4,_0x4b293a){return _0x555af4['define']('VoiceMailMessage',attributes,{'tableName':_0x63f7('0x9'),'paranoid':![],'indexes':[{'name':_0x63f7('0xa'),'fields':[_0x63f7('0xa')]}],'timestamps':![]});};
\ No newline at end of file
index a35f27e..dbfb257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf16d=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf16d,0x10a));var _0xdf16=function(_0x18e843,_0x39ed27){_0x18e843=_0x18e843-0x0;var _0x1ac063=_0xf16d[_0x18e843];return _0x1ac063;};'use strict';var _=require(_0xdf16('0x0'));var util=require(_0xdf16('0x1'));var moment=require(_0xdf16('0x2'));var BPromise=require(_0xdf16('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdf16('0x4'));var db=require(_0xdf16('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xdf16('0x6'))(_0xdf16('0x7'));var config=require(_0xdf16('0x8'));var jayson=require(_0xdf16('0x9'));var client=jayson[_0xdf16('0xa')][_0xdf16('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d9a57,_0x3fc82a,_0xfa5d07){return new BPromise(function(_0x200222,_0x375a18){return client[_0xdf16('0xc')](_0x1d9a57,_0xfa5d07)[_0xdf16('0xd')](function(_0x521dc2){logger['info'](_0xdf16('0xe'),_0x3fc82a,_0xdf16('0xf'));logger[_0xdf16('0x10')](_0xdf16('0x11'),_0x3fc82a,_0xdf16('0xf'),JSON[_0xdf16('0x12')](_0x521dc2));if(_0x521dc2['error']){if(_0x521dc2[_0xdf16('0x13')][_0xdf16('0x14')]===0x1f4){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x3fc82a,_0x521dc2[_0xdf16('0x13')]['message']);return _0x375a18(_0x521dc2['error'][_0xdf16('0x15')]);}logger[_0xdf16('0x13')]('VoiceMailMessage,\x20%s,\x20%s',_0x3fc82a,_0x521dc2[_0xdf16('0x13')][_0xdf16('0x15')]);return _0x200222(_0x521dc2[_0xdf16('0x13')][_0xdf16('0x15')]);}else{logger['info'](_0xdf16('0xe'),_0x3fc82a,_0xdf16('0xf'));_0x200222(_0x521dc2[_0xdf16('0x16')]['message']);}})[_0xdf16('0x17')](function(_0x2b6b52){logger[_0xdf16('0x13')](_0xdf16('0xe'),_0x3fc82a,_0x2b6b52);_0x375a18(_0x2b6b52);});});}
\ No newline at end of file
+var _0xbdd2=['error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x361d3f,_0x3be2aa){var _0x320229=function(_0x138319){while(--_0x138319){_0x361d3f['push'](_0x361d3f['shift']());}};_0x320229(++_0x3be2aa);}(_0xbdd2,0x124));var _0x2bdd=function(_0xb47d5d,_0x3a5e70){_0xb47d5d=_0xb47d5d-0x0;var _0x5dfd0a=_0xbdd2[_0xb47d5d];return _0x5dfd0a;};'use strict';var _=require(_0x2bdd('0x0'));var util=require(_0x2bdd('0x1'));var moment=require(_0x2bdd('0x2'));var BPromise=require(_0x2bdd('0x3'));var rs=require(_0x2bdd('0x4'));var fs=require('fs');var Redis=require(_0x2bdd('0x5'));var db=require(_0x2bdd('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x2bdd('0x7'))(_0x2bdd('0x8'));var config=require(_0x2bdd('0x9'));var jayson=require(_0x2bdd('0xa'));var client=jayson[_0x2bdd('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c61b4,_0x504909,_0x42f36f){return new BPromise(function(_0x43de54,_0x3876a8){return client[_0x2bdd('0xc')](_0x1c61b4,_0x42f36f)['then'](function(_0x16fff7){logger['info'](_0x2bdd('0xd'),_0x504909,_0x2bdd('0xe'));logger[_0x2bdd('0xf')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x504909,_0x2bdd('0xe'),JSON['stringify'](_0x16fff7));if(_0x16fff7['error']){if(_0x16fff7[_0x2bdd('0x10')][_0x2bdd('0x11')]===0x1f4){logger['error'](_0x2bdd('0xd'),_0x504909,_0x16fff7[_0x2bdd('0x10')][_0x2bdd('0x12')]);return _0x3876a8(_0x16fff7[_0x2bdd('0x10')][_0x2bdd('0x12')]);}logger['error'](_0x2bdd('0xd'),_0x504909,_0x16fff7[_0x2bdd('0x10')][_0x2bdd('0x12')]);return _0x43de54(_0x16fff7['error'][_0x2bdd('0x12')]);}else{logger[_0x2bdd('0x13')](_0x2bdd('0xd'),_0x504909,_0x2bdd('0xe'));_0x43de54(_0x16fff7[_0x2bdd('0x14')]['message']);}})[_0x2bdd('0x15')](function(_0x5af150){logger[_0x2bdd('0x10')](_0x2bdd('0xd'),_0x504909,_0x5af150);_0x3876a8(_0x5af150);});});}
\ No newline at end of file
index 3d20ddf..2e4a17d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3169=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','/:id/sounds','post','create','put','update','destroy','delete','/:id/sounds/:id2','removeSound','exports','util','connect-timeout'];(function(_0x4ae419,_0x15318c){var _0xa01a18=function(_0x564711){while(--_0x564711){_0x4ae419['push'](_0x4ae419['shift']());}};_0xa01a18(++_0x15318c);}(_0x3169,0x16e));var _0x9316=function(_0x16438a,_0x3544be){_0x16438a=_0x16438a-0x0;var _0x9d2e74=_0x3169[_0x16438a];return _0x9d2e74;};'use strict';var multer=require('multer');var util=require(_0x9316('0x0'));var path=require('path');var timeout=require(_0x9316('0x1'));var express=require(_0x9316('0x2'));var router=express[_0x9316('0x3')]();var fs_extra=require(_0x9316('0x4'));var auth=require(_0x9316('0x5'));var interaction=require(_0x9316('0x6'));var config=require(_0x9316('0x7'));var controller=require(_0x9316('0x8'));router[_0x9316('0x9')]('/',auth[_0x9316('0xa')](),controller[_0x9316('0xb')]);router[_0x9316('0x9')](_0x9316('0xc'),auth[_0x9316('0xa')](),controller['show']);router[_0x9316('0x9')](_0x9316('0xd'),auth['isAuthenticated'](),controller['getSounds']);router[_0x9316('0xe')]('/',auth[_0x9316('0xa')](),controller[_0x9316('0xf')]);router[_0x9316('0xe')](_0x9316('0xd'),auth[_0x9316('0xa')](),controller['addSound']);router[_0x9316('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x9316('0x11')]);router['delete'](_0x9316('0xc'),auth[_0x9316('0xa')](),controller[_0x9316('0x12')]);router[_0x9316('0x13')](_0x9316('0x14'),auth['isAuthenticated'](),controller[_0x9316('0x15')]);module[_0x9316('0x16')]=router;
\ No newline at end of file
+var _0xb1f6=['put','update','delete','destroy','/:id/sounds/:id2','removeSound','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMusicOnHold.controller','index','/:id','show','get','/:id/sounds','isAuthenticated','getSounds','post','create','addSound'];(function(_0x25701b,_0x2a6976){var _0x3a8a2c=function(_0x1a5e78){while(--_0x1a5e78){_0x25701b['push'](_0x25701b['shift']());}};_0x3a8a2c(++_0x2a6976);}(_0xb1f6,0x14b));var _0x6b1f=function(_0x53f123,_0x799d11){_0x53f123=_0x53f123-0x0;var _0x19ce62=_0xb1f6[_0x53f123];return _0x19ce62;};'use strict';var multer=require(_0x6b1f('0x0'));var util=require(_0x6b1f('0x1'));var path=require(_0x6b1f('0x2'));var timeout=require(_0x6b1f('0x3'));var express=require(_0x6b1f('0x4'));var router=express[_0x6b1f('0x5')]();var fs_extra=require(_0x6b1f('0x6'));var auth=require(_0x6b1f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6b1f('0x8'));var controller=require(_0x6b1f('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x6b1f('0xa')]);router['get'](_0x6b1f('0xb'),auth['isAuthenticated'](),controller[_0x6b1f('0xc')]);router[_0x6b1f('0xd')](_0x6b1f('0xe'),auth[_0x6b1f('0xf')](),controller[_0x6b1f('0x10')]);router[_0x6b1f('0x11')]('/',auth[_0x6b1f('0xf')](),controller[_0x6b1f('0x12')]);router[_0x6b1f('0x11')](_0x6b1f('0xe'),auth['isAuthenticated'](),controller[_0x6b1f('0x13')]);router[_0x6b1f('0x14')](_0x6b1f('0xb'),auth[_0x6b1f('0xf')](),controller[_0x6b1f('0x15')]);router[_0x6b1f('0x16')](_0x6b1f('0xb'),auth['isAuthenticated'](),controller[_0x6b1f('0x17')]);router[_0x6b1f('0x16')](_0x6b1f('0x18'),auth[_0x6b1f('0xf')](),controller[_0x6b1f('0x19')]);module[_0x6b1f('0x1a')]=router;
\ No newline at end of file
index a1e0589..a223018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x659c=['name','ENUM','custom','mp3nb','quietmp3nb','quietmp3','files','STRING','alpha','TIMESTAMP','BOOLEAN','exports'];(function(_0x2ed3d8,_0x4aa8e3){var _0x12fac4=function(_0xe4fa39){while(--_0xe4fa39){_0x2ed3d8['push'](_0x2ed3d8['shift']());}};_0x12fac4(++_0x4aa8e3);}(_0x659c,0x6b));var _0xc659=function(_0x55daed,_0x892a6d){_0x55daed=_0x55daed-0x0;var _0x5d5451=_0x659c[_0x55daed];return _0x5d5451;};'use strict';var Sequelize=require('sequelize');module[_0xc659('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc659('0x1')},'mode':{'type':Sequelize[_0xc659('0x2')](_0xc659('0x3'),'files',_0xc659('0x4'),_0xc659('0x5'),_0xc659('0x6'),'mp3'),'allowNull':!![],'defaultValue':_0xc659('0x7')},'directory':{'type':Sequelize[_0xc659('0x8')],'allowNull':!![]},'application':{'type':Sequelize[_0xc659('0x8')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0xc659('0x8')],'allowNull':!![],'defaultValue':_0xc659('0x9')},'format':{'type':Sequelize[_0xc659('0x8')],'allowNull':!![]},'stamp':{'type':_0xc659('0xa')},'defaultEntry':{'type':Sequelize[_0xc659('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2a77=['alpha','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name','ENUM','files','mp3nb','quietmp3nb','mp3'];(function(_0x38c699,_0x56fea7){var _0x3b1ded=function(_0x100851){while(--_0x100851){_0x38c699['push'](_0x38c699['shift']());}};_0x3b1ded(++_0x56fea7);}(_0x2a77,0xff));var _0x72a7=function(_0x364cba,_0x19c43b){_0x364cba=_0x364cba-0x0;var _0x1e6de2=_0x2a77[_0x364cba];return _0x1e6de2;};'use strict';var Sequelize=require(_0x72a7('0x0'));module[_0x72a7('0x1')]={'name':{'type':Sequelize[_0x72a7('0x2')],'allowNull':![],'unique':_0x72a7('0x3')},'mode':{'type':Sequelize[_0x72a7('0x4')]('custom',_0x72a7('0x5'),_0x72a7('0x6'),_0x72a7('0x7'),'quietmp3',_0x72a7('0x8')),'allowNull':!![],'defaultValue':_0x72a7('0x5')},'directory':{'type':Sequelize[_0x72a7('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x72a7('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x72a7('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0x72a7('0x2')],'allowNull':!![],'defaultValue':_0x72a7('0x9')},'format':{'type':Sequelize[_0x72a7('0x2')],'allowNull':!![]},'stamp':{'type':_0x72a7('0xa')},'defaultEntry':{'type':Sequelize[_0x72a7('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index 5d8ab7d..d0adc22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a33=['update','body','create','sequelize','transaction','mode','files','directory','join','root','server/files/moh','mkdirSync','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','addSound','params','Sound','findOne','save_name','converted_format','server/files/sounds/converted','%s.%s','basename','extname','format','symlinkSync','message','removeSound','id2','createdAt','order','getSounds','eml-format','rimraf','zip-dir','moment','bluebird','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','get','MusicOnHolds','sendStatus','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','find'];(function(_0x4d0b5b,_0xf881c4){var _0x521856=function(_0x2e5d01){while(--_0x2e5d01){_0x4d0b5b['push'](_0x4d0b5b['shift']());}};_0x521856(++_0xf881c4);}(_0x9a33,0x188));var _0x39a3=function(_0xeb5575,_0x486f40){_0xeb5575=_0xeb5575-0x0;var _0x2da5cd=_0x9a33[_0xeb5575];return _0x2da5cd;};'use strict';var emlformat=require(_0x39a3('0x0'));var rimraf=require(_0x39a3('0x1'));var zipdir=require(_0x39a3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x39a3('0x3'));var BPromise=require(_0x39a3('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x39a3('0x5'));var sox=require(_0x39a3('0x6'));var csv=require(_0x39a3('0x7'));var ejs=require(_0x39a3('0x8'));var fs=require('fs');var fs_extra=require(_0x39a3('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x39a3('0xa'));var jsforce=require(_0x39a3('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x39a3('0xc'));var Papa=require(_0x39a3('0xd'));var Redis=require('ioredis');var authService=require(_0x39a3('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x39a3('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x39a3('0x10'));var utils=require(_0x39a3('0x11'));var config=require(_0x39a3('0x12'));var licenseUtil=require(_0x39a3('0x13'));var db=require(_0x39a3('0x14'))['db'];function respondWithStatusCode(_0x220792,_0x49437d){_0x49437d=_0x49437d||0xcc;return function(_0x146175){if(_0x146175){return _0x220792['sendStatus'](_0x49437d);}return _0x220792['status'](_0x49437d)[_0x39a3('0x15')]();};}function respondWithResult(_0xab79f2,_0x1e265a){_0x1e265a=_0x1e265a||0xc8;return function(_0x2ac687){if(_0x2ac687){return _0xab79f2[_0x39a3('0x16')](_0x1e265a)[_0x39a3('0x17')](_0x2ac687);}};}function respondWithFilteredResult(_0x3ac2d3,_0x4e8350){return function(_0x307aac){if(_0x307aac){var _0x5bafa6=typeof _0x4e8350[_0x39a3('0x18')]===_0x39a3('0x19')&&typeof _0x4e8350['limit']===_0x39a3('0x19');var _0xc2e4e2=_0x307aac[_0x39a3('0x1a')];var _0x1a8f07=_0x5bafa6?0x0:_0x4e8350[_0x39a3('0x18')];var _0x291281=_0x5bafa6?_0x307aac[_0x39a3('0x1a')]:_0x4e8350['offset']+_0x4e8350['limit'];var _0x4d0c68;if(_0x291281>=_0xc2e4e2){_0x291281=_0xc2e4e2;_0x4d0c68=0xc8;}else{_0x4d0c68=0xce;}_0x3ac2d3[_0x39a3('0x16')](_0x4d0c68);return _0x3ac2d3[_0x39a3('0x1b')](_0x39a3('0x1c'),_0x1a8f07+'-'+_0x291281+'/'+_0xc2e4e2)[_0x39a3('0x17')](_0x307aac);}return null;};}function patchUpdates(_0x35da58){return function(_0x33e95e){try{jsonpatch[_0x39a3('0x1d')](_0x33e95e,_0x35da58,!![]);}catch(_0x54affe){return BPromise[_0x39a3('0x1e')](_0x54affe);}return _0x33e95e[_0x39a3('0x1f')]();};}function saveUpdates(_0x3509fb,_0x596804){return function(_0x43355c){if(_0x43355c){return _0x43355c['update'](_0x3509fb)[_0x39a3('0x20')](function(_0x63d9b2){return _0x63d9b2;});}return null;};}function removeEntity(_0x5e7727,_0x23215){return function(_0x9b8275){if(_0x9b8275){return _0x9b8275[_0x39a3('0x21')]()['then'](function(){var _0x3aa607=_0x9b8275[_0x39a3('0x22')]({'plain':!![]});var _0x393209=_0x39a3('0x23');return db['UserProfileResource'][_0x39a3('0x21')]({'where':{'type':_0x393209,'resourceId':_0x3aa607['id']}})['then'](function(){return _0x9b8275;});})[_0x39a3('0x20')](function(){_0x5e7727[_0x39a3('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16de64,_0x66f812){return function(_0x4251a6){if(!_0x4251a6){_0x16de64[_0x39a3('0x24')](0x194);}return _0x4251a6;};}function handleError(_0x43e6eb,_0x1b73f2){_0x1b73f2=_0x1b73f2||0x1f4;return function(_0x336301){logger[_0x39a3('0x25')](_0x336301[_0x39a3('0x26')]);if(_0x336301[_0x39a3('0x27')]){delete _0x336301[_0x39a3('0x27')];}_0x43e6eb['status'](_0x1b73f2)[_0x39a3('0x28')](_0x336301);};}exports[_0x39a3('0x29')]=function(_0x5204b0,_0x58a947){var _0x210024={},_0x4bf386={},_0x107f00={'count':0x0,'rows':[]};var _0xd50be0=_[_0x39a3('0x2a')](db[_0x39a3('0x2b')][_0x39a3('0x2c')],function(_0x25c4cb){return{'name':_0x25c4cb[_0x39a3('0x2d')],'type':_0x25c4cb[_0x39a3('0x2e')]['key']};});_0x4bf386['model']=_['map'](_0xd50be0,'name');_0x4bf386[_0x39a3('0x2f')]=_[_0x39a3('0x30')](_0x5204b0[_0x39a3('0x2f')]);_0x4bf386[_0x39a3('0x31')]=_['intersection'](_0x4bf386[_0x39a3('0x32')],_0x4bf386['query']);_0x210024[_0x39a3('0x33')]=_[_0x39a3('0x34')](_0x4bf386['model'],qs[_0x39a3('0x35')](_0x5204b0[_0x39a3('0x2f')][_0x39a3('0x35')]));_0x210024[_0x39a3('0x33')]=_0x210024[_0x39a3('0x33')]['length']?_0x210024[_0x39a3('0x33')]:_0x4bf386[_0x39a3('0x32')];if(!_0x5204b0['query'][_0x39a3('0x36')](_0x39a3('0x37'))){_0x210024[_0x39a3('0x38')]=qs[_0x39a3('0x38')](_0x5204b0[_0x39a3('0x2f')][_0x39a3('0x38')]);_0x210024[_0x39a3('0x18')]=qs[_0x39a3('0x18')](_0x5204b0[_0x39a3('0x2f')][_0x39a3('0x18')]);}_0x210024['order']=qs[_0x39a3('0x39')](_0x5204b0[_0x39a3('0x2f')][_0x39a3('0x39')]);delete _0x5204b0[_0x39a3('0x2f')][_0x39a3('0x39')];_0x210024[_0x39a3('0x3a')]=qs[_0x39a3('0x31')](_[_0x39a3('0x3b')](_0x5204b0[_0x39a3('0x2f')],_0x4bf386[_0x39a3('0x31')]),_0xd50be0);if(_0x5204b0[_0x39a3('0x2f')][_0x39a3('0x3c')]){_0x210024[_0x39a3('0x3a')]=_[_0x39a3('0x3d')](_0x210024[_0x39a3('0x3a')],{'$or':_['map'](_0xd50be0,function(_0x5bbdae){if(_0x5bbdae[_0x39a3('0x2e')]!==_0x39a3('0x3e')){var _0x92dc3b={};_0x92dc3b[_0x5bbdae[_0x39a3('0x27')]]={'$like':'%'+_0x5204b0[_0x39a3('0x2f')][_0x39a3('0x3c')]+'%'};return _0x92dc3b;}})});}_0x210024=_[_0x39a3('0x3d')]({},_0x210024,_0x5204b0[_0x39a3('0x3f')]);var _0x118887={'where':_0x210024[_0x39a3('0x3a')]};return db[_0x39a3('0x2b')][_0x39a3('0x1a')](_0x118887)['then'](function(_0x15ebdf){_0x107f00[_0x39a3('0x1a')]=_0x15ebdf;if(_0x5204b0['query'][_0x39a3('0x40')]){_0x210024[_0x39a3('0x41')]=[{'all':!![]}];}return db[_0x39a3('0x2b')][_0x39a3('0x42')](_0x210024);})[_0x39a3('0x20')](function(_0x51fa36){_0x107f00[_0x39a3('0x43')]=_0x51fa36;return _0x107f00;})[_0x39a3('0x20')](respondWithFilteredResult(_0x58a947,_0x210024))[_0x39a3('0x44')](handleError(_0x58a947,null));};exports[_0x39a3('0x45')]=function(_0x3924db,_0x2db033){var _0x5e2e66={'raw':![],'where':{'id':_0x3924db['params']['id']}},_0x48908a={};_0x48908a[_0x39a3('0x32')]=_[_0x39a3('0x30')](db[_0x39a3('0x2b')][_0x39a3('0x2c')]);_0x48908a[_0x39a3('0x2f')]=_[_0x39a3('0x30')](_0x3924db['query']);_0x48908a[_0x39a3('0x31')]=_[_0x39a3('0x34')](_0x48908a[_0x39a3('0x32')],_0x48908a[_0x39a3('0x2f')]);_0x5e2e66[_0x39a3('0x33')]=_[_0x39a3('0x34')](_0x48908a[_0x39a3('0x32')],qs['fields'](_0x3924db[_0x39a3('0x2f')][_0x39a3('0x35')]));_0x5e2e66[_0x39a3('0x33')]=_0x5e2e66['attributes'][_0x39a3('0x46')]?_0x5e2e66[_0x39a3('0x33')]:_0x48908a[_0x39a3('0x32')];if(_0x3924db['query'][_0x39a3('0x40')]){_0x5e2e66[_0x39a3('0x41')]=[{'all':!![]}];}_0x5e2e66=_[_0x39a3('0x3d')]({},_0x5e2e66,_0x3924db['options']);return db[_0x39a3('0x2b')][_0x39a3('0x47')](_0x5e2e66)[_0x39a3('0x20')](handleEntityNotFound(_0x2db033,null))[_0x39a3('0x20')](respondWithResult(_0x2db033,null))['catch'](handleError(_0x2db033,null));};exports[_0x39a3('0x48')]=function(_0x5d0932,_0x3fa0d5){if(_0x5d0932[_0x39a3('0x49')]['id']){delete _0x5d0932[_0x39a3('0x49')]['id'];}return db[_0x39a3('0x2b')][_0x39a3('0x47')]({'where':{'id':_0x5d0932['params']['id']}})['then'](handleEntityNotFound(_0x3fa0d5,null))[_0x39a3('0x20')](saveUpdates(_0x5d0932[_0x39a3('0x49')],null))[_0x39a3('0x20')](respondWithResult(_0x3fa0d5,null))['catch'](handleError(_0x3fa0d5,null));};exports[_0x39a3('0x4a')]=function(_0x1b1ba6,_0x2769e5,_0x2d3c82){return db[_0x39a3('0x4b')][_0x39a3('0x4c')](function(_0x598da4){if(_0x1b1ba6[_0x39a3('0x49')][_0x39a3('0x4d')]===_0x39a3('0x4e')){_0x1b1ba6['body'][_0x39a3('0x4f')]=path[_0x39a3('0x50')](config[_0x39a3('0x51')],_0x39a3('0x52'),_0x1b1ba6['body'][_0x39a3('0x27')]);}return db[_0x39a3('0x2b')]['create'](_0x1b1ba6[_0x39a3('0x49')],{'transaction':_0x598da4})[_0x39a3('0x20')](function(_0x5a074d){if(_0x1b1ba6[_0x39a3('0x49')]['mode']==='files'){fs[_0x39a3('0x53')](_0x5a074d[_0x39a3('0x4f')],parseInt(_0x39a3('0x54'),0x8));}var _0x3409b4=_0x1b1ba6[_0x39a3('0x55')][_0x39a3('0x22')]({'plain':!![]});if(!_0x3409b4)throw new Error(_0x39a3('0x56'));if(_0x3409b4[_0x39a3('0x57')]==='user'){var _0xf04e76=_0x5a074d[_0x39a3('0x22')]({'plain':!![]});return db[_0x39a3('0x58')][_0x39a3('0x47')]({'where':{'name':_0x39a3('0x23'),'userProfileId':_0x3409b4[_0x39a3('0x59')]},'raw':!![]})[_0x39a3('0x20')](function(_0x4b44ab){if(_0x4b44ab&&_0x4b44ab[_0x39a3('0x5a')]===0x0){return db[_0x39a3('0x5b')]['create']({'name':_0xf04e76['name'],'resourceId':_0xf04e76['id'],'type':_0x4b44ab['name'],'sectionId':_0x4b44ab['id']},{})['then'](function(){return _0x5a074d;});}else{return _0x5a074d;}})['catch'](function(_0x4424d1){logger[_0x39a3('0x25')](_0x39a3('0x5c'),_0x4424d1);});}return _0x5a074d;});})[_0x39a3('0x20')](respondWithResult(_0x2769e5,0xc9))[_0x39a3('0x44')](handleError(_0x2769e5,null));};exports[_0x39a3('0x21')]=function(_0x13c623,_0x53e69a,_0x1b471a){var _0x2818ec;return db[_0x39a3('0x2b')]['find']({'where':{'id':_0x13c623['params']['id']}})['then'](function(_0x33bf5a){if(_0x33bf5a){return db[_0x39a3('0x4b')][_0x39a3('0x4c')](function(_0x301f15){return _0x33bf5a[_0x39a3('0x21')]({'transaction':_0x301f15,'raw':!![]})['then'](function(_0x2df1c5){if(_0x2df1c5[_0x39a3('0x4f')]){fs['readdirSync'](_0x2df1c5['directory'])[_0x39a3('0x5d')](function(_0x5b1f73){fs[_0x39a3('0x5e')](path[_0x39a3('0x50')](_0x2df1c5[_0x39a3('0x4f')],_0x5b1f73));});fs[_0x39a3('0x5f')](_0x2df1c5[_0x39a3('0x4f')]);}return _0x2df1c5;});})[_0x39a3('0x44')](function(_0x5acb57){throw new db[(_0x39a3('0x60'))][(_0x39a3('0x61'))](_0x5acb57['message']);});}})[_0x39a3('0x20')](handleEntityNotFound(_0x53e69a,null))[_0x39a3('0x20')](removeEntity(_0x53e69a,null))[_0x39a3('0x44')](handleError(_0x53e69a,null));};exports[_0x39a3('0x62')]=function(_0x566a92,_0x273c5f,_0x2e5da7){return db['sequelize'][_0x39a3('0x4c')](function(_0x3e9f8f){var _0x4b0ec7;return db[_0x39a3('0x2b')][_0x39a3('0x47')]({'where':{'id':_0x566a92[_0x39a3('0x63')]['id']}})[_0x39a3('0x20')](function(_0x5b102e){if(_0x5b102e){_0x4b0ec7=_0x5b102e;return _0x5b102e['addSound'](_0x566a92[_0x39a3('0x49')]['id'],{'transaction':_0x3e9f8f});}})[_0x39a3('0x20')](function(_0x21d440){if(_0x21d440){return db[_0x39a3('0x64')][_0x39a3('0x65')]({'where':{'id':_0x566a92[_0x39a3('0x49')]['id']},'attributes':['id',_0x39a3('0x27'),_0x39a3('0x66'),_0x39a3('0x67'),'createdAt'],'raw':!![]});}})[_0x39a3('0x20')](function(_0x26a2ac){if(_0x26a2ac){var _0x48093d=path['join'](config['root'],_0x39a3('0x68'),util['format'](_0x39a3('0x69'),path[_0x39a3('0x6a')](_0x26a2ac[_0x39a3('0x66')],path[_0x39a3('0x6b')](_0x26a2ac[_0x39a3('0x66')])),_0x26a2ac[_0x39a3('0x67')]));var _0x551416=path[_0x39a3('0x50')](config[_0x39a3('0x51')],'server/files/moh',_0x4b0ec7[_0x39a3('0x27')],util[_0x39a3('0x6c')](_0x39a3('0x69'),_0x26a2ac[_0x39a3('0x27')],_0x26a2ac[_0x39a3('0x67')]));fs[_0x39a3('0x6d')](_0x48093d,_0x551416);return _0x26a2ac;}})[_0x39a3('0x44')](function(_0x577952){throw new db[(_0x39a3('0x60'))]['ValidationError'](_0x577952[_0x39a3('0x6e')]);});})[_0x39a3('0x20')](handleEntityNotFound(_0x273c5f,null))['then'](respondWithResult(_0x273c5f,0xc9))[_0x39a3('0x44')](handleError(_0x273c5f,null));};exports['removeSound']=function(_0x30b8c3,_0x4374d3,_0x400f2f){return db[_0x39a3('0x4b')]['transaction'](function(_0xbce129){var _0x1fb63d;return db[_0x39a3('0x2b')]['findOne']({'where':{'id':_0x30b8c3['params']['id']}})[_0x39a3('0x20')](handleEntityNotFound(_0x4374d3,null))[_0x39a3('0x20')](function(_0x1e4c1b){if(_0x1e4c1b){_0x1fb63d=_0x1e4c1b;return _0x1e4c1b[_0x39a3('0x6f')](_0x30b8c3[_0x39a3('0x63')][_0x39a3('0x70')]);}})[_0x39a3('0x20')](function(_0x1c8711){if(_0x1c8711){return db[_0x39a3('0x64')]['findOne']({'where':{'id':_0x30b8c3['params'][_0x39a3('0x70')]},'attributes':['id',_0x39a3('0x27'),_0x39a3('0x66'),'converted_format',_0x39a3('0x71')],'raw':!![]});}})[_0x39a3('0x20')](function(_0x187849){if(_0x187849){fs[_0x39a3('0x5e')](path[_0x39a3('0x50')](_0x1fb63d[_0x39a3('0x4f')],util[_0x39a3('0x6c')](_0x39a3('0x69'),_0x187849[_0x39a3('0x27')],_0x187849[_0x39a3('0x67')])));return _0x187849;}})[_0x39a3('0x44')](function(_0xd8db57){throw new db[(_0x39a3('0x60'))][(_0x39a3('0x61'))](_0xd8db57[_0x39a3('0x6e')]);});})[_0x39a3('0x20')](handleEntityNotFound(_0x4374d3,null))[_0x39a3('0x20')](respondWithStatusCode(_0x4374d3,0xcc))[_0x39a3('0x44')](handleError(_0x4374d3,null));};exports['getSounds']=function(_0x4a09c1,_0x523151,_0x542cb2){var _0xb3a81c={};var _0x257265={};var _0xadebfa;var _0x5516eb;return db[_0x39a3('0x2b')][_0x39a3('0x65')]({'where':{'id':_0x4a09c1['params']['id']}})[_0x39a3('0x20')](handleEntityNotFound(_0x523151,null))[_0x39a3('0x20')](function(_0x173333){if(_0x173333){_0xadebfa=_0x173333;_0x257265[_0x39a3('0x32')]=_[_0x39a3('0x30')](db[_0x39a3('0x64')]['rawAttributes']);_0x257265[_0x39a3('0x2f')]=_[_0x39a3('0x30')](_0x4a09c1['query']);_0x257265['filters']=_[_0x39a3('0x34')](_0x257265[_0x39a3('0x32')],_0x257265[_0x39a3('0x2f')]);_0xb3a81c['attributes']=_[_0x39a3('0x34')](_0x257265['model'],qs[_0x39a3('0x35')](_0x4a09c1['query']['fields']));_0xb3a81c[_0x39a3('0x33')]=_0xb3a81c[_0x39a3('0x33')][_0x39a3('0x46')]?_0xb3a81c[_0x39a3('0x33')]:_0x257265['model'];_0xb3a81c[_0x39a3('0x72')]=qs[_0x39a3('0x39')](_0x4a09c1[_0x39a3('0x2f')][_0x39a3('0x39')]);_0xb3a81c[_0x39a3('0x3a')]=qs['filters'](_[_0x39a3('0x3b')](_0x4a09c1[_0x39a3('0x2f')],_0x257265['filters']));if(_0x4a09c1[_0x39a3('0x2f')][_0x39a3('0x3c')]){_0xb3a81c['where']=_[_0x39a3('0x3d')](_0xb3a81c[_0x39a3('0x3a')],{'$or':_['map'](_0xb3a81c['attributes'],function(_0x2a55a2){var _0x5cd58e={};_0x5cd58e[_0x2a55a2]={'$like':'%'+_0x4a09c1[_0x39a3('0x2f')][_0x39a3('0x3c')]+'%'};return _0x5cd58e;})});}_0xb3a81c=_[_0x39a3('0x3d')]({},_0xb3a81c,_0x4a09c1[_0x39a3('0x3f')]);return _0xadebfa[_0x39a3('0x73')](_0xb3a81c);}})[_0x39a3('0x20')](function(_0x5ee1ef){if(_0x5ee1ef){_0x5516eb=_0x5ee1ef[_0x39a3('0x46')];if(!_0x4a09c1[_0x39a3('0x2f')]['hasOwnProperty'](_0x39a3('0x37'))){_0xb3a81c[_0x39a3('0x38')]=qs['limit'](_0x4a09c1[_0x39a3('0x2f')][_0x39a3('0x38')]);_0xb3a81c[_0x39a3('0x18')]=qs[_0x39a3('0x18')](_0x4a09c1[_0x39a3('0x2f')]['offset']);}return _0xadebfa[_0x39a3('0x73')](_0xb3a81c);}})[_0x39a3('0x20')](function(_0x11a4e8){if(_0x11a4e8){return _0x11a4e8?{'count':_0x5516eb,'rows':_0x11a4e8}:null;}})[_0x39a3('0x20')](respondWithResult(_0x523151,null))[_0x39a3('0x44')](handleError(_0x523151,null));};
\ No newline at end of file
+var _0x6772=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','update','destroy','UserProfileResource','then','error','stack','name','index','map','VoiceMusicOnHold','fieldName','model','query','filters','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','catch','show','params','keys','rawAttributes','intersection','find','body','create','sequelize','transaction','mode','files','join','root','mkdirSync','0777','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MusicOnHolds','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','directory','readdirSync','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','addSound','Sound','findOne','save_name','converted_format','server/files/sounds/converted','format','%s.%s','basename','extname','server/files/moh','symlinkSync','message','removeSound','id2','getSounds','order','rimraf','zip-dir'];(function(_0x220afa,_0xf5f6cc){var _0x1b79d1=function(_0x178a39){while(--_0x178a39){_0x220afa['push'](_0x220afa['shift']());}};_0x1b79d1(++_0xf5f6cc);}(_0x6772,0x1c2));var _0x2677=function(_0x3008f8,_0x547d7a){_0x3008f8=_0x3008f8-0x0;var _0x4f8bac=_0x6772[_0x3008f8];return _0x4f8bac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2677('0x0'));var zipdir=require(_0x2677('0x1'));var jsonpatch=require(_0x2677('0x2'));var rp=require(_0x2677('0x3'));var moment=require(_0x2677('0x4'));var BPromise=require(_0x2677('0x5'));var Mustache=require(_0x2677('0x6'));var util=require(_0x2677('0x7'));var path=require(_0x2677('0x8'));var sox=require(_0x2677('0x9'));var csv=require(_0x2677('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2677('0xb'));var _=require(_0x2677('0xc'));var squel=require(_0x2677('0xd'));var crypto=require('crypto');var jsforce=require(_0x2677('0xe'));var deskjs=require(_0x2677('0xf'));var toCsv=require(_0x2677('0xa'));var querystring=require('querystring');var Papa=require(_0x2677('0x10'));var Redis=require(_0x2677('0x11'));var authService=require(_0x2677('0x12'));var qs=require(_0x2677('0x13'));var as=require(_0x2677('0x14'));var hardwareService=require(_0x2677('0x15'));var logger=require('../../config/logger')(_0x2677('0x16'));var utils=require(_0x2677('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2677('0x18'));var db=require(_0x2677('0x19'))['db'];function respondWithStatusCode(_0x23a23b,_0x1347dc){_0x1347dc=_0x1347dc||0xcc;return function(_0x38af19){if(_0x38af19){return _0x23a23b[_0x2677('0x1a')](_0x1347dc);}return _0x23a23b[_0x2677('0x1b')](_0x1347dc)[_0x2677('0x1c')]();};}function respondWithResult(_0x1c7266,_0x2429c){_0x2429c=_0x2429c||0xc8;return function(_0x3b13cc){if(_0x3b13cc){return _0x1c7266['status'](_0x2429c)['json'](_0x3b13cc);}};}function respondWithFilteredResult(_0x8ece86,_0x11f3b6){return function(_0x5e37fb){if(_0x5e37fb){var _0x127c82=typeof _0x11f3b6['offset']===_0x2677('0x1d')&&typeof _0x11f3b6[_0x2677('0x1e')]===_0x2677('0x1d');var _0x3b3b6c=_0x5e37fb[_0x2677('0x1f')];var _0xc9d06c=_0x127c82?0x0:_0x11f3b6[_0x2677('0x20')];var _0x572ca6=_0x127c82?_0x5e37fb['count']:_0x11f3b6['offset']+_0x11f3b6[_0x2677('0x1e')];var _0x2fc1b8;if(_0x572ca6>=_0x3b3b6c){_0x572ca6=_0x3b3b6c;_0x2fc1b8=0xc8;}else{_0x2fc1b8=0xce;}_0x8ece86[_0x2677('0x1b')](_0x2fc1b8);return _0x8ece86[_0x2677('0x21')](_0x2677('0x22'),_0xc9d06c+'-'+_0x572ca6+'/'+_0x3b3b6c)[_0x2677('0x23')](_0x5e37fb);}return null;};}function patchUpdates(_0xacf2f0){return function(_0x1321ed){try{jsonpatch['apply'](_0x1321ed,_0xacf2f0,!![]);}catch(_0x3e47d5){return BPromise['reject'](_0x3e47d5);}return _0x1321ed['save']();};}function saveUpdates(_0x302d1a,_0x1df20c){return function(_0x4287a2){if(_0x4287a2){return _0x4287a2[_0x2677('0x24')](_0x302d1a)['then'](function(_0x12ecaa){return _0x12ecaa;});}return null;};}function removeEntity(_0x23210a,_0x64dc2f){return function(_0x51eeed){if(_0x51eeed){return _0x51eeed[_0x2677('0x25')]()['then'](function(){var _0xdee327=_0x51eeed['get']({'plain':!![]});var _0x8f1b61='MusicOnHolds';return db[_0x2677('0x26')][_0x2677('0x25')]({'where':{'type':_0x8f1b61,'resourceId':_0xdee327['id']}})['then'](function(){return _0x51eeed;});})[_0x2677('0x27')](function(){_0x23210a[_0x2677('0x1b')](0xcc)[_0x2677('0x1c')]();});}};}function handleEntityNotFound(_0x30819c,_0x1dab5a){return function(_0x20b6e6){if(!_0x20b6e6){_0x30819c[_0x2677('0x1a')](0x194);}return _0x20b6e6;};}function handleError(_0x3fbc5e,_0x138601){_0x138601=_0x138601||0x1f4;return function(_0x42f7bc){logger[_0x2677('0x28')](_0x42f7bc[_0x2677('0x29')]);if(_0x42f7bc[_0x2677('0x2a')]){delete _0x42f7bc[_0x2677('0x2a')];}_0x3fbc5e[_0x2677('0x1b')](_0x138601)['send'](_0x42f7bc);};}exports[_0x2677('0x2b')]=function(_0x5a7a49,_0x11f924){var _0x3601b6={},_0x3a22af={},_0x8adf26={'count':0x0,'rows':[]};var _0x53834f=_[_0x2677('0x2c')](db[_0x2677('0x2d')]['rawAttributes'],function(_0xb0979b){return{'name':_0xb0979b[_0x2677('0x2e')],'type':_0xb0979b['type']['key']};});_0x3a22af[_0x2677('0x2f')]=_[_0x2677('0x2c')](_0x53834f,'name');_0x3a22af[_0x2677('0x30')]=_['keys'](_0x5a7a49[_0x2677('0x30')]);_0x3a22af[_0x2677('0x31')]=_['intersection'](_0x3a22af['model'],_0x3a22af['query']);_0x3601b6['attributes']=_['intersection'](_0x3a22af['model'],qs[_0x2677('0x32')](_0x5a7a49['query'][_0x2677('0x32')]));_0x3601b6['attributes']=_0x3601b6[_0x2677('0x33')][_0x2677('0x34')]?_0x3601b6[_0x2677('0x33')]:_0x3a22af['model'];if(!_0x5a7a49[_0x2677('0x30')][_0x2677('0x35')](_0x2677('0x36'))){_0x3601b6['limit']=qs[_0x2677('0x1e')](_0x5a7a49[_0x2677('0x30')][_0x2677('0x1e')]);_0x3601b6[_0x2677('0x20')]=qs[_0x2677('0x20')](_0x5a7a49[_0x2677('0x30')][_0x2677('0x20')]);}_0x3601b6['order']=qs['sort'](_0x5a7a49[_0x2677('0x30')][_0x2677('0x37')]);delete _0x5a7a49['query']['sort'];_0x3601b6[_0x2677('0x38')]=qs[_0x2677('0x31')](_[_0x2677('0x39')](_0x5a7a49['query'],_0x3a22af[_0x2677('0x31')]),_0x53834f);if(_0x5a7a49['query']['filter']){_0x3601b6[_0x2677('0x38')]=_[_0x2677('0x3a')](_0x3601b6['where'],{'$or':_['map'](_0x53834f,function(_0x6d1305){if(_0x6d1305[_0x2677('0x3b')]!==_0x2677('0x3c')){var _0x4c76a0={};_0x4c76a0[_0x6d1305[_0x2677('0x2a')]]={'$like':'%'+_0x5a7a49[_0x2677('0x30')][_0x2677('0x3d')]+'%'};return _0x4c76a0;}})});}_0x3601b6=_['merge']({},_0x3601b6,_0x5a7a49[_0x2677('0x3e')]);var _0x513fdb={'where':_0x3601b6[_0x2677('0x38')]};return db[_0x2677('0x2d')][_0x2677('0x1f')](_0x513fdb)['then'](function(_0x1c2de0){_0x8adf26[_0x2677('0x1f')]=_0x1c2de0;if(_0x5a7a49[_0x2677('0x30')][_0x2677('0x3f')]){_0x3601b6[_0x2677('0x40')]=[{'all':!![]}];}return db[_0x2677('0x2d')]['findAll'](_0x3601b6);})['then'](function(_0x5d73c8){_0x8adf26['rows']=_0x5d73c8;return _0x8adf26;})[_0x2677('0x27')](respondWithFilteredResult(_0x11f924,_0x3601b6))[_0x2677('0x41')](handleError(_0x11f924,null));};exports[_0x2677('0x42')]=function(_0x97493,_0x29df42){var _0x552ffa={'raw':![],'where':{'id':_0x97493[_0x2677('0x43')]['id']}},_0x594b10={};_0x594b10[_0x2677('0x2f')]=_[_0x2677('0x44')](db[_0x2677('0x2d')][_0x2677('0x45')]);_0x594b10[_0x2677('0x30')]=_['keys'](_0x97493[_0x2677('0x30')]);_0x594b10[_0x2677('0x31')]=_[_0x2677('0x46')](_0x594b10[_0x2677('0x2f')],_0x594b10['query']);_0x552ffa[_0x2677('0x33')]=_[_0x2677('0x46')](_0x594b10['model'],qs[_0x2677('0x32')](_0x97493[_0x2677('0x30')]['fields']));_0x552ffa[_0x2677('0x33')]=_0x552ffa[_0x2677('0x33')]['length']?_0x552ffa['attributes']:_0x594b10[_0x2677('0x2f')];if(_0x97493[_0x2677('0x30')]['includeAll']){_0x552ffa[_0x2677('0x40')]=[{'all':!![]}];}_0x552ffa=_[_0x2677('0x3a')]({},_0x552ffa,_0x97493[_0x2677('0x3e')]);return db[_0x2677('0x2d')][_0x2677('0x47')](_0x552ffa)[_0x2677('0x27')](handleEntityNotFound(_0x29df42,null))['then'](respondWithResult(_0x29df42,null))[_0x2677('0x41')](handleError(_0x29df42,null));};exports[_0x2677('0x24')]=function(_0x243774,_0xfe8a91){if(_0x243774['body']['id']){delete _0x243774[_0x2677('0x48')]['id'];}return db[_0x2677('0x2d')][_0x2677('0x47')]({'where':{'id':_0x243774[_0x2677('0x43')]['id']}})['then'](handleEntityNotFound(_0xfe8a91,null))['then'](saveUpdates(_0x243774[_0x2677('0x48')],null))[_0x2677('0x27')](respondWithResult(_0xfe8a91,null))[_0x2677('0x41')](handleError(_0xfe8a91,null));};exports[_0x2677('0x49')]=function(_0x49c252,_0x384585,_0x2ef3a6){return db[_0x2677('0x4a')][_0x2677('0x4b')](function(_0x5016ab){if(_0x49c252[_0x2677('0x48')][_0x2677('0x4c')]===_0x2677('0x4d')){_0x49c252['body']['directory']=path[_0x2677('0x4e')](config[_0x2677('0x4f')],'server/files/moh',_0x49c252[_0x2677('0x48')][_0x2677('0x2a')]);}return db[_0x2677('0x2d')]['create'](_0x49c252[_0x2677('0x48')],{'transaction':_0x5016ab})[_0x2677('0x27')](function(_0x16e741){if(_0x49c252[_0x2677('0x48')][_0x2677('0x4c')]===_0x2677('0x4d')){fs[_0x2677('0x50')](_0x16e741['directory'],parseInt(_0x2677('0x51'),0x8));}var _0x5f2366=_0x49c252[_0x2677('0x52')][_0x2677('0x53')]({'plain':!![]});if(!_0x5f2366)throw new Error(_0x2677('0x54'));if(_0x5f2366[_0x2677('0x55')]==='user'){var _0x5ac00f=_0x16e741[_0x2677('0x53')]({'plain':!![]});return db[_0x2677('0x56')][_0x2677('0x47')]({'where':{'name':_0x2677('0x57'),'userProfileId':_0x5f2366['userProfileId']},'raw':!![]})['then'](function(_0x2503ab){if(_0x2503ab&&_0x2503ab['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x5ac00f[_0x2677('0x2a')],'resourceId':_0x5ac00f['id'],'type':_0x2503ab[_0x2677('0x2a')],'sectionId':_0x2503ab['id']},{})[_0x2677('0x27')](function(){return _0x16e741;});}else{return _0x16e741;}})['catch'](function(_0x226a91){logger[_0x2677('0x28')](_0x2677('0x58'),_0x226a91);});}return _0x16e741;});})['then'](respondWithResult(_0x384585,0xc9))[_0x2677('0x41')](handleError(_0x384585,null));};exports[_0x2677('0x25')]=function(_0x4a4e75,_0x589512,_0x5dad44){var _0x53a783;return db[_0x2677('0x2d')][_0x2677('0x47')]({'where':{'id':_0x4a4e75[_0x2677('0x43')]['id']}})['then'](function(_0xf79c1){if(_0xf79c1){return db[_0x2677('0x4a')]['transaction'](function(_0xc35548){return _0xf79c1[_0x2677('0x25')]({'transaction':_0xc35548,'raw':!![]})[_0x2677('0x27')](function(_0x7b53e){if(_0x7b53e[_0x2677('0x59')]){fs[_0x2677('0x5a')](_0x7b53e['directory'])[_0x2677('0x5b')](function(_0xf2147){fs[_0x2677('0x5c')](path[_0x2677('0x4e')](_0x7b53e['directory'],_0xf2147));});fs[_0x2677('0x5d')](_0x7b53e[_0x2677('0x59')]);}return _0x7b53e;});})[_0x2677('0x41')](function(_0x327179){throw new db[(_0x2677('0x5e'))][(_0x2677('0x5f'))](_0x327179['message']);});}})[_0x2677('0x27')](handleEntityNotFound(_0x589512,null))[_0x2677('0x27')](removeEntity(_0x589512,null))['catch'](handleError(_0x589512,null));};exports[_0x2677('0x60')]=function(_0x498c2f,_0x411671,_0x509282){return db['sequelize'][_0x2677('0x4b')](function(_0x42bc10){var _0x276ede;return db[_0x2677('0x2d')][_0x2677('0x47')]({'where':{'id':_0x498c2f[_0x2677('0x43')]['id']}})[_0x2677('0x27')](function(_0x46b692){if(_0x46b692){_0x276ede=_0x46b692;return _0x46b692[_0x2677('0x60')](_0x498c2f['body']['id'],{'transaction':_0x42bc10});}})[_0x2677('0x27')](function(_0x32b6af){if(_0x32b6af){return db[_0x2677('0x61')][_0x2677('0x62')]({'where':{'id':_0x498c2f[_0x2677('0x48')]['id']},'attributes':['id',_0x2677('0x2a'),_0x2677('0x63'),_0x2677('0x64'),'createdAt'],'raw':!![]});}})[_0x2677('0x27')](function(_0x4e65b5){if(_0x4e65b5){var _0xdb2ab6=path[_0x2677('0x4e')](config[_0x2677('0x4f')],_0x2677('0x65'),util[_0x2677('0x66')](_0x2677('0x67'),path[_0x2677('0x68')](_0x4e65b5[_0x2677('0x63')],path[_0x2677('0x69')](_0x4e65b5['save_name'])),_0x4e65b5['converted_format']));var _0x22da2b=path[_0x2677('0x4e')](config['root'],_0x2677('0x6a'),_0x276ede[_0x2677('0x2a')],util[_0x2677('0x66')](_0x2677('0x67'),_0x4e65b5['name'],_0x4e65b5[_0x2677('0x64')]));fs[_0x2677('0x6b')](_0xdb2ab6,_0x22da2b);return _0x4e65b5;}})[_0x2677('0x41')](function(_0x40a1b3){throw new db[(_0x2677('0x5e'))][(_0x2677('0x5f'))](_0x40a1b3[_0x2677('0x6c')]);});})[_0x2677('0x27')](handleEntityNotFound(_0x411671,null))['then'](respondWithResult(_0x411671,0xc9))[_0x2677('0x41')](handleError(_0x411671,null));};exports[_0x2677('0x6d')]=function(_0x3ae86d,_0x5556ce,_0x13516d){return db[_0x2677('0x4a')][_0x2677('0x4b')](function(_0xe85983){var _0xd694a;return db[_0x2677('0x2d')][_0x2677('0x62')]({'where':{'id':_0x3ae86d[_0x2677('0x43')]['id']}})['then'](handleEntityNotFound(_0x5556ce,null))[_0x2677('0x27')](function(_0x262ab3){if(_0x262ab3){_0xd694a=_0x262ab3;return _0x262ab3[_0x2677('0x6d')](_0x3ae86d[_0x2677('0x43')][_0x2677('0x6e')]);}})[_0x2677('0x27')](function(_0x42bba4){if(_0x42bba4){return db[_0x2677('0x61')]['findOne']({'where':{'id':_0x3ae86d[_0x2677('0x43')]['id2']},'attributes':['id','name',_0x2677('0x63'),_0x2677('0x64'),'createdAt'],'raw':!![]});}})[_0x2677('0x27')](function(_0x40f7cc){if(_0x40f7cc){fs[_0x2677('0x5c')](path['join'](_0xd694a[_0x2677('0x59')],util[_0x2677('0x66')](_0x2677('0x67'),_0x40f7cc[_0x2677('0x2a')],_0x40f7cc[_0x2677('0x64')])));return _0x40f7cc;}})[_0x2677('0x41')](function(_0x2cae50){throw new db[(_0x2677('0x5e'))][(_0x2677('0x5f'))](_0x2cae50[_0x2677('0x6c')]);});})['then'](handleEntityNotFound(_0x5556ce,null))[_0x2677('0x27')](respondWithStatusCode(_0x5556ce,0xcc))[_0x2677('0x41')](handleError(_0x5556ce,null));};exports[_0x2677('0x6f')]=function(_0x1f928c,_0x4d6a60,_0x2779fa){var _0x5c2c00={};var _0x10db55={};var _0x4a0402;var _0x519500;return db[_0x2677('0x2d')]['findOne']({'where':{'id':_0x1f928c[_0x2677('0x43')]['id']}})[_0x2677('0x27')](handleEntityNotFound(_0x4d6a60,null))[_0x2677('0x27')](function(_0x21ef4a){if(_0x21ef4a){_0x4a0402=_0x21ef4a;_0x10db55[_0x2677('0x2f')]=_['keys'](db[_0x2677('0x61')][_0x2677('0x45')]);_0x10db55[_0x2677('0x30')]=_['keys'](_0x1f928c[_0x2677('0x30')]);_0x10db55[_0x2677('0x31')]=_[_0x2677('0x46')](_0x10db55[_0x2677('0x2f')],_0x10db55[_0x2677('0x30')]);_0x5c2c00[_0x2677('0x33')]=_['intersection'](_0x10db55[_0x2677('0x2f')],qs['fields'](_0x1f928c['query']['fields']));_0x5c2c00[_0x2677('0x33')]=_0x5c2c00[_0x2677('0x33')]['length']?_0x5c2c00[_0x2677('0x33')]:_0x10db55['model'];_0x5c2c00[_0x2677('0x70')]=qs[_0x2677('0x37')](_0x1f928c['query'][_0x2677('0x37')]);_0x5c2c00['where']=qs[_0x2677('0x31')](_[_0x2677('0x39')](_0x1f928c['query'],_0x10db55[_0x2677('0x31')]));if(_0x1f928c[_0x2677('0x30')][_0x2677('0x3d')]){_0x5c2c00[_0x2677('0x38')]=_['merge'](_0x5c2c00['where'],{'$or':_[_0x2677('0x2c')](_0x5c2c00[_0x2677('0x33')],function(_0x34e477){var _0x18be69={};_0x18be69[_0x34e477]={'$like':'%'+_0x1f928c['query'][_0x2677('0x3d')]+'%'};return _0x18be69;})});}_0x5c2c00=_['merge']({},_0x5c2c00,_0x1f928c['options']);return _0x4a0402[_0x2677('0x6f')](_0x5c2c00);}})[_0x2677('0x27')](function(_0x4182a8){if(_0x4182a8){_0x519500=_0x4182a8[_0x2677('0x34')];if(!_0x1f928c[_0x2677('0x30')]['hasOwnProperty'](_0x2677('0x36'))){_0x5c2c00[_0x2677('0x1e')]=qs['limit'](_0x1f928c[_0x2677('0x30')][_0x2677('0x1e')]);_0x5c2c00['offset']=qs[_0x2677('0x20')](_0x1f928c['query']['offset']);}return _0x4a0402[_0x2677('0x6f')](_0x5c2c00);}})['then'](function(_0x128211){if(_0x128211){return _0x128211?{'count':_0x519500,'rows':_0x128211}:null;}})[_0x2677('0x27')](respondWithResult(_0x4d6a60,null))[_0x2677('0x41')](handleError(_0x4d6a60,null));};
\ No newline at end of file
index e4b5a8f..cf5e829 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x159d=['./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x27d629,_0x720daa){var _0x391c12=function(_0x381413){while(--_0x381413){_0x27d629['push'](_0x27d629['shift']());}};_0x391c12(++_0x720daa);}(_0x159d,0x94));var _0xd159=function(_0x15e950,_0x1db756){_0x15e950=_0x15e950-0x0;var _0x3425e5=_0x159d[_0x15e950];return _0x3425e5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd159('0x0'))(_0xd159('0x1'));var moment=require(_0xd159('0x2'));var BPromise=require('bluebird');var rp=require(_0xd159('0x3'));var fs=require('fs');var path=require(_0xd159('0x4'));var rimraf=require(_0xd159('0x5'));var config=require('../../config/environment');var attributes=require(_0xd159('0x6'));module[_0xd159('0x7')]=function(_0x5e7415,_0x393fa8){return _0x5e7415[_0xd159('0x8')](_0xd159('0x9'),attributes,{'tableName':_0xd159('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfecc=['../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define','voice_musiconhold','lodash','util'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xfecc,0x153));var _0xcfec=function(_0x1ef610,_0x365f7b){_0x1ef610=_0x1ef610-0x0;var _0x376f34=_0xfecc[_0x1ef610];return _0x376f34;};'use strict';var _=require(_0xcfec('0x0'));var util=require(_0xcfec('0x1'));var logger=require(_0xcfec('0x2'))(_0xcfec('0x3'));var moment=require(_0xcfec('0x4'));var BPromise=require(_0xcfec('0x5'));var rp=require(_0xcfec('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcfec('0x7'));var config=require('../../config/environment');var attributes=require('./voiceMusicOnHold.attributes');module[_0xcfec('0x8')]=function(_0x569e79,_0x38cf45){return _0x569e79[_0xcfec('0x9')]('VoiceMusicOnHold',attributes,{'tableName':_0xcfec('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 946c674..e3e880f 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(_0x4d9c2c,_0x87d40d){var _0xcad626=function(_0x7b657){while(--_0x7b657){_0x4d9c2c['push'](_0x4d9c2c['shift']());}};_0xcad626(++_0x87d40d);}(_0xe706,0xa3));var _0x6e70=function(_0x273ace,_0x3b28bc){_0x273ace=_0x273ace-0x0;var _0x5a5548=_0xe706[_0x273ace];return _0x5a5548;};'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 _0x9c44=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','code','error','message','VoiceMusicOnHold,\x20%s,\x20%s','info','result','catch','moment','bluebird'];(function(_0x493be8,_0x43eb88){var _0x1add63=function(_0x119d95){while(--_0x119d95){_0x493be8['push'](_0x493be8['shift']());}};_0x1add63(++_0x43eb88);}(_0x9c44,0x178));var _0x49c4=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x9c44[_0x2064e5];return _0x21a233;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var BPromise=require(_0x49c4('0x1'));var rs=require(_0x49c4('0x2'));var fs=require('fs');var Redis=require(_0x49c4('0x3'));var db=require(_0x49c4('0x4'))['db'];var utils=require(_0x49c4('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c4('0x7')][_0x49c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x69bc41,_0x2c4e2e,_0x436234){return new BPromise(function(_0x511d53,_0x11c586){return client[_0x49c4('0x9')](_0x69bc41,_0x436234)[_0x49c4('0xa')](function(_0x4487ca){logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));logger[_0x49c4('0xc')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'),JSON[_0x49c4('0xd')](_0x4487ca));if(_0x4487ca['error']){if(_0x4487ca['error'][_0x49c4('0xe')]===0x1f4){logger[_0x49c4('0xf')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x11c586(_0x4487ca['error'][_0x49c4('0x10')]);}logger[_0x49c4('0xf')](_0x49c4('0x11'),_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x511d53(_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);}else{logger[_0x49c4('0x12')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));_0x511d53(_0x4487ca[_0x49c4('0x13')][_0x49c4('0x10')]);}})[_0x49c4('0x14')](function(_0x2abc78){logger['error'](_0x49c4('0x11'),_0x2c4e2e,_0x2abc78);_0x11c586(_0x2abc78);});});}
\ No newline at end of file
index 3ac23ca..9649e50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd694=['removeAgents','removeTeams','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./voicePrefix.controller','isAuthenticated','index','get','/describe','describe','/:id','show','getAgents','/:id/teams','getTeams','post','create','/:id/users','addAgents','put','update','delete'];(function(_0x3953d7,_0x32b102){var _0x1d9e59=function(_0x4178f6){while(--_0x4178f6){_0x3953d7['push'](_0x3953d7['shift']());}};_0x1d9e59(++_0x32b102);}(_0xd694,0x11b));var _0x4d69=function(_0x1c3517,_0x29132c){_0x1c3517=_0x1c3517-0x0;var _0x414567=_0xd694[_0x1c3517];return _0x414567;};'use strict';var multer=require(_0x4d69('0x0'));var util=require('util');var path=require(_0x4d69('0x1'));var timeout=require(_0x4d69('0x2'));var express=require(_0x4d69('0x3'));var router=express[_0x4d69('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4d69('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4d69('0x6'));var controller=require(_0x4d69('0x7'));router['get']('/',auth[_0x4d69('0x8')](),controller[_0x4d69('0x9')]);router[_0x4d69('0xa')](_0x4d69('0xb'),auth['isAuthenticated'](),controller[_0x4d69('0xc')]);router['get'](_0x4d69('0xd'),auth[_0x4d69('0x8')](),controller[_0x4d69('0xe')]);router['get']('/:id/users',auth[_0x4d69('0x8')](),controller[_0x4d69('0xf')]);router[_0x4d69('0xa')](_0x4d69('0x10'),auth[_0x4d69('0x8')](),controller[_0x4d69('0x11')]);router[_0x4d69('0x12')]('/',auth[_0x4d69('0x8')](),controller[_0x4d69('0x13')]);router['post'](_0x4d69('0x14'),auth[_0x4d69('0x8')](),controller[_0x4d69('0x15')]);router[_0x4d69('0x12')](_0x4d69('0x10'),auth[_0x4d69('0x8')](),controller['addTeams']);router[_0x4d69('0x16')]('/:id',auth[_0x4d69('0x8')](),controller[_0x4d69('0x17')]);router[_0x4d69('0x18')](_0x4d69('0xd'),auth[_0x4d69('0x8')](),controller['destroy']);router[_0x4d69('0x18')](_0x4d69('0x14'),auth[_0x4d69('0x8')](),controller[_0x4d69('0x19')]);router[_0x4d69('0x18')](_0x4d69('0x10'),auth[_0x4d69('0x8')](),controller[_0x4d69('0x1a')]);module[_0x4d69('0x1b')]=router;
\ No newline at end of file
+var _0xe462=['/:id/users','getAgents','post','create','addAgents','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x426c3f,_0x54db0a){var _0x24e6ef=function(_0x11e3cf){while(--_0x11e3cf){_0x426c3f['push'](_0x426c3f['shift']());}};_0x24e6ef(++_0x54db0a);}(_0xe462,0x172));var _0x2e46=function(_0x16aa70,_0x5b1f73){_0x16aa70=_0x16aa70-0x0;var _0x11875f=_0xe462[_0x16aa70];return _0x11875f;};'use strict';var multer=require(_0x2e46('0x0'));var util=require(_0x2e46('0x1'));var path=require('path');var timeout=require(_0x2e46('0x2'));var express=require(_0x2e46('0x3'));var router=express[_0x2e46('0x4')]();var fs_extra=require(_0x2e46('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2e46('0x6'));var config=require(_0x2e46('0x7'));var controller=require('./voicePrefix.controller');router[_0x2e46('0x8')]('/',auth[_0x2e46('0x9')](),controller[_0x2e46('0xa')]);router['get'](_0x2e46('0xb'),auth[_0x2e46('0x9')](),controller['describe']);router[_0x2e46('0x8')](_0x2e46('0xc'),auth[_0x2e46('0x9')](),controller[_0x2e46('0xd')]);router[_0x2e46('0x8')](_0x2e46('0xe'),auth[_0x2e46('0x9')](),controller[_0x2e46('0xf')]);router[_0x2e46('0x10')]('/',auth['isAuthenticated'](),controller[_0x2e46('0x11')]);router[_0x2e46('0x10')](_0x2e46('0xe'),auth[_0x2e46('0x9')](),controller[_0x2e46('0x12')]);router[_0x2e46('0x13')](_0x2e46('0xc'),auth[_0x2e46('0x9')](),controller[_0x2e46('0x14')]);router[_0x2e46('0x15')](_0x2e46('0xc'),auth['isAuthenticated'](),controller[_0x2e46('0x16')]);router[_0x2e46('0x15')](_0x2e46('0xe'),auth['isAuthenticated'](),controller['removeAgents']);module[_0x2e46('0x17')]=router;
\ No newline at end of file
index d9b4c6c..400fbdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5309=['name','getDataValue','exports','STRING'];(function(_0x12dd11,_0x52b882){var _0x3a502b=function(_0x1a660d){while(--_0x1a660d){_0x12dd11['push'](_0x12dd11['shift']());}};_0x3a502b(++_0x52b882);}(_0x5309,0x1be));var _0x9530=function(_0x3c858f,_0x235201){_0x3c858f=_0x3c858f-0x0;var _0x198090=_0x5309[_0x3c858f];return _0x198090;};'use strict';var Sequelize=require('sequelize');module[_0x9530('0x0')]={'name':{'type':Sequelize[_0x9530('0x1')],'allowNull':![],'unique':_0x9530('0x2')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x416d81){return'system-'+this[_0x9530('0x3')](_0x9530('0x2'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x9530('0x1')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xd969=['VIRTUAL','getDataValue','INTEGER','exports','STRING','name'];(function(_0x48f29a,_0x1f9f1a){var _0x467232=function(_0xf1ae7e){while(--_0xf1ae7e){_0x48f29a['push'](_0x48f29a['shift']());}};_0x467232(++_0x1f9f1a);}(_0xd969,0xed));var _0x9d96=function(_0x285800,_0x26765e){_0x285800=_0x285800-0x0;var _0x4b809e=_0xd969[_0x285800];return _0x4b809e;};'use strict';var Sequelize=require('sequelize');module[_0x9d96('0x0')]={'name':{'type':Sequelize[_0x9d96('0x1')],'allowNull':![],'unique':_0x9d96('0x2')},'prefix':{'type':Sequelize[_0x9d96('0x3')],'get':function(_0x405512){return'system-'+this[_0x9d96('0x4')](_0x9d96('0x2'))+'-';}},'description':{'type':Sequelize[_0x9d96('0x1')]},'callerIdAll':{'type':Sequelize[_0x9d96('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0x9d96('0x5')]}};
\ No newline at end of file
index 72228db..8ea5bed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['length','nolimit','order','sort','where','filters','pick','filter','merge','VoicePrefix','includeAll','include','findAll','rows','catch','params','fields','describe','create','sequelize','body','VoiceExtension','find','VoiceExtensionId','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','No\x20callerid\x20available','goto','${EXTEN:','charAt','update','system-','findById','addAgents','omit','spread','ids','emit','userVoicePrefix:save','isArray','userVoicePrefix:remove','findOne','User','options','hasOwnProperty','getAgents','getTeams','rawAttributes','addTeams','Team','Agents','online','voicePause','interface','flatMap','transaction','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','tq.TeamId','from','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','all','value','isEmpty','removeAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','get','VoicePrefixes','stack','name','send','map','fieldName','type','key','model','query','keys','intersection','attributes'];(function(_0x12ceab,_0x26e82a){var _0x247715=function(_0x41dcdc){while(--_0x41dcdc){_0x12ceab['push'](_0x12ceab['shift']());}};_0x247715(++_0x26e82a);}(_0xdb28,0x106));var _0x8db2=function(_0x29a056,_0x27616d){_0x29a056=_0x29a056-0x0;var _0xa02b53=_0xdb28[_0x29a056];return _0xa02b53;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];config[_0x8db2('0x19')]=_[_0x8db2('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8db2('0x1b'))(new Redis(config[_0x8db2('0x19')]));require(_0x8db2('0x1c'))[_0x8db2('0x1d')](socket);function respondWithStatusCode(_0x227355,_0xfa285b){_0xfa285b=_0xfa285b||0xcc;return function(_0x2f177a){if(_0x2f177a){return _0x227355[_0x8db2('0x1e')](_0xfa285b);}return _0x227355[_0x8db2('0x1f')](_0xfa285b)[_0x8db2('0x20')]();};}function respondWithResult(_0x5489a9,_0x13b0f5){_0x13b0f5=_0x13b0f5||0xc8;return function(_0x24da1b){if(_0x24da1b){return _0x5489a9['status'](_0x13b0f5)[_0x8db2('0x21')](_0x24da1b);}};}function respondWithFilteredResult(_0x44957d,_0x21db8c){return function(_0x3fddc2){if(_0x3fddc2){var _0x2efd06=typeof _0x21db8c[_0x8db2('0x22')]==='undefined'&&typeof _0x21db8c['limit']===_0x8db2('0x23');var _0x104e33=_0x3fddc2[_0x8db2('0x24')];var _0x1b64e4=_0x2efd06?0x0:_0x21db8c['offset'];var _0x431d60=_0x2efd06?_0x3fddc2[_0x8db2('0x24')]:_0x21db8c[_0x8db2('0x22')]+_0x21db8c[_0x8db2('0x25')];var _0x3dbe8e;if(_0x431d60>=_0x104e33){_0x431d60=_0x104e33;_0x3dbe8e=0xc8;}else{_0x3dbe8e=0xce;}_0x44957d['status'](_0x3dbe8e);return _0x44957d[_0x8db2('0x26')](_0x8db2('0x27'),_0x1b64e4+'-'+_0x431d60+'/'+_0x104e33)[_0x8db2('0x21')](_0x3fddc2);}return null;};}function patchUpdates(_0x125be2){return function(_0x2260d8){try{jsonpatch[_0x8db2('0x28')](_0x2260d8,_0x125be2,!![]);}catch(_0x796ec1){return BPromise['reject'](_0x796ec1);}return _0x2260d8[_0x8db2('0x29')]();};}function saveUpdates(_0x4f6516,_0x5725f0){return function(_0x52a9ca){if(_0x52a9ca){return _0x52a9ca['update'](_0x4f6516)[_0x8db2('0x2a')](function(_0x29b5cd){return _0x29b5cd;});}return null;};}function removeEntity(_0x3be281,_0x2baed0){return function(_0x145328){if(_0x145328){return _0x145328[_0x8db2('0x2b')]()['then'](function(){var _0x3544ba=_0x145328[_0x8db2('0x2c')]({'plain':!![]});var _0x430dd5=_0x8db2('0x2d');return db['UserProfileResource'][_0x8db2('0x2b')]({'where':{'type':_0x430dd5,'resourceId':_0x3544ba['id']}})[_0x8db2('0x2a')](function(){return _0x145328;});})[_0x8db2('0x2a')](function(){_0x3be281[_0x8db2('0x1f')](0xcc)[_0x8db2('0x20')]();});}};}function handleEntityNotFound(_0x21bae5,_0xa54ea3){return function(_0x3124d5){if(!_0x3124d5){_0x21bae5[_0x8db2('0x1e')](0x194);}return _0x3124d5;};}function handleError(_0x493cab,_0x4718ec){_0x4718ec=_0x4718ec||0x1f4;return function(_0x50b28d){logger['error'](_0x50b28d[_0x8db2('0x2e')]);if(_0x50b28d[_0x8db2('0x2f')]){delete _0x50b28d[_0x8db2('0x2f')];}_0x493cab['status'](_0x4718ec)[_0x8db2('0x30')](_0x50b28d);};}exports['index']=function(_0x3f7aac,_0x2b653b){var _0x14bd12={},_0x4d9e26={},_0x56e9c1={'count':0x0,'rows':[]};var _0x35d337=_[_0x8db2('0x31')](db['VoicePrefix']['rawAttributes'],function(_0x173989){return{'name':_0x173989[_0x8db2('0x32')],'type':_0x173989[_0x8db2('0x33')][_0x8db2('0x34')]};});_0x4d9e26[_0x8db2('0x35')]=_[_0x8db2('0x31')](_0x35d337,_0x8db2('0x2f'));_0x4d9e26[_0x8db2('0x36')]=_[_0x8db2('0x37')](_0x3f7aac[_0x8db2('0x36')]);_0x4d9e26['filters']=_[_0x8db2('0x38')](_0x4d9e26[_0x8db2('0x35')],_0x4d9e26['query']);_0x14bd12[_0x8db2('0x39')]=_[_0x8db2('0x38')](_0x4d9e26['model'],qs['fields'](_0x3f7aac[_0x8db2('0x36')]['fields']));_0x14bd12[_0x8db2('0x39')]=_0x14bd12[_0x8db2('0x39')][_0x8db2('0x3a')]?_0x14bd12[_0x8db2('0x39')]:_0x4d9e26['model'];if(!_0x3f7aac[_0x8db2('0x36')]['hasOwnProperty'](_0x8db2('0x3b'))){_0x14bd12[_0x8db2('0x25')]=qs[_0x8db2('0x25')](_0x3f7aac[_0x8db2('0x36')]['limit']);_0x14bd12['offset']=qs[_0x8db2('0x22')](_0x3f7aac[_0x8db2('0x36')]['offset']);}_0x14bd12[_0x8db2('0x3c')]=qs[_0x8db2('0x3d')](_0x3f7aac[_0x8db2('0x36')]['sort']);_0x14bd12[_0x8db2('0x3e')]=qs[_0x8db2('0x3f')](_[_0x8db2('0x40')](_0x3f7aac[_0x8db2('0x36')],_0x4d9e26[_0x8db2('0x3f')]),_0x35d337);if(_0x3f7aac[_0x8db2('0x36')][_0x8db2('0x41')]){_0x14bd12[_0x8db2('0x3e')]=_[_0x8db2('0x42')](_0x14bd12[_0x8db2('0x3e')],{'$or':_[_0x8db2('0x31')](_0x35d337,function(_0x20bf0b){if(_0x20bf0b[_0x8db2('0x33')]!=='VIRTUAL'){var _0x3ee510={};_0x3ee510[_0x20bf0b[_0x8db2('0x2f')]]={'$like':'%'+_0x3f7aac['query']['filter']+'%'};return _0x3ee510;}})});}_0x14bd12=_[_0x8db2('0x42')]({},_0x14bd12,_0x3f7aac['options']);var _0x130eb9={'where':_0x14bd12[_0x8db2('0x3e')]};return db[_0x8db2('0x43')][_0x8db2('0x24')](_0x130eb9)[_0x8db2('0x2a')](function(_0x30d606){_0x56e9c1[_0x8db2('0x24')]=_0x30d606;if(_0x3f7aac['query'][_0x8db2('0x44')]){_0x14bd12[_0x8db2('0x45')]=[{'all':!![]}];}return db[_0x8db2('0x43')][_0x8db2('0x46')](_0x14bd12);})['then'](function(_0x424c27){_0x56e9c1[_0x8db2('0x47')]=_0x424c27;return _0x56e9c1;})[_0x8db2('0x2a')](respondWithFilteredResult(_0x2b653b,_0x14bd12))[_0x8db2('0x48')](handleError(_0x2b653b,null));};exports['show']=function(_0x12d62d,_0x4e0749){var _0x19bd06={'raw':![],'where':{'id':_0x12d62d[_0x8db2('0x49')]['id']}},_0x116b69={};_0x116b69['model']=_['keys'](db[_0x8db2('0x43')]['rawAttributes']);_0x116b69[_0x8db2('0x36')]=_[_0x8db2('0x37')](_0x12d62d[_0x8db2('0x36')]);_0x116b69[_0x8db2('0x3f')]=_[_0x8db2('0x38')](_0x116b69[_0x8db2('0x35')],_0x116b69[_0x8db2('0x36')]);_0x19bd06[_0x8db2('0x39')]=_[_0x8db2('0x38')](_0x116b69[_0x8db2('0x35')],qs[_0x8db2('0x4a')](_0x12d62d[_0x8db2('0x36')]['fields']));_0x19bd06[_0x8db2('0x39')]=_0x19bd06[_0x8db2('0x39')][_0x8db2('0x3a')]?_0x19bd06[_0x8db2('0x39')]:_0x116b69['model'];if(_0x12d62d['query'][_0x8db2('0x44')]){_0x19bd06[_0x8db2('0x45')]=[{'all':!![]}];}_0x19bd06=_[_0x8db2('0x42')]({},_0x19bd06,_0x12d62d['options']);return db['VoicePrefix']['find'](_0x19bd06)[_0x8db2('0x2a')](handleEntityNotFound(_0x4e0749,null))[_0x8db2('0x2a')](respondWithResult(_0x4e0749,null))[_0x8db2('0x48')](handleError(_0x4e0749,null));};exports[_0x8db2('0x2b')]=function(_0xaab731,_0x4195ef){return db[_0x8db2('0x43')]['find']({'where':{'id':_0xaab731['params']['id']}})[_0x8db2('0x2a')](handleEntityNotFound(_0x4195ef,null))[_0x8db2('0x2a')](removeEntity(_0x4195ef,null))[_0x8db2('0x48')](handleError(_0x4195ef,null));};exports[_0x8db2('0x4b')]=function(_0x3daed6,_0x2bf408){return db[_0x8db2('0x43')][_0x8db2('0x4b')]()[_0x8db2('0x2a')](respondWithResult(_0x2bf408,null))[_0x8db2('0x48')](handleError(_0x2bf408,null));};exports[_0x8db2('0x4c')]=function(_0x319273,_0x345c74){var _0x2d518a;return db[_0x8db2('0x4d')]['transaction'](function(_0x2ded23){return db[_0x8db2('0x43')]['create'](_0x319273[_0x8db2('0x4e')],{'transaction':_0x2ded23})[_0x8db2('0x2a')](function(_0x3af298){_0x2d518a=_0x3af298['get']({'plain':!![]});return db[_0x8db2('0x4f')][_0x8db2('0x50')]({'where':{'id':_0x2d518a[_0x8db2('0x51')]},'raw':!![]})[_0x8db2('0x2a')](function(_0x1167d5){return createVoicePrefixExtensions(_0x2d518a,_0x1167d5,_0x2ded23);});});})['then'](function(){var _0x467505=_0x319273[_0x8db2('0x52')][_0x8db2('0x2c')]({'plain':!![]});if(!_0x467505)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x467505[_0x8db2('0x53')]===_0x8db2('0x52')){var _0x33dddd=_0x2d518a;return db[_0x8db2('0x54')][_0x8db2('0x50')]({'where':{'name':_0x8db2('0x2d'),'userProfileId':_0x467505[_0x8db2('0x55')]},'raw':!![]})['then'](function(_0x39ff90){if(_0x39ff90&&_0x39ff90[_0x8db2('0x56')]===0x0){return db['UserProfileResource'][_0x8db2('0x4c')]({'name':_0x33dddd[_0x8db2('0x2f')],'resourceId':_0x33dddd['id'],'type':_0x39ff90['name'],'sectionId':_0x39ff90['id']},{})[_0x8db2('0x2a')](function(){return _0x2d518a;});}else{return _0x2d518a;}})[_0x8db2('0x48')](function(_0x63e8f7){logger[_0x8db2('0x57')](_0x8db2('0x58'),_0x63e8f7);throw _0x63e8f7;});}return _0x2d518a;})[_0x8db2('0x2a')](respondWithResult(_0x345c74,null))[_0x8db2('0x48')](handleError(_0x345c74,null));};function Extension(_0x33a600,_0x120ef2,_0x173a5e,_0x12fd12){this[_0x8db2('0x59')]=_0x8db2('0x5a');this[_0x8db2('0x5b')]=_0x33a600;this[_0x8db2('0x5c')]=_0x173a5e;this[_0x8db2('0x33')]='system';this[_0x8db2('0x5d')]=_0x8db2('0x5e');this[_0x8db2('0x5f')]=_0x120ef2;this[_0x8db2('0x60')]=_0x12fd12;}function createVoicePrefixExtensions(_0x349db0,_0x53b2dc,_0x3dd6b1){return new BPromise(function(_0x2c3087,_0x3ab670){var _0x1e1c0d=new Extension(formatPrefixName(_0x349db0[_0x8db2('0x61')]),0x1,_0x8db2('0x62'),_0x8db2('0x63'));_0x1e1c0d[_0x8db2('0x64')]=_0x349db0['id'];return db[_0x8db2('0x4f')][_0x8db2('0x4c')](_0x1e1c0d,{'transaction':_0x3dd6b1})[_0x8db2('0x2a')](function(_0xfe6bac){var _0x170a72=_0xfe6bac[_0x8db2('0x2c')]({'plain':!![]});var _0xed9d36=_[_0x8db2('0x31')](addVoicePrefixExtensions(_0x349db0,_0x53b2dc),function(_0x1d7862){_0x1d7862[_0x8db2('0x51')]=_0x170a72['id'];_0x1d7862['VoicePrefixId']=_0x349db0['id'];return _0x1d7862;});return db[_0x8db2('0x4f')]['bulkCreate'](_0xed9d36,{'transaction':_0x3dd6b1})[_0x8db2('0x2a')](function(_0x570c53){if(!_0x570c53){return _0x3ab670(_0x8db2('0x65'));}else{return _0x2c3087(_0x570c53);}})[_0x8db2('0x48')](function(_0xe4fd6a){return _0x3ab670(_0xe4fd6a);});});;});};function addVoicePrefixExtensions(_0x1e2ccd,_0x1e812e){var _0x59a32e=[];var _0x50c5fb=formatPrefixName(_0x1e2ccd[_0x8db2('0x61')]);_0x59a32e[_0x8db2('0x66')](new Extension(_0x50c5fb,0x2,_0x8db2('0x67'),_0x8db2('0x68')+_0x1e2ccd[_0x8db2('0x2f')]));if(_0x1e2ccd[_0x8db2('0x69')]){_0x59a32e[_0x8db2('0x66')](new Extension(_0x50c5fb,0x3,_0x8db2('0x67'),'PREFIX-CALLERIDALL='+_0x1e2ccd[_0x8db2('0x69')]));}else{_0x59a32e[_0x8db2('0x66')](new Extension(_0x50c5fb,0x3,_0x8db2('0x62'),_0x8db2('0x6a')));}_0x59a32e[_0x8db2('0x66')](new Extension(_0x50c5fb,0x4,_0x8db2('0x6b'),_0x1e812e[_0x8db2('0x59')]+','+_0x8db2('0x6c')+(0x8+_0x1e2ccd['name']['length'])+'}'+','+0x1));return _0x59a32e;}function formatPrefixName(_0x358009){var _0x2f8beb='_';for(var _0x1d2dfc=0x0;_0x1d2dfc<_0x358009[_0x8db2('0x3a')];_0x1d2dfc++){if(_0x358009[_0x8db2('0x6d')](_0x1d2dfc)=='-'){_0x2f8beb+=_0x358009['charAt'](_0x1d2dfc);}else{_0x2f8beb+='['+_0x358009['charAt'](_0x1d2dfc)+']';}}_0x2f8beb+='.';return _0x2f8beb;}exports[_0x8db2('0x6e')]=function(_0x364807,_0x54f0d4,_0xa698bd){var _0x2be647=_0x364807[_0x8db2('0x4e')];_0x2be647['prefix']=_0x8db2('0x6f')+_0x2be647[_0x8db2('0x2f')]+'-';return db[_0x8db2('0x4d')]['transaction'](function(_0x3ff023){return db[_0x8db2('0x43')][_0x8db2('0x6e')](_0x2be647,{'where':{'id':_0x2be647['id']},'transaction':_0x3ff023})[_0x8db2('0x2a')](function(){return db[_0x8db2('0x4f')]['destroy']({'where':{'VoicePrefixId':_0x2be647['id']},'transaction':_0x3ff023})[_0x8db2('0x2a')](function(){return db[_0x8db2('0x4f')][_0x8db2('0x50')]({'where':{'id':_0x2be647['VoiceExtensionId']},'raw':!![]})['then'](function(_0x2cdf3c){return createVoicePrefixExtensions(_0x2be647,_0x2cdf3c,_0x3ff023);});});});})[_0x8db2('0x2a')](function(){return db['VoicePrefix'][_0x8db2('0x70')](_0x2be647['id']);})[_0x8db2('0x2a')](respondWithResult(_0x54f0d4,null))[_0x8db2('0x48')](handleError(_0x54f0d4,null));};exports[_0x8db2('0x71')]=function(_0xbf1fce,_0x16848b,_0x395ebb){return db[_0x8db2('0x43')][_0x8db2('0x50')]({'where':{'id':_0xbf1fce[_0x8db2('0x49')]['id']}})[_0x8db2('0x2a')](handleEntityNotFound(_0x16848b,null))[_0x8db2('0x2a')](function(_0x24a52d){if(_0x24a52d){return _0x24a52d['addAgents'](_0xbf1fce[_0x8db2('0x4e')]['ids'],_[_0x8db2('0x72')](_0xbf1fce[_0x8db2('0x4e')],['ids','id'])||{})[_0x8db2('0x73')](function(_0x2fa89d){for(var _0x5cdf53=0x0;_0x5cdf53<_0xbf1fce[_0x8db2('0x4e')][_0x8db2('0x74')][_0x8db2('0x3a')];_0x5cdf53+=0x1){socket[_0x8db2('0x75')](_0x8db2('0x76'),{'UserId':Number(_0xbf1fce[_0x8db2('0x4e')][_0x8db2('0x74')][_0x5cdf53]),'VoicePrefixId':Number(_0xbf1fce[_0x8db2('0x49')]['id'])});}return _0x2fa89d;});}})[_0x8db2('0x2a')](respondWithResult(_0x16848b,null))['catch'](handleError(_0x16848b,null));};exports['removeAgents']=function(_0x198c3b,_0x508f4a,_0xf8afa5){return db[_0x8db2('0x43')][_0x8db2('0x50')]({'where':{'id':_0x198c3b['params']['id']}})[_0x8db2('0x2a')](handleEntityNotFound(_0x508f4a,null))[_0x8db2('0x2a')](function(_0x3e37e7){if(_0x3e37e7){return _0x3e37e7['removeAgents'](_0x198c3b[_0x8db2('0x36')][_0x8db2('0x74')])[_0x8db2('0x2a')](function(){if(_[_0x8db2('0x77')](_0x198c3b['query'][_0x8db2('0x74')])){for(var _0x5f61b8=0x0;_0x5f61b8<_0x198c3b[_0x8db2('0x36')][_0x8db2('0x74')][_0x8db2('0x3a')];_0x5f61b8+=0x1){socket[_0x8db2('0x75')](_0x8db2('0x78'),{'UserId':Number(_0x198c3b[_0x8db2('0x36')][_0x8db2('0x74')][_0x5f61b8]),'VoicePrefixId':Number(_0x198c3b[_0x8db2('0x49')]['id'])});}}else{socket[_0x8db2('0x75')]('userVoicePrefix:remove',{'UserId':Number(_0x198c3b[_0x8db2('0x36')][_0x8db2('0x74')]),'VoicePrefixId':Number(_0x198c3b[_0x8db2('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x508f4a,null))['catch'](handleError(_0x508f4a,null));};exports['getAgents']=function(_0xa09b1d,_0xdba223,_0x3191c8){var _0x454377={};var _0x2ad024={};var _0x313918;var _0x339d09;return db[_0x8db2('0x43')][_0x8db2('0x79')]({'where':{'id':_0xa09b1d[_0x8db2('0x49')]['id']}})[_0x8db2('0x2a')](handleEntityNotFound(_0xdba223,null))['then'](function(_0x360a06){if(_0x360a06){_0x313918=_0x360a06;_0x2ad024[_0x8db2('0x35')]=_[_0x8db2('0x37')](db[_0x8db2('0x7a')]['rawAttributes']);_0x2ad024['query']=_[_0x8db2('0x37')](_0xa09b1d[_0x8db2('0x36')]);_0x2ad024['filters']=_[_0x8db2('0x38')](_0x2ad024[_0x8db2('0x35')],_0x2ad024[_0x8db2('0x36')]);_0x454377['attributes']=_['intersection'](_0x2ad024['model'],qs[_0x8db2('0x4a')](_0xa09b1d[_0x8db2('0x36')][_0x8db2('0x4a')]));_0x454377[_0x8db2('0x39')]=_0x454377[_0x8db2('0x39')]['length']?_0x454377[_0x8db2('0x39')]:_0x2ad024['model'];_0x454377[_0x8db2('0x3c')]=qs[_0x8db2('0x3d')](_0xa09b1d[_0x8db2('0x36')][_0x8db2('0x3d')]);_0x454377[_0x8db2('0x3e')]=qs['filters'](_['pick'](_0xa09b1d[_0x8db2('0x36')],_0x2ad024['filters']));if(_0xa09b1d[_0x8db2('0x36')][_0x8db2('0x41')]){_0x454377[_0x8db2('0x3e')]=_[_0x8db2('0x42')](_0x454377[_0x8db2('0x3e')],{'$or':_[_0x8db2('0x31')](_0x454377['attributes'],function(_0x19f9a0){var _0x222ea2={};_0x222ea2[_0x19f9a0]={'$like':'%'+_0xa09b1d[_0x8db2('0x36')]['filter']+'%'};return _0x222ea2;})});}_0x454377=_[_0x8db2('0x42')]({},_0x454377,_0xa09b1d[_0x8db2('0x7b')]);return _0x313918['getAgents'](_0x454377);}})[_0x8db2('0x2a')](function(_0x7cb97d){if(_0x7cb97d){_0x339d09=_0x7cb97d[_0x8db2('0x3a')];if(!_0xa09b1d[_0x8db2('0x36')][_0x8db2('0x7c')](_0x8db2('0x3b'))){_0x454377[_0x8db2('0x25')]=qs[_0x8db2('0x25')](_0xa09b1d[_0x8db2('0x36')]['limit']);_0x454377[_0x8db2('0x22')]=qs[_0x8db2('0x22')](_0xa09b1d[_0x8db2('0x36')][_0x8db2('0x22')]);}return _0x313918[_0x8db2('0x7d')](_0x454377);}})[_0x8db2('0x2a')](function(_0x16d1c5){if(_0x16d1c5){return _0x16d1c5?{'count':_0x339d09,'rows':_0x16d1c5}:null;}})[_0x8db2('0x2a')](respondWithResult(_0xdba223,null))[_0x8db2('0x48')](handleError(_0xdba223,null));};exports[_0x8db2('0x7e')]=function(_0x5e6fc4,_0x3e79cc,_0x7e4bf){var _0x339ffe={};var _0x1587e8={};var _0x5d371b;var _0x4589c7;return db[_0x8db2('0x43')][_0x8db2('0x79')]({'where':{'id':_0x5e6fc4['params']['id']}})['then'](handleEntityNotFound(_0x3e79cc,null))[_0x8db2('0x2a')](function(_0x6e5a58){if(_0x6e5a58){_0x5d371b=_0x6e5a58;_0x1587e8[_0x8db2('0x35')]=_[_0x8db2('0x37')](db['Team'][_0x8db2('0x7f')]);_0x1587e8[_0x8db2('0x36')]=_[_0x8db2('0x37')](_0x5e6fc4[_0x8db2('0x36')]);_0x1587e8['filters']=_[_0x8db2('0x38')](_0x1587e8[_0x8db2('0x35')],_0x1587e8[_0x8db2('0x36')]);_0x339ffe['attributes']=_['intersection'](_0x1587e8['model'],qs[_0x8db2('0x4a')](_0x5e6fc4[_0x8db2('0x36')][_0x8db2('0x4a')]));_0x339ffe[_0x8db2('0x39')]=_0x339ffe['attributes']['length']?_0x339ffe[_0x8db2('0x39')]:_0x1587e8[_0x8db2('0x35')];_0x339ffe[_0x8db2('0x3c')]=qs[_0x8db2('0x3d')](_0x5e6fc4[_0x8db2('0x36')][_0x8db2('0x3d')]);_0x339ffe['where']=qs[_0x8db2('0x3f')](_['pick'](_0x5e6fc4[_0x8db2('0x36')],_0x1587e8[_0x8db2('0x3f')]));if(_0x5e6fc4[_0x8db2('0x36')][_0x8db2('0x41')]){_0x339ffe[_0x8db2('0x3e')]=_['merge'](_0x339ffe[_0x8db2('0x3e')],{'$or':_[_0x8db2('0x31')](_0x339ffe['attributes'],function(_0x28beec){var _0x1334ea={};_0x1334ea[_0x28beec]={'$like':'%'+_0x5e6fc4[_0x8db2('0x36')][_0x8db2('0x41')]+'%'};return _0x1334ea;})});}_0x339ffe=_['merge']({},_0x339ffe,_0x5e6fc4[_0x8db2('0x7b')]);return _0x5d371b['getTeams'](_0x339ffe);}})['then'](function(_0xaa90b9){if(_0xaa90b9){_0x4589c7=_0xaa90b9[_0x8db2('0x3a')];if(!_0x5e6fc4[_0x8db2('0x36')][_0x8db2('0x7c')](_0x8db2('0x3b'))){_0x339ffe[_0x8db2('0x25')]=qs[_0x8db2('0x25')](_0x5e6fc4['query'][_0x8db2('0x25')]);_0x339ffe['offset']=qs['offset'](_0x5e6fc4[_0x8db2('0x36')]['offset']);}return _0x5d371b['getTeams'](_0x339ffe);}})[_0x8db2('0x2a')](function(_0x1642a7){if(_0x1642a7){return _0x1642a7?{'count':_0x4589c7,'rows':_0x1642a7}:null;}})[_0x8db2('0x2a')](respondWithResult(_0x3e79cc,null))['catch'](handleError(_0x3e79cc,null));};exports[_0x8db2('0x80')]=function(_0xb2ab8e,_0x30d410,_0x555ed0){var _0x27a916=_0xb2ab8e[_0x8db2('0x4e')][_0x8db2('0x74')];var _0x7ff636;return db[_0x8db2('0x81')][_0x8db2('0x46')]({'where':{'id':_0x27a916},'attributes':['id'],'include':[{'model':db[_0x8db2('0x7a')],'as':_0x8db2('0x82'),'attributes':['id','name',_0x8db2('0x83'),_0x8db2('0x84'),_0x8db2('0x85')],'raw':!![]}]})[_0x8db2('0x2a')](function(_0x20d69b){if(_0x20d69b){_0x7ff636=_0x20d69b;var _0x36199d=_[_0x8db2('0x86')](_0x20d69b,function(_0x2910c8){var _0x3a53e2=_0x2910c8[_0x8db2('0x2c')]({'plain':!![]});return _0x3a53e2[_0x8db2('0x82')];});return db['VoicePrefix'][_0x8db2('0x50')]({'where':{'id':_0xb2ab8e[_0x8db2('0x49')]['id']}})[_0x8db2('0x2a')](function(_0x58063b){return db[_0x8db2('0x4d')][_0x8db2('0x87')](function(_0x3c105f){return _0x58063b['addTeams'](_0x27a916,{'transaction':_0x3c105f})['then'](function(){return BPromise[_0x8db2('0x88')](_0x7ff636,function(_0x17d3ee){return db[_0x8db2('0x89')][_0x8db2('0x8a')]({'TeamId':_0x17d3ee['id'],'VoicePrefixId':_0xb2ab8e[_0x8db2('0x49')]['id']},{'transaction':_0x3c105f});});})[_0x8db2('0x2a')](function(){return BPromise[_0x8db2('0x88')](_0x36199d,function(_0x1f1aa5){return db[_0x8db2('0x8b')][_0x8db2('0x8c')]({'where':{'UserId':_0x1f1aa5['id'],'VoicePrefixId':_0xb2ab8e['params']['id']},'transaction':_0x3c105f});});})[_0x8db2('0x2a')](function(){_0x36199d[_0x8db2('0x8d')](function(_0x5b8adc){socket[_0x8db2('0x75')](_0x8db2('0x76'),{'UserId':_0x5b8adc['id'],'VoicePrefixId':_0x58063b['id']});});});});});}})[_0x8db2('0x2a')](respondWithStatusCode(_0x30d410,null))[_0x8db2('0x48')](handleError(_0x30d410,null));};exports[_0x8db2('0x8e')]=function(_0x2e4fb3,_0x8f84e4,_0x372efd){return db[_0x8db2('0x81')][_0x8db2('0x46')]({'where':{'id':_0x2e4fb3[_0x8db2('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0x8db2('0x7a')],'as':_0x8db2('0x82'),'attributes':['id'],'raw':!![]}]})[_0x8db2('0x2a')](handleEntityNotFound(_0x8f84e4,null))[_0x8db2('0x2a')](function(_0x1d27e3){var _0x296981=_['map'](_0x1d27e3,'id');var _0x137788=[];var _0x19bc4d=[];var _0x339dbf=squel[_0x8db2('0x8f')]();_0x339dbf[_0x8db2('0x90')](_0x8db2('0x91'))[_0x8db2('0x92')](_0x8db2('0x93'),'tq')[_0x8db2('0x94')](_0x8db2('0x95'),'ut',_0x8db2('0x96'))['where']('VoicePrefixId\x20=\x20?',_0x2e4fb3[_0x8db2('0x49')]['id']);for(var _0x56f59b=0x0;_0x56f59b<_0x1d27e3[_0x8db2('0x3a')];_0x56f59b+=0x1){let _0xccdab2=_0x1d27e3[_0x56f59b];for(var _0x2428f1=0x0;_0x2428f1<_0xccdab2['Agents'][_0x8db2('0x3a')];_0x2428f1+=0x1){let _0x28cfee=_0xccdab2[_0x8db2('0x82')][_0x2428f1];var _0x3e154a=_0x339dbf['clone']();_0x3e154a[_0x8db2('0x3e')](_0x8db2('0x97'),_0x28cfee['id']);_0x19bc4d[_0x8db2('0x66')](db['sequelize'][_0x8db2('0x36')](_0x3e154a[_0x8db2('0x98')](),{'type':db[_0x8db2('0x4d')]['QueryTypes'][_0x8db2('0x99')]})[_0x8db2('0x2a')](function(_0x41957f){if(_0x41957f['length']===0x1){return _0x28cfee['id'];}else{var _0x18ac5c=_[_0x8db2('0x9a')](_['map'](_0x41957f,_0x8db2('0x9b')),function(_0x231360){return _['includes'](_0x296981,_0x231360);});if(_0x18ac5c){return _0x28cfee['id'];}}}));}}return BPromise[_0x8db2('0x9c')](_0x19bc4d)[_0x8db2('0x2a')](function(_0x3d2729){_0x137788=_(_0x137788)['union'](_0x3d2729)['compact']()[_0x8db2('0x9d')]();return db['VoicePrefix']['find']({'where':{'id':_0x2e4fb3[_0x8db2('0x49')]['id']}})[_0x8db2('0x2a')](function(_0x37fda2){return db[_0x8db2('0x4d')][_0x8db2('0x87')](function(_0x3695cd){return _0x37fda2['removeTeams'](_0x2e4fb3['query'][_0x8db2('0x74')],{'transaction':_0x3695cd})[_0x8db2('0x2a')](function(){if(!_[_0x8db2('0x9e')](_0x137788)){return _0x37fda2[_0x8db2('0x9f')](_0x137788,{'transaction':_0x3695cd});}})['then'](function(){_0x137788[_0x8db2('0x8d')](function(_0x51d15e){socket[_0x8db2('0x75')]('userVoicePrefix:remove',{'UserId':_0x51d15e,'VoicePrefixId':_0x37fda2['id']});});});});});});})[_0x8db2('0x2a')](respondWithStatusCode(_0x8f84e4,null))[_0x8db2('0x48')](handleError(_0x8f84e4,null));};
\ No newline at end of file
+var _0xdc9b=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','sendStatus','status','end','undefined','limit','count','offset','json','reject','update','then','VoicePrefixes','UserProfileResource','destroy','error','stack','name','send','index','map','VoicePrefix','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','length','find','describe','transaction','create','VoiceExtension','VoiceExtensionId','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','app','system','description','Voice\x20Prefix\x20Extension','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','push','Set','CDR(prefix)=','callerIdAll','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','sequelize','addAgents','body','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','nolimit','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','lodash','crypto'];(function(_0x17dae7,_0x3efb5a){var _0x40ce05=function(_0x58c225){while(--_0x58c225){_0x17dae7['push'](_0x17dae7['shift']());}};_0x40ce05(++_0x3efb5a);}(_0xdc9b,0x70));var _0xbdc9=function(_0x3f4e38,_0x256ded){_0x3f4e38=_0x3f4e38-0x0;var _0x2d2249=_0xdc9b[_0x3f4e38];return _0x2d2249;};'use strict';var emlformat=require(_0xbdc9('0x0'));var rimraf=require(_0xbdc9('0x1'));var zipdir=require(_0xbdc9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbdc9('0x3'));var moment=require(_0xbdc9('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbdc9('0x5'));var path=require(_0xbdc9('0x6'));var sox=require('sox');var csv=require(_0xbdc9('0x7'));var ejs=require(_0xbdc9('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbdc9('0x9'));var squel=require('squel');var crypto=require(_0xbdc9('0xa'));var jsforce=require(_0xbdc9('0xb'));var deskjs=require(_0xbdc9('0xc'));var toCsv=require(_0xbdc9('0x7'));var querystring=require(_0xbdc9('0xd'));var Papa=require(_0xbdc9('0xe'));var Redis=require(_0xbdc9('0xf'));var authService=require(_0xbdc9('0x10'));var qs=require(_0xbdc9('0x11'));var as=require(_0xbdc9('0x12'));var hardwareService=require(_0xbdc9('0x13'));var logger=require(_0xbdc9('0x14'))(_0xbdc9('0x15'));var utils=require(_0xbdc9('0x16'));var config=require(_0xbdc9('0x17'));var licenseUtil=require(_0xbdc9('0x18'));var db=require(_0xbdc9('0x19'))['db'];config[_0xbdc9('0x1a')]=_[_0xbdc9('0x1b')](config[_0xbdc9('0x1a')],{'host':_0xbdc9('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbdc9('0x1a')]));require('./voicePrefix.socket')['register'](socket);function respondWithStatusCode(_0x180f38,_0x29356f){_0x29356f=_0x29356f||0xcc;return function(_0x56f1f2){if(_0x56f1f2){return _0x180f38[_0xbdc9('0x1d')](_0x29356f);}return _0x180f38[_0xbdc9('0x1e')](_0x29356f)[_0xbdc9('0x1f')]();};}function respondWithResult(_0x18bd36,_0x46d44d){_0x46d44d=_0x46d44d||0xc8;return function(_0x36e256){if(_0x36e256){return _0x18bd36['status'](_0x46d44d)['json'](_0x36e256);}};}function respondWithFilteredResult(_0x1756e6,_0x11e0c1){return function(_0x32b094){if(_0x32b094){var _0x54add5=typeof _0x11e0c1['offset']===_0xbdc9('0x20')&&typeof _0x11e0c1[_0xbdc9('0x21')]==='undefined';var _0x7d3d9f=_0x32b094[_0xbdc9('0x22')];var _0x1f112d=_0x54add5?0x0:_0x11e0c1['offset'];var _0x15540e=_0x54add5?_0x32b094[_0xbdc9('0x22')]:_0x11e0c1[_0xbdc9('0x23')]+_0x11e0c1[_0xbdc9('0x21')];var _0x35671a;if(_0x15540e>=_0x7d3d9f){_0x15540e=_0x7d3d9f;_0x35671a=0xc8;}else{_0x35671a=0xce;}_0x1756e6[_0xbdc9('0x1e')](_0x35671a);return _0x1756e6['set']('Content-Range',_0x1f112d+'-'+_0x15540e+'/'+_0x7d3d9f)[_0xbdc9('0x24')](_0x32b094);}return null;};}function patchUpdates(_0x26f72){return function(_0x25e634){try{jsonpatch['apply'](_0x25e634,_0x26f72,!![]);}catch(_0x2604fb){return BPromise[_0xbdc9('0x25')](_0x2604fb);}return _0x25e634['save']();};}function saveUpdates(_0x715fa1,_0x18ca88){return function(_0x38d868){if(_0x38d868){return _0x38d868[_0xbdc9('0x26')](_0x715fa1)[_0xbdc9('0x27')](function(_0x27c6c7){return _0x27c6c7;});}return null;};}function removeEntity(_0xdaffa9,_0x41f103){return function(_0x1f085f){if(_0x1f085f){return _0x1f085f['destroy']()[_0xbdc9('0x27')](function(){var _0x1a1324=_0x1f085f['get']({'plain':!![]});var _0x23ea10=_0xbdc9('0x28');return db[_0xbdc9('0x29')][_0xbdc9('0x2a')]({'where':{'type':_0x23ea10,'resourceId':_0x1a1324['id']}})[_0xbdc9('0x27')](function(){return _0x1f085f;});})[_0xbdc9('0x27')](function(){_0xdaffa9['status'](0xcc)[_0xbdc9('0x1f')]();});}};}function handleEntityNotFound(_0x36b0dd,_0x1cb43b){return function(_0x5338ea){if(!_0x5338ea){_0x36b0dd['sendStatus'](0x194);}return _0x5338ea;};}function handleError(_0x47cda2,_0x214d74){_0x214d74=_0x214d74||0x1f4;return function(_0x2ce975){logger[_0xbdc9('0x2b')](_0x2ce975[_0xbdc9('0x2c')]);if(_0x2ce975[_0xbdc9('0x2d')]){delete _0x2ce975[_0xbdc9('0x2d')];}_0x47cda2['status'](_0x214d74)[_0xbdc9('0x2e')](_0x2ce975);};}exports[_0xbdc9('0x2f')]=function(_0x10eee2,_0x1a92a5){var _0x5681f8={},_0x3b8954={},_0x282341={'count':0x0,'rows':[]};var _0x381cd3=_[_0xbdc9('0x30')](db[_0xbdc9('0x31')]['rawAttributes'],function(_0x202844){return{'name':_0x202844['fieldName'],'type':_0x202844[_0xbdc9('0x32')][_0xbdc9('0x33')]};});_0x3b8954[_0xbdc9('0x34')]=_[_0xbdc9('0x30')](_0x381cd3,_0xbdc9('0x2d'));_0x3b8954[_0xbdc9('0x35')]=_[_0xbdc9('0x36')](_0x10eee2[_0xbdc9('0x35')]);_0x3b8954[_0xbdc9('0x37')]=_['intersection'](_0x3b8954[_0xbdc9('0x34')],_0x3b8954[_0xbdc9('0x35')]);_0x5681f8['attributes']=_[_0xbdc9('0x38')](_0x3b8954['model'],qs['fields'](_0x10eee2['query'][_0xbdc9('0x39')]));_0x5681f8['attributes']=_0x5681f8[_0xbdc9('0x3a')]['length']?_0x5681f8[_0xbdc9('0x3a')]:_0x3b8954[_0xbdc9('0x34')];if(!_0x10eee2[_0xbdc9('0x35')][_0xbdc9('0x3b')]('nolimit')){_0x5681f8[_0xbdc9('0x21')]=qs['limit'](_0x10eee2[_0xbdc9('0x35')][_0xbdc9('0x21')]);_0x5681f8['offset']=qs[_0xbdc9('0x23')](_0x10eee2['query'][_0xbdc9('0x23')]);}_0x5681f8[_0xbdc9('0x3c')]=qs[_0xbdc9('0x3d')](_0x10eee2[_0xbdc9('0x35')][_0xbdc9('0x3d')]);_0x5681f8[_0xbdc9('0x3e')]=qs['filters'](_['pick'](_0x10eee2[_0xbdc9('0x35')],_0x3b8954['filters']),_0x381cd3);if(_0x10eee2['query'][_0xbdc9('0x3f')]){_0x5681f8[_0xbdc9('0x3e')]=_[_0xbdc9('0x40')](_0x5681f8[_0xbdc9('0x3e')],{'$or':_[_0xbdc9('0x30')](_0x381cd3,function(_0x3c9c23){if(_0x3c9c23['type']!==_0xbdc9('0x41')){var _0x441346={};_0x441346[_0x3c9c23[_0xbdc9('0x2d')]]={'$like':'%'+_0x10eee2[_0xbdc9('0x35')][_0xbdc9('0x3f')]+'%'};return _0x441346;}})});}_0x5681f8=_[_0xbdc9('0x40')]({},_0x5681f8,_0x10eee2[_0xbdc9('0x42')]);var _0x577858={'where':_0x5681f8[_0xbdc9('0x3e')]};return db[_0xbdc9('0x31')]['count'](_0x577858)['then'](function(_0x537138){_0x282341[_0xbdc9('0x22')]=_0x537138;if(_0x10eee2[_0xbdc9('0x35')][_0xbdc9('0x43')]){_0x5681f8['include']=[{'all':!![]}];}return db[_0xbdc9('0x31')][_0xbdc9('0x44')](_0x5681f8);})[_0xbdc9('0x27')](function(_0x54ceb8){_0x282341[_0xbdc9('0x45')]=_0x54ceb8;return _0x282341;})[_0xbdc9('0x27')](respondWithFilteredResult(_0x1a92a5,_0x5681f8))[_0xbdc9('0x46')](handleError(_0x1a92a5,null));};exports[_0xbdc9('0x47')]=function(_0x20068a,_0x51b387){var _0x467b7c={'raw':![],'where':{'id':_0x20068a[_0xbdc9('0x48')]['id']}},_0xa62040={};_0xa62040[_0xbdc9('0x34')]=_[_0xbdc9('0x36')](db[_0xbdc9('0x31')][_0xbdc9('0x49')]);_0xa62040['query']=_[_0xbdc9('0x36')](_0x20068a[_0xbdc9('0x35')]);_0xa62040['filters']=_[_0xbdc9('0x38')](_0xa62040[_0xbdc9('0x34')],_0xa62040[_0xbdc9('0x35')]);_0x467b7c[_0xbdc9('0x3a')]=_[_0xbdc9('0x38')](_0xa62040[_0xbdc9('0x34')],qs[_0xbdc9('0x39')](_0x20068a[_0xbdc9('0x35')][_0xbdc9('0x39')]));_0x467b7c[_0xbdc9('0x3a')]=_0x467b7c['attributes'][_0xbdc9('0x4a')]?_0x467b7c[_0xbdc9('0x3a')]:_0xa62040[_0xbdc9('0x34')];if(_0x20068a['query'][_0xbdc9('0x43')]){_0x467b7c['include']=[{'all':!![]}];}_0x467b7c=_['merge']({},_0x467b7c,_0x20068a[_0xbdc9('0x42')]);return db[_0xbdc9('0x31')][_0xbdc9('0x4b')](_0x467b7c)[_0xbdc9('0x27')](handleEntityNotFound(_0x51b387,null))['then'](respondWithResult(_0x51b387,null))[_0xbdc9('0x46')](handleError(_0x51b387,null));};exports[_0xbdc9('0x2a')]=function(_0x40100e,_0x5dad83){return db['VoicePrefix'][_0xbdc9('0x4b')]({'where':{'id':_0x40100e[_0xbdc9('0x48')]['id']}})[_0xbdc9('0x27')](handleEntityNotFound(_0x5dad83,null))['then'](removeEntity(_0x5dad83,null))[_0xbdc9('0x46')](handleError(_0x5dad83,null));};exports[_0xbdc9('0x4c')]=function(_0x1a2d80,_0x39d5aa){return db[_0xbdc9('0x31')][_0xbdc9('0x4c')]()[_0xbdc9('0x27')](respondWithResult(_0x39d5aa,null))[_0xbdc9('0x46')](handleError(_0x39d5aa,null));};exports['create']=function(_0x54f4c0,_0x49d66f){var _0x38931b;return db['sequelize'][_0xbdc9('0x4d')](function(_0x3aa21d){return db[_0xbdc9('0x31')][_0xbdc9('0x4e')](_0x54f4c0['body'],{'transaction':_0x3aa21d})[_0xbdc9('0x27')](function(_0x370dd4){_0x38931b=_0x370dd4['get']({'plain':!![]});return db[_0xbdc9('0x4f')][_0xbdc9('0x4b')]({'where':{'id':_0x38931b[_0xbdc9('0x50')]},'raw':!![]})[_0xbdc9('0x27')](function(_0x5887f4){return createVoicePrefixExtensions(_0x38931b,_0x5887f4,_0x3aa21d);});});})['then'](function(){var _0x1f6075=_0x54f4c0[_0xbdc9('0x51')][_0xbdc9('0x52')]({'plain':!![]});if(!_0x1f6075)throw new Error(_0xbdc9('0x53'));if(_0x1f6075[_0xbdc9('0x54')]===_0xbdc9('0x51')){var _0x52772c=_0x38931b;return db['UserProfileSection'][_0xbdc9('0x4b')]({'where':{'name':_0xbdc9('0x28'),'userProfileId':_0x1f6075[_0xbdc9('0x55')]},'raw':!![]})[_0xbdc9('0x27')](function(_0x44aa9a){if(_0x44aa9a&&_0x44aa9a[_0xbdc9('0x56')]===0x0){return db[_0xbdc9('0x29')]['create']({'name':_0x52772c['name'],'resourceId':_0x52772c['id'],'type':_0x44aa9a[_0xbdc9('0x2d')],'sectionId':_0x44aa9a['id']},{})[_0xbdc9('0x27')](function(){return _0x38931b;});}else{return _0x38931b;}})[_0xbdc9('0x46')](function(_0x3497eb){logger['error'](_0xbdc9('0x57'),_0x3497eb);throw _0x3497eb;});}return _0x38931b;})['then'](respondWithResult(_0x49d66f,null))['catch'](handleError(_0x49d66f,null));};function Extension(_0x293b86,_0x3ca18d,_0x34221d,_0x4770d9){this[_0xbdc9('0x58')]=_0xbdc9('0x59');this['exten']=_0x293b86;this[_0xbdc9('0x5a')]=_0x34221d;this[_0xbdc9('0x32')]=_0xbdc9('0x5b');this[_0xbdc9('0x5c')]=_0xbdc9('0x5d');this['priority']=_0x3ca18d;this[_0xbdc9('0x5e')]=_0x4770d9;}function createVoicePrefixExtensions(_0x513399,_0x158a95,_0x8969c1){return new BPromise(function(_0x5226bc,_0x57281a){var _0x3188f6=new Extension(formatPrefixName(_0x513399[_0xbdc9('0x5f')]),0x1,_0xbdc9('0x60'),_0xbdc9('0x61'));_0x3188f6[_0xbdc9('0x62')]=_0x513399['id'];return db[_0xbdc9('0x4f')]['create'](_0x3188f6,{'transaction':_0x8969c1})[_0xbdc9('0x27')](function(_0x4db008){var _0x4c3e0d=_0x4db008[_0xbdc9('0x52')]({'plain':!![]});var _0x142935=_[_0xbdc9('0x30')](addVoicePrefixExtensions(_0x513399,_0x158a95),function(_0x31a96f){_0x31a96f[_0xbdc9('0x50')]=_0x4c3e0d['id'];_0x31a96f[_0xbdc9('0x62')]=_0x513399['id'];return _0x31a96f;});return db[_0xbdc9('0x4f')]['bulkCreate'](_0x142935,{'transaction':_0x8969c1})[_0xbdc9('0x27')](function(_0x4f08f0){if(!_0x4f08f0){return _0x57281a('Extensions\x20creation\x20failed');}else{return _0x5226bc(_0x4f08f0);}})[_0xbdc9('0x46')](function(_0x4e6a32){return _0x57281a(_0x4e6a32);});});;});};function addVoicePrefixExtensions(_0x4e27b3,_0x15de05){var _0x253957=[];var _0x132e80=formatPrefixName(_0x4e27b3[_0xbdc9('0x5f')]);_0x253957[_0xbdc9('0x63')](new Extension(_0x132e80,0x2,_0xbdc9('0x64'),_0xbdc9('0x65')+_0x4e27b3[_0xbdc9('0x2d')]));if(_0x4e27b3[_0xbdc9('0x66')]){_0x253957['push'](new Extension(_0x132e80,0x3,'Set','PREFIX-CALLERIDALL='+_0x4e27b3['callerIdAll']));}else{_0x253957[_0xbdc9('0x63')](new Extension(_0x132e80,0x3,'NoOp',_0xbdc9('0x67')));}_0x253957[_0xbdc9('0x63')](new Extension(_0x132e80,0x4,_0xbdc9('0x68'),_0x15de05[_0xbdc9('0x58')]+','+_0xbdc9('0x69')+(0x8+_0x4e27b3[_0xbdc9('0x2d')][_0xbdc9('0x4a')])+'}'+','+0x1));return _0x253957;}function formatPrefixName(_0x5aee15){var _0x490552='_';for(var _0x2846ff=0x0;_0x2846ff<_0x5aee15['length'];_0x2846ff++){if(_0x5aee15[_0xbdc9('0x6a')](_0x2846ff)=='-'){_0x490552+=_0x5aee15[_0xbdc9('0x6a')](_0x2846ff);}else{_0x490552+='['+_0x5aee15[_0xbdc9('0x6a')](_0x2846ff)+']';}}_0x490552+='.';return _0x490552;}exports[_0xbdc9('0x26')]=function(_0x42fb37,_0x257b39,_0x56120d){var _0x5e6569=_0x42fb37['body'];_0x5e6569[_0xbdc9('0x5f')]=_0xbdc9('0x6b')+_0x5e6569[_0xbdc9('0x2d')]+'-';return db[_0xbdc9('0x6c')][_0xbdc9('0x4d')](function(_0xf21a3f){return db['VoicePrefix'][_0xbdc9('0x26')](_0x5e6569,{'where':{'id':_0x5e6569['id']},'transaction':_0xf21a3f})['then'](function(){return db[_0xbdc9('0x4f')][_0xbdc9('0x2a')]({'where':{'VoicePrefixId':_0x5e6569['id']},'transaction':_0xf21a3f})['then'](function(){return db[_0xbdc9('0x4f')][_0xbdc9('0x4b')]({'where':{'id':_0x5e6569['VoiceExtensionId']},'raw':!![]})[_0xbdc9('0x27')](function(_0x1d1072){return createVoicePrefixExtensions(_0x5e6569,_0x1d1072,_0xf21a3f);});});});})[_0xbdc9('0x27')](function(){return db[_0xbdc9('0x31')]['findById'](_0x5e6569['id']);})['then'](respondWithResult(_0x257b39,null))[_0xbdc9('0x46')](handleError(_0x257b39,null));};exports[_0xbdc9('0x6d')]=function(_0x1c461c,_0x1cb30e,_0x5e3687){return db[_0xbdc9('0x31')][_0xbdc9('0x4b')]({'where':{'id':_0x1c461c['params']['id']}})['then'](handleEntityNotFound(_0x1cb30e,null))[_0xbdc9('0x27')](function(_0x4c2b2a){if(_0x4c2b2a){return _0x4c2b2a['addAgents'](_0x1c461c[_0xbdc9('0x6e')][_0xbdc9('0x6f')],_[_0xbdc9('0x70')](_0x1c461c['body'],[_0xbdc9('0x6f'),'id'])||{})[_0xbdc9('0x71')](function(_0xdeb275){for(var _0x9deb8f=0x0;_0x9deb8f<_0x1c461c[_0xbdc9('0x6e')][_0xbdc9('0x6f')][_0xbdc9('0x4a')];_0x9deb8f+=0x1){socket[_0xbdc9('0x72')](_0xbdc9('0x73'),{'UserId':Number(_0x1c461c[_0xbdc9('0x6e')][_0xbdc9('0x6f')][_0x9deb8f]),'VoicePrefixId':Number(_0x1c461c[_0xbdc9('0x48')]['id'])});}return _0xdeb275;});}})[_0xbdc9('0x27')](respondWithResult(_0x1cb30e,null))[_0xbdc9('0x46')](handleError(_0x1cb30e,null));};exports[_0xbdc9('0x74')]=function(_0x55e783,_0x3e293d,_0x136816){return db[_0xbdc9('0x31')][_0xbdc9('0x4b')]({'where':{'id':_0x55e783[_0xbdc9('0x48')]['id']}})[_0xbdc9('0x27')](handleEntityNotFound(_0x3e293d,null))['then'](function(_0x4e31b1){if(_0x4e31b1){return _0x4e31b1['removeAgents'](_0x55e783[_0xbdc9('0x35')][_0xbdc9('0x6f')])['then'](function(){if(_[_0xbdc9('0x75')](_0x55e783[_0xbdc9('0x35')][_0xbdc9('0x6f')])){for(var _0x58023b=0x0;_0x58023b<_0x55e783['query'][_0xbdc9('0x6f')][_0xbdc9('0x4a')];_0x58023b+=0x1){socket['emit'](_0xbdc9('0x76'),{'UserId':Number(_0x55e783[_0xbdc9('0x35')][_0xbdc9('0x6f')][_0x58023b]),'VoicePrefixId':Number(_0x55e783[_0xbdc9('0x48')]['id'])});}}else{socket[_0xbdc9('0x72')](_0xbdc9('0x76'),{'UserId':Number(_0x55e783[_0xbdc9('0x35')][_0xbdc9('0x6f')]),'VoicePrefixId':Number(_0x55e783['params']['id'])});}});}})[_0xbdc9('0x27')](respondWithStatusCode(_0x3e293d,null))[_0xbdc9('0x46')](handleError(_0x3e293d,null));};exports[_0xbdc9('0x77')]=function(_0x1fc1a6,_0x44b41b,_0x4e077b){var _0x59caeb={};var _0x5d8dad={};var _0x3b044e;var _0x31c0ae;return db['VoicePrefix'][_0xbdc9('0x78')]({'where':{'id':_0x1fc1a6[_0xbdc9('0x48')]['id']}})[_0xbdc9('0x27')](handleEntityNotFound(_0x44b41b,null))[_0xbdc9('0x27')](function(_0x2beb55){if(_0x2beb55){_0x3b044e=_0x2beb55;_0x5d8dad['model']=_[_0xbdc9('0x36')](db[_0xbdc9('0x79')]['rawAttributes']);_0x5d8dad[_0xbdc9('0x35')]=_[_0xbdc9('0x36')](_0x1fc1a6[_0xbdc9('0x35')]);_0x5d8dad['filters']=_[_0xbdc9('0x38')](_0x5d8dad[_0xbdc9('0x34')],_0x5d8dad['query']);_0x59caeb['attributes']=_[_0xbdc9('0x38')](_0x5d8dad['model'],qs['fields'](_0x1fc1a6[_0xbdc9('0x35')][_0xbdc9('0x39')]));_0x59caeb['attributes']=_0x59caeb[_0xbdc9('0x3a')]['length']?_0x59caeb[_0xbdc9('0x3a')]:_0x5d8dad[_0xbdc9('0x34')];_0x59caeb[_0xbdc9('0x3c')]=qs[_0xbdc9('0x3d')](_0x1fc1a6[_0xbdc9('0x35')]['sort']);_0x59caeb[_0xbdc9('0x3e')]=qs[_0xbdc9('0x37')](_['pick'](_0x1fc1a6['query'],_0x5d8dad['filters']));if(_0x1fc1a6[_0xbdc9('0x35')][_0xbdc9('0x3f')]){_0x59caeb[_0xbdc9('0x3e')]=_[_0xbdc9('0x40')](_0x59caeb[_0xbdc9('0x3e')],{'$or':_[_0xbdc9('0x30')](_0x59caeb[_0xbdc9('0x3a')],function(_0x3d7dfb){var _0x36c9fa={};_0x36c9fa[_0x3d7dfb]={'$like':'%'+_0x1fc1a6['query']['filter']+'%'};return _0x36c9fa;})});}_0x59caeb=_[_0xbdc9('0x40')]({},_0x59caeb,_0x1fc1a6[_0xbdc9('0x42')]);return _0x3b044e[_0xbdc9('0x77')](_0x59caeb);}})[_0xbdc9('0x27')](function(_0x341686){if(_0x341686){_0x31c0ae=_0x341686[_0xbdc9('0x4a')];if(!_0x1fc1a6['query'][_0xbdc9('0x3b')](_0xbdc9('0x7a'))){_0x59caeb['limit']=qs[_0xbdc9('0x21')](_0x1fc1a6[_0xbdc9('0x35')][_0xbdc9('0x21')]);_0x59caeb[_0xbdc9('0x23')]=qs['offset'](_0x1fc1a6[_0xbdc9('0x35')][_0xbdc9('0x23')]);}return _0x3b044e[_0xbdc9('0x77')](_0x59caeb);}})['then'](function(_0x570db9){if(_0x570db9){return _0x570db9?{'count':_0x31c0ae,'rows':_0x570db9}:null;}})[_0xbdc9('0x27')](respondWithResult(_0x44b41b,null))[_0xbdc9('0x46')](handleError(_0x44b41b,null));};
\ No newline at end of file
index 86ffc15..aeb6ccf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf27c=['update','remove','emit','exports','events','../../mysqldb'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf27c,0x70));var _0xcf27=function(_0x64ada5,_0x2d4c76){_0x64ada5=_0x64ada5-0x0;var _0xc420a6=_0xf27c[_0x64ada5];return _0xc420a6;};'use strict';var EventEmitter=require(_0xcf27('0x0'));var VoicePrefix=require(_0xcf27('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xcf27('0x2'),'afterDestroy':_0xcf27('0x3')};function emitEvent(_0x4d7fd7){return function(_0x32047f,_0x48f2ba,_0x148c83){VoicePrefixEvents[_0xcf27('0x4')](_0x4d7fd7+':'+_0x32047f['id'],_0x32047f);VoicePrefixEvents[_0xcf27('0x4')](_0x4d7fd7,_0x32047f);_0x148c83(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0xcf27('0x5')]=VoicePrefixEvents;
\ No newline at end of file
+var _0xb9e4=['events','../../mysqldb','VoicePrefix','setMaxListeners','update','emit','hook','exports'];(function(_0xdd3240,_0x24b3ae){var _0x3af090=function(_0x36f941){while(--_0x36f941){_0xdd3240['push'](_0xdd3240['shift']());}};_0x3af090(++_0x24b3ae);}(_0xb9e4,0x140));var _0x4b9e=function(_0x26859f,_0x1b907f){_0x26859f=_0x26859f-0x0;var _0x10bbe0=_0xb9e4[_0x26859f];return _0x10bbe0;};'use strict';var EventEmitter=require(_0x4b9e('0x0'));var VoicePrefix=require(_0x4b9e('0x1'))['db'][_0x4b9e('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x4b9e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4b9e('0x4'),'afterDestroy':'remove'};function emitEvent(_0x33d626){return function(_0x7e1167,_0x3f51cd,_0x5b850b){VoicePrefixEvents[_0x4b9e('0x5')](_0x33d626+':'+_0x7e1167['id'],_0x7e1167);VoicePrefixEvents[_0x4b9e('0x5')](_0x33d626,_0x7e1167);_0x5b850b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x4b9e('0x6')](e,emitEvent(event));}}module[_0x4b9e('0x7')]=VoicePrefixEvents;
\ No newline at end of file
index 946fd6e..70e0672 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe657=['define','util','../../config/logger','api','moment','path','rimraf','../../config/environment','exports'];(function(_0x295a3d,_0x56d487){var _0x23a732=function(_0x15cfc2){while(--_0x15cfc2){_0x295a3d['push'](_0x295a3d['shift']());}};_0x23a732(++_0x56d487);}(_0xe657,0xd0));var _0x7e65=function(_0x31701d,_0x25897a){_0x31701d=_0x31701d-0x0;var _0x422109=_0xe657[_0x31701d];return _0x422109;};'use strict';var _=require('lodash');var util=require(_0x7e65('0x0'));var logger=require(_0x7e65('0x1'))(_0x7e65('0x2'));var moment=require(_0x7e65('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7e65('0x4'));var rimraf=require(_0x7e65('0x5'));var config=require(_0x7e65('0x6'));var attributes=require('./voicePrefix.attributes');module[_0x7e65('0x7')]=function(_0x5c1abc,_0xe1e939){return _0x5c1abc[_0x7e65('0x8')]('VoicePrefix',attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3964=['VoicePrefix','voice_prefixes','api','moment','bluebird','./voicePrefix.attributes'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x3964,0xf8));var _0x4396=function(_0x1ec3fb,_0x31649f){_0x1ec3fb=_0x1ec3fb-0x0;var _0x32b222=_0x3964[_0x1ec3fb];return _0x32b222;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x4396('0x0'));var moment=require(_0x4396('0x1'));var BPromise=require(_0x4396('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4396('0x3'));module['exports']=function(_0x397cf0,_0x3e44a8){return _0x397cf0['define'](_0x4396('0x4'),attributes,{'tableName':_0x4396('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index da33b65..af9a525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed5c=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','request','info','request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoicePrefix,\x20%s,\x20%s','result','lodash'];(function(_0x287bc8,_0x26b6c0){var _0x5796f5=function(_0xafdb75){while(--_0xafdb75){_0x287bc8['push'](_0x287bc8['shift']());}};_0x5796f5(++_0x26b6c0);}(_0xed5c,0x81));var _0xced5=function(_0x9b250b,_0x22ccaf){_0x9b250b=_0x9b250b-0x0;var _0x153b87=_0xed5c[_0x9b250b];return _0x153b87;};'use strict';var _=require(_0xced5('0x0'));var util=require(_0xced5('0x1'));var moment=require(_0xced5('0x2'));var BPromise=require(_0xced5('0x3'));var rs=require(_0xced5('0x4'));var fs=require('fs');var Redis=require(_0xced5('0x5'));var db=require(_0xced5('0x6'))['db'];var utils=require(_0xced5('0x7'));var logger=require(_0xced5('0x8'))(_0xced5('0x9'));var config=require('../../config/environment');var jayson=require(_0xced5('0xa'));var client=jayson[_0xced5('0xb')]['http']({'port':0x232a});config['redis']=_[_0xced5('0xc')](config[_0xced5('0xd')],{'host':_0xced5('0xe'),'port':0x18eb});var socket=require(_0xced5('0xf'))(new Redis(config[_0xced5('0xd')]));require('./voicePrefix.socket')['register'](socket);function respondWithRpcPromise(_0x708a5a,_0x2f2606,_0x37d308){return new BPromise(function(_0x10fd53,_0x5b760e){return client[_0xced5('0x10')](_0x708a5a,_0x37d308)['then'](function(_0x3ba212){logger[_0xced5('0x11')]('VoicePrefix,\x20%s,\x20%s',_0x2f2606,_0xced5('0x12'));logger['debug'](_0xced5('0x13'),_0x2f2606,_0xced5('0x12'),JSON[_0xced5('0x14')](_0x3ba212));if(_0x3ba212[_0xced5('0x15')]){if(_0x3ba212[_0xced5('0x15')][_0xced5('0x16')]===0x1f4){logger[_0xced5('0x15')]('VoicePrefix,\x20%s,\x20%s',_0x2f2606,_0x3ba212['error'][_0xced5('0x17')]);return _0x5b760e(_0x3ba212[_0xced5('0x15')][_0xced5('0x17')]);}logger['error']('VoicePrefix,\x20%s,\x20%s',_0x2f2606,_0x3ba212[_0xced5('0x15')][_0xced5('0x17')]);return _0x10fd53(_0x3ba212[_0xced5('0x15')][_0xced5('0x17')]);}else{logger[_0xced5('0x11')](_0xced5('0x18'),_0x2f2606,'request\x20sent');_0x10fd53(_0x3ba212[_0xced5('0x19')][_0xced5('0x17')]);}})['catch'](function(_0x33851d){logger[_0xced5('0x15')](_0xced5('0x18'),_0x2f2606,_0x33851d);_0x5b760e(_0x33851d);});});}
\ No newline at end of file
+var _0x8b0e=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./voicePrefix.socket','register','info','VoicePrefix,\x20%s,\x20%s','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3bdbdb,_0x2e8715){var _0x5eeb4d=function(_0x3522d5){while(--_0x3522d5){_0x3bdbdb['push'](_0x3bdbdb['shift']());}};_0x5eeb4d(++_0x2e8715);}(_0x8b0e,0x166));var _0xe8b0=function(_0x4394b6,_0x12357f){_0x4394b6=_0x4394b6-0x0;var _0x360244=_0x8b0e[_0x4394b6];return _0x360244;};'use strict';var _=require(_0xe8b0('0x0'));var util=require(_0xe8b0('0x1'));var moment=require(_0xe8b0('0x2'));var BPromise=require(_0xe8b0('0x3'));var rs=require(_0xe8b0('0x4'));var fs=require('fs');var Redis=require(_0xe8b0('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe8b0('0x6'));var logger=require('../../config/logger')(_0xe8b0('0x7'));var config=require(_0xe8b0('0x8'));var jayson=require(_0xe8b0('0x9'));var client=jayson[_0xe8b0('0xa')][_0xe8b0('0xb')]({'port':0x232a});config[_0xe8b0('0xc')]=_[_0xe8b0('0xd')](config[_0xe8b0('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xe8b0('0xe'))(new Redis(config[_0xe8b0('0xc')]));require(_0xe8b0('0xf'))[_0xe8b0('0x10')](socket);function respondWithRpcPromise(_0x326408,_0x39ebdc,_0x3cfdc2){return new BPromise(function(_0xadf7d,_0x4092d4){return client['request'](_0x326408,_0x3cfdc2)['then'](function(_0x35358f){logger[_0xe8b0('0x11')](_0xe8b0('0x12'),_0x39ebdc,'request\x20sent');logger[_0xe8b0('0x13')](_0xe8b0('0x14'),_0x39ebdc,_0xe8b0('0x15'),JSON[_0xe8b0('0x16')](_0x35358f));if(_0x35358f[_0xe8b0('0x17')]){if(_0x35358f[_0xe8b0('0x17')][_0xe8b0('0x18')]===0x1f4){logger['error'](_0xe8b0('0x12'),_0x39ebdc,_0x35358f[_0xe8b0('0x17')][_0xe8b0('0x19')]);return _0x4092d4(_0x35358f['error'][_0xe8b0('0x19')]);}logger['error']('VoicePrefix,\x20%s,\x20%s',_0x39ebdc,_0x35358f['error'][_0xe8b0('0x19')]);return _0xadf7d(_0x35358f[_0xe8b0('0x17')]['message']);}else{logger[_0xe8b0('0x11')](_0xe8b0('0x12'),_0x39ebdc,_0xe8b0('0x15'));_0xadf7d(_0x35358f[_0xe8b0('0x1a')][_0xe8b0('0x19')]);}})[_0xe8b0('0x1b')](function(_0x49cf4e){logger['error'](_0xe8b0('0x12'),_0x39ebdc,_0x49cf4e);_0x4092d4(_0x49cf4e);});});}
\ No newline at end of file
index 5c99340..7d92d94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2821=['save','remove','update','emit','removeListener','length','voicePrefix:','./voicePrefix.events'];(function(_0x168a78,_0x33c04c){var _0x841237=function(_0x50ab51){while(--_0x50ab51){_0x168a78['push'](_0x168a78['shift']());}};_0x841237(++_0x33c04c);}(_0x2821,0x87));var _0x1282=function(_0x518875,_0x13a368){_0x518875=_0x518875-0x0;var _0xd1c60c=_0x2821[_0x518875];return _0xd1c60c;};'use strict';var VoicePrefixEvents=require(_0x1282('0x0'));var events=[_0x1282('0x1'),_0x1282('0x2'),_0x1282('0x3')];function createListener(_0x27c0ae,_0x1bebaa){return function(_0x279fa6){_0x1bebaa[_0x1282('0x4')](_0x27c0ae,_0x279fa6);};}function removeListener(_0x3f5e68,_0x7c8e0f){return function(){VoicePrefixEvents[_0x1282('0x5')](_0x3f5e68,_0x7c8e0f);};}exports['register']=function(_0x31e0cf){for(var _0x1843f2=0x0,_0x293947=events[_0x1282('0x6')];_0x1843f2<_0x293947;_0x1843f2++){var _0xa4eee9=events[_0x1843f2];var _0x1a8666=createListener(_0x1282('0x7')+_0xa4eee9,_0x31e0cf);VoicePrefixEvents['on'](_0xa4eee9,_0x1a8666);}};
\ No newline at end of file
+var _0x574d=['./voicePrefix.events','save','remove','update','removeListener','register','length','voicePrefix:'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x574d,0xc0));var _0xd574=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x574d[_0x5f09c5];return _0x426ad9;};'use strict';var VoicePrefixEvents=require(_0xd574('0x0'));var events=[_0xd574('0x1'),_0xd574('0x2'),_0xd574('0x3')];function createListener(_0x1d2268,_0x336175){return function(_0x46aec5){_0x336175['emit'](_0x1d2268,_0x46aec5);};}function removeListener(_0x2a54ff,_0x1be154){return function(){VoicePrefixEvents[_0xd574('0x4')](_0x2a54ff,_0x1be154);};}exports[_0xd574('0x5')]=function(_0x56ecee){for(var _0x16a152=0x0,_0x13a566=events[_0xd574('0x6')];_0x16a152<_0x13a566;_0x16a152++){var _0x1558b3=events[_0x16a152];var _0x3a1e54=createListener(_0xd574('0x7')+_0x1558b3,_0x56ecee);VoicePrefixEvents['on'](_0x1558b3,_0x3a1e54);}};
\ No newline at end of file
index 181c692..5daa122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x201e=['getHopperFinals','getHopperBlacks','getTeams','/:id/users','getMembers','/:id/lists','/:id/blacklists','post','create','clone','addTeams','addAgents','addLists','addBlackLists','put','update','destroy','delete','/:id/teams','removeTeams','removeAgents','removeBlackLists','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./voiceQueue.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals'];(function(_0xb91507,_0x1a4296){var _0x1f1136=function(_0x561bc8){while(--_0x561bc8){_0xb91507['push'](_0xb91507['shift']());}};_0x1f1136(++_0x1a4296);}(_0x201e,0x1bb));var _0xe201=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x201e[_0x45d55e];return _0x29812a;};'use strict';var multer=require(_0xe201('0x0'));var util=require(_0xe201('0x1'));var path=require(_0xe201('0x2'));var timeout=require(_0xe201('0x3'));var express=require(_0xe201('0x4'));var router=express[_0xe201('0x5')]();var fs_extra=require(_0xe201('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe201('0x7'));var config=require('../../config/environment');var controller=require(_0xe201('0x8'));router[_0xe201('0x9')]('/',auth[_0xe201('0xa')](),controller[_0xe201('0xb')]);router[_0xe201('0x9')](_0xe201('0xc'),auth['isAuthenticated'](),controller[_0xe201('0xd')]);router[_0xe201('0x9')](_0xe201('0xe'),auth[_0xe201('0xa')](),controller[_0xe201('0xf')]);router[_0xe201('0x9')](_0xe201('0x10'),auth[_0xe201('0xa')](),controller[_0xe201('0x11')]);router[_0xe201('0x9')](_0xe201('0x12'),auth['isAuthenticated'](),controller[_0xe201('0x13')]);router['get']('/:id/hopper_black',auth[_0xe201('0xa')](),controller[_0xe201('0x14')]);router[_0xe201('0x9')]('/:id/teams',auth[_0xe201('0xa')](),controller[_0xe201('0x15')]);router[_0xe201('0x9')](_0xe201('0x16'),auth[_0xe201('0xa')](),controller['getAgents']);router[_0xe201('0x9')]('/:id/members',auth[_0xe201('0xa')](),controller[_0xe201('0x17')]);router[_0xe201('0x9')](_0xe201('0x18'),auth[_0xe201('0xa')](),controller['getLists']);router[_0xe201('0x9')](_0xe201('0x19'),auth['isAuthenticated'](),controller['getBlackLists']);router[_0xe201('0x1a')]('/',auth[_0xe201('0xa')](),controller[_0xe201('0x1b')]);router[_0xe201('0x1a')]('/:id/clone',auth['isAuthenticated'](),controller[_0xe201('0x1c')]);router['post']('/:id/teams',auth[_0xe201('0xa')](),controller[_0xe201('0x1d')]);router[_0xe201('0x1a')](_0xe201('0x16'),auth['isAuthenticated'](),controller[_0xe201('0x1e')]);router[_0xe201('0x1a')]('/:id/lists',auth[_0xe201('0xa')](),controller[_0xe201('0x1f')]);router[_0xe201('0x1a')](_0xe201('0x19'),auth[_0xe201('0xa')](),controller[_0xe201('0x20')]);router[_0xe201('0x21')](_0xe201('0xc'),auth[_0xe201('0xa')](),controller[_0xe201('0x22')]);router['delete'](_0xe201('0xc'),auth[_0xe201('0xa')](),controller[_0xe201('0x23')]);router[_0xe201('0x24')](_0xe201('0x25'),auth[_0xe201('0xa')](),controller[_0xe201('0x26')]);router['delete'](_0xe201('0x16'),auth[_0xe201('0xa')](),controller[_0xe201('0x27')]);router['delete'](_0xe201('0x18'),auth[_0xe201('0xa')](),controller['removeLists']);router[_0xe201('0x24')](_0xe201('0x19'),auth[_0xe201('0xa')](),controller[_0xe201('0x28')]);module[_0xe201('0x29')]=router;
\ No newline at end of file
+var _0xe425=['get','isAuthenticated','index','/:id','show','/:id/hoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addTeams','addAgents','addBlackLists','put','delete','destroy','removeTeams','removeLists','removeBlackLists','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xe425,0x1b0));var _0x5e42=function(_0x4e9fed,_0x19f4f3){_0x4e9fed=_0x4e9fed-0x0;var _0x5c8cc0=_0xe425[_0x4e9fed];return _0x5c8cc0;};'use strict';var multer=require(_0x5e42('0x0'));var util=require(_0x5e42('0x1'));var path=require(_0x5e42('0x2'));var timeout=require(_0x5e42('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5e42('0x4'));var auth=require(_0x5e42('0x5'));var interaction=require(_0x5e42('0x6'));var config=require(_0x5e42('0x7'));var controller=require('./voiceQueue.controller');router[_0x5e42('0x8')]('/',auth[_0x5e42('0x9')](),controller[_0x5e42('0xa')]);router['get'](_0x5e42('0xb'),auth[_0x5e42('0x9')](),controller[_0x5e42('0xc')]);router[_0x5e42('0x8')](_0x5e42('0xd'),auth[_0x5e42('0x9')](),controller['getHoppers']);router['get'](_0x5e42('0xe'),auth[_0x5e42('0x9')](),controller['getHopperHistories']);router[_0x5e42('0x8')](_0x5e42('0xf'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x10')]);router['get'](_0x5e42('0x11'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x12')]);router[_0x5e42('0x8')](_0x5e42('0x13'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x14')]);router['get'](_0x5e42('0x15'),auth['isAuthenticated'](),controller[_0x5e42('0x16')]);router['get']('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0x5e42('0x8')](_0x5e42('0x17'),auth['isAuthenticated'](),controller['getLists']);router['get'](_0x5e42('0x18'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x19')]);router[_0x5e42('0x1a')]('/',auth[_0x5e42('0x9')](),controller[_0x5e42('0x1b')]);router[_0x5e42('0x1a')](_0x5e42('0x1c'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x1d')]);router['post'](_0x5e42('0x13'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x1e')]);router[_0x5e42('0x1a')](_0x5e42('0x15'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x1f')]);router[_0x5e42('0x1a')](_0x5e42('0x17'),auth[_0x5e42('0x9')](),controller['addLists']);router[_0x5e42('0x1a')](_0x5e42('0x18'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x20')]);router[_0x5e42('0x21')](_0x5e42('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x5e42('0x22')](_0x5e42('0xb'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x23')]);router[_0x5e42('0x22')](_0x5e42('0x13'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x24')]);router[_0x5e42('0x22')](_0x5e42('0x15'),auth[_0x5e42('0x9')](),controller['removeAgents']);router[_0x5e42('0x22')]('/:id/lists',auth[_0x5e42('0x9')](),controller[_0x5e42('0x25')]);router['delete'](_0x5e42('0x18'),auth[_0x5e42('0x9')](),controller[_0x5e42('0x26')]);module[_0x5e42('0x27')]=router;
\ No newline at end of file
index f0d18b0..3688b5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8169=['strategy','getDataValue','type','dialMethod','booked','progressive','predictive','power','INTEGER','yes','all','once','TEXT','setDataValue','periodic_announce','split','joinempty','join','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','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','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','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)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\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)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','STRING','inbound','outbound','ENUM','leastrecent','fewestcalls','random','rrmemory','rrordered'];(function(_0x5ad74d,_0xc5b4db){var _0x5b0b4f=function(_0x396ef9){while(--_0x396ef9){_0x5ad74d['push'](_0x5ad74d['shift']());}};_0x5b0b4f(++_0xc5b4db);}(_0x8169,0xd4));var _0x9816=function(_0x261fce,_0x103751){_0x261fce=_0x261fce-0x0;var _0x4b763b=_0x8169[_0x261fce];return _0x4b763b;};'use strict';var Sequelize=require(_0x9816('0x0'));module['exports']={'name':{'type':Sequelize[_0x9816('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x9816('0x2'),_0x9816('0x3')),'allowNull':![],'defaultValue':_0x9816('0x2')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':'default'},'announce':{'type':Sequelize[_0x9816('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0x9816('0x4')]('rr','ringall',_0x9816('0x5'),_0x9816('0x6'),_0x9816('0x7'),_0x9816('0x8'),'linear','wrandom',_0x9816('0x9')),'allowNull':![],'defaultValue':'ringall','set':function(_0x2a7e47){this['setDataValue'](_0x9816('0xa'),_0x2a7e47?_0x2a7e47:_0x9816('0x8'));},'get':function(){var _0x2a912f=this[_0x9816('0xb')](_0x9816('0xc'));var _0x36c69b=this[_0x9816('0xb')](_0x9816('0xd'));var _0x35b87f=this[_0x9816('0xb')]('strategy');if(_0x2a912f===_0x9816('0x2')){return _0x35b87f;}if(_0x36c69b===_0x9816('0xe')&&_0x35b87f===_0x9816('0x8')||_0x36c69b===_0x9816('0xe')&&_0x35b87f==='roundrobin'){return _0x35b87f;}if(_0x36c69b===_0x9816('0xf')||_0x36c69b===_0x9816('0x10')||_0x36c69b===_0x9816('0x11')){return _0x35b87f;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x9816('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x9816('0x12')](0xb)},'timeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x9816('0x12')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0x9816('0x12')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x13'),'no'),'defaultValue':_0x9816('0x13')},'autopause':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x13'),'no',_0x9816('0x14')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x9816('0x12')](0xb)},'autopausebusy':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x13'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x13'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x9816('0x12')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x9816('0x4')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x13'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x9816('0x4')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x13'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x9816('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x9816('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x9816('0x12')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x9816('0x12')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x9816('0x12')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x9816('0x13'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x13'),'no'),'defaultValue':_0x9816('0x13')},'announce_holdtime':{'type':Sequelize['ENUM']('yes','no',_0x9816('0x15')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x9816('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x13'),'no')},'announce_position_limit':{'type':Sequelize[_0x9816('0x12')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x9816('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x9816('0x1')]},'queue_youarenext':{'type':Sequelize[_0x9816('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x9816('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x9816('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x9816('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x9816('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x9816('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x9816('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x9816('0x1')]},'queue_quantity1':{'type':Sequelize[_0x9816('0x1')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0x9816('0x1')]},'queue_less_than':{'type':Sequelize[_0x9816('0x1')]},'periodic_announce':{'type':Sequelize[_0x9816('0x16')],'set':function(_0x16f453){this[_0x9816('0x17')](_0x9816('0x18'),_0x16f453?_0x16f453['join'](','):[]);},'get':function(){return this['getDataValue'](_0x9816('0x18'))?this[_0x9816('0xb')](_0x9816('0x18'))[_0x9816('0x19')](','):[];}},'joinempty':{'type':Sequelize[_0x9816('0x1')],'defaultValue':_0x9816('0x13'),'set':function(_0x2a899a){this[_0x9816('0x17')](_0x9816('0x1a'),_0x2a899a?_0x2a899a[_0x9816('0x1b')](','):undefined);},'get':function(){return this[_0x9816('0xb')](_0x9816('0x1a'))?this[_0x9816('0xb')](_0x9816('0x1a'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x9816('0x1')],'defaultValue':'no','set':function(_0x295c73){this[_0x9816('0x17')](_0x9816('0x1c'),_0x295c73?_0x295c73['join'](','):undefined);},'get':function(){return this[_0x9816('0xb')](_0x9816('0x1c'))?this[_0x9816('0xb')](_0x9816('0x1c'))['split'](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x9816('0x13'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0x9816('0x13'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x13'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x9816('0x1')]},'description':{'type':Sequelize[_0x9816('0x1')]},'acw':{'type':Sequelize[_0x9816('0x1d')],'defaultValue':0x0,'set':function(_0x363979){this[_0x9816('0x17')](_0x9816('0x1e'),_0x363979);if(_0x363979){if(this['getDataValue'](_0x9816('0x1f'))<0x2){this[_0x9816('0x17')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x9816('0x1d')],'defaultValue':0x0,'comment':_0x9816('0x20')},'dialMethod':{'type':Sequelize['ENUM'](_0x9816('0x21'),'progressive',_0x9816('0x11'),'predictive','booked'),'defaultValue':_0x9816('0xf'),'comment':_0x9816('0x22')},'dialLimitChannel':{'type':Sequelize[_0x9816('0x12')](0x4)[_0x9816('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x9816('0x24')},'dialLimitQueue':{'type':Sequelize[_0x9816('0x12')](0x4)[_0x9816('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x9816('0x25')](0x2)[_0x9816('0x23')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x9816('0x26')},'dialPredictiveOptimization':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x27'),'dropRate'),'defaultValue':'dropRate','comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x9816('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize['INTEGER'](0x3)[_0x9816('0x23')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x9816('0x28')},'dialOriginateCallerIdName':{'type':Sequelize[_0x9816('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x9816('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x9816('0x23')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9816('0x29')},'dialQueueOptions':{'type':Sequelize[_0x9816('0x1')],'defaultValue':_0x9816('0x2a'),'comment':_0x9816('0x2b')},'dialQueueTimeout':{'type':Sequelize[_0x9816('0x12')](0x3)[_0x9816('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9816('0x2c')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0x9816('0x2d')},'dialCongestionMaxRetry':{'type':Sequelize[_0x9816('0x12')](0x3)[_0x9816('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9816('0x2e')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x9816('0x12')](0x5)[_0x9816('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x9816('0x12')](0x3)[_0x9816('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x9816('0x12')](0x5)[_0x9816('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9816('0x2f')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x9816('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x9816('0x12')](0x5)[_0x9816('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9816('0x30')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x9816('0x23')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x9816('0x31')},'dialTimezone':{'type':Sequelize[_0x9816('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x9816('0x1')],'defaultValue':_0x9816('0x32')},'dialPrefix':{'type':Sequelize[_0x9816('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x9816('0x4')](_0x9816('0x33'),_0x9816('0x34'),_0x9816('0x35')),'defaultValue':_0x9816('0x33')},'dialAMDActive':{'type':Sequelize[_0x9816('0x1d')],'defaultValue':0x0,'comment':_0x9816('0x36')},'dialAMDInitialSilence':{'type':Sequelize[_0x9816('0x12')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x9816('0x12')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x9816('0x37')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x9816('0x12')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x9816('0x38')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x9816('0x12')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x9816('0x39')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x9816('0x23')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x9816('0x3a')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x9816('0x12')](0x9)[_0x9816('0x23')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x9816('0x12')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x9816('0x3b')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x9816('0x12')](0x5)[_0x9816('0x23')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x9816('0x3c')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x9816('0x12')](0x9)[_0x9816('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x9816('0x3d')},'dialRecallMeTimeout':{'type':Sequelize[_0x9816('0x12')](0x5)[_0x9816('0x23')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x9816('0x3e')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x9816('0x3f')},'dialOrderByScheduledAt':{'type':Sequelize[_0x9816('0x4')]('DESC','ASC'),'defaultValue':_0x9816('0x40')},'dialQueueProject2':{'type':Sequelize[_0x9816('0x1')],'comment':_0x9816('0x2d')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x9816('0x1d')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x9816('0x12')](0x3)[_0x9816('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x9816('0x41')},'dialCutDigit':{'type':Sequelize[_0x9816('0x12')](0x3)[_0x9816('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x9816('0x42')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x9816('0x12')](0x3)[_0x9816('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9816('0x43')},'dialDropMaxRetry':{'type':Sequelize[_0x9816('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x9816('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x9816('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9816('0x44')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x9816('0x12')](0x5)[_0x9816('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x9816('0x45')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x9816('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9816('0x46')},'dialMachineRetryFrequency':{'type':Sequelize[_0x9816('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x9816('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x9816('0x47')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x9816('0x12')](0x5)[_0x9816('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9816('0x12')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x9816('0x1d')],'defaultValue':![],'comment':_0x9816('0x48'),'set':function(_0x384004){if(!_0x384004)this[_0x9816('0x17')](_0x9816('0x49'),null);this[_0x9816('0x17')]('mandatoryDisposition',_0x384004);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x9816('0x23')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0xbdba=['wrandom','rrordered','setDataValue','getDataValue','dialMethod','strategy','booked','roundrobin','predictive','INTEGER','yes','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','progressive','power','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','always','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','sequelize','STRING','name','ENUM','inbound','ringall','fewestcalls','random','rrmemory'];(function(_0x55814d,_0x1d9476){var _0x4fa2e7=function(_0x28a977){while(--_0x28a977){_0x55814d['push'](_0x55814d['shift']());}};_0x4fa2e7(++_0x1d9476);}(_0xbdba,0x107));var _0xabdb=function(_0x254c64,_0x369948){_0x254c64=_0x254c64-0x0;var _0x179762=_0xbdba[_0x254c64];return _0x179762;};'use strict';var Sequelize=require(_0xabdb('0x0'));module['exports']={'name':{'type':Sequelize[_0xabdb('0x1')],'allowNull':![],'unique':_0xabdb('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x4'),'outbound'),'allowNull':![],'defaultValue':_0xabdb('0x4')},'musiconhold':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':'default'},'announce':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0xabdb('0x3')]('rr',_0xabdb('0x5'),'leastrecent',_0xabdb('0x6'),_0xabdb('0x7'),_0xabdb('0x8'),'linear',_0xabdb('0x9'),_0xabdb('0xa')),'allowNull':![],'defaultValue':'ringall','set':function(_0x5b2d56){this[_0xabdb('0xb')]('strategy',_0x5b2d56?_0x5b2d56:_0xabdb('0x8'));},'get':function(){var _0x365c4d=this['getDataValue']('type');var _0x4e074a=this[_0xabdb('0xc')](_0xabdb('0xd'));var _0xfeb31e=this[_0xabdb('0xc')](_0xabdb('0xe'));if(_0x365c4d==='inbound'){return _0xfeb31e;}if(_0x4e074a===_0xabdb('0xf')&&_0xfeb31e===_0xabdb('0x8')||_0x4e074a===_0xabdb('0xf')&&_0xfeb31e===_0xabdb('0x10')){return _0xfeb31e;}if(_0x4e074a==='progressive'||_0x4e074a===_0xabdb('0x11')||_0x4e074a==='power'){return _0xfeb31e;}return null;}},'servicelevel':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xabdb('0x12')](0xb)},'timeout':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':_0xabdb('0x13')},'autopause':{'type':Sequelize['ENUM']('yes','no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0xabdb('0x13'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0xabdb('0x13'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xabdb('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xabdb('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xabdb('0x12')](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['ENUM'](_0xabdb('0x13'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xabdb('0x3')]('yes','no')},'announce_position_limit':{'type':Sequelize[_0xabdb('0x12')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xabdb('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xabdb('0x1')]},'queue_quantity1':{'type':Sequelize[_0xabdb('0x1')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0xabdb('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x1d064e){this[_0xabdb('0xb')](_0xabdb('0x14'),_0x1d064e?_0x1d064e[_0xabdb('0x15')](','):[]);},'get':function(){return this[_0xabdb('0xc')](_0xabdb('0x14'))?this[_0xabdb('0xc')](_0xabdb('0x14'))[_0xabdb('0x16')](','):[];}},'joinempty':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':_0xabdb('0x13'),'set':function(_0xfbdfd8){this[_0xabdb('0xb')](_0xabdb('0x17'),_0xfbdfd8?_0xfbdfd8[_0xabdb('0x15')](','):undefined);},'get':function(){return this[_0xabdb('0xc')](_0xabdb('0x17'))?this['getDataValue']('joinempty')[_0xabdb('0x16')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':'no','set':function(_0x48e32f){this[_0xabdb('0xb')](_0xabdb('0x18'),_0x48e32f?_0x48e32f[_0xabdb('0x15')](','):undefined);},'get':function(){return this['getDataValue'](_0xabdb('0x18'))?this['getDataValue']('leavewhenempty')[_0xabdb('0x16')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xabdb('0x3')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xabdb('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x13'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xabdb('0x1')]},'description':{'type':Sequelize[_0xabdb('0x1')]},'acw':{'type':Sequelize[_0xabdb('0x19')],'defaultValue':0x0,'set':function(_0x157ae7){this[_0xabdb('0xb')](_0xabdb('0x1a'),_0x157ae7);if(_0x157ae7){if(this[_0xabdb('0xc')](_0xabdb('0x1b'))<0x2){this[_0xabdb('0xb')](_0xabdb('0x1b'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xabdb('0x12')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xabdb('0x19')],'defaultValue':0x0,'comment':_0xabdb('0x1c')},'dialMethod':{'type':Sequelize[_0xabdb('0x3')]('preview',_0xabdb('0x1d'),_0xabdb('0x1e'),_0xabdb('0x11'),_0xabdb('0xf')),'defaultValue':'progressive','comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0xabdb('0x12')](0x4)[_0xabdb('0x1f')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xabdb('0x20')},'dialPowerLevel':{'type':Sequelize[_0xabdb('0x21')](0x2)[_0xabdb('0x1f')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xabdb('0x22')},'dialPredictiveOptimization':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x23'),_0xabdb('0x24')),'defaultValue':_0xabdb('0x24'),'comment':_0xabdb('0x25')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xabdb('0x26')},'dialPredictiveInterval':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize[_0xabdb('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x27')},'dialQueueOptions':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':'tTxX','comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xabdb('0x1')],'comment':_0xabdb('0x28')},'dialCongestionMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x29')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x2a')},'dialBusyMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x2b')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x2c')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0x3,'comment':_0xabdb('0x2d')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x2e')},'dialGlobalMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)['UNSIGNED'],'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[_0xabdb('0x1')],'defaultValue':_0xabdb('0x2f')},'dialPrefix':{'type':Sequelize[_0xabdb('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xabdb('0x3')](_0xabdb('0x30'),'never',_0xabdb('0x31')),'defaultValue':_0xabdb('0x30')},'dialAMDActive':{'type':Sequelize[_0xabdb('0x19')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xabdb('0x12')](0x9)[_0xabdb('0x1f')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xabdb('0x32')},'dialAMDGreeting':{'type':Sequelize[_0xabdb('0x12')](0x9)[_0xabdb('0x1f')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xabdb('0x12')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xabdb('0x12')](0x9)[_0xabdb('0x1f')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xabdb('0x33')},'dialAMDMinWordLength':{'type':Sequelize[_0xabdb('0x12')](0x9)[_0xabdb('0x1f')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xabdb('0x34')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xabdb('0x35')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xabdb('0x12')](0x9)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xabdb('0x36')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xabdb('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xabdb('0x1f')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xabdb('0x37')},'dialRecallMeTimeout':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xabdb('0x38')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xabdb('0x39')},'dialOrderByScheduledAt':{'type':Sequelize[_0xabdb('0x3')]('DESC','ASC'),'defaultValue':_0xabdb('0x3a')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0xabdb('0x28')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xabdb('0x19')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x3b')},'dialDropMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x3c')},'dialDropRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x3d')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x3e')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xabdb('0x3f')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xabdb('0x12')](0x5)[_0xabdb('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xabdb('0x40')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xabdb('0x12')],'allowNull':!![],'comment':_0xabdb('0x41')},'mandatoryDisposition':{'type':Sequelize[_0xabdb('0x19')],'defaultValue':![],'comment':_0xabdb('0x42'),'set':function(_0x2182f5){if(!_0x2182f5)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0xabdb('0xb')](_0xabdb('0x43'),_0x2182f5);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xabdb('0x12')](0x3)[_0xabdb('0x1f')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index 8d0dac2..9d37bea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c12=['VoiceQueueId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','cm_hopper','fromQuery','removeLists','getBlackLists','CmList','addBlackLists','removeBlackLists','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voiceQueue.socket','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','type','find','name','UserProfileResource','end','sendStatus','error','stack','VoiceQueue','rawAttributes','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','includeAll','include','findAll','rows','catch','show','params','keys','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','update','getHoppers','CmHopper','VoiceQueueId','options','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getTeams','Team','teams','Agents','online','voicePause','flatMap','forEach','penalty','sequelize','addTeams','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','SIP/%s','interface','emit','userVoiceQueue:save','removeTeams','User','select','field','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','compact','transaction','ids','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','UserVoiceQueueRt','format','isArray','getAgents','getMembers','getLists','addLists','spread','dialCheckDuplicateType','always','insert','into','phone','scheduledAt','ContactId','ListId','NOW()','CmListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final'];(function(_0x3ed054,_0x4d4f16){var _0x16dd95=function(_0xc0c19c){while(--_0xc0c19c){_0x3ed054['push'](_0x3ed054['shift']());}};_0x16dd95(++_0x4d4f16);}(_0x1c12,0x17a));var _0x21c1=function(_0x3f9f81,_0x56975b){_0x3f9f81=_0x3f9f81-0x0;var _0x5a8352=_0x1c12[_0x3f9f81];return _0x5a8352;};'use strict';var emlformat=require(_0x21c1('0x0'));var rimraf=require(_0x21c1('0x1'));var zipdir=require(_0x21c1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x21c1('0x3'));var moment=require(_0x21c1('0x4'));var BPromise=require(_0x21c1('0x5'));var Mustache=require(_0x21c1('0x6'));var util=require(_0x21c1('0x7'));var path=require(_0x21c1('0x8'));var sox=require('sox');var csv=require(_0x21c1('0x9'));var ejs=require(_0x21c1('0xa'));var fs=require('fs');var fs_extra=require(_0x21c1('0xb'));var _=require(_0x21c1('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x21c1('0xd'));var deskjs=require(_0x21c1('0xe'));var toCsv=require(_0x21c1('0x9'));var querystring=require(_0x21c1('0xf'));var Papa=require('papaparse');var Redis=require(_0x21c1('0x10'));var authService=require(_0x21c1('0x11'));var qs=require(_0x21c1('0x12'));var as=require(_0x21c1('0x13'));var hardwareService=require(_0x21c1('0x14'));var logger=require(_0x21c1('0x15'))('api');var utils=require(_0x21c1('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x21c1('0x17'));var db=require(_0x21c1('0x18'))['db'];config[_0x21c1('0x19')]=_[_0x21c1('0x1a')](config[_0x21c1('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x21c1('0x1b'))(new Redis(config[_0x21c1('0x19')]));require(_0x21c1('0x1c'))['register'](socket);function respondWithStatusCode(_0x58661a,_0x5782b3){_0x5782b3=_0x5782b3||0xcc;return function(_0x1fd23a){if(_0x1fd23a){return _0x58661a['sendStatus'](_0x5782b3);}return _0x58661a['status'](_0x5782b3)['end']();};}function respondWithResult(_0x514184,_0x26f2a7){_0x26f2a7=_0x26f2a7||0xc8;return function(_0x321a62){if(_0x321a62){return _0x514184[_0x21c1('0x1d')](_0x26f2a7)[_0x21c1('0x1e')](_0x321a62);}};}function respondWithFilteredResult(_0x40f999,_0x48e31c){return function(_0xb22534){if(_0xb22534){var _0x314f8e=typeof _0x48e31c[_0x21c1('0x1f')]===_0x21c1('0x20')&&typeof _0x48e31c['limit']===_0x21c1('0x20');var _0x5b37a6=_0xb22534[_0x21c1('0x21')];var _0x81d991=_0x314f8e?0x0:_0x48e31c[_0x21c1('0x1f')];var _0x219351=_0x314f8e?_0xb22534[_0x21c1('0x21')]:_0x48e31c[_0x21c1('0x1f')]+_0x48e31c['limit'];var _0x2bdf21;if(_0x219351>=_0x5b37a6){_0x219351=_0x5b37a6;_0x2bdf21=0xc8;}else{_0x2bdf21=0xce;}_0x40f999[_0x21c1('0x1d')](_0x2bdf21);return _0x40f999[_0x21c1('0x22')](_0x21c1('0x23'),_0x81d991+'-'+_0x219351+'/'+_0x5b37a6)[_0x21c1('0x1e')](_0xb22534);}return null;};}function patchUpdates(_0x22975c){return function(_0x3459c6){try{jsonpatch[_0x21c1('0x24')](_0x3459c6,_0x22975c,!![]);}catch(_0x2e3f9f){return BPromise[_0x21c1('0x25')](_0x2e3f9f);}return _0x3459c6[_0x21c1('0x26')]();};}function saveUpdates(_0x4bfe4a,_0x2d3acd){return function(_0x436efa){if(_0x436efa){return _0x436efa['update'](_0x4bfe4a)[_0x21c1('0x27')](function(_0x5a55fc){return _0x5a55fc;});}return null;};}function removeEntity(_0xeebf48,_0x4d1ce8){return function(_0x71f0ef){if(_0x71f0ef){return _0x71f0ef[_0x21c1('0x28')]()[_0x21c1('0x27')](function(){var _0x1ce5c8=_0x71f0ef['get']({'plain':!![]});var _0x9002a3=[{'name':_0x21c1('0x29'),'value':_0x21c1('0x2a'),'ignore':![]},{'name':_0x21c1('0x2b'),'value':_0x21c1('0x2c'),'ignore':![]}];var _0x263b65=_(_0x9002a3)[_0x21c1('0x2d')](_0x21c1('0x2e'))[_0x21c1('0x2f')]('value')[_0x21c1('0x30')]();if(_[_0x21c1('0x31')](_0x263b65,_0x1ce5c8[_0x21c1('0x32')])){return;}var _0x4a9c71=_[_0x21c1('0x33')](_0x9002a3,[_0x21c1('0x30'),_0x1ce5c8[_0x21c1('0x32')]])[_0x21c1('0x34')];return db[_0x21c1('0x35')]['destroy']({'where':{'type':_0x4a9c71,'resourceId':_0x1ce5c8['id']}})[_0x21c1('0x27')](function(){return _0x71f0ef;});})['then'](function(){_0xeebf48[_0x21c1('0x1d')](0xcc)[_0x21c1('0x36')]();});}};}function handleEntityNotFound(_0x4cc41f,_0x37b483){return function(_0x396c80){if(!_0x396c80){_0x4cc41f[_0x21c1('0x37')](0x194);}return _0x396c80;};}function handleError(_0xad5b7a,_0x5d056d){_0x5d056d=_0x5d056d||0x1f4;return function(_0x20e55e){logger[_0x21c1('0x38')](_0x20e55e[_0x21c1('0x39')]);if(_0x20e55e[_0x21c1('0x34')]){delete _0x20e55e[_0x21c1('0x34')];}_0xad5b7a['status'](_0x5d056d)['send'](_0x20e55e);};}exports['index']=function(_0x2c138f,_0x45592a){var _0x5ce126={},_0x414d45={},_0x155e13={'count':0x0,'rows':[]};var _0x4808a9=_[_0x21c1('0x2f')](db[_0x21c1('0x3a')][_0x21c1('0x3b')],function(_0x16d9d4){return{'name':_0x16d9d4[_0x21c1('0x3c')],'type':_0x16d9d4[_0x21c1('0x32')]['key']};});_0x414d45[_0x21c1('0x3d')]=_[_0x21c1('0x2f')](_0x4808a9,'name');_0x414d45[_0x21c1('0x3e')]=_['keys'](_0x2c138f['query']);_0x414d45[_0x21c1('0x3f')]=_['intersection'](_0x414d45['model'],_0x414d45[_0x21c1('0x3e')]);_0x5ce126[_0x21c1('0x40')]=_[_0x21c1('0x41')](_0x414d45['model'],qs[_0x21c1('0x42')](_0x2c138f[_0x21c1('0x3e')][_0x21c1('0x42')]));_0x5ce126['attributes']=_0x5ce126[_0x21c1('0x40')][_0x21c1('0x43')]?_0x5ce126[_0x21c1('0x40')]:_0x414d45[_0x21c1('0x3d')];if(!_0x2c138f['query'][_0x21c1('0x44')](_0x21c1('0x45'))){_0x5ce126[_0x21c1('0x46')]=qs['limit'](_0x2c138f[_0x21c1('0x3e')][_0x21c1('0x46')]);_0x5ce126['offset']=qs[_0x21c1('0x1f')](_0x2c138f[_0x21c1('0x3e')][_0x21c1('0x1f')]);}_0x5ce126[_0x21c1('0x47')]=qs[_0x21c1('0x48')](_0x2c138f['query'][_0x21c1('0x48')]);_0x5ce126[_0x21c1('0x49')]=qs['filters'](_[_0x21c1('0x4a')](_0x2c138f[_0x21c1('0x3e')],_0x414d45['filters']),_0x4808a9);if(_0x2c138f['query'][_0x21c1('0x2d')]){_0x5ce126['where']=_[_0x21c1('0x4b')](_0x5ce126['where'],{'$or':_[_0x21c1('0x2f')](_0x4808a9,function(_0x3835b4){if(_0x3835b4['type']!=='VIRTUAL'){var _0x113bd7={};_0x113bd7[_0x3835b4[_0x21c1('0x34')]]={'$like':'%'+_0x2c138f[_0x21c1('0x3e')][_0x21c1('0x2d')]+'%'};return _0x113bd7;}})});}_0x5ce126=_[_0x21c1('0x4b')]({},_0x5ce126,_0x2c138f['options']);var _0x1746ee={'where':_0x5ce126[_0x21c1('0x49')]};return db[_0x21c1('0x3a')][_0x21c1('0x21')](_0x1746ee)['then'](function(_0x2d1086){_0x155e13[_0x21c1('0x21')]=_0x2d1086;if(_0x2c138f['query'][_0x21c1('0x4c')]){_0x5ce126[_0x21c1('0x4d')]=[{'all':!![]}];}return db['VoiceQueue'][_0x21c1('0x4e')](_0x5ce126);})[_0x21c1('0x27')](function(_0x4804bd){_0x155e13[_0x21c1('0x4f')]=_0x4804bd;return _0x155e13;})[_0x21c1('0x27')](respondWithFilteredResult(_0x45592a,_0x5ce126))[_0x21c1('0x50')](handleError(_0x45592a,null));};exports[_0x21c1('0x51')]=function(_0xcd2e02,_0x3e21b7){var _0x200143={'raw':![],'where':{'id':_0xcd2e02[_0x21c1('0x52')]['id']}},_0x2fb6b1={};_0x2fb6b1[_0x21c1('0x3d')]=_[_0x21c1('0x53')](db[_0x21c1('0x3a')][_0x21c1('0x3b')]);_0x2fb6b1['query']=_[_0x21c1('0x53')](_0xcd2e02[_0x21c1('0x3e')]);_0x2fb6b1['filters']=_[_0x21c1('0x41')](_0x2fb6b1[_0x21c1('0x3d')],_0x2fb6b1[_0x21c1('0x3e')]);_0x200143[_0x21c1('0x40')]=_[_0x21c1('0x41')](_0x2fb6b1['model'],qs['fields'](_0xcd2e02[_0x21c1('0x3e')][_0x21c1('0x42')]));_0x200143[_0x21c1('0x40')]=_0x200143[_0x21c1('0x40')][_0x21c1('0x43')]?_0x200143['attributes']:_0x2fb6b1[_0x21c1('0x3d')];if(_0xcd2e02['query'][_0x21c1('0x4c')]){_0x200143['include']=[{'all':!![]}];}_0x200143=_['merge']({},_0x200143,_0xcd2e02['options']);return db[_0x21c1('0x3a')]['find'](_0x200143)[_0x21c1('0x27')](handleEntityNotFound(_0x3e21b7,null))[_0x21c1('0x27')](respondWithResult(_0x3e21b7,null))['catch'](handleError(_0x3e21b7,null));};exports[_0x21c1('0x54')]=function(_0x6a3f9a,_0x41a89a){return db[_0x21c1('0x3a')]['create'](_0x6a3f9a['body'],{})[_0x21c1('0x27')](function(_0x2fedb3){var _0x3dc80e=_0x6a3f9a['user'][_0x21c1('0x55')]({'plain':!![]});if(!_0x3dc80e)throw new Error(_0x21c1('0x56'));if(_0x3dc80e['role']===_0x21c1('0x57')){var _0x4dd029=_0x2fedb3[_0x21c1('0x55')]({'plain':!![]});var _0x327b3c=[{'name':_0x21c1('0x29'),'value':_0x21c1('0x2a')},{'name':'QueueCampaigns','value':_0x21c1('0x2c')}];var _0x5a00e1=_['find'](_0x327b3c,[_0x21c1('0x30'),_0x4dd029['type']])[_0x21c1('0x34')];return db[_0x21c1('0x58')][_0x21c1('0x33')]({'where':{'name':_0x5a00e1,'userProfileId':_0x3dc80e[_0x21c1('0x59')]},'raw':!![]})[_0x21c1('0x27')](function(_0x5ac35a){if(_0x5ac35a&&_0x5ac35a['autoAssociation']===0x0){return db[_0x21c1('0x35')][_0x21c1('0x54')]({'name':_0x4dd029[_0x21c1('0x34')],'resourceId':_0x4dd029['id'],'type':_0x5ac35a['name'],'sectionId':_0x5ac35a['id']},{})[_0x21c1('0x27')](function(){return _0x2fedb3;});}else{return _0x2fedb3;}})[_0x21c1('0x50')](function(_0x178461){logger[_0x21c1('0x38')](_0x21c1('0x5a'),_0x178461);throw _0x178461;});}return _0x2fedb3;})[_0x21c1('0x27')](respondWithResult(_0x41a89a,0xc9))['catch'](handleError(_0x41a89a,null));};exports[_0x21c1('0x5b')]=function(_0xde8078,_0x57e436){var _0x41f01a={'where':{'id':_0xde8078[_0x21c1('0x52')]['id']}},_0x1ada8f={};_0x1ada8f['model']=_[_0x21c1('0x53')](db[_0x21c1('0x3a')]['rawAttributes']);_0x41f01a[_0x21c1('0x40')]=_[_0x21c1('0x41')](_0x1ada8f[_0x21c1('0x3d')],qs['fields'](_0xde8078[_0x21c1('0x3e')][_0x21c1('0x42')]));_0x41f01a[_0x21c1('0x40')]=_0x41f01a[_0x21c1('0x40')][_0x21c1('0x43')]?_0x41f01a[_0x21c1('0x40')]:_0x1ada8f[_0x21c1('0x3d')];if(_0xde8078[_0x21c1('0x3e')][_0x21c1('0x4c')]){_0x41f01a[_0x21c1('0x4d')]=[{'all':!![]}];}_0x41f01a=_['merge']({},_0x41f01a,_0xde8078['options']);return db[_0x21c1('0x3a')][_0x21c1('0x33')](_0x41f01a)[_0x21c1('0x27')](handleEntityNotFound(_0x57e436,null))[_0x21c1('0x27')](function(_0x10ddf2){if(_0x10ddf2){var _0x513e3f=_0x10ddf2[_0x21c1('0x55')]({'plain':!![]});_0x513e3f=qs[_0x21c1('0x5c')](_0x513e3f,['id',_0x21c1('0x5d'),_0x21c1('0x5e')]);_0xde8078['body']=_[_0x21c1('0x5c')](_0xde8078[_0x21c1('0x5f')],['id','createdAt',_0x21c1('0x5e')]);return db[_0x21c1('0x3a')]['create'](_['merge'](_0x513e3f,_0xde8078['body']),{'include':_0xde8078[_0x21c1('0x3e')][_0x21c1('0x4c')]?[{'all':!![]}]:undefined})[_0x21c1('0x27')](function(_0x5b35fa){var _0x3ce421=_0xde8078[_0x21c1('0x57')][_0x21c1('0x55')]({'plain':!![]});if(!_0x3ce421)throw new Error(_0x21c1('0x56'));if(_0x3ce421['role']===_0x21c1('0x57')){var _0x23aa74=_0x5b35fa[_0x21c1('0x55')]({'plain':!![]});var _0x526d70=[{'name':_0x21c1('0x29'),'value':'inbound'},{'name':_0x21c1('0x2b'),'value':'outbound'}];var _0x4a29f7=_[_0x21c1('0x33')](_0x526d70,[_0x21c1('0x30'),_0x23aa74['type']])[_0x21c1('0x34')];return db[_0x21c1('0x58')][_0x21c1('0x33')]({'where':{'name':_0x4a29f7,'userProfileId':_0x3ce421[_0x21c1('0x59')]},'raw':!![]})[_0x21c1('0x27')](function(_0x5f5aa3){if(_0x5f5aa3&&_0x5f5aa3['autoAssociation']===0x0){return db[_0x21c1('0x35')][_0x21c1('0x54')]({'name':_0x23aa74[_0x21c1('0x34')],'resourceId':_0x23aa74['id'],'type':_0x5f5aa3[_0x21c1('0x34')],'sectionId':_0x5f5aa3['id']},{})[_0x21c1('0x27')](function(){return _0x5b35fa;});}else{return _0x5b35fa;}})[_0x21c1('0x50')](function(_0x3e9efe){logger[_0x21c1('0x38')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3e9efe);throw _0x3e9efe;});}return _0x5b35fa;});}})[_0x21c1('0x27')](respondWithResult(_0x57e436,0xc9))['catch'](handleError(_0x57e436,null));};exports[_0x21c1('0x60')]=function(_0x395d92,_0x1af8a6){if(_0x395d92['body']['id']){delete _0x395d92[_0x21c1('0x5f')]['id'];}return db[_0x21c1('0x3a')]['find']({'where':{'id':_0x395d92['params']['id']}})['then'](handleEntityNotFound(_0x1af8a6,null))[_0x21c1('0x27')](saveUpdates(_0x395d92[_0x21c1('0x5f')],null))['then'](respondWithResult(_0x1af8a6,null))['catch'](handleError(_0x1af8a6,null));};exports['destroy']=function(_0x546cdd,_0x2818c3){return db[_0x21c1('0x3a')][_0x21c1('0x33')]({'where':{'id':_0x546cdd[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0x2818c3,null))[_0x21c1('0x27')](removeEntity(_0x2818c3,null))[_0x21c1('0x50')](handleError(_0x2818c3,null));};exports[_0x21c1('0x61')]=function(_0x519abc,_0x16170a,_0x436f78){var _0x4d1229={'raw':![],'where':{}};var _0x54a495={};var _0x2c5bcd={'count':0x0,'rows':[]};return db[_0x21c1('0x3a')]['findOne']({'where':{'id':_0x519abc['params']['id']}})['then'](handleEntityNotFound(_0x16170a,null))['then'](function(_0x1e9ccb){if(_0x1e9ccb){_0x54a495[_0x21c1('0x3d')]=_['keys'](db[_0x21c1('0x62')][_0x21c1('0x3b')]);_0x54a495[_0x21c1('0x3e')]=_[_0x21c1('0x53')](_0x519abc[_0x21c1('0x3e')]);_0x54a495[_0x21c1('0x3f')]=_['intersection'](_0x54a495['model'],_0x54a495[_0x21c1('0x3e')]);_0x4d1229[_0x21c1('0x40')]=_['intersection'](_0x54a495['model'],qs[_0x21c1('0x42')](_0x519abc[_0x21c1('0x3e')]['fields']));_0x4d1229[_0x21c1('0x40')]=_0x4d1229[_0x21c1('0x40')]['length']?_0x4d1229[_0x21c1('0x40')]:_0x54a495['model'];if(!_0x519abc[_0x21c1('0x3e')][_0x21c1('0x44')](_0x21c1('0x45'))){_0x4d1229[_0x21c1('0x46')]=qs['limit'](_0x519abc[_0x21c1('0x3e')]['limit']);_0x4d1229[_0x21c1('0x1f')]=qs[_0x21c1('0x1f')](_0x519abc[_0x21c1('0x3e')][_0x21c1('0x1f')]);}_0x4d1229[_0x21c1('0x47')]=qs[_0x21c1('0x48')](_0x519abc['query']['sort']);_0x4d1229[_0x21c1('0x49')]=qs[_0x21c1('0x3f')](_[_0x21c1('0x4a')](_0x519abc[_0x21c1('0x3e')],_0x54a495[_0x21c1('0x3f')]));_0x4d1229[_0x21c1('0x49')][_0x21c1('0x63')]=_0x1e9ccb['id'];if(_0x519abc['query'][_0x21c1('0x2d')]){_0x4d1229[_0x21c1('0x49')]=_[_0x21c1('0x4b')](_0x4d1229[_0x21c1('0x49')],{'$or':_[_0x21c1('0x2f')](_0x4d1229[_0x21c1('0x40')],function(_0x55fb72){var _0x12c093={};_0x12c093[_0x55fb72]={'$like':'%'+_0x519abc[_0x21c1('0x3e')][_0x21c1('0x2d')]+'%'};return _0x12c093;})});}_0x4d1229=_[_0x21c1('0x4b')]({},_0x4d1229,_0x519abc[_0x21c1('0x64')]);return db[_0x21c1('0x62')]['count']({'where':_0x4d1229[_0x21c1('0x49')]})[_0x21c1('0x27')](function(_0x21908b){_0x2c5bcd[_0x21c1('0x21')]=_0x21908b;if(_0x519abc[_0x21c1('0x3e')]['includeAll']){_0x4d1229['include']=[{'all':!![]}];}return db['CmHopper'][_0x21c1('0x4e')](_0x4d1229);})[_0x21c1('0x27')](function(_0x47a9f7){_0x2c5bcd[_0x21c1('0x4f')]=_0x47a9f7;return _0x2c5bcd;});}})[_0x21c1('0x27')](respondWithFilteredResult(_0x16170a,_0x4d1229))[_0x21c1('0x50')](handleError(_0x16170a,null));};exports[_0x21c1('0x65')]=function(_0x10783b,_0x36adcd,_0x520077){var _0x14ca93={'raw':!![],'where':{}};var _0x514afb={};var _0x150f68={'count':0x0,'rows':[]};return db[_0x21c1('0x3a')][_0x21c1('0x66')]({'where':{'id':_0x10783b[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0x36adcd,null))[_0x21c1('0x27')](function(_0x2d4a2c){if(_0x2d4a2c){_0x514afb[_0x21c1('0x3d')]=_[_0x21c1('0x53')](db[_0x21c1('0x67')]['rawAttributes']);_0x514afb[_0x21c1('0x3e')]=_[_0x21c1('0x53')](_0x10783b[_0x21c1('0x3e')]);_0x514afb[_0x21c1('0x3f')]=_[_0x21c1('0x41')](_0x514afb['model'],_0x514afb[_0x21c1('0x3e')]);_0x14ca93['attributes']=_[_0x21c1('0x41')](_0x514afb['model'],qs[_0x21c1('0x42')](_0x10783b['query'][_0x21c1('0x42')]));_0x14ca93[_0x21c1('0x40')]=_0x14ca93[_0x21c1('0x40')]['length']?_0x14ca93[_0x21c1('0x40')]:_0x514afb[_0x21c1('0x3d')];if(!_0x10783b[_0x21c1('0x3e')][_0x21c1('0x44')](_0x21c1('0x45'))){_0x14ca93[_0x21c1('0x46')]=qs['limit'](_0x10783b[_0x21c1('0x3e')][_0x21c1('0x46')]);_0x14ca93[_0x21c1('0x1f')]=qs[_0x21c1('0x1f')](_0x10783b[_0x21c1('0x3e')][_0x21c1('0x1f')]);}_0x14ca93[_0x21c1('0x47')]=qs[_0x21c1('0x48')](_0x10783b['query']['sort']);_0x14ca93['where']=qs[_0x21c1('0x3f')](_[_0x21c1('0x4a')](_0x10783b['query'],_0x514afb['filters']));_0x14ca93['where'][_0x21c1('0x63')]=_0x2d4a2c['id'];if(_0x10783b[_0x21c1('0x3e')][_0x21c1('0x2d')]){_0x14ca93['where']=_[_0x21c1('0x4b')](_0x14ca93[_0x21c1('0x49')],{'$or':_[_0x21c1('0x2f')](_0x14ca93[_0x21c1('0x40')],function(_0x34a6f3){var _0x26418b={};_0x26418b[_0x34a6f3]={'$like':'%'+_0x10783b[_0x21c1('0x3e')][_0x21c1('0x2d')]+'%'};return _0x26418b;})});}_0x14ca93=_[_0x21c1('0x4b')]({},_0x14ca93,_0x10783b['options']);return db[_0x21c1('0x67')][_0x21c1('0x21')]({'where':_0x14ca93[_0x21c1('0x49')]})[_0x21c1('0x27')](function(_0x184cee){_0x150f68[_0x21c1('0x21')]=_0x184cee;if(_0x10783b[_0x21c1('0x3e')]['includeAll']){_0x14ca93[_0x21c1('0x4d')]=[{'all':!![]}];}return db[_0x21c1('0x67')][_0x21c1('0x4e')](_0x14ca93);})[_0x21c1('0x27')](function(_0x28125c){_0x150f68[_0x21c1('0x4f')]=_0x28125c;return _0x150f68;});}})['then'](respondWithFilteredResult(_0x36adcd,_0x14ca93))[_0x21c1('0x50')](handleError(_0x36adcd,null));};exports[_0x21c1('0x68')]=function(_0x31f27d,_0x536f4a,_0x1e86f1){var _0x5c16ca={'raw':!![],'where':{}};var _0x20d482={};var _0x1d96fc={'count':0x0,'rows':[]};return db[_0x21c1('0x3a')][_0x21c1('0x66')]({'where':{'id':_0x31f27d[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0x536f4a,null))[_0x21c1('0x27')](function(_0x3c0591){if(_0x3c0591){_0x20d482[_0x21c1('0x3d')]=_[_0x21c1('0x53')](db['CmHopperFinal'][_0x21c1('0x3b')]);_0x20d482[_0x21c1('0x3e')]=_[_0x21c1('0x53')](_0x31f27d['query']);_0x20d482[_0x21c1('0x3f')]=_[_0x21c1('0x41')](_0x20d482[_0x21c1('0x3d')],_0x20d482[_0x21c1('0x3e')]);_0x5c16ca[_0x21c1('0x40')]=_['intersection'](_0x20d482['model'],qs[_0x21c1('0x42')](_0x31f27d['query'][_0x21c1('0x42')]));_0x5c16ca[_0x21c1('0x40')]=_0x5c16ca[_0x21c1('0x40')][_0x21c1('0x43')]?_0x5c16ca[_0x21c1('0x40')]:_0x20d482['model'];if(!_0x31f27d[_0x21c1('0x3e')][_0x21c1('0x44')]('nolimit')){_0x5c16ca[_0x21c1('0x46')]=qs[_0x21c1('0x46')](_0x31f27d['query'][_0x21c1('0x46')]);_0x5c16ca[_0x21c1('0x1f')]=qs[_0x21c1('0x1f')](_0x31f27d['query'][_0x21c1('0x1f')]);}_0x5c16ca['order']=qs[_0x21c1('0x48')](_0x31f27d['query']['sort']);_0x5c16ca[_0x21c1('0x49')]=qs['filters'](_[_0x21c1('0x4a')](_0x31f27d[_0x21c1('0x3e')],_0x20d482[_0x21c1('0x3f')]));_0x5c16ca['where'][_0x21c1('0x63')]=_0x3c0591['id'];if(_0x31f27d[_0x21c1('0x3e')][_0x21c1('0x2d')]){_0x5c16ca['where']=_[_0x21c1('0x4b')](_0x5c16ca[_0x21c1('0x49')],{'$or':_[_0x21c1('0x2f')](_0x5c16ca[_0x21c1('0x40')],function(_0x5ad47f){var _0x12a758={};_0x12a758[_0x5ad47f]={'$like':'%'+_0x31f27d[_0x21c1('0x3e')][_0x21c1('0x2d')]+'%'};return _0x12a758;})});}_0x5c16ca=_[_0x21c1('0x4b')]({},_0x5c16ca,_0x31f27d[_0x21c1('0x64')]);return db[_0x21c1('0x69')][_0x21c1('0x21')]({'where':_0x5c16ca['where']})[_0x21c1('0x27')](function(_0x5b722a){_0x1d96fc[_0x21c1('0x21')]=_0x5b722a;if(_0x31f27d['query'][_0x21c1('0x4c')]){_0x5c16ca['include']=[{'all':!![]}];}return db[_0x21c1('0x69')]['findAll'](_0x5c16ca);})[_0x21c1('0x27')](function(_0x559473){_0x1d96fc[_0x21c1('0x4f')]=_0x559473;return _0x1d96fc;});}})[_0x21c1('0x27')](respondWithFilteredResult(_0x536f4a,_0x5c16ca))[_0x21c1('0x50')](handleError(_0x536f4a,null));};exports['getHopperBlacks']=function(_0x3e1ff7,_0x119277,_0x30167b){var _0x3ba82b={'raw':!![],'where':{}};var _0x266dda={};var _0x327530={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x21c1('0x66')]({'where':{'id':_0x3e1ff7[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0x119277,null))[_0x21c1('0x27')](function(_0x16d32d){if(_0x16d32d){_0x266dda['model']=_[_0x21c1('0x53')](db['CmHopperBlack']['rawAttributes']);_0x266dda['query']=_[_0x21c1('0x53')](_0x3e1ff7[_0x21c1('0x3e')]);_0x266dda['filters']=_[_0x21c1('0x41')](_0x266dda['model'],_0x266dda['query']);_0x3ba82b[_0x21c1('0x40')]=_[_0x21c1('0x41')](_0x266dda[_0x21c1('0x3d')],qs[_0x21c1('0x42')](_0x3e1ff7[_0x21c1('0x3e')]['fields']));_0x3ba82b[_0x21c1('0x40')]=_0x3ba82b['attributes'][_0x21c1('0x43')]?_0x3ba82b['attributes']:_0x266dda['model'];if(!_0x3e1ff7['query'][_0x21c1('0x44')](_0x21c1('0x45'))){_0x3ba82b[_0x21c1('0x46')]=qs[_0x21c1('0x46')](_0x3e1ff7[_0x21c1('0x3e')][_0x21c1('0x46')]);_0x3ba82b[_0x21c1('0x1f')]=qs['offset'](_0x3e1ff7[_0x21c1('0x3e')][_0x21c1('0x1f')]);}_0x3ba82b[_0x21c1('0x47')]=qs['sort'](_0x3e1ff7[_0x21c1('0x3e')][_0x21c1('0x48')]);_0x3ba82b[_0x21c1('0x49')]=qs[_0x21c1('0x3f')](_[_0x21c1('0x4a')](_0x3e1ff7[_0x21c1('0x3e')],_0x266dda[_0x21c1('0x3f')]));_0x3ba82b[_0x21c1('0x49')][_0x21c1('0x63')]=_0x16d32d['id'];if(_0x3e1ff7[_0x21c1('0x3e')][_0x21c1('0x2d')]){_0x3ba82b['where']=_[_0x21c1('0x4b')](_0x3ba82b['where'],{'$or':_[_0x21c1('0x2f')](_0x3ba82b[_0x21c1('0x40')],function(_0x47195a){var _0x59081b={};_0x59081b[_0x47195a]={'$like':'%'+_0x3e1ff7['query'][_0x21c1('0x2d')]+'%'};return _0x59081b;})});}_0x3ba82b=_[_0x21c1('0x4b')]({},_0x3ba82b,_0x3e1ff7[_0x21c1('0x64')]);return db[_0x21c1('0x6a')][_0x21c1('0x21')]({'where':_0x3ba82b[_0x21c1('0x49')]})['then'](function(_0xad2256){_0x327530[_0x21c1('0x21')]=_0xad2256;if(_0x3e1ff7[_0x21c1('0x3e')]['includeAll']){_0x3ba82b[_0x21c1('0x4d')]=[{'all':!![]}];}return db[_0x21c1('0x6a')]['findAll'](_0x3ba82b);})['then'](function(_0x547636){_0x327530[_0x21c1('0x4f')]=_0x547636;return _0x327530;});}})[_0x21c1('0x27')](respondWithFilteredResult(_0x119277,_0x3ba82b))['catch'](handleError(_0x119277,null));};exports[_0x21c1('0x6b')]=function(_0x3a15ba,_0x276581,_0x5311c5){var _0x3be094={};var _0x51e93f={};var _0x550891;var _0xee796c;return db[_0x21c1('0x3a')][_0x21c1('0x66')]({'where':{'id':_0x3a15ba[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0x276581,null))[_0x21c1('0x27')](function(_0x181eff){if(_0x181eff){_0x550891=_0x181eff;_0x51e93f[_0x21c1('0x3d')]=_[_0x21c1('0x53')](db[_0x21c1('0x6c')][_0x21c1('0x3b')]);_0x51e93f[_0x21c1('0x3e')]=_['keys'](_0x3a15ba[_0x21c1('0x3e')]);_0x51e93f['filters']=_[_0x21c1('0x41')](_0x51e93f['model'],_0x51e93f[_0x21c1('0x3e')]);_0x3be094[_0x21c1('0x40')]=_[_0x21c1('0x41')](_0x51e93f[_0x21c1('0x3d')],qs[_0x21c1('0x42')](_0x3a15ba['query'][_0x21c1('0x42')]));_0x3be094[_0x21c1('0x40')]=_0x3be094[_0x21c1('0x40')]['length']?_0x3be094[_0x21c1('0x40')]:_0x51e93f['model'];_0x3be094[_0x21c1('0x47')]=qs[_0x21c1('0x48')](_0x3a15ba[_0x21c1('0x3e')]['sort']);_0x3be094[_0x21c1('0x49')]=qs[_0x21c1('0x3f')](_[_0x21c1('0x4a')](_0x3a15ba[_0x21c1('0x3e')],_0x51e93f[_0x21c1('0x3f')]));if(_0x3a15ba['query'][_0x21c1('0x2d')]){_0x3be094[_0x21c1('0x49')]=_[_0x21c1('0x4b')](_0x3be094[_0x21c1('0x49')],{'$or':_[_0x21c1('0x2f')](_0x3be094[_0x21c1('0x40')],function(_0xd312ea){var _0x3ab2b8={};_0x3ab2b8[_0xd312ea]={'$like':'%'+_0x3a15ba['query']['filter']+'%'};return _0x3ab2b8;})});}_0x3be094=_[_0x21c1('0x4b')]({},_0x3be094,_0x3a15ba[_0x21c1('0x64')]);return _0x550891[_0x21c1('0x6b')](_0x3be094);}})[_0x21c1('0x27')](function(_0x31bbb7){if(_0x31bbb7){_0xee796c=_0x31bbb7[_0x21c1('0x43')];if(!_0x3a15ba['query'][_0x21c1('0x44')](_0x21c1('0x45'))){_0x3be094[_0x21c1('0x46')]=qs[_0x21c1('0x46')](_0x3a15ba['query'][_0x21c1('0x46')]);_0x3be094[_0x21c1('0x1f')]=qs['offset'](_0x3a15ba[_0x21c1('0x3e')][_0x21c1('0x1f')]);}return _0x550891[_0x21c1('0x6b')](_0x3be094);}})[_0x21c1('0x27')](function(_0x1fcf8b){if(_0x1fcf8b){return _0x1fcf8b?{'count':_0xee796c,'rows':_0x1fcf8b}:null;}})[_0x21c1('0x27')](respondWithResult(_0x276581,null))[_0x21c1('0x50')](handleError(_0x276581,null));};exports['addTeams']=function(_0xd0007,_0xb73f5e,_0x5a37e8){var _0x55edad=_0xd0007[_0x21c1('0x5f')][_0x21c1('0x6d')];var _0x52b30b=_[_0x21c1('0x2f')](_0x55edad,'id');return db['Team'][_0x21c1('0x4e')]({'where':{'id':_0x52b30b},'attributes':['id'],'include':[{'model':db['User'],'as':_0x21c1('0x6e'),'attributes':['id','name',_0x21c1('0x6f'),_0x21c1('0x70'),'interface'],'raw':!![]}]})[_0x21c1('0x27')](function(_0x244880){if(_0x244880){var _0x2a6def=_[_0x21c1('0x71')](_0x244880,function(_0x21577e){var _0x5464f8=_0x21577e['get']({'plain':!![]});_0x5464f8[_0x21c1('0x6e')][_0x21c1('0x72')](function(_0x473dff){_0x473dff[_0x21c1('0x73')]=_[_0x21c1('0x33')](_0x55edad,{'id':_0x5464f8['id']})[_0x21c1('0x73')];});return _0x5464f8[_0x21c1('0x6e')];});return db[_0x21c1('0x3a')][_0x21c1('0x33')]({'where':{'id':_0xd0007[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](function(_0x546a6c){return db[_0x21c1('0x74')]['transaction'](function(_0x218476){return _0x546a6c[_0x21c1('0x75')](_0x52b30b,{'transaction':_0x218476})['then'](function(){return BPromise[_0x21c1('0x76')](_0x55edad,function(_0x596fad){return db[_0x21c1('0x77')][_0x21c1('0x78')]({'TeamId':_0x596fad['id'],'VoiceQueueId':_0xd0007[_0x21c1('0x52')]['id'],'penalty':_0x596fad[_0x21c1('0x73')]},{'transaction':_0x218476});});})['then'](function(){return BPromise[_0x21c1('0x76')](_0x2a6def,function(_0x3e8de7){return db[_0x21c1('0x79')][_0x21c1('0x7a')]({'where':{'UserId':_0x3e8de7['id'],'VoiceQueueId':_0xd0007[_0x21c1('0x52')]['id']},'defaults':{'penalty':_0x3e8de7['penalty']},'transaction':_0x218476});});})[_0x21c1('0x27')](function(){return BPromise[_0x21c1('0x76')](_['filter'](_0x2a6def,{'online':!![]}),function(_0x56958a){return db['UserVoiceQueueRt']['upsert']({'membername':_0x56958a[_0x21c1('0x34')],'UserId':_0x56958a['id'],'queue_name':_0x546a6c[_0x21c1('0x34')],'VoiceQueueId':_0x546a6c['id'],'interface':_['isNil'](_0x56958a['interface'])?util['format'](_0x21c1('0x7b'),_0x56958a[_0x21c1('0x34')]):_0x56958a[_0x21c1('0x7c')],'paused':_0x56958a[_0x21c1('0x70')]||![],'penalty':_0x56958a[_0x21c1('0x73')]},{'transaction':_0x218476});});})['then'](function(){_0x2a6def['forEach'](function(_0x3074f6){socket[_0x21c1('0x7d')](_0x21c1('0x7e'),{'UserId':_0x3074f6['id'],'VoiceQueueId':_0x546a6c['id']});});});});});}})['then'](respondWithStatusCode(_0xb73f5e,null))[_0x21c1('0x50')](handleError(_0xb73f5e,null));};exports[_0x21c1('0x7f')]=function(_0x4bbd54,_0x5a9b7d,_0x4b0df9){return db[_0x21c1('0x6c')][_0x21c1('0x4e')]({'where':{'id':_0x4bbd54[_0x21c1('0x3e')]['ids']},'attributes':['id'],'include':[{'model':db[_0x21c1('0x80')],'as':_0x21c1('0x6e'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5a9b7d,null))[_0x21c1('0x27')](function(_0x13a174){var _0x584224=_['map'](_0x13a174,'id');var _0x9dc6d=[];var _0x509603=[];var _0x1a7fbd=squel[_0x21c1('0x81')]();_0x1a7fbd[_0x21c1('0x82')]('tq.TeamId')['from'](_0x21c1('0x83'),'tq')['join'](_0x21c1('0x84'),'ut',_0x21c1('0x85'))[_0x21c1('0x49')]('VoiceQueueId\x20=\x20?',_0x4bbd54[_0x21c1('0x52')]['id']);for(var _0x2b59e2=0x0;_0x2b59e2<_0x13a174[_0x21c1('0x43')];_0x2b59e2+=0x1){let _0x1b4056=_0x13a174[_0x2b59e2];for(var _0xf25af9=0x0;_0xf25af9<_0x1b4056['Agents'][_0x21c1('0x43')];_0xf25af9+=0x1){let _0x51f9f4=_0x1b4056['Agents'][_0xf25af9];var _0xd6aa2d=_0x1a7fbd[_0x21c1('0x5b')]();_0xd6aa2d[_0x21c1('0x49')](_0x21c1('0x86'),_0x51f9f4['id']);_0x509603[_0x21c1('0x87')](db[_0x21c1('0x74')]['query'](_0xd6aa2d[_0x21c1('0x88')](),{'type':db[_0x21c1('0x74')][_0x21c1('0x89')][_0x21c1('0x8a')]})[_0x21c1('0x27')](function(_0x358006){if(_0x358006[_0x21c1('0x43')]===0x1){return _0x51f9f4['id'];}else{var _0x1b7d62=_[_0x21c1('0x8b')](_[_0x21c1('0x2f')](_0x358006,_0x21c1('0x8c')),function(_0x2293cd){return _[_0x21c1('0x31')](_0x584224,_0x2293cd);});if(_0x1b7d62){return _0x51f9f4['id'];}}}));}}return BPromise[_0x21c1('0x8d')](_0x509603)['then'](function(_0x1e2d2f){_0x9dc6d=_(_0x9dc6d)['union'](_0x1e2d2f)[_0x21c1('0x8e')]()['value']();return db[_0x21c1('0x3a')][_0x21c1('0x33')]({'where':{'id':_0x4bbd54['params']['id']}})[_0x21c1('0x27')](function(_0x583716){return db[_0x21c1('0x74')][_0x21c1('0x8f')](function(_0x1772af){return _0x583716[_0x21c1('0x7f')](_0x4bbd54[_0x21c1('0x3e')][_0x21c1('0x90')],{'transaction':_0x1772af})[_0x21c1('0x27')](function(){if(!_[_0x21c1('0x91')](_0x9dc6d)){return _0x583716[_0x21c1('0x92')](_0x9dc6d,{'transaction':_0x1772af})[_0x21c1('0x27')](function(){return db['UserVoiceQueueRt'][_0x21c1('0x28')]({'where':{'VoiceQueueId':_0x4bbd54[_0x21c1('0x52')]['id'],'UserId':_0x9dc6d},'transaction':_0x1772af});});}})[_0x21c1('0x27')](function(){_0x9dc6d[_0x21c1('0x72')](function(_0x24454a){socket['emit'](_0x21c1('0x93'),{'UserId':_0x24454a,'VoiceQueueId':_0x583716['id']});});});});});});})[_0x21c1('0x27')](respondWithStatusCode(_0x5a9b7d,null))[_0x21c1('0x50')](handleError(_0x5a9b7d,null));};exports[_0x21c1('0x94')]=function(_0x5b7948,_0xce6145,_0xebf33){var _0x308dee,_0xdeed1;return db['VoiceQueue'][_0x21c1('0x33')]({'where':{'id':_0x5b7948[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0xce6145,null))[_0x21c1('0x27')](function(_0x18e97b){if(_0x18e97b){_0xdeed1=_0x18e97b;return _0x18e97b[_0x21c1('0x94')](_0x5b7948['body'][_0x21c1('0x90')],_[_0x21c1('0x5c')](_0x5b7948[_0x21c1('0x5f')],[_0x21c1('0x90'),'id'])||{})['spread'](function(_0x22f24e){for(var _0x1a32de=0x0;_0x1a32de<_0x5b7948[_0x21c1('0x5f')]['ids']['length'];_0x1a32de+=0x1){socket[_0x21c1('0x7d')](_0x21c1('0x7e'),{'UserId':Number(_0x5b7948['body']['ids'][_0x1a32de]),'VoiceQueueId':Number(_0x5b7948[_0x21c1('0x52')]['id'])});}return _0x22f24e;});}})[_0x21c1('0x27')](function(_0x2ee057){_0x308dee=_0x2ee057||[];if(_0xdeed1){return db[_0x21c1('0x80')][_0x21c1('0x4e')]({'where':{'id':_0x5b7948[_0x21c1('0x5f')][_0x21c1('0x90')]},'attributes':['id',_0x21c1('0x34'),'online',_0x21c1('0x70'),_0x21c1('0x7c')],'raw':!![]});}})[_0x21c1('0x27')](function(_0x21d3db){if(!_[_0x21c1('0x91')](_0x21d3db)){var _0x1bfe23=[];for(var _0x1aacae=0x0;_0x1aacae<_0x21d3db[_0x21c1('0x43')];_0x1aacae++){if(_0x21d3db[_0x1aacae]['online']){_0x1bfe23[_0x21c1('0x87')](db[_0x21c1('0x95')][_0x21c1('0x78')]({'membername':_0x21d3db[_0x1aacae]['name'],'UserId':_0x21d3db[_0x1aacae]['id'],'queue_name':_0xdeed1[_0x21c1('0x34')],'VoiceQueueId':_0xdeed1['id'],'interface':_['isNil'](_0x21d3db[_0x1aacae]['interface'])?util[_0x21c1('0x96')](_0x21c1('0x7b'),_0x21d3db[_0x1aacae][_0x21c1('0x34')]):_0x21d3db[_0x1aacae][_0x21c1('0x7c')],'paused':_0x21d3db[_0x1aacae][_0x21c1('0x70')]||![],'penalty':_0x5b7948[_0x21c1('0x5f')][_0x21c1('0x73')]||0x0}));}}return BPromise['all'](_0x1bfe23);}})[_0x21c1('0x27')](function(){return _0x308dee;})['then'](respondWithResult(_0xce6145,null))[_0x21c1('0x50')](handleError(_0xce6145,null));};exports[_0x21c1('0x92')]=function(_0x16b64b,_0x1429fc,_0x24339b){return db[_0x21c1('0x3a')]['find']({'where':{'id':_0x16b64b[_0x21c1('0x52')]['id']}})['then'](handleEntityNotFound(_0x1429fc,null))['then'](function(_0x1a87d9){if(_0x1a87d9){return _0x1a87d9[_0x21c1('0x92')](_0x16b64b['query'][_0x21c1('0x90')])[_0x21c1('0x27')](function(){if(_[_0x21c1('0x97')](_0x16b64b[_0x21c1('0x3e')][_0x21c1('0x90')])){for(var _0x2accb0=0x0;_0x2accb0<_0x16b64b[_0x21c1('0x3e')][_0x21c1('0x90')]['length'];_0x2accb0+=0x1){socket[_0x21c1('0x7d')](_0x21c1('0x93'),{'UserId':Number(_0x16b64b[_0x21c1('0x3e')][_0x21c1('0x90')][_0x2accb0]),'VoiceQueueId':Number(_0x16b64b[_0x21c1('0x52')]['id'])});}}else{socket[_0x21c1('0x7d')](_0x21c1('0x93'),{'UserId':Number(_0x16b64b[_0x21c1('0x3e')][_0x21c1('0x90')]),'VoiceQueueId':Number(_0x16b64b[_0x21c1('0x52')]['id'])});}});}})['then'](function(_0x5df564){return db[_0x21c1('0x95')][_0x21c1('0x28')]({'where':{'VoiceQueueId':_0x16b64b[_0x21c1('0x52')]['id'],'UserId':_0x16b64b[_0x21c1('0x3e')][_0x21c1('0x90')]}})[_0x21c1('0x27')](function(){return _0x5df564;});})['then'](respondWithStatusCode(_0x1429fc,null))[_0x21c1('0x50')](handleError(_0x1429fc,null));};exports[_0x21c1('0x98')]=function(_0x324384,_0x390c3c,_0x42b1d6){var _0x35866d={};var _0x241339={};var _0x26d77b;var _0x282fb3;return db[_0x21c1('0x3a')][_0x21c1('0x66')]({'where':{'id':_0x324384[_0x21c1('0x52')]['id']}})['then'](handleEntityNotFound(_0x390c3c,null))[_0x21c1('0x27')](function(_0x4d2703){if(_0x4d2703){_0x26d77b=_0x4d2703;_0x241339[_0x21c1('0x3d')]=_[_0x21c1('0x53')](db[_0x21c1('0x80')]['rawAttributes']);_0x241339['query']=_[_0x21c1('0x53')](_0x324384[_0x21c1('0x3e')]);_0x241339[_0x21c1('0x3f')]=_['intersection'](_0x241339[_0x21c1('0x3d')],_0x241339['query']);_0x35866d[_0x21c1('0x40')]=_[_0x21c1('0x41')](_0x241339[_0x21c1('0x3d')],qs[_0x21c1('0x42')](_0x324384['query'][_0x21c1('0x42')]));_0x35866d[_0x21c1('0x40')]=_0x35866d[_0x21c1('0x40')][_0x21c1('0x43')]?_0x35866d[_0x21c1('0x40')]:_0x241339['model'];_0x35866d[_0x21c1('0x47')]=qs[_0x21c1('0x48')](_0x324384[_0x21c1('0x3e')]['sort']);_0x35866d[_0x21c1('0x49')]=qs['filters'](_[_0x21c1('0x4a')](_0x324384[_0x21c1('0x3e')],_0x241339['filters']));if(_0x324384[_0x21c1('0x3e')][_0x21c1('0x2d')]){_0x35866d[_0x21c1('0x49')]=_[_0x21c1('0x4b')](_0x35866d['where'],{'$or':_['map'](_0x35866d[_0x21c1('0x40')],function(_0x4d3b4d){var _0x228c02={};_0x228c02[_0x4d3b4d]={'$like':'%'+_0x324384[_0x21c1('0x3e')]['filter']+'%'};return _0x228c02;})});}_0x35866d=_[_0x21c1('0x4b')]({},_0x35866d,_0x324384[_0x21c1('0x64')]);return _0x26d77b[_0x21c1('0x98')](_0x35866d);}})['then'](function(_0x3e690e){if(_0x3e690e){_0x282fb3=_0x3e690e[_0x21c1('0x43')];if(!_0x324384['query'][_0x21c1('0x44')]('nolimit')){_0x35866d[_0x21c1('0x46')]=qs[_0x21c1('0x46')](_0x324384[_0x21c1('0x3e')][_0x21c1('0x46')]);_0x35866d[_0x21c1('0x1f')]=qs[_0x21c1('0x1f')](_0x324384[_0x21c1('0x3e')][_0x21c1('0x1f')]);}return _0x26d77b['getAgents'](_0x35866d);}})[_0x21c1('0x27')](function(_0x3b1e12){if(_0x3b1e12){return _0x3b1e12?{'count':_0x282fb3,'rows':_0x3b1e12}:null;}})[_0x21c1('0x27')](respondWithResult(_0x390c3c,null))[_0x21c1('0x50')](handleError(_0x390c3c,null));};exports['getMembers']=function(_0x563f0e,_0x1fdb22,_0x3f2657){var _0x57ec88={};var _0x13b88f={};var _0x15393c;var _0x339b85;return db[_0x21c1('0x3a')][_0x21c1('0x66')]({'where':{'id':_0x563f0e[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0x1fdb22,null))['then'](function(_0x2385fa){if(_0x2385fa){_0x15393c=_0x2385fa;_0x13b88f[_0x21c1('0x3d')]=_[_0x21c1('0x53')](db[_0x21c1('0x95')][_0x21c1('0x3b')]);_0x13b88f[_0x21c1('0x3e')]=_[_0x21c1('0x53')](_0x563f0e[_0x21c1('0x3e')]);_0x13b88f['filters']=_[_0x21c1('0x41')](_0x13b88f[_0x21c1('0x3d')],_0x13b88f['query']);_0x57ec88[_0x21c1('0x40')]=_[_0x21c1('0x41')](_0x13b88f[_0x21c1('0x3d')],qs[_0x21c1('0x42')](_0x563f0e['query'][_0x21c1('0x42')]));_0x57ec88[_0x21c1('0x40')]=_0x57ec88[_0x21c1('0x40')][_0x21c1('0x43')]?_0x57ec88[_0x21c1('0x40')]:_0x13b88f[_0x21c1('0x3d')];_0x57ec88[_0x21c1('0x47')]=qs[_0x21c1('0x48')](_0x563f0e[_0x21c1('0x3e')][_0x21c1('0x48')]);_0x57ec88[_0x21c1('0x49')]=qs[_0x21c1('0x3f')](_['pick'](_0x563f0e[_0x21c1('0x3e')],_0x13b88f[_0x21c1('0x3f')]));if(_0x563f0e[_0x21c1('0x3e')]['filter']){_0x57ec88['where']=_[_0x21c1('0x4b')](_0x57ec88['where'],{'$or':_[_0x21c1('0x2f')](_0x57ec88[_0x21c1('0x40')],function(_0x5f526e){var _0x5aa331={};_0x5aa331[_0x5f526e]={'$like':'%'+_0x563f0e[_0x21c1('0x3e')][_0x21c1('0x2d')]+'%'};return _0x5aa331;})});}_0x57ec88=_[_0x21c1('0x4b')]({},_0x57ec88,_0x563f0e[_0x21c1('0x64')]);return _0x15393c['getMembers'](_0x57ec88);}})[_0x21c1('0x27')](function(_0x399eeb){if(_0x399eeb){_0x339b85=_0x399eeb[_0x21c1('0x43')];if(!_0x563f0e[_0x21c1('0x3e')][_0x21c1('0x44')](_0x21c1('0x45'))){_0x57ec88[_0x21c1('0x46')]=qs['limit'](_0x563f0e[_0x21c1('0x3e')][_0x21c1('0x46')]);_0x57ec88[_0x21c1('0x1f')]=qs['offset'](_0x563f0e['query'][_0x21c1('0x1f')]);}return _0x15393c[_0x21c1('0x99')](_0x57ec88);}})['then'](function(_0x48786c){return _0x48786c?{'count':_0x339b85,'rows':_0x48786c}:null;})[_0x21c1('0x27')](respondWithResult(_0x1fdb22,null))[_0x21c1('0x50')](handleError(_0x1fdb22,null));};exports[_0x21c1('0x9a')]=function(_0xc0c0ae,_0x3afc85,_0x1e0657){var _0x847ea={};var _0x2cff0b={};var _0x497d10;var _0x2fd859;return db[_0x21c1('0x3a')]['findOne']({'where':{'id':_0xc0c0ae[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0x3afc85,null))[_0x21c1('0x27')](function(_0x320f80){if(_0x320f80){_0x497d10=_0x320f80;_0x2cff0b['model']=_['keys'](db['CmList'][_0x21c1('0x3b')]);_0x2cff0b['query']=_[_0x21c1('0x53')](_0xc0c0ae[_0x21c1('0x3e')]);_0x2cff0b[_0x21c1('0x3f')]=_[_0x21c1('0x41')](_0x2cff0b[_0x21c1('0x3d')],_0x2cff0b[_0x21c1('0x3e')]);_0x847ea[_0x21c1('0x40')]=_['intersection'](_0x2cff0b['model'],qs[_0x21c1('0x42')](_0xc0c0ae[_0x21c1('0x3e')][_0x21c1('0x42')]));_0x847ea[_0x21c1('0x40')]=_0x847ea[_0x21c1('0x40')]['length']?_0x847ea[_0x21c1('0x40')]:_0x2cff0b[_0x21c1('0x3d')];_0x847ea[_0x21c1('0x47')]=qs[_0x21c1('0x48')](_0xc0c0ae['query'][_0x21c1('0x48')]);_0x847ea['where']=qs[_0x21c1('0x3f')](_[_0x21c1('0x4a')](_0xc0c0ae[_0x21c1('0x3e')],_0x2cff0b[_0x21c1('0x3f')]));if(_0xc0c0ae[_0x21c1('0x3e')][_0x21c1('0x2d')]){_0x847ea[_0x21c1('0x49')]=_[_0x21c1('0x4b')](_0x847ea[_0x21c1('0x49')],{'$or':_[_0x21c1('0x2f')](_0x847ea[_0x21c1('0x40')],function(_0x327af0){var _0x4c5d00={};_0x4c5d00[_0x327af0]={'$like':'%'+_0xc0c0ae[_0x21c1('0x3e')][_0x21c1('0x2d')]+'%'};return _0x4c5d00;})});}_0x847ea=_[_0x21c1('0x4b')]({},_0x847ea,_0xc0c0ae[_0x21c1('0x64')]);return _0x497d10[_0x21c1('0x9a')](_0x847ea);}})[_0x21c1('0x27')](function(_0xe0b335){if(_0xe0b335){_0x2fd859=_0xe0b335[_0x21c1('0x43')];if(!_0xc0c0ae[_0x21c1('0x3e')][_0x21c1('0x44')](_0x21c1('0x45'))){_0x847ea[_0x21c1('0x46')]=qs[_0x21c1('0x46')](_0xc0c0ae['query'][_0x21c1('0x46')]);_0x847ea[_0x21c1('0x1f')]=qs['offset'](_0xc0c0ae[_0x21c1('0x3e')]['offset']);}return _0x497d10[_0x21c1('0x9a')](_0x847ea);}})[_0x21c1('0x27')](function(_0xa2c325){if(_0xa2c325){return _0xa2c325?{'count':_0x2fd859,'rows':_0xa2c325}:null;}})[_0x21c1('0x27')](respondWithResult(_0x3afc85,null))['catch'](handleError(_0x3afc85,null));};exports['addLists']=function(_0x57b481,_0x58866c,_0x244c26){var _0x35a290,_0x511e08;return db[_0x21c1('0x3a')][_0x21c1('0x33')]({'where':{'id':_0x57b481[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0x58866c,null))[_0x21c1('0x27')](function(_0xaed5d8){if(_0xaed5d8){_0x511e08=_0xaed5d8;return _0xaed5d8[_0x21c1('0x9b')](_0x57b481[_0x21c1('0x5f')][_0x21c1('0x90')],_[_0x21c1('0x5c')](_0x57b481[_0x21c1('0x5f')],['ids','id'])||{});}return null;})[_0x21c1('0x9c')](function(_0x28e6bb){var _0x275288;_0x35a290=_0x28e6bb||[];var _0x3325bf=[];if(_0x28e6bb){for(var _0x40f820=0x0;_0x40f820<_0x28e6bb['length'];_0x40f820+=0x1){var _0x4e3b76=_0x28e6bb[_0x40f820][_0x21c1('0x55')]({'plain':!![]});_0x511e08[_0x21c1('0x9d')]=_0x57b481[_0x21c1('0x5f')][_0x21c1('0x9d')]?_0x57b481[_0x21c1('0x5f')][_0x21c1('0x9d')]:_0x511e08[_0x21c1('0x9d')];switch(_0x511e08[_0x21c1('0x9d')]){case _0x21c1('0x9e'):_0x275288=squel[_0x21c1('0x9f')]()[_0x21c1('0xa0')]('cm_hopper')['fromQuery']([_0x21c1('0xa1'),_0x21c1('0xa2'),_0x21c1('0xa3'),_0x21c1('0xa4'),_0x21c1('0x63'),_0x21c1('0x5d'),_0x21c1('0x5e')],squel[_0x21c1('0x81')]()[_0x21c1('0x82')]('phone',_0x21c1('0xa1'))[_0x21c1('0x82')](_0x21c1('0xa5'),_0x21c1('0xa2'))[_0x21c1('0x82')]('id',_0x21c1('0xa3'))['field'](_0x4e3b76[_0x21c1('0xa6')][_0x21c1('0x88')](),_0x21c1('0xa4'))[_0x21c1('0x82')](_0x57b481[_0x21c1('0x52')]['id']['toString'](),_0x21c1('0x63'))['field']('NOW()',_0x21c1('0x5d'))[_0x21c1('0x82')](_0x21c1('0xa5'),'updatedAt')[_0x21c1('0xa7')](_0x21c1('0xa8'))[_0x21c1('0x49')](_0x21c1('0xa9'))[_0x21c1('0x49')](_0x21c1('0xaa'),_0x4e3b76[_0x21c1('0xa6')][_0x21c1('0x88')]())[_0x21c1('0x49')](_0x21c1('0xab'))[_0x21c1('0x49')]('phone\x20NOT\x20IN\x20(?)',squel[_0x21c1('0x81')]()[_0x21c1('0x82')](_0x21c1('0xac'))[_0x21c1('0xa7')](_0x21c1('0xad'))[_0x21c1('0x49')](_0x21c1('0xae'),_0x57b481[_0x21c1('0x52')]['id'][_0x21c1('0x88')]()))[_0x21c1('0x49')](_0x21c1('0xaf'),squel[_0x21c1('0x81')]()[_0x21c1('0x82')](_0x21c1('0xb0'))[_0x21c1('0xa7')]('cm_hopper')[_0x21c1('0x49')](_0x21c1('0xae'),_0x57b481['params']['id']['toString']())))['toString']();break;case'onlyIfOpen':_0x275288=squel[_0x21c1('0x9f')]()[_0x21c1('0xa0')](_0x21c1('0xb1'))[_0x21c1('0xb2')]([_0x21c1('0xa1'),_0x21c1('0xa2'),_0x21c1('0xa3'),_0x21c1('0xa4'),_0x21c1('0x63'),_0x21c1('0x5d'),'updatedAt'],squel[_0x21c1('0x81')]()['field']('phone',_0x21c1('0xa1'))[_0x21c1('0x82')](_0x21c1('0xa5'),_0x21c1('0xa2'))[_0x21c1('0x82')]('id',_0x21c1('0xa3'))[_0x21c1('0x82')](_0x4e3b76[_0x21c1('0xa6')][_0x21c1('0x88')](),_0x21c1('0xa4'))[_0x21c1('0x82')](_0x57b481[_0x21c1('0x52')]['id'][_0x21c1('0x88')](),_0x21c1('0x63'))['field'](_0x21c1('0xa5'),_0x21c1('0x5d'))[_0x21c1('0x82')](_0x21c1('0xa5'),_0x21c1('0x5e'))[_0x21c1('0xa7')](_0x21c1('0xa8'))[_0x21c1('0x49')](_0x21c1('0xa9'))[_0x21c1('0x49')](_0x21c1('0xaa'),_0x4e3b76['CmListId'][_0x21c1('0x88')]())['where'](_0x21c1('0xab'))[_0x21c1('0x49')]('phone\x20NOT\x20IN\x20(?)',squel[_0x21c1('0x81')]()['field'](_0x21c1('0xb0'))['from'](_0x21c1('0xb1'))[_0x21c1('0x49')](_0x21c1('0xae'),_0x57b481[_0x21c1('0x52')]['id'][_0x21c1('0x88')]())))[_0x21c1('0x88')]();break;default:_0x275288=squel[_0x21c1('0x9f')]()[_0x21c1('0xa0')](_0x21c1('0xb1'))[_0x21c1('0xb2')]([_0x21c1('0xa1'),_0x21c1('0xa2'),_0x21c1('0xa3'),'ListId',_0x21c1('0x63'),_0x21c1('0x5d'),_0x21c1('0x5e')],squel[_0x21c1('0x81')]()[_0x21c1('0x82')](_0x21c1('0xa1'),'phone')[_0x21c1('0x82')]('NOW()',_0x21c1('0xa2'))[_0x21c1('0x82')]('id',_0x21c1('0xa3'))[_0x21c1('0x82')](_0x4e3b76[_0x21c1('0xa6')]['toString'](),_0x21c1('0xa4'))[_0x21c1('0x82')](_0x57b481[_0x21c1('0x52')]['id'][_0x21c1('0x88')](),'VoiceQueueId')[_0x21c1('0x82')]('NOW()',_0x21c1('0x5d'))[_0x21c1('0x82')](_0x21c1('0xa5'),_0x21c1('0x5e'))[_0x21c1('0xa7')](_0x21c1('0xa8'))[_0x21c1('0x49')](_0x21c1('0xa9'))[_0x21c1('0x49')](_0x21c1('0xaa'),_0x4e3b76[_0x21c1('0xa6')][_0x21c1('0x88')]())[_0x21c1('0x49')](_0x21c1('0xab')))['toString']();}_0x3325bf[_0x21c1('0x87')](db[_0x21c1('0x74')][_0x21c1('0x3e')](_0x275288));}return BPromise[_0x21c1('0x8d')](_0x3325bf);}})[_0x21c1('0x27')](function(){return _0x35a290;})[_0x21c1('0x27')](respondWithResult(_0x58866c,null))[_0x21c1('0x50')](handleError(_0x58866c,null));};exports[_0x21c1('0xb3')]=function(_0x23f7f6,_0x57e2a0,_0x179c68){return db[_0x21c1('0x3a')]['find']({'where':{'id':_0x23f7f6[_0x21c1('0x52')]['id']}})['then'](handleEntityNotFound(_0x57e2a0,null))['then'](function(_0x54ef68){if(_0x54ef68){return _0x54ef68[_0x21c1('0xb3')](_0x23f7f6[_0x21c1('0x3e')][_0x21c1('0x90')]);}})[_0x21c1('0x27')](function(_0xcc16b9){if(_0xcc16b9){return db[_0x21c1('0x62')][_0x21c1('0x28')]({'where':{'ListId':_0x23f7f6[_0x21c1('0x3e')][_0x21c1('0x90')],'VoiceQueueId':_0x23f7f6[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](function(){return _0xcc16b9;});}})[_0x21c1('0x27')](respondWithStatusCode(_0x57e2a0,null))[_0x21c1('0x50')](handleError(_0x57e2a0,null));};exports[_0x21c1('0xb4')]=function(_0x51358b,_0x50f173,_0x2b5442){var _0x4fb876={};var _0x56afb2={};var _0x34a7b1;var _0x122493;return db['VoiceQueue'][_0x21c1('0x66')]({'where':{'id':_0x51358b[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0x50f173,null))[_0x21c1('0x27')](function(_0x54cb84){if(_0x54cb84){_0x34a7b1=_0x54cb84;_0x56afb2[_0x21c1('0x3d')]=_['keys'](db[_0x21c1('0xb5')][_0x21c1('0x3b')]);_0x56afb2[_0x21c1('0x3e')]=_['keys'](_0x51358b[_0x21c1('0x3e')]);_0x56afb2[_0x21c1('0x3f')]=_[_0x21c1('0x41')](_0x56afb2[_0x21c1('0x3d')],_0x56afb2[_0x21c1('0x3e')]);_0x4fb876[_0x21c1('0x40')]=_['intersection'](_0x56afb2[_0x21c1('0x3d')],qs[_0x21c1('0x42')](_0x51358b[_0x21c1('0x3e')][_0x21c1('0x42')]));_0x4fb876['attributes']=_0x4fb876[_0x21c1('0x40')][_0x21c1('0x43')]?_0x4fb876['attributes']:_0x56afb2['model'];_0x4fb876['order']=qs['sort'](_0x51358b[_0x21c1('0x3e')]['sort']);_0x4fb876['where']=qs['filters'](_[_0x21c1('0x4a')](_0x51358b['query'],_0x56afb2['filters']));if(_0x51358b[_0x21c1('0x3e')][_0x21c1('0x2d')]){_0x4fb876[_0x21c1('0x49')]=_['merge'](_0x4fb876[_0x21c1('0x49')],{'$or':_[_0x21c1('0x2f')](_0x4fb876[_0x21c1('0x40')],function(_0x2d43ee){var _0x201403={};_0x201403[_0x2d43ee]={'$like':'%'+_0x51358b[_0x21c1('0x3e')][_0x21c1('0x2d')]+'%'};return _0x201403;})});}_0x4fb876=_[_0x21c1('0x4b')]({},_0x4fb876,_0x51358b[_0x21c1('0x64')]);return _0x34a7b1['getBlackLists'](_0x4fb876);}})[_0x21c1('0x27')](function(_0x19a62f){if(_0x19a62f){_0x122493=_0x19a62f[_0x21c1('0x43')];if(!_0x51358b[_0x21c1('0x3e')][_0x21c1('0x44')](_0x21c1('0x45'))){_0x4fb876[_0x21c1('0x46')]=qs[_0x21c1('0x46')](_0x51358b[_0x21c1('0x3e')][_0x21c1('0x46')]);_0x4fb876['offset']=qs[_0x21c1('0x1f')](_0x51358b[_0x21c1('0x3e')]['offset']);}return _0x34a7b1[_0x21c1('0xb4')](_0x4fb876);}})[_0x21c1('0x27')](function(_0x1536f8){if(_0x1536f8){return _0x1536f8?{'count':_0x122493,'rows':_0x1536f8}:null;}})['then'](respondWithResult(_0x50f173,null))['catch'](handleError(_0x50f173,null));};exports[_0x21c1('0xb6')]=function(_0x437d82,_0x1db2e0,_0x2f021e){var _0x268572,_0x36144e;return db[_0x21c1('0x3a')][_0x21c1('0x33')]({'where':{'id':_0x437d82[_0x21c1('0x52')]['id']}})['then'](handleEntityNotFound(_0x1db2e0,null))[_0x21c1('0x27')](function(_0x56f768){if(_0x56f768){_0x36144e=_0x56f768;return _0x56f768[_0x21c1('0xb6')](_0x437d82[_0x21c1('0x5f')][_0x21c1('0x90')],_[_0x21c1('0x5c')](_0x437d82['body'],[_0x21c1('0x90'),'id'])||{});}return null;})[_0x21c1('0x9c')](function(_0xb87b37){var _0x36148f;_0x268572=_0xb87b37||[];var _0x1f715f=[];if(_0xb87b37){for(var _0x191359=0x0;_0x191359<_0xb87b37[_0x21c1('0x43')];_0x191359+=0x1){var _0x7fa8d5=_0xb87b37[_0x191359][_0x21c1('0x55')]({'plain':!![]});_0x36148f=squel[_0x21c1('0x9f')]()[_0x21c1('0xa0')]('cm_hopper_black')[_0x21c1('0xb2')](['phone',_0x21c1('0xa3'),_0x21c1('0xa4'),'VoiceQueueId','createdAt','updatedAt'],squel[_0x21c1('0x81')]()[_0x21c1('0x82')](_0x21c1('0xa1'),_0x21c1('0xa1'))[_0x21c1('0x82')]('id',_0x21c1('0xa3'))['field'](_0x7fa8d5[_0x21c1('0xa6')][_0x21c1('0x88')](),_0x21c1('0xa4'))[_0x21c1('0x82')](_0x437d82[_0x21c1('0x52')]['id'][_0x21c1('0x88')](),_0x21c1('0x63'))[_0x21c1('0x82')](_0x21c1('0xa5'),'createdAt')[_0x21c1('0x82')]('NOW()',_0x21c1('0x5e'))[_0x21c1('0xa7')](_0x21c1('0xa8'))[_0x21c1('0x49')](_0x21c1('0xa9'))[_0x21c1('0x49')]('ListId\x20=\x20?',_0x7fa8d5[_0x21c1('0xa6')][_0x21c1('0x88')]())[_0x21c1('0x49')]('phone\x20IS\x20NOT\x20NULL'))[_0x21c1('0x88')]();_0x1f715f[_0x21c1('0x87')](db[_0x21c1('0x74')]['query'](_0x36148f));}return BPromise['all'](_0x1f715f);}})[_0x21c1('0x27')](function(){return _0x268572;})[_0x21c1('0x27')](respondWithResult(_0x1db2e0,null))[_0x21c1('0x50')](handleError(_0x1db2e0,null));};exports[_0x21c1('0xb7')]=function(_0x3a3eb5,_0x2b470a,_0x2a630b){return db[_0x21c1('0x3a')]['find']({'where':{'id':_0x3a3eb5['params']['id']}})[_0x21c1('0x27')](handleEntityNotFound(_0x2b470a,null))[_0x21c1('0x27')](function(_0x5f923f){if(_0x5f923f){return _0x5f923f['removeBlackLists'](_0x3a3eb5[_0x21c1('0x3e')][_0x21c1('0x90')]);}})[_0x21c1('0x27')](function(_0x5b7dfb){if(_0x5b7dfb){return db[_0x21c1('0x6a')][_0x21c1('0x28')]({'where':{'ListId':_0x3a3eb5[_0x21c1('0x3e')][_0x21c1('0x90')],'VoiceQueueId':_0x3a3eb5[_0x21c1('0x52')]['id']}})[_0x21c1('0x27')](function(){return _0x5b7dfb;});}})[_0x21c1('0x27')](respondWithStatusCode(_0x2b470a,null))['catch'](handleError(_0x2b470a,null));};
\ No newline at end of file
+var _0x3a6d=['userVoiceQueue:remove','addAgents','spread','isEmpty','push','isNil','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','scheduledAt','ContactId','ListId','select','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','fromQuery','from','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','./voiceQueue.socket','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','save','update','then','destroy','get','QueueCampaigns','outbound','map','value','includes','name','UserProfileResource','error','stack','send','VoiceQueue','rawAttributes','fieldName','type','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','catch','params','keys','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','clone','omit','updatedAt','createdAt','role','inbound','getHoppers','VoiceQueueId','CmHopper','findAll','rows','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','online','voicePause','interface','flatMap','penalty','sequelize','transaction','each','TeamVoiceQueue','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','upsert','format','SIP/%s','forEach','emit','removeTeams','ids','field','tq.TeamId','join','user_has_teams','VoiceQueueId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','removeAgents'];(function(_0x15a176,_0xfea70a){var _0x157570=function(_0x3f86dc){while(--_0x3f86dc){_0x15a176['push'](_0x15a176['shift']());}};_0x157570(++_0xfea70a);}(_0x3a6d,0x196));var _0xd3a6=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x3a6d[_0x2070da];return _0x4f9fe1;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd3a6('0x0'));var jsonpatch=require(_0xd3a6('0x1'));var rp=require('request-promise');var moment=require(_0xd3a6('0x2'));var BPromise=require(_0xd3a6('0x3'));var Mustache=require(_0xd3a6('0x4'));var util=require(_0xd3a6('0x5'));var path=require(_0xd3a6('0x6'));var sox=require(_0xd3a6('0x7'));var csv=require(_0xd3a6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd3a6('0x9'));var _=require(_0xd3a6('0xa'));var squel=require(_0xd3a6('0xb'));var crypto=require(_0xd3a6('0xc'));var jsforce=require(_0xd3a6('0xd'));var deskjs=require(_0xd3a6('0xe'));var toCsv=require('to-csv');var querystring=require(_0xd3a6('0xf'));var Papa=require(_0xd3a6('0x10'));var Redis=require(_0xd3a6('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd3a6('0x12'));var hardwareService=require(_0xd3a6('0x13'));var logger=require(_0xd3a6('0x14'))(_0xd3a6('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd3a6('0x16'));var db=require(_0xd3a6('0x17'))['db'];config[_0xd3a6('0x18')]=_[_0xd3a6('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd3a6('0x18')]));require(_0xd3a6('0x1a'))['register'](socket);function respondWithStatusCode(_0x3c2705,_0x2bad14){_0x2bad14=_0x2bad14||0xcc;return function(_0x17abed){if(_0x17abed){return _0x3c2705[_0xd3a6('0x1b')](_0x2bad14);}return _0x3c2705['status'](_0x2bad14)[_0xd3a6('0x1c')]();};}function respondWithResult(_0x5e032f,_0x26c866){_0x26c866=_0x26c866||0xc8;return function(_0x51ddd7){if(_0x51ddd7){return _0x5e032f[_0xd3a6('0x1d')](_0x26c866)[_0xd3a6('0x1e')](_0x51ddd7);}};}function respondWithFilteredResult(_0x169926,_0x36c979){return function(_0x556d42){if(_0x556d42){var _0x5cd436=typeof _0x36c979['offset']===_0xd3a6('0x1f')&&typeof _0x36c979[_0xd3a6('0x20')]==='undefined';var _0x3d03ca=_0x556d42[_0xd3a6('0x21')];var _0x19f96b=_0x5cd436?0x0:_0x36c979[_0xd3a6('0x22')];var _0x3f5d29=_0x5cd436?_0x556d42[_0xd3a6('0x21')]:_0x36c979[_0xd3a6('0x22')]+_0x36c979[_0xd3a6('0x20')];var _0x3b4490;if(_0x3f5d29>=_0x3d03ca){_0x3f5d29=_0x3d03ca;_0x3b4490=0xc8;}else{_0x3b4490=0xce;}_0x169926[_0xd3a6('0x1d')](_0x3b4490);return _0x169926[_0xd3a6('0x23')](_0xd3a6('0x24'),_0x19f96b+'-'+_0x3f5d29+'/'+_0x3d03ca)['json'](_0x556d42);}return null;};}function patchUpdates(_0x4c01e8){return function(_0x222c1f){try{jsonpatch['apply'](_0x222c1f,_0x4c01e8,!![]);}catch(_0x16e4af){return BPromise['reject'](_0x16e4af);}return _0x222c1f[_0xd3a6('0x25')]();};}function saveUpdates(_0x58dc08,_0x4fcde6){return function(_0x437494){if(_0x437494){return _0x437494[_0xd3a6('0x26')](_0x58dc08)[_0xd3a6('0x27')](function(_0x25235f){return _0x25235f;});}return null;};}function removeEntity(_0x13fbaf,_0xc3eb68){return function(_0x5cef15){if(_0x5cef15){return _0x5cef15[_0xd3a6('0x28')]()['then'](function(){var _0x30e067=_0x5cef15[_0xd3a6('0x29')]({'plain':!![]});var _0x525e65=[{'name':'VoiceQueues','value':'inbound','ignore':![]},{'name':_0xd3a6('0x2a'),'value':_0xd3a6('0x2b'),'ignore':![]}];var _0x26b285=_(_0x525e65)['filter']('ignore')[_0xd3a6('0x2c')](_0xd3a6('0x2d'))[_0xd3a6('0x2d')]();if(_[_0xd3a6('0x2e')](_0x26b285,_0x30e067['type'])){return;}var _0x27169a=_['find'](_0x525e65,[_0xd3a6('0x2d'),_0x30e067['type']])[_0xd3a6('0x2f')];return db[_0xd3a6('0x30')][_0xd3a6('0x28')]({'where':{'type':_0x27169a,'resourceId':_0x30e067['id']}})[_0xd3a6('0x27')](function(){return _0x5cef15;});})['then'](function(){_0x13fbaf[_0xd3a6('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x580e1e,_0x1ef4b8){return function(_0x579dc2){if(!_0x579dc2){_0x580e1e[_0xd3a6('0x1b')](0x194);}return _0x579dc2;};}function handleError(_0x586cfc,_0x585c66){_0x585c66=_0x585c66||0x1f4;return function(_0x26b9da){logger[_0xd3a6('0x31')](_0x26b9da[_0xd3a6('0x32')]);if(_0x26b9da['name']){delete _0x26b9da[_0xd3a6('0x2f')];}_0x586cfc[_0xd3a6('0x1d')](_0x585c66)[_0xd3a6('0x33')](_0x26b9da);};}exports['index']=function(_0xb31dd1,_0x60b4){var _0x5e5f26={},_0x54907a={},_0x468346={'count':0x0,'rows':[]};var _0x12764d=_[_0xd3a6('0x2c')](db[_0xd3a6('0x34')][_0xd3a6('0x35')],function(_0x54c0a2){return{'name':_0x54c0a2[_0xd3a6('0x36')],'type':_0x54c0a2[_0xd3a6('0x37')]['key']};});_0x54907a['model']=_[_0xd3a6('0x2c')](_0x12764d,_0xd3a6('0x2f'));_0x54907a[_0xd3a6('0x38')]=_['keys'](_0xb31dd1[_0xd3a6('0x38')]);_0x54907a[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x54907a['model'],_0x54907a[_0xd3a6('0x38')]);_0x5e5f26[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x54907a[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0xb31dd1[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x5e5f26[_0xd3a6('0x3b')]=_0x5e5f26[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x5e5f26[_0xd3a6('0x3b')]:_0x54907a[_0xd3a6('0x3c')];if(!_0xb31dd1['query'][_0xd3a6('0x3f')](_0xd3a6('0x40'))){_0x5e5f26[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0xb31dd1[_0xd3a6('0x38')]['limit']);_0x5e5f26[_0xd3a6('0x22')]=qs[_0xd3a6('0x22')](_0xb31dd1[_0xd3a6('0x38')][_0xd3a6('0x22')]);}_0x5e5f26[_0xd3a6('0x41')]=qs[_0xd3a6('0x42')](_0xb31dd1[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x5e5f26[_0xd3a6('0x43')]=qs['filters'](_[_0xd3a6('0x44')](_0xb31dd1[_0xd3a6('0x38')],_0x54907a[_0xd3a6('0x39')]),_0x12764d);if(_0xb31dd1[_0xd3a6('0x38')]['filter']){_0x5e5f26[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x5e5f26['where'],{'$or':_[_0xd3a6('0x2c')](_0x12764d,function(_0x520c2c){if(_0x520c2c[_0xd3a6('0x37')]!=='VIRTUAL'){var _0x5cdd8a={};_0x5cdd8a[_0x520c2c[_0xd3a6('0x2f')]]={'$like':'%'+_0xb31dd1['query'][_0xd3a6('0x46')]+'%'};return _0x5cdd8a;}})});}_0x5e5f26=_[_0xd3a6('0x45')]({},_0x5e5f26,_0xb31dd1[_0xd3a6('0x47')]);var _0x5b3f91={'where':_0x5e5f26[_0xd3a6('0x43')]};return db[_0xd3a6('0x34')]['count'](_0x5b3f91)[_0xd3a6('0x27')](function(_0x36c9c0){_0x468346[_0xd3a6('0x21')]=_0x36c9c0;if(_0xb31dd1[_0xd3a6('0x38')][_0xd3a6('0x48')]){_0x5e5f26['include']=[{'all':!![]}];}return db[_0xd3a6('0x34')]['findAll'](_0x5e5f26);})[_0xd3a6('0x27')](function(_0x1551f6){_0x468346['rows']=_0x1551f6;return _0x468346;})[_0xd3a6('0x27')](respondWithFilteredResult(_0x60b4,_0x5e5f26))[_0xd3a6('0x49')](handleError(_0x60b4,null));};exports['show']=function(_0x5322af,_0x493926){var _0x8ac1fa={'raw':![],'where':{'id':_0x5322af[_0xd3a6('0x4a')]['id']}},_0x85780b={};_0x85780b['model']=_[_0xd3a6('0x4b')](db[_0xd3a6('0x34')][_0xd3a6('0x35')]);_0x85780b[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x5322af[_0xd3a6('0x38')]);_0x85780b['filters']=_[_0xd3a6('0x3a')](_0x85780b['model'],_0x85780b[_0xd3a6('0x38')]);_0x8ac1fa[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x85780b[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0x5322af[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x8ac1fa[_0xd3a6('0x3b')]=_0x8ac1fa[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x8ac1fa[_0xd3a6('0x3b')]:_0x85780b[_0xd3a6('0x3c')];if(_0x5322af[_0xd3a6('0x38')][_0xd3a6('0x48')]){_0x8ac1fa[_0xd3a6('0x4c')]=[{'all':!![]}];}_0x8ac1fa=_[_0xd3a6('0x45')]({},_0x8ac1fa,_0x5322af[_0xd3a6('0x47')]);return db[_0xd3a6('0x34')][_0xd3a6('0x4d')](_0x8ac1fa)[_0xd3a6('0x27')](handleEntityNotFound(_0x493926,null))[_0xd3a6('0x27')](respondWithResult(_0x493926,null))['catch'](handleError(_0x493926,null));};exports[_0xd3a6('0x4e')]=function(_0x21a6fa,_0x1c5b36){return db['VoiceQueue'][_0xd3a6('0x4e')](_0x21a6fa[_0xd3a6('0x4f')],{})[_0xd3a6('0x27')](function(_0x548140){var _0xfa00de=_0x21a6fa[_0xd3a6('0x50')][_0xd3a6('0x29')]({'plain':!![]});if(!_0xfa00de)throw new Error(_0xd3a6('0x51'));if(_0xfa00de['role']===_0xd3a6('0x50')){var _0x46e883=_0x548140[_0xd3a6('0x29')]({'plain':!![]});var _0x1f2aea=[{'name':'VoiceQueues','value':'inbound'},{'name':'QueueCampaigns','value':'outbound'}];var _0x222ad3=_[_0xd3a6('0x4d')](_0x1f2aea,[_0xd3a6('0x2d'),_0x46e883[_0xd3a6('0x37')]])[_0xd3a6('0x2f')];return db[_0xd3a6('0x52')]['find']({'where':{'name':_0x222ad3,'userProfileId':_0xfa00de[_0xd3a6('0x53')]},'raw':!![]})[_0xd3a6('0x27')](function(_0x174e51){if(_0x174e51&&_0x174e51[_0xd3a6('0x54')]===0x0){return db[_0xd3a6('0x30')][_0xd3a6('0x4e')]({'name':_0x46e883[_0xd3a6('0x2f')],'resourceId':_0x46e883['id'],'type':_0x174e51[_0xd3a6('0x2f')],'sectionId':_0x174e51['id']},{})[_0xd3a6('0x27')](function(){return _0x548140;});}else{return _0x548140;}})[_0xd3a6('0x49')](function(_0x37aace){logger[_0xd3a6('0x31')](_0xd3a6('0x55'),_0x37aace);throw _0x37aace;});}return _0x548140;})['then'](respondWithResult(_0x1c5b36,0xc9))[_0xd3a6('0x49')](handleError(_0x1c5b36,null));};exports[_0xd3a6('0x56')]=function(_0x2c01f2,_0x3d5841){var _0x1249c8={'where':{'id':_0x2c01f2['params']['id']}},_0x3bd143={};_0x3bd143['model']=_[_0xd3a6('0x4b')](db['VoiceQueue'][_0xd3a6('0x35')]);_0x1249c8['attributes']=_[_0xd3a6('0x3a')](_0x3bd143[_0xd3a6('0x3c')],qs['fields'](_0x2c01f2[_0xd3a6('0x38')]['fields']));_0x1249c8[_0xd3a6('0x3b')]=_0x1249c8[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x1249c8[_0xd3a6('0x3b')]:_0x3bd143[_0xd3a6('0x3c')];if(_0x2c01f2['query'][_0xd3a6('0x48')]){_0x1249c8[_0xd3a6('0x4c')]=[{'all':!![]}];}_0x1249c8=_[_0xd3a6('0x45')]({},_0x1249c8,_0x2c01f2[_0xd3a6('0x47')]);return db['VoiceQueue']['find'](_0x1249c8)[_0xd3a6('0x27')](handleEntityNotFound(_0x3d5841,null))[_0xd3a6('0x27')](function(_0x10324c){if(_0x10324c){var _0x1cb4d2=_0x10324c[_0xd3a6('0x29')]({'plain':!![]});_0x1cb4d2=qs[_0xd3a6('0x57')](_0x1cb4d2,['id','createdAt',_0xd3a6('0x58')]);_0x2c01f2['body']=_[_0xd3a6('0x57')](_0x2c01f2[_0xd3a6('0x4f')],['id',_0xd3a6('0x59'),'updatedAt']);return db[_0xd3a6('0x34')][_0xd3a6('0x4e')](_[_0xd3a6('0x45')](_0x1cb4d2,_0x2c01f2[_0xd3a6('0x4f')]),{'include':_0x2c01f2[_0xd3a6('0x38')][_0xd3a6('0x48')]?[{'all':!![]}]:undefined})[_0xd3a6('0x27')](function(_0x1a6d6e){var _0x26efc8=_0x2c01f2['user'][_0xd3a6('0x29')]({'plain':!![]});if(!_0x26efc8)throw new Error(_0xd3a6('0x51'));if(_0x26efc8[_0xd3a6('0x5a')]==='user'){var _0x5b232a=_0x1a6d6e[_0xd3a6('0x29')]({'plain':!![]});var _0x4ea880=[{'name':'VoiceQueues','value':_0xd3a6('0x5b')},{'name':'QueueCampaigns','value':'outbound'}];var _0x56fa6a=_[_0xd3a6('0x4d')](_0x4ea880,[_0xd3a6('0x2d'),_0x5b232a['type']])[_0xd3a6('0x2f')];return db['UserProfileSection']['find']({'where':{'name':_0x56fa6a,'userProfileId':_0x26efc8[_0xd3a6('0x53')]},'raw':!![]})['then'](function(_0x22c381){if(_0x22c381&&_0x22c381[_0xd3a6('0x54')]===0x0){return db[_0xd3a6('0x30')][_0xd3a6('0x4e')]({'name':_0x5b232a['name'],'resourceId':_0x5b232a['id'],'type':_0x22c381['name'],'sectionId':_0x22c381['id']},{})[_0xd3a6('0x27')](function(){return _0x1a6d6e;});}else{return _0x1a6d6e;}})[_0xd3a6('0x49')](function(_0xb712f4){logger[_0xd3a6('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xb712f4);throw _0xb712f4;});}return _0x1a6d6e;});}})[_0xd3a6('0x27')](respondWithResult(_0x3d5841,0xc9))[_0xd3a6('0x49')](handleError(_0x3d5841,null));};exports[_0xd3a6('0x26')]=function(_0x32fc1d,_0x4e2298){if(_0x32fc1d[_0xd3a6('0x4f')]['id']){delete _0x32fc1d['body']['id'];}return db['VoiceQueue'][_0xd3a6('0x4d')]({'where':{'id':_0x32fc1d[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x4e2298,null))[_0xd3a6('0x27')](saveUpdates(_0x32fc1d['body'],null))[_0xd3a6('0x27')](respondWithResult(_0x4e2298,null))[_0xd3a6('0x49')](handleError(_0x4e2298,null));};exports[_0xd3a6('0x28')]=function(_0x3dfc48,_0x254983){return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x3dfc48[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x254983,null))['then'](removeEntity(_0x254983,null))[_0xd3a6('0x49')](handleError(_0x254983,null));};exports[_0xd3a6('0x5c')]=function(_0x14f2ae,_0xe5f93f,_0x4fe2c4){var _0x1b7c6a={'raw':![],'where':{}};var _0x329bdd={};var _0x2d11b9={'count':0x0,'rows':[]};return db[_0xd3a6('0x34')]['findOne']({'where':{'id':_0x14f2ae[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0xe5f93f,null))[_0xd3a6('0x27')](function(_0x506f6b){if(_0x506f6b){_0x329bdd['model']=_[_0xd3a6('0x4b')](db['CmHopper'][_0xd3a6('0x35')]);_0x329bdd[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x14f2ae[_0xd3a6('0x38')]);_0x329bdd[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x329bdd[_0xd3a6('0x3c')],_0x329bdd['query']);_0x1b7c6a[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x329bdd[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x1b7c6a[_0xd3a6('0x3b')]=_0x1b7c6a[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x1b7c6a[_0xd3a6('0x3b')]:_0x329bdd[_0xd3a6('0x3c')];if(!_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x3f')]('nolimit')){_0x1b7c6a['limit']=qs[_0xd3a6('0x20')](_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x20')]);_0x1b7c6a['offset']=qs[_0xd3a6('0x22')](_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x22')]);}_0x1b7c6a[_0xd3a6('0x41')]=qs[_0xd3a6('0x42')](_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x1b7c6a[_0xd3a6('0x43')]=qs[_0xd3a6('0x39')](_[_0xd3a6('0x44')](_0x14f2ae[_0xd3a6('0x38')],_0x329bdd[_0xd3a6('0x39')]));_0x1b7c6a[_0xd3a6('0x43')][_0xd3a6('0x5d')]=_0x506f6b['id'];if(_0x14f2ae['query'][_0xd3a6('0x46')]){_0x1b7c6a['where']=_[_0xd3a6('0x45')](_0x1b7c6a[_0xd3a6('0x43')],{'$or':_[_0xd3a6('0x2c')](_0x1b7c6a[_0xd3a6('0x3b')],function(_0x41940f){var _0x4797c1={};_0x4797c1[_0x41940f]={'$like':'%'+_0x14f2ae[_0xd3a6('0x38')]['filter']+'%'};return _0x4797c1;})});}_0x1b7c6a=_[_0xd3a6('0x45')]({},_0x1b7c6a,_0x14f2ae['options']);return db[_0xd3a6('0x5e')][_0xd3a6('0x21')]({'where':_0x1b7c6a[_0xd3a6('0x43')]})[_0xd3a6('0x27')](function(_0x36a619){_0x2d11b9[_0xd3a6('0x21')]=_0x36a619;if(_0x14f2ae[_0xd3a6('0x38')][_0xd3a6('0x48')]){_0x1b7c6a[_0xd3a6('0x4c')]=[{'all':!![]}];}return db['CmHopper'][_0xd3a6('0x5f')](_0x1b7c6a);})[_0xd3a6('0x27')](function(_0x3e27f6){_0x2d11b9[_0xd3a6('0x60')]=_0x3e27f6;return _0x2d11b9;});}})[_0xd3a6('0x27')](respondWithFilteredResult(_0xe5f93f,_0x1b7c6a))[_0xd3a6('0x49')](handleError(_0xe5f93f,null));};exports[_0xd3a6('0x61')]=function(_0x2fba64,_0x140903,_0x6d84c2){var _0x56d28b={'raw':!![],'where':{}};var _0x3b00e4={};var _0x3d487a={'count':0x0,'rows':[]};return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0x2fba64['params']['id']}})['then'](handleEntityNotFound(_0x140903,null))[_0xd3a6('0x27')](function(_0x34a8b8){if(_0x34a8b8){_0x3b00e4[_0xd3a6('0x3c')]=_['keys'](db[_0xd3a6('0x63')]['rawAttributes']);_0x3b00e4[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x2fba64[_0xd3a6('0x38')]);_0x3b00e4[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x3b00e4['model'],_0x3b00e4['query']);_0x56d28b[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x3b00e4[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0x2fba64[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x56d28b[_0xd3a6('0x3b')]=_0x56d28b['attributes']['length']?_0x56d28b[_0xd3a6('0x3b')]:_0x3b00e4[_0xd3a6('0x3c')];if(!_0x2fba64[_0xd3a6('0x38')][_0xd3a6('0x3f')]('nolimit')){_0x56d28b[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0x2fba64[_0xd3a6('0x38')]['limit']);_0x56d28b[_0xd3a6('0x22')]=qs[_0xd3a6('0x22')](_0x2fba64['query'][_0xd3a6('0x22')]);}_0x56d28b[_0xd3a6('0x41')]=qs[_0xd3a6('0x42')](_0x2fba64[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x56d28b[_0xd3a6('0x43')]=qs[_0xd3a6('0x39')](_[_0xd3a6('0x44')](_0x2fba64[_0xd3a6('0x38')],_0x3b00e4[_0xd3a6('0x39')]));_0x56d28b[_0xd3a6('0x43')][_0xd3a6('0x5d')]=_0x34a8b8['id'];if(_0x2fba64[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x56d28b['where']=_['merge'](_0x56d28b['where'],{'$or':_[_0xd3a6('0x2c')](_0x56d28b[_0xd3a6('0x3b')],function(_0x5ec5fb){var _0x5c1f2f={};_0x5c1f2f[_0x5ec5fb]={'$like':'%'+_0x2fba64[_0xd3a6('0x38')][_0xd3a6('0x46')]+'%'};return _0x5c1f2f;})});}_0x56d28b=_[_0xd3a6('0x45')]({},_0x56d28b,_0x2fba64['options']);return db[_0xd3a6('0x63')]['count']({'where':_0x56d28b[_0xd3a6('0x43')]})['then'](function(_0x3b71d4){_0x3d487a[_0xd3a6('0x21')]=_0x3b71d4;if(_0x2fba64[_0xd3a6('0x38')]['includeAll']){_0x56d28b['include']=[{'all':!![]}];}return db[_0xd3a6('0x63')]['findAll'](_0x56d28b);})[_0xd3a6('0x27')](function(_0x7a4606){_0x3d487a[_0xd3a6('0x60')]=_0x7a4606;return _0x3d487a;});}})[_0xd3a6('0x27')](respondWithFilteredResult(_0x140903,_0x56d28b))[_0xd3a6('0x49')](handleError(_0x140903,null));};exports[_0xd3a6('0x64')]=function(_0x33d25f,_0x41f4fa,_0xdfbbcd){var _0x405c4c={'raw':!![],'where':{}};var _0x19770c={};var _0x3f584c={'count':0x0,'rows':[]};return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0x33d25f[_0xd3a6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x41f4fa,null))[_0xd3a6('0x27')](function(_0xddda06){if(_0xddda06){_0x19770c[_0xd3a6('0x3c')]=_['keys'](db[_0xd3a6('0x65')][_0xd3a6('0x35')]);_0x19770c['query']=_['keys'](_0x33d25f[_0xd3a6('0x38')]);_0x19770c[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x19770c[_0xd3a6('0x3c')],_0x19770c['query']);_0x405c4c[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x19770c['model'],qs[_0xd3a6('0x3d')](_0x33d25f['query'][_0xd3a6('0x3d')]));_0x405c4c['attributes']=_0x405c4c[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x405c4c[_0xd3a6('0x3b')]:_0x19770c[_0xd3a6('0x3c')];if(!_0x33d25f[_0xd3a6('0x38')][_0xd3a6('0x3f')](_0xd3a6('0x40'))){_0x405c4c[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0x33d25f[_0xd3a6('0x38')][_0xd3a6('0x20')]);_0x405c4c['offset']=qs[_0xd3a6('0x22')](_0x33d25f[_0xd3a6('0x38')]['offset']);}_0x405c4c['order']=qs[_0xd3a6('0x42')](_0x33d25f[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x405c4c['where']=qs[_0xd3a6('0x39')](_['pick'](_0x33d25f['query'],_0x19770c[_0xd3a6('0x39')]));_0x405c4c[_0xd3a6('0x43')][_0xd3a6('0x5d')]=_0xddda06['id'];if(_0x33d25f[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x405c4c[_0xd3a6('0x43')]=_['merge'](_0x405c4c[_0xd3a6('0x43')],{'$or':_[_0xd3a6('0x2c')](_0x405c4c['attributes'],function(_0x25668e){var _0x581cd6={};_0x581cd6[_0x25668e]={'$like':'%'+_0x33d25f[_0xd3a6('0x38')][_0xd3a6('0x46')]+'%'};return _0x581cd6;})});}_0x405c4c=_[_0xd3a6('0x45')]({},_0x405c4c,_0x33d25f[_0xd3a6('0x47')]);return db['CmHopperFinal']['count']({'where':_0x405c4c[_0xd3a6('0x43')]})[_0xd3a6('0x27')](function(_0x42e730){_0x3f584c['count']=_0x42e730;if(_0x33d25f['query'][_0xd3a6('0x48')]){_0x405c4c[_0xd3a6('0x4c')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xd3a6('0x5f')](_0x405c4c);})[_0xd3a6('0x27')](function(_0x1fe123){_0x3f584c[_0xd3a6('0x60')]=_0x1fe123;return _0x3f584c;});}})[_0xd3a6('0x27')](respondWithFilteredResult(_0x41f4fa,_0x405c4c))[_0xd3a6('0x49')](handleError(_0x41f4fa,null));};exports[_0xd3a6('0x66')]=function(_0x5ceca0,_0x3a3f98,_0x35397e){var _0x2ef667={'raw':!![],'where':{}};var _0x10ea20={};var _0x2460f0={'count':0x0,'rows':[]};return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0x5ceca0['params']['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x3a3f98,null))[_0xd3a6('0x27')](function(_0x56d043){if(_0x56d043){_0x10ea20[_0xd3a6('0x3c')]=_['keys'](db[_0xd3a6('0x67')][_0xd3a6('0x35')]);_0x10ea20[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x5ceca0[_0xd3a6('0x38')]);_0x10ea20[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x10ea20['model'],_0x10ea20[_0xd3a6('0x38')]);_0x2ef667[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x10ea20['model'],qs[_0xd3a6('0x3d')](_0x5ceca0[_0xd3a6('0x38')]['fields']));_0x2ef667['attributes']=_0x2ef667[_0xd3a6('0x3b')]['length']?_0x2ef667[_0xd3a6('0x3b')]:_0x10ea20['model'];if(!_0x5ceca0[_0xd3a6('0x38')][_0xd3a6('0x3f')]('nolimit')){_0x2ef667[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0x5ceca0[_0xd3a6('0x38')][_0xd3a6('0x20')]);_0x2ef667[_0xd3a6('0x22')]=qs[_0xd3a6('0x22')](_0x5ceca0[_0xd3a6('0x38')]['offset']);}_0x2ef667[_0xd3a6('0x41')]=qs['sort'](_0x5ceca0[_0xd3a6('0x38')]['sort']);_0x2ef667[_0xd3a6('0x43')]=qs[_0xd3a6('0x39')](_[_0xd3a6('0x44')](_0x5ceca0[_0xd3a6('0x38')],_0x10ea20[_0xd3a6('0x39')]));_0x2ef667['where'][_0xd3a6('0x5d')]=_0x56d043['id'];if(_0x5ceca0[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x2ef667[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x2ef667[_0xd3a6('0x43')],{'$or':_['map'](_0x2ef667[_0xd3a6('0x3b')],function(_0x9f1b1e){var _0x5909fa={};_0x5909fa[_0x9f1b1e]={'$like':'%'+_0x5ceca0['query'][_0xd3a6('0x46')]+'%'};return _0x5909fa;})});}_0x2ef667=_['merge']({},_0x2ef667,_0x5ceca0['options']);return db[_0xd3a6('0x67')][_0xd3a6('0x21')]({'where':_0x2ef667['where']})['then'](function(_0x1b3a0c){_0x2460f0[_0xd3a6('0x21')]=_0x1b3a0c;if(_0x5ceca0[_0xd3a6('0x38')]['includeAll']){_0x2ef667[_0xd3a6('0x4c')]=[{'all':!![]}];}return db[_0xd3a6('0x67')][_0xd3a6('0x5f')](_0x2ef667);})['then'](function(_0x5712f2){_0x2460f0[_0xd3a6('0x60')]=_0x5712f2;return _0x2460f0;});}})[_0xd3a6('0x27')](respondWithFilteredResult(_0x3a3f98,_0x2ef667))[_0xd3a6('0x49')](handleError(_0x3a3f98,null));};exports[_0xd3a6('0x68')]=function(_0x42e574,_0x1c2bae,_0x26689f){var _0x1564e3={};var _0x2af5a4={};var _0x47f08c;var _0x35cb0a;return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0x42e574[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x1c2bae,null))['then'](function(_0x5b889c){if(_0x5b889c){_0x47f08c=_0x5b889c;_0x2af5a4[_0xd3a6('0x3c')]=_[_0xd3a6('0x4b')](db[_0xd3a6('0x69')][_0xd3a6('0x35')]);_0x2af5a4[_0xd3a6('0x38')]=_['keys'](_0x42e574[_0xd3a6('0x38')]);_0x2af5a4['filters']=_[_0xd3a6('0x3a')](_0x2af5a4[_0xd3a6('0x3c')],_0x2af5a4['query']);_0x1564e3['attributes']=_['intersection'](_0x2af5a4[_0xd3a6('0x3c')],qs['fields'](_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x1564e3[_0xd3a6('0x3b')]=_0x1564e3['attributes'][_0xd3a6('0x3e')]?_0x1564e3[_0xd3a6('0x3b')]:_0x2af5a4[_0xd3a6('0x3c')];_0x1564e3[_0xd3a6('0x41')]=qs[_0xd3a6('0x42')](_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x1564e3[_0xd3a6('0x43')]=qs['filters'](_[_0xd3a6('0x44')](_0x42e574['query'],_0x2af5a4[_0xd3a6('0x39')]));if(_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x1564e3[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x1564e3[_0xd3a6('0x43')],{'$or':_[_0xd3a6('0x2c')](_0x1564e3['attributes'],function(_0x536b37){var _0x30a3a7={};_0x30a3a7[_0x536b37]={'$like':'%'+_0x42e574['query'][_0xd3a6('0x46')]+'%'};return _0x30a3a7;})});}_0x1564e3=_[_0xd3a6('0x45')]({},_0x1564e3,_0x42e574[_0xd3a6('0x47')]);return _0x47f08c[_0xd3a6('0x68')](_0x1564e3);}})[_0xd3a6('0x27')](function(_0x506c28){if(_0x506c28){_0x35cb0a=_0x506c28[_0xd3a6('0x3e')];if(!_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x3f')]('nolimit')){_0x1564e3[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x20')]);_0x1564e3['offset']=qs[_0xd3a6('0x22')](_0x42e574[_0xd3a6('0x38')][_0xd3a6('0x22')]);}return _0x47f08c['getTeams'](_0x1564e3);}})['then'](function(_0x3a776f){if(_0x3a776f){return _0x3a776f?{'count':_0x35cb0a,'rows':_0x3a776f}:null;}})['then'](respondWithResult(_0x1c2bae,null))[_0xd3a6('0x49')](handleError(_0x1c2bae,null));};exports[_0xd3a6('0x6a')]=function(_0x3f3112,_0x79c0f5,_0x2c1268){var _0x190f0b=_0x3f3112[_0xd3a6('0x4f')][_0xd3a6('0x6b')];var _0x323f75=_[_0xd3a6('0x2c')](_0x190f0b,'id');return db[_0xd3a6('0x69')][_0xd3a6('0x5f')]({'where':{'id':_0x323f75},'attributes':['id'],'include':[{'model':db[_0xd3a6('0x6c')],'as':_0xd3a6('0x6d'),'attributes':['id','name',_0xd3a6('0x6e'),_0xd3a6('0x6f'),_0xd3a6('0x70')],'raw':!![]}]})[_0xd3a6('0x27')](function(_0x5782d4){if(_0x5782d4){var _0x1b8959=_[_0xd3a6('0x71')](_0x5782d4,function(_0x5d4833){var _0xbf0f87=_0x5d4833['get']({'plain':!![]});_0xbf0f87[_0xd3a6('0x6d')]['forEach'](function(_0x161402){_0x161402[_0xd3a6('0x72')]=_[_0xd3a6('0x4d')](_0x190f0b,{'id':_0xbf0f87['id']})[_0xd3a6('0x72')];});return _0xbf0f87[_0xd3a6('0x6d')];});return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x3f3112[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](function(_0x445bd7){return db[_0xd3a6('0x73')][_0xd3a6('0x74')](function(_0x3d1a4d){return _0x445bd7['addTeams'](_0x323f75,{'transaction':_0x3d1a4d})[_0xd3a6('0x27')](function(){return BPromise[_0xd3a6('0x75')](_0x190f0b,function(_0x2e791b){return db[_0xd3a6('0x76')]['upsert']({'TeamId':_0x2e791b['id'],'VoiceQueueId':_0x3f3112[_0xd3a6('0x4a')]['id'],'penalty':_0x2e791b[_0xd3a6('0x72')]},{'transaction':_0x3d1a4d});});})[_0xd3a6('0x27')](function(){return BPromise[_0xd3a6('0x75')](_0x1b8959,function(_0x4e493f){return db[_0xd3a6('0x77')][_0xd3a6('0x78')]({'where':{'UserId':_0x4e493f['id'],'VoiceQueueId':_0x3f3112[_0xd3a6('0x4a')]['id']},'defaults':{'penalty':_0x4e493f['penalty']},'transaction':_0x3d1a4d});});})[_0xd3a6('0x27')](function(){return BPromise[_0xd3a6('0x75')](_['filter'](_0x1b8959,{'online':!![]}),function(_0x6bedb2){return db[_0xd3a6('0x79')][_0xd3a6('0x7a')]({'membername':_0x6bedb2['name'],'UserId':_0x6bedb2['id'],'queue_name':_0x445bd7['name'],'VoiceQueueId':_0x445bd7['id'],'interface':_['isNil'](_0x6bedb2[_0xd3a6('0x70')])?util[_0xd3a6('0x7b')](_0xd3a6('0x7c'),_0x6bedb2[_0xd3a6('0x2f')]):_0x6bedb2[_0xd3a6('0x70')],'paused':_0x6bedb2[_0xd3a6('0x6f')]||![],'penalty':_0x6bedb2['penalty']},{'transaction':_0x3d1a4d});});})[_0xd3a6('0x27')](function(){_0x1b8959[_0xd3a6('0x7d')](function(_0x3cdf6c){socket[_0xd3a6('0x7e')]('userVoiceQueue:save',{'UserId':_0x3cdf6c['id'],'VoiceQueueId':_0x445bd7['id']});});});});});}})['then'](respondWithStatusCode(_0x79c0f5,null))['catch'](handleError(_0x79c0f5,null));};exports[_0xd3a6('0x7f')]=function(_0x3b064e,_0x44fbeb,_0x216a08){return db[_0xd3a6('0x69')][_0xd3a6('0x5f')]({'where':{'id':_0x3b064e[_0xd3a6('0x38')][_0xd3a6('0x80')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd3a6('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xd3a6('0x27')](handleEntityNotFound(_0x44fbeb,null))[_0xd3a6('0x27')](function(_0x4111a8){var _0x11c124=_['map'](_0x4111a8,'id');var _0x1096cf=[];var _0x3312d8=[];var _0x49661c=squel['select']();_0x49661c[_0xd3a6('0x81')](_0xd3a6('0x82'))['from']('team_has_voice_queues','tq')[_0xd3a6('0x83')](_0xd3a6('0x84'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xd3a6('0x43')](_0xd3a6('0x85'),_0x3b064e['params']['id']);for(var _0x32f181=0x0;_0x32f181<_0x4111a8[_0xd3a6('0x3e')];_0x32f181+=0x1){let _0x1159d8=_0x4111a8[_0x32f181];for(var _0x300524=0x0;_0x300524<_0x1159d8['Agents'][_0xd3a6('0x3e')];_0x300524+=0x1){let _0x447e7=_0x1159d8['Agents'][_0x300524];var _0x504a35=_0x49661c[_0xd3a6('0x56')]();_0x504a35[_0xd3a6('0x43')]('ut.UserId\x20=\x20?',_0x447e7['id']);_0x3312d8['push'](db[_0xd3a6('0x73')][_0xd3a6('0x38')](_0x504a35[_0xd3a6('0x86')](),{'type':db[_0xd3a6('0x73')][_0xd3a6('0x87')][_0xd3a6('0x88')]})[_0xd3a6('0x27')](function(_0x4e1590){if(_0x4e1590[_0xd3a6('0x3e')]===0x1){return _0x447e7['id'];}else{var _0x32f85a=_[_0xd3a6('0x89')](_[_0xd3a6('0x2c')](_0x4e1590,_0xd3a6('0x8a')),function(_0x3a6ff8){return _[_0xd3a6('0x2e')](_0x11c124,_0x3a6ff8);});if(_0x32f85a){return _0x447e7['id'];}}}));}}return BPromise[_0xd3a6('0x8b')](_0x3312d8)[_0xd3a6('0x27')](function(_0x48631a){_0x1096cf=_(_0x1096cf)[_0xd3a6('0x8c')](_0x48631a)[_0xd3a6('0x8d')]()[_0xd3a6('0x2d')]();return db['VoiceQueue'][_0xd3a6('0x4d')]({'where':{'id':_0x3b064e[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](function(_0xdd59d3){return db[_0xd3a6('0x73')][_0xd3a6('0x74')](function(_0x324dd3){return _0xdd59d3[_0xd3a6('0x7f')](_0x3b064e['query'][_0xd3a6('0x80')],{'transaction':_0x324dd3})[_0xd3a6('0x27')](function(){if(!_['isEmpty'](_0x1096cf)){return _0xdd59d3[_0xd3a6('0x8e')](_0x1096cf,{'transaction':_0x324dd3})['then'](function(){return db[_0xd3a6('0x79')][_0xd3a6('0x28')]({'where':{'VoiceQueueId':_0x3b064e[_0xd3a6('0x4a')]['id'],'UserId':_0x1096cf},'transaction':_0x324dd3});});}})[_0xd3a6('0x27')](function(){_0x1096cf[_0xd3a6('0x7d')](function(_0x241ee4){socket[_0xd3a6('0x7e')](_0xd3a6('0x8f'),{'UserId':_0x241ee4,'VoiceQueueId':_0xdd59d3['id']});});});});});});})['then'](respondWithStatusCode(_0x44fbeb,null))['catch'](handleError(_0x44fbeb,null));};exports[_0xd3a6('0x90')]=function(_0x4098d2,_0x3576b3,_0x3cd651){var _0x832584,_0x12db74;return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x4098d2['params']['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x3576b3,null))['then'](function(_0x4efde4){if(_0x4efde4){_0x12db74=_0x4efde4;return _0x4efde4[_0xd3a6('0x90')](_0x4098d2[_0xd3a6('0x4f')][_0xd3a6('0x80')],_[_0xd3a6('0x57')](_0x4098d2['body'],['ids','id'])||{})[_0xd3a6('0x91')](function(_0x111419){for(var _0x5be0ae=0x0;_0x5be0ae<_0x4098d2['body'][_0xd3a6('0x80')][_0xd3a6('0x3e')];_0x5be0ae+=0x1){socket['emit']('userVoiceQueue:save',{'UserId':Number(_0x4098d2[_0xd3a6('0x4f')][_0xd3a6('0x80')][_0x5be0ae]),'VoiceQueueId':Number(_0x4098d2[_0xd3a6('0x4a')]['id'])});}return _0x111419;});}})['then'](function(_0x5c2374){_0x832584=_0x5c2374||[];if(_0x12db74){return db[_0xd3a6('0x6c')][_0xd3a6('0x5f')]({'where':{'id':_0x4098d2['body']['ids']},'attributes':['id','name','online',_0xd3a6('0x6f'),_0xd3a6('0x70')],'raw':!![]});}})[_0xd3a6('0x27')](function(_0x48aca2){if(!_[_0xd3a6('0x92')](_0x48aca2)){var _0x553851=[];for(var _0xf18901=0x0;_0xf18901<_0x48aca2[_0xd3a6('0x3e')];_0xf18901++){if(_0x48aca2[_0xf18901][_0xd3a6('0x6e')]){_0x553851[_0xd3a6('0x93')](db[_0xd3a6('0x79')][_0xd3a6('0x7a')]({'membername':_0x48aca2[_0xf18901]['name'],'UserId':_0x48aca2[_0xf18901]['id'],'queue_name':_0x12db74[_0xd3a6('0x2f')],'VoiceQueueId':_0x12db74['id'],'interface':_[_0xd3a6('0x94')](_0x48aca2[_0xf18901][_0xd3a6('0x70')])?util[_0xd3a6('0x7b')](_0xd3a6('0x7c'),_0x48aca2[_0xf18901][_0xd3a6('0x2f')]):_0x48aca2[_0xf18901][_0xd3a6('0x70')],'paused':_0x48aca2[_0xf18901][_0xd3a6('0x6f')]||![],'penalty':_0x4098d2['body'][_0xd3a6('0x72')]||0x0}));}}return BPromise[_0xd3a6('0x8b')](_0x553851);}})[_0xd3a6('0x27')](function(){return _0x832584;})[_0xd3a6('0x27')](respondWithResult(_0x3576b3,null))[_0xd3a6('0x49')](handleError(_0x3576b3,null));};exports[_0xd3a6('0x8e')]=function(_0x385b7b,_0x5230b0,_0x5b1560){return db['VoiceQueue'][_0xd3a6('0x4d')]({'where':{'id':_0x385b7b[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x5230b0,null))[_0xd3a6('0x27')](function(_0x9fbdd2){if(_0x9fbdd2){return _0x9fbdd2[_0xd3a6('0x8e')](_0x385b7b['query']['ids'])[_0xd3a6('0x27')](function(){if(_[_0xd3a6('0x95')](_0x385b7b[_0xd3a6('0x38')]['ids'])){for(var _0x1a828e=0x0;_0x1a828e<_0x385b7b['query']['ids'][_0xd3a6('0x3e')];_0x1a828e+=0x1){socket[_0xd3a6('0x7e')](_0xd3a6('0x8f'),{'UserId':Number(_0x385b7b['query'][_0xd3a6('0x80')][_0x1a828e]),'VoiceQueueId':Number(_0x385b7b[_0xd3a6('0x4a')]['id'])});}}else{socket['emit'](_0xd3a6('0x8f'),{'UserId':Number(_0x385b7b['query'][_0xd3a6('0x80')]),'VoiceQueueId':Number(_0x385b7b[_0xd3a6('0x4a')]['id'])});}});}})[_0xd3a6('0x27')](function(_0x5538c5){return db[_0xd3a6('0x79')]['destroy']({'where':{'VoiceQueueId':_0x385b7b[_0xd3a6('0x4a')]['id'],'UserId':_0x385b7b['query'][_0xd3a6('0x80')]}})[_0xd3a6('0x27')](function(){return _0x5538c5;});})[_0xd3a6('0x27')](respondWithStatusCode(_0x5230b0,null))[_0xd3a6('0x49')](handleError(_0x5230b0,null));};exports['getAgents']=function(_0xa58086,_0x1cf352,_0x47cad6){var _0x16fa20={};var _0x43b108={};var _0x174d84;var _0xc387a4;return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0xa58086[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x1cf352,null))[_0xd3a6('0x27')](function(_0x66788d){if(_0x66788d){_0x174d84=_0x66788d;_0x43b108[_0xd3a6('0x3c')]=_[_0xd3a6('0x4b')](db['User'][_0xd3a6('0x35')]);_0x43b108['query']=_[_0xd3a6('0x4b')](_0xa58086[_0xd3a6('0x38')]);_0x43b108[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x43b108['model'],_0x43b108[_0xd3a6('0x38')]);_0x16fa20[_0xd3a6('0x3b')]=_['intersection'](_0x43b108[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0xa58086['query'][_0xd3a6('0x3d')]));_0x16fa20['attributes']=_0x16fa20['attributes'][_0xd3a6('0x3e')]?_0x16fa20['attributes']:_0x43b108[_0xd3a6('0x3c')];_0x16fa20[_0xd3a6('0x41')]=qs[_0xd3a6('0x42')](_0xa58086[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x16fa20[_0xd3a6('0x43')]=qs[_0xd3a6('0x39')](_[_0xd3a6('0x44')](_0xa58086[_0xd3a6('0x38')],_0x43b108[_0xd3a6('0x39')]));if(_0xa58086[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x16fa20[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x16fa20['where'],{'$or':_[_0xd3a6('0x2c')](_0x16fa20[_0xd3a6('0x3b')],function(_0x12b5d1){var _0x38c4f7={};_0x38c4f7[_0x12b5d1]={'$like':'%'+_0xa58086[_0xd3a6('0x38')][_0xd3a6('0x46')]+'%'};return _0x38c4f7;})});}_0x16fa20=_[_0xd3a6('0x45')]({},_0x16fa20,_0xa58086[_0xd3a6('0x47')]);return _0x174d84[_0xd3a6('0x96')](_0x16fa20);}})[_0xd3a6('0x27')](function(_0x10513b){if(_0x10513b){_0xc387a4=_0x10513b[_0xd3a6('0x3e')];if(!_0xa58086[_0xd3a6('0x38')][_0xd3a6('0x3f')](_0xd3a6('0x40'))){_0x16fa20[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0xa58086['query'][_0xd3a6('0x20')]);_0x16fa20[_0xd3a6('0x22')]=qs[_0xd3a6('0x22')](_0xa58086[_0xd3a6('0x38')][_0xd3a6('0x22')]);}return _0x174d84['getAgents'](_0x16fa20);}})[_0xd3a6('0x27')](function(_0x395619){if(_0x395619){return _0x395619?{'count':_0xc387a4,'rows':_0x395619}:null;}})[_0xd3a6('0x27')](respondWithResult(_0x1cf352,null))[_0xd3a6('0x49')](handleError(_0x1cf352,null));};exports[_0xd3a6('0x97')]=function(_0x4342e5,_0x5a248b,_0x480c06){var _0x2114a5={};var _0x25fc88={};var _0x5a11b9;var _0x5b179d;return db['VoiceQueue'][_0xd3a6('0x62')]({'where':{'id':_0x4342e5[_0xd3a6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5a248b,null))['then'](function(_0x254433){if(_0x254433){_0x5a11b9=_0x254433;_0x25fc88['model']=_[_0xd3a6('0x4b')](db['UserVoiceQueueRt'][_0xd3a6('0x35')]);_0x25fc88[_0xd3a6('0x38')]=_['keys'](_0x4342e5[_0xd3a6('0x38')]);_0x25fc88[_0xd3a6('0x39')]=_['intersection'](_0x25fc88[_0xd3a6('0x3c')],_0x25fc88[_0xd3a6('0x38')]);_0x2114a5[_0xd3a6('0x3b')]=_['intersection'](_0x25fc88[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0x4342e5[_0xd3a6('0x38')]['fields']));_0x2114a5[_0xd3a6('0x3b')]=_0x2114a5[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x2114a5['attributes']:_0x25fc88[_0xd3a6('0x3c')];_0x2114a5[_0xd3a6('0x41')]=qs['sort'](_0x4342e5[_0xd3a6('0x38')]['sort']);_0x2114a5[_0xd3a6('0x43')]=qs['filters'](_[_0xd3a6('0x44')](_0x4342e5[_0xd3a6('0x38')],_0x25fc88[_0xd3a6('0x39')]));if(_0x4342e5[_0xd3a6('0x38')]['filter']){_0x2114a5[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x2114a5[_0xd3a6('0x43')],{'$or':_['map'](_0x2114a5['attributes'],function(_0x37cd2e){var _0x54d3c5={};_0x54d3c5[_0x37cd2e]={'$like':'%'+_0x4342e5['query'][_0xd3a6('0x46')]+'%'};return _0x54d3c5;})});}_0x2114a5=_[_0xd3a6('0x45')]({},_0x2114a5,_0x4342e5[_0xd3a6('0x47')]);return _0x5a11b9[_0xd3a6('0x97')](_0x2114a5);}})[_0xd3a6('0x27')](function(_0x5af90f){if(_0x5af90f){_0x5b179d=_0x5af90f['length'];if(!_0x4342e5[_0xd3a6('0x38')][_0xd3a6('0x3f')](_0xd3a6('0x40'))){_0x2114a5[_0xd3a6('0x20')]=qs[_0xd3a6('0x20')](_0x4342e5[_0xd3a6('0x38')]['limit']);_0x2114a5[_0xd3a6('0x22')]=qs['offset'](_0x4342e5['query'][_0xd3a6('0x22')]);}return _0x5a11b9['getMembers'](_0x2114a5);}})[_0xd3a6('0x27')](function(_0x4d4553){return _0x4d4553?{'count':_0x5b179d,'rows':_0x4d4553}:null;})[_0xd3a6('0x27')](respondWithResult(_0x5a248b,null))[_0xd3a6('0x49')](handleError(_0x5a248b,null));};exports[_0xd3a6('0x98')]=function(_0x33e586,_0x34022d,_0x2bbf49){var _0x17936b={};var _0x594043={};var _0x2aa76d;var _0x40ef19;return db[_0xd3a6('0x34')][_0xd3a6('0x62')]({'where':{'id':_0x33e586[_0xd3a6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x34022d,null))[_0xd3a6('0x27')](function(_0x232c1f){if(_0x232c1f){_0x2aa76d=_0x232c1f;_0x594043[_0xd3a6('0x3c')]=_[_0xd3a6('0x4b')](db[_0xd3a6('0x99')]['rawAttributes']);_0x594043[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x33e586['query']);_0x594043[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x594043[_0xd3a6('0x3c')],_0x594043[_0xd3a6('0x38')]);_0x17936b[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x594043[_0xd3a6('0x3c')],qs[_0xd3a6('0x3d')](_0x33e586[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x17936b[_0xd3a6('0x3b')]=_0x17936b[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x17936b[_0xd3a6('0x3b')]:_0x594043[_0xd3a6('0x3c')];_0x17936b[_0xd3a6('0x41')]=qs['sort'](_0x33e586[_0xd3a6('0x38')][_0xd3a6('0x42')]);_0x17936b[_0xd3a6('0x43')]=qs[_0xd3a6('0x39')](_[_0xd3a6('0x44')](_0x33e586['query'],_0x594043['filters']));if(_0x33e586[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x17936b[_0xd3a6('0x43')]=_[_0xd3a6('0x45')](_0x17936b[_0xd3a6('0x43')],{'$or':_[_0xd3a6('0x2c')](_0x17936b[_0xd3a6('0x3b')],function(_0x266847){var _0x3ce259={};_0x3ce259[_0x266847]={'$like':'%'+_0x33e586[_0xd3a6('0x38')][_0xd3a6('0x46')]+'%'};return _0x3ce259;})});}_0x17936b=_['merge']({},_0x17936b,_0x33e586['options']);return _0x2aa76d['getLists'](_0x17936b);}})[_0xd3a6('0x27')](function(_0x49684c){if(_0x49684c){_0x40ef19=_0x49684c['length'];if(!_0x33e586[_0xd3a6('0x38')][_0xd3a6('0x3f')](_0xd3a6('0x40'))){_0x17936b['limit']=qs['limit'](_0x33e586[_0xd3a6('0x38')]['limit']);_0x17936b['offset']=qs['offset'](_0x33e586[_0xd3a6('0x38')]['offset']);}return _0x2aa76d[_0xd3a6('0x98')](_0x17936b);}})['then'](function(_0x284abc){if(_0x284abc){return _0x284abc?{'count':_0x40ef19,'rows':_0x284abc}:null;}})[_0xd3a6('0x27')](respondWithResult(_0x34022d,null))[_0xd3a6('0x49')](handleError(_0x34022d,null));};exports[_0xd3a6('0x9a')]=function(_0x6116de,_0xae82b3,_0x35b63c){var _0x563a40,_0x4e1fae;return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x6116de['params']['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0xae82b3,null))['then'](function(_0x4929ad){if(_0x4929ad){_0x4e1fae=_0x4929ad;return _0x4929ad[_0xd3a6('0x9a')](_0x6116de['body'][_0xd3a6('0x80')],_[_0xd3a6('0x57')](_0x6116de['body'],[_0xd3a6('0x80'),'id'])||{});}return null;})[_0xd3a6('0x91')](function(_0x50cce2){var _0x592b28;_0x563a40=_0x50cce2||[];var _0x5a8e59=[];if(_0x50cce2){for(var _0x16a7b0=0x0;_0x16a7b0<_0x50cce2[_0xd3a6('0x3e')];_0x16a7b0+=0x1){var _0x4098d1=_0x50cce2[_0x16a7b0][_0xd3a6('0x29')]({'plain':!![]});_0x4e1fae[_0xd3a6('0x9b')]=_0x6116de['body']['dialCheckDuplicateType']?_0x6116de[_0xd3a6('0x4f')][_0xd3a6('0x9b')]:_0x4e1fae[_0xd3a6('0x9b')];switch(_0x4e1fae[_0xd3a6('0x9b')]){case _0xd3a6('0x9c'):_0x592b28=squel[_0xd3a6('0x9d')]()[_0xd3a6('0x9e')](_0xd3a6('0x9f'))['fromQuery']([_0xd3a6('0xa0'),_0xd3a6('0xa1'),_0xd3a6('0xa2'),_0xd3a6('0xa3'),_0xd3a6('0x5d'),'createdAt',_0xd3a6('0x58')],squel[_0xd3a6('0xa4')]()[_0xd3a6('0x81')]('phone',_0xd3a6('0xa0'))[_0xd3a6('0x81')]('NOW()',_0xd3a6('0xa1'))[_0xd3a6('0x81')]('id','ContactId')[_0xd3a6('0x81')](_0x4098d1['CmListId'][_0xd3a6('0x86')](),'ListId')[_0xd3a6('0x81')](_0x6116de['params']['id']['toString'](),_0xd3a6('0x5d'))['field'](_0xd3a6('0xa5'),_0xd3a6('0x59'))['field'](_0xd3a6('0xa5'),_0xd3a6('0x58'))['from'](_0xd3a6('0xa6'))[_0xd3a6('0x43')](_0xd3a6('0xa7'))['where'](_0xd3a6('0xa8'),_0x4098d1[_0xd3a6('0xa9')][_0xd3a6('0x86')]())[_0xd3a6('0x43')](_0xd3a6('0xaa'))[_0xd3a6('0x43')](_0xd3a6('0xab'),squel[_0xd3a6('0xa4')]()[_0xd3a6('0x81')](_0xd3a6('0xac'))['from'](_0xd3a6('0xad'))[_0xd3a6('0x43')](_0xd3a6('0x85'),_0x6116de[_0xd3a6('0x4a')]['id'][_0xd3a6('0x86')]()))[_0xd3a6('0x43')](_0xd3a6('0xab'),squel[_0xd3a6('0xa4')]()[_0xd3a6('0x81')](_0xd3a6('0xae'))['from']('cm_hopper')[_0xd3a6('0x43')]('VoiceQueueId\x20=\x20?',_0x6116de['params']['id'][_0xd3a6('0x86')]())))[_0xd3a6('0x86')]();break;case _0xd3a6('0xaf'):_0x592b28=squel[_0xd3a6('0x9d')]()[_0xd3a6('0x9e')](_0xd3a6('0x9f'))[_0xd3a6('0xb0')](['phone',_0xd3a6('0xa1'),_0xd3a6('0xa2'),'ListId',_0xd3a6('0x5d'),_0xd3a6('0x59'),_0xd3a6('0x58')],squel['select']()[_0xd3a6('0x81')](_0xd3a6('0xa0'),'phone')[_0xd3a6('0x81')](_0xd3a6('0xa5'),_0xd3a6('0xa1'))['field']('id',_0xd3a6('0xa2'))['field'](_0x4098d1[_0xd3a6('0xa9')][_0xd3a6('0x86')](),_0xd3a6('0xa3'))[_0xd3a6('0x81')](_0x6116de[_0xd3a6('0x4a')]['id']['toString'](),_0xd3a6('0x5d'))[_0xd3a6('0x81')](_0xd3a6('0xa5'),_0xd3a6('0x59'))[_0xd3a6('0x81')]('NOW()',_0xd3a6('0x58'))['from'](_0xd3a6('0xa6'))[_0xd3a6('0x43')](_0xd3a6('0xa7'))[_0xd3a6('0x43')](_0xd3a6('0xa8'),_0x4098d1[_0xd3a6('0xa9')][_0xd3a6('0x86')]())[_0xd3a6('0x43')](_0xd3a6('0xaa'))[_0xd3a6('0x43')](_0xd3a6('0xab'),squel['select']()['field'](_0xd3a6('0xae'))[_0xd3a6('0xb1')](_0xd3a6('0x9f'))[_0xd3a6('0x43')](_0xd3a6('0x85'),_0x6116de[_0xd3a6('0x4a')]['id']['toString']())))[_0xd3a6('0x86')]();break;default:_0x592b28=squel[_0xd3a6('0x9d')]()['into'](_0xd3a6('0x9f'))[_0xd3a6('0xb0')]([_0xd3a6('0xa0'),'scheduledAt',_0xd3a6('0xa2'),'ListId',_0xd3a6('0x5d'),_0xd3a6('0x59'),_0xd3a6('0x58')],squel['select']()[_0xd3a6('0x81')]('phone',_0xd3a6('0xa0'))[_0xd3a6('0x81')](_0xd3a6('0xa5'),_0xd3a6('0xa1'))['field']('id',_0xd3a6('0xa2'))['field'](_0x4098d1[_0xd3a6('0xa9')][_0xd3a6('0x86')](),_0xd3a6('0xa3'))[_0xd3a6('0x81')](_0x6116de['params']['id'][_0xd3a6('0x86')](),_0xd3a6('0x5d'))[_0xd3a6('0x81')]('NOW()',_0xd3a6('0x59'))['field']('NOW()',_0xd3a6('0x58'))['from'](_0xd3a6('0xa6'))[_0xd3a6('0x43')](_0xd3a6('0xa7'))[_0xd3a6('0x43')](_0xd3a6('0xa8'),_0x4098d1[_0xd3a6('0xa9')][_0xd3a6('0x86')]())['where']('phone\x20IS\x20NOT\x20NULL'))[_0xd3a6('0x86')]();}_0x5a8e59[_0xd3a6('0x93')](db['sequelize'][_0xd3a6('0x38')](_0x592b28));}return BPromise[_0xd3a6('0x8b')](_0x5a8e59);}})['then'](function(){return _0x563a40;})[_0xd3a6('0x27')](respondWithResult(_0xae82b3,null))['catch'](handleError(_0xae82b3,null));};exports[_0xd3a6('0xb2')]=function(_0x235eeb,_0x4a618c,_0x21a1da){return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x235eeb[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x4a618c,null))[_0xd3a6('0x27')](function(_0x27efb){if(_0x27efb){return _0x27efb[_0xd3a6('0xb2')](_0x235eeb[_0xd3a6('0x38')]['ids']);}})[_0xd3a6('0x27')](function(_0x58c899){if(_0x58c899){return db['CmHopper']['destroy']({'where':{'ListId':_0x235eeb[_0xd3a6('0x38')][_0xd3a6('0x80')],'VoiceQueueId':_0x235eeb[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](function(){return _0x58c899;});}})[_0xd3a6('0x27')](respondWithStatusCode(_0x4a618c,null))[_0xd3a6('0x49')](handleError(_0x4a618c,null));};exports[_0xd3a6('0xb3')]=function(_0x2d72d0,_0x2107b4,_0x1c80a6){var _0x5aac6b={};var _0x444428={};var _0x51a0df;var _0x5a3861;return db['VoiceQueue'][_0xd3a6('0x62')]({'where':{'id':_0x2d72d0[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](handleEntityNotFound(_0x2107b4,null))[_0xd3a6('0x27')](function(_0x418672){if(_0x418672){_0x51a0df=_0x418672;_0x444428[_0xd3a6('0x3c')]=_[_0xd3a6('0x4b')](db[_0xd3a6('0x99')][_0xd3a6('0x35')]);_0x444428[_0xd3a6('0x38')]=_[_0xd3a6('0x4b')](_0x2d72d0[_0xd3a6('0x38')]);_0x444428[_0xd3a6('0x39')]=_[_0xd3a6('0x3a')](_0x444428['model'],_0x444428[_0xd3a6('0x38')]);_0x5aac6b[_0xd3a6('0x3b')]=_[_0xd3a6('0x3a')](_0x444428['model'],qs[_0xd3a6('0x3d')](_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x3d')]));_0x5aac6b[_0xd3a6('0x3b')]=_0x5aac6b[_0xd3a6('0x3b')][_0xd3a6('0x3e')]?_0x5aac6b[_0xd3a6('0x3b')]:_0x444428[_0xd3a6('0x3c')];_0x5aac6b[_0xd3a6('0x41')]=qs['sort'](_0x2d72d0['query']['sort']);_0x5aac6b['where']=qs['filters'](_['pick'](_0x2d72d0[_0xd3a6('0x38')],_0x444428[_0xd3a6('0x39')]));if(_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x46')]){_0x5aac6b['where']=_[_0xd3a6('0x45')](_0x5aac6b['where'],{'$or':_[_0xd3a6('0x2c')](_0x5aac6b[_0xd3a6('0x3b')],function(_0x37f278){var _0x50bda8={};_0x50bda8[_0x37f278]={'$like':'%'+_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x46')]+'%'};return _0x50bda8;})});}_0x5aac6b=_[_0xd3a6('0x45')]({},_0x5aac6b,_0x2d72d0['options']);return _0x51a0df[_0xd3a6('0xb3')](_0x5aac6b);}})[_0xd3a6('0x27')](function(_0x5caf52){if(_0x5caf52){_0x5a3861=_0x5caf52['length'];if(!_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x3f')]('nolimit')){_0x5aac6b['limit']=qs[_0xd3a6('0x20')](_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x20')]);_0x5aac6b[_0xd3a6('0x22')]=qs[_0xd3a6('0x22')](_0x2d72d0[_0xd3a6('0x38')][_0xd3a6('0x22')]);}return _0x51a0df[_0xd3a6('0xb3')](_0x5aac6b);}})[_0xd3a6('0x27')](function(_0x4c1730){if(_0x4c1730){return _0x4c1730?{'count':_0x5a3861,'rows':_0x4c1730}:null;}})[_0xd3a6('0x27')](respondWithResult(_0x2107b4,null))[_0xd3a6('0x49')](handleError(_0x2107b4,null));};exports[_0xd3a6('0xb4')]=function(_0x31ea33,_0xfe23ae,_0x40bfd4){var _0xb1dbdb,_0x421e53;return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x31ea33['params']['id']}})['then'](handleEntityNotFound(_0xfe23ae,null))[_0xd3a6('0x27')](function(_0x323432){if(_0x323432){_0x421e53=_0x323432;return _0x323432[_0xd3a6('0xb4')](_0x31ea33[_0xd3a6('0x4f')][_0xd3a6('0x80')],_[_0xd3a6('0x57')](_0x31ea33['body'],[_0xd3a6('0x80'),'id'])||{});}return null;})[_0xd3a6('0x91')](function(_0x4c3589){var _0x254de8;_0xb1dbdb=_0x4c3589||[];var _0x5db7d5=[];if(_0x4c3589){for(var _0x6b79ee=0x0;_0x6b79ee<_0x4c3589['length'];_0x6b79ee+=0x1){var _0x3f7890=_0x4c3589[_0x6b79ee][_0xd3a6('0x29')]({'plain':!![]});_0x254de8=squel[_0xd3a6('0x9d')]()[_0xd3a6('0x9e')](_0xd3a6('0xb5'))['fromQuery']([_0xd3a6('0xa0'),'ContactId',_0xd3a6('0xa3'),_0xd3a6('0x5d'),_0xd3a6('0x59'),_0xd3a6('0x58')],squel[_0xd3a6('0xa4')]()[_0xd3a6('0x81')]('phone',_0xd3a6('0xa0'))[_0xd3a6('0x81')]('id',_0xd3a6('0xa2'))['field'](_0x3f7890['CmListId']['toString'](),_0xd3a6('0xa3'))[_0xd3a6('0x81')](_0x31ea33['params']['id'][_0xd3a6('0x86')](),_0xd3a6('0x5d'))[_0xd3a6('0x81')](_0xd3a6('0xa5'),_0xd3a6('0x59'))[_0xd3a6('0x81')](_0xd3a6('0xa5'),_0xd3a6('0x58'))['from']('cm_contacts')[_0xd3a6('0x43')](_0xd3a6('0xa7'))[_0xd3a6('0x43')]('ListId\x20=\x20?',_0x3f7890[_0xd3a6('0xa9')][_0xd3a6('0x86')]())[_0xd3a6('0x43')](_0xd3a6('0xaa')))[_0xd3a6('0x86')]();_0x5db7d5[_0xd3a6('0x93')](db[_0xd3a6('0x73')][_0xd3a6('0x38')](_0x254de8));}return BPromise['all'](_0x5db7d5);}})[_0xd3a6('0x27')](function(){return _0xb1dbdb;})[_0xd3a6('0x27')](respondWithResult(_0xfe23ae,null))[_0xd3a6('0x49')](handleError(_0xfe23ae,null));};exports[_0xd3a6('0xb6')]=function(_0x5385ee,_0xd2f97a,_0x111a68){return db[_0xd3a6('0x34')][_0xd3a6('0x4d')]({'where':{'id':_0x5385ee['params']['id']}})['then'](handleEntityNotFound(_0xd2f97a,null))['then'](function(_0x3084a3){if(_0x3084a3){return _0x3084a3[_0xd3a6('0xb6')](_0x5385ee[_0xd3a6('0x38')]['ids']);}})[_0xd3a6('0x27')](function(_0xfe6933){if(_0xfe6933){return db['CmHopperBlack'][_0xd3a6('0x28')]({'where':{'ListId':_0x5385ee[_0xd3a6('0x38')][_0xd3a6('0x80')],'VoiceQueueId':_0x5385ee[_0xd3a6('0x4a')]['id']}})[_0xd3a6('0x27')](function(){return _0xfe6933;});}})['then'](respondWithStatusCode(_0xd2f97a,null))['catch'](handleError(_0xd2f97a,null));};
\ No newline at end of file
index fa7162c..d573412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68a6=['events','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x506d2f,_0x5ab76e){var _0x101255=function(_0x1596b1){while(--_0x1596b1){_0x506d2f['push'](_0x506d2f['shift']());}};_0x101255(++_0x5ab76e);}(_0x68a6,0x140));var _0x668a=function(_0x590baf,_0x4609e2){_0x590baf=_0x590baf-0x0;var _0x44cd9f=_0x68a6[_0x590baf];return _0x44cd9f;};'use strict';var EventEmitter=require(_0x668a('0x0'));var VoiceQueue=require('../../mysqldb')['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x668a('0x1'),'afterUpdate':_0x668a('0x2'),'afterDestroy':_0x668a('0x3')};function emitEvent(_0x9ba675){return function(_0x7d8c16,_0x510fd0,_0x496194){VoiceQueueEvents[_0x668a('0x4')](_0x9ba675+':'+_0x7d8c16['id'],_0x7d8c16);VoiceQueueEvents[_0x668a('0x4')](_0x9ba675,_0x7d8c16);_0x496194(null);};}for(var e in events){if(events[_0x668a('0x5')](e)){var event=events[e];VoiceQueue[_0x668a('0x6')](e,emitEvent(event));}}module[_0x668a('0x7')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x9ca5=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9ca5,0x104));var _0x59ca=function(_0x1ab180,_0x382b2c){_0x1ab180=_0x1ab180-0x0;var _0xfb2c2d=_0x9ca5[_0x1ab180];return _0xfb2c2d;};'use strict';var EventEmitter=require(_0x59ca('0x0'));var VoiceQueue=require(_0x59ca('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x59ca('0x2')](0x0);var events={'afterCreate':_0x59ca('0x3'),'afterUpdate':_0x59ca('0x4'),'afterDestroy':_0x59ca('0x5')};function emitEvent(_0x130598){return function(_0x34b57d,_0x17b54b,_0x353cdb){VoiceQueueEvents[_0x59ca('0x6')](_0x130598+':'+_0x34b57d['id'],_0x34b57d);VoiceQueueEvents[_0x59ca('0x6')](_0x130598,_0x34b57d);_0x353cdb(null);};}for(var e in events){if(events[_0x59ca('0x7')](e)){var event=events[e];VoiceQueue[_0x59ca('0x8')](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
index 80b4fd3..3d3e6e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports','VoiceQueue'];(function(_0x45a0c0,_0x4a4455){var _0x3dbe5a=function(_0x1686aa){while(--_0x1686aa){_0x45a0c0['push'](_0x45a0c0['shift']());}};_0x3dbe5a(++_0x4a4455);}(_0x34e8,0x12c));var _0x834e=function(_0x4a5c97,_0x3651b8){_0x4a5c97=_0x4a5c97-0x0;var _0x33d051=_0x34e8[_0x4a5c97];return _0x33d051;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./voiceQueue.attributes','exports','define','VoiceQueue','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x5a3241,_0x58e3ed){var _0x1088bd=function(_0x214e23){while(--_0x214e23){_0x5a3241['push'](_0x5a3241['shift']());}};_0x1088bd(++_0x58e3ed);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b3870e5..35be06e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0762=['model','map','info','ShowVoiceQueue','VoiceQueue','find','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','request','then','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueue','findAll','options','where','attributes','limit','include'];(function(_0xdaee61,_0x4d1346){var _0x4c2df9=function(_0x4e794c){while(--_0x4e794c){_0xdaee61['push'](_0xdaee61['shift']());}};_0x4c2df9(++_0x4d1346);}(_0x0762,0x1e7));var _0x2076=function(_0x133f22,_0x3d0cbb){_0x133f22=_0x133f22-0x0;var _0x5a9fca=_0x0762[_0x133f22];return _0x5a9fca;};'use strict';var _=require('lodash');var util=require(_0x2076('0x0'));var moment=require(_0x2076('0x1'));var BPromise=require('bluebird');var rs=require(_0x2076('0x2'));var fs=require('fs');var Redis=require(_0x2076('0x3'));var db=require(_0x2076('0x4'))['db'];var utils=require(_0x2076('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x2076('0x6'));var client=jayson['client'][_0x2076('0x7')]({'port':0x232a});config[_0x2076('0x8')]=_[_0x2076('0x9')](config[_0x2076('0x8')],{'host':_0x2076('0xa'),'port':0x18eb});var socket=require(_0x2076('0xb'))(new Redis(config[_0x2076('0x8')]));require('./voiceQueue.socket')['register'](socket);function respondWithRpcPromise(_0x452e56,_0x276c0b,_0x454c52){return new BPromise(function(_0x890796,_0x7dc156){return client[_0x2076('0xc')](_0x452e56,_0x454c52)[_0x2076('0xd')](function(_0x435822){logger['info'](_0x2076('0xe'),_0x276c0b,_0x2076('0xf'));logger[_0x2076('0x10')](_0x2076('0x11'),_0x276c0b,_0x2076('0xf'),JSON[_0x2076('0x12')](_0x435822));if(_0x435822[_0x2076('0x13')]){if(_0x435822[_0x2076('0x13')][_0x2076('0x14')]===0x1f4){logger['error']('VoiceQueue,\x20%s,\x20%s',_0x276c0b,_0x435822[_0x2076('0x13')][_0x2076('0x15')]);return _0x7dc156(_0x435822[_0x2076('0x13')][_0x2076('0x15')]);}logger[_0x2076('0x13')](_0x2076('0xe'),_0x276c0b,_0x435822['error']['message']);return _0x890796(_0x435822['error'][_0x2076('0x15')]);}else{logger['info']('VoiceQueue,\x20%s,\x20%s',_0x276c0b,_0x2076('0xf'));_0x890796(_0x435822[_0x2076('0x16')][_0x2076('0x15')]);}})[_0x2076('0x17')](function(_0x492b8d){logger[_0x2076('0x13')](_0x2076('0xe'),_0x276c0b,_0x492b8d);_0x7dc156(_0x492b8d);});});}exports[_0x2076('0x18')]=function(_0x573e24){var _0x15e98b=this;return new Promise(function(_0x36a808,_0x1c7bdb){return db['VoiceQueue'][_0x2076('0x19')]({'raw':_0x573e24['options']?_0x573e24['options']['raw']===undefined?!![]:![]:!![],'where':_0x573e24[_0x2076('0x1a')]?_0x573e24['options'][_0x2076('0x1b')]||null:null,'attributes':_0x573e24[_0x2076('0x1a')]?_0x573e24['options'][_0x2076('0x1c')]||null:null,'limit':_0x573e24[_0x2076('0x1a')]?_0x573e24[_0x2076('0x1a')][_0x2076('0x1d')]||null:null,'include':_0x573e24[_0x2076('0x1a')]?_0x573e24[_0x2076('0x1a')]['include']?_['map'](_0x573e24[_0x2076('0x1a')][_0x2076('0x1e')],function(_0x4178a8){return{'model':db[_0x4178a8[_0x2076('0x1f')]],'as':_0x4178a8['as'],'attributes':_0x4178a8[_0x2076('0x1c')],'include':_0x4178a8[_0x2076('0x1e')]?_['map'](_0x4178a8[_0x2076('0x1e')],function(_0x4d8faf){return{'model':db[_0x4d8faf[_0x2076('0x1f')]],'as':_0x4d8faf['as'],'attributes':_0x4d8faf[_0x2076('0x1c')],'include':_0x4d8faf[_0x2076('0x1e')]?_[_0x2076('0x20')](_0x4d8faf[_0x2076('0x1e')],function(_0x63f9b8){return{'model':db[_0x63f9b8[_0x2076('0x1f')]],'as':_0x63f9b8['as'],'attributes':_0x63f9b8['attributes']};}):[]};}):[]};}):[]:[]})[_0x2076('0xd')](function(_0x51ebb8){logger[_0x2076('0x21')]('GetVoiceQueue',_0x573e24);logger['debug'](_0x2076('0x18'),_0x573e24,JSON[_0x2076('0x12')](_0x51ebb8));_0x36a808(_0x51ebb8);})[_0x2076('0x17')](function(_0x1fd828){logger[_0x2076('0x13')]('GetVoiceQueue',_0x1fd828[_0x2076('0x15')],_0x573e24);_0x1c7bdb(_0x15e98b[_0x2076('0x13')](0x1f4,_0x1fd828[_0x2076('0x15')]));});});};exports[_0x2076('0x22')]=function(_0x35e2b4){var _0x31d218=this;return new Promise(function(_0x2b097a,_0x414814){return db[_0x2076('0x23')][_0x2076('0x24')]({'raw':_0x35e2b4[_0x2076('0x1a')]?_0x35e2b4[_0x2076('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x35e2b4[_0x2076('0x1a')]?_0x35e2b4['options'][_0x2076('0x1b')]||null:null,'attributes':_0x35e2b4[_0x2076('0x1a')]?_0x35e2b4[_0x2076('0x1a')][_0x2076('0x1c')]||null:null,'include':_0x35e2b4[_0x2076('0x1a')]?_0x35e2b4['options'][_0x2076('0x1e')]?_['map'](_0x35e2b4['options'][_0x2076('0x1e')],function(_0x4dbe2c){return{'model':db[_0x4dbe2c[_0x2076('0x1f')]],'as':_0x4dbe2c['as'],'attributes':_0x4dbe2c['attributes'],'include':_0x4dbe2c[_0x2076('0x1e')]?_[_0x2076('0x20')](_0x4dbe2c[_0x2076('0x1e')],function(_0x328f1e){return{'model':db[_0x328f1e[_0x2076('0x1f')]],'as':_0x328f1e['as'],'attributes':_0x328f1e['attributes'],'include':_0x328f1e[_0x2076('0x1e')]?_[_0x2076('0x20')](_0x328f1e['include'],function(_0x2bd2d5){return{'model':db[_0x2bd2d5[_0x2076('0x1f')]],'as':_0x2bd2d5['as'],'attributes':_0x2bd2d5[_0x2076('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x2076('0xd')](function(_0x465dc9){logger[_0x2076('0x21')](_0x2076('0x22'),_0x35e2b4);logger[_0x2076('0x10')](_0x2076('0x22'),_0x35e2b4,JSON[_0x2076('0x12')](_0x465dc9));_0x2b097a(_0x465dc9);})['catch'](function(_0x19769a){logger[_0x2076('0x13')](_0x2076('0x22'),_0x19769a[_0x2076('0x15')],_0x35e2b4);_0x414814(_0x31d218[_0x2076('0x13')](0x1f4,_0x19769a[_0x2076('0x15')]));});});};
\ No newline at end of file
+var _0xb78e=['VoiceQueue,\x20%s,\x20%s','VoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','include','map','model','debug','ShowVoiceQueue','find','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./voiceQueue.socket','register','request','then'];(function(_0x18a231,_0xcfb728){var _0x30fd8f=function(_0x5cc136){while(--_0x5cc136){_0x18a231['push'](_0x18a231['shift']());}};_0x30fd8f(++_0xcfb728);}(_0xb78e,0xc3));var _0xeb78=function(_0x4d705f,_0x101f88){_0x4d705f=_0x4d705f-0x0;var _0x4fd29e=_0xb78e[_0x4d705f];return _0x4fd29e;};'use strict';var _=require(_0xeb78('0x0'));var util=require(_0xeb78('0x1'));var moment=require('moment');var BPromise=require(_0xeb78('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeb78('0x3'));var db=require(_0xeb78('0x4'))['db'];var utils=require(_0xeb78('0x5'));var logger=require(_0xeb78('0x6'))(_0xeb78('0x7'));var config=require(_0xeb78('0x8'));var jayson=require(_0xeb78('0x9'));var client=jayson[_0xeb78('0xa')][_0xeb78('0xb')]({'port':0x232a});config['redis']=_[_0xeb78('0xc')](config[_0xeb78('0xd')],{'host':_0xeb78('0xe'),'port':0x18eb});var socket=require(_0xeb78('0xf'))(new Redis(config[_0xeb78('0xd')]));require(_0xeb78('0x10'))[_0xeb78('0x11')](socket);function respondWithRpcPromise(_0x8e1c88,_0x8e4bff,_0x222144){return new BPromise(function(_0x4edad2,_0x232492){return client[_0xeb78('0x12')](_0x8e1c88,_0x222144)[_0xeb78('0x13')](function(_0x36581e){logger['info'](_0xeb78('0x14'),_0x8e4bff,'request\x20sent');logger['debug'](_0xeb78('0x15'),_0x8e4bff,_0xeb78('0x16'),JSON[_0xeb78('0x17')](_0x36581e));if(_0x36581e[_0xeb78('0x18')]){if(_0x36581e[_0xeb78('0x18')][_0xeb78('0x19')]===0x1f4){logger[_0xeb78('0x18')](_0xeb78('0x14'),_0x8e4bff,_0x36581e['error']['message']);return _0x232492(_0x36581e['error'][_0xeb78('0x1a')]);}logger[_0xeb78('0x18')](_0xeb78('0x14'),_0x8e4bff,_0x36581e[_0xeb78('0x18')][_0xeb78('0x1a')]);return _0x4edad2(_0x36581e[_0xeb78('0x18')]['message']);}else{logger[_0xeb78('0x1b')]('VoiceQueue,\x20%s,\x20%s',_0x8e4bff,'request\x20sent');_0x4edad2(_0x36581e[_0xeb78('0x1c')]['message']);}})[_0xeb78('0x1d')](function(_0x4fc702){logger[_0xeb78('0x18')](_0xeb78('0x14'),_0x8e4bff,_0x4fc702);_0x232492(_0x4fc702);});});}exports[_0xeb78('0x1e')]=function(_0x47338b){var _0xd14373=this;return new Promise(function(_0x5f5bd8,_0x9f6e3a){return db[_0xeb78('0x1f')][_0xeb78('0x20')]({'raw':_0x47338b[_0xeb78('0x21')]?_0x47338b[_0xeb78('0x21')][_0xeb78('0x22')]===undefined?!![]:![]:!![],'where':_0x47338b[_0xeb78('0x21')]?_0x47338b['options'][_0xeb78('0x23')]||null:null,'attributes':_0x47338b['options']?_0x47338b[_0xeb78('0x21')][_0xeb78('0x24')]||null:null,'limit':_0x47338b[_0xeb78('0x21')]?_0x47338b[_0xeb78('0x21')]['limit']||null:null,'include':_0x47338b[_0xeb78('0x21')]?_0x47338b[_0xeb78('0x21')][_0xeb78('0x25')]?_[_0xeb78('0x26')](_0x47338b['options'][_0xeb78('0x25')],function(_0xbe3199){return{'model':db[_0xbe3199[_0xeb78('0x27')]],'as':_0xbe3199['as'],'attributes':_0xbe3199['attributes'],'include':_0xbe3199['include']?_[_0xeb78('0x26')](_0xbe3199[_0xeb78('0x25')],function(_0x561c72){return{'model':db[_0x561c72[_0xeb78('0x27')]],'as':_0x561c72['as'],'attributes':_0x561c72[_0xeb78('0x24')],'include':_0x561c72[_0xeb78('0x25')]?_[_0xeb78('0x26')](_0x561c72['include'],function(_0x2b1fef){return{'model':db[_0x2b1fef['model']],'as':_0x2b1fef['as'],'attributes':_0x2b1fef[_0xeb78('0x24')]};}):[]};}):[]};}):[]:[]})[_0xeb78('0x13')](function(_0x381fc5){logger['info'](_0xeb78('0x1e'),_0x47338b);logger[_0xeb78('0x28')]('GetVoiceQueue',_0x47338b,JSON[_0xeb78('0x17')](_0x381fc5));_0x5f5bd8(_0x381fc5);})[_0xeb78('0x1d')](function(_0x585db1){logger[_0xeb78('0x18')](_0xeb78('0x1e'),_0x585db1[_0xeb78('0x1a')],_0x47338b);_0x9f6e3a(_0xd14373['error'](0x1f4,_0x585db1[_0xeb78('0x1a')]));});});};exports[_0xeb78('0x29')]=function(_0x18edf2){var _0x2cbc20=this;return new Promise(function(_0x59f883,_0x16c0da){return db['VoiceQueue'][_0xeb78('0x2a')]({'raw':_0x18edf2[_0xeb78('0x21')]?_0x18edf2['options'][_0xeb78('0x22')]===undefined?!![]:![]:!![],'where':_0x18edf2[_0xeb78('0x21')]?_0x18edf2[_0xeb78('0x21')][_0xeb78('0x23')]||null:null,'attributes':_0x18edf2['options']?_0x18edf2[_0xeb78('0x21')][_0xeb78('0x24')]||null:null,'include':_0x18edf2[_0xeb78('0x21')]?_0x18edf2['options']['include']?_[_0xeb78('0x26')](_0x18edf2['options'][_0xeb78('0x25')],function(_0x227fde){return{'model':db[_0x227fde['model']],'as':_0x227fde['as'],'attributes':_0x227fde['attributes'],'include':_0x227fde[_0xeb78('0x25')]?_[_0xeb78('0x26')](_0x227fde['include'],function(_0x35bddb){return{'model':db[_0x35bddb['model']],'as':_0x35bddb['as'],'attributes':_0x35bddb[_0xeb78('0x24')],'include':_0x35bddb['include']?_[_0xeb78('0x26')](_0x35bddb[_0xeb78('0x25')],function(_0x302c56){return{'model':db[_0x302c56[_0xeb78('0x27')]],'as':_0x302c56['as'],'attributes':_0x302c56['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e635f){logger[_0xeb78('0x1b')](_0xeb78('0x29'),_0x18edf2);logger['debug'](_0xeb78('0x29'),_0x18edf2,JSON[_0xeb78('0x17')](_0x1e635f));_0x59f883(_0x1e635f);})[_0xeb78('0x1d')](function(_0x5d27fa){logger[_0xeb78('0x18')](_0xeb78('0x29'),_0x5d27fa[_0xeb78('0x1a')],_0x18edf2);_0x16c0da(_0x2cbc20[_0xeb78('0x18')](0x1f4,_0x5d27fa[_0xeb78('0x1a')]));});});};
\ No newline at end of file
index f6a4732..8c1f511 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe811=['voiceQueue:','./voiceQueue.events','update','emit','removeListener','register','length'];(function(_0x19c5dd,_0x2a35f5){var _0x40218d=function(_0x1a07ad){while(--_0x1a07ad){_0x19c5dd['push'](_0x19c5dd['shift']());}};_0x40218d(++_0x2a35f5);}(_0xe811,0xe1));var _0x1e81=function(_0x1aaf71,_0x495878){_0x1aaf71=_0x1aaf71-0x0;var _0x1a3993=_0xe811[_0x1aaf71];return _0x1a3993;};'use strict';var VoiceQueueEvents=require(_0x1e81('0x0'));var events=['save','remove',_0x1e81('0x1')];function createListener(_0x3a8e32,_0x29ce62){return function(_0x9e021c){_0x29ce62[_0x1e81('0x2')](_0x3a8e32,_0x9e021c);};}function removeListener(_0x3fccec,_0xcf08d0){return function(){VoiceQueueEvents[_0x1e81('0x3')](_0x3fccec,_0xcf08d0);};}exports[_0x1e81('0x4')]=function(_0x13d6d7){for(var _0x4abcf0=0x0,_0x2ede97=events[_0x1e81('0x5')];_0x4abcf0<_0x2ede97;_0x4abcf0++){var _0xa28eae=events[_0x4abcf0];var _0x177314=createListener(_0x1e81('0x6')+_0xa28eae,_0x13d6d7);VoiceQueueEvents['on'](_0xa28eae,_0x177314);}};
\ No newline at end of file
+var _0x4496=['update','emit','register','length','voiceQueue:','./voiceQueue.events','save','remove'];(function(_0x435553,_0x38efb7){var _0x4fb934=function(_0x256bec){while(--_0x256bec){_0x435553['push'](_0x435553['shift']());}};_0x4fb934(++_0x38efb7);}(_0x4496,0x1bd));var _0x6449=function(_0x56ce32,_0x5296b5){_0x56ce32=_0x56ce32-0x0;var _0x4aae97=_0x4496[_0x56ce32];return _0x4aae97;};'use strict';var VoiceQueueEvents=require(_0x6449('0x0'));var events=[_0x6449('0x1'),_0x6449('0x2'),_0x6449('0x3')];function createListener(_0x204823,_0x122588){return function(_0x81ccd3){_0x122588[_0x6449('0x4')](_0x204823,_0x81ccd3);};}function removeListener(_0x5cb77c,_0x17f6c5){return function(){VoiceQueueEvents['removeListener'](_0x5cb77c,_0x17f6c5);};}exports[_0x6449('0x5')]=function(_0x397f49){for(var _0x5532ce=0x0,_0x321cd0=events[_0x6449('0x6')];_0x5532ce<_0x321cd0;_0x5532ce++){var _0x30258c=events[_0x5532ce];var _0x5e893f=createListener(_0x6449('0x7')+_0x30258c,_0x397f49);VoiceQueueEvents['on'](_0x30258c,_0x5e893f);}};
\ No newline at end of file
index e1297f0..619b524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf980=['/index','getVoiceQueuesReport','/:id','show','post','put','update','delete','destroy','multer','util','express','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','isAuthenticated','describe'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0xf980,0xcf));var _0x0f98=function(_0x59d546,_0x107f05){_0x59d546=_0x59d546-0x0;var _0x41fbdb=_0xf980[_0x59d546];return _0x41fbdb;};'use strict';var multer=require(_0x0f98('0x0'));var util=require(_0x0f98('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0f98('0x2'));var router=express['Router']();var fs_extra=require(_0x0f98('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x0f98('0x4'));var config=require(_0x0f98('0x5'));var controller=require(_0x0f98('0x6'));router['get']('/',auth[_0x0f98('0x7')](),controller['index']);router['get']('/describe',auth[_0x0f98('0x7')](),controller[_0x0f98('0x8')]);router['get'](_0x0f98('0x9'),auth[_0x0f98('0x7')](),controller[_0x0f98('0xa')]);router['get'](_0x0f98('0xb'),auth['isAuthenticated'](),controller[_0x0f98('0xc')]);router[_0x0f98('0xd')]('/',auth[_0x0f98('0x7')](),controller['create']);router[_0x0f98('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x0f98('0xf')]);router[_0x0f98('0x10')](_0x0f98('0xb'),auth[_0x0f98('0x7')](),controller[_0x0f98('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xc86b=['util','path','connect-timeout','express','Router','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','/index','getVoiceQueuesReport','/:id','show','create','put','update','delete','exports','multer'];(function(_0x3210ee,_0x345bbd){var _0x5cba93=function(_0x1a5566){while(--_0x1a5566){_0x3210ee['push'](_0x3210ee['shift']());}};_0x5cba93(++_0x345bbd);}(_0xc86b,0x1cd));var _0xbc86=function(_0x50c754,_0x44c558){_0x50c754=_0x50c754-0x0;var _0x4fc8b4=_0xc86b[_0x50c754];return _0x4fc8b4;};'use strict';var multer=require(_0xbc86('0x0'));var util=require(_0xbc86('0x1'));var path=require(_0xbc86('0x2'));var timeout=require(_0xbc86('0x3'));var express=require(_0xbc86('0x4'));var router=express[_0xbc86('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbc86('0x6'));var controller=require(_0xbc86('0x7'));router[_0xbc86('0x8')]('/',auth[_0xbc86('0x9')](),controller[_0xbc86('0xa')]);router[_0xbc86('0x8')](_0xbc86('0xb'),auth[_0xbc86('0x9')](),controller['describe']);router[_0xbc86('0x8')](_0xbc86('0xc'),auth['isAuthenticated'](),controller[_0xbc86('0xd')]);router[_0xbc86('0x8')](_0xbc86('0xe'),auth[_0xbc86('0x9')](),controller[_0xbc86('0xf')]);router['post']('/',auth[_0xbc86('0x9')](),controller[_0xbc86('0x10')]);router[_0xbc86('0x11')](_0xbc86('0xe'),auth[_0xbc86('0x9')](),controller[_0xbc86('0x12')]);router[_0xbc86('0x13')](_0xbc86('0xe'),auth[_0xbc86('0x9')](),controller['destroy']);module[_0xbc86('0x14')]=router;
\ No newline at end of file
index 53a2511..076e0ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00d9=['DATE','getDataValue','queuecallerjoinAt','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING'];(function(_0x5fb80e,_0x5a2095){var _0xa58c1=function(_0x57a0f1){while(--_0x57a0f1){_0x5fb80e['push'](_0x5fb80e['shift']());}};_0xa58c1(++_0x5a2095);}(_0x00d9,0xec));var _0x900d=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x00d9[_0x4d8ed9];return _0x1e2140;};'use strict';var Sequelize=require(_0x900d('0x0'));var moment=require(_0x900d('0x1'));module[_0x900d('0x2')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x900d('0x3')]},'calleridnum':{'type':Sequelize[_0x900d('0x3')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x900d('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0x900d('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x900d('0x4')],'set':function(_0x24e285){var _0x4eaa29=moment(_0x24e285);var _0x53a9f3=moment(this[_0x900d('0x5')](_0x900d('0x6')))['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x461233=_0x4eaa29[_0x900d('0x7')](_0x53a9f3,_0x900d('0x8'));this[_0x900d('0x9')](_0x900d('0xa'),_0x24e285);this['setDataValue'](_0x900d('0xb'),_0x461233||null);}},'position':{'type':Sequelize[_0x900d('0xc')]},'count':{'type':Sequelize[_0x900d('0xc')]},'queuecallerabandon':{'type':Sequelize[_0x900d('0xd')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x900d('0xd')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x900d('0x4')]},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x900d('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x900d('0x3')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x900d('0xc')]},'channel':{'type':Sequelize[_0x900d('0x3')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x900d('0x3')]},'accountcode':{'type':Sequelize[_0x900d('0x3')]},'context':{'type':Sequelize[_0x900d('0x3')]},'exten':{'type':Sequelize[_0x900d('0x3')]},'priority':{'type':Sequelize[_0x900d('0x3')]},'holdtime':{'type':Sequelize[_0x900d('0xc')]},'mohtime':{'type':Sequelize[_0x900d('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x900d('0xd')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x900d('0xd')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x900d('0x3')],'comment':_0x900d('0xe')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x900d('0x3')]},'disposition':{'type':Sequelize[_0x900d('0x3')]},'secondDisposition':{'type':Sequelize[_0x900d('0x3')]},'thirdDisposition':{'type':Sequelize[_0x900d('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x900d('0xc')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd5da=['YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format'];(function(_0x1c09ba,_0x5eb0c0){var _0x4b3a39=function(_0x50ed32){while(--_0x50ed32){_0x1c09ba['push'](_0x1c09ba['shift']());}};_0x4b3a39(++_0x5eb0c0);}(_0xd5da,0x14e));var _0xad5d=function(_0x2f9c4b,_0x5f2503){_0x2f9c4b=_0x2f9c4b-0x0;var _0xf075df=_0xd5da[_0x2f9c4b];return _0xf075df;};'use strict';var Sequelize=require(_0xad5d('0x0'));var moment=require(_0xad5d('0x1'));module[_0xad5d('0x2')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xad5d('0x3')]},'calleridname':{'type':Sequelize[_0xad5d('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0xad5d('0x4')],'set':function(_0x3c9862){var _0x308a9a=moment(_0x3c9862);var _0xf70d53=moment(this[_0xad5d('0x5')](_0xad5d('0x6')))[_0xad5d('0x7')](_0xad5d('0x8'));var _0x6997c3=_0x308a9a[_0xad5d('0x9')](_0xf70d53,_0xad5d('0xa'));this[_0xad5d('0xb')](_0xad5d('0xc'),_0x3c9862);this[_0xad5d('0xb')](_0xad5d('0xd'),_0x6997c3||null);}},'position':{'type':Sequelize[_0xad5d('0xe')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0xad5d('0xf')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xad5d('0x4')]},'queuecallercomplete':{'type':Sequelize[_0xad5d('0xf')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xad5d('0x4')]},'queuecallerexit':{'type':Sequelize[_0xad5d('0xf')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xad5d('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xad5d('0x3')],'comment':_0xad5d('0x10')},'originalposition':{'type':Sequelize[_0xad5d('0xe')]},'channel':{'type':Sequelize[_0xad5d('0x3')]},'connectedlinenum':{'type':Sequelize[_0xad5d('0x3')]},'connectedlinename':{'type':Sequelize[_0xad5d('0x3')]},'accountcode':{'type':Sequelize[_0xad5d('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xad5d('0x3')]},'holdtime':{'type':Sequelize[_0xad5d('0xe')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xad5d('0xf')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xad5d('0x3')]},'transfer':{'type':Sequelize[_0xad5d('0xf')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xad5d('0x3')],'comment':_0xad5d('0x11')},'transferexten':{'type':Sequelize[_0xad5d('0x3')]},'transferuniqueid':{'type':Sequelize[_0xad5d('0x3')]},'disposition':{'type':Sequelize[_0xad5d('0x3')]},'secondDisposition':{'type':Sequelize[_0xad5d('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0xad5d('0xe')],'defaultValue':0x0}};
\ No newline at end of file
index 3a97d80..585caf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d2=['querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','update','then','destroy','stack','name','send','index','VoiceQueueReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','map','filter','options','includeAll','include','catch','show','params','rawAttributes','merge','find','create','body','describe','getVoiceQueuesReport','nolimit','rows','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv'];(function(_0x330414,_0x4f3207){var _0x99dbff=function(_0x166f85){while(--_0x166f85){_0x330414['push'](_0x330414['shift']());}};_0x99dbff(++_0x4f3207);}(_0x69d2,0x13f));var _0x269d=function(_0x4ddfb3,_0x5d75b7){_0x4ddfb3=_0x4ddfb3-0x0;var _0x34a1b6=_0x69d2[_0x4ddfb3];return _0x34a1b6;};'use strict';var emlformat=require(_0x269d('0x0'));var rimraf=require(_0x269d('0x1'));var zipdir=require(_0x269d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x269d('0x3'));var moment=require('moment');var BPromise=require(_0x269d('0x4'));var Mustache=require(_0x269d('0x5'));var util=require(_0x269d('0x6'));var path=require(_0x269d('0x7'));var sox=require(_0x269d('0x8'));var csv=require('to-csv');var ejs=require(_0x269d('0x9'));var fs=require('fs');var fs_extra=require(_0x269d('0xa'));var _=require(_0x269d('0xb'));var squel=require(_0x269d('0xc'));var crypto=require(_0x269d('0xd'));var jsforce=require(_0x269d('0xe'));var deskjs=require(_0x269d('0xf'));var toCsv=require(_0x269d('0x10'));var querystring=require(_0x269d('0x11'));var Papa=require(_0x269d('0x12'));var Redis=require('ioredis');var authService=require(_0x269d('0x13'));var qs=require(_0x269d('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x269d('0x15'));var logger=require(_0x269d('0x16'))(_0x269d('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x269d('0x18'));var db=require(_0x269d('0x19'))['db'];config[_0x269d('0x1a')]=_[_0x269d('0x1b')](config[_0x269d('0x1a')],{'host':_0x269d('0x1c'),'port':0x18eb});var socket=require(_0x269d('0x1d'))(new Redis(config[_0x269d('0x1a')]));require(_0x269d('0x1e'))[_0x269d('0x1f')](socket);function respondWithStatusCode(_0x16bb77,_0x24bf4b){_0x24bf4b=_0x24bf4b||0xcc;return function(_0x5cb263){if(_0x5cb263){return _0x16bb77[_0x269d('0x20')](_0x24bf4b);}return _0x16bb77[_0x269d('0x21')](_0x24bf4b)[_0x269d('0x22')]();};}function respondWithResult(_0xddbb15,_0x4fb52b){_0x4fb52b=_0x4fb52b||0xc8;return function(_0xab33d5){if(_0xab33d5){return _0xddbb15[_0x269d('0x21')](_0x4fb52b)[_0x269d('0x23')](_0xab33d5);}};}function respondWithFilteredResult(_0x13d33f,_0x2f1cb2){return function(_0x5810c1){if(_0x5810c1){var _0x362077=typeof _0x2f1cb2[_0x269d('0x24')]==='undefined'&&typeof _0x2f1cb2['limit']===_0x269d('0x25');var _0x2ac44d=_0x5810c1[_0x269d('0x26')];var _0x2a920a=_0x362077?0x0:_0x2f1cb2[_0x269d('0x24')];var _0x5f448f=_0x362077?_0x5810c1[_0x269d('0x26')]:_0x2f1cb2['offset']+_0x2f1cb2[_0x269d('0x27')];var _0x1cf11b;if(_0x5f448f>=_0x2ac44d){_0x5f448f=_0x2ac44d;_0x1cf11b=0xc8;}else{_0x1cf11b=0xce;}_0x13d33f[_0x269d('0x21')](_0x1cf11b);return _0x13d33f[_0x269d('0x28')](_0x269d('0x29'),_0x2a920a+'-'+_0x5f448f+'/'+_0x2ac44d)[_0x269d('0x23')](_0x5810c1);}return null;};}function patchUpdates(_0x549c85){return function(_0x29abe0){try{jsonpatch['apply'](_0x29abe0,_0x549c85,!![]);}catch(_0x265495){return BPromise[_0x269d('0x2a')](_0x265495);}return _0x29abe0['save']();};}function saveUpdates(_0xff81b9,_0x375623){return function(_0x5e2bbd){if(_0x5e2bbd){return _0x5e2bbd[_0x269d('0x2b')](_0xff81b9)[_0x269d('0x2c')](function(_0x140399){return _0x140399;});}return null;};}function removeEntity(_0x27523b,_0x35863b){return function(_0x55c0b5){if(_0x55c0b5){return _0x55c0b5[_0x269d('0x2d')]()['then'](function(){_0x27523b[_0x269d('0x21')](0xcc)[_0x269d('0x22')]();});}};}function handleEntityNotFound(_0x31360c,_0x2235bd){return function(_0xc9e2f6){if(!_0xc9e2f6){_0x31360c[_0x269d('0x20')](0x194);}return _0xc9e2f6;};}function handleError(_0x137bb2,_0x12cc75){_0x12cc75=_0x12cc75||0x1f4;return function(_0xa61a8){logger['error'](_0xa61a8[_0x269d('0x2e')]);if(_0xa61a8['name']){delete _0xa61a8[_0x269d('0x2f')];}_0x137bb2[_0x269d('0x21')](_0x12cc75)[_0x269d('0x30')](_0xa61a8);};}exports[_0x269d('0x31')]=function(_0x35c746,_0x4315bb){var _0x468747={},_0x3003cb={},_0x2893fb={'count':0x0,'rows':[]};var _0x3ffbf2=_['map'](db[_0x269d('0x32')]['rawAttributes'],function(_0x191412){return{'name':_0x191412[_0x269d('0x33')],'type':_0x191412[_0x269d('0x34')][_0x269d('0x35')]};});_0x3003cb[_0x269d('0x36')]=_['map'](_0x3ffbf2,'name');_0x3003cb[_0x269d('0x37')]=_[_0x269d('0x38')](_0x35c746[_0x269d('0x37')]);_0x3003cb[_0x269d('0x39')]=_['intersection'](_0x3003cb[_0x269d('0x36')],_0x3003cb[_0x269d('0x37')]);_0x468747['attributes']=_[_0x269d('0x3a')](_0x3003cb[_0x269d('0x36')],qs['fields'](_0x35c746[_0x269d('0x37')][_0x269d('0x3b')]));_0x468747['attributes']=_0x468747[_0x269d('0x3c')][_0x269d('0x3d')]?_0x468747[_0x269d('0x3c')]:_0x3003cb[_0x269d('0x36')];if(!_0x35c746['query'][_0x269d('0x3e')]('nolimit')){_0x468747[_0x269d('0x27')]=qs[_0x269d('0x27')](_0x35c746[_0x269d('0x37')][_0x269d('0x27')]);_0x468747[_0x269d('0x24')]=qs[_0x269d('0x24')](_0x35c746['query'][_0x269d('0x24')]);}_0x468747[_0x269d('0x3f')]=qs[_0x269d('0x40')](_0x35c746[_0x269d('0x37')][_0x269d('0x40')]);_0x468747[_0x269d('0x41')]=qs[_0x269d('0x39')](_[_0x269d('0x42')](_0x35c746[_0x269d('0x37')],_0x3003cb[_0x269d('0x39')]),_0x3ffbf2);if(_0x35c746[_0x269d('0x37')]['filter']){_0x468747[_0x269d('0x41')]=_['merge'](_0x468747[_0x269d('0x41')],{'$or':_[_0x269d('0x43')](_0x3ffbf2,function(_0x330c56){if(_0x330c56['type']!=='VIRTUAL'){var _0x4ce2b9={};_0x4ce2b9[_0x330c56[_0x269d('0x2f')]]={'$like':'%'+_0x35c746['query'][_0x269d('0x44')]+'%'};return _0x4ce2b9;}})});}_0x468747=_['merge']({},_0x468747,_0x35c746[_0x269d('0x45')]);var _0x25dca9={'where':_0x468747[_0x269d('0x41')]};return db['VoiceQueueReport']['count'](_0x25dca9)['then'](function(_0x44514d){_0x2893fb[_0x269d('0x26')]=_0x44514d;if(_0x35c746[_0x269d('0x37')][_0x269d('0x46')]){_0x468747[_0x269d('0x47')]=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x468747);})[_0x269d('0x2c')](function(_0x2602b4){_0x2893fb['rows']=_0x2602b4;return _0x2893fb;})[_0x269d('0x2c')](respondWithFilteredResult(_0x4315bb,_0x468747))[_0x269d('0x48')](handleError(_0x4315bb,null));};exports[_0x269d('0x49')]=function(_0x3ba0c9,_0x50adc8){var _0x241a33={'raw':![],'where':{'id':_0x3ba0c9[_0x269d('0x4a')]['id']}},_0x19016d={};_0x19016d[_0x269d('0x36')]=_[_0x269d('0x38')](db[_0x269d('0x32')][_0x269d('0x4b')]);_0x19016d[_0x269d('0x37')]=_['keys'](_0x3ba0c9[_0x269d('0x37')]);_0x19016d[_0x269d('0x39')]=_[_0x269d('0x3a')](_0x19016d[_0x269d('0x36')],_0x19016d[_0x269d('0x37')]);_0x241a33[_0x269d('0x3c')]=_[_0x269d('0x3a')](_0x19016d[_0x269d('0x36')],qs[_0x269d('0x3b')](_0x3ba0c9[_0x269d('0x37')]['fields']));_0x241a33[_0x269d('0x3c')]=_0x241a33[_0x269d('0x3c')][_0x269d('0x3d')]?_0x241a33[_0x269d('0x3c')]:_0x19016d[_0x269d('0x36')];if(_0x3ba0c9[_0x269d('0x37')][_0x269d('0x46')]){_0x241a33['include']=[{'all':!![]}];}_0x241a33=_[_0x269d('0x4c')]({},_0x241a33,_0x3ba0c9[_0x269d('0x45')]);return db[_0x269d('0x32')][_0x269d('0x4d')](_0x241a33)[_0x269d('0x2c')](handleEntityNotFound(_0x50adc8,null))[_0x269d('0x2c')](respondWithResult(_0x50adc8,null))[_0x269d('0x48')](handleError(_0x50adc8,null));};exports[_0x269d('0x4e')]=function(_0x53aa65,_0x54ab52){return db[_0x269d('0x32')]['create'](_0x53aa65[_0x269d('0x4f')],{})[_0x269d('0x2c')](respondWithResult(_0x54ab52,0xc9))[_0x269d('0x48')](handleError(_0x54ab52,null));};exports[_0x269d('0x2b')]=function(_0x104998,_0x37e0d1){if(_0x104998['body']['id']){delete _0x104998[_0x269d('0x4f')]['id'];}return db[_0x269d('0x32')]['find']({'where':{'id':_0x104998[_0x269d('0x4a')]['id']}})[_0x269d('0x2c')](handleEntityNotFound(_0x37e0d1,null))[_0x269d('0x2c')](saveUpdates(_0x104998[_0x269d('0x4f')],null))[_0x269d('0x2c')](respondWithResult(_0x37e0d1,null))['catch'](handleError(_0x37e0d1,null));};exports[_0x269d('0x2d')]=function(_0x564294,_0x1ccdde){return db[_0x269d('0x32')][_0x269d('0x4d')]({'where':{'id':_0x564294[_0x269d('0x4a')]['id']}})[_0x269d('0x2c')](handleEntityNotFound(_0x1ccdde,null))[_0x269d('0x2c')](removeEntity(_0x1ccdde,null))['catch'](handleError(_0x1ccdde,null));};exports[_0x269d('0x50')]=function(_0x3f7741,_0x5e9a27){return db['VoiceQueueReport'][_0x269d('0x50')]()[_0x269d('0x2c')](respondWithResult(_0x5e9a27,null))[_0x269d('0x48')](handleError(_0x5e9a27,null));};exports[_0x269d('0x51')]=function(_0x14be69,_0x3fb387){var _0x6c6cae={},_0x1fb7f4={},_0x3e19a6={'count':0x0,'rows':[]};_0x1fb7f4[_0x269d('0x36')]=_['keys'](db['VoiceQueueReport'][_0x269d('0x4b')]);_0x1fb7f4[_0x269d('0x37')]=_[_0x269d('0x38')](_0x14be69[_0x269d('0x37')]);_0x1fb7f4[_0x269d('0x39')]=_[_0x269d('0x3a')](_0x1fb7f4[_0x269d('0x36')],_0x1fb7f4[_0x269d('0x37')]);_0x6c6cae[_0x269d('0x3c')]=_['intersection'](_0x1fb7f4[_0x269d('0x36')],qs['fields'](_0x14be69[_0x269d('0x37')][_0x269d('0x3b')]));_0x6c6cae[_0x269d('0x3c')]=_0x6c6cae[_0x269d('0x3c')][_0x269d('0x3d')]?_0x6c6cae[_0x269d('0x3c')]:_0x1fb7f4[_0x269d('0x36')];if(!_0x14be69['query'][_0x269d('0x3e')](_0x269d('0x52'))){_0x6c6cae[_0x269d('0x27')]=qs['limit'](_0x14be69[_0x269d('0x37')][_0x269d('0x27')]);_0x6c6cae[_0x269d('0x24')]=qs[_0x269d('0x24')](_0x14be69[_0x269d('0x37')][_0x269d('0x24')]);}_0x6c6cae[_0x269d('0x3f')]=qs['sort'](_0x14be69[_0x269d('0x37')]['sort']);_0x6c6cae[_0x269d('0x41')]=qs[_0x269d('0x39')](_['pick'](_0x14be69[_0x269d('0x37')],_0x1fb7f4[_0x269d('0x39')]));if(_0x14be69[_0x269d('0x37')][_0x269d('0x44')]){_0x6c6cae['where']=_[_0x269d('0x4c')](_0x6c6cae[_0x269d('0x41')],{'$or':_[_0x269d('0x43')](_0x6c6cae[_0x269d('0x3c')],function(_0xfcc55e){var _0xe471c3={};_0xe471c3[_0xfcc55e]={'$like':'%'+_0x14be69[_0x269d('0x37')][_0x269d('0x44')]+'%'};return _0xe471c3;})});}_0x6c6cae=_[_0x269d('0x4c')]({},_0x6c6cae,_0x14be69[_0x269d('0x45')]);var _0x305a8a={'where':_0x6c6cae[_0x269d('0x41')]};return db[_0x269d('0x32')]['count'](_0x305a8a)[_0x269d('0x2c')](function(_0x3478cc){_0x3e19a6['count']=_0x3478cc;if(_0x14be69[_0x269d('0x37')][_0x269d('0x46')]){_0x6c6cae[_0x269d('0x47')]=[{'all':!![]}];}return db[_0x269d('0x32')]['findAll'](_0x6c6cae);})[_0x269d('0x2c')](function(_0x301457){_0x3e19a6[_0x269d('0x53')]=_0x301457;return _0x3e19a6;})[_0x269d('0x2c')](respondWithFilteredResult(_0x3fb387,_0x6c6cae,_0x269d('0x51')))[_0x269d('0x48')](handleError(_0x3fb387,null,_0x269d('0x51')));};
\ No newline at end of file
+var _0x18e0=['then','end','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','options','includeAll','rows','catch','params','keys','include','find','create','body','destroy','describe','getVoiceQueuesReport','hasOwnProperty','order','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','./voiceQueueReport.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save'];(function(_0x5ba7df,_0x30e226){var _0x547a00=function(_0x17679f){while(--_0x17679f){_0x5ba7df['push'](_0x5ba7df['shift']());}};_0x547a00(++_0x30e226);}(_0x18e0,0x7e));var _0x018e=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x18e0[_0x1203f];return _0x365f0a;};'use strict';var emlformat=require(_0x018e('0x0'));var rimraf=require(_0x018e('0x1'));var zipdir=require(_0x018e('0x2'));var jsonpatch=require(_0x018e('0x3'));var rp=require(_0x018e('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x018e('0x5'));var util=require(_0x018e('0x6'));var path=require(_0x018e('0x7'));var sox=require(_0x018e('0x8'));var csv=require('to-csv');var ejs=require(_0x018e('0x9'));var fs=require('fs');var fs_extra=require(_0x018e('0xa'));var _=require(_0x018e('0xb'));var squel=require(_0x018e('0xc'));var crypto=require(_0x018e('0xd'));var jsforce=require(_0x018e('0xe'));var deskjs=require(_0x018e('0xf'));var toCsv=require(_0x018e('0x10'));var querystring=require(_0x018e('0x11'));var Papa=require(_0x018e('0x12'));var Redis=require(_0x018e('0x13'));var authService=require(_0x018e('0x14'));var qs=require(_0x018e('0x15'));var as=require(_0x018e('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x018e('0x17'))(_0x018e('0x18'));var utils=require(_0x018e('0x19'));var config=require(_0x018e('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x018e('0x1b')]=_[_0x018e('0x1c')](config['redis'],{'host':_0x018e('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x018e('0x1e'))[_0x018e('0x1f')](socket);function respondWithStatusCode(_0x51c7f6,_0x497b60){_0x497b60=_0x497b60||0xcc;return function(_0x3319ed){if(_0x3319ed){return _0x51c7f6[_0x018e('0x20')](_0x497b60);}return _0x51c7f6[_0x018e('0x21')](_0x497b60)['end']();};}function respondWithResult(_0x3c6bac,_0x4de313){_0x4de313=_0x4de313||0xc8;return function(_0x368594){if(_0x368594){return _0x3c6bac[_0x018e('0x21')](_0x4de313)['json'](_0x368594);}};}function respondWithFilteredResult(_0x58b8f5,_0x5ab2dd){return function(_0x399fe0){if(_0x399fe0){var _0x15f184=typeof _0x5ab2dd[_0x018e('0x22')]===_0x018e('0x23')&&typeof _0x5ab2dd[_0x018e('0x24')]==='undefined';var _0x2df33c=_0x399fe0[_0x018e('0x25')];var _0x497e04=_0x15f184?0x0:_0x5ab2dd['offset'];var _0x5de541=_0x15f184?_0x399fe0[_0x018e('0x25')]:_0x5ab2dd[_0x018e('0x22')]+_0x5ab2dd['limit'];var _0x2dc163;if(_0x5de541>=_0x2df33c){_0x5de541=_0x2df33c;_0x2dc163=0xc8;}else{_0x2dc163=0xce;}_0x58b8f5[_0x018e('0x21')](_0x2dc163);return _0x58b8f5[_0x018e('0x26')](_0x018e('0x27'),_0x497e04+'-'+_0x5de541+'/'+_0x2df33c)[_0x018e('0x28')](_0x399fe0);}return null;};}function patchUpdates(_0x2445f0){return function(_0x3f9fa1){try{jsonpatch[_0x018e('0x29')](_0x3f9fa1,_0x2445f0,!![]);}catch(_0x425b0e){return BPromise[_0x018e('0x2a')](_0x425b0e);}return _0x3f9fa1[_0x018e('0x2b')]();};}function saveUpdates(_0x274d7b,_0x3fdff2){return function(_0x319720){if(_0x319720){return _0x319720['update'](_0x274d7b)[_0x018e('0x2c')](function(_0x3258c7){return _0x3258c7;});}return null;};}function removeEntity(_0x373cf7,_0x278adc){return function(_0x54281e){if(_0x54281e){return _0x54281e['destroy']()['then'](function(){_0x373cf7[_0x018e('0x21')](0xcc)[_0x018e('0x2d')]();});}};}function handleEntityNotFound(_0x2e7d38,_0x306225){return function(_0x12b480){if(!_0x12b480){_0x2e7d38[_0x018e('0x20')](0x194);}return _0x12b480;};}function handleError(_0x192734,_0x354de8){_0x354de8=_0x354de8||0x1f4;return function(_0x390910){logger[_0x018e('0x2e')](_0x390910[_0x018e('0x2f')]);if(_0x390910[_0x018e('0x30')]){delete _0x390910[_0x018e('0x30')];}_0x192734[_0x018e('0x21')](_0x354de8)[_0x018e('0x31')](_0x390910);};}exports[_0x018e('0x32')]=function(_0x53c35f,_0x3298c9){var _0xa4e6e0={},_0x1d7606={},_0xea93c5={'count':0x0,'rows':[]};var _0x45e3ab=_[_0x018e('0x33')](db[_0x018e('0x34')][_0x018e('0x35')],function(_0x5d1a8f){return{'name':_0x5d1a8f[_0x018e('0x36')],'type':_0x5d1a8f[_0x018e('0x37')][_0x018e('0x38')]};});_0x1d7606[_0x018e('0x39')]=_[_0x018e('0x33')](_0x45e3ab,_0x018e('0x30'));_0x1d7606[_0x018e('0x3a')]=_['keys'](_0x53c35f[_0x018e('0x3a')]);_0x1d7606[_0x018e('0x3b')]=_[_0x018e('0x3c')](_0x1d7606['model'],_0x1d7606[_0x018e('0x3a')]);_0xa4e6e0[_0x018e('0x3d')]=_['intersection'](_0x1d7606[_0x018e('0x39')],qs[_0x018e('0x3e')](_0x53c35f[_0x018e('0x3a')]['fields']));_0xa4e6e0[_0x018e('0x3d')]=_0xa4e6e0[_0x018e('0x3d')][_0x018e('0x3f')]?_0xa4e6e0[_0x018e('0x3d')]:_0x1d7606[_0x018e('0x39')];if(!_0x53c35f['query']['hasOwnProperty'](_0x018e('0x40'))){_0xa4e6e0['limit']=qs[_0x018e('0x24')](_0x53c35f['query'][_0x018e('0x24')]);_0xa4e6e0['offset']=qs[_0x018e('0x22')](_0x53c35f[_0x018e('0x3a')][_0x018e('0x22')]);}_0xa4e6e0['order']=qs['sort'](_0x53c35f['query'][_0x018e('0x41')]);_0xa4e6e0[_0x018e('0x42')]=qs['filters'](_[_0x018e('0x43')](_0x53c35f[_0x018e('0x3a')],_0x1d7606['filters']),_0x45e3ab);if(_0x53c35f[_0x018e('0x3a')][_0x018e('0x44')]){_0xa4e6e0['where']=_[_0x018e('0x45')](_0xa4e6e0[_0x018e('0x42')],{'$or':_[_0x018e('0x33')](_0x45e3ab,function(_0xd840ac){if(_0xd840ac[_0x018e('0x37')]!=='VIRTUAL'){var _0x180d00={};_0x180d00[_0xd840ac[_0x018e('0x30')]]={'$like':'%'+_0x53c35f[_0x018e('0x3a')][_0x018e('0x44')]+'%'};return _0x180d00;}})});}_0xa4e6e0=_['merge']({},_0xa4e6e0,_0x53c35f[_0x018e('0x46')]);var _0x164bd2={'where':_0xa4e6e0[_0x018e('0x42')]};return db[_0x018e('0x34')]['count'](_0x164bd2)[_0x018e('0x2c')](function(_0x4eae7e){_0xea93c5[_0x018e('0x25')]=_0x4eae7e;if(_0x53c35f['query'][_0x018e('0x47')]){_0xa4e6e0['include']=[{'all':!![]}];}return db[_0x018e('0x34')]['findAll'](_0xa4e6e0);})['then'](function(_0x43bfb9){_0xea93c5[_0x018e('0x48')]=_0x43bfb9;return _0xea93c5;})[_0x018e('0x2c')](respondWithFilteredResult(_0x3298c9,_0xa4e6e0))[_0x018e('0x49')](handleError(_0x3298c9,null));};exports['show']=function(_0x4bc46c,_0x404bad){var _0x2c7bd1={'raw':![],'where':{'id':_0x4bc46c[_0x018e('0x4a')]['id']}},_0x57e8a1={};_0x57e8a1[_0x018e('0x39')]=_[_0x018e('0x4b')](db[_0x018e('0x34')]['rawAttributes']);_0x57e8a1[_0x018e('0x3a')]=_[_0x018e('0x4b')](_0x4bc46c['query']);_0x57e8a1[_0x018e('0x3b')]=_[_0x018e('0x3c')](_0x57e8a1[_0x018e('0x39')],_0x57e8a1[_0x018e('0x3a')]);_0x2c7bd1['attributes']=_[_0x018e('0x3c')](_0x57e8a1['model'],qs[_0x018e('0x3e')](_0x4bc46c[_0x018e('0x3a')][_0x018e('0x3e')]));_0x2c7bd1['attributes']=_0x2c7bd1[_0x018e('0x3d')][_0x018e('0x3f')]?_0x2c7bd1[_0x018e('0x3d')]:_0x57e8a1['model'];if(_0x4bc46c[_0x018e('0x3a')][_0x018e('0x47')]){_0x2c7bd1[_0x018e('0x4c')]=[{'all':!![]}];}_0x2c7bd1=_[_0x018e('0x45')]({},_0x2c7bd1,_0x4bc46c[_0x018e('0x46')]);return db[_0x018e('0x34')][_0x018e('0x4d')](_0x2c7bd1)[_0x018e('0x2c')](handleEntityNotFound(_0x404bad,null))['then'](respondWithResult(_0x404bad,null))[_0x018e('0x49')](handleError(_0x404bad,null));};exports[_0x018e('0x4e')]=function(_0x21d769,_0x107399){return db['VoiceQueueReport']['create'](_0x21d769[_0x018e('0x4f')],{})[_0x018e('0x2c')](respondWithResult(_0x107399,0xc9))[_0x018e('0x49')](handleError(_0x107399,null));};exports['update']=function(_0x1a0659,_0x2c50d4){if(_0x1a0659['body']['id']){delete _0x1a0659[_0x018e('0x4f')]['id'];}return db['VoiceQueueReport'][_0x018e('0x4d')]({'where':{'id':_0x1a0659[_0x018e('0x4a')]['id']}})[_0x018e('0x2c')](handleEntityNotFound(_0x2c50d4,null))['then'](saveUpdates(_0x1a0659[_0x018e('0x4f')],null))[_0x018e('0x2c')](respondWithResult(_0x2c50d4,null))[_0x018e('0x49')](handleError(_0x2c50d4,null));};exports[_0x018e('0x50')]=function(_0x350cc2,_0x3789ed){return db[_0x018e('0x34')][_0x018e('0x4d')]({'where':{'id':_0x350cc2['params']['id']}})[_0x018e('0x2c')](handleEntityNotFound(_0x3789ed,null))[_0x018e('0x2c')](removeEntity(_0x3789ed,null))[_0x018e('0x49')](handleError(_0x3789ed,null));};exports['describe']=function(_0x2dd88f,_0x51ac07){return db[_0x018e('0x34')][_0x018e('0x51')]()['then'](respondWithResult(_0x51ac07,null))[_0x018e('0x49')](handleError(_0x51ac07,null));};exports[_0x018e('0x52')]=function(_0x46bf62,_0x2a0a45){var _0x190118={},_0x113b9b={},_0x5d3066={'count':0x0,'rows':[]};_0x113b9b['model']=_[_0x018e('0x4b')](db['VoiceQueueReport'][_0x018e('0x35')]);_0x113b9b['query']=_['keys'](_0x46bf62[_0x018e('0x3a')]);_0x113b9b[_0x018e('0x3b')]=_['intersection'](_0x113b9b['model'],_0x113b9b[_0x018e('0x3a')]);_0x190118[_0x018e('0x3d')]=_['intersection'](_0x113b9b[_0x018e('0x39')],qs[_0x018e('0x3e')](_0x46bf62[_0x018e('0x3a')][_0x018e('0x3e')]));_0x190118[_0x018e('0x3d')]=_0x190118[_0x018e('0x3d')]['length']?_0x190118[_0x018e('0x3d')]:_0x113b9b[_0x018e('0x39')];if(!_0x46bf62['query'][_0x018e('0x53')](_0x018e('0x40'))){_0x190118[_0x018e('0x24')]=qs[_0x018e('0x24')](_0x46bf62[_0x018e('0x3a')][_0x018e('0x24')]);_0x190118['offset']=qs['offset'](_0x46bf62['query'][_0x018e('0x22')]);}_0x190118[_0x018e('0x54')]=qs[_0x018e('0x41')](_0x46bf62[_0x018e('0x3a')][_0x018e('0x41')]);_0x190118[_0x018e('0x42')]=qs[_0x018e('0x3b')](_[_0x018e('0x43')](_0x46bf62[_0x018e('0x3a')],_0x113b9b[_0x018e('0x3b')]));if(_0x46bf62[_0x018e('0x3a')][_0x018e('0x44')]){_0x190118['where']=_[_0x018e('0x45')](_0x190118[_0x018e('0x42')],{'$or':_[_0x018e('0x33')](_0x190118[_0x018e('0x3d')],function(_0x5ea51a){var _0x28c637={};_0x28c637[_0x5ea51a]={'$like':'%'+_0x46bf62[_0x018e('0x3a')][_0x018e('0x44')]+'%'};return _0x28c637;})});}_0x190118=_['merge']({},_0x190118,_0x46bf62[_0x018e('0x46')]);var _0x22a6ec={'where':_0x190118['where']};return db[_0x018e('0x34')][_0x018e('0x25')](_0x22a6ec)[_0x018e('0x2c')](function(_0x5577e7){_0x5d3066[_0x018e('0x25')]=_0x5577e7;if(_0x46bf62[_0x018e('0x3a')][_0x018e('0x47')]){_0x190118['include']=[{'all':!![]}];}return db[_0x018e('0x34')]['findAll'](_0x190118);})[_0x018e('0x2c')](function(_0x5057ea){_0x5d3066[_0x018e('0x48')]=_0x5057ea;return _0x5d3066;})['then'](respondWithFilteredResult(_0x2a0a45,_0x190118,'getVoiceQueuesReport'))['catch'](handleError(_0x2a0a45,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index dc68580..fe096b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1b6=['events','../../mysqldb','VoiceQueueReport','setMaxListeners','save','update','emit','hook','exports'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa1b6,0x156));var _0x6a1b=function(_0x8982f2,_0x1068cb){_0x8982f2=_0x8982f2-0x0;var _0x30eea8=_0xa1b6[_0x8982f2];return _0x30eea8;};'use strict';var EventEmitter=require(_0x6a1b('0x0'));var VoiceQueueReport=require(_0x6a1b('0x1'))['db'][_0x6a1b('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x6a1b('0x3')](0x0);var events={'afterCreate':_0x6a1b('0x4'),'afterUpdate':_0x6a1b('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4824a1){return function(_0xb00ec1,_0x527985,_0x57e3a2){VoiceQueueReportEvents[_0x6a1b('0x6')](_0x4824a1+':'+_0xb00ec1['id'],_0xb00ec1);VoiceQueueReportEvents[_0x6a1b('0x6')](_0x4824a1,_0xb00ec1);_0x57e3a2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0x6a1b('0x7')](e,emitEvent(event));}}module[_0x6a1b('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x0c0c=['update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x45c48f,_0x4aa891){var _0xaf5037=function(_0x3e3c1f){while(--_0x3e3c1f){_0x45c48f['push'](_0x45c48f['shift']());}};_0xaf5037(++_0x4aa891);}(_0x0c0c,0x19b));var _0xc0c0=function(_0x4dade3,_0x59651c){_0x4dade3=_0x4dade3-0x0;var _0x5799d7=_0x0c0c[_0x4dade3];return _0x5799d7;};'use strict';var EventEmitter=require(_0xc0c0('0x0'));var VoiceQueueReport=require(_0xc0c0('0x1'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xc0c0('0x2'),'afterDestroy':_0xc0c0('0x3')};function emitEvent(_0xc02c05){return function(_0x32ea2b,_0x3ab8a0,_0x192d90){VoiceQueueReportEvents[_0xc0c0('0x4')](_0xc02c05+':'+_0x32ea2b['id'],_0x32ea2b);VoiceQueueReportEvents['emit'](_0xc02c05,_0x32ea2b);_0x192d90(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0xc0c0('0x5')](e,emitEvent(event));}}module[_0xc0c0('0x6')]=VoiceQueueReportEvents;
\ No newline at end of file
index 604701d..9733c56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9279=['../../config/environment','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x3dabf6,_0x39ae1b){var _0x579a75=function(_0x4c0adb){while(--_0x4c0adb){_0x3dabf6['push'](_0x3dabf6['shift']());}};_0x579a75(++_0x39ae1b);}(_0x9279,0x78));var _0x9927=function(_0xbec8e6,_0x2841b5){_0xbec8e6=_0xbec8e6-0x0;var _0x4aa6f2=_0x9279[_0xbec8e6];return _0x4aa6f2;};'use strict';var _=require(_0x9927('0x0'));var util=require(_0x9927('0x1'));var logger=require(_0x9927('0x2'))(_0x9927('0x3'));var moment=require(_0x9927('0x4'));var BPromise=require('bluebird');var rp=require(_0x9927('0x5'));var fs=require('fs');var path=require(_0x9927('0x6'));var rimraf=require(_0x9927('0x7'));var config=require(_0x9927('0x8'));var attributes=require(_0x9927('0x9'));module[_0x9927('0xa')]=function(_0xd70f46,_0x48406e){return _0xd70f46[_0x9927('0xb')](_0x9927('0xc'),attributes,{'tableName':_0x9927('0xd'),'paranoid':![],'indexes':[{'fields':[_0x9927('0xe')]},{'fields':[_0x9927('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5bbf=['moment','bluebird','request-promise','path','rimraf','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','lodash','api'];(function(_0x27e617,_0x5cfdc2){var _0x218586=function(_0x9a012d){while(--_0x9a012d){_0x27e617['push'](_0x27e617['shift']());}};_0x218586(++_0x5cfdc2);}(_0x5bbf,0xa7));var _0xf5bb=function(_0x3686f4,_0xd4a373){_0x3686f4=_0x3686f4-0x0;var _0x168f2b=_0x5bbf[_0x3686f4];return _0x168f2b;};'use strict';var _=require(_0xf5bb('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf5bb('0x1'));var moment=require(_0xf5bb('0x2'));var BPromise=require(_0xf5bb('0x3'));var rp=require(_0xf5bb('0x4'));var fs=require('fs');var path=require(_0xf5bb('0x5'));var rimraf=require(_0xf5bb('0x6'));var config=require('../../config/environment');var attributes=require(_0xf5bb('0x7'));module[_0xf5bb('0x8')]=function(_0x4707c7,_0x59af7d){return _0x4707c7[_0xf5bb('0x9')](_0xf5bb('0xa'),attributes,{'tableName':_0xf5bb('0xb'),'paranoid':![],'indexes':[{'fields':[_0xf5bb('0xc')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
index fdebd6e..cb26c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0ea=['./voiceQueueReport.socket','register','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','limit','include','map','model','debug','create','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','update','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','defaults','redis','localhost','socket.io-emitter'];(function(_0x205034,_0x374ce6){var _0x31bebb=function(_0x3869c9){while(--_0x3869c9){_0x205034['push'](_0x205034['shift']());}};_0x31bebb(++_0x374ce6);}(_0xf0ea,0x143));var _0xaf0e=function(_0x3af7b2,_0x5728ee){_0x3af7b2=_0x3af7b2-0x0;var _0x4bf040=_0xf0ea[_0x3af7b2];return _0x4bf040;};'use strict';var _=require(_0xaf0e('0x0'));var util=require('util');var moment=require(_0xaf0e('0x1'));var BPromise=require('bluebird');var rs=require(_0xaf0e('0x2'));var fs=require('fs');var Redis=require(_0xaf0e('0x3'));var db=require(_0xaf0e('0x4'))['db'];var utils=require(_0xaf0e('0x5'));var logger=require('../../config/logger')(_0xaf0e('0x6'));var config=require('../../config/environment');var jayson=require(_0xaf0e('0x7'));var client=jayson['client'][_0xaf0e('0x8')]({'port':0x232a});config['redis']=_[_0xaf0e('0x9')](config[_0xaf0e('0xa')],{'host':_0xaf0e('0xb'),'port':0x18eb});var socket=require(_0xaf0e('0xc'))(new Redis(config['redis']));require(_0xaf0e('0xd'))[_0xaf0e('0xe')](socket);function respondWithRpcPromise(_0x1382d0,_0x2c49da,_0x1e7907){return new BPromise(function(_0x28eed3,_0x32e8ee){return client['request'](_0x1382d0,_0x1e7907)[_0xaf0e('0xf')](function(_0x7cb866){logger[_0xaf0e('0x10')](_0xaf0e('0x11'),_0x2c49da,_0xaf0e('0x12'));logger['debug'](_0xaf0e('0x13'),_0x2c49da,_0xaf0e('0x12'),JSON[_0xaf0e('0x14')](_0x7cb866));if(_0x7cb866[_0xaf0e('0x15')]){if(_0x7cb866[_0xaf0e('0x15')]['code']===0x1f4){logger[_0xaf0e('0x15')](_0xaf0e('0x11'),_0x2c49da,_0x7cb866[_0xaf0e('0x15')]['message']);return _0x32e8ee(_0x7cb866['error'][_0xaf0e('0x16')]);}logger[_0xaf0e('0x15')]('VoiceQueueReport,\x20%s,\x20%s',_0x2c49da,_0x7cb866['error'][_0xaf0e('0x16')]);return _0x28eed3(_0x7cb866['error']['message']);}else{logger[_0xaf0e('0x10')](_0xaf0e('0x11'),_0x2c49da,_0xaf0e('0x12'));_0x28eed3(_0x7cb866[_0xaf0e('0x17')][_0xaf0e('0x16')]);}})[_0xaf0e('0x18')](function(_0x4a2050){logger[_0xaf0e('0x15')]('VoiceQueueReport,\x20%s,\x20%s',_0x2c49da,_0x4a2050);_0x32e8ee(_0x4a2050);});});}exports[_0xaf0e('0x19')]=function(_0xfe80e5){var _0x15055d=this;return new Promise(function(_0x40d229,_0x2cd1e8){return db[_0xaf0e('0x1a')][_0xaf0e('0x1b')]({'raw':_0xfe80e5[_0xaf0e('0x1c')]?_0xfe80e5[_0xaf0e('0x1c')][_0xaf0e('0x1d')]===undefined?!![]:![]:!![],'where':_0xfe80e5[_0xaf0e('0x1c')]?_0xfe80e5['options'][_0xaf0e('0x1e')]||null:null,'attributes':_0xfe80e5['options']?_0xfe80e5[_0xaf0e('0x1c')][_0xaf0e('0x1f')]||null:null,'limit':_0xfe80e5[_0xaf0e('0x1c')]?_0xfe80e5[_0xaf0e('0x1c')][_0xaf0e('0x20')]||null:null,'include':_0xfe80e5[_0xaf0e('0x1c')]?_0xfe80e5[_0xaf0e('0x1c')][_0xaf0e('0x21')]?_[_0xaf0e('0x22')](_0xfe80e5['options'][_0xaf0e('0x21')],function(_0x55a3a7){return{'model':db[_0x55a3a7[_0xaf0e('0x23')]],'as':_0x55a3a7['as'],'attributes':_0x55a3a7[_0xaf0e('0x1f')],'include':_0x55a3a7['include']?_['map'](_0x55a3a7[_0xaf0e('0x21')],function(_0x334fd0){return{'model':db[_0x334fd0[_0xaf0e('0x23')]],'as':_0x334fd0['as'],'attributes':_0x334fd0[_0xaf0e('0x1f')],'include':_0x334fd0['include']?_[_0xaf0e('0x22')](_0x334fd0[_0xaf0e('0x21')],function(_0x25599d){return{'model':db[_0x25599d['model']],'as':_0x25599d['as'],'attributes':_0x25599d[_0xaf0e('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xaf0e('0xf')](function(_0x4239cf){logger[_0xaf0e('0x10')](_0xaf0e('0x19'),_0xfe80e5);logger[_0xaf0e('0x24')](_0xaf0e('0x19'),_0xfe80e5,JSON[_0xaf0e('0x14')](_0x4239cf));_0x40d229(_0x4239cf);})[_0xaf0e('0x18')](function(_0x30234b){logger[_0xaf0e('0x15')](_0xaf0e('0x19'),_0x30234b[_0xaf0e('0x16')],_0xfe80e5);_0x2cd1e8(_0x15055d[_0xaf0e('0x15')](0x1f4,_0x30234b[_0xaf0e('0x16')]));});});};exports['CreateVoiceQueueReport']=function(_0xcb43e6){var _0x4a79cf=this;return new Promise(function(_0x273388,_0x222f22){return db[_0xaf0e('0x1a')][_0xaf0e('0x25')](_0xcb43e6[_0xaf0e('0x26')],{'raw':_0xcb43e6[_0xaf0e('0x1c')]?_0xcb43e6[_0xaf0e('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xaf0e('0xf')](function(_0x15d167){logger[_0xaf0e('0x10')](_0xaf0e('0x27'),_0xcb43e6);logger['debug']('CreateVoiceQueueReport',_0xcb43e6,JSON[_0xaf0e('0x14')](_0x15d167));_0x273388(_0x15d167);})['catch'](function(_0x161bd7){logger[_0xaf0e('0x15')]('CreateVoiceQueueReport',_0x161bd7[_0xaf0e('0x16')],_0xcb43e6);_0x222f22(_0x4a79cf[_0xaf0e('0x15')](0x1f4,_0x161bd7[_0xaf0e('0x16')]));});});};exports[_0xaf0e('0x28')]=function(_0x433878){var _0x454655=this;return new Promise(function(_0x557042,_0x439761){return db[_0xaf0e('0x1a')][_0xaf0e('0x29')](_0x433878[_0xaf0e('0x26')],{'raw':_0x433878[_0xaf0e('0x1c')]?_0x433878[_0xaf0e('0x1c')][_0xaf0e('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x433878[_0xaf0e('0x1c')]?_0x433878['options']['where']||null:null,'attributes':_0x433878[_0xaf0e('0x1c')]?_0x433878['options'][_0xaf0e('0x1f')]||null:null,'limit':_0x433878[_0xaf0e('0x1c')]?_0x433878[_0xaf0e('0x1c')][_0xaf0e('0x20')]||null:null})[_0xaf0e('0xf')](function(_0x4a6303){logger[_0xaf0e('0x10')](_0xaf0e('0x28'),_0x433878);logger['debug'](_0xaf0e('0x28'),_0x433878,JSON['stringify'](_0x4a6303));_0x557042(_0x4a6303);})[_0xaf0e('0x18')](function(_0x3f41fa){logger[_0xaf0e('0x15')](_0xaf0e('0x28'),_0x3f41fa['message'],_0x433878);_0x439761(_0x454655['error'](0x1f4,_0x3f41fa[_0xaf0e('0x16')]));});});};
\ No newline at end of file
+var _0x25e3=['options','raw','where','attributes','limit','include','map','model','stringify','create','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','update','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','localhost','./voiceQueueReport.socket','register','request','then','info','request\x20sent','debug','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll'];(function(_0x49c24d,_0x134b43){var _0x322cb9=function(_0x3028a2){while(--_0x3028a2){_0x49c24d['push'](_0x49c24d['shift']());}};_0x322cb9(++_0x134b43);}(_0x25e3,0x8f));var _0x325e=function(_0x4ab251,_0x29bde7){_0x4ab251=_0x4ab251-0x0;var _0x4d694f=_0x25e3[_0x4ab251];return _0x4d694f;};'use strict';var _=require(_0x325e('0x0'));var util=require(_0x325e('0x1'));var moment=require(_0x325e('0x2'));var BPromise=require('bluebird');var rs=require(_0x325e('0x3'));var fs=require('fs');var Redis=require(_0x325e('0x4'));var db=require(_0x325e('0x5'))['db'];var utils=require(_0x325e('0x6'));var logger=require(_0x325e('0x7'))(_0x325e('0x8'));var config=require(_0x325e('0x9'));var jayson=require(_0x325e('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x325e('0xb')]=_['defaults'](config[_0x325e('0xb')],{'host':_0x325e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x325e('0xb')]));require(_0x325e('0xd'))[_0x325e('0xe')](socket);function respondWithRpcPromise(_0x27ac5a,_0x3ccf96,_0x45192f){return new BPromise(function(_0x277372,_0x230a5d){return client[_0x325e('0xf')](_0x27ac5a,_0x45192f)[_0x325e('0x10')](function(_0x1c1da7){logger[_0x325e('0x11')]('VoiceQueueReport,\x20%s,\x20%s',_0x3ccf96,_0x325e('0x12'));logger[_0x325e('0x13')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x3ccf96,_0x325e('0x12'),JSON['stringify'](_0x1c1da7));if(_0x1c1da7[_0x325e('0x14')]){if(_0x1c1da7[_0x325e('0x14')][_0x325e('0x15')]===0x1f4){logger[_0x325e('0x14')](_0x325e('0x16'),_0x3ccf96,_0x1c1da7[_0x325e('0x14')]['message']);return _0x230a5d(_0x1c1da7[_0x325e('0x14')][_0x325e('0x17')]);}logger['error'](_0x325e('0x16'),_0x3ccf96,_0x1c1da7[_0x325e('0x14')]['message']);return _0x277372(_0x1c1da7['error'][_0x325e('0x17')]);}else{logger[_0x325e('0x11')](_0x325e('0x16'),_0x3ccf96,_0x325e('0x12'));_0x277372(_0x1c1da7[_0x325e('0x18')][_0x325e('0x17')]);}})[_0x325e('0x19')](function(_0x5a5b8d){logger['error'](_0x325e('0x16'),_0x3ccf96,_0x5a5b8d);_0x230a5d(_0x5a5b8d);});});}exports[_0x325e('0x1a')]=function(_0x3621ae){var _0x8a6199=this;return new Promise(function(_0x52a102,_0x50572b){return db[_0x325e('0x1b')][_0x325e('0x1c')]({'raw':_0x3621ae[_0x325e('0x1d')]?_0x3621ae[_0x325e('0x1d')][_0x325e('0x1e')]===undefined?!![]:![]:!![],'where':_0x3621ae[_0x325e('0x1d')]?_0x3621ae[_0x325e('0x1d')][_0x325e('0x1f')]||null:null,'attributes':_0x3621ae[_0x325e('0x1d')]?_0x3621ae[_0x325e('0x1d')][_0x325e('0x20')]||null:null,'limit':_0x3621ae['options']?_0x3621ae[_0x325e('0x1d')][_0x325e('0x21')]||null:null,'include':_0x3621ae[_0x325e('0x1d')]?_0x3621ae[_0x325e('0x1d')][_0x325e('0x22')]?_[_0x325e('0x23')](_0x3621ae['options'][_0x325e('0x22')],function(_0x270dba){return{'model':db[_0x270dba['model']],'as':_0x270dba['as'],'attributes':_0x270dba['attributes'],'include':_0x270dba[_0x325e('0x22')]?_[_0x325e('0x23')](_0x270dba[_0x325e('0x22')],function(_0xb4c788){return{'model':db[_0xb4c788[_0x325e('0x24')]],'as':_0xb4c788['as'],'attributes':_0xb4c788['attributes'],'include':_0xb4c788['include']?_[_0x325e('0x23')](_0xb4c788[_0x325e('0x22')],function(_0x137117){return{'model':db[_0x137117[_0x325e('0x24')]],'as':_0x137117['as'],'attributes':_0x137117[_0x325e('0x20')]};}):[]};}):[]};}):[]:[]})[_0x325e('0x10')](function(_0x1239b5){logger[_0x325e('0x11')](_0x325e('0x1a'),_0x3621ae);logger[_0x325e('0x13')](_0x325e('0x1a'),_0x3621ae,JSON[_0x325e('0x25')](_0x1239b5));_0x52a102(_0x1239b5);})['catch'](function(_0x55ea9a){logger[_0x325e('0x14')](_0x325e('0x1a'),_0x55ea9a[_0x325e('0x17')],_0x3621ae);_0x50572b(_0x8a6199[_0x325e('0x14')](0x1f4,_0x55ea9a[_0x325e('0x17')]));});});};exports['CreateVoiceQueueReport']=function(_0x57fe72){var _0x226d52=this;return new Promise(function(_0x483617,_0x246ea5){return db[_0x325e('0x1b')][_0x325e('0x26')](_0x57fe72[_0x325e('0x27')],{'raw':_0x57fe72['options']?_0x57fe72[_0x325e('0x1d')][_0x325e('0x1e')]===undefined?!![]:![]:!![]})[_0x325e('0x10')](function(_0x13e702){logger[_0x325e('0x11')](_0x325e('0x28'),_0x57fe72);logger[_0x325e('0x13')](_0x325e('0x28'),_0x57fe72,JSON[_0x325e('0x25')](_0x13e702));_0x483617(_0x13e702);})[_0x325e('0x19')](function(_0x313681){logger['error']('CreateVoiceQueueReport',_0x313681[_0x325e('0x17')],_0x57fe72);_0x246ea5(_0x226d52['error'](0x1f4,_0x313681[_0x325e('0x17')]));});});};exports[_0x325e('0x29')]=function(_0x5b2ef7){var _0x2b0b94=this;return new Promise(function(_0x4de4a1,_0x1c1f12){return db[_0x325e('0x1b')][_0x325e('0x2a')](_0x5b2ef7[_0x325e('0x27')],{'raw':_0x5b2ef7[_0x325e('0x1d')]?_0x5b2ef7[_0x325e('0x1d')][_0x325e('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b2ef7[_0x325e('0x1d')]?_0x5b2ef7[_0x325e('0x1d')][_0x325e('0x1f')]||null:null,'attributes':_0x5b2ef7[_0x325e('0x1d')]?_0x5b2ef7[_0x325e('0x1d')][_0x325e('0x20')]||null:null,'limit':_0x5b2ef7[_0x325e('0x1d')]?_0x5b2ef7['options'][_0x325e('0x21')]||null:null})['then'](function(_0x51c7b0){logger[_0x325e('0x11')](_0x325e('0x29'),_0x5b2ef7);logger[_0x325e('0x13')](_0x325e('0x29'),_0x5b2ef7,JSON[_0x325e('0x25')](_0x51c7b0));_0x4de4a1(_0x51c7b0);})[_0x325e('0x19')](function(_0x596f4a){logger[_0x325e('0x14')](_0x325e('0x29'),_0x596f4a[_0x325e('0x17')],_0x5b2ef7);_0x1c1f12(_0x2b0b94[_0x325e('0x14')](0x1f4,_0x596f4a[_0x325e('0x17')]));});});};
\ No newline at end of file
index 496eeac..d96f608 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaec=['remove','emit','removeListener','./voiceQueueReport.events','save'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xfaec,0x12f));var _0xcfae=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xfaec[_0x2dafbe];return _0x58a45a;};'use strict';var VoiceQueueReportEvents=require(_0xcfae('0x0'));var events=[_0xcfae('0x1'),_0xcfae('0x2'),'update'];function createListener(_0x4be32b,_0x4fdf31){return function(_0x2e1ad6){_0x4fdf31[_0xcfae('0x3')](_0x4be32b,_0x2e1ad6);};}function removeListener(_0xa45aee,_0x3035db){return function(){VoiceQueueReportEvents[_0xcfae('0x4')](_0xa45aee,_0x3035db);};}exports['register']=function(_0x5dcf1e){for(var _0x31e193=0x0,_0x4597ff=events['length'];_0x31e193<_0x4597ff;_0x31e193++){var _0x3a2df6=events[_0x31e193];var _0xc4c26b=createListener('voiceQueueReport:'+_0x3a2df6,_0x5dcf1e);VoiceQueueReportEvents['on'](_0x3a2df6,_0xc4c26b);}};
\ No newline at end of file
+var _0x5a01=['save','remove','removeListener','length','voiceQueueReport:','./voiceQueueReport.events'];(function(_0x5b9c2b,_0x18429b){var _0x1c6389=function(_0x25ae1f){while(--_0x25ae1f){_0x5b9c2b['push'](_0x5b9c2b['shift']());}};_0x1c6389(++_0x18429b);}(_0x5a01,0x1af));var _0x15a0=function(_0x4a095e,_0x381cd5){_0x4a095e=_0x4a095e-0x0;var _0x10ef73=_0x5a01[_0x4a095e];return _0x10ef73;};'use strict';var VoiceQueueReportEvents=require(_0x15a0('0x0'));var events=[_0x15a0('0x1'),_0x15a0('0x2'),'update'];function createListener(_0x58ef33,_0x2e5096){return function(_0x2c65fb){_0x2e5096['emit'](_0x58ef33,_0x2c65fb);};}function removeListener(_0x1c83a1,_0x12ae6b){return function(){VoiceQueueReportEvents[_0x15a0('0x3')](_0x1c83a1,_0x12ae6b);};}exports['register']=function(_0x5cc5bd){for(var _0x2e15f2=0x0,_0x52ab0=events[_0x15a0('0x4')];_0x2e15f2<_0x52ab0;_0x2e15f2++){var _0x502248=events[_0x2e15f2];var _0x44f39a=createListener(_0x15a0('0x5')+_0x502248,_0x5cc5bd);VoiceQueueReportEvents['on'](_0x502248,_0x44f39a);}};
\ No newline at end of file
index 27ba637..5da3f21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x493b=['index','/:id','show','isAuthenticated','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../config/environment','get'];(function(_0x32f519,_0x44748f){var _0x1488a2=function(_0x26926c){while(--_0x26926c){_0x32f519['push'](_0x32f519['shift']());}};_0x1488a2(++_0x44748f);}(_0x493b,0x1b9));var _0xb493=function(_0x138841,_0xc4ca7f){_0x138841=_0x138841-0x0;var _0x39f544=_0x493b[_0x138841];return _0x39f544;};'use strict';var multer=require(_0xb493('0x0'));var util=require('util');var path=require(_0xb493('0x1'));var timeout=require(_0xb493('0x2'));var express=require('express');var router=express[_0xb493('0x3')]();var fs_extra=require(_0xb493('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb493('0x5'));var controller=require('./voiceQueuesLog.controller');router[_0xb493('0x6')]('/',auth['isAuthenticated'](),controller[_0xb493('0x7')]);router[_0xb493('0x6')](_0xb493('0x8'),auth['isAuthenticated'](),controller[_0xb493('0x9')]);router['post']('/',auth[_0xb493('0xa')](),controller['create']);router[_0xb493('0xb')](_0xb493('0x8'),auth[_0xb493('0xa')](),controller[_0xb493('0xc')]);router[_0xb493('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xb493('0xe')]);module[_0xb493('0xf')]=router;
\ No newline at end of file
+var _0x10ca=['update','delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','index','/:id','isAuthenticated','show','post','create','put'];(function(_0x394955,_0x59ea69){var _0x1c02d4=function(_0x333b97){while(--_0x333b97){_0x394955['push'](_0x394955['shift']());}};_0x1c02d4(++_0x59ea69);}(_0x10ca,0x1a7));var _0xa10c=function(_0x104d0d,_0x81e4ad){_0x104d0d=_0x104d0d-0x0;var _0x3889ac=_0x10ca[_0x104d0d];return _0x3889ac;};'use strict';var multer=require(_0xa10c('0x0'));var util=require(_0xa10c('0x1'));var path=require('path');var timeout=require(_0xa10c('0x2'));var express=require(_0xa10c('0x3'));var router=express['Router']();var fs_extra=require(_0xa10c('0x4'));var auth=require(_0xa10c('0x5'));var interaction=require(_0xa10c('0x6'));var config=require(_0xa10c('0x7'));var controller=require(_0xa10c('0x8'));router[_0xa10c('0x9')]('/',auth['isAuthenticated'](),controller[_0xa10c('0xa')]);router[_0xa10c('0x9')](_0xa10c('0xb'),auth[_0xa10c('0xc')](),controller[_0xa10c('0xd')]);router[_0xa10c('0xe')]('/',auth[_0xa10c('0xc')](),controller[_0xa10c('0xf')]);router[_0xa10c('0x10')](_0xa10c('0xb'),auth[_0xa10c('0xc')](),controller[_0xa10c('0x11')]);router[_0xa10c('0x12')]('/:id',auth[_0xa10c('0xc')](),controller['destroy']);module[_0xa10c('0x13')]=router;
\ No newline at end of file
index 97e7bc6..cfe75a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89a1=['moment','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize'];(function(_0x31e1c6,_0x22883d){var _0x3298c4=function(_0x52c13e){while(--_0x52c13e){_0x31e1c6['push'](_0x31e1c6['shift']());}};_0x3298c4(++_0x22883d);}(_0x89a1,0x1db));var _0x189a=function(_0x52d4c8,_0x172769){_0x52d4c8=_0x52d4c8-0x0;var _0xdc428b=_0x89a1[_0x52d4c8];return _0xdc428b;};'use strict';var Sequelize=require(_0x189a('0x0'));var moment=require(_0x189a('0x1'));module[_0x189a('0x2')]={'time':{'type':Sequelize[_0x189a('0x3')]},'callid':{'type':Sequelize[_0x189a('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x189a('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x189a('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x189a('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x189a('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x189a('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x189a('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x189a('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x189a('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x189a('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x189a('0x4')],'allowNull':![],'defaultValue':moment()[_0x189a('0x5')](_0x189a('0x6'))}};
\ No newline at end of file
+var _0xdd1b=['exports','STRING','DATE','moment'];(function(_0x38dc1e,_0x2435e4){var _0x4e69e7=function(_0x4026d){while(--_0x4026d){_0x38dc1e['push'](_0x38dc1e['shift']());}};_0x4e69e7(++_0x2435e4);}(_0xdd1b,0x1e7));var _0xbdd1=function(_0x49372a,_0x2970c8){_0x49372a=_0x49372a-0x0;var _0x2b8144=_0xdd1b[_0x49372a];return _0x2b8144;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xbdd1('0x0'));module[_0xbdd1('0x1')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xbdd1('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xbdd1('0x3')],'allowNull':![],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
index 9018427..659f61e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ab=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','where','pick','merge','options','includeAll','include','rows','catch','params','find','create','body','rimraf','zip-dir'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0xd0ab,0xd0));var _0xbd0a=function(_0x3a3e48,_0x485a65){_0x3a3e48=_0x3a3e48-0x0;var _0x4b327d=_0xd0ab[_0x3a3e48];return _0x4b327d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbd0a('0x0'));var zipdir=require(_0xbd0a('0x1'));var jsonpatch=require(_0xbd0a('0x2'));var rp=require(_0xbd0a('0x3'));var moment=require(_0xbd0a('0x4'));var BPromise=require(_0xbd0a('0x5'));var Mustache=require(_0xbd0a('0x6'));var util=require(_0xbd0a('0x7'));var path=require(_0xbd0a('0x8'));var sox=require('sox');var csv=require(_0xbd0a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xbd0a('0xa'));var crypto=require(_0xbd0a('0xb'));var jsforce=require(_0xbd0a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xbd0a('0x9'));var querystring=require(_0xbd0a('0xd'));var Papa=require(_0xbd0a('0xe'));var Redis=require(_0xbd0a('0xf'));var authService=require(_0xbd0a('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbd0a('0x11'));var logger=require(_0xbd0a('0x12'))(_0xbd0a('0x13'));var utils=require(_0xbd0a('0x14'));var config=require(_0xbd0a('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xbd0a('0x16'))['db'];function respondWithStatusCode(_0x3ad298,_0x11e327){_0x11e327=_0x11e327||0xcc;return function(_0x42cd3c){if(_0x42cd3c){return _0x3ad298[_0xbd0a('0x17')](_0x11e327);}return _0x3ad298[_0xbd0a('0x18')](_0x11e327)[_0xbd0a('0x19')]();};}function respondWithResult(_0x360bfb,_0xb00337){_0xb00337=_0xb00337||0xc8;return function(_0x1db2e0){if(_0x1db2e0){return _0x360bfb['status'](_0xb00337)[_0xbd0a('0x1a')](_0x1db2e0);}};}function respondWithFilteredResult(_0x5c0cb0,_0x5b6d20){return function(_0x9e1fa0){if(_0x9e1fa0){var _0x2b6126=typeof _0x5b6d20[_0xbd0a('0x1b')]===_0xbd0a('0x1c')&&typeof _0x5b6d20[_0xbd0a('0x1d')]===_0xbd0a('0x1c');var _0x242a5a=_0x9e1fa0['count'];var _0x17b10f=_0x2b6126?0x0:_0x5b6d20[_0xbd0a('0x1b')];var _0x5d562d=_0x2b6126?_0x9e1fa0[_0xbd0a('0x1e')]:_0x5b6d20[_0xbd0a('0x1b')]+_0x5b6d20[_0xbd0a('0x1d')];var _0xecabc8;if(_0x5d562d>=_0x242a5a){_0x5d562d=_0x242a5a;_0xecabc8=0xc8;}else{_0xecabc8=0xce;}_0x5c0cb0[_0xbd0a('0x18')](_0xecabc8);return _0x5c0cb0[_0xbd0a('0x1f')](_0xbd0a('0x20'),_0x17b10f+'-'+_0x5d562d+'/'+_0x242a5a)['json'](_0x9e1fa0);}return null;};}function patchUpdates(_0x3677c2){return function(_0x1a7400){try{jsonpatch[_0xbd0a('0x21')](_0x1a7400,_0x3677c2,!![]);}catch(_0x37b4ca){return BPromise[_0xbd0a('0x22')](_0x37b4ca);}return _0x1a7400['save']();};}function saveUpdates(_0x3dedd1,_0x26d9a3){return function(_0x28f4f1){if(_0x28f4f1){return _0x28f4f1[_0xbd0a('0x23')](_0x3dedd1)[_0xbd0a('0x24')](function(_0x4a2723){return _0x4a2723;});}return null;};}function removeEntity(_0x2977cd,_0xb289b1){return function(_0x123b1f){if(_0x123b1f){return _0x123b1f[_0xbd0a('0x25')]()[_0xbd0a('0x24')](function(){_0x2977cd[_0xbd0a('0x18')](0xcc)[_0xbd0a('0x19')]();});}};}function handleEntityNotFound(_0x3efa15,_0x3ad92c){return function(_0x42a2e3){if(!_0x42a2e3){_0x3efa15[_0xbd0a('0x17')](0x194);}return _0x42a2e3;};}function handleError(_0x6edb53,_0x4e9bf1){_0x4e9bf1=_0x4e9bf1||0x1f4;return function(_0x3b30e2){logger[_0xbd0a('0x26')](_0x3b30e2[_0xbd0a('0x27')]);if(_0x3b30e2[_0xbd0a('0x28')]){delete _0x3b30e2[_0xbd0a('0x28')];}_0x6edb53[_0xbd0a('0x18')](_0x4e9bf1)[_0xbd0a('0x29')](_0x3b30e2);};}exports[_0xbd0a('0x2a')]=function(_0x239121,_0x1285b2){var _0x438ef3={},_0x29acf9={},_0x495427={'count':0x0,'rows':[]};var _0x2d9e10=_[_0xbd0a('0x2b')](db[_0xbd0a('0x2c')][_0xbd0a('0x2d')],function(_0xe02d05){return{'name':_0xe02d05[_0xbd0a('0x2e')],'type':_0xe02d05[_0xbd0a('0x2f')]['key']};});_0x29acf9[_0xbd0a('0x30')]=_[_0xbd0a('0x2b')](_0x2d9e10,'name');_0x29acf9[_0xbd0a('0x31')]=_[_0xbd0a('0x32')](_0x239121['query']);_0x29acf9[_0xbd0a('0x33')]=_['intersection'](_0x29acf9[_0xbd0a('0x30')],_0x29acf9[_0xbd0a('0x31')]);_0x438ef3[_0xbd0a('0x34')]=_[_0xbd0a('0x35')](_0x29acf9[_0xbd0a('0x30')],qs['fields'](_0x239121[_0xbd0a('0x31')][_0xbd0a('0x36')]));_0x438ef3[_0xbd0a('0x34')]=_0x438ef3[_0xbd0a('0x34')][_0xbd0a('0x37')]?_0x438ef3[_0xbd0a('0x34')]:_0x29acf9[_0xbd0a('0x30')];if(!_0x239121[_0xbd0a('0x31')][_0xbd0a('0x38')]('nolimit')){_0x438ef3[_0xbd0a('0x1d')]=qs['limit'](_0x239121[_0xbd0a('0x31')][_0xbd0a('0x1d')]);_0x438ef3[_0xbd0a('0x1b')]=qs[_0xbd0a('0x1b')](_0x239121[_0xbd0a('0x31')][_0xbd0a('0x1b')]);}_0x438ef3[_0xbd0a('0x39')]=qs['sort'](_0x239121['query']['sort']);_0x438ef3[_0xbd0a('0x3a')]=qs['filters'](_[_0xbd0a('0x3b')](_0x239121[_0xbd0a('0x31')],_0x29acf9[_0xbd0a('0x33')]),_0x2d9e10);if(_0x239121[_0xbd0a('0x31')]['filter']){_0x438ef3[_0xbd0a('0x3a')]=_[_0xbd0a('0x3c')](_0x438ef3[_0xbd0a('0x3a')],{'$or':_[_0xbd0a('0x2b')](_0x2d9e10,function(_0x3ef9c1){if(_0x3ef9c1[_0xbd0a('0x2f')]!=='VIRTUAL'){var _0x2e92d0={};_0x2e92d0[_0x3ef9c1[_0xbd0a('0x28')]]={'$like':'%'+_0x239121[_0xbd0a('0x31')]['filter']+'%'};return _0x2e92d0;}})});}_0x438ef3=_[_0xbd0a('0x3c')]({},_0x438ef3,_0x239121[_0xbd0a('0x3d')]);var _0x2b2424={'where':_0x438ef3[_0xbd0a('0x3a')]};return db[_0xbd0a('0x2c')][_0xbd0a('0x1e')](_0x2b2424)['then'](function(_0x4a2c45){_0x495427[_0xbd0a('0x1e')]=_0x4a2c45;if(_0x239121[_0xbd0a('0x31')][_0xbd0a('0x3e')]){_0x438ef3[_0xbd0a('0x3f')]=[{'all':!![]}];}return db['VoiceQueuesLog']['findAll'](_0x438ef3);})[_0xbd0a('0x24')](function(_0x3ac693){_0x495427[_0xbd0a('0x40')]=_0x3ac693;return _0x495427;})[_0xbd0a('0x24')](respondWithFilteredResult(_0x1285b2,_0x438ef3))[_0xbd0a('0x41')](handleError(_0x1285b2,null));};exports['show']=function(_0x17a824,_0x1cd910){var _0xc31240={'raw':!![],'where':{'id':_0x17a824[_0xbd0a('0x42')]['id']}},_0x2bf5dd={};_0x2bf5dd[_0xbd0a('0x30')]=_[_0xbd0a('0x32')](db['VoiceQueuesLog'][_0xbd0a('0x2d')]);_0x2bf5dd[_0xbd0a('0x31')]=_[_0xbd0a('0x32')](_0x17a824[_0xbd0a('0x31')]);_0x2bf5dd[_0xbd0a('0x33')]=_[_0xbd0a('0x35')](_0x2bf5dd[_0xbd0a('0x30')],_0x2bf5dd[_0xbd0a('0x31')]);_0xc31240[_0xbd0a('0x34')]=_[_0xbd0a('0x35')](_0x2bf5dd[_0xbd0a('0x30')],qs[_0xbd0a('0x36')](_0x17a824[_0xbd0a('0x31')][_0xbd0a('0x36')]));_0xc31240[_0xbd0a('0x34')]=_0xc31240[_0xbd0a('0x34')][_0xbd0a('0x37')]?_0xc31240[_0xbd0a('0x34')]:_0x2bf5dd[_0xbd0a('0x30')];if(_0x17a824['query'][_0xbd0a('0x3e')]){_0xc31240[_0xbd0a('0x3f')]=[{'all':!![]}];}_0xc31240=_[_0xbd0a('0x3c')]({},_0xc31240,_0x17a824[_0xbd0a('0x3d')]);return db[_0xbd0a('0x2c')][_0xbd0a('0x43')](_0xc31240)[_0xbd0a('0x24')](handleEntityNotFound(_0x1cd910,null))[_0xbd0a('0x24')](respondWithResult(_0x1cd910,null))[_0xbd0a('0x41')](handleError(_0x1cd910,null));};exports['create']=function(_0x612b99,_0xe96a9d){return db[_0xbd0a('0x2c')][_0xbd0a('0x44')](_0x612b99[_0xbd0a('0x45')],{})['then'](respondWithResult(_0xe96a9d,0xc9))[_0xbd0a('0x41')](handleError(_0xe96a9d,null));};exports['update']=function(_0x15ac99,_0x5249d7){if(_0x15ac99[_0xbd0a('0x45')]['id']){delete _0x15ac99[_0xbd0a('0x45')]['id'];}return db['VoiceQueuesLog']['find']({'where':{'id':_0x15ac99[_0xbd0a('0x42')]['id']}})[_0xbd0a('0x24')](handleEntityNotFound(_0x5249d7,null))['then'](saveUpdates(_0x15ac99[_0xbd0a('0x45')],null))[_0xbd0a('0x24')](respondWithResult(_0x5249d7,null))[_0xbd0a('0x41')](handleError(_0x5249d7,null));};exports['destroy']=function(_0x510577,_0x22ccfd){return db[_0xbd0a('0x2c')][_0xbd0a('0x43')]({'where':{'id':_0x510577[_0xbd0a('0x42')]['id']}})[_0xbd0a('0x24')](handleEntityNotFound(_0x22ccfd,null))['then'](removeEntity(_0x22ccfd,null))[_0xbd0a('0x41')](handleError(_0x22ccfd,null));};
\ No newline at end of file
+var _0xf6bd=['path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','params','length','find','update','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util'];(function(_0xd7b0a4,_0x53c7d3){var _0x184e9e=function(_0x325bbd){while(--_0x325bbd){_0xd7b0a4['push'](_0xd7b0a4['shift']());}};_0x184e9e(++_0x53c7d3);}(_0xf6bd,0xd5));var _0xdf6b=function(_0x3984a6,_0x4adaba){_0x3984a6=_0x3984a6-0x0;var _0x2cc75f=_0xf6bd[_0x3984a6];return _0x2cc75f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdf6b('0x0'));var zipdir=require(_0xdf6b('0x1'));var jsonpatch=require(_0xdf6b('0x2'));var rp=require(_0xdf6b('0x3'));var moment=require('moment');var BPromise=require(_0xdf6b('0x4'));var Mustache=require('mustache');var util=require(_0xdf6b('0x5'));var path=require(_0xdf6b('0x6'));var sox=require(_0xdf6b('0x7'));var csv=require(_0xdf6b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdf6b('0x9'));var _=require(_0xdf6b('0xa'));var squel=require(_0xdf6b('0xb'));var crypto=require('crypto');var jsforce=require(_0xdf6b('0xc'));var deskjs=require(_0xdf6b('0xd'));var toCsv=require(_0xdf6b('0x8'));var querystring=require(_0xdf6b('0xe'));var Papa=require(_0xdf6b('0xf'));var Redis=require(_0xdf6b('0x10'));var authService=require(_0xdf6b('0x11'));var qs=require(_0xdf6b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xdf6b('0x13'))('api');var utils=require(_0xdf6b('0x14'));var config=require(_0xdf6b('0x15'));var licenseUtil=require(_0xdf6b('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x53ede8,_0x4cf33c){_0x4cf33c=_0x4cf33c||0xcc;return function(_0x24b425){if(_0x24b425){return _0x53ede8[_0xdf6b('0x17')](_0x4cf33c);}return _0x53ede8[_0xdf6b('0x18')](_0x4cf33c)[_0xdf6b('0x19')]();};}function respondWithResult(_0x2d7cb8,_0x457b13){_0x457b13=_0x457b13||0xc8;return function(_0x5294f9){if(_0x5294f9){return _0x2d7cb8[_0xdf6b('0x18')](_0x457b13)['json'](_0x5294f9);}};}function respondWithFilteredResult(_0x1847b0,_0x12b411){return function(_0x4ccb82){if(_0x4ccb82){var _0x12d870=typeof _0x12b411[_0xdf6b('0x1a')]===_0xdf6b('0x1b')&&typeof _0x12b411[_0xdf6b('0x1c')]===_0xdf6b('0x1b');var _0x5a1bdb=_0x4ccb82[_0xdf6b('0x1d')];var _0x37b5cc=_0x12d870?0x0:_0x12b411[_0xdf6b('0x1a')];var _0x56d597=_0x12d870?_0x4ccb82[_0xdf6b('0x1d')]:_0x12b411[_0xdf6b('0x1a')]+_0x12b411[_0xdf6b('0x1c')];var _0x1e055d;if(_0x56d597>=_0x5a1bdb){_0x56d597=_0x5a1bdb;_0x1e055d=0xc8;}else{_0x1e055d=0xce;}_0x1847b0['status'](_0x1e055d);return _0x1847b0['set'](_0xdf6b('0x1e'),_0x37b5cc+'-'+_0x56d597+'/'+_0x5a1bdb)['json'](_0x4ccb82);}return null;};}function patchUpdates(_0x575c2f){return function(_0x14c019){try{jsonpatch[_0xdf6b('0x1f')](_0x14c019,_0x575c2f,!![]);}catch(_0x241e87){return BPromise[_0xdf6b('0x20')](_0x241e87);}return _0x14c019[_0xdf6b('0x21')]();};}function saveUpdates(_0x1a8a6e,_0xf3fa40){return function(_0x212452){if(_0x212452){return _0x212452['update'](_0x1a8a6e)['then'](function(_0x29df3a){return _0x29df3a;});}return null;};}function removeEntity(_0x17f2c5,_0x650e9a){return function(_0x2679b6){if(_0x2679b6){return _0x2679b6['destroy']()['then'](function(){_0x17f2c5[_0xdf6b('0x18')](0xcc)[_0xdf6b('0x19')]();});}};}function handleEntityNotFound(_0x4f7aa2,_0x405db6){return function(_0x2240ab){if(!_0x2240ab){_0x4f7aa2[_0xdf6b('0x17')](0x194);}return _0x2240ab;};}function handleError(_0x1ee98b,_0x5c3922){_0x5c3922=_0x5c3922||0x1f4;return function(_0x30a7ef){logger[_0xdf6b('0x22')](_0x30a7ef[_0xdf6b('0x23')]);if(_0x30a7ef['name']){delete _0x30a7ef[_0xdf6b('0x24')];}_0x1ee98b[_0xdf6b('0x18')](_0x5c3922)[_0xdf6b('0x25')](_0x30a7ef);};}exports[_0xdf6b('0x26')]=function(_0x594897,_0x30d431){var _0xca4d68={},_0x36e688={},_0x11aa16={'count':0x0,'rows':[]};var _0x379f28=_[_0xdf6b('0x27')](db[_0xdf6b('0x28')][_0xdf6b('0x29')],function(_0x14fca2){return{'name':_0x14fca2[_0xdf6b('0x2a')],'type':_0x14fca2[_0xdf6b('0x2b')][_0xdf6b('0x2c')]};});_0x36e688[_0xdf6b('0x2d')]=_[_0xdf6b('0x27')](_0x379f28,_0xdf6b('0x24'));_0x36e688[_0xdf6b('0x2e')]=_[_0xdf6b('0x2f')](_0x594897['query']);_0x36e688['filters']=_[_0xdf6b('0x30')](_0x36e688[_0xdf6b('0x2d')],_0x36e688[_0xdf6b('0x2e')]);_0xca4d68[_0xdf6b('0x31')]=_['intersection'](_0x36e688[_0xdf6b('0x2d')],qs[_0xdf6b('0x32')](_0x594897[_0xdf6b('0x2e')][_0xdf6b('0x32')]));_0xca4d68[_0xdf6b('0x31')]=_0xca4d68[_0xdf6b('0x31')]['length']?_0xca4d68['attributes']:_0x36e688[_0xdf6b('0x2d')];if(!_0x594897[_0xdf6b('0x2e')]['hasOwnProperty'](_0xdf6b('0x33'))){_0xca4d68[_0xdf6b('0x1c')]=qs[_0xdf6b('0x1c')](_0x594897[_0xdf6b('0x2e')][_0xdf6b('0x1c')]);_0xca4d68[_0xdf6b('0x1a')]=qs[_0xdf6b('0x1a')](_0x594897[_0xdf6b('0x2e')]['offset']);}_0xca4d68[_0xdf6b('0x34')]=qs[_0xdf6b('0x35')](_0x594897['query']['sort']);_0xca4d68['where']=qs[_0xdf6b('0x36')](_[_0xdf6b('0x37')](_0x594897[_0xdf6b('0x2e')],_0x36e688[_0xdf6b('0x36')]),_0x379f28);if(_0x594897['query'][_0xdf6b('0x38')]){_0xca4d68['where']=_[_0xdf6b('0x39')](_0xca4d68[_0xdf6b('0x3a')],{'$or':_[_0xdf6b('0x27')](_0x379f28,function(_0x295f55){if(_0x295f55[_0xdf6b('0x2b')]!==_0xdf6b('0x3b')){var _0x2efa96={};_0x2efa96[_0x295f55[_0xdf6b('0x24')]]={'$like':'%'+_0x594897[_0xdf6b('0x2e')][_0xdf6b('0x38')]+'%'};return _0x2efa96;}})});}_0xca4d68=_[_0xdf6b('0x39')]({},_0xca4d68,_0x594897[_0xdf6b('0x3c')]);var _0x4c3f20={'where':_0xca4d68[_0xdf6b('0x3a')]};return db[_0xdf6b('0x28')]['count'](_0x4c3f20)[_0xdf6b('0x3d')](function(_0x7fe3e5){_0x11aa16[_0xdf6b('0x1d')]=_0x7fe3e5;if(_0x594897['query'][_0xdf6b('0x3e')]){_0xca4d68[_0xdf6b('0x3f')]=[{'all':!![]}];}return db[_0xdf6b('0x28')][_0xdf6b('0x40')](_0xca4d68);})[_0xdf6b('0x3d')](function(_0x236a88){_0x11aa16[_0xdf6b('0x41')]=_0x236a88;return _0x11aa16;})[_0xdf6b('0x3d')](respondWithFilteredResult(_0x30d431,_0xca4d68))[_0xdf6b('0x42')](handleError(_0x30d431,null));};exports['show']=function(_0x2fa8c6,_0xd6d34d){var _0x250aa1={'raw':!![],'where':{'id':_0x2fa8c6[_0xdf6b('0x43')]['id']}},_0x52fbb1={};_0x52fbb1[_0xdf6b('0x2d')]=_[_0xdf6b('0x2f')](db[_0xdf6b('0x28')]['rawAttributes']);_0x52fbb1[_0xdf6b('0x2e')]=_[_0xdf6b('0x2f')](_0x2fa8c6[_0xdf6b('0x2e')]);_0x52fbb1[_0xdf6b('0x36')]=_[_0xdf6b('0x30')](_0x52fbb1['model'],_0x52fbb1[_0xdf6b('0x2e')]);_0x250aa1[_0xdf6b('0x31')]=_[_0xdf6b('0x30')](_0x52fbb1[_0xdf6b('0x2d')],qs[_0xdf6b('0x32')](_0x2fa8c6[_0xdf6b('0x2e')][_0xdf6b('0x32')]));_0x250aa1[_0xdf6b('0x31')]=_0x250aa1['attributes'][_0xdf6b('0x44')]?_0x250aa1[_0xdf6b('0x31')]:_0x52fbb1[_0xdf6b('0x2d')];if(_0x2fa8c6[_0xdf6b('0x2e')][_0xdf6b('0x3e')]){_0x250aa1[_0xdf6b('0x3f')]=[{'all':!![]}];}_0x250aa1=_[_0xdf6b('0x39')]({},_0x250aa1,_0x2fa8c6[_0xdf6b('0x3c')]);return db[_0xdf6b('0x28')][_0xdf6b('0x45')](_0x250aa1)[_0xdf6b('0x3d')](handleEntityNotFound(_0xd6d34d,null))[_0xdf6b('0x3d')](respondWithResult(_0xd6d34d,null))[_0xdf6b('0x42')](handleError(_0xd6d34d,null));};exports['create']=function(_0x2fb4dc,_0x16f230){return db[_0xdf6b('0x28')]['create'](_0x2fb4dc['body'],{})['then'](respondWithResult(_0x16f230,0xc9))['catch'](handleError(_0x16f230,null));};exports[_0xdf6b('0x46')]=function(_0x5d69b2,_0x2a0efa){if(_0x5d69b2[_0xdf6b('0x47')]['id']){delete _0x5d69b2[_0xdf6b('0x47')]['id'];}return db['VoiceQueuesLog'][_0xdf6b('0x45')]({'where':{'id':_0x5d69b2[_0xdf6b('0x43')]['id']}})['then'](handleEntityNotFound(_0x2a0efa,null))[_0xdf6b('0x3d')](saveUpdates(_0x5d69b2['body'],null))[_0xdf6b('0x3d')](respondWithResult(_0x2a0efa,null))[_0xdf6b('0x42')](handleError(_0x2a0efa,null));};exports[_0xdf6b('0x48')]=function(_0x39da3f,_0x253c95){return db['VoiceQueuesLog'][_0xdf6b('0x45')]({'where':{'id':_0x39da3f['params']['id']}})[_0xdf6b('0x3d')](handleEntityNotFound(_0x253c95,null))[_0xdf6b('0x3d')](removeEntity(_0x253c95,null))['catch'](handleError(_0x253c95,null));};
\ No newline at end of file
index e5dc801..8375d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18e4=['VoiceQueuesLog','voice_queues_log','event_dtm','event','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports'];(function(_0x220b6d,_0x3691e4){var _0xaf17c9=function(_0x57b9fd){while(--_0x57b9fd){_0x220b6d['push'](_0x220b6d['shift']());}};_0xaf17c9(++_0x3691e4);}(_0x18e4,0xb4));var _0x418e=function(_0x61fd3a,_0x15a094){_0x61fd3a=_0x61fd3a-0x0;var _0x546d6b=_0x18e4[_0x61fd3a];return _0x546d6b;};'use strict';var _=require(_0x418e('0x0'));var util=require(_0x418e('0x1'));var logger=require(_0x418e('0x2'))(_0x418e('0x3'));var moment=require(_0x418e('0x4'));var BPromise=require(_0x418e('0x5'));var rp=require(_0x418e('0x6'));var fs=require('fs');var path=require(_0x418e('0x7'));var rimraf=require(_0x418e('0x8'));var config=require(_0x418e('0x9'));var attributes=require(_0x418e('0xa'));module[_0x418e('0xb')]=function(_0xcbbd5b,_0xaf0e88){return _0xcbbd5b['define'](_0x418e('0xc'),attributes,{'tableName':_0x418e('0xd'),'paranoid':![],'indexes':[{'name':_0x418e('0xe'),'fields':[_0x418e('0xf'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
+var _0x7a1b=['exports','define','event_dtm','event','lodash','util','api','request-promise','path','./voiceQueuesLog.attributes'];(function(_0x343d2b,_0x5c9f07){var _0x5de679=function(_0x174f77){while(--_0x174f77){_0x343d2b['push'](_0x343d2b['shift']());}};_0x5de679(++_0x5c9f07);}(_0x7a1b,0x11c));var _0xb7a1=function(_0x51217d,_0x3be502){_0x51217d=_0x51217d-0x0;var _0x4d996e=_0x7a1b[_0x51217d];return _0x4d996e;};'use strict';var _=require(_0xb7a1('0x0'));var util=require(_0xb7a1('0x1'));var logger=require('../../config/logger')(_0xb7a1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb7a1('0x3'));var fs=require('fs');var path=require(_0xb7a1('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb7a1('0x5'));module[_0xb7a1('0x6')]=function(_0x32b2fa,_0x10862a){return _0x32b2fa[_0xb7a1('0x7')]('VoiceQueuesLog',attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0xb7a1('0x8'),'fields':[_0xb7a1('0x9'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
index b8af99e..ff62f14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aa5=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x40ff40,_0x426577){var _0x33e79d=function(_0xbbde19){while(--_0xbbde19){_0x40ff40['push'](_0x40ff40['shift']());}};_0x33e79d(++_0x426577);}(_0x8aa5,0x78));var _0x58aa=function(_0x4b247b,_0x464c13){_0x4b247b=_0x4b247b-0x0;var _0x41cb0a=_0x8aa5[_0x4b247b];return _0x41cb0a;};'use strict';var _=require(_0x58aa('0x0'));var util=require(_0x58aa('0x1'));var moment=require(_0x58aa('0x2'));var BPromise=require(_0x58aa('0x3'));var rs=require(_0x58aa('0x4'));var fs=require('fs');var Redis=require(_0x58aa('0x5'));var db=require(_0x58aa('0x6'))['db'];var utils=require(_0x58aa('0x7'));var logger=require(_0x58aa('0x8'))(_0x58aa('0x9'));var config=require('../../config/environment');var jayson=require(_0x58aa('0xa'));var client=jayson[_0x58aa('0xb')][_0x58aa('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x8c5e44,_0x47d691,_0x1fd061){return new BPromise(function(_0x4a70f2,_0x7f3997){return client['request'](_0x8c5e44,_0x1fd061)[_0x58aa('0xd')](function(_0x35faad){logger[_0x58aa('0xe')](_0x58aa('0xf'),_0x47d691,_0x58aa('0x10'));logger[_0x58aa('0x11')](_0x58aa('0x12'),_0x47d691,_0x58aa('0x10'),JSON[_0x58aa('0x13')](_0x35faad));if(_0x35faad[_0x58aa('0x14')]){if(_0x35faad['error'][_0x58aa('0x15')]===0x1f4){logger['error'](_0x58aa('0xf'),_0x47d691,_0x35faad['error'][_0x58aa('0x16')]);return _0x7f3997(_0x35faad[_0x58aa('0x14')][_0x58aa('0x16')]);}logger[_0x58aa('0x14')](_0x58aa('0xf'),_0x47d691,_0x35faad[_0x58aa('0x14')][_0x58aa('0x16')]);return _0x4a70f2(_0x35faad[_0x58aa('0x14')][_0x58aa('0x16')]);}else{logger[_0x58aa('0xe')]('VoiceQueuesLog,\x20%s,\x20%s',_0x47d691,_0x58aa('0x10'));_0x4a70f2(_0x35faad[_0x58aa('0x17')][_0x58aa('0x16')]);}})[_0x58aa('0x18')](function(_0x1baffc){logger[_0x58aa('0x14')](_0x58aa('0xf'),_0x47d691,_0x1baffc);_0x7f3997(_0x1baffc);});});}
\ No newline at end of file
+var _0xd5d8=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','request','then','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','lodash'];(function(_0x5ed68b,_0x25296c){var _0x510eaf=function(_0x34fdc6){while(--_0x34fdc6){_0x5ed68b['push'](_0x5ed68b['shift']());}};_0x510eaf(++_0x25296c);}(_0xd5d8,0x1a3));var _0x8d5d=function(_0x498b29,_0x6dd10f){_0x498b29=_0x498b29-0x0;var _0x260875=_0xd5d8[_0x498b29];return _0x260875;};'use strict';var _=require(_0x8d5d('0x0'));var util=require(_0x8d5d('0x1'));var moment=require(_0x8d5d('0x2'));var BPromise=require(_0x8d5d('0x3'));var rs=require(_0x8d5d('0x4'));var fs=require('fs');var Redis=require(_0x8d5d('0x5'));var db=require(_0x8d5d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8d5d('0x7'))(_0x8d5d('0x8'));var config=require('../../config/environment');var jayson=require(_0x8d5d('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xf576d9,_0x598e94,_0x4ebe96){return new BPromise(function(_0x5dd009,_0x39a07d){return client[_0x8d5d('0xa')](_0xf576d9,_0x4ebe96)[_0x8d5d('0xb')](function(_0x3bc59d){logger['info'](_0x8d5d('0xc'),_0x598e94,_0x8d5d('0xd'));logger[_0x8d5d('0xe')](_0x8d5d('0xf'),_0x598e94,_0x8d5d('0xd'),JSON[_0x8d5d('0x10')](_0x3bc59d));if(_0x3bc59d['error']){if(_0x3bc59d['error'][_0x8d5d('0x11')]===0x1f4){logger[_0x8d5d('0x12')](_0x8d5d('0xc'),_0x598e94,_0x3bc59d[_0x8d5d('0x12')]['message']);return _0x39a07d(_0x3bc59d[_0x8d5d('0x12')][_0x8d5d('0x13')]);}logger[_0x8d5d('0x12')](_0x8d5d('0xc'),_0x598e94,_0x3bc59d[_0x8d5d('0x12')]['message']);return _0x5dd009(_0x3bc59d['error']['message']);}else{logger['info'](_0x8d5d('0xc'),_0x598e94,'request\x20sent');_0x5dd009(_0x3bc59d['result'][_0x8d5d('0x13')]);}})[_0x8d5d('0x14')](function(_0xd66fe1){logger[_0x8d5d('0x12')](_0x8d5d('0xc'),_0x598e94,_0xd66fe1);_0x39a07d(_0xd66fe1);});});}
\ No newline at end of file
index a7c1448..206b433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6113=['./voiceRecording.controller','get','index','/describe','describe','/:id','show','/:id/download','isAuthenticated','download','downloads','/:id/transcribe','downloadTranscribe','runTranscribe','put','update','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x47d931,_0x254590){var _0x1f7fe8=function(_0x131846){while(--_0x131846){_0x47d931['push'](_0x47d931['shift']());}};_0x1f7fe8(++_0x254590);}(_0x6113,0xa7));var _0x3611=function(_0x100573,_0x443a74){_0x100573=_0x100573-0x0;var _0x38be6a=_0x6113[_0x100573];return _0x38be6a;};'use strict';var multer=require(_0x3611('0x0'));var util=require(_0x3611('0x1'));var path=require(_0x3611('0x2'));var timeout=require(_0x3611('0x3'));var express=require(_0x3611('0x4'));var router=express['Router']();var fs_extra=require(_0x3611('0x5'));var auth=require(_0x3611('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3611('0x7'));var controller=require(_0x3611('0x8'));router[_0x3611('0x9')]('/',auth['isAuthenticated'](),controller[_0x3611('0xa')]);router[_0x3611('0x9')](_0x3611('0xb'),auth['isAuthenticated'](),controller[_0x3611('0xc')]);router[_0x3611('0x9')](_0x3611('0xd'),auth['isAuthenticated'](),controller[_0x3611('0xe')]);router['get'](_0x3611('0xf'),auth[_0x3611('0x10')](),controller[_0x3611('0x11')]);router[_0x3611('0x9')]('/:id/downloads',controller[_0x3611('0x12')]);router['get'](_0x3611('0x13'),auth[_0x3611('0x10')](),controller[_0x3611('0x14')]);router['post']('/',auth[_0x3611('0x10')](),controller['create']);router['post'](_0x3611('0x13'),auth[_0x3611('0x10')](),controller[_0x3611('0x15')]);router[_0x3611('0x16')]('/:id',auth[_0x3611('0x10')](),controller[_0x3611('0x17')]);router['delete'](_0x3611('0xd'),auth[_0x3611('0x10')](),controller[_0x3611('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x88bc=['index','get','/describe','describe','/:id','show','/:id/download','download','/:id/downloads','/:id/transcribe','downloadTranscribe','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','isAuthenticated'];(function(_0x63c9c0,_0x1253a9){var _0x3118cb=function(_0x22aea3){while(--_0x22aea3){_0x63c9c0['push'](_0x63c9c0['shift']());}};_0x3118cb(++_0x1253a9);}(_0x88bc,0x1d1));var _0xc88b=function(_0x51ed62,_0x574379){_0x51ed62=_0x51ed62-0x0;var _0x34aee3=_0x88bc[_0x51ed62];return _0x34aee3;};'use strict';var multer=require(_0xc88b('0x0'));var util=require(_0xc88b('0x1'));var path=require('path');var timeout=require(_0xc88b('0x2'));var express=require(_0xc88b('0x3'));var router=express[_0xc88b('0x4')]();var fs_extra=require(_0xc88b('0x5'));var auth=require(_0xc88b('0x6'));var interaction=require(_0xc88b('0x7'));var config=require(_0xc88b('0x8'));var controller=require(_0xc88b('0x9'));router['get']('/',auth[_0xc88b('0xa')](),controller[_0xc88b('0xb')]);router[_0xc88b('0xc')](_0xc88b('0xd'),auth['isAuthenticated'](),controller[_0xc88b('0xe')]);router[_0xc88b('0xc')](_0xc88b('0xf'),auth[_0xc88b('0xa')](),controller[_0xc88b('0x10')]);router['get'](_0xc88b('0x11'),auth[_0xc88b('0xa')](),controller[_0xc88b('0x12')]);router[_0xc88b('0xc')](_0xc88b('0x13'),controller['downloads']);router[_0xc88b('0xc')](_0xc88b('0x14'),auth[_0xc88b('0xa')](),controller[_0xc88b('0x15')]);router[_0xc88b('0x16')]('/',auth[_0xc88b('0xa')](),controller[_0xc88b('0x17')]);router[_0xc88b('0x16')](_0xc88b('0x14'),auth[_0xc88b('0xa')](),controller['runTranscribe']);router[_0xc88b('0x18')](_0xc88b('0xf'),auth[_0xc88b('0xa')](),controller['update']);router[_0xc88b('0x19')](_0xc88b('0xf'),auth[_0xc88b('0xa')](),controller[_0xc88b('0x1a')]);module[_0xc88b('0x1b')]=router;
\ No newline at end of file
index fb75235..02ae1b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'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(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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 74abd15..1e971a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5125=['TranscribeService','startTranscriptionJob','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','Voice\x20Recording\x20not\x20found','findOne','transcribe','transcribeAccountId','transcribeRegion','language','bucket','Transcribe\x20not\x20configured','runSentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','fileText','.txt','Transcript\x20not\x20available','rimraf','request-promise','moment','bluebird','util','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','aws-sdk','uuid/v4','../../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','offset','limit','undefined','count','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','send','index','map','VoiceRecording','rawAttributes','fieldName','type','differenceBy','format','keys','intersection','model','query','attributes','length','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','fields','find','create','body','params','describe','download','../../components/encryptor','uniqueid','value','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','unlink','Not\x20found','MD5','sequelize','col','$and','push','%s.cypher','extname','Entity\x20not\x20found','info','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','createBucket','upload'];(function(_0x485b5a,_0x2b289b){var _0xd2b34d=function(_0x34dcbd){while(--_0x34dcbd){_0x485b5a['push'](_0x485b5a['shift']());}};_0xd2b34d(++_0x2b289b);}(_0x5125,0x14c));var _0x5512=function(_0x2f2ed0,_0x1c6435){_0x2f2ed0=_0x2f2ed0-0x0;var _0x250b0d=_0x5125[_0x2f2ed0];return _0x250b0d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5512('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5512('0x1'));var moment=require(_0x5512('0x2'));var BPromise=require(_0x5512('0x3'));var Mustache=require('mustache');var util=require(_0x5512('0x4'));var path=require('path');var sox=require(_0x5512('0x5'));var csv=require(_0x5512('0x6'));var ejs=require(_0x5512('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x5512('0x8'));var crypto=require(_0x5512('0x9'));var jsforce=require(_0x5512('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x5512('0x6'));var querystring=require(_0x5512('0xb'));var Papa=require(_0x5512('0xc'));var AWS=require(_0x5512('0xd'));var uuidv4=require(_0x5512('0xe'));var Redis=require('ioredis');var authService=require(_0x5512('0xf'));var qs=require(_0x5512('0x10'));var as=require(_0x5512('0x11'));var hardwareService=require(_0x5512('0x12'));var logger=require(_0x5512('0x13'))(_0x5512('0x14'));var utils=require(_0x5512('0x15'));var config=require(_0x5512('0x16'));var licenseUtil=require(_0x5512('0x17'));var db=require(_0x5512('0x18'))['db'];function respondWithStatusCode(_0x11eff2,_0x31fe70){_0x31fe70=_0x31fe70||0xcc;return function(_0x565458){if(_0x565458){return _0x11eff2['sendStatus'](_0x31fe70);}return _0x11eff2[_0x5512('0x19')](_0x31fe70)[_0x5512('0x1a')]();};}function respondWithResult(_0x55c25b,_0x54cc91){_0x54cc91=_0x54cc91||0xc8;return function(_0x340a30){if(_0x340a30){return _0x55c25b['status'](_0x54cc91)['json'](_0x340a30);}};}function respondWithFilteredResult(_0x9aa01d,_0x102736){return function(_0x2ee430){if(_0x2ee430){var _0x5792f6=typeof _0x102736[_0x5512('0x1b')]==='undefined'&&typeof _0x102736[_0x5512('0x1c')]===_0x5512('0x1d');var _0x144e84=_0x2ee430[_0x5512('0x1e')];var _0x159bb7=_0x5792f6?0x0:_0x102736[_0x5512('0x1b')];var _0x38882b=_0x5792f6?_0x2ee430[_0x5512('0x1e')]:_0x102736[_0x5512('0x1b')]+_0x102736[_0x5512('0x1c')];var _0x5d94a9;if(_0x38882b>=_0x144e84){_0x38882b=_0x144e84;_0x5d94a9=0xc8;}else{_0x5d94a9=0xce;}_0x9aa01d[_0x5512('0x19')](_0x5d94a9);return _0x9aa01d[_0x5512('0x1f')](_0x5512('0x20'),_0x159bb7+'-'+_0x38882b+'/'+_0x144e84)[_0x5512('0x21')](_0x2ee430);}return null;};}function patchUpdates(_0xe425a){return function(_0x50bdda){try{jsonpatch['apply'](_0x50bdda,_0xe425a,!![]);}catch(_0x49fd98){return BPromise[_0x5512('0x22')](_0x49fd98);}return _0x50bdda[_0x5512('0x23')]();};}function saveUpdates(_0x1dcff3,_0x4ca9b0){return function(_0x2b19b9){if(_0x2b19b9){return _0x2b19b9[_0x5512('0x24')](_0x1dcff3)[_0x5512('0x25')](function(_0x415a33){return _0x415a33;});}return null;};}function removeEntity(_0x3a56bc,_0x481be3){return function(_0x39303e){if(_0x39303e){return _0x39303e[_0x5512('0x26')]()[_0x5512('0x25')](function(){_0x3a56bc[_0x5512('0x19')](0xcc)[_0x5512('0x1a')]();});}};}function handleEntityNotFound(_0x522269,_0x7a9dd1){return function(_0x12d003){if(!_0x12d003){_0x522269['sendStatus'](0x194);}return _0x12d003;};}function handleError(_0x36ec2f,_0x25b62e){_0x25b62e=_0x25b62e||0x1f4;return function(_0x25aa38){logger[_0x5512('0x27')](_0x25aa38[_0x5512('0x28')]);if(_0x25aa38[_0x5512('0x29')]){delete _0x25aa38[_0x5512('0x29')];}_0x36ec2f[_0x5512('0x19')](_0x25b62e)[_0x5512('0x2a')](_0x25aa38);};}exports[_0x5512('0x2b')]=function(_0x5d7974,_0x542b73){var _0x34e703={},_0x4fe528={},_0x2a52f6={'count':0x0,'rows':[]};var _0x1a9fe7=_[_0x5512('0x2c')](db[_0x5512('0x2d')][_0x5512('0x2e')],function(_0x538337){return{'name':_0x538337[_0x5512('0x2f')],'type':_0x538337[_0x5512('0x30')]['key']};});_0x4fe528['model']=_[_0x5512('0x31')](_['map'](_0x1a9fe7,'name'),[_0x5512('0x32')]);_0x4fe528['query']=_[_0x5512('0x33')](_0x5d7974['query']);_0x4fe528['filters']=_[_0x5512('0x34')](_0x4fe528[_0x5512('0x35')],_0x4fe528[_0x5512('0x36')]);_0x34e703[_0x5512('0x37')]=_[_0x5512('0x34')](_0x4fe528[_0x5512('0x35')],qs['fields'](_0x5d7974[_0x5512('0x36')]['fields']));_0x34e703[_0x5512('0x37')]=_0x34e703['attributes'][_0x5512('0x38')]?_0x34e703[_0x5512('0x37')]:_0x4fe528[_0x5512('0x35')];if(!_0x5d7974[_0x5512('0x36')]['hasOwnProperty'](_0x5512('0x39'))){_0x34e703[_0x5512('0x1c')]=qs[_0x5512('0x1c')](_0x5d7974['query'][_0x5512('0x1c')]);_0x34e703[_0x5512('0x1b')]=qs[_0x5512('0x1b')](_0x5d7974['query'][_0x5512('0x1b')]);}_0x34e703['order']=qs[_0x5512('0x3a')](_0x5d7974[_0x5512('0x36')][_0x5512('0x3a')]);_0x34e703[_0x5512('0x3b')]=qs[_0x5512('0x3c')](_[_0x5512('0x3d')](_0x5d7974[_0x5512('0x36')],_0x4fe528[_0x5512('0x3c')]),_0x1a9fe7);if(_0x5d7974['query'][_0x5512('0x3e')]){_0x34e703[_0x5512('0x3b')]=_[_0x5512('0x3f')](_0x34e703[_0x5512('0x3b')],{'$or':_['map'](_0x1a9fe7,function(_0x51c4fe){if(_0x51c4fe[_0x5512('0x30')]!==_0x5512('0x40')){var _0x3620e3={};_0x3620e3[_0x51c4fe[_0x5512('0x29')]]={'$like':'%'+_0x5d7974[_0x5512('0x36')]['filter']+'%'};return _0x3620e3;}})});}_0x34e703=_[_0x5512('0x3f')]({},_0x34e703,_0x5d7974[_0x5512('0x41')]);var _0x3d3296={'where':_0x34e703[_0x5512('0x3b')]};return db[_0x5512('0x2d')][_0x5512('0x1e')](_0x3d3296)[_0x5512('0x25')](function(_0x1d261d){_0x2a52f6[_0x5512('0x1e')]=_0x1d261d;if(_0x5d7974[_0x5512('0x36')]['includeAll']){_0x34e703[_0x5512('0x42')]=[{'all':!![]}];}return db[_0x5512('0x2d')][_0x5512('0x43')](_0x34e703);})['then'](function(_0x2b668d){_0x2a52f6[_0x5512('0x44')]=_0x2b668d;return _0x2a52f6;})['then'](respondWithFilteredResult(_0x542b73,_0x34e703))[_0x5512('0x45')](handleError(_0x542b73,null));};exports['show']=function(_0x400746,_0x3f4eaf){var _0x468c03={'raw':![],'where':{'id':_0x400746['params']['id']}},_0x439497={};_0x439497[_0x5512('0x35')]=_[_0x5512('0x33')](db['VoiceRecording'][_0x5512('0x2e')]);_0x439497[_0x5512('0x36')]=_['keys'](_0x400746[_0x5512('0x36')]);_0x439497[_0x5512('0x3c')]=_[_0x5512('0x34')](_0x439497[_0x5512('0x35')],_0x439497[_0x5512('0x36')]);_0x468c03[_0x5512('0x37')]=_[_0x5512('0x34')](_0x439497[_0x5512('0x35')],qs[_0x5512('0x46')](_0x400746[_0x5512('0x36')][_0x5512('0x46')]));_0x468c03['attributes']=_0x468c03[_0x5512('0x37')]['length']?_0x468c03[_0x5512('0x37')]:_0x439497['model'];if(_0x400746['query']['includeAll']){_0x468c03[_0x5512('0x42')]=[{'all':!![]}];}_0x468c03=_[_0x5512('0x3f')]({},_0x468c03,_0x400746['options']);return db[_0x5512('0x2d')][_0x5512('0x47')](_0x468c03)[_0x5512('0x25')](handleEntityNotFound(_0x3f4eaf,null))[_0x5512('0x25')](respondWithResult(_0x3f4eaf,null))[_0x5512('0x45')](handleError(_0x3f4eaf,null));};exports[_0x5512('0x48')]=function(_0xb16a46,_0x29c78d){return db[_0x5512('0x2d')][_0x5512('0x48')](_0xb16a46[_0x5512('0x49')],{})[_0x5512('0x25')](respondWithResult(_0x29c78d,0xc9))['catch'](handleError(_0x29c78d,null));};exports['update']=function(_0x1fa7c3,_0x52736e){if(_0x1fa7c3[_0x5512('0x49')]['id']){delete _0x1fa7c3[_0x5512('0x49')]['id'];}return db[_0x5512('0x2d')]['find']({'where':{'id':_0x1fa7c3[_0x5512('0x4a')]['id']}})['then'](handleEntityNotFound(_0x52736e,null))[_0x5512('0x25')](saveUpdates(_0x1fa7c3['body'],null))[_0x5512('0x25')](respondWithResult(_0x52736e,null))[_0x5512('0x45')](handleError(_0x52736e,null));};exports[_0x5512('0x4b')]=function(_0xe7db27,_0x1c3e76){return db['VoiceRecording'][_0x5512('0x4b')]()[_0x5512('0x25')](respondWithResult(_0x1c3e76,null))[_0x5512('0x45')](handleError(_0x1c3e76,null));};exports[_0x5512('0x4c')]=function(_0x32a343,_0x3a1375,_0x25e95f){var _0x111265=require(_0x5512('0x4d'));var _0x479732=![];var _0xc2f739={};if(_0x32a343[_0x5512('0x36')]['type']&&_0x32a343[_0x5512('0x36')][_0x5512('0x30')]===_0x5512('0x4e')){_0xc2f739['uniqueid']=_0x32a343[_0x5512('0x4a')]['id'];}else{_0xc2f739['id']=_0x32a343[_0x5512('0x4a')]['id'];}return db['VoiceRecording']['find']({'where':_0xc2f739,'attributes':['id',_0x5512('0x4f')],'raw':!![]})[_0x5512('0x25')](handleEntityNotFound(_0x3a1375,null))['then'](function(_0x2e1808){if(_0x2e1808){var _0x52d151=_0x2e1808[_0x5512('0x4f')];var _0x529fd8=util[_0x5512('0x32')]('%s.cypher',_0x52d151);if(fs[_0x5512('0x50')](_0x529fd8)){_0x479732=!![];return _0x111265[_0x5512('0x51')](_0x529fd8,_0x52d151,config[_0x5512('0x52')][_0x5512('0x53')])[_0x5512('0x25')](function(){return _0x2e1808;});}return _0x2e1808;}})[_0x5512('0x25')](function(_0x23383c){if(_0x23383c){var _0x190644=_0x23383c['value'];if(!fs[_0x5512('0x50')](_0x190644)){throw new db[(_0x5512('0x54'))][(_0x5512('0x55'))](_0x5512('0x56'));}if(_0x23383c[_0x5512('0x57')]){return _0x3a1375[_0x5512('0x4c')](_0x190644,_0x23383c[_0x5512('0x57')]+path['extname'](_0x190644),function(){if(_0x479732){fs[_0x5512('0x58')](_0x190644);}});}else{return _0x3a1375[_0x5512('0x4c')](_0x190644,function(_0x7e6806){if(_0x479732){fs[_0x5512('0x58')](_0x190644);}});}}})[_0x5512('0x45')](function(_0x3fb04d){if(_0x3fb04d['message']===_0x5512('0x56')){_0x3a1375[_0x5512('0x19')](0x194)[_0x5512('0x2a')](_0x5512('0x59'));}else{return handleError(_0x3a1375,null);}});};exports['downloads']=function(_0xd0db97,_0xabbc3d,_0x2bc734){var _0x1c5800=require('../../components/encryptor');var _0x3b6c6c=![];var _0x5cf0bc={'$and':[db['sequelize'][_0x5512('0x3b')](db['sequelize']['fn'](_0x5512('0x5a'),db[_0x5512('0x5b')][_0x5512('0x5c')](_0x5512('0x4e'))),_0xd0db97[_0x5512('0x36')]['token'])]};if(_0xd0db97[_0x5512('0x36')][_0x5512('0x30')]&&_0xd0db97[_0x5512('0x36')][_0x5512('0x30')]===_0x5512('0x4e')){_0x5cf0bc[_0x5512('0x5d')][_0x5512('0x5e')]({'uniqueid':_0xd0db97['params']['id']});}else{_0x5cf0bc[_0x5512('0x5d')][_0x5512('0x5e')]({'id':_0xd0db97[_0x5512('0x4a')]['id']});}return db['VoiceRecording'][_0x5512('0x47')]({'where':_0x5cf0bc,'attributes':['id',_0x5512('0x4f')],'raw':!![]})[_0x5512('0x25')](handleEntityNotFound(_0xabbc3d,null))[_0x5512('0x25')](function(_0x9240b){if(_0x9240b){var _0x104ee8=util['format'](_0x5512('0x5f'),_0x9240b[_0x5512('0x4f')]);if(fs[_0x5512('0x50')](_0x104ee8)){_0x3b6c6c=!![];return _0x1c5800['decryptFile'](_0x104ee8,_0x9240b[_0x5512('0x4f')],config[_0x5512('0x52')]['recording'])[_0x5512('0x25')](function(){return _0x9240b;});}return _0x9240b;}})[_0x5512('0x25')](function(_0x4261d9){if(_0x4261d9){if(!fs[_0x5512('0x50')](_0x4261d9[_0x5512('0x4f')])){throw new db[(_0x5512('0x54'))][(_0x5512('0x55'))](_0x5512('0x56'));}if(_0x4261d9[_0x5512('0x57')]){return _0xabbc3d[_0x5512('0x4c')](_0x4261d9[_0x5512('0x4f')],_0x4261d9['filename']+path[_0x5512('0x60')](_0x4261d9[_0x5512('0x4f')]),function(){if(_0x3b6c6c){fs[_0x5512('0x58')](_0x4261d9[_0x5512('0x4f')]);}});}else{return _0xabbc3d[_0x5512('0x4c')](_0x4261d9[_0x5512('0x4f')],function(_0x3bfd98){if(_0x3b6c6c){fs[_0x5512('0x58')](_0x4261d9['value']);}});}}})['catch'](handleError(_0xabbc3d,null));};exports[_0x5512('0x26')]=function(_0x4ba150,_0x3556c0){return db[_0x5512('0x2d')][_0x5512('0x47')]({'where':{'id':_0x4ba150['params']['id']}})[_0x5512('0x25')](function(_0xc23741){if(_['isNil'](_0xc23741)){throw new ReferenceError(_0x5512('0x61'));}return _0xc23741;})[_0x5512('0x25')](function(_0x367c46){var _0x3b2f4f=_0x367c46[_0x5512('0x4f')];logger[_0x5512('0x62')]('cancellazione\x20fisica\x20documento\x20%s',_0x3b2f4f);if(!_[_0x5512('0x63')](_0x367c46[_0x5512('0x4f')])&&fs['existsSync'](_0x3b2f4f)){logger[_0x5512('0x62')](_0x5512('0x64')+_0x3b2f4f+_0x5512('0x65'));fs[_0x5512('0x66')](_0x3b2f4f);}_0x3b2f4f=_0x3b2f4f+_0x5512('0x67');if(!_['isNil'](_0x367c46['value'])&&fs[_0x5512('0x50')](_0x3b2f4f)){logger['info']('File:\x20\x22'+_0x3b2f4f+_0x5512('0x65'));fs[_0x5512('0x66')](_0x3b2f4f);}return _0x367c46;})[_0x5512('0x25')](function(_0x2a9e81){if(!_0x2a9e81)throw new InternalError();return _0x2a9e81[_0x5512('0x26')]();})['then'](function(){_0x3556c0['status'](0xcc)[_0x5512('0x1a')]();})['catch'](handleError(_0x3556c0,null));};function getBucketslist(_0x5c908a,_0x2189d2,_0x2ce350){return new Promise(function(_0x571a80,_0x1653a8){var _0x202d46=new AWS['S3']({'accessKeyId':_0x2189d2,'secretAccessKey':_0x5c908a,'region':_0x2ce350});_0x202d46['listBuckets']({},function(_0x4f3cf9,_0x5e009b){if(_0x4f3cf9){return _0x1653a8(_0x4f3cf9);}else{return _0x571a80(_0x5e009b);}});});}function createBucket(_0x6caeae,_0x53a88a,_0x3655b8,_0x36d0ef){return new Promise(function(_0x47a484,_0x4fe68d){var _0x7edc72=new AWS['S3']({'accessKeyId':_0x53a88a,'secretAccessKey':_0x6caeae,'region':_0x3655b8});_0x7edc72[_0x5512('0x68')]({'Bucket':_0x36d0ef},function(_0x6cc209,_0x23284c){if(_0x6cc209){return _0x4fe68d(_0x6cc209);}else{return _0x47a484(_0x23284c);}});});}function uploadFile(_0x392d99,_0x29e63f,_0x592d62,_0x3dc9cd,_0x18bb61,_0x12c2b9){return new Promise(function(_0x1e377c,_0x57a863){var _0x4026c6=new AWS['S3']({'accessKeyId':_0x29e63f,'secretAccessKey':_0x392d99,'region':_0x592d62});_0x4026c6[_0x5512('0x69')]({'Bucket':_0x3dc9cd,'Key':_0x18bb61,'Body':_0x12c2b9},function(_0x61048e,_0x2436ea){if(_0x61048e){return _0x57a863(_0x61048e);}else{return _0x1e377c(_0x2436ea);}});});}function startTranscribe(_0x10646a,_0x1143f4,_0x233df4,_0x1715d0,_0x48a9f1,_0x248693){return new Promise(function(_0x4dd588,_0x4ffb31){var _0x10c449=new AWS[(_0x5512('0x6a'))]({'accessKeyId':_0x1143f4,'secretAccessKey':_0x10646a,'region':_0x233df4});_0x10c449[_0x5512('0x6b')]({'TranscriptionJobName':_0x1715d0,'LanguageCode':_0x48a9f1,'Media':{'MediaFileUri':_0x248693}},function(_0x3369f3,_0xab94a3){if(_0x3369f3){return _0x4ffb31(_0x3369f3);}else{return _0x4dd588(_0xab94a3);}});});}function transcribe(_0x8bb1b4,_0x5886aa,_0x1a4a5b,_0xe26223,_0x3aa0b0,_0x563312,_0x346c5f){return new Promise(function(_0x14eb05,_0x53b773){var _0x15a275={};logger[_0x5512('0x62')](util['format']('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x8bb1b4,_0x3aa0b0));return uploadFile(_0x5886aa,_0x1a4a5b,_0xe26223,_0x3aa0b0,path[_0x5512('0x6c')](_0x563312),fs['readFileSync'](_0x563312))[_0x5512('0x25')](function(_0x48b8b5){logger['info'](util[_0x5512('0x32')](_0x5512('0x6d'),_0x8bb1b4,_0x3aa0b0,_0x48b8b5[_0x5512('0x6e')]));_0x15a275['bucket']=_0x48b8b5[_0x5512('0x6f')];_0x15a275[_0x5512('0x70')]=_0x48b8b5[_0x5512('0x6e')];logger[_0x5512('0x62')](util[_0x5512('0x32')](_0x5512('0x71'),_0x8bb1b4));return startTranscribe(_0x5886aa,_0x1a4a5b,_0xe26223,uuidv4(),_0x346c5f,_0x48b8b5['Location']);})[_0x5512('0x25')](function(_0x16ca3d){logger[_0x5512('0x62')](util[_0x5512('0x32')](_0x5512('0x72'),_0x8bb1b4,_0x16ca3d[_0x5512('0x73')]['TranscriptionJobName']));_0x15a275[_0x5512('0x74')]=_0x16ca3d[_0x5512('0x73')]['TranscriptionJobName'];_0x15a275[_0x5512('0x75')]=_0x16ca3d[_0x5512('0x73')][_0x5512('0x76')];return _0x14eb05(_0x15a275);})[_0x5512('0x45')](function(_0x224dba){return _0x53b773(_0x224dba);});});}exports[_0x5512('0x77')]=function(_0x2e7f0d,_0x3276fd,_0x55b9c7){var _0x5a7af7;var _0x462c63;var _0x518dcb;var _0x159e0c=require(_0x5512('0x4d'));return db[_0x5512('0x2d')]['findOne']({'where':{'id':_0x2e7f0d['params']['id']}})[_0x5512('0x25')](function(_0x16c4a1){if(_0x16c4a1){var _0x30328e=util[_0x5512('0x32')]('%s.cypher',_0x16c4a1[_0x5512('0x4f')]);if(fs[_0x5512('0x50')](_0x30328e)){cypher=!![];return _0x159e0c['decryptFile'](_0x30328e,_0x16c4a1[_0x5512('0x4f')],config[_0x5512('0x52')]['recording'])[_0x5512('0x25')](function(){return _0x16c4a1;});}return _0x16c4a1;}})['then'](function(_0x1b3f3e){if(!_0x1b3f3e){throw new db[(_0x5512('0x54'))]['ValidationError'](_0x5512('0x78'));}_0x462c63=_0x1b3f3e;return db['Setting'][_0x5512('0x79')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x3276fd,null))[_0x5512('0x25')](function(_0x2202e7){if(_0x2202e7){_0x5a7af7=_0x2202e7;if(!_0x5a7af7[_0x5512('0x7a')]||!_0x5a7af7[_0x5512('0x7b')]||!_0x5a7af7[_0x5512('0x7c')]||!_0x5a7af7[_0x5512('0x7d')]||!_0x5a7af7[_0x5512('0x7e')]){throw new db['Sequelize'][(_0x5512('0x55'))](_0x5512('0x7f'));}if(_0x2e7f0d['body'][_0x5512('0x80')]&&(!_0x5a7af7['sentiment']||!_0x5a7af7['sentimentAccountId']||!_0x5a7af7[_0x5512('0x81')]||!_0x5a7af7[_0x5512('0x7d')]||!_0x5a7af7[_0x5512('0x7e')])){throw new db[(_0x5512('0x54'))][(_0x5512('0x55'))](_0x5512('0x82'));}return db[_0x5512('0x83')][_0x5512('0x79')]({'where':{'id':_0x5a7af7[_0x5512('0x7b')]}});}})['then'](function(_0x468971){if(!_0x468971){throw new db['Sequelize'][(_0x5512('0x55'))](_0x5512('0x84'));}if(!_0x468971[_0x5512('0x85')]||!_0x468971[_0x5512('0x86')]){throw new db[(_0x5512('0x54'))]['ValidationError'](_0x5512('0x87'));}_0x518dcb=_0x468971;return getBucketslist(_0x518dcb['data1'],_0x518dcb[_0x5512('0x86')],_0x5a7af7['transcribeRegion']);})[_0x5512('0x25')](function(_0x2624c8){if(_0x2624c8&&_0x2624c8['Buckets']){var _0x3c6570=_[_0x5512('0x47')](_0x2624c8['Buckets'],function(_0xbe0160){return _0xbe0160[_0x5512('0x88')]===_0x5a7af7[_0x5512('0x7e')];});if(!_0x3c6570){logger[_0x5512('0x62')](util[_0x5512('0x32')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x2e7f0d['params']['id'],_0x5a7af7[_0x5512('0x7e')]));return createBucket(_0x518dcb['data1'],_0x518dcb[_0x5512('0x86')],_0x5a7af7[_0x5512('0x7c')],_0x5a7af7[_0x5512('0x7e')]);}logger[_0x5512('0x62')](util['format'](_0x5512('0x89'),_0x2e7f0d[_0x5512('0x4a')]['id'],_0x5a7af7[_0x5512('0x7e')]));return;}})[_0x5512('0x25')](function(_0x1a0685){if(_0x462c63[_0x5512('0x75')]===_0x5512('0x8a')){return transcribe(_0x2e7f0d[_0x5512('0x4a')]['id'],_0x518dcb['data1'],_0x518dcb[_0x5512('0x86')],_0x5a7af7[_0x5512('0x7c')],_0x5a7af7[_0x5512('0x7e')],_0x462c63[_0x5512('0x4f')],_0x5a7af7[_0x5512('0x7d')]);}else{logger['info'](util[_0x5512('0x32')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x2e7f0d[_0x5512('0x4a')]['id']));return{'transcribeStatus':_0x5512('0x8b')};}})[_0x5512('0x25')](function(_0x37a5be){if(_0x37a5be){_0x37a5be[_0x5512('0x8c')]=_0x2e7f0d[_0x5512('0x49')][_0x5512('0x80')];return _0x462c63[_0x5512('0x8d')](_0x37a5be);}})[_0x5512('0x25')](respondWithResult(_0x3276fd,null))[_0x5512('0x45')](handleError(_0x3276fd,null));};function writeFile(_0x4dc919,_0x423ae8){return new Promise(function(_0x37cf3a,_0x1646ae){fs[_0x5512('0x8e')](_0x423ae8,_0x4dc919,function(_0xea2473,_0x48f753){if(_0xea2473){return _0x1646ae(_0xea2473);}else{return _0x37cf3a(_0x48f753);}});});}exports['downloadTranscribe']=function(_0x30c675,_0x4b5284,_0x567acd){return db['VoiceRecording'][_0x5512('0x79')]({'where':{'id':_0x30c675[_0x5512('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4b5284))[_0x5512('0x25')](function(_0x409721){if(_0x409721&&_0x409721[_0x5512('0x8f')]){var _0x1e7ede=_0x409721[_0x5512('0x8f')];var _0x2cb756=config['root']+'/server/files/transcribes/transcribe_'+_0x409721['id']+_0x5512('0x90');if(fs[_0x5512('0x50')](_0x2cb756)){return _0x2cb756;}return writeFile(_0x1e7ede,_0x2cb756)[_0x5512('0x25')](function(){return _0x2cb756;});}else{throw new db[(_0x5512('0x54'))][(_0x5512('0x55'))](_0x5512('0x91'));}})['then'](function(_0x5e1b1f){return _0x4b5284['download'](_0x5e1b1f);})['catch'](handleError(_0x4b5284));};
\ No newline at end of file
+var _0xd330=['[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','fs-extra','crypto','jsforce','desk.js','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','VoiceRecording','key','model','differenceBy','format','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','../../components/encryptor','value','%s.cypher','existsSync','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','download','filename','extname','unlink','downloads','sequelize','MD5','uniqueid','token','$and','push','secrets','Entity\x20not\x20found','info','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','createBucket','upload','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','Bucket','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','TranscriptionJobStatus','findOne','decryptFile','Setting','transcribe','transcribeAccountId','transcribeRegion','language','runSentiment','sentimentAccountId','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd330,0x9d));var _0x0d33=function(_0x25c0fa,_0x2b74c4){_0x25c0fa=_0x25c0fa-0x0;var _0x4aef4a=_0xd330[_0x25c0fa];return _0x4aef4a;};'use strict';var emlformat=require(_0x0d33('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0d33('0x1'));var jsonpatch=require(_0x0d33('0x2'));var rp=require(_0x0d33('0x3'));var moment=require(_0x0d33('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0d33('0x5'));var util=require('util');var path=require(_0x0d33('0x6'));var sox=require('sox');var csv=require(_0x0d33('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0d33('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0d33('0x9'));var jsforce=require(_0x0d33('0xa'));var deskjs=require(_0x0d33('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var AWS=require('aws-sdk');var uuidv4=require(_0x0d33('0xc'));var Redis=require(_0x0d33('0xd'));var authService=require(_0x0d33('0xe'));var qs=require(_0x0d33('0xf'));var as=require(_0x0d33('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0d33('0x11'))(_0x0d33('0x12'));var utils=require(_0x0d33('0x13'));var config=require(_0x0d33('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d498c,_0xd9116b){_0xd9116b=_0xd9116b||0xcc;return function(_0xf6f75e){if(_0xf6f75e){return _0x5d498c[_0x0d33('0x15')](_0xd9116b);}return _0x5d498c[_0x0d33('0x16')](_0xd9116b)[_0x0d33('0x17')]();};}function respondWithResult(_0x5d2a1d,_0x47c799){_0x47c799=_0x47c799||0xc8;return function(_0x384cf6){if(_0x384cf6){return _0x5d2a1d[_0x0d33('0x16')](_0x47c799)[_0x0d33('0x18')](_0x384cf6);}};}function respondWithFilteredResult(_0x1456be,_0x71c0f3){return function(_0xdb56f8){if(_0xdb56f8){var _0x3f15f7=typeof _0x71c0f3[_0x0d33('0x19')]===_0x0d33('0x1a')&&typeof _0x71c0f3[_0x0d33('0x1b')]===_0x0d33('0x1a');var _0x55cd2f=_0xdb56f8[_0x0d33('0x1c')];var _0x11b785=_0x3f15f7?0x0:_0x71c0f3[_0x0d33('0x19')];var _0x147ee5=_0x3f15f7?_0xdb56f8[_0x0d33('0x1c')]:_0x71c0f3['offset']+_0x71c0f3[_0x0d33('0x1b')];var _0xfecf26;if(_0x147ee5>=_0x55cd2f){_0x147ee5=_0x55cd2f;_0xfecf26=0xc8;}else{_0xfecf26=0xce;}_0x1456be[_0x0d33('0x16')](_0xfecf26);return _0x1456be['set'](_0x0d33('0x1d'),_0x11b785+'-'+_0x147ee5+'/'+_0x55cd2f)[_0x0d33('0x18')](_0xdb56f8);}return null;};}function patchUpdates(_0x1d68be){return function(_0x2563b2){try{jsonpatch[_0x0d33('0x1e')](_0x2563b2,_0x1d68be,!![]);}catch(_0xed9f1d){return BPromise[_0x0d33('0x1f')](_0xed9f1d);}return _0x2563b2['save']();};}function saveUpdates(_0x2e145e,_0x5c09c7){return function(_0x5ae8ed){if(_0x5ae8ed){return _0x5ae8ed[_0x0d33('0x20')](_0x2e145e)[_0x0d33('0x21')](function(_0x4f14cc){return _0x4f14cc;});}return null;};}function removeEntity(_0x46b3fb,_0x411ec2){return function(_0x803ea5){if(_0x803ea5){return _0x803ea5[_0x0d33('0x22')]()['then'](function(){_0x46b3fb[_0x0d33('0x16')](0xcc)[_0x0d33('0x17')]();});}};}function handleEntityNotFound(_0x509f38,_0x3fdb20){return function(_0x533117){if(!_0x533117){_0x509f38[_0x0d33('0x15')](0x194);}return _0x533117;};}function handleError(_0x12acee,_0x8b9bc2){_0x8b9bc2=_0x8b9bc2||0x1f4;return function(_0x5867d7){logger[_0x0d33('0x23')](_0x5867d7[_0x0d33('0x24')]);if(_0x5867d7[_0x0d33('0x25')]){delete _0x5867d7[_0x0d33('0x25')];}_0x12acee[_0x0d33('0x16')](_0x8b9bc2)[_0x0d33('0x26')](_0x5867d7);};}exports[_0x0d33('0x27')]=function(_0xd5ec5b,_0x5b1278){var _0x3839ad={},_0xc1b48={},_0x5b170b={'count':0x0,'rows':[]};var _0x57fc72=_[_0x0d33('0x28')](db[_0x0d33('0x29')]['rawAttributes'],function(_0x46b176){return{'name':_0x46b176['fieldName'],'type':_0x46b176['type'][_0x0d33('0x2a')]};});_0xc1b48[_0x0d33('0x2b')]=_[_0x0d33('0x2c')](_[_0x0d33('0x28')](_0x57fc72,_0x0d33('0x25')),[_0x0d33('0x2d')]);_0xc1b48['query']=_[_0x0d33('0x2e')](_0xd5ec5b['query']);_0xc1b48[_0x0d33('0x2f')]=_[_0x0d33('0x30')](_0xc1b48[_0x0d33('0x2b')],_0xc1b48[_0x0d33('0x31')]);_0x3839ad[_0x0d33('0x32')]=_[_0x0d33('0x30')](_0xc1b48[_0x0d33('0x2b')],qs[_0x0d33('0x33')](_0xd5ec5b['query'][_0x0d33('0x33')]));_0x3839ad[_0x0d33('0x32')]=_0x3839ad[_0x0d33('0x32')]['length']?_0x3839ad[_0x0d33('0x32')]:_0xc1b48[_0x0d33('0x2b')];if(!_0xd5ec5b[_0x0d33('0x31')][_0x0d33('0x34')](_0x0d33('0x35'))){_0x3839ad[_0x0d33('0x1b')]=qs[_0x0d33('0x1b')](_0xd5ec5b['query']['limit']);_0x3839ad[_0x0d33('0x19')]=qs[_0x0d33('0x19')](_0xd5ec5b['query'][_0x0d33('0x19')]);}_0x3839ad[_0x0d33('0x36')]=qs[_0x0d33('0x37')](_0xd5ec5b['query']['sort']);_0x3839ad['where']=qs['filters'](_['pick'](_0xd5ec5b['query'],_0xc1b48[_0x0d33('0x2f')]),_0x57fc72);if(_0xd5ec5b['query'][_0x0d33('0x38')]){_0x3839ad[_0x0d33('0x39')]=_[_0x0d33('0x3a')](_0x3839ad[_0x0d33('0x39')],{'$or':_[_0x0d33('0x28')](_0x57fc72,function(_0x9d1757){if(_0x9d1757[_0x0d33('0x3b')]!=='VIRTUAL'){var _0x300e32={};_0x300e32[_0x9d1757[_0x0d33('0x25')]]={'$like':'%'+_0xd5ec5b[_0x0d33('0x31')][_0x0d33('0x38')]+'%'};return _0x300e32;}})});}_0x3839ad=_[_0x0d33('0x3a')]({},_0x3839ad,_0xd5ec5b[_0x0d33('0x3c')]);var _0x2ad5be={'where':_0x3839ad[_0x0d33('0x39')]};return db['VoiceRecording'][_0x0d33('0x1c')](_0x2ad5be)['then'](function(_0x21b747){_0x5b170b[_0x0d33('0x1c')]=_0x21b747;if(_0xd5ec5b['query'][_0x0d33('0x3d')]){_0x3839ad[_0x0d33('0x3e')]=[{'all':!![]}];}return db['VoiceRecording'][_0x0d33('0x3f')](_0x3839ad);})[_0x0d33('0x21')](function(_0x2d31d5){_0x5b170b[_0x0d33('0x40')]=_0x2d31d5;return _0x5b170b;})['then'](respondWithFilteredResult(_0x5b1278,_0x3839ad))[_0x0d33('0x41')](handleError(_0x5b1278,null));};exports[_0x0d33('0x42')]=function(_0x3f4060,_0x27c04f){var _0x3a6bae={'raw':![],'where':{'id':_0x3f4060[_0x0d33('0x43')]['id']}},_0x194cac={};_0x194cac[_0x0d33('0x2b')]=_[_0x0d33('0x2e')](db[_0x0d33('0x29')][_0x0d33('0x44')]);_0x194cac['query']=_[_0x0d33('0x2e')](_0x3f4060['query']);_0x194cac['filters']=_['intersection'](_0x194cac[_0x0d33('0x2b')],_0x194cac[_0x0d33('0x31')]);_0x3a6bae[_0x0d33('0x32')]=_[_0x0d33('0x30')](_0x194cac[_0x0d33('0x2b')],qs[_0x0d33('0x33')](_0x3f4060[_0x0d33('0x31')]['fields']));_0x3a6bae[_0x0d33('0x32')]=_0x3a6bae[_0x0d33('0x32')]['length']?_0x3a6bae['attributes']:_0x194cac[_0x0d33('0x2b')];if(_0x3f4060['query'][_0x0d33('0x3d')]){_0x3a6bae['include']=[{'all':!![]}];}_0x3a6bae=_[_0x0d33('0x3a')]({},_0x3a6bae,_0x3f4060[_0x0d33('0x3c')]);return db['VoiceRecording'][_0x0d33('0x45')](_0x3a6bae)[_0x0d33('0x21')](handleEntityNotFound(_0x27c04f,null))[_0x0d33('0x21')](respondWithResult(_0x27c04f,null))['catch'](handleError(_0x27c04f,null));};exports[_0x0d33('0x46')]=function(_0x53463d,_0x597ac7){return db[_0x0d33('0x29')][_0x0d33('0x46')](_0x53463d[_0x0d33('0x47')],{})[_0x0d33('0x21')](respondWithResult(_0x597ac7,0xc9))[_0x0d33('0x41')](handleError(_0x597ac7,null));};exports['update']=function(_0x433ff1,_0x42d064){if(_0x433ff1[_0x0d33('0x47')]['id']){delete _0x433ff1['body']['id'];}return db[_0x0d33('0x29')][_0x0d33('0x45')]({'where':{'id':_0x433ff1[_0x0d33('0x43')]['id']}})[_0x0d33('0x21')](handleEntityNotFound(_0x42d064,null))[_0x0d33('0x21')](saveUpdates(_0x433ff1[_0x0d33('0x47')],null))[_0x0d33('0x21')](respondWithResult(_0x42d064,null))['catch'](handleError(_0x42d064,null));};exports[_0x0d33('0x48')]=function(_0x2005b0,_0x385ac1){return db[_0x0d33('0x29')]['describe']()['then'](respondWithResult(_0x385ac1,null))[_0x0d33('0x41')](handleError(_0x385ac1,null));};exports['download']=function(_0x1d79cc,_0xe814db,_0x2785fc){var _0x36165a=require(_0x0d33('0x49'));var _0x5108ed=![];var _0x223060={};if(_0x1d79cc[_0x0d33('0x31')]['type']&&_0x1d79cc['query'][_0x0d33('0x3b')]==='uniqueid'){_0x223060['uniqueid']=_0x1d79cc[_0x0d33('0x43')]['id'];}else{_0x223060['id']=_0x1d79cc[_0x0d33('0x43')]['id'];}return db['VoiceRecording'][_0x0d33('0x45')]({'where':_0x223060,'attributes':['id',_0x0d33('0x4a')],'raw':!![]})[_0x0d33('0x21')](handleEntityNotFound(_0xe814db,null))['then'](function(_0x189cea){if(_0x189cea){var _0x397928=_0x189cea[_0x0d33('0x4a')];var _0x4fa199=util[_0x0d33('0x2d')](_0x0d33('0x4b'),_0x397928);if(fs[_0x0d33('0x4c')](_0x4fa199)){_0x5108ed=!![];return _0x36165a['decryptFile'](_0x4fa199,_0x397928,config['secrets'][_0x0d33('0x4d')])[_0x0d33('0x21')](function(){return _0x189cea;});}return _0x189cea;}})['then'](function(_0x4d8626){if(_0x4d8626){var _0x2fc0e1=_0x4d8626[_0x0d33('0x4a')];if(!fs[_0x0d33('0x4c')](_0x2fc0e1)){throw new db[(_0x0d33('0x4e'))][(_0x0d33('0x4f'))](_0x0d33('0x50'));}if(_0x4d8626['filename']){return _0xe814db[_0x0d33('0x51')](_0x2fc0e1,_0x4d8626[_0x0d33('0x52')]+path[_0x0d33('0x53')](_0x2fc0e1),function(){if(_0x5108ed){fs[_0x0d33('0x54')](_0x2fc0e1);}});}else{return _0xe814db[_0x0d33('0x51')](_0x2fc0e1,function(_0x23169c){if(_0x5108ed){fs['unlink'](_0x2fc0e1);}});}}})[_0x0d33('0x41')](function(_0x1cea15){if(_0x1cea15['message']===_0x0d33('0x50')){_0xe814db[_0x0d33('0x16')](0x194)[_0x0d33('0x26')]('Not\x20found');}else{return handleError(_0xe814db,null);}});};exports[_0x0d33('0x55')]=function(_0xba7905,_0x41fbc7,_0x3701c8){var _0x2e881d=require(_0x0d33('0x49'));var _0x56e805=![];var _0x13ecd8={'$and':[db[_0x0d33('0x56')][_0x0d33('0x39')](db[_0x0d33('0x56')]['fn'](_0x0d33('0x57'),db[_0x0d33('0x56')]['col'](_0x0d33('0x58'))),_0xba7905['query'][_0x0d33('0x59')])]};if(_0xba7905[_0x0d33('0x31')][_0x0d33('0x3b')]&&_0xba7905[_0x0d33('0x31')][_0x0d33('0x3b')]===_0x0d33('0x58')){_0x13ecd8[_0x0d33('0x5a')][_0x0d33('0x5b')]({'uniqueid':_0xba7905['params']['id']});}else{_0x13ecd8['$and'][_0x0d33('0x5b')]({'id':_0xba7905[_0x0d33('0x43')]['id']});}return db['VoiceRecording'][_0x0d33('0x45')]({'where':_0x13ecd8,'attributes':['id',_0x0d33('0x4a')],'raw':!![]})[_0x0d33('0x21')](handleEntityNotFound(_0x41fbc7,null))[_0x0d33('0x21')](function(_0x6d321f){if(_0x6d321f){var _0x420d09=util['format'](_0x0d33('0x4b'),_0x6d321f[_0x0d33('0x4a')]);if(fs[_0x0d33('0x4c')](_0x420d09)){_0x56e805=!![];return _0x2e881d['decryptFile'](_0x420d09,_0x6d321f[_0x0d33('0x4a')],config[_0x0d33('0x5c')][_0x0d33('0x4d')])['then'](function(){return _0x6d321f;});}return _0x6d321f;}})[_0x0d33('0x21')](function(_0x1d3b49){if(_0x1d3b49){if(!fs['existsSync'](_0x1d3b49[_0x0d33('0x4a')])){throw new db[(_0x0d33('0x4e'))][(_0x0d33('0x4f'))](_0x0d33('0x50'));}if(_0x1d3b49[_0x0d33('0x52')]){return _0x41fbc7[_0x0d33('0x51')](_0x1d3b49[_0x0d33('0x4a')],_0x1d3b49[_0x0d33('0x52')]+path[_0x0d33('0x53')](_0x1d3b49[_0x0d33('0x4a')]),function(){if(_0x56e805){fs[_0x0d33('0x54')](_0x1d3b49[_0x0d33('0x4a')]);}});}else{return _0x41fbc7[_0x0d33('0x51')](_0x1d3b49[_0x0d33('0x4a')],function(_0x4f5f07){if(_0x56e805){fs['unlink'](_0x1d3b49['value']);}});}}})[_0x0d33('0x41')](handleError(_0x41fbc7,null));};exports[_0x0d33('0x22')]=function(_0x31187d,_0x450bd3){return db['VoiceRecording'][_0x0d33('0x45')]({'where':{'id':_0x31187d['params']['id']}})[_0x0d33('0x21')](function(_0x173cd0){if(_['isNil'](_0x173cd0)){throw new ReferenceError(_0x0d33('0x5d'));}return _0x173cd0;})[_0x0d33('0x21')](function(_0x2a3309){var _0x1d311d=_0x2a3309['value'];logger[_0x0d33('0x5e')]('cancellazione\x20fisica\x20documento\x20%s',_0x1d311d);if(!_[_0x0d33('0x5f')](_0x2a3309[_0x0d33('0x4a')])&&fs[_0x0d33('0x4c')](_0x1d311d)){logger[_0x0d33('0x5e')](_0x0d33('0x60')+_0x1d311d+_0x0d33('0x61'));fs[_0x0d33('0x62')](_0x1d311d);}_0x1d311d=_0x1d311d+_0x0d33('0x63');if(!_[_0x0d33('0x5f')](_0x2a3309['value'])&&fs['existsSync'](_0x1d311d)){logger[_0x0d33('0x5e')]('File:\x20\x22'+_0x1d311d+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x0d33('0x62')](_0x1d311d);}return _0x2a3309;})[_0x0d33('0x21')](function(_0x2aa6e2){if(!_0x2aa6e2)throw new InternalError();return _0x2aa6e2['destroy']();})[_0x0d33('0x21')](function(){_0x450bd3['status'](0xcc)[_0x0d33('0x17')]();})[_0x0d33('0x41')](handleError(_0x450bd3,null));};function getBucketslist(_0x1227b7,_0x5a6127,_0x43baf8){return new Promise(function(_0x195c76,_0x2554f7){var _0x5aec7a=new AWS['S3']({'accessKeyId':_0x5a6127,'secretAccessKey':_0x1227b7,'region':_0x43baf8});_0x5aec7a['listBuckets']({},function(_0x3a8b91,_0x14e802){if(_0x3a8b91){return _0x2554f7(_0x3a8b91);}else{return _0x195c76(_0x14e802);}});});}function createBucket(_0x2514ff,_0x37e877,_0x32aa73,_0x19a477){return new Promise(function(_0x40c907,_0x16ffb8){var _0x41cbae=new AWS['S3']({'accessKeyId':_0x37e877,'secretAccessKey':_0x2514ff,'region':_0x32aa73});_0x41cbae[_0x0d33('0x64')]({'Bucket':_0x19a477},function(_0x532c20,_0x45271f){if(_0x532c20){return _0x16ffb8(_0x532c20);}else{return _0x40c907(_0x45271f);}});});}function uploadFile(_0x564c5a,_0x118ba2,_0x56b433,_0x3e6f37,_0x3d260e,_0x430bdb){return new Promise(function(_0x3061d5,_0x2b9a07){var _0xf8d4e3=new AWS['S3']({'accessKeyId':_0x118ba2,'secretAccessKey':_0x564c5a,'region':_0x56b433});_0xf8d4e3[_0x0d33('0x65')]({'Bucket':_0x3e6f37,'Key':_0x3d260e,'Body':_0x430bdb},function(_0x11a7a1,_0x36c02d){if(_0x11a7a1){return _0x2b9a07(_0x11a7a1);}else{return _0x3061d5(_0x36c02d);}});});}function startTranscribe(_0x1f9c2d,_0x5bdb03,_0xf2dee7,_0x47661f,_0x4f3eaa,_0x10aa7e){return new Promise(function(_0xee5171,_0x49e4f9){var _0x546fd6=new AWS[(_0x0d33('0x66'))]({'accessKeyId':_0x5bdb03,'secretAccessKey':_0x1f9c2d,'region':_0xf2dee7});_0x546fd6['startTranscriptionJob']({'TranscriptionJobName':_0x47661f,'LanguageCode':_0x4f3eaa,'Media':{'MediaFileUri':_0x10aa7e}},function(_0x2cdff1,_0x1039b0){if(_0x2cdff1){return _0x49e4f9(_0x2cdff1);}else{return _0xee5171(_0x1039b0);}});});}function transcribe(_0x5a15a1,_0xc1bc0c,_0x24c366,_0x4d2db0,_0x53763d,_0x532b38,_0x34e396){return new Promise(function(_0xe98796,_0x2f8a15){var _0x2a12a4={};logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')](_0x0d33('0x67'),_0x5a15a1,_0x53763d));return uploadFile(_0xc1bc0c,_0x24c366,_0x4d2db0,_0x53763d,path[_0x0d33('0x68')](_0x532b38),fs['readFileSync'](_0x532b38))[_0x0d33('0x21')](function(_0x1ac955){logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')](_0x0d33('0x69'),_0x5a15a1,_0x53763d,_0x1ac955[_0x0d33('0x6a')]));_0x2a12a4['bucket']=_0x1ac955[_0x0d33('0x6b')];_0x2a12a4['location']=_0x1ac955[_0x0d33('0x6a')];logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x5a15a1));return startTranscribe(_0xc1bc0c,_0x24c366,_0x4d2db0,uuidv4(),_0x34e396,_0x1ac955['Location']);})['then'](function(_0x4be800){logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')](_0x0d33('0x6c'),_0x5a15a1,_0x4be800[_0x0d33('0x6d')]['TranscriptionJobName']));_0x2a12a4['transcribeName']=_0x4be800[_0x0d33('0x6d')][_0x0d33('0x6e')];_0x2a12a4['transcribeStatus']=_0x4be800[_0x0d33('0x6d')][_0x0d33('0x6f')];return _0xe98796(_0x2a12a4);})[_0x0d33('0x41')](function(_0xb091a2){return _0x2f8a15(_0xb091a2);});});}exports['runTranscribe']=function(_0x539d84,_0x1e128b,_0x567baf){var _0x28e1e2;var _0x5eef36;var _0x5b555e;var _0xef42a=require(_0x0d33('0x49'));return db['VoiceRecording'][_0x0d33('0x70')]({'where':{'id':_0x539d84[_0x0d33('0x43')]['id']}})[_0x0d33('0x21')](function(_0x57219b){if(_0x57219b){var _0x5b9aad=util[_0x0d33('0x2d')]('%s.cypher',_0x57219b[_0x0d33('0x4a')]);if(fs[_0x0d33('0x4c')](_0x5b9aad)){cypher=!![];return _0xef42a[_0x0d33('0x71')](_0x5b9aad,_0x57219b[_0x0d33('0x4a')],config['secrets'][_0x0d33('0x4d')])[_0x0d33('0x21')](function(){return _0x57219b;});}return _0x57219b;}})['then'](function(_0xa0a471){if(!_0xa0a471){throw new db['Sequelize'][(_0x0d33('0x4f'))]('Voice\x20Recording\x20not\x20found');}_0x5eef36=_0xa0a471;return db[_0x0d33('0x72')][_0x0d33('0x70')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x1e128b,null))[_0x0d33('0x21')](function(_0x4f4df0){if(_0x4f4df0){_0x28e1e2=_0x4f4df0;if(!_0x28e1e2[_0x0d33('0x73')]||!_0x28e1e2[_0x0d33('0x74')]||!_0x28e1e2[_0x0d33('0x75')]||!_0x28e1e2[_0x0d33('0x76')]||!_0x28e1e2['bucket']){throw new db['Sequelize'][(_0x0d33('0x4f'))]('Transcribe\x20not\x20configured');}if(_0x539d84[_0x0d33('0x47')][_0x0d33('0x77')]&&(!_0x28e1e2['sentiment']||!_0x28e1e2[_0x0d33('0x78')]||!_0x28e1e2['sentimentRegion']||!_0x28e1e2[_0x0d33('0x76')]||!_0x28e1e2[_0x0d33('0x79')])){throw new db[(_0x0d33('0x4e'))]['ValidationError'](_0x0d33('0x7a'));}return db[_0x0d33('0x7b')][_0x0d33('0x70')]({'where':{'id':_0x28e1e2['transcribeAccountId']}});}})[_0x0d33('0x21')](function(_0x5f24ad){if(!_0x5f24ad){throw new db[(_0x0d33('0x4e'))][(_0x0d33('0x4f'))](_0x0d33('0x7c'));}if(!_0x5f24ad[_0x0d33('0x7d')]||!_0x5f24ad[_0x0d33('0x7e')]){throw new db[(_0x0d33('0x4e'))][(_0x0d33('0x4f'))](_0x0d33('0x7f'));}_0x5b555e=_0x5f24ad;return getBucketslist(_0x5b555e[_0x0d33('0x7d')],_0x5b555e[_0x0d33('0x7e')],_0x28e1e2['transcribeRegion']);})['then'](function(_0x152ff5){if(_0x152ff5&&_0x152ff5[_0x0d33('0x80')]){var _0x462cc3=_[_0x0d33('0x45')](_0x152ff5[_0x0d33('0x80')],function(_0x1614c0){return _0x1614c0[_0x0d33('0x81')]===_0x28e1e2[_0x0d33('0x79')];});if(!_0x462cc3){logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')](_0x0d33('0x82'),_0x539d84['params']['id'],_0x28e1e2[_0x0d33('0x79')]));return createBucket(_0x5b555e[_0x0d33('0x7d')],_0x5b555e[_0x0d33('0x7e')],_0x28e1e2[_0x0d33('0x75')],_0x28e1e2['bucket']);}logger[_0x0d33('0x5e')](util[_0x0d33('0x2d')](_0x0d33('0x83'),_0x539d84[_0x0d33('0x43')]['id'],_0x28e1e2[_0x0d33('0x79')]));return;}})[_0x0d33('0x21')](function(_0x1faeca){if(_0x5eef36['transcribeStatus']===_0x0d33('0x84')){return transcribe(_0x539d84[_0x0d33('0x43')]['id'],_0x5b555e[_0x0d33('0x7d')],_0x5b555e['data2'],_0x28e1e2[_0x0d33('0x75')],_0x28e1e2[_0x0d33('0x79')],_0x5eef36['value'],_0x28e1e2[_0x0d33('0x76')]);}else{logger[_0x0d33('0x5e')](util['format'](_0x0d33('0x85'),_0x539d84['params']['id']));return{'transcribeStatus':_0x0d33('0x86')};}})['then'](function(_0x5efd70){if(_0x5efd70){_0x5efd70[_0x0d33('0x87')]=_0x539d84[_0x0d33('0x47')][_0x0d33('0x77')];return _0x5eef36[_0x0d33('0x88')](_0x5efd70);}})[_0x0d33('0x21')](respondWithResult(_0x1e128b,null))[_0x0d33('0x41')](handleError(_0x1e128b,null));};function writeFile(_0x11085d,_0x503a94){return new Promise(function(_0x46a262,_0x46810e){fs[_0x0d33('0x89')](_0x503a94,_0x11085d,function(_0x33f556,_0x2ca5ee){if(_0x33f556){return _0x46810e(_0x33f556);}else{return _0x46a262(_0x2ca5ee);}});});}exports[_0x0d33('0x8a')]=function(_0x4e90e4,_0x4792a0,_0x3eeb2d){return db['VoiceRecording']['findOne']({'where':{'id':_0x4e90e4[_0x0d33('0x43')]['id']}})[_0x0d33('0x21')](handleEntityNotFound(_0x4792a0))[_0x0d33('0x21')](function(_0x525999){if(_0x525999&&_0x525999[_0x0d33('0x8b')]){var _0x3b4dff=_0x525999[_0x0d33('0x8b')];var _0x57dd01=config[_0x0d33('0x8c')]+_0x0d33('0x8d')+_0x525999['id']+_0x0d33('0x8e');if(fs['existsSync'](_0x57dd01)){return _0x57dd01;}return writeFile(_0x3b4dff,_0x57dd01)[_0x0d33('0x21')](function(){return _0x57dd01;});}else{throw new db[(_0x0d33('0x4e'))][(_0x0d33('0x4f'))](_0x0d33('0x8f'));}})[_0x0d33('0x21')](function(_0xc8f152){return _0x4792a0[_0x0d33('0x51')](_0xc8f152);})[_0x0d33('0x41')](handleError(_0x4792a0));};
\ No newline at end of file
index 151eb11..0cf9383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66d4=['bluebird','request-promise','path','./voiceRecording.attributes','define','VoiceRecording','uniqueid','util','api','moment'];(function(_0x1b2531,_0x447a58){var _0x12c2b8=function(_0x348ddc){while(--_0x348ddc){_0x1b2531['push'](_0x1b2531['shift']());}};_0x12c2b8(++_0x447a58);}(_0x66d4,0x10b));var _0x466d=function(_0x2283dc,_0x2fcfc5){_0x2283dc=_0x2283dc-0x0;var _0x16db90=_0x66d4[_0x2283dc];return _0x16db90;};'use strict';var _=require('lodash');var util=require(_0x466d('0x0'));var logger=require('../../config/logger')(_0x466d('0x1'));var moment=require(_0x466d('0x2'));var BPromise=require(_0x466d('0x3'));var rp=require(_0x466d('0x4'));var fs=require('fs');var path=require(_0x466d('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x466d('0x6'));module['exports']=function(_0x10fd8d,_0x201317){return _0x10fd8d[_0x466d('0x7')](_0x466d('0x8'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x466d('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe82e=['api','moment','bluebird','path','../../config/environment','./voiceRecording.attributes','exports','define','voice_recordings','uniqueid','lodash','util','../../config/logger'];(function(_0x5f2739,_0x7705b9){var _0x3cb3d4=function(_0x1cd5b0){while(--_0x1cd5b0){_0x5f2739['push'](_0x5f2739['shift']());}};_0x3cb3d4(++_0x7705b9);}(_0xe82e,0x101));var _0xee82=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xe82e[_0x1f9f37];return _0x21c080;};'use strict';var _=require(_0xee82('0x0'));var util=require(_0xee82('0x1'));var logger=require(_0xee82('0x2'))(_0xee82('0x3'));var moment=require(_0xee82('0x4'));var BPromise=require(_0xee82('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xee82('0x6'));var rimraf=require('rimraf');var config=require(_0xee82('0x7'));var attributes=require(_0xee82('0x8'));module[_0xee82('0x9')]=function(_0x4f13cf,_0x4d471c){return _0x4f13cf[_0xee82('0xa')]('VoiceRecording',attributes,{'tableName':_0xee82('0xb'),'paranoid':![],'indexes':[{'name':_0xee82('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 04b192c..26459ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['body','options','raw','where','attributes','limit','UpdateVoiceRecording','debug','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher','encryptFile','secrets','recording','unlink','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','VoiceRecording','update'];(function(_0x5cc8,_0x1faa02){var _0x450661=function(_0x237b05){while(--_0x237b05){_0x5cc8['push'](_0x5cc8['shift']());}};_0x450661(++_0x1faa02);}(_0x2a07,0x74));var _0x72a0=function(_0x2effa6,_0x1440d7){_0x2effa6=_0x2effa6-0x0;var _0x226598=_0x2a07[_0x2effa6];return _0x226598;};'use strict';var _=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var moment=require(_0x72a0('0x2'));var BPromise=require(_0x72a0('0x3'));var rs=require(_0x72a0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x72a0('0x5'))['db'];var utils=require(_0x72a0('0x6'));var logger=require(_0x72a0('0x7'))(_0x72a0('0x8'));var config=require(_0x72a0('0x9'));var jayson=require(_0x72a0('0xa'));var client=jayson[_0x72a0('0xb')][_0x72a0('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x193e3b,_0x287b06,_0x21c819){return new BPromise(function(_0x2c04eb,_0x22270e){return client[_0x72a0('0xd')](_0x193e3b,_0x21c819)[_0x72a0('0xe')](function(_0x2bc45b){logger['info'](_0x72a0('0xf'),_0x287b06,_0x72a0('0x10'));logger['debug'](_0x72a0('0x11'),_0x287b06,_0x72a0('0x10'),JSON[_0x72a0('0x12')](_0x2bc45b));if(_0x2bc45b[_0x72a0('0x13')]){if(_0x2bc45b[_0x72a0('0x13')]['code']===0x1f4){logger[_0x72a0('0x13')](_0x72a0('0xf'),_0x287b06,_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);return _0x22270e(_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);}logger[_0x72a0('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x287b06,_0x2bc45b['error'][_0x72a0('0x14')]);return _0x2c04eb(_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);}else{logger[_0x72a0('0x15')](_0x72a0('0xf'),_0x287b06,_0x72a0('0x10'));_0x2c04eb(_0x2bc45b['result'][_0x72a0('0x14')]);}})[_0x72a0('0x16')](function(_0x16ac70){logger[_0x72a0('0x13')](_0x72a0('0xf'),_0x287b06,_0x16ac70);_0x22270e(_0x16ac70);});});}exports['UpdateVoiceRecording']=function(_0x100d8f){var _0x42e9ec=this;return new Promise(function(_0x131b73,_0x5b63c8){return db[_0x72a0('0x17')][_0x72a0('0x18')](_0x100d8f[_0x72a0('0x19')],{'raw':_0x100d8f[_0x72a0('0x1a')]?_0x100d8f['options'][_0x72a0('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x100d8f['options']?_0x100d8f[_0x72a0('0x1a')][_0x72a0('0x1c')]||null:null,'attributes':_0x100d8f[_0x72a0('0x1a')]?_0x100d8f['options'][_0x72a0('0x1d')]||null:null,'limit':_0x100d8f[_0x72a0('0x1a')]?_0x100d8f[_0x72a0('0x1a')][_0x72a0('0x1e')]||null:null})['then'](function(_0x38a7ba){logger[_0x72a0('0x15')](_0x72a0('0x1f'),_0x100d8f);logger[_0x72a0('0x20')](_0x72a0('0x1f'),_0x100d8f,JSON[_0x72a0('0x12')](_0x38a7ba));_0x131b73(_0x38a7ba);})['catch'](function(_0x4dd1a6){logger[_0x72a0('0x13')](_0x72a0('0x1f'),_0x4dd1a6[_0x72a0('0x14')],_0x100d8f);_0x5b63c8(_0x42e9ec[_0x72a0('0x13')](0x1f4,_0x4dd1a6[_0x72a0('0x14')]));});});};exports[_0x72a0('0x21')]=function(_0xa5bda0){var _0x15922a=this;return new Promise(function(_0xee99e2,_0x12dcc9){var _0x4f9718=require(_0x72a0('0x22'));var _0x553641;return db[_0x72a0('0x23')][_0x72a0('0x24')]({'attributes':['id',_0x72a0('0x25')],'where':{'id':0x1},'raw':!![]})[_0x72a0('0xe')](function(_0x432179){_0x553641=_0x432179;return db[_0x72a0('0x17')][_0x72a0('0x26')](_0xa5bda0[_0x72a0('0x19')]);})['then'](function(_0x41efc1){if(_0x553641[_0x72a0('0x25')]&&fs[_0x72a0('0x27')](_0x41efc1[_0x72a0('0x28')])){var _0x13c04=util[_0x72a0('0x29')](_0x72a0('0x2a'),_0x41efc1['value']);return _0x4f9718[_0x72a0('0x2b')](_0x41efc1[_0x72a0('0x28')],_0x13c04,config[_0x72a0('0x2c')][_0x72a0('0x2d')])[_0x72a0('0xe')](function(){fs[_0x72a0('0x2e')](_0x41efc1[_0x72a0('0x28')]);logger[_0x72a0('0x15')]('CreateVoiceRecording\x20file\x20encrypted');return _0x41efc1;});}return _0x41efc1;})[_0x72a0('0xe')](function(_0x1fb485){logger[_0x72a0('0x15')]('CreateVoiceRecording',_0xa5bda0);logger[_0x72a0('0x20')]('CreateVoiceRecording',_0xa5bda0,JSON[_0x72a0('0x12')](_0x1fb485));_0xee99e2(_0x1fb485);})[_0x72a0('0x16')](function(_0x1d02c4){logger[_0x72a0('0x13')](_0x72a0('0x21'),_0x1d02c4[_0x72a0('0x14')],_0xa5bda0);_0x12dcc9(_0x15922a[_0x72a0('0x13')](0x1f4,_0x1d02c4[_0x72a0('0x14')]));});});};
\ No newline at end of file
+var _0x47c5=['secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceRecording','update','body','options','raw','where','attributes','limit','UpdateVoiceRecording','findOne','callRecordingEncryption','existsSync','value','format','%s.cypher'];(function(_0xed6261,_0x1f0ee2){var _0x4de7a5=function(_0x2783d6){while(--_0x2783d6){_0xed6261['push'](_0xed6261['shift']());}};_0x4de7a5(++_0x1f0ee2);}(_0x47c5,0x165));var _0x547c=function(_0x510794,_0x120e85){_0x510794=_0x510794-0x0;var _0x3bd818=_0x47c5[_0x510794];return _0x3bd818;};'use strict';var _=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var moment=require(_0x547c('0x2'));var BPromise=require(_0x547c('0x3'));var rs=require(_0x547c('0x4'));var fs=require('fs');var Redis=require(_0x547c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x547c('0x6'));var logger=require(_0x547c('0x7'))('rpc');var config=require(_0x547c('0x8'));var jayson=require(_0x547c('0x9'));var client=jayson['client'][_0x547c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x439f25,_0x381f2e,_0x10a334){return new BPromise(function(_0x12fb7d,_0x4ef079){return client[_0x547c('0xb')](_0x439f25,_0x10a334)[_0x547c('0xc')](function(_0x10dec9){logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));logger[_0x547c('0x10')](_0x547c('0x11'),_0x381f2e,_0x547c('0xf'),JSON[_0x547c('0x12')](_0x10dec9));if(_0x10dec9[_0x547c('0x13')]){if(_0x10dec9['error'][_0x547c('0x14')]===0x1f4){logger[_0x547c('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x4ef079(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}logger[_0x547c('0x13')](_0x547c('0xe'),_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x12fb7d(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}else{logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));_0x12fb7d(_0x10dec9[_0x547c('0x16')][_0x547c('0x15')]);}})[_0x547c('0x17')](function(_0x39498d){logger[_0x547c('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x381f2e,_0x39498d);_0x4ef079(_0x39498d);});});}exports['UpdateVoiceRecording']=function(_0x23fa9e){var _0x199e4f=this;return new Promise(function(_0xeb059e,_0x4a8901){return db[_0x547c('0x18')][_0x547c('0x19')](_0x23fa9e[_0x547c('0x1a')],{'raw':_0x23fa9e['options']?_0x23fa9e[_0x547c('0x1b')][_0x547c('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23fa9e['options']?_0x23fa9e['options'][_0x547c('0x1d')]||null:null,'attributes':_0x23fa9e[_0x547c('0x1b')]?_0x23fa9e['options'][_0x547c('0x1e')]||null:null,'limit':_0x23fa9e[_0x547c('0x1b')]?_0x23fa9e['options'][_0x547c('0x1f')]||null:null})[_0x547c('0xc')](function(_0x436e67){logger['info'](_0x547c('0x20'),_0x23fa9e);logger[_0x547c('0x10')](_0x547c('0x20'),_0x23fa9e,JSON[_0x547c('0x12')](_0x436e67));_0xeb059e(_0x436e67);})[_0x547c('0x17')](function(_0x2663bc){logger[_0x547c('0x13')](_0x547c('0x20'),_0x2663bc['message'],_0x23fa9e);_0x4a8901(_0x199e4f[_0x547c('0x13')](0x1f4,_0x2663bc['message']));});});};exports['CreateVoiceRecording']=function(_0x4855fd){var _0x478f04=this;return new Promise(function(_0x2c725d,_0x4c5256){var _0x93985c=require('../../components/encryptor');var _0x3ea493;return db['Setting'][_0x547c('0x21')]({'attributes':['id',_0x547c('0x22')],'where':{'id':0x1},'raw':!![]})[_0x547c('0xc')](function(_0x30a96c){_0x3ea493=_0x30a96c;return db[_0x547c('0x18')]['create'](_0x4855fd['body']);})[_0x547c('0xc')](function(_0x54de6f){if(_0x3ea493[_0x547c('0x22')]&&fs[_0x547c('0x23')](_0x54de6f[_0x547c('0x24')])){var _0x1695be=util[_0x547c('0x25')](_0x547c('0x26'),_0x54de6f[_0x547c('0x24')]);return _0x93985c['encryptFile'](_0x54de6f['value'],_0x1695be,config[_0x547c('0x27')][_0x547c('0x28')])[_0x547c('0xc')](function(){fs[_0x547c('0x29')](_0x54de6f[_0x547c('0x24')]);logger[_0x547c('0xd')](_0x547c('0x2a'));return _0x54de6f;});}return _0x54de6f;})[_0x547c('0xc')](function(_0x378bac){logger[_0x547c('0xd')](_0x547c('0x2b'),_0x4855fd);logger[_0x547c('0x10')](_0x547c('0x2b'),_0x4855fd,JSON[_0x547c('0x12')](_0x378bac));_0x2c725d(_0x378bac);})['catch'](function(_0x3afc28){logger['error']('CreateVoiceRecording',_0x3afc28['message'],_0x4855fd);_0x4c5256(_0x478f04[_0x547c('0x13')](0x1f4,_0x3afc28[_0x547c('0x15')]));});});};
\ No newline at end of file
index 7e12aca..ea0a549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaae=['destroy','exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','/:id','show','create','update','delete'];(function(_0x3f3f06,_0x581e5b){var _0x140feb=function(_0x4cc383){while(--_0x4cc383){_0x3f3f06['push'](_0x3f3f06['shift']());}};_0x140feb(++_0x581e5b);}(_0xaaae,0x9b));var _0xeaaa=function(_0x234bdf,_0x4ec25f){_0x234bdf=_0x234bdf-0x0;var _0x3d742d=_0xaaae[_0x234bdf];return _0x3d742d;};'use strict';var multer=require('multer');var util=require(_0xeaaa('0x0'));var path=require(_0xeaaa('0x1'));var timeout=require(_0xeaaa('0x2'));var express=require(_0xeaaa('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeaaa('0x4'));var interaction=require(_0xeaaa('0x5'));var config=require(_0xeaaa('0x6'));var controller=require('./voiceTransferReport.controller');router[_0xeaaa('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xeaaa('0x8'),auth[_0xeaaa('0x9')](),controller['describe']);router[_0xeaaa('0x7')](_0xeaaa('0xa'),auth[_0xeaaa('0x9')](),controller[_0xeaaa('0xb')]);router['post']('/',auth[_0xeaaa('0x9')](),controller[_0xeaaa('0xc')]);router['put']('/:id',auth[_0xeaaa('0x9')](),controller[_0xeaaa('0xd')]);router[_0xeaaa('0xe')](_0xeaaa('0xa'),auth[_0xeaaa('0x9')](),controller[_0xeaaa('0xf')]);module[_0xeaaa('0x10')]=router;
\ No newline at end of file
+var _0xe12d=['create','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/:id','show'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xe12d,0xcb));var _0xde12=function(_0x2b5f49,_0xd9dbfb){_0x2b5f49=_0x2b5f49-0x0;var _0x1f9bdc=_0xe12d[_0x2b5f49];return _0x1f9bdc;};'use strict';var multer=require(_0xde12('0x0'));var util=require(_0xde12('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xde12('0x2'));var router=express[_0xde12('0x3')]();var fs_extra=require(_0xde12('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xde12('0x5'));var config=require(_0xde12('0x6'));var controller=require(_0xde12('0x7'));router[_0xde12('0x8')]('/',auth[_0xde12('0x9')](),controller[_0xde12('0xa')]);router['get']('/describe',auth[_0xde12('0x9')](),controller['describe']);router[_0xde12('0x8')](_0xde12('0xb'),auth[_0xde12('0x9')](),controller[_0xde12('0xc')]);router['post']('/',auth[_0xde12('0x9')](),controller[_0xde12('0xd')]);router['put']('/:id',auth[_0xde12('0x9')](),controller[_0xde12('0xe')]);router[_0xde12('0xf')](_0xde12('0xb'),auth[_0xde12('0x9')](),controller[_0xde12('0x10')]);module[_0xde12('0x11')]=router;
\ No newline at end of file
index 0531ddf..6f9178b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7561=['attended','STRING','ENUM','Yes','sequelize','moment','blind'];(function(_0x347a92,_0x5b2219){var _0x324a60=function(_0x2d1e59){while(--_0x2d1e59){_0x347a92['push'](_0x347a92['shift']());}};_0x324a60(++_0x5b2219);}(_0x7561,0x1cb));var _0x1756=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0x7561[_0x3ce3c];return _0x55a2c9;};'use strict';var Sequelize=require(_0x1756('0x0'));var moment=require(_0x1756('0x1'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x1756('0x2'),_0x1756('0x3'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0x1756('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x1756('0x4')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x1756('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0x1756('0x4')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x1756('0x4')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x1756('0x4')]},'transfereechannel':{'type':Sequelize[_0x1756('0x4')]},'transfereecalleridnum':{'type':Sequelize[_0x1756('0x4')]},'transfereecalleridname':{'type':Sequelize[_0x1756('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x1756('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0x1756('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x1756('0x4')]},'transfereecontext':{'type':Sequelize[_0x1756('0x4')]},'transfereeexten':{'type':Sequelize[_0x1756('0x4')]},'transfereelinkedid':{'type':Sequelize[_0x1756('0x4')]},'isexternal':{'type':Sequelize[_0x1756('0x5')](_0x1756('0x6'),'No')},'context':{'type':Sequelize[_0x1756('0x4')]},'extension':{'type':Sequelize[_0x1756('0x4')]}};
\ No newline at end of file
+var _0x49b2=['STRING','Yes','sequelize','moment','exports','ENUM','blind','attended'];(function(_0x37ce49,_0x3eb0bd){var _0x5a6f52=function(_0x3a644a){while(--_0x3a644a){_0x37ce49['push'](_0x37ce49['shift']());}};_0x5a6f52(++_0x3eb0bd);}(_0x49b2,0x142));var _0x249b=function(_0x1a92fe,_0x5a9af1){_0x1a92fe=_0x1a92fe-0x0;var _0x7977d9=_0x49b2[_0x1a92fe];return _0x7977d9;};'use strict';var Sequelize=require(_0x249b('0x0'));var moment=require(_0x249b('0x1'));module[_0x249b('0x2')]={'type':{'type':Sequelize[_0x249b('0x3')](_0x249b('0x4'),_0x249b('0x5'))},'result':{'type':Sequelize[_0x249b('0x6')]},'transfererchannel':{'type':Sequelize[_0x249b('0x6')]},'transferercalleridnum':{'type':Sequelize[_0x249b('0x6')]},'transferercalleridname':{'type':Sequelize[_0x249b('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0x249b('0x6')]},'transfererconnectedlinename':{'type':Sequelize[_0x249b('0x6')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize[_0x249b('0x6')]},'transfererlinkedid':{'type':Sequelize[_0x249b('0x6')]},'transfereechannel':{'type':Sequelize[_0x249b('0x6')]},'transfereecalleridnum':{'type':Sequelize[_0x249b('0x6')]},'transfereecalleridname':{'type':Sequelize[_0x249b('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x249b('0x6')]},'transfereeconnectedlinename':{'type':Sequelize[_0x249b('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0x249b('0x6')]},'transfereecontext':{'type':Sequelize[_0x249b('0x6')]},'transfereeexten':{'type':Sequelize[_0x249b('0x6')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize['ENUM'](_0x249b('0x7'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x249b('0x6')]}};
\ No newline at end of file
index 93932f9..62c1fbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40dc=['intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','count','rows','catch','params','rawAttributes','includeAll','include','create','body','find','describe','eml-format','rimraf','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','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','set','json','reject','then','destroy','sendStatus','error','stack','name','index','map','VoiceTransferReport','fieldName','type','model','query','keys'];(function(_0xfa514e,_0x2665aa){var _0x39d8b0=function(_0x46328e){while(--_0x46328e){_0xfa514e['push'](_0xfa514e['shift']());}};_0x39d8b0(++_0x2665aa);}(_0x40dc,0xed));var _0xc40d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x40dc[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc40d('0x0'));var rimraf=require(_0xc40d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc40d('0x2'));var rp=require(_0xc40d('0x3'));var moment=require(_0xc40d('0x4'));var BPromise=require(_0xc40d('0x5'));var Mustache=require(_0xc40d('0x6'));var util=require('util');var path=require('path');var sox=require(_0xc40d('0x7'));var csv=require(_0xc40d('0x8'));var ejs=require(_0xc40d('0x9'));var fs=require('fs');var fs_extra=require(_0xc40d('0xa'));var _=require(_0xc40d('0xb'));var squel=require(_0xc40d('0xc'));var crypto=require(_0xc40d('0xd'));var jsforce=require(_0xc40d('0xe'));var deskjs=require(_0xc40d('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc40d('0x10'));var Redis=require(_0xc40d('0x11'));var authService=require(_0xc40d('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc40d('0x13'));var logger=require(_0xc40d('0x14'))(_0xc40d('0x15'));var utils=require('../../config/utils');var config=require(_0xc40d('0x16'));var licenseUtil=require(_0xc40d('0x17'));var db=require(_0xc40d('0x18'))['db'];function respondWithStatusCode(_0x34f77c,_0x48bfa9){_0x48bfa9=_0x48bfa9||0xcc;return function(_0x1bd46a){if(_0x1bd46a){return _0x34f77c['sendStatus'](_0x48bfa9);}return _0x34f77c[_0xc40d('0x19')](_0x48bfa9)[_0xc40d('0x1a')]();};}function respondWithResult(_0x370d63,_0x3fbbba){_0x3fbbba=_0x3fbbba||0xc8;return function(_0x69fd2c){if(_0x69fd2c){return _0x370d63['status'](_0x3fbbba)['json'](_0x69fd2c);}};}function respondWithFilteredResult(_0x4f6a8b,_0x2e76e7){return function(_0x5b3503){if(_0x5b3503){var _0x251354=typeof _0x2e76e7[_0xc40d('0x1b')]===_0xc40d('0x1c')&&typeof _0x2e76e7[_0xc40d('0x1d')]==='undefined';var _0x43aae0=_0x5b3503['count'];var _0x4cf946=_0x251354?0x0:_0x2e76e7[_0xc40d('0x1b')];var _0x51f4ee=_0x251354?_0x5b3503['count']:_0x2e76e7[_0xc40d('0x1b')]+_0x2e76e7['limit'];var _0x459e32;if(_0x51f4ee>=_0x43aae0){_0x51f4ee=_0x43aae0;_0x459e32=0xc8;}else{_0x459e32=0xce;}_0x4f6a8b[_0xc40d('0x19')](_0x459e32);return _0x4f6a8b[_0xc40d('0x1e')]('Content-Range',_0x4cf946+'-'+_0x51f4ee+'/'+_0x43aae0)[_0xc40d('0x1f')](_0x5b3503);}return null;};}function patchUpdates(_0x275782){return function(_0x357f22){try{jsonpatch['apply'](_0x357f22,_0x275782,!![]);}catch(_0x22831c){return BPromise[_0xc40d('0x20')](_0x22831c);}return _0x357f22['save']();};}function saveUpdates(_0x3ab6cd,_0xec0e97){return function(_0x1a5578){if(_0x1a5578){return _0x1a5578['update'](_0x3ab6cd)[_0xc40d('0x21')](function(_0xfc9c42){return _0xfc9c42;});}return null;};}function removeEntity(_0xe008e8,_0x261da1){return function(_0x4acbf4){if(_0x4acbf4){return _0x4acbf4[_0xc40d('0x22')]()[_0xc40d('0x21')](function(){_0xe008e8[_0xc40d('0x19')](0xcc)[_0xc40d('0x1a')]();});}};}function handleEntityNotFound(_0x503e54,_0x235ee4){return function(_0xa7d276){if(!_0xa7d276){_0x503e54[_0xc40d('0x23')](0x194);}return _0xa7d276;};}function handleError(_0x335581,_0x1dd184){_0x1dd184=_0x1dd184||0x1f4;return function(_0x1a9b95){logger[_0xc40d('0x24')](_0x1a9b95[_0xc40d('0x25')]);if(_0x1a9b95[_0xc40d('0x26')]){delete _0x1a9b95[_0xc40d('0x26')];}_0x335581['status'](_0x1dd184)['send'](_0x1a9b95);};}exports[_0xc40d('0x27')]=function(_0x1ecf02,_0x207dd1){var _0x5dbdb5={},_0xb9271b={},_0x4ac404={'count':0x0,'rows':[]};var _0x37438e=_[_0xc40d('0x28')](db[_0xc40d('0x29')]['rawAttributes'],function(_0x3c5669){return{'name':_0x3c5669[_0xc40d('0x2a')],'type':_0x3c5669[_0xc40d('0x2b')]['key']};});_0xb9271b[_0xc40d('0x2c')]=_['map'](_0x37438e,'name');_0xb9271b[_0xc40d('0x2d')]=_[_0xc40d('0x2e')](_0x1ecf02['query']);_0xb9271b['filters']=_[_0xc40d('0x2f')](_0xb9271b[_0xc40d('0x2c')],_0xb9271b['query']);_0x5dbdb5['attributes']=_[_0xc40d('0x2f')](_0xb9271b[_0xc40d('0x2c')],qs['fields'](_0x1ecf02[_0xc40d('0x2d')][_0xc40d('0x30')]));_0x5dbdb5[_0xc40d('0x31')]=_0x5dbdb5[_0xc40d('0x31')][_0xc40d('0x32')]?_0x5dbdb5['attributes']:_0xb9271b[_0xc40d('0x2c')];if(!_0x1ecf02[_0xc40d('0x2d')][_0xc40d('0x33')](_0xc40d('0x34'))){_0x5dbdb5['limit']=qs['limit'](_0x1ecf02['query'][_0xc40d('0x1d')]);_0x5dbdb5[_0xc40d('0x1b')]=qs[_0xc40d('0x1b')](_0x1ecf02[_0xc40d('0x2d')]['offset']);}_0x5dbdb5['order']=qs[_0xc40d('0x35')](_0x1ecf02[_0xc40d('0x2d')][_0xc40d('0x35')]);_0x5dbdb5[_0xc40d('0x36')]=qs[_0xc40d('0x37')](_['pick'](_0x1ecf02[_0xc40d('0x2d')],_0xb9271b[_0xc40d('0x37')]),_0x37438e);if(_0x1ecf02[_0xc40d('0x2d')][_0xc40d('0x38')]){_0x5dbdb5[_0xc40d('0x36')]=_[_0xc40d('0x39')](_0x5dbdb5[_0xc40d('0x36')],{'$or':_[_0xc40d('0x28')](_0x37438e,function(_0x263972){if(_0x263972['type']!==_0xc40d('0x3a')){var _0x34f81f={};_0x34f81f[_0x263972[_0xc40d('0x26')]]={'$like':'%'+_0x1ecf02[_0xc40d('0x2d')][_0xc40d('0x38')]+'%'};return _0x34f81f;}})});}_0x5dbdb5=_[_0xc40d('0x39')]({},_0x5dbdb5,_0x1ecf02[_0xc40d('0x3b')]);var _0x5ca5a1={'where':_0x5dbdb5[_0xc40d('0x36')]};return db[_0xc40d('0x29')][_0xc40d('0x3c')](_0x5ca5a1)[_0xc40d('0x21')](function(_0x3e5e87){_0x4ac404['count']=_0x3e5e87;if(_0x1ecf02['query']['includeAll']){_0x5dbdb5['include']=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x5dbdb5);})[_0xc40d('0x21')](function(_0x175a69){_0x4ac404[_0xc40d('0x3d')]=_0x175a69;return _0x4ac404;})['then'](respondWithFilteredResult(_0x207dd1,_0x5dbdb5))[_0xc40d('0x3e')](handleError(_0x207dd1,null));};exports['show']=function(_0x275517,_0x5c9b14){var _0x4d825f={'raw':!![],'where':{'id':_0x275517[_0xc40d('0x3f')]['id']}},_0x4d485d={};_0x4d485d['model']=_[_0xc40d('0x2e')](db[_0xc40d('0x29')][_0xc40d('0x40')]);_0x4d485d[_0xc40d('0x2d')]=_[_0xc40d('0x2e')](_0x275517[_0xc40d('0x2d')]);_0x4d485d['filters']=_['intersection'](_0x4d485d[_0xc40d('0x2c')],_0x4d485d['query']);_0x4d825f['attributes']=_['intersection'](_0x4d485d[_0xc40d('0x2c')],qs[_0xc40d('0x30')](_0x275517['query'][_0xc40d('0x30')]));_0x4d825f[_0xc40d('0x31')]=_0x4d825f[_0xc40d('0x31')][_0xc40d('0x32')]?_0x4d825f[_0xc40d('0x31')]:_0x4d485d['model'];if(_0x275517['query'][_0xc40d('0x41')]){_0x4d825f[_0xc40d('0x42')]=[{'all':!![]}];}_0x4d825f=_[_0xc40d('0x39')]({},_0x4d825f,_0x275517[_0xc40d('0x3b')]);return db[_0xc40d('0x29')]['find'](_0x4d825f)[_0xc40d('0x21')](handleEntityNotFound(_0x5c9b14,null))['then'](respondWithResult(_0x5c9b14,null))[_0xc40d('0x3e')](handleError(_0x5c9b14,null));};exports[_0xc40d('0x43')]=function(_0x1cfb72,_0x595f6a){return db['VoiceTransferReport']['create'](_0x1cfb72[_0xc40d('0x44')],{})[_0xc40d('0x21')](respondWithResult(_0x595f6a,0xc9))[_0xc40d('0x3e')](handleError(_0x595f6a,null));};exports['update']=function(_0x154026,_0xfcccb1){if(_0x154026[_0xc40d('0x44')]['id']){delete _0x154026[_0xc40d('0x44')]['id'];}return db[_0xc40d('0x29')][_0xc40d('0x45')]({'where':{'id':_0x154026['params']['id']}})[_0xc40d('0x21')](handleEntityNotFound(_0xfcccb1,null))[_0xc40d('0x21')](saveUpdates(_0x154026[_0xc40d('0x44')],null))[_0xc40d('0x21')](respondWithResult(_0xfcccb1,null))[_0xc40d('0x3e')](handleError(_0xfcccb1,null));};exports[_0xc40d('0x22')]=function(_0x2d2164,_0x418c6c){return db[_0xc40d('0x29')][_0xc40d('0x45')]({'where':{'id':_0x2d2164['params']['id']}})[_0xc40d('0x21')](handleEntityNotFound(_0x418c6c,null))[_0xc40d('0x21')](removeEntity(_0x418c6c,null))['catch'](handleError(_0x418c6c,null));};exports[_0xc40d('0x46')]=function(_0x410cfc,_0x1b801c){return db[_0xc40d('0x29')][_0xc40d('0x46')]()[_0xc40d('0x21')](respondWithResult(_0x1b801c,null))[_0xc40d('0x3e')](handleError(_0x1b801c,null));};
\ No newline at end of file
+var _0x6d67=['util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','sendStatus','error','stack','name','send','index','VoiceTransferReport','rawAttributes','key','map','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','length','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6d67,0x135));var _0x76d6=function(_0x57441a,_0x5b3353){_0x57441a=_0x57441a-0x0;var _0x37a09a=_0x6d67[_0x57441a];return _0x37a09a;};'use strict';var emlformat=require(_0x76d6('0x0'));var rimraf=require(_0x76d6('0x1'));var zipdir=require(_0x76d6('0x2'));var jsonpatch=require(_0x76d6('0x3'));var rp=require('request-promise');var moment=require(_0x76d6('0x4'));var BPromise=require(_0x76d6('0x5'));var Mustache=require(_0x76d6('0x6'));var util=require(_0x76d6('0x7'));var path=require(_0x76d6('0x8'));var sox=require(_0x76d6('0x9'));var csv=require(_0x76d6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x76d6('0xb'));var _=require(_0x76d6('0xc'));var squel=require(_0x76d6('0xd'));var crypto=require(_0x76d6('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x76d6('0xf'));var toCsv=require(_0x76d6('0xa'));var querystring=require(_0x76d6('0x10'));var Papa=require(_0x76d6('0x11'));var Redis=require(_0x76d6('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x76d6('0x13'));var as=require(_0x76d6('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x76d6('0x15'))('api');var utils=require(_0x76d6('0x16'));var config=require(_0x76d6('0x17'));var licenseUtil=require(_0x76d6('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x99ad6c,_0x484c63){_0x484c63=_0x484c63||0xcc;return function(_0x58334b){if(_0x58334b){return _0x99ad6c['sendStatus'](_0x484c63);}return _0x99ad6c[_0x76d6('0x19')](_0x484c63)[_0x76d6('0x1a')]();};}function respondWithResult(_0x4fc353,_0x5de5c0){_0x5de5c0=_0x5de5c0||0xc8;return function(_0x4acf69){if(_0x4acf69){return _0x4fc353[_0x76d6('0x19')](_0x5de5c0)[_0x76d6('0x1b')](_0x4acf69);}};}function respondWithFilteredResult(_0x52d913,_0x3d65f7){return function(_0x2be39c){if(_0x2be39c){var _0x4d70f2=typeof _0x3d65f7[_0x76d6('0x1c')]===_0x76d6('0x1d')&&typeof _0x3d65f7['limit']===_0x76d6('0x1d');var _0x3d4e06=_0x2be39c[_0x76d6('0x1e')];var _0x379cc3=_0x4d70f2?0x0:_0x3d65f7['offset'];var _0x5402b0=_0x4d70f2?_0x2be39c[_0x76d6('0x1e')]:_0x3d65f7['offset']+_0x3d65f7[_0x76d6('0x1f')];var _0xb409d9;if(_0x5402b0>=_0x3d4e06){_0x5402b0=_0x3d4e06;_0xb409d9=0xc8;}else{_0xb409d9=0xce;}_0x52d913[_0x76d6('0x19')](_0xb409d9);return _0x52d913[_0x76d6('0x20')](_0x76d6('0x21'),_0x379cc3+'-'+_0x5402b0+'/'+_0x3d4e06)['json'](_0x2be39c);}return null;};}function patchUpdates(_0x29e2c6){return function(_0x2a225b){try{jsonpatch[_0x76d6('0x22')](_0x2a225b,_0x29e2c6,!![]);}catch(_0x51b59e){return BPromise[_0x76d6('0x23')](_0x51b59e);}return _0x2a225b['save']();};}function saveUpdates(_0x576206,_0x1ccb8b){return function(_0x246023){if(_0x246023){return _0x246023[_0x76d6('0x24')](_0x576206)['then'](function(_0x2c6140){return _0x2c6140;});}return null;};}function removeEntity(_0x2beb53,_0x112618){return function(_0x39cf4d){if(_0x39cf4d){return _0x39cf4d[_0x76d6('0x25')]()['then'](function(){_0x2beb53[_0x76d6('0x19')](0xcc)[_0x76d6('0x1a')]();});}};}function handleEntityNotFound(_0x35ba45,_0x54ca75){return function(_0x167302){if(!_0x167302){_0x35ba45[_0x76d6('0x26')](0x194);}return _0x167302;};}function handleError(_0x446759,_0x7da0b9){_0x7da0b9=_0x7da0b9||0x1f4;return function(_0x1bc334){logger[_0x76d6('0x27')](_0x1bc334[_0x76d6('0x28')]);if(_0x1bc334[_0x76d6('0x29')]){delete _0x1bc334[_0x76d6('0x29')];}_0x446759[_0x76d6('0x19')](_0x7da0b9)[_0x76d6('0x2a')](_0x1bc334);};}exports[_0x76d6('0x2b')]=function(_0x508f1d,_0x81e4c0){var _0x2b3f7f={},_0x184e0f={},_0x2b3769={'count':0x0,'rows':[]};var _0x119598=_['map'](db[_0x76d6('0x2c')][_0x76d6('0x2d')],function(_0x3fc5f2){return{'name':_0x3fc5f2['fieldName'],'type':_0x3fc5f2['type'][_0x76d6('0x2e')]};});_0x184e0f['model']=_[_0x76d6('0x2f')](_0x119598,'name');_0x184e0f[_0x76d6('0x30')]=_[_0x76d6('0x31')](_0x508f1d[_0x76d6('0x30')]);_0x184e0f[_0x76d6('0x32')]=_['intersection'](_0x184e0f[_0x76d6('0x33')],_0x184e0f[_0x76d6('0x30')]);_0x2b3f7f[_0x76d6('0x34')]=_[_0x76d6('0x35')](_0x184e0f[_0x76d6('0x33')],qs[_0x76d6('0x36')](_0x508f1d[_0x76d6('0x30')][_0x76d6('0x36')]));_0x2b3f7f[_0x76d6('0x34')]=_0x2b3f7f[_0x76d6('0x34')]['length']?_0x2b3f7f[_0x76d6('0x34')]:_0x184e0f[_0x76d6('0x33')];if(!_0x508f1d[_0x76d6('0x30')][_0x76d6('0x37')](_0x76d6('0x38'))){_0x2b3f7f['limit']=qs['limit'](_0x508f1d['query']['limit']);_0x2b3f7f['offset']=qs['offset'](_0x508f1d[_0x76d6('0x30')][_0x76d6('0x1c')]);}_0x2b3f7f[_0x76d6('0x39')]=qs[_0x76d6('0x3a')](_0x508f1d[_0x76d6('0x30')]['sort']);_0x2b3f7f[_0x76d6('0x3b')]=qs[_0x76d6('0x32')](_[_0x76d6('0x3c')](_0x508f1d[_0x76d6('0x30')],_0x184e0f[_0x76d6('0x32')]),_0x119598);if(_0x508f1d['query'][_0x76d6('0x3d')]){_0x2b3f7f[_0x76d6('0x3b')]=_[_0x76d6('0x3e')](_0x2b3f7f[_0x76d6('0x3b')],{'$or':_[_0x76d6('0x2f')](_0x119598,function(_0x402a70){if(_0x402a70[_0x76d6('0x3f')]!==_0x76d6('0x40')){var _0x1163b4={};_0x1163b4[_0x402a70[_0x76d6('0x29')]]={'$like':'%'+_0x508f1d[_0x76d6('0x30')][_0x76d6('0x3d')]+'%'};return _0x1163b4;}})});}_0x2b3f7f=_[_0x76d6('0x3e')]({},_0x2b3f7f,_0x508f1d[_0x76d6('0x41')]);var _0x27eb2a={'where':_0x2b3f7f[_0x76d6('0x3b')]};return db[_0x76d6('0x2c')][_0x76d6('0x1e')](_0x27eb2a)[_0x76d6('0x42')](function(_0x354f06){_0x2b3769[_0x76d6('0x1e')]=_0x354f06;if(_0x508f1d[_0x76d6('0x30')][_0x76d6('0x43')]){_0x2b3f7f[_0x76d6('0x44')]=[{'all':!![]}];}return db['VoiceTransferReport'][_0x76d6('0x45')](_0x2b3f7f);})[_0x76d6('0x42')](function(_0x599e81){_0x2b3769[_0x76d6('0x46')]=_0x599e81;return _0x2b3769;})[_0x76d6('0x42')](respondWithFilteredResult(_0x81e4c0,_0x2b3f7f))[_0x76d6('0x47')](handleError(_0x81e4c0,null));};exports[_0x76d6('0x48')]=function(_0xa2cbf4,_0x552754){var _0x29ea9f={'raw':!![],'where':{'id':_0xa2cbf4[_0x76d6('0x49')]['id']}},_0xfedb1d={};_0xfedb1d['model']=_[_0x76d6('0x31')](db[_0x76d6('0x2c')][_0x76d6('0x2d')]);_0xfedb1d[_0x76d6('0x30')]=_[_0x76d6('0x31')](_0xa2cbf4['query']);_0xfedb1d[_0x76d6('0x32')]=_[_0x76d6('0x35')](_0xfedb1d[_0x76d6('0x33')],_0xfedb1d['query']);_0x29ea9f[_0x76d6('0x34')]=_[_0x76d6('0x35')](_0xfedb1d[_0x76d6('0x33')],qs[_0x76d6('0x36')](_0xa2cbf4[_0x76d6('0x30')][_0x76d6('0x36')]));_0x29ea9f['attributes']=_0x29ea9f[_0x76d6('0x34')][_0x76d6('0x4a')]?_0x29ea9f['attributes']:_0xfedb1d[_0x76d6('0x33')];if(_0xa2cbf4['query'][_0x76d6('0x43')]){_0x29ea9f[_0x76d6('0x44')]=[{'all':!![]}];}_0x29ea9f=_[_0x76d6('0x3e')]({},_0x29ea9f,_0xa2cbf4[_0x76d6('0x41')]);return db['VoiceTransferReport']['find'](_0x29ea9f)[_0x76d6('0x42')](handleEntityNotFound(_0x552754,null))[_0x76d6('0x42')](respondWithResult(_0x552754,null))[_0x76d6('0x47')](handleError(_0x552754,null));};exports[_0x76d6('0x4b')]=function(_0x4b572f,_0x4c9c1f){return db['VoiceTransferReport']['create'](_0x4b572f[_0x76d6('0x4c')],{})[_0x76d6('0x42')](respondWithResult(_0x4c9c1f,0xc9))[_0x76d6('0x47')](handleError(_0x4c9c1f,null));};exports[_0x76d6('0x24')]=function(_0x551af8,_0x3f7478){if(_0x551af8[_0x76d6('0x4c')]['id']){delete _0x551af8['body']['id'];}return db[_0x76d6('0x2c')]['find']({'where':{'id':_0x551af8['params']['id']}})[_0x76d6('0x42')](handleEntityNotFound(_0x3f7478,null))[_0x76d6('0x42')](saveUpdates(_0x551af8['body'],null))[_0x76d6('0x42')](respondWithResult(_0x3f7478,null))[_0x76d6('0x47')](handleError(_0x3f7478,null));};exports[_0x76d6('0x25')]=function(_0x45224e,_0x59da88){return db[_0x76d6('0x2c')][_0x76d6('0x4d')]({'where':{'id':_0x45224e['params']['id']}})['then'](handleEntityNotFound(_0x59da88,null))[_0x76d6('0x42')](removeEntity(_0x59da88,null))[_0x76d6('0x47')](handleError(_0x59da88,null));};exports[_0x76d6('0x4e')]=function(_0x3bb02d,_0x34e24e){return db[_0x76d6('0x2c')][_0x76d6('0x4e')]()[_0x76d6('0x42')](respondWithResult(_0x34e24e,null))[_0x76d6('0x47')](handleError(_0x34e24e,null));};
\ No newline at end of file
index 4e4dc4f..00c1ea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d97=['rimraf','../../config/environment','./voiceTransferReport.attributes','define','VoiceTransferReport','report_call_transfer','lodash','api','moment','bluebird','request-promise','path'];(function(_0x2ce7e4,_0x185a63){var _0x52abf2=function(_0x2c418c){while(--_0x2c418c){_0x2ce7e4['push'](_0x2ce7e4['shift']());}};_0x52abf2(++_0x185a63);}(_0x6d97,0xd2));var _0x76d9=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0x6d97[_0x363ef8];return _0x148822;};'use strict';var _=require(_0x76d9('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x76d9('0x1'));var moment=require(_0x76d9('0x2'));var BPromise=require(_0x76d9('0x3'));var rp=require(_0x76d9('0x4'));var fs=require('fs');var path=require(_0x76d9('0x5'));var rimraf=require(_0x76d9('0x6'));var config=require(_0x76d9('0x7'));var attributes=require(_0x76d9('0x8'));module['exports']=function(_0x14269a,_0x2b384b){return _0x14269a[_0x76d9('0x9')](_0x76d9('0xa'),attributes,{'tableName':_0x76d9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6abb=['lodash','util','api','request-promise','path','./voiceTransferReport.attributes','define','VoiceTransferReport'];(function(_0x2fe457,_0x1c58d6){var _0x40dac7=function(_0x29839b){while(--_0x29839b){_0x2fe457['push'](_0x2fe457['shift']());}};_0x40dac7(++_0x1c58d6);}(_0x6abb,0xe8));var _0xb6ab=function(_0x22c405,_0x397999){_0x22c405=_0x22c405-0x0;var _0x13c8bd=_0x6abb[_0x22c405];return _0x13c8bd;};'use strict';var _=require(_0xb6ab('0x0'));var util=require(_0xb6ab('0x1'));var logger=require('../../config/logger')(_0xb6ab('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb6ab('0x3'));var fs=require('fs');var path=require(_0xb6ab('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb6ab('0x5'));module['exports']=function(_0x2b7f75,_0x2e6d9c){return _0x2b7f75[_0xb6ab('0x6')](_0xb6ab('0x7'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6c8d840..57ef9c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58ee=['code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x58ee,0x1ea));var _0xe58e=function(_0x5de7fb,_0x110458){_0x5de7fb=_0x5de7fb-0x0;var _0x57d3f4=_0x58ee[_0x5de7fb];return _0x57d3f4;};'use strict';var _=require('lodash');var util=require(_0xe58e('0x0'));var moment=require(_0xe58e('0x1'));var BPromise=require('bluebird');var rs=require(_0xe58e('0x2'));var fs=require('fs');var Redis=require(_0xe58e('0x3'));var db=require(_0xe58e('0x4'))['db'];var utils=require(_0xe58e('0x5'));var logger=require(_0xe58e('0x6'))('rpc');var config=require(_0xe58e('0x7'));var jayson=require(_0xe58e('0x8'));var client=jayson[_0xe58e('0x9')][_0xe58e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x259424,_0x1e4740,_0xa5ee86){return new BPromise(function(_0x16be8d,_0x41e08b){return client[_0xe58e('0xb')](_0x259424,_0xa5ee86)[_0xe58e('0xc')](function(_0x2e43ad){logger[_0xe58e('0xd')](_0xe58e('0xe'),_0x1e4740,_0xe58e('0xf'));logger[_0xe58e('0x10')](_0xe58e('0x11'),_0x1e4740,_0xe58e('0xf'),JSON[_0xe58e('0x12')](_0x2e43ad));if(_0x2e43ad['error']){if(_0x2e43ad[_0xe58e('0x13')][_0xe58e('0x14')]===0x1f4){logger[_0xe58e('0x13')](_0xe58e('0xe'),_0x1e4740,_0x2e43ad['error'][_0xe58e('0x15')]);return _0x41e08b(_0x2e43ad['error'][_0xe58e('0x15')]);}logger[_0xe58e('0x13')](_0xe58e('0xe'),_0x1e4740,_0x2e43ad[_0xe58e('0x13')][_0xe58e('0x15')]);return _0x16be8d(_0x2e43ad['error'][_0xe58e('0x15')]);}else{logger[_0xe58e('0xd')](_0xe58e('0xe'),_0x1e4740,_0xe58e('0xf'));_0x16be8d(_0x2e43ad[_0xe58e('0x16')][_0xe58e('0x15')]);}})[_0xe58e('0x17')](function(_0x58a4b5){logger[_0xe58e('0x13')]('VoiceTransferReport,\x20%s,\x20%s',_0x1e4740,_0x58a4b5);_0x41e08b(_0x58a4b5);});});}exports[_0xe58e('0x18')]=function(_0xdb7ae1){var _0x2a3b6b=this;return new Promise(function(_0x2b0fbb,_0x3b143e){return db[_0xe58e('0x19')][_0xe58e('0x1a')](_0xdb7ae1[_0xe58e('0x1b')],{'raw':_0xdb7ae1[_0xe58e('0x1c')]?_0xdb7ae1[_0xe58e('0x1c')][_0xe58e('0x1d')]===undefined?!![]:![]:!![]})[_0xe58e('0xc')](function(_0x4a5365){logger['info']('CreateVoiceTransferReport',_0xdb7ae1);logger[_0xe58e('0x10')](_0xe58e('0x18'),_0xdb7ae1,JSON[_0xe58e('0x12')](_0x4a5365));_0x2b0fbb(_0x4a5365);})[_0xe58e('0x17')](function(_0xa79d2c){logger['error'](_0xe58e('0x18'),_0xa79d2c['message'],_0xdb7ae1);_0x3b143e(_0x2a3b6b[_0xe58e('0x13')](0x1f4,_0xa79d2c[_0xe58e('0x15')]));});});};
\ No newline at end of file
+var _0x5d51=['../../config/logger','../../config/environment','jayson/promise','client','http','then','info','VoiceTransferReport,\x20%s,\x20%s','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','options','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x479618,_0x18c294){var _0x141016=function(_0x4d9cb3){while(--_0x4d9cb3){_0x479618['push'](_0x479618['shift']());}};_0x141016(++_0x18c294);}(_0x5d51,0x172));var _0x15d5=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x5d51[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x15d5('0x0'));var util=require(_0x15d5('0x1'));var moment=require(_0x15d5('0x2'));var BPromise=require(_0x15d5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x15d5('0x4'));var db=require(_0x15d5('0x5'))['db'];var utils=require(_0x15d5('0x6'));var logger=require(_0x15d5('0x7'))('rpc');var config=require(_0x15d5('0x8'));var jayson=require(_0x15d5('0x9'));var client=jayson[_0x15d5('0xa')][_0x15d5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9e7b53,_0x3ba8af,_0x66164d){return new BPromise(function(_0x91918e,_0x97a593){return client['request'](_0x9e7b53,_0x66164d)[_0x15d5('0xc')](function(_0x31bb7b){logger[_0x15d5('0xd')](_0x15d5('0xe'),_0x3ba8af,'request\x20sent');logger[_0x15d5('0xf')](_0x15d5('0x10'),_0x3ba8af,'request\x20sent',JSON[_0x15d5('0x11')](_0x31bb7b));if(_0x31bb7b[_0x15d5('0x12')]){if(_0x31bb7b[_0x15d5('0x12')][_0x15d5('0x13')]===0x1f4){logger[_0x15d5('0x12')](_0x15d5('0xe'),_0x3ba8af,_0x31bb7b[_0x15d5('0x12')][_0x15d5('0x14')]);return _0x97a593(_0x31bb7b[_0x15d5('0x12')]['message']);}logger['error'](_0x15d5('0xe'),_0x3ba8af,_0x31bb7b['error'][_0x15d5('0x14')]);return _0x91918e(_0x31bb7b[_0x15d5('0x12')][_0x15d5('0x14')]);}else{logger[_0x15d5('0xd')](_0x15d5('0xe'),_0x3ba8af,_0x15d5('0x15'));_0x91918e(_0x31bb7b[_0x15d5('0x16')][_0x15d5('0x14')]);}})[_0x15d5('0x17')](function(_0x4bb70b){logger[_0x15d5('0x12')](_0x15d5('0xe'),_0x3ba8af,_0x4bb70b);_0x97a593(_0x4bb70b);});});}exports[_0x15d5('0x18')]=function(_0x4c06fe){var _0x13506b=this;return new Promise(function(_0x34b330,_0xed8867){return db[_0x15d5('0x19')][_0x15d5('0x1a')](_0x4c06fe['body'],{'raw':_0x4c06fe[_0x15d5('0x1b')]?_0x4c06fe[_0x15d5('0x1b')][_0x15d5('0x1c')]===undefined?!![]:![]:!![]})[_0x15d5('0xc')](function(_0x571d1b){logger['info'](_0x15d5('0x18'),_0x4c06fe);logger[_0x15d5('0xf')]('CreateVoiceTransferReport',_0x4c06fe,JSON[_0x15d5('0x11')](_0x571d1b));_0x34b330(_0x571d1b);})[_0x15d5('0x17')](function(_0x4ac495){logger[_0x15d5('0x12')]('CreateVoiceTransferReport',_0x4ac495[_0x15d5('0x14')],_0x4c06fe);_0xed8867(_0x13506b[_0x15d5('0x12')](0x1f4,_0x4ac495[_0x15d5('0x14')]));});});};
\ No newline at end of file
index 4f87f12..b142762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55fa=['hangup','/answer','answer','/hold','hold','/unhold','unhold','/calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','/originate','isAuthenticated','canUpdate','originate','post','/hangup'];(function(_0x236f46,_0x38b639){var _0x1b67c8=function(_0xb37552){while(--_0xb37552){_0x236f46['push'](_0x236f46['shift']());}};_0x1b67c8(++_0x38b639);}(_0x55fa,0x185));var _0xa55f=function(_0xd25b90,_0x9600e){_0xd25b90=_0xd25b90-0x0;var _0xb076c3=_0x55fa[_0xd25b90];return _0xb076c3;};'use strict';var express=require(_0xa55f('0x0'));var router=express[_0xa55f('0x1')]();var auth=require(_0xa55f('0x2'));var controller=require(_0xa55f('0x3'));router['post'](_0xa55f('0x4'),auth[_0xa55f('0x5')](),auth[_0xa55f('0x6')](),controller[_0xa55f('0x7')]);router[_0xa55f('0x8')](_0xa55f('0x9'),auth[_0xa55f('0x5')](),auth[_0xa55f('0x6')](),controller[_0xa55f('0xa')]);router['post'](_0xa55f('0xb'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xa55f('0xc')]);router[_0xa55f('0x8')](_0xa55f('0xd'),auth[_0xa55f('0x5')](),auth['canUpdate'](),controller[_0xa55f('0xe')]);router[_0xa55f('0x8')](_0xa55f('0xf'),auth['isAuthenticated'](),auth[_0xa55f('0x6')](),controller[_0xa55f('0x10')]);router[_0xa55f('0x8')](_0xa55f('0x11'),auth['isAuthenticated'](),auth[_0xa55f('0x6')](),controller['calls']);router[_0xa55f('0x8')](_0xa55f('0x12'),auth[_0xa55f('0x5')](),auth[_0xa55f('0x6')](),controller[_0xa55f('0x13')]);module[_0xa55f('0x14')]=router;
\ No newline at end of file
+var _0x9990=['express','./webbar.controller','post','isAuthenticated','originate','/hangup','canUpdate','hangup','/answer','answer','/hold','/unhold','unhold','/calls','transfer'];(function(_0x414bc5,_0x1b8d46){var _0x511faa=function(_0x1c28c2){while(--_0x1c28c2){_0x414bc5['push'](_0x414bc5['shift']());}};_0x511faa(++_0x1b8d46);}(_0x9990,0x11d));var _0x0999=function(_0x361704,_0x3af61c){_0x361704=_0x361704-0x0;var _0x258953=_0x9990[_0x361704];return _0x258953;};'use strict';var express=require(_0x0999('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x0999('0x1'));router[_0x0999('0x2')]('/originate',auth[_0x0999('0x3')](),auth['canUpdate'](),controller[_0x0999('0x4')]);router[_0x0999('0x2')](_0x0999('0x5'),auth['isAuthenticated'](),auth[_0x0999('0x6')](),controller[_0x0999('0x7')]);router[_0x0999('0x2')](_0x0999('0x8'),auth[_0x0999('0x3')](),auth[_0x0999('0x6')](),controller[_0x0999('0x9')]);router[_0x0999('0x2')](_0x0999('0xa'),auth[_0x0999('0x3')](),auth[_0x0999('0x6')](),controller['hold']);router[_0x0999('0x2')](_0x0999('0xb'),auth[_0x0999('0x3')](),auth[_0x0999('0x6')](),controller[_0x0999('0xc')]);router[_0x0999('0x2')](_0x0999('0xd'),auth[_0x0999('0x3')](),auth[_0x0999('0x6')](),controller['calls']);router[_0x0999('0x2')]('/transfer',auth['isAuthenticated'](),auth[_0x0999('0x6')](),controller[_0x0999('0xe')]);module['exports']=router;
\ No newline at end of file
index 2c19738..f887d48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7c8=['log','handleError:','error','name','status','send','NotFound','request','then','code','message','result','User','findOne','agent','VoiceChannels','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','body','json','userId','callNumber','callerId','format','user:%s','originate\x20executed!','hangup','entityFound:','answer','answer\x20fired:','answer\x20executed!','hold','webbar:hold','hold\x20executed!','catch','unhold','unhold\x20fired:','calls\x20fired:','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','webbar:transfer','transfer\x20executed!','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','callNumber\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify'];(function(_0x2994cb,_0x9bb51e){var _0x300862=function(_0x59d02d){while(--_0x59d02d){_0x2994cb['push'](_0x2994cb['shift']());}};_0x300862(++_0x9bb51e);}(_0xb7c8,0x119));var _0x8b7c=function(_0x3f8544,_0x38b6fb){_0x3f8544=_0x3f8544-0x0;var _0xa28ea=_0xb7c8[_0x3f8544];return _0xa28ea;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x8b7c('0x0'));var db=require(_0x8b7c('0x1'))['db'];var config=require(_0x8b7c('0x2'));var util=require(_0x8b7c('0x3'));var BPromise=require(_0x8b7c('0x4'));var jayson=require(_0x8b7c('0x5'));var amiClient=jayson[_0x8b7c('0x6')]['http']({'port':0x232a});var logger=require(_0x8b7c('0x7'))(_0x8b7c('0x8'));var Redis=require(_0x8b7c('0x9'));config[_0x8b7c('0xa')]=_[_0x8b7c('0xb')](config[_0x8b7c('0xa')],{'host':_0x8b7c('0xc'),'port':0x18eb});var io=require(_0x8b7c('0xd'))(new Redis(config[_0x8b7c('0xa')]));var Schema=require(_0x8b7c('0xe'));var originateValidation=new Schema({'userId':{'type':_0x8b7c('0xf'),'required':[!![],_0x8b7c('0x10')]},'callNumber':{'type':'string','required':[!![],_0x8b7c('0x11')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x8b7c('0x12')}});var hangupValidation=new Schema({'userId':{'type':_0x8b7c('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x8b7c('0x12'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x8b7c('0xf'),'required':[!![],_0x8b7c('0x10')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8b7c('0x10')]},'sessionId':{'type':_0x8b7c('0x12'),'required':[!![],_0x8b7c('0x13')]},'transferNumber':{'type':_0x8b7c('0x12'),'required':[!![],_0x8b7c('0x14')]}});var holdValidation=new Schema({'userId':{'type':_0x8b7c('0xf'),'required':[!![],_0x8b7c('0x10')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x8b7c('0xf'),'required':[!![],_0x8b7c('0x10')]},'sessionId':{'type':_0x8b7c('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8b7c('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0x8b7c('0xf'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x3b8d62,_0xcc0fcc,_0x4262b5){logger[_0x8b7c('0x15')](_0x3b8d62,_0xcc0fcc,JSON[_0x8b7c('0x16')](_0x4262b5));io['to'](_0x3b8d62)['emit'](_0xcc0fcc,_0x4262b5);}function handleError(_0x402448){return function(_0x3ef583){console[_0x8b7c('0x17')](_0x8b7c('0x18'),_0x3ef583,_0x3ef583 instanceof RangeError);logger[_0x8b7c('0x19')](_0x3ef583['stack']);if(_0x3ef583 instanceof RangeError){if(_0x3ef583[_0x8b7c('0x1a')]){delete _0x3ef583[_0x8b7c('0x1a')];}_0x402448[_0x8b7c('0x1b')](0x194)[_0x8b7c('0x1c')](_0x3ef583);}else{if(_0x3ef583[_0x8b7c('0x1a')]){delete _0x3ef583[_0x8b7c('0x1a')];}_0x402448[_0x8b7c('0x1b')](0x1f4)[_0x8b7c('0x1c')](_0x3ef583);}};}function checkError(){return function(_0x108781){if(!_0x108781){throw new RangeError(_0x8b7c('0x1d'));}return _0x108781;};}function respondWithRpcPromise(_0x32bac0,_0x1fe931){return new BPromise(function(_0x53451d,_0x4222ab){var _0x3186cd=amiClient;return _0x3186cd[_0x8b7c('0x1e')](_0x32bac0,_0x1fe931)[_0x8b7c('0x1f')](function(_0x9365e3){if(_0x9365e3[_0x8b7c('0x19')]){if(_0x9365e3[_0x8b7c('0x19')][_0x8b7c('0x20')]===0x1f4){return _0x4222ab(_0x9365e3[_0x8b7c('0x19')][_0x8b7c('0x21')]);}return _0x53451d(_0x9365e3['error']['message']);}else{_0x53451d(_0x9365e3[_0x8b7c('0x22')]);}})['catch'](function(_0x28e8ba){_0x4222ab(_0x28e8ba);});});}function getAgent(_0x341ff6){return db[_0x8b7c('0x23')][_0x8b7c('0x24')]({'where':{'id':_0x341ff6,'role':_0x8b7c('0x25')}})[_0x8b7c('0x1f')](checkError());}function getAgentCheckSession(_0x58dc4a,_0x39d677){return new BPromise(function(_0x31390d,_0x19c015){var _0x94a31e=respondWithRpcPromise(_0x8b7c('0x26'));var _0x3c4b0c=getAgent(_0x58dc4a);Promise[_0x8b7c('0x27')]([_0x94a31e,_0x3c4b0c])[_0x8b7c('0x1f')](function(_0x329998){var _0x148d1f=_0x329998[0x0];var _0x57f97d=_0x329998[0x1];var _0x4bfe5d=_[_0x8b7c('0x28')](_0x148d1f[_0x8b7c('0x29')],function(_0x101649){return _0x101649[_0x8b7c('0x2a')]==_0x57f97d['id']&&_0x101649[_0x8b7c('0x2b')]==_0x39d677;});if(_0x4bfe5d[_0x8b7c('0x2c')]==0x1){_0x31390d(_0x57f97d);}else{_0x19c015(new RangeError(_0x8b7c('0x2d')+_0x39d677+_0x8b7c('0x2e')));}});});}exports[_0x8b7c('0x2f')]=function(_0xfd1e12,_0x57406f){logger[_0x8b7c('0x15')]('originate\x20fired:',_0xfd1e12[_0x8b7c('0x30')]);var _0x254e50=originateValidation['validate'](_0xfd1e12[_0x8b7c('0x30')]);if(_0x254e50['length']>0x0){return _0x57406f[_0x8b7c('0x1b')](0x190)[_0x8b7c('0x31')](_0x254e50);}var _0x2910c5=_0xfd1e12[_0x8b7c('0x30')][_0x8b7c('0x32')];var _0x1e9438=_0xfd1e12[_0x8b7c('0x30')][_0x8b7c('0x33')];var _0x3f16d3=_0xfd1e12['body'][_0x8b7c('0x34')];var _0x2e1ad5=_0xfd1e12['body']['callbackUrl'];return getAgent(_0x2910c5)['then'](function(_0x1b3ff0){logger[_0x8b7c('0x15')]('entityFound:',_0x1b3ff0[_0x8b7c('0x1a')]);emit(util[_0x8b7c('0x35')](_0x8b7c('0x36'),_0x1b3ff0[_0x8b7c('0x1a')]),'webbar:originate',{'callNumber':_0x1e9438,'callerId':_0x3f16d3,'callbackUrl':_0x2e1ad5});return _0x57406f[_0x8b7c('0x1b')](0xc8)[_0x8b7c('0x31')]({'error':![],'message':_0x8b7c('0x37')});})['catch'](handleError(_0x57406f));};exports[_0x8b7c('0x38')]=function(_0x10f6a9,_0x517dab){logger['info']('hangup\x20fired:',_0x10f6a9[_0x8b7c('0x30')]);var _0x3236dd=hangupValidation[_0x8b7c('0xe')](_0x10f6a9[_0x8b7c('0x30')]);if(_0x3236dd[_0x8b7c('0x2c')]>0x0){return _0x517dab[_0x8b7c('0x1b')](0x190)['json'](_0x3236dd);}var _0x3da514=_0x10f6a9[_0x8b7c('0x30')][_0x8b7c('0x32')];var _0x3bc968=_0x10f6a9[_0x8b7c('0x30')][_0x8b7c('0x2b')];return getAgent(_0x3da514)['then'](function(_0x2458b2){logger[_0x8b7c('0x15')](_0x8b7c('0x39'),_0x2458b2[_0x8b7c('0x1a')]);emit(util[_0x8b7c('0x35')](_0x8b7c('0x36'),_0x2458b2['name']),'webbar:hangup',{'sessionId':_0x3bc968});return _0x517dab[_0x8b7c('0x1b')](0xc8)[_0x8b7c('0x31')]({'error':![],'message':'hangup\x20executed!'});})['catch'](handleError(_0x517dab));};exports[_0x8b7c('0x3a')]=function(_0x3119be,_0x3a226e){logger[_0x8b7c('0x15')](_0x8b7c('0x3b'),_0x3119be[_0x8b7c('0x30')]);var _0xcdd5a7=answerValidation[_0x8b7c('0xe')](_0x3119be[_0x8b7c('0x30')]);if(_0xcdd5a7[_0x8b7c('0x2c')]>0x0){return _0x3a226e[_0x8b7c('0x1b')](0x190)[_0x8b7c('0x31')](_0xcdd5a7);}var _0x5aec7d=_0x3119be[_0x8b7c('0x30')][_0x8b7c('0x32')];var _0x1afec7=_0x3119be[_0x8b7c('0x30')][_0x8b7c('0x2b')];return getAgent(_0x5aec7d)['then'](function(_0x5b7c4b){logger[_0x8b7c('0x15')](_0x8b7c('0x39'),_0x5b7c4b[_0x8b7c('0x1a')]);emit(util[_0x8b7c('0x35')](_0x8b7c('0x36'),_0x5b7c4b[_0x8b7c('0x1a')]),'webbar:answer',{'sessionId':_0x1afec7});return _0x3a226e['status'](0xc8)[_0x8b7c('0x31')]({'error':![],'message':_0x8b7c('0x3c')});})['catch'](handleError(_0x3a226e));};exports[_0x8b7c('0x3d')]=function(_0x18dea0,_0x3a8d52){logger['info']('hold\x20fired:',_0x18dea0[_0x8b7c('0x30')]);var _0x49a65a=holdValidation[_0x8b7c('0xe')](_0x18dea0[_0x8b7c('0x30')]);if(_0x49a65a[_0x8b7c('0x2c')]>0x0){return _0x3a8d52[_0x8b7c('0x1b')](0x190)[_0x8b7c('0x31')](_0x49a65a);}var _0x39219c=_0x18dea0[_0x8b7c('0x30')]['userId'];var _0x6179ec=_0x18dea0[_0x8b7c('0x30')][_0x8b7c('0x2b')];return getAgent(_0x39219c)[_0x8b7c('0x1f')](function(_0x5d5758){logger['info']('entityFound:',_0x5d5758[_0x8b7c('0x1a')]);emit(util[_0x8b7c('0x35')](_0x8b7c('0x36'),_0x5d5758['name']),_0x8b7c('0x3e'),{'sessionId':_0x6179ec});return _0x3a8d52[_0x8b7c('0x1b')](0xc8)[_0x8b7c('0x31')]({'error':![],'message':_0x8b7c('0x3f')});})[_0x8b7c('0x40')](handleError(_0x3a8d52));};exports[_0x8b7c('0x41')]=function(_0x58c25a,_0x2584fe){logger[_0x8b7c('0x15')](_0x8b7c('0x42'),_0x58c25a['body']);var _0x2c85c1=unholdValidation[_0x8b7c('0xe')](_0x58c25a[_0x8b7c('0x30')]);if(_0x2c85c1[_0x8b7c('0x2c')]>0x0){return _0x2584fe['status'](0x190)['json'](_0x2c85c1);}var _0x3e007d=_0x58c25a[_0x8b7c('0x30')]['userId'];var _0x36b1e2=_0x58c25a[_0x8b7c('0x30')][_0x8b7c('0x2b')];return getAgent(_0x3e007d)['then'](function(_0xa4e02e){logger[_0x8b7c('0x15')](_0x8b7c('0x39'),_0xa4e02e[_0x8b7c('0x1a')]);emit(util[_0x8b7c('0x35')](_0x8b7c('0x36'),_0xa4e02e['name']),'webbar:unhold',{'sessionId':_0x36b1e2});return _0x2584fe[_0x8b7c('0x1b')](0xc8)[_0x8b7c('0x31')]({'error':![],'message':'unhold\x20executed!'});})['catch'](handleError(_0x2584fe));};exports['calls']=function(_0x2c9d16,_0x5b5817){logger['info'](_0x8b7c('0x43'),_0x5b5817['body']);var _0x2746fb=callsValidation[_0x8b7c('0xe')](_0x2c9d16[_0x8b7c('0x30')]);if(_0x2746fb[_0x8b7c('0x2c')]>0x0){return _0x5b5817[_0x8b7c('0x1b')](0x190)['json'](_0x2746fb);}var _0x13175e=_0x2c9d16[_0x8b7c('0x30')][_0x8b7c('0x32')];var _0x313361=respondWithRpcPromise(_0x8b7c('0x26'));var _0xda5984=getAgent(_0x13175e);return Promise[_0x8b7c('0x27')]([_0x313361,_0xda5984])[_0x8b7c('0x1f')](function(_0x3db1a6){var _0x2a50e3=_0x3db1a6[0x0];var _0x210b13=_0x3db1a6[0x1];var _0x26c0a2=_['filter'](_0x2a50e3[_0x8b7c('0x29')],function(_0x32d2e4){return _0x32d2e4['UserId']==_0x210b13['id'];});return _0x5b5817['status'](0xc8)['json']({'count':_0x26c0a2[_0x8b7c('0x2c')],'rows':_0x26c0a2});})[_0x8b7c('0x40')](handleError(_0x5b5817));};exports[_0x8b7c('0x44')]=function(_0x4b8075,_0x8350ad){logger[_0x8b7c('0x15')](_0x8b7c('0x45'),_0x4b8075[_0x8b7c('0x30')]);var _0x14e49b=conferenceValidation['validate'](_0x4b8075[_0x8b7c('0x30')]);if(_0x14e49b[_0x8b7c('0x2c')]>0x0){return _0x8350ad[_0x8b7c('0x1b')](0x190)[_0x8b7c('0x31')](_0x14e49b);}var _0x263dde=_0x4b8075[_0x8b7c('0x30')][_0x8b7c('0x32')];return getAgent(_0x263dde)[_0x8b7c('0x1f')](function(_0x713761){logger[_0x8b7c('0x15')](_0x8b7c('0x39'),_0x713761['name']);emit(util[_0x8b7c('0x35')](_0x8b7c('0x36'),_0x713761[_0x8b7c('0x1a')]),_0x8b7c('0x46'));return _0x8350ad[_0x8b7c('0x1b')](0xc8)[_0x8b7c('0x31')]({'error':![],'message':_0x8b7c('0x47')});})[_0x8b7c('0x40')](handleError(_0x8350ad));};exports[_0x8b7c('0x48')]=function(_0xd1d677,_0x1e3817){logger[_0x8b7c('0x15')](_0x8b7c('0x49'),_0xd1d677[_0x8b7c('0x30')]);var _0x24f291=transferValidation[_0x8b7c('0xe')](_0xd1d677[_0x8b7c('0x30')]);if(_0x24f291[_0x8b7c('0x2c')]>0x0){return _0x1e3817[_0x8b7c('0x1b')](0x190)[_0x8b7c('0x31')](_0x24f291);}var _0x526e69=_0xd1d677['body']['userId'];var _0x13d420=_0xd1d677[_0x8b7c('0x30')][_0x8b7c('0x2b')];var _0xa42d22=_0xd1d677[_0x8b7c('0x30')]['transferNumber'];return getAgent(_0x526e69)[_0x8b7c('0x1f')](function(_0x2a3e3a){logger[_0x8b7c('0x15')]('entityFound:',_0x2a3e3a['name']);emit(util[_0x8b7c('0x35')]('user:%s',_0x2a3e3a['name']),_0x8b7c('0x4a'),{'sessionId':_0x13d420,'transferNumber':_0xa42d22});return _0x1e3817[_0x8b7c('0x1b')](0xc8)[_0x8b7c('0x31')]({'error':![],'message':_0x8b7c('0x4b')});})['catch'](handleError(_0x1e3817));};
\ No newline at end of file
+var _0x9b9b=['rows','sessionId','length','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callerId','callbackUrl','info','user:%s','webbar:originate','json','originate\x20executed!','catch','hangup\x20fired:','entityFound:','format','webbar:hangup','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','all','UserId','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','lodash','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','sessionId\x20is\x20required','stringify','log','handleError:','stack','name','status','send','NotFound','request','error','code','message','findOne','agent','then','VoiceChannels','filter'];(function(_0x374afe,_0x3a638e){var _0x3b0064=function(_0x3f1596){while(--_0x3f1596){_0x374afe['push'](_0x374afe['shift']());}};_0x3b0064(++_0x3a638e);}(_0x9b9b,0x114));var _0xb9b9=function(_0x540178,_0x1feb3d){_0x540178=_0x540178-0x0;var _0x58a85c=_0x9b9b[_0x540178];return _0x58a85c;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0xb9b9('0x0'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require(_0xb9b9('0x1'));var BPromise=require(_0xb9b9('0x2'));var jayson=require(_0xb9b9('0x3'));var amiClient=jayson[_0xb9b9('0x4')][_0xb9b9('0x5')]({'port':0x232a});var logger=require(_0xb9b9('0x6'))(_0xb9b9('0x7'));var Redis=require(_0xb9b9('0x8'));config[_0xb9b9('0x9')]=_[_0xb9b9('0xa')](config[_0xb9b9('0x9')],{'host':_0xb9b9('0xb'),'port':0x18eb});var io=require(_0xb9b9('0xc'))(new Redis(config[_0xb9b9('0x9')]));var Schema=require(_0xb9b9('0xd'));var originateValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0xb9b9('0xf')]},'callerId':{'type':_0xb9b9('0x10')},'callbackUrl':{'type':_0xb9b9('0x10')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb9b9('0x11')]},'sessionId':{'type':_0xb9b9('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb9b9('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],_0xb9b9('0x11')]},'sessionId':{'type':_0xb9b9('0x10'),'required':[!![],_0xb9b9('0x12')]},'transferNumber':{'type':_0xb9b9('0x10'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb9b9('0x11')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb9b9('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],_0xb9b9('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0xb9b9('0xe'),'required':[!![],_0xb9b9('0x11')]}});function emit(_0x3fd09c,_0x42a55f,_0x2b2e3d){logger['info'](_0x3fd09c,_0x42a55f,JSON[_0xb9b9('0x13')](_0x2b2e3d));io['to'](_0x3fd09c)['emit'](_0x42a55f,_0x2b2e3d);}function handleError(_0x403a5b){return function(_0x3e6d23){console[_0xb9b9('0x14')](_0xb9b9('0x15'),_0x3e6d23,_0x3e6d23 instanceof RangeError);logger['error'](_0x3e6d23[_0xb9b9('0x16')]);if(_0x3e6d23 instanceof RangeError){if(_0x3e6d23[_0xb9b9('0x17')]){delete _0x3e6d23[_0xb9b9('0x17')];}_0x403a5b[_0xb9b9('0x18')](0x194)[_0xb9b9('0x19')](_0x3e6d23);}else{if(_0x3e6d23[_0xb9b9('0x17')]){delete _0x3e6d23[_0xb9b9('0x17')];}_0x403a5b[_0xb9b9('0x18')](0x1f4)[_0xb9b9('0x19')](_0x3e6d23);}};}function checkError(){return function(_0x47d3e3){if(!_0x47d3e3){throw new RangeError(_0xb9b9('0x1a'));}return _0x47d3e3;};}function respondWithRpcPromise(_0x1246b9,_0x1554d0){return new BPromise(function(_0x4e33a0,_0x10b7e1){var _0xe1e1d7=amiClient;return _0xe1e1d7[_0xb9b9('0x1b')](_0x1246b9,_0x1554d0)['then'](function(_0x9898bc){if(_0x9898bc[_0xb9b9('0x1c')]){if(_0x9898bc['error'][_0xb9b9('0x1d')]===0x1f4){return _0x10b7e1(_0x9898bc[_0xb9b9('0x1c')][_0xb9b9('0x1e')]);}return _0x4e33a0(_0x9898bc[_0xb9b9('0x1c')][_0xb9b9('0x1e')]);}else{_0x4e33a0(_0x9898bc['result']);}})['catch'](function(_0x33ab82){_0x10b7e1(_0x33ab82);});});}function getAgent(_0x426f2c){return db['User'][_0xb9b9('0x1f')]({'where':{'id':_0x426f2c,'role':_0xb9b9('0x20')}})[_0xb9b9('0x21')](checkError());}function getAgentCheckSession(_0x21f68f,_0x125f6c){return new BPromise(function(_0x54bf18,_0x388042){var _0x554850=respondWithRpcPromise(_0xb9b9('0x22'));var _0xe28f3c=getAgent(_0x21f68f);Promise['all']([_0x554850,_0xe28f3c])[_0xb9b9('0x21')](function(_0x31b509){var _0x17a6f6=_0x31b509[0x0];var _0x5eb860=_0x31b509[0x1];var _0x16df87=_[_0xb9b9('0x23')](_0x17a6f6[_0xb9b9('0x24')],function(_0x300453){return _0x300453['UserId']==_0x5eb860['id']&&_0x300453[_0xb9b9('0x25')]==_0x125f6c;});if(_0x16df87[_0xb9b9('0x26')]==0x1){_0x54bf18(_0x5eb860);}else{_0x388042(new RangeError('sessionId\x20'+_0x125f6c+_0xb9b9('0x27')));}});});}exports[_0xb9b9('0x28')]=function(_0x247e8d,_0xc47845){logger['info'](_0xb9b9('0x29'),_0x247e8d[_0xb9b9('0x2a')]);var _0x28e2da=originateValidation[_0xb9b9('0xd')](_0x247e8d['body']);if(_0x28e2da[_0xb9b9('0x26')]>0x0){return _0xc47845[_0xb9b9('0x18')](0x190)['json'](_0x28e2da);}var _0x126fe2=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0xa680b5=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2c')];var _0x5e10c9=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2d')];var _0x48bcd2=_0x247e8d[_0xb9b9('0x2a')][_0xb9b9('0x2e')];return getAgent(_0x126fe2)[_0xb9b9('0x21')](function(_0x5837c0){logger[_0xb9b9('0x2f')]('entityFound:',_0x5837c0[_0xb9b9('0x17')]);emit(util['format'](_0xb9b9('0x30'),_0x5837c0[_0xb9b9('0x17')]),_0xb9b9('0x31'),{'callNumber':_0xa680b5,'callerId':_0x5e10c9,'callbackUrl':_0x48bcd2});return _0xc47845[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x33')});})[_0xb9b9('0x34')](handleError(_0xc47845));};exports['hangup']=function(_0x57396a,_0xb54d68){logger[_0xb9b9('0x2f')](_0xb9b9('0x35'),_0x57396a['body']);var _0x29c60f=hangupValidation['validate'](_0x57396a[_0xb9b9('0x2a')]);if(_0x29c60f[_0xb9b9('0x26')]>0x0){return _0xb54d68[_0xb9b9('0x18')](0x190)[_0xb9b9('0x32')](_0x29c60f);}var _0x46abe7=_0x57396a[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x1eb1b4=_0x57396a[_0xb9b9('0x2a')][_0xb9b9('0x25')];return getAgent(_0x46abe7)['then'](function(_0xf484fd){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0xf484fd[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0xf484fd[_0xb9b9('0x17')]),_0xb9b9('0x38'),{'sessionId':_0x1eb1b4});return _0xb54d68[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':'hangup\x20executed!'});})[_0xb9b9('0x34')](handleError(_0xb54d68));};exports[_0xb9b9('0x39')]=function(_0x21307e,_0x386a6c){logger['info'](_0xb9b9('0x3a'),_0x21307e['body']);var _0x5b439e=answerValidation[_0xb9b9('0xd')](_0x21307e[_0xb9b9('0x2a')]);if(_0x5b439e['length']>0x0){return _0x386a6c['status'](0x190)[_0xb9b9('0x32')](_0x5b439e);}var _0x1a5888=_0x21307e[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x493786=_0x21307e[_0xb9b9('0x2a')][_0xb9b9('0x25')];return getAgent(_0x1a5888)[_0xb9b9('0x21')](function(_0x53483d){logger['info'](_0xb9b9('0x36'),_0x53483d['name']);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x53483d[_0xb9b9('0x17')]),_0xb9b9('0x3b'),{'sessionId':_0x493786});return _0x386a6c['status'](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x3c')});})[_0xb9b9('0x34')](handleError(_0x386a6c));};exports[_0xb9b9('0x3d')]=function(_0x2af5bf,_0x2bdbb5){logger[_0xb9b9('0x2f')](_0xb9b9('0x3e'),_0x2af5bf[_0xb9b9('0x2a')]);var _0x2fe8e2=holdValidation[_0xb9b9('0xd')](_0x2af5bf[_0xb9b9('0x2a')]);if(_0x2fe8e2['length']>0x0){return _0x2bdbb5[_0xb9b9('0x18')](0x190)['json'](_0x2fe8e2);}var _0x8254f9=_0x2af5bf[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x1ad24d=_0x2af5bf['body'][_0xb9b9('0x25')];return getAgent(_0x8254f9)['then'](function(_0x2b3e22){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0x2b3e22[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x2b3e22[_0xb9b9('0x17')]),_0xb9b9('0x3f'),{'sessionId':_0x1ad24d});return _0x2bdbb5[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x40')});})['catch'](handleError(_0x2bdbb5));};exports['unhold']=function(_0x4da7d8,_0x124b54){logger['info'](_0xb9b9('0x41'),_0x4da7d8[_0xb9b9('0x2a')]);var _0x3a9d1b=unholdValidation[_0xb9b9('0xd')](_0x4da7d8['body']);if(_0x3a9d1b[_0xb9b9('0x26')]>0x0){return _0x124b54[_0xb9b9('0x18')](0x190)['json'](_0x3a9d1b);}var _0x27a9ed=_0x4da7d8[_0xb9b9('0x2a')]['userId'];var _0x50f2e0=_0x4da7d8[_0xb9b9('0x2a')][_0xb9b9('0x25')];return getAgent(_0x27a9ed)[_0xb9b9('0x21')](function(_0x4d5116){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0x4d5116['name']);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x4d5116[_0xb9b9('0x17')]),_0xb9b9('0x42'),{'sessionId':_0x50f2e0});return _0x124b54['status'](0xc8)[_0xb9b9('0x32')]({'error':![],'message':_0xb9b9('0x43')});})[_0xb9b9('0x34')](handleError(_0x124b54));};exports['calls']=function(_0x190e09,_0x2e6db1){logger[_0xb9b9('0x2f')](_0xb9b9('0x44'),_0x2e6db1[_0xb9b9('0x2a')]);var _0x49956d=callsValidation['validate'](_0x190e09[_0xb9b9('0x2a')]);if(_0x49956d[_0xb9b9('0x26')]>0x0){return _0x2e6db1[_0xb9b9('0x18')](0x190)[_0xb9b9('0x32')](_0x49956d);}var _0x3331f0=_0x190e09['body'][_0xb9b9('0x2b')];var _0x30e19e=respondWithRpcPromise(_0xb9b9('0x22'));var _0x340c73=getAgent(_0x3331f0);return Promise[_0xb9b9('0x45')]([_0x30e19e,_0x340c73])['then'](function(_0x3741c1){var _0x2da6ad=_0x3741c1[0x0];var _0x1a34b6=_0x3741c1[0x1];var _0x1e38f5=_['filter'](_0x2da6ad[_0xb9b9('0x24')],function(_0x5c9d1d){return _0x5c9d1d[_0xb9b9('0x46')]==_0x1a34b6['id'];});return _0x2e6db1[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'count':_0x1e38f5[_0xb9b9('0x26')],'rows':_0x1e38f5});})[_0xb9b9('0x34')](handleError(_0x2e6db1));};exports[_0xb9b9('0x47')]=function(_0x1f19b2,_0x24ae48){logger[_0xb9b9('0x2f')](_0xb9b9('0x48'),_0x1f19b2['body']);var _0xac7b51=conferenceValidation[_0xb9b9('0xd')](_0x1f19b2[_0xb9b9('0x2a')]);if(_0xac7b51['length']>0x0){return _0x24ae48[_0xb9b9('0x18')](0x190)[_0xb9b9('0x32')](_0xac7b51);}var _0x412a7b=_0x1f19b2[_0xb9b9('0x2a')][_0xb9b9('0x2b')];return getAgent(_0x412a7b)[_0xb9b9('0x21')](function(_0x564008){logger[_0xb9b9('0x2f')](_0xb9b9('0x36'),_0x564008[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x564008[_0xb9b9('0x17')]),_0xb9b9('0x49'));return _0x24ae48[_0xb9b9('0x18')](0xc8)['json']({'error':![],'message':_0xb9b9('0x4a')});})[_0xb9b9('0x34')](handleError(_0x24ae48));};exports[_0xb9b9('0x4b')]=function(_0x5823ac,_0x3c2830){logger[_0xb9b9('0x2f')]('transfer\x20fired:',_0x5823ac[_0xb9b9('0x2a')]);var _0x35c05b=transferValidation[_0xb9b9('0xd')](_0x5823ac[_0xb9b9('0x2a')]);if(_0x35c05b[_0xb9b9('0x26')]>0x0){return _0x3c2830[_0xb9b9('0x18')](0x190)['json'](_0x35c05b);}var _0x2be3c7=_0x5823ac[_0xb9b9('0x2a')][_0xb9b9('0x2b')];var _0x21ed42=_0x5823ac[_0xb9b9('0x2a')]['sessionId'];var _0x4a7536=_0x5823ac[_0xb9b9('0x2a')][_0xb9b9('0x4c')];return getAgent(_0x2be3c7)[_0xb9b9('0x21')](function(_0x53159a){logger[_0xb9b9('0x2f')]('entityFound:',_0x53159a[_0xb9b9('0x17')]);emit(util[_0xb9b9('0x37')](_0xb9b9('0x30'),_0x53159a[_0xb9b9('0x17')]),_0xb9b9('0x4d'),{'sessionId':_0x21ed42,'transferNumber':_0x4a7536});return _0x3c2830[_0xb9b9('0x18')](0xc8)[_0xb9b9('0x32')]({'error':![],'message':'transfer\x20executed!'});})['catch'](handleError(_0x3c2830));};
\ No newline at end of file
index 906d7f0..a11d089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAgents','/:id/applications','getApplications','post','create','addAnswer','/:id/users','addApplications','/:id/notify','notify','/:id/send','send','put','update','delete','removeDispositions','removeAgents','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','index','/describe','isAuthenticated'];(function(_0x2d6db1,_0x9a6781){var _0x6379dc=function(_0x4c56dd){while(--_0x4c56dd){_0x2d6db1['push'](_0x2d6db1['shift']());}};_0x6379dc(++_0x9a6781);}(_0x4975,0x86));var _0x5497=function(_0x1f7a0e,_0x1db9da){_0x1f7a0e=_0x1f7a0e-0x0;var _0x23495f=_0x4975[_0x1f7a0e];return _0x23495f;};'use strict';var multer=require(_0x5497('0x0'));var util=require('util');var path=require(_0x5497('0x1'));var timeout=require(_0x5497('0x2'));var express=require(_0x5497('0x3'));var router=express[_0x5497('0x4')]();var fs_extra=require(_0x5497('0x5'));var auth=require(_0x5497('0x6'));var interaction=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var controller=require(_0x5497('0x9'));router[_0x5497('0xa')]('/',auth['isAuthenticated'](),controller[_0x5497('0xb')]);router['get'](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0xe')]);router['get'](_0x5497('0xf'),auth['isAuthenticated'](),controller[_0x5497('0x10')]);router[_0x5497('0xa')](_0x5497('0x11'),auth[_0x5497('0xd')](),controller[_0x5497('0x12')]);router[_0x5497('0xa')](_0x5497('0x13'),auth[_0x5497('0xd')](),controller['getAnswers']);router['get']('/:id/users',auth[_0x5497('0xd')](),controller[_0x5497('0x14')]);router[_0x5497('0xa')](_0x5497('0x15'),auth[_0x5497('0xd')](),controller[_0x5497('0x16')]);router[_0x5497('0x17')]('/',auth[_0x5497('0xd')](),controller[_0x5497('0x18')]);router[_0x5497('0x17')]('/:id/dispositions',auth[_0x5497('0xd')](),controller['addDisposition']);router[_0x5497('0x17')](_0x5497('0x13'),auth[_0x5497('0xd')](),controller[_0x5497('0x19')]);router[_0x5497('0x17')](_0x5497('0x1a'),auth[_0x5497('0xd')](),controller['addAgents']);router['post'](_0x5497('0x15'),auth[_0x5497('0xd')](),controller[_0x5497('0x1b')]);router['post'](_0x5497('0x1c'),controller[_0x5497('0x1d')]);router[_0x5497('0x17')](_0x5497('0x1e'),auth[_0x5497('0xd')](),controller[_0x5497('0x1f')]);router[_0x5497('0x20')](_0x5497('0xf'),auth[_0x5497('0xd')](),controller[_0x5497('0x21')]);router[_0x5497('0x22')]('/:id',auth[_0x5497('0xd')](),controller['destroy']);router[_0x5497('0x22')](_0x5497('0x11'),auth[_0x5497('0xd')](),controller[_0x5497('0x23')]);router[_0x5497('0x22')](_0x5497('0x13'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x5497('0x22')](_0x5497('0x1a'),auth[_0x5497('0xd')](),controller[_0x5497('0x24')]);module['exports']=router;
\ No newline at end of file
+var _0x0295=['addDisposition','/:id/canned_answers','addAnswer','/:id/users','addAgents','/:id/applications','addApplications','/:id/notify','notify','put','/:id','update','delete','removeDispositions','removeAnswers','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','getDispositions','getAnswers','getAgents','post','create','/:id/dispositions'];(function(_0x3008c6,_0x5dec63){var _0x344f83=function(_0x1db825){while(--_0x1db825){_0x3008c6['push'](_0x3008c6['shift']());}};_0x344f83(++_0x5dec63);}(_0x0295,0x1f0));var _0x5029=function(_0xf20b6,_0x49ddbb){_0xf20b6=_0xf20b6-0x0;var _0x4ff567=_0x0295[_0xf20b6];return _0x4ff567;};'use strict';var multer=require(_0x5029('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5029('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5029('0x2'));var auth=require(_0x5029('0x3'));var interaction=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var controller=require(_0x5029('0x6'));router[_0x5029('0x7')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0x9')]);router[_0x5029('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x5029('0x7')]('/:id',auth[_0x5029('0x8')](),controller['show']);router[_0x5029('0x7')]('/:id/dispositions',auth[_0x5029('0x8')](),controller[_0x5029('0xa')]);router[_0x5029('0x7')]('/:id/canned_answers',auth[_0x5029('0x8')](),controller[_0x5029('0xb')]);router[_0x5029('0x7')]('/:id/users',auth[_0x5029('0x8')](),controller[_0x5029('0xc')]);router['get']('/:id/applications',auth['isAuthenticated'](),controller['getApplications']);router[_0x5029('0xd')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0xe')]);router[_0x5029('0xd')](_0x5029('0xf'),auth[_0x5029('0x8')](),controller[_0x5029('0x10')]);router[_0x5029('0xd')](_0x5029('0x11'),auth[_0x5029('0x8')](),controller[_0x5029('0x12')]);router[_0x5029('0xd')](_0x5029('0x13'),auth[_0x5029('0x8')](),controller[_0x5029('0x14')]);router['post'](_0x5029('0x15'),auth[_0x5029('0x8')](),controller[_0x5029('0x16')]);router[_0x5029('0xd')](_0x5029('0x17'),controller[_0x5029('0x18')]);router[_0x5029('0xd')]('/:id/send',auth[_0x5029('0x8')](),controller['send']);router[_0x5029('0x19')](_0x5029('0x1a'),auth[_0x5029('0x8')](),controller[_0x5029('0x1b')]);router['delete']('/:id',auth[_0x5029('0x8')](),controller['destroy']);router[_0x5029('0x1c')](_0x5029('0xf'),auth[_0x5029('0x8')](),controller[_0x5029('0x1d')]);router[_0x5029('0x1c')](_0x5029('0x11'),auth[_0x5029('0x8')](),controller[_0x5029('0x1e')]);router[_0x5029('0x1c')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x5029('0x1f')]=router;
\ No newline at end of file
index bb24b32..1f080c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4713=['name','generate','ENUM','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING'];(function(_0x511b28,_0x410e28){var _0x1864e1=function(_0x4b1b3e){while(--_0x4b1b3e){_0x511b28['push'](_0x511b28['shift']());}};_0x1864e1(++_0x410e28);}(_0x4713,0x1cc));var _0x3471=function(_0x253141,_0x396c1e){_0x253141=_0x253141-0x0;var _0x4472f3=_0x4713[_0x253141];return _0x4472f3;};'use strict';var Sequelize=require(_0x3471('0x0'));var rs=require(_0x3471('0x1'));module[_0x3471('0x2')]={'name':{'type':Sequelize[_0x3471('0x3')],'unique':_0x3471('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x3471('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x3471('0x3')],'defaultValue':function(){return rs[_0x3471('0x5')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x3471('0x6')](_0x3471('0x7'),'sinch')},'accountSid':{'type':Sequelize[_0x3471('0x3')]},'baseUrl':{'type':Sequelize[_0x3471('0x3')]},'authToken':{'type':Sequelize[_0x3471('0x3')]},'notificationTemplate':{'type':Sequelize[_0x3471('0x8')],'defaultValue':function(){return _0x3471('0x9');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x3471('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3471('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3471('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3471('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3471('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3471('0xb')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x3471('0xa')],'defaultValue':![],'comment':_0x3471('0xc'),'set':function(_0x38e8b8){if(!_0x38e8b8){this[_0x3471('0xd')](_0x3471('0xe'),null);}this[_0x3471('0xd')](_0x3471('0xf'),_0x38e8b8);}},'description':{'type':Sequelize[_0x3471('0x3')]}};
\ No newline at end of file
+var _0x5580=['STRING','generate','ENUM','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5580,0xa2));var _0x0558=function(_0x3dbd97,_0x44163f){_0x3dbd97=_0x3dbd97-0x0;var _0x55454f=_0x5580[_0x3dbd97];return _0x55454f;};'use strict';var Sequelize=require(_0x0558('0x0'));var rs=require(_0x0558('0x1'));module[_0x0558('0x2')]={'name':{'type':Sequelize[_0x0558('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x0558('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x0558('0x3')],'defaultValue':function(){return rs[_0x0558('0x4')]();}},'phone':{'type':Sequelize[_0x0558('0x3')]},'type':{'type':Sequelize[_0x0558('0x5')](_0x0558('0x6'))},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x0558('0x3')]},'notificationTemplate':{'type':Sequelize[_0x0558('0x7')],'defaultValue':function(){return _0x0558('0x8');}},'notificationSound':{'type':Sequelize[_0x0558('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x0558('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0558('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x0558('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0558('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0558('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0558('0xa')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x0558('0x9')],'defaultValue':![],'comment':_0x0558('0xb'),'set':function(_0x5d0431){if(!_0x5d0431){this[_0x0558('0xc')](_0x0558('0xd'),null);}this[_0x0558('0xc')](_0x0558('0xe'),_0x5d0431);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e89b34a..e9e9410 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01c0=['interaction','close','*,*,*,*','created','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','twilio','Content-Type','to\x20is\x20mandatory','List','Messages','dataValues','push','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','http','request','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','get','WhatsappAccounts','UserProfileResource','destroy','stack','name','send','index','Pause','mandatoryDispositionPause','WhatsappAccount','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','rawAttributes','length','hasOwnProperty','nolimit','pick','removeDispositions','addAnswer','getAnswers','CannedAnswer','removeAnswers','ids','addAgents','omit','spread','removeAgents','isArray','userWhatsappAccount:remove','emit','getAgents','User','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','findAndCountAll','priority','getApplications','notify','whatsapp','account','sinch','statuses','state','read','WhatsappMessage','timestamp','applications','orderBy','Applications','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','From','replace','Body','MessageSid','from','notifications','messageId','message_id','isNil','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','defaults','contact','WhatsappInteraction'];(function(_0x5eb7ba,_0x3ff644){var _0x22581d=function(_0x38afe6){while(--_0x38afe6){_0x5eb7ba['push'](_0x5eb7ba['shift']());}};_0x22581d(++_0x3ff644);}(_0x01c0,0xdc));var _0x001c=function(_0x32b542,_0x4512fa){_0x32b542=_0x32b542-0x0;var _0x554d54=_0x01c0[_0x32b542];return _0x554d54;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x001c('0x0'));var zipdir=require(_0x001c('0x1'));var jsonpatch=require(_0x001c('0x2'));var rp=require(_0x001c('0x3'));var moment=require('moment');var BPromise=require(_0x001c('0x4'));var Mustache=require(_0x001c('0x5'));var util=require(_0x001c('0x6'));var path=require(_0x001c('0x7'));var sox=require(_0x001c('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x001c('0x9'));var _=require(_0x001c('0xa'));var squel=require(_0x001c('0xb'));var crypto=require(_0x001c('0xc'));var jsforce=require(_0x001c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x001c('0xe'));var querystring=require(_0x001c('0xf'));var Papa=require(_0x001c('0x10'));var Redis=require(_0x001c('0x11'));var authService=require(_0x001c('0x12'));var qs=require(_0x001c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x001c('0x14'))(_0x001c('0x15'));var utils=require('../../config/utils');var config=require(_0x001c('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x001c('0x17'))['db'];config[_0x001c('0x18')]=_['defaults'](config[_0x001c('0x18')],{'host':_0x001c('0x19'),'port':0x18eb});var socket=require(_0x001c('0x1a'))(new Redis(config[_0x001c('0x18')]));require(_0x001c('0x1b'))[_0x001c('0x1c')](socket);var jayson=require(_0x001c('0x1d'));var client=jayson[_0x001c('0x1e')][_0x001c('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0xa436bc,_0x17d472,_0x548214,_0x46022d){return new BPromise(function(_0x3bbe40,_0x2dbbb1){var _0x58dbc5=_0x46022d||client;return _0x58dbc5[_0x001c('0x20')](_0xa436bc,_0x548214)['then'](function(_0x71fd93){logger[_0x001c('0x21')](_0x001c('0x22'),_0x17d472,'request\x20sent');logger[_0x001c('0x23')](_0x001c('0x24'),_0x17d472,_0x001c('0x25'),JSON[_0x001c('0x26')](_0x71fd93));if(_0x71fd93['error']){if(_0x71fd93[_0x001c('0x27')][_0x001c('0x28')]===0x1f4){logger[_0x001c('0x27')](_0x001c('0x22'),_0x17d472,_0x71fd93[_0x001c('0x27')][_0x001c('0x29')]);return _0x2dbbb1(_0x71fd93[_0x001c('0x27')]['message']);}logger[_0x001c('0x27')](_0x001c('0x22'),_0x17d472,_0x71fd93['error']['message']);return _0x3bbe40(_0x71fd93[_0x001c('0x27')][_0x001c('0x29')]);}else{logger[_0x001c('0x21')](_0x001c('0x22'),_0x17d472,_0x001c('0x25'));_0x3bbe40(_0x71fd93[_0x001c('0x2a')][_0x001c('0x29')]);}})['catch'](function(_0x21b17d){logger[_0x001c('0x27')](_0x001c('0x22'),_0x17d472,_0x21b17d);_0x2dbbb1(_0x21b17d);});});}function respondWithStatusCode(_0x4b2e9e,_0x7726b4){_0x7726b4=_0x7726b4||0xcc;return function(_0x3430e0){if(_0x3430e0){return _0x4b2e9e[_0x001c('0x2b')](_0x7726b4);}return _0x4b2e9e[_0x001c('0x2c')](_0x7726b4)[_0x001c('0x2d')]();};}function respondWithResult(_0x552618,_0x5ae368){_0x5ae368=_0x5ae368||0xc8;return function(_0x272dff){if(_0x272dff){return _0x552618['status'](_0x5ae368)[_0x001c('0x2e')](_0x272dff);}};}function respondWithFilteredResult(_0x5e494b,_0xc4fa9b){return function(_0x3b4692){if(_0x3b4692){var _0x4a31be=typeof _0xc4fa9b[_0x001c('0x2f')]===_0x001c('0x30')&&typeof _0xc4fa9b[_0x001c('0x31')]===_0x001c('0x30');var _0x2e918c=_0x3b4692['count'];var _0x6d6258=_0x4a31be?0x0:_0xc4fa9b[_0x001c('0x2f')];var _0xdb253c=_0x4a31be?_0x3b4692[_0x001c('0x32')]:_0xc4fa9b[_0x001c('0x2f')]+_0xc4fa9b[_0x001c('0x31')];var _0x154ba2;if(_0xdb253c>=_0x2e918c){_0xdb253c=_0x2e918c;_0x154ba2=0xc8;}else{_0x154ba2=0xce;}_0x5e494b[_0x001c('0x2c')](_0x154ba2);return _0x5e494b[_0x001c('0x33')](_0x001c('0x34'),_0x6d6258+'-'+_0xdb253c+'/'+_0x2e918c)['json'](_0x3b4692);}return null;};}function patchUpdates(_0x2ca0e0){return function(_0xd9afda){try{jsonpatch['apply'](_0xd9afda,_0x2ca0e0,!![]);}catch(_0x3bc5bb){return BPromise[_0x001c('0x35')](_0x3bc5bb);}return _0xd9afda['save']();};}function saveUpdates(_0xcb74d5,_0x4cd6ec){return function(_0x418759){if(_0x418759){return _0x418759[_0x001c('0x36')](_0xcb74d5)[_0x001c('0x37')](function(_0x154385){return _0x154385;});}return null;};}function removeEntity(_0x57b692,_0x512981){return function(_0x32f402){if(_0x32f402){return _0x32f402['destroy']()['then'](function(){var _0x4ecdff=_0x32f402[_0x001c('0x38')]({'plain':!![]});var _0x220eb1=_0x001c('0x39');return db[_0x001c('0x3a')][_0x001c('0x3b')]({'where':{'type':_0x220eb1,'resourceId':_0x4ecdff['id']}})[_0x001c('0x37')](function(){return _0x32f402;});})['then'](function(){_0x57b692[_0x001c('0x2c')](0xcc)[_0x001c('0x2d')]();});}};}function handleEntityNotFound(_0x196a05,_0x1f7d4e){return function(_0x4dc455){if(!_0x4dc455){_0x196a05[_0x001c('0x2b')](0x194);}return _0x4dc455;};}function handleError(_0x2e6262,_0x57e9db){_0x57e9db=_0x57e9db||0x1f4;return function(_0x532022){logger[_0x001c('0x27')](_0x532022[_0x001c('0x3c')]);if(_0x532022[_0x001c('0x3d')]){delete _0x532022[_0x001c('0x3d')];}_0x2e6262[_0x001c('0x2c')](_0x57e9db)[_0x001c('0x3e')](_0x532022);};}exports[_0x001c('0x3f')]=function(_0x23bd10,_0x23ada8){var _0x4664bd={'include':[{'model':db[_0x001c('0x40')],'as':_0x001c('0x41')}]},_0x5ee730={},_0x4d3bf7={'count':0x0,'rows':[]};var _0x3cf9c4=_['map'](db[_0x001c('0x42')]['rawAttributes'],function(_0x49cc0b){return{'name':_0x49cc0b[_0x001c('0x43')],'type':_0x49cc0b[_0x001c('0x44')][_0x001c('0x45')]};});_0x5ee730[_0x001c('0x46')]=_[_0x001c('0x47')](_0x3cf9c4,_0x001c('0x3d'));_0x5ee730[_0x001c('0x48')]=_[_0x001c('0x49')](_0x23bd10['query']);_0x5ee730[_0x001c('0x4a')]=_['intersection'](_0x5ee730[_0x001c('0x46')],_0x5ee730[_0x001c('0x48')]);_0x4664bd['attributes']=_[_0x001c('0x4b')](_0x5ee730[_0x001c('0x46')],qs['fields'](_0x23bd10['query'][_0x001c('0x4c')]));_0x4664bd[_0x001c('0x4d')]=_0x4664bd['attributes']['length']?_0x4664bd[_0x001c('0x4d')]:_0x5ee730['model'];if(!_0x23bd10[_0x001c('0x48')]['hasOwnProperty']('nolimit')){_0x4664bd[_0x001c('0x31')]=qs[_0x001c('0x31')](_0x23bd10[_0x001c('0x48')][_0x001c('0x31')]);_0x4664bd['offset']=qs[_0x001c('0x2f')](_0x23bd10[_0x001c('0x48')][_0x001c('0x2f')]);}_0x4664bd[_0x001c('0x4e')]=qs['sort'](_0x23bd10['query'][_0x001c('0x4f')]);_0x4664bd[_0x001c('0x50')]=qs['filters'](_['pick'](_0x23bd10['query'],_0x5ee730[_0x001c('0x4a')]),_0x3cf9c4);if(_0x23bd10[_0x001c('0x48')][_0x001c('0x51')]){_0x4664bd[_0x001c('0x50')]=_[_0x001c('0x52')](_0x4664bd[_0x001c('0x50')],{'$or':_[_0x001c('0x47')](_0x3cf9c4,function(_0x2fdebc){if(_0x2fdebc[_0x001c('0x44')]!==_0x001c('0x53')){var _0x24f519={};_0x24f519[_0x2fdebc[_0x001c('0x3d')]]={'$like':'%'+_0x23bd10[_0x001c('0x48')][_0x001c('0x51')]+'%'};return _0x24f519;}})});}_0x4664bd=_['merge']({},_0x4664bd,_0x23bd10[_0x001c('0x54')]);var _0x279d03={'where':_0x4664bd[_0x001c('0x50')]};return db[_0x001c('0x42')][_0x001c('0x32')](_0x279d03)[_0x001c('0x37')](function(_0xa9b3c8){_0x4d3bf7[_0x001c('0x32')]=_0xa9b3c8;if(_0x23bd10['query'][_0x001c('0x55')]){_0x4664bd[_0x001c('0x56')]=[{'all':!![]}];}return db[_0x001c('0x42')][_0x001c('0x57')](_0x4664bd);})['then'](function(_0x6bf8ff){_0x4d3bf7[_0x001c('0x58')]=_0x6bf8ff;return _0x4d3bf7;})[_0x001c('0x37')](respondWithFilteredResult(_0x23ada8,_0x4664bd))[_0x001c('0x59')](handleError(_0x23ada8,null));};exports[_0x001c('0x5a')]=function(_0x3cd46f,_0x52a8d1){var _0x49e2e1={'raw':![],'where':{'id':_0x3cd46f[_0x001c('0x5b')]['id']},'include':[{'model':db[_0x001c('0x40')],'as':_0x001c('0x41')}]},_0x324061={};_0x324061[_0x001c('0x46')]=_[_0x001c('0x49')](db['WhatsappAccount']['rawAttributes']);_0x324061['query']=_[_0x001c('0x49')](_0x3cd46f[_0x001c('0x48')]);_0x324061[_0x001c('0x4a')]=_['intersection'](_0x324061['model'],_0x324061[_0x001c('0x48')]);_0x49e2e1[_0x001c('0x4d')]=_['intersection'](_0x324061[_0x001c('0x46')],qs[_0x001c('0x4c')](_0x3cd46f[_0x001c('0x48')][_0x001c('0x4c')]));_0x49e2e1[_0x001c('0x4d')]=_0x49e2e1[_0x001c('0x4d')]['length']?_0x49e2e1[_0x001c('0x4d')]:_0x324061[_0x001c('0x46')];if(_0x3cd46f['query']['includeAll']){_0x49e2e1[_0x001c('0x56')]=[{'all':!![]}];}_0x49e2e1=_[_0x001c('0x52')]({},_0x49e2e1,_0x3cd46f[_0x001c('0x54')]);return db[_0x001c('0x42')][_0x001c('0x5c')](_0x49e2e1)[_0x001c('0x37')](handleEntityNotFound(_0x52a8d1,null))['then'](respondWithResult(_0x52a8d1,null))['catch'](handleError(_0x52a8d1,null));};exports[_0x001c('0x5d')]=function(_0x2054d9,_0x58f511){return db[_0x001c('0x42')][_0x001c('0x5d')](_0x2054d9['body'],{})[_0x001c('0x37')](function(_0x13858d){var _0x2e9d30=_0x2054d9[_0x001c('0x5e')][_0x001c('0x38')]({'plain':!![]});if(!_0x2e9d30)throw new Error(_0x001c('0x5f'));if(_0x2e9d30[_0x001c('0x60')]===_0x001c('0x5e')){var _0xe56335=_0x13858d[_0x001c('0x38')]({'plain':!![]});var _0x5b1084=_0x001c('0x39');return db[_0x001c('0x61')][_0x001c('0x5c')]({'where':{'name':_0x5b1084,'userProfileId':_0x2e9d30[_0x001c('0x62')]},'raw':!![]})['then'](function(_0x1bc4e6){if(_0x1bc4e6&&_0x1bc4e6['autoAssociation']===0x0){return db[_0x001c('0x3a')][_0x001c('0x5d')]({'name':_0xe56335['name'],'resourceId':_0xe56335['id'],'type':_0x1bc4e6['name'],'sectionId':_0x1bc4e6['id']},{})[_0x001c('0x37')](function(){return _0x13858d;});}else{return _0x13858d;}})[_0x001c('0x59')](function(_0x5e88c7){logger[_0x001c('0x27')](_0x001c('0x63'),_0x5e88c7);throw _0x5e88c7;});}return _0x13858d;})[_0x001c('0x37')](respondWithResult(_0x58f511,0xc9))[_0x001c('0x59')](handleError(_0x58f511,null));};exports[_0x001c('0x36')]=function(_0x1e66b4,_0x12c9a2){if(_0x1e66b4[_0x001c('0x64')]['id']){delete _0x1e66b4[_0x001c('0x64')]['id'];}return db[_0x001c('0x42')][_0x001c('0x5c')]({'where':{'id':_0x1e66b4[_0x001c('0x5b')]['id']},'include':[{'model':db[_0x001c('0x40')],'as':_0x001c('0x41')}]})[_0x001c('0x37')](handleEntityNotFound(_0x12c9a2,null))['then'](saveUpdates(_0x1e66b4[_0x001c('0x64')],null))['then'](respondWithResult(_0x12c9a2,null))['catch'](handleError(_0x12c9a2,null));};exports[_0x001c('0x3b')]=function(_0x11458c,_0x4904c0){return db[_0x001c('0x42')][_0x001c('0x5c')]({'where':{'id':_0x11458c['params']['id']}})['then'](handleEntityNotFound(_0x4904c0,null))['then'](removeEntity(_0x4904c0,null))[_0x001c('0x59')](handleError(_0x4904c0,null));};exports[_0x001c('0x65')]=function(_0x6f4bae,_0x31abc2){return db[_0x001c('0x42')][_0x001c('0x65')]()['then'](respondWithResult(_0x31abc2,null))[_0x001c('0x59')](handleError(_0x31abc2,null));};exports[_0x001c('0x66')]=function(_0x4ec622,_0x23a3db,_0x37c200){if(_0x4ec622[_0x001c('0x64')]['id']){delete _0x4ec622[_0x001c('0x64')]['id'];}return db[_0x001c('0x42')][_0x001c('0x5c')]({'where':{'id':_0x4ec622[_0x001c('0x5b')]['id']}})['then'](handleEntityNotFound(_0x23a3db,null))['then'](function(_0x3ff823){if(_0x3ff823){_0x4ec622[_0x001c('0x64')][_0x001c('0x67')]=_0x3ff823['id'];return db[_0x001c('0x68')][_0x001c('0x5d')](_0x4ec622[_0x001c('0x64')]);}})[_0x001c('0x37')](respondWithResult(_0x23a3db,null))[_0x001c('0x59')](handleError(_0x23a3db,null));};exports[_0x001c('0x69')]=function(_0x567ab7,_0x2543bf,_0x201cee){var _0x104de7={'raw':![],'where':{}};var _0x1c7cf6={};var _0x1ac204={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x001c('0x6a')]({'where':{'id':_0x567ab7[_0x001c('0x5b')]['id']}})[_0x001c('0x37')](handleEntityNotFound(_0x2543bf,null))[_0x001c('0x37')](function(_0x4cf9b3){if(_0x4cf9b3){_0x1c7cf6['model']=_[_0x001c('0x49')](db['Disposition'][_0x001c('0x6b')]);_0x1c7cf6[_0x001c('0x48')]=_[_0x001c('0x49')](_0x567ab7['query']);_0x1c7cf6[_0x001c('0x4a')]=_[_0x001c('0x4b')](_0x1c7cf6['model'],_0x1c7cf6[_0x001c('0x48')]);_0x104de7[_0x001c('0x4d')]=_[_0x001c('0x4b')](_0x1c7cf6[_0x001c('0x46')],qs[_0x001c('0x4c')](_0x567ab7[_0x001c('0x48')]['fields']));_0x104de7[_0x001c('0x4d')]=_0x104de7['attributes'][_0x001c('0x6c')]?_0x104de7[_0x001c('0x4d')]:_0x1c7cf6[_0x001c('0x46')];if(!_0x567ab7[_0x001c('0x48')][_0x001c('0x6d')](_0x001c('0x6e'))){_0x104de7[_0x001c('0x31')]=qs['limit'](_0x567ab7[_0x001c('0x48')][_0x001c('0x31')]);_0x104de7[_0x001c('0x2f')]=qs[_0x001c('0x2f')](_0x567ab7[_0x001c('0x48')][_0x001c('0x2f')]);}_0x104de7[_0x001c('0x4e')]=qs[_0x001c('0x4f')](_0x567ab7['query'][_0x001c('0x4f')]);_0x104de7[_0x001c('0x50')]=qs[_0x001c('0x4a')](_[_0x001c('0x6f')](_0x567ab7['query'],_0x1c7cf6['filters']));_0x104de7[_0x001c('0x50')][_0x001c('0x67')]=_0x4cf9b3['id'];if(_0x567ab7[_0x001c('0x48')][_0x001c('0x51')]){_0x104de7['where']=_[_0x001c('0x52')](_0x104de7[_0x001c('0x50')],{'$or':_[_0x001c('0x47')](_0x104de7[_0x001c('0x4d')],function(_0x1a5a3b){var _0x39380a={};_0x39380a[_0x1a5a3b]={'$like':'%'+_0x567ab7['query']['filter']+'%'};return _0x39380a;})});}_0x104de7=_[_0x001c('0x52')]({},_0x104de7,_0x567ab7['options']);return db[_0x001c('0x68')][_0x001c('0x32')]({'where':_0x104de7[_0x001c('0x50')]})[_0x001c('0x37')](function(_0x2bafa4){_0x1ac204[_0x001c('0x32')]=_0x2bafa4;if(_0x567ab7[_0x001c('0x48')][_0x001c('0x55')]){_0x104de7[_0x001c('0x56')]=[{'all':!![]}];}return db[_0x001c('0x68')][_0x001c('0x57')](_0x104de7);})[_0x001c('0x37')](function(_0x2d4081){_0x1ac204[_0x001c('0x58')]=_0x2d4081;return _0x1ac204;});}})[_0x001c('0x37')](respondWithFilteredResult(_0x2543bf,_0x104de7))[_0x001c('0x59')](handleError(_0x2543bf,null));};exports['removeDispositions']=function(_0x5b524e,_0x30b818,_0x54e8a8){return db['WhatsappAccount']['find']({'where':{'id':_0x5b524e[_0x001c('0x5b')]['id']}})[_0x001c('0x37')](handleEntityNotFound(_0x30b818,null))['then'](function(_0x143ab9){if(_0x143ab9){return _0x143ab9[_0x001c('0x70')](_0x5b524e[_0x001c('0x48')]['ids']);}})[_0x001c('0x37')](respondWithStatusCode(_0x30b818,null))['catch'](handleError(_0x30b818,null));};exports[_0x001c('0x71')]=function(_0x8cdbed,_0x599737,_0x2939c3){if(_0x8cdbed[_0x001c('0x64')]['id']){delete _0x8cdbed['body']['id'];}return db[_0x001c('0x42')]['find']({'where':{'id':_0x8cdbed[_0x001c('0x5b')]['id']}})[_0x001c('0x37')](handleEntityNotFound(_0x599737,null))[_0x001c('0x37')](function(_0x3b1330){if(_0x3b1330){_0x8cdbed['body'][_0x001c('0x67')]=_0x3b1330['id'];return db['CannedAnswer'][_0x001c('0x5d')](_0x8cdbed[_0x001c('0x64')]);}})[_0x001c('0x37')](respondWithResult(_0x599737,null))[_0x001c('0x59')](handleError(_0x599737,null));};exports[_0x001c('0x72')]=function(_0x47767a,_0x431d5e,_0x392dbe){var _0x48e46b={'raw':![],'where':{}};var _0x469d37={};var _0x40aad0={'count':0x0,'rows':[]};return db[_0x001c('0x42')]['findOne']({'where':{'id':_0x47767a[_0x001c('0x5b')]['id']}})['then'](handleEntityNotFound(_0x431d5e,null))['then'](function(_0x293ab7){if(_0x293ab7){_0x469d37['model']=_[_0x001c('0x49')](db['CannedAnswer']['rawAttributes']);_0x469d37[_0x001c('0x48')]=_[_0x001c('0x49')](_0x47767a[_0x001c('0x48')]);_0x469d37[_0x001c('0x4a')]=_['intersection'](_0x469d37[_0x001c('0x46')],_0x469d37['query']);_0x48e46b['attributes']=_[_0x001c('0x4b')](_0x469d37['model'],qs[_0x001c('0x4c')](_0x47767a[_0x001c('0x48')]['fields']));_0x48e46b[_0x001c('0x4d')]=_0x48e46b['attributes'][_0x001c('0x6c')]?_0x48e46b[_0x001c('0x4d')]:_0x469d37[_0x001c('0x46')];if(!_0x47767a[_0x001c('0x48')][_0x001c('0x6d')]('nolimit')){_0x48e46b[_0x001c('0x31')]=qs[_0x001c('0x31')](_0x47767a[_0x001c('0x48')][_0x001c('0x31')]);_0x48e46b[_0x001c('0x2f')]=qs[_0x001c('0x2f')](_0x47767a[_0x001c('0x48')]['offset']);}_0x48e46b[_0x001c('0x4e')]=qs[_0x001c('0x4f')](_0x47767a[_0x001c('0x48')][_0x001c('0x4f')]);_0x48e46b[_0x001c('0x50')]=qs[_0x001c('0x4a')](_[_0x001c('0x6f')](_0x47767a[_0x001c('0x48')],_0x469d37[_0x001c('0x4a')]));_0x48e46b[_0x001c('0x50')]['WhatsappAccountId']=_0x293ab7['id'];if(_0x47767a['query'][_0x001c('0x51')]){_0x48e46b[_0x001c('0x50')]=_['merge'](_0x48e46b[_0x001c('0x50')],{'$or':_[_0x001c('0x47')](_0x48e46b[_0x001c('0x4d')],function(_0x301ca8){var _0x118e26={};_0x118e26[_0x301ca8]={'$like':'%'+_0x47767a['query'][_0x001c('0x51')]+'%'};return _0x118e26;})});}_0x48e46b=_[_0x001c('0x52')]({},_0x48e46b,_0x47767a[_0x001c('0x54')]);return db[_0x001c('0x73')]['count']({'where':_0x48e46b[_0x001c('0x50')]})[_0x001c('0x37')](function(_0x5ac970){_0x40aad0['count']=_0x5ac970;if(_0x47767a[_0x001c('0x48')][_0x001c('0x55')]){_0x48e46b[_0x001c('0x56')]=[{'all':!![]}];}return db['CannedAnswer'][_0x001c('0x57')](_0x48e46b);})[_0x001c('0x37')](function(_0x4d87e0){_0x40aad0[_0x001c('0x58')]=_0x4d87e0;return _0x40aad0;});}})['then'](respondWithFilteredResult(_0x431d5e,_0x48e46b))[_0x001c('0x59')](handleError(_0x431d5e,null));};exports['removeAnswers']=function(_0x379985,_0x525455,_0xff18e0){return db[_0x001c('0x42')]['find']({'where':{'id':_0x379985['params']['id']}})['then'](handleEntityNotFound(_0x525455,null))[_0x001c('0x37')](function(_0x1ef34f){if(_0x1ef34f){return _0x1ef34f[_0x001c('0x74')](_0x379985[_0x001c('0x48')][_0x001c('0x75')]);}})[_0x001c('0x37')](respondWithStatusCode(_0x525455,null))[_0x001c('0x59')](handleError(_0x525455,null));};exports[_0x001c('0x76')]=function(_0x11fd67,_0x1fe852,_0x3e29b8){return db[_0x001c('0x42')][_0x001c('0x5c')]({'where':{'id':_0x11fd67[_0x001c('0x5b')]['id']}})[_0x001c('0x37')](handleEntityNotFound(_0x1fe852,null))[_0x001c('0x37')](function(_0x39a611){if(_0x39a611){return _0x39a611['addAgents'](_0x11fd67['body']['ids'],_[_0x001c('0x77')](_0x11fd67[_0x001c('0x64')],[_0x001c('0x75'),'id'])||{})[_0x001c('0x78')](function(_0x126a3a){for(var _0x247215=0x0;_0x247215<_0x11fd67[_0x001c('0x64')][_0x001c('0x75')][_0x001c('0x6c')];_0x247215+=0x1){socket['emit']('userWhatsappAccount:save',{'UserId':Number(_0x11fd67['body'][_0x001c('0x75')][_0x247215]),'WhatsappAccountId':Number(_0x11fd67[_0x001c('0x5b')]['id'])});}return _0x126a3a;});}})[_0x001c('0x37')](respondWithResult(_0x1fe852,null))[_0x001c('0x59')](handleError(_0x1fe852,null));};exports[_0x001c('0x79')]=function(_0x2213fd,_0x3ab0d0,_0x1c8feb){return db[_0x001c('0x42')][_0x001c('0x5c')]({'where':{'id':_0x2213fd['params']['id']}})[_0x001c('0x37')](handleEntityNotFound(_0x3ab0d0,null))[_0x001c('0x37')](function(_0x426dd2){if(_0x426dd2){return _0x426dd2[_0x001c('0x79')](_0x2213fd[_0x001c('0x48')][_0x001c('0x75')])[_0x001c('0x37')](function(){if(_[_0x001c('0x7a')](_0x2213fd['query']['ids'])){for(var _0x1becd0=0x0;_0x1becd0<_0x2213fd[_0x001c('0x48')]['ids'][_0x001c('0x6c')];_0x1becd0+=0x1){socket['emit'](_0x001c('0x7b'),{'UserId':Number(_0x2213fd['query'][_0x001c('0x75')][_0x1becd0]),'WhatsappAccountId':Number(_0x2213fd[_0x001c('0x5b')]['id'])});}}else{socket[_0x001c('0x7c')](_0x001c('0x7b'),{'UserId':Number(_0x2213fd[_0x001c('0x48')][_0x001c('0x75')]),'WhatsappAccountId':Number(_0x2213fd[_0x001c('0x5b')]['id'])});}});}})[_0x001c('0x37')](respondWithStatusCode(_0x3ab0d0,null))['catch'](handleError(_0x3ab0d0,null));};exports[_0x001c('0x7d')]=function(_0x41cd40,_0x539874,_0x223987){var _0x5fa024={};var _0x3708a4={};var _0x4c8aad;var _0x5d04e0;return db['WhatsappAccount']['findOne']({'where':{'id':_0x41cd40['params']['id']}})[_0x001c('0x37')](handleEntityNotFound(_0x539874,null))[_0x001c('0x37')](function(_0x48f1b9){if(_0x48f1b9){_0x4c8aad=_0x48f1b9;_0x3708a4[_0x001c('0x46')]=_[_0x001c('0x49')](db[_0x001c('0x7e')]['rawAttributes']);_0x3708a4[_0x001c('0x48')]=_['keys'](_0x41cd40[_0x001c('0x48')]);_0x3708a4[_0x001c('0x4a')]=_[_0x001c('0x4b')](_0x3708a4['model'],_0x3708a4[_0x001c('0x48')]);_0x5fa024[_0x001c('0x4d')]=_[_0x001c('0x4b')](_0x3708a4['model'],qs[_0x001c('0x4c')](_0x41cd40[_0x001c('0x48')][_0x001c('0x4c')]));_0x5fa024['attributes']=_0x5fa024['attributes'][_0x001c('0x6c')]?_0x5fa024['attributes']:_0x3708a4[_0x001c('0x46')];_0x5fa024['order']=qs[_0x001c('0x4f')](_0x41cd40[_0x001c('0x48')][_0x001c('0x4f')]);_0x5fa024[_0x001c('0x50')]=qs[_0x001c('0x4a')](_[_0x001c('0x6f')](_0x41cd40[_0x001c('0x48')],_0x3708a4[_0x001c('0x4a')]));if(_0x41cd40[_0x001c('0x48')]['filter']){_0x5fa024['where']=_[_0x001c('0x52')](_0x5fa024[_0x001c('0x50')],{'$or':_[_0x001c('0x47')](_0x5fa024[_0x001c('0x4d')],function(_0x1ebc10){var _0x50858e={};_0x50858e[_0x1ebc10]={'$like':'%'+_0x41cd40[_0x001c('0x48')][_0x001c('0x51')]+'%'};return _0x50858e;})});}_0x5fa024=_[_0x001c('0x52')]({},_0x5fa024,_0x41cd40[_0x001c('0x54')]);return _0x4c8aad[_0x001c('0x7d')](_0x5fa024);}})[_0x001c('0x37')](function(_0x31be20){if(_0x31be20){_0x5d04e0=_0x31be20[_0x001c('0x6c')];if(!_0x41cd40[_0x001c('0x48')][_0x001c('0x6d')](_0x001c('0x6e'))){_0x5fa024[_0x001c('0x31')]=qs[_0x001c('0x31')](_0x41cd40[_0x001c('0x48')][_0x001c('0x31')]);_0x5fa024['offset']=qs[_0x001c('0x2f')](_0x41cd40[_0x001c('0x48')][_0x001c('0x2f')]);}return _0x4c8aad['getAgents'](_0x5fa024);}})['then'](function(_0x7304d){if(_0x7304d){return _0x7304d?{'count':_0x5d04e0,'rows':_0x7304d}:null;}})[_0x001c('0x37')](respondWithResult(_0x539874,null))['catch'](handleError(_0x539874,null));};exports[_0x001c('0x7f')]=function(_0x58f0db,_0x4f12fc,_0x27b6d7){return db[_0x001c('0x42')]['findOne']({'where':{'id':_0x58f0db[_0x001c('0x5b')]['id']}})[_0x001c('0x37')](handleEntityNotFound(_0x4f12fc,null))['then'](function(_0x589f90){if(_0x589f90){return db[_0x001c('0x80')][_0x001c('0x81')](function(_0x4849c9){return db[_0x001c('0x82')][_0x001c('0x3b')]({'where':{'WhatsappAccountId':_0x58f0db[_0x001c('0x5b')]['id']},'transaction':_0x4849c9})[_0x001c('0x37')](function(_0x5c9a99){var _0x468085=_[_0x001c('0x47')](_0x58f0db['body'],function(_0x1426f6){_0x1426f6['WhatsappAccountId']=_0x58f0db[_0x001c('0x5b')]['id'];return _0x1426f6;});return db[_0x001c('0x82')][_0x001c('0x83')](_0x468085,{'transaction':_0x4849c9});});})[_0x001c('0x37')](function(){return db[_0x001c('0x82')][_0x001c('0x84')]({'where':{'WhatsappAccountId':_0x58f0db[_0x001c('0x5b')]['id']},'order':_0x001c('0x85')});});}})[_0x001c('0x37')](respondWithResult(_0x4f12fc,null))[_0x001c('0x59')](handleError(_0x4f12fc,null));};exports[_0x001c('0x86')]=function(_0x1901c2,_0x2403d6,_0x25c382){var _0xbfef08={};var _0x173481={};var _0x1f9769;var _0x72ce33;return db[_0x001c('0x42')][_0x001c('0x6a')]({'where':{'id':_0x1901c2[_0x001c('0x5b')]['id']}})[_0x001c('0x37')](handleEntityNotFound(_0x2403d6,null))[_0x001c('0x37')](function(_0x56979d){if(_0x56979d){_0x1f9769=_0x56979d;_0x173481[_0x001c('0x46')]=_['keys'](db[_0x001c('0x82')][_0x001c('0x6b')]);_0x173481['query']=_[_0x001c('0x49')](_0x1901c2[_0x001c('0x48')]);_0x173481[_0x001c('0x4a')]=_['intersection'](_0x173481[_0x001c('0x46')],_0x173481['query']);_0xbfef08[_0x001c('0x4d')]=_[_0x001c('0x4b')](_0x173481['model'],qs[_0x001c('0x4c')](_0x1901c2[_0x001c('0x48')]['fields']));_0xbfef08['attributes']=_0xbfef08[_0x001c('0x4d')][_0x001c('0x6c')]?_0xbfef08['attributes']:_0x173481[_0x001c('0x46')];_0xbfef08['order']=qs[_0x001c('0x4f')](_0x1901c2['query'][_0x001c('0x4f')]);_0xbfef08['where']=qs[_0x001c('0x4a')](_[_0x001c('0x6f')](_0x1901c2[_0x001c('0x48')],_0x173481[_0x001c('0x4a')]));if(_0x1901c2[_0x001c('0x48')][_0x001c('0x51')]){_0xbfef08[_0x001c('0x50')]=_[_0x001c('0x52')](_0xbfef08[_0x001c('0x50')],{'$or':_[_0x001c('0x47')](_0xbfef08[_0x001c('0x4d')],function(_0x2ddec9){var _0x1ff899={};_0x1ff899[_0x2ddec9]={'$like':'%'+_0x1901c2[_0x001c('0x48')][_0x001c('0x51')]+'%'};return _0x1ff899;})});}_0xbfef08=_['merge']({},_0xbfef08,_0x1901c2[_0x001c('0x54')]);return _0x1f9769['getApplications'](_0xbfef08);}})[_0x001c('0x37')](function(_0x2903db){if(_0x2903db){_0x72ce33=_0x2903db[_0x001c('0x6c')];if(!_0x1901c2[_0x001c('0x48')][_0x001c('0x6d')]('nolimit')){_0xbfef08[_0x001c('0x31')]=qs[_0x001c('0x31')](_0x1901c2['query'][_0x001c('0x31')]);_0xbfef08['offset']=qs[_0x001c('0x2f')](_0x1901c2[_0x001c('0x48')][_0x001c('0x2f')]);}return _0x1f9769[_0x001c('0x86')](_0xbfef08);}})[_0x001c('0x37')](function(_0x157c22){if(_0x157c22){return _0x157c22?{'count':_0x72ce33,'rows':_0x157c22}:null;}})[_0x001c('0x37')](respondWithResult(_0x2403d6,null))['catch'](handleError(_0x2403d6,null));};exports[_0x001c('0x87')]=function(_0x554543,_0x1cf4dc,_0x490103){var _0x58c76d={'channel':_0x001c('0x88')};var _0x526b7b=[];var _0x1c2aef=[];var _0xfbbf6e={};return db[_0x001c('0x42')][_0x001c('0x5c')]({'where':{'id':_0x554543[_0x001c('0x5b')]['id']},'include':[{'model':db[_0x001c('0x82')],'as':'Applications'}]})[_0x001c('0x37')](handleEntityNotFound(_0x1cf4dc,null))[_0x001c('0x37')](function(_0xa05856){_0x58c76d[_0x001c('0x89')]=_0xa05856;if(_0x58c76d[_0x001c('0x89')]&&_0x58c76d['account']['type']===_0x001c('0x8a')&&_0x554543['body'][_0x001c('0x8b')]&&_0x554543[_0x001c('0x64')][_0x001c('0x8b')][0x0][_0x001c('0x8c')]===_0x001c('0x8d')){if(_0x554543['body'][_0x001c('0x8b')][0x0][_0x001c('0x8c')]!==_0x001c('0x8d'))return;return db[_0x001c('0x8e')][_0x001c('0x36')]({'read':!![],'readAt':_0x554543['body']['statuses'][0x0][_0x001c('0x8f')]},{'where':{'messageId':_0x554543['body'][_0x001c('0x8b')][0x0]['message_id']},'individualHooks':!![]})[_0x001c('0x37')](function(_0x247b9a){return _0x1cf4dc[_0x001c('0x2c')](0xc8)[_0x001c('0x2e')](_0x247b9a);});}_0x58c76d[_0x001c('0x90')]=_[_0x001c('0x91')](_0xa05856[_0x001c('0x92')],[_0x001c('0x85')],['asc']);if(_0x58c76d[_0x001c('0x89')]['Applications']){delete _0x58c76d['account']['Applications'];}return db[_0x001c('0x93')][_0x001c('0x65')]()[_0x001c('0x37')](function(_0x1fc211){if(!_0x1fc211){throw new db[(_0x001c('0x94'))]['ValidationError'](_0x001c('0x95'));}_0x526b7b=_[_0x001c('0x96')](_['keys'](_0x1fc211),[_0x001c('0x97'),_0x001c('0x98')]);_0x1c2aef=_['difference'](_[_0x001c('0x49')](_0x1fc211),[_0x001c('0x97'),_0x001c('0x98'),_0x001c('0x99'),_0x001c('0x9a')]);_0x58c76d[_0x001c('0x64')]={'mapKey':_0x001c('0x9b')};if(_0x58c76d[_0x001c('0x89')]&&_0x58c76d[_0x001c('0x89')][_0x001c('0x44')]==='twilio'){_0x58c76d['body']['from']=_0x554543[_0x001c('0x64')][_0x001c('0x9c')][_0x001c('0x9d')]('whatsapp:','');_0x58c76d[_0x001c('0x64')][_0x001c('0x64')]=_0x554543['body'][_0x001c('0x9e')];_0x58c76d[_0x001c('0x64')]['messageId']=_0x554543['body'][_0x001c('0x9f')];}if(_0x58c76d[_0x001c('0x89')]&&_0x58c76d[_0x001c('0x89')][_0x001c('0x44')]===_0x001c('0x8a')){_0x58c76d[_0x001c('0x64')][_0x001c('0xa0')]=_0x554543['body'][_0x001c('0xa1')][0x0][_0x001c('0xa0')];_0x58c76d[_0x001c('0x64')]['body']=_0x554543[_0x001c('0x64')][_0x001c('0xa1')][0x0]['message'][_0x001c('0x64')];_0x58c76d[_0x001c('0x64')][_0x001c('0xa2')]=_0x554543[_0x001c('0x64')]['notifications'][0x0][_0x001c('0xa3')];}if(_0x58c76d[_0x001c('0x64')]['id']){delete _0x58c76d[_0x001c('0x64')]['id'];}if(_[_0x001c('0xa4')](_0x58c76d[_0x001c('0x64')]['from'])){throw new db[(_0x001c('0x94'))][(_0x001c('0xa5'))](_0x001c('0xa6'));}if(_[_0x001c('0xa4')](_0x58c76d[_0x001c('0x64')][_0x001c('0x64')])||_0x58c76d[_0x001c('0x64')][_0x001c('0x64')]===''){throw new db[(_0x001c('0x94'))][(_0x001c('0xa5'))](_0x001c('0xa7'));}if(_[_0x001c('0xa4')](_0x58c76d[_0x001c('0x64')][_0x001c('0xa8')])){throw new db[(_0x001c('0x94'))][(_0x001c('0xa5'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1c2aef);}if(!_[_0x001c('0xa9')](_0x1c2aef,_0x58c76d[_0x001c('0x64')][_0x001c('0xa8')])){throw new db[(_0x001c('0x94'))][(_0x001c('0xa5'))](_0x001c('0xaa')+_0x1c2aef);}_0xfbbf6e[_0x58c76d[_0x001c('0x64')][_0x001c('0xa8')]]=_0x58c76d[_0x001c('0x64')]['from'];return db[_0x001c('0xab')]['find']({'where':{'id':_0x58c76d['account'][_0x001c('0x9a')]},'include':[{'model':db['CmContact'],'as':_0x001c('0xac'),'where':_0xfbbf6e,'limit':0x1,'order':[[_0x001c('0x98'),_0x001c('0xad')]]}]});})['then'](handleEntityNotFound(_0x1cf4dc,null))[_0x001c('0x37')](function(_0x2cd1c1){if(_0x2cd1c1){_0x58c76d[_0x001c('0xae')]=_['omit'](_0x2cd1c1,[_0x001c('0xac')]);if(_0x2cd1c1['Contacts']['length']){return _0x2cd1c1['Contacts'][0x0];}var _0x3e9518=_[_0x001c('0xaf')](_0x58c76d['body'],{'firstName':_0x58c76d[_0x001c('0x64')][_0x001c('0xa0')],'ListId':_0x2cd1c1['id']});_0x3e9518[_0x58c76d[_0x001c('0x64')][_0x001c('0xa8')]]=_0x58c76d[_0x001c('0x64')][_0x001c('0xa0')];return db[_0x001c('0x93')][_0x001c('0x5d')](_0x3e9518,{'fields':_0x526b7b,'raw':!![]});}})[_0x001c('0x37')](handleEntityNotFound(_0x1cf4dc,null))[_0x001c('0x37')](function(_0x4a68b8){if(_0x4a68b8){_0x58c76d[_0x001c('0xb0')]=_0x4a68b8;var _0x1fdbf0={'ContactId':_0x4a68b8['id'],'phone':_0x58c76d[_0x001c('0x64')][_0x001c('0xa0')],'WhatsappAccountId':_0x554543[_0x001c('0x5b')]['id']};var _0x4cc3c0={'ContactId':_0x4a68b8['id'],'WhatsappAccountId':_0x554543[_0x001c('0x5b')]['id'],'closed':![]};return db[_0x001c('0xb1')][_0x001c('0x5c')]({'where':_0x4cc3c0})[_0x001c('0x37')](function(_0x57b48a){if(_0x57b48a){return[_0x57b48a,![]];}return db[_0x001c('0xb1')][_0x001c('0x5d')](_0x1fdbf0)[_0x001c('0x37')](function(_0x390424){return[_0x390424,!![]];});});}})[_0x001c('0x78')](function(_0x17e612,_0x1ad88a){_0x58c76d[_0x001c('0xb2')]=_0x17e612[_0x001c('0x38')]({'plain':!![]});_0x58c76d[_0x001c('0xb2')]['created']=![];if(_0x1ad88a){if(_0x58c76d[_0x001c('0x89')]['autoclose']){_0x58c76d[_0x001c('0x90')]['push']({'id':0x0,'priority':_0x58c76d[_0x001c('0x90')][_0x001c('0x6c')]+0x1,'app':_0x001c('0xb3'),'appdata':'unmanaged','interval':_0x001c('0xb4')});}_0x58c76d[_0x001c('0xb2')][_0x001c('0xb5')]=!![];}return db[_0x001c('0x8e')][_0x001c('0x5d')]({'phone':_0x58c76d[_0x001c('0x64')][_0x001c('0xa0')],'messageId':_0x58c76d['body'][_0x001c('0xa2')],'body':_0x58c76d[_0x001c('0x64')][_0x001c('0x64')],'WhatsappAccountId':_0x554543['params']['id'],'WhatsappInteractionId':_0x17e612['id'],'direction':'in','ContactId':_0x17e612[_0x001c('0xb6')],'AttachmentId':_0x58c76d['body'][_0x001c('0xb7')]});})[_0x001c('0x37')](function(_0x65e71){_0x58c76d[_0x001c('0x29')]=_0x65e71;if(_0x58c76d[_0x001c('0xb2')][_0x001c('0xb8')]){return db[_0x001c('0x7e')][_0x001c('0x5c')]({'attributes':['id',_0x001c('0x3d')],'where':{'id':_0x58c76d[_0x001c('0xb2')][_0x001c('0xb8')]}})[_0x001c('0x37')](function(_0x45f625){if(_0x45f625){_0x58c76d['applications'][_0x001c('0xb9')]({'id':0x0,'priority':0x0,'app':_0x001c('0xba'),'appdata':_0x45f625['name']+','+(_0x58c76d[_0x001c('0x89')][_0x001c('0xbb')]||0xa),'interval':_0x001c('0xb4')});}return respondWithRpcPromise(_0x001c('0xbc'),_0x001c('0xbd'),_0x58c76d);});}return respondWithRpcPromise(_0x001c('0xbc'),_0x001c('0xbd'),_0x58c76d);})[_0x001c('0x37')](function(_0x2b6c49){if(_0x2b6c49){var _0x595633=0xc8;var _0xe6f4b0=_0x001c('0xbe');logger[_0x001c('0x21')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0xe6f4b0,_0x595633,_0x001c('0xbf'));logger['debug']('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0xe6f4b0,_0x595633,_0x001c('0xbf'),JSON[_0x001c('0x26')](_0x2b6c49));if(_0x58c76d[_0x001c('0x89')]['type']===_0x001c('0xc0')){return _0x1cf4dc[_0x001c('0x2c')](_0x595633)[_0x001c('0x33')](_0x001c('0xc1'),'text/xml')['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x1cf4dc['status'](_0x595633)['json'](_0x2b6c49);}}});})['catch'](handleError(_0x1cf4dc,null));};exports['send']=function(_0x78906d,_0x938999,_0x5041fe){var _0xc65ec4,_0xfe10be,_0x16b6a8;if(_[_0x001c('0xa4')](_0x78906d[_0x001c('0x64')]['body'])||_0x78906d[_0x001c('0x64')][_0x001c('0x64')]===''){throw new db['Sequelize'][(_0x001c('0xa5'))](_0x001c('0xa7'));}if(_[_0x001c('0xa4')](_0x78906d[_0x001c('0x64')]['to'])){throw new db[(_0x001c('0x94'))][(_0x001c('0xa5'))](_0x001c('0xc2'));}_0xc65ec4=_0x78906d[_0x001c('0x64')]['to'];return db[_0x001c('0x42')]['find']({'where':{'id':_0x78906d[_0x001c('0x5b')]['id']},'include':[{'model':db[_0x001c('0xab')],'as':_0x001c('0xc3'),'include':[{'model':db['CmContact'],'as':_0x001c('0xac'),'where':{'mobile':_0xc65ec4},'limit':0x1,'order':[[_0x001c('0x98'),'DESC']]}]}]})[_0x001c('0x37')](handleEntityNotFound(_0x938999,null))[_0x001c('0x37')](function(_0x13ff7d){if(_0x13ff7d&&_0x13ff7d[_0x001c('0xc3')]){_0xfe10be=_0x13ff7d[_0x001c('0x38')]({'plain':!![]});if(_0xfe10be[_0x001c('0xc3')]&&_0xfe10be[_0x001c('0xc3')][_0x001c('0xac')][_0x001c('0x6c')]){return _0xfe10be['List'][_0x001c('0xac')][0x0];}return db[_0x001c('0x93')][_0x001c('0x5d')](_['defaults'](_0x78906d[_0x001c('0x64')],{'firstName':_0xc65ec4,'mobile':_0xc65ec4,'phone':_0xc65ec4,'ListId':_0xfe10be[_0x001c('0x9a')]}));}})['then'](handleEntityNotFound(_0x938999,null))[_0x001c('0x37')](function(_0x32af41){if(_0x32af41){_0x16b6a8=_0x32af41;return db[_0x001c('0xb1')][_0x001c('0x5c')]({'where':{'ContactId':_0x16b6a8['id'],'closed':![],'WhatsappAccountId':_0xfe10be['id']}})[_0x001c('0x37')](function(_0xfd2e5e){if(_0xfd2e5e){return[_0xfd2e5e,![]];}return db[_0x001c('0xb1')][_0x001c('0x5d')]({'UserId':_0x78906d['user']['id'],'ContactId':_0x16b6a8['id'],'WhatsappAccountId':_0xfe10be['id'],'phone':_0xc65ec4,'firstMsgDirection':'out','Messages':[_[_0x001c('0x52')](_0x78906d['body'],{'read':![],'body':_0x78906d[_0x001c('0x64')]['body'],'phone':_0xc65ec4,'WhatsappAccountId':_0xfe10be['id'],'UserId':_0x78906d[_0x001c('0x5e')]['id'],'ContactId':_0x16b6a8['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x001c('0xc4')}]})[_0x001c('0x37')](function(_0x305b7e){return[_0x305b7e,!![]];});});}})[_0x001c('0x78')](function(_0x6deefd,_0x2749da){if(_0x2749da){return _0x6deefd;}return db['WhatsappMessage'][_0x001c('0x5d')](_['merge'](_0x78906d[_0x001c('0x64')],{'read':![],'body':_0x78906d[_0x001c('0x64')][_0x001c('0x64')],'phone':_0xc65ec4,'WhatsappAccountId':_0xfe10be['id'],'WhatsappInteractionId':_0x6deefd['id'],'UserId':_0x78906d[_0x001c('0x5e')]['id'],'ContactId':_0x16b6a8['id']}))[_0x001c('0x37')](function(_0x240d77){_0x6deefd[_0x001c('0xc5')][_0x001c('0xc4')]=[];_0x6deefd['dataValues'][_0x001c('0xc4')][_0x001c('0xc6')](_0x240d77[_0x001c('0xc5')]);return _0x6deefd;});})[_0x001c('0x37')](respondWithResult(_0x938999,null))[_0x001c('0x59')](handleError(_0x938999,null));};
\ No newline at end of file
+var _0x45d9=['from','From','replace','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','Contacts','list','contact','WhatsappInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','CmList','List','DESC','out','dataValues','Messages','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','http','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','get','destroy','name','send','index','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','Pause','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','WhatsappAccounts','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','WhatsappAccountId','Disposition','findOne','nolimit','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','User','getAgents','addApplications','transaction','WhatsappApplication','bulkCreate','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','account','applications','orderBy','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio'];(function(_0x252db9,_0x3434b2){var _0x37c009=function(_0x1839ac){while(--_0x1839ac){_0x252db9['push'](_0x252db9['shift']());}};_0x37c009(++_0x3434b2);}(_0x45d9,0x1b0));var _0x945d=function(_0xf643ed,_0x481403){_0xf643ed=_0xf643ed-0x0;var _0x28c242=_0x45d9[_0xf643ed];return _0x28c242;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x945d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x945d('0x1'));var rp=require(_0x945d('0x2'));var moment=require(_0x945d('0x3'));var BPromise=require(_0x945d('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x945d('0x5'));var sox=require(_0x945d('0x6'));var csv=require(_0x945d('0x7'));var ejs=require(_0x945d('0x8'));var fs=require('fs');var fs_extra=require(_0x945d('0x9'));var _=require(_0x945d('0xa'));var squel=require(_0x945d('0xb'));var crypto=require('crypto');var jsforce=require(_0x945d('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x945d('0xd'));var Papa=require(_0x945d('0xe'));var Redis=require(_0x945d('0xf'));var authService=require(_0x945d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x945d('0x11'));var hardwareService=require(_0x945d('0x12'));var logger=require(_0x945d('0x13'))(_0x945d('0x14'));var utils=require(_0x945d('0x15'));var config=require(_0x945d('0x16'));var licenseUtil=require(_0x945d('0x17'));var db=require(_0x945d('0x18'))['db'];config[_0x945d('0x19')]=_[_0x945d('0x1a')](config[_0x945d('0x19')],{'host':_0x945d('0x1b'),'port':0x18eb});var socket=require(_0x945d('0x1c'))(new Redis(config[_0x945d('0x19')]));require(_0x945d('0x1d'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x945d('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x4c75ae,_0x30a0e4,_0x4d8028,_0x59c513){return new BPromise(function(_0x24cf0c,_0x11006c){var _0x467287=_0x59c513||client;return _0x467287[_0x945d('0x1f')](_0x4c75ae,_0x4d8028)[_0x945d('0x20')](function(_0xeb13fc){logger['info'](_0x945d('0x21'),_0x30a0e4,_0x945d('0x22'));logger[_0x945d('0x23')](_0x945d('0x24'),_0x30a0e4,'request\x20sent',JSON[_0x945d('0x25')](_0xeb13fc));if(_0xeb13fc[_0x945d('0x26')]){if(_0xeb13fc[_0x945d('0x26')]['code']===0x1f4){logger[_0x945d('0x26')](_0x945d('0x21'),_0x30a0e4,_0xeb13fc[_0x945d('0x26')][_0x945d('0x27')]);return _0x11006c(_0xeb13fc[_0x945d('0x26')][_0x945d('0x27')]);}logger[_0x945d('0x26')](_0x945d('0x21'),_0x30a0e4,_0xeb13fc[_0x945d('0x26')][_0x945d('0x27')]);return _0x24cf0c(_0xeb13fc[_0x945d('0x26')][_0x945d('0x27')]);}else{logger['info'](_0x945d('0x21'),_0x30a0e4,_0x945d('0x22'));_0x24cf0c(_0xeb13fc[_0x945d('0x28')][_0x945d('0x27')]);}})[_0x945d('0x29')](function(_0x3f7cf6){logger['error'](_0x945d('0x21'),_0x30a0e4,_0x3f7cf6);_0x11006c(_0x3f7cf6);});});}function respondWithStatusCode(_0xd85e9f,_0x4e83f1){_0x4e83f1=_0x4e83f1||0xcc;return function(_0x2e664e){if(_0x2e664e){return _0xd85e9f[_0x945d('0x2a')](_0x4e83f1);}return _0xd85e9f[_0x945d('0x2b')](_0x4e83f1)[_0x945d('0x2c')]();};}function respondWithResult(_0x109522,_0x4b8f91){_0x4b8f91=_0x4b8f91||0xc8;return function(_0x5cef07){if(_0x5cef07){return _0x109522[_0x945d('0x2b')](_0x4b8f91)['json'](_0x5cef07);}};}function respondWithFilteredResult(_0x27f400,_0x2a8032){return function(_0x58349d){if(_0x58349d){var _0x120468=typeof _0x2a8032[_0x945d('0x2d')]===_0x945d('0x2e')&&typeof _0x2a8032[_0x945d('0x2f')]===_0x945d('0x2e');var _0x3aae24=_0x58349d[_0x945d('0x30')];var _0x2326ff=_0x120468?0x0:_0x2a8032[_0x945d('0x2d')];var _0x584c13=_0x120468?_0x58349d[_0x945d('0x30')]:_0x2a8032[_0x945d('0x2d')]+_0x2a8032[_0x945d('0x2f')];var _0x2554dc;if(_0x584c13>=_0x3aae24){_0x584c13=_0x3aae24;_0x2554dc=0xc8;}else{_0x2554dc=0xce;}_0x27f400[_0x945d('0x2b')](_0x2554dc);return _0x27f400[_0x945d('0x31')]('Content-Range',_0x2326ff+'-'+_0x584c13+'/'+_0x3aae24)[_0x945d('0x32')](_0x58349d);}return null;};}function patchUpdates(_0x150376){return function(_0x556466){try{jsonpatch[_0x945d('0x33')](_0x556466,_0x150376,!![]);}catch(_0x34ef4c){return BPromise[_0x945d('0x34')](_0x34ef4c);}return _0x556466[_0x945d('0x35')]();};}function saveUpdates(_0x18de46,_0x4c7abf){return function(_0x4163c3){if(_0x4163c3){return _0x4163c3[_0x945d('0x36')](_0x18de46)['then'](function(_0x353a51){return _0x353a51;});}return null;};}function removeEntity(_0x9c86e7,_0x46d8f0){return function(_0xc539e2){if(_0xc539e2){return _0xc539e2['destroy']()[_0x945d('0x20')](function(){var _0x3e43e1=_0xc539e2[_0x945d('0x37')]({'plain':!![]});var _0x43e902='WhatsappAccounts';return db['UserProfileResource'][_0x945d('0x38')]({'where':{'type':_0x43e902,'resourceId':_0x3e43e1['id']}})[_0x945d('0x20')](function(){return _0xc539e2;});})[_0x945d('0x20')](function(){_0x9c86e7[_0x945d('0x2b')](0xcc)[_0x945d('0x2c')]();});}};}function handleEntityNotFound(_0x5ed711,_0x7aebe3){return function(_0x17cdff){if(!_0x17cdff){_0x5ed711[_0x945d('0x2a')](0x194);}return _0x17cdff;};}function handleError(_0x2cddd9,_0x1476db){_0x1476db=_0x1476db||0x1f4;return function(_0x477fc0){logger[_0x945d('0x26')](_0x477fc0['stack']);if(_0x477fc0[_0x945d('0x39')]){delete _0x477fc0[_0x945d('0x39')];}_0x2cddd9[_0x945d('0x2b')](_0x1476db)[_0x945d('0x3a')](_0x477fc0);};}exports[_0x945d('0x3b')]=function(_0x1ae2b8,_0x442210){var _0x3a2309={'include':[{'model':db['Pause'],'as':_0x945d('0x3c')}]},_0x16a728={},_0x45faf5={'count':0x0,'rows':[]};var _0x1258cf=_[_0x945d('0x3d')](db[_0x945d('0x3e')][_0x945d('0x3f')],function(_0xf08248){return{'name':_0xf08248[_0x945d('0x40')],'type':_0xf08248[_0x945d('0x41')][_0x945d('0x42')]};});_0x16a728[_0x945d('0x43')]=_[_0x945d('0x3d')](_0x1258cf,_0x945d('0x39'));_0x16a728[_0x945d('0x44')]=_['keys'](_0x1ae2b8[_0x945d('0x44')]);_0x16a728[_0x945d('0x45')]=_[_0x945d('0x46')](_0x16a728[_0x945d('0x43')],_0x16a728[_0x945d('0x44')]);_0x3a2309['attributes']=_[_0x945d('0x46')](_0x16a728['model'],qs[_0x945d('0x47')](_0x1ae2b8[_0x945d('0x44')][_0x945d('0x47')]));_0x3a2309['attributes']=_0x3a2309[_0x945d('0x48')][_0x945d('0x49')]?_0x3a2309[_0x945d('0x48')]:_0x16a728[_0x945d('0x43')];if(!_0x1ae2b8[_0x945d('0x44')][_0x945d('0x4a')]('nolimit')){_0x3a2309[_0x945d('0x2f')]=qs[_0x945d('0x2f')](_0x1ae2b8[_0x945d('0x44')][_0x945d('0x2f')]);_0x3a2309['offset']=qs[_0x945d('0x2d')](_0x1ae2b8[_0x945d('0x44')][_0x945d('0x2d')]);}_0x3a2309[_0x945d('0x4b')]=qs[_0x945d('0x4c')](_0x1ae2b8['query'][_0x945d('0x4c')]);_0x3a2309[_0x945d('0x4d')]=qs['filters'](_[_0x945d('0x4e')](_0x1ae2b8[_0x945d('0x44')],_0x16a728[_0x945d('0x45')]),_0x1258cf);if(_0x1ae2b8[_0x945d('0x44')]['filter']){_0x3a2309[_0x945d('0x4d')]=_[_0x945d('0x4f')](_0x3a2309[_0x945d('0x4d')],{'$or':_[_0x945d('0x3d')](_0x1258cf,function(_0x1f4929){if(_0x1f4929[_0x945d('0x41')]!==_0x945d('0x50')){var _0x58af2b={};_0x58af2b[_0x1f4929[_0x945d('0x39')]]={'$like':'%'+_0x1ae2b8[_0x945d('0x44')][_0x945d('0x51')]+'%'};return _0x58af2b;}})});}_0x3a2309=_[_0x945d('0x4f')]({},_0x3a2309,_0x1ae2b8[_0x945d('0x52')]);var _0x4d4650={'where':_0x3a2309['where']};return db[_0x945d('0x3e')][_0x945d('0x30')](_0x4d4650)[_0x945d('0x20')](function(_0x2baf87){_0x45faf5['count']=_0x2baf87;if(_0x1ae2b8[_0x945d('0x44')][_0x945d('0x53')]){_0x3a2309[_0x945d('0x54')]=[{'all':!![]}];}return db[_0x945d('0x3e')][_0x945d('0x55')](_0x3a2309);})[_0x945d('0x20')](function(_0x4748fb){_0x45faf5[_0x945d('0x56')]=_0x4748fb;return _0x45faf5;})['then'](respondWithFilteredResult(_0x442210,_0x3a2309))['catch'](handleError(_0x442210,null));};exports[_0x945d('0x57')]=function(_0x539c29,_0x4a49c2){var _0x2e38c7={'raw':![],'where':{'id':_0x539c29['params']['id']},'include':[{'model':db[_0x945d('0x58')],'as':_0x945d('0x3c')}]},_0x374f1d={};_0x374f1d[_0x945d('0x43')]=_[_0x945d('0x59')](db[_0x945d('0x3e')]['rawAttributes']);_0x374f1d[_0x945d('0x44')]=_['keys'](_0x539c29[_0x945d('0x44')]);_0x374f1d[_0x945d('0x45')]=_['intersection'](_0x374f1d[_0x945d('0x43')],_0x374f1d[_0x945d('0x44')]);_0x2e38c7[_0x945d('0x48')]=_[_0x945d('0x46')](_0x374f1d[_0x945d('0x43')],qs[_0x945d('0x47')](_0x539c29[_0x945d('0x44')]['fields']));_0x2e38c7[_0x945d('0x48')]=_0x2e38c7[_0x945d('0x48')]['length']?_0x2e38c7[_0x945d('0x48')]:_0x374f1d[_0x945d('0x43')];if(_0x539c29[_0x945d('0x44')][_0x945d('0x53')]){_0x2e38c7['include']=[{'all':!![]}];}_0x2e38c7=_[_0x945d('0x4f')]({},_0x2e38c7,_0x539c29[_0x945d('0x52')]);return db[_0x945d('0x3e')][_0x945d('0x5a')](_0x2e38c7)['then'](handleEntityNotFound(_0x4a49c2,null))['then'](respondWithResult(_0x4a49c2,null))[_0x945d('0x29')](handleError(_0x4a49c2,null));};exports[_0x945d('0x5b')]=function(_0x48e859,_0x101725){return db[_0x945d('0x3e')][_0x945d('0x5b')](_0x48e859[_0x945d('0x5c')],{})[_0x945d('0x20')](function(_0xe5d3a5){var _0x53d310=_0x48e859['user'][_0x945d('0x37')]({'plain':!![]});if(!_0x53d310)throw new Error(_0x945d('0x5d'));if(_0x53d310['role']===_0x945d('0x5e')){var _0x1225cc=_0xe5d3a5['get']({'plain':!![]});var _0x5953d4=_0x945d('0x5f');return db[_0x945d('0x60')][_0x945d('0x5a')]({'where':{'name':_0x5953d4,'userProfileId':_0x53d310[_0x945d('0x61')]},'raw':!![]})[_0x945d('0x20')](function(_0x4bdcd3){if(_0x4bdcd3&&_0x4bdcd3[_0x945d('0x62')]===0x0){return db[_0x945d('0x63')][_0x945d('0x5b')]({'name':_0x1225cc['name'],'resourceId':_0x1225cc['id'],'type':_0x4bdcd3[_0x945d('0x39')],'sectionId':_0x4bdcd3['id']},{})[_0x945d('0x20')](function(){return _0xe5d3a5;});}else{return _0xe5d3a5;}})[_0x945d('0x29')](function(_0x4b49b5){logger[_0x945d('0x26')](_0x945d('0x64'),_0x4b49b5);throw _0x4b49b5;});}return _0xe5d3a5;})['then'](respondWithResult(_0x101725,0xc9))[_0x945d('0x29')](handleError(_0x101725,null));};exports[_0x945d('0x36')]=function(_0x505b9c,_0x417d48){if(_0x505b9c[_0x945d('0x5c')]['id']){delete _0x505b9c[_0x945d('0x5c')]['id'];}return db['WhatsappAccount'][_0x945d('0x5a')]({'where':{'id':_0x505b9c['params']['id']},'include':[{'model':db['Pause'],'as':_0x945d('0x3c')}]})['then'](handleEntityNotFound(_0x417d48,null))[_0x945d('0x20')](saveUpdates(_0x505b9c[_0x945d('0x5c')],null))[_0x945d('0x20')](respondWithResult(_0x417d48,null))[_0x945d('0x29')](handleError(_0x417d48,null));};exports[_0x945d('0x38')]=function(_0x5dd021,_0x5ff61d){return db['WhatsappAccount'][_0x945d('0x5a')]({'where':{'id':_0x5dd021[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0x5ff61d,null))[_0x945d('0x20')](removeEntity(_0x5ff61d,null))[_0x945d('0x29')](handleError(_0x5ff61d,null));};exports[_0x945d('0x66')]=function(_0x32a9ba,_0x488893){return db[_0x945d('0x3e')][_0x945d('0x66')]()[_0x945d('0x20')](respondWithResult(_0x488893,null))['catch'](handleError(_0x488893,null));};exports[_0x945d('0x67')]=function(_0x7b3020,_0x36a261,_0x7c2e0e){if(_0x7b3020[_0x945d('0x5c')]['id']){delete _0x7b3020[_0x945d('0x5c')]['id'];}return db[_0x945d('0x3e')]['find']({'where':{'id':_0x7b3020[_0x945d('0x65')]['id']}})['then'](handleEntityNotFound(_0x36a261,null))['then'](function(_0xf40157){if(_0xf40157){_0x7b3020[_0x945d('0x5c')][_0x945d('0x68')]=_0xf40157['id'];return db[_0x945d('0x69')]['create'](_0x7b3020['body']);}})[_0x945d('0x20')](respondWithResult(_0x36a261,null))[_0x945d('0x29')](handleError(_0x36a261,null));};exports['getDispositions']=function(_0x200c34,_0xb07159,_0x2bebdb){var _0x1066d6={'raw':![],'where':{}};var _0x2127c7={};var _0x83ed8={'count':0x0,'rows':[]};return db[_0x945d('0x3e')][_0x945d('0x6a')]({'where':{'id':_0x200c34[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0xb07159,null))[_0x945d('0x20')](function(_0x408e57){if(_0x408e57){_0x2127c7[_0x945d('0x43')]=_[_0x945d('0x59')](db[_0x945d('0x69')][_0x945d('0x3f')]);_0x2127c7[_0x945d('0x44')]=_[_0x945d('0x59')](_0x200c34['query']);_0x2127c7[_0x945d('0x45')]=_['intersection'](_0x2127c7[_0x945d('0x43')],_0x2127c7[_0x945d('0x44')]);_0x1066d6[_0x945d('0x48')]=_[_0x945d('0x46')](_0x2127c7[_0x945d('0x43')],qs['fields'](_0x200c34[_0x945d('0x44')][_0x945d('0x47')]));_0x1066d6['attributes']=_0x1066d6['attributes'][_0x945d('0x49')]?_0x1066d6[_0x945d('0x48')]:_0x2127c7[_0x945d('0x43')];if(!_0x200c34['query'][_0x945d('0x4a')](_0x945d('0x6b'))){_0x1066d6[_0x945d('0x2f')]=qs[_0x945d('0x2f')](_0x200c34[_0x945d('0x44')]['limit']);_0x1066d6[_0x945d('0x2d')]=qs['offset'](_0x200c34[_0x945d('0x44')]['offset']);}_0x1066d6['order']=qs['sort'](_0x200c34['query'][_0x945d('0x4c')]);_0x1066d6[_0x945d('0x4d')]=qs[_0x945d('0x45')](_[_0x945d('0x4e')](_0x200c34[_0x945d('0x44')],_0x2127c7['filters']));_0x1066d6[_0x945d('0x4d')][_0x945d('0x68')]=_0x408e57['id'];if(_0x200c34[_0x945d('0x44')][_0x945d('0x51')]){_0x1066d6[_0x945d('0x4d')]=_[_0x945d('0x4f')](_0x1066d6[_0x945d('0x4d')],{'$or':_[_0x945d('0x3d')](_0x1066d6[_0x945d('0x48')],function(_0x78de2f){var _0x424176={};_0x424176[_0x78de2f]={'$like':'%'+_0x200c34[_0x945d('0x44')]['filter']+'%'};return _0x424176;})});}_0x1066d6=_['merge']({},_0x1066d6,_0x200c34[_0x945d('0x52')]);return db['Disposition'][_0x945d('0x30')]({'where':_0x1066d6[_0x945d('0x4d')]})['then'](function(_0x8cdcea){_0x83ed8['count']=_0x8cdcea;if(_0x200c34[_0x945d('0x44')][_0x945d('0x53')]){_0x1066d6[_0x945d('0x54')]=[{'all':!![]}];}return db[_0x945d('0x69')]['findAll'](_0x1066d6);})[_0x945d('0x20')](function(_0x118714){_0x83ed8[_0x945d('0x56')]=_0x118714;return _0x83ed8;});}})[_0x945d('0x20')](respondWithFilteredResult(_0xb07159,_0x1066d6))[_0x945d('0x29')](handleError(_0xb07159,null));};exports[_0x945d('0x6c')]=function(_0x288868,_0x42ec15,_0x49899a){return db[_0x945d('0x3e')][_0x945d('0x5a')]({'where':{'id':_0x288868[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0x42ec15,null))['then'](function(_0x186705){if(_0x186705){return _0x186705[_0x945d('0x6c')](_0x288868[_0x945d('0x44')][_0x945d('0x6d')]);}})['then'](respondWithStatusCode(_0x42ec15,null))[_0x945d('0x29')](handleError(_0x42ec15,null));};exports[_0x945d('0x6e')]=function(_0x42cfe8,_0x1b87e0,_0x20655e){if(_0x42cfe8[_0x945d('0x5c')]['id']){delete _0x42cfe8[_0x945d('0x5c')]['id'];}return db['WhatsappAccount'][_0x945d('0x5a')]({'where':{'id':_0x42cfe8[_0x945d('0x65')]['id']}})['then'](handleEntityNotFound(_0x1b87e0,null))[_0x945d('0x20')](function(_0x1cbc80){if(_0x1cbc80){_0x42cfe8[_0x945d('0x5c')]['WhatsappAccountId']=_0x1cbc80['id'];return db[_0x945d('0x6f')]['create'](_0x42cfe8[_0x945d('0x5c')]);}})['then'](respondWithResult(_0x1b87e0,null))[_0x945d('0x29')](handleError(_0x1b87e0,null));};exports[_0x945d('0x70')]=function(_0x34605d,_0x12a40f,_0x3f3c7c){var _0x512045={'raw':![],'where':{}};var _0x38cc85={};var _0x8f72fe={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x945d('0x6a')]({'where':{'id':_0x34605d[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0x12a40f,null))[_0x945d('0x20')](function(_0x5d2667){if(_0x5d2667){_0x38cc85['model']=_['keys'](db['CannedAnswer'][_0x945d('0x3f')]);_0x38cc85['query']=_['keys'](_0x34605d[_0x945d('0x44')]);_0x38cc85[_0x945d('0x45')]=_[_0x945d('0x46')](_0x38cc85[_0x945d('0x43')],_0x38cc85[_0x945d('0x44')]);_0x512045[_0x945d('0x48')]=_[_0x945d('0x46')](_0x38cc85[_0x945d('0x43')],qs[_0x945d('0x47')](_0x34605d[_0x945d('0x44')][_0x945d('0x47')]));_0x512045['attributes']=_0x512045[_0x945d('0x48')][_0x945d('0x49')]?_0x512045[_0x945d('0x48')]:_0x38cc85[_0x945d('0x43')];if(!_0x34605d[_0x945d('0x44')][_0x945d('0x4a')](_0x945d('0x6b'))){_0x512045[_0x945d('0x2f')]=qs[_0x945d('0x2f')](_0x34605d[_0x945d('0x44')]['limit']);_0x512045[_0x945d('0x2d')]=qs['offset'](_0x34605d[_0x945d('0x44')][_0x945d('0x2d')]);}_0x512045['order']=qs[_0x945d('0x4c')](_0x34605d[_0x945d('0x44')][_0x945d('0x4c')]);_0x512045['where']=qs[_0x945d('0x45')](_[_0x945d('0x4e')](_0x34605d[_0x945d('0x44')],_0x38cc85[_0x945d('0x45')]));_0x512045[_0x945d('0x4d')][_0x945d('0x68')]=_0x5d2667['id'];if(_0x34605d[_0x945d('0x44')][_0x945d('0x51')]){_0x512045['where']=_[_0x945d('0x4f')](_0x512045[_0x945d('0x4d')],{'$or':_[_0x945d('0x3d')](_0x512045[_0x945d('0x48')],function(_0x3919de){var _0x575eb1={};_0x575eb1[_0x3919de]={'$like':'%'+_0x34605d[_0x945d('0x44')][_0x945d('0x51')]+'%'};return _0x575eb1;})});}_0x512045=_[_0x945d('0x4f')]({},_0x512045,_0x34605d[_0x945d('0x52')]);return db['CannedAnswer']['count']({'where':_0x512045[_0x945d('0x4d')]})[_0x945d('0x20')](function(_0x4c55ac){_0x8f72fe[_0x945d('0x30')]=_0x4c55ac;if(_0x34605d['query'][_0x945d('0x53')]){_0x512045[_0x945d('0x54')]=[{'all':!![]}];}return db['CannedAnswer'][_0x945d('0x55')](_0x512045);})['then'](function(_0x133a0d){_0x8f72fe[_0x945d('0x56')]=_0x133a0d;return _0x8f72fe;});}})[_0x945d('0x20')](respondWithFilteredResult(_0x12a40f,_0x512045))[_0x945d('0x29')](handleError(_0x12a40f,null));};exports[_0x945d('0x71')]=function(_0x39a4a2,_0x2a1543,_0x55ee69){return db['WhatsappAccount'][_0x945d('0x5a')]({'where':{'id':_0x39a4a2[_0x945d('0x65')]['id']}})['then'](handleEntityNotFound(_0x2a1543,null))['then'](function(_0x2b42ac){if(_0x2b42ac){return _0x2b42ac[_0x945d('0x71')](_0x39a4a2['query'][_0x945d('0x6d')]);}})[_0x945d('0x20')](respondWithStatusCode(_0x2a1543,null))['catch'](handleError(_0x2a1543,null));};exports['addAgents']=function(_0x48279e,_0x33f5ad,_0x4144fe){return db[_0x945d('0x3e')][_0x945d('0x5a')]({'where':{'id':_0x48279e[_0x945d('0x65')]['id']}})['then'](handleEntityNotFound(_0x33f5ad,null))[_0x945d('0x20')](function(_0x26e5c1){if(_0x26e5c1){return _0x26e5c1[_0x945d('0x72')](_0x48279e['body'][_0x945d('0x6d')],_[_0x945d('0x73')](_0x48279e[_0x945d('0x5c')],['ids','id'])||{})[_0x945d('0x74')](function(_0x1a1eb8){for(var _0x2495e2=0x0;_0x2495e2<_0x48279e[_0x945d('0x5c')][_0x945d('0x6d')][_0x945d('0x49')];_0x2495e2+=0x1){socket[_0x945d('0x75')](_0x945d('0x76'),{'UserId':Number(_0x48279e[_0x945d('0x5c')][_0x945d('0x6d')][_0x2495e2]),'WhatsappAccountId':Number(_0x48279e[_0x945d('0x65')]['id'])});}return _0x1a1eb8;});}})[_0x945d('0x20')](respondWithResult(_0x33f5ad,null))[_0x945d('0x29')](handleError(_0x33f5ad,null));};exports[_0x945d('0x77')]=function(_0x18dd75,_0xc5b31b,_0x200bcf){return db['WhatsappAccount'][_0x945d('0x5a')]({'where':{'id':_0x18dd75[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0xc5b31b,null))[_0x945d('0x20')](function(_0x5a1127){if(_0x5a1127){return _0x5a1127[_0x945d('0x77')](_0x18dd75[_0x945d('0x44')][_0x945d('0x6d')])[_0x945d('0x20')](function(){if(_[_0x945d('0x78')](_0x18dd75[_0x945d('0x44')]['ids'])){for(var _0x156705=0x0;_0x156705<_0x18dd75['query']['ids'][_0x945d('0x49')];_0x156705+=0x1){socket['emit'](_0x945d('0x79'),{'UserId':Number(_0x18dd75[_0x945d('0x44')]['ids'][_0x156705]),'WhatsappAccountId':Number(_0x18dd75[_0x945d('0x65')]['id'])});}}else{socket['emit'](_0x945d('0x79'),{'UserId':Number(_0x18dd75[_0x945d('0x44')][_0x945d('0x6d')]),'WhatsappAccountId':Number(_0x18dd75[_0x945d('0x65')]['id'])});}});}})['then'](respondWithStatusCode(_0xc5b31b,null))['catch'](handleError(_0xc5b31b,null));};exports['getAgents']=function(_0x21f654,_0xbf1114,_0x259aa4){var _0x30540e={};var _0x132760={};var _0x102f62;var _0x463f3c;return db[_0x945d('0x3e')][_0x945d('0x6a')]({'where':{'id':_0x21f654[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0xbf1114,null))[_0x945d('0x20')](function(_0x38f1a2){if(_0x38f1a2){_0x102f62=_0x38f1a2;_0x132760[_0x945d('0x43')]=_[_0x945d('0x59')](db[_0x945d('0x7a')][_0x945d('0x3f')]);_0x132760[_0x945d('0x44')]=_['keys'](_0x21f654[_0x945d('0x44')]);_0x132760[_0x945d('0x45')]=_[_0x945d('0x46')](_0x132760[_0x945d('0x43')],_0x132760['query']);_0x30540e['attributes']=_[_0x945d('0x46')](_0x132760[_0x945d('0x43')],qs[_0x945d('0x47')](_0x21f654[_0x945d('0x44')]['fields']));_0x30540e[_0x945d('0x48')]=_0x30540e[_0x945d('0x48')][_0x945d('0x49')]?_0x30540e[_0x945d('0x48')]:_0x132760[_0x945d('0x43')];_0x30540e[_0x945d('0x4b')]=qs[_0x945d('0x4c')](_0x21f654[_0x945d('0x44')][_0x945d('0x4c')]);_0x30540e['where']=qs[_0x945d('0x45')](_['pick'](_0x21f654[_0x945d('0x44')],_0x132760[_0x945d('0x45')]));if(_0x21f654[_0x945d('0x44')][_0x945d('0x51')]){_0x30540e[_0x945d('0x4d')]=_['merge'](_0x30540e[_0x945d('0x4d')],{'$or':_[_0x945d('0x3d')](_0x30540e['attributes'],function(_0x27822c){var _0x578b1d={};_0x578b1d[_0x27822c]={'$like':'%'+_0x21f654[_0x945d('0x44')]['filter']+'%'};return _0x578b1d;})});}_0x30540e=_[_0x945d('0x4f')]({},_0x30540e,_0x21f654[_0x945d('0x52')]);return _0x102f62[_0x945d('0x7b')](_0x30540e);}})[_0x945d('0x20')](function(_0xebd4df){if(_0xebd4df){_0x463f3c=_0xebd4df['length'];if(!_0x21f654['query']['hasOwnProperty'](_0x945d('0x6b'))){_0x30540e[_0x945d('0x2f')]=qs[_0x945d('0x2f')](_0x21f654[_0x945d('0x44')]['limit']);_0x30540e['offset']=qs[_0x945d('0x2d')](_0x21f654[_0x945d('0x44')][_0x945d('0x2d')]);}return _0x102f62[_0x945d('0x7b')](_0x30540e);}})[_0x945d('0x20')](function(_0x3f2a52){if(_0x3f2a52){return _0x3f2a52?{'count':_0x463f3c,'rows':_0x3f2a52}:null;}})[_0x945d('0x20')](respondWithResult(_0xbf1114,null))[_0x945d('0x29')](handleError(_0xbf1114,null));};exports[_0x945d('0x7c')]=function(_0x17f358,_0x163d26,_0x9ffdeb){return db[_0x945d('0x3e')][_0x945d('0x6a')]({'where':{'id':_0x17f358[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0x163d26,null))['then'](function(_0x33f0ea){if(_0x33f0ea){return db['sequelize'][_0x945d('0x7d')](function(_0x2b71dd){return db[_0x945d('0x7e')]['destroy']({'where':{'WhatsappAccountId':_0x17f358[_0x945d('0x65')]['id']},'transaction':_0x2b71dd})[_0x945d('0x20')](function(_0x2a0bdc){var _0x44a0c8=_[_0x945d('0x3d')](_0x17f358[_0x945d('0x5c')],function(_0x1f2f05){_0x1f2f05[_0x945d('0x68')]=_0x17f358[_0x945d('0x65')]['id'];return _0x1f2f05;});return db[_0x945d('0x7e')][_0x945d('0x7f')](_0x44a0c8,{'transaction':_0x2b71dd});});})[_0x945d('0x20')](function(){return db['WhatsappApplication'][_0x945d('0x80')]({'where':{'WhatsappAccountId':_0x17f358[_0x945d('0x65')]['id']},'order':_0x945d('0x81')});});}})['then'](respondWithResult(_0x163d26,null))[_0x945d('0x29')](handleError(_0x163d26,null));};exports[_0x945d('0x82')]=function(_0x25a159,_0x31b93c,_0x486c5c){var _0x2641e9={};var _0x26dd86={};var _0x2c44e1;var _0x4fd61d;return db[_0x945d('0x3e')][_0x945d('0x6a')]({'where':{'id':_0x25a159[_0x945d('0x65')]['id']}})[_0x945d('0x20')](handleEntityNotFound(_0x31b93c,null))['then'](function(_0x8a638a){if(_0x8a638a){_0x2c44e1=_0x8a638a;_0x26dd86[_0x945d('0x43')]=_[_0x945d('0x59')](db[_0x945d('0x7e')]['rawAttributes']);_0x26dd86[_0x945d('0x44')]=_['keys'](_0x25a159[_0x945d('0x44')]);_0x26dd86['filters']=_[_0x945d('0x46')](_0x26dd86['model'],_0x26dd86[_0x945d('0x44')]);_0x2641e9[_0x945d('0x48')]=_[_0x945d('0x46')](_0x26dd86[_0x945d('0x43')],qs['fields'](_0x25a159[_0x945d('0x44')]['fields']));_0x2641e9[_0x945d('0x48')]=_0x2641e9[_0x945d('0x48')][_0x945d('0x49')]?_0x2641e9[_0x945d('0x48')]:_0x26dd86[_0x945d('0x43')];_0x2641e9[_0x945d('0x4b')]=qs[_0x945d('0x4c')](_0x25a159[_0x945d('0x44')][_0x945d('0x4c')]);_0x2641e9[_0x945d('0x4d')]=qs[_0x945d('0x45')](_[_0x945d('0x4e')](_0x25a159[_0x945d('0x44')],_0x26dd86[_0x945d('0x45')]));if(_0x25a159[_0x945d('0x44')]['filter']){_0x2641e9['where']=_['merge'](_0x2641e9['where'],{'$or':_['map'](_0x2641e9[_0x945d('0x48')],function(_0x2b681a){var _0x1a6093={};_0x1a6093[_0x2b681a]={'$like':'%'+_0x25a159[_0x945d('0x44')][_0x945d('0x51')]+'%'};return _0x1a6093;})});}_0x2641e9=_[_0x945d('0x4f')]({},_0x2641e9,_0x25a159[_0x945d('0x52')]);return _0x2c44e1[_0x945d('0x82')](_0x2641e9);}})[_0x945d('0x20')](function(_0x578b88){if(_0x578b88){_0x4fd61d=_0x578b88[_0x945d('0x49')];if(!_0x25a159['query'][_0x945d('0x4a')](_0x945d('0x6b'))){_0x2641e9[_0x945d('0x2f')]=qs[_0x945d('0x2f')](_0x25a159[_0x945d('0x44')][_0x945d('0x2f')]);_0x2641e9[_0x945d('0x2d')]=qs['offset'](_0x25a159['query'][_0x945d('0x2d')]);}return _0x2c44e1[_0x945d('0x82')](_0x2641e9);}})[_0x945d('0x20')](function(_0x42fa8d){if(_0x42fa8d){return _0x42fa8d?{'count':_0x4fd61d,'rows':_0x42fa8d}:null;}})[_0x945d('0x20')](respondWithResult(_0x31b93c,null))['catch'](handleError(_0x31b93c,null));};exports[_0x945d('0x83')]=function(_0x199fd0,_0x3acf43,_0x16aeb4){var _0x446ee7={'channel':_0x945d('0x84')};var _0x57acd8=[];var _0x3b6c8b=[];var _0x4c7c40={};return db[_0x945d('0x3e')][_0x945d('0x5a')]({'where':{'id':_0x199fd0[_0x945d('0x65')]['id']},'include':[{'model':db[_0x945d('0x7e')],'as':_0x945d('0x85')}]})['then'](handleEntityNotFound(_0x3acf43,null))[_0x945d('0x20')](function(_0x577401){_0x446ee7[_0x945d('0x86')]=_0x577401;_0x446ee7[_0x945d('0x87')]=_[_0x945d('0x88')](_0x577401[_0x945d('0x85')],[_0x945d('0x81')],['asc']);if(_0x446ee7[_0x945d('0x86')][_0x945d('0x85')]){delete _0x446ee7[_0x945d('0x86')][_0x945d('0x85')];}return db[_0x945d('0x89')][_0x945d('0x66')]();})[_0x945d('0x20')](function(_0x233627){if(!_0x233627){throw new db[(_0x945d('0x8a'))][(_0x945d('0x8b'))]('no\x20available\x20attributes');}_0x57acd8=_[_0x945d('0x8c')](_[_0x945d('0x59')](_0x233627),[_0x945d('0x8d'),_0x945d('0x8e')]);_0x3b6c8b=_['difference'](_['keys'](_0x233627),['createdAt',_0x945d('0x8e'),_0x945d('0x8f'),_0x945d('0x90')]);_0x446ee7[_0x945d('0x5c')]={'mapKey':_0x945d('0x91')};if(_0x446ee7[_0x945d('0x86')][_0x945d('0x41')]&&_0x446ee7[_0x945d('0x86')][_0x945d('0x41')]===_0x945d('0x92')){_0x446ee7[_0x945d('0x5c')][_0x945d('0x93')]=_0x199fd0[_0x945d('0x5c')][_0x945d('0x94')][_0x945d('0x95')]('whatsapp:','');_0x446ee7['body'][_0x945d('0x5c')]=_0x199fd0['body'][_0x945d('0x96')];_0x446ee7[_0x945d('0x5c')][_0x945d('0x97')]=_0x199fd0[_0x945d('0x5c')][_0x945d('0x98')];}if(_0x446ee7[_0x945d('0x5c')]['id']){delete _0x446ee7['body']['id'];}if(_[_0x945d('0x99')](_0x446ee7[_0x945d('0x5c')][_0x945d('0x93')])){throw new db[(_0x945d('0x8a'))]['ValidationError'](_0x945d('0x9a'));}if(_[_0x945d('0x99')](_0x446ee7['body'][_0x945d('0x5c')])||_0x446ee7[_0x945d('0x5c')][_0x945d('0x5c')]===''){throw new db[(_0x945d('0x8a'))][(_0x945d('0x8b'))](_0x945d('0x9b'));}if(_[_0x945d('0x99')](_0x446ee7[_0x945d('0x5c')][_0x945d('0x9c')])){throw new db['Sequelize'][(_0x945d('0x8b'))](_0x945d('0x9d')+_0x3b6c8b);}if(!_[_0x945d('0x9e')](_0x3b6c8b,_0x446ee7[_0x945d('0x5c')][_0x945d('0x9c')])){throw new db[(_0x945d('0x8a'))][(_0x945d('0x8b'))](_0x945d('0x9f')+_0x3b6c8b);}_0x4c7c40[_0x446ee7[_0x945d('0x5c')][_0x945d('0x9c')]]=_0x446ee7[_0x945d('0x5c')][_0x945d('0x93')];return db['CmList'][_0x945d('0x5a')]({'where':{'id':_0x446ee7['account'][_0x945d('0x90')]},'include':[{'model':db['CmContact'],'as':_0x945d('0xa0'),'where':_0x4c7c40,'limit':0x1,'order':[[_0x945d('0x8e'),'DESC']]}]});})['then'](handleEntityNotFound(_0x3acf43,null))[_0x945d('0x20')](function(_0x32dc0c){if(_0x32dc0c){_0x446ee7[_0x945d('0xa1')]=_[_0x945d('0x73')](_0x32dc0c,[_0x945d('0xa0')]);if(_0x32dc0c[_0x945d('0xa0')][_0x945d('0x49')]){return _0x32dc0c['Contacts'][0x0];}var _0x2e146c=_[_0x945d('0x1a')](_0x446ee7[_0x945d('0x5c')],{'firstName':_0x446ee7['body'][_0x945d('0x93')],'ListId':_0x32dc0c['id']});_0x2e146c[_0x446ee7[_0x945d('0x5c')][_0x945d('0x9c')]]=_0x446ee7[_0x945d('0x5c')][_0x945d('0x93')];return db[_0x945d('0x89')][_0x945d('0x5b')](_0x2e146c,{'fields':_0x57acd8,'raw':!![]});}})[_0x945d('0x20')](handleEntityNotFound(_0x3acf43,null))[_0x945d('0x20')](function(_0x31bd6d){if(_0x31bd6d){_0x446ee7[_0x945d('0xa2')]=_0x31bd6d;var _0x562c92={'ContactId':_0x31bd6d['id'],'phone':_0x446ee7['body'][_0x945d('0x93')],'WhatsappAccountId':_0x199fd0['params']['id']};var _0x1215f1={'ContactId':_0x31bd6d['id'],'WhatsappAccountId':_0x199fd0[_0x945d('0x65')]['id'],'closed':![]};return db['WhatsappInteraction']['find']({'where':_0x1215f1})['then'](function(_0x136360){if(_0x136360){return[_0x136360,![]];}return db[_0x945d('0xa3')]['create'](_0x562c92)[_0x945d('0x20')](function(_0x274285){return[_0x274285,!![]];});});}})[_0x945d('0x74')](function(_0x3b4917,_0x46cfe){_0x446ee7[_0x945d('0xa4')]=_0x3b4917[_0x945d('0x37')]({'plain':!![]});_0x446ee7[_0x945d('0xa4')][_0x945d('0xa5')]=![];if(_0x46cfe){if(_0x446ee7[_0x945d('0x86')][_0x945d('0xa6')]){_0x446ee7[_0x945d('0x87')][_0x945d('0xa7')]({'id':0x0,'priority':_0x446ee7[_0x945d('0x87')][_0x945d('0x49')]+0x1,'app':_0x945d('0xa8'),'appdata':_0x945d('0xa9'),'interval':_0x945d('0xaa')});}_0x446ee7[_0x945d('0xa4')][_0x945d('0xa5')]=!![];}return db[_0x945d('0xab')]['create']({'phone':_0x446ee7[_0x945d('0x5c')][_0x945d('0x93')],'messageId':_0x446ee7['body'][_0x945d('0x97')],'body':_0x446ee7[_0x945d('0x5c')][_0x945d('0x5c')],'WhatsappAccountId':_0x199fd0['params']['id'],'WhatsappInteractionId':_0x3b4917['id'],'direction':'in','ContactId':_0x3b4917[_0x945d('0xac')],'AttachmentId':_0x446ee7['body'][_0x945d('0xad')]});})['then'](function(_0x2c19ea){_0x446ee7['message']=_0x2c19ea;if(_0x446ee7[_0x945d('0xa4')][_0x945d('0xae')]){return db[_0x945d('0x7a')]['find']({'attributes':['id',_0x945d('0x39')],'where':{'id':_0x446ee7['interaction'][_0x945d('0xae')]}})[_0x945d('0x20')](function(_0x315dd8){if(_0x315dd8){_0x446ee7['applications'][_0x945d('0xaf')]({'id':0x0,'priority':0x0,'app':_0x945d('0xb0'),'appdata':_0x315dd8[_0x945d('0x39')]+','+(_0x446ee7[_0x945d('0x86')][_0x945d('0xb1')]||0xa),'interval':_0x945d('0xaa')});}return respondWithRpcPromise(_0x945d('0xb2'),_0x945d('0xb3'),_0x446ee7);});}return respondWithRpcPromise(_0x945d('0xb2'),'startRouting',_0x446ee7);})[_0x945d('0x20')](function(_0xb9af18){if(_0xb9af18){var _0x3ca6a2=0xc8;var _0xc0493=_0x945d('0xb4');logger['info'](_0x945d('0x24'),_0xc0493,_0x3ca6a2,_0x945d('0xb5'));logger[_0x945d('0x23')](_0x945d('0xb6'),_0xc0493,_0x3ca6a2,_0x945d('0xb5'),JSON[_0x945d('0x25')](_0xb9af18));if(_0x446ee7[_0x945d('0x86')][_0x945d('0x41')]==='twilio'){return _0x3acf43[_0x945d('0x2b')](_0x3ca6a2)[_0x945d('0x31')](_0x945d('0xb7'),_0x945d('0xb8'))[_0x945d('0x3a')](_0x945d('0xb9'));}else{return _0x3acf43[_0x945d('0x2b')](_0x3ca6a2)['json'](_0xb9af18);}}})[_0x945d('0x29')](handleError(_0x3acf43,null));};exports[_0x945d('0x3a')]=function(_0x2ac8c7,_0x1e50ca,_0x45ebeb){var _0x343000,_0x3abbce,_0x52c577;if(_[_0x945d('0x99')](_0x2ac8c7[_0x945d('0x5c')][_0x945d('0x5c')])||_0x2ac8c7[_0x945d('0x5c')]['body']===''){throw new db[(_0x945d('0x8a'))][(_0x945d('0x8b'))](_0x945d('0x9b'));}if(_[_0x945d('0x99')](_0x2ac8c7[_0x945d('0x5c')]['to'])){throw new db[(_0x945d('0x8a'))][(_0x945d('0x8b'))](_0x945d('0xba'));}_0x343000=_0x2ac8c7[_0x945d('0x5c')]['to'];return db[_0x945d('0x3e')][_0x945d('0x5a')]({'where':{'id':_0x2ac8c7['params']['id']},'include':[{'model':db[_0x945d('0xbb')],'as':_0x945d('0xbc'),'include':[{'model':db['CmContact'],'as':_0x945d('0xa0'),'where':{'mobile':_0x343000},'limit':0x1,'order':[[_0x945d('0x8e'),_0x945d('0xbd')]]}]}]})[_0x945d('0x20')](handleEntityNotFound(_0x1e50ca,null))[_0x945d('0x20')](function(_0x2f9bbd){if(_0x2f9bbd&&_0x2f9bbd[_0x945d('0xbc')]){_0x3abbce=_0x2f9bbd[_0x945d('0x37')]({'plain':!![]});if(_0x3abbce[_0x945d('0xbc')]&&_0x3abbce[_0x945d('0xbc')][_0x945d('0xa0')]['length']){return _0x3abbce[_0x945d('0xbc')][_0x945d('0xa0')][0x0];}return db['CmContact'][_0x945d('0x5b')](_[_0x945d('0x1a')](_0x2ac8c7[_0x945d('0x5c')],{'firstName':_0x343000,'mobile':_0x343000,'phone':_0x343000,'ListId':_0x3abbce[_0x945d('0x90')]}));}})['then'](handleEntityNotFound(_0x1e50ca,null))[_0x945d('0x20')](function(_0x2b5072){if(_0x2b5072){_0x52c577=_0x2b5072;return db['WhatsappInteraction'][_0x945d('0x5a')]({'where':{'ContactId':_0x52c577['id'],'closed':![],'WhatsappAccountId':_0x3abbce['id']}})[_0x945d('0x20')](function(_0x8c0d49){if(_0x8c0d49){return[_0x8c0d49,![]];}return db[_0x945d('0xa3')][_0x945d('0x5b')]({'UserId':_0x2ac8c7['user']['id'],'ContactId':_0x52c577['id'],'WhatsappAccountId':_0x3abbce['id'],'phone':_0x343000,'firstMsgDirection':_0x945d('0xbe'),'Messages':[_['merge'](_0x2ac8c7[_0x945d('0x5c')],{'read':![],'body':_0x2ac8c7[_0x945d('0x5c')]['body'],'phone':_0x343000,'WhatsappAccountId':_0x3abbce['id'],'UserId':_0x2ac8c7['user']['id'],'ContactId':_0x52c577['id']})]},{'include':[{'model':db[_0x945d('0xab')],'as':'Messages'}]})[_0x945d('0x20')](function(_0x431cf1){return[_0x431cf1,!![]];});});}})[_0x945d('0x74')](function(_0x546787,_0x48575c){if(_0x48575c){return _0x546787;}return db[_0x945d('0xab')][_0x945d('0x5b')](_['merge'](_0x2ac8c7['body'],{'read':![],'body':_0x2ac8c7[_0x945d('0x5c')]['body'],'phone':_0x343000,'WhatsappAccountId':_0x3abbce['id'],'WhatsappInteractionId':_0x546787['id'],'UserId':_0x2ac8c7[_0x945d('0x5e')]['id'],'ContactId':_0x52c577['id']}))[_0x945d('0x20')](function(_0x9cb78a){_0x546787[_0x945d('0xbf')][_0x945d('0xc0')]=[];_0x546787[_0x945d('0xbf')]['Messages']['push'](_0x9cb78a['dataValues']);return _0x546787;});})[_0x945d('0x20')](respondWithResult(_0x1e50ca,null))[_0x945d('0x29')](handleError(_0x1e50ca,null));};
\ No newline at end of file
index cc7fd6b..85ece33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc785=['events','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x4e0aa5,_0x265ec0){var _0xbe1964=function(_0x2ebcb4){while(--_0x2ebcb4){_0x4e0aa5['push'](_0x4e0aa5['shift']());}};_0xbe1964(++_0x265ec0);}(_0xc785,0x98));var _0x5c78=function(_0x369afb,_0x530b2c){_0x369afb=_0x369afb-0x0;var _0x4401a7=_0xc785[_0x369afb];return _0x4401a7;};'use strict';var EventEmitter=require(_0x5c78('0x0'));var WhatsappAccount=require('../../mysqldb')['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x5c78('0x1')](0x0);var events={'afterCreate':_0x5c78('0x2'),'afterUpdate':_0x5c78('0x3'),'afterDestroy':'remove'};function emitEvent(_0x43d188){return function(_0x19268f,_0x473e8e,_0x71bbee){WhatsappAccountEvents['emit'](_0x43d188+':'+_0x19268f['id'],_0x19268f);WhatsappAccountEvents[_0x5c78('0x4')](_0x43d188,_0x19268f);_0x71bbee(null);};}for(var e in events){if(events[_0x5c78('0x5')](e)){var event=events[e];WhatsappAccount[_0x5c78('0x6')](e,emitEvent(event));}}module[_0x5c78('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0x9bb0=['setMaxListeners','save','emit','hasOwnProperty','events','WhatsappAccount'];(function(_0x5c3f8a,_0x123701){var _0x270abd=function(_0x57e189){while(--_0x57e189){_0x5c3f8a['push'](_0x5c3f8a['shift']());}};_0x270abd(++_0x123701);}(_0x9bb0,0x142));var _0x09bb=function(_0x53f122,_0x2cdeca){_0x53f122=_0x53f122-0x0;var _0x59a134=_0x9bb0[_0x53f122];return _0x59a134;};'use strict';var EventEmitter=require(_0x09bb('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0x09bb('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x09bb('0x2')](0x0);var events={'afterCreate':_0x09bb('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4fb5ec){return function(_0x38db2c,_0x35cff2,_0xaf8e72){WhatsappAccountEvents['emit'](_0x4fb5ec+':'+_0x38db2c['id'],_0x38db2c);WhatsappAccountEvents[_0x09bb('0x4')](_0x4fb5ec,_0x38db2c);_0xaf8e72(null);};}for(var e in events){if(events[_0x09bb('0x5')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index 6f269ed..034a99d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28b8=['lodash','../../config/logger','api','request-promise','path','../../config/environment','exports','define','WhatsappAccount','whatsapp_accounts'];(function(_0x47afcc,_0x4eb0a6){var _0x5b8ab5=function(_0x598988){while(--_0x598988){_0x47afcc['push'](_0x47afcc['shift']());}};_0x5b8ab5(++_0x4eb0a6);}(_0x28b8,0x186));var _0x828b=function(_0xde1b5,_0x291eca){_0xde1b5=_0xde1b5-0x0;var _0x52cd92=_0x28b8[_0xde1b5];return _0x52cd92;};'use strict';var _=require(_0x828b('0x0'));var util=require('util');var logger=require(_0x828b('0x1'))(_0x828b('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x828b('0x3'));var fs=require('fs');var path=require(_0x828b('0x4'));var rimraf=require('rimraf');var config=require(_0x828b('0x5'));var attributes=require('./whatsappAccount.attributes');module[_0x828b('0x6')]=function(_0x2fd1a6,_0x5c2ece){return _0x2fd1a6[_0x828b('0x7')](_0x828b('0x8'),attributes,{'tableName':_0x828b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x80cd=['request-promise','rimraf','../../config/environment','./whatsappAccount.attributes','exports','whatsapp_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x53aa71,_0x7486b4){var _0x54a88f=function(_0x372d96){while(--_0x372d96){_0x53aa71['push'](_0x53aa71['shift']());}};_0x54a88f(++_0x7486b4);}(_0x80cd,0x13e));var _0xd80c=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0x80cd[_0x29b609];return _0x54c952;};'use strict';var _=require(_0xd80c('0x0'));var util=require(_0xd80c('0x1'));var logger=require(_0xd80c('0x2'))(_0xd80c('0x3'));var moment=require(_0xd80c('0x4'));var BPromise=require(_0xd80c('0x5'));var rp=require(_0xd80c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd80c('0x7'));var config=require(_0xd80c('0x8'));var attributes=require(_0xd80c('0x9'));module[_0xd80c('0xa')]=function(_0x1aa459,_0x2fe750){return _0x1aa459['define']('WhatsappAccount',attributes,{'tableName':_0xd80c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 189acab..8fee5c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4215=['model','debug','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','raw','options','where','attributes','include','map'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4215,0x1b0));var _0x5421=function(_0x43eff0,_0x45498d){_0x43eff0=_0x43eff0-0x0;var _0x414ff5=_0x4215[_0x43eff0];return _0x414ff5;};'use strict';var _=require(_0x5421('0x0'));var util=require(_0x5421('0x1'));var moment=require(_0x5421('0x2'));var BPromise=require(_0x5421('0x3'));var rs=require(_0x5421('0x4'));var fs=require('fs');var Redis=require(_0x5421('0x5'));var db=require(_0x5421('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5421('0x7'))(_0x5421('0x8'));var config=require(_0x5421('0x9'));var jayson=require(_0x5421('0xa'));var client=jayson['client'][_0x5421('0xb')]({'port':0x232a});config[_0x5421('0xc')]=_[_0x5421('0xd')](config[_0x5421('0xc')],{'host':_0x5421('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5421('0xc')]));require('./whatsappAccount.socket')[_0x5421('0xf')](socket);function respondWithRpcPromise(_0x2a4230,_0x1a6380,_0x56b92d){return new BPromise(function(_0x192d84,_0x3002c3){return client[_0x5421('0x10')](_0x2a4230,_0x56b92d)[_0x5421('0x11')](function(_0x35ad75){logger[_0x5421('0x12')](_0x5421('0x13'),_0x1a6380,'request\x20sent');logger['debug'](_0x5421('0x14'),_0x1a6380,_0x5421('0x15'),JSON['stringify'](_0x35ad75));if(_0x35ad75[_0x5421('0x16')]){if(_0x35ad75[_0x5421('0x16')][_0x5421('0x17')]===0x1f4){logger[_0x5421('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x1a6380,_0x35ad75['error'][_0x5421('0x18')]);return _0x3002c3(_0x35ad75[_0x5421('0x16')]['message']);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x1a6380,_0x35ad75['error'][_0x5421('0x18')]);return _0x192d84(_0x35ad75[_0x5421('0x16')][_0x5421('0x18')]);}else{logger[_0x5421('0x12')](_0x5421('0x13'),_0x1a6380,_0x5421('0x15'));_0x192d84(_0x35ad75[_0x5421('0x19')][_0x5421('0x18')]);}})[_0x5421('0x1a')](function(_0x299a28){logger['error'](_0x5421('0x13'),_0x1a6380,_0x299a28);_0x3002c3(_0x299a28);});});}exports[_0x5421('0x1b')]=function(_0x1cbb21){var _0x333c7a=this;return new Promise(function(_0x2f9508,_0x51b3bb){return db[_0x5421('0x1c')][_0x5421('0x1d')]({'raw':_0x1cbb21['options']?_0x1cbb21['options'][_0x5421('0x1e')]===undefined?!![]:![]:!![],'where':_0x1cbb21[_0x5421('0x1f')]?_0x1cbb21[_0x5421('0x1f')][_0x5421('0x20')]||null:null,'attributes':_0x1cbb21['options']?_0x1cbb21['options'][_0x5421('0x21')]||null:null,'include':_0x1cbb21['options']?_0x1cbb21['options'][_0x5421('0x22')]?_['map'](_0x1cbb21[_0x5421('0x1f')]['include'],function(_0x2c30fe){return{'model':db[_0x2c30fe['model']],'as':_0x2c30fe['as'],'attributes':_0x2c30fe['attributes'],'include':_0x2c30fe[_0x5421('0x22')]?_['map'](_0x2c30fe[_0x5421('0x22')],function(_0x4633f0){return{'model':db[_0x4633f0['model']],'as':_0x4633f0['as'],'attributes':_0x4633f0[_0x5421('0x21')],'include':_0x4633f0[_0x5421('0x22')]?_[_0x5421('0x23')](_0x4633f0[_0x5421('0x22')],function(_0x2092d4){return{'model':db[_0x2092d4[_0x5421('0x24')]],'as':_0x2092d4['as'],'attributes':_0x2092d4[_0x5421('0x21')]};}):[]};}):[]};}):[]:[]})[_0x5421('0x11')](function(_0x46f502){logger[_0x5421('0x12')](_0x5421('0x1b'),_0x1cbb21);logger[_0x5421('0x25')](_0x5421('0x1b'),_0x1cbb21,JSON[_0x5421('0x26')](_0x46f502));_0x2f9508(_0x46f502);})[_0x5421('0x1a')](function(_0x4343a3){logger['error'](_0x5421('0x1b'),_0x4343a3[_0x5421('0x18')],_0x1cbb21);_0x51b3bb(_0x333c7a[_0x5421('0x16')](0x1f4,_0x4343a3[_0x5421('0x18')]));});});};
\ No newline at end of file
+var _0xd407=['model','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappAccount,\x20%s,\x20%s','ShowWhatsappAccount','options','where','attributes','include','map'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xd407,0x1de));var _0x7d40=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd407[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7d40('0x0'));var util=require(_0x7d40('0x1'));var moment=require('moment');var BPromise=require(_0x7d40('0x2'));var rs=require(_0x7d40('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7d40('0x4'))['db'];var utils=require(_0x7d40('0x5'));var logger=require(_0x7d40('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7d40('0x7'));var client=jayson[_0x7d40('0x8')][_0x7d40('0x9')]({'port':0x232a});config[_0x7d40('0xa')]=_['defaults'](config[_0x7d40('0xa')],{'host':_0x7d40('0xb'),'port':0x18eb});var socket=require(_0x7d40('0xc'))(new Redis(config[_0x7d40('0xa')]));require(_0x7d40('0xd'))[_0x7d40('0xe')](socket);function respondWithRpcPromise(_0x21be6c,_0x2d9084,_0x3a0070){return new BPromise(function(_0x533ef7,_0x546bff){return client[_0x7d40('0xf')](_0x21be6c,_0x3a0070)[_0x7d40('0x10')](function(_0xf6a64a){logger[_0x7d40('0x11')]('WhatsappAccount,\x20%s,\x20%s',_0x2d9084,_0x7d40('0x12'));logger[_0x7d40('0x13')](_0x7d40('0x14'),_0x2d9084,_0x7d40('0x12'),JSON[_0x7d40('0x15')](_0xf6a64a));if(_0xf6a64a[_0x7d40('0x16')]){if(_0xf6a64a[_0x7d40('0x16')][_0x7d40('0x17')]===0x1f4){logger[_0x7d40('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x2d9084,_0xf6a64a[_0x7d40('0x16')][_0x7d40('0x18')]);return _0x546bff(_0xf6a64a['error'][_0x7d40('0x18')]);}logger[_0x7d40('0x16')](_0x7d40('0x19'),_0x2d9084,_0xf6a64a[_0x7d40('0x16')][_0x7d40('0x18')]);return _0x533ef7(_0xf6a64a[_0x7d40('0x16')]['message']);}else{logger[_0x7d40('0x11')](_0x7d40('0x19'),_0x2d9084,'request\x20sent');_0x533ef7(_0xf6a64a['result'][_0x7d40('0x18')]);}})['catch'](function(_0x274e84){logger[_0x7d40('0x16')](_0x7d40('0x19'),_0x2d9084,_0x274e84);_0x546bff(_0x274e84);});});}exports[_0x7d40('0x1a')]=function(_0x4159ba){var _0x31eb33=this;return new Promise(function(_0x5c203d,_0x121332){return db['WhatsappAccount']['find']({'raw':_0x4159ba[_0x7d40('0x1b')]?_0x4159ba[_0x7d40('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4159ba[_0x7d40('0x1b')]?_0x4159ba[_0x7d40('0x1b')][_0x7d40('0x1c')]||null:null,'attributes':_0x4159ba[_0x7d40('0x1b')]?_0x4159ba[_0x7d40('0x1b')][_0x7d40('0x1d')]||null:null,'include':_0x4159ba[_0x7d40('0x1b')]?_0x4159ba[_0x7d40('0x1b')][_0x7d40('0x1e')]?_[_0x7d40('0x1f')](_0x4159ba[_0x7d40('0x1b')][_0x7d40('0x1e')],function(_0x1ed398){return{'model':db[_0x1ed398[_0x7d40('0x20')]],'as':_0x1ed398['as'],'attributes':_0x1ed398[_0x7d40('0x1d')],'include':_0x1ed398[_0x7d40('0x1e')]?_[_0x7d40('0x1f')](_0x1ed398[_0x7d40('0x1e')],function(_0xc15d19){return{'model':db[_0xc15d19['model']],'as':_0xc15d19['as'],'attributes':_0xc15d19[_0x7d40('0x1d')],'include':_0xc15d19[_0x7d40('0x1e')]?_[_0x7d40('0x1f')](_0xc15d19[_0x7d40('0x1e')],function(_0x4fc736){return{'model':db[_0x4fc736[_0x7d40('0x20')]],'as':_0x4fc736['as'],'attributes':_0x4fc736['attributes']};}):[]};}):[]};}):[]:[]})[_0x7d40('0x10')](function(_0xe5ea11){logger[_0x7d40('0x11')]('ShowWhatsappAccount',_0x4159ba);logger['debug'](_0x7d40('0x1a'),_0x4159ba,JSON[_0x7d40('0x15')](_0xe5ea11));_0x5c203d(_0xe5ea11);})[_0x7d40('0x21')](function(_0x29b43f){logger[_0x7d40('0x16')](_0x7d40('0x1a'),_0x29b43f[_0x7d40('0x18')],_0x4159ba);_0x121332(_0x31eb33[_0x7d40('0x16')](0x1f4,_0x29b43f[_0x7d40('0x18')]));});});};
\ No newline at end of file
index 030265e..af72ae6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe417=['register','length','removeListener'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xe417,0x6b));var _0x7e41=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xe417[_0x50007c];return _0x5c1ec7;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=['save','remove','update'];function createListener(_0x7a132,_0x17b032){return function(_0x9ae7f){_0x17b032['emit'](_0x7a132,_0x9ae7f);};}function removeListener(_0x1a3072,_0x5c3641){return function(){WhatsappAccountEvents[_0x7e41('0x0')](_0x1a3072,_0x5c3641);};}exports[_0x7e41('0x1')]=function(_0x567d15){for(var _0x327951=0x0,_0x273c6b=events[_0x7e41('0x2')];_0x327951<_0x273c6b;_0x327951++){var _0x3bc783=events[_0x327951];var _0x21d47b=createListener('whatsappAccount:'+_0x3bc783,_0x567d15);WhatsappAccountEvents['on'](_0x3bc783,_0x21d47b);}};
\ No newline at end of file
+var _0x5a6f=['update','removeListener','register','whatsappAccount:','./whatsappAccount.events','save','remove'];(function(_0x3328b4,_0x2b28c3){var _0x573bf9=function(_0xa52d49){while(--_0xa52d49){_0x3328b4['push'](_0x3328b4['shift']());}};_0x573bf9(++_0x2b28c3);}(_0x5a6f,0x82));var _0xf5a6=function(_0x31b78d,_0x2c5f1d){_0x31b78d=_0x31b78d-0x0;var _0x518304=_0x5a6f[_0x31b78d];return _0x518304;};'use strict';var WhatsappAccountEvents=require(_0xf5a6('0x0'));var events=[_0xf5a6('0x1'),_0xf5a6('0x2'),_0xf5a6('0x3')];function createListener(_0x4f24ba,_0x2c6ac4){return function(_0x5cccfa){_0x2c6ac4['emit'](_0x4f24ba,_0x5cccfa);};}function removeListener(_0x5c684b,_0x2a11ea){return function(){WhatsappAccountEvents[_0xf5a6('0x4')](_0x5c684b,_0x2a11ea);};}exports[_0xf5a6('0x5')]=function(_0x305089){for(var _0x517956=0x0,_0x4d9207=events['length'];_0x517956<_0x4d9207;_0x517956++){var _0x45af0c=events[_0x517956];var _0x4eb07d=createListener(_0xf5a6('0x6')+_0x45af0c,_0x305089);WhatsappAccountEvents['on'](_0x45af0c,_0x4eb07d);}};
\ No newline at end of file
index 9075355..bc399b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c5d=['show','create','put','/:id','update','delete','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','index'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x4c5d,0xfe));var _0xd4c5=function(_0x272233,_0x4d1a8d){_0x272233=_0x272233-0x0;var _0x2ea904=_0x4c5d[_0x272233];return _0x2ea904;};'use strict';var multer=require(_0xd4c5('0x0'));var util=require(_0xd4c5('0x1'));var path=require('path');var timeout=require(_0xd4c5('0x2'));var express=require(_0xd4c5('0x3'));var router=express[_0xd4c5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd4c5('0x5'));var interaction=require(_0xd4c5('0x6'));var config=require(_0xd4c5('0x7'));var controller=require(_0xd4c5('0x8'));router[_0xd4c5('0x9')]('/',auth[_0xd4c5('0xa')](),controller[_0xd4c5('0xb')]);router[_0xd4c5('0x9')]('/:id',auth[_0xd4c5('0xa')](),controller[_0xd4c5('0xc')]);router['post']('/',auth[_0xd4c5('0xa')](),controller[_0xd4c5('0xd')]);router[_0xd4c5('0xe')](_0xd4c5('0xf'),auth[_0xd4c5('0xa')](),controller[_0xd4c5('0x10')]);router[_0xd4c5('0x11')](_0xd4c5('0xf'),auth[_0xd4c5('0xa')](),controller['destroy']);module[_0xd4c5('0x12')]=router;
\ No newline at end of file
+var _0x3787=['put','update','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./whatsappApplication.controller','index','get','/:id','isAuthenticated','show','post'];(function(_0x31ab90,_0x145a96){var _0x2d6123=function(_0x2bf73f){while(--_0x2bf73f){_0x31ab90['push'](_0x31ab90['shift']());}};_0x2d6123(++_0x145a96);}(_0x3787,0x7b));var _0x7378=function(_0x2b4e30,_0x4f9e10){_0x2b4e30=_0x2b4e30-0x0;var _0x5753c0=_0x3787[_0x2b4e30];return _0x5753c0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7378('0x0'));var timeout=require(_0x7378('0x1'));var express=require(_0x7378('0x2'));var router=express['Router']();var fs_extra=require(_0x7378('0x3'));var auth=require(_0x7378('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7378('0x5'));var controller=require(_0x7378('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7378('0x7')]);router[_0x7378('0x8')](_0x7378('0x9'),auth[_0x7378('0xa')](),controller[_0x7378('0xb')]);router[_0x7378('0xc')]('/',auth[_0x7378('0xa')](),controller['create']);router[_0x7378('0xd')]('/:id',auth[_0x7378('0xa')](),controller[_0x7378('0xe')]);router['delete']('/:id',auth[_0x7378('0xa')](),controller[_0x7378('0xf')]);module[_0x7378('0x10')]=router;
\ No newline at end of file
index 9cd4034..65af76f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7c9=['STRING','sequelize','noop','TEXT'];(function(_0x25eae9,_0x5d3260){var _0x3a8d1f=function(_0xbd6b18){while(--_0xbd6b18){_0x25eae9['push'](_0x25eae9['shift']());}};_0x3a8d1f(++_0x5d3260);}(_0xe7c9,0x12d));var _0x9e7c=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xe7c9[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require(_0x9e7c('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9e7c('0x1')},'appdata':{'type':Sequelize[_0x9e7c('0x2')]()},'description':{'type':Sequelize[_0x9e7c('0x3')]},'interval':{'type':Sequelize[_0x9e7c('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x037d=['INTEGER','STRING','TEXT','*,*,*,*','sequelize','exports'];(function(_0x231821,_0x586d8f){var _0x12ad1b=function(_0x4a96f2){while(--_0x4a96f2){_0x231821['push'](_0x231821['shift']());}};_0x12ad1b(++_0x586d8f);}(_0x037d,0x1ba));var _0xd037=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x037d[_0x2070da];return _0x4f9fe1;};'use strict';var Sequelize=require(_0xd037('0x0'));module[_0xd037('0x1')]={'priority':{'type':Sequelize[_0xd037('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xd037('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xd037('0x4')]()},'description':{'type':Sequelize[_0xd037('0x3')]},'interval':{'type':Sequelize[_0xd037('0x3')],'defaultValue':_0xd037('0x5')}};
\ No newline at end of file
index 2b90a99..f46f65d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86dc=['fieldName','type','query','keys','intersection','attributes','model','fields','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','length','includeAll','find','body','catch','params','eml-format','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','WhatsappApplication','rawAttributes'];(function(_0x304954,_0x319bf8){var _0x3afe3a=function(_0x56de64){while(--_0x56de64){_0x304954['push'](_0x304954['shift']());}};_0x3afe3a(++_0x319bf8);}(_0x86dc,0x13e));var _0xc86d=function(_0x5609e4,_0x1d34a9){_0x5609e4=_0x5609e4-0x0;var _0x313939=_0x86dc[_0x5609e4];return _0x313939;};'use strict';var emlformat=require(_0xc86d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc86d('0x1'));var rp=require(_0xc86d('0x2'));var moment=require(_0xc86d('0x3'));var BPromise=require(_0xc86d('0x4'));var Mustache=require('mustache');var util=require(_0xc86d('0x5'));var path=require('path');var sox=require(_0xc86d('0x6'));var csv=require('to-csv');var ejs=require(_0xc86d('0x7'));var fs=require('fs');var fs_extra=require(_0xc86d('0x8'));var _=require(_0xc86d('0x9'));var squel=require('squel');var crypto=require(_0xc86d('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xc86d('0xb'));var toCsv=require(_0xc86d('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc86d('0xd'));var authService=require(_0xc86d('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc86d('0xf'));var hardwareService=require(_0xc86d('0x10'));var logger=require(_0xc86d('0x11'))(_0xc86d('0x12'));var utils=require(_0xc86d('0x13'));var config=require(_0xc86d('0x14'));var licenseUtil=require(_0xc86d('0x15'));var db=require(_0xc86d('0x16'))['db'];function respondWithStatusCode(_0x299776,_0x38abd7){_0x38abd7=_0x38abd7||0xcc;return function(_0x352469){if(_0x352469){return _0x299776[_0xc86d('0x17')](_0x38abd7);}return _0x299776[_0xc86d('0x18')](_0x38abd7)[_0xc86d('0x19')]();};}function respondWithResult(_0x450fb1,_0x2a963c){_0x2a963c=_0x2a963c||0xc8;return function(_0x176ce1){if(_0x176ce1){return _0x450fb1[_0xc86d('0x18')](_0x2a963c)[_0xc86d('0x1a')](_0x176ce1);}};}function respondWithFilteredResult(_0x24c9c3,_0x199a4a){return function(_0x5e58aa){if(_0x5e58aa){var _0x4fb8e7=typeof _0x199a4a['offset']===_0xc86d('0x1b')&&typeof _0x199a4a[_0xc86d('0x1c')]===_0xc86d('0x1b');var _0x2a9459=_0x5e58aa[_0xc86d('0x1d')];var _0x3d7e72=_0x4fb8e7?0x0:_0x199a4a[_0xc86d('0x1e')];var _0x5f3ece=_0x4fb8e7?_0x5e58aa['count']:_0x199a4a[_0xc86d('0x1e')]+_0x199a4a[_0xc86d('0x1c')];var _0x445863;if(_0x5f3ece>=_0x2a9459){_0x5f3ece=_0x2a9459;_0x445863=0xc8;}else{_0x445863=0xce;}_0x24c9c3['status'](_0x445863);return _0x24c9c3[_0xc86d('0x1f')](_0xc86d('0x20'),_0x3d7e72+'-'+_0x5f3ece+'/'+_0x2a9459)[_0xc86d('0x1a')](_0x5e58aa);}return null;};}function patchUpdates(_0x4eb0e5){return function(_0x330c70){try{jsonpatch[_0xc86d('0x21')](_0x330c70,_0x4eb0e5,!![]);}catch(_0x548f59){return BPromise[_0xc86d('0x22')](_0x548f59);}return _0x330c70[_0xc86d('0x23')]();};}function saveUpdates(_0x3a4abb,_0x27ebd8){return function(_0x57d804){if(_0x57d804){return _0x57d804[_0xc86d('0x24')](_0x3a4abb)[_0xc86d('0x25')](function(_0xad7be1){return _0xad7be1;});}return null;};}function removeEntity(_0x1bb9ed,_0xbeed40){return function(_0x56278d){if(_0x56278d){return _0x56278d[_0xc86d('0x26')]()[_0xc86d('0x25')](function(){_0x1bb9ed[_0xc86d('0x18')](0xcc)[_0xc86d('0x19')]();});}};}function handleEntityNotFound(_0x27d636,_0x5347f7){return function(_0x1458fe){if(!_0x1458fe){_0x27d636['sendStatus'](0x194);}return _0x1458fe;};}function handleError(_0x4e1312,_0x533cce){_0x533cce=_0x533cce||0x1f4;return function(_0x2782b8){logger[_0xc86d('0x27')](_0x2782b8[_0xc86d('0x28')]);if(_0x2782b8[_0xc86d('0x29')]){delete _0x2782b8[_0xc86d('0x29')];}_0x4e1312[_0xc86d('0x18')](_0x533cce)[_0xc86d('0x2a')](_0x2782b8);};}exports[_0xc86d('0x2b')]=function(_0x4db581,_0x397a55){var _0x2bce7b={},_0x581a9e={},_0x5cf11a={'count':0x0,'rows':[]};var _0x7dfc22=_[_0xc86d('0x2c')](db[_0xc86d('0x2d')][_0xc86d('0x2e')],function(_0x384bc9){return{'name':_0x384bc9[_0xc86d('0x2f')],'type':_0x384bc9[_0xc86d('0x30')]['key']};});_0x581a9e['model']=_[_0xc86d('0x2c')](_0x7dfc22,_0xc86d('0x29'));_0x581a9e[_0xc86d('0x31')]=_[_0xc86d('0x32')](_0x4db581[_0xc86d('0x31')]);_0x581a9e['filters']=_[_0xc86d('0x33')](_0x581a9e['model'],_0x581a9e[_0xc86d('0x31')]);_0x2bce7b[_0xc86d('0x34')]=_[_0xc86d('0x33')](_0x581a9e[_0xc86d('0x35')],qs[_0xc86d('0x36')](_0x4db581[_0xc86d('0x31')][_0xc86d('0x36')]));_0x2bce7b[_0xc86d('0x34')]=_0x2bce7b[_0xc86d('0x34')]['length']?_0x2bce7b['attributes']:_0x581a9e['model'];if(!_0x4db581['query']['hasOwnProperty']('nolimit')){_0x2bce7b[_0xc86d('0x1c')]=qs[_0xc86d('0x1c')](_0x4db581[_0xc86d('0x31')][_0xc86d('0x1c')]);_0x2bce7b[_0xc86d('0x1e')]=qs[_0xc86d('0x1e')](_0x4db581['query'][_0xc86d('0x1e')]);}_0x2bce7b[_0xc86d('0x37')]=qs[_0xc86d('0x38')](_0x4db581[_0xc86d('0x31')][_0xc86d('0x38')]);_0x2bce7b[_0xc86d('0x39')]=qs[_0xc86d('0x3a')](_[_0xc86d('0x3b')](_0x4db581[_0xc86d('0x31')],_0x581a9e[_0xc86d('0x3a')]),_0x7dfc22);if(_0x4db581['query'][_0xc86d('0x3c')]){_0x2bce7b['where']=_[_0xc86d('0x3d')](_0x2bce7b[_0xc86d('0x39')],{'$or':_[_0xc86d('0x2c')](_0x7dfc22,function(_0x560997){if(_0x560997[_0xc86d('0x30')]!==_0xc86d('0x3e')){var _0x3202b8={};_0x3202b8[_0x560997['name']]={'$like':'%'+_0x4db581[_0xc86d('0x31')][_0xc86d('0x3c')]+'%'};return _0x3202b8;}})});}_0x2bce7b=_[_0xc86d('0x3d')]({},_0x2bce7b,_0x4db581[_0xc86d('0x3f')]);var _0xa6a0f9={'where':_0x2bce7b['where']};return db[_0xc86d('0x2d')][_0xc86d('0x1d')](_0xa6a0f9)[_0xc86d('0x25')](function(_0x38d25e){_0x5cf11a[_0xc86d('0x1d')]=_0x38d25e;if(_0x4db581[_0xc86d('0x31')]['includeAll']){_0x2bce7b[_0xc86d('0x40')]=[{'all':!![]}];}return db['WhatsappApplication'][_0xc86d('0x41')](_0x2bce7b);})[_0xc86d('0x25')](function(_0x39bdc7){_0x5cf11a[_0xc86d('0x42')]=_0x39bdc7;return _0x5cf11a;})['then'](respondWithFilteredResult(_0x397a55,_0x2bce7b))['catch'](handleError(_0x397a55,null));};exports['show']=function(_0x9841ff,_0x1a583b){var _0x172f7b={'raw':!![],'where':{'id':_0x9841ff['params']['id']}},_0x2c3f3d={};_0x2c3f3d[_0xc86d('0x35')]=_[_0xc86d('0x32')](db[_0xc86d('0x2d')][_0xc86d('0x2e')]);_0x2c3f3d[_0xc86d('0x31')]=_['keys'](_0x9841ff[_0xc86d('0x31')]);_0x2c3f3d[_0xc86d('0x3a')]=_[_0xc86d('0x33')](_0x2c3f3d[_0xc86d('0x35')],_0x2c3f3d['query']);_0x172f7b[_0xc86d('0x34')]=_['intersection'](_0x2c3f3d['model'],qs[_0xc86d('0x36')](_0x9841ff['query'][_0xc86d('0x36')]));_0x172f7b[_0xc86d('0x34')]=_0x172f7b[_0xc86d('0x34')][_0xc86d('0x43')]?_0x172f7b['attributes']:_0x2c3f3d[_0xc86d('0x35')];if(_0x9841ff[_0xc86d('0x31')][_0xc86d('0x44')]){_0x172f7b['include']=[{'all':!![]}];}_0x172f7b=_['merge']({},_0x172f7b,_0x9841ff[_0xc86d('0x3f')]);return db['WhatsappApplication'][_0xc86d('0x45')](_0x172f7b)[_0xc86d('0x25')](handleEntityNotFound(_0x1a583b,null))[_0xc86d('0x25')](respondWithResult(_0x1a583b,null))['catch'](handleError(_0x1a583b,null));};exports['create']=function(_0xe8a2aa,_0x21b745){return db[_0xc86d('0x2d')]['create'](_0xe8a2aa[_0xc86d('0x46')],{})['then'](respondWithResult(_0x21b745,0xc9))[_0xc86d('0x47')](handleError(_0x21b745,null));};exports[_0xc86d('0x24')]=function(_0x57231e,_0x485e8b){if(_0x57231e[_0xc86d('0x46')]['id']){delete _0x57231e['body']['id'];}return db[_0xc86d('0x2d')]['find']({'where':{'id':_0x57231e[_0xc86d('0x48')]['id']}})[_0xc86d('0x25')](handleEntityNotFound(_0x485e8b,null))[_0xc86d('0x25')](saveUpdates(_0x57231e['body'],null))['then'](respondWithResult(_0x485e8b,null))[_0xc86d('0x47')](handleError(_0x485e8b,null));};exports[_0xc86d('0x26')]=function(_0x3b5d6a,_0x1ed0fb){return db['WhatsappApplication'][_0xc86d('0x45')]({'where':{'id':_0x3b5d6a[_0xc86d('0x48')]['id']}})[_0xc86d('0x25')](handleEntityNotFound(_0x1ed0fb,null))[_0xc86d('0x25')](removeEntity(_0x1ed0fb,null))[_0xc86d('0x47')](handleError(_0x1ed0fb,null));};
\ No newline at end of file
+var _0xe77c=['create','body','destroy','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','limit','set','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','include','findAll','rows','catch','show','WhatsappApplication','find'];(function(_0x5e9817,_0xa29439){var _0x25b437=function(_0x46851b){while(--_0x46851b){_0x5e9817['push'](_0x5e9817['shift']());}};_0x25b437(++_0xa29439);}(_0xe77c,0x176));var _0xce77=function(_0x234ab7,_0x4e8666){_0x234ab7=_0x234ab7-0x0;var _0x1093ff=_0xe77c[_0x234ab7];return _0x1093ff;};'use strict';var emlformat=require(_0xce77('0x0'));var rimraf=require(_0xce77('0x1'));var zipdir=require(_0xce77('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xce77('0x3'));var moment=require(_0xce77('0x4'));var BPromise=require(_0xce77('0x5'));var Mustache=require(_0xce77('0x6'));var util=require(_0xce77('0x7'));var path=require(_0xce77('0x8'));var sox=require(_0xce77('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xce77('0xa'));var _=require('lodash');var squel=require(_0xce77('0xb'));var crypto=require(_0xce77('0xc'));var jsforce=require(_0xce77('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xce77('0xe'));var querystring=require(_0xce77('0xf'));var Papa=require(_0xce77('0x10'));var Redis=require(_0xce77('0x11'));var authService=require(_0xce77('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xce77('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xce77('0x14'))(_0xce77('0x15'));var utils=require(_0xce77('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xce77('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x564d7f,_0x4a8b8e){_0x4a8b8e=_0x4a8b8e||0xcc;return function(_0x5e1cdb){if(_0x5e1cdb){return _0x564d7f[_0xce77('0x18')](_0x4a8b8e);}return _0x564d7f['status'](_0x4a8b8e)[_0xce77('0x19')]();};}function respondWithResult(_0x1da355,_0x3040d5){_0x3040d5=_0x3040d5||0xc8;return function(_0x1e964f){if(_0x1e964f){return _0x1da355[_0xce77('0x1a')](_0x3040d5)[_0xce77('0x1b')](_0x1e964f);}};}function respondWithFilteredResult(_0x49418a,_0x3bcc4e){return function(_0x5b97e8){if(_0x5b97e8){var _0x3ea788=typeof _0x3bcc4e[_0xce77('0x1c')]===_0xce77('0x1d')&&typeof _0x3bcc4e['limit']===_0xce77('0x1d');var _0x78db73=_0x5b97e8[_0xce77('0x1e')];var _0x1caf50=_0x3ea788?0x0:_0x3bcc4e[_0xce77('0x1c')];var _0x4ddd2c=_0x3ea788?_0x5b97e8[_0xce77('0x1e')]:_0x3bcc4e['offset']+_0x3bcc4e[_0xce77('0x1f')];var _0x3f9beb;if(_0x4ddd2c>=_0x78db73){_0x4ddd2c=_0x78db73;_0x3f9beb=0xc8;}else{_0x3f9beb=0xce;}_0x49418a[_0xce77('0x1a')](_0x3f9beb);return _0x49418a[_0xce77('0x20')]('Content-Range',_0x1caf50+'-'+_0x4ddd2c+'/'+_0x78db73)[_0xce77('0x1b')](_0x5b97e8);}return null;};}function patchUpdates(_0x3dc264){return function(_0x174240){try{jsonpatch[_0xce77('0x21')](_0x174240,_0x3dc264,!![]);}catch(_0x5378f3){return BPromise[_0xce77('0x22')](_0x5378f3);}return _0x174240['save']();};}function saveUpdates(_0x18da30,_0x42802a){return function(_0x490ce3){if(_0x490ce3){return _0x490ce3[_0xce77('0x23')](_0x18da30)[_0xce77('0x24')](function(_0x541e2e){return _0x541e2e;});}return null;};}function removeEntity(_0x3319d1,_0x261a11){return function(_0x3ffd4a){if(_0x3ffd4a){return _0x3ffd4a['destroy']()['then'](function(){_0x3319d1[_0xce77('0x1a')](0xcc)[_0xce77('0x19')]();});}};}function handleEntityNotFound(_0x223511,_0x14f4b8){return function(_0x580994){if(!_0x580994){_0x223511['sendStatus'](0x194);}return _0x580994;};}function handleError(_0x471b79,_0x3b6a61){_0x3b6a61=_0x3b6a61||0x1f4;return function(_0xa9b7cf){logger[_0xce77('0x25')](_0xa9b7cf[_0xce77('0x26')]);if(_0xa9b7cf[_0xce77('0x27')]){delete _0xa9b7cf[_0xce77('0x27')];}_0x471b79['status'](_0x3b6a61)[_0xce77('0x28')](_0xa9b7cf);};}exports[_0xce77('0x29')]=function(_0x379489,_0x231aac){var _0x4d0466={},_0x3e4a40={},_0x19fddb={'count':0x0,'rows':[]};var _0x3d4199=_[_0xce77('0x2a')](db['WhatsappApplication'][_0xce77('0x2b')],function(_0x11ac42){return{'name':_0x11ac42[_0xce77('0x2c')],'type':_0x11ac42[_0xce77('0x2d')][_0xce77('0x2e')]};});_0x3e4a40[_0xce77('0x2f')]=_['map'](_0x3d4199,_0xce77('0x27'));_0x3e4a40['query']=_[_0xce77('0x30')](_0x379489[_0xce77('0x31')]);_0x3e4a40['filters']=_[_0xce77('0x32')](_0x3e4a40[_0xce77('0x2f')],_0x3e4a40['query']);_0x4d0466['attributes']=_['intersection'](_0x3e4a40[_0xce77('0x2f')],qs['fields'](_0x379489[_0xce77('0x31')][_0xce77('0x33')]));_0x4d0466[_0xce77('0x34')]=_0x4d0466[_0xce77('0x34')]['length']?_0x4d0466[_0xce77('0x34')]:_0x3e4a40[_0xce77('0x2f')];if(!_0x379489[_0xce77('0x31')][_0xce77('0x35')](_0xce77('0x36'))){_0x4d0466[_0xce77('0x1f')]=qs['limit'](_0x379489[_0xce77('0x31')]['limit']);_0x4d0466[_0xce77('0x1c')]=qs[_0xce77('0x1c')](_0x379489[_0xce77('0x31')][_0xce77('0x1c')]);}_0x4d0466[_0xce77('0x37')]=qs[_0xce77('0x38')](_0x379489[_0xce77('0x31')][_0xce77('0x38')]);_0x4d0466[_0xce77('0x39')]=qs[_0xce77('0x3a')](_[_0xce77('0x3b')](_0x379489[_0xce77('0x31')],_0x3e4a40['filters']),_0x3d4199);if(_0x379489[_0xce77('0x31')][_0xce77('0x3c')]){_0x4d0466['where']=_[_0xce77('0x3d')](_0x4d0466[_0xce77('0x39')],{'$or':_[_0xce77('0x2a')](_0x3d4199,function(_0xca923b){if(_0xca923b[_0xce77('0x2d')]!=='VIRTUAL'){var _0x5cd587={};_0x5cd587[_0xca923b[_0xce77('0x27')]]={'$like':'%'+_0x379489[_0xce77('0x31')][_0xce77('0x3c')]+'%'};return _0x5cd587;}})});}_0x4d0466=_[_0xce77('0x3d')]({},_0x4d0466,_0x379489['options']);var _0x183c85={'where':_0x4d0466['where']};return db['WhatsappApplication'][_0xce77('0x1e')](_0x183c85)[_0xce77('0x24')](function(_0x59fcc1){_0x19fddb['count']=_0x59fcc1;if(_0x379489[_0xce77('0x31')][_0xce77('0x3e')]){_0x4d0466[_0xce77('0x3f')]=[{'all':!![]}];}return db['WhatsappApplication'][_0xce77('0x40')](_0x4d0466);})[_0xce77('0x24')](function(_0x4b5ca1){_0x19fddb[_0xce77('0x41')]=_0x4b5ca1;return _0x19fddb;})['then'](respondWithFilteredResult(_0x231aac,_0x4d0466))[_0xce77('0x42')](handleError(_0x231aac,null));};exports[_0xce77('0x43')]=function(_0x4ed1d4,_0x4c3c09){var _0x49104d={'raw':!![],'where':{'id':_0x4ed1d4['params']['id']}},_0x17511a={};_0x17511a[_0xce77('0x2f')]=_[_0xce77('0x30')](db[_0xce77('0x44')][_0xce77('0x2b')]);_0x17511a['query']=_['keys'](_0x4ed1d4[_0xce77('0x31')]);_0x17511a['filters']=_[_0xce77('0x32')](_0x17511a[_0xce77('0x2f')],_0x17511a[_0xce77('0x31')]);_0x49104d['attributes']=_[_0xce77('0x32')](_0x17511a[_0xce77('0x2f')],qs[_0xce77('0x33')](_0x4ed1d4[_0xce77('0x31')][_0xce77('0x33')]));_0x49104d[_0xce77('0x34')]=_0x49104d[_0xce77('0x34')]['length']?_0x49104d[_0xce77('0x34')]:_0x17511a[_0xce77('0x2f')];if(_0x4ed1d4['query']['includeAll']){_0x49104d[_0xce77('0x3f')]=[{'all':!![]}];}_0x49104d=_[_0xce77('0x3d')]({},_0x49104d,_0x4ed1d4['options']);return db[_0xce77('0x44')][_0xce77('0x45')](_0x49104d)[_0xce77('0x24')](handleEntityNotFound(_0x4c3c09,null))[_0xce77('0x24')](respondWithResult(_0x4c3c09,null))['catch'](handleError(_0x4c3c09,null));};exports['create']=function(_0x3181b8,_0x3fc209){return db['WhatsappApplication'][_0xce77('0x46')](_0x3181b8[_0xce77('0x47')],{})[_0xce77('0x24')](respondWithResult(_0x3fc209,0xc9))[_0xce77('0x42')](handleError(_0x3fc209,null));};exports['update']=function(_0x3c313b,_0x3ae3b8){if(_0x3c313b[_0xce77('0x47')]['id']){delete _0x3c313b[_0xce77('0x47')]['id'];}return db[_0xce77('0x44')]['find']({'where':{'id':_0x3c313b['params']['id']}})['then'](handleEntityNotFound(_0x3ae3b8,null))[_0xce77('0x24')](saveUpdates(_0x3c313b['body'],null))[_0xce77('0x24')](respondWithResult(_0x3ae3b8,null))[_0xce77('0x42')](handleError(_0x3ae3b8,null));};exports[_0xce77('0x48')]=function(_0x2a6097,_0x5d6048){return db[_0xce77('0x44')][_0xce77('0x45')]({'where':{'id':_0x2a6097[_0xce77('0x49')]['id']}})[_0xce77('0x24')](handleEntityNotFound(_0x5d6048,null))[_0xce77('0x24')](removeEntity(_0x5d6048,null))['catch'](handleError(_0x5d6048,null));};
\ No newline at end of file
index 63040e0..036f725 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d9f=['api','moment','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','define','whatsapp_applications','utf8mb4','lodash','util','../../config/logger'];(function(_0x32f08d,_0x1364e4){var _0x1b6d8b=function(_0x5e0e6c){while(--_0x5e0e6c){_0x32f08d['push'](_0x32f08d['shift']());}};_0x1b6d8b(++_0x1364e4);}(_0x7d9f,0x15c));var _0xf7d9=function(_0x4dab14,_0x164ea0){_0x4dab14=_0x4dab14-0x0;var _0xf41aa=_0x7d9f[_0x4dab14];return _0xf41aa;};'use strict';var _=require(_0xf7d9('0x0'));var util=require(_0xf7d9('0x1'));var logger=require(_0xf7d9('0x2'))(_0xf7d9('0x3'));var moment=require(_0xf7d9('0x4'));var BPromise=require('bluebird');var rp=require(_0xf7d9('0x5'));var fs=require('fs');var path=require(_0xf7d9('0x6'));var rimraf=require(_0xf7d9('0x7'));var config=require(_0xf7d9('0x8'));var attributes=require(_0xf7d9('0x9'));module['exports']=function(_0x4b50c7,_0x2eb0f1){return _0x4b50c7[_0xf7d9('0xa')]('WhatsappApplication',attributes,{'tableName':_0xf7d9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf7d9('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xaf93=['path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','WhatsappApplication','utf8mb4','lodash','util','moment','bluebird'];(function(_0x3a7634,_0x2db384){var _0x23bbe9=function(_0x226734){while(--_0x226734){_0x3a7634['push'](_0x3a7634['shift']());}};_0x23bbe9(++_0x2db384);}(_0xaf93,0x151));var _0x3af9=function(_0x545942,_0x10e02c){_0x545942=_0x545942-0x0;var _0x3d0499=_0xaf93[_0x545942];return _0x3d0499;};'use strict';var _=require(_0x3af9('0x0'));var util=require(_0x3af9('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x3af9('0x2'));var BPromise=require(_0x3af9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3af9('0x4'));var rimraf=require(_0x3af9('0x5'));var config=require(_0x3af9('0x6'));var attributes=require(_0x3af9('0x7'));module[_0x3af9('0x8')]=function(_0x1ad446,_0x333abb){return _0x1ad446['define'](_0x3af9('0x9'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3af9('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index e4fc8e4..9a64dc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x3cfdf3,_0x2d3ca8){var _0xf4b57f=function(_0x4d7b79){while(--_0x4d7b79){_0x3cfdf3['push'](_0x3cfdf3['shift']());}};_0xf4b57f(++_0x2d3ca8);}(_0x425d,0x1e0));var _0xd425=function(_0x54a6b1,_0x3399e9){_0x54a6b1=_0x54a6b1-0x0;var _0x453d7b=_0x425d[_0x54a6b1];return _0x453d7b;};'use strict';var _=require(_0xd425('0x0'));var util=require('util');var moment=require(_0xd425('0x1'));var BPromise=require(_0xd425('0x2'));var rs=require(_0xd425('0x3'));var fs=require('fs');var Redis=require(_0xd425('0x4'));var db=require(_0xd425('0x5'))['db'];var utils=require(_0xd425('0x6'));var logger=require(_0xd425('0x7'))('rpc');var config=require(_0xd425('0x8'));var jayson=require(_0xd425('0x9'));var client=jayson[_0xd425('0xa')][_0xd425('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d97d9,_0x1d2ed0,_0x50b061){return new BPromise(function(_0xb6ba8e,_0x374c3d){return client[_0xd425('0xc')](_0x1d97d9,_0x50b061)[_0xd425('0xd')](function(_0x2db9da){logger[_0xd425('0xe')](_0xd425('0xf'),_0x1d2ed0,_0xd425('0x10'));logger[_0xd425('0x11')](_0xd425('0x12'),_0x1d2ed0,_0xd425('0x10'),JSON[_0xd425('0x13')](_0x2db9da));if(_0x2db9da[_0xd425('0x14')]){if(_0x2db9da[_0xd425('0x14')][_0xd425('0x15')]===0x1f4){logger[_0xd425('0x14')](_0xd425('0xf'),_0x1d2ed0,_0x2db9da[_0xd425('0x14')][_0xd425('0x16')]);return _0x374c3d(_0x2db9da[_0xd425('0x14')]['message']);}logger[_0xd425('0x14')](_0xd425('0xf'),_0x1d2ed0,_0x2db9da[_0xd425('0x14')]['message']);return _0xb6ba8e(_0x2db9da[_0xd425('0x14')][_0xd425('0x16')]);}else{logger[_0xd425('0xe')](_0xd425('0xf'),_0x1d2ed0,_0xd425('0x10'));_0xb6ba8e(_0x2db9da['result'][_0xd425('0x16')]);}})[_0xd425('0x17')](function(_0x7e267e){logger[_0xd425('0x14')]('WhatsappApplication,\x20%s,\x20%s',_0x1d2ed0,_0x7e267e);_0x374c3d(_0x7e267e);});});}
\ No newline at end of file
+var _0x207c=['message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','http','request','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','error'];(function(_0x1defb2,_0x429099){var _0xad8973=function(_0xe26c42){while(--_0xe26c42){_0x1defb2['push'](_0x1defb2['shift']());}};_0xad8973(++_0x429099);}(_0x207c,0x1e8));var _0xc207=function(_0xf61c79,_0x43c6fa){_0xf61c79=_0xf61c79-0x0;var _0x127d26=_0x207c[_0xf61c79];return _0x127d26;};'use strict';var _=require('lodash');var util=require(_0xc207('0x0'));var moment=require(_0xc207('0x1'));var BPromise=require(_0xc207('0x2'));var rs=require(_0xc207('0x3'));var fs=require('fs');var Redis=require(_0xc207('0x4'));var db=require(_0xc207('0x5'))['db'];var utils=require(_0xc207('0x6'));var logger=require('../../config/logger')(_0xc207('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xc207('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x314561,_0x3395e4,_0x59ff6f){return new BPromise(function(_0x25cb97,_0xad159b){return client[_0xc207('0x9')](_0x314561,_0x59ff6f)['then'](function(_0xffae6c){logger[_0xc207('0xa')](_0xc207('0xb'),_0x3395e4,_0xc207('0xc'));logger[_0xc207('0xd')](_0xc207('0xe'),_0x3395e4,'request\x20sent',JSON['stringify'](_0xffae6c));if(_0xffae6c['error']){if(_0xffae6c[_0xc207('0xf')]['code']===0x1f4){logger[_0xc207('0xf')](_0xc207('0xb'),_0x3395e4,_0xffae6c['error'][_0xc207('0x10')]);return _0xad159b(_0xffae6c[_0xc207('0xf')][_0xc207('0x10')]);}logger[_0xc207('0xf')](_0xc207('0xb'),_0x3395e4,_0xffae6c['error'][_0xc207('0x10')]);return _0x25cb97(_0xffae6c[_0xc207('0xf')][_0xc207('0x10')]);}else{logger[_0xc207('0xa')]('WhatsappApplication,\x20%s,\x20%s',_0x3395e4,'request\x20sent');_0x25cb97(_0xffae6c['result'][_0xc207('0x10')]);}})[_0xc207('0x11')](function(_0x3d9c7b){logger[_0xc207('0xf')]('WhatsappApplication,\x20%s,\x20%s',_0x3395e4,_0x3d9c7b);_0xad159b(_0x3d9c7b);});});}
\ No newline at end of file
index bb735f2..af671d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf767=['removeTags','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','isAuthenticated','index','get','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:update','delete'];(function(_0x3c9f86,_0x57eee3){var _0x648c=function(_0x525539){while(--_0x525539){_0x3c9f86['push'](_0x3c9f86['shift']());}};_0x648c(++_0x57eee3);}(_0xf767,0x76));var _0x7f76=function(_0x25efdf,_0x521462){_0x25efdf=_0x25efdf-0x0;var _0x22c495=_0xf767[_0x25efdf];return _0x22c495;};'use strict';var multer=require('multer');var util=require(_0x7f76('0x0'));var path=require(_0x7f76('0x1'));var timeout=require(_0x7f76('0x2'));var express=require(_0x7f76('0x3'));var router=express[_0x7f76('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7f76('0x5'));var interaction=require(_0x7f76('0x6'));var config=require(_0x7f76('0x7'));var controller=require(_0x7f76('0x8'));router['get']('/',auth[_0x7f76('0x9')](),controller[_0x7f76('0xa')]);router[_0x7f76('0xb')](_0x7f76('0xc'),auth[_0x7f76('0x9')](),controller['describe']);router[_0x7f76('0xb')](_0x7f76('0xd'),auth[_0x7f76('0x9')](),controller[_0x7f76('0xe')]);router['get'](_0x7f76('0xf'),auth['isAuthenticated'](),controller[_0x7f76('0x10')]);router[_0x7f76('0xb')](_0x7f76('0x11'),auth[_0x7f76('0x9')](),controller[_0x7f76('0x12')]);router[_0x7f76('0x13')]('/',auth['isAuthenticated'](),controller[_0x7f76('0x14')]);router[_0x7f76('0x13')](_0x7f76('0xf'),auth[_0x7f76('0x9')](),controller[_0x7f76('0x15')]);router['post'](_0x7f76('0x16'),auth['isAuthenticated'](),interaction[_0x7f76('0x17')](_0x7f76('0x18'),'whatsappinteraction:addtags'),controller['addTags']);router['put'](_0x7f76('0xd'),auth[_0x7f76('0x9')](),interaction[_0x7f76('0x17')]('whatsapp',_0x7f76('0x19')),controller['update']);router[_0x7f76('0x1a')](_0x7f76('0xd'),auth[_0x7f76('0x9')](),interaction['tracked']('whatsapp','whatsappinteraction:destroy'),controller['destroy']);router['delete'](_0x7f76('0x16'),auth[_0x7f76('0x9')](),controller[_0x7f76('0x1b')]);module[_0x7f76('0x1c')]=router;
\ No newline at end of file
+var _0x5334=['connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','index','describe','get','/:id','isAuthenticated','show','/:id/messages','getMessages','/:id/download','post','create','/:id/tags','tracked','whatsappinteraction:addtags','whatsapp','whatsappinteraction:update','update','destroy','removeTags','multer','util','path'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0x5334,0x84));var _0x4533=function(_0x25e8e8,_0x34f7df){_0x25e8e8=_0x25e8e8-0x0;var _0x563f39=_0x5334[_0x25e8e8];return _0x563f39;};'use strict';var multer=require(_0x4533('0x0'));var util=require(_0x4533('0x1'));var path=require(_0x4533('0x2'));var timeout=require(_0x4533('0x3'));var express=require(_0x4533('0x4'));var router=express['Router']();var fs_extra=require(_0x4533('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4533('0x6'));var config=require(_0x4533('0x7'));var controller=require('./whatsappInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x4533('0x8')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x4533('0x9')]);router[_0x4533('0xa')](_0x4533('0xb'),auth[_0x4533('0xc')](),controller[_0x4533('0xd')]);router[_0x4533('0xa')](_0x4533('0xe'),auth['isAuthenticated'](),controller[_0x4533('0xf')]);router[_0x4533('0xa')](_0x4533('0x10'),auth[_0x4533('0xc')](),controller['download']);router[_0x4533('0x11')]('/',auth['isAuthenticated'](),controller[_0x4533('0x12')]);router[_0x4533('0x11')](_0x4533('0xe'),auth[_0x4533('0xc')](),controller['addMessage']);router[_0x4533('0x11')](_0x4533('0x13'),auth[_0x4533('0xc')](),interaction[_0x4533('0x14')]('whatsapp',_0x4533('0x15')),controller['addTags']);router['put'](_0x4533('0xb'),auth[_0x4533('0xc')](),interaction['tracked'](_0x4533('0x16'),_0x4533('0x17')),controller[_0x4533('0x18')]);router['delete'](_0x4533('0xb'),auth['isAuthenticated'](),interaction[_0x4533('0x14')](_0x4533('0x16'),'whatsappinteraction:destroy'),controller[_0x4533('0x19')]);router['delete']('/:id/tags',auth[_0x4533('0xc')](),controller[_0x4533('0x1a')]);module['exports']=router;
\ No newline at end of file
index 25e97fd..f5df376 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf29c=['STRING','ENUM','out','moment','exports','BOOLEAN','DATE'];(function(_0x28a3e7,_0xee96f8){var _0x37e334=function(_0x36b198){while(--_0x36b198){_0x28a3e7['push'](_0x28a3e7['shift']());}};_0x37e334(++_0xee96f8);}(_0xf29c,0xc7));var _0xcf29=function(_0x5e54df,_0x22f872){_0x5e54df=_0x5e54df-0x0;var _0x45bd8a=_0xf29c[_0x5e54df];return _0x45bd8a;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xcf29('0x0'));module[_0xcf29('0x1')]={'closed':{'type':Sequelize[_0xcf29('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xcf29('0x3')]},'disposition':{'type':Sequelize[_0xcf29('0x4')]},'secondDisposition':{'type':Sequelize[_0xcf29('0x4')]},'thirdDisposition':{'type':Sequelize[_0xcf29('0x4')]},'note':{'type':Sequelize[_0xcf29('0x4')]},'phone':{'type':Sequelize[_0xcf29('0x4')]},'read1stAt':{'type':Sequelize[_0xcf29('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xcf29('0x5')]('in',_0xcf29('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xcf29('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xcf29('0x5')]('in',_0xcf29('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xcf29('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9485=['DATE','ENUM','out','sequelize','moment','exports','BOOLEAN','STRING'];(function(_0x144d7b,_0x4e0e8c){var _0x484738=function(_0x301b84){while(--_0x301b84){_0x144d7b['push'](_0x144d7b['shift']());}};_0x484738(++_0x4e0e8c);}(_0x9485,0x8b));var _0x5948=function(_0xc7bc01,_0x3868b5){_0xc7bc01=_0xc7bc01-0x0;var _0x566813=_0x9485[_0xc7bc01];return _0x566813;};'use strict';var Sequelize=require(_0x5948('0x0'));var moment=require(_0x5948('0x1'));module[_0x5948('0x2')]={'closed':{'type':Sequelize[_0x5948('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x5948('0x4')]},'secondDisposition':{'type':Sequelize[_0x5948('0x4')]},'thirdDisposition':{'type':Sequelize[_0x5948('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x5948('0x4')]},'read1stAt':{'type':Sequelize[_0x5948('0x5')]},'firstMsgDirection':{'type':Sequelize[_0x5948('0x6')]('in',_0x5948('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x5948('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x5948('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x5948('0x3')],'defaultValue':![]}};
\ No newline at end of file
index b4528ee..20c3045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2043=['ids','getMessages','format','include','addTags','setTags','spread','findAll','whatsappInteractionTags:save','removeTags','download','unix','server','tmp','join','root','attachments','CmContact','firstName','lastName','Attachment','direction','secret','Account','Owner','get','mkdirSync','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','disposition','Messages','basename','existsSync','createReadStream','pipe','out','System','renderFile','views','transcript-','.pdf','Whatsapp','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','then','error','stack','name','send','Users','fullname','TagIds','Tags','split','forEach','catch','map','WhatsappInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','select','field','color','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','whatsapp_accounts','whatsapp_messages','whatsapp_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','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)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','compact','isEmpty','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','contactName','order','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','role','WhatsappAccountId','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.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','Contact.fax','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','push','all','rows','show','params','includeAll','options','create','describe','addMessage','WhatsappMessage','omit'];(function(_0x2291f1,_0x4a379b){var _0x26713c=function(_0x1ae593){while(--_0x1ae593){_0x2291f1['push'](_0x2291f1['shift']());}};_0x26713c(++_0x4a379b);}(_0x2043,0x122));var _0x3204=function(_0x3135d7,_0x1829ed){_0x3135d7=_0x3135d7-0x0;var _0x370c07=_0x2043[_0x3135d7];return _0x370c07;};'use strict';var emlformat=require(_0x3204('0x0'));var rimraf=require(_0x3204('0x1'));var zipdir=require(_0x3204('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3204('0x3'));var BPromise=require(_0x3204('0x4'));var Mustache=require(_0x3204('0x5'));var util=require(_0x3204('0x6'));var path=require(_0x3204('0x7'));var sox=require(_0x3204('0x8'));var csv=require(_0x3204('0x9'));var ejs=require(_0x3204('0xa'));var fs=require('fs');var fs_extra=require(_0x3204('0xb'));var _=require(_0x3204('0xc'));var squel=require(_0x3204('0xd'));var crypto=require('crypto');var jsforce=require(_0x3204('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x3204('0x9'));var querystring=require(_0x3204('0xf'));var Papa=require(_0x3204('0x10'));var Redis=require(_0x3204('0x11'));var authService=require(_0x3204('0x12'));var qs=require(_0x3204('0x13'));var as=require(_0x3204('0x14'));var pdf=require(_0x3204('0x15'));var hardwareService=require(_0x3204('0x16'));var logger=require(_0x3204('0x17'))(_0x3204('0x18'));var utils=require('../../config/utils');var config=require(_0x3204('0x19'));var licenseUtil=require(_0x3204('0x1a'));var db=require(_0x3204('0x1b'))['db'];config['redis']=_[_0x3204('0x1c')](config[_0x3204('0x1d')],{'host':_0x3204('0x1e'),'port':0x18eb});var socket=require(_0x3204('0x1f'))(new Redis(config[_0x3204('0x1d')]));require('./whatsappInteraction.socket')[_0x3204('0x20')](socket);function respondWithStatusCode(_0x127f83,_0x48d9d5){_0x48d9d5=_0x48d9d5||0xcc;return function(_0x4ed143){if(_0x4ed143){return _0x127f83[_0x3204('0x21')](_0x48d9d5);}return _0x127f83[_0x3204('0x22')](_0x48d9d5)[_0x3204('0x23')]();};}function respondWithResult(_0x586c52,_0x28e798){_0x28e798=_0x28e798||0xc8;return function(_0x1a038e){if(_0x1a038e){return _0x586c52[_0x3204('0x22')](_0x28e798)['json'](_0x1a038e);}};}function respondWithFilteredResult(_0x41cb7b,_0x35edce){return function(_0x218c9b){if(_0x218c9b){var _0x1fbf21=typeof _0x35edce['offset']===_0x3204('0x24')&&typeof _0x35edce[_0x3204('0x25')]===_0x3204('0x24');var _0x2b3c2e=_0x218c9b[_0x3204('0x26')];var _0x4a0ad9=_0x1fbf21?0x0:_0x35edce[_0x3204('0x27')];var _0x513209=_0x1fbf21?_0x218c9b[_0x3204('0x26')]:_0x35edce[_0x3204('0x27')]+_0x35edce[_0x3204('0x25')];var _0x140580;if(_0x513209>=_0x2b3c2e){_0x513209=_0x2b3c2e;_0x140580=0xc8;}else{_0x140580=0xce;}_0x41cb7b[_0x3204('0x22')](_0x140580);return _0x41cb7b[_0x3204('0x28')](_0x3204('0x29'),_0x4a0ad9+'-'+_0x513209+'/'+_0x2b3c2e)[_0x3204('0x2a')](_0x218c9b);}return null;};}function patchUpdates(_0xd0aa4c){return function(_0x292b2e){try{jsonpatch[_0x3204('0x2b')](_0x292b2e,_0xd0aa4c,!![]);}catch(_0x50ba9d){return BPromise[_0x3204('0x2c')](_0x50ba9d);}return _0x292b2e[_0x3204('0x2d')]();};}function saveUpdates(_0x33c388,_0x88d20b){return function(_0x923384){if(_0x923384){return _0x923384[_0x3204('0x2e')](_0x33c388)['then'](function(_0x5529d5){return _0x5529d5;});}return null;};}function removeEntity(_0x5c6bc5,_0x3388c2){return function(_0x7185db){if(_0x7185db){return _0x7185db[_0x3204('0x2f')]()[_0x3204('0x30')](function(){_0x5c6bc5[_0x3204('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d7e7b,_0x642fbe){return function(_0x30b33b){if(!_0x30b33b){_0x3d7e7b[_0x3204('0x21')](0x194);}return _0x30b33b;};}function handleError(_0x4d7dca,_0x451c08){_0x451c08=_0x451c08||0x1f4;return function(_0xd7a029){logger[_0x3204('0x31')](_0xd7a029[_0x3204('0x32')]);if(_0xd7a029[_0x3204('0x33')]){delete _0xd7a029[_0x3204('0x33')];}_0x4d7dca['status'](_0x451c08)[_0x3204('0x34')](_0xd7a029);};}function getInteractionUsers(_0x28ffda,_0x2cc74f){return new BPromise(function(_0x23eb4d,_0x1caec0){try{if(_0x2cc74f[_0x28ffda['id']]){_0x28ffda[_0x3204('0x35')]=_['map'](_0x2cc74f[_0x28ffda['id']],function(_0x3bdc51){return{'id':_0x3bdc51['id'],'fullname':_0x3bdc51[_0x3204('0x36')]};});}}catch(_0x167493){_0x1caec0(_0x167493);}_0x23eb4d(_0x28ffda);});}function getInteractionTags(_0xfa7414,_0x1eb55d){return new BPromise(function(_0x5c8b2b,_0x228f14){try{if(_0xfa7414[_0x3204('0x37')]){_0xfa7414[_0x3204('0x38')]=[];_0xfa7414['TagIds'][_0x3204('0x39')](',')[_0x3204('0x3a')](function(_0x441731){_0xfa7414[_0x3204('0x38')]['push'](_0x1eb55d[_0x441731]);});}delete _0xfa7414['TagIds'];}catch(_0x4930ba){_0x228f14(_0x4930ba);}_0x5c8b2b(_0xfa7414);});}function updateWhatsappInteraction(_0x8885b8,_0x330f27,_0x3399cb){return new BPromise(function(_0x2138d9,_0x50e0e7){return getInteractionUsers(_0x8885b8,_0x3399cb)['then'](function(_0x5d2ed7){return getInteractionTags(_0x5d2ed7,_0x330f27);})[_0x3204('0x30')](function(_0x49f706){_0x2138d9(_0x49f706);})[_0x3204('0x3b')](function(_0x31e888){_0x50e0e7(_0x31e888);});});}exports['index']=function(_0x4b9dfe,_0xadbf8b){var _0x54bbd4={},_0x1172ec={},_0xca85d={'count':0x0,'rows':[]};var _0xe1eb17=_[_0x3204('0x3c')](db[_0x3204('0x3d')][_0x3204('0x3e')],function(_0x467f77){return{'name':_0x467f77[_0x3204('0x3f')],'type':_0x467f77[_0x3204('0x40')][_0x3204('0x41')]};});_0x1172ec[_0x3204('0x42')]=_[_0x3204('0x3c')](_0xe1eb17,_0x3204('0x33'));_0x1172ec[_0x3204('0x43')]=_[_0x3204('0x44')](_0x4b9dfe[_0x3204('0x43')]);_0x1172ec[_0x3204('0x45')]=_[_0x3204('0x46')](_0x1172ec[_0x3204('0x42')],_0x1172ec[_0x3204('0x43')]);_0x54bbd4[_0x3204('0x47')]=_[_0x3204('0x46')](_0x1172ec['model'],qs[_0x3204('0x48')](_0x4b9dfe[_0x3204('0x43')]['fields']));_0x54bbd4['attributes']=_0x54bbd4[_0x3204('0x47')][_0x3204('0x49')]?_0x54bbd4['attributes']:_0x1172ec[_0x3204('0x42')];if(!_0x4b9dfe[_0x3204('0x43')][_0x3204('0x4a')](_0x3204('0x4b'))){_0x54bbd4[_0x3204('0x25')]=qs[_0x3204('0x25')](_0x4b9dfe[_0x3204('0x43')]['limit']);_0x54bbd4[_0x3204('0x27')]=qs[_0x3204('0x27')](_0x4b9dfe[_0x3204('0x43')][_0x3204('0x27')]);}_0x54bbd4['order']=qs[_0x3204('0x4c')](_0x4b9dfe[_0x3204('0x43')][_0x3204('0x4c')]);_0x54bbd4[_0x3204('0x4d')]=qs[_0x3204('0x45')](_['pick'](_0x4b9dfe[_0x3204('0x43')],_0x1172ec[_0x3204('0x45')]),_0xe1eb17);var _0x2ee6d2=[];var _0x545864=squel[_0x3204('0x4e')]()[_0x3204('0x4f')]('id')[_0x3204('0x4f')](_0x3204('0x33'))['field'](_0x3204('0x50'))['from'](_0x3204('0x51'));var _0x76d648=squel['select']()[_0x3204('0x4f')](_0x3204('0x52'))[_0x3204('0x4f')](_0x3204('0x53'))[_0x3204('0x4f')](_0x3204('0x54'))['from'](_0x3204('0x55'),'ui')[_0x3204('0x56')](_0x3204('0x57'),'u',_0x3204('0x58'));var _0x8e8cce=squel['select']()['from']('whatsapp_interactions','i')[_0x3204('0x56')](_0x3204('0x59'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x3204('0x56')](_0x3204('0x57'),'o',_0x3204('0x5a'))['left_join'](_0x3204('0x5b'),'a','a.id\x20=\x20i.WhatsappAccountId')['left_join'](_0x3204('0x5c'),'me','me.WhatsappInteractionId\x20=\x20i.id')[_0x3204('0x56')](_0x3204('0x5d'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0x3204('0x56')](_0x3204('0x51'),'t',_0x3204('0x5e'));var _0x4c4c06=squel[_0x3204('0x5f')]();var _0xfd4696=[];var _0xf49648=squel['expr']();var _0x3e47c0;if(_0x4b9dfe[_0x3204('0x43')][_0x3204('0x60')]){_0x3e47c0=as[_0x3204('0x61')](_0x4b9dfe[_0x3204('0x43')][_0x3204('0x60')]);var _0x1e4bf7=_0x3e47c0[_0x3204('0x62')];for(var _0x2fff52=0x0;_0x2fff52<_0x3e47c0['conditions'][_0x3204('0x49')];_0x2fff52++){var _0x3a0641=_0x3e47c0['conditions'][_0x2fff52];var _0x414c9c='i';var _0xb91af8=_[_0x3204('0x63')](_0xe1eb17,['name',_0x3a0641[_0x3204('0x4f')]]);if(!_0xb91af8){switch(_0x3a0641[_0x3204('0x4f')]){case _0x3204('0x64'):if(_0x3a0641[_0x3204('0x65')]==0x1){_0x8e8cce['having']('`'+_0x3a0641[_0x3204('0x4f')]+'`\x20=\x200');}else{_0x8e8cce[_0x3204('0x66')]('`'+_0x3a0641[_0x3204('0x4f')]+_0x3204('0x67'));}break;case _0x3204('0x68'):if(_0x3a0641['operator']===_0x3204('0x69')){if(_0x3a0641[_0x3204('0x65')]['split']('\x20')[_0x3204('0x49')]>0x1){_0x4c4c06[_0x1e4bf7](_0x3204('0x6a'),qs[_0x3204('0x6b')](_0x3a0641[_0x3204('0x65')]),null);}else{var _0x34dc4a='%'+_0x3a0641[_0x3204('0x65')]+'%';_0x4c4c06[_0x1e4bf7](_0x3204('0x6c'),_0x34dc4a,_0x34dc4a,_0x34dc4a);}}else{_0xb91af8=_[_0x3204('0x63')](_0xe1eb17,[_0x3204('0x33'),_0x3204('0x6d')]);_0x3a0641[_0x3204('0x4f')]='ContactId';_0x4cc523=as[_0x3204('0x6e')](_0x414c9c,_0xb91af8[_0x3204('0x40')],_0x3a0641);_0x4c4c06[_0x1e4bf7](_0x4cc523[_0x3204('0x6f')],_0x4cc523['value'][_0x3204('0x70')],_0x4cc523[_0x3204('0x65')][_0x3204('0x23')]);}break;case _0x3204('0x71'):var _0x56f27e=_0x3a0641[_0x3204('0x65')]['split'](',')['map'](function(_0x2d5490){return Number(_0x2d5490);});_0x56f27e[_0x3204('0x3a')](function(_0x3ca6b8){_0xf49648['or'](_0x3204('0x72'),'%,'+_0x3ca6b8+',%');});_0xfd4696=_[_0x3204('0x73')](_0xfd4696,_0x56f27e);break;case _0x3204('0x74'):if(_0x3a0641[_0x3204('0x75')]===_0x3204('0x69')){_0x4c4c06[_0x1e4bf7](_0x3204('0x76'),'%'+_0x3a0641[_0x3204('0x65')]+'%',null);}else{_0xb91af8=_[_0x3204('0x63')](_0xe1eb17,[_0x3204('0x33'),_0x3204('0x77')]);_0x3a0641[_0x3204('0x4f')]='UserId';_0x4cc523=as[_0x3204('0x6e')](_0x414c9c,_0xb91af8[_0x3204('0x40')],_0x3a0641);_0x4c4c06[_0x1e4bf7](_0x4cc523[_0x3204('0x6f')],_0x4cc523[_0x3204('0x65')][_0x3204('0x70')],_0x4cc523[_0x3204('0x65')][_0x3204('0x23')]);}break;case _0x3204('0x78'):_0x4cc523=as[_0x3204('0x6e')]('me',null,_0x3a0641);_0x4c4c06[_0x1e4bf7](_0x4cc523[_0x3204('0x6f')],_0x4cc523[_0x3204('0x65')][_0x3204('0x70')],_0x4cc523['value'][_0x3204('0x23')]);break;}}else{var _0x4cc523=as[_0x3204('0x6e')](_0x414c9c,_0xb91af8['type'],_0x3a0641);_0x4c4c06[_0x1e4bf7](_0x4cc523[_0x3204('0x6f')],_0x4cc523[_0x3204('0x65')]['start'],_0x4cc523['value'][_0x3204('0x23')]);}}}else{var _0x5a5a75=_(_0x4b9dfe[_0x3204('0x43')])[_0x3204('0x44')]()[_0x3204('0x3c')](function(_0x1c5214){return _[_0x3204('0x79')](_0xe1eb17,['name',_0x1c5214])?_0x1c5214:undefined;})[_0x3204('0x7a')]()[_0x3204('0x65')]();if(!_[_0x3204('0x7b')](_0x5a5a75)){_0x5a5a75[_0x3204('0x3a')](function(_0xf5f651){if(_0xf5f651==='WhatsappAccountId'){_0x8e8cce[_0x3204('0x4d')](_0x3204('0x7c'),[][_0x3204('0x7d')](_0x4b9dfe['query'][_0xf5f651]));}else if(_0xf5f651===_0x3204('0x7e')){var _0x73c182=JSON[_0x3204('0x7f')](_0x4b9dfe[_0x3204('0x43')][_0xf5f651])[_0x3204('0x80')];var _0x3734b5=JSON['parse'](_0x4b9dfe[_0x3204('0x43')][_0xf5f651])['$lte'];_0x8e8cce[_0x3204('0x4d')](_0x3204('0x81'),_0x73c182,_0x3734b5);}else{if(_0x4b9dfe[_0x3204('0x43')][_0xf5f651]===_0x3204('0x82')){_0x8e8cce[_0x3204('0x4d')]('i.'+_0xf5f651+'\x20IS\x20NULL');}else{_0x8e8cce[_0x3204('0x4d')]('i.'+_0xf5f651+_0x3204('0x83'),_0x4b9dfe[_0x3204('0x43')][_0xf5f651]);}}});}if(_0x4b9dfe['query'][_0x3204('0x84')]){if(_0x4b9dfe['query'][_0x3204('0x84')]==0x1){_0x8e8cce[_0x3204('0x66')](_0x3204('0x85'));}else{_0x8e8cce[_0x3204('0x66')](_0x3204('0x86'));}}if(_0x4b9dfe[_0x3204('0x43')][_0x3204('0x87')]){_0xfd4696=_[_0x3204('0x88')](_0x4b9dfe['query'][_0x3204('0x87')])?_0x4b9dfe['query'][_0x3204('0x87')]:new Array(_0x4b9dfe[_0x3204('0x43')][_0x3204('0x87')]);_0xfd4696[_0x3204('0x3a')](function(_0x26e1d7){_0xf49648['or'](_0x3204('0x72'),'%,'+_0x26e1d7+',%');});}if(_0x4b9dfe[_0x3204('0x43')][_0x3204('0x89')]){var _0x172be6=_0x4b9dfe[_0x3204('0x43')]['filter'][_0x3204('0x8a')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x3204('0x8b')](_0x172be6)){_0x4c4c06['or']('i.id\x20LIKE\x20?',_0x172be6+'%')['or']('i.phone\x20LIKE\x20?',_0x172be6+'%');}else{_0x4c4c06['or'](_0x3204('0x8c'),qs[_0x3204('0x6b')](_0x172be6))['or'](_0x3204('0x8d'),_0x172be6+'%');}}}_0x8e8cce[_0x3204('0x4d')](_0x4c4c06);_0x8e8cce['group'](_0x3204('0x8e'));var _0x520df3={'type':db[_0x3204('0x8f')][_0x3204('0x90')][_0x3204('0x91')],'raw':!![]};var _0x4e712f=_0x8e8cce['clone']();_0x4e712f[_0x3204('0x4f')](_0x3204('0x8e'));_0x4e712f[_0x3204('0x4f')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x3204('0x64'));if(_0x54bbd4['order']){_0x54bbd4['order']['forEach'](function(_0x43933a){var _0x3c0460=_0x43933a[0x0]===_0x3204('0x92')?_0x43933a[0x0]:'i.'+_0x43933a[0x0];_0x8e8cce[_0x3204('0x93')](_0x3c0460,_0x43933a[0x1]==='DESC'?![]:!![]);});}if(!_[_0x3204('0x7b')](_0xfd4696)){_0x8e8cce['having'](_0xf49648);_0x4e712f['where'](_0x3204('0x94'),_0xfd4696);}BPromise[_0x3204('0x95')]()[_0x3204('0x30')](function(){if(!_0x3e47c0){if(_0x4b9dfe[_0x3204('0x43')]['WhatsappAccountId'])return;_0x4e712f[_0x3204('0x4d')](_0x3204('0x96'));_0x8e8cce['where']('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x4b9dfe[_0x3204('0x97')]['role']!==_0x3204('0x98'))return;return _0x4b9dfe[_0x3204('0x97')][_0x3204('0x99')]({'attributes':['id'],'raw':!![]})['then'](function(_0x3327f5){if(_[_0x3204('0x7b')](_0x3327f5)){_0x4e712f[_0x3204('0x4d')](_0x3204('0x9a'));_0x8e8cce[_0x3204('0x4d')](_0x3204('0x9a'));}else{_0x4e712f[_0x3204('0x4d')](_0x3204('0x7c'),_[_0x3204('0x3c')](_0x3327f5,'id'));_0x8e8cce[_0x3204('0x4d')](_0x3204('0x7c'),_[_0x3204('0x3c')](_0x3327f5,'id'));}});})[_0x3204('0x30')](function(){if(_0x4b9dfe[_0x3204('0x97')][_0x3204('0x9b')]===_0x3204('0x98')&&!_0x3e47c0&&!_0x4b9dfe[_0x3204('0x43')][_0x3204('0x9c')])return[];return db[_0x3204('0x9d')][_0x3204('0x43')](_0x4e712f[_0x3204('0x9e')](),_0x520df3);})['then'](function(_0xcaf003){_0xca85d[_0x3204('0x26')]=_0xcaf003[_0x3204('0x49')];if(_0xca85d[_0x3204('0x26')]===0x0)return[];return db[_0x3204('0x9d')]['query'](_0x545864[_0x3204('0x9e')](),_0x520df3)[_0x3204('0x30')](function(_0x527211){_0x2ee6d2=_[_0x3204('0x9f')](_0x527211,'id');_0x520df3=_[_0x3204('0xa0')](_0x520df3,{'model':db['WhatsappInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4b9dfe['query']['fields']){_0x54bbd4[_0x3204('0x47')][_0x3204('0x3a')](function(_0x183660){_0x8e8cce[_0x3204('0x4f')]('i.'+_0x183660);});}else{_0x8e8cce[_0x3204('0x4f')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x3204('0x64'));_0x8e8cce[_0x3204('0x4f')](_0x3204('0xa1'),_0x3204('0xa2'));_0x8e8cce[_0x3204('0x4f')](_0x3204('0xa3'),_0x3204('0xa4'));_0x8e8cce[_0x3204('0x4f')](_0x3204('0xa5'),'contactName');_0x8e8cce[_0x3204('0x4f')](_0x3204('0xa6'));_0x8e8cce[_0x3204('0x4f')](_0x3204('0xa7'),_0x3204('0xa8'));_0x8e8cce['field'](_0x3204('0xa9'),_0x3204('0xaa'));_0x8e8cce[_0x3204('0x4f')](_0x3204('0xab'),_0x3204('0xac'));_0x8e8cce[_0x3204('0x4f')](_0x3204('0xad'),_0x3204('0xae'));_0x8e8cce['field'](_0x3204('0xaf'),_0x3204('0xb0'));_0x8e8cce[_0x3204('0x4f')]('c.fax',_0x3204('0xb1'));_0x8e8cce[_0x3204('0x4f')]('o.fullname',_0x3204('0xb2'));_0x8e8cce[_0x3204('0x4f')](_0x3204('0xb3'),'Owner.internal');_0x8e8cce[_0x3204('0x4f')](_0x3204('0xb4'),_0x3204('0x37'));}if(_0x54bbd4['limit'])_0x8e8cce['limit'](_0x54bbd4[_0x3204('0x25')]);if(_0x54bbd4[_0x3204('0x27')])_0x8e8cce[_0x3204('0x27')](_0x54bbd4['offset']);return db['sequelize']['query'](_0x8e8cce['toString'](),_0x520df3);})[_0x3204('0x30')](function(_0x327392){if(_0x327392[_0x3204('0x49')]>0x0)_0x76d648[_0x3204('0x4d')](_0x3204('0xb5'),_[_0x3204('0x3c')](_0x327392,'id'));return db[_0x3204('0x9d')][_0x3204('0x43')](_0x76d648[_0x3204('0x9e')](),_0x520df3)[_0x3204('0x30')](function(_0x5ea13c){var _0x50264c=_[_0x3204('0xb6')](_0x5ea13c,_0x3204('0xb7'));var _0x4580c4=[];_0x327392[_0x3204('0x3a')](function(_0x2178ef){_0x4580c4[_0x3204('0xb8')](updateWhatsappInteraction(_0x2178ef,_0x2ee6d2,_0x50264c));});return BPromise[_0x3204('0xb9')](_0x4580c4);});});})[_0x3204('0x30')](function(_0x364059){_0xca85d[_0x3204('0xba')]=_0x364059;return _0xca85d;})['then'](respondWithFilteredResult(_0xadbf8b,_0x54bbd4))[_0x3204('0x3b')](handleError(_0xadbf8b,null));};exports[_0x3204('0xbb')]=function(_0x37f775,_0x20da43){var _0x191918={'raw':![],'where':{'id':_0x37f775[_0x3204('0xbc')]['id']}},_0x25cb90={};_0x25cb90['model']=_[_0x3204('0x44')](db[_0x3204('0x3d')]['rawAttributes']);_0x25cb90[_0x3204('0x43')]=_[_0x3204('0x44')](_0x37f775[_0x3204('0x43')]);_0x25cb90[_0x3204('0x45')]=_[_0x3204('0x46')](_0x25cb90[_0x3204('0x42')],_0x25cb90['query']);_0x191918[_0x3204('0x47')]=_['intersection'](_0x25cb90['model'],qs[_0x3204('0x48')](_0x37f775[_0x3204('0x43')][_0x3204('0x48')]));_0x191918[_0x3204('0x47')]=_0x191918[_0x3204('0x47')][_0x3204('0x49')]?_0x191918[_0x3204('0x47')]:_0x25cb90['model'];if(_0x37f775[_0x3204('0x43')][_0x3204('0xbd')]){_0x191918['include']=[{'all':!![]}];}_0x191918=_['merge']({},_0x191918,_0x37f775[_0x3204('0xbe')]);return db[_0x3204('0x3d')]['find'](_0x191918)[_0x3204('0x30')](handleEntityNotFound(_0x20da43,null))[_0x3204('0x30')](respondWithResult(_0x20da43,null))[_0x3204('0x3b')](handleError(_0x20da43,null));};exports['create']=function(_0x1a0a28,_0x9ddf8e){return db[_0x3204('0x3d')][_0x3204('0xbf')](_0x1a0a28['body'],{})[_0x3204('0x30')](respondWithResult(_0x9ddf8e,0xc9))[_0x3204('0x3b')](handleError(_0x9ddf8e,null));};exports[_0x3204('0x2e')]=function(_0x2a0f5b,_0x14349a){if(_0x2a0f5b['body']['id']){delete _0x2a0f5b['body']['id'];}return db[_0x3204('0x3d')]['find']({'where':{'id':_0x2a0f5b['params']['id']}})[_0x3204('0x30')](handleEntityNotFound(_0x14349a,null))[_0x3204('0x30')](saveUpdates(_0x2a0f5b[_0x3204('0x78')],null))[_0x3204('0x30')](respondWithResult(_0x14349a,null))['catch'](handleError(_0x14349a,null));};exports['destroy']=function(_0x345967,_0x44e444){return db['WhatsappInteraction']['find']({'where':{'id':_0x345967[_0x3204('0xbc')]['id']}})[_0x3204('0x30')](handleEntityNotFound(_0x44e444,null))[_0x3204('0x30')](removeEntity(_0x44e444,null))[_0x3204('0x3b')](handleError(_0x44e444,null));};exports[_0x3204('0xc0')]=function(_0x1df335,_0x1802b6){return db[_0x3204('0x3d')]['describe']()[_0x3204('0x30')](respondWithResult(_0x1802b6,null))[_0x3204('0x3b')](handleError(_0x1802b6,null));};exports[_0x3204('0xc1')]=function(_0x3388f1,_0x33b218,_0x12be5f){return db[_0x3204('0xc2')][_0x3204('0x63')]({'where':{'id':_0x3388f1[_0x3204('0xbc')]['id']}})[_0x3204('0x30')](handleEntityNotFound(_0x33b218,null))[_0x3204('0x30')](function(_0x57e5d0){if(_0x57e5d0){return _0x57e5d0[_0x3204('0xc1')](_0x3388f1[_0x3204('0x78')]['ids'],_[_0x3204('0xc3')](_0x3388f1[_0x3204('0x78')],[_0x3204('0xc4'),'id'])||{});}})[_0x3204('0x30')](respondWithResult(_0x33b218,null))[_0x3204('0x3b')](handleError(_0x33b218,null));};exports[_0x3204('0xc5')]=function(_0x1a170c,_0x24e814,_0x42825d){var _0x366065={'raw':![],'where':{}};var _0x59dc63={};var _0xdaf1e9={'count':0x0,'rows':[]};return db[_0x3204('0x3d')]['findOne']({'where':{'id':_0x1a170c[_0x3204('0xbc')]['id']}})[_0x3204('0x30')](handleEntityNotFound(_0x24e814,null))[_0x3204('0x30')](function(_0x2a00e2){if(_0x2a00e2){_0x59dc63[_0x3204('0x42')]=_['keys'](db['WhatsappMessage'][_0x3204('0x3e')]);_0x59dc63['query']=_[_0x3204('0x44')](_0x1a170c[_0x3204('0x43')]);_0x59dc63['filters']=_[_0x3204('0x46')](_0x59dc63[_0x3204('0x42')],_0x59dc63[_0x3204('0x43')]);_0x366065[_0x3204('0x47')]=_[_0x3204('0x46')](_0x59dc63[_0x3204('0x42')],qs['fields'](_0x1a170c[_0x3204('0x43')]['fields']));_0x366065[_0x3204('0x47')]=_0x366065[_0x3204('0x47')][_0x3204('0x49')]?_0x366065[_0x3204('0x47')]:_0x59dc63['model'];if(!_0x1a170c[_0x3204('0x43')][_0x3204('0x4a')](_0x3204('0x4b'))){_0x366065[_0x3204('0x25')]=qs[_0x3204('0x25')](_0x1a170c[_0x3204('0x43')][_0x3204('0x25')]);_0x366065[_0x3204('0x27')]=qs[_0x3204('0x27')](_0x1a170c['query'][_0x3204('0x27')]);}_0x366065[_0x3204('0x93')]=qs[_0x3204('0x4c')](_0x1a170c[_0x3204('0x43')][_0x3204('0x4c')]);_0x366065[_0x3204('0x4d')]=qs[_0x3204('0x45')](_['pick'](_0x1a170c[_0x3204('0x43')],_0x59dc63[_0x3204('0x45')]));_0x366065[_0x3204('0x4d')][_0x3204('0xb7')]=_0x2a00e2['id'];if(_0x1a170c[_0x3204('0x43')]['filter']){_0x366065[_0x3204('0x4d')]=_[_0x3204('0xa0')](_0x366065[_0x3204('0x4d')],{'$or':_['map'](_0x366065[_0x3204('0x47')],function(_0x44860d){var _0x2effc6={};_0x2effc6[_0x44860d]={'$like':'%'+_0x1a170c[_0x3204('0x43')][_0x3204('0x89')]+'%'};return _0x2effc6;})});}if(_0x1a170c[_0x3204('0x43')][_0x3204('0x80')]){var _0x5d1018=_0x1a170c['query'][_0x3204('0x80')][_0x3204('0x39')](',');var _0x2f4bac={};_0x2f4bac[_0x5d1018[0x0]]={'$gte':moment(_0x5d1018[0x1])[_0x3204('0xc6')]('YYYY-MM-DD\x20HH:mm:ss')};_0x366065['where']=_[_0x3204('0xa0')](_0x366065[_0x3204('0x4d')],_0x2f4bac);}_0x366065=_['merge']({},_0x366065,_0x1a170c['options']);return db[_0x3204('0xc2')][_0x3204('0x26')]({'where':_0x366065['where']})[_0x3204('0x30')](function(_0x16c578){_0xdaf1e9['count']=_0x16c578;if(_0x1a170c[_0x3204('0x43')][_0x3204('0xbd')]){_0x366065[_0x3204('0xc7')]=[{'all':!![]}];}return db[_0x3204('0xc2')]['findAll'](_0x366065);})['then'](function(_0xa1ee74){_0xdaf1e9[_0x3204('0xba')]=_0xa1ee74;return _0xdaf1e9;});}})[_0x3204('0x30')](respondWithFilteredResult(_0x24e814,_0x366065))['catch'](handleError(_0x24e814,null));};exports[_0x3204('0xc8')]=function(_0x296d3a,_0x42a615,_0x4b72de){return db[_0x3204('0x3d')]['find']({'where':{'id':_0x296d3a[_0x3204('0xbc')]['id']}})[_0x3204('0x30')](handleEntityNotFound(_0x42a615,null))[_0x3204('0x30')](function(_0x53c685){if(_0x53c685){return _0x53c685[_0x3204('0xc9')](_0x296d3a[_0x3204('0x78')][_0x3204('0xc4')],_[_0x3204('0xc3')](_0x296d3a[_0x3204('0x78')],[_0x3204('0xc4'),'id'])||{})[_0x3204('0xca')](function(){return db[_0x3204('0x71')][_0x3204('0xcb')]({'attributes':['id',_0x3204('0x33'),_0x3204('0x50')],'where':{'id':_0x296d3a[_0x3204('0x78')][_0x3204('0xc4')]}});})[_0x3204('0x30')](function(_0x54059a){socket['emit'](_0x3204('0xcc'),{'id':Number(_0x296d3a[_0x3204('0xbc')]['id']),'tags':_0x54059a||[]});return{'id':Number(_0x296d3a[_0x3204('0xbc')]['id']),'tags':_0x54059a||[]};});}})[_0x3204('0x30')](respondWithResult(_0x42a615,null))[_0x3204('0x3b')](handleError(_0x42a615,null));};exports[_0x3204('0xcd')]=function(_0x17c761,_0x110e0b,_0x51a5d7){return db[_0x3204('0x3d')][_0x3204('0x63')]({'where':{'id':_0x17c761[_0x3204('0xbc')]['id']}})[_0x3204('0x30')](handleEntityNotFound(_0x110e0b,null))[_0x3204('0x30')](function(_0x7c3bd1){if(_0x7c3bd1){return _0x7c3bd1['removeTags'](_0x17c761[_0x3204('0x43')]['ids']);}})[_0x3204('0x30')](respondWithStatusCode(_0x110e0b,null))['catch'](handleError(_0x110e0b,null));};exports[_0x3204('0xce')]=function(_0x419b41,_0x4cd7c5){var _0x4e3302=moment()[_0x3204('0xcf')]()[_0x3204('0x9e')]();var _0x226b19=path['join'](config['root'],_0x3204('0xd0'),'files',_0x3204('0xd1'));var _0x391f88=path[_0x3204('0xd2')](config[_0x3204('0xd3')],_0x3204('0xd0'),'files',_0x3204('0xd4'));var _0x42babb=path['join'](_0x226b19,_0x4e3302);var _0x517efa=util['format']('transcript-%d-%s.zip',_0x419b41[_0x3204('0xbc')]['id'],_0x4e3302);var _0x278f51=path[_0x3204('0xd2')](_0x226b19,_0x517efa);var _0x7683fd=[];_0x7683fd[_0x3204('0xb8')]({'model':db[_0x3204('0x74')],'as':_0x3204('0x74'),'attributes':['id','fullname'],'raw':!![]});_0x7683fd[_0x3204('0xb8')]({'model':db[_0x3204('0xd5')],'as':'Contact','attributes':['id',_0x3204('0xd6'),_0x3204('0xd7')],'raw':!![]});if(_0x419b41[_0x3204('0x43')]['attachments']){_0x7683fd[_0x3204('0xb8')]({'model':db[_0x3204('0xd8')],'as':_0x3204('0xd8'),'raw':!![]});}var _0x2d5ca4=[{'model':db[_0x3204('0xc2')],'as':'Messages','attributes':['id',_0x3204('0x78'),_0x3204('0x7e'),_0x3204('0xd9'),_0x3204('0xda'),_0x3204('0x84')],'include':_0x7683fd}];_0x2d5ca4[_0x3204('0xb8')]({'model':db['WhatsappAccount'],'as':_0x3204('0xdb'),'attributes':['id',_0x3204('0x33')]});_0x2d5ca4[_0x3204('0xb8')]({'model':db[_0x3204('0x74')],'as':_0x3204('0xdc'),'attributes':['id',_0x3204('0x36')]});return db[_0x3204('0x3d')][_0x3204('0x63')]({'where':{'id':_0x419b41[_0x3204('0xbc')]['id']},'include':_0x2d5ca4})[_0x3204('0x30')](handleEntityNotFound(_0x4cd7c5,null))[_0x3204('0x30')](function(_0x2e67c8){if(_0x2e67c8){var _0x5d8d33=_0x2e67c8[_0x3204('0xdd')]({'plain':!![]});fs[_0x3204('0xde')](_0x42babb);var _0x3957ed={'channel':'Whatsapp','account':_0x5d8d33[_0x3204('0xdb')]['name'],'agent':_0x5d8d33['Owner']?_0x5d8d33[_0x3204('0xdc')][_0x3204('0x36')]:_0x3204('0xdf'),'createdAt':moment(_0x5d8d33[_0x3204('0x7e')])[_0x3204('0xc6')](_0x3204('0xe0'))[_0x3204('0x9e')](),'closedAt':_0x5d8d33[_0x3204('0xe1')]?moment(_0x5d8d33['closedAt'])[_0x3204('0xc6')](_0x3204('0xe0'))['toString']():'','disposition':_0x5d8d33[_0x3204('0xe2')],'messages':_(_0x5d8d33[_0x3204('0xe3')])[_0x3204('0x89')]({'secret':![]})['map'](function(_0x5a4623){if(_0x5a4623[_0x3204('0xd8')]){var _0x310bb=path[_0x3204('0xd2')](_0x391f88,_0x5a4623[_0x3204('0xd8')][_0x3204('0xe4')]);if(fs[_0x3204('0xe5')](_0x310bb)){fs[_0x3204('0xe6')](_0x310bb)[_0x3204('0xe7')](fs['createWriteStream'](path[_0x3204('0xd2')](_0x42babb,_0x5a4623['Attachment'][_0x3204('0xe4')])));}}return{'date':moment(_0x5a4623[_0x3204('0x7e')])[_0x3204('0xc6')]('YYYY-MM-DD\x20HH:mm:ss')[_0x3204('0x9e')](),'sender':_0x5a4623[_0x3204('0xd9')]===_0x3204('0xe8')?_0x5a4623['User']?_0x5a4623[_0x3204('0x74')][_0x3204('0x36')]:_0x3204('0xe9'):_0x5a4623[_0x3204('0x68')]['firstName']+(_0x5a4623[_0x3204('0x68')][_0x3204('0xd7')]?'\x20'+_0x5a4623['Contact'][_0x3204('0xd7')]:''),'body':_0x5a4623['Attachment']?_0x5a4623['Attachment'][_0x3204('0xe4')]:_0x5a4623['body'],'direction':_0x5a4623[_0x3204('0xd9')]===_0x3204('0xe8')?'A':'C','secret':_0x5a4623['secret'],'read':_0x5a4623[_0x3204('0x84')],'attachment':_0x5a4623['Attachment']};})['value']()};return ejs[_0x3204('0xea')](path[_0x3204('0xd2')](config[_0x3204('0xd3')],_0x3204('0xd0'),_0x3204('0xeb'),'downloadInteraction.ejs'),{'interaction':_0x3957ed})[_0x3204('0x30')](function(_0x47cacd){var _0x10c06e=path[_0x3204('0xd2')](_0x42babb,_0x3204('0xec')+_0x5d8d33['id']+'-'+_0x4e3302+_0x3204('0xed'));var _0x2d5ac7={'path':_0x10c06e,'channel':_0x3204('0xee'),'interactionId':_0x5d8d33['id']};return pdf[_0x3204('0xef')](_0x47cacd,_0x2d5ac7);})[_0x3204('0x30')](function(){return new BPromise(function(_0x41b1fd,_0x169831){zipdir(_0x42babb,{'saveTo':_0x278f51},function(_0x4b39d6,_0x3de3de){if(_0x4b39d6)return _0x169831(_0x4b39d6);return _0x41b1fd(_0x3de3de);});})[_0x3204('0x30')](function(){return new BPromise(function(_0x51f991,_0x1f1586){rimraf(_0x42babb,function(_0x261e22){if(_0x261e22)_0x1f1586(_0x261e22);return _0x51f991();});});})[_0x3204('0x30')](function(){return _0x4cd7c5[_0x3204('0xce')](_0x278f51,_0x517efa,function(_0x2b80ae){if(_0x2b80ae){console[_0x3204('0xf0')](_0x3204('0xf1'),_0x2b80ae);}else{fs[_0x3204('0xf2')](_0x278f51);}});});});}else{return _0x4cd7c5[_0x3204('0x21')](0xc8);}})[_0x3204('0x3b')](handleError(_0x4cd7c5,null));};
\ No newline at end of file
+var _0xfb3c=['basename','existsSync','createReadStream','pipe','createWriteStream','out','System','lastName','secret','renderFile','server','views','downloadInteraction.ejs','transcript-','Whatsapp','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','end','error','name','send','Users','map','fullname','Tags','forEach','push','catch','index','WhatsappInteraction','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','field','color','tools_tags','select','u.id','from','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','left_join','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','split','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','Tag','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','start','some','compact','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','i.*','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','WhatsappInteractionId','all','rows','show','params','includeAll','include','options','create','body','destroy','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','emit','whatsappInteractionTags:save','removeTags','download','unix','join','root','files','tmp','attachments','transcript-%d-%s.zip','firstName','Attachment','direction','Account','Owner','get','N.A.','closed','closedAt','disposition','Messages'];(function(_0x3c126c,_0x22f353){var _0x3b89e4=function(_0x1472c0){while(--_0x1472c0){_0x3c126c['push'](_0x3c126c['shift']());}};_0x3b89e4(++_0x22f353);}(_0xfb3c,0x1df));var _0xcfb3=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xfb3c[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require(_0xcfb3('0x0'));var rimraf=require(_0xcfb3('0x1'));var zipdir=require(_0xcfb3('0x2'));var jsonpatch=require(_0xcfb3('0x3'));var rp=require('request-promise');var moment=require(_0xcfb3('0x4'));var BPromise=require(_0xcfb3('0x5'));var Mustache=require('mustache');var util=require(_0xcfb3('0x6'));var path=require(_0xcfb3('0x7'));var sox=require('sox');var csv=require(_0xcfb3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcfb3('0x9'));var _=require(_0xcfb3('0xa'));var squel=require(_0xcfb3('0xb'));var crypto=require(_0xcfb3('0xc'));var jsforce=require(_0xcfb3('0xd'));var deskjs=require(_0xcfb3('0xe'));var toCsv=require(_0xcfb3('0x8'));var querystring=require(_0xcfb3('0xf'));var Papa=require(_0xcfb3('0x10'));var Redis=require('ioredis');var authService=require(_0xcfb3('0x11'));var qs=require(_0xcfb3('0x12'));var as=require(_0xcfb3('0x13'));var pdf=require(_0xcfb3('0x14'));var hardwareService=require(_0xcfb3('0x15'));var logger=require(_0xcfb3('0x16'))(_0xcfb3('0x17'));var utils=require(_0xcfb3('0x18'));var config=require(_0xcfb3('0x19'));var licenseUtil=require(_0xcfb3('0x1a'));var db=require(_0xcfb3('0x1b'))['db'];config[_0xcfb3('0x1c')]=_[_0xcfb3('0x1d')](config[_0xcfb3('0x1c')],{'host':_0xcfb3('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcfb3('0x1c')]));require(_0xcfb3('0x1f'))[_0xcfb3('0x20')](socket);function respondWithStatusCode(_0x5d1c65,_0x45283a){_0x45283a=_0x45283a||0xcc;return function(_0x5d530b){if(_0x5d530b){return _0x5d1c65[_0xcfb3('0x21')](_0x45283a);}return _0x5d1c65[_0xcfb3('0x22')](_0x45283a)['end']();};}function respondWithResult(_0x32db42,_0x281041){_0x281041=_0x281041||0xc8;return function(_0x23165d){if(_0x23165d){return _0x32db42[_0xcfb3('0x22')](_0x281041)[_0xcfb3('0x23')](_0x23165d);}};}function respondWithFilteredResult(_0x4ed4f4,_0x11d50c){return function(_0x22f066){if(_0x22f066){var _0x207206=typeof _0x11d50c[_0xcfb3('0x24')]==='undefined'&&typeof _0x11d50c['limit']===_0xcfb3('0x25');var _0x1981b8=_0x22f066[_0xcfb3('0x26')];var _0x5b777e=_0x207206?0x0:_0x11d50c['offset'];var _0x40b0f6=_0x207206?_0x22f066['count']:_0x11d50c[_0xcfb3('0x24')]+_0x11d50c[_0xcfb3('0x27')];var _0x13a370;if(_0x40b0f6>=_0x1981b8){_0x40b0f6=_0x1981b8;_0x13a370=0xc8;}else{_0x13a370=0xce;}_0x4ed4f4['status'](_0x13a370);return _0x4ed4f4[_0xcfb3('0x28')]('Content-Range',_0x5b777e+'-'+_0x40b0f6+'/'+_0x1981b8)['json'](_0x22f066);}return null;};}function patchUpdates(_0x522161){return function(_0x181a46){try{jsonpatch[_0xcfb3('0x29')](_0x181a46,_0x522161,!![]);}catch(_0x14ae25){return BPromise[_0xcfb3('0x2a')](_0x14ae25);}return _0x181a46[_0xcfb3('0x2b')]();};}function saveUpdates(_0x594ca9,_0x49ffd1){return function(_0x2edbf5){if(_0x2edbf5){return _0x2edbf5[_0xcfb3('0x2c')](_0x594ca9)[_0xcfb3('0x2d')](function(_0x2df6c5){return _0x2df6c5;});}return null;};}function removeEntity(_0x6155ed,_0x1b6e23){return function(_0x2a9f2d){if(_0x2a9f2d){return _0x2a9f2d['destroy']()[_0xcfb3('0x2d')](function(){_0x6155ed[_0xcfb3('0x22')](0xcc)[_0xcfb3('0x2e')]();});}};}function handleEntityNotFound(_0x5b943a,_0x48ae26){return function(_0x103010){if(!_0x103010){_0x5b943a[_0xcfb3('0x21')](0x194);}return _0x103010;};}function handleError(_0x1f9844,_0x44c118){_0x44c118=_0x44c118||0x1f4;return function(_0x25da79){logger[_0xcfb3('0x2f')](_0x25da79['stack']);if(_0x25da79[_0xcfb3('0x30')]){delete _0x25da79[_0xcfb3('0x30')];}_0x1f9844[_0xcfb3('0x22')](_0x44c118)[_0xcfb3('0x31')](_0x25da79);};}function getInteractionUsers(_0x52c9aa,_0x116f41){return new BPromise(function(_0x3f4284,_0x22db21){try{if(_0x116f41[_0x52c9aa['id']]){_0x52c9aa[_0xcfb3('0x32')]=_[_0xcfb3('0x33')](_0x116f41[_0x52c9aa['id']],function(_0xaea3a0){return{'id':_0xaea3a0['id'],'fullname':_0xaea3a0[_0xcfb3('0x34')]};});}}catch(_0x5c05e8){_0x22db21(_0x5c05e8);}_0x3f4284(_0x52c9aa);});}function getInteractionTags(_0x1b5939,_0x471670){return new BPromise(function(_0x102b61,_0x256f1d){try{if(_0x1b5939['TagIds']){_0x1b5939[_0xcfb3('0x35')]=[];_0x1b5939['TagIds']['split'](',')[_0xcfb3('0x36')](function(_0x4c2da2){_0x1b5939[_0xcfb3('0x35')][_0xcfb3('0x37')](_0x471670[_0x4c2da2]);});}delete _0x1b5939['TagIds'];}catch(_0x2928d0){_0x256f1d(_0x2928d0);}_0x102b61(_0x1b5939);});}function updateWhatsappInteraction(_0x366a80,_0x5449b6,_0x201733){return new BPromise(function(_0x32c897,_0x3dea16){return getInteractionUsers(_0x366a80,_0x201733)[_0xcfb3('0x2d')](function(_0x4e4758){return getInteractionTags(_0x4e4758,_0x5449b6);})[_0xcfb3('0x2d')](function(_0x5519cb){_0x32c897(_0x5519cb);})[_0xcfb3('0x38')](function(_0x4d0d8c){_0x3dea16(_0x4d0d8c);});});}exports[_0xcfb3('0x39')]=function(_0x352abf,_0x5ded87){var _0x1f4dff={},_0x2c0859={},_0xf7d4b1={'count':0x0,'rows':[]};var _0x3d66f9=_[_0xcfb3('0x33')](db[_0xcfb3('0x3a')][_0xcfb3('0x3b')],function(_0x3017ab){return{'name':_0x3017ab[_0xcfb3('0x3c')],'type':_0x3017ab[_0xcfb3('0x3d')][_0xcfb3('0x3e')]};});_0x2c0859[_0xcfb3('0x3f')]=_['map'](_0x3d66f9,_0xcfb3('0x30'));_0x2c0859['query']=_[_0xcfb3('0x40')](_0x352abf[_0xcfb3('0x41')]);_0x2c0859[_0xcfb3('0x42')]=_[_0xcfb3('0x43')](_0x2c0859[_0xcfb3('0x3f')],_0x2c0859[_0xcfb3('0x41')]);_0x1f4dff['attributes']=_[_0xcfb3('0x43')](_0x2c0859[_0xcfb3('0x3f')],qs[_0xcfb3('0x44')](_0x352abf['query'][_0xcfb3('0x44')]));_0x1f4dff[_0xcfb3('0x45')]=_0x1f4dff[_0xcfb3('0x45')]['length']?_0x1f4dff[_0xcfb3('0x45')]:_0x2c0859[_0xcfb3('0x3f')];if(!_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x46')]('nolimit')){_0x1f4dff[_0xcfb3('0x27')]=qs[_0xcfb3('0x27')](_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x27')]);_0x1f4dff['offset']=qs['offset'](_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x24')]);}_0x1f4dff[_0xcfb3('0x47')]=qs['sort'](_0x352abf['query'][_0xcfb3('0x48')]);_0x1f4dff[_0xcfb3('0x49')]=qs[_0xcfb3('0x42')](_[_0xcfb3('0x4a')](_0x352abf[_0xcfb3('0x41')],_0x2c0859[_0xcfb3('0x42')]),_0x3d66f9);var _0x2b9d5=[];var _0x374527=squel['select']()[_0xcfb3('0x4b')]('id')[_0xcfb3('0x4b')](_0xcfb3('0x30'))[_0xcfb3('0x4b')](_0xcfb3('0x4c'))['from'](_0xcfb3('0x4d'));var _0x310c3c=squel[_0xcfb3('0x4e')]()['field'](_0xcfb3('0x4f'))['field']('u.fullname')['field']('ui.WhatsappInteractionId')[_0xcfb3('0x50')]('user_has_whatsapp_interactions','ui')['left_join'](_0xcfb3('0x51'),'u',_0xcfb3('0x52'));var _0x3549c8=squel[_0xcfb3('0x4e')]()[_0xcfb3('0x50')](_0xcfb3('0x53'),'i')[_0xcfb3('0x54')]('cm_contacts','c',_0xcfb3('0x55'))[_0xcfb3('0x54')](_0xcfb3('0x51'),'o',_0xcfb3('0x56'))[_0xcfb3('0x54')](_0xcfb3('0x57'),'a',_0xcfb3('0x58'))[_0xcfb3('0x54')](_0xcfb3('0x59'),'me','me.WhatsappInteractionId\x20=\x20i.id')['left_join']('whatsapp_interaction_has_tags','it',_0xcfb3('0x5a'))[_0xcfb3('0x54')](_0xcfb3('0x4d'),'t',_0xcfb3('0x5b'));var _0x37f26b=squel['expr']();var _0x46d04e=[];var _0x1d4d37=squel[_0xcfb3('0x5c')]();var _0x48893a;if(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x5d')]){_0x48893a=as[_0xcfb3('0x5e')](_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x5d')]);var _0x38370c=_0x48893a[_0xcfb3('0x5f')];for(var _0x3810de=0x0;_0x3810de<_0x48893a[_0xcfb3('0x60')]['length'];_0x3810de++){var _0x15947a=_0x48893a[_0xcfb3('0x60')][_0x3810de];var _0x1dccff='i';var _0x3078f3=_[_0xcfb3('0x61')](_0x3d66f9,[_0xcfb3('0x30'),_0x15947a[_0xcfb3('0x4b')]]);if(!_0x3078f3){switch(_0x15947a['field']){case _0xcfb3('0x62'):if(_0x15947a[_0xcfb3('0x63')]==0x1){_0x3549c8[_0xcfb3('0x64')]('`'+_0x15947a['field']+_0xcfb3('0x65'));}else{_0x3549c8[_0xcfb3('0x64')]('`'+_0x15947a[_0xcfb3('0x4b')]+_0xcfb3('0x66'));}break;case _0xcfb3('0x67'):if(_0x15947a[_0xcfb3('0x68')]===_0xcfb3('0x69')){if(_0x15947a[_0xcfb3('0x63')][_0xcfb3('0x6a')]('\x20')[_0xcfb3('0x6b')]>0x1){_0x37f26b[_0x38370c](_0xcfb3('0x6c'),qs['getFullTextValue'](_0x15947a['value']),null);}else{var _0x917c76='%'+_0x15947a[_0xcfb3('0x63')]+'%';_0x37f26b[_0x38370c](_0xcfb3('0x6d'),_0x917c76,_0x917c76,_0x917c76);}}else{_0x3078f3=_['find'](_0x3d66f9,[_0xcfb3('0x30'),'ContactId']);_0x15947a['field']=_0xcfb3('0x6e');_0x87ae88=as['buildExpression'](_0x1dccff,_0x3078f3['type'],_0x15947a);_0x37f26b[_0x38370c](_0x87ae88[_0xcfb3('0x6f')],_0x87ae88[_0xcfb3('0x63')]['start'],_0x87ae88[_0xcfb3('0x63')][_0xcfb3('0x2e')]);}break;case _0xcfb3('0x70'):var _0x2ed230=_0x15947a[_0xcfb3('0x63')]['split'](',')[_0xcfb3('0x33')](function(_0x3d0abf){return Number(_0x3d0abf);});_0x2ed230['forEach'](function(_0x315dda){_0x1d4d37['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x315dda+',%');});_0x46d04e=_['union'](_0x46d04e,_0x2ed230);break;case _0xcfb3('0x71'):if(_0x15947a[_0xcfb3('0x68')]===_0xcfb3('0x69')){_0x37f26b[_0x38370c](_0xcfb3('0x72'),'%'+_0x15947a[_0xcfb3('0x63')]+'%',null);}else{_0x3078f3=_[_0xcfb3('0x61')](_0x3d66f9,[_0xcfb3('0x30'),_0xcfb3('0x73')]);_0x15947a[_0xcfb3('0x4b')]='UserId';_0x87ae88=as[_0xcfb3('0x74')](_0x1dccff,_0x3078f3[_0xcfb3('0x3d')],_0x15947a);_0x37f26b[_0x38370c](_0x87ae88[_0xcfb3('0x6f')],_0x87ae88[_0xcfb3('0x63')][_0xcfb3('0x75')],_0x87ae88['value'][_0xcfb3('0x2e')]);}break;case'body':_0x87ae88=as['buildExpression']('me',null,_0x15947a);_0x37f26b[_0x38370c](_0x87ae88[_0xcfb3('0x6f')],_0x87ae88['value']['start'],_0x87ae88[_0xcfb3('0x63')]['end']);break;}}else{var _0x87ae88=as[_0xcfb3('0x74')](_0x1dccff,_0x3078f3['type'],_0x15947a);_0x37f26b[_0x38370c](_0x87ae88[_0xcfb3('0x6f')],_0x87ae88['value'][_0xcfb3('0x75')],_0x87ae88['value'][_0xcfb3('0x2e')]);}}}else{var _0x4304a8=_(_0x352abf[_0xcfb3('0x41')])[_0xcfb3('0x40')]()[_0xcfb3('0x33')](function(_0x50d502){return _[_0xcfb3('0x76')](_0x3d66f9,[_0xcfb3('0x30'),_0x50d502])?_0x50d502:undefined;})[_0xcfb3('0x77')]()[_0xcfb3('0x63')]();if(!_['isEmpty'](_0x4304a8)){_0x4304a8[_0xcfb3('0x36')](function(_0x1cea20){if(_0x1cea20===_0xcfb3('0x78')){_0x3549c8['where'](_0xcfb3('0x79'),[]['concat'](_0x352abf[_0xcfb3('0x41')][_0x1cea20]));}else if(_0x1cea20===_0xcfb3('0x7a')){var _0x79c0fa=JSON[_0xcfb3('0x7b')](_0x352abf[_0xcfb3('0x41')][_0x1cea20])[_0xcfb3('0x7c')];var _0x1e6380=JSON[_0xcfb3('0x7b')](_0x352abf[_0xcfb3('0x41')][_0x1cea20])['$lte'];_0x3549c8[_0xcfb3('0x49')](_0xcfb3('0x7d'),_0x79c0fa,_0x1e6380);}else{if(_0x352abf[_0xcfb3('0x41')][_0x1cea20]===_0xcfb3('0x7e')){_0x3549c8[_0xcfb3('0x49')]('i.'+_0x1cea20+_0xcfb3('0x7f'));}else{_0x3549c8['where']('i.'+_0x1cea20+_0xcfb3('0x80'),_0x352abf[_0xcfb3('0x41')][_0x1cea20]);}}});}if(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x81')]){if(_0x352abf[_0xcfb3('0x41')]['read']==0x1){_0x3549c8['having'](_0xcfb3('0x82'));}else{_0x3549c8[_0xcfb3('0x64')]('`unreadMessages`\x20>\x200');}}if(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x83')]){_0x46d04e=_['isArray'](_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x83')])?_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x83')]:new Array(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x83')]);_0x46d04e[_0xcfb3('0x36')](function(_0x10b861){_0x1d4d37['or'](_0xcfb3('0x84'),'%,'+_0x10b861+',%');});}if(_0x352abf['query'][_0xcfb3('0x85')]){var _0x4e32fe=_0x352abf[_0xcfb3('0x41')]['filter'][_0xcfb3('0x86')]('\x5c','\x5c\x5c')[_0xcfb3('0x86')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x4e32fe)){_0x37f26b['or'](_0xcfb3('0x87'),_0x4e32fe+'%')['or'](_0xcfb3('0x88'),_0x4e32fe+'%');}else{_0x37f26b['or'](_0xcfb3('0x89'),qs['getFullTextValue'](_0x4e32fe))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x4e32fe+'%');}}}_0x3549c8[_0xcfb3('0x49')](_0x37f26b);_0x3549c8['group']('i.id');var _0x3e498b={'type':db['Sequelize'][_0xcfb3('0x8a')][_0xcfb3('0x8b')],'raw':!![]};var _0xeb2a8a=_0x3549c8[_0xcfb3('0x8c')]();_0xeb2a8a[_0xcfb3('0x4b')]('i.id');_0xeb2a8a[_0xcfb3('0x4b')](_0xcfb3('0x8d'),_0xcfb3('0x62'));if(_0x1f4dff[_0xcfb3('0x47')]){_0x1f4dff['order'][_0xcfb3('0x36')](function(_0x4443f4){var _0x44f675=_0x4443f4[0x0]===_0xcfb3('0x8e')?_0x4443f4[0x0]:'i.'+_0x4443f4[0x0];_0x3549c8[_0xcfb3('0x47')](_0x44f675,_0x4443f4[0x1]===_0xcfb3('0x8f')?![]:!![]);});}if(!_[_0xcfb3('0x90')](_0x46d04e)){_0x3549c8[_0xcfb3('0x64')](_0x1d4d37);_0xeb2a8a['where']('t.id\x20IN\x20?',_0x46d04e);}BPromise['resolve']()[_0xcfb3('0x2d')](function(){if(!_0x48893a){if(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x78')])return;_0xeb2a8a[_0xcfb3('0x49')](_0xcfb3('0x91'));_0x3549c8[_0xcfb3('0x49')](_0xcfb3('0x91'));return;}if(_0x352abf[_0xcfb3('0x92')][_0xcfb3('0x93')]!==_0xcfb3('0x94'))return;return _0x352abf[_0xcfb3('0x92')][_0xcfb3('0x95')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4352da){if(_[_0xcfb3('0x90')](_0x4352da)){_0xeb2a8a[_0xcfb3('0x49')](_0xcfb3('0x96'));_0x3549c8[_0xcfb3('0x49')](_0xcfb3('0x96'));}else{_0xeb2a8a[_0xcfb3('0x49')](_0xcfb3('0x79'),_[_0xcfb3('0x33')](_0x4352da,'id'));_0x3549c8[_0xcfb3('0x49')](_0xcfb3('0x79'),_[_0xcfb3('0x33')](_0x4352da,'id'));}});})[_0xcfb3('0x2d')](function(){if(_0x352abf[_0xcfb3('0x92')][_0xcfb3('0x93')]===_0xcfb3('0x94')&&!_0x48893a&&!_0x352abf[_0xcfb3('0x41')]['WhatsappAccountId'])return[];return db[_0xcfb3('0x97')]['query'](_0xeb2a8a[_0xcfb3('0x98')](),_0x3e498b);})[_0xcfb3('0x2d')](function(_0x340e86){_0xf7d4b1[_0xcfb3('0x26')]=_0x340e86[_0xcfb3('0x6b')];if(_0xf7d4b1[_0xcfb3('0x26')]===0x0)return[];return db[_0xcfb3('0x97')]['query'](_0x374527[_0xcfb3('0x98')](),_0x3e498b)[_0xcfb3('0x2d')](function(_0x556de1){_0x2b9d5=_[_0xcfb3('0x99')](_0x556de1,'id');_0x3e498b=_[_0xcfb3('0x9a')](_0x3e498b,{'model':db[_0xcfb3('0x3a')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x352abf[_0xcfb3('0x41')][_0xcfb3('0x44')]){_0x1f4dff[_0xcfb3('0x45')][_0xcfb3('0x36')](function(_0xa66cd7){_0x3549c8['field']('i.'+_0xa66cd7);});}else{_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0x8d'),_0xcfb3('0x62'));_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0x9b'),_0xcfb3('0x9c'));_0x3549c8[_0xcfb3('0x4b')]('a.mandatoryDisposition',_0xcfb3('0x9d'));_0x3549c8[_0xcfb3('0x4b')]('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',_0xcfb3('0x8e'));_0x3549c8['field'](_0xcfb3('0x9e'));_0x3549c8[_0xcfb3('0x4b')]('c.firstName','Contact.firstName');_0x3549c8['field']('c.lastName','Contact.lastName');_0x3549c8[_0xcfb3('0x4b')]('c.email','Contact.email');_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0x9f'),_0xcfb3('0xa0'));_0x3549c8['field'](_0xcfb3('0xa1'),_0xcfb3('0xa2'));_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0xa3'),_0xcfb3('0xa4'));_0x3549c8[_0xcfb3('0x4b')]('o.fullname','Owner.fullname');_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0xa5'),'Owner.internal');_0x3549c8[_0xcfb3('0x4b')](_0xcfb3('0xa6'),_0xcfb3('0xa7'));}if(_0x1f4dff[_0xcfb3('0x27')])_0x3549c8[_0xcfb3('0x27')](_0x1f4dff['limit']);if(_0x1f4dff['offset'])_0x3549c8['offset'](_0x1f4dff[_0xcfb3('0x24')]);return db['sequelize'][_0xcfb3('0x41')](_0x3549c8[_0xcfb3('0x98')](),_0x3e498b);})[_0xcfb3('0x2d')](function(_0x3e60e3){if(_0x3e60e3[_0xcfb3('0x6b')]>0x0)_0x310c3c['where']('ui.WhatsappInteractionId\x20IN\x20?',_[_0xcfb3('0x33')](_0x3e60e3,'id'));return db[_0xcfb3('0x97')][_0xcfb3('0x41')](_0x310c3c['toString'](),_0x3e498b)[_0xcfb3('0x2d')](function(_0x4a2544){var _0x17aefb=_['groupBy'](_0x4a2544,_0xcfb3('0xa8'));var _0x1a5bee=[];_0x3e60e3['forEach'](function(_0x4839af){_0x1a5bee[_0xcfb3('0x37')](updateWhatsappInteraction(_0x4839af,_0x2b9d5,_0x17aefb));});return BPromise[_0xcfb3('0xa9')](_0x1a5bee);});});})['then'](function(_0x1aa5c0){_0xf7d4b1[_0xcfb3('0xaa')]=_0x1aa5c0;return _0xf7d4b1;})['then'](respondWithFilteredResult(_0x5ded87,_0x1f4dff))[_0xcfb3('0x38')](handleError(_0x5ded87,null));};exports[_0xcfb3('0xab')]=function(_0x2ae495,_0x5a3044){var _0x49ff47={'raw':![],'where':{'id':_0x2ae495[_0xcfb3('0xac')]['id']}},_0x162e9a={};_0x162e9a[_0xcfb3('0x3f')]=_[_0xcfb3('0x40')](db['WhatsappInteraction'][_0xcfb3('0x3b')]);_0x162e9a[_0xcfb3('0x41')]=_[_0xcfb3('0x40')](_0x2ae495[_0xcfb3('0x41')]);_0x162e9a[_0xcfb3('0x42')]=_[_0xcfb3('0x43')](_0x162e9a[_0xcfb3('0x3f')],_0x162e9a[_0xcfb3('0x41')]);_0x49ff47[_0xcfb3('0x45')]=_[_0xcfb3('0x43')](_0x162e9a[_0xcfb3('0x3f')],qs[_0xcfb3('0x44')](_0x2ae495['query'][_0xcfb3('0x44')]));_0x49ff47[_0xcfb3('0x45')]=_0x49ff47[_0xcfb3('0x45')][_0xcfb3('0x6b')]?_0x49ff47[_0xcfb3('0x45')]:_0x162e9a[_0xcfb3('0x3f')];if(_0x2ae495['query'][_0xcfb3('0xad')]){_0x49ff47[_0xcfb3('0xae')]=[{'all':!![]}];}_0x49ff47=_['merge']({},_0x49ff47,_0x2ae495[_0xcfb3('0xaf')]);return db[_0xcfb3('0x3a')][_0xcfb3('0x61')](_0x49ff47)['then'](handleEntityNotFound(_0x5a3044,null))[_0xcfb3('0x2d')](respondWithResult(_0x5a3044,null))[_0xcfb3('0x38')](handleError(_0x5a3044,null));};exports[_0xcfb3('0xb0')]=function(_0x109e85,_0x1d5d55){return db[_0xcfb3('0x3a')][_0xcfb3('0xb0')](_0x109e85['body'],{})[_0xcfb3('0x2d')](respondWithResult(_0x1d5d55,0xc9))['catch'](handleError(_0x1d5d55,null));};exports[_0xcfb3('0x2c')]=function(_0xc69141,_0x29c302){if(_0xc69141[_0xcfb3('0xb1')]['id']){delete _0xc69141['body']['id'];}return db[_0xcfb3('0x3a')]['find']({'where':{'id':_0xc69141[_0xcfb3('0xac')]['id']}})[_0xcfb3('0x2d')](handleEntityNotFound(_0x29c302,null))[_0xcfb3('0x2d')](saveUpdates(_0xc69141['body'],null))[_0xcfb3('0x2d')](respondWithResult(_0x29c302,null))[_0xcfb3('0x38')](handleError(_0x29c302,null));};exports[_0xcfb3('0xb2')]=function(_0x28f3e3,_0x4a45ca){return db['WhatsappInteraction']['find']({'where':{'id':_0x28f3e3['params']['id']}})[_0xcfb3('0x2d')](handleEntityNotFound(_0x4a45ca,null))[_0xcfb3('0x2d')](removeEntity(_0x4a45ca,null))[_0xcfb3('0x38')](handleError(_0x4a45ca,null));};exports[_0xcfb3('0xb3')]=function(_0x343936,_0xca1932){return db['WhatsappInteraction'][_0xcfb3('0xb3')]()[_0xcfb3('0x2d')](respondWithResult(_0xca1932,null))[_0xcfb3('0x38')](handleError(_0xca1932,null));};exports[_0xcfb3('0xb4')]=function(_0x5dbf06,_0x7be03,_0x30b42c){return db[_0xcfb3('0xb5')][_0xcfb3('0x61')]({'where':{'id':_0x5dbf06[_0xcfb3('0xac')]['id']}})[_0xcfb3('0x2d')](handleEntityNotFound(_0x7be03,null))['then'](function(_0x1d71c8){if(_0x1d71c8){return _0x1d71c8['addMessage'](_0x5dbf06[_0xcfb3('0xb1')][_0xcfb3('0xb6')],_[_0xcfb3('0xb7')](_0x5dbf06[_0xcfb3('0xb1')],['ids','id'])||{});}})[_0xcfb3('0x2d')](respondWithResult(_0x7be03,null))[_0xcfb3('0x38')](handleError(_0x7be03,null));};exports[_0xcfb3('0xb8')]=function(_0x365d8d,_0x242534,_0x123ea7){var _0x3b565a={'raw':![],'where':{}};var _0x864f9={};var _0x32221c={'count':0x0,'rows':[]};return db[_0xcfb3('0x3a')][_0xcfb3('0xb9')]({'where':{'id':_0x365d8d['params']['id']}})[_0xcfb3('0x2d')](handleEntityNotFound(_0x242534,null))[_0xcfb3('0x2d')](function(_0x3521cc){if(_0x3521cc){_0x864f9[_0xcfb3('0x3f')]=_[_0xcfb3('0x40')](db[_0xcfb3('0xb5')]['rawAttributes']);_0x864f9[_0xcfb3('0x41')]=_[_0xcfb3('0x40')](_0x365d8d[_0xcfb3('0x41')]);_0x864f9[_0xcfb3('0x42')]=_['intersection'](_0x864f9[_0xcfb3('0x3f')],_0x864f9[_0xcfb3('0x41')]);_0x3b565a['attributes']=_['intersection'](_0x864f9[_0xcfb3('0x3f')],qs[_0xcfb3('0x44')](_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0x44')]));_0x3b565a[_0xcfb3('0x45')]=_0x3b565a[_0xcfb3('0x45')][_0xcfb3('0x6b')]?_0x3b565a['attributes']:_0x864f9[_0xcfb3('0x3f')];if(!_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0x46')](_0xcfb3('0xba'))){_0x3b565a['limit']=qs[_0xcfb3('0x27')](_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0x27')]);_0x3b565a[_0xcfb3('0x24')]=qs[_0xcfb3('0x24')](_0x365d8d['query']['offset']);}_0x3b565a['order']=qs['sort'](_0x365d8d['query'][_0xcfb3('0x48')]);_0x3b565a[_0xcfb3('0x49')]=qs[_0xcfb3('0x42')](_[_0xcfb3('0x4a')](_0x365d8d['query'],_0x864f9[_0xcfb3('0x42')]));_0x3b565a['where']['WhatsappInteractionId']=_0x3521cc['id'];if(_0x365d8d[_0xcfb3('0x41')]['filter']){_0x3b565a[_0xcfb3('0x49')]=_[_0xcfb3('0x9a')](_0x3b565a[_0xcfb3('0x49')],{'$or':_['map'](_0x3b565a[_0xcfb3('0x45')],function(_0x37aaca){var _0x2f4c6b={};_0x2f4c6b[_0x37aaca]={'$like':'%'+_0x365d8d[_0xcfb3('0x41')]['filter']+'%'};return _0x2f4c6b;})});}if(_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0x7c')]){var _0x40aa23=_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0x7c')][_0xcfb3('0x6a')](',');var _0x3aa372={};_0x3aa372[_0x40aa23[0x0]]={'$gte':moment(_0x40aa23[0x1])[_0xcfb3('0xbb')](_0xcfb3('0xbc'))};_0x3b565a['where']=_['merge'](_0x3b565a[_0xcfb3('0x49')],_0x3aa372);}_0x3b565a=_[_0xcfb3('0x9a')]({},_0x3b565a,_0x365d8d[_0xcfb3('0xaf')]);return db[_0xcfb3('0xb5')][_0xcfb3('0x26')]({'where':_0x3b565a[_0xcfb3('0x49')]})[_0xcfb3('0x2d')](function(_0x273da1){_0x32221c[_0xcfb3('0x26')]=_0x273da1;if(_0x365d8d[_0xcfb3('0x41')][_0xcfb3('0xad')]){_0x3b565a[_0xcfb3('0xae')]=[{'all':!![]}];}return db[_0xcfb3('0xb5')]['findAll'](_0x3b565a);})[_0xcfb3('0x2d')](function(_0x4d48c1){_0x32221c[_0xcfb3('0xaa')]=_0x4d48c1;return _0x32221c;});}})['then'](respondWithFilteredResult(_0x242534,_0x3b565a))['catch'](handleError(_0x242534,null));};exports[_0xcfb3('0xbd')]=function(_0x5cdd25,_0x4bf07a,_0x4cbcc0){return db[_0xcfb3('0x3a')][_0xcfb3('0x61')]({'where':{'id':_0x5cdd25[_0xcfb3('0xac')]['id']}})['then'](handleEntityNotFound(_0x4bf07a,null))[_0xcfb3('0x2d')](function(_0x388e09){if(_0x388e09){return _0x388e09[_0xcfb3('0xbe')](_0x5cdd25[_0xcfb3('0xb1')]['ids'],_[_0xcfb3('0xb7')](_0x5cdd25[_0xcfb3('0xb1')],[_0xcfb3('0xb6'),'id'])||{})[_0xcfb3('0xbf')](function(){return db[_0xcfb3('0x70')]['findAll']({'attributes':['id',_0xcfb3('0x30'),_0xcfb3('0x4c')],'where':{'id':_0x5cdd25[_0xcfb3('0xb1')][_0xcfb3('0xb6')]}});})[_0xcfb3('0x2d')](function(_0x57c772){socket[_0xcfb3('0xc0')](_0xcfb3('0xc1'),{'id':Number(_0x5cdd25[_0xcfb3('0xac')]['id']),'tags':_0x57c772||[]});return{'id':Number(_0x5cdd25[_0xcfb3('0xac')]['id']),'tags':_0x57c772||[]};});}})[_0xcfb3('0x2d')](respondWithResult(_0x4bf07a,null))[_0xcfb3('0x38')](handleError(_0x4bf07a,null));};exports['removeTags']=function(_0x87bc4d,_0x11ff83,_0x1beaf4){return db[_0xcfb3('0x3a')]['find']({'where':{'id':_0x87bc4d[_0xcfb3('0xac')]['id']}})[_0xcfb3('0x2d')](handleEntityNotFound(_0x11ff83,null))[_0xcfb3('0x2d')](function(_0xdbea19){if(_0xdbea19){return _0xdbea19[_0xcfb3('0xc2')](_0x87bc4d[_0xcfb3('0x41')]['ids']);}})[_0xcfb3('0x2d')](respondWithStatusCode(_0x11ff83,null))[_0xcfb3('0x38')](handleError(_0x11ff83,null));};exports[_0xcfb3('0xc3')]=function(_0x473a1e,_0x405801){var _0x44e808=moment()[_0xcfb3('0xc4')]()['toString']();var _0x75f3a6=path[_0xcfb3('0xc5')](config[_0xcfb3('0xc6')],'server',_0xcfb3('0xc7'),_0xcfb3('0xc8'));var _0x54a235=path[_0xcfb3('0xc5')](config[_0xcfb3('0xc6')],'server',_0xcfb3('0xc7'),_0xcfb3('0xc9'));var _0x40ad95=path[_0xcfb3('0xc5')](_0x75f3a6,_0x44e808);var _0x3a2d75=util[_0xcfb3('0xbb')](_0xcfb3('0xca'),_0x473a1e[_0xcfb3('0xac')]['id'],_0x44e808);var _0x105bf5=path[_0xcfb3('0xc5')](_0x75f3a6,_0x3a2d75);var _0x1d6040=[];_0x1d6040[_0xcfb3('0x37')]({'model':db[_0xcfb3('0x71')],'as':_0xcfb3('0x71'),'attributes':['id',_0xcfb3('0x34')],'raw':!![]});_0x1d6040['push']({'model':db['CmContact'],'as':_0xcfb3('0x67'),'attributes':['id',_0xcfb3('0xcb'),'lastName'],'raw':!![]});if(_0x473a1e[_0xcfb3('0x41')][_0xcfb3('0xc9')]){_0x1d6040[_0xcfb3('0x37')]({'model':db[_0xcfb3('0xcc')],'as':'Attachment','raw':!![]});}var _0x5e5d75=[{'model':db[_0xcfb3('0xb5')],'as':'Messages','attributes':['id',_0xcfb3('0xb1'),'createdAt',_0xcfb3('0xcd'),'secret',_0xcfb3('0x81')],'include':_0x1d6040}];_0x5e5d75[_0xcfb3('0x37')]({'model':db['WhatsappAccount'],'as':_0xcfb3('0xce'),'attributes':['id',_0xcfb3('0x30')]});_0x5e5d75[_0xcfb3('0x37')]({'model':db[_0xcfb3('0x71')],'as':_0xcfb3('0xcf'),'attributes':['id','fullname']});return db[_0xcfb3('0x3a')]['find']({'where':{'id':_0x473a1e[_0xcfb3('0xac')]['id']},'include':_0x5e5d75})[_0xcfb3('0x2d')](handleEntityNotFound(_0x405801,null))['then'](function(_0x156c50){if(_0x156c50){var _0x5d52ff=_0x156c50[_0xcfb3('0xd0')]({'plain':!![]});fs['mkdirSync'](_0x40ad95);var _0x270800={'channel':'Whatsapp','account':_0x5d52ff['Account']['name'],'agent':_0x5d52ff[_0xcfb3('0xcf')]?_0x5d52ff[_0xcfb3('0xcf')]['fullname']:_0xcfb3('0xd1'),'createdAt':moment(_0x5d52ff['createdAt'])['format'](_0xcfb3('0xbc'))['toString'](),'closedAt':_0x5d52ff[_0xcfb3('0xd2')]?moment(_0x5d52ff[_0xcfb3('0xd3')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xcfb3('0x98')]():'','disposition':_0x5d52ff[_0xcfb3('0xd4')],'messages':_(_0x5d52ff[_0xcfb3('0xd5')])[_0xcfb3('0x85')]({'secret':![]})[_0xcfb3('0x33')](function(_0x84b898){if(_0x84b898[_0xcfb3('0xcc')]){var _0x1767cd=path[_0xcfb3('0xc5')](_0x54a235,_0x84b898['Attachment'][_0xcfb3('0xd6')]);if(fs[_0xcfb3('0xd7')](_0x1767cd)){fs[_0xcfb3('0xd8')](_0x1767cd)[_0xcfb3('0xd9')](fs[_0xcfb3('0xda')](path[_0xcfb3('0xc5')](_0x40ad95,_0x84b898[_0xcfb3('0xcc')][_0xcfb3('0xd6')])));}}return{'date':moment(_0x84b898[_0xcfb3('0x7a')])['format'](_0xcfb3('0xbc'))[_0xcfb3('0x98')](),'sender':_0x84b898[_0xcfb3('0xcd')]===_0xcfb3('0xdb')?_0x84b898[_0xcfb3('0x71')]?_0x84b898['User']['fullname']:_0xcfb3('0xdc'):_0x84b898['Contact'][_0xcfb3('0xcb')]+(_0x84b898[_0xcfb3('0x67')][_0xcfb3('0xdd')]?'\x20'+_0x84b898[_0xcfb3('0x67')]['lastName']:''),'body':_0x84b898[_0xcfb3('0xcc')]?_0x84b898['Attachment'][_0xcfb3('0xd6')]:_0x84b898[_0xcfb3('0xb1')],'direction':_0x84b898['direction']===_0xcfb3('0xdb')?'A':'C','secret':_0x84b898[_0xcfb3('0xde')],'read':_0x84b898['read'],'attachment':_0x84b898[_0xcfb3('0xcc')]};})[_0xcfb3('0x63')]()};return ejs[_0xcfb3('0xdf')](path[_0xcfb3('0xc5')](config[_0xcfb3('0xc6')],_0xcfb3('0xe0'),_0xcfb3('0xe1'),_0xcfb3('0xe2')),{'interaction':_0x270800})[_0xcfb3('0x2d')](function(_0x10eb11){var _0x2acdbe=path['join'](_0x40ad95,_0xcfb3('0xe3')+_0x5d52ff['id']+'-'+_0x44e808+'.pdf');var _0x5b111e={'path':_0x2acdbe,'channel':_0xcfb3('0xe4'),'interactionId':_0x5d52ff['id']};return pdf['createPdfFromHTML'](_0x10eb11,_0x5b111e);})['then'](function(){return new BPromise(function(_0x30e7ed,_0x3e22a0){zipdir(_0x40ad95,{'saveTo':_0x105bf5},function(_0x5c1f84,_0x5989a8){if(_0x5c1f84)return _0x3e22a0(_0x5c1f84);return _0x30e7ed(_0x5989a8);});})[_0xcfb3('0x2d')](function(){return new BPromise(function(_0x3719e0,_0x41952c){rimraf(_0x40ad95,function(_0x96f266){if(_0x96f266)_0x41952c(_0x96f266);return _0x3719e0();});});})['then'](function(){return _0x405801['download'](_0x105bf5,_0x3a2d75,function(_0xbb6474){if(_0xbb6474){console['log'](_0xcfb3('0xe5'),_0xbb6474);}else{fs[_0xcfb3('0xe6')](_0x105bf5);}});});});}else{return _0x405801['sendStatus'](0xc8);}})[_0xcfb3('0x38')](handleError(_0x405801,null));};
\ No newline at end of file
index 521b495..f7a9e9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1789=['catch','hasOwnProperty','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','unreadMessages','length','emit'];(function(_0xd3b0ac,_0x2f5065){var _0x3d773e=function(_0x2e10d1){while(--_0x2e10d1){_0xd3b0ac['push'](_0xd3b0ac['shift']());}};_0x3d773e(++_0x2f5065);}(_0x1789,0x92));var _0x9178=function(_0x3e08f3,_0x35bf04){_0x3e08f3=_0x3e08f3-0x0;var _0x4cdb44=_0x1789[_0x3e08f3];return _0x4cdb44;};'use strict';var EventEmitter=require(_0x9178('0x0'));var WhatsappInteraction=require(_0x9178('0x1'))['db'][_0x9178('0x2')];var WhatsappMessage=require('../../mysqldb')['db'][_0x9178('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x9178('0x4')](0x0);var events={'afterCreate':_0x9178('0x5'),'afterUpdate':_0x9178('0x6'),'afterDestroy':_0x9178('0x7')};function emitEvent(_0x5911d4){return function(_0x4dc4f8,_0x96260b,_0x30f085){_0x4dc4f8[_0x9178('0x8')]({'attributes':['id'],'raw':!![]})[_0x9178('0x9')](function(_0x502d21){_0x4dc4f8[_0x9178('0xa')](_0x9178('0xb'),_0x502d21[_0x9178('0xc')](function(_0x31a183){return{'id':_0x31a183['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x4dc4f8['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x537261){_0x4dc4f8[_0x9178('0xa')](_0x9178('0xd'),_0x537261[_0x9178('0xe')]);WhatsappInteractionEvents[_0x9178('0xf')](_0x5911d4+':'+_0x4dc4f8['id'],_0x4dc4f8);WhatsappInteractionEvents['emit'](_0x5911d4,_0x4dc4f8);_0x30f085(null);})[_0x9178('0x10')](_0x30f085(null));};}for(var e in events){if(events[_0x9178('0x11')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xa9e5=['remove','getUsers','then','setDataValue','map','findAll','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update'];(function(_0x2781bb,_0x5c9cf0){var _0x36126a=function(_0x96dcc5){while(--_0x96dcc5){_0x2781bb['push'](_0x2781bb['shift']());}};_0x36126a(++_0x5c9cf0);}(_0xa9e5,0x8a));var _0x5a9e=function(_0x1fc49e,_0x4d31d1){_0x1fc49e=_0x1fc49e-0x0;var _0x57d011=_0xa9e5[_0x1fc49e];return _0x57d011;};'use strict';var EventEmitter=require(_0x5a9e('0x0'));var WhatsappInteraction=require(_0x5a9e('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x5a9e('0x1'))['db'][_0x5a9e('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x5a9e('0x3')](0x0);var events={'afterCreate':_0x5a9e('0x4'),'afterUpdate':_0x5a9e('0x5'),'afterDestroy':_0x5a9e('0x6')};function emitEvent(_0x3ce605){return function(_0x2f42f8,_0x120d60,_0x34a9ed){_0x2f42f8[_0x5a9e('0x7')]({'attributes':['id'],'raw':!![]})[_0x5a9e('0x8')](function(_0x69b06a){_0x2f42f8[_0x5a9e('0x9')]('Users',_0x69b06a[_0x5a9e('0xa')](function(_0x18ee71){return{'id':_0x18ee71['id']};}));return WhatsappMessage[_0x5a9e('0xb')]({'where':{'WhatsappInteractionId':_0x2f42f8['id'],'direction':'in','read':![]},'raw':!![]});})[_0x5a9e('0x8')](function(_0x4ffdb3){_0x2f42f8[_0x5a9e('0x9')]('unreadMessages',_0x4ffdb3[_0x5a9e('0xc')]);WhatsappInteractionEvents[_0x5a9e('0xd')](_0x3ce605+':'+_0x2f42f8['id'],_0x2f42f8);WhatsappInteractionEvents[_0x5a9e('0xd')](_0x3ce605,_0x2f42f8);_0x34a9ed(null);})[_0x5a9e('0xe')](_0x34a9ed(null));};}for(var e in events){if(events[_0x5a9e('0xf')](e)){var event=events[e];WhatsappInteraction[_0x5a9e('0x10')](e,emitEvent(event));}}module[_0x5a9e('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
index e185091..3d9b37c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cdd=['bluebird','path','./whatsappInteraction.attributes','define','WhatsappInteraction','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment'];(function(_0x4e93a9,_0x413f30){var _0x43013c=function(_0x3a0cf3){while(--_0x3a0cf3){_0x4e93a9['push'](_0x4e93a9['shift']());}};_0x43013c(++_0x413f30);}(_0x1cdd,0xa3));var _0xd1cd=function(_0xbb47ac,_0x305cdf){_0xbb47ac=_0xbb47ac-0x0;var _0x422fd4=_0x1cdd[_0xbb47ac];return _0x422fd4;};'use strict';var _=require(_0xd1cd('0x0'));var util=require(_0xd1cd('0x1'));var logger=require(_0xd1cd('0x2'))(_0xd1cd('0x3'));var moment=require(_0xd1cd('0x4'));var BPromise=require(_0xd1cd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd1cd('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd1cd('0x7'));module['exports']=function(_0x16f2e6,_0x1ed491){return _0x16f2e6[_0xd1cd('0x8')](_0xd1cd('0x9'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x11fdc3,_0x28cbef,_0xa5775f){if(_0x11fdc3[_0xd1cd('0xa')](_0xd1cd('0xb'))){_0x11fdc3[_0xd1cd('0xc')]=moment()['format'](_0xd1cd('0xd'));}_0xa5775f(null,_0x11fdc3);}}});};
\ No newline at end of file
+var _0xcb2a=['changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','WhatsappInteraction','whatsapp_interactions'];(function(_0x51e90d,_0x9c2076){var _0x3abeee=function(_0xdee17c){while(--_0xdee17c){_0x51e90d['push'](_0x51e90d['shift']());}};_0x3abeee(++_0x9c2076);}(_0xcb2a,0x147));var _0xacb2=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xcb2a[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xacb2('0x0'));var util=require(_0xacb2('0x1'));var logger=require(_0xacb2('0x2'))(_0xacb2('0x3'));var moment=require('moment');var BPromise=require(_0xacb2('0x4'));var rp=require(_0xacb2('0x5'));var fs=require('fs');var path=require(_0xacb2('0x6'));var rimraf=require(_0xacb2('0x7'));var config=require(_0xacb2('0x8'));var attributes=require('./whatsappInteraction.attributes');module[_0xacb2('0x9')]=function(_0x7b78d0,_0x1769db){return _0x7b78d0[_0xacb2('0xa')](_0xacb2('0xb'),attributes,{'tableName':_0xacb2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x18e278,_0x22c908,_0x2e0ba2){if(_0x18e278[_0xacb2('0xd')](_0xacb2('0xe'))){_0x18e278[_0xacb2('0xf')]=moment()['format'](_0xacb2('0x10'));}_0x2e0ba2(null,_0x18e278);}}});};
\ No newline at end of file
index 3caecc2..c941b95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e47=['register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','options','raw','where','attributes','limit','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','WhatsappInteraction','find','addTags','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter'];(function(_0x323709,_0x4f1de6){var _0x412313=function(_0x20b5b6){while(--_0x20b5b6){_0x323709['push'](_0x323709['shift']());}};_0x412313(++_0x4f1de6);}(_0x5e47,0x6d));var _0x75e4=function(_0x58a4fe,_0x11d439){_0x58a4fe=_0x58a4fe-0x0;var _0x697de2=_0x5e47[_0x58a4fe];return _0x697de2;};'use strict';var _=require(_0x75e4('0x0'));var util=require(_0x75e4('0x1'));var moment=require(_0x75e4('0x2'));var BPromise=require(_0x75e4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x75e4('0x4'));var db=require(_0x75e4('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x75e4('0x6'));var config=require(_0x75e4('0x7'));var jayson=require(_0x75e4('0x8'));var client=jayson[_0x75e4('0x9')]['http']({'port':0x232a});config[_0x75e4('0xa')]=_[_0x75e4('0xb')](config['redis'],{'host':_0x75e4('0xc'),'port':0x18eb});var socket=require(_0x75e4('0xd'))(new Redis(config[_0x75e4('0xa')]));require('./whatsappInteraction.socket')[_0x75e4('0xe')](socket);function respondWithRpcPromise(_0x3e8c3b,_0x2d935c,_0x42fe0e){return new BPromise(function(_0x35e1a6,_0xc0d97f){return client[_0x75e4('0xf')](_0x3e8c3b,_0x42fe0e)[_0x75e4('0x10')](function(_0x1cd757){logger[_0x75e4('0x11')](_0x75e4('0x12'),_0x2d935c,_0x75e4('0x13'));logger[_0x75e4('0x14')]('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x2d935c,_0x75e4('0x13'),JSON[_0x75e4('0x15')](_0x1cd757));if(_0x1cd757[_0x75e4('0x16')]){if(_0x1cd757[_0x75e4('0x16')]['code']===0x1f4){logger['error'](_0x75e4('0x12'),_0x2d935c,_0x1cd757[_0x75e4('0x16')][_0x75e4('0x17')]);return _0xc0d97f(_0x1cd757[_0x75e4('0x16')][_0x75e4('0x17')]);}logger['error'](_0x75e4('0x12'),_0x2d935c,_0x1cd757[_0x75e4('0x16')][_0x75e4('0x17')]);return _0x35e1a6(_0x1cd757[_0x75e4('0x16')][_0x75e4('0x17')]);}else{logger[_0x75e4('0x11')](_0x75e4('0x12'),_0x2d935c,_0x75e4('0x13'));_0x35e1a6(_0x1cd757[_0x75e4('0x18')][_0x75e4('0x17')]);}})[_0x75e4('0x19')](function(_0x465d6f){logger[_0x75e4('0x16')](_0x75e4('0x12'),_0x2d935c,_0x465d6f);_0xc0d97f(_0x465d6f);});});}exports['UpdateWhatsappInteraction']=function(_0x40130b){var _0x33f19c=this;return new Promise(function(_0x1514f6,_0xa07a81){return db['WhatsappInteraction']['update'](_0x40130b['body'],{'raw':_0x40130b[_0x75e4('0x1a')]?_0x40130b[_0x75e4('0x1a')][_0x75e4('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40130b[_0x75e4('0x1a')]?_0x40130b['options'][_0x75e4('0x1c')]||null:null,'attributes':_0x40130b[_0x75e4('0x1a')]?_0x40130b[_0x75e4('0x1a')][_0x75e4('0x1d')]||null:null,'limit':_0x40130b[_0x75e4('0x1a')]?_0x40130b[_0x75e4('0x1a')][_0x75e4('0x1e')]||null:null})[_0x75e4('0x10')](function(_0x7a87c4){logger['info'](_0x75e4('0x1f'),_0x40130b);logger[_0x75e4('0x14')](_0x75e4('0x1f'),_0x40130b,JSON[_0x75e4('0x15')](_0x7a87c4));_0x1514f6(_0x7a87c4);})[_0x75e4('0x19')](function(_0x3f8140){logger['error']('UpdateWhatsappInteraction',_0x3f8140[_0x75e4('0x17')],_0x40130b);_0xa07a81(_0x33f19c[_0x75e4('0x16')](0x1f4,_0x3f8140[_0x75e4('0x17')]));});});};exports[_0x75e4('0x20')]=function(_0x392de0){return new Promise(function(_0x38abd4,_0x3fb763){return db[_0x75e4('0x21')][_0x75e4('0x22')]({'where':_0x392de0[_0x75e4('0x1a')]?_0x392de0[_0x75e4('0x1a')][_0x75e4('0x1c')]||null:null})[_0x75e4('0x10')](function(_0x5ddb18){if(_0x5ddb18){return _0x5ddb18[_0x75e4('0x23')](_0x392de0[_0x75e4('0x24')][_0x75e4('0x25')],_[_0x75e4('0x26')](_0x392de0[_0x75e4('0x24')],[_0x75e4('0x25'),'id'])||{});}})[_0x75e4('0x27')](function(_0x4b1451){logger[_0x75e4('0x11')](_0x75e4('0x28'),_0x392de0);logger['debug'](_0x75e4('0x28'),_0x392de0,JSON[_0x75e4('0x15')](_0x4b1451));_0x38abd4(_0x4b1451);})['catch'](function(_0x26f036){logger['error'](_0x75e4('0x28'),_0x26f036[_0x75e4('0x17')],_0x392de0);_0x3fb763(_this[_0x75e4('0x16')](0x1f4,_0x26f036['message']));});});};
\ No newline at end of file
+var _0x53d9=['body','options','raw','attributes','limit','info','AddTagsToWhatsappInteraction','find','where','omit','ids','spread','AddTags','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','then','WhatsappInteraction,\x20%s,\x20%s','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateWhatsappInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x53d9,0x117));var _0x953d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x53d9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x953d('0x0'));var moment=require(_0x953d('0x1'));var BPromise=require(_0x953d('0x2'));var rs=require(_0x953d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x953d('0x4'));var logger=require(_0x953d('0x5'))(_0x953d('0x6'));var config=require(_0x953d('0x7'));var jayson=require(_0x953d('0x8'));var client=jayson['client'][_0x953d('0x9')]({'port':0x232a});config[_0x953d('0xa')]=_['defaults'](config[_0x953d('0xa')],{'host':_0x953d('0xb'),'port':0x18eb});var socket=require(_0x953d('0xc'))(new Redis(config['redis']));require('./whatsappInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x341ce9,_0x58b176,_0x1f0c07){return new BPromise(function(_0xc8de4e,_0x5e6241){return client['request'](_0x341ce9,_0x1f0c07)[_0x953d('0xd')](function(_0xb954b1){logger['info'](_0x953d('0xe'),_0x58b176,'request\x20sent');logger[_0x953d('0xf')](_0x953d('0x10'),_0x58b176,_0x953d('0x11'),JSON[_0x953d('0x12')](_0xb954b1));if(_0xb954b1[_0x953d('0x13')]){if(_0xb954b1[_0x953d('0x13')][_0x953d('0x14')]===0x1f4){logger[_0x953d('0x13')](_0x953d('0xe'),_0x58b176,_0xb954b1['error'][_0x953d('0x15')]);return _0x5e6241(_0xb954b1['error'][_0x953d('0x15')]);}logger['error'](_0x953d('0xe'),_0x58b176,_0xb954b1['error'][_0x953d('0x15')]);return _0xc8de4e(_0xb954b1[_0x953d('0x13')][_0x953d('0x15')]);}else{logger['info'](_0x953d('0xe'),_0x58b176,_0x953d('0x11'));_0xc8de4e(_0xb954b1[_0x953d('0x16')][_0x953d('0x15')]);}})[_0x953d('0x17')](function(_0x40b926){logger[_0x953d('0x13')]('WhatsappInteraction,\x20%s,\x20%s',_0x58b176,_0x40b926);_0x5e6241(_0x40b926);});});}exports[_0x953d('0x18')]=function(_0x41106d){var _0x600066=this;return new Promise(function(_0x10a7dc,_0x65817d){return db['WhatsappInteraction']['update'](_0x41106d[_0x953d('0x19')],{'raw':_0x41106d[_0x953d('0x1a')]?_0x41106d[_0x953d('0x1a')][_0x953d('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41106d['options']?_0x41106d[_0x953d('0x1a')]['where']||null:null,'attributes':_0x41106d[_0x953d('0x1a')]?_0x41106d[_0x953d('0x1a')][_0x953d('0x1c')]||null:null,'limit':_0x41106d[_0x953d('0x1a')]?_0x41106d[_0x953d('0x1a')][_0x953d('0x1d')]||null:null})['then'](function(_0x1184c0){logger[_0x953d('0x1e')](_0x953d('0x18'),_0x41106d);logger[_0x953d('0xf')](_0x953d('0x18'),_0x41106d,JSON['stringify'](_0x1184c0));_0x10a7dc(_0x1184c0);})[_0x953d('0x17')](function(_0x5757ae){logger[_0x953d('0x13')]('UpdateWhatsappInteraction',_0x5757ae[_0x953d('0x15')],_0x41106d);_0x65817d(_0x600066['error'](0x1f4,_0x5757ae['message']));});});};exports[_0x953d('0x1f')]=function(_0xbb196c){return new Promise(function(_0xbc5664,_0x294270){return db['WhatsappInteraction'][_0x953d('0x20')]({'where':_0xbb196c[_0x953d('0x1a')]?_0xbb196c['options'][_0x953d('0x21')]||null:null})[_0x953d('0xd')](function(_0x1f2f21){if(_0x1f2f21){return _0x1f2f21['addTags'](_0xbb196c['body']['ids'],_[_0x953d('0x22')](_0xbb196c[_0x953d('0x19')],[_0x953d('0x23'),'id'])||{});}})[_0x953d('0x24')](function(_0x440419){logger[_0x953d('0x1e')]('AddTags',_0xbb196c);logger['debug'](_0x953d('0x25'),_0xbb196c,JSON['stringify'](_0x440419));_0xbc5664(_0x440419);})[_0x953d('0x17')](function(_0x37c423){logger[_0x953d('0x13')](_0x953d('0x25'),_0x37c423[_0x953d('0x15')],_0xbb196c);_0x294270(_this[_0x953d('0x13')](0x1f4,_0x37c423['message']));});});};
\ No newline at end of file
index c094786..df38144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6bc=['remove','update','register','length','whatsappInteraction:'];(function(_0x45964e,_0x280b94){var _0x90d72=function(_0x26ee2b){while(--_0x26ee2b){_0x45964e['push'](_0x45964e['shift']());}};_0x90d72(++_0x280b94);}(_0xc6bc,0x104));var _0xcc6b=function(_0x3e4843,_0x41f17a){_0x3e4843=_0x3e4843-0x0;var _0x2d3edb=_0xc6bc[_0x3e4843];return _0x2d3edb;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=['save',_0xcc6b('0x0'),_0xcc6b('0x1')];function createListener(_0x6bc493,_0x2954dc){return function(_0x13811b){_0x2954dc['emit'](_0x6bc493,_0x13811b);};}function removeListener(_0x5f5c19,_0x509662){return function(){WhatsappInteractionEvents['removeListener'](_0x5f5c19,_0x509662);};}exports[_0xcc6b('0x2')]=function(_0x2afb93){for(var _0x5cb7e5=0x0,_0x15e212=events[_0xcc6b('0x3')];_0x5cb7e5<_0x15e212;_0x5cb7e5++){var _0x458168=events[_0x5cb7e5];var _0xa634d6=createListener(_0xcc6b('0x4')+_0x458168,_0x2afb93);WhatsappInteractionEvents['on'](_0x458168,_0xa634d6);}};
\ No newline at end of file
+var _0xf688=['update','emit','removeListener','register','whatsappInteraction:','./whatsappInteraction.events','save','remove'];(function(_0xb119da,_0x42d325){var _0x3ecb48=function(_0x361539){while(--_0x361539){_0xb119da['push'](_0xb119da['shift']());}};_0x3ecb48(++_0x42d325);}(_0xf688,0x125));var _0x8f68=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf688[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappInteractionEvents=require(_0x8f68('0x0'));var events=[_0x8f68('0x1'),_0x8f68('0x2'),_0x8f68('0x3')];function createListener(_0x487545,_0x19133c){return function(_0x10ccea){_0x19133c[_0x8f68('0x4')](_0x487545,_0x10ccea);};}function removeListener(_0x71aad3,_0x404bd0){return function(){WhatsappInteractionEvents[_0x8f68('0x5')](_0x71aad3,_0x404bd0);};}exports[_0x8f68('0x6')]=function(_0x215d40){for(var _0x3acc9c=0x0,_0x3947c9=events['length'];_0x3acc9c<_0x3947c9;_0x3acc9c++){var _0x426907=events[_0x3acc9c];var _0x48be06=createListener(_0x8f68('0x7')+_0x426907,_0x215d40);WhatsappInteractionEvents['on'](_0x426907,_0x48be06);}};
\ No newline at end of file
index 7929086..d5498e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaed=['express','../../components/auth/service','../../config/environment','./whatsappMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','tracked','whatsapp','whatsappmessage:create','create','post','/:id/status','status','update','put','accept','/:id/reject','delete','destroy','exports','multer','util','path'];(function(_0x340380,_0x4bd2a8){var _0x49ce1c=function(_0x4cb9e2){while(--_0x4cb9e2){_0x340380['push'](_0x340380['shift']());}};_0x49ce1c(++_0x4bd2a8);}(_0xfaed,0x15c));var _0xdfae=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xfaed[_0x50a0c2];return _0x5ebadd;};'use strict';var multer=require(_0xdfae('0x0'));var util=require(_0xdfae('0x1'));var path=require(_0xdfae('0x2'));var timeout=require('connect-timeout');var express=require(_0xdfae('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xdfae('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xdfae('0x5'));var controller=require(_0xdfae('0x6'));router['get']('/',auth[_0xdfae('0x7')](),controller[_0xdfae('0x8')]);router[_0xdfae('0x9')](_0xdfae('0xa'),auth[_0xdfae('0x7')](),controller[_0xdfae('0xb')]);router[_0xdfae('0x9')](_0xdfae('0xc'),auth[_0xdfae('0x7')](),controller['show']);router['post']('/',auth['isAuthenticated'](),interaction[_0xdfae('0xd')](_0xdfae('0xe'),_0xdfae('0xf')),controller[_0xdfae('0x10')]);router[_0xdfae('0x11')](_0xdfae('0x12'),controller[_0xdfae('0x13')]);router['put'](_0xdfae('0xc'),auth['isAuthenticated'](),controller[_0xdfae('0x14')]);router[_0xdfae('0x15')]('/:id/accept',auth[_0xdfae('0x7')](),controller[_0xdfae('0x16')]);router[_0xdfae('0x15')](_0xdfae('0x17'),auth[_0xdfae('0x7')](),controller['reject']);router[_0xdfae('0x18')]('/:id',auth['isAuthenticated'](),controller[_0xdfae('0x19')]);module[_0xdfae('0x1a')]=router;
\ No newline at end of file
+var _0xd7e9=['status','update','/:id/accept','put','/:id/reject','reject','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','tracked','whatsapp','whatsappmessage:create','create','post','/:id/status'];(function(_0x32fbfb,_0x722ffd){var _0x37602a=function(_0x5232fd){while(--_0x5232fd){_0x32fbfb['push'](_0x32fbfb['shift']());}};_0x37602a(++_0x722ffd);}(_0xd7e9,0x183));var _0x9d7e=function(_0x17b616,_0x5d4e60){_0x17b616=_0x17b616-0x0;var _0x5e1ed9=_0xd7e9[_0x17b616];return _0x5e1ed9;};'use strict';var multer=require(_0x9d7e('0x0'));var util=require('util');var path=require(_0x9d7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x9d7e('0x2'));var router=express[_0x9d7e('0x3')]();var fs_extra=require(_0x9d7e('0x4'));var auth=require(_0x9d7e('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./whatsappMessage.controller');router[_0x9d7e('0x6')]('/',auth[_0x9d7e('0x7')](),controller[_0x9d7e('0x8')]);router[_0x9d7e('0x6')](_0x9d7e('0x9'),auth[_0x9d7e('0x7')](),controller[_0x9d7e('0xa')]);router['get'](_0x9d7e('0xb'),auth[_0x9d7e('0x7')](),controller['show']);router['post']('/',auth[_0x9d7e('0x7')](),interaction[_0x9d7e('0xc')](_0x9d7e('0xd'),_0x9d7e('0xe')),controller[_0x9d7e('0xf')]);router[_0x9d7e('0x10')](_0x9d7e('0x11'),controller[_0x9d7e('0x12')]);router['put'](_0x9d7e('0xb'),auth[_0x9d7e('0x7')](),controller[_0x9d7e('0x13')]);router['put'](_0x9d7e('0x14'),auth[_0x9d7e('0x7')](),controller['accept']);router[_0x9d7e('0x15')](_0x9d7e('0x16'),auth[_0x9d7e('0x7')](),controller[_0x9d7e('0x17')]);router[_0x9d7e('0x18')]('/:id',auth[_0x9d7e('0x7')](),controller[_0x9d7e('0x19')]);module[_0x9d7e('0x1a')]=router;
\ No newline at end of file
index 56eba62..01486c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf5=['out','STRING','DATE','TEXT','exports','BOOLEAN','ENUM'];(function(_0x1172f5,_0x52590f){var _0x36898b=function(_0x1b0dde){while(--_0x1b0dde){_0x1172f5['push'](_0x1172f5['shift']());}};_0x36898b(++_0x52590f);}(_0xdbf5,0x18c));var _0x5dbf=function(_0xcdee17,_0x140a5f){_0xcdee17=_0xcdee17-0x0;var _0x2c9016=_0xdbf5[_0xcdee17];return _0x2c9016;};'use strict';var Sequelize=require('sequelize');module[_0x5dbf('0x0')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x5dbf('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5dbf('0x2')]('in',_0x5dbf('0x3')),'defaultValue':_0x5dbf('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0x5dbf('0x4')](0xbe)},'phone':{'type':Sequelize[_0x5dbf('0x4')]},'readAt':{'type':Sequelize[_0x5dbf('0x5')]},'secret':{'type':Sequelize[_0x5dbf('0x1')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x5dbf('0x4')]},'providerResponse':{'type':Sequelize[_0x5dbf('0x6')]}};
\ No newline at end of file
+var _0xb264=['out','STRING','DATE','TEXT','sequelize','exports','medium','BOOLEAN','ENUM'];(function(_0x4c9da7,_0xbb8d65){var _0x3e6a12=function(_0x3169a6){while(--_0x3169a6){_0x4c9da7['push'](_0x4c9da7['shift']());}};_0x3e6a12(++_0xbb8d65);}(_0xb264,0x1b4));var _0x4b26=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb264[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x4b26('0x0'));module[_0x4b26('0x1')]={'body':{'type':Sequelize['TEXT'](_0x4b26('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4b26('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4b26('0x4')]('in',_0x4b26('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x4b26('0x6')](0xbe)},'phone':{'type':Sequelize[_0x4b26('0x6')]},'readAt':{'type':Sequelize[_0x4b26('0x7')]},'secret':{'type':Sequelize[_0x4b26('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x4b26('0x6')]},'providerResponse':{'type':Sequelize[_0x4b26('0x8')]}};
\ No newline at end of file
index d99eb6e..ff75eb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a5d=['acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','email','internal','manual','channel','motionChannel','event','accept','EventManager','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','QueryTypes','User','fullname','SIP/%s','WhatsappAccount','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','MessageStatus','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappMessage.socket','register','jayson/promise','client','http','then','info','request\x20sent','debug','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','WhatsappMessage','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','find','create','body','params','describe','../../config/logger','whatsapp-interactions','whatsapp','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null'];(function(_0x49e6ee,_0x36baf5){var _0x589568=function(_0x29a1dd){while(--_0x29a1dd){_0x49e6ee['push'](_0x49e6ee['shift']());}};_0x589568(++_0x36baf5);}(_0x7a5d,0xa1));var _0xd7a5=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x7a5d[_0x1035c1];return _0x308d67;};'use strict';var emlformat=require(_0xd7a5('0x0'));var rimraf=require(_0xd7a5('0x1'));var zipdir=require(_0xd7a5('0x2'));var jsonpatch=require(_0xd7a5('0x3'));var rp=require(_0xd7a5('0x4'));var moment=require(_0xd7a5('0x5'));var BPromise=require(_0xd7a5('0x6'));var Mustache=require('mustache');var util=require(_0xd7a5('0x7'));var path=require(_0xd7a5('0x8'));var sox=require('sox');var csv=require(_0xd7a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd7a5('0xa'));var _=require(_0xd7a5('0xb'));var squel=require(_0xd7a5('0xc'));var crypto=require(_0xd7a5('0xd'));var jsforce=require(_0xd7a5('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xd7a5('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd7a5('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd7a5('0x10'));var as=require(_0xd7a5('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd7a5('0x12'));var utils=require(_0xd7a5('0x13'));var config=require(_0xd7a5('0x14'));var licenseUtil=require(_0xd7a5('0x15'));var db=require(_0xd7a5('0x16'))['db'];config[_0xd7a5('0x17')]=_[_0xd7a5('0x18')](config[_0xd7a5('0x17')],{'host':_0xd7a5('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd7a5('0x1a'))[_0xd7a5('0x1b')](socket);var jayson=require(_0xd7a5('0x1c'));var client=jayson[_0xd7a5('0x1d')][_0xd7a5('0x1e')]({'port':0x232c});var client9002=jayson[_0xd7a5('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c45e5,_0x5f2422,_0x2cc136,_0x358e32){return new BPromise(function(_0xa7e954,_0x4de7e1){var _0x571cb7=_0x358e32||client;return _0x571cb7['request'](_0x5c45e5,_0x2cc136)[_0xd7a5('0x1f')](function(_0x1fe369){logger[_0xd7a5('0x20')]('WhatsappMessage,\x20%s,\x20%s',_0x5f2422,_0xd7a5('0x21'));logger[_0xd7a5('0x22')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x5f2422,'request\x20sent',JSON[_0xd7a5('0x23')](_0x1fe369));if(_0x1fe369[_0xd7a5('0x24')]){if(_0x1fe369['error'][_0xd7a5('0x25')]===0x1f4){logger[_0xd7a5('0x24')]('WhatsappMessage,\x20%s,\x20%s',_0x5f2422,_0x1fe369[_0xd7a5('0x24')]['message']);return _0x4de7e1(_0x1fe369['error']['message']);}logger['error'](_0xd7a5('0x26'),_0x5f2422,_0x1fe369[_0xd7a5('0x24')][_0xd7a5('0x27')]);return _0xa7e954(_0x1fe369[_0xd7a5('0x24')][_0xd7a5('0x27')]);}else{logger[_0xd7a5('0x20')]('WhatsappMessage,\x20%s,\x20%s',_0x5f2422,_0xd7a5('0x21'));_0xa7e954(_0x1fe369[_0xd7a5('0x28')][_0xd7a5('0x27')]);}})['catch'](function(_0x404cc0){logger[_0xd7a5('0x24')](_0xd7a5('0x26'),_0x5f2422,_0x404cc0);_0x4de7e1(_0x404cc0);});});}function respondWithStatusCode(_0x10af4d,_0x19ebcf){_0x19ebcf=_0x19ebcf||0xcc;return function(_0x62067e){if(_0x62067e){return _0x10af4d[_0xd7a5('0x29')](_0x19ebcf);}return _0x10af4d[_0xd7a5('0x2a')](_0x19ebcf)[_0xd7a5('0x2b')]();};}function respondWithResult(_0x125df1,_0x5a782b){_0x5a782b=_0x5a782b||0xc8;return function(_0x2e02e1){if(_0x2e02e1){return _0x125df1['status'](_0x5a782b)[_0xd7a5('0x2c')](_0x2e02e1);}};}function respondWithFilteredResult(_0x485d23,_0x1c69d6){return function(_0x3b7011){if(_0x3b7011){var _0xaac479=typeof _0x1c69d6[_0xd7a5('0x2d')]===_0xd7a5('0x2e')&&typeof _0x1c69d6[_0xd7a5('0x2f')]===_0xd7a5('0x2e');var _0x11614d=_0x3b7011['count'];var _0x5d3427=_0xaac479?0x0:_0x1c69d6[_0xd7a5('0x2d')];var _0x105247=_0xaac479?_0x3b7011[_0xd7a5('0x30')]:_0x1c69d6[_0xd7a5('0x2d')]+_0x1c69d6[_0xd7a5('0x2f')];var _0x11077a;if(_0x105247>=_0x11614d){_0x105247=_0x11614d;_0x11077a=0xc8;}else{_0x11077a=0xce;}_0x485d23['status'](_0x11077a);return _0x485d23['set'](_0xd7a5('0x31'),_0x5d3427+'-'+_0x105247+'/'+_0x11614d)['json'](_0x3b7011);}return null;};}function patchUpdates(_0x5eb6c6){return function(_0x542ff8){try{jsonpatch[_0xd7a5('0x32')](_0x542ff8,_0x5eb6c6,!![]);}catch(_0x968f2){return BPromise[_0xd7a5('0x33')](_0x968f2);}return _0x542ff8[_0xd7a5('0x34')]();};}function saveUpdates(_0x47bf3c,_0x446b8b){return function(_0x4fb7b2){if(_0x4fb7b2){return _0x4fb7b2[_0xd7a5('0x35')](_0x47bf3c)['then'](function(_0x33fa33){return _0x33fa33;});}return null;};}function removeEntity(_0x3c67a3,_0x5ef1d5){return function(_0x25c8a9){if(_0x25c8a9){return _0x25c8a9[_0xd7a5('0x36')]()[_0xd7a5('0x1f')](function(){_0x3c67a3[_0xd7a5('0x2a')](0xcc)[_0xd7a5('0x2b')]();});}};}function handleEntityNotFound(_0x526ae3,_0x1260dd){return function(_0x5bb9eb){if(!_0x5bb9eb){_0x526ae3[_0xd7a5('0x29')](0x194);}return _0x5bb9eb;};}function handleError(_0x5eede9,_0x21c129){_0x21c129=_0x21c129||0x1f4;return function(_0x2bc60c){logger['error'](_0x2bc60c[_0xd7a5('0x37')]);if(_0x2bc60c['name']){delete _0x2bc60c[_0xd7a5('0x38')];}_0x5eede9[_0xd7a5('0x2a')](_0x21c129)[_0xd7a5('0x39')](_0x2bc60c);};}exports[_0xd7a5('0x3a')]=function(_0x47be84,_0x1ab057){var _0x1333ce={},_0x21c74c={},_0x2f93ca={'count':0x0,'rows':[]};var _0x270f28=_[_0xd7a5('0x3b')](db[_0xd7a5('0x3c')][_0xd7a5('0x3d')],function(_0x310cfa){return{'name':_0x310cfa['fieldName'],'type':_0x310cfa[_0xd7a5('0x3e')][_0xd7a5('0x3f')]};});_0x21c74c[_0xd7a5('0x40')]=_[_0xd7a5('0x3b')](_0x270f28,_0xd7a5('0x38'));_0x21c74c[_0xd7a5('0x41')]=_[_0xd7a5('0x42')](_0x47be84[_0xd7a5('0x41')]);_0x21c74c[_0xd7a5('0x43')]=_[_0xd7a5('0x44')](_0x21c74c[_0xd7a5('0x40')],_0x21c74c[_0xd7a5('0x41')]);_0x1333ce['attributes']=_[_0xd7a5('0x44')](_0x21c74c[_0xd7a5('0x40')],qs['fields'](_0x47be84[_0xd7a5('0x41')][_0xd7a5('0x45')]));_0x1333ce[_0xd7a5('0x46')]=_0x1333ce['attributes'][_0xd7a5('0x47')]?_0x1333ce[_0xd7a5('0x46')]:_0x21c74c['model'];if(!_0x47be84['query'][_0xd7a5('0x48')]('nolimit')){_0x1333ce[_0xd7a5('0x2f')]=qs[_0xd7a5('0x2f')](_0x47be84[_0xd7a5('0x41')][_0xd7a5('0x2f')]);_0x1333ce[_0xd7a5('0x2d')]=qs['offset'](_0x47be84['query'][_0xd7a5('0x2d')]);}_0x1333ce[_0xd7a5('0x49')]=qs['sort'](_0x47be84['query'][_0xd7a5('0x4a')]);_0x1333ce[_0xd7a5('0x4b')]=qs[_0xd7a5('0x43')](_['pick'](_0x47be84[_0xd7a5('0x41')],_0x21c74c[_0xd7a5('0x43')]),_0x270f28);if(_0x47be84[_0xd7a5('0x41')][_0xd7a5('0x4c')]){_0x1333ce[_0xd7a5('0x4b')]=_['merge'](_0x1333ce[_0xd7a5('0x4b')],{'$or':_[_0xd7a5('0x3b')](_0x270f28,function(_0x56dba4){if(_0x56dba4[_0xd7a5('0x3e')]!==_0xd7a5('0x4d')){var _0xca62a4={};_0xca62a4[_0x56dba4[_0xd7a5('0x38')]]={'$like':'%'+_0x47be84['query'][_0xd7a5('0x4c')]+'%'};return _0xca62a4;}})});}_0x1333ce=_[_0xd7a5('0x4e')]({},_0x1333ce,_0x47be84[_0xd7a5('0x4f')]);var _0x2254b7={'where':_0x1333ce[_0xd7a5('0x4b')]};return db[_0xd7a5('0x3c')]['count'](_0x2254b7)[_0xd7a5('0x1f')](function(_0x113402){_0x2f93ca['count']=_0x113402;if(_0x47be84[_0xd7a5('0x41')][_0xd7a5('0x50')]){_0x1333ce[_0xd7a5('0x51')]=[{'all':!![]}];}return db[_0xd7a5('0x3c')]['findAll'](_0x1333ce);})[_0xd7a5('0x1f')](function(_0x299d69){_0x2f93ca[_0xd7a5('0x52')]=_0x299d69;return _0x2f93ca;})[_0xd7a5('0x1f')](respondWithFilteredResult(_0x1ab057,_0x1333ce))[_0xd7a5('0x53')](handleError(_0x1ab057,null));};exports['show']=function(_0x339e4c,_0x4a5d68){var _0x430644={'raw':!![],'where':{'id':_0x339e4c['params']['id']}},_0x304738={};_0x304738['model']=_[_0xd7a5('0x42')](db['WhatsappMessage']['rawAttributes']);_0x304738[_0xd7a5('0x41')]=_[_0xd7a5('0x42')](_0x339e4c[_0xd7a5('0x41')]);_0x304738['filters']=_[_0xd7a5('0x44')](_0x304738[_0xd7a5('0x40')],_0x304738[_0xd7a5('0x41')]);_0x430644[_0xd7a5('0x46')]=_[_0xd7a5('0x44')](_0x304738[_0xd7a5('0x40')],qs[_0xd7a5('0x45')](_0x339e4c[_0xd7a5('0x41')][_0xd7a5('0x45')]));_0x430644[_0xd7a5('0x46')]=_0x430644[_0xd7a5('0x46')][_0xd7a5('0x47')]?_0x430644[_0xd7a5('0x46')]:_0x304738['model'];if(_0x339e4c[_0xd7a5('0x41')][_0xd7a5('0x50')]){_0x430644[_0xd7a5('0x51')]=[{'all':!![]}];}_0x430644=_[_0xd7a5('0x4e')]({},_0x430644,_0x339e4c[_0xd7a5('0x4f')]);return db[_0xd7a5('0x3c')][_0xd7a5('0x54')](_0x430644)[_0xd7a5('0x1f')](handleEntityNotFound(_0x4a5d68,null))['then'](respondWithResult(_0x4a5d68,null))[_0xd7a5('0x53')](handleError(_0x4a5d68,null));};exports['create']=function(_0x552af6,_0x377d18){return db['WhatsappMessage'][_0xd7a5('0x55')](_0x552af6['body'],{})[_0xd7a5('0x1f')](respondWithResult(_0x377d18,0xc9))[_0xd7a5('0x53')](handleError(_0x377d18,null));};exports[_0xd7a5('0x35')]=function(_0x1ae4b6,_0x5c2d4e){if(_0x1ae4b6['body']['id']){delete _0x1ae4b6[_0xd7a5('0x56')]['id'];}return db[_0xd7a5('0x3c')][_0xd7a5('0x54')]({'where':{'id':_0x1ae4b6[_0xd7a5('0x57')]['id']}})[_0xd7a5('0x1f')](handleEntityNotFound(_0x5c2d4e,null))[_0xd7a5('0x1f')](saveUpdates(_0x1ae4b6[_0xd7a5('0x56')],null))['then'](respondWithResult(_0x5c2d4e,null))[_0xd7a5('0x53')](handleError(_0x5c2d4e,null));};exports[_0xd7a5('0x36')]=function(_0x2a63d1,_0x5ce580){return db['WhatsappMessage'][_0xd7a5('0x54')]({'where':{'id':_0x2a63d1[_0xd7a5('0x57')]['id']}})[_0xd7a5('0x1f')](handleEntityNotFound(_0x5ce580,null))[_0xd7a5('0x1f')](removeEntity(_0x5ce580,null))[_0xd7a5('0x53')](handleError(_0x5ce580,null));};exports[_0xd7a5('0x58')]=function(_0x1057c3,_0x5cb3f3){return db[_0xd7a5('0x3c')][_0xd7a5('0x58')]()[_0xd7a5('0x1f')](respondWithResult(_0x5cb3f3,null))['catch'](handleError(_0x5cb3f3,null));};var interaction_log=require(_0xd7a5('0x59'))(_0xd7a5('0x5a'));exports['accept']=function(_0xdd2055,_0x11d357,_0xa6ffbc){var _0x2a1b60={'agent':{},'channel':_0xd7a5('0x5b')};if(_0xdd2055[_0xd7a5('0x56')]['id']){delete _0xdd2055['body']['id'];}_0xdd2055[_0xd7a5('0x56')][_0xd7a5('0x5c')]=!![];_0xdd2055[_0xd7a5('0x56')]['readAt']=moment()[_0xd7a5('0x5d')](_0xd7a5('0x5e'));_0xdd2055[_0xd7a5('0x56')]['UserId']=_0xdd2055[_0xd7a5('0x56')][_0xd7a5('0x5f')]||_0xdd2055['user']['id'];_0x2a1b60[_0xd7a5('0x60')]['id']=_0xdd2055[_0xd7a5('0x56')][_0xd7a5('0x5f')];return db[_0xd7a5('0x3c')][_0xd7a5('0x54')]({'where':{'id':_0xdd2055[_0xd7a5('0x57')]['id'],'UserId':null}})[_0xd7a5('0x1f')](handleEntityNotFound(_0x11d357,null))[_0xd7a5('0x1f')](saveUpdates(_0xdd2055['body'],null))['then'](function(_0x53cdf7){if(_0x53cdf7){_0x2a1b60[_0xd7a5('0x27')]=_0x53cdf7[_0xd7a5('0x61')]({'plain':!![]});return db[_0xd7a5('0x62')]['find']({'where':{'id':_0x53cdf7[_0xd7a5('0x63')]}});}return null;})[_0xd7a5('0x1f')](handleEntityNotFound(_0x11d357,null))[_0xd7a5('0x1f')](function(_0x4ea80e){if(_0x4ea80e){return _0x4ea80e[_0xd7a5('0x35')]({'UserId':_0xdd2055[_0xd7a5('0x56')][_0xd7a5('0x5f')],'read1stAt':_[_0xd7a5('0x64')](_0x4ea80e[_0xd7a5('0x65')])?moment()[_0xd7a5('0x5d')](_0xd7a5('0x5e')):undefined});}return null;})['then'](function(_0x2c0c81){if(_0x2c0c81){_0x2a1b60[_0xd7a5('0x66')]=_0x2c0c81[_0xd7a5('0x61')]({'plain':!![]});interaction_log[_0xd7a5('0x20')](_0xd7a5('0x67'),_0xdd2055[_0xd7a5('0x68')]['id'],_0xdd2055[_0xd7a5('0x68')][_0xd7a5('0x38')],_0xdd2055[_0xd7a5('0x68')][_0xd7a5('0x69')],_0x2a1b60[_0xd7a5('0x66')]['id'],_0xdd2055[_0xd7a5('0x56')]?JSON[_0xd7a5('0x23')](_0xdd2055[_0xd7a5('0x56')]):_0xd7a5('0x6a'));return respondWithRpcPromise('AcceptMessage',_0xd7a5('0x6b'),_0x2a1b60);}return null;})[_0xd7a5('0x1f')](function(_0x4c238a){var _0xca63e0=_0xd7a5('0x6c')+_0x4c238a[_0xd7a5('0x27')][_0xd7a5('0x6d')];return db[_0xd7a5('0x6e')][_0xd7a5('0x41')](_0xca63e0,{'type':db[_0xd7a5('0x6f')]['QueryTypes'][_0xd7a5('0x70')],'raw':!![]})[_0xd7a5('0x1f')](function(_0x5f2c5a){return _0x5f2c5a;});})[_0xd7a5('0x1f')](function(_0x89b086){if(_0x89b086){_0x2a1b60['message']['contact']=_0x89b086[0x0];if(!_0xdd2055[_0xd7a5('0x56')][_0xd7a5('0x5f')])return;return db['User'][_0xd7a5('0x54')]({'where':{'id':_0xdd2055['body']['UserId'],'role':_0xd7a5('0x60')},'attributes':['id','name','fullname',_0xd7a5('0x71'),_0xd7a5('0x72')],'raw':!![]});}return null;})['then'](function(_0x55af38){if(!_0x55af38)return null;_0x2a1b60['message'][_0xd7a5('0x60')]=_0x55af38;return _0x2a1b60;})[_0xd7a5('0x1f')](function(_0x480c8d){if(_0x480c8d){if(_0xdd2055['body'][_0xd7a5('0x73')]){_0x2a1b60['message']['interface']=util[_0xd7a5('0x5d')]('SIP/%s',_0xdd2055['user'][_0xd7a5('0x38')]);_0x2a1b60['message'][_0xd7a5('0x74')]=_0x2a1b60[_0xd7a5('0x74')];_0x2a1b60[_0xd7a5('0x27')][_0xd7a5('0x75')]=_0x2a1b60['channel'];_0x2a1b60[_0xd7a5('0x27')][_0xd7a5('0x76')]=_0xd7a5('0x77');return respondWithRpcPromise('EventManager',_0xd7a5('0x78'),{'event':'acceptmessage','message':_0x2a1b60[_0xd7a5('0x27')]},client9002)[_0xd7a5('0x1f')](function(){return _0x2a1b60;});}return _0x2a1b60;}return null;})[_0xd7a5('0x1f')](respondWithResult(_0x11d357,null))[_0xd7a5('0x53')](handleError(_0x11d357,null));};var interaction_log=require(_0xd7a5('0x59'))(_0xd7a5('0x5a'));exports[_0xd7a5('0x33')]=function(_0x51804c,_0x211a9c,_0x1eef84){var _0x579f05={'agent':{},'channel':_0xd7a5('0x5b')};if(_0x51804c['body']['id']){delete _0x51804c['body']['id'];}_0x51804c[_0xd7a5('0x56')][_0xd7a5('0x5f')]=_0x51804c[_0xd7a5('0x56')][_0xd7a5('0x5f')]||_0x51804c[_0xd7a5('0x68')]['id'];_0x579f05[_0xd7a5('0x60')]['id']=_0x51804c[_0xd7a5('0x56')][_0xd7a5('0x5f')];return db[_0xd7a5('0x3c')]['find']({'where':{'id':_0x51804c[_0xd7a5('0x57')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x211a9c,null))[_0xd7a5('0x1f')](function(_0x6ea0af){if(_0x6ea0af){_0x579f05['message']=_0x6ea0af[_0xd7a5('0x61')]({'plain':!![]});return db['WhatsappInteraction'][_0xd7a5('0x54')]({'where':{'id':_0x6ea0af[_0xd7a5('0x63')]}});}return null;})[_0xd7a5('0x1f')](handleEntityNotFound(_0x211a9c,null))['then'](function(_0x17bae9){if(_0x17bae9){_0x579f05[_0xd7a5('0x66')]=_0x17bae9[_0xd7a5('0x61')]({'plain':!![]});interaction_log['info'](_0xd7a5('0x79'),_0x51804c[_0xd7a5('0x68')]['id'],_0x51804c[_0xd7a5('0x68')][_0xd7a5('0x38')],_0x51804c[_0xd7a5('0x68')][_0xd7a5('0x69')],_0x579f05['interaction']['id'],_0x51804c[_0xd7a5('0x56')]?JSON[_0xd7a5('0x23')](_0x51804c[_0xd7a5('0x56')]):_0xd7a5('0x6a'));return respondWithRpcPromise(_0xd7a5('0x7a'),'rejectMessage',_0x579f05);}return null;})[_0xd7a5('0x1f')](function(_0x3b1122){var _0x21bbc3=_0xd7a5('0x6c')+_0x3b1122[_0xd7a5('0x27')][_0xd7a5('0x6d')];return db['sequelize'][_0xd7a5('0x41')](_0x21bbc3,{'type':db[_0xd7a5('0x6f')][_0xd7a5('0x7b')][_0xd7a5('0x70')],'raw':!![]})['then'](function(_0x3755b1){return _0x3755b1;});})[_0xd7a5('0x1f')](function(_0x4d99d3){if(_0x4d99d3){_0x579f05[_0xd7a5('0x27')]['contact']=_0x4d99d3[0x0];if(!_0x51804c[_0xd7a5('0x56')][_0xd7a5('0x5f')])return;return db[_0xd7a5('0x7c')][_0xd7a5('0x54')]({'where':{'id':_0x51804c['body'][_0xd7a5('0x5f')],'role':'agent'},'attributes':['id',_0xd7a5('0x38'),_0xd7a5('0x7d'),'email',_0xd7a5('0x72')],'raw':!![]});}return null;})[_0xd7a5('0x1f')](function(_0x353ed0){if(!_0x353ed0)return null;_0x579f05[_0xd7a5('0x27')]['agent']=_0x353ed0;return _0x579f05;})[_0xd7a5('0x1f')](function(_0x3ad59b){if(_0x3ad59b){_0x3ad59b['message']['interface']=util[_0xd7a5('0x5d')](_0xd7a5('0x7e'),_0x51804c['user'][_0xd7a5('0x38')]);_0x3ad59b['message']['channel']=_0x579f05[_0xd7a5('0x74')];_0x3ad59b['message'][_0xd7a5('0x75')]=_0x579f05[_0xd7a5('0x74')];_0x3ad59b[_0xd7a5('0x27')][_0xd7a5('0x76')]=_0xd7a5('0x33');respondWithRpcPromise(_0xd7a5('0x78'),_0xd7a5('0x78'),{'event':'rejectmessage','message':_0x3ad59b[_0xd7a5('0x27')]},client9002);return _0x579f05;}return null;})['then'](respondWithResult(_0x211a9c,null))['catch'](handleError(_0x211a9c,null));};exports['status']=function(_0x20f907,_0xde3347,_0x593c74){if(_0x20f907['body']['id']){delete _0x20f907[_0xd7a5('0x56')]['id'];}var _0x375df8;return db[_0xd7a5('0x3c')][_0xd7a5('0x54')]({'where':{'id':_0x20f907[_0xd7a5('0x57')]['id']}})['then'](handleEntityNotFound(_0xde3347,null))['then'](function(_0x1890c2){if(_0x1890c2){_0x375df8=_0x1890c2;return db[_0xd7a5('0x7f')][_0xd7a5('0x54')]({'where':{'id':_0x1890c2['WhatsappAccountId']}});}})[_0xd7a5('0x1f')](handleEntityNotFound(_0xde3347,null))['then'](function(_0x1a8bb7){if(_0x1a8bb7){logger[_0xd7a5('0x22')](_0xd7a5('0x80'),_0xd7a5('0x2a'),_0xd7a5('0x81'),_0x1a8bb7[_0xd7a5('0x3e')],util[_0xd7a5('0x82')](_0x20f907['body'],{'showHidden':![],'depth':null}));switch(_0x1a8bb7[_0xd7a5('0x3e')]){case _0xd7a5('0x83'):if(_0x20f907[_0xd7a5('0x56')][_0xd7a5('0x84')]&&_0x20f907[_0xd7a5('0x56')][_0xd7a5('0x84')]===_0x375df8['messageId']&&_0x20f907['body'][_0xd7a5('0x85')]&&_0x20f907[_0xd7a5('0x56')][_0xd7a5('0x85')]===_0xd7a5('0x5c')){return _0x375df8[_0xd7a5('0x35')]({'read':!![]});}else{logger[_0xd7a5('0x24')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0xd7a5('0x2a'),_0xd7a5('0x83'),util['inspect'](_0x20f907[_0xd7a5('0x56')],{'showHidden':![],'depth':null}));}break;}return _0x375df8;}})[_0xd7a5('0x1f')](respondWithResult(_0xde3347,null))['catch'](handleError(_0xde3347,null));};
\ No newline at end of file
+var _0xfe91=['filters','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','WhatsappMessage','includeAll','include','findAll','rows','show','params','options','find','create','body','catch','describe','whatsapp-interactions','whatsapp','readAt','format','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','read1stAt','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','User','agent','fullname','email','internal','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','RejectMessage','rejectMessage','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','MessageSid','messageId','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','fast-json-patch','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','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','message','WhatsappMessage,\x20%s,\x20%s','result','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','name','send','index','map','rawAttributes','fieldName','type','key','query','keys'];(function(_0x404eee,_0x319a42){var _0x585b65=function(_0x43ff2b){while(--_0x43ff2b){_0x404eee['push'](_0x404eee['shift']());}};_0x585b65(++_0x319a42);}(_0xfe91,0xd4));var _0x1fe9=function(_0x249d99,_0x16b584){_0x249d99=_0x249d99-0x0;var _0x5bfb05=_0xfe91[_0x249d99];return _0x5bfb05;};'use strict';var emlformat=require(_0x1fe9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1fe9('0x1'));var rp=require('request-promise');var moment=require(_0x1fe9('0x2'));var BPromise=require(_0x1fe9('0x3'));var Mustache=require(_0x1fe9('0x4'));var util=require(_0x1fe9('0x5'));var path=require(_0x1fe9('0x6'));var sox=require(_0x1fe9('0x7'));var csv=require(_0x1fe9('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1fe9('0x9'));var _=require(_0x1fe9('0xa'));var squel=require(_0x1fe9('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1fe9('0xc'));var toCsv=require(_0x1fe9('0x8'));var querystring=require('querystring');var Papa=require(_0x1fe9('0xd'));var Redis=require(_0x1fe9('0xe'));var authService=require(_0x1fe9('0xf'));var qs=require(_0x1fe9('0x10'));var as=require(_0x1fe9('0x11'));var hardwareService=require(_0x1fe9('0x12'));var logger=require(_0x1fe9('0x13'))(_0x1fe9('0x14'));var utils=require('../../config/utils');var config=require(_0x1fe9('0x15'));var licenseUtil=require(_0x1fe9('0x16'));var db=require('../../mysqldb')['db'];config[_0x1fe9('0x17')]=_[_0x1fe9('0x18')](config[_0x1fe9('0x17')],{'host':_0x1fe9('0x19'),'port':0x18eb});var socket=require(_0x1fe9('0x1a'))(new Redis(config['redis']));require(_0x1fe9('0x1b'))[_0x1fe9('0x1c')](socket);var jayson=require(_0x1fe9('0x1d'));var client=jayson[_0x1fe9('0x1e')]['http']({'port':0x232c});var client9002=jayson[_0x1fe9('0x1e')][_0x1fe9('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x2f62a8,_0x5da3c1,_0x2d2068,_0x15bfab){return new BPromise(function(_0x827331,_0x5da384){var _0x440e0a=_0x15bfab||client;return _0x440e0a[_0x1fe9('0x20')](_0x2f62a8,_0x2d2068)[_0x1fe9('0x21')](function(_0x4cd11f){logger[_0x1fe9('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0x5da3c1,_0x1fe9('0x23'));logger[_0x1fe9('0x24')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x5da3c1,_0x1fe9('0x23'),JSON[_0x1fe9('0x25')](_0x4cd11f));if(_0x4cd11f[_0x1fe9('0x26')]){if(_0x4cd11f[_0x1fe9('0x26')][_0x1fe9('0x27')]===0x1f4){logger[_0x1fe9('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x5da3c1,_0x4cd11f[_0x1fe9('0x26')]['message']);return _0x5da384(_0x4cd11f['error'][_0x1fe9('0x28')]);}logger[_0x1fe9('0x26')](_0x1fe9('0x29'),_0x5da3c1,_0x4cd11f[_0x1fe9('0x26')][_0x1fe9('0x28')]);return _0x827331(_0x4cd11f[_0x1fe9('0x26')]['message']);}else{logger[_0x1fe9('0x22')](_0x1fe9('0x29'),_0x5da3c1,'request\x20sent');_0x827331(_0x4cd11f[_0x1fe9('0x2a')][_0x1fe9('0x28')]);}})['catch'](function(_0x2e492f){logger[_0x1fe9('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x5da3c1,_0x2e492f);_0x5da384(_0x2e492f);});});}function respondWithStatusCode(_0x35cb4f,_0x44ae36){_0x44ae36=_0x44ae36||0xcc;return function(_0x5206a0){if(_0x5206a0){return _0x35cb4f[_0x1fe9('0x2b')](_0x44ae36);}return _0x35cb4f[_0x1fe9('0x2c')](_0x44ae36)[_0x1fe9('0x2d')]();};}function respondWithResult(_0x477229,_0x36b7f4){_0x36b7f4=_0x36b7f4||0xc8;return function(_0x31cf2b){if(_0x31cf2b){return _0x477229[_0x1fe9('0x2c')](_0x36b7f4)[_0x1fe9('0x2e')](_0x31cf2b);}};}function respondWithFilteredResult(_0xed426c,_0x1828ca){return function(_0x2aea20){if(_0x2aea20){var _0x11f374=typeof _0x1828ca[_0x1fe9('0x2f')]==='undefined'&&typeof _0x1828ca[_0x1fe9('0x30')]===_0x1fe9('0x31');var _0x1d95a5=_0x2aea20[_0x1fe9('0x32')];var _0x216ed4=_0x11f374?0x0:_0x1828ca[_0x1fe9('0x2f')];var _0x4865f9=_0x11f374?_0x2aea20[_0x1fe9('0x32')]:_0x1828ca['offset']+_0x1828ca[_0x1fe9('0x30')];var _0x22b736;if(_0x4865f9>=_0x1d95a5){_0x4865f9=_0x1d95a5;_0x22b736=0xc8;}else{_0x22b736=0xce;}_0xed426c[_0x1fe9('0x2c')](_0x22b736);return _0xed426c[_0x1fe9('0x33')](_0x1fe9('0x34'),_0x216ed4+'-'+_0x4865f9+'/'+_0x1d95a5)[_0x1fe9('0x2e')](_0x2aea20);}return null;};}function patchUpdates(_0x40f53d){return function(_0xfdb4fb){try{jsonpatch[_0x1fe9('0x35')](_0xfdb4fb,_0x40f53d,!![]);}catch(_0x576b7d){return BPromise[_0x1fe9('0x36')](_0x576b7d);}return _0xfdb4fb[_0x1fe9('0x37')]();};}function saveUpdates(_0x54a80e,_0x37fda5){return function(_0x26d5e1){if(_0x26d5e1){return _0x26d5e1[_0x1fe9('0x38')](_0x54a80e)[_0x1fe9('0x21')](function(_0x34a250){return _0x34a250;});}return null;};}function removeEntity(_0x41de31,_0x487fea){return function(_0x5ba591){if(_0x5ba591){return _0x5ba591[_0x1fe9('0x39')]()['then'](function(){_0x41de31['status'](0xcc)[_0x1fe9('0x2d')]();});}};}function handleEntityNotFound(_0x266956,_0x1f98e0){return function(_0x3141ed){if(!_0x3141ed){_0x266956['sendStatus'](0x194);}return _0x3141ed;};}function handleError(_0x1772ab,_0x5b930e){_0x5b930e=_0x5b930e||0x1f4;return function(_0x145b29){logger[_0x1fe9('0x26')](_0x145b29['stack']);if(_0x145b29[_0x1fe9('0x3a')]){delete _0x145b29['name'];}_0x1772ab[_0x1fe9('0x2c')](_0x5b930e)[_0x1fe9('0x3b')](_0x145b29);};}exports[_0x1fe9('0x3c')]=function(_0x527b9e,_0x166908){var _0x30c1ce={},_0x365b2e={},_0x497681={'count':0x0,'rows':[]};var _0x15e8c0=_[_0x1fe9('0x3d')](db['WhatsappMessage'][_0x1fe9('0x3e')],function(_0x36ef35){return{'name':_0x36ef35[_0x1fe9('0x3f')],'type':_0x36ef35[_0x1fe9('0x40')][_0x1fe9('0x41')]};});_0x365b2e['model']=_[_0x1fe9('0x3d')](_0x15e8c0,_0x1fe9('0x3a'));_0x365b2e[_0x1fe9('0x42')]=_[_0x1fe9('0x43')](_0x527b9e[_0x1fe9('0x42')]);_0x365b2e[_0x1fe9('0x44')]=_[_0x1fe9('0x45')](_0x365b2e['model'],_0x365b2e['query']);_0x30c1ce['attributes']=_[_0x1fe9('0x45')](_0x365b2e['model'],qs['fields'](_0x527b9e[_0x1fe9('0x42')][_0x1fe9('0x46')]));_0x30c1ce[_0x1fe9('0x47')]=_0x30c1ce[_0x1fe9('0x47')][_0x1fe9('0x48')]?_0x30c1ce[_0x1fe9('0x47')]:_0x365b2e[_0x1fe9('0x49')];if(!_0x527b9e[_0x1fe9('0x42')][_0x1fe9('0x4a')](_0x1fe9('0x4b'))){_0x30c1ce[_0x1fe9('0x30')]=qs[_0x1fe9('0x30')](_0x527b9e['query'][_0x1fe9('0x30')]);_0x30c1ce['offset']=qs['offset'](_0x527b9e[_0x1fe9('0x42')][_0x1fe9('0x2f')]);}_0x30c1ce[_0x1fe9('0x4c')]=qs['sort'](_0x527b9e['query'][_0x1fe9('0x4d')]);_0x30c1ce[_0x1fe9('0x4e')]=qs[_0x1fe9('0x44')](_['pick'](_0x527b9e[_0x1fe9('0x42')],_0x365b2e[_0x1fe9('0x44')]),_0x15e8c0);if(_0x527b9e[_0x1fe9('0x42')][_0x1fe9('0x4f')]){_0x30c1ce[_0x1fe9('0x4e')]=_[_0x1fe9('0x50')](_0x30c1ce[_0x1fe9('0x4e')],{'$or':_[_0x1fe9('0x3d')](_0x15e8c0,function(_0xcf47f5){if(_0xcf47f5[_0x1fe9('0x40')]!==_0x1fe9('0x51')){var _0x1cedd9={};_0x1cedd9[_0xcf47f5[_0x1fe9('0x3a')]]={'$like':'%'+_0x527b9e[_0x1fe9('0x42')]['filter']+'%'};return _0x1cedd9;}})});}_0x30c1ce=_['merge']({},_0x30c1ce,_0x527b9e['options']);var _0x144afb={'where':_0x30c1ce[_0x1fe9('0x4e')]};return db[_0x1fe9('0x52')][_0x1fe9('0x32')](_0x144afb)[_0x1fe9('0x21')](function(_0x3975b9){_0x497681[_0x1fe9('0x32')]=_0x3975b9;if(_0x527b9e[_0x1fe9('0x42')][_0x1fe9('0x53')]){_0x30c1ce[_0x1fe9('0x54')]=[{'all':!![]}];}return db[_0x1fe9('0x52')][_0x1fe9('0x55')](_0x30c1ce);})[_0x1fe9('0x21')](function(_0x3ee644){_0x497681[_0x1fe9('0x56')]=_0x3ee644;return _0x497681;})[_0x1fe9('0x21')](respondWithFilteredResult(_0x166908,_0x30c1ce))['catch'](handleError(_0x166908,null));};exports[_0x1fe9('0x57')]=function(_0x3ce524,_0x498e4b){var _0xd3aecb={'raw':!![],'where':{'id':_0x3ce524[_0x1fe9('0x58')]['id']}},_0x39df0d={};_0x39df0d[_0x1fe9('0x49')]=_['keys'](db[_0x1fe9('0x52')][_0x1fe9('0x3e')]);_0x39df0d[_0x1fe9('0x42')]=_[_0x1fe9('0x43')](_0x3ce524[_0x1fe9('0x42')]);_0x39df0d[_0x1fe9('0x44')]=_[_0x1fe9('0x45')](_0x39df0d['model'],_0x39df0d[_0x1fe9('0x42')]);_0xd3aecb[_0x1fe9('0x47')]=_['intersection'](_0x39df0d[_0x1fe9('0x49')],qs[_0x1fe9('0x46')](_0x3ce524[_0x1fe9('0x42')][_0x1fe9('0x46')]));_0xd3aecb[_0x1fe9('0x47')]=_0xd3aecb[_0x1fe9('0x47')]['length']?_0xd3aecb[_0x1fe9('0x47')]:_0x39df0d[_0x1fe9('0x49')];if(_0x3ce524[_0x1fe9('0x42')][_0x1fe9('0x53')]){_0xd3aecb[_0x1fe9('0x54')]=[{'all':!![]}];}_0xd3aecb=_['merge']({},_0xd3aecb,_0x3ce524[_0x1fe9('0x59')]);return db['WhatsappMessage'][_0x1fe9('0x5a')](_0xd3aecb)[_0x1fe9('0x21')](handleEntityNotFound(_0x498e4b,null))[_0x1fe9('0x21')](respondWithResult(_0x498e4b,null))['catch'](handleError(_0x498e4b,null));};exports[_0x1fe9('0x5b')]=function(_0x26fe86,_0x3c5493){return db[_0x1fe9('0x52')][_0x1fe9('0x5b')](_0x26fe86[_0x1fe9('0x5c')],{})['then'](respondWithResult(_0x3c5493,0xc9))[_0x1fe9('0x5d')](handleError(_0x3c5493,null));};exports[_0x1fe9('0x38')]=function(_0x602f9,_0x2ec4d1){if(_0x602f9[_0x1fe9('0x5c')]['id']){delete _0x602f9['body']['id'];}return db[_0x1fe9('0x52')][_0x1fe9('0x5a')]({'where':{'id':_0x602f9[_0x1fe9('0x58')]['id']}})[_0x1fe9('0x21')](handleEntityNotFound(_0x2ec4d1,null))[_0x1fe9('0x21')](saveUpdates(_0x602f9[_0x1fe9('0x5c')],null))[_0x1fe9('0x21')](respondWithResult(_0x2ec4d1,null))[_0x1fe9('0x5d')](handleError(_0x2ec4d1,null));};exports[_0x1fe9('0x39')]=function(_0x49f764,_0x3256f0){return db['WhatsappMessage'][_0x1fe9('0x5a')]({'where':{'id':_0x49f764[_0x1fe9('0x58')]['id']}})[_0x1fe9('0x21')](handleEntityNotFound(_0x3256f0,null))[_0x1fe9('0x21')](removeEntity(_0x3256f0,null))[_0x1fe9('0x5d')](handleError(_0x3256f0,null));};exports['describe']=function(_0x5c697c,_0x35bfd2){return db[_0x1fe9('0x52')][_0x1fe9('0x5e')]()['then'](respondWithResult(_0x35bfd2,null))[_0x1fe9('0x5d')](handleError(_0x35bfd2,null));};var interaction_log=require(_0x1fe9('0x13'))(_0x1fe9('0x5f'));exports['accept']=function(_0x4cb990,_0x20dba7,_0x1f0317){var _0x1ffc8a={'agent':{},'channel':_0x1fe9('0x60')};if(_0x4cb990['body']['id']){delete _0x4cb990[_0x1fe9('0x5c')]['id'];}_0x4cb990[_0x1fe9('0x5c')]['read']=!![];_0x4cb990[_0x1fe9('0x5c')][_0x1fe9('0x61')]=moment()[_0x1fe9('0x62')]('YYYY-MM-DD\x20HH:mm:ss');_0x4cb990[_0x1fe9('0x5c')]['UserId']=_0x4cb990[_0x1fe9('0x5c')][_0x1fe9('0x63')]||_0x4cb990[_0x1fe9('0x64')]['id'];_0x1ffc8a['agent']['id']=_0x4cb990[_0x1fe9('0x5c')][_0x1fe9('0x63')];return db[_0x1fe9('0x52')][_0x1fe9('0x5a')]({'where':{'id':_0x4cb990[_0x1fe9('0x58')]['id'],'UserId':null}})[_0x1fe9('0x21')](handleEntityNotFound(_0x20dba7,null))['then'](saveUpdates(_0x4cb990[_0x1fe9('0x5c')],null))[_0x1fe9('0x21')](function(_0x583108){if(_0x583108){_0x1ffc8a['message']=_0x583108[_0x1fe9('0x65')]({'plain':!![]});return db[_0x1fe9('0x66')][_0x1fe9('0x5a')]({'where':{'id':_0x583108[_0x1fe9('0x67')]}});}return null;})[_0x1fe9('0x21')](handleEntityNotFound(_0x20dba7,null))[_0x1fe9('0x21')](function(_0x32598b){if(_0x32598b){return _0x32598b[_0x1fe9('0x38')]({'UserId':_0x4cb990[_0x1fe9('0x5c')]['UserId'],'read1stAt':_['isNil'](_0x32598b[_0x1fe9('0x68')])?moment()[_0x1fe9('0x62')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x1fe9('0x21')](function(_0x335696){if(_0x335696){_0x1ffc8a['interaction']=_0x335696[_0x1fe9('0x65')]({'plain':!![]});interaction_log[_0x1fe9('0x22')](_0x1fe9('0x69'),_0x4cb990[_0x1fe9('0x64')]['id'],_0x4cb990[_0x1fe9('0x64')][_0x1fe9('0x3a')],_0x4cb990[_0x1fe9('0x64')][_0x1fe9('0x6a')],_0x1ffc8a[_0x1fe9('0x6b')]['id'],_0x4cb990[_0x1fe9('0x5c')]?JSON['stringify'](_0x4cb990[_0x1fe9('0x5c')]):_0x1fe9('0x6c'));return respondWithRpcPromise(_0x1fe9('0x6d'),_0x1fe9('0x6e'),_0x1ffc8a);}return null;})[_0x1fe9('0x21')](function(_0x448732){var _0x1c08d5=_0x1fe9('0x6f')+_0x448732['message'][_0x1fe9('0x70')];return db['sequelize'][_0x1fe9('0x42')](_0x1c08d5,{'type':db[_0x1fe9('0x71')][_0x1fe9('0x72')][_0x1fe9('0x73')],'raw':!![]})[_0x1fe9('0x21')](function(_0x46032e){return _0x46032e;});})[_0x1fe9('0x21')](function(_0x1903c9){if(_0x1903c9){_0x1ffc8a[_0x1fe9('0x28')]['contact']=_0x1903c9[0x0];if(!_0x4cb990[_0x1fe9('0x5c')][_0x1fe9('0x63')])return;return db[_0x1fe9('0x74')][_0x1fe9('0x5a')]({'where':{'id':_0x4cb990[_0x1fe9('0x5c')][_0x1fe9('0x63')],'role':_0x1fe9('0x75')},'attributes':['id',_0x1fe9('0x3a'),_0x1fe9('0x76'),_0x1fe9('0x77'),_0x1fe9('0x78')],'raw':!![]});}return null;})[_0x1fe9('0x21')](function(_0x3b4f3f){if(!_0x3b4f3f)return null;_0x1ffc8a[_0x1fe9('0x28')][_0x1fe9('0x75')]=_0x3b4f3f;return _0x1ffc8a;})[_0x1fe9('0x21')](function(_0x42394d){if(_0x42394d){if(_0x4cb990['body'][_0x1fe9('0x79')]){_0x1ffc8a[_0x1fe9('0x28')][_0x1fe9('0x7a')]=util['format'](_0x1fe9('0x7b'),_0x4cb990['user'][_0x1fe9('0x3a')]);_0x1ffc8a['message'][_0x1fe9('0x7c')]=_0x1ffc8a[_0x1fe9('0x7c')];_0x1ffc8a[_0x1fe9('0x28')][_0x1fe9('0x7d')]=_0x1fe9('0x7e');return respondWithRpcPromise(_0x1fe9('0x7f'),_0x1fe9('0x7f'),{'event':_0x1fe9('0x80'),'message':_0x1ffc8a['message']},client9002)[_0x1fe9('0x21')](function(){return _0x1ffc8a;});}return _0x1ffc8a;}return null;})[_0x1fe9('0x21')](respondWithResult(_0x20dba7,null))['catch'](handleError(_0x20dba7,null));};var interaction_log=require('../../config/logger')(_0x1fe9('0x5f'));exports[_0x1fe9('0x36')]=function(_0x307009,_0x1d7b7e,_0x405339){var _0x18edbf={'agent':{},'channel':'whatsapp'};if(_0x307009[_0x1fe9('0x5c')]['id']){delete _0x307009['body']['id'];}_0x307009[_0x1fe9('0x5c')][_0x1fe9('0x63')]=_0x307009['body'][_0x1fe9('0x63')]||_0x307009[_0x1fe9('0x64')]['id'];_0x18edbf[_0x1fe9('0x75')]['id']=_0x307009[_0x1fe9('0x5c')][_0x1fe9('0x63')];return db[_0x1fe9('0x52')]['find']({'where':{'id':_0x307009[_0x1fe9('0x58')]['id'],'UserId':null}})[_0x1fe9('0x21')](handleEntityNotFound(_0x1d7b7e,null))[_0x1fe9('0x21')](function(_0x297a35){if(_0x297a35){_0x18edbf[_0x1fe9('0x28')]=_0x297a35[_0x1fe9('0x65')]({'plain':!![]});return db[_0x1fe9('0x66')][_0x1fe9('0x5a')]({'where':{'id':_0x297a35[_0x1fe9('0x67')]}});}return null;})[_0x1fe9('0x21')](handleEntityNotFound(_0x1d7b7e,null))['then'](function(_0x4c4d6a){if(_0x4c4d6a){_0x18edbf[_0x1fe9('0x6b')]=_0x4c4d6a[_0x1fe9('0x65')]({'plain':!![]});interaction_log[_0x1fe9('0x22')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x307009[_0x1fe9('0x64')]['id'],_0x307009[_0x1fe9('0x64')][_0x1fe9('0x3a')],_0x307009[_0x1fe9('0x64')][_0x1fe9('0x6a')],_0x18edbf['interaction']['id'],_0x307009[_0x1fe9('0x5c')]?JSON[_0x1fe9('0x25')](_0x307009['body']):_0x1fe9('0x6c'));return respondWithRpcPromise(_0x1fe9('0x81'),_0x1fe9('0x82'),_0x18edbf);}return null;})[_0x1fe9('0x21')](function(_0x599309){var _0x5db01f=_0x1fe9('0x6f')+_0x599309[_0x1fe9('0x28')][_0x1fe9('0x70')];return db['sequelize'][_0x1fe9('0x42')](_0x5db01f,{'type':db[_0x1fe9('0x71')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x338bd0){return _0x338bd0;});})[_0x1fe9('0x21')](function(_0x4d19b8){if(_0x4d19b8){_0x18edbf[_0x1fe9('0x28')]['contact']=_0x4d19b8[0x0];if(!_0x307009[_0x1fe9('0x5c')][_0x1fe9('0x63')])return;return db[_0x1fe9('0x74')][_0x1fe9('0x5a')]({'where':{'id':_0x307009[_0x1fe9('0x5c')][_0x1fe9('0x63')],'role':'agent'},'attributes':['id',_0x1fe9('0x3a'),_0x1fe9('0x76'),_0x1fe9('0x77'),_0x1fe9('0x78')],'raw':!![]});}return null;})['then'](function(_0x2598f4){if(!_0x2598f4)return null;_0x18edbf[_0x1fe9('0x28')][_0x1fe9('0x75')]=_0x2598f4;return _0x18edbf;})[_0x1fe9('0x21')](function(_0x340fbb){if(_0x340fbb){_0x340fbb[_0x1fe9('0x28')][_0x1fe9('0x7a')]=util[_0x1fe9('0x62')](_0x1fe9('0x7b'),_0x307009[_0x1fe9('0x64')]['name']);_0x340fbb['message']['channel']=_0x18edbf[_0x1fe9('0x7c')];_0x340fbb[_0x1fe9('0x28')]['event']='reject';respondWithRpcPromise(_0x1fe9('0x7f'),_0x1fe9('0x7f'),{'event':_0x1fe9('0x83'),'message':_0x340fbb[_0x1fe9('0x28')]},client9002);return _0x18edbf;}return null;})[_0x1fe9('0x21')](respondWithResult(_0x1d7b7e,null))[_0x1fe9('0x5d')](handleError(_0x1d7b7e,null));};exports[_0x1fe9('0x2c')]=function(_0x2233ea,_0x1eb9b3,_0x1882f6){if(_0x2233ea[_0x1fe9('0x5c')]['id']){delete _0x2233ea[_0x1fe9('0x5c')]['id'];}var _0x12d983;return db[_0x1fe9('0x52')][_0x1fe9('0x5a')]({'where':{'id':_0x2233ea[_0x1fe9('0x58')]['id']}})[_0x1fe9('0x21')](handleEntityNotFound(_0x1eb9b3,null))['then'](function(_0x49b331){if(_0x49b331){_0x12d983=_0x49b331;return db[_0x1fe9('0x84')][_0x1fe9('0x5a')]({'where':{'id':_0x49b331[_0x1fe9('0x85')]}});}})[_0x1fe9('0x21')](handleEntityNotFound(_0x1eb9b3,null))[_0x1fe9('0x21')](function(_0x16fd41){if(_0x16fd41){logger[_0x1fe9('0x24')](_0x1fe9('0x86'),_0x1fe9('0x2c'),'received\x20delivery\x20report\x20from',_0x16fd41['type'],util['inspect'](_0x2233ea[_0x1fe9('0x5c')],{'showHidden':![],'depth':null}));switch(_0x16fd41[_0x1fe9('0x40')]){case'twilio':if(_0x2233ea[_0x1fe9('0x5c')][_0x1fe9('0x87')]&&_0x2233ea[_0x1fe9('0x5c')]['MessageSid']===_0x12d983[_0x1fe9('0x88')]&&_0x2233ea[_0x1fe9('0x5c')][_0x1fe9('0x89')]&&_0x2233ea['body'][_0x1fe9('0x89')]===_0x1fe9('0x8a')){return _0x12d983['update']({'read':!![]});}else{logger['error'](_0x1fe9('0x8b'),'status','twilio',util['inspect'](_0x2233ea[_0x1fe9('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x12d983;}})[_0x1fe9('0x21')](respondWithResult(_0x1eb9b3,null))['catch'](handleError(_0x1eb9b3,null));};
\ No newline at end of file
index 1e58730..4f12b64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb248=['setMaxListeners','save','update','emit','hasOwnProperty','hook','events','WhatsappMessage'];(function(_0x28feea,_0x4c5c94){var _0x388762=function(_0x46a42b){while(--_0x46a42b){_0x28feea['push'](_0x28feea['shift']());}};_0x388762(++_0x4c5c94);}(_0xb248,0xc6));var _0x8b24=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xb248[_0x2064e5];return _0x21a233;};'use strict';var EventEmitter=require(_0x8b24('0x0'));var WhatsappMessage=require('../../mysqldb')['db'][_0x8b24('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x8b24('0x2')](0x0);var events={'afterCreate':_0x8b24('0x3'),'afterUpdate':_0x8b24('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1ea760){return function(_0x4438f7,_0x5d4103,_0x253441){WhatsappMessageEvents[_0x8b24('0x5')](_0x1ea760+':'+_0x4438f7['id'],_0x4438f7);WhatsappMessageEvents['emit'](_0x1ea760,_0x4438f7);_0x253441(null);};}for(var e in events){if(events[_0x8b24('0x6')](e)){var event=events[e];WhatsappMessage[_0x8b24('0x7')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0x0972=['hasOwnProperty','hook','../../mysqldb','setMaxListeners','update','remove','emit'];(function(_0x15fe4d,_0xf2e7d5){var _0x5a172b=function(_0x31760b){while(--_0x31760b){_0x15fe4d['push'](_0x15fe4d['shift']());}};_0x5a172b(++_0xf2e7d5);}(_0x0972,0x64));var _0x2097=function(_0x149a2c,_0xc9c360){_0x149a2c=_0x149a2c-0x0;var _0x5b685d=_0x0972[_0x149a2c];return _0x5b685d;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x2097('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x2097('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2097('0x2'),'afterDestroy':_0x2097('0x3')};function emitEvent(_0x5b16c0){return function(_0x348ad8,_0x431d1c,_0xe6fbae){WhatsappMessageEvents[_0x2097('0x4')](_0x5b16c0+':'+_0x348ad8['id'],_0x348ad8);WhatsappMessageEvents[_0x2097('0x4')](_0x5b16c0,_0x348ad8);_0xe6fbae(null);};}for(var e in events){if(events[_0x2097('0x5')](e)){var event=events[e];WhatsappMessage[_0x2097('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 1a6876e..024a199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda2=['secret','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','update','createdAt','catch','error','out','WhatsappAccount','WhatsappAccountId','then','type','twilio','accountSid','authToken','messages','create','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','sinch','phone','/whatsapp/v1/','POST','log','LOG\x20~\x20~\x20SEND','statuses','message_id','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','node-fetch','rimraf','../../config/environment','./whatsappMessage.attributes','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase'];(function(_0xc7132d,_0x1a579b){var _0x3093a0=function(_0x21bc26){while(--_0x21bc26){_0xc7132d['push'](_0xc7132d['shift']());}};_0x3093a0(++_0x1a579b);}(_0xeda2,0x181));var _0x2eda=function(_0x58aad3,_0x2a1647){_0x58aad3=_0x58aad3-0x0;var _0x2618d9=_0xeda2[_0x58aad3];return _0x2618d9;};'use strict';var _=require(_0x2eda('0x0'));var util=require(_0x2eda('0x1'));var logger=require(_0x2eda('0x2'))(_0x2eda('0x3'));var moment=require(_0x2eda('0x4'));var BPromise=require(_0x2eda('0x5'));var rp=require('request-promise');var fetch=require(_0x2eda('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2eda('0x7'));var config=require(_0x2eda('0x8'));var attributes=require(_0x2eda('0x9'));module['exports']=function(_0x27d21c,_0x25caf9){return _0x27d21c[_0x2eda('0xa')](_0x2eda('0xb'),attributes,{'tableName':_0x2eda('0xc'),'paranoid':![],'indexes':[{'name':_0x2eda('0xd'),'fields':['messageId']},{'name':_0x2eda('0xe'),'fields':[_0x2eda('0xf')],'type':_0x2eda('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2728fd,_0x18f077,_0x497c25){var _0x25de18=_0x27d21c[_0x2eda('0x11')];var _0x3c25dc=_0x2728fd[_0x2eda('0x12')]({'plain':!![]});if(_0x3c25dc[_0x2eda('0x13')][_0x2eda('0x14')]()==='in'||_0x3c25dc[_0x2eda('0x13')]['toLowerCase']()==='out'&&!_0x3c25dc[_0x2eda('0x15')]&&!_['isNil'](_0x3c25dc[_0x2eda('0x16')])){_0x25de18[_0x2eda('0x17')][_0x2eda('0x18')]({'where':{'id':_0x3c25dc[_0x2eda('0x19')]}})['then'](function(_0xbe0786){if(_0xbe0786){_0xbe0786[_0x2eda('0x1a')]({'lastMsgAt':_0x3c25dc[_0x2eda('0x1b')],'lastMsgDirection':_0x3c25dc[_0x2eda('0x13')][_0x2eda('0x14')]()});}})[_0x2eda('0x1c')](function(_0x306c0b){console[_0x2eda('0x1d')](_0x306c0b);});}if(_0x3c25dc[_0x2eda('0x13')]===_0x2eda('0x1e')&&!_0x3c25dc[_0x2eda('0x15')]){var _0x1bcb03;_0x25de18[_0x2eda('0x1f')]['find']({'where':{'id':_0x3c25dc[_0x2eda('0x20')]},'raw':!![]})[_0x2eda('0x21')](function(_0x36ea49){_0x1bcb03=_0x36ea49;if(_0x1bcb03&&_0x1bcb03[_0x2eda('0x22')]){switch(_0x1bcb03[_0x2eda('0x22')]){case _0x2eda('0x23'):var _0x42613d=require(_0x2eda('0x23'));if(_0x1bcb03[_0x2eda('0x24')]&&_0x1bcb03[_0x2eda('0x25')]&&_0x1bcb03['phone']){var _0x47d091=new _0x42613d(_0x1bcb03[_0x2eda('0x24')],_0x1bcb03[_0x2eda('0x25')]);_0x47d091[_0x2eda('0x26')][_0x2eda('0x27')]({'body':_0x3c25dc[_0x2eda('0xf')],'to':_0x2eda('0x28')+_0x3c25dc['phone'],'from':'whatsapp:'+_0x1bcb03['phone'],'statusCallback':_0x1bcb03[_0x2eda('0x29')]+_0x2eda('0x2a')+_0x3c25dc['id']+_0x2eda('0x2b')+_0x1bcb03['token']})[_0x2eda('0x21')](function(_0x297a29){if(_0x297a29[_0x2eda('0x2c')]){return _0x2728fd[_0x2eda('0x1a')]({'messageId':_0x297a29[_0x2eda('0x2c')]});}})[_0x2eda('0x1c')](function(_0xbcffc8){logger[_0x2eda('0x1d')](_0x2eda('0x2d'),'afterCreate',_0x2eda('0x23'),util[_0x2eda('0x2e')](_0xbcffc8,{'showHidden':![],'depth':null}));});}else{logger[_0x2eda('0x1d')]('WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2eda('0x23'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x2eda('0x2f'):var _0x544281=_0x1bcb03['accountSid'];var _0x29d196=_0x1bcb03[_0x2eda('0x30')];var _0x43dd0c=_0x1bcb03[_0x2eda('0x25')];var _0x212348=_0x1bcb03['baseUrl']+_0x2eda('0x31')+_0x544281+'/messages/';var _0x453926={'to':[_0x3c25dc['phone']],'message':{'type':'text','text':_0x3c25dc[_0x2eda('0xf')]}};var _0x3e83ff={'method':_0x2eda('0x32'),'uri':_0x212348,'headers':{'Authorization':'Bearer\x20'+_0x43dd0c,'Content-Type':'application/json'},'body':_0x453926,'json':!![]};rp(_0x3e83ff)['then'](function(_0x126bf2){console[_0x2eda('0x33')](_0x2eda('0x34'),_0x126bf2);if(_0x126bf2[_0x2eda('0x35')][0x0][_0x2eda('0x36')]){return _0x2728fd[_0x2eda('0x1a')]({'messageId':_0x126bf2[_0x2eda('0x35')][0x0][_0x2eda('0x36')]});}})[_0x2eda('0x1c')](function(_0x20c8a1){console[_0x2eda('0x33')](_0x20c8a1);});break;}}})[_0x2eda('0x37')](function(){_0x497c25();});}else{_0x497c25();}}},'charset':_0x2eda('0x38'),'collate':_0x2eda('0x39')});};
\ No newline at end of file
+var _0x3514=['WhatsappInteractionId','then','update','createdAt','catch','error','WhatsappAccount','find','type','twilio','authToken','phone','accountSid','whatsapp:','remote','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','utf8mb4_unicode_ci','lodash','util','moment','bluebird','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','direction','toLowerCase','out','UserId'];(function(_0x3bb557,_0x2d4e15){var _0x5eebcb=function(_0x309c44){while(--_0x309c44){_0x3bb557['push'](_0x3bb557['shift']());}};_0x5eebcb(++_0x2d4e15);}(_0x3514,0x118));var _0x4351=function(_0x316e14,_0x460e82){_0x316e14=_0x316e14-0x0;var _0x49b86a=_0x3514[_0x316e14];return _0x49b86a;};'use strict';var _=require(_0x4351('0x0'));var util=require(_0x4351('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4351('0x2'));var BPromise=require(_0x4351('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4351('0x4'));var rimraf=require(_0x4351('0x5'));var config=require(_0x4351('0x6'));var attributes=require(_0x4351('0x7'));module[_0x4351('0x8')]=function(_0x8cabb,_0x32db6a){return _0x8cabb[_0x4351('0x9')](_0x4351('0xa'),attributes,{'tableName':_0x4351('0xb'),'paranoid':![],'indexes':[{'name':_0x4351('0xc'),'fields':['messageId']},{'name':_0x4351('0xd'),'fields':[_0x4351('0xe')],'type':_0x4351('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x162410,_0x36e819,_0x5d8c97){var _0x2b028d=_0x8cabb[_0x4351('0x10')];var _0x2560b6=_0x162410['get']({'plain':!![]});if(_0x2560b6[_0x4351('0x11')]['toLowerCase']()==='in'||_0x2560b6['direction'][_0x4351('0x12')]()===_0x4351('0x13')&&!_0x2560b6['secret']&&!_['isNil'](_0x2560b6[_0x4351('0x14')])){_0x2b028d['WhatsappInteraction']['findOne']({'where':{'id':_0x2560b6[_0x4351('0x15')]}})[_0x4351('0x16')](function(_0x26ac15){if(_0x26ac15){_0x26ac15[_0x4351('0x17')]({'lastMsgAt':_0x2560b6[_0x4351('0x18')],'lastMsgDirection':_0x2560b6['direction'][_0x4351('0x12')]()});}})[_0x4351('0x19')](function(_0x1558d2){console[_0x4351('0x1a')](_0x1558d2);});}if(_0x2560b6['direction']===_0x4351('0x13')&&!_0x2560b6['secret']){var _0x1037c8;_0x2b028d[_0x4351('0x1b')][_0x4351('0x1c')]({'where':{'id':_0x2560b6['WhatsappAccountId']},'raw':!![]})[_0x4351('0x16')](function(_0x51b39c){_0x1037c8=_0x51b39c;if(_0x1037c8&&_0x1037c8['type']){switch(_0x1037c8[_0x4351('0x1d')]){case _0x4351('0x1e'):var _0x46b96a=require(_0x4351('0x1e'));if(_0x1037c8['accountSid']&&_0x1037c8[_0x4351('0x1f')]&&_0x1037c8[_0x4351('0x20')]){var _0x2f7b09=new _0x46b96a(_0x1037c8[_0x4351('0x21')],_0x1037c8['authToken']);_0x2f7b09['messages']['create']({'body':_0x2560b6[_0x4351('0xe')],'to':'whatsapp:'+_0x2560b6[_0x4351('0x20')],'from':_0x4351('0x22')+_0x1037c8[_0x4351('0x20')],'statusCallback':_0x1037c8[_0x4351('0x23')]+'/api/whatsapp/messages/'+_0x2560b6['id']+_0x4351('0x24')+_0x1037c8[_0x4351('0x25')]})[_0x4351('0x16')](function(_0x455517){if(_0x455517[_0x4351('0x26')]){return _0x162410[_0x4351('0x17')]({'messageId':_0x455517[_0x4351('0x26')]});}})[_0x4351('0x19')](function(_0x253585){logger[_0x4351('0x1a')](_0x4351('0x27'),_0x4351('0x28'),_0x4351('0x1e'),util[_0x4351('0x29')](_0x253585,{'showHidden':![],'depth':null}));});}else{logger[_0x4351('0x1a')](_0x4351('0x27'),_0x4351('0x28'),_0x4351('0x1e'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})['finally'](function(){_0x5d8c97();});}else{_0x5d8c97();}}},'charset':'utf8mb4','collate':_0x4351('0x2a')});};
\ No newline at end of file
index 002237a..973adb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x999e=['redis','register','request','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','CreateWhatsappMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','client','http','defaults','localhost','socket.io-emitter'];(function(_0x5e8749,_0x8f8d00){var _0x7a4571=function(_0x43514b){while(--_0x43514b){_0x5e8749['push'](_0x5e8749['shift']());}};_0x7a4571(++_0x8f8d00);}(_0x999e,0x8e));var _0xe999=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x999e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe999('0x0'));var util=require(_0xe999('0x1'));var moment=require(_0xe999('0x2'));var BPromise=require(_0xe999('0x3'));var rs=require(_0xe999('0x4'));var fs=require('fs');var Redis=require(_0xe999('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe999('0x6'));var config=require(_0xe999('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe999('0x8')][_0xe999('0x9')]({'port':0x232a});config['redis']=_[_0xe999('0xa')](config['redis'],{'host':_0xe999('0xb'),'port':0x18eb});var socket=require(_0xe999('0xc'))(new Redis(config[_0xe999('0xd')]));require('./whatsappMessage.socket')[_0xe999('0xe')](socket);function respondWithRpcPromise(_0x322048,_0x3151a7,_0x1b2814){return new BPromise(function(_0x1097f0,_0xbbccfe){return client[_0xe999('0xf')](_0x322048,_0x1b2814)[_0xe999('0x10')](function(_0x1e8751){logger['info'](_0xe999('0x11'),_0x3151a7,_0xe999('0x12'));logger[_0xe999('0x13')](_0xe999('0x14'),_0x3151a7,_0xe999('0x12'),JSON['stringify'](_0x1e8751));if(_0x1e8751[_0xe999('0x15')]){if(_0x1e8751[_0xe999('0x15')][_0xe999('0x16')]===0x1f4){logger[_0xe999('0x15')](_0xe999('0x11'),_0x3151a7,_0x1e8751[_0xe999('0x15')][_0xe999('0x17')]);return _0xbbccfe(_0x1e8751[_0xe999('0x15')][_0xe999('0x17')]);}logger[_0xe999('0x15')](_0xe999('0x11'),_0x3151a7,_0x1e8751[_0xe999('0x15')]['message']);return _0x1097f0(_0x1e8751[_0xe999('0x15')][_0xe999('0x17')]);}else{logger[_0xe999('0x18')](_0xe999('0x11'),_0x3151a7,_0xe999('0x12'));_0x1097f0(_0x1e8751[_0xe999('0x19')][_0xe999('0x17')]);}})['catch'](function(_0x3ce169){logger[_0xe999('0x15')](_0xe999('0x11'),_0x3151a7,_0x3ce169);_0xbbccfe(_0x3ce169);});});}exports[_0xe999('0x1a')]=function(_0x42a72d){var _0x1a73e9=this;return new Promise(function(_0x50fe9c,_0x381d37){return db['WhatsappMessage'][_0xe999('0x1b')](_0x42a72d[_0xe999('0x1c')],{'raw':_0x42a72d[_0xe999('0x1d')]?_0x42a72d[_0xe999('0x1d')][_0xe999('0x1e')]===undefined?!![]:![]:!![]})[_0xe999('0x10')](function(_0x18a6a8){logger['info']('CreateWhatsappMessage',_0x42a72d);logger[_0xe999('0x13')](_0xe999('0x1a'),_0x42a72d,JSON['stringify'](_0x18a6a8));_0x50fe9c(_0x18a6a8);})['catch'](function(_0x103b98){logger[_0xe999('0x15')](_0xe999('0x1a'),_0x103b98[_0xe999('0x17')],_0x42a72d);_0x381d37(_0x1a73e9[_0xe999('0x15')](0x1f4,_0x103b98['message']));});});};
\ No newline at end of file
+var _0xddfc=['./whatsappMessage.socket','register','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','options','raw','stringify','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','redis','defaults'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xddfc,0x17b));var _0xcddf=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xddfc[_0x5f0089];return _0x193892;};'use strict';var _=require(_0xcddf('0x0'));var util=require(_0xcddf('0x1'));var moment=require(_0xcddf('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcddf('0x3'));var db=require(_0xcddf('0x4'))['db'];var utils=require(_0xcddf('0x5'));var logger=require('../../config/logger')(_0xcddf('0x6'));var config=require(_0xcddf('0x7'));var jayson=require(_0xcddf('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0xcddf('0x9')]=_[_0xcddf('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xcddf('0xb'))[_0xcddf('0xc')](socket);function respondWithRpcPromise(_0x3318ab,_0x77bd54,_0xe49dd1){return new BPromise(function(_0x423551,_0xfa4076){return client[_0xcddf('0xd')](_0x3318ab,_0xe49dd1)['then'](function(_0x274bfb){logger[_0xcddf('0xe')](_0xcddf('0xf'),_0x77bd54,_0xcddf('0x10'));logger[_0xcddf('0x11')](_0xcddf('0x12'),_0x77bd54,_0xcddf('0x10'),JSON['stringify'](_0x274bfb));if(_0x274bfb[_0xcddf('0x13')]){if(_0x274bfb[_0xcddf('0x13')][_0xcddf('0x14')]===0x1f4){logger[_0xcddf('0x13')](_0xcddf('0xf'),_0x77bd54,_0x274bfb[_0xcddf('0x13')][_0xcddf('0x15')]);return _0xfa4076(_0x274bfb[_0xcddf('0x13')]['message']);}logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x77bd54,_0x274bfb['error'][_0xcddf('0x15')]);return _0x423551(_0x274bfb['error'][_0xcddf('0x15')]);}else{logger[_0xcddf('0xe')]('WhatsappMessage,\x20%s,\x20%s',_0x77bd54,'request\x20sent');_0x423551(_0x274bfb[_0xcddf('0x16')][_0xcddf('0x15')]);}})[_0xcddf('0x17')](function(_0x15301a){logger[_0xcddf('0x13')](_0xcddf('0xf'),_0x77bd54,_0x15301a);_0xfa4076(_0x15301a);});});}exports[_0xcddf('0x18')]=function(_0x50848b){var _0x3838bc=this;return new Promise(function(_0x415244,_0x507cec){return db[_0xcddf('0x19')][_0xcddf('0x1a')](_0x50848b['body'],{'raw':_0x50848b[_0xcddf('0x1b')]?_0x50848b['options'][_0xcddf('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x388e41){logger['info'](_0xcddf('0x18'),_0x50848b);logger[_0xcddf('0x11')](_0xcddf('0x18'),_0x50848b,JSON[_0xcddf('0x1d')](_0x388e41));_0x415244(_0x388e41);})[_0xcddf('0x17')](function(_0x283930){logger[_0xcddf('0x13')](_0xcddf('0x18'),_0x283930[_0xcddf('0x15')],_0x50848b);_0x507cec(_0x3838bc[_0xcddf('0x13')](0x1f4,_0x283930[_0xcddf('0x15')]));});});};
\ No newline at end of file
index 1991de2..9433f10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb079=['remove','update','emit','removeListener','whatsappMessage:','./whatsappMessage.events','save'];(function(_0xba0348,_0x5b753e){var _0x1ec6f7=function(_0x2bccf1){while(--_0x2bccf1){_0xba0348['push'](_0xba0348['shift']());}};_0x1ec6f7(++_0x5b753e);}(_0xb079,0x194));var _0x9b07=function(_0x1df070,_0x53979d){_0x1df070=_0x1df070-0x0;var _0x297081=_0xb079[_0x1df070];return _0x297081;};'use strict';var WhatsappMessageEvents=require(_0x9b07('0x0'));var events=[_0x9b07('0x1'),_0x9b07('0x2'),_0x9b07('0x3')];function createListener(_0x33aa7a,_0x4bdac5){return function(_0x40aa53){_0x4bdac5[_0x9b07('0x4')](_0x33aa7a,_0x40aa53);};}function removeListener(_0x3742b3,_0x3aea3b){return function(){WhatsappMessageEvents[_0x9b07('0x5')](_0x3742b3,_0x3aea3b);};}exports['register']=function(_0xedc196){for(var _0x175b1e=0x0,_0x56645f=events['length'];_0x175b1e<_0x56645f;_0x175b1e++){var _0x44f4ac=events[_0x175b1e];var _0x5c1b98=createListener(_0x9b07('0x6')+_0x44f4ac,_0xedc196);WhatsappMessageEvents['on'](_0x44f4ac,_0x5c1b98);}};
\ No newline at end of file
+var _0xc2e0=['emit','removeListener','length','whatsappMessage:','./whatsappMessage.events'];(function(_0x7c4613,_0x40700e){var _0x9184a6=function(_0x25b449){while(--_0x25b449){_0x7c4613['push'](_0x7c4613['shift']());}};_0x9184a6(++_0x40700e);}(_0xc2e0,0x167));var _0x0c2e=function(_0x2658c8,_0x5197a3){_0x2658c8=_0x2658c8-0x0;var _0x377f10=_0xc2e0[_0x2658c8];return _0x377f10;};'use strict';var WhatsappMessageEvents=require(_0x0c2e('0x0'));var events=['save','remove','update'];function createListener(_0x5c56aa,_0x78198c){return function(_0x22315e){_0x78198c[_0x0c2e('0x1')](_0x5c56aa,_0x22315e);};}function removeListener(_0xde9490,_0x36d476){return function(){WhatsappMessageEvents[_0x0c2e('0x2')](_0xde9490,_0x36d476);};}exports['register']=function(_0xe5b346){for(var _0xbc56c=0x0,_0x10cad6=events[_0x0c2e('0x3')];_0xbc56c<_0x10cad6;_0xbc56c++){var _0x22684b=events[_0xbc56c];var _0x58c72c=createListener(_0x0c2e('0x4')+_0x22684b,_0xe5b346);WhatsappMessageEvents['on'](_0x22684b,_0x58c72c);}};
\ No newline at end of file
index c01a882..d209406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47b3=['show','getMembers','/:id/teams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams','exports','util','path','Router','../../components/auth/service','../../components/interaction/service','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x88127b,_0x10b7ad){var _0x417922=function(_0x332d7c){while(--_0x332d7c){_0x88127b['push'](_0x88127b['shift']());}};_0x417922(++_0x10b7ad);}(_0x47b3,0x153));var _0x347b=function(_0x3c7ba4,_0x9af4e9){_0x3c7ba4=_0x3c7ba4-0x0;var _0x35d996=_0x47b3[_0x3c7ba4];return _0x35d996;};'use strict';var multer=require('multer');var util=require(_0x347b('0x0'));var path=require(_0x347b('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x347b('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x347b('0x3'));var interaction=require(_0x347b('0x4'));var config=require('../../config/environment');var controller=require(_0x347b('0x5'));router[_0x347b('0x6')]('/',auth[_0x347b('0x7')](),controller[_0x347b('0x8')]);router[_0x347b('0x6')](_0x347b('0x9'),auth[_0x347b('0x7')](),controller[_0x347b('0xa')]);router['get'](_0x347b('0xb'),auth[_0x347b('0x7')](),controller[_0x347b('0xc')]);router[_0x347b('0x6')]('/:id/members',auth[_0x347b('0x7')](),controller[_0x347b('0xd')]);router[_0x347b('0x6')](_0x347b('0xe'),auth['isAuthenticated'](),controller['getTeams']);router[_0x347b('0x6')](_0x347b('0xf'),auth[_0x347b('0x7')](),controller[_0x347b('0x10')]);router[_0x347b('0x11')]('/',auth[_0x347b('0x7')](),controller[_0x347b('0x12')]);router[_0x347b('0x11')]('/:id/teams',auth[_0x347b('0x7')](),controller[_0x347b('0x13')]);router['post'](_0x347b('0xf'),auth[_0x347b('0x7')](),controller[_0x347b('0x14')]);router[_0x347b('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x347b('0x16')]);router[_0x347b('0x17')]('/:id',auth[_0x347b('0x7')](),controller[_0x347b('0x18')]);router['delete'](_0x347b('0xe'),auth[_0x347b('0x7')](),controller[_0x347b('0x19')]);router[_0x347b('0x17')]('/:id/users',auth[_0x347b('0x7')](),controller['removeAgents']);module[_0x347b('0x1a')]=router;
\ No newline at end of file
+var _0x2581=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','getMembers','/:id/users','getAgents','post','create','addTeams','put','update','delete','destroy','/:id/teams','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router'];(function(_0x188d89,_0x5a32ee){var _0x3916ba=function(_0x4e0cc4){while(--_0x4e0cc4){_0x188d89['push'](_0x188d89['shift']());}};_0x3916ba(++_0x5a32ee);}(_0x2581,0x72));var _0x1258=function(_0x8f472b,_0x39ef2c){_0x8f472b=_0x8f472b-0x0;var _0x3c79e4=_0x2581[_0x8f472b];return _0x3c79e4;};'use strict';var multer=require(_0x1258('0x0'));var util=require(_0x1258('0x1'));var path=require(_0x1258('0x2'));var timeout=require(_0x1258('0x3'));var express=require(_0x1258('0x4'));var router=express[_0x1258('0x5')]();var fs_extra=require(_0x1258('0x6'));var auth=require(_0x1258('0x7'));var interaction=require(_0x1258('0x8'));var config=require(_0x1258('0x9'));var controller=require('./whatsappQueue.controller');router[_0x1258('0xa')]('/',auth[_0x1258('0xb')](),controller[_0x1258('0xc')]);router[_0x1258('0xa')](_0x1258('0xd'),auth[_0x1258('0xb')](),controller[_0x1258('0xe')]);router[_0x1258('0xa')](_0x1258('0xf'),auth[_0x1258('0xb')](),controller['show']);router[_0x1258('0xa')](_0x1258('0x10'),auth[_0x1258('0xb')](),controller[_0x1258('0x11')]);router[_0x1258('0xa')]('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router[_0x1258('0xa')](_0x1258('0x12'),auth[_0x1258('0xb')](),controller[_0x1258('0x13')]);router[_0x1258('0x14')]('/',auth['isAuthenticated'](),controller[_0x1258('0x15')]);router[_0x1258('0x14')]('/:id/teams',auth[_0x1258('0xb')](),controller[_0x1258('0x16')]);router[_0x1258('0x14')](_0x1258('0x12'),auth[_0x1258('0xb')](),controller['addAgents']);router[_0x1258('0x17')](_0x1258('0xf'),auth[_0x1258('0xb')](),controller[_0x1258('0x18')]);router[_0x1258('0x19')](_0x1258('0xf'),auth['isAuthenticated'](),controller[_0x1258('0x1a')]);router['delete'](_0x1258('0x1b'),auth[_0x1258('0xb')](),controller[_0x1258('0x1c')]);router[_0x1258('0x19')]('/:id/users',auth[_0x1258('0xb')](),controller[_0x1258('0x1d')]);module['exports']=router;
\ No newline at end of file
index 75975e4..d114c92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce25=['beepall','STRING','rrmemory'];(function(_0x87506e,_0x5680ec){var _0x5496a4=function(_0x1e29ab){while(--_0x1e29ab){_0x87506e['push'](_0x87506e['shift']());}};_0x5496a4(++_0x5680ec);}(_0xce25,0x196));var _0x5ce2=function(_0x304c6b,_0x527d76){_0x304c6b=_0x304c6b-0x0;var _0x11ee9b=_0xce25[_0x304c6b];return _0x11ee9b;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x5ce2('0x0')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x5ce2('0x1'),_0x5ce2('0x2'),'roundrobin')},'description':{'type':Sequelize[_0x5ce2('0x0')]}};
\ No newline at end of file
+var _0x3b75=['INTEGER','rrmemory','roundrobin','sequelize','exports','STRING','name'];(function(_0x4b5813,_0x5769de){var _0x423465=function(_0x18071f){while(--_0x18071f){_0x4b5813['push'](_0x4b5813['shift']());}};_0x423465(++_0x5769de);}(_0x3b75,0xdc));var _0x53b7=function(_0x2d4421,_0x15a84f){_0x2d4421=_0x2d4421-0x0;var _0x2d3b01=_0x3b75[_0x2d4421];return _0x2d3b01;};'use strict';var Sequelize=require(_0x53b7('0x0'));module[_0x53b7('0x1')]={'name':{'type':Sequelize[_0x53b7('0x2')],'unique':_0x53b7('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x53b7('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x53b7('0x5'),'beepall',_0x53b7('0x6'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index baace49..ead792a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8d7=['moment','bluebird','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','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','get','error','stack','name','index','WhatsappQueue','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','includeAll','include','findAll','catch','show','params','options','find','create','user','role','WhatsappQueues','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','UserWhatsappQueue','nolimit','pick','WhatsappQueueId','User','findAndCountAll','agent','whatsappPause','updatedAt','createdAt','rows','format','%s/%s','getTeams','findOne','Team','addTeams','ids','online','flatMap','each','findOrCreate','forEach','emit','removeTeams','select','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','Agents','clone','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','transaction','removeAgents','addAgents','omit','spread','userWhatsappQueue:save','isArray','userWhatsappQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xd8d7,0x1a0));var _0x7d8d=function(_0x10b48a,_0x1a0a3f){_0x10b48a=_0x10b48a-0x0;var _0x2c4533=_0xd8d7[_0x10b48a];return _0x2c4533;};'use strict';var emlformat=require(_0x7d8d('0x0'));var rimraf=require(_0x7d8d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7d8d('0x2'));var rp=require(_0x7d8d('0x3'));var moment=require(_0x7d8d('0x4'));var BPromise=require(_0x7d8d('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7d8d('0x6'));var sox=require(_0x7d8d('0x7'));var csv=require(_0x7d8d('0x8'));var ejs=require(_0x7d8d('0x9'));var fs=require('fs');var fs_extra=require(_0x7d8d('0xa'));var _=require(_0x7d8d('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7d8d('0xc'));var deskjs=require(_0x7d8d('0xd'));var toCsv=require(_0x7d8d('0x8'));var querystring=require(_0x7d8d('0xe'));var Papa=require(_0x7d8d('0xf'));var Redis=require(_0x7d8d('0x10'));var authService=require(_0x7d8d('0x11'));var qs=require(_0x7d8d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7d8d('0x13'));var logger=require(_0x7d8d('0x14'))(_0x7d8d('0x15'));var utils=require(_0x7d8d('0x16'));var config=require(_0x7d8d('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x7d8d('0x18'))['db'];config[_0x7d8d('0x19')]=_['defaults'](config['redis'],{'host':_0x7d8d('0x1a'),'port':0x18eb});var socket=require(_0x7d8d('0x1b'))(new Redis(config['redis']));require(_0x7d8d('0x1c'))[_0x7d8d('0x1d')](socket);function respondWithStatusCode(_0x4a4c12,_0x4d244e){_0x4d244e=_0x4d244e||0xcc;return function(_0x4ba4af){if(_0x4ba4af){return _0x4a4c12[_0x7d8d('0x1e')](_0x4d244e);}return _0x4a4c12[_0x7d8d('0x1f')](_0x4d244e)[_0x7d8d('0x20')]();};}function respondWithResult(_0x141fb4,_0x22a641){_0x22a641=_0x22a641||0xc8;return function(_0x1e7fb7){if(_0x1e7fb7){return _0x141fb4[_0x7d8d('0x1f')](_0x22a641)[_0x7d8d('0x21')](_0x1e7fb7);}};}function respondWithFilteredResult(_0x304324,_0x361809){return function(_0x5779af){if(_0x5779af){var _0x2fd30c=typeof _0x361809[_0x7d8d('0x22')]==='undefined'&&typeof _0x361809[_0x7d8d('0x23')]===_0x7d8d('0x24');var _0x218312=_0x5779af[_0x7d8d('0x25')];var _0x5ec3fe=_0x2fd30c?0x0:_0x361809[_0x7d8d('0x22')];var _0x7647bf=_0x2fd30c?_0x5779af[_0x7d8d('0x25')]:_0x361809[_0x7d8d('0x22')]+_0x361809[_0x7d8d('0x23')];var _0x23aecf;if(_0x7647bf>=_0x218312){_0x7647bf=_0x218312;_0x23aecf=0xc8;}else{_0x23aecf=0xce;}_0x304324[_0x7d8d('0x1f')](_0x23aecf);return _0x304324[_0x7d8d('0x26')](_0x7d8d('0x27'),_0x5ec3fe+'-'+_0x7647bf+'/'+_0x218312)['json'](_0x5779af);}return null;};}function patchUpdates(_0x31483c){return function(_0x218e04){try{jsonpatch[_0x7d8d('0x28')](_0x218e04,_0x31483c,!![]);}catch(_0x3867e0){return BPromise['reject'](_0x3867e0);}return _0x218e04[_0x7d8d('0x29')]();};}function saveUpdates(_0x3f4e9f,_0x4a2946){return function(_0x6bb493){if(_0x6bb493){return _0x6bb493[_0x7d8d('0x2a')](_0x3f4e9f)[_0x7d8d('0x2b')](function(_0x4639ac){return _0x4639ac;});}return null;};}function removeEntity(_0xadb801,_0x12c2ff){return function(_0x29628a){if(_0x29628a){return _0x29628a[_0x7d8d('0x2c')]()['then'](function(){var _0x3ba23f=_0x29628a[_0x7d8d('0x2d')]({'plain':!![]});var _0x4605e7='WhatsappQueues';return db['UserProfileResource'][_0x7d8d('0x2c')]({'where':{'type':_0x4605e7,'resourceId':_0x3ba23f['id']}})[_0x7d8d('0x2b')](function(){return _0x29628a;});})[_0x7d8d('0x2b')](function(){_0xadb801[_0x7d8d('0x1f')](0xcc)[_0x7d8d('0x20')]();});}};}function handleEntityNotFound(_0x1d4cad,_0x2b0d0d){return function(_0x473e45){if(!_0x473e45){_0x1d4cad[_0x7d8d('0x1e')](0x194);}return _0x473e45;};}function handleError(_0x1a4fef,_0x2ac374){_0x2ac374=_0x2ac374||0x1f4;return function(_0x383b1d){logger[_0x7d8d('0x2e')](_0x383b1d[_0x7d8d('0x2f')]);if(_0x383b1d[_0x7d8d('0x30')]){delete _0x383b1d[_0x7d8d('0x30')];}_0x1a4fef['status'](_0x2ac374)['send'](_0x383b1d);};}exports[_0x7d8d('0x31')]=function(_0x155b43,_0x3783e9){var _0x15905c={},_0x3719ce={},_0x29c851={'count':0x0,'rows':[]};var _0x481a49=_['map'](db[_0x7d8d('0x32')][_0x7d8d('0x33')],function(_0x54d002){return{'name':_0x54d002[_0x7d8d('0x34')],'type':_0x54d002[_0x7d8d('0x35')][_0x7d8d('0x36')]};});_0x3719ce[_0x7d8d('0x37')]=_[_0x7d8d('0x38')](_0x481a49,_0x7d8d('0x30'));_0x3719ce[_0x7d8d('0x39')]=_[_0x7d8d('0x3a')](_0x155b43[_0x7d8d('0x39')]);_0x3719ce[_0x7d8d('0x3b')]=_[_0x7d8d('0x3c')](_0x3719ce[_0x7d8d('0x37')],_0x3719ce['query']);_0x15905c[_0x7d8d('0x3d')]=_['intersection'](_0x3719ce[_0x7d8d('0x37')],qs[_0x7d8d('0x3e')](_0x155b43['query'][_0x7d8d('0x3e')]));_0x15905c[_0x7d8d('0x3d')]=_0x15905c[_0x7d8d('0x3d')][_0x7d8d('0x3f')]?_0x15905c['attributes']:_0x3719ce[_0x7d8d('0x37')];if(!_0x155b43['query'][_0x7d8d('0x40')]('nolimit')){_0x15905c[_0x7d8d('0x23')]=qs['limit'](_0x155b43['query'][_0x7d8d('0x23')]);_0x15905c[_0x7d8d('0x22')]=qs[_0x7d8d('0x22')](_0x155b43[_0x7d8d('0x39')][_0x7d8d('0x22')]);}_0x15905c[_0x7d8d('0x41')]=qs[_0x7d8d('0x42')](_0x155b43[_0x7d8d('0x39')][_0x7d8d('0x42')]);_0x15905c[_0x7d8d('0x43')]=qs[_0x7d8d('0x3b')](_['pick'](_0x155b43['query'],_0x3719ce[_0x7d8d('0x3b')]),_0x481a49);if(_0x155b43[_0x7d8d('0x39')][_0x7d8d('0x44')]){_0x15905c['where']=_[_0x7d8d('0x45')](_0x15905c['where'],{'$or':_['map'](_0x481a49,function(_0x372d40){if(_0x372d40[_0x7d8d('0x35')]!=='VIRTUAL'){var _0x196c47={};_0x196c47[_0x372d40['name']]={'$like':'%'+_0x155b43['query'][_0x7d8d('0x44')]+'%'};return _0x196c47;}})});}_0x15905c=_['merge']({},_0x15905c,_0x155b43['options']);var _0x36f02d={'where':_0x15905c[_0x7d8d('0x43')]};return db[_0x7d8d('0x32')]['count'](_0x36f02d)['then'](function(_0x583db6){_0x29c851[_0x7d8d('0x25')]=_0x583db6;if(_0x155b43[_0x7d8d('0x39')][_0x7d8d('0x46')]){_0x15905c[_0x7d8d('0x47')]=[{'all':!![]}];}return db['WhatsappQueue'][_0x7d8d('0x48')](_0x15905c);})[_0x7d8d('0x2b')](function(_0xa44d27){_0x29c851['rows']=_0xa44d27;return _0x29c851;})[_0x7d8d('0x2b')](respondWithFilteredResult(_0x3783e9,_0x15905c))[_0x7d8d('0x49')](handleError(_0x3783e9,null));};exports[_0x7d8d('0x4a')]=function(_0x4327ab,_0x442038){var _0x2393d4={'raw':!![],'where':{'id':_0x4327ab[_0x7d8d('0x4b')]['id']}},_0xa3b18f={};_0xa3b18f[_0x7d8d('0x37')]=_[_0x7d8d('0x3a')](db['WhatsappQueue'][_0x7d8d('0x33')]);_0xa3b18f[_0x7d8d('0x39')]=_[_0x7d8d('0x3a')](_0x4327ab[_0x7d8d('0x39')]);_0xa3b18f['filters']=_[_0x7d8d('0x3c')](_0xa3b18f[_0x7d8d('0x37')],_0xa3b18f[_0x7d8d('0x39')]);_0x2393d4[_0x7d8d('0x3d')]=_[_0x7d8d('0x3c')](_0xa3b18f[_0x7d8d('0x37')],qs[_0x7d8d('0x3e')](_0x4327ab[_0x7d8d('0x39')][_0x7d8d('0x3e')]));_0x2393d4['attributes']=_0x2393d4['attributes'][_0x7d8d('0x3f')]?_0x2393d4[_0x7d8d('0x3d')]:_0xa3b18f[_0x7d8d('0x37')];if(_0x4327ab[_0x7d8d('0x39')][_0x7d8d('0x46')]){_0x2393d4[_0x7d8d('0x47')]=[{'all':!![]}];}_0x2393d4=_[_0x7d8d('0x45')]({},_0x2393d4,_0x4327ab[_0x7d8d('0x4c')]);return db['WhatsappQueue'][_0x7d8d('0x4d')](_0x2393d4)['then'](handleEntityNotFound(_0x442038,null))[_0x7d8d('0x2b')](respondWithResult(_0x442038,null))[_0x7d8d('0x49')](handleError(_0x442038,null));};exports['create']=function(_0xd06705,_0x11d59a){return db['WhatsappQueue'][_0x7d8d('0x4e')](_0xd06705['body'],{})[_0x7d8d('0x2b')](function(_0x3b83d6){var _0x545d25=_0xd06705[_0x7d8d('0x4f')][_0x7d8d('0x2d')]({'plain':!![]});if(!_0x545d25)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x545d25[_0x7d8d('0x50')]===_0x7d8d('0x4f')){var _0x2479d4=_0x3b83d6[_0x7d8d('0x2d')]({'plain':!![]});var _0x5564c6=_0x7d8d('0x51');return db['UserProfileSection'][_0x7d8d('0x4d')]({'where':{'name':_0x5564c6,'userProfileId':_0x545d25[_0x7d8d('0x52')]},'raw':!![]})[_0x7d8d('0x2b')](function(_0x4672ca){if(_0x4672ca&&_0x4672ca['autoAssociation']===0x0){return db['UserProfileResource'][_0x7d8d('0x4e')]({'name':_0x2479d4[_0x7d8d('0x30')],'resourceId':_0x2479d4['id'],'type':_0x4672ca[_0x7d8d('0x30')],'sectionId':_0x4672ca['id']},{})[_0x7d8d('0x2b')](function(){return _0x3b83d6;});}else{return _0x3b83d6;}})[_0x7d8d('0x49')](function(_0x385314){logger[_0x7d8d('0x2e')](_0x7d8d('0x53'),_0x385314);throw _0x385314;});}return _0x3b83d6;})[_0x7d8d('0x2b')](respondWithResult(_0x11d59a,0xc9))[_0x7d8d('0x49')](handleError(_0x11d59a,null));};exports[_0x7d8d('0x2a')]=function(_0x42e8bf,_0xedef8a){if(_0x42e8bf[_0x7d8d('0x54')]['id']){delete _0x42e8bf[_0x7d8d('0x54')]['id'];}return db[_0x7d8d('0x32')][_0x7d8d('0x4d')]({'where':{'id':_0x42e8bf['params']['id']}})[_0x7d8d('0x2b')](handleEntityNotFound(_0xedef8a,null))[_0x7d8d('0x2b')](saveUpdates(_0x42e8bf[_0x7d8d('0x54')],null))[_0x7d8d('0x2b')](respondWithResult(_0xedef8a,null))[_0x7d8d('0x49')](handleError(_0xedef8a,null));};exports[_0x7d8d('0x2c')]=function(_0x39bd60,_0x171e1b){return db['WhatsappQueue'][_0x7d8d('0x4d')]({'where':{'id':_0x39bd60['params']['id']}})[_0x7d8d('0x2b')](handleEntityNotFound(_0x171e1b,null))[_0x7d8d('0x2b')](removeEntity(_0x171e1b,null))[_0x7d8d('0x49')](handleError(_0x171e1b,null));};exports[_0x7d8d('0x55')]=function(_0x397514,_0x204d2b){return db[_0x7d8d('0x32')][_0x7d8d('0x55')]()[_0x7d8d('0x2b')](respondWithResult(_0x204d2b,null))['catch'](handleError(_0x204d2b,null));};exports['getMembers']=function(_0x533f86,_0x2dba56,_0x1381d7){var _0x5c1ec0={'raw':!![],'where':{}},_0x1ed650={},_0x4fce85;return db['WhatsappQueue']['findOne']({'where':{'id':_0x533f86[_0x7d8d('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2dba56,null))[_0x7d8d('0x2b')](function(_0x2df247){if(_0x2df247){_0x4fce85=_0x2df247[_0x7d8d('0x2d')]({'plain':!![]});_0x1ed650[_0x7d8d('0x37')]=_[_0x7d8d('0x3a')](db[_0x7d8d('0x56')][_0x7d8d('0x33')]);_0x1ed650[_0x7d8d('0x39')]=_[_0x7d8d('0x3a')](_0x533f86[_0x7d8d('0x39')]);_0x1ed650[_0x7d8d('0x3b')]=_['intersection'](_0x1ed650[_0x7d8d('0x37')],_0x1ed650[_0x7d8d('0x39')]);_0x5c1ec0[_0x7d8d('0x3d')]=_[_0x7d8d('0x3c')](_0x1ed650['model'],qs[_0x7d8d('0x3e')](_0x533f86[_0x7d8d('0x39')][_0x7d8d('0x3e')]));_0x5c1ec0[_0x7d8d('0x3d')]=_0x5c1ec0[_0x7d8d('0x3d')][_0x7d8d('0x3f')]?_0x5c1ec0[_0x7d8d('0x3d')]:_0x1ed650[_0x7d8d('0x37')];if(!_0x533f86[_0x7d8d('0x39')][_0x7d8d('0x40')](_0x7d8d('0x57'))){_0x5c1ec0[_0x7d8d('0x23')]=qs[_0x7d8d('0x23')](_0x533f86[_0x7d8d('0x39')]['limit']);_0x5c1ec0[_0x7d8d('0x22')]=qs[_0x7d8d('0x22')](_0x533f86['query'][_0x7d8d('0x22')]);}_0x5c1ec0[_0x7d8d('0x41')]=qs['sort'](_0x533f86[_0x7d8d('0x39')][_0x7d8d('0x42')]);_0x5c1ec0[_0x7d8d('0x43')]=qs[_0x7d8d('0x3b')](_[_0x7d8d('0x58')](_0x533f86[_0x7d8d('0x39')],_0x1ed650[_0x7d8d('0x3b')]));_0x5c1ec0[_0x7d8d('0x43')][_0x7d8d('0x59')]=_0x2df247['id'];if(_0x533f86[_0x7d8d('0x39')][_0x7d8d('0x44')]){_0x5c1ec0[_0x7d8d('0x43')]=_[_0x7d8d('0x45')](_0x5c1ec0['where'],{'$or':_['map'](_0x5c1ec0[_0x7d8d('0x3d')],function(_0x1de435){var _0x51ca86={};_0x51ca86[_0x1de435]={'$like':'%'+_0x533f86[_0x7d8d('0x39')][_0x7d8d('0x44')]+'%'};return _0x51ca86;})});}_0x5c1ec0=_[_0x7d8d('0x45')]({},_0x5c1ec0,_0x533f86[_0x7d8d('0x4c')]);return db[_0x7d8d('0x56')][_0x7d8d('0x48')](_0x5c1ec0);}})[_0x7d8d('0x2b')](function(_0x51447d){if(_0x51447d){return db[_0x7d8d('0x5a')][_0x7d8d('0x5b')]({'where':{'id':_[_0x7d8d('0x38')](_0x51447d,'UserId'),'role':_0x7d8d('0x5c')},'attributes':['id','name',_0x7d8d('0x5d'),_0x7d8d('0x5e'),_0x7d8d('0x5f')]});}})[_0x7d8d('0x2b')](function(_0xf00742){if(_0xf00742){return{'count':_0xf00742[_0x7d8d('0x25')],'rows':_['map'](_0xf00742[_0x7d8d('0x60')],function(_0x35fa93){return{'membername':_0x35fa93[_0x7d8d('0x30')],'UserId':_0x35fa93['id'],'queue_name':_0x4fce85[_0x7d8d('0x30')],'WhatsappQueueId':_0x4fce85['id'],'interface':util[_0x7d8d('0x61')](_0x7d8d('0x62'),'SIP',_0x35fa93[_0x7d8d('0x30')]),'penalty':0x0,'paused':_0x35fa93[_0x7d8d('0x5d')],'createdAt':_0x35fa93[_0x7d8d('0x5f')],'updatedAt':_0x35fa93[_0x7d8d('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x2dba56,_0x5c1ec0))['catch'](handleError(_0x2dba56,null));};exports[_0x7d8d('0x63')]=function(_0x2d7c10,_0x19e971,_0x3d14a1){var _0x2bae3b={};var _0x3c6127={};var _0x3fae6e;var _0x246e82;return db[_0x7d8d('0x32')][_0x7d8d('0x64')]({'where':{'id':_0x2d7c10[_0x7d8d('0x4b')]['id']}})[_0x7d8d('0x2b')](handleEntityNotFound(_0x19e971,null))[_0x7d8d('0x2b')](function(_0x4f3e6c){if(_0x4f3e6c){_0x3fae6e=_0x4f3e6c;_0x3c6127[_0x7d8d('0x37')]=_[_0x7d8d('0x3a')](db[_0x7d8d('0x65')][_0x7d8d('0x33')]);_0x3c6127[_0x7d8d('0x39')]=_['keys'](_0x2d7c10[_0x7d8d('0x39')]);_0x3c6127[_0x7d8d('0x3b')]=_[_0x7d8d('0x3c')](_0x3c6127[_0x7d8d('0x37')],_0x3c6127[_0x7d8d('0x39')]);_0x2bae3b['attributes']=_[_0x7d8d('0x3c')](_0x3c6127['model'],qs[_0x7d8d('0x3e')](_0x2d7c10[_0x7d8d('0x39')][_0x7d8d('0x3e')]));_0x2bae3b[_0x7d8d('0x3d')]=_0x2bae3b[_0x7d8d('0x3d')][_0x7d8d('0x3f')]?_0x2bae3b['attributes']:_0x3c6127['model'];_0x2bae3b[_0x7d8d('0x41')]=qs[_0x7d8d('0x42')](_0x2d7c10['query'][_0x7d8d('0x42')]);_0x2bae3b[_0x7d8d('0x43')]=qs['filters'](_['pick'](_0x2d7c10[_0x7d8d('0x39')],_0x3c6127[_0x7d8d('0x3b')]));if(_0x2d7c10[_0x7d8d('0x39')][_0x7d8d('0x44')]){_0x2bae3b['where']=_['merge'](_0x2bae3b[_0x7d8d('0x43')],{'$or':_['map'](_0x2bae3b[_0x7d8d('0x3d')],function(_0x4ea3ec){var _0x120fd2={};_0x120fd2[_0x4ea3ec]={'$like':'%'+_0x2d7c10[_0x7d8d('0x39')][_0x7d8d('0x44')]+'%'};return _0x120fd2;})});}_0x2bae3b=_[_0x7d8d('0x45')]({},_0x2bae3b,_0x2d7c10[_0x7d8d('0x4c')]);return _0x3fae6e[_0x7d8d('0x63')](_0x2bae3b);}})[_0x7d8d('0x2b')](function(_0x491ee4){if(_0x491ee4){_0x246e82=_0x491ee4[_0x7d8d('0x3f')];if(!_0x2d7c10[_0x7d8d('0x39')][_0x7d8d('0x40')](_0x7d8d('0x57'))){_0x2bae3b[_0x7d8d('0x23')]=qs[_0x7d8d('0x23')](_0x2d7c10[_0x7d8d('0x39')][_0x7d8d('0x23')]);_0x2bae3b['offset']=qs[_0x7d8d('0x22')](_0x2d7c10[_0x7d8d('0x39')][_0x7d8d('0x22')]);}return _0x3fae6e[_0x7d8d('0x63')](_0x2bae3b);}})[_0x7d8d('0x2b')](function(_0x4f8bc3){if(_0x4f8bc3){return _0x4f8bc3?{'count':_0x246e82,'rows':_0x4f8bc3}:null;}})[_0x7d8d('0x2b')](respondWithResult(_0x19e971,null))['catch'](handleError(_0x19e971,null));};exports[_0x7d8d('0x66')]=function(_0x490fa0,_0x1e9475,_0x313c03){var _0x2210fc=_0x490fa0[_0x7d8d('0x54')][_0x7d8d('0x67')];return db['Team'][_0x7d8d('0x48')]({'where':{'id':_0x2210fc},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x7d8d('0x30'),_0x7d8d('0x68'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x1b57ad){if(_0x1b57ad){var _0x142f1d=_[_0x7d8d('0x69')](_0x1b57ad,function(_0x3c71fc){var _0x53ba1b=_0x3c71fc[_0x7d8d('0x2d')]({'plain':!![]});return _0x53ba1b['Agents'];});return db[_0x7d8d('0x32')][_0x7d8d('0x4d')]({'where':{'id':_0x490fa0[_0x7d8d('0x4b')]['id']}})[_0x7d8d('0x2b')](function(_0x2d5a91){return db['sequelize']['transaction'](function(_0x5968bb){return _0x2d5a91[_0x7d8d('0x66')](_0x2210fc,{'transaction':_0x5968bb})[_0x7d8d('0x2b')](function(){return BPromise[_0x7d8d('0x6a')](_0x142f1d,function(_0x105eac){return db[_0x7d8d('0x56')][_0x7d8d('0x6b')]({'where':{'UserId':_0x105eac['id'],'WhatsappQueueId':_0x490fa0[_0x7d8d('0x4b')]['id']},'transaction':_0x5968bb});});})[_0x7d8d('0x2b')](function(){_0x142f1d[_0x7d8d('0x6c')](function(_0x671845){socket[_0x7d8d('0x6d')]('userWhatsappQueue:save',{'UserId':_0x671845['id'],'WhatsappQueueId':_0x2d5a91['id']});});});});});}})[_0x7d8d('0x2b')](respondWithStatusCode(_0x1e9475,null))[_0x7d8d('0x49')](handleError(_0x1e9475,null));};exports[_0x7d8d('0x6e')]=function(_0x10d701,_0xf60efd,_0x570f51){return db[_0x7d8d('0x65')][_0x7d8d('0x48')]({'where':{'id':_0x10d701['query']['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xf60efd,null))[_0x7d8d('0x2b')](function(_0x25ee9d){var _0x3597f4=_[_0x7d8d('0x38')](_0x25ee9d,'id');var _0x6791c0=[];var _0x269028=[];var _0xb9e37b=squel[_0x7d8d('0x6f')]();_0xb9e37b['field'](_0x7d8d('0x70'))[_0x7d8d('0x71')]('team_has_whatsapp_queues','tq')[_0x7d8d('0x72')](_0x7d8d('0x73'),'ut',_0x7d8d('0x74'))['where'](_0x7d8d('0x75'),_0x10d701[_0x7d8d('0x4b')]['id']);for(var _0x20cb56=0x0;_0x20cb56<_0x25ee9d['length'];_0x20cb56+=0x1){let _0x176239=_0x25ee9d[_0x20cb56];for(var _0x11e969=0x0;_0x11e969<_0x176239[_0x7d8d('0x76')][_0x7d8d('0x3f')];_0x11e969+=0x1){let _0x1e5bbe=_0x176239[_0x7d8d('0x76')][_0x11e969];var _0x194b8a=_0xb9e37b[_0x7d8d('0x77')]();_0x194b8a['where'](_0x7d8d('0x78'),_0x1e5bbe['id']);_0x269028[_0x7d8d('0x79')](db[_0x7d8d('0x7a')]['query'](_0x194b8a['toString'](),{'type':db[_0x7d8d('0x7a')][_0x7d8d('0x7b')][_0x7d8d('0x7c')]})[_0x7d8d('0x2b')](function(_0x43fa48){if(_0x43fa48['length']===0x1){return _0x1e5bbe['id'];}else{var _0x4e5bc4=_[_0x7d8d('0x7d')](_[_0x7d8d('0x38')](_0x43fa48,_0x7d8d('0x7e')),function(_0x2c60a5){return _[_0x7d8d('0x7f')](_0x3597f4,_0x2c60a5);});if(_0x4e5bc4){return _0x1e5bbe['id'];}}}));}}return BPromise[_0x7d8d('0x80')](_0x269028)[_0x7d8d('0x2b')](function(_0x55b9f3){_0x6791c0=_(_0x6791c0)[_0x7d8d('0x81')](_0x55b9f3)[_0x7d8d('0x82')]()['value']();return db['WhatsappQueue'][_0x7d8d('0x4d')]({'where':{'id':_0x10d701['params']['id']}})[_0x7d8d('0x2b')](function(_0xd99e1c){return db[_0x7d8d('0x7a')][_0x7d8d('0x83')](function(_0x293ddf){return _0xd99e1c[_0x7d8d('0x6e')](_0x10d701['query'][_0x7d8d('0x67')],{'transaction':_0x293ddf})[_0x7d8d('0x2b')](function(){if(!_['isEmpty'](_0x6791c0)){return _0xd99e1c[_0x7d8d('0x84')](_0x6791c0,{'transaction':_0x293ddf});}})[_0x7d8d('0x2b')](function(){_0x6791c0[_0x7d8d('0x6c')](function(_0x1f351c){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x1f351c,'WhatsappQueueId':_0xd99e1c['id']});});});});});});})[_0x7d8d('0x2b')](respondWithStatusCode(_0xf60efd,null))[_0x7d8d('0x49')](handleError(_0xf60efd,null));};exports[_0x7d8d('0x85')]=function(_0x4eab3a,_0x17a726,_0x3208f8){return db['WhatsappQueue'][_0x7d8d('0x4d')]({'where':{'id':_0x4eab3a[_0x7d8d('0x4b')]['id']}})[_0x7d8d('0x2b')](handleEntityNotFound(_0x17a726,null))[_0x7d8d('0x2b')](function(_0x10e608){if(_0x10e608){return _0x10e608[_0x7d8d('0x85')](_0x4eab3a['body'][_0x7d8d('0x67')],_[_0x7d8d('0x86')](_0x4eab3a[_0x7d8d('0x54')],[_0x7d8d('0x67'),'id'])||{})[_0x7d8d('0x87')](function(_0x90e60b){for(var _0xc6a09e=0x0;_0xc6a09e<_0x4eab3a[_0x7d8d('0x54')][_0x7d8d('0x67')][_0x7d8d('0x3f')];_0xc6a09e+=0x1){socket['emit'](_0x7d8d('0x88'),{'UserId':Number(_0x4eab3a[_0x7d8d('0x54')][_0x7d8d('0x67')][_0xc6a09e]),'WhatsappQueueId':Number(_0x4eab3a[_0x7d8d('0x4b')]['id'])});}return _0x90e60b;});}})[_0x7d8d('0x2b')](respondWithResult(_0x17a726,null))[_0x7d8d('0x49')](handleError(_0x17a726,null));};exports[_0x7d8d('0x84')]=function(_0x36a60a,_0x2a75c8,_0x21de4e){return db['WhatsappQueue'][_0x7d8d('0x4d')]({'where':{'id':_0x36a60a[_0x7d8d('0x4b')]['id']}})[_0x7d8d('0x2b')](handleEntityNotFound(_0x2a75c8,null))[_0x7d8d('0x2b')](function(_0x3a814a){if(_0x3a814a){return _0x3a814a[_0x7d8d('0x84')](_0x36a60a[_0x7d8d('0x39')][_0x7d8d('0x67')])[_0x7d8d('0x2b')](function(){if(_[_0x7d8d('0x89')](_0x36a60a[_0x7d8d('0x39')]['ids'])){for(var _0x313c75=0x0;_0x313c75<_0x36a60a[_0x7d8d('0x39')]['ids'][_0x7d8d('0x3f')];_0x313c75+=0x1){socket[_0x7d8d('0x6d')]('userWhatsappQueue:remove',{'UserId':Number(_0x36a60a[_0x7d8d('0x39')][_0x7d8d('0x67')][_0x313c75]),'WhatsappQueueId':Number(_0x36a60a[_0x7d8d('0x4b')]['id'])});}}else{socket[_0x7d8d('0x6d')](_0x7d8d('0x8a'),{'UserId':Number(_0x36a60a[_0x7d8d('0x39')]['ids']),'WhatsappQueueId':Number(_0x36a60a[_0x7d8d('0x4b')]['id'])});}});}})[_0x7d8d('0x2b')](respondWithStatusCode(_0x2a75c8,null))['catch'](handleError(_0x2a75c8,null));};exports[_0x7d8d('0x8b')]=function(_0xcb1a7f,_0x558a87,_0x76427){var _0x44a4c0={};var _0xf29927={};var _0x3554d6;var _0x1428b5;return db[_0x7d8d('0x32')]['findOne']({'where':{'id':_0xcb1a7f[_0x7d8d('0x4b')]['id']}})[_0x7d8d('0x2b')](handleEntityNotFound(_0x558a87,null))[_0x7d8d('0x2b')](function(_0x236601){if(_0x236601){_0x3554d6=_0x236601;_0xf29927[_0x7d8d('0x37')]=_[_0x7d8d('0x3a')](db[_0x7d8d('0x5a')]['rawAttributes']);_0xf29927[_0x7d8d('0x39')]=_['keys'](_0xcb1a7f[_0x7d8d('0x39')]);_0xf29927[_0x7d8d('0x3b')]=_[_0x7d8d('0x3c')](_0xf29927[_0x7d8d('0x37')],_0xf29927['query']);_0x44a4c0[_0x7d8d('0x3d')]=_['intersection'](_0xf29927[_0x7d8d('0x37')],qs[_0x7d8d('0x3e')](_0xcb1a7f['query'][_0x7d8d('0x3e')]));_0x44a4c0['attributes']=_0x44a4c0[_0x7d8d('0x3d')][_0x7d8d('0x3f')]?_0x44a4c0[_0x7d8d('0x3d')]:_0xf29927[_0x7d8d('0x37')];_0x44a4c0[_0x7d8d('0x41')]=qs[_0x7d8d('0x42')](_0xcb1a7f[_0x7d8d('0x39')][_0x7d8d('0x42')]);_0x44a4c0[_0x7d8d('0x43')]=qs[_0x7d8d('0x3b')](_[_0x7d8d('0x58')](_0xcb1a7f[_0x7d8d('0x39')],_0xf29927[_0x7d8d('0x3b')]));if(_0xcb1a7f['query'][_0x7d8d('0x44')]){_0x44a4c0[_0x7d8d('0x43')]=_[_0x7d8d('0x45')](_0x44a4c0[_0x7d8d('0x43')],{'$or':_[_0x7d8d('0x38')](_0x44a4c0['attributes'],function(_0x27a75f){var _0xdbc34e={};_0xdbc34e[_0x27a75f]={'$like':'%'+_0xcb1a7f['query'][_0x7d8d('0x44')]+'%'};return _0xdbc34e;})});}_0x44a4c0=_['merge']({},_0x44a4c0,_0xcb1a7f[_0x7d8d('0x4c')]);return _0x3554d6['getAgents'](_0x44a4c0);}})[_0x7d8d('0x2b')](function(_0xacaaf4){if(_0xacaaf4){_0x1428b5=_0xacaaf4[_0x7d8d('0x3f')];if(!_0xcb1a7f[_0x7d8d('0x39')][_0x7d8d('0x40')](_0x7d8d('0x57'))){_0x44a4c0['limit']=qs[_0x7d8d('0x23')](_0xcb1a7f[_0x7d8d('0x39')][_0x7d8d('0x23')]);_0x44a4c0['offset']=qs['offset'](_0xcb1a7f['query'][_0x7d8d('0x22')]);}return _0x3554d6[_0x7d8d('0x8b')](_0x44a4c0);}})[_0x7d8d('0x2b')](function(_0x133191){if(_0x133191){return _0x133191?{'count':_0x1428b5,'rows':_0x133191}:null;}})['then'](respondWithResult(_0x558a87,null))[_0x7d8d('0x49')](handleError(_0x558a87,null));};
\ No newline at end of file
+var _0xa5ab=['spread','isArray','userWhatsappQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','./whatsappQueue.socket','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','UserProfileResource','end','sendStatus','error','stack','name','send','index','WhatsappQueue','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','fields','nolimit','order','sort','filter','merge','VIRTUAL','options','where','include','findAll','rows','catch','show','params','intersection','length','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','WhatsappQueues','UserProfileSection','userProfileId','autoAssociation','describe','findOne','hasOwnProperty','WhatsappQueueId','User','findAndCountAll','UserId','agent','updatedAt','format','%s/%s','SIP','whatsappPause','createdAt','pick','getTeams','addTeams','ids','Team','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','field','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','push','SELECT','every','includes','all','compact','value','removeAgents','addAgents','omit'];(function(_0x3f4891,_0x4e6f62){var _0x54f2d8=function(_0x2b11ee){while(--_0x2b11ee){_0x3f4891['push'](_0x3f4891['shift']());}};_0x54f2d8(++_0x4e6f62);}(_0xa5ab,0x92));var _0xba5a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa5ab[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xba5a('0x0'));var rimraf=require(_0xba5a('0x1'));var zipdir=require(_0xba5a('0x2'));var jsonpatch=require(_0xba5a('0x3'));var rp=require(_0xba5a('0x4'));var moment=require(_0xba5a('0x5'));var BPromise=require(_0xba5a('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xba5a('0x7'));var sox=require(_0xba5a('0x8'));var csv=require('to-csv');var ejs=require(_0xba5a('0x9'));var fs=require('fs');var fs_extra=require(_0xba5a('0xa'));var _=require(_0xba5a('0xb'));var squel=require(_0xba5a('0xc'));var crypto=require(_0xba5a('0xd'));var jsforce=require(_0xba5a('0xe'));var deskjs=require(_0xba5a('0xf'));var toCsv=require('to-csv');var querystring=require(_0xba5a('0x10'));var Papa=require(_0xba5a('0x11'));var Redis=require(_0xba5a('0x12'));var authService=require(_0xba5a('0x13'));var qs=require(_0xba5a('0x14'));var as=require(_0xba5a('0x15'));var hardwareService=require(_0xba5a('0x16'));var logger=require(_0xba5a('0x17'))('api');var utils=require(_0xba5a('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xba5a('0x19'));var db=require(_0xba5a('0x1a'))['db'];config['redis']=_[_0xba5a('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xba5a('0x1c'))(new Redis(config['redis']));require(_0xba5a('0x1d'))['register'](socket);function respondWithStatusCode(_0x40d7a7,_0x302e98){_0x302e98=_0x302e98||0xcc;return function(_0x109947){if(_0x109947){return _0x40d7a7['sendStatus'](_0x302e98);}return _0x40d7a7[_0xba5a('0x1e')](_0x302e98)['end']();};}function respondWithResult(_0x13adbf,_0x2df45e){_0x2df45e=_0x2df45e||0xc8;return function(_0x520da3){if(_0x520da3){return _0x13adbf[_0xba5a('0x1e')](_0x2df45e)['json'](_0x520da3);}};}function respondWithFilteredResult(_0x32a4dd,_0x1766be){return function(_0x4cedb1){if(_0x4cedb1){var _0x91f187=typeof _0x1766be[_0xba5a('0x1f')]===_0xba5a('0x20')&&typeof _0x1766be[_0xba5a('0x21')]===_0xba5a('0x20');var _0x550c17=_0x4cedb1[_0xba5a('0x22')];var _0x1ed0a9=_0x91f187?0x0:_0x1766be[_0xba5a('0x1f')];var _0x1a2914=_0x91f187?_0x4cedb1[_0xba5a('0x22')]:_0x1766be[_0xba5a('0x1f')]+_0x1766be[_0xba5a('0x21')];var _0x5e3fe9;if(_0x1a2914>=_0x550c17){_0x1a2914=_0x550c17;_0x5e3fe9=0xc8;}else{_0x5e3fe9=0xce;}_0x32a4dd[_0xba5a('0x1e')](_0x5e3fe9);return _0x32a4dd[_0xba5a('0x23')](_0xba5a('0x24'),_0x1ed0a9+'-'+_0x1a2914+'/'+_0x550c17)[_0xba5a('0x25')](_0x4cedb1);}return null;};}function patchUpdates(_0x1d97e4){return function(_0x513b77){try{jsonpatch[_0xba5a('0x26')](_0x513b77,_0x1d97e4,!![]);}catch(_0x3eb83c){return BPromise['reject'](_0x3eb83c);}return _0x513b77[_0xba5a('0x27')]();};}function saveUpdates(_0x56735f,_0x556ac7){return function(_0x49bb74){if(_0x49bb74){return _0x49bb74[_0xba5a('0x28')](_0x56735f)[_0xba5a('0x29')](function(_0x4d6bcd){return _0x4d6bcd;});}return null;};}function removeEntity(_0x4aab53,_0x48a10d){return function(_0x38e433){if(_0x38e433){return _0x38e433[_0xba5a('0x2a')]()['then'](function(){var _0x3bc2d6=_0x38e433[_0xba5a('0x2b')]({'plain':!![]});var _0x3a1d19='WhatsappQueues';return db[_0xba5a('0x2c')][_0xba5a('0x2a')]({'where':{'type':_0x3a1d19,'resourceId':_0x3bc2d6['id']}})['then'](function(){return _0x38e433;});})['then'](function(){_0x4aab53[_0xba5a('0x1e')](0xcc)[_0xba5a('0x2d')]();});}};}function handleEntityNotFound(_0x330129,_0x196177){return function(_0x5b2068){if(!_0x5b2068){_0x330129[_0xba5a('0x2e')](0x194);}return _0x5b2068;};}function handleError(_0x59a77a,_0x27dc0d){_0x27dc0d=_0x27dc0d||0x1f4;return function(_0x24487b){logger[_0xba5a('0x2f')](_0x24487b[_0xba5a('0x30')]);if(_0x24487b[_0xba5a('0x31')]){delete _0x24487b[_0xba5a('0x31')];}_0x59a77a[_0xba5a('0x1e')](_0x27dc0d)[_0xba5a('0x32')](_0x24487b);};}exports[_0xba5a('0x33')]=function(_0x14c521,_0x5458ba){var _0x1346e9={},_0x26d202={},_0x314816={'count':0x0,'rows':[]};var _0x523f41=_['map'](db[_0xba5a('0x34')][_0xba5a('0x35')],function(_0x3237db){return{'name':_0x3237db[_0xba5a('0x36')],'type':_0x3237db[_0xba5a('0x37')][_0xba5a('0x38')]};});_0x26d202[_0xba5a('0x39')]=_[_0xba5a('0x3a')](_0x523f41,_0xba5a('0x31'));_0x26d202[_0xba5a('0x3b')]=_[_0xba5a('0x3c')](_0x14c521[_0xba5a('0x3b')]);_0x26d202[_0xba5a('0x3d')]=_['intersection'](_0x26d202[_0xba5a('0x39')],_0x26d202[_0xba5a('0x3b')]);_0x1346e9[_0xba5a('0x3e')]=_['intersection'](_0x26d202[_0xba5a('0x39')],qs['fields'](_0x14c521[_0xba5a('0x3b')][_0xba5a('0x3f')]));_0x1346e9['attributes']=_0x1346e9[_0xba5a('0x3e')]['length']?_0x1346e9[_0xba5a('0x3e')]:_0x26d202['model'];if(!_0x14c521[_0xba5a('0x3b')]['hasOwnProperty'](_0xba5a('0x40'))){_0x1346e9[_0xba5a('0x21')]=qs[_0xba5a('0x21')](_0x14c521['query'][_0xba5a('0x21')]);_0x1346e9[_0xba5a('0x1f')]=qs[_0xba5a('0x1f')](_0x14c521[_0xba5a('0x3b')][_0xba5a('0x1f')]);}_0x1346e9[_0xba5a('0x41')]=qs['sort'](_0x14c521[_0xba5a('0x3b')][_0xba5a('0x42')]);_0x1346e9['where']=qs[_0xba5a('0x3d')](_['pick'](_0x14c521['query'],_0x26d202[_0xba5a('0x3d')]),_0x523f41);if(_0x14c521[_0xba5a('0x3b')][_0xba5a('0x43')]){_0x1346e9['where']=_[_0xba5a('0x44')](_0x1346e9['where'],{'$or':_[_0xba5a('0x3a')](_0x523f41,function(_0x2322e7){if(_0x2322e7[_0xba5a('0x37')]!==_0xba5a('0x45')){var _0x75e9aa={};_0x75e9aa[_0x2322e7[_0xba5a('0x31')]]={'$like':'%'+_0x14c521[_0xba5a('0x3b')][_0xba5a('0x43')]+'%'};return _0x75e9aa;}})});}_0x1346e9=_['merge']({},_0x1346e9,_0x14c521[_0xba5a('0x46')]);var _0x5af8fb={'where':_0x1346e9[_0xba5a('0x47')]};return db[_0xba5a('0x34')][_0xba5a('0x22')](_0x5af8fb)['then'](function(_0x39c115){_0x314816['count']=_0x39c115;if(_0x14c521[_0xba5a('0x3b')]['includeAll']){_0x1346e9[_0xba5a('0x48')]=[{'all':!![]}];}return db[_0xba5a('0x34')][_0xba5a('0x49')](_0x1346e9);})[_0xba5a('0x29')](function(_0x3111ba){_0x314816[_0xba5a('0x4a')]=_0x3111ba;return _0x314816;})[_0xba5a('0x29')](respondWithFilteredResult(_0x5458ba,_0x1346e9))[_0xba5a('0x4b')](handleError(_0x5458ba,null));};exports[_0xba5a('0x4c')]=function(_0x182311,_0x42c300){var _0x58c4dd={'raw':!![],'where':{'id':_0x182311[_0xba5a('0x4d')]['id']}},_0x47e4b0={};_0x47e4b0[_0xba5a('0x39')]=_['keys'](db['WhatsappQueue'][_0xba5a('0x35')]);_0x47e4b0[_0xba5a('0x3b')]=_['keys'](_0x182311[_0xba5a('0x3b')]);_0x47e4b0[_0xba5a('0x3d')]=_[_0xba5a('0x4e')](_0x47e4b0[_0xba5a('0x39')],_0x47e4b0['query']);_0x58c4dd[_0xba5a('0x3e')]=_[_0xba5a('0x4e')](_0x47e4b0[_0xba5a('0x39')],qs[_0xba5a('0x3f')](_0x182311[_0xba5a('0x3b')][_0xba5a('0x3f')]));_0x58c4dd[_0xba5a('0x3e')]=_0x58c4dd[_0xba5a('0x3e')][_0xba5a('0x4f')]?_0x58c4dd['attributes']:_0x47e4b0[_0xba5a('0x39')];if(_0x182311[_0xba5a('0x3b')][_0xba5a('0x50')]){_0x58c4dd['include']=[{'all':!![]}];}_0x58c4dd=_[_0xba5a('0x44')]({},_0x58c4dd,_0x182311[_0xba5a('0x46')]);return db[_0xba5a('0x34')][_0xba5a('0x51')](_0x58c4dd)['then'](handleEntityNotFound(_0x42c300,null))[_0xba5a('0x29')](respondWithResult(_0x42c300,null))[_0xba5a('0x4b')](handleError(_0x42c300,null));};exports[_0xba5a('0x52')]=function(_0x4f7271,_0x18395f){return db[_0xba5a('0x34')][_0xba5a('0x52')](_0x4f7271[_0xba5a('0x53')],{})[_0xba5a('0x29')](function(_0x2c1100){var _0x322860=_0x4f7271[_0xba5a('0x54')][_0xba5a('0x2b')]({'plain':!![]});if(!_0x322860)throw new Error(_0xba5a('0x55'));if(_0x322860['role']===_0xba5a('0x54')){var _0x14dc72=_0x2c1100[_0xba5a('0x2b')]({'plain':!![]});var _0x3423b6=_0xba5a('0x56');return db[_0xba5a('0x57')][_0xba5a('0x51')]({'where':{'name':_0x3423b6,'userProfileId':_0x322860[_0xba5a('0x58')]},'raw':!![]})[_0xba5a('0x29')](function(_0x102279){if(_0x102279&&_0x102279[_0xba5a('0x59')]===0x0){return db['UserProfileResource']['create']({'name':_0x14dc72[_0xba5a('0x31')],'resourceId':_0x14dc72['id'],'type':_0x102279[_0xba5a('0x31')],'sectionId':_0x102279['id']},{})[_0xba5a('0x29')](function(){return _0x2c1100;});}else{return _0x2c1100;}})['catch'](function(_0x5a80a0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5a80a0);throw _0x5a80a0;});}return _0x2c1100;})[_0xba5a('0x29')](respondWithResult(_0x18395f,0xc9))['catch'](handleError(_0x18395f,null));};exports[_0xba5a('0x28')]=function(_0x17c739,_0xdb1095){if(_0x17c739[_0xba5a('0x53')]['id']){delete _0x17c739[_0xba5a('0x53')]['id'];}return db[_0xba5a('0x34')][_0xba5a('0x51')]({'where':{'id':_0x17c739[_0xba5a('0x4d')]['id']}})[_0xba5a('0x29')](handleEntityNotFound(_0xdb1095,null))[_0xba5a('0x29')](saveUpdates(_0x17c739['body'],null))[_0xba5a('0x29')](respondWithResult(_0xdb1095,null))[_0xba5a('0x4b')](handleError(_0xdb1095,null));};exports[_0xba5a('0x2a')]=function(_0x3faeac,_0x30e6e5){return db[_0xba5a('0x34')]['find']({'where':{'id':_0x3faeac[_0xba5a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x30e6e5,null))[_0xba5a('0x29')](removeEntity(_0x30e6e5,null))[_0xba5a('0x4b')](handleError(_0x30e6e5,null));};exports[_0xba5a('0x5a')]=function(_0x11bc8f,_0x27f2b4){return db[_0xba5a('0x34')][_0xba5a('0x5a')]()['then'](respondWithResult(_0x27f2b4,null))['catch'](handleError(_0x27f2b4,null));};exports['getMembers']=function(_0x5b746c,_0x3ee548,_0x4e3291){var _0x27767d={'raw':!![],'where':{}},_0x349783={},_0x165d61;return db[_0xba5a('0x34')][_0xba5a('0x5b')]({'where':{'id':_0x5b746c[_0xba5a('0x4d')]['id']}})[_0xba5a('0x29')](handleEntityNotFound(_0x3ee548,null))[_0xba5a('0x29')](function(_0x1505c4){if(_0x1505c4){_0x165d61=_0x1505c4[_0xba5a('0x2b')]({'plain':!![]});_0x349783[_0xba5a('0x39')]=_[_0xba5a('0x3c')](db['UserWhatsappQueue'][_0xba5a('0x35')]);_0x349783[_0xba5a('0x3b')]=_[_0xba5a('0x3c')](_0x5b746c[_0xba5a('0x3b')]);_0x349783[_0xba5a('0x3d')]=_['intersection'](_0x349783['model'],_0x349783[_0xba5a('0x3b')]);_0x27767d[_0xba5a('0x3e')]=_[_0xba5a('0x4e')](_0x349783[_0xba5a('0x39')],qs[_0xba5a('0x3f')](_0x5b746c[_0xba5a('0x3b')][_0xba5a('0x3f')]));_0x27767d[_0xba5a('0x3e')]=_0x27767d[_0xba5a('0x3e')][_0xba5a('0x4f')]?_0x27767d[_0xba5a('0x3e')]:_0x349783['model'];if(!_0x5b746c[_0xba5a('0x3b')][_0xba5a('0x5c')]('nolimit')){_0x27767d[_0xba5a('0x21')]=qs[_0xba5a('0x21')](_0x5b746c[_0xba5a('0x3b')]['limit']);_0x27767d[_0xba5a('0x1f')]=qs[_0xba5a('0x1f')](_0x5b746c[_0xba5a('0x3b')][_0xba5a('0x1f')]);}_0x27767d[_0xba5a('0x41')]=qs['sort'](_0x5b746c['query']['sort']);_0x27767d[_0xba5a('0x47')]=qs['filters'](_['pick'](_0x5b746c[_0xba5a('0x3b')],_0x349783[_0xba5a('0x3d')]));_0x27767d[_0xba5a('0x47')][_0xba5a('0x5d')]=_0x1505c4['id'];if(_0x5b746c[_0xba5a('0x3b')][_0xba5a('0x43')]){_0x27767d[_0xba5a('0x47')]=_['merge'](_0x27767d[_0xba5a('0x47')],{'$or':_[_0xba5a('0x3a')](_0x27767d[_0xba5a('0x3e')],function(_0x13361f){var _0x5d7e81={};_0x5d7e81[_0x13361f]={'$like':'%'+_0x5b746c[_0xba5a('0x3b')][_0xba5a('0x43')]+'%'};return _0x5d7e81;})});}_0x27767d=_['merge']({},_0x27767d,_0x5b746c['options']);return db['UserWhatsappQueue']['findAll'](_0x27767d);}})[_0xba5a('0x29')](function(_0x179f94){if(_0x179f94){return db[_0xba5a('0x5e')][_0xba5a('0x5f')]({'where':{'id':_[_0xba5a('0x3a')](_0x179f94,_0xba5a('0x60')),'role':_0xba5a('0x61')},'attributes':['id','name','whatsappPause',_0xba5a('0x62'),'createdAt']});}})[_0xba5a('0x29')](function(_0x1a39b8){if(_0x1a39b8){return{'count':_0x1a39b8['count'],'rows':_['map'](_0x1a39b8[_0xba5a('0x4a')],function(_0x135565){return{'membername':_0x135565[_0xba5a('0x31')],'UserId':_0x135565['id'],'queue_name':_0x165d61[_0xba5a('0x31')],'WhatsappQueueId':_0x165d61['id'],'interface':util[_0xba5a('0x63')](_0xba5a('0x64'),_0xba5a('0x65'),_0x135565[_0xba5a('0x31')]),'penalty':0x0,'paused':_0x135565[_0xba5a('0x66')],'createdAt':_0x135565[_0xba5a('0x67')],'updatedAt':_0x135565[_0xba5a('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xba5a('0x29')](respondWithFilteredResult(_0x3ee548,_0x27767d))[_0xba5a('0x4b')](handleError(_0x3ee548,null));};exports['getTeams']=function(_0x72bb40,_0xb375d1,_0x50405a){var _0x23d79a={};var _0x25b379={};var _0x417313;var _0x564295;return db['WhatsappQueue'][_0xba5a('0x5b')]({'where':{'id':_0x72bb40['params']['id']}})[_0xba5a('0x29')](handleEntityNotFound(_0xb375d1,null))['then'](function(_0x43e645){if(_0x43e645){_0x417313=_0x43e645;_0x25b379[_0xba5a('0x39')]=_[_0xba5a('0x3c')](db['Team'][_0xba5a('0x35')]);_0x25b379['query']=_[_0xba5a('0x3c')](_0x72bb40[_0xba5a('0x3b')]);_0x25b379[_0xba5a('0x3d')]=_['intersection'](_0x25b379[_0xba5a('0x39')],_0x25b379['query']);_0x23d79a['attributes']=_[_0xba5a('0x4e')](_0x25b379['model'],qs[_0xba5a('0x3f')](_0x72bb40['query']['fields']));_0x23d79a[_0xba5a('0x3e')]=_0x23d79a[_0xba5a('0x3e')][_0xba5a('0x4f')]?_0x23d79a[_0xba5a('0x3e')]:_0x25b379[_0xba5a('0x39')];_0x23d79a[_0xba5a('0x41')]=qs[_0xba5a('0x42')](_0x72bb40[_0xba5a('0x3b')][_0xba5a('0x42')]);_0x23d79a[_0xba5a('0x47')]=qs[_0xba5a('0x3d')](_[_0xba5a('0x68')](_0x72bb40[_0xba5a('0x3b')],_0x25b379['filters']));if(_0x72bb40[_0xba5a('0x3b')]['filter']){_0x23d79a[_0xba5a('0x47')]=_[_0xba5a('0x44')](_0x23d79a[_0xba5a('0x47')],{'$or':_[_0xba5a('0x3a')](_0x23d79a[_0xba5a('0x3e')],function(_0x38e27b){var _0x37bf7d={};_0x37bf7d[_0x38e27b]={'$like':'%'+_0x72bb40['query'][_0xba5a('0x43')]+'%'};return _0x37bf7d;})});}_0x23d79a=_[_0xba5a('0x44')]({},_0x23d79a,_0x72bb40[_0xba5a('0x46')]);return _0x417313[_0xba5a('0x69')](_0x23d79a);}})[_0xba5a('0x29')](function(_0x384600){if(_0x384600){_0x564295=_0x384600['length'];if(!_0x72bb40[_0xba5a('0x3b')][_0xba5a('0x5c')](_0xba5a('0x40'))){_0x23d79a[_0xba5a('0x21')]=qs['limit'](_0x72bb40[_0xba5a('0x3b')]['limit']);_0x23d79a[_0xba5a('0x1f')]=qs[_0xba5a('0x1f')](_0x72bb40[_0xba5a('0x3b')]['offset']);}return _0x417313[_0xba5a('0x69')](_0x23d79a);}})[_0xba5a('0x29')](function(_0x224f5c){if(_0x224f5c){return _0x224f5c?{'count':_0x564295,'rows':_0x224f5c}:null;}})[_0xba5a('0x29')](respondWithResult(_0xb375d1,null))[_0xba5a('0x4b')](handleError(_0xb375d1,null));};exports[_0xba5a('0x6a')]=function(_0x4bf176,_0x574add,_0xf11de1){var _0x500fcc=_0x4bf176[_0xba5a('0x53')][_0xba5a('0x6b')];return db[_0xba5a('0x6c')][_0xba5a('0x49')]({'where':{'id':_0x500fcc},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name',_0xba5a('0x6d'),_0xba5a('0x6e'),_0xba5a('0x6f')],'raw':!![]}]})['then'](function(_0x5d274b){if(_0x5d274b){var _0xf26fed=_[_0xba5a('0x70')](_0x5d274b,function(_0x27de58){var _0x2cdb18=_0x27de58['get']({'plain':!![]});return _0x2cdb18[_0xba5a('0x71')];});return db[_0xba5a('0x34')][_0xba5a('0x51')]({'where':{'id':_0x4bf176[_0xba5a('0x4d')]['id']}})['then'](function(_0x5e1462){return db[_0xba5a('0x72')][_0xba5a('0x73')](function(_0x216bae){return _0x5e1462[_0xba5a('0x6a')](_0x500fcc,{'transaction':_0x216bae})[_0xba5a('0x29')](function(){return BPromise[_0xba5a('0x74')](_0xf26fed,function(_0x2be987){return db['UserWhatsappQueue'][_0xba5a('0x75')]({'where':{'UserId':_0x2be987['id'],'WhatsappQueueId':_0x4bf176[_0xba5a('0x4d')]['id']},'transaction':_0x216bae});});})[_0xba5a('0x29')](function(){_0xf26fed[_0xba5a('0x76')](function(_0x1f0e47){socket[_0xba5a('0x77')](_0xba5a('0x78'),{'UserId':_0x1f0e47['id'],'WhatsappQueueId':_0x5e1462['id']});});});});});}})[_0xba5a('0x29')](respondWithStatusCode(_0x574add,null))[_0xba5a('0x4b')](handleError(_0x574add,null));};exports[_0xba5a('0x79')]=function(_0xf71626,_0x582fef,_0xb1f362){return db[_0xba5a('0x6c')][_0xba5a('0x49')]({'where':{'id':_0xf71626[_0xba5a('0x3b')][_0xba5a('0x6b')]},'attributes':['id'],'include':[{'model':db[_0xba5a('0x5e')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x582fef,null))[_0xba5a('0x29')](function(_0x28fb02){var _0x8bbbd2=_[_0xba5a('0x3a')](_0x28fb02,'id');var _0x2f406a=[];var _0x27f51a=[];var _0x2432a7=squel['select']();_0x2432a7[_0xba5a('0x7a')]('tq.TeamId')['from']('team_has_whatsapp_queues','tq')[_0xba5a('0x7b')](_0xba5a('0x7c'),'ut',_0xba5a('0x7d'))[_0xba5a('0x47')](_0xba5a('0x7e'),_0xf71626['params']['id']);for(var _0x3dc61b=0x0;_0x3dc61b<_0x28fb02[_0xba5a('0x4f')];_0x3dc61b+=0x1){let _0x55adad=_0x28fb02[_0x3dc61b];for(var _0x566d21=0x0;_0x566d21<_0x55adad[_0xba5a('0x71')]['length'];_0x566d21+=0x1){let _0x574a88=_0x55adad[_0xba5a('0x71')][_0x566d21];var _0x430194=_0x2432a7[_0xba5a('0x7f')]();_0x430194['where']('ut.UserId\x20=\x20?',_0x574a88['id']);_0x27f51a[_0xba5a('0x80')](db[_0xba5a('0x72')]['query'](_0x430194['toString'](),{'type':db[_0xba5a('0x72')]['QueryTypes'][_0xba5a('0x81')]})['then'](function(_0x47b291){if(_0x47b291[_0xba5a('0x4f')]===0x1){return _0x574a88['id'];}else{var _0x2ca4ab=_[_0xba5a('0x82')](_[_0xba5a('0x3a')](_0x47b291,'TeamId'),function(_0xf60c5a){return _[_0xba5a('0x83')](_0x8bbbd2,_0xf60c5a);});if(_0x2ca4ab){return _0x574a88['id'];}}}));}}return BPromise[_0xba5a('0x84')](_0x27f51a)[_0xba5a('0x29')](function(_0x37243a){_0x2f406a=_(_0x2f406a)['union'](_0x37243a)[_0xba5a('0x85')]()[_0xba5a('0x86')]();return db[_0xba5a('0x34')][_0xba5a('0x51')]({'where':{'id':_0xf71626[_0xba5a('0x4d')]['id']}})['then'](function(_0x4e266d){return db['sequelize'][_0xba5a('0x73')](function(_0x11313d){return _0x4e266d[_0xba5a('0x79')](_0xf71626[_0xba5a('0x3b')][_0xba5a('0x6b')],{'transaction':_0x11313d})['then'](function(){if(!_['isEmpty'](_0x2f406a)){return _0x4e266d[_0xba5a('0x87')](_0x2f406a,{'transaction':_0x11313d});}})[_0xba5a('0x29')](function(){_0x2f406a[_0xba5a('0x76')](function(_0x4bcaa9){socket[_0xba5a('0x77')]('userWhatsappQueue:remove',{'UserId':_0x4bcaa9,'WhatsappQueueId':_0x4e266d['id']});});});});});});})[_0xba5a('0x29')](respondWithStatusCode(_0x582fef,null))[_0xba5a('0x4b')](handleError(_0x582fef,null));};exports['addAgents']=function(_0x34abfc,_0x31693e,_0x31896d){return db[_0xba5a('0x34')][_0xba5a('0x51')]({'where':{'id':_0x34abfc[_0xba5a('0x4d')]['id']}})[_0xba5a('0x29')](handleEntityNotFound(_0x31693e,null))[_0xba5a('0x29')](function(_0x1b5483){if(_0x1b5483){return _0x1b5483[_0xba5a('0x88')](_0x34abfc['body']['ids'],_[_0xba5a('0x89')](_0x34abfc[_0xba5a('0x53')],['ids','id'])||{})[_0xba5a('0x8a')](function(_0x1279bd){for(var _0x164e56=0x0;_0x164e56<_0x34abfc[_0xba5a('0x53')][_0xba5a('0x6b')][_0xba5a('0x4f')];_0x164e56+=0x1){socket['emit'](_0xba5a('0x78'),{'UserId':Number(_0x34abfc['body'][_0xba5a('0x6b')][_0x164e56]),'WhatsappQueueId':Number(_0x34abfc[_0xba5a('0x4d')]['id'])});}return _0x1279bd;});}})[_0xba5a('0x29')](respondWithResult(_0x31693e,null))['catch'](handleError(_0x31693e,null));};exports[_0xba5a('0x87')]=function(_0x5d403d,_0x5a1cee,_0x42f8f7){return db[_0xba5a('0x34')][_0xba5a('0x51')]({'where':{'id':_0x5d403d[_0xba5a('0x4d')]['id']}})[_0xba5a('0x29')](handleEntityNotFound(_0x5a1cee,null))['then'](function(_0x4109b0){if(_0x4109b0){return _0x4109b0[_0xba5a('0x87')](_0x5d403d['query'][_0xba5a('0x6b')])[_0xba5a('0x29')](function(){if(_[_0xba5a('0x8b')](_0x5d403d['query']['ids'])){for(var _0x2192c2=0x0;_0x2192c2<_0x5d403d[_0xba5a('0x3b')][_0xba5a('0x6b')][_0xba5a('0x4f')];_0x2192c2+=0x1){socket[_0xba5a('0x77')](_0xba5a('0x8c'),{'UserId':Number(_0x5d403d[_0xba5a('0x3b')][_0xba5a('0x6b')][_0x2192c2]),'WhatsappQueueId':Number(_0x5d403d[_0xba5a('0x4d')]['id'])});}}else{socket['emit'](_0xba5a('0x8c'),{'UserId':Number(_0x5d403d[_0xba5a('0x3b')][_0xba5a('0x6b')]),'WhatsappQueueId':Number(_0x5d403d[_0xba5a('0x4d')]['id'])});}});}})[_0xba5a('0x29')](respondWithStatusCode(_0x5a1cee,null))[_0xba5a('0x4b')](handleError(_0x5a1cee,null));};exports[_0xba5a('0x8d')]=function(_0x4963d2,_0x577300,_0x222cc8){var _0x220497={};var _0x90abb1={};var _0x53032c;var _0x566467;return db[_0xba5a('0x34')][_0xba5a('0x5b')]({'where':{'id':_0x4963d2[_0xba5a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x577300,null))['then'](function(_0x513dbf){if(_0x513dbf){_0x53032c=_0x513dbf;_0x90abb1[_0xba5a('0x39')]=_[_0xba5a('0x3c')](db[_0xba5a('0x5e')][_0xba5a('0x35')]);_0x90abb1[_0xba5a('0x3b')]=_['keys'](_0x4963d2[_0xba5a('0x3b')]);_0x90abb1[_0xba5a('0x3d')]=_[_0xba5a('0x4e')](_0x90abb1[_0xba5a('0x39')],_0x90abb1[_0xba5a('0x3b')]);_0x220497['attributes']=_[_0xba5a('0x4e')](_0x90abb1[_0xba5a('0x39')],qs[_0xba5a('0x3f')](_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x3f')]));_0x220497[_0xba5a('0x3e')]=_0x220497[_0xba5a('0x3e')][_0xba5a('0x4f')]?_0x220497[_0xba5a('0x3e')]:_0x90abb1[_0xba5a('0x39')];_0x220497['order']=qs['sort'](_0x4963d2['query'][_0xba5a('0x42')]);_0x220497[_0xba5a('0x47')]=qs[_0xba5a('0x3d')](_['pick'](_0x4963d2[_0xba5a('0x3b')],_0x90abb1[_0xba5a('0x3d')]));if(_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x43')]){_0x220497[_0xba5a('0x47')]=_[_0xba5a('0x44')](_0x220497[_0xba5a('0x47')],{'$or':_[_0xba5a('0x3a')](_0x220497[_0xba5a('0x3e')],function(_0x112560){var _0x49e207={};_0x49e207[_0x112560]={'$like':'%'+_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x43')]+'%'};return _0x49e207;})});}_0x220497=_[_0xba5a('0x44')]({},_0x220497,_0x4963d2[_0xba5a('0x46')]);return _0x53032c['getAgents'](_0x220497);}})[_0xba5a('0x29')](function(_0x547c2d){if(_0x547c2d){_0x566467=_0x547c2d[_0xba5a('0x4f')];if(!_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x5c')]('nolimit')){_0x220497[_0xba5a('0x21')]=qs['limit'](_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x21')]);_0x220497[_0xba5a('0x1f')]=qs[_0xba5a('0x1f')](_0x4963d2[_0xba5a('0x3b')][_0xba5a('0x1f')]);}return _0x53032c[_0xba5a('0x8d')](_0x220497);}})[_0xba5a('0x29')](function(_0x17c49e){if(_0x17c49e){return _0x17c49e?{'count':_0x566467,'rows':_0x17c49e}:null;}})['then'](respondWithResult(_0x577300,null))[_0xba5a('0x4b')](handleError(_0x577300,null));};
\ No newline at end of file
index d529d3d..2694323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4ed=['hook','exports','events','../../mysqldb','WhatsappQueue','remove','hasOwnProperty'];(function(_0x1c0b4e,_0x1aa303){var _0x5681a5=function(_0x288855){while(--_0x288855){_0x1c0b4e['push'](_0x1c0b4e['shift']());}};_0x5681a5(++_0x1aa303);}(_0xd4ed,0x10c));var _0xdd4e=function(_0x57af2f,_0x7cbe2c){_0x57af2f=_0x57af2f-0x0;var _0x1f6295=_0xd4ed[_0x57af2f];return _0x1f6295;};'use strict';var EventEmitter=require(_0xdd4e('0x0'));var WhatsappQueue=require(_0xdd4e('0x1'))['db'][_0xdd4e('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xdd4e('0x3')};function emitEvent(_0x5ad5e0){return function(_0x4fc07e,_0x26281c,_0x33cfed){WhatsappQueueEvents['emit'](_0x5ad5e0+':'+_0x4fc07e['id'],_0x4fc07e);WhatsappQueueEvents['emit'](_0x5ad5e0,_0x4fc07e);_0x33cfed(null);};}for(var e in events){if(events[_0xdd4e('0x4')](e)){var event=events[e];WhatsappQueue[_0xdd4e('0x5')](e,emitEvent(event));}}module[_0xdd4e('0x6')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x911a=['update','emit','hook','exports','events','../../mysqldb','WhatsappQueue','save'];(function(_0x5e06e0,_0x43a2ca){var _0x356b2a=function(_0x13fea9){while(--_0x13fea9){_0x5e06e0['push'](_0x5e06e0['shift']());}};_0x356b2a(++_0x43a2ca);}(_0x911a,0x164));var _0xa911=function(_0x4ab11f,_0x4d165e){_0x4ab11f=_0x4ab11f-0x0;var _0x1f5a82=_0x911a[_0x4ab11f];return _0x1f5a82;};'use strict';var EventEmitter=require(_0xa911('0x0'));var WhatsappQueue=require(_0xa911('0x1'))['db'][_0xa911('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa911('0x3'),'afterUpdate':_0xa911('0x4'),'afterDestroy':'remove'};function emitEvent(_0x425142){return function(_0x4ba777,_0x26b8d2,_0x1540a7){WhatsappQueueEvents[_0xa911('0x5')](_0x425142+':'+_0x4ba777['id'],_0x4ba777);WhatsappQueueEvents['emit'](_0x425142,_0x4ba777);_0x1540a7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xa911('0x6')](e,emitEvent(event));}}module[_0xa911('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
index 4b63926..8ad5318 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7330=['request-promise','path','rimraf','exports','define','WhatsappQueue','lodash','util','../../config/logger','moment','bluebird'];(function(_0xb09943,_0x4ac90c){var _0x110eb1=function(_0x294c1a){while(--_0x294c1a){_0xb09943['push'](_0xb09943['shift']());}};_0x110eb1(++_0x4ac90c);}(_0x7330,0x166));var _0x0733=function(_0x4fa63e,_0x323098){_0x4fa63e=_0x4fa63e-0x0;var _0x4202c1=_0x7330[_0x4fa63e];return _0x4202c1;};'use strict';var _=require(_0x0733('0x0'));var util=require(_0x0733('0x1'));var logger=require(_0x0733('0x2'))('api');var moment=require(_0x0733('0x3'));var BPromise=require(_0x0733('0x4'));var rp=require(_0x0733('0x5'));var fs=require('fs');var path=require(_0x0733('0x6'));var rimraf=require(_0x0733('0x7'));var config=require('../../config/environment');var attributes=require('./whatsappQueue.attributes');module[_0x0733('0x8')]=function(_0x5cac5a,_0x16907b){return _0x5cac5a[_0x0733('0x9')](_0x0733('0xa'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd817=['../../config/logger','bluebird','request-promise','path','rimraf','./whatsappQueue.attributes','exports','whatsapp_queues','lodash','util'];(function(_0x3a7768,_0x52709f){var _0x423cb1=function(_0x10fa7a){while(--_0x10fa7a){_0x3a7768['push'](_0x3a7768['shift']());}};_0x423cb1(++_0x52709f);}(_0xd817,0x8a));var _0x7d81=function(_0x1bb0b8,_0x24add2){_0x1bb0b8=_0x1bb0b8-0x0;var _0x22fc67=_0xd817[_0x1bb0b8];return _0x22fc67;};'use strict';var _=require(_0x7d81('0x0'));var util=require(_0x7d81('0x1'));var logger=require(_0x7d81('0x2'))('api');var moment=require('moment');var BPromise=require(_0x7d81('0x3'));var rp=require(_0x7d81('0x4'));var fs=require('fs');var path=require(_0x7d81('0x5'));var rimraf=require(_0x7d81('0x6'));var config=require('../../config/environment');var attributes=require(_0x7d81('0x7'));module[_0x7d81('0x8')]=function(_0x12161d,_0xc70de8){return _0x12161d['define']('WhatsappQueue',attributes,{'tableName':_0x7d81('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e2b5964..b1b7362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb221=['model','debug','catch','ShowWhatsappQueue','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetWhatsappQueue','WhatsappQueue','raw','options','where','attributes','limit','include','map'];(function(_0x5eb737,_0x4601da){var _0x5bc9e6=function(_0x17e09e){while(--_0x17e09e){_0x5eb737['push'](_0x5eb737['shift']());}};_0x5bc9e6(++_0x4601da);}(_0xb221,0x16d));var _0x1b22=function(_0x43e4b3,_0x1444de){_0x43e4b3=_0x43e4b3-0x0;var _0x10c655=_0xb221[_0x43e4b3];return _0x10c655;};'use strict';var _=require(_0x1b22('0x0'));var util=require(_0x1b22('0x1'));var moment=require(_0x1b22('0x2'));var BPromise=require(_0x1b22('0x3'));var rs=require(_0x1b22('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1b22('0x5'))['db'];var utils=require(_0x1b22('0x6'));var logger=require(_0x1b22('0x7'))(_0x1b22('0x8'));var config=require(_0x1b22('0x9'));var jayson=require(_0x1b22('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x1b22('0xb')]=_[_0x1b22('0xc')](config[_0x1b22('0xb')],{'host':_0x1b22('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1b22('0xb')]));require('./whatsappQueue.socket')[_0x1b22('0xe')](socket);function respondWithRpcPromise(_0x40fd01,_0x6ae1c,_0x53fdd8){return new BPromise(function(_0x513ebb,_0x2e8bc6){return client[_0x1b22('0xf')](_0x40fd01,_0x53fdd8)[_0x1b22('0x10')](function(_0x49d5b0){logger[_0x1b22('0x11')](_0x1b22('0x12'),_0x6ae1c,_0x1b22('0x13'));logger['debug'](_0x1b22('0x14'),_0x6ae1c,'request\x20sent',JSON[_0x1b22('0x15')](_0x49d5b0));if(_0x49d5b0[_0x1b22('0x16')]){if(_0x49d5b0[_0x1b22('0x16')][_0x1b22('0x17')]===0x1f4){logger[_0x1b22('0x16')]('WhatsappQueue,\x20%s,\x20%s',_0x6ae1c,_0x49d5b0[_0x1b22('0x16')][_0x1b22('0x18')]);return _0x2e8bc6(_0x49d5b0[_0x1b22('0x16')]['message']);}logger[_0x1b22('0x16')]('WhatsappQueue,\x20%s,\x20%s',_0x6ae1c,_0x49d5b0['error'][_0x1b22('0x18')]);return _0x513ebb(_0x49d5b0['error'][_0x1b22('0x18')]);}else{logger[_0x1b22('0x11')]('WhatsappQueue,\x20%s,\x20%s',_0x6ae1c,'request\x20sent');_0x513ebb(_0x49d5b0[_0x1b22('0x19')][_0x1b22('0x18')]);}})['catch'](function(_0x4e09cd){logger[_0x1b22('0x16')](_0x1b22('0x12'),_0x6ae1c,_0x4e09cd);_0x2e8bc6(_0x4e09cd);});});}exports[_0x1b22('0x1a')]=function(_0x3b25ac){var _0x355088=this;return new Promise(function(_0x456571,_0x1e8a03){return db[_0x1b22('0x1b')]['findAll']({'raw':_0x3b25ac['options']?_0x3b25ac['options'][_0x1b22('0x1c')]===undefined?!![]:![]:!![],'where':_0x3b25ac[_0x1b22('0x1d')]?_0x3b25ac[_0x1b22('0x1d')][_0x1b22('0x1e')]||null:null,'attributes':_0x3b25ac[_0x1b22('0x1d')]?_0x3b25ac[_0x1b22('0x1d')][_0x1b22('0x1f')]||null:null,'limit':_0x3b25ac[_0x1b22('0x1d')]?_0x3b25ac[_0x1b22('0x1d')][_0x1b22('0x20')]||null:null,'include':_0x3b25ac[_0x1b22('0x1d')]?_0x3b25ac[_0x1b22('0x1d')][_0x1b22('0x21')]?_[_0x1b22('0x22')](_0x3b25ac[_0x1b22('0x1d')][_0x1b22('0x21')],function(_0x3dd824){return{'model':db[_0x3dd824[_0x1b22('0x23')]],'as':_0x3dd824['as'],'attributes':_0x3dd824[_0x1b22('0x1f')],'include':_0x3dd824[_0x1b22('0x21')]?_[_0x1b22('0x22')](_0x3dd824[_0x1b22('0x21')],function(_0x246551){return{'model':db[_0x246551[_0x1b22('0x23')]],'as':_0x246551['as'],'attributes':_0x246551[_0x1b22('0x1f')],'include':_0x246551[_0x1b22('0x21')]?_[_0x1b22('0x22')](_0x246551['include'],function(_0x2a6c4c){return{'model':db[_0x2a6c4c[_0x1b22('0x23')]],'as':_0x2a6c4c['as'],'attributes':_0x2a6c4c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x296b3e){logger['info'](_0x1b22('0x1a'),_0x3b25ac);logger[_0x1b22('0x24')](_0x1b22('0x1a'),_0x3b25ac,JSON[_0x1b22('0x15')](_0x296b3e));_0x456571(_0x296b3e);})[_0x1b22('0x25')](function(_0x1af883){logger['error']('GetWhatsappQueue',_0x1af883[_0x1b22('0x18')],_0x3b25ac);_0x1e8a03(_0x355088[_0x1b22('0x16')](0x1f4,_0x1af883[_0x1b22('0x18')]));});});};exports[_0x1b22('0x26')]=function(_0x2fcc76){var _0xfcaa2b=this;return new Promise(function(_0x29585b,_0x3fb5fc){return db[_0x1b22('0x1b')][_0x1b22('0x27')]({'raw':_0x2fcc76[_0x1b22('0x1d')]?_0x2fcc76['options'][_0x1b22('0x1c')]===undefined?!![]:![]:!![],'where':_0x2fcc76[_0x1b22('0x1d')]?_0x2fcc76['options'][_0x1b22('0x1e')]||null:null,'attributes':_0x2fcc76['options']?_0x2fcc76['options'][_0x1b22('0x1f')]||null:null,'include':_0x2fcc76[_0x1b22('0x1d')]?_0x2fcc76[_0x1b22('0x1d')][_0x1b22('0x21')]?_[_0x1b22('0x22')](_0x2fcc76[_0x1b22('0x1d')][_0x1b22('0x21')],function(_0x376a68){return{'model':db[_0x376a68[_0x1b22('0x23')]],'as':_0x376a68['as'],'attributes':_0x376a68[_0x1b22('0x1f')],'include':_0x376a68['include']?_[_0x1b22('0x22')](_0x376a68[_0x1b22('0x21')],function(_0x463fd4){return{'model':db[_0x463fd4[_0x1b22('0x23')]],'as':_0x463fd4['as'],'attributes':_0x463fd4[_0x1b22('0x1f')],'include':_0x463fd4[_0x1b22('0x21')]?_[_0x1b22('0x22')](_0x463fd4['include'],function(_0x107482){return{'model':db[_0x107482['model']],'as':_0x107482['as'],'attributes':_0x107482[_0x1b22('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b03b0){logger[_0x1b22('0x11')](_0x1b22('0x26'),_0x2fcc76);logger['debug'](_0x1b22('0x26'),_0x2fcc76,JSON[_0x1b22('0x15')](_0x4b03b0));_0x29585b(_0x4b03b0);})[_0x1b22('0x25')](function(_0x7a3f17){logger[_0x1b22('0x16')](_0x1b22('0x26'),_0x7a3f17[_0x1b22('0x18')],_0x2fcc76);_0x3fb5fc(_0xfcaa2b[_0x1b22('0x16')](0x1f4,_0x7a3f17[_0x1b22('0x18')]));});});};
\ No newline at end of file
+var _0xf899=['GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowWhatsappQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','localhost','register','then','info','WhatsappQueue,\x20%s,\x20%s','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x1c99c1,_0x37b7ae){var _0x1cf1f2=function(_0x430fcc){while(--_0x430fcc){_0x1c99c1['push'](_0x1c99c1['shift']());}};_0x1cf1f2(++_0x37b7ae);}(_0xf899,0x14d));var _0x9f89=function(_0x2fd9c8,_0x4afe3b){_0x2fd9c8=_0x2fd9c8-0x0;var _0xe59e37=_0xf899[_0x2fd9c8];return _0xe59e37;};'use strict';var _=require(_0x9f89('0x0'));var util=require(_0x9f89('0x1'));var moment=require(_0x9f89('0x2'));var BPromise=require(_0x9f89('0x3'));var rs=require(_0x9f89('0x4'));var fs=require('fs');var Redis=require(_0x9f89('0x5'));var db=require(_0x9f89('0x6'))['db'];var utils=require(_0x9f89('0x7'));var logger=require(_0x9f89('0x8'))('rpc');var config=require(_0x9f89('0x9'));var jayson=require(_0x9f89('0xa'));var client=jayson['client'][_0x9f89('0xb')]({'port':0x232a});config[_0x9f89('0xc')]=_['defaults'](config[_0x9f89('0xc')],{'host':_0x9f89('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9f89('0xc')]));require('./whatsappQueue.socket')[_0x9f89('0xe')](socket);function respondWithRpcPromise(_0x1d87de,_0x19b746,_0x3cdbba){return new BPromise(function(_0x2f61b5,_0x16430e){return client['request'](_0x1d87de,_0x3cdbba)[_0x9f89('0xf')](function(_0x3548d0){logger[_0x9f89('0x10')](_0x9f89('0x11'),_0x19b746,'request\x20sent');logger[_0x9f89('0x12')](_0x9f89('0x13'),_0x19b746,_0x9f89('0x14'),JSON[_0x9f89('0x15')](_0x3548d0));if(_0x3548d0['error']){if(_0x3548d0[_0x9f89('0x16')][_0x9f89('0x17')]===0x1f4){logger[_0x9f89('0x16')](_0x9f89('0x11'),_0x19b746,_0x3548d0[_0x9f89('0x16')][_0x9f89('0x18')]);return _0x16430e(_0x3548d0[_0x9f89('0x16')][_0x9f89('0x18')]);}logger['error'](_0x9f89('0x11'),_0x19b746,_0x3548d0[_0x9f89('0x16')][_0x9f89('0x18')]);return _0x2f61b5(_0x3548d0[_0x9f89('0x16')][_0x9f89('0x18')]);}else{logger[_0x9f89('0x10')](_0x9f89('0x11'),_0x19b746,'request\x20sent');_0x2f61b5(_0x3548d0[_0x9f89('0x19')][_0x9f89('0x18')]);}})[_0x9f89('0x1a')](function(_0x4c5965){logger[_0x9f89('0x16')](_0x9f89('0x11'),_0x19b746,_0x4c5965);_0x16430e(_0x4c5965);});});}exports[_0x9f89('0x1b')]=function(_0x4203f2){var _0x4e6ca4=this;return new Promise(function(_0x38c59e,_0x1c94be){return db[_0x9f89('0x1c')][_0x9f89('0x1d')]({'raw':_0x4203f2[_0x9f89('0x1e')]?_0x4203f2['options'][_0x9f89('0x1f')]===undefined?!![]:![]:!![],'where':_0x4203f2[_0x9f89('0x1e')]?_0x4203f2['options'][_0x9f89('0x20')]||null:null,'attributes':_0x4203f2[_0x9f89('0x1e')]?_0x4203f2['options'][_0x9f89('0x21')]||null:null,'limit':_0x4203f2[_0x9f89('0x1e')]?_0x4203f2['options'][_0x9f89('0x22')]||null:null,'include':_0x4203f2[_0x9f89('0x1e')]?_0x4203f2[_0x9f89('0x1e')][_0x9f89('0x23')]?_[_0x9f89('0x24')](_0x4203f2[_0x9f89('0x1e')][_0x9f89('0x23')],function(_0x381807){return{'model':db[_0x381807[_0x9f89('0x25')]],'as':_0x381807['as'],'attributes':_0x381807['attributes'],'include':_0x381807[_0x9f89('0x23')]?_['map'](_0x381807['include'],function(_0xf39f1b){return{'model':db[_0xf39f1b[_0x9f89('0x25')]],'as':_0xf39f1b['as'],'attributes':_0xf39f1b[_0x9f89('0x21')],'include':_0xf39f1b[_0x9f89('0x23')]?_['map'](_0xf39f1b['include'],function(_0x39e553){return{'model':db[_0x39e553[_0x9f89('0x25')]],'as':_0x39e553['as'],'attributes':_0x39e553[_0x9f89('0x21')]};}):[]};}):[]};}):[]:[]})[_0x9f89('0xf')](function(_0x3de318){logger[_0x9f89('0x10')](_0x9f89('0x1b'),_0x4203f2);logger['debug'](_0x9f89('0x1b'),_0x4203f2,JSON['stringify'](_0x3de318));_0x38c59e(_0x3de318);})[_0x9f89('0x1a')](function(_0x19bcf0){logger['error']('GetWhatsappQueue',_0x19bcf0[_0x9f89('0x18')],_0x4203f2);_0x1c94be(_0x4e6ca4[_0x9f89('0x16')](0x1f4,_0x19bcf0['message']));});});};exports[_0x9f89('0x26')]=function(_0x1d75b5){var _0x2ff2e8=this;return new Promise(function(_0x47089f,_0x16ca57){return db[_0x9f89('0x1c')][_0x9f89('0x27')]({'raw':_0x1d75b5[_0x9f89('0x1e')]?_0x1d75b5[_0x9f89('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x1d75b5[_0x9f89('0x1e')]?_0x1d75b5[_0x9f89('0x1e')][_0x9f89('0x20')]||null:null,'attributes':_0x1d75b5[_0x9f89('0x1e')]?_0x1d75b5[_0x9f89('0x1e')][_0x9f89('0x21')]||null:null,'include':_0x1d75b5['options']?_0x1d75b5[_0x9f89('0x1e')][_0x9f89('0x23')]?_[_0x9f89('0x24')](_0x1d75b5[_0x9f89('0x1e')][_0x9f89('0x23')],function(_0x2662b1){return{'model':db[_0x2662b1[_0x9f89('0x25')]],'as':_0x2662b1['as'],'attributes':_0x2662b1[_0x9f89('0x21')],'include':_0x2662b1[_0x9f89('0x23')]?_[_0x9f89('0x24')](_0x2662b1['include'],function(_0x3173c3){return{'model':db[_0x3173c3[_0x9f89('0x25')]],'as':_0x3173c3['as'],'attributes':_0x3173c3[_0x9f89('0x21')],'include':_0x3173c3[_0x9f89('0x23')]?_[_0x9f89('0x24')](_0x3173c3[_0x9f89('0x23')],function(_0x283ca9){return{'model':db[_0x283ca9[_0x9f89('0x25')]],'as':_0x283ca9['as'],'attributes':_0x283ca9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d2d3c){logger[_0x9f89('0x10')](_0x9f89('0x26'),_0x1d75b5);logger[_0x9f89('0x12')](_0x9f89('0x26'),_0x1d75b5,JSON[_0x9f89('0x15')](_0x2d2d3c));_0x47089f(_0x2d2d3c);})[_0x9f89('0x1a')](function(_0x1f2dd5){logger[_0x9f89('0x16')](_0x9f89('0x26'),_0x1f2dd5[_0x9f89('0x18')],_0x1d75b5);_0x16ca57(_0x2ff2e8[_0x9f89('0x16')](0x1f4,_0x1f2dd5['message']));});});};
\ No newline at end of file
index 27e0bdd..76d3583 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36a4=['register','whatsappQueue:','save','remove','emit','removeListener'];(function(_0x3c2850,_0x506c72){var _0x528228=function(_0x2642e5){while(--_0x2642e5){_0x3c2850['push'](_0x3c2850['shift']());}};_0x528228(++_0x506c72);}(_0x36a4,0x13a));var _0x436a=function(_0x1ddde2,_0x4d8814){_0x1ddde2=_0x1ddde2-0x0;var _0x32fb62=_0x36a4[_0x1ddde2];return _0x32fb62;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0x436a('0x0'),_0x436a('0x1'),'update'];function createListener(_0x1b8e97,_0x2f1f7f){return function(_0x4b4570){_0x2f1f7f[_0x436a('0x2')](_0x1b8e97,_0x4b4570);};}function removeListener(_0x414d67,_0x55b262){return function(){WhatsappQueueEvents[_0x436a('0x3')](_0x414d67,_0x55b262);};}exports[_0x436a('0x4')]=function(_0x2aec8f){for(var _0x764a30=0x0,_0x5b500f=events['length'];_0x764a30<_0x5b500f;_0x764a30++){var _0x409bc2=events[_0x764a30];var _0x494781=createListener(_0x436a('0x5')+_0x409bc2,_0x2aec8f);WhatsappQueueEvents['on'](_0x409bc2,_0x494781);}};
\ No newline at end of file
+var _0x5b12=['emit','removeListener','register','./whatsappQueue.events','save','remove'];(function(_0x1e9817,_0x5c220e){var _0x2d9640=function(_0x12a7ec){while(--_0x12a7ec){_0x1e9817['push'](_0x1e9817['shift']());}};_0x2d9640(++_0x5c220e);}(_0x5b12,0x1cb));var _0x25b1=function(_0x50a699,_0x5ebab5){_0x50a699=_0x50a699-0x0;var _0xc6ace7=_0x5b12[_0x50a699];return _0xc6ace7;};'use strict';var WhatsappQueueEvents=require(_0x25b1('0x0'));var events=[_0x25b1('0x1'),_0x25b1('0x2'),'update'];function createListener(_0x575d85,_0x146e30){return function(_0x353545){_0x146e30[_0x25b1('0x3')](_0x575d85,_0x353545);};}function removeListener(_0x40dada,_0xf109bd){return function(){WhatsappQueueEvents[_0x25b1('0x4')](_0x40dada,_0xf109bd);};}exports[_0x25b1('0x5')]=function(_0x217ac8){for(var _0x1408a0=0x0,_0x8f7bb7=events['length'];_0x1408a0<_0x8f7bb7;_0x1408a0++){var _0x3f6c04=events[_0x1408a0];var _0x3ab45a=createListener('whatsappQueue:'+_0x3f6c04,_0x217ac8);WhatsappQueueEvents['on'](_0x3f6c04,_0x3ab45a);}};
\ No newline at end of file
index f7c84d1..81c807b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf039=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappQueueReport.controller','isAuthenticated','get','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x550060,_0x146ef4){var _0x4c4afe=function(_0x59cd8e){while(--_0x59cd8e){_0x550060['push'](_0x550060['shift']());}};_0x4c4afe(++_0x146ef4);}(_0xf039,0x1e1));var _0x9f03=function(_0x409b2f,_0x35621c){_0x409b2f=_0x409b2f-0x0;var _0x3fb528=_0xf039[_0x409b2f];return _0x3fb528;};'use strict';var multer=require(_0x9f03('0x0'));var util=require(_0x9f03('0x1'));var path=require(_0x9f03('0x2'));var timeout=require(_0x9f03('0x3'));var express=require(_0x9f03('0x4'));var router=express[_0x9f03('0x5')]();var fs_extra=require(_0x9f03('0x6'));var auth=require(_0x9f03('0x7'));var interaction=require(_0x9f03('0x8'));var config=require('../../config/environment');var controller=require(_0x9f03('0x9'));router['get']('/',auth[_0x9f03('0xa')](),controller['index']);router[_0x9f03('0xb')](_0x9f03('0xc'),auth[_0x9f03('0xa')](),controller[_0x9f03('0xd')]);router[_0x9f03('0xb')](_0x9f03('0xe'),auth[_0x9f03('0xa')](),controller[_0x9f03('0xf')]);router['post']('/',auth[_0x9f03('0xa')](),controller[_0x9f03('0x10')]);router[_0x9f03('0x11')]('/:id',auth[_0x9f03('0xa')](),controller[_0x9f03('0x12')]);router[_0x9f03('0x13')]('/:id',auth[_0x9f03('0xa')](),controller[_0x9f03('0x14')]);module[_0x9f03('0x15')]=router;
\ No newline at end of file
+var _0x803f=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','/describe','describe','show','create','put','update','delete','/:id','destroy','exports','multer','util','path'];(function(_0x317aa6,_0x18c7bf){var _0x36c518=function(_0x304029){while(--_0x304029){_0x317aa6['push'](_0x317aa6['shift']());}};_0x36c518(++_0x18c7bf);}(_0x803f,0x156));var _0xf803=function(_0xf775f1,_0x29c487){_0xf775f1=_0xf775f1-0x0;var _0x546296=_0x803f[_0xf775f1];return _0x546296;};'use strict';var multer=require(_0xf803('0x0'));var util=require(_0xf803('0x1'));var path=require(_0xf803('0x2'));var timeout=require(_0xf803('0x3'));var express=require(_0xf803('0x4'));var router=express[_0xf803('0x5')]();var fs_extra=require(_0xf803('0x6'));var auth=require(_0xf803('0x7'));var interaction=require(_0xf803('0x8'));var config=require(_0xf803('0x9'));var controller=require(_0xf803('0xa'));router[_0xf803('0xb')]('/',auth[_0xf803('0xc')](),controller['index']);router[_0xf803('0xb')](_0xf803('0xd'),auth[_0xf803('0xc')](),controller[_0xf803('0xe')]);router['get']('/:id',auth[_0xf803('0xc')](),controller[_0xf803('0xf')]);router['post']('/',auth[_0xf803('0xc')](),controller[_0xf803('0x10')]);router[_0xf803('0x11')]('/:id',auth[_0xf803('0xc')](),controller[_0xf803('0x12')]);router[_0xf803('0x13')](_0xf803('0x14'),auth['isAuthenticated'](),controller[_0xf803('0x15')]);module[_0xf803('0x16')]=router;
\ No newline at end of file
index f75fccb..9287b53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x2161fd,_0x32be8d){var _0x9304b4=function(_0x3622bd){while(--_0x3622bd){_0x2161fd['push'](_0x2161fd['shift']());}};_0x9304b4(++_0x32be8d);}(_0x7a54,0x106));var _0x47a5=function(_0x38e45d,_0xc3130){_0x38e45d=_0x38e45d-0x0;var _0x5d166d=_0x7a54[_0x38e45d];return _0x5d166d;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x3e5a16,_0x59ba3e){var _0x388f2e=function(_0x15e14f){while(--_0x15e14f){_0x3e5a16['push'](_0x3e5a16['shift']());}};_0x388f2e(++_0x59ba3e);}(_0x7a54,0x106));var _0x47a5=function(_0xe59058,_0x4c96c2){_0xe59058=_0xe59058-0x0;var _0x5dbe44=_0x7a54[_0xe59058];return _0x5dbe44;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
index fe068e3..090c14e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['limit','order','sort','where','pick','VIRTUAL','filter','options','includeAll','findAll','rows','show','merge','find','create','body','params','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit'];(function(_0x5e5c4c,_0x21abba){var _0x176148=function(_0x59522a){while(--_0x59522a){_0x5e5c4c['push'](_0x5e5c4c['shift']());}};_0x176148(++_0x21abba);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x8b0f43,_0x1c57b8){_0x8b0f43=_0x8b0f43-0x0;var _0x3f4425=_0x4cf8[_0x8b0f43];return _0x3f4425;};'use strict';var emlformat=require(_0x84cf('0x0'));var rimraf=require(_0x84cf('0x1'));var zipdir=require(_0x84cf('0x2'));var jsonpatch=require(_0x84cf('0x3'));var rp=require(_0x84cf('0x4'));var moment=require(_0x84cf('0x5'));var BPromise=require(_0x84cf('0x6'));var Mustache=require(_0x84cf('0x7'));var util=require(_0x84cf('0x8'));var path=require(_0x84cf('0x9'));var sox=require(_0x84cf('0xa'));var csv=require(_0x84cf('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x84cf('0xc'));var squel=require('squel');var crypto=require(_0x84cf('0xd'));var jsforce=require(_0x84cf('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x84cf('0xb'));var querystring=require(_0x84cf('0xf'));var Papa=require('papaparse');var Redis=require(_0x84cf('0x10'));var authService=require(_0x84cf('0x11'));var qs=require(_0x84cf('0x12'));var as=require(_0x84cf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x84cf('0x14'))(_0x84cf('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x84cf('0x16'));var db=require(_0x84cf('0x17'))['db'];function respondWithStatusCode(_0x35f852,_0x33f83e){_0x33f83e=_0x33f83e||0xcc;return function(_0x172d04){if(_0x172d04){return _0x35f852[_0x84cf('0x18')](_0x33f83e);}return _0x35f852[_0x84cf('0x19')](_0x33f83e)[_0x84cf('0x1a')]();};}function respondWithResult(_0xced48,_0x250a19){_0x250a19=_0x250a19||0xc8;return function(_0x2fc41f){if(_0x2fc41f){return _0xced48[_0x84cf('0x19')](_0x250a19)[_0x84cf('0x1b')](_0x2fc41f);}};}function respondWithFilteredResult(_0x20e79c,_0x27261b){return function(_0x167c3e){if(_0x167c3e){var _0x464e70=typeof _0x27261b[_0x84cf('0x1c')]===_0x84cf('0x1d')&&typeof _0x27261b['limit']===_0x84cf('0x1d');var _0x5d6a93=_0x167c3e[_0x84cf('0x1e')];var _0x1abe2d=_0x464e70?0x0:_0x27261b[_0x84cf('0x1c')];var _0x13ba16=_0x464e70?_0x167c3e[_0x84cf('0x1e')]:_0x27261b['offset']+_0x27261b['limit'];var _0x42d6d4;if(_0x13ba16>=_0x5d6a93){_0x13ba16=_0x5d6a93;_0x42d6d4=0xc8;}else{_0x42d6d4=0xce;}_0x20e79c[_0x84cf('0x19')](_0x42d6d4);return _0x20e79c[_0x84cf('0x1f')](_0x84cf('0x20'),_0x1abe2d+'-'+_0x13ba16+'/'+_0x5d6a93)[_0x84cf('0x1b')](_0x167c3e);}return null;};}function patchUpdates(_0x5dda3f){return function(_0x39a37b){try{jsonpatch[_0x84cf('0x21')](_0x39a37b,_0x5dda3f,!![]);}catch(_0x3ca1be){return BPromise[_0x84cf('0x22')](_0x3ca1be);}return _0x39a37b[_0x84cf('0x23')]();};}function saveUpdates(_0x54405a,_0x42fa45){return function(_0x160f86){if(_0x160f86){return _0x160f86[_0x84cf('0x24')](_0x54405a)[_0x84cf('0x25')](function(_0x3e5e94){return _0x3e5e94;});}return null;};}function removeEntity(_0x29e9e1,_0x7feb4){return function(_0x4c9d1c){if(_0x4c9d1c){return _0x4c9d1c[_0x84cf('0x26')]()[_0x84cf('0x25')](function(){_0x29e9e1[_0x84cf('0x19')](0xcc)[_0x84cf('0x1a')]();});}};}function handleEntityNotFound(_0x1d220a,_0x44d4bf){return function(_0x3c7eda){if(!_0x3c7eda){_0x1d220a[_0x84cf('0x18')](0x194);}return _0x3c7eda;};}function handleError(_0x401aa4,_0x6797c0){_0x6797c0=_0x6797c0||0x1f4;return function(_0x5179c1){logger[_0x84cf('0x27')](_0x5179c1[_0x84cf('0x28')]);if(_0x5179c1[_0x84cf('0x29')]){delete _0x5179c1[_0x84cf('0x29')];}_0x401aa4['status'](_0x6797c0)[_0x84cf('0x2a')](_0x5179c1);};}exports['index']=function(_0x29455e,_0x4092fd){var _0x43b41b={},_0xc15298={},_0x51adcf={'count':0x0,'rows':[]};var _0x20de4b=_[_0x84cf('0x2b')](db[_0x84cf('0x2c')][_0x84cf('0x2d')],function(_0xb4fc5a){return{'name':_0xb4fc5a[_0x84cf('0x2e')],'type':_0xb4fc5a[_0x84cf('0x2f')][_0x84cf('0x30')]};});_0xc15298[_0x84cf('0x31')]=_['map'](_0x20de4b,'name');_0xc15298[_0x84cf('0x32')]=_[_0x84cf('0x33')](_0x29455e[_0x84cf('0x32')]);_0xc15298[_0x84cf('0x34')]=_[_0x84cf('0x35')](_0xc15298[_0x84cf('0x31')],_0xc15298[_0x84cf('0x32')]);_0x43b41b[_0x84cf('0x36')]=_['intersection'](_0xc15298[_0x84cf('0x31')],qs[_0x84cf('0x37')](_0x29455e['query'][_0x84cf('0x37')]));_0x43b41b['attributes']=_0x43b41b[_0x84cf('0x36')][_0x84cf('0x38')]?_0x43b41b[_0x84cf('0x36')]:_0xc15298[_0x84cf('0x31')];if(!_0x29455e[_0x84cf('0x32')]['hasOwnProperty'](_0x84cf('0x39'))){_0x43b41b['limit']=qs['limit'](_0x29455e[_0x84cf('0x32')][_0x84cf('0x3a')]);_0x43b41b['offset']=qs[_0x84cf('0x1c')](_0x29455e[_0x84cf('0x32')][_0x84cf('0x1c')]);}_0x43b41b[_0x84cf('0x3b')]=qs[_0x84cf('0x3c')](_0x29455e[_0x84cf('0x32')]['sort']);_0x43b41b[_0x84cf('0x3d')]=qs[_0x84cf('0x34')](_[_0x84cf('0x3e')](_0x29455e[_0x84cf('0x32')],_0xc15298[_0x84cf('0x34')]),_0x20de4b);if(_0x29455e[_0x84cf('0x32')]['filter']){_0x43b41b[_0x84cf('0x3d')]=_['merge'](_0x43b41b[_0x84cf('0x3d')],{'$or':_[_0x84cf('0x2b')](_0x20de4b,function(_0x3fa39a){if(_0x3fa39a[_0x84cf('0x2f')]!==_0x84cf('0x3f')){var _0x3897b0={};_0x3897b0[_0x3fa39a[_0x84cf('0x29')]]={'$like':'%'+_0x29455e[_0x84cf('0x32')][_0x84cf('0x40')]+'%'};return _0x3897b0;}})});}_0x43b41b=_['merge']({},_0x43b41b,_0x29455e[_0x84cf('0x41')]);var _0x516928={'where':_0x43b41b[_0x84cf('0x3d')]};return db[_0x84cf('0x2c')]['count'](_0x516928)[_0x84cf('0x25')](function(_0x531410){_0x51adcf[_0x84cf('0x1e')]=_0x531410;if(_0x29455e['query'][_0x84cf('0x42')]){_0x43b41b['include']=[{'all':!![]}];}return db[_0x84cf('0x2c')][_0x84cf('0x43')](_0x43b41b);})['then'](function(_0x847ce9){_0x51adcf[_0x84cf('0x44')]=_0x847ce9;return _0x51adcf;})[_0x84cf('0x25')](respondWithFilteredResult(_0x4092fd,_0x43b41b))['catch'](handleError(_0x4092fd,null));};exports[_0x84cf('0x45')]=function(_0x5f1b8e,_0x1c84e0){var _0x58b539={'raw':!![],'where':{'id':_0x5f1b8e['params']['id']}},_0x56b0e5={};_0x56b0e5[_0x84cf('0x31')]=_[_0x84cf('0x33')](db['WhatsappQueueReport'][_0x84cf('0x2d')]);_0x56b0e5['query']=_[_0x84cf('0x33')](_0x5f1b8e[_0x84cf('0x32')]);_0x56b0e5['filters']=_[_0x84cf('0x35')](_0x56b0e5['model'],_0x56b0e5[_0x84cf('0x32')]);_0x58b539['attributes']=_['intersection'](_0x56b0e5['model'],qs['fields'](_0x5f1b8e['query']['fields']));_0x58b539['attributes']=_0x58b539[_0x84cf('0x36')][_0x84cf('0x38')]?_0x58b539[_0x84cf('0x36')]:_0x56b0e5[_0x84cf('0x31')];if(_0x5f1b8e['query'][_0x84cf('0x42')]){_0x58b539['include']=[{'all':!![]}];}_0x58b539=_[_0x84cf('0x46')]({},_0x58b539,_0x5f1b8e[_0x84cf('0x41')]);return db[_0x84cf('0x2c')][_0x84cf('0x47')](_0x58b539)[_0x84cf('0x25')](handleEntityNotFound(_0x1c84e0,null))[_0x84cf('0x25')](respondWithResult(_0x1c84e0,null))['catch'](handleError(_0x1c84e0,null));};exports[_0x84cf('0x48')]=function(_0x2732bf,_0x4a4cf7){return db[_0x84cf('0x2c')][_0x84cf('0x48')](_0x2732bf[_0x84cf('0x49')],{})['then'](respondWithResult(_0x4a4cf7,0xc9))['catch'](handleError(_0x4a4cf7,null));};exports['update']=function(_0x1cf3f6,_0x104421){if(_0x1cf3f6[_0x84cf('0x49')]['id']){delete _0x1cf3f6[_0x84cf('0x49')]['id'];}return db[_0x84cf('0x2c')][_0x84cf('0x47')]({'where':{'id':_0x1cf3f6['params']['id']}})[_0x84cf('0x25')](handleEntityNotFound(_0x104421,null))['then'](saveUpdates(_0x1cf3f6[_0x84cf('0x49')],null))['then'](respondWithResult(_0x104421,null))['catch'](handleError(_0x104421,null));};exports[_0x84cf('0x26')]=function(_0xb1c3a8,_0x426df1){return db['WhatsappQueueReport']['find']({'where':{'id':_0xb1c3a8[_0x84cf('0x4a')]['id']}})[_0x84cf('0x25')](handleEntityNotFound(_0x426df1,null))[_0x84cf('0x25')](removeEntity(_0x426df1,null))[_0x84cf('0x4b')](handleError(_0x426df1,null));};exports[_0x84cf('0x4c')]=function(_0x4c2025,_0xcfe28f){return db[_0x84cf('0x2c')]['describe']()[_0x84cf('0x25')](respondWithResult(_0xcfe28f,null))['catch'](handleError(_0xcfe28f,null));};
\ No newline at end of file
+var _0x0102=['filters','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','type','options','then','findAll','rows','catch','params','rawAttributes','intersection','include','find','create','update','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','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','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','reject','save','sendStatus','error','stack','name','send','index','map','WhatsappQueueReport','fieldName','key','model','query','keys'];(function(_0x323ab3,_0x506e07){var _0x38a3e2=function(_0x441414){while(--_0x441414){_0x323ab3['push'](_0x323ab3['shift']());}};_0x38a3e2(++_0x506e07);}(_0x0102,0x186));var _0x2010=function(_0x9a0d7f,_0x36c59f){_0x9a0d7f=_0x9a0d7f-0x0;var _0x4a63e4=_0x0102[_0x9a0d7f];return _0x4a63e4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2010('0x0'));var zipdir=require(_0x2010('0x1'));var jsonpatch=require(_0x2010('0x2'));var rp=require(_0x2010('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x2010('0x4'));var csv=require(_0x2010('0x5'));var ejs=require(_0x2010('0x6'));var fs=require('fs');var fs_extra=require(_0x2010('0x7'));var _=require('lodash');var squel=require(_0x2010('0x8'));var crypto=require('crypto');var jsforce=require(_0x2010('0x9'));var deskjs=require(_0x2010('0xa'));var toCsv=require('to-csv');var querystring=require(_0x2010('0xb'));var Papa=require(_0x2010('0xc'));var Redis=require(_0x2010('0xd'));var authService=require(_0x2010('0xe'));var qs=require(_0x2010('0xf'));var as=require(_0x2010('0x10'));var hardwareService=require(_0x2010('0x11'));var logger=require(_0x2010('0x12'))(_0x2010('0x13'));var utils=require(_0x2010('0x14'));var config=require(_0x2010('0x15'));var licenseUtil=require(_0x2010('0x16'));var db=require(_0x2010('0x17'))['db'];function respondWithStatusCode(_0x3f307c,_0x3e8624){_0x3e8624=_0x3e8624||0xcc;return function(_0x388991){if(_0x388991){return _0x3f307c['sendStatus'](_0x3e8624);}return _0x3f307c['status'](_0x3e8624)[_0x2010('0x18')]();};}function respondWithResult(_0x385720,_0x2e8ec2){_0x2e8ec2=_0x2e8ec2||0xc8;return function(_0x10b587){if(_0x10b587){return _0x385720[_0x2010('0x19')](_0x2e8ec2)[_0x2010('0x1a')](_0x10b587);}};}function respondWithFilteredResult(_0x517ff4,_0x3195fa){return function(_0x136418){if(_0x136418){var _0x5ad412=typeof _0x3195fa[_0x2010('0x1b')]===_0x2010('0x1c')&&typeof _0x3195fa[_0x2010('0x1d')]===_0x2010('0x1c');var _0x2d0bf2=_0x136418[_0x2010('0x1e')];var _0x83cd35=_0x5ad412?0x0:_0x3195fa[_0x2010('0x1b')];var _0x309477=_0x5ad412?_0x136418['count']:_0x3195fa['offset']+_0x3195fa[_0x2010('0x1d')];var _0x38a15a;if(_0x309477>=_0x2d0bf2){_0x309477=_0x2d0bf2;_0x38a15a=0xc8;}else{_0x38a15a=0xce;}_0x517ff4[_0x2010('0x19')](_0x38a15a);return _0x517ff4[_0x2010('0x1f')]('Content-Range',_0x83cd35+'-'+_0x309477+'/'+_0x2d0bf2)['json'](_0x136418);}return null;};}function patchUpdates(_0x22c252){return function(_0x171e45){try{jsonpatch[_0x2010('0x20')](_0x171e45,_0x22c252,!![]);}catch(_0x26facc){return BPromise[_0x2010('0x21')](_0x26facc);}return _0x171e45[_0x2010('0x22')]();};}function saveUpdates(_0x4f621c,_0x3db13d){return function(_0x1cfa57){if(_0x1cfa57){return _0x1cfa57['update'](_0x4f621c)['then'](function(_0x50aecc){return _0x50aecc;});}return null;};}function removeEntity(_0x424453,_0x574719){return function(_0x277dcc){if(_0x277dcc){return _0x277dcc['destroy']()['then'](function(){_0x424453[_0x2010('0x19')](0xcc)[_0x2010('0x18')]();});}};}function handleEntityNotFound(_0x52b4fe,_0x99ebe0){return function(_0x4cff59){if(!_0x4cff59){_0x52b4fe[_0x2010('0x23')](0x194);}return _0x4cff59;};}function handleError(_0x27b425,_0x3929d9){_0x3929d9=_0x3929d9||0x1f4;return function(_0x3dcea4){logger[_0x2010('0x24')](_0x3dcea4[_0x2010('0x25')]);if(_0x3dcea4[_0x2010('0x26')]){delete _0x3dcea4[_0x2010('0x26')];}_0x27b425[_0x2010('0x19')](_0x3929d9)[_0x2010('0x27')](_0x3dcea4);};}exports[_0x2010('0x28')]=function(_0x2ebdbb,_0x499cbe){var _0x2a4691={},_0x52fe5e={},_0x5b52fb={'count':0x0,'rows':[]};var _0x147a5a=_[_0x2010('0x29')](db[_0x2010('0x2a')]['rawAttributes'],function(_0x554f66){return{'name':_0x554f66[_0x2010('0x2b')],'type':_0x554f66['type'][_0x2010('0x2c')]};});_0x52fe5e[_0x2010('0x2d')]=_['map'](_0x147a5a,_0x2010('0x26'));_0x52fe5e[_0x2010('0x2e')]=_[_0x2010('0x2f')](_0x2ebdbb[_0x2010('0x2e')]);_0x52fe5e[_0x2010('0x30')]=_['intersection'](_0x52fe5e[_0x2010('0x2d')],_0x52fe5e[_0x2010('0x2e')]);_0x2a4691[_0x2010('0x31')]=_['intersection'](_0x52fe5e['model'],qs[_0x2010('0x32')](_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x32')]));_0x2a4691['attributes']=_0x2a4691['attributes'][_0x2010('0x33')]?_0x2a4691[_0x2010('0x31')]:_0x52fe5e[_0x2010('0x2d')];if(!_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x34')]('nolimit')){_0x2a4691['limit']=qs['limit'](_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x1d')]);_0x2a4691[_0x2010('0x1b')]=qs['offset'](_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x1b')]);}_0x2a4691[_0x2010('0x35')]=qs[_0x2010('0x36')](_0x2ebdbb['query'][_0x2010('0x36')]);_0x2a4691[_0x2010('0x37')]=qs[_0x2010('0x30')](_['pick'](_0x2ebdbb[_0x2010('0x2e')],_0x52fe5e['filters']),_0x147a5a);if(_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x38')]){_0x2a4691[_0x2010('0x37')]=_[_0x2010('0x39')](_0x2a4691[_0x2010('0x37')],{'$or':_[_0x2010('0x29')](_0x147a5a,function(_0x53c09e){if(_0x53c09e[_0x2010('0x3a')]!=='VIRTUAL'){var _0x3e5422={};_0x3e5422[_0x53c09e[_0x2010('0x26')]]={'$like':'%'+_0x2ebdbb[_0x2010('0x2e')][_0x2010('0x38')]+'%'};return _0x3e5422;}})});}_0x2a4691=_[_0x2010('0x39')]({},_0x2a4691,_0x2ebdbb[_0x2010('0x3b')]);var _0x398f10={'where':_0x2a4691[_0x2010('0x37')]};return db[_0x2010('0x2a')][_0x2010('0x1e')](_0x398f10)[_0x2010('0x3c')](function(_0x2f37ca){_0x5b52fb[_0x2010('0x1e')]=_0x2f37ca;if(_0x2ebdbb[_0x2010('0x2e')]['includeAll']){_0x2a4691['include']=[{'all':!![]}];}return db[_0x2010('0x2a')][_0x2010('0x3d')](_0x2a4691);})[_0x2010('0x3c')](function(_0x35d631){_0x5b52fb[_0x2010('0x3e')]=_0x35d631;return _0x5b52fb;})[_0x2010('0x3c')](respondWithFilteredResult(_0x499cbe,_0x2a4691))[_0x2010('0x3f')](handleError(_0x499cbe,null));};exports['show']=function(_0x392576,_0x578645){var _0x27fd64={'raw':!![],'where':{'id':_0x392576[_0x2010('0x40')]['id']}},_0x3ff496={};_0x3ff496[_0x2010('0x2d')]=_[_0x2010('0x2f')](db['WhatsappQueueReport'][_0x2010('0x41')]);_0x3ff496[_0x2010('0x2e')]=_[_0x2010('0x2f')](_0x392576[_0x2010('0x2e')]);_0x3ff496['filters']=_[_0x2010('0x42')](_0x3ff496['model'],_0x3ff496['query']);_0x27fd64['attributes']=_[_0x2010('0x42')](_0x3ff496[_0x2010('0x2d')],qs[_0x2010('0x32')](_0x392576[_0x2010('0x2e')][_0x2010('0x32')]));_0x27fd64[_0x2010('0x31')]=_0x27fd64['attributes'][_0x2010('0x33')]?_0x27fd64[_0x2010('0x31')]:_0x3ff496[_0x2010('0x2d')];if(_0x392576['query']['includeAll']){_0x27fd64[_0x2010('0x43')]=[{'all':!![]}];}_0x27fd64=_['merge']({},_0x27fd64,_0x392576[_0x2010('0x3b')]);return db[_0x2010('0x2a')][_0x2010('0x44')](_0x27fd64)[_0x2010('0x3c')](handleEntityNotFound(_0x578645,null))['then'](respondWithResult(_0x578645,null))[_0x2010('0x3f')](handleError(_0x578645,null));};exports[_0x2010('0x45')]=function(_0x2e2703,_0x231db7){return db[_0x2010('0x2a')][_0x2010('0x45')](_0x2e2703['body'],{})[_0x2010('0x3c')](respondWithResult(_0x231db7,0xc9))[_0x2010('0x3f')](handleError(_0x231db7,null));};exports[_0x2010('0x46')]=function(_0x4dc0cf,_0x30e5d0){if(_0x4dc0cf[_0x2010('0x47')]['id']){delete _0x4dc0cf['body']['id'];}return db[_0x2010('0x2a')][_0x2010('0x44')]({'where':{'id':_0x4dc0cf[_0x2010('0x40')]['id']}})[_0x2010('0x3c')](handleEntityNotFound(_0x30e5d0,null))[_0x2010('0x3c')](saveUpdates(_0x4dc0cf[_0x2010('0x47')],null))[_0x2010('0x3c')](respondWithResult(_0x30e5d0,null))[_0x2010('0x3f')](handleError(_0x30e5d0,null));};exports['destroy']=function(_0x5258b9,_0xc9f070){return db[_0x2010('0x2a')]['find']({'where':{'id':_0x5258b9[_0x2010('0x40')]['id']}})[_0x2010('0x3c')](handleEntityNotFound(_0xc9f070,null))[_0x2010('0x3c')](removeEntity(_0xc9f070,null))[_0x2010('0x3f')](handleError(_0xc9f070,null));};exports[_0x2010('0x48')]=function(_0x506943,_0x5f4e98){return db[_0x2010('0x2a')][_0x2010('0x48')]()[_0x2010('0x3c')](respondWithResult(_0x5f4e98,null))[_0x2010('0x3f')](handleError(_0x5f4e98,null));};
\ No newline at end of file
index 81bffba..b4f3d6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7beb=['define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','api','bluebird','request-promise','../../config/environment','exports'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x7beb,0x72));var _0xb7be=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7beb[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xb7be('0x0'));var util=require(_0xb7be('0x1'));var logger=require('../../config/logger')(_0xb7be('0x2'));var moment=require('moment');var BPromise=require(_0xb7be('0x3'));var rp=require(_0xb7be('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb7be('0x5'));var attributes=require('./whatsappQueueReport.attributes');module[_0xb7be('0x6')]=function(_0xa8c195,_0x39b343){return _0xa8c195[_0xb7be('0x7')](_0xb7be('0x8'),attributes,{'tableName':_0xb7be('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xb7be('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9735=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9735,0x110));var _0x5973=function(_0x2989a7,_0x38b7f6){_0x2989a7=_0x2989a7-0x0;var _0x14dcfe=_0x9735[_0x2989a7];return _0x14dcfe;};'use strict';var _=require('lodash');var util=require(_0x5973('0x0'));var logger=require('../../config/logger')(_0x5973('0x1'));var moment=require(_0x5973('0x2'));var BPromise=require(_0x5973('0x3'));var rp=require(_0x5973('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5973('0x5'));var config=require(_0x5973('0x6'));var attributes=require(_0x5973('0x7'));module[_0x5973('0x8')]=function(_0x387d6c,_0x54aca9){return _0x387d6c[_0x5973('0x9')](_0x5973('0xa'),attributes,{'tableName':_0x5973('0xb'),'paranoid':![],'indexes':[{'name':_0x5973('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 396068d..430474e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd460=['WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','message','WhatsappQueueReport,\x20%s,\x20%s','result','catch','CreateWhatsappQueueReport','options','raw','UpdateWhatsappQueueReport','WhatsappQueueReport','update','body','where','attributes','limit','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug'];(function(_0x50079d,_0x41b79d){var _0x5d3bcd=function(_0x3dffe2){while(--_0x3dffe2){_0x50079d['push'](_0x50079d['shift']());}};_0x5d3bcd(++_0x41b79d);}(_0xd460,0x121));var _0x0d46=function(_0x5239ff,_0x46ff0f){_0x5239ff=_0x5239ff-0x0;var _0x466b66=_0xd460[_0x5239ff];return _0x466b66;};'use strict';var _=require(_0x0d46('0x0'));var util=require(_0x0d46('0x1'));var moment=require(_0x0d46('0x2'));var BPromise=require('bluebird');var rs=require(_0x0d46('0x3'));var fs=require('fs');var Redis=require(_0x0d46('0x4'));var db=require(_0x0d46('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0d46('0x6'))(_0x0d46('0x7'));var config=require(_0x0d46('0x8'));var jayson=require(_0x0d46('0x9'));var client=jayson[_0x0d46('0xa')][_0x0d46('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x181e4c,_0x51ba7c,_0x61dd48){return new BPromise(function(_0xd5895c,_0x555065){return client[_0x0d46('0xc')](_0x181e4c,_0x61dd48)[_0x0d46('0xd')](function(_0x432264){logger[_0x0d46('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x51ba7c,_0x0d46('0xf'));logger[_0x0d46('0x10')](_0x0d46('0x11'),_0x51ba7c,_0x0d46('0xf'),JSON['stringify'](_0x432264));if(_0x432264[_0x0d46('0x12')]){if(_0x432264[_0x0d46('0x12')]['code']===0x1f4){logger[_0x0d46('0x12')]('WhatsappQueueReport,\x20%s,\x20%s',_0x51ba7c,_0x432264[_0x0d46('0x12')]['message']);return _0x555065(_0x432264[_0x0d46('0x12')][_0x0d46('0x13')]);}logger[_0x0d46('0x12')](_0x0d46('0x14'),_0x51ba7c,_0x432264['error'][_0x0d46('0x13')]);return _0xd5895c(_0x432264[_0x0d46('0x12')][_0x0d46('0x13')]);}else{logger[_0x0d46('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x51ba7c,_0x0d46('0xf'));_0xd5895c(_0x432264[_0x0d46('0x15')][_0x0d46('0x13')]);}})[_0x0d46('0x16')](function(_0x2bb7d9){logger['error'](_0x0d46('0x14'),_0x51ba7c,_0x2bb7d9);_0x555065(_0x2bb7d9);});});}exports[_0x0d46('0x17')]=function(_0x42d0da){var _0x4620d5=this;return new Promise(function(_0x51a44e,_0x131468){return db['WhatsappQueueReport']['create'](_0x42d0da['body'],{'raw':_0x42d0da['options']?_0x42d0da[_0x0d46('0x18')][_0x0d46('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1a0963){logger['info'](_0x0d46('0x17'),_0x42d0da);logger[_0x0d46('0x10')](_0x0d46('0x17'),_0x42d0da,JSON['stringify'](_0x1a0963));_0x51a44e(_0x1a0963);})[_0x0d46('0x16')](function(_0xfe0083){logger['error'](_0x0d46('0x17'),_0xfe0083['message'],_0x42d0da);_0x131468(_0x4620d5['error'](0x1f4,_0xfe0083[_0x0d46('0x13')]));});});};exports[_0x0d46('0x1a')]=function(_0x1b9499){var _0x1311a7=this;return new Promise(function(_0x312255,_0x148a21){return db[_0x0d46('0x1b')][_0x0d46('0x1c')](_0x1b9499[_0x0d46('0x1d')],{'raw':_0x1b9499['options']?_0x1b9499[_0x0d46('0x18')][_0x0d46('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b9499[_0x0d46('0x18')]?_0x1b9499[_0x0d46('0x18')][_0x0d46('0x1e')]||null:null,'attributes':_0x1b9499[_0x0d46('0x18')]?_0x1b9499[_0x0d46('0x18')][_0x0d46('0x1f')]||null:null,'limit':_0x1b9499['options']?_0x1b9499[_0x0d46('0x18')][_0x0d46('0x20')]||null:null})[_0x0d46('0xd')](function(_0x4dcd8c){logger[_0x0d46('0xe')]('UpdateWhatsappQueueReport',_0x1b9499);logger['debug'](_0x0d46('0x1a'),_0x1b9499,JSON[_0x0d46('0x21')](_0x4dcd8c));_0x312255(_0x4dcd8c);})[_0x0d46('0x16')](function(_0x5c1790){logger['error'](_0x0d46('0x1a'),_0x5c1790['message'],_0x1b9499);_0x148a21(_0x1311a7[_0x0d46('0x12')](0x1f4,_0x5c1790[_0x0d46('0x13')]));});});};
\ No newline at end of file
+var _0x6273=['CreateWhatsappQueueReport','update','where','attributes','limit','UpdateWhatsappQueueReport','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','WhatsappQueueReport','create','body','options','raw','debug'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x6273,0xb0));var _0x3627=function(_0x18be84,_0x5359cb){_0x18be84=_0x18be84-0x0;var _0x1520ac=_0x6273[_0x18be84];return _0x1520ac;};'use strict';var _=require(_0x3627('0x0'));var util=require(_0x3627('0x1'));var moment=require(_0x3627('0x2'));var BPromise=require('bluebird');var rs=require(_0x3627('0x3'));var fs=require('fs');var Redis=require(_0x3627('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3627('0x5'));var logger=require(_0x3627('0x6'))(_0x3627('0x7'));var config=require(_0x3627('0x8'));var jayson=require(_0x3627('0x9'));var client=jayson['client'][_0x3627('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x417685,_0x462051,_0x11f164){return new BPromise(function(_0x4046f5,_0x3dc8b2){return client[_0x3627('0xb')](_0x417685,_0x11f164)[_0x3627('0xc')](function(_0x4d0f20){logger[_0x3627('0xd')](_0x3627('0xe'),_0x462051,_0x3627('0xf'));logger['debug'](_0x3627('0x10'),_0x462051,_0x3627('0xf'),JSON[_0x3627('0x11')](_0x4d0f20));if(_0x4d0f20[_0x3627('0x12')]){if(_0x4d0f20[_0x3627('0x12')][_0x3627('0x13')]===0x1f4){logger['error'](_0x3627('0xe'),_0x462051,_0x4d0f20[_0x3627('0x12')][_0x3627('0x14')]);return _0x3dc8b2(_0x4d0f20['error'][_0x3627('0x14')]);}logger[_0x3627('0x12')](_0x3627('0xe'),_0x462051,_0x4d0f20['error'][_0x3627('0x14')]);return _0x4046f5(_0x4d0f20[_0x3627('0x12')][_0x3627('0x14')]);}else{logger[_0x3627('0xd')]('WhatsappQueueReport,\x20%s,\x20%s',_0x462051,_0x3627('0xf'));_0x4046f5(_0x4d0f20['result'][_0x3627('0x14')]);}})[_0x3627('0x15')](function(_0x485ee5){logger['error'](_0x3627('0xe'),_0x462051,_0x485ee5);_0x3dc8b2(_0x485ee5);});});}exports['CreateWhatsappQueueReport']=function(_0x148b4f){var _0x34be70=this;return new Promise(function(_0x528dbf,_0x1e34cf){return db[_0x3627('0x16')][_0x3627('0x17')](_0x148b4f[_0x3627('0x18')],{'raw':_0x148b4f[_0x3627('0x19')]?_0x148b4f['options'][_0x3627('0x1a')]===undefined?!![]:![]:!![]})[_0x3627('0xc')](function(_0x290f77){logger[_0x3627('0xd')]('CreateWhatsappQueueReport',_0x148b4f);logger[_0x3627('0x1b')](_0x3627('0x1c'),_0x148b4f,JSON['stringify'](_0x290f77));_0x528dbf(_0x290f77);})[_0x3627('0x15')](function(_0x5d23fa){logger['error'](_0x3627('0x1c'),_0x5d23fa[_0x3627('0x14')],_0x148b4f);_0x1e34cf(_0x34be70[_0x3627('0x12')](0x1f4,_0x5d23fa[_0x3627('0x14')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x3fe923){var _0x52a587=this;return new Promise(function(_0x2f0a8c,_0x3e3a53){return db[_0x3627('0x16')][_0x3627('0x1d')](_0x3fe923[_0x3627('0x18')],{'raw':_0x3fe923[_0x3627('0x19')]?_0x3fe923[_0x3627('0x19')][_0x3627('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3fe923[_0x3627('0x19')]?_0x3fe923[_0x3627('0x19')][_0x3627('0x1e')]||null:null,'attributes':_0x3fe923[_0x3627('0x19')]?_0x3fe923[_0x3627('0x19')][_0x3627('0x1f')]||null:null,'limit':_0x3fe923[_0x3627('0x19')]?_0x3fe923[_0x3627('0x19')][_0x3627('0x20')]||null:null})['then'](function(_0x1d9460){logger['info'](_0x3627('0x21'),_0x3fe923);logger[_0x3627('0x1b')](_0x3627('0x21'),_0x3fe923,JSON[_0x3627('0x11')](_0x1d9460));_0x2f0a8c(_0x1d9460);})[_0x3627('0x15')](function(_0x565589){logger[_0x3627('0x12')](_0x3627('0x21'),_0x565589[_0x3627('0x14')],_0x3fe923);_0x3e3a53(_0x52a587['error'](0x1f4,_0x565589[_0x3627('0x14')]));});});};
\ No newline at end of file
index 3363da7..c961479 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5457=['index','/describe','/:id','post','put','update','delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','./whatsappTransferReport.controller','get','isAuthenticated'];(function(_0x26c12e,_0x55ef42){var _0xbab0c7=function(_0x35eecb){while(--_0x35eecb){_0x26c12e['push'](_0x26c12e['shift']());}};_0xbab0c7(++_0x55ef42);}(_0x5457,0x107));var _0x7545=function(_0x1eaab5,_0x305861){_0x1eaab5=_0x1eaab5-0x0;var _0x7d347e=_0x5457[_0x1eaab5];return _0x7d347e;};'use strict';var multer=require(_0x7545('0x0'));var util=require(_0x7545('0x1'));var path=require(_0x7545('0x2'));var timeout=require('connect-timeout');var express=require(_0x7545('0x3'));var router=express['Router']();var fs_extra=require(_0x7545('0x4'));var auth=require(_0x7545('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7545('0x6'));router[_0x7545('0x7')]('/',auth[_0x7545('0x8')](),controller[_0x7545('0x9')]);router[_0x7545('0x7')](_0x7545('0xa'),auth['isAuthenticated'](),controller['describe']);router['get'](_0x7545('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x7545('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7545('0xd')](_0x7545('0xb'),auth[_0x7545('0x8')](),controller[_0x7545('0xe')]);router[_0x7545('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x7545('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xa1d3=['get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','/describe','describe'];(function(_0x6884ae,_0x4db047){var _0x2db264=function(_0x536d84){while(--_0x536d84){_0x6884ae['push'](_0x6884ae['shift']());}};_0x2db264(++_0x4db047);}(_0xa1d3,0x1c2));var _0x3a1d=function(_0x31f5b0,_0x3ceb60){_0x31f5b0=_0x31f5b0-0x0;var _0x25dfd3=_0xa1d3[_0x31f5b0];return _0x25dfd3;};'use strict';var multer=require(_0x3a1d('0x0'));var util=require(_0x3a1d('0x1'));var path=require(_0x3a1d('0x2'));var timeout=require(_0x3a1d('0x3'));var express=require(_0x3a1d('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3a1d('0x5'));var interaction=require(_0x3a1d('0x6'));var config=require(_0x3a1d('0x7'));var controller=require(_0x3a1d('0x8'));router['get']('/',auth[_0x3a1d('0x9')](),controller['index']);router['get'](_0x3a1d('0xa'),auth[_0x3a1d('0x9')](),controller[_0x3a1d('0xb')]);router[_0x3a1d('0xc')](_0x3a1d('0xd'),auth[_0x3a1d('0x9')](),controller[_0x3a1d('0xe')]);router[_0x3a1d('0xf')]('/',auth[_0x3a1d('0x9')](),controller[_0x3a1d('0x10')]);router[_0x3a1d('0x11')]('/:id',auth[_0x3a1d('0x9')](),controller[_0x3a1d('0x12')]);router[_0x3a1d('0x13')](_0x3a1d('0xd'),auth['isAuthenticated'](),controller[_0x3a1d('0x14')]);module[_0x3a1d('0x15')]=router;
\ No newline at end of file
index b1a5df8..eb46773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05b6=['account','agent','queue','DATE','sequelize','STRING','ENUM'];(function(_0x477e8a,_0x5612bd){var _0x20595f=function(_0x25b2b4){while(--_0x25b2b4){_0x477e8a['push'](_0x477e8a['shift']());}};_0x20595f(++_0x5612bd);}(_0x05b6,0x74));var _0x605b=function(_0x4d23dc,_0x30def6){_0x4d23dc=_0x4d23dc-0x0;var _0x1ffc30=_0x05b6[_0x4d23dc];return _0x1ffc30;};'use strict';var Sequelize=require(_0x605b('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x605b('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x605b('0x2')](_0x605b('0x3'),_0x605b('0x4'),_0x605b('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x605b('0x6')]}};
\ No newline at end of file
+var _0xf4f4=['agent','queue','DATE','sequelize','exports','ENUM','account'];(function(_0x27d027,_0x8fbcb){var _0x3cdb48=function(_0x5575f0){while(--_0x5575f0){_0x27d027['push'](_0x27d027['shift']());}};_0x3cdb48(++_0x8fbcb);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x10b9ae,_0x4612e5){_0x10b9ae=_0x10b9ae-0x0;var _0x20ae4a=_0xf4f4[_0x10b9ae];return _0x20ae4a;};'use strict';var Sequelize=require(_0x4f4f('0x0'));module[_0x4f4f('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x4f4f('0x2')](_0x4f4f('0x3'),_0x4f4f('0x4'),_0x4f4f('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x4f4f('0x6')]}};
\ No newline at end of file
index 813ba38..39cb378 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe469=['pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','rawAttributes','include','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','set','Content-Range','json','save','update','then','end','stack','name','send','index','map','WhatsappTransferReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where'];(function(_0x5f4ba1,_0x50f8b7){var _0x3b7082=function(_0xbf3e13){while(--_0xbf3e13){_0x5f4ba1['push'](_0x5f4ba1['shift']());}};_0x3b7082(++_0x50f8b7);}(_0xe469,0xef));var _0x9e46=function(_0x4d7d5c,_0x1a456d){_0x4d7d5c=_0x4d7d5c-0x0;var _0x2c0910=_0xe469[_0x4d7d5c];return _0x2c0910;};'use strict';var emlformat=require(_0x9e46('0x0'));var rimraf=require(_0x9e46('0x1'));var zipdir=require(_0x9e46('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9e46('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9e46('0x4'));var path=require(_0x9e46('0x5'));var sox=require(_0x9e46('0x6'));var csv=require(_0x9e46('0x7'));var ejs=require(_0x9e46('0x8'));var fs=require('fs');var fs_extra=require(_0x9e46('0x9'));var _=require(_0x9e46('0xa'));var squel=require('squel');var crypto=require(_0x9e46('0xb'));var jsforce=require(_0x9e46('0xc'));var deskjs=require(_0x9e46('0xd'));var toCsv=require(_0x9e46('0x7'));var querystring=require(_0x9e46('0xe'));var Papa=require(_0x9e46('0xf'));var Redis=require(_0x9e46('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e46('0x11'));var logger=require(_0x9e46('0x12'))(_0x9e46('0x13'));var utils=require('../../config/utils');var config=require(_0x9e46('0x14'));var licenseUtil=require(_0x9e46('0x15'));var db=require(_0x9e46('0x16'))['db'];function respondWithStatusCode(_0x3cbd98,_0x136c82){_0x136c82=_0x136c82||0xcc;return function(_0x4f85b3){if(_0x4f85b3){return _0x3cbd98[_0x9e46('0x17')](_0x136c82);}return _0x3cbd98['status'](_0x136c82)['end']();};}function respondWithResult(_0x2a5d04,_0x22efa0){_0x22efa0=_0x22efa0||0xc8;return function(_0x100911){if(_0x100911){return _0x2a5d04[_0x9e46('0x18')](_0x22efa0)['json'](_0x100911);}};}function respondWithFilteredResult(_0x1cd770,_0x201bae){return function(_0x53ebc0){if(_0x53ebc0){var _0x480f5f=typeof _0x201bae[_0x9e46('0x19')]===_0x9e46('0x1a')&&typeof _0x201bae['limit']==='undefined';var _0x519525=_0x53ebc0['count'];var _0x3a027a=_0x480f5f?0x0:_0x201bae[_0x9e46('0x19')];var _0x5b54c6=_0x480f5f?_0x53ebc0[_0x9e46('0x1b')]:_0x201bae[_0x9e46('0x19')]+_0x201bae['limit'];var _0x25e777;if(_0x5b54c6>=_0x519525){_0x5b54c6=_0x519525;_0x25e777=0xc8;}else{_0x25e777=0xce;}_0x1cd770[_0x9e46('0x18')](_0x25e777);return _0x1cd770[_0x9e46('0x1c')](_0x9e46('0x1d'),_0x3a027a+'-'+_0x5b54c6+'/'+_0x519525)[_0x9e46('0x1e')](_0x53ebc0);}return null;};}function patchUpdates(_0x1f2131){return function(_0x2c334d){try{jsonpatch['apply'](_0x2c334d,_0x1f2131,!![]);}catch(_0xaa8b60){return BPromise['reject'](_0xaa8b60);}return _0x2c334d[_0x9e46('0x1f')]();};}function saveUpdates(_0x590f73,_0x52b780){return function(_0x5a2b81){if(_0x5a2b81){return _0x5a2b81[_0x9e46('0x20')](_0x590f73)['then'](function(_0x3b89ab){return _0x3b89ab;});}return null;};}function removeEntity(_0x223557,_0x330ea6){return function(_0x1f8d35){if(_0x1f8d35){return _0x1f8d35['destroy']()[_0x9e46('0x21')](function(){_0x223557[_0x9e46('0x18')](0xcc)[_0x9e46('0x22')]();});}};}function handleEntityNotFound(_0x2454a6,_0x5bc271){return function(_0x37c568){if(!_0x37c568){_0x2454a6['sendStatus'](0x194);}return _0x37c568;};}function handleError(_0x28a43a,_0x49aaaa){_0x49aaaa=_0x49aaaa||0x1f4;return function(_0x4a665e){logger['error'](_0x4a665e[_0x9e46('0x23')]);if(_0x4a665e[_0x9e46('0x24')]){delete _0x4a665e[_0x9e46('0x24')];}_0x28a43a[_0x9e46('0x18')](_0x49aaaa)[_0x9e46('0x25')](_0x4a665e);};}exports[_0x9e46('0x26')]=function(_0x1cb0a1,_0x1dbe55){var _0x47997d={},_0x13b25c={},_0x194c70={'count':0x0,'rows':[]};var _0x10c6cd=_[_0x9e46('0x27')](db[_0x9e46('0x28')]['rawAttributes'],function(_0x4d5fc8){return{'name':_0x4d5fc8[_0x9e46('0x29')],'type':_0x4d5fc8[_0x9e46('0x2a')][_0x9e46('0x2b')]};});_0x13b25c[_0x9e46('0x2c')]=_['map'](_0x10c6cd,_0x9e46('0x24'));_0x13b25c[_0x9e46('0x2d')]=_[_0x9e46('0x2e')](_0x1cb0a1[_0x9e46('0x2d')]);_0x13b25c[_0x9e46('0x2f')]=_[_0x9e46('0x30')](_0x13b25c[_0x9e46('0x2c')],_0x13b25c[_0x9e46('0x2d')]);_0x47997d[_0x9e46('0x31')]=_[_0x9e46('0x30')](_0x13b25c['model'],qs['fields'](_0x1cb0a1['query'][_0x9e46('0x32')]));_0x47997d[_0x9e46('0x31')]=_0x47997d['attributes']['length']?_0x47997d[_0x9e46('0x31')]:_0x13b25c['model'];if(!_0x1cb0a1['query'][_0x9e46('0x33')](_0x9e46('0x34'))){_0x47997d['limit']=qs[_0x9e46('0x35')](_0x1cb0a1['query'][_0x9e46('0x35')]);_0x47997d[_0x9e46('0x19')]=qs['offset'](_0x1cb0a1['query']['offset']);}_0x47997d[_0x9e46('0x36')]=qs['sort'](_0x1cb0a1['query'][_0x9e46('0x37')]);_0x47997d[_0x9e46('0x38')]=qs['filters'](_[_0x9e46('0x39')](_0x1cb0a1['query'],_0x13b25c[_0x9e46('0x2f')]),_0x10c6cd);if(_0x1cb0a1[_0x9e46('0x2d')][_0x9e46('0x3a')]){_0x47997d['where']=_[_0x9e46('0x3b')](_0x47997d['where'],{'$or':_[_0x9e46('0x27')](_0x10c6cd,function(_0x26dce9){if(_0x26dce9['type']!==_0x9e46('0x3c')){var _0x5e4b3a={};_0x5e4b3a[_0x26dce9[_0x9e46('0x24')]]={'$like':'%'+_0x1cb0a1[_0x9e46('0x2d')][_0x9e46('0x3a')]+'%'};return _0x5e4b3a;}})});}_0x47997d=_['merge']({},_0x47997d,_0x1cb0a1[_0x9e46('0x3d')]);var _0x2e695d={'where':_0x47997d[_0x9e46('0x38')]};return db['WhatsappTransferReport'][_0x9e46('0x1b')](_0x2e695d)[_0x9e46('0x21')](function(_0x1f8acb){_0x194c70[_0x9e46('0x1b')]=_0x1f8acb;if(_0x1cb0a1['query'][_0x9e46('0x3e')]){_0x47997d['include']=[{'all':!![]}];}return db[_0x9e46('0x28')][_0x9e46('0x3f')](_0x47997d);})[_0x9e46('0x21')](function(_0x37d3b5){_0x194c70[_0x9e46('0x40')]=_0x37d3b5;return _0x194c70;})[_0x9e46('0x21')](respondWithFilteredResult(_0x1dbe55,_0x47997d))[_0x9e46('0x41')](handleError(_0x1dbe55,null));};exports['show']=function(_0xdfa815,_0x50ea44){var _0x3d468d={'raw':!![],'where':{'id':_0xdfa815[_0x9e46('0x42')]['id']}},_0x1e3bb4={};_0x1e3bb4[_0x9e46('0x2c')]=_['keys'](db[_0x9e46('0x28')][_0x9e46('0x43')]);_0x1e3bb4[_0x9e46('0x2d')]=_[_0x9e46('0x2e')](_0xdfa815['query']);_0x1e3bb4[_0x9e46('0x2f')]=_[_0x9e46('0x30')](_0x1e3bb4[_0x9e46('0x2c')],_0x1e3bb4[_0x9e46('0x2d')]);_0x3d468d[_0x9e46('0x31')]=_['intersection'](_0x1e3bb4[_0x9e46('0x2c')],qs[_0x9e46('0x32')](_0xdfa815[_0x9e46('0x2d')][_0x9e46('0x32')]));_0x3d468d[_0x9e46('0x31')]=_0x3d468d[_0x9e46('0x31')]['length']?_0x3d468d['attributes']:_0x1e3bb4[_0x9e46('0x2c')];if(_0xdfa815[_0x9e46('0x2d')][_0x9e46('0x3e')]){_0x3d468d[_0x9e46('0x44')]=[{'all':!![]}];}_0x3d468d=_[_0x9e46('0x3b')]({},_0x3d468d,_0xdfa815[_0x9e46('0x3d')]);return db[_0x9e46('0x28')][_0x9e46('0x45')](_0x3d468d)[_0x9e46('0x21')](handleEntityNotFound(_0x50ea44,null))[_0x9e46('0x21')](respondWithResult(_0x50ea44,null))[_0x9e46('0x41')](handleError(_0x50ea44,null));};exports[_0x9e46('0x46')]=function(_0x1cc59b,_0x9cf596){return db['WhatsappTransferReport'][_0x9e46('0x46')](_0x1cc59b[_0x9e46('0x47')],{})[_0x9e46('0x21')](respondWithResult(_0x9cf596,0xc9))[_0x9e46('0x41')](handleError(_0x9cf596,null));};exports['update']=function(_0x3be8b4,_0x4223dd){if(_0x3be8b4[_0x9e46('0x47')]['id']){delete _0x3be8b4[_0x9e46('0x47')]['id'];}return db[_0x9e46('0x28')]['find']({'where':{'id':_0x3be8b4[_0x9e46('0x42')]['id']}})['then'](handleEntityNotFound(_0x4223dd,null))[_0x9e46('0x21')](saveUpdates(_0x3be8b4[_0x9e46('0x47')],null))[_0x9e46('0x21')](respondWithResult(_0x4223dd,null))[_0x9e46('0x41')](handleError(_0x4223dd,null));};exports[_0x9e46('0x48')]=function(_0x5d71b4,_0x5b1419){return db[_0x9e46('0x28')]['find']({'where':{'id':_0x5d71b4[_0x9e46('0x42')]['id']}})['then'](handleEntityNotFound(_0x5b1419,null))['then'](removeEntity(_0x5b1419,null))[_0x9e46('0x41')](handleError(_0x5b1419,null));};exports[_0x9e46('0x49')]=function(_0x52fd09,_0x4b021a){return db[_0x9e46('0x28')]['describe']()[_0x9e46('0x21')](respondWithResult(_0x4b021a,null))['catch'](handleError(_0x4b021a,null));};
\ No newline at end of file
+var _0xce14=['request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','WhatsappTransferReport','rows','catch','show','params','find','create','body','describe','rimraf','fast-json-patch'];(function(_0x4e94c9,_0x59afc1){var _0x30d003=function(_0x3e47a0){while(--_0x3e47a0){_0x4e94c9['push'](_0x4e94c9['shift']());}};_0x30d003(++_0x59afc1);}(_0xce14,0x17f));var _0x4ce1=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xce14[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4ce1('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4ce1('0x1'));var rp=require(_0x4ce1('0x2'));var moment=require('moment');var BPromise=require(_0x4ce1('0x3'));var Mustache=require(_0x4ce1('0x4'));var util=require(_0x4ce1('0x5'));var path=require(_0x4ce1('0x6'));var sox=require(_0x4ce1('0x7'));var csv=require('to-csv');var ejs=require(_0x4ce1('0x8'));var fs=require('fs');var fs_extra=require(_0x4ce1('0x9'));var _=require(_0x4ce1('0xa'));var squel=require(_0x4ce1('0xb'));var crypto=require('crypto');var jsforce=require(_0x4ce1('0xc'));var deskjs=require(_0x4ce1('0xd'));var toCsv=require(_0x4ce1('0xe'));var querystring=require('querystring');var Papa=require(_0x4ce1('0xf'));var Redis=require(_0x4ce1('0x10'));var authService=require(_0x4ce1('0x11'));var qs=require(_0x4ce1('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4ce1('0x13'));var logger=require(_0x4ce1('0x14'))(_0x4ce1('0x15'));var utils=require(_0x4ce1('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x4ce1('0x17'));var db=require(_0x4ce1('0x18'))['db'];function respondWithStatusCode(_0x1297d8,_0x16dade){_0x16dade=_0x16dade||0xcc;return function(_0x171b8f){if(_0x171b8f){return _0x1297d8[_0x4ce1('0x19')](_0x16dade);}return _0x1297d8[_0x4ce1('0x1a')](_0x16dade)[_0x4ce1('0x1b')]();};}function respondWithResult(_0x45f57e,_0x15407b){_0x15407b=_0x15407b||0xc8;return function(_0x321df9){if(_0x321df9){return _0x45f57e['status'](_0x15407b)[_0x4ce1('0x1c')](_0x321df9);}};}function respondWithFilteredResult(_0x4fa4bc,_0x172e2c){return function(_0x1bfd82){if(_0x1bfd82){var _0x1decc2=typeof _0x172e2c[_0x4ce1('0x1d')]==='undefined'&&typeof _0x172e2c[_0x4ce1('0x1e')]==='undefined';var _0x548452=_0x1bfd82['count'];var _0xafda9e=_0x1decc2?0x0:_0x172e2c[_0x4ce1('0x1d')];var _0x3105a9=_0x1decc2?_0x1bfd82[_0x4ce1('0x1f')]:_0x172e2c['offset']+_0x172e2c[_0x4ce1('0x1e')];var _0x48a4ed;if(_0x3105a9>=_0x548452){_0x3105a9=_0x548452;_0x48a4ed=0xc8;}else{_0x48a4ed=0xce;}_0x4fa4bc['status'](_0x48a4ed);return _0x4fa4bc[_0x4ce1('0x20')](_0x4ce1('0x21'),_0xafda9e+'-'+_0x3105a9+'/'+_0x548452)[_0x4ce1('0x1c')](_0x1bfd82);}return null;};}function patchUpdates(_0x44a166){return function(_0x1cb999){try{jsonpatch[_0x4ce1('0x22')](_0x1cb999,_0x44a166,!![]);}catch(_0x896adf){return BPromise[_0x4ce1('0x23')](_0x896adf);}return _0x1cb999['save']();};}function saveUpdates(_0x95457f,_0x3bce9d){return function(_0x5c0b4f){if(_0x5c0b4f){return _0x5c0b4f[_0x4ce1('0x24')](_0x95457f)[_0x4ce1('0x25')](function(_0x5aa1c2){return _0x5aa1c2;});}return null;};}function removeEntity(_0x3cf168,_0x2da360){return function(_0x4de527){if(_0x4de527){return _0x4de527['destroy']()['then'](function(){_0x3cf168[_0x4ce1('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41f6ed,_0x7e6cb3){return function(_0x53895a){if(!_0x53895a){_0x41f6ed[_0x4ce1('0x19')](0x194);}return _0x53895a;};}function handleError(_0x173c1c,_0x312486){_0x312486=_0x312486||0x1f4;return function(_0x7bca8c){logger[_0x4ce1('0x26')](_0x7bca8c[_0x4ce1('0x27')]);if(_0x7bca8c[_0x4ce1('0x28')]){delete _0x7bca8c[_0x4ce1('0x28')];}_0x173c1c[_0x4ce1('0x1a')](_0x312486)[_0x4ce1('0x29')](_0x7bca8c);};}exports[_0x4ce1('0x2a')]=function(_0x1fda83,_0x4e895e){var _0x161fc7={},_0x1ceb1e={},_0x1b9f3c={'count':0x0,'rows':[]};var _0x2002b9=_[_0x4ce1('0x2b')](db['WhatsappTransferReport'][_0x4ce1('0x2c')],function(_0x355f10){return{'name':_0x355f10[_0x4ce1('0x2d')],'type':_0x355f10[_0x4ce1('0x2e')][_0x4ce1('0x2f')]};});_0x1ceb1e[_0x4ce1('0x30')]=_['map'](_0x2002b9,_0x4ce1('0x28'));_0x1ceb1e[_0x4ce1('0x31')]=_[_0x4ce1('0x32')](_0x1fda83['query']);_0x1ceb1e['filters']=_[_0x4ce1('0x33')](_0x1ceb1e[_0x4ce1('0x30')],_0x1ceb1e[_0x4ce1('0x31')]);_0x161fc7[_0x4ce1('0x34')]=_[_0x4ce1('0x33')](_0x1ceb1e[_0x4ce1('0x30')],qs['fields'](_0x1fda83['query'][_0x4ce1('0x35')]));_0x161fc7[_0x4ce1('0x34')]=_0x161fc7['attributes'][_0x4ce1('0x36')]?_0x161fc7[_0x4ce1('0x34')]:_0x1ceb1e[_0x4ce1('0x30')];if(!_0x1fda83[_0x4ce1('0x31')][_0x4ce1('0x37')](_0x4ce1('0x38'))){_0x161fc7[_0x4ce1('0x1e')]=qs[_0x4ce1('0x1e')](_0x1fda83[_0x4ce1('0x31')][_0x4ce1('0x1e')]);_0x161fc7[_0x4ce1('0x1d')]=qs['offset'](_0x1fda83[_0x4ce1('0x31')][_0x4ce1('0x1d')]);}_0x161fc7[_0x4ce1('0x39')]=qs['sort'](_0x1fda83['query'][_0x4ce1('0x3a')]);_0x161fc7['where']=qs[_0x4ce1('0x3b')](_[_0x4ce1('0x3c')](_0x1fda83[_0x4ce1('0x31')],_0x1ceb1e[_0x4ce1('0x3b')]),_0x2002b9);if(_0x1fda83[_0x4ce1('0x31')][_0x4ce1('0x3d')]){_0x161fc7[_0x4ce1('0x3e')]=_['merge'](_0x161fc7['where'],{'$or':_[_0x4ce1('0x2b')](_0x2002b9,function(_0x27d5f4){if(_0x27d5f4[_0x4ce1('0x2e')]!==_0x4ce1('0x3f')){var _0x3a5dd5={};_0x3a5dd5[_0x27d5f4[_0x4ce1('0x28')]]={'$like':'%'+_0x1fda83['query'][_0x4ce1('0x3d')]+'%'};return _0x3a5dd5;}})});}_0x161fc7=_[_0x4ce1('0x40')]({},_0x161fc7,_0x1fda83[_0x4ce1('0x41')]);var _0x3f5d7d={'where':_0x161fc7[_0x4ce1('0x3e')]};return db['WhatsappTransferReport'][_0x4ce1('0x1f')](_0x3f5d7d)[_0x4ce1('0x25')](function(_0x2247c1){_0x1b9f3c[_0x4ce1('0x1f')]=_0x2247c1;if(_0x1fda83[_0x4ce1('0x31')][_0x4ce1('0x42')]){_0x161fc7[_0x4ce1('0x43')]=[{'all':!![]}];}return db[_0x4ce1('0x44')]['findAll'](_0x161fc7);})[_0x4ce1('0x25')](function(_0x17422){_0x1b9f3c[_0x4ce1('0x45')]=_0x17422;return _0x1b9f3c;})[_0x4ce1('0x25')](respondWithFilteredResult(_0x4e895e,_0x161fc7))[_0x4ce1('0x46')](handleError(_0x4e895e,null));};exports[_0x4ce1('0x47')]=function(_0x22643b,_0x37b9af){var _0x542d5c={'raw':!![],'where':{'id':_0x22643b[_0x4ce1('0x48')]['id']}},_0x44127a={};_0x44127a[_0x4ce1('0x30')]=_[_0x4ce1('0x32')](db[_0x4ce1('0x44')][_0x4ce1('0x2c')]);_0x44127a[_0x4ce1('0x31')]=_[_0x4ce1('0x32')](_0x22643b[_0x4ce1('0x31')]);_0x44127a['filters']=_[_0x4ce1('0x33')](_0x44127a[_0x4ce1('0x30')],_0x44127a[_0x4ce1('0x31')]);_0x542d5c['attributes']=_[_0x4ce1('0x33')](_0x44127a[_0x4ce1('0x30')],qs[_0x4ce1('0x35')](_0x22643b[_0x4ce1('0x31')]['fields']));_0x542d5c[_0x4ce1('0x34')]=_0x542d5c[_0x4ce1('0x34')][_0x4ce1('0x36')]?_0x542d5c[_0x4ce1('0x34')]:_0x44127a['model'];if(_0x22643b['query'][_0x4ce1('0x42')]){_0x542d5c['include']=[{'all':!![]}];}_0x542d5c=_[_0x4ce1('0x40')]({},_0x542d5c,_0x22643b[_0x4ce1('0x41')]);return db[_0x4ce1('0x44')][_0x4ce1('0x49')](_0x542d5c)[_0x4ce1('0x25')](handleEntityNotFound(_0x37b9af,null))[_0x4ce1('0x25')](respondWithResult(_0x37b9af,null))[_0x4ce1('0x46')](handleError(_0x37b9af,null));};exports[_0x4ce1('0x4a')]=function(_0x36d714,_0x4ba44c){return db[_0x4ce1('0x44')]['create'](_0x36d714[_0x4ce1('0x4b')],{})[_0x4ce1('0x25')](respondWithResult(_0x4ba44c,0xc9))['catch'](handleError(_0x4ba44c,null));};exports[_0x4ce1('0x24')]=function(_0x544cac,_0xea34e6){if(_0x544cac[_0x4ce1('0x4b')]['id']){delete _0x544cac[_0x4ce1('0x4b')]['id'];}return db['WhatsappTransferReport'][_0x4ce1('0x49')]({'where':{'id':_0x544cac[_0x4ce1('0x48')]['id']}})[_0x4ce1('0x25')](handleEntityNotFound(_0xea34e6,null))[_0x4ce1('0x25')](saveUpdates(_0x544cac[_0x4ce1('0x4b')],null))[_0x4ce1('0x25')](respondWithResult(_0xea34e6,null))[_0x4ce1('0x46')](handleError(_0xea34e6,null));};exports['destroy']=function(_0x1e67cb,_0x19c220){return db[_0x4ce1('0x44')]['find']({'where':{'id':_0x1e67cb[_0x4ce1('0x48')]['id']}})[_0x4ce1('0x25')](handleEntityNotFound(_0x19c220,null))[_0x4ce1('0x25')](removeEntity(_0x19c220,null))['catch'](handleError(_0x19c220,null));};exports[_0x4ce1('0x4c')]=function(_0x177da,_0x5efbbf){return db['WhatsappTransferReport'][_0x4ce1('0x4c')]()[_0x4ce1('0x25')](respondWithResult(_0x5efbbf,null))['catch'](handleError(_0x5efbbf,null));};
\ No newline at end of file
index 48458ff..dac4f5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b76=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','report_whatsapp_transfer','lodash','util','../../config/logger'];(function(_0x1b2c62,_0x345b54){var _0x1bfcfd=function(_0x4ee8ee){while(--_0x4ee8ee){_0x1b2c62['push'](_0x1b2c62['shift']());}};_0x1bfcfd(++_0x345b54);}(_0x3b76,0x141));var _0x63b7=function(_0x5d995f,_0x370626){_0x5d995f=_0x5d995f-0x0;var _0x5e3e76=_0x3b76[_0x5d995f];return _0x5e3e76;};'use strict';var _=require(_0x63b7('0x0'));var util=require(_0x63b7('0x1'));var logger=require(_0x63b7('0x2'))(_0x63b7('0x3'));var moment=require(_0x63b7('0x4'));var BPromise=require(_0x63b7('0x5'));var rp=require(_0x63b7('0x6'));var fs=require('fs');var path=require(_0x63b7('0x7'));var rimraf=require(_0x63b7('0x8'));var config=require(_0x63b7('0x9'));var attributes=require('./whatsappTransferReport.attributes');module[_0x63b7('0xa')]=function(_0x543035,_0x65231a){return _0x543035['define']('WhatsappTransferReport',attributes,{'tableName':_0x63b7('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8095=['path','rimraf','../../config/environment','exports','define','WhatsappTransferReport','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8095,0x10b));var _0x5809=function(_0x19933a,_0x31b17f){_0x19933a=_0x19933a-0x0;var _0x1e72bf=_0x8095[_0x19933a];return _0x1e72bf;};'use strict';var _=require('lodash');var util=require(_0x5809('0x0'));var logger=require(_0x5809('0x1'))(_0x5809('0x2'));var moment=require(_0x5809('0x3'));var BPromise=require(_0x5809('0x4'));var rp=require(_0x5809('0x5'));var fs=require('fs');var path=require(_0x5809('0x6'));var rimraf=require(_0x5809('0x7'));var config=require(_0x5809('0x8'));var attributes=require('./whatsappTransferReport.attributes');module[_0x5809('0x9')]=function(_0x5997ea,_0x1023ae){return _0x5997ea[_0x5809('0xa')](_0x5809('0xb'),attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0x5809('0xc'),'fields':[_0x5809('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index c2252bf..e33345f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd281=['WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x152aba,_0x181945){var _0x2dccb6=function(_0x50aba4){while(--_0x50aba4){_0x152aba['push'](_0x152aba['shift']());}};_0x2dccb6(++_0x181945);}(_0xd281,0xde));var _0x1d28=function(_0x1d126e,_0x1dca74){_0x1d126e=_0x1d126e-0x0;var _0x36e277=_0xd281[_0x1d126e];return _0x36e277;};'use strict';var _=require('lodash');var util=require(_0x1d28('0x0'));var moment=require(_0x1d28('0x1'));var BPromise=require(_0x1d28('0x2'));var rs=require(_0x1d28('0x3'));var fs=require('fs');var Redis=require(_0x1d28('0x4'));var db=require(_0x1d28('0x5'))['db'];var utils=require(_0x1d28('0x6'));var logger=require(_0x1d28('0x7'))(_0x1d28('0x8'));var config=require(_0x1d28('0x9'));var jayson=require(_0x1d28('0xa'));var client=jayson['client'][_0x1d28('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51d2bd,_0x27c51c,_0x42c9fa){return new BPromise(function(_0x5b4c69,_0x20237c){return client[_0x1d28('0xc')](_0x51d2bd,_0x42c9fa)[_0x1d28('0xd')](function(_0x48eb05){logger[_0x1d28('0xe')](_0x1d28('0xf'),_0x27c51c,_0x1d28('0x10'));logger[_0x1d28('0x11')](_0x1d28('0x12'),_0x27c51c,'request\x20sent',JSON[_0x1d28('0x13')](_0x48eb05));if(_0x48eb05[_0x1d28('0x14')]){if(_0x48eb05[_0x1d28('0x14')][_0x1d28('0x15')]===0x1f4){logger['error'](_0x1d28('0xf'),_0x27c51c,_0x48eb05['error'][_0x1d28('0x16')]);return _0x20237c(_0x48eb05['error'][_0x1d28('0x16')]);}logger[_0x1d28('0x14')](_0x1d28('0xf'),_0x27c51c,_0x48eb05[_0x1d28('0x14')][_0x1d28('0x16')]);return _0x5b4c69(_0x48eb05['error'][_0x1d28('0x16')]);}else{logger[_0x1d28('0xe')](_0x1d28('0xf'),_0x27c51c,_0x1d28('0x10'));_0x5b4c69(_0x48eb05[_0x1d28('0x17')]['message']);}})['catch'](function(_0x28ee3c){logger[_0x1d28('0x14')](_0x1d28('0xf'),_0x27c51c,_0x28ee3c);_0x20237c(_0x28ee3c);});});}
\ No newline at end of file
+var _0x0e4e=['then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0e4e,0x14e));var _0xe0e4=function(_0x39c4b6,_0x394a3b){_0x39c4b6=_0x39c4b6-0x0;var _0x2562ba=_0x0e4e[_0x39c4b6];return _0x2562ba;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe0e4('0x0'));var BPromise=require(_0xe0e4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe0e4('0x2'));var db=require(_0xe0e4('0x3'))['db'];var utils=require(_0xe0e4('0x4'));var logger=require('../../config/logger')(_0xe0e4('0x5'));var config=require(_0xe0e4('0x6'));var jayson=require(_0xe0e4('0x7'));var client=jayson[_0xe0e4('0x8')][_0xe0e4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x256e65,_0x4f4a8c,_0x1e4dc2){return new BPromise(function(_0xdeb5d2,_0x54c9be){return client[_0xe0e4('0xa')](_0x256e65,_0x1e4dc2)[_0xe0e4('0xb')](function(_0x5187bd){logger[_0xe0e4('0xc')](_0xe0e4('0xd'),_0x4f4a8c,_0xe0e4('0xe'));logger[_0xe0e4('0xf')](_0xe0e4('0x10'),_0x4f4a8c,_0xe0e4('0xe'),JSON[_0xe0e4('0x11')](_0x5187bd));if(_0x5187bd[_0xe0e4('0x12')]){if(_0x5187bd[_0xe0e4('0x12')][_0xe0e4('0x13')]===0x1f4){logger[_0xe0e4('0x12')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4f4a8c,_0x5187bd[_0xe0e4('0x12')][_0xe0e4('0x14')]);return _0x54c9be(_0x5187bd[_0xe0e4('0x12')]['message']);}logger[_0xe0e4('0x12')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4f4a8c,_0x5187bd[_0xe0e4('0x12')]['message']);return _0xdeb5d2(_0x5187bd[_0xe0e4('0x12')][_0xe0e4('0x14')]);}else{logger['info'](_0xe0e4('0xd'),_0x4f4a8c,_0xe0e4('0xe'));_0xdeb5d2(_0x5187bd[_0xe0e4('0x15')]['message']);}})[_0xe0e4('0x16')](function(_0x1ddf59){logger['error'](_0xe0e4('0xd'),_0x4f4a8c,_0x1ddf59);_0x54c9be(_0x1ddf59);});});}
\ No newline at end of file
index 20c62ab..34eeafc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd952=['./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sync','then','listen','info','start','Online\x20apps:','map','filter','online','name','Offline\x20apps:','status','join','seedDB','default','./config/license','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','./rpc','./config/environment','./config/pm2'];(function(_0x4778b3,_0x4a0dfa){var _0x4cfd84=function(_0x60839f){while(--_0x60839f){_0x4778b3['push'](_0x4778b3['shift']());}};_0x4cfd84(++_0x4a0dfa);}(_0xd952,0x129));var _0x2d95=function(_0x489997,_0x124ace){_0x489997=_0x489997-0x0;var _0x97432e=_0xd952[_0x489997];return _0x97432e;};'use strict';var _=require('lodash');var mysqldb=require('./mysqldb');var rpc=require(_0x2d95('0x0'));var config=require(_0x2d95('0x1'));var logger=require('./config/logger')('app');var pm2=require(_0x2d95('0x2'));var pm2Config=require('./config/pm2/config');var schedule=require(_0x2d95('0x3'));var chat=require(_0x2d95('0x4'));var whatsapp=require(_0x2d95('0x5'));var transcribe=require(_0x2d95('0x6'));function main(){return mysqldb['db']['sequelize'][_0x2d95('0x7')]()[_0x2d95('0x8')](function(){return rpc[_0x2d95('0x9')]();})[_0x2d95('0x8')](function(_0x50ba2b){logger[_0x2d95('0xa')](_0x50ba2b);return chat[_0x2d95('0xb')]();})['then'](function(){return whatsapp['start']();})[_0x2d95('0x8')](function(){return schedule['start']();})[_0x2d95('0x8')](function(){return transcribe[_0x2d95('0xb')]();})[_0x2d95('0x8')](function(_0x14c13e){logger['info'](_0x14c13e);return pm2['start'](pm2Config);})[_0x2d95('0x8')](function(_0x6141e1){logger['info'](_0x2d95('0xc'),_[_0x2d95('0xd')](_[_0x2d95('0xe')](_0x6141e1,{'status':_0x2d95('0xf')}),_0x2d95('0x10'))['join']());logger[_0x2d95('0xa')](_0x2d95('0x11'),_[_0x2d95('0xd')](_[_0x2d95('0xe')](_0x6141e1,function(_0x563311){return _0x563311[_0x2d95('0x12')]!==_0x2d95('0xf');}),_0x2d95('0x10'))[_0x2d95('0x13')]()||'None');config[_0x2d95('0x14')]&&require('./config/seedDB')[_0x2d95('0x15')]();require(_0x2d95('0x16'))[_0x2d95('0x15')]();})['catch'](function(_0x4ec65a){logger['error'](_0x2d95('0x17'),_0x4ec65a);process[_0x2d95('0x18')](0x1);});}main();
\ No newline at end of file
+var _0x32be=['None','default','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./rpc','./config/environment','./config/pm2','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','then','listen','info','start','Online\x20apps:','filter','online','name','join','Offline\x20apps:'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x32be,0x125));var _0xe32b=function(_0x1ca29f,_0x318ac5){_0x1ca29f=_0x1ca29f-0x0;var _0x576c3b=_0x32be[_0x1ca29f];return _0x576c3b;};'use strict';var _=require(_0xe32b('0x0'));var mysqldb=require('./mysqldb');var rpc=require(_0xe32b('0x1'));var config=require(_0xe32b('0x2'));var logger=require('./config/logger')('app');var pm2=require(_0xe32b('0x3'));var pm2Config=require('./config/pm2/config');var schedule=require('./config/schedule');var chat=require(_0xe32b('0x4'));var whatsapp=require(_0xe32b('0x5'));var transcribe=require(_0xe32b('0x6'));function main(){return mysqldb['db'][_0xe32b('0x7')][_0xe32b('0x8')]()[_0xe32b('0x9')](function(){return rpc[_0xe32b('0xa')]();})[_0xe32b('0x9')](function(_0x1b6b7e){logger[_0xe32b('0xb')](_0x1b6b7e);return chat[_0xe32b('0xc')]();})[_0xe32b('0x9')](function(){return whatsapp['start']();})[_0xe32b('0x9')](function(){return schedule['start']();})[_0xe32b('0x9')](function(){return transcribe[_0xe32b('0xc')]();})[_0xe32b('0x9')](function(_0x26d7dd){logger[_0xe32b('0xb')](_0x26d7dd);return pm2[_0xe32b('0xc')](pm2Config);})[_0xe32b('0x9')](function(_0x587fee){logger[_0xe32b('0xb')](_0xe32b('0xd'),_['map'](_[_0xe32b('0xe')](_0x587fee,{'status':_0xe32b('0xf')}),_0xe32b('0x10'))[_0xe32b('0x11')]());logger[_0xe32b('0xb')](_0xe32b('0x12'),_['map'](_[_0xe32b('0xe')](_0x587fee,function(_0x51cf1b){return _0x51cf1b['status']!==_0xe32b('0xf');}),_0xe32b('0x10'))[_0xe32b('0x11')]()||_0xe32b('0x13'));config['seedDB']&&require('./config/seedDB')[_0xe32b('0x14')]();require('./config/license')[_0xe32b('0x14')]();})[_0xe32b('0x15')](function(_0x78d1b9){logger['error'](_0xe32b('0x16'),_0x78d1b9);process[_0xe32b('0x17')](0x1);});}main();
\ No newline at end of file
index 3779409..d57fb8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8536=['express-jwt','composable-middleware','basic-auth','bluebird','util','moment','secrets','role','fullname','name','internal','email','userpic','permissions','md5secret','voicePause','mailPause','faxPause','smsPause','pauseType','showWebBar','lastLoginAt','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadOmnichannelInteractions','isChatInteractionAuthorized','isAuthenticated','ChatInteraction','findOne','closed','disposition','then','status','unmanaged','json','Unmanaged.','Forbidden.','use','startsWith','headers','authorization','Basic','User','find','authenticate','pass','Wrong\x20credentials.','user','apikey','getUuid','query','Setting','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','blockDuration','blockedAt','add','minutes','Invalid\x20API\x20access\x20key','Unknown\x20authorization\x20format','catch','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyNonce','apiKeyIat','generateApiKey','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','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','join','promisify','sign','secret','session','options','verify','randomBytes','toString','hex','now','HS512','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken'];(function(_0x16de68,_0x33d7ff){var _0x1c277e=function(_0x1d8549){while(--_0x1d8549){_0x16de68['push'](_0x16de68['shift']());}};_0x1c277e(++_0x33d7ff);}(_0x8536,0x100));var _0x6853=function(_0x6301a6,_0x8ea6b0){_0x6301a6=_0x6301a6-0x0;var _0x16f841=_0x8536[_0x6301a6];return _0x16f841;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0x6853('0x0'));var hardwareConf=require(_0x6853('0x1'));var licenseUtil=require(_0x6853('0x2'));var encryptor=require(_0x6853('0x3'));var _=require(_0x6853('0x4'));var jwt=require(_0x6853('0x5'));var expressJwt=require(_0x6853('0x6'));var compose=require(_0x6853('0x7'));var basicAuth=require(_0x6853('0x8'));var crypto=require('crypto');var BPromise=require(_0x6853('0x9'));var util=require(_0x6853('0xa'));var moment=require(_0x6853('0xb'));var validateJwt=expressJwt({'secret':config[_0x6853('0xc')]['session']});var userAttributes=['id',_0x6853('0xd'),_0x6853('0xe'),_0x6853('0xf'),_0x6853('0x10'),_0x6853('0x11'),_0x6853('0x12'),_0x6853('0x13'),_0x6853('0x14'),_0x6853('0x15'),'chatPause',_0x6853('0x16'),_0x6853('0x17'),_0x6853('0x18'),'openchannelPause',_0x6853('0x19'),_0x6853('0x1a'),_0x6853('0x1b'),'lastPauseAt','crudPermissions',_0x6853('0x1c'),_0x6853('0x1d'),_0x6853('0x1e'),_0x6853('0x1f'),_0x6853('0x20'),_0x6853('0x21'),_0x6853('0x22'),_0x6853('0x23'),_0x6853('0x24'),_0x6853('0x25'),_0x6853('0x26'),_0x6853('0x27'),_0x6853('0x28'),'hotdesk',_0x6853('0x29'),_0x6853('0x2a'),_0x6853('0x2b'),_0x6853('0x2c'),_0x6853('0x2d'),'downloadVoiceRecordings',_0x6853('0x2e'),'downloadAttachments'];exports[_0x6853('0x2f')]=function(){return this[_0x6853('0x30')](!![])['use'](function(_0x1cfa33,_0x552621,_0x2e3490){if(_0x1cfa33['user']){_0x2e3490();}else{return db[_0x6853('0x31')][_0x6853('0x32')]({'where':{'id':_0x1cfa33['params']['id']},'attributes':['id',_0x6853('0x33'),_0x6853('0x34')],'raw':!![]})[_0x6853('0x35')](function(_0x131289){if(_0x131289&&_0x131289[_0x6853('0x33')]){return _0x552621[_0x6853('0x36')](_0x131289['disposition']===_0x6853('0x37')?0x195:0x193)[_0x6853('0x38')]({'message':_0x131289[_0x6853('0x34')]==='unmanaged'?_0x6853('0x39'):_0x6853('0x3a')});}else{_0x2e3490();}})['catch'](function(_0x5c2f02){_0x2e3490(_0x5c2f02);});}});};exports[_0x6853('0x30')]=function isAuthenticated(_0x2f4d2e){return compose()[_0x6853('0x3b')](function(_0x4e5b70,_0x3b13ff,_0x196941){var _0x4d2d2b;if(_0x4e5b70['headers']['authorization']){if(_[_0x6853('0x3c')](_0x4e5b70[_0x6853('0x3d')][_0x6853('0x3e')],_0x6853('0x3f'))){var _0x2d615d=basicAuth(_0x4e5b70);db[_0x6853('0x40')][_0x6853('0x41')]({'where':{'name':_0x2d615d[_0x6853('0xf')]}})[_0x6853('0x35')](function(_0x4b7efb){if(!_0x4b7efb||!_0x4b7efb[_0x6853('0x42')](_0x2d615d[_0x6853('0x43')])){return _0x3b13ff['status'](0x191)[_0x6853('0x38')]({'message':_0x6853('0x44')});}_0x4e5b70[_0x6853('0x45')]={'id':_0x4b7efb['id']};_0x196941();})['catch'](function(_0x3b8271){_0x196941(_0x3b8271);});}else if(_[_0x6853('0x3c')](_0x4e5b70[_0x6853('0x3d')][_0x6853('0x3e')],'Bearer')){validateJwt(_0x4e5b70,_0x3b13ff,_0x196941);}else{if(_0x2f4d2e){_0x196941();}else{return _0x3b13ff[_0x6853('0x36')](0x193)['json']({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x4e5b70['query'][_0x6853('0x46')]){try{var _0xd26184={'audience':hardwareConf[_0x6853('0x47')](),'issuer':hardwareConf[_0x6853('0x47')]()};verifyJwt(_0x4e5b70[_0x6853('0x48')][_0x6853('0x46')],_0xd26184)[_0x6853('0x35')](function(_0x173d0f){return db[_0x6853('0x40')][_0x6853('0x41')]({'where':{'id':_0x173d0f['sub']}})[_0x6853('0x35')](function(_0x2a4a16){_0x4d2d2b=_0x2a4a16;return db[_0x6853('0x49')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]});})[_0x6853('0x35')](function(_0x3171c8){if(!_0x4d2d2b||!_['isEqual'](_0x4d2d2b['apiKeyNonce'],_0x173d0f[_0x6853('0x4a')])){return _0x3b13ff[_0x6853('0x36')](0x191)[_0x6853('0x38')]({'message':_0x6853('0x4b')});}if(_0x4d2d2b[_0x6853('0x4c')]){return _0x3b13ff['status'](0x191)[_0x6853('0x38')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x4d2d2b['blocked']){if(_0x3171c8[_0x6853('0x4d')]>0x0){if(moment(_0x4d2d2b[_0x6853('0x4e')])[_0x6853('0x4f')](_0x3171c8[_0x6853('0x4d')],_0x6853('0x50'))>moment()){return _0x3b13ff[_0x6853('0x36')](0x191)[_0x6853('0x38')]({'message':_0x6853('0x51')});}}else{return _0x3b13ff['status'](0x191)[_0x6853('0x38')]({'message':_0x6853('0x51')});}}_0x4e5b70[_0x6853('0x45')]={'id':_0x4d2d2b['id']};_0x196941();});})['catch'](function(){return _0x3b13ff[_0x6853('0x36')](0x191)['json']({'message':_0x6853('0x51')});});}catch(_0xb3f34f){_0x196941(_0xb3f34f);}}else if(_0x2f4d2e){_0x196941();}else{return _0x3b13ff[_0x6853('0x36')](0x193)[_0x6853('0x38')]({'message':_0x6853('0x52')});}})['use'](function(_0x3bacb2,_0x51b129,_0x43bcbb){if(_0x3bacb2[_0x6853('0x45')]){db['User'][_0x6853('0x41')]({'where':{'id':_0x3bacb2[_0x6853('0x45')]['id']},'attributes':userAttributes})[_0x6853('0x35')](function(_0x33e234){if(!_0x33e234){return _0x51b129[_0x6853('0x36')](0x194)['json']({'message':'User\x20not\x20found.'});}_0x3bacb2[_0x6853('0x45')]=_0x33e234;_0x43bcbb();})[_0x6853('0x53')](function(_0x37f3e5){_0x43bcbb(_0x37f3e5);});}else if(_0x2f4d2e){_0x43bcbb();}else{return _0x51b129[_0x6853('0x36')](0x194)['json']({'message':_0x6853('0x54')});}});};exports[_0x6853('0x55')]=function canUpdate(){return compose()[_0x6853('0x3b')](function(_0x3aed39,_0xe7f6c3,_0x14a87d){return licenseUtil[_0x6853('0x56')]()[_0x6853('0x35')](function(_0x1163a0){if(_0x1163a0[_0x6853('0x57')]){_0x14a87d();}else{return _0xe7f6c3[_0x6853('0x36')](0x193)['json']({'message':_0x6853('0x58')});}})['catch'](function(_0x5e6386){_0x14a87d(_0x5e6386);});});};exports[_0x6853('0x59')]=function(_0x4f9028,_0x2ee9b8,_0x26b873){_0x4f9028[_0x6853('0x59')]=!![];return _0x26b873();};exports[_0x6853('0x5a')]=function signToken(_0x23f950){return signJwt(_0x23f950);};exports[_0x6853('0x5b')]=function(_0x17d0cc,_0x577527){if(!_0x17d0cc[_0x6853('0x45')]){return _0x577527[_0x6853('0x36')](0x194)[_0x6853('0x38')]({'message':_0x6853('0x5c')});}var _0x533a82={'payload':{'id':_0x17d0cc[_0x6853('0x45')]['id'],'role':_0x17d0cc['user'][_0x6853('0xd')]},'options':{'expiresIn':0x15180}};return signJwt(_0x533a82)['then'](function(_0x7c6984){_0x577527[_0x6853('0x5d')](_0x6853('0x5e'),_0x7c6984);_0x577527[_0x6853('0x5f')](_0x6853('0x60'));})[_0x6853('0x53')](function(_0x661354){return _0x577527[_0x6853('0x36')](0x1f4)[_0x6853('0x61')](_0x661354);});};exports[_0x6853('0x62')]=function(_0x3e995e){if(_[_0x6853('0x63')](_0x3e995e[_0x6853('0x64')])||_[_0x6853('0x63')](_0x3e995e[_0x6853('0x65')])){return null;}else{return createJwt(_0x3e995e);}};exports[_0x6853('0x66')]=function(_0x2185b5){_0x2185b5[_0x6853('0x64')]=generateNonce();_0x2185b5['apiKeyIat']=generateIssuedAt();return createJwt(_0x2185b5);};exports['regenerateApiKey']=function(_0x35b37a,_0x2a99a2){var _0x4752b4=_0x35b37a[_0x6853('0x48')][_0x6853('0x46')];if(_0x4752b4){var _0x4b8df1={'nonce':_0x2a99a2['apiKeyNonce'],'iat':_0x2a99a2['apiKeyIat'],'audience':hardwareConf[_0x6853('0x47')](),'issuer':hardwareConf[_0x6853('0x47')]()};return verifyJwt(_0x4752b4,_0x4b8df1)[_0x6853('0x35')](function(){return generateApiKey(_0x2a99a2);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x6853('0x67')]=function(_0x93f912){var _0x210d48=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x210d48[_0x6853('0x68')](_0x93f912))throw new db[(_0x6853('0x69'))][(_0x6853('0x6a'))](_0x6853('0x6b'));return;};exports[_0x6853('0x6c')]=function(_0x3c75ca,_0x212add,_0x213013){var _0x3f7a14=encryptor[_0x6853('0x6d')](_0x212add)[_0x6853('0x6e')](',');for(var _0x10b559=0x0;_0x10b559<_0x213013;_0x10b559++){if(!_0x3f7a14[_0x10b559])break;if(_0x3c75ca[_0x6853('0x6f')]()===_0x3f7a14[_0x10b559][_0x6853('0x6f')]()){var _0xb58013=util[_0x6853('0x70')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x213013);if(_0x213013===0x1){_0xb58013=_0x6853('0x71');}throw new db['Sequelize'][(_0x6853('0x6a'))](_0xb58013);}}return;};exports[_0x6853('0x72')]=function(_0x33744e,_0x1fbea0){var _0x1acd1d=_0x1fbea0?encryptor[_0x6853('0x6d')](_0x1fbea0)[_0x6853('0x6e')](','):[];if(_0x1acd1d[_0x6853('0x73')]===0x5){_0x1acd1d[_0x6853('0x74')](-0x1,0x1);}_0x1acd1d[_0x6853('0x75')](_0x33744e);return encryptor[_0x6853('0x76')](_0x1acd1d[_0x6853('0x77')](','));};function signJwt(_0x2da92d){var _0x65cbe5=BPromise[_0x6853('0x78')](jwt[_0x6853('0x79')],{'context':jwt});var _0xab9f59=_0x2da92d[_0x6853('0x7a')]||config[_0x6853('0xc')][_0x6853('0x7b')];return new BPromise(function(_0x34fc6b,_0xc8b1c9){_0x65cbe5(_0x2da92d['payload'],_0xab9f59,_0x2da92d[_0x6853('0x7c')])['then'](function(_0x36c358){_0x34fc6b(_0x36c358);})[_0x6853('0x53')](function(_0x180e50){_0xc8b1c9(_0x180e50);});});}function verifyJwt(_0x59c7ef,_0x209942,_0x3eb4ab){var _0x57beb5=BPromise[_0x6853('0x78')](jwt[_0x6853('0x7d')],{'context':jwt});var _0x6593b4=_0x3eb4ab||config[_0x6853('0xc')][_0x6853('0x7b')];return new BPromise(function(_0x11fe2e,_0x30c6cd){_0x57beb5(_0x59c7ef,_0x6593b4,_0x209942)['then'](function(_0x2f4984){_0x11fe2e(_0x2f4984);})[_0x6853('0x53')](function(_0x2a91b2){_0x30c6cd(_0x2a91b2);});});}function generateNonce(){return crypto[_0x6853('0x7e')](0x10)[_0x6853('0x7f')](_0x6853('0x80'));}function generateIssuedAt(){return Math['floor'](Date[_0x6853('0x81')]()/0x3e8)[_0x6853('0x7f')]();}function createJwt(_0x5e25a4){var _0x3b873d={'payload':{'iat':_0x5e25a4[_0x6853('0x65')],'nonce':_0x5e25a4[_0x6853('0x64')]},'options':{'algorithm':_0x6853('0x82'),'subject':_0x5e25a4['id']['toString'](),'issuer':hardwareConf[_0x6853('0x47')](),'audience':hardwareConf[_0x6853('0x47')]()}};return signJwt(_0x3b873d)['then'](function(_0x23a96b){return{'iat':_0x5e25a4[_0x6853('0x65')],'nonce':_0x5e25a4[_0x6853('0x64')],'token':_0x23a96b};});}
\ No newline at end of file
+var _0x6b24=['options','promisify','verify','randomBytes','toString','hex','floor','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','crypto','bluebird','util','moment','session','role','fullname','internal','email','userpic','permissions','voicePause','chatPause','smsPause','openchannelPause','pauseType','showWebBar','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadOmnichannelInteractions','isChatInteractionAuthorized','isAuthenticated','use','user','findOne','params','closed','disposition','then','status','unmanaged','Unmanaged.','Forbidden.','headers','authorization','startsWith','Basic','find','name','authenticate','pass','json','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','apikey','getUuid','query','Setting','allowedLoginAttempts','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','catch','User','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isMiddleware','signToken','setTokenCookie','redirect','/dashboards/general','send','isNil','apiKeyIat','regenerateApiKey','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~!@#$%^&-_=+[{]}.','split','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','decryptString','length','join','sign','secrets','payload'];(function(_0x3d8ca8,_0x1a9764){var _0x517e45=function(_0x641ad9){while(--_0x641ad9){_0x3d8ca8['push'](_0x3d8ca8['shift']());}};_0x517e45(++_0x1a9764);}(_0x6b24,0x100));var _0x46b2=function(_0x4108e9,_0x58da63){_0x4108e9=_0x4108e9-0x0;var _0x369cc4=_0x6b24[_0x4108e9];return _0x369cc4;};'use strict';var db=require(_0x46b2('0x0'))['db'];var config=require(_0x46b2('0x1'));var hardwareConf=require(_0x46b2('0x2'));var licenseUtil=require(_0x46b2('0x3'));var encryptor=require('../encryptor');var _=require(_0x46b2('0x4'));var jwt=require(_0x46b2('0x5'));var expressJwt=require(_0x46b2('0x6'));var compose=require(_0x46b2('0x7'));var basicAuth=require('basic-auth');var crypto=require(_0x46b2('0x8'));var BPromise=require(_0x46b2('0x9'));var util=require(_0x46b2('0xa'));var moment=require(_0x46b2('0xb'));var validateJwt=expressJwt({'secret':config['secrets'][_0x46b2('0xc')]});var userAttributes=['id',_0x46b2('0xd'),_0x46b2('0xe'),'name',_0x46b2('0xf'),_0x46b2('0x10'),_0x46b2('0x11'),_0x46b2('0x12'),'md5secret',_0x46b2('0x13'),_0x46b2('0x14'),'mailPause','faxPause',_0x46b2('0x15'),_0x46b2('0x16'),_0x46b2('0x17'),_0x46b2('0x18'),'lastLoginAt',_0x46b2('0x19'),_0x46b2('0x1a'),_0x46b2('0x1b'),_0x46b2('0x1c'),_0x46b2('0x1d'),_0x46b2('0x1e'),_0x46b2('0x1f'),_0x46b2('0x20'),_0x46b2('0x21'),'phoneBarEnableDtmfTone',_0x46b2('0x22'),_0x46b2('0x23'),_0x46b2('0x24'),_0x46b2('0x25'),'phoneBarRemoteControlPort',_0x46b2('0x26'),_0x46b2('0x27'),_0x46b2('0x28'),_0x46b2('0x29'),_0x46b2('0x2a'),_0x46b2('0x2b'),'downloadVoiceRecordings',_0x46b2('0x2c'),'downloadAttachments'];exports[_0x46b2('0x2d')]=function(){return this[_0x46b2('0x2e')](!![])[_0x46b2('0x2f')](function(_0x2a489a,_0x3a7935,_0x3d60d4){if(_0x2a489a[_0x46b2('0x30')]){_0x3d60d4();}else{return db['ChatInteraction'][_0x46b2('0x31')]({'where':{'id':_0x2a489a[_0x46b2('0x32')]['id']},'attributes':['id',_0x46b2('0x33'),_0x46b2('0x34')],'raw':!![]})[_0x46b2('0x35')](function(_0x29c8ce){if(_0x29c8ce&&_0x29c8ce[_0x46b2('0x33')]){return _0x3a7935[_0x46b2('0x36')](_0x29c8ce[_0x46b2('0x34')]==='unmanaged'?0x195:0x193)['json']({'message':_0x29c8ce[_0x46b2('0x34')]===_0x46b2('0x37')?_0x46b2('0x38'):_0x46b2('0x39')});}else{_0x3d60d4();}})['catch'](function(_0x41bc0a){_0x3d60d4(_0x41bc0a);});}});};exports[_0x46b2('0x2e')]=function isAuthenticated(_0x2db8ba){return compose()[_0x46b2('0x2f')](function(_0x43b54b,_0x4b26bd,_0x48728f){var _0x344ff6;if(_0x43b54b[_0x46b2('0x3a')][_0x46b2('0x3b')]){if(_[_0x46b2('0x3c')](_0x43b54b[_0x46b2('0x3a')]['authorization'],_0x46b2('0x3d'))){var _0x2780aa=basicAuth(_0x43b54b);db['User'][_0x46b2('0x3e')]({'where':{'name':_0x2780aa[_0x46b2('0x3f')]}})[_0x46b2('0x35')](function(_0x5ad77d){if(!_0x5ad77d||!_0x5ad77d[_0x46b2('0x40')](_0x2780aa[_0x46b2('0x41')])){return _0x4b26bd[_0x46b2('0x36')](0x191)[_0x46b2('0x42')]({'message':_0x46b2('0x43')});}_0x43b54b['user']={'id':_0x5ad77d['id']};_0x48728f();})['catch'](function(_0x565b51){_0x48728f(_0x565b51);});}else if(_[_0x46b2('0x3c')](_0x43b54b['headers'][_0x46b2('0x3b')],_0x46b2('0x44'))){validateJwt(_0x43b54b,_0x4b26bd,_0x48728f);}else{if(_0x2db8ba){_0x48728f();}else{return _0x4b26bd[_0x46b2('0x36')](0x193)[_0x46b2('0x42')]({'message':_0x46b2('0x45')});}}}else if(_0x43b54b['query'][_0x46b2('0x46')]){try{var _0x44b646={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x46b2('0x47')]()};verifyJwt(_0x43b54b[_0x46b2('0x48')][_0x46b2('0x46')],_0x44b646)['then'](function(_0x582577){return db['User']['find']({'where':{'id':_0x582577['sub']}})[_0x46b2('0x35')](function(_0x1d8656){_0x344ff6=_0x1d8656;return db[_0x46b2('0x49')][_0x46b2('0x31')]({'where':{'id':0x1},'attributes':[_0x46b2('0x4a'),_0x46b2('0x4b')],'raw':!![]});})[_0x46b2('0x35')](function(_0x379ff5){if(!_0x344ff6||!_['isEqual'](_0x344ff6[_0x46b2('0x4c')],_0x582577[_0x46b2('0x4d')])){return _0x4b26bd[_0x46b2('0x36')](0x191)[_0x46b2('0x42')]({'message':_0x46b2('0x4e')});}if(_0x344ff6['disabled']){return _0x4b26bd[_0x46b2('0x36')](0x191)['json']({'message':_0x46b2('0x4f')});}if(_0x344ff6[_0x46b2('0x50')]){if(_0x379ff5['blockDuration']>0x0){if(moment(_0x344ff6[_0x46b2('0x51')])[_0x46b2('0x52')](_0x379ff5[_0x46b2('0x4b')],_0x46b2('0x53'))>moment()){return _0x4b26bd[_0x46b2('0x36')](0x191)[_0x46b2('0x42')]({'message':_0x46b2('0x4f')});}}else{return _0x4b26bd[_0x46b2('0x36')](0x191)[_0x46b2('0x42')]({'message':_0x46b2('0x4f')});}}_0x43b54b[_0x46b2('0x30')]={'id':_0x344ff6['id']};_0x48728f();});})[_0x46b2('0x54')](function(){return _0x4b26bd[_0x46b2('0x36')](0x191)[_0x46b2('0x42')]({'message':_0x46b2('0x4f')});});}catch(_0x8b3ffc){_0x48728f(_0x8b3ffc);}}else if(_0x2db8ba){_0x48728f();}else{return _0x4b26bd['status'](0x193)['json']({'message':_0x46b2('0x45')});}})[_0x46b2('0x2f')](function(_0x1baf63,_0x160846,_0x191a0f){if(_0x1baf63['user']){db[_0x46b2('0x55')][_0x46b2('0x3e')]({'where':{'id':_0x1baf63[_0x46b2('0x30')]['id']},'attributes':userAttributes})[_0x46b2('0x35')](function(_0x373be6){if(!_0x373be6){return _0x160846['status'](0x194)[_0x46b2('0x42')]({'message':_0x46b2('0x56')});}_0x1baf63['user']=_0x373be6;_0x191a0f();})[_0x46b2('0x54')](function(_0x149b9f){_0x191a0f(_0x149b9f);});}else if(_0x2db8ba){_0x191a0f();}else{return _0x160846[_0x46b2('0x36')](0x194)[_0x46b2('0x42')]({'message':_0x46b2('0x57')});}});};exports[_0x46b2('0x58')]=function canUpdate(){return compose()[_0x46b2('0x2f')](function(_0xbb664c,_0x26d422,_0x1f05c3){return licenseUtil[_0x46b2('0x59')]()[_0x46b2('0x35')](function(_0x33dc1e){if(_0x33dc1e['update']){_0x1f05c3();}else{return _0x26d422[_0x46b2('0x36')](0x193)[_0x46b2('0x42')]({'message':_0x46b2('0x5a')});}})[_0x46b2('0x54')](function(_0x21ee53){_0x1f05c3(_0x21ee53);});});};exports[_0x46b2('0x5b')]=function(_0x75e128,_0x1857a9,_0x88fc0c){_0x75e128[_0x46b2('0x5b')]=!![];return _0x88fc0c();};exports[_0x46b2('0x5c')]=function signToken(_0x541fc9){return signJwt(_0x541fc9);};exports[_0x46b2('0x5d')]=function(_0x100a0e,_0x5b9869){if(!_0x100a0e[_0x46b2('0x30')]){return _0x5b9869[_0x46b2('0x36')](0x194)['json']({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x2888a5={'payload':{'id':_0x100a0e['user']['id'],'role':_0x100a0e[_0x46b2('0x30')][_0x46b2('0xd')]},'options':{'expiresIn':0x15180}};return signJwt(_0x2888a5)[_0x46b2('0x35')](function(_0x47de5f){_0x5b9869['cookie']('motion.token',_0x47de5f);_0x5b9869[_0x46b2('0x5e')](_0x46b2('0x5f'));})[_0x46b2('0x54')](function(_0x355238){return _0x5b9869[_0x46b2('0x36')](0x1f4)[_0x46b2('0x60')](_0x355238);});};exports['retrieveApiKey']=function(_0x3618f4){if(_['isNil'](_0x3618f4[_0x46b2('0x4c')])||_[_0x46b2('0x61')](_0x3618f4[_0x46b2('0x62')])){return null;}else{return createJwt(_0x3618f4);}};exports['generateApiKey']=function(_0x116af2){_0x116af2[_0x46b2('0x4c')]=generateNonce();_0x116af2[_0x46b2('0x62')]=generateIssuedAt();return createJwt(_0x116af2);};exports[_0x46b2('0x63')]=function(_0x1235a7,_0x31965f){var _0x1e204c=_0x1235a7[_0x46b2('0x48')][_0x46b2('0x46')];if(_0x1e204c){var _0xf8b028={'nonce':_0x31965f[_0x46b2('0x4c')],'iat':_0x31965f[_0x46b2('0x62')],'audience':hardwareConf[_0x46b2('0x47')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x1e204c,_0xf8b028)[_0x46b2('0x35')](function(){return generateApiKey(_0x31965f);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x46b2('0x64')]=function(_0x581617){var _0x383acd=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x383acd[_0x46b2('0x65')](_0x581617))throw new db[(_0x46b2('0x66'))][(_0x46b2('0x67'))](_0x46b2('0x68'));return;};exports['validatePasswordHistory']=function(_0x1f2dfa,_0x5e2b10,_0x162518){var _0x20dfc8=encryptor['decryptString'](_0x5e2b10)[_0x46b2('0x69')](',');for(var _0x6c8746=0x0;_0x6c8746<_0x162518;_0x6c8746++){if(!_0x20dfc8[_0x6c8746])break;if(_0x1f2dfa['toLowerCase']()===_0x20dfc8[_0x6c8746]['toLowerCase']()){var _0x1f7038=util[_0x46b2('0x6a')](_0x46b2('0x6b'),_0x162518);if(_0x162518===0x1){_0x1f7038=_0x46b2('0x6c');}throw new db['Sequelize'][(_0x46b2('0x67'))](_0x1f7038);}}return;};exports[_0x46b2('0x6d')]=function(_0x1983a4,_0x5ebef4){var _0x4ca4d=_0x5ebef4?encryptor[_0x46b2('0x6e')](_0x5ebef4)[_0x46b2('0x69')](','):[];if(_0x4ca4d[_0x46b2('0x6f')]===0x5){_0x4ca4d['splice'](-0x1,0x1);}_0x4ca4d['unshift'](_0x1983a4);return encryptor['encryptString'](_0x4ca4d[_0x46b2('0x70')](','));};function signJwt(_0x34dc07){var _0x103ebd=BPromise['promisify'](jwt[_0x46b2('0x71')],{'context':jwt});var _0x46e44d=_0x34dc07['secret']||config[_0x46b2('0x72')]['session'];return new BPromise(function(_0x4eb147,_0xfc3d5e){_0x103ebd(_0x34dc07[_0x46b2('0x73')],_0x46e44d,_0x34dc07[_0x46b2('0x74')])[_0x46b2('0x35')](function(_0x4100bb){_0x4eb147(_0x4100bb);})[_0x46b2('0x54')](function(_0x381ed7){_0xfc3d5e(_0x381ed7);});});}function verifyJwt(_0x37e308,_0x29b312,_0x2ecddd){var _0x3bddbc=BPromise[_0x46b2('0x75')](jwt[_0x46b2('0x76')],{'context':jwt});var _0x5972d1=_0x2ecddd||config[_0x46b2('0x72')]['session'];return new BPromise(function(_0xe334a6,_0x13a892){_0x3bddbc(_0x37e308,_0x5972d1,_0x29b312)[_0x46b2('0x35')](function(_0x4a1c10){_0xe334a6(_0x4a1c10);})['catch'](function(_0x10a0cd){_0x13a892(_0x10a0cd);});});}function generateNonce(){return crypto[_0x46b2('0x77')](0x10)[_0x46b2('0x78')](_0x46b2('0x79'));}function generateIssuedAt(){return Math[_0x46b2('0x7a')](Date['now']()/0x3e8)[_0x46b2('0x78')]();}function createJwt(_0x3c80f0){var _0x453dd0={'payload':{'iat':_0x3c80f0[_0x46b2('0x62')],'nonce':_0x3c80f0['apiKeyNonce']},'options':{'algorithm':_0x46b2('0x7b'),'subject':_0x3c80f0['id']['toString'](),'issuer':hardwareConf[_0x46b2('0x47')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x453dd0)[_0x46b2('0x35')](function(_0x450628){return{'iat':_0x3c80f0[_0x46b2('0x62')],'nonce':_0x3c80f0[_0x46b2('0x4c')],'token':_0x450628};});}
\ No newline at end of file
index 15f6382..0e755ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ca7=['aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','data','update','write','end','final','binary','close','unlink','decryptFile','createWriteStream','createDecipher','encryptString','secret','utf8','base64','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr'];(function(_0x4de377,_0x2badfc){var _0xaffd72=function(_0x586974){while(--_0x586974){_0x4de377['push'](_0x4de377['shift']());}};_0xaffd72(++_0x2badfc);}(_0x4ca7,0xcf));var _0x74ca=function(_0x1e7517,_0x16adb3){_0x1e7517=_0x1e7517-0x0;var _0x5e79c2=_0x4ca7[_0x1e7517];return _0x5e79c2;};'use strict';var crypto=require(_0x74ca('0x0'));var fs=require('fs');var BPromise=require(_0x74ca('0x1'));var _=require(_0x74ca('0x2'));var config=require(_0x74ca('0x3'));var logger=require(_0x74ca('0x4'))(_0x74ca('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x74ca('0x6')][_0x74ca('0x7')],'algorithm':_0x74ca('0x8')};const fileOptions={'algorithm':_0x74ca('0x9')};if(config[_0x74ca('0xa')]&&config['encrypt'][_0x74ca('0xb')]){var isSupported=isAlgorithmSupported(config[_0x74ca('0xa')][_0x74ca('0xb')]);if(isSupported){fileOptions[_0x74ca('0xb')]=config[_0x74ca('0xa')][_0x74ca('0xb')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x74ca('0xc')](',\x20');logger[_0x74ca('0xd')](config[_0x74ca('0xa')]['algorithm'],_0x74ca('0xe'),supportedAlgorithms);}}function isASupportedCipher(_0x522e3d){return AES_SUPPORTED_RX['test'](_0x522e3d);}function getSupportedCiphers(){return crypto[_0x74ca('0xf')]()[_0x74ca('0x10')](isASupportedCipher);}function isAlgorithmSupported(_0x5db127){return getSupportedCiphers()[_0x74ca('0x11')](_0x5db127)>-0x1;}function combineOptions(_0x55ecf8){var _0x32f7a1={};for(var _0x5f28d8 in fileOptions){if(fileOptions['hasOwnProperty'](_0x5f28d8)){_0x32f7a1[_0x5f28d8]=fileOptions[_0x5f28d8];}}if(_0x55ecf8){for(var _0x2a3749 in _0x55ecf8){if(_0x55ecf8[_0x74ca('0x12')](_0x2a3749)){_0x32f7a1[_0x2a3749]=_0x55ecf8[_0x2a3749];}}}return _0x32f7a1;}exports[_0x74ca('0x13')]=function(_0x2e9356,_0x4b36f8,_0x46f45e,_0x246f74){return new BPromise(function(_0x1e920e,_0x25326e){_0x246f74=combineOptions(_0x246f74);var _0x445b07=new Buffer(_0x46f45e);var _0x556207=fs[_0x74ca('0x14')](_0x2e9356);var _0x262925=fs['createWriteStream'](_0x4b36f8);var _0x1ed9b1=crypto['createCipher'](_0x246f74[_0x74ca('0xb')],_0x445b07);_0x556207['on'](_0x74ca('0x15'),function(_0x4d75ed){var _0x1d9971=new Buffer(_0x1ed9b1[_0x74ca('0x16')](_0x4d75ed),'binary');_0x262925[_0x74ca('0x17')](_0x1d9971);});_0x556207['on'](_0x74ca('0x18'),function(){try{var _0x2b3d13=new Buffer(_0x1ed9b1[_0x74ca('0x19')]('binary'),_0x74ca('0x1a'));_0x262925[_0x74ca('0x17')](_0x2b3d13);_0x262925[_0x74ca('0x18')]();_0x262925['on'](_0x74ca('0x1b'),function(){return _0x1e920e(_0x4b36f8);});}catch(_0xe394c5){fs[_0x74ca('0x1c')](_0x4b36f8);return _0x25326e(_0xe394c5);}});});};exports[_0x74ca('0x1d')]=function(_0x2f61c5,_0x241f22,_0x2b2c40,_0x22e13b){return new BPromise(function(_0x451ef9,_0x3aea8a){_0x22e13b=combineOptions(_0x22e13b);var _0x3d4bd5=new Buffer(_0x2b2c40);var _0x11ce1a=fs[_0x74ca('0x14')](_0x2f61c5);var _0x29997b=fs[_0x74ca('0x1e')](_0x241f22);var _0x513b11=crypto[_0x74ca('0x1f')](_0x22e13b[_0x74ca('0xb')],_0x3d4bd5);_0x11ce1a['on'](_0x74ca('0x15'),function(_0x12cd1c){var _0x3bbd3a=new Buffer(_0x513b11[_0x74ca('0x16')](_0x12cd1c),'binary');_0x29997b[_0x74ca('0x17')](_0x3bbd3a);});_0x11ce1a['on'](_0x74ca('0x18'),function(){try{var _0x130055=new Buffer(_0x513b11['final'](_0x74ca('0x1a')),'binary');_0x29997b['write'](_0x130055);_0x29997b[_0x74ca('0x18')]();_0x29997b['on'](_0x74ca('0x1b'),function(){return _0x451ef9(_0x241f22);});}catch(_0x40a6c1){fs[_0x74ca('0x1c')](_0x241f22);return _0x3aea8a(_0x40a6c1);}});});};exports[_0x74ca('0x20')]=function(_0x322c04,_0x24ac06,_0x435a47){var _0x36715d=_0x435a47||stringOptions[_0x74ca('0xb')];var _0xc6807f=_0x24ac06||stringOptions[_0x74ca('0x21')];var _0x2f325a=crypto['createCipher'](_0x36715d,_0xc6807f);var _0x59ed1c=_0x2f325a[_0x74ca('0x16')](_0x322c04,_0x74ca('0x22'),_0x74ca('0x23'));_0x59ed1c+=_0x2f325a['final'](_0x74ca('0x23'));return _0x59ed1c;};exports['decryptString']=function(_0x454190,_0x557963,_0x36aad2){var _0x36384b=_0x36aad2||stringOptions[_0x74ca('0xb')];var _0x5dbc41=_0x557963||stringOptions[_0x74ca('0x21')];var _0x1fc066=crypto['createDecipher'](_0x36384b,_0x5dbc41);var _0x3a1daf=_0x1fc066[_0x74ca('0x16')](_0x454190,_0x74ca('0x23'),_0x74ca('0x22'));_0x3a1daf+=_0x1fc066[_0x74ca('0x19')](_0x74ca('0x22'));return _0x3a1daf;};
\ No newline at end of file
+var _0xefc5=['write','end','unlink','decryptFile','createDecipher','final','close','secret','base64','decryptString','utf8','bluebird','../../config/logger','app','aes-256-ctr','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty','createReadStream','createWriteStream','createCipher','data','update','binary'];(function(_0x43796f,_0xbe5069){var _0x280b3=function(_0x173e28){while(--_0x173e28){_0x43796f['push'](_0x43796f['shift']());}};_0x280b3(++_0xbe5069);}(_0xefc5,0x83));var _0x5efc=function(_0x46ec32,_0x1e842f){_0x46ec32=_0x46ec32-0x0;var _0x338f60=_0xefc5[_0x46ec32];return _0x338f60;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x5efc('0x0'));var _=require('lodash');var config=require('../../config/environment');var logger=require(_0x5efc('0x1'))(_0x5efc('0x2'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets']['session'],'algorithm':_0x5efc('0x3')};const fileOptions={'algorithm':_0x5efc('0x4')};if(config[_0x5efc('0x5')]&&config[_0x5efc('0x5')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0x5efc('0x5')][_0x5efc('0x6')]);if(isSupported){fileOptions['algorithm']=config[_0x5efc('0x5')][_0x5efc('0x6')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x5efc('0x7')](',\x20');logger['error'](config[_0x5efc('0x5')]['algorithm'],_0x5efc('0x8'),supportedAlgorithms);}}function isASupportedCipher(_0x20585c){return AES_SUPPORTED_RX[_0x5efc('0x9')](_0x20585c);}function getSupportedCiphers(){return crypto[_0x5efc('0xa')]()[_0x5efc('0xb')](isASupportedCipher);}function isAlgorithmSupported(_0x2671dd){return getSupportedCiphers()['indexOf'](_0x2671dd)>-0x1;}function combineOptions(_0xf1af1){var _0x3e7bdc={};for(var _0x19cf7c in fileOptions){if(fileOptions['hasOwnProperty'](_0x19cf7c)){_0x3e7bdc[_0x19cf7c]=fileOptions[_0x19cf7c];}}if(_0xf1af1){for(var _0x384e66 in _0xf1af1){if(_0xf1af1[_0x5efc('0xc')](_0x384e66)){_0x3e7bdc[_0x384e66]=_0xf1af1[_0x384e66];}}}return _0x3e7bdc;}exports['encryptFile']=function(_0x328b40,_0x11dc15,_0x5f5889,_0x3ea69e){return new BPromise(function(_0x24a1ef,_0x2e1ad7){_0x3ea69e=combineOptions(_0x3ea69e);var _0x55a21b=new Buffer(_0x5f5889);var _0x30ad99=fs[_0x5efc('0xd')](_0x328b40);var _0x454e46=fs[_0x5efc('0xe')](_0x11dc15);var _0x27f38b=crypto[_0x5efc('0xf')](_0x3ea69e[_0x5efc('0x6')],_0x55a21b);_0x30ad99['on'](_0x5efc('0x10'),function(_0x67fcd5){var _0x2ace86=new Buffer(_0x27f38b[_0x5efc('0x11')](_0x67fcd5),_0x5efc('0x12'));_0x454e46[_0x5efc('0x13')](_0x2ace86);});_0x30ad99['on'](_0x5efc('0x14'),function(){try{var _0x468160=new Buffer(_0x27f38b['final'](_0x5efc('0x12')),_0x5efc('0x12'));_0x454e46[_0x5efc('0x13')](_0x468160);_0x454e46[_0x5efc('0x14')]();_0x454e46['on']('close',function(){return _0x24a1ef(_0x11dc15);});}catch(_0xd99d6e){fs[_0x5efc('0x15')](_0x11dc15);return _0x2e1ad7(_0xd99d6e);}});});};exports[_0x5efc('0x16')]=function(_0x293664,_0x1af32c,_0x19a2cf,_0x1cb888){return new BPromise(function(_0x4b7f24,_0x7e5f04){_0x1cb888=combineOptions(_0x1cb888);var _0x35fc59=new Buffer(_0x19a2cf);var _0x362bf9=fs[_0x5efc('0xd')](_0x293664);var _0x369e53=fs[_0x5efc('0xe')](_0x1af32c);var _0x10804e=crypto[_0x5efc('0x17')](_0x1cb888['algorithm'],_0x35fc59);_0x362bf9['on']('data',function(_0x3f6ff4){var _0x5387f0=new Buffer(_0x10804e['update'](_0x3f6ff4),_0x5efc('0x12'));_0x369e53[_0x5efc('0x13')](_0x5387f0);});_0x362bf9['on'](_0x5efc('0x14'),function(){try{var _0xdba9ef=new Buffer(_0x10804e[_0x5efc('0x18')](_0x5efc('0x12')),_0x5efc('0x12'));_0x369e53[_0x5efc('0x13')](_0xdba9ef);_0x369e53[_0x5efc('0x14')]();_0x369e53['on'](_0x5efc('0x19'),function(){return _0x4b7f24(_0x1af32c);});}catch(_0x35c1b7){fs[_0x5efc('0x15')](_0x1af32c);return _0x7e5f04(_0x35c1b7);}});});};exports['encryptString']=function(_0x15cd17,_0x2671fd,_0x4c7c7c){var _0x5ef4bd=_0x4c7c7c||stringOptions[_0x5efc('0x6')];var _0x8f19b1=_0x2671fd||stringOptions[_0x5efc('0x1a')];var _0x4f45df=crypto[_0x5efc('0xf')](_0x5ef4bd,_0x8f19b1);var _0x1f9065=_0x4f45df[_0x5efc('0x11')](_0x15cd17,'utf8',_0x5efc('0x1b'));_0x1f9065+=_0x4f45df['final'](_0x5efc('0x1b'));return _0x1f9065;};exports[_0x5efc('0x1c')]=function(_0x32331e,_0xee0b0f,_0x324ddf){var _0x57ab43=_0x324ddf||stringOptions[_0x5efc('0x6')];var _0x25f806=_0xee0b0f||stringOptions[_0x5efc('0x1a')];var _0x12862d=crypto[_0x5efc('0x17')](_0x57ab43,_0x25f806);var _0x373105=_0x12862d[_0x5efc('0x11')](_0x32331e,'base64',_0x5efc('0x1d'));_0x373105+=_0x12862d[_0x5efc('0x18')](_0x5efc('0x1d'));return _0x373105;};
\ No newline at end of file
index b3a0ad4..e9f2888 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae8=['forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','query','dirname','basename','.csv','existsSync','join','%s%d.%s','%s.%s','csv','writeFileSync','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','util','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','info','format','CSV','Setting','find','split','then','splitSizeCsv','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','isInteger'];(function(_0x38f5f8,_0xefe164){var _0x34e820=function(_0x3a2407){while(--_0x3a2407){_0x38f5f8['push'](_0x38f5f8['shift']());}};_0x34e820(++_0xefe164);}(_0x6ae8,0xa2));var _0x86ae=function(_0x571714,_0x30d2b3){_0x571714=_0x571714-0x0;var _0x599a14=_0x6ae8[_0x571714];return _0x599a14;};'use strict';var util=require(_0x86ae('0x0'));var path=require('path');var _=require(_0x86ae('0x1'));var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0x86ae('0x2'));var zipdir=require(_0x86ae('0x3'));var rimraf=require(_0x86ae('0x4'));var db=require(_0x86ae('0x5'))['db'];var dbH=require('../../mysqldb')[_0x86ae('0x6')];var logger=require(_0x86ae('0x7'))(_0x86ae('0x8'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x86ae('0x9')][0x3];var PATH=process[_0x86ae('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x131e51,_0x53cb67){var _0x3557f7={'status':_0x131e51};var _0x26981a={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x53cb67){_0x3557f7['savename']=_0x53cb67;}return db['AnalyticExtractedReport']['update'](_0x3557f7,_0x26981a);}function main(){var _0x6cfc8c=0x1388;var _0x436977;logger[_0x86ae('0xa')](util[_0x86ae('0xb')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x86ae('0xc')));return db[_0x86ae('0xd')][_0x86ae('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x86ae('0xf'),'splitSizeCsv']})[_0x86ae('0x10')](function(_0x3f4c3e){if(_0x3f4c3e){_0x436977=_0x3f4c3e;_0x6cfc8c=_0x436977[_0x86ae('0x11')]||0x1388;}})[_0x86ae('0x10')](function(){return dbH[_0x86ae('0x12')]['query'](util['format'](_0x86ae('0x13'),QUERY),{'type':dbH[_0x86ae('0x12')][_0x86ae('0x14')][_0x86ae('0x15')]});})[_0x86ae('0x10')](function(_0x73fab5){if(!_0x73fab5[0x0][_0x86ae('0x16')]){return analyticExtractedReport(_0x86ae('0x17'));}var _0x2f39c9=[];var _0x49a75e=0x0;if(_0x436977[_0x86ae('0xf')]){if(_0x73fab5&&_0x73fab5[_0x86ae('0x18')]){var _0x540980=_['range'](_0x73fab5[0x0][_0x86ae('0x16')]/_0x6cfc8c);var _0x151cd1=Number[_0x86ae('0x19')](_0x73fab5[0x0][_0x86ae('0x16')]/_0x6cfc8c)?_0x73fab5[0x0][_0x86ae('0x16')]%_0x6cfc8c:0x0;_0x540980[_0x86ae('0x1a')](function(_0x38a259){if(_0x38a259>0x0){_0x49a75e+=_0x6cfc8c;}_0x2f39c9[_0x86ae('0x1b')](dbH[_0x86ae('0x12')]['query'](util['format'](_0x86ae('0x1c'),QUERY,_0x6cfc8c,_0x49a75e),{'type':dbH[_0x86ae('0x12')]['QueryTypes'][_0x86ae('0x15')]}));});if(_0x151cd1>0x0){_0x49a75e+=_0x6cfc8c;_0x2f39c9[_0x86ae('0x1b')](dbH[_0x86ae('0x12')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x151cd1,_0x49a75e),{'type':dbH[_0x86ae('0x12')][_0x86ae('0x14')][_0x86ae('0x15')]}));}}}else{_0x2f39c9[_0x86ae('0x1b')](dbH[_0x86ae('0x12')][_0x86ae('0x1d')](QUERY,{'type':dbH[_0x86ae('0x12')][_0x86ae('0x14')]['SELECT']}));}var _0x48ce04=path[_0x86ae('0x1e')](PATH);var _0x21f4cc=path[_0x86ae('0x1f')](PATH,_0x86ae('0x20'));var _0x900a26=_0x436977['split']&&_0x2f39c9[_0x86ae('0x18')]>0x1;var _0x1ef061=[];if(!fs[_0x86ae('0x21')](path[_0x86ae('0x22')](_0x48ce04,_0x21f4cc))&&_0x900a26){fs['mkdirSync'](path['join'](_0x48ce04,_0x21f4cc));}return BPromise['each'](_0x2f39c9,function(_0x2748fa){_0x1ef061[_0x86ae('0x1b')](_0x2748fa);})['then'](function(){for(var _0xb13681=0x0;_0xb13681<_0x1ef061[_0x86ae('0x18')];_0xb13681+=0x1){var _0xe3d1db;var _0x47b596=_0x1ef061[_0xb13681];if(_0x900a26){_0xe3d1db=path[_0x86ae('0x22')](_0x48ce04,_0x21f4cc,util[_0x86ae('0xb')](_0x86ae('0x23'),_0x21f4cc,_0xb13681,'csv'));}else{_0xe3d1db=path[_0x86ae('0x22')](_0x48ce04,util['format'](_0x86ae('0x24'),_0x21f4cc,_0x86ae('0x25')));}fs[_0x86ae('0x26')](_0xe3d1db,csv(_0x47b596));}})[_0x86ae('0x10')](function(){if(_0x900a26){return new Promise(function(_0x4723a9){zipdir(path[_0x86ae('0x22')](_0x48ce04,_0x21f4cc),{'saveTo':path[_0x86ae('0x22')](_0x48ce04,util[_0x86ae('0xb')]('%s.%s',_0x21f4cc,_0x86ae('0x27')))},function(_0x1c7300,_0x37f02c){rimraf(path[_0x86ae('0x22')](_0x48ce04,_0x21f4cc),function(){});_0x4723a9('zip\x20finished');});});}})[_0x86ae('0x10')](function(){logger['info'](util[_0x86ae('0xb')](_0x86ae('0x28'),EXTRACTED_REPORT_ID,_0x86ae('0xc')));return analyticExtractedReport(_0x86ae('0x29'),_0x900a26?util[_0x86ae('0xb')](_0x86ae('0x24'),_0x21f4cc,_0x900a26?_0x86ae('0x27'):_0x86ae('0x25')):null);});})[_0x86ae('0x2a')](function(_0x587786){logger[_0x86ae('0xa')](util[_0x86ae('0xb')](_0x86ae('0x2b'),EXTRACTED_REPORT_ID,_0x86ae('0xc')),util[_0x86ae('0x2c')](_0x587786,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x86ae('0x2d'));})['finally'](function(){process[_0x86ae('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x7341=['sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','push','basename','.csv','existsSync','join','csv','%s.%s','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','finally','exit','lodash','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then'];(function(_0x420b24,_0x382adc){var _0x4da552=function(_0x4e1623){while(--_0x4e1623){_0x420b24['push'](_0x420b24['shift']());}};_0x4da552(++_0x382adc);}(_0x7341,0xe4));var _0x1734=function(_0x55597f,_0x2fcd09){_0x55597f=_0x55597f-0x0;var _0x54aad4=_0x7341[_0x55597f];return _0x54aad4;};'use strict';var util=require('util');var path=require('path');var _=require(_0x1734('0x0'));var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0x1734('0x1'));var zipdir=require(_0x1734('0x2'));var rimraf=require('rimraf');var db=require(_0x1734('0x3'))['db'];var dbH=require(_0x1734('0x3'))[_0x1734('0x4')];var logger=require(_0x1734('0x5'))(_0x1734('0x6'));var EXTRACTED_REPORT_ID=Number(process[_0x1734('0x7')][0x2]);var QUERY=process[_0x1734('0x7')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1ca30b,_0x2c223d){var _0x45c529={'status':_0x1ca30b};var _0x5b8977={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2c223d){_0x45c529[_0x1734('0x8')]=_0x2c223d;}return db['AnalyticExtractedReport']['update'](_0x45c529,_0x5b8977);}function main(){var _0x55b846=0x1388;var _0xcf0632;logger[_0x1734('0x9')](util[_0x1734('0xa')](_0x1734('0xb'),EXTRACTED_REPORT_ID,_0x1734('0xc')));return db[_0x1734('0xd')][_0x1734('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x1734('0xf'),_0x1734('0x10')]})['then'](function(_0x4391a1){if(_0x4391a1){_0xcf0632=_0x4391a1;_0x55b846=_0xcf0632[_0x1734('0x10')]||0x1388;}})[_0x1734('0x11')](function(){return dbH[_0x1734('0x12')][_0x1734('0x13')](util[_0x1734('0xa')](_0x1734('0x14'),QUERY),{'type':dbH[_0x1734('0x12')][_0x1734('0x15')][_0x1734('0x16')]});})[_0x1734('0x11')](function(_0x27679e){if(!_0x27679e[0x0][_0x1734('0x17')]){return analyticExtractedReport(_0x1734('0x18'));}var _0x3989a6=[];var _0x24bbf3=0x0;var _0x2b375d=!![];if(_0x27679e&&_0x27679e[_0x1734('0x19')]){var _0x414b7c=_0x27679e[0x0]['num']%(_0x24bbf3+_0x55b846);if(_0xcf0632['split']){for(;_0x2b375d;_0x24bbf3+=_0x55b846,_0x414b7c=_0x27679e[0x0][_0x1734('0x17')]%(_0x24bbf3+_0x55b846)){if(_0x414b7c==0x0||_0x414b7c==_0x27679e[0x0][_0x1734('0x17')]){_0x2b375d=![];}_0x3989a6['push'](dbH[_0x1734('0x12')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x55b846,_0x24bbf3),{'type':dbH[_0x1734('0x12')]['QueryTypes'][_0x1734('0x16')]}));}}else{_0x3989a6[_0x1734('0x1a')](dbH['sequelize']['query'](QUERY,{'type':dbH['sequelize'][_0x1734('0x15')]['SELECT']}));}}var _0x183f7a=path['dirname'](PATH);var _0x215ae4=path[_0x1734('0x1b')](PATH,_0x1734('0x1c'));var _0x27d1a4=_0xcf0632[_0x1734('0xf')]&&_0x3989a6[_0x1734('0x19')]>0x1;var _0x4285ee=[];if(!fs[_0x1734('0x1d')](path[_0x1734('0x1e')](_0x183f7a,_0x215ae4))&&_0x27d1a4){fs['mkdirSync'](path[_0x1734('0x1e')](_0x183f7a,_0x215ae4));}return BPromise['each'](_0x3989a6,function(_0x5e0023){_0x4285ee[_0x1734('0x1a')](_0x5e0023);})[_0x1734('0x11')](function(){for(var _0x309d3f=0x0;_0x309d3f<_0x4285ee[_0x1734('0x19')];_0x309d3f+=0x1){var _0x4435ac;var _0x2a95e3=_0x4285ee[_0x309d3f];if(_0x27d1a4){_0x4435ac=path[_0x1734('0x1e')](_0x183f7a,_0x215ae4,util[_0x1734('0xa')]('%s%d.%s',_0x215ae4,_0x309d3f,_0x1734('0x1f')));}else{_0x4435ac=path['join'](_0x183f7a,util[_0x1734('0xa')](_0x1734('0x20'),_0x215ae4,_0x1734('0x1f')));}fs['writeFileSync'](_0x4435ac,csv(_0x2a95e3));}})[_0x1734('0x11')](function(){if(_0x27d1a4){zipdir(path[_0x1734('0x1e')](_0x183f7a,_0x215ae4),{'saveTo':path[_0x1734('0x1e')](_0x183f7a,util['format'](_0x1734('0x20'),_0x215ae4,_0x1734('0x21')))},function(_0x5594c0,_0x1bd659){});rimraf(path[_0x1734('0x1e')](_0x183f7a,_0x215ae4),function(){});}})[_0x1734('0x11')](function(){logger[_0x1734('0x9')](util['format'](_0x1734('0x22'),EXTRACTED_REPORT_ID,_0x1734('0xc')));return analyticExtractedReport('Completed',_0x27d1a4?util['format'](_0x1734('0x20'),_0x215ae4,_0x27d1a4?_0x1734('0x21'):_0x1734('0x1f')):null);});})[_0x1734('0x23')](function(_0x2c95d2){logger[_0x1734('0x9')](util[_0x1734('0xa')](_0x1734('0x24'),EXTRACTED_REPORT_ID,_0x1734('0xc')),util[_0x1734('0x25')](_0x2c95d2,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x1734('0x26'));})[_0x1734('0x27')](function(){process[_0x1734('0x28')](EXIT_CODE);});}main();
\ No newline at end of file
index 33a93f9..d3b8d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9fa=['util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','tableHeader','map','pick','toString','length','auto','body','chunk','keys','forEach','push','format','name','startDate','endDate','header','pageBreak','before','margin','footer','num','Empty','Setting','find','splitSizePdf','then','split','range','sequelize','query','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','.pdf','existsSync','join','mkdirSync','flatten','createPdfKitDocument','pdf','%s.%s','zip','zip\x20finished','info','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','YYYY-MM-DD','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash'];(function(_0x1970da,_0x1343e7){var _0x23aa5d=function(_0x39e3e2){while(--_0x39e3e2){_0x1970da['push'](_0x1970da['shift']());}};_0x23aa5d(++_0x1343e7);}(_0xe9fa,0xbb));var _0xae9f=function(_0x5de02a,_0x31f96e){_0x5de02a=_0x5de02a-0x0;var _0x31c50b=_0xe9fa[_0x5de02a];return _0x31c50b;};'use strict';var _=require(_0xae9f('0x0'));var fs=require('fs');var util=require(_0xae9f('0x1'));var path=require(_0xae9f('0x2'));var moment=require(_0xae9f('0x3'));var htmlToPdfmake=require(_0xae9f('0x4'));var PdfPrinter=require(_0xae9f('0x5'));var zipdir=require(_0xae9f('0x6'));var rimraf=require(_0xae9f('0x7'));var JSDOM=require(_0xae9f('0x8'))[_0xae9f('0x9')];var window=new JSDOM('')[_0xae9f('0xa')];var BPromise=require(_0xae9f('0xb'));var db=require(_0xae9f('0xc'))['db'];var dbH=require(_0xae9f('0xc'))[_0xae9f('0xd')];var logger=require(_0xae9f('0xe'))(_0xae9f('0xf'));var EXTRACTED_REPORT_ID=Number(process[_0xae9f('0x10')][0x2]);var QUERY=process[_0xae9f('0x10')][0x3];var PATH=process[_0xae9f('0x10')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0xae9f('0x11');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3905c2,_0x11699e){var _0x570551={'status':_0x3905c2};var _0x3352dd={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x11699e){_0x570551[_0xae9f('0x12')]=_0x11699e;}return db[_0xae9f('0x13')]['update'](_0x570551,_0x3352dd);}function getHeaders(_0x131de6){return _['map'](_0x131de6,function(_0x51e96d){return{'text':_0x51e96d,'style':_0xae9f('0x14')};});}function getRows(_0x66524b,_0x2a95a1){return _[_0xae9f('0x15')](_0x2a95a1,function(_0x458810){return _(_0x458810)[_0xae9f('0x16')](_0x66524b)['map'](function(_0x2b24de){return _0x2b24de?_[_0xae9f('0x17')](_0x2b24de):'';})['value']();});}function createTable(_0x12ba1a,_0x2b2663){var _0x46b1f5={'widths':_['fill'](Array(_0x12ba1a[_0xae9f('0x18')]),0x91),'heights':function(_0x76cb9f){return _0x76cb9f===0x0?_0xae9f('0x19'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x26f9bc=getHeaders(_0x12ba1a);_0x46b1f5[_0xae9f('0x1a')]['push'](_0x26f9bc);var _0x3d3a07=getRows(_0x12ba1a,_0x2b2663);_0x46b1f5[_0xae9f('0x1a')]=_0x46b1f5[_0xae9f('0x1a')]['concat'](_0x3d3a07);return _0x46b1f5;}function createTables(_0x7eef24){var _0x5597aa=[];var _0x34e11e=_[_0xae9f('0x1b')](Object[_0xae9f('0x1c')](_0x7eef24[0x0]),0x5);_0x34e11e[_0xae9f('0x1d')](function(_0x27c16d){_0x5597aa[_0xae9f('0x1e')](createTable(_0x27c16d,_0x7eef24));});return _0x5597aa;}function getPDFDocDefinition(_0x3a4e85){var _0x10cbb9=util[_0xae9f('0x1f')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0xae9f('0x20')],moment(EXTRACTED_REPORT[_0xae9f('0x21')])[_0xae9f('0x1f')](FORMAT),moment(EXTRACTED_REPORT[_0xae9f('0x22')])[_0xae9f('0x1f')](FORMAT));var _0x2ba083=[];for(var _0x222c1d=0x0;_0x222c1d<_0x3a4e85[_0xae9f('0x18')];_0x222c1d++){var _0x1d2b03=[];if(_0x222c1d===0x0){_0x1d2b03[_0xae9f('0x1e')]({'text':_0x10cbb9,'style':_0xae9f('0x23')});}var _0x594f0f={'table':_0x3a4e85[_0x222c1d]};if(_0x222c1d>0x0){_0x594f0f[_0xae9f('0x24')]=_0xae9f('0x25');_0x594f0f[_0xae9f('0x26')]=[0x0,0x46,0x0,0x0];}_0x1d2b03[_0xae9f('0x1e')](_0x594f0f);_0x2ba083[_0xae9f('0x1e')](_0x1d2b03);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x2ba083,'footer':function(_0x2cb9c7,_0x371e7a){return{'text':_0x2cb9c7[_0xae9f('0x17')]()+'\x20/\x20'+_0x371e7a,'style':_0xae9f('0x27')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x1427d7){var _0x464d24=0x1388;var _0x1413b2;if(!_0x1427d7[0x0][_0xae9f('0x28')]){return analyticExtractedReport(_0xae9f('0x29'));}return db[_0xae9f('0x2a')][_0xae9f('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xae9f('0x2c')]})[_0xae9f('0x2d')](function(_0x161b4c){if(_0x161b4c){_0x1413b2=_0x161b4c;_0x464d24=_0x1413b2['splitSizePdf']||0x3e8;}})[_0xae9f('0x2d')](function(){var _0x45f13e=[];var _0x19f1d7=0x0;if(_0x1413b2[_0xae9f('0x2e')]){if(_0x1427d7&&_0x1427d7[_0xae9f('0x18')]){var _0xb9f876=_[_0xae9f('0x2f')](_0x1427d7[0x0][_0xae9f('0x28')]/_0x464d24);var _0x5b82d1=Number['isInteger'](_0x1427d7[0x0][_0xae9f('0x28')]/_0x464d24)?_0x1427d7[0x0]['num']%_0x464d24:0x0;_0xb9f876['forEach'](function(_0x4835fe){if(_0x4835fe>0x0){_0x19f1d7+=_0x464d24;}_0x45f13e[_0xae9f('0x1e')](dbH[_0xae9f('0x30')][_0xae9f('0x31')](util[_0xae9f('0x1f')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x464d24,_0x19f1d7),{'type':dbH[_0xae9f('0x30')]['QueryTypes'][_0xae9f('0x32')]}));});if(_0x5b82d1>0x0){_0x19f1d7+=_0x464d24;_0x45f13e[_0xae9f('0x1e')](dbH[_0xae9f('0x30')][_0xae9f('0x31')](util[_0xae9f('0x1f')](_0xae9f('0x33'),QUERY,_0x5b82d1,_0x19f1d7),{'type':dbH['sequelize'][_0xae9f('0x34')][_0xae9f('0x32')]}));}}}else{_0x45f13e[_0xae9f('0x1e')](dbH[_0xae9f('0x30')][_0xae9f('0x31')](QUERY,{'type':dbH[_0xae9f('0x30')][_0xae9f('0x34')][_0xae9f('0x32')]}));}var _0xcdd7a7=path[_0xae9f('0x35')](PATH);var _0x13092c=path[_0xae9f('0x36')](PATH,_0xae9f('0x37'));var _0x45633d=_0x1413b2[_0xae9f('0x2e')]&&_0x45f13e[_0xae9f('0x18')]>0x1;var _0x40a8f3=[];if(!fs[_0xae9f('0x38')](path[_0xae9f('0x39')](_0xcdd7a7,_0x13092c))&&_0x45633d){fs[_0xae9f('0x3a')](path[_0xae9f('0x39')](_0xcdd7a7,_0x13092c));}return BPromise['each'](_0x45f13e,function(_0x1dc125){_0x40a8f3['push'](_0x1dc125);})[_0xae9f('0x2d')](function(){var _0x54b20b=[];for(var _0x2eb739=0x0;_0x2eb739<_0x40a8f3[_0xae9f('0x18')];_0x2eb739+=0x1){var _0x1a0f79=_0x40a8f3[_0x2eb739];var _0x46d019=createTables(_[_0xae9f('0x3b')](_0x1a0f79));var _0x446bd5;var _0x39513e=getPDFDocDefinition(_0x46d019);var _0xfb2197=getPDFPrinter();var _0x2cfec8=_0xfb2197[_0xae9f('0x3c')](_0x39513e);if(_0x45633d){_0x446bd5=path[_0xae9f('0x39')](_0xcdd7a7,_0x13092c,util[_0xae9f('0x1f')]('%s%d.%s',_0x13092c,_0x2eb739,_0xae9f('0x3d')));}else{_0x446bd5=path['join'](_0xcdd7a7,util[_0xae9f('0x1f')](_0xae9f('0x3e'),_0x13092c,_0xae9f('0x3d')));}_0x54b20b['push'](writePDFDocument(_0x2cfec8,_0x446bd5));}return Promise['all'](_0x54b20b);})['then'](function(){if(_0x45633d){return new Promise(function(_0x5989b0){zipdir(path[_0xae9f('0x39')](_0xcdd7a7,_0x13092c),{'saveTo':path['join'](_0xcdd7a7,util[_0xae9f('0x1f')](_0xae9f('0x3e'),_0x13092c,_0xae9f('0x3f')))},function(){rimraf(path[_0xae9f('0x39')](_0xcdd7a7,_0x13092c),function(){});_0x5989b0(_0xae9f('0x40'));});});}})[_0xae9f('0x2d')](function(){if(!_0x45633d)return;rimraf(path[_0xae9f('0x39')](_0xcdd7a7,_0x13092c),function(){});})[_0xae9f('0x2d')](function(){logger[_0xae9f('0x41')](util[_0xae9f('0x1f')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xae9f('0x42')));return analyticExtractedReport(_0xae9f('0x43'),_0x45633d?util[_0xae9f('0x1f')]('%s.%s',_0x13092c,_0x45633d?_0xae9f('0x3f'):_0xae9f('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xae9f('0x41')](util[_0xae9f('0x1f')](_0xae9f('0x44'),EXTRACTED_REPORT_ID,_0xae9f('0x42')));return db[_0xae9f('0x13')][_0xae9f('0x45')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xae9f('0x2d')](function(_0x2bf8e4){EXTRACTED_REPORT=_0x2bf8e4;return dbH[_0xae9f('0x30')]['query'](util[_0xae9f('0x1f')](_0xae9f('0x46'),QUERY),{'type':dbH[_0xae9f('0x30')][_0xae9f('0x34')]['SELECT']});})[_0xae9f('0x2d')](extractReport)[_0xae9f('0x47')](function(_0x3a4f1){logger['info'](util[_0xae9f('0x1f')](_0xae9f('0x48'),EXTRACTED_REPORT_ID,_0xae9f('0x42')),util[_0xae9f('0x49')](_0x3a4f1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xae9f('0x4a'));})[_0xae9f('0x4b')](function(){process[_0xae9f('0x4c')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x5896aa=new PdfPrinter({'Arial':{'normal':__dirname+_0xae9f('0x4d'),'bold':__dirname+_0xae9f('0x4e'),'italics':__dirname+_0xae9f('0x4f'),'bolditalics':__dirname+_0xae9f('0x50')}});return _0x5896aa;}function getPDFDocDefinitionFromHTML(_0x4fc99c,_0x41c004){var _0x7ebd11=util['format'](_0xae9f('0x51'),_0x41c004[_0xae9f('0x52')],_0x41c004['interactionId']);var _0xeeed3=moment()[_0xae9f('0x1f')](_0xae9f('0x53'))[_0xae9f('0x17')]();var _0x4480ba=htmlToPdfmake(_0x4fc99c,{'window':window,'tableAutoSize':!![]});return{'content':[_0x4480ba],'defaultStyle':{'font':_0xae9f('0x54')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xae9f('0x55'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0xae9f('0x56'),'style':_0xae9f('0x23')}];},'footer':function(_0x3e6b8a,_0x3fa90f){return[{'text':util[_0xae9f('0x1f')](_0xae9f('0x57'),_0x7ebd11,_0x3e6b8a,_0x3fa90f,_0xeeed3),'style':_0xae9f('0x27')}];}};}function writePDFDocument(_0x533999,_0x2d1910){return new Promise(function(_0x55041c,_0x468fcb){var _0x129482=_0x533999[_0xae9f('0x58')](fs[_0xae9f('0x59')](_0x2d1910));_0x129482['on'](_0xae9f('0x5a'),function(){_0x55041c('finish');});_0x129482['on'](_0xae9f('0x5b'),function(_0x12dfe0){_0x468fcb(_0x12dfe0);});_0x533999[_0xae9f('0x5c')]();});}exports[_0xae9f('0x5d')]=function(_0x27c812,_0x131f4b){var _0xf563bd=getPDFPrinter();var _0x5e4de6=getPDFDocDefinitionFromHTML(_0x27c812,_0x131f4b);var _0x2a0fc5=_0xf563bd['createPdfKitDocument'](_0x5e4de6);return writePDFDocument(_0x2a0fc5,_0x131f4b[_0xae9f('0x2')])[_0xae9f('0x47')](function(_0x5ec4dd){throw _0x5ec4dd;});};
\ No newline at end of file
+var _0x26a8=['then','num','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','split','existsSync','mkdirSync','flatten','createPdfKitDocument','%s%d.%s','zip','info','PDF','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','%s\x20#%d','channel','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','end','createPdfFromHTML','lodash','util','path','pdfmake/src/printer','rimraf','window','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','map','tableHeader','pick','toString','value','fill','length','auto','push','body','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','header','pageBreak','margin','landscape','footer','Arial','black','Empty','dirname','basename','.pdf','join','%s.%s','pdf','Setting','find','splitSizePdf'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x26a8,0x1b1));var _0x826a=function(_0x8a14b2,_0x4a15c7){_0x8a14b2=_0x8a14b2-0x0;var _0x35dc8e=_0x26a8[_0x8a14b2];return _0x35dc8e;};'use strict';var _=require(_0x826a('0x0'));var fs=require('fs');var util=require(_0x826a('0x1'));var path=require(_0x826a('0x2'));var moment=require('moment');var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x826a('0x3'));var zipdir=require('zip-dir');var rimraf=require(_0x826a('0x4'));var JSDOM=require('jsdom')['JSDOM'];var window=new JSDOM('')[_0x826a('0x5')];var db=require(_0x826a('0x6'))['db'];var dbH=require(_0x826a('0x6'))[_0x826a('0x7')];var logger=require(_0x826a('0x8'))(_0x826a('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x826a('0xa')][0x2]);var QUERY=process[_0x826a('0xa')][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3001ef,_0x2d7db5){var _0x2c3ee={'status':_0x3001ef};var _0x4aed5d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2d7db5){_0x2c3ee['savename']=_0x2d7db5;}return db[_0x826a('0xb')]['update'](_0x2c3ee,_0x4aed5d);}function getHeaders(_0x450d93){return _[_0x826a('0xc')](_0x450d93,function(_0x273a0f){return{'text':_0x273a0f,'style':_0x826a('0xd')};});}function getRows(_0x1cdba2,_0x495cc8){return _[_0x826a('0xc')](_0x495cc8,function(_0x5a7b10){return _(_0x5a7b10)[_0x826a('0xe')](_0x1cdba2)[_0x826a('0xc')](function(_0x216159){return _0x216159?_[_0x826a('0xf')](_0x216159):'';})[_0x826a('0x10')]();});}function createTable(_0x4928e3,_0x507a1e){var _0x37710d={'widths':_[_0x826a('0x11')](Array(_0x4928e3[_0x826a('0x12')]),0x91),'heights':function(_0xc39b2f){return _0xc39b2f===0x0?_0x826a('0x13'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x35f3f6=getHeaders(_0x4928e3);_0x37710d['body'][_0x826a('0x14')](_0x35f3f6);var _0xff2fd4=getRows(_0x4928e3,_0x507a1e);_0x37710d[_0x826a('0x15')]=_0x37710d[_0x826a('0x15')][_0x826a('0x16')](_0xff2fd4);return _0x37710d;}function createTables(_0x29eb85){var _0x27b088=[];var _0x2336f3=_[_0x826a('0x17')](Object[_0x826a('0x18')](_0x29eb85[0x0]),0x5);_0x2336f3[_0x826a('0x19')](function(_0x5a6bd4){_0x27b088[_0x826a('0x14')](createTable(_0x5a6bd4,_0x29eb85));});return _0x27b088;}function getPDFDocDefinition(_0x3de85d){var _0x3b200e=util[_0x826a('0x1a')](_0x826a('0x1b'),NAME,EXTRACTED_REPORT[_0x826a('0x1c')],moment(EXTRACTED_REPORT[_0x826a('0x1d')])[_0x826a('0x1a')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x528e03=[];for(var _0x12ef6f=0x0;_0x12ef6f<_0x3de85d[_0x826a('0x12')];_0x12ef6f++){var _0xcc3418=[];if(_0x12ef6f===0x0){_0xcc3418[_0x826a('0x14')]({'text':_0x3b200e,'style':_0x826a('0x1e')});}var _0x12d50d={'table':_0x3de85d[_0x12ef6f]};if(_0x12ef6f>0x0){_0x12d50d[_0x826a('0x1f')]='before';_0x12d50d[_0x826a('0x20')]=[0x0,0x46,0x0,0x0];}_0xcc3418['push'](_0x12d50d);_0x528e03[_0x826a('0x14')](_0xcc3418);}return{'pageSize':'A4','pageOrientation':_0x826a('0x21'),'content':_0x528e03,'footer':function(_0x52f9c6,_0x418631){return{'text':_0x52f9c6[_0x826a('0xf')]()+'\x20/\x20'+_0x418631,'style':_0x826a('0x22')};},'defaultStyle':{'font':_0x826a('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x826a('0x24')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4d2814){var _0x46fa3c=0x1388;var _0x1b4727;if(!_0x4d2814[0x0]['num']){return analyticExtractedReport(_0x826a('0x25'));}var _0x337bb4=[];var _0xac271=0x0;var _0x550919=!![];var _0x44d490=path[_0x826a('0x26')](PATH);var _0x31a64d=path[_0x826a('0x27')](PATH,_0x826a('0x28'));var _0x515bbe=path[_0x826a('0x29')](_0x44d490,util[_0x826a('0x1a')](_0x826a('0x2a'),_0x31a64d,_0x826a('0x2b')));var _0x39895e=![];return db[_0x826a('0x2c')][_0x826a('0x2d')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizePdf']})['then'](function(_0x37a670){if(_0x37a670){_0x1b4727=_0x37a670;_0x46fa3c=_0x1b4727[_0x826a('0x2e')]||0x3e8;}})[_0x826a('0x2f')](function(){if(_0x4d2814&&_0x4d2814['length']){var _0x1e43f9=_0x4d2814[0x0][_0x826a('0x30')]%(_0xac271+_0x46fa3c);if(_0x1b4727['split']){for(;_0x550919;_0xac271+=_0x46fa3c,_0x1e43f9=_0x4d2814[0x0]['num']%(_0xac271+_0x46fa3c)){if(_0x1e43f9==0x0||_0x1e43f9==_0x4d2814[0x0][_0x826a('0x30')]){_0x550919=![];}_0x337bb4['push'](dbH['sequelize'][_0x826a('0x31')](util[_0x826a('0x1a')](_0x826a('0x32'),QUERY,_0x46fa3c,_0xac271),{'type':dbH[_0x826a('0x33')][_0x826a('0x34')][_0x826a('0x35')]}));}}else{_0x337bb4['push'](dbH['sequelize'][_0x826a('0x31')](QUERY,{'type':dbH[_0x826a('0x33')][_0x826a('0x34')][_0x826a('0x35')]}));}}_0x39895e=_0x1b4727[_0x826a('0x36')]&&_0x337bb4[_0x826a('0x12')]>0x1;if(!fs[_0x826a('0x37')](path['join'](_0x44d490,_0x31a64d))&&_0x39895e){fs[_0x826a('0x38')](path['join'](_0x44d490,_0x31a64d));}return Promise['all'](_0x337bb4);})[_0x826a('0x2f')](function(_0x4a39d2){return createTables(_[_0x826a('0x39')](_0x4a39d2));})[_0x826a('0x2f')](function(_0x4e560d){var _0x312ad6=getPDFDocDefinition(_0x4e560d);var _0x5de80e=getPDFPrinter();var _0x575584=_0x5de80e[_0x826a('0x3a')](_0x312ad6);if(_0x39895e)_0x515bbe=path[_0x826a('0x29')](_0x44d490,_0x31a64d,util[_0x826a('0x1a')](_0x826a('0x3b'),_0x31a64d,index,_0x826a('0x2b')));return writePDFDocument(_0x575584,_0x515bbe);})[_0x826a('0x2f')](function(){if(!_0x39895e)return;zipdir(path[_0x826a('0x29')](_0x44d490,_0x31a64d),{'saveTo':path[_0x826a('0x29')](_0x44d490,util[_0x826a('0x1a')]('%s.%s',_0x31a64d,_0x826a('0x3c')))},function(_0x3f8445){if(_0x3f8445)throw _0x3f8445;return;});})['then'](function(){if(!_0x39895e)return;rimraf(path[_0x826a('0x29')](_0x44d490,_0x31a64d),function(){});})[_0x826a('0x2f')](function(){logger[_0x826a('0x3d')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport('Completed',_0x39895e?util[_0x826a('0x1a')]('%s.%s',_0x31a64d,_0x39895e?_0x826a('0x3c'):'pdf'):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x826a('0x3d')](util[_0x826a('0x1a')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x826a('0x3e')));return db[_0x826a('0xb')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x2665d0){EXTRACTED_REPORT=_0x2665d0;return dbH[_0x826a('0x33')][_0x826a('0x31')](util[_0x826a('0x1a')](_0x826a('0x3f'),QUERY),{'type':dbH[_0x826a('0x33')][_0x826a('0x34')][_0x826a('0x35')]});})[_0x826a('0x2f')](extractReport)[_0x826a('0x40')](function(_0x1019a7){logger[_0x826a('0x3d')](util['format'](_0x826a('0x41'),EXTRACTED_REPORT_ID,_0x826a('0x3e')),util[_0x826a('0x42')](_0x1019a7,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x826a('0x43')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x520094=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x826a('0x44'),'italics':__dirname+_0x826a('0x45'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x520094;}function getPDFDocDefinitionFromHTML(_0x186fba,_0x4c190d){var _0x17b2ba=util['format'](_0x826a('0x46'),_0x4c190d[_0x826a('0x47')],_0x4c190d['interactionId']);var _0x2af3aa=moment()[_0x826a('0x1a')](_0x826a('0x48'))[_0x826a('0xf')]();var _0x568d44=htmlToPdfmake(_0x186fba,{'window':window,'tableAutoSize':!![]});return{'content':[_0x568d44],'defaultStyle':{'font':_0x826a('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x826a('0x49'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x826a('0x49'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x826a('0x49')}},'header':function(){return[{'text':_0x826a('0x4a'),'style':_0x826a('0x1e')}];},'footer':function(_0xb363ad,_0x2bf4c5){return[{'text':util[_0x826a('0x1a')](_0x826a('0x4b'),_0x17b2ba,_0xb363ad,_0x2bf4c5,_0x2af3aa),'style':_0x826a('0x22')}];}};}function writePDFDocument(_0x2098d5,_0x33aac2){return new Promise(function(_0x388f14,_0x1c6fac){var _0xe629d0=_0x2098d5[_0x826a('0x4c')](fs['createWriteStream'](_0x33aac2));_0xe629d0['on'](_0x826a('0x4d'),function(){_0x388f14('finish');});_0xe629d0['on']('error',function(_0x373ac6){_0x1c6fac(_0x373ac6);});_0x2098d5[_0x826a('0x4e')]();});}exports[_0x826a('0x4f')]=function(_0x4f03ac,_0x40521a){var _0x32de70=getPDFPrinter();var _0x16494a=getPDFDocDefinitionFromHTML(_0x4f03ac,_0x40521a);var _0x4c5970=_0x32de70[_0x826a('0x3a')](_0x16494a);return writePDFDocument(_0x4c5970,_0x40521a[_0x826a('0x2')])[_0x826a('0x40')](function(_0x377ed1){throw _0x377ed1;});};
\ No newline at end of file
index 4977ead..ba36113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea0=['../../config/logger','analytics','argv','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','num','Empty','length','isInteger','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','.xlsx','existsSync','join','mkdirSync','format','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','util','lodash','zip-dir','../../mysqldb','dbH'];(function(_0x456fb1,_0x859a1d){var _0x4083d6=function(_0xe1d0f2){while(--_0xe1d0f2){_0x456fb1['push'](_0x456fb1['shift']());}};_0x4083d6(++_0x859a1d);}(_0x4ea0,0x8e));var _0x04ea=function(_0x3d13bb,_0x262a54){_0x3d13bb=_0x3d13bb-0x0;var _0x4b5a1b=_0x4ea0[_0x3d13bb];return _0x4b5a1b;};'use strict';var util=require(_0x04ea('0x0'));var path=require('path');var _=require(_0x04ea('0x1'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require('bluebird');var zipdir=require(_0x04ea('0x2'));var rimraf=require('rimraf');var db=require(_0x04ea('0x3'))['db'];var dbH=require(_0x04ea('0x3'))[_0x04ea('0x4')];var logger=require(_0x04ea('0x5'))(_0x04ea('0x6'));var EXTRACTED_REPORT_ID=Number(process[_0x04ea('0x7')][0x2]);var QUERY=process[_0x04ea('0x7')][0x3];var PATH=process[_0x04ea('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x374244,_0x4be120){var _0x465e4f={'status':_0x374244};var _0x1dbcdc={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4be120){_0x465e4f['savename']=_0x4be120;}return db[_0x04ea('0x8')][_0x04ea('0x9')](_0x465e4f,_0x1dbcdc);}function main(){var _0x235918=0x1388;var _0x5d1c16;logger[_0x04ea('0xa')](util['format'](_0x04ea('0xb'),EXTRACTED_REPORT_ID,_0x04ea('0xc')));return db[_0x04ea('0xd')][_0x04ea('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x04ea('0xf'),_0x04ea('0x10')]})['then'](function(_0x5b657e){if(_0x5b657e){_0x5d1c16=_0x5b657e;_0x235918=_0x5d1c16[_0x04ea('0x10')]||0x1388;}})[_0x04ea('0x11')](function(){return dbH[_0x04ea('0x12')][_0x04ea('0x13')](util['format'](_0x04ea('0x14'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x04ea('0x15')]});})[_0x04ea('0x11')](function(_0x489327){if(!_0x489327[0x0][_0x04ea('0x16')]){return analyticExtractedReport(_0x04ea('0x17'));}var _0x1ea37f=[];var _0x3165f7=0x0;if(_0x5d1c16[_0x04ea('0xf')]){if(_0x489327&&_0x489327[_0x04ea('0x18')]){var _0x203af7=_['range'](_0x489327[0x0]['num']/_0x235918);var _0x52c45d=Number[_0x04ea('0x19')](_0x489327[0x0][_0x04ea('0x16')]/_0x235918)?_0x489327[0x0]['num']%_0x235918:0x0;_0x203af7['forEach'](function(_0x5da437){if(_0x5da437>0x0){_0x3165f7+=_0x235918;}_0x1ea37f[_0x04ea('0x1a')](dbH[_0x04ea('0x12')]['query'](util['format'](_0x04ea('0x1b'),QUERY,_0x235918,_0x3165f7),{'type':dbH['sequelize'][_0x04ea('0x1c')][_0x04ea('0x15')]}));});if(_0x52c45d>0x0){_0x3165f7+=_0x235918;_0x1ea37f[_0x04ea('0x1a')](dbH[_0x04ea('0x12')][_0x04ea('0x13')](util['format'](_0x04ea('0x1b'),QUERY,_0x52c45d,_0x3165f7),{'type':dbH[_0x04ea('0x12')][_0x04ea('0x1c')][_0x04ea('0x15')]}));}}}else{_0x1ea37f[_0x04ea('0x1a')](dbH[_0x04ea('0x12')]['query'](QUERY,{'type':dbH[_0x04ea('0x12')][_0x04ea('0x1c')][_0x04ea('0x15')]}));}var _0x2acadd=path[_0x04ea('0x1d')](PATH);var _0x257f8c=path[_0x04ea('0x1e')](PATH,_0x04ea('0x1f'));var _0x207907=_0x5d1c16[_0x04ea('0xf')]&&_0x1ea37f['length']>0x1;var _0x22049f=[];if(!fs[_0x04ea('0x20')](path[_0x04ea('0x21')](_0x2acadd,_0x257f8c))&&_0x207907){fs[_0x04ea('0x22')](path['join'](_0x2acadd,_0x257f8c));}return BPromise['each'](_0x1ea37f,function(_0x38864b){_0x22049f[_0x04ea('0x1a')](_0x38864b);})['then'](function(){for(var _0x56e30f=0x0;_0x56e30f<_0x22049f[_0x04ea('0x18')];_0x56e30f+=0x1){var _0x76dded;var _0x2d4981=_0x22049f[_0x56e30f];if(_0x207907){_0x76dded=path[_0x04ea('0x21')](_0x2acadd,_0x257f8c,util[_0x04ea('0x23')](_0x04ea('0x24'),_0x257f8c,_0x56e30f,_0x04ea('0x25')));}else{_0x76dded=path['join'](_0x2acadd,util[_0x04ea('0x23')](_0x04ea('0x26'),_0x257f8c,'xlsx'));}fs[_0x04ea('0x27')](_0x76dded,json2xls(_0x2d4981),_0x04ea('0x28'));}})[_0x04ea('0x11')](function(){if(_0x207907){return new Promise(function(_0x1f0de6){zipdir(path[_0x04ea('0x21')](_0x2acadd,_0x257f8c),{'saveTo':path[_0x04ea('0x21')](_0x2acadd,util[_0x04ea('0x23')]('%s.%s',_0x257f8c,_0x04ea('0x29')))},function(_0x118d86,_0x53b6c2){rimraf(path[_0x04ea('0x21')](_0x2acadd,_0x257f8c),function(){});_0x1f0de6(_0x04ea('0x2a'));});});}})['then'](function(){logger[_0x04ea('0xa')](util[_0x04ea('0x23')](_0x04ea('0x2b'),EXTRACTED_REPORT_ID,_0x04ea('0xc')));return analyticExtractedReport(_0x04ea('0x2c'),_0x207907?util[_0x04ea('0x23')]('%s.%s',_0x257f8c,_0x207907?_0x04ea('0x29'):'xlsx'):null);});})['catch'](function(_0x175f16){logger[_0x04ea('0xa')](util[_0x04ea('0x23')](_0x04ea('0x2d'),EXTRACTED_REPORT_ID,_0x04ea('0xc')),util[_0x04ea('0x2e')](_0x175f16,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x04ea('0x2f'));})[_0x04ea('0x30')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x5c4f=['%s.%s','zip','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','util','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','sequelize','QueryTypes','SELECT','then','num','Empty','length','query','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','.xlsx','join','mkdirSync','%s%d.%s','xlsx','writeFileSync','binary'];(function(_0xe524df,_0x4e81b6){var _0xc3fedf=function(_0x1b7127){while(--_0x1b7127){_0xe524df['push'](_0xe524df['shift']());}};_0xc3fedf(++_0x4e81b6);}(_0x5c4f,0xf3));var _0xf5c4=function(_0x4661f6,_0x1b94eb){_0x4661f6=_0x4661f6-0x0;var _0x40d1e6=_0x5c4f[_0x4661f6];return _0x40d1e6;};'use strict';var util=require(_0xf5c4('0x0'));var path=require('path');var _=require(_0xf5c4('0x1'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0xf5c4('0x2'));var zipdir=require(_0xf5c4('0x3'));var rimraf=require(_0xf5c4('0x4'));var db=require(_0xf5c4('0x5'))['db'];var dbH=require('../../mysqldb')[_0xf5c4('0x6')];var logger=require(_0xf5c4('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xf5c4('0x8')][0x2]);var QUERY=process[_0xf5c4('0x8')][0x3];var PATH=process[_0xf5c4('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x25e42b,_0x157865){var _0x1dc3cc={'status':_0x25e42b};var _0x29063f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x157865){_0x1dc3cc[_0xf5c4('0x9')]=_0x157865;}return db[_0xf5c4('0xa')][_0xf5c4('0xb')](_0x1dc3cc,_0x29063f);}function main(){var _0x48ba49=0x1388;var _0x50626e;logger[_0xf5c4('0xc')](util[_0xf5c4('0xd')](_0xf5c4('0xe'),EXTRACTED_REPORT_ID,_0xf5c4('0xf')));return db[_0xf5c4('0x10')][_0xf5c4('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf5c4('0x12'),_0xf5c4('0x13')]})['then'](function(_0xb16fee){if(_0xb16fee){_0x50626e=_0xb16fee;_0x48ba49=_0x50626e['splitSizeXlsx']||0x1388;}})['then'](function(){return dbH['sequelize']['query'](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xf5c4('0x14')][_0xf5c4('0x15')][_0xf5c4('0x16')]});})[_0xf5c4('0x17')](function(_0x3eec56){if(!_0x3eec56[0x0][_0xf5c4('0x18')]){return analyticExtractedReport(_0xf5c4('0x19'));}var _0x1d1087=[];var _0xfa2310=0x0;var _0x448f07=!![];if(_0x50626e[_0xf5c4('0x12')]){if(_0x3eec56&&_0x3eec56[_0xf5c4('0x1a')]){var _0x47ada1=_0x3eec56[0x0]['num']%(_0xfa2310+_0x48ba49);for(;_0x448f07;_0xfa2310+=_0x48ba49,_0x47ada1=_0x3eec56[0x0][_0xf5c4('0x18')]%(_0xfa2310+_0x48ba49)){if(_0x47ada1==0x0||_0x47ada1==_0x3eec56[0x0][_0xf5c4('0x18')]){_0x448f07=![];}_0x1d1087['push'](dbH[_0xf5c4('0x14')][_0xf5c4('0x1b')](util[_0xf5c4('0xd')](_0xf5c4('0x1c'),QUERY,_0x48ba49,_0xfa2310),{'type':dbH[_0xf5c4('0x14')][_0xf5c4('0x15')]['SELECT']}));}}}else{_0x1d1087[_0xf5c4('0x1d')](dbH[_0xf5c4('0x14')]['query'](QUERY,{'type':dbH[_0xf5c4('0x14')]['QueryTypes']['SELECT']}));}var _0x4b42d6=path[_0xf5c4('0x1e')](PATH);var _0x4d10dd=path[_0xf5c4('0x1f')](PATH,_0xf5c4('0x20'));var _0x20a0ee=_0x50626e[_0xf5c4('0x12')]&&_0x1d1087[_0xf5c4('0x1a')]>0x1;var _0x40d1bc=[];if(!fs['existsSync'](path[_0xf5c4('0x21')](_0x4b42d6,_0x4d10dd))&&_0x20a0ee){fs[_0xf5c4('0x22')](path[_0xf5c4('0x21')](_0x4b42d6,_0x4d10dd));}return BPromise['each'](_0x1d1087,function(_0x424976){_0x40d1bc['push'](_0x424976);})[_0xf5c4('0x17')](function(){for(var _0x49f5f6=0x0;_0x49f5f6<_0x40d1bc['length'];_0x49f5f6+=0x1){var _0x5a659a;var _0x57f379=_0x40d1bc[_0x49f5f6];if(_0x20a0ee){_0x5a659a=path['join'](_0x4b42d6,_0x4d10dd,util[_0xf5c4('0xd')](_0xf5c4('0x23'),_0x4d10dd,_0x49f5f6,'xlsx'));}else{_0x5a659a=path['join'](_0x4b42d6,util[_0xf5c4('0xd')]('%s.%s',_0x4d10dd,_0xf5c4('0x24')));}fs[_0xf5c4('0x25')](_0x5a659a,json2xls(_0x57f379),_0xf5c4('0x26'));}})['then'](function(){if(_0x20a0ee){zipdir(path[_0xf5c4('0x21')](_0x4b42d6,_0x4d10dd),{'saveTo':path[_0xf5c4('0x21')](_0x4b42d6,util['format'](_0xf5c4('0x27'),_0x4d10dd,_0xf5c4('0x28')))},function(_0x515c0d,_0x45accc){});rimraf(path[_0xf5c4('0x21')](_0x4b42d6,_0x4d10dd),function(){});}})[_0xf5c4('0x17')](function(){logger[_0xf5c4('0xc')](util[_0xf5c4('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xf5c4('0xf')));return analyticExtractedReport(_0xf5c4('0x29'),_0x20a0ee?util[_0xf5c4('0xd')](_0xf5c4('0x27'),_0x4d10dd,_0x20a0ee?_0xf5c4('0x28'):_0xf5c4('0x24')):null);});})[_0xf5c4('0x2a')](function(_0x3f99ba){logger[_0xf5c4('0xc')](util[_0xf5c4('0xd')](_0xf5c4('0x2b'),EXTRACTED_REPORT_ID,_0xf5c4('0xf')),util[_0xf5c4('0x2c')](_0x3f99ba,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xf5c4('0x2d'));})['finally'](function(){process[_0xf5c4('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index c6eebcc..d839adc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12a6=['error','rewrite','lodash','Interval','findAll','then','intervals','models','VoiceExtension','IntervalId','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','priority','extensions','extension','find','push','Set','format','type','context','VoiceExtensionId','inbound','CDR(routeid)=','outbound','cutdigits','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','interval','*,*,*,*','map','tag','CDR(tag)=','callerID','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','appType','custom','XCALLY-MOTION-ANSWER=1','splice','last','concat','Hangup','transaction','bulkCreate','sortBy'];(function(_0x16591f,_0x5c3628){var _0x573a5a=function(_0x210b96){while(--_0x210b96){_0x16591f['push'](_0x16591f['shift']());}};_0x573a5a(++_0x5c3628);}(_0x12a6,0x116));var _0x612a=function(_0x5bab8e,_0x5a9ed6){_0x5bab8e=_0x5bab8e-0x0;var _0x3e14ea=_0x12a6[_0x5bab8e];return _0x3e14ea;};'use strict';var _=require(_0x612a('0x0'));var util=require('util');function rewrite(_0xc0092c,_0x5945c8){var _0x535caa=this;return _0xc0092c['models'][_0x612a('0x1')][_0x612a('0x2')]({'raw':!![]})[_0x612a('0x3')](function(_0x38d2d8){_0x535caa[_0x612a('0x4')]=_0x38d2d8;return _0xc0092c[_0x612a('0x5')][_0x612a('0x6')]['findAll']({'where':{'IntervalId':_0x5945c8[_0x612a('0x7')]},'raw':!![]});})[_0x612a('0x3')](function(_0x53e493){return _0xc0092c[_0x612a('0x5')][_0x612a('0x6')][_0x612a('0x2')]({'where':{'exten':{'$in':_['uniq'](_['map'](_0x53e493,_0x612a('0x8')))}},'order':[{'raw':_0x612a('0x9')}],'raw':!![]});})['then'](function(_0x308909){var _0x348ffc=_[_0x612a('0xa')](_0x308909,{'priority':'1'});var _0x26e820=_[_0x612a('0xa')](_0x308909,{'isApp':0x1});var _0x3d2a9b=_[_0x612a('0xb')](_0x26e820,_0x612a('0x8'));var _0x1a65db=[_0x612a('0xc'),_0x612a('0xd')];var _0x62daa9=[];var _0x247263=[];for(var _0x51238a in _0x3d2a9b){if(_0x3d2a9b['hasOwnProperty'](_0x51238a)){_0x535caa[_0x612a('0xe')]=0x2;_0x535caa[_0x612a('0xf')]=[];_0x535caa[_0x612a('0x10')]=_[_0x612a('0x11')](_0x348ffc,{'exten':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x8')]});_0x535caa[_0x612a('0xf')][_0x612a('0x12')]({'type':_0x3d2a9b[_0x51238a][0x0]['type'],'app':_0x612a('0x13'),'appdata':util[_0x612a('0x14')]('CDR(type)=%s',_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')]),'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0]['exten'],'priority':_0x535caa['priority']++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});if(_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')]===_0x612a('0x18')){_0x535caa['extensions'][_0x612a('0x12')]({'type':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')],'app':'Set','appdata':_0x612a('0x19')+_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')],'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x8')],'priority':_0x535caa[_0x612a('0xe')]++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});}else if(_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')]===_0x612a('0x1a')){if(_0x535caa[_0x612a('0x10')]){_0x535caa['extensions']['push']({'type':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')],'app':_0x612a('0x13'),'appdata':'CDR(destination)='+(_0x535caa[_0x612a('0x10')][_0x612a('0x1b')]?'${EXTEN:'+_0x535caa[_0x612a('0x10')][_0x612a('0x1b')]+'}':_0x612a('0x1c')),'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x8')],'priority':_0x535caa[_0x612a('0xe')]++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0]['VoiceExtensionId']});}_0x535caa['extensions'][_0x612a('0x12')]({'type':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')],'app':'Set','appdata':_0x612a('0x19')+_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')],'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0]['exten'],'priority':_0x535caa['priority']++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});var _0x152e8e=_0x535caa[_0x612a('0xe')]++;_0x535caa[_0x612a('0xf')][_0x612a('0x12')]({'type':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')],'app':'ExecIf','appdata':_0x612a('0x1d')+(_0x152e8e+0x2)+_0x612a('0x1e')+(_0x152e8e+0x1)+')','context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0]['exten'],'priority':_0x152e8e,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});if(_0x535caa[_0x612a('0x10')]){_0x535caa[_0x612a('0xf')]['push']({'type':_0x3d2a9b[_0x51238a][0x0]['type'],'app':_0x612a('0x13'),'appdata':_0x535caa['extension'][_0x612a('0x1b')]?_0x612a('0x1f')+_0x535caa[_0x612a('0x10')][_0x612a('0x1b')]+'}':_0x612a('0x20'),'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x8')],'priority':_0x535caa[_0x612a('0xe')]++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});}_0x535caa['extensions'][_0x612a('0x12')]({'type':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')],'app':_0x612a('0x13'),'appdata':_0x612a('0x21')+_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')],'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0]['exten'],'priority':_0x535caa['priority']++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});if(_0x535caa[_0x612a('0x10')]&&_0x535caa[_0x612a('0x10')][_0x612a('0x22')](_0x612a('0x23'))&&_0x535caa[_0x612a('0x10')][_0x612a('0x23')]!==_0x612a('0x24')){_0x535caa[_0x612a('0xf')][_0x612a('0x12')]({'type':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')],'app':_0x612a('0x13'),'appdata':_0x612a('0x25'),'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x8')],'priority':_0x535caa[_0x612a('0xe')]++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0]['VoiceExtensionId']});_0x535caa[_0x612a('0xf')]['push']({'type':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')],'app':_0x612a('0x13'),'appdata':_0x612a('0x26')+_0x535caa['extension']['recordingFormat']||_0x612a('0x27'),'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x8')],'priority':_0x535caa[_0x612a('0xe')]++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});}}_0x535caa[_0x612a('0xf')]['push']({'type':_0x3d2a9b[_0x51238a][0x0]['type'],'app':_0x612a('0x13'),'appdata':_0x612a('0x28'),'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x8')],'priority':_0x535caa[_0x612a('0xe')]++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});_0x535caa[_0x612a('0xf')][_0x612a('0x12')]({'type':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')],'app':'Set','appdata':_0x612a('0x29'),'context':_0x3d2a9b[_0x51238a][0x0]['context'],'exten':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x8')],'priority':_0x535caa['priority']++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0]['VoiceExtensionId']});_0x535caa[_0x612a('0xf')][_0x612a('0x12')]({'type':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')],'app':'Set','appdata':_0x612a('0x2a'),'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'exten':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x8')],'priority':_0x535caa['priority']++,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});for(var _0x121397=0x0,_0x442b27=0x0;_0x121397<_0x3d2a9b[_0x51238a][_0x612a('0x2b')];_0x121397+=0x1,_0x442b27=0x0){var _0x2bb951=_0x3d2a9b[_0x51238a][_0x121397];if(_0x2bb951[_0x612a('0x15')]){_0x2bb951[_0x612a('0x15')]=_0x2bb951['type'][_0x612a('0x2c')]();}var _0x410204=[];var _0x315660=[];delete _0x2bb951['id'];delete _0x2bb951['createdAt'];delete _0x2bb951['updatedAt'];var _0x205bcc=_0x2bb951[_0x612a('0x2d')]!==_0x612a('0x2e')?[_0x2bb951[_0x612a('0x2d')]]:_0x2bb951[_0x612a('0x7')]?_[_0x612a('0x2f')](_[_0x612a('0xa')](_0x535caa[_0x612a('0x4')],{'IntervalId':_0x2bb951[_0x612a('0x7')]}),'interval'):[];if(_0x2bb951[_0x612a('0x22')](_0x612a('0x30'))){if(_0x2bb951['tag']&&_0x2bb951[_0x612a('0x30')]!=='--'){_0x410204[_0x612a('0x12')]({'type':_0x2bb951[_0x612a('0x15')],'app':_0x612a('0x13'),'appdata':_0x612a('0x31')+_0x2bb951[_0x612a('0x30')],'context':_0x2bb951['context'],'exten':_0x2bb951[_0x612a('0x8')],'priority':_0x205bcc[_0x612a('0x2b')]+_0x535caa[_0x612a('0xe')]+_0x442b27++,'VoiceExtensionId':_0x2bb951[_0x612a('0x17')]});}}if(_0x2bb951[_0x612a('0x15')]==='outbound'&&_0x2bb951['hasOwnProperty'](_0x612a('0x32'))){if(_0x2bb951[_0x612a('0x32')]){_0x410204[_0x612a('0x12')]({'type':_0x2bb951[_0x612a('0x15')],'app':_0x612a('0x33'),'appdata':_0x612a('0x34')+_0x2bb951[_0x612a('0x32')]+')','context':_0x2bb951[_0x612a('0x16')],'exten':_0x2bb951[_0x612a('0x8')],'priority':_0x205bcc['length']+_0x535caa['priority']+_0x442b27++,'VoiceExtensionId':_0x2bb951[_0x612a('0x17')]});}else{_0x410204[_0x612a('0x12')]({'type':_0x2bb951[_0x612a('0x15')],'app':_0x612a('0x33'),'appdata':_0x612a('0x35'),'context':_0x2bb951[_0x612a('0x16')],'exten':_0x2bb951['exten'],'priority':_0x205bcc[_0x612a('0x2b')]+_0x535caa['priority']+_0x442b27++,'VoiceExtensionId':_0x2bb951[_0x612a('0x17')]});}}if(_0x2bb951[_0x612a('0x22')](_0x612a('0x36'))){if(_0x1a65db[_0x612a('0x37')](_0x2bb951[_0x612a('0x38')][_0x612a('0x2c')]())>=0x0&&_0x2bb951[_0x612a('0x39')]!==_0x612a('0x3a')){if(_0x2bb951[_0x612a('0x36')]){_0x410204[_0x612a('0x12')]({'type':_0x2bb951[_0x612a('0x15')],'app':_0x612a('0x33'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x2bb951[_0x612a('0x16')],'exten':_0x2bb951[_0x612a('0x8')],'priority':_0x205bcc[_0x612a('0x2b')]+_0x535caa[_0x612a('0xe')]+_0x442b27++,'VoiceExtensionId':_0x2bb951['VoiceExtensionId']});_0x410204[_0x612a('0x12')]({'type':_0x2bb951[_0x612a('0x15')],'app':'Set','appdata':_0x612a('0x3b'),'context':_0x2bb951[_0x612a('0x16')],'exten':_0x2bb951[_0x612a('0x8')],'priority':_0x205bcc[_0x612a('0x2b')]+_0x535caa[_0x612a('0xe')]+_0x442b27++,'VoiceExtensionId':_0x2bb951[_0x612a('0x17')]});}else{_0x410204[_0x612a('0x12')]({'type':_0x2bb951[_0x612a('0x15')],'app':_0x612a('0x33'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x2bb951['context'],'exten':_0x2bb951[_0x612a('0x8')],'priority':_0x205bcc[_0x612a('0x2b')]+_0x535caa['priority']+_0x442b27++,'VoiceExtensionId':_0x2bb951[_0x612a('0x17')]});_0x410204['push']({'type':_0x2bb951[_0x612a('0x15')],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x2bb951[_0x612a('0x16')],'exten':_0x2bb951[_0x612a('0x8')],'priority':_0x205bcc[_0x612a('0x2b')]+_0x535caa['priority']+_0x442b27++,'VoiceExtensionId':_0x2bb951[_0x612a('0x17')]});}}}for(var _0x3a6cfc=0x0;_0x3a6cfc<_0x205bcc[_0x612a('0x2b')];_0x3a6cfc+=0x1){var _0x21e36f=_0x535caa[_0x612a('0xe')]+_0x205bcc['length'];var _0x51c096=_0x3a6cfc===_0x205bcc['length']-0x1?_0x535caa[_0x612a('0xe')]+_0x410204[_0x612a('0x2b')]+_0x315660[_0x612a('0x2b')]+0x2:_0x535caa['priority']+_0x3a6cfc+0x1;_0x410204[_0x612a('0x3c')](_0x3a6cfc,0x0,{'type':_0x2bb951[_0x612a('0x15')],'app':'GotoIfTime','appdata':_0x205bcc[_0x3a6cfc]+'?'+_0x2bb951['context']+',${EXTEN},'+_0x21e36f+':'+_0x2bb951[_0x612a('0x16')]+',${EXTEN},'+_0x51c096,'exten':_0x2bb951[_0x612a('0x8')],'context':_0x2bb951[_0x612a('0x16')],'priority':_0x535caa['priority']+_0x3a6cfc,'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});}_0x2bb951[_0x612a('0xe')]=_0x410204[_0x612a('0x2b')]?_[_0x612a('0x3d')](_0x410204)['priority']+0x1:_0x535caa['priority'];_0x535caa[_0x612a('0xe')]=(_0x315660[_0x612a('0x2b')]?_[_0x612a('0x3d')](_0x315660)[_0x612a('0xe')]:_0x2bb951[_0x612a('0xe')])+0x1;_0x535caa[_0x612a('0xf')]=_[_0x612a('0x3e')](_0x535caa[_0x612a('0xf')],_0x410204,[_0x2bb951],_0x315660);}_0x535caa['extensions']['push']({'type':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x15')],'app':_0x612a('0x3f'),'exten':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x8')],'context':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x16')],'priority':_0x535caa[_0x612a('0xe')],'VoiceExtensionId':_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]});_0x62daa9[_0x612a('0x12')](_0x3d2a9b[_0x51238a][0x0][_0x612a('0x17')]);_0x247263=_[_0x612a('0x3e')](_0x247263,_0x535caa[_0x612a('0xf')]);}}return _0xc0092c[_0x612a('0x40')](function(_0x512614){return _0xc0092c[_0x612a('0x5')][_0x612a('0x6')]['destroy']({'where':{'VoiceExtensionId':{'$in':_0x62daa9}},'transaction':_0x512614})[_0x612a('0x3')](function(_0x47df9b){return _0xc0092c[_0x612a('0x5')][_0x612a('0x6')][_0x612a('0x41')](_[_0x612a('0x42')](_0x247263,_0x612a('0xe')),{'transaction':_0x512614});});});})['catch'](function(_0x1cdece){console[_0x612a('0x43')](_0x1cdece);});}exports[_0x612a('0x44')]=rewrite;
\ No newline at end of file
+var _0x5da5=['exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','extension','push','CDR(type)=%s','context','VoiceExtensionId','type','inbound','CDR(routeid)=','Set','CDR(destination)=','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','IntervalId','map','intervals','tag','CDR(tag)=','outbound','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','app','appType','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','sortBy','catch','error','rewrite','util','models','Interval','findAll','then','VoiceExtension','uniq'];(function(_0x50e662,_0x464fa5){var _0x203ec5=function(_0x16f354){while(--_0x16f354){_0x50e662['push'](_0x50e662['shift']());}};_0x203ec5(++_0x464fa5);}(_0x5da5,0x1dc));var _0x55da=function(_0x5a147f,_0x5df280){_0x5a147f=_0x5a147f-0x0;var _0x1d7bed=_0x5da5[_0x5a147f];return _0x1d7bed;};'use strict';var _=require('lodash');var util=require(_0x55da('0x0'));function rewrite(_0x2848c8,_0x1ca046){var _0x301547=this;return _0x2848c8[_0x55da('0x1')][_0x55da('0x2')][_0x55da('0x3')]({'raw':!![]})[_0x55da('0x4')](function(_0x9874d3){_0x301547['intervals']=_0x9874d3;return _0x2848c8[_0x55da('0x1')][_0x55da('0x5')][_0x55da('0x3')]({'where':{'IntervalId':_0x1ca046['IntervalId']},'raw':!![]});})[_0x55da('0x4')](function(_0xda47e0){return _0x2848c8[_0x55da('0x1')][_0x55da('0x5')][_0x55da('0x3')]({'where':{'exten':{'$in':_[_0x55da('0x6')](_['map'](_0xda47e0,_0x55da('0x7')))}},'order':[{'raw':_0x55da('0x8')}],'raw':!![]});})[_0x55da('0x4')](function(_0x2d9f55){var _0x5cb7d1=_['filter'](_0x2d9f55,{'priority':'1'});var _0x21e683=_[_0x55da('0x9')](_0x2d9f55,{'isApp':0x1});var _0x41c5e9=_[_0x55da('0xa')](_0x21e683,_0x55da('0x7'));var _0x45fc00=[_0x55da('0xb'),_0x55da('0xc')];var _0x478463=[];var _0x238698=[];for(var _0x34ba5e in _0x41c5e9){if(_0x41c5e9[_0x55da('0xd')](_0x34ba5e)){_0x301547[_0x55da('0xe')]=0x2;_0x301547[_0x55da('0xf')]=[];_0x301547[_0x55da('0x10')]=_['find'](_0x5cb7d1,{'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')]});_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0]['type'],'app':'Set','appdata':util['format'](_0x55da('0x12'),_0x41c5e9[_0x34ba5e][0x0]['type']),'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0]['exten'],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});if(_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')]===_0x55da('0x16')){_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':'Set','appdata':_0x55da('0x17')+_0x41c5e9[_0x34ba5e][0x0]['VoiceExtensionId'],'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});}else if(_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')]==='outbound'){if(_0x301547[_0x55da('0x10')]){_0x301547[_0x55da('0xf')]['push']({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':_0x55da('0x19')+(_0x301547['extension'][_0x55da('0x1a')]?'${EXTEN:'+_0x301547[_0x55da('0x10')][_0x55da('0x1a')]+'}':_0x55da('0x1b')),'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547['priority']++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});}_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':_0x55da('0x17')+_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')],'context':_0x41c5e9[_0x34ba5e][0x0]['context'],'exten':_0x41c5e9[_0x34ba5e][0x0]['exten'],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});var _0x1545d5=_0x301547['priority']++;_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0]['type'],'app':_0x55da('0x1c'),'appdata':_0x55da('0x1d')+(_0x1545d5+0x2)+_0x55da('0x1e')+(_0x1545d5+0x1)+')','context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x1545d5,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0]['VoiceExtensionId']});if(_0x301547[_0x55da('0x10')]){_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0]['type'],'app':'Set','appdata':_0x301547[_0x55da('0x10')][_0x55da('0x1a')]?_0x55da('0x1f')+_0x301547[_0x55da('0x10')]['cutdigits']+'}':_0x55da('0x20'),'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0]['exten'],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0]['VoiceExtensionId']});}_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':'Set','appdata':'outboundrouteid='+_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')],'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});if(_0x301547[_0x55da('0x10')]&&_0x301547[_0x55da('0x10')][_0x55da('0xd')](_0x55da('0x21'))&&_0x301547[_0x55da('0x10')][_0x55da('0x21')]!=='none'){_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x41c5e9[_0x34ba5e][0x0]['context'],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547['priority']++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0]['type'],'app':_0x55da('0x18'),'appdata':_0x55da('0x22')+_0x301547[_0x55da('0x10')]['recordingFormat']||'wav','context':_0x41c5e9[_0x34ba5e][0x0]['context'],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547['priority']++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});}}_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547['priority']++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':'Set','appdata':_0x55da('0x23'),'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0]['VoiceExtensionId']});_0x301547[_0x55da('0xf')][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x15')],'app':'Set','appdata':_0x55da('0x24'),'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'priority':_0x301547[_0x55da('0xe')]++,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});for(var _0x5a469b=0x0,_0x158abe=0x0;_0x5a469b<_0x41c5e9[_0x34ba5e][_0x55da('0x25')];_0x5a469b+=0x1,_0x158abe=0x0){var _0x436820=_0x41c5e9[_0x34ba5e][_0x5a469b];if(_0x436820[_0x55da('0x15')]){_0x436820['type']=_0x436820['type'][_0x55da('0x26')]();}var _0x40f8f6=[];var _0x393376=[];delete _0x436820['id'];delete _0x436820[_0x55da('0x27')];delete _0x436820[_0x55da('0x28')];var _0x10404d=_0x436820[_0x55da('0x29')]!==_0x55da('0x2a')?[_0x436820[_0x55da('0x29')]]:_0x436820[_0x55da('0x2b')]?_[_0x55da('0x2c')](_[_0x55da('0x9')](_0x301547[_0x55da('0x2d')],{'IntervalId':_0x436820['IntervalId']}),'interval'):[];if(_0x436820[_0x55da('0xd')](_0x55da('0x2e'))){if(_0x436820[_0x55da('0x2e')]&&_0x436820[_0x55da('0x2e')]!=='--'){_0x40f8f6[_0x55da('0x11')]({'type':_0x436820[_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':_0x55da('0x2f')+_0x436820[_0x55da('0x2e')],'context':_0x436820[_0x55da('0x13')],'exten':_0x436820[_0x55da('0x7')],'priority':_0x10404d['length']+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820['VoiceExtensionId']});}}if(_0x436820[_0x55da('0x15')]===_0x55da('0x30')&&_0x436820[_0x55da('0xd')]('callerID')){if(_0x436820['callerID']){_0x40f8f6[_0x55da('0x11')]({'type':_0x436820['type'],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x436820[_0x55da('0x31')]+')','context':_0x436820[_0x55da('0x13')],'exten':_0x436820['exten'],'priority':_0x10404d[_0x55da('0x25')]+_0x301547['priority']+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});}else{_0x40f8f6['push']({'type':_0x436820[_0x55da('0x15')],'app':'ExecIf','appdata':_0x55da('0x32'),'context':_0x436820[_0x55da('0x13')],'exten':_0x436820[_0x55da('0x7')],'priority':_0x10404d[_0x55da('0x25')]+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});}}if(_0x436820[_0x55da('0xd')](_0x55da('0x33'))){if(_0x45fc00['indexOf'](_0x436820[_0x55da('0x34')][_0x55da('0x26')]())>=0x0&&_0x436820[_0x55da('0x35')]!==_0x55da('0x36')){if(_0x436820[_0x55da('0x33')]){_0x40f8f6[_0x55da('0x11')]({'type':_0x436820[_0x55da('0x15')],'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x436820[_0x55da('0x13')],'exten':_0x436820[_0x55da('0x7')],'priority':_0x10404d[_0x55da('0x25')]+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});_0x40f8f6[_0x55da('0x11')]({'type':_0x436820[_0x55da('0x15')],'app':'Set','appdata':_0x55da('0x37'),'context':_0x436820[_0x55da('0x13')],'exten':_0x436820[_0x55da('0x7')],'priority':_0x10404d[_0x55da('0x25')]+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});}else{_0x40f8f6['push']({'type':_0x436820[_0x55da('0x15')],'app':_0x55da('0x1c'),'appdata':_0x55da('0x38'),'context':_0x436820[_0x55da('0x13')],'exten':_0x436820['exten'],'priority':_0x10404d[_0x55da('0x25')]+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});_0x40f8f6['push']({'type':_0x436820[_0x55da('0x15')],'app':_0x55da('0x18'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x436820[_0x55da('0x13')],'exten':_0x436820[_0x55da('0x7')],'priority':_0x10404d[_0x55da('0x25')]+_0x301547[_0x55da('0xe')]+_0x158abe++,'VoiceExtensionId':_0x436820[_0x55da('0x14')]});}}}for(var _0x2c89ff=0x0;_0x2c89ff<_0x10404d[_0x55da('0x25')];_0x2c89ff+=0x1){var _0x488153=_0x301547[_0x55da('0xe')]+_0x10404d['length'];var _0x2b3fbb=_0x2c89ff===_0x10404d['length']-0x1?_0x301547['priority']+_0x40f8f6['length']+_0x393376[_0x55da('0x25')]+0x2:_0x301547[_0x55da('0xe')]+_0x2c89ff+0x1;_0x40f8f6[_0x55da('0x39')](_0x2c89ff,0x0,{'type':_0x436820['type'],'app':_0x55da('0x3a'),'appdata':_0x10404d[_0x2c89ff]+'?'+_0x436820[_0x55da('0x13')]+',${EXTEN},'+_0x488153+':'+_0x436820['context']+_0x55da('0x3b')+_0x2b3fbb,'exten':_0x436820[_0x55da('0x7')],'context':_0x436820[_0x55da('0x13')],'priority':_0x301547[_0x55da('0xe')]+_0x2c89ff,'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0]['VoiceExtensionId']});}_0x436820['priority']=_0x40f8f6[_0x55da('0x25')]?_['last'](_0x40f8f6)['priority']+0x1:_0x301547[_0x55da('0xe')];_0x301547[_0x55da('0xe')]=(_0x393376[_0x55da('0x25')]?_[_0x55da('0x3c')](_0x393376)[_0x55da('0xe')]:_0x436820['priority'])+0x1;_0x301547['extensions']=_[_0x55da('0x3d')](_0x301547[_0x55da('0xf')],_0x40f8f6,[_0x436820],_0x393376);}_0x301547['extensions'][_0x55da('0x11')]({'type':_0x41c5e9[_0x34ba5e][0x0]['type'],'app':_0x55da('0x3e'),'exten':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x7')],'context':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x13')],'priority':_0x301547[_0x55da('0xe')],'VoiceExtensionId':_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]});_0x478463[_0x55da('0x11')](_0x41c5e9[_0x34ba5e][0x0][_0x55da('0x14')]);_0x238698=_[_0x55da('0x3d')](_0x238698,_0x301547[_0x55da('0xf')]);}}return _0x2848c8[_0x55da('0x3f')](function(_0x13741c){return _0x2848c8[_0x55da('0x1')][_0x55da('0x5')][_0x55da('0x40')]({'where':{'VoiceExtensionId':{'$in':_0x478463}},'transaction':_0x13741c})[_0x55da('0x4')](function(_0x24f233){return _0x2848c8[_0x55da('0x1')][_0x55da('0x5')]['bulkCreate'](_[_0x55da('0x41')](_0x238698,_0x55da('0xe')),{'transaction':_0x13741c});});});})[_0x55da('0x42')](function(_0x5143f7){console[_0x55da('0x43')](_0x5143f7);});}exports[_0x55da('0x44')]=rewrite;
\ No newline at end of file
index 9f5e0a4..1e09be8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3532=['from','deletedAt\x20IS\x20NULL','id\x20IN\x20?','phone\x20NOT\x20IN\x20(?)','calleridnum','str','cm_hopper_black','VoiceQueue','outbound','dialCheckDuplicateType','CmList','Lists','get','push','sequelize','query','VoiceQueueId','all','findAll','BlackLists','Campaign','onlyIfOpen','CampaignId','cmContact,\x20%s,\x20%s','emit','contact:csv_','resume','resolve','Unable\x20to\x20delete\x20temp\x20file:','CSV\x20import\x20process\x20stopped!','createReadStream','parse','info','Error\x20executing\x20contact\x20csv\x20import:','util','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','redis','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','null','Missing\x20filepath\x20parameter!','undefined','zipObject','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','contact','index','test','error','errors','length','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','Duplicate\x20Contact','CmContact','create','keys','then','catch','stringify','checkHopper','inspect','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','field','NOW()','toString','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','\x20=\x20?','select'];(function(_0x3e13ee,_0x402e81){var _0x4b458c=function(_0x42dc5f){while(--_0x42dc5f){_0x3e13ee['push'](_0x3e13ee['shift']());}};_0x4b458c(++_0x402e81);}(_0x3532,0xec));var _0x2353=function(_0x2dd027,_0xde90b1){_0x2dd027=_0x2dd027-0x0;var _0x269fd7=_0x3532[_0x2dd027];return _0x269fd7;};'use strict';var BPromise=require('bluebird');var util=require(_0x2353('0x0'));var _=require(_0x2353('0x1'));var fs=require('fs');var squel=require(_0x2353('0x2'));var Papa=require(_0x2353('0x3'));var Redis=require(_0x2353('0x4'));var db=require(_0x2353('0x5'))['db'];var config=require(_0x2353('0x6'));var logger=require('../../../config/logger')('api');config['redis']=_['defaults'](config[_0x2353('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x2353('0x8'))(new Redis(config[_0x2353('0x7')]));require(_0x2353('0x9'))[_0x2353('0xa')](socket);try{if(!process['argv'][0x2]||process[_0x2353('0xb')][0x2]==='undefined'||process[_0x2353('0xb')][0x2]===_0x2353('0xc')){throw new Error(_0x2353('0xd'));}var FILEPATH=process[_0x2353('0xb')][0x2];if(!process[_0x2353('0xb')][0x3]||process[_0x2353('0xb')][0x3]===_0x2353('0xe')||process[_0x2353('0xb')][0x3]==='null'||!process['argv'][0x4]||process[_0x2353('0xb')][0x4]===_0x2353('0xe')||process[_0x2353('0xb')][0x4]===_0x2353('0xc')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x2353('0xf')](process[_0x2353('0xb')][0x3]['split'](','),process[_0x2353('0xb')][0x4]['split'](','));if(!process[_0x2353('0xb')][0x5]||process[_0x2353('0xb')][0x5]===_0x2353('0xe')||process[_0x2353('0xb')][0x5]==='null'){throw new Error(_0x2353('0x10'));}var LISTID=process[_0x2353('0xb')][0x5];var COMPANYID=process['argv'][0x6]&&process[_0x2353('0xb')][0x6]!==_0x2353('0xe')&&process['argv'][0x6]!==_0x2353('0xc')?process['argv'][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x2353('0xb')][0x7]!==_0x2353('0xe')&&process[_0x2353('0xb')][0x7]!==_0x2353('0xc')?process[_0x2353('0xb')][0x7]:null;if(!process[_0x2353('0xb')][0x8]||process[_0x2353('0xb')][0x8]===_0x2353('0xe')||process[_0x2353('0xb')][0x8]==='null'){throw new Error(_0x2353('0x11'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x19ef86){logger['error'](_0x19ef86);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(_0x40f0c2,_0x37413b,_0x56594f,_0x3bc710){var _0x54e532={'message':_0x37413b};_0x54e532[_0x40f0c2]=!![];if(_0x56594f){_0x54e532[_0x2353('0x12')]=_0x56594f;}if(_0x3bc710){_0x54e532[_0x2353('0x13')]=_0x3bc710;}return _0x54e532;}function isEmail(_0x2c6bf3){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))*$/[_0x2353('0x14')](_0x2c6bf3);}function checkRow(_0x3b6f11,_0x5d13ca,_0x3dc464){return new BPromise(function(_0x4cde07,_0x5eeb57){if(_['isNil'](_0x3b6f11)){return _0x5eeb57(handleCheckRowError(_0x2353('0x15'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x3dc464));}if(_0x3b6f11[_0x2353('0x16')]&&_0x3b6f11[_0x2353('0x16')][_0x2353('0x17')]){var _0x7317b7=_['map'](_0x3b6f11[_0x2353('0x16')],'message')[_0x2353('0x18')](';');return _0x5eeb57(handleCheckRowError(_0x2353('0x15'),_0x7317b7,null,_0x3dc464));}var _0x33bf74={};for(var _0x20dcdc in FIELDS){if(FIELDS[_0x2353('0x19')](_0x20dcdc)&&FIELDS[_0x20dcdc]){_0x33bf74[_0x20dcdc]=_0x3b6f11[_0x2353('0x1a')][0x0][FIELDS[_0x20dcdc]]||_0x3b6f11[_0x2353('0x1a')][0x0]['\ufeff'+FIELDS[_0x20dcdc]];}}if(!_0x33bf74[_0x2353('0x1b')]){return _0x5eeb57(handleCheckRowError('error',_0x2353('0x1c'),null,_0x3dc464));}if(!_0x33bf74[_0x2353('0x1d')]){return _0x5eeb57(handleCheckRowError(_0x2353('0x15'),_0x2353('0x1e'),null,_0x3dc464));}if(_0x33bf74[_0x2353('0x1f')]){var _0x363900=moment(_0x33bf74[_0x2353('0x1f')],_0x2353('0x20'));if(!_0x363900[_0x2353('0x21')]()){return _0x5eeb57(handleCheckRowError(_0x2353('0x15'),_0x2353('0x22'),null,_0x3dc464));}}if(_0x33bf74['email']){if(!isEmail(_0x33bf74[_0x2353('0x23')])){return _0x5eeb57(handleCheckRowError(_0x2353('0x15'),_0x2353('0x24'),null,_0x3dc464));}}_0x33bf74[_0x2353('0x25')]=LISTID;_0x33bf74[_0x2353('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x2353('0x17')]&&_0x5d13ca){var _0xc33247={};for(var _0x39e048=0x0,_0x208f58=DUPLICATES[_0x2353('0x17')];_0x39e048<_0x208f58;_0x39e048+=0x1){_0xc33247[DUPLICATES[_0x39e048]]=_0x33bf74[DUPLICATES[_0x39e048]];}var _0x7aef43=_[_0x2353('0x27')](_0x5d13ca,_0xc33247);if(_0x7aef43){return _0x5eeb57(handleCheckRowError(_0x2353('0x28'),_0x2353('0x29'),_0x7aef43,_0x3dc464));}}return db[_0x2353('0x2a')][_0x2353('0x2b')](_0x33bf74,{'raw':!![],'hooks':![],'fields':_[_0x2353('0x2c')](_0x33bf74)})[_0x2353('0x2d')](function(_0x21f26b){if(DUPLICATES&&DUPLICATES[_0x2353('0x17')]&&_0x5d13ca){_0x5d13ca['push'](_['pick'](_0x33bf74,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x21f26b['id'];return _0x4cde07();})[_0x2353('0x2e')](function(_0x3a7953){return _0x5eeb57(handleCheckRowError(_0x2353('0x15'),'Error\x20while\x20creating\x20contact:\x20'+(_0x3a7953['message']||JSON[_0x2353('0x2f')](_0x3a7953)),null,_0x3dc464));});});}function checkHopper(){function _0xea2639(){return function(_0x272285){logger[_0x2353('0x15')]('cmContact',_0x2353('0x30'),util[_0x2353('0x31')](_0x272285,{'showHidden':![],'depth':null}));};}var _0x3b4ead=function(_0x11e058,_0x1bb32a){var _0x39b9a5=squel[_0x2353('0x32')]()[_0x2353('0x33')](_0x2353('0x34'))[_0x2353('0x35')]([_0x2353('0x1d'),_0x2353('0x36'),_0x2353('0x37'),_0x2353('0x25'),_0x1bb32a,_0x2353('0x38'),_0x2353('0x39')],squel['select']()[_0x2353('0x3a')](_0x2353('0x1d'),_0x2353('0x1d'))[_0x2353('0x3a')](_0x2353('0x3b'),_0x2353('0x36'))[_0x2353('0x3a')]('id',_0x2353('0x37'))[_0x2353('0x3a')](LISTID[_0x2353('0x3c')](),_0x2353('0x25'))[_0x2353('0x3a')](_0x11e058['id'][_0x2353('0x3c')](),_0x1bb32a)['field'](_0x2353('0x3b'),_0x2353('0x38'))[_0x2353('0x3a')]('NOW()',_0x2353('0x39'))['from'](_0x2353('0x3d'))[_0x2353('0x3e')]('deletedAt\x20IS\x20NULL')['where'](_0x2353('0x3f'),LISTID[_0x2353('0x3c')]())[_0x2353('0x3e')](_0x2353('0x40'))[_0x2353('0x3e')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x2353('0x3a')](_0x2353('0x1d'))['from'](_0x2353('0x34'))['where'](_0x1bb32a+_0x2353('0x41'),_0x11e058['id'][_0x2353('0x3c')]())))['toString']();return _0x39b9a5;};var _0x3361c3=function(_0x5022db,_0x11d748){var _0x33dd40=squel[_0x2353('0x32')]()[_0x2353('0x33')](_0x2353('0x34'))[_0x2353('0x35')](['phone','scheduledAt',_0x2353('0x37'),_0x2353('0x25'),_0x11d748,'createdAt',_0x2353('0x39')],squel[_0x2353('0x42')]()[_0x2353('0x3a')]('phone','phone')[_0x2353('0x3a')]('NOW()',_0x2353('0x36'))[_0x2353('0x3a')]('id','ContactId')['field'](LISTID['toString'](),_0x2353('0x25'))['field'](_0x5022db['id'][_0x2353('0x3c')](),_0x11d748)[_0x2353('0x3a')]('NOW()',_0x2353('0x38'))['field'](_0x2353('0x3b'),_0x2353('0x39'))[_0x2353('0x43')](_0x2353('0x3d'))[_0x2353('0x3e')](_0x2353('0x44'))[_0x2353('0x3e')]('ListId\x20=\x20?',LISTID[_0x2353('0x3c')]())[_0x2353('0x3e')](_0x2353('0x45'),squel['str'](hopperContacts))[_0x2353('0x3e')](_0x2353('0x40'))[_0x2353('0x3e')](_0x2353('0x46'),squel['select']()[_0x2353('0x3a')](_0x2353('0x47'))['from']('cm_hopper_final')[_0x2353('0x3e')](_0x11d748+_0x2353('0x41'),_0x5022db['id'][_0x2353('0x3c')]()))[_0x2353('0x3e')](_0x2353('0x46'),squel[_0x2353('0x42')]()[_0x2353('0x3a')](_0x2353('0x1d'))[_0x2353('0x43')]('cm_hopper')[_0x2353('0x3e')](_0x11d748+_0x2353('0x41'),_0x5022db['id'][_0x2353('0x3c')]())))[_0x2353('0x3c')]();return _0x33dd40;};function _0x56795a(_0x3b2aa9,_0x1f1543){var _0x4bcbb9=squel[_0x2353('0x32')]()[_0x2353('0x33')]('cm_hopper')[_0x2353('0x35')]([_0x2353('0x1d'),_0x2353('0x36'),'ContactId','ListId',_0x1f1543,_0x2353('0x38'),_0x2353('0x39')],squel['select']()[_0x2353('0x3a')](_0x2353('0x1d'),_0x2353('0x1d'))[_0x2353('0x3a')]('NOW()',_0x2353('0x36'))[_0x2353('0x3a')]('id',_0x2353('0x37'))[_0x2353('0x3a')](LISTID['toString'](),_0x2353('0x25'))[_0x2353('0x3a')](_0x3b2aa9['id']['toString'](),_0x1f1543)['field'](_0x2353('0x3b'),_0x2353('0x38'))['field'](_0x2353('0x3b'),_0x2353('0x39'))[_0x2353('0x43')](_0x2353('0x3d'))[_0x2353('0x3e')]('deletedAt\x20IS\x20NULL')[_0x2353('0x3e')]('ListId\x20=\x20?',LISTID[_0x2353('0x3c')]())[_0x2353('0x3e')](_0x2353('0x45'),squel[_0x2353('0x48')](hopperContacts))[_0x2353('0x3e')](_0x2353('0x40')))[_0x2353('0x3c')]();return _0x4bcbb9;}function _0x194925(_0xe6b42f,_0x33871f){var _0xdcab38=squel[_0x2353('0x32')]()[_0x2353('0x33')](_0x2353('0x49'))[_0x2353('0x35')]([_0x2353('0x1d'),'ContactId','ListId',_0x33871f,'createdAt',_0x2353('0x39')],squel['select']()[_0x2353('0x3a')]('phone',_0x2353('0x1d'))[_0x2353('0x3a')]('id',_0x2353('0x37'))[_0x2353('0x3a')](LISTID['toString'](),'ListId')['field'](_0xe6b42f['id'][_0x2353('0x3c')](),_0x33871f)[_0x2353('0x3a')](_0x2353('0x3b'),'createdAt')[_0x2353('0x3a')](_0x2353('0x3b'),_0x2353('0x39'))['from'](_0x2353('0x3d'))[_0x2353('0x3e')](_0x2353('0x44'))[_0x2353('0x3e')](_0x2353('0x3f'),LISTID['toString']())[_0x2353('0x3e')](_0x2353('0x45'),squel[_0x2353('0x48')](hopperContacts))[_0x2353('0x3e')](_0x2353('0x40')))[_0x2353('0x3c')]();return _0xdcab38;}return db[_0x2353('0x4a')]['findAll']({'where':{'type':_0x2353('0x4b')},'attributes':['id',_0x2353('0x4c')],'include':[{'model':db[_0x2353('0x4d')],'as':_0x2353('0x4e'),'where':{'id':LISTID}}]})['then'](function(_0xd425b7){var _0x1b0239=[];if(_0xd425b7){var _0x583b6a;for(var _0xf8cc28=0x0,_0x17041a;_0xf8cc28<_0xd425b7[_0x2353('0x17')];_0xf8cc28+=0x1){_0x17041a=_0xd425b7[_0xf8cc28][_0x2353('0x4f')]({'plain':!![]});switch(_0x17041a[_0x2353('0x4c')]){case'always':_0x1b0239[_0x2353('0x50')](db[_0x2353('0x51')][_0x2353('0x52')](_0x3361c3(_0x17041a,_0x2353('0x53')))['then'](function(){})[_0x2353('0x2e')](_0xea2639()));break;case'onlyIfOpen':_0x1b0239['push'](db[_0x2353('0x51')][_0x2353('0x52')](_0x3b4ead(_0x17041a,_0x2353('0x53')))[_0x2353('0x2d')](function(){})[_0x2353('0x2e')](_0xea2639()));break;default:_0x1b0239[_0x2353('0x50')](db[_0x2353('0x51')][_0x2353('0x52')](_0x56795a(_0x17041a,'VoiceQueueId'))['then'](function(){})[_0x2353('0x2e')](_0xea2639()));}}}return _0x1b0239;})[_0x2353('0x54')]()[_0x2353('0x2d')](function(){return db[_0x2353('0x4a')][_0x2353('0x55')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0x2353('0x4d')],'as':_0x2353('0x56'),'where':{'id':LISTID}}]})[_0x2353('0x2d')](function(_0x471761){var _0x469610=[];if(_0x471761){var _0xb53544;for(var _0x55f729=0x0,_0x2d210b;_0x55f729<_0x471761[_0x2353('0x17')];_0x55f729+=0x1){_0x2d210b=_0x471761[_0x55f729][_0x2353('0x4f')]({'plain':!![]});_0x469610[_0x2353('0x50')](db['sequelize'][_0x2353('0x52')](_0x194925(_0x2d210b,'VoiceQueueId'))[_0x2353('0x2d')](function(){})[_0x2353('0x2e')](_0xea2639()));}}return _0x469610;})[_0x2353('0x54')]();})[_0x2353('0x2d')](function(){return db[_0x2353('0x57')][_0x2353('0x55')]({'attributes':['id',_0x2353('0x4c')],'include':[{'model':db[_0x2353('0x4d')],'as':_0x2353('0x4e'),'where':{'id':LISTID}}]})[_0x2353('0x2d')](function(_0x2f37d9){var _0x275da9=[];if(_0x2f37d9){for(var _0x472b65=0x0,_0x40d112;_0x472b65<_0x2f37d9[_0x2353('0x17')];_0x472b65+=0x1){_0x40d112=_0x2f37d9[_0x472b65][_0x2353('0x4f')]({'plain':!![]});switch(_0x40d112[_0x2353('0x4c')]){case'always':_0x275da9['push'](db['sequelize'][_0x2353('0x52')](_0x3361c3(_0x40d112,'CampaignId'))[_0x2353('0x2d')](function(){})['catch'](_0xea2639()));break;case _0x2353('0x58'):_0x275da9[_0x2353('0x50')](db[_0x2353('0x51')][_0x2353('0x52')](_0x3b4ead(_0x40d112,_0x2353('0x59')))['then'](function(){})[_0x2353('0x2e')](_0xea2639()));break;default:_0x275da9[_0x2353('0x50')](db[_0x2353('0x51')][_0x2353('0x52')](_0x56795a(_0x40d112,_0x2353('0x59')))[_0x2353('0x2d')](function(){})[_0x2353('0x2e')](_0xea2639()));}}}return _0x275da9;})[_0x2353('0x54')]();})['then'](function(){return db[_0x2353('0x57')][_0x2353('0x55')]({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x2353('0x56'),'where':{'id':LISTID}}]})[_0x2353('0x2d')](function(_0x314d5e){var _0x109f2d=[];if(_0x314d5e){for(var _0x2d7e08=0x0,_0x32f040;_0x2d7e08<_0x314d5e[_0x2353('0x17')];_0x2d7e08+=0x1){_0x32f040=_0x314d5e[_0x2d7e08][_0x2353('0x4f')]({'plain':!![]});_0x109f2d[_0x2353('0x50')](db[_0x2353('0x51')][_0x2353('0x52')](_0x194925(_0x32f040,_0x2353('0x59')))[_0x2353('0x2d')](function(){})['catch'](_0xea2639()));}}return _0x109f2d;})[_0x2353('0x54')]();})['catch'](function(_0x42e4d4){logger[_0x2353('0x15')](_0x2353('0x5a'),'generalCheckHopper',_0x42e4d4['message']);});}var processPromises=function(_0x2ab823){return BPromise[_0x2353('0x54')](promises)[_0x2353('0x2d')](function(_0x1d3f38){})[_0x2353('0x2e')](function(_0x5363d8){logger['error']('Error\x20processing\x20rows\x20block:',JSON[_0x2353('0x2f')](_0x5363d8));})['finally'](function(){socket[_0x2353('0x5b')](_0x2353('0x5c')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x2ab823){return _0x2ab823[_0x2353('0x5d')]();}});};var endCsv=function(){return BPromise[_0x2353('0x5e')]()[_0x2353('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0x2353('0x2d')](function(){socket['emit'](_0x2353('0x5c')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x240233){logger[_0x2353('0x15')](_0x2353('0x5f'),JSON['stringify'](_0x240233));}finally{process['exit'](0x0);}});};process['on']('SIGINT',function(){logger['info'](_0x2353('0x60'));endCsv();});function main(){return BPromise[_0x2353('0x5e')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x2353('0x2a')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x3e20bc){var _0x3a7c95=fs[_0x2353('0x61')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x2353('0x62')](_0x3a7c95,{'header':!![],'skipEmptyLines':!![],'step':function(_0x12b879,_0x52d734){total+=0x1;var _0x4b5e95=total;promises[_0x2353('0x50')](checkRow(_0x12b879,_0x3e20bc,_0x4b5e95)[_0x2353('0x2d')](function(){success+=0x1;})[_0x2353('0x2e')](function(_0x197585){if(_0x197585[_0x2353('0x15')]){errors+=0x1;delete _0x197585[_0x2353('0x15')];}else if(_0x197585[_0x2353('0x28')]){duplicates+=0x1;delete _0x197585['duplicate'];}rows[_0x2353('0x50')](_0x197585);}));if(total%0xc8===0x0){_0x52d734['pause']();return processPromises(_0x52d734);}},'complete':function(){return processPromises()[_0x2353('0x2d')](function(){logger[_0x2353('0x63')]('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x9ddcfe,_0x148891){logger[_0x2353('0x63')]('CSV\x20parse\x20error',JSON['stringify'](_0x9ddcfe));endCsv();}});})[_0x2353('0x2e')](function(_0x5ce683){logger[_0x2353('0x15')](_0x2353('0x64'),JSON[_0x2353('0x2f')](_0x5ce683));});}main();
\ No newline at end of file
+var _0x39cc=['always','query','VoiceQueueId','onlyIfOpen','push','sequelize','all','CampaignId','BlackLists','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','resume','contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','stringify','exit','CSV\x20import\x20process\x20stopped!','resolve','createReadStream','duplicate','pause','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','lodash','../../../config/environment','api','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','split','Missing\x20socket_timestamp\x20parameter!','contact','index','test','isNil','error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','join','hasOwnProperty','data','firstName','phone','phone\x20not\x20specified!','birthDate','isValid','email','ListId','Duplicate\x20Contact','CmContact','then','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','cmContact','inspect','insert','into','cm_hopper','fromQuery','ContactId','createdAt','updatedAt','select','field','NOW()','scheduledAt','toString','from','cm_contacts','where','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','str','id\x20IN\x20?','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','get'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x39cc,0x14c));var _0xc39c=function(_0x3b5c14,_0xc3ffa5){_0x3b5c14=_0x3b5c14-0x0;var _0x37e2f2=_0x39cc[_0x3b5c14];return _0x37e2f2;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0xc39c('0x0'));var fs=require('fs');var squel=require('squel');var Papa=require('papaparse');var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0xc39c('0x1'));var logger=require('../../../config/logger')(_0xc39c('0x2'));config[_0xc39c('0x3')]=_['defaults'](config[_0xc39c('0x3')],{'host':_0xc39c('0x4'),'port':0x18eb});var socket=require(_0xc39c('0x5'))(new Redis(config[_0xc39c('0x3')]));require(_0xc39c('0x6'))[_0xc39c('0x7')](socket);try{if(!process[_0xc39c('0x8')][0x2]||process[_0xc39c('0x8')][0x2]===_0xc39c('0x9')||process[_0xc39c('0x8')][0x2]===_0xc39c('0xa')){throw new Error(_0xc39c('0xb'));}var FILEPATH=process[_0xc39c('0x8')][0x2];if(!process[_0xc39c('0x8')][0x3]||process[_0xc39c('0x8')][0x3]===_0xc39c('0x9')||process[_0xc39c('0x8')][0x3]===_0xc39c('0xa')||!process[_0xc39c('0x8')][0x4]||process['argv'][0x4]===_0xc39c('0x9')||process[_0xc39c('0x8')][0x4]===_0xc39c('0xa')){throw new Error(_0xc39c('0xc'));}var FIELDS=_['zipObject'](process[_0xc39c('0x8')][0x3][_0xc39c('0xd')](','),process[_0xc39c('0x8')][0x4][_0xc39c('0xd')](','));if(!process[_0xc39c('0x8')][0x5]||process['argv'][0x5]===_0xc39c('0x9')||process[_0xc39c('0x8')][0x5]===_0xc39c('0xa')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process['argv'][0x5];var COMPANYID=process['argv'][0x6]&&process['argv'][0x6]!==_0xc39c('0x9')&&process[_0xc39c('0x8')][0x6]!==_0xc39c('0xa')?process[_0xc39c('0x8')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0xc39c('0x8')][0x7]!=='undefined'&&process[_0xc39c('0x8')][0x7]!==_0xc39c('0xa')?process[_0xc39c('0x8')][0x7]:null;if(!process[_0xc39c('0x8')][0x8]||process[_0xc39c('0x8')][0x8]==='undefined'||process['argv'][0x8]===_0xc39c('0xa')){throw new Error(_0xc39c('0xe'));}var SOCKET_TIMESTAMP=process[_0xc39c('0x8')][0x8];}catch(_0x566053){logger['error'](_0x566053);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(_0x258ad2,_0x4ed2e0,_0x14bdce,_0x26a592){var _0x3e59d4={'message':_0x4ed2e0};_0x3e59d4[_0x258ad2]=!![];if(_0x14bdce){_0x3e59d4[_0xc39c('0xf')]=_0x14bdce;}if(_0x26a592){_0x3e59d4[_0xc39c('0x10')]=_0x26a592;}return _0x3e59d4;}function isEmail(_0x1df1b1){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))*$/[_0xc39c('0x11')](_0x1df1b1);}function checkRow(_0x12d24b,_0x5ce892,_0x239a42){return new BPromise(function(_0x4a6970,_0x4a7cce){if(_[_0xc39c('0x12')](_0x12d24b)){return _0x4a7cce(handleCheckRowError(_0xc39c('0x13'),_0xc39c('0x14'),null,_0x239a42));}if(_0x12d24b[_0xc39c('0x15')]&&_0x12d24b[_0xc39c('0x15')][_0xc39c('0x16')]){var _0x114b78=_[_0xc39c('0x17')](_0x12d24b[_0xc39c('0x15')],'message')[_0xc39c('0x18')](';');return _0x4a7cce(handleCheckRowError('error',_0x114b78,null,_0x239a42));}var _0x50a751={};for(var _0x29eeb5 in FIELDS){if(FIELDS[_0xc39c('0x19')](_0x29eeb5)&&FIELDS[_0x29eeb5]){_0x50a751[_0x29eeb5]=_0x12d24b[_0xc39c('0x1a')][0x0][FIELDS[_0x29eeb5]]||_0x12d24b[_0xc39c('0x1a')][0x0]['\ufeff'+FIELDS[_0x29eeb5]];}}if(!_0x50a751[_0xc39c('0x1b')]){return _0x4a7cce(handleCheckRowError(_0xc39c('0x13'),'firstName\x20not\x20specified!',null,_0x239a42));}if(!_0x50a751[_0xc39c('0x1c')]){return _0x4a7cce(handleCheckRowError('error',_0xc39c('0x1d'),null,_0x239a42));}if(_0x50a751[_0xc39c('0x1e')]){var _0x47f453=moment(_0x50a751[_0xc39c('0x1e')],'YYYY-MM-DD');if(!_0x47f453[_0xc39c('0x1f')]()){return _0x4a7cce(handleCheckRowError(_0xc39c('0x13'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x239a42));}}if(_0x50a751['email']){if(!isEmail(_0x50a751[_0xc39c('0x20')])){return _0x4a7cce(handleCheckRowError(_0xc39c('0x13'),'email\x20format\x20is\x20not\x20valid!',null,_0x239a42));}}_0x50a751[_0xc39c('0x21')]=LISTID;_0x50a751['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xc39c('0x16')]&&_0x5ce892){var _0x33bbd7={};for(var _0x26eccb=0x0,_0x42dbdf=DUPLICATES['length'];_0x26eccb<_0x42dbdf;_0x26eccb+=0x1){_0x33bbd7[DUPLICATES[_0x26eccb]]=_0x50a751[DUPLICATES[_0x26eccb]];}var _0x523e72=_['find'](_0x5ce892,_0x33bbd7);if(_0x523e72){return _0x4a7cce(handleCheckRowError('duplicate',_0xc39c('0x22'),_0x523e72,_0x239a42));}}return db[_0xc39c('0x23')]['create'](_0x50a751,{'raw':!![],'hooks':![],'fields':_['keys'](_0x50a751)})[_0xc39c('0x24')](function(_0x44a0fc){if(DUPLICATES&&DUPLICATES['length']&&_0x5ce892){_0x5ce892['push'](_[_0xc39c('0x25')](_0x50a751,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x44a0fc['id'];return _0x4a6970();})[_0xc39c('0x26')](function(_0x2e786c){return _0x4a7cce(handleCheckRowError(_0xc39c('0x13'),_0xc39c('0x27')+(_0x2e786c[_0xc39c('0x28')]||JSON['stringify'](_0x2e786c)),null,_0x239a42));});});}function checkHopper(){function _0x5f3ccd(){return function(_0x5bfbdc){logger['error'](_0xc39c('0x29'),'checkHopper',util[_0xc39c('0x2a')](_0x5bfbdc,{'showHidden':![],'depth':null}));};}var _0x2965ea=function(_0x532bed,_0x2c9379){var _0x352513=squel[_0xc39c('0x2b')]()[_0xc39c('0x2c')](_0xc39c('0x2d'))[_0xc39c('0x2e')]([_0xc39c('0x1c'),'scheduledAt',_0xc39c('0x2f'),_0xc39c('0x21'),_0x2c9379,_0xc39c('0x30'),_0xc39c('0x31')],squel[_0xc39c('0x32')]()['field'](_0xc39c('0x1c'),_0xc39c('0x1c'))[_0xc39c('0x33')](_0xc39c('0x34'),_0xc39c('0x35'))[_0xc39c('0x33')]('id',_0xc39c('0x2f'))[_0xc39c('0x33')](LISTID[_0xc39c('0x36')](),_0xc39c('0x21'))['field'](_0x532bed['id'][_0xc39c('0x36')](),_0x2c9379)['field']('NOW()',_0xc39c('0x30'))[_0xc39c('0x33')](_0xc39c('0x34'),_0xc39c('0x31'))[_0xc39c('0x37')](_0xc39c('0x38'))['where']('deletedAt\x20IS\x20NULL')[_0xc39c('0x39')]('ListId\x20=\x20?',LISTID[_0xc39c('0x36')]())[_0xc39c('0x39')](_0xc39c('0x3a'))['where'](_0xc39c('0x3b'),squel[_0xc39c('0x32')]()[_0xc39c('0x33')](_0xc39c('0x1c'))[_0xc39c('0x37')](_0xc39c('0x2d'))[_0xc39c('0x39')](_0x2c9379+_0xc39c('0x3c'),_0x532bed['id'][_0xc39c('0x36')]())))['toString']();return _0x352513;};var _0x34fcd5=function(_0x4c276e,_0x4a1e18){var _0x514201=squel[_0xc39c('0x2b')]()[_0xc39c('0x2c')](_0xc39c('0x2d'))[_0xc39c('0x2e')]([_0xc39c('0x1c'),'scheduledAt',_0xc39c('0x2f'),_0xc39c('0x21'),_0x4a1e18,_0xc39c('0x30'),_0xc39c('0x31')],squel[_0xc39c('0x32')]()[_0xc39c('0x33')](_0xc39c('0x1c'),_0xc39c('0x1c'))[_0xc39c('0x33')](_0xc39c('0x34'),_0xc39c('0x35'))[_0xc39c('0x33')]('id',_0xc39c('0x2f'))[_0xc39c('0x33')](LISTID[_0xc39c('0x36')](),_0xc39c('0x21'))[_0xc39c('0x33')](_0x4c276e['id'][_0xc39c('0x36')](),_0x4a1e18)[_0xc39c('0x33')](_0xc39c('0x34'),_0xc39c('0x30'))['field'](_0xc39c('0x34'),_0xc39c('0x31'))[_0xc39c('0x37')]('cm_contacts')[_0xc39c('0x39')](_0xc39c('0x3d'))['where'](_0xc39c('0x3e'),LISTID[_0xc39c('0x36')]())[_0xc39c('0x39')]('id\x20IN\x20?',squel[_0xc39c('0x3f')](hopperContacts))[_0xc39c('0x39')](_0xc39c('0x3a'))['where'](_0xc39c('0x3b'),squel[_0xc39c('0x32')]()[_0xc39c('0x33')]('calleridnum')[_0xc39c('0x37')]('cm_hopper_final')[_0xc39c('0x39')](_0x4a1e18+'\x20=\x20?',_0x4c276e['id'][_0xc39c('0x36')]()))[_0xc39c('0x39')](_0xc39c('0x3b'),squel[_0xc39c('0x32')]()[_0xc39c('0x33')](_0xc39c('0x1c'))[_0xc39c('0x37')]('cm_hopper')[_0xc39c('0x39')](_0x4a1e18+_0xc39c('0x3c'),_0x4c276e['id'][_0xc39c('0x36')]())))['toString']();return _0x514201;};function _0x30333a(_0x14f6f2,_0x4f17ee){var _0x50a203=squel[_0xc39c('0x2b')]()[_0xc39c('0x2c')](_0xc39c('0x2d'))[_0xc39c('0x2e')]([_0xc39c('0x1c'),_0xc39c('0x35'),_0xc39c('0x2f'),_0xc39c('0x21'),_0x4f17ee,_0xc39c('0x30'),_0xc39c('0x31')],squel[_0xc39c('0x32')]()[_0xc39c('0x33')](_0xc39c('0x1c'),_0xc39c('0x1c'))[_0xc39c('0x33')](_0xc39c('0x34'),_0xc39c('0x35'))[_0xc39c('0x33')]('id',_0xc39c('0x2f'))[_0xc39c('0x33')](LISTID['toString'](),_0xc39c('0x21'))[_0xc39c('0x33')](_0x14f6f2['id'][_0xc39c('0x36')](),_0x4f17ee)['field'](_0xc39c('0x34'),_0xc39c('0x30'))['field']('NOW()','updatedAt')[_0xc39c('0x37')]('cm_contacts')[_0xc39c('0x39')](_0xc39c('0x3d'))[_0xc39c('0x39')]('ListId\x20=\x20?',LISTID[_0xc39c('0x36')]())[_0xc39c('0x39')](_0xc39c('0x40'),squel[_0xc39c('0x3f')](hopperContacts))[_0xc39c('0x39')](_0xc39c('0x3a')))[_0xc39c('0x36')]();return _0x50a203;}function _0xc9b0f6(_0x1badf8,_0x537539){var _0x4817b2=squel[_0xc39c('0x2b')]()[_0xc39c('0x2c')]('cm_hopper_black')['fromQuery']([_0xc39c('0x1c'),_0xc39c('0x2f'),'ListId',_0x537539,_0xc39c('0x30'),_0xc39c('0x31')],squel['select']()['field']('phone',_0xc39c('0x1c'))[_0xc39c('0x33')]('id',_0xc39c('0x2f'))[_0xc39c('0x33')](LISTID[_0xc39c('0x36')](),'ListId')[_0xc39c('0x33')](_0x1badf8['id']['toString'](),_0x537539)[_0xc39c('0x33')]('NOW()',_0xc39c('0x30'))['field'](_0xc39c('0x34'),_0xc39c('0x31'))[_0xc39c('0x37')](_0xc39c('0x38'))[_0xc39c('0x39')](_0xc39c('0x3d'))[_0xc39c('0x39')]('ListId\x20=\x20?',LISTID['toString']())[_0xc39c('0x39')]('id\x20IN\x20?',squel[_0xc39c('0x3f')](hopperContacts))[_0xc39c('0x39')](_0xc39c('0x3a')))[_0xc39c('0x36')]();return _0x4817b2;}return db[_0xc39c('0x41')][_0xc39c('0x42')]({'where':{'type':_0xc39c('0x43')},'attributes':['id',_0xc39c('0x44')],'include':[{'model':db[_0xc39c('0x45')],'as':_0xc39c('0x46'),'where':{'id':LISTID}}]})['then'](function(_0x35c45a){var _0x4d7b77=[];if(_0x35c45a){var _0x54ae01;for(var _0x1dd4f3=0x0,_0x44fb84;_0x1dd4f3<_0x35c45a[_0xc39c('0x16')];_0x1dd4f3+=0x1){_0x44fb84=_0x35c45a[_0x1dd4f3][_0xc39c('0x47')]({'plain':!![]});switch(_0x44fb84[_0xc39c('0x44')]){case _0xc39c('0x48'):_0x4d7b77['push'](db['sequelize'][_0xc39c('0x49')](_0x34fcd5(_0x44fb84,_0xc39c('0x4a')))['then'](function(){})['catch'](_0x5f3ccd()));break;case _0xc39c('0x4b'):_0x4d7b77[_0xc39c('0x4c')](db[_0xc39c('0x4d')]['query'](_0x2965ea(_0x44fb84,'VoiceQueueId'))[_0xc39c('0x24')](function(){})[_0xc39c('0x26')](_0x5f3ccd()));break;default:_0x4d7b77['push'](db['sequelize']['query'](_0x30333a(_0x44fb84,'VoiceQueueId'))[_0xc39c('0x24')](function(){})[_0xc39c('0x26')](_0x5f3ccd()));}}}return _0x4d7b77;})[_0xc39c('0x4e')]()[_0xc39c('0x24')](function(){return db[_0xc39c('0x41')][_0xc39c('0x42')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0xc39c('0x45')],'as':'BlackLists','where':{'id':LISTID}}]})[_0xc39c('0x24')](function(_0x1fde02){var _0x3fe8c2=[];if(_0x1fde02){var _0xcb65b0;for(var _0x58e951=0x0,_0x315feb;_0x58e951<_0x1fde02[_0xc39c('0x16')];_0x58e951+=0x1){_0x315feb=_0x1fde02[_0x58e951][_0xc39c('0x47')]({'plain':!![]});_0x3fe8c2['push'](db[_0xc39c('0x4d')][_0xc39c('0x49')](_0xc9b0f6(_0x315feb,_0xc39c('0x4a')))[_0xc39c('0x24')](function(){})['catch'](_0x5f3ccd()));}}return _0x3fe8c2;})['all']();})[_0xc39c('0x24')](function(){return db['Campaign'][_0xc39c('0x42')]({'attributes':['id',_0xc39c('0x44')],'include':[{'model':db[_0xc39c('0x45')],'as':'Lists','where':{'id':LISTID}}]})[_0xc39c('0x24')](function(_0x297b2e){var _0x460a7b=[];if(_0x297b2e){for(var _0x346d62=0x0,_0x3df6aa;_0x346d62<_0x297b2e[_0xc39c('0x16')];_0x346d62+=0x1){_0x3df6aa=_0x297b2e[_0x346d62][_0xc39c('0x47')]({'plain':!![]});switch(_0x3df6aa[_0xc39c('0x44')]){case _0xc39c('0x48'):_0x460a7b[_0xc39c('0x4c')](db[_0xc39c('0x4d')][_0xc39c('0x49')](_0x34fcd5(_0x3df6aa,_0xc39c('0x4f')))['then'](function(){})['catch'](_0x5f3ccd()));break;case _0xc39c('0x4b'):_0x460a7b['push'](db[_0xc39c('0x4d')][_0xc39c('0x49')](_0x2965ea(_0x3df6aa,_0xc39c('0x4f')))[_0xc39c('0x24')](function(){})[_0xc39c('0x26')](_0x5f3ccd()));break;default:_0x460a7b[_0xc39c('0x4c')](db[_0xc39c('0x4d')]['query'](_0x30333a(_0x3df6aa,_0xc39c('0x4f')))[_0xc39c('0x24')](function(){})['catch'](_0x5f3ccd()));}}}return _0x460a7b;})[_0xc39c('0x4e')]();})[_0xc39c('0x24')](function(){return db['Campaign'][_0xc39c('0x42')]({'attributes':['id'],'include':[{'model':db[_0xc39c('0x45')],'as':_0xc39c('0x50'),'where':{'id':LISTID}}]})[_0xc39c('0x24')](function(_0x20ab93){var _0x4ee0ce=[];if(_0x20ab93){for(var _0x5b5671=0x0,_0x3c7b08;_0x5b5671<_0x20ab93['length'];_0x5b5671+=0x1){_0x3c7b08=_0x20ab93[_0x5b5671]['get']({'plain':!![]});_0x4ee0ce[_0xc39c('0x4c')](db[_0xc39c('0x4d')][_0xc39c('0x49')](_0xc9b0f6(_0x3c7b08,_0xc39c('0x4f')))[_0xc39c('0x24')](function(){})[_0xc39c('0x26')](_0x5f3ccd()));}}return _0x4ee0ce;})[_0xc39c('0x4e')]();})[_0xc39c('0x26')](function(_0x3e2b26){logger[_0xc39c('0x13')](_0xc39c('0x51'),_0xc39c('0x52'),_0x3e2b26[_0xc39c('0x28')]);});}var processPromises=function(_0x45eceb){return BPromise[_0xc39c('0x4e')](promises)[_0xc39c('0x24')](function(_0x12c964){})[_0xc39c('0x26')](function(_0x7a1879){logger[_0xc39c('0x13')](_0xc39c('0x53'),JSON['stringify'](_0x7a1879));})[_0xc39c('0x54')](function(){socket[_0xc39c('0x55')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x45eceb){return _0x45eceb[_0xc39c('0x56')]();}});};var endCsv=function(){return BPromise['resolve']()[_0xc39c('0x24')](function(){if(hopperContacts){return checkHopper();}})[_0xc39c('0x24')](function(){socket[_0xc39c('0x55')](_0xc39c('0x57')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xc39c('0x58')](FILEPATH);}catch(_0x422959){logger[_0xc39c('0x13')](_0xc39c('0x59'),JSON[_0xc39c('0x5a')](_0x422959));}finally{process[_0xc39c('0x5b')](0x0);}});};process['on']('SIGINT',function(){logger['info'](_0xc39c('0x5c'));endCsv();});function main(){return BPromise[_0xc39c('0x5d')]()[_0xc39c('0x24')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0xc39c('0x23')][_0xc39c('0x42')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x581556){var _0x52da30=fs[_0xc39c('0x5e')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x52da30,{'header':!![],'skipEmptyLines':!![],'step':function(_0x15734f,_0x1b0fa2){total+=0x1;var _0x391e7e=total;promises['push'](checkRow(_0x15734f,_0x581556,_0x391e7e)[_0xc39c('0x24')](function(){success+=0x1;})['catch'](function(_0x48e007){if(_0x48e007[_0xc39c('0x13')]){errors+=0x1;delete _0x48e007['error'];}else if(_0x48e007['duplicate']){duplicates+=0x1;delete _0x48e007[_0xc39c('0x5f')];}rows['push'](_0x48e007);}));if(total%0xc8===0x0){_0x1b0fa2[_0xc39c('0x60')]();return processPromises(_0x1b0fa2);}},'complete':function(){return processPromises()[_0xc39c('0x24')](function(){logger[_0xc39c('0x61')](_0xc39c('0x62'));endCsv();});},'error':function(_0x23f07e,_0x5be4ea){logger['info'](_0xc39c('0x63'),JSON[_0xc39c('0x5a')](_0x23f07e));endCsv();}});})[_0xc39c('0x26')](function(_0x290d18){logger[_0xc39c('0x13')](_0xc39c('0x64'),JSON['stringify'](_0x290d18));});}main();
\ No newline at end of file
index 04f9bbb..9f19ca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x941b=['isValid','firstName','\x20not\x20specified','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','error','duplicates','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',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','voice_queues_has_cm_blacklists','VoiceQueueId','campaigns','CampaignId','campaigns_has_cm_blacklists','then','finish','affectedRows','unlink','exit','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','binding','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','path','lodash','moment','squel','ioredis','../../../config/environment','../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','format','test','select','field','phone','from','.id\x20=\x20','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','join','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','UserId','recallme','cm_contacts.ListId\x20=\x20','.CmListId','where','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_contacts.createdAt','cm_hopper_black','fields','ListId\x20=\x20?','concat','keys','CompanyId','cm_contacts','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','message','errors','code','info','sequelize','query','spread','catch','stringify','send','root','server/files/tmp','.csv','header','writeFileSync','parse','data','length','rows','hasOwnProperty','trim','replace','push','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD'];(function(_0x1f2119,_0x27bd83){var _0x3f9cdf=function(_0x25a784){while(--_0x25a784){_0x1f2119['push'](_0x1f2119['shift']());}};_0x3f9cdf(++_0x27bd83);}(_0x941b,0xab));var _0xb941=function(_0x4572b7,_0x4c4948){_0x4572b7=_0x4572b7-0x0;var _0x3f55cc=_0x941b[_0x4572b7];return _0x3f55cc;};'use strict';var fs=require('fs');var path=require(_0xb941('0x0'));var _=require(_0xb941('0x1'));var Papa=require('papaparse');var util=require('util');var BPromise=require('bluebird');var moment=require(_0xb941('0x2'));var squel=require(_0xb941('0x3'));var Redis=require(_0xb941('0x4'));var db=require('../../../mysqldb')['db'];var config=require(_0xb941('0x5'));var logger=require(_0xb941('0x6'))(_0xb941('0x7'));config[_0xb941('0x8')]=_[_0xb941('0x9')](config[_0xb941('0x8')],{'host':_0xb941('0xa'),'port':0x18eb});var socket=require(_0xb941('0xb'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xb941('0xc')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x3a7475){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))*$/[_0xb941('0xd')](_0x3a7475);}function selectNotIn(_0x43098b,_0x5f4d65,_0x21b686,_0x4fa725,_0x4b5c38){return squel[_0xb941('0xe')]()[_0xb941('0xf')](_0xb941('0x10'))[_0xb941('0x11')](_0x4fa725)['join'](_0x5f4d65,null,_0x5f4d65+_0xb941('0x12')+_0x4fa725+'.'+_0x21b686)['where'](_0x4fa725+'.'+_0x21b686+_0xb941('0x13')+_0x43098b+'.'+_0x21b686)['where'](_0x5f4d65+_0xb941('0x14')+_0x4b5c38[_0xb941('0x15')]()+')');}function insertCmHopper(_0x438375,_0x50d1ab,_0x138779,_0x3dc78c,_0x5d9e32){var _0x46857b=[_0xb941('0x16'),_0xb941('0x17'),_0xb941('0x18'),_0xb941('0x19'),_0x50d1ab+'.'+_0x3dc78c,'cm_contacts.createdAt',_0xb941('0x1a'),_0xb941('0x1b'),'cm_contacts.UserId','\x22'+_0x5d9e32+'\x22'];return squel[_0xb941('0x1c')]()[_0xb941('0x1d')](_0xb941('0x1e'))[_0xb941('0x1f')](['phone',_0xb941('0x20'),_0xb941('0x21'),_0xb941('0x22'),_0x3dc78c,_0xb941('0x23'),_0xb941('0x24'),'priority',_0xb941('0x25'),_0xb941('0x26')],squel[_0xb941('0xe')]()['fields'](_0x46857b)['from'](_0x50d1ab)['join']('cm_contacts',null,_0xb941('0x27')+_0x50d1ab+_0xb941('0x28'))[_0xb941('0x15')](_0x138779,null,_0x138779+_0xb941('0x12')+_0x50d1ab+'.'+_0x3dc78c)[_0xb941('0x29')](_0x50d1ab+_0xb941('0x2a'),_0x438375)[_0xb941('0x29')](_0xb941('0x2b'),NOW)[_0xb941('0x29')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x50d1ab,_0x138779,_0x3dc78c,_0xb941('0x1e'),[_0xb941('0x2c'),_0xb941('0x2d')]))['where'](_0xb941('0x2e'),selectNotIn(_0x50d1ab,_0x138779,_0x3dc78c,_0xb941('0x1e'),['\x22always\x22'])))[_0xb941('0x2f')]();}function insertCmHopperBlack(_0x3869e5,_0x295927,_0x44f2bd,_0x53512f){var _0xf99598=[_0xb941('0x16'),_0xb941('0x18'),_0xb941('0x19'),_0x295927+'.'+_0x53512f,_0xb941('0x30'),'cm_contacts.updatedAt'];return squel['insert']()[_0xb941('0x1d')](_0xb941('0x31'))['fromQuery']([_0xb941('0x10'),_0xb941('0x21'),_0xb941('0x22'),_0x53512f,_0xb941('0x23'),'updatedAt'],squel['select']()[_0xb941('0x32')](_0xf99598)[_0xb941('0x11')](_0x295927)[_0xb941('0x15')]('cm_contacts',null,_0xb941('0x27')+_0x295927+_0xb941('0x28'))[_0xb941('0x15')](_0x44f2bd,null,_0x44f2bd+'.id\x20=\x20'+_0x295927+'.'+_0x53512f)[_0xb941('0x29')](_0x295927+_0xb941('0x2a'),_0x3869e5)[_0xb941('0x29')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xb941('0x29')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xb941('0xe')]()[_0xb941('0xf')](_0xb941('0x10'))[_0xb941('0x11')](_0xb941('0x31'))[_0xb941('0x29')](_0xb941('0x33'),_0x3869e5)[_0xb941('0x29')](_0x53512f+'\x20=\x20?',_0x295927+'.'+_0x53512f)))['toString']();}function insertCmContact(_0x1cd27d,_0x509933,_0x2ebd0f,_0x49d378){var _0xe7d81=_[_0xb941('0x34')](_[_0xb941('0x35')](_0x49d378),[_0xb941('0x22'),_0xb941('0x36'),'createdAt',_0xb941('0x24')]);return squel[_0xb941('0x1c')]()[_0xb941('0x1d')](_0xb941('0x37'))[_0xb941('0x1f')](_0xe7d81,squel[_0xb941('0xe')]()[_0xb941('0x32')](_0xe7d81)['from'](_0x509933)[_0xb941('0x29')]('('+_0x2ebd0f['join'](',')+')\x20NOT\x20IN\x20?',squel[_0xb941('0xe')]()[_0xb941('0x32')](_0x2ebd0f)[_0xb941('0x11')](_0xb941('0x37'))[_0xb941('0x29')]('ListId\x20=\x20?',_0x1cd27d)[_0xb941('0x29')](_0xb941('0x38')))[_0xb941('0x29')](_0xb941('0x39'),squel[_0xb941('0xe')]()[_0xb941('0xf')](_0xb941('0x3a'),_0xb941('0x3b'))[_0xb941('0x11')](_0x509933)[_0xb941('0x3c')](_0x2ebd0f[_0xb941('0x15')](','))))[_0xb941('0x2f')]();}function handleStop(){logger['info'](_0xb941('0x3d'));stopped=!![];}function handleUncaughtException(_0x183fb1){logger['error'](_0x183fb1[_0xb941('0x3e')]);process['exit'](0x1);}function handleError(_0x424744,_0x10f855){stats[_0xb941('0x3f')]['push']({'name':_0x10f855[_0xb941('0x40')],'message':_0x10f855[_0xb941('0x3e')],'row':_0x424744});}function handleQuery(_0x23326c){logger[_0xb941('0x41')](_0x23326c);return db[_0xb941('0x42')][_0xb941('0x43')](_0x23326c)[_0xb941('0x44')](function(_0xff0d48){results['push'](_0xff0d48);})[_0xb941('0x45')](function(_0x43a2e1){logger['error'](_0x43a2e1[_0xb941('0x3e')]);});}function main(_0x19a7fb,_0x3386e3,_0x429109,_0x403a5b){logger[_0xb941('0x41')]('main',_0x19a7fb,JSON[_0xb941('0x46')](_0x3386e3));process[_0xb941('0x47')]('start');var _0x178927=_0x3386e3['binding'];var _0x278ae6=_0x3386e3['socket_timestamp'];var _0x501224=path[_0xb941('0x15')](config[_0xb941('0x48')],_0xb941('0x49'),_0x278ae6+_0xb941('0x4a'));var _0x5582ab=_[_0xb941('0x35')](_0x178927)[_0xb941('0x15')]();logger[_0xb941('0x41')](_0xb941('0x4b'),_0x5582ab);fs[_0xb941('0x4c')](_0x501224,_0x5582ab+'\x0a');Papa[_0xb941('0x4d')](fs['createReadStream'](_0x19a7fb),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2c16e5,_0x198d15){try{for(var _0x39f0e6=0x0,_0x1dd620=[];_0x39f0e6<_0x2c16e5[_0xb941('0x4e')][_0xb941('0x4f')];_0x39f0e6++){stats[_0xb941('0x50')]+=0x1;if(_0x2c16e5['errors'][_0x39f0e6]){handleError(_0x2c16e5[_0xb941('0x4e')][_0x39f0e6],_0x2c16e5[_0xb941('0x3f')][_0x39f0e6]);}else{var _0x1bde16=[];for(var _0x585836 in _0x178927){if(_0x178927[_0xb941('0x51')](_0x585836)){if(_0x2c16e5[_0xb941('0x4e')][_0x39f0e6][_0x178927[_0x585836]]){var _0x53f4d0=_[_0xb941('0x52')](_0x2c16e5[_0xb941('0x4e')][_0x39f0e6][_0x178927[_0x585836]][_0xb941('0x53')](/"/g,'\x27'));switch(_0x585836){case _0xb941('0x20'):var _0x4b3b83=moment(_0x53f4d0,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x4b3b83['isValid']()){_0x1dd620[_0xb941('0x54')]('\x22'+_0x53f4d0+'\x22');}else{_0x1bde16[_0xb941('0x54')](_0xb941('0x55'));}break;case _0xb941('0x56'):var _0x3af8b3=parseInt(_0x53f4d0);_0x53f4d0=_[_0xb941('0x57')](_0x3af8b3)||_0x3af8b3<0x0||_0x3af8b3>0x4?_0x403a5b?0x3:0x2:_0x3af8b3;_0x1dd620[_0xb941('0x54')]('\x22'+_0x53f4d0+'\x22');break;case _0xb941('0x25'):var _0x159a90=parseInt(_0x53f4d0);if(_[_0xb941('0x58')](_0x159a90)&&_[_0xb941('0x59')](_0x429109,_0x159a90)){_0x1dd620[_0xb941('0x54')]('\x22'+_0x159a90+'\x22');}else{_0x1bde16['push'](_0xb941('0x5a'));}break;case _0xb941('0x5b'):if(isEmail(_0x53f4d0)){_0x1dd620['push']('\x22'+_0x53f4d0+'\x22');}else{_0x1bde16[_0xb941('0x54')](_0xb941('0x5c'));}break;case _0xb941('0x5d'):var _0x53349b=moment(_0x53f4d0,_0xb941('0x5e'),!![]);if(_0x53349b[_0xb941('0x5f')]()){_0x1dd620[_0xb941('0x54')]('\x22'+_0x53f4d0+'\x22');}else{_0x1bde16['push']('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x1dd620[_0xb941('0x54')]('\x22'+_0x53f4d0+'\x22');}}else{switch(_0x585836){case _0xb941('0x60'):case _0xb941('0x10'):_0x1bde16['push'](_0x585836+_0xb941('0x61'));break;default:_0x1dd620[_0xb941('0x54')]('\x22\x22');}}}}if(_0x1bde16[_0xb941('0x4f')]){handleError(_0x2c16e5[_0xb941('0x4e')][_0x39f0e6],{'code':'SystemRow','message':_0x1bde16[_0xb941('0x15')]()});}else{fs[_0xb941('0x62')](_0x501224,_0x1dd620[_0xb941('0x15')]()+'\x0a');}_0x1dd620=[];}if(!(stats[_0xb941('0x50')]%0xc8)){socket[_0xb941('0x63')](_0xb941('0x64')+_0x278ae6,stats);stats[_0xb941('0x3f')]=[];}}if(stopped){logger[_0xb941('0x41')](_0xb941('0x65'));_0x198d15[_0xb941('0x66')]();}}catch(_0x4192a2){handleError(_0x2c16e5[_0xb941('0x4e')][_0x39f0e6],{'code':_0xb941('0x67'),'message':_0x4192a2[_0xb941('0x3e')]});logger[_0xb941('0x68')]('step',_0x4192a2['message']);}},'complete':function(){try{var _0x3f46a7=[];var _0x199647='cm_contacts';if(_0x3386e3[_0xb941('0x69')]&&_0x3386e3[_0xb941('0x69')][_0xb941('0x4f')]){_0x199647='cm_contacts_'+_0x278ae6;_0x3f46a7[_0xb941('0x54')](_0xb941('0x6a')+_0x199647+'\x20LIKE\x20cm_contacts;');}var _0x1e4f3f=util[_0xb941('0xc')](_0xb941('0x6b'),_0x501224,_0x199647,_0x5582ab,_0x3386e3['ListId'],_0x3386e3[_0xb941('0x36')]||null,NOW,NOW);if(_['isNil'](_0x178927[_0xb941('0x20')])){_0x1e4f3f+=_0xb941('0x6c');}_0x3f46a7['push'](_0x1e4f3f);if(_0x3386e3[_0xb941('0x69')]&&_0x3386e3['duplicates'][_0xb941('0x4f')]){_0x3f46a7[_0xb941('0x54')](insertCmContact(_0x3386e3[_0xb941('0x22')],_0x199647,_0x3386e3['duplicates'],_0x178927));_0x3f46a7[_0xb941('0x54')](_0xb941('0x6d')+_0x199647+';');}_0x3f46a7['push'](insertCmHopper(_0x3386e3['ListId'],_0xb941('0x6e'),_0xb941('0x6f'),'VoiceQueueId',_0x403a5b));_0x3f46a7[_0xb941('0x54')](insertCmHopperBlack(_0x3386e3[_0xb941('0x22')],_0xb941('0x70'),_0xb941('0x6f'),_0xb941('0x71')));_0x3f46a7['push'](insertCmHopper(_0x3386e3[_0xb941('0x22')],'campaigns_has_cm_lists',_0xb941('0x72'),_0xb941('0x73'),_0x403a5b));_0x3f46a7[_0xb941('0x54')](insertCmHopperBlack(_0x3386e3[_0xb941('0x22')],_0xb941('0x74'),_0xb941('0x72'),_0xb941('0x73')));BPromise['each'](_0x3f46a7,handleQuery)[_0xb941('0x75')](function(_0x3afee9){stats[_0xb941('0x76')]=!![];stats['affectedRows']=_0x3386e3['duplicates']&&_0x3386e3[_0xb941('0x69')]['length']?results[0x2]['affectedRows']:results[0x0][_0xb941('0x77')];socket[_0xb941('0x63')](_0xb941('0x64')+_0x278ae6,stats);fs[_0xb941('0x78')](_0x19a7fb);fs[_0xb941('0x78')](_0x501224);process[_0xb941('0x79')](0x0);})[_0xb941('0x45')](function(_0x52fc68){logger['error'](_0x52fc68[_0xb941('0x3e')]);process[_0xb941('0x79')](0x1);});}catch(_0x27409d){logger['error'](_0xb941('0x7a'),_0x27409d[_0xb941('0x3e')]);process[_0xb941('0x79')](0x1);}},'error':function(_0x3167a1,_0x8fc7df,_0x119944,_0x315187){throw new Error(_0x315187);}});}function validate(){if(process[_0xb941('0x7b')]&&process[_0xb941('0x7b')][_0xb941('0x4f')]<0x4){throw new Error(_0xb941('0x7c'));}var _0x34a2f7=path[_0xb941('0x15')](config[_0xb941('0x48')],_0xb941('0x49'),process['argv'][0x2]);if(!fs[_0xb941('0x7d')](_0x34a2f7)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x5ec369={};try{_0x5ec369=JSON[_0xb941('0x4d')](process[_0xb941('0x7b')][0x3]);if(!_0x5ec369[_0xb941('0x7e')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x5ec369[_0xb941('0x7e')]['phone']){throw new Error(_0xb941('0x7f'));}if(!_0x5ec369[_0xb941('0x7e')][_0xb941('0x60')]){throw new Error(_0xb941('0x80'));}var _0x426224=0x0;if(_0x5ec369[_0xb941('0x7e')]['UserId']){_0x426224=0x1;}if(!_0x5ec369['ListId']){throw new Error(_0xb941('0x81'));}}catch(_0x5a911b){throw new Error('body\x20id\x20mandatory');}var _0x2f5bb8=[];try{_0x2f5bb8=_[_0xb941('0x82')](JSON['parse'](process[_0xb941('0x7b')][0x4]),'id');}catch(_0x4d02e0){logger[_0xb941('0x41')](_0xb941('0x83'));}main(_0x34a2f7,_0x5ec369,_0x2f5bb8,_0x426224);}validate();process['on'](_0xb941('0x84'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0x0371=['path','lodash','papaparse','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/logger','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','field','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.updatedAt','insert','into','cm_hopper','phone','ContactId','ListId','createdAt','updatedAt','priority','UserId','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','cm_contacts.ListId','cm_hopper_black','fromQuery','select','.CmListId','ListId\x20=\x20?','\x20=\x20?','concat',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','group','info','error','message','errors','push','sequelize','query','spread','catch','main','stringify','binding','socket_timestamp','server/files/tmp','keys','header','createReadStream','data','hasOwnProperty','trim','replace','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','length','appendFileSync','contact:import:','abort','SystemError','step','duplicates','\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','CompanyId','isNil',',\x20scheduledAt\x20=\x20NOW()','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','then','finish','affectedRows','unlink','exit','argv','root','existsSync','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','uncaughtException'];(function(_0x239174,_0x32b098){var _0x46c4bd=function(_0x1f0a18){while(--_0x1f0a18){_0x239174['push'](_0x239174['shift']());}};_0x46c4bd(++_0x32b098);}(_0x0371,0x180));var _0x1037=function(_0x3e25c1,_0x1d15f9){_0x3e25c1=_0x3e25c1-0x0;var _0x52e7f2=_0x0371[_0x3e25c1];return _0x52e7f2;};'use strict';var fs=require('fs');var path=require(_0x1037('0x0'));var _=require(_0x1037('0x1'));var Papa=require(_0x1037('0x2'));var util=require('util');var BPromise=require(_0x1037('0x3'));var moment=require(_0x1037('0x4'));var squel=require(_0x1037('0x5'));var Redis=require(_0x1037('0x6'));var db=require(_0x1037('0x7'))['db'];var config=require('../../../config/environment');var logger=require(_0x1037('0x8'))('import');config[_0x1037('0x9')]=_[_0x1037('0xa')](config[_0x1037('0x9')],{'host':_0x1037('0xb'),'port':0x18eb});var socket=require(_0x1037('0xc'))(new Redis(config[_0x1037('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x1037('0xd')](_0x1037('0xe'));function isEmail(_0x5a662b){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'](_0x5a662b);}function selectNotIn(_0x35692c,_0x203d7a,_0x692468,_0x1ba8d3,_0x2ab115){return squel['select']()[_0x1037('0xf')]('phone')['from'](_0x1ba8d3)[_0x1037('0x10')](_0x203d7a,null,_0x203d7a+_0x1037('0x11')+_0x1ba8d3+'.'+_0x692468)[_0x1037('0x12')](_0x1ba8d3+'.'+_0x692468+_0x1037('0x13')+_0x35692c+'.'+_0x692468)[_0x1037('0x12')](_0x203d7a+_0x1037('0x14')+_0x2ab115[_0x1037('0x10')]()+')');}function insertCmHopper(_0x15c478,_0xd7c7a3,_0x1130c9,_0x1c07e6,_0x440d4b){var _0x129b6f=[_0x1037('0x15'),_0x1037('0x16'),_0x1037('0x17'),'cm_contacts.ListId',_0xd7c7a3+'.'+_0x1c07e6,'cm_contacts.createdAt',_0x1037('0x18'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x440d4b+'\x22'];return squel[_0x1037('0x19')]()[_0x1037('0x1a')](_0x1037('0x1b'))['fromQuery']([_0x1037('0x1c'),'scheduledat',_0x1037('0x1d'),_0x1037('0x1e'),_0x1c07e6,_0x1037('0x1f'),_0x1037('0x20'),_0x1037('0x21'),_0x1037('0x22'),'recallme'],squel['select']()[_0x1037('0x23')](_0x129b6f)[_0x1037('0x24')](_0xd7c7a3)['join'](_0x1037('0x25'),null,_0x1037('0x26')+_0xd7c7a3+'.CmListId')[_0x1037('0x10')](_0x1130c9,null,_0x1130c9+_0x1037('0x11')+_0xd7c7a3+'.'+_0x1c07e6)[_0x1037('0x12')](_0xd7c7a3+_0x1037('0x27'),_0x15c478)[_0x1037('0x12')](_0x1037('0x28'),NOW)[_0x1037('0x12')](_0x1037('0x29'),selectNotIn(_0xd7c7a3,_0x1130c9,_0x1c07e6,_0x1037('0x1b'),['\x22always\x22',_0x1037('0x2a')]))['where'](_0x1037('0x29'),selectNotIn(_0xd7c7a3,_0x1130c9,_0x1c07e6,'cm_hopper',[_0x1037('0x2b')])))[_0x1037('0x2c')]();}function insertCmHopperBlack(_0x1b16a8,_0x367be5,_0x591db7,_0xaa2556){var _0x45d025=[_0x1037('0x15'),'cm_contacts.id',_0x1037('0x2d'),_0x367be5+'.'+_0xaa2556,'cm_contacts.createdAt',_0x1037('0x18')];return squel[_0x1037('0x19')]()[_0x1037('0x1a')](_0x1037('0x2e'))[_0x1037('0x2f')]([_0x1037('0x1c'),_0x1037('0x1d'),_0x1037('0x1e'),_0xaa2556,_0x1037('0x1f'),_0x1037('0x20')],squel[_0x1037('0x30')]()[_0x1037('0x23')](_0x45d025)[_0x1037('0x24')](_0x367be5)[_0x1037('0x10')]('cm_contacts',null,_0x1037('0x26')+_0x367be5+_0x1037('0x31'))[_0x1037('0x10')](_0x591db7,null,_0x591db7+'.id\x20=\x20'+_0x367be5+'.'+_0xaa2556)[_0x1037('0x12')](_0x367be5+_0x1037('0x27'),_0x1b16a8)[_0x1037('0x12')](_0x1037('0x28'),NOW)[_0x1037('0x12')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x1037('0x30')]()[_0x1037('0xf')]('phone')[_0x1037('0x24')](_0x1037('0x2e'))[_0x1037('0x12')](_0x1037('0x32'),_0x1b16a8)[_0x1037('0x12')](_0xaa2556+_0x1037('0x33'),_0x367be5+'.'+_0xaa2556)))['toString']();}function insertCmContact(_0x9b8b45,_0x531103,_0x225f17,_0x393975){var _0x3fedf3=_[_0x1037('0x34')](_['keys'](_0x393975),[_0x1037('0x1e'),'CompanyId',_0x1037('0x1f'),'updatedAt']);return squel[_0x1037('0x19')]()[_0x1037('0x1a')](_0x1037('0x25'))['fromQuery'](_0x3fedf3,squel[_0x1037('0x30')]()[_0x1037('0x23')](_0x3fedf3)[_0x1037('0x24')](_0x531103)[_0x1037('0x12')]('('+_0x225f17[_0x1037('0x10')](',')+_0x1037('0x35'),squel['select']()[_0x1037('0x23')](_0x225f17)['from']('cm_contacts')[_0x1037('0x12')]('ListId\x20=\x20?',_0x9b8b45)[_0x1037('0x12')]('deletedAt\x20IS\x20NULL'))['where'](_0x1037('0x36'),squel[_0x1037('0x30')]()[_0x1037('0xf')](_0x1037('0x37'),_0x1037('0x38'))[_0x1037('0x24')](_0x531103)[_0x1037('0x39')](_0x225f17['join'](','))))[_0x1037('0x2c')]();}function handleStop(){logger[_0x1037('0x3a')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x1a6ae3){logger[_0x1037('0x3b')](_0x1a6ae3[_0x1037('0x3c')]);process['exit'](0x1);}function handleError(_0x2eb0b5,_0x368360){stats[_0x1037('0x3d')][_0x1037('0x3e')]({'name':_0x368360['code'],'message':_0x368360[_0x1037('0x3c')],'row':_0x2eb0b5});}function handleQuery(_0x1ea261){logger[_0x1037('0x3a')](_0x1ea261);return db[_0x1037('0x3f')][_0x1037('0x40')](_0x1ea261)[_0x1037('0x41')](function(_0x5410bc){results[_0x1037('0x3e')](_0x5410bc);})[_0x1037('0x42')](function(_0x4b8bc1){logger[_0x1037('0x3b')](_0x4b8bc1[_0x1037('0x3c')]);});}function main(_0x134a77,_0xb9f006,_0x124a13,_0x4284df){logger['info'](_0x1037('0x43'),_0x134a77,JSON[_0x1037('0x44')](_0xb9f006));process['send']('start');var _0x27e8dc=_0xb9f006[_0x1037('0x45')];var _0x385678=_0xb9f006[_0x1037('0x46')];var _0x18ef3c=path[_0x1037('0x10')](config['root'],_0x1037('0x47'),_0x385678+'.csv');var _0x41adb4=_[_0x1037('0x48')](_0x27e8dc)[_0x1037('0x10')]();logger[_0x1037('0x3a')](_0x1037('0x49'),_0x41adb4);fs['writeFileSync'](_0x18ef3c,_0x41adb4+'\x0a');Papa['parse'](fs[_0x1037('0x4a')](_0x134a77),{'header':!![],'skipEmptyLines':!![],'step':function(_0x156bb1,_0x54e038){try{for(var _0x22f71a=0x0,_0x23ad88=[];_0x22f71a<_0x156bb1[_0x1037('0x4b')]['length'];_0x22f71a++){stats['rows']+=0x1;if(_0x156bb1['errors'][_0x22f71a]){handleError(_0x156bb1[_0x1037('0x4b')][_0x22f71a],_0x156bb1['errors'][_0x22f71a]);}else{var _0x415d59=[];for(var _0x21159f in _0x27e8dc){if(_0x27e8dc[_0x1037('0x4c')](_0x21159f)){if(_0x156bb1[_0x1037('0x4b')][_0x22f71a][_0x27e8dc[_0x21159f]]){var _0x5b96ad=_[_0x1037('0x4d')](_0x156bb1['data'][_0x22f71a][_0x27e8dc[_0x21159f]][_0x1037('0x4e')](/"/g,'\x27'));switch(_0x21159f){case _0x1037('0x4f'):var _0x40016f=moment(_0x5b96ad,_0x1037('0xe'),!![]);if(_0x40016f[_0x1037('0x50')]()){_0x23ad88[_0x1037('0x3e')]('\x22'+_0x5b96ad+'\x22');}else{_0x415d59['push'](_0x1037('0x51'));}break;case _0x1037('0x21'):var _0x753564=parseInt(_0x5b96ad);_0x5b96ad=_[_0x1037('0x52')](_0x753564)||_0x753564<0x0||_0x753564>0x4?_0x4284df?0x3:0x2:_0x753564;_0x23ad88[_0x1037('0x3e')]('\x22'+_0x5b96ad+'\x22');break;case _0x1037('0x22'):var _0x1eb1a4=parseInt(_0x5b96ad);if(_[_0x1037('0x53')](_0x1eb1a4)&&_[_0x1037('0x54')](_0x124a13,_0x1eb1a4)){_0x23ad88['push']('\x22'+_0x1eb1a4+'\x22');}else{_0x415d59[_0x1037('0x3e')](_0x1037('0x55'));}break;case _0x1037('0x56'):if(isEmail(_0x5b96ad)){_0x23ad88['push']('\x22'+_0x5b96ad+'\x22');}else{_0x415d59[_0x1037('0x3e')](_0x1037('0x57'));}break;case _0x1037('0x58'):var _0x2897f3=moment(_0x5b96ad,'YYYY-MM-DD',!![]);if(_0x2897f3[_0x1037('0x50')]()){_0x23ad88[_0x1037('0x3e')]('\x22'+_0x5b96ad+'\x22');}else{_0x415d59[_0x1037('0x3e')](_0x1037('0x59'));}break;default:_0x23ad88[_0x1037('0x3e')]('\x22'+_0x5b96ad+'\x22');}}else{switch(_0x21159f){case _0x1037('0x5a'):case _0x1037('0x1c'):_0x415d59['push'](_0x21159f+_0x1037('0x5b'));break;default:_0x23ad88['push']('\x22\x22');}}}}if(_0x415d59[_0x1037('0x5c')]){handleError(_0x156bb1[_0x1037('0x4b')][_0x22f71a],{'code':'SystemRow','message':_0x415d59['join']()});}else{fs[_0x1037('0x5d')](_0x18ef3c,_0x23ad88[_0x1037('0x10')]()+'\x0a');}_0x23ad88=[];}if(!(stats['rows']%0xc8)){socket['emit'](_0x1037('0x5e')+_0x385678,stats);stats['errors']=[];}}if(stopped){logger[_0x1037('0x3a')]('Abort\x20parser');_0x54e038[_0x1037('0x5f')]();}}catch(_0x232b65){handleError(_0x156bb1[_0x1037('0x4b')][_0x22f71a],{'code':_0x1037('0x60'),'message':_0x232b65[_0x1037('0x3c')]});logger['error'](_0x1037('0x61'),_0x232b65[_0x1037('0x3c')]);}},'complete':function(){try{var _0x39abd5=[];var _0x43d5c9=_0x1037('0x25');if(_0xb9f006['duplicates']&&_0xb9f006[_0x1037('0x62')][_0x1037('0x5c')]){_0x43d5c9='cm_contacts_'+_0x385678;_0x39abd5[_0x1037('0x3e')]('CREATE\x20TABLE\x20'+_0x43d5c9+_0x1037('0x63'));}var _0x3616e4=util[_0x1037('0xd')](_0x1037('0x64'),_0x18ef3c,_0x43d5c9,_0x41adb4,_0xb9f006[_0x1037('0x1e')],_0xb9f006[_0x1037('0x65')]||null,NOW,NOW);if(_[_0x1037('0x66')](_0x27e8dc[_0x1037('0x4f')])){_0x3616e4+=_0x1037('0x67');}_0x39abd5[_0x1037('0x3e')](_0x3616e4);if(_0xb9f006[_0x1037('0x62')]&&_0xb9f006[_0x1037('0x62')][_0x1037('0x5c')]){_0x39abd5[_0x1037('0x3e')](insertCmContact(_0xb9f006[_0x1037('0x1e')],_0x43d5c9,_0xb9f006[_0x1037('0x62')],_0x27e8dc));_0x39abd5['push']('DROP\x20TABLE\x20'+_0x43d5c9+';');}_0x39abd5[_0x1037('0x3e')](insertCmHopper(_0xb9f006[_0x1037('0x1e')],'voice_queues_has_cm_lists',_0x1037('0x68'),_0x1037('0x69'),_0x4284df));_0x39abd5[_0x1037('0x3e')](insertCmHopperBlack(_0xb9f006[_0x1037('0x1e')],'voice_queues_has_cm_blacklists','voice_queues',_0x1037('0x69')));_0x39abd5[_0x1037('0x3e')](insertCmHopper(_0xb9f006[_0x1037('0x1e')],_0x1037('0x6a'),_0x1037('0x6b'),_0x1037('0x6c'),_0x4284df));_0x39abd5['push'](insertCmHopperBlack(_0xb9f006[_0x1037('0x1e')],_0x1037('0x6d'),'campaigns',_0x1037('0x6c')));BPromise['each'](_0x39abd5,handleQuery)[_0x1037('0x6e')](function(_0x3fa73b){stats[_0x1037('0x6f')]=!![];stats[_0x1037('0x70')]=_0xb9f006[_0x1037('0x62')]&&_0xb9f006[_0x1037('0x62')][_0x1037('0x5c')]?results[0x2]['affectedRows']:results[0x0][_0x1037('0x70')];socket['emit'](_0x1037('0x5e')+_0x385678,stats);fs['unlink'](_0x134a77);fs[_0x1037('0x71')](_0x18ef3c);process[_0x1037('0x72')](0x0);})['catch'](function(_0x430f00){logger['error'](_0x430f00['message']);process[_0x1037('0x72')](0x1);});}catch(_0x4bed75){logger[_0x1037('0x3b')]('complete',_0x4bed75[_0x1037('0x3c')]);process['exit'](0x1);}},'error':function(_0x33d338,_0x90cc36,_0x1e2f66,_0x51827c){throw new Error(_0x51827c);}});}function validate(){if(process[_0x1037('0x73')]&&process[_0x1037('0x73')]['length']<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x1cbdbc=path[_0x1037('0x10')](config[_0x1037('0x74')],_0x1037('0x47'),process[_0x1037('0x73')][0x2]);if(!fs[_0x1037('0x75')](_0x1cbdbc)){throw new Error(_0x1037('0x76'));}var _0x24dc8d={};try{_0x24dc8d=JSON[_0x1037('0x77')](process[_0x1037('0x73')][0x3]);if(!_0x24dc8d['binding']){throw new Error(_0x1037('0x78'));}if(!_0x24dc8d['binding'][_0x1037('0x1c')]){throw new Error(_0x1037('0x79'));}if(!_0x24dc8d[_0x1037('0x45')][_0x1037('0x5a')]){throw new Error(_0x1037('0x7a'));}var _0x5728eb=0x0;if(_0x24dc8d['binding'][_0x1037('0x22')]){_0x5728eb=0x1;}if(!_0x24dc8d[_0x1037('0x1e')]){throw new Error(_0x1037('0x7b'));}}catch(_0x3cea0a){throw new Error(_0x1037('0x7c'));}var _0x990280=[];try{_0x990280=_[_0x1037('0x7d')](JSON[_0x1037('0x77')](process['argv'][0x4]),'id');}catch(_0x5bddf5){logger[_0x1037('0x3a')]('No\x20agent\x20available');}main(_0x1cbdbc,_0x24dc8d,_0x990280,_0x5728eb);}validate();process['on'](_0x1037('0x7e'),handleStop);process['on'](_0x1037('0x7f'),handleUncaughtException);
\ No newline at end of file
index 637776b..23d349c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c8e=['getSubjects','string','toLowerCase','voice','inbound','push','queue','variable','calleridnum','outbound','Outbound\x20Call','destcalleridnum','***\x20Call\x20Info\x20***','Caller\x20Number','keyValue','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Connect','agentconnectAt','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','Duration','duration','Billable\x20Time'];(function(_0x596a72,_0x110a95){var _0x5175cb=function(_0x54ea12){while(--_0x54ea12){_0x596a72['push'](_0x596a72['shift']());}};_0x5175cb(++_0x110a95);}(_0x6c8e,0x1b8));var _0xe6c8=function(_0x1bdd72,_0x2b6444){_0x1bdd72=_0x1bdd72-0x0;var _0x2601aa=_0x6c8e[_0x1bdd72];return _0x2601aa;};'use strict';exports[_0xe6c8('0x0')]=function(_0x5b1c3b,_0x413dc7){var _0x3e16c4=[{'type':_0xe6c8('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x5b1c3b[_0xe6c8('0x2')]()){case _0xe6c8('0x3'):switch(_0x413dc7[_0xe6c8('0x2')]()){case _0xe6c8('0x4'):_0x3e16c4[_0xe6c8('0x5')]({'type':'variable','content':'','variableName':_0xe6c8('0x6')});_0x3e16c4[_0xe6c8('0x5')]({'type':_0xe6c8('0x7'),'content':'','variableName':_0xe6c8('0x8')});break;case _0xe6c8('0x9'):_0x3e16c4['push']({'type':'string','content':_0xe6c8('0xa'),'variableName':null});_0x3e16c4[_0xe6c8('0x5')]({'type':_0xe6c8('0x7'),'content':'','variableName':_0xe6c8('0xb')});break;}}return _0x3e16c4;};exports['getDescriptions']=function(_0x581054,_0x155ddb){var _0x3c1ade=[];switch(_0x581054['toLowerCase']()){case _0xe6c8('0x3'):switch(_0x155ddb[_0xe6c8('0x2')]()){case _0xe6c8('0x4'):_0x3c1ade=[{'type':_0xe6c8('0x1'),'content':_0xe6c8('0xc'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xe6c8('0xd'),'keyType':_0xe6c8('0x7'),'variableName':_0xe6c8('0x8')},{'type':_0xe6c8('0xe'),'content':'','key':'Caller\x20Name','keyType':_0xe6c8('0x7'),'variableName':_0xe6c8('0xf')},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x10'),'keyType':_0xe6c8('0x7'),'variableName':_0xe6c8('0x11')},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x12'),'keyType':_0xe6c8('0x7'),'variableName':'queue'},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x13'),'keyType':_0xe6c8('0x7'),'variableName':_0xe6c8('0x14')},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x15'),'keyType':'variable','variableName':_0xe6c8('0x16')},{'type':_0xe6c8('0x1'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Name','keyType':_0xe6c8('0x7'),'variableName':_0xe6c8('0x17')},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x18'),'keyType':'variable','variableName':_0xe6c8('0xb')},{'type':_0xe6c8('0x1'),'content':_0xe6c8('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0xe6c8('0xe'),'content':'','key':'Agent\x20Ring','keyType':_0xe6c8('0x7'),'variableName':_0xe6c8('0x16')},{'type':'keyValue','content':'','key':_0xe6c8('0x1a'),'keyType':'variable','variableName':_0xe6c8('0x1b')},{'type':_0xe6c8('0xe'),'content':'','key':'Agent\x20Complete','keyType':_0xe6c8('0x7'),'variableName':_0xe6c8('0x1c')},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x1d'),'keyType':_0xe6c8('0x7'),'variableName':_0xe6c8('0x1e')},{'type':'keyValue','content':'','key':_0xe6c8('0x1f'),'keyType':_0xe6c8('0x7'),'variableName':_0xe6c8('0x20')}];break;case _0xe6c8('0x9'):_0x3c1ade=[{'type':_0xe6c8('0x1'),'content':_0xe6c8('0xc'),'variableName':null},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x21'),'keyType':_0xe6c8('0x7'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x22'),'keyType':_0xe6c8('0x7'),'keyContent':'','variableName':_0xe6c8('0x23')},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x13'),'keyType':_0xe6c8('0x7'),'keyContent':'','variableName':_0xe6c8('0x14')},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x15'),'keyType':_0xe6c8('0x7'),'keyContent':'','variableName':_0xe6c8('0x24')},{'type':_0xe6c8('0x1'),'content':'***\x20Time\x20Info\x20***'},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x25'),'keyType':_0xe6c8('0x7'),'keyContent':'','variableName':_0xe6c8('0x26')},{'type':'keyValue','content':'','key':_0xe6c8('0x27'),'keyType':'variable','keyContent':'','variableName':_0xe6c8('0x28')},{'type':_0xe6c8('0xe'),'content':'','key':_0xe6c8('0x29'),'keyType':_0xe6c8('0x7'),'keyContent':'','variableName':_0xe6c8('0x2a')},{'type':'keyValue','content':'','key':_0xe6c8('0x2b'),'keyType':_0xe6c8('0x7'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x3c1ade;};
\ No newline at end of file
+var _0x0875=['voice','variable','queue','push','calleridnum','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','inbound','***\x20Call\x20Info\x20***','Caller\x20Number','keyValue','calleridname','Queue','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','Agent\x20Ring','agentcompleteAt','holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','UniqueId','uniqueid','starttime','***\x20Time\x20Info\x20***','Answer\x20Time','answertime','Complete\x20Time','endtime','Duration','duration','billableseconds','getSubjects','string','toLowerCase'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x0875,0x1e9));var _0x5087=function(_0x327886,_0x4a92fd){_0x327886=_0x327886-0x0;var _0x180fa1=_0x0875[_0x327886];return _0x180fa1;};'use strict';exports[_0x5087('0x0')]=function(_0x14db26,_0x50b036){var _0x5a90c1=[{'type':_0x5087('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x14db26[_0x5087('0x2')]()){case _0x5087('0x3'):switch(_0x50b036[_0x5087('0x2')]()){case'inbound':_0x5a90c1['push']({'type':_0x5087('0x4'),'content':'','variableName':_0x5087('0x5')});_0x5a90c1[_0x5087('0x6')]({'type':'variable','content':'','variableName':_0x5087('0x7')});break;case _0x5087('0x8'):_0x5a90c1['push']({'type':_0x5087('0x1'),'content':_0x5087('0x9'),'variableName':null});_0x5a90c1[_0x5087('0x6')]({'type':_0x5087('0x4'),'content':'','variableName':_0x5087('0xa')});break;}}return _0x5a90c1;};exports[_0x5087('0xb')]=function(_0x16fc8b,_0xef3604){var _0x1e26cd=[];switch(_0x16fc8b[_0x5087('0x2')]()){case'voice':switch(_0xef3604[_0x5087('0x2')]()){case _0x5087('0xc'):_0x1e26cd=[{'type':_0x5087('0x1'),'content':_0x5087('0xd'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x5087('0xe'),'keyType':_0x5087('0x4'),'variableName':'calleridnum'},{'type':_0x5087('0xf'),'content':'','key':'Caller\x20Name','keyType':'variable','variableName':_0x5087('0x10')},{'type':_0x5087('0xf'),'content':'','key':'Call\x20To','keyType':_0x5087('0x4'),'variableName':'destexten'},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x11'),'keyType':_0x5087('0x4'),'variableName':_0x5087('0x5')},{'type':_0x5087('0xf'),'content':'','key':'UniqueId','keyType':_0x5087('0x4'),'variableName':'uniqueid'},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x12'),'keyType':_0x5087('0x4'),'variableName':_0x5087('0x13')},{'type':'string','content':_0x5087('0x14'),'key':null,'keyType':null,'variableName':null},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x15'),'keyType':_0x5087('0x4'),'variableName':'destcalleridname'},{'type':_0x5087('0xf'),'content':'','key':'Agent\x20Number','keyType':_0x5087('0x4'),'variableName':'destcalleridnum'},{'type':_0x5087('0x1'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x5087('0x16'),'keyType':_0x5087('0x4'),'variableName':_0x5087('0x13')},{'type':_0x5087('0xf'),'content':'','key':'Agent\x20Connect','keyType':_0x5087('0x4'),'variableName':'agentconnectAt'},{'type':_0x5087('0xf'),'content':'','key':'Agent\x20Complete','keyType':_0x5087('0x4'),'variableName':_0x5087('0x17')},{'type':_0x5087('0xf'),'content':'','key':'Hold\x20Time','keyType':_0x5087('0x4'),'variableName':_0x5087('0x18')},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x19'),'keyType':_0x5087('0x4'),'variableName':_0x5087('0x1a')}];break;case'outbound':_0x1e26cd=[{'type':_0x5087('0x1'),'content':_0x5087('0xd'),'variableName':null},{'type':'keyValue','content':'','key':_0x5087('0x1b'),'keyType':_0x5087('0x4'),'keyContent':'','variableName':_0x5087('0xa')},{'type':'keyValue','content':'','key':_0x5087('0x1c'),'keyType':'variable','keyContent':'','variableName':_0x5087('0x1d')},{'type':'keyValue','content':'','key':_0x5087('0x1e'),'keyType':_0x5087('0x4'),'keyContent':'','variableName':_0x5087('0x1f')},{'type':'keyValue','content':'','key':'Date','keyType':'variable','keyContent':'','variableName':_0x5087('0x20')},{'type':_0x5087('0x1'),'content':_0x5087('0x21')},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x22'),'keyType':_0x5087('0x4'),'keyContent':'','variableName':_0x5087('0x23')},{'type':'keyValue','content':'','key':_0x5087('0x24'),'keyType':_0x5087('0x4'),'keyContent':'','variableName':_0x5087('0x25')},{'type':_0x5087('0xf'),'content':'','key':_0x5087('0x26'),'keyType':'variable','keyContent':'','variableName':_0x5087('0x27')},{'type':_0x5087('0xf'),'content':'','key':'Billable\x20Time','keyType':_0x5087('0x4'),'keyContent':'','variableName':_0x5087('0x28')}];break;}}return _0x1e26cd;};
\ No newline at end of file
index fac98e5..4bc0f36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f2=['catch','error','tracked','query','clone','body','omit','html','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','mail-interactions','sms-interactions','chat-interactions','whatsapp-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','stringify','findOne','then','info'];(function(_0x27c5c2,_0x4b4582){var _0x121b98=function(_0x23b8b8){while(--_0x23b8b8){_0x27c5c2['push'](_0x27c5c2['shift']());}};_0x121b98(++_0x4b4582);}(_0xf4f2,0xb9));var _0x2f4f=function(_0x278f15,_0x148b72){_0x278f15=_0x278f15-0x0;var _0x8d7fef=_0xf4f2[_0x278f15];return _0x8d7fef;};'use strict';var _=require(_0x2f4f('0x0'));var db=require(_0x2f4f('0x1'))['db'];var loggers={'openchannel':require(_0x2f4f('0x2'))('openchannel-interactions'),'mail':require('../../config/logger')(_0x2f4f('0x3')),'fax':require('../../config/logger')('fax-interactions'),'sms':require('../../config/logger')(_0x2f4f('0x4')),'chat':require(_0x2f4f('0x2'))(_0x2f4f('0x5')),'whatsapp':require(_0x2f4f('0x2'))(_0x2f4f('0x6'))};function getInteractionId(_0x458642,_0x4350e1,_0x47d713){if(_0x458642&&_0x458642[_[_0x2f4f('0x7')](_0x47d713)+_0x2f4f('0x8')]){return _0x458642[_[_0x2f4f('0x7')](_0x47d713)+_0x2f4f('0x8')];}else if(_0x458642&&_0x458642['id']){return _0x458642['id'];}else if(_0x4350e1&&_0x4350e1['id']){return _0x4350e1['id'];}else{return _0x2f4f('0x9');}}function log(_0x4fb89c,_0x244cba,_0x5b4ef9,_0x53b4cc,_0xda784c,_0x361144){loggers[_0xda784c[_0x2f4f('0xa')]()][_0x4fb89c](_0x2f4f('0xb'),_0x361144[_0x2f4f('0xc')](),_0x244cba?_0x244cba['id']:null,_0x244cba?_0x244cba[_0x2f4f('0xd')]:null,_0x244cba?_0x244cba['role']:null,getInteractionId(_0x5b4ef9,_0x53b4cc,_0xda784c),_0x5b4ef9?JSON[_0x2f4f('0xe')](_0x5b4ef9):'null');}function updateUser(_0x5b9402,_0x53d4fe,_0x476e00,_0x20da53,_0x28d16a){db[_[_0x2f4f('0x7')](_0x20da53)+'Interaction'][_0x2f4f('0xf')]({'where':{'id':getInteractionId(_0x53d4fe,_0x476e00,_0x20da53)}})[_0x2f4f('0x10')](function(_0x164829){if(_0x164829){return _0x164829['update']({'UserId':_0x5b9402?_0x5b9402['id']:null});}})[_0x2f4f('0x10')](function(_0x3c64b2){if(_0x3c64b2){log(_0x2f4f('0x11'),_0x5b9402,_0x53d4fe,_0x476e00,_0x20da53,_0x28d16a);}})[_0x2f4f('0x12')](function(){log(_0x2f4f('0x13'),_0x5b9402,_0x53d4fe,_0x476e00,_0x20da53,_0x28d16a);});}exports[_0x2f4f('0x14')]=function(_0x12812b,_0x48015f){return function(_0x5dee56,_0x14742d,_0x3821f5){var _0xbd0536=_0x5dee56['user'];var _0x1a40dc={};var _0x493287=_0x5dee56[_0x2f4f('0x15')];if(_0x1a40dc){_0x1a40dc=_[_0x2f4f('0x16')](_0x5dee56[_0x2f4f('0x17')]);_0x1a40dc=_[_0x2f4f('0x18')](_0x1a40dc,['body',_0x2f4f('0x19'),_0x2f4f('0x1a'),_0x2f4f('0x1b'),_0x2f4f('0x1c')]);}updateUser(_0xbd0536,_0x1a40dc,_0x493287,_0x12812b,_0x48015f);_0x3821f5(null);};};
\ No newline at end of file
+var _0x9783=['name','stringify','null','then','update','info','catch','error','query','body','omit','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','upperFirst','InteractionId','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase'];(function(_0x2ce0e2,_0x554db9){var _0x10ec85=function(_0x4c8138){while(--_0x4c8138){_0x2ce0e2['push'](_0x2ce0e2['shift']());}};_0x10ec85(++_0x554db9);}(_0x9783,0x146));var _0x3978=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9783[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3978('0x0'));var db=require(_0x3978('0x1'))['db'];var loggers={'openchannel':require(_0x3978('0x2'))(_0x3978('0x3')),'mail':require('../../config/logger')(_0x3978('0x4')),'fax':require(_0x3978('0x2'))(_0x3978('0x5')),'sms':require('../../config/logger')('sms-interactions'),'chat':require(_0x3978('0x2'))('chat-interactions'),'whatsapp':require('../../config/logger')('whatsapp-interactions')};function getInteractionId(_0x4c4099,_0x474572,_0x17326e){if(_0x4c4099&&_0x4c4099[_[_0x3978('0x6')](_0x17326e)+'InteractionId']){return _0x4c4099[_[_0x3978('0x6')](_0x17326e)+_0x3978('0x7')];}else if(_0x4c4099&&_0x4c4099['id']){return _0x4c4099['id'];}else if(_0x474572&&_0x474572['id']){return _0x474572['id'];}else{return'unknown';}}function log(_0x280e4c,_0x5b88e1,_0x3cd9cc,_0x12eca1,_0x38cd07,_0x4fbd4d){loggers[_0x38cd07['toLowerCase']()][_0x280e4c](_0x3978('0x8'),_0x4fbd4d[_0x3978('0x9')](),_0x5b88e1?_0x5b88e1['id']:null,_0x5b88e1?_0x5b88e1[_0x3978('0xa')]:null,_0x5b88e1?_0x5b88e1['role']:null,getInteractionId(_0x3cd9cc,_0x12eca1,_0x38cd07),_0x3cd9cc?JSON[_0x3978('0xb')](_0x3cd9cc):_0x3978('0xc'));}function updateUser(_0x2a74cb,_0x65d838,_0x35452c,_0x39c956,_0x30123b){db[_[_0x3978('0x6')](_0x39c956)+'Interaction']['findOne']({'where':{'id':getInteractionId(_0x65d838,_0x35452c,_0x39c956)}})[_0x3978('0xd')](function(_0x9ea046){if(_0x9ea046){return _0x9ea046[_0x3978('0xe')]({'UserId':_0x2a74cb?_0x2a74cb['id']:null});}})['then'](function(_0x4b6f1d){if(_0x4b6f1d){log(_0x3978('0xf'),_0x2a74cb,_0x65d838,_0x35452c,_0x39c956,_0x30123b);}})[_0x3978('0x10')](function(){log(_0x3978('0x11'),_0x2a74cb,_0x65d838,_0x35452c,_0x39c956,_0x30123b);});}exports['tracked']=function(_0x27f355,_0x19ea30){return function(_0x4b448a,_0x2ac4d7,_0x7c0103){var _0x43ae16=_0x4b448a['user'];var _0x2ca7b1={};var _0xf73a99=_0x4b448a[_0x3978('0x12')];if(_0x2ca7b1){_0x2ca7b1=_['clone'](_0x4b448a[_0x3978('0x13')]);_0x2ca7b1=_[_0x3978('0x14')](_0x2ca7b1,[_0x3978('0x13'),'html',_0x3978('0x15'),_0x3978('0x16'),_0x3978('0x17')]);}updateUser(_0x43ae16,_0x2ca7b1,_0xf73a99,_0x27f355,_0x19ea30);_0x7c0103(null);};};
\ No newline at end of file
index b85b7fd..946dd15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad34=['createDecipher','%s:%s:%s','update','base64','parse','hasOwnProperty','use','License','findOne','then','count','status','json','format','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','isUserLimit','crypto','util','composable-middleware','../../mysqldb','data1','license','split'];(function(_0x2e15bc,_0x3800ae){var _0x12fcb3=function(_0x309f9d){while(--_0x309f9d){_0x2e15bc['push'](_0x2e15bc['shift']());}};_0x12fcb3(++_0x3800ae);}(_0xad34,0x18e));var _0x4ad3=function(_0x1aa749,_0x3ad3ca){_0x1aa749=_0x1aa749-0x0;var _0x4e0964=_0xad34[_0x1aa749];return _0x4e0964;};'use strict';var crypto=require(_0x4ad3('0x0'));var util=require(_0x4ad3('0x1'));var compose=require(_0x4ad3('0x2'));var db=require(_0x4ad3('0x3'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x3f8b2c,_0x753ad1){if(_0x3f8b2c&&_0x753ad1){if(_0x753ad1[_0x4ad3('0x4')]&&_0x753ad1[_0x4ad3('0x5')]){var _0x2468bb=_0x753ad1[_0x4ad3('0x4')];var _0x44ae94=_0x753ad1['license'];var _0x2eb0b5=_0x2468bb[_0x4ad3('0x6')]('-')[0x4];var _0x382f7f=_0x2468bb['split']('-')[0x0];var _0x2d95ec=crypto[_0x4ad3('0x7')]('aes-256-ctr',util['format'](_0x4ad3('0x8'),_0x2eb0b5,_0x2468bb,_0x382f7f));var _0x40472b=_0x2d95ec[_0x4ad3('0x9')](_0x44ae94,_0x4ad3('0xa'),'utf8');_0x40472b+=_0x2d95ec['final']('utf8');var _0x51d425=JSON[_0x4ad3('0xb')](_0x40472b);return _0x51d425[_0x4ad3('0xc')](_0x3f8b2c)?_0x51d425[_0x3f8b2c]:null;}}return null;}function isLimit(_0x27df3d,_0x262699,_0x2aa46b,_0x3ff4a6){var _0x499e42=_0x262699;return compose()[_0x4ad3('0xd')](function(_0xc5bd1b,_0x2c890c,_0x338deb){return db[_0x4ad3('0xe')][_0x4ad3('0xf')]({'where':{'id':0x1},'raw':!![]})[_0x4ad3('0x10')](function(_0x5dcafa){var _0xba52d3=getValueFromLicense(_0x27df3d,_0x5dcafa);return _0xba52d3?_0xba52d3:_0x499e42;})[_0x4ad3('0x10')](function(_0x534d8f){_0x499e42=_0x534d8f;return _0x2aa46b[_0x4ad3('0x11')](_0x3ff4a6);})[_0x4ad3('0x10')](function(_0x1e603e){if(_0x1e603e>=_0x499e42){return _0x2c890c[_0x4ad3('0x12')](0x193)[_0x4ad3('0x13')]({'message':util[_0x4ad3('0x14')](_0x4ad3('0x15'),_0x27df3d)});}_0x338deb();})[_0x4ad3('0x16')](function(_0x1c736c){_0x338deb(_0x1c736c);});});}function isUserLimit(){return isLimit(_0x4ad3('0x17'),0x1,db[_0x4ad3('0x18')],{'where':{'$or':[{'role':_0x4ad3('0x19')},{'role':'user'}]}});}exports[_0x4ad3('0x1a')]=isUserLimit;
\ No newline at end of file
+var _0x9331=['User','admin','user','crypto','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','use','License','then','count','status','json','catch','users'];(function(_0x578c66,_0x3e090f){var _0x586aa2=function(_0x33291a){while(--_0x33291a){_0x578c66['push'](_0x578c66['shift']());}};_0x586aa2(++_0x3e090f);}(_0x9331,0xab));var _0x1933=function(_0x1ac0dd,_0x5a1e5f){_0x1ac0dd=_0x1ac0dd-0x0;var _0x31fc81=_0x9331[_0x1ac0dd];return _0x31fc81;};'use strict';var crypto=require(_0x1933('0x0'));var util=require('util');var compose=require(_0x1933('0x1'));var db=require(_0x1933('0x2'))['db'];var config=require(_0x1933('0x3'));function getValueFromLicense(_0x5539df,_0x263c07){if(_0x5539df&&_0x263c07){if(_0x263c07[_0x1933('0x4')]&&_0x263c07[_0x1933('0x5')]){var _0x49eb98=_0x263c07[_0x1933('0x4')];var _0x58405b=_0x263c07[_0x1933('0x5')];var _0x340445=_0x49eb98[_0x1933('0x6')]('-')[0x4];var _0x13742a=_0x49eb98[_0x1933('0x6')]('-')[0x0];var _0x36eae5=crypto[_0x1933('0x7')](_0x1933('0x8'),util[_0x1933('0x9')](_0x1933('0xa'),_0x340445,_0x49eb98,_0x13742a));var _0x47cf27=_0x36eae5[_0x1933('0xb')](_0x58405b,_0x1933('0xc'),_0x1933('0xd'));_0x47cf27+=_0x36eae5[_0x1933('0xe')](_0x1933('0xd'));var _0x103213=JSON[_0x1933('0xf')](_0x47cf27);return _0x103213[_0x1933('0x10')](_0x5539df)?_0x103213[_0x5539df]:null;}}return null;}function isLimit(_0x143eaa,_0x4eea5d,_0x4a19c7,_0x4c93d2){var _0x3db761=_0x4eea5d;return compose()[_0x1933('0x11')](function(_0x6842ca,_0x38bb9b,_0x4675b6){return db[_0x1933('0x12')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0x1933('0x13')](function(_0xcb9fa6){var _0x25d1d5=getValueFromLicense(_0x143eaa,_0xcb9fa6);return _0x25d1d5?_0x25d1d5:_0x3db761;})[_0x1933('0x13')](function(_0x429bdf){_0x3db761=_0x429bdf;return _0x4a19c7[_0x1933('0x14')](_0x4c93d2);})[_0x1933('0x13')](function(_0x4ecefb){if(_0x4ecefb>=_0x3db761){return _0x38bb9b[_0x1933('0x15')](0x193)[_0x1933('0x16')]({'message':util[_0x1933('0x9')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x143eaa)});}_0x4675b6();})[_0x1933('0x17')](function(_0x124cf9){_0x4675b6(_0x124cf9);});});}function isUserLimit(){return isLimit(_0x1933('0x18'),0x1,db[_0x1933('0x19')],{'where':{'$or':[{'role':_0x1933('0x1a')},{'role':_0x1933('0x1b')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
index 3bcfb9c..406bc15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3496=['hours','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','length','forEach','shift','match','filter','indexOf','map','buildExpression','DATE','$eq','operator','$between','value','includes','$gt','$lte','add','format','YYYY-MM-DD','castTo','field','text','$notIn','\x20OR\x20','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','$ne','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','<\x20?','$gte','>=\x20?','start','utcOffset'];(function(_0x34bc30,_0x177cb0){var _0x5706de=function(_0x535a8c){while(--_0x535a8c){_0x34bc30['push'](_0x34bc30['shift']());}};_0x5706de(++_0x177cb0);}(_0x3496,0x15f));var _0x6349=function(_0x7843d1,_0x5c9239){_0x7843d1=_0x7843d1-0x0;var _0x5c3465=_0x3496[_0x7843d1];return _0x5c3465;};'use strict';var _=require(_0x6349('0x0'));var moment=require(_0x6349('0x1'));exports[_0x6349('0x2')]=function(_0x4ee26b){var _0x512fc5={'conditions':[]};_0x512fc5[_0x6349('0x3')]=_[_0x6349('0x4')](_0x4ee26b,_0x6349('0x5'))?'or':_0x6349('0x6');var _0x155310=_0x4ee26b[_0x6349('0x7')](_0x6349('0x8'),'')['replace'](_0x6349('0x5'),'')[_0x6349('0x9')]('||');for(var _0x4ef52a=0x0;_0x4ef52a<_0x155310[_0x6349('0xa')];_0x4ef52a++){var _0x28b0d4=_0x155310[_0x4ef52a][_0x6349('0x9')](':=');var _0x28ed8c=_0x28b0d4[0x0];var _0x45d78f=_0x28b0d4['slice'](0x1);_0x45d78f[_0x6349('0xb')](function(_0x1c06fa){var _0x2d9240=_0x1c06fa['split']('[')[_0x6349('0xc')]();var _0x181de9=_0x1c06fa[_0x6349('0xd')](/\[(.*?)\]/g);_0x181de9[_0x6349('0xb')](function(_0xebb263){var _0x1aa8be=_0xebb263[_0x6349('0x9')]('[')[_0x6349('0xe')](function(_0x5786ea){return _0x5786ea[_0x6349('0xf')](']')>-0x1;})[_0x6349('0x10')](function(_0x1e487c){return _0x1e487c[_0x6349('0x9')](']')[0x0];})[0x0];_0x512fc5['conditions']['push']({'field':_0x28ed8c,'operator':_0x2d9240,'value':_0x1aa8be});});});}return _0x512fc5;};exports[_0x6349('0x11')]=function(_0x316531,_0x6abda8,_0x26e5df){var _0x2f1e45={};if(_0x6abda8===_0x6349('0x12')){if(_0x26e5df['operator']===_0x6349('0x13')){_0x26e5df[_0x6349('0x14')]=_0x6349('0x15');_0x26e5df[_0x6349('0x16')]+=','+_0x26e5df['value'];}else if(_[_0x6349('0x17')]([_0x6349('0x18'),_0x6349('0x19')],_0x26e5df['operator'])){_0x26e5df['value']=moment(_0x26e5df['value'])[_0x6349('0x1a')](0x1,'days')[_0x6349('0x1b')](_0x6349('0x1c'));}}if(_0x26e5df[_0x6349('0x1d')]){_0x6abda8=_0x26e5df[_0x6349('0x1d')];_0x2f1e45['text']='CAST('+_0x316531+'.'+_0x26e5df[_0x6349('0x1e')]+'\x20AS\x20'+_0x26e5df[_0x6349('0x1d')]+')\x20'+parseOperator(_0x26e5df['operator']);}else{_0x2f1e45[_0x6349('0x1f')]=_0x316531+'.'+_0x26e5df['field']+'\x20'+parseOperator(_0x26e5df['operator']);}if(_[_0x6349('0x17')](['$ne',_0x6349('0x20')],_0x26e5df[_0x6349('0x14')]))_0x2f1e45[_0x6349('0x1f')]='('+_0x2f1e45['text']+_0x6349('0x21')+_0x316531+'.'+_0x26e5df['field']+'\x20IS\x20NULL)';_0x2f1e45[_0x6349('0x16')]=parseValue(_0x6abda8,_0x26e5df[_0x6349('0x14')],_0x26e5df[_0x6349('0x16')]);return _0x2f1e45;};function parseOperator(_0x2e9c2e){var _0x324786;switch(_0x2e9c2e){case _0x6349('0x22'):_0x324786=_0x6349('0x23');break;case _0x6349('0x20'):_0x324786=_0x6349('0x24');break;case _0x6349('0x13'):_0x324786=_0x6349('0x25');break;case _0x6349('0x26'):_0x324786=_0x6349('0x27');break;case _0x6349('0x28'):case _0x6349('0x29'):case _0x6349('0x2a'):_0x324786=_0x6349('0x2b');break;case'$lt':_0x324786=_0x6349('0x2c');break;case'$gt':_0x324786='>\x20?';break;case _0x6349('0x19'):_0x324786='<=\x20?';break;case _0x6349('0x2d'):_0x324786=_0x6349('0x2e');break;case _0x6349('0x15'):_0x324786='BETWEEN\x20?\x20AND\x20?';break;}return _0x324786;}function parseValue(_0x299075,_0x58b344,_0x4fa304){var _0x44bb03={'start':undefined,'end':undefined};switch(_0x58b344){case _0x6349('0x22'):case'$notIn':_0x44bb03[_0x6349('0x2f')]=_0x4fa304[_0x6349('0x9')](',');break;case _0x6349('0x28'):_0x44bb03[_0x6349('0x2f')]='%'+_0x4fa304+'%';break;case _0x6349('0x29'):_0x44bb03[_0x6349('0x2f')]=_0x4fa304+'%';break;case _0x6349('0x2a'):_0x44bb03[_0x6349('0x2f')]='%'+_0x4fa304;break;case _0x6349('0x15'):var _0x31558b=_0x4fa304[_0x6349('0x9')](',');var _0x4fa304=_0x31558b[_0x6349('0xc')]();var _0x1704be=_0x31558b['pop']();if(_0x299075==='DATE'){_0x4fa304=moment(_0x4fa304)['utcOffset'](0x0,!![])[_0x6349('0x1b')]();_0x1704be=moment(_0x1704be)[_0x6349('0x30')](0x0,!![])[_0x6349('0x1a')](0x17,_0x6349('0x31'))[_0x6349('0x1a')](0x3b,'minutes')[_0x6349('0x1a')](0x3b,'seconds')[_0x6349('0x1b')]();}_0x44bb03={'start':_0x4fa304,'end':_0x1704be};break;default:_0x44bb03[_0x6349('0x2f')]=_0x4fa304;break;}return _0x44bb03;}
\ No newline at end of file
+var _0x1351=['filter','indexOf','map','conditions','push','buildExpression','DATE','operator','$eq','value','includes','$gt','add','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','$ne','$notIn','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$lt','<\x20?','>\x20?','$lte','<=\x20?','>=\x20?','$between','BETWEEN\x20?\x20AND\x20?','$startsWith','start','$endsWith','pop','utcOffset','hours','minutes','seconds','lodash','parseSearch','sqlOperator','startsWith','[$or]','replace','split','length','slice','shift','match'];(function(_0x3a533e,_0x1348ab){var _0xdaaf26=function(_0x576700){while(--_0x576700){_0x3a533e['push'](_0x3a533e['shift']());}};_0xdaaf26(++_0x1348ab);}(_0x1351,0x14b));var _0x1135=function(_0x5e5ea1,_0x4502cd){_0x5e5ea1=_0x5e5ea1-0x0;var _0x17e916=_0x1351[_0x5e5ea1];return _0x17e916;};'use strict';var _=require(_0x1135('0x0'));var moment=require('moment');exports[_0x1135('0x1')]=function(_0x5de58c){var _0x24fc86={'conditions':[]};_0x24fc86[_0x1135('0x2')]=_[_0x1135('0x3')](_0x5de58c,_0x1135('0x4'))?'or':'and';var _0x57c285=_0x5de58c[_0x1135('0x5')]('[$and]','')[_0x1135('0x5')](_0x1135('0x4'),'')[_0x1135('0x6')]('||');for(var _0x42004f=0x0;_0x42004f<_0x57c285[_0x1135('0x7')];_0x42004f++){var _0x3abeca=_0x57c285[_0x42004f]['split'](':=');var _0x266b61=_0x3abeca[0x0];var _0x3296d2=_0x3abeca[_0x1135('0x8')](0x1);_0x3296d2['forEach'](function(_0xec9d90){var _0x1c2e06=_0xec9d90['split']('[')[_0x1135('0x9')]();var _0x63386f=_0xec9d90[_0x1135('0xa')](/\[(.*?)\]/g);_0x63386f['forEach'](function(_0x530db8){var _0x2df40d=_0x530db8['split']('[')[_0x1135('0xb')](function(_0x179884){return _0x179884[_0x1135('0xc')](']')>-0x1;})[_0x1135('0xd')](function(_0x3aada2){return _0x3aada2[_0x1135('0x6')](']')[0x0];})[0x0];_0x24fc86[_0x1135('0xe')][_0x1135('0xf')]({'field':_0x266b61,'operator':_0x1c2e06,'value':_0x2df40d});});});}return _0x24fc86;};exports[_0x1135('0x10')]=function(_0x303674,_0x24bffa,_0x3cc3f1){var _0x45beaf={};if(_0x24bffa===_0x1135('0x11')){if(_0x3cc3f1[_0x1135('0x12')]===_0x1135('0x13')){_0x3cc3f1[_0x1135('0x12')]='$between';_0x3cc3f1[_0x1135('0x14')]+=','+_0x3cc3f1[_0x1135('0x14')];}else if(_[_0x1135('0x15')]([_0x1135('0x16'),'$lte'],_0x3cc3f1[_0x1135('0x12')])){_0x3cc3f1[_0x1135('0x14')]=moment(_0x3cc3f1['value'])[_0x1135('0x17')](0x1,_0x1135('0x18'))[_0x1135('0x19')](_0x1135('0x1a'));}}if(_0x3cc3f1['castTo']){_0x24bffa=_0x3cc3f1[_0x1135('0x1b')];_0x45beaf[_0x1135('0x1c')]=_0x1135('0x1d')+_0x303674+'.'+_0x3cc3f1[_0x1135('0x1e')]+_0x1135('0x1f')+_0x3cc3f1[_0x1135('0x1b')]+')\x20'+parseOperator(_0x3cc3f1['operator']);}else{_0x45beaf['text']=_0x303674+'.'+_0x3cc3f1['field']+'\x20'+parseOperator(_0x3cc3f1[_0x1135('0x12')]);}if(_['includes']([_0x1135('0x20'),_0x1135('0x21')],_0x3cc3f1[_0x1135('0x12')]))_0x45beaf[_0x1135('0x1c')]='('+_0x45beaf[_0x1135('0x1c')]+'\x20OR\x20'+_0x303674+'.'+_0x3cc3f1[_0x1135('0x1e')]+_0x1135('0x22');_0x45beaf[_0x1135('0x14')]=parseValue(_0x24bffa,_0x3cc3f1['operator'],_0x3cc3f1[_0x1135('0x14')]);return _0x45beaf;};function parseOperator(_0x1c4801){var _0x294a66;switch(_0x1c4801){case _0x1135('0x23'):_0x294a66=_0x1135('0x24');break;case'$notIn':_0x294a66=_0x1135('0x25');break;case'$eq':_0x294a66=_0x1135('0x26');break;case _0x1135('0x20'):_0x294a66=_0x1135('0x27');break;case _0x1135('0x28'):case'$startsWith':case'$endsWith':_0x294a66='LIKE\x20?';break;case _0x1135('0x29'):_0x294a66=_0x1135('0x2a');break;case _0x1135('0x16'):_0x294a66=_0x1135('0x2b');break;case _0x1135('0x2c'):_0x294a66=_0x1135('0x2d');break;case'$gte':_0x294a66=_0x1135('0x2e');break;case _0x1135('0x2f'):_0x294a66=_0x1135('0x30');break;}return _0x294a66;}function parseValue(_0x55c25e,_0x552166,_0x5717e5){var _0x1764c2={'start':undefined,'end':undefined};switch(_0x552166){case _0x1135('0x23'):case'$notIn':_0x1764c2['start']=_0x5717e5[_0x1135('0x6')](',');break;case _0x1135('0x28'):_0x1764c2['start']='%'+_0x5717e5+'%';break;case _0x1135('0x31'):_0x1764c2[_0x1135('0x32')]=_0x5717e5+'%';break;case _0x1135('0x33'):_0x1764c2[_0x1135('0x32')]='%'+_0x5717e5;break;case _0x1135('0x2f'):var _0x1d7ea4=_0x5717e5[_0x1135('0x6')](',');var _0x5717e5=_0x1d7ea4[_0x1135('0x9')]();var _0xf73654=_0x1d7ea4[_0x1135('0x34')]();if(_0x55c25e==='DATE'){_0x5717e5=moment(_0x5717e5)[_0x1135('0x35')](0x0,!![])[_0x1135('0x19')]();_0xf73654=moment(_0xf73654)['utcOffset'](0x0,!![])[_0x1135('0x17')](0x17,_0x1135('0x36'))[_0x1135('0x17')](0x3b,_0x1135('0x37'))['add'](0x3b,_0x1135('0x38'))[_0x1135('0x19')]();}_0x1764c2={'start':_0x5717e5,'end':_0xf73654};break;default:_0x1764c2[_0x1135('0x32')]=_0x5717e5;break;}return _0x1764c2;}
\ No newline at end of file
index b4a0846..522f04d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0c8=['intersection','attributes','nolimit','order','pick','filter','where','merge','lower','options','sequelize','moment','parse','keys','includes','fields','split','filters','isEmpty','forOwn','find','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','limit','offset','sort','map','indexOf','priority','cast','col','unsigned','DESC','ASC','omit','length','isObject','isString','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','replace','push','query','$id','model'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0xb0c8,0x172));var _0x8b0c=function(_0x29e8b0,_0x5a77ae){_0x29e8b0=_0x29e8b0-0x0;var _0x5bb088=_0xb0c8[_0x29e8b0];return _0x5bb088;};'use strict';var _=require('lodash');var sequelize=require(_0x8b0c('0x0'));var moment=require(_0x8b0c('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x4b3d24){var _0x295a5f=['ne'];try{var _0x6435d3=JSON[_0x8b0c('0x2')](_0x4b3d24);var _0x14d281=Object[_0x8b0c('0x3')](_0x6435d3)[0x0];return _0x295a5f[_0x8b0c('0x4')](_0x14d281);}catch(_0x5c95ad){return![];}}function getOperatorValue(_0x3cb01c){var _0x4f03aa=JSON[_0x8b0c('0x2')](_0x3cb01c);var _0x198be5=Object[_0x8b0c('0x3')](_0x4f03aa)[0x0];var _0x140460=_0x4f03aa[_0x198be5];return{['$'+_0x198be5]:_0x140460};}exports[_0x8b0c('0x5')]=function(_0x35ea98){var _0x33fe4f=null;if(_0x35ea98){_0x33fe4f=_0x35ea98[_0x8b0c('0x6')](',');}return _0x33fe4f;};exports[_0x8b0c('0x7')]=function(_0x189aae,_0x40144b){var _0x549d2a={};if(!_[_0x8b0c('0x8')](_0x189aae)){_[_0x8b0c('0x9')](_0x189aae,function(_0x118096,_0x1f46b2){try{if(_0x40144b){var _0x52992d=_[_0x8b0c('0xa')](_0x40144b,{'name':_0x1f46b2})||{};if(hasSequelizeOperator(_0x118096)){_0x549d2a[_0x1f46b2]=getOperatorValue(_0x118096);}else if(_0x52992d[_0x8b0c('0xb')]===_0x8b0c('0xc')&&_[_0x8b0c('0xd')](_0x118096)){var _0x480884=JSON[_0x8b0c('0x2')](_0x118096);var _0x333319={'$gte':moment(moment(_0x480884[_0x8b0c('0xe')])[_0x8b0c('0xf')](_0x8b0c('0x10')))[_0x8b0c('0x11')]()[_0x8b0c('0xf')](),'$lte':moment(moment(_0x480884[_0x8b0c('0x12')])[_0x8b0c('0xf')](_0x8b0c('0x10')))['utc']()[_0x8b0c('0x13')](0x1,'s')[_0x8b0c('0xf')]()};_0x549d2a[_0x1f46b2]=_0x333319;}else if(_0x52992d[_0x8b0c('0x14')]===_0x8b0c('0x15')){_0x549d2a[_0x1f46b2]=_0x118096;}else{_0x549d2a[_0x1f46b2]=_[_0x8b0c('0x16')](_0x118096)?_0x118096:JSON[_0x8b0c('0x2')](_0x118096);}}else{_0x549d2a[_0x1f46b2]=_[_0x8b0c('0x16')](_0x118096)?_0x118096:JSON[_0x8b0c('0x2')](_0x118096);}}catch(_0x19d71a){_0x549d2a[_0x1f46b2]=_0x118096[_0x8b0c('0x6')](',');}});}return _0x549d2a;};exports[_0x8b0c('0x17')]=function(_0x40083a){_0x40083a=parseInt(_0x40083a,0xa);if(!_0x40083a||_0x40083a<0x0){_0x40083a=LIMIT_VALUE;}return _0x40083a;};exports[_0x8b0c('0x18')]=function(_0x4b74b1){_0x4b74b1=parseInt(_0x4b74b1,0xa);if(!_0x4b74b1||_0x4b74b1<0x0){_0x4b74b1=0x0;}return _0x4b74b1;};exports[_0x8b0c('0x19')]=function(_0x876451){var _0x1766db,_0x5877cc=null;if(_0x876451){_0x1766db=_0x876451[_0x8b0c('0x6')](',');_0x5877cc=_[_0x8b0c('0x1a')](_0x1766db,function(_0x2aafb0){if(_0x2aafb0[_0x8b0c('0x1b')]('-')===0x0){return[_0x2aafb0===_0x8b0c('0x1c')?sequelize[_0x8b0c('0x1d')](sequelize[_0x8b0c('0x1e')]('priority'),_0x8b0c('0x1f')):_0x2aafb0['substr'](0x1),_0x8b0c('0x20')];}else{return[_0x2aafb0==='priority'?sequelize[_0x8b0c('0x1d')](sequelize[_0x8b0c('0x1e')](_0x8b0c('0x1c')),_0x8b0c('0x1f')):_0x2aafb0,_0x8b0c('0x21')];}});}return _0x5877cc;};exports[_0x8b0c('0x22')]=function(_0x1d4009,_0x8d5976){if(_[_0x8b0c('0x8')](_0x1d4009)){return _0x1d4009;}if(_['isArray'](_0x1d4009)){for(var _0x9de7d8=0x0;_0x9de7d8<_0x1d4009[_0x8b0c('0x23')];_0x9de7d8+=0x1){_0x1d4009[_0x9de7d8]=this[_0x8b0c('0x22')](_0x1d4009[_0x9de7d8],_0x8d5976);}return _0x1d4009;}if(!_[_0x8b0c('0x24')](_0x1d4009)){return _0x1d4009;}if(_[_0x8b0c('0x25')](_0x8d5976)){_0x8d5976=[_0x8d5976];}if(!_[_0x8b0c('0x16')](_0x8d5976)){return _0x1d4009;}for(var _0x6a4d9=0x0;_0x6a4d9<_0x8d5976[_0x8b0c('0x23')];_0x6a4d9+=0x1){_[_0x8b0c('0x26')](_0x1d4009,_0x8d5976[_0x6a4d9]);}for(var _0x5cb31d in _0x1d4009){if(_0x1d4009[_0x8b0c('0x27')](_0x5cb31d)){_0x1d4009[_0x5cb31d]=this[_0x8b0c('0x22')](_0x1d4009[_0x5cb31d],_0x8d5976);}}return _0x1d4009;};exports[_0x8b0c('0x28')]=function(_0x4fc397){return _0x4fc397[_0x8b0c('0x29')](RegExp(_0x8b0c('0x2a')))?!![]:![];};exports[_0x8b0c('0x2b')]=function(_0x53d27a){return _0x53d27a['match'](/^\S+@\S+$/)?!![]:![];};exports[_0x8b0c('0x2c')]=function(_0x27c8b5){var _0x405cc1=[];_0x27c8b5['split'](/[ ,]+/)['forEach'](function(_0xcd3dce){_0xcd3dce=_0xcd3dce[_0x8b0c('0x2d')](/([^:]")"+/g,'$1');_0xcd3dce='+'+_0xcd3dce+'*';if(_0xcd3dce['includes']('@'))_0xcd3dce='\x22'+_0xcd3dce+'\x22';_0x405cc1[_0x8b0c('0x2e')](_0xcd3dce);});return _0x405cc1['join']('\x20');};exports['getOptions']=function(_0x5d39f3,_0x2512ed,_0x145520){var _0x5e98bd={},_0x32766c={};if(_0x2512ed[_0x8b0c('0x2f')]['$id']){_0x2512ed[_0x8b0c('0x2f')]['id']=_0x2512ed[_0x8b0c('0x2f')][_0x8b0c('0x30')];delete _0x2512ed[_0x8b0c('0x2f')]['$id'];}_0x5e98bd[_0x8b0c('0x31')]=_['map'](_0x5d39f3,'name');_0x5e98bd['query']=_[_0x8b0c('0x3')](_0x2512ed[_0x8b0c('0x2f')]);_0x5e98bd[_0x8b0c('0x7')]=_[_0x8b0c('0x32')](_0x5e98bd['model'],_0x5e98bd[_0x8b0c('0x2f')]);_0x32766c[_0x8b0c('0x33')]=_[_0x8b0c('0x32')](_0x5e98bd[_0x8b0c('0x31')],this[_0x8b0c('0x5')](_0x2512ed['query']['fields']));_0x32766c[_0x8b0c('0x33')]=_0x32766c[_0x8b0c('0x33')][_0x8b0c('0x23')]?_0x32766c[_0x8b0c('0x33')]:_0x5e98bd[_0x8b0c('0x31')];if(!_0x2512ed['query']['hasOwnProperty'](_0x8b0c('0x34'))){_0x32766c[_0x8b0c('0x17')]=this['limit'](_0x2512ed[_0x8b0c('0x2f')][_0x8b0c('0x17')]);_0x32766c[_0x8b0c('0x18')]=this['offset'](_0x2512ed[_0x8b0c('0x2f')][_0x8b0c('0x18')]);}_0x32766c[_0x8b0c('0x35')]=this[_0x8b0c('0x19')](_0x2512ed['query'][_0x8b0c('0x19')]);_0x32766c['where']=this['filters'](_[_0x8b0c('0x36')](_0x2512ed[_0x8b0c('0x2f')],_0x5e98bd['filters']),_0x5d39f3);if(_0x2512ed[_0x8b0c('0x2f')][_0x8b0c('0x37')]){_0x32766c[_0x8b0c('0x38')]=_[_0x8b0c('0x39')](_0x32766c[_0x8b0c('0x38')],{'$or':_['map'](_0x5d39f3,function(_0x217aa1){if(_0x217aa1['type']!=='VIRTUAL'){if(_0x145520){return sequelize[_0x8b0c('0x38')](sequelize['fn']('lower',sequelize[_0x8b0c('0x1e')](_0x217aa1[_0x8b0c('0x14')])),{'$like':sequelize['fn'](_0x8b0c('0x3a'),'%'+_0x2512ed['query'][_0x8b0c('0x37')]+'%')});}else{var _0x38c5e0={};_0x38c5e0[_0x217aa1['name']]={'$like':'%'+_0x2512ed[_0x8b0c('0x2f')][_0x8b0c('0x37')]+'%'};return _0x38c5e0;}}})});}_0x32766c=_[_0x8b0c('0x39')]({},_0x32766c,_0x2512ed[_0x8b0c('0x3b')]);return _0x32766c;};
\ No newline at end of file
+var _0xc9b5=['format','$lte','subtract','name','uniqueid','isArray','split','limit','offset','sort','map','indexOf','priority','cast','col','unsigned','substr','omit','length','isObject','isString','unset','hasOwnProperty','^[+]?[0-9]*$','match','forEach','replace','push','join','getOptions','$id','query','model','keys','intersection','attributes','nolimit','order','where','merge','VIRTUAL','filter','lodash','sequelize','moment','parse','fields','filters','isEmpty','find','type','DATE','isPlainObject','$gte'];(function(_0x2baca1,_0x2f3557){var _0x9aa62a=function(_0x5c47d5){while(--_0x5c47d5){_0x2baca1['push'](_0x2baca1['shift']());}};_0x9aa62a(++_0x2f3557);}(_0xc9b5,0x1da));var _0x5c9b=function(_0x566154,_0x561b10){_0x566154=_0x566154-0x0;var _0x5c8408=_0xc9b5[_0x566154];return _0x5c8408;};'use strict';var _=require(_0x5c9b('0x0'));var sequelize=require(_0x5c9b('0x1'));var moment=require(_0x5c9b('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x422890){var _0x43b1da=['ne'];try{var _0x77b35b=JSON['parse'](_0x422890);var _0x3eafc8=Object['keys'](_0x77b35b)[0x0];return _0x43b1da['includes'](_0x3eafc8);}catch(_0x41c186){return![];}}function getOperatorValue(_0x386be6){var _0x297db1=JSON[_0x5c9b('0x3')](_0x386be6);var _0x593a76=Object['keys'](_0x297db1)[0x0];var _0x279f3b=_0x297db1[_0x593a76];return{['$'+_0x593a76]:_0x279f3b};}exports[_0x5c9b('0x4')]=function(_0x1d99f0){var _0x35d5a9=null;if(_0x1d99f0){_0x35d5a9=_0x1d99f0['split'](',');}return _0x35d5a9;};exports[_0x5c9b('0x5')]=function(_0x401cbe,_0x37b956){var _0x4b4776={};if(!_[_0x5c9b('0x6')](_0x401cbe)){_['forOwn'](_0x401cbe,function(_0x494f7f,_0x2abc8f){try{if(_0x37b956){var _0x4bb6c5=_[_0x5c9b('0x7')](_0x37b956,{'name':_0x2abc8f})||{};if(hasSequelizeOperator(_0x494f7f)){_0x4b4776[_0x2abc8f]=getOperatorValue(_0x494f7f);}else if(_0x4bb6c5[_0x5c9b('0x8')]===_0x5c9b('0x9')&&_[_0x5c9b('0xa')](_0x494f7f)){var _0x21d22c=JSON[_0x5c9b('0x3')](_0x494f7f);var _0x4ead7e={'$gte':moment(moment(_0x21d22c[_0x5c9b('0xb')])[_0x5c9b('0xc')]('YYYY-MM-DD'))['utc']()[_0x5c9b('0xc')](),'$lte':moment(moment(_0x21d22c[_0x5c9b('0xd')])[_0x5c9b('0xc')]('YYYY-MM-DD'))['utc']()[_0x5c9b('0xe')](0x1,'s')['format']()};_0x4b4776[_0x2abc8f]=_0x4ead7e;}else if(_0x4bb6c5[_0x5c9b('0xf')]===_0x5c9b('0x10')){_0x4b4776[_0x2abc8f]=_0x494f7f;}else{_0x4b4776[_0x2abc8f]=_['isArray'](_0x494f7f)?_0x494f7f:JSON[_0x5c9b('0x3')](_0x494f7f);}}else{_0x4b4776[_0x2abc8f]=_[_0x5c9b('0x11')](_0x494f7f)?_0x494f7f:JSON[_0x5c9b('0x3')](_0x494f7f);}}catch(_0x270316){_0x4b4776[_0x2abc8f]=_0x494f7f[_0x5c9b('0x12')](',');}});}return _0x4b4776;};exports[_0x5c9b('0x13')]=function(_0x43dfcc){_0x43dfcc=parseInt(_0x43dfcc,0xa);if(!_0x43dfcc||_0x43dfcc<0x0){_0x43dfcc=LIMIT_VALUE;}return _0x43dfcc;};exports[_0x5c9b('0x14')]=function(_0x1a00ad){_0x1a00ad=parseInt(_0x1a00ad,0xa);if(!_0x1a00ad||_0x1a00ad<0x0){_0x1a00ad=0x0;}return _0x1a00ad;};exports[_0x5c9b('0x15')]=function(_0x5f2f7d){var _0x2f9424,_0x2a6168=null;if(_0x5f2f7d){_0x2f9424=_0x5f2f7d[_0x5c9b('0x12')](',');_0x2a6168=_[_0x5c9b('0x16')](_0x2f9424,function(_0x3f7080){if(_0x3f7080[_0x5c9b('0x17')]('-')===0x0){return[_0x3f7080===_0x5c9b('0x18')?sequelize[_0x5c9b('0x19')](sequelize[_0x5c9b('0x1a')]('priority'),_0x5c9b('0x1b')):_0x3f7080[_0x5c9b('0x1c')](0x1),'DESC'];}else{return[_0x3f7080===_0x5c9b('0x18')?sequelize['cast'](sequelize[_0x5c9b('0x1a')]('priority'),_0x5c9b('0x1b')):_0x3f7080,'ASC'];}});}return _0x2a6168;};exports[_0x5c9b('0x1d')]=function(_0x2f7fcc,_0x10a3c9){if(_[_0x5c9b('0x6')](_0x2f7fcc)){return _0x2f7fcc;}if(_['isArray'](_0x2f7fcc)){for(var _0x2600b5=0x0;_0x2600b5<_0x2f7fcc[_0x5c9b('0x1e')];_0x2600b5+=0x1){_0x2f7fcc[_0x2600b5]=this[_0x5c9b('0x1d')](_0x2f7fcc[_0x2600b5],_0x10a3c9);}return _0x2f7fcc;}if(!_[_0x5c9b('0x1f')](_0x2f7fcc)){return _0x2f7fcc;}if(_[_0x5c9b('0x20')](_0x10a3c9)){_0x10a3c9=[_0x10a3c9];}if(!_['isArray'](_0x10a3c9)){return _0x2f7fcc;}for(var _0x21041f=0x0;_0x21041f<_0x10a3c9[_0x5c9b('0x1e')];_0x21041f+=0x1){_[_0x5c9b('0x21')](_0x2f7fcc,_0x10a3c9[_0x21041f]);}for(var _0xcc1a2f in _0x2f7fcc){if(_0x2f7fcc[_0x5c9b('0x22')](_0xcc1a2f)){_0x2f7fcc[_0xcc1a2f]=this[_0x5c9b('0x1d')](_0x2f7fcc[_0xcc1a2f],_0x10a3c9);}}return _0x2f7fcc;};exports['isNumeric']=function(_0x2e3aa0){return _0x2e3aa0['match'](RegExp(_0x5c9b('0x23')))?!![]:![];};exports['isEmail']=function(_0x32e4b3){return _0x32e4b3[_0x5c9b('0x24')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x2691f8){var _0x45f399=[];_0x2691f8[_0x5c9b('0x12')](/[ ,]+/)[_0x5c9b('0x25')](function(_0x1347f1){_0x1347f1=_0x1347f1[_0x5c9b('0x26')](/([^:]")"+/g,'$1');_0x1347f1='+'+_0x1347f1+'*';if(_0x1347f1['includes']('@'))_0x1347f1='\x22'+_0x1347f1+'\x22';_0x45f399[_0x5c9b('0x27')](_0x1347f1);});return _0x45f399[_0x5c9b('0x28')]('\x20');};exports[_0x5c9b('0x29')]=function(_0x19c2cf,_0x22dceb,_0x4eff4c){var _0x22d06b={},_0x40947a={};if(_0x22dceb['query'][_0x5c9b('0x2a')]){_0x22dceb[_0x5c9b('0x2b')]['id']=_0x22dceb['query'][_0x5c9b('0x2a')];delete _0x22dceb[_0x5c9b('0x2b')][_0x5c9b('0x2a')];}_0x22d06b[_0x5c9b('0x2c')]=_[_0x5c9b('0x16')](_0x19c2cf,'name');_0x22d06b['query']=_[_0x5c9b('0x2d')](_0x22dceb[_0x5c9b('0x2b')]);_0x22d06b[_0x5c9b('0x5')]=_[_0x5c9b('0x2e')](_0x22d06b[_0x5c9b('0x2c')],_0x22d06b['query']);_0x40947a[_0x5c9b('0x2f')]=_['intersection'](_0x22d06b[_0x5c9b('0x2c')],this[_0x5c9b('0x4')](_0x22dceb[_0x5c9b('0x2b')]['fields']));_0x40947a['attributes']=_0x40947a[_0x5c9b('0x2f')][_0x5c9b('0x1e')]?_0x40947a[_0x5c9b('0x2f')]:_0x22d06b['model'];if(!_0x22dceb[_0x5c9b('0x2b')][_0x5c9b('0x22')](_0x5c9b('0x30'))){_0x40947a['limit']=this[_0x5c9b('0x13')](_0x22dceb[_0x5c9b('0x2b')]['limit']);_0x40947a['offset']=this[_0x5c9b('0x14')](_0x22dceb[_0x5c9b('0x2b')][_0x5c9b('0x14')]);}_0x40947a[_0x5c9b('0x31')]=this[_0x5c9b('0x15')](_0x22dceb[_0x5c9b('0x2b')][_0x5c9b('0x15')]);_0x40947a[_0x5c9b('0x32')]=this['filters'](_['pick'](_0x22dceb['query'],_0x22d06b[_0x5c9b('0x5')]),_0x19c2cf);if(_0x22dceb[_0x5c9b('0x2b')]['filter']){_0x40947a[_0x5c9b('0x32')]=_[_0x5c9b('0x33')](_0x40947a[_0x5c9b('0x32')],{'$or':_[_0x5c9b('0x16')](_0x19c2cf,function(_0x5d322e){if(_0x5d322e[_0x5c9b('0x8')]!==_0x5c9b('0x34')){if(_0x4eff4c){return sequelize[_0x5c9b('0x32')](sequelize['fn']('lower',sequelize[_0x5c9b('0x1a')](_0x5d322e[_0x5c9b('0xf')])),{'$like':sequelize['fn']('lower','%'+_0x22dceb['query']['filter']+'%')});}else{var _0x4c64fd={};_0x4c64fd[_0x5d322e[_0x5c9b('0xf')]]={'$like':'%'+_0x22dceb[_0x5c9b('0x2b')][_0x5c9b('0x35')]+'%'};return _0x4c64fd;}}})});}_0x40947a=_[_0x5c9b('0x33')]({},_0x40947a,_0x22dceb['options']);return _0x40947a;};
\ No newline at end of file
index 9434d17..492f30f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe26b=['renderFile','view\x20engine','50mb','json','express','serve-favicon','body-parser','method-override','cookie-parser','path','passport','cors','moment','./environment','../mysqldb','default','get','env','production','set','join','root','test','appPath','client','use','json\x20replacer','toISOString','static','views','/server/views','engine','html'];(function(_0x300796,_0x4f7e0f){var _0x57d382=function(_0x286d12){while(--_0x286d12){_0x300796['push'](_0x300796['shift']());}};_0x57d382(++_0x4f7e0f);}(_0xe26b,0x14e));var _0xbe26=function(_0x258c5e,_0x407908){_0x258c5e=_0x258c5e-0x0;var _0x4ce92e=_0xe26b[_0x258c5e];return _0x4ce92e;};'use strict';var express=require(_0xbe26('0x0'));var favicon=require(_0xbe26('0x1'));var bodyParser=require(_0xbe26('0x2'));var methodOverride=require(_0xbe26('0x3'));var cookieParser=require(_0xbe26('0x4'));var errorHandler=require('errorhandler');var path=require(_0xbe26('0x5'));var passport=require(_0xbe26('0x6'));var cors=require(_0xbe26('0x7'));var moment=require(_0xbe26('0x8'));var config=require(_0xbe26('0x9'));var db=require(_0xbe26('0xa'))['db'];exports[_0xbe26('0xb')]=function(_0x5cf75c){var _0x1d67e7=_0x5cf75c[_0xbe26('0xc')](_0xbe26('0xd'));if(_0x1d67e7===_0xbe26('0xe')){_0x5cf75c[_0xbe26('0xf')]('appPath',path[_0xbe26('0x10')](config[_0xbe26('0x11')],'public'));}if(_0x1d67e7==='development'||_0x1d67e7===_0xbe26('0x12')){_0x5cf75c[_0xbe26('0xf')](_0xbe26('0x13'),path[_0xbe26('0x10')](config['root'],_0xbe26('0x14')));_0x5cf75c[_0xbe26('0x15')](errorHandler());}_0x5cf75c[_0xbe26('0xf')](_0xbe26('0x16'),function(_0xbe8037,_0xc240f8){if(this[_0xbe8037]instanceof Date){_0xc240f8=this[_0xbe8037][_0xbe26('0x17')]()['split']('.')[0x0]+'Z';}return _0xc240f8;});_0x5cf75c[_0xbe26('0x15')](express[_0xbe26('0x18')](_0x5cf75c[_0xbe26('0xc')]('appPath')));_0x5cf75c[_0xbe26('0xf')](_0xbe26('0x19'),config[_0xbe26('0x11')]+_0xbe26('0x1a'));_0x5cf75c[_0xbe26('0x1b')](_0xbe26('0x1c'),require('ejs')[_0xbe26('0x1d')]);_0x5cf75c[_0xbe26('0xf')](_0xbe26('0x1e'),_0xbe26('0x1c'));_0x5cf75c[_0xbe26('0x15')](bodyParser['urlencoded']({'limit':_0xbe26('0x1f'),'extended':!![]}));_0x5cf75c['use'](bodyParser[_0xbe26('0x20')]({'limit':_0xbe26('0x1f')}));_0x5cf75c['use'](cors());_0x5cf75c[_0xbe26('0x15')](methodOverride());_0x5cf75c[_0xbe26('0x15')](cookieParser());_0x5cf75c[_0xbe26('0x15')](passport['initialize']());};
\ No newline at end of file
+var _0x99c8=['production','appPath','public','development','test','set','root','use','toISOString','split','static','/server/views','engine','html','ejs','view\x20engine','urlencoded','50mb','json','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','path','passport','cors','../mysqldb','default','get','env'];(function(_0x2dde4e,_0x20db42){var _0x3085d6=function(_0x3e960b){while(--_0x3e960b){_0x2dde4e['push'](_0x2dde4e['shift']());}};_0x3085d6(++_0x20db42);}(_0x99c8,0x1f4));var _0x899c=function(_0x5ebc32,_0x21804d){_0x5ebc32=_0x5ebc32-0x0;var _0x3bb8b3=_0x99c8[_0x5ebc32];return _0x3bb8b3;};'use strict';var express=require(_0x899c('0x0'));var favicon=require(_0x899c('0x1'));var bodyParser=require(_0x899c('0x2'));var methodOverride=require(_0x899c('0x3'));var cookieParser=require(_0x899c('0x4'));var errorHandler=require('errorhandler');var path=require(_0x899c('0x5'));var passport=require(_0x899c('0x6'));var cors=require(_0x899c('0x7'));var moment=require('moment');var config=require('./environment');var db=require(_0x899c('0x8'))['db'];exports[_0x899c('0x9')]=function(_0x3fd3f1){var _0x51bdae=_0x3fd3f1[_0x899c('0xa')](_0x899c('0xb'));if(_0x51bdae===_0x899c('0xc')){_0x3fd3f1['set'](_0x899c('0xd'),path['join'](config['root'],_0x899c('0xe')));}if(_0x51bdae===_0x899c('0xf')||_0x51bdae===_0x899c('0x10')){_0x3fd3f1[_0x899c('0x11')](_0x899c('0xd'),path['join'](config[_0x899c('0x12')],'client'));_0x3fd3f1[_0x899c('0x13')](errorHandler());}_0x3fd3f1['set']('json\x20replacer',function(_0xe958cb,_0x9ed6c4){if(this[_0xe958cb]instanceof Date){_0x9ed6c4=this[_0xe958cb][_0x899c('0x14')]()[_0x899c('0x15')]('.')[0x0]+'Z';}return _0x9ed6c4;});_0x3fd3f1[_0x899c('0x13')](express[_0x899c('0x16')](_0x3fd3f1[_0x899c('0xa')](_0x899c('0xd'))));_0x3fd3f1['set']('views',config[_0x899c('0x12')]+_0x899c('0x17'));_0x3fd3f1[_0x899c('0x18')](_0x899c('0x19'),require(_0x899c('0x1a'))['renderFile']);_0x3fd3f1[_0x899c('0x11')](_0x899c('0x1b'),_0x899c('0x19'));_0x3fd3f1[_0x899c('0x13')](bodyParser[_0x899c('0x1c')]({'limit':_0x899c('0x1d'),'extended':!![]}));_0x3fd3f1[_0x899c('0x13')](bodyParser[_0x899c('0x1e')]({'limit':'50mb'}));_0x3fd3f1[_0x899c('0x13')](cors());_0x3fd3f1[_0x899c('0x13')](methodOverride());_0x3fd3f1[_0x899c('0x13')](cookieParser());_0x3fd3f1[_0x899c('0x13')](passport[_0x899c('0x1f')]());};
\ No newline at end of file
index 16d8d7e..00ec354 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f87=['test','win32','dmidecode\x20--string\x20system-uuid','utf8','hostname','macAddress','ipAddress','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','keys','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','orderBy','cpus','model','join','createHash','md5','update','digest','hex','getUuid','licenseToken'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0f87,0x138));var _0x70f8=function(_0x51182a,_0x8c6ab2){_0x51182a=_0x51182a-0x0;var _0x458068=_0x0f87[_0x51182a];return _0x458068;};'use strict';var _=require(_0x70f8('0x0'));var os=require('os');var crypto=require(_0x70f8('0x1'));var machine=require(_0x70f8('0x2'));var exec=require(_0x70f8('0x3'))[_0x70f8('0x4')];var config=require(_0x70f8('0x5'));function getInterfaces(){var _0x3a070b=[];var _0x23cf4f=os[_0x70f8('0x6')]();var _0x471456=_['orderBy'](_[_0x70f8('0x7')](_0x23cf4f));for(var _0x44d021=0x0;_0x44d021<_0x471456['length'];_0x44d021++){var _0x272991=_0x23cf4f[_0x471456[_0x44d021]][_0x70f8('0x8')](function(_0x1d5a21){return _0x1d5a21[_0x70f8('0x9')]===_0x70f8('0xa')&&_0x1d5a21[_0x70f8('0xb')]===![];});_0x3a070b=_0x3a070b[_0x70f8('0xc')](_0x272991);}return _0x3a070b;}function getFirstInterface(){var _0x27bef3=_[_0x70f8('0xd')](getInterfaces());return{'macAddress':_0x27bef3&&_0x27bef3[_0x70f8('0xe')]?_0x27bef3[_0x70f8('0xe')]:_0x70f8('0xf'),'ipAddress':_0x27bef3&&_0x27bef3[_0x70f8('0x10')]?_0x27bef3[_0x70f8('0x10')]:_0x70f8('0x11')};}exports[_0x70f8('0x12')]=getFirstInterface;function getCPUhash(){var _0x3bbcfe=_[_0x70f8('0x13')](os[_0x70f8('0x14')]()['map'](function(_0x32fcd0){return _0x32fcd0[_0x70f8('0x15')];}))[_0x70f8('0x16')](':');return crypto[_0x70f8('0x17')](_0x70f8('0x18'))[_0x70f8('0x19')](_0x3bbcfe)[_0x70f8('0x1a')](_0x70f8('0x1b'));}exports[_0x70f8('0x1c')]=function(){var _0x21d8e5=os['platform']();var _0x3909b4=/[0-9a-f-]{36}/;if(config[_0x70f8('0x1d')]&&_0x3909b4[_0x70f8('0x1e')](config[_0x70f8('0x1d')])){return config[_0x70f8('0x1d')];}else if(_0x21d8e5===_0x70f8('0x1f')){return exec(_0x70f8('0x20'),{'encoding':_0x70f8('0x21')})['replace']('\x0d\x0a','');}else{var _0xdc13f1=getFirstInterface();var _0x4e680d=getCPUhash();var _0x1d93f9=_0x4e680d+'|'+os[_0x70f8('0x22')]()+'|'+_0xdc13f1[_0x70f8('0x23')]+'|'+_0xdc13f1[_0x70f8('0x24')];var _0x8f0d2b=crypto[_0x70f8('0x17')](_0x70f8('0x18'))[_0x70f8('0x19')](_0x1d93f9)['digest']('hex');return _0x8f0d2b['substring'](0x0,0x8)+'-'+_0x8f0d2b[_0x70f8('0x25')](0x8,0xc)+'-'+_0x8f0d2b[_0x70f8('0x25')](0xc,0x10)+'-'+_0x8f0d2b['substring'](0x10,0x14)+'-'+_0x8f0d2b['substring'](0x14);}};
\ No newline at end of file
+var _0x74ed=['head','mac','00:00:00:00:00:00','address','getFirstInterface','orderBy','map','model','join','createHash','md5','getUuid','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','hostname','update','substring','crypto','child_process','execSync','networkInterfaces','length','filter','family','IPv4','concat'];(function(_0x152170,_0x26f7d2){var _0x17c1d6=function(_0x255224){while(--_0x255224){_0x152170['push'](_0x152170['shift']());}};_0x17c1d6(++_0x26f7d2);}(_0x74ed,0x105));var _0xd74e=function(_0x3f21e0,_0x3e3f3d){_0x3f21e0=_0x3f21e0-0x0;var _0x19b54d=_0x74ed[_0x3f21e0];return _0x19b54d;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0xd74e('0x0'));var machine=require('bimedia-machine-uuid');var exec=require(_0xd74e('0x1'))[_0xd74e('0x2')];var config=require('../environment');function getInterfaces(){var _0x5d5b7e=[];var _0x5e3801=os[_0xd74e('0x3')]();var _0x2c17b5=_['orderBy'](_['keys'](_0x5e3801));for(var _0x3a106a=0x0;_0x3a106a<_0x2c17b5[_0xd74e('0x4')];_0x3a106a++){var _0x2a9369=_0x5e3801[_0x2c17b5[_0x3a106a]][_0xd74e('0x5')](function(_0x5bd781){return _0x5bd781[_0xd74e('0x6')]===_0xd74e('0x7')&&_0x5bd781['internal']===![];});_0x5d5b7e=_0x5d5b7e[_0xd74e('0x8')](_0x2a9369);}return _0x5d5b7e;}function getFirstInterface(){var _0xc36cc0=_[_0xd74e('0x9')](getInterfaces());return{'macAddress':_0xc36cc0&&_0xc36cc0[_0xd74e('0xa')]?_0xc36cc0[_0xd74e('0xa')]:_0xd74e('0xb'),'ipAddress':_0xc36cc0&&_0xc36cc0[_0xd74e('0xc')]?_0xc36cc0[_0xd74e('0xc')]:'127.0.0.1'};}exports[_0xd74e('0xd')]=getFirstInterface;function getCPUhash(){var _0x3919ad=_[_0xd74e('0xe')](os['cpus']()[_0xd74e('0xf')](function(_0x44e2ba){return _0x44e2ba[_0xd74e('0x10')];}))[_0xd74e('0x11')](':');return crypto[_0xd74e('0x12')](_0xd74e('0x13'))['update'](_0x3919ad)['digest']('hex');}exports[_0xd74e('0x14')]=function(){var _0x55abc3=os[_0xd74e('0x15')]();var _0x47d98c=/[0-9a-f-]{36}/;if(config[_0xd74e('0x16')]&&_0x47d98c[_0xd74e('0x17')](config[_0xd74e('0x16')])){return config[_0xd74e('0x16')];}else if(_0x55abc3===_0xd74e('0x18')){return exec(_0xd74e('0x19'),{'encoding':_0xd74e('0x1a')})['replace']('\x0d\x0a','');}else{var _0x2bea13=getFirstInterface();var _0x43d1be=getCPUhash();var _0x45cbfb=_0x43d1be+'|'+os[_0xd74e('0x1b')]()+'|'+_0x2bea13['macAddress']+'|'+_0x2bea13['ipAddress'];var _0xe43ec2=crypto[_0xd74e('0x12')](_0xd74e('0x13'))[_0xd74e('0x1c')](_0x45cbfb)['digest']('hex');return _0xe43ec2['substring'](0x0,0x8)+'-'+_0xe43ec2['substring'](0x8,0xc)+'-'+_0xe43ec2[_0xd74e('0x1d')](0xc,0x10)+'-'+_0xe43ec2[_0xd74e('0x1d')](0x10,0x14)+'-'+_0xe43ec2['substring'](0x14);}};
\ No newline at end of file
index db22b82..598954f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09f1=['Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','update','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','message','finally','getUuid','License','findOrCreate','spread','default','util','moment','request-promise','bluebird','../../components/encryptor','../logger','license','%s/api/servers/%s/check?version=%s','exports','version','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','data1','active','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED'];(function(_0x24d8b9,_0x72d98){var _0x2fd908=function(_0x12d53a){while(--_0x12d53a){_0x24d8b9['push'](_0x24d8b9['shift']());}};_0x2fd908(++_0x72d98);}(_0x09f1,0x198));var _0x109f=function(_0x25548c,_0x3e2f63){_0x25548c=_0x25548c-0x0;var _0x5ace5b=_0x09f1[_0x25548c];return _0x5ace5b;};'use strict';var util=require(_0x109f('0x0'));var moment=require(_0x109f('0x1'));var rp=require(_0x109f('0x2'));var BPromise=require(_0x109f('0x3'));var pkginfo=require('pkginfo')(module,'version');var db=require('../../mysqldb')['db'];var encryptor=require(_0x109f('0x4'));var hardware=require('./hardware');var logger=require(_0x109f('0x5'))(_0x109f('0x6'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x23501d){return new BPromise(function(_0xd1b660,_0x343199){var _0x4911e3=util['format'](_0x109f('0x7'),HOST,_0x23501d,module[_0x109f('0x8')][_0x109f('0x9')]);if(oldToken){_0x4911e3=util[_0x109f('0xa')](_0x109f('0xb'),HOST,_0x23501d,module['exports'][_0x109f('0x9')],oldToken);}var _0x4183bf={'uri':_0x4911e3,'method':_0x109f('0xc'),'timeout':0xea60,'json':!![]};return rp(_0x4183bf)[_0x109f('0xd')](function(_0x4ab6e2){_0xd1b660(_0x4ab6e2);})[_0x109f('0xe')](function(_0x58af4d){_0x343199(_0x58af4d);});});}function manageLicense(_0x5d6386,_0x4c926a){var _0x5591a6=_0x4c926a['get']({'plain':!![]});if(!isOldTokenSent&&_0x5591a6[_0x109f('0xf')]!==_0x5d6386&&!_0x5591a6['data2']){oldToken=_0x5591a6[_0x109f('0xf')];}httpRequest(_0x5d6386)[_0x109f('0xd')](function(_0x3cbc45){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x3cbc45[_0x109f('0x10')]){isOldTokenSent=![];if(!_0x5591a6['license']&&_0x5591a6['license']!=_0x3cbc45[_0x109f('0x6')]||_0x5591a6[_0x109f('0x6')]&&_0x5591a6[_0x109f('0x11')]){logger[_0x109f('0x12')](_0x109f('0x13'));}if(_0x5591a6[_0x109f('0x6')]&&!_0x5591a6[_0x109f('0x11')]&&_0x5591a6[_0x109f('0x6')]!=_0x3cbc45[_0x109f('0x6')]){logger['info'](_0x109f('0x14'));}if(_0x5591a6[_0x109f('0x6')]&&!_0x5591a6[_0x109f('0x11')]&&_0x5591a6[_0x109f('0x6')]==_0x3cbc45['license']){return _0x4c926a;}return _0x4c926a['update']({'data1':_0x5d6386,'data2':null,'license':_0x3cbc45[_0x109f('0x6')]});}else{if(_0x3cbc45[_0x109f('0x6')]||_0x5591a6[_0x109f('0x6')]){if(!_0x5591a6[_0x109f('0x11')]){if(_0x5591a6[_0x109f('0xf')]==_0x5d6386){GRAY_PERIOD_REASON=_0x109f('0x15');logger[_0x109f('0x12')](_0x109f('0x16'));}else{GRAY_PERIOD_REASON=_0x109f('0x17');logger[_0x109f('0x12')](_0x109f('0x18'),_0x5591a6[_0x109f('0xf')],_0x5d6386);}logger[_0x109f('0x12')](_0x109f('0x19'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0x109f('0xa')](_0x109f('0x1a')));return _0x4c926a[_0x109f('0x1b')]({'data2':encryptor['encryptString'](moment()[_0x109f('0xa')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x109f('0x1c')](encryptor[_0x109f('0x1d')](_0x5591a6['data2']),_0x109f('0x1e'))>DAYS){logger[_0x109f('0x12')](_0x109f('0x1f'),moment()[_0x109f('0xa')](_0x109f('0x1a')));isOldTokenSent=![];return _0x4c926a[_0x109f('0x1b')]({'data1':_0x5d6386,'data2':null,'license':null});}}}else{if(_0x5591a6['data1']!=_0x5d6386){logger[_0x109f('0x12')](_0x109f('0x18'),_0x5591a6[_0x109f('0xf')],_0x5d6386);return _0x4c926a['update']({'data1':_0x5d6386,'data2':null,'license':null});}}}return _0x4c926a;})[_0x109f('0xd')](function(_0x344db1){_0x4c926a=_0x344db1;})[_0x109f('0xe')](function(_0x51370a){logger['error'](_0x51370a[_0x109f('0x20')]);})[_0x109f('0x21')](function(){setTimeout(function(){manageLicense(hardware[_0x109f('0x22')](),_0x4c926a);},TIME);});}function defaultLicense(){var _0x5e8627=hardware[_0x109f('0x22')]();if(_0x5e8627){return db[_0x109f('0x23')][_0x109f('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x5e8627}})[_0x109f('0x25')](function(_0x5a477a,_0x46885d){logger[_0x109f('0x12')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x5e8627);manageLicense(_0x5e8627,_0x5a477a);})[_0x109f('0xe')](function(_0x2cb799){logger['error'](_0x2cb799['message']);});}}exports[_0x109f('0x26')]=defaultLicense;
\ No newline at end of file
+var _0x86ef=['../../mysqldb','../../components/encryptor','./hardware','license','https://www.xcallymotion.com','format','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','version','GET','data1','active','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','encryptString','diff','days','DEMO\x20START\x20AT\x20%s','catch','error','message','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','bluebird','pkginfo'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x86ef,0xeb));var _0xf86e=function(_0xc1e0a2,_0x44852c){_0xc1e0a2=_0xc1e0a2-0x0;var _0x2fabdd=_0x86ef[_0xc1e0a2];return _0x2fabdd;};'use strict';var util=require(_0xf86e('0x0'));var moment=require(_0xf86e('0x1'));var rp=require(_0xf86e('0x2'));var BPromise=require(_0xf86e('0x3'));var pkginfo=require(_0xf86e('0x4'))(module,'version');var db=require(_0xf86e('0x5'))['db'];var encryptor=require(_0xf86e('0x6'));var hardware=require(_0xf86e('0x7'));var logger=require('../logger')(_0xf86e('0x8'));var HOST=_0xf86e('0x9');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x472cc2){return new BPromise(function(_0x51f6de,_0x3b6521){var _0x242bd5=util[_0xf86e('0xa')]('%s/api/servers/%s/check?version=%s',HOST,_0x472cc2,module[_0xf86e('0xb')]['version']);if(oldToken){_0x242bd5=util[_0xf86e('0xa')](_0xf86e('0xc'),HOST,_0x472cc2,module[_0xf86e('0xb')][_0xf86e('0xd')],oldToken);}var _0x3a5c76={'uri':_0x242bd5,'method':_0xf86e('0xe'),'timeout':0xea60,'json':!![]};return rp(_0x3a5c76)['then'](function(_0x31363f){_0x51f6de(_0x31363f);})['catch'](function(_0x732150){_0x3b6521(_0x732150);});});}function manageLicense(_0x54d77f,_0x547c81){var _0x12a047=_0x547c81['get']({'plain':!![]});if(!isOldTokenSent&&_0x12a047['data1']!==_0x54d77f&&!_0x12a047['data2']){oldToken=_0x12a047[_0xf86e('0xf')];}httpRequest(_0x54d77f)['then'](function(_0x1ba94c){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x1ba94c[_0xf86e('0x10')]){isOldTokenSent=![];if(!_0x12a047[_0xf86e('0x8')]&&_0x12a047[_0xf86e('0x8')]!=_0x1ba94c['license']||_0x12a047['license']&&_0x12a047[_0xf86e('0x11')]){logger[_0xf86e('0x12')](_0xf86e('0x13'));}if(_0x12a047[_0xf86e('0x8')]&&!_0x12a047[_0xf86e('0x11')]&&_0x12a047['license']!=_0x1ba94c['license']){logger[_0xf86e('0x12')](_0xf86e('0x14'));}if(_0x12a047[_0xf86e('0x8')]&&!_0x12a047[_0xf86e('0x11')]&&_0x12a047[_0xf86e('0x8')]==_0x1ba94c[_0xf86e('0x8')]){return _0x547c81;}return _0x547c81[_0xf86e('0x15')]({'data1':_0x54d77f,'data2':null,'license':_0x1ba94c['license']});}else{if(_0x1ba94c[_0xf86e('0x8')]||_0x12a047[_0xf86e('0x8')]){if(!_0x12a047[_0xf86e('0x11')]){if(_0x12a047[_0xf86e('0xf')]==_0x54d77f){GRAY_PERIOD_REASON=_0xf86e('0x16');logger['info'](_0xf86e('0x17'));}else{GRAY_PERIOD_REASON=_0xf86e('0x18');logger[_0xf86e('0x12')](_0xf86e('0x19'),_0x12a047['data1'],_0x54d77f);}logger[_0xf86e('0x12')](_0xf86e('0x1a'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0xf86e('0xa')](_0xf86e('0x1b')));return _0x547c81[_0xf86e('0x15')]({'data2':encryptor[_0xf86e('0x1c')](moment()['format'](_0xf86e('0x1b')))});}else{if(moment()[_0xf86e('0x1d')](encryptor['decryptString'](_0x12a047[_0xf86e('0x11')]),_0xf86e('0x1e'))>DAYS){logger[_0xf86e('0x12')](_0xf86e('0x1f'),moment()['format']('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x547c81['update']({'data1':_0x54d77f,'data2':null,'license':null});}}}else{if(_0x12a047[_0xf86e('0xf')]!=_0x54d77f){logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x12a047[_0xf86e('0xf')],_0x54d77f);return _0x547c81[_0xf86e('0x15')]({'data1':_0x54d77f,'data2':null,'license':null});}}}return _0x547c81;})['then'](function(_0x444825){_0x547c81=_0x444825;})[_0xf86e('0x20')](function(_0x19694c){logger[_0xf86e('0x21')](_0x19694c[_0xf86e('0x22')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x547c81);},TIME);});}function defaultLicense(){var _0x7c16ef=hardware[_0xf86e('0x23')]();if(_0x7c16ef){return db['License'][_0xf86e('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x7c16ef}})[_0xf86e('0x25')](function(_0x3529d5,_0x44ff2f){logger[_0xf86e('0x12')](_0xf86e('0x26'),_0x7c16ef);manageLicense(_0x7c16ef,_0x3529d5);})['catch'](function(_0x381490){logger['error'](_0x381490[_0xf86e('0x22')]);});}}exports[_0xf86e('0x27')]=defaultLicense;
\ No newline at end of file
index 1c20cac..4d3c9ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b92=['split','format','%s:%s:%s','parse','demo','machineUuid','decryptString','gray','days','changed','disabled','message','User','findAll','role','sequelize','COUNT','col','user','telephone','telephones','forEach','count','catch','pick','countBy','admin','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','util','lodash','moment','bluebird','./hardware','../../components/encryptor','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2'];(function(_0x1afe96,_0x2dfdf4){var _0x44df93=function(_0x5f0539){while(--_0x5f0539){_0x1afe96['push'](_0x1afe96['shift']());}};_0x44df93(++_0x2dfdf4);}(_0x5b92,0xb0));var _0x25b9=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x5b92[_0x56482c];return _0x5aae7a;};'use strict';var util=require(_0x25b9('0x0'));var _=require(_0x25b9('0x1'));var moment=require(_0x25b9('0x2'));var BPromise=require(_0x25b9('0x3'));var hardware=require(_0x25b9('0x4'));var encryptor=require(_0x25b9('0x5'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x25b9('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x25b9('0x7'),'machineUuid':hardware[_0x25b9('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x25b9('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x25b9('0x9'),'machineUuid':hardware[_0x25b9('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5e3689){return new BPromise(function(_0x139dd6,_0x50e33c){return db[_0x25b9('0xa')][_0x25b9('0xb')](_[_0x25b9('0xc')](_0x5e3689,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x54c868){return checkLicense(_0x54c868,null);})[_0x25b9('0xd')](function(_0x1f3a09){_0x139dd6(_0x1f3a09);return;})['catch'](function(_0xbfe597){_0x50e33c(_0xbfe597);});});}function checkLicense(_0x2c7c59,_0x1fc31e){if(!_0x2c7c59){demoLicense[_0x25b9('0xe')]=_0x2c7c59[_0x25b9('0xf')];return demoLicense;}try{var _0x5a0520=_0x1fc31e||_0x2c7c59[_0x25b9('0x10')];if(_[_0x25b9('0x11')](_0x5a0520)){throw new Error(_0x25b9('0x12'));}var _0x46a668=_0x2c7c59['data1'];var _0x57ab7c=_0x2c7c59[_0x25b9('0x13')];var _0x4a29e9=_0x46a668[_0x25b9('0x14')]('-')[0x4];var _0x5f3af2=_0x46a668['split']('-')[0x0];var _0x400d37=encryptor['decryptString'](_0x5a0520,util[_0x25b9('0x15')](_0x25b9('0x16'),_0x4a29e9,_0x46a668,_0x5f3af2));var _0x5ae931=JSON[_0x25b9('0x17')](_0x400d37);_0x5ae931[_0x25b9('0x18')]=![];_0x5ae931[_0x25b9('0xe')]=_0x46a668;_0x5ae931[_0x25b9('0x19')]=hardware[_0x25b9('0x8')]();if(_0x57ab7c){var _0x5b763b=encryptor[_0x25b9('0x1a')](_0x57ab7c);_0x5ae931[_0x25b9('0x1b')]=_0x5b763b;_0x5ae931['deadline']=moment(_0x5b763b)['add'](0x7,_0x25b9('0x1c'))[_0x25b9('0x15')]();_0x5ae931['grayReason']=_0x5ae931[_0x25b9('0xe')]!=_0x5ae931['machineUuid']?_0x25b9('0x1d'):_0x25b9('0x1e');}return _0x5ae931;}catch(_0x3c988b){breakingLicense[_0x25b9('0xe')]=_0x2c7c59[_0x25b9('0xf')];breakingLicense[_0x25b9('0x1f')]=_0x3c988b['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x1aab6a,_0x50752d){getLicense()[_0x25b9('0xd')](function(_0x195673){return db[_0x25b9('0x20')][_0x25b9('0x21')]({'attributes':[_0x25b9('0x22'),[db[_0x25b9('0x23')]['fn'](_0x25b9('0x24'),db[_0x25b9('0x23')][_0x25b9('0x25')](_0x25b9('0x22'))),'count']],'group':_0x25b9('0x22'),'where':{'role':{'$or':['admin',_0x25b9('0x26'),_0x25b9('0x27')]}},'raw':!![]})['then'](function(_0x112d6e){var _0x3add92={'user':_0x195673['users']||0x0,'telephone':_0x195673[_0x25b9('0x28')]||0x0};_0x112d6e[_0x25b9('0x29')](function(_0x810346){var _0x2199c3=_0x810346[_0x25b9('0x22')]==='admin'?_0x25b9('0x26'):_0x810346['role'];_0x3add92[_0x2199c3]-=_0x810346[_0x25b9('0x2a')];if(_0x3add92[_0x2199c3]<0x0)_0x3add92[_0x2199c3]=0x0;});_0x1aab6a(_0x3add92);return;});})[_0x25b9('0x2b')](function(_0x2547a1){_0x50752d(_0x2547a1);});});}function checkUserLimits(_0x2fa06a){return new BPromise(function(_0x3bdf67,_0x1b8447){getLimits()[_0x25b9('0xd')](function(_0x41c977){var _0x4dcaa1=_[_0x25b9('0x2c')](_[_0x25b9('0x2d')](_0x2fa06a,_0x25b9('0x22')),[_0x25b9('0x2e'),_0x25b9('0x26'),_0x25b9('0x27')]);var _0x1a88cf=(_0x4dcaa1[_0x25b9('0x2e')]||0x0)+(_0x4dcaa1[_0x25b9('0x26')]||0x0);var _0x46d9e9=_0x4dcaa1['telephone']||0x0;if(_0x1a88cf>_0x41c977['user'])return _0x1b8447(_0x25b9('0x2f'));if(_0x46d9e9>_0x41c977[_0x25b9('0x27')])return _0x1b8447(_0x25b9('0x30'));return _0x3bdf67();})[_0x25b9('0x2b')](function(_0x3abbb2){_0x1b8447(_0x3abbb2);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0xbc32=['admin','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','License','defaults','then','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','deadline','days','disabled','message','User','role','sequelize','COUNT','col','count','user','telephone','users'];(function(_0xc1fac2,_0x725358){var _0x1a31f8=function(_0x22e4f3){while(--_0x22e4f3){_0xc1fac2['push'](_0xc1fac2['shift']());}};_0x1a31f8(++_0x725358);}(_0xbc32,0x120));var _0x2bc3=function(_0x46a9a1,_0x5325fd){_0x46a9a1=_0x46a9a1-0x0;var _0x50d5b5=_0xbc32[_0x46a9a1];return _0x50d5b5;};'use strict';var util=require(_0x2bc3('0x0'));var _=require(_0x2bc3('0x1'));var moment=require(_0x2bc3('0x2'));var BPromise=require(_0x2bc3('0x3'));var hardware=require(_0x2bc3('0x4'));var encryptor=require(_0x2bc3('0x5'));var db=require(_0x2bc3('0x6'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x2bc3('0x7'),'machineUuid':hardware[_0x2bc3('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2bc3('0x9'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x2bc3('0xa'),'machineUuid':hardware[_0x2bc3('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2c2f6f){return new BPromise(function(_0x58d98d,_0x1dd172){return db[_0x2bc3('0xb')]['find'](_[_0x2bc3('0xc')](_0x2c2f6f,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x4046f1){return checkLicense(_0x4046f1,null);})[_0x2bc3('0xd')](function(_0x413310){_0x58d98d(_0x413310);return;})[_0x2bc3('0xe')](function(_0x1b56e4){_0x1dd172(_0x1b56e4);});});}function checkLicense(_0x2c9a10,_0x1356f5){if(!_0x2c9a10){demoLicense[_0x2bc3('0xf')]=_0x2c9a10[_0x2bc3('0x10')];return demoLicense;}try{var _0x29d8b6=_0x1356f5||_0x2c9a10[_0x2bc3('0x11')];if(_[_0x2bc3('0x12')](_0x29d8b6)){throw new Error(_0x2bc3('0x13'));}var _0x372b56=_0x2c9a10[_0x2bc3('0x10')];var _0x10de04=_0x2c9a10[_0x2bc3('0x14')];var _0x3412de=_0x372b56[_0x2bc3('0x15')]('-')[0x4];var _0x35ea94=_0x372b56[_0x2bc3('0x15')]('-')[0x0];var _0x5b3a80=encryptor[_0x2bc3('0x16')](_0x29d8b6,util[_0x2bc3('0x17')](_0x2bc3('0x18'),_0x3412de,_0x372b56,_0x35ea94));var _0x2b79ef=JSON[_0x2bc3('0x19')](_0x5b3a80);_0x2b79ef[_0x2bc3('0x1a')]=![];_0x2b79ef[_0x2bc3('0xf')]=_0x372b56;_0x2b79ef[_0x2bc3('0x1b')]=hardware['getUuid']();if(_0x10de04){var _0x2c8602=encryptor[_0x2bc3('0x16')](_0x10de04);_0x2b79ef['gray']=_0x2c8602;_0x2b79ef[_0x2bc3('0x1c')]=moment(_0x2c8602)['add'](0x7,_0x2bc3('0x1d'))[_0x2bc3('0x17')]();_0x2b79ef['grayReason']=_0x2b79ef[_0x2bc3('0xf')]!=_0x2b79ef[_0x2bc3('0x1b')]?'changed':_0x2bc3('0x1e');}return _0x2b79ef;}catch(_0x5215f0){breakingLicense[_0x2bc3('0xf')]=_0x2c9a10[_0x2bc3('0x10')];breakingLicense[_0x2bc3('0x1f')]=_0x5215f0[_0x2bc3('0x1f')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x2aef76,_0x3f86ea){getLicense()[_0x2bc3('0xd')](function(_0x1ef836){return db[_0x2bc3('0x20')]['findAll']({'attributes':[_0x2bc3('0x21'),[db[_0x2bc3('0x22')]['fn'](_0x2bc3('0x23'),db[_0x2bc3('0x22')][_0x2bc3('0x24')]('role')),_0x2bc3('0x25')]],'group':_0x2bc3('0x21'),'where':{'role':{'$or':['admin',_0x2bc3('0x26'),_0x2bc3('0x27')]}},'raw':!![]})[_0x2bc3('0xd')](function(_0x36253c){var _0x14682c={'user':_0x1ef836[_0x2bc3('0x28')]||0x0,'telephone':_0x1ef836['telephones']||0x0};_0x36253c['forEach'](function(_0x511529){var _0x2b313e=_0x511529[_0x2bc3('0x21')]===_0x2bc3('0x29')?'user':_0x511529[_0x2bc3('0x21')];_0x14682c[_0x2b313e]-=_0x511529['count'];if(_0x14682c[_0x2b313e]<0x0)_0x14682c[_0x2b313e]=0x0;});_0x2aef76(_0x14682c);return;});})['catch'](function(_0x13869b){_0x3f86ea(_0x13869b);});});}function checkUserLimits(_0x328e66){return new BPromise(function(_0x5d89ce,_0x40da70){getLimits()[_0x2bc3('0xd')](function(_0x3dce26){var _0x1c9b47=_[_0x2bc3('0x2a')](_[_0x2bc3('0x2b')](_0x328e66,_0x2bc3('0x21')),['admin',_0x2bc3('0x26'),'telephone']);var _0x58e316=(_0x1c9b47[_0x2bc3('0x29')]||0x0)+(_0x1c9b47['user']||0x0);var _0x142e36=_0x1c9b47['telephone']||0x0;if(_0x58e316>_0x3dce26['user'])return _0x40da70(_0x2bc3('0x2c'));if(_0x142e36>_0x3dce26[_0x2bc3('0x27')])return _0x40da70(_0x2bc3('0x2d'));return _0x5d89ce();})[_0x2bc3('0xe')](function(_0x22abfe){_0x40da70(_0x22abfe);});});}module[_0x2bc3('0x2e')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index b1e452a..e8e08ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x236c=['secret','exports','myappanuglar-secret','app-id'];(function(_0x3bab09,_0x217c29){var _0x164376=function(_0x277730){while(--_0x277730){_0x3bab09['push'](_0x3bab09['shift']());}};_0x164376(++_0x217c29);}(_0x236c,0x155));var _0xc236=function(_0xd7ea2a,_0x3ba5fa){_0xd7ea2a=_0xd7ea2a-0x0;var _0x2338f5=_0x236c[_0xd7ea2a];return _0x2338f5;};'use strict';module[_0xc236('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0xc236('0x1'),'GOOGLE_ID':_0xc236('0x2'),'GOOGLE_SECRET':_0xc236('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0x896e=['http://localhost:9000','myappanuglar-secret','app-id','secret','exports'];(function(_0x102475,_0x3e079d){var _0x1ae736=function(_0x1a109c){while(--_0x1a109c){_0x102475['push'](_0x102475['shift']());}};_0x1ae736(++_0x3e079d);}(_0x896e,0x1e9));var _0xe896=function(_0x28f076,_0x115ea6){_0x28f076=_0x28f076-0x0;var _0x3ff8fb=_0x896e[_0x28f076];return _0x3ff8fb;};'use strict';module[_0xe896('0x0')]={'DOMAIN':_0xe896('0x1'),'SESSION_SECRET':_0xe896('0x2'),'GOOGLE_ID':_0xe896('0x3'),'GOOGLE_SECRET':_0xe896('0x4'),'DEBUG':''};
\ No newline at end of file
index 7a64c15..43b5fe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5156=['join','/var','log','xcally','format','%s-%s.log','message','replace','{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','Logger','transports','File','%s-%s','error','info','Console','env','debugLevel','moment','winston','INFO'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5156,0x1dd));var _0x6515=function(_0x572165,_0x6a45cc){_0x572165=_0x572165-0x0;var _0x8c8709=_0x5156[_0x572165];return _0x8c8709;};'use strict';var moment=require(_0x6515('0x0'));var winston=require(_0x6515('0x1'));var util=require('util');var path=require('path');var debugLevel=_0x6515('0x2');function filename(_0x37b272,_0x944fa){return path[_0x6515('0x3')](_0x6515('0x4'),_0x6515('0x5'),_0x6515('0x6'),util[_0x6515('0x7')](_0x6515('0x8'),_0x37b272,_0x944fa));}function formatter(_0x1af2fb,_0x58fdec){_0x58fdec[_0x6515('0x9')]=_0x58fdec[_0x6515('0x9')][_0x6515('0xa')](/@@{/g,_0x6515('0xb'))[_0x6515('0xa')](/}@@/g,_0x6515('0xc'))[_0x6515('0xa')](/@{/g,'{{')[_0x6515('0xa')](/}@/g,'}}');return util[_0x6515('0x7')](_0x6515('0xd'),moment()['format'](_0x6515('0xe')),_0x58fdec['level']['toUpperCase'](),_0x1af2fb,_0x58fdec[_0x6515('0x9')]);}module['exports']=function(_0x498842){return new winston[(_0x6515('0xf'))]({'transports':[new winston[(_0x6515('0x10'))][(_0x6515('0x11'))]({'name':util[_0x6515('0x7')](_0x6515('0x12'),_0x498842,_0x6515('0x13')),'filename':filename(_0x498842,_0x6515('0x13')),'level':_0x6515('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x567fc5){return formatter(_0x498842,_0x567fc5);}}),new winston['transports'][(_0x6515('0x11'))]({'name':util[_0x6515('0x7')](_0x6515('0x12'),_0x498842,_0x6515('0x14')),'filename':filename(_0x498842,_0x6515('0x14')),'level':_0x6515('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x14f95f){return formatter(_0x498842,_0x14f95f);}}),new winston['transports'][(_0x6515('0x15'))]({'level':process[_0x6515('0x16')][_0x6515('0x17')]||debugLevel,'json':![],'formatter':function(_0x5770eb){return formatter(_0x498842,_0x5770eb);}})]});};
\ No newline at end of file
+var _0x470c=['%s-%s','info','Console','env','moment','winston','util','path','INFO','join','log','xcally','format','%s-%s.log','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','Logger','transports','error','File'];(function(_0x578c80,_0x3afea8){var _0x13f94e=function(_0x2a1427){while(--_0x2a1427){_0x578c80['push'](_0x578c80['shift']());}};_0x13f94e(++_0x3afea8);}(_0x470c,0x1be));var _0xc470=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x470c[_0xc4001c];return _0x49f7bc;};'use strict';var moment=require(_0xc470('0x0'));var winston=require(_0xc470('0x1'));var util=require(_0xc470('0x2'));var path=require(_0xc470('0x3'));var debugLevel=_0xc470('0x4');function filename(_0x21f54e,_0x4809f3){return path[_0xc470('0x5')]('/var',_0xc470('0x6'),_0xc470('0x7'),util[_0xc470('0x8')](_0xc470('0x9'),_0x21f54e,_0x4809f3));}function formatter(_0xb02833,_0x2af7b2){_0x2af7b2[_0xc470('0xa')]=_0x2af7b2[_0xc470('0xa')][_0xc470('0xb')](/@@{/g,_0xc470('0xc'))[_0xc470('0xb')](/}@@/g,'}}}')[_0xc470('0xb')](/@{/g,'{{')[_0xc470('0xb')](/}@/g,'}}');return util['format'](_0xc470('0xd'),moment()[_0xc470('0x8')](_0xc470('0xe')),_0x2af7b2[_0xc470('0xf')][_0xc470('0x10')](),_0xb02833,_0x2af7b2['message']);}module[_0xc470('0x11')]=function(_0x1f52f7){return new winston[(_0xc470('0x12'))]({'transports':[new winston[(_0xc470('0x13'))]['File']({'name':util[_0xc470('0x8')]('%s-%s',_0x1f52f7,_0xc470('0x14')),'filename':filename(_0x1f52f7,_0xc470('0x14')),'level':_0xc470('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3fe57e){return formatter(_0x1f52f7,_0x3fe57e);}}),new winston[(_0xc470('0x13'))][(_0xc470('0x15'))]({'name':util['format'](_0xc470('0x16'),_0x1f52f7,'info'),'filename':filename(_0x1f52f7,_0xc470('0x17')),'level':'info','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4940d3){return formatter(_0x1f52f7,_0x4940d3);}}),new winston[(_0xc470('0x13'))][(_0xc470('0x18'))]({'level':process[_0xc470('0x19')]['debugLevel']||debugLevel,'json':![],'formatter':function(_0x3e1cc1){return formatter(_0x1f52f7,_0x3e1cc1);}})]});};
\ No newline at end of file
index 03efbac..8ee9be2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28b5=['../../services/agi/index.js','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','express','join','../../services/express/index.js','ami','../../services/ami/index.js','agi'];(function(_0x31172e,_0xa59e5){var _0x414ada=function(_0x37ede4){while(--_0x37ede4){_0x31172e['push'](_0x31172e['shift']());}};_0x414ada(++_0xa59e5);}(_0x28b5,0x118));var _0x528b=function(_0x1a3052,_0x2411ce){_0x1a3052=_0x1a3052-0x0;var _0x19b0a5=_0x28b5[_0x1a3052];return _0x19b0a5;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0x528b('0x0'),'script':path[_0x528b('0x1')](__dirname,_0x528b('0x2'))},{'name':_0x528b('0x3'),'script':path[_0x528b('0x1')](__dirname,_0x528b('0x4'))},{'name':_0x528b('0x5'),'script':path[_0x528b('0x1')](__dirname,_0x528b('0x6'))},{'name':'email','script':path[_0x528b('0x1')](__dirname,_0x528b('0x7'))},{'name':_0x528b('0x8'),'script':path[_0x528b('0x1')](__dirname,_0x528b('0x9'))},{'name':_0x528b('0xa'),'script':path[_0x528b('0x1')](__dirname,_0x528b('0xb'))}]};module[_0x528b('0xc')]=config;
\ No newline at end of file
+var _0x07ef=['xdr','../../services/xdr/index.js','exports','express','join','ami','agi','../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js'];(function(_0x386525,_0xefae6){var _0x14d015=function(_0x4a45c1){while(--_0x4a45c1){_0x386525['push'](_0x386525['shift']());}};_0x14d015(++_0xefae6);}(_0x07ef,0x10b));var _0xf07e=function(_0xb8f65,_0x5b3d4f){_0xb8f65=_0xb8f65-0x0;var _0x537221=_0x07ef[_0xb8f65];return _0x537221;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0xf07e('0x0'),'script':path[_0xf07e('0x1')](__dirname,'../../services/express/index.js')},{'name':_0xf07e('0x2'),'script':path[_0xf07e('0x1')](__dirname,'../../services/ami/index.js')},{'name':_0xf07e('0x3'),'script':path[_0xf07e('0x1')](__dirname,_0xf07e('0x4'))},{'name':_0xf07e('0x5'),'script':path[_0xf07e('0x1')](__dirname,_0xf07e('0x6'))},{'name':_0xf07e('0x7'),'script':path[_0xf07e('0x1')](__dirname,_0xf07e('0x8'))},{'name':_0xf07e('0x9'),'script':path[_0xf07e('0x1')](__dirname,_0xf07e('0xa'))}]};module[_0xf07e('0xb')]=config;
\ No newline at end of file
index 1f0a8ff..f210f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b81=['delete','dump','saved','pm2','bluebird','./config','connect','connected','start','then','disconnect','stop','restart','describe'];(function(_0x3950fd,_0x288896){var _0x2b0fe5=function(_0x1d1c4b){while(--_0x1d1c4b){_0x3950fd['push'](_0x3950fd['shift']());}};_0x2b0fe5(++_0x288896);}(_0x4b81,0x1d1));var _0x14b8=function(_0x433b9c,_0x16500a){_0x433b9c=_0x433b9c-0x0;var _0x12a1ed=_0x4b81[_0x433b9c];return _0x12a1ed;};'use strict';var pm2=require(_0x14b8('0x0'));var BPromise=require(_0x14b8('0x1'));var config=require(_0x14b8('0x2'));function connect(){return new BPromise(function(_0x4f7ecb,_0x11dd8b){return pm2[_0x14b8('0x3')](function(_0xb54bea){if(_0xb54bea){return _0x11dd8b(_0xb54bea);}return _0x4f7ecb(_0x14b8('0x4'));});});};exports[_0x14b8('0x5')]=function(_0x58f841){return connect()[_0x14b8('0x6')](function(){return new BPromise(function(_0x4d4e80,_0x411b5f){return pm2[_0x14b8('0x5')](_0x58f841,function(_0xded216,_0x2c6998){if(_0xded216){return _0x411b5f(_0xded216);}pm2[_0x14b8('0x7')]();return _0x4d4e80(_0x2c6998);});});});};exports[_0x14b8('0x8')]=function(_0x1befce){return connect()[_0x14b8('0x6')](function(){return new BPromise(function(_0x285c17,_0x3b63bc){return pm2[_0x14b8('0x8')](_0x1befce,function(_0x7d0e9c,_0x93e704){if(_0x7d0e9c){return _0x3b63bc(_0x7d0e9c);}pm2[_0x14b8('0x7')]();return _0x285c17(_0x93e704);});});});};exports[_0x14b8('0x9')]=function(_0x2487e8){return connect()['then'](function(){return new BPromise(function(_0x4cd263,_0xec407c){return pm2[_0x14b8('0x9')](_0x2487e8,function(_0x4c98d4,_0x1a981a){if(_0x4c98d4){return _0xec407c(_0x4c98d4);}pm2[_0x14b8('0x7')]();return _0x4cd263(_0x1a981a);});});});};exports['list']=function(){return connect()['then'](function(){return new BPromise(function(_0x4f5a74,_0x4014f6){return pm2['list'](function(_0x16535d,_0x361ce5){if(_0x16535d){return _0x4014f6(_0x16535d);}pm2[_0x14b8('0x7')]();return _0x4f5a74(_0x361ce5);});});});};exports['describe']=function(_0x356b9f){return connect()['then'](function(){return new BPromise(function(_0x41cc3b,_0x272173){return pm2[_0x14b8('0xa')](_0x356b9f,function(_0x5f4699,_0x5d96b6){if(_0x5f4699){return _0x272173(_0x5f4699);}pm2['disconnect']();return _0x41cc3b(_0x5d96b6);});});});};exports['delete']=function(_0x1802e5){return connect()[_0x14b8('0x6')](function(){return new BPromise(function(_0xef9948,_0x190632){return pm2[_0x14b8('0xb')](_0x1802e5,function(_0x4acc4b,_0x46b6e1){if(_0x4acc4b){return _0x190632(_0x4acc4b);}pm2['disconnect']();return _0xef9948(_0x46b6e1);});});});};exports[_0x14b8('0xc')]=function(){return connect()[_0x14b8('0x6')](function(){return new BPromise(function(_0x5bc087,_0x6ba9df){return pm2[_0x14b8('0xc')](function(_0x3e5996){if(_0x3e5996){return _0x6ba9df(_0x3e5996);}return _0x5bc087(_0x14b8('0xd'));});});});};
\ No newline at end of file
+var _0x8b49=['list','describe','delete','dump','bluebird','./config','start','then','disconnect','stop','restart'];(function(_0x19f55e,_0xd4ffc3){var _0x44cfee=function(_0x138a86){while(--_0x138a86){_0x19f55e['push'](_0x19f55e['shift']());}};_0x44cfee(++_0xd4ffc3);}(_0x8b49,0x10c));var _0x98b4=function(_0xbb36a0,_0x1cb1e4){_0xbb36a0=_0xbb36a0-0x0;var _0x306db2=_0x8b49[_0xbb36a0];return _0x306db2;};'use strict';var pm2=require('pm2');var BPromise=require(_0x98b4('0x0'));var config=require(_0x98b4('0x1'));function connect(){return new BPromise(function(_0x3318fb,_0x1b78d9){return pm2['connect'](function(_0x4a7f8c){if(_0x4a7f8c){return _0x1b78d9(_0x4a7f8c);}return _0x3318fb('connected');});});};exports[_0x98b4('0x2')]=function(_0x27d85b){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0x39edef,_0x300ea1){return pm2[_0x98b4('0x2')](_0x27d85b,function(_0x171522,_0x388a64){if(_0x171522){return _0x300ea1(_0x171522);}pm2[_0x98b4('0x4')]();return _0x39edef(_0x388a64);});});});};exports['stop']=function(_0x3fcce1){return connect()['then'](function(){return new BPromise(function(_0x4b5c3e,_0x404bd9){return pm2[_0x98b4('0x5')](_0x3fcce1,function(_0x3dee67,_0x32751a){if(_0x3dee67){return _0x404bd9(_0x3dee67);}pm2[_0x98b4('0x4')]();return _0x4b5c3e(_0x32751a);});});});};exports['restart']=function(_0x2be129){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0x3fef9e,_0x1d6cdb){return pm2[_0x98b4('0x6')](_0x2be129,function(_0x549da5,_0x5e72b3){if(_0x549da5){return _0x1d6cdb(_0x549da5);}pm2[_0x98b4('0x4')]();return _0x3fef9e(_0x5e72b3);});});});};exports['list']=function(){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0xcb0c62,_0x443306){return pm2[_0x98b4('0x7')](function(_0x4e705a,_0x5de8df){if(_0x4e705a){return _0x443306(_0x4e705a);}pm2[_0x98b4('0x4')]();return _0xcb0c62(_0x5de8df);});});});};exports[_0x98b4('0x8')]=function(_0x66db20){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0x3e75d5,_0x32be01){return pm2[_0x98b4('0x8')](_0x66db20,function(_0x529954,_0x202c37){if(_0x529954){return _0x32be01(_0x529954);}pm2[_0x98b4('0x4')]();return _0x3e75d5(_0x202c37);});});});};exports[_0x98b4('0x9')]=function(_0x538683){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0x4ac9a5,_0xeb448b){return pm2[_0x98b4('0x9')](_0x538683,function(_0x3f885a,_0x8f24cf){if(_0x3f885a){return _0xeb448b(_0x3f885a);}pm2[_0x98b4('0x4')]();return _0x4ac9a5(_0x8f24cf);});});});};exports[_0x98b4('0xa')]=function(){return connect()[_0x98b4('0x3')](function(){return new BPromise(function(_0x22a396,_0x56e926){return pm2[_0x98b4('0xa')](function(_0x2871a7){if(_0x2871a7){return _0x56e926(_0x2871a7);}return _0x22a396('saved');});});});};
\ No newline at end of file
index 8371233..fb397a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa985=['moment','ioredis','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','Setting','find','then','chatTimeout','ChatInteraction','findAll','lastMsgAt','subtract','minutes','length','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0xa985,0x1a3));var _0x5a98=function(_0x2642cb,_0x4b917f){_0x2642cb=_0x2642cb-0x0;var _0xe6e41=_0xa985[_0x2642cb];return _0xe6e41;};'use strict';var _=require(_0x5a98('0x0'));var moment=require(_0x5a98('0x1'));var Redis=require(_0x5a98('0x2'));var util=require('util');var config=require(_0x5a98('0x3'));var db=require(_0x5a98('0x4'))['db'];var logger=require(_0x5a98('0x5'))(_0x5a98('0x6'));config[_0x5a98('0x7')]=_[_0x5a98('0x8')](config[_0x5a98('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5a98('0x7')]));function closeInteractions(){var _0x213d5e=0x0;var _0x200474=[];return db[_0x5a98('0x9')][_0x5a98('0xa')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0x5a98('0xb')](function(_0x28a803){_0x213d5e=_0x28a803[_0x5a98('0xc')];if(_0x213d5e){return db[_0x5a98('0xd')][_0x5a98('0xe')]({'raw':!![],'attributes':['id',_0x5a98('0xf')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x5a98('0x10')](_0x28a803[_0x5a98('0xc')],_0x5a98('0x11'))}}});}else{return[];}})[_0x5a98('0xb')](function(_0x3db046){if(_0x3db046&&_0x3db046[_0x5a98('0x12')]){_0x200474=_['map'](_0x3db046||[],'id');logger[_0x5a98('0x13')](_0x5a98('0x14'),_0x200474[_0x5a98('0x15')]());return db[_0x5a98('0xd')][_0x5a98('0x16')]({'closeReason':_0x5a98('0x17'),'disposition':_0x5a98('0x18'),'closed':!![],'closedAt':moment()[_0x5a98('0x19')](_0x5a98('0x1a'))},{'where':{'id':_0x200474}});}})['then'](function(){if(_0x200474&&_0x200474[_0x5a98('0x12')]){logger[_0x5a98('0x13')](_0x5a98('0x1b'),_0x200474[_0x5a98('0x15')]());for(var _0x4cf406=0x0;_0x4cf406<_0x200474[_0x5a98('0x12')];_0x4cf406++){io[_0x5a98('0x1c')](_0x5a98('0x1d'),{'id':_0x200474[_0x4cf406],'closed':!![]});}}})[_0x5a98('0x1e')](function(_0x3ae4a9){logger[_0x5a98('0x1f')](_0x5a98('0x20'),_0x3ae4a9?util[_0x5a98('0x21')](_0x3ae4a9,{'showHidden':![],'depth':null}):'');});}exports[_0x5a98('0x22')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x4aa2=['findAll','lastMsgAt','subtract','minutes','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','start','moment','ioredis','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','then','ChatInteraction'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x4aa2,0xb7));var _0x24aa=function(_0x10d840,_0x5164df){_0x10d840=_0x10d840-0x0;var _0x39f65e=_0x4aa2[_0x10d840];return _0x39f65e;};'use strict';var _=require('lodash');var moment=require(_0x24aa('0x0'));var Redis=require(_0x24aa('0x1'));var util=require('util');var config=require(_0x24aa('0x2'));var db=require(_0x24aa('0x3'))['db'];var logger=require(_0x24aa('0x4'))(_0x24aa('0x5'));config[_0x24aa('0x6')]=_[_0x24aa('0x7')](config['redis'],{'host':_0x24aa('0x8'),'port':0x18eb});var io=require(_0x24aa('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0x3ae0b7=0x0;var _0xd3febc=[];return db[_0x24aa('0xa')][_0x24aa('0xb')]({'raw':!![],'attributes':['id',_0x24aa('0xc')],'where':{'id':0x1}})[_0x24aa('0xd')](function(_0x51a273){_0x3ae0b7=_0x51a273[_0x24aa('0xc')];if(_0x3ae0b7){return db[_0x24aa('0xe')][_0x24aa('0xf')]({'raw':!![],'attributes':['id',_0x24aa('0x10')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x24aa('0x11')](_0x51a273[_0x24aa('0xc')],_0x24aa('0x12'))}}});}else{return[];}})['then'](function(_0x4daa4e){if(_0x4daa4e&&_0x4daa4e['length']){_0xd3febc=_['map'](_0x4daa4e||[],'id');logger[_0x24aa('0x13')](_0x24aa('0x14'),_0xd3febc[_0x24aa('0x15')]());return db[_0x24aa('0xe')][_0x24aa('0x16')]({'closeReason':_0x24aa('0x17'),'disposition':_0x24aa('0x18'),'closed':!![],'closedAt':moment()[_0x24aa('0x19')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0xd3febc}});}})['then'](function(){if(_0xd3febc&&_0xd3febc[_0x24aa('0x1a')]){logger[_0x24aa('0x13')](_0x24aa('0x1b'),_0xd3febc[_0x24aa('0x15')]());for(var _0x2072cd=0x0;_0x2072cd<_0xd3febc['length'];_0x2072cd++){io[_0x24aa('0x1c')](_0x24aa('0x1d'),{'id':_0xd3febc[_0x2072cd],'closed':!![]});}}})[_0x24aa('0x1e')](function(_0x142709){logger['error'](_0x24aa('0x1f'),_0x142709?util['inspect'](_0x142709,{'showHidden':![],'depth':null}):'');});}exports[_0x24aa('0x20')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index e0d1e08..1c8cc78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a27=['\x22%s\x22\x20<%s>','name','email','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','savename','%s.%s','basename','extname','zip','join','existsSync','status','Sent','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','then','error','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','no\x20report\x20id','findAll','MailServerOut','keys','map','toString','keyBy','difference','intersection','length','stop','deleteJob','delete\x20cron','toRun','index','resolve','run\x20job','cron','isBetween','startAt','add','add\x20cron','exists','stop\x20cron','active','endAt','update','update\x20cron','util','path','lodash','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','Smtp','service','host','port','secure','user','pass','format'];(function(_0x48ef90,_0x5c78ec){var _0x38a46b=function(_0x538113){while(--_0x538113){_0x48ef90['push'](_0x48ef90['shift']());}};_0x38a46b(++_0x5c78ec);}(_0x8a27,0x155));var _0x78a2=function(_0x5b5b27,_0x46cc6a){_0x5b5b27=_0x5b5b27-0x0;var _0x10f039=_0x8a27[_0x5b5b27];return _0x10f039;};'use strict';var fs=require('fs');var util=require(_0x78a2('0x0'));var path=require(_0x78a2('0x1'));var _=require(_0x78a2('0x2'));var moment=require('moment');var CronJobManager=require(_0x78a2('0x3'));var jayson=require(_0x78a2('0x4'));var BPromise=require(_0x78a2('0x5'));var logger=require(_0x78a2('0x6'))(_0x78a2('0x7'));var db=require(_0x78a2('0x8'))['db'];var analyticCustomReportController=require(_0x78a2('0x9'));var analyticDefaultReportController=require(_0x78a2('0xa'));var client=jayson['client'][_0x78a2('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x220935,_0x25e316){return function(){logger[_0x78a2('0xc')](_0x78a2('0xd'),_0x220935['email']);var _0x8a09fe=!![];var _0x3053f7={'tls':{'rejectUnauthorized':![]}};if(_0x220935[_0x78a2('0xe')][_0x78a2('0xf')]['service']){_0x3053f7[_0x78a2('0x10')]=_0x220935[_0x78a2('0xe')][_0x78a2('0xf')]['service'];}else{_0x3053f7[_0x78a2('0x11')]=_0x220935[_0x78a2('0xe')][_0x78a2('0xf')][_0x78a2('0x11')];_0x3053f7[_0x78a2('0x12')]=_0x220935['MailAccount'][_0x78a2('0xf')][_0x78a2('0x12')];_0x3053f7['secure']=_0x220935['MailAccount'][_0x78a2('0xf')][_0x78a2('0x13')];}if(_0x220935[_0x78a2('0xe')]['Smtp']['authentication']){_0x3053f7['auth']={'user':_0x220935[_0x78a2('0xe')][_0x78a2('0xf')][_0x78a2('0x14')],'pass':_0x220935['MailAccount'][_0x78a2('0xf')][_0x78a2('0x15')]};}var _0x301c62={'account':_0x3053f7,'message':{'from':util[_0x78a2('0x16')](_0x78a2('0x17'),_0x220935['MailAccount'][_0x78a2('0x18')],_0x220935[_0x78a2('0xe')][_0x78a2('0x19')]||_0x220935[_0x78a2('0xe')][_0x78a2('0xf')][_0x78a2('0x14')]),'to':_0x220935['email'],'cc':_0x220935['cc'],'bcc':_0x220935[_0x78a2('0x1a')],'subject':util[_0x78a2('0x16')](_0x78a2('0x1b'),_0x25e316[_0x78a2('0x18')],_0x220935[_0x78a2('0x1c')],_0x220935[_0x78a2('0x1d')])}};var _0x3411e3=path['join'](__dirname,'../../files/reports');var _0x293c88=_0x25e316[_0x78a2('0x1e')];var _0xc7175f=util[_0x78a2('0x16')](_0x78a2('0x1f'),path[_0x78a2('0x20')](_0x25e316[_0x78a2('0x1e')],path[_0x78a2('0x21')](_0x25e316['savename'])),_0x78a2('0x22'));var _0xd25b3a=path[_0x78a2('0x23')](_0x3411e3,_0x293c88);var _0x1b0b73=path[_0x78a2('0x23')](_0x3411e3,_0xc7175f);if(fs[_0x78a2('0x24')](_0xd25b3a)){_0x25e316[_0x78a2('0x25')]=_0x78a2('0x26');_0x301c62[_0x78a2('0x27')][_0x78a2('0x28')]=[{'filename':_0x293c88,'path':_0xd25b3a}];_0x301c62['message'][_0x78a2('0x29')]=util[_0x78a2('0x16')](_0x78a2('0x2a'),JSON[_0x78a2('0x2b')](_0x25e316,null,0x2));}else if(fs[_0x78a2('0x24')](_0x1b0b73)){_0x25e316[_0x78a2('0x25')]=_0x78a2('0x26');_0x301c62['message'][_0x78a2('0x28')]=[{'filename':_0xc7175f,'path':_0x1b0b73}];}else{_0x301c62['message'][_0x78a2('0x29')]=_0x78a2('0x2c');if(!_0x220935[_0x78a2('0x2d')]){_0x8a09fe=![];logger['info']('empty\x20file,\x20email\x20not\x20sent');}}if(_0x8a09fe){return client[_0x78a2('0x2e')](_0x78a2('0x2f'),_0x301c62)[_0x78a2('0x30')](function(_0x3b981e){if(_0x3b981e[_0x78a2('0x31')]){return logger['error'](_0x78a2('0x32'),JSON['stringify'](_0x3b981e));}return logger[_0x78a2('0xc')]('email\x20sent');})['catch'](function(_0x504af7){return logger['error'](_0x78a2('0x32'),JSON['stringify'](_0x504af7));});}};}function handleError(){return function(_0x94cd0d){return logger[_0x78a2('0x31')](JSON['stringify'](_0x94cd0d));};}function handleResult(_0x2f18d4){return function(_0x3e2627){logger['info'](_0x78a2('0x33'),JSON['stringify'](_0x3e2627));if(_0x2f18d4[_0x78a2('0xe')]&&_0x2f18d4[_0x78a2('0xe')][_0x78a2('0xf')]&&!_[_0x78a2('0x34')](_0x2f18d4[_0x78a2('0x19')])){setTimeout(handleSendEmail(_0x2f18d4,_0x3e2627),0x3c*0x3e8);}};}function handleJob(_0x134e5c){return function(){try{if(_[_0x78a2('0x34')](_0x134e5c['subtractNumber'])){return logger[_0x78a2('0xc')](_0x78a2('0x35'));}if(_[_0x78a2('0x34')](_0x134e5c[_0x78a2('0x1d')])){return logger[_0x78a2('0xc')](_0x78a2('0x36'));}var _0x1a73dc={'startDate':moment()['subtract'](_0x134e5c[_0x78a2('0x1c')],_0x134e5c['subtractUnit'])[_0x78a2('0x16')](_0x78a2('0x37')),'endDate':moment()[_0x78a2('0x16')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x78a2('0x38'),'output':_0x134e5c[_0x78a2('0x39')],'name':_0x134e5c[_0x78a2('0x18')]};if(!_['isNil'](_0x134e5c[_0x78a2('0x3a')])){logger[_0x78a2('0xc')](_0x78a2('0x3b'),_0x134e5c[_0x78a2('0x3a')]);return analyticDefaultReportController[_0x78a2('0x3c')]({'id':_0x134e5c[_0x78a2('0x3a')]},_0x1a73dc)['then'](handleResult(_0x134e5c))[_0x78a2('0x3d')](handleError());}if(!_['isNil'](_0x134e5c[_0x78a2('0x3e')])){logger[_0x78a2('0xc')]('exec\x20custom\x20report\x20id:%s',_0x134e5c[_0x78a2('0x3e')]);return analyticCustomReportController[_0x78a2('0x3c')]({'id':_0x134e5c[_0x78a2('0x3e')]},_0x1a73dc)[_0x78a2('0x30')](handleResult(_0x134e5c))[_0x78a2('0x3d')](handleError());}}catch(_0x4afcf9){logger['error'](JSON[_0x78a2('0x2b')](_0x4afcf9));}return logger[_0x78a2('0xc')](_0x78a2('0x3f'));};}function getJobs(_0x161729){var _0x226da8={};if(_0x161729){_0x226da8['id']=_0x161729;}return db['Schedule'][_0x78a2('0x40')]({'where':_0x226da8,'include':[{'model':db[_0x78a2('0xe')],'attributes':['id',_0x78a2('0x18'),_0x78a2('0x19')],'include':[{'model':db[_0x78a2('0x41')],'as':_0x78a2('0xf')}]}]})['then'](function(_0x44e418){var _0x1af7a0=_[_0x78a2('0x42')](manager['jobs']);var _0x1fbc57=_[_0x78a2('0x43')](_0x44e418,function(_0x15c78a){return _0x15c78a['id'][_0x78a2('0x44')]();});var _0x2d77db=_[_0x78a2('0x45')](_0x44e418,function(_0x12acf3){return _0x12acf3['id'][_0x78a2('0x44')]();});var _0x5f31a0=_0x161729?_0x1fbc57:_[_0x78a2('0x46')](_0x1fbc57,_0x1af7a0);var _0x451b98=_[_0x78a2('0x47')](_0x1fbc57,_0x1af7a0);var _0x3ade74=_['difference'](_0x1af7a0,_0x1fbc57);var _0x3aba35;var _0x226fe0;for(_0x3aba35=0x0;_0x3aba35<_0x3ade74[_0x78a2('0x48')]&&!_0x161729;_0x3aba35+=0x1){_0x226fe0=_0x3ade74[_0x3aba35][_0x78a2('0x44')]();if(manager['exists'](_0x226fe0)){manager[_0x78a2('0x49')](_0x226fe0);manager[_0x78a2('0x4a')](_0x226fe0);logger['info'](_0x78a2('0x4b'),_0x226fe0);}}logger[_0x78a2('0xc')](_0x78a2('0x4c'),JSON[_0x78a2('0x2b')](_0x5f31a0));for(_0x3aba35=0x0;_0x3aba35<_0x5f31a0['length'];_0x3aba35+=0x1){_0x226fe0=_0x5f31a0[_0x3aba35][_0x78a2('0x44')]();logger[_0x78a2('0xc')](_0x78a2('0x4d'),_0x226fe0);if(_0x161729){logger['info']('my\x20id',_0x161729);logger[_0x78a2('0xc')](JSON[_0x78a2('0x2b')](_0x2d77db[_0x226fe0]));BPromise[_0x78a2('0x4e')]()[_0x78a2('0x30')](handleJob(_0x2d77db[_0x226fe0]));logger['info'](_0x78a2('0x4f'),_0x2d77db[_0x226fe0][_0x78a2('0x18')],_0x2d77db[_0x226fe0][_0x78a2('0x50')]);}else if(_0x2d77db[_0x226fe0][_0x78a2('0x50')]&&_0x2d77db[_0x226fe0]['active']&&moment()[_0x78a2('0x51')](_0x2d77db[_0x226fe0][_0x78a2('0x52')],_0x2d77db[_0x226fe0]['endAt'])){manager[_0x78a2('0x53')](_0x226fe0,_0x2d77db[_0x226fe0][_0x78a2('0x50')],handleJob(_0x2d77db[_0x226fe0]));manager['start'](_0x226fe0);logger[_0x78a2('0xc')](_0x78a2('0x54'),_0x2d77db[_0x226fe0][_0x78a2('0x18')],_0x2d77db[_0x226fe0][_0x78a2('0x50')]);}else if(manager[_0x78a2('0x55')](_0x226fe0)){manager[_0x78a2('0x49')](_0x226fe0);manager['deleteJob'](_0x226fe0);logger[_0x78a2('0xc')](_0x78a2('0x56'),_0x2d77db[_0x226fe0][_0x78a2('0x18')],_0x2d77db[_0x226fe0][_0x78a2('0x50')]);}}for(_0x3aba35=0x0,_0x226fe0;_0x3aba35<_0x451b98[_0x78a2('0x48')]&&!_0x161729;_0x3aba35+=0x1){_0x226fe0=_0x451b98[_0x3aba35][_0x78a2('0x44')]();if(manager[_0x78a2('0x55')](_0x226fe0)){if(_0x2d77db[_0x226fe0][_0x78a2('0x50')]&&_0x2d77db[_0x226fe0][_0x78a2('0x57')]&&moment()[_0x78a2('0x51')](_0x2d77db[_0x226fe0]['startAt'],_0x2d77db[_0x226fe0][_0x78a2('0x58')])){manager[_0x78a2('0x59')](_0x226fe0,_0x2d77db[_0x226fe0][_0x78a2('0x50')],handleJob(_0x2d77db[_0x226fe0]));logger[_0x78a2('0xc')](_0x78a2('0x5a'),_0x2d77db[_0x226fe0][_0x78a2('0x18')],_0x2d77db[_0x226fe0][_0x78a2('0x50')]);}else{manager[_0x78a2('0x49')](_0x226fe0);manager['deleteJob'](_0x226fe0);logger['info'](_0x78a2('0x56'),_0x2d77db[_0x226fe0][_0x78a2('0x18')],_0x2d77db[_0x226fe0][_0x78a2('0x50')]);}}}})[_0x78a2('0x3d')](function(_0x287820){logger[_0x78a2('0x31')](JSON[_0x78a2('0x2b')](_0x287820));});}exports['run']=function(_0x518557){return getJobs(_0x518557);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xba5d=['toString','keyBy','difference','intersection','exists','stop','deleteJob','delete\x20cron','toRun','length','my\x20id','resolve','cron','active','isBetween','startAt','endAt','add','start','stop\x20cron','update','update\x20cron','run','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','auth','user','pass','\x22%s\x22\x20<%s>','name','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','basename','extname','zip','existsSync','status','attachments','message','stringify','text','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','email\x20sent','catch','error\x20mail','data','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','findAll','MailServerOut','keys','jobs','map'];(function(_0x4d79bc,_0x32c905){var _0x4b4760=function(_0x212302){while(--_0x212302){_0x4d79bc['push'](_0x4d79bc['shift']());}};_0x4b4760(++_0x32c905);}(_0xba5d,0x75));var _0xdba5=function(_0x2144d9,_0xdee16){_0x2144d9=_0x2144d9-0x0;var _0xac271c=_0xba5d[_0x2144d9];return _0xac271c;};'use strict';var fs=require('fs');var util=require(_0xdba5('0x0'));var path=require(_0xdba5('0x1'));var _=require(_0xdba5('0x2'));var moment=require(_0xdba5('0x3'));var CronJobManager=require(_0xdba5('0x4'));var jayson=require(_0xdba5('0x5'));var BPromise=require(_0xdba5('0x6'));var logger=require(_0xdba5('0x7'))(_0xdba5('0x8'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xdba5('0x9'));var analyticDefaultReportController=require(_0xdba5('0xa'));var client=jayson[_0xdba5('0xb')][_0xdba5('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x19fe6e,_0x57cefd){return function(){logger[_0xdba5('0xd')](_0xdba5('0xe'),_0x19fe6e[_0xdba5('0xf')]);var _0x312a9c=!![];var _0x45c20e={'tls':{'rejectUnauthorized':![]}};if(_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')][_0xdba5('0x12')]){_0x45c20e['service']=_0x19fe6e[_0xdba5('0x10')]['Smtp'][_0xdba5('0x12')];}else{_0x45c20e[_0xdba5('0x13')]=_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')][_0xdba5('0x13')];_0x45c20e[_0xdba5('0x14')]=_0x19fe6e[_0xdba5('0x10')]['Smtp'][_0xdba5('0x14')];_0x45c20e[_0xdba5('0x15')]=_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')]['secure'];}if(_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')]['authentication']){_0x45c20e[_0xdba5('0x16')]={'user':_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')][_0xdba5('0x17')],'pass':_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x11')][_0xdba5('0x18')]};}var _0x3eb968={'account':_0x45c20e,'message':{'from':util['format'](_0xdba5('0x19'),_0x19fe6e[_0xdba5('0x10')][_0xdba5('0x1a')],_0x19fe6e[_0xdba5('0x10')]['email']||_0x19fe6e[_0xdba5('0x10')]['Smtp'][_0xdba5('0x17')]),'to':_0x19fe6e[_0xdba5('0xf')],'cc':_0x19fe6e['cc'],'bcc':_0x19fe6e[_0xdba5('0x1b')],'subject':util[_0xdba5('0x1c')](_0xdba5('0x1d'),_0x57cefd[_0xdba5('0x1a')],_0x19fe6e[_0xdba5('0x1e')],_0x19fe6e[_0xdba5('0x1f')])}};var _0x15e033=path[_0xdba5('0x20')](__dirname,_0xdba5('0x21'));var _0x248e78=_0x57cefd[_0xdba5('0x22')];var _0x32d6d4=util['format']('%s.%s',path[_0xdba5('0x23')](_0x57cefd[_0xdba5('0x22')],path[_0xdba5('0x24')](_0x57cefd['savename'])),_0xdba5('0x25'));var _0x1cf865=path[_0xdba5('0x20')](_0x15e033,_0x248e78);var _0x395e00=path['join'](_0x15e033,_0x32d6d4);if(fs[_0xdba5('0x26')](_0x1cf865)){_0x57cefd[_0xdba5('0x27')]='Sent';_0x3eb968['message'][_0xdba5('0x28')]=[{'filename':_0x248e78,'path':_0x1cf865}];_0x3eb968[_0xdba5('0x29')]['text']=util[_0xdba5('0x1c')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0xdba5('0x2a')](_0x57cefd,null,0x2));}else if(fs['existsSync'](_0x395e00)){_0x57cefd['status']='Sent';_0x3eb968['message']['attachments']=[{'filename':_0x32d6d4,'path':_0x395e00}];}else{_0x3eb968[_0xdba5('0x29')][_0xdba5('0x2b')]=_0xdba5('0x2c');if(!_0x19fe6e[_0xdba5('0x2d')]){_0x312a9c=![];logger['info'](_0xdba5('0x2e'));}}if(_0x312a9c){return client[_0xdba5('0x2f')](_0xdba5('0x30'),_0x3eb968)[_0xdba5('0x31')](function(_0xa7ecfa){if(_0xa7ecfa[_0xdba5('0x32')]){return logger['error']('error\x20mail',JSON['stringify'](_0xa7ecfa));}return logger['info'](_0xdba5('0x33'));})[_0xdba5('0x34')](function(_0xa29825){return logger[_0xdba5('0x32')](_0xdba5('0x35'),JSON[_0xdba5('0x2a')](_0xa29825));});}};}function handleError(){return function(_0x59a47f){return logger[_0xdba5('0x32')](JSON[_0xdba5('0x2a')](_0x59a47f));};}function handleResult(_0x3b1e36){return function(_0x120da){logger[_0xdba5('0xd')](_0xdba5('0x36'),JSON['stringify'](_0x120da));if(_0x3b1e36[_0xdba5('0x10')]&&_0x3b1e36[_0xdba5('0x10')][_0xdba5('0x11')]&&!_[_0xdba5('0x37')](_0x3b1e36[_0xdba5('0xf')])){setTimeout(handleSendEmail(_0x3b1e36,_0x120da),0x3c*0x3e8);}};}function handleJob(_0x8e011c){return function(){try{if(_[_0xdba5('0x37')](_0x8e011c['subtractNumber'])){return logger[_0xdba5('0xd')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0xdba5('0x37')](_0x8e011c[_0xdba5('0x1f')])){return logger['info'](_0xdba5('0x38'));}var _0x30b137={'startDate':moment()[_0xdba5('0x39')](_0x8e011c[_0xdba5('0x1e')],_0x8e011c[_0xdba5('0x1f')])[_0xdba5('0x1c')](_0xdba5('0x3a')),'endDate':moment()['format'](_0xdba5('0x3a')),'type':'scheduled','output':_0x8e011c[_0xdba5('0x3b')],'name':_0x8e011c[_0xdba5('0x1a')]};if(!_[_0xdba5('0x37')](_0x8e011c[_0xdba5('0x3c')])){logger[_0xdba5('0xd')](_0xdba5('0x3d'),_0x8e011c[_0xdba5('0x3c')]);return analyticDefaultReportController[_0xdba5('0x3e')]({'id':_0x8e011c['DefaultReportId']},_0x30b137)[_0xdba5('0x31')](handleResult(_0x8e011c))[_0xdba5('0x34')](handleError());}if(!_[_0xdba5('0x37')](_0x8e011c[_0xdba5('0x3f')])){logger[_0xdba5('0xd')](_0xdba5('0x40'),_0x8e011c[_0xdba5('0x3f')]);return analyticCustomReportController[_0xdba5('0x3e')]({'id':_0x8e011c[_0xdba5('0x3f')]},_0x30b137)[_0xdba5('0x31')](handleResult(_0x8e011c))[_0xdba5('0x34')](handleError());}}catch(_0x39f643){logger[_0xdba5('0x32')](JSON[_0xdba5('0x2a')](_0x39f643));}return logger[_0xdba5('0xd')](_0xdba5('0x41'));};}function getJobs(_0x544038){var _0xc07fb={};if(_0x544038){_0xc07fb['id']=_0x544038;}return db['Schedule'][_0xdba5('0x42')]({'where':_0xc07fb,'include':[{'model':db[_0xdba5('0x10')],'attributes':['id','name',_0xdba5('0xf')],'include':[{'model':db[_0xdba5('0x43')],'as':'Smtp'}]}]})[_0xdba5('0x31')](function(_0x1e1c3d){var _0x54bfc7=_[_0xdba5('0x44')](manager[_0xdba5('0x45')]);var _0x41354b=_[_0xdba5('0x46')](_0x1e1c3d,function(_0x305513){return _0x305513['id'][_0xdba5('0x47')]();});var _0x3f1cd3=_[_0xdba5('0x48')](_0x1e1c3d,function(_0x27dede){return _0x27dede['id'][_0xdba5('0x47')]();});var _0x11e303=_0x544038?_0x41354b:_[_0xdba5('0x49')](_0x41354b,_0x54bfc7);var _0x4d8ab0=_[_0xdba5('0x4a')](_0x41354b,_0x54bfc7);var _0x62422f=_['difference'](_0x54bfc7,_0x41354b);var _0xcf66da;var _0x4b52fd;for(_0xcf66da=0x0;_0xcf66da<_0x62422f['length']&&!_0x544038;_0xcf66da+=0x1){_0x4b52fd=_0x62422f[_0xcf66da][_0xdba5('0x47')]();if(manager[_0xdba5('0x4b')](_0x4b52fd)){manager[_0xdba5('0x4c')](_0x4b52fd);manager[_0xdba5('0x4d')](_0x4b52fd);logger[_0xdba5('0xd')](_0xdba5('0x4e'),_0x4b52fd);}}logger[_0xdba5('0xd')](_0xdba5('0x4f'),JSON[_0xdba5('0x2a')](_0x11e303));for(_0xcf66da=0x0;_0xcf66da<_0x11e303[_0xdba5('0x50')];_0xcf66da+=0x1){_0x4b52fd=_0x11e303[_0xcf66da][_0xdba5('0x47')]();logger['info']('index',_0x4b52fd);if(_0x544038){logger[_0xdba5('0xd')](_0xdba5('0x51'),_0x544038);logger['info'](JSON['stringify'](_0x3f1cd3[_0x4b52fd]));BPromise[_0xdba5('0x52')]()[_0xdba5('0x31')](handleJob(_0x3f1cd3[_0x4b52fd]));logger[_0xdba5('0xd')]('run\x20job',_0x3f1cd3[_0x4b52fd][_0xdba5('0x1a')],_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')]);}else if(_0x3f1cd3[_0x4b52fd]['cron']&&_0x3f1cd3[_0x4b52fd][_0xdba5('0x54')]&&moment()[_0xdba5('0x55')](_0x3f1cd3[_0x4b52fd][_0xdba5('0x56')],_0x3f1cd3[_0x4b52fd][_0xdba5('0x57')])){manager[_0xdba5('0x58')](_0x4b52fd,_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')],handleJob(_0x3f1cd3[_0x4b52fd]));manager[_0xdba5('0x59')](_0x4b52fd);logger[_0xdba5('0xd')]('add\x20cron',_0x3f1cd3[_0x4b52fd][_0xdba5('0x1a')],_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')]);}else if(manager['exists'](_0x4b52fd)){manager['stop'](_0x4b52fd);manager[_0xdba5('0x4d')](_0x4b52fd);logger[_0xdba5('0xd')](_0xdba5('0x5a'),_0x3f1cd3[_0x4b52fd][_0xdba5('0x1a')],_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')]);}}for(_0xcf66da=0x0,_0x4b52fd;_0xcf66da<_0x4d8ab0['length']&&!_0x544038;_0xcf66da+=0x1){_0x4b52fd=_0x4d8ab0[_0xcf66da][_0xdba5('0x47')]();if(manager['exists'](_0x4b52fd)){if(_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')]&&_0x3f1cd3[_0x4b52fd][_0xdba5('0x54')]&&moment()[_0xdba5('0x55')](_0x3f1cd3[_0x4b52fd][_0xdba5('0x56')],_0x3f1cd3[_0x4b52fd][_0xdba5('0x57')])){manager[_0xdba5('0x5b')](_0x4b52fd,_0x3f1cd3[_0x4b52fd][_0xdba5('0x53')],handleJob(_0x3f1cd3[_0x4b52fd]));logger[_0xdba5('0xd')](_0xdba5('0x5c'),_0x3f1cd3[_0x4b52fd][_0xdba5('0x1a')],_0x3f1cd3[_0x4b52fd]['cron']);}else{manager[_0xdba5('0x4c')](_0x4b52fd);manager[_0xdba5('0x4d')](_0x4b52fd);logger[_0xdba5('0xd')]('stop\x20cron',_0x3f1cd3[_0x4b52fd][_0xdba5('0x1a')],_0x3f1cd3[_0x4b52fd]['cron']);}}}})[_0xdba5('0x34')](function(_0x4a2870){logger[_0xdba5('0x32')](JSON['stringify'](_0x4a2870));});}exports[_0xdba5('0x5d')]=function(_0x936e63){return getJobs(_0x936e63);};exports[_0xdba5('0x59')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index e09695e..fdd5196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb627=['findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','update','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','bucket','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Positive','COMPLETED','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','forEach','push','all','inspect','start','lodash','util','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','transcribeName','format','TranscriptionJobStatus','fileText','TranscriptionJob','Transcript','[RECORDING:%d]\x20Get\x20transcript','then','results','transcripts','length','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','language','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider'];(function(_0xd89a9f,_0x401bf2){var _0xee62f4=function(_0x43e64c){while(--_0x43e64c){_0xd89a9f['push'](_0xd89a9f['shift']());}};_0xee62f4(++_0x401bf2);}(_0xb627,0x144));var _0x7b62=function(_0x4b025b,_0x9b2ee1){_0x4b025b=_0x4b025b-0x0;var _0x152904=_0xb627[_0x4b025b];return _0x152904;};var _=require(_0x7b62('0x0'));var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0x7b62('0x1'));var BPromise=require('bluebird');var db=require(_0x7b62('0x2'))['db'];var logger=require(_0x7b62('0x3'))(_0x7b62('0x4'));function getTranscriptionJob(_0x312f67,_0x242a8d,_0x31c821,_0x349367){return new Promise(function(_0x4ad3e8,_0x71aec9){var _0x547533=new AWS[(_0x7b62('0x5'))]({'accessKeyId':_0x242a8d,'secretAccessKey':_0x312f67,'region':_0x31c821});_0x547533[_0x7b62('0x6')]({'TranscriptionJobName':_0x349367},function(_0x4ae3ef,_0x30652e){if(_0x4ae3ef){return _0x71aec9(_0x4ae3ef);}else{return _0x4ad3e8(_0x30652e);}});});}function sentiment(_0x4c462a,_0x29a0b4,_0x379d07,_0x1e1fd0,_0x5a1f7e){return new Promise(function(_0x19fe5c,_0xe5c80e){var _0x20a8dc=new AWS[(_0x7b62('0x7'))]({'accessKeyId':_0x29a0b4,'secretAccessKey':_0x4c462a,'region':_0x379d07});_0x20a8dc[_0x7b62('0x8')]({'Text':_0x1e1fd0,'LanguageCode':_0x5a1f7e[_0x7b62('0x9')](0x0,0x2)},function(_0x364089,_0x8d110f){if(_0x364089){return _0xe5c80e(_0x364089);}else{return _0x19fe5c(_0x8d110f);}});});}function checkTranscribeJob(_0x41b6f3,_0x243110,_0x2559c2){var _0x2faaed;return new BPromise(function(_0x413eb4,_0x5221fd){logger[_0x7b62('0xa')](util['format'](_0x7b62('0xb'),_0x41b6f3['id'],_0x41b6f3['transcribeName']));return getTranscriptionJob(_0x2559c2[_0x7b62('0xc')],_0x2559c2['data2'],_0x243110['transcribeRegion'],_0x41b6f3[_0x7b62('0xd')])['then'](function(_0x3f9afa){logger[_0x7b62('0xa')](util[_0x7b62('0xe')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x41b6f3['id'],_0x41b6f3[_0x7b62('0xd')],_0x3f9afa['TranscriptionJob'][_0x7b62('0xf')]));if(!_0x41b6f3[_0x7b62('0x10')]){switch(_0x3f9afa['TranscriptionJob'][_0x7b62('0xf')]){case'COMPLETED':var _0x1af762={'transcribeStatus':_0x3f9afa[_0x7b62('0x11')][_0x7b62('0xf')],'fileUri':_0x3f9afa[_0x7b62('0x11')][_0x7b62('0x12')]['TranscriptFileUri']};logger[_0x7b62('0xa')](util[_0x7b62('0xe')](_0x7b62('0x13'),_0x41b6f3['id']));return rp({'uri':_0x3f9afa[_0x7b62('0x11')]['Transcript']['TranscriptFileUri'],'json':!![]})[_0x7b62('0x14')](function(_0x2b0a21){logger[_0x7b62('0xa')](util['format']('[RECORDING:%d]\x20Transcript\x20downloaded',_0x41b6f3['id']));if(_0x2b0a21&&_0x2b0a21[_0x7b62('0x15')]&&_0x2b0a21[_0x7b62('0x15')][_0x7b62('0x16')]&&_0x2b0a21['results']['transcripts']['length']){_0x1af762[_0x7b62('0x10')]='';for(var _0x36289c=0x0;_0x36289c<_0x2b0a21[_0x7b62('0x15')][_0x7b62('0x16')][_0x7b62('0x17')];_0x36289c++){_0x1af762['fileText']+=_0x2b0a21[_0x7b62('0x15')][_0x7b62('0x16')][_0x36289c]['transcript']+'';}}return _0x41b6f3['update'](_0x1af762);})[_0x7b62('0x14')](function(){logger[_0x7b62('0xa')](util[_0x7b62('0xe')](_0x7b62('0x18'),_0x41b6f3['id']));if(!_0x41b6f3[_0x7b62('0x19')]){throw new db[(_0x7b62('0x1a'))]['ValidationError'](_0x7b62('0x1b'));}if(!_0x243110[_0x7b62('0x1c')]||!_0x243110['sentimentAccountId']||!_0x243110[_0x7b62('0x1d')]||!_0x243110[_0x7b62('0x1e')]||!_0x243110['bucket']){throw new db[(_0x7b62('0x1a'))][(_0x7b62('0x1f'))](_0x7b62('0x20'));}if(!_0x1af762['fileText']){throw new Error(_0x7b62('0x21'));}if(_0x243110[_0x7b62('0x22')]===_0x2559c2['id']){return _0x2559c2;}else{return db[_0x7b62('0x23')][_0x7b62('0x24')]({'where':{'id':_settings[_0x7b62('0x22')]}});}})[_0x7b62('0x14')](function(_0x296911){if(!_0x296911){throw new db[(_0x7b62('0x1a'))][(_0x7b62('0x1f'))](_0x7b62('0x25'));}if(!_0x296911[_0x7b62('0xc')]||!_0x296911[_0x7b62('0x26')]){throw new db[(_0x7b62('0x1a'))]['ValidationError'](_0x7b62('0x27'));}_0x2faaed=_0x296911;logger[_0x7b62('0xa')](util[_0x7b62('0xe')](_0x7b62('0x28'),_0x41b6f3['id']));return sentiment(_0x2faaed[_0x7b62('0xc')],_0x2faaed['data2'],_0x243110['sentimentRegion'],_0x1af762[_0x7b62('0x10')],_0x243110[_0x7b62('0x1e')]);})[_0x7b62('0x14')](function(_0x583b22){logger[_0x7b62('0xa')](util[_0x7b62('0xe')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x41b6f3['id']));return _0x41b6f3[_0x7b62('0x29')]({'sentiment':_0x583b22[_0x7b62('0x2a')],'sPositive':_0x583b22[_0x7b62('0x2b')]['Positive'],'sNegative':_0x583b22[_0x7b62('0x2b')][_0x7b62('0x2c')],'sMixed':_0x583b22['SentimentScore'][_0x7b62('0x2d')],'sNeutral':_0x583b22[_0x7b62('0x2b')][_0x7b62('0x2e')]});})['then'](function(){logger[_0x7b62('0xa')](util[_0x7b62('0xe')](_0x7b62('0x18'),_0x41b6f3['id']));_0x413eb4();});case _0x7b62('0x2f'):return _0x41b6f3[_0x7b62('0x29')]({'transcribeStatus':_0x7b62('0x2f'),'failureReason':_0x3f9afa[_0x7b62('0x11')][_0x7b62('0x30')]})[_0x7b62('0x14')](function(){logger[_0x7b62('0xa')](util[_0x7b62('0xe')](_0x7b62('0x18'),_0x41b6f3['id']));_0x413eb4();});default:logger[_0x7b62('0xa')](util[_0x7b62('0xe')](_0x7b62('0x31'),_0x41b6f3['id']));break;}}else{return BPromise[_0x7b62('0x32')]()[_0x7b62('0x14')](function(){if(!_0x41b6f3[_0x7b62('0x19')]){throw new db[(_0x7b62('0x1a'))][(_0x7b62('0x1f'))](_0x7b62('0x1b'));}if(!_0x243110['sentiment']||!_0x243110['sentimentAccountId']||!_0x243110[_0x7b62('0x1d')]||!_0x243110[_0x7b62('0x1e')]||!_0x243110[_0x7b62('0x33')]){throw new db['Sequelize'][(_0x7b62('0x1f'))](_0x7b62('0x20'));}if(!_0x41b6f3[_0x7b62('0x10')]){throw new Error(_0x7b62('0x21'));}if(_0x243110[_0x7b62('0x22')]===_0x2559c2['id']){return _0x2559c2;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0x7b62('0x14')](function(_0x38fd0b){if(!_0x38fd0b){throw new db[(_0x7b62('0x1a'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x38fd0b[_0x7b62('0xc')]||!_0x38fd0b[_0x7b62('0x26')]){throw new db[(_0x7b62('0x1a'))]['ValidationError'](_0x7b62('0x27'));}_0x2faaed=_0x38fd0b;logger[_0x7b62('0xa')](util[_0x7b62('0xe')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x41b6f3['id']));return sentiment(_0x2faaed[_0x7b62('0xc')],_0x2faaed['data2'],_0x243110[_0x7b62('0x1d')],_0x41b6f3[_0x7b62('0x10')],_0x243110['language']);})[_0x7b62('0x14')](function(_0x472945){logger[_0x7b62('0xa')](util['format'](_0x7b62('0x34'),_0x41b6f3['id']));return _0x41b6f3['update']({'sentiment':_0x472945[_0x7b62('0x2a')],'sPositive':_0x472945['SentimentScore'][_0x7b62('0x35')],'sNegative':_0x472945[_0x7b62('0x2b')][_0x7b62('0x2c')],'sMixed':_0x472945['SentimentScore'][_0x7b62('0x2d')],'sNeutral':_0x472945[_0x7b62('0x2b')][_0x7b62('0x2e')],'transcribeStatus':_0x7b62('0x36')});})[_0x7b62('0x14')](function(){logger[_0x7b62('0xa')](util[_0x7b62('0xe')](_0x7b62('0x18'),_0x41b6f3['id']));_0x413eb4();});}})[_0x7b62('0x37')](function(_0x10ad11){if(_0x10ad11){if(!_0x10ad11[_0x7b62('0x38')]||_0x10ad11[_0x7b62('0x38')]!==_0x7b62('0x39')){logger[_0x7b62('0x3a')](util[_0x7b62('0xe')](_0x7b62('0x3b'),_0x41b6f3['id']),util['inspect'](_0x10ad11,{'showHidden':![],'depth':null}));}}_0x413eb4();});});}function checkTranscribe(){var _0x5b3e45;var _0x11e83d;var _0x5bc0dd;return db[_0x7b62('0x3c')]['findAll']({'where':{'transcribeStatus':_0x7b62('0x3d')}})[_0x7b62('0x14')](function(_0x19bcf8){if(!_0x19bcf8||!_0x19bcf8[_0x7b62('0x17')]){throw new db['Sequelize'][(_0x7b62('0x1f'))](_0x7b62('0x3e'));}_0x5b3e45=_0x19bcf8;return db[_0x7b62('0x3f')]['findOne']({'where':{'id':0x1}});})['then'](function(_0x5c8139){if(!_0x5c8139){throw new db[(_0x7b62('0x1a'))][(_0x7b62('0x1f'))](_0x7b62('0x40'));}_0x11e83d=_0x5c8139;if(!_0x11e83d[_0x7b62('0x4')]||!_0x11e83d[_0x7b62('0x41')]||!_0x11e83d[_0x7b62('0x42')]||!_0x11e83d[_0x7b62('0x1e')]||!_0x11e83d[_0x7b62('0x33')]){throw new db[(_0x7b62('0x1a'))][(_0x7b62('0x1f'))]('Transcribe\x20not\x20configured');}return db[_0x7b62('0x23')]['findOne']({'where':{'id':_0x11e83d[_0x7b62('0x41')]}});})[_0x7b62('0x14')](function(_0x39d087){if(!_0x39d087){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x39d087[_0x7b62('0xc')]||!_0x39d087[_0x7b62('0x26')]){throw new db[(_0x7b62('0x1a'))][(_0x7b62('0x1f'))](_0x7b62('0x27'));}_0x5bc0dd=_0x39d087;var _0x5e9267=[];_0x5b3e45[_0x7b62('0x43')](function(_0x2dde17){_0x5e9267[_0x7b62('0x44')](checkTranscribeJob(_0x2dde17,_0x11e83d,_0x5bc0dd));});return BPromise[_0x7b62('0x45')](_0x5e9267);})['catch'](function(_0x1d9025){if(_0x1d9025){if(!_0x1d9025[_0x7b62('0x38')]||_0x1d9025[_0x7b62('0x38')]!==_0x7b62('0x39')){logger[_0x7b62('0x3a')](util[_0x7b62('0x46')](_0x1d9025,{'showHidden':![],'depth':null}));}}});}exports[_0x7b62('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x1c8a=['[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','ValidationError','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','sentimentRegion','findOne','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','CloudProvider','forEach','push','inspect','lodash','aws-sdk','request-promise','util','bluebird','../../config/logger','getTranscriptionJob','Comprehend','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','fileText','TranscriptionJob','COMPLETED','Transcript','TranscriptFileUri'];(function(_0x458dfb,_0x40463d){var _0x46e1e8=function(_0x48513e){while(--_0x48513e){_0x458dfb['push'](_0x458dfb['shift']());}};_0x46e1e8(++_0x40463d);}(_0x1c8a,0x140));var _0xa1c8=function(_0x50952b,_0x46476a){_0x50952b=_0x50952b-0x0;var _0x21cbec=_0x1c8a[_0x50952b];return _0x21cbec;};var _=require(_0xa1c8('0x0'));var AWS=require(_0xa1c8('0x1'));var rp=require(_0xa1c8('0x2'));var util=require(_0xa1c8('0x3'));var BPromise=require(_0xa1c8('0x4'));var db=require('../../mysqldb')['db'];var logger=require(_0xa1c8('0x5'))('transcribe');function getTranscriptionJob(_0x122813,_0x1cdee0,_0x4668e8,_0x559330){return new Promise(function(_0x331282,_0x14b85c){var _0x14d2f0=new AWS['TranscribeService']({'accessKeyId':_0x1cdee0,'secretAccessKey':_0x122813,'region':_0x4668e8});_0x14d2f0[_0xa1c8('0x6')]({'TranscriptionJobName':_0x559330},function(_0xf93962,_0x44cf0d){if(_0xf93962){return _0x14b85c(_0xf93962);}else{return _0x331282(_0x44cf0d);}});});}function sentiment(_0x4a5d71,_0xb3751e,_0x23d253,_0x6e2ad7,_0x4c6bd3){return new Promise(function(_0x578c5d,_0x441602){var _0x5d87e2=new AWS[(_0xa1c8('0x7'))]({'accessKeyId':_0xb3751e,'secretAccessKey':_0x4a5d71,'region':_0x23d253});_0x5d87e2['detectSentiment']({'Text':_0x6e2ad7,'LanguageCode':_0x4c6bd3['substring'](0x0,0x2)},function(_0x4fa1a7,_0x398133){if(_0x4fa1a7){return _0x441602(_0x4fa1a7);}else{return _0x578c5d(_0x398133);}});});}function checkTranscribeJob(_0x35c9d7,_0x2647fa,_0x707249){var _0x644e9c;return new BPromise(function(_0x4097bf,_0x5e3816){logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')](_0xa1c8('0xa'),_0x35c9d7['id'],_0x35c9d7[_0xa1c8('0xb')]));return getTranscriptionJob(_0x707249[_0xa1c8('0xc')],_0x707249[_0xa1c8('0xd')],_0x2647fa['transcribeRegion'],_0x35c9d7[_0xa1c8('0xb')])[_0xa1c8('0xe')](function(_0x17d4d2){logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x35c9d7['id'],_0x35c9d7[_0xa1c8('0xb')],_0x17d4d2['TranscriptionJob']['TranscriptionJobStatus']));if(!_0x35c9d7[_0xa1c8('0xf')]){switch(_0x17d4d2[_0xa1c8('0x10')]['TranscriptionJobStatus']){case _0xa1c8('0x11'):var _0x367094={'transcribeStatus':_0x17d4d2[_0xa1c8('0x10')]['TranscriptionJobStatus'],'fileUri':_0x17d4d2[_0xa1c8('0x10')][_0xa1c8('0x12')][_0xa1c8('0x13')]};logger['info'](util[_0xa1c8('0x9')](_0xa1c8('0x14'),_0x35c9d7['id']));return rp({'uri':_0x17d4d2['TranscriptionJob'][_0xa1c8('0x12')][_0xa1c8('0x13')],'json':!![]})[_0xa1c8('0xe')](function(_0x2a7fa5){logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')](_0xa1c8('0x15'),_0x35c9d7['id']));if(_0x2a7fa5&&_0x2a7fa5[_0xa1c8('0x16')]&&_0x2a7fa5[_0xa1c8('0x16')][_0xa1c8('0x17')]&&_0x2a7fa5[_0xa1c8('0x16')][_0xa1c8('0x17')][_0xa1c8('0x18')]){_0x367094[_0xa1c8('0xf')]='';for(var _0x3f929f=0x0;_0x3f929f<_0x2a7fa5[_0xa1c8('0x16')]['transcripts'][_0xa1c8('0x18')];_0x3f929f++){_0x367094['fileText']+=_0x2a7fa5[_0xa1c8('0x16')]['transcripts'][_0x3f929f][_0xa1c8('0x19')]+'';}}return _0x35c9d7[_0xa1c8('0x1a')](_0x367094);})[_0xa1c8('0xe')](function(){logger['info'](util[_0xa1c8('0x9')](_0xa1c8('0x1b'),_0x35c9d7['id']));if(!_0x35c9d7[_0xa1c8('0x1c')]){throw new db[(_0xa1c8('0x1d'))]['ValidationError'](_0xa1c8('0x1e'));}if(!_0x2647fa[_0xa1c8('0x1f')]||!_0x2647fa[_0xa1c8('0x20')]||!_0x2647fa['sentimentRegion']||!_0x2647fa['language']||!_0x2647fa[_0xa1c8('0x21')]){throw new db[(_0xa1c8('0x1d'))]['ValidationError'](_0xa1c8('0x22'));}if(!_0x367094[_0xa1c8('0xf')]){throw new Error(_0xa1c8('0x23'));}if(_0x2647fa['sentimentAccountId']===_0x707249['id']){return _0x707249;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0xa1c8('0x20')]}});}})['then'](function(_0x27cb09){if(!_0x27cb09){throw new db[(_0xa1c8('0x1d'))][(_0xa1c8('0x24'))](_0xa1c8('0x25'));}if(!_0x27cb09[_0xa1c8('0xc')]||!_0x27cb09[_0xa1c8('0xd')]){throw new db['Sequelize'][(_0xa1c8('0x24'))](_0xa1c8('0x26'));}_0x644e9c=_0x27cb09;logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x35c9d7['id']));return sentiment(_0x644e9c['data1'],_0x644e9c[_0xa1c8('0xd')],_0x2647fa['sentimentRegion'],_0x367094[_0xa1c8('0xf')],_0x2647fa[_0xa1c8('0x27')]);})[_0xa1c8('0xe')](function(_0x20ab0d){logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')](_0xa1c8('0x28'),_0x35c9d7['id']));return _0x35c9d7[_0xa1c8('0x1a')]({'sentiment':_0x20ab0d['Sentiment'],'sPositive':_0x20ab0d[_0xa1c8('0x29')][_0xa1c8('0x2a')],'sNegative':_0x20ab0d[_0xa1c8('0x29')][_0xa1c8('0x2b')],'sMixed':_0x20ab0d[_0xa1c8('0x29')][_0xa1c8('0x2c')],'sNeutral':_0x20ab0d[_0xa1c8('0x29')][_0xa1c8('0x2d')]});})[_0xa1c8('0xe')](function(){logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')](_0xa1c8('0x1b'),_0x35c9d7['id']));_0x4097bf();});case _0xa1c8('0x2e'):return _0x35c9d7[_0xa1c8('0x1a')]({'transcribeStatus':'FAILED','failureReason':_0x17d4d2['TranscriptionJob'][_0xa1c8('0x2f')]})[_0xa1c8('0xe')](function(){logger[_0xa1c8('0x8')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x35c9d7['id']));_0x4097bf();});default:logger['info'](util[_0xa1c8('0x9')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x35c9d7['id']));break;}}else{return BPromise['resolve']()[_0xa1c8('0xe')](function(){if(!_0x35c9d7[_0xa1c8('0x1c')]){throw new db[(_0xa1c8('0x1d'))]['ValidationError'](_0xa1c8('0x1e'));}if(!_0x2647fa[_0xa1c8('0x1f')]||!_0x2647fa['sentimentAccountId']||!_0x2647fa[_0xa1c8('0x30')]||!_0x2647fa[_0xa1c8('0x27')]||!_0x2647fa[_0xa1c8('0x21')]){throw new db['Sequelize'][(_0xa1c8('0x24'))](_0xa1c8('0x22'));}if(!_0x35c9d7[_0xa1c8('0xf')]){throw new Error(_0xa1c8('0x23'));}if(_0x2647fa[_0xa1c8('0x20')]===_0x707249['id']){return _0x707249;}else{return db['CloudProvider'][_0xa1c8('0x31')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x4c7472){if(!_0x4c7472){throw new db[(_0xa1c8('0x1d'))][(_0xa1c8('0x24'))](_0xa1c8('0x25'));}if(!_0x4c7472[_0xa1c8('0xc')]||!_0x4c7472[_0xa1c8('0xd')]){throw new db['Sequelize']['ValidationError'](_0xa1c8('0x26'));}_0x644e9c=_0x4c7472;logger[_0xa1c8('0x8')](util[_0xa1c8('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x35c9d7['id']));return sentiment(_0x644e9c['data1'],_0x644e9c[_0xa1c8('0xd')],_0x2647fa[_0xa1c8('0x30')],_0x35c9d7[_0xa1c8('0xf')],_0x2647fa[_0xa1c8('0x27')]);})[_0xa1c8('0xe')](function(_0x113136){logger[_0xa1c8('0x8')](util['format'](_0xa1c8('0x28'),_0x35c9d7['id']));return _0x35c9d7['update']({'sentiment':_0x113136[_0xa1c8('0x32')],'sPositive':_0x113136[_0xa1c8('0x29')][_0xa1c8('0x2a')],'sNegative':_0x113136['SentimentScore'][_0xa1c8('0x2b')],'sMixed':_0x113136['SentimentScore'][_0xa1c8('0x2c')],'sNeutral':_0x113136[_0xa1c8('0x29')][_0xa1c8('0x2d')],'transcribeStatus':'COMPLETED'});})[_0xa1c8('0xe')](function(){logger[_0xa1c8('0x8')](util['format'](_0xa1c8('0x1b'),_0x35c9d7['id']));_0x4097bf();});}})[_0xa1c8('0x33')](function(_0x266954){if(_0x266954){if(!_0x266954[_0xa1c8('0x34')]||_0x266954[_0xa1c8('0x34')]!==_0xa1c8('0x35')){logger[_0xa1c8('0x36')](util[_0xa1c8('0x9')](_0xa1c8('0x37'),_0x35c9d7['id']),util['inspect'](_0x266954,{'showHidden':![],'depth':null}));}}_0x4097bf();});});}function checkTranscribe(){var _0x2517ca;var _0x44e153;var _0x470479;return db[_0xa1c8('0x38')]['findAll']({'where':{'transcribeStatus':_0xa1c8('0x39')}})[_0xa1c8('0xe')](function(_0x5ecbee){if(!_0x5ecbee||!_0x5ecbee[_0xa1c8('0x18')]){throw new db[(_0xa1c8('0x1d'))]['ValidationError'](_0xa1c8('0x3a'));}_0x2517ca=_0x5ecbee;return db[_0xa1c8('0x3b')][_0xa1c8('0x31')]({'where':{'id':0x1}});})[_0xa1c8('0xe')](function(_0x14ce13){if(!_0x14ce13){throw new db['Sequelize']['ValidationError'](_0xa1c8('0x3c'));}_0x44e153=_0x14ce13;if(!_0x44e153[_0xa1c8('0x3d')]||!_0x44e153[_0xa1c8('0x3e')]||!_0x44e153['transcribeRegion']||!_0x44e153[_0xa1c8('0x27')]||!_0x44e153[_0xa1c8('0x21')]){throw new db[(_0xa1c8('0x1d'))][(_0xa1c8('0x24'))](_0xa1c8('0x3f'));}return db[_0xa1c8('0x40')][_0xa1c8('0x31')]({'where':{'id':_0x44e153[_0xa1c8('0x3e')]}});})[_0xa1c8('0xe')](function(_0xf13fa3){if(!_0xf13fa3){throw new db[(_0xa1c8('0x1d'))][(_0xa1c8('0x24'))](_0xa1c8('0x25'));}if(!_0xf13fa3['data1']||!_0xf13fa3[_0xa1c8('0xd')]){throw new db[(_0xa1c8('0x1d'))][(_0xa1c8('0x24'))](_0xa1c8('0x26'));}_0x470479=_0xf13fa3;var _0x56a38d=[];_0x2517ca[_0xa1c8('0x41')](function(_0x1898b4){_0x56a38d[_0xa1c8('0x42')](checkTranscribeJob(_0x1898b4,_0x44e153,_0x470479));});return BPromise['all'](_0x56a38d);})[_0xa1c8('0x33')](function(_0x185c17){if(_0x185c17){if(!_0x185c17[_0xa1c8('0x34')]||_0x185c17[_0xa1c8('0x34')]!=='SequelizeValidationError'){logger['error'](util[_0xa1c8('0x43')](_0x185c17,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index a1e9c46..11e9109 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7860=['defaults','hours','length','join','update','timeout','format','then','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','lodash','util','redis'];(function(_0x3207a4,_0x1b9024){var _0x5c8dff=function(_0x4611b9){while(--_0x4611b9){_0x3207a4['push'](_0x3207a4['shift']());}};_0x5c8dff(++_0x1b9024);}(_0x7860,0x74));var _0x0786=function(_0x3e343b,_0x5a28d0){_0x3e343b=_0x3e343b-0x0;var _0x17c8fd=_0x7860[_0x3e343b];return _0x17c8fd;};'use strict';var _=require(_0x0786('0x0'));var moment=require('moment');var Redis=require('ioredis');var util=require(_0x0786('0x1'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require('../logger')('schedule');config[_0x0786('0x2')]=_[_0x0786('0x3')](config[_0x0786('0x2')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x1b4b0=[];return db['WhatsappInteraction']['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x0786('0x4'))}}})['then'](function(_0x4fcd9c){if(_0x4fcd9c&&_0x4fcd9c[_0x0786('0x5')]){_0x1b4b0=_['map'](_0x4fcd9c||[],'id');logger['info']('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x1b4b0[_0x0786('0x6')]());return db['WhatsappInteraction'][_0x0786('0x7')]({'closeReason':'system','disposition':_0x0786('0x8'),'closed':!![],'closedAt':moment()[_0x0786('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x1b4b0}});}})[_0x0786('0xa')](function(){if(_0x1b4b0&&_0x1b4b0[_0x0786('0x5')]){logger['info'](_0x0786('0xb'),_0x1b4b0['join']());for(var _0x288503=0x0;_0x288503<_0x1b4b0[_0x0786('0x5')];_0x288503++){io[_0x0786('0xc')](_0x0786('0xd'),{'id':_0x1b4b0[_0x288503],'closed':!![]});}}})['catch'](function(_0xebc131){logger[_0x0786('0xe')](_0x0786('0xf'),_0xebc131?util[_0x0786('0x10')](_0xebc131,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x6ee2=['update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join'];(function(_0x1c443f,_0x51319d){var _0x4a4a71=function(_0x355b73){while(--_0x355b73){_0x1c443f['push'](_0x1c443f['shift']());}};_0x4a4a71(++_0x51319d);}(_0x6ee2,0x155));var _0x26ee=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0x6ee2[_0x2faddb];return _0x273c05;};'use strict';var _=require(_0x26ee('0x0'));var moment=require(_0x26ee('0x1'));var Redis=require(_0x26ee('0x2'));var util=require('util');var config=require(_0x26ee('0x3'));var db=require(_0x26ee('0x4'))['db'];var logger=require('../logger')('schedule');config[_0x26ee('0x5')]=_[_0x26ee('0x6')](config[_0x26ee('0x5')],{'host':_0x26ee('0x7'),'port':0x18eb});var io=require(_0x26ee('0x8'))(new Redis(config[_0x26ee('0x5')]));function closeInteractions(){var _0x2f9cd4=[];return db[_0x26ee('0x9')][_0x26ee('0xa')]({'raw':!![],'attributes':['id',_0x26ee('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x26ee('0xc')](0x18,_0x26ee('0xd'))}}})['then'](function(_0x1b0a18){if(_0x1b0a18&&_0x1b0a18[_0x26ee('0xe')]){_0x2f9cd4=_[_0x26ee('0xf')](_0x1b0a18||[],'id');logger[_0x26ee('0x10')](_0x26ee('0x11'),_0x2f9cd4[_0x26ee('0x12')]());return db[_0x26ee('0x9')][_0x26ee('0x13')]({'closeReason':'system','disposition':_0x26ee('0x14'),'closed':!![],'closedAt':moment()[_0x26ee('0x15')](_0x26ee('0x16'))},{'where':{'id':_0x2f9cd4}});}})['then'](function(){if(_0x2f9cd4&&_0x2f9cd4[_0x26ee('0xe')]){logger[_0x26ee('0x10')](_0x26ee('0x17'),_0x2f9cd4[_0x26ee('0x12')]());for(var _0x507446=0x0;_0x507446<_0x2f9cd4[_0x26ee('0xe')];_0x507446++){io[_0x26ee('0x18')](_0x26ee('0x19'),{'id':_0x2f9cd4[_0x507446],'closed':!![]});}}})[_0x26ee('0x1a')](function(_0x38f552){logger['error'](_0x26ee('0x1b'),_0x38f552?util[_0x26ee('0x1c')](_0x38f552,{'showHidden':![],'depth':null}):'');});}exports[_0x26ee('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 7da1bc0..c589db9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2726=['contacts2','hopper2','catch','util','../mysqldb','push','Innocenzo','innocenzo.biondo','now','Biondo','CmContact','then','log','finished\x20populating','CmHopper','destroy','bulkCreate','hopper1'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x2726,0x93));var _0x6272=function(_0x1ebc6c,_0x58a00b){_0x1ebc6c=_0x1ebc6c-0x0;var _0x3a826d=_0x2726[_0x1ebc6c];return _0x3a826d;};'use strict';var util=require(_0x6272('0x0'));var db=require(_0x6272('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x6272('0x2')]({'id':i,'firstName':_0x6272('0x3')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x6272('0x4')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x6272('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x6272('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x6272('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x6272('0x6')+i,'phone':0xf879fb460+i,'email':_0x6272('0x4')+i+'@xcally.com'});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x6272('0x5')]()});}db[_0x6272('0x7')]['destroy']({'where':{}})[_0x6272('0x8')](function(){return db[_0x6272('0x7')]['bulkCreate'](contacts);})[_0x6272('0x8')](function(){console[_0x6272('0x9')](_0x6272('0xa'),'contacts1');return db[_0x6272('0xb')][_0x6272('0xc')]({'where':{}});})[_0x6272('0x8')](function(){return db[_0x6272('0xb')][_0x6272('0xd')](hopper);})[_0x6272('0x8')](function(){console[_0x6272('0x9')](_0x6272('0xa'),_0x6272('0xe'));return db[_0x6272('0x7')]['bulkCreate'](contacts2);})[_0x6272('0x8')](function(){console[_0x6272('0x9')]('finished\x20populating',_0x6272('0xf'));return db[_0x6272('0xb')]['bulkCreate'](hopper2);})[_0x6272('0x8')](function(){console['log'](_0x6272('0xa'),_0x6272('0x10'));})[_0x6272('0x11')](function(_0x1f3217){console['log'](_0x1f3217);});
\ No newline at end of file
+var _0x0242=['CmHopper','bulkCreate','hopper1','contacts2','catch','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','then','log','finished\x20populating','contacts1'];(function(_0x56b48d,_0x5d7664){var _0x4dd598=function(_0x25c02c){while(--_0x25c02c){_0x56b48d['push'](_0x56b48d['shift']());}};_0x4dd598(++_0x5d7664);}(_0x0242,0x1d9));var _0x2024=function(_0x113a6c,_0x10df30){_0x113a6c=_0x113a6c-0x0;var _0x1ac632=_0x0242[_0x113a6c];return _0x1ac632;};'use strict';var util=require(_0x2024('0x0'));var db=require(_0x2024('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x2024('0x2')]({'id':i,'firstName':_0x2024('0x3')+i,'lastName':_0x2024('0x4')+i,'phone':0xf879fb460+i,'email':_0x2024('0x5')+i+_0x2024('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x2024('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x2024('0x7')](),'updatedAt':Date[_0x2024('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x2024('0x2')]({'id':i,'firstName':_0x2024('0x3')+i,'lastName':_0x2024('0x4')+i,'phone':0xf879fb460+i,'email':_0x2024('0x5')+i+_0x2024('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x2024('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x2024('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0x2024('0x8')]['destroy']({'where':{}})[_0x2024('0x9')](function(){return db[_0x2024('0x8')]['bulkCreate'](contacts);})[_0x2024('0x9')](function(){console[_0x2024('0xa')](_0x2024('0xb'),_0x2024('0xc'));return db[_0x2024('0xd')]['destroy']({'where':{}});})[_0x2024('0x9')](function(){return db['CmHopper'][_0x2024('0xe')](hopper);})['then'](function(){console[_0x2024('0xa')](_0x2024('0xb'),_0x2024('0xf'));return db[_0x2024('0x8')][_0x2024('0xe')](contacts2);})[_0x2024('0x9')](function(){console[_0x2024('0xa')](_0x2024('0xb'),_0x2024('0x10'));return db['CmHopper']['bulkCreate'](hopper2);})[_0x2024('0x9')](function(){console['log']('finished\x20populating','hopper2');})[_0x2024('0x11')](function(_0x4e6fb1){console[_0x2024('0xa')](_0x4e6fb1);});
\ No newline at end of file
index 0d50b23..8afc531 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6bb=['all','ulaw','yes','/etc/pki/tls/certs/motion.crt','actpass','User','bulkCreate','then','add\x20user','catch','log','util','../mysqldb','format','%s%s','agent','%s%s@xcally.com','password','friend','udp','wss'];(function(_0x5ec0e1,_0x3185df){var _0x2d5769=function(_0xb20b80){while(--_0xb20b80){_0x5ec0e1['push'](_0x5ec0e1['shift']());}};_0x2d5769(++_0x3185df);}(_0xc6bb,0x1af));var _0xbc6b=function(_0x396bf3,_0xfc0f39){_0x396bf3=_0x396bf3-0x0;var _0x3f3623=_0xc6bb[_0x396bf3];return _0x3f3623;};'use strict';var util=require(_0xbc6b('0x0'));var db=require(_0xbc6b('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0xbc6b('0x2')](_0xbc6b('0x3'),_0xbc6b('0x4'),i),'fullname':util[_0xbc6b('0x2')](_0xbc6b('0x3'),'agent',i),'email':util[_0xbc6b('0x2')](_0xbc6b('0x5'),'agent',i),'role':_0xbc6b('0x4'),'password':_0xbc6b('0x6'),'internal':0xfa0+i,'type':_0xbc6b('0x7'),'transport':[_0xbc6b('0x8'),'ws',_0xbc6b('0x9')],'disallow':[_0xbc6b('0xa')],'allow':[_0xbc6b('0xb')],'defaultuser':util[_0xbc6b('0x2')]('%s%s',_0xbc6b('0x4'),i),'encryption':'yes','avpf':_0xbc6b('0xc'),'force_avp':_0xbc6b('0xc'),'icesupport':_0xbc6b('0xc'),'dtlsenable':_0xbc6b('0xc'),'dtlsverify':'no','dtlscertfile':_0xbc6b('0xd'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0xbc6b('0xe'),'callerid':util[_0xbc6b('0x2')]('\x22%s\x22\x20<%s>',util[_0xbc6b('0x2')](_0xbc6b('0x3'),_0xbc6b('0x4'),i),0xfa0+i)});}db[_0xbc6b('0xf')][_0xbc6b('0x10')](users)[_0xbc6b('0x11')](function(){console['log'](_0xbc6b('0x12'));})[_0xbc6b('0x13')](function(_0x474312){console[_0xbc6b('0x14')](_0x474312);});
\ No newline at end of file
+var _0x23d4=['catch','util','../mysqldb','push','format','agent','password','friend','udp','all','ulaw','%s%s','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','then','log','add\x20user'];(function(_0x60a3d,_0xf21ee4){var _0x2a8e0f=function(_0x542f19){while(--_0x542f19){_0x60a3d['push'](_0x60a3d['shift']());}};_0x2a8e0f(++_0xf21ee4);}(_0x23d4,0x166));var _0x423d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x23d4[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x423d('0x0'));var db=require(_0x423d('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x423d('0x2')]({'name':util[_0x423d('0x3')]('%s%s','agent',i),'fullname':util[_0x423d('0x3')]('%s%s',_0x423d('0x4'),i),'email':util['format']('%s%s@xcally.com',_0x423d('0x4'),i),'role':_0x423d('0x4'),'password':_0x423d('0x5'),'internal':0xfa0+i,'type':_0x423d('0x6'),'transport':[_0x423d('0x7'),'ws','wss'],'disallow':[_0x423d('0x8')],'allow':[_0x423d('0x9')],'defaultuser':util[_0x423d('0x3')](_0x423d('0xa'),'agent',i),'encryption':'yes','avpf':'yes','force_avp':_0x423d('0xb'),'icesupport':'yes','dtlsenable':_0x423d('0xb'),'dtlsverify':'no','dtlscertfile':_0x423d('0xc'),'dtlsprivatekey':_0x423d('0xd'),'dtlssetup':_0x423d('0xe'),'callerid':util['format'](_0x423d('0xf'),util[_0x423d('0x3')](_0x423d('0xa'),_0x423d('0x4'),i),0xfa0+i)});}db[_0x423d('0x10')]['bulkCreate'](users)[_0x423d('0x11')](function(){console[_0x423d('0x12')](_0x423d('0x13'));})[_0x423d('0x14')](function(_0x392f89){console[_0x423d('0x12')](_0x392f89);});
\ No newline at end of file
index 8a0f284..1bd75f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x110f=['user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','connection','setMaxListeners','address','request','remoteAddress','connectedAt','SocketIO\x20','disconnect','DISCONNECTED','CONNECTED','lodash','util','name','User','role','telephone','agent','type','findOne','then','autoAssociation','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','UserProfileResource','resourceId','map','where','Campaign','%s:queue:%s','Agents','length','format','user:%s','handshake','query','find','userProfileId','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','VoiceQueue','push','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','VoiceQueues','SmsQueue','Telephones','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','fax','openchannel','whatsapp','telephone:%s','trunk:%s','ChatInteractions','leave','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','emit','user_has_sms_interactions:remove','removeOpenchannelInteractions'];(function(_0x3d4787,_0x425210){var _0xbeeb22=function(_0x28888e){while(--_0x28888e){_0x3d4787['push'](_0x3d4787['shift']());}};_0xbeeb22(++_0x425210);}(_0x110f,0x1e6));var _0xf110=function(_0x1609ae,_0x5c1282){_0x1609ae=_0x1609ae-0x0;var _0xea5e74=_0x110f[_0x1609ae];return _0xea5e74;};'use strict';var _=require(_0xf110('0x0'));var util=require(_0xf110('0x1'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xf110('0x2')],'include':[{'as':'Agents','model':db[_0xf110('0x3')],'attributes':['id',_0xf110('0x2'),_0xf110('0x4')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xf110('0x2')],'where':{'role':_0xf110('0x5')}};var queryTrunks={'raw':!![],'attributes':['id',_0xf110('0x2')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0xf110('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xf110('0x2'),_0xf110('0x7')],'where':{'type':'ivr'}};function getAssociatedResources(_0x307bce,_0xb51c4b,_0x11c28f){return db['UserProfileSection'][_0xf110('0x8')]({'where':{'name':_0x307bce,'userProfileId':_0xb51c4b},'raw':!![]})[_0xf110('0x9')](function(_0x17a94a){if(_0x17a94a){if(_0x17a94a[_0xf110('0xa')]){switch(_0x307bce){case'VoiceQueues':case _0xf110('0xb'):case _0xf110('0xc'):case'SmsQueues':case _0xf110('0xd'):case _0xf110('0xe'):case _0xf110('0xf'):return db[_0x11c28f][_0xf110('0x10')](queryQueues);case'Telephones':return db[_0x11c28f][_0xf110('0x10')](queryTelephones);case _0xf110('0x11'):return db[_0x11c28f][_0xf110('0x10')](queryTrunks);case'IvrCampaigns':return db[_0x11c28f][_0xf110('0x10')](queryCampaigns);}}else{return db[_0xf110('0x12')]['findAll']({'attributes':[_0xf110('0x13')],'where':{'sectionId':_0x17a94a['id']},'raw':!![]})[_0xf110('0x9')](function(_0x40cd2b){if(_0x40cd2b){var _0x325496={'where':{'id':_[_0xf110('0x14')](_0x40cd2b,_0xf110('0x13'))},'raw':!![]};switch(_0x11c28f){case _0xf110('0x3'):_0x325496[_0xf110('0x15')][_0xf110('0x4')]='telephone';break;case _0xf110('0x16'):_0x325496[_0xf110('0x15')][_0xf110('0x7')]='ivr';break;}return db[_0x11c28f][_0xf110('0x10')](_0x325496);}else{return[];}});}}else{return[];}})['then'](function(_0x1217a8){return _0x1217a8;});}function joinOrLeaveQueues(_0x36092a,_0x119e56,_0x36d6d7,_0xcde9b9){_0x36092a[_0x119e56](util['format'](_0xf110('0x17'),_0x36d6d7,_0xcde9b9[_0xf110('0x2')]));if(_0xcde9b9['Agents']){for(var _0x7f7608=0x0;_0x7f7608<_0xcde9b9[_0xf110('0x18')][_0xf110('0x19')];_0x7f7608+=0x1){_0x36092a[_0x119e56](util[_0xf110('0x1a')](_0xf110('0x1b'),_0xcde9b9['Agents'][_0x7f7608][_0xf110('0x2')]));}}}function joinOrLeave(_0x2558c5,_0x4c156f,_0x9980ec){var _0xc52064;if(_0x2558c5[_0xf110('0x1c')][_0xf110('0x1d')]['id']){db[_0xf110('0x3')][_0xf110('0x1e')]({'attributes':['id',_0xf110('0x2'),'role',_0xf110('0x1f')],'where':{'id':_0x2558c5['handshake'][_0xf110('0x1d')]['id']},'include':[{'model':db['ChatInteraction'],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xf110('0x20')],'as':_0xf110('0x21'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0xf110('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xf110('0x23')],'as':_0xf110('0x24'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xf110('0x25'),'attributes':['id'],'raw':!![]}]})[_0xf110('0x9')](function(_0x56f9fd){if(_0x56f9fd){_0xc52064=_0x56f9fd;_0x2558c5[_0x4c156f](util[_0xf110('0x1a')](_0xf110('0x1b'),_0x56f9fd[_0xf110('0x2')]));var _0x44c603=[];switch(_0x56f9fd[_0xf110('0x4')]){case _0xf110('0x26'):_0x2558c5[_0x4c156f](_0xf110('0x27'));_0x2558c5[_0x4c156f](_0xf110('0x28'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues[_0xf110('0x29')];}_0x44c603['push'](db[_0xf110('0x2a')][_0xf110('0x10')](queryQueues));_0x44c603[_0xf110('0x2b')](db[_0xf110('0x2c')][_0xf110('0x10')](queryQueues));_0x44c603[_0xf110('0x2b')](db[_0xf110('0x2d')][_0xf110('0x10')](queryQueues));_0x44c603[_0xf110('0x2b')](db['SmsQueue'][_0xf110('0x10')](queryQueues));_0x44c603[_0xf110('0x2b')](db[_0xf110('0x2e')][_0xf110('0x10')](queryQueues));_0x44c603[_0xf110('0x2b')](db[_0xf110('0x2f')][_0xf110('0x10')](queryQueues));_0x44c603[_0xf110('0x2b')](db[_0xf110('0x30')][_0xf110('0x10')](queryQueues));_0x44c603[_0xf110('0x2b')](db[_0xf110('0x3')][_0xf110('0x10')](queryTelephones));_0x44c603[_0xf110('0x2b')](db['Trunk'][_0xf110('0x10')](queryTrunks));_0x44c603[_0xf110('0x2b')](db[_0xf110('0x16')][_0xf110('0x10')](queryCampaigns));_0x44c603[_0xf110('0x2b')](db[_0xf110('0x3')][_0xf110('0x10')](queryAgents));break;case _0xf110('0x31'):_0x2558c5[_0x4c156f](_0xf110('0x27'));_0x2558c5[_0x4c156f](_0xf110('0x28'));_0x44c603['push'](getAssociatedResources(_0xf110('0x32'),_0x56f9fd[_0xf110('0x1f')],_0xf110('0x2a')));_0x44c603[_0xf110('0x2b')](getAssociatedResources(_0xf110('0xb'),_0x56f9fd[_0xf110('0x1f')],_0xf110('0x2c')));_0x44c603[_0xf110('0x2b')](getAssociatedResources(_0xf110('0xc'),_0x56f9fd[_0xf110('0x1f')],_0xf110('0x2d')));_0x44c603[_0xf110('0x2b')](getAssociatedResources('SmsQueues',_0x56f9fd['userProfileId'],_0xf110('0x33')));_0x44c603[_0xf110('0x2b')](getAssociatedResources(_0xf110('0xd'),_0x56f9fd[_0xf110('0x1f')],_0xf110('0x2e')));_0x44c603['push'](getAssociatedResources(_0xf110('0xe'),_0x56f9fd[_0xf110('0x1f')],_0xf110('0x2f')));_0x44c603[_0xf110('0x2b')](getAssociatedResources('WhatsappQueues',_0x56f9fd[_0xf110('0x1f')],_0xf110('0x30')));_0x44c603['push'](getAssociatedResources(_0xf110('0x34'),_0x56f9fd[_0xf110('0x1f')],_0xf110('0x3')));_0x44c603[_0xf110('0x2b')](getAssociatedResources('Trunks',_0x56f9fd[_0xf110('0x1f')],'Trunk'));_0x44c603[_0xf110('0x2b')](getAssociatedResources('IvrCampaigns',_0x56f9fd[_0xf110('0x1f')],_0xf110('0x16')));_0x44c603[_0xf110('0x2b')](db['User'][_0xf110('0x10')](queryAgents));break;case'agent':_0x2558c5[_0x4c156f](_0xf110('0x27'));_0x2558c5[_0x4c156f](_0xf110('0x28'));_0x44c603[_0xf110('0x2b')](_0x56f9fd[_0xf110('0x35')]({'attributes':['id',_0xf110('0x2')]}));_0x44c603[_0xf110('0x2b')](_0x56f9fd[_0xf110('0x36')]({'attributes':['id',_0xf110('0x2')]}));_0x44c603[_0xf110('0x2b')](_0x56f9fd[_0xf110('0x37')]({'attributes':['id','name']}));_0x44c603['push'](_0x56f9fd[_0xf110('0x38')]({'attributes':['id',_0xf110('0x2')]}));_0x44c603['push'](_0x56f9fd[_0xf110('0x39')]({'attributes':['id','name']}));_0x44c603[_0xf110('0x2b')](_0x56f9fd[_0xf110('0x3a')]({'attributes':['id',_0xf110('0x2')]}));_0x44c603[_0xf110('0x2b')](_0x56f9fd[_0xf110('0x3b')]({'attributes':['id',_0xf110('0x2')]}));break;}return BPromise[_0xf110('0x3c')](_0x44c603);}})[_0xf110('0x9')](function(_0x3a50e9){if(_0x3a50e9&&_0x3a50e9[_0xf110('0x19')]){for(var _0x4dbf57=0x0;_0x4dbf57<_0x3a50e9[_0xf110('0x19')];_0x4dbf57+=0x1){for(var _0x253c8d=0x0;_0x253c8d<_0x3a50e9[_0x4dbf57][_0xf110('0x19')];_0x253c8d+=0x1){switch(_0x4dbf57){case 0x0:joinOrLeaveQueues(_0x2558c5,_0x4c156f,_0xf110('0x3d'),_0x3a50e9[_0x4dbf57][_0x253c8d]);break;case 0x1:joinOrLeaveQueues(_0x2558c5,_0x4c156f,'chat',_0x3a50e9[_0x4dbf57][_0x253c8d]);break;case 0x2:joinOrLeaveQueues(_0x2558c5,_0x4c156f,_0xf110('0x3e'),_0x3a50e9[_0x4dbf57][_0x253c8d]);break;case 0x3:joinOrLeaveQueues(_0x2558c5,_0x4c156f,'sms',_0x3a50e9[_0x4dbf57][_0x253c8d]);break;case 0x4:joinOrLeaveQueues(_0x2558c5,_0x4c156f,'mail',_0x3a50e9[_0x4dbf57][_0x253c8d]);break;case 0x5:joinOrLeaveQueues(_0x2558c5,_0x4c156f,_0xf110('0x3f'),_0x3a50e9[_0x4dbf57][_0x253c8d]);break;case 0x6:joinOrLeaveQueues(_0x2558c5,_0x4c156f,_0xf110('0x40'),_0x3a50e9[_0x4dbf57][_0x253c8d]);break;case 0x7:if(_0xc52064[_0xf110('0x4')]!=='agent')_0x2558c5[_0x4c156f](util[_0xf110('0x1a')](_0xf110('0x41'),_0x3a50e9[_0x4dbf57][_0x253c8d][_0xf110('0x2')]));break;case 0x8:if(_0xc52064[_0xf110('0x4')]!==_0xf110('0x6'))_0x2558c5[_0x4c156f](util[_0xf110('0x1a')](_0xf110('0x42'),_0x3a50e9[_0x4dbf57][_0x253c8d][_0xf110('0x2')]));break;case 0x9:if(_0xc52064[_0xf110('0x4')]!==_0xf110('0x6'))_0x2558c5[_0x4c156f](util[_0xf110('0x1a')]('campaign:%s:%s',_0x3a50e9[_0x4dbf57][_0x253c8d][_0xf110('0x7')],_0x3a50e9[_0x4dbf57][_0x253c8d][_0xf110('0x2')]));break;case 0xa:_0x2558c5[_0x4c156f](util['format'](_0xf110('0x1b'),_0x3a50e9[_0x4dbf57][_0x253c8d]['name']));break;}}}}})['then'](function(){if(_0x4c156f==='leave'){var _0x6765d9=_[_0xf110('0x14')](_0xc52064[_0xf110('0x43')],'id');return _0xc52064['removeChatInteractions'](_0x6765d9)[_0xf110('0x9')](function(){for(var _0x495fe9=0x0;_0x495fe9<_0x6765d9[_0xf110('0x19')];_0x495fe9+=0x1){_0x9980ec['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x6765d9[_0x495fe9]),'UserId':Number(_0xc52064['id'])});}});}})[_0xf110('0x9')](function(){if(_0x4c156f===_0xf110('0x44')){var _0x123b8c=_[_0xf110('0x14')](_0xc52064[_0xf110('0x45')],'id');return _0xc52064[_0xf110('0x46')](_0x123b8c)[_0xf110('0x9')](function(){for(var _0x1e8984=0x0;_0x1e8984<_0x123b8c[_0xf110('0x19')];_0x1e8984+=0x1){_0x9980ec['emit'](_0xf110('0x47'),{'MailInteractionId':Number(_0x123b8c[_0x1e8984]),'UserId':Number(_0xc52064['id'])});}});}})[_0xf110('0x9')](function(){if(_0x4c156f===_0xf110('0x44')){var _0x4c606a=_[_0xf110('0x14')](_0xc52064[_0xf110('0x21')],'id');return _0xc52064[_0xf110('0x48')](_0x4c606a)[_0xf110('0x9')](function(){for(var _0x3829e9=0x0;_0x3829e9<_0x4c606a[_0xf110('0x19')];_0x3829e9+=0x1){_0x9980ec['emit'](_0xf110('0x49'),{'FaxInteractionId':Number(_0x4c606a[_0x3829e9]),'UserId':Number(_0xc52064['id'])});}});}})[_0xf110('0x9')](function(){if(_0x4c156f==='leave'){var _0x2b652b=_[_0xf110('0x14')](_0xc52064[_0xf110('0x22')],'id');return _0xc52064[_0xf110('0x4a')](_0x2b652b)['then'](function(){for(var _0x1fc17b=0x0;_0x1fc17b<_0x2b652b[_0xf110('0x19')];_0x1fc17b+=0x1){_0x9980ec[_0xf110('0x4b')](_0xf110('0x4c'),{'SmsInteractionId':Number(_0x2b652b[_0x1fc17b]),'UserId':Number(_0xc52064['id'])});}});}})['then'](function(){if(_0x4c156f===_0xf110('0x44')){var _0x17a0f6=_[_0xf110('0x14')](_0xc52064[_0xf110('0x24')],'id');return _0xc52064[_0xf110('0x4d')](_0x17a0f6)[_0xf110('0x9')](function(){for(var _0x2765cf=0x0;_0x2765cf<_0x17a0f6['length'];_0x2765cf+=0x1){_0x9980ec[_0xf110('0x4b')](_0xf110('0x4e'),{'OpenchannelInteractionId':Number(_0x17a0f6[_0x2765cf]),'UserId':Number(_0xc52064['id'])});}});}})[_0xf110('0x9')](function(){if(_0x4c156f===_0xf110('0x44')){var _0x3098fd=_[_0xf110('0x14')](_0xc52064[_0xf110('0x25')],'id');return _0xc52064[_0xf110('0x4f')](_0x3098fd)[_0xf110('0x9')](function(){for(var _0x3bc38e=0x0;_0x3bc38e<_0x3098fd[_0xf110('0x19')];_0x3bc38e+=0x1){_0x9980ec[_0xf110('0x4b')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x3098fd[_0x3bc38e]),'UserId':Number(_0xc52064['id'])});}});}})[_0xf110('0x50')](function(_0x493060){_0x2558c5[_0xf110('0x51')](_0x493060);});}}function onDisconnect(_0x4b759a,_0x16cdcf){joinOrLeave(_0x4b759a,_0xf110('0x44'),_0x16cdcf);}function onConnect(_0x5aa8c5){joinOrLeave(_0x5aa8c5,_0xf110('0x52'));}exports[_0xf110('0x53')]=function(_0x4e0e60){_0x4e0e60['on'](_0xf110('0x54'),function(_0x58c397){_0x58c397[_0xf110('0x55')](0x0);_0x58c397[_0xf110('0x56')]=_0x58c397[_0xf110('0x57')][_0xf110('0x54')][_0xf110('0x58')]+':'+_0x58c397['request']['connection']['remotePort'];_0x58c397[_0xf110('0x59')]=new Date();_0x58c397[_0xf110('0x51')]=function(_0x34b670){console[_0xf110('0x51')](_0xf110('0x5a')+_0x58c397['nsp'][_0xf110('0x2')]+'['+_0x58c397[_0xf110('0x56')]+']',_0x34b670);};_0x58c397['on'](_0xf110('0x5b'),function(){onDisconnect(_0x58c397,_0x4e0e60);_0x58c397[_0xf110('0x51')](_0xf110('0x5c'));});onConnect(_0x58c397);_0x58c397[_0xf110('0x51')](_0xf110('0x5d'));});};
\ No newline at end of file
+var _0x6c14=['request','connectedAt','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','Agents','User','name','agent','telephone','type','ivr','UserProfileSection','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','role','Campaign','%s:queue:%s','length','format','user:%s','handshake','query','find','userProfileId','MailInteraction','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','voice:inbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','OpenchannelQueue','WhatsappQueue','user','voice:outbound','VoiceQueues','VoiceQueue','SmsQueue','OpenchannelQueues','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','fax','sms','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','ChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','join','default','connection','setMaxListeners'];(function(_0x247f45,_0x3cc889){var _0x400dae=function(_0x276354){while(--_0x276354){_0x247f45['push'](_0x247f45['shift']());}};_0x400dae(++_0x3cc889);}(_0x6c14,0xd1));var _0x46c1=function(_0x13cf70,_0x1ccfc7){_0x13cf70=_0x13cf70-0x0;var _0x50a500=_0x6c14[_0x13cf70];return _0x50a500;};'use strict';var _=require(_0x46c1('0x0'));var util=require(_0x46c1('0x1'));var BPromise=require(_0x46c1('0x2'));var db=require(_0x46c1('0x3'))['db'];var config=require(_0x46c1('0x4'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x46c1('0x5'),'model':db[_0x46c1('0x6')],'attributes':['id',_0x46c1('0x7'),'role'],'raw':!![],'where':{'role':_0x46c1('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x46c1('0x7')],'where':{'role':_0x46c1('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x46c1('0x7')]};var queryAgents={'raw':!![],'attributes':['id',_0x46c1('0x7')],'where':{'role':_0x46c1('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x46c1('0x7'),_0x46c1('0xa')],'where':{'type':_0x46c1('0xb')}};function getAssociatedResources(_0x5d0018,_0x3ba837,_0x5f5b75){return db[_0x46c1('0xc')]['findOne']({'where':{'name':_0x5d0018,'userProfileId':_0x3ba837},'raw':!![]})[_0x46c1('0xd')](function(_0x3676e3){if(_0x3676e3){if(_0x3676e3[_0x46c1('0xe')]){switch(_0x5d0018){case'VoiceQueues':case _0x46c1('0xf'):case _0x46c1('0x10'):case _0x46c1('0x11'):case _0x46c1('0x12'):case'OpenchannelQueues':case _0x46c1('0x13'):return db[_0x5f5b75][_0x46c1('0x14')](queryQueues);case'Telephones':return db[_0x5f5b75]['findAll'](queryTelephones);case _0x46c1('0x15'):return db[_0x5f5b75][_0x46c1('0x14')](queryTrunks);case _0x46c1('0x16'):return db[_0x5f5b75][_0x46c1('0x14')](queryCampaigns);}}else{return db[_0x46c1('0x17')]['findAll']({'attributes':[_0x46c1('0x18')],'where':{'sectionId':_0x3676e3['id']},'raw':!![]})[_0x46c1('0xd')](function(_0x221905){if(_0x221905){var _0x414a3f={'where':{'id':_[_0x46c1('0x19')](_0x221905,'resourceId')},'raw':!![]};switch(_0x5f5b75){case'User':_0x414a3f[_0x46c1('0x1a')][_0x46c1('0x1b')]=_0x46c1('0x9');break;case _0x46c1('0x1c'):_0x414a3f[_0x46c1('0x1a')][_0x46c1('0xa')]=_0x46c1('0xb');break;}return db[_0x5f5b75]['findAll'](_0x414a3f);}else{return[];}});}}else{return[];}})[_0x46c1('0xd')](function(_0x20e3e2){return _0x20e3e2;});}function joinOrLeaveQueues(_0x537a9d,_0x50a76c,_0x17ff1d,_0x5a5d95){_0x537a9d[_0x50a76c](util['format'](_0x46c1('0x1d'),_0x17ff1d,_0x5a5d95[_0x46c1('0x7')]));if(_0x5a5d95[_0x46c1('0x5')]){for(var _0x261c6d=0x0;_0x261c6d<_0x5a5d95[_0x46c1('0x5')][_0x46c1('0x1e')];_0x261c6d+=0x1){_0x537a9d[_0x50a76c](util[_0x46c1('0x1f')](_0x46c1('0x20'),_0x5a5d95[_0x46c1('0x5')][_0x261c6d][_0x46c1('0x7')]));}}}function joinOrLeave(_0x473514,_0x217c2c,_0x12ce45){var _0x712eb8;if(_0x473514[_0x46c1('0x21')][_0x46c1('0x22')]['id']){db[_0x46c1('0x6')][_0x46c1('0x23')]({'attributes':['id',_0x46c1('0x7'),_0x46c1('0x1b'),_0x46c1('0x24')],'where':{'id':_0x473514[_0x46c1('0x21')][_0x46c1('0x22')]['id']},'include':[{'model':db['ChatInteraction'],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x46c1('0x25')],'as':_0x46c1('0x26'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x46c1('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x46c1('0x28')],'as':_0x46c1('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x46c1('0x2a')],'as':_0x46c1('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x46c1('0x2c')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x46c1('0xd')](function(_0x4475f7){if(_0x4475f7){_0x712eb8=_0x4475f7;_0x473514[_0x217c2c](util[_0x46c1('0x1f')](_0x46c1('0x20'),_0x4475f7[_0x46c1('0x7')]));var _0x15e48d=[];switch(_0x4475f7[_0x46c1('0x1b')]){case'admin':_0x473514[_0x217c2c](_0x46c1('0x2d'));_0x473514[_0x217c2c]('voice:outbound');if(queryQueues[_0x46c1('0x2e')](_0x46c1('0x2f'))){delete queryQueues[_0x46c1('0x2f')];}_0x15e48d[_0x46c1('0x30')](db['VoiceQueue']['findAll'](queryQueues));_0x15e48d[_0x46c1('0x30')](db[_0x46c1('0x31')]['findAll'](queryQueues));_0x15e48d[_0x46c1('0x30')](db[_0x46c1('0x32')][_0x46c1('0x14')](queryQueues));_0x15e48d[_0x46c1('0x30')](db['SmsQueue'][_0x46c1('0x14')](queryQueues));_0x15e48d[_0x46c1('0x30')](db['MailQueue'][_0x46c1('0x14')](queryQueues));_0x15e48d['push'](db[_0x46c1('0x33')][_0x46c1('0x14')](queryQueues));_0x15e48d[_0x46c1('0x30')](db[_0x46c1('0x34')][_0x46c1('0x14')](queryQueues));_0x15e48d[_0x46c1('0x30')](db['User']['findAll'](queryTelephones));_0x15e48d[_0x46c1('0x30')](db['Trunk'][_0x46c1('0x14')](queryTrunks));_0x15e48d['push'](db['Campaign'][_0x46c1('0x14')](queryCampaigns));_0x15e48d[_0x46c1('0x30')](db[_0x46c1('0x6')]['findAll'](queryAgents));break;case _0x46c1('0x35'):_0x473514[_0x217c2c](_0x46c1('0x2d'));_0x473514[_0x217c2c](_0x46c1('0x36'));_0x15e48d['push'](getAssociatedResources(_0x46c1('0x37'),_0x4475f7[_0x46c1('0x24')],_0x46c1('0x38')));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0xf'),_0x4475f7[_0x46c1('0x24')],_0x46c1('0x31')));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0x10'),_0x4475f7['userProfileId'],_0x46c1('0x32')));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0x11'),_0x4475f7[_0x46c1('0x24')],_0x46c1('0x39')));_0x15e48d[_0x46c1('0x30')](getAssociatedResources('MailQueues',_0x4475f7[_0x46c1('0x24')],'MailQueue'));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0x3a'),_0x4475f7[_0x46c1('0x24')],'OpenchannelQueue'));_0x15e48d[_0x46c1('0x30')](getAssociatedResources('WhatsappQueues',_0x4475f7[_0x46c1('0x24')],_0x46c1('0x34')));_0x15e48d['push'](getAssociatedResources('Telephones',_0x4475f7[_0x46c1('0x24')],'User'));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0x15'),_0x4475f7[_0x46c1('0x24')],'Trunk'));_0x15e48d[_0x46c1('0x30')](getAssociatedResources(_0x46c1('0x16'),_0x4475f7['userProfileId'],_0x46c1('0x1c')));_0x15e48d[_0x46c1('0x30')](db['User']['findAll'](queryAgents));break;case _0x46c1('0x8'):_0x473514[_0x217c2c]('voice:inbound');_0x473514[_0x217c2c](_0x46c1('0x36'));_0x15e48d[_0x46c1('0x30')](_0x4475f7[_0x46c1('0x3b')]({'attributes':['id',_0x46c1('0x7')]}));_0x15e48d['push'](_0x4475f7['getChatQueues']({'attributes':['id',_0x46c1('0x7')]}));_0x15e48d[_0x46c1('0x30')](_0x4475f7[_0x46c1('0x3c')]({'attributes':['id',_0x46c1('0x7')]}));_0x15e48d['push'](_0x4475f7[_0x46c1('0x3d')]({'attributes':['id','name']}));_0x15e48d['push'](_0x4475f7[_0x46c1('0x3e')]({'attributes':['id',_0x46c1('0x7')]}));_0x15e48d['push'](_0x4475f7[_0x46c1('0x3f')]({'attributes':['id',_0x46c1('0x7')]}));_0x15e48d[_0x46c1('0x30')](_0x4475f7[_0x46c1('0x40')]({'attributes':['id',_0x46c1('0x7')]}));break;}return BPromise[_0x46c1('0x41')](_0x15e48d);}})['then'](function(_0x163962){if(_0x163962&&_0x163962[_0x46c1('0x1e')]){for(var _0x11e092=0x0;_0x11e092<_0x163962[_0x46c1('0x1e')];_0x11e092+=0x1){for(var _0x49fcc1=0x0;_0x49fcc1<_0x163962[_0x11e092][_0x46c1('0x1e')];_0x49fcc1+=0x1){switch(_0x11e092){case 0x0:joinOrLeaveQueues(_0x473514,_0x217c2c,_0x46c1('0x42'),_0x163962[_0x11e092][_0x49fcc1]);break;case 0x1:joinOrLeaveQueues(_0x473514,_0x217c2c,'chat',_0x163962[_0x11e092][_0x49fcc1]);break;case 0x2:joinOrLeaveQueues(_0x473514,_0x217c2c,_0x46c1('0x43'),_0x163962[_0x11e092][_0x49fcc1]);break;case 0x3:joinOrLeaveQueues(_0x473514,_0x217c2c,_0x46c1('0x44'),_0x163962[_0x11e092][_0x49fcc1]);break;case 0x4:joinOrLeaveQueues(_0x473514,_0x217c2c,'mail',_0x163962[_0x11e092][_0x49fcc1]);break;case 0x5:joinOrLeaveQueues(_0x473514,_0x217c2c,'openchannel',_0x163962[_0x11e092][_0x49fcc1]);break;case 0x6:joinOrLeaveQueues(_0x473514,_0x217c2c,_0x46c1('0x45'),_0x163962[_0x11e092][_0x49fcc1]);break;case 0x7:if(_0x712eb8[_0x46c1('0x1b')]!==_0x46c1('0x8'))_0x473514[_0x217c2c](util['format'](_0x46c1('0x46'),_0x163962[_0x11e092][_0x49fcc1][_0x46c1('0x7')]));break;case 0x8:if(_0x712eb8[_0x46c1('0x1b')]!=='agent')_0x473514[_0x217c2c](util[_0x46c1('0x1f')](_0x46c1('0x47'),_0x163962[_0x11e092][_0x49fcc1][_0x46c1('0x7')]));break;case 0x9:if(_0x712eb8[_0x46c1('0x1b')]!==_0x46c1('0x8'))_0x473514[_0x217c2c](util[_0x46c1('0x1f')](_0x46c1('0x48'),_0x163962[_0x11e092][_0x49fcc1][_0x46c1('0xa')],_0x163962[_0x11e092][_0x49fcc1][_0x46c1('0x7')]));break;case 0xa:_0x473514[_0x217c2c](util[_0x46c1('0x1f')](_0x46c1('0x20'),_0x163962[_0x11e092][_0x49fcc1][_0x46c1('0x7')]));break;}}}}})[_0x46c1('0xd')](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x23f838=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x4a')],'id');return _0x712eb8['removeChatInteractions'](_0x23f838)[_0x46c1('0xd')](function(){for(var _0x2e7037=0x0;_0x2e7037<_0x23f838[_0x46c1('0x1e')];_0x2e7037+=0x1){_0x12ce45[_0x46c1('0x4b')](_0x46c1('0x4c'),{'ChatInteractionId':Number(_0x23f838[_0x2e7037]),'UserId':Number(_0x712eb8['id'])});}});}})[_0x46c1('0xd')](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x4de56f=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x26')],'id');return _0x712eb8[_0x46c1('0x4d')](_0x4de56f)[_0x46c1('0xd')](function(){for(var _0xe90960=0x0;_0xe90960<_0x4de56f[_0x46c1('0x1e')];_0xe90960+=0x1){_0x12ce45[_0x46c1('0x4b')](_0x46c1('0x4e'),{'MailInteractionId':Number(_0x4de56f[_0xe90960]),'UserId':Number(_0x712eb8['id'])});}});}})['then'](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x52df7b=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x27')],'id');return _0x712eb8[_0x46c1('0x4f')](_0x52df7b)['then'](function(){for(var _0x10590b=0x0;_0x10590b<_0x52df7b[_0x46c1('0x1e')];_0x10590b+=0x1){_0x12ce45[_0x46c1('0x4b')](_0x46c1('0x50'),{'FaxInteractionId':Number(_0x52df7b[_0x10590b]),'UserId':Number(_0x712eb8['id'])});}});}})[_0x46c1('0xd')](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x22c18c=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x29')],'id');return _0x712eb8[_0x46c1('0x51')](_0x22c18c)[_0x46c1('0xd')](function(){for(var _0x551a0f=0x0;_0x551a0f<_0x22c18c[_0x46c1('0x1e')];_0x551a0f+=0x1){_0x12ce45[_0x46c1('0x4b')](_0x46c1('0x52'),{'SmsInteractionId':Number(_0x22c18c[_0x551a0f]),'UserId':Number(_0x712eb8['id'])});}});}})[_0x46c1('0xd')](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x54f357=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x2b')],'id');return _0x712eb8['removeOpenchannelInteractions'](_0x54f357)[_0x46c1('0xd')](function(){for(var _0x55ad79=0x0;_0x55ad79<_0x54f357[_0x46c1('0x1e')];_0x55ad79+=0x1){_0x12ce45[_0x46c1('0x4b')](_0x46c1('0x53'),{'OpenchannelInteractionId':Number(_0x54f357[_0x55ad79]),'UserId':Number(_0x712eb8['id'])});}});}})[_0x46c1('0xd')](function(){if(_0x217c2c===_0x46c1('0x49')){var _0x5a3a43=_[_0x46c1('0x19')](_0x712eb8[_0x46c1('0x54')],'id');return _0x712eb8[_0x46c1('0x55')](_0x5a3a43)[_0x46c1('0xd')](function(){for(var _0x498dc7=0x0;_0x498dc7<_0x5a3a43[_0x46c1('0x1e')];_0x498dc7+=0x1){_0x12ce45['emit'](_0x46c1('0x56'),{'WhatsappInteractionId':Number(_0x5a3a43[_0x498dc7]),'UserId':Number(_0x712eb8['id'])});}});}})['catch'](function(_0x190f48){_0x473514['log'](_0x190f48);});}}function onDisconnect(_0x3cdd1e,_0xc52ca6){joinOrLeave(_0x3cdd1e,'leave',_0xc52ca6);}function onConnect(_0x2dc78a){joinOrLeave(_0x2dc78a,_0x46c1('0x57'));}exports[_0x46c1('0x58')]=function(_0x321a6b){_0x321a6b['on'](_0x46c1('0x59'),function(_0x573747){_0x573747[_0x46c1('0x5a')](0x0);_0x573747['address']=_0x573747[_0x46c1('0x5b')][_0x46c1('0x59')]['remoteAddress']+':'+_0x573747['request'][_0x46c1('0x59')]['remotePort'];_0x573747[_0x46c1('0x5c')]=new Date();_0x573747[_0x46c1('0x5d')]=function(_0x2311f2){console[_0x46c1('0x5d')](_0x46c1('0x5e')+_0x573747[_0x46c1('0x5f')][_0x46c1('0x7')]+'['+_0x573747[_0x46c1('0x60')]+']',_0x2311f2);};_0x573747['on'](_0x46c1('0x61'),function(){onDisconnect(_0x573747,_0x321a6b);_0x573747[_0x46c1('0x5d')](_0x46c1('0x62'));});onConnect(_0x573747);_0x573747[_0x46c1('0x5d')](_0x46c1('0x63'));});};
\ No newline at end of file
index 5dd7074..9eb258b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf09d=['Chat','ChatInteraction','afterCreate','newinteraction','closedinteraction','ChatMessage','newmessage','Sms','SmsInteraction','afterUpdate','SmsMessage','WhatsappInteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','then','Trigger,\x20%s','error','code','channel','motionChannel','event','ContactId','query','Sequelize','QueryTypes','SELECT','UserId','User','name','fullname','email','format','SIP/%s','agent','incomingmessage','catch','outgoingmessage','get','sequelize','contact','closed','changed','substatus','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','find','internal','interface','default','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','jayson/promise','../logger','triggers','client','http'];(function(_0x4434f7,_0x431595){var _0x364db2=function(_0x4fee17){while(--_0x4fee17){_0x4434f7['push'](_0x4434f7['shift']());}};_0x364db2(++_0x431595);}(_0xf09d,0x88));var _0xdf09=function(_0x2300c7,_0x255f74){_0x2300c7=_0x2300c7-0x0;var _0x23f720=_0xf09d[_0x2300c7];return _0x23f720;};'use strict';var util=require(_0xdf09('0x0'));var db=require('../../mysqldb')['db'];var jayson=require(_0xdf09('0x1'));var logger=require(_0xdf09('0x2'))(_0xdf09('0x3'));var _=require('lodash');var client=jayson[_0xdf09('0x4')][_0xdf09('0x5')]({'port':0x232a});var triggers=[{'channel':_0xdf09('0x6'),'model':_0xdf09('0x7'),'event':_0xdf09('0x8'),'condition':_0xdf09('0x9'),'callback':afterCreate},{'channel':_0xdf09('0x6'),'model':_0xdf09('0x7'),'event':'afterUpdate','condition':_0xdf09('0xa'),'callback':afterUpdate},{'channel':_0xdf09('0x6'),'model':_0xdf09('0xb'),'event':_0xdf09('0x8'),'condition':_0xdf09('0xc'),'callback':afterCreateMessage},{'channel':_0xdf09('0xd'),'model':_0xdf09('0xe'),'event':'afterCreate','condition':_0xdf09('0x9'),'callback':afterCreate},{'channel':_0xdf09('0xd'),'model':'SmsInteraction','event':_0xdf09('0xf'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xdf09('0xd'),'model':_0xdf09('0x10'),'event':_0xdf09('0x8'),'condition':_0xdf09('0xc'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0xdf09('0x11'),'event':_0xdf09('0x8'),'condition':_0xdf09('0x9'),'callback':afterCreate},{'channel':_0xdf09('0x12'),'model':_0xdf09('0x11'),'event':_0xdf09('0xf'),'condition':_0xdf09('0xa'),'callback':afterUpdate},{'channel':_0xdf09('0x12'),'model':_0xdf09('0x13'),'event':_0xdf09('0x8'),'condition':_0xdf09('0xc'),'callback':afterCreateMessage},{'channel':_0xdf09('0x14'),'model':_0xdf09('0x15'),'event':_0xdf09('0x8'),'condition':_0xdf09('0x9'),'callback':afterCreate},{'channel':_0xdf09('0x14'),'model':'FaxInteraction','event':_0xdf09('0xf'),'condition':_0xdf09('0xa'),'callback':afterUpdate},{'channel':_0xdf09('0x14'),'model':_0xdf09('0x16'),'event':_0xdf09('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xdf09('0x17'),'model':'MailInteraction','event':_0xdf09('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xdf09('0x17'),'model':_0xdf09('0x18'),'event':_0xdf09('0xf'),'condition':_0xdf09('0xa'),'callback':afterUpdate},{'channel':_0xdf09('0x17'),'model':_0xdf09('0x19'),'event':_0xdf09('0x8'),'condition':_0xdf09('0xc'),'callback':afterCreateMessage},{'channel':_0xdf09('0x1a'),'model':_0xdf09('0x1b'),'event':_0xdf09('0x8'),'condition':_0xdf09('0x9'),'callback':afterCreate},{'channel':'Openchannel','model':_0xdf09('0x1b'),'event':_0xdf09('0xf'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xdf09('0x1a'),'model':'OpenchannelMessage','event':_0xdf09('0x8'),'condition':_0xdf09('0xc'),'callback':afterCreateMessage}];function request(_0x3e1ebb){return client[_0xdf09('0x1c')](_0xdf09('0x1d'),_0x3e1ebb)[_0xdf09('0x1e')](function(_0x3cbf7a){logger['info'](_0xdf09('0x1f'),_0xdf09('0x1d'),_0x3cbf7a);if(_0x3cbf7a['error']){if(_0x3cbf7a[_0xdf09('0x20')][_0xdf09('0x21')]===0x1f4){logger[_0xdf09('0x20')](_0xdf09('0x1f'),_0xdf09('0x1d'),_0x3cbf7a['error']);}}})['catch'](function(_0x517bb9){logger[_0xdf09('0x20')](_0xdf09('0x1f'),_0xdf09('0x1d'),_0x517bb9);});}function afterCreateMessage(_0x137901,_0x31415c){return function(_0x5053a1,_0x3ffb25){_0x5053a1=_0x5053a1['get']({'plain':!![]});_0x5053a1[_0xdf09('0x22')]=_0x137901;_0x5053a1[_0xdf09('0x23')]=_0x137901;_0x5053a1[_0xdf09('0x24')]=_0x5053a1['direction'];var _0x4252d3='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5053a1[_0xdf09('0x25')];return db['sequelize'][_0xdf09('0x26')](_0x4252d3,{'type':db[_0xdf09('0x27')][_0xdf09('0x28')][_0xdf09('0x29')],'raw':!![]})[_0xdf09('0x1e')](function(_0xea6f78){return _0xea6f78;})[_0xdf09('0x1e')](function(_0x5740aa){if(_0x5740aa){_0x5053a1['contact']=_0x5740aa[0x0];}if(_0x5053a1[_0xdf09('0x2a')]){return db[_0xdf09('0x2b')]['find']({'where':{'id':_0x5053a1[_0xdf09('0x2a')]},'attributes':['id',_0xdf09('0x2c'),_0xdf09('0x2d'),_0xdf09('0x2e'),'internal'],'raw':!![]})[_0xdf09('0x1e')](function(_0x5cd2f6){_0x5053a1['interface']=util[_0xdf09('0x2f')](_0xdf09('0x30'),_0x5cd2f6[_0xdf09('0x2c')]);_0x5053a1[_0xdf09('0x22')]=_0x137901;_0x5053a1[_0xdf09('0x31')]=_0x5cd2f6;return request({'event':_0xdf09('0x32'),'message':_0x5053a1});})[_0xdf09('0x33')](function(_0x3d2132){console['error'](_0x3d2132);});}else{return request({'event':_0xdf09('0x34'),'message':_0x5053a1});}});};}function afterCreate(_0x1cdefc,_0x3c741e){return function(_0x3c7d05,_0xf9997f){_0x3c7d05=_0x3c7d05[_0xdf09('0x35')]({'plain':!![]});_0x3c7d05['channel']=_0x1cdefc;_0x3c7d05[_0xdf09('0x23')]=_0x1cdefc;_0x3c7d05[_0xdf09('0x24')]='opened';var _0x2c672b='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3c7d05[_0xdf09('0x25')];return db[_0xdf09('0x36')][_0xdf09('0x26')](_0x2c672b,{'type':db[_0xdf09('0x27')]['QueryTypes'][_0xdf09('0x29')],'raw':!![]})[_0xdf09('0x1e')](function(_0x5d5f64){return _0x5d5f64;})['then'](function(_0x547d7d){if(_0x547d7d){_0x3c7d05[_0xdf09('0x37')]=_0x547d7d[0x0];}return request({'event':_0x3c741e,'message':_0x3c7d05});});};}function afterUpdate(_0x374e5a){return function(_0x12ff87){var _0x5c5076=_0x12ff87['changed']('closed')&&_0x12ff87[_0xdf09('0x38')];var _0x20efd9=_0x12ff87[_0xdf09('0x39')](_0xdf09('0x3a'));if(_0x5c5076||_0x20efd9){var _0x46b8ac=_0x5c5076?'closedinteraction':_0xdf09('0x3a');var _0x28208a=_0x12ff87[_0xdf09('0x35')]({'plain':!![]});_0x28208a[_0xdf09('0x22')]=_0x374e5a;_0x28208a[_0xdf09('0x23')]=_0x374e5a;_0x28208a[_0xdf09('0x24')]=_0x5c5076?_0xdf09('0x38'):_0xdf09('0x3a');var _0xc665b6=_0xdf09('0x3b')+_0x28208a['ContactId'];return db[_0xdf09('0x36')]['query'](_0xc665b6,{'type':db[_0xdf09('0x27')]['QueryTypes'][_0xdf09('0x29')],'raw':!![]})['then'](function(_0x19f294){if(_0x19f294){_0x28208a[_0xdf09('0x37')]=_0x19f294[0x0];}if(_0x28208a['UserId']){return db[_0xdf09('0x2b')][_0xdf09('0x3c')]({'where':{'id':_0x28208a['UserId']},'attributes':['id',_0xdf09('0x2c'),_0xdf09('0x2d'),'email',_0xdf09('0x3d')],'raw':!![]})[_0xdf09('0x1e')](function(_0x412595){_0x28208a[_0xdf09('0x3e')]=util[_0xdf09('0x2f')](_0xdf09('0x30'),_0x412595[_0xdf09('0x2c')]);_0x28208a[_0xdf09('0x31')]=_0x412595;return request({'event':_0x46b8ac,'message':_0x28208a});})[_0xdf09('0x33')](function(_0x1bc599){console['error'](_0x1bc599);});}else{return request({'event':_0x46b8ac,'message':_0x28208a});}});}};}exports[_0xdf09('0x3f')]=function(){for(var _0x16a7dd=0x0;_0x16a7dd<triggers[_0xdf09('0x40')];_0x16a7dd+=0x1){if(db[_0xdf09('0x41')](triggers[_0x16a7dd][_0xdf09('0x42')])){db[triggers[_0x16a7dd][_0xdf09('0x42')]][_0xdf09('0x43')](triggers[_0x16a7dd][_0xdf09('0x24')],triggers[_0x16a7dd][_0xdf09('0x44')](triggers[_0x16a7dd][_0xdf09('0x22')][_0xdf09('0x45')](),triggers[_0x16a7dd][_0xdf09('0x46')]));}}};
\ No newline at end of file
+var _0xa267=['ContactId','sequelize','Sequelize','QueryTypes','contact','UserId','User','find','name','fullname','email','internal','interface','format','SIP/%s','agent','incomingmessage','opened','SELECT','changed','closed','query','default','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../logger','triggers','lodash','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','ChatMessage','newmessage','Sms','SmsInteraction','closedinteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','Trigger,\x20%s','error','code','catch','get','channel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa267,0xf0));var _0x7a26=function(_0xfbe810,_0x40c59c){_0xfbe810=_0xfbe810-0x0;var _0x5804ef=_0xa267[_0xfbe810];return _0x5804ef;};'use strict';var util=require(_0x7a26('0x0'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var logger=require(_0x7a26('0x1'))(_0x7a26('0x2'));var _=require(_0x7a26('0x3'));var client=jayson['client'][_0x7a26('0x4')]({'port':0x232a});var triggers=[{'channel':_0x7a26('0x5'),'model':_0x7a26('0x6'),'event':_0x7a26('0x7'),'condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':_0x7a26('0x5'),'model':_0x7a26('0x6'),'event':_0x7a26('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x7a26('0x5'),'model':_0x7a26('0xa'),'event':'afterCreate','condition':_0x7a26('0xb'),'callback':afterCreateMessage},{'channel':_0x7a26('0xc'),'model':_0x7a26('0xd'),'event':'afterCreate','condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':'Sms','model':_0x7a26('0xd'),'event':_0x7a26('0x9'),'condition':_0x7a26('0xe'),'callback':afterUpdate},{'channel':'Sms','model':_0x7a26('0xf'),'event':_0x7a26('0x7'),'condition':_0x7a26('0xb'),'callback':afterCreateMessage},{'channel':_0x7a26('0x10'),'model':_0x7a26('0x11'),'event':_0x7a26('0x7'),'condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':_0x7a26('0x10'),'model':_0x7a26('0x11'),'event':_0x7a26('0x9'),'condition':_0x7a26('0xe'),'callback':afterUpdate},{'channel':'Whatsapp','model':_0x7a26('0x12'),'event':_0x7a26('0x7'),'condition':_0x7a26('0xb'),'callback':afterCreateMessage},{'channel':_0x7a26('0x13'),'model':_0x7a26('0x14'),'event':_0x7a26('0x7'),'condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':'Fax','model':_0x7a26('0x14'),'event':_0x7a26('0x9'),'condition':_0x7a26('0xe'),'callback':afterUpdate},{'channel':'Fax','model':_0x7a26('0x15'),'event':_0x7a26('0x7'),'condition':_0x7a26('0xb'),'callback':afterCreateMessage},{'channel':_0x7a26('0x16'),'model':_0x7a26('0x17'),'event':'afterCreate','condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':'Mail','model':'MailInteraction','event':_0x7a26('0x9'),'condition':_0x7a26('0xe'),'callback':afterUpdate},{'channel':'Mail','model':_0x7a26('0x18'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0x7a26('0x19'),'model':_0x7a26('0x1a'),'event':_0x7a26('0x7'),'condition':_0x7a26('0x8'),'callback':afterCreate},{'channel':'Openchannel','model':'OpenchannelInteraction','event':_0x7a26('0x9'),'condition':_0x7a26('0xe'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x7a26('0x1b'),'event':_0x7a26('0x7'),'condition':_0x7a26('0xb'),'callback':afterCreateMessage}];function request(_0x577397){return client[_0x7a26('0x1c')](_0x7a26('0x1d'),_0x577397)[_0x7a26('0x1e')](function(_0x368900){logger['info'](_0x7a26('0x1f'),_0x7a26('0x1d'),_0x368900);if(_0x368900['error']){if(_0x368900[_0x7a26('0x20')][_0x7a26('0x21')]===0x1f4){logger[_0x7a26('0x20')](_0x7a26('0x1f'),_0x7a26('0x1d'),_0x368900[_0x7a26('0x20')]);}}})[_0x7a26('0x22')](function(_0x249300){logger[_0x7a26('0x20')]('Trigger,\x20%s',_0x7a26('0x1d'),_0x249300);});}function afterCreateMessage(_0x292b6d,_0x434809){return function(_0x180752,_0x2b7050){_0x180752=_0x180752[_0x7a26('0x23')]({'plain':!![]});_0x180752[_0x7a26('0x24')]=_0x292b6d;_0x180752[_0x7a26('0x25')]=_0x180752[_0x7a26('0x26')];var _0x3390c6=_0x7a26('0x27')+_0x180752[_0x7a26('0x28')];return db[_0x7a26('0x29')]['query'](_0x3390c6,{'type':db[_0x7a26('0x2a')][_0x7a26('0x2b')]['SELECT'],'raw':!![]})[_0x7a26('0x1e')](function(_0x56b0ec){return _0x56b0ec;})['then'](function(_0x65cf47){if(_0x65cf47){_0x180752[_0x7a26('0x2c')]=_0x65cf47[0x0];}if(_0x180752[_0x7a26('0x2d')]){return db[_0x7a26('0x2e')][_0x7a26('0x2f')]({'where':{'id':_0x180752[_0x7a26('0x2d')]},'attributes':['id',_0x7a26('0x30'),_0x7a26('0x31'),_0x7a26('0x32'),_0x7a26('0x33')],'raw':!![]})[_0x7a26('0x1e')](function(_0x43d04f){_0x180752[_0x7a26('0x34')]=util[_0x7a26('0x35')](_0x7a26('0x36'),_0x43d04f['name']);_0x180752[_0x7a26('0x24')]=_0x292b6d;_0x180752[_0x7a26('0x37')]=_0x43d04f;return request({'event':_0x7a26('0x38'),'message':_0x180752});})[_0x7a26('0x22')](function(_0x2c37a9){console['error'](_0x2c37a9);});}else{return request({'event':'outgoingmessage','message':_0x180752});}});};}function afterCreate(_0x1fdc81,_0x232509){return function(_0x1e7902,_0x29cbfe){_0x1e7902=_0x1e7902['get']({'plain':!![]});_0x1e7902[_0x7a26('0x24')]=_0x1fdc81;_0x1e7902[_0x7a26('0x25')]=_0x7a26('0x39');var _0x32b1bb=_0x7a26('0x27')+_0x1e7902['ContactId'];return db[_0x7a26('0x29')]['query'](_0x32b1bb,{'type':db[_0x7a26('0x2a')][_0x7a26('0x2b')][_0x7a26('0x3a')],'raw':!![]})['then'](function(_0x2f1231){return _0x2f1231;})['then'](function(_0xae0d07){if(_0xae0d07){_0x1e7902[_0x7a26('0x2c')]=_0xae0d07[0x0];}return request({'event':_0x232509,'message':_0x1e7902});});};}function afterUpdate(_0x51ce1b,_0xe1d77f){return function(_0x54b6f8,_0x3cb770){if(_0x54b6f8[_0x7a26('0x3b')]('closed')&&_0x54b6f8[_0x7a26('0x3c')]){_0x54b6f8=_0x54b6f8[_0x7a26('0x23')]({'plain':!![]});_0x54b6f8[_0x7a26('0x24')]=_0x51ce1b;_0x54b6f8['event']=_0x7a26('0x3c');var _0x27e3c6=_0x7a26('0x27')+_0x54b6f8[_0x7a26('0x28')];return db[_0x7a26('0x29')][_0x7a26('0x3d')](_0x27e3c6,{'type':db['Sequelize']['QueryTypes'][_0x7a26('0x3a')],'raw':!![]})[_0x7a26('0x1e')](function(_0x44ba20){return _0x44ba20;})[_0x7a26('0x1e')](function(_0x29cd8d){if(_0x29cd8d){_0x54b6f8[_0x7a26('0x2c')]=_0x29cd8d[0x0];}if(_0x54b6f8[_0x7a26('0x2d')]){return db[_0x7a26('0x2e')]['find']({'where':{'id':_0x54b6f8[_0x7a26('0x2d')]},'attributes':['id',_0x7a26('0x30'),_0x7a26('0x31'),_0x7a26('0x32'),_0x7a26('0x33')],'raw':!![]})['then'](function(_0x188d40){_0x54b6f8['interface']=util[_0x7a26('0x35')]('SIP/%s',_0x188d40[_0x7a26('0x30')]);_0x54b6f8[_0x7a26('0x37')]=_0x188d40;return request({'event':_0xe1d77f,'message':_0x54b6f8});})['catch'](function(_0x370085){console[_0x7a26('0x20')](_0x370085);});}else{return request({'event':_0xe1d77f,'message':_0x54b6f8});}});}};}exports[_0x7a26('0x3e')]=function(){for(var _0x4d1c3a=0x0;_0x4d1c3a<triggers[_0x7a26('0x3f')];_0x4d1c3a+=0x1){if(db[_0x7a26('0x40')](triggers[_0x4d1c3a][_0x7a26('0x41')])){db[triggers[_0x4d1c3a][_0x7a26('0x41')]][_0x7a26('0x42')](triggers[_0x4d1c3a][_0x7a26('0x25')],triggers[_0x4d1c3a][_0x7a26('0x43')](triggers[_0x4d1c3a]['channel'][_0x7a26('0x44')](),triggers[_0x4d1c3a][_0x7a26('0x45')]));}}};
\ No newline at end of file
index 0d3a4dd..0f96f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3ca=['sms','whatsapp','openchannel','getChannels','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','../mysqldb','voice','mail','chat','fax'];(function(_0x3e8005,_0x512ba9){var _0x24af1b=function(_0x56e859){while(--_0x56e859){_0x3e8005['push'](_0x3e8005['shift']());}};_0x24af1b(++_0x512ba9);}(_0xc3ca,0x7e));var _0xac3c=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xc3ca[_0x36884e];return _0x1cc367;};'use strict';var _=require(_0xac3c('0x0'));var BPromise=require('bluebird');var db=require(_0xac3c('0x1'))['db'];var util=require('./license/util');var channels=[_0xac3c('0x2'),_0xac3c('0x3'),_0xac3c('0x4'),_0xac3c('0x5'),_0xac3c('0x6'),_0xac3c('0x7'),_0xac3c('0x8')];exports[_0xac3c('0x9')]=function(){return channels;};exports['isValidChannel']=function(_0x507587){_0x507587=_0x507587['toLowerCase']();return _[_0xac3c('0xa')](channels,_0x507587);};exports[_0xac3c('0xb')]=function(_0x1dc55d,_0x274c8c,_0x200340,_0x28cbaf){var _0x53d7e0={'loginAttempts':_0x274c8c,'blocked':_0x200340};if(!_[_0xac3c('0xc')](_0x28cbaf)){_0x53d7e0[_0xac3c('0xd')]=_0x28cbaf;}return _0x1dc55d[_0xac3c('0xe')](_0x53d7e0);};exports[_0xac3c('0xf')]=function(_0x4f5c50){return new BPromise(function(_0x4d0156,_0x3ef9e3){var _0x34a48d=0x0;if(_0x4f5c50[_0xac3c('0x10')]!==_0xac3c('0x11')){_0x4d0156(_0x4f5c50);}db['User']['count']({'where':{'role':'agent','online':!![],'id':{'$ne':_0x4f5c50['id']}}})['then'](function(_0x1c3789){_0x34a48d=_0x1c3789;return util['getLicense']();})[_0xac3c('0x12')](function(_0x4397d6){if(_0x4397d6&&_0x4397d6[_0xac3c('0x13')]&&_0x34a48d>=_0x4397d6[_0xac3c('0x13')]){throw Error(_0xac3c('0x14'));}_0x4d0156(_0x4f5c50);})[_0xac3c('0x15')](function(_0x3715ed){_0x3ef9e3(_0x3715ed);});});};
\ No newline at end of file
+var _0xaa44=['then','agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','./license/util','chat','sms','whatsapp','getChannels','isValidChannel','toLowerCase','blockedAt','updateAttributes','getLicense','agent','User','count'];(function(_0x26df91,_0x52aba1){var _0x3993f8=function(_0x20c506){while(--_0x20c506){_0x26df91['push'](_0x26df91['shift']());}};_0x3993f8(++_0x52aba1);}(_0xaa44,0xd4));var _0x4aa4=function(_0x5107d8,_0x3f742a){_0x5107d8=_0x5107d8-0x0;var _0xb27fe7=_0xaa44[_0x5107d8];return _0xb27fe7;};'use strict';var _=require(_0x4aa4('0x0'));var BPromise=require(_0x4aa4('0x1'));var db=require(_0x4aa4('0x2'))['db'];var util=require(_0x4aa4('0x3'));var channels=['voice','mail',_0x4aa4('0x4'),'fax',_0x4aa4('0x5'),_0x4aa4('0x6'),'openchannel'];exports[_0x4aa4('0x7')]=function(){return channels;};exports[_0x4aa4('0x8')]=function(_0x39d79b){_0x39d79b=_0x39d79b[_0x4aa4('0x9')]();return _['includes'](channels,_0x39d79b);};exports['clearBlockUser']=function(_0x17ca63,_0x33673c,_0x4ffa2d,_0x45eb76){var _0x17edb8={'loginAttempts':_0x33673c,'blocked':_0x4ffa2d};if(!_['isUndefined'](_0x45eb76)){_0x17edb8[_0x4aa4('0xa')]=_0x45eb76;}return _0x17ca63[_0x4aa4('0xb')](_0x17edb8);};exports[_0x4aa4('0xc')]=function(_0x16b55a){return new BPromise(function(_0x2ebce1,_0x2cc5a5){var _0x4edcda=0x0;if(_0x16b55a['role']!==_0x4aa4('0xd')){_0x2ebce1(_0x16b55a);}db[_0x4aa4('0xe')][_0x4aa4('0xf')]({'where':{'role':_0x4aa4('0xd'),'online':!![],'id':{'$ne':_0x16b55a['id']}}})[_0x4aa4('0x10')](function(_0x233520){_0x4edcda=_0x233520;return util[_0x4aa4('0xc')]();})[_0x4aa4('0x10')](function(_0xae5e75){if(_0xae5e75&&_0xae5e75[_0x4aa4('0x11')]&&_0x4edcda>=_0xae5e75[_0x4aa4('0x11')]){throw Error(_0x4aa4('0x12'));}_0x2ebce1(_0x16b55a);})['catch'](function(_0x7a82ad){_0x2cc5a5(_0x7a82ad);});});};
\ No newline at end of file
index bb12e4f..154320f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2369=['status','render','send'];(function(_0x1d525d,_0x491998){var _0x135719=function(_0x2b0426){while(--_0x2b0426){_0x1d525d['push'](_0x1d525d['shift']());}};_0x135719(++_0x491998);}(_0x2369,0x1e6));var _0x9236=function(_0x56e6e9,_0x291627){_0x56e6e9=_0x56e6e9-0x0;var _0x5e3a01=_0x2369[_0x56e6e9];return _0x5e3a01;};'use strict';module['exports'][0x194]=function pageNotFound(_0x7482f1,_0xe44306){var _0x5dc818='404';var _0x5c31f5=0x194;var _0x49a1ef={'status':_0x5c31f5};_0xe44306[_0x9236('0x0')](_0x49a1ef[_0x9236('0x0')]);_0xe44306[_0x9236('0x1')](_0x5dc818,{},function(_0x35cb4a,_0x3e01b8){if(_0x35cb4a){return _0xe44306[_0x9236('0x0')](_0x49a1ef['status'])['json'](_0x49a1ef);}_0xe44306[_0x9236('0x2')](_0x3e01b8);});};
\ No newline at end of file
+var _0x557d=['status','json','send','exports'];(function(_0x3c1be6,_0x1649fd){var _0x42db4f=function(_0x390799){while(--_0x390799){_0x3c1be6['push'](_0x3c1be6['shift']());}};_0x42db4f(++_0x1649fd);}(_0x557d,0xcb));var _0xd557=function(_0x40eac7,_0x2144e6){_0x40eac7=_0x40eac7-0x0;var _0x1c304f=_0x557d[_0x40eac7];return _0x1c304f;};'use strict';module[_0xd557('0x0')][0x194]=function pageNotFound(_0x1b3a44,_0x157a69){var _0x103eb0='404';var _0x479f66=0x194;var _0x2ee354={'status':_0x479f66};_0x157a69[_0xd557('0x1')](_0x2ee354['status']);_0x157a69['render'](_0x103eb0,{},function(_0x479940,_0x7f3f34){if(_0x479940){return _0x157a69['status'](_0x2ee354[_0xd557('0x1')])[_0xd557('0x2')](_0x2ee354);}_0x157a69[_0xd557('0x3')](_0x7f3f34);});};
\ No newline at end of file
diff --git a/server/migrations/2.5.34.js b/server/migrations/2.5.34.js
deleted file mode 100644 (file)
index f7d42ec..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-'use strict';\r
-\r
-var BPromise = require('bluebird');\r
-var util = require('util');\r
-\r
-var logger = require('../config/logger')('migration');\r
-\r
-var Sequence = function() {};\r
-\r
-Sequence.prototype.enqueue = function(fn) {\r
-  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
-};\r
-\r
-var Migration = function(queryInterface) {\r
-  this.queryInterface = queryInterface;\r
-  this.sequence = new Sequence();\r
-};\r
-\r
-Migration.prototype.changeColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .changeColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Changed column %s in table %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Added column %s to %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.dropTable = function(table) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .dropTable(table, {\r
-        force: true\r
-      })\r
-      .then(function() {\r
-        logger.info('table dropped %s', table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addIndex = function(table, column, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addIndex(table, column, {\r
-        indexName: indexName\r
-      })\r
-      .then(function() {\r
-        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeIndex = function(table, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeIndex(table, indexName)\r
-      .then(function() {\r
-        logger.info('removeIndex %s %s', table, indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.query = function(sql) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface.sequelize\r
-      .query(sql)\r
-      .then(function() {\r
-        logger.info('query %s', sql);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeColumn = function(table, column) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeColumn(table, column)\r
-      .then(function() {\r
-        logger.info('Removed column %s from %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .renameColumn(table, oldColumn, newColumn)\r
-      .then(function() {\r
-        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.final = function(resolve) {\r
-  this.sequence.enqueue(function() {\r
-    return resolve();\r
-  });\r
-};\r
-\r
-module.exports = {\r
-  up: function(queryInterface, Sequelize) {\r
-    return new BPromise(function(resolve) {\r
-      var migration = new Migration(queryInterface);\r
-\r
-      // START FINAL\r
-      migration.final(resolve);\r
-      // END FINAL\r
-    });\r
-  },\r
-\r
-  down: function(queryInterface, Sequelize) {\r
-    // var migration = new Migration(queryInterface);\r
-  }\r
-};
\ No newline at end of file
diff --git a/server/migrations/2.5.35.js b/server/migrations/2.5.35.js
deleted file mode 100644 (file)
index f7d42ec..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-'use strict';\r
-\r
-var BPromise = require('bluebird');\r
-var util = require('util');\r
-\r
-var logger = require('../config/logger')('migration');\r
-\r
-var Sequence = function() {};\r
-\r
-Sequence.prototype.enqueue = function(fn) {\r
-  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
-};\r
-\r
-var Migration = function(queryInterface) {\r
-  this.queryInterface = queryInterface;\r
-  this.sequence = new Sequence();\r
-};\r
-\r
-Migration.prototype.changeColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .changeColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Changed column %s in table %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Added column %s to %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.dropTable = function(table) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .dropTable(table, {\r
-        force: true\r
-      })\r
-      .then(function() {\r
-        logger.info('table dropped %s', table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addIndex = function(table, column, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addIndex(table, column, {\r
-        indexName: indexName\r
-      })\r
-      .then(function() {\r
-        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeIndex = function(table, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeIndex(table, indexName)\r
-      .then(function() {\r
-        logger.info('removeIndex %s %s', table, indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.query = function(sql) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface.sequelize\r
-      .query(sql)\r
-      .then(function() {\r
-        logger.info('query %s', sql);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeColumn = function(table, column) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeColumn(table, column)\r
-      .then(function() {\r
-        logger.info('Removed column %s from %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .renameColumn(table, oldColumn, newColumn)\r
-      .then(function() {\r
-        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.final = function(resolve) {\r
-  this.sequence.enqueue(function() {\r
-    return resolve();\r
-  });\r
-};\r
-\r
-module.exports = {\r
-  up: function(queryInterface, Sequelize) {\r
-    return new BPromise(function(resolve) {\r
-      var migration = new Migration(queryInterface);\r
-\r
-      // START FINAL\r
-      migration.final(resolve);\r
-      // END FINAL\r
-    });\r
-  },\r
-\r
-  down: function(queryInterface, Sequelize) {\r
-    // var migration = new Migration(queryInterface);\r
-  }\r
-};
\ No newline at end of file
diff --git a/server/migrations/2.5.36.js b/server/migrations/2.5.36.js
deleted file mode 100644 (file)
index fcc59ce..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-'use strict';
-
-var BPromise = require('bluebird');
-var util = require('util');
-
-var logger = require('../config/logger')('migration');
-
-var Sequence = function() {};
-
-Sequence.prototype.enqueue = function(fn) {
-  this.tail = this.tail ? this.tail.finally(fn) : fn();
-};
-
-var Migration = function(queryInterface) {
-  this.queryInterface = queryInterface;
-  this.sequence = new Sequence();
-};
-
-Migration.prototype.changeColumn = function(table, column, type) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .changeColumn(table, column, type)
-      .then(function() {
-        logger.info('Changed column %s in table %s', column, table);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.addColumn = function(table, column, type) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .addColumn(table, column, type)
-      .then(function() {
-        logger.info('Added column %s to %s', column, table);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.dropTable = function(table) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .dropTable(table, {
-        force: true
-      })
-      .then(function() {
-        logger.info('table dropped %s', table);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.addIndex = function(table, column, indexName) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .addIndex(table, column, {
-        indexName: indexName
-      })
-      .then(function() {
-        logger.info('addIndex %s %s %s', table, column.join(','), indexName);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.removeIndex = function(table, indexName) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .removeIndex(table, indexName)
-      .then(function() {
-        logger.info('removeIndex %s %s', table, indexName);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.query = function(sql) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface.sequelize
-      .query(sql)
-      .then(function() {
-        logger.info('query %s', sql);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.removeColumn = function(table, column) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .removeColumn(table, column)
-      .then(function() {
-        logger.info('Removed column %s from %s', column, table);
-      })
-      .catch(function(err) {
-        logger.info(
-          util.inspect(err, {
-            showHidden: false,
-            depth: null
-          })
-        );
-      });
-  });
-};
-
-Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .renameColumn(table, oldColumn, newColumn)
-      .then(function() {
-        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);
-      })
-      .catch(function(err) {
-        logger.info(
-          util.inspect(err, {
-            showHidden: false,
-            depth: null
-          })
-        );
-      });
-  });
-};
-
-Migration.prototype.final = function(resolve) {
-  this.sequence.enqueue(function() {
-    return resolve();
-  });
-};
-
-module.exports = {
-  up: function(queryInterface, Sequelize) {
-    return new BPromise(function(resolve) {
-      var migration = new Migration(queryInterface);
-
-      // START whatsapp
-      migration.addColumn('whatsapp_accounts', 'baseUrl', {
-        type: Sequelize.STRING
-      });
-
-      migration.changeColumn('whatsapp_accounts', 'type', {
-        type: Sequelize.ENUM('twilio', 'sinch')
-      });
-
-      // START FINAL
-      migration.final(resolve);
-      // END FINAL
-    });
-  },
-
-  down: function(queryInterface, Sequelize) {
-    // var migration = new Migration(queryInterface);
-  }
-};
\ No newline at end of file
index f272ff0..320f118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['ScreenRecording','VoiceMailMessage','Messages','mailboxuser','VoiceQueueReport','QueueCalls','uniqueid','AgentReports','VoiceCallReport','Contact','ContactId','MailServerIn','MailAccountId','Imap','Smtp','Dispositions','Answers','ListId','TemplateId','mandatoryDispositionPause','mandatoryDispositionPauseId','team_has_mail_queues','MailInteractionId','Account','Owner','mail_interaction_has_tags','Tags','Users','Interaction','ChatWebsiteId','ChatOfflineMessageId','restrict','TagId','List','Items','FaxAccountId','Interactions','FaxApplication','FaxInteractionId','fax_interaction_has_tags','ThroughTags','AttachmentId','team_has_fax_queues','FaxQueueReport','SmsAccountId','SmsMessage','SmsApplication','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','Agent','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','Attachments','ChatGroupId','chat_group_has_users','CmCompany','Company','cm_contact_has_tags','Queue','CampaignId','OwnerId','Automation','Condition','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','ParentId','MailApplications','ChatApplications','FaxApplications','SmsApplications','Schedule','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','Actions','Fields','MetricId','Configurations','Subjects','SubjectId','FieldId','AccountId','Subject','DescriptionId','Field','VariableId','Description','int_desk_configuration_has_tags','ZohoConfiguration','Descriptions','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','FreshsalesAccount','FreshsalesField','FromId','ToId','SessionId','ProjectId','user_has_square_projects','MailQueues','ChatQueues','team_has_sms_queues','SmsQueues','team_has_whatsapp_queues','VoicePrefix','TeamVoicePrefix','TrunkBackup','TrunkBackupId','campaigns_has_cm_lists','BlackLists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromUserId','FromAgent','ToQueue','ToMailAccountId','ChatTransferReport','FromChatWebsiteId','ToUserId','ToAgent','ToChatQueueId','ToAccount','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','SmsTransferReport','ToSmsAccountId','CmCustomField','CustomFields','Queues','UserVoicePrefix','userProfileId','UserProfileSection','UserProfileSections','UserProfileResource','sectionId','WhatsappAccountId','WhatsappApplication','user_has_whatsapp_accounts','WhatsappMessage','WhatsappInteractionId','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','exports','../config/environment','sequelize','lodash','determine','defaultsDeep','xcall','xC@LL1234','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','motion2','database','username','options','password','VoiceChanSpy','import','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','../api/userWhatsappQueue/userWhatsappQueue.model','../api/mailServerIn/mailServerIn.model','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','../api/faxApplication/faxApplication.model','FaxInteraction','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','../api/smsMessage/smsMessage.model','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','Integration','IntegrationReport','../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','SalesforceAccount','SalesforceConfiguration','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesConfiguration','../api/intFreshsalesField/intFreshsalesField.model','../api/integration/integration.model','Network','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','SmsQueueReport','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','../api/squareRecording/squareRecording.model','SquareMessage','Team','Campaign','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileResource/userProfileResource.model','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','../api/teamVoicePrefix/teamVoicePrefix.model','../api/userVoicePrefix/userVoicePrefix.model','hasOne','cascade','UserId','User','hasMany','VoiceRecording','UserVoiceQueueRt','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteraction','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','MailInteraction','MailInteractions','WhatsappInteractions','UserNotification','SenderId','belongsToMany','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','VoiceQueue','VoiceQueues','VoicePrefixes','FaxQueues','SmsQueue','OpenchannelQueues','WhatsappQueues','UserWhatsappQueue','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccount','WhatsappAccounts','SpiedAgents','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','CmHopper','Hoppers','VoiceQueueId','HopperHistories','HopperBlacks','JscriptySessions','belongsTo','TrunkId','IntervalId','Agents','Teams','voice_queues_has_cm_blacklists'];(function(_0x4db790,_0x3228bc){var _0x2b5d97=function(_0x8a6f8e){while(--_0x8a6f8e){_0x4db790['push'](_0x4db790['shift']());}};_0x2b5d97(++_0x3228bc);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x4edc44,_0x361cfd){_0x4edc44=_0x4edc44-0x0;var _0x1b9eaf=_0x9ffd[_0x4edc44];return _0x1b9eaf;};'use strict';var config=require(_0xd9ff('0x0'));var Sequelize=require(_0xd9ff('0x1'));var _=require(_0xd9ff('0x2'));var jstz=require('jstz');var timezone=jstz[_0xd9ff('0x3')]();config[_0xd9ff('0x1')]=_[_0xd9ff('0x4')](config[_0xd9ff('0x1')],{'database':'motion2','username':_0xd9ff('0x5'),'password':_0xd9ff('0x6'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0xd9ff('0x7'),'dialectOptions':{'charset':_0xd9ff('0x8')},'logging':![],'timezone':timezone[_0xd9ff('0x9')](),'define':{'charset':_0xd9ff('0xa'),'collate':_0xd9ff('0xb')}}});config[_0xd9ff('0xc')]=_[_0xd9ff('0x4')](config[_0xd9ff('0xc')],{'database':_0xd9ff('0xd'),'username':'xcall','password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xd9ff('0x8')},'logging':![],'timezone':timezone[_0xd9ff('0x9')](),'define':{'charset':_0xd9ff('0xa'),'collate':_0xd9ff('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xd9ff('0x1')][_0xd9ff('0xe')],config[_0xd9ff('0x1')][_0xd9ff('0xf')],config['sequelize']['password'],config[_0xd9ff('0x1')][_0xd9ff('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xd9ff('0xc')][_0xd9ff('0xe')],config[_0xd9ff('0xc')]['username'],config[_0xd9ff('0xc')][_0xd9ff('0x11')],config['sequelizeHistory'][_0xd9ff('0x10')])};db['User']=db['sequelize']['import']('../api/user/user.model');db[_0xd9ff('0x12')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0x14'));db[_0xd9ff('0x15')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x16'));db[_0xd9ff('0x17')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x18'));db[_0xd9ff('0x19')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db['VoiceQueue']=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/voiceQueue/voiceQueue.model');db['VoiceRecording']=db['sequelize']['import'](_0xd9ff('0x1a'));db['ScreenRecording']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x1b'));db[_0xd9ff('0x1c')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/voiceMail/voiceMail.model');db['VoiceMailMessage']=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x1d'));db['VoiceCallReport']=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x1e'));db[_0xd9ff('0x1f')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/voiceDialReport/voiceDialReport.model');db[_0xd9ff('0x20')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x21'));db['VoiceQueueReport']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x22'));db[_0xd9ff('0x23')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x24'));db[_0xd9ff('0x25')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x26'));db['VoiceTransferReport']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x27'));db['UserVoiceQueueRt']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x28'));db[_0xd9ff('0x29')]=db['sequelize'][_0xd9ff('0x13')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0xd9ff('0x2a')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x2b'));db[_0xd9ff('0x2c')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x2d'));db[_0xd9ff('0x2e')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x2f'));db[_0xd9ff('0x30')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x31'));db[_0xd9ff('0x32')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x33'));db['UserWhatsappQueue']=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x34'));db['MailServerIn']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x35'));db['MailServerOut']=db['sequelize']['import'](_0xd9ff('0x36'));db[_0xd9ff('0x37')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x38'));db[_0xd9ff('0x39')]=db['sequelize']['import']('../api/mailQueue/mailQueue.model');db[_0xd9ff('0x3a')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x3b'));db['MailInteraction']=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x3c'));db[_0xd9ff('0x3d')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/mailMessage/mailMessage.model');db[_0xd9ff('0x3e')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x3f'));db[_0xd9ff('0x40')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x41'));db[_0xd9ff('0x42')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0x43'));db[_0xd9ff('0x44')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/dashboardItem/dashboardItem.model');db[_0xd9ff('0x45')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/faxAccount/faxAccount.model');db['FaxApplication']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x46'));db[_0xd9ff('0x47')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/faxInteraction/faxInteraction.model');db[_0xd9ff('0x48')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x49'));db[_0xd9ff('0x4a')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x4b'));db['FaxQueueReport']=db['sequelize']['import'](_0xd9ff('0x4c'));db['SmsAccount']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x4d'));db['SmsApplication']=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/smsApplication/smsApplication.model');db[_0xd9ff('0x4e')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x4f'));db['SmsMessage']=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x50'));db['SmsQueue']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x51'));db[_0xd9ff('0x52')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x53'));db[_0xd9ff('0x54')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/openchannelApplication/openchannelApplication.model');db['OpenchannelInteraction']=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0x55'));db[_0xd9ff('0x56')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0x57'));db[_0xd9ff('0x58')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x59'));db[_0xd9ff('0x5a')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x5b'));db[_0xd9ff('0x5c')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0xd9ff('0x5d')]=db['sequelize'][_0xd9ff('0x13')]('../api/chatApplication/chatApplication.model');db[_0xd9ff('0x5e')]=db['sequelize'][_0xd9ff('0x13')]('../api/chatInteraction/chatInteraction.model');db[_0xd9ff('0x5f')]=db['sequelize'][_0xd9ff('0x13')]('../api/chatMessage/chatMessage.model');db[_0xd9ff('0x60')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0x61'));db[_0xd9ff('0x62')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x63'));db[_0xd9ff('0x64')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x65'));db[_0xd9ff('0x66')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x67'));db['CmCompany']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x68'));db[_0xd9ff('0x69')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x6a'));db['CmHopper']=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/cmHopper/cmHopper.model');db[_0xd9ff('0x6b')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x6c'));db[_0xd9ff('0x6d')]=db[_0xd9ff('0x1')]['import']('../api/cmHopperFinal/cmHopperFinal.model');db[_0xd9ff('0x6e')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0x6f'));db[_0xd9ff('0x70')]=db[_0xd9ff('0x1')]['import']('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x71'));db[_0xd9ff('0x72')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x73'));db['Automation']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x74'));db[_0xd9ff('0x75')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x76'));db[_0xd9ff('0x77')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0x78'));db['Condition']=db['sequelize'][_0xd9ff('0x13')]('../api/condition/condition.model');db[_0xd9ff('0x79')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x7a'));db[_0xd9ff('0x7b')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x7c'));db['Cdr']=db[_0xd9ff('0x1')]['import']('../api/cdr/cdr.model');db[_0xd9ff('0x7d')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x7e'));db['Schedule']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x7f'));db[_0xd9ff('0x80')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x81'));db[_0xd9ff('0x82')]=db['sequelize']['import']('../api/tag/tag.model');db[_0xd9ff('0x83')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x84'));db[_0xd9ff('0x85')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x86'));db[_0xd9ff('0x87')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/variable/variable.model');db[_0xd9ff('0x88')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/integration/integration.model');db[_0xd9ff('0x89')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0x8a'));db[_0xd9ff('0x8b')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0x8c'));db[_0xd9ff('0x8d')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x8e'));db[_0xd9ff('0x8f')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x90'));db[_0xd9ff('0x91')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x92'));db[_0xd9ff('0x93')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x94'));db['AnalyticTreeReport']=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0xd9ff('0x95')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0xd9ff('0x96')]=db['sequelize'][_0xd9ff('0x13')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db[_0xd9ff('0x97')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x98'));db[_0xd9ff('0x99')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x9a'));db[_0xd9ff('0x9b')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0x9c'));db[_0xd9ff('0x9d')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0x9e'));db[_0xd9ff('0x9f')]=db['sequelize']['import'](_0xd9ff('0xa0'));db[_0xd9ff('0xa1')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xa2'));db[_0xd9ff('0xa3')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0xa4'));db[_0xd9ff('0xa5')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xa6'));db['ZohoConfiguration']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xa7'));db[_0xd9ff('0xa8')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xa9'));db[_0xd9ff('0xaa')]=db['sequelize'][_0xd9ff('0x13')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0xd9ff('0xab')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xac'));db[_0xd9ff('0xad')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xae'));db[_0xd9ff('0xaf')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xb0'));db[_0xd9ff('0xb1')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0xb2'));db[_0xd9ff('0xb3')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0xb4'));db[_0xd9ff('0xb5')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0xb6'));db[_0xd9ff('0xb7')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xb8'));db[_0xd9ff('0xb9')]=db['sequelize'][_0xd9ff('0x13')]('../api/intVtigerField/intVtigerField.model');db[_0xd9ff('0xba')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xbb'));db[_0xd9ff('0xbc')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xbd'));db[_0xd9ff('0xbe')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/intServicenowField/intServicenowField.model');db[_0xd9ff('0xbf')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0xc0'));db[_0xd9ff('0xc1')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xc2'));db[_0xd9ff('0xc3')]=db['sequelize']['import'](_0xd9ff('0xc4'));db['FreshsalesAccount']=db['sequelize']['import']('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0xd9ff('0xc5')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db['FreshsalesField']=db[_0xd9ff('0x1')]['import'](_0xd9ff('0xc6'));db['Integration']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xc7'));db[_0xd9ff('0xc8')]=db[_0xd9ff('0x1')]['import']('../api/network/network.model');db[_0xd9ff('0xc9')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xca'));db[_0xd9ff('0xcb')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0xcc'));db[_0xd9ff('0xcd')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xce'));db[_0xd9ff('0xcf')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xd0'));db[_0xd9ff('0xd1')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0xd9ff('0xd2')]=db[_0xd9ff('0x1')]['import']('../api/smsQueueReport/smsQueueReport.model');db[_0xd9ff('0xd3')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0xd4'));db[_0xd9ff('0xd5')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xd6'));db[_0xd9ff('0xd7')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/jscriptyProject/jscriptyProject.model');db['Setting']=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0xd8'));db[_0xd9ff('0xd9')]=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0xda'));db[_0xd9ff('0xdb')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xdc'));db['SquareRecording']=db[_0xd9ff('0x1')]['import'](_0xd9ff('0xdd'));db[_0xd9ff('0xde')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/squareMessage/squareMessage.model');db[_0xd9ff('0xdf')]=db[_0xd9ff('0x1')]['import']('../api/team/team.model');db['License']=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/license/license.model');db[_0xd9ff('0xe0')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/campaign/campaign.model');db['Migration']=db['sequelize'][_0xd9ff('0x13')]('../api/migration/migration.model');db[_0xd9ff('0xe1')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0xe2'));db[_0xd9ff('0xe3')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xe4'));db['MailTransferReport']=db[_0xd9ff('0x1')]['import']('../api/mailTransferReport/mailTransferReport.model');db['ChatTransferReport']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xe5'));db[_0xd9ff('0xe6')]=db['sequelize']['import'](_0xd9ff('0xe7'));db[_0xd9ff('0xe8')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xe9'));db['SmsTransferReport']=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0xea'));db[_0xd9ff('0xeb')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xec'));db['VoicePrefix']=db[_0xd9ff('0x1')]['import']('../api/voicePrefix/voicePrefix.model');db[_0xd9ff('0xed')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xee'));db['UserProfileSection']=db['sequelize'][_0xd9ff('0x13')]('../api/userProfileSection/userProfileSection.model');db['UserProfileResource']=db[_0xd9ff('0x1')]['import'](_0xd9ff('0xef'));db['UserNotification']=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xf0'));db[_0xd9ff('0xf1')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xf2'));db['WhatsappApplication']=db[_0xd9ff('0x1')]['import']('../api/whatsappApplication/whatsappApplication.model');db[_0xd9ff('0xf3')]=db[_0xd9ff('0x1')]['import'](_0xd9ff('0xf4'));db['WhatsappMessage']=db['sequelize'][_0xd9ff('0x13')](_0xd9ff('0xf5'));db[_0xd9ff('0xf6')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xf7'));db[_0xd9ff('0xf8')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xf9'));db[_0xd9ff('0xfa')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')]('../api/whatsappQueue/whatsappQueue.model');db['CloudProvider']=db['sequelize'][_0xd9ff('0x13')]('../api/cloudProvider/cloudProvider.model');db[_0xd9ff('0xfb')]=db[_0xd9ff('0x1')][_0xd9ff('0x13')](_0xd9ff('0xfc'));db['TeamVoicePrefix']=db[_0xd9ff('0x1')]['import'](_0xd9ff('0xfd'));db['UserVoicePrefix']=db['sequelize']['import'](_0xd9ff('0xfe'));db['User'][_0xd9ff('0xff')](db['VoiceMail'],{'as':_0xd9ff('0x1c'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x102')][_0xd9ff('0x103')](db[_0xd9ff('0x104')],{'as':'Recordings','foreignKey':'UserId'});db[_0xd9ff('0x102')][_0xd9ff('0x103')](db[_0xd9ff('0x105')],{'as':_0xd9ff('0x106'),'foreignKey':_0xd9ff('0x101')});db['User'][_0xd9ff('0x103')](db[_0xd9ff('0x17')],{'as':_0xd9ff('0x107'),'onDelete':_0xd9ff('0x100'),'hooks':!![]});db[_0xd9ff('0x102')][_0xd9ff('0x103')](db['CmHopperFinal'],{'as':_0xd9ff('0x108'),'foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x102')][_0xd9ff('0x103')](db[_0xd9ff('0x6e')],{'as':_0xd9ff('0x109'),'foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x102')][_0xd9ff('0x103')](db[_0xd9ff('0x70')],{'as':_0xd9ff('0x70'),'foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x102')][_0xd9ff('0x103')](db[_0xd9ff('0x10a')],{'as':_0xd9ff('0x10b'),'foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x102')]['hasMany'](db[_0xd9ff('0x5e')],{'as':_0xd9ff('0x10c'),'foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x102')][_0xd9ff('0x103')](db[_0xd9ff('0x4e')],{'as':_0xd9ff('0x10d'),'foreignKey':_0xd9ff('0x101')});db['User'][_0xd9ff('0x103')](db['FaxInteraction'],{'as':_0xd9ff('0x10e'),'foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x102')][_0xd9ff('0x103')](db[_0xd9ff('0x10f')],{'as':_0xd9ff('0x110'),'foreignKey':_0xd9ff('0x101')});db['User'][_0xd9ff('0x103')](db[_0xd9ff('0xf3')],{'as':_0xd9ff('0x111'),'foreignKey':_0xd9ff('0x101')});db['User'][_0xd9ff('0x103')](db[_0xd9ff('0x112')],{'as':'UserNotifications','foreignKey':_0xd9ff('0x113')});db[_0xd9ff('0x102')]['belongsTo'](db['UserProfile'],{'as':'UserProfile','foreignKey':'userProfileId'});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x64')],{'as':'Groups','through':'chat_group_has_users'});db[_0xd9ff('0x102')]['belongsToMany'](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x115'),'through':_0xd9ff('0x116')});db['User']['belongsToMany'](db['CmList'],{'as':_0xd9ff('0x117'),'through':_0xd9ff('0x118')});db['User'][_0xd9ff('0x114')](db[_0xd9ff('0xdf')],{'through':_0xd9ff('0x119')});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x10f')],{'as':_0xd9ff('0x110'),'through':_0xd9ff('0x11a')});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x5e')],{'as':_0xd9ff('0x10c'),'through':_0xd9ff('0x11b')});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x47')],{'as':_0xd9ff('0x10e'),'through':_0xd9ff('0x11c')});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x4e')],{'as':_0xd9ff('0x10d'),'through':_0xd9ff('0x11d')});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x10a')],{'as':_0xd9ff('0x10b'),'through':_0xd9ff('0x11e')});db[_0xd9ff('0x102')]['belongsToMany'](db[_0xd9ff('0xf3')],{'as':_0xd9ff('0x111'),'through':'user_has_whatsapp_interactions'});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x11f')],{'as':_0xd9ff('0x120'),'through':_0xd9ff('0x29'),'required':![]});db[_0xd9ff('0x102')]['belongsToMany'](db['VoicePrefix'],{'as':_0xd9ff('0x121'),'through':'UserVoicePrefix','required':![]});db['User'][_0xd9ff('0x114')](db[_0xd9ff('0x39')],{'as':'MailQueues','through':_0xd9ff('0x2c'),'required':![]});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x62')],{'as':'ChatQueues','through':_0xd9ff('0x2a'),'required':![],'hooks':!![]});db[_0xd9ff('0x102')]['belongsToMany'](db[_0xd9ff('0x4a')],{'as':_0xd9ff('0x122'),'through':'UserFaxQueue','required':![]});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x123')],{'as':'SmsQueues','through':_0xd9ff('0x30'),'required':![]});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db['OpenchannelQueue'],{'as':_0xd9ff('0x124'),'through':'UserOpenchannelQueue','required':![]});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0xfa')],{'as':_0xd9ff('0x125'),'through':_0xd9ff('0x126'),'required':![]});db[_0xd9ff('0x102')]['belongsToMany'](db[_0xd9ff('0xeb')],{'through':_0xd9ff('0x118')});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x5a')],{'as':'ChatWebsites','through':_0xd9ff('0x127')});db[_0xd9ff('0x102')]['belongsToMany'](db[_0xd9ff('0x45')],{'as':_0xd9ff('0x128'),'through':_0xd9ff('0x129')});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x37')],{'as':_0xd9ff('0x12a'),'through':_0xd9ff('0x12b')});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x52')],{'as':_0xd9ff('0x12c'),'through':_0xd9ff('0x12d')});db[_0xd9ff('0x102')][_0xd9ff('0x114')](db[_0xd9ff('0x12e')],{'as':'SmsAccounts','through':'user_has_sms_accounts'});db['User'][_0xd9ff('0x114')](db['WhatsappAccount'],{'as':_0xd9ff('0x12f'),'through':'user_has_whatsapp_accounts'});db['User']['belongsToMany'](db[_0xd9ff('0xdb')],{'as':'SquareProjects','through':'user_has_square_projects'});db[_0xd9ff('0x12')][_0xd9ff('0x103')](db[_0xd9ff('0x17')],{'as':_0xd9ff('0x130'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x131')});db[_0xd9ff('0x15')][_0xd9ff('0x103')](db[_0xd9ff('0x17')],{'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x17')][_0xd9ff('0x103')](db[_0xd9ff('0x17')],{'as':_0xd9ff('0x132'),'onDelete':'cascade'});db['VoiceMusicOnHold'][_0xd9ff('0x114')](db[_0xd9ff('0x80')],{'as':_0xd9ff('0x133'),'through':_0xd9ff('0x134')});db[_0xd9ff('0x11f')][_0xd9ff('0x103')](db[_0xd9ff('0x105')],{'as':_0xd9ff('0x135'),'foreignKey':'VoiceQueueId'});db[_0xd9ff('0x11f')][_0xd9ff('0x103')](db[_0xd9ff('0x136')],{'as':_0xd9ff('0x137'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0xd9ff('0x103')](db[_0xd9ff('0x6d')],{'as':'HopperFinals','foreignKey':_0xd9ff('0x138')});db[_0xd9ff('0x11f')]['hasMany'](db[_0xd9ff('0x6e')],{'as':_0xd9ff('0x139'),'foreignKey':_0xd9ff('0x138')});db[_0xd9ff('0x11f')][_0xd9ff('0x103')](db[_0xd9ff('0x70')],{'as':_0xd9ff('0x70'),'foreignKey':'VoiceQueueId'});db[_0xd9ff('0x11f')][_0xd9ff('0x103')](db[_0xd9ff('0x6b')],{'as':_0xd9ff('0x13a'),'foreignKey':_0xd9ff('0x138')});db['VoiceQueue'][_0xd9ff('0x103')](db[_0xd9ff('0xd1')],{'as':_0xd9ff('0x13b'),'foreignKey':'VoiceQueueId'});db[_0xd9ff('0x11f')][_0xd9ff('0x13c')](db[_0xd9ff('0x25')],{'as':'Trunk','foreignKey':_0xd9ff('0x13d')});db['VoiceQueue']['belongsTo'](db['Trunk'],{'as':'TrunkBackup','foreignKey':'TrunkBackupId'});db[_0xd9ff('0x11f')][_0xd9ff('0x13c')](db['Interval'],{'as':_0xd9ff('0x79'),'foreignKey':_0xd9ff('0x13e')});db[_0xd9ff('0x11f')]['belongsTo'](db[_0xd9ff('0x7b')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0xd9ff('0x11f')][_0xd9ff('0x114')](db[_0xd9ff('0xeb')],{'as':'Lists','through':'voice_queues_has_cm_lists'});db[_0xd9ff('0x11f')][_0xd9ff('0x114')](db['User'],{'as':_0xd9ff('0x13f'),'through':_0xd9ff('0x29')});db[_0xd9ff('0x11f')][_0xd9ff('0x114')](db[_0xd9ff('0xdf')],{'as':_0xd9ff('0x140'),'through':_0xd9ff('0xfb')});db['VoiceQueue'][_0xd9ff('0x114')](db[_0xd9ff('0xeb')],{'as':'BlackLists','through':_0xd9ff('0x141')});db[_0xd9ff('0x104')]['belongsTo'](db[_0xd9ff('0x102')],{'as':'User','foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x142')]['belongsTo'](db[_0xd9ff('0x102')],{'as':'User','foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x1c')][_0xd9ff('0x103')](db[_0xd9ff('0x143')],{'as':_0xd9ff('0x144'),'onDelete':_0xd9ff('0x100'),'foreignKey':'mailboxuser','sourceKey':'mailbox'});db[_0xd9ff('0x143')]['belongsTo'](db[_0xd9ff('0x1c')],{'foreignKey':_0xd9ff('0x145'),'targetKey':'mailbox'});db['VoiceCallReport']['hasMany'](db[_0xd9ff('0x146')],{'as':_0xd9ff('0x147'),'foreignKey':_0xd9ff('0x148'),'constraints':![]});db['VoiceCallReport'][_0xd9ff('0x103')](db[_0xd9ff('0x20')],{'as':_0xd9ff('0x149'),'foreignKey':_0xd9ff('0x148'),'constraints':![]});db[_0xd9ff('0x14a')][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{'as':'User','foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x14a')][_0xd9ff('0x13c')](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x14d')][_0xd9ff('0x13c')](db[_0xd9ff('0x37')],{'as':_0xd9ff('0x37'),'foreignKey':_0xd9ff('0x14e')});db['MailServerOut']['belongsTo'](db[_0xd9ff('0x37')],{'as':'MailAccount','foreignKey':'MailAccountId'});db[_0xd9ff('0x37')][_0xd9ff('0xff')](db[_0xd9ff('0x14d')],{'as':_0xd9ff('0x14f'),'onDelete':_0xd9ff('0x100')});db['MailAccount'][_0xd9ff('0xff')](db['MailServerOut'],{'as':_0xd9ff('0x150'),'onDelete':_0xd9ff('0x100')});db['MailAccount'][_0xd9ff('0x103')](db[_0xd9ff('0x77')],{'as':_0xd9ff('0x151'),'foreignKey':_0xd9ff('0x14e'),'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x37')][_0xd9ff('0x103')](db['CannedAnswer'],{'as':_0xd9ff('0x152'),'foreignKey':_0xd9ff('0x14e')});db[_0xd9ff('0x37')][_0xd9ff('0x103')](db[_0xd9ff('0x3d')],{'as':_0xd9ff('0x144'),'foreignKey':'MailAccountId'});db[_0xd9ff('0x37')][_0xd9ff('0x103')](db[_0xd9ff('0x10f')],{'as':'Interactions'});db[_0xd9ff('0x37')]['hasMany'](db[_0xd9ff('0x3e')],{'as':'Applications'});db[_0xd9ff('0x37')][_0xd9ff('0x13c')](db[_0xd9ff('0xeb')],{'as':'List','foreignKey':_0xd9ff('0x153')});db['MailAccount'][_0xd9ff('0x13c')](db[_0xd9ff('0x83')],{'as':_0xd9ff('0x83'),'foreignKey':_0xd9ff('0x154')});db[_0xd9ff('0x37')]['belongsTo'](db[_0xd9ff('0x7b')],{'as':_0xd9ff('0x155'),'foreignKey':_0xd9ff('0x156')});db[_0xd9ff('0x37')][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':'Agents','through':'user_has_mail_accounts'});db[_0xd9ff('0x39')][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x13f'),'through':_0xd9ff('0x2c')});db[_0xd9ff('0x39')][_0xd9ff('0x114')](db['Team'],{'through':_0xd9ff('0x157'),'as':_0xd9ff('0x140')});db[_0xd9ff('0x10f')][_0xd9ff('0x103')](db[_0xd9ff('0x3d')],{'as':_0xd9ff('0x144'),'onDelete':'cascade','foreignKey':_0xd9ff('0x158')});db[_0xd9ff('0x10f')][_0xd9ff('0x13c')](db[_0xd9ff('0x37')],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x14e')});db['MailInteraction']['belongsTo'](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x10f')][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x15a'),'foreignKey':_0xd9ff('0x101')});db['MailInteraction'][_0xd9ff('0x114')](db[_0xd9ff('0x82')],{'through':_0xd9ff('0x15b'),'as':_0xd9ff('0x15c')});db[_0xd9ff('0x10f')][_0xd9ff('0x114')](db['Tag'],{'through':_0xd9ff('0x15b'),'as':'ThroughTags'});db['MailInteraction'][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x15d'),'through':_0xd9ff('0x11a'),'foreignKey':_0xd9ff('0x158')});db[_0xd9ff('0x3d')][_0xd9ff('0x103')](db[_0xd9ff('0xe1')],{'as':'Attachments','onDelete':_0xd9ff('0x100')});db['MailMessage'][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x102')});db[_0xd9ff('0x3d')]['belongsTo'](db[_0xd9ff('0x69')],{'onDelete':_0xd9ff('0x100'),'as':_0xd9ff('0x14b')});db[_0xd9ff('0x3d')][_0xd9ff('0x13c')](db[_0xd9ff('0x10f')],{'as':_0xd9ff('0x15e'),'foreignKey':_0xd9ff('0x158')});db[_0xd9ff('0x3d')]['belongsTo'](db[_0xd9ff('0x37')],{'as':'Account','foreignKey':'MailAccountId'});db[_0xd9ff('0x3d')][_0xd9ff('0x13c')](db[_0xd9ff('0x5a')],{'as':_0xd9ff('0x5a'),'foreignKey':_0xd9ff('0x15f')});db[_0xd9ff('0x3d')][_0xd9ff('0x13c')](db[_0xd9ff('0x60')],{'as':_0xd9ff('0x60'),'foreignKey':_0xd9ff('0x160')});db[_0xd9ff('0x3e')][_0xd9ff('0x13c')](db['User'],{'onDelete':_0xd9ff('0x161')});db['MailApplication'][_0xd9ff('0x13c')](db[_0xd9ff('0x39')],{'onDelete':'restrict'});db['MailApplication'][_0xd9ff('0x13c')](db[_0xd9ff('0x37')],{'onDelete':'restrict'});db[_0xd9ff('0x3e')][_0xd9ff('0x13c')](db['Interval'],{'onDelete':_0xd9ff('0x161'),'foreignKey':'IntervalId'});db[_0xd9ff('0x3e')][_0xd9ff('0x13c')](db[_0xd9ff('0x82')],{'onDelete':_0xd9ff('0x161'),'foreignKey':_0xd9ff('0x162')});db[_0xd9ff('0x40')][_0xd9ff('0x13c')](db[_0xd9ff('0x37')],{});db[_0xd9ff('0x40')][_0xd9ff('0x13c')](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153')});db[_0xd9ff('0x40')]['belongsTo'](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x40')][_0xd9ff('0x13c')](db[_0xd9ff('0x10f')],{});db['MailQueueReport']['belongsTo'](db['MailMessage'],{});db['MailQueueReport'][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{});db['MailQueueReport'][_0xd9ff('0x13c')](db[_0xd9ff('0x39')],{});db[_0xd9ff('0x42')]['hasMany'](db['DashboardItem'],{'as':_0xd9ff('0x164'),'onDelete':_0xd9ff('0x100')});db['FaxAccount']['hasMany'](db['Disposition'],{'as':'Dispositions','foreignKey':'FaxAccountId','onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x45')][_0xd9ff('0x103')](db[_0xd9ff('0x75')],{'as':_0xd9ff('0x152'),'foreignKey':_0xd9ff('0x165')});db[_0xd9ff('0x45')][_0xd9ff('0x103')](db[_0xd9ff('0x47')],{'as':_0xd9ff('0x166')});db[_0xd9ff('0x45')][_0xd9ff('0x103')](db[_0xd9ff('0x167')],{'as':_0xd9ff('0x132')});db[_0xd9ff('0x45')][_0xd9ff('0x103')](db[_0xd9ff('0x17')],{'as':'Exntensions','onDelete':_0xd9ff('0x100')});db['FaxAccount'][_0xd9ff('0x103')](db['FaxMessage'],{'as':_0xd9ff('0x144')});db[_0xd9ff('0x45')][_0xd9ff('0x13c')](db['Trunk'],{'as':'Trunk'});db['FaxAccount']['belongsTo'](db['CmList'],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153')});db[_0xd9ff('0x45')][_0xd9ff('0x13c')](db[_0xd9ff('0x7b')],{'as':_0xd9ff('0x155'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xd9ff('0x45')][_0xd9ff('0x114')](db['User'],{'as':'Agents','through':_0xd9ff('0x129')});db[_0xd9ff('0x167')][_0xd9ff('0x13c')](db['User'],{'onDelete':_0xd9ff('0x161')});db[_0xd9ff('0x167')]['belongsTo'](db[_0xd9ff('0x4a')],{'onDelete':_0xd9ff('0x161')});db[_0xd9ff('0x167')][_0xd9ff('0x13c')](db['FaxAccount'],{'onDelete':'restrict'});db[_0xd9ff('0x167')][_0xd9ff('0x13c')](db['Tag'],{'onDelete':_0xd9ff('0x161'),'foreignKey':'TagId'});db[_0xd9ff('0x47')][_0xd9ff('0x103')](db[_0xd9ff('0x48')],{'as':_0xd9ff('0x144'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x168')});db['FaxInteraction']['belongsTo'](db[_0xd9ff('0x45')],{'as':'Account','foreignKey':_0xd9ff('0x165')});db['FaxInteraction'][_0xd9ff('0x13c')](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x14b'),'foreignKey':'ContactId'});db[_0xd9ff('0x47')][_0xd9ff('0x13c')](db['User'],{'as':'Owner','foreignKey':'UserId'});db[_0xd9ff('0x47')][_0xd9ff('0x114')](db[_0xd9ff('0x82')],{'through':_0xd9ff('0x169'),'as':_0xd9ff('0x15c')});db[_0xd9ff('0x47')][_0xd9ff('0x114')](db[_0xd9ff('0x82')],{'through':'fax_interaction_has_tags','as':_0xd9ff('0x16a')});db[_0xd9ff('0x47')][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x15d'),'through':_0xd9ff('0x11c'),'foreignKey':_0xd9ff('0x168')});db[_0xd9ff('0x48')][_0xd9ff('0x13c')](db['User'],{'onDelete':'cascade','as':'User'});db[_0xd9ff('0x48')][_0xd9ff('0x13c')](db['FaxInteraction'],{'as':_0xd9ff('0x15e'),'foreignKey':'FaxInteractionId'});db['FaxMessage'][_0xd9ff('0x13c')](db[_0xd9ff('0x69')],{'onDelete':_0xd9ff('0x100'),'as':_0xd9ff('0x14b')});db[_0xd9ff('0x48')][_0xd9ff('0x13c')](db['Attachment'],{'as':_0xd9ff('0xe1'),'foreignKey':_0xd9ff('0x16b')});db[_0xd9ff('0x48')][_0xd9ff('0x13c')](db[_0xd9ff('0x45')],{'as':'Account','foreignKey':'FaxAccountId'});db[_0xd9ff('0x4a')][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x13f'),'through':_0xd9ff('0x2e')});db[_0xd9ff('0x4a')][_0xd9ff('0x114')](db[_0xd9ff('0xdf')],{'through':_0xd9ff('0x16c'),'as':_0xd9ff('0x140')});db[_0xd9ff('0x16d')][_0xd9ff('0x13c')](db[_0xd9ff('0x45')],{});db['FaxQueueReport'][_0xd9ff('0x13c')](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153')});db[_0xd9ff('0x16d')][_0xd9ff('0x13c')](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x16d')][_0xd9ff('0x13c')](db[_0xd9ff('0x47')],{});db[_0xd9ff('0x16d')]['belongsTo'](db[_0xd9ff('0x48')],{});db[_0xd9ff('0x16d')][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{});db['FaxQueueReport'][_0xd9ff('0x13c')](db['FaxQueue'],{});db['SmsAccount'][_0xd9ff('0x103')](db[_0xd9ff('0x77')],{'as':_0xd9ff('0x151'),'foreignKey':_0xd9ff('0x16e'),'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x12e')][_0xd9ff('0x103')](db['CannedAnswer'],{'as':_0xd9ff('0x152'),'foreignKey':_0xd9ff('0x16e')});db['SmsAccount'][_0xd9ff('0x103')](db[_0xd9ff('0x16f')],{'as':_0xd9ff('0x144'),'foreignKey':_0xd9ff('0x16e')});db[_0xd9ff('0x12e')][_0xd9ff('0x103')](db[_0xd9ff('0x4e')],{'as':_0xd9ff('0x166')});db[_0xd9ff('0x12e')][_0xd9ff('0x103')](db[_0xd9ff('0x170')],{'as':'Applications'});db['SmsAccount'][_0xd9ff('0x13c')](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153')});db[_0xd9ff('0x12e')][_0xd9ff('0x13c')](db[_0xd9ff('0x7b')],{'as':_0xd9ff('0x155'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xd9ff('0x12e')]['belongsToMany'](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x13f'),'through':'user_has_sms_accounts'});db[_0xd9ff('0x170')][_0xd9ff('0x13c')](db['User'],{'onDelete':_0xd9ff('0x161')});db['SmsApplication']['belongsTo'](db[_0xd9ff('0x123')],{'onDelete':'restrict'});db['SmsApplication'][_0xd9ff('0x13c')](db['SmsAccount'],{'onDelete':_0xd9ff('0x161')});db[_0xd9ff('0x170')][_0xd9ff('0x13c')](db[_0xd9ff('0x79')],{'onDelete':_0xd9ff('0x161'),'foreignKey':'IntervalId'});db[_0xd9ff('0x170')][_0xd9ff('0x13c')](db['Tag'],{'onDelete':_0xd9ff('0x161'),'foreignKey':_0xd9ff('0x162')});db['SmsInteraction']['hasMany'](db[_0xd9ff('0x16f')],{'as':'Messages','onDelete':'cascade','foreignKey':'SmsInteractionId'});db[_0xd9ff('0x4e')]['belongsTo'](db['SmsAccount'],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x16e')});db[_0xd9ff('0x4e')][_0xd9ff('0x13c')](db['CmContact'],{'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x4e')][_0xd9ff('0x13c')](db['User'],{'as':_0xd9ff('0x15a'),'foreignKey':'UserId'});db['SmsInteraction'][_0xd9ff('0x114')](db[_0xd9ff('0x82')],{'through':_0xd9ff('0x171'),'as':_0xd9ff('0x15c')});db[_0xd9ff('0x4e')][_0xd9ff('0x114')](db[_0xd9ff('0x82')],{'through':_0xd9ff('0x171'),'as':_0xd9ff('0x16a')});db['SmsInteraction'][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x15d'),'through':_0xd9ff('0x11d'),'foreignKey':_0xd9ff('0x172')});db[_0xd9ff('0x16f')]['belongsTo'](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x102')});db[_0xd9ff('0x16f')][_0xd9ff('0x13c')](db[_0xd9ff('0x69')],{'onDelete':'cascade','as':_0xd9ff('0x14b')});db[_0xd9ff('0x16f')][_0xd9ff('0x13c')](db[_0xd9ff('0x4e')],{'onDelete':_0xd9ff('0x100'),'as':_0xd9ff('0x15e'),'foreignKey':_0xd9ff('0x172')});db['SmsMessage'][_0xd9ff('0x13c')](db[_0xd9ff('0x12e')],{'as':'Account','foreignKey':_0xd9ff('0x16e')});db[_0xd9ff('0x123')][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x13f'),'through':_0xd9ff('0x30'),'foreignKey':_0xd9ff('0x173')});db[_0xd9ff('0x123')][_0xd9ff('0x114')](db[_0xd9ff('0xdf')],{'through':'team_has_sms_queues','as':_0xd9ff('0x140')});db[_0xd9ff('0x52')]['hasMany'](db[_0xd9ff('0x77')],{'as':'Dispositions','foreignKey':_0xd9ff('0x174'),'onDelete':_0xd9ff('0x100')});db['OpenchannelAccount'][_0xd9ff('0x103')](db[_0xd9ff('0x75')],{'as':_0xd9ff('0x152'),'foreignKey':'OpenchannelAccountId'});db[_0xd9ff('0x52')]['hasMany'](db['OpenchannelInteraction'],{'as':_0xd9ff('0x166'),'foreignKey':_0xd9ff('0x174')});db[_0xd9ff('0x52')][_0xd9ff('0x103')](db[_0xd9ff('0x56')],{'as':'Messages','foreignKey':_0xd9ff('0x174')});db[_0xd9ff('0x52')][_0xd9ff('0x103')](db[_0xd9ff('0x54')],{'as':'Applications','foreignKey':_0xd9ff('0x174')});db[_0xd9ff('0x52')][_0xd9ff('0x13c')](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153')});db[_0xd9ff('0x52')][_0xd9ff('0x13c')](db['Pause'],{'as':_0xd9ff('0x155'),'foreignKey':_0xd9ff('0x156')});db[_0xd9ff('0x52')]['belongsToMany'](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x13f'),'through':_0xd9ff('0x12d')});db['OpenchannelApplication'][_0xd9ff('0x13c')](db['User'],{'onDelete':_0xd9ff('0x161')});db[_0xd9ff('0x54')][_0xd9ff('0x13c')](db[_0xd9ff('0x58')],{'onDelete':_0xd9ff('0x161'),'foreignKey':_0xd9ff('0x175')});db[_0xd9ff('0x54')][_0xd9ff('0x13c')](db[_0xd9ff('0x52')],{'onDelete':_0xd9ff('0x161'),'foreignKey':_0xd9ff('0x174')});db[_0xd9ff('0x54')][_0xd9ff('0x13c')](db[_0xd9ff('0x79')],{'onDelete':_0xd9ff('0x161'),'foreignKey':_0xd9ff('0x13e')});db[_0xd9ff('0x54')][_0xd9ff('0x13c')](db[_0xd9ff('0x82')],{'onDelete':_0xd9ff('0x161'),'foreignKey':_0xd9ff('0x162')});db['OpenchannelInteraction'][_0xd9ff('0x103')](db[_0xd9ff('0x56')],{'as':'Messages','onDelete':'cascade','foreignKey':_0xd9ff('0x176')});db[_0xd9ff('0x10a')][_0xd9ff('0x13c')](db[_0xd9ff('0x52')],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x174')});db['OpenchannelInteraction'][_0xd9ff('0x13c')](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x10a')]['belongsTo'](db['User'],{'as':_0xd9ff('0x15a'),'foreignKey':_0xd9ff('0x101')});db['OpenchannelInteraction'][_0xd9ff('0x114')](db[_0xd9ff('0x82')],{'through':_0xd9ff('0x177'),'as':_0xd9ff('0x15c')});db[_0xd9ff('0x10a')]['belongsToMany'](db[_0xd9ff('0x82')],{'through':'openchannel_interaction_has_tags','as':_0xd9ff('0x16a')});db['OpenchannelInteraction'][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x15d'),'through':_0xd9ff('0x11e'),'foreignKey':_0xd9ff('0x176')});db[_0xd9ff('0x56')][_0xd9ff('0x13c')](db['User'],{'onDelete':_0xd9ff('0x100'),'as':'User'});db['OpenchannelMessage']['belongsTo'](db['CmContact'],{'onDelete':_0xd9ff('0x100'),'as':_0xd9ff('0x14b')});db['OpenchannelMessage'][_0xd9ff('0x13c')](db['OpenchannelInteraction'],{'onDelete':_0xd9ff('0x100'),'as':'Interaction','foreignKey':_0xd9ff('0x176')});db[_0xd9ff('0x56')]['belongsTo'](db[_0xd9ff('0xe1')],{'as':_0xd9ff('0xe1'),'foreignKey':_0xd9ff('0x16b')});db[_0xd9ff('0x56')]['belongsTo'](db[_0xd9ff('0x52')],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x174')});db[_0xd9ff('0x58')]['belongsToMany'](db[_0xd9ff('0x102')],{'as':'Agents','through':'UserOpenchannelQueue','foreignKey':_0xd9ff('0x175')});db[_0xd9ff('0x58')][_0xd9ff('0x114')](db[_0xd9ff('0xdf')],{'through':_0xd9ff('0x178'),'as':_0xd9ff('0x140')});db['ChatWebsite'][_0xd9ff('0x103')](db[_0xd9ff('0x77')],{'as':_0xd9ff('0x151'),'foreignKey':_0xd9ff('0x15f'),'onDelete':_0xd9ff('0x100')});db['ChatWebsite'][_0xd9ff('0x103')](db[_0xd9ff('0x75')],{'as':_0xd9ff('0x152'),'foreignKey':_0xd9ff('0x15f')});db[_0xd9ff('0x5a')][_0xd9ff('0x103')](db[_0xd9ff('0x66')],{'as':_0xd9ff('0x179')});db['ChatWebsite'][_0xd9ff('0x103')](db['ChatInteraction'],{'as':_0xd9ff('0x166')});db[_0xd9ff('0x5a')][_0xd9ff('0x103')](db[_0xd9ff('0x5d')],{'as':_0xd9ff('0x132')});db[_0xd9ff('0x5a')][_0xd9ff('0x103')](db['ChatMessage'],{'as':_0xd9ff('0x144')});db[_0xd9ff('0x5a')]['belongsTo'](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153')});db['ChatWebsite']['belongsTo'](db[_0xd9ff('0x79')],{'as':_0xd9ff('0x79'),'foreignKey':_0xd9ff('0x13e')});db['ChatWebsite'][_0xd9ff('0x13c')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0xd9ff('0x14e')});db[_0xd9ff('0x5a')][_0xd9ff('0x13c')](db['Pause'],{'as':_0xd9ff('0x155'),'foreignKey':'mandatoryDispositionPauseId'});db['ChatWebsite'][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':'Agents','through':'user_has_chat_websites'});db['OpenchannelQueueReport'][_0xd9ff('0x13c')](db[_0xd9ff('0x52')],{});db['OpenchannelQueueReport'][_0xd9ff('0x13c')](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x163'),'foreignKey':'ListId'});db[_0xd9ff('0x5c')][_0xd9ff('0x13c')](db[_0xd9ff('0x69')],{'as':'Contact','foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x5c')][_0xd9ff('0x13c')](db[_0xd9ff('0x10a')],{});db['OpenchannelQueueReport'][_0xd9ff('0x13c')](db[_0xd9ff('0x56')],{});db[_0xd9ff('0x5c')][_0xd9ff('0x13c')](db['User'],{});db[_0xd9ff('0x5c')][_0xd9ff('0x13c')](db[_0xd9ff('0x58')],{});db[_0xd9ff('0x5d')]['belongsTo'](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x17a'),'foreignKey':'UserId','onDelete':_0xd9ff('0x161')});db[_0xd9ff('0x5d')][_0xd9ff('0x13c')](db[_0xd9ff('0x62')],{'as':'Queue','foreignKey':_0xd9ff('0x17b'),'onDelete':_0xd9ff('0x161')});db[_0xd9ff('0x5d')][_0xd9ff('0x13c')](db[_0xd9ff('0x5a')],{'as':_0xd9ff('0x17c'),'foreignKey':_0xd9ff('0x15f'),'onDelete':'restrict'});db[_0xd9ff('0x5d')][_0xd9ff('0x13c')](db[_0xd9ff('0x82')],{'onDelete':_0xd9ff('0x161'),'foreignKey':'TagId'});db['ChatInteraction'][_0xd9ff('0x103')](db[_0xd9ff('0x5f')],{'as':'Messages','onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x17d')});db[_0xd9ff('0x5e')][_0xd9ff('0x13c')](db[_0xd9ff('0x5a')],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x15f')});db[_0xd9ff('0x5e')][_0xd9ff('0x13c')](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x14b'),'foreignKey':'ContactId'});db[_0xd9ff('0x5e')][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x15a'),'foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0x5e')][_0xd9ff('0x114')](db['Tag'],{'through':_0xd9ff('0x17e'),'as':_0xd9ff('0x15c')});db['ChatInteraction']['belongsToMany'](db[_0xd9ff('0x82')],{'through':_0xd9ff('0x17e'),'as':'ThroughTags'});db[_0xd9ff('0x5e')][_0xd9ff('0x114')](db['User'],{'as':_0xd9ff('0x15d'),'through':'user_has_chat_interactions','foreignKey':_0xd9ff('0x17d')});db[_0xd9ff('0x5f')][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{'onDelete':_0xd9ff('0x100'),'as':_0xd9ff('0x102')});db[_0xd9ff('0x5f')][_0xd9ff('0x13c')](db['CmContact'],{'onDelete':_0xd9ff('0x100'),'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c')});db['ChatMessage'][_0xd9ff('0x13c')](db[_0xd9ff('0x5e')],{'onDelete':_0xd9ff('0x100'),'as':_0xd9ff('0x15e'),'foreignKey':_0xd9ff('0x17d')});db[_0xd9ff('0x5f')][_0xd9ff('0x13c')](db[_0xd9ff('0xe1')],{'as':'Attachment','foreignKey':_0xd9ff('0x16b')});db[_0xd9ff('0x5f')][_0xd9ff('0x13c')](db['ChatWebsite'],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x15f')});db[_0xd9ff('0x60')][_0xd9ff('0x103')](db[_0xd9ff('0xe1')],{'as':_0xd9ff('0x17f'),'foreignKey':_0xd9ff('0x160'),'onDelete':'cascade','hooks':!![]});db[_0xd9ff('0x60')]['belongsTo'](db[_0xd9ff('0x69')],{'onDelete':_0xd9ff('0x100'),'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c')});db['ChatOfflineMessage']['belongsTo'](db[_0xd9ff('0x5a')],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x15f')});db['ChatQueue'][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x13f'),'through':'UserChatQueue','hooks':!![]});db['ChatQueue'][_0xd9ff('0x114')](db[_0xd9ff('0xdf')],{'through':'team_has_chat_queues','as':_0xd9ff('0x140')});db[_0xd9ff('0x64')][_0xd9ff('0x103')](db[_0xd9ff('0xcb')],{'as':_0xd9ff('0x144'),'foreignKey':_0xd9ff('0x180'),'onDelete':'cascade'});db[_0xd9ff('0x64')]['belongsToMany'](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x135'),'through':_0xd9ff('0x181')});db[_0xd9ff('0x66')][_0xd9ff('0x13c')](db['ChatWebsite'],{'as':_0xd9ff('0x17c'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0xd9ff('0x103')](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x115'),'foreignKey':'CompanyId'});db[_0xd9ff('0x69')]['hasMany'](db[_0xd9ff('0x136')],{'as':_0xd9ff('0x137'),'foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x69')]['hasMany'](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x69')]['hasMany'](db[_0xd9ff('0x6e')],{'as':_0xd9ff('0x139'),'foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x69')]['hasMany'](db[_0xd9ff('0x70')],{'as':_0xd9ff('0x70'),'foreignKey':_0xd9ff('0x14c')});db['CmContact'][_0xd9ff('0x103')](db[_0xd9ff('0xd1')],{'as':'JscriptySessions','foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0x69')][_0xd9ff('0x103')](db[_0xd9ff('0x10a')],{'as':_0xd9ff('0x10b'),'foreignKey':_0xd9ff('0x14c'),'onDelete':_0xd9ff('0x161')});db[_0xd9ff('0x69')][_0xd9ff('0x103')](db[_0xd9ff('0x5e')],{'as':_0xd9ff('0x10c'),'foreignKey':_0xd9ff('0x14c'),'onDelete':_0xd9ff('0x161')});db['CmContact']['hasMany'](db[_0xd9ff('0x4e')],{'as':_0xd9ff('0x10d'),'foreignKey':'ContactId','onDelete':_0xd9ff('0x161')});db[_0xd9ff('0x69')][_0xd9ff('0x103')](db[_0xd9ff('0x47')],{'as':_0xd9ff('0x10e'),'foreignKey':_0xd9ff('0x14c'),'onDelete':'restrict'});db[_0xd9ff('0x69')][_0xd9ff('0x103')](db[_0xd9ff('0x10f')],{'as':'MailInteractions','foreignKey':_0xd9ff('0x14c'),'onDelete':_0xd9ff('0x161')});db[_0xd9ff('0x69')][_0xd9ff('0x13c')](db[_0xd9ff('0x182')],{'as':_0xd9ff('0x183'),'foreignKey':'CompanyId'});db[_0xd9ff('0x69')][_0xd9ff('0x13c')](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153'),'onDelete':'cascade'});db[_0xd9ff('0x69')]['belongsToMany'](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x15d'),'through':_0xd9ff('0x116')});db[_0xd9ff('0x69')]['belongsToMany'](db[_0xd9ff('0x82')],{'as':'Tags','through':'cm_contact_has_tags'});db[_0xd9ff('0x69')]['belongsToMany'](db['Tag'],{'through':_0xd9ff('0x184'),'as':_0xd9ff('0x16a')});db['CmHopper']['belongsTo'](db['CmContact'],{'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c'),'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x136')][_0xd9ff('0x13c')](db[_0xd9ff('0xeb')],{'as':'List','foreignKey':_0xd9ff('0x153'),'onDelete':'cascade'});db[_0xd9ff('0x136')][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x17a'),'foreignKey':_0xd9ff('0x101')});db['CmHopper'][_0xd9ff('0x13c')](db[_0xd9ff('0x11f')],{'as':_0xd9ff('0x185'),'foreignKey':_0xd9ff('0x138'),'onDelete':_0xd9ff('0x100')});db['CmHopper'][_0xd9ff('0x13c')](db[_0xd9ff('0xe0')],{'as':'Campaign','foreignKey':_0xd9ff('0x186'),'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x136')][_0xd9ff('0x13c')](db['User'],{'as':_0xd9ff('0x15a'),'foreignKey':_0xd9ff('0x187')});db['CmHopperBlack']['belongsTo'](db[_0xd9ff('0x69')],{'as':'Contact','foreignKey':'ContactId','onDelete':_0xd9ff('0x100')});db['CmHopperBlack'][_0xd9ff('0x13c')](db['CmList'],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153'),'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x6b')][_0xd9ff('0x13c')](db['VoiceQueue'],{'as':_0xd9ff('0x185'),'foreignKey':_0xd9ff('0x138'),'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x6b')][_0xd9ff('0x13c')](db[_0xd9ff('0xe0')],{'as':_0xd9ff('0xe0'),'foreignKey':_0xd9ff('0x186'),'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x188')][_0xd9ff('0x103')](db[_0xd9ff('0x189')],{'as':{'plural':_0xd9ff('0x18a'),'singular':_0xd9ff('0x18b')},'foreignKey':_0xd9ff('0x18c'),'onDelete':_0xd9ff('0x100'),'hooks':!![]});db[_0xd9ff('0x188')][_0xd9ff('0x103')](db[_0xd9ff('0x189')],{'as':{'plural':_0xd9ff('0x18d'),'singular':_0xd9ff('0x18e')},'foreignKey':_0xd9ff('0x18f'),'onDelete':_0xd9ff('0x100'),'hooks':!![]});db[_0xd9ff('0x188')][_0xd9ff('0x103')](db[_0xd9ff('0x72')],{'as':'Actions','foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0xd9ff('0x77')]['hasMany'](db[_0xd9ff('0x77')],{'as':_0xd9ff('0x151'),'foreignKey':_0xd9ff('0x190'),'onDelete':_0xd9ff('0x100')});db['Interval'][_0xd9ff('0x103')](db[_0xd9ff('0x79')],{'as':'Intervals','foreignKey':_0xd9ff('0x13e'),'onDelete':_0xd9ff('0x100'),'hooks':!![],'required':![]});db[_0xd9ff('0x79')][_0xd9ff('0x103')](db[_0xd9ff('0x17')],{'as':_0xd9ff('0x107'),'foreignKey':_0xd9ff('0x13e'),'onDelete':'restrict'});db[_0xd9ff('0x79')][_0xd9ff('0x103')](db['MailApplication'],{'as':_0xd9ff('0x191'),'foreignKey':'IntervalId'});db[_0xd9ff('0x79')][_0xd9ff('0x103')](db[_0xd9ff('0x5d')],{'as':_0xd9ff('0x192'),'foreignKey':_0xd9ff('0x13e')});db[_0xd9ff('0x79')][_0xd9ff('0x103')](db[_0xd9ff('0x167')],{'as':_0xd9ff('0x193'),'foreignKey':'IntervalId'});db[_0xd9ff('0x79')]['hasMany'](db['SmsApplication'],{'as':_0xd9ff('0x194'),'foreignKey':_0xd9ff('0x13e')});db[_0xd9ff('0x195')][_0xd9ff('0x13c')](db[_0xd9ff('0x37')],{});db[_0xd9ff('0x195')][_0xd9ff('0x13c')](db[_0xd9ff('0x8d')],{'foreignKey':_0xd9ff('0x196')});db['Schedule'][_0xd9ff('0x13c')](db[_0xd9ff('0x8b')],{'foreignKey':_0xd9ff('0x197')});db[_0xd9ff('0x80')][_0xd9ff('0x114')](db[_0xd9ff('0x19')],{'as':_0xd9ff('0x198'),'through':_0xd9ff('0x134'),'onDelete':_0xd9ff('0x161')});db['Tag'][_0xd9ff('0x114')](db[_0xd9ff('0x69')],{'through':_0xd9ff('0x184')});db[_0xd9ff('0x82')][_0xd9ff('0x114')](db[_0xd9ff('0x5e')],{'through':_0xd9ff('0x17e')});db[_0xd9ff('0x82')][_0xd9ff('0x114')](db[_0xd9ff('0x10f')],{'through':'mail_interaction_has_tags'});db[_0xd9ff('0x82')][_0xd9ff('0x114')](db[_0xd9ff('0x4e')],{'through':'sms_interaction_has_tags'});db['Tag'][_0xd9ff('0x114')](db[_0xd9ff('0x47')],{'through':_0xd9ff('0x169')});db[_0xd9ff('0x82')][_0xd9ff('0x114')](db['OpenchannelInteraction'],{'through':_0xd9ff('0x177')});db['Tag'][_0xd9ff('0x114')](db[_0xd9ff('0xf3')],{'through':_0xd9ff('0x199')});db[_0xd9ff('0x85')][_0xd9ff('0x103')](db[_0xd9ff('0x189')],{'as':{'plural':_0xd9ff('0x19a'),'singular':_0xd9ff('0x19b')},'foreignKey':_0xd9ff('0x19c'),'onDelete':'cascade','hooks':!![]});db[_0xd9ff('0x85')][_0xd9ff('0x103')](db['Condition'],{'as':{'plural':_0xd9ff('0x19d'),'singular':_0xd9ff('0x19e')},'foreignKey':'TriggerAnyId','onDelete':_0xd9ff('0x100'),'hooks':!![]});db['Trigger']['hasMany'](db[_0xd9ff('0x72')],{'as':_0xd9ff('0x19f'),'foreignKey':'TriggerId','onDelete':_0xd9ff('0x100'),'hooks':!![]});db[_0xd9ff('0x8b')][_0xd9ff('0x103')](db['AnalyticFieldReport'],{'as':_0xd9ff('0x1a0'),'onDelete':'cascade','foreignKey':_0xd9ff('0x197'),'hooks':!![]});db[_0xd9ff('0x8d')]['hasMany'](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x196')});db[_0xd9ff('0x91')]['hasMany'](db[_0xd9ff('0x93')],{'as':'Fields','onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a1')});db['AnalyticFieldReport'][_0xd9ff('0x13c')](db[_0xd9ff('0x91')],{'foreignKey':_0xd9ff('0x1a1')});db['SalesforceAccount'][_0xd9ff('0x103')](db[_0xd9ff('0x96')],{'as':_0xd9ff('0x1a2'),'onDelete':_0xd9ff('0x100'),'foreignKey':'AccountId'});db[_0xd9ff('0x96')][_0xd9ff('0x103')](db['SalesforceField'],{'as':_0xd9ff('0x1a3'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0x96')]['hasMany'](db[_0xd9ff('0x97')],{'as':'Descriptions','onDelete':_0xd9ff('0x100'),'foreignKey':'DescriptionId'});db[_0xd9ff('0x96')]['hasMany'](db[_0xd9ff('0x97')],{'as':_0xd9ff('0x1a0'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0x96')][_0xd9ff('0x13c')](db[_0xd9ff('0x95')],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x1a6')});db['SalesforceField'][_0xd9ff('0x103')](db[_0xd9ff('0x97')],{'as':_0xd9ff('0x1a7'),'foreignKey':_0xd9ff('0x1a4')});db['SalesforceField'][_0xd9ff('0x103')](db[_0xd9ff('0x97')],{'as':'Description','foreignKey':_0xd9ff('0x1a8')});db['SalesforceField'][_0xd9ff('0x103')](db[_0xd9ff('0x97')],{'as':_0xd9ff('0x1a9'),'foreignKey':_0xd9ff('0x1a5')});db['SalesforceField']['belongsTo'](db[_0xd9ff('0x87')],{'as':'Variable','foreignKey':_0xd9ff('0x1aa')});db[_0xd9ff('0x99')][_0xd9ff('0x103')](db['SugarcrmConfiguration'],{'as':_0xd9ff('0x1a2'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a6')});db[_0xd9ff('0x9b')][_0xd9ff('0x103')](db[_0xd9ff('0x9d')],{'as':_0xd9ff('0x1a3'),'onDelete':'cascade','foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0x9b')]['hasMany'](db[_0xd9ff('0x9d')],{'as':'Descriptions','onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a8')});db[_0xd9ff('0x9b')][_0xd9ff('0x103')](db[_0xd9ff('0x9d')],{'as':_0xd9ff('0x1a0'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a5')});db['SugarcrmConfiguration'][_0xd9ff('0x13c')](db['SugarcrmAccount'],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x1a6')});db[_0xd9ff('0x9d')]['hasMany'](db['SugarcrmField'],{'as':_0xd9ff('0x1a7'),'foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0x9d')][_0xd9ff('0x103')](db[_0xd9ff('0x9d')],{'as':_0xd9ff('0x1ab'),'foreignKey':_0xd9ff('0x1a8')});db['SugarcrmField'][_0xd9ff('0x103')](db[_0xd9ff('0x9d')],{'as':_0xd9ff('0x1a9'),'foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0x9d')]['belongsTo'](db[_0xd9ff('0x87')],{'as':_0xd9ff('0x87'),'foreignKey':_0xd9ff('0x1aa')});db[_0xd9ff('0x9f')]['hasMany'](db[_0xd9ff('0xa1')],{'as':_0xd9ff('0x1a2'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a6')});db['DeskConfiguration'][_0xd9ff('0x103')](db[_0xd9ff('0xa3')],{'as':'Subjects','onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0xa1')]['hasMany'](db[_0xd9ff('0xa3')],{'as':'Descriptions','onDelete':_0xd9ff('0x100'),'foreignKey':'DescriptionId'});db['DeskConfiguration'][_0xd9ff('0x103')](db[_0xd9ff('0xa3')],{'as':'Fields','onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0xa1')][_0xd9ff('0x13c')](db['DeskAccount'],{'as':'Account','foreignKey':'AccountId'});db[_0xd9ff('0xa1')][_0xd9ff('0x114')](db['Tag'],{'through':_0xd9ff('0x1ac')});db[_0xd9ff('0xa3')][_0xd9ff('0x103')](db[_0xd9ff('0xa3')],{'as':_0xd9ff('0x1a7'),'foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0xa3')][_0xd9ff('0x103')](db['DeskField'],{'as':_0xd9ff('0x1ab'),'foreignKey':_0xd9ff('0x1a8')});db[_0xd9ff('0xa3')][_0xd9ff('0x103')](db['DeskField'],{'as':_0xd9ff('0x1a9'),'foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0xa3')][_0xd9ff('0x13c')](db[_0xd9ff('0x87')],{'as':_0xd9ff('0x87'),'foreignKey':_0xd9ff('0x1aa')});db[_0xd9ff('0xa5')][_0xd9ff('0x103')](db[_0xd9ff('0x1ad')],{'as':_0xd9ff('0x1a2'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xd9ff('0x1ad')][_0xd9ff('0x103')](db[_0xd9ff('0xa8')],{'as':_0xd9ff('0x1a3'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xd9ff('0x1ad')][_0xd9ff('0x103')](db[_0xd9ff('0xa8')],{'as':_0xd9ff('0x1ae'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a8')});db[_0xd9ff('0x1ad')][_0xd9ff('0x103')](db['ZohoField'],{'as':'Fields','onDelete':'cascade','foreignKey':'FieldId'});db[_0xd9ff('0x1ad')]['belongsTo'](db[_0xd9ff('0xa5')],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x1a6')});db['ZohoField']['hasMany'](db['ZohoField'],{'as':_0xd9ff('0x1a7'),'foreignKey':_0xd9ff('0x1a4')});db['ZohoField'][_0xd9ff('0x103')](db[_0xd9ff('0xa8')],{'as':_0xd9ff('0x1ab'),'foreignKey':_0xd9ff('0x1a8')});db[_0xd9ff('0xa8')][_0xd9ff('0x103')](db['ZohoField'],{'as':_0xd9ff('0x1a9'),'foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0xa8')][_0xd9ff('0x13c')](db[_0xd9ff('0x87')],{'as':_0xd9ff('0x87'),'foreignKey':_0xd9ff('0x1aa')});db[_0xd9ff('0xaa')][_0xd9ff('0x103')](db[_0xd9ff('0xab')],{'as':_0xd9ff('0x1a2'),'onDelete':'cascade','foreignKey':_0xd9ff('0x1a6')});db[_0xd9ff('0xab')][_0xd9ff('0x103')](db[_0xd9ff('0xad')],{'as':'Subjects','foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0xab')][_0xd9ff('0x103')](db[_0xd9ff('0xad')],{'as':'Descriptions','foreignKey':_0xd9ff('0x1a8')});db[_0xd9ff('0xab')][_0xd9ff('0x103')](db['ZendeskField'],{'as':_0xd9ff('0x1a0'),'foreignKey':'FieldId'});db['ZendeskConfiguration']['belongsTo'](db[_0xd9ff('0xaa')],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x1a6')});db['ZendeskConfiguration'][_0xd9ff('0x114')](db[_0xd9ff('0x82')],{'through':_0xd9ff('0x1af')});db[_0xd9ff('0xad')]['hasMany'](db[_0xd9ff('0xad')],{'as':'Subject','foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0xad')]['hasMany'](db[_0xd9ff('0xad')],{'as':_0xd9ff('0x1ab'),'foreignKey':_0xd9ff('0x1a8')});db[_0xd9ff('0xad')][_0xd9ff('0x103')](db[_0xd9ff('0xad')],{'as':'Field','foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0xad')][_0xd9ff('0x13c')](db[_0xd9ff('0x87')],{'as':_0xd9ff('0x87'),'foreignKey':_0xd9ff('0x1aa')});db[_0xd9ff('0xaf')][_0xd9ff('0x103')](db['FreshdeskConfiguration'],{'as':_0xd9ff('0x1a2'),'onDelete':'cascade','foreignKey':_0xd9ff('0x1a6')});db[_0xd9ff('0xb1')][_0xd9ff('0x103')](db[_0xd9ff('0xb3')],{'as':_0xd9ff('0x1a3'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0xb1')][_0xd9ff('0x103')](db[_0xd9ff('0xb3')],{'as':_0xd9ff('0x1ae'),'onDelete':'cascade','foreignKey':'DescriptionId'});db['FreshdeskConfiguration'][_0xd9ff('0x103')](db[_0xd9ff('0xb3')],{'as':'Fields','onDelete':'cascade','foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0xb1')][_0xd9ff('0x13c')](db[_0xd9ff('0xaf')],{'as':'Account','foreignKey':_0xd9ff('0x1a6')});db[_0xd9ff('0xb1')][_0xd9ff('0x114')](db['Tag'],{'through':_0xd9ff('0x1b0')});db['FreshdeskField'][_0xd9ff('0x103')](db['FreshdeskField'],{'as':_0xd9ff('0x1a7'),'foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0xb3')][_0xd9ff('0x103')](db[_0xd9ff('0xb3')],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField']['hasMany'](db[_0xd9ff('0xb3')],{'as':_0xd9ff('0x1a9'),'foreignKey':'FieldId'});db['FreshdeskField'][_0xd9ff('0x13c')](db[_0xd9ff('0x87')],{'as':_0xd9ff('0x87'),'foreignKey':'VariableId'});db[_0xd9ff('0xb5')]['hasMany'](db[_0xd9ff('0xb7')],{'as':_0xd9ff('0x1a2'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a6')});db['VtigerConfiguration'][_0xd9ff('0x103')](db[_0xd9ff('0xb9')],{'as':_0xd9ff('0x1a3'),'foreignKey':'SubjectId'});db[_0xd9ff('0xb7')]['hasMany'](db['VtigerField'],{'as':'Descriptions','foreignKey':'DescriptionId'});db['VtigerConfiguration'][_0xd9ff('0x103')](db[_0xd9ff('0xb9')],{'as':_0xd9ff('0x1a0'),'foreignKey':'FieldId'});db[_0xd9ff('0xb7')][_0xd9ff('0x13c')](db['VtigerAccount'],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x1a6')});db[_0xd9ff('0xb9')]['hasMany'](db[_0xd9ff('0xb9')],{'as':_0xd9ff('0x1a7'),'foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0xb9')]['hasMany'](db['VtigerField'],{'as':_0xd9ff('0x1ab'),'foreignKey':_0xd9ff('0x1a8')});db['VtigerField']['hasMany'](db[_0xd9ff('0xb9')],{'as':_0xd9ff('0x1a9'),'foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0xb9')][_0xd9ff('0x13c')](db[_0xd9ff('0x87')],{'as':_0xd9ff('0x87'),'foreignKey':_0xd9ff('0x1aa')});db[_0xd9ff('0xba')][_0xd9ff('0x103')](db[_0xd9ff('0xbc')],{'as':_0xd9ff('0x1a2'),'onDelete':'cascade','foreignKey':_0xd9ff('0x1a6')});db['ServicenowConfiguration'][_0xd9ff('0x103')](db[_0xd9ff('0xbe')],{'as':_0xd9ff('0x1a3'),'foreignKey':'SubjectId'});db[_0xd9ff('0xbc')][_0xd9ff('0x103')](db[_0xd9ff('0xbe')],{'as':'Descriptions','foreignKey':_0xd9ff('0x1a8')});db[_0xd9ff('0xbc')][_0xd9ff('0x103')](db[_0xd9ff('0xbe')],{'as':'Fields','foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0xbc')][_0xd9ff('0x13c')](db[_0xd9ff('0xba')],{'as':_0xd9ff('0x159'),'foreignKey':'AccountId'});db['ServicenowField'][_0xd9ff('0x103')](db[_0xd9ff('0xbe')],{'as':'Subject','foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0xbe')][_0xd9ff('0x103')](db[_0xd9ff('0xbe')],{'as':_0xd9ff('0x1ab'),'foreignKey':'DescriptionId'});db[_0xd9ff('0xbe')][_0xd9ff('0x103')](db[_0xd9ff('0xbe')],{'as':_0xd9ff('0x1a9'),'foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0xbe')][_0xd9ff('0x13c')](db[_0xd9ff('0x87')],{'as':'Variable','foreignKey':_0xd9ff('0x1aa')});db[_0xd9ff('0xbf')]['hasMany'](db[_0xd9ff('0xc1')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0xd9ff('0x1a6')});db[_0xd9ff('0xc1')][_0xd9ff('0x103')](db[_0xd9ff('0xc3')],{'as':_0xd9ff('0x1a3'),'onDelete':_0xd9ff('0x100'),'foreignKey':'SubjectId'});db['Dynamics365Configuration'][_0xd9ff('0x103')](db[_0xd9ff('0xc3')],{'as':'Descriptions','onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a8')});db['Dynamics365Configuration'][_0xd9ff('0x103')](db[_0xd9ff('0xc3')],{'as':_0xd9ff('0x1a0'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1a5')});db['Dynamics365Configuration'][_0xd9ff('0x13c')](db['Dynamics365Account'],{'as':'Account','foreignKey':_0xd9ff('0x1a6')});db[_0xd9ff('0xc3')][_0xd9ff('0x103')](db[_0xd9ff('0xc3')],{'as':'Subject','foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0xc3')][_0xd9ff('0x103')](db[_0xd9ff('0xc3')],{'as':'Description','foreignKey':'DescriptionId'});db[_0xd9ff('0xc3')][_0xd9ff('0x103')](db[_0xd9ff('0xc3')],{'as':_0xd9ff('0x1a9'),'foreignKey':_0xd9ff('0x1a5')});db['Dynamics365Field']['belongsTo'](db[_0xd9ff('0x87')],{'as':_0xd9ff('0x87'),'foreignKey':_0xd9ff('0x1aa')});db[_0xd9ff('0x1b1')][_0xd9ff('0x103')](db[_0xd9ff('0xc5')],{'as':_0xd9ff('0x1a2'),'onDelete':_0xd9ff('0x100'),'foreignKey':'AccountId'});db[_0xd9ff('0xc5')]['hasMany'](db['FreshsalesField'],{'as':_0xd9ff('0x1a3'),'foreignKey':_0xd9ff('0x1a4')});db[_0xd9ff('0xc5')][_0xd9ff('0x103')](db['FreshsalesField'],{'as':_0xd9ff('0x1ae'),'foreignKey':'DescriptionId'});db[_0xd9ff('0xc5')][_0xd9ff('0x103')](db['FreshsalesField'],{'as':_0xd9ff('0x1a0'),'foreignKey':_0xd9ff('0x1a5')});db[_0xd9ff('0xc5')][_0xd9ff('0x13c')](db[_0xd9ff('0x1b1')],{'as':_0xd9ff('0x159'),'foreignKey':_0xd9ff('0x1a6')});db[_0xd9ff('0x1b2')]['hasMany'](db[_0xd9ff('0x1b2')],{'as':_0xd9ff('0x1a7'),'foreignKey':'SubjectId'});db[_0xd9ff('0x1b2')][_0xd9ff('0x103')](db[_0xd9ff('0x1b2')],{'as':_0xd9ff('0x1ab'),'foreignKey':_0xd9ff('0x1a8')});db['FreshsalesField'][_0xd9ff('0x103')](db[_0xd9ff('0x1b2')],{'as':_0xd9ff('0x1a9'),'foreignKey':_0xd9ff('0x1a5')});db['FreshsalesField'][_0xd9ff('0x13c')](db[_0xd9ff('0x87')],{'as':_0xd9ff('0x87'),'foreignKey':'VariableId'});db[_0xd9ff('0xc9')][_0xd9ff('0x13c')](db['ChatWebsite'],{});db['ChatQueueReport']['belongsTo'](db['CmList'],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153')});db[_0xd9ff('0xc9')][_0xd9ff('0x13c')](db['CmContact'],{'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c')});db['ChatQueueReport'][_0xd9ff('0x13c')](db['ChatInteraction'],{});db['ChatQueueReport'][_0xd9ff('0x13c')](db['ChatMessage'],{});db['ChatQueueReport'][_0xd9ff('0x13c')](db['User'],{});db[_0xd9ff('0xc9')][_0xd9ff('0x13c')](db[_0xd9ff('0x62')],{});db[_0xd9ff('0xcb')][_0xd9ff('0x13c')](db['User'],{'onDelete':'cascade','foreignKey':_0xd9ff('0x1b3')});db['ChatInternalMessage'][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1b4')});db[_0xd9ff('0xd1')][_0xd9ff('0x103')](db[_0xd9ff('0xcf')],{'foreignKey':'SessionId','onDelete':_0xd9ff('0x100')});db['JscriptySessionReport']['hasMany'](db[_0xd9ff('0xcd')],{'foreignKey':_0xd9ff('0x1b5'),'onDelete':_0xd9ff('0x100')});db['SmsQueueReport'][_0xd9ff('0x13c')](db['SmsAccount'],{});db['SmsQueueReport'][_0xd9ff('0x13c')](db[_0xd9ff('0xeb')],{'as':'List','foreignKey':_0xd9ff('0x153')});db[_0xd9ff('0xd2')][_0xd9ff('0x13c')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0xd9ff('0xd2')]['belongsTo'](db[_0xd9ff('0x4e')],{});db[_0xd9ff('0xd2')]['belongsTo'](db[_0xd9ff('0x16f')],{});db['SmsQueueReport'][_0xd9ff('0x13c')](db['User'],{});db[_0xd9ff('0xd2')][_0xd9ff('0x13c')](db[_0xd9ff('0x123')],{});db[_0xd9ff('0xd7')][_0xd9ff('0x103')](db[_0xd9ff('0xd1')],{'foreignKey':_0xd9ff('0x1b6')});db[_0xd9ff('0xd7')][_0xd9ff('0x103')](db[_0xd9ff('0xcf')],{'foreignKey':_0xd9ff('0x1b6')});db[_0xd9ff('0xd7')][_0xd9ff('0x103')](db[_0xd9ff('0xcd')],{'foreignKey':'ProjectId'});db['SquareProject']['belongsToMany'](db['User'],{'as':_0xd9ff('0x15d'),'through':_0xd9ff('0x1b7')});db[_0xd9ff('0xdf')][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':'Agents','through':_0xd9ff('0x119')});db[_0xd9ff('0xdf')][_0xd9ff('0x114')](db[_0xd9ff('0x11f')],{'through':_0xd9ff('0xfb'),'as':_0xd9ff('0x120')});db[_0xd9ff('0xdf')][_0xd9ff('0x114')](db['MailQueue'],{'through':'team_has_mail_queues','as':_0xd9ff('0x1b8')});db['Team'][_0xd9ff('0x114')](db[_0xd9ff('0x62')],{'through':'team_has_chat_queues','as':_0xd9ff('0x1b9')});db[_0xd9ff('0xdf')][_0xd9ff('0x114')](db[_0xd9ff('0x4a')],{'through':_0xd9ff('0x16c'),'as':_0xd9ff('0x122')});db[_0xd9ff('0xdf')][_0xd9ff('0x114')](db[_0xd9ff('0x123')],{'through':_0xd9ff('0x1ba'),'as':_0xd9ff('0x1bb')});db['Team']['belongsToMany'](db['OpenchannelQueue'],{'through':_0xd9ff('0x178'),'as':'OpenchannelQueues'});db['Team']['belongsToMany'](db['WhatsappQueue'],{'through':_0xd9ff('0x1bc'),'as':_0xd9ff('0x125')});db[_0xd9ff('0xdf')][_0xd9ff('0x114')](db[_0xd9ff('0x1bd')],{'through':_0xd9ff('0x1be'),'as':_0xd9ff('0x121')});db['Campaign'][_0xd9ff('0x103')](db[_0xd9ff('0x136')],{'as':_0xd9ff('0x137'),'foreignKey':'CampaignId'});db['Campaign'][_0xd9ff('0x103')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0xd9ff('0x186')});db[_0xd9ff('0xe0')]['hasMany'](db['CmHopperHistory'],{'as':_0xd9ff('0x139'),'foreignKey':_0xd9ff('0x186')});db[_0xd9ff('0xe0')][_0xd9ff('0x103')](db[_0xd9ff('0x6b')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0xd9ff('0xe0')]['belongsTo'](db[_0xd9ff('0x25')],{'as':_0xd9ff('0x25'),'foreignKey':_0xd9ff('0x13d')});db['Campaign'][_0xd9ff('0x13c')](db[_0xd9ff('0x25')],{'as':_0xd9ff('0x1bf'),'foreignKey':_0xd9ff('0x1c0')});db[_0xd9ff('0xe0')][_0xd9ff('0x13c')](db[_0xd9ff('0x79')],{'as':'Interval','foreignKey':_0xd9ff('0x13e')});db[_0xd9ff('0xe0')][_0xd9ff('0x13c')](db['SquareProject'],{'as':_0xd9ff('0xdb'),'foreignKey':'SquareProjectId'});db[_0xd9ff('0xe0')][_0xd9ff('0x114')](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x117'),'through':_0xd9ff('0x1c1')});db[_0xd9ff('0xe0')][_0xd9ff('0x114')](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x1c2'),'through':_0xd9ff('0x1c3')});db[_0xd9ff('0xe1')][_0xd9ff('0x13c')](db[_0xd9ff('0x60')],{'as':_0xd9ff('0x60'),'foreignKey':_0xd9ff('0x160')});db['MailTransferReport']['belongsTo'](db[_0xd9ff('0x3d')],{});db[_0xd9ff('0x1c4')][_0xd9ff('0x13c')](db[_0xd9ff('0x10f')],{});db[_0xd9ff('0x1c4')][_0xd9ff('0x13c')](db[_0xd9ff('0x37')],{'foreignKey':_0xd9ff('0x1c5'),'as':_0xd9ff('0x1c6')});db['MailTransferReport']['belongsTo'](db['User'],{'foreignKey':_0xd9ff('0x1c7'),'as':_0xd9ff('0x1c8')});db[_0xd9ff('0x1c4')]['belongsTo'](db[_0xd9ff('0x102')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0xd9ff('0x1c4')][_0xd9ff('0x13c')](db[_0xd9ff('0x39')],{'foreignKey':'ToMailQueueId','as':_0xd9ff('0x1c9')});db[_0xd9ff('0x1c4')][_0xd9ff('0x13c')](db[_0xd9ff('0x37')],{'foreignKey':_0xd9ff('0x1ca'),'as':'ToAccount'});db[_0xd9ff('0x1cb')][_0xd9ff('0x13c')](db[_0xd9ff('0x5f')],{});db['ChatTransferReport'][_0xd9ff('0x13c')](db[_0xd9ff('0x5e')],{});db[_0xd9ff('0x1cb')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0xd9ff('0x1cc'),'as':_0xd9ff('0x1c6')});db[_0xd9ff('0x1cb')]['belongsTo'](db[_0xd9ff('0x102')],{'foreignKey':_0xd9ff('0x1c7'),'as':_0xd9ff('0x1c8')});db[_0xd9ff('0x1cb')]['belongsTo'](db[_0xd9ff('0x102')],{'foreignKey':_0xd9ff('0x1cd'),'as':_0xd9ff('0x1ce')});db[_0xd9ff('0x1cb')][_0xd9ff('0x13c')](db['ChatQueue'],{'foreignKey':_0xd9ff('0x1cf'),'as':_0xd9ff('0x1c9')});db[_0xd9ff('0x1cb')][_0xd9ff('0x13c')](db[_0xd9ff('0x5a')],{'foreignKey':'ToChatWebsiteId','as':_0xd9ff('0x1d0')});db[_0xd9ff('0xe6')][_0xd9ff('0x13c')](db['FaxMessage'],{});db[_0xd9ff('0xe6')][_0xd9ff('0x13c')](db['FaxInteraction'],{});db[_0xd9ff('0xe6')][_0xd9ff('0x13c')](db[_0xd9ff('0x45')],{'foreignKey':_0xd9ff('0x1d1'),'as':'FromAccount'});db[_0xd9ff('0xe6')]['belongsTo'](db[_0xd9ff('0x102')],{'foreignKey':'FromUserId','as':_0xd9ff('0x1c8')});db[_0xd9ff('0xe6')][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{'foreignKey':'ToUserId','as':_0xd9ff('0x1ce')});db[_0xd9ff('0xe6')][_0xd9ff('0x13c')](db[_0xd9ff('0x4a')],{'foreignKey':_0xd9ff('0x1d2'),'as':_0xd9ff('0x1c9')});db[_0xd9ff('0xe6')][_0xd9ff('0x13c')](db[_0xd9ff('0x45')],{'foreignKey':_0xd9ff('0x1d3'),'as':'ToAccount'});db[_0xd9ff('0xe8')][_0xd9ff('0x13c')](db['OpenchannelMessage'],{});db[_0xd9ff('0xe8')][_0xd9ff('0x13c')](db[_0xd9ff('0x10a')],{});db['OpenchannelTransferReport'][_0xd9ff('0x13c')](db[_0xd9ff('0x52')],{'foreignKey':_0xd9ff('0x1d4'),'as':_0xd9ff('0x1c6')});db[_0xd9ff('0xe8')][_0xd9ff('0x13c')](db['User'],{'foreignKey':'FromUserId','as':_0xd9ff('0x1c8')});db[_0xd9ff('0xe8')][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{'foreignKey':_0xd9ff('0x1cd'),'as':_0xd9ff('0x1ce')});db[_0xd9ff('0xe8')]['belongsTo'](db[_0xd9ff('0x58')],{'foreignKey':_0xd9ff('0x1d5'),'as':_0xd9ff('0x1c9')});db[_0xd9ff('0xe8')][_0xd9ff('0x13c')](db[_0xd9ff('0x52')],{'foreignKey':_0xd9ff('0x1d6'),'as':_0xd9ff('0x1d0')});db[_0xd9ff('0x1d7')]['belongsTo'](db[_0xd9ff('0x16f')],{});db[_0xd9ff('0x1d7')]['belongsTo'](db[_0xd9ff('0x4e')],{});db[_0xd9ff('0x1d7')][_0xd9ff('0x13c')](db[_0xd9ff('0x12e')],{'foreignKey':'FromSmsAccountId','as':_0xd9ff('0x1c6')});db[_0xd9ff('0x1d7')][_0xd9ff('0x13c')](db['User'],{'foreignKey':_0xd9ff('0x1c7'),'as':_0xd9ff('0x1c8')});db[_0xd9ff('0x1d7')]['belongsTo'](db[_0xd9ff('0x102')],{'foreignKey':'ToUserId','as':_0xd9ff('0x1ce')});db['SmsTransferReport'][_0xd9ff('0x13c')](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0xd9ff('0x1c9')});db[_0xd9ff('0x1d7')][_0xd9ff('0x13c')](db[_0xd9ff('0x12e')],{'foreignKey':_0xd9ff('0x1d8'),'as':_0xd9ff('0x1d0')});db[_0xd9ff('0xeb')][_0xd9ff('0x103')](db[_0xd9ff('0x77')],{'as':_0xd9ff('0x151'),'foreignKey':'ListId','onDelete':'cascade'});db[_0xd9ff('0xeb')]['hasMany'](db[_0xd9ff('0x1d9')],{'as':_0xd9ff('0x1da'),'foreignKey':'ListId'});db[_0xd9ff('0xeb')]['hasMany'](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x115'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x153')});db[_0xd9ff('0xeb')][_0xd9ff('0x103')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0xd9ff('0x153')});db['CmList'][_0xd9ff('0x103')](db[_0xd9ff('0x6e')],{'as':_0xd9ff('0x109'),'foreignKey':'ListId'});db[_0xd9ff('0xeb')][_0xd9ff('0x103')](db[_0xd9ff('0x70')],{'as':'ReportAgentPreview','foreignKey':_0xd9ff('0x153')});db[_0xd9ff('0xeb')][_0xd9ff('0x114')](db[_0xd9ff('0x11f')],{'as':_0xd9ff('0x1db'),'through':'voice_queues_has_cm_lists'});db[_0xd9ff('0xeb')][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x13f'),'through':'cm_user_has_lists'});db[_0xd9ff('0x1bd')][_0xd9ff('0x103')](db[_0xd9ff('0x17')],{'as':_0xd9ff('0x107'),'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x1bd')][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x13f'),'through':_0xd9ff('0x1dc')});db[_0xd9ff('0x1bd')][_0xd9ff('0x114')](db[_0xd9ff('0xdf')],{'through':_0xd9ff('0x1be'),'as':_0xd9ff('0x140')});db[_0xd9ff('0xed')][_0xd9ff('0x103')](db['User'],{'as':'Users','foreignKey':_0xd9ff('0x1dd')});db[_0xd9ff('0xed')][_0xd9ff('0x103')](db[_0xd9ff('0x1de')],{'as':_0xd9ff('0x1df'),'foreignKey':'userProfileId','onDelete':_0xd9ff('0x100')});db[_0xd9ff('0x1de')][_0xd9ff('0x103')](db[_0xd9ff('0x1e0')],{'as':'Resources','foreignKey':_0xd9ff('0x1e1'),'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0xf1')][_0xd9ff('0x103')](db[_0xd9ff('0x77')],{'as':_0xd9ff('0x151'),'foreignKey':_0xd9ff('0x1e2'),'onDelete':_0xd9ff('0x100')});db[_0xd9ff('0xf1')][_0xd9ff('0x103')](db[_0xd9ff('0x75')],{'as':_0xd9ff('0x152'),'foreignKey':_0xd9ff('0x1e2')});db[_0xd9ff('0xf1')][_0xd9ff('0x103')](db['WhatsappMessage'],{'as':_0xd9ff('0x144'),'foreignKey':_0xd9ff('0x1e2')});db[_0xd9ff('0xf1')]['hasMany'](db[_0xd9ff('0xf3')],{'as':'Interactions'});db['WhatsappAccount'][_0xd9ff('0x103')](db[_0xd9ff('0x1e3')],{'as':_0xd9ff('0x132')});db[_0xd9ff('0xf1')]['belongsTo'](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153')});db['WhatsappAccount'][_0xd9ff('0x13c')](db[_0xd9ff('0x7b')],{'as':'mandatoryDispositionPause','foreignKey':_0xd9ff('0x156')});db[_0xd9ff('0xf1')]['belongsToMany'](db[_0xd9ff('0x102')],{'as':'Agents','through':_0xd9ff('0x1e4')});db[_0xd9ff('0x1e3')]['belongsTo'](db['User'],{'onDelete':_0xd9ff('0x161')});db[_0xd9ff('0x1e3')][_0xd9ff('0x13c')](db['WhatsappQueue'],{'onDelete':'restrict'});db[_0xd9ff('0x1e3')][_0xd9ff('0x13c')](db['WhatsappAccount'],{'onDelete':_0xd9ff('0x161')});db['WhatsappApplication'][_0xd9ff('0x13c')](db['Interval'],{'onDelete':_0xd9ff('0x161'),'foreignKey':_0xd9ff('0x13e')});db[_0xd9ff('0x1e3')][_0xd9ff('0x13c')](db['Tag'],{'onDelete':'restrict','foreignKey':_0xd9ff('0x162')});db[_0xd9ff('0xf3')][_0xd9ff('0x103')](db[_0xd9ff('0x1e5')],{'as':_0xd9ff('0x144'),'onDelete':_0xd9ff('0x100'),'foreignKey':_0xd9ff('0x1e6')});db[_0xd9ff('0xf3')][_0xd9ff('0x13c')](db[_0xd9ff('0xf1')],{'as':'Account','foreignKey':_0xd9ff('0x1e2')});db['WhatsappInteraction'][_0xd9ff('0x13c')](db[_0xd9ff('0x69')],{'as':'Contact','foreignKey':'ContactId'});db[_0xd9ff('0xf3')]['belongsTo'](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x15a'),'foreignKey':_0xd9ff('0x101')});db[_0xd9ff('0xf3')]['belongsToMany'](db[_0xd9ff('0x82')],{'through':_0xd9ff('0x199'),'as':_0xd9ff('0x15c')});db[_0xd9ff('0xf3')]['belongsToMany'](db[_0xd9ff('0x82')],{'through':_0xd9ff('0x199'),'as':_0xd9ff('0x16a')});db['WhatsappInteraction'][_0xd9ff('0x114')](db['User'],{'as':_0xd9ff('0x15d'),'through':'user_has_whatsapp_interactions','foreignKey':_0xd9ff('0x1e6')});db[_0xd9ff('0x1e5')][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x102')});db[_0xd9ff('0x1e5')][_0xd9ff('0x13c')](db['CmContact'],{'onDelete':_0xd9ff('0x100'),'as':'Contact'});db[_0xd9ff('0x1e5')][_0xd9ff('0x13c')](db[_0xd9ff('0xf3')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0xd9ff('0x1e6')});db[_0xd9ff('0x1e5')]['belongsTo'](db[_0xd9ff('0xf1')],{'as':_0xd9ff('0x159'),'foreignKey':'WhatsappAccountId'});db['WhatsappQueueReport'][_0xd9ff('0x13c')](db['WhatsappAccount'],{});db[_0xd9ff('0xf6')]['belongsTo'](db[_0xd9ff('0xeb')],{'as':_0xd9ff('0x163'),'foreignKey':_0xd9ff('0x153')});db[_0xd9ff('0xf6')][_0xd9ff('0x13c')](db[_0xd9ff('0x69')],{'as':_0xd9ff('0x14b'),'foreignKey':_0xd9ff('0x14c')});db[_0xd9ff('0xf6')][_0xd9ff('0x13c')](db['WhatsappInteraction'],{});db[_0xd9ff('0xf6')][_0xd9ff('0x13c')](db[_0xd9ff('0xfa')],{});db[_0xd9ff('0xf6')][_0xd9ff('0x13c')](db[_0xd9ff('0x1e5')],{});db[_0xd9ff('0xf6')][_0xd9ff('0x13c')](db[_0xd9ff('0x102')],{});db[_0xd9ff('0xf8')][_0xd9ff('0x13c')](db['WhatsappMessage'],{});db[_0xd9ff('0xf8')][_0xd9ff('0x13c')](db[_0xd9ff('0xf3')],{});db['WhatsappTransferReport'][_0xd9ff('0x13c')](db[_0xd9ff('0xf1')],{'foreignKey':_0xd9ff('0x1e7'),'as':'FromAccount'});db[_0xd9ff('0xf8')]['belongsTo'](db[_0xd9ff('0xf1')],{'foreignKey':_0xd9ff('0x1e8'),'as':_0xd9ff('0x1d0')});db[_0xd9ff('0xf8')][_0xd9ff('0x13c')](db[_0xd9ff('0xfa')],{'foreignKey':_0xd9ff('0x1e9'),'as':_0xd9ff('0x1c9')});db[_0xd9ff('0xf8')]['belongsTo'](db[_0xd9ff('0x102')],{'foreignKey':_0xd9ff('0x1c7'),'as':'FromAgent'});db[_0xd9ff('0xf8')]['belongsTo'](db[_0xd9ff('0x102')],{'foreignKey':_0xd9ff('0x1cd'),'as':_0xd9ff('0x1ce')});db['WhatsappQueue'][_0xd9ff('0x114')](db[_0xd9ff('0x102')],{'as':_0xd9ff('0x13f'),'through':'UserWhatsappQueue','foreignKey':_0xd9ff('0x1ea')});db[_0xd9ff('0xfa')][_0xd9ff('0x114')](db[_0xd9ff('0xdf')],{'through':_0xd9ff('0x1bc'),'as':'Teams'});module[_0xd9ff('0x1eb')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x7634=['jstz','determine','defaultsDeep','motion2','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','utf8_general_ci','xcall','mysql','password','options','sequelizeHistory','database','User','import','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','../api/mailServerIn/mailServerIn.model','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','MailQueueReport','Dashboard','../api/dashboard/dashboard.model','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../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','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../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','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','../api/condition/condition.model','Interval','../api/interval/interval.model','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','../api/schedule/schedule.model','Sound','Tag','Template','../api/variable/variable.model','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','SalesforceConfiguration','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','ZohoAccount','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareRecording/squareRecording.model','SquareMessage','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','../api/attachment/attachment.model','Plugin','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','WhatsappTransferReport','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','Realtime','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','cascade','UserId','Recordings','hasMany','VoiceQueuesRt','HopperFinals','HopperHistory','ChatInteraction','ChatInteractions','SmsInteractions','FaxInteraction','FaxInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','cm_user_has_contacts','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','OpenchannelInteractions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','MailQueues','FaxQueues','SmsQueues','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','ChatWebsites','user_has_chat_websites','MailAccounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','Sounds','Members','VoiceQueueId','Hoppers','HopperHistories','JscriptySessions','TrunkBackupId','IntervalId','Pause','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','BlackLists','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','AgentReports','Contact','ContactId','MailServerOut','MailAccountId','MailServerIn','Smtp','Dispositions','Answers','Interactions','List','ListId','TemplateId','team_has_mail_queues','MailInteractionId','Account','Owner','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachment','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','restrict','DashboardItem','Items','FaxAccountId','CannedAnswer','Exntensions','user_has_fax_accounts','TagId','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','Applications','SmsInteractionId','sms_interaction_has_tags','user_has_sms_interactions','team_has_sms_queues','OpenchannelAccountId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','Agent','ChatQueue','Queue','ChatQueueId','chat_interaction_has_tags','ChatInteractionId','ChatGroupId','Website','CompanyId','MailInteractions','Company','cm_contact_has_tags','CampaignId','OwnerId','OneAll','AutomationAllId','Condition','Any','AutomationAnyId','Actions','AutomationId','Intervals','Extensions','MailApplications','ChatApplications','SmsApplications','Schedule','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerId','Fields','MetricId','Subjects','SubjectId','SalesforceField','Descriptions','DescriptionId','FieldId','AccountId','Subject','Field','Variable','VariableId','SugarcrmAccount','SugarcrmConfiguration','Configurations','Description','DeskField','int_desk_configuration_has_tags','ZendeskConfiguration','int_freshdesk_configuration_has_tags','Dynamics365Account','FromId','ToId','SessionId','ProjectId','team_has_chat_queues','ChatQueues','team_has_whatsapp_queues','TrunkId','TrunkBackup','SquareProjectId','Lists','FromMailAccountId','FromAccount','ToUserId','ToAgent','ToMailQueueId','ToMailAccountId','ToAccount','ToChatQueueId','FromFaxAccountId','FromUserId','FromAgent','ToFaxQueueId','ToQueue','ToFaxAccountId','ToOpenchannelQueueId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CmCustomField','CustomFields','Queues','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','FromWhatsappAccountId','ToWhatsappAccountId','WhatsappQueueId','../config/environment','sequelize','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7634,0x1ed));var _0x4763=function(_0xdfbe21,_0xbc92de){_0xdfbe21=_0xdfbe21-0x0;var _0x5e1e86=_0x7634[_0xdfbe21];return _0x5e1e86;};'use strict';var path=require('path');var config=require(_0x4763('0x0'));var Sequelize=require(_0x4763('0x1'));var _=require(_0x4763('0x2'));var jstz=require(_0x4763('0x3'));var timezone=jstz[_0x4763('0x4')]();config[_0x4763('0x1')]=_[_0x4763('0x5')](config[_0x4763('0x1')],{'database':_0x4763('0x6'),'username':'xcall','password':_0x4763('0x7'),'options':{'host':_0x4763('0x8'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x4763('0x9')},'logging':![],'timezone':timezone[_0x4763('0xa')](),'define':{'charset':_0x4763('0xb'),'collate':_0x4763('0xc')}}});config['sequelizeHistory']=_[_0x4763('0x5')](config['sequelizeHistory'],{'database':'motion2','username':_0x4763('0xd'),'password':_0x4763('0x7'),'options':{'host':_0x4763('0x8'),'port':0xcea,'dialect':_0x4763('0xe'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x4763('0xb'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x4763('0x1')]['database'],config[_0x4763('0x1')]['username'],config['sequelize'][_0x4763('0xf')],config[_0x4763('0x1')][_0x4763('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x4763('0x11')][_0x4763('0x12')],config[_0x4763('0x11')]['username'],config[_0x4763('0x11')][_0x4763('0xf')],config['sequelizeHistory'][_0x4763('0x10')])};db[_0x4763('0x13')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x15'));db['VoiceChanSpy']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x16'));db['VoiceContext']=db[_0x4763('0x1')]['import']('../api/voiceContext/voiceContext.model');db[_0x4763('0x17')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x18'));db[_0x4763('0x19')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x1a'));db[_0x4763('0x1b')]=db[_0x4763('0x1')]['import'](_0x4763('0x1c'));db[_0x4763('0x1d')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x1e'));db[_0x4763('0x1f')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x20'));db[_0x4763('0x21')]=db[_0x4763('0x1')]['import'](_0x4763('0x22'));db[_0x4763('0x23')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0x4763('0x24')]=db['sequelize'][_0x4763('0x14')]('../api/voiceCallReport/voiceCallReport.model');db['VoiceDialReport']=db[_0x4763('0x1')][_0x4763('0x14')]('../api/voiceDialReport/voiceDialReport.model');db[_0x4763('0x25')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x26'));db[_0x4763('0x27')]=db[_0x4763('0x1')]['import'](_0x4763('0x28'));db[_0x4763('0x29')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x2a'));db[_0x4763('0x2b')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/trunk/trunk.model');db[_0x4763('0x2c')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x2d'));db[_0x4763('0x2e')]=db['sequelize'][_0x4763('0x14')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db[_0x4763('0x2f')]=db[_0x4763('0x1')]['import'](_0x4763('0x30'));db[_0x4763('0x31')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/userChatQueue/userChatQueue.model');db[_0x4763('0x32')]=db[_0x4763('0x1')]['import'](_0x4763('0x33'));db[_0x4763('0x34')]=db[_0x4763('0x1')]['import'](_0x4763('0x35'));db[_0x4763('0x36')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x37'));db['UserOpenchannelQueue']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x38'));db[_0x4763('0x39')]=db['sequelize']['import'](_0x4763('0x3a'));db['MailServerIn']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x3b'));db['MailServerOut']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x3c'));db[_0x4763('0x3d')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x3e'));db[_0x4763('0x3f')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x40'));db[_0x4763('0x41')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x42'));db[_0x4763('0x43')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x44'));db[_0x4763('0x45')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x46'));db[_0x4763('0x47')]=db['sequelize']['import']('../api/mailApplication/mailApplication.model');db[_0x4763('0x48')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/mailQueueReport/mailQueueReport.model');db[_0x4763('0x49')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x4a'));db['DashboardItem']=db['sequelize'][_0x4763('0x14')](_0x4763('0x4b'));db[_0x4763('0x4c')]=db[_0x4763('0x1')]['import'](_0x4763('0x4d'));db[_0x4763('0x4e')]=db['sequelize'][_0x4763('0x14')]('../api/faxApplication/faxApplication.model');db['FaxInteraction']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x4f'));db[_0x4763('0x50')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x51'));db[_0x4763('0x52')]=db[_0x4763('0x1')]['import']('../api/faxQueue/faxQueue.model');db[_0x4763('0x53')]=db[_0x4763('0x1')]['import'](_0x4763('0x54'));db[_0x4763('0x55')]=db['sequelize'][_0x4763('0x14')]('../api/smsAccount/smsAccount.model');db[_0x4763('0x56')]=db[_0x4763('0x1')]['import'](_0x4763('0x57'));db[_0x4763('0x58')]=db[_0x4763('0x1')]['import']('../api/smsInteraction/smsInteraction.model');db[_0x4763('0x59')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x5a'));db[_0x4763('0x5b')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x5c'));db[_0x4763('0x5d')]=db['sequelize']['import'](_0x4763('0x5e'));db[_0x4763('0x5f')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x60'));db[_0x4763('0x61')]=db[_0x4763('0x1')]['import'](_0x4763('0x62'));db[_0x4763('0x63')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/openchannelMessage/openchannelMessage.model');db[_0x4763('0x64')]=db['sequelize']['import'](_0x4763('0x65'));db[_0x4763('0x66')]=db[_0x4763('0x1')]['import'](_0x4763('0x67'));db[_0x4763('0x68')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x69'));db[_0x4763('0x6a')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x6b'));db['ChatInteraction']=db[_0x4763('0x1')][_0x4763('0x14')]('../api/chatInteraction/chatInteraction.model');db[_0x4763('0x6c')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x6d'));db[_0x4763('0x6e')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x6f'));db['ChatQueue']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x70'));db[_0x4763('0x71')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x72'));db[_0x4763('0x73')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x74'));db[_0x4763('0x75')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x76'));db[_0x4763('0x77')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x78'));db[_0x4763('0x79')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x7a'));db[_0x4763('0x7b')]=db[_0x4763('0x1')]['import'](_0x4763('0x7c'));db[_0x4763('0x7d')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x7e'));db[_0x4763('0x7f')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x80'));db[_0x4763('0x81')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x82'));db['CmCustomField']=db['sequelize'][_0x4763('0x14')](_0x4763('0x83'));db[_0x4763('0x84')]=db[_0x4763('0x1')]['import'](_0x4763('0x85'));db[_0x4763('0x86')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/automation/automation.model');db['CannedAnswer']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x87'));db[_0x4763('0x88')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x89'));db['Condition']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x8a'));db[_0x4763('0x8b')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x8c'));db['Pause']=db[_0x4763('0x1')]['import'](_0x4763('0x8d'));db[_0x4763('0x8e')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x8f'));db[_0x4763('0x90')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x91'));db['Schedule']=db[_0x4763('0x1')]['import'](_0x4763('0x92'));db[_0x4763('0x93')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/sound/sound.model');db[_0x4763('0x94')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/tag/tag.model');db[_0x4763('0x95')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/template/template.model');db['Trigger']=db[_0x4763('0x1')][_0x4763('0x14')]('../api/trigger/trigger.model');db['Variable']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x96'));db['Integration']=db[_0x4763('0x1')]['import'](_0x4763('0x97'));db[_0x4763('0x98')]=db[_0x4763('0x1')]['import'](_0x4763('0x99'));db[_0x4763('0x9a')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x9b'));db[_0x4763('0x9c')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x9d'));db['AnalyticExtractedReport']=db[_0x4763('0x1')][_0x4763('0x14')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0x4763('0x9e')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x9f'));db[_0x4763('0xa0')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xa1'));db['AnalyticTreeReport']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xa2'));db[_0x4763('0xa3')]=db['sequelize'][_0x4763('0x14')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0x4763('0xa4')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db['SalesforceField']=db[_0x4763('0x1')]['import'](_0x4763('0xa5'));db['SugarcrmAccount']=db['sequelize'][_0x4763('0x14')](_0x4763('0xa6'));db['SugarcrmConfiguration']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xa7'));db[_0x4763('0xa8')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intSugarcrmField/intSugarcrmField.model');db[_0x4763('0xa9')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xaa'));db[_0x4763('0xab')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xac'));db['DeskField']=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intDeskField/intDeskField.model');db[_0x4763('0xad')]=db['sequelize'][_0x4763('0x14')]('../api/intZohoAccount/intZohoAccount.model');db[_0x4763('0xae')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xaf'));db[_0x4763('0xb0')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xb1'));db[_0x4763('0xb2')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xb3'));db['ZendeskConfiguration']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xb4'));db[_0x4763('0xb5')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xb6'));db[_0x4763('0xb7')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x4763('0xb8')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0x4763('0xb9')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xba'));db[_0x4763('0xbb')]=db['sequelize']['import']('../api/intVtigerAccount/intVtigerAccount.model');db[_0x4763('0xbc')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x4763('0xbd')]=db[_0x4763('0x1')]['import'](_0x4763('0xbe'));db[_0x4763('0xbf')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xc0'));db[_0x4763('0xc1')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0x4763('0xc2')]=db[_0x4763('0x1')]['import'](_0x4763('0xc3'));db['Dynamics365Account']=db[_0x4763('0x1')]['import']('../api/intDynamics365Account/intDynamics365Account.model');db[_0x4763('0xc4')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xc5'));db[_0x4763('0xc6')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xc7'));db[_0x4763('0xc8')]=db[_0x4763('0x1')]['import'](_0x4763('0xc9'));db[_0x4763('0xca')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xcb'));db[_0x4763('0xcc')]=db[_0x4763('0x1')]['import'](_0x4763('0xcd'));db['Integration']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x97'));db[_0x4763('0xce')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xcf'));db[_0x4763('0xd0')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xd1'));db[_0x4763('0xd2')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xd3'));db[_0x4763('0xd4')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xd5'));db[_0x4763('0xd6')]=db['sequelize'][_0x4763('0x14')]('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db[_0x4763('0xd7')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xd8'));db[_0x4763('0xd9')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xda'));db[_0x4763('0xdb')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xdc'));db['SquareDetailsReport']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xdd'));db[_0x4763('0xde')]=db['sequelize'][_0x4763('0x14')](_0x4763('0xdf'));db[_0x4763('0xe0')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xe1'));db[_0x4763('0xe2')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xe3'));db[_0x4763('0xe4')]=db['sequelize']['import']('../api/squareProject/squareProject.model');db['SquareRecording']=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xe5'));db[_0x4763('0xe6')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/squareMessage/squareMessage.model');db[_0x4763('0xe7')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xe8'));db[_0x4763('0xe9')]=db[_0x4763('0x1')]['import'](_0x4763('0xea'));db[_0x4763('0xeb')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xec'));db[_0x4763('0xed')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xee'));db['Attachment']=db['sequelize'][_0x4763('0x14')](_0x4763('0xef'));db[_0x4763('0xf0')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/plugin/plugin.model');db[_0x4763('0xf1')]=db[_0x4763('0x1')]['import'](_0x4763('0xf2'));db[_0x4763('0xf3')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xf4'));db[_0x4763('0xf5')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xf6'));db[_0x4763('0xf7')]=db[_0x4763('0x1')]['import']('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x4763('0xf8')]=db[_0x4763('0x1')]['import'](_0x4763('0xf9'));db[_0x4763('0xfa')]=db[_0x4763('0x1')]['import'](_0x4763('0xfb'));db[_0x4763('0xfc')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0xfd'));db[_0x4763('0xfe')]=db['sequelize'][_0x4763('0x14')]('../api/userProfile/userProfile.model');db[_0x4763('0xff')]=db[_0x4763('0x1')]['import'](_0x4763('0x100'));db[_0x4763('0x101')]=db[_0x4763('0x1')]['import'](_0x4763('0x102'));db[_0x4763('0x103')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x104'));db[_0x4763('0x105')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x106'));db[_0x4763('0x107')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/whatsappApplication/whatsappApplication.model');db[_0x4763('0x108')]=db['sequelize'][_0x4763('0x14')](_0x4763('0x109'));db[_0x4763('0x10a')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x10b'));db[_0x4763('0x10c')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0x4763('0x10d')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0x4763('0x10e')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x10f'));db[_0x4763('0x110')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x111'));db[_0x4763('0x112')]=db[_0x4763('0x1')][_0x4763('0x14')]('../api/realtime/realtime.model');db[_0x4763('0x113')]=db[_0x4763('0x1')][_0x4763('0x14')](_0x4763('0x114'));db['User'][_0x4763('0x115')](db[_0x4763('0x21')],{'as':_0x4763('0x21'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')]['hasMany'](db['VoiceRecording'],{'as':_0x4763('0x118'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x2e')],{'as':_0x4763('0x11a'),'foreignKey':'UserId'});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x17')],{'as':'Extensions','onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x7d')],{'as':_0x4763('0x11b'),'foreignKey':'UserId'});db[_0x4763('0x13')][_0x4763('0x119')](db['CmHopperHistory'],{'as':_0x4763('0x11c'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x81')],{'as':'ReportAgentPreview','foreignKey':_0x4763('0x117')});db['User'][_0x4763('0x119')](db[_0x4763('0x61')],{'as':'OpenchannelInteractions','foreignKey':_0x4763('0x117')});db[_0x4763('0x13')]['hasMany'](db[_0x4763('0x11d')],{'as':_0x4763('0x11e'),'foreignKey':'UserId'});db['User'][_0x4763('0x119')](db[_0x4763('0x58')],{'as':_0x4763('0x11f'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x120')],{'as':_0x4763('0x121'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')][_0x4763('0x119')](db[_0x4763('0x43')],{'as':'MailInteractions','foreignKey':'UserId'});db['User'][_0x4763('0x119')](db['WhatsappInteraction'],{'as':_0x4763('0x122'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x13')][_0x4763('0x119')](db['UserNotification'],{'as':_0x4763('0x123'),'foreignKey':_0x4763('0x124')});db[_0x4763('0x13')][_0x4763('0x125')](db[_0x4763('0xfe')],{'as':_0x4763('0xfe'),'foreignKey':_0x4763('0x126')});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x71')],{'as':_0x4763('0x128'),'through':_0x4763('0x129')});db['User']['belongsToMany'](db[_0x4763('0x77')],{'as':_0x4763('0x12a'),'through':_0x4763('0x12b')});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0xfa')],{'as':'Lists','through':_0x4763('0x12c')});db['User'][_0x4763('0x127')](db['Team'],{'through':_0x4763('0x12d')});db[_0x4763('0x13')]['belongsToMany'](db['MailInteraction'],{'as':'MailInteractions','through':_0x4763('0x12e')});db[_0x4763('0x13')][_0x4763('0x127')](db['ChatInteraction'],{'as':_0x4763('0x11e'),'through':_0x4763('0x12f')});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x120')],{'as':_0x4763('0x121'),'through':_0x4763('0x130')});db[_0x4763('0x13')]['belongsToMany'](db[_0x4763('0x58')],{'as':'SmsInteractions','through':'user_has_sms_interactions'});db['User'][_0x4763('0x127')](db[_0x4763('0x61')],{'as':_0x4763('0x131'),'through':_0x4763('0x132')});db[_0x4763('0x13')][_0x4763('0x127')](db['WhatsappInteraction'],{'as':_0x4763('0x122'),'through':_0x4763('0x133')});db[_0x4763('0x13')]['belongsToMany'](db[_0x4763('0x1b')],{'as':_0x4763('0x134'),'through':_0x4763('0x2f'),'required':![]});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x3f')],{'as':_0x4763('0x135'),'through':'UserMailQueue','required':![]});db['User'][_0x4763('0x127')](db['ChatQueue'],{'as':'ChatQueues','through':_0x4763('0x31'),'required':![],'hooks':!![]});db[_0x4763('0x13')][_0x4763('0x127')](db['FaxQueue'],{'as':_0x4763('0x136'),'through':'UserFaxQueue','required':![]});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x5b')],{'as':_0x4763('0x137'),'through':'UserSmsQueue','required':![]});db[_0x4763('0x13')]['belongsToMany'](db[_0x4763('0x64')],{'as':_0x4763('0x138'),'through':_0x4763('0x139'),'required':![]});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x10e')],{'as':_0x4763('0x13a'),'through':_0x4763('0x39'),'required':![]});db['User']['belongsToMany'](db[_0x4763('0xfa')],{'through':'cm_user_has_lists'});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0xfc')],{'as':'VoicePrefixes','through':'user_has_voice_prefixes','required':![]});db[_0x4763('0x13')]['belongsToMany'](db[_0x4763('0x66')],{'as':_0x4763('0x13b'),'through':_0x4763('0x13c')});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x4c')],{'as':'FaxAccounts','through':'user_has_fax_accounts'});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x3d')],{'as':_0x4763('0x13d'),'through':'user_has_mail_accounts'});db[_0x4763('0x13')][_0x4763('0x127')](db['OpenchannelAccount'],{'as':_0x4763('0x13e'),'through':_0x4763('0x13f')});db[_0x4763('0x13')][_0x4763('0x127')](db[_0x4763('0x55')],{'as':_0x4763('0x140'),'through':_0x4763('0x141')});db['User'][_0x4763('0x127')](db[_0x4763('0x105')],{'as':_0x4763('0x142'),'through':_0x4763('0x143')});db[_0x4763('0x13')][_0x4763('0x127')](db['SquareProject'],{'as':'SquareProjects','through':_0x4763('0x144')});db['VoiceChanSpy']['hasMany'](db['VoiceExtension'],{'as':_0x4763('0x145'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x146')});db[_0x4763('0x147')][_0x4763('0x119')](db[_0x4763('0x17')],{'onDelete':_0x4763('0x116')});db['VoiceExtension'][_0x4763('0x119')](db[_0x4763('0x17')],{'as':'Applications','onDelete':_0x4763('0x116')});db['VoiceMusicOnHold'][_0x4763('0x127')](db[_0x4763('0x93')],{'as':_0x4763('0x148'),'through':'moh_has_sounds'});db['VoiceQueue'][_0x4763('0x119')](db[_0x4763('0x2e')],{'as':_0x4763('0x149'),'foreignKey':_0x4763('0x14a')});db[_0x4763('0x1b')]['hasMany'](db['CmHopper'],{'as':_0x4763('0x14b'),'foreignKey':_0x4763('0x14a')});db['VoiceQueue']['hasMany'](db['CmHopperFinal'],{'as':_0x4763('0x11b'),'foreignKey':_0x4763('0x14a')});db[_0x4763('0x1b')][_0x4763('0x119')](db['CmHopperHistory'],{'as':_0x4763('0x14c'),'foreignKey':_0x4763('0x14a')});db['VoiceQueue']['hasMany'](db[_0x4763('0x81')],{'as':_0x4763('0x81'),'foreignKey':_0x4763('0x14a')});db[_0x4763('0x1b')]['hasMany'](db[_0x4763('0x7b')],{'as':'HopperBlacks','foreignKey':_0x4763('0x14a')});db[_0x4763('0x1b')][_0x4763('0x119')](db['JscriptySessionReport'],{'as':_0x4763('0x14d'),'foreignKey':_0x4763('0x14a')});db['VoiceQueue'][_0x4763('0x125')](db[_0x4763('0x2b')],{'as':_0x4763('0x2b'),'foreignKey':'TrunkId'});db['VoiceQueue'][_0x4763('0x125')](db[_0x4763('0x2b')],{'as':'TrunkBackup','foreignKey':_0x4763('0x14e')});db[_0x4763('0x1b')][_0x4763('0x125')](db[_0x4763('0x8b')],{'as':_0x4763('0x8b'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0x1b')]['belongsTo'](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':_0x4763('0x152')});db[_0x4763('0x1b')][_0x4763('0x127')](db[_0x4763('0xfa')],{'as':'Lists','through':_0x4763('0x153')});db[_0x4763('0x1b')]['belongsToMany'](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x2f')});db['VoiceQueue'][_0x4763('0x127')](db['Team'],{'as':_0x4763('0x155'),'through':_0x4763('0x113')});db['VoiceQueue']['belongsToMany'](db['CmList'],{'as':_0x4763('0x156'),'through':'voice_queues_has_cm_blacklists'});db[_0x4763('0x1d')]['belongsTo'](db[_0x4763('0x13')],{'as':_0x4763('0x13'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x1f')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x13'),'foreignKey':_0x4763('0x117')});db['VoiceMail'][_0x4763('0x119')](db['VoiceMailMessage'],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x158'),'sourceKey':_0x4763('0x159')});db[_0x4763('0x23')][_0x4763('0x125')](db[_0x4763('0x21')],{'foreignKey':_0x4763('0x158'),'targetKey':_0x4763('0x159')});db['VoiceCallReport'][_0x4763('0x119')](db['VoiceQueueReport'],{'as':_0x4763('0x15a'),'foreignKey':_0x4763('0x15b'),'constraints':![]});db['VoiceCallReport']['hasMany'](db[_0x4763('0x25')],{'as':_0x4763('0x15c'),'foreignKey':_0x4763('0x15b'),'constraints':![]});db[_0x4763('0x24')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':'User','foreignKey':_0x4763('0x117')});db[_0x4763('0x24')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db['MailServerIn'][_0x4763('0x125')](db[_0x4763('0x3d')],{'as':_0x4763('0x3d'),'foreignKey':'MailAccountId'});db[_0x4763('0x15f')][_0x4763('0x125')](db[_0x4763('0x3d')],{'as':_0x4763('0x3d'),'foreignKey':_0x4763('0x160')});db[_0x4763('0x3d')]['hasOne'](db[_0x4763('0x161')],{'as':'Imap','onDelete':_0x4763('0x116')});db[_0x4763('0x3d')]['hasOne'](db[_0x4763('0x15f')],{'as':_0x4763('0x162'),'onDelete':_0x4763('0x116')});db[_0x4763('0x3d')][_0x4763('0x119')](db[_0x4763('0x88')],{'as':_0x4763('0x163'),'foreignKey':_0x4763('0x160'),'onDelete':'cascade'});db[_0x4763('0x3d')][_0x4763('0x119')](db['CannedAnswer'],{'as':_0x4763('0x164'),'foreignKey':_0x4763('0x160')});db[_0x4763('0x3d')][_0x4763('0x119')](db[_0x4763('0x45')],{'as':_0x4763('0x157'),'foreignKey':_0x4763('0x160')});db[_0x4763('0x3d')]['hasMany'](db['MailInteraction'],{'as':_0x4763('0x165')});db[_0x4763('0x3d')][_0x4763('0x119')](db[_0x4763('0x47')],{'as':'Applications'});db['MailAccount'][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db['MailAccount'][_0x4763('0x125')](db[_0x4763('0x95')],{'as':_0x4763('0x95'),'foreignKey':_0x4763('0x168')});db['MailAccount'][_0x4763('0x125')](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x4763('0x3d')]['belongsToMany'](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':'user_has_mail_accounts'});db[_0x4763('0x3f')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x32')});db[_0x4763('0x3f')][_0x4763('0x127')](db[_0x4763('0xe7')],{'through':_0x4763('0x169'),'as':_0x4763('0x155')});db[_0x4763('0x43')][_0x4763('0x119')](db[_0x4763('0x45')],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x16a')});db['MailInteraction'][_0x4763('0x125')](db[_0x4763('0x3d')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x160')});db[_0x4763('0x43')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':'Contact','foreignKey':_0x4763('0x15e')});db[_0x4763('0x43')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x16c'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x43')]['belongsToMany'](db[_0x4763('0x94')],{'through':_0x4763('0x16d'),'as':_0x4763('0x16e')});db['MailInteraction'][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x16d'),'as':_0x4763('0x16f')});db['MailInteraction'][_0x4763('0x127')](db['User'],{'as':_0x4763('0x170'),'through':_0x4763('0x12e'),'foreignKey':_0x4763('0x16a')});db[_0x4763('0x45')][_0x4763('0x119')](db[_0x4763('0x171')],{'as':_0x4763('0x172'),'onDelete':_0x4763('0x116')});db['MailMessage'][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x13')});db[_0x4763('0x45')]['belongsTo'](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x15d')});db['MailMessage']['belongsTo'](db[_0x4763('0x43')],{'as':_0x4763('0x173'),'foreignKey':_0x4763('0x16a')});db[_0x4763('0x45')][_0x4763('0x125')](db[_0x4763('0x3d')],{'as':_0x4763('0x16b'),'foreignKey':'MailAccountId'});db[_0x4763('0x45')][_0x4763('0x125')](db[_0x4763('0x66')],{'as':'ChatWebsite','foreignKey':_0x4763('0x174')});db[_0x4763('0x45')][_0x4763('0x125')](db[_0x4763('0x6e')],{'as':'ChatOfflineMessage','foreignKey':_0x4763('0x175')});db[_0x4763('0x47')][_0x4763('0x125')](db[_0x4763('0x13')],{'onDelete':_0x4763('0x176')});db[_0x4763('0x47')]['belongsTo'](db[_0x4763('0x3f')],{'onDelete':'restrict'});db[_0x4763('0x47')]['belongsTo'](db['MailAccount'],{'onDelete':'restrict'});db['MailApplication']['belongsTo'](db[_0x4763('0x8b')],{'onDelete':'restrict','foreignKey':'IntervalId'});db[_0x4763('0x47')][_0x4763('0x125')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x4763('0x48')][_0x4763('0x125')](db[_0x4763('0x3d')],{});db['MailQueueReport']['belongsTo'](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x48')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db['MailQueueReport'][_0x4763('0x125')](db['MailInteraction'],{});db[_0x4763('0x48')]['belongsTo'](db[_0x4763('0x45')],{});db[_0x4763('0x48')]['belongsTo'](db[_0x4763('0x13')],{});db[_0x4763('0x48')]['belongsTo'](db[_0x4763('0x3f')],{});db['Dashboard'][_0x4763('0x119')](db[_0x4763('0x177')],{'as':_0x4763('0x178'),'onDelete':_0x4763('0x116')});db['FaxAccount'][_0x4763('0x119')](db[_0x4763('0x88')],{'as':_0x4763('0x163'),'foreignKey':_0x4763('0x179'),'onDelete':_0x4763('0x116')});db['FaxAccount']['hasMany'](db[_0x4763('0x17a')],{'as':'Answers','foreignKey':_0x4763('0x179')});db[_0x4763('0x4c')][_0x4763('0x119')](db[_0x4763('0x120')],{'as':_0x4763('0x165')});db[_0x4763('0x4c')]['hasMany'](db[_0x4763('0x4e')],{'as':'Applications'});db[_0x4763('0x4c')]['hasMany'](db['VoiceExtension'],{'as':_0x4763('0x17b'),'onDelete':_0x4763('0x116')});db['FaxAccount']['hasMany'](db[_0x4763('0x50')],{'as':'Messages'});db['FaxAccount'][_0x4763('0x125')](db[_0x4763('0x2b')],{'as':_0x4763('0x2b')});db[_0x4763('0x4c')]['belongsTo'](db[_0x4763('0xfa')],{'as':'List','foreignKey':'ListId'});db['FaxAccount'][_0x4763('0x125')](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':_0x4763('0x152')});db['FaxAccount'][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x17c')});db[_0x4763('0x4e')][_0x4763('0x125')](db[_0x4763('0x13')],{'onDelete':'restrict'});db[_0x4763('0x4e')][_0x4763('0x125')](db[_0x4763('0x52')],{'onDelete':_0x4763('0x176')});db['FaxApplication']['belongsTo'](db[_0x4763('0x4c')],{'onDelete':_0x4763('0x176')});db[_0x4763('0x4e')]['belongsTo'](db[_0x4763('0x94')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x17d')});db[_0x4763('0x120')][_0x4763('0x119')](db['FaxMessage'],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x17e')});db[_0x4763('0x120')][_0x4763('0x125')](db['FaxAccount'],{'as':'Account','foreignKey':_0x4763('0x179')});db[_0x4763('0x120')]['belongsTo'](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x120')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':'Owner','foreignKey':_0x4763('0x117')});db[_0x4763('0x120')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x17f'),'as':_0x4763('0x16e')});db[_0x4763('0x120')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x17f'),'as':_0x4763('0x16f')});db[_0x4763('0x120')]['belongsToMany'](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'through':_0x4763('0x130'),'foreignKey':_0x4763('0x17e')});db['FaxMessage'][_0x4763('0x125')](db['User'],{'onDelete':_0x4763('0x116'),'as':'User'});db[_0x4763('0x50')][_0x4763('0x125')](db[_0x4763('0x120')],{'as':'Interaction','foreignKey':_0x4763('0x17e')});db[_0x4763('0x50')][_0x4763('0x125')](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':'Contact'});db[_0x4763('0x50')][_0x4763('0x125')](db[_0x4763('0x171')],{'as':'Attachment','foreignKey':_0x4763('0x180')});db['FaxMessage'][_0x4763('0x125')](db[_0x4763('0x4c')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x179')});db[_0x4763('0x52')]['belongsToMany'](db[_0x4763('0x13')],{'as':'Agents','through':_0x4763('0x34')});db['FaxQueue'][_0x4763('0x127')](db[_0x4763('0xe7')],{'through':_0x4763('0x181'),'as':_0x4763('0x155')});db['FaxQueueReport']['belongsTo'](db[_0x4763('0x4c')],{});db[_0x4763('0x53')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db['FaxQueueReport'][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':'ContactId'});db[_0x4763('0x53')][_0x4763('0x125')](db[_0x4763('0x120')],{});db['FaxQueueReport']['belongsTo'](db['FaxMessage'],{});db[_0x4763('0x53')]['belongsTo'](db[_0x4763('0x13')],{});db[_0x4763('0x53')][_0x4763('0x125')](db['FaxQueue'],{});db[_0x4763('0x55')][_0x4763('0x119')](db['Disposition'],{'as':'Dispositions','foreignKey':'SmsAccountId','onDelete':_0x4763('0x116')});db[_0x4763('0x55')][_0x4763('0x119')](db['CannedAnswer'],{'as':_0x4763('0x164'),'foreignKey':_0x4763('0x182')});db['SmsAccount'][_0x4763('0x119')](db['SmsMessage'],{'as':_0x4763('0x157'),'foreignKey':_0x4763('0x182')});db['SmsAccount'][_0x4763('0x119')](db[_0x4763('0x58')],{'as':_0x4763('0x165')});db[_0x4763('0x55')][_0x4763('0x119')](db[_0x4763('0x56')],{'as':_0x4763('0x183')});db[_0x4763('0x55')][_0x4763('0x125')](db['CmList'],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x55')][_0x4763('0x125')](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':_0x4763('0x152')});db[_0x4763('0x55')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':'Agents','through':_0x4763('0x141')});db[_0x4763('0x56')][_0x4763('0x125')](db['User'],{'onDelete':_0x4763('0x176')});db[_0x4763('0x56')][_0x4763('0x125')](db[_0x4763('0x5b')],{'onDelete':_0x4763('0x176')});db['SmsApplication'][_0x4763('0x125')](db[_0x4763('0x55')],{'onDelete':_0x4763('0x176')});db[_0x4763('0x56')][_0x4763('0x125')](db['Interval'],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0x56')][_0x4763('0x125')](db[_0x4763('0x94')],{'onDelete':_0x4763('0x176'),'foreignKey':'TagId'});db[_0x4763('0x58')]['hasMany'](db['SmsMessage'],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x184')});db[_0x4763('0x58')]['belongsTo'](db['SmsAccount'],{'as':'Account','foreignKey':_0x4763('0x182')});db[_0x4763('0x58')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x58')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':'Owner','foreignKey':_0x4763('0x117')});db[_0x4763('0x58')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x185'),'as':'Tags'});db['SmsInteraction']['belongsToMany'](db['Tag'],{'through':_0x4763('0x185'),'as':'ThroughTags'});db[_0x4763('0x58')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'through':_0x4763('0x186'),'foreignKey':_0x4763('0x184')});db[_0x4763('0x59')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x13')});db[_0x4763('0x59')][_0x4763('0x125')](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x15d')});db['SmsMessage'][_0x4763('0x125')](db[_0x4763('0x58')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x173'),'foreignKey':_0x4763('0x184')});db[_0x4763('0x59')]['belongsTo'](db[_0x4763('0x55')],{'as':_0x4763('0x16b'),'foreignKey':'SmsAccountId'});db[_0x4763('0x5b')]['belongsToMany'](db[_0x4763('0x13')],{'as':'Agents','through':_0x4763('0x36'),'foreignKey':'SmsQueueId'});db[_0x4763('0x5b')][_0x4763('0x127')](db['Team'],{'through':_0x4763('0x187'),'as':_0x4763('0x155')});db['OpenchannelAccount']['hasMany'](db[_0x4763('0x88')],{'as':'Dispositions','foreignKey':_0x4763('0x188'),'onDelete':_0x4763('0x116')});db[_0x4763('0x5d')][_0x4763('0x119')](db[_0x4763('0x17a')],{'as':_0x4763('0x164'),'foreignKey':_0x4763('0x188')});db[_0x4763('0x5d')]['hasMany'](db[_0x4763('0x61')],{'as':_0x4763('0x165'),'foreignKey':_0x4763('0x188')});db[_0x4763('0x5d')][_0x4763('0x119')](db[_0x4763('0x63')],{'as':_0x4763('0x157'),'foreignKey':_0x4763('0x188')});db[_0x4763('0x5d')][_0x4763('0x119')](db[_0x4763('0x5f')],{'as':'Applications','foreignKey':_0x4763('0x188')});db[_0x4763('0x5d')]['belongsTo'](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x5d')]['belongsTo'](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':_0x4763('0x152')});db[_0x4763('0x5d')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':'Agents','through':_0x4763('0x13f')});db['OpenchannelApplication'][_0x4763('0x125')](db[_0x4763('0x13')],{'onDelete':_0x4763('0x176')});db['OpenchannelApplication'][_0x4763('0x125')](db[_0x4763('0x64')],{'onDelete':'restrict','foreignKey':'OpenchannelQueueId'});db[_0x4763('0x5f')][_0x4763('0x125')](db[_0x4763('0x5d')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x188')});db[_0x4763('0x5f')][_0x4763('0x125')](db[_0x4763('0x8b')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0x5f')][_0x4763('0x125')](db[_0x4763('0x94')],{'onDelete':_0x4763('0x176'),'foreignKey':'TagId'});db['OpenchannelInteraction'][_0x4763('0x119')](db[_0x4763('0x63')],{'as':'Messages','onDelete':'cascade','foreignKey':_0x4763('0x189')});db[_0x4763('0x61')]['belongsTo'](db[_0x4763('0x5d')],{'as':'Account','foreignKey':_0x4763('0x188')});db['OpenchannelInteraction'][_0x4763('0x125')](db['CmContact'],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x61')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x16c'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x61')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x18a'),'as':_0x4763('0x16e')});db[_0x4763('0x61')]['belongsToMany'](db[_0x4763('0x94')],{'through':_0x4763('0x18a'),'as':'ThroughTags'});db['OpenchannelInteraction'][_0x4763('0x127')](db[_0x4763('0x13')],{'as':'Users','through':'user_has_openchannel_interactions','foreignKey':'OpenchannelInteractionId'});db[_0x4763('0x63')][_0x4763('0x125')](db[_0x4763('0x13')],{'onDelete':'cascade','as':_0x4763('0x13')});db[_0x4763('0x63')][_0x4763('0x125')](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x15d')});db[_0x4763('0x63')][_0x4763('0x125')](db[_0x4763('0x61')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x173'),'foreignKey':'OpenchannelInteractionId'});db[_0x4763('0x63')][_0x4763('0x125')](db[_0x4763('0x171')],{'as':_0x4763('0x171'),'foreignKey':_0x4763('0x180')});db['OpenchannelMessage'][_0x4763('0x125')](db[_0x4763('0x5d')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x188')});db[_0x4763('0x64')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x139'),'foreignKey':'OpenchannelQueueId'});db['OpenchannelQueue'][_0x4763('0x127')](db[_0x4763('0xe7')],{'through':_0x4763('0x18b'),'as':_0x4763('0x155')});db[_0x4763('0x66')]['hasMany'](db['Disposition'],{'as':_0x4763('0x163'),'foreignKey':'ChatWebsiteId','onDelete':_0x4763('0x116')});db[_0x4763('0x66')]['hasMany'](db[_0x4763('0x17a')],{'as':_0x4763('0x164'),'foreignKey':_0x4763('0x174')});db['ChatWebsite'][_0x4763('0x119')](db[_0x4763('0x73')],{'as':_0x4763('0x18c')});db[_0x4763('0x66')]['hasMany'](db[_0x4763('0x11d')],{'as':'Interactions'});db[_0x4763('0x66')]['hasMany'](db[_0x4763('0x6a')],{'as':_0x4763('0x183')});db[_0x4763('0x66')][_0x4763('0x119')](db['ChatMessage'],{'as':'Messages'});db[_0x4763('0x66')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x66')][_0x4763('0x125')](db[_0x4763('0x8b')],{'as':_0x4763('0x8b'),'foreignKey':_0x4763('0x14f')});db['ChatWebsite'][_0x4763('0x125')](db['MailAccount'],{'as':_0x4763('0x3d'),'foreignKey':'MailAccountId'});db['ChatWebsite'][_0x4763('0x125')](db[_0x4763('0x150')],{'as':_0x4763('0x151'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x4763('0x66')][_0x4763('0x127')](db['User'],{'as':_0x4763('0x154'),'through':_0x4763('0x13c')});db[_0x4763('0x68')]['belongsTo'](db[_0x4763('0x5d')],{});db[_0x4763('0x68')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':'List','foreignKey':'ListId'});db[_0x4763('0x68')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x68')]['belongsTo'](db[_0x4763('0x61')],{});db[_0x4763('0x68')]['belongsTo'](db[_0x4763('0x63')],{});db['OpenchannelQueueReport'][_0x4763('0x125')](db[_0x4763('0x13')],{});db[_0x4763('0x68')][_0x4763('0x125')](db[_0x4763('0x64')],{});db[_0x4763('0x6a')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x18d'),'foreignKey':_0x4763('0x117'),'onDelete':_0x4763('0x176')});db[_0x4763('0x6a')][_0x4763('0x125')](db[_0x4763('0x18e')],{'as':_0x4763('0x18f'),'foreignKey':_0x4763('0x190'),'onDelete':_0x4763('0x176')});db[_0x4763('0x6a')]['belongsTo'](db[_0x4763('0x66')],{'as':'Website','foreignKey':'ChatWebsiteId','onDelete':_0x4763('0x176')});db['ChatApplication']['belongsTo'](db[_0x4763('0x94')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x17d')});db[_0x4763('0x11d')][_0x4763('0x119')](db[_0x4763('0x6c')],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':'ChatInteractionId'});db[_0x4763('0x11d')][_0x4763('0x125')](db[_0x4763('0x66')],{'as':_0x4763('0x16b'),'foreignKey':'ChatWebsiteId'});db[_0x4763('0x11d')]['belongsTo'](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':'ContactId'});db['ChatInteraction']['belongsTo'](db[_0x4763('0x13')],{'as':_0x4763('0x16c'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x11d')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x191'),'as':_0x4763('0x16e')});db[_0x4763('0x11d')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x191'),'as':'ThroughTags'});db['ChatInteraction'][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'through':'user_has_chat_interactions','foreignKey':_0x4763('0x192')});db['ChatMessage'][_0x4763('0x125')](db[_0x4763('0x13')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x13')});db[_0x4763('0x6c')][_0x4763('0x125')](db['CmContact'],{'onDelete':_0x4763('0x116'),'as':'Contact','foreignKey':_0x4763('0x15e')});db['ChatMessage'][_0x4763('0x125')](db[_0x4763('0x11d')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x173'),'foreignKey':_0x4763('0x192')});db[_0x4763('0x6c')][_0x4763('0x125')](db[_0x4763('0x171')],{'as':_0x4763('0x171'),'foreignKey':_0x4763('0x180')});db['ChatMessage'][_0x4763('0x125')](db['ChatWebsite'],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x174')});db[_0x4763('0x6e')][_0x4763('0x119')](db['Attachment'],{'as':'Attachments','foreignKey':_0x4763('0x175'),'onDelete':_0x4763('0x116'),'hooks':!![]});db['ChatOfflineMessage'][_0x4763('0x125')](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x6e')][_0x4763('0x125')](db[_0x4763('0x66')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x174')});db[_0x4763('0x18e')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x31'),'hooks':!![]});db[_0x4763('0x18e')]['belongsToMany'](db['Team'],{'through':'team_has_chat_queues','as':_0x4763('0x155')});db[_0x4763('0x71')]['hasMany'](db['ChatInternalMessage'],{'as':'Messages','foreignKey':_0x4763('0x193'),'onDelete':_0x4763('0x116')});db['ChatGroup'][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x149'),'through':_0x4763('0x129')});db[_0x4763('0x73')][_0x4763('0x125')](db[_0x4763('0x66')],{'as':_0x4763('0x194'),'foreignKey':_0x4763('0x174')});db[_0x4763('0x75')][_0x4763('0x119')](db[_0x4763('0x77')],{'as':_0x4763('0x12a'),'foreignKey':_0x4763('0x195')});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0x79')],{'as':_0x4763('0x14b'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0x7d')],{'as':'HopperFinals','foreignKey':'ContactId'});db['CmContact']['hasMany'](db[_0x4763('0x7f')],{'as':_0x4763('0x14c'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0x81')],{'as':_0x4763('0x81'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0xd7')],{'as':_0x4763('0x14d'),'foreignKey':_0x4763('0x15e')});db['CmContact'][_0x4763('0x119')](db[_0x4763('0x61')],{'as':_0x4763('0x131'),'foreignKey':_0x4763('0x15e'),'onDelete':_0x4763('0x176')});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0x11d')],{'as':_0x4763('0x11e'),'foreignKey':'ContactId','onDelete':_0x4763('0x176')});db['CmContact'][_0x4763('0x119')](db[_0x4763('0x58')],{'as':_0x4763('0x11f'),'foreignKey':_0x4763('0x15e'),'onDelete':_0x4763('0x176')});db[_0x4763('0x77')][_0x4763('0x119')](db['FaxInteraction'],{'as':_0x4763('0x121'),'foreignKey':_0x4763('0x15e'),'onDelete':'restrict'});db[_0x4763('0x77')][_0x4763('0x119')](db[_0x4763('0x43')],{'as':_0x4763('0x196'),'foreignKey':_0x4763('0x15e'),'onDelete':_0x4763('0x176')});db[_0x4763('0x77')][_0x4763('0x125')](db['CmCompany'],{'as':_0x4763('0x197'),'foreignKey':'CompanyId'});db[_0x4763('0x77')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167'),'onDelete':_0x4763('0x116')});db['CmContact'][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'through':'cm_user_has_contacts'});db[_0x4763('0x77')][_0x4763('0x127')](db[_0x4763('0x94')],{'as':'Tags','through':_0x4763('0x198')});db[_0x4763('0x77')][_0x4763('0x127')](db['Tag'],{'through':'cm_contact_has_tags','as':_0x4763('0x16f')});db[_0x4763('0x79')]['belongsTo'](db[_0x4763('0x77')],{'as':'Contact','foreignKey':'ContactId','onDelete':'cascade'});db[_0x4763('0x79')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167'),'onDelete':_0x4763('0x116')});db[_0x4763('0x79')][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x18d'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x79')][_0x4763('0x125')](db[_0x4763('0x1b')],{'as':_0x4763('0x18f'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x4763('0x79')][_0x4763('0x125')](db[_0x4763('0xeb')],{'as':_0x4763('0xeb'),'foreignKey':_0x4763('0x199'),'onDelete':_0x4763('0x116')});db[_0x4763('0x79')][_0x4763('0x125')](db['User'],{'as':_0x4763('0x16c'),'foreignKey':_0x4763('0x19a')});db[_0x4763('0x7b')][_0x4763('0x125')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId','onDelete':_0x4763('0x116')});db[_0x4763('0x7b')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':'List','foreignKey':_0x4763('0x167'),'onDelete':_0x4763('0x116')});db[_0x4763('0x7b')][_0x4763('0x125')](db[_0x4763('0x1b')],{'as':_0x4763('0x18f'),'foreignKey':_0x4763('0x14a'),'onDelete':_0x4763('0x116')});db['CmHopperBlack'][_0x4763('0x125')](db[_0x4763('0xeb')],{'as':_0x4763('0xeb'),'foreignKey':_0x4763('0x199'),'onDelete':_0x4763('0x116')});db[_0x4763('0x86')][_0x4763('0x119')](db['Condition'],{'as':{'plural':'All','singular':_0x4763('0x19b')},'foreignKey':_0x4763('0x19c'),'onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x86')][_0x4763('0x119')](db[_0x4763('0x19d')],{'as':{'plural':_0x4763('0x19e'),'singular':'OneAny'},'foreignKey':_0x4763('0x19f'),'onDelete':'cascade','hooks':!![]});db[_0x4763('0x86')]['hasMany'](db[_0x4763('0x84')],{'as':_0x4763('0x1a0'),'foreignKey':_0x4763('0x1a1'),'onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x88')]['hasMany'](db[_0x4763('0x88')],{'as':_0x4763('0x163'),'foreignKey':'ParentId','onDelete':'cascade'});db[_0x4763('0x8b')][_0x4763('0x119')](db[_0x4763('0x8b')],{'as':_0x4763('0x1a2'),'foreignKey':'IntervalId','onDelete':_0x4763('0x116'),'hooks':!![],'required':![]});db[_0x4763('0x8b')]['hasMany'](db[_0x4763('0x17')],{'as':_0x4763('0x1a3'),'foreignKey':_0x4763('0x14f'),'onDelete':_0x4763('0x176')});db[_0x4763('0x8b')][_0x4763('0x119')](db['MailApplication'],{'as':_0x4763('0x1a4'),'foreignKey':'IntervalId'});db[_0x4763('0x8b')]['hasMany'](db[_0x4763('0x6a')],{'as':_0x4763('0x1a5'),'foreignKey':'IntervalId'});db[_0x4763('0x8b')][_0x4763('0x119')](db['FaxApplication'],{'as':'FaxApplications','foreignKey':_0x4763('0x14f')});db['Interval'][_0x4763('0x119')](db[_0x4763('0x56')],{'as':_0x4763('0x1a6'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0x1a7')][_0x4763('0x125')](db[_0x4763('0x3d')],{});db[_0x4763('0x1a7')][_0x4763('0x125')](db['AnalyticDefaultReport'],{'foreignKey':_0x4763('0x1a8')});db[_0x4763('0x1a7')]['belongsTo'](db[_0x4763('0x9a')],{'foreignKey':_0x4763('0x1a9')});db[_0x4763('0x93')][_0x4763('0x127')](db[_0x4763('0x19')],{'as':_0x4763('0x1aa'),'through':'moh_has_sounds','onDelete':_0x4763('0x176')});db['Tag']['belongsToMany'](db[_0x4763('0x77')],{'through':_0x4763('0x198')});db[_0x4763('0x94')][_0x4763('0x127')](db[_0x4763('0x11d')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x4763('0x127')](db[_0x4763('0x43')],{'through':_0x4763('0x16d')});db['Tag']['belongsToMany'](db[_0x4763('0x58')],{'through':'sms_interaction_has_tags'});db[_0x4763('0x94')]['belongsToMany'](db['FaxInteraction'],{'through':'fax_interaction_has_tags'});db['Tag']['belongsToMany'](db[_0x4763('0x61')],{'through':_0x4763('0x18a')});db['Tag'][_0x4763('0x127')](db[_0x4763('0x108')],{'through':_0x4763('0x1ab')});db[_0x4763('0x1ac')][_0x4763('0x119')](db[_0x4763('0x19d')],{'as':{'plural':_0x4763('0x1ad'),'singular':_0x4763('0x1ae')},'foreignKey':_0x4763('0x1af'),'onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x1ac')][_0x4763('0x119')](db[_0x4763('0x19d')],{'as':{'plural':_0x4763('0x1b0'),'singular':_0x4763('0x1b1')},'foreignKey':'TriggerAnyId','onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x1ac')][_0x4763('0x119')](db[_0x4763('0x84')],{'as':_0x4763('0x1a0'),'foreignKey':_0x4763('0x1b2'),'onDelete':_0x4763('0x116'),'hooks':!![]});db[_0x4763('0x9a')][_0x4763('0x119')](db[_0x4763('0xa0')],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1a9'),'hooks':!![]});db[_0x4763('0x9c')]['hasMany'](db[_0x4763('0xa0')],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1a8')});db['AnalyticMetric']['hasMany'](db['AnalyticFieldReport'],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b4')});db[_0x4763('0xa0')][_0x4763('0x125')](db[_0x4763('0x9e')],{'foreignKey':'MetricId'});db['SalesforceAccount'][_0x4763('0x119')](db[_0x4763('0xa4')],{'as':'Configurations','onDelete':'cascade','foreignKey':'AccountId'});db[_0x4763('0xa4')][_0x4763('0x119')](db['SalesforceField'],{'as':_0x4763('0x1b5'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xa4')][_0x4763('0x119')](db[_0x4763('0x1b7')],{'as':_0x4763('0x1b8'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xa4')]['hasMany'](db['SalesforceField'],{'as':_0x4763('0x1b3'),'onDelete':'cascade','foreignKey':_0x4763('0x1ba')});db[_0x4763('0xa4')][_0x4763('0x125')](db[_0x4763('0xa3')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0x1b7')][_0x4763('0x119')](db[_0x4763('0x1b7')],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db['SalesforceField'][_0x4763('0x119')](db[_0x4763('0x1b7')],{'as':'Description','foreignKey':'DescriptionId'});db['SalesforceField'][_0x4763('0x119')](db[_0x4763('0x1b7')],{'as':_0x4763('0x1bd'),'foreignKey':'FieldId'});db['SalesforceField'][_0x4763('0x125')](db[_0x4763('0x1be')],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0x1c0')][_0x4763('0x119')](db[_0x4763('0x1c1')],{'as':_0x4763('0x1c2'),'onDelete':'cascade','foreignKey':_0x4763('0x1bb')});db[_0x4763('0x1c1')][_0x4763('0x119')](db[_0x4763('0xa8')],{'as':_0x4763('0x1b5'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0x1c1')][_0x4763('0x119')](db[_0x4763('0xa8')],{'as':'Descriptions','onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0x1c1')][_0x4763('0x119')](db['SugarcrmField'],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':'FieldId'});db[_0x4763('0x1c1')]['belongsTo'](db[_0x4763('0x1c0')],{'as':'Account','foreignKey':_0x4763('0x1bb')});db[_0x4763('0xa8')]['hasMany'](db['SugarcrmField'],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db['SugarcrmField']['hasMany'](db[_0x4763('0xa8')],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db['SugarcrmField'][_0x4763('0x119')](db[_0x4763('0xa8')],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xa8')][_0x4763('0x125')](db['Variable'],{'as':'Variable','foreignKey':'VariableId'});db['DeskAccount'][_0x4763('0x119')](db[_0x4763('0xab')],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0xab')][_0x4763('0x119')](db[_0x4763('0x1c4')],{'as':_0x4763('0x1b5'),'onDelete':'cascade','foreignKey':_0x4763('0x1b6')});db[_0x4763('0xab')][_0x4763('0x119')](db[_0x4763('0x1c4')],{'as':_0x4763('0x1b8'),'onDelete':'cascade','foreignKey':_0x4763('0x1b9')});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xab')][_0x4763('0x125')](db['DeskAccount'],{'as':'Account','foreignKey':_0x4763('0x1bb')});db[_0x4763('0xab')]['belongsToMany'](db[_0x4763('0x94')],{'through':_0x4763('0x1c5')});db[_0x4763('0x1c4')][_0x4763('0x119')](db[_0x4763('0x1c4')],{'as':'Subject','foreignKey':_0x4763('0x1b6')});db['DeskField'][_0x4763('0x119')](db['DeskField'],{'as':_0x4763('0x1c3'),'foreignKey':'DescriptionId'});db[_0x4763('0x1c4')][_0x4763('0x119')](db[_0x4763('0x1c4')],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db['DeskField']['belongsTo'](db[_0x4763('0x1be')],{'as':'Variable','foreignKey':'VariableId'});db['ZohoAccount']['hasMany'](db[_0x4763('0xae')],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':'AccountId'});db[_0x4763('0xae')][_0x4763('0x119')](db[_0x4763('0xb0')],{'as':_0x4763('0x1b5'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xae')]['hasMany'](db[_0x4763('0xb0')],{'as':_0x4763('0x1b8'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xae')][_0x4763('0x119')](db[_0x4763('0xb0')],{'as':_0x4763('0x1b3'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x4763('0xae')][_0x4763('0x125')](db[_0x4763('0xad')],{'as':'Account','foreignKey':_0x4763('0x1bb')});db[_0x4763('0xb0')][_0x4763('0x119')](db[_0x4763('0xb0')],{'as':_0x4763('0x1bc'),'foreignKey':'SubjectId'});db[_0x4763('0xb0')]['hasMany'](db['ZohoField'],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xb0')][_0x4763('0x119')](db['ZohoField'],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xb0')]['belongsTo'](db[_0x4763('0x1be')],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0xb2')][_0x4763('0x119')](db[_0x4763('0x1c6')],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0x1c6')][_0x4763('0x119')](db[_0x4763('0xb5')],{'as':_0x4763('0x1b5'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0x1c6')][_0x4763('0x119')](db[_0x4763('0xb5')],{'as':_0x4763('0x1b8'),'foreignKey':'DescriptionId'});db[_0x4763('0x1c6')][_0x4763('0x119')](db[_0x4763('0xb5')],{'as':_0x4763('0x1b3'),'foreignKey':'FieldId'});db[_0x4763('0x1c6')][_0x4763('0x125')](db[_0x4763('0xb2')],{'as':_0x4763('0x16b'),'foreignKey':'AccountId'});db[_0x4763('0x1c6')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':'int_zendesk_configuration_has_tags'});db['ZendeskField'][_0x4763('0x119')](db[_0x4763('0xb5')],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xb5')][_0x4763('0x119')](db['ZendeskField'],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db['ZendeskField'][_0x4763('0x119')](db[_0x4763('0xb5')],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xb5')][_0x4763('0x125')](db['Variable'],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0xb7')][_0x4763('0x119')](db[_0x4763('0xb8')],{'as':_0x4763('0x1c2'),'onDelete':'cascade','foreignKey':_0x4763('0x1bb')});db[_0x4763('0xb8')][_0x4763('0x119')](db['FreshdeskField'],{'as':_0x4763('0x1b5'),'onDelete':'cascade','foreignKey':_0x4763('0x1b6')});db[_0x4763('0xb8')]['hasMany'](db['FreshdeskField'],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x4763('0x1b9')});db[_0x4763('0xb8')][_0x4763('0x119')](db['FreshdeskField'],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':'FieldId'});db[_0x4763('0xb8')][_0x4763('0x125')](db[_0x4763('0xb7')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1bb')});db['FreshdeskConfiguration'][_0x4763('0x127')](db['Tag'],{'through':_0x4763('0x1c7')});db[_0x4763('0xb9')]['hasMany'](db['FreshdeskField'],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db['FreshdeskField'][_0x4763('0x119')](db[_0x4763('0xb9')],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xb9')]['hasMany'](db['FreshdeskField'],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db['FreshdeskField'][_0x4763('0x125')](db[_0x4763('0x1be')],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0xbb')][_0x4763('0x119')](db[_0x4763('0xbc')],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':'AccountId'});db[_0x4763('0xbc')]['hasMany'](db[_0x4763('0xbd')],{'as':_0x4763('0x1b5'),'foreignKey':_0x4763('0x1b6')});db['VtigerConfiguration'][_0x4763('0x119')](db[_0x4763('0xbd')],{'as':_0x4763('0x1b8'),'foreignKey':_0x4763('0x1b9')});db['VtigerConfiguration'][_0x4763('0x119')](db[_0x4763('0xbd')],{'as':_0x4763('0x1b3'),'foreignKey':'FieldId'});db[_0x4763('0xbc')]['belongsTo'](db[_0x4763('0xbb')],{'as':_0x4763('0x16b'),'foreignKey':'AccountId'});db[_0x4763('0xbd')][_0x4763('0x119')](db[_0x4763('0xbd')],{'as':_0x4763('0x1bc'),'foreignKey':'SubjectId'});db[_0x4763('0xbd')][_0x4763('0x119')](db['VtigerField'],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db['VtigerField'][_0x4763('0x119')](db['VtigerField'],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xbd')][_0x4763('0x125')](db[_0x4763('0x1be')],{'as':'Variable','foreignKey':_0x4763('0x1bf')});db[_0x4763('0xbf')][_0x4763('0x119')](db[_0x4763('0xc1')],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0xc1')][_0x4763('0x119')](db[_0x4763('0xc2')],{'as':_0x4763('0x1b5'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xc1')][_0x4763('0x119')](db[_0x4763('0xc2')],{'as':_0x4763('0x1b8'),'foreignKey':_0x4763('0x1b9')});db['ServicenowConfiguration'][_0x4763('0x119')](db['ServicenowField'],{'as':'Fields','foreignKey':_0x4763('0x1ba')});db[_0x4763('0xc1')]['belongsTo'](db[_0x4763('0xbf')],{'as':'Account','foreignKey':'AccountId'});db[_0x4763('0xc2')][_0x4763('0x119')](db['ServicenowField'],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db['ServicenowField'][_0x4763('0x119')](db[_0x4763('0xc2')],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xc2')][_0x4763('0x119')](db[_0x4763('0xc2')],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xc2')][_0x4763('0x125')](db[_0x4763('0x1be')],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0x1c8')][_0x4763('0x119')](db['Dynamics365Configuration'],{'as':_0x4763('0x1c2'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0xc4')][_0x4763('0x119')](db[_0x4763('0xc6')],{'as':_0x4763('0x1b5'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xc4')][_0x4763('0x119')](db[_0x4763('0xc6')],{'as':_0x4763('0x1b8'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xc4')]['hasMany'](db[_0x4763('0xc6')],{'as':_0x4763('0x1b3'),'onDelete':_0x4763('0x116'),'foreignKey':'FieldId'});db[_0x4763('0xc4')][_0x4763('0x125')](db[_0x4763('0x1c8')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0xc6')][_0x4763('0x119')](db['Dynamics365Field'],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xc6')]['hasMany'](db[_0x4763('0xc6')],{'as':_0x4763('0x1c3'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xc6')][_0x4763('0x119')](db[_0x4763('0xc6')],{'as':_0x4763('0x1bd'),'foreignKey':_0x4763('0x1ba')});db[_0x4763('0xc6')][_0x4763('0x125')](db[_0x4763('0x1be')],{'as':_0x4763('0x1be'),'foreignKey':_0x4763('0x1bf')});db[_0x4763('0xc8')][_0x4763('0x119')](db[_0x4763('0xca')],{'as':'Configurations','onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1bb')});db[_0x4763('0xca')][_0x4763('0x119')](db['FreshsalesField'],{'as':_0x4763('0x1b5'),'foreignKey':_0x4763('0x1b6')});db['FreshsalesConfiguration'][_0x4763('0x119')](db[_0x4763('0xcc')],{'as':_0x4763('0x1b8'),'foreignKey':_0x4763('0x1b9')});db[_0x4763('0xca')][_0x4763('0x119')](db[_0x4763('0xcc')],{'as':'Fields','foreignKey':'FieldId'});db['FreshsalesConfiguration'][_0x4763('0x125')](db[_0x4763('0xc8')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1bb')});db['FreshsalesField']['hasMany'](db[_0x4763('0xcc')],{'as':_0x4763('0x1bc'),'foreignKey':_0x4763('0x1b6')});db[_0x4763('0xcc')]['hasMany'](db['FreshsalesField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshsalesField'][_0x4763('0x119')](db[_0x4763('0xcc')],{'as':'Field','foreignKey':_0x4763('0x1ba')});db[_0x4763('0xcc')][_0x4763('0x125')](db['Variable'],{'as':_0x4763('0x1be'),'foreignKey':'VariableId'});db[_0x4763('0xd0')][_0x4763('0x125')](db[_0x4763('0x66')],{});db[_0x4763('0xd0')]['belongsTo'](db['CmList'],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db['ChatQueueReport'][_0x4763('0x125')](db[_0x4763('0x77')],{'as':'Contact','foreignKey':_0x4763('0x15e')});db[_0x4763('0xd0')][_0x4763('0x125')](db[_0x4763('0x11d')],{});db[_0x4763('0xd0')]['belongsTo'](db['ChatMessage'],{});db[_0x4763('0xd0')][_0x4763('0x125')](db[_0x4763('0x13')],{});db[_0x4763('0xd0')][_0x4763('0x125')](db[_0x4763('0x18e')],{});db['ChatInternalMessage']['belongsTo'](db[_0x4763('0x13')],{'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1c9')});db[_0x4763('0xd2')]['belongsTo'](db[_0x4763('0x13')],{'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1ca')});db[_0x4763('0xd7')]['hasMany'](db['JscriptyQuestionReport'],{'foreignKey':_0x4763('0x1cb'),'onDelete':_0x4763('0x116')});db[_0x4763('0xd7')]['hasMany'](db['JscriptyAnswerReport'],{'foreignKey':'SessionId','onDelete':_0x4763('0x116')});db[_0x4763('0xd9')][_0x4763('0x125')](db[_0x4763('0x55')],{});db[_0x4763('0xd9')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0xd9')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db['SmsQueueReport'][_0x4763('0x125')](db[_0x4763('0x58')],{});db[_0x4763('0xd9')][_0x4763('0x125')](db[_0x4763('0x59')],{});db['SmsQueueReport']['belongsTo'](db['User'],{});db[_0x4763('0xd9')][_0x4763('0x125')](db[_0x4763('0x5b')],{});db[_0x4763('0xde')]['hasMany'](db['JscriptySessionReport'],{'foreignKey':_0x4763('0x1cc')});db[_0x4763('0xde')][_0x4763('0x119')](db['JscriptyQuestionReport'],{'foreignKey':_0x4763('0x1cc')});db['JscriptyProject'][_0x4763('0x119')](db[_0x4763('0xd4')],{'foreignKey':_0x4763('0x1cc')});db[_0x4763('0xe4')]['belongsToMany'](db[_0x4763('0x13')],{'as':'Users','through':_0x4763('0x144')});db[_0x4763('0xe7')]['belongsToMany'](db['User'],{'as':_0x4763('0x154'),'through':_0x4763('0x12d')});db['Team'][_0x4763('0x127')](db['VoiceQueue'],{'through':_0x4763('0x113'),'as':_0x4763('0x134')});db[_0x4763('0xe7')][_0x4763('0x127')](db['MailQueue'],{'through':_0x4763('0x169'),'as':'MailQueues'});db[_0x4763('0xe7')][_0x4763('0x127')](db[_0x4763('0x18e')],{'through':_0x4763('0x1cd'),'as':_0x4763('0x1ce')});db['Team'][_0x4763('0x127')](db[_0x4763('0x52')],{'through':'team_has_fax_queues','as':_0x4763('0x136')});db[_0x4763('0xe7')][_0x4763('0x127')](db[_0x4763('0x5b')],{'through':'team_has_sms_queues','as':_0x4763('0x137')});db['Team']['belongsToMany'](db[_0x4763('0x64')],{'through':_0x4763('0x18b'),'as':_0x4763('0x138')});db[_0x4763('0xe7')][_0x4763('0x127')](db['WhatsappQueue'],{'through':_0x4763('0x1cf'),'as':_0x4763('0x13a')});db[_0x4763('0xeb')][_0x4763('0x119')](db[_0x4763('0x79')],{'as':'Hoppers','foreignKey':_0x4763('0x199')});db['Campaign'][_0x4763('0x119')](db[_0x4763('0x7d')],{'as':'HopperFinals','foreignKey':'CampaignId'});db[_0x4763('0xeb')]['hasMany'](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':_0x4763('0x199')});db[_0x4763('0xeb')][_0x4763('0x119')](db['CmHopperBlack'],{'as':'HopperBlacks','foreignKey':_0x4763('0x199')});db[_0x4763('0xeb')][_0x4763('0x125')](db[_0x4763('0x2b')],{'as':_0x4763('0x2b'),'foreignKey':_0x4763('0x1d0')});db['Campaign'][_0x4763('0x125')](db[_0x4763('0x2b')],{'as':_0x4763('0x1d1'),'foreignKey':_0x4763('0x14e')});db[_0x4763('0xeb')][_0x4763('0x125')](db[_0x4763('0x8b')],{'as':_0x4763('0x8b'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0xeb')]['belongsTo'](db[_0x4763('0xe4')],{'as':_0x4763('0xe4'),'foreignKey':_0x4763('0x1d2')});db[_0x4763('0xeb')][_0x4763('0x127')](db[_0x4763('0xfa')],{'as':_0x4763('0x1d3'),'through':'campaigns_has_cm_lists'});db[_0x4763('0xeb')][_0x4763('0x127')](db[_0x4763('0xfa')],{'as':_0x4763('0x156'),'through':'campaigns_has_cm_blacklists'});db[_0x4763('0x171')][_0x4763('0x125')](db[_0x4763('0x6e')],{'as':_0x4763('0x6e'),'foreignKey':_0x4763('0x175')});db[_0x4763('0xf1')][_0x4763('0x125')](db[_0x4763('0x45')],{});db[_0x4763('0xf1')]['belongsTo'](db[_0x4763('0x43')],{});db[_0x4763('0xf1')][_0x4763('0x125')](db['MailAccount'],{'foreignKey':_0x4763('0x1d4'),'as':_0x4763('0x1d5')});db['MailTransferReport'][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0x4763('0xf1')]['belongsTo'](db[_0x4763('0x13')],{'foreignKey':_0x4763('0x1d6'),'as':_0x4763('0x1d7')});db['MailTransferReport'][_0x4763('0x125')](db[_0x4763('0x3f')],{'foreignKey':_0x4763('0x1d8'),'as':'ToQueue'});db[_0x4763('0xf1')][_0x4763('0x125')](db['MailAccount'],{'foreignKey':_0x4763('0x1d9'),'as':_0x4763('0x1da')});db[_0x4763('0xf3')][_0x4763('0x125')](db['ChatMessage'],{});db[_0x4763('0xf3')][_0x4763('0x125')](db[_0x4763('0x11d')],{});db[_0x4763('0xf3')][_0x4763('0x125')](db[_0x4763('0x66')],{'foreignKey':'FromChatWebsiteId','as':_0x4763('0x1d5')});db['ChatTransferReport'][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0x4763('0xf3')]['belongsTo'](db[_0x4763('0x13')],{'foreignKey':_0x4763('0x1d6'),'as':'ToAgent'});db[_0x4763('0xf3')]['belongsTo'](db['ChatQueue'],{'foreignKey':_0x4763('0x1db'),'as':'ToQueue'});db[_0x4763('0xf3')][_0x4763('0x125')](db[_0x4763('0x66')],{'foreignKey':'ToChatWebsiteId','as':'ToAccount'});db[_0x4763('0xf5')][_0x4763('0x125')](db['FaxMessage'],{});db[_0x4763('0xf5')][_0x4763('0x125')](db[_0x4763('0x120')],{});db['FaxTransferReport'][_0x4763('0x125')](db['FaxAccount'],{'foreignKey':_0x4763('0x1dc'),'as':_0x4763('0x1d5')});db[_0x4763('0xf5')]['belongsTo'](db['User'],{'foreignKey':_0x4763('0x1dd'),'as':_0x4763('0x1de')});db['FaxTransferReport'][_0x4763('0x125')](db['User'],{'foreignKey':_0x4763('0x1d6'),'as':_0x4763('0x1d7')});db[_0x4763('0xf5')][_0x4763('0x125')](db[_0x4763('0x52')],{'foreignKey':_0x4763('0x1df'),'as':_0x4763('0x1e0')});db['FaxTransferReport'][_0x4763('0x125')](db[_0x4763('0x4c')],{'foreignKey':_0x4763('0x1e1'),'as':_0x4763('0x1da')});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x63')],{});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x61')],{});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x5d')],{'foreignKey':'FromOpenchannelAccountId','as':_0x4763('0x1d5')});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':'FromUserId','as':_0x4763('0x1de')});db['OpenchannelTransferReport']['belongsTo'](db['User'],{'foreignKey':'ToUserId','as':_0x4763('0x1d7')});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x64')],{'foreignKey':_0x4763('0x1e2'),'as':_0x4763('0x1e0')});db[_0x4763('0xf7')][_0x4763('0x125')](db[_0x4763('0x5d')],{'foreignKey':'ToOpenchannelAccountId','as':_0x4763('0x1da')});db[_0x4763('0xf8')][_0x4763('0x125')](db[_0x4763('0x59')],{});db[_0x4763('0xf8')][_0x4763('0x125')](db[_0x4763('0x58')],{});db[_0x4763('0xf8')][_0x4763('0x125')](db['SmsAccount'],{'foreignKey':_0x4763('0x1e3'),'as':_0x4763('0x1d5')});db[_0x4763('0xf8')][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':_0x4763('0x1dd'),'as':_0x4763('0x1de')});db['SmsTransferReport'][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':_0x4763('0x1d6'),'as':_0x4763('0x1d7')});db['SmsTransferReport']['belongsTo'](db[_0x4763('0x5b')],{'foreignKey':_0x4763('0x1e4'),'as':_0x4763('0x1e0')});db[_0x4763('0xf8')][_0x4763('0x125')](db[_0x4763('0x55')],{'foreignKey':_0x4763('0x1e5'),'as':_0x4763('0x1da')});db[_0x4763('0xfa')][_0x4763('0x119')](db[_0x4763('0x88')],{'as':_0x4763('0x163'),'foreignKey':_0x4763('0x167'),'onDelete':_0x4763('0x116')});db['CmList'][_0x4763('0x119')](db[_0x4763('0x1e6')],{'as':_0x4763('0x1e7'),'foreignKey':_0x4763('0x167')});db['CmList']['hasMany'](db[_0x4763('0x77')],{'as':_0x4763('0x12a'),'onDelete':_0x4763('0x116'),'foreignKey':'ListId'});db['CmList'][_0x4763('0x119')](db[_0x4763('0x7d')],{'as':_0x4763('0x11b'),'foreignKey':'ListId'});db['CmList'][_0x4763('0x119')](db[_0x4763('0x7f')],{'as':'HopperHistory','foreignKey':'ListId'});db[_0x4763('0xfa')]['hasMany'](db[_0x4763('0x81')],{'as':_0x4763('0x81'),'foreignKey':_0x4763('0x167')});db[_0x4763('0xfa')]['belongsToMany'](db[_0x4763('0x1b')],{'as':_0x4763('0x1e8'),'through':_0x4763('0x153')});db[_0x4763('0xfa')][_0x4763('0x127')](db['User'],{'as':_0x4763('0x154'),'through':_0x4763('0x12c')});db[_0x4763('0xfc')][_0x4763('0x119')](db[_0x4763('0x17')],{'as':_0x4763('0x1a3'),'onDelete':_0x4763('0x116')});db[_0x4763('0xfc')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':'user_has_voice_prefixes'});db['UserProfile']['hasMany'](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'foreignKey':'userProfileId'});db[_0x4763('0xfe')]['hasMany'](db['UserProfileSection'],{'as':'UserProfileSections','foreignKey':_0x4763('0x126'),'onDelete':_0x4763('0x116')});db[_0x4763('0xff')][_0x4763('0x119')](db['UserProfileResource'],{'as':_0x4763('0x1e9'),'foreignKey':_0x4763('0x1ea'),'onDelete':_0x4763('0x116')});db[_0x4763('0x105')][_0x4763('0x119')](db[_0x4763('0x88')],{'as':_0x4763('0x163'),'foreignKey':'WhatsappAccountId','onDelete':_0x4763('0x116')});db['WhatsappAccount'][_0x4763('0x119')](db[_0x4763('0x17a')],{'as':_0x4763('0x164'),'foreignKey':'WhatsappAccountId'});db[_0x4763('0x105')][_0x4763('0x119')](db[_0x4763('0x10a')],{'as':_0x4763('0x157'),'foreignKey':_0x4763('0x1eb')});db['WhatsappAccount'][_0x4763('0x119')](db[_0x4763('0x108')],{'as':_0x4763('0x165')});db[_0x4763('0x105')][_0x4763('0x119')](db['WhatsappApplication'],{'as':_0x4763('0x183')});db[_0x4763('0x105')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x105')][_0x4763('0x125')](db['Pause'],{'as':_0x4763('0x151'),'foreignKey':_0x4763('0x152')});db[_0x4763('0x105')]['belongsToMany'](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x143')});db[_0x4763('0x107')]['belongsTo'](db['User'],{'onDelete':_0x4763('0x176')});db[_0x4763('0x107')][_0x4763('0x125')](db['WhatsappQueue'],{'onDelete':_0x4763('0x176')});db[_0x4763('0x107')]['belongsTo'](db['WhatsappAccount'],{'onDelete':_0x4763('0x176')});db[_0x4763('0x107')][_0x4763('0x125')](db[_0x4763('0x8b')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x14f')});db[_0x4763('0x107')][_0x4763('0x125')](db[_0x4763('0x94')],{'onDelete':_0x4763('0x176'),'foreignKey':_0x4763('0x17d')});db[_0x4763('0x108')][_0x4763('0x119')](db[_0x4763('0x10a')],{'as':_0x4763('0x157'),'onDelete':_0x4763('0x116'),'foreignKey':_0x4763('0x1ec')});db[_0x4763('0x108')][_0x4763('0x125')](db[_0x4763('0x105')],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1eb')});db[_0x4763('0x108')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':_0x4763('0x15e')});db[_0x4763('0x108')][_0x4763('0x125')](db['User'],{'as':_0x4763('0x16c'),'foreignKey':_0x4763('0x117')});db[_0x4763('0x108')][_0x4763('0x127')](db[_0x4763('0x94')],{'through':_0x4763('0x1ab'),'as':'Tags'});db[_0x4763('0x108')][_0x4763('0x127')](db['Tag'],{'through':_0x4763('0x1ab'),'as':_0x4763('0x16f')});db[_0x4763('0x108')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x170'),'through':_0x4763('0x133'),'foreignKey':_0x4763('0x1ec')});db['WhatsappMessage'][_0x4763('0x125')](db[_0x4763('0x13')],{'as':_0x4763('0x13')});db['WhatsappMessage'][_0x4763('0x125')](db[_0x4763('0x77')],{'onDelete':_0x4763('0x116'),'as':_0x4763('0x15d')});db['WhatsappMessage'][_0x4763('0x125')](db[_0x4763('0x108')],{'onDelete':'cascade','as':_0x4763('0x173'),'foreignKey':_0x4763('0x1ec')});db[_0x4763('0x10a')][_0x4763('0x125')](db['WhatsappAccount'],{'as':_0x4763('0x16b'),'foreignKey':_0x4763('0x1eb')});db[_0x4763('0x10c')]['belongsTo'](db[_0x4763('0x105')],{});db[_0x4763('0x10c')][_0x4763('0x125')](db[_0x4763('0xfa')],{'as':_0x4763('0x166'),'foreignKey':_0x4763('0x167')});db[_0x4763('0x10c')][_0x4763('0x125')](db[_0x4763('0x77')],{'as':_0x4763('0x15d'),'foreignKey':'ContactId'});db[_0x4763('0x10c')][_0x4763('0x125')](db[_0x4763('0x108')],{});db[_0x4763('0x10c')][_0x4763('0x125')](db[_0x4763('0x10e')],{});db[_0x4763('0x10c')][_0x4763('0x125')](db[_0x4763('0x10a')],{});db[_0x4763('0x10c')][_0x4763('0x125')](db['User'],{});db[_0x4763('0x10d')][_0x4763('0x125')](db['WhatsappMessage'],{});db[_0x4763('0x10d')][_0x4763('0x125')](db[_0x4763('0x108')],{});db['WhatsappTransferReport']['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x4763('0x1ed'),'as':_0x4763('0x1d5')});db[_0x4763('0x10d')]['belongsTo'](db[_0x4763('0x105')],{'foreignKey':_0x4763('0x1ee'),'as':_0x4763('0x1da')});db[_0x4763('0x10d')][_0x4763('0x125')](db['WhatsappQueue'],{'foreignKey':'ToQueueId','as':_0x4763('0x1e0')});db[_0x4763('0x10d')][_0x4763('0x125')](db['User'],{'foreignKey':'FromUserId','as':_0x4763('0x1de')});db[_0x4763('0x10d')][_0x4763('0x125')](db[_0x4763('0x13')],{'foreignKey':_0x4763('0x1d6'),'as':_0x4763('0x1d7')});db[_0x4763('0x10e')][_0x4763('0x127')](db[_0x4763('0x13')],{'as':_0x4763('0x154'),'through':_0x4763('0x39'),'foreignKey':_0x4763('0x1ef')});db[_0x4763('0x10e')][_0x4763('0x127')](db[_0x4763('0xe7')],{'through':_0x4763('0x1cf'),'as':_0x4763('0x155')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index a2985e5..1031624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0298=['./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./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/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','./api/intServicenowField','./api/intDynamics365Account','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','/api/networks','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/square/odbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','./api/team','/api/license','./api/license','/api/campaigns','./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/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','./api/whatsappApplication','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','/apidoc','static','/www','join','root','/demo','/snippet','snippet','3.0.0','/server/files/plugins','/:url(api|auth|components|app|bower_components|assets)/*','get','route','resolve','username','password','apiKey','lastName','street','phone','mobile','fax','clientId','code','tenantId','token','channelSecret','accessToken','accessTokenSecret','membername','calleridname','calleridnum','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','pass','localstationid','dsn','isPlainObject','isString','replace','@@{','}@@','includes','lodash','express','express-winston','util','./errors','./config/environment','./config/logger','api','auth','safeTemplate','default','use','logger','body','\x20body=%s','method','headers','connection','remoteAddress','url','statusCode','responseTime','user','name','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','format','x-forwarded-for','role','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/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/members/reports','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','/api/mail/queues','./api/mailQueue','./api/mailSubstatus','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','./api/faxInteraction','/api/fax/messages','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','/api/chat/groups','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','/api/cm/hopper','/api/cm/hopper_black','/api/cm/hopper_history','./api/cmHopperHistory','./api/action','/api/automations','./api/automation','/api/canned_answers','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','./api/schedule','./api/sound','/api/tags','/api/templates','./api/template','/api/triggers','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/desk/accounts','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts'];(function(_0x9a774b,_0x37f1c1){var _0x4ede1b=function(_0xd24195){while(--_0xd24195){_0x9a774b['push'](_0x9a774b['shift']());}};_0x4ede1b(++_0x37f1c1);}(_0x0298,0x95));var _0x8029=function(_0x3d0ab3,_0x2e1926){_0x3d0ab3=_0x3d0ab3-0x0;var _0x17fd2c=_0x0298[_0x3d0ab3];return _0x17fd2c;};'use strict';var _=require(_0x8029('0x0'));var path=require('path');var express=require(_0x8029('0x1'));var ewinston=require(_0x8029('0x2'));var util=require(_0x8029('0x3'));var errors=require(_0x8029('0x4'));var config=require(_0x8029('0x5'));var logger=require(_0x8029('0x6'))(_0x8029('0x7'));var authLogger=require(_0x8029('0x6'))(_0x8029('0x8'));var safeTemplate=require('./safe-template')[_0x8029('0x9')];exports[_0x8029('0xa')]=function(_0x49e3e4){_0x49e3e4[_0x8029('0xb')](ewinston[_0x8029('0xc')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x1b3573,_0xe53462){var _0x1ac957='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_['isEmpty'](_0x1b3573[_0x8029('0xd')])){_0x1ac957+=_0x8029('0xe');var _0x288b07=_0x1b3573['body'];maskSensitiveData(_0x288b07);}return safeTemplate(util['format'](_0x1ac957,_0x1b3573[_0x8029('0xf')],_0x1b3573[_0x8029('0x10')]['x-forwarded-for']?_0x1b3573[_0x8029('0x10')]['x-forwarded-for']:_0x1b3573[_0x8029('0x11')][_0x8029('0x12')]||_0x1b3573['ip'],_0x1b3573[_0x8029('0x13')],_0xe53462[_0x8029('0x14')],_0xe53462[_0x8029('0x15')],_0x1b3573[_0x8029('0x16')]?_0x1b3573['user']['id']:null,_0x1b3573[_0x8029('0x16')]?_0x1b3573[_0x8029('0x16')][_0x8029('0x17')]:null,_0x1b3573[_0x8029('0x16')]?_0x1b3573['user']['role']:null,_0x288b07?util['inspect'](_0x288b07,![],null):''));}}));_0x49e3e4[_0x8029('0xb')](ewinston[_0x8029('0xc')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x6615a5,_0x1cef49){var _0x14ad14=_0x8029('0x18');if(_0x6615a5['body']&&_0x6615a5[_0x8029('0xd')][_0x8029('0x19')]&&_0x6615a5[_0x8029('0xd')][_0x8029('0x1a')]){_0x14ad14='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x8029('0x1b')](_0x14ad14,_0x6615a5[_0x8029('0xf')],_0x6615a5['headers'][_0x8029('0x1c')]?_0x6615a5['headers'][_0x8029('0x1c')]:_0x6615a5[_0x8029('0x11')][_0x8029('0x12')]||_0x6615a5['ip'],_0x6615a5[_0x8029('0x13')],_0x1cef49['statusCode'],_0x1cef49[_0x8029('0x15')],_0x6615a5[_0x8029('0x16')]?_0x6615a5['user']['id']:null,_0x6615a5['user']?_0x6615a5[_0x8029('0x16')][_0x8029('0x17')]:null,_0x6615a5[_0x8029('0x16')]?_0x6615a5[_0x8029('0x16')][_0x8029('0x1d')]:null,_0x6615a5[_0x8029('0xd')]&&_0x6615a5[_0x8029('0xd')][_0x8029('0x19')]?_0x6615a5[_0x8029('0xd')][_0x8029('0x19')]:_0x8029('0x1e'),_0x6615a5[_0x8029('0xd')]&&_0x6615a5[_0x8029('0xd')][_0x8029('0x1a')]?_0x6615a5[_0x8029('0xd')][_0x8029('0x1a')]:'',_0x6615a5[_0x8029('0xd')]&&_0x6615a5[_0x8029('0xd')][_0x8029('0x1f')]?_0x6615a5[_0x8029('0xd')]['agent_name']:'');},'ignoreRoute':function(_0x3525ed){var _0x479a21=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x479a21[_0x8029('0x20')](_0x3525ed[_0x8029('0x13')]);}}));_0x49e3e4[_0x8029('0xb')](_0x8029('0x21'),require(_0x8029('0x22')));_0x49e3e4['use'](_0x8029('0x23'),require(_0x8029('0x24')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x25'),require(_0x8029('0x26')));_0x49e3e4['use'](_0x8029('0x27'),require(_0x8029('0x28')));_0x49e3e4['use'](_0x8029('0x29'),require('./api/voiceMusicOnHold'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x2a'),require(_0x8029('0x2b')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x2c'),require(_0x8029('0x2d')));_0x49e3e4['use'](_0x8029('0x2e'),require(_0x8029('0x2f')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x30'),require('./api/voiceMail'));_0x49e3e4['use']('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x31'),require(_0x8029('0x32')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x33'),require(_0x8029('0x34')));_0x49e3e4['use'](_0x8029('0x35'),require(_0x8029('0x36')));_0x49e3e4[_0x8029('0xb')]('/api/voice/queues/reports',require('./api/voiceQueueReport'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x37'),require('./api/memberReport'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x38'),require(_0x8029('0x39')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x3a'),require(_0x8029('0x3b')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x3c'),require(_0x8029('0x3d')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x3e'),require('./api/mailAccount'));_0x49e3e4['use'](_0x8029('0x3f'),require(_0x8029('0x40')));_0x49e3e4[_0x8029('0xb')]('/api/mail/substatuses',require(_0x8029('0x41')));_0x49e3e4[_0x8029('0xb')]('/api/mail/interactions',require(_0x8029('0x42')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x43'),require(_0x8029('0x44')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x45'),require(_0x8029('0x46')));_0x49e3e4['use']('/api/mail/reports/queue',require(_0x8029('0x47')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x48'),require(_0x8029('0x49')));_0x49e3e4['use'](_0x8029('0x4a'),require(_0x8029('0x4b')));_0x49e3e4['use'](_0x8029('0x4c'),require(_0x8029('0x4d')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x4e'),require(_0x8029('0x4f')));_0x49e3e4[_0x8029('0xb')]('/api/fax/interactions',require(_0x8029('0x50')));_0x49e3e4['use'](_0x8029('0x51'),require('./api/faxMessage'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x52'),require(_0x8029('0x53')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x54'),require(_0x8029('0x55')));_0x49e3e4[_0x8029('0xb')]('/api/sms/accounts',require(_0x8029('0x56')));_0x49e3e4['use'](_0x8029('0x57'),require(_0x8029('0x58')));_0x49e3e4['use'](_0x8029('0x59'),require('./api/smsInteraction'));_0x49e3e4[_0x8029('0xb')]('/api/sms/messages',require(_0x8029('0x5a')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x5b'),require(_0x8029('0x5c')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x5d'),require(_0x8029('0x5e')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x5f'),require(_0x8029('0x60')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x61'),require(_0x8029('0x62')));_0x49e3e4[_0x8029('0xb')]('/api/openchannel/messages',require('./api/openchannelMessage'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x63'),require(_0x8029('0x64')));_0x49e3e4['use'](_0x8029('0x65'),require(_0x8029('0x66')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x67'),require(_0x8029('0x68')));_0x49e3e4['use'](_0x8029('0x69'),require(_0x8029('0x6a')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x6b'),require(_0x8029('0x6c')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x6d'),require(_0x8029('0x6e')));_0x49e3e4['use'](_0x8029('0x6f'),require('./api/chatOfflineMessage'));_0x49e3e4[_0x8029('0xb')]('/api/chat/queues',require('./api/chatQueue'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x70'),require('./api/chatGroup'));_0x49e3e4['use'](_0x8029('0x71'),require(_0x8029('0x72')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x73'),require(_0x8029('0x74')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x75'),require('./api/cmContact'));_0x49e3e4['use'](_0x8029('0x76'),require('./api/cmHopper'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x77'),require('./api/cmHopperBlack'));_0x49e3e4['use']('/api/cm/hopper_final',require('./api/cmHopperFinal'));_0x49e3e4['use'](_0x8029('0x78'),require(_0x8029('0x79')));_0x49e3e4[_0x8029('0xb')]('/api/cm/custom_fields',require('./api/cmCustomField'));_0x49e3e4[_0x8029('0xb')]('/api/actions',require(_0x8029('0x7a')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x7b'),require(_0x8029('0x7c')));_0x49e3e4['use'](_0x8029('0x7d'),require('./api/cannedAnswer'));_0x49e3e4['use'](_0x8029('0x7e'),require(_0x8029('0x7f')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x80'),require(_0x8029('0x81')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x82'),require(_0x8029('0x83')));_0x49e3e4[_0x8029('0xb')]('/api/pauses',require(_0x8029('0x84')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x85'),require(_0x8029('0x86')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x87'),require(_0x8029('0x88')));_0x49e3e4[_0x8029('0xb')]('/api/schedules',require(_0x8029('0x89')));_0x49e3e4[_0x8029('0xb')]('/api/sounds',require(_0x8029('0x8a')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x8b'),require('./api/tag'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x8c'),require(_0x8029('0x8d')));_0x49e3e4['use'](_0x8029('0x8e'),require('./api/trigger'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x8f'),require(_0x8029('0x90')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x91'),require(_0x8029('0x92')));_0x49e3e4['use'](_0x8029('0x93'),require(_0x8029('0x94')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x95'),require(_0x8029('0x96')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x97'),require('./api/analyticDefaultReport'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x98'),require(_0x8029('0x99')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x9a'),require('./api/analyticMetric'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x9b'),require(_0x8029('0x9c')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x9d'),require(_0x8029('0x9e')));_0x49e3e4[_0x8029('0xb')]('/api/integrations/salesforce/accounts',require('./api/intSalesforceAccount'));_0x49e3e4['use'](_0x8029('0x9f'),require(_0x8029('0xa0')));_0x49e3e4[_0x8029('0xb')]('/api/integrations/salesforce/fields',require(_0x8029('0xa1')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xa2'),require(_0x8029('0xa3')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xa4'),require(_0x8029('0xa5')));_0x49e3e4[_0x8029('0xb')]('/api/integrations/sugarcrm/fields',require('./api/intSugarcrmField'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xa6'),require('./api/intDeskAccount'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xa7'),require(_0x8029('0xa8')));_0x49e3e4['use'](_0x8029('0xa9'),require('./api/intDeskField'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xaa'),require(_0x8029('0xab')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xac'),require(_0x8029('0xad')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xae'),require(_0x8029('0xaf')));_0x49e3e4['use'](_0x8029('0xb0'),require(_0x8029('0xb1')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xb2'),require(_0x8029('0xb3')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xb4'),require(_0x8029('0xb5')));_0x49e3e4['use'](_0x8029('0xb6'),require('./api/intFreshdeskAccount'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xb7'),require(_0x8029('0xb8')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xb9'),require(_0x8029('0xba')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xbb'),require('./api/intVtigerAccount'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xbc'),require(_0x8029('0xbd')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xbe'),require(_0x8029('0xbf')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xc0'),require(_0x8029('0xc1')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xc2'),require(_0x8029('0xc3')));_0x49e3e4[_0x8029('0xb')]('/api/integrations/servicenow/fields',require(_0x8029('0xc4')));_0x49e3e4['use']('/api/integrations/dynamics365/accounts',require(_0x8029('0xc5')));_0x49e3e4[_0x8029('0xb')]('/api/integrations/dynamics365/configurations',require(_0x8029('0xc6')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xc7'),require(_0x8029('0xc8')));_0x49e3e4[_0x8029('0xb')]('/api/integrations/freshsales/accounts',require(_0x8029('0xc9')));_0x49e3e4['use'](_0x8029('0xca'),require('./api/intFreshsalesConfiguration'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xcb'),require('./api/intFreshsalesField'));_0x49e3e4['use'](_0x8029('0xcc'),require('./api/network'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xcd'),require(_0x8029('0xce')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xcf'),require('./api/chatInternalMessage'));_0x49e3e4[_0x8029('0xb')]('/api/jscripty/answers/reports',require(_0x8029('0xd0')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xd1'),require('./api/jscriptyQuestionReport'));_0x49e3e4[_0x8029('0xb')]('/api/jscripty/sessions/reports',require(_0x8029('0xd2')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xd3'),require('./api/smsQueueReport'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xd4'),require(_0x8029('0xd5')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xd6'),require(_0x8029('0xd7')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xd8'),require(_0x8029('0xd9')));_0x49e3e4[_0x8029('0xb')]('/api/settings',require('./api/setting'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xda'),require('./api/squareOdbc'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xdb'),require(_0x8029('0xdc')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xdd'),require(_0x8029('0xde')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xdf'),require(_0x8029('0xe0')));_0x49e3e4[_0x8029('0xb')]('/api/teams',require(_0x8029('0xe1')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xe2'),require(_0x8029('0xe3')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xe4'),require(_0x8029('0xe5')));_0x49e3e4['use'](_0x8029('0xe6'),require(_0x8029('0xe7')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xe8'),require(_0x8029('0xe9')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xea'),require(_0x8029('0xeb')));_0x49e3e4['use'](_0x8029('0xec'),require(_0x8029('0xed')));_0x49e3e4['use'](_0x8029('0xee'),require(_0x8029('0xef')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xf0'),require('./api/faxTransferReport'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xf1'),require(_0x8029('0xf2')));_0x49e3e4['use'](_0x8029('0xf3'),require('./api/smsTransferReport'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xf4'),require(_0x8029('0xf5')));_0x49e3e4[_0x8029('0xb')](_0x8029('0xf6'),require(_0x8029('0xf7')));_0x49e3e4['use'](_0x8029('0xf8'),require('./api/userProfile'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xf9'),require(_0x8029('0xfa')));_0x49e3e4['use']('/api/userProfile/resources',require(_0x8029('0xfb')));_0x49e3e4['use'](_0x8029('0xfc'),require('./api/userNotification'));_0x49e3e4[_0x8029('0xb')](_0x8029('0xfd'),require(_0x8029('0xfe')));_0x49e3e4['use']('/api/whatsapp/applications',require(_0x8029('0xff')));_0x49e3e4[_0x8029('0xb')]('/api/whatsapp/interactions',require(_0x8029('0x100')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x101'),require(_0x8029('0x102')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x103'),require(_0x8029('0x104')));_0x49e3e4['use'](_0x8029('0x105'),require(_0x8029('0x106')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x107'),require(_0x8029('0x108')));_0x49e3e4['use'](_0x8029('0x109'),require(_0x8029('0x10a')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x10b'),require(_0x8029('0x10c')));_0x49e3e4['use']('/api/auth/local',require(_0x8029('0x10d')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x10e'),require(_0x8029('0x10f')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x110'),require(_0x8029('0x111')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x112'),require('./api/rpc'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x113'),require(_0x8029('0x114')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x115'),require(_0x8029('0x116')));_0x49e3e4['use'](_0x8029('0x117'),require('./api/pm2'));_0x49e3e4[_0x8029('0xb')]('/api/webbar',require('./api/webbar'));_0x49e3e4[_0x8029('0xb')](_0x8029('0x118'),express[_0x8029('0x119')](path['join'](config['root'],_0x8029('0x118'))));_0x49e3e4['use'](_0x8029('0x11a'),express['static'](path[_0x8029('0x11b')](config[_0x8029('0x11c')],_0x8029('0x11a'))));_0x49e3e4[_0x8029('0xb')](_0x8029('0x11d'),express[_0x8029('0x119')](path['join'](config[_0x8029('0x11c')],'/demo')));_0x49e3e4[_0x8029('0xb')](_0x8029('0x11e'),express[_0x8029('0x119')](path['join'](config[_0x8029('0x11c')],_0x8029('0x11f'),_0x8029('0x120'))));_0x49e3e4['use']('/plugins',express[_0x8029('0x119')](path[_0x8029('0x11b')](config['root'],_0x8029('0x121'))));_0x49e3e4['route'](_0x8029('0x122'))[_0x8029('0x123')](errors[0x194]);_0x49e3e4[_0x8029('0x124')]('/*')[_0x8029('0x123')](function(_0x556bb7,_0x2334b9){_0x2334b9['sendFile'](path[_0x8029('0x125')](_0x49e3e4[_0x8029('0x123')]('appPath')+'/index.html'));});};var sensitiveFields=[_0x8029('0x126'),_0x8029('0x127'),'newPassword',_0x8029('0x128'),'firstName',_0x8029('0x129'),_0x8029('0x12a'),_0x8029('0x12b'),_0x8029('0x12c'),_0x8029('0x12d'),'email',_0x8029('0x12e'),'clientSecret','securityToken',_0x8029('0x12f'),'accessKey',_0x8029('0x130'),_0x8029('0x131'),_0x8029('0x132'),_0x8029('0x133'),_0x8029('0x134'),'authToken','consumerKey','consumerSecret',_0x8029('0x135'),_0x8029('0x136'),_0x8029('0x137'),_0x8029('0x138'),_0x8029('0x139'),_0x8029('0x13a'),_0x8029('0x13b'),_0x8029('0x13c'),'secretaccesskey','key',_0x8029('0x16'),_0x8029('0x13d'),'accountSid',_0x8029('0x13e'),_0x8029('0x13f'),'secret','registry','oldPassword'];function maskSensitiveData(_0x2c52d2){var _0x4091dd=/(?!^)[\s\S](?!$)/g;if(!_[_0x8029('0x140')](_0x2c52d2))return;for(var _0x428f8e in _0x2c52d2){if(_['isArray'](_0x2c52d2[_0x428f8e])){for(var _0x1257b9=0x0;_0x1257b9<_0x2c52d2[_0x428f8e]['length'];_0x1257b9++){maskSensitiveData(_0x2c52d2[_0x428f8e][_0x1257b9]);}}else if(_[_0x8029('0x140')](_0x2c52d2[_0x428f8e])){maskSensitiveData(_0x2c52d2[_0x428f8e]);}else if(_[_0x8029('0x141')](_0x2c52d2[_0x428f8e])){_0x2c52d2[_0x428f8e]=_0x2c52d2[_0x428f8e][_0x8029('0x142')](/{{{/g,_0x8029('0x143'))[_0x8029('0x142')](/}}}/g,_0x8029('0x144'))[_0x8029('0x142')](/{{/g,'@{')[_0x8029('0x142')](/}}/g,'}@');if(_[_0x8029('0x145')](sensitiveFields,_0x428f8e)){_0x2c52d2[_0x428f8e]=_0x2c52d2[_0x428f8e]['replace'](_0x4091dd,'*');}}}}
\ No newline at end of file
+var _0xecfa=['./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','/api/sms/reports/queue','./api/squareReport','./api/squareReportDetail','./api/jscriptyProject','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','/api/square/messages','./api/squareMessage','/api/teams','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','./api/plugin','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/jira','./api/rpc','/api/version','./api/version','/api/system','./api/system','./api/pm2','/api/webbar','/apidoc','static','join','root','/www','/demo','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','password','newPassword','apiKey','lastName','phone','mobile','fax','email','clientId','clientSecret','securityToken','accessKey','channelSecret','authToken','consumerKey','consumerSecret','membername','vidaooApiKey','privateKey','accesskeyid','secretaccesskey','accountSid','localstationid','dsn','registry','oldPassword','isPlainObject','isArray','length','isString','@@{','replace','includes','path','express','express-winston','util','./errors','./config/environment','./config/logger','default','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','method','headers','x-forwarded-for','remoteAddress','url','statusCode','responseTime','user','name','inspect','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','connection','other','agent_name','test','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/mails/messages','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','./api/memberReport','/api/trunks','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_history','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/disposition','/api/conditions','/api/intervals','./api/interval','./api/pause','/api/cdr','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','/api/integrations','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts'];(function(_0x319cb9,_0x4b8d35){var _0x1735fc=function(_0x43b061){while(--_0x43b061){_0x319cb9['push'](_0x319cb9['shift']());}};_0x1735fc(++_0x4b8d35);}(_0xecfa,0x1d2));var _0xaecf=function(_0x38c2d5,_0x578397){_0x38c2d5=_0x38c2d5-0x0;var _0x731c1e=_0xecfa[_0x38c2d5];return _0x731c1e;};'use strict';var _=require('lodash');var path=require(_0xaecf('0x0'));var express=require(_0xaecf('0x1'));var ewinston=require(_0xaecf('0x2'));var util=require(_0xaecf('0x3'));var errors=require(_0xaecf('0x4'));var config=require(_0xaecf('0x5'));var logger=require(_0xaecf('0x6'))('api');var authLogger=require(_0xaecf('0x6'))('auth');exports[_0xaecf('0x7')]=function(_0x2308b4){_0x2308b4['use'](ewinston[_0xaecf('0x8')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4d21c9,_0x58e502){var _0x22f5d6=_0xaecf('0x9');if(!_[_0xaecf('0xa')](_0x4d21c9[_0xaecf('0xb')])){_0x22f5d6+=_0xaecf('0xc');var _0x11a152=_0x4d21c9[_0xaecf('0xb')];maskSensitiveData(_0x11a152);}return util['format'](_0x22f5d6,_0x4d21c9[_0xaecf('0xd')],_0x4d21c9[_0xaecf('0xe')][_0xaecf('0xf')]?_0x4d21c9[_0xaecf('0xe')][_0xaecf('0xf')]:_0x4d21c9['connection'][_0xaecf('0x10')]||_0x4d21c9['ip'],_0x4d21c9[_0xaecf('0x11')],_0x58e502[_0xaecf('0x12')],_0x58e502[_0xaecf('0x13')],_0x4d21c9[_0xaecf('0x14')]?_0x4d21c9[_0xaecf('0x14')]['id']:null,_0x4d21c9['user']?_0x4d21c9['user'][_0xaecf('0x15')]:null,_0x4d21c9[_0xaecf('0x14')]?_0x4d21c9[_0xaecf('0x14')]['role']:null,_0x11a152?util[_0xaecf('0x16')](_0x11a152,![],null):'');}}));_0x2308b4['use'](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x13c0a3,_0x2090a7){var _0x40875e='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x13c0a3[_0xaecf('0xb')]&&_0x13c0a3['body'][_0xaecf('0x17')]&&_0x13c0a3['body'][_0xaecf('0x18')]){_0x40875e=_0xaecf('0x19');}return util[_0xaecf('0x1a')](_0x40875e,_0x13c0a3[_0xaecf('0xd')],_0x13c0a3[_0xaecf('0xe')][_0xaecf('0xf')]?_0x13c0a3[_0xaecf('0xe')]['x-forwarded-for']:_0x13c0a3[_0xaecf('0x1b')][_0xaecf('0x10')]||_0x13c0a3['ip'],_0x13c0a3[_0xaecf('0x11')],_0x2090a7[_0xaecf('0x12')],_0x2090a7[_0xaecf('0x13')],_0x13c0a3[_0xaecf('0x14')]?_0x13c0a3[_0xaecf('0x14')]['id']:null,_0x13c0a3[_0xaecf('0x14')]?_0x13c0a3['user'][_0xaecf('0x15')]:null,_0x13c0a3['user']?_0x13c0a3['user']['role']:null,_0x13c0a3[_0xaecf('0xb')]&&_0x13c0a3[_0xaecf('0xb')][_0xaecf('0x17')]?_0x13c0a3[_0xaecf('0xb')][_0xaecf('0x17')]:_0xaecf('0x1c'),_0x13c0a3[_0xaecf('0xb')]&&_0x13c0a3[_0xaecf('0xb')][_0xaecf('0x18')]?_0x13c0a3['body'][_0xaecf('0x18')]:'',_0x13c0a3[_0xaecf('0xb')]&&_0x13c0a3['body']['agent_name']?_0x13c0a3['body'][_0xaecf('0x1d')]:'');},'ignoreRoute':function(_0x44107b){var _0x199471=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x199471[_0xaecf('0x1e')](_0x44107b['url']);}}));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x20'),require(_0xaecf('0x21')));_0x2308b4['use'](_0xaecf('0x22'),require(_0xaecf('0x23')));_0x2308b4[_0xaecf('0x1f')]('/api/voice/contexts',require('./api/voiceContext'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x24'),require(_0xaecf('0x25')));_0x2308b4['use'](_0xaecf('0x26'),require(_0xaecf('0x27')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x28'),require('./api/voiceQueue'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x29'),require(_0xaecf('0x2a')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x2b'),require(_0xaecf('0x2c')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x2d'),require('./api/voiceMail'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x2e'),require('./api/voiceMailMessage'));_0x2308b4[_0xaecf('0x1f')]('/api/voice/calls/reports',require('./api/voiceCallReport'));_0x2308b4['use']('/api/voice/dials/reports',require(_0xaecf('0x2f')));_0x2308b4[_0xaecf('0x1f')]('/api/voice/agents/reports',require(_0xaecf('0x30')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x31'),require(_0xaecf('0x32')));_0x2308b4[_0xaecf('0x1f')]('/api/members/reports',require(_0xaecf('0x33')));_0x2308b4['use'](_0xaecf('0x34'),require('./api/trunk'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x35'),require(_0xaecf('0x36')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x37'),require('./api/mailServerOut'));_0x2308b4[_0xaecf('0x1f')]('/api/mail/accounts',require(_0xaecf('0x38')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x39'),require(_0xaecf('0x3a')));_0x2308b4['use'](_0xaecf('0x3b'),require(_0xaecf('0x3c')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x3d'),require(_0xaecf('0x3e')));_0x2308b4['use'](_0xaecf('0x3f'),require('./api/mailMessage'));_0x2308b4[_0xaecf('0x1f')]('/api/mail/applications',require(_0xaecf('0x40')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x41'),require(_0xaecf('0x42')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x43'),require(_0xaecf('0x44')));_0x2308b4[_0xaecf('0x1f')]('/api/dashboards/items',require(_0xaecf('0x45')));_0x2308b4['use'](_0xaecf('0x46'),require(_0xaecf('0x47')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x48'),require(_0xaecf('0x49')));_0x2308b4['use'](_0xaecf('0x4a'),require(_0xaecf('0x4b')));_0x2308b4['use'](_0xaecf('0x4c'),require(_0xaecf('0x4d')));_0x2308b4['use']('/api/fax/queues',require('./api/faxQueue'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x4e'),require(_0xaecf('0x4f')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x50'),require('./api/smsAccount'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x51'),require(_0xaecf('0x52')));_0x2308b4['use']('/api/sms/interactions',require(_0xaecf('0x53')));_0x2308b4['use'](_0xaecf('0x54'),require(_0xaecf('0x55')));_0x2308b4[_0xaecf('0x1f')]('/api/sms/queues',require(_0xaecf('0x56')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x57'),require(_0xaecf('0x58')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x59'),require('./api/openchannelApplication'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x5a'),require(_0xaecf('0x5b')));_0x2308b4['use']('/api/openchannel/messages',require(_0xaecf('0x5c')));_0x2308b4['use'](_0xaecf('0x5d'),require(_0xaecf('0x5e')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x5f'),require('./api/chatWebsite'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x60'),require(_0xaecf('0x61')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x62'),require('./api/chatApplication'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x63'),require(_0xaecf('0x64')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x65'),require(_0xaecf('0x66')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x67'),require(_0xaecf('0x68')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x69'),require('./api/chatQueue'));_0x2308b4['use'](_0xaecf('0x6a'),require(_0xaecf('0x6b')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x6c'),require(_0xaecf('0x6d')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x6e'),require(_0xaecf('0x6f')));_0x2308b4['use'](_0xaecf('0x70'),require(_0xaecf('0x71')));_0x2308b4[_0xaecf('0x1f')]('/api/cm/hopper',require('./api/cmHopper'));_0x2308b4['use'](_0xaecf('0x72'),require(_0xaecf('0x73')));_0x2308b4[_0xaecf('0x1f')]('/api/cm/hopper_final',require('./api/cmHopperFinal'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x74'),require('./api/cmHopperHistory'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x75'),require('./api/cmCustomField'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x76'),require(_0xaecf('0x77')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x78'),require(_0xaecf('0x79')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x7a'),require('./api/cannedAnswer'));_0x2308b4[_0xaecf('0x1f')]('/api/dispositions',require(_0xaecf('0x7b')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x7c'),require('./api/condition'));_0x2308b4['use'](_0xaecf('0x7d'),require(_0xaecf('0x7e')));_0x2308b4['use']('/api/pauses',require(_0xaecf('0x7f')));_0x2308b4['use'](_0xaecf('0x80'),require('./api/cdr'));_0x2308b4['use']('/api/voiceQueuesLog',require('./api/voiceQueuesLog'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x81'),require(_0xaecf('0x82')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x83'),require(_0xaecf('0x84')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x85'),require('./api/tag'));_0x2308b4['use'](_0xaecf('0x86'),require(_0xaecf('0x87')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x88'),require(_0xaecf('0x89')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x8a'),require('./api/variable'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x8b'),require('./api/integration'));_0x2308b4['use']('/api/integrations/reports',require(_0xaecf('0x8c')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x8d'),require(_0xaecf('0x8e')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x8f'),require('./api/analyticDefaultReport'));_0x2308b4['use']('/api/analytics/extracted_reports',require(_0xaecf('0x90')));_0x2308b4['use'](_0xaecf('0x91'),require(_0xaecf('0x92')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x93'),require(_0xaecf('0x94')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x95'),require(_0xaecf('0x96')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x97'),require(_0xaecf('0x98')));_0x2308b4['use'](_0xaecf('0x99'),require('./api/intSalesforceConfiguration'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x9a'),require('./api/intSalesforceField'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x9b'),require(_0xaecf('0x9c')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x9d'),require(_0xaecf('0x9e')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x9f'),require(_0xaecf('0xa0')));_0x2308b4['use'](_0xaecf('0xa1'),require(_0xaecf('0xa2')));_0x2308b4[_0xaecf('0x1f')]('/api/integrations/desk/configurations',require(_0xaecf('0xa3')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xa4'),require('./api/intDeskField'));_0x2308b4['use']('/api/integrations/zoho/accounts',require(_0xaecf('0xa5')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xa6'),require(_0xaecf('0xa7')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xa8'),require('./api/intZohoField'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xa9'),require('./api/intZendeskAccount'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xaa'),require(_0xaecf('0xab')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xac'),require(_0xaecf('0xad')));_0x2308b4['use'](_0xaecf('0xae'),require(_0xaecf('0xaf')));_0x2308b4[_0xaecf('0x1f')]('/api/integrations/freshdesk/configurations',require(_0xaecf('0xb0')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xb1'),require(_0xaecf('0xb2')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xb3'),require(_0xaecf('0xb4')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xb5'),require(_0xaecf('0xb6')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xb7'),require(_0xaecf('0xb8')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xb9'),require(_0xaecf('0xba')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xbb'),require(_0xaecf('0xbc')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xbd'),require(_0xaecf('0xbe')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xbf'),require(_0xaecf('0xc0')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc1'),require(_0xaecf('0xc2')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc3'),require('./api/intDynamics365Field'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc4'),require('./api/intFreshsalesAccount'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc5'),require('./api/intFreshsalesConfiguration'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc6'),require('./api/intFreshsalesField'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc7'),require(_0xaecf('0xc8')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xc9'),require(_0xaecf('0xca')));_0x2308b4['use'](_0xaecf('0xcb'),require('./api/chatInternalMessage'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xcc'),require(_0xaecf('0xcd')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xce'),require(_0xaecf('0xcf')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xd0'),require('./api/jscriptySessionReport'));_0x2308b4['use'](_0xaecf('0xd1'),require('./api/smsQueueReport'));_0x2308b4[_0xaecf('0x1f')]('/api/square/reports',require(_0xaecf('0xd2')));_0x2308b4['use']('/api/square/details/reports',require(_0xaecf('0xd3')));_0x2308b4[_0xaecf('0x1f')]('/api/jscripty/projects',require(_0xaecf('0xd4')));_0x2308b4['use']('/api/settings',require('./api/setting'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xd5'),require(_0xaecf('0xd6')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xd7'),require(_0xaecf('0xd8')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xd9'),require('./api/squareRecording'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xda'),require(_0xaecf('0xdb')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xdc'),require('./api/team'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xdd'),require(_0xaecf('0xde')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xdf'),require(_0xaecf('0xe0')));_0x2308b4['use'](_0xaecf('0xe1'),require(_0xaecf('0xe2')));_0x2308b4[_0xaecf('0x1f')]('/api/attachments',require('./api/attachment'));_0x2308b4['use']('/api/plugins',require(_0xaecf('0xe3')));_0x2308b4[_0xaecf('0x1f')]('/api/mail/reports/transfer',require(_0xaecf('0xe4')));_0x2308b4['use'](_0xaecf('0xe5'),require(_0xaecf('0xe6')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xe7'),require(_0xaecf('0xe8')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xe9'),require(_0xaecf('0xea')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xeb'),require(_0xaecf('0xec')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xed'),require(_0xaecf('0xee')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xef'),require(_0xaecf('0xf0')));_0x2308b4['use'](_0xaecf('0xf1'),require('./api/userProfile'));_0x2308b4['use'](_0xaecf('0xf2'),require(_0xaecf('0xf3')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xf4'),require(_0xaecf('0xf5')));_0x2308b4['use']('/api/userNotifications',require('./api/userNotification'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xf6'),require(_0xaecf('0xf7')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xf8'),require(_0xaecf('0xf9')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xfa'),require(_0xaecf('0xfb')));_0x2308b4[_0xaecf('0x1f')]('/api/whatsapp/messages',require(_0xaecf('0xfc')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0xfd'),require(_0xaecf('0xfe')));_0x2308b4['use'](_0xaecf('0xff'),require(_0xaecf('0x100')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x101'),require(_0xaecf('0x102')));_0x2308b4['use'](_0xaecf('0x103'),require(_0xaecf('0x104')));_0x2308b4['use'](_0xaecf('0x105'),require(_0xaecf('0x106')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x107'),require(_0xaecf('0x108')));_0x2308b4[_0xaecf('0x1f')]('/api/auth/google',require('./api/authGoogle'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x109'),require('./api/jira'));_0x2308b4['use']('/api/rpc',require(_0xaecf('0x10a')));_0x2308b4['use'](_0xaecf('0x10b'),require(_0xaecf('0x10c')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x10d'),require(_0xaecf('0x10e')));_0x2308b4['use']('/api/pm2',require(_0xaecf('0x10f')));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x110'),require('./api/webbar'));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x111'),express[_0xaecf('0x112')](path[_0xaecf('0x113')](config[_0xaecf('0x114')],_0xaecf('0x111'))));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x115'),express[_0xaecf('0x112')](path[_0xaecf('0x113')](config[_0xaecf('0x114')],_0xaecf('0x115'))));_0x2308b4[_0xaecf('0x1f')](_0xaecf('0x116'),express[_0xaecf('0x112')](path['join'](config['root'],'/demo')));_0x2308b4['use']('/snippet',express[_0xaecf('0x112')](path['join'](config[_0xaecf('0x114')],_0xaecf('0x117'),_0xaecf('0x118'))));_0x2308b4['use'](_0xaecf('0x119'),express['static'](path[_0xaecf('0x113')](config[_0xaecf('0x114')],_0xaecf('0x11a'))));_0x2308b4[_0xaecf('0x11b')](_0xaecf('0x11c'))[_0xaecf('0x11d')](errors[0x194]);_0x2308b4[_0xaecf('0x11b')]('/*')[_0xaecf('0x11d')](function(_0x1c495c,_0x1709da){_0x1709da[_0xaecf('0x11e')](path[_0xaecf('0x11f')](_0x2308b4['get'](_0xaecf('0x120'))+_0xaecf('0x121')));});};var sensitiveFields=['username',_0xaecf('0x122'),_0xaecf('0x123'),_0xaecf('0x124'),'firstName',_0xaecf('0x125'),'street',_0xaecf('0x126'),_0xaecf('0x127'),_0xaecf('0x128'),_0xaecf('0x129'),_0xaecf('0x12a'),_0xaecf('0x12b'),_0xaecf('0x12c'),'code',_0xaecf('0x12d'),'tenantId','token',_0xaecf('0x12e'),'accessToken','accessTokenSecret',_0xaecf('0x12f'),_0xaecf('0x130'),_0xaecf('0x131'),_0xaecf('0x132'),'calleridname','calleridnum','exten',_0xaecf('0x133'),'clientEmail',_0xaecf('0x134'),_0xaecf('0x135'),_0xaecf('0x136'),'key',_0xaecf('0x14'),'pass',_0xaecf('0x137'),_0xaecf('0x138'),_0xaecf('0x139'),'secret',_0xaecf('0x13a'),_0xaecf('0x13b')];function maskSensitiveData(_0x1fcbda){var _0x268014=/(?!^)[\s\S](?!$)/g;if(!_[_0xaecf('0x13c')](_0x1fcbda))return;for(var _0x153eae in _0x1fcbda){if(_[_0xaecf('0x13d')](_0x1fcbda[_0x153eae])){for(var _0xde56ee=0x0;_0xde56ee<_0x1fcbda[_0x153eae][_0xaecf('0x13e')];_0xde56ee++){maskSensitiveData(_0x1fcbda[_0x153eae][_0xde56ee]);}}else if(_['isPlainObject'](_0x1fcbda[_0x153eae])){maskSensitiveData(_0x1fcbda[_0x153eae]);}else if(_[_0xaecf('0x13f')](_0x1fcbda[_0x153eae])){_0x1fcbda[_0x153eae]=_0x1fcbda[_0x153eae]['replace'](/{{{/g,_0xaecf('0x140'))[_0xaecf('0x141')](/}}}/g,'}@@')[_0xaecf('0x141')](/{{/g,'@{')[_0xaecf('0x141')](/}}/g,'}@');if(_[_0xaecf('0x142')](sensitiveFields,_0x153eae)){_0x1fcbda[_0x153eae]=_0x1fcbda[_0x153eae]['replace'](_0x268014,'*');}}}}
\ No newline at end of file
index 2ab6528..0223c33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fd4=['../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/sound/sound.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','rpc','port','localhost','error','log','default','jayson/promise','bluebird','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.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/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc'];(function(_0x154192,_0x2d360f){var _0x3c2792=function(_0x2e257b){while(--_0x2e257b){_0x154192['push'](_0x154192['shift']());}};_0x3c2792(++_0x2d360f);}(_0x0fd4,0x1dd));var _0x40fd=function(_0x455c6c,_0x1e78b7){_0x455c6c=_0x455c6c-0x0;var _0x488242=_0x0fd4[_0x455c6c];return _0x488242;};'use strict';var jayson=require(_0x40fd('0x0'));var BPromise=require(_0x40fd('0x1'));var _=require(_0x40fd('0x2'));var config=require(_0x40fd('0x3'));exports[_0x40fd('0x4')]=function(){return new BPromise(function(_0x582eb7,_0x30181b){var _0x36d85d={};_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x6')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/voiceExtension/voiceExtension.rpc'));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x7')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/voiceRecording/voiceRecording.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x8')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x9')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0xa')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0xb')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0xc')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0xd')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0xe')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0xf')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x10')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x11')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x12')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x13')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x14')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x15')));_0x36d85d=_['merge'](_0x36d85d,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x16')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x17')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x18')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x19')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x1a')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x1b')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/smsAccount/smsAccount.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x1c')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x1d')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x1e')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x1f')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x36d85d=_['merge'](_0x36d85d,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x20')));_0x36d85d=_['merge'](_0x36d85d,require('../api/chatMessage/chatMessage.rpc'));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x21')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x22')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x23')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x24')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x25')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x26')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/pause/pause.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x27')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/template/template.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x28')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x29')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x2a')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x2b')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x2c')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x2d')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x2e')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x2f')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x30')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x31')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x32')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x33')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x34')));_0x36d85d=_['merge'](_0x36d85d,require(_0x40fd('0x35')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x36')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x37')));_0x36d85d=_['merge'](_0x36d85d,require('../api/squareOdbc/squareOdbc.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x38')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x39')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x3a')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x3b')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require('../api/attachment/attachment.rpc'));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x3c')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x3d')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x3e')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x3f')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x40')));_0x36d85d=_[_0x40fd('0x5')](_0x36d85d,require(_0x40fd('0x41')));var _0x1d1f52=jayson[_0x40fd('0x42')](_0x36d85d)['http']();var _0x1b306e=config[_0x40fd('0x43')][_0x40fd('0x44')]||config['port']+0x1;var _0x30dc21=config[_0x40fd('0x43')]['ip']||_0x40fd('0x45');_0x1d1f52['on'](_0x40fd('0x46'),function(_0x36232c){return _0x30181b(_0x36232c);});_0x1d1f52[_0x40fd('0x4')](_0x1b306e,_0x30dc21,function(){console[_0x40fd('0x47')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x30dc21,_0x1b306e);require('../config/triggers')[_0x40fd('0x48')]();return _0x582eb7('RPC\x20listening\x20on\x20'+_0x30dc21+':'+_0x1b306e);});});};
\ No newline at end of file
+var _0xe5eb=['../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/plugin/plugin.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','error','log','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird','lodash','listen','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','merge','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxApplication/faxApplication.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc'];(function(_0x2778e5,_0x333575){var _0x42d718=function(_0x53ecf5){while(--_0x53ecf5){_0x2778e5['push'](_0x2778e5['shift']());}};_0x42d718(++_0x333575);}(_0xe5eb,0x137));var _0xbe5e=function(_0x43e955,_0x3c48aa){_0x43e955=_0x43e955-0x0;var _0x471cc9=_0xe5eb[_0x43e955];return _0x471cc9;};'use strict';var jayson=require(_0xbe5e('0x0'));var BPromise=require(_0xbe5e('0x1'));var _=require(_0xbe5e('0x2'));var config=require('../config/environment');exports[_0xbe5e('0x3')]=function(){return new BPromise(function(_0x18835d,_0x1fc4b3){var _0x494f77={};_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x4')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x5')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x7')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x8')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x9')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0xa')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0xb')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0xc')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0xd')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0xe')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0xf')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/mailServerIn/mailServerIn.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x10')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x11')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x12')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x13')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/mailApplication/mailApplication.rpc'));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x14')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/faxAccount/faxAccount.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x15')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/faxInteraction/faxInteraction.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x16')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x17')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x18')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/smsAccount/smsAccount.rpc'));_0x494f77=_['merge'](_0x494f77,require('../api/smsInteraction/smsInteraction.rpc'));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x19')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x1a')));_0x494f77=_['merge'](_0x494f77,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x494f77=_['merge'](_0x494f77,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x1b')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x1c')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x1d')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x1e')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x1f')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x20')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x21')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x22')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x23')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x24')));_0x494f77=_['merge'](_0x494f77,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x25')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/interval/interval.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x26')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x27')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x28')));_0x494f77=_['merge'](_0x494f77,require('../api/trigger/trigger.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/variable/variable.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x29')));_0x494f77=_['merge'](_0x494f77,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x2a')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x2b')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x2c')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x2d')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x2e')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x2f')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/intDynamics365Account/intDynamics365Account.rpc'));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x30')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x31')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x32')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/squareReport/squareReport.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x33')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x34')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x35')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x36')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x37')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x38')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x39')));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/attachment/attachment.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x3a')));_0x494f77=_['merge'](_0x494f77,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x494f77=_[_0xbe5e('0x6')](_0x494f77,require(_0xbe5e('0x3b')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x3c')));_0x494f77=_['merge'](_0x494f77,require(_0xbe5e('0x3d')));var _0x21805e=jayson[_0xbe5e('0x3e')](_0x494f77)[_0xbe5e('0x3f')]();var _0x45e39c=config[_0xbe5e('0x40')][_0xbe5e('0x41')]||config['port']+0x1;var _0x1d64ad=config[_0xbe5e('0x40')]['ip']||_0xbe5e('0x42');_0x21805e['on'](_0xbe5e('0x43'),function(_0x3a69b1){return _0x1fc4b3(_0x3a69b1);});_0x21805e[_0xbe5e('0x3')](_0x45e39c,_0x1d64ad,function(){console[_0xbe5e('0x44')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x1d64ad,_0x45e39c);require('../config/triggers')[_0xbe5e('0x45')]();return _0x18835d(_0xbe5e('0x46')+_0x1d64ad+':'+_0x45e39c);});});};
\ No newline at end of file
diff --git a/server/safe-template.js b/server/safe-template.js
deleted file mode 100644 (file)
index e843828..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 _0x2032=['isArray','map','isPlainObject','keys','reduce','exports','safeTemplate','{\x20{\x20','\x20}\x20}','string'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x2032,0xd9));var _0x2203=function(_0x561013,_0x162dfa){_0x561013=_0x561013-0x0;var _0x40d515=_0x2032[_0x561013];return _0x40d515;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x2c2259){return _0x2c2259==='{{'?_0x2203('0x0'):_0x2203('0x1');}function safeTemplate(_0x4c28da){var _0x486390=_0x4c28da;if(typeof _0x4c28da===_0x2203('0x2')){_0x486390=_0x4c28da['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x2203('0x3')](_0x4c28da)){_0x486390=_0x4c28da[_0x2203('0x4')](function(_0x44ccfd){return safeTemplate(_0x44ccfd);});}else if(_[_0x2203('0x5')](_0x4c28da)){_0x486390=Object[_0x2203('0x6')](_0x4c28da)[_0x2203('0x7')](function(_0x2e0f63,_0x2676aa){_0x2e0f63[_0x2676aa]=safeTemplate(_0x4c28da[_0x2676aa]);return _0x2e0f63;},{});}return _0x486390;}module[_0x2203('0x8')][_0x2203('0x9')]=safeTemplate;
\ No newline at end of file
index 7a10356..1d1dc5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fb2=['error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','prototype','sync','answer','sendRequest','ANSWER','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','join','EXEC\x20%s\x20%s','SET\x20CONTEXT\x20%s','setExtension','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean','isNumber','toString','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setContext','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','streamFile','agi','AGI','wait','WAIT','label','exports','util','lodash','events','EventEmitter','./error','call','setEncoding','utf8','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','function','no\x20code','replace','result=','indexOf','length','match'];(function(_0x40b749,_0x388015){var _0x5755dc=function(_0x1ded69){while(--_0x1ded69){_0x40b749['push'](_0x40b749['shift']());}};_0x5755dc(++_0x388015);}(_0x6fb2,0x1ef));var _0x26fb=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6fb2[_0x2dafbe];return _0x58a45a;};'use strict';var util=require(_0x26fb('0x0'));var _=require(_0x26fb('0x1'));var EventEmitter=require(_0x26fb('0x2'))[_0x26fb('0x3')];var AGIReply=require('./reply');var AGIError=require(_0x26fb('0x4'));function AGIChannel(_0x3d20be){var _0x51779b=this,_0x335164=new AGIReply(),_0x46897b=![],_0x2211ba={};EventEmitter[_0x26fb('0x5')](_0x51779b);_0x3d20be[_0x26fb('0x6')](_0x26fb('0x7'));_0x3d20be['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x335164[_0x26fb('0x6')]('utf8');_0x335164['on']('headers',function(_0x17b315){for(var _0x401d62 in _0x17b315){_0x51779b[_0x401d62]=_0x17b315[_0x401d62];}_0x51779b[_0x26fb('0x8')](_0x26fb('0x9'));});_0x335164['on'](_0x26fb('0xa'),function(_0x474489){if(_0x474489[_0x26fb('0xb')]()==_0x26fb('0xc')){_0x51779b[_0x26fb('0x8')]('hangup');return;}if(_0x474489[_0x26fb('0xd')](0x0,0xb)==_0x26fb('0xe')){_0x46897b=!![];}if(_0x46897b){_0x2211ba['rx']+=_0x474489+'\x0a';if(_0x474489[_0x26fb('0xf')]('520\x20End\x20of\x20proper')!=-0x1){_0x46897b=![];}}else{_0x2211ba['rx']=_0x474489;}if(_0x46897b){return;}if(typeof _0x2211ba['cb']==_0x26fb('0x10')){var _0x2c8475=_0x2211ba['rx']['substring'](0x0,0x3),_0x175441=null,_0x3efacf=null;_0x2c8475=parseInt(_0x2c8475);if(isNaN(_0x2c8475)){_0x2211ba['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x26fb('0x11')});return;}if(_0x2c8475!=0xc8){_0x2211ba['cb'](null,{'code':_0x2c8475,'result':-0x1,'extra':'KO'});return;}_0x175441=_0x2211ba['rx'][_0x26fb('0xd')](0x4)[_0x26fb('0x12')](_0x26fb('0x13'),'');if(_0x175441['indexOf']('\x20')!=-0x1){_0x175441=_0x175441['substr'](0x0,_0x175441[_0x26fb('0x14')]('\x20'));}if(_['startsWith'](_0x175441,'-1')){_0x175441=parseInt(_0x175441);}_0x3efacf=_0x2211ba['rx']['split']('\x20');if(_0x3efacf[_0x26fb('0x15')]==0x3){_0x3efacf=_0x3efacf[0x2][_0x26fb('0xd')](0x1,_0x3efacf[0x2]['length']-0x1);}else if(_0x3efacf[_0x26fb('0x15')]>0x3){var _0x4a166c=/\((.+)\)/;var _0x11d923=_0x2211ba['rx'][_0x26fb('0x16')](_0x4a166c);if(_0x11d923){_0x3efacf=_0x11d923[0x1];}else{_0x3efacf=null;}}else{_0x3efacf=null;}_0x2211ba['cb'](null,{'code':_0x2c8475,'result':_0x175441,'extra':_0x3efacf});}});_0x3d20be['on'](_0x26fb('0x17'),function(_0x50c2e0){_0x51779b[_0x26fb('0x8')]('error',new AGIError(_0x26fb('0x18'),_0x50c2e0[_0x26fb('0x19')]));});_0x3d20be['on'](_0x26fb('0x1a'),function(){_0x51779b[_0x26fb('0x8')](_0x26fb('0x1a'),new AGIError(_0x26fb('0x1b')));});_0x3d20be['on']('timeout',function(){_0x51779b['emit'](_0x26fb('0x1c'),new AGIError(_0x26fb('0x1d')));_0x3d20be[_0x26fb('0x1e')]();});_0x3d20be[_0x26fb('0x1f')](_0x335164);this[_0x26fb('0x20')]=function(_0x183248,_0xfe85fa){var _0x183248=_0x183248||'',_0xfe85fa=typeof _0xfe85fa==_0x26fb('0x10')?_0xfe85fa:new Function();_0x2211ba={'tx':_0x183248,'rx':'','cb':_0xfe85fa};_0x3d20be[_0x26fb('0x21')](_0x183248+'\x0a');},this['close']=function(){_0x3d20be[_0x26fb('0x1e')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x26fb('0x22')]['sendRequest']=function(_0x37e6dd){return this[_0x26fb('0x20')][_0x26fb('0x23')](this,_0x37e6dd);};AGIChannel[_0x26fb('0x22')][_0x26fb('0x24')]=function(){return this[_0x26fb('0x25')](_0x26fb('0x26'));};AGIChannel[_0x26fb('0x22')]['getData']=function(_0x46f1b1,_0x3d53bb,_0xbb7174){_0x46f1b1=_0x46f1b1===undefined?_0x26fb('0x27'):_0x46f1b1;_0x3d53bb=_0x3d53bb===undefined?'5':_0x3d53bb;_0xbb7174=_0xbb7174===undefined?'1':_0xbb7174;return this[_0x26fb('0x25')](util['format'](_0x26fb('0x28'),_0x46f1b1,_0x3d53bb*0x3e8,_0xbb7174));};AGIChannel[_0x26fb('0x22')][_0x26fb('0x29')]=function(_0x432243){_0x432243=_0x432243||_0x26fb('0x2a');return this[_0x26fb('0x25')](util[_0x26fb('0x2b')](_0x26fb('0x2c'),_0x432243));};AGIChannel[_0x26fb('0x22')][_0x26fb('0x2d')]=function(_0x1cb89e,_0x4cbb03){if(_[_0x26fb('0x2e')](_0x4cbb03)){return this['sendRequest'](util['format']('EXEC\x20%s\x20%s',_0x1cb89e,_0x4cbb03[_0x26fb('0x2f')](',')));}return this['sendRequest'](util['format'](_0x26fb('0x30'),_0x1cb89e,_0x4cbb03));};AGIChannel[_0x26fb('0x22')]['setContext']=function(_0xbe6bb1){return this[_0x26fb('0x25')](util[_0x26fb('0x2b')](_0x26fb('0x31'),_0xbe6bb1));};AGIChannel[_0x26fb('0x22')][_0x26fb('0x32')]=function(_0x2aacb4){return this['sendRequest'](util[_0x26fb('0x2b')]('SET\x20EXTENSION\x20%s',_0x2aacb4));};AGIChannel[_0x26fb('0x22')][_0x26fb('0x33')]=function(_0x33d120){return this[_0x26fb('0x25')](util[_0x26fb('0x2b')](_0x26fb('0x34'),_0x33d120));};AGIChannel[_0x26fb('0x22')][_0x26fb('0xc')]=function(){return this[_0x26fb('0x25')]('HANGUP');};AGIChannel[_0x26fb('0x22')][_0x26fb('0x35')]=function(_0x2c271f,_0x3a00de){var _0x424517=_[_0x26fb('0x36')](_0x3a00de)||_[_0x26fb('0x37')](_0x3a00de)?_0x3a00de[_0x26fb('0x38')]():_0x3a00de;return this[_0x26fb('0x25')](util['format']('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x2c271f,_0x424517?_0x424517[_0x26fb('0x38')]()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x26fb('0x22')]['sayNumber']=function(_0x2c7842,_0x1ce10e){return this['sendRequest'](util['format'](_0x26fb('0x39'),_0x2c7842,_0x1ce10e));};AGIChannel['prototype'][_0x26fb('0x3a')]=function(_0x110703,_0x1fac34){return this[_0x26fb('0x25')](util['format']('SAY\x20DIGITS\x20%s\x20%s',_0x110703,_0x1fac34));};AGIChannel[_0x26fb('0x22')]['sayPhonetic']=function(_0x13551f,_0xf26038){return this[_0x26fb('0x25')](util[_0x26fb('0x2b')](_0x26fb('0x3b'),_0x13551f,_0xf26038));};AGIChannel[_0x26fb('0x22')][_0x26fb('0x3c')]=function(_0x46af0e,_0x34fcaa,_0x2ca76e){_0x34fcaa=_0x34fcaa||this[_0x26fb('0x3d')];_0x2ca76e=_0x2ca76e||0x1;this[_0x26fb('0x3e')](_0x46af0e);this[_0x26fb('0x32')](_0x34fcaa);this[_0x26fb('0x33')](_0x2ca76e);return this[_0x26fb('0x29')](util[_0x26fb('0x2b')]('GOTO\x20%s\x20%s\x20%s',_0x46af0e,_0x34fcaa,_0x2ca76e));};AGIChannel[_0x26fb('0x22')][_0x26fb('0x3f')]=function(_0x55373e){return this[_0x26fb('0x25')](util[_0x26fb('0x2b')](_0x26fb('0x40'),_0x55373e));};AGIChannel[_0x26fb('0x22')][_0x26fb('0x41')]=function(_0x16d383,_0x5edbea,_0xe896bf,_0x2cbc68,_0x1ecd96,_0x48a756){_0x5edbea=_0x5edbea||_0x26fb('0x42');_0xe896bf=_0xe896bf||'';_0x2cbc68=_0x2cbc68===undefined?-0x1:_0x2cbc68==='-1'?-0x1:_0x2cbc68*0x3e8;_0x1ecd96=_0x1ecd96===undefined?'':'s='+_0x1ecd96;_0x48a756=_0x48a756?'BEEP':'';return this[_0x26fb('0x25')](util[_0x26fb('0x2b')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x16d383,_0x5edbea,_0xe896bf,_0x2cbc68,_0x48a756,_0x1ecd96));};AGIChannel['prototype'][_0x26fb('0x43')]=function(_0x2c08ba,_0x2da1d8){_0x2da1d8=_0x2da1d8||'';return this[_0x26fb('0x25')](util[_0x26fb('0x2b')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x2c08ba,_0x2da1d8));};AGIChannel[_0x26fb('0x22')][_0x26fb('0x44')]=function(_0x482ae1){return this['exec'](_0x26fb('0x45'),_0x482ae1);};AGIChannel[_0x26fb('0x22')][_0x26fb('0x46')]=function(_0x15b7de){return this[_0x26fb('0x2d')](_0x26fb('0x47'),_0x15b7de);};AGIChannel[_0x26fb('0x22')][_0x26fb('0x17')]=function(_0x2f076f,_0x53440f){this[_0x26fb('0x29')](util[_0x26fb('0x2b')]('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x2f076f['id'],_0x2f076f[_0x26fb('0x48')],_0x53440f));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x26fb('0x49')]=AGIChannel;
\ No newline at end of file
+var _0x9bb8=['isBoolean','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setExtension','noop','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','agi','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','EventEmitter','./reply','./error','call','utf8','setTimeout','setEncoding','headers','emit','ready','hangup','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','no\x20code','result=','indexOf','substr','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','destroy','pipe','command','write','inherits','prototype','sendRequest','sync','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP'];(function(_0x2f2ab1,_0x7dc23d){var _0x590f6b=function(_0x1914dc){while(--_0x1914dc){_0x2f2ab1['push'](_0x2f2ab1['shift']());}};_0x590f6b(++_0x7dc23d);}(_0x9bb8,0x1ae));var _0x89bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9bb8[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x89bb('0x0'));var _=require(_0x89bb('0x1'));var EventEmitter=require(_0x89bb('0x2'))[_0x89bb('0x3')];var AGIReply=require(_0x89bb('0x4'));var AGIError=require(_0x89bb('0x5'));function AGIChannel(_0x3e766d){var _0x1af2d3=this,_0xaa37b7=new AGIReply(),_0x26ecc2=![],_0x436902={};EventEmitter[_0x89bb('0x6')](_0x1af2d3);_0x3e766d['setEncoding'](_0x89bb('0x7'));_0x3e766d[_0x89bb('0x8')](0x8*0x3c*0x3c*0x3e8);_0xaa37b7[_0x89bb('0x9')](_0x89bb('0x7'));_0xaa37b7['on'](_0x89bb('0xa'),function(_0x392260){for(var _0x58ff32 in _0x392260){_0x1af2d3[_0x58ff32]=_0x392260[_0x58ff32];}_0x1af2d3[_0x89bb('0xb')](_0x89bb('0xc'));});_0xaa37b7['on']('line',function(_0x9da489){if(_0x9da489['toLowerCase']()==_0x89bb('0xd')){_0x1af2d3['emit'](_0x89bb('0xd'));return;}if(_0x9da489['substring'](0x0,0xb)==_0x89bb('0xe')){_0x26ecc2=!![];}if(_0x26ecc2){_0x436902['rx']+=_0x9da489+'\x0a';if(_0x9da489[_0x89bb('0xf')](_0x89bb('0x10'))!=-0x1){_0x26ecc2=![];}}else{_0x436902['rx']=_0x9da489;}if(_0x26ecc2){return;}if(typeof _0x436902['cb']==_0x89bb('0x11')){var _0x49c4ed=_0x436902['rx'][_0x89bb('0x12')](0x0,0x3),_0x4be9b=null,_0x145c52=null;_0x49c4ed=parseInt(_0x49c4ed);if(isNaN(_0x49c4ed)){_0x436902['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x89bb('0x13')});return;}if(_0x49c4ed!=0xc8){_0x436902['cb'](null,{'code':_0x49c4ed,'result':-0x1,'extra':'KO'});return;}_0x4be9b=_0x436902['rx']['substring'](0x4)['replace'](_0x89bb('0x14'),'');if(_0x4be9b[_0x89bb('0x15')]('\x20')!=-0x1){_0x4be9b=_0x4be9b[_0x89bb('0x16')](0x0,_0x4be9b[_0x89bb('0x15')]('\x20'));}if(_[_0x89bb('0x17')](_0x4be9b,'-1')){_0x4be9b=parseInt(_0x4be9b);}_0x145c52=_0x436902['rx'][_0x89bb('0x18')]('\x20');if(_0x145c52['length']==0x3){_0x145c52=_0x145c52[0x2][_0x89bb('0x12')](0x1,_0x145c52[0x2][_0x89bb('0x19')]-0x1);}else if(_0x145c52['length']>0x3){var _0x1c7666=/\((.+)\)/;var _0x9199ac=_0x436902['rx'][_0x89bb('0x1a')](_0x1c7666);if(_0x9199ac){_0x145c52=_0x9199ac[0x1];}else{_0x145c52=null;}}else{_0x145c52=null;}_0x436902['cb'](null,{'code':_0x49c4ed,'result':_0x4be9b,'extra':_0x145c52});}});_0x3e766d['on'](_0x89bb('0x1b'),function(_0x310e3d){_0x1af2d3['emit'](_0x89bb('0x1b'),new AGIError(_0x89bb('0x1c'),_0x310e3d[_0x89bb('0x1d')]));});_0x3e766d['on'](_0x89bb('0x1e'),function(){_0x1af2d3[_0x89bb('0xb')](_0x89bb('0x1e'),new AGIError(_0x89bb('0x1f')));});_0x3e766d['on'](_0x89bb('0x20'),function(){_0x1af2d3[_0x89bb('0xb')](_0x89bb('0x20'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x3e766d[_0x89bb('0x21')]();});_0x3e766d[_0x89bb('0x22')](_0xaa37b7);this[_0x89bb('0x23')]=function(_0x436b2a,_0x276eb6){var _0x436b2a=_0x436b2a||'',_0x276eb6=typeof _0x276eb6==_0x89bb('0x11')?_0x276eb6:new Function();_0x436902={'tx':_0x436b2a,'rx':'','cb':_0x276eb6};_0x3e766d[_0x89bb('0x24')](_0x436b2a+'\x0a');},this[_0x89bb('0x1e')]=function(){_0x3e766d[_0x89bb('0x21')]();};}util[_0x89bb('0x25')](AGIChannel,EventEmitter);AGIChannel[_0x89bb('0x26')][_0x89bb('0x27')]=function(_0x308726){return this[_0x89bb('0x23')][_0x89bb('0x28')](this,_0x308726);};AGIChannel['prototype']['answer']=function(){return this[_0x89bb('0x27')](_0x89bb('0x29'));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x2a')]=function(_0xfaf778,_0x1f557b,_0x5082af){_0xfaf778=_0xfaf778===undefined?_0x89bb('0x2b'):_0xfaf778;_0x1f557b=_0x1f557b===undefined?'5':_0x1f557b;_0x5082af=_0x5082af===undefined?'1':_0x5082af;return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x2d'),_0xfaf778,_0x1f557b*0x3e8,_0x5082af));};AGIChannel[_0x89bb('0x26')]['noop']=function(_0x1d7126){_0x1d7126=_0x1d7126||_0x89bb('0x2e');return this[_0x89bb('0x27')](util['format'](_0x89bb('0x2f'),_0x1d7126));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x30')]=function(_0x1f2a2e,_0x56284d){if(_[_0x89bb('0x31')](_0x56284d)){return this['sendRequest'](util[_0x89bb('0x2c')](_0x89bb('0x32'),_0x1f2a2e,_0x56284d['join'](',')));}return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x32'),_0x1f2a2e,_0x56284d));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x33')]=function(_0x486756){return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x34'),_0x486756));};AGIChannel[_0x89bb('0x26')]['setExtension']=function(_0x33fb9b){return this[_0x89bb('0x27')](util[_0x89bb('0x2c')]('SET\x20EXTENSION\x20%s',_0x33fb9b));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x35')]=function(_0x2b7177){return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x36'),_0x2b7177));};AGIChannel[_0x89bb('0x26')][_0x89bb('0xd')]=function(){return this[_0x89bb('0x27')](_0x89bb('0x37'));};AGIChannel[_0x89bb('0x26')]['setVariable']=function(_0x219a7a,_0x46c471){var _0x5b1778=_[_0x89bb('0x38')](_0x46c471)||_[_0x89bb('0x39')](_0x46c471)?_0x46c471['toString']():_0x46c471;return this['sendRequest'](util['format'](_0x89bb('0x3a'),_0x219a7a,_0x5b1778?_0x5b1778['toString']()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x89bb('0x3b')]=function(_0x1b0562,_0x2a36e2){return this['sendRequest'](util[_0x89bb('0x2c')](_0x89bb('0x3c'),_0x1b0562,_0x2a36e2));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x3d')]=function(_0x24e4a3,_0x109cfc){return this['sendRequest'](util[_0x89bb('0x2c')](_0x89bb('0x3e'),_0x24e4a3,_0x109cfc));};AGIChannel['prototype'][_0x89bb('0x3f')]=function(_0x36cf74,_0x15b152){return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x40'),_0x36cf74,_0x15b152));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x41')]=function(_0x220b2a,_0x5be8c0,_0x58ec00){_0x5be8c0=_0x5be8c0||this[_0x89bb('0x42')];_0x58ec00=_0x58ec00||0x1;this[_0x89bb('0x33')](_0x220b2a);this[_0x89bb('0x43')](_0x5be8c0);this[_0x89bb('0x35')](_0x58ec00);return this[_0x89bb('0x44')](util['format'](_0x89bb('0x45'),_0x220b2a,_0x5be8c0,_0x58ec00));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x46')]=function(_0x21acaf){return this[_0x89bb('0x27')](util['format']('GET\x20VARIABLE\x20\x22%s\x22',_0x21acaf));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x47')]=function(_0x1b3ba6,_0x2c8bc5,_0x278efa,_0x3b53c4,_0x609bec,_0x4baef9){_0x2c8bc5=_0x2c8bc5||_0x89bb('0x48');_0x278efa=_0x278efa||'';_0x3b53c4=_0x3b53c4===undefined?-0x1:_0x3b53c4==='-1'?-0x1:_0x3b53c4*0x3e8;_0x609bec=_0x609bec===undefined?'':'s='+_0x609bec;_0x4baef9=_0x4baef9?'BEEP':'';return this[_0x89bb('0x27')](util[_0x89bb('0x2c')](_0x89bb('0x49'),_0x1b3ba6,_0x2c8bc5,_0x278efa,_0x3b53c4,_0x4baef9,_0x609bec));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x4a')]=function(_0x19e87b,_0x3fb107){_0x3fb107=_0x3fb107||'';return this[_0x89bb('0x27')](util[_0x89bb('0x2c')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x19e87b,_0x3fb107));};AGIChannel[_0x89bb('0x26')][_0x89bb('0x4b')]=function(_0x1575e3){return this[_0x89bb('0x30')]('AGI',_0x1575e3);};AGIChannel['prototype'][_0x89bb('0x4c')]=function(_0x5586c7){return this[_0x89bb('0x30')](_0x89bb('0x4d'),_0x5586c7);};AGIChannel[_0x89bb('0x26')][_0x89bb('0x1b')]=function(_0x48df1d,_0x2f5c62){this[_0x89bb('0x44')](util[_0x89bb('0x2c')](_0x89bb('0x4e'),_0x48df1d['id'],_0x48df1d[_0x89bb('0x4f')],_0x2f5c62));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x89bb('0x50')]=AGIChannel;
\ No newline at end of file
index 16ea25a..0188769 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x949e=['E_AGI_UNDEFINED','push','format','apply','message','name','exports','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.'];(function(_0x40aaa4,_0x3b22f4){var _0x4e21e5=function(_0x35d2f3){while(--_0x35d2f3){_0x40aaa4['push'](_0x40aaa4['shift']());}};_0x4e21e5(++_0x3b22f4);}(_0x949e,0x157));var _0xe949=function(_0x10bfee,_0x34195e){_0x10bfee=_0x10bfee-0x0;var _0x427cd2=_0x949e[_0x10bfee];return _0x427cd2;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xe949('0x0'),'E_AGI_SERVER_ERROR':_0xe949('0x1'),'E_AGI_SERVER_CLOSE':_0xe949('0x2'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0xe949('0x3'),'E_AGI_SOCKET_ERROR':_0xe949('0x4'),'E_AGI_SOCKET_CLOSE':_0xe949('0x5'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0xe949('0x6'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xe949('0x7'),'E_AGI_IVR_ENTRY':_0xe949('0x8')};function AGIError(_0x3943d5){var _0x3943d5=_0x3943d5||null,_0x29d4b8=_0x29d4b8||[],_0x18586b=0x1,_0x4f8aa6='';if(!error[_0x3943d5]){_0x3943d5=_0xe949('0x9');}_0x29d4b8['push'](error[_0x3943d5]);while(arguments[_0x18586b]){_0x29d4b8[_0xe949('0xa')](arguments[_0x18586b]);_0x18586b++;}_0x4f8aa6=util[_0xe949('0xb')][_0xe949('0xc')](util,_0x29d4b8);this[_0xe949('0xd')]=_0x4f8aa6;this[_0xe949('0xe')]=_0x3943d5;}module[_0xe949('0xf')]=AGIError;
\ No newline at end of file
+var _0xf34e=['Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','name','Undefined\x20error.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.'];(function(_0x3b957f,_0x512f8c){var _0x419634=function(_0x1b925f){while(--_0x1b925f){_0x3b957f['push'](_0x3b957f['shift']());}};_0x419634(++_0x512f8c);}(_0xf34e,0x1ca));var _0xef34=function(_0x38c260,_0xb76036){_0x38c260=_0x38c260-0x0;var _0x38b0d3=_0xf34e[_0x38c260];return _0x38b0d3;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0xef34('0x0'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0xef34('0x1'),'E_AGI_SERVER_CLOSE':_0xef34('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0xef34('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0xef34('0x4'),'E_AGI_SOCKET_ERROR':_0xef34('0x5'),'E_AGI_SOCKET_CLOSE':_0xef34('0x6'),'E_AGI_SOCKET_TIMEOUT':_0xef34('0x7'),'E_AGI_COMMAND_EMPTY':_0xef34('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xef34('0x9'),'E_AGI_IVR_ENTRY':_0xef34('0xa')};function AGIError(_0x47bde8){var _0x47bde8=_0x47bde8||null,_0x26042f=_0x26042f||[],_0x5c7779=0x1,_0x10c53f='';if(!error[_0x47bde8]){_0x47bde8=_0xef34('0xb');}_0x26042f[_0xef34('0xc')](error[_0x47bde8]);while(arguments[_0x5c7779]){_0x26042f[_0xef34('0xc')](arguments[_0x5c7779]);_0x5c7779++;}_0x10c53f=util[_0xef34('0xd')][_0xef34('0xe')](util,_0x26042f);this['message']=_0x10c53f;this[_0xef34('0xf')]=_0x47bde8;}module['exports']=AGIError;
\ No newline at end of file
index 64ffe45..0d1049f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab4=['no\x20edge/s\x20available','condition','agicommand','vswitch','target','default','invalid','traverseBFS','default\x20on\x20switch\x20not\x20found','includes','condition\x20not\x20found','exports','agi','menu','getdigits','getsecretdigits','vertices','numberOfEdges','prototype','addVertex','edges','relations','getVertex','info','no\x20vertex\x20found','stop\x20traverse','length'];(function(_0x4bf05b,_0x5deea1){var _0x2f1ff4=function(_0x501d15){while(--_0x501d15){_0x4bf05b['push'](_0x4bf05b['shift']());}};_0x2f1ff4(++_0x5deea1);}(_0x4ab4,0x1f2));var _0x44ab=function(_0x1852ef,_0xf931d){_0x1852ef=_0x1852ef-0x0;var _0x11a0e8=_0x4ab4[_0x1852ef];return _0x11a0e8;};'use strict';var _=require('lodash');var logger=require('../../../config/logger')(_0x44ab('0x0'));var verticesWithRetry=[_0x44ab('0x1'),_0x44ab('0x2'),_0x44ab('0x3')];var Graph=function(){this[_0x44ab('0x4')]={};this['edges']={};this[_0x44ab('0x5')]=0x0;};Graph[_0x44ab('0x6')][_0x44ab('0x7')]=function(_0x1163c8){this[_0x44ab('0x4')][_0x1163c8['id']]=_0x1163c8;this[_0x44ab('0x8')][_0x1163c8['id']]=[];};Graph['prototype']['addEdge']=function(_0x56305b,_0x6d3aee,_0x13d103){this[_0x44ab('0x8')][_0x56305b]['push']({'target':_0x6d3aee,'condition':_0x13d103});this[_0x44ab('0x5')]+=0x1;};Graph[_0x44ab('0x6')]['size']=function(){return _['size'](this['vertices']);};Graph[_0x44ab('0x6')][_0x44ab('0x9')]=function(){return this[_0x44ab('0x5')];};Graph[_0x44ab('0x6')][_0x44ab('0xa')]=function(_0x279e74){return this['vertices'][_0x279e74];};Graph[_0x44ab('0x6')]['traverseBFS']=function(_0x410c93,_0x138d40){if(!this[_0x44ab('0x4')][_0x410c93]){return logger[_0x44ab('0xb')](_0x44ab('0xc'));}var _0x580dcb=_0x138d40(this['vertices'][_0x410c93]);if(!_0x580dcb){return logger[_0x44ab('0xb')](_0x44ab('0xd'));}if(this[_0x44ab('0x8')][_0x410c93][_0x44ab('0xe')]===0x0){return logger[_0x44ab('0xb')](_0x44ab('0xf'));}for(var _0x1db24f=0x0,_0x33acc1=[],_0x1cffc5=![];_0x1db24f<this[_0x44ab('0x8')][_0x410c93]['length'];_0x1db24f+=0x1){if(this[_0x44ab('0x8')][_0x410c93][_0x1db24f][_0x44ab('0x10')]){_0x33acc1=this['edges'][_0x410c93][_0x1db24f][_0x44ab('0x10')]['split'](',');for(var _0x528780=0x0;_0x528780<_0x33acc1[_0x44ab('0xe')];_0x528780+=0x1){if(this[_0x44ab('0x4')][_0x410c93][_0x44ab('0x11')]===_0x44ab('0x12')&&_0x33acc1[_0x528780]==='-'){_0x1cffc5=this['edges'][_0x410c93][_0x1db24f][_0x44ab('0x13')];logger[_0x44ab('0xb')](_0x44ab('0x14'),_0x33acc1[_0x528780],this[_0x44ab('0x8')][_0x410c93][_0x1db24f][_0x44ab('0x13')]);}else if(this[_0x44ab('0x4')][_0x410c93][_0x44ab('0x11')]===_0x44ab('0x1')&&_0x33acc1[_0x528780]==='i'){_0x1cffc5=this[_0x44ab('0x8')][_0x410c93][_0x1db24f][_0x44ab('0x13')];logger['info'](_0x44ab('0x15'),_0x33acc1[_0x528780],this[_0x44ab('0x8')][_0x410c93][_0x1db24f]['target']);}if(_0x33acc1[_0x528780]===_0x580dcb){return this[_0x44ab('0x16')](this[_0x44ab('0x8')][_0x410c93][_0x1db24f]['target'],_0x138d40);}}}else{return this[_0x44ab('0x16')](this[_0x44ab('0x8')][_0x410c93][_0x1db24f]['target'],_0x138d40);}}if(_0x33acc1[_0x44ab('0xe')]){if(this[_0x44ab('0x4')][_0x410c93]['agicommand']==='vswitch'){if(_0x1cffc5){return this[_0x44ab('0x16')](_0x1cffc5,_0x138d40);}return logger[_0x44ab('0xb')](_0x44ab('0x17'));}else if(_[_0x44ab('0x18')](verticesWithRetry,this[_0x44ab('0x4')][_0x410c93][_0x44ab('0x11')])){if(_0x580dcb==='-'){return logger['info']('max\x20retry\x20reach');}if(_0x1cffc5&&_0x580dcb!=='t'){return this[_0x44ab('0x16')](_0x1cffc5,_0x138d40);}return this[_0x44ab('0x16')](_0x410c93,_0x138d40);}return logger[_0x44ab('0xb')](_0x44ab('0x19'));}};module[_0x44ab('0x1a')]=Graph;
\ No newline at end of file
+var _0x68a5=['condition','split','agicommand','default','target','invalid','vswitch','default\x20on\x20switch\x20not\x20found','max\x20retry\x20reach','condition\x20not\x20found','exports','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','push','size','relations','getVertex','traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length'];(function(_0x133cbb,_0x4fff01){var _0x18b198=function(_0x522ede){while(--_0x522ede){_0x133cbb['push'](_0x133cbb['shift']());}};_0x18b198(++_0x4fff01);}(_0x68a5,0xe3));var _0x568a=function(_0x4f64c8,_0xe04d80){_0x4f64c8=_0x4f64c8-0x0;var _0x241b26=_0x68a5[_0x4f64c8];return _0x241b26;};'use strict';var _=require('lodash');var logger=require('../../../config/logger')('agi');var verticesWithRetry=['menu',_0x568a('0x0'),_0x568a('0x1')];var Graph=function(){this[_0x568a('0x2')]={};this[_0x568a('0x3')]={};this[_0x568a('0x4')]=0x0;};Graph[_0x568a('0x5')][_0x568a('0x6')]=function(_0x1b3846){this['vertices'][_0x1b3846['id']]=_0x1b3846;this['edges'][_0x1b3846['id']]=[];};Graph[_0x568a('0x5')]['addEdge']=function(_0x2b6415,_0x14ea1a,_0x1e7041){this[_0x568a('0x3')][_0x2b6415][_0x568a('0x7')]({'target':_0x14ea1a,'condition':_0x1e7041});this[_0x568a('0x4')]+=0x1;};Graph[_0x568a('0x5')][_0x568a('0x8')]=function(){return _[_0x568a('0x8')](this[_0x568a('0x2')]);};Graph[_0x568a('0x5')][_0x568a('0x9')]=function(){return this['numberOfEdges'];};Graph[_0x568a('0x5')][_0x568a('0xa')]=function(_0x34532d){return this[_0x568a('0x2')][_0x34532d];};Graph[_0x568a('0x5')][_0x568a('0xb')]=function(_0x38c482,_0x1db359){if(!this[_0x568a('0x2')][_0x38c482]){return logger['info'](_0x568a('0xc'));}var _0x45d52f=_0x1db359(this[_0x568a('0x2')][_0x38c482]);if(!_0x45d52f){return logger[_0x568a('0xd')](_0x568a('0xe'));}if(this[_0x568a('0x3')][_0x38c482][_0x568a('0xf')]===0x0){return logger[_0x568a('0xd')]('no\x20edge/s\x20available');}for(var _0x30bd36=0x0,_0x44b2c1=[],_0x44a69f=![];_0x30bd36<this[_0x568a('0x3')][_0x38c482][_0x568a('0xf')];_0x30bd36+=0x1){if(this[_0x568a('0x3')][_0x38c482][_0x30bd36][_0x568a('0x10')]){_0x44b2c1=this['edges'][_0x38c482][_0x30bd36]['condition'][_0x568a('0x11')](',');for(var _0x3add1a=0x0;_0x3add1a<_0x44b2c1[_0x568a('0xf')];_0x3add1a+=0x1){if(this[_0x568a('0x2')][_0x38c482][_0x568a('0x12')]==='vswitch'&&_0x44b2c1[_0x3add1a]==='-'){_0x44a69f=this[_0x568a('0x3')][_0x38c482][_0x30bd36]['target'];logger[_0x568a('0xd')](_0x568a('0x13'),_0x44b2c1[_0x3add1a],this['edges'][_0x38c482][_0x30bd36][_0x568a('0x14')]);}else if(this['vertices'][_0x38c482]['agicommand']==='menu'&&_0x44b2c1[_0x3add1a]==='i'){_0x44a69f=this[_0x568a('0x3')][_0x38c482][_0x30bd36]['target'];logger[_0x568a('0xd')](_0x568a('0x15'),_0x44b2c1[_0x3add1a],this[_0x568a('0x3')][_0x38c482][_0x30bd36][_0x568a('0x14')]);}if(_0x44b2c1[_0x3add1a]===_0x45d52f){return this[_0x568a('0xb')](this['edges'][_0x38c482][_0x30bd36]['target'],_0x1db359);}}}else{return this[_0x568a('0xb')](this[_0x568a('0x3')][_0x38c482][_0x30bd36][_0x568a('0x14')],_0x1db359);}}if(_0x44b2c1['length']){if(this[_0x568a('0x2')][_0x38c482][_0x568a('0x12')]===_0x568a('0x16')){if(_0x44a69f){return this[_0x568a('0xb')](_0x44a69f,_0x1db359);}return logger[_0x568a('0xd')](_0x568a('0x17'));}else if(_['includes'](verticesWithRetry,this[_0x568a('0x2')][_0x38c482]['agicommand'])){if(_0x45d52f==='-'){return logger[_0x568a('0xd')](_0x568a('0x18'));}if(_0x44a69f&&_0x45d52f!=='t'){return this['traverseBFS'](_0x44a69f,_0x1db359);}return this[_0x568a('0xb')](_0x38c482,_0x1db359);}return logger[_0x568a('0xd')](_0x568a('0x19'));}};module[_0x568a('0x1a')]=Graph;
\ No newline at end of file
index baca4ab..705226f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4271=['isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','syncho','moment','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','127.0.0.1','nextTick','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','format','[%s]\x20%s','message','[ERROR]\x20%s','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','agicommand','retry','addVertex','omit','mxCell','hasOwnProperty','isArray','length','source','addEdge','target','then','catch','agi_','substring','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','sync','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4271,0x1cb));var _0x1427=function(_0x321b98,_0x4c7b2b){_0x321b98=_0x321b98-0x0;var _0x22948f=_0x4271[_0x321b98];return _0x22948f;};'use strict';var parser=require('xml2json');var _=require('lodash');var syncho=require(_0x1427('0x0'));var util=require('util');var moment=require(_0x1427('0x1'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x1427('0x2'));var utilLicense=require(_0x1427('0x3'));var rpc=require(_0x1427('0x4'));var mailRpc=require(_0x1427('0x5'));var Graph=require(_0x1427('0x6'));var Vertices=require(_0x1427('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x1427('0x2')]=_['defaults'](config[_0x1427('0x2')],{'ip':_0x1427('0x8'),'port':0x11dd});function connectionHandler(_0x497db5){process[_0x1427('0x9')](function(){syncho(function(){try{setChannelVariables(_0x497db5);agiHandler(_0x497db5);}catch(_0x1ca9dd){logger[_0x1427('0xa')](_0x1ca9dd['stack']);}});});}function listeningHandler(){console[_0x1427('0xb')](_0x1427('0xc'),config['agi'][_0x1427('0xd')]);logger[_0x1427('0xe')](util['format'](_0x1427('0xf'),config[_0x1427('0x2')]['ip'],config['agi']['port']));}function errorHandler(_0x379749){if(_0x379749&&_0x379749[_0x1427('0x10')]&&_0x379749['message']){logger['error'](util[_0x1427('0x11')](_0x1427('0x12'),_0x379749['name'],_0x379749[_0x1427('0x13')]));}else{logger[_0x1427('0xa')](util['format'](_0x1427('0x14'),_0x379749[_0x1427('0x15')]));}}function closeHandler(){logger[_0x1427('0xe')](util['format'](_0x1427('0x16'),this['arg_1'],this[_0x1427('0x17')],this[_0x1427('0x18')],this['dnid'],this[_0x1427('0x19')]));try{createSquareReport(this);}catch(_0x2958d3){logger[_0x1427('0xa')](_0x2958d3[_0x1427('0x15')]);}}function timeoutHandler(){logger[_0x1427('0xe')](util[_0x1427('0x11')](_0x1427('0x1a'),this[_0x1427('0x1b')],this[_0x1427('0x17')],this[_0x1427('0x18')],this[_0x1427('0x1c')],this['uniqueid']));}function hangupHandler(){logger[_0x1427('0xe')](util[_0x1427('0x11')](_0x1427('0x1d'),this['arg_1'],this[_0x1427('0x17')],this[_0x1427('0x18')],this[_0x1427('0x1c')],this[_0x1427('0x19')]));this[_0x1427('0x1e')]=!![];}function getRoot(_0x431e68){return parser[_0x1427('0x1f')](_0x431e68,{'object':!![]})[_0x1427('0x20')]['root'];}function addVertex(_0x56c5d7,_0x25eab9,_0x182f18){_0x25eab9[_0x1427('0x21')]=_0x182f18;if(_0x25eab9['hasOwnProperty'](_0x1427('0x22'))){_0x25eab9['maxRetry']=parseInt(_0x25eab9['retry'],0xa);}_0x56c5d7[_0x1427('0x23')](_[_0x1427('0x24')](_0x25eab9,_0x1427('0x25')));}function initGraph(_0x1f2341,_0xcf7eb4){var _0x368e10=new Graph();for(var _0x402c3e in _0x1f2341){if(_0x1f2341[_0x1427('0x26')](_0x402c3e)){if(_[_0x1427('0x27')](_0x1f2341[_0x402c3e])){for(var _0x309398=0x0;_0x309398<_0x1f2341[_0x402c3e][_0x1427('0x28')];_0x309398+=0x1){addVertex(_0x368e10,_0x1f2341[_0x402c3e][_0x309398],_0x402c3e);}}else{addVertex(_0x368e10,_0x1f2341[_0x402c3e],_0x402c3e);}}}for(var _0xdf0755=0x0;_0xdf0755<_0xcf7eb4[_0x1427('0x28')];_0xdf0755+=0x1){if(_0xcf7eb4[_0xdf0755][_0x1427('0x29')]&&_0xcf7eb4[_0xdf0755]['target']){_0x368e10[_0x1427('0x2a')](_0xcf7eb4[_0xdf0755][_0x1427('0x29')],_0xcf7eb4[_0xdf0755][_0x1427('0x2b')],_0xcf7eb4[_0xdf0755]['value']);}}return _0x368e10;}function getSquareProject(_0x5387d1,_0x3aca34){rpc['getSquareProject'](_0x5387d1)[_0x1427('0x2c')](function(_0x4461a4){_0x3aca34(null,_0x4461a4);})['catch'](function(_0x55e667){_0x3aca34(null,_0x55e667);});}function createSquareReport(_0xadb541,_0x8e60a1){rpc['createSquareReport'](_0xadb541)['then'](function(_0x1c4acc){if(_0x8e60a1){_0x8e60a1(null,_0x1c4acc);}})[_0x1427('0x2d')](function(_0x290e24){if(_0x8e60a1){_0x8e60a1(null,_0x290e24);}});}function setChannelVariables(_0x3218d6){for(var _0x53e471 in _0x3218d6){if(_0x3218d6[_0x1427('0x26')](_0x53e471)){if(_0x53e471['indexOf'](_0x1427('0x2e'))===0x0){_0x3218d6[_0x53e471[_0x1427('0x2f')](0x4)]=_0x3218d6[_0x53e471];delete _0x3218d6[_0x53e471];}}}}function getLogFromObject(_0x1c98e1){return util['inspect'](_0x1c98e1,{'showHidden':![],'depth':null});}function agiHandler(_0x4185fe){var _0x167f25,_0x47842e,_0x4476da,_0x24e62e,_0x2d4ce9;logger[_0x1427('0x30')](_0x1427('0x31'),JSON[_0x1427('0x32')](_0x4185fe,null,0x2));logger[_0x1427('0xe')](util[_0x1427('0x11')](_0x1427('0x33'),_0x4185fe[_0x1427('0x1b')],_0x4185fe[_0x1427('0x17')],_0x4185fe['callerid'],_0x4185fe['dnid'],_0x4185fe['uniqueid']));_0x4185fe['on'](_0x1427('0xa'),errorHandler);_0x4185fe['on']('close',closeHandler);_0x4185fe['on']('timeout',timeoutHandler);_0x4185fe[_0x1427('0x1e')]=![];_0x4185fe['on']('hangup',hangupHandler);var _0x555c6c=getSquareProject[_0x1427('0x34')](null,_0x4185fe[_0x1427('0x1b')]);if(_0x555c6c){if(_0x555c6c[_0x1427('0x35')]){_0x167f25=getRoot(_0x555c6c[_0x1427('0x35')]);if(_0x167f25&&_0x167f25[_0x1427('0x36')]){logger[_0x1427('0x30')]('root',JSON[_0x1427('0x32')](_0x167f25,null,0x2));_0x4185fe[_0x1427('0x37')]=moment()[_0x1427('0x11')](_0x1427('0x38'));_0x47842e=initGraph(_[_0x1427('0x24')](_0x167f25,_0x1427('0x25')),_0x167f25[_0x1427('0x25')]);_0x4476da=new Vertices(_0x4185fe,rpc,mailRpc);logger[_0x1427('0xe')](util['format'](_0x1427('0x39'),_0x4185fe['arg_1'],_0x4185fe[_0x1427('0x17')],_0x4185fe[_0x1427('0x18')],_0x4185fe[_0x1427('0x1c')],_0x4185fe[_0x1427('0x19')]));_0x47842e[_0x1427('0x3a')](_0x167f25[_0x1427('0x36')]['id'],function(_0x4b7971){try{_0x4b7971=_0x4476da[_0x1427('0x3b')](_0x4b7971);logger[_0x1427('0x30')](_0x1427('0x3c'),JSON[_0x1427('0x32')](_0x4b7971,null,0x2));if(_0x4b7971[_0x1427('0x21')]===_0x1427('0x3d')){logger['info'](_0x1427('0x3e'));_0x4185fe[_0x1427('0x3f')]=_0x4b7971[_0x1427('0x3f')]||_0x4185fe['context'];_0x4185fe[_0x1427('0x40')]=_0x4b7971[_0x1427('0x40')];_0x4185fe[_0x1427('0x41')]=_0x4b7971[_0x1427('0x41')]?_0x4b7971['priority']-0x1:0x1;return null;}else if(_0x4b7971&&_0x4476da[_0x4b7971[_0x1427('0x21')]]){_0x2d4ce9=_0x4476da[_0x4b7971[_0x1427('0x21')]](_0x4b7971);logger[_0x1427('0xe')](_0x1427('0x42'),JSON[_0x1427('0x32')](_0x2d4ce9,null,0x2));if(_0x2d4ce9&&_0x2d4ce9[_0x1427('0x43')]===AGI_CODE_SUCCESS&&_0x2d4ce9[_0x1427('0x44')]!==AGI_RESULT_ERROR&&!_0x4185fe['evtHangup']){logger[_0x1427('0x30')]('response',getLogFromObject(_0x2d4ce9));return _[_0x1427('0x45')](_0x2d4ce9['result'])?null:_0x2d4ce9[_0x1427('0x44')][_0x1427('0x46')]();}else{logger[_0x1427('0xa')](_0x1427('0x42'),getLogFromObject(_0x2d4ce9));return null;}}else{logger['error'](_0x1427('0x47'));return null;}}catch(_0x8d601a){logger[_0x1427('0xa')](_0x8d601a[_0x1427('0x15')]);return null;}});if(_0x167f25[_0x1427('0x48')]){logger[_0x1427('0xe')](util['format'](_0x1427('0x49'),_0x4185fe['arg_1'],_0x4185fe[_0x1427('0x17')],_0x4185fe['callerid'],_0x4185fe[_0x1427('0x1c')],_0x4185fe[_0x1427('0x19')]));_0x47842e[_0x1427('0x3a')](_0x167f25[_0x1427('0x48')]['id'],function(_0x519e77){try{_0x519e77=_0x4476da['clear'](_0x519e77);logger['debug'](_0x1427('0x3c'),JSON[_0x1427('0x32')](_0x519e77,null,0x2));if(_0x519e77&&_0x4476da[_0x519e77['agicommand']]){_0x2d4ce9=_0x4476da[_0x519e77[_0x1427('0x21')]](_0x519e77);if(_0x2d4ce9){logger[_0x1427('0x30')](_0x1427('0x42'),getLogFromObject(_0x2d4ce9));return _[_0x1427('0x45')](_0x2d4ce9[_0x1427('0x44')])?null:_0x2d4ce9[_0x1427('0x44')][_0x1427('0x46')]();}else{logger[_0x1427('0xa')](_0x1427('0x42'),getLogFromObject(_0x2d4ce9));return null;}}else{logger[_0x1427('0xa')]('agicommand\x20not\x20found');return null;}}catch(_0x278a5f){logger[_0x1427('0xa')](_0x278a5f[_0x1427('0x15')]);return null;}});}logger[_0x1427('0xe')](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x4185fe[_0x1427('0x1b')],_0x4185fe['calleridname'],_0x4185fe[_0x1427('0x18')],_0x4185fe[_0x1427('0x1c')],_0x4185fe[_0x1427('0x19')]));logger[_0x1427('0xe')](util[_0x1427('0x11')](_0x1427('0x4a'),_0x4185fe['context'],_0x4185fe['extension'],parseInt(_0x4185fe[_0x1427('0x41')],0xa)+0x1));_0x4185fe[_0x1427('0x4b')](_0x4185fe[_0x1427('0x3f')],_0x4185fe[_0x1427('0x40')],parseInt(_0x4185fe[_0x1427('0x41')],0xa)+0x1);_0x4185fe[_0x1427('0x4c')]();}}else{logger['error'](util['format'](_0x1427('0x4d'),_0x4185fe[_0x1427('0x1b')]));_0x4185fe[_0x1427('0x4b')](_0x4185fe[_0x1427('0x3f')],_0x4185fe[_0x1427('0x40')],parseInt(_0x4185fe[_0x1427('0x41')],0xa)+0x1);_0x4185fe[_0x1427('0x4c')]();}}else{logger[_0x1427('0xa')](util[_0x1427('0x11')](_0x1427('0x4e'),_0x4185fe['arg_1']));_0x4185fe['continueAt'](_0x4185fe['context'],_0x4185fe[_0x1427('0x40')],parseInt(_0x4185fe['priority'],0xa)+0x1);_0x4185fe[_0x1427('0x4c')]();}}function main(){var _0x26c290;return utilLicense[_0x1427('0x4f')]()[_0x1427('0x2c')](function(_0x1e7bb1){if(_0x1e7bb1){if(_0x1e7bb1[_0x1427('0x50')]){if(_0x1e7bb1[_0x1427('0x51')]&&_0x1e7bb1[_0x1427('0x51')]>0x0){logger[_0x1427('0xe')](util['format'](_0x1427('0x52'),_0x1e7bb1[_0x1427('0x51')]));_0x26c290=_0x1e7bb1['callysquare'];}else{logger[_0x1427('0xe')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0x1427('0xe')](_0x1427('0x53'));_0x26c290=-0x1;}}})[_0x1427('0x2d')](function(_0x4999e4){logger[_0x1427('0xa')](_0x1427('0x54'),_0x4999e4[_0x1427('0x15')]);})[_0x1427('0x48')](function(){var _0x33a58c=require(_0x1427('0x55'))(config[_0x1427('0x2')][_0x1427('0xd')],config['agi']['ip'],_0x26c290);_0x33a58c['on'](_0x1427('0xa'),errorHandler);_0x33a58c['on'](_0x1427('0x56'),listeningHandler);_0x33a58c['on'](_0x1427('0x57'),connectionHandler);_0x33a58c['on'](_0x1427('0x4c'),closeHandler);});}main();
\ No newline at end of file
+var _0x3f54=['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','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','isArray','length','target','value','getSquareProject','then','createSquareReport','catch','indexOf','agi_','substring','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','evtHangup','hangup','production','joinAt','mxCell','traverseBFS','vertex','gotoc','context','extension','priority','code','result','response','toString','clear','isUndefined','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','finally','./server','listening','connection','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./graph','./vertices','127.0.0.1','error','stack','log','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x3f54,0xef));var _0x43f5=function(_0x596f6e,_0x3f8857){_0x596f6e=_0x596f6e-0x0;var _0x1e0803=_0x3f54[_0x596f6e];return _0x1e0803;};'use strict';var parser=require('xml2json');var _=require(_0x43f5('0x0'));var syncho=require(_0x43f5('0x1'));var util=require(_0x43f5('0x2'));var moment=require(_0x43f5('0x3'));var config=require(_0x43f5('0x4'));var logger=require(_0x43f5('0x5'))(_0x43f5('0x6'));var utilLicense=require(_0x43f5('0x7'));var rpc=require(_0x43f5('0x8'));var mailRpc=require('./mailRpc');var Graph=require(_0x43f5('0x9'));var Vertices=require(_0x43f5('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x43f5('0x6')]=_['defaults'](config['agi'],{'ip':_0x43f5('0xb'),'port':0x11dd});function connectionHandler(_0xbb7605){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0xbb7605);agiHandler(_0xbb7605);}catch(_0x3385d0){logger[_0x43f5('0xc')](_0x3385d0[_0x43f5('0xd')]);}});});}function listeningHandler(){console[_0x43f5('0xe')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi']['port']);logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x11'),config['agi']['ip'],config[_0x43f5('0x6')][_0x43f5('0x12')]));}function errorHandler(_0x3b69e9){if(_0x3b69e9&&_0x3b69e9[_0x43f5('0x13')]&&_0x3b69e9['message']){logger['error'](util[_0x43f5('0x10')]('[%s]\x20%s',_0x3b69e9['name'],_0x3b69e9['message']));}else{logger[_0x43f5('0xc')](util['format'](_0x43f5('0x14'),_0x3b69e9['stack']));}}function closeHandler(){logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x15'),this[_0x43f5('0x16')],this[_0x43f5('0x17')],this['callerid'],this[_0x43f5('0x18')],this[_0x43f5('0x19')]));try{createSquareReport(this);}catch(_0x14eb69){logger['error'](_0x14eb69[_0x43f5('0xd')]);}}function timeoutHandler(){logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x1a'),this[_0x43f5('0x16')],this[_0x43f5('0x17')],this['callerid'],this[_0x43f5('0x18')],this[_0x43f5('0x19')]));}function hangupHandler(){logger['info'](util[_0x43f5('0x10')](_0x43f5('0x1b'),this[_0x43f5('0x16')],this[_0x43f5('0x17')],this[_0x43f5('0x1c')],this['dnid'],this[_0x43f5('0x19')]));this['evtHangup']=!![];}function getRoot(_0x4443d2){return parser[_0x43f5('0x1d')](_0x4443d2,{'object':!![]})[_0x43f5('0x1e')][_0x43f5('0x1f')];}function addVertex(_0x3d9b9c,_0x1dc50f,_0x31c8c5){_0x1dc50f[_0x43f5('0x20')]=_0x31c8c5;if(_0x1dc50f[_0x43f5('0x21')](_0x43f5('0x22'))){_0x1dc50f[_0x43f5('0x23')]=parseInt(_0x1dc50f[_0x43f5('0x22')],0xa);}_0x3d9b9c[_0x43f5('0x24')](_[_0x43f5('0x25')](_0x1dc50f,'mxCell'));}function initGraph(_0x231755,_0x5f650d){var _0x11a446=new Graph();for(var _0x78d395 in _0x231755){if(_0x231755[_0x43f5('0x21')](_0x78d395)){if(_[_0x43f5('0x26')](_0x231755[_0x78d395])){for(var _0x5cd723=0x0;_0x5cd723<_0x231755[_0x78d395]['length'];_0x5cd723+=0x1){addVertex(_0x11a446,_0x231755[_0x78d395][_0x5cd723],_0x78d395);}}else{addVertex(_0x11a446,_0x231755[_0x78d395],_0x78d395);}}}for(var _0x5bf2c7=0x0;_0x5bf2c7<_0x5f650d[_0x43f5('0x27')];_0x5bf2c7+=0x1){if(_0x5f650d[_0x5bf2c7]['source']&&_0x5f650d[_0x5bf2c7][_0x43f5('0x28')]){_0x11a446['addEdge'](_0x5f650d[_0x5bf2c7]['source'],_0x5f650d[_0x5bf2c7]['target'],_0x5f650d[_0x5bf2c7][_0x43f5('0x29')]);}}return _0x11a446;}function getSquareProject(_0x22acb7,_0xa335a4){rpc[_0x43f5('0x2a')](_0x22acb7)[_0x43f5('0x2b')](function(_0x632a0e){_0xa335a4(null,_0x632a0e);})['catch'](function(_0x1a7ba0){_0xa335a4(null,_0x1a7ba0);});}function createSquareReport(_0x4901ea,_0x35f8c7){rpc[_0x43f5('0x2c')](_0x4901ea)[_0x43f5('0x2b')](function(_0x5d29a2){if(_0x35f8c7){_0x35f8c7(null,_0x5d29a2);}})[_0x43f5('0x2d')](function(_0x4b0b4f){if(_0x35f8c7){_0x35f8c7(null,_0x4b0b4f);}});}function setChannelVariables(_0x323702){for(var _0x578e54 in _0x323702){if(_0x323702['hasOwnProperty'](_0x578e54)){if(_0x578e54[_0x43f5('0x2e')](_0x43f5('0x2f'))===0x0){_0x323702[_0x578e54[_0x43f5('0x30')](0x4)]=_0x323702[_0x578e54];delete _0x323702[_0x578e54];}}}}function getLogFromObject(_0x41f7b4){return util[_0x43f5('0x31')](_0x41f7b4,{'showHidden':![],'depth':null});}function agiHandler(_0xaeecec){var _0x40aa29,_0x33d4f8,_0x4349ee,_0x5b1d58,_0x3ae68e;logger[_0x43f5('0x32')](_0x43f5('0x33'),JSON[_0x43f5('0x34')](_0xaeecec,null,0x2));logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x35'),_0xaeecec[_0x43f5('0x16')],_0xaeecec[_0x43f5('0x17')],_0xaeecec['callerid'],_0xaeecec['dnid'],_0xaeecec[_0x43f5('0x19')]));_0xaeecec['on'](_0x43f5('0xc'),errorHandler);_0xaeecec['on'](_0x43f5('0x36'),closeHandler);_0xaeecec['on'](_0x43f5('0x37'),timeoutHandler);_0xaeecec[_0x43f5('0x38')]=![];_0xaeecec['on'](_0x43f5('0x39'),hangupHandler);var _0x45908e=getSquareProject['sync'](null,_0xaeecec[_0x43f5('0x16')]);if(_0x45908e){if(_0x45908e[_0x43f5('0x3a')]){_0x40aa29=getRoot(_0x45908e[_0x43f5('0x3a')]);if(_0x40aa29&&_0x40aa29['start']){logger[_0x43f5('0x32')]('root',JSON[_0x43f5('0x34')](_0x40aa29,null,0x2));_0xaeecec[_0x43f5('0x3b')]=moment()[_0x43f5('0x10')]('YYYY-MM-DD\x20HH:mm:ss');_0x33d4f8=initGraph(_['omit'](_0x40aa29,_0x43f5('0x3c')),_0x40aa29['mxCell']);_0x4349ee=new Vertices(_0xaeecec,rpc,mailRpc);logger[_0x43f5('0xf')](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0xaeecec[_0x43f5('0x16')],_0xaeecec['calleridname'],_0xaeecec[_0x43f5('0x1c')],_0xaeecec[_0x43f5('0x18')],_0xaeecec[_0x43f5('0x19')]));_0x33d4f8[_0x43f5('0x3d')](_0x40aa29['start']['id'],function(_0x471d19){try{_0x471d19=_0x4349ee['clear'](_0x471d19);logger[_0x43f5('0x32')](_0x43f5('0x3e'),JSON[_0x43f5('0x34')](_0x471d19,null,0x2));if(_0x471d19[_0x43f5('0x20')]===_0x43f5('0x3f')){logger[_0x43f5('0xf')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0xaeecec[_0x43f5('0x40')]=_0x471d19['context']||_0xaeecec['context'];_0xaeecec[_0x43f5('0x41')]=_0x471d19['extension'];_0xaeecec[_0x43f5('0x42')]=_0x471d19['priority']?_0x471d19['priority']-0x1:0x1;return null;}else if(_0x471d19&&_0x4349ee[_0x471d19['agicommand']]){_0x3ae68e=_0x4349ee[_0x471d19['agicommand']](_0x471d19);logger[_0x43f5('0xf')]('response',JSON[_0x43f5('0x34')](_0x3ae68e,null,0x2));if(_0x3ae68e&&_0x3ae68e[_0x43f5('0x43')]===AGI_CODE_SUCCESS&&_0x3ae68e[_0x43f5('0x44')]!==AGI_RESULT_ERROR&&!_0xaeecec['evtHangup']){logger[_0x43f5('0x32')](_0x43f5('0x45'),getLogFromObject(_0x3ae68e));return _['isUndefined'](_0x3ae68e[_0x43f5('0x44')])?null:_0x3ae68e[_0x43f5('0x44')][_0x43f5('0x46')]();}else{logger[_0x43f5('0xc')](_0x43f5('0x45'),getLogFromObject(_0x3ae68e));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x1e7665){logger[_0x43f5('0xc')](_0x1e7665['stack']);return null;}});if(_0x40aa29['finally']){logger[_0x43f5('0xf')](util[_0x43f5('0x10')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0xaeecec['arg_1'],_0xaeecec[_0x43f5('0x17')],_0xaeecec[_0x43f5('0x1c')],_0xaeecec[_0x43f5('0x18')],_0xaeecec[_0x43f5('0x19')]));_0x33d4f8[_0x43f5('0x3d')](_0x40aa29['finally']['id'],function(_0x18ecb7){try{_0x18ecb7=_0x4349ee[_0x43f5('0x47')](_0x18ecb7);logger['debug'](_0x43f5('0x3e'),JSON[_0x43f5('0x34')](_0x18ecb7,null,0x2));if(_0x18ecb7&&_0x4349ee[_0x18ecb7[_0x43f5('0x20')]]){_0x3ae68e=_0x4349ee[_0x18ecb7[_0x43f5('0x20')]](_0x18ecb7);if(_0x3ae68e){logger[_0x43f5('0x32')](_0x43f5('0x45'),getLogFromObject(_0x3ae68e));return _[_0x43f5('0x48')](_0x3ae68e[_0x43f5('0x44')])?null:_0x3ae68e['result']['toString']();}else{logger[_0x43f5('0xc')](_0x43f5('0x45'),getLogFromObject(_0x3ae68e));return null;}}else{logger[_0x43f5('0xc')]('agicommand\x20not\x20found');return null;}}catch(_0x123f8b){logger['error'](_0x123f8b[_0x43f5('0xd')]);return null;}});}logger['info'](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0xaeecec[_0x43f5('0x16')],_0xaeecec[_0x43f5('0x17')],_0xaeecec[_0x43f5('0x1c')],_0xaeecec['dnid'],_0xaeecec[_0x43f5('0x19')]));logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x49'),_0xaeecec[_0x43f5('0x40')],_0xaeecec[_0x43f5('0x41')],parseInt(_0xaeecec[_0x43f5('0x42')],0xa)+0x1));_0xaeecec[_0x43f5('0x4a')](_0xaeecec[_0x43f5('0x40')],_0xaeecec['extension'],parseInt(_0xaeecec[_0x43f5('0x42')],0xa)+0x1);_0xaeecec[_0x43f5('0x36')]();}}else{logger['error'](util[_0x43f5('0x10')](_0x43f5('0x4b'),_0xaeecec[_0x43f5('0x16')]));_0xaeecec[_0x43f5('0x4a')](_0xaeecec['context'],_0xaeecec['extension'],parseInt(_0xaeecec['priority'],0xa)+0x1);_0xaeecec[_0x43f5('0x36')]();}}else{logger[_0x43f5('0xc')](util['format'](_0x43f5('0x4c'),_0xaeecec[_0x43f5('0x16')]));_0xaeecec[_0x43f5('0x4a')](_0xaeecec['context'],_0xaeecec[_0x43f5('0x41')],parseInt(_0xaeecec[_0x43f5('0x42')],0xa)+0x1);_0xaeecec[_0x43f5('0x36')]();}}function main(){var _0x54a472;return utilLicense['getLicense']()[_0x43f5('0x2b')](function(_0x5999b6){if(_0x5999b6){if(_0x5999b6['voice']){if(_0x5999b6[_0x43f5('0x4d')]&&_0x5999b6['callysquare']>0x0){logger[_0x43f5('0xf')](util[_0x43f5('0x10')](_0x43f5('0x4e'),_0x5999b6['callysquare']));_0x54a472=_0x5999b6[_0x43f5('0x4d')];}else{logger[_0x43f5('0xf')](_0x43f5('0x4f'));}}else{logger[_0x43f5('0xf')](_0x43f5('0x50'));_0x54a472=-0x1;}}})[_0x43f5('0x2d')](function(_0x53140f){logger['error'](_0x43f5('0x51'),_0x53140f['stack']);})[_0x43f5('0x52')](function(){var _0xd09593=require(_0x43f5('0x53'))(config[_0x43f5('0x6')]['port'],config[_0x43f5('0x6')]['ip'],_0x54a472);_0xd09593['on'](_0x43f5('0xc'),errorHandler);_0xd09593['on'](_0x43f5('0x54'),listeningHandler);_0xd09593['on'](_0x43f5('0x55'),connectionHandler);_0xd09593['on'](_0x43f5('0x36'),closeHandler);});}main();
\ No newline at end of file
index 54fd8a5..7740376 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ee0=['http','request','then','error','message','result','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x8ee0,0x17d));var _0x08ee=function(_0x203d64,_0x1ec79c){_0x203d64=_0x203d64-0x0;var _0x462ab3=_0x8ee0[_0x203d64];return _0x462ab3;};'use strict';var BPromise=require(_0x08ee('0x0'));var jayson=require(_0x08ee('0x1'));var client=jayson[_0x08ee('0x2')][_0x08ee('0x3')]({'port':0x232b});function request(_0x403eb1,_0x1f7adf){return new BPromise(function(_0x398c0d,_0x1e9dd8){return client[_0x08ee('0x4')](_0x403eb1,_0x1f7adf)[_0x08ee('0x5')](function(_0x1c0bad){if(_0x1c0bad[_0x08ee('0x6')]){return _0x1e9dd8(_0x1c0bad[_0x08ee('0x6')][_0x08ee('0x7')]);}else{return _0x398c0d(_0x1c0bad[_0x08ee('0x8')]);}})[_0x08ee('0x9')](function(_0x9cca){return _0x1e9dd8(_0x9cca);});});}exports[_0x08ee('0xa')]=function(_0x57edbd,_0x4de22d){return request(_0x08ee('0xb'),{'account':_0x57edbd,'message':_0x4de22d});};
\ No newline at end of file
+var _0xb92b=['catch','sendMailMessage','jayson/promise','client','http','then','error','message','result'];(function(_0x1443eb,_0x203408){var _0x2b8810=function(_0x48bc4e){while(--_0x48bc4e){_0x1443eb['push'](_0x1443eb['shift']());}};_0x2b8810(++_0x203408);}(_0xb92b,0x80));var _0xbb92=function(_0x3403c9,_0x3134ee){_0x3403c9=_0x3403c9-0x0;var _0x1daa4b=_0xb92b[_0x3403c9];return _0x1daa4b;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xbb92('0x0'));var client=jayson[_0xbb92('0x1')][_0xbb92('0x2')]({'port':0x232b});function request(_0x157e61,_0x415e70){return new BPromise(function(_0x1987ba,_0x11521d){return client['request'](_0x157e61,_0x415e70)[_0xbb92('0x3')](function(_0xa54a20){if(_0xa54a20[_0xbb92('0x4')]){return _0x11521d(_0xa54a20['error'][_0xbb92('0x5')]);}else{return _0x1987ba(_0xa54a20[_0xbb92('0x6')]);}})[_0xbb92('0x7')](function(_0x8a7a4b){return _0x11521d(_0x8a7a4b);});});}exports[_0xbb92('0x8')]=function(_0x1cc46d,_0x45690e){return request('SendMail',{'account':_0x1cc46d,'message':_0x45690e});};
\ No newline at end of file
index e4b143d..c395f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8c=['headers','_inBody','line','exports','Transform','call','_localBuffer','\x0d\x0a\x0d\x0a','toString','indexOf','substring','length','split','slice','trim','emit'];(function(_0x2d23f1,_0x19c0f4){var _0x54b7f4=function(_0x55a99a){while(--_0x55a99a){_0x2d23f1['push'](_0x2d23f1['shift']());}};_0x54b7f4(++_0x19c0f4);}(_0x3f8c,0x104));var _0xc3f8=function(_0x10d6f4,_0x4858b9){_0x10d6f4=_0x10d6f4-0x0;var _0x477608=_0x3f8c[_0x10d6f4];return _0x477608;};'use strict';var util=require('util');var Transform=require('stream')[_0xc3f8('0x0')];function AGIReply(_0x3a1f6a){Transform[_0xc3f8('0x1')](this,_0x3a1f6a);this[_0xc3f8('0x2')]='';this['_inBody']=![];}util['inherits'](AGIReply,Transform);AGIReply['prototype']['_transform']=function(_0x51b8b5,_0x249286,_0x1a6976){var _0x3a4e2f='\x0a',_0x44c25d=['\x0a\x0a',_0xc3f8('0x3')],_0x2bbaa5=-0x1,_0x15512a=-0x1,_0x51093a='',_0x28397e=0x0,_0x315dff='',_0x15cb3b='';this[_0xc3f8('0x2')]+=_0x51b8b5[_0xc3f8('0x4')]();_0x315dff=this[_0xc3f8('0x2')];if(!this['_inBody']){_0x28397e=0x0;while(_0x44c25d[_0x28397e]){while((_0x15512a=_0x315dff[_0xc3f8('0x5')](_0x44c25d[_0x28397e]))!=-0x1){_0x51093a=_0x44c25d[_0x28397e];_0x15cb3b=_0x315dff[_0xc3f8('0x6')](0x0,_0x15512a);_0x315dff=_0x315dff[_0xc3f8('0x6')](_0x15512a+_0x51093a[_0xc3f8('0x7')]);var _0x58118f=_0x15cb3b[_0xc3f8('0x8')](_0x3a4e2f),_0x313714=0x0,_0x28e4c7={},_0x256e3d='',_0x155c80='',_0x511763=-0x1;while(_0x58118f[_0x313714]){_0x511763=_0x58118f[_0x313714][_0xc3f8('0x5')](':');if(_0x511763!=-0x1){_0x256e3d=_0x58118f[_0x313714][_0xc3f8('0x9')](0x0,_0x511763)[_0xc3f8('0xa')]();_0x155c80=_0x58118f[_0x313714][_0xc3f8('0x9')](_0x511763+0x1)[_0xc3f8('0xa')]();if(_0x256e3d[_0xc3f8('0x7')]>0x0){_0x28e4c7[_0x256e3d]=_0x155c80;}}else{}_0x313714++;}this[_0xc3f8('0xb')](_0xc3f8('0xc'),_0x28e4c7);this[_0xc3f8('0xd')]=!![];}_0x28397e++;}this[_0xc3f8('0x2')]=_0x315dff;}else{while((_0x2bbaa5=_0x315dff[_0xc3f8('0x5')](_0x3a4e2f))!=-0x1){_0x15cb3b=_0x315dff[_0xc3f8('0x6')](0x0,_0x2bbaa5);this['emit'](_0xc3f8('0xe'),_0x15cb3b);_0x315dff=_0x315dff['substring'](_0x2bbaa5+_0x3a4e2f['length']);}this[_0xc3f8('0x2')]=_0x315dff;}_0x1a6976();};module[_0xc3f8('0xf')]=AGIReply;
\ No newline at end of file
+var _0xbe5e=['_transform','\x0d\x0a\x0d\x0a','substring','split','slice','trim','length','emit','headers','exports','util','stream','call','_localBuffer','_inBody','inherits','prototype'];(function(_0x483ab9,_0x419148){var _0x35043b=function(_0x3453a3){while(--_0x3453a3){_0x483ab9['push'](_0x483ab9['shift']());}};_0x35043b(++_0x419148);}(_0xbe5e,0x81));var _0xebe5=function(_0x2dd651,_0x2cf524){_0x2dd651=_0x2dd651-0x0;var _0x3b6c9e=_0xbe5e[_0x2dd651];return _0x3b6c9e;};'use strict';var util=require(_0xebe5('0x0'));var Transform=require(_0xebe5('0x1'))['Transform'];function AGIReply(_0x3060a7){Transform[_0xebe5('0x2')](this,_0x3060a7);this[_0xebe5('0x3')]='';this[_0xebe5('0x4')]=![];}util[_0xebe5('0x5')](AGIReply,Transform);AGIReply[_0xebe5('0x6')][_0xebe5('0x7')]=function(_0x5edcee,_0x11a3c3,_0x5aa5e5){var _0x35cf69='\x0a',_0x43c6df=['\x0a\x0a',_0xebe5('0x8')],_0x152456=-0x1,_0x73d4df=-0x1,_0xd28853='',_0x34b82f=0x0,_0x5a1168='',_0x19be5c='';this['_localBuffer']+=_0x5edcee['toString']();_0x5a1168=this[_0xebe5('0x3')];if(!this[_0xebe5('0x4')]){_0x34b82f=0x0;while(_0x43c6df[_0x34b82f]){while((_0x73d4df=_0x5a1168['indexOf'](_0x43c6df[_0x34b82f]))!=-0x1){_0xd28853=_0x43c6df[_0x34b82f];_0x19be5c=_0x5a1168[_0xebe5('0x9')](0x0,_0x73d4df);_0x5a1168=_0x5a1168[_0xebe5('0x9')](_0x73d4df+_0xd28853['length']);var _0x45c3b4=_0x19be5c[_0xebe5('0xa')](_0x35cf69),_0x3285a7=0x0,_0x480042={},_0x594b3c='',_0x560126='',_0x213c72=-0x1;while(_0x45c3b4[_0x3285a7]){_0x213c72=_0x45c3b4[_0x3285a7]['indexOf'](':');if(_0x213c72!=-0x1){_0x594b3c=_0x45c3b4[_0x3285a7][_0xebe5('0xb')](0x0,_0x213c72)[_0xebe5('0xc')]();_0x560126=_0x45c3b4[_0x3285a7][_0xebe5('0xb')](_0x213c72+0x1)['trim']();if(_0x594b3c[_0xebe5('0xd')]>0x0){_0x480042[_0x594b3c]=_0x560126;}}else{}_0x3285a7++;}this[_0xebe5('0xe')](_0xebe5('0xf'),_0x480042);this['_inBody']=!![];}_0x34b82f++;}this['_localBuffer']=_0x5a1168;}else{while((_0x152456=_0x5a1168['indexOf'](_0x35cf69))!=-0x1){_0x19be5c=_0x5a1168[_0xebe5('0x9')](0x0,_0x152456);this['emit']('line',_0x19be5c);_0x5a1168=_0x5a1168[_0xebe5('0x9')](_0x152456+_0x35cf69[_0xebe5('0xd')]);}this[_0xebe5('0x3')]=_0x5a1168;}_0x5aa5e5();};module[_0xebe5('0x10')]=AGIReply;
\ No newline at end of file
index 5c02b14..e462470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe770=['ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','ShowSmsAccount','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareMessage','ShowCmHopper','phone','ListId','then','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentUnpause','UnpauseUser','agentLogout','bluebird','moment','lodash','util','jayson/promise','client','http','request','error','message','result','getSquareProject','ShowSquareProject','production','getMailAccountById'];(function(_0x4f1afe,_0x29a790){var _0x552767=function(_0x89caf1){while(--_0x89caf1){_0x4f1afe['push'](_0x4f1afe['shift']());}};_0x552767(++_0x29a790);}(_0xe770,0x67));var _0x0e77=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe770[_0x321bb2];return _0x9c12ed;};'use strict';var BPromise=require(_0x0e77('0x0'));var moment=require(_0x0e77('0x1'));var _=require(_0x0e77('0x2'));var util=require(_0x0e77('0x3'));var jayson=require(_0x0e77('0x4'));var client=jayson[_0x0e77('0x5')][_0x0e77('0x6')]({'port':0x2329});function request(_0xe2d30f,_0x26af07){return new BPromise(function(_0x4a97db,_0x38c9cb){return client[_0x0e77('0x7')](_0xe2d30f,_0x26af07)['then'](function(_0x14242a){if(_0x14242a['error']){return _0x38c9cb(_0x14242a[_0x0e77('0x8')][_0x0e77('0x9')]);}else{return _0x4a97db(_0x14242a[_0x0e77('0xa')]);}})['catch'](function(_0x1da8d6){return _0x38c9cb(_0x1da8d6);});});}exports[_0x0e77('0xb')]=function(_0x510164){return request(_0x0e77('0xc'),{'options':{'raw':![],'where':{'name':_0x510164},'attributes':[_0x0e77('0xd')]}});};exports[_0x0e77('0xe')]=function(_0x438f6b){return request(_0x0e77('0xf'),{'options':{'raw':![],'where':{'id':_0x438f6b},'include':[{'model':_0x0e77('0x10'),'as':_0x0e77('0x11')}],'attributes':['id',_0x0e77('0x12'),_0x0e77('0x13')]}});};exports[_0x0e77('0x14')]=function(_0x467a94){return request(_0x0e77('0xc'),{'options':{'where':{'id':_0x467a94},'attributes':[_0x0e77('0x12')]}});};exports[_0x0e77('0x15')]=function(_0x3efacb){return request(_0x0e77('0x16'),{'options':{'where':{'id':_0x3efacb},'attributes':[_0x0e77('0x12')]}});};exports[_0x0e77('0x17')]=function(_0x510517){return request(_0x0e77('0x18'),{'options':{'where':{'id':_0x510517},'attributes':[_0x0e77('0x12')]}});};exports[_0x0e77('0x19')]=function(_0x5873ae){return request(_0x0e77('0x1a'),{'options':{'where':{'id':_0x5873ae},'attributes':[_0x0e77('0x1b')]}});};exports['getUserById']=function(_0x5f1cb9){return request('ShowUser',{'options':{'where':{'id':_0x5f1cb9},'attributes':[_0x0e77('0x12')]}});};exports[_0x0e77('0x1c')]=function(_0x294a08){return request(_0x0e77('0x1d'),{'options':{'where':{'id':_0x294a08},'attributes':[_0x0e77('0x12')]}});};exports[_0x0e77('0x1e')]=function(_0x4c669d){return request(_0x0e77('0x1f'),{'options':{'where':{'id':_0x4c669d},'attributes':[_0x0e77('0x20')]}});};exports[_0x0e77('0x21')]=function(_0x158161){return request(_0x0e77('0x22'),{'options':{'raw':![],'where':{'id':_0x158161},'include':[{'model':_0x0e77('0x23'),'as':_0x0e77('0x24')}]}});};exports['getSmsAccountById']=function(_0x3c930e){return request(_0x0e77('0x25'),{'options':{'where':{'id':_0x3c930e},'attributes':['id',_0x0e77('0x12')]}});};exports['createSmsMessage']=function(_0x25213b){return request('CreateSmsMessage',{'body':_0x25213b});};exports[_0x0e77('0x26')]=function(_0x24dfb7){return request(_0x0e77('0x27'),{'body':_0x24dfb7});};exports['createSquareReport']=function(_0x10efe1){return request(_0x0e77('0x28'),{'body':_['merge'](_0x10efe1,{'project_name':_0x10efe1[_0x0e77('0x29')],'prev_project_name':_0x10efe1['arg_2']||'','is_subproject':_0x10efe1[_0x0e77('0x2a')]?!![]:![],'leaveAt':moment()[_0x0e77('0x2b')](_0x0e77('0x2c'))})});};exports[_0x0e77('0x2d')]=function(_0x4cd273){return request('CreateSquareRecording',{'body':_0x4cd273});};exports['createSquareMessage']=function(_0x574bfd){return request(_0x0e77('0x2e'),{'body':_0x574bfd});};exports['createCmContact']=function(_0x597aab){return request(_0x0e77('0x2f'),{'options':{'raw':![],'where':{'phone':_0x597aab[_0x0e77('0x30')],'ListId':_0x597aab[_0x0e77('0x31')]}}})[_0x0e77('0x32')](function(_0x2486b7){if(_0x2486b7){return _0x2486b7;}return request(_0x0e77('0x33'),{'body':_0x597aab});});};exports[_0x0e77('0x34')]=function(_0x3cf3f){return request(_0x0e77('0x35'),{'options':{'where':{'id':_0x3cf3f},'attributes':['name']}});};exports[_0x0e77('0x36')]=function(_0x1cae32,_0x4f66f2){return request(_0x0e77('0x37'),{'body':{'interface':_0x4f66f2},'options':{'where':_0x1cae32}});};exports['agentPause']=function(_0x4e4fdf,_0x453f6c,_0x3891e9){return request('PauseUser',{'body':{'type':_0x453f6c,'uniqueid':_0x3891e9},'options':{'where':_0x4e4fdf}});};exports[_0x0e77('0x38')]=function(_0xcdc0b9){return request(_0x0e77('0x39'),{'body':{},'options':{'where':_0xcdc0b9}});};exports[_0x0e77('0x3a')]=function(_0x552181){return request('LogoutUser',{'body':{},'options':{'where':_0x552181}});};
\ No newline at end of file
+var _0x2824=['http','request','message','result','catch','getSquareProject','production','getMailAccountById','Smtp','name','email','getSquareProjectById','ShowSquareProject','ShowVoiceQueue','getVariableById','ShowVariable','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk','getSoundById','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','createSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','agentUnpause','agentLogout','LogoutUser','moment','lodash','util','jayson/promise','client'];(function(_0x4c3ee2,_0x2221fa){var _0x5a5184=function(_0x17c594){while(--_0x17c594){_0x4c3ee2['push'](_0x4c3ee2['shift']());}};_0x5a5184(++_0x2221fa);}(_0x2824,0x6f));var _0x4282=function(_0x3b7b93,_0x24d857){_0x3b7b93=_0x3b7b93-0x0;var _0x31f24d=_0x2824[_0x3b7b93];return _0x31f24d;};'use strict';var BPromise=require('bluebird');var moment=require(_0x4282('0x0'));var _=require(_0x4282('0x1'));var util=require(_0x4282('0x2'));var jayson=require(_0x4282('0x3'));var client=jayson[_0x4282('0x4')][_0x4282('0x5')]({'port':0x2329});function request(_0xdafbaa,_0x4a1463){return new BPromise(function(_0x118382,_0x2b739b){return client[_0x4282('0x6')](_0xdafbaa,_0x4a1463)['then'](function(_0x1f0adc){if(_0x1f0adc['error']){return _0x2b739b(_0x1f0adc['error'][_0x4282('0x7')]);}else{return _0x118382(_0x1f0adc[_0x4282('0x8')]);}})[_0x4282('0x9')](function(_0x33c0e2){return _0x2b739b(_0x33c0e2);});});}exports[_0x4282('0xa')]=function(_0x27aa09){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x27aa09},'attributes':[_0x4282('0xb')]}});};exports[_0x4282('0xc')]=function(_0x1df73f){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x1df73f},'include':[{'model':'MailServerOut','as':_0x4282('0xd')}],'attributes':['id',_0x4282('0xe'),_0x4282('0xf')]}});};exports[_0x4282('0x10')]=function(_0x6c3042){return request(_0x4282('0x11'),{'options':{'where':{'id':_0x6c3042},'attributes':[_0x4282('0xe')]}});};exports['getVoiceQueueById']=function(_0x4c6771){return request(_0x4282('0x12'),{'options':{'where':{'id':_0x4c6771},'attributes':['name']}});};exports[_0x4282('0x13')]=function(_0x50b10f){return request(_0x4282('0x14'),{'options':{'where':{'id':_0x50b10f},'attributes':['name']}});};exports['getSquareOdbcById']=function(_0x7cc56f){return request(_0x4282('0x15'),{'options':{'where':{'id':_0x7cc56f},'attributes':[_0x4282('0x16')]}});};exports[_0x4282('0x17')]=function(_0x429546){return request(_0x4282('0x18'),{'options':{'where':{'id':_0x429546},'attributes':[_0x4282('0xe')]}});};exports[_0x4282('0x19')]=function(_0x2a7df5){return request(_0x4282('0x1a'),{'options':{'where':{'id':_0x2a7df5},'attributes':[_0x4282('0xe')]}});};exports[_0x4282('0x1b')]=function(_0x1a67f1){return request('ShowSound',{'options':{'where':{'id':_0x1a67f1},'attributes':[_0x4282('0x1c')]}});};exports[_0x4282('0x1d')]=function(_0x3d2fb1){return request(_0x4282('0x1e'),{'options':{'raw':![],'where':{'id':_0x3d2fb1},'include':[{'model':_0x4282('0x1f'),'as':_0x4282('0x20')}]}});};exports[_0x4282('0x21')]=function(_0x95ae92){return request(_0x4282('0x22'),{'options':{'where':{'id':_0x95ae92},'attributes':['id',_0x4282('0xe')]}});};exports['createSmsMessage']=function(_0x5f34fc){return request(_0x4282('0x23'),{'body':_0x5f34fc});};exports[_0x4282('0x24')]=function(_0x4ecd2f){return request(_0x4282('0x25'),{'body':_0x4ecd2f});};exports[_0x4282('0x26')]=function(_0x186862){return request(_0x4282('0x27'),{'body':_[_0x4282('0x28')](_0x186862,{'project_name':_0x186862[_0x4282('0x29')],'prev_project_name':_0x186862[_0x4282('0x2a')]||'','is_subproject':_0x186862['arg_2']?!![]:![],'leaveAt':moment()[_0x4282('0x2b')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x4282('0x2c')]=function(_0x218b41){return request('CreateSquareRecording',{'body':_0x218b41});};exports[_0x4282('0x2d')]=function(_0x2e1c22){return request(_0x4282('0x2e'),{'body':_0x2e1c22});};exports[_0x4282('0x2f')]=function(_0x3b5004){return request(_0x4282('0x30'),{'options':{'raw':![],'where':{'phone':_0x3b5004['phone'],'ListId':_0x3b5004[_0x4282('0x31')]}}})['then'](function(_0x43f0ef){if(_0x43f0ef){return _0x43f0ef;}return request('CreateCmContact',{'body':_0x3b5004});});};exports[_0x4282('0x32')]=function(_0x2db865){return request(_0x4282('0x33'),{'options':{'where':{'id':_0x2db865},'attributes':[_0x4282('0xe')]}});};exports[_0x4282('0x34')]=function(_0x1132cd,_0x24d145){return request(_0x4282('0x35'),{'body':{'interface':_0x24d145},'options':{'where':_0x1132cd}});};exports[_0x4282('0x36')]=function(_0x28c99c,_0x16b0df,_0x4f1c98){return request('PauseUser',{'body':{'type':_0x16b0df,'uniqueid':_0x4f1c98},'options':{'where':_0x28c99c}});};exports[_0x4282('0x37')]=function(_0x1a421a){return request('UnpauseUser',{'body':{},'options':{'where':_0x1a421a}});};exports[_0x4282('0x38')]=function(_0x35a60b){return request(_0x4282('0x39'),{'body':{},'options':{'where':_0x35a60b}});};
\ No newline at end of file
index 58e8e45..890f35d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8efc=['exports'];(function(_0x399053,_0x3248cf){var _0x322594=function(_0x18c1b4){while(--_0x18c1b4){_0x399053['push'](_0x399053['shift']());}};_0x322594(++_0x3248cf);}(_0x8efc,0x8f));var _0xc8ef=function(_0x1c3386,_0x2868c0){_0x1c3386=_0x1c3386-0x0;var _0x2cc8e9=_0x8efc[_0x1c3386];return _0x2cc8e9;};var polly=require('./polly');var lex=require('./lex');module[_0xc8ef('0x0')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x14f5=['./lex'];(function(_0x4b6dbc,_0x56ca7d){var _0x2c3ca9=function(_0x2e0aa9){while(--_0x2e0aa9){_0x4b6dbc['push'](_0x4b6dbc['shift']());}};_0x2c3ca9(++_0x56ca7d);}(_0x14f5,0xae));var _0x514f=function(_0x396991,_0x1f01e3){_0x396991=_0x396991-0x0;var _0x53b9f5=_0x14f5[_0x396991];return _0x53b9f5;};var polly=require('./polly');var lex=require(_0x514f('0x0'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
index 0dcf46b..b4a209c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['./lib/api'];(function(_0x328b1c,_0xec0b4f){var _0x4dbeaa=function(_0x432519){while(--_0x432519){_0x328b1c['push'](_0x328b1c['shift']());}};_0x4dbeaa(++_0xec0b4f);}(_0xf4eb,0xec));var _0xbf4e=function(_0x143f84,_0x57273a){_0x143f84=_0x143f84-0x0;var _0x214255=_0xf4eb[_0x143f84];return _0x214255;};'use strict';var lex=require(_0xbf4e('0x0'));module['exports']=function(_0x50f2fc,_0x479210,_0x5ed5b9,_0xbbbf01,_0x49d80e,_0x4e7fa7){return lex(_0x50f2fc,_0x479210,_0x5ed5b9,_0xbbbf01,_0x49d80e,_0x4e7fa7);};
\ No newline at end of file
+var _0xec56=['./lib/api'];(function(_0x12f688,_0x585c25){var _0x59c3de=function(_0x4ac301){while(--_0x4ac301){_0x12f688['push'](_0x12f688['shift']());}};_0x59c3de(++_0x585c25);}(_0xec56,0x1bd));var _0x6ec5=function(_0x152c3b,_0x50d091){_0x152c3b=_0x152c3b-0x0;var _0x5e099b=_0xec56[_0x152c3b];return _0x5e099b;};'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
index 3bfafe6..245834a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x127910,_0x278aaf){var _0x1643da=function(_0x3d3091){while(--_0x3d3091){_0x127910['push'](_0x127910['shift']());}};_0x1643da(++_0x278aaf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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(_0xb32c3f,_0x3fff3b){var _0x55eb6e=function(_0x12addb){while(--_0x12addb){_0xb32c3f['push'](_0xb32c3f['shift']());}};_0x55eb6e(++_0x3fff3b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'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 1c57eb7..64125c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd163=['exports','./lib/api'];(function(_0xb97efc,_0x1243fe){var _0x4a6e4a=function(_0x3dae65){while(--_0x3dae65){_0xb97efc['push'](_0xb97efc['shift']());}};_0x4a6e4a(++_0x1243fe);}(_0xd163,0x1a9));var _0x3d16=function(_0x52e0ee,_0x52f7c1){_0x52e0ee=_0x52e0ee-0x0;var _0x32534c=_0xd163[_0x52e0ee];return _0x32534c;};'use strict';var polly=require(_0x3d16('0x0'));module[_0x3d16('0x1')]=function(_0x4cc9d8,_0x12704d,_0x4a2e26,_0x4351b4,_0x30193f,_0xcc86a6,_0x1c6f2b){return polly(_0x4cc9d8,_0x12704d,_0x4a2e26,_0x4351b4,_0x30193f,_0xcc86a6,_0x1c6f2b);};
\ No newline at end of file
+var _0x148d=['exports'];(function(_0xdb6477,_0x41bfd3){var _0x30732c=function(_0x1dc0c9){while(--_0x1dc0c9){_0xdb6477['push'](_0xdb6477['shift']());}};_0x30732c(++_0x41bfd3);}(_0x148d,0xd9));var _0xd148=function(_0x1a592f,_0x422a1a){_0x1a592f=_0x1a592f-0x0;var _0x26b8cb=_0x148d[_0x1a592f];return _0x26b8cb;};'use strict';var polly=require('./lib/api');module[_0xd148('0x0')]=function(_0x40c11d,_0xf4da8a,_0x54f708,_0x536afb,_0x3080f8,_0x1c9720,_0x392e1f){return polly(_0x40c11d,_0xf4da8a,_0x54f708,_0x536afb,_0x3080f8,_0x1c9720,_0x392e1f);};
\ No newline at end of file
index 21d1723..60e2bf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fa0=['Polly','mp3','bluebird','randomstring','aws-sdk','synthesizeSpeech','writeFile','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports'];(function(_0x312181,_0x1e3d48){var _0x1ec92d=function(_0x3f1210){while(--_0x3f1210){_0x312181['push'](_0x312181['shift']());}};_0x1ec92d(++_0x1e3d48);}(_0x4fa0,0xbd));var _0x04fa=function(_0x2c492c,_0x50e279){_0x2c492c=_0x2c492c-0x0;var _0x51c7f6=_0x4fa0[_0x2c492c];return _0x51c7f6;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x04fa('0x0'));var rs=require(_0x04fa('0x1'));var AWS=require(_0x04fa('0x2'));function pollyResult(_0x24d46f,_0xe6545,_0x37c046){return new BPromise(function(_0x5588a9,_0x2059e9){_0x24d46f[_0x04fa('0x3')](_0xe6545,function(_0x5860d8,_0x475ac9){if(_0x5860d8){_0x2059e9(_0x5860d8);}else if(_0x475ac9){if(_0x475ac9['AudioStream']instanceof Buffer){fs[_0x04fa('0x4')](_0x37c046,_0x475ac9[_0x04fa('0x5')],function(_0x2b32f0){if(_0x2b32f0){_0x2059e9(_0x2b32f0);}else{_0x5588a9();}});}else{_0x2059e9(new Error(_0x04fa('0x6')));}}else{_0x2059e9(new Error(_0x04fa('0x7')));}});});}module[_0x04fa('0x8')]=function(_0x1e1e66,_0x31f280,_0xe1804d,_0x49c052,_0xf4e7f0,_0x1022bb,_0x3e5e6b){var _0x40340f=new AWS[(_0x04fa('0x9'))]({'accessKeyId':_0x1e1e66,'secretAccessKey':_0x31f280,'region':_0xe1804d});var _0x3ba1de={'Text':_0xf4e7f0,'TextType':_0x1022bb||'text','OutputFormat':_0x04fa('0xa'),'VoiceId':_0x49c052};return pollyResult(_0x40340f,_0x3ba1de,_0x3e5e6b);};
\ No newline at end of file
+var _0x54eb=['Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','Polly','text','path','randomstring','aws-sdk','synthesizeSpeech','writeFile','AudioStream'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x54eb,0xe0));var _0xb54e=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x54eb[_0x51020b];return _0x371e47;};'use strict';var fs=require('fs');var path=require(_0xb54e('0x0'));var BPromise=require('bluebird');var rs=require(_0xb54e('0x1'));var AWS=require(_0xb54e('0x2'));function pollyResult(_0x111a4f,_0x340641,_0x2ebed8){return new BPromise(function(_0x1dd370,_0x3325d1){_0x111a4f[_0xb54e('0x3')](_0x340641,function(_0x49b26d,_0x27c80f){if(_0x49b26d){_0x3325d1(_0x49b26d);}else if(_0x27c80f){if(_0x27c80f['AudioStream']instanceof Buffer){fs[_0xb54e('0x4')](_0x2ebed8,_0x27c80f[_0xb54e('0x5')],function(_0x484642){if(_0x484642){_0x3325d1(_0x484642);}else{_0x1dd370();}});}else{_0x3325d1(new Error(_0xb54e('0x6')));}}else{_0x3325d1(new Error(_0xb54e('0x7')));}});});}module['exports']=function(_0x2b9c30,_0x452385,_0x51b91d,_0x3120c1,_0x1a92e4,_0x24be5e,_0x427c1a){var _0x353ae3=new AWS[(_0xb54e('0x8'))]({'accessKeyId':_0x2b9c30,'secretAccessKey':_0x452385,'region':_0x51b91d});var _0xf47bfa={'Text':_0x1a92e4,'TextType':_0x24be5e||_0xb54e('0x9'),'OutputFormat':'mp3','VoiceId':_0x3120c1};return pollyResult(_0x353ae3,_0xf47bfa,_0x427c1a);};
\ No newline at end of file
index 9665d53..e971829 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d40=['./lib/api','exports'];(function(_0xd80466,_0x5506d8){var _0x140f2d=function(_0x2a7f62){while(--_0x2a7f62){_0xd80466['push'](_0xd80466['shift']());}};_0x140f2d(++_0x5506d8);}(_0x0d40,0x14c));var _0x00d4=function(_0x469104,_0x42c4ae){_0x469104=_0x469104-0x0;var _0x3f4a27=_0x0d40[_0x469104];return _0x3f4a27;};'use strict';var asr=require(_0x00d4('0x0'));module[_0x00d4('0x1')]=function(_0x47f547,_0x16a67c,_0x369b0d,_0xa19450){return asr(_0x47f547,_0x16a67c,_0x369b0d);};
\ No newline at end of file
+var _0x7a99=['./lib/api','exports'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x7a99,0x144));var _0x97a9=function(_0x1dfe0f,_0x1b41cf){_0x1dfe0f=_0x1dfe0f-0x0;var _0x264ed7=_0x7a99[_0x1dfe0f];return _0x264ed7;};'use strict';var asr=require(_0x97a9('0x0'));module[_0x97a9('0x1')]=function(_0x563455,_0x2593ae,_0x1ba874,_0x45c0f4){return asr(_0x563455,_0x2593ae,_0x1ba874);};
\ No newline at end of file
index e648096..3bedb5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dc2=['readFileSync','toString','/v1/speech:recognize?key=','LINEAR16','8000','https://speech.googleapis.com','exports','string','length','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string'];(function(_0x16fa57,_0x5b65cd){var _0x2186d8=function(_0xbbf0b1){while(--_0xbbf0b1){_0x16fa57['push'](_0x16fa57['shift']());}};_0x2186d8(++_0x5b65cd);}(_0x7dc2,0x19d));var _0x27dc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7dc2[_0x20a584];return _0x4b41a8;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host=_0x27dc('0x0');module[_0x27dc('0x1')]=function(_0x49a9e7,_0x426f56,_0x57d4b4){return new BPromise(function(_0x15d70c,_0x29ba23){var _0x52337b;if(typeof _0x49a9e7!==_0x27dc('0x2')||_0x49a9e7[_0x27dc('0x3')]===0x0){return _0x29ba23('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x426f56!==_0x27dc('0x2')||_0x426f56['length']===0x0){return _0x29ba23(_0x27dc('0x4'));}if(typeof _0x57d4b4!==_0x27dc('0x5')&&(typeof _0x57d4b4!=='string'||_0x57d4b4[_0x27dc('0x3')]===0x0)){return _0x29ba23(_0x27dc('0x6'));}try{_0x52337b=fs[_0x27dc('0x7')](_0x49a9e7)[_0x27dc('0x8')]('base64');}catch(_0x1d93ef){return _0x29ba23(_0x1d93ef);}return _0x15d70c({'method':'POST','uri':host+_0x27dc('0x9')+_0x426f56,'body':{'config':{'encoding':_0x27dc('0xa'),'sampleRateHertz':_0x27dc('0xb'),'languageCode':_0x57d4b4},'audio':{'content':_0x52337b}},'json':!![]});});};
\ No newline at end of file
+var _0xb32d=['filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','exports','string','length'];(function(_0x20e51b,_0x3e9eb6){var _0x4e12a8=function(_0x271b0d){while(--_0x271b0d){_0x20e51b['push'](_0x20e51b['shift']());}};_0x4e12a8(++_0x3e9eb6);}(_0xb32d,0x1da));var _0xdb32=function(_0x3504a0,_0x3f770f){_0x3504a0=_0x3504a0-0x0;var _0x3dfca3=_0xb32d[_0x3504a0];return _0x3dfca3;};'use strict';var url=require(_0xdb32('0x0'));var BPromise=require(_0xdb32('0x1'));var fs=require('fs');var host=_0xdb32('0x2');module[_0xdb32('0x3')]=function(_0x298769,_0x56a5af,_0x56bb98){return new BPromise(function(_0x2fe96e,_0x2c5527){var _0x581ceb;if(typeof _0x298769!==_0xdb32('0x4')||_0x298769[_0xdb32('0x5')]===0x0){return _0x2c5527(_0xdb32('0x6'));}if(typeof _0x56a5af!==_0xdb32('0x4')||_0x56a5af[_0xdb32('0x5')]===0x0){return _0x2c5527(_0xdb32('0x7'));}if(typeof _0x56bb98!=='undefined'&&(typeof _0x56bb98!==_0xdb32('0x4')||_0x56bb98[_0xdb32('0x5')]===0x0)){return _0x2c5527(_0xdb32('0x8'));}try{_0x581ceb=fs[_0xdb32('0x9')](_0x298769)[_0xdb32('0xa')](_0xdb32('0xb'));}catch(_0x112db6){return _0x2c5527(_0x112db6);}return _0x2fe96e({'method':_0xdb32('0xc'),'uri':host+_0xdb32('0xd')+_0x56a5af,'body':{'config':{'encoding':_0xdb32('0xe'),'sampleRateHertz':_0xdb32('0xf'),'languageCode':_0x56bb98},'audio':{'content':_0x581ceb}},'json':!![]});});};
\ No newline at end of file
index 1e6bbb7..c70c4fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bde=['exports'];(function(_0x42c118,_0x197006){var _0x112ebd=function(_0x337411){while(--_0x337411){_0x42c118['push'](_0x42c118['shift']());}};_0x112ebd(++_0x197006);}(_0x2bde,0x1ba));var _0xe2bd=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0x2bde[_0x1beef3];return _0x5af964;};var asr=require('./asr');module[_0xe2bd('0x0')]={'asr':asr};
\ No newline at end of file
+var _0xddc7=['./asr','exports'];(function(_0x1cdf19,_0x2c4b46){var _0x340a02=function(_0x101858){while(--_0x101858){_0x1cdf19['push'](_0x1cdf19['shift']());}};_0x340a02(++_0x2c4b46);}(_0xddc7,0x118));var _0x7ddc=function(_0x283152,_0x468a35){_0x283152=_0x283152-0x0;var _0x6cb80d=_0xddc7[_0x283152];return _0x6cb80d;};var asr=require(_0x7ddc('0x0'));module[_0x7ddc('0x1')]={'asr':asr};
\ No newline at end of file
index d20b5de..eb167dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7750=['statusMessage','createWriteStream','finish','close','unlink','download\x20error','pipe','end','https:','transcode','error\x20convert','info','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','then','chmodSync','777','split','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','POST','.mp3','from','writeFile','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','f.req=','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','length','lang\x20\x22','\x22\x20might\x20not\x20exist','writeFileSync','googleASR','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','textRequest','result','resolvedQuery','action','fulfillment','score','code','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','boolValue','intent','name','displayName','isFallback','languageCode','queryText','intentDetectionConfidence','fulfillmentText','tildeASR','asr','awsPolly','awsLex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','randomstring','sox','google-tts-api','url','parse','./aws','./tilde','../../../config/logger','agi','protocol','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20'];(function(_0x3c768f,_0x187d00){var _0x45878c=function(_0x45b108){while(--_0x45b108){_0x3c768f['push'](_0x3c768f['shift']());}};_0x45878c(++_0x187d00);}(_0x7750,0x6a));var _0x0775=function(_0x2b3086,_0x1906e8){_0x2b3086=_0x2b3086-0x0;var _0x5c3531=_0x7750[_0x2b3086];return _0x5c3531;};'use strict';var apiai=require(_0x0775('0x0'));var BPromise=require(_0x0775('0x1'));var dialogflow=require(_0x0775('0x2'));var fs=require('fs');var http=require(_0x0775('0x3'));var https=require(_0x0775('0x4'));var md5=require(_0x0775('0x5'));var path=require(_0x0775('0x6'));var querystring=require(_0x0775('0x7'));var rp=require('request-promise');var rs=require(_0x0775('0x8'));var sox=require(_0x0775('0x9'));var tts=require(_0x0775('0xa'));var urlParse=require(_0x0775('0xb'))[_0x0775('0xc')];var util=require('util');var aws=require(_0x0775('0xd'));var google=require('./google');var sestek=require('./sestek');var tilde=require(_0x0775('0xe'));var logger=require(_0x0775('0xf'))(_0x0775('0x10'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x4d810d,_0x5a4247){return new BPromise(function(_0x3e7c3f,_0x422f29){var _0x216717=urlParse(_0x4d810d);var _0x489c26=_0x216717[_0x0775('0x11')]==='https:'?https:http;var _0x4f6e7c={'host':_0x216717[_0x0775('0x12')],'path':_0x216717[_0x0775('0x6')],'headers':{'user-agent':_0x0775('0x13')}};_0x489c26[_0x0775('0x14')](_0x4f6e7c,function(_0x1db188){if(_0x1db188[_0x0775('0x15')]!==0xc8){logger[_0x0775('0x16')](_0x0775('0x17')+_0x4d810d+_0x0775('0x18')+_0x1db188[_0x0775('0x15')]+'\x20('+_0x1db188['statusMessage']+')');_0x422f29(new Error(_0x0775('0x17')+_0x4d810d+_0x0775('0x18')+_0x1db188[_0x0775('0x15')]+'\x20('+_0x1db188[_0x0775('0x19')]+')'));return;}var _0x498b69=fs[_0x0775('0x1a')](_0x5a4247);_0x498b69['on'](_0x0775('0x1b'),function(){logger['info']('finish\x20download\x20file');_0x498b69[_0x0775('0x1c')](_0x3e7c3f);});_0x498b69['on'](_0x0775('0x16'),function(_0xb80a36){fs[_0x0775('0x1d')](_0x5a4247);logger[_0x0775('0x16')](_0x0775('0x1e'),_0xb80a36);_0x422f29(_0xb80a36);});_0x1db188[_0x0775('0x1f')](_0x498b69);})['on'](_0x0775('0x16'),function(_0xd2b083){logger[_0x0775('0x16')](_0xd2b083);_0x422f29(_0xd2b083);})[_0x0775('0x20')]();});}function uploadFile(_0xa7d6aa){return new BPromise(function(_0xd6ca0d,_0x162605){var _0x47f8da=urlParse(_0xa7d6aa);var _0x25e330=_0x47f8da[_0x0775('0x11')]===_0x0775('0x21')?https:http;var _0x3fd51d={'host':_0x47f8da[_0x0775('0x12')],'path':_0x47f8da[_0x0775('0x6')],'headers':{'user-agent':_0x0775('0x13')}};_0x25e330['get'](_0x3fd51d,function(_0x521417){if(_0x521417[_0x0775('0x15')]!==0xc8){_0x162605(new Error(_0x0775('0x17')+_0xa7d6aa+_0x0775('0x18')+_0x521417[_0x0775('0x15')]+'\x20('+_0x521417[_0x0775('0x19')]+')'));return;}var _0x357a50='';_0x521417['on']('data',function(_0x284a5d){_0x357a50+=_0x284a5d;});_0x521417['on'](_0x0775('0x20'),function(){_0xd6ca0d(_0x357a50);});})['on']('error',function(_0x5adb1f){_0x162605(_0x5adb1f);})[_0x0775('0x20')]();});}function convertFile(_0x5e8f68,_0x3dd76c){return new BPromise(function(_0x1888af,_0x36a350){var _0x483ef1=sox[_0x0775('0x22')](_0x5e8f68,_0x3dd76c,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x483ef1['on'](_0x0775('0x16'),function(_0x2a8111){logger[_0x0775('0x16')](_0x0775('0x23'),_0x2a8111);_0x36a350(_0x2a8111);});_0x483ef1['on'](_0x0775('0x20'),function(){logger[_0x0775('0x24')](_0x0775('0x25'));_0x1888af();});_0x483ef1[_0x0775('0x26')]();});}function base64Decode(_0x3f7468,_0x1c6fe8){var _0x4676a7=path[_0x0775('0x27')](__dirname,_0x0775('0x28'),rs[_0x0775('0x29')](0x4)+_0x0775('0x2a'));fs['writeFileSync'](_0x4676a7,_0x3f7468,'base64');return convertFile(_0x4676a7,_0x1c6fe8)[_0x0775('0x2b')](function(){try{fs[_0x0775('0x1d')](_0x4676a7);fs[_0x0775('0x2c')](_0x1c6fe8,_0x0775('0x2d'));}catch(_0x2abe4b){logger[_0x0775('0x16')](_0x2abe4b);}return _0x1c6fe8[_0x0775('0x2e')]('.')[0x0];});}function base64Encode(_0x6bd259){var _0x1afa65=fs['readFileSync'](_0x6bd259);return new Buffer(_0x1afa65)[_0x0775('0x2f')](_0x0775('0x30'));}exports[_0x0775('0x31')]=function(_0xaa9459,_0x544d31,_0x8c5bb6,_0x4514e2,_0x23a558,_0x90a76a){var _0x3a3efd,_0x2981e9;var _0x4f1d80=_0x0775('0x32');var _0x9b9e3c=_0x0775('0x33')+_0xaa9459;var _0xe35681={};if(_0x544d31===_0x0775('0x34')){_0xe35681[_0x0775('0x35')]={'ssml':_0x8c5bb6};}else{_0xe35681[_0x0775('0x35')]={'text':_0x8c5bb6};};_0xe35681[_0x0775('0x36')]={'languageCode':_0x4514e2,'ssmlGender':_0x23a558};_0xe35681['audioConfig']={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x11f236={'url':_0x4f1d80+'text:synthesize'+_0x9b9e3c,'method':_0x0775('0x37'),'json':!![],'body':_0xe35681};return rp(_0x11f236)[_0x0775('0x2b')](function(_0x4f5b1a){return new BPromise(function(_0x2e641b,_0x197e2c){_0x3a3efd=path[_0x0775('0x27')](__dirname,'tmp',rs[_0x0775('0x29')](0x4)+_0x0775('0x38'));var _0x8ca14d=Buffer[_0x0775('0x39')](_0x4f5b1a['audioContent'],_0x0775('0x30'));return fs[_0x0775('0x3a')](_0x3a3efd,_0x8ca14d,function(_0x33a984){_0x197e2c(_0x33a984);},function(_0x3cf052){fs['chmodSync'](_0x3a3efd,_0x0775('0x2d'));_0x2e641b(_0x3cf052);});});})[_0x0775('0x2b')](function(_0x3b69cd){_0x2981e9=path[_0x0775('0x27')](__dirname,_0x0775('0x28'),rs[_0x0775('0x29')](0x4)+'.wav');return convertFile(_0x3a3efd,_0x2981e9);})[_0x0775('0x2b')](function(){try{fs['unlink'](_0x3a3efd);fs[_0x0775('0x2c')](_0x2981e9,_0x0775('0x2d'));}catch(_0x34946a){logger['error'](_0x34946a);}logger[_0x0775('0x24')](_0x0775('0x3b'),_0x2981e9['split']('.')[0x0]);return _0x2981e9[_0x0775('0x2e')]('.')[0x0];});};exports['googleTTS']=function(_0x258ea0,_0x298d9c){var _0xff2b6d=_0x0775('0x3c');var _0x9fc3a6,_0x561b93;var _0x3c5cf9;var _0x4e4756={'encoding':'utf8','method':_0x0775('0x37'),'timeout':0x2710,'url':_0xff2b6d,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x0775('0x3d')+encodeURIComponent(JSON[_0x0775('0x3e')]([[[_0x0775('0x3f'),JSON['stringify']([_0x258ea0,_0x298d9c||'en',![],_0x0775('0x40')]),null,_0x0775('0x41')]]]))};return rp(_0x4e4756)['then'](function(_0x45c334){try{_0x3c5cf9=eval(_0x45c334[_0x0775('0x42')](0x5))[0x0][0x2];}catch(_0x46cf72){throw new Error(_0x0775('0x43')+_0x45c334['data']);}if(!_0x3c5cf9){if(_0x258ea0[_0x0775('0x44')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x0775('0x45')+_0x298d9c+_0x0775('0x46'));}}try{_0x3c5cf9=eval(_0x3c5cf9)[0x0];}catch(_0x2a77c6){throw new Error('parse\x20response\x20failed:\x0a'+res['data']);}const _0xb8faf4=_0x3c5cf9;_0x9fc3a6=path[_0x0775('0x27')](__dirname,_0x0775('0x28'),rs['generate'](0x4)+_0x0775('0x38'));fs[_0x0775('0x47')](_0x9fc3a6,_0x3c5cf9,{'encoding':_0x0775('0x30')});_0x561b93=path[_0x0775('0x27')](__dirname,'tmp',rs[_0x0775('0x29')](0x4)+_0x0775('0x2a'));return convertFile(_0x9fc3a6,_0x561b93);})[_0x0775('0x2b')](function(){try{fs[_0x0775('0x1d')](_0x9fc3a6);fs[_0x0775('0x2c')](_0x561b93,_0x0775('0x2d'));}catch(_0x1fe1b0){logger[_0x0775('0x16')](_0x1fe1b0);}logger[_0x0775('0x24')]('goggleTTS\x20path',_0x561b93[_0x0775('0x2e')]('.')[0x0]);return _0x561b93[_0x0775('0x2e')]('.')[0x0];});};exports[_0x0775('0x48')]=function(_0x29c2dd,_0x2e13ef,_0x4c3f7f){return google['asr'](_0x29c2dd,_0x2e13ef,_0x4c3f7f)[_0x0775('0x2b')](function(_0x56975a){logger['info'](_0x56975a[_0x0775('0x49')]);return rp(_0x56975a);})[_0x0775('0x2b')](function(_0x9d55b2){var _0x48666b='';var _0x14fc97=0x0;try{fs[_0x0775('0x1d')](_0x29c2dd);}catch(_0x1c04c6){logger[_0x0775('0x16')](_0x1c04c6);}if(_0x9d55b2&&_0x9d55b2['results']){_0x48666b=_0x9d55b2[_0x0775('0x4a')][_0x0775('0x4b')](function(_0x134b07){return _0x134b07&&_0x134b07['alternatives'][0x0]&&_0x134b07[_0x0775('0x4c')][0x0][_0x0775('0x4d')]?_0x134b07[_0x0775('0x4c')][0x0][_0x0775('0x4d')]:'';})[_0x0775('0x4e')]('\x0a');_0x14fc97=_0x9d55b2[_0x0775('0x4a')][_0x0775('0x4b')](function(_0x2e3fa7){return _0x2e3fa7&&_0x2e3fa7[_0x0775('0x4c')][0x0]&&_0x2e3fa7[_0x0775('0x4c')][0x0][_0x0775('0x4f')]?_0x2e3fa7['alternatives'][0x0][_0x0775('0x4f')]:0x0;})[_0x0775('0x4e')]('\x0a');}logger[_0x0775('0x24')](_0x0775('0x50'),_0x48666b);logger['info'](_0x0775('0x51'),_0x14fc97);return{'transcript':_0x48666b,'confidence':_0x14fc97};})[_0x0775('0x52')](function(_0x157bdf){logger[_0x0775('0x16')](_0x0775('0x53'),_0x157bdf['statusCode'],_0x157bdf['name'],_0x157bdf[_0x0775('0x54')]);});};exports['googleDialogflow']=function(_0x23aa2c,_0x778a66,_0xbe757b,_0x14a5a7){var _0x2cda21=apiai(_0x778a66,{'language':_0x14a5a7||'en'});return _0x2cda21[_0x0775('0x55')](_0xbe757b,{'sessionId':md5(_0x23aa2c)})[_0x0775('0x2b')](function(_0x40a45f){logger[_0x0775('0x24')](JSON['stringify'](_0x40a45f));return{'source':_0x40a45f['result']['source'],'resolvedQuery':_0x40a45f[_0x0775('0x56')][_0x0775('0x57')],'action':_0x40a45f[_0x0775('0x56')][_0x0775('0x58')],'actionIncomplete':_0x40a45f['result']['actionIncomplete'],'speech':_0x40a45f[_0x0775('0x56')][_0x0775('0x59')]['speech'],'score':_0x40a45f[_0x0775('0x56')][_0x0775('0x5a')],'statusCode':_0x40a45f['status'][_0x0775('0x5b')],'endConversation':_0x40a45f[_0x0775('0x56')][_0x0775('0x5c')][_0x0775('0x5d')]||![],'isFallbackIntent':_0x40a45f['result'][_0x0775('0x5c')][_0x0775('0x5e')]};});};exports['googleDialogflowV2']=function(_0x18f517,_0x1c9c96,_0x333bb0,_0x52cf49,_0x38a06a,_0x4cb50b){var _0x1ccf78=_0x52cf49[_0x0775('0x5f')](/\\n/g,'\x0a');var _0x6921ec={'credentials':{'private_key':_0x1ccf78,'client_email':_0x333bb0}};var _0x45efa9=new dialogflow[(_0x0775('0x60'))](_0x6921ec);var _0x17804e=_0x45efa9[_0x0775('0x61')](_0x1c9c96,md5(_0x18f517));var _0x24011c={'session':_0x17804e,'queryInput':{'text':{'text':_0x38a06a,'languageCode':_0x4cb50b}}};return _0x45efa9[_0x0775('0x62')](_0x24011c)[_0x0775('0x2b')](function(_0xb835c6){if(_0xb835c6&&_0xb835c6['length']){logger[_0x0775('0x24')](_0x0775('0x63'),JSON[_0x0775('0x3e')](_0xb835c6));var _0x42e9db=_0xb835c6[0x0];if(_0x42e9db){var _0xddf4ed={'action':_0x42e9db[_0x0775('0x64')][_0x0775('0x58')],'allRequiredParamsPresent':_0x42e9db[_0x0775('0x64')]['allRequiredParamsPresent'],'endConversation':_0x42e9db[_0x0775('0x64')]['diagnosticInfo']&&_0x42e9db[_0x0775('0x64')][_0x0775('0x65')][_0x0775('0x66')]?_0x42e9db[_0x0775('0x64')][_0x0775('0x65')]['fields']['end_conversation'][_0x0775('0x67')]:![],'fulfillmentText':_0x42e9db['queryResult']['fulfillmentText'],'intentName':_0x42e9db['queryResult'][_0x0775('0x68')][_0x0775('0x69')],'intentDisplayName':_0x42e9db['queryResult']['intent'][_0x0775('0x6a')],'isFallbackIntent':_0x42e9db[_0x0775('0x64')]['intent'][_0x0775('0x6b')],'languageCode':_0x42e9db[_0x0775('0x64')][_0x0775('0x6c')],'queryText':_0x42e9db[_0x0775('0x64')][_0x0775('0x6d')],'responseId':_0x42e9db['responseId'],'score':_0x42e9db['queryResult'][_0x0775('0x6e')],'speech':_0x42e9db['queryResult'][_0x0775('0x6f')],'providerResponse':JSON[_0x0775('0x3e')](_0xb835c6)};return _0xddf4ed;}}});};exports[_0x0775('0x70')]=function(_0x41e2a2,_0x3e3547,_0x4f42b8,_0x277cf4){return tilde[_0x0775('0x71')](_0x41e2a2,_0x3e3547,_0x4f42b8,_0x277cf4)[_0x0775('0x2b')](function(_0x190772){try{fs[_0x0775('0x1d')](_0x41e2a2);}catch(_0x374941){logger[_0x0775('0x16')](_0x374941);}logger[_0x0775('0x24')]('Tilde\x20ASR\x20transcription',_0x190772['transcript']);logger[_0x0775('0x24')]('Tilde\x20ASR\x20confidence',_0x190772[_0x0775('0x4f')]);return _0x190772;});};exports[_0x0775('0x72')]=function(_0x126def,_0x589d27,_0x637e6c,_0x5e34ca,_0x55e958,_0x413384){var _0xaead2b=path[_0x0775('0x27')](__dirname,'tmp',rs[_0x0775('0x29')](0x4)+_0x0775('0x38'));var _0x235b04;return aws['polly'](_0x126def,_0x589d27,_0x637e6c,_0x5e34ca,_0x55e958,_0x413384,_0xaead2b)[_0x0775('0x2b')](function(){_0x235b04=path[_0x0775('0x27')](__dirname,_0x0775('0x28'),rs[_0x0775('0x29')](0x4)+_0x0775('0x2a'));return convertFile(_0xaead2b,_0x235b04);})['then'](function(){try{fs[_0x0775('0x1d')](_0xaead2b);fs[_0x0775('0x2c')](_0x235b04,'777');}catch(_0x5d0641){logger['error'](_0x5d0641);}return _0x235b04[_0x0775('0x2e')]('.')[0x0];});};exports[_0x0775('0x73')]=function(_0x5ec5c7,_0x3a7328,_0x14adae,_0x3108bb,_0x41526b,_0x57e206){return aws['lex'](_0x5ec5c7,_0x3a7328,_0x14adae,_0x3108bb,_0x41526b,_0x57e206)[_0x0775('0x2b')](function(_0x1976b8){logger[_0x0775('0x24')](JSON['stringify'](_0x1976b8));return _0x1976b8;});};exports[_0x0775('0x74')]=function(_0x33a9c7,_0x27a17b,_0x50dca1,_0x8f1a8b){var _0x57d0f2=util[_0x0775('0x75')](_0x0775('0x76'),ISPEECH_API,_0x33a9c7,encodeURIComponent(_0x27a17b),_0x50dca1,_0x8f1a8b);var _0x5def49=path[_0x0775('0x27')](__dirname,_0x0775('0x28'),rs[_0x0775('0x29')](0x4)+_0x0775('0x38'));var _0x5a56c6;return downloadFile(_0x57d0f2,_0x5def49)[_0x0775('0x2b')](function(){_0x5a56c6=path[_0x0775('0x27')](__dirname,'tmp',rs[_0x0775('0x29')](0x4)+_0x0775('0x2a'));return convertFile(_0x5def49,_0x5a56c6);})[_0x0775('0x2b')](function(){try{fs[_0x0775('0x1d')](_0x5def49);fs[_0x0775('0x2c')](_0x5a56c6,_0x0775('0x2d'));}catch(_0x310423){logger[_0x0775('0x16')](_0x310423);}return _0x5a56c6[_0x0775('0x2e')]('.')[0x0];});};exports['ispeechASR']=function(_0x2a0341,_0x3b3e4a,_0x16f442,_0x9849eb){var _0xa4339d=util[_0x0775('0x75')](_0x0775('0x77'),ISPEECH_API,_0x3b3e4a,_0x16f442,base64Encode(_0x2a0341),_0x9849eb?util[_0x0775('0x75')](_0x0775('0x78'),encodeURIComponent(_0x9849eb)):_0x0775('0x79'));return uploadFile(_0xa4339d)[_0x0775('0x2b')](function(_0x3b1c9c){return querystring[_0x0775('0xc')](_0x3b1c9c);});};exports['sestekNDA']=function(_0x12b992,_0x590308){return sestek[_0x0775('0x7a')](_0x12b992,_0x590308)['then'](function(_0x3ad4f5){logger['info'](JSON[_0x0775('0x3e')](_0x3ad4f5));var _0x3683d6={'speech':_0x3ad4f5[_0x0775('0x7b')],'action':_0x3ad4f5[_0x0775('0x7c')]?_0x3ad4f5[_0x0775('0x7c')][_0x0775('0x7d')]:undefined,'actiondata':_0x3ad4f5['channelData']?_0x3ad4f5[_0x0775('0x7c')][_0x0775('0x7e')]:undefined};if(_0x3ad4f5['channelData']&&_0x3ad4f5['channelData'][_0x0775('0x7f')]){return base64Decode(_0x3ad4f5['channelData'][_0x0775('0x7f')][_0x0775('0x80')],path[_0x0775('0x27')](__dirname,_0x0775('0x28'),rs['generate'](0x4)+_0x0775('0x2a')))[_0x0775('0x2b')](function(_0x22d5c8){_0x3683d6[_0x0775('0x81')]=_0x22d5c8;return _0x3683d6;});}return _0x3683d6;});};exports[_0x0775('0x82')]=function(){return __dirname;};
\ No newline at end of file
+var _0x8096=['./sestek','./tilde','../../../config/logger','protocol','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','unlink','download\x20error','pipe','https:','data','end','transcode','wav','finish\x20to\x20convert','start','resolve','writeFileSync','chmodSync','777','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','input','voice','MP3','POST','then','tmp','generate','audioContent','base64','writeFile','.wav','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','generic','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','result','source','resolvedQuery','action','actionIncomplete','fulfillment','code','metadata','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','length','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','.mp3','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','sestekNDA','nda','channelData','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','md5','path','querystring','request-promise','randomstring','sox','url','parse','util','./google'];(function(_0x37e845,_0x219f9f){var _0x59e55b=function(_0x5dc6c8){while(--_0x5dc6c8){_0x37e845['push'](_0x37e845['shift']());}};_0x59e55b(++_0x219f9f);}(_0x8096,0xf0));var _0x6809=function(_0x503cb8,_0x563af0){_0x503cb8=_0x503cb8-0x0;var _0x44fffb=_0x8096[_0x503cb8];return _0x44fffb;};'use strict';var apiai=require(_0x6809('0x0'));var BPromise=require(_0x6809('0x1'));var dialogflow=require(_0x6809('0x2'));var fs=require('fs');var http=require(_0x6809('0x3'));var https=require('https');var md5=require(_0x6809('0x4'));var path=require(_0x6809('0x5'));var querystring=require(_0x6809('0x6'));var rp=require(_0x6809('0x7'));var rs=require(_0x6809('0x8'));var sox=require(_0x6809('0x9'));var tts=require('google-tts-api');var urlParse=require(_0x6809('0xa'))[_0x6809('0xb')];var util=require(_0x6809('0xc'));var aws=require('./aws');var google=require(_0x6809('0xd'));var sestek=require(_0x6809('0xe'));var tilde=require(_0x6809('0xf'));var logger=require(_0x6809('0x10'))('agi');var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x575a32,_0x1bddc3){return new BPromise(function(_0x5d4a8b,_0x4b614b){var _0x463e49=urlParse(_0x575a32);var _0x2e6311=_0x463e49[_0x6809('0x11')]==='https:'?https:http;var _0x35ffac={'host':_0x463e49[_0x6809('0x12')],'path':_0x463e49[_0x6809('0x5')],'headers':{'user-agent':_0x6809('0x13')}};_0x2e6311[_0x6809('0x14')](_0x35ffac,function(_0x42edf9){if(_0x42edf9[_0x6809('0x15')]!==0xc8){logger[_0x6809('0x16')](_0x6809('0x17')+_0x575a32+_0x6809('0x18')+_0x42edf9['statusCode']+'\x20('+_0x42edf9[_0x6809('0x19')]+')');_0x4b614b(new Error(_0x6809('0x17')+_0x575a32+_0x6809('0x18')+_0x42edf9[_0x6809('0x15')]+'\x20('+_0x42edf9[_0x6809('0x19')]+')'));return;}var _0x13593a=fs[_0x6809('0x1a')](_0x1bddc3);_0x13593a['on']('finish',function(){logger[_0x6809('0x1b')]('finish\x20download\x20file');_0x13593a['close'](_0x5d4a8b);});_0x13593a['on'](_0x6809('0x16'),function(_0x5809f9){fs[_0x6809('0x1c')](_0x1bddc3);logger['error'](_0x6809('0x1d'),_0x5809f9);_0x4b614b(_0x5809f9);});_0x42edf9[_0x6809('0x1e')](_0x13593a);})['on'](_0x6809('0x16'),function(_0x376036){logger[_0x6809('0x16')](_0x376036);_0x4b614b(_0x376036);})['end']();});}function uploadFile(_0x263b8d){return new BPromise(function(_0x3657a6,_0xb798f5){var _0x4baf1f=urlParse(_0x263b8d);var _0x570617=_0x4baf1f[_0x6809('0x11')]===_0x6809('0x1f')?https:http;var _0x37d284={'host':_0x4baf1f['host'],'path':_0x4baf1f[_0x6809('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x570617[_0x6809('0x14')](_0x37d284,function(_0x18d4c3){if(_0x18d4c3[_0x6809('0x15')]!==0xc8){_0xb798f5(new Error(_0x6809('0x17')+_0x263b8d+_0x6809('0x18')+_0x18d4c3[_0x6809('0x15')]+'\x20('+_0x18d4c3[_0x6809('0x19')]+')'));return;}var _0x2f4fdb='';_0x18d4c3['on'](_0x6809('0x20'),function(_0x38dd19){_0x2f4fdb+=_0x38dd19;});_0x18d4c3['on'](_0x6809('0x21'),function(){_0x3657a6(_0x2f4fdb);});})['on'](_0x6809('0x16'),function(_0x5ad9e7){_0xb798f5(_0x5ad9e7);})[_0x6809('0x21')]();});}function convertFile(_0x159de5,_0x150e95){return new BPromise(function(_0x1e1c00,_0x53321d){var _0x5981d6=sox[_0x6809('0x22')](_0x159de5,_0x150e95,{'sampleRate':0x1f40,'format':_0x6809('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5981d6['on']('error',function(_0xdd3c41){logger[_0x6809('0x16')]('error\x20convert',_0xdd3c41);_0x53321d(_0xdd3c41);});_0x5981d6['on']('end',function(){logger[_0x6809('0x1b')](_0x6809('0x24'));_0x1e1c00();});_0x5981d6[_0x6809('0x25')]();});}function base64Decode(_0x482478,_0xdb8879){var _0x4d2736=path[_0x6809('0x26')](__dirname,'tmp',rs['generate'](0x4)+'.wav');fs[_0x6809('0x27')](_0x4d2736,_0x482478,'base64');return convertFile(_0x4d2736,_0xdb8879)['then'](function(){try{fs[_0x6809('0x1c')](_0x4d2736);fs[_0x6809('0x28')](_0xdb8879,_0x6809('0x29'));}catch(_0x18499e){logger[_0x6809('0x16')](_0x18499e);}return _0xdb8879[_0x6809('0x2a')]('.')[0x0];});}function base64Encode(_0x39ba0a){var _0x2d2fab=fs[_0x6809('0x2b')](_0x39ba0a);return new Buffer(_0x2d2fab)[_0x6809('0x2c')]('base64');}exports['googleCloudTTS']=function(_0x36a39b,_0x5dd03b,_0x2706dd,_0x44b7b2,_0x1ad59a,_0x416e59){var _0x5eec04,_0x52f626;var _0x515dfe=_0x6809('0x2d');var _0x58b352=_0x6809('0x2e')+_0x36a39b;var _0x92b583={};if(_0x5dd03b==='ssml'){_0x92b583[_0x6809('0x2f')]={'ssml':_0x2706dd};}else{_0x92b583['input']={'text':_0x2706dd};};_0x92b583[_0x6809('0x30')]={'languageCode':_0x44b7b2,'ssmlGender':_0x1ad59a};_0x92b583['audioConfig']={'audioEncoding':_0x6809('0x31'),'sampleRateHertz':0x1f40};var _0x27037b={'url':_0x515dfe+'text:synthesize'+_0x58b352,'method':_0x6809('0x32'),'json':!![],'body':_0x92b583};return rp(_0x27037b)[_0x6809('0x33')](function(_0x1385e2){return new BPromise(function(_0x5f1820,_0x391d94){_0x5eec04=path[_0x6809('0x26')](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+'.mp3');var _0x1eb230=Buffer['from'](_0x1385e2[_0x6809('0x36')],_0x6809('0x37'));return fs[_0x6809('0x38')](_0x5eec04,_0x1eb230,function(_0x4d3ffe){_0x391d94(_0x4d3ffe);},function(_0x166af2){fs['chmodSync'](_0x5eec04,'777');_0x5f1820(_0x166af2);});});})[_0x6809('0x33')](function(_0x4e1b64){_0x52f626=path['resolve'](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+_0x6809('0x39'));return convertFile(_0x5eec04,_0x52f626);})[_0x6809('0x33')](function(){try{fs[_0x6809('0x1c')](_0x5eec04);fs[_0x6809('0x28')](_0x52f626,_0x6809('0x29'));}catch(_0x9d128){logger[_0x6809('0x16')](_0x9d128);}logger['info'](_0x6809('0x3a'),_0x52f626['split']('.')[0x0]);return _0x52f626[_0x6809('0x2a')]('.')[0x0];});};exports[_0x6809('0x3b')]=function(_0x553137,_0x1fafd0){var _0x4f395c=_0x6809('0x3c');var _0x5ba04d,_0x461cf4;var _0x13bbdc;var _0x3edbe3={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0x4f395c,'headers':{'Content-Type':_0x6809('0x3d')},'body':_0x6809('0x3e')+encodeURIComponent(JSON[_0x6809('0x3f')]([[['jQ1olc',JSON[_0x6809('0x3f')]([_0x553137,_0x1fafd0||'en',![],'null']),null,_0x6809('0x40')]]]))};return rp(_0x3edbe3)['then'](function(_0x2298e4){try{_0x13bbdc=eval(_0x2298e4['slice'](0x5))[0x0][0x2];}catch(_0x37c5af){throw new Error(_0x6809('0x41')+_0x2298e4['data']);}if(!_0x13bbdc){if(_0x553137['length']>0xc8){throw new Error(_0x6809('0x42'));}else{throw new Error(_0x6809('0x43')+_0x1fafd0+'\x22\x20might\x20not\x20exist');}}try{_0x13bbdc=eval(_0x13bbdc)[0x0];}catch(_0x2bc9d7){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x6809('0x20')]);}const _0x5ccc97=_0x13bbdc;_0x5ba04d=path[_0x6809('0x26')](__dirname,'tmp',rs[_0x6809('0x35')](0x4)+'.mp3');fs[_0x6809('0x27')](_0x5ba04d,_0x13bbdc,{'encoding':_0x6809('0x37')});_0x461cf4=path[_0x6809('0x26')](__dirname,'tmp',rs[_0x6809('0x35')](0x4)+'.wav');return convertFile(_0x5ba04d,_0x461cf4);})[_0x6809('0x33')](function(){try{fs['unlink'](_0x5ba04d);fs[_0x6809('0x28')](_0x461cf4,_0x6809('0x29'));}catch(_0x2f7e07){logger[_0x6809('0x16')](_0x2f7e07);}logger[_0x6809('0x1b')](_0x6809('0x44'),_0x461cf4[_0x6809('0x2a')]('.')[0x0]);return _0x461cf4['split']('.')[0x0];});};exports[_0x6809('0x45')]=function(_0x155ab4,_0x58eb50,_0x4eebf1){return google[_0x6809('0x46')](_0x155ab4,_0x58eb50,_0x4eebf1)[_0x6809('0x33')](function(_0x59c6ef){logger[_0x6809('0x1b')](_0x59c6ef[_0x6809('0x47')]);return rp(_0x59c6ef);})[_0x6809('0x33')](function(_0x226765){var _0x13b6b1='';var _0x4ff550=0x0;try{fs[_0x6809('0x1c')](_0x155ab4);}catch(_0x1a87f8){logger[_0x6809('0x16')](_0x1a87f8);}if(_0x226765&&_0x226765[_0x6809('0x48')]){_0x13b6b1=_0x226765[_0x6809('0x48')][_0x6809('0x49')](function(_0x253e9a){return _0x253e9a&&_0x253e9a[_0x6809('0x4a')][0x0]&&_0x253e9a['alternatives'][0x0][_0x6809('0x4b')]?_0x253e9a[_0x6809('0x4a')][0x0]['transcript']:'';})[_0x6809('0x4c')]('\x0a');_0x4ff550=_0x226765['results'][_0x6809('0x49')](function(_0x5b8c4b){return _0x5b8c4b&&_0x5b8c4b['alternatives'][0x0]&&_0x5b8c4b[_0x6809('0x4a')][0x0]['confidence']?_0x5b8c4b[_0x6809('0x4a')][0x0]['confidence']:0x0;})['join']('\x0a');}logger['info']('googleASR\x20transcription',_0x13b6b1);logger[_0x6809('0x1b')](_0x6809('0x4d'),_0x4ff550);return{'transcript':_0x13b6b1,'confidence':_0x4ff550};})[_0x6809('0x4e')](function(_0x2d705c){logger[_0x6809('0x16')](_0x6809('0x4f'),_0x2d705c[_0x6809('0x15')],_0x2d705c[_0x6809('0x50')],_0x2d705c[_0x6809('0x51')]);});};exports['googleDialogflow']=function(_0x41dc46,_0x772266,_0x30a8fa,_0x101dea){var _0x3b2c27=apiai(_0x772266,{'language':_0x101dea||'en'});return _0x3b2c27['textRequest'](_0x30a8fa,{'sessionId':md5(_0x41dc46)})[_0x6809('0x33')](function(_0x627ff5){logger['info'](JSON[_0x6809('0x3f')](_0x627ff5));return{'source':_0x627ff5[_0x6809('0x52')][_0x6809('0x53')],'resolvedQuery':_0x627ff5['result'][_0x6809('0x54')],'action':_0x627ff5[_0x6809('0x52')][_0x6809('0x55')],'actionIncomplete':_0x627ff5[_0x6809('0x52')][_0x6809('0x56')],'speech':_0x627ff5['result'][_0x6809('0x57')]['speech'],'score':_0x627ff5[_0x6809('0x52')]['score'],'statusCode':_0x627ff5['status'][_0x6809('0x58')],'endConversation':_0x627ff5[_0x6809('0x52')]['metadata']['endConversation']||![],'isFallbackIntent':_0x627ff5[_0x6809('0x52')][_0x6809('0x59')][_0x6809('0x5a')]};});};exports['googleDialogflowV2']=function(_0x31cad4,_0x38d5cd,_0x32510b,_0x3e8c4a,_0xb03811,_0x454dc1){var _0x6fe8a2=_0x3e8c4a[_0x6809('0x5b')](/\\n/g,'\x0a');var _0x4f8f7a={'credentials':{'private_key':_0x6fe8a2,'client_email':_0x32510b}};var _0x54ff4f=new dialogflow[(_0x6809('0x5c'))](_0x4f8f7a);var _0x138ad8=_0x54ff4f[_0x6809('0x5d')](_0x38d5cd,md5(_0x31cad4));var _0x32540a={'session':_0x138ad8,'queryInput':{'text':{'text':_0xb03811,'languageCode':_0x454dc1}}};return _0x54ff4f[_0x6809('0x5e')](_0x32540a)[_0x6809('0x33')](function(_0x3d0e63){if(_0x3d0e63&&_0x3d0e63[_0x6809('0x5f')]){logger[_0x6809('0x1b')]('Dialogflow\x20V2\x20response:',JSON[_0x6809('0x3f')](_0x3d0e63));var _0xadc48e=_0x3d0e63[0x0];if(_0xadc48e){var _0x4a2b36={'action':_0xadc48e[_0x6809('0x60')][_0x6809('0x55')],'allRequiredParamsPresent':_0xadc48e[_0x6809('0x60')][_0x6809('0x61')],'endConversation':_0xadc48e[_0x6809('0x60')][_0x6809('0x62')]&&_0xadc48e['queryResult'][_0x6809('0x62')][_0x6809('0x63')]?_0xadc48e['queryResult'][_0x6809('0x62')][_0x6809('0x63')]['end_conversation'][_0x6809('0x64')]:![],'fulfillmentText':_0xadc48e[_0x6809('0x60')][_0x6809('0x65')],'intentName':_0xadc48e[_0x6809('0x60')][_0x6809('0x66')][_0x6809('0x50')],'intentDisplayName':_0xadc48e[_0x6809('0x60')][_0x6809('0x66')]['displayName'],'isFallbackIntent':_0xadc48e[_0x6809('0x60')][_0x6809('0x66')][_0x6809('0x67')],'languageCode':_0xadc48e[_0x6809('0x60')][_0x6809('0x68')],'queryText':_0xadc48e[_0x6809('0x60')][_0x6809('0x69')],'responseId':_0xadc48e[_0x6809('0x6a')],'score':_0xadc48e[_0x6809('0x60')][_0x6809('0x6b')],'speech':_0xadc48e['queryResult'][_0x6809('0x65')],'providerResponse':JSON['stringify'](_0x3d0e63)};return _0x4a2b36;}}});};exports[_0x6809('0x6c')]=function(_0x42ead3,_0x4f95a6,_0x2cb224,_0x47ca12){return tilde[_0x6809('0x46')](_0x42ead3,_0x4f95a6,_0x2cb224,_0x47ca12)[_0x6809('0x33')](function(_0x29f351){try{fs['unlink'](_0x42ead3);}catch(_0x40c60b){logger[_0x6809('0x16')](_0x40c60b);}logger[_0x6809('0x1b')](_0x6809('0x6d'),_0x29f351['transcript']);logger['info']('Tilde\x20ASR\x20confidence',_0x29f351['confidence']);return _0x29f351;});};exports[_0x6809('0x6e')]=function(_0x4fc7c6,_0x2cdd49,_0x4b44e0,_0x4af037,_0x1a6640,_0x570bf7){var _0x402fb7=path[_0x6809('0x26')](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+_0x6809('0x6f'));var _0x140632;return aws[_0x6809('0x70')](_0x4fc7c6,_0x2cdd49,_0x4b44e0,_0x4af037,_0x1a6640,_0x570bf7,_0x402fb7)[_0x6809('0x33')](function(){_0x140632=path[_0x6809('0x26')](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+_0x6809('0x39'));return convertFile(_0x402fb7,_0x140632);})[_0x6809('0x33')](function(){try{fs[_0x6809('0x1c')](_0x402fb7);fs['chmodSync'](_0x140632,_0x6809('0x29'));}catch(_0x338bde){logger[_0x6809('0x16')](_0x338bde);}return _0x140632['split']('.')[0x0];});};exports[_0x6809('0x71')]=function(_0x1e6a49,_0x206817,_0x28e977,_0x724784,_0x41c8da,_0x84c5e){return aws[_0x6809('0x72')](_0x1e6a49,_0x206817,_0x28e977,_0x724784,_0x41c8da,_0x84c5e)[_0x6809('0x33')](function(_0x5d99ab){logger[_0x6809('0x1b')](JSON['stringify'](_0x5d99ab));return _0x5d99ab;});};exports[_0x6809('0x73')]=function(_0x3adeb3,_0x1da21e,_0x3c1c31,_0x277e6f){var _0x409d82=util[_0x6809('0x74')](_0x6809('0x75'),ISPEECH_API,_0x3adeb3,encodeURIComponent(_0x1da21e),_0x3c1c31,_0x277e6f);var _0x3b5524=path['resolve'](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+_0x6809('0x6f'));var _0x30f5d5;return downloadFile(_0x409d82,_0x3b5524)[_0x6809('0x33')](function(){_0x30f5d5=path[_0x6809('0x26')](__dirname,_0x6809('0x34'),rs['generate'](0x4)+'.wav');return convertFile(_0x3b5524,_0x30f5d5);})[_0x6809('0x33')](function(){try{fs[_0x6809('0x1c')](_0x3b5524);fs[_0x6809('0x28')](_0x30f5d5,_0x6809('0x29'));}catch(_0x2c53e3){logger[_0x6809('0x16')](_0x2c53e3);}return _0x30f5d5[_0x6809('0x2a')]('.')[0x0];});};exports[_0x6809('0x76')]=function(_0x3df6fa,_0x50387a,_0x1c33be,_0x5a45ea){var _0x244c7d=util[_0x6809('0x74')](_0x6809('0x77'),ISPEECH_API,_0x50387a,_0x1c33be,base64Encode(_0x3df6fa),_0x5a45ea?util[_0x6809('0x74')]('model=%s',encodeURIComponent(_0x5a45ea)):'freeform=3');return uploadFile(_0x244c7d)[_0x6809('0x33')](function(_0x293d1e){return querystring['parse'](_0x293d1e);});};exports[_0x6809('0x78')]=function(_0x2d5e0e,_0x410153){return sestek[_0x6809('0x79')](_0x2d5e0e,_0x410153)[_0x6809('0x33')](function(_0xc5fea1){logger['info'](JSON[_0x6809('0x3f')](_0xc5fea1));var _0x2c6571={'speech':_0xc5fea1['text'],'action':_0xc5fea1[_0x6809('0x7a')]?_0xc5fea1[_0x6809('0x7a')]['CustomAction']:undefined,'actiondata':_0xc5fea1[_0x6809('0x7a')]?_0xc5fea1['channelData'][_0x6809('0x7b')]:undefined};if(_0xc5fea1[_0x6809('0x7a')]&&_0xc5fea1[_0x6809('0x7a')][_0x6809('0x7c')]){return base64Decode(_0xc5fea1['channelData']['AudioFromTts']['Data'],path['resolve'](__dirname,_0x6809('0x34'),rs[_0x6809('0x35')](0x4)+_0x6809('0x39')))[_0x6809('0x33')](function(_0x11e70d){_0x2c6571[_0x6809('0x7d')]=_0x11e70d;return _0x2c6571;});}return _0x2c6571;});};exports[_0x6809('0x7e')]=function(){return __dirname;};
\ No newline at end of file
index 9577566..8f34e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85c6=['./nda'];(function(_0x32cd29,_0x29f6bb){var _0x2f7e6e=function(_0x20a924){while(--_0x20a924){_0x32cd29['push'](_0x32cd29['shift']());}};_0x2f7e6e(++_0x29f6bb);}(_0x85c6,0xe0));var _0x685c=function(_0x22afff,_0x2d3a32){_0x22afff=_0x22afff-0x0;var _0x3d1392=_0x85c6[_0x22afff];return _0x3d1392;};var nda=require(_0x685c('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
+var nda=require('./nda');module['exports']={'nda':nda};
\ No newline at end of file
index 009753d..adc8ef7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b8a=['text','Bearer\x20','body','ProjectName','project','channelData','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','info','stringify','url','agi','exports','POST','resolve','ndauth_url','/token','password','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','dnid','extension'];(function(_0x3bd2ab,_0x133f0f){var _0x3dd462=function(_0x3239c9){while(--_0x3239c9){_0x3bd2ab['push'](_0x3bd2ab['shift']());}};_0x3dd462(++_0x133f0f);}(_0x4b8a,0xd3));var _0xa4b8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b8a[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require('request-promise');var url=require(_0xa4b8('0x0'));var logger=require('../../../../../config/logger')(_0xa4b8('0x1'));module[_0xa4b8('0x2')]=function(_0x20eea6,_0x34c820){var _0x2cfc6c={'method':_0xa4b8('0x3'),'uri':url[_0xa4b8('0x4')](_0x34c820[_0xa4b8('0x5')],_0xa4b8('0x6')),'form':{'grant_type':_0xa4b8('0x7'),'username':_0x34c820[_0xa4b8('0x8')],'password':_0x34c820[_0xa4b8('0x7')]},'json':!![]};return rp(_0x2cfc6c)[_0xa4b8('0x9')](function(_0x1fea78){var _0x517970={'method':_0xa4b8('0x3'),'uri':url[_0xa4b8('0x4')](_0x34c820[_0xa4b8('0xa')],_0xa4b8('0xb')),'body':{'type':_0x34c820[_0xa4b8('0xc')]||_0xa4b8('0xd'),'channelId':_0xa4b8('0xe'),'conversation':{'id':_0x20eea6[_0xa4b8('0xf')]},'from':{'id':_0x20eea6[_0xa4b8('0x10')],'name':_0x20eea6[_0xa4b8('0x11')]},'recipient':{'id':_0x20eea6[_0xa4b8('0x12')],'name':_0x20eea6[_0xa4b8('0x13')]},'text':_0x34c820[_0xa4b8('0x14')],'channelData':{}},'headers':{'Authorization':_0xa4b8('0x15')+_0x1fea78['access_token']},'json':!![]};if(_0x34c820['project']){_0x517970[_0xa4b8('0x16')]['channelData'][_0xa4b8('0x17')]=_0x34c820[_0xa4b8('0x18')];}if(_0x34c820['ndagenerate_audio']=='1'){_0x517970[_0xa4b8('0x16')][_0xa4b8('0x19')][_0xa4b8('0x1a')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xa4b8('0x1b')};}if(_0x34c820[_0xa4b8('0x1c')]){_0x517970[_0xa4b8('0x16')][_0xa4b8('0x19')][_0xa4b8('0x1d')]=_0x34c820[_0xa4b8('0x1c')];if(_0x34c820['custom_action_data']){_0x517970[_0xa4b8('0x16')][_0xa4b8('0x19')]['CustomActionData']=_0x34c820[_0xa4b8('0x1e')];}}logger[_0xa4b8('0x1f')](JSON[_0xa4b8('0x20')](_0x517970));return rp(_0x517970);});};
\ No newline at end of file
+var _0xb377=['ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','calleridname','text','Bearer\x20','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','password'];(function(_0x56c5c0,_0x2901e6){var _0x3610b8=function(_0x3a1958){while(--_0x3a1958){_0x56c5c0['push'](_0x56c5c0['shift']());}};_0x3610b8(++_0x2901e6);}(_0xb377,0x1b6));var _0x7b37=function(_0x148ea7,_0x3f2a3f){_0x148ea7=_0x148ea7-0x0;var _0xaddef8=_0xb377[_0x148ea7];return _0xaddef8;};'use strict';var rp=require(_0x7b37('0x0'));var url=require(_0x7b37('0x1'));var logger=require(_0x7b37('0x2'))(_0x7b37('0x3'));module[_0x7b37('0x4')]=function(_0x36868b,_0x15bc68){var _0x3c4851={'method':_0x7b37('0x5'),'uri':url[_0x7b37('0x6')](_0x15bc68[_0x7b37('0x7')],_0x7b37('0x8')),'form':{'grant_type':'password','username':_0x15bc68['username'],'password':_0x15bc68[_0x7b37('0x9')]},'json':!![]};return rp(_0x3c4851)['then'](function(_0x5afdb8){var _0x3de992={'method':_0x7b37('0x5'),'uri':url[_0x7b37('0x6')](_0x15bc68[_0x7b37('0xa')],_0x7b37('0xb')),'body':{'type':_0x15bc68[_0x7b37('0xc')]||_0x7b37('0xd'),'channelId':_0x7b37('0xe'),'conversation':{'id':_0x36868b['uniqueid']},'from':{'id':_0x36868b[_0x7b37('0xf')],'name':_0x36868b[_0x7b37('0x10')]},'recipient':{'id':_0x36868b['dnid'],'name':_0x36868b['extension']},'text':_0x15bc68[_0x7b37('0x11')],'channelData':{}},'headers':{'Authorization':_0x7b37('0x12')+_0x5afdb8[_0x7b37('0x13')]},'json':!![]};if(_0x15bc68[_0x7b37('0x14')]){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x17')]=_0x15bc68[_0x7b37('0x14')];}if(_0x15bc68[_0x7b37('0x18')]=='1'){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x7b37('0x1a')};}if(_0x15bc68[_0x7b37('0x1b')]){_0x3de992[_0x7b37('0x15')][_0x7b37('0x16')][_0x7b37('0x1c')]=_0x15bc68['custom_action'];if(_0x15bc68['custom_action_data']){_0x3de992[_0x7b37('0x15')]['channelData']['CustomActionData']=_0x15bc68[_0x7b37('0x1d')];}}logger[_0x7b37('0x1e')](JSON[_0x7b37('0x1f')](_0x3de992));return rp(_0x3de992);});};
\ No newline at end of file
index 5af9d2d..08dd53b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d51=['exports','./lib/api'];(function(_0x7495b4,_0x553cf8){var _0x5b64ea=function(_0x4dae3d){while(--_0x4dae3d){_0x7495b4['push'](_0x7495b4['shift']());}};_0x5b64ea(++_0x553cf8);}(_0x4d51,0x1f3));var _0x14d5=function(_0x487fb0,_0x3cf91e){_0x487fb0=_0x487fb0-0x0;var _0x5840c0=_0x4d51[_0x487fb0];return _0x5840c0;};'use strict';var asr=require(_0x14d5('0x0'));module[_0x14d5('0x1')]=function(_0x36fbe0,_0xb5f901,_0x685a6a,_0x107b5a){return asr(_0x36fbe0,_0xb5f901,_0x685a6a,_0x107b5a);};
\ No newline at end of file
+var _0xe532=['exports'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0xe532,0x145));var _0x2e53=function(_0xa3463d,_0x32f8da){_0xa3463d=_0xa3463d-0x0;var _0x50fd67=_0xe532[_0xa3463d];return _0x50fd67;};'use strict';var asr=require('./lib/api');module[_0x2e53('0x0')]=function(_0x5d9d88,_0x4e4128,_0x209234,_0x3dbbdf){return asr(_0x5d9d88,_0x4e4128,_0x209234,_0x3dbbdf);};
\ No newline at end of file
index e774f85..1d34ded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd29=['message','lodash','moment','crypto','../../../../../../config/logger','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','info','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','data','send','EOS','error','terminate','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','open'];(function(_0x11aee5,_0x27fa94){var _0x2e8c9d=function(_0x33ff83){while(--_0x33ff83){_0x11aee5['push'](_0x11aee5['shift']());}};_0x2e8c9d(++_0x27fa94);}(_0xbd29,0x76));var _0x9bd2=function(_0x5886c7,_0x7d36c1){_0x5886c7=_0x5886c7-0x0;var _0x521027=_0xbd29[_0x5886c7];return _0x521027;};'use strict';var BPromise=require('bluebird');var _=require(_0x9bd2('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x9bd2('0x1'));var crypto=require(_0x9bd2('0x2'));var logger=require(_0x9bd2('0x3'))('agi');module['exports']=function(_0x8d0981,_0x3190d5,_0x428638,_0x2d84e5){return new BPromise(function(_0x3764e8,_0xb54551){logger['info'](_0x9bd2('0x4'),_0x2d84e5||_0x9bd2('0x5'));var _0x5f2c00=new WebSocket(_0x2d84e5||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x23060c='';var _0x5e64eb='0';var _0x11b402='1';var _0x562727=_0x9bd2('0x6');function _0x4bc327(_0x4d7c1a){var _0x5e70fc=crypto[_0x9bd2('0x7')](_0x9bd2('0x8'));_0x5e70fc[_0x9bd2('0x9')](_0x4d7c1a);return _0x5e70fc[_0x9bd2('0xa')](_0x9bd2('0xb'));}function _0x2b9220(){try{logger[_0x9bd2('0xc')](_0x9bd2('0xd'));var _0x331c1d=moment()[_0x9bd2('0xe')]();var _0x385a3d=_0x4bc327(_0x331c1d+_0x3190d5+_0x428638);_0x5f2c00['send'](JSON[_0x9bd2('0xf')]({'appID':_0x3190d5,'timestamp':_0x331c1d,'appKey':_0x385a3d}));var _0x73d0b3=fs[_0x9bd2('0x10')](_0x8d0981);_0x73d0b3['on'](_0x9bd2('0x11'),function(_0x9c8464){_0x5f2c00[_0x9bd2('0x12')](_0x9c8464);});_0x73d0b3['on']('close',function(){_0x5f2c00['send'](_0x9bd2('0x13'));});}catch(_0x57862c){logger[_0x9bd2('0x14')]('Tilde\x20ASR\x20send\x20error',JSON[_0x9bd2('0xf')](_0x57862c));_0x5f2c00[_0x9bd2('0x15')]();}}function _0x13acbc(_0x8bf55f){try{if(_0x8bf55f){var _0x3416bb=JSON['parse'](_0x8bf55f);switch(_0x3416bb[_0x9bd2('0x16')]){case 0x0:if(_0x3416bb[_0x9bd2('0x17')]){if(_0x3416bb[_0x9bd2('0x17')][_0x9bd2('0x18')]){logger[_0x9bd2('0xc')](_0x9bd2('0x19'),JSON[_0x9bd2('0xf')](_0x3416bb[_0x9bd2('0x17')][_0x9bd2('0x1a')]));_0x23060c=_0x3416bb[_0x9bd2('0x17')][_0x9bd2('0x1a')][0x0][_0x9bd2('0x1b')];_0x5e64eb=_0x3416bb[_0x9bd2('0x17')][_0x9bd2('0x1a')][0x0][_0x9bd2('0x1c')];_0x11b402='0';_0x562727=_0x9bd2('0x1d');_0x5f2c00[_0x9bd2('0x15')]();}}break;case 0x1:logger[_0x9bd2('0xc')](_0x9bd2('0x6'));_0x11b402='1';_0x562727='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0x9bd2('0xc')](_0x9bd2('0x1e'));_0x11b402='2';_0x562727='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x9bd2('0xc')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x11b402='9';_0x562727=_0x9bd2('0x1f');break;case 0xa:logger['info'](_0x9bd2('0x20'));_0x11b402='10';_0x562727=_0x9bd2('0x20');break;case 0xb:logger[_0x9bd2('0xc')](_0x9bd2('0x21'));_0x11b402='11';_0x562727=_0x9bd2('0x21');}}}catch(_0x495f7f){logger[_0x9bd2('0x14')]('Tilde\x20ASR\x20parse\x20error',JSON[_0x9bd2('0xf')](_0x495f7f));_0x5f2c00[_0x9bd2('0x15')]();}}function _0x3e8d5e(){logger[_0x9bd2('0xc')](_0x9bd2('0x22'));_0x3764e8({'transcript':_0x23060c,'confidence':_0x5e64eb,'status':_0x11b402,'status_message':_0x562727});}function _0x21545c(_0x33fd7d){logger['error'](_0x9bd2('0x23'));if(!_[_0x9bd2('0x24')](_0x33fd7d)){logger['error'](_['isObject'](_0x33fd7d)?JSON[_0x9bd2('0xf')](_0x33fd7d):_0x33fd7d);}}_0x5f2c00['on'](_0x9bd2('0x25'),_0x2b9220);_0x5f2c00['on'](_0x9bd2('0x26'),_0x13acbc);_0x5f2c00['on']('close',_0x3e8d5e);_0x5f2c00['on'](_0x9bd2('0x14'),_0x21545c);});};
\ No newline at end of file
+var _0x1dce=['close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','info','stringify','hypotheses','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','isNil','isObject','message','bluebird','moment','crypto','../../../../../../config/logger','agi','exports','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','createReadStream','data'];(function(_0xcab924,_0xe5cafb){var _0x3ff985=function(_0x43ac4e){while(--_0x43ac4e){_0xcab924['push'](_0xcab924['shift']());}};_0x3ff985(++_0xe5cafb);}(_0x1dce,0x1a7));var _0xe1dc=function(_0xfc8852,_0x2cf598){_0xfc8852=_0xfc8852-0x0;var _0x513d2e=_0x1dce[_0xfc8852];return _0x513d2e;};'use strict';var BPromise=require(_0xe1dc('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xe1dc('0x1'));var crypto=require(_0xe1dc('0x2'));var logger=require(_0xe1dc('0x3'))(_0xe1dc('0x4'));module[_0xe1dc('0x5')]=function(_0x147a8d,_0x1a0985,_0x39b737,_0x883b5f){return new BPromise(function(_0x38ff1a,_0x219b76){logger['info']('Tilde\x20URI',_0x883b5f||_0xe1dc('0x6'));var _0x580332=new WebSocket(_0x883b5f||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x30294f='';var _0xd241a9='0';var _0x249b79='1';var _0x383af6='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x4f4426(_0x445e54){var _0x44bce9=crypto[_0xe1dc('0x7')](_0xe1dc('0x8'));_0x44bce9[_0xe1dc('0x9')](_0x445e54);return _0x44bce9[_0xe1dc('0xa')](_0xe1dc('0xb'));}function _0xf80fa5(){try{logger['info'](_0xe1dc('0xc'));var _0x22a819=moment()[_0xe1dc('0xd')]();var _0xd8f907=_0x4f4426(_0x22a819+_0x1a0985+_0x39b737);_0x580332[_0xe1dc('0xe')](JSON['stringify']({'appID':_0x1a0985,'timestamp':_0x22a819,'appKey':_0xd8f907}));var _0x169831=fs[_0xe1dc('0xf')](_0x147a8d);_0x169831['on'](_0xe1dc('0x10'),function(_0x3b3151){_0x580332['send'](_0x3b3151);});_0x169831['on'](_0xe1dc('0x11'),function(){_0x580332['send'](_0xe1dc('0x12'));});}catch(_0xecd770){logger[_0xe1dc('0x13')](_0xe1dc('0x14'),JSON['stringify'](_0xecd770));_0x580332[_0xe1dc('0x15')]();}}function _0x4ddf3a(_0x5f4677){try{if(_0x5f4677){var _0x13d92d=JSON[_0xe1dc('0x16')](_0x5f4677);switch(_0x13d92d[_0xe1dc('0x17')]){case 0x0:if(_0x13d92d[_0xe1dc('0x18')]){if(_0x13d92d['result'][_0xe1dc('0x19')]){logger[_0xe1dc('0x1a')]('Tilde\x20ASR\x20hypoteses',JSON[_0xe1dc('0x1b')](_0x13d92d[_0xe1dc('0x18')][_0xe1dc('0x1c')]));_0x30294f=_0x13d92d[_0xe1dc('0x18')][_0xe1dc('0x1c')][0x0]['transcript'];_0xd241a9=_0x13d92d[_0xe1dc('0x18')][_0xe1dc('0x1c')][0x0][_0xe1dc('0x1d')];_0x249b79='0';_0x383af6=_0xe1dc('0x1e');_0x580332[_0xe1dc('0x15')]();}}break;case 0x1:logger['info']('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x249b79='1';_0x383af6='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger['info'](_0xe1dc('0x1f'));_0x249b79='2';_0x383af6='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0xe1dc('0x1a')](_0xe1dc('0x20'));_0x249b79='9';_0x383af6=_0xe1dc('0x20');break;case 0xa:logger[_0xe1dc('0x1a')](_0xe1dc('0x21'));_0x249b79='10';_0x383af6=_0xe1dc('0x21');break;case 0xb:logger[_0xe1dc('0x1a')](_0xe1dc('0x22'));_0x249b79='11';_0x383af6=_0xe1dc('0x22');}}}catch(_0x58e497){logger[_0xe1dc('0x13')](_0xe1dc('0x23'),JSON['stringify'](_0x58e497));_0x580332[_0xe1dc('0x15')]();}}function _0x1b11b4(){logger[_0xe1dc('0x1a')](_0xe1dc('0x24'));_0x38ff1a({'transcript':_0x30294f,'confidence':_0xd241a9,'status':_0x249b79,'status_message':_0x383af6});}function _0x286c03(_0x4ff25d){logger[_0xe1dc('0x13')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0xe1dc('0x25')](_0x4ff25d)){logger[_0xe1dc('0x13')](_[_0xe1dc('0x26')](_0x4ff25d)?JSON[_0xe1dc('0x1b')](_0x4ff25d):_0x4ff25d);}}_0x580332['on']('open',_0xf80fa5);_0x580332['on'](_0xe1dc('0x27'),_0x4ddf3a);_0x580332['on']('close',_0x1b11b4);_0x580332['on'](_0xe1dc('0x13'),_0x286c03);});};
\ No newline at end of file
index c00fdfd..56c4afd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3136=['./asr'];(function(_0x386613,_0x4a005a){var _0x42c55d=function(_0x2702ce){while(--_0x2702ce){_0x386613['push'](_0x386613['shift']());}};_0x42c55d(++_0x4a005a);}(_0x3136,0x8a));var _0x6313=function(_0x1206ba,_0x5654b7){_0x1206ba=_0x1206ba-0x0;var _0x55c854=_0x3136[_0x1206ba];return _0x55c854;};var asr=require(_0x6313('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0x54fa=['exports','./asr'];(function(_0xa7f58b,_0xf501d3){var _0x53b602=function(_0x359cd2){while(--_0x359cd2){_0xa7f58b['push'](_0xa7f58b['shift']());}};_0x53b602(++_0xf501d3);}(_0x54fa,0x6f));var _0xa54f=function(_0x5a488c,_0x4cc470){_0x5a488c=_0x5a488c-0x0;var _0x53a7d6=_0x54fa[_0x5a488c];return _0x53a7d6;};var asr=require(_0xa54f('0x0'));module[_0xa54f('0x1')]={'asr':asr};
\ No newline at end of file
index 25f6e23..afef00e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41f4=['destroy','error','code','close','exports','util','net','events','EventEmitter','./error','127.0.0.1','emit','E_AGI_ARGUMENT_PORT','createServer','listen','listening','connection','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED'];(function(_0x58136e,_0x2fcfc3){var _0x3bace3=function(_0x261a05){while(--_0x261a05){_0x58136e['push'](_0x58136e['shift']());}};_0x3bace3(++_0x2fcfc3);}(_0x41f4,0x1cd));var _0x441f=function(_0x334c13,_0x106041){_0x334c13=_0x334c13-0x0;var _0x432975=_0x41f4[_0x334c13];return _0x432975;};'use strict';var util=require(_0x441f('0x0'));var net=require(_0x441f('0x1'));var EventEmitter=require(_0x441f('0x2'))[_0x441f('0x3')];var AGIError=require(_0x441f('0x4'));var AGIChannel=require('./channel');var AGIServer=function(_0x4a9bfa,_0x2e1908,_0x1a8d29){var _0x4cba0d=this,_0x4a9bfa=_0x4a9bfa||0x11dd,_0x2e1908=_0x2e1908||_0x441f('0x5'),_0x568eb3=null,_0x5511fd=0x0;EventEmitter['call'](_0x4cba0d);function _0x330ea3(){if(!_0x4a9bfa){_0x4cba0d[_0x441f('0x6')]('error',new AGIError(_0x441f('0x7')));return![];}_0x568eb3=net[_0x441f('0x8')]();_0x568eb3[_0x441f('0x9')](_0x4a9bfa,_0x2e1908);_0x568eb3['on'](_0x441f('0xa'),function(){_0x4cba0d[_0x441f('0x6')](_0x441f('0xa'));});_0x568eb3['on'](_0x441f('0xb'),function(_0x178489){_0x568eb3['getConnections'](function(_0xedb9bf,_0x20ad28){if(_0xedb9bf){_0x4cba0d['emit']('error',new AGIError(_0x441f('0xc'),_0xedb9bf));}else if(_0x1a8d29&&_0x1a8d29<0x0){_0x4cba0d[_0x441f('0x6')]('error',new AGIError(_0x441f('0xd')));_0x178489[_0x441f('0xe')]();}else if(_0x1a8d29&&_0x1a8d29>0x0&&_0x1a8d29<_0x20ad28){_0x5511fd+=0x1;_0x4cba0d[_0x441f('0x6')](_0x441f('0xf'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x5511fd));_0x178489['destroy']();}else{var _0x39add8=new AGIChannel(_0x178489);_0x39add8['on']('ready',function(){_0x4cba0d['emit'](_0x441f('0xb'),_0x39add8);});}});});_0x568eb3['on'](_0x441f('0xf'),function(_0x4cb480){_0x4cba0d[_0x441f('0x6')]('error',new AGIError(_0x441f('0xc'),_0x4cb480[_0x441f('0x10')]));});_0x568eb3['on'](_0x441f('0x11'),function(){_0x4cba0d[_0x441f('0x6')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process['nextTick'](function(){_0x330ea3();});};util['inherits'](AGIServer,EventEmitter);module[_0x441f('0x12')]=function(_0x4fed88,_0xce1d75,_0x53e082){return new AGIServer(_0x4fed88,_0xce1d75,_0x53e082);};
\ No newline at end of file
+var _0xc9a5=['code','close','E_AGI_SERVER_CLOSE','inherits','exports','util','net','events','EventEmitter','./channel','call','emit','error','E_AGI_ARGUMENT_PORT','listen','listening','connection','E_AGI_SERVER_ERROR','destroy','ready'];(function(_0x18d3df,_0x19b39f){var _0x19a1fe=function(_0x910ec8){while(--_0x910ec8){_0x18d3df['push'](_0x18d3df['shift']());}};_0x19a1fe(++_0x19b39f);}(_0xc9a5,0x7d));var _0x5c9a=function(_0x40dca2,_0x4d9a8a){_0x40dca2=_0x40dca2-0x0;var _0x1a8cca=_0xc9a5[_0x40dca2];return _0x1a8cca;};'use strict';var util=require(_0x5c9a('0x0'));var net=require(_0x5c9a('0x1'));var EventEmitter=require(_0x5c9a('0x2'))[_0x5c9a('0x3')];var AGIError=require('./error');var AGIChannel=require(_0x5c9a('0x4'));var AGIServer=function(_0x5cbcf4,_0x12fd9a,_0xc8c454){var _0x1e2715=this,_0x5cbcf4=_0x5cbcf4||0x11dd,_0x12fd9a=_0x12fd9a||'127.0.0.1',_0x4f5502=null,_0x39248b=0x0;EventEmitter[_0x5c9a('0x5')](_0x1e2715);function _0x499e82(){if(!_0x5cbcf4){_0x1e2715[_0x5c9a('0x6')](_0x5c9a('0x7'),new AGIError(_0x5c9a('0x8')));return![];}_0x4f5502=net['createServer']();_0x4f5502[_0x5c9a('0x9')](_0x5cbcf4,_0x12fd9a);_0x4f5502['on'](_0x5c9a('0xa'),function(){_0x1e2715['emit'](_0x5c9a('0xa'));});_0x4f5502['on'](_0x5c9a('0xb'),function(_0x2ca9f8){_0x4f5502['getConnections'](function(_0x2edb14,_0x511f78){if(_0x2edb14){_0x1e2715[_0x5c9a('0x6')]('error',new AGIError(_0x5c9a('0xc'),_0x2edb14));}else if(_0xc8c454&&_0xc8c454<0x0){_0x1e2715[_0x5c9a('0x6')](_0x5c9a('0x7'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x2ca9f8[_0x5c9a('0xd')]();}else if(_0xc8c454&&_0xc8c454>0x0&&_0xc8c454<_0x511f78){_0x39248b+=0x1;_0x1e2715[_0x5c9a('0x6')](_0x5c9a('0x7'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x39248b));_0x2ca9f8[_0x5c9a('0xd')]();}else{var _0x443526=new AGIChannel(_0x2ca9f8);_0x443526['on'](_0x5c9a('0xe'),function(){_0x1e2715[_0x5c9a('0x6')]('connection',_0x443526);});}});});_0x4f5502['on']('error',function(_0x44ee05){_0x1e2715[_0x5c9a('0x6')](_0x5c9a('0x7'),new AGIError('E_AGI_SERVER_ERROR',_0x44ee05[_0x5c9a('0xf')]));});_0x4f5502['on'](_0x5c9a('0x10'),function(){_0x1e2715[_0x5c9a('0x6')](_0x5c9a('0x10'),new AGIError(_0x5c9a('0x11')));});}process['nextTick'](function(){_0x499e82();});};util[_0x5c9a('0x12')](AGIServer,EventEmitter);module[_0x5c9a('0x13')]=function(_0x2a2914,_0x48fe26,_0x267586){return new AGIServer(_0x2a2914,_0x48fe26,_0x267586);};
\ No newline at end of file
index 744ec83..dc53ed5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0b2=['google_asr_language','tildeASR','appid','clear','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','saveRestApiResult','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','maxRetry','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','noop','no\x20text\x20configured','options','exec','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','scheduledAt','delay','add','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','no\x20grammar\x20configured','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','getSquareOdbc','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','SIP/%s','opts','Executed\x20command\x20%s','DIAL','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','toUpperCase','speech','out','Dialogflow\x20Result\x20%s','dialogflowV2','no\x20client_email\x20configured','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','providerResponse','DIALOGFLOW_%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','no\x20variable\x20found','hiddendigitsnum','generate','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','.wav','aws\x20Polly\x20is\x20unreachable','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','wav','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','no\x20condition\x20configured','condition','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','true','false','hangup','ispeechasr','%s/recordings/%s','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','Enter\x20in\x20LOGOUT\x20(%s)\x20block','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','record','Enter\x20in\x20RECORD\x20(%s)\x20block','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','statusMessage','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','saynumber','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','email','bcc','subject','service','host','port','secure','authentication','auth','user','pass','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\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','Answer','Skipped\x20Answer','no\x20subproject\x20selected','project_id','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','mailbox','VOICEMAIL','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','path','util','randomstring','mustache','request-promise','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','menu','getsecretdigits','channel','rpc','getVariable','getVariableById','then','name','getVoiceQueue','getVoiceQueueById','getSquareProject','getSquareProjectById','catch','prototype','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundPath','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','IntervalId','map','Intervals','interval','format','%s/sounds/converted/%s','getQueryOdbc','open','error','info','ODBC\x20connection\x20successfully','query','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','agicommand','callerid','createSquareRecording','calleridname','context','extension','priority','accountcode','dnid','arg_1','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MP3','googleTTS','url','method','timeout','number','includes','POST','body','headers','parse','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','500\x20-\x20Internal\x20Server\x20Error','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','model','awsPolly','aws_access_key_id','aws_secret_access_key','Amy','aws_text_type','awsLex','aws_lex_region','googleASR'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xa0b2,0x14f));var _0x2a0b=function(_0x2300c7,_0x255f74){_0x2300c7=_0x2300c7-0x0;var _0x23f720=_0xa0b2[_0x2300c7];return _0x23f720;};'use strict';var fs=require('fs');var path=require(_0x2a0b('0x0'));var util=require(_0x2a0b('0x1'));var _=require('lodash');var sh=require('shelljs');var odbc=require('odbc')();var rs=require(_0x2a0b('0x2'));var moment=require('moment');var Mustache=require(_0x2a0b('0x3'));var rp=require(_0x2a0b('0x4'));var logger=require(_0x2a0b('0x5'))(_0x2a0b('0x6'));var config=require(_0x2a0b('0x7'));var scripts=require(_0x2a0b('0x8'));var FILES_PATH=_0x2a0b('0x9');var recursiveMapAttributes=[_0x2a0b('0xa'),'rawBody'];var verticesWithRetry=[_0x2a0b('0xb'),'getdigits',_0x2a0b('0xc')];var AGIVertices=function(_0xbdc769,_0x182f13,_0x299184){this[_0x2a0b('0xd')]=_0xbdc769;this[_0x2a0b('0xe')]=_0x182f13;this['mailRpc']=_0x299184;};AGIVertices['prototype'][_0x2a0b('0xf')]=function(_0x460b92,_0x6ea87a){this[_0x2a0b('0xe')][_0x2a0b('0x10')](_0x460b92)[_0x2a0b('0x11')](function(_0x3bc3a0){_0x6ea87a(null,_0x3bc3a0?_0x3bc3a0[_0x2a0b('0x12')]:![]);})['catch'](function(_0x207e80){_0x6ea87a(_0x207e80);});};AGIVertices['prototype'][_0x2a0b('0x13')]=function(_0x5e8a1f,_0x37f768){this[_0x2a0b('0xe')][_0x2a0b('0x14')](_0x5e8a1f)[_0x2a0b('0x11')](function(_0x1778bf){_0x37f768(null,_0x1778bf?_0x1778bf[_0x2a0b('0x12')]:![]);})['catch'](function(_0x23f354){_0x37f768(_0x23f354);});};AGIVertices['prototype'][_0x2a0b('0x15')]=function(_0x526132,_0x3dc478){this[_0x2a0b('0xe')][_0x2a0b('0x16')](_0x526132)[_0x2a0b('0x11')](function(_0x2bea7a){_0x3dc478(null,_0x2bea7a?_0x2bea7a[_0x2a0b('0x12')]:![]);})[_0x2a0b('0x17')](function(_0x3ce59f){_0x3dc478(_0x3ce59f);});};AGIVertices[_0x2a0b('0x18')]['getSquareOdbc']=function(_0x51bd2c,_0x45efb7){this[_0x2a0b('0xe')]['getSquareOdbcById'](_0x51bd2c)[_0x2a0b('0x11')](function(_0x300829){_0x45efb7(null,_0x300829?_0x300829[_0x2a0b('0x19')]:![]);})[_0x2a0b('0x17')](function(_0x86712e){_0x45efb7(_0x86712e);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x1a')]=function(_0x268a08,_0x20c9ca){this['rpc'][_0x2a0b('0x1b')](_0x268a08)[_0x2a0b('0x11')](function(_0x2ce9d6){_0x20c9ca(null,_0x2ce9d6?_0x2ce9d6['name']:![]);})[_0x2a0b('0x17')](function(_0x4eb2c7){_0x20c9ca(_0x4eb2c7);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x1c')]=function(_0x3d73cf,_0x5412e4){this[_0x2a0b('0xe')][_0x2a0b('0x1d')](_0x3d73cf)[_0x2a0b('0x11')](function(_0x530916){_0x5412e4(null,_0x530916?_0x530916[_0x2a0b('0x12')]:![]);})[_0x2a0b('0x17')](function(_0x3e7082){_0x5412e4(_0x3e7082);});};AGIVertices['prototype'][_0x2a0b('0x1e')]=function(_0x4c3b2a,_0x247e09){var _0x580204=this;this[_0x2a0b('0xe')]['getSoundById'](_0x4c3b2a)[_0x2a0b('0x11')](function(_0x53c46b){_0x247e09(null,_0x53c46b?_0x580204[_0x2a0b('0x1f')](_0x53c46b['save_name']):![]);})[_0x2a0b('0x17')](function(_0x2aab39){_0x247e09(_0x2aab39);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x20')]=function(_0x8ba38,_0x1401d4){this['rpc'][_0x2a0b('0x21')](_0x8ba38)['then'](function(_0x450fb4){_0x1401d4(null,_0x450fb4?_0x450fb4:![]);})[_0x2a0b('0x17')](function(_0x455687){_0x1401d4(_0x455687);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x22')]=function(_0x3a498a,_0x145c33,_0x40ee99){this['mailRpc'][_0x2a0b('0x22')](_0x3a498a,_0x145c33)[_0x2a0b('0x11')](function(){_0x40ee99(null);})[_0x2a0b('0x17')](function(_0x2261de){_0x40ee99(_0x2261de);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x23')]=function(_0x1eb1c0,_0x41894e){this[_0x2a0b('0xe')]['getIntervalById'](_0x1eb1c0)[_0x2a0b('0x11')](function(_0x2d318c){if(_0x2d318c){if(_0x2d318c[_0x2a0b('0x24')]){_0x41894e(null,[_0x2d318c['interval']]);}else{_0x41894e(null,_[_0x2a0b('0x25')](_0x2d318c[_0x2a0b('0x26')],_0x2a0b('0x27')));}}else{_0x41894e(null,![]);}})[_0x2a0b('0x17')](function(_0x51f3af){_0x41894e(_0x51f3af);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x1f')]=function(_0x122637){return util[_0x2a0b('0x28')](_0x2a0b('0x29'),FILES_PATH,_0x122637);};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x2a')]=function(_0x5293b9,_0x566402,_0xc6a323){odbc[_0x2a0b('0x2b')](_0x5293b9,function(_0x1723e5){if(_0x1723e5){logger[_0x2a0b('0x2c')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x1723e5);_0xc6a323(_0x1723e5);}else{logger[_0x2a0b('0x2d')](_0x2a0b('0x2e'));odbc[_0x2a0b('0x2f')](_0x566402,function(_0x2539b6,_0x4b208d){if(_0x2539b6){logger[_0x2a0b('0x2d')]('Error\x20executing\x20query\x20%s',_0x566402);_0xc6a323(_0x2539b6);}else{logger[_0x2a0b('0x2d')](_0x2a0b('0x30'),_0x566402);odbc[_0x2a0b('0x31')](function(_0x3e9fb6){if(_0x3e9fb6){logger[_0x2a0b('0x2c')](_0x2a0b('0x32'),_0x3e9fb6);}_0xc6a323(null,_0x4b208d);});}});}});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x33')]=function(_0x46a314,_0x25282f){this[_0x2a0b('0xe')][_0x2a0b('0x34')](_0x46a314)[_0x2a0b('0x11')](function(_0x1d93c0){_0x25282f(null,_0x1d93c0?_0x1d93c0:![]);})['catch'](function(_0x361319){_0x25282f(_0x361319);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x35')]=function(_0x8ab48e,_0x319785){this['rpc']['createSmsMessage'](_0x8ab48e)[_0x2a0b('0x11')](function(_0xdb89e1){_0x319785(null,_0xdb89e1);})[_0x2a0b('0x17')](function(_0x546b27){_0x319785(_0x546b27);});};AGIVertices[_0x2a0b('0x18')]['createSquareDetailsReport']=function(_0x58bc16,_0x417354,_0x4aeec6){this[_0x2a0b('0xe')][_0x2a0b('0x36')]({'uniqueid':this[_0x2a0b('0xd')][_0x2a0b('0x37')],'node':_0x58bc16['label'],'application':_0x58bc16[_0x2a0b('0x38')],'data':_0x417354||null,'project_name':this[_0x2a0b('0xd')]['arg_1'],'callerid':this['channel'][_0x2a0b('0x39')]})[_0x2a0b('0x11')](function(_0x2d232d){if(_0x4aeec6){_0x4aeec6(null,_0x2d232d);}})['catch'](function(_0x27ad9e){if(_0x4aeec6){_0x4aeec6(_0x27ad9e);}});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x3a')]=function(_0x9cb0a4,_0x71e098,_0x247e34,_0x51e6c0){this['rpc']['createSquareRecording']({'uniqueid':this[_0x2a0b('0xd')][_0x2a0b('0x37')],'callerid':this[_0x2a0b('0xd')]['callerid'],'calleridname':this[_0x2a0b('0xd')][_0x2a0b('0x3b')],'context':this[_0x2a0b('0xd')][_0x2a0b('0x3c')],'extension':this[_0x2a0b('0xd')][_0x2a0b('0x3d')],'priority':this[_0x2a0b('0xd')][_0x2a0b('0x3e')],'accountcode':this[_0x2a0b('0xd')][_0x2a0b('0x3f')],'dnid':this[_0x2a0b('0xd')][_0x2a0b('0x40')],'projectName':this[_0x2a0b('0xd')][_0x2a0b('0x41')],'saveName':_0x71e098,'filename':_0x9cb0a4[_0x2a0b('0x42')]||_0x71e098,'savePath':_0x247e34})['then'](function(_0xf05e36){_0x51e6c0(null,_0xf05e36);})[_0x2a0b('0x17')](function(_0x2c2e98){_0x51e6c0(_0x2c2e98);});};AGIVertices['prototype'][_0x2a0b('0x43')]=function(_0x3470f9,_0xcd1921,_0x1d0d7f,_0x47f06a,_0x2e4cf3){this['rpc'][_0x2a0b('0x43')]({'uniqueid':this[_0x2a0b('0xd')][_0x2a0b('0x37')],'body':_0x3470f9,'direction':_0xcd1921,'providerName':_0x1d0d7f,'providerResponse':_0x47f06a})['then'](function(_0x238740){if(_0x2e4cf3){_0x2e4cf3(null,_0x238740);}})['catch'](function(_0x45c7da){if(_0x2e4cf3){_0x2e4cf3(_0x45c7da);}});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x44')]=function(_0x13d5d1,_0x4007a0){this[_0x2a0b('0xe')]['createCmContact']({'firstName':_[_0x2a0b('0x45')](_0x13d5d1[_0x2a0b('0x12')])||_[_0x2a0b('0x46')](_0x13d5d1[_0x2a0b('0x12')])?_0x2a0b('0x47')+Math[_0x2a0b('0x48')]():_0x13d5d1[_0x2a0b('0x12')],'lastName':_[_0x2a0b('0x45')](_0x13d5d1['lastName'])||_[_0x2a0b('0x46')](_0x13d5d1['lastName'])?null:_0x13d5d1[_0x2a0b('0x49')],'phone':_0x13d5d1[_0x2a0b('0x4a')],'ListId':_0x13d5d1[_0x2a0b('0x4b')],'scheduledat':_0x13d5d1['scheduledAt'],'callbackUniqueid':this[_0x2a0b('0xd')]['uniqueid'],'tags':_0x2a0b('0x4c'),'description':_0x2a0b('0x4d')+_0x13d5d1['scheduledAt'][_0x2a0b('0x4e')](),'priority':_0x13d5d1[_0x2a0b('0x4f')]})['then'](function(_0x32f2b6){_0x4007a0(null,_0x32f2b6);})['catch'](function(_0x5ecf6f){_0x4007a0(_0x5ecf6f);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x50')]=function(_0x54ac40,_0x3446b9){this[_0x2a0b('0xe')]['getPauseById'](_0x54ac40)[_0x2a0b('0x11')](function(_0x41053e){_0x3446b9(null,_0x41053e?_0x41053e['name']:![]);})[_0x2a0b('0x17')](function(_0x4360f3){_0x3446b9(_0x4360f3);});};AGIVertices['prototype'][_0x2a0b('0x51')]=function(_0x1b50b6,_0x4a99fc,_0x1c0d21){var _0x3a9c0c={'role':_0x2a0b('0x52')};_0x3a9c0c[_0x1b50b6]=this['channel'][_0x2a0b('0x39')];this['rpc'][_0x2a0b('0x51')](_0x3a9c0c,_0x4a99fc,this[_0x2a0b('0xd')]['uniqueid'])['then'](function(_0x237e82){_0x1c0d21(null,_[_0x2a0b('0x46')](_0x237e82)?![]:!![]);})[_0x2a0b('0x17')](function(_0x1e6767){logger[_0x2a0b('0x2c')](_0x1e6767);_0x1c0d21(null,![]);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x53')]=function(_0x387a27,_0x384990){var _0x51f9a6={'role':'agent'};_0x51f9a6[_0x387a27]=this['channel'][_0x2a0b('0x39')];this[_0x2a0b('0xe')][_0x2a0b('0x53')](_0x51f9a6)['then'](function(_0x4bc13b){_0x384990(null,_['isNil'](_0x4bc13b)?![]:!![]);})['catch'](function(_0x2e350b){logger[_0x2a0b('0x2c')](_0x2e350b);_0x384990(null,![]);});};AGIVertices[_0x2a0b('0x18')]['agentLogout']=function(_0x3b5565,_0x18ec50){var _0x514cb0={'role':'agent'};_0x514cb0[_0x3b5565]=this['channel']['callerid'];this[_0x2a0b('0xe')][_0x2a0b('0x54')](_0x514cb0)[_0x2a0b('0x11')](function(_0x494de2){_0x18ec50(null,_['isNil'](_0x494de2)?![]:!![]);})[_0x2a0b('0x17')](function(_0xe73fcd){logger[_0x2a0b('0x2c')](_0xe73fcd);_0x18ec50(null,![]);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x55')]=function(_0x4ca183,_0x19133f){var _0x21410a={'role':_0x2a0b('0x52')};_0x21410a[_0x4ca183]=this[_0x2a0b('0xd')]['callerid'];var _0x2f505b=_0x4ca183!=_0x2a0b('0x56')?util[_0x2a0b('0x28')](_0x2a0b('0x57'),'LOCAL',this[_0x2a0b('0xd')][_0x2a0b('0x39')]):undefined;this[_0x2a0b('0xe')]['agentLogin'](_0x21410a,_0x2f505b)[_0x2a0b('0x11')](function(_0x45dca4){_0x19133f(null,_[_0x2a0b('0x46')](_0x45dca4)?![]:!![]);})[_0x2a0b('0x17')](function(_0x3e7d96){logger[_0x2a0b('0x2c')](_0x3e7d96);_0x19133f(null,![]);});};AGIVertices[_0x2a0b('0x18')]['shellCommand']=function(_0x446fbb,_0x561e57){sh['exec'](_[_0x2a0b('0x58')](_0x446fbb),function(_0x53f847,_0x55c884){var _0x8c1099=_0x55c884[_0x2a0b('0x59')](/(\r\n|\n|\r)/gm,'');_0x561e57(null,_0x8c1099);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x5a')]=function(_0x32033e,_0x2d5f05){scripts[_0x2a0b('0x5a')](_0x32033e[_0x2a0b('0x5b')],_0x32033e[_0x2a0b('0x5c')]||'text',_0x32033e[_0x2a0b('0x5d')],_0x32033e[_0x2a0b('0x5e')]||_0x2a0b('0x5f'),_0x32033e[_0x2a0b('0x60')]||'MALE',_0x32033e['audioEncoding']||_0x2a0b('0x61'))['then'](function(_0x3d8819){_0x2d5f05(null,_0x3d8819);})[_0x2a0b('0x17')](function(_0x1aafce){_0x2d5f05(_0x1aafce);});};AGIVertices['prototype'][_0x2a0b('0x62')]=function(_0x327fef,_0x48d44d){scripts[_0x2a0b('0x62')](_0x327fef[_0x2a0b('0x5d')],_0x327fef['google_tts_language']||'en',0x1)[_0x2a0b('0x11')](function(_0x33f684){_0x48d44d(null,_0x33f684);})[_0x2a0b('0x17')](function(_0x273c79){_0x48d44d(_0x273c79);});};AGIVertices[_0x2a0b('0x18')]['restAPI']=function(_0x504952,_0x15731d){var _0x3206a7={'uri':_0x504952[_0x2a0b('0x63')],'method':_0x504952[_0x2a0b('0x64')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x504952[_0x2a0b('0x65')])===_0x2a0b('0x66')&&parseInt(_0x504952['timeout'])>=0x1?parseInt(_0x504952[_0x2a0b('0x65')])*0x3e8:0x5*0x3e8};if(_[_0x2a0b('0x67')]([_0x2a0b('0x68'),'PUT'],_0x3206a7[_0x2a0b('0x64')]['toUpperCase']())){try{_0x3206a7[_0x2a0b('0x69')]=_0x504952['rawBody']?JSON['parse'](_0x504952['rawBody']):{};}catch(_0x3bacf5){logger[_0x2a0b('0x2c')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x3bacf5);}}try{_0x3206a7[_0x2a0b('0x6a')]=_0x504952['rawHeaders']?JSON[_0x2a0b('0x6b')](_0x504952[_0x2a0b('0xa')]):{};}catch(_0x265b91){logger[_0x2a0b('0x2c')](_0x2a0b('0x6c'),_0x265b91);}if(_0x504952[_0x2a0b('0x6d')]){try{var _0x3c3597=require(_0x504952[_0x2a0b('0x6d')])[_0x2a0b('0x6e')](this,_0x3206a7);_0x3206a7['uri']=Mustache['render'](_0x504952[_0x2a0b('0x63')],_0x3c3597,{},['$$','$$']);if(_0x3206a7[_0x2a0b('0x6a')]){_0x3206a7['headers']=JSON[_0x2a0b('0x6b')](Mustache[_0x2a0b('0x6f')](JSON['stringify'](_0x3206a7[_0x2a0b('0x6a')]),_0x3c3597,{},['$$','$$']));}if(_0x3206a7[_0x2a0b('0x69')]){_0x3206a7[_0x2a0b('0x69')]=JSON['parse'](Mustache[_0x2a0b('0x6f')](JSON[_0x2a0b('0x70')](_0x3206a7[_0x2a0b('0x69')]),_0x3c3597,{},['$$','$$']));}}catch(_0x59dda2){logger['error'](_0x2a0b('0x71'),_0x59dda2);}}rp(_0x3206a7)['then'](function(_0x155fff){var _0x366fa3={'statusCode':_0x155fff[_0x2a0b('0x72')]||0xc8,'statusMessage':_0x155fff['statusMessage']||'OK','headers':_0x155fff['headers']||{},'body':_0x155fff[_0x2a0b('0x69')]||{}};_0x15731d(null,_0x366fa3);})['catch'](function(_0x2953c8){var _0x3e1fad={'statusCode':_0x2953c8[_0x2a0b('0x72')]||0x1f4,'statusMessage':_0x2953c8[_0x2a0b('0x73')]||_0x2a0b('0x74'),'headers':_0x2953c8['options'][_0x2a0b('0x6a')]||{},'body':_0x2953c8['options'][_0x2a0b('0x69')]||{}};_0x15731d(null,_0x3e1fad);});};AGIVertices['prototype'][_0x2a0b('0x75')]=function(_0x303ed5,_0x1953e4){scripts['googleDialogflow'](this[_0x2a0b('0xd')][_0x2a0b('0x37')],_0x303ed5[_0x2a0b('0x76')],_0x303ed5[_0x2a0b('0x5d')],_0x303ed5[_0x2a0b('0x77')]||'en')[_0x2a0b('0x11')](function(_0x690135){_0x1953e4(null,_0x690135);})[_0x2a0b('0x17')](function(_0x56210c){_0x1953e4(_0x56210c);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x78')]=function(_0x17fc88,_0x5b1092){scripts[_0x2a0b('0x78')](this['channel']['uniqueid'],_0x17fc88[_0x2a0b('0x79')],_0x17fc88['client_email'],_0x17fc88[_0x2a0b('0x7a')],_0x17fc88[_0x2a0b('0x5d')],_0x17fc88['dialogflowV2_language']||'en')['then'](function(_0x1258e6){_0x5b1092(null,_0x1258e6);})[_0x2a0b('0x17')](function(_0x4f69c1){_0x5b1092(_0x4f69c1);});};AGIVertices[_0x2a0b('0x18')]['sestekNDA']=function(_0x279028,_0x35d04a){scripts[_0x2a0b('0x7b')](this[_0x2a0b('0xd')],_0x279028)[_0x2a0b('0x11')](function(_0x1657d4){_0x35d04a(null,_0x1657d4);})[_0x2a0b('0x17')](function(_0x37c0b8){_0x35d04a(_0x37c0b8);});};AGIVertices[_0x2a0b('0x18')]['ispeechTTS']=function(_0x20a0c5,_0x2aa78a){scripts[_0x2a0b('0x7c')](_0x20a0c5['key'],_0x20a0c5[_0x2a0b('0x5d')],_0x20a0c5[_0x2a0b('0x7d')]||_0x2a0b('0x5f'),_0x20a0c5[_0x2a0b('0x7e')])[_0x2a0b('0x11')](function(_0x3e71c4){_0x2aa78a(null,_0x3e71c4);})['catch'](function(_0x3a2fb0){_0x2aa78a(_0x3a2fb0);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x7f')]=function(_0x55e8ad,_0xb7a5bd,_0xe68bb0){scripts[_0x2a0b('0x7f')](_0xb7a5bd,_0x55e8ad['key'],_0x55e8ad['ispeech_asr_language']||'en-US',this['isConfigured'](_0x55e8ad[_0x2a0b('0x80')])?_0x55e8ad['model']:undefined)[_0x2a0b('0x11')](function(_0x59efa8){_0xe68bb0(null,_0x59efa8);})[_0x2a0b('0x17')](function(_0x51070c){_0xe68bb0(_0x51070c);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x81')]=function(_0x4d1fdd,_0x466e45){scripts['awsPolly'](_0x4d1fdd[_0x2a0b('0x82')],_0x4d1fdd[_0x2a0b('0x83')],_0x4d1fdd['aws_polly_region'],_0x4d1fdd['aws_polly_voice']||_0x2a0b('0x84'),_0x4d1fdd['text'],_0x4d1fdd[_0x2a0b('0x85')]||_0x2a0b('0x5d'))[_0x2a0b('0x11')](function(_0x48ca05){_0x466e45(null,_0x48ca05);})['catch'](function(_0x23be93){_0x466e45(_0x23be93);});};AGIVertices[_0x2a0b('0x18')]['awsLex']=function(_0x40e1d8,_0xe5189c){scripts[_0x2a0b('0x86')](this['channel'][_0x2a0b('0x37')],_0x40e1d8[_0x2a0b('0x82')],_0x40e1d8[_0x2a0b('0x83')],_0x40e1d8[_0x2a0b('0x87')],_0x40e1d8['text'],_0x40e1d8['aws_bot_name'])['then'](function(_0x30de6e){_0xe5189c(null,_0x30de6e);})[_0x2a0b('0x17')](function(_0x254022){_0xe5189c(_0x254022);});};AGIVertices['prototype']['googleASR']=function(_0x407949,_0x10f3b5,_0x48846f){scripts[_0x2a0b('0x88')](_0x10f3b5,_0x407949[_0x2a0b('0x76')],_0x407949[_0x2a0b('0x89')]||_0x2a0b('0x5f'))['then'](function(_0x3ef397){_0x48846f(null,_0x3ef397);})[_0x2a0b('0x17')](function(_0x3a385c){_0x48846f(_0x3a385c);});};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x8a')]=function(_0x126edc,_0x259e18,_0x50eae1){scripts['tildeASR'](_0x259e18,_0x126edc[_0x2a0b('0x8b')],_0x126edc['appsecret'],_0x126edc['uri'])[_0x2a0b('0x11')](function(_0x2dcdee){_0x50eae1(null,_0x2dcdee);})['catch'](function(_0x34b6af){_0x50eae1(_0x34b6af);});};AGIVertices['prototype'][_0x2a0b('0x8c')]=function(_0x5dbcbd){var _0x5115d2=_[_0x2a0b('0x67')](verticesWithRetry,_0x5dbcbd['agicommand'])?_0x5dbcbd:_['clone'](_0x5dbcbd);for(var _0x4de023 in _0x5115d2){if(_0x5115d2[_0x2a0b('0x8d')](_0x4de023)){if(_0x5115d2[_0x4de023]&&_[_0x2a0b('0x8e')](_0x5115d2[_0x4de023])){if(_['includes'](recursiveMapAttributes,_0x4de023)){_0x5115d2[_0x4de023]=this[_0x2a0b('0x8f')](_0x5115d2[_0x4de023]);}else{_0x5115d2[_0x4de023]=this[_0x2a0b('0x90')](_0x5115d2[_0x4de023]);}}}}return _0x5115d2;};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x91')]=function(_0x155926){for(var _0x24747e in _0x155926){if(_0x155926['hasOwnProperty'](_0x24747e)){if(_[_0x2a0b('0x92')](_0x155926[_0x24747e])){this['recursiveNodeIndex'](_0x155926[_0x24747e]);}else if(_[_0x2a0b('0x93')](_0x155926[_0x24747e])){for(var _0x23721b=0x0;_0x23721b<_0x155926[_0x24747e][_0x2a0b('0x94')];_0x23721b++){this[_0x2a0b('0x91')](_0x155926[_0x24747e][_0x23721b]);}}else if(_['isString'](_0x155926[_0x24747e])){_0x155926[_0x24747e]=this[_0x2a0b('0x90')](_0x155926[_0x24747e]);}}}};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x95')]=function(_0x54465b,_0x593ba4){for(var _0x181473 in _0x54465b){if(_0x54465b[_0x2a0b('0x8d')](_0x181473)){if(_[_0x2a0b('0x92')](_0x54465b[_0x181473])){if(!_[_0x2a0b('0x45')](_0x54465b[_0x181473])){this['saveRestApiResult'](_0x54465b[_0x181473],util['format'](_0x2a0b('0x96'),_0x593ba4,_0x181473));}}else if(_['isArray'](_0x54465b[_0x181473])){for(var _0x1c2296=0x0;_0x1c2296<_0x54465b[_0x181473]['length'];_0x1c2296++){this['saveRestApiResult'](_0x54465b[_0x181473][_0x1c2296],util['format'](_0x2a0b('0x96'),_0x593ba4,_0x181473+'['+_0x1c2296+']'));}}else{if(!_['isNil'](_0x54465b[_0x181473])){this[_0x2a0b('0xd')][_0x2a0b('0x97')](util['format'](_0x2a0b('0x96'),_0x593ba4,_0x181473),_0x54465b[_0x181473]);}}}}};AGIVertices[_0x2a0b('0x18')]['replaceObjectAllVariables']=function(_0xc3af9e){try{var _0x442bb9=JSON[_0x2a0b('0x6b')](_0xc3af9e);this[_0x2a0b('0x91')](_0x442bb9);return JSON['stringify'](_0x442bb9);}catch(_0x4a72a4){return this[_0x2a0b('0x90')](_0xc3af9e);}};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x90')]=function(_0x38f984){var _0x54d06b=_0x38f984[_0x2a0b('0x98')]('{');for(var _0x1cf070=0x1;_0x1cf070<_0x54d06b[_0x2a0b('0x94')];_0x1cf070+=0x1){var _0xb779b6=_0x54d06b[_0x1cf070]['split']('}');if(_0xb779b6[_0x2a0b('0x94')]>0x1){_0x38f984=_0x38f984[_0x2a0b('0x99')]('{'+_0xb779b6[0x0]+'}',this[_0x2a0b('0xd')]['getVariable'](_0xb779b6[0x0])[_0x2a0b('0x9a')]||_0xb779b6[0x0]);}}if(_0x54d06b[_0x2a0b('0x94')]===0x1){return _0x38f984[_0x2a0b('0x4e')]();}return this[_0x2a0b('0x90')](_0x38f984);};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x9b')]=function(_0x2cb613,_0x52dad5){var _0x1deadc=this[_0x2a0b('0xd')][_0x2a0b('0xf')](_0x2cb613);if(_0x1deadc[_0x2a0b('0x9c')]===-0x1){return _0x1deadc;}logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0x9d'),_0x52dad5,_0x1deadc['extra']));return this[_0x2a0b('0xd')]['setVariable'](_0x52dad5,_0x1deadc[_0x2a0b('0x9a')]);};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x9e')]=function(_0x17bec5){return _0x17bec5&&_0x17bec5!=='0'&&_0x17bec5!=='-1'&&_0x17bec5!=='';};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x9f')]=function(_0x5a7fd7){this['createSquareDetailsReport'][_0x2a0b('0x6e')](this,_0x5a7fd7,'-');_0x5a7fd7['retry']=_0x5a7fd7[_0x2a0b('0x9f')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype']['mrcpsynth']=function(_0x5804d8){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0xa0'),_0x5804d8[_0x2a0b('0xa1')]));if(!this['isConfigured'](_0x5804d8[_0x2a0b('0x5d')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xa3'));}var _0x4073a0='\x22'+_0x5804d8[_0x2a0b('0x5d')]+'\x22';if(this[_0x2a0b('0x9e')](_0x5804d8['options'])){_0x4073a0+=','+_0x5804d8[_0x2a0b('0xa4')];}var _0x566eec=this[_0x2a0b('0xd')][_0x2a0b('0xa5')](_0x2a0b('0xa6'),_0x4073a0);if(_0x566eec['result']===-0x1){return _0x566eec;}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0xa7'),_0x4073a0));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xa8')]=function(_0x529b9b){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0xa9'),_0x529b9b[_0x2a0b('0xa1')]));if(!this['isConfigured'](_0x529b9b[_0x2a0b('0xaa')])){return this['channel']['noop']('no\x20grammar\x20configured');}var _0x9e01d5=_0x529b9b[_0x2a0b('0xaa')];if(this[_0x2a0b('0x9e')](_0x529b9b[_0x2a0b('0xa4')])){_0x9e01d5+=','+_0x529b9b[_0x2a0b('0xa4')];}var _0x4d516c=this[_0x2a0b('0xd')][_0x2a0b('0xa5')](_0x2a0b('0xab'),_0x9e01d5);if(_0x4d516c[_0x2a0b('0x9c')]===-0x1){return _0x4d516c;}var _0x3aea08=this[_0x2a0b('0x9b')](_0x2a0b('0xac'),_0x2a0b('0xad'));if(_0x3aea08[_0x2a0b('0x9c')]===-0x1){return _0x3aea08;}var _0x2b34af=this['getAndSetVariable'](_0x2a0b('0xae'),'MRCP_RECOG_TRANSCRIPT');if(_0x2b34af['result']===-0x1){return _0x2b34af;}var _0x2b1cc0=this['getAndSetVariable'](_0x2a0b('0xaf'),'MRCP_RECOG_INSTANCE');if(_0x2b1cc0[_0x2a0b('0x9c')]===-0x1){return _0x2b1cc0;}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0xb0'),_0x9e01d5));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x6')]=function(_0x2a0e4f){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0xb1'),_0x2a0e4f['label']));return this[_0x2a0b('0xd')][_0x2a0b('0x6')]([_0x2a0e4f[_0x2a0b('0xb2')],_0x2a0e4f[_0x2a0b('0xb3')]]);};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xb4')]=function(_0x2b9b68){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0xb5'),_0x2b9b68[_0x2a0b('0xa1')]));if(this[_0x2a0b('0x9e')](_0x2b9b68['timeout'])){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0xb6'),_0x2b9b68[_0x2a0b('0x65')]));var _0x1799e3=this[_0x2a0b('0xd')][_0x2a0b('0xb7')](_0x2b9b68[_0x2a0b('0x65')]);if(_0x1799e3['result']===-0x1){return _0x1799e3;}}return this[_0x2a0b('0xd')]['answer']();};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x4c')]=function(_0x291f10){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0xb8'),_0x291f10[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x291f10[_0x2a0b('0x4b')])){return this[_0x2a0b('0xd')]['error'](_0x291f10,_0x2a0b('0xb9'));}_0x291f10[_0x2a0b('0xba')]=moment();if(this['isConfigured'](_0x291f10[_0x2a0b('0xbb')])){_0x291f10[_0x2a0b('0xba')]=moment()[_0x2a0b('0xbc')](_0x291f10[_0x2a0b('0xbb')],'minutes');}if(!this[_0x2a0b('0x9e')](_0x291f10[_0x2a0b('0x4f')])){_0x291f10[_0x2a0b('0x4f')]=0x2;}this[_0x2a0b('0x44')]['sync'](this,_0x291f10);return this['channel'][_0x2a0b('0xa2')](util[_0x2a0b('0x28')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x291f10[_0x2a0b('0x4a')],_0x291f10[_0x2a0b('0x4b')],_0x291f10['scheduledAt']));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xbd')]=function(_0x4dbe7d){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0xbe'),_0x4dbe7d['label']));var _0x5be4ca=this[_0x2a0b('0xd')]['exec'](_0x4dbe7d[_0x2a0b('0xbf')],_0x4dbe7d[_0x2a0b('0xa4')]);if(_0x5be4ca[_0x2a0b('0x9c')]===-0x1){return _0x5be4ca;}return this[_0x2a0b('0xd')]['noop'](util['format'](_0x2a0b('0xc0'),_0x4dbe7d['application'],_0x4dbe7d[_0x2a0b('0xa4')]));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xc1')]=function(_0xcc52dd){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0xc2'),_0xcc52dd[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0xcc52dd[_0x2a0b('0x5d')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')]('no\x20text\x20configured');}var _0x229417='\x22'+_0xcc52dd[_0x2a0b('0x5d')]+'\x22';if(this[_0x2a0b('0x9e')](_0xcc52dd[_0x2a0b('0xa4')])){_0x229417+=','+_0xcc52dd['options'];}var _0x2cb9dc=this[_0x2a0b('0xd')][_0x2a0b('0xa5')]('MRCPSynth',_0x229417);if(_0x2cb9dc[_0x2a0b('0x9c')]===-0x1){return _0x2cb9dc;}return this['channel']['noop'](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x229417));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xc3')]=function(_0xcc0f6c){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0xc4'),_0xcc0f6c[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0xcc0f6c[_0x2a0b('0x5d')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0xa3'));}var _0x2308cf='\x22'+_0xcc0f6c[_0x2a0b('0x5d')]+'\x22';if(this[_0x2a0b('0x9e')](_0xcc0f6c[_0x2a0b('0xa4')])){_0x2308cf+=','+_0xcc0f6c[_0x2a0b('0xa4')];}var _0x28f4df=this['channel'][_0x2a0b('0xa5')]('MRCPSynth',_0x2308cf);if(_0x28f4df[_0x2a0b('0x9c')]===-0x1){return _0x28f4df;}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0xa7'),_0x2308cf));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xc5')]=function(_0x16c5c6){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0xc6'),_0x16c5c6['label']));if(!this[_0x2a0b('0x9e')](_0x16c5c6[_0x2a0b('0xaa')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xc7'));}var _0xeebb7b=_0x16c5c6['grammar'];if(this[_0x2a0b('0x9e')](_0x16c5c6[_0x2a0b('0xa4')])){_0xeebb7b+=','+_0x16c5c6[_0x2a0b('0xa4')];}var _0x56e10a=this['channel'][_0x2a0b('0xa5')](_0x2a0b('0xab'),_0xeebb7b);if(_0x56e10a[_0x2a0b('0x9c')]===-0x1){return _0x56e10a;}var _0x4d8196=this[_0x2a0b('0x9b')](_0x2a0b('0xac'),_0x2a0b('0xc8'));if(_0x4d8196[_0x2a0b('0x9c')]===-0x1){return _0x4d8196;}var _0x536e20=this['getAndSetVariable'](_0x2a0b('0xae'),_0x2a0b('0xc9'));if(_0x536e20['result']===-0x1){return _0x536e20;}var _0x4ddf10=this[_0x2a0b('0x9b')](_0x2a0b('0xaf'),_0x2a0b('0xca'));if(_0x4ddf10['result']===-0x1){return _0x4ddf10;}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0xb0'),_0xeebb7b));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xcb')]=function(_0x5c7195){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0xcc'),_0x5c7195[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x5c7195[_0x2a0b('0xaa')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xc7'));}var _0x4cab46=_0x5c7195[_0x2a0b('0xaa')];if(this[_0x2a0b('0x9e')](_0x5c7195[_0x2a0b('0xa4')])){_0x4cab46+=','+_0x5c7195[_0x2a0b('0xa4')];}var _0xd9a0cb=this[_0x2a0b('0xd')][_0x2a0b('0xa5')](_0x2a0b('0xab'),_0x4cab46);if(_0xd9a0cb['result']===-0x1){return _0xd9a0cb;}var _0x1a6ca4=this[_0x2a0b('0x9b')](_0x2a0b('0xac'),_0x2a0b('0xcd'));if(_0x1a6ca4[_0x2a0b('0x9c')]===-0x1){return _0x1a6ca4;}var _0x5f0545=this[_0x2a0b('0x9b')](_0x2a0b('0xae'),_0x2a0b('0xce'));if(_0x5f0545[_0x2a0b('0x9c')]===-0x1){return _0x5f0545;}var _0x29d9aa=this[_0x2a0b('0x9b')](_0x2a0b('0xaf'),'SESTEK_ASR_INSTANCE');if(_0x29d9aa['result']===-0x1){return _0x29d9aa;}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0xb0'),_0x4cab46));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xcf')]=function(_0x477cfe){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0xd0'),_0x477cfe[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x477cfe[_0x2a0b('0xd1')])){return this[_0x2a0b('0xd')]['error'](_0x477cfe,_0x2a0b('0xd2'));}var _0x11c299=this[_0x2a0b('0xd3')][_0x2a0b('0x6e')](this,_0x477cfe[_0x2a0b('0xd1')]);if(!_0x11c299){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x477cfe,_0x2a0b('0xd4'));}if(!this[_0x2a0b('0x9e')](_0x477cfe['query'])){return this[_0x2a0b('0xd')]['error'](_0x477cfe,_0x2a0b('0xd5'));}var _0x2b5299=_0x477cfe[_0x2a0b('0x2f')]['replace'](/(\r\n|\n|\r)/gm,'\x20');this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0xd6'),_0x2b5299));var _0x3a467e=this[_0x2a0b('0x2a')]['sync'](this,_0x11c299,_0x2b5299);this[_0x2a0b('0x36')][_0x2a0b('0x6e')](this,_0x477cfe,_0x2b5299);if(!this[_0x2a0b('0x9e')](_0x477cfe[_0x2a0b('0xd7')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0xd8'));}var _0xef07f5=this['getVariable'][_0x2a0b('0x6e')](this,_0x477cfe['variable_id']);if(!_0xef07f5){return this[_0x2a0b('0xd')]['error'](_0x477cfe,'no\x20variable\x20found');}var _0x1baf7c=this;_0x3a467e[_0x2a0b('0xd9')](function(_0x2dc7b2,_0x186ade){Object[_0x2a0b('0xda')](_0x2dc7b2)[_0x2a0b('0xd9')](function(_0x22a22d){_0x1baf7c['channel']['setVariable'](util[_0x2a0b('0x28')](_0x2a0b('0xdb'),_0xef07f5,_0x186ade,_0x22a22d),_0x2dc7b2[_0x22a22d]);});});this['channel'][_0x2a0b('0x97')](util[_0x2a0b('0x28')](_0x2a0b('0xdc'),_0xef07f5),_0x3a467e[_0x2a0b('0x94')]);return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util['format'](_0x2a0b('0xdd'),_0xef07f5));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xde')]=function(_0x57ff69){logger[_0x2a0b('0xdf')](util[_0x2a0b('0x28')](_0x2a0b('0xe0'),_0x57ff69['label']));if(!this['isConfigured'](_0x57ff69[_0x2a0b('0xe1')])){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x57ff69,_0x2a0b('0xe2'));}var _0x4d7816=this['getUser'][_0x2a0b('0x6e')](this,_0x57ff69[_0x2a0b('0xe1')]);if(!_0x4d7816){return this['channel'][_0x2a0b('0x2c')](_0x57ff69,_0x2a0b('0xe3'));}var _0x4fff9b=this[_0x2a0b('0xd')][_0x2a0b('0xa5')]('DIAL',[util[_0x2a0b('0x28')](_0x2a0b('0xe4'),_0x4d7816),_0x57ff69[_0x2a0b('0x65')],_0x57ff69[_0x2a0b('0xe5')],_0x57ff69[_0x2a0b('0x63')]]);if(_0x4fff9b[_0x2a0b('0x9c')]===-0x1){return _0x4fff9b;}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0xe6'),_0x2a0b('0xe7')));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xe8')]=function(_0x373f17){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0xe9'),_0x373f17[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x373f17[_0x2a0b('0x76')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0xea'));}if(!this[_0x2a0b('0x9e')](_0x373f17[_0x2a0b('0x5d')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0xa3'));}this[_0x2a0b('0xd')][_0x2a0b('0xeb')]=!![];this[_0x2a0b('0x36')](_0x373f17);this[_0x2a0b('0x43')](_0x373f17[_0x2a0b('0x5d')],'in','','');this['channel'][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0xec'),_0x373f17[_0x2a0b('0x5d')]));var _0x78c7cb=this[_0x2a0b('0x75')][_0x2a0b('0x6e')](this,_0x373f17);if(_0x78c7cb){for(var _0x36e6ba in _0x78c7cb){if(_0x78c7cb['hasOwnProperty'](_0x36e6ba)){this[_0x2a0b('0xd')][_0x2a0b('0x97')](util[_0x2a0b('0x28')]('DIALOGFLOW_%s',_0x36e6ba[_0x2a0b('0xed')]()),_0x78c7cb[_0x36e6ba]);}}this['createSquareMessage'](_0x78c7cb[_0x2a0b('0xee')],_0x2a0b('0xef'),_0x2a0b('0xe8'),'');return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util['format'](_0x2a0b('0xf0'),_0x78c7cb[_0x2a0b('0xee')]));}return this[_0x2a0b('0xd')]['error'](_0x373f17,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xf1')]=function(_0x1b9901){logger[_0x2a0b('0x2d')](util['format']('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x1b9901[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x1b9901[_0x2a0b('0x79')])){return this[_0x2a0b('0xd')]['noop']('no\x20project_id\x20configured');}if(!this[_0x2a0b('0x9e')](_0x1b9901['client_email'])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xf2'));}if(!this[_0x2a0b('0x9e')](_0x1b9901[_0x2a0b('0x7a')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xf3'));}if(!this[_0x2a0b('0x9e')](_0x1b9901[_0x2a0b('0xf4')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xf5'));}if(!this[_0x2a0b('0x9e')](_0x1b9901[_0x2a0b('0x5d')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')]('no\x20text\x20configured');}this['channel'][_0x2a0b('0xeb')]=!![];this['createSquareDetailsReport'](_0x1b9901);this['createSquareMessage'](_0x1b9901[_0x2a0b('0x5d')],'in','','');this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util['format']('Trying\x20DialogflowV2:\x20%s',_0x1b9901[_0x2a0b('0x5d')]));var _0x38dcb8=this['googleDialogflowV2'][_0x2a0b('0x6e')](this,_0x1b9901);if(_0x38dcb8){for(var _0x35ca72 in _0x38dcb8){if(_0x38dcb8['hasOwnProperty'](_0x35ca72)){if(_0x35ca72!==_0x2a0b('0xf6')){this[_0x2a0b('0xd')][_0x2a0b('0x97')](util['format'](_0x2a0b('0xf7'),_0x35ca72[_0x2a0b('0xed')]()),_0x38dcb8[_0x35ca72]);}}}this[_0x2a0b('0x43')](_0x38dcb8[_0x2a0b('0xee')],_0x2a0b('0xef'),'dialogflowV2',_0x38dcb8[_0x2a0b('0xf6')]);return this[_0x2a0b('0xd')]['noop'](util[_0x2a0b('0x28')]('DialogflowV2\x20Result\x20%s',_0x38dcb8[_0x2a0b('0xee')]));}return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x1b9901,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xf8')]=function(_0x11763a){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0xf9'),_0x11763a[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x11763a[_0x2a0b('0xfa')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0xfb'));}if(!this[_0x2a0b('0x9e')](_0x11763a[_0x2a0b('0xfc')])){return this[_0x2a0b('0xd')]['noop'](_0x2a0b('0xfd'));}if(!this[_0x2a0b('0x9e')](_0x11763a[_0x2a0b('0xfe')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xff'));}if(!this['isConfigured'](_0x11763a[_0x2a0b('0x100')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')]('no\x20text\x20configured');}this['channel'][_0x2a0b('0xeb')]=!![];this['createSquareDetailsReport'](_0x11763a);this['createSquareMessage'](_0x11763a[_0x2a0b('0x5d')],'in','','');this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x101'),_0x11763a[_0x2a0b('0x5d')]));var _0x121771=this[_0x2a0b('0x7b')]['sync'](this,_0x11763a);if(_0x121771){for(var _0x45846a in _0x121771){if(_0x121771[_0x2a0b('0x8d')](_0x45846a)){this[_0x2a0b('0xd')]['setVariable'](util[_0x2a0b('0x28')]('SESTEK_NDA_%s',_0x45846a[_0x2a0b('0xed')]()),_0x121771[_0x45846a]);}}this[_0x2a0b('0x43')](_0x121771['speech'],_0x2a0b('0xef'),_0x2a0b('0xf8'),'');if(_0x121771[_0x2a0b('0x102')]){this['channel'][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x103'),_0x121771[_0x2a0b('0x102')]));var _0x3bd96f=this['channel'][_0x2a0b('0x104')](_0x121771[_0x2a0b('0x102')]);try{fs[_0x2a0b('0x105')](_0x121771[_0x2a0b('0x102')]+'.wav');}catch(_0x489863){logger[_0x2a0b('0x2c')](_0x489863);}return _0x3bd96f;}else{return this['channel'][_0x2a0b('0xa2')](util['format']('SestekNDA\x20Result\x20%s',_0x121771[_0x2a0b('0xee')]));}}return this[_0x2a0b('0xd')]['error'](_0x11763a,_0x2a0b('0x106'));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x107')]=function(_0x3ea62e){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0x108'),_0x3ea62e[_0x2a0b('0xa1')]));return this['channel'][_0x2a0b('0xa2')]('end');};AGIVertices[_0x2a0b('0x18')]['ext_dial']=function(_0x971144){logger['info'](util[_0x2a0b('0x28')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x971144['label']));var _0x3eccb6='';if(_0x971144[_0x2a0b('0x109')]){if(!this[_0x2a0b('0x9e')](_0x971144[_0x2a0b('0x109')])){return this[_0x2a0b('0xd')]['error'](_0x971144,_0x2a0b('0x10a'));}else{var _0x2d4422=parseInt(_0x971144['trunk_id'],0xa);if(isNaN(_0x2d4422)){_0x3eccb6=_0x971144[_0x2a0b('0x109')];}else{_0x3eccb6=this[_0x2a0b('0x1c')][_0x2a0b('0x6e')](this,_0x971144['trunk_id']);if(!_0x3eccb6){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x971144,'no\x20trunk\x20found');}}}}else if(_0x971144[_0x2a0b('0x10b')]){_0x3eccb6=_0x971144[_0x2a0b('0x10b')];}else{return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x971144,_0x2a0b('0x10a'));}var _0x47b53a=this[_0x2a0b('0xd')][_0x2a0b('0xa5')](_0x2a0b('0xe7'),[util[_0x2a0b('0x28')](_0x2a0b('0x10c'),_0x3eccb6,_0x971144[_0x2a0b('0x4a')]),_0x971144[_0x2a0b('0x65')],_0x971144['opts'],_0x971144[_0x2a0b('0x63')]]);if(_0x47b53a['result']===-0x1){return _0x47b53a;}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util['format'](_0x2a0b('0xe6'),'DIAL'));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x10d')]=function(_0x3e5c93){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0x10e'),_0x3e5c93[_0x2a0b('0xa1')]));return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0x10d'));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x10f')]=function(_0x22a26e){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0x110'),_0x22a26e['label']));if(_0x22a26e[_0x2a0b('0x111')]===0x0){return this['maxRetry'](_0x22a26e);}_0x22a26e[_0x2a0b('0x111')]-=0x1;if(!this[_0x2a0b('0x9e')](_0x22a26e[_0x2a0b('0x112')])){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x22a26e,_0x2a0b('0x113'));}var _0x141b0a=this[_0x2a0b('0x1e')][_0x2a0b('0x6e')](this,_0x22a26e[_0x2a0b('0x112')]);if(!_0x141b0a){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x22a26e,_0x2a0b('0x114'));}if(!this[_0x2a0b('0x9e')](_0x22a26e['variable_id'])){return this[_0x2a0b('0xd')]['error'](_0x2a0b('0xd8'));}var _0x4c6cb8=this['channel'][_0x2a0b('0x115')](_0x141b0a,_0x22a26e[_0x2a0b('0x116')],_0x22a26e[_0x2a0b('0x117')]);var _0x4fb781=_0x4c6cb8['result']?_0x4c6cb8[_0x2a0b('0x9c')][_0x2a0b('0x4e')]():'';logger[_0x2a0b('0x2d')](_0x2a0b('0x118'),JSON[_0x2a0b('0x70')](_0x4c6cb8));if(_0x4c6cb8[_0x2a0b('0x9c')]===-0x1){this[_0x2a0b('0x36')][_0x2a0b('0x6e')](this,_0x22a26e,_0x4fb781);return _0x4c6cb8;}else if(_0x4c6cb8[_0x2a0b('0x9a')]===_0x2a0b('0x65')){_0x4c6cb8[_0x2a0b('0x9c')]=_0x4fb781[_0x2a0b('0x94')]>=parseInt(_0x22a26e['mindigit'])?'x':'i';}else{_0x4c6cb8['result']=_0x4fb781[_0x2a0b('0x94')]>=parseInt(_0x22a26e[_0x2a0b('0x119')])&&_0x4fb781[_0x2a0b('0x94')]<=parseInt(_0x22a26e[_0x2a0b('0x117')])?'x':'i';}var _0x2aa8a2=this[_0x2a0b('0xf')][_0x2a0b('0x6e')](this,_0x22a26e[_0x2a0b('0xd7')]);if(!_0x2aa8a2){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x22a26e,_0x2a0b('0x11a'));}this[_0x2a0b('0xd')][_0x2a0b('0x97')](_0x2aa8a2,_0x4fb781);if(this[_0x2a0b('0x9e')](_0x22a26e[_0x2a0b('0x11b')])){var _0xb210c6=parseInt(_0x22a26e['hiddendigitsnum'],0xa);var _0xbc1f14=rs[_0x2a0b('0x11c')]({'charset':'*','length':_0xb210c6});var _0x2534a7=_0x4fb781[_0x2a0b('0x94')];if(_0x2534a7>0x0){if(_0x2534a7>_0xb210c6){this[_0x2a0b('0x36')][_0x2a0b('0x6e')](this,_0x22a26e,_0x22a26e['hiddendigitspos']===_0x2a0b('0x11d')?_0xbc1f14+_0x4fb781[_0x2a0b('0x11e')](_0xb210c6):_0x4fb781['substr'](0x0,_0x2534a7-_0xb210c6)+_0xbc1f14);}else{this[_0x2a0b('0x36')]['sync'](this,_0x22a26e,rs[_0x2a0b('0x11c')]({'charset':'*','length':_0x2534a7}));}}else{this[_0x2a0b('0x36')]['sync'](this,_0x22a26e,'');}}else{this[_0x2a0b('0x36')][_0x2a0b('0x6e')](this,_0x22a26e,_0x4fb781);}return _0x4c6cb8;};AGIVertices['prototype'][_0x2a0b('0xc')]=function(_0x484fc4){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0x11f'),_0x484fc4[_0x2a0b('0xa1')]));return this[_0x2a0b('0x10f')](_0x484fc4);};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x120')]=function(_0x411a48){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x121'),_0x411a48[_0x2a0b('0xa1')]));this[_0x2a0b('0x36')]['sync'](this,_0x411a48,_0x411a48[_0x2a0b('0x122')]);return this[_0x2a0b('0xd')]['noop'](util[_0x2a0b('0x28')](_0x2a0b('0x123'),_0x411a48['goalname']));};AGIVertices['prototype'][_0x2a0b('0x124')]=function(_0x3d4cc3){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x125'),_0x3d4cc3[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x3d4cc3['aws_access_key_id'])||!this[_0x2a0b('0x9e')](_0x3d4cc3[_0x2a0b('0x83')])){return this[_0x2a0b('0xd')]['noop'](_0x2a0b('0x126'));}if(!this[_0x2a0b('0x9e')](_0x3d4cc3[_0x2a0b('0x5d')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xa3'));}this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util['format'](_0x2a0b('0x127'),_0x3d4cc3[_0x2a0b('0x5d')]));var _0xa45034=this[_0x2a0b('0x81')][_0x2a0b('0x6e')](this,_0x3d4cc3);if(_0xa45034){this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x128'),_0xa45034));var _0x53abdc=this[_0x2a0b('0xd')][_0x2a0b('0x104')](_0xa45034);try{fs[_0x2a0b('0x105')](_0xa45034+_0x2a0b('0x129'));}catch(_0x528bab){logger['error'](_0x528bab);}return _0x53abdc;}return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x3d4cc3,_0x2a0b('0x12a'));};AGIVertices[_0x2a0b('0x18')]['awslex']=function(_0x16442e){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0x12b'),_0x16442e[_0x2a0b('0xa1')]));if(!this['isConfigured'](_0x16442e[_0x2a0b('0x82')])||!this[_0x2a0b('0x9e')](_0x16442e[_0x2a0b('0x83')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0x126'));}if(!this[_0x2a0b('0x9e')](_0x16442e[_0x2a0b('0x12c')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0x12d'));}if(!this['isConfigured'](_0x16442e['text'])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xa3'));}this['channel']['bot']=!![];this['createSquareDetailsReport'](_0x16442e);this[_0x2a0b('0x43')](_0x16442e[_0x2a0b('0x5d')],'in','','');this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util['format'](_0x2a0b('0x12e'),_0x16442e[_0x2a0b('0x5d')]));var _0x201918=this[_0x2a0b('0x86')][_0x2a0b('0x6e')](this,_0x16442e);if(_0x201918){for(var _0x4fc6f7 in _0x201918){if(_0x201918['hasOwnProperty'](_0x4fc6f7)&&_['isString'](_0x201918[_0x4fc6f7])){this[_0x2a0b('0xd')][_0x2a0b('0x97')](util[_0x2a0b('0x28')](_0x2a0b('0x12f'),_0x4fc6f7[_0x2a0b('0xed')]()),_0x201918[_0x4fc6f7]);}}if(_['isNil'](_0x201918['message'])){return this[_0x2a0b('0xd')]['noop'](_0x2a0b('0x130'));}else{this[_0x2a0b('0x43')](_0x201918[_0x2a0b('0x73')],_0x2a0b('0xef'),_0x2a0b('0x131'),'');return this[_0x2a0b('0xd')]['noop'](util['format']('Amazon\x20Lex\x20Result\x20%s',_0x201918[_0x2a0b('0x73')]));}}return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x16442e,_0x2a0b('0x132'));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x133')]=function(_0x2bfd62){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0x134'),_0x2bfd62[_0x2a0b('0xa1')],_0x2bfd62[_0x2a0b('0x65')]));if(!this[_0x2a0b('0x9e')](_0x2bfd62[_0x2a0b('0x76')])){return this['channel']['noop'](_0x2a0b('0xea'));}var _0x199955='wav';var _0x6c5162=util[_0x2a0b('0x28')]('%s/recordings/%s',FILES_PATH,rs[_0x2a0b('0x11c')](0x4));var _0x5dcc8f=util[_0x2a0b('0x28')]('%s.%s',_0x6c5162,_0x199955);var _0x10fccd=!![];if(_0x2bfd62[_0x2a0b('0x135')]===_0x2a0b('0x136')){_0x10fccd=![];}var _0x4ef1a5=this[_0x2a0b('0xd')][_0x2a0b('0x137')](_0x6c5162,_0x199955,_0x2bfd62[_0x2a0b('0x138')],_0x2bfd62['timeout'],undefined,_0x10fccd);if(_0x4ef1a5[_0x2a0b('0x9c')]!==-0x1){this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x139'),_0x5dcc8f));var _0x128454=this[_0x2a0b('0x88')][_0x2a0b('0x6e')](this,_0x2bfd62,_0x5dcc8f);if(_0x128454){for(var _0x4e4b61 in _0x128454){if(_0x128454['hasOwnProperty'](_0x4e4b61)){this[_0x2a0b('0xd')]['setVariable'](util[_0x2a0b('0x28')](_0x2a0b('0x13a'),_0x4e4b61[_0x2a0b('0xed')]()),_0x128454[_0x4e4b61]);}}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')]('GoogleASR\x20Result\x20%s',JSON[_0x2a0b('0x70')](_0x128454)));}}return _0x4ef1a5;};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x13b')]=function(_0x29ab50){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x13c'),_0x29ab50[_0x2a0b('0xa1')]));if(!this['isConfigured'](_0x29ab50[_0x2a0b('0x8b')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0x13d'));}if(!this[_0x2a0b('0x9e')](_0x29ab50['appsecret'])){return this[_0x2a0b('0xd')]['noop'](_0x2a0b('0x13e'));}var _0x1a426e=_0x2a0b('0x13f');var _0x14e4f4=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x2a0b('0x11c')](0x4));var _0x4b5dc0=util['format'](_0x2a0b('0x96'),_0x14e4f4,_0x1a426e);var _0x352934=!![];if(_0x29ab50[_0x2a0b('0x135')]==='NOBEEP'){_0x352934=![];}var _0x2a6bdd=this['channel'][_0x2a0b('0x137')](_0x14e4f4,_0x1a426e,_0x29ab50[_0x2a0b('0x138')],_0x29ab50['timeout'],undefined,_0x352934);if(_0x2a6bdd['result']!==-0x1){this[_0x2a0b('0xd')]['noop'](util[_0x2a0b('0x28')](_0x2a0b('0x140'),_0x4b5dc0));var _0x480fc0=this[_0x2a0b('0x8a')][_0x2a0b('0x6e')](this,_0x29ab50,_0x4b5dc0);if(_0x480fc0){for(var _0x4444ae in _0x480fc0){if(_0x480fc0['hasOwnProperty'](_0x4444ae)){this['channel'][_0x2a0b('0x97')](util[_0x2a0b('0x28')](_0x2a0b('0x141'),_0x4444ae[_0x2a0b('0xed')]()),_0x480fc0[_0x4444ae]);}}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util['format']('TildeASR\x20Result\x20%s',JSON[_0x2a0b('0x70')](_0x480fc0)));}}return _0x2a6bdd;};AGIVertices['prototype'][_0x2a0b('0x142')]=function(_0x1bd15f){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0x143'),_0x1bd15f[_0x2a0b('0xa1')]));return this['channel'][_0x2a0b('0x144')](_0x1bd15f[_0x2a0b('0x3c')],_0x1bd15f[_0x2a0b('0x3d')],_0x1bd15f[_0x2a0b('0x3e')]);};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x145')]=function(_0x340d21){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0x146'),_0x340d21[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x340d21['condition'])){return this[_0x2a0b('0xd')]['error'](_0x340d21,_0x2a0b('0x147'));}try{var _0x2e17ef=eval(_0x340d21[_0x2a0b('0x148')])?'true':'false';this[_0x2a0b('0xd')]['noop'](util[_0x2a0b('0x28')](_0x2a0b('0x149'),_0x340d21[_0x2a0b('0x148')],_0x2e17ef));return{'code':0xc8,'result':_0x2e17ef};}catch(_0x234896){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x14a')]=function(_0x45eb9e){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0x14b'),_0x45eb9e[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x45eb9e[_0x2a0b('0x14c')])){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x45eb9e,_0x2a0b('0x14d'));}var _0x5c6346=this[_0x2a0b('0x23')][_0x2a0b('0x6e')](this,_0x45eb9e[_0x2a0b('0x14c')]);if(!_0x5c6346){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x45eb9e,'no\x20intervals\x20found');}for(var _0x5897f5=0x0;_0x5897f5<_0x5c6346[_0x2a0b('0x94')];_0x5897f5+=0x1){var _0x2c8a1f=this[_0x2a0b('0xd')]['getVariable'](util[_0x2a0b('0x28')](_0x2a0b('0x14e'),_0x5c6346[_0x5897f5]));if(_0x2c8a1f[_0x2a0b('0x9c')]===-0x1){return _0x2c8a1f;}logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x14f'),_0x5c6346[_0x5897f5],_0x2c8a1f[_0x2a0b('0x9a')]));if(_0x2c8a1f[_0x2a0b('0x9a')]===_0x2a0b('0x150')){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')]('IFTIME\x20%s\x20%s',_0x5c6346[_0x5897f5],_0x2a0b('0x150')));this['channel'][_0x2a0b('0xa2')](util['format'](_0x2a0b('0x14f'),_0x5c6346[_0x5897f5],_0x2a0b('0x150')));return{'code':0xc8,'result':_0x2a0b('0x150')};}else{logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x14f'),_0x5c6346[_0x5897f5],_0x2a0b('0x151')));this['channel'][_0x2a0b('0xa2')](util[_0x2a0b('0x28')]('IFTIME\x20%s\x20%s',_0x5c6346[_0x5897f5],'false'));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x152')]=function(_0x478676){logger['info'](util[_0x2a0b('0x28')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x478676[_0x2a0b('0xa1')]));return this[_0x2a0b('0xd')][_0x2a0b('0x152')]();};AGIVertices['prototype'][_0x2a0b('0x153')]=function(_0xc5964f){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0xc5964f[_0x2a0b('0xa1')]));if(!this['isConfigured'](_0xc5964f[_0x2a0b('0x76')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0xea'));}var _0x3960f2=_0x2a0b('0x13f');var _0x2b81a2=util['format'](_0x2a0b('0x154'),FILES_PATH,rs[_0x2a0b('0x11c')](0x4));var _0x5250d3=util['format'](_0x2a0b('0x96'),_0x2b81a2,_0x3960f2);var _0x51feed=!![];if(_0xc5964f[_0x2a0b('0x135')]===_0x2a0b('0x136')){_0x51feed=![];}var _0x59fae9=this[_0x2a0b('0xd')]['recordFile'](_0x2b81a2,_0x3960f2,_0xc5964f[_0x2a0b('0x138')],_0xc5964f[_0x2a0b('0x65')],undefined,_0x51feed);if(_0x59fae9['result']!==-0x1){this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x155'),_0x5250d3));var _0x29d587=this['ispeechASR']['sync'](this,_0xc5964f,_0x5250d3);if(_0x29d587){for(var _0xacd8cd in _0x29d587){if(_0x29d587[_0x2a0b('0x8d')](_0xacd8cd)){this[_0x2a0b('0xd')][_0x2a0b('0x97')](util['format'](_0x2a0b('0x156'),_0xacd8cd[_0x2a0b('0xed')]()),_0x29d587[_0xacd8cd]);}}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x157'),JSON[_0x2a0b('0x70')](_0x29d587)));}}return _0x59fae9;};AGIVertices[_0x2a0b('0x18')]['ispeechtts']=function(_0x14248a){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x158'),_0x14248a[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x14248a[_0x2a0b('0x76')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xea'));}if(!this['isConfigured'](_0x14248a[_0x2a0b('0x5d')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0xa3'));}this[_0x2a0b('0xd')]['noop'](util[_0x2a0b('0x28')](_0x2a0b('0x159'),_0x14248a['text']));var _0x31f5a1=this['ispeechTTS'][_0x2a0b('0x6e')](this,_0x14248a);if(_0x31f5a1){this['channel'][_0x2a0b('0xa2')](util['format']('ispeech\x20%s\x20file\x20created',_0x31f5a1));var _0x437f0d=this[_0x2a0b('0xd')]['streamFile'](_0x31f5a1,_0x14248a[_0x2a0b('0x138')]);try{fs[_0x2a0b('0x105')](_0x31f5a1+_0x2a0b('0x129'));}catch(_0x2a10fc){logger[_0x2a0b('0x2c')](_0x2a10fc);}return _0x437f0d;}return this[_0x2a0b('0xd')]['error'](_0x14248a,_0x2a0b('0x15a'));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x15b')]=function(_0x397116){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x15c'),_0x397116[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x397116[_0x2a0b('0x15d')])){return this['channel'][_0x2a0b('0x2c')](_0x397116,_0x2a0b('0x15e'));}logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0x15f'),this[_0x2a0b('0xd')][_0x2a0b('0x39')],_0x397116[_0x2a0b('0x15d')]));var _0x2dce30=this['agentLogin'][_0x2a0b('0x6e')](this,_0x397116[_0x2a0b('0x15d')]);if(_0x2dce30){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x160'),this[_0x2a0b('0xd')][_0x2a0b('0x39')],_0x397116['findBy']));this['channel'][_0x2a0b('0xa2')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x2a0b('0x39')],_0x397116[_0x2a0b('0x15d')]));return{'code':0xc8,'result':_0x2a0b('0x161')};}else{logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0x162'),this[_0x2a0b('0xd')][_0x2a0b('0x39')],_0x397116[_0x2a0b('0x15d')]));this['channel'][_0x2a0b('0xa2')](util[_0x2a0b('0x28')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x2a0b('0x39')],_0x397116[_0x2a0b('0x15d')]));return{'code':0xc8,'result':_0x2a0b('0x163')};}};AGIVertices[_0x2a0b('0x18')]['logout']=function(_0x286481){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0x164'),_0x286481[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x286481[_0x2a0b('0x15d')])){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x286481,'no\x20find\x20by\x20configured');}logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x15f'),this[_0x2a0b('0xd')]['callerid'],_0x286481[_0x2a0b('0x15d')]));var _0x29cfab=this[_0x2a0b('0x54')][_0x2a0b('0x6e')](this,_0x286481[_0x2a0b('0x15d')]);if(_0x29cfab){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x160'),this[_0x2a0b('0xd')][_0x2a0b('0x39')],_0x286481[_0x2a0b('0x15d')]));this['channel'][_0x2a0b('0xa2')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x2a0b('0xd')]['callerid'],_0x286481[_0x2a0b('0x15d')]));return{'code':0xc8,'result':_0x2a0b('0x161')};}else{logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x162'),this[_0x2a0b('0xd')]['callerid'],_0x286481[_0x2a0b('0x15d')]));this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x162'),this['channel'][_0x2a0b('0x39')],_0x286481['findBy']));return{'code':0xc8,'result':_0x2a0b('0x163')};}};AGIVertices[_0x2a0b('0x18')]['math']=function(_0x9c96b9){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0x165'),_0x9c96b9[_0x2a0b('0xa1')]));if(!this['isConfigured'](_0x9c96b9[_0x2a0b('0x166')])){return this[_0x2a0b('0xd')]['error'](_0x9c96b9,_0x2a0b('0x167'));}this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')]('math\x20%s',_0x9c96b9[_0x2a0b('0x166')]));var _0x1f992e=eval(_0x9c96b9[_0x2a0b('0x166')]);if(!this[_0x2a0b('0x9e')](_0x9c96b9[_0x2a0b('0xd7')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xd8'));}var _0x3ddb31=this[_0x2a0b('0xf')][_0x2a0b('0x6e')](this,_0x9c96b9[_0x2a0b('0xd7')]);if(!_0x3ddb31){return this[_0x2a0b('0xd')]['error'](_0x9c96b9,'no\x20variable\x20found');}if(_[_0x2a0b('0x93')](_0x1f992e)){var _0x3e05b5=this;_0x1f992e[_0x2a0b('0xd9')](function(_0x38cb1c,_0x38322a){_0x3e05b5[_0x2a0b('0xd')][_0x2a0b('0x97')](util[_0x2a0b('0x28')](_0x2a0b('0x168'),_0x3ddb31,_0x38322a),_0x38cb1c);});return this['channel']['noop'](util['format'](_0x2a0b('0x169'),_0x3ddb31));}else{return this['channel']['setVariable'](_0x3ddb31,_0x1f992e);}};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xb')]=function(_0x3bb167){logger['info'](util['format'](_0x2a0b('0x16a'),_0x3bb167[_0x2a0b('0xa1')]));if(_0x3bb167[_0x2a0b('0x111')]===0x0){return this[_0x2a0b('0x9f')](_0x3bb167);}_0x3bb167[_0x2a0b('0x111')]-=0x1;if(!this[_0x2a0b('0x9e')](_0x3bb167[_0x2a0b('0x112')])){return this['channel'][_0x2a0b('0x2c')](_0x3bb167,_0x2a0b('0x113'));}var _0x3c4964=this[_0x2a0b('0x1e')][_0x2a0b('0x6e')](this,_0x3bb167[_0x2a0b('0x112')]);if(!_0x3c4964){return this['channel'][_0x2a0b('0x2c')](_0x3bb167,_0x2a0b('0x114'));}var _0x8401e0=this[_0x2a0b('0xd')]['getData'](_0x3c4964,_0x3bb167[_0x2a0b('0x116')],_0x3bb167[_0x2a0b('0x16b')]);var _0x4d550e=_0x8401e0[_0x2a0b('0x9c')];if(_0x8401e0[_0x2a0b('0x9c')]===-0x1){this[_0x2a0b('0x36')][_0x2a0b('0x6e')](this,_0x3bb167,'-1');return _0x8401e0;}else if(_0x8401e0[_0x2a0b('0x9a')]===_0x2a0b('0x65')){_0x8401e0[_0x2a0b('0x9c')]=_0x8401e0[_0x2a0b('0x9c')]['length']>0x0?_0x8401e0[_0x2a0b('0x9c')]:'t';}else if(_[_0x2a0b('0x45')](_0x8401e0[_0x2a0b('0x9c')])){_0x8401e0[_0x2a0b('0x9c')]='#';_0x4d550e='#';}if(!this[_0x2a0b('0x9e')](_0x3bb167[_0x2a0b('0xd7')])){this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xd8'));}else{var _0xf269ac=this[_0x2a0b('0xf')]['sync'](this,_0x3bb167['variable_id']);if(!_0xf269ac){return this['channel'][_0x2a0b('0x2c')](_0x3bb167,_0x2a0b('0x11a'));}this[_0x2a0b('0xd')][_0x2a0b('0x97')](_0xf269ac,_0x4d550e);}this[_0x2a0b('0x36')]['sync'](this,_0x3bb167,_0x4d550e);return _0x8401e0;};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0xa2')]=function(_0x2eb285){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x16c'),_0x2eb285[_0x2a0b('0xa1')]));return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2eb285[_0x2a0b('0x16d')]||_0x2eb285['label']);};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x16e')]=function(_0x4d5314){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x16f'),_0x4d5314[_0x2a0b('0xa1')]));if(!this['isConfigured'](_0x4d5314[_0x2a0b('0x15d')])){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x4d5314,'no\x20find\x20by\x20configured');}logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x15f'),this[_0x2a0b('0xd')]['callerid'],_0x4d5314[_0x2a0b('0x15d')]));var _0x5699a1=this[_0x2a0b('0x50')][_0x2a0b('0x6e')](this,_0x4d5314[_0x2a0b('0x170')]);var _0x49afde=this[_0x2a0b('0x51')][_0x2a0b('0x6e')](this,_0x4d5314[_0x2a0b('0x15d')],_0x5699a1);if(_0x49afde){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x2a0b('0xd')][_0x2a0b('0x39')],_0x4d5314[_0x2a0b('0x15d')]));this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util['format'](_0x2a0b('0x160'),this['channel'][_0x2a0b('0x39')],_0x4d5314['findBy']));return{'code':0xc8,'result':_0x2a0b('0x161')};}else{logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x2a0b('0xd')][_0x2a0b('0x39')],_0x4d5314[_0x2a0b('0x15d')]));this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x160'),this[_0x2a0b('0xd')][_0x2a0b('0x39')],_0x4d5314[_0x2a0b('0x15d')]));return{'code':0xc8,'result':_0x2a0b('0x163')};}};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x171')]=function(_0x153783){logger['info'](util[_0x2a0b('0x28')]('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0x153783[_0x2a0b('0xa1')]));if(!this['isConfigured'](_0x153783['file_id'])){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x153783,_0x2a0b('0x113'));}var _0x240b17=this['getSound'][_0x2a0b('0x6e')](this,_0x153783[_0x2a0b('0x112')]);if(!_0x240b17){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x153783,_0x2a0b('0x114'));}var _0x37c820=this[_0x2a0b('0xd')][_0x2a0b('0xa5')](_0x2a0b('0x172'),[_0x240b17,_0x153783[_0x2a0b('0xe5')]]);if(_0x37c820[_0x2a0b('0x9c')]===-0x1){return _0x37c820;}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util['format'](_0x2a0b('0xc0'),'PLAYBACK',_0x240b17));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x173')]=function(_0x71965b){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x174'),_0x71965b[_0x2a0b('0xa1')]));if(!this['isConfigured'](_0x71965b[_0x2a0b('0x175')])){return this['channel'][_0x2a0b('0x2c')](_0x71965b,_0x2a0b('0x176'));}var _0x546ee3='';var _0x3b109e=parseInt(_0x71965b[_0x2a0b('0x175')],0xa);if(isNaN(_0x3b109e)){_0x546ee3=_0x71965b[_0x2a0b('0x175')];}else{_0x546ee3=this[_0x2a0b('0x13')]['sync'](this,_0x71965b[_0x2a0b('0x175')]);if(!_0x546ee3){return this['channel'][_0x2a0b('0x2c')](_0x71965b,_0x2a0b('0x177'));}}var _0x535477='';if(this[_0x2a0b('0x9e')](_0x71965b[_0x2a0b('0x112')])){var _0x4bdbd2=this[_0x2a0b('0x1e')][_0x2a0b('0x6e')](this,_0x71965b[_0x2a0b('0x112')]);if(_0x4bdbd2){_0x535477=_0x4bdbd2;}}this['createSquareDetailsReport'][_0x2a0b('0x6e')](this,_0x71965b,_0x546ee3);if(_0x71965b[_0x2a0b('0xe5')][_0x2a0b('0x178')]('x')<0x0){_0x71965b[_0x2a0b('0xe5')]+='x';}if(_0x71965b[_0x2a0b('0xe5')][_0x2a0b('0x178')]('X')<0x0){_0x71965b['opts']+='X';}this[_0x2a0b('0xd')][_0x2a0b('0x97')](_0x2a0b('0x179'),_0x546ee3?_0x546ee3[_0x2a0b('0x17a')]():'');var _0x38884d=this['channel'][_0x2a0b('0xa5')](_0x2a0b('0x17b'),[_0x546ee3,_0x71965b['opts'],_0x71965b[_0x2a0b('0x63')],_0x535477,_0x71965b['timeout'],_0x71965b[_0x2a0b('0x6')],_0x71965b[_0x2a0b('0x17c')],_0x71965b[_0x2a0b('0x17d')],'',_0x71965b['position']]);if(_0x38884d[_0x2a0b('0x9c')]===-0x1){return _0x38884d;}return this['channel'][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0xc0'),'QUEUE',_0x546ee3));};AGIVertices['prototype'][_0x2a0b('0x17e')]=function(_0x24e934){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0x17f'),_0x24e934[_0x2a0b('0xa1')]));var _0x54a063=_0x24e934['recordingFormat']||_0x2a0b('0x13f');var _0x48375a=util[_0x2a0b('0x28')]('%s_%s',this[_0x2a0b('0xd')][_0x2a0b('0x37')],rs[_0x2a0b('0x11c')](0x5));var _0x57bac3=util[_0x2a0b('0x28')](_0x2a0b('0x180'),FILES_PATH,_0x48375a,_0x54a063);var _0x3fa24e=util[_0x2a0b('0x28')](_0x2a0b('0x154'),FILES_PATH,_0x48375a);this[_0x2a0b('0x3a')]['sync'](this,_0x24e934,_0x48375a,_0x57bac3);this[_0x2a0b('0xd')]['setVariable'](_0x2a0b('0x181'),_0x48375a);logger[_0x2a0b('0x2d')](_0x2a0b('0x182'),_0x3fa24e,_0x54a063,_0x24e934['escape_digits'],_0x24e934[_0x2a0b('0x65')]);return this[_0x2a0b('0xd')][_0x2a0b('0x137')](_0x3fa24e,_0x54a063,_0x24e934[_0x2a0b('0x183')],_0x24e934['timeout'],undefined,!![]);};AGIVertices[_0x2a0b('0x18')]['restapi']=function(_0x1044fd){logger['info'](util['format'](_0x2a0b('0x184'),_0x1044fd[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x1044fd[_0x2a0b('0x63')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0x185'));}var _0x3514e6=this['restAPI'][_0x2a0b('0x6e')](this,_0x1044fd);logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x186'),util[_0x2a0b('0x187')](_0x3514e6,{'showHidden':![],'depth':null})));if(!this[_0x2a0b('0x9e')](_0x1044fd[_0x2a0b('0xd7')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0x188'));}var _0x18cd35=this['getVariable'][_0x2a0b('0x6e')](this,_0x1044fd['variable_id']);if(!_0x18cd35){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x1044fd,'no\x20variable\x20found');}this[_0x2a0b('0xd')]['setVariable'](util[_0x2a0b('0x28')](_0x2a0b('0x189'),_0x18cd35),_0x3514e6[_0x2a0b('0x72')]?_0x3514e6[_0x2a0b('0x72')]:_0x2a0b('0x18a'));this[_0x2a0b('0xd')][_0x2a0b('0x97')](util[_0x2a0b('0x28')](_0x2a0b('0x18b'),_0x18cd35),_0x3514e6[_0x2a0b('0x18c')]?_0x3514e6[_0x2a0b('0x18c')]:'OK');if(_0x3514e6[_0x2a0b('0x69')]){try{this['saveRestApiResult'](_0x3514e6[_0x2a0b('0x69')],_0x18cd35);}catch(_0x224d0b){logger[_0x2a0b('0x2c')](util[_0x2a0b('0x28')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x18cd35));}}return this[_0x2a0b('0xd')]['noop'](util[_0x2a0b('0x28')](_0x2a0b('0xdd'),_0x18cd35));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x18d')]=function(_0x4b7555){logger['info'](util['format'](_0x2a0b('0x18e'),_0x4b7555[_0x2a0b('0xa1')]));return this[_0x2a0b('0xd')][_0x2a0b('0x18f')](_0x4b7555['digits'][_0x2a0b('0x59')](/\s+/g,''),_0x4b7555[_0x2a0b('0x183')]);};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x190')]=function(_0x4af94a){logger['info'](util['format'](_0x2a0b('0x191'),_0x4af94a[_0x2a0b('0xa1')]));return this[_0x2a0b('0xd')][_0x2a0b('0x192')](_0x4af94a['number'][_0x2a0b('0x59')](/\s+/g,''),_0x4af94a[_0x2a0b('0x183')]);};AGIVertices['prototype'][_0x2a0b('0x193')]=function(_0x560fc8){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x194'),_0x560fc8[_0x2a0b('0xa1')]));return this[_0x2a0b('0xd')][_0x2a0b('0x195')](_0x560fc8[_0x2a0b('0x5d')],_0x560fc8['escape_digits']);};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x196')]=function(_0x1be6ee){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x197'),_0x1be6ee[_0x2a0b('0xa1')]));if(!this['isConfigured'](_0x1be6ee[_0x2a0b('0x198')])){return this['channel'][_0x2a0b('0xa2')](_0x2a0b('0x199'));}var _0x4ed956=this[_0x2a0b('0x20')][_0x2a0b('0x6e')](this,_0x1be6ee[_0x2a0b('0x198')]);if(!_0x4ed956||!_0x4ed956[_0x2a0b('0x19a')]){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x1be6ee,_0x2a0b('0x19b'));}var _0x3d7c28={'from':util[_0x2a0b('0x28')]('\x22%s\x22\x20<%s>',_0x4ed956['name'],_0x4ed956[_0x2a0b('0x19c')]||_0x4ed956[_0x2a0b('0x19a')]['user']),'to':_0x1be6ee['to']||'','cc':_0x1be6ee['cc']||'','bcc':_0x1be6ee[_0x2a0b('0x19d')]||'','subject':_0x1be6ee[_0x2a0b('0x19e')],'html':_0x1be6ee[_0x2a0b('0x5d')],'text':_0x1be6ee[_0x2a0b('0x5d')]};var _0x364d03={'tls':{'rejectUnauthorized':![]}};if(_0x4ed956[_0x2a0b('0x19a')][_0x2a0b('0x19f')]){_0x364d03['service']=_0x4ed956[_0x2a0b('0x19a')][_0x2a0b('0x19f')];}else{_0x364d03[_0x2a0b('0x1a0')]=_0x4ed956[_0x2a0b('0x19a')][_0x2a0b('0x1a0')];_0x364d03[_0x2a0b('0x1a1')]=_0x4ed956[_0x2a0b('0x19a')]['port'];_0x364d03['secure']=_0x4ed956[_0x2a0b('0x19a')][_0x2a0b('0x1a2')];}if(_0x4ed956[_0x2a0b('0x19a')][_0x2a0b('0x1a3')]){_0x364d03[_0x2a0b('0x1a4')]={'user':_0x4ed956[_0x2a0b('0x19a')][_0x2a0b('0x1a5')],'pass':_0x4ed956[_0x2a0b('0x19a')][_0x2a0b('0x1a6')]};}if(this['isConfigured'](_0x1be6ee['template_id'])){}logger[_0x2a0b('0xdf')]('sendMail\x20message',JSON['stringify'](_0x3d7c28));this[_0x2a0b('0x36')][_0x2a0b('0x6e')](this,_0x1be6ee,_0x1be6ee[_0x2a0b('0x198')]);this['channel'][_0x2a0b('0xa2')](util[_0x2a0b('0x28')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x4ed956[_0x2a0b('0x12')]));this[_0x2a0b('0x22')][_0x2a0b('0x6e')](this,_0x364d03,_0x3d7c28);return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0x1a7'));};AGIVertices['prototype'][_0x2a0b('0x1a8')]=function(_0x19b2eb){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0x1a9'),_0x19b2eb['label']));return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0x1aa'));};AGIVertices['prototype'][_0x2a0b('0x1ab')]=function(_0x74306a){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0x1ac'),_0x74306a[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x74306a[_0x2a0b('0x1ad')])){return this[_0x2a0b('0xd')]['noop']('no\x20sms\x20account\x20configured');}var _0xb6a769=this[_0x2a0b('0x33')][_0x2a0b('0x6e')](this,_0x74306a[_0x2a0b('0x1ad')]);if(!_0xb6a769){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x74306a,_0x2a0b('0x1ae'));}var _0x91be1b={'body':_0x74306a[_0x2a0b('0x1af')],'phone':_0x74306a['to']||'','SmsAccountId':_0xb6a769['id']};logger[_0x2a0b('0xdf')](_0x2a0b('0x1b0'),JSON['stringify'](_0x91be1b));this[_0x2a0b('0x36')][_0x2a0b('0x6e')](this,_0x74306a,_0x74306a[_0x2a0b('0x1ad')]);this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x1b1'),_0xb6a769[_0x2a0b('0x12')]));this['createSmsMessage'][_0x2a0b('0x6e')](this,_0x91be1b);return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0x1b2'));};AGIVertices['prototype'][_0x2a0b('0x1b3')]=function(_0x26126d){logger[_0x2a0b('0x2d')](util['format'](_0x2a0b('0x1b4'),_0x26126d[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x26126d[_0x2a0b('0xd7')])){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x26126d,'no\x20variable\x20selected');}var _0x148777=this[_0x2a0b('0xf')][_0x2a0b('0x6e')](this,_0x26126d[_0x2a0b('0xd7')]);if(!_0x148777){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x26126d,'no\x20variable\x20found');}return this[_0x2a0b('0xd')][_0x2a0b('0x97')](_0x148777,_0x26126d[_0x2a0b('0x1b5')]);};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x1b6')]=function(_0x2e1069){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0x1b7'),_0x2e1069[_0x2a0b('0xa1')]));this['channel'][_0x2a0b('0xa2')](_0x2a0b('0x1b8'));if(_0x2e1069[_0x2a0b('0xb4')]===_0x2a0b('0x1b9')){this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0x1ba'));return this[_0x2a0b('0xd')][_0x2a0b('0xb4')]();}return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0x1bb'));};AGIVertices[_0x2a0b('0x18')]['subproject']=function(_0x223616){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x223616['label']));if(!this['isConfigured'](_0x223616['project_id'])){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x223616,_0x2a0b('0x1bc'));}var _0x576fbb=this[_0x2a0b('0x15')]['sync'](this,_0x223616[_0x2a0b('0x1bd')]);if(!this['isConfigured'](_0x576fbb)){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x223616,util[_0x2a0b('0x28')](_0x2a0b('0x1be'),_0x223616[_0x2a0b('0x1bd')]));}if(_0x576fbb===this[_0x2a0b('0xd')][_0x2a0b('0x41')]){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x223616,_0x2a0b('0x1bf'));}this[_0x2a0b('0x36')][_0x2a0b('0x6e')](this,_0x223616,_0x576fbb);var _0x53cd54=this[_0x2a0b('0xd')]['exec'](_0x2a0b('0x1c0'),util[_0x2a0b('0x28')](_0x2a0b('0x1c1'),config[_0x2a0b('0x6')][_0x2a0b('0x1a0')]||_0x2a0b('0x1c2'),_0x576fbb,this['channel'][_0x2a0b('0x41')]));if(_0x53cd54[_0x2a0b('0x9c')]===-0x1){return _0x53cd54;}return this['channel'][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0xc0'),_0x2a0b('0x1c0'),_0x576fbb));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x1c3')]=function(_0x53ef54){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x1c4'),_0x53ef54['label']));var _0x4851d9=this['shellCommand'][_0x2a0b('0x6e')](this,_0x53ef54['command']);this[_0x2a0b('0x36')][_0x2a0b('0x6e')](this,_0x53ef54,_0x53ef54[_0x2a0b('0xb2')]);if(this['isConfigured'](_0x53ef54[_0x2a0b('0xd7')])){var _0x3d753a=this[_0x2a0b('0xf')][_0x2a0b('0x6e')](this,_0x53ef54[_0x2a0b('0xd7')]);if(_0x3d753a){this['channel']['setVariable'](_0x3d753a,_0x4851d9);return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x1c5'),_0x53ef54[_0x2a0b('0xb2')],_0x3d753a));}}return this['channel'][_0x2a0b('0xa2')](util['format'](_0x2a0b('0x1c6'),_0x53ef54['command']));};AGIVertices['prototype'][_0x2a0b('0x1c7')]=function(_0x34d063){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x1c8'),_0x34d063[_0x2a0b('0xa1')]));_0x34d063[_0x2a0b('0x5d')]=_0x34d063[_0x2a0b('0x5d')][_0x2a0b('0x59')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x34d063[_0x2a0b('0x5b')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0x1c9'));}if(!this[_0x2a0b('0x9e')](_0x34d063[_0x2a0b('0x5d')])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xa3'));}this['channel'][_0x2a0b('0xa2')](util[_0x2a0b('0x28')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x34d063['text']));var _0x19e720=this['googleCloudTTS'][_0x2a0b('0x6e')](this,_0x34d063);if(_0x19e720){this[_0x2a0b('0xd')]['noop'](util[_0x2a0b('0x28')](_0x2a0b('0x1ca'),_0x19e720));var _0x578254=this[_0x2a0b('0xd')][_0x2a0b('0x104')](_0x19e720);try{fs['unlink'](_0x19e720+_0x2a0b('0x129'));}catch(_0x5b30fc){logger['error'](_0x5b30fc);}return _0x578254;}return this[_0x2a0b('0xd')]['error'](_0x34d063,_0x2a0b('0x1cb'));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x1cc')]=function(_0x4e2f0d){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x1cd'),_0x4e2f0d[_0x2a0b('0xa1')]));_0x4e2f0d['text']=_0x4e2f0d[_0x2a0b('0x5d')][_0x2a0b('0x59')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x2a0b('0x9e')](_0x4e2f0d['text'])){return this[_0x2a0b('0xd')][_0x2a0b('0xa2')](_0x2a0b('0xa3'));}this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')]('Trying\x20Google\x20TTS\x20%s',_0x4e2f0d[_0x2a0b('0x5d')]));var _0x188c8f=this[_0x2a0b('0x62')][_0x2a0b('0x6e')](this,_0x4e2f0d);if(_0x188c8f){this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')]('Google\x20TTS\x20%s\x20file\x20created',_0x188c8f));var _0x105dc8=this['channel'][_0x2a0b('0x104')](_0x188c8f);try{fs[_0x2a0b('0x105')](_0x188c8f+_0x2a0b('0x129'));}catch(_0x32835b){logger[_0x2a0b('0x2c')](_0x32835b);}return _0x105dc8;}return this['channel'][_0x2a0b('0x2c')](_0x4e2f0d,_0x2a0b('0x1ce'));};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x1cf')]=function(_0x41d5c6){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x1d0'),_0x41d5c6[_0x2a0b('0xa1')]));if(!this[_0x2a0b('0x9e')](_0x41d5c6['findBy'])){return this[_0x2a0b('0xd')][_0x2a0b('0x2c')](_0x41d5c6,_0x2a0b('0x15e'));}logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x2a0b('0xd')]['callerid'],_0x41d5c6['findBy']));var _0x150677=this[_0x2a0b('0x53')][_0x2a0b('0x6e')](this,_0x41d5c6[_0x2a0b('0x15d')]);if(_0x150677){logger['info'](util[_0x2a0b('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x2a0b('0x39')],_0x41d5c6['findBy']));this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x2a0b('0x39')],_0x41d5c6[_0x2a0b('0x15d')]));return{'code':0xc8,'result':_0x2a0b('0x161')};}else{logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x2a0b('0xd')][_0x2a0b('0x39')],_0x41d5c6['findBy']));this[_0x2a0b('0xd')][_0x2a0b('0xa2')](util[_0x2a0b('0x28')](_0x2a0b('0x162'),this[_0x2a0b('0xd')][_0x2a0b('0x39')],_0x41d5c6[_0x2a0b('0x15d')]));return{'code':0xc8,'result':_0x2a0b('0x163')};}};AGIVertices[_0x2a0b('0x18')][_0x2a0b('0x1d1')]=function(_0x3e3006){logger[_0x2a0b('0x2d')](util[_0x2a0b('0x28')](_0x2a0b('0x1d2'),_0x3e3006[_0x2a0b('0xa1')]));var _0x584f95=this[_0x2a0b('0xd')][_0x2a0b('0xa5')]('VOICEMAIL',[_0x3e3006[_0x2a0b('0x1d3')],_0x3e3006[_0x2a0b('0xa4')]]);if(_0x584f95[_0x2a0b('0x9c')]===-0x1){return _0x584f95;}return this[_0x2a0b('0xd')]['noop'](util['format']('Executed\x20command\x20%s\x20%s',_0x2a0b('0x1d4'),_0x3e3006[_0x2a0b('0x1d3')]));};AGIVertices['prototype'][_0x2a0b('0x1d5')]=function(_0x59c46d){logger['info'](util[_0x2a0b('0x28')](_0x2a0b('0x1d6'),_0x59c46d['label']));if(!this[_0x2a0b('0x9e')](_0x59c46d[_0x2a0b('0xd7')])){return this[_0x2a0b('0xd')]['error'](_0x59c46d,'no\x20variable\x20selected');}var _0x1ae2ea=this['getVariable']['sync'](this,_0x59c46d[_0x2a0b('0xd7')]);if(!_0x1ae2ea){return this['channel'][_0x2a0b('0x2c')](_0x59c46d,_0x2a0b('0x11a'));}var _0x173ab9=this[_0x2a0b('0xd')][_0x2a0b('0xf')](_0x1ae2ea);return{'code':0xc8,'result':_0x173ab9[_0x2a0b('0x9a')]?_0x173ab9['extra']:'-'};};String[_0x2a0b('0x18')][_0x2a0b('0x99')]=function(_0x7a6f2d,_0x5b3039){return this[_0x2a0b('0x98')](_0x7a6f2d)[_0x2a0b('0x1d7')](_0x5b3039);};module['exports']=AGIVertices;
\ No newline at end of file
+var _0x6964=['Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','no\x20list\x20selected','delay','add','minutes','noop','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','no\x20text\x20configured','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','replace','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s_ROWS_COUNT','variable\x20%s\x20set','dial','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20found','SIP/%s','Executed\x20command\x20%s','DIAL','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','Dialogflow\x20Result\x20%s','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','client_email','no\x20client_email\x20configured','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','dialogflowV2','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','password','no\x20password\x20configured','Trying\x20SestekNDA:\x20%s','out','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','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','response','test','mindigit','maxdigit','hiddendigitsnum','generate','hiddendigitspos','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','aws\x20Polly\x20%s\x20file\x20created','.wav','awslex','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','beep','NOBEEP','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','%s/recordings/%s','recordFile','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','Enter\x20in\x20GOTO\x20(%s)\x20block','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','wav','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Trying\x20ispeech\x20TTS\x20%s','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','Enter\x20in\x20MATH\x20(%s)\x20block','no\x20operation\x20configured','math\x20%s','operation','%s[%s]','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20found','getData','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','opts','Executed\x20command\x20%s\x20%s','Enter\x20in\x20QUEUE\x20(%s)\x20block','no\x20queue\x20selected','queue_id','no\x20queue\x20found','indexOf','toLowerCase','macro','gosub','QUEUE','record','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','statusMessage','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','email','Smtp','user','service','host','port','secure','authentication','auth','pass','template_id','debug','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','sendSMS','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','no\x20variable\x20selected','start','Enter\x20in\x20START\x20(%s)\x20block','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','getSquareProject','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','mailbox','VOICEMAIL','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','path','lodash','shelljs','randomstring','moment','request-promise','../../config/logger','agi','./scripts','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProjectById','getSquareOdbc','dsn','getUser','getUserById','getTrunk','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','Intervals','format','Error\x20getting\x20ODBC\x20connection\x20%s','Error\x20executing\x20query\x20%s','info','close','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','uniqueid','label','arg_1','callerid','createSquareRecording','calleridname','context','extension','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agent','agentPause','agentUnpause','agentLogout','%s/%s@from-sip/n','LOCAL','agentLogin','shellCommand','trim','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','audioEncoding','googleTTS','google_tts_language','restAPI','url','method','timeout','number','POST','PUT','toUpperCase','body','parse','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','render','headers','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','sestekNDA','ispeechTTS','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','Amy','aws_text_type','awsLex','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','uri','clear','includes','agicommand','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','isArray','length','saveRestApiResult','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','createSquareDetailsReport','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','exec','MRCPRecog','MRCP_RECOG_CONFIDENCE','MRCP_RECOG_TRANSCRIPT','MRCP_RECOG_INSTANCE'];(function(_0x11549d,_0x19fb27){var _0x429658=function(_0x1c663d){while(--_0x1c663d){_0x11549d['push'](_0x11549d['shift']());}};_0x429658(++_0x19fb27);}(_0x6964,0x114));var _0x4696=function(_0x5a1a51,_0x144c79){_0x5a1a51=_0x5a1a51-0x0;var _0x47edd7=_0x6964[_0x5a1a51];return _0x47edd7;};'use strict';var fs=require('fs');var path=require(_0x4696('0x0'));var util=require('util');var _=require(_0x4696('0x1'));var sh=require(_0x4696('0x2'));var odbc=require('odbc')();var rs=require(_0x4696('0x3'));var moment=require(_0x4696('0x4'));var Mustache=require('mustache');var rp=require(_0x4696('0x5'));var logger=require(_0x4696('0x6'))(_0x4696('0x7'));var config=require('../../config/environment');var scripts=require(_0x4696('0x8'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=['rawHeaders',_0x4696('0x9')];var verticesWithRetry=[_0x4696('0xa'),_0x4696('0xb'),_0x4696('0xc')];var AGIVertices=function(_0x259836,_0x4df3dd,_0x1bca99){this[_0x4696('0xd')]=_0x259836;this[_0x4696('0xe')]=_0x4df3dd;this[_0x4696('0xf')]=_0x1bca99;};AGIVertices[_0x4696('0x10')][_0x4696('0x11')]=function(_0x449425,_0x36e6ce){this[_0x4696('0xe')][_0x4696('0x12')](_0x449425)[_0x4696('0x13')](function(_0x508a23){_0x36e6ce(null,_0x508a23?_0x508a23[_0x4696('0x14')]:![]);})[_0x4696('0x15')](function(_0x676a35){_0x36e6ce(_0x676a35);});};AGIVertices[_0x4696('0x10')][_0x4696('0x16')]=function(_0x21f5cc,_0x8b7da4){this[_0x4696('0xe')][_0x4696('0x17')](_0x21f5cc)[_0x4696('0x13')](function(_0x36b51a){_0x8b7da4(null,_0x36b51a?_0x36b51a['name']:![]);})[_0x4696('0x15')](function(_0x2a9695){_0x8b7da4(_0x2a9695);});};AGIVertices[_0x4696('0x10')]['getSquareProject']=function(_0x2554f8,_0x53fda7){this[_0x4696('0xe')][_0x4696('0x18')](_0x2554f8)[_0x4696('0x13')](function(_0x16bdcb){_0x53fda7(null,_0x16bdcb?_0x16bdcb['name']:![]);})[_0x4696('0x15')](function(_0x30b38c){_0x53fda7(_0x30b38c);});};AGIVertices[_0x4696('0x10')][_0x4696('0x19')]=function(_0x5e0b05,_0x246f09){this[_0x4696('0xe')]['getSquareOdbcById'](_0x5e0b05)['then'](function(_0x396ddb){_0x246f09(null,_0x396ddb?_0x396ddb[_0x4696('0x1a')]:![]);})[_0x4696('0x15')](function(_0x1a03b2){_0x246f09(_0x1a03b2);});};AGIVertices[_0x4696('0x10')][_0x4696('0x1b')]=function(_0x5beb75,_0x2c1c36){this[_0x4696('0xe')][_0x4696('0x1c')](_0x5beb75)[_0x4696('0x13')](function(_0x31d208){_0x2c1c36(null,_0x31d208?_0x31d208[_0x4696('0x14')]:![]);})[_0x4696('0x15')](function(_0x148100){_0x2c1c36(_0x148100);});};AGIVertices['prototype'][_0x4696('0x1d')]=function(_0x133fc7,_0x48fa96){this[_0x4696('0xe')]['getTrunkById'](_0x133fc7)[_0x4696('0x13')](function(_0x131f26){_0x48fa96(null,_0x131f26?_0x131f26['name']:![]);})[_0x4696('0x15')](function(_0x36df3e){_0x48fa96(_0x36df3e);});};AGIVertices['prototype'][_0x4696('0x1e')]=function(_0x4b0282,_0x5d7aa1){var _0x31c5e4=this;this[_0x4696('0xe')][_0x4696('0x1f')](_0x4b0282)['then'](function(_0x23fbc3){_0x5d7aa1(null,_0x23fbc3?_0x31c5e4[_0x4696('0x20')](_0x23fbc3[_0x4696('0x21')]):![]);})[_0x4696('0x15')](function(_0x14d3ed){_0x5d7aa1(_0x14d3ed);});};AGIVertices[_0x4696('0x10')][_0x4696('0x22')]=function(_0x50e8a3,_0x1dae42){this[_0x4696('0xe')][_0x4696('0x23')](_0x50e8a3)[_0x4696('0x13')](function(_0x35957e){_0x1dae42(null,_0x35957e?_0x35957e:![]);})[_0x4696('0x15')](function(_0x505c69){_0x1dae42(_0x505c69);});};AGIVertices[_0x4696('0x10')][_0x4696('0x24')]=function(_0x2e8a5c,_0x3e18d9,_0x81f9ab){this[_0x4696('0xf')][_0x4696('0x24')](_0x2e8a5c,_0x3e18d9)[_0x4696('0x13')](function(){_0x81f9ab(null);})[_0x4696('0x15')](function(_0x21dcc1){_0x81f9ab(_0x21dcc1);});};AGIVertices[_0x4696('0x10')][_0x4696('0x25')]=function(_0x9a0d9f,_0x21cd9a){this[_0x4696('0xe')][_0x4696('0x26')](_0x9a0d9f)[_0x4696('0x13')](function(_0x1e53b4){if(_0x1e53b4){if(_0x1e53b4[_0x4696('0x27')]){_0x21cd9a(null,[_0x1e53b4['interval']]);}else{_0x21cd9a(null,_['map'](_0x1e53b4[_0x4696('0x28')],'interval'));}}else{_0x21cd9a(null,![]);}})[_0x4696('0x15')](function(_0x41ab8c){_0x21cd9a(_0x41ab8c);});};AGIVertices[_0x4696('0x10')]['getSoundPath']=function(_0x5ddf63){return util[_0x4696('0x29')]('%s/sounds/converted/%s',FILES_PATH,_0x5ddf63);};AGIVertices[_0x4696('0x10')]['getQueryOdbc']=function(_0x1acaaf,_0x305e88,_0x29b2e7){odbc['open'](_0x1acaaf,function(_0xefe487){if(_0xefe487){logger['error'](_0x4696('0x2a'),_0xefe487);_0x29b2e7(_0xefe487);}else{logger['info']('ODBC\x20connection\x20successfully');odbc['query'](_0x305e88,function(_0x30968f,_0x45f7f){if(_0x30968f){logger['info'](_0x4696('0x2b'),_0x305e88);_0x29b2e7(_0x30968f);}else{logger[_0x4696('0x2c')]('Query\x20executed\x20correctly\x20%s',_0x305e88);odbc[_0x4696('0x2d')](function(_0x373bc1){if(_0x373bc1){logger[_0x4696('0x2e')](_0x4696('0x2f'),_0x373bc1);}_0x29b2e7(null,_0x45f7f);});}});}});};AGIVertices[_0x4696('0x10')][_0x4696('0x30')]=function(_0xa42675,_0x7120cb){this[_0x4696('0xe')][_0x4696('0x31')](_0xa42675)[_0x4696('0x13')](function(_0x4db7fb){_0x7120cb(null,_0x4db7fb?_0x4db7fb:![]);})[_0x4696('0x15')](function(_0x58f433){_0x7120cb(_0x58f433);});};AGIVertices['prototype'][_0x4696('0x32')]=function(_0x5eb54d,_0x5b59e5){this[_0x4696('0xe')][_0x4696('0x32')](_0x5eb54d)['then'](function(_0x4af057){_0x5b59e5(null,_0x4af057);})[_0x4696('0x15')](function(_0x491d1b){_0x5b59e5(_0x491d1b);});};AGIVertices[_0x4696('0x10')]['createSquareDetailsReport']=function(_0x47fbaa,_0x23aff4,_0x453098){this[_0x4696('0xe')]['createSquareDetailsReport']({'uniqueid':this[_0x4696('0xd')][_0x4696('0x33')],'node':_0x47fbaa[_0x4696('0x34')],'application':_0x47fbaa['agicommand'],'data':_0x23aff4||null,'project_name':this[_0x4696('0xd')][_0x4696('0x35')],'callerid':this[_0x4696('0xd')][_0x4696('0x36')]})[_0x4696('0x13')](function(_0x4de5a1){if(_0x453098){_0x453098(null,_0x4de5a1);}})['catch'](function(_0x3aa3bf){if(_0x453098){_0x453098(_0x3aa3bf);}});};AGIVertices[_0x4696('0x10')][_0x4696('0x37')]=function(_0x396e0d,_0x121891,_0x3cf5db,_0x4486eb){this['rpc'][_0x4696('0x37')]({'uniqueid':this['channel'][_0x4696('0x33')],'callerid':this['channel'][_0x4696('0x36')],'calleridname':this['channel'][_0x4696('0x38')],'context':this[_0x4696('0xd')][_0x4696('0x39')],'extension':this['channel'][_0x4696('0x3a')],'priority':this[_0x4696('0xd')]['priority'],'accountcode':this[_0x4696('0xd')][_0x4696('0x3b')],'dnid':this[_0x4696('0xd')][_0x4696('0x3c')],'projectName':this[_0x4696('0xd')]['arg_1'],'saveName':_0x121891,'filename':_0x396e0d[_0x4696('0x3d')]||_0x121891,'savePath':_0x3cf5db})['then'](function(_0x487bff){_0x4486eb(null,_0x487bff);})[_0x4696('0x15')](function(_0x429d4c){_0x4486eb(_0x429d4c);});};AGIVertices[_0x4696('0x10')]['createSquareMessage']=function(_0x2cce32,_0x13d755,_0x5bc6f6,_0x5a2a04,_0x5d8a42){this[_0x4696('0xe')][_0x4696('0x3e')]({'uniqueid':this['channel']['uniqueid'],'body':_0x2cce32,'direction':_0x13d755,'providerName':_0x5bc6f6,'providerResponse':_0x5a2a04})[_0x4696('0x13')](function(_0x1179e5){if(_0x5d8a42){_0x5d8a42(null,_0x1179e5);}})[_0x4696('0x15')](function(_0x4110e7){if(_0x5d8a42){_0x5d8a42(_0x4110e7);}});};AGIVertices[_0x4696('0x10')][_0x4696('0x3f')]=function(_0x4719c6,_0x1fa5e5){this[_0x4696('0xe')][_0x4696('0x3f')]({'firstName':_[_0x4696('0x40')](_0x4719c6[_0x4696('0x14')])||_[_0x4696('0x41')](_0x4719c6[_0x4696('0x14')])?_0x4696('0x42')+Math['random']():_0x4719c6[_0x4696('0x14')],'lastName':_['isEmpty'](_0x4719c6['lastName'])||_[_0x4696('0x41')](_0x4719c6[_0x4696('0x43')])?null:_0x4719c6[_0x4696('0x43')],'phone':_0x4719c6[_0x4696('0x44')],'ListId':_0x4719c6[_0x4696('0x45')],'scheduledat':_0x4719c6[_0x4696('0x46')],'callbackUniqueid':this[_0x4696('0xd')]['uniqueid'],'tags':_0x4696('0x47'),'description':_0x4696('0x48')+_0x4719c6['scheduledAt'][_0x4696('0x49')](),'priority':_0x4719c6[_0x4696('0x4a')]})[_0x4696('0x13')](function(_0x412a88){_0x1fa5e5(null,_0x412a88);})[_0x4696('0x15')](function(_0x1d006f){_0x1fa5e5(_0x1d006f);});};AGIVertices[_0x4696('0x10')][_0x4696('0x4b')]=function(_0x5ec75d,_0x15de93){this[_0x4696('0xe')][_0x4696('0x4c')](_0x5ec75d)['then'](function(_0x5985f1){_0x15de93(null,_0x5985f1?_0x5985f1[_0x4696('0x14')]:![]);})[_0x4696('0x15')](function(_0x22d3cc){_0x15de93(_0x22d3cc);});};AGIVertices[_0x4696('0x10')]['agentPause']=function(_0x19d6e8,_0x119b8e,_0x4d6976){var _0x5b593c={'role':_0x4696('0x4d')};_0x5b593c[_0x19d6e8]=this[_0x4696('0xd')][_0x4696('0x36')];this['rpc'][_0x4696('0x4e')](_0x5b593c,_0x119b8e,this[_0x4696('0xd')][_0x4696('0x33')])['then'](function(_0x57a12c){_0x4d6976(null,_['isNil'](_0x57a12c)?![]:!![]);})[_0x4696('0x15')](function(_0x36dcc9){logger[_0x4696('0x2e')](_0x36dcc9);_0x4d6976(null,![]);});};AGIVertices['prototype']['agentUnpause']=function(_0x295156,_0x569562){var _0x55ec59={'role':_0x4696('0x4d')};_0x55ec59[_0x295156]=this[_0x4696('0xd')][_0x4696('0x36')];this[_0x4696('0xe')][_0x4696('0x4f')](_0x55ec59)[_0x4696('0x13')](function(_0x5f259d){_0x569562(null,_[_0x4696('0x41')](_0x5f259d)?![]:!![]);})['catch'](function(_0x4c6e93){logger[_0x4696('0x2e')](_0x4c6e93);_0x569562(null,![]);});};AGIVertices[_0x4696('0x10')][_0x4696('0x50')]=function(_0x1ccdee,_0x207bf7){var _0x58c936={'role':_0x4696('0x4d')};_0x58c936[_0x1ccdee]=this[_0x4696('0xd')][_0x4696('0x36')];this[_0x4696('0xe')][_0x4696('0x50')](_0x58c936)[_0x4696('0x13')](function(_0x4d9479){_0x207bf7(null,_[_0x4696('0x41')](_0x4d9479)?![]:!![]);})[_0x4696('0x15')](function(_0x5792ab){logger[_0x4696('0x2e')](_0x5792ab);_0x207bf7(null,![]);});};AGIVertices[_0x4696('0x10')]['agentLogin']=function(_0x28914f,_0x1f6219){var _0x47f7a0={'role':_0x4696('0x4d')};_0x47f7a0[_0x28914f]=this[_0x4696('0xd')][_0x4696('0x36')];var _0xcd061d=_0x28914f!='internal'?util[_0x4696('0x29')](_0x4696('0x51'),_0x4696('0x52'),this[_0x4696('0xd')][_0x4696('0x36')]):undefined;this[_0x4696('0xe')][_0x4696('0x53')](_0x47f7a0,_0xcd061d)[_0x4696('0x13')](function(_0x37d890){_0x1f6219(null,_[_0x4696('0x41')](_0x37d890)?![]:!![]);})[_0x4696('0x15')](function(_0x25b030){logger['error'](_0x25b030);_0x1f6219(null,![]);});};AGIVertices['prototype'][_0x4696('0x54')]=function(_0x271d97,_0x230e1f){sh['exec'](_[_0x4696('0x55')](_0x271d97),function(_0x4dd882,_0x179ce2){var _0x4200f8=_0x179ce2['replace'](/(\r\n|\n|\r)/gm,'');_0x230e1f(null,_0x4200f8);});};AGIVertices[_0x4696('0x10')][_0x4696('0x56')]=function(_0x175d9e,_0x57728b){scripts[_0x4696('0x56')](_0x175d9e[_0x4696('0x57')],_0x175d9e[_0x4696('0x58')]||_0x4696('0x59'),_0x175d9e['text'],_0x175d9e[_0x4696('0x5a')]||_0x4696('0x5b'),_0x175d9e[_0x4696('0x5c')]||'MALE',_0x175d9e[_0x4696('0x5d')]||'MP3')[_0x4696('0x13')](function(_0x98502e){_0x57728b(null,_0x98502e);})[_0x4696('0x15')](function(_0x4c0229){_0x57728b(_0x4c0229);});};AGIVertices[_0x4696('0x10')][_0x4696('0x5e')]=function(_0xe6b0f2,_0x50dc9a){scripts['googleTTS'](_0xe6b0f2[_0x4696('0x59')],_0xe6b0f2[_0x4696('0x5f')]||'en',0x1)['then'](function(_0x4a4d49){_0x50dc9a(null,_0x4a4d49);})['catch'](function(_0x14289f){_0x50dc9a(_0x14289f);});};AGIVertices[_0x4696('0x10')][_0x4696('0x60')]=function(_0x370a3f,_0x5e0363){var _0x34820c={'uri':_0x370a3f[_0x4696('0x61')],'method':_0x370a3f[_0x4696('0x62')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x370a3f[_0x4696('0x63')])===_0x4696('0x64')&&parseInt(_0x370a3f[_0x4696('0x63')])>=0x1?parseInt(_0x370a3f[_0x4696('0x63')])*0x3e8:0x5*0x3e8};if(_['includes']([_0x4696('0x65'),_0x4696('0x66')],_0x34820c[_0x4696('0x62')][_0x4696('0x67')]())){try{_0x34820c[_0x4696('0x68')]=_0x370a3f[_0x4696('0x9')]?JSON[_0x4696('0x69')](_0x370a3f[_0x4696('0x9')]):{};}catch(_0x438505){logger[_0x4696('0x2e')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x438505);}}try{_0x34820c['headers']=_0x370a3f[_0x4696('0x6a')]?JSON[_0x4696('0x69')](_0x370a3f[_0x4696('0x6a')]):{};}catch(_0x2ff55d){logger[_0x4696('0x2e')](_0x4696('0x6b'),_0x2ff55d);}if(_0x370a3f['computedVariables']){try{var _0x5be6cb=require(_0x370a3f[_0x4696('0x6c')])[_0x4696('0x6d')](this,_0x34820c);_0x34820c['uri']=Mustache[_0x4696('0x6e')](_0x370a3f[_0x4696('0x61')],_0x5be6cb,{},['$$','$$']);if(_0x34820c[_0x4696('0x6f')]){_0x34820c[_0x4696('0x6f')]=JSON[_0x4696('0x69')](Mustache[_0x4696('0x6e')](JSON[_0x4696('0x70')](_0x34820c[_0x4696('0x6f')]),_0x5be6cb,{},['$$','$$']));}if(_0x34820c[_0x4696('0x68')]){_0x34820c[_0x4696('0x68')]=JSON['parse'](Mustache['render'](JSON[_0x4696('0x70')](_0x34820c[_0x4696('0x68')]),_0x5be6cb,{},['$$','$$']));}}catch(_0x28d68f){logger['error'](_0x4696('0x71'),_0x28d68f);}}rp(_0x34820c)['then'](function(_0x3a8b9f){var _0x30a6f8={'statusCode':_0x3a8b9f['statusCode']||0xc8,'statusMessage':_0x3a8b9f['statusMessage']||'OK','headers':_0x3a8b9f['headers']||{},'body':_0x3a8b9f[_0x4696('0x68')]||{}};_0x5e0363(null,_0x30a6f8);})['catch'](function(_0x74738e){var _0x952dc5={'statusCode':_0x74738e[_0x4696('0x72')]||0x1f4,'statusMessage':_0x74738e[_0x4696('0x73')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x74738e[_0x4696('0x74')][_0x4696('0x6f')]||{},'body':_0x74738e[_0x4696('0x74')]['body']||{}};_0x5e0363(null,_0x952dc5);});};AGIVertices[_0x4696('0x10')][_0x4696('0x75')]=function(_0x5b694f,_0x4ac431){scripts[_0x4696('0x75')](this[_0x4696('0xd')]['uniqueid'],_0x5b694f[_0x4696('0x76')],_0x5b694f[_0x4696('0x59')],_0x5b694f[_0x4696('0x77')]||'en')['then'](function(_0x4bf531){_0x4ac431(null,_0x4bf531);})[_0x4696('0x15')](function(_0x291e8f){_0x4ac431(_0x291e8f);});};AGIVertices[_0x4696('0x10')][_0x4696('0x78')]=function(_0x4a61fb,_0xe7f30c){scripts[_0x4696('0x78')](this[_0x4696('0xd')][_0x4696('0x33')],_0x4a61fb[_0x4696('0x79')],_0x4a61fb['client_email'],_0x4a61fb[_0x4696('0x7a')],_0x4a61fb[_0x4696('0x59')],_0x4a61fb['dialogflowV2_language']||'en')[_0x4696('0x13')](function(_0x63c6e6){_0xe7f30c(null,_0x63c6e6);})[_0x4696('0x15')](function(_0x11bd90){_0xe7f30c(_0x11bd90);});};AGIVertices[_0x4696('0x10')][_0x4696('0x7b')]=function(_0x543ead,_0x2458f2){scripts[_0x4696('0x7b')](this[_0x4696('0xd')],_0x543ead)[_0x4696('0x13')](function(_0x31a70f){_0x2458f2(null,_0x31a70f);})[_0x4696('0x15')](function(_0x3ffd2e){_0x2458f2(_0x3ffd2e);});};AGIVertices[_0x4696('0x10')]['ispeechTTS']=function(_0x53ded1,_0x5a3a6f){scripts[_0x4696('0x7c')](_0x53ded1['key'],_0x53ded1[_0x4696('0x59')],_0x53ded1['ispeech_tts_language']||'en-US',_0x53ded1['speed'])[_0x4696('0x13')](function(_0x5123f0){_0x5a3a6f(null,_0x5123f0);})[_0x4696('0x15')](function(_0x133e21){_0x5a3a6f(_0x133e21);});};AGIVertices[_0x4696('0x10')][_0x4696('0x7d')]=function(_0xe692f9,_0x4e757f,_0x4a3ba2){scripts[_0x4696('0x7d')](_0x4e757f,_0xe692f9[_0x4696('0x76')],_0xe692f9[_0x4696('0x7e')]||_0x4696('0x5b'),this[_0x4696('0x7f')](_0xe692f9[_0x4696('0x80')])?_0xe692f9['model']:undefined)['then'](function(_0x57584f){_0x4a3ba2(null,_0x57584f);})['catch'](function(_0x5916ec){_0x4a3ba2(_0x5916ec);});};AGIVertices[_0x4696('0x10')]['awsPolly']=function(_0x4e207b,_0x3cdfd9){scripts[_0x4696('0x81')](_0x4e207b[_0x4696('0x82')],_0x4e207b[_0x4696('0x83')],_0x4e207b[_0x4696('0x84')],_0x4e207b['aws_polly_voice']||_0x4696('0x85'),_0x4e207b['text'],_0x4e207b[_0x4696('0x86')]||_0x4696('0x59'))[_0x4696('0x13')](function(_0x9067c7){_0x3cdfd9(null,_0x9067c7);})[_0x4696('0x15')](function(_0x5ac572){_0x3cdfd9(_0x5ac572);});};AGIVertices[_0x4696('0x10')][_0x4696('0x87')]=function(_0x5d9a3d,_0x48324b){scripts[_0x4696('0x87')](this['channel'][_0x4696('0x33')],_0x5d9a3d['aws_access_key_id'],_0x5d9a3d[_0x4696('0x83')],_0x5d9a3d['aws_lex_region'],_0x5d9a3d[_0x4696('0x59')],_0x5d9a3d[_0x4696('0x88')])[_0x4696('0x13')](function(_0x2ab5ad){_0x48324b(null,_0x2ab5ad);})[_0x4696('0x15')](function(_0x2a41e5){_0x48324b(_0x2a41e5);});};AGIVertices[_0x4696('0x10')]['googleASR']=function(_0x150035,_0x8928c9,_0x83e27e){scripts[_0x4696('0x89')](_0x8928c9,_0x150035['key'],_0x150035[_0x4696('0x8a')]||_0x4696('0x5b'))['then'](function(_0x2d7e61){_0x83e27e(null,_0x2d7e61);})[_0x4696('0x15')](function(_0x5d8059){_0x83e27e(_0x5d8059);});};AGIVertices[_0x4696('0x10')][_0x4696('0x8b')]=function(_0xa8a404,_0xb50a87,_0x114c7c){scripts['tildeASR'](_0xb50a87,_0xa8a404[_0x4696('0x8c')],_0xa8a404[_0x4696('0x8d')],_0xa8a404[_0x4696('0x8e')])[_0x4696('0x13')](function(_0x56c79e){_0x114c7c(null,_0x56c79e);})[_0x4696('0x15')](function(_0x5f4652){_0x114c7c(_0x5f4652);});};AGIVertices['prototype'][_0x4696('0x8f')]=function(_0x19838c){var _0x2c38de=_[_0x4696('0x90')](verticesWithRetry,_0x19838c[_0x4696('0x91')])?_0x19838c:_[_0x4696('0x92')](_0x19838c);for(var _0x5c54ca in _0x2c38de){if(_0x2c38de[_0x4696('0x93')](_0x5c54ca)){if(_0x2c38de[_0x5c54ca]&&_[_0x4696('0x94')](_0x2c38de[_0x5c54ca])){if(_[_0x4696('0x90')](recursiveMapAttributes,_0x5c54ca)){_0x2c38de[_0x5c54ca]=this[_0x4696('0x95')](_0x2c38de[_0x5c54ca]);}else{_0x2c38de[_0x5c54ca]=this[_0x4696('0x96')](_0x2c38de[_0x5c54ca]);}}}}return _0x2c38de;};AGIVertices[_0x4696('0x10')]['recursiveNodeIndex']=function(_0x188cfa){for(var _0x55b9ce in _0x188cfa){if(_0x188cfa[_0x4696('0x93')](_0x55b9ce)){if(_[_0x4696('0x97')](_0x188cfa[_0x55b9ce])){this[_0x4696('0x98')](_0x188cfa[_0x55b9ce]);}else if(_[_0x4696('0x99')](_0x188cfa[_0x55b9ce])){for(var _0x4866fd=0x0;_0x4866fd<_0x188cfa[_0x55b9ce][_0x4696('0x9a')];_0x4866fd++){this[_0x4696('0x98')](_0x188cfa[_0x55b9ce][_0x4866fd]);}}else if(_[_0x4696('0x94')](_0x188cfa[_0x55b9ce])){_0x188cfa[_0x55b9ce]=this['replaceAllVariables'](_0x188cfa[_0x55b9ce]);}}}};AGIVertices[_0x4696('0x10')][_0x4696('0x9b')]=function(_0x5c5bb1,_0x48ae6a){for(var _0x556bf7 in _0x5c5bb1){if(_0x5c5bb1[_0x4696('0x93')](_0x556bf7)){if(_[_0x4696('0x97')](_0x5c5bb1[_0x556bf7])){if(!_[_0x4696('0x40')](_0x5c5bb1[_0x556bf7])){this[_0x4696('0x9b')](_0x5c5bb1[_0x556bf7],util[_0x4696('0x29')]('%s.%s',_0x48ae6a,_0x556bf7));}}else if(_[_0x4696('0x99')](_0x5c5bb1[_0x556bf7])){for(var _0x2d0527=0x0;_0x2d0527<_0x5c5bb1[_0x556bf7]['length'];_0x2d0527++){this[_0x4696('0x9b')](_0x5c5bb1[_0x556bf7][_0x2d0527],util['format'](_0x4696('0x9c'),_0x48ae6a,_0x556bf7+'['+_0x2d0527+']'));}}else{if(!_[_0x4696('0x41')](_0x5c5bb1[_0x556bf7])){this[_0x4696('0xd')][_0x4696('0x9d')](util[_0x4696('0x29')]('%s.%s',_0x48ae6a,_0x556bf7),_0x5c5bb1[_0x556bf7]);}}}}};AGIVertices[_0x4696('0x10')]['replaceObjectAllVariables']=function(_0x1b2357){try{var _0x5f41c3=JSON[_0x4696('0x69')](_0x1b2357);this[_0x4696('0x98')](_0x5f41c3);return JSON[_0x4696('0x70')](_0x5f41c3);}catch(_0x146d09){return this[_0x4696('0x96')](_0x1b2357);}};AGIVertices[_0x4696('0x10')][_0x4696('0x96')]=function(_0x50cf79){var _0x44d450=_0x50cf79[_0x4696('0x9e')]('{');for(var _0x50e055=0x1;_0x50e055<_0x44d450[_0x4696('0x9a')];_0x50e055+=0x1){var _0x4de146=_0x44d450[_0x50e055][_0x4696('0x9e')]('}');if(_0x4de146['length']>0x1){_0x50cf79=_0x50cf79[_0x4696('0x9f')]('{'+_0x4de146[0x0]+'}',this[_0x4696('0xd')][_0x4696('0x11')](_0x4de146[0x0])[_0x4696('0xa0')]||_0x4de146[0x0]);}}if(_0x44d450[_0x4696('0x9a')]===0x1){return _0x50cf79[_0x4696('0x49')]();}return this[_0x4696('0x96')](_0x50cf79);};AGIVertices['prototype'][_0x4696('0xa1')]=function(_0x23479a,_0x242463){var _0xab2778=this[_0x4696('0xd')][_0x4696('0x11')](_0x23479a);if(_0xab2778[_0x4696('0xa2')]===-0x1){return _0xab2778;}logger['info'](util[_0x4696('0x29')](_0x4696('0xa3'),_0x242463,_0xab2778['extra']));return this['channel'][_0x4696('0x9d')](_0x242463,_0xab2778[_0x4696('0xa0')]);};AGIVertices['prototype'][_0x4696('0x7f')]=function(_0x3e7bea){return _0x3e7bea&&_0x3e7bea!=='0'&&_0x3e7bea!=='-1'&&_0x3e7bea!=='';};AGIVertices[_0x4696('0x10')][_0x4696('0xa4')]=function(_0x4136f6){this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x4136f6,'-');_0x4136f6['retry']=_0x4136f6[_0x4696('0xa4')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0x4696('0xa6')]=function(_0x55745a){logger[_0x4696('0x2c')](util['format'](_0x4696('0xa7'),_0x55745a[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x55745a[_0x4696('0x59')])){return this[_0x4696('0xd')]['noop']('no\x20text\x20configured');}var _0x28a2a2='\x22'+_0x55745a[_0x4696('0x59')]+'\x22';if(this[_0x4696('0x7f')](_0x55745a[_0x4696('0x74')])){_0x28a2a2+=','+_0x55745a[_0x4696('0x74')];}var _0x330f7c=this['channel']['exec'](_0x4696('0xa8'),_0x28a2a2);if(_0x330f7c[_0x4696('0xa2')]===-0x1){return _0x330f7c;}return this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')](_0x4696('0xa9'),_0x28a2a2));};AGIVertices[_0x4696('0x10')][_0x4696('0xaa')]=function(_0x4a9c0f){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xab'),_0x4a9c0f[_0x4696('0x34')]));if(!this['isConfigured'](_0x4a9c0f[_0x4696('0xac')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xad'));}var _0x52c7c3=_0x4a9c0f[_0x4696('0xac')];if(this[_0x4696('0x7f')](_0x4a9c0f[_0x4696('0x74')])){_0x52c7c3+=','+_0x4a9c0f['options'];}var _0x34e6c0=this[_0x4696('0xd')][_0x4696('0xae')](_0x4696('0xaf'),_0x52c7c3);if(_0x34e6c0[_0x4696('0xa2')]===-0x1){return _0x34e6c0;}var _0x273149=this[_0x4696('0xa1')]('RECOG_CONFIDENCE()',_0x4696('0xb0'));if(_0x273149[_0x4696('0xa2')]===-0x1){return _0x273149;}var _0x247400=this['getAndSetVariable']('RECOG_INPUT()',_0x4696('0xb1'));if(_0x247400[_0x4696('0xa2')]===-0x1){return _0x247400;}var _0x30058d=this[_0x4696('0xa1')]('RECOG_INSTANCE()',_0x4696('0xb2'));if(_0x30058d[_0x4696('0xa2')]===-0x1){return _0x30058d;}return this['channel']['noop'](util['format'](_0x4696('0xb3'),_0x52c7c3));};AGIVertices[_0x4696('0x10')]['agi']=function(_0x13b42a){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xb4'),_0x13b42a[_0x4696('0x34')]));return this['channel']['agi']([_0x13b42a[_0x4696('0xb5')],_0x13b42a[_0x4696('0xb6')]]);};AGIVertices[_0x4696('0x10')][_0x4696('0xb7')]=function(_0x5bdd89){logger[_0x4696('0x2c')](util['format'](_0x4696('0xb8'),_0x5bdd89[_0x4696('0x34')]));if(this[_0x4696('0x7f')](_0x5bdd89[_0x4696('0x63')])){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xb9'),_0x5bdd89['timeout']));var _0x5e3810=this[_0x4696('0xd')]['wait'](_0x5bdd89[_0x4696('0x63')]);if(_0x5e3810[_0x4696('0xa2')]===-0x1){return _0x5e3810;}}return this[_0x4696('0xd')][_0x4696('0xb7')]();};AGIVertices['prototype']['callback']=function(_0x28ff33){logger[_0x4696('0x2c')](util[_0x4696('0x29')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x28ff33[_0x4696('0x34')]));if(!this['isConfigured'](_0x28ff33['list_id'])){return this['channel'][_0x4696('0x2e')](_0x28ff33,_0x4696('0xba'));}_0x28ff33['scheduledAt']=moment();if(this[_0x4696('0x7f')](_0x28ff33[_0x4696('0xbb')])){_0x28ff33[_0x4696('0x46')]=moment()[_0x4696('0xbc')](_0x28ff33[_0x4696('0xbb')],_0x4696('0xbd'));}if(!this[_0x4696('0x7f')](_0x28ff33[_0x4696('0x4a')])){_0x28ff33[_0x4696('0x4a')]=0x2;}this['createCmContact'][_0x4696('0x6d')](this,_0x28ff33);return this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0xbf'),_0x28ff33[_0x4696('0x44')],_0x28ff33[_0x4696('0x45')],_0x28ff33[_0x4696('0x46')]));};AGIVertices[_0x4696('0x10')][_0x4696('0xc0')]=function(_0x585e28){logger['info'](util['format'](_0x4696('0xc1'),_0x585e28[_0x4696('0x34')]));var _0x1ca184=this[_0x4696('0xd')][_0x4696('0xae')](_0x585e28[_0x4696('0xc2')],_0x585e28[_0x4696('0x74')]);if(_0x1ca184[_0x4696('0xa2')]===-0x1){return _0x1ca184;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('Executed\x20command\x20%s\x20%s',_0x585e28['application'],_0x585e28[_0x4696('0x74')]));};AGIVertices[_0x4696('0x10')][_0x4696('0xc3')]=function(_0x261529){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xc4'),_0x261529[_0x4696('0x34')]));if(!this['isConfigured'](_0x261529[_0x4696('0x59')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xc5'));}var _0x193b16='\x22'+_0x261529['text']+'\x22';if(this[_0x4696('0x7f')](_0x261529[_0x4696('0x74')])){_0x193b16+=','+_0x261529[_0x4696('0x74')];}var _0x3db4f7=this[_0x4696('0xd')][_0x4696('0xae')](_0x4696('0xa8'),_0x193b16);if(_0x3db4f7['result']===-0x1){return _0x3db4f7;}return this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0xa9'),_0x193b16));};AGIVertices[_0x4696('0x10')][_0x4696('0xc6')]=function(_0x4c831b){logger[_0x4696('0x2c')](util['format'](_0x4696('0xc7'),_0x4c831b['label']));if(!this['isConfigured'](_0x4c831b[_0x4696('0x59')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}var _0x521f24='\x22'+_0x4c831b['text']+'\x22';if(this[_0x4696('0x7f')](_0x4c831b[_0x4696('0x74')])){_0x521f24+=','+_0x4c831b['options'];}var _0x17add6=this[_0x4696('0xd')][_0x4696('0xae')](_0x4696('0xa8'),_0x521f24);if(_0x17add6[_0x4696('0xa2')]===-0x1){return _0x17add6;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('Executed\x20command\x20MRCPSynth\x20%s',_0x521f24));};AGIVertices['prototype'][_0x4696('0xc8')]=function(_0xdba13f){logger['info'](util[_0x4696('0x29')](_0x4696('0xc9'),_0xdba13f[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0xdba13f[_0x4696('0xac')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xad'));}var _0x26169d=_0xdba13f[_0x4696('0xac')];if(this[_0x4696('0x7f')](_0xdba13f[_0x4696('0x74')])){_0x26169d+=','+_0xdba13f['options'];}var _0x12a715=this[_0x4696('0xd')][_0x4696('0xae')](_0x4696('0xaf'),_0x26169d);if(_0x12a715['result']===-0x1){return _0x12a715;}var _0x43961b=this[_0x4696('0xa1')](_0x4696('0xca'),_0x4696('0xcb'));if(_0x43961b[_0x4696('0xa2')]===-0x1){return _0x43961b;}var _0x4a5a53=this[_0x4696('0xa1')](_0x4696('0xcc'),_0x4696('0xcd'));if(_0x4a5a53[_0x4696('0xa2')]===-0x1){return _0x4a5a53;}var _0x2ca82b=this['getAndSetVariable'](_0x4696('0xce'),_0x4696('0xcf'));if(_0x2ca82b[_0x4696('0xa2')]===-0x1){return _0x2ca82b;}return this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')]('Executed\x20command\x20MRCPRecog\x20%s',_0x26169d));};AGIVertices[_0x4696('0x10')][_0x4696('0xd0')]=function(_0x35048e){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xd1'),_0x35048e[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x35048e[_0x4696('0xac')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20grammar\x20configured');}var _0x4f045b=_0x35048e[_0x4696('0xac')];if(this['isConfigured'](_0x35048e[_0x4696('0x74')])){_0x4f045b+=','+_0x35048e[_0x4696('0x74')];}var _0x15068c=this[_0x4696('0xd')]['exec']('MRCPRecog',_0x4f045b);if(_0x15068c['result']===-0x1){return _0x15068c;}var _0x419b2a=this[_0x4696('0xa1')](_0x4696('0xca'),'SESTEK_ASR_CONFIDENCE');if(_0x419b2a[_0x4696('0xa2')]===-0x1){return _0x419b2a;}var _0x434b7f=this['getAndSetVariable'](_0x4696('0xcc'),'SESTEK_ASR_TRANSCRIPT');if(_0x434b7f[_0x4696('0xa2')]===-0x1){return _0x434b7f;}var _0x443194=this[_0x4696('0xa1')](_0x4696('0xce'),_0x4696('0xd2'));if(_0x443194[_0x4696('0xa2')]===-0x1){return _0x443194;}return this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')]('Executed\x20command\x20MRCPRecog\x20%s',_0x4f045b));};AGIVertices[_0x4696('0x10')][_0x4696('0xd3')]=function(_0x44bc57){logger['info'](util[_0x4696('0x29')](_0x4696('0xd4'),_0x44bc57[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x44bc57[_0x4696('0xd5')])){return this['channel'][_0x4696('0x2e')](_0x44bc57,_0x4696('0xd6'));}var _0x509ffe=this[_0x4696('0x19')][_0x4696('0x6d')](this,_0x44bc57[_0x4696('0xd5')]);if(!_0x509ffe){return this['channel'][_0x4696('0x2e')](_0x44bc57,_0x4696('0xd7'));}if(!this['isConfigured'](_0x44bc57[_0x4696('0xd8')])){return this['channel'][_0x4696('0x2e')](_0x44bc57,_0x4696('0xd9'));}var _0x4aa80b=_0x44bc57[_0x4696('0xd8')][_0x4696('0xda')](/(\r\n|\n|\r)/gm,'\x20');this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0xdb'),_0x4aa80b));var _0x17f700=this['getQueryOdbc']['sync'](this,_0x509ffe,_0x4aa80b);this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x44bc57,_0x4aa80b);if(!this[_0x4696('0x7f')](_0x44bc57[_0x4696('0xdc')])){return this['channel']['noop'](_0x4696('0xdd'));}var _0x3d2876=this[_0x4696('0x11')][_0x4696('0x6d')](this,_0x44bc57[_0x4696('0xdc')]);if(!_0x3d2876){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x44bc57,_0x4696('0xde'));}var _0x4c77bd=this;_0x17f700[_0x4696('0xdf')](function(_0x35a92c,_0x49e08c){Object[_0x4696('0xe0')](_0x35a92c)[_0x4696('0xdf')](function(_0x1f4111){_0x4c77bd[_0x4696('0xd')][_0x4696('0x9d')](util['format']('%s[%s][%s]',_0x3d2876,_0x49e08c,_0x1f4111),_0x35a92c[_0x1f4111]);});});this[_0x4696('0xd')]['setVariable'](util['format'](_0x4696('0xe1'),_0x3d2876),_0x17f700['length']);return this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0xe2'),_0x3d2876));};AGIVertices[_0x4696('0x10')][_0x4696('0xe3')]=function(_0x253cd6){logger['debug'](util['format'](_0x4696('0xe4'),_0x253cd6[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x253cd6[_0x4696('0xe5')])){return this[_0x4696('0xd')]['error'](_0x253cd6,'no\x20user\x20selected');}var _0x49ede4=this[_0x4696('0x1b')][_0x4696('0x6d')](this,_0x253cd6[_0x4696('0xe5')]);if(!_0x49ede4){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x253cd6,_0x4696('0xe6'));}var _0x3cbef8=this[_0x4696('0xd')]['exec']('DIAL',[util['format'](_0x4696('0xe7'),_0x49ede4),_0x253cd6[_0x4696('0x63')],_0x253cd6['opts'],_0x253cd6[_0x4696('0x61')]]);if(_0x3cbef8[_0x4696('0xa2')]===-0x1){return _0x3cbef8;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0xe8'),_0x4696('0xe9')));};AGIVertices[_0x4696('0x10')][_0x4696('0xea')]=function(_0x11390c){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xeb'),_0x11390c['label']));if(!this[_0x4696('0x7f')](_0x11390c[_0x4696('0x76')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xec'));}if(!this[_0x4696('0x7f')](_0x11390c['text'])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}this[_0x4696('0xd')][_0x4696('0xed')]=!![];this[_0x4696('0xa5')](_0x11390c);this[_0x4696('0x3e')](_0x11390c[_0x4696('0x59')],'in','','');this['channel']['noop'](util['format'](_0x4696('0xee'),_0x11390c[_0x4696('0x59')]));var _0x54d27c=this[_0x4696('0x75')][_0x4696('0x6d')](this,_0x11390c);if(_0x54d27c){for(var _0x4743e9 in _0x54d27c){if(_0x54d27c[_0x4696('0x93')](_0x4743e9)){this[_0x4696('0xd')][_0x4696('0x9d')](util[_0x4696('0x29')](_0x4696('0xef'),_0x4743e9[_0x4696('0x67')]()),_0x54d27c[_0x4743e9]);}}this[_0x4696('0x3e')](_0x54d27c[_0x4696('0xf0')],'out',_0x4696('0xea'),'');return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0xf1'),_0x54d27c['speech']));}return this[_0x4696('0xd')][_0x4696('0x2e')](_0x11390c,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0x4696('0x10')]['dialogflowV2']=function(_0x27150f){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0xf2'),_0x27150f[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x27150f[_0x4696('0x79')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20project_id\x20configured');}if(!this['isConfigured'](_0x27150f[_0x4696('0xf3')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xf4'));}if(!this[_0x4696('0x7f')](_0x27150f[_0x4696('0x7a')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xf5'));}if(!this[_0x4696('0x7f')](_0x27150f[_0x4696('0xf6')])){return this['channel'][_0x4696('0xbe')](_0x4696('0xf7'));}if(!this[_0x4696('0x7f')](_0x27150f[_0x4696('0x59')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}this[_0x4696('0xd')][_0x4696('0xed')]=!![];this[_0x4696('0xa5')](_0x27150f);this[_0x4696('0x3e')](_0x27150f[_0x4696('0x59')],'in','','');this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0xf8'),_0x27150f['text']));var _0x5a8d25=this[_0x4696('0x78')]['sync'](this,_0x27150f);if(_0x5a8d25){for(var _0x34dfa1 in _0x5a8d25){if(_0x5a8d25['hasOwnProperty'](_0x34dfa1)){if(_0x34dfa1!==_0x4696('0xf9')){this[_0x4696('0xd')]['setVariable'](util[_0x4696('0x29')](_0x4696('0xef'),_0x34dfa1[_0x4696('0x67')]()),_0x5a8d25[_0x34dfa1]);}}}this[_0x4696('0x3e')](_0x5a8d25[_0x4696('0xf0')],'out',_0x4696('0xfa'),_0x5a8d25['providerResponse']);return this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0xfb'),_0x5a8d25['speech']));}return this['channel'][_0x4696('0x2e')](_0x27150f,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0x4696('0x10')][_0x4696('0xfc')]=function(_0x36f01d){logger['info'](util[_0x4696('0x29')](_0x4696('0xfd'),_0x36f01d[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x36f01d[_0x4696('0xfe')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20ndauth\x20url\x20configured');}if(!this[_0x4696('0x7f')](_0x36f01d['username'])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20username\x20configured');}if(!this['isConfigured'](_0x36f01d[_0x4696('0xff')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x100'));}if(!this[_0x4696('0x7f')](_0x36f01d['ndassistant_url'])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}this[_0x4696('0xd')]['bot']=!![];this[_0x4696('0xa5')](_0x36f01d);this[_0x4696('0x3e')](_0x36f01d[_0x4696('0x59')],'in','','');this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x101'),_0x36f01d[_0x4696('0x59')]));var _0xfcc920=this[_0x4696('0x7b')][_0x4696('0x6d')](this,_0x36f01d);if(_0xfcc920){for(var _0x28d24d in _0xfcc920){if(_0xfcc920[_0x4696('0x93')](_0x28d24d)){this[_0x4696('0xd')]['setVariable'](util[_0x4696('0x29')]('SESTEK_NDA_%s',_0x28d24d['toUpperCase']()),_0xfcc920[_0x28d24d]);}}this[_0x4696('0x3e')](_0xfcc920['speech'],_0x4696('0x102'),_0x4696('0xfc'),'');if(_0xfcc920[_0x4696('0x103')]){this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')](_0x4696('0x104'),_0xfcc920['audiofile']));var _0x49ec73=this[_0x4696('0xd')][_0x4696('0x105')](_0xfcc920['audiofile']);try{fs[_0x4696('0x106')](_0xfcc920[_0x4696('0x103')]+'.wav');}catch(_0x464997){logger[_0x4696('0x2e')](_0x464997);}return _0x49ec73;}else{return this[_0x4696('0xd')][_0x4696('0xbe')](util['format']('SestekNDA\x20Result\x20%s',_0xfcc920[_0x4696('0xf0')]));}}return this['channel'][_0x4696('0x2e')](_0x36f01d,_0x4696('0x107'));};AGIVertices[_0x4696('0x10')][_0x4696('0x108')]=function(_0x4f542f){logger['info'](util[_0x4696('0x29')](_0x4696('0x109'),_0x4f542f['label']));return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x108'));};AGIVertices['prototype'][_0x4696('0x10a')]=function(_0x4334e1){logger[_0x4696('0x2c')](util['format']('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x4334e1[_0x4696('0x34')]));var _0x42cdcf='';if(_0x4334e1[_0x4696('0x10b')]){if(!this[_0x4696('0x7f')](_0x4334e1[_0x4696('0x10b')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x4334e1,_0x4696('0x10c'));}else{var _0x43a610=parseInt(_0x4334e1[_0x4696('0x10b')],0xa);if(isNaN(_0x43a610)){_0x42cdcf=_0x4334e1[_0x4696('0x10b')];}else{_0x42cdcf=this[_0x4696('0x1d')][_0x4696('0x6d')](this,_0x4334e1[_0x4696('0x10b')]);if(!_0x42cdcf){return this['channel'][_0x4696('0x2e')](_0x4334e1,_0x4696('0x10d'));}}}}else if(_0x4334e1[_0x4696('0x10e')]){_0x42cdcf=_0x4334e1[_0x4696('0x10e')];}else{return this[_0x4696('0xd')][_0x4696('0x2e')](_0x4334e1,_0x4696('0x10c'));}var _0x2c7551=this['channel']['exec']('DIAL',[util[_0x4696('0x29')](_0x4696('0x10f'),_0x42cdcf,_0x4334e1[_0x4696('0x44')]),_0x4334e1[_0x4696('0x63')],_0x4334e1['opts'],_0x4334e1[_0x4696('0x61')]]);if(_0x2c7551['result']===-0x1){return _0x2c7551;}return this[_0x4696('0xd')]['noop'](util['format'](_0x4696('0xe8'),'DIAL'));};AGIVertices[_0x4696('0x10')][_0x4696('0x110')]=function(_0x483faa){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x111'),_0x483faa['label']));return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x110'));};AGIVertices['prototype'][_0x4696('0xb')]=function(_0x2ababc){logger['info'](util[_0x4696('0x29')](_0x4696('0x112'),_0x2ababc[_0x4696('0x34')]));if(_0x2ababc[_0x4696('0x113')]===0x0){return this[_0x4696('0xa4')](_0x2ababc);}_0x2ababc[_0x4696('0x113')]-=0x1;if(!this[_0x4696('0x7f')](_0x2ababc[_0x4696('0x114')])){return this['channel'][_0x4696('0x2e')](_0x2ababc,_0x4696('0x115'));}var _0x5b114c=this['getSound'][_0x4696('0x6d')](this,_0x2ababc['file_id']);if(!_0x5b114c){return this[_0x4696('0xd')]['error'](_0x2ababc,'no\x20file\x20audio\x20found');}if(!this[_0x4696('0x7f')](_0x2ababc[_0x4696('0xdc')])){return this['channel'][_0x4696('0x2e')](_0x4696('0xdd'));}var _0x30ec38=this[_0x4696('0xd')]['getData'](_0x5b114c,_0x2ababc[_0x4696('0x116')],_0x2ababc['maxdigit']);var _0x1a062c=_0x30ec38[_0x4696('0xa2')]?_0x30ec38[_0x4696('0xa2')][_0x4696('0x49')]():'';logger[_0x4696('0x2c')](_0x4696('0x117'),JSON['stringify'](_0x30ec38));if(_0x30ec38[_0x4696('0xa2')]===-0x1){this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x2ababc,_0x1a062c);return _0x30ec38;}else if(_0x30ec38[_0x4696('0xa0')]===_0x4696('0x63')){_0x30ec38[_0x4696('0xa2')]=_0x1a062c[_0x4696('0x9a')]>=parseInt(_0x2ababc['mindigit'])?'x':'i';}else{_0x30ec38[_0x4696('0xa2')]=_0x1a062c['length']>=parseInt(_0x2ababc[_0x4696('0x118')])&&_0x1a062c['length']<=parseInt(_0x2ababc[_0x4696('0x119')])?'x':'i';}var _0x112e1e=this['getVariable'][_0x4696('0x6d')](this,_0x2ababc[_0x4696('0xdc')]);if(!_0x112e1e){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x2ababc,_0x4696('0xde'));}this[_0x4696('0xd')][_0x4696('0x9d')](_0x112e1e,_0x1a062c);if(this['isConfigured'](_0x2ababc[_0x4696('0x11a')])){var _0x303298=parseInt(_0x2ababc[_0x4696('0x11a')],0xa);var _0x4045bb=rs[_0x4696('0x11b')]({'charset':'*','length':_0x303298});var _0x41d616=_0x1a062c[_0x4696('0x9a')];if(_0x41d616>0x0){if(_0x41d616>_0x303298){this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x2ababc,_0x2ababc[_0x4696('0x11c')]==='first'?_0x4045bb+_0x1a062c[_0x4696('0x11d')](_0x303298):_0x1a062c[_0x4696('0x11d')](0x0,_0x41d616-_0x303298)+_0x4045bb);}else{this['createSquareDetailsReport'][_0x4696('0x6d')](this,_0x2ababc,rs[_0x4696('0x11b')]({'charset':'*','length':_0x41d616}));}}else{this['createSquareDetailsReport'][_0x4696('0x6d')](this,_0x2ababc,'');}}else{this[_0x4696('0xa5')]['sync'](this,_0x2ababc,_0x1a062c);}return _0x30ec38;};AGIVertices[_0x4696('0x10')][_0x4696('0xc')]=function(_0x18ec03){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x11e'),_0x18ec03[_0x4696('0x34')]));return this['getdigits'](_0x18ec03);};AGIVertices[_0x4696('0x10')][_0x4696('0x11f')]=function(_0x26d4a3){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x120'),_0x26d4a3['label']));this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x26d4a3,_0x26d4a3[_0x4696('0x121')]);return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x122'),_0x26d4a3['goalname']));};AGIVertices['prototype'][_0x4696('0x123')]=function(_0xd24cb0){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x124'),_0xd24cb0[_0x4696('0x34')]));if(!this['isConfigured'](_0xd24cb0['aws_access_key_id'])||!this[_0x4696('0x7f')](_0xd24cb0[_0x4696('0x83')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x4696('0x7f')](_0xd24cb0[_0x4696('0x59')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xc5'));}this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('Trying\x20aws\x20Polly\x20%s',_0xd24cb0[_0x4696('0x59')]));var _0x258abf=this['awsPolly'][_0x4696('0x6d')](this,_0xd24cb0);if(_0x258abf){this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0x125'),_0x258abf));var _0x2d3ed8=this['channel'][_0x4696('0x105')](_0x258abf);try{fs[_0x4696('0x106')](_0x258abf+_0x4696('0x126'));}catch(_0x337485){logger[_0x4696('0x2e')](_0x337485);}return _0x2d3ed8;}return this['channel'][_0x4696('0x2e')](_0xd24cb0,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x4696('0x10')][_0x4696('0x127')]=function(_0x224fc8){logger[_0x4696('0x2c')](util['format']('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x224fc8[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x224fc8['aws_access_key_id'])||!this['isConfigured'](_0x224fc8[_0x4696('0x83')])){return this[_0x4696('0xd')]['noop'](_0x4696('0x128'));}if(!this[_0x4696('0x7f')](_0x224fc8[_0x4696('0x88')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x129'));}if(!this['isConfigured'](_0x224fc8['text'])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}this[_0x4696('0xd')][_0x4696('0xed')]=!![];this[_0x4696('0xa5')](_0x224fc8);this[_0x4696('0x3e')](_0x224fc8[_0x4696('0x59')],'in','','');this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x12a'),_0x224fc8[_0x4696('0x59')]));var _0x2ef3b8=this[_0x4696('0x87')][_0x4696('0x6d')](this,_0x224fc8);if(_0x2ef3b8){for(var _0x6e0069 in _0x2ef3b8){if(_0x2ef3b8[_0x4696('0x93')](_0x6e0069)&&_[_0x4696('0x94')](_0x2ef3b8[_0x6e0069])){this['channel'][_0x4696('0x9d')](util[_0x4696('0x29')](_0x4696('0x12b'),_0x6e0069[_0x4696('0x67')]()),_0x2ef3b8[_0x6e0069]);}}if(_[_0x4696('0x41')](_0x2ef3b8[_0x4696('0x73')])){return this['channel'][_0x4696('0xbe')](_0x4696('0x12c'));}else{this[_0x4696('0x3e')](_0x2ef3b8[_0x4696('0x73')],_0x4696('0x102'),_0x4696('0x12d'),'');return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x12e'),_0x2ef3b8['message']));}}return this[_0x4696('0xd')][_0x4696('0x2e')](_0x224fc8,_0x4696('0x12f'));};AGIVertices[_0x4696('0x10')][_0x4696('0x130')]=function(_0x4457fa){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x131'),_0x4457fa['label'],_0x4457fa[_0x4696('0x63')]));if(!this[_0x4696('0x7f')](_0x4457fa[_0x4696('0x76')])){return this[_0x4696('0xd')]['noop'](_0x4696('0xec'));}var _0x479574='wav';var _0x3aee35=util[_0x4696('0x29')]('%s/recordings/%s',FILES_PATH,rs[_0x4696('0x11b')](0x4));var _0x1051d5=util[_0x4696('0x29')]('%s.%s',_0x3aee35,_0x479574);var _0x42406c=!![];if(_0x4457fa[_0x4696('0x132')]===_0x4696('0x133')){_0x42406c=![];}var _0x1ea420=this[_0x4696('0xd')]['recordFile'](_0x3aee35,_0x479574,_0x4457fa[_0x4696('0x134')],_0x4457fa[_0x4696('0x63')],undefined,_0x42406c);if(_0x1ea420[_0x4696('0xa2')]!==-0x1){this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0x135'),_0x1051d5));var _0x5d1d89=this[_0x4696('0x89')][_0x4696('0x6d')](this,_0x4457fa,_0x1051d5);if(_0x5d1d89){for(var _0x491086 in _0x5d1d89){if(_0x5d1d89[_0x4696('0x93')](_0x491086)){this[_0x4696('0xd')][_0x4696('0x9d')](util['format'](_0x4696('0x136'),_0x491086[_0x4696('0x67')]()),_0x5d1d89[_0x491086]);}}return this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0x137'),JSON['stringify'](_0x5d1d89)));}}return _0x1ea420;};AGIVertices['prototype'][_0x4696('0x138')]=function(_0x444da9){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x139'),_0x444da9['label']));if(!this['isConfigured'](_0x444da9[_0x4696('0x8c')])){return this[_0x4696('0xd')]['noop'](_0x4696('0x13a'));}if(!this[_0x4696('0x7f')](_0x444da9['appsecret'])){return this[_0x4696('0xd')]['noop'](_0x4696('0x13b'));}var _0x535fde='wav';var _0x19f9e7=util['format'](_0x4696('0x13c'),FILES_PATH,rs[_0x4696('0x11b')](0x4));var _0x307d63=util[_0x4696('0x29')]('%s.%s',_0x19f9e7,_0x535fde);var _0x504208=!![];if(_0x444da9[_0x4696('0x132')]===_0x4696('0x133')){_0x504208=![];}var _0x2a29c8=this['channel'][_0x4696('0x13d')](_0x19f9e7,_0x535fde,_0x444da9['intKey'],_0x444da9[_0x4696('0x63')],undefined,_0x504208);if(_0x2a29c8[_0x4696('0xa2')]!==-0x1){this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')](_0x4696('0x13e'),_0x307d63));var _0x1f99e8=this['tildeASR'][_0x4696('0x6d')](this,_0x444da9,_0x307d63);if(_0x1f99e8){for(var _0x103a8e in _0x1f99e8){if(_0x1f99e8[_0x4696('0x93')](_0x103a8e)){this[_0x4696('0xd')][_0x4696('0x9d')](util['format'](_0x4696('0x13f'),_0x103a8e[_0x4696('0x67')]()),_0x1f99e8[_0x103a8e]);}}return this[_0x4696('0xd')][_0x4696('0xbe')](util['format']('TildeASR\x20Result\x20%s',JSON[_0x4696('0x70')](_0x1f99e8)));}}return _0x2a29c8;};AGIVertices['prototype']['gotoc']=function(_0x4247bc){logger['info'](util[_0x4696('0x29')](_0x4696('0x140'),_0x4247bc[_0x4696('0x34')]));return this['channel']['continueAt'](_0x4247bc[_0x4696('0x39')],_0x4247bc['extension'],_0x4247bc['priority']);};AGIVertices[_0x4696('0x10')]['gotoif']=function(_0x5842ec){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x141'),_0x5842ec['label']));if(!this[_0x4696('0x7f')](_0x5842ec[_0x4696('0x142')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x5842ec,_0x4696('0x143'));}try{var _0x5c0ccd=eval(_0x5842ec[_0x4696('0x142')])?_0x4696('0x144'):_0x4696('0x145');this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('EVAL\x20CONDITION\x20%s\x20%s',_0x5842ec[_0x4696('0x142')],_0x5c0ccd));return{'code':0xc8,'result':_0x5c0ccd};}catch(_0x3e881c){return{'code':0xc8,'result':_0x4696('0x145')};}};AGIVertices[_0x4696('0x10')][_0x4696('0x146')]=function(_0x5d0c7a){logger['info'](util[_0x4696('0x29')](_0x4696('0x147'),_0x5d0c7a[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x5d0c7a['interval_id'])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x5d0c7a,'no\x20interval\x20configured');}var _0x3c42a5=this[_0x4696('0x25')]['sync'](this,_0x5d0c7a[_0x4696('0x148')]);if(!_0x3c42a5){return this[_0x4696('0xd')]['error'](_0x5d0c7a,_0x4696('0x149'));}for(var _0x57ac7e=0x0;_0x57ac7e<_0x3c42a5[_0x4696('0x9a')];_0x57ac7e+=0x1){var _0x32fbbf=this[_0x4696('0xd')][_0x4696('0x11')](util[_0x4696('0x29')](_0x4696('0x14a'),_0x3c42a5[_0x57ac7e]));if(_0x32fbbf[_0x4696('0xa2')]===-0x1){return _0x32fbbf;}logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x14b'),_0x3c42a5[_0x57ac7e],_0x32fbbf[_0x4696('0xa0')]));if(_0x32fbbf[_0x4696('0xa0')]==='true'){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x14b'),_0x3c42a5[_0x57ac7e],_0x4696('0x144')));this['channel'][_0x4696('0xbe')](util['format'](_0x4696('0x14b'),_0x3c42a5[_0x57ac7e],'true'));return{'code':0xc8,'result':_0x4696('0x144')};}else{logger['info'](util['format']('IFTIME\x20%s\x20%s',_0x3c42a5[_0x57ac7e],_0x4696('0x145')));this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')]('IFTIME\x20%s\x20%s',_0x3c42a5[_0x57ac7e],'false'));}}return{'code':0xc8,'result':'false'};};AGIVertices['prototype'][_0x4696('0x14c')]=function(_0x1d4d98){logger['info'](util[_0x4696('0x29')](_0x4696('0x14d'),_0x1d4d98[_0x4696('0x34')]));return this[_0x4696('0xd')]['hangup']();};AGIVertices[_0x4696('0x10')]['ispeechasr']=function(_0x142b56){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x14e'),_0x142b56['label']));if(!this[_0x4696('0x7f')](_0x142b56[_0x4696('0x76')])){return this['channel'][_0x4696('0xbe')](_0x4696('0xec'));}var _0x29d7ef=_0x4696('0x14f');var _0x2c5609=util[_0x4696('0x29')](_0x4696('0x13c'),FILES_PATH,rs[_0x4696('0x11b')](0x4));var _0x42b0da=util['format'](_0x4696('0x9c'),_0x2c5609,_0x29d7ef);var _0x61ed17=!![];if(_0x142b56[_0x4696('0x132')]==='NOBEEP'){_0x61ed17=![];}var _0x275dbc=this[_0x4696('0xd')][_0x4696('0x13d')](_0x2c5609,_0x29d7ef,_0x142b56[_0x4696('0x134')],_0x142b56[_0x4696('0x63')],undefined,_0x61ed17);if(_0x275dbc[_0x4696('0xa2')]!==-0x1){this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')](_0x4696('0x150'),_0x42b0da));var _0x4010e6=this['ispeechASR'][_0x4696('0x6d')](this,_0x142b56,_0x42b0da);if(_0x4010e6){for(var _0x57f866 in _0x4010e6){if(_0x4010e6[_0x4696('0x93')](_0x57f866)){this[_0x4696('0xd')]['setVariable'](util['format']('ISPEECH_ASR_%s',_0x57f866['toUpperCase']()),_0x4010e6[_0x57f866]);}}return this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x151'),JSON['stringify'](_0x4010e6)));}}return _0x275dbc;};AGIVertices[_0x4696('0x10')][_0x4696('0x152')]=function(_0x2ad280){logger[_0x4696('0x2c')](util[_0x4696('0x29')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x2ad280[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x2ad280[_0x4696('0x76')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20key\x20configured');}if(!this[_0x4696('0x7f')](_0x2ad280['text'])){return this['channel'][_0x4696('0xbe')]('no\x20text\x20configured');}this[_0x4696('0xd')]['noop'](util[_0x4696('0x29')](_0x4696('0x153'),_0x2ad280[_0x4696('0x59')]));var _0x2ee1ef=this[_0x4696('0x7c')][_0x4696('0x6d')](this,_0x2ad280);if(_0x2ee1ef){this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x150'),_0x2ee1ef));var _0x207ee9=this['channel'][_0x4696('0x105')](_0x2ee1ef,_0x2ad280[_0x4696('0x134')]);try{fs['unlink'](_0x2ee1ef+_0x4696('0x126'));}catch(_0x5e5be3){logger['error'](_0x5e5be3);}return _0x207ee9;}return this[_0x4696('0xd')]['error'](_0x2ad280,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x4696('0x10')]['login']=function(_0xc70edd){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x154'),_0xc70edd[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0xc70edd[_0x4696('0x155')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0xc70edd,_0x4696('0x156'));}logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x157'),this[_0x4696('0xd')][_0x4696('0x36')],_0xc70edd[_0x4696('0x155')]));var _0x4a0357=this[_0x4696('0x53')][_0x4696('0x6d')](this,_0xc70edd[_0x4696('0x155')]);if(_0x4a0357){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x158'),this['channel'][_0x4696('0x36')],_0xc70edd[_0x4696('0x155')]));this['channel'][_0x4696('0xbe')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x4696('0xd')][_0x4696('0x36')],_0xc70edd[_0x4696('0x155')]));return{'code':0xc8,'result':_0x4696('0x159')};}else{logger['info'](util['format'](_0x4696('0x15a'),this['channel']['callerid'],_0xc70edd['findBy']));this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x15a'),this['channel']['callerid'],_0xc70edd[_0x4696('0x155')]));return{'code':0xc8,'result':_0x4696('0x15b')};}};AGIVertices['prototype'][_0x4696('0x15c')]=function(_0x10f42a){logger[_0x4696('0x2c')](util['format'](_0x4696('0x15d'),_0x10f42a['label']));if(!this['isConfigured'](_0x10f42a[_0x4696('0x155')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x10f42a,_0x4696('0x156'));}logger[_0x4696('0x2c')](util['format'](_0x4696('0x157'),this[_0x4696('0xd')][_0x4696('0x36')],_0x10f42a[_0x4696('0x155')]));var _0x28dcf6=this['agentLogout'][_0x4696('0x6d')](this,_0x10f42a[_0x4696('0x155')]);if(_0x28dcf6){logger[_0x4696('0x2c')](util['format'](_0x4696('0x158'),this[_0x4696('0xd')]['callerid'],_0x10f42a[_0x4696('0x155')]));this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x158'),this[_0x4696('0xd')]['callerid'],_0x10f42a[_0x4696('0x155')]));return{'code':0xc8,'result':'success'};}else{logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x15a'),this[_0x4696('0xd')][_0x4696('0x36')],_0x10f42a['findBy']));this[_0x4696('0xd')]['noop'](util['format'](_0x4696('0x15a'),this[_0x4696('0xd')][_0x4696('0x36')],_0x10f42a[_0x4696('0x155')]));return{'code':0xc8,'result':_0x4696('0x15b')};}};AGIVertices[_0x4696('0x10')][_0x4696('0x15e')]=function(_0x9ea035){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x15f'),_0x9ea035['label']));if(!this[_0x4696('0x7f')](_0x9ea035['operation'])){return this['channel'][_0x4696('0x2e')](_0x9ea035,_0x4696('0x160'));}this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0x161'),_0x9ea035[_0x4696('0x162')]));var _0x33101d=eval(_0x9ea035['operation']);if(!this[_0x4696('0x7f')](_0x9ea035['variable_id'])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xdd'));}var _0x403315=this[_0x4696('0x11')][_0x4696('0x6d')](this,_0x9ea035['variable_id']);if(!_0x403315){return this['channel'][_0x4696('0x2e')](_0x9ea035,'no\x20variable\x20found');}if(_[_0x4696('0x99')](_0x33101d)){var _0x32c869=this;_0x33101d[_0x4696('0xdf')](function(_0x5be198,_0x53ad1c){_0x32c869[_0x4696('0xd')][_0x4696('0x9d')](util[_0x4696('0x29')](_0x4696('0x163'),_0x403315,_0x53ad1c),_0x5be198);});return this[_0x4696('0xd')][_0x4696('0xbe')](util['format']('variable\x20%s[key]\x20set',_0x403315));}else{return this[_0x4696('0xd')]['setVariable'](_0x403315,_0x33101d);}};AGIVertices[_0x4696('0x10')][_0x4696('0xa')]=function(_0x2ff10b){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x164'),_0x2ff10b[_0x4696('0x34')]));if(_0x2ff10b[_0x4696('0x113')]===0x0){return this[_0x4696('0xa4')](_0x2ff10b);}_0x2ff10b[_0x4696('0x113')]-=0x1;if(!this[_0x4696('0x7f')](_0x2ff10b[_0x4696('0x114')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x2ff10b,_0x4696('0x115'));}var _0x2970a8=this[_0x4696('0x1e')][_0x4696('0x6d')](this,_0x2ff10b[_0x4696('0x114')]);if(!_0x2970a8){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x2ff10b,_0x4696('0x165'));}var _0x475ed5=this[_0x4696('0xd')][_0x4696('0x166')](_0x2970a8,_0x2ff10b[_0x4696('0x116')],_0x2ff10b[_0x4696('0x167')]);var _0x582572=_0x475ed5[_0x4696('0xa2')];if(_0x475ed5[_0x4696('0xa2')]===-0x1){this[_0x4696('0xa5')]['sync'](this,_0x2ff10b,'-1');return _0x475ed5;}else if(_0x475ed5[_0x4696('0xa0')]===_0x4696('0x63')){_0x475ed5['result']=_0x475ed5[_0x4696('0xa2')][_0x4696('0x9a')]>0x0?_0x475ed5['result']:'t';}else if(_[_0x4696('0x40')](_0x475ed5[_0x4696('0xa2')])){_0x475ed5[_0x4696('0xa2')]='#';_0x582572='#';}if(!this[_0x4696('0x7f')](_0x2ff10b[_0x4696('0xdc')])){this[_0x4696('0xd')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x4ba031=this[_0x4696('0x11')][_0x4696('0x6d')](this,_0x2ff10b['variable_id']);if(!_0x4ba031){return this['channel']['error'](_0x2ff10b,_0x4696('0xde'));}this[_0x4696('0xd')]['setVariable'](_0x4ba031,_0x582572);}this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x2ff10b,_0x582572);return _0x475ed5;};AGIVertices[_0x4696('0x10')]['noop']=function(_0x218aa3){logger['info'](util[_0x4696('0x29')](_0x4696('0x168'),_0x218aa3[_0x4696('0x34')]));return this[_0x4696('0xd')][_0x4696('0xbe')](_0x218aa3['output']||_0x218aa3[_0x4696('0x34')]);};AGIVertices['prototype']['pause']=function(_0x37ae2b){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x169'),_0x37ae2b[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x37ae2b[_0x4696('0x155')])){return this['channel'][_0x4696('0x2e')](_0x37ae2b,_0x4696('0x156'));}logger['info'](util[_0x4696('0x29')](_0x4696('0x157'),this[_0x4696('0xd')][_0x4696('0x36')],_0x37ae2b[_0x4696('0x155')]));var _0x2570eb=this[_0x4696('0x4b')][_0x4696('0x6d')](this,_0x37ae2b[_0x4696('0x16a')]);var _0x25fe76=this[_0x4696('0x4e')]['sync'](this,_0x37ae2b[_0x4696('0x155')],_0x2570eb);if(_0x25fe76){logger['info'](util[_0x4696('0x29')](_0x4696('0x158'),this['channel'][_0x4696('0x36')],_0x37ae2b['findBy']));this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x4696('0xd')][_0x4696('0x36')],_0x37ae2b['findBy']));return{'code':0xc8,'result':_0x4696('0x159')};}else{logger[_0x4696('0x2c')](util[_0x4696('0x29')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x4696('0x36')],_0x37ae2b[_0x4696('0x155')]));this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x158'),this[_0x4696('0xd')][_0x4696('0x36')],_0x37ae2b['findBy']));return{'code':0xc8,'result':_0x4696('0x15b')};}};AGIVertices[_0x4696('0x10')][_0x4696('0x16b')]=function(_0xa6e74a){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x16c'),_0xa6e74a[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0xa6e74a['file_id'])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0xa6e74a,_0x4696('0x115'));}var _0x3b7acf=this[_0x4696('0x1e')][_0x4696('0x6d')](this,_0xa6e74a[_0x4696('0x114')]);if(!_0x3b7acf){return this[_0x4696('0xd')][_0x4696('0x2e')](_0xa6e74a,_0x4696('0x165'));}var _0x5716f6=this[_0x4696('0xd')]['exec'](_0x4696('0x16d'),[_0x3b7acf,_0xa6e74a[_0x4696('0x16e')]]);if(_0x5716f6[_0x4696('0xa2')]===-0x1){return _0x5716f6;}return this[_0x4696('0xd')][_0x4696('0xbe')](util['format'](_0x4696('0x16f'),'PLAYBACK',_0x3b7acf));};AGIVertices[_0x4696('0x10')]['queue']=function(_0x17d012){logger['info'](util[_0x4696('0x29')](_0x4696('0x170'),_0x17d012[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x17d012['queue_id'])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x17d012,_0x4696('0x171'));}var _0x231f25='';var _0x1bf71d=parseInt(_0x17d012[_0x4696('0x172')],0xa);if(isNaN(_0x1bf71d)){_0x231f25=_0x17d012[_0x4696('0x172')];}else{_0x231f25=this[_0x4696('0x16')][_0x4696('0x6d')](this,_0x17d012['queue_id']);if(!_0x231f25){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x17d012,_0x4696('0x173'));}}var _0x25c799='';if(this['isConfigured'](_0x17d012[_0x4696('0x114')])){var _0x296472=this['getSound'][_0x4696('0x6d')](this,_0x17d012[_0x4696('0x114')]);if(_0x296472){_0x25c799=_0x296472;}}this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x17d012,_0x231f25);if(_0x17d012[_0x4696('0x16e')]['indexOf']('x')<0x0){_0x17d012[_0x4696('0x16e')]+='x';}if(_0x17d012[_0x4696('0x16e')][_0x4696('0x174')]('X')<0x0){_0x17d012[_0x4696('0x16e')]+='X';}this[_0x4696('0xd')]['setVariable']('XMCS-QUEUE',_0x231f25?_0x231f25[_0x4696('0x175')]():'');var _0x264976=this['channel'][_0x4696('0xae')]('QUEUE',[_0x231f25,_0x17d012['opts'],_0x17d012['url'],_0x25c799,_0x17d012['timeout'],_0x17d012['agi'],_0x17d012[_0x4696('0x176')],_0x17d012[_0x4696('0x177')],'',_0x17d012['position']]);if(_0x264976['result']===-0x1){return _0x264976;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x16f'),_0x4696('0x178'),_0x231f25));};AGIVertices[_0x4696('0x10')][_0x4696('0x179')]=function(_0x5a59c9){logger[_0x4696('0x2c')](util['format']('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x5a59c9[_0x4696('0x34')]));var _0x5e8052=_0x5a59c9[_0x4696('0x17a')]||_0x4696('0x14f');var _0x124271=util[_0x4696('0x29')](_0x4696('0x17b'),this[_0x4696('0xd')]['uniqueid'],rs[_0x4696('0x11b')](0x5));var _0x563478=util[_0x4696('0x29')](_0x4696('0x17c'),FILES_PATH,_0x124271,_0x5e8052);var _0x3f1638=util['format']('%s/recordings/%s',FILES_PATH,_0x124271);this['createSquareRecording'][_0x4696('0x6d')](this,_0x5a59c9,_0x124271,_0x563478);this[_0x4696('0xd')]['setVariable'](_0x4696('0x17d'),_0x124271);logger[_0x4696('0x2c')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x3f1638,_0x5e8052,_0x5a59c9['escape_digits'],_0x5a59c9['timeout']);return this[_0x4696('0xd')]['recordFile'](_0x3f1638,_0x5e8052,_0x5a59c9[_0x4696('0x17e')],_0x5a59c9['timeout'],undefined,!![]);};AGIVertices['prototype'][_0x4696('0x17f')]=function(_0x395d49){logger['info'](util[_0x4696('0x29')](_0x4696('0x180'),_0x395d49[_0x4696('0x34')]));if(!this['isConfigured'](_0x395d49[_0x4696('0x61')])){return this[_0x4696('0xd')][_0x4696('0xbe')]('no\x20url\x20configured');}var _0x9cf3cd=this['restAPI'][_0x4696('0x6d')](this,_0x395d49);logger['info'](util['format']('Response:',util[_0x4696('0x181')](_0x9cf3cd,{'showHidden':![],'depth':null})));if(!this[_0x4696('0x7f')](_0x395d49[_0x4696('0xdc')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x182'));}var _0x59d09d=this[_0x4696('0x11')][_0x4696('0x6d')](this,_0x395d49['variable_id']);if(!_0x59d09d){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x395d49,_0x4696('0xde'));}this[_0x4696('0xd')]['setVariable'](util[_0x4696('0x29')](_0x4696('0x183'),_0x59d09d),_0x9cf3cd[_0x4696('0x72')]?_0x9cf3cd[_0x4696('0x72')]:_0x4696('0x184'));this[_0x4696('0xd')][_0x4696('0x9d')](util['format']('%s_STATUS_MESSAGE',_0x59d09d),_0x9cf3cd[_0x4696('0x185')]?_0x9cf3cd[_0x4696('0x185')]:'OK');if(_0x9cf3cd['body']){try{this['saveRestApiResult'](_0x9cf3cd[_0x4696('0x68')],_0x59d09d);}catch(_0x59d119){logger[_0x4696('0x2e')](util[_0x4696('0x29')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x59d09d));}}return this['channel']['noop'](util['format']('variable\x20%s\x20set',_0x59d09d));};AGIVertices[_0x4696('0x10')][_0x4696('0x186')]=function(_0x28242a){logger[_0x4696('0x2c')](util['format'](_0x4696('0x187'),_0x28242a['label']));return this[_0x4696('0xd')]['sayDigits'](_0x28242a['digits'][_0x4696('0xda')](/\s+/g,''),_0x28242a[_0x4696('0x17e')]);};AGIVertices[_0x4696('0x10')]['saynumber']=function(_0x3d1d0e){logger['info'](util[_0x4696('0x29')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x3d1d0e[_0x4696('0x34')]));return this[_0x4696('0xd')][_0x4696('0x188')](_0x3d1d0e[_0x4696('0x64')][_0x4696('0xda')](/\s+/g,''),_0x3d1d0e[_0x4696('0x17e')]);};AGIVertices[_0x4696('0x10')][_0x4696('0x189')]=function(_0x413886){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x18a'),_0x413886[_0x4696('0x34')]));return this[_0x4696('0xd')]['sayPhonetic'](_0x413886['text'],_0x413886[_0x4696('0x17e')]);};AGIVertices[_0x4696('0x10')][_0x4696('0x18b')]=function(_0x11c74f){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x18c'),_0x11c74f[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x11c74f[_0x4696('0x18d')])){return this['channel'][_0x4696('0xbe')]('no\x20mail\x20account\x20configured');}var _0x174306=this['getMailAccount']['sync'](this,_0x11c74f[_0x4696('0x18d')]);if(!_0x174306||!_0x174306['Smtp']){return this['channel'][_0x4696('0x2e')](_0x11c74f,'no\x20mail\x20account\x20found');}var _0x32d006={'from':util[_0x4696('0x29')]('\x22%s\x22\x20<%s>',_0x174306['name'],_0x174306[_0x4696('0x18e')]||_0x174306[_0x4696('0x18f')][_0x4696('0x190')]),'to':_0x11c74f['to']||'','cc':_0x11c74f['cc']||'','bcc':_0x11c74f['bcc']||'','subject':_0x11c74f['subject'],'html':_0x11c74f[_0x4696('0x59')],'text':_0x11c74f[_0x4696('0x59')]};var _0xa1862a={'tls':{'rejectUnauthorized':![]}};if(_0x174306[_0x4696('0x18f')][_0x4696('0x191')]){_0xa1862a[_0x4696('0x191')]=_0x174306[_0x4696('0x18f')][_0x4696('0x191')];}else{_0xa1862a[_0x4696('0x192')]=_0x174306[_0x4696('0x18f')][_0x4696('0x192')];_0xa1862a[_0x4696('0x193')]=_0x174306[_0x4696('0x18f')][_0x4696('0x193')];_0xa1862a['secure']=_0x174306[_0x4696('0x18f')][_0x4696('0x194')];}if(_0x174306['Smtp'][_0x4696('0x195')]){_0xa1862a[_0x4696('0x196')]={'user':_0x174306['Smtp'][_0x4696('0x190')],'pass':_0x174306['Smtp'][_0x4696('0x197')]};}if(this[_0x4696('0x7f')](_0x11c74f[_0x4696('0x198')])){}logger[_0x4696('0x199')]('sendMail\x20message',JSON[_0x4696('0x70')](_0x32d006));this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x11c74f,_0x11c74f['account_id']);this['channel']['noop'](util[_0x4696('0x29')](_0x4696('0x19a'),_0x174306[_0x4696('0x14')]));this[_0x4696('0x24')][_0x4696('0x6d')](this,_0xa1862a,_0x32d006);return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x19b'));};AGIVertices[_0x4696('0x10')][_0x4696('0x19c')]=function(_0x446c90){logger[_0x4696('0x2c')](util[_0x4696('0x29')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x446c90[_0x4696('0x34')]));return this[_0x4696('0xd')]['noop']('SENDFAX\x20block\x20not\x20implemented');};AGIVertices['prototype'][_0x4696('0x19d')]=function(_0x5125d5){logger[_0x4696('0x2c')](util[_0x4696('0x29')]('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0x5125d5[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x5125d5[_0x4696('0x19e')])){return this['channel']['noop'](_0x4696('0x19f'));}var _0x4ed44c=this['getSmsAccount']['sync'](this,_0x5125d5[_0x4696('0x19e')]);if(!_0x4ed44c){return this['channel'][_0x4696('0x2e')](_0x5125d5,_0x4696('0x1a0'));}var _0x444594={'body':_0x5125d5[_0x4696('0x1a1')],'phone':_0x5125d5['to']||'','SmsAccountId':_0x4ed44c['id']};logger[_0x4696('0x199')]('sendSMS\x20message',JSON[_0x4696('0x70')](_0x444594));this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x5125d5,_0x5125d5[_0x4696('0x19e')]);this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x1a2'),_0x4ed44c[_0x4696('0x14')]));this['createSmsMessage'][_0x4696('0x6d')](this,_0x444594);return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x1a3'));};AGIVertices[_0x4696('0x10')]['set']=function(_0x1d2aa2){logger['info'](util['format']('Enter\x20in\x20SET\x20(%s)\x20block',_0x1d2aa2[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x1d2aa2[_0x4696('0xdc')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x1d2aa2,_0x4696('0x1a4'));}var _0x33a5a3=this['getVariable'][_0x4696('0x6d')](this,_0x1d2aa2[_0x4696('0xdc')]);if(!_0x33a5a3){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x1d2aa2,_0x4696('0xde'));}return this[_0x4696('0xd')][_0x4696('0x9d')](_0x33a5a3,_0x1d2aa2['variable_value']);};AGIVertices[_0x4696('0x10')][_0x4696('0x1a5')]=function(_0x26be95){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x1a6'),_0x26be95[_0x4696('0x34')]));this[_0x4696('0xd')]['noop']('START\x20CALLY\x20SQUARE');if(_0x26be95[_0x4696('0xb7')]==='yes'){this['channel']['noop']('Answer');return this['channel'][_0x4696('0xb7')]();}return this['channel'][_0x4696('0xbe')]('Skipped\x20Answer');};AGIVertices['prototype'][_0x4696('0x1a7')]=function(_0x19ed5b){logger['info'](util['format'](_0x4696('0x1a8'),_0x19ed5b[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0x19ed5b[_0x4696('0x1a9')])){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x19ed5b,_0x4696('0x1aa'));}var _0x144427=this[_0x4696('0x1ab')][_0x4696('0x6d')](this,_0x19ed5b[_0x4696('0x1a9')]);if(!this[_0x4696('0x7f')](_0x144427)){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x19ed5b,util[_0x4696('0x29')](_0x4696('0x1ac'),_0x19ed5b['project_id']));}if(_0x144427===this['channel']['arg_1']){return this[_0x4696('0xd')][_0x4696('0x2e')](_0x19ed5b,_0x4696('0x1ad'));}this[_0x4696('0xa5')][_0x4696('0x6d')](this,_0x19ed5b,_0x144427);var _0x4a401b=this[_0x4696('0xd')]['exec'](_0x4696('0x1ae'),util[_0x4696('0x29')](_0x4696('0x1af'),config[_0x4696('0x7')]['host']||'127.0.0.1',_0x144427,this[_0x4696('0xd')][_0x4696('0x35')]));if(_0x4a401b['result']===-0x1){return _0x4a401b;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x16f'),'AGI',_0x144427));};AGIVertices['prototype'][_0x4696('0x1b0')]=function(_0xa26d64){logger['info'](util[_0x4696('0x29')](_0x4696('0x1b1'),_0xa26d64[_0x4696('0x34')]));var _0x8f4d58=this[_0x4696('0x54')][_0x4696('0x6d')](this,_0xa26d64[_0x4696('0xb5')]);this['createSquareDetailsReport'][_0x4696('0x6d')](this,_0xa26d64,_0xa26d64['command']);if(this[_0x4696('0x7f')](_0xa26d64[_0x4696('0xdc')])){var _0x49c97e=this[_0x4696('0x11')]['sync'](this,_0xa26d64[_0x4696('0xdc')]);if(_0x49c97e){this[_0x4696('0xd')][_0x4696('0x9d')](_0x49c97e,_0x8f4d58);return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x1b2'),_0xa26d64[_0x4696('0xb5')],_0x49c97e));}}return this[_0x4696('0xd')]['noop'](util['format'](_0x4696('0x1b3'),_0xa26d64[_0x4696('0xb5')]));};AGIVertices['prototype'][_0x4696('0x1b4')]=function(_0x4a724a){logger['info'](util[_0x4696('0x29')](_0x4696('0x1b5'),_0x4a724a[_0x4696('0x34')]));_0x4a724a[_0x4696('0x59')]=_0x4a724a['text'][_0x4696('0xda')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x4696('0x7f')](_0x4a724a['apiKey'])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0x1b6'));}if(!this[_0x4696('0x7f')](_0x4a724a[_0x4696('0x59')])){return this[_0x4696('0xd')][_0x4696('0xbe')](_0x4696('0xc5'));}this['channel']['noop'](util[_0x4696('0x29')](_0x4696('0x1b7'),_0x4a724a[_0x4696('0x59')]));var _0x48cc39=this[_0x4696('0x56')][_0x4696('0x6d')](this,_0x4a724a);if(_0x48cc39){this['channel'][_0x4696('0xbe')](util['format'](_0x4696('0x1b8'),_0x48cc39));var _0x33c785=this[_0x4696('0xd')]['streamFile'](_0x48cc39);try{fs[_0x4696('0x106')](_0x48cc39+_0x4696('0x126'));}catch(_0x5ad1e3){logger[_0x4696('0x2e')](_0x5ad1e3);}return _0x33c785;}return this[_0x4696('0xd')][_0x4696('0x2e')](_0x4a724a,_0x4696('0x1b9'));};AGIVertices[_0x4696('0x10')]['tts']=function(_0x18e69a){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x1ba'),_0x18e69a[_0x4696('0x34')]));_0x18e69a[_0x4696('0x59')]=_0x18e69a['text'][_0x4696('0xda')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x4696('0x7f')](_0x18e69a['text'])){return this[_0x4696('0xd')]['noop'](_0x4696('0xc5'));}this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x1bb'),_0x18e69a[_0x4696('0x59')]));var _0x29abe4=this[_0x4696('0x5e')][_0x4696('0x6d')](this,_0x18e69a);if(_0x29abe4){this['channel'][_0x4696('0xbe')](util[_0x4696('0x29')](_0x4696('0x1bc'),_0x29abe4));var _0x2a2df8=this[_0x4696('0xd')][_0x4696('0x105')](_0x29abe4);try{fs[_0x4696('0x106')](_0x29abe4+'.wav');}catch(_0x5b2905){logger['error'](_0x5b2905);}return _0x2a2df8;}return this[_0x4696('0xd')][_0x4696('0x2e')](_0x18e69a,_0x4696('0x1bd'));};AGIVertices[_0x4696('0x10')][_0x4696('0x1be')]=function(_0xccd81b){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x1bf'),_0xccd81b[_0x4696('0x34')]));if(!this[_0x4696('0x7f')](_0xccd81b[_0x4696('0x155')])){return this[_0x4696('0xd')]['error'](_0xccd81b,_0x4696('0x156'));}logger[_0x4696('0x2c')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel']['callerid'],_0xccd81b[_0x4696('0x155')]));var _0x2b9a3c=this[_0x4696('0x4f')]['sync'](this,_0xccd81b[_0x4696('0x155')]);if(_0x2b9a3c){logger['info'](util[_0x4696('0x29')](_0x4696('0x158'),this[_0x4696('0xd')][_0x4696('0x36')],_0xccd81b['findBy']));this['channel']['noop'](util['format'](_0x4696('0x158'),this[_0x4696('0xd')][_0x4696('0x36')],_0xccd81b[_0x4696('0x155')]));return{'code':0xc8,'result':_0x4696('0x159')};}else{logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x15a'),this['channel'][_0x4696('0x36')],_0xccd81b[_0x4696('0x155')]));this[_0x4696('0xd')]['noop'](util['format'](_0x4696('0x15a'),this['channel'][_0x4696('0x36')],_0xccd81b[_0x4696('0x155')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0x4696('0x1c0')]=function(_0x294ac6){logger[_0x4696('0x2c')](util['format'](_0x4696('0x1c1'),_0x294ac6['label']));var _0x1c9a8e=this[_0x4696('0xd')][_0x4696('0xae')]('VOICEMAIL',[_0x294ac6[_0x4696('0x1c2')],_0x294ac6[_0x4696('0x74')]]);if(_0x1c9a8e['result']===-0x1){return _0x1c9a8e;}return this[_0x4696('0xd')][_0x4696('0xbe')](util[_0x4696('0x29')]('Executed\x20command\x20%s\x20%s',_0x4696('0x1c3'),_0x294ac6['mailbox']));};AGIVertices[_0x4696('0x10')][_0x4696('0x1c4')]=function(_0x58ec88){logger[_0x4696('0x2c')](util[_0x4696('0x29')](_0x4696('0x1c5'),_0x58ec88['label']));if(!this[_0x4696('0x7f')](_0x58ec88[_0x4696('0xdc')])){return this[_0x4696('0xd')]['error'](_0x58ec88,_0x4696('0x1a4'));}var _0x477e55=this[_0x4696('0x11')][_0x4696('0x6d')](this,_0x58ec88[_0x4696('0xdc')]);if(!_0x477e55){return this[_0x4696('0xd')]['error'](_0x58ec88,'no\x20variable\x20found');}var _0x321af2=this['channel']['getVariable'](_0x477e55);return{'code':0xc8,'result':_0x321af2[_0x4696('0xa0')]?_0x321af2[_0x4696('0xa0')]:'-'};};String[_0x4696('0x10')]['replaceAll']=function(_0x15710d,_0x191415){return this[_0x4696('0x9e')](_0x15710d)[_0x4696('0x1c6')](_0x191415);};module['exports']=AGIVertices;
\ No newline at end of file
index fe441b9..8e257f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bd6=['catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','seconds','prototype','startAcw','channels','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','getAgent','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','acwTimeout','stopAcw','lastPauseAt','uniqueid','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]'];(function(_0x517489,_0x44b005){var _0x18e1d8=function(_0x58bf52){while(--_0x58bf52){_0x517489['push'](_0x517489['shift']());}};_0x18e1d8(++_0x44b005);}(_0x0bd6,0x72));var _0x60bd=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0bd6[_0x2641f9];return _0x585741;};'use strict';var util=require(_0x60bd('0x0'));var _=require('lodash');var moment=require('moment');var ami=require(_0x60bd('0x1'));var logger=require('../../../config/logger')(_0x60bd('0x2'));var RpcUser=require(_0x60bd('0x3'));var RpcVoiceAgentReport=require(_0x60bd('0x4'));function Acw(_0x19c30f){this[_0x60bd('0x5')]=_0x19c30f[_0x60bd('0x5')];this[_0x60bd('0x6')]=_0x19c30f[_0x60bd('0x6')];this['timers']=_0x19c30f[_0x60bd('0x7')];this['channels']={};ami['on']('agentconnect',this[_0x60bd('0x8')][_0x60bd('0x9')](this));ami['on']('hanguprequest',this[_0x60bd('0xa')][_0x60bd('0x9')](this));ami['on'](_0x60bd('0xb'),this[_0x60bd('0xc')]['bind'](this));ami['on'](_0x60bd('0xd'),this[_0x60bd('0xe')][_0x60bd('0x9')](this));ami['on'](_0x60bd('0xf'),this[_0x60bd('0x10')]['bind'](this));ami['on'](_0x60bd('0x11'),this[_0x60bd('0x12')]['bind'](this));ami['on'](_0x60bd('0x13'),this[_0x60bd('0x14')][_0x60bd('0x9')](this));}function getDiff(_0x24cc36){var _0x203d54=moment()[_0x60bd('0x15')](0x0);var _0x4a171f=moment(_0x24cc36)['milliseconds'](0x0);return _0x203d54['diff'](_0x4a171f,_0x60bd('0x16'));}Acw[_0x60bd('0x17')][_0x60bd('0x18')]=function(_0x4ee4b4){try{var _0x37c1a7=this;var _0x54676a=this[_0x60bd('0x19')][_0x4ee4b4][_0x60bd('0x1a')];var _0x3e9710=this['channels'][_0x4ee4b4][_0x60bd('0x1b')];var _0x157512=this[_0x60bd('0x5')][_0x3e9710];var _0x24402e=![];var _0x550408=_0x60bd('0x1c');if(_0x157512[_0x60bd('0x1d')]){if(_0x157512[_0x60bd('0x1e')]['name']){_0x24402e=!![];_0x550408=_0x157512[_0x60bd('0x1e')][_0x60bd('0x1f')];}}ami[_0x60bd('0x20')]({'action':_0x60bd('0x21'),'interface':_0x54676a,'paused':!![],'reason':_0x550408})['then'](function(_0x3599ca){if(_0x37c1a7[_0x60bd('0x6')][_0x54676a]){return RpcUser[_0x60bd('0x22')](_0x37c1a7[_0x60bd('0x6')][_0x54676a]['id'])[_0x60bd('0x23')](function(_0x36d4e9){if(_0x36d4e9&&!_0x36d4e9[_0x60bd('0x24')]){logger[_0x60bd('0x25')](_0x60bd('0x26'),_0x4ee4b4,_0x54676a,_0x3e9710);var _0x1f0563=_0x37c1a7[_0x60bd('0x19')][_0x4ee4b4][_0x60bd('0x27')]&&_0x37c1a7['channels'][_0x4ee4b4]['destlinkedid']?_0x37c1a7[_0x60bd('0x19')][_0x4ee4b4]['destlinkedid']:_0x4ee4b4;return RpcUser['savePause'](_0x37c1a7[_0x60bd('0x6')][_0x54676a],_0x550408,_0x1f0563)[_0x60bd('0x23')](function(_0x54af8f){if(!_0x24402e){_0x37c1a7['timers'][_0x54676a]={};logger[_0x60bd('0x25')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x4ee4b4,_0x37c1a7['voiceQueues'][_0x3e9710][_0x60bd('0x28')],_0x54676a,_0x3e9710);_0x37c1a7[_0x60bd('0x7')][_0x54676a]['timer']=setTimeout(_0x37c1a7[_0x60bd('0x29')][_0x60bd('0x9')](_0x37c1a7,_0x54676a),_0x37c1a7[_0x60bd('0x5')][_0x3e9710][_0x60bd('0x28')]*0x3e8);_0x37c1a7[_0x60bd('0x7')][_0x54676a][_0x60bd('0x2a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x37c1a7[_0x60bd('0x7')][_0x54676a][_0x60bd('0x2b')]=_0x4ee4b4;_0x37c1a7[_0x60bd('0x7')][_0x54676a][_0x60bd('0x1b')]=_0x3e9710;_0x37c1a7['timers'][_0x54676a][_0x60bd('0x2c')]=function(){var _0x4d71af=getDiff(_0x37c1a7['timers'][_0x54676a][_0x60bd('0x2a')]);clearTimeout(_0x37c1a7['timers'][_0x54676a][_0x60bd('0x2d')]);_0x37c1a7[_0x60bd('0x7')][_0x54676a][_0x60bd('0x2d')]=![];RpcVoiceAgentReport[_0x60bd('0x2e')]({'acwtime':_0x4d71af},_0x37c1a7[_0x60bd('0x7')][_0x54676a][_0x60bd('0x2b')],_0x54676a)[_0x60bd('0x23')](function(_0x1b124e){logger['info'](_0x60bd('0x2f'),_0x4ee4b4,_0x4d71af,_0x1b124e);})[_0x60bd('0x30')](function(_0x4c8b32){logger[_0x60bd('0x31')](_0x60bd('0x32'),_0x4ee4b4,_0x4c8b32);});delete _0x37c1a7['timers'][_0x54676a];};}});}else{logger[_0x60bd('0x25')](_0x60bd('0x33'),_0x4ee4b4,_0x54676a,_0x3e9710);}});}})['catch'](function(_0x2692f8){logger['error'](_0x60bd('0x34'),_0x4ee4b4,_0x37c1a7[_0x60bd('0x5')][_0x3e9710][_0x60bd('0x28')],_0x54676a,_0x3e9710);})[_0x60bd('0x35')](function(){delete _0x37c1a7[_0x60bd('0x19')][_0x4ee4b4];});}catch(_0x21a023){logger['error'](_0x60bd('0x36'),_0x21a023[_0x60bd('0x37')]);}};Acw[_0x60bd('0x17')]['stopAcw']=function(_0x3d0173){try{var _0x1cde1f=this;if(_0x1cde1f['timers'][_0x3d0173]){_0x1cde1f['timers'][_0x3d0173][_0x60bd('0x2d')]=![];var _0x4d554a=_0x1cde1f['timers'][_0x3d0173]['uniqueid'];var _0x2ce5c7=_0x1cde1f[_0x60bd('0x7')][_0x3d0173][_0x60bd('0x1b')];var _0x22a70b=_0x1cde1f[_0x60bd('0x5')][_0x2ce5c7]['acwTimeout'];logger[_0x60bd('0x25')]('[%s][TIMER][STOP][AGENT:%s]',_0x4d554a,_0x3d0173);RpcUser[_0x60bd('0x38')](this[_0x60bd('0x6')][_0x3d0173]);RpcVoiceAgentReport[_0x60bd('0x2e')]({'acwtime':_0x22a70b,'agentacw':!![]},_0x4d554a,_0x3d0173)[_0x60bd('0x23')](function(_0x18f181){logger[_0x60bd('0x25')](_0x60bd('0x2f'),_0x4d554a,_0x22a70b,_0x18f181);})[_0x60bd('0x30')](function(_0xa3dffb){logger[_0x60bd('0x31')](_0x60bd('0x32'),_0x4d554a,_0xa3dffb);});}else{logger['error'](_0x60bd('0x39'),_0x3d0173);if(_0x1cde1f['timers']){logger[_0x60bd('0x25')](_0x60bd('0x3a'),JSON['stringify'](_0x1cde1f[_0x60bd('0x7')]));}}}catch(_0x3db88f){logger['error'](_0x60bd('0x3b'),_0x3db88f[_0x60bd('0x37')]);}};Acw[_0x60bd('0x17')][_0x60bd('0x8')]=function(_0x4daaf9){try{if(this[_0x60bd('0x5')][_0x4daaf9[_0x60bd('0x1b')]]&&(this[_0x60bd('0x5')][_0x4daaf9[_0x60bd('0x1b')]]['acw']||this[_0x60bd('0x5')][_0x4daaf9[_0x60bd('0x1b')]][_0x60bd('0x1d')])){if(this[_0x60bd('0x6')][_0x4daaf9[_0x60bd('0x1a')]]){this[_0x60bd('0x19')][_0x4daaf9[_0x60bd('0x2b')]]={'queue':_0x4daaf9[_0x60bd('0x1b')],'interface':_0x4daaf9['interface'],'destlinkedid':_0x4daaf9['destlinkedid']};}}}catch(_0x4be171){logger[_0x60bd('0x31')](_0x60bd('0x3c'),_0x4be171[_0x60bd('0x37')]);}};Acw[_0x60bd('0x17')][_0x60bd('0x14')]=function(_0x4b7d9f){try{if(this[_0x60bd('0x5')][_0x4b7d9f[_0x60bd('0x1b')]]&&(this[_0x60bd('0x5')][_0x4b7d9f['queue']][_0x60bd('0x2')]||this[_0x60bd('0x5')][_0x4b7d9f[_0x60bd('0x1b')]][_0x60bd('0x1d')])){if(this['agents'][_0x4b7d9f[_0x60bd('0x1a')]]){this[_0x60bd('0x19')][_0x4b7d9f[_0x60bd('0x2b')]]={'queue':_0x4b7d9f[_0x60bd('0x1b')],'interface':_0x4b7d9f[_0x60bd('0x1a')]};}}}catch(_0x1c2992){logger[_0x60bd('0x31')](_0x60bd('0x3d'),_0x1c2992[_0x60bd('0x37')]);}};Acw[_0x60bd('0x17')][_0x60bd('0xa')]=function(_0xa3527f){try{if(this['channels'][_0xa3527f[_0x60bd('0x2b')]]&&_[_0x60bd('0x3e')](this[_0x60bd('0x19')][_0xa3527f['uniqueid']]['attended'])){logger[_0x60bd('0x25')](_0x60bd('0x3f'),_0xa3527f[_0x60bd('0x2b')]);this[_0x60bd('0x18')](_0xa3527f[_0x60bd('0x2b')]);}else if(this[_0x60bd('0x19')][_0xa3527f['linkedid']]&&_[_0x60bd('0x3e')](this[_0x60bd('0x19')][_0xa3527f['linkedid']][_0x60bd('0x27')])){logger[_0x60bd('0x25')](_0x60bd('0x40'),_0xa3527f[_0x60bd('0x41')]);this['startAcw'](_0xa3527f[_0x60bd('0x41')]);}}catch(_0x4e255d){logger[_0x60bd('0x31')]('[ACW][syncHangupRequest]\x20%s',_0x4e255d[_0x60bd('0x37')]);}};Acw['prototype'][_0x60bd('0xc')]=function(_0xe7da3c){try{if(this[_0x60bd('0x19')][_0xe7da3c[_0x60bd('0x2b')]]&&this[_0x60bd('0x19')][_0xe7da3c[_0x60bd('0x2b')]][_0x60bd('0x27')]){logger[_0x60bd('0x25')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0xe7da3c[_0x60bd('0x2b')]);this[_0x60bd('0x18')](_0xe7da3c[_0x60bd('0x2b')]);}else if(this[_0x60bd('0x19')][_0xe7da3c[_0x60bd('0x41')]]&&this[_0x60bd('0x19')][_0xe7da3c[_0x60bd('0x41')]][_0x60bd('0x27')]){logger[_0x60bd('0x25')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0xe7da3c['linkedid']);this[_0x60bd('0x18')](_0xe7da3c['linkedid']);}}catch(_0x56f16a){logger['error'](_0x60bd('0x42'),_0x56f16a[_0x60bd('0x37')]);}};Acw[_0x60bd('0x17')][_0x60bd('0x10')]=function(_0x27b6ed){try{if(!_[_0x60bd('0x43')](this[_0x60bd('0x19')][_0x27b6ed[_0x60bd('0x44')]])){this['startAcw'](_0x27b6ed['transfereeuniqueid']);if(this['channels'][_0x27b6ed[_0x60bd('0x45')]]){this[_0x60bd('0x19')][_0x27b6ed[_0x60bd('0x45')]][_0x60bd('0x27')]=!![];this[_0x60bd('0x19')][_0x27b6ed[_0x60bd('0x46')]]=this[_0x60bd('0x19')][_0x27b6ed[_0x60bd('0x45')]];delete this[_0x60bd('0x19')][_0x27b6ed[_0x60bd('0x45')]];}}else if(!_[_0x60bd('0x43')](this['channels'][_0x27b6ed[_0x60bd('0x46')]])){this[_0x60bd('0x18')](_0x27b6ed[_0x60bd('0x46')]);if(this['channels'][_0x27b6ed[_0x60bd('0x47')]]){this[_0x60bd('0x19')][_0x27b6ed[_0x60bd('0x47')]][_0x60bd('0x27')]=!![];this['channels'][_0x27b6ed['transfereeuniqueid']]=this['channels'][_0x27b6ed['origtransfereruniqueid']];delete this[_0x60bd('0x19')][_0x27b6ed[_0x60bd('0x47')]];}}}catch(_0x3d2938){logger[_0x60bd('0x31')](_0x60bd('0x48'),_0x3d2938['message']);}};Acw[_0x60bd('0x17')][_0x60bd('0x12')]=function(_0x447400){try{if(this[_0x60bd('0x19')][_0x447400['transfereruniqueid']]){logger[_0x60bd('0x25')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x447400[_0x60bd('0x49')]));this['startAcw'](_0x447400['transfereruniqueid']);}else if(this[_0x60bd('0x19')][_0x447400['transfererlinkedid']]){logger[_0x60bd('0x25')](_0x60bd('0x4a'),JSON['stringify'](_0x447400[_0x60bd('0x4b')]));this[_0x60bd('0x18')](_0x447400[_0x60bd('0x4b')]);}}catch(_0x4e52e6){logger['error'](_0x60bd('0x4c'),_0x4e52e6[_0x60bd('0x37')]);}};Acw[_0x60bd('0x17')][_0x60bd('0xe')]=function(_0x42d8a3){try{if(this[_0x60bd('0x5')][_0x42d8a3[_0x60bd('0x1b')]]&&this['voiceQueues'][_0x42d8a3[_0x60bd('0x1b')]][_0x60bd('0x4d')]==='all'){if(this[_0x60bd('0x6')][_0x42d8a3['interface']]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x42d8a3[_0x60bd('0x2b')],_0x42d8a3[_0x60bd('0x1a')],_0x42d8a3[_0x60bd('0x1b')]);return RpcUser['savePause'](this[_0x60bd('0x6')][_0x42d8a3[_0x60bd('0x1a')]],_0x60bd('0x4e'),_0x42d8a3[_0x60bd('0x2b')]);}}}catch(_0x18d70c){logger[_0x60bd('0x31')](_0x60bd('0x4f'),_0x18d70c[_0x60bd('0x37')]);}};module[_0x60bd('0x50')]=Acw;
\ No newline at end of file
+var _0xb754=['attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','channels','interface','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','info','acwTimeout','timer','stopAcw','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','[%s][UPDATE][ACWTIME:%s]','[%s][UPDATE][ERRORS:%s]','error','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','catch','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','moment','../../../config/logger','acw','../rpc/user','voiceQueues','agents','timers','syncAgentConnect','bind','hanguprequest','agentringnoanswer'];(function(_0x3e8828,_0x2f67bc){var _0xb91cc9=function(_0x404a2b){while(--_0x404a2b){_0x3e8828['push'](_0x3e8828['shift']());}};_0xb91cc9(++_0x2f67bc);}(_0xb754,0xed));var _0x4b75=function(_0x625a73,_0x50ae08){_0x625a73=_0x625a73-0x0;var _0x3eceb5=_0xb754[_0x625a73];return _0x3eceb5;};'use strict';var util=require(_0x4b75('0x0'));var _=require('lodash');var moment=require(_0x4b75('0x1'));var ami=require('../ami');var logger=require(_0x4b75('0x2'))(_0x4b75('0x3'));var RpcUser=require(_0x4b75('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x44084b){this[_0x4b75('0x5')]=_0x44084b[_0x4b75('0x5')];this[_0x4b75('0x6')]=_0x44084b[_0x4b75('0x6')];this[_0x4b75('0x7')]=_0x44084b[_0x4b75('0x7')];this['channels']={};ami['on']('agentconnect',this[_0x4b75('0x8')][_0x4b75('0x9')](this));ami['on'](_0x4b75('0xa'),this['syncHangupRequest'][_0x4b75('0x9')](this));ami['on']('hangup',this['syncHangup'][_0x4b75('0x9')](this));ami['on'](_0x4b75('0xb'),this['syncAgentRingNoAnswer'][_0x4b75('0x9')](this));ami['on'](_0x4b75('0xc'),this[_0x4b75('0xd')]['bind'](this));ami['on'](_0x4b75('0xe'),this['syncBlindTransfer']['bind'](this));ami['on'](_0x4b75('0xf'),this[_0x4b75('0x10')][_0x4b75('0x9')](this));}function getDiff(_0x21cd71){var _0x481eb6=moment()[_0x4b75('0x11')](0x0);var _0x337db0=moment(_0x21cd71)['milliseconds'](0x0);return _0x481eb6[_0x4b75('0x12')](_0x337db0,_0x4b75('0x13'));}Acw[_0x4b75('0x14')][_0x4b75('0x15')]=function(_0x1b03c9){try{var _0x599c82=this;var _0x5cef11=this[_0x4b75('0x16')][_0x1b03c9][_0x4b75('0x17')];var _0x4e1f01=this['channels'][_0x1b03c9][_0x4b75('0x18')];var _0x567608=this[_0x4b75('0x5')][_0x4e1f01];var _0x41d1d2=![];var _0x49ace1=_0x4b75('0x19');if(_0x567608['mandatoryDisposition']){if(_0x567608[_0x4b75('0x1a')][_0x4b75('0x1b')]){_0x41d1d2=!![];_0x49ace1=_0x567608[_0x4b75('0x1a')][_0x4b75('0x1b')];}}ami[_0x4b75('0x1c')]({'action':_0x4b75('0x1d'),'interface':_0x5cef11,'paused':!![],'reason':_0x49ace1})[_0x4b75('0x1e')](function(_0x4b49fc){if(_0x599c82[_0x4b75('0x6')][_0x5cef11]){return RpcUser[_0x4b75('0x1f')](_0x599c82[_0x4b75('0x6')][_0x5cef11]['id'])['then'](function(_0xf01a24){if(_0xf01a24&&!_0xf01a24['voicePause']){logger['info'](_0x4b75('0x20'),_0x1b03c9,_0x5cef11,_0x4e1f01);var _0x318723=_0x599c82['channels'][_0x1b03c9][_0x4b75('0x21')]&&_0x599c82[_0x4b75('0x16')][_0x1b03c9]['destlinkedid']?_0x599c82[_0x4b75('0x16')][_0x1b03c9][_0x4b75('0x22')]:_0x1b03c9;return RpcUser['savePause'](_0x599c82[_0x4b75('0x6')][_0x5cef11],_0x49ace1,_0x318723)[_0x4b75('0x1e')](function(_0x4142ad){if(!_0x41d1d2){_0x599c82[_0x4b75('0x7')][_0x5cef11]={};logger[_0x4b75('0x23')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x1b03c9,_0x599c82[_0x4b75('0x5')][_0x4e1f01][_0x4b75('0x24')],_0x5cef11,_0x4e1f01);_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x25')]=setTimeout(_0x599c82[_0x4b75('0x26')][_0x4b75('0x9')](_0x599c82,_0x5cef11),_0x599c82[_0x4b75('0x5')][_0x4e1f01]['acwTimeout']*0x3e8);_0x599c82['timers'][_0x5cef11][_0x4b75('0x27')]=moment()['format'](_0x4b75('0x28'));_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x29')]=_0x1b03c9;_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x18')]=_0x4e1f01;_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x2a')]=function(){var _0x101b7f=getDiff(_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x27')]);clearTimeout(_0x599c82['timers'][_0x5cef11]['timer']);_0x599c82[_0x4b75('0x7')][_0x5cef11]['timer']=![];RpcVoiceAgentReport['update']({'acwtime':_0x101b7f},_0x599c82[_0x4b75('0x7')][_0x5cef11][_0x4b75('0x29')],_0x5cef11)['then'](function(_0x2ba780){logger[_0x4b75('0x23')](_0x4b75('0x2b'),_0x1b03c9,_0x101b7f,_0x2ba780);})['catch'](function(_0x2c1e9){logger['error'](_0x4b75('0x2c'),_0x1b03c9,_0x2c1e9);});delete _0x599c82[_0x4b75('0x7')][_0x5cef11];};}});}else{logger['info']('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x1b03c9,_0x5cef11,_0x4e1f01);}});}})['catch'](function(_0x3df97b){logger[_0x4b75('0x2d')](_0x4b75('0x2e'),_0x1b03c9,_0x599c82[_0x4b75('0x5')][_0x4e1f01][_0x4b75('0x24')],_0x5cef11,_0x4e1f01);})[_0x4b75('0x2f')](function(){delete _0x599c82[_0x4b75('0x16')][_0x1b03c9];});}catch(_0x299707){logger[_0x4b75('0x2d')](_0x4b75('0x30'),_0x299707[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')]['stopAcw']=function(_0xf94929){try{var _0x3abde3=this;if(_0x3abde3[_0x4b75('0x7')][_0xf94929]){_0x3abde3['timers'][_0xf94929][_0x4b75('0x25')]=![];var _0x501840=_0x3abde3[_0x4b75('0x7')][_0xf94929][_0x4b75('0x29')];var _0x109353=_0x3abde3[_0x4b75('0x7')][_0xf94929][_0x4b75('0x18')];var _0x1b22ef=_0x3abde3[_0x4b75('0x5')][_0x109353][_0x4b75('0x24')];logger[_0x4b75('0x23')](_0x4b75('0x32'),_0x501840,_0xf94929);RpcUser[_0x4b75('0x33')](this['agents'][_0xf94929]);RpcVoiceAgentReport[_0x4b75('0x34')]({'acwtime':_0x1b22ef,'agentacw':!![]},_0x501840,_0xf94929)[_0x4b75('0x1e')](function(_0x9fb6ec){logger[_0x4b75('0x23')]('[%s][UPDATE][ACWTIME:%s]',_0x501840,_0x1b22ef,_0x9fb6ec);})[_0x4b75('0x35')](function(_0x58515d){logger[_0x4b75('0x2d')](_0x4b75('0x2c'),_0x501840,_0x58515d);});}else{logger[_0x4b75('0x2d')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0xf94929);if(_0x3abde3['timers']){logger[_0x4b75('0x23')](_0x4b75('0x36'),JSON[_0x4b75('0x37')](_0x3abde3['timers']));}}}catch(_0x3dfe2b){logger[_0x4b75('0x2d')](_0x4b75('0x38'),_0x3dfe2b[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')]['syncAgentConnect']=function(_0x50b948){try{if(this[_0x4b75('0x5')][_0x50b948['queue']]&&(this[_0x4b75('0x5')][_0x50b948[_0x4b75('0x18')]][_0x4b75('0x3')]||this['voiceQueues'][_0x50b948[_0x4b75('0x18')]]['mandatoryDisposition'])){if(this[_0x4b75('0x6')][_0x50b948[_0x4b75('0x17')]]){this[_0x4b75('0x16')][_0x50b948[_0x4b75('0x29')]]={'queue':_0x50b948['queue'],'interface':_0x50b948[_0x4b75('0x17')],'destlinkedid':_0x50b948[_0x4b75('0x22')]};}}}catch(_0x4e10e9){logger[_0x4b75('0x2d')](_0x4b75('0x39'),_0x4e10e9[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')][_0x4b75('0x10')]=function(_0x362fbe){try{if(this[_0x4b75('0x5')][_0x362fbe['queue']]&&(this['voiceQueues'][_0x362fbe[_0x4b75('0x18')]][_0x4b75('0x3')]||this[_0x4b75('0x5')][_0x362fbe[_0x4b75('0x18')]]['mandatoryDisposition'])){if(this[_0x4b75('0x6')][_0x362fbe[_0x4b75('0x17')]]){this[_0x4b75('0x16')][_0x362fbe[_0x4b75('0x29')]]={'queue':_0x362fbe[_0x4b75('0x18')],'interface':_0x362fbe[_0x4b75('0x17')]};}}}catch(_0x3d43bd){logger[_0x4b75('0x2d')](_0x4b75('0x3a'),_0x3d43bd[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')][_0x4b75('0x3b')]=function(_0x48ff58){try{if(this[_0x4b75('0x16')][_0x48ff58[_0x4b75('0x29')]]&&_[_0x4b75('0x3c')](this['channels'][_0x48ff58[_0x4b75('0x29')]]['attended'])){logger[_0x4b75('0x23')]('[%s][HANGUP:UNIQUEID]',_0x48ff58[_0x4b75('0x29')]);this[_0x4b75('0x15')](_0x48ff58[_0x4b75('0x29')]);}else if(this[_0x4b75('0x16')][_0x48ff58[_0x4b75('0x3d')]]&&_[_0x4b75('0x3c')](this[_0x4b75('0x16')][_0x48ff58['linkedid']][_0x4b75('0x21')])){logger[_0x4b75('0x23')](_0x4b75('0x3e'),_0x48ff58[_0x4b75('0x3d')]);this[_0x4b75('0x15')](_0x48ff58['linkedid']);}}catch(_0x200343){logger[_0x4b75('0x2d')](_0x4b75('0x3f'),_0x200343[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')]['syncHangup']=function(_0x2e97ad){try{if(this[_0x4b75('0x16')][_0x2e97ad[_0x4b75('0x29')]]&&this['channels'][_0x2e97ad[_0x4b75('0x29')]]['attended']){logger['info']('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x2e97ad[_0x4b75('0x29')]);this['startAcw'](_0x2e97ad[_0x4b75('0x29')]);}else if(this['channels'][_0x2e97ad[_0x4b75('0x3d')]]&&this[_0x4b75('0x16')][_0x2e97ad[_0x4b75('0x3d')]][_0x4b75('0x21')]){logger[_0x4b75('0x23')](_0x4b75('0x40'),_0x2e97ad[_0x4b75('0x3d')]);this[_0x4b75('0x15')](_0x2e97ad[_0x4b75('0x3d')]);}}catch(_0xdb0078){logger[_0x4b75('0x2d')](_0x4b75('0x41'),_0xdb0078['message']);}};Acw[_0x4b75('0x14')][_0x4b75('0xd')]=function(_0x570616){try{if(!_[_0x4b75('0x42')](this[_0x4b75('0x16')][_0x570616[_0x4b75('0x43')]])){this['startAcw'](_0x570616['transfereeuniqueid']);if(this[_0x4b75('0x16')][_0x570616[_0x4b75('0x44')]]){this[_0x4b75('0x16')][_0x570616['secondtransfereruniqueid']][_0x4b75('0x21')]=!![];this[_0x4b75('0x16')][_0x570616['transfertargetuniqueid']]=this[_0x4b75('0x16')][_0x570616[_0x4b75('0x44')]];delete this[_0x4b75('0x16')][_0x570616[_0x4b75('0x44')]];}}else if(!_[_0x4b75('0x42')](this[_0x4b75('0x16')][_0x570616[_0x4b75('0x45')]])){this[_0x4b75('0x15')](_0x570616[_0x4b75('0x45')]);if(this[_0x4b75('0x16')][_0x570616[_0x4b75('0x46')]]){this[_0x4b75('0x16')][_0x570616[_0x4b75('0x46')]][_0x4b75('0x21')]=!![];this['channels'][_0x570616['transfereeuniqueid']]=this[_0x4b75('0x16')][_0x570616[_0x4b75('0x46')]];delete this[_0x4b75('0x16')][_0x570616[_0x4b75('0x46')]];}}}catch(_0x3797d5){logger[_0x4b75('0x2d')](_0x4b75('0x47'),_0x3797d5[_0x4b75('0x31')]);}};Acw[_0x4b75('0x14')]['syncBlindTransfer']=function(_0x2d1b3c){try{if(this['channels'][_0x2d1b3c['transfereruniqueid']]){logger[_0x4b75('0x23')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x2d1b3c[_0x4b75('0x48')]));this[_0x4b75('0x15')](_0x2d1b3c[_0x4b75('0x48')]);}else if(this[_0x4b75('0x16')][_0x2d1b3c[_0x4b75('0x49')]]){logger['info'](_0x4b75('0x4a'),JSON[_0x4b75('0x37')](_0x2d1b3c['transfererlinkedid']));this[_0x4b75('0x15')](_0x2d1b3c['transfererlinkedid']);}}catch(_0x5f00e5){logger[_0x4b75('0x2d')](_0x4b75('0x4b'),_0x5f00e5['message']);}};Acw[_0x4b75('0x14')][_0x4b75('0x4c')]=function(_0x2d8e6d){try{if(this[_0x4b75('0x5')][_0x2d8e6d['queue']]&&this[_0x4b75('0x5')][_0x2d8e6d['queue']][_0x4b75('0x4d')]==='all'){if(this['agents'][_0x2d8e6d['interface']]){logger[_0x4b75('0x23')](_0x4b75('0x4e'),_0x2d8e6d[_0x4b75('0x29')],_0x2d8e6d[_0x4b75('0x17')],_0x2d8e6d['queue']);return RpcUser[_0x4b75('0x4f')](this[_0x4b75('0x6')][_0x2d8e6d[_0x4b75('0x17')]],_0x4b75('0x50'),_0x2d8e6d['uniqueid']);}}}catch(_0x356d65){logger[_0x4b75('0x2d')](_0x4b75('0x51'),_0x356d65['message']);}};module[_0x4b75('0x52')]=Acw;
\ No newline at end of file
index 1baa9c6..422d8a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ed0=['bluebird','moment','util','lodash','ami','../../config/environment','asterisk','port','username','keepConnected','Action','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','inspect','resolve','then','catch','log','exports','asterisk-manager'];(function(_0x53ba5d,_0x45fa01){var _0x38f736=function(_0x2451f4){while(--_0x2451f4){_0x53ba5d['push'](_0x53ba5d['shift']());}};_0x38f736(++_0x45fa01);}(_0x4ed0,0x1c7));var _0x04ed=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x4ed0[_0x3947c9];return _0x2e7871;};'use strict';var Manager=require(_0x04ed('0x0'));var BPromise=require(_0x04ed('0x1'));var moment=require(_0x04ed('0x2'));var util=require(_0x04ed('0x3'));var _=require(_0x04ed('0x4'));var logger=require('../../config/logger')(_0x04ed('0x5'));var config=require(_0x04ed('0x6'));var ami=new Manager(config[_0x04ed('0x7')][_0x04ed('0x8')],config['asterisk']['ip'],config[_0x04ed('0x7')][_0x04ed('0x9')],config[_0x04ed('0x7')]['password'],!![]);ami[_0x04ed('0xa')]();ami[_0x04ed('0xb')]=BPromise['promisify'](ami['action']);function error(_0x250802){logger['error'](util[_0x04ed('0xc')](_0x04ed('0xd'),config['asterisk']['username'],config['asterisk']['ip'],config[_0x04ed('0x7')][_0x04ed('0x8')],util['inspect'](_0x250802,![],null)));}function close(){logger[_0x04ed('0xe')](util[_0x04ed('0xc')](_0x04ed('0xf'),config[_0x04ed('0x7')]['username'],config['asterisk']['ip'],config[_0x04ed('0x7')]['port']));}ami[_0x04ed('0x10')]=function(){return function(){return ami[_0x04ed('0xb')]({'action':_0x04ed('0x11')});};};ami[_0x04ed('0x12')]=function(){return function(){return ami[_0x04ed('0xb')]({'action':'devicestatelist'});};};ami[_0x04ed('0x13')]=function(){return function(){return ami['Action']({'action':_0x04ed('0x14')});};};ami[_0x04ed('0x15')]=function(){return function(){return ami['Action']({'action':_0x04ed('0x16')});};};ami[_0x04ed('0x17')]=function(){return function(){return ami[_0x04ed('0xb')]({'action':_0x04ed('0x18')});};};function connect(_0x586a45){logger[_0x04ed('0x19')](util[_0x04ed('0xc')](_0x04ed('0x1a'),config[_0x04ed('0x7')][_0x04ed('0x9')],config[_0x04ed('0x7')]['ip'],config[_0x04ed('0x7')][_0x04ed('0x8')]));ami[_0x04ed('0x1b')](_0x04ed('0xe'),error);ami[_0x04ed('0x1b')](_0x04ed('0x1c'),close);}ami['on'](_0x04ed('0x1d'),connect);ami['on'](_0x04ed('0x1e'),function(_0x964756){logger[_0x04ed('0x19')](util[_0x04ed('0xc')](_0x04ed('0x1f'),config['asterisk'][_0x04ed('0x9')],config[_0x04ed('0x7')]['ip'],config[_0x04ed('0x7')][_0x04ed('0x8')],util[_0x04ed('0x20')](_0x964756,![],null)));});ami['on']('fullybooted',function(_0x783f53){logger[_0x04ed('0x19')](util[_0x04ed('0xc')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config['asterisk'][_0x04ed('0x9')],config[_0x04ed('0x7')]['ip'],config['asterisk'][_0x04ed('0x8')]));return BPromise[_0x04ed('0x21')]()[_0x04ed('0x22')](ami[_0x04ed('0x10')]())[_0x04ed('0x22')](ami[_0x04ed('0x12')]())[_0x04ed('0x22')](ami['actionSipPeerStatus']())[_0x04ed('0x22')](ami[_0x04ed('0x15')]())[_0x04ed('0x22')](ami[_0x04ed('0x17')]())[_0x04ed('0x23')](function(_0x502735){console[_0x04ed('0x24')](_0x502735);});});ami[_0x04ed('0x1b')](_0x04ed('0xe'),error);ami[_0x04ed('0x1b')](_0x04ed('0x1c'),close);module[_0x04ed('0x25')]=ami;
\ No newline at end of file
+var _0x7513=['connect','shutdown','fullybooted','resolve','then','actionQueueSummary','catch','log','exports','asterisk-manager','bluebird','moment','util','../../config/logger','../../config/environment','asterisk','port','username','password','Action','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionSipPeerStatus','queuesummary','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once'];(function(_0xdd598a,_0x2f4169){var _0x18c8d7=function(_0x52be9c){while(--_0x52be9c){_0xdd598a['push'](_0xdd598a['shift']());}};_0x18c8d7(++_0x2f4169);}(_0x7513,0x91));var _0x3751=function(_0x2e0d2a,_0x8d568){_0x2e0d2a=_0x2e0d2a-0x0;var _0x4014f0=_0x7513[_0x2e0d2a];return _0x4014f0;};'use strict';var Manager=require(_0x3751('0x0'));var BPromise=require(_0x3751('0x1'));var moment=require(_0x3751('0x2'));var util=require(_0x3751('0x3'));var _=require('lodash');var logger=require(_0x3751('0x4'))('ami');var config=require(_0x3751('0x5'));var ami=new Manager(config[_0x3751('0x6')][_0x3751('0x7')],config['asterisk']['ip'],config[_0x3751('0x6')][_0x3751('0x8')],config['asterisk'][_0x3751('0x9')],!![]);ami['keepConnected']();ami[_0x3751('0xa')]=BPromise['promisify'](ami[_0x3751('0xb')]);function error(_0x4fd739){logger[_0x3751('0xc')](util['format'](_0x3751('0xd'),config[_0x3751('0x6')]['username'],config[_0x3751('0x6')]['ip'],config[_0x3751('0x6')]['port'],util[_0x3751('0xe')](_0x4fd739,![],null)));}function close(){logger[_0x3751('0xc')](util[_0x3751('0xf')](_0x3751('0x10'),config[_0x3751('0x6')][_0x3751('0x8')],config[_0x3751('0x6')]['ip'],config[_0x3751('0x6')][_0x3751('0x7')]));}ami[_0x3751('0x11')]=function(){return function(){return ami['Action']({'action':_0x3751('0x12')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x3751('0xa')]({'action':'devicestatelist'});};};ami[_0x3751('0x13')]=function(){return function(){return ami[_0x3751('0xa')]({'action':'sippeerstatus'});};};ami['actionQueueSummary']=function(){return function(){return ami[_0x3751('0xa')]({'action':_0x3751('0x14')});};};ami['actionCoreShowChannels']=function(){return function(){return ami[_0x3751('0xa')]({'action':_0x3751('0x15')});};};function connect(_0x241a54){logger[_0x3751('0x16')](util['format'](_0x3751('0x17'),config[_0x3751('0x6')][_0x3751('0x8')],config[_0x3751('0x6')]['ip'],config[_0x3751('0x6')][_0x3751('0x7')]));ami['once'](_0x3751('0xc'),error);ami[_0x3751('0x18')]('close',close);}ami['on'](_0x3751('0x19'),connect);ami['on'](_0x3751('0x1a'),function(_0x47f437){logger[_0x3751('0x16')](util['format']('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk']['username'],config[_0x3751('0x6')]['ip'],config[_0x3751('0x6')]['port'],util[_0x3751('0xe')](_0x47f437,![],null)));});ami['on'](_0x3751('0x1b'),function(_0xd27923){logger[_0x3751('0x16')](util['format']('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0x3751('0x6')][_0x3751('0x8')],config[_0x3751('0x6')]['ip'],config['asterisk'][_0x3751('0x7')]));return BPromise[_0x3751('0x1c')]()[_0x3751('0x1d')](ami[_0x3751('0x11')]())[_0x3751('0x1d')](ami['actionDeviceStateList']())[_0x3751('0x1d')](ami[_0x3751('0x13')]())[_0x3751('0x1d')](ami[_0x3751('0x1e')]())['then'](ami['actionCoreShowChannels']())[_0x3751('0x1f')](function(_0x5ee512){console[_0x3751('0x20')](_0x5ee512);});});ami[_0x3751('0x18')](_0x3751('0xc'),error);ami[_0x3751('0x18')]('close',close);module[_0x3751('0x21')]=ami;
\ No newline at end of file
index 3b04a8b..b744dee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['then','rpc','memberReport','error','message','result','catch','exports','bluebird','../../config/logger','Request','request'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xda3f,0xec));var _0xfda3=function(_0x12a8a8,_0x2e5f91){_0x12a8a8=_0x12a8a8-0x0;var _0x5b1d28=_0xda3f[_0x12a8a8];return _0x5b1d28;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xfda3('0x0'));var logger=require(_0xfda3('0x1'))('ami');var client=jayson['client']['http']({'port':0x2329});client[_0xfda3('0x2')]=function(_0x581693,_0x36dc71){return new BPromise(function(_0x22187d,_0x516500){return client[_0xfda3('0x3')](_0x581693,_0x36dc71)[_0xfda3('0x4')](function(_0x47e7e2){logger['debug'](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x36dc71,_0x47e7e2);if(_0x47e7e2[_0xfda3('0x7')]){logger[_0xfda3('0x7')](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x47e7e2[_0xfda3('0x7')][_0xfda3('0x8')],_0x36dc71);return _0x516500(_0x47e7e2[_0xfda3('0x7')][_0xfda3('0x8')]);}else{return _0x22187d(_0x47e7e2[_0xfda3('0x9')]);}})[_0xfda3('0xa')](function(_0x4d7841){logger[_0xfda3('0x7')](_0xfda3('0x5'),_0xfda3('0x6'),_0x581693,_0x4d7841,_0x36dc71);return _0x516500(_0x4d7841);});});};module[_0xfda3('0xb')]=client;
\ No newline at end of file
+var _0xe706=['result','catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','request','then','debug','rpc','memberReport','error','message'];(function(_0x31e5cb,_0x2f5adf){var _0x4170df=function(_0x31c53e){while(--_0x31c53e){_0x31e5cb['push'](_0x31e5cb['shift']());}};_0x4170df(++_0x2f5adf);}(_0xe706,0xa3));var _0x6e70=function(_0x4dcbe5,_0x3f98d7){_0x4dcbe5=_0x4dcbe5-0x0;var _0x45ac5c=_0xe706[_0x4dcbe5];return _0x45ac5c;};'use strict';var jayson=require(_0x6e70('0x0'));var BPromise=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('ami');var client=jayson[_0x6e70('0x3')][_0x6e70('0x4')]({'port':0x2329});client[_0x6e70('0x5')]=function(_0x7dfbc3,_0x142c27){return new BPromise(function(_0x2164a4,_0x376a8d){return client[_0x6e70('0x6')](_0x7dfbc3,_0x142c27)[_0x6e70('0x7')](function(_0x4381d1){logger[_0x6e70('0x8')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x142c27,_0x4381d1);if(_0x4381d1[_0x6e70('0xb')]){logger[_0x6e70('0xb')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')],_0x142c27);return _0x376a8d(_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')]);}else{return _0x2164a4(_0x4381d1[_0x6e70('0xd')]);}})[_0x6e70('0xe')](function(_0x4600f9){logger['error']('rpc',_0x6e70('0xa'),_0x7dfbc3,_0x4600f9,_0x142c27);return _0x376a8d(_0x4600f9);});});};module[_0x6e70('0xf')]=client;
\ No newline at end of file
index 28a1e7a..136c08e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eda=['originatecalleridnum','originatecalleridname','prototype','getCaller','dialCutDigit','substring','getQueue','queue','exports','util','moment','isNil','string','voiceQueue','uniqueid','name','Contact','lastName','number','phone','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','firstName','starttime','format','callback','callbackuniqueid','callbackat','recallme'];(function(_0xa5d421,_0x27a825){var _0x50d500=function(_0x542fc0){while(--_0x542fc0){_0xa5d421['push'](_0xa5d421['shift']());}};_0x50d500(++_0x27a825);}(_0x7eda,0x93));var _0xa7ed=function(_0x379336,_0x2e9c97){_0x379336=_0x379336-0x0;var _0x2fe67d=_0x7eda[_0x379336];return _0x2fe67d;};'use strict';var util=require(_0xa7ed('0x0'));var _=require('lodash');var moment=require(_0xa7ed('0x1'));function checkNameSurname(_0x549229,_0x158000,_0x39d0bf){var _0x5cc34f='';if(!_[_0xa7ed('0x2')](_0x158000)&&_0xa7ed('0x3')===typeof _0x158000){_0x5cc34f+=_0x158000;}if(!_['isNil'](_0x39d0bf)&&_0xa7ed('0x3')===typeof _0x39d0bf){_0x5cc34f+='\x20'+_0x39d0bf;}if(_0x5cc34f!==''){return _0x5cc34f;}return _0x549229;}function Action(_0x3313dc,_0x2731f4,_0x5cf07f){this[_0xa7ed('0x4')]=_0x3313dc;this[_0xa7ed('0x5')]=_0x5cf07f||undefined;this[_0xa7ed('0x6')]=checkNameSurname(_0x2731f4['Contact']['phone'],_0x2731f4[_0xa7ed('0x7')]['firstName'],_0x2731f4[_0xa7ed('0x7')][_0xa7ed('0x8')]);this[_0xa7ed('0x9')]=_0x2731f4[_0xa7ed('0x7')][_0xa7ed('0xa')];this['queue']=_0x3313dc[_0xa7ed('0x6')];this[_0xa7ed('0xb')]=_0x2731f4['active']||![];this['type']=_0x3313dc[_0xa7ed('0xc')];this[_0xa7ed('0xd')]=_0x3313dc[_0xa7ed('0xd')]||0x3;this[_0xa7ed('0xe')]=_0x2731f4['scheduledat'];this[_0xa7ed('0xf')]=_0x2731f4[_0xa7ed('0xf')];this[_0xa7ed('0x10')]=_0x2731f4[_0xa7ed('0x10')];this[_0xa7ed('0x11')]=_0x2731f4['countnoanswerretry'];this[_0xa7ed('0x12')]=_0x2731f4[_0xa7ed('0x12')];this[_0xa7ed('0x13')]=_0x2731f4[_0xa7ed('0x13')];this['countabandonedretry']=_0x2731f4[_0xa7ed('0x14')];this['countmachineretry']=_0x2731f4[_0xa7ed('0x15')];this[_0xa7ed('0x16')]=_0x2731f4[_0xa7ed('0x16')];this[_0xa7ed('0x17')]=_0x2731f4[_0xa7ed('0x17')];this[_0xa7ed('0x18')]=_0x2731f4[_0xa7ed('0x18')];this['UserId']=_0x2731f4[_0xa7ed('0x19')];this[_0xa7ed('0x1a')]=_0x2731f4[_0xa7ed('0x1a')];this[_0xa7ed('0x1b')]=_0x2731f4[_0xa7ed('0x1b')];this[_0xa7ed('0x1c')]=_0x2731f4['id'];this[_0xa7ed('0x1d')]=_0x2731f4[_0xa7ed('0x7')][_0xa7ed('0x1e')]||'';this[_0xa7ed('0x1f')]=moment()[_0xa7ed('0x20')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xa7ed('0x21')]=_0x2731f4[_0xa7ed('0x21')];this[_0xa7ed('0x22')]=_0x2731f4['callbackuniqueid'];this['callbackat']=_0x2731f4[_0xa7ed('0x23')];this[_0xa7ed('0x24')]=_0x2731f4[_0xa7ed('0x24')];this[_0xa7ed('0x25')]='';this[_0xa7ed('0x26')]='';}Action[_0xa7ed('0x27')][_0xa7ed('0x28')]=function(){return util[_0xa7ed('0x20')]('\x22%s\x22\x20<%s>',this[_0xa7ed('0x6')],this['voiceQueue'][_0xa7ed('0x29')]>0x0?this[_0xa7ed('0x9')][_0xa7ed('0x2a')](this[_0xa7ed('0x4')][_0xa7ed('0x29')]):this[_0xa7ed('0x9')]);};Action[_0xa7ed('0x27')][_0xa7ed('0x2b')]=function(){return this[_0xa7ed('0x2c')];};module[_0xa7ed('0x2d')]=Action;
\ No newline at end of file
+var _0x4547=['countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','getCaller','format','\x22%s\x22\x20<%s>','dialCutDigit','substring','prototype','exports','util','lodash','moment','isNil','string','voiceQueue','name','Contact','firstName','lastName','number','phone','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry'];(function(_0x26f169,_0x2d01b2){var _0x43aad9=function(_0x4395ea){while(--_0x4395ea){_0x26f169['push'](_0x26f169['shift']());}};_0x43aad9(++_0x2d01b2);}(_0x4547,0x129));var _0x7454=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0x4547[_0x504df1];return _0x1063b5;};'use strict';var util=require(_0x7454('0x0'));var _=require(_0x7454('0x1'));var moment=require(_0x7454('0x2'));function checkNameSurname(_0x25414f,_0xf9927b,_0x445193){var _0x21462b='';if(!_[_0x7454('0x3')](_0xf9927b)&&_0x7454('0x4')===typeof _0xf9927b){_0x21462b+=_0xf9927b;}if(!_[_0x7454('0x3')](_0x445193)&&'string'===typeof _0x445193){_0x21462b+='\x20'+_0x445193;}if(_0x21462b!==''){return _0x21462b;}return _0x25414f;}function Action(_0x5d895c,_0x3a6770,_0x110a7b){this[_0x7454('0x5')]=_0x5d895c;this['uniqueid']=_0x110a7b||undefined;this[_0x7454('0x6')]=checkNameSurname(_0x3a6770[_0x7454('0x7')]['phone'],_0x3a6770[_0x7454('0x7')][_0x7454('0x8')],_0x3a6770[_0x7454('0x7')][_0x7454('0x9')]);this[_0x7454('0xa')]=_0x3a6770[_0x7454('0x7')][_0x7454('0xb')];this[_0x7454('0xc')]=_0x5d895c[_0x7454('0x6')];this['active']=_0x3a6770[_0x7454('0xd')]||![];this[_0x7454('0xe')]=_0x5d895c[_0x7454('0xe')];this['dialQueueTimeout']=_0x5d895c[_0x7454('0xf')]||0x3;this[_0x7454('0x10')]=_0x3a6770[_0x7454('0x10')];this[_0x7454('0x11')]=_0x3a6770['countbusyretry'];this[_0x7454('0x12')]=_0x3a6770[_0x7454('0x12')];this[_0x7454('0x13')]=_0x3a6770[_0x7454('0x13')];this[_0x7454('0x14')]=_0x3a6770[_0x7454('0x14')];this[_0x7454('0x15')]=_0x3a6770['countdropretry'];this[_0x7454('0x16')]=_0x3a6770[_0x7454('0x16')];this[_0x7454('0x17')]=_0x3a6770['countmachineretry'];this[_0x7454('0x18')]=_0x3a6770[_0x7454('0x18')];this['ContactId']=_0x3a6770[_0x7454('0x19')];this[_0x7454('0x1a')]=_0x3a6770['ListId'];this[_0x7454('0x1b')]=_0x3a6770['UserId'];this[_0x7454('0x1c')]=_0x3a6770[_0x7454('0x1c')];this[_0x7454('0x1d')]=_0x3a6770['CampaignId'];this['idHopper']=_0x3a6770['id'];this[_0x7454('0x1e')]=_0x3a6770[_0x7454('0x7')]['firstName']||'';this[_0x7454('0x1f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x7454('0x20')]=_0x3a6770[_0x7454('0x20')];this[_0x7454('0x21')]=_0x3a6770[_0x7454('0x21')];this[_0x7454('0x22')]=_0x3a6770['callbackat'];this[_0x7454('0x23')]=_0x3a6770['recallme'];this[_0x7454('0x24')]='';this[_0x7454('0x25')]='';}Action['prototype'][_0x7454('0x26')]=function(){return util[_0x7454('0x27')](_0x7454('0x28'),this['name'],this['voiceQueue'][_0x7454('0x29')]>0x0?this['number'][_0x7454('0x2a')](this[_0x7454('0x5')]['dialCutDigit']):this[_0x7454('0xa')]);};Action[_0x7454('0x2b')]['getQueue']=function(){return this[_0x7454('0xc')];};module[_0x7454('0x2c')]=Action;
\ No newline at end of file
index f081a13..908ce40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf801=['format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','name','calleridnum','number','starttime','responsetime','answertime','endtime'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xf801,0xa0));var _0x1f80=function(_0x3b1aec,_0x4a66ff){_0x3b1aec=_0x3b1aec-0x0;var _0x574c45=_0xf801[_0x3b1aec];return _0x574c45;};'use strict';var util=require(_0x1f80('0x0'));var _=require(_0x1f80('0x1'));var moment=require(_0x1f80('0x2'));function getSeconds(_0x4edd34,_0x337101){var _0x3e6254=moment(_0x4edd34)[_0x1f80('0x3')](0x0);var _0x2d933d=moment(_0x337101)[_0x1f80('0x3')](0x0);return _0x3e6254[_0x1f80('0x4')](_0x2d933d,_0x1f80('0x5'));}function AgentComplete(_0x5d3e75,_0x20e615){this[_0x1f80('0x6')]=0x4;this[_0x1f80('0x7')]=_0x1f80('0x8');this['scheduledat']=_0x5d3e75['scheduledat'];this[_0x1f80('0x9')]=_0x5d3e75[_0x1f80('0x9')];this[_0x1f80('0xa')]=_0x5d3e75['type']==='outbound'?_0x1f80('0xb'):_0x5d3e75[_0x1f80('0x9')];this['countbusyretry']=_0x5d3e75[_0x1f80('0xc')];this[_0x1f80('0xd')]=_0x5d3e75[_0x1f80('0xd')];this[_0x1f80('0xe')]=_0x5d3e75[_0x1f80('0xe')];this[_0x1f80('0xf')]=_0x5d3e75[_0x1f80('0xc')]+_0x5d3e75['countcongestionretry']+_0x5d3e75[_0x1f80('0xe')]+_0x5d3e75[_0x1f80('0x10')]+_0x5d3e75[_0x1f80('0x11')]+_0x5d3e75[_0x1f80('0x12')]+_0x5d3e75[_0x1f80('0x13')]+_0x5d3e75[_0x1f80('0x14')];this[_0x1f80('0x10')]=_0x5d3e75[_0x1f80('0x10')];this['countdropretry']=_0x5d3e75['countdropretry'];this[_0x1f80('0x12')]=_0x5d3e75[_0x1f80('0x12')];this['countmachineretry']=_0x5d3e75['countmachineretry'];this[_0x1f80('0x14')]=_0x5d3e75[_0x1f80('0x14')];this['uniqueid']=_0x20e615['uniqueid'];this['calleridname']=_0x5d3e75[_0x1f80('0x15')];this[_0x1f80('0x16')]=_0x5d3e75[_0x1f80('0x17')];this[_0x1f80('0x18')]=_0x5d3e75[_0x1f80('0x18')];this[_0x1f80('0x19')]=_0x5d3e75['responsetime'];this['answertime']=_0x5d3e75[_0x1f80('0x1a')];this[_0x1f80('0x1b')]=moment()[_0x1f80('0x1c')](_0x1f80('0x1d'));this[_0x1f80('0x1e')]=getSeconds(_0x5d3e75[_0x1f80('0x19')],_0x5d3e75['starttime']);this[_0x1f80('0x1f')]=getSeconds(_0x5d3e75['answertime'],_0x5d3e75['responsetime']);this[_0x1f80('0x20')]=getSeconds(this[_0x1f80('0x1b')],_0x5d3e75['answertime']);this[_0x1f80('0xb')]=_0x20e615[_0x1f80('0xb')];this[_0x1f80('0x21')]=_0x20e615[_0x1f80('0x21')];this[_0x1f80('0x22')]=_0x20e615[_0x1f80('0x22')];this['callback']=_0x5d3e75[_0x1f80('0x23')];this[_0x1f80('0x24')]=_0x5d3e75[_0x1f80('0x24')];this[_0x1f80('0x25')]=_0x5d3e75[_0x1f80('0x25')];this[_0x1f80('0x26')]=_0x5d3e75['recallme'];this['ContactId']=_0x5d3e75[_0x1f80('0x27')];this[_0x1f80('0x28')]=_0x5d3e75['ListId'];this[_0x1f80('0x29')]=_0x5d3e75['UserId'];this['VoiceQueueId']=_0x5d3e75[_0x1f80('0x2a')];this[_0x1f80('0x2b')]=_0x5d3e75[_0x1f80('0x2b')];this[_0x1f80('0x2c')]=_0x5d3e75['originatecalleridnum']||'';this['originatecalleridname']=_0x5d3e75[_0x1f80('0x2d')]||'';}module[_0x1f80('0x2e')]=AgentComplete;
\ No newline at end of file
+var _0x63ce=['countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','calleridnum','starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','answertime','talktime','membername','reason','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type','campaigntype','queue'];(function(_0x181670,_0x2f8162){var _0x427b22=function(_0xa3d907){while(--_0xa3d907){_0x181670['push'](_0x181670['shift']());}};_0x427b22(++_0x2f8162);}(_0x63ce,0x122));var _0xe63c=function(_0x3b1e3f,_0xf8826b){_0x3b1e3f=_0x3b1e3f-0x0;var _0x3b1cd3=_0x63ce[_0x3b1e3f];return _0x3b1cd3;};'use strict';var util=require(_0xe63c('0x0'));var _=require('lodash');var moment=require(_0xe63c('0x1'));function getSeconds(_0x265460,_0x313d09){var _0x4c74d2=moment(_0x265460)[_0xe63c('0x2')](0x0);var _0x47c679=moment(_0x313d09)['milliseconds'](0x0);return _0x4c74d2[_0xe63c('0x3')](_0x47c679,_0xe63c('0x4'));}function AgentComplete(_0x25e666,_0x55cb1e){this['state']=0x4;this[_0xe63c('0x5')]=_0xe63c('0x6');this[_0xe63c('0x7')]=_0x25e666[_0xe63c('0x7')];this['type']=_0x25e666[_0xe63c('0x8')];this[_0xe63c('0x9')]=_0x25e666[_0xe63c('0x8')]==='outbound'?_0xe63c('0xa'):_0x25e666[_0xe63c('0x8')];this[_0xe63c('0xb')]=_0x25e666['countbusyretry'];this['countcongestionretry']=_0x25e666[_0xe63c('0xc')];this['countnoanswerretry']=_0x25e666[_0xe63c('0xd')];this['countglobal']=_0x25e666[_0xe63c('0xb')]+_0x25e666[_0xe63c('0xc')]+_0x25e666['countnoanswerretry']+_0x25e666[_0xe63c('0xe')]+_0x25e666['countdropretry']+_0x25e666[_0xe63c('0xf')]+_0x25e666[_0xe63c('0x10')]+_0x25e666[_0xe63c('0x11')];this[_0xe63c('0xe')]=_0x25e666[_0xe63c('0xe')];this[_0xe63c('0x12')]=_0x25e666[_0xe63c('0x12')];this[_0xe63c('0xf')]=_0x25e666[_0xe63c('0xf')];this[_0xe63c('0x10')]=_0x25e666[_0xe63c('0x10')];this[_0xe63c('0x11')]=_0x25e666['countagentrejectretry'];this[_0xe63c('0x13')]=_0x55cb1e[_0xe63c('0x13')];this[_0xe63c('0x14')]=_0x25e666['name'];this[_0xe63c('0x15')]=_0x25e666['number'];this[_0xe63c('0x16')]=_0x25e666[_0xe63c('0x16')];this[_0xe63c('0x17')]=_0x25e666[_0xe63c('0x17')];this['answertime']=_0x25e666['answertime'];this[_0xe63c('0x18')]=moment()['format'](_0xe63c('0x19'));this[_0xe63c('0x1a')]=getSeconds(_0x25e666[_0xe63c('0x17')],_0x25e666[_0xe63c('0x16')]);this[_0xe63c('0x1b')]=getSeconds(_0x25e666[_0xe63c('0x1c')],_0x25e666[_0xe63c('0x17')]);this[_0xe63c('0x1d')]=getSeconds(this[_0xe63c('0x18')],_0x25e666[_0xe63c('0x1c')]);this['queue']=_0x55cb1e[_0xe63c('0xa')];this['membername']=_0x55cb1e[_0xe63c('0x1e')];this[_0xe63c('0x1f')]=_0x55cb1e[_0xe63c('0x1f')];this[_0xe63c('0x20')]=_0x25e666[_0xe63c('0x20')];this[_0xe63c('0x21')]=_0x25e666[_0xe63c('0x21')];this['callbackat']=_0x25e666[_0xe63c('0x22')];this['recallme']=_0x25e666['recallme'];this[_0xe63c('0x23')]=_0x25e666[_0xe63c('0x23')];this[_0xe63c('0x24')]=_0x25e666[_0xe63c('0x24')];this[_0xe63c('0x25')]=_0x25e666[_0xe63c('0x25')];this['VoiceQueueId']=_0x25e666[_0xe63c('0x26')];this[_0xe63c('0x27')]=_0x25e666['CampaignId'];this[_0xe63c('0x28')]=_0x25e666[_0xe63c('0x28')]||'';this[_0xe63c('0x29')]=_0x25e666[_0xe63c('0x29')]||'';}module[_0xe63c('0x2a')]=AgentComplete;
\ No newline at end of file
index 0a1ba85..54ad303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec39=['countglobal','countdropretry','countabandonedretry','countmachineretry','countnosuchnumberretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry'];(function(_0xda3559,_0x460825){var _0x2ff9f9=function(_0x7191ea){while(--_0x7191ea){_0xda3559['push'](_0xda3559['shift']());}};_0x2ff9f9(++_0x460825);}(_0xec39,0x19f));var _0x9ec3=function(_0x3f0de1,_0x25ce78){_0x3f0de1=_0x3f0de1-0x0;var _0x408bc2=_0xec39[_0x3f0de1];return _0x408bc2;};'use strict';var util=require(_0x9ec3('0x0'));var _=require(_0x9ec3('0x1'));var moment=require(_0x9ec3('0x2'));function getSeconds(_0x3ea667,_0x1fc7a7){var _0xb3d117=moment(_0x3ea667)[_0x9ec3('0x3')](0x0);var _0x5c0885=moment(_0x1fc7a7)[_0x9ec3('0x3')](0x0);return _0xb3d117[_0x9ec3('0x4')](_0x5c0885,_0x9ec3('0x5'));}function Final(_0x4a3996){this['uniqueid']=_0x4a3996['uniqueid'];this[_0x9ec3('0x6')]=_0x4a3996[_0x9ec3('0x6')];this[_0x9ec3('0x7')]=_0x4a3996['type'];this[_0x9ec3('0x8')]=_0x4a3996[_0x9ec3('0x7')]===_0x9ec3('0x9')?_0x9ec3('0xa'):_0x4a3996[_0x9ec3('0x7')];this[_0x9ec3('0xb')]=_0x4a3996[_0x9ec3('0xb')];this['countcongestionretry']=_0x4a3996[_0x9ec3('0xc')];this[_0x9ec3('0xd')]=_0x4a3996[_0x9ec3('0xd')];this[_0x9ec3('0xe')]=_0x4a3996[_0x9ec3('0xb')]+_0x4a3996[_0x9ec3('0xc')]+_0x4a3996[_0x9ec3('0xd')]+_0x4a3996['countnosuchnumberretry']+_0x4a3996[_0x9ec3('0xf')]+_0x4a3996[_0x9ec3('0x10')]+_0x4a3996[_0x9ec3('0x11')]+_0x4a3996['countagentrejectretry'];this[_0x9ec3('0x12')]=_0x4a3996['countnosuchnumberretry'];this[_0x9ec3('0xf')]=_0x4a3996[_0x9ec3('0xf')];this[_0x9ec3('0x10')]=_0x4a3996[_0x9ec3('0x10')];this[_0x9ec3('0x11')]=_0x4a3996[_0x9ec3('0x11')];this[_0x9ec3('0x13')]=_0x4a3996[_0x9ec3('0x13')];this[_0x9ec3('0xa')]=_0x4a3996['queue'];this[_0x9ec3('0x14')]=_0x4a3996['calleridname'];this['calleridnum']=_0x4a3996[_0x9ec3('0x15')];this[_0x9ec3('0x16')]=_0x4a3996[_0x9ec3('0x16')];this[_0x9ec3('0x17')]=_0x4a3996[_0x9ec3('0x17')];this['endtime']=_0x4a3996[_0x9ec3('0x17')];this['ringtime']=_0x4a3996[_0x9ec3('0x18')]||0x0;this['holdtime']=_0x4a3996[_0x9ec3('0x19')]||0x0;this[_0x9ec3('0x1a')]=_0x4a3996[_0x9ec3('0x1a')]||0x0;this['callback']=_0x4a3996[_0x9ec3('0x1b')];this['callbackuniqueid']=_0x4a3996[_0x9ec3('0x1c')];this['callbackat']=_0x4a3996[_0x9ec3('0x1d')];this[_0x9ec3('0x1e')]=_0x4a3996[_0x9ec3('0x1e')];this[_0x9ec3('0x1f')]=_0x4a3996[_0x9ec3('0x1f')];this[_0x9ec3('0x20')]=_0x4a3996[_0x9ec3('0x20')];this['UserId']=_0x4a3996[_0x9ec3('0x21')];this[_0x9ec3('0x22')]=_0x4a3996[_0x9ec3('0x22')];this[_0x9ec3('0x23')]=_0x4a3996[_0x9ec3('0x23')];this[_0x9ec3('0x24')]=_0x4a3996[_0x9ec3('0x24')]||'';this[_0x9ec3('0x25')]=_0x4a3996[_0x9ec3('0x25')]||'';}module[_0x9ec3('0x26')]=Final;
\ No newline at end of file
+var _0x5577=['ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countglobal','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','recallme','ContactId'];(function(_0x476172,_0x5a4b53){var _0x3ec76b=function(_0x43d3fe){while(--_0x43d3fe){_0x476172['push'](_0x476172['shift']());}};_0x3ec76b(++_0x5a4b53);}(_0x5577,0x1b4));var _0x7557=function(_0x32f47e,_0x5acd97){_0x32f47e=_0x32f47e-0x0;var _0x1f1e6e=_0x5577[_0x32f47e];return _0x1f1e6e;};'use strict';var util=require(_0x7557('0x0'));var _=require('lodash');var moment=require(_0x7557('0x1'));function getSeconds(_0x389954,_0x52a8c6){var _0x34636a=moment(_0x389954)[_0x7557('0x2')](0x0);var _0x25c0da=moment(_0x52a8c6)[_0x7557('0x2')](0x0);return _0x34636a[_0x7557('0x3')](_0x25c0da,_0x7557('0x4'));}function Final(_0x5862e6){this[_0x7557('0x5')]=_0x5862e6[_0x7557('0x5')];this[_0x7557('0x6')]=_0x5862e6[_0x7557('0x6')];this[_0x7557('0x7')]=_0x5862e6[_0x7557('0x7')];this[_0x7557('0x8')]=_0x5862e6[_0x7557('0x7')]===_0x7557('0x9')?_0x7557('0xa'):_0x5862e6[_0x7557('0x7')];this[_0x7557('0xb')]=_0x5862e6[_0x7557('0xb')];this[_0x7557('0xc')]=_0x5862e6[_0x7557('0xc')];this['countnoanswerretry']=_0x5862e6['countnoanswerretry'];this[_0x7557('0xd')]=_0x5862e6[_0x7557('0xb')]+_0x5862e6[_0x7557('0xc')]+_0x5862e6[_0x7557('0xe')]+_0x5862e6[_0x7557('0xf')]+_0x5862e6[_0x7557('0x10')]+_0x5862e6[_0x7557('0x11')]+_0x5862e6[_0x7557('0x12')]+_0x5862e6[_0x7557('0x13')];this[_0x7557('0xf')]=_0x5862e6['countnosuchnumberretry'];this[_0x7557('0x10')]=_0x5862e6[_0x7557('0x10')];this[_0x7557('0x11')]=_0x5862e6['countabandonedretry'];this[_0x7557('0x12')]=_0x5862e6[_0x7557('0x12')];this[_0x7557('0x13')]=_0x5862e6[_0x7557('0x13')];this['queue']=_0x5862e6[_0x7557('0xa')];this[_0x7557('0x14')]=_0x5862e6['calleridname'];this['calleridnum']=_0x5862e6[_0x7557('0x15')];this[_0x7557('0x16')]=_0x5862e6[_0x7557('0x16')];this[_0x7557('0x17')]=_0x5862e6['responsetime'];this[_0x7557('0x18')]=_0x5862e6['responsetime'];this[_0x7557('0x19')]=_0x5862e6[_0x7557('0x19')]||0x0;this[_0x7557('0x1a')]=_0x5862e6[_0x7557('0x1a')]||0x0;this['talktime']=_0x5862e6[_0x7557('0x1b')]||0x0;this[_0x7557('0x1c')]=_0x5862e6[_0x7557('0x1c')];this[_0x7557('0x1d')]=_0x5862e6[_0x7557('0x1d')];this['callbackat']=_0x5862e6['callbackat'];this['recallme']=_0x5862e6[_0x7557('0x1e')];this['ContactId']=_0x5862e6[_0x7557('0x1f')];this[_0x7557('0x20')]=_0x5862e6[_0x7557('0x20')];this[_0x7557('0x21')]=_0x5862e6[_0x7557('0x21')];this[_0x7557('0x22')]=_0x5862e6[_0x7557('0x22')];this['CampaignId']=_0x5862e6[_0x7557('0x23')];this['originatecalleridnum']=_0x5862e6[_0x7557('0x24')]||'';this['originatecalleridname']=_0x5862e6[_0x7557('0x25')]||'';}module[_0x7557('0x26')]=Final;
\ No newline at end of file
index 24c709f..e481788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3a9=['campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','name','calleridnum','starttime','responsetime','endtime','format','holdtime','talktime','queue','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0xe3a9,0x18b));var _0x9e3a=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xe3a9[_0x565c49];return _0x20ca34;};'use strict';var util=require(_0x9e3a('0x0'));var _=require(_0x9e3a('0x1'));var moment=require(_0x9e3a('0x2'));function getSeconds(_0x5046d0,_0x1704a7){var _0x42d7cc=moment(_0x5046d0)[_0x9e3a('0x3')](0x0);var _0xf605dc=moment(_0x1704a7)[_0x9e3a('0x3')](0x0);return _0x42d7cc[_0x9e3a('0x4')](_0xf605dc,_0x9e3a('0x5'));}function Hangup(_0x3e10f,_0x436482){this['state']=0x4;this[_0x9e3a('0x6')]=_0x9e3a('0x7');this['scheduledat']=_0x3e10f[_0x9e3a('0x8')];this[_0x9e3a('0x9')]=_0x3e10f[_0x9e3a('0x9')];this[_0x9e3a('0xa')]=_0x3e10f[_0x9e3a('0x9')]===_0x9e3a('0xb')?'queue':_0x3e10f[_0x9e3a('0x9')];this[_0x9e3a('0xc')]=_0x3e10f[_0x9e3a('0xc')];this[_0x9e3a('0xd')]=_0x3e10f[_0x9e3a('0xd')];this[_0x9e3a('0xe')]=_0x3e10f[_0x9e3a('0xe')];this[_0x9e3a('0xf')]=_0x3e10f[_0x9e3a('0xc')]+_0x3e10f['countcongestionretry']+_0x3e10f[_0x9e3a('0xe')]+_0x3e10f[_0x9e3a('0x10')]+_0x3e10f[_0x9e3a('0x11')]+_0x3e10f['countabandonedretry']+_0x3e10f[_0x9e3a('0x12')]+_0x3e10f[_0x9e3a('0x13')];this['countnosuchnumberretry']=_0x3e10f[_0x9e3a('0x10')];this[_0x9e3a('0x11')]=_0x3e10f[_0x9e3a('0x11')];this[_0x9e3a('0x14')]=_0x3e10f[_0x9e3a('0x14')];this[_0x9e3a('0x12')]=_0x3e10f[_0x9e3a('0x12')];this[_0x9e3a('0x13')]=_0x3e10f[_0x9e3a('0x13')];this[_0x9e3a('0x15')]=_0x436482[_0x9e3a('0x15')];this['calleridname']=_0x3e10f[_0x9e3a('0x16')];this[_0x9e3a('0x17')]=_0x3e10f['number'];this[_0x9e3a('0x18')]=_0x3e10f[_0x9e3a('0x18')];this[_0x9e3a('0x19')]=_0x3e10f[_0x9e3a('0x19')];this[_0x9e3a('0x1a')]=moment()[_0x9e3a('0x1b')]('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x3e10f['responsetime'],_0x3e10f[_0x9e3a('0x18')]);this[_0x9e3a('0x1c')]=0x0;this[_0x9e3a('0x1d')]=getSeconds(this[_0x9e3a('0x1a')],_0x3e10f[_0x9e3a('0x19')]);this[_0x9e3a('0x1e')]=_0x3e10f[_0x9e3a('0x1e')];this[_0x9e3a('0x1f')]=_0x9e3a('0x20');this[_0x9e3a('0x21')]=_0x436482[_0x9e3a('0x22')];this['callback']=_0x3e10f[_0x9e3a('0x23')];this[_0x9e3a('0x24')]=_0x3e10f[_0x9e3a('0x24')];this[_0x9e3a('0x25')]=_0x3e10f['callbackat'];this[_0x9e3a('0x26')]=_0x3e10f[_0x9e3a('0x26')];this[_0x9e3a('0x27')]=_0x3e10f[_0x9e3a('0x27')];this[_0x9e3a('0x28')]=_0x3e10f[_0x9e3a('0x28')];this[_0x9e3a('0x29')]=_0x3e10f[_0x9e3a('0x29')];this[_0x9e3a('0x2a')]=_0x3e10f[_0x9e3a('0x2a')];this[_0x9e3a('0x2b')]=_0x3e10f['CampaignId'];}module[_0x9e3a('0x2c')]=Hangup;
\ No newline at end of file
+var _0xc71d=['queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type','campaigntype'];(function(_0x235271,_0x221549){var _0x150ae0=function(_0x92ce18){while(--_0x92ce18){_0x235271['push'](_0x235271['shift']());}};_0x150ae0(++_0x221549);}(_0xc71d,0xa3));var _0xdc71=function(_0xac0de1,_0x12d3d9){_0xac0de1=_0xac0de1-0x0;var _0x1c1995=_0xc71d[_0xac0de1];return _0x1c1995;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0xdc71('0x0'));function getSeconds(_0x9e23fb,_0x4f2bd7){var _0x510a21=moment(_0x9e23fb)[_0xdc71('0x1')](0x0);var _0x262b71=moment(_0x4f2bd7)[_0xdc71('0x1')](0x0);return _0x510a21[_0xdc71('0x2')](_0x262b71,_0xdc71('0x3'));}function Hangup(_0x3452b6,_0x2502ff){this['state']=0x4;this[_0xdc71('0x4')]=_0xdc71('0x5');this[_0xdc71('0x6')]=_0x3452b6['scheduledat'];this['type']=_0x3452b6[_0xdc71('0x7')];this[_0xdc71('0x8')]=_0x3452b6['type']==='outbound'?_0xdc71('0x9'):_0x3452b6[_0xdc71('0x7')];this[_0xdc71('0xa')]=_0x3452b6[_0xdc71('0xa')];this[_0xdc71('0xb')]=_0x3452b6[_0xdc71('0xb')];this[_0xdc71('0xc')]=_0x3452b6[_0xdc71('0xc')];this[_0xdc71('0xd')]=_0x3452b6[_0xdc71('0xa')]+_0x3452b6[_0xdc71('0xb')]+_0x3452b6[_0xdc71('0xc')]+_0x3452b6[_0xdc71('0xe')]+_0x3452b6[_0xdc71('0xf')]+_0x3452b6['countabandonedretry']+_0x3452b6['countmachineretry']+_0x3452b6[_0xdc71('0x10')];this[_0xdc71('0xe')]=_0x3452b6[_0xdc71('0xe')];this[_0xdc71('0xf')]=_0x3452b6[_0xdc71('0xf')];this[_0xdc71('0x11')]=_0x3452b6[_0xdc71('0x11')];this[_0xdc71('0x12')]=_0x3452b6['countmachineretry'];this[_0xdc71('0x10')]=_0x3452b6[_0xdc71('0x10')];this[_0xdc71('0x13')]=_0x2502ff['uniqueid'];this[_0xdc71('0x14')]=_0x3452b6[_0xdc71('0x15')];this[_0xdc71('0x16')]=_0x3452b6[_0xdc71('0x17')];this[_0xdc71('0x18')]=_0x3452b6[_0xdc71('0x18')];this[_0xdc71('0x19')]=_0x3452b6[_0xdc71('0x19')];this[_0xdc71('0x1a')]=moment()['format'](_0xdc71('0x1b'));this[_0xdc71('0x1c')]=getSeconds(_0x3452b6['responsetime'],_0x3452b6[_0xdc71('0x18')]);this[_0xdc71('0x1d')]=0x0;this['talktime']=getSeconds(this[_0xdc71('0x1a')],_0x3452b6[_0xdc71('0x19')]);this[_0xdc71('0x9')]=_0x3452b6['queue'];this['membername']=_0xdc71('0x1e');this[_0xdc71('0x1f')]=_0x2502ff[_0xdc71('0x20')];this['callback']=_0x3452b6[_0xdc71('0x21')];this[_0xdc71('0x22')]=_0x3452b6[_0xdc71('0x22')];this[_0xdc71('0x23')]=_0x3452b6[_0xdc71('0x23')];this[_0xdc71('0x24')]=_0x3452b6[_0xdc71('0x24')];this['ContactId']=_0x3452b6[_0xdc71('0x25')];this[_0xdc71('0x26')]=_0x3452b6[_0xdc71('0x26')];this['UserId']=_0x3452b6[_0xdc71('0x27')];this[_0xdc71('0x28')]=_0x3452b6[_0xdc71('0x28')];this[_0xdc71('0x29')]=_0x3452b6[_0xdc71('0x29')];}module[_0xdc71('0x2a')]=Hangup;
\ No newline at end of file
index a100fac..f06279a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a7a=['callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','name','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback'];(function(_0x967e31,_0x5d2a4e){var _0x36aff5=function(_0x4a2f84){while(--_0x4a2f84){_0x967e31['push'](_0x967e31['shift']());}};_0x36aff5(++_0x5d2a4e);}(_0x3a7a,0xf3));var _0xa3a7=function(_0x1d3019,_0x8dbbd5){_0x1d3019=_0x1d3019-0x0;var _0x36458e=_0x3a7a[_0x1d3019];return _0x36458e;};'use strict';var util=require(_0xa3a7('0x0'));var _=require(_0xa3a7('0x1'));var moment=require(_0xa3a7('0x2'));function getSeconds(_0x2e83e5,_0xdb11f4){var _0x4e854a=moment(_0x2e83e5)['milliseconds'](0x0);var _0x2ff231=moment(_0xdb11f4)[_0xa3a7('0x3')](0x0);return _0x4e854a['diff'](_0x2ff231,_0xa3a7('0x4'));}function History(_0x1518c7){this[_0xa3a7('0x5')]=_0x1518c7[_0xa3a7('0x5')];this[_0xa3a7('0x6')]=_0x1518c7[_0xa3a7('0x6')]||undefined;this[_0xa3a7('0x7')]=_0x1518c7[_0xa3a7('0x7')];this[_0xa3a7('0x8')]=_0x1518c7[_0xa3a7('0x7')]===_0xa3a7('0x9')?'queue':_0x1518c7[_0xa3a7('0x7')];this[_0xa3a7('0xa')]=_0x1518c7[_0xa3a7('0xa')];this[_0xa3a7('0xb')]=_0x1518c7[_0xa3a7('0xb')];this[_0xa3a7('0xc')]=_0x1518c7[_0xa3a7('0xc')];this[_0xa3a7('0xd')]=_0x1518c7[_0xa3a7('0xa')]+_0x1518c7['countcongestionretry']+_0x1518c7[_0xa3a7('0xc')]+_0x1518c7[_0xa3a7('0xe')]+_0x1518c7[_0xa3a7('0xf')]+_0x1518c7[_0xa3a7('0x10')]+_0x1518c7[_0xa3a7('0x11')]+_0x1518c7[_0xa3a7('0x12')];this[_0xa3a7('0xe')]=_0x1518c7[_0xa3a7('0xe')];this[_0xa3a7('0xf')]=_0x1518c7[_0xa3a7('0xf')];this['countabandonedretry']=_0x1518c7[_0xa3a7('0x10')];this[_0xa3a7('0x11')]=_0x1518c7[_0xa3a7('0x11')];this[_0xa3a7('0x12')]=_0x1518c7[_0xa3a7('0x12')];this[_0xa3a7('0x13')]=_0x1518c7[_0xa3a7('0x13')];this[_0xa3a7('0x14')]=_0x1518c7[_0xa3a7('0x15')];this['calleridnum']=_0x1518c7[_0xa3a7('0x16')];this[_0xa3a7('0x17')]=_0x1518c7[_0xa3a7('0x17')];this[_0xa3a7('0x18')]=_0x1518c7[_0xa3a7('0x18')];this[_0xa3a7('0x19')]=_0x1518c7['responsetime'];this[_0xa3a7('0x1a')]=getSeconds(_0x1518c7[_0xa3a7('0x18')],_0x1518c7[_0xa3a7('0x17')]);this[_0xa3a7('0x1b')]=0x0;this[_0xa3a7('0x1c')]=0x0;this[_0xa3a7('0x1d')]=_0x1518c7[_0xa3a7('0x1d')];this['callbackuniqueid']=_0x1518c7[_0xa3a7('0x1e')];this[_0xa3a7('0x1f')]=_0x1518c7[_0xa3a7('0x1f')];this[_0xa3a7('0x20')]=_0x1518c7['recallme'];this['ContactId']=_0x1518c7['ContactId'];this[_0xa3a7('0x21')]=_0x1518c7['ListId'];this[_0xa3a7('0x22')]=_0x1518c7[_0xa3a7('0x22')];this[_0xa3a7('0x23')]=_0x1518c7[_0xa3a7('0x23')];this['CampaignId']=_0x1518c7['CampaignId'];this[_0xa3a7('0x24')]=_0x1518c7[_0xa3a7('0x24')]||'';this[_0xa3a7('0x25')]=_0x1518c7[_0xa3a7('0x25')]||'';}module[_0xa3a7('0x26')]=History;
\ No newline at end of file
+var _0x1a20=['countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','queue','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime','holdtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry'];(function(_0x5e7007,_0x5f58c5){var _0x4eddf3=function(_0xb186df){while(--_0xb186df){_0x5e7007['push'](_0x5e7007['shift']());}};_0x4eddf3(++_0x5f58c5);}(_0x1a20,0x1d2));var _0x01a2=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1a20[_0x14add3];return _0x4a174f;};'use strict';var util=require('util');var _=require(_0x01a2('0x0'));var moment=require(_0x01a2('0x1'));function getSeconds(_0x4c9c54,_0x231c2f){var _0x47d760=moment(_0x4c9c54)['milliseconds'](0x0);var _0x27868f=moment(_0x231c2f)[_0x01a2('0x2')](0x0);return _0x47d760[_0x01a2('0x3')](_0x27868f,_0x01a2('0x4'));}function History(_0x975942){this[_0x01a2('0x5')]=_0x975942[_0x01a2('0x5')];this[_0x01a2('0x6')]=_0x975942[_0x01a2('0x6')]||undefined;this[_0x01a2('0x7')]=_0x975942[_0x01a2('0x7')];this[_0x01a2('0x8')]=_0x975942[_0x01a2('0x7')]==='outbound'?'queue':_0x975942['type'];this[_0x01a2('0x9')]=_0x975942[_0x01a2('0x9')];this['countcongestionretry']=_0x975942[_0x01a2('0xa')];this[_0x01a2('0xb')]=_0x975942['countnoanswerretry'];this[_0x01a2('0xc')]=_0x975942[_0x01a2('0x9')]+_0x975942[_0x01a2('0xa')]+_0x975942[_0x01a2('0xb')]+_0x975942[_0x01a2('0xd')]+_0x975942[_0x01a2('0xe')]+_0x975942['countabandonedretry']+_0x975942['countmachineretry']+_0x975942[_0x01a2('0xf')];this[_0x01a2('0xd')]=_0x975942['countnosuchnumberretry'];this[_0x01a2('0xe')]=_0x975942[_0x01a2('0xe')];this[_0x01a2('0x10')]=_0x975942[_0x01a2('0x10')];this[_0x01a2('0x11')]=_0x975942[_0x01a2('0x11')];this[_0x01a2('0xf')]=_0x975942[_0x01a2('0xf')];this[_0x01a2('0x12')]=_0x975942[_0x01a2('0x12')];this[_0x01a2('0x13')]=_0x975942[_0x01a2('0x14')];this[_0x01a2('0x15')]=_0x975942[_0x01a2('0x16')];this[_0x01a2('0x17')]=_0x975942[_0x01a2('0x17')];this['responsetime']=_0x975942[_0x01a2('0x18')];this[_0x01a2('0x19')]=_0x975942['responsetime'];this[_0x01a2('0x1a')]=getSeconds(_0x975942[_0x01a2('0x18')],_0x975942[_0x01a2('0x17')]);this[_0x01a2('0x1b')]=0x0;this['talktime']=0x0;this[_0x01a2('0x1c')]=_0x975942[_0x01a2('0x1c')];this[_0x01a2('0x1d')]=_0x975942[_0x01a2('0x1d')];this[_0x01a2('0x1e')]=_0x975942['callbackat'];this[_0x01a2('0x1f')]=_0x975942[_0x01a2('0x1f')];this[_0x01a2('0x20')]=_0x975942[_0x01a2('0x20')];this[_0x01a2('0x21')]=_0x975942[_0x01a2('0x21')];this[_0x01a2('0x22')]=_0x975942['UserId'];this['VoiceQueueId']=_0x975942[_0x01a2('0x23')];this['CampaignId']=_0x975942[_0x01a2('0x24')];this[_0x01a2('0x25')]=_0x975942[_0x01a2('0x25')]||'';this[_0x01a2('0x26')]=_0x975942[_0x01a2('0x26')]||'';}module[_0x01a2('0x27')]=History;
\ No newline at end of file
index abfb111..cbb7e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ae9=['\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','Failure','INTERVAL_IS_EMPTY','timezones','TIMEZONE_UNKNOW','isArray','command','iftime\x20%s,%s','interval','content','indexOf','true','all','some','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','booked','Queue','method\x20not\x20recognized','handleIvr','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','[syncQueueSummary]','syncCampaigns','\x5cw{0,','pow','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','dialAgiAfterHangupAgent','getCaller','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','OriginateError','[originate][error]','originate\x20action\x20Error','syncOriginateResponse','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Drop]','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','entity\x20is\x20undefine','evt\x20is\x20undefine','reason','outboundNoSuchCallsDay','NoSuchNumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','custom:agentnoanswer','noanswer','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[callProgressDetecting]','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMinThreshold','erlangAbandonmentRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','startMethodPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','getDataPredictive','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','floor','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','scheduledat','Agent','run','unlockContact','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','[Originate][HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','BLACKLIST','Blacklist','[Originate][historyBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','[getContactCampaign2]','available','dialLimitQueue','not_inuse','Contact.phone','tryOriginatePredictive','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\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','Ts\x20=\x20','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','interval\x20=\x20','exports','bluebird','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','predictive','predictiveCalls','syncQueueSummary','redis','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./final','./agentComplete','env','127.0.0.1','rrmemory','prototype','enqueue','tail','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','originateresponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','varset','syncVarSet','queuemember','syncQueueMember','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','AGENTS_NOT_LOGGED','name','message','NOT_ACTIVE','\x20NOT\x20Active','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Interval','Intervals','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','outbound','strategy','answered','loggedIn','sumDuration','talking','total','unmanaged','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','erlangCalls','erlangBusyFactor','startPredictive','Trunk','callerid','md5','format','voice:queue:%s','voice_queue: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','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','predictiveIntervalTotalCalls','isUndefined','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','ivr','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','length','undefined','originated','[decremetOriginate]\x20object\x20originated\x20is\x20negative','RESCHEDULED_CONTACTS','[getContactDialer2][Empty]','sendMessageOneNotActive','pTalking','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','state','endtime','clearZombieChannels','[uniqueid]','[actions]','isNil','Action','status','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','resolve','countReScheduled','[countReScheduled]\x20','checkIsBlackList','then','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','rescheduleContact','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','active','SIP/%s','reachable','uniqueid','variable','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','HangupInAMD','membername','AMD','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','statedesc','Machine','countglobal','custom:amd','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','add','minutes','YYYY-MM-DD\x20HH:mm:ss','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countdropretry','[rescheduleContact][Machine]','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr][createHistory]','cause-txt','Unknow','agent','agiafterat','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncAgentComplete][createHistory]','droptime','responsetime','dialQueueTimeout','Drop','dropreason','TIMEOUT','dialQueueProject2','dialDropMaxRetry','dialDropRetryFrequency','starttime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','syncNewExten','channel','actionid','roundrobin','locked','stateinterface','push','pick','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','[Catch][Preview][syncQueueStatusComplete]','finally','[unlock][syncQueueStatusComplete]','_rr','paused','[booked][RR]','contactAgent-idHopper:\x20','unlockRR','preview','[booked][RR][finaly]','Agent:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','checkIsTrunkReachable','TrunkBackup'];(function(_0x31b84b,_0x1d0f10){var _0x3a3552=function(_0x15fbaf){while(--_0x15fbaf){_0x31b84b['push'](_0x31b84b['shift']());}};_0x3a3552(++_0x1d0f10);}(_0x3ae9,0xdb));var _0x93ae=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x3ae9[_0x17d9e3];return _0x14192d;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0x93ae('0x0'));var uuid=require(_0x93ae('0x1'));var moment=require(_0x93ae('0x2'));var rr=require('rr');var md5=require('md5');var Redis=require(_0x93ae('0x3'));var ut=require(_0x93ae('0x4'));var config=require(_0x93ae('0x5'));var logger=require(_0x93ae('0x6'))('dialer');var loggerBooked=require(_0x93ae('0x6'))('booked');var loggerPredictive=require(_0x93ae('0x6'))(_0x93ae('0x7'));var loggerPredictiveCalls=require(_0x93ae('0x6'))(_0x93ae('0x8'));var loggerSyncQueueSummary=require(_0x93ae('0x6'))(_0x93ae('0x9'));var ami=require('../ami');config[_0x93ae('0xa')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x93ae('0xb'))(new Redis(config[_0x93ae('0xa')]));var cmHopper=require(_0x93ae('0xc'));var cmHopperHistory=require(_0x93ae('0xd'));var cmHopperBlack=require(_0x93ae('0xe'));var voiceQueueRt=require(_0x93ae('0xf'));var Action=require('./action');var History=require('./history');var Final=require(_0x93ae('0x10'));var AgentComplete=require(_0x93ae('0x11'));var QueueCallerAbandon=require('./queueCallerAbandon');var Hangup=require('./hangup');var ipAgi=process[_0x93ae('0x12')]['XCALLY_IP_AGI']||_0x93ae('0x13');var strategy={'rrmemory':_0x93ae('0x14'),'roundrobin':'roundrobin'};var Sequence=function(){};Sequence[_0x93ae('0x15')][_0x93ae('0x16')]=function(_0x3c38b9){this[_0x93ae('0x17')]=this[_0x93ae('0x17')]?this[_0x93ae('0x17')]['finally'](_0x3c38b9):_0x3c38b9();};function Dialer(_0x11a9ce,_0x282094){this[_0x93ae('0x18')]=new Sequence();this['preview']=_0x282094;this[_0x93ae('0x19')]=_0x11a9ce['voiceQueues'];this['campaigns']=_0x11a9ce[_0x93ae('0x1a')];this['agents']=_0x11a9ce[_0x93ae('0x1b')];this[_0x93ae('0x1c')]=_0x11a9ce['trunks'];this[_0x93ae('0x1d')]=config[_0x93ae('0x1d')]||0x2;this[_0x93ae('0x1e')]={};this[_0x93ae('0x1f')]={};this['contactsId']={};this[_0x93ae('0x20')]={};this[_0x93ae('0x21')]={};this['startPredictive']={};this[_0x93ae('0x22')]={};this[_0x93ae('0x23')]={};this[_0x93ae('0x24')]={};this[_0x93ae('0x25')]={};ami['on'](_0x93ae('0x26'),this[_0x93ae('0x27')][_0x93ae('0x28')](this));ami['on']('queuecallerabandon',this['syncQueueCallerAbandon'][_0x93ae('0x28')](this));ami['on'](_0x93ae('0x29'),this['syncOriginateResponse']['bind'](this));ami['on'](_0x93ae('0x2a'),this[_0x93ae('0x2b')][_0x93ae('0x28')](this));ami['on'](_0x93ae('0x2c'),this[_0x93ae('0x9')][_0x93ae('0x28')](this));ami['on'](_0x93ae('0x2d'),this[_0x93ae('0x2e')]['bind'](this));ami['on']('newexten',this['syncNewExten'][_0x93ae('0x28')](this));ami['on'](_0x93ae('0x2f'),this[_0x93ae('0x30')][_0x93ae('0x28')](this));ami['on'](_0x93ae('0x31'),this[_0x93ae('0x32')]['bind'](this));ami['on']('queuestatuscomplete',this[_0x93ae('0x33')][_0x93ae('0x28')](this));this[_0x93ae('0x34')]();this[_0x93ae('0x35')]();}function isNotNull(_0x485622){return _0x485622!==null&&!_['isUndefined'](_0x485622);}function checkIsLoggedIn(_0x554318,_0x19aaaa){return function(){if(_0x19aaaa<=0x0){_0x554318['message']=_0x93ae('0x36');throw _0x554318[_0x93ae('0x37')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x4369c2){return _0x4369c2;}function checkIsActive(_0x1554cf,_0x11359d){return function(){if(!isActive(_0x11359d)){_0x1554cf[_0x93ae('0x38')]=_0x93ae('0x39');throw _0x1554cf[_0x93ae('0x37')]+_0x93ae('0x3a');}};}function checkInterval(_0x371c53){return function(){if(!isNotNull(_0x371c53['Interval'])){_0x371c53[_0x93ae('0x38')]=_0x93ae('0x3b');throw _0x371c53[_0x93ae('0x37')]+_0x93ae('0x3c');}if(!isNotNull(_0x371c53[_0x93ae('0x3d')][_0x93ae('0x3e')])){_0x371c53[_0x93ae('0x38')]=_0x93ae('0x3b');throw _0x371c53['name']+_0x93ae('0x3c');}if(!isNotNull(_['isEmpty'](_0x371c53[_0x93ae('0x3d')][_0x93ae('0x3e')]))){_0x371c53[_0x93ae('0x38')]=_0x93ae('0x3b');throw _0x371c53[_0x93ae('0x37')]+_0x93ae('0x3c');}};}function msgResponse(_0x47ed0b,_0x1b9777,_0x1453c0){return{'action':_0x47ed0b,'response':_0x1b9777,'message':_0x1453c0,'stack':_0x1453c0};}function myreject(_0x2aa4ae){return function(_0x4fab04){return _0x2aa4ae(msgResponse(_0x93ae('0x3f'),_0x93ae('0x40'),JSON[_0x93ae('0x41')](_0x4fab04)));};}function getSeconds(_0x4d4712,_0x588916){var _0x2e5b91=moment(_0x4d4712)[_0x93ae('0x42')](0x0);var _0x31e9b0=moment(_0x588916)[_0x93ae('0x42')](0x0);return _0x2e5b91[_0x93ae('0x43')](_0x31e9b0,_0x93ae('0x44'));}function emit(_0xc588e4,_0x4319ed,_0x174dca){io['to'](_0xc588e4)[_0x93ae('0x45')](_0x4319ed,_0x174dca);}function emitVoiceQueueSummary(_0x6ee0de){if(_0x6ee0de[_0x93ae('0x46')]===_0x93ae('0x47')){var _0x3fdf77={'id':_0x6ee0de['id'],'name':_0x6ee0de['name'],'strategy':_0x6ee0de[_0x93ae('0x48')],'answered':_0x6ee0de[_0x93ae('0x49')],'available':_0x6ee0de['available'],'loggedIn':_0x6ee0de[_0x93ae('0x4a')],'pTalking':_0x6ee0de['pTalking'],'sumBillable':_0x6ee0de['sumBillable'],'sumDuration':_0x6ee0de[_0x93ae('0x4b')],'sumHoldTime':_0x6ee0de['sumHoldTime']||0x0,'talking':_0x6ee0de[_0x93ae('0x4c')],'total':_0x6ee0de[_0x93ae('0x4d')],'type':_0x6ee0de[_0x93ae('0x46')],'unmanaged':_0x6ee0de[_0x93ae('0x4e')],'abandoned':_0x6ee0de[_0x93ae('0x4f')],'waiting':_0x6ee0de[_0x93ae('0x50')],'loggedInDb':_0x6ee0de['loggedInDb'],'dialActive':_0x6ee0de[_0x93ae('0x51')],'dialMethod':_0x6ee0de[_0x93ae('0x52')],'dialOriginateCallerIdName':_0x6ee0de[_0x93ae('0x53')],'dialOriginateCallerIdNumber':_0x6ee0de[_0x93ae('0x54')],'dialOriginateTimeout':_0x6ee0de[_0x93ae('0x55')],'dialPrefix':_0x6ee0de[_0x93ae('0x56')],'outboundAnswerAgiCallsDay':_0x6ee0de[_0x93ae('0x57')],'outboundAnswerCallsDay':_0x6ee0de[_0x93ae('0x58')],'outboundBlacklistCallsDay':_0x6ee0de[_0x93ae('0x59')],'outboundBusyCallsDay':_0x6ee0de[_0x93ae('0x5a')],'outboundCongestionCallsDay':_0x6ee0de[_0x93ae('0x5b')],'outboundDropCallsDayACS':_0x6ee0de['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x6ee0de[_0x93ae('0x5c')],'outboundDropCallsDayTimeout':_0x6ee0de[_0x93ae('0x5d')],'outboundNoAnswerCallsDay':_0x6ee0de['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x6ee0de['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x6ee0de[_0x93ae('0x5e')],'outboundReCallsDay':_0x6ee0de[_0x93ae('0x5f')],'outboundRejectCallsDay':_0x6ee0de[_0x93ae('0x60')],'outboundUnknownCallsDay':_0x6ee0de[_0x93ae('0x61')],'predictiveIntervalAnsweredCalls':_0x6ee0de[_0x93ae('0x62')],'predictiveIntervalAvgHoldtime':_0x6ee0de[_0x93ae('0x63')],'predictiveIntervalAvgTalktime':_0x6ee0de[_0x93ae('0x64')],'predictiveIntervalDroppedCallsCallersExit':_0x6ee0de[_0x93ae('0x65')],'predictiveIntervalDroppedCallsTimeout':_0x6ee0de['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x6ee0de[_0x93ae('0x66')],'predictiveIntervalErlangCallsDroppedCalls':_0x6ee0de[_0x93ae('0x67')],'predictiveIntervalHitRate':_0x6ee0de[_0x93ae('0x68')],'predictiveIntervalMultiplicativeFactor':_0x6ee0de[_0x93ae('0x69')],'predictiveIntervalPauses':_0x6ee0de[_0x93ae('0x6a')],'predictiveIntervalAvailable':_0x6ee0de['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x6ee0de['predictiveIntervalTotalCalls'],'message':_0x6ee0de[_0x93ae('0x38')],'originated':_0x6ee0de['originated'],'erlangCalls':_0x6ee0de[_0x93ae('0x6b')],'erlangCallToSecond':_0x6ee0de['erlangCallToSecond'],'erlangAbandonmentRate':_0x6ee0de['erlangAbandonmentRate'],'erlangBusyFactor':_0x6ee0de[_0x93ae('0x6c')],'startPredictive':_0x6ee0de[_0x93ae('0x6d')],'startProgressive':_0x6ee0de[_0x93ae('0x22')]};if(_0x6ee0de[_0x93ae('0x6e')]){_0x3fdf77[_0x93ae('0x6e')]={'id':_0x6ee0de[_0x93ae('0x6e')]['id'],'name':_0x6ee0de[_0x93ae('0x6e')]['name'],'active':_0x6ee0de[_0x93ae('0x6e')]['active'],'callerid':_0x6ee0de['Trunk'][_0x93ae('0x6f')]};}if(_0x6ee0de[_0x93ae('0x3d')]){_0x3fdf77[_0x93ae('0x3d')]={'id':_0x6ee0de[_0x93ae('0x3d')]['id'],'name':_0x6ee0de['Interval'][_0x93ae('0x37')]};}var _0x4e7652=md5(JSON[_0x93ae('0x41')](_0x3fdf77));if(_0x6ee0de[_0x93ae('0x70')]!==_0x4e7652){_0x6ee0de[_0x93ae('0x70')]=_0x4e7652;emit(util[_0x93ae('0x71')](_0x93ae('0x72'),_0x3fdf77[_0x93ae('0x37')]),_0x93ae('0x73'),_0x3fdf77);}}}function emitCampaignSummary(_0x411ec6){if(_0x411ec6[_0x93ae('0x46')]==='ivr'){emit(util['format']('campaign:ivr:%s',_0x411ec6['name']),'campaign:save',_0x411ec6);}}function checkGetDataPredictive(_0x2a837b){if(isNotNull(_0x2a837b)&&!_[_0x93ae('0x74')](_0x2a837b)){loggerPredictive[_0x93ae('0x75')](_0x93ae('0x76'));loggerPredictive['info'](_0x93ae('0x77'),_0x2a837b['predictiveIntervalTotalCalls']);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x78'),_0x2a837b[_0x93ae('0x62')]);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x79'),_0x2a837b[_0x93ae('0x7a')]);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x7b'),_0x2a837b[_0x93ae('0x65')]);loggerPredictive['info'](_0x93ae('0x7c'),_0x2a837b['predictiveIntervalAvgHoldtime']);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x7d'),_0x2a837b[_0x93ae('0x64')]);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x7e'));if(_0x2a837b[_0x93ae('0x7f')]>0x0){if(!_[_0x93ae('0x80')](_0x2a837b['predictiveIntervalAvgTalktime'])&&_0x2a837b[_0x93ae('0x64')]>0x0){return!![];}loggerPredictive['info']('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_[_0x93ae('0x80')](_0x2a837b[_0x93ae('0x63')])&&_0x2a837b['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0x93ae('0x75')](_0x93ae('0x81'));}else{loggerPredictive[_0x93ae('0x75')](_0x93ae('0x82'));}}else{loggerPredictive[_0x93ae('0x75')](_0x93ae('0x83'));}return![];}function mergeDataErlangB(_0x450ec8){return function(_0x2f3e1d){loggerPredictive[_0x93ae('0x75')](_0x93ae('0x84'));loggerPredictive[_0x93ae('0x75')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2f3e1d[_0x93ae('0x6b')]);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x85'),_0x2f3e1d[_0x93ae('0x86')]);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x87'),_0x2f3e1d['erlangAbandonmentRate']);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x88'),_0x2f3e1d[_0x93ae('0x6c')]);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x87'),_0x2f3e1d['erlangAbandonmentRate']);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x7e'));_[_0x93ae('0x89')](_0x450ec8,_0x2f3e1d);};}function getDiff(_0x492d93){var _0x930065=moment()[_0x93ae('0x42')](0x0);var _0x5605ca=moment(_0x492d93)[_0x93ae('0x42')](0x0);return _0x930065[_0x93ae('0x43')](_0x5605ca,_0x93ae('0x44'));}function ifInterval(_0x120e65,_0xb38655){if(_[_0x93ae('0x80')](_0xb38655)){return![];}return getDiff(_0xb38655)<_0x120e65*0x3c;}function freeVariablesPredictive(_0x339459){if(isNotNull(_0x339459)){if(!_['isUndefined'](_0x339459[_0x93ae('0x22')])){_0x339459['startProgressive']=undefined;loggerPredictive['info'](_0x339459[_0x93ae('0x37')],_0x93ae('0x8a'));}if(!_['isUndefined'](_0x339459[_0x93ae('0x6d')])){_0x339459[_0x93ae('0x6d')]=undefined;loggerPredictive[_0x93ae('0x75')](_0x339459[_0x93ae('0x37')],_0x93ae('0x8b'));}if(!_[_0x93ae('0x80')](_0x339459[_0x93ae('0x8c')])){clearInterval(_0x339459[_0x93ae('0x8c')]);_0x339459[_0x93ae('0x8c')]=undefined;loggerPredictive['info'](_0x339459['name'],_0x93ae('0x8d'));}}}function erlangb(_0xb656c9,_0xc622ff){if(_0xc622ff===0x0){return 0x0;}var _0x40a4b5=0x1;for(var _0xfe944d=0x1;_0xfe944d<=_0xc622ff;_0xfe944d+=0x1){_0x40a4b5=0x1+_0x40a4b5*_0xfe944d/_0xb656c9;}return 0x1/_0x40a4b5;}function isVoiceQueueOutbound(_0x20f2af){return _0x20f2af===_0x93ae('0x47');}function isNotPreview(_0x591020){return _0x591020!=='preview';}function isCampaignIvr(_0x12dd3c){return _0x12dd3c===_0x93ae('0x8e');}function getCallerId(_0x71867b,_0x3dd412,_0x45b6bb){if(!_[_0x93ae('0x80')](_0x45b6bb)&&typeof _0x45b6bb===_0x93ae('0x8f')&&!_[_0x93ae('0x74')](_0x45b6bb)){if(!_[_0x93ae('0x80')](_0x3dd412)&&typeof _0x3dd412==='string'&&!_[_0x93ae('0x74')](_0x3dd412)){return util['format']('\x22%s\x22\x20<%s>',_0x3dd412,_0x45b6bb);}return util[_0x93ae('0x71')](_0x93ae('0x90'),_0x45b6bb,_0x45b6bb);}if(!_[_0x93ae('0x80')](_0x71867b)&&typeof _0x71867b===_0x93ae('0x8f')&&!_[_0x93ae('0x74')](_0x71867b)){return _0x71867b;}return _0x93ae('0x91');}function loggerCatchQueueSummary(_0x1885fe,_0x44e861){return function(_0x1e0f7a){freeVariablesPredictive(_0x44e861);emitVoiceQueueSummary(_0x44e861);emitCampaignSummary(_0x44e861);loggerSyncQueueSummary[_0x93ae('0x92')](_0x1885fe,util[_0x93ae('0x93')](_0x1e0f7a,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x24e2d8,_0x540324){return function(_0x5b5b5a){loggerPredictive[_0x93ae('0x92')](_0x540324[_0x93ae('0x37')],_0x24e2d8);loggerPredictive[_0x93ae('0x92')](_0x5b5b5a['stack']);freeVariablesPredictive(_0x540324);};}function loggerCatch(_0x57fcc8){return function(_0x21cff4){logger[_0x93ae('0x92')](_0x57fcc8,util['inspect'](_0x21cff4,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x13055a){return _0x13055a&&!_[_0x93ae('0x80')](_0x13055a)&&_0x13055a[_0x93ae('0x94')]>0x0;}function decremetOriginate(_0x2ab139){if(!_[_0x93ae('0x80')](_0x2ab139)&&_0x2ab139!==null){if(typeof _0x2ab139['originated']!==_0x93ae('0x95')){if(_0x2ab139[_0x93ae('0x96')]>0x0){_0x2ab139[_0x93ae('0x96')]-=0x1;}else{logger['error'](_0x93ae('0x97'));}}}else{logger[_0x93ae('0x92')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x2ba026,_0x239921,_0x2ccb2b){if(_0x239921>_0x2ccb2b){for(var _0x974aea=0x0;_0x974aea<_0x239921-_0x2ccb2b;_0x974aea+=0x1){decremetOriginate(_0x2ba026);}}}function loggerGetContactDialer(_0x563fe6,_0x26fd6e,_0x4d3bdf){return function(_0x2d68f4){checkContactLowerLimitOriginate(_0x26fd6e,_0x4d3bdf,0x0);logger[_0x93ae('0x92')](_0x563fe6,util['inspect'](_0x2d68f4,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0xc344b8){return function(_0x23a3fe){if(isNotNull(_0x23a3fe)&&isNotNull(_0x23a3fe[0x0])){if(_0x23a3fe[0x0]['contactsRescheduled']>0x0){_0xc344b8[_0x93ae('0x38')]=_0x93ae('0x98');logger[_0x93ae('0x75')]('[getContactDialer2][ReScheduled]'+_0xc344b8[_0x93ae('0x37')],_0x23a3fe[0x0]['contactsRescheduled'],'contacts');}else{_0xc344b8[_0x93ae('0x38')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x93ae('0x75')](_0x93ae('0x99')+_0xc344b8[_0x93ae('0x37')]);}}};}function notSendMessagesQueue(_0x18bed6){if(_0x18bed6[_0x93ae('0x9a')]){freeVariablesPredictive(_0x18bed6);if(_0x18bed6[_0x93ae('0x96')]===0x0&&_0x18bed6[_0x93ae('0x4c')]===0x0&&_0x18bed6[_0x93ae('0x50')]===0x0&&(_0x18bed6[_0x93ae('0x9b')]||0x0)===0x0){_0x18bed6[_0x93ae('0x9a')]=![];_0x18bed6['available']=0x0;_0x18bed6['message']=_0x93ae('0x39');loggerSyncQueueSummary[_0x93ae('0x92')](_0x93ae('0x9c'),_0x18bed6[_0x93ae('0x37')],_0x93ae('0x9d'));}else{_0x18bed6['message']=_0x93ae('0x9e');loggerSyncQueueSummary[_0x93ae('0x92')](_0x93ae('0x9c'),_0x18bed6[_0x93ae('0x37')],'is\x20disactive');}emitVoiceQueueSummary(_0x18bed6);}}function notSendMessagesCampaign(_0x505e8f){if(_0x505e8f['sendMessageOneNotActive']){if(_0x505e8f[_0x93ae('0x96')]===0x0){_0x505e8f['sendMessageOneNotActive']=![];_0x505e8f[_0x93ae('0x38')]=_0x93ae('0x39');loggerSyncQueueSummary['error'](_0x93ae('0x9f'),_0x505e8f[_0x93ae('0x37')],_0x93ae('0x9d'));}else{_0x505e8f[_0x93ae('0x38')]=_0x93ae('0x9e');loggerSyncQueueSummary[_0x93ae('0x92')](_0x93ae('0x9f'),_0x505e8f[_0x93ae('0x37')],_0x93ae('0xa0'));}emitCampaignSummary(_0x505e8f);}}function createObjHistory(_0x149814,_0xc1d90e,_0x3bfa80,_0x47eaf7,_0xc486eb){_0x149814[_0x93ae('0x38')]=_0x3bfa80;var _0x1f93b5=new Action(_0x149814,_0xc1d90e);var _0x91efd7=new History(_0x1f93b5);_0x91efd7[_0x93ae('0xa1')]=_0x47eaf7;_0x91efd7['statedesc']=_0xc486eb;_0x91efd7[_0x93ae('0xa2')]=_0x1f93b5['starttime'];return _0x91efd7;}Dialer[_0x93ae('0x15')][_0x93ae('0x35')]=function(){var _0x2445b6=this;setInterval(function(){_0x2445b6[_0x93ae('0xa3')](_0x2445b6['uniqueId'],_0x93ae('0xa4'));_0x2445b6['clearZombieChannels'](_0x2445b6[_0x93ae('0x1f')],_0x93ae('0xa5'));},0x32c8);};Dialer[_0x93ae('0x15')][_0x93ae('0xa3')]=function(_0x1c2429,_0x15d85a){var _0x4abe7b=this;for(var _0x238d88 in _0x1c2429){if(typeof _0x1c2429[_0x238d88]!==_0x93ae('0x95')){this[_0x93ae('0x18')]['enqueue'](function(){if(!_[_0x93ae('0xa6')](_0x1c2429[_0x238d88])){return ami[_0x93ae('0xa7')]({'action':_0x93ae('0xa8'),'channel':_0x1c2429[_0x238d88]['channel']})[_0x93ae('0xa9')](function(_0x5d59b0){if(_0x5d59b0[_0x93ae('0x38')]===_0x93ae('0xaa')){setTimeout(function(){if(_0x1c2429[_0x238d88]&&_0x1c2429[_0x238d88]['type']!==_0x93ae('0x8e')){_0x4abe7b[_0x93ae('0xab')](_0x4abe7b[_0x93ae('0x19')][_0x1c2429[_0x238d88][_0x93ae('0xac')]]);logger['error'](_0x93ae('0xad'),_0x15d85a,_0x238d88,_0x1c2429[_0x238d88][_0x93ae('0xac')]);delete _0x1c2429[_0x238d88];}if(_0x1c2429[_0x238d88]&&_0x1c2429[_0x238d88][_0x93ae('0x46')]==='ivr'){_0x4abe7b[_0x93ae('0xab')](_0x4abe7b[_0x93ae('0x1a')][_0x1c2429[_0x238d88][_0x93ae('0xac')]]);logger[_0x93ae('0x92')](_0x93ae('0xae'),_0x15d85a,_0x238d88,_0x1c2429[_0x238d88][_0x93ae('0xac')]);delete _0x1c2429[_0x238d88];}},0x2328);}});}});}}};Dialer[_0x93ae('0x15')]['countReScheduled']=function(_0x20827f){return BPromise[_0x93ae('0xaf')]()['then'](cmHopper[_0x93ae('0xb0')](_0x20827f))[_0x93ae('0xa9')](loggerCatch(_0x93ae('0xb1')));};Dialer['prototype'][_0x93ae('0xb2')]=function(_0x54728b){return BPromise[_0x93ae('0xaf')]()[_0x93ae('0xb3')](cmHopperBlack[_0x93ae('0xb2')](_0x54728b))[_0x93ae('0xa9')](loggerCatch(_0x93ae('0xb4')));};Dialer['prototype']['checkIsBlackListIvr']=function(_0x17de69){return BPromise[_0x93ae('0xaf')]()[_0x93ae('0xb3')](cmHopperBlack[_0x93ae('0xb5')](_0x17de69))['catch'](loggerCatch(_0x93ae('0xb6')));};Dialer[_0x93ae('0x15')][_0x93ae('0xb7')]=function(_0x51af24){return BPromise['resolve']()['then'](cmHopperHistory['avgHandleTime'](_0x51af24))[_0x93ae('0xa9')](loggerCatch(_0x93ae('0xb8')));};Dialer[_0x93ae('0x15')]['rescheduleContact']=function(_0x43d8d2){return BPromise['resolve']()[_0x93ae('0xb3')](cmHopper[_0x93ae('0xb9')](_0x43d8d2))[_0x93ae('0xa9')](loggerCatch('[rescheduleContact]\x20'));};Dialer['prototype']['unlockContact']=function(_0x4ae222,_0x6e3646,_0x487ff0){return BPromise['resolve']()[_0x93ae('0xb3')](cmHopper['unlockContact'](_0x4ae222,_0x6e3646,_0x487ff0))[_0x93ae('0xa9')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x93ae('0x15')][_0x93ae('0xba')]=function(_0x3c99f2,_0x42d0a5,_0x48dc1d,_0x2467d3,_0x14545c){return BPromise[_0x93ae('0xaf')]()['then'](cmHopper['getContactDialer'](_0x3c99f2,_0x42d0a5,_0x48dc1d,_0x2467d3))['catch'](function(_0x1eb18e){_0x14545c['temp']-=_0x48dc1d;_0x14545c[_0x93ae('0xbb')]=_0x14545c[_0x93ae('0xbb')]>0x0?_0x14545c[_0x93ae('0xbb')]:0x0;loggerCatch(_0x93ae('0xbc'))(_0x1eb18e);});};Dialer[_0x93ae('0x15')][_0x93ae('0xbd')]=function(_0x257bcf,_0x30d7cb,_0x1f0db0,_0x2b825e){return BPromise[_0x93ae('0xaf')]()[_0x93ae('0xb3')](cmHopper[_0x93ae('0xbd')](_0x257bcf,_0x30d7cb,_0x1f0db0))[_0x93ae('0xa9')](function(_0x4a66c8){_0x2b825e[_0x93ae('0xbb')]-=_0x30d7cb;_0x2b825e['temp']=_0x2b825e['temp']>0x0?_0x2b825e[_0x93ae('0xbb')]:0x0;loggerCatch(_0x93ae('0xbe'))(_0x4a66c8);});};Dialer[_0x93ae('0x15')][_0x93ae('0xbf')]=function(_0x111694){return BPromise[_0x93ae('0xaf')]()[_0x93ae('0xb3')](voiceQueueRt[_0x93ae('0xbf')](_0x111694))[_0x93ae('0xa9')](loggerCatch(_0x93ae('0xc0')));};Dialer['prototype'][_0x93ae('0xc1')]=function(_0x1683fe){return BPromise[_0x93ae('0xaf')]()[_0x93ae('0xb3')](cmHopper[_0x93ae('0xc1')](_0x1683fe))[_0x93ae('0xa9')](loggerCatch(_0x93ae('0xc2')));};Dialer[_0x93ae('0x15')][_0x93ae('0xc3')]=function(_0x4c68c9){return BPromise['resolve']()[_0x93ae('0xb3')](cmHopperHistory['createHistory'](_0x4c68c9))['catch'](loggerCatch(_0x93ae('0xc4')));};Dialer[_0x93ae('0x15')][_0x93ae('0xab')]=function(_0xf0f1af){if(!_[_0x93ae('0x80')](_0xf0f1af)&&_0xf0f1af!==null){if(typeof _0xf0f1af['originated']!==_0x93ae('0x95')){if(_0xf0f1af[_0x93ae('0x96')]>0x0){_0xf0f1af['originated']-=0x1;}else{logger[_0x93ae('0x92')](_0x93ae('0xc5'));}}}else{logger[_0x93ae('0x92')](_0x93ae('0xc6'));}};Dialer[_0x93ae('0x15')][_0x93ae('0xc7')]=function(_0x129443,_0x5502ae){var _0x5392c1=this;return function(_0x3b85a4){_0x5392c1[_0x93ae('0xab')](_0x5502ae);logger[_0x93ae('0x92')](_0x129443,util[_0x93ae('0x93')](_0x3b85a4,{'showHidden':![],'depth':null}));};};Dialer[_0x93ae('0x15')][_0x93ae('0xc8')]=function(_0x46fdb2,_0x2f6279,_0x444318){var _0x187353={'state':0x19,'statedesc':_0x93ae('0xc9')};this[_0x93ae('0xab')](_0x2f6279);this[_0x93ae('0xca')](_[_0x93ae('0x89')](_0x187353,_['pick'](_0x444318,[_0x93ae('0xcb'),_0x93ae('0xcc'),_0x93ae('0xcd'),_0x93ae('0xce'),_0x93ae('0xcf')])),_0x93ae('0xd0'),_0x93ae('0xd1'));logger['error'](_0x46fdb2);};Dialer['prototype'][_0x93ae('0xd2')]=function(_0x21e113){return _0x21e113===_0x93ae('0xd3');};Dialer[_0x93ae('0x15')][_0x93ae('0xd4')]=function(_0x1aeb35){return!_['isUndefined'](_0x1aeb35)&&_0x1aeb35&&!_['isUndefined'](_0x1aeb35['name'])&&!_[_0x93ae('0x80')](_0x1aeb35[_0x93ae('0xd5')])&&_0x1aeb35[_0x93ae('0xd5')]&&(this[_0x93ae('0x1c')][util['format'](_0x93ae('0xd6'),_0x1aeb35['name'])]['status']===_0x93ae('0xd7')||this[_0x93ae('0x1c')][util[_0x93ae('0x71')]('SIP/%s',_0x1aeb35['name'])][_0x93ae('0xa8')]==='unmonitored');};Dialer[_0x93ae('0x15')][_0x93ae('0xca')]=function(_0xebc7ea,_0x19cc71,_0x39da90){this[_0x93ae('0xc3')](_0xebc7ea)['catch'](loggerCatch(_0x19cc71));this[_0x93ae('0xc1')](_0xebc7ea)[_0x93ae('0xa9')](loggerCatch(_0x39da90));};Dialer[_0x93ae('0x15')][_0x93ae('0x30')]=function(_0x20f753){var _0xd28ba8=this[_0x93ae('0x20')][_0x20f753[_0x93ae('0xd8')]];var _0x57cbb3;if(!_['isNil'](_0x20f753)&&!_[_0x93ae('0xa6')](_0x20f753[_0x93ae('0xd9')])&&!_[_0x93ae('0xa6')](_0x20f753[_0x93ae('0xd9')]['amdstatus'])&&_0x20f753[_0x93ae('0xda')]===_0x93ae('0xdb')&&_0xd28ba8){if(_0xd28ba8['type']!==_0x93ae('0x8e')&&this[_0x93ae('0x19')][_0xd28ba8[_0x93ae('0xac')]][_0x93ae('0xdc')]&&_0x20f753[_0x93ae('0xdd')]===_0x93ae('0xde')){delete this[_0x93ae('0x20')][_0x20f753[_0x93ae('0xd8')]];this[_0x93ae('0xab')](this[_0x93ae('0x19')][_0xd28ba8[_0x93ae('0xac')]]);this[_0x93ae('0x19')][_0xd28ba8[_0x93ae('0xac')]][_0x93ae('0x58')]+=0x1;this[_0x93ae('0x19')][_0xd28ba8['queue']][_0x93ae('0x57')]+=0x1;_0x57cbb3=new Hangup(_0xd28ba8,_0x20f753);_0x57cbb3['state']=0x12;_0x57cbb3['statedesc']=_0x93ae('0xdf');_0x57cbb3[_0x93ae('0xe0')]=_0x93ae('0xe1');ami[_0x93ae('0x45')]('custom:amd',ut[_0x93ae('0xe2')](_0x57cbb3,_0x93ae('0xe3')));this[_0x93ae('0xca')](_0x57cbb3,_0x93ae('0xe4'),_0x93ae('0xe5'));}if(_0xd28ba8[_0x93ae('0x46')]!==_0x93ae('0x8e')&&this[_0x93ae('0x19')][_0xd28ba8[_0x93ae('0xac')]][_0x93ae('0xdc')]&&_0x20f753[_0x93ae('0xdd')]===_0x93ae('0xe6')){var _0xc5a12=this;return new BPromise(function(_0x129dab,_0x678df5){delete _0xc5a12[_0x93ae('0x20')][_0x20f753[_0x93ae('0xd8')]];_0xc5a12[_0x93ae('0xab')](_0xc5a12['voiceQueues'][_0xd28ba8[_0x93ae('0xac')]]);_0xc5a12['voiceQueues'][_0xd28ba8[_0x93ae('0xac')]][_0x93ae('0x58')]+=0x1;_0xc5a12[_0x93ae('0x19')][_0xd28ba8[_0x93ae('0xac')]][_0x93ae('0x57')]+=0x1;var _0x2058e2=_0xc5a12[_0x93ae('0x19')][_0xd28ba8[_0x93ae('0xac')]];var _0x50ecc0=new Hangup(_0xd28ba8,_0x20f753);_0x50ecc0[_0x93ae('0xa1')]=0x13;_0x50ecc0[_0x93ae('0xe7')]=_0x93ae('0xe8');_0x50ecc0[_0x93ae('0xe0')]=_0x93ae('0xe1');_0x50ecc0['countmachineretry']+=0x1;_0x50ecc0[_0x93ae('0xe9')]+=0x1;_0x50ecc0[_0x93ae('0xe3')]=!![];ami['emit'](_0x93ae('0xea'),ut[_0x93ae('0xe2')](_0x50ecc0,_0x93ae('0xe3')));_0xc5a12[_0x93ae('0xc3')](_0x50ecc0)[_0x93ae('0xa9')](loggerCatch(_0x93ae('0xeb')));if(_0x50ecc0[_0x93ae('0xec')]+_0x50ecc0[_0x93ae('0xed')]+_0x50ecc0[_0x93ae('0xee')]+_0x50ecc0[_0x93ae('0xef')]+_0x50ecc0['countdropretry']+_0x50ecc0[_0x93ae('0xf0')]+_0x50ecc0[_0x93ae('0xf1')]+_0x50ecc0[_0x93ae('0xf2')]>=_0x2058e2[_0x93ae('0xf3')]){_0xc5a12[_0x93ae('0xf4')](_0x50ecc0,_0x129dab,_0x678df5,_0x93ae('0xf5'));}else{if(_0x50ecc0[_0x93ae('0xf1')]>=_0x2058e2[_0x93ae('0xf6')]){_0xc5a12[_0x93ae('0xf7')](_0x50ecc0,_0x129dab,_0x678df5,'reason\x2019\x20machine....');}else{_0xc5a12['rescheduleContact']({'active':![],'countmachineretry':_0x50ecc0[_0x93ae('0xf1')],'scheduledat':moment()[_0x93ae('0xf8')](_0x2058e2['dialMachineRetryFrequency'],_0x93ae('0xf9'))['format'](_0x93ae('0xfa')),'ContactId':_0x50ecc0[_0x93ae('0xcb')],'ListId':_0x50ecc0[_0x93ae('0xcc')],'VoiceQueueId':_0x50ecc0[_0x93ae('0xce')]||undefined,'CampaignId':_0x50ecc0['CampaignId']||undefined})[_0x93ae('0xa9')](loggerCatch('[rescheduleContact][Machine]'));_0x129dab({'reschedule':0x1});}}});}if(_0xd28ba8[_0x93ae('0x46')]===_0x93ae('0x8e')&&this[_0x93ae('0x1a')][_0xd28ba8[_0x93ae('0xac')]][_0x93ae('0xdc')]&&_0x20f753[_0x93ae('0xdd')]===_0x93ae('0xde')){delete this['uniqueId'][_0x20f753['uniqueid']];this['updateOriginated'](this['campaigns'][_0xd28ba8[_0x93ae('0xac')]]);_0x57cbb3=new Hangup(_0xd28ba8,_0x20f753);_0x57cbb3[_0x93ae('0xa1')]=0x12;_0x57cbb3['statedesc']='HangupInAMD';_0x57cbb3['membername']=_0x93ae('0xe1');ami[_0x93ae('0x45')]('custom:amd',ut[_0x93ae('0xe2')](_0x57cbb3,_0x93ae('0xe3')));this[_0x93ae('0xca')](_0x57cbb3,_0x93ae('0xfb'),_0x93ae('0xfc'));}if(_0xd28ba8['type']===_0x93ae('0x8e')&&this[_0x93ae('0x1a')][_0xd28ba8[_0x93ae('0xac')]][_0x93ae('0xdc')]&&_0x20f753[_0x93ae('0xdd')]==='MACHINE'){var _0xc5a12=this;return new BPromise(function(_0x17081f,_0x104a93){delete _0xc5a12[_0x93ae('0x20')][_0x20f753['uniqueid']];_0xc5a12[_0x93ae('0xab')](_0xc5a12['campaigns'][_0xd28ba8[_0x93ae('0xac')]]);_0xc5a12[_0x93ae('0x1a')][_0xd28ba8[_0x93ae('0xac')]]['outboundAnswerCallsDay']+=0x1;_0xc5a12[_0x93ae('0x1a')][_0xd28ba8['queue']][_0x93ae('0x57')]+=0x1;var _0x384d73=_0xc5a12['campaigns'][_0xd28ba8['queue']];var _0x5da0fc=new Hangup(_0xd28ba8,_0x20f753);_0x5da0fc[_0x93ae('0xa1')]=0x13;_0x5da0fc[_0x93ae('0xe7')]=_0x93ae('0xe8');_0x5da0fc[_0x93ae('0xe0')]=_0x93ae('0xe1');_0x5da0fc[_0x93ae('0xf1')]+=0x1;_0x5da0fc[_0x93ae('0xe9')]+=0x1;_0x5da0fc['amd']=!![];ami['emit'](_0x93ae('0xea'),ut['buildObj'](_0x5da0fc,'amd'));_0xc5a12[_0x93ae('0xc3')](_0x5da0fc)[_0x93ae('0xa9')](loggerCatch(_0x93ae('0xeb')));if(_0x5da0fc['countbusyretry']+_0x5da0fc[_0x93ae('0xed')]+_0x5da0fc[_0x93ae('0xee')]+_0x5da0fc[_0x93ae('0xef')]+_0x5da0fc[_0x93ae('0xfd')]+_0x5da0fc[_0x93ae('0xf0')]+_0x5da0fc['countmachineretry']+_0x5da0fc[_0x93ae('0xf2')]>=_0x384d73['dialGlobalMaxRetry']){_0xc5a12[_0x93ae('0xf4')](_0x5da0fc,_0x17081f,_0x104a93,_0x93ae('0xf5'));}else{if(_0x5da0fc['countmachineretry']>=_0x384d73[_0x93ae('0xf6')]){_0xc5a12[_0x93ae('0xf7')](_0x5da0fc,_0x17081f,_0x104a93,'reason\x2019\x20machine....');}else{_0xc5a12[_0x93ae('0xb9')]({'active':![],'countmachineretry':_0x5da0fc[_0x93ae('0xf1')],'scheduledat':moment()['add'](_0x384d73['dialMachineRetryFrequency'],_0x93ae('0xf9'))[_0x93ae('0x71')](_0x93ae('0xfa')),'ContactId':_0x5da0fc[_0x93ae('0xcb')],'ListId':_0x5da0fc['ListId'],'VoiceQueueId':_0x5da0fc['VoiceQueueId']||undefined,'CampaignId':_0x5da0fc[_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0xfe')));_0x17081f({'reschedule':0x1});}}});}}};Dialer[_0x93ae('0x15')][_0x93ae('0x2e')]=function(_0x5c8cb0){var _0x5c5937=this[_0x93ae('0x20')][_0x5c8cb0[_0x93ae('0xd8')]];var _0xf5bb85=this;var _0x4f981a;if(_0x5c5937&&_0x5c5937[_0x93ae('0x46')]===_0x93ae('0x8e')){delete this[_0x93ae('0x20')][_0x5c8cb0[_0x93ae('0xd8')]];this[_0x93ae('0xab')](this[_0x93ae('0x1a')][_0x5c5937[_0x93ae('0xac')]]);this['campaigns'][_0x5c5937[_0x93ae('0xac')]][_0x93ae('0xff')]+=0x1;_0x4f981a=new Hangup(_0x5c5937,_0x5c8cb0);this[_0x93ae('0xc3')](_0x4f981a)[_0x93ae('0xa9')](loggerCatch('[syncHangupIvr][createHistory]'));this['moveContactManagedDialer'](_0x4f981a)['catch'](loggerCatch(_0x93ae('0x100')));}if(_0x5c5937&&_0x5c5937[_0x93ae('0x46')]!==_0x93ae('0x8e')&&isNotNull(this[_0x93ae('0x19')][_0x5c5937[_0x93ae('0xac')]][_0x93ae('0x101')])){delete this[_0x93ae('0x20')][_0x5c8cb0[_0x93ae('0xd8')]];this[_0x93ae('0xab')](this[_0x93ae('0x19')][_0x5c5937['queue']]);this[_0x93ae('0x19')][_0x5c5937[_0x93ae('0xac')]][_0x93ae('0x58')]+=0x1;this['voiceQueues'][_0x5c5937[_0x93ae('0xac')]][_0x93ae('0x57')]+=0x1;_0x4f981a=new Hangup(_0x5c5937,_0x5c8cb0);_0x4f981a[_0x93ae('0xa1')]=0x10;_0x4f981a['statedesc']=_0x93ae('0x102');_0x4f981a[_0x93ae('0xe0')]=_0x93ae('0x103');this[_0x93ae('0xc3')](_0x4f981a)['catch'](loggerCatch(_0x93ae('0x104')));this[_0x93ae('0xc1')](_0x4f981a)[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x100')));}if(_0x5c5937&&_0x5c5937['type']!==_0x93ae('0x8e')&&!isNotNull(this[_0x93ae('0x19')][_0x5c5937[_0x93ae('0xac')]][_0x93ae('0x101')])){delete this[_0x93ae('0x20')][_0x5c8cb0['uniqueid']];this[_0x93ae('0xab')](this[_0x93ae('0x19')][_0x5c5937[_0x93ae('0xac')]]);this[_0x93ae('0x19')][_0x5c5937[_0x93ae('0xac')]][_0x93ae('0x61')]+=0x1;_0x4f981a=new Hangup(_0x5c5937,_0x5c8cb0);_0x4f981a[_0x93ae('0xa1')]=0xc;_0x4f981a[_0x93ae('0xe7')]=_0x5c8cb0[_0x93ae('0x105')];_0x4f981a['membername']=_0x93ae('0x106');this[_0x93ae('0xc3')](_0x4f981a)[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x104')));this[_0x93ae('0xc1')](_0x4f981a)['catch'](loggerCatch('[syncHangupIvr]'));}};Dialer['prototype'][_0x93ae('0x2b')]=function(_0x7b711){var _0x394db7=this[_0x93ae('0x20')][_0x7b711[_0x93ae('0xd8')]];var _0x144912=this;if(this[_0x93ae('0x19')][_0x7b711['queue']]){if(_0x394db7&&_0x394db7['type']!==_0x93ae('0x8e')){delete this['uniqueId'][_0x7b711[_0x93ae('0xd8')]];this[_0x93ae('0x19')][_0x7b711[_0x93ae('0xac')]][_0x93ae('0x58')]+=0x1;var _0x1e9179=new AgentComplete(_0x394db7,_0x7b711);if(_0x7b711['reason']===_0x93ae('0x107')){_0x1e9179[_0x93ae('0x108')]=this[_0x93ae('0x19')][_0x7b711[_0x93ae('0xac')]]['dialQueueProject2']&&this[_0x93ae('0x19')][_0x7b711[_0x93ae('0xac')]]['dialAgiAfterHangupAgent']?moment()[_0x93ae('0x71')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0x93ae('0xc3')](_0x1e9179)['catch'](loggerCatch('[syncAgentComplete][createHistory]'));this[_0x93ae('0xc1')](_0x1e9179)['catch'](loggerCatch(_0x93ae('0x109')));}}};Dialer[_0x93ae('0x15')][_0x93ae('0x27')]=function(_0x3a2956){if(this['voiceQueues'][_0x3a2956['queue']]){if(this[_0x93ae('0x20')][_0x3a2956['uniqueid']]&&this['uniqueId'][_0x3a2956[_0x93ae('0xd8')]][_0x93ae('0x46')]!=='ivr'){this[_0x93ae('0xab')](this[_0x93ae('0x19')][_0x3a2956[_0x93ae('0xac')]]);this['uniqueId'][_0x3a2956['uniqueid']][_0x93ae('0x10a')]=moment()[_0x93ae('0x71')](_0x93ae('0xfa'));}}};Dialer[_0x93ae('0x15')][_0x93ae('0x10b')]=function(_0x3a6126){this[_0x93ae('0xc3')](_0x3a6126)[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x10c')));this[_0x93ae('0xc1')](_0x3a6126)[_0x93ae('0xa9')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer[_0x93ae('0x15')]['syncQueueCallerAbandon']=function(_0x2d9a45){var _0x277505=this['uniqueId'][_0x2d9a45[_0x93ae('0xd8')]];var _0x554c01=this;if(this['voiceQueues'][_0x2d9a45[_0x93ae('0xac')]]){if(_0x277505&&_0x277505[_0x93ae('0x46')]!==_0x93ae('0x8e')){delete this['uniqueId'][_0x2d9a45['uniqueid']];this[_0x93ae('0xab')](this[_0x93ae('0x19')][_0x2d9a45['queue']]);_0x277505[_0x93ae('0x10d')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x3c7000=new QueueCallerAbandon(_0x277505,_0x2d9a45);if(getSeconds(_0x277505[_0x93ae('0x10d')],_0x277505[_0x93ae('0x10e')])>=_0x277505[_0x93ae('0x10f')]){this[_0x93ae('0x19')][_0x2d9a45['queue']][_0x93ae('0x7a')]+=0x1;this[_0x93ae('0x19')][_0x2d9a45['queue']][_0x93ae('0x5d')]+=0x1;this['voiceQueues'][_0x2d9a45['queue']][_0x93ae('0x67')]+=0x1;_0x3c7000[_0x93ae('0xa1')]=0xa;_0x3c7000[_0x93ae('0xe7')]=_0x93ae('0x110');_0x3c7000[_0x93ae('0x111')]=_0x93ae('0x112');_0x3c7000[_0x93ae('0x108')]=this[_0x93ae('0x19')][_0x2d9a45[_0x93ae('0xac')]][_0x93ae('0x113')]?moment()[_0x93ae('0x71')](_0x93ae('0xfa')):undefined;_0x3c7000[_0x93ae('0xfd')]+=0x1;_0x3c7000[_0x93ae('0xe9')]+=0x1;if(_0x3c7000['countdropretry']>=this[_0x93ae('0x19')][_0x2d9a45[_0x93ae('0xac')]][_0x93ae('0x114')]){this[_0x93ae('0x10b')](_0x3c7000);}else{this[_0x93ae('0xb9')]({'active':![],'countdropretry':_0x3c7000[_0x93ae('0xfd')],'scheduledat':moment()['add'](this[_0x93ae('0x19')][_0x2d9a45['queue']][_0x93ae('0x115')],_0x93ae('0xf9'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x277505[_0x93ae('0xcb')],'ListId':_0x277505['ListId'],'VoiceQueueId':_0x277505[_0x93ae('0xce')]||undefined,'CampaignId':_0x277505['CampaignId']||undefined})[_0x93ae('0xa9')](loggerCatch('[rescheduleContact][Drop]'));var _0x6394a2=new History(_0x3c7000);_0x6394a2[_0x93ae('0xa1')]=0xa;_0x6394a2['statedesc']=_0x93ae('0x110');_0x6394a2['starttime']=moment()[_0x93ae('0x71')]('YYYY-MM-DD\x20HH:mm:ss');_0x6394a2[_0x93ae('0xa2')]=_0x6394a2[_0x93ae('0x116')];_0x6394a2[_0x93ae('0x117')]=_0x3c7000['calleridname'];_0x6394a2[_0x93ae('0x118')]=_0x3c7000['calleridnum'];this[_0x93ae('0xc3')](_0x6394a2)[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x119')));}}else{this[_0x93ae('0x19')][_0x2d9a45[_0x93ae('0xac')]][_0x93ae('0x65')]+=0x1;this[_0x93ae('0x19')][_0x2d9a45[_0x93ae('0xac')]][_0x93ae('0x5c')]+=0x1;_0x3c7000[_0x93ae('0xa1')]=0xb;_0x3c7000[_0x93ae('0xe7')]=_0x93ae('0x11a');_0x3c7000[_0x93ae('0x111')]=_0x93ae('0x11b');_0x3c7000[_0x93ae('0xf0')]+=0x1;_0x3c7000[_0x93ae('0xe9')]+=0x1;if(_0x3c7000['countabandonedretry']>=this[_0x93ae('0x19')][_0x2d9a45[_0x93ae('0xac')]][_0x93ae('0x11c')]){this[_0x93ae('0x10b')](_0x3c7000);}else{this[_0x93ae('0xb9')]({'active':![],'countabandonedretry':_0x3c7000[_0x93ae('0xf0')],'scheduledat':moment()[_0x93ae('0xf8')](this['voiceQueues'][_0x2d9a45['queue']][_0x93ae('0x11d')],_0x93ae('0xf9'))[_0x93ae('0x71')](_0x93ae('0xfa')),'ContactId':_0x277505[_0x93ae('0xcb')],'ListId':_0x277505[_0x93ae('0xcc')],'VoiceQueueId':_0x277505[_0x93ae('0xce')]||undefined,'CampaignId':_0x277505['CampaignId']||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x11e')));var _0x6394a2=new History(_0x3c7000);_0x6394a2['state']=0xb;_0x6394a2['statedesc']='Abandoned';_0x6394a2[_0x93ae('0x116')]=moment()[_0x93ae('0x71')](_0x93ae('0xfa'));_0x6394a2[_0x93ae('0xa2')]=_0x6394a2[_0x93ae('0x116')];_0x6394a2['calleridname']=_0x3c7000['calleridname'];_0x6394a2['calleridnum']=_0x3c7000[_0x93ae('0x118')];this['createHistory'](_0x6394a2)[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x11f')));}}}}};Dialer[_0x93ae('0x15')][_0x93ae('0x120')]=function(_0x4dfa3b){if(this[_0x93ae('0x1f')][_0x4dfa3b[_0x93ae('0xd8')]]){this[_0x93ae('0x1f')][_0x4dfa3b['uniqueid']][_0x93ae('0x121')]=_0x4dfa3b[_0x93ae('0x121')];}if(this[_0x93ae('0x20')][_0x4dfa3b[_0x93ae('0xd8')]]){this[_0x93ae('0x20')][_0x4dfa3b['uniqueid']][_0x93ae('0x121')]=_0x4dfa3b[_0x93ae('0x121')];}};Dialer[_0x93ae('0x15')][_0x93ae('0x32')]=function(_0x1e4a7a){if(strategy[this['voiceQueues'][this[_0x93ae('0x1f')][_0x1e4a7a[_0x93ae('0x122')]][_0x93ae('0xac')]][_0x93ae('0x48')]]===_0x93ae('0x123')){if(this[_0x93ae('0x1f')][_0x1e4a7a[_0x93ae('0x122')]]&&_[_0x93ae('0xa6')](this[_0x93ae('0x1f')][_0x1e4a7a[_0x93ae('0x122')]][_0x93ae('0x124')])&&_0x1e4a7a[_0x93ae('0xa8')]==='1'&&_0x1e4a7a['paused']==='0'){if(this[_0x93ae('0x1b')][_0x1e4a7a['stateinterface']]){if(!this[_0x93ae('0x1b')][_0x1e4a7a[_0x93ae('0x125')]][_0x93ae('0x124')]){this[_0x93ae('0x1b')][_0x1e4a7a[_0x93ae('0x125')]][_0x93ae('0x124')]=!![];this[_0x93ae('0x1f')][_0x1e4a7a[_0x93ae('0x122')]][_0x93ae('0x124')]=!![];this[_0x93ae('0x1f')][_0x1e4a7a[_0x93ae('0x122')]][_0x93ae('0x125')]=_0x1e4a7a[_0x93ae('0x125')];}}}}else if((strategy[this[_0x93ae('0x19')][this[_0x93ae('0x1f')][_0x1e4a7a[_0x93ae('0x122')]][_0x93ae('0xac')]][_0x93ae('0x48')]]||'rrmemory')===_0x93ae('0x14')){if(this[_0x93ae('0x1f')][_0x1e4a7a[_0x93ae('0x122')]]){if(this['agents'][_0x1e4a7a[_0x93ae('0x125')]]){this[_0x93ae('0x1f')][_0x1e4a7a[_0x93ae('0x122')]]['stateinterface']=_0x1e4a7a[_0x93ae('0x125')];if(_[_0x93ae('0xa6')](this['queueBooked'][this['actions'][_0x1e4a7a['actionid']][_0x93ae('0xac')]])){this['queueBooked'][this['actions'][_0x1e4a7a[_0x93ae('0x122')]][_0x93ae('0xac')]]=[];}this[_0x93ae('0x24')][this[_0x93ae('0x1f')][_0x1e4a7a[_0x93ae('0x122')]][_0x93ae('0xac')]][_0x93ae('0x126')](_[_0x93ae('0x89')](_[_0x93ae('0x127')](this[_0x93ae('0x1f')][_0x1e4a7a[_0x93ae('0x122')]],[_0x93ae('0x128'),_0x93ae('0x125')]),{'status':_0x1e4a7a[_0x93ae('0xa8')],'paused':_0x1e4a7a['paused']}));}}}};function unlockQueueStatus(_0x32339f,_0x22106a){setTimeout(function(){if(_[_0x93ae('0x80')](_0x32339f[_0x93ae('0x129')])){loggerBooked[_0x93ae('0x92')](_0x93ae('0x12a'),_0x22106a);}_0x32339f[_0x93ae('0x129')]=!![];loggerBooked['info'](_0x93ae('0x12b'),_0x22106a,JSON[_0x93ae('0x41')](_['pick'](_0x32339f,[_0x93ae('0x37'),'queueStatusComplete'])));},0x1f3);}Dialer[_0x93ae('0x15')][_0x93ae('0x33')]=function(_0x332145){var _0x52e2d1=this;var _0x3aacf0=_0x52e2d1[_0x93ae('0x19')][_0x52e2d1[_0x93ae('0x1f')][_0x332145['actionid']][_0x93ae('0xac')]];if(strategy[this[_0x93ae('0x19')][this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]]['queue']]['strategy']]===_0x93ae('0x123')){if(this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]]&&this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0x125')]){this['preview']['run'](this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0x128')],this['actions'][_0x332145[_0x93ae('0x122')]][_0x93ae('0x125')])[_0x93ae('0xa9')](function(_0x2589db){logger[_0x93ae('0x92')](_0x93ae('0x12c'),util[_0x93ae('0x93')](_0x2589db,{'showHidden':![],'depth':null}));})[_0x93ae('0x12d')](function(){_0x52e2d1[_0x93ae('0xab')](_0x52e2d1[_0x93ae('0x19')][_0x52e2d1[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]]);_0x52e2d1[_0x93ae('0x1b')][_0x52e2d1[_0x93ae('0x1f')][_0x332145['actionid']][_0x93ae('0x125')]][_0x93ae('0x124')]=![];delete _0x52e2d1[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]];unlockQueueStatus(_0x3aacf0);});}else{this[_0x93ae('0xab')](this[_0x93ae('0x19')][this['actions'][_0x332145['actionid']]['queue']]);this[_0x93ae('0xb9')]({'active':![],'ContactId':this['actions'][_0x332145[_0x93ae('0x122')]]['ContactId'],'ListId':this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]]['ListId'],'VoiceQueueId':this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xcf')]||undefined})['catch'](loggerCatch(_0x93ae('0x12e')));delete this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]];unlockQueueStatus(_0x3aacf0);}}else if((strategy[this['voiceQueues'][this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]][_0x93ae('0x48')]]||_0x93ae('0x14'))===_0x93ae('0x14')){var _0x4bbd5e;if(this['actions'][_0x332145[_0x93ae('0x122')]]&&!_[_0x93ae('0x74')](this['queueBooked'][this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]])){if(this[_0x93ae('0x25')][_0x52e2d1[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]]){this['queueBookedRR'][_0x52e2d1[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]]=this[_0x93ae('0x25')][this[_0x93ae('0x1f')][_0x332145['actionid']][_0x93ae('0xac')]]?this[_0x93ae('0x25')][this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]]:this[_0x93ae('0x24')][this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]]?this[_0x93ae('0x24')][this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]]['_rr']||0x0:0x0;}this[_0x93ae('0x24')][this[_0x93ae('0x1f')][_0x332145['actionid']][_0x93ae('0xac')]]['_rr']=this['queueBookedRR'][this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]];for(var _0x4d61e8=0x0;_0x4d61e8<this[_0x93ae('0x24')][this[_0x93ae('0x1f')][_0x332145['actionid']][_0x93ae('0xac')]][_0x93ae('0x94')];_0x4d61e8+=0x1){_0x4bbd5e=rr(this[_0x93ae('0x24')][this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]]);this['queueBookedRR'][_0x52e2d1['actions'][_0x332145['actionid']][_0x93ae('0xac')]]=this[_0x93ae('0x24')][this['actions'][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]][_0x93ae('0x12f')];if(_0x4bbd5e[_0x93ae('0xa8')]==='1'&&_0x4bbd5e[_0x93ae('0x130')]==='0'){break;}}if(!_[_0x93ae('0xa6')](_0x4bbd5e)){this[_0x93ae('0x1b')][_0x4bbd5e[_0x93ae('0x125')]]['unlockRR']=_[_0x93ae('0x80')](this['agents'][_0x4bbd5e[_0x93ae('0x125')]]['unlockRR'])?!![]:this[_0x93ae('0x1b')][_0x4bbd5e[_0x93ae('0x125')]]['unlockRR'];}loggerBooked[_0x93ae('0x75')](_0x93ae('0x131'),_0x332145[_0x93ae('0x122')],'Agent:\x20',JSON[_0x93ae('0x41')](_['pick'](this['agents'][_0x4bbd5e['stateinterface']],[_0x93ae('0x37'),'unlockRR'])),_0x93ae('0x132'),JSON[_0x93ae('0x41')](_0x4bbd5e[_0x93ae('0x128')]));if(!_[_0x93ae('0xa6')](_0x4bbd5e)&&_0x4bbd5e['status']==='1'&&_0x4bbd5e[_0x93ae('0x130')]==='0'&&this[_0x93ae('0x1b')][_0x4bbd5e[_0x93ae('0x125')]][_0x93ae('0x133')]){this[_0x93ae('0x1b')][_0x4bbd5e['stateinterface']][_0x93ae('0x133')]=![];this[_0x93ae('0x24')][_0x52e2d1[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]]=[];this[_0x93ae('0x134')]['run'](_0x4bbd5e[_0x93ae('0x128')],_0x4bbd5e['stateinterface'])[_0x93ae('0xa9')](function(_0x30c35c){logger[_0x93ae('0x92')](_0x93ae('0x12c'),util[_0x93ae('0x93')](_0x30c35c,{'showHidden':![],'depth':null}));})['finally'](function(){_0x52e2d1[_0x93ae('0xab')](_0x52e2d1[_0x93ae('0x19')][_0x52e2d1[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xac')]]);setTimeout(function(){_0x52e2d1[_0x93ae('0x1b')][_0x4bbd5e['stateinterface']]['unlockRR']=!![];loggerBooked['info'](_0x93ae('0x135'),_0x332145['actionid'],_0x93ae('0x136'),JSON['stringify'](_[_0x93ae('0x127')](_0x52e2d1[_0x93ae('0x1b')][_0x4bbd5e[_0x93ae('0x125')]],[_0x93ae('0x37'),_0x93ae('0x133')])),_0x93ae('0x132'),JSON[_0x93ae('0x41')](_0x4bbd5e['idHopper']));},0xc7);delete _0x52e2d1[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]];unlockQueueStatus(_0x3aacf0,_0x332145[_0x93ae('0x122')]);});}else{loggerBooked[_0x93ae('0x75')](_0x93ae('0x137'));this[_0x93ae('0xab')](this['voiceQueues'][this['actions'][_0x332145[_0x93ae('0x122')]]['queue']]);this[_0x93ae('0xb9')]({'active':![],'ContactId':this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xcb')],'ListId':this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xcc')],'VoiceQueueId':this[_0x93ae('0x1f')][_0x332145['actionid']][_0x93ae('0xce')]||undefined,'CampaignId':this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xcf')]||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]];unlockQueueStatus(_0x3aacf0);}}else{loggerBooked[_0x93ae('0x75')](_0x93ae('0x138'));this[_0x93ae('0xab')](this[_0x93ae('0x19')][this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x93ae('0x1f')][_0x332145['actionid']]['ContactId'],'ListId':this['actions'][_0x332145['actionid']][_0x93ae('0xcc')],'VoiceQueueId':this['actions'][_0x332145[_0x93ae('0x122')]][_0x93ae('0xce')]||undefined,'CampaignId':this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x139')));delete this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]];unlockQueueStatus(_0x3aacf0);}}else{loggerBooked['info'](_0x93ae('0x13a'));this['updateOriginated'](this[_0x93ae('0x19')][this[_0x93ae('0x1f')][_0x332145['actionid']][_0x93ae('0xac')]]);this[_0x93ae('0xb9')]({'active':![],'ContactId':this['actions'][_0x332145[_0x93ae('0x122')]][_0x93ae('0xcb')],'ListId':this[_0x93ae('0x1f')][_0x332145['actionid']][_0x93ae('0xcc')],'VoiceQueueId':this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]][_0x93ae('0xce')]||undefined,'CampaignId':this['actions'][_0x332145[_0x93ae('0x122')]][_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x13b')));delete this[_0x93ae('0x1f')][_0x332145[_0x93ae('0x122')]];unlockQueueStatus(_0x3aacf0);}};Dialer['prototype'][_0x93ae('0x34')]=function(){var _0x4161fb=this;setInterval(function(){_0x4161fb['syncCampaigns']();},0x3e8);};Dialer['prototype'][_0x93ae('0x13c')]=function(_0x56ecc4){var _0x3e446b=this;return function(){if(!_0x3e446b['isTrunkReachable'](_0x56ecc4[_0x93ae('0x6e')])){if(!_0x3e446b['isTrunkReachable'](_0x56ecc4[_0x93ae('0x13d')])){_0x56ecc4[_0x93ae('0x38')]='TRUNK_IS_NOT_REACHABLE';throw _0x56ecc4[_0x93ae('0x37')]+_0x93ae('0x13e');}}};};Dialer[_0x93ae('0x15')][_0x93ae('0x13f')]=function(_0x4ddecf,_0x2e78a2,_0x85bb61,_0x1c088b){var _0x2436d0=this;return function(){var _0x4f2206=!![];return _0x2436d0[_0x93ae('0x140')](_0x4ddecf,_0x2e78a2,_0x85bb61,_0x1c088b,_0x4f2206);};};Dialer['prototype']['checkIfTimeIntervals']=function(_0x15f7df,_0x564117,_0x4826fc,_0x14e296){var _0x19b984=this;return function(){var _0x2664d3=![];return _0x19b984['ifTime'](_0x15f7df[_0x93ae('0x3e')],_0x564117,_0x4826fc,_0x14e296,_0x2664d3);};};Dialer[_0x93ae('0x15')]['ifTime']=function(_0x281ac1,_0xd6c655,_0x13d9c5,_0x5d058b,_0x3a0888){var _0x513dec=[];return new BPromise(function(_0x1d6a19,_0x2c11db){if(!isNotNull(_0x281ac1)){_0x5d058b[_0x93ae('0x38')]=_0x93ae('0x3b');return _0x2c11db(msgResponse(_0x93ae('0x140'),_0x93ae('0x141'),_0x13d9c5+'\x20Intervals\x20is\x20null\x20'));}if(_[_0x93ae('0x74')](_0x281ac1)){_0x5d058b[_0x93ae('0x38')]=_0x93ae('0x142');return _0x2c11db(msgResponse(_0x93ae('0x140'),_0x93ae('0x141'),_0x13d9c5+'\x20Intervals\x20is\x20empty\x20'));}if(_0xd6c655&&_[_0x93ae('0x80')](config[_0x93ae('0x143')][_0xd6c655])){_0x5d058b[_0x93ae('0x38')]=_0x93ae('0x144');return _0x2c11db(msgResponse(_0x93ae('0x140'),_0x93ae('0x141'),_0x13d9c5+'\x20Timezone\x20unknow\x20'+_0xd6c655));}if(_[_0x93ae('0x145')](_0x281ac1)){for(var _0x3fa28a=0x0;_0x3fa28a<_0x281ac1[_0x93ae('0x94')];_0x3fa28a+=0x1){_0x513dec[_0x93ae('0x126')](ami[_0x93ae('0xa7')]({'action':_0x93ae('0x146'),'command':util['format'](_0x93ae('0x147'),_0x281ac1[_0x3fa28a][_0x93ae('0x148')],!_[_0x93ae('0x80')](config[_0x93ae('0x143')][_0xd6c655])?_0xd6c655:'')})[_0x93ae('0xb3')](function(_0x156535){return _0x156535[_0x93ae('0x149')][_0x93ae('0x14a')](_0x93ae('0x14b'))>=0x0;})[_0x93ae('0xa9')](myreject(_0x2c11db)));}}else{_0x513dec['push'](ami[_0x93ae('0xa7')]({'action':_0x93ae('0x146'),'command':util['format'](_0x93ae('0x147'),_0x281ac1,!_[_0x93ae('0x80')](config['timezones'][_0xd6c655])?_0xd6c655:'')})['then'](function(_0x220cf4){return _0x220cf4[_0x93ae('0x149')]['indexOf'](_0x93ae('0x14b'))>=0x0;})['catch'](myreject(_0x2c11db)));}BPromise[_0x93ae('0x14c')](_0x513dec)[_0x93ae('0xb3')](function(_0x21001c){var _0x54e540=_[_0x93ae('0x14d')](_0x21001c);if(_0x54e540){return _0x1d6a19(_0x54e540);}else{_0x5d058b[_0x93ae('0x38')]=_0x3a0888?'GLOBAL_INTERVAL_IS_OVERTIME':'INTERVAL_IS_OVERTIME';return _0x2c11db(msgResponse(_0x93ae('0x14e'),_0x93ae('0x141'),_0x93ae('0x14f')+_0x3a0888+'\x20'+_0x13d9c5+_0x93ae('0x150')+util[_0x93ae('0x93')](_0x281ac1,{'showHidden':![],'depth':null})+_0x93ae('0x151')+_0xd6c655));}})[_0x93ae('0xa9')](function(_0x29c525){return _0x2c11db(msgResponse(_0x93ae('0x140'),'Failure',JSON[_0x93ae('0x41')](_0x29c525)));});});};Dialer['prototype'][_0x93ae('0x152')]=function(_0x7efff0){var _0x4ec4e4=this;return function(){switch(_0x7efff0['dialMethod']){case _0x93ae('0x153'):freeVariablesPredictive(_0x7efff0);_0x4ec4e4[_0x93ae('0x154')](_0x7efff0,0x1);break;case _0x93ae('0x155'):freeVariablesPredictive(_0x7efff0);_0x4ec4e4[_0x93ae('0x154')](_0x7efff0,_0x7efff0[_0x93ae('0x156')]);break;case'predictive':_0x4ec4e4['predictive'](_0x7efff0);break;case _0x93ae('0x157'):freeVariablesPredictive(_0x7efff0);_0x4ec4e4[_0x93ae('0x154')](_0x7efff0,0x1);break;default:freeVariablesPredictive(_0x7efff0);logger[_0x93ae('0x92')](_0x93ae('0x158'),_0x7efff0[_0x93ae('0x37')],_0x93ae('0x159'));}};};Dialer[_0x93ae('0x15')]['launchHandleIvr']=function(_0x30e2da){var _0x5555e7=this;return function(){_0x5555e7[_0x93ae('0x15a')](_0x30e2da);};};Dialer['prototype']['syncQueueSummary']=function(_0x4c3ec5){var _0x2479b1=this;if(isNotPreview(_0x4c3ec5[_0x93ae('0x52')])){if(isVoiceQueueOutbound(_0x4c3ec5[_0x93ae('0x46')])&&isActive(_0x4c3ec5[_0x93ae('0x51')])){_0x4c3ec5[_0x93ae('0x9a')]=!![];BPromise[_0x93ae('0xaf')]()['then'](checkIsLoggedIn(_0x4c3ec5,_0x4c3ec5[_0x93ae('0x4a')]))['then'](checkIsActive(_0x4c3ec5,_0x4c3ec5[_0x93ae('0x51')]))['then'](checkInterval(_0x4c3ec5))[_0x93ae('0xb3')](_0x2479b1['checkIsTrunkReachable'](_0x4c3ec5))[_0x93ae('0xb3')](_0x2479b1[_0x93ae('0x13f')](_0x4c3ec5[_0x93ae('0x15b')],_0x4c3ec5[_0x93ae('0x15c')],_0x4c3ec5[_0x93ae('0x37')],_0x4c3ec5))[_0x93ae('0xb3')](_0x2479b1[_0x93ae('0x15d')](_0x4c3ec5[_0x93ae('0x3d')],_0x4c3ec5['dialTimezone'],_0x4c3ec5['name'],_0x4c3ec5))['then'](_0x2479b1['checkDialMethod'](_0x4c3ec5))[_0x93ae('0xa9')](loggerCatchQueueSummary(_0x93ae('0x15e'),_0x4c3ec5));}else{notSendMessagesQueue(_0x4c3ec5);}}else{freeVariablesPredictive(_0x4c3ec5);}};Dialer[_0x93ae('0x15')][_0x93ae('0x15f')]=function(){var _0x1a1691=this;var _0x4da4e5;for(var _0xb3c15f in this[_0x93ae('0x1a')]){if(typeof this['campaigns'][_0xb3c15f]!=='undefined'){_0x4da4e5=this[_0x93ae('0x1a')][_0xb3c15f];if(isCampaignIvr(_0x4da4e5['type'])&&isActive(_0x4da4e5[_0x93ae('0xd5')])){_0x4da4e5[_0x93ae('0x9a')]=!![];BPromise[_0x93ae('0xaf')]()['then'](checkIsActive(_0x4da4e5,_0x4da4e5[_0x93ae('0xd5')]))[_0x93ae('0xb3')](checkInterval(_0x4da4e5))[_0x93ae('0xb3')](_0x1a1691[_0x93ae('0x13c')](_0x4da4e5))[_0x93ae('0xb3')](_0x1a1691['checkIfTime'](_0x4da4e5['dialGlobalInterval'],_0x4da4e5[_0x93ae('0x15c')],_0x4da4e5[_0x93ae('0x37')],_0x4da4e5))[_0x93ae('0xb3')](_0x1a1691[_0x93ae('0x15d')](_0x4da4e5[_0x93ae('0x3d')],_0x4da4e5[_0x93ae('0x15c')],_0x4da4e5[_0x93ae('0x37')],_0x4da4e5))[_0x93ae('0xb3')](_0x1a1691['launchHandleIvr'](_0x4da4e5))[_0x93ae('0xa9')](loggerCatchQueueSummary('[syncCampaigns]',_0x4da4e5));}else{notSendMessagesCampaign(_0x4da4e5);}}}};function getCallerIdRandom(_0x5dbf40,_0x47e9af){var _0x45d1cc;var _0x26d028;var _0x218ccc;if(_0x47e9af<=0x0){_0x47e9af=0x1;}_0x45d1cc=new RegExp(_0x93ae('0x160')+_0x47e9af+'}$');_0x26d028=Math[_0x93ae('0x161')](0xa,_0x47e9af-0x1);_0x218ccc=Math[_0x93ae('0x161')](0xa,_0x47e9af)-0x1;return util[_0x93ae('0x71')]('%s',_['replace'](_0x5dbf40,_0x45d1cc,_[_0x93ae('0x162')](_0x26d028,_0x218ccc)));}function extractCalleridName(_0x41a4e4){var _0x533e5a=_0x41a4e4[_0x93ae('0x163')](/"(.*?)"/);return _0x533e5a?_0x533e5a[0x1]:_0x41a4e4;}function extractCalleridNumber(_0x123cff){var _0x598a68=_0x123cff[_0x93ae('0x163')](/<(.*?)>/);return _0x598a68?_0x598a68[0x1]:_0x123cff;}Dialer[_0x93ae('0x15')][_0x93ae('0x164')]=function(_0x5ca56f,_0x210284){var _0x1e02d6=this;var _0x29ea63=uuid['v4']();this[_0x93ae('0x1f')][_0x29ea63]=new Action(_0x5ca56f,_0x210284,_0x29ea63);return new BPromise(function(_0x4753a7,_0x2ca1f2){if(_[_0x93ae('0x80')](_0x5ca56f)&&typeof _0x5ca56f!==_0x93ae('0x165')){return _0x2ca1f2(msgResponse(_0x93ae('0x166'),'Failure',_0x93ae('0x167')));}if(_['isUndefined'](_0x210284[_0x93ae('0x168')][_0x93ae('0x169')])||_0x210284[_0x93ae('0x168')][_0x93ae('0x169')]===null){return _0x2ca1f2(msgResponse(_0x93ae('0x166'),_0x93ae('0x141'),_0x93ae('0x16a')));}var _0x236bb0={'XMD-CALLERID':_0x1e02d6[_0x93ae('0x1f')][_0x29ea63]['getCaller'](),'XMD-AGI':_0x5ca56f['dialQueueProject']?util[_0x93ae('0x71')](_0x93ae('0x16b'),ipAgi,_0x5ca56f[_0x93ae('0x101')]):_0x93ae('0x16c'),'XMD-AGIAFTER':_0x5ca56f[_0x93ae('0x113')]?util[_0x93ae('0x71')](_0x93ae('0x16b'),ipAgi,_0x5ca56f[_0x93ae('0x113')]):_0x93ae('0x16c'),'XMD-QUEUE':_0x5ca56f['type']===_0x93ae('0x47')?util[_0x93ae('0x71')]('\x22%s,%s%s,,,%s\x22',_0x5ca56f[_0x93ae('0x37')],_0x5ca56f[_0x93ae('0x16d')]||'',_0x5ca56f[_0x93ae('0x16e')]?'c':'',_0x5ca56f['dialQueueTimeout']||0x3):_0x93ae('0x16c'),'XMD-CONTACTID':_0x210284[_0x93ae('0xcb')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x1e02d6[_0x93ae('0x1f')][_0x29ea63][_0x93ae('0x16f')](),'XMD-AMD':_0x5ca56f['dialAMDActive']?_0x93ae('0x170'):_0x93ae('0x16c'),'XMD-DESTINATION':_0x93ae('0xdb')};if(_0x5ca56f[_0x93ae('0xdc')]){_0x236bb0[_0x93ae('0x171')]=_0x5ca56f[_0x93ae('0x172')]||0x9c4;_0x236bb0[_0x93ae('0x173')]=_0x5ca56f['dialAMDGreeting']||0x5dc;_0x236bb0[_0x93ae('0x174')]=_0x5ca56f['dialAMDAfterGreetingSilence']||0x320;_0x236bb0['XMD-AMDTOTALANALYSISTIME']=_0x5ca56f[_0x93ae('0x175')]||0x1388;_0x236bb0[_0x93ae('0x176')]=_0x5ca56f['dialAMDMinWordLength']||0x64;_0x236bb0[_0x93ae('0x177')]=_0x5ca56f['dialAMDBetweenWordsSilence']||0x32;_0x236bb0[_0x93ae('0x178')]=_0x5ca56f[_0x93ae('0x179')]||0x3;_0x236bb0['XMD-AMDSILENCETHRESHOLD']=_0x5ca56f[_0x93ae('0x17a')]||0x100;_0x236bb0[_0x93ae('0x17b')]=_0x5ca56f[_0x93ae('0x17c')]||0x1388;}if(_0x5ca56f[_0x93ae('0x46')]===_0x93ae('0x47')){_0x236bb0['XMD-VOICEQUEUEID']=_0x210284[_0x93ae('0xce')];}else{_0x236bb0['XMD-CAMPAIGNID']=_0x210284[_0x93ae('0xcf')];}for(var _0x35ba4d in _0x210284['Contact']){if(typeof _0x210284[_0x93ae('0x168')][_0x35ba4d]!==_0x93ae('0x95')){if(isNotNull(_0x210284[_0x93ae('0x168')][_0x35ba4d])&&_0x35ba4d!=='id'&&_0x35ba4d!=='tags'&&_0x35ba4d!=='createdAt'&&_0x35ba4d!=='updatedAt'){_0x236bb0[util[_0x93ae('0x71')](_0x93ae('0x17d'),_0x93ae('0x17e'),_[_0x93ae('0x17f')](_0x35ba4d))]=_0x210284['Contact'][_0x35ba4d];}}}var _0x424516=_0x1e02d6[_0x93ae('0xd4')](_0x5ca56f[_0x93ae('0x6e')])?getCallerId(_0x5ca56f[_0x93ae('0x6e')][_0x93ae('0x6f')],_0x5ca56f[_0x93ae('0x53')],_0x5ca56f[_0x93ae('0x180')]>0x0?getCallerIdRandom(_0x5ca56f['dialOriginateCallerIdNumber'],_0x5ca56f[_0x93ae('0x180')]):_0x5ca56f['dialOriginateCallerIdNumber']):getCallerId(_[_0x93ae('0xa6')](_0x5ca56f[_0x93ae('0x13d')])?_0x5ca56f[_0x93ae('0x6e')][_0x93ae('0x6f')]:_0x5ca56f[_0x93ae('0x13d')]['callerid'],_0x5ca56f[_0x93ae('0x53')],_0x5ca56f['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x5ca56f[_0x93ae('0x54')],_0x5ca56f[_0x93ae('0x180')]):_0x5ca56f[_0x93ae('0x54')]);if(_0x424516){_0x236bb0['XMD-ORIGINATECALLERIDNAME']=_0x1e02d6[_0x93ae('0x1f')][_0x29ea63][_0x93ae('0x181')]=extractCalleridName(_0x424516);_0x236bb0[_0x93ae('0x182')]=_0x1e02d6[_0x93ae('0x1f')][_0x29ea63][_0x93ae('0x183')]=extractCalleridNumber(_0x424516);}return ami['Action']({'actionid':_0x29ea63,'action':_0x93ae('0x166'),'channel':_0x1e02d6[_0x93ae('0xd4')](_0x5ca56f[_0x93ae('0x6e')])?util[_0x93ae('0x71')](_0x93ae('0x184'),_0x5ca56f['Trunk'][_0x93ae('0x37')],isNotNull(_0x5ca56f['dialPrefix'])?_0x5ca56f['dialPrefix'][_0x93ae('0x185')]()||'':'',_0x5ca56f[_0x93ae('0x186')]>0x0?_0x210284[_0x93ae('0x168')][_0x93ae('0x169')][_0x93ae('0x187')](_0x5ca56f['dialCutDigit']):_0x210284[_0x93ae('0x168')][_0x93ae('0x169')]):util['format'](_0x93ae('0x184'),_[_0x93ae('0xa6')](_0x5ca56f[_0x93ae('0x13d')])?_0x5ca56f[_0x93ae('0x6e')]['name']:_0x5ca56f[_0x93ae('0x13d')][_0x93ae('0x37')],isNotNull(_0x5ca56f['dialPrefix'])?_0x5ca56f[_0x93ae('0x56')]['trim']()||'':'',_0x5ca56f[_0x93ae('0x186')]>0x0?_0x210284[_0x93ae('0x168')][_0x93ae('0x169')]['substring'](_0x5ca56f[_0x93ae('0x186')]):_0x210284[_0x93ae('0x168')][_0x93ae('0x169')]),'callerid':_0x424516,'Exten':_0x93ae('0xdb'),'Context':_0x93ae('0x188'),'Priority':'1','variable':_0x236bb0,'timeout':(_0x5ca56f['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x29ea63})[_0x93ae('0xb3')](function(_0x171eb0){return _0x4753a7(_0x171eb0);})['catch'](function(_0x40b3ce){_0x5ca56f['outboundOriginateFailureCallsDay']+=0x1;var _0x219e0e=new History(_0x1e02d6[_0x93ae('0x1f')][_0x29ea63]);logger[_0x93ae('0x92')](util[_0x93ae('0x71')]('[originateError]:\x20%s',JSON['stringify'](_0x40b3ce)));_0x219e0e[_0x93ae('0xa1')]=0xe;_0x219e0e[_0x93ae('0xe7')]=_0x93ae('0x189');_0x219e0e[_0x93ae('0x116')]=moment()[_0x93ae('0x71')](_0x93ae('0xfa'));_0x219e0e[_0x93ae('0xa2')]=_0x219e0e[_0x93ae('0x116')];_0x1e02d6[_0x93ae('0xc3')](_0x219e0e)[_0x93ae('0xa9')](loggerCatch('[originate][error]'));_0x1e02d6[_0x93ae('0xc1')](_0x219e0e)['catch'](loggerCatch(_0x93ae('0x18a')))['finally'](function(){delete _0x1e02d6[_0x93ae('0x1f')][_0x29ea63];return _0x2ca1f2(msgResponse('originate','Error',_0x93ae('0x18b')));});});});};Dialer[_0x93ae('0x15')][_0x93ae('0x18c')]=function(_0x105639){var _0x5f1ae7=this[_0x93ae('0x1f')][_0x105639['actionid']];if(_0x5f1ae7){delete this['actions'][_0x105639[_0x93ae('0x122')]];_0x5f1ae7[_0x93ae('0x10e')]=moment()[_0x93ae('0x71')]('YYYY-MM-DD\x20HH:mm:ss');var _0x52cae7=_0x5f1ae7[_0x93ae('0x46')]===_0x93ae('0x8e')?this[_0x93ae('0x1a')][_0x5f1ae7['queue']]:this[_0x93ae('0x19')][_0x5f1ae7[_0x93ae('0x18d')]()];if(!this[_0x93ae('0xd2')](_0x105639[_0x93ae('0x18e')])){this[_0x93ae('0xab')](_0x52cae7);return this[_0x93ae('0x18f')](_0x5f1ae7,_0x52cae7,_0x105639)[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x190')));}this[_0x93ae('0x20')][_0x105639['uniqueid']]=_0x5f1ae7;}};Dialer[_0x93ae('0x15')][_0x93ae('0x191')]=function(_0x3e88a9,_0x196a1e,_0x274be1){var _0x51f75c=new History(_0x196a1e);if(_0x51f75c[_0x93ae('0xec')]+_0x51f75c[_0x93ae('0xed')]+_0x51f75c[_0x93ae('0xee')]+_0x51f75c['countnosuchnumberretry']+_0x51f75c['countdropretry']+_0x51f75c['countabandonedretry']+_0x51f75c[_0x93ae('0xf1')]+_0x51f75c[_0x93ae('0xf2')]>=_0x274be1[_0x93ae('0xf3')]-0x1){return!![];}switch(_0x3e88a9){case 0x3:if(_0x51f75c['countnoanswerretry']>=_0x274be1[_0x93ae('0x192')]-0x1){return!![];}this[_0x93ae('0xb9')]({'active':![],'countnoanswerretry':_0x51f75c['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x93ae('0xf8')](_0x274be1[_0x93ae('0x193')],_0x93ae('0xf9'))[_0x93ae('0x71')](_0x93ae('0xfa')),'ContactId':_0x51f75c[_0x93ae('0xcb')],'ListId':_0x51f75c[_0x93ae('0xcc')],'VoiceQueueId':_0x51f75c[_0x93ae('0xce')]||undefined,'CampaignId':_0x51f75c[_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x194')));break;case 0x5:if(_0x51f75c[_0x93ae('0xec')]>=_0x274be1[_0x93ae('0x195')]-0x1){return!![];}this[_0x93ae('0xb9')]({'active':![],'countbusyretry':_0x51f75c[_0x93ae('0xec')]+=0x1,'scheduledat':moment()[_0x93ae('0xf8')](_0x274be1[_0x93ae('0x196')],_0x93ae('0xf9'))[_0x93ae('0x71')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x51f75c['ContactId'],'ListId':_0x51f75c[_0x93ae('0xcc')],'VoiceQueueId':_0x51f75c[_0x93ae('0xce')]||undefined,'CampaignId':_0x51f75c[_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x51f75c[_0x93ae('0xed')]>=_0x274be1['dialCongestionMaxRetry']-0x1){return!![];}this[_0x93ae('0xb9')]({'active':![],'countcongestionretry':_0x51f75c['countcongestionretry']+=0x1,'scheduledat':moment()[_0x93ae('0xf8')](_0x274be1[_0x93ae('0x197')],_0x93ae('0xf9'))[_0x93ae('0x71')](_0x93ae('0xfa')),'ContactId':_0x51f75c[_0x93ae('0xcb')],'ListId':_0x51f75c[_0x93ae('0xcc')],'VoiceQueueId':_0x51f75c['VoiceQueueId']||undefined,'CampaignId':_0x51f75c[_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x198')));break;case 0x0:if(_0x51f75c['countnosuchnumberretry']>=_0x274be1[_0x93ae('0x199')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x51f75c[_0x93ae('0xef')]+=0x1,'scheduledat':moment()['add'](_0x274be1['dialNoSuchNumberRetryFrequency'],_0x93ae('0xf9'))[_0x93ae('0x71')](_0x93ae('0xfa')),'ContactId':_0x51f75c[_0x93ae('0xcb')],'ListId':_0x51f75c[_0x93ae('0xcc')],'VoiceQueueId':_0x51f75c[_0x93ae('0xce')]||undefined,'CampaignId':_0x51f75c[_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x19a')));}break;case 0xa:if(_0x51f75c[_0x93ae('0xfd')]>=_0x274be1[_0x93ae('0x114')]-0x1){return!![];}this[_0x93ae('0xb9')]({'active':![],'countdropretry':_0x51f75c[_0x93ae('0xfd')]+=0x1,'scheduledat':moment()[_0x93ae('0xf8')](_0x274be1[_0x93ae('0x115')],_0x93ae('0xf9'))[_0x93ae('0x71')](_0x93ae('0xfa')),'ContactId':_0x51f75c[_0x93ae('0xcb')],'ListId':_0x51f75c[_0x93ae('0xcc')],'VoiceQueueId':_0x51f75c[_0x93ae('0xce')]||undefined,'CampaignId':_0x51f75c[_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x19b')));break;case 0xb:if(_0x51f75c['countabandonedretry']>=_0x274be1[_0x93ae('0x11c')]-0x1){return!![];}this[_0x93ae('0xb9')]({'active':![],'countabandonedretry':_0x51f75c[_0x93ae('0xf0')]+=0x1,'scheduledat':moment()[_0x93ae('0xf8')](_0x274be1[_0x93ae('0x11d')],'minutes')[_0x93ae('0x71')](_0x93ae('0xfa')),'ContactId':_0x51f75c['ContactId'],'ListId':_0x51f75c[_0x93ae('0xcc')],'VoiceQueueId':_0x51f75c[_0x93ae('0xce')]||undefined,'CampaignId':_0x51f75c['CampaignId']||undefined})[_0x93ae('0xa9')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x51f75c[_0x93ae('0xf1')]>=_0x274be1[_0x93ae('0xf6')]-0x1){return!![];}this[_0x93ae('0xb9')]({'active':![],'countmachineretry':_0x51f75c[_0x93ae('0xf1')]+=0x1,'scheduledat':moment()['add'](_0x274be1[_0x93ae('0x19c')],'minutes')[_0x93ae('0x71')](_0x93ae('0xfa')),'ContactId':_0x51f75c['ContactId'],'ListId':_0x51f75c[_0x93ae('0xcc')],'VoiceQueueId':_0x51f75c['VoiceQueueId']||undefined,'CampaignId':_0x51f75c['CampaignId']||undefined})[_0x93ae('0xa9')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x51f75c[_0x93ae('0xf2')]>=_0x274be1[_0x93ae('0x19d')]-0x1){return!![];}this[_0x93ae('0xb9')]({'active':![],'countagentrejectretry':_0x51f75c[_0x93ae('0xf2')]+=0x1,'scheduledat':moment()['add'](_0x274be1[_0x93ae('0x19e')],_0x93ae('0xf9'))[_0x93ae('0x71')](_0x93ae('0xfa')),'ContactId':_0x51f75c[_0x93ae('0xcb')],'ListId':_0x51f75c[_0x93ae('0xcc')],'VoiceQueueId':_0x51f75c[_0x93ae('0xce')]||undefined,'CampaignId':_0x51f75c[_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x19f')));break;default:return!![];}};Dialer[_0x93ae('0x15')][_0x93ae('0x18f')]=function(_0x88c23c,_0x5495df,_0x56083b){var _0x2340a3=this;var _0x17ffe0=new History(_0x88c23c);return new BPromise(function(_0x2c4646,_0x4d9794){if(_[_0x93ae('0x80')](_0x5495df)&&typeof _0x5495df!=='object'){return _0x4d9794(msgResponse('[callProgressDetecting]',_0x93ae('0x141'),_0x93ae('0x1a0')));}if(_['isUndefined'](_0x56083b)&&typeof _0x56083b!==_0x93ae('0x165')){return _0x4d9794(msgResponse('[callProgressDetecting]','Failure',_0x93ae('0x1a1')));}switch(_0x56083b[_0x93ae('0x1a2')]){case'0':_0x5495df[_0x93ae('0x1a3')]+=0x1;_0x17ffe0[_0x93ae('0xa1')]=0x0;_0x17ffe0['statedesc']=_0x93ae('0x1a4');_0x17ffe0[_0x93ae('0xef')]+=0x1;_0x17ffe0[_0x93ae('0xe9')]+=0x1;ami['emit']('custom:agentnosuchnumber',ut[_0x93ae('0xe2')](_0x88c23c,_0x93ae('0x1a5')));_0x2340a3[_0x93ae('0xc3')](_0x17ffe0)[_0x93ae('0xa9')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x2340a3[_0x93ae('0x191')](0x0,_0x88c23c,_0x5495df)){if(_0x17ffe0['countnosuchnumberretry']>=_0x5495df[_0x93ae('0x199')]){_0x2340a3['createStateFinal'](_0x17ffe0,_0x2c4646,_0x4d9794,_0x93ae('0x1a6'));}else{_0x2340a3['stateGlobal'](_0x17ffe0,_0x2c4646,_0x4d9794,_0x93ae('0x1a6'));}}break;case'3':_0x5495df[_0x93ae('0x1a7')]+=0x1;_0x17ffe0[_0x93ae('0xa1')]=0x3;_0x17ffe0[_0x93ae('0xe7')]=_0x93ae('0x1a8');_0x17ffe0[_0x93ae('0xee')]+=0x1;_0x17ffe0[_0x93ae('0xe9')]+=0x1;ami[_0x93ae('0x45')](_0x93ae('0x1a9'),ut['buildObj'](_0x88c23c,_0x93ae('0x1aa')));_0x2340a3[_0x93ae('0xc3')](_0x17ffe0)['catch'](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x2340a3['checkRetriveMax'](0x3,_0x88c23c,_0x5495df)){if(_0x17ffe0[_0x93ae('0xee')]>=_0x5495df[_0x93ae('0x192')]){_0x2340a3['createStateFinal'](_0x17ffe0,_0x2c4646,_0x4d9794,_0x93ae('0x1ab'));}else{_0x2340a3[_0x93ae('0xf4')](_0x17ffe0,_0x2c4646,_0x4d9794,_0x93ae('0x1ab'));}}break;case'5':_0x5495df[_0x93ae('0x5a')]+=0x1;_0x17ffe0['state']=0x5;_0x17ffe0[_0x93ae('0xe7')]=_0x93ae('0x1ac');_0x17ffe0[_0x93ae('0xec')]+=0x1;_0x17ffe0[_0x93ae('0xe9')]+=0x1;ami[_0x93ae('0x45')](_0x93ae('0x1ad'),ut['buildObj'](_0x88c23c,'busy'));_0x2340a3[_0x93ae('0xc3')](_0x17ffe0)[_0x93ae('0xa9')](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x2340a3[_0x93ae('0x191')](0x5,_0x88c23c,_0x5495df)){if(_0x17ffe0[_0x93ae('0xec')]>=_0x5495df[_0x93ae('0x195')]){_0x2340a3[_0x93ae('0xf7')](_0x17ffe0,_0x2c4646,_0x4d9794,_0x93ae('0x1ae'));}else{_0x2340a3[_0x93ae('0xf4')](_0x17ffe0,_0x2c4646,_0x4d9794,'reason\x205\x20busy');}}break;case'8':_0x5495df[_0x93ae('0x5b')]+=0x1;_0x17ffe0[_0x93ae('0xa1')]=0x8;_0x17ffe0[_0x93ae('0xe7')]=_0x93ae('0x1af');_0x17ffe0['countcongestionretry']+=0x1;_0x17ffe0['countglobal']+=0x1;ami[_0x93ae('0x45')](_0x93ae('0x1b0'),ut[_0x93ae('0xe2')](_0x88c23c,_0x93ae('0x1b1')));_0x2340a3[_0x93ae('0xc3')](_0x17ffe0)[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x1b2')));if(_0x2340a3[_0x93ae('0x191')](0x8,_0x88c23c,_0x5495df)){if(_0x17ffe0[_0x93ae('0xed')]>=_0x5495df['dialCongestionMaxRetry']){_0x2340a3['createStateFinal'](_0x17ffe0,_0x2c4646,_0x4d9794,'reason\x208\x20congestion');}else{_0x2340a3['stateGlobal'](_0x17ffe0,_0x2c4646,_0x4d9794,_0x93ae('0x1b3'));}}break;case'11':_0x5495df[_0x93ae('0x1b4')]+=0x1;_0x17ffe0[_0x93ae('0xa1')]=0xb;_0x17ffe0['statedesc']=_0x93ae('0x11a');_0x17ffe0['countabandonedretry']+=0x1;_0x17ffe0['countglobal']+=0x1;_0x2340a3['createHistory'](_0x17ffe0)[_0x93ae('0xa9')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x2340a3[_0x93ae('0x191')](0xb,_0x88c23c,_0x5495df)){if(_0x17ffe0['countabandonedretry']>=_0x5495df['dialAbandonedMaxRetry']){_0x2340a3['createStateFinal'](_0x17ffe0,_0x2c4646,_0x4d9794,_0x93ae('0x1b5'));}else{_0x2340a3['stateGlobal'](_0x17ffe0,_0x2c4646,_0x4d9794,_0x93ae('0x1b5'));}}break;case'20':_0x5495df['outboundRejectCallsDay']+=0x1;_0x17ffe0[_0x93ae('0xa1')]=0x14;_0x17ffe0[_0x93ae('0xe7')]='AgentReject';_0x17ffe0[_0x93ae('0xf2')]+=0x1;_0x17ffe0['countglobal']+=0x1;ami[_0x93ae('0x45')]('custom:agentreject',ut[_0x93ae('0xe2')](_0x88c23c,_0x93ae('0x1b6')));_0x2340a3[_0x93ae('0xc3')](_0x17ffe0)['catch'](loggerCatch(_0x93ae('0x1b7')));if(_0x2340a3[_0x93ae('0x191')](0x14,_0x88c23c,_0x5495df)){if(_0x17ffe0['countagentrejectretry']>=_0x5495df['dialAgentRejectMaxRetry']){_0x2340a3['createStateFinal'](_0x17ffe0,_0x2c4646,_0x4d9794,_0x93ae('0x1b8'));}else{_0x2340a3['stateGlobal'](_0x17ffe0,_0x2c4646,_0x4d9794,'reason\x2020\x20agentreject');}}break;default:_0x5495df[_0x93ae('0x61')]+=0x1;_0x17ffe0[_0x93ae('0xa1')]=0xc;_0x17ffe0[_0x93ae('0xe7')]=_0x56083b[_0x93ae('0x1a2')];_0x2340a3[_0x93ae('0xc3')](_0x17ffe0)[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x1b9')));if(_0x2340a3[_0x93ae('0x191')](_0x56083b[_0x93ae('0x1a2')],_0x88c23c,_0x5495df)){if(_0x17ffe0[_0x93ae('0xec')]+_0x17ffe0[_0x93ae('0xed')]+_0x17ffe0[_0x93ae('0xee')]+_0x17ffe0['countnosuchnumberretry']+_0x17ffe0[_0x93ae('0xfd')]+_0x17ffe0[_0x93ae('0xf0')]+_0x17ffe0['countmachineretry']+_0x17ffe0['countagentrejectretry']>=_0x5495df[_0x93ae('0xf3')]){_0x2340a3[_0x93ae('0xf4')](_0x17ffe0,_0x2c4646,_0x4d9794,_0x56083b[_0x93ae('0x1a2')]);}else{_0x2340a3[_0x93ae('0xf7')](_0x17ffe0,_0x2c4646,_0x4d9794,_0x56083b[_0x93ae('0x1a2')]);}}}});};Dialer[_0x93ae('0x15')][_0x93ae('0xf4')]=function(_0x55d964,_0x13391b,_0x2e624d,_0xdc83c2){var _0x42719a=new Final(_0x55d964);_0x42719a[_0x93ae('0xa1')]=0xf;_0x42719a[_0x93ae('0xe7')]=_0x93ae('0x1ba');this[_0x93ae('0xf7')](_0x42719a,_0x13391b,_0x2e624d,_0xdc83c2);};Dialer['prototype'][_0x93ae('0xf7')]=function(_0x5b4801,_0x373f60,_0x56b2ba,_0x4c6142){this['moveContactManagedDialer'](_0x5b4801)[_0x93ae('0xb3')](function(){return _0x373f60(msgResponse(_0x93ae('0x1bb'),_0x93ae('0xd3'),_0x4c6142));})[_0x93ae('0xa9')](function(){return _0x56b2ba(msgResponse(_0x93ae('0x1bc'),_0x93ae('0x141'),_0x93ae('0x1bd')));});};Dialer[_0x93ae('0x15')]['predictive']=function(_0x3a762d){var _0x4bc2f9=_0x3a762d[_0x93ae('0x1be')]/0x64;var _0x324e3a=_0x3a762d[_0x93ae('0x5d')]/(_0x3a762d[_0x93ae('0x5d')]+_0x3a762d[_0x93ae('0x58')]);var _0x44746a=Math[_0x93ae('0x1bf')](_0x3a762d['predictiveIntervalAvailable']*(_0x3a762d['predictiveIntervalMaxThreshold']/0x64));var _0x2619b6=Math[_0x93ae('0x1bf')](_0x3a762d[_0x93ae('0x1c0')]*(_0x3a762d[_0x93ae('0x1c1')]/0x64));var _0x36aaef=_0x3a762d['available']+_0x3a762d[_0x93ae('0x4c')];var _0x5cee7c=Math['floor'](_0x3a762d[_0x93ae('0x6b')]*_0x3a762d[_0x93ae('0x1c2')]*_0x3a762d['predictiveIntervalHitRate']*_0x3a762d['predictiveIntervalMultiplicativeFactor']);if(_[_0x93ae('0x80')](_0x3a762d[_0x93ae('0x22')])){if(!_[_0x93ae('0x80')](_0x3a762d[_0x93ae('0x6d')])){_0x3a762d[_0x93ae('0x6d')]=undefined;loggerPredictive[_0x93ae('0x92')](_0x93ae('0x1c3'),_0x93ae('0x1c4'));}if(!_['isUndefined'](_0x3a762d[_0x93ae('0x8c')])){loggerPredictive['error'](_0x93ae('0x1c3'),_0x93ae('0x1c5'));clearInterval(_0x3a762d[_0x93ae('0x8c')]);_0x3a762d[_0x93ae('0x8c')]=undefined;}_0x3a762d[_0x93ae('0x22')]=moment()['format'](_0x93ae('0xfa'));loggerPredictive[_0x93ae('0x75')](_0x3a762d[_0x93ae('0x37')],_0x93ae('0x1c6'),_0x3a762d[_0x93ae('0x22')]);this[_0x93ae('0x154')](_0x3a762d,0x1);}else if(ifInterval(_0x3a762d[_0x93ae('0x1c7')],_0x3a762d[_0x93ae('0x22')])){this[_0x93ae('0x154')](_0x3a762d,0x1);loggerPredictiveCalls['info'](_0x93ae('0x1c8'),_0x3a762d['startProgressive'],_0x3a762d[_0x93ae('0x37')]);_0x3a762d[_0x93ae('0x6b')]=0x0;_0x3a762d[_0x93ae('0x67')]=0x0;}else if(_0x4bc2f9<_0x324e3a&&_0x3a762d[_0x93ae('0x1c9')]===_0x93ae('0x1ca')){freeVariablesPredictive(_0x3a762d);loggerPredictive[_0x93ae('0x75')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0x93ae('0x1cb'),_0x324e3a,'startProgressive',_0x3a762d[_0x93ae('0x37')]);}else if(_0x5cee7c<_0x3a762d['predictiveIntervalErlangCallsDroppedCalls']&&_0x3a762d[_0x93ae('0x1c9')]===_0x93ae('0x1ca')){freeVariablesPredictive(_0x3a762d);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x1cc'),_0x93ae('0x1cd'),_0x5cee7c,_0x93ae('0x1ce'),_0x3a762d[_0x93ae('0x67')],_0x93ae('0x22'),_0x3a762d[_0x93ae('0x37')]);}else if(!ifInterval(_0x3a762d[_0x93ae('0x1c7')],_0x3a762d[_0x93ae('0x22')])&&_['isUndefined'](_0x3a762d[_0x93ae('0x6d')])&&!_[_0x93ae('0x80')](_0x3a762d['startProgressive'])){_0x3a762d[_0x93ae('0x6d')]=moment()[_0x93ae('0x71')](_0x93ae('0xfa'));loggerPredictive[_0x93ae('0x75')](_0x3a762d[_0x93ae('0x37')],_0x93ae('0x1cf'),_0x3a762d['startPredictive']);this['averageHandleTime'](_0x3a762d['dialPredictiveInterval'])[_0x93ae('0xb3')](this['getDataPredictive'](_0x3a762d))['then'](mergeDataErlangB(_0x3a762d))[_0x93ae('0xb3')](this['startMethodPredictive'](_0x3a762d))[_0x93ae('0xa9')](loggerCatchPredictive(_0x93ae('0x1d0'),_0x3a762d));}else if(!ifInterval(_0x3a762d[_0x93ae('0x1c7')],_0x3a762d['startPredictive'])){_0x3a762d[_0x93ae('0x67')]=0x0;_0x3a762d[_0x93ae('0x6d')]=moment()[_0x93ae('0x71')](_0x93ae('0xfa'));loggerPredictive[_0x93ae('0x75')](_0x3a762d['name'],_0x93ae('0x1d1'),_0x3a762d[_0x93ae('0x6d')]);clearInterval(_0x3a762d[_0x93ae('0x8c')]);_0x3a762d[_0x93ae('0x8c')]=undefined;this[_0x93ae('0xb7')](_0x3a762d['dialPredictiveInterval'])[_0x93ae('0xb3')](this['getDataPredictive'](_0x3a762d))[_0x93ae('0xb3')](mergeDataErlangB(_0x3a762d))[_0x93ae('0xb3')](this[_0x93ae('0x1d2')](_0x3a762d))[_0x93ae('0xa9')](loggerCatchPredictive(_0x93ae('0x1d3'),_0x3a762d));}else if(_0x3a762d[_0x93ae('0x1c0')]&&_0x36aaef<_0x3a762d[_0x93ae('0x1c0')]-_0x2619b6){freeVariablesPredictive(_0x3a762d);loggerPredictive[_0x93ae('0x75')](_0x3a762d[_0x93ae('0x37')],_0x93ae('0x1d4'),_0x36aaef,_0x93ae('0x1d5'),_0x3a762d[_0x93ae('0x1c0')],'-',_0x2619b6,'=',_0x3a762d[_0x93ae('0x1c0')]-_0x2619b6,')');}else if(_0x3a762d[_0x93ae('0x1c0')]&&_0x36aaef>_0x3a762d[_0x93ae('0x1c0')]+_0x44746a){freeVariablesPredictive(_0x3a762d);loggerPredictive[_0x93ae('0x75')](_0x3a762d[_0x93ae('0x37')],_0x93ae('0x1d4'),_0x36aaef,_0x93ae('0x1d6'),_0x3a762d[_0x93ae('0x1c0')],'+',_0x44746a,'=',_0x3a762d['predictiveIntervalAvailable']+_0x44746a,')');}};Dialer[_0x93ae('0x15')][_0x93ae('0x1d7')]=function(_0x5d89f8){var _0x64b639=this;return function(_0x309d03){return new BPromise(function(_0x197e5a,_0x59d863){_[_0x93ae('0x89')](_0x5d89f8,_0x309d03[0x0]);if(checkGetDataPredictive(_0x309d03[0x0])){var _0x5966c4=_0x5d89f8[_0x93ae('0x1c0')]=_0x5d89f8[_0x93ae('0x4c')]+_0x5d89f8['available'];var _0x3286b4=_0x5d89f8[_0x93ae('0x1c7')]*0x3c;var _0x398a0c=_0x309d03[0x0][_0x93ae('0x64')]+_0x309d03[0x0][_0x93ae('0x63')];var _0x20d02c=(_0x309d03[0x0][_0x93ae('0x62')]+_0x309d03[0x0][_0x93ae('0x7a')]+_0x309d03[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x309d03[0x0][_0x93ae('0x7f')];_0x5d89f8[_0x93ae('0x68')]=_0x20d02c>0x0?_0x20d02c:0x1;switch(_0x5d89f8[_0x93ae('0x1c9')]){case _0x93ae('0x1ca'):var _0x377fa0=_0x5d89f8['dialPredictiveOptimizationPercentage']/0x64;return _0x64b639[_0x93ae('0x1d8')](_0x5966c4,_0x3286b4,_0x398a0c,_0x20d02c,_0x377fa0)['then'](function(_0x24397d){return _0x197e5a(_0x24397d);});case _0x93ae('0x1d9'):var _0x2aec98=_0x5d89f8[_0x93ae('0x1be')]/0x64;return _0x64b639[_0x93ae('0x1da')](_0x5966c4,_0x3286b4,_0x398a0c,_0x20d02c,_0x2aec98)[_0x93ae('0xb3')](function(_0x184f8a){return _0x197e5a(_0x184f8a);});default:return _0x59d863(msgResponse(_0x93ae('0x1db'),_0x93ae('0x141'),_0x93ae('0x1dc')));}}else{return _0x59d863(msgResponse(_0x93ae('0x1db'),_0x93ae('0x141'),_0x93ae('0x1dd')));}});};};Dialer['prototype'][_0x93ae('0x1de')]=function(_0x36de24){var _0x414cea=this;return function(_0x35d52b){return new BPromise(function(_0x225a16,_0x5b2a33){_[_0x93ae('0x89')](_0x36de24,_0x35d52b[0x0]);if(checkGetDataPredictive(_0x35d52b[0x0])){loggerPredictive[_0x93ae('0x75')](JSON[_0x93ae('0x41')](_0x35d52b[0x0]));if(_0x36de24[_0x93ae('0x1c9')]===_0x93ae('0x1ca')){return _0x414cea['getVoiceQueueRtPauses'](_0x36de24['id'])[_0x93ae('0xb3')](function(_0x5514c5){var _0x1fa9b7=_0x36de24['loggedIn']-_0x5514c5[0x0][_0x93ae('0x1df')];var _0x16340b=_0x36de24[_0x93ae('0x1c7')]*0x3c;var _0x1201f4=_0x35d52b[0x0][_0x93ae('0x64')]+_0x35d52b[0x0][_0x93ae('0x63')];var _0x2e3543=(_0x35d52b[0x0][_0x93ae('0x62')]+_0x35d52b[0x0][_0x93ae('0x7a')]+_0x35d52b[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x35d52b[0x0][_0x93ae('0x7f')];var _0x101760=_0x36de24['dialPredictiveOptimizationPercentage']/0x64;_0x36de24[_0x93ae('0x6a')]=_0x5514c5[0x0]['outboundQueuePauses']||0x0;_0x36de24[_0x93ae('0x68')]=_0x2e3543>0x0?_0x2e3543:0x1;return _0x414cea[_0x93ae('0x1d8')](_0x1fa9b7,_0x16340b,_0x1201f4,_0x2e3543,_0x101760);})['then'](function(_0x46763b){return _0x225a16(_0x46763b);})[_0x93ae('0xa9')](function(_0x4f8200){return _0x5b2a33(msgResponse(_0x93ae('0x1e0'),'Failure',JSON[_0x93ae('0x41')](_0x4f8200)));});}if(_0x36de24[_0x93ae('0x1c9')]===_0x93ae('0x1d9')){return _0x414cea[_0x93ae('0xbf')](_0x36de24['id'])[_0x93ae('0xb3')](function(_0x15a2e4){var _0x49f837=_0x36de24['loggedIn']-_0x15a2e4[0x0][_0x93ae('0x1df')];var _0xe2a430=_0x36de24[_0x93ae('0x1c7')]*0x3c;var _0x4476c7=_0x35d52b[0x0][_0x93ae('0x64')]+_0x35d52b[0x0][_0x93ae('0x63')];var _0x5356db=(_0x35d52b[0x0][_0x93ae('0x62')]+_0x35d52b[0x0][_0x93ae('0x7a')]+_0x35d52b[0x0][_0x93ae('0x65')])/_0x35d52b[0x0][_0x93ae('0x7f')];var _0x554626=_0x36de24[_0x93ae('0x1be')]/0x64;_0x36de24['predictiveIntervalPauses']=_0x15a2e4[0x0][_0x93ae('0x1df')]||0x0;_0x36de24[_0x93ae('0x68')]=_0x5356db>0x0?_0x5356db:0x1;return _0x414cea['busyFactor'](_0x49f837,_0xe2a430,_0x4476c7,_0x5356db,_0x554626);})[_0x93ae('0xb3')](function(_0x165345){return _0x225a16(_0x165345);})[_0x93ae('0xa9')](function(_0x3d6df9){return _0x5b2a33(msgResponse(_0x93ae('0x1e0'),_0x93ae('0x141'),JSON[_0x93ae('0x41')](_0x3d6df9)));});}}else{return _0x5b2a33(msgResponse(_0x93ae('0x1db'),_0x93ae('0x141'),'check\x20failure'));}});};};Dialer[_0x93ae('0x15')][_0x93ae('0x1d2')]=function(_0x4bba84){var _0x3a942f=this;return function(){var _0x19b41c=0x0;var _0x30854c=Math[_0x93ae('0x1e1')](_0x4bba84[_0x93ae('0x86')]*0x3e8);if(_0x30854c>0x0){_0x30854c=_0x30854c<0x64?0x64:_0x30854c;loggerPredictive[_0x93ae('0x75')](_0x4bba84[_0x93ae('0x37')],_0x93ae('0x1e2'),_0x30854c,'milliseconds');_0x4bba84[_0x93ae('0x8c')]=setInterval(function(){_0x3a942f[_0x93ae('0x8c')](_0x4bba84);loggerPredictiveCalls['info'](_0x93ae('0x1e3'),_0x19b41c+=0x1);},_0x30854c);}else{loggerPredictive['info'](_0x4bba84[_0x93ae('0x37')],_0x93ae('0x1e4'));}};};Dialer[_0x93ae('0x15')][_0x93ae('0x1e5')]=function(_0x59984f,_0x16f386){var _0x4c2885=this;return function(_0x1775c8){if(_['isEmpty'](_0x1775c8)){if(_[_0x93ae('0xa6')](_0x16f386[_0x93ae('0xcd')])||!_0x16f386[_0x93ae('0x1e6')]){if(_0x59984f[_0x93ae('0x52')]===_0x93ae('0x157')){_0x59984f['queueStatusComplete']=_[_0x93ae('0x80')](_0x59984f[_0x93ae('0x129')])?!![]:_0x59984f[_0x93ae('0x129')];var _0x35fc41=uuid['v4']();_0x4c2885[_0x93ae('0x1f')][_0x35fc41]=new Action(_0x59984f,_0x16f386,_0x35fc41);loggerBooked[_0x93ae('0x75')](_0x93ae('0x1e7'),_0x35fc41,_0x93ae('0x1e8'),JSON[_0x93ae('0x41')](_0x59984f[_0x93ae('0x129')]),'Queue:\x20',_0x59984f[_0x93ae('0x37')]);if(_0x59984f[_0x93ae('0x129')]){_0x59984f[_0x93ae('0x129')]=![];_0x4c2885[_0x93ae('0x24')][_0x4c2885['actions'][_0x35fc41]['queue']]=[];ami[_0x93ae('0xa7')]({'actionid':_0x35fc41,'action':_0x93ae('0x1e9'),'queue':_0x59984f[_0x93ae('0x37')]})[_0x93ae('0xa9')](function(){_0x4c2885[_0x93ae('0xab')](_0x59984f);_0x4c2885['rescheduleContact']({'active':![],'ContactId':_0x4c2885[_0x93ae('0x1f')][_0x35fc41][_0x93ae('0xcb')],'ListId':_0x4c2885[_0x93ae('0x1f')][_0x35fc41]['ListId'],'VoiceQueueId':_0x4c2885['actions'][_0x35fc41][_0x93ae('0xce')]||undefined,'CampaignId':_0x4c2885[_0x93ae('0x1f')][_0x35fc41][_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x1ea')));delete _0x4c2885[_0x93ae('0x1f')][_0x35fc41];});}else{loggerBooked[_0x93ae('0x75')](_0x93ae('0x1eb'),JSON[_0x93ae('0x41')](_0x59984f['queueStatusComplete']),_0x93ae('0x1ec'),_0x59984f[_0x93ae('0x37')]);_0x4c2885[_0x93ae('0xab')](_0x59984f);_0x4c2885[_0x93ae('0xb9')]({'active':![],'ContactId':_0x4c2885[_0x93ae('0x1f')][_0x35fc41]['ContactId'],'ListId':_0x4c2885[_0x93ae('0x1f')][_0x35fc41][_0x93ae('0xcc')],'VoiceQueueId':_0x4c2885[_0x93ae('0x1f')][_0x35fc41]['VoiceQueueId']||undefined,'CampaignId':_0x4c2885['actions'][_0x35fc41][_0x93ae('0xcf')]||undefined})[_0x93ae('0xa9')](loggerCatch(_0x93ae('0x1ea')));delete _0x4c2885[_0x93ae('0x1f')][_0x35fc41];}}else{return _0x4c2885[_0x93ae('0x164')](_0x59984f,_0x16f386);}}else{if(getDiff(_0x16f386[_0x93ae('0x1ed')])<_0x59984f['dialRecallMeTimeout']*0x3c){if(_0x16f386[_0x93ae('0x1ee')]&&!_0x16f386[_0x93ae('0x1ee')]['voicePause']){_0x4c2885[_0x93ae('0x134')][_0x93ae('0x1ef')](_0x16f386['id'])[_0x93ae('0x12d')](function(){_0x4c2885['updateOriginated'](_0x59984f);});}else{_0x4c2885[_0x93ae('0x1f0')]({'active':![]},_0x16f386['id'],0x1)[_0x93ae('0x12d')](function(){_0x4c2885[_0x93ae('0xab')](_0x59984f);});}}else{_0x59984f['outboundReCallsDay']+=0x1;_0x4c2885['updateOriginated'](_0x59984f);if(_0x59984f[_0x93ae('0x1f1')]){_0x4c2885['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x16f386[_0x93ae('0xcb')],'ListId':_0x16f386[_0x93ae('0xcc')],'VoiceQueueId':_0x16f386[_0x93ae('0xce')]||undefined,'CampaignId':_0x16f386[_0x93ae('0xcf')]||undefined})['catch'](loggerCatch(_0x93ae('0x1f2')));_0x4c2885[_0x93ae('0xc3')](createObjHistory(_0x59984f,_0x16f386,_0x93ae('0x1f3'),0x17,'RecallInQueue'))['catch'](loggerCatch(_0x93ae('0x1f4')));}else{_0x4c2885[_0x93ae('0xca')](createObjHistory(_0x59984f,_0x16f386,'RECALLFAILEDTIMEOUT',0x16,_0x93ae('0x1f5')),'[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]');}}}}else{_0x59984f[_0x93ae('0x59')]+=0x1;_0x4c2885[_0x93ae('0xca')](createObjHistory(_0x59984f,_0x16f386,_0x93ae('0x1f6'),0xd,_0x93ae('0x1f7')),_0x93ae('0x1f8'),'[Originate][MoveBlacklist]');throw _0x93ae('0x1f9');}};};Dialer[_0x93ae('0x15')][_0x93ae('0x15a')]=function(_0x3b913c){var _0x13f136=this;var _0x567de0=_0x3b913c[_0x93ae('0x1fa')]-_0x3b913c[_0x93ae('0x96')]-_0x3b913c[_0x93ae('0xbb')];emitCampaignSummary(_0x3b913c);if(_0x567de0>0x0){if(_0x567de0>this[_0x93ae('0x1d')]){_0x567de0=this[_0x93ae('0x1d')];}_0x3b913c[_0x93ae('0xbb')]+=_0x567de0;this[_0x93ae('0xbd')](_0x3b913c['id'],_0x567de0,_0x3b913c[_0x93ae('0x1fb')],_0x3b913c)[_0x93ae('0xb3')](function(_0xb5029f){_0x3b913c['temp']-=_0x567de0;_0x3b913c[_0x93ae('0xbb')]=_0x3b913c['temp']>0x0?_0x3b913c[_0x93ae('0xbb')]:0x0;if(!checkContactEmpty(_0xb5029f)){_0x3b913c[_0x93ae('0x38')]=_0x93ae('0x1fc');logger[_0x93ae('0x75')](_0x93ae('0x1fd')+_0x3b913c[_0x93ae('0x37')]);}else{_0x3b913c[_0x93ae('0x96')]+=_0xb5029f[_0x93ae('0x94')];_0x3b913c[_0x93ae('0x38')]=_0x93ae('0x1fe');for(var _0x5e9acb=0x0;_0x5e9acb<_0xb5029f[_0x93ae('0x94')];_0x5e9acb+=0x1){_0x3b913c[_0x93ae('0x1ff')]+=0x1;if(_['isNil'](_0xb5029f[_0x5e9acb])||_[_0x93ae('0xa6')](_0xb5029f[_0x5e9acb][_0x93ae('0x168')])||_['isNil'](_0xb5029f[_0x5e9acb][_0x93ae('0x168')][_0x93ae('0x169')])){_0x13f136[_0x93ae('0xc8')](_0x93ae('0x200'),_0x3b913c,_0xb5029f[_0x5e9acb]);}else{_0x13f136[_0x93ae('0xb5')](_[_0x93ae('0x127')](_0xb5029f[_0x5e9acb],['CampaignId','Contact.phone']))[_0x93ae('0xb3')](_0x13f136[_0x93ae('0x1e5')](_0x3b913c,_0xb5029f[_0x5e9acb]))[_0x93ae('0xa9')](_0x13f136[_0x93ae('0xc7')]('[actionOriginateIvr]\x20',_0x3b913c));}}}})[_0x93ae('0xa9')](loggerGetContactDialer(_0x93ae('0x201'),_0x3b913c,_0x567de0));}};Dialer['prototype'][_0x93ae('0x154')]=function(_0x56b25b,_0x5d3a4f){var _0x542489=this;var _0x8a40=[];var _0xc48e12=_0x5d3a4f>=0x1?_0x5d3a4f:0x1;if(_0x56b25b[_0x93ae('0x52')]==='booked'){_0xc48e12=0x1;}var _0x1d60ca=Math[_0x93ae('0x1e1')](_0x56b25b[_0x93ae('0x202')]*_0xc48e12)-_0x56b25b[_0x93ae('0x96')]-_0x56b25b[_0x93ae('0xbb')];emitVoiceQueueSummary(_0x56b25b);if(_0x56b25b[_0x93ae('0x203')]>0x0){var _0x44a1dc=_0x56b25b['dialLimitQueue']-_0x56b25b[_0x93ae('0x96')]-_0x56b25b[_0x93ae('0x4c')]-_0x56b25b[_0x93ae('0xbb')]-_0x56b25b['pTalking'];if(_0x1d60ca>_0x44a1dc){_0x1d60ca=_0x44a1dc;}}if(_0x1d60ca>0x0){if(_0x56b25b[_0x93ae('0x52')]===_0x93ae('0x157')){_0x1d60ca=0x1;}if(_0x1d60ca>this['maxNumberOriginate']){_0x1d60ca=this[_0x93ae('0x1d')];}_0x56b25b['temp']+=_0x1d60ca;for(var _0x95a710 in this['agents']){if(typeof this[_0x93ae('0x1b')][_0x95a710]!==_0x93ae('0x95')){if(this[_0x93ae('0x1b')][_0x95a710][_0x93ae('0xa1')]===_0x93ae('0x204')&&this[_0x93ae('0x1b')][_0x95a710][_0x93ae('0xa8')]===_0x93ae('0xd7')){_0x8a40['push'](this[_0x93ae('0x1b')][_0x95a710]['id']);}}}this[_0x93ae('0xba')](_0x56b25b['id'],_0x8a40,_0x1d60ca,_0x56b25b[_0x93ae('0x1fb')],_0x56b25b)[_0x93ae('0xb3')](function(_0x189cb5){_0x56b25b[_0x93ae('0xbb')]-=_0x1d60ca;_0x56b25b[_0x93ae('0xbb')]=_0x56b25b['temp']>0x0?_0x56b25b[_0x93ae('0xbb')]:0x0;if(!checkContactEmpty(_0x189cb5)){_0x542489[_0x93ae('0xb0')](_0x56b25b)[_0x93ae('0xb3')](sendMessageReschedule(_0x56b25b))[_0x93ae('0xa9')](loggerCatch(_0x93ae('0xb1')));}else{_0x56b25b[_0x93ae('0x96')]+=_0x189cb5['length'];_0x56b25b['message']=_0x56b25b[_0x93ae('0x52')]===_0x93ae('0x157')?_0x93ae('0x170'):_0x93ae('0x1fe');for(var _0x512272=0x0;_0x512272<_0x189cb5['length'];_0x512272+=0x1){if(_['isNil'](_0x189cb5[_0x512272])||_[_0x93ae('0xa6')](_0x189cb5[_0x512272][_0x93ae('0x168')])||_[_0x93ae('0xa6')](_0x189cb5[_0x512272][_0x93ae('0x168')][_0x93ae('0x169')])){_0x542489[_0x93ae('0xc8')](_0x93ae('0x200'),_0x56b25b,_0x189cb5[_0x512272]);}else{_0x542489[_0x93ae('0xb2')](_[_0x93ae('0x127')](_0x189cb5[_0x512272],[_0x93ae('0xce'),_0x93ae('0x205')]))[_0x93ae('0xb3')](_0x542489['checkContactBlack'](_0x56b25b,_0x189cb5[_0x512272]))[_0x93ae('0xa9')](_0x542489[_0x93ae('0xc7')](_0x93ae('0x200'),_0x56b25b));}}}})[_0x93ae('0xa9')](loggerGetContactDialer('[getContactDialer2]',_0x56b25b,_0x1d60ca));}};Dialer[_0x93ae('0x15')][_0x93ae('0x8c')]=function(_0xdecc1c){if(_0xdecc1c[_0x93ae('0x203')]>0x0){var _0x47bf87=_0xdecc1c[_0x93ae('0x203')]-_0xdecc1c[_0x93ae('0x96')]-_0xdecc1c[_0x93ae('0x4c')];if(_0x47bf87>0x0){this[_0x93ae('0x206')](_0xdecc1c);}else{loggerPredictiveCalls[_0x93ae('0x75')]('[handlePredictive][limitChannel]');}}else{this[_0x93ae('0x206')](_0xdecc1c);}};Dialer[_0x93ae('0x15')][_0x93ae('0x206')]=function(_0x157df5){var _0x5ee573=this;var _0x5e3c06=[];_0x157df5['originated']+=0x1;for(var _0x5e11e4 in this[_0x93ae('0x1b')]){if(typeof this['agents'][_0x5e11e4]!==_0x93ae('0x95')){if(this[_0x93ae('0x1b')][_0x5e11e4]['state']===_0x93ae('0x204')&&this[_0x93ae('0x1b')][_0x5e11e4][_0x93ae('0xa8')]==='reachable'){_0x5e3c06[_0x93ae('0x126')](this[_0x93ae('0x1b')][_0x5e11e4]['id']);}}}this[_0x93ae('0xba')](_0x157df5['id'],_0x5e3c06,0x1,_0x157df5[_0x93ae('0x1fb')],_0x157df5)['then'](function(_0x57b5af){if(!checkContactEmpty(_0x57b5af)){checkContactLowerLimitOriginate(_0x157df5,0x1,0x0);_0x5ee573[_0x93ae('0xb0')](_0x157df5)[_0x93ae('0xb3')](sendMessageReschedule(_0x157df5))[_0x93ae('0xa9')](loggerCatch(_0x93ae('0xb1')));}else{_0x157df5[_0x93ae('0x38')]=_0x93ae('0x1fe');if(_['isNil'](_0x57b5af[0x0])||_['isNil'](_0x57b5af[0x0][_0x93ae('0x168')])||_[_0x93ae('0xa6')](_0x57b5af[0x0]['Contact']['phone'])){_0x5ee573[_0x93ae('0xc8')](_0x93ae('0x200'),_0x157df5,_0x57b5af[0x0]);}else{_0x5ee573['checkIsBlackList'](_['pick'](_0x57b5af[0x0],[_0x93ae('0xce'),'Contact.phone']))[_0x93ae('0xb3')](_0x5ee573['checkContactBlack'](_0x157df5,_0x57b5af[0x0]))[_0x93ae('0xa9')](_0x5ee573[_0x93ae('0xc7')](_0x93ae('0x207'),_0x157df5));}}})[_0x93ae('0xa9')](loggerGetContactDialer(_0x93ae('0x208'),_0x157df5,0x1));emitVoiceQueueSummary(_0x157df5);};Dialer[_0x93ae('0x15')][_0x93ae('0x1d8')]=function(_0x42dc0c,_0x4da04b,_0x406c06,_0xb8848f,_0x2dda87,_0x3b2b1b){loggerPredictive[_0x93ae('0x75')](_0x93ae('0x209'));loggerPredictive[_0x93ae('0x75')]('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',_0x42dc0c);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x20a'),_0x4da04b);loggerPredictive[_0x93ae('0x75')]('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',_0x406c06);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x20b'),_0xb8848f);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x20c'),_0x2dda87);loggerPredictive['info'](_0x93ae('0x7e'));return new BPromise(function(_0x635841,_0x1c8041){if(_0x42dc0c<=0x0||isNaN(_0x42dc0c)){return _0x1c8041(msgResponse(_0x93ae('0x20d'),_0x93ae('0x40'),_0x93ae('0x20e')+_0x42dc0c));}if(_0x406c06<=0x0||isNaN(_0x406c06)){return _0x1c8041(msgResponse(_0x93ae('0x20d'),_0x93ae('0x40'),_0x93ae('0x20f')+_0x406c06));}if(_0xb8848f<=0x0||isNaN(_0xb8848f)){return _0x1c8041(msgResponse(_0x93ae('0x20d'),_0x93ae('0x40'),_0x93ae('0x210')+_0xb8848f));}if(_0x4da04b<=0x0||isNaN(_0x4da04b)){return _0x1c8041(msgResponse(_0x93ae('0x20d'),'Error','interval\x20=\x20'+_0x4da04b));}if(_0x2dda87<=0x0||isNaN(_0x2dda87)){return _0x1c8041(msgResponse(_0x93ae('0x20d'),'Error',_0x93ae('0x211')+_0x2dda87));}_0x3b2b1b=_0x3b2b1b||0x0;var _0x355789=0x1/_0x406c06;var _0x48f59d=0x0;var _0x171e33=0x0;var _0x66b5e4=0x0;var _0x2eac6b=0x0;for(var _0x47d4c4=0x0;_0x66b5e4<_0x2dda87;_0x47d4c4+=0x1){_0x171e33=_0x47d4c4/_0x4da04b;_0x48f59d=(_0xb8848f*_0x171e33+_0x3b2b1b)/_0x355789;_0x66b5e4=erlangb(_0x48f59d,_0x42dc0c);_0x2eac6b=_0x48f59d/_0x42dc0c*(0x1-erlangb(_0x48f59d,_0x42dc0c));}return _0x635841({'erlangCalls':_0x47d4c4,'erlangCallToSecond':_0x4da04b/_0x47d4c4,'erlangAbandonmentRate':_0x66b5e4,'erlangBusyFactor':_0x2eac6b});});};Dialer[_0x93ae('0x15')]['busyFactor']=function(_0xe86224,_0x53eff3,_0x52fa58,_0x201d10,_0x5cfba2,_0x3fb84b){loggerPredictive[_0x93ae('0x75')](_0x93ae('0x212'));loggerPredictive['info'](_0x93ae('0x213'),_0xe86224);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x20a'),_0x53eff3);loggerPredictive['info'](_0x93ae('0x214'),_0x52fa58);loggerPredictive['info'](_0x93ae('0x20b'),_0x201d10);loggerPredictive[_0x93ae('0x75')](_0x93ae('0x215'),_0x5cfba2);loggerPredictive['info'](_0x93ae('0x7e'));return new BPromise(function(_0x1659bc,_0x566de1){if(_0xe86224<=0x0||isNaN(_0xe86224)){return _0x566de1(msgResponse(_0x93ae('0x216'),_0x93ae('0x40'),_0x93ae('0x20e')+_0xe86224));}if(_0x52fa58<=0x0||isNaN(_0x52fa58)){return _0x566de1(msgResponse(_0x93ae('0x216'),_0x93ae('0x40'),_0x93ae('0x20f')+_0x52fa58));}if(_0x201d10<=0x0||isNaN(_0x201d10)){return _0x566de1(msgResponse(_0x93ae('0x216'),_0x93ae('0x40'),'p\x20=\x20'+_0x201d10));}if(_0x53eff3<=0x0||isNaN(_0x53eff3)){return _0x566de1(msgResponse(_0x93ae('0x216'),_0x93ae('0x40'),_0x93ae('0x217')+_0x53eff3));}if(_0x5cfba2<=0x0||isNaN(_0x5cfba2)){return _0x566de1(msgResponse(_0x93ae('0x216'),_0x93ae('0x40'),'Umin\x20=\x20'+_0x5cfba2));}_0x3fb84b=_0x3fb84b||0x0;var _0x1fe767=0x1/_0x52fa58;var _0x13eb9a=0x0;var _0x50752b=0x0;var _0x5d6167=0x0;var _0x53f8ab=0x0;for(var _0x272ebd=0x0;_0x53f8ab<_0x5cfba2;_0x272ebd+=0x1){_0x50752b=_0x272ebd/_0x53eff3;_0x13eb9a=(_0x201d10*_0x50752b+_0x3fb84b)/_0x1fe767;_0x5d6167=erlangb(_0x13eb9a,_0xe86224);_0x53f8ab=_0x13eb9a/_0xe86224*(0x1-erlangb(_0x13eb9a,_0xe86224));}return _0x1659bc({'erlangCalls':_0x272ebd,'erlangCallToSecond':_0x53eff3/_0x272ebd,'erlangAbandonmentRate':_0x5d6167,'erlangBusyFactor':_0x53f8ab});});};module[_0x93ae('0x218')]=Dialer;
\ No newline at end of file
+var _0x4214=['is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','endtime','starttime','[uniqueid]','sequence','enqueue','Action','status','channel','catch','voiceQueues','queue','[Dialer][checkChannel]','updateOriginated','[Dialer][checkChannel][ivr]','countReScheduled','resolve','[countReScheduled]\x20','then','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','saveInDb','pick','ContactId','ListId','UserId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','isTrunkReachable','SIP/%s','reachable','unmonitored','uniqueid','isNil','variable','exten','xcally-motion-dialer','dialAMDActive','value','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','custom:amd','amd','[syncHangupInAMD]','MACHINE','Machine','countmachineretry','countglobal','buildObj','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','reason\x2019\x20machine....','add','minutes','YYYY-MM-DD\x20HH:mm:ss','VoiceQueueId','[rescheduleContact][Machine]','HANGUP','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countnoanswerretry','createStateFinal','syncHangup','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','[syncHangupIvr]','cause-txt','Unknow','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','droptime','responsetime','dialQueueTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','dropreason','TIMEOUT','dialQueueProject2','dialDropMaxRetry','dialDropRetryFrequency','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','countabandonedretry','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','locked','stateinterface','actionid','push','merge','idHopper','paused','queueStatusComplete','[booked][unlockQueueStatus]','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','run','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','INTERVAL_IS_NULL','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','indexOf','iftime\x20%s,%s','true','all','GLOBAL_INTERVAL_IS_OVERTIME','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','Queue','launchHandleIvr','handleIvr','dialActive','dialGlobalInterval','[syncQueueSummary]','checkIsTrunkReachable','dialTimezone','[syncCampaigns]','\x5cw{0,','pow','match','actionOriginate','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-VOICEQUEUEID','tags','updatedAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','getQueue','response','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','callProgressDetecting','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','custom:agentnosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','congestion','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalMaxThreshold','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','startMethodPredictive',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','predictiveIntervalPauses','abandonmentRate','[CatchErlangB]','floor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','Agent','voicePause','outboundReCallsDay','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','RUNNING','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Error','[abandonmentRate]','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]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','exports','util','lodash','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','socket.io-emitter','redis','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/voiceQueueRt','./action','./history','./agentComplete','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','tail','finally','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','\x20INTERVAL_IS_NULL','Intervals','isEmpty','Interval','[ifTime][Action]','stringify','milliseconds','seconds','emit','type','outbound','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','talking','unmanaged','abandoned','waiting','loggedInDb','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','Trunk','active','callerid','md5','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','campaign:save','-----\x20Stats\x20Predictive\x20---','info','Dropped\x20Timeout:\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','predictiveIntervalAvgTalktime','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','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','---------------------------','diff','handlePredictive','clearing\x20variable\x20handle\x20predictive','preview','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','inspect','error','stack','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED'];(function(_0x11c573,_0x9e7c6e){var _0x6b72de=function(_0x2e8a61){while(--_0x2e8a61){_0x11c573['push'](_0x11c573['shift']());}};_0x6b72de(++_0x9e7c6e);}(_0x4214,0x177));var _0x4421=function(_0x1c3dcf,_0x2bab00){_0x1c3dcf=_0x1c3dcf-0x0;var _0x343dc1=_0x4214[_0x1c3dcf];return _0x343dc1;};'use strict';var util=require(_0x4421('0x0'));var _=require(_0x4421('0x1'));var BPromise=require('bluebird');var uuid=require(_0x4421('0x2'));var moment=require(_0x4421('0x3'));var rr=require('rr');var md5=require('md5');var Redis=require(_0x4421('0x4'));var ut=require(_0x4421('0x5'));var config=require(_0x4421('0x6'));var logger=require(_0x4421('0x7'))(_0x4421('0x8'));var loggerBooked=require(_0x4421('0x7'))(_0x4421('0x9'));var loggerPredictive=require(_0x4421('0x7'))(_0x4421('0xa'));var loggerPredictiveCalls=require('../../../config/logger')(_0x4421('0xb'));var loggerSyncQueueSummary=require(_0x4421('0x7'))(_0x4421('0xc'));var ami=require(_0x4421('0xd'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x4421('0xe'))(new Redis(config[_0x4421('0xf')]));var cmHopper=require(_0x4421('0x10'));var cmHopperHistory=require(_0x4421('0x11'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x4421('0x12'));var Action=require(_0x4421('0x13'));var History=require(_0x4421('0x14'));var Final=require('./final');var AgentComplete=require(_0x4421('0x15'));var QueueCallerAbandon=require('./queueCallerAbandon');var Hangup=require('./hangup');var ipAgi=process[_0x4421('0x16')][_0x4421('0x17')]||_0x4421('0x18');var strategy={'rrmemory':_0x4421('0x19'),'roundrobin':_0x4421('0x1a')};var Sequence=function(){};Sequence[_0x4421('0x1b')]['enqueue']=function(_0x283c77){this[_0x4421('0x1c')]=this[_0x4421('0x1c')]?this[_0x4421('0x1c')][_0x4421('0x1d')](_0x283c77):_0x283c77();};function Dialer(_0x4008a5,_0x7a9b1){this['sequence']=new Sequence();this['preview']=_0x7a9b1;this['voiceQueues']=_0x4008a5['voiceQueues'];this['campaigns']=_0x4008a5[_0x4421('0x1e')];this[_0x4421('0x1f')]=_0x4008a5[_0x4421('0x1f')];this['trunks']=_0x4008a5[_0x4421('0x20')];this[_0x4421('0x21')]=config['maxNumberOriginate']||0x2;this[_0x4421('0x22')]={};this[_0x4421('0x23')]={};this[_0x4421('0x24')]={};this[_0x4421('0x25')]={};this[_0x4421('0x26')]={};this[_0x4421('0x27')]={};this[_0x4421('0x28')]={};this[_0x4421('0x29')]={};this[_0x4421('0x2a')]={};this[_0x4421('0x2b')]={};ami['on'](_0x4421('0x2c'),this[_0x4421('0x2d')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x2f'),this[_0x4421('0x30')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x31'),this[_0x4421('0x32')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x33'),this[_0x4421('0x34')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x35'),this[_0x4421('0xc')][_0x4421('0x2e')](this));ami['on']('hangup',this['syncHangup']['bind'](this));ami['on'](_0x4421('0x36'),this[_0x4421('0x37')]['bind'](this));ami['on'](_0x4421('0x38'),this[_0x4421('0x39')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x3a'),this[_0x4421('0x3b')][_0x4421('0x2e')](this));ami['on'](_0x4421('0x3c'),this[_0x4421('0x3d')]['bind'](this));this[_0x4421('0x3e')]();this[_0x4421('0x3f')]();}function isNotNull(_0x2e9cd8){return _0x2e9cd8!==null&&!_[_0x4421('0x40')](_0x2e9cd8);}function checkIsLoggedIn(_0x58119b,_0x58ed84){return function(){if(_0x58ed84<=0x0){_0x58119b[_0x4421('0x41')]=_0x4421('0x42');throw _0x58119b[_0x4421('0x43')]+_0x4421('0x44');}};}function isActive(_0x8abc3f){return _0x8abc3f;}function checkIsActive(_0x41fd5a,_0x1140ca){return function(){if(!isActive(_0x1140ca)){_0x41fd5a[_0x4421('0x41')]=_0x4421('0x45');throw _0x41fd5a[_0x4421('0x43')]+_0x4421('0x46');}};}function checkInterval(_0x2ebf5b){return function(){if(!isNotNull(_0x2ebf5b['Interval'])){_0x2ebf5b[_0x4421('0x41')]='INTERVAL_IS_NULL';throw _0x2ebf5b[_0x4421('0x43')]+_0x4421('0x47');}if(!isNotNull(_0x2ebf5b['Interval'][_0x4421('0x48')])){_0x2ebf5b['message']='INTERVAL_IS_NULL';throw _0x2ebf5b['name']+_0x4421('0x47');}if(!isNotNull(_[_0x4421('0x49')](_0x2ebf5b[_0x4421('0x4a')]['Intervals']))){_0x2ebf5b[_0x4421('0x41')]='INTERVAL_IS_NULL';throw _0x2ebf5b['name']+_0x4421('0x47');}};}function msgResponse(_0x898b9b,_0x4d2026,_0xf4e80b){return{'action':_0x898b9b,'response':_0x4d2026,'message':_0xf4e80b,'stack':_0xf4e80b};}function myreject(_0x394fd4){return function(_0x365370){return _0x394fd4(msgResponse(_0x4421('0x4b'),'Error',JSON[_0x4421('0x4c')](_0x365370)));};}function getSeconds(_0x4fe1ee,_0x3b42bb){var _0x6dccd4=moment(_0x4fe1ee)['milliseconds'](0x0);var _0x1c81d4=moment(_0x3b42bb)[_0x4421('0x4d')](0x0);return _0x6dccd4['diff'](_0x1c81d4,_0x4421('0x4e'));}function emit(_0x4a4ab8,_0x555222,_0x377de6){io['to'](_0x4a4ab8)[_0x4421('0x4f')](_0x555222,_0x377de6);}function emitVoiceQueueSummary(_0x180819){if(_0x180819[_0x4421('0x50')]===_0x4421('0x51')){var _0x3319e6={'id':_0x180819['id'],'name':_0x180819['name'],'strategy':_0x180819[_0x4421('0x52')],'answered':_0x180819['answered'],'available':_0x180819[_0x4421('0x53')],'loggedIn':_0x180819[_0x4421('0x54')],'pTalking':_0x180819[_0x4421('0x55')],'sumBillable':_0x180819[_0x4421('0x56')],'sumDuration':_0x180819[_0x4421('0x57')],'sumHoldTime':_0x180819['sumHoldTime']||0x0,'talking':_0x180819[_0x4421('0x58')],'total':_0x180819['total'],'type':_0x180819[_0x4421('0x50')],'unmanaged':_0x180819[_0x4421('0x59')],'abandoned':_0x180819[_0x4421('0x5a')],'waiting':_0x180819[_0x4421('0x5b')],'loggedInDb':_0x180819[_0x4421('0x5c')],'dialActive':_0x180819['dialActive'],'dialMethod':_0x180819[_0x4421('0x5d')],'dialOriginateCallerIdName':_0x180819[_0x4421('0x5e')],'dialOriginateCallerIdNumber':_0x180819['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x180819[_0x4421('0x5f')],'dialPrefix':_0x180819[_0x4421('0x60')],'outboundAnswerAgiCallsDay':_0x180819['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x180819['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x180819['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x180819[_0x4421('0x61')],'outboundCongestionCallsDay':_0x180819[_0x4421('0x62')],'outboundDropCallsDayACS':_0x180819[_0x4421('0x63')],'outboundDropCallsDayCallersExit':_0x180819[_0x4421('0x64')],'outboundDropCallsDayTimeout':_0x180819[_0x4421('0x65')],'outboundNoAnswerCallsDay':_0x180819[_0x4421('0x66')],'outboundNoSuchCallsDay':_0x180819[_0x4421('0x67')],'outboundOriginateFailureCallsDay':_0x180819['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x180819['outboundReCallsDay'],'outboundRejectCallsDay':_0x180819['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x180819[_0x4421('0x68')],'predictiveIntervalAnsweredCalls':_0x180819[_0x4421('0x69')],'predictiveIntervalAvgHoldtime':_0x180819[_0x4421('0x6a')],'predictiveIntervalAvgTalktime':_0x180819['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x180819['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x180819[_0x4421('0x6b')],'predictiveIntervalErlangCalls':_0x180819[_0x4421('0x6c')],'predictiveIntervalErlangCallsDroppedCalls':_0x180819['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x180819[_0x4421('0x6d')],'predictiveIntervalMultiplicativeFactor':_0x180819['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x180819['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x180819[_0x4421('0x6e')],'predictiveIntervalTotalCalls':_0x180819[_0x4421('0x6f')],'message':_0x180819[_0x4421('0x41')],'originated':_0x180819['originated'],'erlangCalls':_0x180819[_0x4421('0x70')],'erlangCallToSecond':_0x180819[_0x4421('0x71')],'erlangAbandonmentRate':_0x180819[_0x4421('0x72')],'erlangBusyFactor':_0x180819['erlangBusyFactor'],'startPredictive':_0x180819['startPredictive'],'startProgressive':_0x180819[_0x4421('0x28')]};if(_0x180819[_0x4421('0x73')]){_0x3319e6[_0x4421('0x73')]={'id':_0x180819['Trunk']['id'],'name':_0x180819[_0x4421('0x73')]['name'],'active':_0x180819[_0x4421('0x73')][_0x4421('0x74')],'callerid':_0x180819[_0x4421('0x73')][_0x4421('0x75')]};}if(_0x180819[_0x4421('0x4a')]){_0x3319e6['Interval']={'id':_0x180819[_0x4421('0x4a')]['id'],'name':_0x180819[_0x4421('0x4a')]['name']};}var _0xc41bad=md5(JSON[_0x4421('0x4c')](_0x3319e6));if(_0x180819[_0x4421('0x76')]!==_0xc41bad){_0x180819[_0x4421('0x76')]=_0xc41bad;emit(util[_0x4421('0x77')](_0x4421('0x78'),_0x3319e6['name']),_0x4421('0x79'),_0x3319e6);}}}function emitCampaignSummary(_0x22f136){if(_0x22f136[_0x4421('0x50')]===_0x4421('0x7a')){emit(util[_0x4421('0x77')](_0x4421('0x7b'),_0x22f136[_0x4421('0x43')]),_0x4421('0x7c'),_0x22f136);}}function checkGetDataPredictive(_0x2f5158){if(isNotNull(_0x2f5158)&&!_[_0x4421('0x49')](_0x2f5158)){loggerPredictive['info'](_0x4421('0x7d'));loggerPredictive[_0x4421('0x7e')]('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2f5158['predictiveIntervalTotalCalls']);loggerPredictive[_0x4421('0x7e')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2f5158[_0x4421('0x69')]);loggerPredictive[_0x4421('0x7e')](_0x4421('0x7f'),_0x2f5158[_0x4421('0x6b')]);loggerPredictive[_0x4421('0x7e')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2f5158[_0x4421('0x80')]);loggerPredictive[_0x4421('0x7e')](_0x4421('0x81'),_0x2f5158[_0x4421('0x6a')]);loggerPredictive[_0x4421('0x7e')](_0x4421('0x82'),_0x2f5158[_0x4421('0x83')]);loggerPredictive[_0x4421('0x7e')]('---------------------------');if(_0x2f5158[_0x4421('0x6f')]>0x0){if(!_[_0x4421('0x40')](_0x2f5158[_0x4421('0x83')])&&_0x2f5158[_0x4421('0x83')]>0x0){return!![];}loggerPredictive[_0x4421('0x7e')]('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_['isUndefined'](_0x2f5158[_0x4421('0x6a')])&&_0x2f5158[_0x4421('0x6a')]>0x0){return!![];}loggerPredictive[_0x4421('0x7e')](_0x4421('0x84'));}else{loggerPredictive[_0x4421('0x7e')](_0x4421('0x85'));}}else{loggerPredictive[_0x4421('0x7e')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x512fa9){return function(_0xf1245a){loggerPredictive['info'](_0x4421('0x86'));loggerPredictive[_0x4421('0x7e')](_0x4421('0x87'),_0xf1245a['erlangCalls']);loggerPredictive[_0x4421('0x7e')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xf1245a['erlangCallToSecond']);loggerPredictive[_0x4421('0x7e')](_0x4421('0x88'),_0xf1245a[_0x4421('0x72')]);loggerPredictive['info'](_0x4421('0x89'),_0xf1245a[_0x4421('0x8a')]);loggerPredictive[_0x4421('0x7e')](_0x4421('0x88'),_0xf1245a[_0x4421('0x72')]);loggerPredictive[_0x4421('0x7e')](_0x4421('0x8b'));_['merge'](_0x512fa9,_0xf1245a);};}function getDiff(_0x42dae7){var _0x3042c8=moment()[_0x4421('0x4d')](0x0);var _0x4c9af5=moment(_0x42dae7)[_0x4421('0x4d')](0x0);return _0x3042c8[_0x4421('0x8c')](_0x4c9af5,_0x4421('0x4e'));}function ifInterval(_0x3ca61b,_0x598610){if(_[_0x4421('0x40')](_0x598610)){return![];}return getDiff(_0x598610)<_0x3ca61b*0x3c;}function freeVariablesPredictive(_0x247ca8){if(isNotNull(_0x247ca8)){if(!_[_0x4421('0x40')](_0x247ca8[_0x4421('0x28')])){_0x247ca8[_0x4421('0x28')]=undefined;loggerPredictive[_0x4421('0x7e')](_0x247ca8['name'],'clearing\x20variable\x20start\x20progressive');}if(!_[_0x4421('0x40')](_0x247ca8[_0x4421('0x27')])){_0x247ca8[_0x4421('0x27')]=undefined;loggerPredictive[_0x4421('0x7e')](_0x247ca8['name'],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x4421('0x40')](_0x247ca8[_0x4421('0x8d')])){clearInterval(_0x247ca8[_0x4421('0x8d')]);_0x247ca8[_0x4421('0x8d')]=undefined;loggerPredictive[_0x4421('0x7e')](_0x247ca8[_0x4421('0x43')],_0x4421('0x8e'));}}}function erlangb(_0x38fd39,_0x103370){if(_0x103370===0x0){return 0x0;}var _0x544f0e=0x1;for(var _0x56e716=0x1;_0x56e716<=_0x103370;_0x56e716+=0x1){_0x544f0e=0x1+_0x544f0e*_0x56e716/_0x38fd39;}return 0x1/_0x544f0e;}function isVoiceQueueOutbound(_0x46a01c){return _0x46a01c==='outbound';}function isNotPreview(_0x17883c){return _0x17883c!==_0x4421('0x8f');}function isCampaignIvr(_0x5a5cc4){return _0x5a5cc4===_0x4421('0x7a');}function getCallerId(_0x1d68bf,_0x233607,_0x3fbe6f){if(!_[_0x4421('0x40')](_0x3fbe6f)&&typeof _0x3fbe6f==='string'&&!_[_0x4421('0x49')](_0x3fbe6f)){if(!_[_0x4421('0x40')](_0x233607)&&typeof _0x233607===_0x4421('0x90')&&!_[_0x4421('0x49')](_0x233607)){return util[_0x4421('0x77')](_0x4421('0x91'),_0x233607,_0x3fbe6f);}return util[_0x4421('0x77')]('\x22%s\x22\x20<%s>',_0x3fbe6f,_0x3fbe6f);}if(!_['isUndefined'](_0x1d68bf)&&typeof _0x1d68bf===_0x4421('0x90')&&!_[_0x4421('0x49')](_0x1d68bf)){return _0x1d68bf;}return _0x4421('0x92');}function loggerCatchQueueSummary(_0x2046a0,_0xe9b286){return function(_0x272ed7){freeVariablesPredictive(_0xe9b286);emitVoiceQueueSummary(_0xe9b286);emitCampaignSummary(_0xe9b286);loggerSyncQueueSummary['error'](_0x2046a0,util[_0x4421('0x93')](_0x272ed7,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0xf20003,_0x2c0b61){return function(_0x3c0231){loggerPredictive[_0x4421('0x94')](_0x2c0b61['name'],_0xf20003);loggerPredictive[_0x4421('0x94')](_0x3c0231[_0x4421('0x95')]);freeVariablesPredictive(_0x2c0b61);};}function loggerCatch(_0x4357d7){return function(_0x586a4b){logger[_0x4421('0x94')](_0x4357d7,util[_0x4421('0x93')](_0x586a4b,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x21d695){return _0x21d695&&!_[_0x4421('0x40')](_0x21d695)&&_0x21d695[_0x4421('0x96')]>0x0;}function decremetOriginate(_0x2d730e){if(!_['isUndefined'](_0x2d730e)&&_0x2d730e!==null){if(typeof _0x2d730e[_0x4421('0x97')]!==_0x4421('0x98')){if(_0x2d730e['originated']>0x0){_0x2d730e[_0x4421('0x97')]-=0x1;}else{logger[_0x4421('0x94')](_0x4421('0x99'));}}}else{logger['error'](_0x4421('0x9a'));}}function checkContactLowerLimitOriginate(_0x461c73,_0x3fb328,_0x29d7e1){if(_0x3fb328>_0x29d7e1){for(var _0x16df33=0x0;_0x16df33<_0x3fb328-_0x29d7e1;_0x16df33+=0x1){decremetOriginate(_0x461c73);}}}function loggerGetContactDialer(_0x578cf8,_0x26a5de,_0x14cf7a){return function(_0x10cb0b){checkContactLowerLimitOriginate(_0x26a5de,_0x14cf7a,0x0);logger[_0x4421('0x94')](_0x578cf8,util[_0x4421('0x93')](_0x10cb0b,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x2f9f77){return function(_0x3d56a6){if(isNotNull(_0x3d56a6)&&isNotNull(_0x3d56a6[0x0])){if(_0x3d56a6[0x0][_0x4421('0x9b')]>0x0){_0x2f9f77[_0x4421('0x41')]=_0x4421('0x9c');logger[_0x4421('0x7e')](_0x4421('0x9d')+_0x2f9f77[_0x4421('0x43')],_0x3d56a6[0x0][_0x4421('0x9b')],_0x4421('0x9e'));}else{_0x2f9f77[_0x4421('0x41')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x4421('0x7e')](_0x4421('0x9f')+_0x2f9f77[_0x4421('0x43')]);}}};}function notSendMessagesQueue(_0x2f98fb){if(_0x2f98fb[_0x4421('0xa0')]){freeVariablesPredictive(_0x2f98fb);if(_0x2f98fb[_0x4421('0x97')]===0x0&&_0x2f98fb[_0x4421('0x58')]===0x0&&_0x2f98fb['waiting']===0x0&&(_0x2f98fb[_0x4421('0x55')]||0x0)===0x0){_0x2f98fb[_0x4421('0xa0')]=![];_0x2f98fb[_0x4421('0x53')]=0x0;_0x2f98fb[_0x4421('0x41')]=_0x4421('0x45');loggerSyncQueueSummary[_0x4421('0x94')](_0x4421('0xa1'),_0x2f98fb[_0x4421('0x43')],_0x4421('0xa2'));}else{_0x2f98fb[_0x4421('0x41')]=_0x4421('0xa3');loggerSyncQueueSummary[_0x4421('0x94')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x2f98fb[_0x4421('0x43')],_0x4421('0xa4'));}emitVoiceQueueSummary(_0x2f98fb);}}function notSendMessagesCampaign(_0x17cc00){if(_0x17cc00[_0x4421('0xa0')]){if(_0x17cc00['originated']===0x0){_0x17cc00[_0x4421('0xa0')]=![];_0x17cc00[_0x4421('0x41')]=_0x4421('0x45');loggerSyncQueueSummary[_0x4421('0x94')](_0x4421('0xa5'),_0x17cc00['name'],'is\x20not\x20active');}else{_0x17cc00[_0x4421('0x41')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x4421('0x94')](_0x4421('0xa5'),_0x17cc00[_0x4421('0x43')],_0x4421('0xa4'));}emitCampaignSummary(_0x17cc00);}}function createObjHistory(_0x56fb70,_0x4895e0,_0x357490,_0x50ab52,_0x2a70c0){_0x56fb70[_0x4421('0x41')]=_0x357490;var _0x5557a9=new Action(_0x56fb70,_0x4895e0);var _0x4693fe=new History(_0x5557a9);_0x4693fe[_0x4421('0xa6')]=_0x50ab52;_0x4693fe[_0x4421('0xa7')]=_0x2a70c0;_0x4693fe[_0x4421('0xa8')]=_0x5557a9[_0x4421('0xa9')];return _0x4693fe;}Dialer[_0x4421('0x1b')][_0x4421('0x3f')]=function(){var _0x4a5cde=this;setInterval(function(){_0x4a5cde['clearZombieChannels'](_0x4a5cde[_0x4421('0x25')],_0x4421('0xaa'));_0x4a5cde['clearZombieChannels'](_0x4a5cde[_0x4421('0x23')],'[actions]');},0x32c8);};Dialer[_0x4421('0x1b')]['clearZombieChannels']=function(_0x189a94,_0x5f1408){var _0x2e0c9f=this;for(var _0x3ef01f in _0x189a94){if(typeof _0x189a94[_0x3ef01f]!==_0x4421('0x98')){this[_0x4421('0xab')][_0x4421('0xac')](function(){if(!_['isNil'](_0x189a94[_0x3ef01f])){return ami[_0x4421('0xad')]({'action':_0x4421('0xae'),'channel':_0x189a94[_0x3ef01f][_0x4421('0xaf')]})[_0x4421('0xb0')](function(_0x5ddfde){if(_0x5ddfde['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x189a94[_0x3ef01f]&&_0x189a94[_0x3ef01f][_0x4421('0x50')]!==_0x4421('0x7a')){_0x2e0c9f['updateOriginated'](_0x2e0c9f[_0x4421('0xb1')][_0x189a94[_0x3ef01f][_0x4421('0xb2')]]);logger[_0x4421('0x94')](_0x4421('0xb3'),_0x5f1408,_0x3ef01f,_0x189a94[_0x3ef01f][_0x4421('0xb2')]);delete _0x189a94[_0x3ef01f];}if(_0x189a94[_0x3ef01f]&&_0x189a94[_0x3ef01f]['type']==='ivr'){_0x2e0c9f[_0x4421('0xb4')](_0x2e0c9f[_0x4421('0x1e')][_0x189a94[_0x3ef01f][_0x4421('0xb2')]]);logger['error'](_0x4421('0xb5'),_0x5f1408,_0x3ef01f,_0x189a94[_0x3ef01f][_0x4421('0xb2')]);delete _0x189a94[_0x3ef01f];}},0x2328);}});}});}}};Dialer[_0x4421('0x1b')][_0x4421('0xb6')]=function(_0x461a1a){return BPromise[_0x4421('0xb7')]()['then'](cmHopper[_0x4421('0xb6')](_0x461a1a))[_0x4421('0xb0')](loggerCatch(_0x4421('0xb8')));};Dialer[_0x4421('0x1b')]['checkIsBlackList']=function(_0x4529f4){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopperBlack['checkIsBlackList'](_0x4529f4))[_0x4421('0xb0')](loggerCatch(_0x4421('0xba')));};Dialer['prototype']['checkIsBlackListIvr']=function(_0x5033e6){return BPromise[_0x4421('0xb7')]()['then'](cmHopperBlack[_0x4421('0xbb')](_0x5033e6))[_0x4421('0xb0')](loggerCatch(_0x4421('0xbc')));};Dialer['prototype'][_0x4421('0xbd')]=function(_0x53a49a){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopperHistory['avgHandleTime'](_0x53a49a))['catch'](loggerCatch(_0x4421('0xbe')));};Dialer[_0x4421('0x1b')][_0x4421('0xbf')]=function(_0x24b2dd){return BPromise['resolve']()['then'](cmHopper['rescheduleContact'](_0x24b2dd))[_0x4421('0xb0')](loggerCatch(_0x4421('0xc0')));};Dialer['prototype'][_0x4421('0xc1')]=function(_0x2e8aa2,_0x249424,_0x2bd750){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopper[_0x4421('0xc1')](_0x2e8aa2,_0x249424,_0x2bd750))['catch'](loggerCatch(_0x4421('0xc2')));};Dialer[_0x4421('0x1b')][_0x4421('0xc3')]=function(_0x3f25a6,_0xb9120c,_0x21e984,_0x39322a,_0x179bf8){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopper[_0x4421('0xc3')](_0x3f25a6,_0xb9120c,_0x21e984,_0x39322a))['catch'](function(_0x5acc40){_0x179bf8[_0x4421('0xc4')]-=_0x21e984;_0x179bf8[_0x4421('0xc4')]=_0x179bf8[_0x4421('0xc4')]>0x0?_0x179bf8[_0x4421('0xc4')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x5acc40);});};Dialer[_0x4421('0x1b')]['getContactDialerIvr']=function(_0xbdccb1,_0x1db965,_0x3dcbab,_0x402c38){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopper[_0x4421('0xc5')](_0xbdccb1,_0x1db965,_0x3dcbab))['catch'](function(_0x11a467){_0x402c38[_0x4421('0xc4')]-=_0x1db965;_0x402c38['temp']=_0x402c38['temp']>0x0?_0x402c38[_0x4421('0xc4')]:0x0;loggerCatch(_0x4421('0xc6'))(_0x11a467);});};Dialer['prototype'][_0x4421('0xc7')]=function(_0x3655fe){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](voiceQueueRt[_0x4421('0xc7')](_0x3655fe))['catch'](loggerCatch(_0x4421('0xc8')));};Dialer[_0x4421('0x1b')][_0x4421('0xc9')]=function(_0x2a9dc6){return BPromise[_0x4421('0xb7')]()['then'](cmHopper[_0x4421('0xc9')](_0x2a9dc6))[_0x4421('0xb0')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer[_0x4421('0x1b')][_0x4421('0xca')]=function(_0x730c65){return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopperHistory['createHistory'](_0x730c65))['catch'](loggerCatch(_0x4421('0xcb')));};Dialer['prototype'][_0x4421('0xb4')]=function(_0x35f9b7){if(!_['isUndefined'](_0x35f9b7)&&_0x35f9b7!==null){if(typeof _0x35f9b7[_0x4421('0x97')]!==_0x4421('0x98')){if(_0x35f9b7[_0x4421('0x97')]>0x0){_0x35f9b7[_0x4421('0x97')]-=0x1;}else{logger[_0x4421('0x94')](_0x4421('0xcc'));}}}else{logger['error'](_0x4421('0xcd'));}};Dialer['prototype'][_0x4421('0xce')]=function(_0x3364d6,_0x78270c){var _0x3c8924=this;return function(_0x3f68be){_0x3c8924[_0x4421('0xb4')](_0x78270c);logger[_0x4421('0x94')](_0x3364d6,util[_0x4421('0x93')](_0x3f68be,{'showHidden':![],'depth':null}));};};Dialer[_0x4421('0x1b')][_0x4421('0xcf')]=function(_0x390661,_0x4d2be2,_0xa7b5cf){var _0x1f37f5={'state':0x19,'statedesc':'notFound'};this[_0x4421('0xb4')](_0x4d2be2);this[_0x4421('0xd0')](_['merge'](_0x1f37f5,_[_0x4421('0xd1')](_0xa7b5cf,[_0x4421('0xd2'),_0x4421('0xd3'),_0x4421('0xd4'),'VoiceQueueId',_0x4421('0xd5')])),_0x4421('0xd6'),_0x4421('0xd7'));logger['error'](_0x390661);};Dialer[_0x4421('0x1b')][_0x4421('0xd8')]=function(_0x49cda0){return _0x49cda0==='Success';};Dialer[_0x4421('0x1b')][_0x4421('0xd9')]=function(_0x56dd0c){return!_[_0x4421('0x40')](_0x56dd0c)&&_0x56dd0c&&!_[_0x4421('0x40')](_0x56dd0c[_0x4421('0x43')])&&!_[_0x4421('0x40')](_0x56dd0c[_0x4421('0x74')])&&_0x56dd0c[_0x4421('0x74')]&&(this['trunks'][util['format'](_0x4421('0xda'),_0x56dd0c[_0x4421('0x43')])][_0x4421('0xae')]===_0x4421('0xdb')||this[_0x4421('0x20')][util[_0x4421('0x77')](_0x4421('0xda'),_0x56dd0c['name'])][_0x4421('0xae')]===_0x4421('0xdc'));};Dialer[_0x4421('0x1b')][_0x4421('0xd0')]=function(_0x5dc033,_0x179085,_0x17dc35){this[_0x4421('0xca')](_0x5dc033)[_0x4421('0xb0')](loggerCatch(_0x179085));this[_0x4421('0xc9')](_0x5dc033)[_0x4421('0xb0')](loggerCatch(_0x17dc35));};Dialer['prototype'][_0x4421('0x39')]=function(_0x5f06d2){var _0x4d881d=this[_0x4421('0x25')][_0x5f06d2[_0x4421('0xdd')]];var _0x12aa80;if(!_[_0x4421('0xde')](_0x5f06d2)&&!_[_0x4421('0xde')](_0x5f06d2[_0x4421('0xdf')])&&!_[_0x4421('0xde')](_0x5f06d2[_0x4421('0xdf')]['amdstatus'])&&_0x5f06d2[_0x4421('0xe0')]===_0x4421('0xe1')&&_0x4d881d){if(_0x4d881d[_0x4421('0x50')]!=='ivr'&&this['voiceQueues'][_0x4d881d['queue']][_0x4421('0xe2')]&&_0x5f06d2[_0x4421('0xe3')]==='HANGUP'){delete this['uniqueId'][_0x5f06d2[_0x4421('0xdd')]];this[_0x4421('0xb4')](this['voiceQueues'][_0x4d881d[_0x4421('0xb2')]]);this['voiceQueues'][_0x4d881d[_0x4421('0xb2')]][_0x4421('0xe4')]+=0x1;this[_0x4421('0xb1')][_0x4d881d[_0x4421('0xb2')]][_0x4421('0xe5')]+=0x1;_0x12aa80=new Hangup(_0x4d881d,_0x5f06d2);_0x12aa80[_0x4421('0xa6')]=0x12;_0x12aa80[_0x4421('0xa7')]=_0x4421('0xe6');_0x12aa80[_0x4421('0xe7')]=_0x4421('0xe8');ami['emit'](_0x4421('0xe9'),ut['buildObj'](_0x12aa80,_0x4421('0xea')));this[_0x4421('0xd0')](_0x12aa80,'[syncHangupInAMD][createHistory]',_0x4421('0xeb'));}if(_0x4d881d[_0x4421('0x50')]!==_0x4421('0x7a')&&this['voiceQueues'][_0x4d881d[_0x4421('0xb2')]][_0x4421('0xe2')]&&_0x5f06d2[_0x4421('0xe3')]===_0x4421('0xec')){var _0x44e643=this;return new BPromise(function(_0x2ebf50,_0x4a9927){delete _0x44e643[_0x4421('0x25')][_0x5f06d2[_0x4421('0xdd')]];_0x44e643[_0x4421('0xb4')](_0x44e643[_0x4421('0xb1')][_0x4d881d[_0x4421('0xb2')]]);_0x44e643[_0x4421('0xb1')][_0x4d881d[_0x4421('0xb2')]]['outboundAnswerCallsDay']+=0x1;_0x44e643['voiceQueues'][_0x4d881d[_0x4421('0xb2')]][_0x4421('0xe5')]+=0x1;var _0x438bcf=_0x44e643['voiceQueues'][_0x4d881d['queue']];var _0x27835a=new Hangup(_0x4d881d,_0x5f06d2);_0x27835a[_0x4421('0xa6')]=0x13;_0x27835a['statedesc']=_0x4421('0xed');_0x27835a[_0x4421('0xe7')]='AMD';_0x27835a[_0x4421('0xee')]+=0x1;_0x27835a[_0x4421('0xef')]+=0x1;_0x27835a[_0x4421('0xea')]=!![];ami[_0x4421('0x4f')](_0x4421('0xe9'),ut[_0x4421('0xf0')](_0x27835a,_0x4421('0xea')));_0x44e643[_0x4421('0xca')](_0x27835a)[_0x4421('0xb0')](loggerCatch(_0x4421('0xf1')));if(_0x27835a[_0x4421('0xf2')]+_0x27835a[_0x4421('0xf3')]+_0x27835a['countnoanswerretry']+_0x27835a[_0x4421('0xf4')]+_0x27835a[_0x4421('0xf5')]+_0x27835a['countabandonedretry']+_0x27835a[_0x4421('0xee')]+_0x27835a[_0x4421('0xf6')]>=_0x438bcf[_0x4421('0xf7')]){_0x44e643[_0x4421('0xf8')](_0x27835a,_0x2ebf50,_0x4a9927,_0x4421('0xf9'));}else{if(_0x27835a[_0x4421('0xee')]>=_0x438bcf[_0x4421('0xfa')]){_0x44e643['createStateFinal'](_0x27835a,_0x2ebf50,_0x4a9927,_0x4421('0xfb'));}else{_0x44e643['rescheduleContact']({'active':![],'countmachineretry':_0x27835a[_0x4421('0xee')],'scheduledat':moment()[_0x4421('0xfc')](_0x438bcf['dialMachineRetryFrequency'],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x27835a['ContactId'],'ListId':_0x27835a[_0x4421('0xd3')],'VoiceQueueId':_0x27835a[_0x4421('0xff')]||undefined,'CampaignId':_0x27835a['CampaignId']||undefined})['catch'](loggerCatch(_0x4421('0x100')));_0x2ebf50({'reschedule':0x1});}}});}if(_0x4d881d['type']==='ivr'&&this['campaigns'][_0x4d881d['queue']][_0x4421('0xe2')]&&_0x5f06d2[_0x4421('0xe3')]===_0x4421('0x101')){delete this[_0x4421('0x25')][_0x5f06d2['uniqueid']];this[_0x4421('0xb4')](this[_0x4421('0x1e')][_0x4d881d[_0x4421('0xb2')]]);_0x12aa80=new Hangup(_0x4d881d,_0x5f06d2);_0x12aa80['state']=0x12;_0x12aa80[_0x4421('0xa7')]=_0x4421('0xe6');_0x12aa80[_0x4421('0xe7')]=_0x4421('0xe8');ami['emit'](_0x4421('0xe9'),ut[_0x4421('0xf0')](_0x12aa80,_0x4421('0xea')));this[_0x4421('0xd0')](_0x12aa80,_0x4421('0x102'),_0x4421('0x103'));}if(_0x4d881d[_0x4421('0x50')]==='ivr'&&this[_0x4421('0x1e')][_0x4d881d['queue']][_0x4421('0xe2')]&&_0x5f06d2[_0x4421('0xe3')]===_0x4421('0xec')){var _0x44e643=this;return new BPromise(function(_0xfa56c2,_0x448d3b){delete _0x44e643[_0x4421('0x25')][_0x5f06d2[_0x4421('0xdd')]];_0x44e643['updateOriginated'](_0x44e643['campaigns'][_0x4d881d[_0x4421('0xb2')]]);_0x44e643[_0x4421('0x1e')][_0x4d881d['queue']][_0x4421('0xe4')]+=0x1;_0x44e643[_0x4421('0x1e')][_0x4d881d[_0x4421('0xb2')]][_0x4421('0xe5')]+=0x1;var _0xe3a5c2=_0x44e643[_0x4421('0x1e')][_0x4d881d[_0x4421('0xb2')]];var _0x2c1abf=new Hangup(_0x4d881d,_0x5f06d2);_0x2c1abf[_0x4421('0xa6')]=0x13;_0x2c1abf[_0x4421('0xa7')]=_0x4421('0xed');_0x2c1abf['membername']=_0x4421('0xe8');_0x2c1abf[_0x4421('0xee')]+=0x1;_0x2c1abf[_0x4421('0xef')]+=0x1;_0x2c1abf['amd']=!![];ami[_0x4421('0x4f')](_0x4421('0xe9'),ut[_0x4421('0xf0')](_0x2c1abf,_0x4421('0xea')));_0x44e643[_0x4421('0xca')](_0x2c1abf)[_0x4421('0xb0')](loggerCatch(_0x4421('0xf1')));if(_0x2c1abf[_0x4421('0xf2')]+_0x2c1abf[_0x4421('0xf3')]+_0x2c1abf[_0x4421('0x104')]+_0x2c1abf[_0x4421('0xf4')]+_0x2c1abf[_0x4421('0xf5')]+_0x2c1abf['countabandonedretry']+_0x2c1abf[_0x4421('0xee')]+_0x2c1abf[_0x4421('0xf6')]>=_0xe3a5c2['dialGlobalMaxRetry']){_0x44e643[_0x4421('0xf8')](_0x2c1abf,_0xfa56c2,_0x448d3b,'reason19\x20machine....');}else{if(_0x2c1abf[_0x4421('0xee')]>=_0xe3a5c2[_0x4421('0xfa')]){_0x44e643[_0x4421('0x105')](_0x2c1abf,_0xfa56c2,_0x448d3b,'reason\x2019\x20machine....');}else{_0x44e643[_0x4421('0xbf')]({'active':![],'countmachineretry':_0x2c1abf[_0x4421('0xee')],'scheduledat':moment()[_0x4421('0xfc')](_0xe3a5c2['dialMachineRetryFrequency'],'minutes')[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x2c1abf[_0x4421('0xd2')],'ListId':_0x2c1abf[_0x4421('0xd3')],'VoiceQueueId':_0x2c1abf[_0x4421('0xff')]||undefined,'CampaignId':_0x2c1abf[_0x4421('0xd5')]||undefined})['catch'](loggerCatch(_0x4421('0x100')));_0xfa56c2({'reschedule':0x1});}}});}}};Dialer[_0x4421('0x1b')][_0x4421('0x106')]=function(_0x56b556){var _0x375b06=this['uniqueId'][_0x56b556[_0x4421('0xdd')]];var _0x5f1306=this;var _0x5ed09d;if(_0x375b06&&_0x375b06[_0x4421('0x50')]==='ivr'){delete this[_0x4421('0x25')][_0x56b556[_0x4421('0xdd')]];this[_0x4421('0xb4')](this[_0x4421('0x1e')][_0x375b06[_0x4421('0xb2')]]);this[_0x4421('0x1e')][_0x375b06['queue']]['ivrAnswerCallsDay']+=0x1;_0x5ed09d=new Hangup(_0x375b06,_0x56b556);this[_0x4421('0xca')](_0x5ed09d)[_0x4421('0xb0')](loggerCatch(_0x4421('0x107')));this[_0x4421('0xc9')](_0x5ed09d)[_0x4421('0xb0')](loggerCatch('[syncHangupIvr]'));}if(_0x375b06&&_0x375b06['type']!==_0x4421('0x7a')&&isNotNull(this[_0x4421('0xb1')][_0x375b06['queue']][_0x4421('0x108')])){delete this[_0x4421('0x25')][_0x56b556['uniqueid']];this[_0x4421('0xb4')](this[_0x4421('0xb1')][_0x375b06['queue']]);this[_0x4421('0xb1')][_0x375b06[_0x4421('0xb2')]]['outboundAnswerCallsDay']+=0x1;this[_0x4421('0xb1')][_0x375b06['queue']][_0x4421('0xe5')]+=0x1;_0x5ed09d=new Hangup(_0x375b06,_0x56b556);_0x5ed09d[_0x4421('0xa6')]=0x10;_0x5ed09d[_0x4421('0xa7')]=_0x4421('0x109');_0x5ed09d[_0x4421('0xe7')]='AGI';this[_0x4421('0xca')](_0x5ed09d)['catch'](loggerCatch(_0x4421('0x107')));this[_0x4421('0xc9')](_0x5ed09d)[_0x4421('0xb0')](loggerCatch(_0x4421('0x10a')));}if(_0x375b06&&_0x375b06[_0x4421('0x50')]!==_0x4421('0x7a')&&!isNotNull(this['voiceQueues'][_0x375b06['queue']][_0x4421('0x108')])){delete this['uniqueId'][_0x56b556[_0x4421('0xdd')]];this[_0x4421('0xb4')](this['voiceQueues'][_0x375b06[_0x4421('0xb2')]]);this['voiceQueues'][_0x375b06['queue']][_0x4421('0x68')]+=0x1;_0x5ed09d=new Hangup(_0x375b06,_0x56b556);_0x5ed09d[_0x4421('0xa6')]=0xc;_0x5ed09d[_0x4421('0xa7')]=_0x56b556[_0x4421('0x10b')];_0x5ed09d[_0x4421('0xe7')]=_0x4421('0x10c');this['createHistory'](_0x5ed09d)[_0x4421('0xb0')](loggerCatch(_0x4421('0x107')));this[_0x4421('0xc9')](_0x5ed09d)[_0x4421('0xb0')](loggerCatch(_0x4421('0x10a')));}};Dialer[_0x4421('0x1b')][_0x4421('0x34')]=function(_0x5d5f7e){var _0x8431ed=this['uniqueId'][_0x5d5f7e[_0x4421('0xdd')]];var _0x397f79=this;if(this[_0x4421('0xb1')][_0x5d5f7e[_0x4421('0xb2')]]){if(_0x8431ed&&_0x8431ed[_0x4421('0x50')]!=='ivr'){delete this[_0x4421('0x25')][_0x5d5f7e[_0x4421('0xdd')]];this[_0x4421('0xb1')][_0x5d5f7e[_0x4421('0xb2')]][_0x4421('0xe4')]+=0x1;var _0x273542=new AgentComplete(_0x8431ed,_0x5d5f7e);if(_0x5d5f7e[_0x4421('0x10d')]===_0x4421('0x10e')){_0x273542[_0x4421('0x10f')]=this[_0x4421('0xb1')][_0x5d5f7e[_0x4421('0xb2')]]['dialQueueProject2']&&this[_0x4421('0xb1')][_0x5d5f7e['queue']][_0x4421('0x110')]?moment()[_0x4421('0x77')](_0x4421('0xfe')):undefined;}this['createHistory'](_0x273542)[_0x4421('0xb0')](loggerCatch(_0x4421('0x111')));this[_0x4421('0xc9')](_0x273542)[_0x4421('0xb0')](loggerCatch(_0x4421('0x112')));}}};Dialer[_0x4421('0x1b')]['syncAgentConnect']=function(_0x379fd7){if(this[_0x4421('0xb1')][_0x379fd7['queue']]){if(this[_0x4421('0x25')][_0x379fd7[_0x4421('0xdd')]]&&this['uniqueId'][_0x379fd7['uniqueid']]['type']!==_0x4421('0x7a')){this[_0x4421('0xb4')](this['voiceQueues'][_0x379fd7[_0x4421('0xb2')]]);this[_0x4421('0x25')][_0x379fd7['uniqueid']][_0x4421('0x113')]=moment()['format'](_0x4421('0xfe'));}}};Dialer[_0x4421('0x1b')][_0x4421('0x114')]=function(_0x41db72){this[_0x4421('0xca')](_0x41db72)[_0x4421('0xb0')](loggerCatch(_0x4421('0x111')));this['moveContactManagedDialer'](_0x41db72)['catch'](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer['prototype'][_0x4421('0x30')]=function(_0x161c8b){var _0x530815=this['uniqueId'][_0x161c8b[_0x4421('0xdd')]];var _0x2c50b8=this;if(this['voiceQueues'][_0x161c8b[_0x4421('0xb2')]]){if(_0x530815&&_0x530815['type']!=='ivr'){delete this['uniqueId'][_0x161c8b[_0x4421('0xdd')]];this[_0x4421('0xb4')](this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]]);_0x530815[_0x4421('0x115')]=moment()[_0x4421('0x77')](_0x4421('0xfe'));var _0x5475b8=new QueueCallerAbandon(_0x530815,_0x161c8b);if(getSeconds(_0x530815[_0x4421('0x115')],_0x530815[_0x4421('0x116')])>=_0x530815[_0x4421('0x117')]){this[_0x4421('0xb1')][_0x161c8b['queue']][_0x4421('0x6b')]+=0x1;this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]]['outboundDropCallsDayTimeout']+=0x1;this[_0x4421('0xb1')][_0x161c8b['queue']][_0x4421('0x118')]+=0x1;_0x5475b8[_0x4421('0xa6')]=0xa;_0x5475b8[_0x4421('0xa7')]=_0x4421('0x119');_0x5475b8[_0x4421('0x11a')]=_0x4421('0x11b');_0x5475b8[_0x4421('0x10f')]=this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x11c')]?moment()['format'](_0x4421('0xfe')):undefined;_0x5475b8[_0x4421('0xf5')]+=0x1;_0x5475b8['countglobal']+=0x1;if(_0x5475b8[_0x4421('0xf5')]>=this['voiceQueues'][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x11d')]){this[_0x4421('0x114')](_0x5475b8);}else{this[_0x4421('0xbf')]({'active':![],'countdropretry':_0x5475b8['countdropretry'],'scheduledat':moment()[_0x4421('0xfc')](this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x11e')],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x530815['ContactId'],'ListId':_0x530815[_0x4421('0xd3')],'VoiceQueueId':_0x530815['VoiceQueueId']||undefined,'CampaignId':_0x530815['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][Drop]'));var _0x4b1e17=new History(_0x5475b8);_0x4b1e17[_0x4421('0xa6')]=0xa;_0x4b1e17[_0x4421('0xa7')]=_0x4421('0x119');_0x4b1e17[_0x4421('0xa9')]=moment()[_0x4421('0x77')]('YYYY-MM-DD\x20HH:mm:ss');_0x4b1e17[_0x4421('0xa8')]=_0x4b1e17[_0x4421('0xa9')];_0x4b1e17[_0x4421('0x11f')]=_0x5475b8[_0x4421('0x11f')];_0x4b1e17[_0x4421('0x120')]=_0x5475b8[_0x4421('0x120')];this['createHistory'](_0x4b1e17)[_0x4421('0xb0')](loggerCatch(_0x4421('0x121')));}}else{this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x80')]+=0x1;this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x64')]+=0x1;_0x5475b8[_0x4421('0xa6')]=0xb;_0x5475b8[_0x4421('0xa7')]=_0x4421('0x122');_0x5475b8[_0x4421('0x11a')]=_0x4421('0x123');_0x5475b8[_0x4421('0x124')]+=0x1;_0x5475b8['countglobal']+=0x1;if(_0x5475b8[_0x4421('0x124')]>=this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]][_0x4421('0x125')]){this[_0x4421('0x114')](_0x5475b8);}else{this['rescheduleContact']({'active':![],'countabandonedretry':_0x5475b8['countabandonedretry'],'scheduledat':moment()['add'](this[_0x4421('0xb1')][_0x161c8b[_0x4421('0xb2')]]['dialAbandonedRetryFrequency'],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x530815[_0x4421('0xd2')],'ListId':_0x530815[_0x4421('0xd3')],'VoiceQueueId':_0x530815[_0x4421('0xff')]||undefined,'CampaignId':_0x530815[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x126')));var _0x4b1e17=new History(_0x5475b8);_0x4b1e17[_0x4421('0xa6')]=0xb;_0x4b1e17[_0x4421('0xa7')]=_0x4421('0x122');_0x4b1e17[_0x4421('0xa9')]=moment()[_0x4421('0x77')](_0x4421('0xfe'));_0x4b1e17['endtime']=_0x4b1e17[_0x4421('0xa9')];_0x4b1e17['calleridname']=_0x5475b8[_0x4421('0x11f')];_0x4b1e17[_0x4421('0x120')]=_0x5475b8[_0x4421('0x120')];this[_0x4421('0xca')](_0x4b1e17)[_0x4421('0xb0')](loggerCatch(_0x4421('0x127')));}}}}};Dialer['prototype'][_0x4421('0x37')]=function(_0x2fe996){if(this[_0x4421('0x23')][_0x2fe996[_0x4421('0xdd')]]){this[_0x4421('0x23')][_0x2fe996['uniqueid']][_0x4421('0xaf')]=_0x2fe996['channel'];}if(this['uniqueId'][_0x2fe996[_0x4421('0xdd')]]){this['uniqueId'][_0x2fe996['uniqueid']][_0x4421('0xaf')]=_0x2fe996['channel'];}};Dialer[_0x4421('0x1b')][_0x4421('0x3b')]=function(_0xd98cab){if(strategy[this[_0x4421('0xb1')][this[_0x4421('0x23')][_0xd98cab['actionid']]['queue']][_0x4421('0x52')]]===_0x4421('0x1a')){if(this[_0x4421('0x23')][_0xd98cab['actionid']]&&_[_0x4421('0xde')](this[_0x4421('0x23')][_0xd98cab['actionid']][_0x4421('0x128')])&&_0xd98cab[_0x4421('0xae')]==='1'&&_0xd98cab['paused']==='0'){if(this[_0x4421('0x1f')][_0xd98cab[_0x4421('0x129')]]){if(!this['agents'][_0xd98cab['stateinterface']][_0x4421('0x128')]){this[_0x4421('0x1f')][_0xd98cab[_0x4421('0x129')]][_0x4421('0x128')]=!![];this[_0x4421('0x23')][_0xd98cab[_0x4421('0x12a')]]['locked']=!![];this['actions'][_0xd98cab['actionid']]['stateinterface']=_0xd98cab[_0x4421('0x129')];}}}}else if((strategy[this[_0x4421('0xb1')][this[_0x4421('0x23')][_0xd98cab[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x52')]]||_0x4421('0x19'))==='rrmemory'){if(this[_0x4421('0x23')][_0xd98cab[_0x4421('0x12a')]]){if(this[_0x4421('0x1f')][_0xd98cab[_0x4421('0x129')]]){this[_0x4421('0x23')][_0xd98cab[_0x4421('0x12a')]][_0x4421('0x129')]=_0xd98cab[_0x4421('0x129')];if(_[_0x4421('0xde')](this['queueBooked'][this[_0x4421('0x23')][_0xd98cab['actionid']][_0x4421('0xb2')]])){this['queueBooked'][this['actions'][_0xd98cab[_0x4421('0x12a')]][_0x4421('0xb2')]]=[];}this['queueBooked'][this['actions'][_0xd98cab[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x12b')](_[_0x4421('0x12c')](_[_0x4421('0xd1')](this[_0x4421('0x23')][_0xd98cab[_0x4421('0x12a')]],[_0x4421('0x12d'),'stateinterface']),{'status':_0xd98cab['status'],'paused':_0xd98cab[_0x4421('0x12e')]}));}}}};function unlockQueueStatus(_0x3e1ab3,_0x513dea){setTimeout(function(){if(_[_0x4421('0x40')](_0x3e1ab3[_0x4421('0x12f')])){loggerBooked[_0x4421('0x94')]('[unlockQueueStatus][undefined]',_0x513dea);}_0x3e1ab3['queueStatusComplete']=!![];loggerBooked[_0x4421('0x7e')](_0x4421('0x130'),_0x513dea,JSON[_0x4421('0x4c')](_['pick'](_0x3e1ab3,['name','queueStatusComplete'])));},0x1f3);}Dialer[_0x4421('0x1b')][_0x4421('0x3d')]=function(_0x326669){var _0x14e636=this;var _0x3753e0=_0x14e636[_0x4421('0xb1')][_0x14e636[_0x4421('0x23')][_0x326669['actionid']][_0x4421('0xb2')]];if(strategy[this['voiceQueues'][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]['strategy']]==='roundrobin'){if(this[_0x4421('0x23')][_0x326669['actionid']]&&this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0x129')]){this[_0x4421('0x8f')]['run'](this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0x12d')],this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]['stateinterface'])[_0x4421('0xb0')](function(_0x18139e){logger[_0x4421('0x94')](_0x4421('0x131'),util[_0x4421('0x93')](_0x18139e,{'showHidden':![],'depth':null}));})['finally'](function(){_0x14e636[_0x4421('0xb4')](_0x14e636[_0x4421('0xb1')][_0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]['queue']]);_0x14e636[_0x4421('0x1f')][_0x14e636['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0x129')]][_0x4421('0x128')]=![];delete _0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]];unlockQueueStatus(_0x3753e0);});}else{this[_0x4421('0xb4')](this[_0x4421('0xb1')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]);this[_0x4421('0xbf')]({'active':![],'ContactId':this['actions'][_0x326669['actionid']][_0x4421('0xd2')],'ListId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd3')],'VoiceQueueId':this['actions'][_0x326669['actionid']][_0x4421('0xff')]||undefined,'CampaignId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x132')));delete this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]];unlockQueueStatus(_0x3753e0);}}else if((strategy[this[_0x4421('0xb1')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x52')]]||_0x4421('0x19'))==='rrmemory'){var _0xa710ff;if(this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]&&!_[_0x4421('0x49')](this['queueBooked'][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]])){if(this[_0x4421('0x2b')][_0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]){this['queueBookedRR'][_0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]=this[_0x4421('0x2b')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]?this[_0x4421('0x2b')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]:this['queueBooked'][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]?this[_0x4421('0x2a')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x133')]||0x0:0x0;}this[_0x4421('0x2a')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x133')]=this[_0x4421('0x2b')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]['queue']];for(var _0x2a1d28=0x0;_0x2a1d28<this[_0x4421('0x2a')][this[_0x4421('0x23')][_0x326669['actionid']][_0x4421('0xb2')]][_0x4421('0x96')];_0x2a1d28+=0x1){_0xa710ff=rr(this['queueBooked'][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]);this[_0x4421('0x2b')][_0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]['queue']]=this[_0x4421('0x2a')][this['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]][_0x4421('0x133')];if(_0xa710ff[_0x4421('0xae')]==='1'&&_0xa710ff[_0x4421('0x12e')]==='0'){break;}}if(!_[_0x4421('0xde')](_0xa710ff)){this[_0x4421('0x1f')][_0xa710ff[_0x4421('0x129')]]['unlockRR']=_['isUndefined'](this[_0x4421('0x1f')][_0xa710ff['stateinterface']][_0x4421('0x134')])?!![]:this[_0x4421('0x1f')][_0xa710ff['stateinterface']]['unlockRR'];}loggerBooked[_0x4421('0x7e')](_0x4421('0x135'),_0x326669[_0x4421('0x12a')],_0x4421('0x136'),JSON['stringify'](_[_0x4421('0xd1')](this['agents'][_0xa710ff[_0x4421('0x129')]],[_0x4421('0x43'),_0x4421('0x134')])),'contactAgent-idHopper:\x20',JSON[_0x4421('0x4c')](_0xa710ff[_0x4421('0x12d')]));if(!_['isNil'](_0xa710ff)&&_0xa710ff['status']==='1'&&_0xa710ff[_0x4421('0x12e')]==='0'&&this[_0x4421('0x1f')][_0xa710ff[_0x4421('0x129')]][_0x4421('0x134')]){this[_0x4421('0x1f')][_0xa710ff[_0x4421('0x129')]][_0x4421('0x134')]=![];this[_0x4421('0x2a')][_0x14e636['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]=[];this[_0x4421('0x8f')][_0x4421('0x137')](_0xa710ff[_0x4421('0x12d')],_0xa710ff[_0x4421('0x129')])[_0x4421('0xb0')](function(_0x461b9a){logger[_0x4421('0x94')](_0x4421('0x131'),util[_0x4421('0x93')](_0x461b9a,{'showHidden':![],'depth':null}));})['finally'](function(){_0x14e636['updateOriginated'](_0x14e636['voiceQueues'][_0x14e636['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]);setTimeout(function(){_0x14e636[_0x4421('0x1f')][_0xa710ff[_0x4421('0x129')]][_0x4421('0x134')]=!![];loggerBooked[_0x4421('0x7e')](_0x4421('0x138'),_0x326669['actionid'],_0x4421('0x136'),JSON[_0x4421('0x4c')](_[_0x4421('0xd1')](_0x14e636[_0x4421('0x1f')][_0xa710ff[_0x4421('0x129')]],[_0x4421('0x43'),_0x4421('0x134')])),'contactAgent-idHopper:\x20',JSON['stringify'](_0xa710ff[_0x4421('0x12d')]));},0xc7);delete _0x14e636[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]];unlockQueueStatus(_0x3753e0,_0x326669[_0x4421('0x12a')]);});}else{loggerBooked[_0x4421('0x7e')](_0x4421('0x139'));this[_0x4421('0xb4')](this[_0x4421('0xb1')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]]['queue']]);this[_0x4421('0xbf')]({'active':![],'ContactId':this['actions'][_0x326669['actionid']][_0x4421('0xd2')],'ListId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd3')],'VoiceQueueId':this['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0xff')]||undefined,'CampaignId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd5')]||undefined})['catch'](loggerCatch(_0x4421('0x132')));delete this[_0x4421('0x23')][_0x326669['actionid']];unlockQueueStatus(_0x3753e0);}}else{loggerBooked['info'](_0x4421('0x13a'));this[_0x4421('0xb4')](this[_0x4421('0xb1')][this[_0x4421('0x23')][_0x326669['actionid']][_0x4421('0xb2')]]);this[_0x4421('0xbf')]({'active':![],'ContactId':this['actions'][_0x326669[_0x4421('0x12a')]][_0x4421('0xd2')],'ListId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd3')],'VoiceQueueId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xff')]||undefined,'CampaignId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x13b')));delete this['actions'][_0x326669[_0x4421('0x12a')]];unlockQueueStatus(_0x3753e0);}}else{loggerBooked[_0x4421('0x7e')](_0x4421('0x13c'));this[_0x4421('0xb4')](this[_0x4421('0xb1')][this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xb2')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd2')],'ListId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd3')],'VoiceQueueId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xff')]||undefined,'CampaignId':this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]][_0x4421('0xd5')]||undefined})['catch'](loggerCatch(_0x4421('0x13d')));delete this[_0x4421('0x23')][_0x326669[_0x4421('0x12a')]];unlockQueueStatus(_0x3753e0);}};Dialer[_0x4421('0x1b')][_0x4421('0x3e')]=function(){var _0x4f3617=this;return BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](cmHopper[_0x4421('0x13e')]({}))[_0x4421('0xb9')](function(){setInterval(function(){_0x4f3617[_0x4421('0x13f')]();},0x3e8);});};Dialer[_0x4421('0x1b')]['checkIsTrunkReachable']=function(_0x575354){var _0x23edf1=this;return function(){if(!_0x23edf1[_0x4421('0xd9')](_0x575354[_0x4421('0x73')])){if(!_0x23edf1[_0x4421('0xd9')](_0x575354['TrunkBackup'])){_0x575354['message']=_0x4421('0x140');throw _0x575354[_0x4421('0x43')]+_0x4421('0x141');}}};};Dialer[_0x4421('0x1b')][_0x4421('0x142')]=function(_0x579b51,_0x533c34,_0x38e22c,_0xc6504c){var _0x3f3dbc=this;return function(){var _0x2aea2f=!![];return _0x3f3dbc['ifTime'](_0x579b51,_0x533c34,_0x38e22c,_0xc6504c,_0x2aea2f);};};Dialer['prototype'][_0x4421('0x143')]=function(_0x42089b,_0x345a6b,_0x1fcb8c,_0xd30996){var _0x56a6c2=this;return function(){var _0x33bf7c=![];return _0x56a6c2[_0x4421('0x144')](_0x42089b[_0x4421('0x48')],_0x345a6b,_0x1fcb8c,_0xd30996,_0x33bf7c);};};Dialer['prototype'][_0x4421('0x144')]=function(_0xd8eec1,_0x4e8b52,_0xae9321,_0x172b3c,_0x9d19ad){var _0x4b440e=[];return new BPromise(function(_0xed5881,_0x968ee1){if(!isNotNull(_0xd8eec1)){_0x172b3c['message']=_0x4421('0x145');return _0x968ee1(msgResponse(_0x4421('0x144'),'Failure',_0xae9321+_0x4421('0x146')));}if(_[_0x4421('0x49')](_0xd8eec1)){_0x172b3c[_0x4421('0x41')]=_0x4421('0x147');return _0x968ee1(msgResponse(_0x4421('0x144'),_0x4421('0x148'),_0xae9321+_0x4421('0x149')));}if(_0x4e8b52&&_[_0x4421('0x40')](config[_0x4421('0x14a')][_0x4e8b52])){_0x172b3c[_0x4421('0x41')]=_0x4421('0x14b');return _0x968ee1(msgResponse(_0x4421('0x144'),'Failure',_0xae9321+_0x4421('0x14c')+_0x4e8b52));}if(_[_0x4421('0x14d')](_0xd8eec1)){for(var _0x10ea0b=0x0;_0x10ea0b<_0xd8eec1[_0x4421('0x96')];_0x10ea0b+=0x1){_0x4b440e['push'](ami[_0x4421('0xad')]({'action':_0x4421('0x14e'),'command':util[_0x4421('0x77')]('iftime\x20%s,%s',_0xd8eec1[_0x10ea0b]['interval'],!_['isUndefined'](config['timezones'][_0x4e8b52])?_0x4e8b52:'')})['then'](function(_0x51a305){return _0x51a305['content'][_0x4421('0x14f')]('true')>=0x0;})[_0x4421('0xb0')](myreject(_0x968ee1)));}}else{_0x4b440e[_0x4421('0x12b')](ami[_0x4421('0xad')]({'action':'command','command':util[_0x4421('0x77')](_0x4421('0x150'),_0xd8eec1,!_[_0x4421('0x40')](config[_0x4421('0x14a')][_0x4e8b52])?_0x4e8b52:'')})['then'](function(_0x42cebc){return _0x42cebc['content'][_0x4421('0x14f')](_0x4421('0x151'))>=0x0;})[_0x4421('0xb0')](myreject(_0x968ee1)));}BPromise[_0x4421('0x152')](_0x4b440e)[_0x4421('0xb9')](function(_0x8f2460){var _0x3fbb39=_['some'](_0x8f2460);if(_0x3fbb39){return _0xed5881(_0x3fbb39);}else{_0x172b3c['message']=_0x9d19ad?_0x4421('0x153'):'INTERVAL_IS_OVERTIME';return _0x968ee1(msgResponse('[ifTime][promiseAll]',_0x4421('0x148'),'Global:\x20'+_0x9d19ad+'\x20'+_0xae9321+_0x4421('0x154')+util[_0x4421('0x93')](_0xd8eec1,{'showHidden':![],'depth':null})+_0x4421('0x155')+_0x4e8b52));}})[_0x4421('0xb0')](function(_0x49ae85){return _0x968ee1(msgResponse(_0x4421('0x144'),_0x4421('0x148'),JSON[_0x4421('0x4c')](_0x49ae85)));});});};Dialer[_0x4421('0x1b')][_0x4421('0x156')]=function(_0x3317e5){var _0x513e12=this;return function(){switch(_0x3317e5[_0x4421('0x5d')]){case _0x4421('0x157'):freeVariablesPredictive(_0x3317e5);_0x513e12[_0x4421('0x158')](_0x3317e5,0x1);break;case _0x4421('0x159'):freeVariablesPredictive(_0x3317e5);_0x513e12[_0x4421('0x158')](_0x3317e5,_0x3317e5[_0x4421('0x15a')]);break;case _0x4421('0xa'):_0x513e12[_0x4421('0xa')](_0x3317e5);break;case _0x4421('0x9'):freeVariablesPredictive(_0x3317e5);_0x513e12['handlePower'](_0x3317e5,0x1);break;default:freeVariablesPredictive(_0x3317e5);logger[_0x4421('0x94')](_0x4421('0x15b'),_0x3317e5['name'],'method\x20not\x20recognized');}};};Dialer[_0x4421('0x1b')][_0x4421('0x15c')]=function(_0x3612db){var _0x394a4b=this;return function(){_0x394a4b[_0x4421('0x15d')](_0x3612db);};};Dialer[_0x4421('0x1b')][_0x4421('0xc')]=function(_0x33f85f){var _0x1b172f=this;if(isNotPreview(_0x33f85f[_0x4421('0x5d')])){if(isVoiceQueueOutbound(_0x33f85f[_0x4421('0x50')])&&isActive(_0x33f85f['dialActive'])){_0x33f85f[_0x4421('0xa0')]=!![];BPromise[_0x4421('0xb7')]()[_0x4421('0xb9')](checkIsLoggedIn(_0x33f85f,_0x33f85f['loggedIn']))['then'](checkIsActive(_0x33f85f,_0x33f85f[_0x4421('0x15e')]))[_0x4421('0xb9')](checkInterval(_0x33f85f))['then'](_0x1b172f['checkIsTrunkReachable'](_0x33f85f))[_0x4421('0xb9')](_0x1b172f[_0x4421('0x142')](_0x33f85f[_0x4421('0x15f')],_0x33f85f['dialTimezone'],_0x33f85f[_0x4421('0x43')],_0x33f85f))[_0x4421('0xb9')](_0x1b172f[_0x4421('0x143')](_0x33f85f[_0x4421('0x4a')],_0x33f85f['dialTimezone'],_0x33f85f[_0x4421('0x43')],_0x33f85f))[_0x4421('0xb9')](_0x1b172f['checkDialMethod'](_0x33f85f))[_0x4421('0xb0')](loggerCatchQueueSummary(_0x4421('0x160'),_0x33f85f));}else{notSendMessagesQueue(_0x33f85f);}}else{freeVariablesPredictive(_0x33f85f);}};Dialer[_0x4421('0x1b')][_0x4421('0x13f')]=function(){var _0x51d3e8=this;var _0x1c10e6;for(var _0x38d41a in this[_0x4421('0x1e')]){if(typeof this['campaigns'][_0x38d41a]!=='undefined'){_0x1c10e6=this['campaigns'][_0x38d41a];if(isCampaignIvr(_0x1c10e6[_0x4421('0x50')])&&isActive(_0x1c10e6[_0x4421('0x74')])){_0x1c10e6[_0x4421('0xa0')]=!![];BPromise['resolve']()[_0x4421('0xb9')](checkIsActive(_0x1c10e6,_0x1c10e6[_0x4421('0x74')]))[_0x4421('0xb9')](checkInterval(_0x1c10e6))[_0x4421('0xb9')](_0x51d3e8[_0x4421('0x161')](_0x1c10e6))[_0x4421('0xb9')](_0x51d3e8[_0x4421('0x142')](_0x1c10e6[_0x4421('0x15f')],_0x1c10e6[_0x4421('0x162')],_0x1c10e6[_0x4421('0x43')],_0x1c10e6))[_0x4421('0xb9')](_0x51d3e8[_0x4421('0x143')](_0x1c10e6[_0x4421('0x4a')],_0x1c10e6[_0x4421('0x162')],_0x1c10e6[_0x4421('0x43')],_0x1c10e6))[_0x4421('0xb9')](_0x51d3e8['launchHandleIvr'](_0x1c10e6))[_0x4421('0xb0')](loggerCatchQueueSummary(_0x4421('0x163'),_0x1c10e6));}else{notSendMessagesCampaign(_0x1c10e6);}}}};function getCallerIdRandom(_0x5744e0,_0x5d473b){var _0x52e6cd;var _0x58e7c6;var _0x2e34d3;if(_0x5d473b<=0x0){_0x5d473b=0x1;}_0x52e6cd=new RegExp(_0x4421('0x164')+_0x5d473b+'}$');_0x58e7c6=Math[_0x4421('0x165')](0xa,_0x5d473b-0x1);_0x2e34d3=Math[_0x4421('0x165')](0xa,_0x5d473b)-0x1;return util[_0x4421('0x77')]('%s',_['replace'](_0x5744e0,_0x52e6cd,_['random'](_0x58e7c6,_0x2e34d3)));}function extractCalleridName(_0x3e2d3a){var _0x49822f=_0x3e2d3a['match'](/"(.*?)"/);return _0x49822f?_0x49822f[0x1]:_0x3e2d3a;}function extractCalleridNumber(_0x3a40a6){var _0x576dbe=_0x3a40a6[_0x4421('0x166')](/<(.*?)>/);return _0x576dbe?_0x576dbe[0x1]:_0x3a40a6;}Dialer[_0x4421('0x1b')][_0x4421('0x167')]=function(_0x14f6c8,_0x5231dc){var _0x2ff5b7=this;var _0x2530cd=uuid['v4']();this[_0x4421('0x23')][_0x2530cd]=new Action(_0x14f6c8,_0x5231dc,_0x2530cd);return new BPromise(function(_0x43e3c9,_0x4602bc){if(_[_0x4421('0x40')](_0x14f6c8)&&typeof _0x14f6c8!=='object'){return _0x4602bc(msgResponse(_0x4421('0x168'),_0x4421('0x148'),_0x4421('0x169')));}if(_[_0x4421('0x40')](_0x5231dc[_0x4421('0x16a')][_0x4421('0x16b')])||_0x5231dc[_0x4421('0x16a')][_0x4421('0x16b')]===null){return _0x4602bc(msgResponse(_0x4421('0x168'),_0x4421('0x148'),_0x4421('0x16c')));}var _0x12f5d2={'XMD-CALLERID':_0x2ff5b7['actions'][_0x2530cd][_0x4421('0x16d')](),'XMD-AGI':_0x14f6c8[_0x4421('0x108')]?util[_0x4421('0x77')](_0x4421('0x16e'),ipAgi,_0x14f6c8[_0x4421('0x108')]):_0x4421('0x16f'),'XMD-AGIAFTER':_0x14f6c8[_0x4421('0x11c')]?util[_0x4421('0x77')]('\x22agi://%s/square,%s\x22',ipAgi,_0x14f6c8[_0x4421('0x11c')]):_0x4421('0x16f'),'XMD-QUEUE':_0x14f6c8[_0x4421('0x50')]===_0x4421('0x51')?util[_0x4421('0x77')]('\x22%s,%s%s,,,%s\x22',_0x14f6c8[_0x4421('0x43')],_0x14f6c8[_0x4421('0x170')]||'',_0x14f6c8[_0x4421('0x110')]?'c':'',_0x14f6c8[_0x4421('0x117')]||0x3):'NONE','XMD-CONTACTID':_0x5231dc[_0x4421('0xd2')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x2ff5b7['actions'][_0x2530cd][_0x4421('0x16d')](),'XMD-AMD':_0x14f6c8[_0x4421('0xe2')]?_0x4421('0x171'):'NONE','XMD-DESTINATION':_0x4421('0xe1')};if(_0x14f6c8[_0x4421('0xe2')]){_0x12f5d2[_0x4421('0x172')]=_0x14f6c8[_0x4421('0x173')]||0x9c4;_0x12f5d2[_0x4421('0x174')]=_0x14f6c8[_0x4421('0x175')]||0x5dc;_0x12f5d2['XMD-AMDAFTERGREETINGSILENCE']=_0x14f6c8[_0x4421('0x176')]||0x320;_0x12f5d2[_0x4421('0x177')]=_0x14f6c8[_0x4421('0x178')]||0x1388;_0x12f5d2[_0x4421('0x179')]=_0x14f6c8[_0x4421('0x17a')]||0x64;_0x12f5d2['XMD-AMDBETWEENWORDSSILENCE']=_0x14f6c8[_0x4421('0x17b')]||0x32;_0x12f5d2[_0x4421('0x17c')]=_0x14f6c8['dialAMDMaximumNumberOfWords']||0x3;_0x12f5d2[_0x4421('0x17d')]=_0x14f6c8[_0x4421('0x17e')]||0x100;_0x12f5d2['XMD-AMDMAXIMUMWORDLENGTH']=_0x14f6c8['dialAMDMaximumWordLength']||0x1388;}if(_0x14f6c8[_0x4421('0x50')]===_0x4421('0x51')){_0x12f5d2[_0x4421('0x17f')]=_0x5231dc[_0x4421('0xff')];}else{_0x12f5d2['XMD-CAMPAIGNID']=_0x5231dc['CampaignId'];}for(var _0x63bc4 in _0x5231dc[_0x4421('0x16a')]){if(typeof _0x5231dc[_0x4421('0x16a')][_0x63bc4]!==_0x4421('0x98')){if(isNotNull(_0x5231dc[_0x4421('0x16a')][_0x63bc4])&&_0x63bc4!=='id'&&_0x63bc4!==_0x4421('0x180')&&_0x63bc4!=='createdAt'&&_0x63bc4!==_0x4421('0x181')){_0x12f5d2[util[_0x4421('0x77')](_0x4421('0x182'),_0x4421('0x183'),_['toUpper'](_0x63bc4))]=_0x5231dc[_0x4421('0x16a')][_0x63bc4];}}}var _0x31db5b=_0x2ff5b7['isTrunkReachable'](_0x14f6c8['Trunk'])?getCallerId(_0x14f6c8['Trunk'][_0x4421('0x75')],_0x14f6c8[_0x4421('0x5e')],_0x14f6c8[_0x4421('0x184')]>0x0?getCallerIdRandom(_0x14f6c8['dialOriginateCallerIdNumber'],_0x14f6c8[_0x4421('0x184')]):_0x14f6c8[_0x4421('0x185')]):getCallerId(_[_0x4421('0xde')](_0x14f6c8[_0x4421('0x186')])?_0x14f6c8[_0x4421('0x73')]['callerid']:_0x14f6c8[_0x4421('0x186')][_0x4421('0x75')],_0x14f6c8[_0x4421('0x5e')],_0x14f6c8[_0x4421('0x184')]>0x0?getCallerIdRandom(_0x14f6c8[_0x4421('0x185')],_0x14f6c8[_0x4421('0x184')]):_0x14f6c8[_0x4421('0x185')]);if(_0x31db5b){_0x12f5d2[_0x4421('0x187')]=_0x2ff5b7[_0x4421('0x23')][_0x2530cd]['originatecalleridname']=extractCalleridName(_0x31db5b);_0x12f5d2[_0x4421('0x188')]=_0x2ff5b7['actions'][_0x2530cd][_0x4421('0x189')]=extractCalleridNumber(_0x31db5b);}return ami['Action']({'actionid':_0x2530cd,'action':_0x4421('0x168'),'channel':_0x2ff5b7[_0x4421('0xd9')](_0x14f6c8[_0x4421('0x73')])?util['format'](_0x4421('0x18a'),_0x14f6c8[_0x4421('0x73')][_0x4421('0x43')],isNotNull(_0x14f6c8[_0x4421('0x60')])?_0x14f6c8[_0x4421('0x60')][_0x4421('0x18b')]()||'':'',_0x14f6c8[_0x4421('0x18c')]>0x0?_0x5231dc['Contact'][_0x4421('0x16b')][_0x4421('0x18d')](_0x14f6c8['dialCutDigit']):_0x5231dc[_0x4421('0x16a')]['phone']):util[_0x4421('0x77')](_0x4421('0x18a'),_['isNil'](_0x14f6c8[_0x4421('0x186')])?_0x14f6c8[_0x4421('0x73')][_0x4421('0x43')]:_0x14f6c8[_0x4421('0x186')][_0x4421('0x43')],isNotNull(_0x14f6c8[_0x4421('0x60')])?_0x14f6c8[_0x4421('0x60')]['trim']()||'':'',_0x14f6c8[_0x4421('0x18c')]>0x0?_0x5231dc[_0x4421('0x16a')]['phone']['substring'](_0x14f6c8[_0x4421('0x18c')]):_0x5231dc['Contact'][_0x4421('0x16b')]),'callerid':_0x31db5b,'Exten':_0x4421('0xe1'),'Context':_0x4421('0x18e'),'Priority':'1','variable':_0x12f5d2,'timeout':(_0x14f6c8[_0x4421('0x5f')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2530cd})[_0x4421('0xb9')](function(_0x53c291){return _0x43e3c9(_0x53c291);})[_0x4421('0xb0')](function(_0x303d69){_0x14f6c8[_0x4421('0x18f')]+=0x1;var _0x326957=new History(_0x2ff5b7['actions'][_0x2530cd]);logger[_0x4421('0x94')](util[_0x4421('0x77')](_0x4421('0x190'),JSON['stringify'](_0x303d69)));_0x326957[_0x4421('0xa6')]=0xe;_0x326957['statedesc']=_0x4421('0x191');_0x326957['starttime']=moment()[_0x4421('0x77')](_0x4421('0xfe'));_0x326957[_0x4421('0xa8')]=_0x326957[_0x4421('0xa9')];_0x2ff5b7[_0x4421('0xca')](_0x326957)[_0x4421('0xb0')](loggerCatch(_0x4421('0x192')));_0x2ff5b7[_0x4421('0xc9')](_0x326957)['catch'](loggerCatch(_0x4421('0x192')))[_0x4421('0x1d')](function(){delete _0x2ff5b7['actions'][_0x2530cd];return _0x4602bc(msgResponse(_0x4421('0x168'),'Error','originate\x20action\x20Error'));});});});};Dialer[_0x4421('0x1b')][_0x4421('0x32')]=function(_0x217bea){var _0x32fd7e=this[_0x4421('0x23')][_0x217bea[_0x4421('0x12a')]];if(_0x32fd7e){delete this[_0x4421('0x23')][_0x217bea[_0x4421('0x12a')]];_0x32fd7e[_0x4421('0x116')]=moment()[_0x4421('0x77')](_0x4421('0xfe'));var _0x3ae29b=_0x32fd7e['type']===_0x4421('0x7a')?this['campaigns'][_0x32fd7e[_0x4421('0xb2')]]:this['voiceQueues'][_0x32fd7e[_0x4421('0x193')]()];if(!this[_0x4421('0xd8')](_0x217bea[_0x4421('0x194')])){this[_0x4421('0xb4')](_0x3ae29b);return this['callProgressDetecting'](_0x32fd7e,_0x3ae29b,_0x217bea)[_0x4421('0xb0')](loggerCatch('[callProgressDetecting]\x20'));}this[_0x4421('0x25')][_0x217bea[_0x4421('0xdd')]]=_0x32fd7e;}};Dialer[_0x4421('0x1b')][_0x4421('0x195')]=function(_0x775711,_0x723cbd,_0x2c2f57){var _0x526676=new History(_0x723cbd);if(_0x526676['countbusyretry']+_0x526676['countcongestionretry']+_0x526676[_0x4421('0x104')]+_0x526676['countnosuchnumberretry']+_0x526676[_0x4421('0xf5')]+_0x526676[_0x4421('0x124')]+_0x526676['countmachineretry']+_0x526676[_0x4421('0xf6')]>=_0x2c2f57[_0x4421('0xf7')]-0x1){return!![];}switch(_0x775711){case 0x3:if(_0x526676[_0x4421('0x104')]>=_0x2c2f57[_0x4421('0x196')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countnoanswerretry':_0x526676['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57[_0x4421('0x197')],_0x4421('0xfd'))['format'](_0x4421('0xfe')),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x198')));break;case 0x5:if(_0x526676[_0x4421('0xf2')]>=_0x2c2f57[_0x4421('0x199')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countbusyretry':_0x526676[_0x4421('0xf2')]+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57[_0x4421('0x19a')],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x19b')));break;case 0x8:if(_0x526676['countcongestionretry']>=_0x2c2f57[_0x4421('0x19c')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countcongestionretry':_0x526676[_0x4421('0xf3')]+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57['dialCongestionRetryFrequency'],_0x4421('0xfd'))['format'](_0x4421('0xfe')),'ContactId':_0x526676['ContactId'],'ListId':_0x526676['ListId'],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x19d')));break;case 0x0:if(_0x526676[_0x4421('0xf4')]>=_0x2c2f57[_0x4421('0x19e')]-0x1){return!![];}else{this[_0x4421('0xbf')]({'active':![],'countnosuchnumberretry':_0x526676['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57[_0x4421('0x19f')],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x1a0')));}break;case 0xa:if(_0x526676[_0x4421('0xf5')]>=_0x2c2f57[_0x4421('0x11d')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countdropretry':_0x526676[_0x4421('0xf5')]+=0x1,'scheduledat':moment()['add'](_0x2c2f57[_0x4421('0x11e')],'minutes')[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x526676[_0x4421('0x124')]>=_0x2c2f57[_0x4421('0x125')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countabandonedretry':_0x526676[_0x4421('0x124')]+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57[_0x4421('0x1a1')],'minutes')[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676['CampaignId']||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x126')));break;case 0x13:if(_0x526676[_0x4421('0xee')]>=_0x2c2f57[_0x4421('0xfa')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x526676[_0x4421('0xee')]+=0x1,'scheduledat':moment()['add'](_0x2c2f57[_0x4421('0x1a2')],_0x4421('0xfd'))[_0x4421('0x77')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x526676[_0x4421('0xd2')],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})['catch'](loggerCatch(_0x4421('0x100')));break;case 0x14:if(_0x526676[_0x4421('0xf6')]>=_0x2c2f57[_0x4421('0x1a3')]-0x1){return!![];}this[_0x4421('0xbf')]({'active':![],'countagentrejectretry':_0x526676[_0x4421('0xf6')]+=0x1,'scheduledat':moment()[_0x4421('0xfc')](_0x2c2f57['dialAgentRejectRetryFrequency'],_0x4421('0xfd'))[_0x4421('0x77')](_0x4421('0xfe')),'ContactId':_0x526676['ContactId'],'ListId':_0x526676[_0x4421('0xd3')],'VoiceQueueId':_0x526676[_0x4421('0xff')]||undefined,'CampaignId':_0x526676[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x1a4')));break;default:return!![];}};Dialer[_0x4421('0x1b')][_0x4421('0x1a5')]=function(_0x59ed14,_0x1a14e7,_0x1fba2a){var _0x12e8ed=this;var _0x1c56a3=new History(_0x59ed14);return new BPromise(function(_0x346335,_0xb393bf){if(_[_0x4421('0x40')](_0x1a14e7)&&typeof _0x1a14e7!==_0x4421('0x1a6')){return _0xb393bf(msgResponse(_0x4421('0x1a7'),_0x4421('0x148'),_0x4421('0x1a8')));}if(_['isUndefined'](_0x1fba2a)&&typeof _0x1fba2a!==_0x4421('0x1a6')){return _0xb393bf(msgResponse(_0x4421('0x1a7'),_0x4421('0x148'),_0x4421('0x1a9')));}switch(_0x1fba2a[_0x4421('0x10d')]){case'0':_0x1a14e7[_0x4421('0x67')]+=0x1;_0x1c56a3[_0x4421('0xa6')]=0x0;_0x1c56a3[_0x4421('0xa7')]='NoSuchNumber';_0x1c56a3[_0x4421('0xf4')]+=0x1;_0x1c56a3[_0x4421('0xef')]+=0x1;ami[_0x4421('0x4f')](_0x4421('0x1aa'),ut[_0x4421('0xf0')](_0x59ed14,'nosuchnumber'));_0x12e8ed['createHistory'](_0x1c56a3)[_0x4421('0xb0')](loggerCatch(_0x4421('0xf1')));if(_0x12e8ed[_0x4421('0x195')](0x0,_0x59ed14,_0x1a14e7)){if(_0x1c56a3[_0x4421('0xf4')]>=_0x1a14e7['dialNoSuchNumberMaxRetry']){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,'reason\x200\x20no\x20such\x20number....');}else{_0x12e8ed[_0x4421('0xf8')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1ab'));}}break;case'3':_0x1a14e7['outboundNoAnswerCallsDay']+=0x1;_0x1c56a3['state']=0x3;_0x1c56a3[_0x4421('0xa7')]=_0x4421('0x1ac');_0x1c56a3[_0x4421('0x104')]+=0x1;_0x1c56a3[_0x4421('0xef')]+=0x1;ami[_0x4421('0x4f')](_0x4421('0x1ad'),ut[_0x4421('0xf0')](_0x59ed14,'noanswer'));_0x12e8ed[_0x4421('0xca')](_0x1c56a3)['catch'](loggerCatch(_0x4421('0x1ae')));if(_0x12e8ed[_0x4421('0x195')](0x3,_0x59ed14,_0x1a14e7)){if(_0x1c56a3['countnoanswerretry']>=_0x1a14e7['dialNoAnswerMaxRetry']){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1af'));}else{_0x12e8ed['stateGlobal'](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1af'));}}break;case'5':_0x1a14e7[_0x4421('0x61')]+=0x1;_0x1c56a3[_0x4421('0xa6')]=0x5;_0x1c56a3[_0x4421('0xa7')]='Busy';_0x1c56a3['countbusyretry']+=0x1;_0x1c56a3[_0x4421('0xef')]+=0x1;ami[_0x4421('0x4f')](_0x4421('0x1b0'),ut[_0x4421('0xf0')](_0x59ed14,_0x4421('0x1b1')));_0x12e8ed[_0x4421('0xca')](_0x1c56a3)['catch'](loggerCatch(_0x4421('0x1b2')));if(_0x12e8ed[_0x4421('0x195')](0x5,_0x59ed14,_0x1a14e7)){if(_0x1c56a3[_0x4421('0xf2')]>=_0x1a14e7['dialBusyMaxRetry']){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,'reason\x205\x20busy');}else{_0x12e8ed['stateGlobal'](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1b3'));}}break;case'8':_0x1a14e7['outboundCongestionCallsDay']+=0x1;_0x1c56a3[_0x4421('0xa6')]=0x8;_0x1c56a3[_0x4421('0xa7')]=_0x4421('0x1b4');_0x1c56a3[_0x4421('0xf3')]+=0x1;_0x1c56a3[_0x4421('0xef')]+=0x1;ami[_0x4421('0x4f')]('custom:agentcongestion',ut[_0x4421('0xf0')](_0x59ed14,_0x4421('0x1b5')));_0x12e8ed['createHistory'](_0x1c56a3)['catch'](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x12e8ed[_0x4421('0x195')](0x8,_0x59ed14,_0x1a14e7)){if(_0x1c56a3['countcongestionretry']>=_0x1a14e7[_0x4421('0x19c')]){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1b6'));}else{_0x12e8ed[_0x4421('0xf8')](_0x1c56a3,_0x346335,_0xb393bf,'reason\x208\x20congestion');}}break;case'11':_0x1a14e7[_0x4421('0x1b7')]+=0x1;_0x1c56a3['state']=0xb;_0x1c56a3[_0x4421('0xa7')]=_0x4421('0x122');_0x1c56a3[_0x4421('0x124')]+=0x1;_0x1c56a3[_0x4421('0xef')]+=0x1;_0x12e8ed['createHistory'](_0x1c56a3)[_0x4421('0xb0')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x12e8ed['checkRetriveMax'](0xb,_0x59ed14,_0x1a14e7)){if(_0x1c56a3[_0x4421('0x124')]>=_0x1a14e7['dialAbandonedMaxRetry']){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1b8'));}else{_0x12e8ed[_0x4421('0xf8')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1b8'));}}break;case'20':_0x1a14e7[_0x4421('0x1b9')]+=0x1;_0x1c56a3[_0x4421('0xa6')]=0x14;_0x1c56a3[_0x4421('0xa7')]=_0x4421('0x1ba');_0x1c56a3[_0x4421('0xf6')]+=0x1;_0x1c56a3['countglobal']+=0x1;ami[_0x4421('0x4f')](_0x4421('0x1bb'),ut['buildObj'](_0x59ed14,_0x4421('0x1bc')));_0x12e8ed['createHistory'](_0x1c56a3)[_0x4421('0xb0')](loggerCatch(_0x4421('0x1bd')));if(_0x12e8ed[_0x4421('0x195')](0x14,_0x59ed14,_0x1a14e7)){if(_0x1c56a3[_0x4421('0xf6')]>=_0x1a14e7[_0x4421('0x1a3')]){_0x12e8ed[_0x4421('0x105')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1be'));}else{_0x12e8ed[_0x4421('0xf8')](_0x1c56a3,_0x346335,_0xb393bf,_0x4421('0x1be'));}}break;default:_0x1a14e7['outboundUnknownCallsDay']+=0x1;_0x1c56a3['state']=0xc;_0x1c56a3[_0x4421('0xa7')]=_0x1fba2a[_0x4421('0x10d')];_0x12e8ed[_0x4421('0xca')](_0x1c56a3)['catch'](loggerCatch(_0x4421('0x1bf')));if(_0x12e8ed[_0x4421('0x195')](_0x1fba2a['reason'],_0x59ed14,_0x1a14e7)){if(_0x1c56a3[_0x4421('0xf2')]+_0x1c56a3[_0x4421('0xf3')]+_0x1c56a3['countnoanswerretry']+_0x1c56a3['countnosuchnumberretry']+_0x1c56a3[_0x4421('0xf5')]+_0x1c56a3[_0x4421('0x124')]+_0x1c56a3['countmachineretry']+_0x1c56a3[_0x4421('0xf6')]>=_0x1a14e7[_0x4421('0xf7')]){_0x12e8ed[_0x4421('0xf8')](_0x1c56a3,_0x346335,_0xb393bf,_0x1fba2a[_0x4421('0x10d')]);}else{_0x12e8ed['createStateFinal'](_0x1c56a3,_0x346335,_0xb393bf,_0x1fba2a[_0x4421('0x10d')]);}}}});};Dialer[_0x4421('0x1b')][_0x4421('0xf8')]=function(_0x3ea6e1,_0x18db1e,_0x202261,_0x4db12a){var _0x3ab23e=new Final(_0x3ea6e1);_0x3ab23e[_0x4421('0xa6')]=0xf;_0x3ab23e[_0x4421('0xa7')]=_0x4421('0x1c0');this[_0x4421('0x105')](_0x3ab23e,_0x18db1e,_0x202261,_0x4db12a);};Dialer[_0x4421('0x1b')][_0x4421('0x105')]=function(_0x95f4cc,_0x3e8160,_0x3fef75,_0x15561b){this[_0x4421('0xc9')](_0x95f4cc)[_0x4421('0xb9')](function(){return _0x3e8160(msgResponse(_0x4421('0x1a7'),'Success',_0x15561b));})[_0x4421('0xb0')](function(){return _0x3fef75(msgResponse(_0x4421('0x1c1'),'Failure',_0x4421('0x1c2')));});};Dialer['prototype'][_0x4421('0xa')]=function(_0x1b7672){var _0x34fe37=_0x1b7672[_0x4421('0x1c3')]/0x64;var _0x37bd8b=_0x1b7672[_0x4421('0x65')]/(_0x1b7672[_0x4421('0x65')]+_0x1b7672[_0x4421('0xe4')]);var _0x3d6697=Math['round'](_0x1b7672['predictiveIntervalAvailable']*(_0x1b7672[_0x4421('0x1c4')]/0x64));var _0x499dcd=Math['round'](_0x1b7672[_0x4421('0x6e')]*(_0x1b7672['predictiveIntervalMinThreshold']/0x64));var _0x4fac39=_0x1b7672[_0x4421('0x53')]+_0x1b7672[_0x4421('0x58')];var _0x848b8a=Math['floor'](_0x1b7672[_0x4421('0x70')]*_0x1b7672[_0x4421('0x72')]*_0x1b7672['predictiveIntervalHitRate']*_0x1b7672['predictiveIntervalMultiplicativeFactor']);if(_[_0x4421('0x40')](_0x1b7672[_0x4421('0x28')])){if(!_[_0x4421('0x40')](_0x1b7672['startPredictive'])){_0x1b7672[_0x4421('0x27')]=undefined;loggerPredictive['error'](_0x4421('0x1c5'),_0x4421('0x1c6'));}if(!_[_0x4421('0x40')](_0x1b7672[_0x4421('0x8d')])){loggerPredictive[_0x4421('0x94')](_0x4421('0x1c5'),_0x4421('0x1c7'));clearInterval(_0x1b7672[_0x4421('0x8d')]);_0x1b7672[_0x4421('0x8d')]=undefined;}_0x1b7672['startProgressive']=moment()['format'](_0x4421('0xfe'));loggerPredictive[_0x4421('0x7e')](_0x1b7672['name'],_0x4421('0x1c8'),_0x1b7672[_0x4421('0x28')]);this[_0x4421('0x158')](_0x1b7672,0x1);}else if(ifInterval(_0x1b7672[_0x4421('0x1c9')],_0x1b7672[_0x4421('0x28')])){this[_0x4421('0x158')](_0x1b7672,0x1);loggerPredictiveCalls[_0x4421('0x7e')](_0x4421('0x1ca'),_0x1b7672[_0x4421('0x28')],_0x1b7672[_0x4421('0x43')]);_0x1b7672['erlangCalls']=0x0;_0x1b7672['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x34fe37<_0x37bd8b&&_0x1b7672[_0x4421('0x1cb')]===_0x4421('0x1cc')){freeVariablesPredictive(_0x1b7672);loggerPredictive[_0x4421('0x7e')](_0x4421('0x1cd'),_0x4421('0x1ce'),_0x37bd8b,'startProgressive',_0x1b7672['name']);}else if(_0x848b8a<_0x1b7672[_0x4421('0x118')]&&_0x1b7672['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x1b7672);loggerPredictive[_0x4421('0x7e')](_0x4421('0x1cf'),_0x4421('0x1d0'),_0x848b8a,_0x4421('0x1d1'),_0x1b7672[_0x4421('0x118')],_0x4421('0x28'),_0x1b7672[_0x4421('0x43')]);}else if(!ifInterval(_0x1b7672[_0x4421('0x1c9')],_0x1b7672['startProgressive'])&&_[_0x4421('0x40')](_0x1b7672[_0x4421('0x27')])&&!_[_0x4421('0x40')](_0x1b7672[_0x4421('0x28')])){_0x1b7672[_0x4421('0x27')]=moment()[_0x4421('0x77')](_0x4421('0xfe'));loggerPredictive[_0x4421('0x7e')](_0x1b7672[_0x4421('0x43')],_0x4421('0x1d2'),_0x1b7672[_0x4421('0x27')]);this[_0x4421('0xbd')](_0x1b7672[_0x4421('0x1c9')])['then'](this['getDataPredictive'](_0x1b7672))['then'](mergeDataErlangB(_0x1b7672))[_0x4421('0xb9')](this[_0x4421('0x1d3')](_0x1b7672))[_0x4421('0xb0')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x1b7672));}else if(!ifInterval(_0x1b7672['dialPredictiveInterval'],_0x1b7672[_0x4421('0x27')])){_0x1b7672[_0x4421('0x118')]=0x0;_0x1b7672[_0x4421('0x27')]=moment()['format'](_0x4421('0xfe'));loggerPredictive['info'](_0x1b7672[_0x4421('0x43')],'recalculate\x20predictive\x20at',_0x1b7672['startPredictive']);clearInterval(_0x1b7672[_0x4421('0x8d')]);_0x1b7672['handlePredictive']=undefined;this[_0x4421('0xbd')](_0x1b7672[_0x4421('0x1c9')])[_0x4421('0xb9')](this['getDataPredictive'](_0x1b7672))[_0x4421('0xb9')](mergeDataErlangB(_0x1b7672))[_0x4421('0xb9')](this[_0x4421('0x1d3')](_0x1b7672))['catch'](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x1b7672));}else if(_0x1b7672[_0x4421('0x6e')]&&_0x4fac39<_0x1b7672[_0x4421('0x6e')]-_0x499dcd){freeVariablesPredictive(_0x1b7672);loggerPredictive[_0x4421('0x7e')](_0x1b7672[_0x4421('0x43')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x4fac39,_0x4421('0x1d4'),_0x1b7672['predictiveIntervalAvailable'],'-',_0x499dcd,'=',_0x1b7672[_0x4421('0x6e')]-_0x499dcd,')');}else if(_0x1b7672['predictiveIntervalAvailable']&&_0x4fac39>_0x1b7672[_0x4421('0x6e')]+_0x3d6697){freeVariablesPredictive(_0x1b7672);loggerPredictive[_0x4421('0x7e')](_0x1b7672[_0x4421('0x43')],_0x4421('0x1d5'),_0x4fac39,')\x20are\x20more\x20than\x20threshold\x20(',_0x1b7672[_0x4421('0x6e')],'+',_0x3d6697,'=',_0x1b7672['predictiveIntervalAvailable']+_0x3d6697,')');}};Dialer[_0x4421('0x1b')]['getDataPredictive']=function(_0x5d3049){var _0x9bab0e=this;return function(_0xfc2959){return new BPromise(function(_0x2270b,_0x5561c8){_[_0x4421('0x12c')](_0x5d3049,_0xfc2959[0x0]);if(checkGetDataPredictive(_0xfc2959[0x0])){var _0x5a0f18=_0x5d3049[_0x4421('0x6e')]=_0x5d3049[_0x4421('0x58')]+_0x5d3049[_0x4421('0x53')];var _0x55cf88=_0x5d3049[_0x4421('0x1c9')]*0x3c;var _0x295582=_0xfc2959[0x0][_0x4421('0x83')]+_0xfc2959[0x0][_0x4421('0x6a')];var _0x32b8a5=(_0xfc2959[0x0][_0x4421('0x69')]+_0xfc2959[0x0][_0x4421('0x6b')]+_0xfc2959[0x0][_0x4421('0x80')])/_0xfc2959[0x0]['predictiveIntervalTotalCalls'];_0x5d3049[_0x4421('0x6d')]=_0x32b8a5>0x0?_0x32b8a5:0x1;switch(_0x5d3049[_0x4421('0x1cb')]){case'dropRate':var _0x30d4eb=_0x5d3049['dialPredictiveOptimizationPercentage']/0x64;return _0x9bab0e['abandonmentRate'](_0x5a0f18,_0x55cf88,_0x295582,_0x32b8a5,_0x30d4eb)[_0x4421('0xb9')](function(_0x49dcf8){return _0x2270b(_0x49dcf8);});case _0x4421('0x1d6'):var _0x145334=_0x5d3049[_0x4421('0x1c3')]/0x64;return _0x9bab0e[_0x4421('0x1d7')](_0x5a0f18,_0x55cf88,_0x295582,_0x32b8a5,_0x145334)['then'](function(_0x41a7ba){return _0x2270b(_0x41a7ba);});default:return _0x5561c8(msgResponse(_0x4421('0x1d8'),_0x4421('0x148'),_0x4421('0x1d9')));}}else{return _0x5561c8(msgResponse(_0x4421('0x1d8'),_0x4421('0x148'),_0x4421('0x1da')));}});};};Dialer['prototype'][_0x4421('0x1db')]=function(_0x2d05df){var _0x62d104=this;return function(_0x4bf769){return new BPromise(function(_0x1fdbc2,_0xce80c2){_[_0x4421('0x12c')](_0x2d05df,_0x4bf769[0x0]);if(checkGetDataPredictive(_0x4bf769[0x0])){loggerPredictive[_0x4421('0x7e')](JSON[_0x4421('0x4c')](_0x4bf769[0x0]));if(_0x2d05df[_0x4421('0x1cb')]===_0x4421('0x1cc')){return _0x62d104['getVoiceQueueRtPauses'](_0x2d05df['id'])['then'](function(_0x45af44){var _0x181390=_0x2d05df[_0x4421('0x54')]-_0x45af44[0x0][_0x4421('0x1dc')];var _0x510344=_0x2d05df[_0x4421('0x1c9')]*0x3c;var _0x535117=_0x4bf769[0x0]['predictiveIntervalAvgTalktime']+_0x4bf769[0x0][_0x4421('0x6a')];var _0x4eaff3=(_0x4bf769[0x0][_0x4421('0x69')]+_0x4bf769[0x0][_0x4421('0x6b')]+_0x4bf769[0x0][_0x4421('0x80')])/_0x4bf769[0x0][_0x4421('0x6f')];var _0x3ade9e=_0x2d05df[_0x4421('0x1c3')]/0x64;_0x2d05df[_0x4421('0x1dd')]=_0x45af44[0x0][_0x4421('0x1dc')]||0x0;_0x2d05df[_0x4421('0x6d')]=_0x4eaff3>0x0?_0x4eaff3:0x1;return _0x62d104[_0x4421('0x1de')](_0x181390,_0x510344,_0x535117,_0x4eaff3,_0x3ade9e);})['then'](function(_0x4d5387){return _0x1fdbc2(_0x4d5387);})[_0x4421('0xb0')](function(_0x450452){return _0xce80c2(msgResponse(_0x4421('0x1df'),'Failure',JSON[_0x4421('0x4c')](_0x450452)));});}if(_0x2d05df[_0x4421('0x1cb')]===_0x4421('0x1d6')){return _0x62d104[_0x4421('0xc7')](_0x2d05df['id'])[_0x4421('0xb9')](function(_0x3314b9){var _0x37eb58=_0x2d05df[_0x4421('0x54')]-_0x3314b9[0x0][_0x4421('0x1dc')];var _0x49c6d9=_0x2d05df['dialPredictiveInterval']*0x3c;var _0xbee3c0=_0x4bf769[0x0]['predictiveIntervalAvgTalktime']+_0x4bf769[0x0]['predictiveIntervalAvgHoldtime'];var _0x280829=(_0x4bf769[0x0][_0x4421('0x69')]+_0x4bf769[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x4bf769[0x0][_0x4421('0x80')])/_0x4bf769[0x0][_0x4421('0x6f')];var _0x25f39f=_0x2d05df[_0x4421('0x1c3')]/0x64;_0x2d05df[_0x4421('0x1dd')]=_0x3314b9[0x0][_0x4421('0x1dc')]||0x0;_0x2d05df[_0x4421('0x6d')]=_0x280829>0x0?_0x280829:0x1;return _0x62d104[_0x4421('0x1d7')](_0x37eb58,_0x49c6d9,_0xbee3c0,_0x280829,_0x25f39f);})['then'](function(_0x3ea367){return _0x1fdbc2(_0x3ea367);})['catch'](function(_0x2b1e41){return _0xce80c2(msgResponse(_0x4421('0x1df'),_0x4421('0x148'),JSON[_0x4421('0x4c')](_0x2b1e41)));});}}else{return _0xce80c2(msgResponse(_0x4421('0x1d8'),_0x4421('0x148'),_0x4421('0x1da')));}});};};Dialer[_0x4421('0x1b')][_0x4421('0x1d3')]=function(_0x3973c2){var _0x4c3606=this;return function(){var _0x43ab1f=0x0;var _0x211598=Math[_0x4421('0x1e0')](_0x3973c2[_0x4421('0x71')]*0x3e8);if(_0x211598>0x0){_0x211598=_0x211598<0x64?0x64:_0x211598;loggerPredictive['info'](_0x3973c2[_0x4421('0x43')],_0x4421('0x1e1'),_0x211598,_0x4421('0x4d'));_0x3973c2[_0x4421('0x8d')]=setInterval(function(){_0x4c3606[_0x4421('0x8d')](_0x3973c2);loggerPredictiveCalls[_0x4421('0x7e')]('[handlePredictive]',_0x43ab1f+=0x1);},_0x211598);}else{loggerPredictive[_0x4421('0x7e')](_0x3973c2[_0x4421('0x43')],_0x4421('0x1e2'));}};};Dialer[_0x4421('0x1b')][_0x4421('0x1e3')]=function(_0x4d0366,_0x3c3c0e){var _0x23fb24=this;return function(_0x4e34b7){if(_['isEmpty'](_0x4e34b7)){if(_[_0x4421('0xde')](_0x3c3c0e['UserId'])||!_0x3c3c0e[_0x4421('0x1e4')]){if(_0x4d0366[_0x4421('0x5d')]===_0x4421('0x9')){_0x4d0366['queueStatusComplete']=_[_0x4421('0x40')](_0x4d0366[_0x4421('0x12f')])?!![]:_0x4d0366[_0x4421('0x12f')];var _0x34d88b=uuid['v4']();_0x23fb24[_0x4421('0x23')][_0x34d88b]=new Action(_0x4d0366,_0x3c3c0e,_0x34d88b);loggerBooked[_0x4421('0x7e')](_0x4421('0x1e5'),_0x34d88b,_0x4421('0x1e6'),JSON['stringify'](_0x4d0366[_0x4421('0x12f')]),_0x4421('0x1e7'),_0x4d0366['name']);if(_0x4d0366[_0x4421('0x12f')]){_0x4d0366['queueStatusComplete']=![];_0x23fb24['queueBooked'][_0x23fb24['actions'][_0x34d88b][_0x4421('0xb2')]]=[];ami['Action']({'actionid':_0x34d88b,'action':_0x4421('0x1e8'),'queue':_0x4d0366[_0x4421('0x43')]})[_0x4421('0xb0')](function(){_0x23fb24[_0x4421('0xb4')](_0x4d0366);_0x23fb24[_0x4421('0xbf')]({'active':![],'ContactId':_0x23fb24['actions'][_0x34d88b][_0x4421('0xd2')],'ListId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xd3')],'VoiceQueueId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xff')]||undefined,'CampaignId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x23fb24[_0x4421('0x23')][_0x34d88b];});}else{loggerBooked[_0x4421('0x7e')](_0x4421('0x1e9'),JSON[_0x4421('0x4c')](_0x4d0366[_0x4421('0x12f')]),_0x4421('0x1e7'),_0x4d0366[_0x4421('0x43')]);_0x23fb24[_0x4421('0xb4')](_0x4d0366);_0x23fb24[_0x4421('0xbf')]({'active':![],'ContactId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xd2')],'ListId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xd3')],'VoiceQueueId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xff')]||undefined,'CampaignId':_0x23fb24[_0x4421('0x23')][_0x34d88b][_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x1ea')));delete _0x23fb24[_0x4421('0x23')][_0x34d88b];}}else{return _0x23fb24[_0x4421('0x167')](_0x4d0366,_0x3c3c0e);}}else{if(getDiff(_0x3c3c0e[_0x4421('0x1eb')])<_0x4d0366[_0x4421('0x1ec')]*0x3c){if(_0x3c3c0e[_0x4421('0x1ed')]&&!_0x3c3c0e['Agent'][_0x4421('0x1ee')]){_0x23fb24[_0x4421('0x8f')][_0x4421('0x137')](_0x3c3c0e['id'])[_0x4421('0x1d')](function(){_0x23fb24[_0x4421('0xb4')](_0x4d0366);});}else{_0x23fb24['unlockContact']({'active':![]},_0x3c3c0e['id'],0x1)[_0x4421('0x1d')](function(){_0x23fb24[_0x4421('0xb4')](_0x4d0366);});}}else{_0x4d0366[_0x4421('0x1ef')]+=0x1;_0x23fb24['updateOriginated'](_0x4d0366);if(_0x4d0366[_0x4421('0x1f0')]){_0x23fb24[_0x4421('0xbf')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x3c3c0e[_0x4421('0xd2')],'ListId':_0x3c3c0e[_0x4421('0xd3')],'VoiceQueueId':_0x3c3c0e[_0x4421('0xff')]||undefined,'CampaignId':_0x3c3c0e[_0x4421('0xd5')]||undefined})[_0x4421('0xb0')](loggerCatch(_0x4421('0x1f1')));_0x23fb24[_0x4421('0xca')](createObjHistory(_0x4d0366,_0x3c3c0e,_0x4421('0x1f2'),0x17,_0x4421('0x1f3')))[_0x4421('0xb0')](loggerCatch(_0x4421('0x1f4')));}else{_0x23fb24['saveInDb'](createObjHistory(_0x4d0366,_0x3c3c0e,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),_0x4421('0x1f5'),_0x4421('0x1f6'));}}}}else{_0x4d0366[_0x4421('0x1f7')]+=0x1;_0x23fb24['saveInDb'](createObjHistory(_0x4d0366,_0x3c3c0e,_0x4421('0x1f8'),0xd,_0x4421('0x1f9')),_0x4421('0x1fa'),'[Originate][MoveBlacklist]');throw'inBlackList';}};};Dialer[_0x4421('0x1b')][_0x4421('0x15d')]=function(_0x1ac6d2){var _0x2ceb1b=this;var _0x328c37=_0x1ac6d2[_0x4421('0x1fb')]-_0x1ac6d2['originated']-_0x1ac6d2[_0x4421('0xc4')];emitCampaignSummary(_0x1ac6d2);if(_0x328c37>0x0){if(_0x328c37>this[_0x4421('0x21')]){_0x328c37=this[_0x4421('0x21')];}_0x1ac6d2['temp']+=_0x328c37;this[_0x4421('0xc5')](_0x1ac6d2['id'],_0x328c37,_0x1ac6d2[_0x4421('0x1fc')],_0x1ac6d2)[_0x4421('0xb9')](function(_0x47e154){_0x1ac6d2[_0x4421('0xc4')]-=_0x328c37;_0x1ac6d2[_0x4421('0xc4')]=_0x1ac6d2['temp']>0x0?_0x1ac6d2['temp']:0x0;if(!checkContactEmpty(_0x47e154)){_0x1ac6d2[_0x4421('0x41')]=_0x4421('0x1fd');logger[_0x4421('0x7e')](_0x4421('0x1fe')+_0x1ac6d2[_0x4421('0x43')]);}else{_0x1ac6d2[_0x4421('0x97')]+=_0x47e154[_0x4421('0x96')];_0x1ac6d2[_0x4421('0x41')]=_0x4421('0x1ff');for(var _0x282877=0x0;_0x282877<_0x47e154[_0x4421('0x96')];_0x282877+=0x1){_0x1ac6d2['ivrTotalCallsDays']+=0x1;if(_[_0x4421('0xde')](_0x47e154[_0x282877])||_[_0x4421('0xde')](_0x47e154[_0x282877][_0x4421('0x16a')])||_['isNil'](_0x47e154[_0x282877][_0x4421('0x16a')][_0x4421('0x16b')])){_0x2ceb1b[_0x4421('0xcf')](_0x4421('0x200'),_0x1ac6d2,_0x47e154[_0x282877]);}else{_0x2ceb1b[_0x4421('0xbb')](_[_0x4421('0xd1')](_0x47e154[_0x282877],[_0x4421('0xd5'),_0x4421('0x201')]))['then'](_0x2ceb1b['checkContactBlack'](_0x1ac6d2,_0x47e154[_0x282877]))[_0x4421('0xb0')](_0x2ceb1b[_0x4421('0xce')](_0x4421('0x202'),_0x1ac6d2));}}}})['catch'](loggerGetContactDialer(_0x4421('0x203'),_0x1ac6d2,_0x328c37));}};Dialer[_0x4421('0x1b')]['handlePower']=function(_0x4514cd,_0x355a60){var _0x5505f1=this;var _0x20cae9=[];var _0xb075fa=_0x355a60>=0x1?_0x355a60:0x1;if(_0x4514cd[_0x4421('0x5d')]==='booked'){_0xb075fa=0x1;}var _0x28b65a=Math[_0x4421('0x1e0')](_0x4514cd[_0x4421('0x53')]*_0xb075fa)-_0x4514cd[_0x4421('0x97')]-_0x4514cd['temp'];emitVoiceQueueSummary(_0x4514cd);if(_0x4514cd[_0x4421('0x204')]>0x0){var _0x2e7e4a=_0x4514cd[_0x4421('0x204')]-_0x4514cd['originated']-_0x4514cd['talking']-_0x4514cd[_0x4421('0xc4')]-_0x4514cd[_0x4421('0x55')];if(_0x28b65a>_0x2e7e4a){_0x28b65a=_0x2e7e4a;}}if(_0x28b65a>0x0){if(_0x4514cd['dialMethod']==='booked'){_0x28b65a=0x1;}if(_0x28b65a>this[_0x4421('0x21')]){_0x28b65a=this[_0x4421('0x21')];}_0x4514cd[_0x4421('0xc4')]+=_0x28b65a;for(var _0x4823e2 in this['agents']){if(typeof this['agents'][_0x4823e2]!==_0x4421('0x98')){if(this[_0x4421('0x1f')][_0x4823e2][_0x4421('0xa6')]===_0x4421('0x205')&&this[_0x4421('0x1f')][_0x4823e2][_0x4421('0xae')]===_0x4421('0xdb')){_0x20cae9['push'](this[_0x4421('0x1f')][_0x4823e2]['id']);}}}this[_0x4421('0xc3')](_0x4514cd['id'],_0x20cae9,_0x28b65a,_0x4514cd[_0x4421('0x1fc')],_0x4514cd)['then'](function(_0x4730ae){_0x4514cd[_0x4421('0xc4')]-=_0x28b65a;_0x4514cd[_0x4421('0xc4')]=_0x4514cd[_0x4421('0xc4')]>0x0?_0x4514cd[_0x4421('0xc4')]:0x0;if(!checkContactEmpty(_0x4730ae)){_0x5505f1[_0x4421('0xb6')](_0x4514cd)[_0x4421('0xb9')](sendMessageReschedule(_0x4514cd))[_0x4421('0xb0')](loggerCatch(_0x4421('0xb8')));}else{_0x4514cd[_0x4421('0x97')]+=_0x4730ae[_0x4421('0x96')];_0x4514cd[_0x4421('0x41')]=_0x4514cd[_0x4421('0x5d')]===_0x4421('0x9')?_0x4421('0x171'):_0x4421('0x1ff');for(var _0x3e1b1c=0x0;_0x3e1b1c<_0x4730ae['length'];_0x3e1b1c+=0x1){if(_[_0x4421('0xde')](_0x4730ae[_0x3e1b1c])||_[_0x4421('0xde')](_0x4730ae[_0x3e1b1c][_0x4421('0x16a')])||_[_0x4421('0xde')](_0x4730ae[_0x3e1b1c][_0x4421('0x16a')][_0x4421('0x16b')])){_0x5505f1[_0x4421('0xcf')](_0x4421('0x200'),_0x4514cd,_0x4730ae[_0x3e1b1c]);}else{_0x5505f1[_0x4421('0x206')](_[_0x4421('0xd1')](_0x4730ae[_0x3e1b1c],[_0x4421('0xff'),_0x4421('0x201')]))[_0x4421('0xb9')](_0x5505f1[_0x4421('0x1e3')](_0x4514cd,_0x4730ae[_0x3e1b1c]))[_0x4421('0xb0')](_0x5505f1[_0x4421('0xce')](_0x4421('0x200'),_0x4514cd));}}}})[_0x4421('0xb0')](loggerGetContactDialer(_0x4421('0x207'),_0x4514cd,_0x28b65a));}};Dialer['prototype'][_0x4421('0x8d')]=function(_0x1c65d4){if(_0x1c65d4['dialLimitQueue']>0x0){var _0x263632=_0x1c65d4[_0x4421('0x204')]-_0x1c65d4['originated']-_0x1c65d4[_0x4421('0x58')];if(_0x263632>0x0){this['tryOriginatePredictive'](_0x1c65d4);}else{loggerPredictiveCalls[_0x4421('0x7e')]('[handlePredictive][limitChannel]');}}else{this['tryOriginatePredictive'](_0x1c65d4);}};Dialer['prototype'][_0x4421('0x208')]=function(_0x148937){var _0x3efbb0=this;var _0x628d79=[];_0x148937[_0x4421('0x97')]+=0x1;for(var _0x3491cb in this[_0x4421('0x1f')]){if(typeof this['agents'][_0x3491cb]!=='undefined'){if(this['agents'][_0x3491cb][_0x4421('0xa6')]===_0x4421('0x205')&&this['agents'][_0x3491cb][_0x4421('0xae')]===_0x4421('0xdb')){_0x628d79[_0x4421('0x12b')](this[_0x4421('0x1f')][_0x3491cb]['id']);}}}this['getContactDialer'](_0x148937['id'],_0x628d79,0x1,_0x148937[_0x4421('0x1fc')],_0x148937)['then'](function(_0x169564){if(!checkContactEmpty(_0x169564)){checkContactLowerLimitOriginate(_0x148937,0x1,0x0);_0x3efbb0[_0x4421('0xb6')](_0x148937)[_0x4421('0xb9')](sendMessageReschedule(_0x148937))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x148937[_0x4421('0x41')]=_0x4421('0x1ff');if(_[_0x4421('0xde')](_0x169564[0x0])||_[_0x4421('0xde')](_0x169564[0x0][_0x4421('0x16a')])||_['isNil'](_0x169564[0x0][_0x4421('0x16a')][_0x4421('0x16b')])){_0x3efbb0['emptyContact'](_0x4421('0x200'),_0x148937,_0x169564[0x0]);}else{_0x3efbb0['checkIsBlackList'](_[_0x4421('0xd1')](_0x169564[0x0],[_0x4421('0xff'),_0x4421('0x201')]))[_0x4421('0xb9')](_0x3efbb0[_0x4421('0x1e3')](_0x148937,_0x169564[0x0]))[_0x4421('0xb0')](_0x3efbb0[_0x4421('0xce')]('[actionOriginatePredictive]\x20',_0x148937));}}})[_0x4421('0xb0')](loggerGetContactDialer(_0x4421('0x209'),_0x148937,0x1));emitVoiceQueueSummary(_0x148937);};Dialer['prototype'][_0x4421('0x1de')]=function(_0x225ebb,_0x2cc2b,_0x3135eb,_0x562566,_0x4acc6d,_0x12c66f){loggerPredictive[_0x4421('0x7e')](_0x4421('0x20a'));loggerPredictive[_0x4421('0x7e')](_0x4421('0x20b'),_0x225ebb);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20c'),_0x2cc2b);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20d'),_0x3135eb);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20e'),_0x562566);loggerPredictive['info'](_0x4421('0x20f'),_0x4acc6d);loggerPredictive[_0x4421('0x7e')](_0x4421('0x8b'));return new BPromise(function(_0x352edb,_0x5c6bea){if(_0x225ebb<=0x0||isNaN(_0x225ebb)){return _0x5c6bea(msgResponse('[abandonmentRate]',_0x4421('0x210'),'m\x20=\x20'+_0x225ebb));}if(_0x3135eb<=0x0||isNaN(_0x3135eb)){return _0x5c6bea(msgResponse(_0x4421('0x211'),_0x4421('0x210'),'Ts\x20=\x20'+_0x3135eb));}if(_0x562566<=0x0||isNaN(_0x562566)){return _0x5c6bea(msgResponse(_0x4421('0x211'),_0x4421('0x210'),'p\x20=\x20'+_0x562566));}if(_0x2cc2b<=0x0||isNaN(_0x2cc2b)){return _0x5c6bea(msgResponse(_0x4421('0x211'),_0x4421('0x210'),_0x4421('0x212')+_0x2cc2b));}if(_0x4acc6d<=0x0||isNaN(_0x4acc6d)){return _0x5c6bea(msgResponse('[abandonmentRate]',_0x4421('0x210'),_0x4421('0x213')+_0x4acc6d));}_0x12c66f=_0x12c66f||0x0;var _0x479bdf=0x1/_0x3135eb;var _0x5eeca4=0x0;var _0x18225f=0x0;var _0x34f385=0x0;var _0xb7a5ae=0x0;for(var _0x48c349=0x0;_0x34f385<_0x4acc6d;_0x48c349+=0x1){_0x18225f=_0x48c349/_0x2cc2b;_0x5eeca4=(_0x562566*_0x18225f+_0x12c66f)/_0x479bdf;_0x34f385=erlangb(_0x5eeca4,_0x225ebb);_0xb7a5ae=_0x5eeca4/_0x225ebb*(0x1-erlangb(_0x5eeca4,_0x225ebb));}return _0x352edb({'erlangCalls':_0x48c349,'erlangCallToSecond':_0x2cc2b/_0x48c349,'erlangAbandonmentRate':_0x34f385,'erlangBusyFactor':_0xb7a5ae});});};Dialer[_0x4421('0x1b')]['busyFactor']=function(_0x3632f6,_0x3e08fd,_0x641c80,_0x19c5ef,_0x3f5f70,_0x54c138){loggerPredictive[_0x4421('0x7e')](_0x4421('0x214'));loggerPredictive['info'](_0x4421('0x20b'),_0x3632f6);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20c'),_0x3e08fd);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20d'),_0x641c80);loggerPredictive[_0x4421('0x7e')](_0x4421('0x20e'),_0x19c5ef);loggerPredictive[_0x4421('0x7e')](_0x4421('0x215'),_0x3f5f70);loggerPredictive['info'](_0x4421('0x8b'));return new BPromise(function(_0x1c009d,_0x1b8c74){if(_0x3632f6<=0x0||isNaN(_0x3632f6)){return _0x1b8c74(msgResponse(_0x4421('0x216'),_0x4421('0x210'),_0x4421('0x217')+_0x3632f6));}if(_0x641c80<=0x0||isNaN(_0x641c80)){return _0x1b8c74(msgResponse(_0x4421('0x216'),_0x4421('0x210'),_0x4421('0x218')+_0x641c80));}if(_0x19c5ef<=0x0||isNaN(_0x19c5ef)){return _0x1b8c74(msgResponse('[busyFactor]',_0x4421('0x210'),_0x4421('0x219')+_0x19c5ef));}if(_0x3e08fd<=0x0||isNaN(_0x3e08fd)){return _0x1b8c74(msgResponse('[busyFactor]','Error','interval\x20=\x20'+_0x3e08fd));}if(_0x3f5f70<=0x0||isNaN(_0x3f5f70)){return _0x1b8c74(msgResponse('[busyFactor]','Error','Umin\x20=\x20'+_0x3f5f70));}_0x54c138=_0x54c138||0x0;var _0x67765a=0x1/_0x641c80;var _0x13d31c=0x0;var _0x5fb7dc=0x0;var _0x5a9c05=0x0;var _0x339b2c=0x0;for(var _0x45c3d7=0x0;_0x339b2c<_0x3f5f70;_0x45c3d7+=0x1){_0x5fb7dc=_0x45c3d7/_0x3e08fd;_0x13d31c=(_0x19c5ef*_0x5fb7dc+_0x54c138)/_0x67765a;_0x5a9c05=erlangb(_0x13d31c,_0x3632f6);_0x339b2c=_0x13d31c/_0x3632f6*(0x1-erlangb(_0x13d31c,_0x3632f6));}return _0x1c009d({'erlangCalls':_0x45c3d7,'erlangCallToSecond':_0x3e08fd/_0x45c3d7,'erlangAbandonmentRate':_0x5a9c05,'erlangBusyFactor':_0x339b2c});});};module[_0x4421('0x21a')]=Dialer;
\ No newline at end of file
index 51bc984..cef95ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71c3=['holdtime','queue','membername','connectedlinename','reason','callback','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','util','lodash','milliseconds','diff','scheduledat','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime'];(function(_0x20a394,_0x5c4e0c){var _0x8a454f=function(_0x26d21c){while(--_0x26d21c){_0x20a394['push'](_0x20a394['shift']());}};_0x8a454f(++_0x5c4e0c);}(_0x71c3,0xc6));var _0x371c=function(_0x6685d0,_0x2cf954){_0x6685d0=_0x6685d0-0x0;var _0x55de67=_0x71c3[_0x6685d0];return _0x55de67;};'use strict';var util=require(_0x371c('0x0'));var _=require(_0x371c('0x1'));var moment=require('moment');function getSeconds(_0x40d7af,_0x2fb78c){var _0x2eb6a5=moment(_0x40d7af)[_0x371c('0x2')](0x0);var _0xa6dc80=moment(_0x2fb78c)[_0x371c('0x2')](0x0);return _0x2eb6a5[_0x371c('0x3')](_0xa6dc80,'seconds');}function QueueCallerAbandon(_0x4cc567,_0x13e51a){this['scheduledat']=_0x4cc567[_0x371c('0x4')];this[_0x371c('0x5')]=_0x4cc567[_0x371c('0x5')];this['campaigntype']=_0x4cc567[_0x371c('0x5')]==='outbound'?'queue':_0x4cc567[_0x371c('0x5')];this[_0x371c('0x6')]=_0x4cc567[_0x371c('0x6')];this[_0x371c('0x7')]=_0x4cc567[_0x371c('0x7')];this[_0x371c('0x8')]=_0x4cc567[_0x371c('0x8')];this[_0x371c('0x9')]=_0x4cc567[_0x371c('0x6')]+_0x4cc567['countcongestionretry']+_0x4cc567[_0x371c('0x8')]+_0x4cc567[_0x371c('0xa')]+_0x4cc567[_0x371c('0xb')]+_0x4cc567[_0x371c('0xc')]+_0x4cc567[_0x371c('0xd')]+_0x4cc567[_0x371c('0xe')];this[_0x371c('0xa')]=_0x4cc567[_0x371c('0xa')];this['countdropretry']=_0x4cc567[_0x371c('0xb')];this[_0x371c('0xc')]=_0x4cc567[_0x371c('0xc')];this[_0x371c('0xd')]=_0x4cc567[_0x371c('0xd')];this['countagentrejectretry']=_0x4cc567[_0x371c('0xe')];this[_0x371c('0xf')]=_0x13e51a[_0x371c('0xf')];this[_0x371c('0x10')]=_0x4cc567['name'];this[_0x371c('0x11')]=_0x4cc567[_0x371c('0x12')];this['starttime']=_0x4cc567[_0x371c('0x13')];this['responsetime']=_0x4cc567[_0x371c('0x14')];this[_0x371c('0x15')]=_0x4cc567['droptime'];this[_0x371c('0x16')]=this[_0x371c('0x15')];this[_0x371c('0x17')]=getSeconds(_0x4cc567[_0x371c('0x14')],_0x4cc567[_0x371c('0x13')]);this[_0x371c('0x18')]=getSeconds(this[_0x371c('0x15')],_0x4cc567[_0x371c('0x14')]);this['talktime']=0x0;this[_0x371c('0x19')]=_0x13e51a[_0x371c('0x19')];this[_0x371c('0x1a')]=_0x13e51a[_0x371c('0x1b')];this[_0x371c('0x1c')]=_0x13e51a['reason'];this['callback']=_0x4cc567[_0x371c('0x1d')];this['callbackuniqueid']=_0x4cc567['callbackuniqueid'];this['callbackat']=_0x4cc567['callbackat'];this[_0x371c('0x1e')]=_0x4cc567['recallme'];this[_0x371c('0x1f')]=_0x4cc567[_0x371c('0x1f')];this[_0x371c('0x20')]=_0x4cc567[_0x371c('0x20')];this[_0x371c('0x21')]=_0x4cc567[_0x371c('0x21')];this[_0x371c('0x22')]=_0x4cc567['VoiceQueueId'];this['CampaignId']=_0x4cc567['CampaignId'];this['originatecalleridnum']=_0x4cc567[_0x371c('0x23')]||'';this[_0x371c('0x24')]=_0x4cc567[_0x371c('0x24')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0x20f5=['originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','scheduledat','type','outbound','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','name','calleridnum','number','starttime','responsetime','droptime','endtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId'];(function(_0x59311f,_0x6899fe){var _0x4bd3c0=function(_0x14c4eb){while(--_0x14c4eb){_0x59311f['push'](_0x59311f['shift']());}};_0x4bd3c0(++_0x6899fe);}(_0x20f5,0x19d));var _0x520f=function(_0x3e7819,_0x2df679){_0x3e7819=_0x3e7819-0x0;var _0x1ab6f4=_0x20f5[_0x3e7819];return _0x1ab6f4;};'use strict';var util=require(_0x520f('0x0'));var _=require('lodash');var moment=require(_0x520f('0x1'));function getSeconds(_0x3c0945,_0x3f21ed){var _0x4622be=moment(_0x3c0945)[_0x520f('0x2')](0x0);var _0x3187f9=moment(_0x3f21ed)[_0x520f('0x2')](0x0);return _0x4622be[_0x520f('0x3')](_0x3187f9,'seconds');}function QueueCallerAbandon(_0x4c3c0d,_0x107954){this[_0x520f('0x4')]=_0x4c3c0d[_0x520f('0x4')];this['type']=_0x4c3c0d['type'];this['campaigntype']=_0x4c3c0d[_0x520f('0x5')]===_0x520f('0x6')?'queue':_0x4c3c0d['type'];this['countbusyretry']=_0x4c3c0d['countbusyretry'];this[_0x520f('0x7')]=_0x4c3c0d['countcongestionretry'];this['countnoanswerretry']=_0x4c3c0d[_0x520f('0x8')];this[_0x520f('0x9')]=_0x4c3c0d[_0x520f('0xa')]+_0x4c3c0d[_0x520f('0x7')]+_0x4c3c0d['countnoanswerretry']+_0x4c3c0d[_0x520f('0xb')]+_0x4c3c0d['countdropretry']+_0x4c3c0d['countabandonedretry']+_0x4c3c0d['countmachineretry']+_0x4c3c0d['countagentrejectretry'];this[_0x520f('0xb')]=_0x4c3c0d[_0x520f('0xb')];this['countdropretry']=_0x4c3c0d[_0x520f('0xc')];this[_0x520f('0xd')]=_0x4c3c0d[_0x520f('0xd')];this[_0x520f('0xe')]=_0x4c3c0d[_0x520f('0xe')];this[_0x520f('0xf')]=_0x4c3c0d[_0x520f('0xf')];this['uniqueid']=_0x107954['uniqueid'];this['calleridname']=_0x4c3c0d[_0x520f('0x10')];this[_0x520f('0x11')]=_0x4c3c0d[_0x520f('0x12')];this['starttime']=_0x4c3c0d[_0x520f('0x13')];this[_0x520f('0x14')]=_0x4c3c0d[_0x520f('0x14')];this[_0x520f('0x15')]=_0x4c3c0d[_0x520f('0x15')];this[_0x520f('0x16')]=this['droptime'];this['ringtime']=getSeconds(_0x4c3c0d['responsetime'],_0x4c3c0d[_0x520f('0x13')]);this[_0x520f('0x17')]=getSeconds(this[_0x520f('0x15')],_0x4c3c0d[_0x520f('0x14')]);this[_0x520f('0x18')]=0x0;this[_0x520f('0x19')]=_0x107954['queue'];this[_0x520f('0x1a')]=_0x107954[_0x520f('0x1b')];this[_0x520f('0x1c')]=_0x107954[_0x520f('0x1c')];this[_0x520f('0x1d')]=_0x4c3c0d[_0x520f('0x1d')];this[_0x520f('0x1e')]=_0x4c3c0d['callbackuniqueid'];this[_0x520f('0x1f')]=_0x4c3c0d[_0x520f('0x1f')];this[_0x520f('0x20')]=_0x4c3c0d[_0x520f('0x20')];this['ContactId']=_0x4c3c0d[_0x520f('0x21')];this['ListId']=_0x4c3c0d[_0x520f('0x22')];this[_0x520f('0x23')]=_0x4c3c0d[_0x520f('0x23')];this[_0x520f('0x24')]=_0x4c3c0d[_0x520f('0x24')];this['CampaignId']=_0x4c3c0d[_0x520f('0x25')];this[_0x520f('0x26')]=_0x4c3c0d[_0x520f('0x26')]||'';this['originatecalleridname']=_0x4c3c0d[_0x520f('0x27')]||'';}module[_0x520f('0x28')]=QueueCallerAbandon;
\ No newline at end of file
index b6d7ff5..9ee6bdc 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(_0x478734,_0x13b975){var _0x493c17=function(_0x539083){while(--_0x539083){_0x478734['push'](_0x478734['shift']());}};_0x493c17(++_0x13b975);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'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(_0x5ced8e,_0x213f55){var _0x568a4d=function(_0x249d93){while(--_0x249d93){_0x5ced8e['push'](_0x5ced8e['shift']());}};_0x568a4d(++_0x213f55);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
index ea0c6b3..376a701 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4fd=['[Fax][execOriginate][success]','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','Trunk','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','dir','XMF-PATH','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','status','SIP/%s','reachable','unmonitored','checkTrunk','[Fax][checkTrunk][Trunk\x20not\x20work]','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','util','moment','path','tiff2pdf','./util/gs','../ami','./channel','./action','../rpc/faxAccount','../rpc/attachment','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','newexten','syncNewExten','faxstatus','hangup','originateresponse','syncOriginateResponse','prototype','channels','channel','uniqueid','name','\x20syncNewchannel\x20','variable','hasOwnProperty','value','channelstate','channelstatedesc','syncFaxStatus','operation','localstationid','filename','info','syncReceiveFax','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','message','create','parse','.pdf','application/pdf','then','notify','fax','catch','\x20notify\x20','error','stringify','\x20receiveFax\x20','merge','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','updateStatus','faxstatusstring','SENDING\x20FAILED:\x20','send','execOriginate'];(function(_0x5886ea,_0xf1a4b5){var _0x206a01=function(_0x1be4d5){while(--_0x1be4d5){_0x5886ea['push'](_0x5886ea['shift']());}};_0x206a01(++_0xf1a4b5);}(_0xe4fd,0x100));var _0xde4f=function(_0x29ffb7,_0x296a68){_0x29ffb7=_0x29ffb7-0x0;var _0x23d28a=_0xe4fd[_0x29ffb7];return _0x23d28a;};'use strict';var util=require(_0xde4f('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require('uuid');var moment=require(_0xde4f('0x1'));var path=require(_0xde4f('0x2'));var tiff2pdf=require(_0xde4f('0x3'));var gs=require(_0xde4f('0x4'));var logger=require('../../../config/logger')('fax');var ami=require(_0xde4f('0x5'));var rpcDb=require('./rpcDb');var Channel=require(_0xde4f('0x6'));var ut=require('./util/util');var Action=require(_0xde4f('0x7'));var faxAccount=require(_0xde4f('0x8'));var attachment=require(_0xde4f('0x9'));var faxMessage=require('../rpc/faxMessage');function Fax(_0xbdab99){this['channels']={};this[_0xde4f('0xa')]=_0xbdab99[_0xde4f('0xa')];this['trunks']=_0xbdab99[_0xde4f('0xb')];this[_0xde4f('0xc')]={};ami['on'](_0xde4f('0xd'),this[_0xde4f('0xe')][_0xde4f('0xf')](this));ami['on'](_0xde4f('0x10'),this[_0xde4f('0x11')][_0xde4f('0xf')](this));ami['on'](_0xde4f('0x12'),this['syncNewState'][_0xde4f('0xf')](this));ami['on'](_0xde4f('0x13'),this[_0xde4f('0x14')]['bind'](this));ami['on'](_0xde4f('0x15'),this['syncFaxStatus'][_0xde4f('0xf')](this));ami['on']('receivefax',this['syncReceiveFax'][_0xde4f('0xf')](this));ami['on'](_0xde4f('0x16'),this['syncHangup'][_0xde4f('0xf')](this));ami['on'](_0xde4f('0x17'),this[_0xde4f('0x18')][_0xde4f('0xf')](this));}Fax[_0xde4f('0x19')]['syncNewchannel']=function(_0x123568){if(_0x123568['context']==='from-voip-provider'){for(var _0x25481f in this['faxAccounts']){if(this['faxAccounts']['hasOwnProperty'](_0x25481f)){if(_0x123568['exten']===this[_0xde4f('0xa')][_0x25481f]['localstationid']){this[_0xde4f('0x1a')][_0x123568['uniqueid']]={};this[_0xde4f('0x1a')][_0x123568['uniqueid']][_0xde4f('0x1b')]=_0x123568['channel'];this['channels'][_0x123568['uniqueid']]['id']=this[_0xde4f('0xa')][_0x25481f]['id'];this[_0xde4f('0x1a')][_0x123568[_0xde4f('0x1c')]][_0xde4f('0x1d')]=this[_0xde4f('0xa')][_0x25481f][_0xde4f('0x1d')];logger['info'](_0x123568[_0xde4f('0x1c')],'\x20syncNewchannel\x20');}}}}if(this[_0xde4f('0xc')][_0x123568[_0xde4f('0x1c')]]){this[_0xde4f('0x1a')][_0x123568[_0xde4f('0x1c')]]={};this[_0xde4f('0x1a')][_0x123568[_0xde4f('0x1c')]][_0xde4f('0x1b')]=_0x123568[_0xde4f('0x1b')];logger['info'](_0x123568[_0xde4f('0x1c')],_0xde4f('0x1e'));}};Fax[_0xde4f('0x19')][_0xde4f('0x11')]=function(_0x34ae9c){if(this[_0xde4f('0x1a')][_0x34ae9c[_0xde4f('0x1c')]]){for(var _0x59e342 in _0x34ae9c[_0xde4f('0x1f')]){if(_0x34ae9c[_0xde4f('0x1f')][_0xde4f('0x20')](_0x59e342)){this['channels'][_0x34ae9c[_0xde4f('0x1c')]][_0x59e342]=_0x34ae9c[_0xde4f('0x21')];}}}};Fax[_0xde4f('0x19')]['syncNewState']=function(_0xfa64c){if(this[_0xde4f('0x1a')][_0xfa64c[_0xde4f('0x1c')]]){this[_0xde4f('0x1a')][_0xfa64c['uniqueid']][_0xde4f('0x22')]=_0xfa64c[_0xde4f('0x22')];this[_0xde4f('0x1a')][_0xfa64c[_0xde4f('0x1c')]][_0xde4f('0x23')]=_0xfa64c[_0xde4f('0x23')];}};Fax[_0xde4f('0x19')][_0xde4f('0x14')]=function(_0x2254e5){if(this['channels'][_0x2254e5[_0xde4f('0x1c')]]){for(var _0x1fe92a in _0x2254e5['variable']){if(_0x2254e5[_0xde4f('0x1f')]['hasOwnProperty'](_0x1fe92a)){this[_0xde4f('0x1a')][_0x2254e5[_0xde4f('0x1c')]][_0x1fe92a]=_0x2254e5[_0xde4f('0x21')];}}}};Fax[_0xde4f('0x19')][_0xde4f('0x24')]=function(_0x4b9fbe){if(this['channels'][_0x4b9fbe[_0xde4f('0x1c')]]){this[_0xde4f('0x1a')][_0x4b9fbe[_0xde4f('0x1c')]][_0xde4f('0x25')]=_0x4b9fbe[_0xde4f('0x25')];this[_0xde4f('0x1a')][_0x4b9fbe[_0xde4f('0x1c')]]['status']=_0x4b9fbe['status'];this['channels'][_0x4b9fbe[_0xde4f('0x1c')]][_0xde4f('0x26')]=_0x4b9fbe[_0xde4f('0x26')];this['channels'][_0x4b9fbe[_0xde4f('0x1c')]][_0xde4f('0x27')]=_0x4b9fbe[_0xde4f('0x27')];logger[_0xde4f('0x28')](_0x4b9fbe[_0xde4f('0x1c')],'\x20syncFaxStatus\x20');}};Fax['prototype'][_0xde4f('0x29')]=function(_0x5f0691){var _0x4716e5=this;if(this['channels'][_0x5f0691['uniqueid']]){var _0x13cbb3=this[_0xde4f('0x1a')][_0x5f0691[_0xde4f('0x1c')]]['id'];this['channels'][_0x5f0691[_0xde4f('0x1c')]][_0xde4f('0x2a')]=_0x5f0691[_0xde4f('0x2a')];this[_0xde4f('0x1a')][_0x5f0691[_0xde4f('0x1c')]][_0xde4f('0x2b')]=_0x5f0691[_0xde4f('0x2b')];this[_0xde4f('0x1a')][_0x5f0691[_0xde4f('0x1c')]]['localstationid']=_0x5f0691['localstationid'];this[_0xde4f('0x1a')][_0x5f0691[_0xde4f('0x1c')]][_0xde4f('0x2c')]=_0x5f0691[_0xde4f('0x2c')];this['channels'][_0x5f0691[_0xde4f('0x1c')]][_0xde4f('0x2d')]=_0x5f0691['transferrate'];this[_0xde4f('0x1a')][_0x5f0691['uniqueid']][_0xde4f('0x27')]=_0x5f0691[_0xde4f('0x27')];this[_0xde4f('0x1a')][_0x5f0691[_0xde4f('0x1c')]][_0xde4f('0x2e')]=_0x5f0691[_0xde4f('0x2e')];if(this[_0xde4f('0x1a')][_0x5f0691['uniqueid']][_0xde4f('0x2b')]>0x0){tiff2pdf(_0x5f0691[_0xde4f('0x27')],_0xde4f('0x2f'),function(_0x9f5508){logger[_0xde4f('0x28')](_0x5f0691[_0xde4f('0x1c')],'\x20result\x20conversion\x20file\x20',_0x9f5508[_0xde4f('0x30')]);attachment[_0xde4f('0x31')]({'name':path[_0xde4f('0x32')](_0x5f0691[_0xde4f('0x27')])[_0xde4f('0x1d')],'basename':path[_0xde4f('0x32')](_0x5f0691[_0xde4f('0x27')])[_0xde4f('0x1d')]+_0xde4f('0x33'),'type':_0xde4f('0x34')})[_0xde4f('0x35')](function(_0x5252b3){faxAccount[_0xde4f('0x36')](_0x13cbb3,{'from':_0x5f0691[_0xde4f('0x2e')],'mapKey':_0xde4f('0x37'),'body':path[_0xde4f('0x32')](_0x5f0691[_0xde4f('0x27')])[_0xde4f('0x1d')]+_0xde4f('0x33'),'AttachmentId':_0x5252b3['id']})[_0xde4f('0x38')](function(_0x40e440){logger['error'](_0x5f0691[_0xde4f('0x1c')],_0xde4f('0x39'),JSON['stringify'](_0x40e440));});})[_0xde4f('0x38')](function(_0x490a7a){logger[_0xde4f('0x3a')](_0x5f0691[_0xde4f('0x1c')],'\x20receiveFax\x20',JSON[_0xde4f('0x3b')](_0x490a7a));});});}logger['info'](_0x5f0691[_0xde4f('0x1c')],_0xde4f('0x3c'));}};Fax['prototype'][_0xde4f('0x18')]=function(_0x5ab2e3){if(this['actions'][_0x5ab2e3['uniqueid']]){_[_0xde4f('0x3d')](this['channels'][_0x5ab2e3[_0xde4f('0x1c')]],_[_0xde4f('0x3e')](_0x5ab2e3,[_0xde4f('0x3f'),_0xde4f('0x40')]));}};function updateStatus(_0x3a6683){if(_0x3a6683[_0xde4f('0x41')]){faxMessage[_0xde4f('0x42')](_0x3a6683[_0xde4f('0x41')],{'failMessage':_0xde4f('0x43')})[_0xde4f('0x35')](function(_0x48efcf){ut[_0xde4f('0x44')](_0xde4f('0x45'),_0x48efcf);})[_0xde4f('0x38')](function(_0x6fa325){ut['logger'](_0xde4f('0x46'),_0x6fa325);});}else{ut['logger'](_0xde4f('0x47'));}}Fax[_0xde4f('0x19')]['updateStatus']=function(_0x2f15fa,_0x3e61bc,_0x3bd73b){var _0x2019a1=this;var _0x1c422d={};if(_0x3e61bc){_0x1c422d={'read':_0x3e61bc};}else{_0x1c422d={'failMessage':_0x3bd73b};}if(this[_0xde4f('0xc')][_0x2f15fa][_0xde4f('0x41')]){faxMessage[_0xde4f('0x42')](this[_0xde4f('0xc')][_0x2f15fa][_0xde4f('0x41')],_0x1c422d)[_0xde4f('0x35')](function(_0x57fba2){ut[_0xde4f('0x44')](_0xde4f('0x48'),_0x57fba2);})['catch'](function(_0x47d070){ut[_0xde4f('0x44')](_0xde4f('0x49'),_0x47d070);})[_0xde4f('0x4a')](function(){delete _0x2019a1['channels'][_0x2f15fa];delete _0x2019a1[_0xde4f('0xc')][_0x2f15fa];});}else{ut[_0xde4f('0x44')](_0xde4f('0x4b'));delete this[_0xde4f('0x1a')][_0x2f15fa];delete this[_0xde4f('0xc')][_0x2f15fa];}};Fax['prototype'][_0xde4f('0x4c')]=function(_0x5ea3c2){var _0x17a574=this;if(this['channels'][_0x5ea3c2[_0xde4f('0x1c')]]){if(this['actions'][_0x5ea3c2[_0xde4f('0x1c')]]){this['channels'][_0x5ea3c2[_0xde4f('0x1c')]]['id']=this[_0xde4f('0xc')][_0x5ea3c2[_0xde4f('0x1c')]]['id'];this[_0xde4f('0x1a')][_0x5ea3c2['uniqueid']]['name']=this[_0xde4f('0xc')][_0x5ea3c2['uniqueid']][_0xde4f('0x1d')];}logger[_0xde4f('0x28')](_0x5ea3c2[_0xde4f('0x1c')],this[_0xde4f('0xc')][_0x5ea3c2[_0xde4f('0x1c')]]?_0xde4f('0x4d'):_0xde4f('0x4e'),JSON[_0xde4f('0x3b')](this[_0xde4f('0x1a')][_0x5ea3c2[_0xde4f('0x1c')]]));if(this['actions'][_0x5ea3c2['uniqueid']]){if(this[_0xde4f('0x1a')][_0x5ea3c2[_0xde4f('0x1c')]][_0xde4f('0x4f')]>0x0&&this['channels'][_0x5ea3c2[_0xde4f('0x1c')]][_0xde4f('0x15')]===_0xde4f('0x50')){this[_0xde4f('0x51')](_0x5ea3c2['uniqueid'],!![]);}else{this[_0xde4f('0x51')](_0x5ea3c2[_0xde4f('0x1c')],![],this[_0xde4f('0x1a')][_0x5ea3c2['uniqueid']][_0xde4f('0x52')]?_0xde4f('0x53')+this[_0xde4f('0x1a')][_0x5ea3c2[_0xde4f('0x1c')]][_0xde4f('0x52')]:'SENDING\x20FAILED');}}}};Fax[_0xde4f('0x19')][_0xde4f('0x54')]=function(_0x1a7777){var _0x5aec3f=this;return new BPromise(function(_0x359d17,_0xe853fe){_0x5aec3f[_0xde4f('0x55')](_0x1a7777,_0x5aec3f[_0xde4f('0xa')][_0x1a7777['FaxAccountId']])[_0xde4f('0x35')](function(_0x3c0674){ut['logger'](_0xde4f('0x56'),_0x3c0674);_0x359d17(ut[_0xde4f('0x30')]('Fax\x20received'));})[_0xde4f('0x38')](function(_0x43d218){ut[_0xde4f('0x44')](_0xde4f('0x57'),_0x43d218);updateStatus(_0x1a7777);_0xe853fe(ut[_0xde4f('0x30')](_0xde4f('0x58')));});});};Fax[_0xde4f('0x19')][_0xde4f('0x59')]=function(_0x374c26){var _0x1f7101=this;return new BPromise(function(_0x4b5c0a,_0x5b2065){var _0x1b86d7=_0x1f7101['checkTrunk'](_0x1f7101[_0xde4f('0xa')][_0x374c26['FaxAccountId']][_0xde4f('0x5a')],_0x374c26);if(_0x1b86d7['isValid']){_0x4b5c0a(ut[_0xde4f('0x30')]('Trunk\x20Reachable'));}else{_0x5b2065(ut[_0xde4f('0x30')](_0x1b86d7[_0xde4f('0x30')]));}});};function originate(_0x31a688,_0x735972,_0x15f18a){return new BPromise(function(_0x262dc9,_0x2c536a){if(_0x15f18a){var _0x4e8f4c=util[_0xde4f('0x5b')](_0xde4f('0x5c'),path[_0xde4f('0x32')](_0x31a688['path'])['name'],_0x31a688[_0xde4f('0x2')]);gs[_0xde4f('0x5d')](_0x4e8f4c)[_0xde4f('0x35')](function(){_0x31a688[_0xde4f('0x2')]=util[_0xde4f('0x5b')]('%s/%s.tif',path[_0xde4f('0x32')](_0x31a688['path'])[_0xde4f('0x5e')],path[_0xde4f('0x32')](_0x31a688[_0xde4f('0x2')])[_0xde4f('0x1d')]);_0x735972[_0xde4f('0x5f')]=_0x31a688['path'];ut[_0xde4f('0x44')]('Convert\x20pdf\x20to\x20tif','');ami[_0xde4f('0x60')](ut[_0xde4f('0x61')](_0x31a688,_0x735972))['then'](function(_0x4da1ce){_0x262dc9(_0x4da1ce);})['catch'](function(_0x66109c){_0x2c536a(_0x66109c);});})[_0xde4f('0x38')](function(_0x251e60){_0x2c536a(_0x251e60);});}else{ami['Action'](ut['variablesAction'](_0x31a688,_0x735972))[_0xde4f('0x35')](function(_0x4b0efb){_0x262dc9(_0x4b0efb);})['catch'](function(_0xe41e1c){_0x2c536a(_0xe41e1c);});}});}Fax[_0xde4f('0x19')][_0xde4f('0x55')]=function(_0x498eda,_0x2ca804){var _0x1cc3ec=this;return new BPromise(function(_0x584423,_0x551abf){var _0x191055=uuid['v4']();var _0x57a628=ut[_0xde4f('0x62')](_0x498eda,_0x2ca804);_0x1cc3ec[_0xde4f('0xc')][_0x191055]=new Action(_0x191055,_0x2ca804,_0x498eda);var _0x3866d8=_0x1cc3ec[_0xde4f('0xc')][_0x191055];if(path[_0xde4f('0x32')](_0x498eda[_0xde4f('0x2')])[_0xde4f('0x63')]===_0xde4f('0x33')){originate(_0x3866d8,_0x57a628,!![])['then'](function(_0xcee50c){_0x584423(_0xcee50c);})[_0xde4f('0x38')](function(_0xa819fb){_0x551abf(_0xa819fb);});}else{originate(_0x3866d8,_0x57a628,![])[_0xde4f('0x35')](function(_0x241648){_0x584423(_0x241648);})[_0xde4f('0x38')](function(_0x511508){_0x551abf(_0x511508);});}});};Fax[_0xde4f('0x19')][_0xde4f('0x64')]=function(_0x2c7c7a){return!_[_0xde4f('0x65')](_0x2c7c7a)&&!_[_0xde4f('0x65')](_0x2c7c7a[_0xde4f('0x1d')])&&!_[_0xde4f('0x65')](_0x2c7c7a[_0xde4f('0x66')])&&_0x2c7c7a['active']&&!_[_0xde4f('0x65')](this[_0xde4f('0xb')][util[_0xde4f('0x5b')]('SIP/%s',_0x2c7c7a[_0xde4f('0x1d')])])&&!_['isNil'](this[_0xde4f('0xb')][util[_0xde4f('0x5b')]('SIP/%s',_0x2c7c7a[_0xde4f('0x1d')])][_0xde4f('0x67')])&&(this[_0xde4f('0xb')][util[_0xde4f('0x5b')](_0xde4f('0x68'),_0x2c7c7a['name'])][_0xde4f('0x67')]===_0xde4f('0x69')||this[_0xde4f('0xb')][util['format']('SIP/%s',_0x2c7c7a[_0xde4f('0x1d')])][_0xde4f('0x67')]===_0xde4f('0x6a'));};Fax[_0xde4f('0x19')][_0xde4f('0x6b')]=function(_0xfaef9b,_0x1e10a7){if(!this[_0xde4f('0x64')](_0xfaef9b)){ut[_0xde4f('0x44')](_0xde4f('0x6c'),_[_0xde4f('0x65')](_0xfaef9b)?'':_0xfaef9b['name']+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0xde4f('0x6d')};}if(_['isNil'](_0x1e10a7['fax'])){ut[_0xde4f('0x44')](_0xde4f('0x6e'),JSON[_0xde4f('0x3b')](_0x1e10a7));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0xde4f('0x65')](_0x1e10a7[_0xde4f('0x2')])){ut[_0xde4f('0x44')](_0xde4f('0x6f'),JSON[_0xde4f('0x3b')](_0x1e10a7));return{'isValid':![],'message':_0xde4f('0x70')};}return{'isValid':!![],'message':_0xde4f('0x71')};};module['exports']=Fax;
\ No newline at end of file
+var _0xc884=['hasOwnProperty','exten','localstationid','uniqueid','channel','name','\x20syncNewchannel\x20','actions','info','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','error','\x20notify\x20','\x20receiveFax\x20','stringify','merge','pick','response','reason','AttachmentId','update','logger','catch','[Fax][Message][Error][NoUpdate1]','updateStatus','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','SENDING\x20FAILED','send','execOriginate','[Fax][execOriginate][success]','[Fax][execOriginate][failure]','checkAfterSend','checkTrunk','FaxAccountId','isValid','Trunk\x20Reachable','format','execute','dir','XMF-PATH','Action','variablesAction','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Is\x20Valid','exports','lodash','uuid','moment','path','tiff2pdf','./util/gs','fax','../ami','../rpc/faxAccount','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider'];(function(_0x252885,_0x433e3a){var _0x11d68e=function(_0x308a4f){while(--_0x308a4f){_0x252885['push'](_0x252885['shift']());}};_0x11d68e(++_0x433e3a);}(_0xc884,0xc6));var _0x4c88=function(_0x8a4ee4,_0x3798ac){_0x8a4ee4=_0x8a4ee4-0x0;var _0x234fdf=_0xc884[_0x8a4ee4];return _0x234fdf;};'use strict';var util=require('util');var _=require(_0x4c88('0x0'));var BPromise=require('bluebird');var uuid=require(_0x4c88('0x1'));var moment=require(_0x4c88('0x2'));var path=require(_0x4c88('0x3'));var tiff2pdf=require(_0x4c88('0x4'));var gs=require(_0x4c88('0x5'));var logger=require('../../../config/logger')(_0x4c88('0x6'));var ami=require(_0x4c88('0x7'));var rpcDb=require('./rpcDb');var Channel=require('./channel');var ut=require('./util/util');var Action=require('./action');var faxAccount=require(_0x4c88('0x8'));var attachment=require('../rpc/attachment');var faxMessage=require(_0x4c88('0x9'));function Fax(_0x4efa9e){this[_0x4c88('0xa')]={};this[_0x4c88('0xb')]=_0x4efa9e['faxAccounts'];this[_0x4c88('0xc')]=_0x4efa9e[_0x4c88('0xc')];this['actions']={};ami['on'](_0x4c88('0xd'),this[_0x4c88('0xe')][_0x4c88('0xf')](this));ami['on'](_0x4c88('0x10'),this[_0x4c88('0x11')][_0x4c88('0xf')](this));ami['on'](_0x4c88('0x12'),this[_0x4c88('0x13')]['bind'](this));ami['on'](_0x4c88('0x14'),this[_0x4c88('0x15')][_0x4c88('0xf')](this));ami['on'](_0x4c88('0x16'),this[_0x4c88('0x17')]['bind'](this));ami['on']('receivefax',this[_0x4c88('0x18')][_0x4c88('0xf')](this));ami['on'](_0x4c88('0x19'),this[_0x4c88('0x1a')][_0x4c88('0xf')](this));ami['on'](_0x4c88('0x1b'),this[_0x4c88('0x1c')]['bind'](this));}Fax[_0x4c88('0x1d')][_0x4c88('0xe')]=function(_0x15e378){if(_0x15e378[_0x4c88('0x1e')]===_0x4c88('0x1f')){for(var _0x3c33a5 in this[_0x4c88('0xb')]){if(this[_0x4c88('0xb')][_0x4c88('0x20')](_0x3c33a5)){if(_0x15e378[_0x4c88('0x21')]===this['faxAccounts'][_0x3c33a5][_0x4c88('0x22')]){this[_0x4c88('0xa')][_0x15e378['uniqueid']]={};this['channels'][_0x15e378[_0x4c88('0x23')]][_0x4c88('0x24')]=_0x15e378[_0x4c88('0x24')];this['channels'][_0x15e378[_0x4c88('0x23')]]['id']=this['faxAccounts'][_0x3c33a5]['id'];this[_0x4c88('0xa')][_0x15e378[_0x4c88('0x23')]]['name']=this[_0x4c88('0xb')][_0x3c33a5][_0x4c88('0x25')];logger['info'](_0x15e378[_0x4c88('0x23')],_0x4c88('0x26'));}}}}if(this[_0x4c88('0x27')][_0x15e378[_0x4c88('0x23')]]){this['channels'][_0x15e378[_0x4c88('0x23')]]={};this[_0x4c88('0xa')][_0x15e378[_0x4c88('0x23')]][_0x4c88('0x24')]=_0x15e378[_0x4c88('0x24')];logger[_0x4c88('0x28')](_0x15e378['uniqueid'],'\x20syncNewchannel\x20');}};Fax[_0x4c88('0x1d')]['syncVarSet']=function(_0xea4dcd){if(this[_0x4c88('0xa')][_0xea4dcd['uniqueid']]){for(var _0x4d75fb in _0xea4dcd['variable']){if(_0xea4dcd[_0x4c88('0x29')][_0x4c88('0x20')](_0x4d75fb)){this[_0x4c88('0xa')][_0xea4dcd[_0x4c88('0x23')]][_0x4d75fb]=_0xea4dcd[_0x4c88('0x2a')];}}}};Fax[_0x4c88('0x1d')][_0x4c88('0x13')]=function(_0xcf88f0){if(this[_0x4c88('0xa')][_0xcf88f0['uniqueid']]){this['channels'][_0xcf88f0[_0x4c88('0x23')]]['channelstate']=_0xcf88f0[_0x4c88('0x2b')];this['channels'][_0xcf88f0[_0x4c88('0x23')]]['channelstatedesc']=_0xcf88f0[_0x4c88('0x2c')];}};Fax[_0x4c88('0x1d')][_0x4c88('0x15')]=function(_0x1f81ac){if(this[_0x4c88('0xa')][_0x1f81ac[_0x4c88('0x23')]]){for(var _0xaf8c4e in _0x1f81ac[_0x4c88('0x29')]){if(_0x1f81ac[_0x4c88('0x29')][_0x4c88('0x20')](_0xaf8c4e)){this['channels'][_0x1f81ac[_0x4c88('0x23')]][_0xaf8c4e]=_0x1f81ac[_0x4c88('0x2a')];}}}};Fax[_0x4c88('0x1d')][_0x4c88('0x17')]=function(_0x4c5e7b){if(this[_0x4c88('0xa')][_0x4c5e7b[_0x4c88('0x23')]]){this[_0x4c88('0xa')][_0x4c5e7b['uniqueid']][_0x4c88('0x2d')]=_0x4c5e7b['operation'];this[_0x4c88('0xa')][_0x4c5e7b[_0x4c88('0x23')]][_0x4c88('0x2e')]=_0x4c5e7b[_0x4c88('0x2e')];this[_0x4c88('0xa')][_0x4c5e7b['uniqueid']][_0x4c88('0x22')]=_0x4c5e7b[_0x4c88('0x22')];this['channels'][_0x4c5e7b[_0x4c88('0x23')]][_0x4c88('0x2f')]=_0x4c5e7b[_0x4c88('0x2f')];logger[_0x4c88('0x28')](_0x4c5e7b[_0x4c88('0x23')],_0x4c88('0x30'));}};Fax[_0x4c88('0x1d')][_0x4c88('0x18')]=function(_0x4af8d1){var _0x440bac=this;if(this[_0x4c88('0xa')][_0x4af8d1[_0x4c88('0x23')]]){var _0x47e614=this[_0x4c88('0xa')][_0x4af8d1[_0x4c88('0x23')]]['id'];this[_0x4c88('0xa')][_0x4af8d1[_0x4c88('0x23')]]['remotestationid']=_0x4af8d1[_0x4c88('0x31')];this[_0x4c88('0xa')][_0x4af8d1['uniqueid']][_0x4c88('0x32')]=_0x4af8d1[_0x4c88('0x32')];this[_0x4c88('0xa')][_0x4af8d1['uniqueid']]['localstationid']=_0x4af8d1[_0x4c88('0x22')];this['channels'][_0x4af8d1[_0x4c88('0x23')]]['resolution']=_0x4af8d1[_0x4c88('0x33')];this[_0x4c88('0xa')][_0x4af8d1['uniqueid']]['transferrate']=_0x4af8d1[_0x4c88('0x34')];this['channels'][_0x4af8d1['uniqueid']][_0x4c88('0x2f')]=_0x4af8d1[_0x4c88('0x2f')];this['channels'][_0x4af8d1['uniqueid']][_0x4c88('0x35')]=_0x4af8d1['calleridnum'];if(this['channels'][_0x4af8d1[_0x4c88('0x23')]][_0x4c88('0x32')]>0x0){tiff2pdf(_0x4af8d1[_0x4c88('0x2f')],_0x4c88('0x36'),function(_0x2c1875){logger[_0x4c88('0x28')](_0x4af8d1['uniqueid'],_0x4c88('0x37'),_0x2c1875[_0x4c88('0x38')]);attachment[_0x4c88('0x39')]({'name':path[_0x4c88('0x3a')](_0x4af8d1[_0x4c88('0x2f')])[_0x4c88('0x25')],'basename':path[_0x4c88('0x3a')](_0x4af8d1[_0x4c88('0x2f')])[_0x4c88('0x25')]+_0x4c88('0x3b'),'type':_0x4c88('0x3c')})[_0x4c88('0x3d')](function(_0x9ad16f){faxAccount['notify'](_0x47e614,{'from':_0x4af8d1[_0x4c88('0x35')],'mapKey':_0x4c88('0x6'),'body':path[_0x4c88('0x3a')](_0x4af8d1[_0x4c88('0x2f')])['name']+'.pdf','AttachmentId':_0x9ad16f['id']})['catch'](function(_0x370b42){logger[_0x4c88('0x3e')](_0x4af8d1[_0x4c88('0x23')],_0x4c88('0x3f'),JSON['stringify'](_0x370b42));});})['catch'](function(_0x54815f){logger['error'](_0x4af8d1[_0x4c88('0x23')],_0x4c88('0x40'),JSON[_0x4c88('0x41')](_0x54815f));});});}logger['info'](_0x4af8d1[_0x4c88('0x23')],_0x4c88('0x40'));}};Fax[_0x4c88('0x1d')][_0x4c88('0x1c')]=function(_0x4e40c1){if(this[_0x4c88('0x27')][_0x4e40c1[_0x4c88('0x23')]]){_[_0x4c88('0x42')](this['channels'][_0x4e40c1['uniqueid']],_[_0x4c88('0x43')](_0x4e40c1,[_0x4c88('0x44'),_0x4c88('0x45')]));}};function updateStatus(_0x59a007){if(_0x59a007[_0x4c88('0x46')]){faxMessage[_0x4c88('0x47')](_0x59a007[_0x4c88('0x46')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x4c88('0x3d')](function(_0x32468f){ut[_0x4c88('0x48')]('[Fax][Message][Error][Updated]',_0x32468f);})[_0x4c88('0x49')](function(_0x3bf093){ut[_0x4c88('0x48')](_0x4c88('0x4a'),_0x3bf093);});}else{ut[_0x4c88('0x48')]('[Fax][Message][Error][NoUpdate2]');}}Fax[_0x4c88('0x1d')][_0x4c88('0x4b')]=function(_0x126046,_0x52b05d,_0x293826){var _0x2ccb18=this;var _0x548570={};if(_0x52b05d){_0x548570={'read':_0x52b05d};}else{_0x548570={'failMessage':_0x293826};}if(this[_0x4c88('0x27')][_0x126046]['AttachmentId']){faxMessage['update'](this[_0x4c88('0x27')][_0x126046][_0x4c88('0x46')],_0x548570)[_0x4c88('0x3d')](function(_0x1e42b4){ut[_0x4c88('0x48')]('[Fax][Message][Updated]',_0x1e42b4);})[_0x4c88('0x49')](function(_0x453568){ut[_0x4c88('0x48')](_0x4c88('0x4c'),_0x453568);})[_0x4c88('0x4d')](function(){delete _0x2ccb18['channels'][_0x126046];delete _0x2ccb18[_0x4c88('0x27')][_0x126046];});}else{ut[_0x4c88('0x48')](_0x4c88('0x4e'));delete this[_0x4c88('0xa')][_0x126046];delete this['actions'][_0x126046];}};Fax[_0x4c88('0x1d')]['syncHangup']=function(_0x2924fa){var _0x471af7=this;if(this[_0x4c88('0xa')][_0x2924fa[_0x4c88('0x23')]]){if(this[_0x4c88('0x27')][_0x2924fa['uniqueid']]){this[_0x4c88('0xa')][_0x2924fa[_0x4c88('0x23')]]['id']=this[_0x4c88('0x27')][_0x2924fa[_0x4c88('0x23')]]['id'];this['channels'][_0x2924fa['uniqueid']][_0x4c88('0x25')]=this[_0x4c88('0x27')][_0x2924fa['uniqueid']]['name'];}logger[_0x4c88('0x28')](_0x2924fa['uniqueid'],this[_0x4c88('0x27')][_0x2924fa['uniqueid']]?_0x4c88('0x4f'):_0x4c88('0x50'),JSON[_0x4c88('0x41')](this[_0x4c88('0xa')][_0x2924fa[_0x4c88('0x23')]]));if(this[_0x4c88('0x27')][_0x2924fa[_0x4c88('0x23')]]){if(this[_0x4c88('0xa')][_0x2924fa[_0x4c88('0x23')]][_0x4c88('0x51')]>0x0&&this['channels'][_0x2924fa['uniqueid']][_0x4c88('0x16')]===_0x4c88('0x52')){this[_0x4c88('0x4b')](_0x2924fa[_0x4c88('0x23')],!![]);}else{this['updateStatus'](_0x2924fa['uniqueid'],![],this[_0x4c88('0xa')][_0x2924fa[_0x4c88('0x23')]]['faxstatusstring']?_0x4c88('0x53')+this['channels'][_0x2924fa[_0x4c88('0x23')]][_0x4c88('0x54')]:_0x4c88('0x55'));}}}};Fax[_0x4c88('0x1d')][_0x4c88('0x56')]=function(_0xd1c35d){var _0x6325fa=this;return new BPromise(function(_0x23a6e3,_0x1bb074){_0x6325fa[_0x4c88('0x57')](_0xd1c35d,_0x6325fa[_0x4c88('0xb')][_0xd1c35d['FaxAccountId']])[_0x4c88('0x3d')](function(_0x2126ce){ut[_0x4c88('0x48')](_0x4c88('0x58'),_0x2126ce);_0x23a6e3(ut[_0x4c88('0x38')]('Fax\x20received'));})[_0x4c88('0x49')](function(_0xbab03){ut[_0x4c88('0x48')](_0x4c88('0x59'),_0xbab03);updateStatus(_0xd1c35d);_0x1bb074(ut[_0x4c88('0x38')]('Fax\x20failed'));});});};Fax[_0x4c88('0x1d')][_0x4c88('0x5a')]=function(_0x1ed8b2){var _0x5c4960=this;return new BPromise(function(_0x451f13,_0x555e9c){var _0x4b7fc8=_0x5c4960[_0x4c88('0x5b')](_0x5c4960[_0x4c88('0xb')][_0x1ed8b2[_0x4c88('0x5c')]]['Trunk'],_0x1ed8b2);if(_0x4b7fc8[_0x4c88('0x5d')]){_0x451f13(ut['message'](_0x4c88('0x5e')));}else{_0x555e9c(ut[_0x4c88('0x38')](_0x4b7fc8[_0x4c88('0x38')]));}});};function originate(_0x418a30,_0x5dc728,_0x22ddb7){return new BPromise(function(_0x2d811f,_0x48b9b2){if(_0x22ddb7){var _0x4f29aa=util[_0x4c88('0x5f')]('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[_0x4c88('0x3a')](_0x418a30[_0x4c88('0x3')])[_0x4c88('0x25')],_0x418a30[_0x4c88('0x3')]);gs[_0x4c88('0x60')](_0x4f29aa)[_0x4c88('0x3d')](function(){_0x418a30[_0x4c88('0x3')]=util[_0x4c88('0x5f')]('%s/%s.tif',path[_0x4c88('0x3a')](_0x418a30['path'])[_0x4c88('0x61')],path[_0x4c88('0x3a')](_0x418a30['path'])['name']);_0x5dc728[_0x4c88('0x62')]=_0x418a30[_0x4c88('0x3')];ut[_0x4c88('0x48')]('Convert\x20pdf\x20to\x20tif','');ami[_0x4c88('0x63')](ut[_0x4c88('0x64')](_0x418a30,_0x5dc728))[_0x4c88('0x3d')](function(_0x844034){_0x2d811f(_0x844034);})['catch'](function(_0x542d87){_0x48b9b2(_0x542d87);});})['catch'](function(_0x3f1bef){_0x48b9b2(_0x3f1bef);});}else{ami['Action'](ut['variablesAction'](_0x418a30,_0x5dc728))['then'](function(_0x1043bd){_0x2d811f(_0x1043bd);})['catch'](function(_0x25c1d6){_0x48b9b2(_0x25c1d6);});}});}Fax[_0x4c88('0x1d')][_0x4c88('0x57')]=function(_0xe07a25,_0x2248ef){var _0x586b70=this;return new BPromise(function(_0x4054c6,_0x47e3a0){var _0x3a5dea=uuid['v4']();var _0x2b432e=ut['addVariables'](_0xe07a25,_0x2248ef);_0x586b70[_0x4c88('0x27')][_0x3a5dea]=new Action(_0x3a5dea,_0x2248ef,_0xe07a25);var _0x3c5f1f=_0x586b70['actions'][_0x3a5dea];if(path[_0x4c88('0x3a')](_0xe07a25['path'])['ext']==='.pdf'){originate(_0x3c5f1f,_0x2b432e,!![])[_0x4c88('0x3d')](function(_0x1ebd4a){_0x4054c6(_0x1ebd4a);})[_0x4c88('0x49')](function(_0x520400){_0x47e3a0(_0x520400);});}else{originate(_0x3c5f1f,_0x2b432e,![])[_0x4c88('0x3d')](function(_0x107876){_0x4054c6(_0x107876);})[_0x4c88('0x49')](function(_0x2362fc){_0x47e3a0(_0x2362fc);});}});};Fax[_0x4c88('0x1d')][_0x4c88('0x65')]=function(_0x6a9c2d){return!_[_0x4c88('0x66')](_0x6a9c2d)&&!_[_0x4c88('0x66')](_0x6a9c2d[_0x4c88('0x25')])&&!_[_0x4c88('0x66')](_0x6a9c2d['active'])&&_0x6a9c2d[_0x4c88('0x67')]&&!_['isNil'](this[_0x4c88('0xc')][util[_0x4c88('0x5f')](_0x4c88('0x68'),_0x6a9c2d[_0x4c88('0x25')])])&&!_[_0x4c88('0x66')](this[_0x4c88('0xc')][util[_0x4c88('0x5f')](_0x4c88('0x68'),_0x6a9c2d[_0x4c88('0x25')])][_0x4c88('0x2e')])&&(this[_0x4c88('0xc')][util[_0x4c88('0x5f')](_0x4c88('0x68'),_0x6a9c2d['name'])][_0x4c88('0x2e')]===_0x4c88('0x69')||this['trunks'][util[_0x4c88('0x5f')](_0x4c88('0x68'),_0x6a9c2d['name'])]['status']===_0x4c88('0x6a'));};Fax[_0x4c88('0x1d')][_0x4c88('0x5b')]=function(_0x2d75d2,_0x3bac6f){if(!this[_0x4c88('0x65')](_0x2d75d2)){ut['logger'](_0x4c88('0x6b'),_[_0x4c88('0x66')](_0x2d75d2)?'':_0x2d75d2[_0x4c88('0x25')]+_0x4c88('0x6c'));return{'isValid':![],'message':_0x4c88('0x6d')};}if(_['isNil'](_0x3bac6f[_0x4c88('0x6')])){ut[_0x4c88('0x48')](_0x4c88('0x6e'),JSON['stringify'](_0x3bac6f));return{'isValid':![],'message':_0x4c88('0x6f')};}if(_['isNil'](_0x3bac6f['path'])){ut[_0x4c88('0x48')](_0x4c88('0x70'),JSON[_0x4c88('0x41')](_0x3bac6f));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':_0x4c88('0x71')};};module[_0x4c88('0x72')]=Fax;
\ No newline at end of file
index 6697aaf..34cd68d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0844=['error','inspect','catch','[Notify]\x20','util','preview','lodash','../rpc/faxAccount'];(function(_0x49d4d0,_0x586c1d){var _0x12bccf=function(_0xffb899){while(--_0xffb899){_0x49d4d0['push'](_0x49d4d0['shift']());}};_0x12bccf(++_0x586c1d);}(_0x0844,0x14c));var _0x4084=function(_0x4196c9,_0x103775){_0x4196c9=_0x4196c9-0x0;var _0xa05df4=_0x0844[_0x4196c9];return _0xa05df4;};'use strict';var util=require(_0x4084('0x0'));var BPromise=require('bluebird');var logger=require('../../../config/logger')(_0x4084('0x1'));var _=require(_0x4084('0x2'));var faxAccount=require(_0x4084('0x3'));function loggerCatch(_0x54a5bc){return function(_0x28d6df){logger[_0x4084('0x4')](_0x54a5bc,util[_0x4084('0x5')](_0x28d6df,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x154f30,_0x41ab7a){return BPromise['resolve']()['then'](faxAccount['notify'](_0x154f30,_0x41ab7a))[_0x4084('0x6')](loggerCatch(_0x4084('0x7')));};
\ No newline at end of file
+var _0x523d=['bluebird','../../../config/logger','lodash','../rpc/faxAccount','error','inspect','then','catch','[Notify]\x20','util'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x523d,0x1d5));var _0xd523=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x523d[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0xd523('0x0'));var BPromise=require(_0xd523('0x1'));var logger=require(_0xd523('0x2'))('preview');var _=require(_0xd523('0x3'));var faxAccount=require(_0xd523('0x4'));function loggerCatch(_0x324612){return function(_0x556709){logger[_0xd523('0x5')](_0x324612,util[_0xd523('0x6')](_0x556709,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x406e40,_0x4fade4){return BPromise['resolve']()[_0xd523('0x7')](faxAccount['notify'](_0x406e40,_0x4fade4))[_0xd523('0x8')](loggerCatch(_0xd523('0x9')));};
\ No newline at end of file
index ab2c346..7071ca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6de=['\x20Error\x20:','../../../../config/logger','fax','bluebird','child_process','execute','info','Exec\x20gs'];(function(_0x41bfa8,_0x2222f0){var _0x5a689e=function(_0x9c9b27){while(--_0x9c9b27){_0x41bfa8['push'](_0x41bfa8['shift']());}};_0x5a689e(++_0x2222f0);}(_0xd6de,0xa1));var _0xed6d=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xd6de[_0x46698a];return _0x356db0;};'use strict';var util=require('util');var logger=require(_0xed6d('0x0'))(_0xed6d('0x1'));var BPromise=require(_0xed6d('0x2'));var exec=require(_0xed6d('0x3'))['exec'];exports[_0xed6d('0x4')]=function(_0x542c67){return new BPromise(function(_0x2c1656,_0xbfeccc){exec(_0x542c67,function(_0x5a21dc,_0xb166a,_0xbf9186){logger[_0xed6d('0x5')](_0xed6d('0x6'),_0xb166a);if(_0x5a21dc){logger['info']('Exec\x20gs',_0xed6d('0x7'),util['inspect'](_0x5a21dc,{'showHidden':![],'depth':null}),_0xb166a,_0xbf9186);_0xbfeccc(_0x5a21dc);}_0x2c1656(_0xb166a);});});};
\ No newline at end of file
+var _0xec85=['exec','execute','info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','bluebird','child_process'];(function(_0x2d909d,_0x2e2072){var _0x40cc8d=function(_0x3733e3){while(--_0x3733e3){_0x2d909d['push'](_0x2d909d['shift']());}};_0x40cc8d(++_0x2e2072);}(_0xec85,0x9f));var _0x5ec8=function(_0x53a51d,_0x3ab5fe){_0x53a51d=_0x53a51d-0x0;var _0x5c8a7b=_0xec85[_0x53a51d];return _0x5c8a7b;};'use strict';var util=require('util');var logger=require(_0x5ec8('0x0'))('fax');var BPromise=require(_0x5ec8('0x1'));var exec=require(_0x5ec8('0x2'))[_0x5ec8('0x3')];exports[_0x5ec8('0x4')]=function(_0x224f15){return new BPromise(function(_0x38056e,_0x35a933){exec(_0x224f15,function(_0x26beeb,_0x314bbe,_0x180140){logger['info']('Exec\x20gs',_0x314bbe);if(_0x26beeb){logger[_0x5ec8('0x5')](_0x5ec8('0x6'),_0x5ec8('0x7'),util[_0x5ec8('0x8')](_0x26beeb,{'showHidden':![],'depth':null}),_0x314bbe,_0x180140);_0x35a933(_0x26beeb);}_0x38056e(_0x314bbe);});});};
\ No newline at end of file
index f59c2d2..a8891b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6cd=['info','inspect','addVariables','headerinfo','minrate','maxrate','\x22%s\x22','modem','faxdetect','localstationid','variablesAction','uniqueid','channel','xcally-motion-fax','from-sip','format','\x22%s\x22\x20<%s>','util','moment','fax','message','logger'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xd6cd,0x19d));var _0xdd6c=function(_0x9dab17,_0x2283f3){_0x9dab17=_0x9dab17-0x0;var _0x370f25=_0xd6cd[_0x9dab17];return _0x370f25;};'use strict';var util=require(_0xdd6c('0x0'));var _=require('lodash');var moment=require(_0xdd6c('0x1'));var logger=require('../../../../config/logger')(_0xdd6c('0x2'));exports[_0xdd6c('0x3')]=function(_0x488207){return{'message':_0x488207};};exports[_0xdd6c('0x4')]=function(_0x3ee5a2,_0x3e669a){logger[_0xdd6c('0x5')](_0x3ee5a2,util[_0xdd6c('0x6')](_0x3e669a,{'showHidden':![],'depth':null}));};exports[_0xdd6c('0x7')]=function(_0x10b8b9,_0x497504){var _0x2a2ee3={'XMF-ECM':_0x497504['ecm'],'XMF-HEADERINFO':_0x497504[_0xdd6c('0x8')],'XMF-MINRATE':_0x497504[_0xdd6c('0x9')],'XMF-MAXRATE':_0x497504[_0xdd6c('0xa')],'XMF-MODEM':util['format'](_0xdd6c('0xb'),_0x497504[_0xdd6c('0xc')]),'XMF-GATEWAY':_0x497504['gateway'],'XMF-FAXDETECT':_0x497504[_0xdd6c('0xd')],'XMF-T38TIMEOUT':_0x497504['t38timeout'],'XMF-LOCALSTATIONID':_0x497504[_0xdd6c('0xe')],'XMF-PATH':_0x10b8b9['path']};return _0x2a2ee3;};exports[_0xdd6c('0xf')]=function(_0x1f37a5,_0x55df79){return{'actionid':_0x1f37a5[_0xdd6c('0x10')],'action':'originate','channel':_0x1f37a5[_0xdd6c('0x11')],'Exten':_0xdd6c('0x12'),'Context':_0xdd6c('0x13'),'Priority':'1','callerid':util[_0xdd6c('0x14')](_0xdd6c('0x15'),_0x1f37a5['headerinfo']?_0x1f37a5['headerinfo']:'',_0x1f37a5[_0xdd6c('0xe')]),'variable':_0x55df79,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x1f37a5[_0xdd6c('0x10')]};};
\ No newline at end of file
+var _0x9e07=['originate','channel','xcally-motion-fax','\x22%s\x22\x20<%s>','util','../../../../config/logger','fax','logger','info','inspect','addVariables','headerinfo','minrate','maxrate','format','\x22%s\x22','t38timeout','localstationid','path','variablesAction'];(function(_0x25c2a6,_0xdc531d){var _0x23bd32=function(_0x74b79f){while(--_0x74b79f){_0x25c2a6['push'](_0x25c2a6['shift']());}};_0x23bd32(++_0xdc531d);}(_0x9e07,0xe0));var _0x79e0=function(_0x344847,_0x4f22a8){_0x344847=_0x344847-0x0;var _0x3fdb49=_0x9e07[_0x344847];return _0x3fdb49;};'use strict';var util=require(_0x79e0('0x0'));var _=require('lodash');var moment=require('moment');var logger=require(_0x79e0('0x1'))(_0x79e0('0x2'));exports['message']=function(_0x53783a){return{'message':_0x53783a};};exports[_0x79e0('0x3')]=function(_0x5e2903,_0x2edbc1){logger[_0x79e0('0x4')](_0x5e2903,util[_0x79e0('0x5')](_0x2edbc1,{'showHidden':![],'depth':null}));};exports[_0x79e0('0x6')]=function(_0x31401e,_0x4fe87b){var _0x82e539={'XMF-ECM':_0x4fe87b['ecm'],'XMF-HEADERINFO':_0x4fe87b[_0x79e0('0x7')],'XMF-MINRATE':_0x4fe87b[_0x79e0('0x8')],'XMF-MAXRATE':_0x4fe87b[_0x79e0('0x9')],'XMF-MODEM':util[_0x79e0('0xa')](_0x79e0('0xb'),_0x4fe87b['modem']),'XMF-GATEWAY':_0x4fe87b['gateway'],'XMF-FAXDETECT':_0x4fe87b['faxdetect'],'XMF-T38TIMEOUT':_0x4fe87b[_0x79e0('0xc')],'XMF-LOCALSTATIONID':_0x4fe87b[_0x79e0('0xd')],'XMF-PATH':_0x31401e[_0x79e0('0xe')]};return _0x82e539;};exports[_0x79e0('0xf')]=function(_0x3a406e,_0xa18b9c){return{'actionid':_0x3a406e['uniqueid'],'action':_0x79e0('0x10'),'channel':_0x3a406e[_0x79e0('0x11')],'Exten':_0x79e0('0x12'),'Context':'from-sip','Priority':'1','callerid':util['format'](_0x79e0('0x13'),_0x3a406e[_0x79e0('0x7')]?_0x3a406e[_0x79e0('0x7')]:'',_0x3a406e[_0x79e0('0xd')]),'variable':_0xa18b9c,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3a406e['uniqueid']};};
\ No newline at end of file
index 16a146c..1ba9b16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7d2=['get','hour','resolve','then','initAgents','getTelephones','getVoiceQueues','initVoiceQueues','getTriggers','initTemplates','getZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','initCampaigns','getVoiceExtensions','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','listen','sync','log','util','moment','./server','./realtime','./report','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow'];(function(_0x1ddedd,_0x485606){var _0xa3e1ac=function(_0x580444){while(--_0x580444){_0x1ddedd['push'](_0x1ddedd['shift']());}};_0xa3e1ac(++_0x485606);}(_0xd7d2,0xa9));var _0x2d7d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd7d2[_0x20a584];return _0x4b41a8;};'use strict';var BPromise=require('bluebird');var util=require(_0x2d7d('0x0'));var moment=require(_0x2d7d('0x1'));var server=require(_0x2d7d('0x2'));var Realtime=require(_0x2d7d('0x3'));var Report=require(_0x2d7d('0x4'));var Acw=require('./acw');var Trigger=require(_0x2d7d('0x5'));var Dialer=require(_0x2d7d('0x6'));var Preview=require(_0x2d7d('0x7'));var Fax=require(_0x2d7d('0x8'));var user=require(_0x2d7d('0x9'));var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x2d7d('0xa'));var trunk=require(_0x2d7d('0xb'));var trigger=require(_0x2d7d('0xc'));var template=require(_0x2d7d('0xd'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x2d7d('0xe'));var voiceExtension=require(_0x2d7d('0xf'));var faxAccount=require(_0x2d7d('0x10'));var zendesk=require(_0x2d7d('0x11'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x2d7d('0x12'));var freshdesk=require(_0x2d7d('0x13'));var desk=require('./rpc/integrations/desk');var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x2d7d('0x14'));var freshsales=require(_0x2d7d('0x15'));var servicenow=require(_0x2d7d('0x16'));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()[_0x2d7d('0x17')](_0x2d7d('0x18'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x2d7d('0x17')](_0x2d7d('0x18'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x2d7d('0x19')]()[_0x2d7d('0x1a')](user['getAgents']())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x1b')]())['then'](user[_0x2d7d('0x1c')]())[_0x2d7d('0x1a')](realtime['initTelephones']())['then'](trunk['getTrunks']())[_0x2d7d('0x1a')](realtime['initTrunks']())[_0x2d7d('0x1a')](voiceQueue[_0x2d7d('0x1d')]())['then'](realtime[_0x2d7d('0x1e')]())[_0x2d7d('0x1a')](trigger[_0x2d7d('0x1f')]())[_0x2d7d('0x1a')](realtime['initTriggers']())[_0x2d7d('0x1a')](template['getTemplates']())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x20')]())[_0x2d7d('0x1a')](zendesk[_0x2d7d('0x21')]())['then'](realtime['initZendeskAccounts']())['then'](salesforce[_0x2d7d('0x22')]())['then'](realtime[_0x2d7d('0x23')]())[_0x2d7d('0x1a')](sugarcrm[_0x2d7d('0x24')]())['then'](realtime[_0x2d7d('0x25')]())['then'](freshdesk['getFreshdeskAccounts']())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x26')]())['then'](desk[_0x2d7d('0x27')]())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x28')]())[_0x2d7d('0x1a')](zoho[_0x2d7d('0x29')]())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x2a')]())[_0x2d7d('0x1a')](vtiger[_0x2d7d('0x2b')]())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x2c')]())['then'](freshsales[_0x2d7d('0x2d')]())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x2e')]())['then'](servicenow[_0x2d7d('0x2f')]())['then'](realtime['initServicenowAccounts']())[_0x2d7d('0x1a')](dynamics365[_0x2d7d('0x30')]())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x31')]())[_0x2d7d('0x1a')](campaign['getCampaigns']())['then'](realtime[_0x2d7d('0x32')]())[_0x2d7d('0x1a')](voiceExtension[_0x2d7d('0x33')]())['then'](realtime['initVoiceExtensions']())[_0x2d7d('0x1a')](faxAccount['getFaxAccounts']())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x34')]())['then'](function(){return realtime;});}function initParams(){return BPromise['resolve']()[_0x2d7d('0x1a')](voiceQueueReport[_0x2d7d('0x35')]())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x36')]())[_0x2d7d('0x1a')](cmHopperHistory[_0x2d7d('0x37')]())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x38')]())[_0x2d7d('0x1a')](cmHopperHistory['getCampaignHopperHistory']())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x39')]())[_0x2d7d('0x1a')](voiceCallReport[_0x2d7d('0x3a')]())[_0x2d7d('0x1a')](realtime[_0x2d7d('0x3b')]())[_0x2d7d('0x1a')](function(_0x22a5a6){})[_0x2d7d('0x3c')](function(_0x108ed3){console['log'](_0x108ed3);});}function main(){return server[_0x2d7d('0x3d')](realtime,preview,fax)[_0x2d7d('0x1a')](function(_0x31da4e){return initRealtime();})[_0x2d7d('0x1a')](function(){return initParams();})[_0x2d7d('0x1a')](function(){report[_0x2d7d('0x3e')]();setInterval(initRealtime,0x1388);})[_0x2d7d('0x3c')](function(_0x9f985f){console[_0x2d7d('0x3f')](_0x9f985f);});}main();
\ No newline at end of file
+var _0xb2e0=['./rpc/integrations/vtiger','./rpc/integrations/freshsales','get','hour','then','initAgents','getTelephones','getTrunks','initTrunks','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSugarcrmAccounts','getFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','listen','sync','bluebird','util','moment','./server','./realtime','./acw','./trigger','./dialer','./preview','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho'];(function(_0x28658b,_0x1c8a1e){var _0x58b430=function(_0x7e9bfb){while(--_0x7e9bfb){_0x28658b['push'](_0x28658b['shift']());}};_0x58b430(++_0x1c8a1e);}(_0xb2e0,0xb2));var _0x0b2e=function(_0x28ee3b,_0x1ee01a){_0x28ee3b=_0x28ee3b-0x0;var _0x461614=_0xb2e0[_0x28ee3b];return _0x461614;};'use strict';var BPromise=require(_0x0b2e('0x0'));var util=require(_0x0b2e('0x1'));var moment=require(_0x0b2e('0x2'));var server=require(_0x0b2e('0x3'));var Realtime=require(_0x0b2e('0x4'));var Report=require('./report');var Acw=require(_0x0b2e('0x5'));var Trigger=require(_0x0b2e('0x6'));var Dialer=require(_0x0b2e('0x7'));var Preview=require(_0x0b2e('0x8'));var Fax=require('./fax');var user=require(_0x0b2e('0x9'));var voiceQueue=require(_0x0b2e('0xa'));var voiceQueueReport=require(_0x0b2e('0xb'));var voiceCallReport=require(_0x0b2e('0xc'));var trunk=require(_0x0b2e('0xd'));var trigger=require(_0x0b2e('0xe'));var template=require(_0x0b2e('0xf'));var cmHopperHistory=require(_0x0b2e('0x10'));var campaign=require(_0x0b2e('0x11'));var voiceExtension=require(_0x0b2e('0x12'));var faxAccount=require(_0x0b2e('0x13'));var zendesk=require(_0x0b2e('0x14'));var salesforce=require(_0x0b2e('0x15'));var sugarcrm=require(_0x0b2e('0x16'));var freshdesk=require(_0x0b2e('0x17'));var desk=require(_0x0b2e('0x18'));var zoho=require(_0x0b2e('0x19'));var vtiger=require(_0x0b2e('0x1a'));var freshsales=require(_0x0b2e('0x1b'));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()[_0x0b2e('0x1c')](_0x0b2e('0x1d'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x0b2e('0x1c')](_0x0b2e('0x1d'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0x0b2e('0x1e')](user['getAgents']())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x1f')]())[_0x0b2e('0x1e')](user[_0x0b2e('0x20')]())[_0x0b2e('0x1e')](realtime['initTelephones']())['then'](trunk[_0x0b2e('0x21')]())['then'](realtime[_0x0b2e('0x22')]())[_0x0b2e('0x1e')](voiceQueue['getVoiceQueues']())['then'](realtime[_0x0b2e('0x23')]())[_0x0b2e('0x1e')](trigger[_0x0b2e('0x24')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x25')]())['then'](template[_0x0b2e('0x26')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x27')]())[_0x0b2e('0x1e')](zendesk['getZendeskAccounts']())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x28')]())[_0x0b2e('0x1e')](salesforce[_0x0b2e('0x29')]())[_0x0b2e('0x1e')](realtime['initSalesforceAccounts']())['then'](sugarcrm['getSugarcrmAccounts']())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x2a')]())[_0x0b2e('0x1e')](freshdesk[_0x0b2e('0x2b')]())[_0x0b2e('0x1e')](realtime['initFreshdeskAccounts']())[_0x0b2e('0x1e')](desk[_0x0b2e('0x2c')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x2d')]())['then'](zoho[_0x0b2e('0x2e')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x2f')]())['then'](vtiger[_0x0b2e('0x30')]())[_0x0b2e('0x1e')](realtime['initVtigerAccounts']())['then'](freshsales[_0x0b2e('0x31')]())['then'](realtime[_0x0b2e('0x32')]())[_0x0b2e('0x1e')](servicenow['getServicenowAccounts']())['then'](realtime['initServicenowAccounts']())[_0x0b2e('0x1e')](dynamics365[_0x0b2e('0x33')]())[_0x0b2e('0x1e')](realtime['initDynamics365Accounts']())[_0x0b2e('0x1e')](campaign['getCampaigns']())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x34')]())['then'](voiceExtension[_0x0b2e('0x35')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x36')]())['then'](faxAccount[_0x0b2e('0x37')]())[_0x0b2e('0x1e')](realtime['initFaxAccounts']())[_0x0b2e('0x1e')](function(){return realtime;});}function initParams(){return BPromise[_0x0b2e('0x38')]()[_0x0b2e('0x1e')](voiceQueueReport[_0x0b2e('0x39')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x3a')]())['then'](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x3b')]())['then'](cmHopperHistory[_0x0b2e('0x3c')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x3d')]())[_0x0b2e('0x1e')](voiceCallReport[_0x0b2e('0x3e')]())[_0x0b2e('0x1e')](realtime[_0x0b2e('0x3f')]())[_0x0b2e('0x1e')](function(_0x4880f1){})[_0x0b2e('0x40')](function(_0x2961e7){console[_0x0b2e('0x41')](_0x2961e7);});}function main(){return server[_0x0b2e('0x42')](realtime,preview,fax)[_0x0b2e('0x1e')](function(_0x12e3be){return initRealtime();})['then'](function(){return initParams();})[_0x0b2e('0x1e')](function(){report[_0x0b2e('0x43')]();setInterval(initRealtime,0x1388);})[_0x0b2e('0x40')](function(_0x45dddb){console[_0x0b2e('0x41')](_0x45dddb);});}main();
\ No newline at end of file
index 35ea650..b2c6ea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2db63f,_0x5e3dcc){var _0x2da78c=function(_0x3598ea){while(--_0x3598ea){_0x2db63f['push'](_0x2db63f['shift']());}};_0x2da78c(++_0x5e3dcc);}(_0x9c44,0x178));var _0x49c4=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x9c44[_0x15bc81];return _0x59440e;};'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
+var _0xedd9=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','prototype','updateStatusRealtime','state','toLowerCase','idle','inuse','talking','statePause','toNumber','interface','format','user:%s','user:save','emit','user:presence','exports','util','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','unknown','status'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xedd9,0xfc));var _0x9edd=function(_0x48ceb0,_0x50214a){_0x48ceb0=_0x48ceb0-0x0;var _0xa2322d=_0xedd9[_0x48ceb0];return _0xa2322d;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var md5=require(_0x9edd('0x2'));var Redis=require(_0x9edd('0x3'));var config=require(_0x9edd('0x4'));config[_0x9edd('0x5')]=_[_0x9edd('0x6')](config[_0x9edd('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x9edd('0x7'))(new Redis(config[_0x9edd('0x5')]));function Agent(_0x268f9e){this['id']=_0x268f9e['id']||0x0;this[_0x9edd('0x8')]=_0x268f9e['name']||'';this[_0x9edd('0x9')]=_0x268f9e['email']||'';this[_0x9edd('0xa')]=_0x268f9e[_0x9edd('0xa')]||'';this[_0x9edd('0xb')]=_0x268f9e[_0x9edd('0xb')]||'';this['state']=_0x9edd('0xc');this['stateTime']=0x0;this[_0x9edd('0xd')]=_0x9edd('0xc');this['address']='';this[_0x9edd('0xe')]='';this[_0x9edd('0xf')]='';this['interface']='';this[_0x9edd('0x10')]=_0x268f9e[_0x9edd('0x10')]||![];this[_0x9edd('0x11')]=_0x9edd('0xc');this[_0x9edd('0x12')]=0x0;this[_0x9edd('0x13')]='';this[_0x9edd('0x14')]='';this[_0x9edd('0x15')]=![];this['local']=![];this[_0x9edd('0x2')]='';}Agent[_0x9edd('0x16')][_0x9edd('0x17')]=function(_0x4d9a7){var _0x13b6b6;if(_0x4d9a7&&_0x4d9a7[_0x9edd('0x18')]){_0x13b6b6=_0x4d9a7[_0x9edd('0x18')][_0x9edd('0x19')]();switch(_0x13b6b6){case'not_inuse':_0x13b6b6=_0x9edd('0x1a');break;case _0x9edd('0x1b'):_0x13b6b6=_0x9edd('0x1c');break;}}if(_0x13b6b6&&this['voiceStatus']!==_0x13b6b6||_0x4d9a7[_0x9edd('0x1d')]){this[_0x9edd('0x12')]=_[_0x9edd('0x1e')](moment()['format']('x'));}if(_0x13b6b6){this[_0x9edd('0x11')]=_0x13b6b6;}var _0x5d879c={'id':this['id'],'name':this[_0x9edd('0x8')],'email':this[_0x9edd('0x9')],'accountcode':this['accountcode'],'fullname':this['fullname'],'state':this[_0x9edd('0x18')],'stateTime':this['stateTime'],'status':this[_0x9edd('0xd')],'address':this['address'],'online':this['online'],'voiceStatus':this[_0x9edd('0x11')],'voiceStatusTime':this[_0x9edd('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this[_0x9edd('0x1f')],'onhold':this[_0x9edd('0x15')]};var _0x477878=md5(JSON['stringify'](_0x5d879c));if(this[_0x9edd('0x2')]!==_0x477878){this[_0x9edd('0x2')]=_0x477878;io['to'](util[_0x9edd('0x20')](_0x9edd('0x21'),_0x5d879c[_0x9edd('0x8')]))['emit'](_0x9edd('0x22'),_0x5d879c);io[_0x9edd('0x23')](_0x9edd('0x24'),_0x5d879c);}};module[_0x9edd('0x25')]=Agent;
\ No newline at end of file
index ce19155..c73390a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe821=['ivrAnswerCallsDay','ivrTotalCallsDays','message','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','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','temp'];(function(_0x45cd22,_0x38bd5c){var _0x8e5a46=function(_0x5dabd3){while(--_0x5dabd3){_0x45cd22['push'](_0x45cd22['shift']());}};_0x8e5a46(++_0x38bd5c);}(_0xe821,0x1cf));var _0x1e82=function(_0x14faf4,_0x4a369d){_0x14faf4=_0x14faf4-0x0;var _0x5b2381=_0xe821[_0x14faf4];return _0x5b2381;};'use strict';function Campaign(_0x5a312e){this['id']=_0x5a312e['id']||0x0;this[_0x1e82('0x0')]=_0x5a312e[_0x1e82('0x0')]||'';this['type']=_0x5a312e[_0x1e82('0x1')]||_0x1e82('0x2');this[_0x1e82('0x3')]=0x0;this[_0x1e82('0x4')]=0x0;this[_0x1e82('0x5')]=0x0;this[_0x1e82('0x6')]=0x0;this[_0x1e82('0x7')]='';this['sendMessageOneNotActive']=!![];this['active']=_0x5a312e[_0x1e82('0x8')];this[_0x1e82('0x9')]=_0x5a312e[_0x1e82('0x9')];this[_0x1e82('0xa')]=_0x5a312e[_0x1e82('0xa')]||null;this[_0x1e82('0xb')]=_0x5a312e['dialGlobalInterval']?_0x5a312e[_0x1e82('0xb')]:null;this[_0x1e82('0xc')]=_0x5a312e[_0x1e82('0xc')];this[_0x1e82('0xd')]=_0x5a312e['dialOriginateCallerIdNumber'];this[_0x1e82('0xe')]=_0x5a312e['dialOriginateTimeout']||0x1e;this[_0x1e82('0xf')]=_0x5a312e[_0x1e82('0xf')];this['dialCongestionRetryFrequency']=_0x5a312e[_0x1e82('0x10')];this['dialBusyMaxRetry']=_0x5a312e['dialBusyMaxRetry'];this[_0x1e82('0x11')]=_0x5a312e[_0x1e82('0x11')];this[_0x1e82('0x12')]=_0x5a312e[_0x1e82('0x12')];this[_0x1e82('0x13')]=_0x5a312e[_0x1e82('0x13')];this[_0x1e82('0x14')]=_0x5a312e['dialGlobalMaxRetry'];this[_0x1e82('0x15')]=_0x5a312e[_0x1e82('0x15')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x5a312e[_0x1e82('0x16')]||0x96;this[_0x1e82('0x17')]=_0x5a312e[_0x1e82('0x17')]||0x3;this[_0x1e82('0x18')]=_0x5a312e[_0x1e82('0x18')]||0x96;this[_0x1e82('0x19')]=_0x5a312e[_0x1e82('0x19')]||0x3;this[_0x1e82('0x1a')]=_0x5a312e[_0x1e82('0x1a')]||0x96;this[_0x1e82('0x1b')]=_0x5a312e[_0x1e82('0x1b')]||0x3;this['dialMachineRetryFrequency']=_0x5a312e[_0x1e82('0x1c')]||0x96;this[_0x1e82('0x1d')]=_0x5a312e[_0x1e82('0x1d')]||0x3;this['dialAgentRejectRetryFrequency']=_0x5a312e[_0x1e82('0x1e')]||0x96;this[_0x1e82('0x1f')]=_0x5a312e[_0x1e82('0x1f')]||_0x1e82('0x20');this['dialPrefix']=_0x5a312e[_0x1e82('0x21')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x5a312e[_0x1e82('0x22')]||undefined;this[_0x1e82('0x23')]=_0x5a312e[_0x1e82('0x23')]||undefined;this['TrunkBackup']=_0x5a312e[_0x1e82('0x24')]?_0x5a312e[_0x1e82('0x24')]:undefined;this[_0x1e82('0x25')]=_0x5a312e['Trunk']?_0x5a312e[_0x1e82('0x25')]:undefined;this[_0x1e82('0x26')]=_0x5a312e[_0x1e82('0x26')]?_0x5a312e['Interval']:undefined;this['SquareProject']=_0x5a312e[_0x1e82('0x27')]?_0x5a312e[_0x1e82('0x27')]:undefined;this[_0x1e82('0x28')]=_0x5a312e[_0x1e82('0x27')]?_0x5a312e[_0x1e82('0x27')][_0x1e82('0x0')]:undefined;this[_0x1e82('0x29')]=_0x5a312e[_0x1e82('0x29')]||![];this['dialAMDInitialSilence']=_0x5a312e[_0x1e82('0x2a')];this[_0x1e82('0x2b')]=_0x5a312e['dialAMDGreeting'];this[_0x1e82('0x2c')]=_0x5a312e['dialAMDAfterGreetingSilence'];this[_0x1e82('0x2d')]=_0x5a312e[_0x1e82('0x2d')];this[_0x1e82('0x2e')]=_0x5a312e[_0x1e82('0x2e')];this[_0x1e82('0x2f')]=_0x5a312e[_0x1e82('0x2f')];this['dialAMDMaximumNumberOfWords']=_0x5a312e[_0x1e82('0x30')];this[_0x1e82('0x31')]=_0x5a312e[_0x1e82('0x31')];this[_0x1e82('0x32')]=_0x5a312e[_0x1e82('0x32')];}module[_0x1e82('0x33')]=Campaign;
\ No newline at end of file
+var _0xd121=['dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrAnswerCallsDay','ivrTotalCallsDays','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive'];(function(_0xf71e6b,_0x8ea7d){var _0xacf3d1=function(_0x5b35e0){while(--_0x5b35e0){_0xf71e6b['push'](_0xf71e6b['shift']());}};_0xacf3d1(++_0x8ea7d);}(_0xd121,0x66));var _0x1d12=function(_0x2340c9,_0x29e3de){_0x2340c9=_0x2340c9-0x0;var _0x4ab6b5=_0xd121[_0x2340c9];return _0x4ab6b5;};'use strict';function Campaign(_0x4a1f8c){this['id']=_0x4a1f8c['id']||0x0;this['name']=_0x4a1f8c[_0x1d12('0x0')]||'';this[_0x1d12('0x1')]=_0x4a1f8c[_0x1d12('0x1')]||_0x1d12('0x2');this[_0x1d12('0x3')]=0x0;this['temp']=0x0;this[_0x1d12('0x4')]=0x0;this[_0x1d12('0x5')]=0x0;this['message']='';this[_0x1d12('0x6')]=!![];this[_0x1d12('0x7')]=_0x4a1f8c[_0x1d12('0x7')];this[_0x1d12('0x8')]=_0x4a1f8c[_0x1d12('0x8')];this[_0x1d12('0x9')]=_0x4a1f8c[_0x1d12('0x9')]||null;this[_0x1d12('0xa')]=_0x4a1f8c[_0x1d12('0xa')]?_0x4a1f8c[_0x1d12('0xa')]:null;this['dialOriginateCallerIdName']=_0x4a1f8c['dialOriginateCallerIdName'];this[_0x1d12('0xb')]=_0x4a1f8c['dialOriginateCallerIdNumber'];this['dialOriginateTimeout']=_0x4a1f8c['dialOriginateTimeout']||0x1e;this[_0x1d12('0xc')]=_0x4a1f8c['dialCongestionMaxRetry'];this[_0x1d12('0xd')]=_0x4a1f8c[_0x1d12('0xd')];this['dialBusyMaxRetry']=_0x4a1f8c['dialBusyMaxRetry'];this['dialBusyRetryFrequency']=_0x4a1f8c[_0x1d12('0xe')];this['dialNoAnswerMaxRetry']=_0x4a1f8c['dialNoAnswerMaxRetry'];this[_0x1d12('0xf')]=_0x4a1f8c['dialNoAnswerRetryFrequency'];this[_0x1d12('0x10')]=_0x4a1f8c[_0x1d12('0x10')];this[_0x1d12('0x11')]=_0x4a1f8c[_0x1d12('0x11')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x4a1f8c[_0x1d12('0x12')]||0x96;this['dialDropMaxRetry']=_0x4a1f8c['dialDropMaxRetry']||0x3;this[_0x1d12('0x13')]=_0x4a1f8c[_0x1d12('0x13')]||0x96;this[_0x1d12('0x14')]=_0x4a1f8c[_0x1d12('0x14')]||0x3;this[_0x1d12('0x15')]=_0x4a1f8c[_0x1d12('0x15')]||0x96;this['dialMachineMaxRetry']=_0x4a1f8c[_0x1d12('0x16')]||0x3;this['dialMachineRetryFrequency']=_0x4a1f8c[_0x1d12('0x17')]||0x96;this[_0x1d12('0x18')]=_0x4a1f8c[_0x1d12('0x18')]||0x3;this[_0x1d12('0x19')]=_0x4a1f8c[_0x1d12('0x19')]||0x96;this['dialOrderByScheduledAt']=_0x4a1f8c['dialOrderByScheduledAt']||_0x1d12('0x1a');this[_0x1d12('0x1b')]=_0x4a1f8c['dialPrefix']||undefined;this[_0x1d12('0x1c')]=_0x4a1f8c['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x1d12('0x1d')]=_0x4a1f8c['dialCutDigit']||undefined;this[_0x1d12('0x1e')]=_0x4a1f8c[_0x1d12('0x1e')]?_0x4a1f8c[_0x1d12('0x1e')]:undefined;this['Trunk']=_0x4a1f8c[_0x1d12('0x1f')]?_0x4a1f8c[_0x1d12('0x1f')]:undefined;this[_0x1d12('0x20')]=_0x4a1f8c[_0x1d12('0x20')]?_0x4a1f8c['Interval']:undefined;this[_0x1d12('0x21')]=_0x4a1f8c[_0x1d12('0x21')]?_0x4a1f8c[_0x1d12('0x21')]:undefined;this[_0x1d12('0x22')]=_0x4a1f8c[_0x1d12('0x21')]?_0x4a1f8c[_0x1d12('0x21')][_0x1d12('0x0')]:undefined;this[_0x1d12('0x23')]=_0x4a1f8c[_0x1d12('0x23')]||![];this[_0x1d12('0x24')]=_0x4a1f8c[_0x1d12('0x24')];this[_0x1d12('0x25')]=_0x4a1f8c[_0x1d12('0x25')];this[_0x1d12('0x26')]=_0x4a1f8c[_0x1d12('0x26')];this[_0x1d12('0x27')]=_0x4a1f8c[_0x1d12('0x27')];this[_0x1d12('0x28')]=_0x4a1f8c['dialAMDMinWordLength'];this[_0x1d12('0x29')]=_0x4a1f8c[_0x1d12('0x29')];this[_0x1d12('0x2a')]=_0x4a1f8c[_0x1d12('0x2a')];this[_0x1d12('0x2b')]=_0x4a1f8c['dialAMDSilenceThreshold'];this['dialAMDMaximumWordLength']=_0x4a1f8c[_0x1d12('0x2c')];}module[_0x1d12('0x2d')]=Campaign;
\ No newline at end of file
index 77b99be..e2224b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8f0=['exports','starttime','channel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','exten','answered','endtime','unmanaged','abandoned','lastdata','duration','type','disposition','monitor','monitorFilename','queue','transfercalleridnum','transferconnectedlinenum','transferType'];(function(_0x1f13f0,_0x66cc8d){var _0xeda5eb=function(_0x18874d){while(--_0x18874d){_0x1f13f0['push'](_0x1f13f0['shift']());}};_0xeda5eb(++_0x66cc8d);}(_0xb8f0,0x16d));var _0x0b8f=function(_0x22b17c,_0x4d2f9d){_0x22b17c=_0x22b17c-0x0;var _0x5b2817=_0xb8f0[_0x22b17c];return _0x5b2817;};'use strict';function Channel(){this[_0x0b8f('0x0')]=null;this[_0x0b8f('0x1')]='';this['destinationchannel']='';this[_0x0b8f('0x2')]=0x0;this[_0x0b8f('0x3')]='';this[_0x0b8f('0x4')]=undefined;this[_0x0b8f('0x5')]=undefined;this[_0x0b8f('0x6')]=0x0;this[_0x0b8f('0x7')]='';this[_0x0b8f('0x8')]=0x0;this[_0x0b8f('0x9')]=0x0;this[_0x0b8f('0xa')]=0x0;this[_0x0b8f('0xb')]=![];this['answertime']=null;this[_0x0b8f('0xc')]=null;this[_0x0b8f('0xd')]=![];this[_0x0b8f('0xe')]=![];this['lastapplication']='';this[_0x0b8f('0xf')]='';this[_0x0b8f('0x10')]=0x0;this['billableseconds']=0x0;this['holdtime']=0x0;this[_0x0b8f('0x11')]=null;this['tag']=null;this[_0x0b8f('0x12')]=null;this[_0x0b8f('0x13')]=![];this[_0x0b8f('0x14')]=null;this[_0x0b8f('0x15')]=null;this['monitors']=[];this[_0x0b8f('0x16')]=undefined;this[_0x0b8f('0x17')]=undefined;this[_0x0b8f('0x18')]=undefined;this['mohtime']=0x0;}module[_0x0b8f('0x19')]=Channel;
\ No newline at end of file
+var _0xa0a3=['abandoned','duration','billableseconds','holdtime','type','tag','disposition','monitor','monitors','transfercalleridnum','mohtime','exports','channel','destinationchannel','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged'];(function(_0x45f111,_0x3a1a4a){var _0x483508=function(_0x3131ab){while(--_0x3131ab){_0x45f111['push'](_0x45f111['shift']());}};_0x483508(++_0x3a1a4a);}(_0xa0a3,0x1e0));var _0x3a0a=function(_0x500f66,_0x8e6936){_0x500f66=_0x500f66-0x0;var _0x10791e=_0xa0a3[_0x500f66];return _0x10791e;};'use strict';function Channel(){this['starttime']=null;this[_0x3a0a('0x0')]='';this[_0x3a0a('0x1')]='';this['calleridnum']=0x0;this[_0x3a0a('0x2')]='';this[_0x3a0a('0x3')]=undefined;this[_0x3a0a('0x4')]=undefined;this[_0x3a0a('0x5')]=0x0;this[_0x3a0a('0x6')]='';this[_0x3a0a('0x7')]=0x0;this[_0x3a0a('0x8')]=0x0;this[_0x3a0a('0x9')]=0x0;this[_0x3a0a('0xa')]=![];this[_0x3a0a('0xb')]=null;this[_0x3a0a('0xc')]=null;this[_0x3a0a('0xd')]=![];this[_0x3a0a('0xe')]=![];this['lastapplication']='';this['lastdata']='';this[_0x3a0a('0xf')]=0x0;this[_0x3a0a('0x10')]=0x0;this[_0x3a0a('0x11')]=0x0;this[_0x3a0a('0x12')]=null;this[_0x3a0a('0x13')]=null;this[_0x3a0a('0x14')]=null;this[_0x3a0a('0x15')]=![];this['monitorFilename']=null;this['queue']=null;this[_0x3a0a('0x16')]=[];this[_0x3a0a('0x17')]=undefined;this['transferconnectedlinenum']=undefined;this['transferType']=undefined;this[_0x3a0a('0x18')]=0x0;}module[_0x3a0a('0x19')]=Channel;
\ No newline at end of file
index 3a68a2a..4d3fe26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fcc=['remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name','username'];(function(_0x2ceb9b,_0x52abdc){var _0x498972=function(_0x5ec937){while(--_0x5ec937){_0x2ceb9b['push'](_0x2ceb9b['shift']());}};_0x498972(++_0x52abdc);}(_0x8fcc,0x172));var _0xc8fc=function(_0x169863,_0x3118e5){_0x169863=_0x169863-0x0;var _0x1c7a83=_0x8fcc[_0x169863];return _0x1c7a83;};'use strict';function DeskAccount(_0x4bc2a7){this['id']=_0x4bc2a7['id']||0x0;this['name']=_0x4bc2a7[_0xc8fc('0x0')]||'';this['username']=_0x4bc2a7[_0xc8fc('0x1')]||'';this[_0xc8fc('0x2')]=_0x4bc2a7[_0xc8fc('0x2')]||'';this[_0xc8fc('0x3')]=_0x4bc2a7[_0xc8fc('0x3')]||'';this[_0xc8fc('0x4')]=_0x4bc2a7['password']||'';this[_0xc8fc('0x5')]=_0x4bc2a7[_0xc8fc('0x5')]||'';this[_0xc8fc('0x6')]=_0x4bc2a7['consumerSecret']||'';this[_0xc8fc('0x7')]=_0x4bc2a7[_0xc8fc('0x7')]||'';this[_0xc8fc('0x8')]=_0x4bc2a7[_0xc8fc('0x8')]||'';this['type']=_0x4bc2a7[_0xc8fc('0x9')]||'';this[_0xc8fc('0xa')]=_0x4bc2a7[_0xc8fc('0xa')]||'';this[_0xc8fc('0xb')]=_0x4bc2a7[_0xc8fc('0xb')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x8785=['Configurations','name','username','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl'];(function(_0x43a84a,_0x6c500e){var _0x2ed43a=function(_0x8f88c3){while(--_0x8f88c3){_0x43a84a['push'](_0x43a84a['shift']());}};_0x2ed43a(++_0x6c500e);}(_0x8785,0xa6));var _0x5878=function(_0x126ebf,_0x1cdbd5){_0x126ebf=_0x126ebf-0x0;var _0x594574=_0x8785[_0x126ebf];return _0x594574;};'use strict';function DeskAccount(_0x4d6c45){this['id']=_0x4d6c45['id']||0x0;this[_0x5878('0x0')]=_0x4d6c45[_0x5878('0x0')]||'';this['username']=_0x4d6c45[_0x5878('0x1')]||'';this['remoteUri']=_0x4d6c45['remoteUri']||'';this[_0x5878('0x2')]=_0x4d6c45[_0x5878('0x2')]||'';this[_0x5878('0x3')]=_0x4d6c45[_0x5878('0x3')]||'';this[_0x5878('0x4')]=_0x4d6c45[_0x5878('0x4')]||'';this['consumerSecret']=_0x4d6c45[_0x5878('0x5')]||'';this['token']=_0x4d6c45[_0x5878('0x6')]||'';this['tokenSecret']=_0x4d6c45[_0x5878('0x7')]||'';this[_0x5878('0x8')]=_0x4d6c45[_0x5878('0x8')]||'';this[_0x5878('0x9')]=_0x4d6c45[_0x5878('0x9')]||'';this['Configurations']=_0x4d6c45[_0x5878('0xa')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
index 5b6206c..c961eda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c81=['Configurations','exports','name','username','tenantId','clientId','clientSecret','serverUrl'];(function(_0xb3a07f,_0x20bd4b){var _0x515ff9=function(_0x2c9c59){while(--_0x2c9c59){_0xb3a07f['push'](_0xb3a07f['shift']());}};_0x515ff9(++_0x20bd4b);}(_0x3c81,0x102));var _0x13c8=function(_0x19c58e,_0x5b888d){_0x19c58e=_0x19c58e-0x0;var _0x15c633=_0x3c81[_0x19c58e];return _0x15c633;};'use strict';function Dynamics365Account(_0x55010d){this['id']=_0x55010d['id']||0x0;this[_0x13c8('0x0')]=_0x55010d['name']||'';this[_0x13c8('0x1')]=_0x55010d[_0x13c8('0x1')]||'';this['password']=_0x55010d['password']||'';this['remoteUri']=_0x55010d['remoteUri']||'';this[_0x13c8('0x2')]=_0x55010d[_0x13c8('0x2')]||'';this[_0x13c8('0x3')]=_0x55010d[_0x13c8('0x3')]||'';this[_0x13c8('0x4')]=_0x55010d[_0x13c8('0x4')]||{};this[_0x13c8('0x5')]=_0x55010d['serverUrl']||'';this[_0x13c8('0x6')]=_0x55010d['Configurations']||{};}module[_0x13c8('0x7')]=Dynamics365Account;
\ No newline at end of file
+var _0xf7b4=['Configurations','exports','username','remoteUri','tenantId','clientId','clientSecret','serverUrl'];(function(_0x20c47c,_0x443272){var _0x1cfcd7=function(_0x144ced){while(--_0x144ced){_0x20c47c['push'](_0x20c47c['shift']());}};_0x1cfcd7(++_0x443272);}(_0xf7b4,0x152));var _0x4f7b=function(_0x369bae,_0xaed164){_0x369bae=_0x369bae-0x0;var _0x585cb8=_0xf7b4[_0x369bae];return _0x585cb8;};'use strict';function Dynamics365Account(_0x4e182d){this['id']=_0x4e182d['id']||0x0;this['name']=_0x4e182d['name']||'';this[_0x4f7b('0x0')]=_0x4e182d[_0x4f7b('0x0')]||'';this['password']=_0x4e182d['password']||'';this[_0x4f7b('0x1')]=_0x4e182d[_0x4f7b('0x1')]||'';this[_0x4f7b('0x2')]=_0x4e182d[_0x4f7b('0x2')]||'';this[_0x4f7b('0x3')]=_0x4e182d[_0x4f7b('0x3')]||'';this[_0x4f7b('0x4')]=_0x4e182d[_0x4f7b('0x4')]||{};this[_0x4f7b('0x5')]=_0x4e182d[_0x4f7b('0x5')]||'';this[_0x4f7b('0x6')]=_0x4e182d[_0x4f7b('0x6')]||{};}module[_0x4f7b('0x7')]=Dynamics365Account;
\ No newline at end of file
index 9f7b94a..9192334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78f1=['headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm'];(function(_0x2e2292,_0x1891b8){var _0x4f77ab=function(_0x3e5cb6){while(--_0x3e5cb6){_0x2e2292['push'](_0x2e2292['shift']());}};_0x4f77ab(++_0x1891b8);}(_0x78f1,0xd5));var _0x178f=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x78f1[_0x2b4411];return _0x8e41ef;};'use strict';function FaxAccount(_0x2e43a2){this['id']=_0x2e43a2['id']||0x0;this[_0x178f('0x0')]=_0x2e43a2[_0x178f('0x0')]||'';this['description']=_0x2e43a2[_0x178f('0x1')];this[_0x178f('0x2')]=_0x2e43a2[_0x178f('0x2')];this[_0x178f('0x3')]=_0x2e43a2[_0x178f('0x3')];this[_0x178f('0x4')]=_0x2e43a2[_0x178f('0x4')];this[_0x178f('0x5')]=_0x2e43a2['minrate']||0x960;this[_0x178f('0x6')]=_0x2e43a2[_0x178f('0x6')]||0x3840;this[_0x178f('0x7')]=_0x2e43a2[_0x178f('0x7')]||_0x178f('0x8');this['gateway']=_0x2e43a2[_0x178f('0x9')]||'no';this[_0x178f('0xa')]=_0x2e43a2[_0x178f('0xa')]||'no';this[_0x178f('0xb')]=_0x2e43a2[_0x178f('0xb')]||0x1388;this[_0x178f('0xc')]=_0x2e43a2[_0x178f('0xc')]||_0x178f('0xd');this[_0x178f('0xe')]=_0x2e43a2[_0x178f('0xe')]?_0x2e43a2[_0x178f('0xe')]:undefined;this[_0x178f('0xf')]=_0x2e43a2['ListId'];this[_0x178f('0x10')]=_0x2e43a2[_0x178f('0x10')];}module[_0x178f('0x11')]=FaxAccount;
\ No newline at end of file
+var _0xb4a2=['SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','t38timeout','tech'];(function(_0x8e29e2,_0x1bb7bf){var _0x23efa5=function(_0x21417b){while(--_0x21417b){_0x8e29e2['push'](_0x8e29e2['shift']());}};_0x23efa5(++_0x1bb7bf);}(_0xb4a2,0xf5));var _0x2b4a=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0xb4a2[_0x1b2ff7];return _0x31656a;};'use strict';function FaxAccount(_0x44df33){this['id']=_0x44df33['id']||0x0;this[_0x2b4a('0x0')]=_0x44df33[_0x2b4a('0x0')]||'';this[_0x2b4a('0x1')]=_0x44df33['description'];this[_0x2b4a('0x2')]=_0x44df33[_0x2b4a('0x2')];this[_0x2b4a('0x3')]=_0x44df33[_0x2b4a('0x3')];this[_0x2b4a('0x4')]=_0x44df33[_0x2b4a('0x4')];this[_0x2b4a('0x5')]=_0x44df33[_0x2b4a('0x5')]||0x960;this['maxrate']=_0x44df33[_0x2b4a('0x6')]||0x3840;this[_0x2b4a('0x7')]=_0x44df33[_0x2b4a('0x7')]||'v17,v27,v29';this[_0x2b4a('0x8')]=_0x44df33[_0x2b4a('0x8')]||'no';this['faxdetect']=_0x44df33['faxdetect']||'no';this[_0x2b4a('0x9')]=_0x44df33[_0x2b4a('0x9')]||0x1388;this['tech']=_0x44df33[_0x2b4a('0xa')]||_0x2b4a('0xb');this['Trunk']=_0x44df33['Trunk']?_0x44df33[_0x2b4a('0xc')]:undefined;this[_0x2b4a('0xd')]=_0x44df33['ListId'];this['key']=_0x44df33[_0x2b4a('0xe')];}module[_0x2b4a('0xf')]=FaxAccount;
\ No newline at end of file
index 65d99bf..0ba8dfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacc8=['apiKey','token','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x1496eb,_0x4ffc87){var _0x550b2f=function(_0x402496){while(--_0x402496){_0x1496eb['push'](_0x1496eb['shift']());}};_0x550b2f(++_0x4ffc87);}(_0xacc8,0xee));var _0x8acc=function(_0x4fd109,_0x33c503){_0x4fd109=_0x4fd109-0x0;var _0x30f0a6=_0xacc8[_0x4fd109];return _0x30f0a6;};'use strict';function FreshdeskAccount(_0x2d595c){this['id']=_0x2d595c['id']||0x0;this[_0x8acc('0x0')]=_0x2d595c['name']||'';this[_0x8acc('0x1')]=_0x2d595c[_0x8acc('0x1')]||'';this[_0x8acc('0x2')]=_0x2d595c[_0x8acc('0x3')]||'';this[_0x8acc('0x4')]=_0x2d595c[_0x8acc('0x4')]||'';this[_0x8acc('0x5')]=_0x2d595c['serverUrl']||'';this[_0x8acc('0x6')]=_0x2d595c[_0x8acc('0x6')]||{};}module[_0x8acc('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0xe20b=['username','apiKey','token','remoteUri','serverUrl','Configurations','name'];(function(_0x25f1ee,_0x553540){var _0x475d73=function(_0x384c3e){while(--_0x384c3e){_0x25f1ee['push'](_0x25f1ee['shift']());}};_0x475d73(++_0x553540);}(_0xe20b,0xd8));var _0xbe20=function(_0xf38e73,_0x46d3c0){_0xf38e73=_0xf38e73-0x0;var _0x1ef546=_0xe20b[_0xf38e73];return _0x1ef546;};'use strict';function FreshdeskAccount(_0x49f1f1){this['id']=_0x49f1f1['id']||0x0;this[_0xbe20('0x0')]=_0x49f1f1[_0xbe20('0x0')]||'';this[_0xbe20('0x1')]=_0x49f1f1[_0xbe20('0x1')]||'';this[_0xbe20('0x2')]=_0x49f1f1[_0xbe20('0x3')]||'';this[_0xbe20('0x4')]=_0x49f1f1['remoteUri']||'';this[_0xbe20('0x5')]=_0x49f1f1['serverUrl']||'';this[_0xbe20('0x6')]=_0x49f1f1[_0xbe20('0x6')]||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
index 62b611f..1ca3bd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5da=['apiKey','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x3e0ddb,_0x2b875c){var _0x132898=function(_0x3ff560){while(--_0x3ff560){_0x3e0ddb['push'](_0x3e0ddb['shift']());}};_0x132898(++_0x2b875c);}(_0xd5da,0x9f));var _0xad5d=function(_0x2ab6e4,_0x265db7){_0x2ab6e4=_0x2ab6e4-0x0;var _0xe4253c=_0xd5da[_0x2ab6e4];return _0xe4253c;};'use strict';function FreshsalesAccount(_0x419aa8){this['id']=_0x419aa8['id']||0x0;this[_0xad5d('0x0')]=_0x419aa8['name']||'';this[_0xad5d('0x1')]=_0x419aa8[_0xad5d('0x1')]||'';this[_0xad5d('0x2')]=_0x419aa8['token']||'';this[_0xad5d('0x3')]=_0x419aa8['remoteUri']||'';this[_0xad5d('0x4')]=_0x419aa8[_0xad5d('0x4')]||'';this[_0xad5d('0x5')]=_0x419aa8[_0xad5d('0x5')]||{};}module[_0xad5d('0x6')]=FreshsalesAccount;
\ No newline at end of file
+var _0x6f47=['serverUrl','Configurations','exports','name','username','token','remoteUri'];(function(_0x115d5b,_0x26aff2){var _0x6cfc50=function(_0x39a786){while(--_0x39a786){_0x115d5b['push'](_0x115d5b['shift']());}};_0x6cfc50(++_0x26aff2);}(_0x6f47,0xc7));var _0x76f4=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0x6f47[_0x243b2f];return _0xcb3c2d;};'use strict';function FreshsalesAccount(_0xd05ad8){this['id']=_0xd05ad8['id']||0x0;this[_0x76f4('0x0')]=_0xd05ad8[_0x76f4('0x0')]||'';this['username']=_0xd05ad8[_0x76f4('0x1')]||'';this['apiKey']=_0xd05ad8[_0x76f4('0x2')]||'';this['remoteUri']=_0xd05ad8[_0x76f4('0x3')]||'';this[_0x76f4('0x4')]=_0xd05ad8[_0x76f4('0x4')]||'';this[_0x76f4('0x5')]=_0xd05ad8['Configurations']||{};}module[_0x76f4('0x6')]=FreshsalesAccount;
\ No newline at end of file
index bc20f13..3643972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ed6=['assigned','lastAssignedTo','motionChannel','voice','mohtime','variables','type','inbound','uniqueid','calleridnum','queuecallerjoinAt','queuecallerabandon','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','channel','connectedlinenum','connectedlinename','exten','priority','holdtime'];(function(_0x4f9350,_0x1eb2e1){var _0x4af838=function(_0x3a121c){while(--_0x3a121c){_0x4f9350['push'](_0x4f9350['shift']());}};_0x4af838(++_0x1eb2e1);}(_0x7ed6,0x13a));var _0x67ed=function(_0x2be673,_0x11746c){_0x2be673=_0x2be673-0x0;var _0x4e4e15=_0x7ed6[_0x2be673];return _0x4e4e15;};'use strict';function QueueReport(){this[_0x67ed('0x0')]=_0x67ed('0x1');this[_0x67ed('0x2')]='';this[_0x67ed('0x3')]='';this['calleridname']='';this['queue']='';this[_0x67ed('0x4')]=null;this['queuecallerleaveAt']=null;this['position']=0x1;this['count']=0x1;this[_0x67ed('0x5')]=![];this[_0x67ed('0x6')]=null;this['queuecallercomplete']=![];this[_0x67ed('0x7')]=null;this[_0x67ed('0x8')]=![];this[_0x67ed('0x9')]=null;this['originalposition']=0x1;this[_0x67ed('0xa')]='';this[_0x67ed('0xb')]='';this[_0x67ed('0xc')]='';this['accountcode']='';this['context']='';this[_0x67ed('0xd')]='';this[_0x67ed('0xe')]='';this[_0x67ed('0xf')]=0x0;this[_0x67ed('0x10')]=![];this[_0x67ed('0x11')]='';this[_0x67ed('0x12')]=_0x67ed('0x13');this[_0x67ed('0x14')]=0x0;this[_0x67ed('0x15')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0xf258=['channel','accountcode','context','exten','priority','holdtime','assigned','lastAssignedTo','mohtime','variables','type','inbound','uniqueid','calleridname','queuecallerjoinAt','count','queuecallerabandon','queuecallerabandonAt','queuecallerexit','originalposition'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xf258,0x172));var _0x8f25=function(_0x13200f,_0x20d155){_0x13200f=_0x13200f-0x0;var _0x6fe8bd=_0xf258[_0x13200f];return _0x6fe8bd;};'use strict';function QueueReport(){this[_0x8f25('0x0')]=_0x8f25('0x1');this[_0x8f25('0x2')]='';this['calleridnum']='';this[_0x8f25('0x3')]='';this['queue']='';this[_0x8f25('0x4')]=null;this['queuecallerleaveAt']=null;this['position']=0x1;this[_0x8f25('0x5')]=0x1;this[_0x8f25('0x6')]=![];this[_0x8f25('0x7')]=null;this['queuecallercomplete']=![];this['queuecallercompleteAt']=null;this[_0x8f25('0x8')]=![];this['queuecallerexitAt']=null;this[_0x8f25('0x9')]=0x1;this[_0x8f25('0xa')]='';this['connectedlinenum']='';this['connectedlinename']='';this[_0x8f25('0xb')]='';this[_0x8f25('0xc')]='';this[_0x8f25('0xd')]='';this[_0x8f25('0xe')]='';this[_0x8f25('0xf')]=0x0;this[_0x8f25('0x10')]=![];this[_0x8f25('0x11')]='';this[_0x8f25('0x12')]=0x0;this[_0x8f25('0x13')]={};}module['exports']=QueueReport;
\ No newline at end of file
index c0f9c19..b88565c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x675f=['username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','exports','name'];(function(_0x264d4d,_0x118fb5){var _0xc917e2=function(_0x21b9dc){while(--_0x21b9dc){_0x264d4d['push'](_0x264d4d['shift']());}};_0xc917e2(++_0x118fb5);}(_0x675f,0x149));var _0xf675=function(_0x56df34,_0x1f8f3f){_0x56df34=_0x56df34-0x0;var _0x2e9b2a=_0x675f[_0x56df34];return _0x2e9b2a;};'use strict';function SalesforceAccount(_0x58f8c0){this['id']=_0x58f8c0['id']||0x0;this[_0xf675('0x0')]=_0x58f8c0[_0xf675('0x0')]||'';this[_0xf675('0x1')]=_0x58f8c0[_0xf675('0x1')]||'';this[_0xf675('0x2')]=_0x58f8c0[_0xf675('0x2')]||'';this[_0xf675('0x3')]=_0x58f8c0[_0xf675('0x3')]||'';this[_0xf675('0x4')]=_0x58f8c0[_0xf675('0x4')]||'';this['clientSecret']=_0x58f8c0[_0xf675('0x5')]||'';this[_0xf675('0x6')]=_0x58f8c0[_0xf675('0x6')]||'';this['type']=_0x58f8c0[_0xf675('0x7')]||_0xf675('0x8');this[_0xf675('0x9')]=_0x58f8c0['serverUrl']||'';this['Configurations']=_0x58f8c0['Configurations']||{};}module[_0xf675('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0xb6ba=['clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password'];(function(_0xa5bc43,_0xadf135){var _0x18b8a0=function(_0x4892b8){while(--_0x4892b8){_0xa5bc43['push'](_0xa5bc43['shift']());}};_0x18b8a0(++_0xadf135);}(_0xb6ba,0x1f4));var _0xab6b=function(_0x1ac120,_0x3e7e45){_0x1ac120=_0x1ac120-0x0;var _0x19b703=_0xb6ba[_0x1ac120];return _0x19b703;};'use strict';function SalesforceAccount(_0x5e289d){this['id']=_0x5e289d['id']||0x0;this[_0xab6b('0x0')]=_0x5e289d['name']||'';this[_0xab6b('0x1')]=_0x5e289d[_0xab6b('0x1')]||'';this['remoteUri']=_0x5e289d[_0xab6b('0x2')]||'';this[_0xab6b('0x3')]=_0x5e289d['password']||'';this[_0xab6b('0x4')]=_0x5e289d[_0xab6b('0x4')]||'';this[_0xab6b('0x5')]=_0x5e289d[_0xab6b('0x5')]||'';this[_0xab6b('0x6')]=_0x5e289d[_0xab6b('0x6')]||'';this[_0xab6b('0x7')]=_0x5e289d[_0xab6b('0x7')]||_0xab6b('0x8');this[_0xab6b('0x9')]=_0x5e289d['serverUrl']||'';this[_0xab6b('0xa')]=_0x5e289d[_0xab6b('0xa')]||{};}module[_0xab6b('0xb')]=SalesforceAccount;
\ No newline at end of file
index 1e85a47..97f92ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfab3=['remoteUri','serverUrl','name','username','password'];(function(_0x277721,_0x46971e){var _0x286051=function(_0x130c98){while(--_0x130c98){_0x277721['push'](_0x277721['shift']());}};_0x286051(++_0x46971e);}(_0xfab3,0x12e));var _0x3fab=function(_0x50e5cc,_0x218037){_0x50e5cc=_0x50e5cc-0x0;var _0x1d241d=_0xfab3[_0x50e5cc];return _0x1d241d;};'use strict';function ServicenowAccount(_0x3a3041){this['id']=_0x3a3041['id']||0x0;this[_0x3fab('0x0')]=_0x3a3041['name']||'';this[_0x3fab('0x1')]=_0x3a3041['username']||'';this[_0x3fab('0x2')]=_0x3a3041[_0x3fab('0x2')]||'';this[_0x3fab('0x3')]=_0x3a3041[_0x3fab('0x3')]||'';this[_0x3fab('0x4')]=_0x3a3041[_0x3fab('0x4')]||'';this['Configurations']=_0x3a3041['Configurations']||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0xca6e=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x102310,_0x1fa1cd){var _0x46d9f2=function(_0x2d338b){while(--_0x2d338b){_0x102310['push'](_0x102310['shift']());}};_0x46d9f2(++_0x1fa1cd);}(_0xca6e,0x11f));var _0xeca6=function(_0x58b2c2,_0x2a152c){_0x58b2c2=_0x58b2c2-0x0;var _0x4049cd=_0xca6e[_0x58b2c2];return _0x4049cd;};'use strict';function ServicenowAccount(_0x2698f1){this['id']=_0x2698f1['id']||0x0;this[_0xeca6('0x0')]=_0x2698f1[_0xeca6('0x0')]||'';this['username']=_0x2698f1[_0xeca6('0x1')]||'';this[_0xeca6('0x2')]=_0x2698f1['password']||'';this[_0xeca6('0x3')]=_0x2698f1[_0xeca6('0x3')]||'';this[_0xeca6('0x4')]=_0x2698f1['serverUrl']||'';this['Configurations']=_0x2698f1[_0xeca6('0x5')]||{};}module[_0xeca6('0x6')]=ServicenowAccount;
\ No newline at end of file
index 62d63fd..fbe98af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9371=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x898e7e,_0x3e9c59){var _0x58b3a8=function(_0x758655){while(--_0x758655){_0x898e7e['push'](_0x898e7e['shift']());}};_0x58b3a8(++_0x3e9c59);}(_0x9371,0x120));var _0x1937=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x9371[_0x122ef9];return _0x42fba0;};'use strict';function SugarcrmAccount(_0x54b2b1){this['id']=_0x54b2b1['id']||0x0;this[_0x1937('0x0')]=_0x54b2b1[_0x1937('0x0')]||'';this[_0x1937('0x1')]=_0x54b2b1[_0x1937('0x1')]||'';this[_0x1937('0x2')]=_0x54b2b1['password']||'';this['remoteUri']=_0x54b2b1[_0x1937('0x3')]||'';this[_0x1937('0x4')]=_0x54b2b1[_0x1937('0x4')]||'';this[_0x1937('0x5')]=_0x54b2b1[_0x1937('0x5')]||{};}module[_0x1937('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0xedad=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x8d1175,_0x598a2f){var _0x4e1d64=function(_0x49770d){while(--_0x49770d){_0x8d1175['push'](_0x8d1175['shift']());}};_0x4e1d64(++_0x598a2f);}(_0xedad,0x17e));var _0xdeda=function(_0x281e5e,_0xf320e2){_0x281e5e=_0x281e5e-0x0;var _0x5a22d2=_0xedad[_0x281e5e];return _0x5a22d2;};'use strict';function SugarcrmAccount(_0x22560f){this['id']=_0x22560f['id']||0x0;this[_0xdeda('0x0')]=_0x22560f[_0xdeda('0x0')]||'';this['username']=_0x22560f[_0xdeda('0x1')]||'';this[_0xdeda('0x2')]=_0x22560f[_0xdeda('0x2')]||'';this[_0xdeda('0x3')]=_0x22560f[_0xdeda('0x3')]||'';this[_0xdeda('0x4')]=_0x22560f['serverUrl']||'';this[_0xdeda('0x5')]=_0x22560f['Configurations']||{};}module[_0xdeda('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 2cbcbae..6bc6b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1fb=['exports','name','accountcode','state','unknown','status','address'];(function(_0x21f696,_0x39f55a){var _0x53f5aa=function(_0x91a005){while(--_0x91a005){_0x21f696['push'](_0x21f696['shift']());}};_0x53f5aa(++_0x39f55a);}(_0xe1fb,0xe1));var _0xbe1f=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xe1fb[_0x21a9d9];return _0x46adce;};'use strict';function Telephone(_0x2edec1){this['id']=_0x2edec1['id']||0x0;this['name']=_0x2edec1[_0xbe1f('0x0')]||'';this[_0xbe1f('0x1')]=_0x2edec1[_0xbe1f('0x1')]||'';this[_0xbe1f('0x2')]=_0xbe1f('0x3');this['stateTime']=0x0;this[_0xbe1f('0x4')]='unknown';this[_0xbe1f('0x5')]='';}module[_0xbe1f('0x6')]=Telephone;
\ No newline at end of file
+var _0x823c=['exports','name','accountcode','state','unknown','stateTime','address'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x823c,0x143));var _0xc823=function(_0x2fac27,_0x1c9445){_0x2fac27=_0x2fac27-0x0;var _0xdf9092=_0x823c[_0x2fac27];return _0xdf9092;};'use strict';function Telephone(_0x1ab2d4){this['id']=_0x1ab2d4['id']||0x0;this['name']=_0x1ab2d4[_0xc823('0x0')]||'';this[_0xc823('0x1')]=_0x1ab2d4[_0xc823('0x1')]||'';this[_0xc823('0x2')]=_0xc823('0x3');this[_0xc823('0x4')]=0x0;this['status']=_0xc823('0x3');this[_0xc823('0x5')]='';}module[_0xc823('0x6')]=Telephone;
\ No newline at end of file
index fdd01f4..a407e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x37a8bc,_0x133f7a){var _0xff7b91=function(_0x290156){while(--_0x290156){_0x37a8bc['push'](_0x37a8bc['shift']());}};_0xff7b91(++_0x133f7a);}(_0xb10b,0x12a));var _0xbb10=function(_0x5a5276,_0x262d69){_0x5a5276=_0x5a5276-0x0;var _0x3e8ee2=_0xb10b[_0x5a5276];return _0x3e8ee2;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
+var _0xa9e0=['exports','name'];(function(_0x1a87cc,_0x1319bf){var _0xc85566=function(_0x3b4833){while(--_0x3b4833){_0x1a87cc['push'](_0x1a87cc['shift']());}};_0xc85566(++_0x1319bf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
index f81dc3e..961bf2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['Actions','name','status','AllConditions','AnyConditions'];(function(_0xd122de,_0x12e49d){var _0x12649a=function(_0x3702c8){while(--_0x3702c8){_0xd122de['push'](_0xd122de['shift']());}};_0x12649a(++_0x12e49d);}(_0xda3f,0xec));var _0xfda3=function(_0x4f6ac8,_0x4001ff){_0x4f6ac8=_0x4f6ac8-0x0;var _0x1a0af5=_0xda3f[_0x4f6ac8];return _0x1a0af5;};'use strict';function Trigger(_0x33f0ce){this['id']=_0x33f0ce['id']||0x0;this[_0xfda3('0x0')]=_0x33f0ce[_0xfda3('0x0')]||'';this['channel']=_0x33f0ce['channel']||'voice';this[_0xfda3('0x1')]=_0x33f0ce['status']||![];this[_0xfda3('0x2')]=_0x33f0ce[_0xfda3('0x2')]||[];this['AnyConditions']=_0x33f0ce[_0xfda3('0x3')]||[];this[_0xfda3('0x4')]=_0x33f0ce['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0xb10b=['AllConditions','AnyConditions','Actions','exports','name','channel','status'];(function(_0x396e89,_0xe27465){var _0x1271aa=function(_0x2ba80b){while(--_0x2ba80b){_0x396e89['push'](_0x396e89['shift']());}};_0x1271aa(++_0xe27465);}(_0xb10b,0x12a));var _0xbb10=function(_0x550839,_0xf664c){_0x550839=_0x550839-0x0;var _0x145c26=_0xb10b[_0x550839];return _0x145c26;};'use strict';function Trigger(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'voice';this[_0xbb10('0x2')]=_0x13ce8d[_0xbb10('0x2')]||![];this[_0xbb10('0x3')]=_0x13ce8d[_0xbb10('0x3')]||[];this[_0xbb10('0x4')]=_0x13ce8d[_0xbb10('0x4')]||[];this['Actions']=_0x13ce8d[_0xbb10('0x5')]||[];}module[_0xbb10('0x6')]=Trigger;
\ No newline at end of file
index 1be5011..f2af125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7295=['active','name','unknown','stateTime','status','registry','indexOf','host','domain','domainport','refresh','stateRegistry','registrationtime','exports'];(function(_0x14866a,_0x3e915e){var _0x1d3d8c=function(_0x2ecb83){while(--_0x2ecb83){_0x14866a['push'](_0x14866a['shift']());}};_0x1d3d8c(++_0x3e915e);}(_0x7295,0x1c0));var _0x5729=function(_0x5d04ee,_0x2a38ca){_0x5d04ee=_0x5d04ee-0x0;var _0x4a666a=_0x7295[_0x5d04ee];return _0x4a666a;};'use strict';function Trunk(_0x432c5f){this['id']=_0x432c5f['id']||0x0;this[_0x5729('0x0')]=_0x432c5f['active']||![];this[_0x5729('0x1')]=_0x432c5f['name']||'';this['state']=_0x5729('0x2');this[_0x5729('0x3')]=0x0;this[_0x5729('0x4')]=_0x5729('0x2');this[_0x5729('0x5')]=_0x432c5f['registry']&&_0x432c5f[_0x5729('0x5')][_0x5729('0x6')](':')?_0x432c5f['registry']['split'](':')[0x0]:'';this[_0x5729('0x7')]='';this['port']='';this[_0x5729('0x8')]='';this[_0x5729('0x9')]='';this[_0x5729('0xa')]='';this[_0x5729('0xb')]=_0x5729('0x2');this[_0x5729('0xc')]='';this['address']='';this['defaultuser']=_0x432c5f['defaultuser']||'';}module[_0x5729('0xd')]=Trunk;
\ No newline at end of file
+var _0x1dc7=['stateRegistry','address','defaultuser','active','name','state','stateTime','status','unknown','registry','indexOf','split','host','port','domain','domainport','refresh'];(function(_0xa1f935,_0x4d2968){var _0x322366=function(_0x5bf558){while(--_0x5bf558){_0xa1f935['push'](_0xa1f935['shift']());}};_0x322366(++_0x4d2968);}(_0x1dc7,0x179));var _0x71dc=function(_0x171001,_0x3b8abd){_0x171001=_0x171001-0x0;var _0x4d3af1=_0x1dc7[_0x171001];return _0x4d3af1;};'use strict';function Trunk(_0xc46c1){this['id']=_0xc46c1['id']||0x0;this['active']=_0xc46c1[_0x71dc('0x0')]||![];this['name']=_0xc46c1[_0x71dc('0x1')]||'';this[_0x71dc('0x2')]='unknown';this[_0x71dc('0x3')]=0x0;this[_0x71dc('0x4')]=_0x71dc('0x5');this[_0x71dc('0x6')]=_0xc46c1['registry']&&_0xc46c1['registry'][_0x71dc('0x7')](':')?_0xc46c1[_0x71dc('0x6')][_0x71dc('0x8')](':')[0x0]:'';this[_0x71dc('0x9')]='';this[_0x71dc('0xa')]='';this[_0x71dc('0xb')]='';this[_0x71dc('0xc')]='';this[_0x71dc('0xd')]='';this[_0x71dc('0xe')]=_0x71dc('0x5');this['registrationtime']='';this[_0x71dc('0xf')]='';this[_0x71dc('0x10')]=_0xc46c1['defaultuser']||'';}module['exports']=Trunk;
\ No newline at end of file
index c85498c..bcb2351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a4c=['exports','exten','recordingFormat','none','mandatoryDisposition'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x0a4c,0x182));var _0xc0a4=function(_0x328e47,_0x56289c){_0x328e47=_0x328e47-0x0;var _0x548939=_0x0a4c[_0x328e47];return _0x548939;};'use strict';function voiceExtension(_0x44106b){this['id']=_0x44106b['id']||0x0;this[_0xc0a4('0x0')]=_0x44106b[_0xc0a4('0x0')]||'';this['recordingFormat']=_0x44106b[_0xc0a4('0x1')]||_0xc0a4('0x2');this['mandatoryDisposition']=_0x44106b[_0xc0a4('0x3')]||![];}module[_0xc0a4('0x4')]=voiceExtension;
\ No newline at end of file
+var _0xdf28=['mandatoryDisposition','exten','recordingFormat','none'];(function(_0x55dbb1,_0x51d71a){var _0x34da2b=function(_0x465a4c){while(--_0x465a4c){_0x55dbb1['push'](_0x55dbb1['shift']());}};_0x34da2b(++_0x51d71a);}(_0xdf28,0xd5));var _0x8df2=function(_0x46f6c6,_0x5f337d){_0x46f6c6=_0x46f6c6-0x0;var _0x462bb8=_0xdf28[_0x46f6c6];return _0x462bb8;};'use strict';function voiceExtension(_0x4afe8c){this['id']=_0x4afe8c['id']||0x0;this[_0x8df2('0x0')]=_0x4afe8c[_0x8df2('0x0')]||'';this[_0x8df2('0x1')]=_0x4afe8c[_0x8df2('0x1')]||_0x8df2('0x2');this[_0x8df2('0x3')]=_0x4afe8c[_0x8df2('0x3')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
index 554722b..aaf07d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1730=['outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','mandatoryDisposition','mandatoryDispositionPause','exports','not_inuse','busy','unavailable','ringing','onhold','wav','wav49','gsm','roundrobin','name','monitor_format','type','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x1730,0x97));var _0x0173=function(_0x575311,_0x3ec166){_0x575311=_0x575311-0x0;var _0x112660=_0x1730[_0x575311];return _0x112660;};'use strict';var statusDesc=['unknown',_0x0173('0x0'),'inuse',_0x0173('0x1'),'invalid',_0x0173('0x2'),_0x0173('0x3'),'ringinuse',_0x0173('0x4')];var monitorFormat={'wav':_0x0173('0x5'),'wav49':_0x0173('0x6'),'gsm':_0x0173('0x7')};var strategy={'rrmemory':'rrmemory','roundrobin':_0x0173('0x8')};function VoiceQueue(_0x197f49){this['id']=_0x197f49['id']||0x0;this[_0x0173('0x9')]=_0x197f49['name']||'';this[_0x0173('0xa')]=_0x197f49[_0x0173('0xa')]||'';this[_0x0173('0xb')]=_0x197f49[_0x0173('0xb')]||_0x0173('0xc');this[_0x0173('0xd')]=0x0;this[_0x0173('0xe')]=0x0;this[_0x0173('0xf')]=0x0;this[_0x0173('0x10')]=0x0;this[_0x0173('0x11')]=0x0;this[_0x0173('0x12')]=0x0;this[_0x0173('0x13')]=0x0;this[_0x0173('0x14')]=0x0;this[_0x0173('0x15')]=0x0;this[_0x0173('0x16')]=0x0;this[_0x0173('0x17')]=0x0;this[_0x0173('0x18')]=_0x197f49['acw']||![];this[_0x0173('0x19')]=_0x197f49[_0x0173('0x19')]||0xa;this[_0x0173('0x1a')]=_0x197f49['autopause']||'no';this[_0x0173('0x1b')]=!![];this['message']='';this[_0x0173('0x1c')]=0x0;this[_0x0173('0x1d')]=0x0;this['dialTimezone']=_0x197f49[_0x0173('0x1e')]||null;this[_0x0173('0x1f')]=_0x197f49[_0x0173('0x1f')]?_0x197f49[_0x0173('0x1f')]:null;this[_0x0173('0x20')]=_0x197f49[_0x0173('0x20')];this[_0x0173('0x21')]=_0x197f49[_0x0173('0x21')]||_0x0173('0x22');this[_0x0173('0x23')]=_0x197f49['dialLimitChannel']||0x0;this[_0x0173('0x24')]=_0x197f49[_0x0173('0x24')]||0x0;this[_0x0173('0x25')]=_0x197f49[_0x0173('0x25')]||0x1;this[_0x0173('0x26')]=_0x197f49[_0x0173('0x26')]||'dropRate';this[_0x0173('0x27')]=_0x197f49[_0x0173('0x27')]||0.03;this['dialPredictiveInterval']=_0x197f49[_0x0173('0x28')]||0x258;this[_0x0173('0x29')]=_0x197f49[_0x0173('0x29')]||_0x0173('0x2a');this[_0x0173('0x2b')]=_0x197f49['dialOriginateCallerIdNumber']||_0x0173('0x2a');this['dialOriginateTimeout']=_0x197f49[_0x0173('0x2c')]||0x1e;this[_0x0173('0x2d')]=_0x197f49['dialQueueOptions']||_0x0173('0x2e');this[_0x0173('0x2f')]=_0x197f49['dialQueueTimeout']||0x3;this[_0x0173('0x30')]=_0x197f49[_0x0173('0x30')]||undefined;this[_0x0173('0x31')]=_0x197f49[_0x0173('0x31')]||0x3;this[_0x0173('0x32')]=_0x197f49[_0x0173('0x32')]||0x96;this['dialBusyMaxRetry']=_0x197f49[_0x0173('0x33')]||0x3;this[_0x0173('0x34')]=_0x197f49[_0x0173('0x34')]||0x96;this['dialNoAnswerMaxRetry']=_0x197f49[_0x0173('0x35')]||0x3;this['dialNoAnswerRetryFrequency']=_0x197f49[_0x0173('0x36')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x197f49['dialNoSuchNumberMaxRetry']||0x3;this[_0x0173('0x37')]=_0x197f49['dialNoSuchNumberRetryFrequency']||0x96;this[_0x0173('0x38')]=_0x197f49[_0x0173('0x38')]||0x3;this[_0x0173('0x39')]=_0x197f49[_0x0173('0x39')]||0x96;this[_0x0173('0x3a')]=_0x197f49[_0x0173('0x3a')]||0x3;this[_0x0173('0x3b')]=_0x197f49['dialAbandonedRetryFrequency']||0x96;this[_0x0173('0x3c')]=_0x197f49[_0x0173('0x3c')]||0x3;this['dialMachineRetryFrequency']=_0x197f49[_0x0173('0x3d')]||0x96;this[_0x0173('0x3e')]=_0x197f49[_0x0173('0x3e')]||0x3;this[_0x0173('0x3f')]=_0x197f49['dialAgentRejectRetryFrequency']||0x96;this['dialGlobalMaxRetry']=_0x197f49[_0x0173('0x40')]||0x4;this[_0x0173('0x41')]=_0x197f49['Trunk']?_0x197f49[_0x0173('0x41')]:undefined;this[_0x0173('0x42')]=_0x197f49[_0x0173('0x42')]?_0x197f49[_0x0173('0x42')]:undefined;this[_0x0173('0x43')]=_0x197f49[_0x0173('0x43')]||undefined;this[_0x0173('0x44')]=_0x197f49[_0x0173('0x44')]?_0x197f49[_0x0173('0x44')]:undefined;this['dialOrderByScheduledAt']=_0x197f49[_0x0173('0x45')]||_0x0173('0x46');this['dialRandomLastDigitCallerIdNumber']=_0x197f49[_0x0173('0x47')]||undefined;this[_0x0173('0x48')]=_0x197f49[_0x0173('0x48')]||undefined;this[_0x0173('0x49')]=strategy[_0x197f49[_0x0173('0x49')]]||_0x0173('0x4a');this[_0x0173('0x4b')]=!![];this[_0x0173('0x4c')]=_0x197f49['dialAMDActive']||![];this[_0x0173('0x4d')]=_0x197f49[_0x0173('0x4d')];this[_0x0173('0x4e')]=_0x197f49['dialAMDGreeting'];this[_0x0173('0x4f')]=_0x197f49[_0x0173('0x4f')];this[_0x0173('0x50')]=_0x197f49[_0x0173('0x50')];this[_0x0173('0x51')]=_0x197f49[_0x0173('0x51')];this[_0x0173('0x52')]=_0x197f49[_0x0173('0x52')];this['dialAMDMaximumNumberOfWords']=_0x197f49[_0x0173('0x53')];this[_0x0173('0x54')]=_0x197f49[_0x0173('0x54')];this[_0x0173('0x55')]=_0x197f49[_0x0173('0x55')];this[_0x0173('0x56')]=0x0;this[_0x0173('0x57')]=0x0;this['timeout']=_0x197f49[_0x0173('0x58')];this[_0x0173('0x59')]=0x0;this[_0x0173('0x5a')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this[_0x0173('0x5b')]=0x0;this[_0x0173('0x5c')]=0x0;this[_0x0173('0x5d')]=0x0;this[_0x0173('0x5e')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0x0173('0x5f')]=0x0;this[_0x0173('0x60')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0x0173('0x61')]=0x0;this[_0x0173('0x62')]=0x0;this[_0x0173('0x63')]=0x0;this[_0x0173('0x64')]=undefined;this[_0x0173('0x65')]=undefined;this[_0x0173('0x66')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x0173('0x67')]=0x0;this[_0x0173('0x68')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x0173('0x69')]=0x0;this[_0x0173('0x6a')]=0x0;this[_0x0173('0x6b')]=0x0;this[_0x0173('0x6c')]=0x0;this[_0x0173('0x6d')]=_0x197f49[_0x0173('0x6e')]||0x14;this[_0x0173('0x6f')]=_0x197f49['dialPredictiveIntervalMaxThreshold']||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0x0173('0x70')]=0x0;this[_0x0173('0x71')]=0x1;this[_0x0173('0x72')]=0x0;this['erlangCallToSecond']=0x0;this[_0x0173('0x73')]=0x0;this[_0x0173('0x74')]=0x0;this[_0x0173('0x75')]=_0x197f49[_0x0173('0x75')]||0x1e;this[_0x0173('0x76')]=_0x197f49[_0x0173('0x76')]||![];this[_0x0173('0x77')]=_0x197f49[_0x0173('0x77')]||undefined;this['dialAgiAfterHangupClient']=_0x197f49[_0x0173('0x78')]||![];this['dialAgiAfterHangupAgent']=_0x197f49['dialAgiAfterHangupAgent']||![];this['monitor_format']=monitorFormat[_0x197f49[_0x0173('0xa')]]?monitorFormat[_0x197f49[_0x0173('0xa')]]:undefined;this['mandatoryDisposition']=_0x197f49[_0x0173('0x79')]||![];this['mandatoryDispositionPause']=_0x197f49[_0x0173('0x7a')]?_0x197f49[_0x0173('0x7a')]:undefined;}module[_0x0173('0x7b')]=VoiceQueue;
\ No newline at end of file
+var _0xc080=['unknown','not_inuse','invalid','unavailable','onhold','wav','wav49','gsm','name','monitor_format','inbound','waiting','talking','total','answered','sumDuration','sumBillable','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports'];(function(_0x4a209a,_0x575ff9){var _0x4b3c20=function(_0x1a50c1){while(--_0x1a50c1){_0x4a209a['push'](_0x4a209a['shift']());}};_0x4b3c20(++_0x575ff9);}(_0xc080,0x16b));var _0x0c08=function(_0x392a14,_0x341fb3){_0x392a14=_0x392a14-0x0;var _0x2209f6=_0xc080[_0x392a14];return _0x2209f6;};'use strict';var statusDesc=[_0x0c08('0x0'),_0x0c08('0x1'),'inuse','busy',_0x0c08('0x2'),_0x0c08('0x3'),'ringing','ringinuse',_0x0c08('0x4')];var monitorFormat={'wav':_0x0c08('0x5'),'wav49':_0x0c08('0x6'),'gsm':_0x0c08('0x7')};var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};function VoiceQueue(_0x2be87f){this['id']=_0x2be87f['id']||0x0;this[_0x0c08('0x8')]=_0x2be87f[_0x0c08('0x8')]||'';this[_0x0c08('0x9')]=_0x2be87f[_0x0c08('0x9')]||'';this['type']=_0x2be87f['type']||_0x0c08('0xa');this[_0x0c08('0xb')]=0x0;this[_0x0c08('0xc')]=0x0;this[_0x0c08('0xd')]=0x0;this[_0x0c08('0xe')]=0x0;this[_0x0c08('0xf')]=0x0;this['sumHoldTime']=0x0;this[_0x0c08('0x10')]=0x0;this['unmanaged']=0x0;this[_0x0c08('0x11')]=0x0;this[_0x0c08('0x12')]=0x0;this[_0x0c08('0x13')]=0x0;this[_0x0c08('0x14')]=_0x2be87f[_0x0c08('0x14')]||![];this[_0x0c08('0x15')]=_0x2be87f[_0x0c08('0x15')]||0xa;this[_0x0c08('0x16')]=_0x2be87f[_0x0c08('0x16')]||'no';this[_0x0c08('0x17')]=!![];this['message']='';this[_0x0c08('0x18')]=0x0;this[_0x0c08('0x19')]=0x0;this[_0x0c08('0x1a')]=_0x2be87f[_0x0c08('0x1a')]||null;this[_0x0c08('0x1b')]=_0x2be87f[_0x0c08('0x1b')]?_0x2be87f[_0x0c08('0x1b')]:null;this[_0x0c08('0x1c')]=_0x2be87f[_0x0c08('0x1c')];this[_0x0c08('0x1d')]=_0x2be87f[_0x0c08('0x1d')]||'progressive';this[_0x0c08('0x1e')]=_0x2be87f[_0x0c08('0x1e')]||0x0;this[_0x0c08('0x1f')]=_0x2be87f[_0x0c08('0x1f')]||0x0;this[_0x0c08('0x20')]=_0x2be87f[_0x0c08('0x20')]||0x1;this[_0x0c08('0x21')]=_0x2be87f['dialPredictiveOptimization']||_0x0c08('0x22');this['dialPredictiveOptimizationPercentage']=_0x2be87f[_0x0c08('0x23')]||0.03;this[_0x0c08('0x24')]=_0x2be87f['dialPredictiveInterval']||0x258;this[_0x0c08('0x25')]=_0x2be87f[_0x0c08('0x25')]||'anonymous';this[_0x0c08('0x26')]=_0x2be87f[_0x0c08('0x26')]||_0x0c08('0x27');this['dialOriginateTimeout']=_0x2be87f[_0x0c08('0x28')]||0x1e;this[_0x0c08('0x29')]=_0x2be87f['dialQueueOptions']||_0x0c08('0x2a');this[_0x0c08('0x2b')]=_0x2be87f['dialQueueTimeout']||0x3;this[_0x0c08('0x2c')]=_0x2be87f[_0x0c08('0x2c')]||undefined;this[_0x0c08('0x2d')]=_0x2be87f[_0x0c08('0x2d')]||0x3;this[_0x0c08('0x2e')]=_0x2be87f[_0x0c08('0x2e')]||0x96;this[_0x0c08('0x2f')]=_0x2be87f[_0x0c08('0x2f')]||0x3;this[_0x0c08('0x30')]=_0x2be87f[_0x0c08('0x30')]||0x96;this[_0x0c08('0x31')]=_0x2be87f[_0x0c08('0x31')]||0x3;this[_0x0c08('0x32')]=_0x2be87f[_0x0c08('0x32')]||0x96;this[_0x0c08('0x33')]=_0x2be87f[_0x0c08('0x33')]||0x3;this[_0x0c08('0x34')]=_0x2be87f['dialNoSuchNumberRetryFrequency']||0x96;this['dialDropMaxRetry']=_0x2be87f['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x2be87f[_0x0c08('0x35')]||0x96;this['dialAbandonedMaxRetry']=_0x2be87f[_0x0c08('0x36')]||0x3;this[_0x0c08('0x37')]=_0x2be87f[_0x0c08('0x37')]||0x96;this['dialMachineMaxRetry']=_0x2be87f['dialMachineMaxRetry']||0x3;this[_0x0c08('0x38')]=_0x2be87f['dialMachineRetryFrequency']||0x96;this[_0x0c08('0x39')]=_0x2be87f[_0x0c08('0x39')]||0x3;this[_0x0c08('0x3a')]=_0x2be87f['dialAgentRejectRetryFrequency']||0x96;this[_0x0c08('0x3b')]=_0x2be87f[_0x0c08('0x3b')]||0x4;this[_0x0c08('0x3c')]=_0x2be87f[_0x0c08('0x3c')]?_0x2be87f[_0x0c08('0x3c')]:undefined;this[_0x0c08('0x3d')]=_0x2be87f[_0x0c08('0x3d')]?_0x2be87f[_0x0c08('0x3d')]:undefined;this[_0x0c08('0x3e')]=_0x2be87f[_0x0c08('0x3e')]||undefined;this['Interval']=_0x2be87f['Interval']?_0x2be87f[_0x0c08('0x3f')]:undefined;this[_0x0c08('0x40')]=_0x2be87f[_0x0c08('0x40')]||'DESC';this[_0x0c08('0x41')]=_0x2be87f[_0x0c08('0x41')]||undefined;this[_0x0c08('0x42')]=_0x2be87f[_0x0c08('0x42')]||undefined;this[_0x0c08('0x43')]=strategy[_0x2be87f[_0x0c08('0x43')]]||'rrmemory';this[_0x0c08('0x44')]=!![];this[_0x0c08('0x45')]=_0x2be87f['dialAMDActive']||![];this[_0x0c08('0x46')]=_0x2be87f['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x2be87f['dialAMDGreeting'];this[_0x0c08('0x47')]=_0x2be87f[_0x0c08('0x47')];this[_0x0c08('0x48')]=_0x2be87f['dialAMDTotalAnalysisTime'];this[_0x0c08('0x49')]=_0x2be87f[_0x0c08('0x49')];this['dialAMDBetweenWordsSilence']=_0x2be87f[_0x0c08('0x4a')];this[_0x0c08('0x4b')]=_0x2be87f[_0x0c08('0x4b')];this[_0x0c08('0x4c')]=_0x2be87f[_0x0c08('0x4c')];this[_0x0c08('0x4d')]=_0x2be87f[_0x0c08('0x4d')];this[_0x0c08('0x4e')]=0x0;this[_0x0c08('0x4f')]=0x0;this[_0x0c08('0x50')]=_0x2be87f[_0x0c08('0x50')];this[_0x0c08('0x51')]=0x0;this[_0x0c08('0x52')]=0x0;this[_0x0c08('0x53')]=0x0;this['outboundBusyCallsDay']=0x0;this[_0x0c08('0x54')]=0x0;this[_0x0c08('0x55')]=0x0;this[_0x0c08('0x56')]=0x0;this[_0x0c08('0x57')]=0x0;this[_0x0c08('0x58')]=0x0;this[_0x0c08('0x59')]=0x0;this[_0x0c08('0x5a')]=0x0;this[_0x0c08('0x5b')]=0x0;this[_0x0c08('0x5c')]=0x0;this[_0x0c08('0x5d')]=0x0;this[_0x0c08('0x5e')]=undefined;this['startPredictive']=undefined;this[_0x0c08('0x5f')]=undefined;this[_0x0c08('0x60')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x0c08('0x61')]=0x0;this[_0x0c08('0x62')]=0x0;this[_0x0c08('0x63')]=0x0;this[_0x0c08('0x64')]=0x0;this[_0x0c08('0x65')]=0x0;this[_0x0c08('0x66')]=0x0;this[_0x0c08('0x67')]=0x0;this[_0x0c08('0x68')]=_0x2be87f[_0x0c08('0x69')]||0x14;this[_0x0c08('0x6a')]=_0x2be87f['dialPredictiveIntervalMaxThreshold']||0xa;this[_0x0c08('0x6b')]=0x0;this[_0x0c08('0x6c')]=0x0;this[_0x0c08('0x6d')]=0x1;this['erlangCalls']=0x0;this[_0x0c08('0x6e')]=0x0;this[_0x0c08('0x6f')]=0x0;this[_0x0c08('0x70')]=0x0;this[_0x0c08('0x71')]=_0x2be87f[_0x0c08('0x71')]||0x1e;this[_0x0c08('0x72')]=_0x2be87f[_0x0c08('0x72')]||![];this[_0x0c08('0x73')]=_0x2be87f['dialQueueProject2']||undefined;this[_0x0c08('0x74')]=_0x2be87f['dialAgiAfterHangupClient']||![];this[_0x0c08('0x75')]=_0x2be87f[_0x0c08('0x75')]||![];this[_0x0c08('0x9')]=monitorFormat[_0x2be87f[_0x0c08('0x9')]]?monitorFormat[_0x2be87f['monitor_format']]:undefined;this[_0x0c08('0x76')]=_0x2be87f[_0x0c08('0x76')]||![];this[_0x0c08('0x77')]=_0x2be87f[_0x0c08('0x77')]?_0x2be87f[_0x0c08('0x77')]:undefined;}module[_0x0c08('0x78')]=VoiceQueue;
\ No newline at end of file
index 8ee4c79..2d70cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8f7=['accessKey','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x43e09c,_0x2359ad){var _0x54001d=function(_0x50837d){while(--_0x50837d){_0x43e09c['push'](_0x43e09c['shift']());}};_0x54001d(++_0x2359ad);}(_0xc8f7,0x116));var _0x7c8f=function(_0x423f1c,_0x2adb8c){_0x423f1c=_0x423f1c-0x0;var _0xebed4c=_0xc8f7[_0x423f1c];return _0xebed4c;};'use strict';function VtigerAccount(_0x3bb49a){this['id']=_0x3bb49a['id']||0x0;this[_0x7c8f('0x0')]=_0x3bb49a[_0x7c8f('0x0')]||'';this[_0x7c8f('0x1')]=_0x3bb49a['username']||'';this[_0x7c8f('0x2')]=_0x3bb49a[_0x7c8f('0x2')]||'';this[_0x7c8f('0x3')]=_0x3bb49a[_0x7c8f('0x3')]||'';this[_0x7c8f('0x4')]=_0x3bb49a[_0x7c8f('0x4')]||'';this['Configurations']=_0x3bb49a[_0x7c8f('0x5')]||{};}module[_0x7c8f('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x7b0d=['Configurations','exports','name','username','accessKey','remoteUri','serverUrl'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7b0d,0x72));var _0xd7b0=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x7b0d[_0x4154a6];return _0x3b2786;};'use strict';function VtigerAccount(_0x1d9952){this['id']=_0x1d9952['id']||0x0;this[_0xd7b0('0x0')]=_0x1d9952['name']||'';this['username']=_0x1d9952[_0xd7b0('0x1')]||'';this['accessKey']=_0x1d9952[_0xd7b0('0x2')]||'';this['remoteUri']=_0x1d9952[_0xd7b0('0x3')]||'';this[_0xd7b0('0x4')]=_0x1d9952[_0xd7b0('0x4')]||'';this[_0xd7b0('0x5')]=_0x1d9952[_0xd7b0('0x5')]||{};}module[_0xd7b0('0x6')]=VtigerAccount;
\ No newline at end of file
index bfb3079..c1e7b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x916d=['integrationTab','serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType','type'];(function(_0x3c6ee1,_0xd39978){var _0x36dcfe=function(_0x37b0ac){while(--_0x37b0ac){_0x3c6ee1['push'](_0x3c6ee1['shift']());}};_0x36dcfe(++_0xd39978);}(_0x916d,0x190));var _0xd916=function(_0x209525,_0x437089){_0x209525=_0x209525-0x0;var _0x2668c9=_0x916d[_0x209525];return _0x2668c9;};'use strict';function ZendeskAccount(_0x492786){this['id']=_0x492786['id']||0x0;this[_0xd916('0x0')]=_0x492786[_0xd916('0x0')]||'';this[_0xd916('0x1')]=_0x492786['username']||'';this[_0xd916('0x2')]=_0x492786[_0xd916('0x2')]||'';this['token']=_0x492786[_0xd916('0x3')]||'';this[_0xd916('0x4')]=_0x492786[_0xd916('0x4')]||'';this[_0xd916('0x5')]=_0x492786[_0xd916('0x5')]||'';this[_0xd916('0x6')]=_0x492786[_0xd916('0x6')]||_0xd916('0x7');this[_0xd916('0x8')]=_0x492786['serverUrl']||'';this[_0xd916('0x9')]=_0x492786['Configurations']||{};}module[_0xd916('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0x6b81=['integrationTab','serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType'];(function(_0x3806f0,_0x3c2f41){var _0x4d915a=function(_0x347ad5){while(--_0x347ad5){_0x3806f0['push'](_0x3806f0['shift']());}};_0x4d915a(++_0x3c2f41);}(_0x6b81,0x86));var _0x16b8=function(_0x549664,_0x3eda87){_0x549664=_0x549664-0x0;var _0x48a125=_0x6b81[_0x549664];return _0x48a125;};'use strict';function ZendeskAccount(_0x3f3de3){this['id']=_0x3f3de3['id']||0x0;this['name']=_0x3f3de3[_0x16b8('0x0')]||'';this['username']=_0x3f3de3[_0x16b8('0x1')]||'';this[_0x16b8('0x2')]=_0x3f3de3[_0x16b8('0x2')]||'';this[_0x16b8('0x3')]=_0x3f3de3[_0x16b8('0x3')]||'';this[_0x16b8('0x4')]=_0x3f3de3[_0x16b8('0x4')]||'';this[_0x16b8('0x5')]=_0x3f3de3[_0x16b8('0x5')]||'';this['type']=_0x3f3de3['type']||_0x16b8('0x6');this[_0x16b8('0x7')]=_0x3f3de3[_0x16b8('0x7')]||'';this['Configurations']=_0x3f3de3[_0x16b8('0x8')]||{};}module[_0x16b8('0x9')]=ZendeskAccount;
\ No newline at end of file
index 8644963..9dfc47e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a9=['exports','description','zone','clientId','clientSecret','code','refreshToken','Configurations'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x91a9,0x1e9));var _0x991a=function(_0x11cdad,_0x7e66de){_0x11cdad=_0x11cdad-0x0;var _0x327514=_0x91a9[_0x11cdad];return _0x327514;};'use strict';function ZohoAccount(_0x5dcbfb){this['id']=_0x5dcbfb['id']||0x0;this['name']=_0x5dcbfb['name']||'';this['description']=_0x5dcbfb[_0x991a('0x0')]||'';this['host']=_0x5dcbfb['host']||'';this[_0x991a('0x1')]=_0x5dcbfb[_0x991a('0x1')]||'';this[_0x991a('0x2')]=_0x5dcbfb[_0x991a('0x2')]||'';this[_0x991a('0x3')]=_0x5dcbfb[_0x991a('0x3')]||'';this['serverUrl']=_0x5dcbfb['serverUrl']||'';this[_0x991a('0x4')]=_0x5dcbfb[_0x991a('0x4')]||'';this[_0x991a('0x5')]=_0x5dcbfb[_0x991a('0x5')]||'';this[_0x991a('0x6')]=_0x5dcbfb[_0x991a('0x6')]||{};}module[_0x991a('0x7')]=ZohoAccount;
\ No newline at end of file
+var _0xf8bc=['code','refreshToken','Configurations','description','host','zone','clientId','clientSecret','serverUrl'];(function(_0x498d83,_0x4d7bb5){var _0x5632a4=function(_0x5ec08b){while(--_0x5ec08b){_0x498d83['push'](_0x498d83['shift']());}};_0x5632a4(++_0x4d7bb5);}(_0xf8bc,0x1a1));var _0xcf8b=function(_0x409fb8,_0x5ab3d3){_0x409fb8=_0x409fb8-0x0;var _0x278270=_0xf8bc[_0x409fb8];return _0x278270;};'use strict';function ZohoAccount(_0x2e228a){this['id']=_0x2e228a['id']||0x0;this['name']=_0x2e228a['name']||'';this[_0xcf8b('0x0')]=_0x2e228a[_0xcf8b('0x0')]||'';this[_0xcf8b('0x1')]=_0x2e228a[_0xcf8b('0x1')]||'';this['zone']=_0x2e228a[_0xcf8b('0x2')]||'';this[_0xcf8b('0x3')]=_0x2e228a[_0xcf8b('0x3')]||'';this[_0xcf8b('0x4')]=_0x2e228a[_0xcf8b('0x4')]||'';this[_0xcf8b('0x5')]=_0x2e228a['serverUrl']||'';this['code']=_0x2e228a[_0xcf8b('0x6')]||'';this[_0xcf8b('0x7')]=_0x2e228a[_0xcf8b('0x7')]||'';this['Configurations']=_0x2e228a[_0xcf8b('0x8')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index f2c629f..30afc81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf824=['name','channelAgent','format','SIP/%s','calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countabandonedretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId','originatecalleridnum','prototype','getCaller','number','exports','util','lodash','moment','string','isNil','uniqueid','idContact','type','queue','membername','Agent'];(function(_0x515eaf,_0x46cfc9){var _0x516eac=function(_0x332b2a){while(--_0x332b2a){_0x515eaf['push'](_0x515eaf['shift']());}};_0x516eac(++_0x46cfc9);}(_0xf824,0x1d9));var _0x4f82=function(_0x116c04,_0x4963da){_0x116c04=_0x116c04-0x0;var _0x9e011d=_0xf824[_0x116c04];return _0x9e011d;};'use strict';var util=require(_0x4f82('0x0'));var _=require(_0x4f82('0x1'));var moment=require(_0x4f82('0x2'));function checkNameSurname(_0x1c1932,_0x3c9d62,_0xc2c2b4){var _0x1279d0='';if(!_['isNil'](_0x3c9d62)&&_0x4f82('0x3')===typeof _0x3c9d62){_0x1279d0+=_0x3c9d62;}if(!_[_0x4f82('0x4')](_0xc2c2b4)&&_0x4f82('0x3')===typeof _0xc2c2b4){_0x1279d0+='\x20'+_0xc2c2b4;}if(_0x1279d0!==''){return _0x1279d0;}return _0x1c1932;}function Action(_0x5462d0,_0x49b184,_0x2be1b8,_0x12d2b8,_0x410179){this[_0x4f82('0x5')]=_0x2be1b8||undefined;this[_0x4f82('0x6')]=_0x5462d0['id'];this['queue']=_0x49b184['name'];this[_0x4f82('0x7')]=_0x49b184['type'];this['campaigntype']=_0x4f82('0x8');this['dialAnswer']=![];this[_0x4f82('0x9')]=_['isNil'](_0x5462d0[_0x4f82('0xa')])?undefined:_0x5462d0[_0x4f82('0xa')][_0x4f82('0xb')];this[_0x4f82('0xc')]=this['membername']?util[_0x4f82('0xd')](_0x4f82('0xe'),this[_0x4f82('0x9')]):_0x12d2b8||undefined;this[_0x4f82('0xf')]=checkNameSurname(_0x5462d0[_0x4f82('0x10')][_0x4f82('0x11')],_0x5462d0[_0x4f82('0x10')][_0x4f82('0x12')],_0x5462d0[_0x4f82('0x10')][_0x4f82('0x13')]);this[_0x4f82('0x14')]=_0x5462d0[_0x4f82('0x14')]||![];this[_0x4f82('0x15')]=_0x5462d0[_0x4f82('0x10')][_0x4f82('0x11')];this[_0x4f82('0x16')]=_0x5462d0[_0x4f82('0x16')];this[_0x4f82('0x17')]=_0x5462d0['countbusyretry']||0x0;this[_0x4f82('0x18')]=_0x5462d0[_0x4f82('0x18')]||0x0;this[_0x4f82('0x19')]=_0x5462d0[_0x4f82('0x19')]||0x0;this[_0x4f82('0x1a')]=(_0x5462d0[_0x4f82('0x17')]||0x0)+(_0x5462d0[_0x4f82('0x18')]||0x0)+(_0x5462d0[_0x4f82('0x19')]||0x0)+(_0x5462d0[_0x4f82('0x1b')]||0x0)+(_0x5462d0[_0x4f82('0x1c')]||0x0)+(_0x5462d0['countabandonedretry']||0x0)+(_0x5462d0[_0x4f82('0x1d')]||0x0)+(_0x5462d0['countagentrejectretry']||0x0);this['countnosuchnumberretry']=_0x5462d0[_0x4f82('0x1b')]||0x0;this[_0x4f82('0x1c')]=_0x5462d0['countdropretry']||0x0;this[_0x4f82('0x1e')]=_0x5462d0['countabandonedretry']||0x0;this[_0x4f82('0x1d')]=_0x5462d0[_0x4f82('0x1d')]||0x0;this[_0x4f82('0x1f')]=_0x5462d0[_0x4f82('0x1f')]||0x0;this['callback']=_0x5462d0[_0x4f82('0x20')];this[_0x4f82('0x21')]=_0x5462d0[_0x4f82('0x21')];this[_0x4f82('0x22')]=_0x5462d0[_0x4f82('0x22')];this[_0x4f82('0x23')]=_0x5462d0[_0x4f82('0x23')];this[_0x4f82('0x24')]=_0x5462d0[_0x4f82('0x24')];this[_0x4f82('0x25')]=_0x5462d0['ListId'];this['UserId']=_[_0x4f82('0x4')](_0x5462d0['Agent'])?_0x5462d0['UserId']:_0x5462d0[_0x4f82('0xa')]['id'];this[_0x4f82('0x26')]=_0x5462d0[_0x4f82('0x26')];this[_0x4f82('0x27')]='';this['originatecalleridname']='';}Action[_0x4f82('0x28')][_0x4f82('0x29')]=function(){return util[_0x4f82('0xd')]('\x22%s\x22\x20<%s>',this[_0x4f82('0xf')],this[_0x4f82('0x2a')]);};module[_0x4f82('0x2b')]=Action;
\ No newline at end of file
+var _0xf0a7=['countnoanswerretry','countglobal','countdropretry','countabandonedretry','countagentrejectretry','countnosuchnumberretry','countmachineretry','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','getCaller','format','\x22%s\x22\x20<%s>','number','exports','util','isNil','string','uniqueid','idContact','queue','type','dialAnswer','membername','Agent','name','channelAgent','calleridname','Contact','phone','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry'];(function(_0x1c9063,_0x27ce15){var _0x42687c=function(_0x5990d4){while(--_0x5990d4){_0x1c9063['push'](_0x1c9063['shift']());}};_0x42687c(++_0x27ce15);}(_0xf0a7,0xbd));var _0x7f0a=function(_0x3cbcfa,_0x3af16b){_0x3cbcfa=_0x3cbcfa-0x0;var _0x546d83=_0xf0a7[_0x3cbcfa];return _0x546d83;};'use strict';var util=require(_0x7f0a('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x1fa3fe,_0x5972bf,_0x1c1ec0){var _0x4c9488='';if(!_[_0x7f0a('0x1')](_0x5972bf)&&_0x7f0a('0x2')===typeof _0x5972bf){_0x4c9488+=_0x5972bf;}if(!_[_0x7f0a('0x1')](_0x1c1ec0)&&'string'===typeof _0x1c1ec0){_0x4c9488+='\x20'+_0x1c1ec0;}if(_0x4c9488!==''){return _0x4c9488;}return _0x1fa3fe;}function Action(_0x588d72,_0x51bf5f,_0x211513,_0x12c7d9,_0x1d53e6){this[_0x7f0a('0x3')]=_0x211513||undefined;this[_0x7f0a('0x4')]=_0x588d72['id'];this[_0x7f0a('0x5')]=_0x51bf5f['name'];this[_0x7f0a('0x6')]=_0x51bf5f['type'];this['campaigntype']=_0x7f0a('0x5');this[_0x7f0a('0x7')]=![];this[_0x7f0a('0x8')]=_[_0x7f0a('0x1')](_0x588d72[_0x7f0a('0x9')])?undefined:_0x588d72[_0x7f0a('0x9')][_0x7f0a('0xa')];this[_0x7f0a('0xb')]=this['membername']?util['format']('SIP/%s',this['membername']):_0x12c7d9||undefined;this[_0x7f0a('0xc')]=checkNameSurname(_0x588d72[_0x7f0a('0xd')][_0x7f0a('0xe')],_0x588d72[_0x7f0a('0xd')]['firstName'],_0x588d72['Contact'][_0x7f0a('0xf')]);this[_0x7f0a('0x10')]=_0x588d72[_0x7f0a('0x10')]||![];this[_0x7f0a('0x11')]=_0x588d72[_0x7f0a('0xd')][_0x7f0a('0xe')];this[_0x7f0a('0x12')]=_0x588d72['scheduledat'];this[_0x7f0a('0x13')]=_0x588d72['countbusyretry']||0x0;this[_0x7f0a('0x14')]=_0x588d72[_0x7f0a('0x14')]||0x0;this[_0x7f0a('0x15')]=_0x588d72['countnoanswerretry']||0x0;this[_0x7f0a('0x16')]=(_0x588d72[_0x7f0a('0x13')]||0x0)+(_0x588d72[_0x7f0a('0x14')]||0x0)+(_0x588d72['countnoanswerretry']||0x0)+(_0x588d72['countnosuchnumberretry']||0x0)+(_0x588d72[_0x7f0a('0x17')]||0x0)+(_0x588d72[_0x7f0a('0x18')]||0x0)+(_0x588d72['countmachineretry']||0x0)+(_0x588d72[_0x7f0a('0x19')]||0x0);this[_0x7f0a('0x1a')]=_0x588d72['countnosuchnumberretry']||0x0;this['countdropretry']=_0x588d72[_0x7f0a('0x17')]||0x0;this[_0x7f0a('0x18')]=_0x588d72[_0x7f0a('0x18')]||0x0;this[_0x7f0a('0x1b')]=_0x588d72[_0x7f0a('0x1b')]||0x0;this[_0x7f0a('0x19')]=_0x588d72['countagentrejectretry']||0x0;this[_0x7f0a('0x1c')]=_0x588d72[_0x7f0a('0x1c')];this[_0x7f0a('0x1d')]=_0x588d72[_0x7f0a('0x1d')];this[_0x7f0a('0x1e')]=_0x588d72[_0x7f0a('0x1e')];this['recallme']=_0x588d72['recallme'];this[_0x7f0a('0x1f')]=_0x588d72[_0x7f0a('0x1f')];this[_0x7f0a('0x20')]=_0x588d72['ListId'];this[_0x7f0a('0x21')]=_[_0x7f0a('0x1')](_0x588d72[_0x7f0a('0x9')])?_0x588d72[_0x7f0a('0x21')]:_0x588d72[_0x7f0a('0x9')]['id'];this[_0x7f0a('0x22')]=_0x588d72['VoiceQueueId'];this[_0x7f0a('0x23')]='';this[_0x7f0a('0x24')]='';}Action['prototype'][_0x7f0a('0x25')]=function(){return util[_0x7f0a('0x26')](_0x7f0a('0x27'),this['calleridname'],this[_0x7f0a('0x28')]);};module[_0x7f0a('0x29')]=Action;
\ No newline at end of file
index f7a7f9b..113e598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95ef=['voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','emit','voice_queue_presence:remove','sendMessageOneNotActive','available','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','syncCampaigns','hasOwnProperty','booked','setMessage','clearZombieChannel','isNil','Queue','queue','originated:\x20','dialAnswer','pick','contactId','VoiceQueueId','ListId','Action','catch','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannels','[action]','agentReadyId','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','then','logger2','[RecallMe]','disableContact','starttime','logCustomer','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','createCustomerFinal','[HistoryRecallClose]','AGENTS_NOT_LOGGED','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','ACTIVE','countnosuchnumberretry','countglobal','buildObj','[callProgressDetectingCustomer][logNoSuch]','totalGlobal','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','ANSWER','responsetime','answertime','uniqueid','\x20Queue','pTalking:\x20','connect','acw','custom:agentConnectPreview','buildAcw','complete','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','scheduledAt','NOANSWER','countnoanswerretry','NoAnswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','cloneAction','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialBusyRetryFrequency','CANCEL','AgentReject','custom:agentreject','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','outboundUnknownCallsDay','countmachineretry','cause-txt','dialstatus','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','amd','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','NoSuchNumber','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','lookAgent','isEmpty','[Preview][execCall][success]','\x20IdHopper:\x20','idContact','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','Contact\x20in\x20black\x20List','SIP/%s','status','reachable','unmonitored','run','unlock','unlockContact','execRun','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','phone','dialCutDigit','trim','substring','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','toLowerVariables','YYYY-MM-DD\x20HH:mm:ss','variablesAction','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','accountcode','[originated][increment]','[originateFailure][logOriginateFailure]','channel','syncOriginateResponse','actionid','logLookAgent','clone','isFailure','custom:agentringnoanswer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','callProgressDetectingCustomer','[syncHangup][talking][cause]','statedesc','channelstate','transfer','[syncHangup][talking][transfer]','addVariable','variables','filterKey','keys','variable','value','error','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','md5','ioredis','preview','actionPreview','./rpcDb','./action','./util/util','redis','defaults','socket.io-emitter','prototype','enqueue','tail','sequence','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','syncNewExten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','campaignsPreview','outbound','name','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','type','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','message','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','format','voice:queue:%s'];(function(_0x3c0e0f,_0x78214c){var _0x27cad8=function(_0xa979d5){while(--_0xa979d5){_0x3c0e0f['push'](_0x3c0e0f['shift']());}};_0x27cad8(++_0x78214c);}(_0x95ef,0xfb));var _0xf95e=function(_0xd9f857,_0x34ce2d){_0xd9f857=_0xd9f857-0x0;var _0x54f6a8=_0x95ef[_0xd9f857];return _0x54f6a8;};'use strict';var util=require(_0xf95e('0x0'));var _=require(_0xf95e('0x1'));var BPromise=require(_0xf95e('0x2'));var uuid=require(_0xf95e('0x3'));var moment=require('moment');var md5=require(_0xf95e('0x4'));var Redis=require(_0xf95e('0x5'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xf95e('0x6'));var loggerAction=require('../../../config/logger')(_0xf95e('0x7'));var ami=require('../ami');var rpcDb=require(_0xf95e('0x8'));var Action=require(_0xf95e('0x9'));var ut=require(_0xf95e('0xa'));config[_0xf95e('0xb')]=_[_0xf95e('0xc')](config[_0xf95e('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0xf95e('0xd'))(new Redis(config[_0xf95e('0xb')]));var Sequence=function(){};Sequence[_0xf95e('0xe')][_0xf95e('0xf')]=function(_0x194fa4){this[_0xf95e('0x10')]=this['tail']?this[_0xf95e('0x10')]['finally'](_0x194fa4):_0x194fa4();};function Preview(_0x349143){this[_0xf95e('0x11')]=new Sequence();this['campaignsPreview']=_0x349143[_0xf95e('0x12')];this[_0xf95e('0x13')]=_0x349143['trunks'];this[_0xf95e('0x14')]={};this[_0xf95e('0x15')]=_0x349143['agents'];this[_0xf95e('0x16')]=0x0;ami['on'](_0xf95e('0x17'),this['syncOriginateResponse'][_0xf95e('0x18')](this));ami['on'](_0xf95e('0x19'),this[_0xf95e('0x1a')][_0xf95e('0x18')](this));ami['on'](_0xf95e('0x1b'),this[_0xf95e('0x1c')][_0xf95e('0x18')](this));ami['on'](_0xf95e('0x1d'),this[_0xf95e('0x1e')][_0xf95e('0x18')](this));ami['on']('newexten',this[_0xf95e('0x1f')][_0xf95e('0x18')](this));ami['on'](_0xf95e('0x20'),this[_0xf95e('0x21')][_0xf95e('0x18')](this));ami['on'](_0xf95e('0x22'),this[_0xf95e('0x23')][_0xf95e('0x18')](this));ami['on']('blindtransfer',this[_0xf95e('0x24')][_0xf95e('0x18')](this));this['loopCampaigns'](this[_0xf95e('0x25')]);}function emit(_0x3c27b9,_0x439107,_0x1a749c){io['to'](_0x3c27b9)['emit'](_0x439107,_0x1a749c);}function emitCampaignPreview(_0x52b695){if(_0x52b695['type']===_0xf95e('0x26')){var _0x59ba99={'id':_0x52b695['id'],'name':_0x52b695[_0xf95e('0x27')],'strategy':_0x52b695[_0xf95e('0x28')],'answered':_0x52b695[_0xf95e('0x29')],'available':_0x52b695['available'],'loggedIn':_0x52b695[_0xf95e('0x2a')],'pTalking':_0x52b695[_0xf95e('0x2b')],'sumBillable':_0x52b695[_0xf95e('0x2c')],'sumDuration':_0x52b695[_0xf95e('0x2d')],'sumHoldTime':_0x52b695[_0xf95e('0x2e')]||0x0,'talking':_0x52b695[_0xf95e('0x2f')],'total':_0x52b695[_0xf95e('0x30')],'type':_0x52b695[_0xf95e('0x31')],'unmanaged':_0x52b695[_0xf95e('0x32')],'abandoned':_0x52b695[_0xf95e('0x33')],'waiting':_0x52b695[_0xf95e('0x34')],'loggedInDb':_0x52b695[_0xf95e('0x35')],'dialActive':_0x52b695[_0xf95e('0x36')],'dialMethod':_0x52b695[_0xf95e('0x37')],'dialOriginateCallerIdName':_0x52b695[_0xf95e('0x38')],'dialOriginateCallerIdNumber':_0x52b695[_0xf95e('0x39')],'dialOriginateTimeout':_0x52b695[_0xf95e('0x3a')],'dialPrefix':_0x52b695[_0xf95e('0x3b')],'outboundAnswerAgiCallsDay':_0x52b695[_0xf95e('0x3c')],'outboundAnswerCallsDay':_0x52b695[_0xf95e('0x3d')],'outboundBlacklistCallsDay':_0x52b695[_0xf95e('0x3e')],'outboundBusyCallsDay':_0x52b695[_0xf95e('0x3f')],'outboundCongestionCallsDay':_0x52b695[_0xf95e('0x40')],'outboundDropCallsDayACS':_0x52b695['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x52b695[_0xf95e('0x41')],'outboundDropCallsDayTimeout':_0x52b695[_0xf95e('0x42')],'outboundNoAnswerCallsDay':_0x52b695[_0xf95e('0x43')],'outboundNoSuchCallsDay':_0x52b695['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x52b695['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x52b695[_0xf95e('0x44')],'outboundRejectCallsDay':_0x52b695[_0xf95e('0x45')],'outboundUnknownCallsDay':_0x52b695['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x52b695[_0xf95e('0x46')],'predictiveIntervalAnsweredCalls':_0x52b695[_0xf95e('0x47')],'predictiveIntervalAvgHoldtime':_0x52b695[_0xf95e('0x48')],'predictiveIntervalAvgTalktime':_0x52b695[_0xf95e('0x49')],'predictiveIntervalDroppedCallsCallersExit':_0x52b695[_0xf95e('0x4a')],'predictiveIntervalDroppedCallsTimeout':_0x52b695[_0xf95e('0x4b')],'predictiveIntervalErlangCalls':_0x52b695[_0xf95e('0x4c')],'predictiveIntervalErlangCallsDroppedCalls':_0x52b695[_0xf95e('0x4d')],'predictiveIntervalHitRate':_0x52b695[_0xf95e('0x4e')],'predictiveIntervalMultiplicativeFactor':_0x52b695[_0xf95e('0x4f')],'predictiveIntervalPauses':_0x52b695[_0xf95e('0x50')],'predictiveIntervalAvailable':_0x52b695[_0xf95e('0x51')],'predictiveIntervalTotalCalls':_0x52b695['predictiveIntervalTotalCalls'],'message':_0x52b695[_0xf95e('0x52')],'originated':_0x52b695[_0xf95e('0x53')],'erlangCalls':_0x52b695[_0xf95e('0x54')],'erlangCallToSecond':_0x52b695['erlangCallToSecond'],'erlangAbandonmentRate':_0x52b695[_0xf95e('0x55')],'erlangBusyFactor':_0x52b695[_0xf95e('0x56')],'startPredictive':_0x52b695[_0xf95e('0x57')],'startProgressive':_0x52b695[_0xf95e('0x58')]};if(_0x52b695[_0xf95e('0x59')]){_0x59ba99[_0xf95e('0x59')]={'id':_0x52b695[_0xf95e('0x59')]['id'],'name':_0x52b695[_0xf95e('0x59')]['name'],'active':_0x52b695['Trunk'][_0xf95e('0x5a')],'callerid':_0x52b695[_0xf95e('0x59')][_0xf95e('0x5b')]};}if(_0x52b695[_0xf95e('0x5c')]){_0x59ba99[_0xf95e('0x5c')]={'id':_0x52b695[_0xf95e('0x5c')]['id'],'name':_0x52b695['Interval'][_0xf95e('0x27')]};}var _0x26cc75=md5(JSON[_0xf95e('0x5d')](_0x59ba99));if(_0x52b695[_0xf95e('0x4')]!==_0x26cc75){_0x52b695[_0xf95e('0x4')]=_0x26cc75;emit(util[_0xf95e('0x5e')](_0xf95e('0x5f'),_0x59ba99[_0xf95e('0x27')]),_0xf95e('0x60'),_0x59ba99);}}}function emitVoiceQueueChannelRemove(_0x4e49fc){logger[_0xf95e('0x61')](_0xf95e('0x62'),JSON['stringify'](_0x4e49fc));emit(util['format']('voice:queue:%s',_0x4e49fc[_0xf95e('0x27')]),_0xf95e('0x63'),_0x4e49fc);io[_0xf95e('0x64')](_0xf95e('0x65'),_0x4e49fc);}function notSendMessagesQueue(_0x22e295){if(_0x22e295[_0xf95e('0x66')]){if(_0x22e295[_0xf95e('0x53')]===0x0&&_0x22e295[_0xf95e('0x2b')]===0x0){_0x22e295['sendMessageOneNotActive']=![];_0x22e295[_0xf95e('0x67')]=0x0;_0x22e295[_0xf95e('0x68')]=0x0;_0x22e295['message']=_0xf95e('0x69');ut[_0xf95e('0x6a')](_0xf95e('0x6b'),_0x22e295['name']+_0xf95e('0x6c'));}else{_0x22e295[_0xf95e('0x52')]=_0xf95e('0x6d');ut[_0xf95e('0x6a')](_0xf95e('0x6b'),_0x22e295[_0xf95e('0x27')]+_0xf95e('0x6e'));}emitCampaignPreview(_0x22e295);}}Preview[_0xf95e('0xe')]['loopCampaigns']=function(){var _0x3d8b5a=this;setInterval(function(){_0x3d8b5a[_0xf95e('0x6f')]();},0x7cf);};Preview['prototype'][_0xf95e('0x6f')]=function(){var _0x196152=this[_0xf95e('0x25')];this[_0xf95e('0x16')]+=0x1;for(var _0x13916c in _0x196152){if(_0x196152[_0xf95e('0x70')](_0x13916c)&&(_0x196152[_0x13916c]['dialMethod']===_0xf95e('0x6')||_0x196152[_0x13916c]['dialMethod']===_0xf95e('0x71'))&&_0x196152[_0x13916c][_0xf95e('0x31')]==='outbound'){if(this[_0xf95e('0x16')]>0x7){this['clockClearZombieChannels']=0x0;this['clearZombieChannels']();}}if(_0x196152[_0xf95e('0x70')](_0x13916c)&&_0x196152[_0x13916c][_0xf95e('0x37')]==='preview'&&_0x196152[_0x13916c]['type']===_0xf95e('0x26')){if(_0x196152[_0x13916c][_0xf95e('0x36')]){this[_0xf95e('0x72')](_0x196152[_0x13916c]);this['recallMe'](_0x196152[_0x13916c]);}else{notSendMessagesQueue(_0x196152[_0x13916c]);}}}};Preview['prototype'][_0xf95e('0x73')]=function(_0x554432){var _0x4dc80a=this;this[_0xf95e('0x11')][_0xf95e('0xf')](function(){if(!_[_0xf95e('0x74')](_0x4dc80a[_0xf95e('0x14')][_0x554432])){loggerAction[_0xf95e('0x61')]('[clearZombieChannels][talking]',_0x554432,_0xf95e('0x75'),_0x4dc80a['actions'][_0x554432][_0xf95e('0x76')],_0xf95e('0x77'),JSON[_0xf95e('0x5d')](_0x4dc80a['campaignsPreview'][_0x4dc80a[_0xf95e('0x14')][_0x554432][_0xf95e('0x76')]][_0xf95e('0x53')]),'pTalking:\x20',JSON[_0xf95e('0x5d')](_0x4dc80a[_0xf95e('0x25')][_0x4dc80a[_0xf95e('0x14')][_0x554432][_0xf95e('0x76')]]['pTalking']),JSON[_0xf95e('0x5d')](_0x4dc80a[_0xf95e('0x14')][_0x554432][_0xf95e('0x78')]),JSON[_0xf95e('0x5d')](_[_0xf95e('0x79')](_0x4dc80a['actions'][_0x554432],[_0xf95e('0x7a'),'UserId',_0xf95e('0x7b'),_0xf95e('0x7c')])));return ami[_0xf95e('0x7d')]({'action':'status','channel':_0x4dc80a['actions'][_0x554432]['channel']})[_0xf95e('0x7e')](function(_0xc36611){if(_0xc36611['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x4dc80a[_0xf95e('0x14')][_0x554432]){ut[_0xf95e('0x7f')](_0x4dc80a[_0xf95e('0x25')][_0x4dc80a[_0xf95e('0x14')][_0x554432][_0xf95e('0x76')]],_0xf95e('0x80'));if(_0x4dc80a['actions'][_0x554432][_0xf95e('0x78')]===!![]){ut[_0xf95e('0x81')](_0x4dc80a[_0xf95e('0x25')][_0x4dc80a[_0xf95e('0x14')][_0x554432][_0xf95e('0x76')]],_0xf95e('0x80'));ut[_0xf95e('0x82')](_0xf95e('0x83')+_0x554432,_0x4dc80a[_0xf95e('0x14')][_0x554432][_0xf95e('0x76')]);}ut[_0xf95e('0x82')](_0xf95e('0x84')+_0x554432,_0x4dc80a[_0xf95e('0x14')][_0x554432]['queue']);delete _0x4dc80a[_0xf95e('0x14')][_0x554432];}},0x2328);}});}});};Preview[_0xf95e('0xe')][_0xf95e('0x85')]=function(){var _0x5a0d95=this;loggerAction['info'](_0xf95e('0x86'),_['size'](this[_0xf95e('0x14')]));for(var _0x20b479 in this['actions']){if(_0x5a0d95['actions'][_0xf95e('0x70')](_0x20b479)){_0x5a0d95[_0xf95e('0x73')](_0x20b479);}}};Preview[_0xf95e('0xe')]['recallMe']=function(_0x395606){var _0x5a52d2=this;rpcDb['getContactRecallMe'](_0x395606['id'],ut[_0xf95e('0x87')](this[_0xf95e('0x15')]))['then'](function(_0x42c9b8){if(!_[_0xf95e('0x74')](_0x42c9b8)){for(var _0x540e2f=0x0;_0x540e2f<_0x42c9b8[_0xf95e('0x88')];_0x540e2f+=0x1){if(ut[_0xf95e('0x89')](_0x42c9b8[_0x540e2f][_0xf95e('0x8a')])<_0x395606[_0xf95e('0x8b')]*0x3c){if(_0x42c9b8[_0x540e2f][_0xf95e('0x8c')]&&!_0x42c9b8[_0x540e2f][_0xf95e('0x8c')][_0xf95e('0x8d')]){_0x5a52d2['run'](_0x42c9b8[_0x540e2f]['id'])[_0xf95e('0x8e')](ut[_0xf95e('0x8f')]('[RecallMe]'))[_0xf95e('0x7e')](ut['logger2'](_0xf95e('0x90')));}else{rpcDb[_0xf95e('0x91')](_0x42c9b8[_0x540e2f]['id']);}}else{var _0x43e2c0=new Action(_0x42c9b8[_0x540e2f],_0x395606);_0x43e2c0[_0xf95e('0x92')]=moment()[_0xf95e('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');_0x395606[_0xf95e('0x44')]+=0x1;ut[_0xf95e('0x93')](_0x43e2c0,0x17,'RecallInQueue');if(_0x395606['dialRecallInQueue']){rpcDb['rescheduleContactInQueue'](ut[_0xf95e('0x94')](_0x42c9b8[_0x540e2f]));rpcDb[_0xf95e('0x95')](_0x43e2c0,_0xf95e('0x96'));}else{ut[_0xf95e('0x93')](_0x43e2c0,0x16,_0xf95e('0x97'));rpcDb[_0xf95e('0x95')](_0x43e2c0,'[HistoryRecallClose]');rpcDb[_0xf95e('0x98')](_0x43e2c0,_0xf95e('0x99'));}}}}})[_0xf95e('0x7e')](ut['logger2']('[getContactRecallMe]'));};Preview[_0xf95e('0xe')]['setMessage']=function(_0x1c3536){_0x1c3536[_0xf95e('0x66')]=!![];if(ut['IsNotLoggedIn'](_0x1c3536['loggedIn'])){_0x1c3536[_0xf95e('0x52')]=_0xf95e('0x9a');}else if(!ut['isActive'](_0x1c3536[_0xf95e('0x36')])){_0x1c3536[_0xf95e('0x52')]=_0xf95e('0x69');}else if(!this['isTrunkReachable'](_0x1c3536[_0xf95e('0x59')])){if(!this[_0xf95e('0x9b')](_0x1c3536['TrunkBackup'])){_0x1c3536[_0xf95e('0x52')]=_0xf95e('0x9c');}else{_0x1c3536[_0xf95e('0x52')]=_0xf95e('0x9d');}}else{_0x1c3536[_0xf95e('0x52')]=_0xf95e('0x9d');}emitCampaignPreview(_0x1c3536);};Preview['prototype']['callProgressDetectingCustomer']=function(_0x1eecba,_0x39fd07,_0x110d4a){var _0x3bb62b=this;var _0x5f553d=this[_0xf95e('0x14')][_0x39fd07];var _0x56cdcd=this['campaignsPreview'][_0x5f553d['queue']];var _0x449ed5;if(_0x56cdcd){switch(_0x110d4a){case'1':_0x56cdcd['outboundNoSuchCallsDay']+=0x1;_0x5f553d[_0xf95e('0x9e')]+=0x1;_0x5f553d[_0xf95e('0x9f')]=ut['totalGlobal'](_0x5f553d);ut['logCustomer'](_0x5f553d,0x0,'NoSuchNumber');ami[_0xf95e('0x64')]('custom:agentnosuchnumber',ut[_0xf95e('0xa0')](_0x5f553d,'nosuchnumber'));rpcDb['createCustomerHistory'](_0x5f553d,_0xf95e('0xa1'));if(ut[_0xf95e('0xa2')](_0x5f553d)>=_0x56cdcd[_0xf95e('0xa3')]){_0x449ed5=ut['cloneAction'](_0x5f553d,0xf,_0xf95e('0xa4'));rpcDb['createCustomerFinal'](_0x449ed5,_0xf95e('0xa5'));}else{if(_0x5f553d[_0xf95e('0x9e')]>=_0x56cdcd[_0xf95e('0xa6')]){rpcDb[_0xf95e('0x98')](_0x5f553d,_0xf95e('0xa5'));}else{rpcDb[_0xf95e('0xa7')](ut['scheduledAt'](_0x5f553d,_0xf95e('0x9e'),_0x56cdcd[_0xf95e('0xa8')]),_0x5f553d[_0xf95e('0xa9')],_0x5f553d[_0xf95e('0xaa')]);}}delete this[_0xf95e('0x14')][_0x1eecba[_0xf95e('0xab')]];break;case _0xf95e('0xac'):var _0x440c16=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5f553d[_0xf95e('0xad')]=_0x440c16;_0x5f553d[_0xf95e('0xae')]=_0x440c16;_0x5f553d[_0xf95e('0x78')]=!![];_0x56cdcd[_0xf95e('0x2b')]+=0x1;logger[_0xf95e('0x61')]('[syncHangup][talking][increment]',_0x5f553d[_0xf95e('0xaf')],_0xf95e('0xb0'),_0x56cdcd[_0xf95e('0x27')],_0xf95e('0xb1'),_0x56cdcd[_0xf95e('0x2b')]);ami[_0xf95e('0x64')]('custom:agentconnect',ut[_0xf95e('0xa0')](_0x5f553d,_0xf95e('0xb2'),this['campaignsPreview'][_0x5f553d[_0xf95e('0x76')]]));if(_0x56cdcd[_0xf95e('0xb3')]){ami['emit'](_0xf95e('0xb4'),ut[_0xf95e('0xb5')](_0x5f553d));}break;case'16':ami[_0xf95e('0x64')]('custom:agentcomplete',ut[_0xf95e('0xa0')](_0x5f553d,_0xf95e('0xb6'),this[_0xf95e('0x25')][_0x5f553d[_0xf95e('0x76')]]));emitVoiceQueueChannelRemove(ut[_0xf95e('0xa0')](_0x5f553d,'complete'));_0x56cdcd[_0xf95e('0x3d')]+=0x1;_0x56cdcd[_0xf95e('0x30')]+=0x1;_0x56cdcd[_0xf95e('0x29')]+=0x1;ut[_0xf95e('0x81')](_0x56cdcd,_0xf95e('0xb7'));_0x5f553d[_0xf95e('0x9f')]=ut[_0xf95e('0xa2')](_0x5f553d);ut[_0xf95e('0x93')](_0x5f553d,0x4,'Answer');rpcDb[_0xf95e('0x95')](_0x5f553d,_0xf95e('0xb8'));rpcDb[_0xf95e('0x98')](_0x5f553d,_0xf95e('0xb9'));rpcDb[_0xf95e('0xba')](_0x5f553d);_0x56cdcd[_0xf95e('0x2d')]+=_0x5f553d['talktime'];_0x56cdcd[_0xf95e('0x2c')]+=_0x5f553d[_0xf95e('0xbb')];logger['info'](_0xf95e('0xbc'),_0x5f553d[_0xf95e('0xaf')],_0xf95e('0xb0'),_0x56cdcd[_0xf95e('0x27')],_0xf95e('0xb1'),_0x56cdcd[_0xf95e('0x2b')]);delete this[_0xf95e('0x14')][_0x1eecba[_0xf95e('0xab')]];break;case _0xf95e('0xbd'):_0x56cdcd[_0xf95e('0x3f')]+=0x1;_0x5f553d[_0xf95e('0xbe')]+=0x1;_0x5f553d[_0xf95e('0x9f')]=ut[_0xf95e('0xa2')](_0x5f553d);ut[_0xf95e('0x93')](_0x5f553d,0x5,_0xf95e('0xbf'));ami[_0xf95e('0x64')](_0xf95e('0xc0'),ut[_0xf95e('0xa0')](_0x5f553d,_0xf95e('0xc1')));rpcDb[_0xf95e('0x95')](_0x5f553d,_0xf95e('0xc2'));if(ut['totalGlobal'](_0x5f553d)>=_0x56cdcd[_0xf95e('0xa3')]){_0x449ed5=ut['cloneAction'](_0x5f553d,0xf,_0xf95e('0xa4'));rpcDb['createCustomerFinal'](_0x449ed5,_0xf95e('0xc3'));}else{if(_0x5f553d[_0xf95e('0xbe')]>=_0x56cdcd[_0xf95e('0xc4')]){rpcDb[_0xf95e('0x98')](_0x5f553d,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0xf95e('0xa7')](ut[_0xf95e('0xc5')](_0x5f553d,_0xf95e('0xbe'),_0x56cdcd['dialBusyRetryFrequency']),_0x5f553d[_0xf95e('0xa9')],_0x5f553d[_0xf95e('0xaa')]);}}break;case _0xf95e('0xc6'):_0x56cdcd['outboundNoAnswerCallsDay']+=0x1;_0x5f553d[_0xf95e('0xc7')]+=0x1;_0x5f553d['countglobal']=ut[_0xf95e('0xa2')](_0x5f553d);ut[_0xf95e('0x93')](_0x5f553d,0x3,_0xf95e('0xc8'));ami[_0xf95e('0x64')]('custom:agentnoanswer',ut[_0xf95e('0xa0')](_0x5f553d,_0xf95e('0xc9')));rpcDb[_0xf95e('0x95')](_0x5f553d,_0xf95e('0xca'));if(ut['totalGlobal'](_0x5f553d)>=_0x56cdcd['dialGlobalMaxRetry']){_0x449ed5=ut[_0xf95e('0xcb')](_0x5f553d,0xf,_0xf95e('0xa4'));rpcDb[_0xf95e('0x98')](_0x449ed5,_0xf95e('0xcc'));}else{if(_0x5f553d['countnoanswerretry']>=_0x56cdcd[_0xf95e('0xcd')]){rpcDb[_0xf95e('0x98')](_0x5f553d,_0xf95e('0xca'));}else{rpcDb['rescheduleContact'](ut[_0xf95e('0xc5')](_0x5f553d,'countnoanswerretry',_0x56cdcd['dialNoAnswerRetryFrequency']),_0x5f553d[_0xf95e('0xa9')],_0x5f553d[_0xf95e('0xaa')]);}}break;case'CONGESTION':_0x56cdcd['outboundCongestionCallsDay']+=0x1;_0x5f553d[_0xf95e('0xce')]+=0x1;_0x5f553d['countglobal']=ut[_0xf95e('0xa2')](_0x5f553d);ut[_0xf95e('0x93')](_0x5f553d,0x8,_0xf95e('0xcf'));ami['emit'](_0xf95e('0xd0'),ut[_0xf95e('0xa0')](_0x5f553d,_0xf95e('0xd1')));rpcDb[_0xf95e('0x95')](_0x5f553d,_0xf95e('0xd2'));if(ut[_0xf95e('0xa2')](_0x5f553d)>=_0x56cdcd[_0xf95e('0xa3')]){_0x449ed5=ut[_0xf95e('0xcb')](_0x5f553d,0xf,_0xf95e('0xa4'));rpcDb[_0xf95e('0x98')](_0x449ed5,_0xf95e('0xd3'));}else{if(_0x5f553d['countcongestionretry']>=_0x56cdcd['dialCongestionMaxRetry']){rpcDb[_0xf95e('0x98')](_0x5f553d,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0xf95e('0xa7')](ut['scheduledAt'](_0x5f553d,_0xf95e('0xce'),_0x56cdcd[_0xf95e('0xd4')]),_0x5f553d[_0xf95e('0xa9')],_0x5f553d[_0xf95e('0xaa')]);}}break;case _0xf95e('0xd5'):_0x56cdcd['outboundRejectCallsDay']+=0x1;_0x5f553d['countagentrejectretry']+=0x1;_0x5f553d[_0xf95e('0x9f')]=ut[_0xf95e('0xa2')](_0x5f553d);ut[_0xf95e('0x93')](_0x5f553d,0x14,_0xf95e('0xd6'));ami[_0xf95e('0x64')](_0xf95e('0xd7'),ut[_0xf95e('0xa0')](_0x5f553d,'agentreject'));rpcDb[_0xf95e('0x95')](_0x5f553d,'[syncHangupRequest][logAgentReject]');if(ut[_0xf95e('0xa2')](_0x5f553d)>=_0x56cdcd['dialGlobalMaxRetry']){_0x449ed5=ut[_0xf95e('0xcb')](_0x5f553d,0x14,'AgentReject');rpcDb[_0xf95e('0x98')](_0x449ed5,_0xf95e('0xd8'));}else{if(_0x5f553d[_0xf95e('0xd9')]>=_0x56cdcd[_0xf95e('0xda')]){rpcDb['createCustomerFinal'](_0x5f553d,_0xf95e('0xd8'));}else{rpcDb[_0xf95e('0xa7')](ut[_0xf95e('0xc5')](_0x5f553d,'countagentrejectretry',_0x56cdcd[_0xf95e('0xdb')]),_0x5f553d[_0xf95e('0xa9')],_0x5f553d[_0xf95e('0xaa')]);}}break;case _0xf95e('0xdc'):_0x56cdcd[_0xf95e('0x46')]+=0x1;_0x5f553d[_0xf95e('0xdd')]+=0x1;_0x5f553d[_0xf95e('0x9f')]=ut[_0xf95e('0xa2')](_0x5f553d);ut[_0xf95e('0x93')](_0x5f553d,0xb,_0xf95e('0xde'));rpcDb[_0xf95e('0x95')](_0x5f553d,_0xf95e('0xdf'));if(ut['totalGlobal'](_0x5f553d)>=_0x56cdcd[_0xf95e('0xa3')]){_0x449ed5=ut[_0xf95e('0xcb')](_0x5f553d,0xf,_0xf95e('0xa4'));rpcDb[_0xf95e('0x98')](_0x449ed5,_0xf95e('0xdf'));}else{if(_0x5f553d['countabandonedetry']>=_0x56cdcd[_0xf95e('0xe0')]){rpcDb[_0xf95e('0x98')](_0x5f553d,_0xf95e('0xdf'));}else{rpcDb['rescheduleContact'](ut[_0xf95e('0xc5')](_0x5f553d,_0xf95e('0xdd'),_0x56cdcd['dialAbandonedRetryFrequency']),_0x5f553d[_0xf95e('0xa9')],_0x5f553d[_0xf95e('0xaa')]);}}break;case'18':_0x56cdcd[_0xf95e('0xe1')]+=0x1;_0x5f553d[_0xf95e('0xe2')]+=0x1;_0x5f553d[_0xf95e('0x9f')]=ut[_0xf95e('0xa2')](_0x5f553d);ut['logCustomer'](_0x5f553d,0x12,_0x1eecba[_0xf95e('0xe3')]||_0x1eecba[_0xf95e('0xe4')]);ami['emit'](_0xf95e('0xe5'),ut['buildObj'](_0x5f553d,'amd'));rpcDb[_0xf95e('0x95')](_0x5f553d,'[callProgressDetectingCustomer][hangupInAMD]');if(ut[_0xf95e('0xa2')](_0x5f553d)>=_0x56cdcd[_0xf95e('0xa3')]){_0x449ed5=ut[_0xf95e('0xcb')](_0x5f553d,0xf,_0xf95e('0xa4'));rpcDb[_0xf95e('0x98')](_0x449ed5,_0xf95e('0xe6'));}else{rpcDb[_0xf95e('0x98')](_0x5f553d,_0xf95e('0xe6'));}delete this[_0xf95e('0x14')][_0x1eecba[_0xf95e('0xab')]];break;case'19':_0x56cdcd[_0xf95e('0xe1')]+=0x1;_0x5f553d[_0xf95e('0x9f')]=ut[_0xf95e('0xa2')](_0x5f553d);ut[_0xf95e('0x93')](_0x5f553d,0x13,_0x1eecba['cause-txt']||_0x1eecba[_0xf95e('0xe4')]);ami[_0xf95e('0x64')](_0xf95e('0xe5'),ut[_0xf95e('0xa0')](_0x5f553d,_0xf95e('0xe7')));rpcDb[_0xf95e('0x95')](_0x5f553d,'[callProgressDetectingCustomer][machine]');if(ut[_0xf95e('0xa2')](_0x5f553d)>=_0x56cdcd['dialGlobalMaxRetry']){_0x449ed5=ut[_0xf95e('0xcb')](_0x5f553d,0xf,_0xf95e('0xa4'));rpcDb[_0xf95e('0x98')](_0x449ed5,'[callProgressDetectingCustomer][machine]');}else{rpcDb['createCustomerFinal'](_0x5f553d,_0xf95e('0xe8'));}delete this['actions'][_0x1eecba[_0xf95e('0xab')]];break;default:if(_0x5f553d[_0xf95e('0x78')]){ut[_0xf95e('0x81')](_0x56cdcd,'[default]');ut[_0xf95e('0x82')](_0xf95e('0xe9')+_0x56cdcd[_0xf95e('0x27')],_0x1eecba);}_0x56cdcd[_0xf95e('0xe1')]+=0x1;_0x5f553d[_0xf95e('0x9f')]=ut[_0xf95e('0xa2')](_0x5f553d);ut['logCustomer'](_0x5f553d,0xc,_0x1eecba[_0xf95e('0xe3')]||_0x1eecba[_0xf95e('0xe4')]);rpcDb['createCustomerHistory'](_0x5f553d,_0xf95e('0xea'));if(ut[_0xf95e('0xa2')](_0x5f553d)>=_0x56cdcd['dialGlobalMaxRetry']){_0x449ed5=ut[_0xf95e('0xcb')](_0x5f553d,0xf,_0xf95e('0xa4'));rpcDb[_0xf95e('0x98')](_0x449ed5,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0xf95e('0x98')](_0x5f553d,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xf95e('0x14')][_0x1eecba[_0xf95e('0xab')]];}if(!(_0x5f553d[_0xf95e('0x78')]&&_0x110d4a==='16')){ut[_0xf95e('0x7f')](_0x56cdcd,_0xf95e('0xeb'));logger[_0xf95e('0x61')](_0xf95e('0xec'),_0x5f553d[_0xf95e('0xaf')],_0xf95e('0xb0'),_0x56cdcd[_0xf95e('0x27')],'originated:\x20',_0x56cdcd[_0xf95e('0x53')]);}if(_0x110d4a!==_0xf95e('0xac')){delete this[_0xf95e('0x14')][_0x1eecba[_0xf95e('0xab')]];delete this[_0xf95e('0x14')][_0x1eecba[_0xf95e('0xed')]];}}};Preview[_0xf95e('0xe')][_0xf95e('0xee')]=function(_0x15d343,_0x286c5a,_0xe46d3f){if(_[_0xf95e('0xef')](_0x286c5a)&&_0xf95e('0xf0')!==typeof _0x286c5a){return;}if(_[_0xf95e('0xef')](_0xe46d3f)&&_0xf95e('0xf0')!==typeof _0xe46d3f){return;}switch(_0xe46d3f[_0xf95e('0xf1')]){case'0':ut[_0xf95e('0xf2')](_0x15d343,0x0,_0xf95e('0xf3'));rpcDb[_0xf95e('0xf4')](_0x15d343,_0xf95e('0xf5'));break;case'3':ut[_0xf95e('0xf2')](_0x15d343,0x3,'NoAnswer');rpcDb[_0xf95e('0xf4')](_0x15d343,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut['logAgent'](_0x15d343,0x5,'Busy');rpcDb[_0xf95e('0xf4')](_0x15d343,_0xf95e('0xf6'));break;case'8':ut['logAgent'](_0x15d343,0x8,_0xf95e('0xcf'));rpcDb[_0xf95e('0xf4')](_0x15d343,_0xf95e('0xf7'));break;case'22':ut['logAgent'](_0x15d343,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x15d343,_0xf95e('0xf8'));break;default:ut['logAgent'](_0x15d343,0xc,_0xe46d3f[_0xf95e('0xf1')]);rpcDb[_0xf95e('0xf4')](_0x15d343,_0xf95e('0xf7'));}ut['updateOriginated'](_0x286c5a,_0xf95e('0xf9'));logger[_0xf95e('0x61')](_0xf95e('0xfa'),_0x15d343[_0xf95e('0xaf')],'\x20Queue',_0x286c5a[_0xf95e('0x27')],_0xf95e('0x77'),_0x286c5a['originated']);delete this[_0xf95e('0x14')][_0x15d343[_0xf95e('0xaf')]];};Preview['prototype'][_0xf95e('0xfb')]=function(_0x2c2b50,_0x17349f,_0x20c544,_0x2f6d0f,_0xba3d82){var _0x1f0b53=this;return new BPromise(function(_0x2c3007,_0x5d2036){if(_[_0xf95e('0x74')](_0x17349f)||_['isNil'](_0x17349f['Contact'])||_[_0xf95e('0x74')](_0x17349f[_0xf95e('0xfc')]['phone'])||_[_0xf95e('0x74')](_0x17349f['VoiceQueueId'])){_0x5d2036(ut[_0xf95e('0x52')]('Contact\x20is\x20undefined',_0x2f6d0f,_0xba3d82));return;}var _0x148e0e=uuid['v4']();var _0x53dddc=_0x1f0b53['campaignsPreview'][_0x17349f[_0xf95e('0x75')]['name']];var _0x4f6311=_0x20c544?_0x1f0b53[_0xf95e('0x15')][_0x20c544]['id']:undefined;_0x1f0b53[_0xf95e('0x14')][_0x148e0e]=new Action(_0x17349f,_0x53dddc,_0x148e0e,_0x20c544,_0x4f6311);var _0x764733=_0x1f0b53[_0xf95e('0x14')][_0x148e0e];_0x764733[_0xf95e('0xa9')]=_0x2f6d0f;_0x764733[_0xf95e('0xaa')]=_0xba3d82;_0x764733[_0xf95e('0xfd')]=_0x20c544;if(_[_0xf95e('0xfe')](_0x2c2b50)){_0x1f0b53['execCall'](_0x764733,_0x53dddc,_0x17349f,_0x20c544)['then'](function(_0x2ed27b){logger['info'](_0xf95e('0xff'),'Queue:\x20'+_0x764733[_0xf95e('0x76')]+_0xf95e('0x100')+_0x764733[_0xf95e('0x101')],JSON['stringify'](_0x2ed27b));ami[_0xf95e('0x64')]('custom:agentcalled',ut[_0xf95e('0xa0')](_0x764733,_0xf95e('0x102'),_0x1f0b53[_0xf95e('0x25')][_0x764733[_0xf95e('0x76')]]));_0x2c3007(ut[_0xf95e('0x52')](_0xf95e('0x103')));})[_0xf95e('0x7e')](function(_0x266405){ut[_0xf95e('0x6a')](_0xf95e('0x104'),_0x266405);_0x5d2036(ut[_0xf95e('0x52')](_0xf95e('0x105'),_0x2f6d0f,_0xba3d82));});}else{_0x53dddc[_0xf95e('0x3e')]+=0x1;ut[_0xf95e('0x106')](_0x764733);rpcDb[_0xf95e('0x107')](_0x764733,'[Blacklist][error]');delete _0x1f0b53[_0xf95e('0x14')][_0x148e0e];_0x5d2036(ut[_0xf95e('0x52')](_0xf95e('0x108'),_0x2f6d0f,_0xba3d82));}});};Preview['prototype'][_0xf95e('0x9b')]=function(_0x12ef28){return!_[_0xf95e('0x74')](_0x12ef28)&&!_[_0xf95e('0x74')](_0x12ef28[_0xf95e('0x27')])&&!_[_0xf95e('0x74')](_0x12ef28[_0xf95e('0x5a')])&&_0x12ef28[_0xf95e('0x5a')]&&!_[_0xf95e('0x74')](this['trunks'][util['format'](_0xf95e('0x109'),_0x12ef28[_0xf95e('0x27')])])&&!_[_0xf95e('0x74')](this['trunks'][util[_0xf95e('0x5e')](_0xf95e('0x109'),_0x12ef28[_0xf95e('0x27')])][_0xf95e('0x10a')])&&(this['trunks'][util[_0xf95e('0x5e')](_0xf95e('0x109'),_0x12ef28[_0xf95e('0x27')])][_0xf95e('0x10a')]===_0xf95e('0x10b')||this['trunks'][util[_0xf95e('0x5e')](_0xf95e('0x109'),_0x12ef28[_0xf95e('0x27')])]['status']===_0xf95e('0x10c'));};Preview[_0xf95e('0xe')][_0xf95e('0x10d')]=function(_0x489af7,_0x83b6e3){var _0x4e4291=this;return new BPromise(function(_0x4b7cf8,_0x5b38c3){_0x4e4291['execRun'](_0x489af7,_0x83b6e3)[_0xf95e('0x8e')](function(_0x1136d1){_0x4b7cf8(_['pick'](_0x1136d1,[_0xf95e('0x52')]));})[_0xf95e('0x7e')](function(_0x2637a5){if(_0x2637a5[_0xf95e('0x10e')]){rpcDb[_0xf95e('0x10f')](_0x489af7);}if(_0x2637a5[_0xf95e('0x5a')]){rpcDb[_0xf95e('0x91')](_0x489af7);}_0x5b38c3(_[_0xf95e('0x79')](_0x2637a5,['message']));});});};Preview['prototype'][_0xf95e('0x110')]=function(_0x4951a5,_0x1303c1){var _0x1569f5=this;return new BPromise(function(_0x4a4c99,_0x35a839){var _0x30154e,_0x33a9ec;rpcDb[_0xf95e('0x111')](_0x4951a5)[_0xf95e('0x8e')](function(_0xee3edf){if(!_[_0xf95e('0x74')](_0xee3edf[0x0])){_0x33a9ec=_0xee3edf[0x0][_0xf95e('0x112')]?![]:!![];_0x30154e=_0xee3edf[0x0]['recallme']?!![]:![];_0x30154e=_0x1303c1?!![]:_0x30154e;}var _0x1fbe8b=_0x1569f5[_0xf95e('0x113')](_0xee3edf);if(_0x1fbe8b[_0xf95e('0x114')]){rpcDb[_0xf95e('0x115')](_[_0xf95e('0x79')](_0xee3edf[0x0],[_0xf95e('0x7b'),_0xf95e('0x116')]))[_0xf95e('0x8e')](function(_0x4c61fa){_0x1569f5[_0xf95e('0xfb')](_0x4c61fa,_0xee3edf[0x0],_0x1303c1,_0x33a9ec,_0x30154e)[_0xf95e('0x8e')](function(_0x232d23){_0x4a4c99(_0x232d23);})[_0xf95e('0x7e')](function(_0x2a2d07){_0x35a839(_0x2a2d07);});})['catch'](function(_0x21d725){ut[_0xf95e('0x6a')](_0xf95e('0x117'),_0x21d725);_0x35a839(ut['message'](_0xf95e('0x118'),_0x33a9ec,_0x30154e));});}else{_0x35a839(ut[_0xf95e('0x52')](_0x1fbe8b[_0xf95e('0x52')],_0x33a9ec,_0x30154e));}})[_0xf95e('0x7e')](function(_0x21724a){ut[_0xf95e('0x6a')](_0xf95e('0x119'),_0x21724a);_0x35a839(ut[_0xf95e('0x52')]('Call\x20unsuccessful',![],!![]));});});};Preview[_0xf95e('0xe')]['validateContact']=function(_0x5a2d13){if(_[_0xf95e('0x74')](_0x5a2d13)||_[_0xf95e('0xfe')](_0x5a2d13)||!_[_0xf95e('0x74')](_0x5a2d13[0x0][_0xf95e('0x8c')])&&_['isNil'](_0x5a2d13[0x0][_0xf95e('0x8c')][_0xf95e('0x27')])){ut[_0xf95e('0x6a')](_0xf95e('0x11a'),_0x5a2d13);return{'isValid':![],'message':_0xf95e('0x11b')};}var _0x3b41e6=this[_0xf95e('0x25')][_0x5a2d13[0x0][_0xf95e('0x75')][_0xf95e('0x27')]];_0x3b41e6[_0xf95e('0x52')]='ACTIVE';if(_[_0xf95e('0x74')](_0x3b41e6)){ut[_0xf95e('0x6a')](_0xf95e('0x11c'),_0x3b41e6);return{'isValid':![],'message':_0xf95e('0x11d')};}if(!this['isTrunkReachable'](_0x3b41e6[_0xf95e('0x59')])){ut[_0xf95e('0x6a')](_0xf95e('0x11e'),_0xf95e('0x11f')+_0x3b41e6[_0xf95e('0x27')]+_0xf95e('0x120'));if(!this['isTrunkReachable'](_0x3b41e6[_0xf95e('0x121')])){ut[_0xf95e('0x6a')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x3b41e6[_0xf95e('0x27')]+_0xf95e('0x122'));return{'isValid':![],'message':_0xf95e('0x123')};}}if(!ut[_0xf95e('0x124')](_0x3b41e6[_0xf95e('0x36')])){ut[_0xf95e('0x6a')](_0xf95e('0x125'),_0x3b41e6[_0xf95e('0x27')]+_0xf95e('0x126'));return{'isValid':![],'message':_0xf95e('0x11f')+_0x3b41e6[_0xf95e('0x27')]+_0xf95e('0x126')};}return{'isValid':!![],'message':_0xf95e('0x127')};};Preview[_0xf95e('0xe')][_0xf95e('0x128')]=function(_0x24f87b,_0x4d3c40,_0x163aa0,_0x2c01ca){var _0x1ad395=this;return new BPromise(function(_0x10c5bd,_0xef6ea2){var _0x19ecb7=_0x24f87b['uniqueid'];var _0x9d41ff=_0x1ad395[_0xf95e('0x9b')](_0x4d3c40[_0xf95e('0x59')])?util[_0xf95e('0x5e')](_0xf95e('0x129'),_0x4d3c40[_0xf95e('0x59')]['name'],_[_0xf95e('0x74')](_0x4d3c40[_0xf95e('0x3b')])?'':_0x4d3c40['dialPrefix']['trim']()||'',_0x4d3c40['dialCutDigit']>0x0?_0x163aa0[_0xf95e('0xfc')][_0xf95e('0x12a')]['substring'](_0x4d3c40[_0xf95e('0x12b')]):_0x163aa0[_0xf95e('0xfc')]['phone']):util[_0xf95e('0x5e')](_0xf95e('0x129'),_[_0xf95e('0x74')](_0x4d3c40[_0xf95e('0x121')])?_0x4d3c40['Trunk'][_0xf95e('0x27')]:_0x4d3c40[_0xf95e('0x121')]['name'],_[_0xf95e('0x74')](_0x4d3c40[_0xf95e('0x3b')])?'':_0x4d3c40['dialPrefix'][_0xf95e('0x12c')]()||'',_0x4d3c40[_0xf95e('0x12b')]>0x0?_0x163aa0[_0xf95e('0xfc')][_0xf95e('0x12a')][_0xf95e('0x12d')](_0x4d3c40[_0xf95e('0x12b')]):_0x163aa0[_0xf95e('0xfc')][_0xf95e('0x12a')]);var _0x292e47=_0x1ad395[_0xf95e('0x9b')](_0x4d3c40[_0xf95e('0x59')])?ut['getCallerId'](_0x4d3c40[_0xf95e('0x59')][_0xf95e('0x5b')],_0x4d3c40[_0xf95e('0x38')],_0x4d3c40[_0xf95e('0x12e')]>0x0?ut[_0xf95e('0x12f')](_0x4d3c40[_0xf95e('0x39')],_0x4d3c40['dialRandomLastDigitCallerIdNumber']):_0x4d3c40[_0xf95e('0x39')]):ut['getCallerId'](_[_0xf95e('0x74')](_0x4d3c40[_0xf95e('0x121')])?_0x4d3c40[_0xf95e('0x59')]['callerid']:_0x4d3c40[_0xf95e('0x121')][_0xf95e('0x5b')],_0x4d3c40[_0xf95e('0x38')],_0x4d3c40[_0xf95e('0x12e')]>0x0?ut[_0xf95e('0x12f')](_0x4d3c40[_0xf95e('0x39')],_0x4d3c40[_0xf95e('0x12e')]):_0x4d3c40[_0xf95e('0x39')]);if(_0x292e47){_0x24f87b[_0xf95e('0x130')]=ut[_0xf95e('0x131')](_0x292e47);_0x24f87b[_0xf95e('0x132')]=ut[_0xf95e('0x133')](_0x292e47);}var _0x39557b=ut[_0xf95e('0x134')](_0x4d3c40,_0x163aa0,_0x9d41ff,_0x292e47,_0x19ecb7,_0x24f87b);_['merge'](_0x24f87b,ut[_0xf95e('0x135')](_0x39557b));_0x24f87b[_0xf95e('0x92')]=moment()[_0xf95e('0x5e')](_0xf95e('0x136'));ami[_0xf95e('0x7d')](ut[_0xf95e('0x137')](_0x24f87b,_0x4d3c40,_0x39557b,_0x24f87b[_0xf95e('0xaa')],_0x2c01ca))[_0xf95e('0x8e')](function(_0x4b0a32){var _0x503e54=_0x24f87b[_0xf95e('0x138')];if(!_[_0xf95e('0x74')](_0x503e54)){if(!_[_0xf95e('0x74')](_0x1ad395[_0xf95e('0x15')][_0x503e54])){_0x1ad395[_0xf95e('0x15')][_0x503e54][_0xf95e('0x139')]=_0x24f87b[_0xf95e('0x13a')];emit(util[_0xf95e('0x5e')](_0xf95e('0x13b'),_0x1ad395[_0xf95e('0x15')][_0x503e54][_0xf95e('0x27')]),_0xf95e('0x13c'),{'destaccountcode':_0x1ad395[_0xf95e('0x15')][_0x503e54][_0xf95e('0x13d')],'destconnectedlinenum':_0x24f87b[_0xf95e('0x13a')]});}}_0x4d3c40[_0xf95e('0x53')]+=0x1;logger['info'](_0xf95e('0x13e'),_0x19ecb7,_0xf95e('0xb0'),_0x4d3c40['name'],_0xf95e('0x77'),_0x4d3c40[_0xf95e('0x53')]);_0x10c5bd(_0x4b0a32);})[_0xf95e('0x7e')](function(_0x4e1f98){ut['logAgent'](_0x24f87b,0xe,'OriginateError');rpcDb[_0xf95e('0xf4')](_0x24f87b,_0xf95e('0x13f'));_0xef6ea2(_0x4e1f98);});});};Preview[_0xf95e('0xe')][_0xf95e('0x1f')]=function(_0x25ff42){if(this[_0xf95e('0x14')][_0x25ff42[_0xf95e('0xab')]]){this[_0xf95e('0x14')][_0x25ff42[_0xf95e('0xab')]][_0xf95e('0x140')]=_0x25ff42[_0xf95e('0x140')];}};Preview[_0xf95e('0xe')][_0xf95e('0x141')]=function(_0x117ff9){var _0x471284=this;var _0x2ab85c=this['actions'][_0x117ff9[_0xf95e('0x142')]];if(_0x2ab85c){if(_0x2ab85c[_0xf95e('0xfd')]&&this['agents'][_0x2ab85c[_0xf95e('0xfd')]]){ut[_0xf95e('0x143')](_0x2ab85c,this[_0xf95e('0x15')][_0x2ab85c[_0xf95e('0xfd')]][_0xf95e('0x27')],this['agents'][_0x2ab85c[_0xf95e('0xfd')]]['id']);}var _0x2a1c86=_[_0xf95e('0x144')](_0x2ab85c);_0x2a1c86[_0xf95e('0xad')]=moment()[_0xf95e('0x5e')](_0xf95e('0x136'));var _0x25e92a=_0x471284['campaignsPreview'][_0x2ab85c['queue']];if(ut[_0xf95e('0x145')](_0x117ff9['response'])){if(_0x2ab85c[_0xf95e('0xa9')]){rpcDb['unlockContact'](_0x2ab85c[_0xf95e('0x101')]);}if(_0x2ab85c[_0xf95e('0xaa')]){rpcDb[_0xf95e('0x91')](_0x2ab85c[_0xf95e('0x101')]);}ami[_0xf95e('0x64')](_0xf95e('0x146'),ut['buildObj'](_0x2ab85c,'rejected',this[_0xf95e('0x25')][_0x2ab85c[_0xf95e('0x76')]]));this[_0xf95e('0xee')](_0x2a1c86,_0x25e92a,_0x117ff9);}else{_0x2ab85c['starttime']=moment()[_0xf95e('0x5e')](_0xf95e('0x136'));ut[_0xf95e('0xf2')](_0x2a1c86,0x4,'Answer');rpcDb[_0xf95e('0xf4')](_0x2a1c86,_0xf95e('0x147'));}}};Preview['prototype']['syncHangup']=function(_0x43d714){var _0x816439=this;var _0x422283=this[_0xf95e('0x14')][_0x43d714[_0xf95e('0xab')]];var _0x41ee4a;if(_0x422283){_0x41ee4a=this[_0xf95e('0x25')][_0x422283[_0xf95e('0x76')]];logger['info'](_0xf95e('0x148'),_0x43d714[_0xf95e('0xab')],_0xf95e('0xb0'),_0x41ee4a['name'],'pTalking:\x20',_0x41ee4a['pTalking']);}if(this[_0xf95e('0x14')][_0x43d714[_0xf95e('0xab')]]&&_0x43d714[_0xf95e('0xab')]!==_0x43d714[_0xf95e('0xaf')]){if(_0x43d714[_0xf95e('0x149')]==='16'&&this['actions'][_0x43d714['linkedid']][_0xf95e('0x78')]){this[_0xf95e('0x14a')](_0x43d714,_0x43d714[_0xf95e('0xab')],_0x43d714[_0xf95e('0x149')]);}else if(this[_0xf95e('0x14')][_0x43d714[_0xf95e('0xab')]][_0xf95e('0x78')]){logger[_0xf95e('0x61')](_0xf95e('0x14b'),_0x43d714[_0xf95e('0xab')],_0x43d714[_0xf95e('0x149')],_0xf95e('0xb0'),_0x41ee4a[_0xf95e('0x27')],'pTalking:\x20',_0x41ee4a[_0xf95e('0x2b')]);this['callProgressDetectingCustomer'](_0x43d714,_0x43d714[_0xf95e('0xab')],_0x43d714[_0xf95e('0x149')]);}}else if(_0x422283&&_['isNil'](_0x422283[_0xf95e('0x14c')])&&_0x41ee4a['dialQueueProject']&&_0x43d714[_0xf95e('0xab')]===_0x43d714['uniqueid']&&_['isNil'](_0x43d714[_0xf95e('0xf1')])&&_0x43d714[_0xf95e('0x149')]==='16'&&_0x43d714[_0xf95e('0x14d')]==='6'&&_['isUndefined'](_0x422283[_0xf95e('0x14e')])){if(_0x422283[_0xf95e('0xa9')]){rpcDb[_0xf95e('0x10f')](_0x422283[_0xf95e('0x101')]);}if(_0x422283[_0xf95e('0xaa')]){rpcDb[_0xf95e('0x91')](_0x422283[_0xf95e('0x101')]);}_0x43d714['reason']='22';this[_0xf95e('0xee')](_0x422283,_0x41ee4a,_0x43d714);}else if(_0x422283&&_0x422283[_0xf95e('0x14e')]){if(_0x43d714[_0xf95e('0x149')]==='16'&&this['actions'][_0x43d714['linkedid']][_0xf95e('0x78')]){logger[_0xf95e('0x61')](_0xf95e('0x14f'),_0x43d714[_0xf95e('0xab')],_0x43d714[_0xf95e('0x149')],_0xf95e('0xb0'),_0x41ee4a[_0xf95e('0x27')],'pTalking:\x20',_0x41ee4a['pTalking']);this[_0xf95e('0x14a')](_0x43d714,_0x43d714[_0xf95e('0xab')],_0x43d714[_0xf95e('0x149')]);}else if(this['actions'][_0x43d714[_0xf95e('0xab')]][_0xf95e('0x78')]){logger['info'](_0xf95e('0x14b'),_0x43d714['linkedid'],_0x43d714[_0xf95e('0x149')],_0xf95e('0xb0'),_0x41ee4a[_0xf95e('0x27')],_0xf95e('0xb1'),_0x41ee4a[_0xf95e('0x2b')]);this['callProgressDetectingCustomer'](_0x43d714,_0x43d714['linkedid'],_0x43d714[_0xf95e('0x149')]);}}};Preview['prototype'][_0xf95e('0x1e')]=function(_0x522f93){if(this[_0xf95e('0x14')][_0x522f93[_0xf95e('0xed')]]&&_0x522f93[_0xf95e('0xed')]!==_0x522f93['destuniqueid']){this[_0xf95e('0x14a')](_0x522f93,_0x522f93[_0xf95e('0xed')],_0x522f93[_0xf95e('0xe4')]);}};Preview[_0xf95e('0xe')][_0xf95e('0x1c')]=function(_0x2b4095){if(this['actions'][_0x2b4095[_0xf95e('0xab')]]&&_0x2b4095[_0xf95e('0xab')]!==_0x2b4095['uniqueid']&&!this[_0xf95e('0x14')][_0x2b4095[_0xf95e('0xab')]][_0xf95e('0x78')]){if(_0x2b4095[_0xf95e('0x149')]==='1'){this[_0xf95e('0x14a')](_0x2b4095,_0x2b4095[_0xf95e('0xab')],_0x2b4095[_0xf95e('0x149')]);}}};Preview[_0xf95e('0xe')][_0xf95e('0x150')]=function(_0x29ebf9,_0x5a2feb,_0x5367ae){if(this['actions'][_0x29ebf9]){if(_['isNil'](this[_0xf95e('0x14')][_0x29ebf9]['variables'])){this[_0xf95e('0x14')][_0x29ebf9]['variables']={};}this['actions'][_0x29ebf9][_0xf95e('0x151')][_0x5a2feb]=_0x5367ae;}};Preview[_0xf95e('0xe')][_0xf95e('0x21')]=function(_0xb2f3b7){try{if(!_['isNil'](_0xb2f3b7)){if(ut[_0xf95e('0x152')](_[_0xf95e('0x153')](_0xb2f3b7[_0xf95e('0x154')])[0x0])){this[_0xf95e('0x150')](_0xb2f3b7[_0xf95e('0xaf')],_[_0xf95e('0x153')](_0xb2f3b7[_0xf95e('0x154')])[0x0],_0xb2f3b7[_0xf95e('0x155')]);}}}catch(_0x1fd360){logger[_0xf95e('0x156')]('[syncVarSet][Preview]',util[_0xf95e('0x157')](_0x1fd360,{'showHidden':![],'depth':null}));}};Preview[_0xf95e('0xe')]['syncAttendedTransfer']=function(_0x4179f4){if(_0x4179f4){if(this[_0xf95e('0x14')][_0x4179f4[_0xf95e('0x158')]]){this[_0xf95e('0x14')][_0x4179f4[_0xf95e('0x158')]][_0xf95e('0x14e')]=!![];}}};Preview[_0xf95e('0xe')][_0xf95e('0x24')]=function(_0x146896){if(_0x146896){if(this[_0xf95e('0x14')][_0x146896[_0xf95e('0x159')]]){this[_0xf95e('0x14')][_0x146896['transfererlinkedid']]['transfer']=!![];}}};module[_0xf95e('0x15a')]=Preview;
\ No newline at end of file
+var _0x63ec=['custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','uniqueid','originated','destlinkedid','isUndefined','object','reason','NoSuchNumber','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','logAgent','[callProgressDetectingAgent][logNoAnswer]','Busy','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Queue','lookAgent','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Call\x20failed','createHistory','[Blacklist][error]','active','SIP/%s','reachable','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','isValid','Contact.phone','[Preview][checkIsBlackList]','[Preview][getContactPreview]','isEmpty','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','ACTIVE','[Preview][validateContact][Empty\x20Campaign]','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','Is\x20Valid','trim','dialCutDigit','SIP/%s/%s%s','substring','getCallerId','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','extractCalleridNumber','addVariables','merge','toLowerVariables','variablesAction','channelAgent','calleridnum','user:%s','accountcode','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','syncOriginateResponse','logLookAgent','isFailure','response','callProgressDetectingAgent','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','variables','syncVarSet','filterKey','variable','addVariable','keys','value','error','inspect','transfertargetlinkedid','syncBlindTransfer','transfererlinkedid','exports','bluebird','uuid','moment','../../../config/environment','../../../config/logger','preview','actionPreview','./rpcDb','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','attendedtransfer','syncAttendedTransfer','blindtransfer','loopCampaigns','emit','type','outbound','name','strategy','available','loggedIn','sumBillable','talking','total','abandoned','loggedInDb','dialActive','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startPredictive','Trunk','callerid','Interval','stringify','md5','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','pTalking','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','syncCampaigns','hasOwnProperty','dialMethod','clearZombieChannels','setMessage','recallMe','clearZombieChannel','isNil','[clearZombieChannels][talking]','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','size','getContactRecallMe','agentReadyId','then','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','[getContactRecallMe]','isActive','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','callProgressDetectingCustomer','countglobal','totalGlobal','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','countnosuchnumberretry','activeContact','linkedid','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','\x20Queue','custom:agentconnect','connect','acw','custom:agentcomplete','complete','answered','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','sumDuration','talktime','[syncHangup][talking][decrement]','countbusyretry','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','scheduledAt','unlockAgent','NOANSWER','countnoanswerretry','NoAnswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','dialBusyRetryFrequency','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','countabandonedretry','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus'];(function(_0x1c0c7c,_0x2ede87){var _0x1eeae0=function(_0x6d671b){while(--_0x6d671b){_0x1c0c7c['push'](_0x1c0c7c['shift']());}};_0x1eeae0(++_0x2ede87);}(_0x63ec,0x1cc));var _0xc63e=function(_0x119a9e,_0x1d22ab){_0x119a9e=_0x119a9e-0x0;var _0x400dd0=_0x63ec[_0x119a9e];return _0x400dd0;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0xc63e('0x0'));var uuid=require(_0xc63e('0x1'));var moment=require(_0xc63e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0xc63e('0x3'));var logger=require(_0xc63e('0x4'))(_0xc63e('0x5'));var loggerAction=require(_0xc63e('0x4'))(_0xc63e('0x6'));var ami=require('../ami');var rpcDb=require(_0xc63e('0x7'));var Action=require('./action');var ut=require('./util/util');config[_0xc63e('0x8')]=_[_0xc63e('0x9')](config[_0xc63e('0x8')],{'host':_0xc63e('0xa'),'port':0x18eb});var io=require(_0xc63e('0xb'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xc63e('0xc')][_0xc63e('0xd')]=function(_0x52b4b8){this['tail']=this[_0xc63e('0xe')]?this['tail'][_0xc63e('0xf')](_0x52b4b8):_0x52b4b8();};function Preview(_0x121138){this[_0xc63e('0x10')]=new Sequence();this[_0xc63e('0x11')]=_0x121138[_0xc63e('0x12')];this[_0xc63e('0x13')]=_0x121138[_0xc63e('0x13')];this[_0xc63e('0x14')]={};this[_0xc63e('0x15')]=_0x121138[_0xc63e('0x15')];this[_0xc63e('0x16')]=0x0;ami['on']('originateresponse',this['syncOriginateResponse'][_0xc63e('0x17')](this));ami['on'](_0xc63e('0x18'),this[_0xc63e('0x19')][_0xc63e('0x17')](this));ami['on'](_0xc63e('0x1a'),this[_0xc63e('0x1b')]['bind'](this));ami['on'](_0xc63e('0x1c'),this[_0xc63e('0x1d')][_0xc63e('0x17')](this));ami['on'](_0xc63e('0x1e'),this[_0xc63e('0x1f')]['bind'](this));ami['on'](_0xc63e('0x20'),this['syncVarSet'][_0xc63e('0x17')](this));ami['on'](_0xc63e('0x21'),this[_0xc63e('0x22')]['bind'](this));ami['on'](_0xc63e('0x23'),this['syncBlindTransfer'][_0xc63e('0x17')](this));this[_0xc63e('0x24')](this['campaignsPreview']);}function emit(_0x11c9b6,_0x263379,_0x22afad){io['to'](_0x11c9b6)[_0xc63e('0x25')](_0x263379,_0x22afad);}function emitCampaignPreview(_0x1e6d40){if(_0x1e6d40[_0xc63e('0x26')]===_0xc63e('0x27')){var _0x5e85e0={'id':_0x1e6d40['id'],'name':_0x1e6d40[_0xc63e('0x28')],'strategy':_0x1e6d40[_0xc63e('0x29')],'answered':_0x1e6d40['answered'],'available':_0x1e6d40[_0xc63e('0x2a')],'loggedIn':_0x1e6d40[_0xc63e('0x2b')],'pTalking':_0x1e6d40['pTalking'],'sumBillable':_0x1e6d40[_0xc63e('0x2c')],'sumDuration':_0x1e6d40['sumDuration'],'sumHoldTime':_0x1e6d40['sumHoldTime']||0x0,'talking':_0x1e6d40[_0xc63e('0x2d')],'total':_0x1e6d40[_0xc63e('0x2e')],'type':_0x1e6d40[_0xc63e('0x26')],'unmanaged':_0x1e6d40['unmanaged'],'abandoned':_0x1e6d40[_0xc63e('0x2f')],'waiting':_0x1e6d40['waiting'],'loggedInDb':_0x1e6d40[_0xc63e('0x30')],'dialActive':_0x1e6d40[_0xc63e('0x31')],'dialMethod':_0x1e6d40['dialMethod'],'dialOriginateCallerIdName':_0x1e6d40['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x1e6d40[_0xc63e('0x32')],'dialOriginateTimeout':_0x1e6d40[_0xc63e('0x33')],'dialPrefix':_0x1e6d40[_0xc63e('0x34')],'outboundAnswerAgiCallsDay':_0x1e6d40['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x1e6d40[_0xc63e('0x35')],'outboundBlacklistCallsDay':_0x1e6d40[_0xc63e('0x36')],'outboundBusyCallsDay':_0x1e6d40[_0xc63e('0x37')],'outboundCongestionCallsDay':_0x1e6d40[_0xc63e('0x38')],'outboundDropCallsDayACS':_0x1e6d40['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x1e6d40[_0xc63e('0x39')],'outboundDropCallsDayTimeout':_0x1e6d40[_0xc63e('0x3a')],'outboundNoAnswerCallsDay':_0x1e6d40[_0xc63e('0x3b')],'outboundNoSuchCallsDay':_0x1e6d40[_0xc63e('0x3c')],'outboundOriginateFailureCallsDay':_0x1e6d40[_0xc63e('0x3d')],'outboundReCallsDay':_0x1e6d40[_0xc63e('0x3e')],'outboundRejectCallsDay':_0x1e6d40[_0xc63e('0x3f')],'outboundUnknownCallsDay':_0x1e6d40[_0xc63e('0x40')],'outboundAbandonedCallsDay':_0x1e6d40[_0xc63e('0x41')],'predictiveIntervalAnsweredCalls':_0x1e6d40[_0xc63e('0x42')],'predictiveIntervalAvgHoldtime':_0x1e6d40[_0xc63e('0x43')],'predictiveIntervalAvgTalktime':_0x1e6d40[_0xc63e('0x44')],'predictiveIntervalDroppedCallsCallersExit':_0x1e6d40['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x1e6d40['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x1e6d40[_0xc63e('0x45')],'predictiveIntervalErlangCallsDroppedCalls':_0x1e6d40[_0xc63e('0x46')],'predictiveIntervalHitRate':_0x1e6d40[_0xc63e('0x47')],'predictiveIntervalMultiplicativeFactor':_0x1e6d40[_0xc63e('0x48')],'predictiveIntervalPauses':_0x1e6d40[_0xc63e('0x49')],'predictiveIntervalAvailable':_0x1e6d40[_0xc63e('0x4a')],'predictiveIntervalTotalCalls':_0x1e6d40[_0xc63e('0x4b')],'message':_0x1e6d40[_0xc63e('0x4c')],'originated':_0x1e6d40['originated'],'erlangCalls':_0x1e6d40[_0xc63e('0x4d')],'erlangCallToSecond':_0x1e6d40[_0xc63e('0x4e')],'erlangAbandonmentRate':_0x1e6d40[_0xc63e('0x4f')],'erlangBusyFactor':_0x1e6d40['erlangBusyFactor'],'startPredictive':_0x1e6d40[_0xc63e('0x50')],'startProgressive':_0x1e6d40['startProgressive']};if(_0x1e6d40[_0xc63e('0x51')]){_0x5e85e0[_0xc63e('0x51')]={'id':_0x1e6d40[_0xc63e('0x51')]['id'],'name':_0x1e6d40['Trunk']['name'],'active':_0x1e6d40[_0xc63e('0x51')]['active'],'callerid':_0x1e6d40[_0xc63e('0x51')][_0xc63e('0x52')]};}if(_0x1e6d40['Interval']){_0x5e85e0[_0xc63e('0x53')]={'id':_0x1e6d40[_0xc63e('0x53')]['id'],'name':_0x1e6d40['Interval'][_0xc63e('0x28')]};}var _0x15512c=md5(JSON[_0xc63e('0x54')](_0x5e85e0));if(_0x1e6d40[_0xc63e('0x55')]!==_0x15512c){_0x1e6d40[_0xc63e('0x55')]=_0x15512c;emit(util[_0xc63e('0x56')](_0xc63e('0x57'),_0x5e85e0['name']),_0xc63e('0x58'),_0x5e85e0);}}}function emitVoiceQueueChannelRemove(_0x59edbf){logger[_0xc63e('0x59')](_0xc63e('0x5a'),JSON[_0xc63e('0x54')](_0x59edbf));emit(util[_0xc63e('0x56')]('voice:queue:%s',_0x59edbf[_0xc63e('0x28')]),_0xc63e('0x5b'),_0x59edbf);io['emit'](_0xc63e('0x5c'),_0x59edbf);}function notSendMessagesQueue(_0x11255c){if(_0x11255c[_0xc63e('0x5d')]){if(_0x11255c['originated']===0x0&&_0x11255c[_0xc63e('0x5e')]===0x0){_0x11255c[_0xc63e('0x5d')]=![];_0x11255c[_0xc63e('0x2a')]=0x0;_0x11255c[_0xc63e('0x5f')]=0x0;_0x11255c[_0xc63e('0x4c')]=_0xc63e('0x60');ut[_0xc63e('0x61')](_0xc63e('0x62'),_0x11255c[_0xc63e('0x28')]+_0xc63e('0x63'));}else{_0x11255c['message']='IS_DISACTIVED';ut[_0xc63e('0x61')](_0xc63e('0x62'),_0x11255c[_0xc63e('0x28')]+'\x20is\x20disactive');}emitCampaignPreview(_0x11255c);}}Preview[_0xc63e('0xc')][_0xc63e('0x24')]=function(){var _0x5705f7=this;setInterval(function(){_0x5705f7[_0xc63e('0x64')]();},0x7cf);};Preview['prototype'][_0xc63e('0x64')]=function(){var _0x17b677=this[_0xc63e('0x11')];this['clockClearZombieChannels']+=0x1;for(var _0x51daea in _0x17b677){if(_0x17b677[_0xc63e('0x65')](_0x51daea)&&(_0x17b677[_0x51daea]['dialMethod']===_0xc63e('0x5')||_0x17b677[_0x51daea][_0xc63e('0x66')]==='booked')&&_0x17b677[_0x51daea][_0xc63e('0x26')]==='outbound'){if(this[_0xc63e('0x16')]>0x7){this[_0xc63e('0x16')]=0x0;this[_0xc63e('0x67')]();}}if(_0x17b677[_0xc63e('0x65')](_0x51daea)&&_0x17b677[_0x51daea][_0xc63e('0x66')]==='preview'&&_0x17b677[_0x51daea]['type']===_0xc63e('0x27')){if(_0x17b677[_0x51daea][_0xc63e('0x31')]){this[_0xc63e('0x68')](_0x17b677[_0x51daea]);this[_0xc63e('0x69')](_0x17b677[_0x51daea]);}else{notSendMessagesQueue(_0x17b677[_0x51daea]);}}}};Preview[_0xc63e('0xc')][_0xc63e('0x6a')]=function(_0x3b318b){var _0x3d2c8a=this;this[_0xc63e('0x10')][_0xc63e('0xd')](function(){if(!_[_0xc63e('0x6b')](_0x3d2c8a[_0xc63e('0x14')][_0x3b318b])){loggerAction[_0xc63e('0x59')](_0xc63e('0x6c'),_0x3b318b,'Queue',_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x6d')],_0xc63e('0x6e'),JSON[_0xc63e('0x54')](_0x3d2c8a['campaignsPreview'][_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x6d')]]['originated']),_0xc63e('0x6f'),JSON['stringify'](_0x3d2c8a[_0xc63e('0x11')][_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x6d')]][_0xc63e('0x5e')]),JSON[_0xc63e('0x54')](_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x70')]),JSON[_0xc63e('0x54')](_[_0xc63e('0x71')](_0x3d2c8a[_0xc63e('0x14')][_0x3b318b],[_0xc63e('0x72'),_0xc63e('0x73'),_0xc63e('0x74'),_0xc63e('0x75')])));return ami[_0xc63e('0x76')]({'action':_0xc63e('0x77'),'channel':_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x78')]})[_0xc63e('0x79')](function(_0x1b14da){if(_0x1b14da[_0xc63e('0x4c')]===_0xc63e('0x7a')){setTimeout(function(){if(_0x3d2c8a[_0xc63e('0x14')][_0x3b318b]){ut[_0xc63e('0x7b')](_0x3d2c8a[_0xc63e('0x11')][_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x6d')]],_0xc63e('0x7c'));if(_0x3d2c8a['actions'][_0x3b318b][_0xc63e('0x70')]===!![]){ut[_0xc63e('0x7d')](_0x3d2c8a['campaignsPreview'][_0x3d2c8a['actions'][_0x3b318b][_0xc63e('0x6d')]],_0xc63e('0x7c'));ut[_0xc63e('0x7e')](_0xc63e('0x7f')+_0x3b318b,_0x3d2c8a[_0xc63e('0x14')][_0x3b318b]['queue']);}ut[_0xc63e('0x7e')](_0xc63e('0x80')+_0x3b318b,_0x3d2c8a[_0xc63e('0x14')][_0x3b318b][_0xc63e('0x6d')]);delete _0x3d2c8a['actions'][_0x3b318b];}},0x2328);}});}});};Preview[_0xc63e('0xc')][_0xc63e('0x67')]=function(){var _0x206f5a=this;loggerAction[_0xc63e('0x59')]('[action]',_[_0xc63e('0x81')](this[_0xc63e('0x14')]));for(var _0x4caf21 in this[_0xc63e('0x14')]){if(_0x206f5a[_0xc63e('0x14')][_0xc63e('0x65')](_0x4caf21)){_0x206f5a[_0xc63e('0x6a')](_0x4caf21);}}};Preview[_0xc63e('0xc')]['recallMe']=function(_0x52a01c){var _0x243dad=this;rpcDb[_0xc63e('0x82')](_0x52a01c['id'],ut[_0xc63e('0x83')](this['agents']))[_0xc63e('0x84')](function(_0x1a4e6b){if(!_[_0xc63e('0x6b')](_0x1a4e6b)){for(var _0x404eb3=0x0;_0x404eb3<_0x1a4e6b['length'];_0x404eb3+=0x1){if(ut[_0xc63e('0x85')](_0x1a4e6b[_0x404eb3][_0xc63e('0x86')])<_0x52a01c[_0xc63e('0x87')]*0x3c){if(_0x1a4e6b[_0x404eb3]['Agent']&&!_0x1a4e6b[_0x404eb3][_0xc63e('0x88')][_0xc63e('0x89')]){_0x243dad[_0xc63e('0x8a')](_0x1a4e6b[_0x404eb3]['id'])['then'](ut[_0xc63e('0x8b')](_0xc63e('0x8c')))[_0xc63e('0x79')](ut['logger2'](_0xc63e('0x8c')));}else{rpcDb[_0xc63e('0x8d')](_0x1a4e6b[_0x404eb3]['id']);}}else{var _0x33569c=new Action(_0x1a4e6b[_0x404eb3],_0x52a01c);_0x33569c[_0xc63e('0x8e')]=moment()[_0xc63e('0x56')](_0xc63e('0x8f'));_0x52a01c[_0xc63e('0x3e')]+=0x1;ut[_0xc63e('0x90')](_0x33569c,0x17,_0xc63e('0x91'));if(_0x52a01c[_0xc63e('0x92')]){rpcDb[_0xc63e('0x93')](ut[_0xc63e('0x94')](_0x1a4e6b[_0x404eb3]));rpcDb[_0xc63e('0x95')](_0x33569c,_0xc63e('0x96'));}else{ut[_0xc63e('0x90')](_0x33569c,0x16,'RecallFailedTimeout');rpcDb[_0xc63e('0x95')](_0x33569c,_0xc63e('0x97'));rpcDb['createCustomerFinal'](_0x33569c,_0xc63e('0x97'));}}}}})[_0xc63e('0x79')](ut[_0xc63e('0x8b')](_0xc63e('0x98')));};Preview[_0xc63e('0xc')][_0xc63e('0x68')]=function(_0x203602){_0x203602[_0xc63e('0x5d')]=!![];if(ut['IsNotLoggedIn'](_0x203602[_0xc63e('0x2b')])){_0x203602[_0xc63e('0x4c')]='AGENTS_NOT_LOGGED';}else if(!ut[_0xc63e('0x99')](_0x203602['dialActive'])){_0x203602[_0xc63e('0x4c')]='NOT_ACTIVE';}else if(!this[_0xc63e('0x9a')](_0x203602[_0xc63e('0x51')])){if(!this[_0xc63e('0x9a')](_0x203602['TrunkBackup'])){_0x203602[_0xc63e('0x4c')]=_0xc63e('0x9b');}else{_0x203602[_0xc63e('0x4c')]='ACTIVE';}}else{_0x203602[_0xc63e('0x4c')]='ACTIVE';}emitCampaignPreview(_0x203602);};Preview[_0xc63e('0xc')][_0xc63e('0x9c')]=function(_0x31b91a,_0x1ccdda,_0x401956){var _0x1c9e27=this;var _0x218abd=this[_0xc63e('0x14')][_0x1ccdda];var _0x5a4f0a=this[_0xc63e('0x11')][_0x218abd[_0xc63e('0x6d')]];var _0x782a80;if(_0x5a4f0a){switch(_0x401956){case'1':_0x5a4f0a[_0xc63e('0x3c')]+=0x1;_0x218abd['countnosuchnumberretry']+=0x1;_0x218abd[_0xc63e('0x9d')]=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0x0,'NoSuchNumber');ami['emit'](_0xc63e('0x9f'),ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xa1')));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xa2'));if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0xf,_0xc63e('0xa5'));rpcDb[_0xc63e('0xa6')](_0x782a80,_0xc63e('0xa7'));}else{if(_0x218abd['countnosuchnumberretry']>=_0x5a4f0a[_0xc63e('0xa8')]){rpcDb[_0xc63e('0xa6')](_0x218abd,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0xc63e('0xa9')](ut['scheduledAt'](_0x218abd,_0xc63e('0xaa'),_0x5a4f0a['dialNoSuchNumberRetryFrequency']),_0x218abd['unlockAgent'],_0x218abd[_0xc63e('0xab')]);}}delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];break;case _0xc63e('0xad'):var _0x248ba3=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x218abd[_0xc63e('0xae')]=_0x248ba3;_0x218abd[_0xc63e('0xaf')]=_0x248ba3;_0x218abd[_0xc63e('0x70')]=!![];_0x5a4f0a[_0xc63e('0x5e')]+=0x1;logger['info'](_0xc63e('0xb0'),_0x218abd['uniqueid'],_0xc63e('0xb1'),_0x5a4f0a['name'],_0xc63e('0x6f'),_0x5a4f0a['pTalking']);ami[_0xc63e('0x25')](_0xc63e('0xb2'),ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xb3'),this[_0xc63e('0x11')][_0x218abd[_0xc63e('0x6d')]]));if(_0x5a4f0a[_0xc63e('0xb4')]){ami[_0xc63e('0x25')]('custom:agentConnectPreview',ut['buildAcw'](_0x218abd));}break;case'16':ami['emit'](_0xc63e('0xb5'),ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xb6'),this[_0xc63e('0x11')][_0x218abd[_0xc63e('0x6d')]]));emitVoiceQueueChannelRemove(ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xb6')));_0x5a4f0a[_0xc63e('0x35')]+=0x1;_0x5a4f0a[_0xc63e('0x2e')]+=0x1;_0x5a4f0a[_0xc63e('0xb7')]+=0x1;ut[_0xc63e('0x7d')](_0x5a4f0a,_0xc63e('0xb8'));_0x218abd['countglobal']=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0x4,_0xc63e('0xb9'));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xba'));rpcDb['createCustomerFinal'](_0x218abd,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0xc63e('0xbb')](_0x218abd);_0x5a4f0a[_0xc63e('0xbc')]+=_0x218abd[_0xc63e('0xbd')];_0x5a4f0a[_0xc63e('0x2c')]+=_0x218abd['talktime'];logger[_0xc63e('0x59')](_0xc63e('0xbe'),_0x218abd['uniqueid'],'\x20Queue',_0x5a4f0a['name'],_0xc63e('0x6f'),_0x5a4f0a['pTalking']);delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];break;case'BUSY':_0x5a4f0a[_0xc63e('0x37')]+=0x1;_0x218abd[_0xc63e('0xbf')]+=0x1;_0x218abd['countglobal']=ut[_0xc63e('0x9e')](_0x218abd);ut['logCustomer'](_0x218abd,0x5,'Busy');ami[_0xc63e('0x25')]('custom:agentbusy',ut['buildObj'](_0x218abd,'busy'));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xc0'));if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut['cloneAction'](_0x218abd,0xf,'Global');rpcDb[_0xc63e('0xa6')](_0x782a80,_0xc63e('0xc1'));}else{if(_0x218abd[_0xc63e('0xbf')]>=_0x5a4f0a['dialBusyMaxRetry']){rpcDb[_0xc63e('0xa6')](_0x218abd,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb['rescheduleContact'](ut[_0xc63e('0xc2')](_0x218abd,'countbusyretry',_0x5a4f0a['dialBusyRetryFrequency']),_0x218abd[_0xc63e('0xc3')],_0x218abd[_0xc63e('0xab')]);}}break;case _0xc63e('0xc4'):_0x5a4f0a[_0xc63e('0x3b')]+=0x1;_0x218abd[_0xc63e('0xc5')]+=0x1;_0x218abd[_0xc63e('0x9d')]=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0x3,_0xc63e('0xc6'));ami[_0xc63e('0x25')]('custom:agentnoanswer',ut['buildObj'](_0x218abd,_0xc63e('0xc7')));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xc8'));if(ut['totalGlobal'](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut['cloneAction'](_0x218abd,0xf,_0xc63e('0xa5'));rpcDb[_0xc63e('0xa6')](_0x782a80,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x218abd[_0xc63e('0xc5')]>=_0x5a4f0a[_0xc63e('0xc9')]){rpcDb[_0xc63e('0xa6')](_0x218abd,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb[_0xc63e('0xa9')](ut[_0xc63e('0xc2')](_0x218abd,_0xc63e('0xc5'),_0x5a4f0a[_0xc63e('0xca')]),_0x218abd[_0xc63e('0xc3')],_0x218abd[_0xc63e('0xab')]);}}break;case _0xc63e('0xcb'):_0x5a4f0a[_0xc63e('0x38')]+=0x1;_0x218abd['countcongestionretry']+=0x1;_0x218abd[_0xc63e('0x9d')]=ut['totalGlobal'](_0x218abd);ut['logCustomer'](_0x218abd,0x8,'Congestion');ami[_0xc63e('0x25')](_0xc63e('0xcc'),ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xcd')));rpcDb[_0xc63e('0x95')](_0x218abd,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a['dialGlobalMaxRetry']){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0xf,'Global');rpcDb[_0xc63e('0xa6')](_0x782a80,_0xc63e('0xce'));}else{if(_0x218abd[_0xc63e('0xcf')]>=_0x5a4f0a[_0xc63e('0xd0')]){rpcDb['createCustomerFinal'](_0x218abd,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0xc63e('0xa9')](ut[_0xc63e('0xc2')](_0x218abd,_0xc63e('0xcf'),_0x5a4f0a[_0xc63e('0xd1')]),_0x218abd['unlockAgent'],_0x218abd[_0xc63e('0xab')]);}}break;case _0xc63e('0xd2'):_0x5a4f0a[_0xc63e('0x3f')]+=0x1;_0x218abd[_0xc63e('0xd3')]+=0x1;_0x218abd['countglobal']=ut[_0xc63e('0x9e')](_0x218abd);ut['logCustomer'](_0x218abd,0x14,_0xc63e('0xd4'));ami[_0xc63e('0x25')](_0xc63e('0xd5'),ut['buildObj'](_0x218abd,_0xc63e('0xd6')));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xd7'));if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0x14,_0xc63e('0xd4'));rpcDb['createCustomerFinal'](_0x782a80,_0xc63e('0xd8'));}else{if(_0x218abd[_0xc63e('0xd3')]>=_0x5a4f0a[_0xc63e('0xd9')]){rpcDb[_0xc63e('0xa6')](_0x218abd,_0xc63e('0xd8'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x218abd,_0xc63e('0xd3'),_0x5a4f0a[_0xc63e('0xda')]),_0x218abd[_0xc63e('0xc3')],_0x218abd['activeContact']);}}break;case _0xc63e('0xdb'):_0x5a4f0a[_0xc63e('0x41')]+=0x1;_0x218abd['countabandonedretry']+=0x1;_0x218abd['countglobal']=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0xb,_0xc63e('0xdc'));rpcDb['createCustomerHistory'](_0x218abd,'[callProgressDetectingCustomer][logAbandoned]');if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a['dialGlobalMaxRetry']){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0xf,'Global');rpcDb[_0xc63e('0xa6')](_0x782a80,_0xc63e('0xdd'));}else{if(_0x218abd[_0xc63e('0xde')]>=_0x5a4f0a['dialAbandonedMaxRety']){rpcDb['createCustomerFinal'](_0x218abd,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0xc63e('0xa9')](ut['scheduledAt'](_0x218abd,_0xc63e('0xdf'),_0x5a4f0a[_0xc63e('0xe0')]),_0x218abd[_0xc63e('0xc3')],_0x218abd['activeContact']);}}break;case'18':_0x5a4f0a[_0xc63e('0x40')]+=0x1;_0x218abd[_0xc63e('0xe1')]+=0x1;_0x218abd['countglobal']=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0x12,_0x31b91a[_0xc63e('0xe2')]||_0x31b91a[_0xc63e('0xe3')]);ami[_0xc63e('0x25')](_0xc63e('0xe4'),ut[_0xc63e('0xa0')](_0x218abd,_0xc63e('0xe5')));rpcDb[_0xc63e('0x95')](_0x218abd,_0xc63e('0xe6'));if(ut['totalGlobal'](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0xf,_0xc63e('0xa5'));rpcDb['createCustomerFinal'](_0x782a80,_0xc63e('0xe6'));}else{rpcDb['createCustomerFinal'](_0x218abd,_0xc63e('0xe6'));}delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];break;case'19':_0x5a4f0a[_0xc63e('0x40')]+=0x1;_0x218abd[_0xc63e('0x9d')]=ut[_0xc63e('0x9e')](_0x218abd);ut[_0xc63e('0x90')](_0x218abd,0x13,_0x31b91a['cause-txt']||_0x31b91a['dialstatus']);ami[_0xc63e('0x25')](_0xc63e('0xe4'),ut[_0xc63e('0xa0')](_0x218abd,'amd'));rpcDb[_0xc63e('0x95')](_0x218abd,'[callProgressDetectingCustomer][machine]');if(ut[_0xc63e('0x9e')](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut[_0xc63e('0xa4')](_0x218abd,0xf,_0xc63e('0xa5'));rpcDb['createCustomerFinal'](_0x782a80,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0xc63e('0xa6')](_0x218abd,_0xc63e('0xe7'));}delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];break;default:if(_0x218abd[_0xc63e('0x70')]){ut['decrementTalkink'](_0x5a4f0a,_0xc63e('0xe8'));ut[_0xc63e('0x7e')](_0xc63e('0xe9')+_0x5a4f0a['name'],_0x31b91a);}_0x5a4f0a[_0xc63e('0x40')]+=0x1;_0x218abd[_0xc63e('0x9d')]=ut[_0xc63e('0x9e')](_0x218abd);ut['logCustomer'](_0x218abd,0xc,_0x31b91a[_0xc63e('0xe2')]||_0x31b91a[_0xc63e('0xe3')]);rpcDb[_0xc63e('0x95')](_0x218abd,'[callProgressDetectingCustomer][logUnknown]');if(ut['totalGlobal'](_0x218abd)>=_0x5a4f0a[_0xc63e('0xa3')]){_0x782a80=ut['cloneAction'](_0x218abd,0xf,_0xc63e('0xa5'));rpcDb[_0xc63e('0xa6')](_0x782a80,_0xc63e('0xea'));}else{rpcDb[_0xc63e('0xa6')](_0x218abd,_0xc63e('0xea'));}delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];}if(!(_0x218abd[_0xc63e('0x70')]&&_0x401956==='16')){ut[_0xc63e('0x7b')](_0x5a4f0a,_0xc63e('0xeb'));logger[_0xc63e('0x59')](_0xc63e('0xec'),_0x218abd[_0xc63e('0xed')],_0xc63e('0xb1'),_0x5a4f0a[_0xc63e('0x28')],_0xc63e('0x6e'),_0x5a4f0a[_0xc63e('0xee')]);}if(_0x401956!=='ANSWER'){delete this[_0xc63e('0x14')][_0x31b91a[_0xc63e('0xac')]];delete this['actions'][_0x31b91a[_0xc63e('0xef')]];}}};Preview[_0xc63e('0xc')]['callProgressDetectingAgent']=function(_0x1b5964,_0x2275f,_0x4e8906){if(_[_0xc63e('0xf0')](_0x2275f)&&_0xc63e('0xf1')!==typeof _0x2275f){return;}if(_['isUndefined'](_0x4e8906)&&_0xc63e('0xf1')!==typeof _0x4e8906){return;}switch(_0x4e8906[_0xc63e('0xf2')]){case'0':ut['logAgent'](_0x1b5964,0x0,_0xc63e('0xf3'));rpcDb[_0xc63e('0xf4')](_0x1b5964,_0xc63e('0xf5'));break;case'3':ut[_0xc63e('0xf6')](_0x1b5964,0x3,_0xc63e('0xc6'));rpcDb[_0xc63e('0xf4')](_0x1b5964,_0xc63e('0xf7'));break;case'5':ut[_0xc63e('0xf6')](_0x1b5964,0x5,_0xc63e('0xf8'));rpcDb[_0xc63e('0xf4')](_0x1b5964,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0xc63e('0xf6')](_0x1b5964,0x8,_0xc63e('0xf9'));rpcDb[_0xc63e('0xf4')](_0x1b5964,_0xc63e('0xfa'));break;case'22':ut[_0xc63e('0xf6')](_0x1b5964,0x16,_0xc63e('0xfb'));rpcDb[_0xc63e('0xf4')](_0x1b5964,_0xc63e('0xfc'));break;default:ut[_0xc63e('0xf6')](_0x1b5964,0xc,_0x4e8906[_0xc63e('0xf2')]);rpcDb['createAgentHistory'](_0x1b5964,_0xc63e('0xfa'));}ut['updateOriginated'](_0x2275f,_0xc63e('0xfd'));logger[_0xc63e('0x59')](_0xc63e('0xfe'),_0x1b5964[_0xc63e('0xed')],_0xc63e('0xb1'),_0x2275f[_0xc63e('0x28')],_0xc63e('0x6e'),_0x2275f[_0xc63e('0xee')]);delete this[_0xc63e('0x14')][_0x1b5964[_0xc63e('0xed')]];};Preview['prototype'][_0xc63e('0xff')]=function(_0x46c4b9,_0x1bf6be,_0x339228,_0x4cbd94,_0x277cd2){var _0x47138a=this;return new BPromise(function(_0x45ebab,_0x327d82){if(_[_0xc63e('0x6b')](_0x1bf6be)||_[_0xc63e('0x6b')](_0x1bf6be[_0xc63e('0x100')])||_[_0xc63e('0x6b')](_0x1bf6be['Contact'][_0xc63e('0x101')])||_[_0xc63e('0x6b')](_0x1bf6be['VoiceQueueId'])){_0x327d82(ut[_0xc63e('0x4c')]('Contact\x20is\x20undefined',_0x4cbd94,_0x277cd2));return;}var _0x2dd08a=uuid['v4']();var _0x51d4fd=_0x47138a[_0xc63e('0x11')][_0x1bf6be[_0xc63e('0x102')][_0xc63e('0x28')]];var _0x5cdca5=_0x339228?_0x47138a[_0xc63e('0x15')][_0x339228]['id']:undefined;_0x47138a[_0xc63e('0x14')][_0x2dd08a]=new Action(_0x1bf6be,_0x51d4fd,_0x2dd08a,_0x339228,_0x5cdca5);var _0xc9be5e=_0x47138a['actions'][_0x2dd08a];_0xc9be5e[_0xc63e('0xc3')]=_0x4cbd94;_0xc9be5e[_0xc63e('0xab')]=_0x277cd2;_0xc9be5e[_0xc63e('0x103')]=_0x339228;if(_['isEmpty'](_0x46c4b9)){_0x47138a[_0xc63e('0x104')](_0xc9be5e,_0x51d4fd,_0x1bf6be,_0x339228)['then'](function(_0x4f0d41){logger[_0xc63e('0x59')](_0xc63e('0x105'),_0xc63e('0x106')+_0xc9be5e[_0xc63e('0x6d')]+_0xc63e('0x107')+_0xc9be5e[_0xc63e('0x108')],JSON[_0xc63e('0x54')](_0x4f0d41));ami[_0xc63e('0x25')](_0xc63e('0x109'),ut[_0xc63e('0xa0')](_0xc9be5e,_0xc63e('0x10a'),_0x47138a[_0xc63e('0x11')][_0xc9be5e[_0xc63e('0x6d')]]));_0x45ebab(ut['message']('Calling'));})['catch'](function(_0xfeb72f){ut['logger']('[Preview][execCall][failure]',_0xfeb72f);_0x327d82(ut['message'](_0xc63e('0x10b'),_0x4cbd94,_0x277cd2));});}else{_0x51d4fd[_0xc63e('0x36')]+=0x1;ut['logBlacklist'](_0xc9be5e);rpcDb[_0xc63e('0x10c')](_0xc9be5e,_0xc63e('0x10d'));delete _0x47138a[_0xc63e('0x14')][_0x2dd08a];_0x327d82(ut[_0xc63e('0x4c')]('Contact\x20in\x20black\x20List',_0x4cbd94,_0x277cd2));}});};Preview[_0xc63e('0xc')][_0xc63e('0x9a')]=function(_0xccad31){return!_[_0xc63e('0x6b')](_0xccad31)&&!_['isNil'](_0xccad31[_0xc63e('0x28')])&&!_[_0xc63e('0x6b')](_0xccad31[_0xc63e('0x10e')])&&_0xccad31[_0xc63e('0x10e')]&&!_[_0xc63e('0x6b')](this[_0xc63e('0x13')][util[_0xc63e('0x56')](_0xc63e('0x10f'),_0xccad31[_0xc63e('0x28')])])&&!_['isNil'](this[_0xc63e('0x13')][util[_0xc63e('0x56')](_0xc63e('0x10f'),_0xccad31[_0xc63e('0x28')])]['status'])&&(this[_0xc63e('0x13')][util['format'](_0xc63e('0x10f'),_0xccad31[_0xc63e('0x28')])][_0xc63e('0x77')]===_0xc63e('0x110')||this[_0xc63e('0x13')][util[_0xc63e('0x56')](_0xc63e('0x10f'),_0xccad31['name'])][_0xc63e('0x77')]===_0xc63e('0x111'));};Preview['prototype'][_0xc63e('0x8a')]=function(_0x37071d,_0xc97c53){var _0xa55878=this;return new BPromise(function(_0x9f607c,_0xfe418a){_0xa55878[_0xc63e('0x112')](_0x37071d,_0xc97c53)[_0xc63e('0x84')](function(_0xf359d9){_0x9f607c(_[_0xc63e('0x71')](_0xf359d9,[_0xc63e('0x4c')]));})['catch'](function(_0x4702ca){if(_0x4702ca[_0xc63e('0x113')]){rpcDb[_0xc63e('0x114')](_0x37071d);}if(_0x4702ca[_0xc63e('0x10e')]){rpcDb[_0xc63e('0x8d')](_0x37071d);}_0xfe418a(_[_0xc63e('0x71')](_0x4702ca,[_0xc63e('0x4c')]));});});};Preview[_0xc63e('0xc')][_0xc63e('0x112')]=function(_0x54083c,_0x354bea){var _0x14feec=this;return new BPromise(function(_0xac5512,_0x50bf45){var _0x4b1841,_0x3a0187;rpcDb['getContactPreview'](_0x54083c)['then'](function(_0x13c99f){if(!_[_0xc63e('0x6b')](_0x13c99f[0x0])){_0x3a0187=_0x13c99f[0x0]['recallme']?![]:!![];_0x4b1841=_0x13c99f[0x0][_0xc63e('0x115')]?!![]:![];_0x4b1841=_0x354bea?!![]:_0x4b1841;}var _0xe5f886=_0x14feec[_0xc63e('0x116')](_0x13c99f);if(_0xe5f886[_0xc63e('0x117')]){rpcDb['checkIsBlackList'](_[_0xc63e('0x71')](_0x13c99f[0x0],[_0xc63e('0x74'),_0xc63e('0x118')]))[_0xc63e('0x84')](function(_0x53e17e){_0x14feec['checkInBlack'](_0x53e17e,_0x13c99f[0x0],_0x354bea,_0x3a0187,_0x4b1841)[_0xc63e('0x84')](function(_0x592c29){_0xac5512(_0x592c29);})[_0xc63e('0x79')](function(_0x1a20f3){_0x50bf45(_0x1a20f3);});})[_0xc63e('0x79')](function(_0x969785){ut[_0xc63e('0x61')](_0xc63e('0x119'),_0x969785);_0x50bf45(ut['message']('Call\x20unsuccessful',_0x3a0187,_0x4b1841));});}else{_0x50bf45(ut['message'](_0xe5f886[_0xc63e('0x4c')],_0x3a0187,_0x4b1841));}})[_0xc63e('0x79')](function(_0x1ca4b5){ut[_0xc63e('0x61')](_0xc63e('0x11a'),_0x1ca4b5);_0x50bf45(ut['message']('Call\x20unsuccessful',![],!![]));});});};Preview[_0xc63e('0xc')][_0xc63e('0x116')]=function(_0x5799b2){if(_[_0xc63e('0x6b')](_0x5799b2)||_[_0xc63e('0x11b')](_0x5799b2)||!_[_0xc63e('0x6b')](_0x5799b2[0x0][_0xc63e('0x88')])&&_[_0xc63e('0x6b')](_0x5799b2[0x0][_0xc63e('0x88')][_0xc63e('0x28')])){ut[_0xc63e('0x61')](_0xc63e('0x11c'),_0x5799b2);return{'isValid':![],'message':_0xc63e('0x11d')};}var _0x6cdcc2=this[_0xc63e('0x11')][_0x5799b2[0x0][_0xc63e('0x102')][_0xc63e('0x28')]];_0x6cdcc2['message']=_0xc63e('0x11e');if(_[_0xc63e('0x6b')](_0x6cdcc2)){ut['logger'](_0xc63e('0x11f'),_0x6cdcc2);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this['isTrunkReachable'](_0x6cdcc2[_0xc63e('0x51')])){ut[_0xc63e('0x61')](_0xc63e('0x120'),_0xc63e('0x121')+_0x6cdcc2[_0xc63e('0x28')]+_0xc63e('0x122'));if(!this[_0xc63e('0x9a')](_0x6cdcc2[_0xc63e('0x123')])){ut[_0xc63e('0x61')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x6cdcc2[_0xc63e('0x28')]+_0xc63e('0x124'));return{'isValid':![],'message':_0xc63e('0x125')};}}if(!ut[_0xc63e('0x99')](_0x6cdcc2[_0xc63e('0x31')])){ut['logger'](_0xc63e('0x126'),_0x6cdcc2[_0xc63e('0x28')]+'\x20Not\x20Active');return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x6cdcc2['name']+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0xc63e('0x127')};};Preview[_0xc63e('0xc')]['execCall']=function(_0x514b3c,_0x48b1aa,_0x58c8c8,_0x58b92d){var _0x5bb2a5=this;return new BPromise(function(_0x5eb59b,_0x42e035){var _0x222a25=_0x514b3c[_0xc63e('0xed')];var _0x2d965b=_0x5bb2a5['isTrunkReachable'](_0x48b1aa[_0xc63e('0x51')])?util[_0xc63e('0x56')]('SIP/%s/%s%s',_0x48b1aa[_0xc63e('0x51')][_0xc63e('0x28')],_['isNil'](_0x48b1aa[_0xc63e('0x34')])?'':_0x48b1aa['dialPrefix'][_0xc63e('0x128')]()||'',_0x48b1aa[_0xc63e('0x129')]>0x0?_0x58c8c8[_0xc63e('0x100')][_0xc63e('0x101')]['substring'](_0x48b1aa[_0xc63e('0x129')]):_0x58c8c8['Contact']['phone']):util['format'](_0xc63e('0x12a'),_['isNil'](_0x48b1aa[_0xc63e('0x123')])?_0x48b1aa[_0xc63e('0x51')][_0xc63e('0x28')]:_0x48b1aa[_0xc63e('0x123')][_0xc63e('0x28')],_[_0xc63e('0x6b')](_0x48b1aa[_0xc63e('0x34')])?'':_0x48b1aa['dialPrefix'][_0xc63e('0x128')]()||'',_0x48b1aa[_0xc63e('0x129')]>0x0?_0x58c8c8[_0xc63e('0x100')][_0xc63e('0x101')][_0xc63e('0x12b')](_0x48b1aa['dialCutDigit']):_0x58c8c8[_0xc63e('0x100')]['phone']);var _0x4be25d=_0x5bb2a5[_0xc63e('0x9a')](_0x48b1aa['Trunk'])?ut[_0xc63e('0x12c')](_0x48b1aa['Trunk'][_0xc63e('0x52')],_0x48b1aa[_0xc63e('0x12d')],_0x48b1aa[_0xc63e('0x12e')]>0x0?ut['getCallerIdRandom'](_0x48b1aa[_0xc63e('0x32')],_0x48b1aa[_0xc63e('0x12e')]):_0x48b1aa[_0xc63e('0x32')]):ut['getCallerId'](_[_0xc63e('0x6b')](_0x48b1aa[_0xc63e('0x123')])?_0x48b1aa[_0xc63e('0x51')][_0xc63e('0x52')]:_0x48b1aa[_0xc63e('0x123')][_0xc63e('0x52')],_0x48b1aa[_0xc63e('0x12d')],_0x48b1aa['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0xc63e('0x12f')](_0x48b1aa['dialOriginateCallerIdNumber'],_0x48b1aa[_0xc63e('0x12e')]):_0x48b1aa[_0xc63e('0x32')]);if(_0x4be25d){_0x514b3c[_0xc63e('0x130')]=ut[_0xc63e('0x131')](_0x4be25d);_0x514b3c['originatecalleridnum']=ut[_0xc63e('0x132')](_0x4be25d);}var _0x116c82=ut[_0xc63e('0x133')](_0x48b1aa,_0x58c8c8,_0x2d965b,_0x4be25d,_0x222a25,_0x514b3c);_[_0xc63e('0x134')](_0x514b3c,ut[_0xc63e('0x135')](_0x116c82));_0x514b3c['starttime']=moment()[_0xc63e('0x56')](_0xc63e('0x8f'));ami[_0xc63e('0x76')](ut[_0xc63e('0x136')](_0x514b3c,_0x48b1aa,_0x116c82,_0x514b3c[_0xc63e('0xab')],_0x58b92d))[_0xc63e('0x84')](function(_0x3647b7){var _0x5e2297=_0x514b3c[_0xc63e('0x137')];if(!_[_0xc63e('0x6b')](_0x5e2297)){if(!_[_0xc63e('0x6b')](_0x5bb2a5[_0xc63e('0x15')][_0x5e2297])){_0x5bb2a5[_0xc63e('0x15')][_0x5e2297]['destconnectedlinenum']=_0x514b3c[_0xc63e('0x138')];emit(util['format'](_0xc63e('0x139'),_0x5bb2a5['agents'][_0x5e2297][_0xc63e('0x28')]),'user:agentconnect',{'destaccountcode':_0x5bb2a5[_0xc63e('0x15')][_0x5e2297][_0xc63e('0x13a')],'destconnectedlinenum':_0x514b3c[_0xc63e('0x138')]});}}_0x48b1aa[_0xc63e('0xee')]+=0x1;logger[_0xc63e('0x59')](_0xc63e('0x13b'),_0x222a25,_0xc63e('0xb1'),_0x48b1aa['name'],_0xc63e('0x6e'),_0x48b1aa[_0xc63e('0xee')]);_0x5eb59b(_0x3647b7);})[_0xc63e('0x79')](function(_0x519e96){ut[_0xc63e('0xf6')](_0x514b3c,0xe,_0xc63e('0x13c'));rpcDb[_0xc63e('0xf4')](_0x514b3c,_0xc63e('0x13d'));_0x42e035(_0x519e96);});});};Preview[_0xc63e('0xc')][_0xc63e('0x1f')]=function(_0x5722ef){if(this[_0xc63e('0x14')][_0x5722ef[_0xc63e('0xac')]]){this[_0xc63e('0x14')][_0x5722ef[_0xc63e('0xac')]][_0xc63e('0x78')]=_0x5722ef[_0xc63e('0x78')];}};Preview[_0xc63e('0xc')][_0xc63e('0x13e')]=function(_0x1c6176){var _0x4e398c=this;var _0x14385b=this['actions'][_0x1c6176['actionid']];if(_0x14385b){if(_0x14385b[_0xc63e('0x103')]&&this['agents'][_0x14385b['lookAgent']]){ut[_0xc63e('0x13f')](_0x14385b,this[_0xc63e('0x15')][_0x14385b[_0xc63e('0x103')]][_0xc63e('0x28')],this['agents'][_0x14385b[_0xc63e('0x103')]]['id']);}var _0x42a8d8=_['clone'](_0x14385b);_0x42a8d8[_0xc63e('0xae')]=moment()[_0xc63e('0x56')](_0xc63e('0x8f'));var _0x49d00c=_0x4e398c['campaignsPreview'][_0x14385b[_0xc63e('0x6d')]];if(ut[_0xc63e('0x140')](_0x1c6176[_0xc63e('0x141')])){if(_0x14385b[_0xc63e('0xc3')]){rpcDb[_0xc63e('0x114')](_0x14385b[_0xc63e('0x108')]);}if(_0x14385b[_0xc63e('0xab')]){rpcDb[_0xc63e('0x8d')](_0x14385b[_0xc63e('0x108')]);}ami[_0xc63e('0x25')]('custom:agentringnoanswer',ut['buildObj'](_0x14385b,'rejected',this[_0xc63e('0x11')][_0x14385b['queue']]));this[_0xc63e('0x142')](_0x42a8d8,_0x49d00c,_0x1c6176);}else{_0x14385b[_0xc63e('0x8e')]=moment()[_0xc63e('0x56')](_0xc63e('0x8f'));ut[_0xc63e('0xf6')](_0x42a8d8,0x4,_0xc63e('0xb9'));rpcDb[_0xc63e('0xf4')](_0x42a8d8,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0xc63e('0xc')][_0xc63e('0x19')]=function(_0x5ec251){var _0x3c0c60=this;var _0x17e8e5=this['actions'][_0x5ec251[_0xc63e('0xac')]];var _0x27f1e4;if(_0x17e8e5){_0x27f1e4=this[_0xc63e('0x11')][_0x17e8e5[_0xc63e('0x6d')]];logger[_0xc63e('0x59')]('[syncHangup][talking]',_0x5ec251[_0xc63e('0xac')],_0xc63e('0xb1'),_0x27f1e4['name'],'pTalking:\x20',_0x27f1e4['pTalking']);}if(this[_0xc63e('0x14')][_0x5ec251[_0xc63e('0xac')]]&&_0x5ec251[_0xc63e('0xac')]!==_0x5ec251[_0xc63e('0xed')]){if(_0x5ec251[_0xc63e('0x143')]==='16'&&this[_0xc63e('0x14')][_0x5ec251[_0xc63e('0xac')]][_0xc63e('0x70')]){this['callProgressDetectingCustomer'](_0x5ec251,_0x5ec251['linkedid'],_0x5ec251[_0xc63e('0x143')]);}else if(this[_0xc63e('0x14')][_0x5ec251['linkedid']][_0xc63e('0x70')]){logger[_0xc63e('0x59')](_0xc63e('0x144'),_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')],_0xc63e('0xb1'),_0x27f1e4['name'],_0xc63e('0x6f'),_0x27f1e4[_0xc63e('0x5e')]);this[_0xc63e('0x9c')](_0x5ec251,_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')]);}}else if(_0x17e8e5&&_[_0xc63e('0x6b')](_0x17e8e5[_0xc63e('0x145')])&&_0x27f1e4[_0xc63e('0x146')]&&_0x5ec251[_0xc63e('0xac')]===_0x5ec251[_0xc63e('0xed')]&&_[_0xc63e('0x6b')](_0x5ec251['reason'])&&_0x5ec251[_0xc63e('0x143')]==='16'&&_0x5ec251[_0xc63e('0x147')]==='6'&&_[_0xc63e('0xf0')](_0x17e8e5[_0xc63e('0x148')])){if(_0x17e8e5[_0xc63e('0xc3')]){rpcDb[_0xc63e('0x114')](_0x17e8e5[_0xc63e('0x108')]);}if(_0x17e8e5[_0xc63e('0xab')]){rpcDb[_0xc63e('0x8d')](_0x17e8e5['idContact']);}_0x5ec251[_0xc63e('0xf2')]='22';this[_0xc63e('0x142')](_0x17e8e5,_0x27f1e4,_0x5ec251);}else if(_0x17e8e5&&_0x17e8e5[_0xc63e('0x148')]){if(_0x5ec251[_0xc63e('0x143')]==='16'&&this[_0xc63e('0x14')][_0x5ec251[_0xc63e('0xac')]][_0xc63e('0x70')]){logger[_0xc63e('0x59')](_0xc63e('0x149'),_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')],_0xc63e('0xb1'),_0x27f1e4[_0xc63e('0x28')],_0xc63e('0x6f'),_0x27f1e4[_0xc63e('0x5e')]);this[_0xc63e('0x9c')](_0x5ec251,_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')]);}else if(this[_0xc63e('0x14')][_0x5ec251[_0xc63e('0xac')]][_0xc63e('0x70')]){logger[_0xc63e('0x59')]('[syncHangup][talking][cause]',_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')],'\x20Queue',_0x27f1e4['name'],'pTalking:\x20',_0x27f1e4['pTalking']);this[_0xc63e('0x9c')](_0x5ec251,_0x5ec251[_0xc63e('0xac')],_0x5ec251[_0xc63e('0x143')]);}}};Preview[_0xc63e('0xc')][_0xc63e('0x1d')]=function(_0x194b49){if(this[_0xc63e('0x14')][_0x194b49[_0xc63e('0xef')]]&&_0x194b49[_0xc63e('0xef')]!==_0x194b49[_0xc63e('0x14a')]){this[_0xc63e('0x9c')](_0x194b49,_0x194b49[_0xc63e('0xef')],_0x194b49[_0xc63e('0xe3')]);}};Preview[_0xc63e('0xc')][_0xc63e('0x1b')]=function(_0x53d8b4){if(this[_0xc63e('0x14')][_0x53d8b4[_0xc63e('0xac')]]&&_0x53d8b4['linkedid']!==_0x53d8b4[_0xc63e('0xed')]&&!this[_0xc63e('0x14')][_0x53d8b4[_0xc63e('0xac')]][_0xc63e('0x70')]){if(_0x53d8b4[_0xc63e('0x143')]==='1'){this[_0xc63e('0x9c')](_0x53d8b4,_0x53d8b4[_0xc63e('0xac')],_0x53d8b4[_0xc63e('0x143')]);}}};Preview['prototype']['addVariable']=function(_0x26aa35,_0x200d6e,_0x246730){if(this[_0xc63e('0x14')][_0x26aa35]){if(_[_0xc63e('0x6b')](this['actions'][_0x26aa35][_0xc63e('0x14b')])){this[_0xc63e('0x14')][_0x26aa35][_0xc63e('0x14b')]={};}this['actions'][_0x26aa35][_0xc63e('0x14b')][_0x200d6e]=_0x246730;}};Preview[_0xc63e('0xc')][_0xc63e('0x14c')]=function(_0x4a022f){try{if(!_[_0xc63e('0x6b')](_0x4a022f)){if(ut[_0xc63e('0x14d')](_['keys'](_0x4a022f[_0xc63e('0x14e')])[0x0])){this[_0xc63e('0x14f')](_0x4a022f[_0xc63e('0xed')],_[_0xc63e('0x150')](_0x4a022f[_0xc63e('0x14e')])[0x0],_0x4a022f[_0xc63e('0x151')]);}}}catch(_0x1b22ae){logger[_0xc63e('0x152')]('[syncVarSet][Preview]',util[_0xc63e('0x153')](_0x1b22ae,{'showHidden':![],'depth':null}));}};Preview['prototype'][_0xc63e('0x22')]=function(_0x4d0def){if(_0x4d0def){if(this[_0xc63e('0x14')][_0x4d0def[_0xc63e('0x154')]]){this['actions'][_0x4d0def[_0xc63e('0x154')]][_0xc63e('0x148')]=!![];}}};Preview[_0xc63e('0xc')][_0xc63e('0x155')]=function(_0x195531){if(_0x195531){if(this[_0xc63e('0x14')][_0x195531[_0xc63e('0x156')]]){this[_0xc63e('0x14')][_0x195531[_0xc63e('0x156')]][_0xc63e('0x148')]=!![];}}};module[_0xc63e('0x157')]=Preview;
\ No newline at end of file
index cd71793..5095fc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cf2=['calleridname','queue','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','membername','context','from-sip','holdtime','lastAssignedTo','getContactRecallMe','[GetContactRecallMe]\x20','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','then','createHistory','catch','[createHistory]\x20','resolve','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','[rescheduleContact]\x20','countReScheduled','unlockContact','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum'];(function(_0x530e38,_0x5f1d0f){var _0x4b6a58=function(_0xea6fde){while(--_0xea6fde){_0x530e38['push'](_0x530e38['shift']());}};_0x4b6a58(++_0x5f1d0f);}(_0x8cf2,0x6f));var _0x28cf=function(_0x25c812,_0x488d86){_0x25c812=_0x25c812-0x0;var _0x19912c=_0x8cf2[_0x25c812];return _0x19912c;};'use strict';var util=require(_0x28cf('0x0'));var BPromise=require(_0x28cf('0x1'));var logger=require(_0x28cf('0x2'))('preview');var _=require(_0x28cf('0x3'));var cmHopper=require(_0x28cf('0x4'));var cmHopperFinal=require(_0x28cf('0x5'));var cmHopperHistory=require(_0x28cf('0x6'));var cmHopperBlack=require(_0x28cf('0x7'));var voiceQueueRt=require(_0x28cf('0x8'));var agentReportPreview=require(_0x28cf('0x9'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x4d6a36){return function(_0x7d2d4a){logger['error'](_0x4d6a36,util['inspect'](_0x7d2d4a,{'showHidden':![],'depth':null}));};}function create(_0x1dfba2){return BPromise['resolve']()[_0x28cf('0xa')](cmHopperHistory[_0x28cf('0xb')](_0x1dfba2))[_0x28cf('0xc')](loggerCatch(_0x28cf('0xd')));}function createAgent(_0x66f6bc){return BPromise[_0x28cf('0xe')]()[_0x28cf('0xa')](agentReportPreview[_0x28cf('0xb')](_0x66f6bc))[_0x28cf('0xc')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x853456){return BPromise[_0x28cf('0xe')]()[_0x28cf('0xa')](cmHopper['moveContactManagedDialer'](_0x853456,!![]))[_0x28cf('0xc')](loggerCatch(_0x28cf('0xf')));}exports[_0x28cf('0x10')]=function(_0x214ed1){return BPromise['resolve']()['then'](cmHopperBlack[_0x28cf('0x10')](_0x214ed1))[_0x28cf('0xc')](loggerCatch(_0x28cf('0x11')));};exports[_0x28cf('0x12')]=function(_0x118713){return BPromise['resolve']()[_0x28cf('0xa')](cmHopper['getContactPreview'](_0x118713))[_0x28cf('0xc')](loggerCatch(_0x28cf('0x13')));};exports[_0x28cf('0xb')]=function(_0x11fb4c,_0x11af8d){create(_0x11fb4c)[_0x28cf('0xc')](loggerCatch(_0x11af8d));moveContact(_0x11fb4c)[_0x28cf('0xc')](loggerCatch(_0x11af8d));};exports['createAgentHistory']=function(_0x3e3278,_0x7703dd){createAgent(_0x3e3278)[_0x28cf('0xc')](loggerCatch(_0x7703dd));};exports[_0x28cf('0x14')]=function(_0x33f865,_0x5a097f){create(_0x33f865)[_0x28cf('0xc')](loggerCatch(_0x5a097f));};exports[_0x28cf('0x15')]=function(_0x384dc1,_0x5426a1){moveContact(_0x384dc1)[_0x28cf('0xc')](loggerCatch(_0x5426a1));};exports[_0x28cf('0x16')]=function(_0x5c97d3,_0x3768e4,_0x45f90c){if(_0x3768e4){_0x5c97d3[_0x28cf('0x17')]=null;}if(_0x45f90c){_0x5c97d3['active']=![];}return BPromise[_0x28cf('0xe')]()[_0x28cf('0xa')](cmHopper[_0x28cf('0x16')](_0x5c97d3))[_0x28cf('0xc')](loggerCatch(_0x28cf('0x18')));};exports[_0x28cf('0x19')]=function(_0x245889){return BPromise[_0x28cf('0xe')]()[_0x28cf('0xa')](cmHopper[_0x28cf('0x19')](_0x245889))[_0x28cf('0xc')](loggerCatch('[countReScheduled]\x20'));};exports[_0x28cf('0x1a')]=function(_0x2bd60c){return BPromise[_0x28cf('0xe')]()[_0x28cf('0xa')](cmHopper[_0x28cf('0x1a')]({'UserId':null},_0x2bd60c,0x1))[_0x28cf('0xc')](loggerCatch('[unlockContact]\x20'));};exports[_0x28cf('0x1b')]=function(_0x5f10cd){return BPromise[_0x28cf('0xe')]()[_0x28cf('0xa')](cmHopper[_0x28cf('0x1a')]({'active':![]},_0x5f10cd,0x1))['catch'](loggerCatch(_0x28cf('0x1c')));};exports[_0x28cf('0x1d')]=function(_0x192bcd){var _0xa772fc={};_0xa772fc[_0x28cf('0x1e')]=_0x192bcd[_0x28cf('0x1e')];_0xa772fc[_0x28cf('0x1f')]=_0x192bcd[_0x28cf('0x1f')];_0xa772fc[_0x28cf('0x20')]=_0x192bcd[_0x28cf('0x20')];_0xa772fc[_0x28cf('0x21')]=_0x192bcd[_0x28cf('0x21')];_0xa772fc[_0x28cf('0x22')]=_0x192bcd[_0x28cf('0x22')];_0xa772fc['queuecallerjoinAt']=_0x192bcd[_0x28cf('0x23')];_0xa772fc[_0x28cf('0x24')]=_0x192bcd[_0x28cf('0x23')];_0xa772fc[_0x28cf('0x25')]=0x1;_0xa772fc[_0x28cf('0x26')]=_0x192bcd[_0x28cf('0x27')];_0xa772fc['connectedlinename']=_0x192bcd[_0x28cf('0x28')];_0xa772fc[_0x28cf('0x29')]=_0x28cf('0x2a');_0xa772fc['exten']='xcally-motion-preview';_0xa772fc[_0x28cf('0x2b')]=0x0;_0xa772fc['assigned']=0x1;_0xa772fc[_0x28cf('0x2c')]=_0x192bcd['membername'];_0xa772fc['queuecallerexitreason']='COMPLETED';return BPromise[_0x28cf('0xe')]()['then'](voiceQueueReport['create'](_0xa772fc))[_0x28cf('0xc')](loggerCatch('[voiceQueueReport]\x20'));};exports['getContactRecallMe']=function(_0x1e9702,_0xfbe29){return BPromise[_0x28cf('0xe')]()[_0x28cf('0xa')](cmHopper[_0x28cf('0x2d')](_0x1e9702,_0xfbe29))[_0x28cf('0xc')](loggerCatch(_0x28cf('0x2e')));};exports['rescheduleContactInQueue']=function(_0x1f2bf6){return BPromise['resolve']()[_0x28cf('0xa')](cmHopper[_0x28cf('0x16')](_0x1f2bf6,!![],!![]))['catch'](loggerCatch(_0x28cf('0x2f')));};
\ No newline at end of file
+var _0xfaa9=['[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercompleteAt','connectedlinename','membername','context','exten','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[rescheduleContactInQueue]\x20','util','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/agentReportPreview','inspect','then','createHistory','catch','resolve','[createHistory]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xfaa9,0x1c9));var _0x9faa=function(_0x285de6,_0x27d47e){_0x285de6=_0x285de6-0x0;var _0x1fd5cf=_0xfaa9[_0x285de6];return _0x1fd5cf;};'use strict';var util=require(_0x9faa('0x0'));var BPromise=require('bluebird');var logger=require('../../../config/logger')('preview');var _=require(_0x9faa('0x1'));var cmHopper=require(_0x9faa('0x2'));var cmHopperFinal=require(_0x9faa('0x3'));var cmHopperHistory=require(_0x9faa('0x4'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x9faa('0x5'));var agentReportPreview=require(_0x9faa('0x6'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x500d13){return function(_0xd6ee97){logger['error'](_0x500d13,util[_0x9faa('0x7')](_0xd6ee97,{'showHidden':![],'depth':null}));};}function create(_0x1a92eb){return BPromise['resolve']()[_0x9faa('0x8')](cmHopperHistory[_0x9faa('0x9')](_0x1a92eb))[_0x9faa('0xa')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x45199e){return BPromise[_0x9faa('0xb')]()['then'](agentReportPreview['createHistory'](_0x45199e))['catch'](loggerCatch(_0x9faa('0xc')));}function moveContact(_0x70e0f){return BPromise['resolve']()[_0x9faa('0x8')](cmHopper['moveContactManagedDialer'](_0x70e0f,!![]))[_0x9faa('0xa')](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0x9faa('0xd')]=function(_0x112fde){return BPromise['resolve']()['then'](cmHopperBlack[_0x9faa('0xd')](_0x112fde))[_0x9faa('0xa')](loggerCatch(_0x9faa('0xe')));};exports[_0x9faa('0xf')]=function(_0x458c20){return BPromise[_0x9faa('0xb')]()[_0x9faa('0x8')](cmHopper['getContactPreview'](_0x458c20))[_0x9faa('0xa')](loggerCatch(_0x9faa('0x10')));};exports[_0x9faa('0x9')]=function(_0x524c6c,_0x3ab1bd){create(_0x524c6c)[_0x9faa('0xa')](loggerCatch(_0x3ab1bd));moveContact(_0x524c6c)['catch'](loggerCatch(_0x3ab1bd));};exports['createAgentHistory']=function(_0x3b6a4b,_0x501cef){createAgent(_0x3b6a4b)[_0x9faa('0xa')](loggerCatch(_0x501cef));};exports['createCustomerHistory']=function(_0x45fb2d,_0x371c6a){create(_0x45fb2d)[_0x9faa('0xa')](loggerCatch(_0x371c6a));};exports[_0x9faa('0x11')]=function(_0x2b9a09,_0x57baa6){moveContact(_0x2b9a09)[_0x9faa('0xa')](loggerCatch(_0x57baa6));};exports[_0x9faa('0x12')]=function(_0xac7b53,_0x468ae0,_0x20f90c){if(_0x468ae0){_0xac7b53[_0x9faa('0x13')]=null;}if(_0x20f90c){_0xac7b53[_0x9faa('0x14')]=![];}return BPromise[_0x9faa('0xb')]()[_0x9faa('0x8')](cmHopper[_0x9faa('0x12')](_0xac7b53))[_0x9faa('0xa')](loggerCatch(_0x9faa('0x15')));};exports['countReScheduled']=function(_0x4c242f){return BPromise[_0x9faa('0xb')]()['then'](cmHopper[_0x9faa('0x16')](_0x4c242f))[_0x9faa('0xa')](loggerCatch(_0x9faa('0x17')));};exports[_0x9faa('0x18')]=function(_0x195295){return BPromise[_0x9faa('0xb')]()[_0x9faa('0x8')](cmHopper['unlockContact']({'UserId':null},_0x195295,0x1))['catch'](loggerCatch(_0x9faa('0x19')));};exports[_0x9faa('0x1a')]=function(_0xeb1b6){return BPromise['resolve']()['then'](cmHopper[_0x9faa('0x18')]({'active':![]},_0xeb1b6,0x1))[_0x9faa('0xa')](loggerCatch('[activeContact]\x20'));};exports[_0x9faa('0x1b')]=function(_0x488dba){var _0x291714={};_0x291714[_0x9faa('0x1c')]=_0x488dba[_0x9faa('0x1c')];_0x291714[_0x9faa('0x1d')]=_0x488dba[_0x9faa('0x1d')];_0x291714['calleridnum']=_0x488dba[_0x9faa('0x1e')];_0x291714['calleridname']=_0x488dba[_0x9faa('0x1f')];_0x291714[_0x9faa('0x20')]=_0x488dba[_0x9faa('0x20')];_0x291714[_0x9faa('0x21')]=_0x488dba[_0x9faa('0x22')];_0x291714[_0x9faa('0x23')]=_0x488dba[_0x9faa('0x22')];_0x291714['queuecallercomplete']=0x1;_0x291714[_0x9faa('0x24')]=_0x488dba['endtime'];_0x291714[_0x9faa('0x25')]=_0x488dba[_0x9faa('0x26')];_0x291714[_0x9faa('0x27')]='from-sip';_0x291714[_0x9faa('0x28')]='xcally-motion-preview';_0x291714['holdtime']=0x0;_0x291714['assigned']=0x1;_0x291714[_0x9faa('0x29')]=_0x488dba[_0x9faa('0x26')];_0x291714[_0x9faa('0x2a')]=_0x9faa('0x2b');return BPromise[_0x9faa('0xb')]()[_0x9faa('0x8')](voiceQueueReport[_0x9faa('0x2c')](_0x291714))[_0x9faa('0xa')](loggerCatch(_0x9faa('0x2d')));};exports['getContactRecallMe']=function(_0x42f343,_0x129786){return BPromise[_0x9faa('0xb')]()['then'](cmHopper[_0x9faa('0x2e')](_0x42f343,_0x129786))[_0x9faa('0xa')](loggerCatch('[GetContactRecallMe]\x20'));};exports['rescheduleContactInQueue']=function(_0x2259a5){return BPromise[_0x9faa('0xb')]()['then'](cmHopper[_0x9faa('0x12')](_0x2259a5,!![],!![]))['catch'](loggerCatch(_0x9faa('0x2f')));};
\ No newline at end of file
index 3eebaab..da0fd2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18e3=['loggerError','logger2','message','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridnum','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','toLower','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','starttime','responsetime','endtime','logAgent','statedesc','ringtime','logLookAgent','membername','UserId','logCustomer','talktime','answertime','isFailure','Failure','variablesAction','calleridname','BOOKED','uniqueid','originate','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','Global','scheduledAt','add','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','buildObj','lastevent','queue','interface','channelAgent','motionChannel','voice','mandatoryDisposition','agentReadyId','not_inuse','reachable','createBody','idContact','campaigntype','callback','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','replace','random','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','env','127.0.0.1','milliseconds','diff','seconds','loggerCatch','error','logger','info','inspect'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x18e3,0x193));var _0x318e=function(_0xdc37a1,_0x53ebb9){_0xdc37a1=_0xdc37a1-0x0;var _0x99b4fe=_0x18e3[_0xdc37a1];return _0x99b4fe;};'use strict';var util=require(_0x318e('0x0'));var _=require(_0x318e('0x1'));var moment=require(_0x318e('0x2'));var logger=require(_0x318e('0x3'))('preview');var ipAgi=process[_0x318e('0x4')]['XCALLY_IP_AGI']||_0x318e('0x5');function getSeconds(_0x135f2c,_0x231746){var _0x378f9d=moment(_0x135f2c)[_0x318e('0x6')](0x0);var _0x90c1fa=moment(_0x231746)['milliseconds'](0x0);return _0x378f9d[_0x318e('0x7')](_0x90c1fa,_0x318e('0x8'));}exports[_0x318e('0x9')]=function(_0x3931a6){return function(_0x131b91){logger[_0x318e('0xa')](_0x3931a6,util['inspect'](_0x131b91,{'showHidden':![],'depth':null}));};};exports[_0x318e('0xb')]=function(_0xc0b23e,_0x307af1){logger[_0x318e('0xc')](_0xc0b23e,util[_0x318e('0xd')](_0x307af1,{'showHidden':![],'depth':null}));};exports[_0x318e('0xe')]=function(_0x5d8e1c,_0x4ee797){logger[_0x318e('0xa')](_0x5d8e1c,util[_0x318e('0xd')](_0x4ee797,{'showHidden':![],'depth':null}));};exports[_0x318e('0xf')]=function(_0x22468a){return function(_0x4b0700){logger[_0x318e('0xc')](_0x22468a,util[_0x318e('0xd')](_0x4b0700,{'showHidden':![],'depth':null}));};};exports[_0x318e('0x10')]=function(_0x2479c4,_0x3972db,_0x736ba4){return{'message':_0x2479c4,'unlock':_0x3972db,'active':_0x736ba4};};exports['getCallerId']=function(_0x4805c0,_0x4266f4,_0x45e804){if(!_[_0x318e('0x11')](_0x45e804)&&_0x318e('0x12')===typeof _0x45e804&&!_['isEmpty'](_0x45e804)){if(!_[_0x318e('0x11')](_0x4266f4)&&_0x318e('0x12')===typeof _0x4266f4&&!_[_0x318e('0x13')](_0x4266f4)){return util['format'](_0x318e('0x14'),_0x4266f4,_0x45e804);}return util[_0x318e('0x15')](_0x318e('0x14'),_0x45e804,_0x45e804);}if(!_['isUndefined'](_0x4805c0)&&_0x318e('0x12')===typeof _0x4805c0&&!_[_0x318e('0x13')](_0x4805c0)){return _0x4805c0;}return _0x318e('0x16');};exports[_0x318e('0x17')]=function(_0x4e8249){if(_[_0x318e('0x18')](_0x4e8249)){return![];}return _0x4e8249;};exports[_0x318e('0x19')]=function(_0x2bfb62,_0x44db30,_0x18326b,_0x163c7c,_0x5e55ef,_0x240440){var _0x354448={'XMD-QUEUE':_0x44db30['Queue']?_0x44db30[_0x318e('0x1a')][_0x318e('0x1b')]:'','XMD-CALLERID':_0x163c7c,'XMD-CALLERID-PREVIEW':_0x240440?util['format']('\x22%s\x22\x20<%s>',_0x240440['calleridname'],_0x240440[_0x318e('0x1c')]):_0x163c7c,'XMD-DIALID':_0x5e55ef,'XMD-CONTACTID':_0x44db30['ContactId'],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x163c7c,'XMD-VOICEQUEUEID':_0x44db30[_0x318e('0x1d')],'XMD-DIALCHANNEL':_0x18326b,'XMD-DIALTIMEOUT':_0x2bfb62[_0x318e('0x1e')]||0x1e,'XMD-DIALOPTIONS':util[_0x318e('0x15')](_0x318e('0x1f'),_0x2bfb62[_0x318e('0x20')]?'g':'',_[_0x318e('0x13')](_0x2bfb62[_0x318e('0x21')])?'':_0x318e('0x22')),'XMD-DIALURL':_0x2bfb62['dialPreviewUrl']||'','XMD-AGI':_0x2bfb62[_0x318e('0x23')]?util[_0x318e('0x15')]('\x22agi://%s/square,%s\x22',ipAgi,_0x2bfb62[_0x318e('0x23')]):'NONE','XMD-AGIAFTER':_0x2bfb62['dialQueueProject2']?util['format'](_0x318e('0x24'),ipAgi,_0x2bfb62[_0x318e('0x20')]):_0x318e('0x25'),'XMD-ORIGINATECALLERIDNUM':_0x240440?_0x240440[_0x318e('0x26')]:'','XMD-ORIGINATECALLERIDNAME':_0x240440?_0x240440[_0x318e('0x27')]:'','XMD-DESTINATION':_0x318e('0x28')};if(!_[_0x318e('0x13')](_0x2bfb62[_0x318e('0x21')])){_0x354448[util[_0x318e('0x15')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x2bfb62[_0x318e('0x21')];_0x354448[util[_0x318e('0x15')]('%s',_0x318e('0x29'))]=_0x5e55ef;}if(_0x44db30&&_0x44db30[_0x318e('0x2a')]){for(var _0x45b271 in _0x44db30[_0x318e('0x2a')]){if(_0x44db30[_0x318e('0x2a')][_0x318e('0x2b')](_0x45b271)){if(!_['isNil'](_0x44db30['Contact'][_0x45b271])&&_0x45b271!=='id'&&_0x45b271!=='tags'&&_0x45b271!=='createdAt'&&_0x45b271!==_0x318e('0x2c')){_0x354448[util['format'](_0x318e('0x2d'),_0x318e('0x2e'),_[_0x318e('0x2f')](_0x45b271))]=_0x44db30[_0x318e('0x2a')][_0x45b271];}}}}return _0x354448;};exports[_0x318e('0x30')]=function(_0x4e609d){var _0x5a34ca={};for(var _0x29d8fb in _0x4e609d){if(_0x4e609d[_0x318e('0x2b')](_0x29d8fb)){_0x5a34ca[util[_0x318e('0x15')]('%s',_[_0x318e('0x31')](_0x29d8fb))]=_0x4e609d[_0x29d8fb];}}return{'variables':_0x5a34ca};};exports['updateOriginated']=function(_0x139330,_0x44e5df){if(!_[_0x318e('0x18')](_0x139330)){if(_0x139330[_0x318e('0x2b')]('originated')){if(_0x139330[_0x318e('0x32')]>0x0){_0x139330['originated']-=0x1;}else{logger[_0x318e('0xa')](_0x318e('0x33'),_0x44e5df);}}}else{logger[_0x318e('0xa')](_0x318e('0x34'),_0x44e5df);}};exports[_0x318e('0x35')]=function(_0x1f7518){var _0x1ae5c9=moment()[_0x318e('0x15')](_0x318e('0x36'));_0x1f7518[_0x318e('0x37')]=0xd;_0x1f7518['statedesc']='Blacklist';_0x1f7518[_0x318e('0x38')]=_0x1ae5c9;_0x1f7518[_0x318e('0x39')]=_0x1ae5c9;_0x1f7518[_0x318e('0x3a')]=_0x1ae5c9;};exports[_0x318e('0x3b')]=function(_0x4c4c0c,_0xafeeeb,_0x465afc){var _0x7fd4df=moment()[_0x318e('0x15')](_0x318e('0x36'));_0x4c4c0c[_0x318e('0x37')]=_0xafeeeb;_0x4c4c0c[_0x318e('0x3c')]=_0x465afc;_0x4c4c0c[_0x318e('0x39')]=_0x7fd4df;_0x4c4c0c[_0x318e('0x3d')]=getSeconds(_0x4c4c0c[_0x318e('0x39')],_0x4c4c0c[_0x318e('0x38')]);};exports[_0x318e('0x3e')]=function(_0x5e4cdf,_0x1d2190,_0x2794ab){_0x5e4cdf[_0x318e('0x3f')]=_0x1d2190;_0x5e4cdf[_0x318e('0x40')]=_0x2794ab;};exports[_0x318e('0x41')]=function(_0x2fa282,_0x54865b,_0x30e62b){var _0xd6fa16=moment()[_0x318e('0x15')]('YYYY-MM-DD\x20HH:mm:ss');_0x2fa282[_0x318e('0x37')]=_0x54865b;_0x2fa282['statedesc']=_0x30e62b;_0x2fa282[_0x318e('0x39')]=_0x2fa282['responsetime']?_0x2fa282['responsetime']:_0xd6fa16;_0x2fa282[_0x318e('0x3a')]=_0x2fa282[_0x318e('0x3a')]?_0x2fa282[_0x318e('0x3a')]:_0xd6fa16;_0x2fa282[_0x318e('0x3d')]=getSeconds(_0x2fa282[_0x318e('0x39')]||0x0,_0x2fa282[_0x318e('0x38')]||0x0);_0x2fa282[_0x318e('0x42')]=_0x2fa282[_0x318e('0x43')]?getSeconds(_0x2fa282[_0x318e('0x3a')],_0x2fa282['answertime']):0x0;};exports[_0x318e('0x44')]=function(_0x4a48f1){return _0x4a48f1===_0x318e('0x45');};exports[_0x318e('0x46')]=function(_0x39a0c5,_0x284d62,_0x5a4c30,_0x814fb6,_0x1e713f){var _0x221c7b=_0x814fb6?'RECALL':_0x39a0c5[_0x318e('0x47')];_0x221c7b=_0x1e713f?_0x318e('0x48'):_0x221c7b;return{'actionid':_0x39a0c5[_0x318e('0x49')],'action':_0x318e('0x4a'),'channel':_0x39a0c5['channelAgent'],'callerid':util['format'](_0x318e('0x14'),_0x221c7b,_0x39a0c5[_0x318e('0x1c')]),'Exten':_0x318e('0x28'),'Context':_0x318e('0x4b'),'Priority':'1','variable':_0x5a4c30,'timeout':(_0x284d62[_0x318e('0x4c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x39a0c5[_0x318e('0x49')]};};exports[_0x318e('0x4d')]=function(_0x5ab15e){return _0x5ab15e[_0x318e('0x4e')]+_0x5ab15e[_0x318e('0x4f')]+_0x5ab15e[_0x318e('0x50')]+_0x5ab15e[_0x318e('0x51')]+_0x5ab15e[_0x318e('0x52')];};exports[_0x318e('0x53')]=function(_0x174784){var _0x43d890=_['clone'](_0x174784);_0x43d890[_0x318e('0x37')]=0xf;_0x43d890[_0x318e('0x3c')]=_0x318e('0x54');return _0x43d890;};exports[_0x318e('0x55')]=function(_0x2692d6,_0x323522,_0x1dccde){var _0x291d93={};_0x291d93[_0x323522]=_0x2692d6[_0x323522];_0x291d93['active']=![];_0x291d93['scheduledat']=moment()[_0x318e('0x56')](_0x1dccde,_0x318e('0x57'))[_0x318e('0x15')](_0x318e('0x36'));_0x291d93[_0x318e('0x58')]=_0x2692d6[_0x318e('0x58')];_0x291d93['ListId']=_0x2692d6[_0x318e('0x59')];_0x291d93[_0x318e('0x1d')]=_0x2692d6[_0x318e('0x1d')]||undefined;return _0x291d93;};exports[_0x318e('0x5a')]=function(_0x49182c,_0x30e9a1){if(!_['isNil'](_0x49182c)){if(_0x49182c[_0x318e('0x5b')]>0x0){_0x49182c[_0x318e('0x5b')]-=0x1;}else{logger['error'](_0x30e9a1,_0x318e('0x5c'));}}else{logger[_0x318e('0xa')](_0x30e9a1,_0x318e('0x5d'));}};exports['IsNotLoggedIn']=function(_0x3f41d6){if(_0x3f41d6<=0x0){return!![];}return![];};exports[_0x318e('0x5e')]=function(_0x533ac6,_0x5b913b,_0x28b602){_0x533ac6[_0x318e('0x5f')]=_0x5b913b;_0x533ac6[_0x318e('0x1b')]=_0x533ac6[_0x318e('0x60')];_0x533ac6[_0x318e('0x61')]=_0x533ac6[_0x318e('0x62')];_0x533ac6[_0x318e('0x63')]=_0x318e('0x64');if(_0x28b602){_0x533ac6[_0x318e('0x65')]=_0x28b602[_0x318e('0x65')];}return _0x533ac6;};exports['buildAcw']=function(_0x4fc9cd){var _0x66c8b={};_0x66c8b[_0x318e('0x60')]=_0x4fc9cd[_0x318e('0x60')];_0x66c8b[_0x318e('0x61')]=_0x4fc9cd[_0x318e('0x62')];_0x66c8b['uniqueid']=_0x4fc9cd['uniqueid'];return _0x66c8b;};exports[_0x318e('0x66')]=function(_0xa44bab){var _0x2aa487=[];for(var _0x3d9e83 in _0xa44bab){if(_0xa44bab[_0x318e('0x2b')](_0x3d9e83)){if(!_['isNil'](_0xa44bab[_0x3d9e83])&&_0xa44bab[_0x3d9e83][_0x318e('0x37')]===_0x318e('0x67')&&_0xa44bab[_0x3d9e83]['status']===_0x318e('0x68')){_0x2aa487['push'](_0xa44bab[_0x3d9e83]['id']);}}}return _0x2aa487;};exports['getDiff']=function(_0x30e4c4){var _0x4a0dcd=moment()[_0x318e('0x6')](0x0);var _0x55d6d2=moment(_0x30e4c4)[_0x318e('0x6')](0x0);return _0x4a0dcd['diff'](_0x55d6d2,_0x318e('0x8'));};exports[_0x318e('0x69')]=function(_0x4028ed){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x4028ed[_0x318e('0x58')],'ListId':_0x4028ed['ListId'],'VoiceQueueId':_0x4028ed[_0x318e('0x1d')]||undefined,'CampaignId':_0x4028ed['CampaignId']||undefined};};exports['filterKey']=function(_0x12b994){if(_0x12b994===_0x318e('0x49')||_0x12b994===_0x318e('0x6a')||_0x12b994===_0x318e('0x60')||_0x12b994==='type'||_0x12b994===_0x318e('0x6b')||_0x12b994==='dialAnswer'||_0x12b994===_0x318e('0x3f')||_0x12b994===_0x318e('0x62')||_0x12b994===_0x318e('0x47')||_0x12b994==='active'||_0x12b994===_0x318e('0x1c')||_0x12b994==='scheduledat'||_0x12b994===_0x318e('0x4e')||_0x12b994===_0x318e('0x4f')||_0x12b994===_0x318e('0x50')||_0x12b994==='countglobal'||_0x12b994===_0x318e('0x6c')||_0x12b994==='callbackuniqueid'||_0x12b994==='callbackat'||_0x12b994===_0x318e('0x6d')||_0x12b994==='ContactId'||_0x12b994==='ListId'||_0x12b994==='UserId'||_0x12b994==='VoiceQueueId'||_0x12b994===_0x318e('0x6e')||_0x12b994===_0x318e('0x6f')||_0x12b994===_0x318e('0x70')||_0x12b994===_0x318e('0x71')||_0x12b994===_0x318e('0x72')||_0x12b994===_0x318e('0x73')||_0x12b994===_0x318e('0x74')||_0x12b994==='xmd-dialoptions'||_0x12b994===_0x318e('0x75')||_0x12b994===_0x318e('0x76')||_0x12b994===_0x318e('0x77')||_0x12b994===_0x318e('0x78')||_0x12b994===_0x318e('0x79')||_0x12b994===_0x318e('0x7a')||_0x12b994===_0x318e('0x7b')||_0x12b994===_0x318e('0x7c')||_0x12b994===_0x318e('0x7d')||_0x12b994==='rtpaudioqosjitter'||_0x12b994===_0x318e('0x7e')||_0x12b994===_0x318e('0x7f')||_0x12b994===_0x318e('0x80')||_0x12b994==='rtpaudioqosrtt'||_0x12b994==='rtpaudioqosrttbridged'||_0x12b994===_0x318e('0x7c')||_0x12b994==='rtpaudioqosbridged'||_0x12b994==='rtpaudioqosjitter'||_0x12b994===_0x318e('0x7e')||_0x12b994===_0x318e('0x7f')||_0x12b994===_0x318e('0x80')||_0x12b994===_0x318e('0x81')||_0x12b994===_0x318e('0x82')||_0x12b994===_0x318e('0x83')||_0x12b994===_0x318e('0x84')||_0x12b994===_0x318e('0x37')||_0x12b994==='statedesc'){return![];}return!![];};exports[_0x318e('0x85')]=function(_0x2277aa,_0x1cff3f){var _0x2a9d3f,_0xd9ed40,_0x1fe0bc;if(_0x1cff3f<=0x0){_0x1cff3f=0x1;}_0x2a9d3f=new RegExp(_0x318e('0x86')+_0x1cff3f+'}$');_0xd9ed40=Math['pow'](0xa,_0x1cff3f-0x1);_0x1fe0bc=Math['pow'](0xa,_0x1cff3f)-0x1;return util[_0x318e('0x15')]('%s',_[_0x318e('0x87')](_0x2277aa,_0x2a9d3f,_[_0x318e('0x88')](_0xd9ed40,_0x1fe0bc)));};exports['extractCalleridName']=function(_0x32be14){var _0x5acd2c=_0x32be14[_0x318e('0x89')](/"(.*?)"/);return _0x5acd2c?_0x5acd2c[0x1]:_0x32be14;};exports[_0x318e('0x8a')]=function(_0x344456){var _0x1af351=_0x344456[_0x318e('0x89')](/<(.*?)>/);return _0x1af351?_0x1af351[0x1]:_0x344456;};
\ No newline at end of file
+var _0x4554=['dialer','VoiceQueueId','dialOriginateTimeout','dialQueueProject2','U(xcally-mixmonitor-context)','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridname','xcally-motion-preview','monitor_format','Contact','hasOwnProperty','createdAt','updatedAt','XMD-','toLower','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','membername','logCustomer','ringtime','talktime','Failure','variablesAction','RECALL','BOOKED','channelAgent','from-sip','timeout','uniqueid','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','scheduledAt','active','add','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','name','interface','mandatoryDisposition','buildAcw','queue','agentReadyId','reachable','push','seconds','createBody','CampaignId','filterKey','idContact','campaigntype','dialAnswer','scheduledat','countnoanswerretry','callback','callbackat','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialchannel','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','bridgepeer','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','loggerCatch','error','logger','inspect','loggerError','logger2','info','message','getCallerId','isUndefined','isEmpty','string','format','isActive','isNil','addVariables','Queue','\x22%s\x22\x20<%s>','calleridname','calleridnum'];(function(_0x187f62,_0x638167){var _0x331b08=function(_0x37ca9e){while(--_0x37ca9e){_0x187f62['push'](_0x187f62['shift']());}};_0x331b08(++_0x638167);}(_0x4554,0x69));var _0x4455=function(_0x3cb46e,_0x38643b){_0x3cb46e=_0x3cb46e-0x0;var _0x58f103=_0x4554[_0x3cb46e];return _0x58f103;};'use strict';var util=require(_0x4455('0x0'));var _=require(_0x4455('0x1'));var moment=require(_0x4455('0x2'));var logger=require(_0x4455('0x3'))(_0x4455('0x4'));var ipAgi=process[_0x4455('0x5')][_0x4455('0x6')]||_0x4455('0x7');function getSeconds(_0x5b885f,_0x191717){var _0x2ccfb5=moment(_0x5b885f)[_0x4455('0x8')](0x0);var _0x1e4c4d=moment(_0x191717)[_0x4455('0x8')](0x0);return _0x2ccfb5[_0x4455('0x9')](_0x1e4c4d,'seconds');}exports[_0x4455('0xa')]=function(_0x508396){return function(_0x46923e){logger[_0x4455('0xb')](_0x508396,util['inspect'](_0x46923e,{'showHidden':![],'depth':null}));};};exports[_0x4455('0xc')]=function(_0x39f21d,_0x415bab){logger['info'](_0x39f21d,util[_0x4455('0xd')](_0x415bab,{'showHidden':![],'depth':null}));};exports[_0x4455('0xe')]=function(_0x5a42cb,_0x157160){logger[_0x4455('0xb')](_0x5a42cb,util['inspect'](_0x157160,{'showHidden':![],'depth':null}));};exports[_0x4455('0xf')]=function(_0x192233){return function(_0x578b10){logger[_0x4455('0x10')](_0x192233,util[_0x4455('0xd')](_0x578b10,{'showHidden':![],'depth':null}));};};exports[_0x4455('0x11')]=function(_0xa46ac5,_0x53c9e1,_0xc64b5b){return{'message':_0xa46ac5,'unlock':_0x53c9e1,'active':_0xc64b5b};};exports[_0x4455('0x12')]=function(_0x4a1b59,_0xbc12a6,_0x3c7af4){if(!_[_0x4455('0x13')](_0x3c7af4)&&'string'===typeof _0x3c7af4&&!_[_0x4455('0x14')](_0x3c7af4)){if(!_[_0x4455('0x13')](_0xbc12a6)&&_0x4455('0x15')===typeof _0xbc12a6&&!_[_0x4455('0x14')](_0xbc12a6)){return util[_0x4455('0x16')]('\x22%s\x22\x20<%s>',_0xbc12a6,_0x3c7af4);}return util[_0x4455('0x16')]('\x22%s\x22\x20<%s>',_0x3c7af4,_0x3c7af4);}if(!_[_0x4455('0x13')](_0x4a1b59)&&_0x4455('0x15')===typeof _0x4a1b59&&!_['isEmpty'](_0x4a1b59)){return _0x4a1b59;}return'\x22\x22\x20<>';};exports[_0x4455('0x17')]=function(_0x10423a){if(_[_0x4455('0x18')](_0x10423a)){return![];}return _0x10423a;};exports[_0x4455('0x19')]=function(_0x19fe66,_0x4229b1,_0x2d2aef,_0x2de834,_0x34ba05,_0x5a60ef){var _0xad685b={'XMD-QUEUE':_0x4229b1[_0x4455('0x1a')]?_0x4229b1[_0x4455('0x1a')]['name']:'','XMD-CALLERID':_0x2de834,'XMD-CALLERID-PREVIEW':_0x5a60ef?util[_0x4455('0x16')](_0x4455('0x1b'),_0x5a60ef[_0x4455('0x1c')],_0x5a60ef[_0x4455('0x1d')]):_0x2de834,'XMD-DIALID':_0x34ba05,'XMD-CONTACTID':_0x4229b1['ContactId'],'XMD-CDRTYPE':_0x4455('0x1e'),'CALLERID(all)':_0x2de834,'XMD-VOICEQUEUEID':_0x4229b1[_0x4455('0x1f')],'XMD-DIALCHANNEL':_0x2d2aef,'XMD-DIALTIMEOUT':_0x19fe66[_0x4455('0x20')]||0x1e,'XMD-DIALOPTIONS':util[_0x4455('0x16')]('\x22rtTxX%s%s\x22',_0x19fe66[_0x4455('0x21')]?'g':'',_[_0x4455('0x14')](_0x19fe66['monitor_format'])?'':_0x4455('0x22')),'XMD-DIALURL':_0x19fe66['dialPreviewUrl']||'','XMD-AGI':_0x19fe66[_0x4455('0x23')]?util[_0x4455('0x16')](_0x4455('0x24'),ipAgi,_0x19fe66['dialQueueProject']):_0x4455('0x25'),'XMD-AGIAFTER':_0x19fe66['dialQueueProject2']?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x19fe66[_0x4455('0x21')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x5a60ef?_0x5a60ef['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x5a60ef?_0x5a60ef[_0x4455('0x26')]:'','XMD-DESTINATION':_0x4455('0x27')};if(!_['isEmpty'](_0x19fe66[_0x4455('0x28')])){_0xad685b[util[_0x4455('0x16')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x19fe66[_0x4455('0x28')];_0xad685b[util[_0x4455('0x16')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x34ba05;}if(_0x4229b1&&_0x4229b1[_0x4455('0x29')]){for(var _0x1e5f2b in _0x4229b1[_0x4455('0x29')]){if(_0x4229b1[_0x4455('0x29')][_0x4455('0x2a')](_0x1e5f2b)){if(!_[_0x4455('0x18')](_0x4229b1[_0x4455('0x29')][_0x1e5f2b])&&_0x1e5f2b!=='id'&&_0x1e5f2b!=='tags'&&_0x1e5f2b!==_0x4455('0x2b')&&_0x1e5f2b!==_0x4455('0x2c')){_0xad685b[util[_0x4455('0x16')]('%s%s',_0x4455('0x2d'),_['toUpper'](_0x1e5f2b))]=_0x4229b1[_0x4455('0x29')][_0x1e5f2b];}}}}return _0xad685b;};exports['toLowerVariables']=function(_0x1eadd7){var _0x45b205={};for(var _0x40c812 in _0x1eadd7){if(_0x1eadd7[_0x4455('0x2a')](_0x40c812)){_0x45b205[util['format']('%s',_[_0x4455('0x2e')](_0x40c812))]=_0x1eadd7[_0x40c812];}}return{'variables':_0x45b205};};exports['updateOriginated']=function(_0x1d4feb,_0x3baf60){if(!_[_0x4455('0x18')](_0x1d4feb)){if(_0x1d4feb['hasOwnProperty'](_0x4455('0x2f'))){if(_0x1d4feb[_0x4455('0x2f')]>0x0){_0x1d4feb['originated']-=0x1;}else{logger[_0x4455('0xb')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x3baf60);}}}else{logger['error'](_0x4455('0x30'),_0x3baf60);}};exports[_0x4455('0x31')]=function(_0x2376af){var _0xf99b21=moment()[_0x4455('0x16')](_0x4455('0x32'));_0x2376af[_0x4455('0x33')]=0xd;_0x2376af[_0x4455('0x34')]=_0x4455('0x35');_0x2376af[_0x4455('0x36')]=_0xf99b21;_0x2376af[_0x4455('0x37')]=_0xf99b21;_0x2376af[_0x4455('0x38')]=_0xf99b21;};exports[_0x4455('0x39')]=function(_0x2c959c,_0x28e919,_0x17f607){var _0x4a695a=moment()['format'](_0x4455('0x32'));_0x2c959c[_0x4455('0x33')]=_0x28e919;_0x2c959c[_0x4455('0x34')]=_0x17f607;_0x2c959c[_0x4455('0x37')]=_0x4a695a;_0x2c959c['ringtime']=getSeconds(_0x2c959c[_0x4455('0x37')],_0x2c959c[_0x4455('0x36')]);};exports['logLookAgent']=function(_0x28d3c5,_0x3f8183,_0x5034a4){_0x28d3c5[_0x4455('0x3a')]=_0x3f8183;_0x28d3c5['UserId']=_0x5034a4;};exports[_0x4455('0x3b')]=function(_0x3962b8,_0x5687dd,_0x55a4dc){var _0x526127=moment()['format'](_0x4455('0x32'));_0x3962b8[_0x4455('0x33')]=_0x5687dd;_0x3962b8[_0x4455('0x34')]=_0x55a4dc;_0x3962b8[_0x4455('0x37')]=_0x3962b8[_0x4455('0x37')]?_0x3962b8[_0x4455('0x37')]:_0x526127;_0x3962b8['endtime']=_0x3962b8['endtime']?_0x3962b8[_0x4455('0x38')]:_0x526127;_0x3962b8[_0x4455('0x3c')]=getSeconds(_0x3962b8[_0x4455('0x37')]||0x0,_0x3962b8[_0x4455('0x36')]||0x0);_0x3962b8[_0x4455('0x3d')]=_0x3962b8['answertime']?getSeconds(_0x3962b8[_0x4455('0x38')],_0x3962b8['answertime']):0x0;};exports['isFailure']=function(_0x37e8ec){return _0x37e8ec===_0x4455('0x3e');};exports[_0x4455('0x3f')]=function(_0x48e9d8,_0x11397a,_0x172bcd,_0x49707b,_0x5dfb65){var _0x3fae3f=_0x49707b?_0x4455('0x40'):_0x48e9d8[_0x4455('0x1c')];_0x3fae3f=_0x5dfb65?_0x4455('0x41'):_0x3fae3f;return{'actionid':_0x48e9d8['uniqueid'],'action':'originate','channel':_0x48e9d8[_0x4455('0x42')],'callerid':util['format'](_0x4455('0x1b'),_0x3fae3f,_0x48e9d8[_0x4455('0x1d')]),'Exten':_0x4455('0x27'),'Context':_0x4455('0x43'),'Priority':'1','variable':_0x172bcd,'timeout':(_0x11397a[_0x4455('0x44')]||0x1e)*0x3e8,'async':!![],'channelid':_0x48e9d8[_0x4455('0x45')]};};exports['totalGlobal']=function(_0x6ac8b9){return _0x6ac8b9[_0x4455('0x46')]+_0x6ac8b9[_0x4455('0x47')]+_0x6ac8b9['countnoanswerretry']+_0x6ac8b9[_0x4455('0x48')]+_0x6ac8b9[_0x4455('0x49')];};exports[_0x4455('0x4a')]=function(_0x2a4665){var _0xcede05=_[_0x4455('0x4b')](_0x2a4665);_0xcede05['state']=0xf;_0xcede05[_0x4455('0x34')]='Global';return _0xcede05;};exports[_0x4455('0x4c')]=function(_0x3c3397,_0xccb7fe,_0x188bed){var _0x53048b={};_0x53048b[_0xccb7fe]=_0x3c3397[_0xccb7fe];_0x53048b[_0x4455('0x4d')]=![];_0x53048b['scheduledat']=moment()[_0x4455('0x4e')](_0x188bed,_0x4455('0x4f'))[_0x4455('0x16')]('YYYY-MM-DD\x20HH:mm:ss');_0x53048b[_0x4455('0x50')]=_0x3c3397[_0x4455('0x50')];_0x53048b[_0x4455('0x51')]=_0x3c3397[_0x4455('0x51')];_0x53048b[_0x4455('0x1f')]=_0x3c3397['VoiceQueueId']||undefined;return _0x53048b;};exports[_0x4455('0x52')]=function(_0x300389,_0xd78244){if(!_[_0x4455('0x18')](_0x300389)){if(_0x300389[_0x4455('0x53')]>0x0){_0x300389[_0x4455('0x53')]-=0x1;}else{logger[_0x4455('0xb')](_0xd78244,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0x4455('0xb')](_0xd78244,_0x4455('0x54'));}};exports[_0x4455('0x55')]=function(_0x31d420){if(_0x31d420<=0x0){return!![];}return![];};exports['buildObj']=function(_0x44bc8c,_0x4ff59a,_0x412dc0){_0x44bc8c['lastevent']=_0x4ff59a;_0x44bc8c[_0x4455('0x56')]=_0x44bc8c['queue'];_0x44bc8c[_0x4455('0x57')]=_0x44bc8c[_0x4455('0x42')];if(_0x412dc0){_0x44bc8c[_0x4455('0x58')]=_0x412dc0[_0x4455('0x58')];}return _0x44bc8c;};exports[_0x4455('0x59')]=function(_0x5acae4){var _0x2a6d10={};_0x2a6d10['queue']=_0x5acae4[_0x4455('0x5a')];_0x2a6d10['interface']=_0x5acae4[_0x4455('0x42')];_0x2a6d10[_0x4455('0x45')]=_0x5acae4[_0x4455('0x45')];return _0x2a6d10;};exports[_0x4455('0x5b')]=function(_0x378c42){var _0x35682c=[];for(var _0x166c15 in _0x378c42){if(_0x378c42[_0x4455('0x2a')](_0x166c15)){if(!_[_0x4455('0x18')](_0x378c42[_0x166c15])&&_0x378c42[_0x166c15][_0x4455('0x33')]==='not_inuse'&&_0x378c42[_0x166c15]['status']===_0x4455('0x5c')){_0x35682c[_0x4455('0x5d')](_0x378c42[_0x166c15]['id']);}}}return _0x35682c;};exports['getDiff']=function(_0x1a1e13){var _0x439ca5=moment()['milliseconds'](0x0);var _0xbd2094=moment(_0x1a1e13)['milliseconds'](0x0);return _0x439ca5[_0x4455('0x9')](_0xbd2094,_0x4455('0x5e'));};exports[_0x4455('0x5f')]=function(_0x2a15c4){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2a15c4[_0x4455('0x50')],'ListId':_0x2a15c4[_0x4455('0x51')],'VoiceQueueId':_0x2a15c4[_0x4455('0x1f')]||undefined,'CampaignId':_0x2a15c4[_0x4455('0x60')]||undefined};};exports[_0x4455('0x61')]=function(_0x17b80b){if(_0x17b80b===_0x4455('0x45')||_0x17b80b===_0x4455('0x62')||_0x17b80b===_0x4455('0x5a')||_0x17b80b==='type'||_0x17b80b===_0x4455('0x63')||_0x17b80b===_0x4455('0x64')||_0x17b80b===_0x4455('0x3a')||_0x17b80b===_0x4455('0x42')||_0x17b80b==='calleridname'||_0x17b80b===_0x4455('0x4d')||_0x17b80b===_0x4455('0x1d')||_0x17b80b===_0x4455('0x65')||_0x17b80b===_0x4455('0x46')||_0x17b80b===_0x4455('0x47')||_0x17b80b===_0x4455('0x66')||_0x17b80b==='countglobal'||_0x17b80b===_0x4455('0x67')||_0x17b80b==='callbackuniqueid'||_0x17b80b===_0x4455('0x68')||_0x17b80b==='recallme'||_0x17b80b==='ContactId'||_0x17b80b==='ListId'||_0x17b80b===_0x4455('0x69')||_0x17b80b==='VoiceQueueId'||_0x17b80b===_0x4455('0x6a')||_0x17b80b===_0x4455('0x6b')||_0x17b80b===_0x4455('0x6c')||_0x17b80b==='xmd-phone'||_0x17b80b===_0x4455('0x6d')||_0x17b80b===_0x4455('0x6e')||_0x17b80b===_0x4455('0x6f')||_0x17b80b===_0x4455('0x70')||_0x17b80b==='xmd-dialid'||_0x17b80b===_0x4455('0x71')||_0x17b80b==='xmd-contactid'||_0x17b80b===_0x4455('0x72')||_0x17b80b===_0x4455('0x73')||_0x17b80b===_0x4455('0x74')||_0x17b80b===_0x4455('0x75')||_0x17b80b==='rtpaudioqos'||_0x17b80b===_0x4455('0x76')||_0x17b80b===_0x4455('0x77')||_0x17b80b==='rtpaudioqosjitterbridged'||_0x17b80b===_0x4455('0x78')||_0x17b80b==='rtpaudioqoslossbridged'||_0x17b80b===_0x4455('0x79')||_0x17b80b===_0x4455('0x7a')||_0x17b80b===_0x4455('0x7b')||_0x17b80b==='rtpaudioqosbridged'||_0x17b80b===_0x4455('0x77')||_0x17b80b===_0x4455('0x7c')||_0x17b80b===_0x4455('0x78')||_0x17b80b===_0x4455('0x7d')||_0x17b80b===_0x4455('0x79')||_0x17b80b===_0x4455('0x7a')||_0x17b80b===_0x4455('0x7e')||_0x17b80b==='bridgepvtcallid'||_0x17b80b==='state'||_0x17b80b==='statedesc'){return![];}return!![];};exports[_0x4455('0x7f')]=function(_0x148bc9,_0x248c1a){var _0x19d8f0,_0x2a4c5c,_0x487bad;if(_0x248c1a<=0x0){_0x248c1a=0x1;}_0x19d8f0=new RegExp(_0x4455('0x80')+_0x248c1a+'}$');_0x2a4c5c=Math[_0x4455('0x81')](0xa,_0x248c1a-0x1);_0x487bad=Math[_0x4455('0x81')](0xa,_0x248c1a)-0x1;return util[_0x4455('0x16')]('%s',_[_0x4455('0x82')](_0x148bc9,_0x19d8f0,_[_0x4455('0x83')](_0x2a4c5c,_0x487bad)));};exports[_0x4455('0x84')]=function(_0xf91601){var _0x2bd9e7=_0xf91601[_0x4455('0x85')](/"(.*?)"/);return _0x2bd9e7?_0x2bd9e7[0x1]:_0xf91601;};exports[_0x4455('0x86')]=function(_0x27f4df){var _0x571d93=_0x27f4df[_0x4455('0x85')](/<(.*?)>/);return _0x571d93?_0x571d93[0x1]:_0x27f4df;};
\ No newline at end of file
index 06902b6..83196c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdbf=['string','boolean','queueremove','queuepause','reload','voicechannel','voicequeuechannelredirect','queueadd'];(function(_0x316b9e,_0x23efae){var _0x68298b=function(_0x36120b){while(--_0x36120b){_0x316b9e['push'](_0x316b9e['shift']());}};_0x68298b(++_0x23efae);}(_0xbdbf,0x177));var _0xfbdb=function(_0x2f45ea,_0x15c656){_0x2f45ea=_0x2f45ea-0x0;var _0x485a84=_0xbdbf[_0x2f45ea];return _0x485a84;};'use strict';exports[_0xfbdb('0x0')]={'queue':{'type':_0xfbdb('0x1'),'required':!![]},'interface':{'type':_0xfbdb('0x1'),'required':!![]},'membername':{'type':_0xfbdb('0x1'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0xfbdb('0x2'),'required':![]}};exports[_0xfbdb('0x3')]={'queue':{'type':_0xfbdb('0x1'),'required':!![]},'interface':{'type':_0xfbdb('0x1'),'required':!![]}};exports[_0xfbdb('0x4')]={'interface':{'type':_0xfbdb('0x1'),'required':!![]},'paused':{'type':_0xfbdb('0x2')},'reason':{'type':_0xfbdb('0x1'),'required':![]}};exports[_0xfbdb('0x5')]={'module':{'type':_0xfbdb('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xfbdb('0x1'),'required':!![]}};exports[_0xfbdb('0x6')]={'uniqueid':{'type':_0xfbdb('0x1'),'required':!![]},'filename':{'type':_0xfbdb('0x1')},'format':{'type':_0xfbdb('0x1')},'mixmonitorid':{'type':_0xfbdb('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':'string','required':!![]}};exports[_0xfbdb('0x7')]={'uniqueid':{'type':'string','required':!![]},'exten':{'type':_0xfbdb('0x1'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
+var _0xa557=['queueremove','reload','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','string','number','boolean'];(function(_0x912d27,_0x28e0e3){var _0x31b918=function(_0x1882f7){while(--_0x1882f7){_0x912d27['push'](_0x912d27['shift']());}};_0x31b918(++_0x28e0e3);}(_0xa557,0xb5));var _0x7a55=function(_0x2a4244,_0x5e5b9a){_0x2a4244=_0x2a4244-0x0;var _0x50da3c=_0xa557[_0x2a4244];return _0x50da3c;};'use strict';exports['queueadd']={'queue':{'type':_0x7a55('0x0'),'required':!![]},'interface':{'type':_0x7a55('0x0'),'required':!![]},'membername':{'type':_0x7a55('0x0'),'required':!![]},'penalty':{'type':_0x7a55('0x1'),'required':![]},'paused':{'type':_0x7a55('0x2'),'required':![]}};exports[_0x7a55('0x3')]={'queue':{'type':_0x7a55('0x0'),'required':!![]},'interface':{'type':_0x7a55('0x0'),'required':!![]}};exports['queuepause']={'interface':{'type':_0x7a55('0x0'),'required':!![]},'paused':{'type':_0x7a55('0x2')},'reason':{'type':_0x7a55('0x0'),'required':![]}};exports[_0x7a55('0x4')]={'module':{'type':_0x7a55('0x0'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':'string','required':!![]}};exports[_0x7a55('0x5')]={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0x7a55('0x0')},'format':{'type':_0x7a55('0x0')},'mixmonitorid':{'type':'string'}};exports[_0x7a55('0x6')]={'uniqueid':{'type':'string','required':!![]}};exports[_0x7a55('0x7')]={'uniqueid':{'type':_0x7a55('0x0'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0x7a55('0x0')}};
\ No newline at end of file
index 4a5cfab..70fdcf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5142=['templates','initZendeskAccounts','zendeskAccounts','salesforceAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','freshsalesAccounts','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerabandon','queuecallerleaveAt','seconds','queuecallercompleteAt','queuecallerabandonAt','diff','queuecallerjoinAt','queuecallercomplete','duration','disposition','ANSWERED','billableseconds','dialQueueProject','SquareProject','initCampaignHopperHistory','initFaxAccounts','bluebird','lodash','moment','../model/agent','../model/telephone','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','agents','trunks','voiceQueues','triggers','campaigns','outbound','voiceExtensions','channels','queueChannels','outboundChannels','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','mapKeys','hasOwnProperty','format','name','SIP/%s','interface','total','answered','sumBillable','ivrTotalCallsDays','isEmpty','unmanaged','abandoned','sumHoldTime','sumDuration','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','isUndefined','initTelephones','telephones','initTrunks','initVoiceQueues','initTemplates'];(function(_0x3ed474,_0x54b670){var _0x330b3c=function(_0x134651){while(--_0x134651){_0x3ed474['push'](_0x3ed474['shift']());}};_0x330b3c(++_0x54b670);}(_0x5142,0xf0));var _0x2514=function(_0x370cd0,_0x7bcedf){_0x370cd0=_0x370cd0-0x0;var _0x3d1363=_0x5142[_0x370cd0];return _0x3d1363;};'use strict';var BPromise=require(_0x2514('0x0'));var util=require('util');var _=require(_0x2514('0x1'));var moment=require(_0x2514('0x2'));var Agent=require(_0x2514('0x3'));var Telephone=require(_0x2514('0x4'));var Trunk=require('../model/trunk');var VoiceQueue=require('../model/voiceQueue');var Trigger=require(_0x2514('0x5'));var Template=require(_0x2514('0x6'));var Campaign=require(_0x2514('0x7'));var VoiceExtension=require(_0x2514('0x8'));var ZendeskAccount=require(_0x2514('0x9'));var SalesforceAccount=require(_0x2514('0xa'));var FreshdeskAccount=require(_0x2514('0xb'));var SugarcrmAccount=require(_0x2514('0xc'));var ZohoAccount=require(_0x2514('0xd'));var DeskAccount=require(_0x2514('0xe'));var VtigerAccount=require(_0x2514('0xf'));var ServicenowAccount=require(_0x2514('0x10'));var Dynamics365Account=require(_0x2514('0x11'));var FreshsalesAccount=require(_0x2514('0x12'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0x2514('0x13')]={};this['telephones']={};this[_0x2514('0x14')]={};this[_0x2514('0x15')]={};this[_0x2514('0x16')]={};this[_0x2514('0x17')]={};this['templates']={};this[_0x2514('0x18')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x2514('0x19')]={};this[_0x2514('0x1a')]={};this[_0x2514('0x1b')]={};this[_0x2514('0x1c')]={};this['timers']={};this['settings']={};this['zendeskAccounts']={};this['salesforceAccounts']={};this[_0x2514('0x1d')]={};this[_0x2514('0x1e')]={};this[_0x2514('0x1f')]={};this[_0x2514('0x20')]={};this[_0x2514('0x21')]={};this[_0x2514('0x22')]={};this[_0x2514('0x23')]={};this['freshsalesAccounts']={};this[_0x2514('0x24')]={};};function freeIsNotKey(_0x47c3aa,_0x2bda94,_0x3b0098){var _0x5e5e4b=_[_0x2514('0x25')](_0x47c3aa,function(_0xcd23a2,_0xb90eec){return _0xcd23a2[_0x3b0098];});for(var _0x46fe in _0x2bda94){if(_0x2bda94[_0x2514('0x26')](_0x46fe)){if(!_0x5e5e4b[_0x46fe]){delete _0x2bda94[_0x46fe];}}}}function freeIsNotKeySip(_0x4cde27,_0x5051b4){var _0x472e48=_[_0x2514('0x25')](_0x4cde27,function(_0x46236a,_0x3e30af){return util[_0x2514('0x27')]('SIP/%s',_0x46236a[_0x2514('0x28')]);});for(var _0x5a796f in _0x5051b4){if(_0x5051b4[_0x2514('0x26')](_0x5a796f)){if(!_0x472e48[_0x5a796f]){delete _0x5051b4[_0x5a796f];}}}}function freeIsNotKeyAgent(_0x40384d,_0x240011){var _0xf0b3df=_[_0x2514('0x25')](_0x40384d,function(_0x490997,_0x37bc10){var _0x576960=_['isNil'](_0x490997['interface'])?util[_0x2514('0x27')](_0x2514('0x29'),_0x490997['name']):_0x490997[_0x2514('0x2a')];return _0x576960;});for(var _0x3a8905 in _0x240011){if(_0x240011[_0x2514('0x26')](_0x3a8905)){if(!_0xf0b3df[_0x3a8905]){delete _0x240011[_0x3a8905];}}}}function clearVoiceCallReports(_0x3eb949){_0x3eb949[_0x2514('0x2b')]=0x0;_0x3eb949[_0x2514('0x2c')]=0x0;_0x3eb949['sumHoldTime']=0x0;_0x3eb949['sumDuration']=0x0;_0x3eb949[_0x2514('0x2d')]=0x0;}function clearCampaigns(_0x24dbc9){if(!_['isEmpty'](_0x24dbc9)){for(var _0xcc0e0e in _0x24dbc9){if(_0x24dbc9[_0x2514('0x26')](_0xcc0e0e)){_0x24dbc9[_0xcc0e0e][_0x2514('0x2e')]=0x0;_0x24dbc9[_0xcc0e0e]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x3729f9){if(!_[_0x2514('0x2f')](_0x3729f9)){for(var _0x341593 in _0x3729f9){if(_0x3729f9[_0x2514('0x26')](_0x341593)){_0x3729f9[_0x341593]['total']=0x0;_0x3729f9[_0x341593][_0x2514('0x2c')]=0x0;_0x3729f9[_0x341593][_0x2514('0x30')]=0x0;_0x3729f9[_0x341593][_0x2514('0x31')]=0x0;_0x3729f9[_0x341593][_0x2514('0x32')]=0x0;_0x3729f9[_0x341593][_0x2514('0x33')]=0x0;_0x3729f9[_0x341593][_0x2514('0x2d')]=0x0;_0x3729f9[_0x341593][_0x2514('0x34')]=0x0;_0x3729f9[_0x341593]['outboundNoAnswerCallsDay']=0x0;_0x3729f9[_0x341593][_0x2514('0x35')]=0x0;_0x3729f9[_0x341593][_0x2514('0x36')]=0x0;_0x3729f9[_0x341593][_0x2514('0x37')]=0x0;_0x3729f9[_0x341593]['outboundUnknownCallsDay']=0x0;_0x3729f9[_0x341593]['outboundDropCallsDayTimeout']=0x0;_0x3729f9[_0x341593][_0x2514('0x38')]=0x0;_0x3729f9[_0x341593][_0x2514('0x39')]=0x0;_0x3729f9[_0x341593]['outboundOriginateFailureCallsDay']=0x0;_0x3729f9[_0x341593][_0x2514('0x3a')]=0x0;_0x3729f9[_0x341593][_0x2514('0x3b')]=0x0;_0x3729f9[_0x341593][_0x2514('0x34')]=0x0;_0x3729f9[_0x341593][_0x2514('0x3c')]=0x0;_0x3729f9[_0x341593][_0x2514('0x3d')]=!![];}}}}Realtime[_0x2514('0x3e')][_0x2514('0x3f')]=function(_0x444fb6,_0x2afdf8){for(var _0x55c9cf in _0x2afdf8){if(_0x444fb6['hasOwnProperty'](_0x55c9cf)){_0x444fb6[_0x55c9cf]=_0x2afdf8[_0x55c9cf];}}};Realtime[_0x2514('0x3e')][_0x2514('0x40')]=function(){var _0x57b85c=this;return function(_0x4f8b38){if(_0x4f8b38){freeIsNotKeyAgent(_0x4f8b38,_0x57b85c['agents']);for(var _0x74e20c=0x0,_0x16f9d9={},_0x3467b2={};_0x74e20c<_0x4f8b38[_0x2514('0x41')];_0x74e20c+=0x1){_0x16f9d9=_0x4f8b38[_0x74e20c];var _0x406dbf=_['isNil'](_0x16f9d9[_0x2514('0x2a')])?util[_0x2514('0x27')]('SIP/%s',_0x16f9d9[_0x2514('0x28')]):_0x16f9d9['interface'];if(_[_0x2514('0x42')](_0x57b85c[_0x2514('0x13')][_0x406dbf])){_0x57b85c[_0x2514('0x13')][_0x406dbf]=new Agent(_0x16f9d9);}else{_0x57b85c[_0x2514('0x3f')](_0x57b85c[_0x2514('0x13')][_0x406dbf],_0x16f9d9);}}}return _0x57b85c[_0x2514('0x13')];};};Realtime[_0x2514('0x3e')][_0x2514('0x43')]=function(){var _0x3c550e=this;return function(_0x510b2b){if(_0x510b2b){freeIsNotKeySip(_0x510b2b,_0x3c550e['telephones']);for(var _0x4fba08=0x0,_0x9ef149={},_0x3699aa={};_0x4fba08<_0x510b2b[_0x2514('0x41')];_0x4fba08+=0x1){_0x9ef149=_0x510b2b[_0x4fba08];if(_[_0x2514('0x42')](_0x3c550e[_0x2514('0x44')][util[_0x2514('0x27')]('SIP/%s',_0x9ef149['name'])])){_0x3c550e[_0x2514('0x44')][util[_0x2514('0x27')](_0x2514('0x29'),_0x9ef149[_0x2514('0x28')])]=new Telephone(_0x9ef149);}else{_0x3c550e[_0x2514('0x3f')](_0x3c550e['telephones'][util[_0x2514('0x27')](_0x2514('0x29'),_0x9ef149[_0x2514('0x28')])],_0x9ef149);}}}return _0x3c550e[_0x2514('0x44')];};};Realtime[_0x2514('0x3e')][_0x2514('0x45')]=function(){var _0x2864db=this;return function(_0x2a4861){if(_0x2a4861){freeIsNotKeySip(_0x2a4861,_0x2864db[_0x2514('0x14')]);for(var _0x26f733=0x0,_0x12a9eb={},_0x49f165={};_0x26f733<_0x2a4861[_0x2514('0x41')];_0x26f733+=0x1){_0x12a9eb=_0x2a4861[_0x26f733];if(_['isUndefined'](_0x2864db[_0x2514('0x14')][util[_0x2514('0x27')](_0x2514('0x29'),_0x12a9eb[_0x2514('0x28')])])){_0x2864db[_0x2514('0x14')][util['format'](_0x2514('0x29'),_0x12a9eb[_0x2514('0x28')])]=new Trunk(_0x12a9eb);}else{_0x2864db[_0x2514('0x3f')](_0x2864db[_0x2514('0x14')][util['format'](_0x2514('0x29'),_0x12a9eb[_0x2514('0x28')])],_0x12a9eb);}}}return _0x2864db['trunks'];};};Realtime[_0x2514('0x3e')][_0x2514('0x46')]=function(){var _0x30d3d2=this;return function(_0x4fcdaa){if(_0x4fcdaa){freeIsNotKey(_0x4fcdaa,_0x30d3d2[_0x2514('0x15')],'name');for(var _0x485181=0x0,_0x4ae3cd={},_0x2fde1c={};_0x485181<_0x4fcdaa[_0x2514('0x41')];_0x485181+=0x1){_0x4ae3cd=_0x4fcdaa[_0x485181];if(_[_0x2514('0x42')](_0x30d3d2['voiceQueues'][_0x4ae3cd[_0x2514('0x28')]])){_0x30d3d2[_0x2514('0x15')][_0x4ae3cd[_0x2514('0x28')]]=new VoiceQueue(_0x4ae3cd);}else{_0x30d3d2['mergeFromDatabase'](_0x30d3d2['voiceQueues'][_0x4ae3cd[_0x2514('0x28')]],_0x4ae3cd);}}}return _0x30d3d2[_0x2514('0x15')];};};Realtime[_0x2514('0x3e')]['initTriggers']=function(){var _0x23aae6=this;return function(_0x2f1f75){if(_0x2f1f75){freeIsNotKey(_0x2f1f75,_0x23aae6[_0x2514('0x16')],'id');for(var _0x8a8e4=0x0,_0x5f5ceb={},_0x50e668={};_0x8a8e4<_0x2f1f75[_0x2514('0x41')];_0x8a8e4+=0x1){_0x5f5ceb=_0x2f1f75[_0x8a8e4];if(_['isUndefined'](_0x23aae6[_0x2514('0x16')][_0x5f5ceb['id']])){_0x23aae6[_0x2514('0x16')][_0x5f5ceb['id']]=new Trigger(_0x5f5ceb);}else{_0x23aae6[_0x2514('0x3f')](_0x23aae6[_0x2514('0x16')][_0x5f5ceb['id']],_0x5f5ceb);}}}return _0x23aae6[_0x2514('0x16')];};};Realtime[_0x2514('0x3e')][_0x2514('0x47')]=function(){var _0x2594ef=this;return function(_0x26cdcf){if(_0x26cdcf){freeIsNotKey(_0x26cdcf,_0x2594ef[_0x2514('0x48')],'id');for(var _0x55b7f4=0x0,_0x22799d={},_0x44785c={};_0x55b7f4<_0x26cdcf['length'];_0x55b7f4+=0x1){_0x22799d=_0x26cdcf[_0x55b7f4];if(_[_0x2514('0x42')](_0x2594ef[_0x2514('0x48')][_0x22799d['id']])){_0x2594ef[_0x2514('0x48')][_0x22799d['id']]=new Template(_0x22799d);}else{_0x2594ef[_0x2514('0x3f')](_0x2594ef[_0x2514('0x48')][_0x22799d['id']],_0x22799d);}}}return _0x2594ef[_0x2514('0x48')];};};Realtime[_0x2514('0x3e')][_0x2514('0x49')]=function(){var _0x441258=this;return function(_0x22081e){if(_0x22081e){freeIsNotKey(_0x22081e,_0x441258[_0x2514('0x4a')],'id');for(var _0x23e69e=0x0,_0x17d37b={},_0x141011={};_0x23e69e<_0x22081e[_0x2514('0x41')];_0x23e69e+=0x1){_0x17d37b=_0x22081e[_0x23e69e];if(_[_0x2514('0x42')](_0x441258[_0x2514('0x4a')][_0x17d37b['id']])){_0x441258[_0x2514('0x4a')][_0x17d37b['id']]=new ZendeskAccount(_0x17d37b);}else{_0x441258[_0x2514('0x3f')](_0x441258['zendeskAccounts'][_0x17d37b['id']],_0x17d37b);}}}return _0x441258[_0x2514('0x4a')];};};Realtime[_0x2514('0x3e')]['initSalesforceAccounts']=function(){var _0x1fb546=this;return function(_0x40603d){if(_0x40603d){freeIsNotKey(_0x40603d,_0x1fb546[_0x2514('0x4b')],'id');for(var _0x45e340=0x0,_0x1a88b2={},_0x3f57fb={};_0x45e340<_0x40603d[_0x2514('0x41')];_0x45e340+=0x1){_0x1a88b2=_0x40603d[_0x45e340];if(_['isUndefined'](_0x1fb546['salesforceAccounts'][_0x1a88b2['id']])){_0x1fb546[_0x2514('0x4b')][_0x1a88b2['id']]=new SalesforceAccount(_0x1a88b2);}else{_0x1fb546[_0x2514('0x3f')](_0x1fb546[_0x2514('0x4b')][_0x1a88b2['id']],_0x1a88b2);}}}return _0x1fb546[_0x2514('0x4b')];};};Realtime[_0x2514('0x3e')]['initFreshdeskAccounts']=function(){var _0x527e54=this;return function(_0xaae8d3){if(_0xaae8d3){freeIsNotKey(_0xaae8d3,_0x527e54['freshdeskAccounts'],'id');for(var _0x4b28e0=0x0,_0x5d9a1d={},_0x34a839={};_0x4b28e0<_0xaae8d3[_0x2514('0x41')];_0x4b28e0+=0x1){_0x5d9a1d=_0xaae8d3[_0x4b28e0];if(_[_0x2514('0x42')](_0x527e54[_0x2514('0x1e')][_0x5d9a1d['id']])){_0x527e54[_0x2514('0x1e')][_0x5d9a1d['id']]=new FreshdeskAccount(_0x5d9a1d);}else{_0x527e54[_0x2514('0x3f')](_0x527e54[_0x2514('0x1e')][_0x5d9a1d['id']],_0x5d9a1d);}}}return _0x527e54['freshdeskAccounts'];};};Realtime['prototype'][_0x2514('0x4c')]=function(){var _0x52f9e9=this;return function(_0x447ab5){if(_0x447ab5){freeIsNotKey(_0x447ab5,_0x52f9e9[_0x2514('0x1f')],'id');for(var _0x41adcc=0x0,_0x1b6528={},_0x5a15f4={};_0x41adcc<_0x447ab5[_0x2514('0x41')];_0x41adcc+=0x1){_0x1b6528=_0x447ab5[_0x41adcc];if(_[_0x2514('0x42')](_0x52f9e9[_0x2514('0x1f')][_0x1b6528['id']])){_0x52f9e9[_0x2514('0x1f')][_0x1b6528['id']]=new ZohoAccount(_0x1b6528);}else{_0x52f9e9[_0x2514('0x3f')](_0x52f9e9[_0x2514('0x1f')][_0x1b6528['id']],_0x1b6528);}}}return _0x52f9e9['zohoAccounts'];};};Realtime[_0x2514('0x3e')][_0x2514('0x4d')]=function(){var _0x10eb56=this;return function(_0xfadf22){if(_0xfadf22){freeIsNotKey(_0xfadf22,_0x10eb56['deskAccounts'],'id');for(var _0x3386f4=0x0,_0x3da7d6={},_0xb76df={};_0x3386f4<_0xfadf22[_0x2514('0x41')];_0x3386f4+=0x1){_0x3da7d6=_0xfadf22[_0x3386f4];if(_[_0x2514('0x42')](_0x10eb56[_0x2514('0x20')][_0x3da7d6['id']])){_0x10eb56[_0x2514('0x20')][_0x3da7d6['id']]=new DeskAccount(_0x3da7d6);}else{_0x10eb56[_0x2514('0x3f')](_0x10eb56['deskAccounts'][_0x3da7d6['id']],_0x3da7d6);}}}return _0x10eb56[_0x2514('0x20')];};};Realtime[_0x2514('0x3e')][_0x2514('0x4e')]=function(){var _0x1ae8c5=this;return function(_0x4c5884){if(_0x4c5884){freeIsNotKey(_0x4c5884,_0x1ae8c5[_0x2514('0x1d')],'id');for(var _0x192eab=0x0,_0x28281a={},_0x543886={};_0x192eab<_0x4c5884['length'];_0x192eab+=0x1){_0x28281a=_0x4c5884[_0x192eab];if(_[_0x2514('0x42')](_0x1ae8c5[_0x2514('0x1d')][_0x28281a['id']])){_0x1ae8c5[_0x2514('0x1d')][_0x28281a['id']]=new SugarcrmAccount(_0x28281a);}else{_0x1ae8c5[_0x2514('0x3f')](_0x1ae8c5['sugarcrmAccounts'][_0x28281a['id']],_0x28281a);}}}return _0x1ae8c5[_0x2514('0x1d')];};};Realtime[_0x2514('0x3e')][_0x2514('0x4f')]=function(){var _0x508370=this;return function(_0x239210){if(_0x239210){freeIsNotKey(_0x239210,_0x508370[_0x2514('0x21')],'id');for(var _0x253977=0x0,_0x1fb722={},_0x183ce4={};_0x253977<_0x239210[_0x2514('0x41')];_0x253977+=0x1){_0x1fb722=_0x239210[_0x253977];if(_[_0x2514('0x42')](_0x508370['vtigerAccounts'][_0x1fb722['id']])){_0x508370[_0x2514('0x21')][_0x1fb722['id']]=new VtigerAccount(_0x1fb722);}else{_0x508370[_0x2514('0x3f')](_0x508370[_0x2514('0x21')][_0x1fb722['id']],_0x1fb722);}}}return _0x508370[_0x2514('0x21')];};};Realtime[_0x2514('0x3e')][_0x2514('0x50')]=function(){var _0x2c02b1=this;return function(_0x4b9a3e){if(_0x4b9a3e){freeIsNotKey(_0x4b9a3e,_0x2c02b1[_0x2514('0x22')],'id');for(var _0x42487d=0x0,_0x44f8d3={},_0x25a268={};_0x42487d<_0x4b9a3e['length'];_0x42487d+=0x1){_0x44f8d3=_0x4b9a3e[_0x42487d];if(_[_0x2514('0x42')](_0x2c02b1[_0x2514('0x22')][_0x44f8d3['id']])){_0x2c02b1[_0x2514('0x22')][_0x44f8d3['id']]=new ServicenowAccount(_0x44f8d3);}else{_0x2c02b1[_0x2514('0x3f')](_0x2c02b1[_0x2514('0x22')][_0x44f8d3['id']],_0x44f8d3);}}}return _0x2c02b1[_0x2514('0x22')];};};Realtime[_0x2514('0x3e')][_0x2514('0x51')]=function(){var _0x33ceab=this;return function(_0x48aace){if(_0x48aace){freeIsNotKey(_0x48aace,_0x33ceab[_0x2514('0x23')],'id');for(var _0x31ac1f=0x0,_0x282cb9={},_0x5ebd89={};_0x31ac1f<_0x48aace[_0x2514('0x41')];_0x31ac1f+=0x1){_0x282cb9=_0x48aace[_0x31ac1f];if(_['isUndefined'](_0x33ceab[_0x2514('0x23')][_0x282cb9['id']])){_0x33ceab[_0x2514('0x23')][_0x282cb9['id']]=new Dynamics365Account(_0x282cb9);}else{_0x33ceab[_0x2514('0x3f')](_0x33ceab[_0x2514('0x23')][_0x282cb9['id']],_0x282cb9);}}}return _0x33ceab['dynamics365Accounts'];};};Realtime[_0x2514('0x3e')]['initFreshsalesAccounts']=function(){var _0x311187=this;return function(_0x11237){if(_0x11237){freeIsNotKey(_0x11237,_0x311187['freshsalesAccounts'],'id');for(var _0x3dcdbb=0x0,_0x3e1b3b={},_0x542535={};_0x3dcdbb<_0x11237[_0x2514('0x41')];_0x3dcdbb+=0x1){_0x3e1b3b=_0x11237[_0x3dcdbb];if(_[_0x2514('0x42')](_0x311187[_0x2514('0x52')][_0x3e1b3b['id']])){_0x311187[_0x2514('0x52')][_0x3e1b3b['id']]=new FreshsalesAccount(_0x3e1b3b);}else{_0x311187[_0x2514('0x3f')](_0x311187[_0x2514('0x52')][_0x3e1b3b['id']],_0x3e1b3b);}}}return _0x311187[_0x2514('0x52')];};};Realtime['prototype']['initVoiceQueueHopperHistory']=function(){var _0x169803=this;return function(_0x2ecf10){for(var _0x31215c=0x0;_0x31215c<_0x2ecf10[_0x2514('0x41')];_0x31215c+=0x1){_[_0x2514('0x53')](_0x169803[_0x2514('0x15')][_0x2ecf10[_0x31215c]['name']],_0x2ecf10[_0x31215c]);}return _0x169803[_0x2514('0x15')];};};Realtime[_0x2514('0x3e')][_0x2514('0x54')]=function(){var _0x11905b=this;return function(_0x241b82){clearVoiceQueues(_0x11905b[_0x2514('0x15')]);if(_0x241b82){_0x241b82=_[_0x2514('0x55')](_0x241b82,_0x2514('0x56'));for(var _0xefc4c6 in _0x241b82){if(_0x241b82[_0x2514('0x26')](_0xefc4c6)){var _0x162046={};for(var _0x1895b4=0x0;_0x1895b4<_0x241b82[_0xefc4c6]['length'];_0x1895b4+=0x1){var _0x38b2bb=_0x241b82[_0xefc4c6][_0x1895b4][_0x2514('0x57')];if(_0x11905b[_0x2514('0x15')][_0x38b2bb]){if(_0x241b82[_0xefc4c6][_0x1895b4]['queuecallerexit']){_0x11905b[_0x2514('0x15')][_0x38b2bb][_0x2514('0x30')]+=0x1;}if(_0x241b82[_0xefc4c6][_0x1895b4][_0x2514('0x58')]){_0x11905b[_0x2514('0x15')][_0x38b2bb][_0x2514('0x31')]+=0x1;}_0x11905b[_0x2514('0x15')][_0x38b2bb][_0x2514('0x32')]+=moment(_0x241b82[_0xefc4c6][_0x1895b4][_0x2514('0x59')])['diff'](moment(_0x241b82[_0xefc4c6][_0x1895b4]['queuecallerjoinAt']),_0x2514('0x5a'))||0x0;if(_0x1895b4===_0x241b82[_0xefc4c6][_0x2514('0x41')]-0x1){_0x11905b[_0x2514('0x15')][_0x38b2bb][_0x2514('0x33')]+=moment(_0x241b82[_0xefc4c6][_0x1895b4][_0x2514('0x5b')]||_0x241b82[_0xefc4c6][_0x1895b4][_0x2514('0x5c')]||_0x241b82[_0xefc4c6][_0x1895b4]['queuecallerexitAt'])[_0x2514('0x5d')](moment(_0x241b82[_0xefc4c6][_0x1895b4][_0x2514('0x5e')]),_0x2514('0x5a'))||0x0;_0x11905b['voiceQueues'][_0x38b2bb][_0x2514('0x2b')]+=0x1;if(_0x241b82[_0xefc4c6][_0x1895b4][_0x2514('0x5f')]){_0x11905b[_0x2514('0x15')][_0x38b2bb][_0x2514('0x2c')]+=0x1;_0x11905b['voiceQueues'][_0x38b2bb][_0x2514('0x2d')]+=moment(_0x241b82[_0xefc4c6][_0x1895b4]['queuecallercompleteAt'])['diff'](moment(_0x241b82[_0xefc4c6][_0x1895b4][_0x2514('0x59')]),_0x2514('0x5a'))||0x0;}}else{_0x11905b['voiceQueues'][_0x38b2bb][_0x2514('0x33')]+=_0x11905b[_0x2514('0x15')][_0x38b2bb][_0x2514('0x32')]||0x0;}}}}}}return _0x11905b[_0x2514('0x15')];};};Realtime[_0x2514('0x3e')]['initVoiceCallReports']=function(){var _0x285431=this;return function(_0x3d9f52){clearVoiceCallReports(_0x285431[_0x2514('0x18')]);if(_0x3d9f52){for(var _0x265d41=0x0;_0x265d41<_0x3d9f52[_0x2514('0x41')];_0x265d41+=0x1){_0x285431[_0x2514('0x18')][_0x2514('0x2b')]+=0x1;_0x285431[_0x2514('0x18')][_0x2514('0x33')]+=_0x3d9f52[_0x265d41][_0x2514('0x60')];if(_0x3d9f52[_0x265d41][_0x2514('0x61')]===_0x2514('0x62')){_0x285431[_0x2514('0x18')][_0x2514('0x2c')]+=0x1;_0x285431['outbound'][_0x2514('0x32')]+=_0x3d9f52[_0x265d41]['duration']-_0x3d9f52[_0x265d41][_0x2514('0x63')]||0x0;_0x285431[_0x2514('0x18')][_0x2514('0x2d')]+=_0x3d9f52[_0x265d41]['billableseconds'];}}}return _0x285431[_0x2514('0x18')];};};Realtime[_0x2514('0x3e')]['initCampaigns']=function(){var _0x3c118d=this;return function(_0xf0bf13){if(_0xf0bf13){freeIsNotKey(_0xf0bf13,_0x3c118d[_0x2514('0x17')],_0x2514('0x28'));for(var _0xad0498=0x0,_0x562087={};_0xad0498<_0xf0bf13[_0x2514('0x41')];_0xad0498+=0x1){_0x562087=_0xf0bf13[_0xad0498];if(_['isUndefined'](_0x3c118d[_0x2514('0x17')][_0x562087[_0x2514('0x28')]])){_0x3c118d[_0x2514('0x17')][_0x562087[_0x2514('0x28')]]=new Campaign(_0x562087);}else{_0x3c118d[_0x2514('0x3f')](_0x3c118d[_0x2514('0x17')][_0x562087['name']],_0x562087);_0x3c118d['campaigns'][_0x562087[_0x2514('0x28')]][_0x2514('0x64')]=_0x562087[_0x2514('0x65')]?_0x562087['SquareProject'][_0x2514('0x28')]:undefined;}}}return _0x3c118d[_0x2514('0x17')];};};Realtime[_0x2514('0x3e')]['initVoiceExtensions']=function(){var _0x446b75=this;return function(_0x565b55){if(_0x565b55){freeIsNotKey(_0x565b55,_0x446b75['voiceExtensions'],'id');for(var _0xf63410=0x0,_0x1e0788={};_0xf63410<_0x565b55[_0x2514('0x41')];_0xf63410+=0x1){_0x1e0788=_0x565b55[_0xf63410];if(_[_0x2514('0x42')](_0x446b75[_0x2514('0x19')][_0x1e0788['id']])){_0x446b75[_0x2514('0x19')][_0x1e0788['id']]=new VoiceExtension(_0x1e0788);}else{_0x446b75['mergeFromDatabase'](_0x446b75[_0x2514('0x19')][_0x1e0788['id']],_0x1e0788);}}}return _0x446b75[_0x2514('0x19')];};};Realtime[_0x2514('0x3e')][_0x2514('0x66')]=function(){var _0x356cc2=this;return function(_0x16b420){clearCampaigns(_0x356cc2[_0x2514('0x17')]);for(var _0x22e067=0x0;_0x22e067<_0x16b420[_0x2514('0x41')];_0x22e067+=0x1){_[_0x2514('0x53')](_0x356cc2[_0x2514('0x17')][_0x16b420[_0x22e067][_0x2514('0x28')]],_0x16b420[_0x22e067]);}return _0x356cc2['campaigns'];};};Realtime[_0x2514('0x3e')][_0x2514('0x67')]=function(){var _0x3a52be=this;return function(_0xdb1e94){if(_0xdb1e94){freeIsNotKey(_0xdb1e94,_0x3a52be[_0x2514('0x24')],'id');for(var _0x754810=0x0,_0x4471a5={},_0x38dc60={};_0x754810<_0xdb1e94['length'];_0x754810+=0x1){_0x4471a5=_0xdb1e94[_0x754810];if(_[_0x2514('0x42')](_0x3a52be[_0x2514('0x24')][_0x4471a5['id']])){_0x3a52be[_0x2514('0x24')][_0x4471a5['id']]=new FaxAccount(_0x4471a5);}else{_0x3a52be['mergeFromDatabase'](_0x3a52be[_0x2514('0x24')][_0x4471a5['id']],_0x4471a5);}}}return _0x3a52be['faxAccounts'];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x083b=['outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','isNil','isUndefined','initTelephones','initTrunks','initVoiceQueues','voiceQueues','initTriggers','triggers','initTemplates','initZendeskAccounts','zohoAccounts','initDeskAccounts','deskAccounts','initSugarcrmAccounts','vtigerAccounts','servicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','unmanaged','queuecallerabandon','abandoned','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerexitAt','queuecallercomplete','duration','billableseconds','initCampaigns','SquareProject','initVoiceExtensions','initFaxAccounts','bluebird','util','moment','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','agents','telephones','trunks','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','interface','total','answered','sumDuration','ivrTotalCallsDays','ivrAnswerCallsDay','isEmpty','sumHoldTime','sumBillable','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay'];(function(_0x4ed1d,_0x170a36){var _0x2d0a69=function(_0x58272e){while(--_0x58272e){_0x4ed1d['push'](_0x4ed1d['shift']());}};_0x2d0a69(++_0x170a36);}(_0x083b,0xa1));var _0xb083=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0x083b[_0x173d7e];return _0x2220d6;};'use strict';var BPromise=require(_0xb083('0x0'));var util=require(_0xb083('0x1'));var _=require('lodash');var moment=require(_0xb083('0x2'));var Agent=require('../model/agent');var Telephone=require(_0xb083('0x3'));var Trunk=require(_0xb083('0x4'));var VoiceQueue=require(_0xb083('0x5'));var Trigger=require(_0xb083('0x6'));var Template=require(_0xb083('0x7'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0xb083('0x8'));var ZendeskAccount=require(_0xb083('0x9'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require(_0xb083('0xa'));var SugarcrmAccount=require(_0xb083('0xb'));var ZohoAccount=require(_0xb083('0xc'));var DeskAccount=require(_0xb083('0xd'));var VtigerAccount=require(_0xb083('0xe'));var ServicenowAccount=require(_0xb083('0xf'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0xb083('0x10'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0xb083('0x11')]={};this[_0xb083('0x12')]={};this[_0xb083('0x13')]={};this['voiceQueues']={};this['triggers']={};this[_0xb083('0x14')]={};this[_0xb083('0x15')]={};this[_0xb083('0x16')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xb083('0x17')]={};this[_0xb083('0x18')]={};this[_0xb083('0x19')]={};this[_0xb083('0x1a')]={};this[_0xb083('0x1b')]={};this[_0xb083('0x1c')]={};this[_0xb083('0x1d')]={};this[_0xb083('0x1e')]={};this[_0xb083('0x1f')]={};this[_0xb083('0x20')]={};this['zohoAccounts']={};this['deskAccounts']={};this['vtigerAccounts']={};this['servicenowAccounts']={};this[_0xb083('0x21')]={};this[_0xb083('0x22')]={};this[_0xb083('0x23')]={};};function freeIsNotKey(_0xfd5070,_0x16339f,_0x748672){var _0x4c5308=_[_0xb083('0x24')](_0xfd5070,function(_0x55df3d,_0x5c5432){return _0x55df3d[_0x748672];});for(var _0x1b0d97 in _0x16339f){if(_0x16339f[_0xb083('0x25')](_0x1b0d97)){if(!_0x4c5308[_0x1b0d97]){delete _0x16339f[_0x1b0d97];}}}}function freeIsNotKeySip(_0x3090e1,_0x33f9a5){var _0x550cc6=_['mapKeys'](_0x3090e1,function(_0x16cf29,_0x4627c5){return util[_0xb083('0x26')](_0xb083('0x27'),_0x16cf29[_0xb083('0x28')]);});for(var _0x237df0 in _0x33f9a5){if(_0x33f9a5['hasOwnProperty'](_0x237df0)){if(!_0x550cc6[_0x237df0]){delete _0x33f9a5[_0x237df0];}}}}function freeIsNotKeyAgent(_0x5ad5e1,_0x1bb612){var _0xa243be=_[_0xb083('0x24')](_0x5ad5e1,function(_0xaca960,_0x2950e9){var _0x19fdeb=_['isNil'](_0xaca960[_0xb083('0x29')])?util[_0xb083('0x26')](_0xb083('0x27'),_0xaca960['name']):_0xaca960[_0xb083('0x29')];return _0x19fdeb;});for(var _0x70e2c2 in _0x1bb612){if(_0x1bb612[_0xb083('0x25')](_0x70e2c2)){if(!_0xa243be[_0x70e2c2]){delete _0x1bb612[_0x70e2c2];}}}}function clearVoiceCallReports(_0x3a120c){_0x3a120c[_0xb083('0x2a')]=0x0;_0x3a120c[_0xb083('0x2b')]=0x0;_0x3a120c['sumHoldTime']=0x0;_0x3a120c[_0xb083('0x2c')]=0x0;_0x3a120c['sumBillable']=0x0;}function clearCampaigns(_0x172998){if(!_['isEmpty'](_0x172998)){for(var _0x51c2f2 in _0x172998){if(_0x172998['hasOwnProperty'](_0x51c2f2)){_0x172998[_0x51c2f2][_0xb083('0x2d')]=0x0;_0x172998[_0x51c2f2][_0xb083('0x2e')]=0x0;}}}}function clearVoiceQueues(_0x47c153){if(!_[_0xb083('0x2f')](_0x47c153)){for(var _0x285aa6 in _0x47c153){if(_0x47c153['hasOwnProperty'](_0x285aa6)){_0x47c153[_0x285aa6][_0xb083('0x2a')]=0x0;_0x47c153[_0x285aa6]['answered']=0x0;_0x47c153[_0x285aa6]['unmanaged']=0x0;_0x47c153[_0x285aa6]['abandoned']=0x0;_0x47c153[_0x285aa6][_0xb083('0x30')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x2c')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x31')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x32')]=0x0;_0x47c153[_0x285aa6]['outboundNoAnswerCallsDay']=0x0;_0x47c153[_0x285aa6][_0xb083('0x33')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x34')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x35')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x36')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x37')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x38')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x39')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x3a')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x3b')]=0x0;_0x47c153[_0x285aa6]['outboundReCallsDay']=0x0;_0x47c153[_0x285aa6][_0xb083('0x32')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x3c')]=0x0;_0x47c153[_0x285aa6][_0xb083('0x3d')]=!![];}}}}Realtime[_0xb083('0x3e')][_0xb083('0x3f')]=function(_0x50db0a,_0x251de7){for(var _0x3b0f20 in _0x251de7){if(_0x50db0a[_0xb083('0x25')](_0x3b0f20)){_0x50db0a[_0x3b0f20]=_0x251de7[_0x3b0f20];}}};Realtime[_0xb083('0x3e')][_0xb083('0x40')]=function(){var _0x53abcb=this;return function(_0x52d172){if(_0x52d172){freeIsNotKeyAgent(_0x52d172,_0x53abcb['agents']);for(var _0x1f7ef3=0x0,_0x1ef090={},_0x5764c3={};_0x1f7ef3<_0x52d172[_0xb083('0x41')];_0x1f7ef3+=0x1){_0x1ef090=_0x52d172[_0x1f7ef3];var _0x2c4a08=_[_0xb083('0x42')](_0x1ef090[_0xb083('0x29')])?util[_0xb083('0x26')](_0xb083('0x27'),_0x1ef090[_0xb083('0x28')]):_0x1ef090[_0xb083('0x29')];if(_[_0xb083('0x43')](_0x53abcb['agents'][_0x2c4a08])){_0x53abcb[_0xb083('0x11')][_0x2c4a08]=new Agent(_0x1ef090);}else{_0x53abcb['mergeFromDatabase'](_0x53abcb[_0xb083('0x11')][_0x2c4a08],_0x1ef090);}}}return _0x53abcb['agents'];};};Realtime[_0xb083('0x3e')][_0xb083('0x44')]=function(){var _0x2fe0d7=this;return function(_0x31845a){if(_0x31845a){freeIsNotKeySip(_0x31845a,_0x2fe0d7[_0xb083('0x12')]);for(var _0x5db3c2=0x0,_0x353c11={},_0x29c39c={};_0x5db3c2<_0x31845a[_0xb083('0x41')];_0x5db3c2+=0x1){_0x353c11=_0x31845a[_0x5db3c2];if(_['isUndefined'](_0x2fe0d7['telephones'][util[_0xb083('0x26')](_0xb083('0x27'),_0x353c11[_0xb083('0x28')])])){_0x2fe0d7[_0xb083('0x12')][util[_0xb083('0x26')](_0xb083('0x27'),_0x353c11[_0xb083('0x28')])]=new Telephone(_0x353c11);}else{_0x2fe0d7[_0xb083('0x3f')](_0x2fe0d7[_0xb083('0x12')][util[_0xb083('0x26')](_0xb083('0x27'),_0x353c11['name'])],_0x353c11);}}}return _0x2fe0d7[_0xb083('0x12')];};};Realtime[_0xb083('0x3e')][_0xb083('0x45')]=function(){var _0x3bfbf9=this;return function(_0x101f88){if(_0x101f88){freeIsNotKeySip(_0x101f88,_0x3bfbf9[_0xb083('0x13')]);for(var _0x4fb602=0x0,_0x394e57={},_0x107218={};_0x4fb602<_0x101f88[_0xb083('0x41')];_0x4fb602+=0x1){_0x394e57=_0x101f88[_0x4fb602];if(_[_0xb083('0x43')](_0x3bfbf9[_0xb083('0x13')][util['format'](_0xb083('0x27'),_0x394e57['name'])])){_0x3bfbf9[_0xb083('0x13')][util[_0xb083('0x26')](_0xb083('0x27'),_0x394e57['name'])]=new Trunk(_0x394e57);}else{_0x3bfbf9['mergeFromDatabase'](_0x3bfbf9[_0xb083('0x13')][util[_0xb083('0x26')](_0xb083('0x27'),_0x394e57[_0xb083('0x28')])],_0x394e57);}}}return _0x3bfbf9[_0xb083('0x13')];};};Realtime[_0xb083('0x3e')][_0xb083('0x46')]=function(){var _0x41f41b=this;return function(_0x5c1c6a){if(_0x5c1c6a){freeIsNotKey(_0x5c1c6a,_0x41f41b[_0xb083('0x47')],_0xb083('0x28'));for(var _0x4f6889=0x0,_0x254023={},_0x11cf61={};_0x4f6889<_0x5c1c6a[_0xb083('0x41')];_0x4f6889+=0x1){_0x254023=_0x5c1c6a[_0x4f6889];if(_[_0xb083('0x43')](_0x41f41b[_0xb083('0x47')][_0x254023[_0xb083('0x28')]])){_0x41f41b[_0xb083('0x47')][_0x254023[_0xb083('0x28')]]=new VoiceQueue(_0x254023);}else{_0x41f41b['mergeFromDatabase'](_0x41f41b[_0xb083('0x47')][_0x254023[_0xb083('0x28')]],_0x254023);}}}return _0x41f41b[_0xb083('0x47')];};};Realtime[_0xb083('0x3e')][_0xb083('0x48')]=function(){var _0x412293=this;return function(_0x1d7a16){if(_0x1d7a16){freeIsNotKey(_0x1d7a16,_0x412293[_0xb083('0x49')],'id');for(var _0x444506=0x0,_0x220df4={},_0x1cdbab={};_0x444506<_0x1d7a16['length'];_0x444506+=0x1){_0x220df4=_0x1d7a16[_0x444506];if(_['isUndefined'](_0x412293[_0xb083('0x49')][_0x220df4['id']])){_0x412293[_0xb083('0x49')][_0x220df4['id']]=new Trigger(_0x220df4);}else{_0x412293[_0xb083('0x3f')](_0x412293[_0xb083('0x49')][_0x220df4['id']],_0x220df4);}}}return _0x412293[_0xb083('0x49')];};};Realtime[_0xb083('0x3e')][_0xb083('0x4a')]=function(){var _0x4feefa=this;return function(_0x32e04b){if(_0x32e04b){freeIsNotKey(_0x32e04b,_0x4feefa[_0xb083('0x15')],'id');for(var _0x47dbaa=0x0,_0x15c3b9={},_0x4dae7f={};_0x47dbaa<_0x32e04b[_0xb083('0x41')];_0x47dbaa+=0x1){_0x15c3b9=_0x32e04b[_0x47dbaa];if(_[_0xb083('0x43')](_0x4feefa[_0xb083('0x15')][_0x15c3b9['id']])){_0x4feefa['templates'][_0x15c3b9['id']]=new Template(_0x15c3b9);}else{_0x4feefa['mergeFromDatabase'](_0x4feefa[_0xb083('0x15')][_0x15c3b9['id']],_0x15c3b9);}}}return _0x4feefa['templates'];};};Realtime[_0xb083('0x3e')][_0xb083('0x4b')]=function(){var _0x4072fd=this;return function(_0xb7422b){if(_0xb7422b){freeIsNotKey(_0xb7422b,_0x4072fd[_0xb083('0x1d')],'id');for(var _0x751533=0x0,_0x111fe0={},_0x66f3e7={};_0x751533<_0xb7422b[_0xb083('0x41')];_0x751533+=0x1){_0x111fe0=_0xb7422b[_0x751533];if(_[_0xb083('0x43')](_0x4072fd[_0xb083('0x1d')][_0x111fe0['id']])){_0x4072fd[_0xb083('0x1d')][_0x111fe0['id']]=new ZendeskAccount(_0x111fe0);}else{_0x4072fd['mergeFromDatabase'](_0x4072fd[_0xb083('0x1d')][_0x111fe0['id']],_0x111fe0);}}}return _0x4072fd[_0xb083('0x1d')];};};Realtime[_0xb083('0x3e')]['initSalesforceAccounts']=function(){var _0x9f1b30=this;return function(_0x15c791){if(_0x15c791){freeIsNotKey(_0x15c791,_0x9f1b30[_0xb083('0x1e')],'id');for(var _0x448f32=0x0,_0x38804c={},_0x209f5f={};_0x448f32<_0x15c791[_0xb083('0x41')];_0x448f32+=0x1){_0x38804c=_0x15c791[_0x448f32];if(_[_0xb083('0x43')](_0x9f1b30['salesforceAccounts'][_0x38804c['id']])){_0x9f1b30['salesforceAccounts'][_0x38804c['id']]=new SalesforceAccount(_0x38804c);}else{_0x9f1b30[_0xb083('0x3f')](_0x9f1b30[_0xb083('0x1e')][_0x38804c['id']],_0x38804c);}}}return _0x9f1b30[_0xb083('0x1e')];};};Realtime[_0xb083('0x3e')]['initFreshdeskAccounts']=function(){var _0x3bf5b3=this;return function(_0x2ec6f5){if(_0x2ec6f5){freeIsNotKey(_0x2ec6f5,_0x3bf5b3['freshdeskAccounts'],'id');for(var _0xa0329b=0x0,_0x49a6d1={},_0x483321={};_0xa0329b<_0x2ec6f5[_0xb083('0x41')];_0xa0329b+=0x1){_0x49a6d1=_0x2ec6f5[_0xa0329b];if(_[_0xb083('0x43')](_0x3bf5b3[_0xb083('0x20')][_0x49a6d1['id']])){_0x3bf5b3['freshdeskAccounts'][_0x49a6d1['id']]=new FreshdeskAccount(_0x49a6d1);}else{_0x3bf5b3[_0xb083('0x3f')](_0x3bf5b3[_0xb083('0x20')][_0x49a6d1['id']],_0x49a6d1);}}}return _0x3bf5b3['freshdeskAccounts'];};};Realtime[_0xb083('0x3e')]['initZohoAccounts']=function(){var _0xbff6b1=this;return function(_0x2eb254){if(_0x2eb254){freeIsNotKey(_0x2eb254,_0xbff6b1[_0xb083('0x4c')],'id');for(var _0x3768d0=0x0,_0x54f912={},_0x10b8e0={};_0x3768d0<_0x2eb254[_0xb083('0x41')];_0x3768d0+=0x1){_0x54f912=_0x2eb254[_0x3768d0];if(_['isUndefined'](_0xbff6b1['zohoAccounts'][_0x54f912['id']])){_0xbff6b1[_0xb083('0x4c')][_0x54f912['id']]=new ZohoAccount(_0x54f912);}else{_0xbff6b1[_0xb083('0x3f')](_0xbff6b1['zohoAccounts'][_0x54f912['id']],_0x54f912);}}}return _0xbff6b1[_0xb083('0x4c')];};};Realtime['prototype'][_0xb083('0x4d')]=function(){var _0x445941=this;return function(_0x1eb25e){if(_0x1eb25e){freeIsNotKey(_0x1eb25e,_0x445941[_0xb083('0x4e')],'id');for(var _0x319eaa=0x0,_0x228e7d={},_0x59f91d={};_0x319eaa<_0x1eb25e['length'];_0x319eaa+=0x1){_0x228e7d=_0x1eb25e[_0x319eaa];if(_[_0xb083('0x43')](_0x445941[_0xb083('0x4e')][_0x228e7d['id']])){_0x445941['deskAccounts'][_0x228e7d['id']]=new DeskAccount(_0x228e7d);}else{_0x445941[_0xb083('0x3f')](_0x445941[_0xb083('0x4e')][_0x228e7d['id']],_0x228e7d);}}}return _0x445941[_0xb083('0x4e')];};};Realtime[_0xb083('0x3e')][_0xb083('0x4f')]=function(){var _0x4fdb2d=this;return function(_0x38dcde){if(_0x38dcde){freeIsNotKey(_0x38dcde,_0x4fdb2d[_0xb083('0x1f')],'id');for(var _0x384436=0x0,_0x43bf75={},_0x154eaa={};_0x384436<_0x38dcde[_0xb083('0x41')];_0x384436+=0x1){_0x43bf75=_0x38dcde[_0x384436];if(_[_0xb083('0x43')](_0x4fdb2d[_0xb083('0x1f')][_0x43bf75['id']])){_0x4fdb2d[_0xb083('0x1f')][_0x43bf75['id']]=new SugarcrmAccount(_0x43bf75);}else{_0x4fdb2d[_0xb083('0x3f')](_0x4fdb2d[_0xb083('0x1f')][_0x43bf75['id']],_0x43bf75);}}}return _0x4fdb2d[_0xb083('0x1f')];};};Realtime[_0xb083('0x3e')]['initVtigerAccounts']=function(){var _0x1bc9f4=this;return function(_0x617782){if(_0x617782){freeIsNotKey(_0x617782,_0x1bc9f4[_0xb083('0x50')],'id');for(var _0x562b99=0x0,_0x540ba0={},_0x156930={};_0x562b99<_0x617782['length'];_0x562b99+=0x1){_0x540ba0=_0x617782[_0x562b99];if(_[_0xb083('0x43')](_0x1bc9f4['vtigerAccounts'][_0x540ba0['id']])){_0x1bc9f4[_0xb083('0x50')][_0x540ba0['id']]=new VtigerAccount(_0x540ba0);}else{_0x1bc9f4[_0xb083('0x3f')](_0x1bc9f4[_0xb083('0x50')][_0x540ba0['id']],_0x540ba0);}}}return _0x1bc9f4[_0xb083('0x50')];};};Realtime[_0xb083('0x3e')]['initServicenowAccounts']=function(){var _0x4b26de=this;return function(_0xa1536f){if(_0xa1536f){freeIsNotKey(_0xa1536f,_0x4b26de[_0xb083('0x51')],'id');for(var _0x48834d=0x0,_0x253d4f={},_0x130a68={};_0x48834d<_0xa1536f['length'];_0x48834d+=0x1){_0x253d4f=_0xa1536f[_0x48834d];if(_[_0xb083('0x43')](_0x4b26de['servicenowAccounts'][_0x253d4f['id']])){_0x4b26de['servicenowAccounts'][_0x253d4f['id']]=new ServicenowAccount(_0x253d4f);}else{_0x4b26de['mergeFromDatabase'](_0x4b26de[_0xb083('0x51')][_0x253d4f['id']],_0x253d4f);}}}return _0x4b26de['servicenowAccounts'];};};Realtime[_0xb083('0x3e')][_0xb083('0x52')]=function(){var _0x3d5f5c=this;return function(_0x18b385){if(_0x18b385){freeIsNotKey(_0x18b385,_0x3d5f5c['dynamics365Accounts'],'id');for(var _0x29547b=0x0,_0x4f0b54={},_0xc3bc89={};_0x29547b<_0x18b385['length'];_0x29547b+=0x1){_0x4f0b54=_0x18b385[_0x29547b];if(_[_0xb083('0x43')](_0x3d5f5c[_0xb083('0x21')][_0x4f0b54['id']])){_0x3d5f5c['dynamics365Accounts'][_0x4f0b54['id']]=new Dynamics365Account(_0x4f0b54);}else{_0x3d5f5c[_0xb083('0x3f')](_0x3d5f5c['dynamics365Accounts'][_0x4f0b54['id']],_0x4f0b54);}}}return _0x3d5f5c[_0xb083('0x21')];};};Realtime['prototype'][_0xb083('0x53')]=function(){var _0x3cb6f5=this;return function(_0x366cba){if(_0x366cba){freeIsNotKey(_0x366cba,_0x3cb6f5['freshsalesAccounts'],'id');for(var _0x22ecfb=0x0,_0x1bfcd2={},_0x42933e={};_0x22ecfb<_0x366cba[_0xb083('0x41')];_0x22ecfb+=0x1){_0x1bfcd2=_0x366cba[_0x22ecfb];if(_[_0xb083('0x43')](_0x3cb6f5[_0xb083('0x22')][_0x1bfcd2['id']])){_0x3cb6f5[_0xb083('0x22')][_0x1bfcd2['id']]=new FreshsalesAccount(_0x1bfcd2);}else{_0x3cb6f5['mergeFromDatabase'](_0x3cb6f5[_0xb083('0x22')][_0x1bfcd2['id']],_0x1bfcd2);}}}return _0x3cb6f5['freshsalesAccounts'];};};Realtime['prototype'][_0xb083('0x54')]=function(){var _0x54e6b0=this;return function(_0x116bff){for(var _0x4ef3ba=0x0;_0x4ef3ba<_0x116bff[_0xb083('0x41')];_0x4ef3ba+=0x1){_[_0xb083('0x55')](_0x54e6b0[_0xb083('0x47')][_0x116bff[_0x4ef3ba][_0xb083('0x28')]],_0x116bff[_0x4ef3ba]);}return _0x54e6b0[_0xb083('0x47')];};};Realtime['prototype'][_0xb083('0x56')]=function(){var _0x5a030c=this;return function(_0x1d4506){clearVoiceQueues(_0x5a030c['voiceQueues']);if(_0x1d4506){_0x1d4506=_[_0xb083('0x57')](_0x1d4506,_0xb083('0x58'));for(var _0xee311f in _0x1d4506){if(_0x1d4506['hasOwnProperty'](_0xee311f)){var _0x2f9742={};for(var _0x572382=0x0;_0x572382<_0x1d4506[_0xee311f][_0xb083('0x41')];_0x572382+=0x1){var _0x5baa81=_0x1d4506[_0xee311f][_0x572382][_0xb083('0x59')];if(_0x5a030c[_0xb083('0x47')][_0x5baa81]){if(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x5a')]){_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x5b')]+=0x1;}if(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x5c')]){_0x5a030c['voiceQueues'][_0x5baa81][_0xb083('0x5d')]+=0x1;}_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x30')]+=moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x5e')])[_0xb083('0x5f')](moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x60')]),_0xb083('0x61'))||0x0;if(_0x572382===_0x1d4506[_0xee311f][_0xb083('0x41')]-0x1){_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x2c')]+=moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x62')]||_0x1d4506[_0xee311f][_0x572382]['queuecallerabandonAt']||_0x1d4506[_0xee311f][_0x572382][_0xb083('0x63')])[_0xb083('0x5f')](moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x60')]),_0xb083('0x61'))||0x0;_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x2a')]+=0x1;if(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x64')]){_0x5a030c['voiceQueues'][_0x5baa81][_0xb083('0x2b')]+=0x1;_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x31')]+=moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x62')])['diff'](moment(_0x1d4506[_0xee311f][_0x572382][_0xb083('0x5e')]),'seconds')||0x0;}}else{_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x2c')]+=_0x5a030c[_0xb083('0x47')][_0x5baa81][_0xb083('0x30')]||0x0;}}}}}}return _0x5a030c[_0xb083('0x47')];};};Realtime['prototype']['initVoiceCallReports']=function(){var _0x557feb=this;return function(_0x3df2e8){clearVoiceCallReports(_0x557feb['outbound']);if(_0x3df2e8){for(var _0x4d6617=0x0;_0x4d6617<_0x3df2e8[_0xb083('0x41')];_0x4d6617+=0x1){_0x557feb[_0xb083('0x16')][_0xb083('0x2a')]+=0x1;_0x557feb[_0xb083('0x16')][_0xb083('0x2c')]+=_0x3df2e8[_0x4d6617][_0xb083('0x65')];if(_0x3df2e8[_0x4d6617]['disposition']==='ANSWERED'){_0x557feb['outbound'][_0xb083('0x2b')]+=0x1;_0x557feb[_0xb083('0x16')][_0xb083('0x30')]+=_0x3df2e8[_0x4d6617][_0xb083('0x65')]-_0x3df2e8[_0x4d6617]['billableseconds']||0x0;_0x557feb[_0xb083('0x16')]['sumBillable']+=_0x3df2e8[_0x4d6617][_0xb083('0x66')];}}}return _0x557feb[_0xb083('0x16')];};};Realtime[_0xb083('0x3e')][_0xb083('0x67')]=function(){var _0x58377a=this;return function(_0xd537e9){if(_0xd537e9){freeIsNotKey(_0xd537e9,_0x58377a[_0xb083('0x14')],_0xb083('0x28'));for(var _0x444d1e=0x0,_0x1d58ea={};_0x444d1e<_0xd537e9[_0xb083('0x41')];_0x444d1e+=0x1){_0x1d58ea=_0xd537e9[_0x444d1e];if(_[_0xb083('0x43')](_0x58377a[_0xb083('0x14')][_0x1d58ea[_0xb083('0x28')]])){_0x58377a[_0xb083('0x14')][_0x1d58ea['name']]=new Campaign(_0x1d58ea);}else{_0x58377a[_0xb083('0x3f')](_0x58377a[_0xb083('0x14')][_0x1d58ea[_0xb083('0x28')]],_0x1d58ea);_0x58377a[_0xb083('0x14')][_0x1d58ea[_0xb083('0x28')]]['dialQueueProject']=_0x1d58ea[_0xb083('0x68')]?_0x1d58ea[_0xb083('0x68')][_0xb083('0x28')]:undefined;}}}return _0x58377a[_0xb083('0x14')];};};Realtime[_0xb083('0x3e')][_0xb083('0x69')]=function(){var _0x592dca=this;return function(_0x4a7862){if(_0x4a7862){freeIsNotKey(_0x4a7862,_0x592dca[_0xb083('0x17')],'id');for(var _0x374fb8=0x0,_0x1582df={};_0x374fb8<_0x4a7862[_0xb083('0x41')];_0x374fb8+=0x1){_0x1582df=_0x4a7862[_0x374fb8];if(_[_0xb083('0x43')](_0x592dca[_0xb083('0x17')][_0x1582df['id']])){_0x592dca[_0xb083('0x17')][_0x1582df['id']]=new VoiceExtension(_0x1582df);}else{_0x592dca[_0xb083('0x3f')](_0x592dca[_0xb083('0x17')][_0x1582df['id']],_0x1582df);}}}return _0x592dca['voiceExtensions'];};};Realtime[_0xb083('0x3e')]['initCampaignHopperHistory']=function(){var _0x19f1c5=this;return function(_0x3faf7e){clearCampaigns(_0x19f1c5[_0xb083('0x14')]);for(var _0xa90285=0x0;_0xa90285<_0x3faf7e[_0xb083('0x41')];_0xa90285+=0x1){_[_0xb083('0x55')](_0x19f1c5[_0xb083('0x14')][_0x3faf7e[_0xa90285]['name']],_0x3faf7e[_0xa90285]);}return _0x19f1c5[_0xb083('0x14')];};};Realtime['prototype'][_0xb083('0x6a')]=function(){var _0x4243b2=this;return function(_0x3cd06a){if(_0x3cd06a){freeIsNotKey(_0x3cd06a,_0x4243b2[_0xb083('0x23')],'id');for(var _0x5939ae=0x0,_0x1d52cf={},_0x2bec08={};_0x5939ae<_0x3cd06a[_0xb083('0x41')];_0x5939ae+=0x1){_0x1d52cf=_0x3cd06a[_0x5939ae];if(_['isUndefined'](_0x4243b2[_0xb083('0x23')][_0x1d52cf['id']])){_0x4243b2[_0xb083('0x23')][_0x1d52cf['id']]=new FaxAccount(_0x1d52cf);}else{_0x4243b2[_0xb083('0x3f')](_0x4243b2[_0xb083('0x23')][_0x1d52cf['id']],_0x1d52cf);}}}return _0x4243b2[_0xb083('0x23')];};};module['exports']=Realtime;
\ No newline at end of file
index 373070d..eaebfe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bdc=['lastIndexOf','blindTransfer','transfers','exports','lodash','moment','util','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','disabled','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','attendedtransfer','findAgent','accountcode','name','isNil','find','interface','SIP/%s','length','connectedlinenum','format','queuecallercomplete','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','destination','exten','type','dialer','lastapplication','queue','lastdata','context','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','channel','callerid','calleridnum','disposition','linkedid','monitor','monitors','monitorFilename','filename','createdAt','calleridname','connectedlinename','membername','xcally-motion-dialer','isArray','startsWith','Local','substring','indexOf','mobile'];(function(_0x55e602,_0x784205){var _0x403be8=function(_0x137ade){while(--_0x137ade){_0x55e602['push'](_0x55e602['shift']());}};_0x403be8(++_0x784205);}(_0x4bdc,0x199));var _0xc4bd=function(_0x29062e,_0x2ac95e){_0x29062e=_0x29062e-0x0;var _0x47e067=_0x4bdc[_0x29062e];return _0x47e067;};'use strict';var _=require(_0xc4bd('0x0'));var moment=require(_0xc4bd('0x1'));var util=require(_0xc4bd('0x2'));var config=require('../../../config/environment');var ami=require(_0xc4bd('0x3'));var RpcVoiceAgentReport=require(_0xc4bd('0x4'));var RpcVoiceCallReport=require(_0xc4bd('0x5'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0xc4bd('0x6'));var RpcVoiceQueueReport=require(_0xc4bd('0x7'));var RpcVoiceRecording=require(_0xc4bd('0x8'));var RpcVoiceTransferReport=require(_0xc4bd('0x9'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0xc4bd('0xa'));var VoiceDialReport=require(_0xc4bd('0xb'));var UserReport=require(_0xc4bd('0xc'));function Report(_0x2040eb){this[_0xc4bd('0xd')]=_0x2040eb;this['agents']=_0x2040eb[_0xc4bd('0xe')];this[_0xc4bd('0xf')]=_0x2040eb[_0xc4bd('0xf')];}Report[_0xc4bd('0x10')][_0xc4bd('0x11')]=function(_0x2f822f){var _0x296d41=new VoiceQueueReport(this['realtime']);var _0x40be9b=new VoiceAgentReport(this['realtime']);var _0x55f2f1=new VoiceDialReport(this[_0xc4bd('0xd')]);var _0x5a1297=new VoiceCallReport(this[_0xc4bd('0xd')]);var _0x3f8678=new UserReport(this[_0xc4bd('0xd')]);if(config['xdr']&&config[_0xc4bd('0x12')][_0xc4bd('0x13')]){ami['on']('custom:voiceQueueReport',this[_0xc4bd('0x14')][_0xc4bd('0x15')](this));ami['on'](_0xc4bd('0x16'),this[_0xc4bd('0x17')]['bind'](this));ami['on'](_0xc4bd('0x18'),this[_0xc4bd('0x19')][_0xc4bd('0x15')](this));ami['on'](_0xc4bd('0x1a'),this[_0xc4bd('0x1b')][_0xc4bd('0x15')](this));ami['on']('blindtransfer',this['blindTransfer'][_0xc4bd('0x15')](this));ami['on'](_0xc4bd('0x1c'),this['attendedTransfer'][_0xc4bd('0x15')](this));}};Report['prototype'][_0xc4bd('0x1d')]=function(_0xd5c03c){var _0x1c382c;_0x1c382c=_['find'](this[_0xc4bd('0xe')],function(_0x4c9469){return _0x4c9469[_0xc4bd('0x1e')]==_0xd5c03c||_0x4c9469[_0xc4bd('0x1f')]==_0xd5c03c;});if(_[_0xc4bd('0x20')](_0x1c382c)){var _0x3ccdee=_[_0xc4bd('0x21')](this[_0xc4bd('0xf')],function(_0x1cde85){return _0x1cde85[_0xc4bd('0x1e')]==_0xd5c03c||_0x1cde85['name']==_0xd5c03c;});if(_0x3ccdee){_0x1c382c=_[_0xc4bd('0x21')](this[_0xc4bd('0xe')],function(_0xd06bbc){return _0xd06bbc[_0xc4bd('0x22')]==util['format'](_0xc4bd('0x23'),_0x3ccdee[_0xc4bd('0x1f')]);});}}return _0x1c382c;};Report[_0xc4bd('0x10')][_0xc4bd('0x14')]=function(_0x176c7e){for(var _0x339f13=0x0;_0x339f13<_0x176c7e[_0xc4bd('0x24')];_0x339f13+=0x1){var _0x178d61=this[_0xc4bd('0x1d')](_0x176c7e[_0x339f13][_0xc4bd('0x25')]);if(_0x178d61){_0x176c7e[_0x339f13]['accountcode']=_0x178d61[_0xc4bd('0x1e')];_0x176c7e[_0x339f13]['assigned']=!![];_0x176c7e[_0x339f13]['lastAssignedTo']=_0x178d61[_0xc4bd('0x1f')];_0x176c7e[_0x339f13][_0xc4bd('0x22')]=_[_0xc4bd('0x20')](_0x178d61[_0xc4bd('0x22')])?util[_0xc4bd('0x26')](_0xc4bd('0x23'),_0x178d61[_0xc4bd('0x1f')]):_0x178d61[_0xc4bd('0x22')];if(_0x176c7e[_0x339f13][_0xc4bd('0x27')]){_0x176c7e[_0x339f13]['queuecallercompleteAt']=moment()['format'](_0xc4bd('0x28'));}if(_0x176c7e[_0x339f13][_0xc4bd('0x29')]){_0x176c7e[_0x339f13][_0xc4bd('0x2a')]=moment()[_0xc4bd('0x26')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0xc4bd('0x14')](_0x176c7e[_0x339f13]);}RpcVoiceQueueReport[_0xc4bd('0x2b')](_0x176c7e[_0x339f13]);}};function extractCalleridNumber(_0x1d9e05){var _0x50b218=_0x1d9e05[_0xc4bd('0x2c')](/<(.*?)>/);return _0x50b218?_0x50b218[0x1]:_0x1d9e05;}Report[_0xc4bd('0x10')]['voiceCallReport']=function(_0x485383){_0x485383[_0xc4bd('0x2d')]=_0x485383[_0xc4bd('0x2d')]||_0x485383[_0xc4bd('0x2e')];if(_0x485383[_0xc4bd('0x2f')]==_0xc4bd('0x30')){_0x485383[_0xc4bd('0x31')]=_0xc4bd('0x32');_0x485383[_0xc4bd('0x33')]=_0x485383[_0xc4bd('0x32')];if(_0x485383[_0xc4bd('0x34')]=='from-voip-provider'){_0x485383[_0xc4bd('0x1e')]='';_0x485383[_0xc4bd('0x2d')]=extractCalleridNumber(_0x485383['callerid']);}else if(_0x485383[_0xc4bd('0x34')]=='from-sip'){if(_0x485383[_0xc4bd('0x2d')]==_0xc4bd('0x35')){_0x485383[_0xc4bd('0x2d')]=extractCalleridNumber(_0x485383[_0xc4bd('0x36')]);_0x485383['calleridnum']=_0x485383[_0xc4bd('0x37')];_0x485383[_0xc4bd('0x38')]=[_0x485383[_0xc4bd('0x39')],_0x485383[_0xc4bd('0x39')]=_0x485383[_0xc4bd('0x38')]][0x0];_0x485383[_0xc4bd('0x3a')]=_0x485383[_0xc4bd('0x36')];}else{_0x485383[_0xc4bd('0x2d')]=_0x485383[_0xc4bd('0x3b')];_0x485383[_0xc4bd('0x3b')]=_0x485383[_0xc4bd('0x37')];if(_0x485383[_0xc4bd('0x3c')]=='ANSWERED'){_0x485383[_0xc4bd('0x1e')]=_0x485383[_0xc4bd('0x25')];}else{_0x485383['accountcode']='';}}}}else{_0x485383[_0xc4bd('0x3a')]=util[_0xc4bd('0x26')]('\x22%s\x22\x20<%s>',_0x485383['calleridname'],_0x485383[_0xc4bd('0x3b')]);}if(RpcVoiceTransferReport['transfers'][_0x485383[_0xc4bd('0x3d')]]){var _0x34975e=RpcVoiceTransferReport['transfers'][_0x485383['linkedid']];_0x34975e['transfereelinkedid']=_0x485383['uniqueid'];RpcVoiceTransferReport['blindTransfer'](_0x34975e);delete RpcVoiceTransferReport['transfers'][_0x485383[_0xc4bd('0x3d')]];}RpcVoiceCallReport[_0xc4bd('0x2b')](_0x485383);if(_0x485383[_0xc4bd('0x3e')]){for(var _0x4ef075=0x0;_0x4ef075<_0x485383[_0xc4bd('0x3f')][_0xc4bd('0x24')];_0x4ef075+=0x1){_0x485383[_0xc4bd('0x40')]=_0x485383[_0xc4bd('0x3f')][_0x4ef075][_0xc4bd('0x41')];_0x485383[_0xc4bd('0x42')]=_0x485383[_0xc4bd('0x3f')][_0x4ef075][_0xc4bd('0x42')];if(_0x485383[_0xc4bd('0x2e')]==_0xc4bd('0x35')){_0x485383[_0xc4bd('0x3b')]=_0x485383[_0xc4bd('0x25')];_0x485383[_0xc4bd('0x43')]=_0x485383[_0xc4bd('0x44')];_0x485383[_0xc4bd('0x25')]=_0x485383[_0xc4bd('0x1e')];_0x485383[_0xc4bd('0x44')]=_0x485383[_0xc4bd('0x45')];_0x485383[_0xc4bd('0x2e')]=_0x485383[_0xc4bd('0x37')];}else if(_0x485383[_0xc4bd('0x2e')]==_0xc4bd('0x46')){_0x485383[_0xc4bd('0x3b')]=_0x485383['destination'];_0x485383[_0xc4bd('0x2e')]=_0x485383[_0xc4bd('0x37')];}RpcVoiceRecording[_0xc4bd('0x2b')](_0x485383);}}};Report[_0xc4bd('0x10')]['voiceAgentReport']=function(_0x1660f7){if(_[_0xc4bd('0x47')](_0x1660f7)){_0x1660f7['forEach'](function(_0x3f5653){RpcVoiceAgentReport[_0xc4bd('0x2b')](_0x3f5653);});}else{RpcVoiceAgentReport[_0xc4bd('0x2b')](_0x1660f7);}};Report[_0xc4bd('0x10')][_0xc4bd('0x1b')]=function(_0xb2a644){RpcVoiceDialReport[_0xc4bd('0x2b')](_0xb2a644);var _0x47bd97;var _0x41a2a9;var _0x16242a=_0xb2a644[_0xc4bd('0x39')];if(_[_0xc4bd('0x48')](_0x16242a,_0xc4bd('0x49'))){_0x41a2a9=_0x16242a[_0xc4bd('0x4a')](_0x16242a[_0xc4bd('0x4b')]('/')+0x1,_0x16242a[_0xc4bd('0x4b')]('@'));_0x47bd97=_['find'](this[_0xc4bd('0xe')],function(_0x427017){return _0x427017[_0xc4bd('0x4c')]==_0x41a2a9||_0x427017['phone']==_0x41a2a9||_0x427017[_0xc4bd('0x1e')]==_0x41a2a9;});}else{_0x41a2a9=_0x16242a[_0xc4bd('0x4a')](_0x16242a[_0xc4bd('0x4b')]('/')+0x1,_0x16242a[_0xc4bd('0x4d')]('-'));_0x47bd97=this[_0xc4bd('0x1d')](_0x41a2a9);}if(_0x47bd97){_0xb2a644[_0xc4bd('0x22')]=_[_0xc4bd('0x20')](_0x47bd97['interface'])?util[_0xc4bd('0x26')]('SIP/%s',_0x47bd97[_0xc4bd('0x1f')]):_0x47bd97[_0xc4bd('0x22')];_0xb2a644[_0xc4bd('0x45')]=_0x47bd97[_0xc4bd('0x1f')];_0xb2a644[_0xc4bd('0x1e')]=_0x47bd97[_0xc4bd('0x1e')];RpcMemberReport[_0xc4bd('0x1b')](_0xb2a644);}};Report[_0xc4bd('0x10')][_0xc4bd('0x4e')]=function(_0x47cf79){RpcVoiceTransferReport[_0xc4bd('0x4f')][_0x47cf79['transfererlinkedid']]=_0x47cf79;};Report[_0xc4bd('0x10')]['attendedTransfer']=function(_0x39f463){RpcVoiceTransferReport['attendedTransfer'](_0x39f463);};module[_0xc4bd('0x50')]=Report;
\ No newline at end of file
+var _0x8baa=['length','monitorFilename','filename','createdAt','xcally-motion-preview','connectedlinename','membername','isArray','forEach','voiceDialReport','Local','substring','indexOf','transfererlinkedid','attendedTransfer','exports','lodash','moment','util','../../../config/environment','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceTransferReport','./voiceCallReport','./voiceAgentReport','agents','telephones','prototype','realtime','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','blindtransfer','attendedtransfer','findAgent','find','name','isNil','interface','accountcode','assigned','lastAssignedTo','format','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','create','destination','exten','type','dialer','lastapplication','queue','context','callerid','from-sip','calleridpreview','originatecalleridnum','destinationchannel','channel','calleridnum','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','uniqueid','blindTransfer','monitor','monitors'];(function(_0x3f3598,_0x7b5158){var _0x11dc77=function(_0x3e9a1c){while(--_0x3e9a1c){_0x3f3598['push'](_0x3f3598['shift']());}};_0x11dc77(++_0x7b5158);}(_0x8baa,0x19b));var _0xa8ba=function(_0x50988c,_0x107695){_0x50988c=_0x50988c-0x0;var _0x263983=_0x8baa[_0x50988c];return _0x263983;};'use strict';var _=require(_0xa8ba('0x0'));var moment=require(_0xa8ba('0x1'));var util=require(_0xa8ba('0x2'));var config=require(_0xa8ba('0x3'));var ami=require('../ami');var RpcVoiceAgentReport=require(_0xa8ba('0x4'));var RpcVoiceCallReport=require(_0xa8ba('0x5'));var RpcVoiceDialReport=require(_0xa8ba('0x6'));var RpcMemberReport=require(_0xa8ba('0x7'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require(_0xa8ba('0x8'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0xa8ba('0x9'));var VoiceAgentReport=require(_0xa8ba('0xa'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require('./userReport');function Report(_0xe1d85d){this['realtime']=_0xe1d85d;this[_0xa8ba('0xb')]=_0xe1d85d[_0xa8ba('0xb')];this[_0xa8ba('0xc')]=_0xe1d85d['telephones'];}Report[_0xa8ba('0xd')]['sync']=function(_0x2dfdf7){var _0x5a6b18=new VoiceQueueReport(this[_0xa8ba('0xe')]);var _0x9acd4b=new VoiceAgentReport(this[_0xa8ba('0xe')]);var _0x5fb652=new VoiceDialReport(this['realtime']);var _0x2b3c12=new VoiceCallReport(this['realtime']);var _0x4cc651=new UserReport(this[_0xa8ba('0xe')]);if(config[_0xa8ba('0xf')]&&config[_0xa8ba('0xf')][_0xa8ba('0x10')]){ami['on'](_0xa8ba('0x11'),this[_0xa8ba('0x12')][_0xa8ba('0x13')](this));ami['on'](_0xa8ba('0x14'),this[_0xa8ba('0x15')][_0xa8ba('0x13')](this));ami['on'](_0xa8ba('0x16'),this['voiceAgentReport'][_0xa8ba('0x13')](this));ami['on'](_0xa8ba('0x17'),this['voiceDialReport'][_0xa8ba('0x13')](this));ami['on'](_0xa8ba('0x18'),this['blindTransfer'][_0xa8ba('0x13')](this));ami['on'](_0xa8ba('0x19'),this['attendedTransfer'][_0xa8ba('0x13')](this));}};Report['prototype'][_0xa8ba('0x1a')]=function(_0x2ea802){var _0xecb16;_0xecb16=_[_0xa8ba('0x1b')](this[_0xa8ba('0xb')],function(_0x3954a0){return _0x3954a0['accountcode']==_0x2ea802||_0x3954a0[_0xa8ba('0x1c')]==_0x2ea802;});if(_[_0xa8ba('0x1d')](_0xecb16)){var _0x549dfb=_['find'](this[_0xa8ba('0xc')],function(_0x4df4da){return _0x4df4da['accountcode']==_0x2ea802||_0x4df4da['name']==_0x2ea802;});if(_0x549dfb){_0xecb16=_[_0xa8ba('0x1b')](this[_0xa8ba('0xb')],function(_0x5d243e){return _0x5d243e[_0xa8ba('0x1e')]==util['format']('SIP/%s',_0x549dfb[_0xa8ba('0x1c')]);});}}return _0xecb16;};Report['prototype'][_0xa8ba('0x12')]=function(_0x1dcb6f){for(var _0x283280=0x0;_0x283280<_0x1dcb6f['length'];_0x283280+=0x1){var _0xec3045=this[_0xa8ba('0x1a')](_0x1dcb6f[_0x283280]['connectedlinenum']);if(_0xec3045){_0x1dcb6f[_0x283280][_0xa8ba('0x1f')]=_0xec3045[_0xa8ba('0x1f')];_0x1dcb6f[_0x283280][_0xa8ba('0x20')]=!![];_0x1dcb6f[_0x283280][_0xa8ba('0x21')]=_0xec3045[_0xa8ba('0x1c')];_0x1dcb6f[_0x283280]['interface']=_['isNil'](_0xec3045[_0xa8ba('0x1e')])?util[_0xa8ba('0x22')]('SIP/%s',_0xec3045[_0xa8ba('0x1c')]):_0xec3045[_0xa8ba('0x1e')];if(_0x1dcb6f[_0x283280]['queuecallercomplete']){_0x1dcb6f[_0x283280][_0xa8ba('0x23')]=moment()[_0xa8ba('0x22')](_0xa8ba('0x24'));}if(_0x1dcb6f[_0x283280]['queuecallerexit']){_0x1dcb6f[_0x283280]['queuecallerexitAt']=moment()[_0xa8ba('0x22')](_0xa8ba('0x24'));}RpcMemberReport['voiceQueueReport'](_0x1dcb6f[_0x283280]);}RpcVoiceQueueReport[_0xa8ba('0x25')](_0x1dcb6f[_0x283280]);}};function extractCalleridNumber(_0x37802b){var _0x50734f=_0x37802b['match'](/<(.*?)>/);return _0x50734f?_0x50734f[0x1]:_0x37802b;}Report['prototype'][_0xa8ba('0x15')]=function(_0x45e25c){_0x45e25c[_0xa8ba('0x26')]=_0x45e25c[_0xa8ba('0x26')]||_0x45e25c[_0xa8ba('0x27')];if(_0x45e25c[_0xa8ba('0x28')]==_0xa8ba('0x29')){_0x45e25c[_0xa8ba('0x2a')]=_0xa8ba('0x2b');_0x45e25c['lastdata']=_0x45e25c[_0xa8ba('0x2b')];if(_0x45e25c[_0xa8ba('0x2c')]=='from-voip-provider'){_0x45e25c[_0xa8ba('0x1f')]='';_0x45e25c['destination']=extractCalleridNumber(_0x45e25c[_0xa8ba('0x2d')]);}else if(_0x45e25c['context']==_0xa8ba('0x2e')){if(_0x45e25c[_0xa8ba('0x26')]=='xcally-motion-preview'){_0x45e25c[_0xa8ba('0x26')]=extractCalleridNumber(_0x45e25c[_0xa8ba('0x2f')]);_0x45e25c['calleridnum']=_0x45e25c[_0xa8ba('0x30')];_0x45e25c[_0xa8ba('0x31')]=[_0x45e25c[_0xa8ba('0x32')],_0x45e25c[_0xa8ba('0x32')]=_0x45e25c[_0xa8ba('0x31')]][0x0];_0x45e25c[_0xa8ba('0x2d')]=_0x45e25c[_0xa8ba('0x2f')];}else{_0x45e25c['destination']=_0x45e25c['calleridnum'];_0x45e25c[_0xa8ba('0x33')]=_0x45e25c['originatecalleridnum'];if(_0x45e25c[_0xa8ba('0x34')]==_0xa8ba('0x35')){_0x45e25c[_0xa8ba('0x1f')]=_0x45e25c[_0xa8ba('0x36')];}else{_0x45e25c['accountcode']='';}}}}else{_0x45e25c[_0xa8ba('0x2d')]=util[_0xa8ba('0x22')](_0xa8ba('0x37'),_0x45e25c[_0xa8ba('0x38')],_0x45e25c['calleridnum']);}if(RpcVoiceTransferReport[_0xa8ba('0x39')][_0x45e25c[_0xa8ba('0x3a')]]){var _0x9a2770=RpcVoiceTransferReport[_0xa8ba('0x39')][_0x45e25c['linkedid']];_0x9a2770['transfereelinkedid']=_0x45e25c[_0xa8ba('0x3b')];RpcVoiceTransferReport[_0xa8ba('0x3c')](_0x9a2770);delete RpcVoiceTransferReport['transfers'][_0x45e25c[_0xa8ba('0x3a')]];}RpcVoiceCallReport[_0xa8ba('0x25')](_0x45e25c);if(_0x45e25c[_0xa8ba('0x3d')]){for(var _0x16a914=0x0;_0x16a914<_0x45e25c[_0xa8ba('0x3e')][_0xa8ba('0x3f')];_0x16a914+=0x1){_0x45e25c[_0xa8ba('0x40')]=_0x45e25c[_0xa8ba('0x3e')][_0x16a914][_0xa8ba('0x41')];_0x45e25c['createdAt']=_0x45e25c[_0xa8ba('0x3e')][_0x16a914][_0xa8ba('0x42')];if(_0x45e25c['exten']==_0xa8ba('0x43')){_0x45e25c[_0xa8ba('0x33')]=_0x45e25c[_0xa8ba('0x36')];_0x45e25c['calleridname']=_0x45e25c[_0xa8ba('0x44')];_0x45e25c[_0xa8ba('0x36')]=_0x45e25c[_0xa8ba('0x1f')];_0x45e25c[_0xa8ba('0x44')]=_0x45e25c[_0xa8ba('0x45')];_0x45e25c[_0xa8ba('0x27')]=_0x45e25c[_0xa8ba('0x30')];}else if(_0x45e25c[_0xa8ba('0x27')]=='xcally-motion-dialer'){_0x45e25c[_0xa8ba('0x33')]=_0x45e25c['destination'];_0x45e25c[_0xa8ba('0x27')]=_0x45e25c[_0xa8ba('0x30')];}RpcVoiceRecording[_0xa8ba('0x25')](_0x45e25c);}}};Report[_0xa8ba('0xd')]['voiceAgentReport']=function(_0x4ace09){if(_[_0xa8ba('0x46')](_0x4ace09)){_0x4ace09[_0xa8ba('0x47')](function(_0x2f22f8){RpcVoiceAgentReport[_0xa8ba('0x25')](_0x2f22f8);});}else{RpcVoiceAgentReport[_0xa8ba('0x25')](_0x4ace09);}};Report[_0xa8ba('0xd')][_0xa8ba('0x48')]=function(_0x3ba621){RpcVoiceDialReport[_0xa8ba('0x25')](_0x3ba621);var _0x152260;var _0x2b5496;var _0xfa789e=_0x3ba621[_0xa8ba('0x32')];if(_['startsWith'](_0xfa789e,_0xa8ba('0x49'))){_0x2b5496=_0xfa789e[_0xa8ba('0x4a')](_0xfa789e['indexOf']('/')+0x1,_0xfa789e[_0xa8ba('0x4b')]('@'));_0x152260=_['find'](this['agents'],function(_0x1b4645){return _0x1b4645['mobile']==_0x2b5496||_0x1b4645['phone']==_0x2b5496||_0x1b4645[_0xa8ba('0x1f')]==_0x2b5496;});}else{_0x2b5496=_0xfa789e[_0xa8ba('0x4a')](_0xfa789e['indexOf']('/')+0x1,_0xfa789e['lastIndexOf']('-'));_0x152260=this[_0xa8ba('0x1a')](_0x2b5496);}if(_0x152260){_0x3ba621[_0xa8ba('0x1e')]=_['isNil'](_0x152260['interface'])?util[_0xa8ba('0x22')]('SIP/%s',_0x152260[_0xa8ba('0x1c')]):_0x152260['interface'];_0x3ba621[_0xa8ba('0x45')]=_0x152260['name'];_0x3ba621[_0xa8ba('0x1f')]=_0x152260[_0xa8ba('0x1f')];RpcMemberReport[_0xa8ba('0x48')](_0x3ba621);}};Report[_0xa8ba('0xd')][_0xa8ba('0x3c')]=function(_0x274573){RpcVoiceTransferReport['transfers'][_0x274573[_0xa8ba('0x4c')]]=_0x274573;};Report['prototype'][_0xa8ba('0x4d')]=function(_0x387d2c){RpcVoiceTransferReport[_0xa8ba('0x4d')](_0x387d2c);};module[_0xa8ba('0x4e')]=Report;
\ No newline at end of file
index e62a088..2d02da8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b4c=['updateStatusRealtime','exports','lodash','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','defaults','localhost','socket.io-emitter','redis','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','actionDeviceStateList','inspect','actionSipPeerStatus','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','[userReport][registry]','stateRegistry','merge','omit','event','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]','device','local','inuse','toLowerCase','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','startsWith','indexOf','find','mobile','phone','accountcode','peerstatus','peer','address','[userReport][peerstatus]','status'];(function(_0x15f590,_0x42b288){var _0x53671c=function(_0x2569cb){while(--_0x2569cb){_0x15f590['push'](_0x15f590['shift']());}};_0x53671c(++_0x42b288);}(_0x7b4c,0x126));var _0xc7b4=function(_0x1e402d,_0x4e06fb){_0x1e402d=_0x1e402d-0x0;var _0x5446e1=_0x7b4c[_0x1e402d];return _0x5446e1;};'use strict';var _=require(_0xc7b4('0x0'));var moment=require('moment');var util=require(_0xc7b4('0x1'));var Redis=require(_0xc7b4('0x2'));var BPromise=require(_0xc7b4('0x3'));var config=require(_0xc7b4('0x4'));var logger=require(_0xc7b4('0x5'))(_0xc7b4('0x6'));var ami=require('../ami');config['redis']=_[_0xc7b4('0x7')](config['redis'],{'host':_0xc7b4('0x8'),'port':0x18eb});var io=require(_0xc7b4('0x9'))(new Redis(config[_0xc7b4('0xa')]));function UserReport(_0x4cf166){this[_0xc7b4('0xb')]=_0x4cf166[_0xc7b4('0xb')];this[_0xc7b4('0xc')]=_0x4cf166[_0xc7b4('0xc')];this['telephones']=_0x4cf166[_0xc7b4('0xd')];ami['on'](_0xc7b4('0xe'),this[_0xc7b4('0xf')][_0xc7b4('0x10')](this));ami['on'](_0xc7b4('0x11'),this[_0xc7b4('0xf')][_0xc7b4('0x10')](this));ami['on'](_0xc7b4('0x12'),this[_0xc7b4('0x13')][_0xc7b4('0x10')](this));ami['on']('peerstatus',this[_0xc7b4('0x14')]['bind'](this));return this[_0xc7b4('0x15')]();}function showSipRegistrations(){Promise[_0xc7b4('0x16')]()[_0xc7b4('0x17')](ami[_0xc7b4('0x18')]())[_0xc7b4('0x19')](function(_0x206122){logger[_0xc7b4('0x1a')](_0xc7b4('0x1b'),util['inspect'](_0x206122,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0xc7b4('0x17')](ami[_0xc7b4('0x1c')]())[_0xc7b4('0x19')](function(_0x4bdaa5){logger[_0xc7b4('0x1a')]('[userReport][devicestatelist]',util[_0xc7b4('0x1d')](_0x4bdaa5,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xc7b4('0x16')]()[_0xc7b4('0x17')](ami[_0xc7b4('0x1e')]())['catch'](function(_0x59e268){logger[_0xc7b4('0x1a')]('[userReport][sippeerstatus]',util['inspect'](_0x59e268,{'showHidden':![],'depth':null}));});}UserReport[_0xc7b4('0x1f')][_0xc7b4('0x15')]=function(){setInterval(function(){BPromise[_0xc7b4('0x16')]()[_0xc7b4('0x17')](showSipRegistrations())[_0xc7b4('0x17')](listDeviceStates())[_0xc7b4('0x17')](showPeersStatus());},0x32c8);};UserReport[_0xc7b4('0x1f')][_0xc7b4('0x20')]=function(_0xfdbf59){return _0xfdbf59!==null&&!_[_0xc7b4('0x21')](_0xfdbf59);};UserReport['prototype']['emit']=function(_0x208199,_0x5607fe,_0x4199cc){io['to'](_0x208199)[_0xc7b4('0x22')](_0x5607fe,_0x4199cc);};UserReport[_0xc7b4('0x1f')][_0xc7b4('0xf')]=function(_0xd0c5a9){try{if(this[_0xc7b4('0x20')](_0xd0c5a9)){logger[_0xc7b4('0x23')](_0xc7b4('0x24'),_0xd0c5a9[_0xc7b4('0x25')],_0xd0c5a9[_0xc7b4('0x26')]);logger['debug'](_0xc7b4('0x27'),util['inspect'](_0xd0c5a9,{'showHidden':![],'depth':null}));var _0x1d1d63=_['find'](this[_0xc7b4('0xb')],{'defaultuser':_0xd0c5a9[_0xc7b4('0x25')]});if(_0x1d1d63){_0xd0c5a9[_0xc7b4('0x28')]=_0xd0c5a9['state'];_[_0xc7b4('0x29')](_0x1d1d63,_[_0xc7b4('0x2a')](_0xd0c5a9,[_0xc7b4('0x2b'),'actionid',_0xc7b4('0x25'),'state']));logger[_0xc7b4('0x2c')](_0xc7b4('0x2d'),util[_0xc7b4('0x1d')](_0x1d1d63,{'showHidden':![],'depth':null}));this[_0xc7b4('0x22')](util[_0xc7b4('0x2e')](_0xc7b4('0x2f'),_0x1d1d63[_0xc7b4('0x30')]),_0xc7b4('0x31'),_0x1d1d63);}}}catch(_0x129c88){logger['error']('[userReport][registry]',util['inspect'](_0x129c88,{'showHidden':![],'depth':null}));}};UserReport[_0xc7b4('0x1f')][_0xc7b4('0x13')]=function(_0x3fb4d4){try{if(this['isNotNull'](_0x3fb4d4)){logger[_0xc7b4('0x23')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x3fb4d4['device'],_0x3fb4d4[_0xc7b4('0x26')]);logger[_0xc7b4('0x2c')](_0xc7b4('0x32'),util[_0xc7b4('0x1d')](_0x3fb4d4,{'showHidden':![],'depth':null}));if(this[_0xc7b4('0xc')][_0x3fb4d4['device']]){if(!this['agents'][_0x3fb4d4[_0xc7b4('0x33')]][_0xc7b4('0x34')]||_0x3fb4d4['state']['toLowerCase']()==_0xc7b4('0x35')){this[_0xc7b4('0xc')][_0x3fb4d4['device']][_0xc7b4('0x34')]=![];if(this['agents'][_0x3fb4d4[_0xc7b4('0x33')]]['state']!==_0x3fb4d4['state'][_0xc7b4('0x36')]()){this[_0xc7b4('0xc')][_0x3fb4d4[_0xc7b4('0x33')]][_0xc7b4('0x37')]=_[_0xc7b4('0x38')](moment()['format']('x'));}this[_0xc7b4('0xc')][_0x3fb4d4['device']][_0xc7b4('0x26')]=_0x3fb4d4[_0xc7b4('0x26')][_0xc7b4('0x36')]();this[_0xc7b4('0xc')][_0x3fb4d4[_0xc7b4('0x33')]]['updateStatusRealtime'](_0x3fb4d4);}}else if(this[_0xc7b4('0xd')][_0x3fb4d4[_0xc7b4('0x33')]]){if(this[_0xc7b4('0xd')][_0x3fb4d4[_0xc7b4('0x33')]][_0xc7b4('0x26')]!==_0x3fb4d4[_0xc7b4('0x26')][_0xc7b4('0x36')]()){this[_0xc7b4('0xd')][_0x3fb4d4[_0xc7b4('0x33')]][_0xc7b4('0x37')]=_[_0xc7b4('0x38')](moment()[_0xc7b4('0x2e')]('x'));}this['telephones'][_0x3fb4d4[_0xc7b4('0x33')]][_0xc7b4('0x26')]=_0x3fb4d4[_0xc7b4('0x26')][_0xc7b4('0x36')]();logger[_0xc7b4('0x2c')](_0xc7b4('0x39'),util[_0xc7b4('0x1d')](this['telephones'][_0x3fb4d4[_0xc7b4('0x33')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xc7b4('0x2e')](_0xc7b4('0x3a'),this[_0xc7b4('0xd')][_0x3fb4d4[_0xc7b4('0x33')]][_0xc7b4('0x30')]),_0xc7b4('0x3b'),this[_0xc7b4('0xd')][_0x3fb4d4[_0xc7b4('0x33')]]);}else if(this[_0xc7b4('0xb')][_0x3fb4d4['device']]){if(this[_0xc7b4('0xb')][_0x3fb4d4[_0xc7b4('0x33')]][_0xc7b4('0x26')]!==_0x3fb4d4[_0xc7b4('0x26')][_0xc7b4('0x36')]()){this[_0xc7b4('0xb')][_0x3fb4d4[_0xc7b4('0x33')]][_0xc7b4('0x37')]=_[_0xc7b4('0x38')](moment()['format']('x'));}this[_0xc7b4('0xb')][_0x3fb4d4[_0xc7b4('0x33')]]['state']=_0x3fb4d4['state'][_0xc7b4('0x36')]();logger[_0xc7b4('0x2c')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0xc7b4('0xb')][_0x3fb4d4[_0xc7b4('0x33')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xc7b4('0x2e')]('trunk:%s',this[_0xc7b4('0xb')][_0x3fb4d4[_0xc7b4('0x33')]]['name']),_0xc7b4('0x31'),this[_0xc7b4('0xb')][_0x3fb4d4[_0xc7b4('0x33')]]);}else if(_[_0xc7b4('0x3c')](_0x3fb4d4[_0xc7b4('0x33')],'Local')){var _0xb93244=_0x3fb4d4[_0xc7b4('0x33')];var _0x5fab91=_0xb93244['substring'](_0xb93244[_0xc7b4('0x3d')]('/')+0x1,_0xb93244[_0xc7b4('0x3d')]('@'));var _0x666794=_[_0xc7b4('0x3e')](this[_0xc7b4('0xc')],function(_0x3f6775){return _0x3f6775[_0xc7b4('0x3f')]==_0x5fab91||_0x3f6775[_0xc7b4('0x40')]==_0x5fab91||_0x3f6775[_0xc7b4('0x41')]==_0x5fab91;});if(_0x666794){if(_0x666794[_0xc7b4('0x26')]!==_0x3fb4d4[_0xc7b4('0x26')][_0xc7b4('0x36')]()){_0x666794[_0xc7b4('0x37')]=_[_0xc7b4('0x38')](moment()['format']('x'));}_0x666794[_0xc7b4('0x26')]=_0x3fb4d4[_0xc7b4('0x26')][_0xc7b4('0x36')]();_0x666794[_0xc7b4('0x34')]=!![];_0x666794['updateStatusRealtime'](_0x3fb4d4);}}}}catch(_0x41cab6){logger['error'](_0xc7b4('0x32'),util[_0xc7b4('0x1d')](_0x41cab6,{'showHidden':![],'depth':null}));}};UserReport[_0xc7b4('0x1f')]['syncPeerStatus']=function(_0x1e6a95){try{if(this[_0xc7b4('0x20')](_0x1e6a95)&&this[_0xc7b4('0x20')](_0x1e6a95[_0xc7b4('0x42')])){logger[_0xc7b4('0x23')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x1e6a95[_0xc7b4('0x43')],_0x1e6a95[_0xc7b4('0x44')],_0x1e6a95[_0xc7b4('0x42')]);logger['debug'](_0xc7b4('0x45'),util[_0xc7b4('0x1d')](_0x1e6a95,{'showHidden':![],'depth':null}));if(this[_0xc7b4('0xc')][_0x1e6a95[_0xc7b4('0x43')]]){if(!this[_0xc7b4('0xc')][_0x1e6a95[_0xc7b4('0x43')]][_0xc7b4('0x34')]||_0x1e6a95[_0xc7b4('0x42')][_0xc7b4('0x36')]()=='registered'){this['agents'][_0x1e6a95[_0xc7b4('0x43')]][_0xc7b4('0x34')]=![];this[_0xc7b4('0xc')][_0x1e6a95[_0xc7b4('0x43')]][_0xc7b4('0x46')]=_0x1e6a95['peerstatus'][_0xc7b4('0x36')]();this[_0xc7b4('0xc')][_0x1e6a95['peer']][_0xc7b4('0x44')]=_0x1e6a95[_0xc7b4('0x44')];this[_0xc7b4('0xc')][_0x1e6a95['peer']][_0xc7b4('0x47')](_0x1e6a95);}}else if(this[_0xc7b4('0xd')][_0x1e6a95['peer']]){this[_0xc7b4('0xd')][_0x1e6a95[_0xc7b4('0x43')]]['status']=_0x1e6a95[_0xc7b4('0x42')][_0xc7b4('0x36')]();this[_0xc7b4('0xd')][_0x1e6a95[_0xc7b4('0x43')]][_0xc7b4('0x44')]=_0x1e6a95[_0xc7b4('0x44')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xc7b4('0x1d')](this[_0xc7b4('0xd')][_0x1e6a95[_0xc7b4('0x43')]],{'showHidden':![],'depth':null}));this[_0xc7b4('0x22')](util[_0xc7b4('0x2e')](_0xc7b4('0x3a'),this[_0xc7b4('0xd')][_0x1e6a95[_0xc7b4('0x43')]]['name']),_0xc7b4('0x3b'),this[_0xc7b4('0xd')][_0x1e6a95[_0xc7b4('0x43')]]);}else if(this[_0xc7b4('0xb')][_0x1e6a95['peer']]){this['trunks'][_0x1e6a95[_0xc7b4('0x43')]][_0xc7b4('0x46')]=_0x1e6a95['peerstatus'][_0xc7b4('0x36')]();this[_0xc7b4('0xb')][_0x1e6a95['peer']][_0xc7b4('0x44')]=_0x1e6a95[_0xc7b4('0x44')];logger['debug']('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0xc7b4('0x1d')](this['trunks'][_0x1e6a95[_0xc7b4('0x43')]],{'showHidden':![],'depth':null}));this[_0xc7b4('0x22')](util['format'](_0xc7b4('0x2f'),this['trunks'][_0x1e6a95[_0xc7b4('0x43')]][_0xc7b4('0x30')]),'trunk:save',this[_0xc7b4('0xb')][_0x1e6a95[_0xc7b4('0x43')]]);}}}catch(_0xeeb5d9){logger[_0xc7b4('0x1a')]('[userReport][peerstatus]',util['inspect'](_0xeeb5d9,{'showHidden':![],'depth':null}));}};module[_0xc7b4('0x48')]=UserReport;
\ No newline at end of file
+var _0xd392=['actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','username','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','trunk:save','syncDeviceState','device','[userReport][devicestatechange]','toLowerCase','local','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','name','startsWith','substring','indexOf','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','[userReport][sipshowregistry]','inspect','actionDeviceStateList','catch','error'];(function(_0x372b5a,_0x5d3393){var _0x43ac01=function(_0x2649a0){while(--_0x2649a0){_0x372b5a['push'](_0x372b5a['shift']());}};_0x43ac01(++_0x5d3393);}(_0xd392,0x7c));var _0x2d39=function(_0x5e317b,_0x288180){_0x5e317b=_0x5e317b-0x0;var _0x29d4fd=_0xd392[_0x5e317b];return _0x29d4fd;};'use strict';var _=require(_0x2d39('0x0'));var moment=require(_0x2d39('0x1'));var util=require(_0x2d39('0x2'));var Redis=require('ioredis');var BPromise=require(_0x2d39('0x3'));var config=require(_0x2d39('0x4'));var logger=require(_0x2d39('0x5'))(_0x2d39('0x6'));var ami=require(_0x2d39('0x7'));config['redis']=_['defaults'](config[_0x2d39('0x8')],{'host':_0x2d39('0x9'),'port':0x18eb});var io=require(_0x2d39('0xa'))(new Redis(config[_0x2d39('0x8')]));function UserReport(_0x10344d){this[_0x2d39('0xb')]=_0x10344d[_0x2d39('0xb')];this[_0x2d39('0xc')]=_0x10344d[_0x2d39('0xc')];this[_0x2d39('0xd')]=_0x10344d[_0x2d39('0xd')];ami['on'](_0x2d39('0xe'),this[_0x2d39('0xf')][_0x2d39('0x10')](this));ami['on'](_0x2d39('0x11'),this[_0x2d39('0xf')][_0x2d39('0x10')](this));ami['on']('devicestatechange',this['syncDeviceState'][_0x2d39('0x10')](this));ami['on'](_0x2d39('0x12'),this[_0x2d39('0x13')][_0x2d39('0x10')](this));return this[_0x2d39('0x14')]();}function showSipRegistrations(){Promise[_0x2d39('0x15')]()[_0x2d39('0x16')](ami['actionSipShowRegistry']())['catch'](function(_0x2926ef){logger['error'](_0x2d39('0x17'),util[_0x2d39('0x18')](_0x2926ef,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x2d39('0x15')]()[_0x2d39('0x16')](ami[_0x2d39('0x19')]())[_0x2d39('0x1a')](function(_0x525f85){logger[_0x2d39('0x1b')]('[userReport][devicestatelist]',util[_0x2d39('0x18')](_0x525f85,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x2d39('0x15')]()[_0x2d39('0x16')](ami[_0x2d39('0x1c')]())[_0x2d39('0x1a')](function(_0x316db6){logger[_0x2d39('0x1b')](_0x2d39('0x1d'),util['inspect'](_0x316db6,{'showHidden':![],'depth':null}));});}UserReport[_0x2d39('0x1e')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x2d39('0x15')]()[_0x2d39('0x16')](showSipRegistrations())[_0x2d39('0x16')](listDeviceStates())[_0x2d39('0x16')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0x2d39('0x1f')]=function(_0x4ff554){return _0x4ff554!==null&&!_['isUndefined'](_0x4ff554);};UserReport[_0x2d39('0x1e')]['emit']=function(_0x45a64a,_0x5df37d,_0x2fcf67){io['to'](_0x45a64a)[_0x2d39('0x20')](_0x5df37d,_0x2fcf67);};UserReport[_0x2d39('0x1e')][_0x2d39('0xf')]=function(_0x32abcc){try{if(this[_0x2d39('0x1f')](_0x32abcc)){logger[_0x2d39('0x21')](_0x2d39('0x22'),_0x32abcc['username'],_0x32abcc[_0x2d39('0x23')]);logger[_0x2d39('0x24')](_0x2d39('0x25'),util[_0x2d39('0x18')](_0x32abcc,{'showHidden':![],'depth':null}));var _0x1e86ec=_[_0x2d39('0x26')](this[_0x2d39('0xb')],{'defaultuser':_0x32abcc[_0x2d39('0x27')]});if(_0x1e86ec){_0x32abcc[_0x2d39('0x28')]=_0x32abcc[_0x2d39('0x23')];_[_0x2d39('0x29')](_0x1e86ec,_[_0x2d39('0x2a')](_0x32abcc,[_0x2d39('0x2b'),_0x2d39('0x2c'),_0x2d39('0x27'),_0x2d39('0x23')]));logger[_0x2d39('0x24')](_0x2d39('0x2d'),util['inspect'](_0x1e86ec,{'showHidden':![],'depth':null}));this[_0x2d39('0x20')](util[_0x2d39('0x2e')](_0x2d39('0x2f'),_0x1e86ec['name']),_0x2d39('0x30'),_0x1e86ec);}}}catch(_0x28777c){logger[_0x2d39('0x1b')](_0x2d39('0x25'),util[_0x2d39('0x18')](_0x28777c,{'showHidden':![],'depth':null}));}};UserReport[_0x2d39('0x1e')][_0x2d39('0x31')]=function(_0x171be8){try{if(this[_0x2d39('0x1f')](_0x171be8)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x171be8[_0x2d39('0x32')],_0x171be8[_0x2d39('0x23')]);logger[_0x2d39('0x24')](_0x2d39('0x33'),util[_0x2d39('0x18')](_0x171be8,{'showHidden':![],'depth':null}));if(this[_0x2d39('0xc')][_0x171be8[_0x2d39('0x32')]]){if(!this['agents'][_0x171be8[_0x2d39('0x32')]]['local']||_0x171be8['state'][_0x2d39('0x34')]()=='inuse'){this[_0x2d39('0xc')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x35')]=![];if(this[_0x2d39('0xc')][_0x171be8['device']][_0x2d39('0x23')]!==_0x171be8[_0x2d39('0x23')][_0x2d39('0x34')]()){this['agents'][_0x171be8['device']][_0x2d39('0x36')]=_[_0x2d39('0x37')](moment()[_0x2d39('0x2e')]('x'));}this[_0x2d39('0xc')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x23')]=_0x171be8['state'][_0x2d39('0x34')]();this[_0x2d39('0xc')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x38')](_0x171be8);}}else if(this[_0x2d39('0xd')][_0x171be8['device']]){if(this[_0x2d39('0xd')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x23')]!==_0x171be8[_0x2d39('0x23')][_0x2d39('0x34')]()){this[_0x2d39('0xd')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x36')]=_[_0x2d39('0x37')](moment()[_0x2d39('0x2e')]('x'));}this[_0x2d39('0xd')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x23')]=_0x171be8[_0x2d39('0x23')][_0x2d39('0x34')]();logger[_0x2d39('0x24')](_0x2d39('0x39'),util[_0x2d39('0x18')](this[_0x2d39('0xd')][_0x171be8[_0x2d39('0x32')]],{'showHidden':![],'depth':null}));this[_0x2d39('0x20')](util[_0x2d39('0x2e')](_0x2d39('0x3a'),this['telephones'][_0x171be8[_0x2d39('0x32')]]['name']),'telephone:save',this[_0x2d39('0xd')][_0x171be8[_0x2d39('0x32')]]);}else if(this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]]){if(this['trunks'][_0x171be8[_0x2d39('0x32')]]['state']!==_0x171be8[_0x2d39('0x23')][_0x2d39('0x34')]()){this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]]['stateTime']=_[_0x2d39('0x37')](moment()[_0x2d39('0x2e')]('x'));}this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x23')]=_0x171be8[_0x2d39('0x23')][_0x2d39('0x34')]();logger[_0x2d39('0x24')](_0x2d39('0x3b'),util['inspect'](this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]],{'showHidden':![],'depth':null}));this[_0x2d39('0x20')](util['format'](_0x2d39('0x2f'),this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]][_0x2d39('0x3c')]),_0x2d39('0x30'),this[_0x2d39('0xb')][_0x171be8[_0x2d39('0x32')]]);}else if(_[_0x2d39('0x3d')](_0x171be8[_0x2d39('0x32')],'Local')){var _0x3feb99=_0x171be8[_0x2d39('0x32')];var _0x34dc12=_0x3feb99[_0x2d39('0x3e')](_0x3feb99[_0x2d39('0x3f')]('/')+0x1,_0x3feb99[_0x2d39('0x3f')]('@'));var _0x326331=_[_0x2d39('0x26')](this['agents'],function(_0x42f6e3){return _0x42f6e3['mobile']==_0x34dc12||_0x42f6e3[_0x2d39('0x40')]==_0x34dc12||_0x42f6e3[_0x2d39('0x41')]==_0x34dc12;});if(_0x326331){if(_0x326331[_0x2d39('0x23')]!==_0x171be8['state'][_0x2d39('0x34')]()){_0x326331[_0x2d39('0x36')]=_['toNumber'](moment()[_0x2d39('0x2e')]('x'));}_0x326331[_0x2d39('0x23')]=_0x171be8['state']['toLowerCase']();_0x326331[_0x2d39('0x35')]=!![];_0x326331[_0x2d39('0x38')](_0x171be8);}}}}catch(_0x341aa8){logger['error'](_0x2d39('0x33'),util['inspect'](_0x341aa8,{'showHidden':![],'depth':null}));}};UserReport[_0x2d39('0x1e')]['syncPeerStatus']=function(_0x1961a8){try{if(this[_0x2d39('0x1f')](_0x1961a8)&&this['isNotNull'](_0x1961a8[_0x2d39('0x12')])){logger[_0x2d39('0x21')](_0x2d39('0x42'),_0x1961a8[_0x2d39('0x43')],_0x1961a8[_0x2d39('0x44')],_0x1961a8['peerstatus']);logger[_0x2d39('0x24')](_0x2d39('0x45'),util[_0x2d39('0x18')](_0x1961a8,{'showHidden':![],'depth':null}));if(this[_0x2d39('0xc')][_0x1961a8[_0x2d39('0x43')]]){if(!this[_0x2d39('0xc')][_0x1961a8['peer']][_0x2d39('0x35')]||_0x1961a8[_0x2d39('0x12')]['toLowerCase']()==_0x2d39('0x46')){this[_0x2d39('0xc')][_0x1961a8['peer']][_0x2d39('0x35')]=![];this['agents'][_0x1961a8[_0x2d39('0x43')]][_0x2d39('0x47')]=_0x1961a8[_0x2d39('0x12')]['toLowerCase']();this[_0x2d39('0xc')][_0x1961a8[_0x2d39('0x43')]]['address']=_0x1961a8[_0x2d39('0x44')];this[_0x2d39('0xc')][_0x1961a8[_0x2d39('0x43')]][_0x2d39('0x38')](_0x1961a8);}}else if(this[_0x2d39('0xd')][_0x1961a8[_0x2d39('0x43')]]){this[_0x2d39('0xd')][_0x1961a8['peer']][_0x2d39('0x47')]=_0x1961a8[_0x2d39('0x12')][_0x2d39('0x34')]();this['telephones'][_0x1961a8[_0x2d39('0x43')]][_0x2d39('0x44')]=_0x1961a8[_0x2d39('0x44')];logger['debug'](_0x2d39('0x48'),util[_0x2d39('0x18')](this[_0x2d39('0xd')][_0x1961a8[_0x2d39('0x43')]],{'showHidden':![],'depth':null}));this[_0x2d39('0x20')](util[_0x2d39('0x2e')](_0x2d39('0x3a'),this[_0x2d39('0xd')][_0x1961a8['peer']]['name']),_0x2d39('0x49'),this['telephones'][_0x1961a8[_0x2d39('0x43')]]);}else if(this[_0x2d39('0xb')][_0x1961a8[_0x2d39('0x43')]]){this[_0x2d39('0xb')][_0x1961a8[_0x2d39('0x43')]]['status']=_0x1961a8[_0x2d39('0x12')]['toLowerCase']();this[_0x2d39('0xb')][_0x1961a8[_0x2d39('0x43')]]['address']=_0x1961a8[_0x2d39('0x44')];logger['debug'](_0x2d39('0x4a'),util[_0x2d39('0x18')](this[_0x2d39('0xb')][_0x1961a8[_0x2d39('0x43')]],{'showHidden':![],'depth':null}));this[_0x2d39('0x20')](util[_0x2d39('0x2e')]('trunk:%s',this[_0x2d39('0xb')][_0x1961a8['peer']][_0x2d39('0x3c')]),_0x2d39('0x30'),this[_0x2d39('0xb')][_0x1961a8[_0x2d39('0x43')]]);}}}catch(_0x383f43){logger[_0x2d39('0x1b')](_0x2d39('0x45'),util['inspect'](_0x383f43,{'showHidden':![],'depth':null}));}};module[_0x2d39('0x4b')]=UserReport;
\ No newline at end of file
index 94bdb51..8ea8892 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['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','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','extravar','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','merge','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acw','acwtime','acwTimeout','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][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','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','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:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart'];(function(_0x139cc2,_0x4f28c0){var _0x19f8c6=function(_0x46b58d){while(--_0x46b58d){_0x139cc2['push'](_0x139cc2['shift']());}};_0x19f8c6(++_0x4f28c0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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')]],'motionChannel':_0x0a9e('0x2c')};}_['merge'](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']]);var _0x66c1d2={'id':this[_0x0a9e('0xa')][_0x155cce[_0x0a9e('0x32')]]['id'],'calleridnum':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0x33')],'queue':this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]]['queue'],'extravar':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')]?this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')][_0x0a9e('0x34')]:undefined};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x155cce[_0x0a9e('0x26')],util['inspect'](_0x66c1d2,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x155cce[_0x0a9e('0x21')]),'user:called',_0x66c1d2);}}catch(_0x31916f){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x31916f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x39')]=function(_0x4c1c0e){try{if(this['isNotNull'](_0x4c1c0e)){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]){logger['debug'](_0x0a9e('0x3a'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c1c0e,{'showHidden':![],'depth':null}));for(var _0x148f55 in this['channels'][_0x4c1c0e['uniqueid']]){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]['hasOwnProperty'](_0x148f55)){if(_0x4c1c0e[_0x0a9e('0x22')]===_0x148f55){logger[_0x0a9e('0x20')](_0x0a9e('0x3b'),_0x4c1c0e['uniqueid'],_0x4c1c0e[_0x0a9e('0x21')],_0x4c1c0e[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3c')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3d')]=_0x4c1c0e[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3e')]=_0x4c1c0e[_0x0a9e('0x3e')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x3f')]=_0x4c1c0e[_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x40')]=_0x4c1c0e[_0x0a9e('0x40')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x41')]=_0x4c1c0e[_0x0a9e('0x41')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['lastevent']=_0x0a9e('0x42');if(this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x26')]]){var _0xbe9d19=this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x26')]]['routealias'];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x44')]=_0xbe9d19;_0x4c1c0e['routealias']=_0xbe9d19;}_[_0x0a9e('0x45')](this[_0x0a9e('0xa')][_0x4c1c0e[_0x0a9e('0x32')]],_[_0x0a9e('0x46')](_0x4c1c0e,[_0x0a9e('0x28'),_0x0a9e('0x47'),_0x0a9e('0x44')]));logger['debug'](_0x0a9e('0x48'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x49'),this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x4c1c0e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x4c1c0e['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x4c1c0e[_0x0a9e('0x21')]),_0x0a9e('0x4a'),this['channels'][_0x4c1c0e['uniqueid']][_0x4c1c0e['destuniqueid']]);}else if(!this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]&&!this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4c1c0e[_0x0a9e('0x26')],this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['membername'],_0x148f55);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]=!![];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheredestinationuniqueid']=_0x4c1c0e[_0x0a9e('0x22')];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheremembername']=_0x4c1c0e[_0x0a9e('0x21')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55]['lastevent']=_0x0a9e('0x4d');this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4e')]=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4f'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x50'),this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]);}}}}}}catch(_0xb83dfd){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xb83dfd,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x51')]=function(_0x5cc8fb){try{if(this[_0x0a9e('0x1e')](_0x5cc8fb)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5cc8fb['uniqueid'],util[_0x0a9e('0x25')](_0x5cc8fb,{'showHidden':![],'depth':null}));if(this['channels'][_0x5cc8fb[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]){logger[_0x0a9e('0x20')](_0x0a9e('0x52'),_0x5cc8fb['uniqueid'],_0x5cc8fb[_0x0a9e('0x21')],_0x5cc8fb['destuniqueid']);this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x5cc8fb['uniqueid']][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x53')]=_0x0a9e('0x54');this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb['destuniqueid']][_0x0a9e('0x4e')]=_0x0a9e('0x54');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5cc8fb[_0x0a9e('0x26')],util['inspect'](this['channels'][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x55'),this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]);}}}catch(_0x54a37d){logger[_0x0a9e('0x37')](_0x0a9e('0x56'),_0x5cc8fb[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x54a37d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x11')]=function(_0x320898){try{if(this[_0x0a9e('0x1e')](_0x320898)){logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x320898['uniqueid'],util[_0x0a9e('0x25')](_0x320898,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){for(var _0x4edbb0 in this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){if(this['channels'][_0x320898[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x4edbb0)&&!this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4b')]&&!this['channels'][_0x320898['uniqueid']][_0x4edbb0]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x59'),_0x320898[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x21')],_0x4edbb0);this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this['channels'][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x53')]='abandoned';this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4e')]=_0x0a9e('0x5a');logger['debug'](_0x0a9e('0x5b'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x320898['uniqueid']][_0x4edbb0],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x5c'),this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]);}}}}}catch(_0x4abc8f){logger[_0x0a9e('0x37')](_0x0a9e('0x5d'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4abc8f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x40fc56){try{if(this[_0x0a9e('0x1e')](_0x40fc56)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x40fc56,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){for(var _0x5b35db in this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x0a9e('0x58')](_0x5b35db)){if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x3c')]&&!this['channels'][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40fc56[_0x0a9e('0x26')],this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x21')],_0x5b35db);this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x4e')]=_0x40fc56[_0x0a9e('0x4e')]=='transfer'?_0x0a9e('0x61'):_0x40fc56['reason'];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x62')]=_0x40fc56[_0x0a9e('0x62')];if(this['voiceQueues'][_0x40fc56['queue']]&&this[_0x0a9e('0x9')][_0x40fc56[_0x0a9e('0x28')]][_0x0a9e('0x63')]){this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x64')]=this['voiceQueues'][_0x40fc56['queue']][_0x0a9e('0x65')];this['channels'][_0x40fc56['uniqueid']][_0x5b35db]['agentacw']=!![];}this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]=_[_0x0a9e('0x2d')](this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x66'),this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db]);logger['debug'](_0x0a9e('0x67'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')]('user:%s',_0x40fc56[_0x0a9e('0x21')]),_0x0a9e('0x69'),{'id':this['agents'][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]});}}}}}}catch(_0x3a1974){logger['error'](_0x0a9e('0x6a'),_0x40fc56['uniqueid'],util[_0x0a9e('0x25')](_0x3a1974,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x1f29bd){try{if(this[_0x0a9e('0x1e')](_0x1f29bd)){logger[_0x0a9e('0x23')](_0x0a9e('0x6b'),_0x1f29bd[_0x0a9e('0x26')],util['inspect'](_0x1f29bd,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6c')](_0x1f29bd[_0x0a9e('0x26')],_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){for(var _0x33f0c9 in this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x33f0c9)){logger['info'](_0x0a9e('0x70'),_0x1f29bd[_0x0a9e('0x26')],_0x33f0c9,_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(_['isUndefined'](this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9]['variables'])){this[_0x0a9e('0x8')][_0x1f29bd['uniqueid']][_0x33f0c9][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9][_0x0a9e('0xb')]=this['variables'][_0x1f29bd[_0x0a9e('0x26')]];}}}}}catch(_0x4cf72d){logger[_0x0a9e('0x37')](_0x0a9e('0x71'),_0x1f29bd['uniqueid'],util[_0x0a9e('0x25')](_0x4cf72d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x6c')]=function(_0x4ab276,_0x4c788f,_0x1b82b7){var _0x6ba2be=[_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'),_0x0a9e('0x77'),_0x0a9e('0x78'),'rtpaudioqosrttbridged',_0x0a9e('0x79'),'sipuri',_0x0a9e('0x7a'),_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x0a9e('0x7d'),_0x0a9e('0x7e'),'memberlastcall',_0x0a9e('0x21'),_0x0a9e('0x7f'),_0x0a9e('0x80')];if(!_[_0x0a9e('0x81')](_0x4c788f)&&!_[_0x0a9e('0x82')](_0x6ba2be,_0x4c788f)){if(_['isUndefined'](this['variables'][_0x4ab276])){this[_0x0a9e('0xb')][_0x4ab276]={};}this['variables'][_0x4ab276][_0x4c788f]=_0x1b82b7;}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x17')]=function(_0x4672e1){try{if(this[_0x0a9e('0x1e')](_0x4672e1)){logger[_0x0a9e('0x23')](_0x0a9e('0x83'),_0x4672e1['uniqueid'],util['inspect'](_0x4672e1,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']]){for(var _0x2469d1 in this['channels'][_0x4672e1[_0x0a9e('0x26')]]){if(this['channels'][_0x4672e1['uniqueid']][_0x0a9e('0x58')](_0x2469d1)){if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']][_0x2469d1][_0x0a9e('0x4e')]==_0x0a9e('0x84')&&this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x4672e1[_0x0a9e('0x26')],_0x2469d1);this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0a9e('0x23')](_0x0a9e('0x85'),_0x4672e1['uniqueid'],util[_0x0a9e('0x25')](_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x87'),_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x4672e1['uniqueid']];}if(this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]]){delete this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]];}}}catch(_0x1d0b02){logger['error']('[%s][voiceAgentReport][hangup]',_0x4672e1[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1d0b02,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x88')]=function(_0x34f7b5){try{if(this['isNotNull'](_0x34f7b5)){logger[_0x0a9e('0x23')](_0x0a9e('0x89'),_0x34f7b5[_0x0a9e('0x26')],util['inspect'](_0x34f7b5,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]){for(var _0x2144ca in this['channels'][_0x34f7b5[_0x0a9e('0x8a')]]){if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]]['hasOwnProperty'](_0x2144ca)){if(_0x34f7b5[_0x0a9e('0x8b')]===_0x2144ca){logger['info'](_0x0a9e('0x8c'),_0x34f7b5[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x21')],_0x2144ca);var _0x1bee04=moment();this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca]['lastevent']='complete';this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x4e')]=_0x0a9e('0x84');this['channels'][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x62')]=_0x1bee04[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]]){var _0x5d0e1f=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]];this[_0x0a9e('0x8')][_0x34f7b5['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]];this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]=_0x5d0e1f;}}}catch(_0x303f75){logger[_0x0a9e('0x37')](_0x0a9e('0x90'),_0x34f7b5[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x303f75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x1b')]=function(_0x289e65){try{if(this['isNotNull'](_0x289e65)){logger[_0x0a9e('0x23')](_0x0a9e('0x91'),_0x289e65[_0x0a9e('0x26')],util['inspect'](_0x289e65,{'showHidden':![],'depth':null}));if(this['channels'][_0x289e65['transfereeuniqueid']]){for(var _0x1015aa in this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']]){if(this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x0a9e('0x58')](_0x1015aa)){if(_0x289e65['transfereruniqueid']===_0x1015aa){logger[_0x0a9e('0x20')](_0x0a9e('0x92'),_0x289e65[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x21')],_0x1015aa);var _0x40e6e7=moment();this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x5f')]=_0x40e6e7;this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x4e')]=_0x0a9e('0x84');this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['talktime']=_0x40e6e7[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}}}catch(_0x2be526){logger[_0x0a9e('0x37')](_0x0a9e('0x93'),_0x289e65[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2be526,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x18')]=function(_0x88b25f){var _0x2ff265='';try{if(this[_0x0a9e('0x1e')](_0x88b25f)){logger[_0x0a9e('0x23')](_0x0a9e('0x94'),_0x88b25f[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x88b25f,{'showHidden':![],'depth':null}));if(_0x88b25f['channel']){_0x2ff265=_0x88b25f[_0x0a9e('0x95')][_0x0a9e('0x96')](0x0,_0x88b25f[_0x0a9e('0x95')]['lastIndexOf']('-'));if(this[_0x0a9e('0xa')][_0x2ff265]){logger[_0x0a9e('0x20')](_0x0a9e('0x97'),_0x88b25f[_0x0a9e('0x26')],_0x2ff265);this[_0x0a9e('0xa')][_0x2ff265][_0x0a9e('0x98')]=!![];}}}}catch(_0x424f1b){logger[_0x0a9e('0x37')](_0x0a9e('0x99'),_0x88b25f[_0x0a9e('0x26')],util['inspect'](_0x424f1b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x9a')]=function(_0x15a9ed){var _0x3db98f='';try{if(this[_0x0a9e('0x1e')](_0x15a9ed)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x15a9ed[_0x0a9e('0x26')],util['inspect'](_0x15a9ed,{'showHidden':![],'depth':null}));if(_0x15a9ed['channel']){_0x3db98f=_0x15a9ed['channel'][_0x0a9e('0x96')](0x0,_0x15a9ed[_0x0a9e('0x95')][_0x0a9e('0x9b')]('-'));if(this[_0x0a9e('0xa')][_0x3db98f]){logger['info'](_0x0a9e('0x9c'),_0x15a9ed[_0x0a9e('0x26')],_0x3db98f);this[_0x0a9e('0xa')][_0x3db98f][_0x0a9e('0x98')]=![];}}}}catch(_0x2c8d1d){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x15a9ed[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2c8d1d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x9d')]=VoiceAgentReport;
\ No newline at end of file
+var _0xa9e0=['redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','voiceChannels','routealias','interface','pick','destconnectedlinenum','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answered_elsewhere','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','error','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','reason','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','../../../config/logger','../ami'];(function(_0x14d3e9,_0x47d187){var _0xaa803d=function(_0x25b475){while(--_0x25b475){_0x14d3e9['push'](_0x14d3e9['shift']());}};_0xaa803d(++_0x47d187);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'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 b142b74..0538857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde77=['diff','connectedlinename','destinationchannel','UserId','membername','from-sip','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.WAV','monitorFilename','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','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','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','cause-txt','billableseconds','omit','user:agentcomplete','length','resolve','undefined','getSettings','stopRecordingOnTransfer','then','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','transfercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','routeid','transferType','ATTENDED','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfererchannel','transfereruniqueid','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','lodash','util','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','queue','agi','dial','voicemail','NO\x20ANSWER','FAILED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','blindTransfers','bind','syncNewExten','newstate','syncNewState','varset','syncVarSet','hangup','syncHangup','syncNewCallerId','blindtransfer','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','merge','pick','keys','context','channel','split','xcally-motion-preview','agents','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','syncNewChannel','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','exten','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','duration','subtract','seconds','lastapplication','lastdata','set','startsWith','cdr(','match','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xde77,0x12c));var _0x7de7=function(_0x2da1a2,_0x338c14){_0x2da1a2=_0x2da1a2-0x0;var _0x2d2847=_0xde77[_0x2da1a2];return _0x2d2847;};'use strict';var _=require(_0x7de7('0x0'));var moment=require('moment');var util=require(_0x7de7('0x1'));var path=require(_0x7de7('0x2'));var Redis=require(_0x7de7('0x3'));var config=require(_0x7de7('0x4'));var logger=require(_0x7de7('0x5'))(_0x7de7('0x6'));var ami=require(_0x7de7('0x7'));var Channel=require(_0x7de7('0x8'));var RpcSetting=require(_0x7de7('0x9'));var applications=['set',_0x7de7('0xa'),_0x7de7('0xb'),_0x7de7('0xc'),'playback',_0x7de7('0xd')];var dispositions=[_0x7de7('0xe'),'FAILED',_0x7de7('0xf'),'NO\x20ANSWER',_0x7de7('0xe'),_0x7de7('0xe'),'ANSWERED',_0x7de7('0x10'),_0x7de7('0xf'),_0x7de7('0xf'),_0x7de7('0xf')];config['redis']=_[_0x7de7('0x11')](config[_0x7de7('0x12')],{'host':_0x7de7('0x13'),'port':0x18eb});var io=require(_0x7de7('0x14'))(new Redis(config[_0x7de7('0x12')]));function VoiceCallReport(_0x2fd07b){this[_0x7de7('0x15')]=_0x2fd07b['channels'];this['agents']=_0x2fd07b['agents'];this[_0x7de7('0x16')]={};ami['on']('coreshowchannel',this['syncNewExten'][_0x7de7('0x17')](this));ami['on']('newexten',this[_0x7de7('0x18')]['bind'](this));ami['on']('newchannel',this['syncNewChannel']['bind'](this));ami['on'](_0x7de7('0x19'),this[_0x7de7('0x1a')]['bind'](this));ami['on'](_0x7de7('0x1b'),this[_0x7de7('0x1c')][_0x7de7('0x17')](this));ami['on'](_0x7de7('0x1d'),this[_0x7de7('0x1e')][_0x7de7('0x17')](this));ami['on']('newcallerid',this[_0x7de7('0x1f')]['bind'](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x7de7('0x17')](this));ami['on'](_0x7de7('0x20'),this['syncBlindTransfer'][_0x7de7('0x17')](this));ami['on']('musiconholdstart',this[_0x7de7('0x21')][_0x7de7('0x17')](this));ami['on'](_0x7de7('0x22'),this[_0x7de7('0x23')][_0x7de7('0x17')](this));try{logger[_0x7de7('0x24')](_0x7de7('0x25'));ami[_0x7de7('0x26')]();}catch(_0x4f4b0a){logger[_0x7de7('0x27')](_0x7de7('0x28'),util[_0x7de7('0x29')](_0x4f4b0a,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x7de7('0x2a')][_0x7de7('0x2b')]=function(_0x5d585b){return _0x5d585b!==null&&!_[_0x7de7('0x2c')](_0x5d585b);};VoiceCallReport['prototype'][_0x7de7('0x2d')]=function(_0xba75c1,_0x4c6a69,_0x2c883a){io['to'](_0xba75c1)['emit'](_0x4c6a69,_0x2c883a);};VoiceCallReport[_0x7de7('0x2a')][_0x7de7('0x1f')]=function(_0x301eb0){try{if(this[_0x7de7('0x2b')](_0x301eb0)){logger[_0x7de7('0x24')](_0x7de7('0x2e'),_0x301eb0[_0x7de7('0x2f')],_0x301eb0[_0x7de7('0x30')],_0x301eb0[_0x7de7('0x31')]);logger[_0x7de7('0x32')](_0x7de7('0x33'),_0x301eb0[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x301eb0,{'showHidden':![],'depth':null}));if(_0x301eb0[_0x7de7('0x2f')]===_0x301eb0[_0x7de7('0x34')]){if(!_['isUndefined'](this['channels'][_0x301eb0[_0x7de7('0x2f')]])){_[_0x7de7('0x35')](this[_0x7de7('0x15')][_0x301eb0['uniqueid']],_[_0x7de7('0x36')](_0x301eb0,_[_0x7de7('0x37')](this['channels'][_0x301eb0[_0x7de7('0x2f')]])));}}if(_0x301eb0[_0x7de7('0x38')]==='from-sip'){if(this['agents'][_0x301eb0[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]]){if(_0x301eb0['exten']==_0x7de7('0x3b')){this[_0x7de7('0x3c')][_0x301eb0[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x3d')]=_0x301eb0[_0x7de7('0x3e')];this[_0x7de7('0x2d')](util[_0x7de7('0x3f')](_0x7de7('0x40'),this['agents'][_0x301eb0[_0x7de7('0x39')]['split']('-')[0x0]][_0x7de7('0x41')]),_0x7de7('0x42'),{'destaccountcode':this[_0x7de7('0x3c')][_0x301eb0[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x43')],'destconnectedlinenum':_0x301eb0[_0x7de7('0x3e')]});}}}}}catch(_0x599f91){logger[_0x7de7('0x27')](_0x7de7('0x44'),_0x301eb0[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x599f91,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7de7('0x2a')][_0x7de7('0x45')]=function(_0x96cd9c){try{if(this[_0x7de7('0x2b')](_0x96cd9c)){logger[_0x7de7('0x32')](_0x7de7('0x46'),_0x96cd9c[_0x7de7('0x2f')],util['inspect'](_0x96cd9c,{'showHidden':![],'depth':null}));if(_0x96cd9c[_0x7de7('0x2f')]===_0x96cd9c[_0x7de7('0x34')]&&_0x96cd9c[_0x7de7('0x39')]!=_0x7de7('0x47')){if(_[_0x7de7('0x2c')](this['channels'][_0x96cd9c['uniqueid']])){logger['info'](_0x7de7('0x48'),_0x96cd9c['uniqueid'],_0x96cd9c[_0x7de7('0x38')],_0x96cd9c[_0x7de7('0x49')]);this['channels'][_0x96cd9c['uniqueid']]=new Channel();this[_0x7de7('0x15')][_0x96cd9c[_0x7de7('0x2f')]][_0x7de7('0x4a')]=moment()[_0x7de7('0x3f')](_0x7de7('0x4b'));this['channels'][_0x96cd9c[_0x7de7('0x2f')]][_0x7de7('0x4c')]=dispositions[_[_0x7de7('0x4d')](_0x96cd9c[_0x7de7('0x4e')])];_[_0x7de7('0x35')](this[_0x7de7('0x15')][_0x96cd9c[_0x7de7('0x2f')]],_[_0x7de7('0x36')](_0x96cd9c,_['keys'](this[_0x7de7('0x15')][_0x96cd9c[_0x7de7('0x2f')]])));if(_0x96cd9c[_0x7de7('0x38')]==='from-sip'){if(this[_0x7de7('0x3c')][_0x96cd9c[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]]){if(_[_0x7de7('0x2c')](this[_0x7de7('0x3c')][_0x96cd9c[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x3d')])){this[_0x7de7('0x3c')][_0x96cd9c[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x3d')]=_0x96cd9c[_0x7de7('0x49')];logger[_0x7de7('0x32')](_0x7de7('0x4f'),_0x96cd9c['uniqueid'],util[_0x7de7('0x29')]({'id':this['agents'][_0x96cd9c[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x7de7('0x3c')][_0x96cd9c['channel'][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x43')],'destconnectedlinenum':_0x96cd9c['exten']},{'showHidden':![],'depth':null}));this[_0x7de7('0x2d')](util[_0x7de7('0x3f')]('user:%s',this[_0x7de7('0x3c')][_0x96cd9c[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x41')]),_0x7de7('0x42'),{'id':this[_0x7de7('0x3c')][_0x96cd9c['channel']['split']('-')[0x0]]['id'],'destaccountcode':this[_0x7de7('0x3c')][_0x96cd9c['channel'][_0x7de7('0x3a')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x96cd9c[_0x7de7('0x49')]});}}}}}}}catch(_0x47dc46){logger[_0x7de7('0x27')](_0x7de7('0x50'),_0x96cd9c['uniqueid'],util['inspect'](_0x47dc46,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7de7('0x2a')][_0x7de7('0x18')]=function(_0x39cadc){try{if(this[_0x7de7('0x2b')](_0x39cadc)){logger[_0x7de7('0x32')](_0x7de7('0x51'),_0x39cadc[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x39cadc,{'showHidden':![],'depth':null}));if(_0x39cadc[_0x7de7('0x2f')]===_0x39cadc[_0x7de7('0x34')]&&_0x39cadc[_0x7de7('0x49')]!='h'&&_0x39cadc[_0x7de7('0x39')]!=_0x7de7('0x47')){_0x39cadc[_0x7de7('0x52')]=_0x39cadc['application'][_0x7de7('0x53')]();_0x39cadc[_0x7de7('0x54')]=_0x39cadc[_0x7de7('0x55')]&&_0x39cadc[_0x7de7('0x55')]['startsWith'](_0x7de7('0x56'))?_0x39cadc[_0x7de7('0x55')]:(_0x39cadc['appdata']||_0x39cadc[_0x7de7('0x54')])[_0x7de7('0x53')]();logger['info']('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x39cadc[_0x7de7('0x2f')],_0x39cadc[_0x7de7('0x52')],_0x39cadc[_0x7de7('0x54')]);if(_[_0x7de7('0x2c')](this[_0x7de7('0x15')][_0x39cadc[_0x7de7('0x2f')]])){this[_0x7de7('0x15')][_0x39cadc[_0x7de7('0x2f')]]=new Channel();this[_0x7de7('0x15')][_0x39cadc['uniqueid']][_0x7de7('0x4a')]=_0x39cadc[_0x7de7('0x57')]?moment()[_0x7de7('0x58')](moment[_0x7de7('0x57')](_0x39cadc[_0x7de7('0x57')])[_0x7de7('0x59')](),'seconds')[_0x7de7('0x3f')](_0x7de7('0x4b')):moment()[_0x7de7('0x3f')](_0x7de7('0x4b'));this[_0x7de7('0x15')][_0x39cadc['uniqueid']][_0x7de7('0x4c')]=_0x7de7('0xe');}_['merge'](this[_0x7de7('0x15')][_0x39cadc[_0x7de7('0x2f')]],_[_0x7de7('0x36')](_0x39cadc,_['keys'](this[_0x7de7('0x15')][_0x39cadc[_0x7de7('0x2f')]])));if(_['includes'](applications,_0x39cadc[_0x7de7('0x52')])){this[_0x7de7('0x15')][_0x39cadc[_0x7de7('0x2f')]][_0x7de7('0x5a')]=_0x39cadc['application'];this[_0x7de7('0x15')][_0x39cadc[_0x7de7('0x2f')]][_0x7de7('0x5b')]=_0x39cadc['applicationdata'];if(_0x39cadc['application']===_0x7de7('0x5c')&&_[_0x7de7('0x5d')](_0x39cadc[_0x7de7('0x54')][_0x7de7('0x53')](),_0x7de7('0x5e'))){var _0x2c82e7=_0x39cadc[_0x7de7('0x54')][_0x7de7('0x3a')]('=');var _0x196967=_0x2c82e7[0x0][_0x7de7('0x53')]()[_0x7de7('0x5f')](/cdr\((.*)\)/);if(_0x196967){this[_0x7de7('0x15')][_0x39cadc['uniqueid']][_0x196967[0x1]]=_0x2c82e7[0x1];}}else if(_0x39cadc[_0x7de7('0x52')]===_0x7de7('0xa')){this[_0x7de7('0x15')][_0x39cadc['uniqueid']][_0x7de7('0xa')]=_0x39cadc[_0x7de7('0x54')][_0x7de7('0x3a')](',')[0x0];}}}}}catch(_0x406b56){logger[_0x7de7('0x27')]('[%s][voiceCallReport][newexten]',_0x39cadc[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x406b56,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7de7('0x2a')][_0x7de7('0x1a')]=function(_0x421819){try{if(this[_0x7de7('0x2b')](_0x421819)){logger[_0x7de7('0x24')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x421819['uniqueid'],_0x421819[_0x7de7('0x34')],_0x421819[_0x7de7('0x30')],_0x421819[_0x7de7('0x31')]);logger['debug'](_0x7de7('0x60'),_0x421819['uniqueid'],util[_0x7de7('0x29')](_0x421819,{'showHidden':![],'depth':null}));if(_0x421819['uniqueid']!==_0x421819[_0x7de7('0x34')]){if(this[_0x7de7('0x15')][_0x421819[_0x7de7('0x34')]]){if(_0x421819[_0x7de7('0x4e')]==='6'){if(!this[_0x7de7('0x15')][_0x421819[_0x7de7('0x34')]][_0x7de7('0x61')]){var _0x61afd8=moment();this[_0x7de7('0x15')][_0x421819[_0x7de7('0x34')]][_0x7de7('0x61')]=!![];this[_0x7de7('0x15')][_0x421819['linkedid']][_0x7de7('0x62')]=_0x61afd8['format'](_0x7de7('0x4b'));if(this['channels'][_0x421819[_0x7de7('0x34')]][_0x7de7('0x4a')]){this['channels'][_0x421819[_0x7de7('0x34')]][_0x7de7('0x63')]=_0x61afd8[_0x7de7('0x64')](this['channels'][_0x421819['linkedid']][_0x7de7('0x4a')],_0x7de7('0x59'));}}this['channels'][_0x421819['linkedid']]['linkedid']=_0x421819['uniqueid'];if(_0x421819[_0x7de7('0x31')]!==_0x7de7('0x3b')){this[_0x7de7('0x15')][_0x421819[_0x7de7('0x34')]]['connectedlinenum']=_0x421819[_0x7de7('0x31')];}this[_0x7de7('0x15')][_0x421819[_0x7de7('0x34')]][_0x7de7('0x65')]=_0x421819['calleridname'];this['channels'][_0x421819[_0x7de7('0x34')]][_0x7de7('0x66')]=_0x421819['channel'];this[_0x7de7('0x15')][_0x421819[_0x7de7('0x34')]][_0x7de7('0x4c')]=dispositions[_['toNumber'](_0x421819[_0x7de7('0x4e')])];if(this[_0x7de7('0x3c')][_0x421819[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]]){this[_0x7de7('0x15')][_0x421819['linkedid']][_0x7de7('0x67')]=this[_0x7de7('0x3c')][_0x421819['channel']['split']('-')[0x0]]['id'];this[_0x7de7('0x15')][_0x421819[_0x7de7('0x34')]][_0x7de7('0x68')]=this[_0x7de7('0x3c')][_0x421819['channel']['split']('-')[0x0]][_0x7de7('0x41')];}}}}else{if(this[_0x7de7('0x15')][_0x421819[_0x7de7('0x2f')]]){if(_0x421819[_0x7de7('0x4e')]==='6'){if(this[_0x7de7('0x3c')][_0x421819[_0x7de7('0x39')]['split']('-')[0x0]]){this['channels'][_0x421819['uniqueid']][_0x7de7('0x67')]=this[_0x7de7('0x3c')][_0x421819[_0x7de7('0x39')]['split']('-')[0x0]]['id'];this['channels'][_0x421819[_0x7de7('0x2f')]][_0x7de7('0x68')]=this[_0x7de7('0x3c')][_0x421819['channel'][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x41')];}}}}if(_0x421819[_0x7de7('0x4e')]==='6'&&_0x421819[_0x7de7('0x38')]===_0x7de7('0x69')){if(this[_0x7de7('0x3c')][_0x421819[_0x7de7('0x39')]['split']('-')[0x0]]){this[_0x7de7('0x3c')][_0x421819[_0x7de7('0x39')]['split']('-')[0x0]][_0x7de7('0x3d')]=_0x421819[_0x7de7('0x49')];var _0x1b7b1f,_0x342d29;if(this['channels'][_0x421819[_0x7de7('0x2f')]]){_0x1b7b1f=this[_0x7de7('0x15')][_0x421819[_0x7de7('0x2f')]][_0x7de7('0x6a')];_0x342d29=this[_0x7de7('0x15')][_0x421819['uniqueid']][_0x7de7('0xa')];}else if(this[_0x7de7('0x15')][_0x421819['linkedid']]){_0x1b7b1f=this['channels'][_0x421819[_0x7de7('0x34')]][_0x7de7('0x6a')];_0x342d29=this[_0x7de7('0x15')][_0x421819[_0x7de7('0x34')]][_0x7de7('0xa')];}logger[_0x7de7('0x32')](_0x7de7('0x6b'),_0x421819[_0x7de7('0x2f')],util[_0x7de7('0x29')]({'id':this['agents'][_0x421819[_0x7de7('0x39')]['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x421819[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x43')],'destconnectedlinenum':_0x421819['exten'],'routealias':_0x1b7b1f,'queue':_0x342d29||undefined},{'showHidden':![],'depth':null}));this[_0x7de7('0x2d')](util[_0x7de7('0x3f')](_0x7de7('0x40'),this['agents'][_0x421819[_0x7de7('0x39')]['split']('-')[0x0]]['name']),_0x7de7('0x42'),{'id':this[_0x7de7('0x3c')][_0x421819[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this['agents'][_0x421819[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x43')],'destconnectedlinenum':_0x421819[_0x7de7('0x49')],'routealias':_0x1b7b1f,'queue':_0x342d29||undefined});}}}}catch(_0xf404ff){logger[_0x7de7('0x27')](_0x7de7('0x6c'),_0x421819[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0xf404ff,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7de7('0x2a')][_0x7de7('0x6d')]=function(_0x536de5,_0x59fd9e){try{if(this[_0x7de7('0x15')][_0x536de5]){logger[_0x7de7('0x24')](_0x7de7('0x6e'),_0x536de5,_0x59fd9e);this[_0x7de7('0x15')][_0x536de5][_0x7de7('0x6f')]=!![];if(_[_0x7de7('0x70')](_0x59fd9e,_0x7de7('0x71'))){_0x59fd9e=_0x59fd9e[_0x7de7('0x72')]('.wav49',_0x7de7('0x73'));}this[_0x7de7('0x15')][_0x536de5][_0x7de7('0x74')]=_0x59fd9e;var _0x2889ae=_['find'](this[_0x7de7('0x15')][_0x536de5][_0x7de7('0x75')],{'filename':_0x59fd9e});if(_[_0x7de7('0x76')](_0x2889ae)){this['channels'][_0x536de5][_0x7de7('0x75')][_0x7de7('0x77')]({'filename':_0x59fd9e,'createdAt':moment()[_0x7de7('0x3f')](_0x7de7('0x4b')),'mixmonitorid':'','status':_0x7de7('0x78')});}}}catch(_0x43500f){logger[_0x7de7('0x27')](_0x7de7('0x79'),_0x536de5,util[_0x7de7('0x29')](_0x43500f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7de7('0x2a')]['syncVarSet']=function(_0x498919){try{if(this[_0x7de7('0x2b')](_0x498919)){logger[_0x7de7('0x32')]('[%s][voiceCallReport][varset]\x20event:',_0x498919[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x498919,{'showHidden':![],'depth':null}));if(this['channels'][_0x498919[_0x7de7('0x2f')]]&&_0x498919['channel']!='OutgoingSpoolFailed'){if(this[_0x7de7('0x2b')](_0x498919[_0x7de7('0x7a')])){if(this[_0x7de7('0x2b')](_0x498919['variable'][_0x7de7('0x7b')])){logger[_0x7de7('0x24')](_0x7de7('0x7c'),_0x498919['uniqueid'],_0x498919['value']);this[_0x7de7('0x6d')](_0x498919[_0x7de7('0x2f')],_0x498919[_0x7de7('0x7d')]);}else if(this[_0x7de7('0x2b')](_0x498919[_0x7de7('0x7a')]['xmd-phone'])){logger[_0x7de7('0x24')](_0x7de7('0x7e'),_0x498919[_0x7de7('0x2f')],_0x498919[_0x7de7('0x7d')]);this[_0x7de7('0x15')][_0x498919['uniqueid']]['calleridnum']=_0x498919['value'];}else if(this['isNotNull'](_0x498919['variable'][_0x7de7('0x7f')])){logger[_0x7de7('0x24')](_0x7de7('0x80'),_0x498919[_0x7de7('0x2f')],_0x498919[_0x7de7('0x7d')]);this[_0x7de7('0x15')][_0x498919[_0x7de7('0x2f')]][_0x7de7('0x81')]=_0x498919['value'];}else if(this[_0x7de7('0x2b')](_0x498919['variable']['xmd-cdrtype'])){logger['info'](_0x7de7('0x82'),_0x498919['uniqueid'],_0x498919[_0x7de7('0x7d')]);this[_0x7de7('0x15')][_0x498919[_0x7de7('0x2f')]][_0x7de7('0x83')]=_0x498919['value'];}else if(this[_0x7de7('0x2b')](_0x498919['variable'][_0x7de7('0x84')])){logger[_0x7de7('0x24')](_0x7de7('0x85'),_0x498919[_0x7de7('0x2f')],_0x498919[_0x7de7('0x7d')][_0x7de7('0x3a')](',')[0x0]);this['channels'][_0x498919[_0x7de7('0x2f')]][_0x7de7('0xa')]=_0x498919['value']['split'](',')[0x0];}else if(this[_0x7de7('0x2b')](_0x498919[_0x7de7('0x7a')][_0x7de7('0x86')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x498919[_0x7de7('0x2f')],_0x498919[_0x7de7('0x7d')]);this[_0x7de7('0x15')][_0x498919[_0x7de7('0x2f')]]['originatecalleridnum']=_0x498919[_0x7de7('0x7d')];}else if(this[_0x7de7('0x2b')](_0x498919[_0x7de7('0x7a')][_0x7de7('0x87')])){logger[_0x7de7('0x24')](_0x7de7('0x88'),_0x498919[_0x7de7('0x2f')],_0x498919['value']);this[_0x7de7('0x15')][_0x498919['uniqueid']]['destination']=_0x498919[_0x7de7('0x7d')];}else if(this[_0x7de7('0x2b')](_0x498919[_0x7de7('0x7a')][_0x7de7('0x89')])){logger[_0x7de7('0x24')](_0x7de7('0x8a'),_0x498919['uniqueid'],_0x498919[_0x7de7('0x7d')]);this[_0x7de7('0x15')][_0x498919[_0x7de7('0x2f')]][_0x7de7('0x8b')]=_0x498919[_0x7de7('0x7d')];}else if(this[_0x7de7('0x2b')](_0x498919[_0x7de7('0x7a')][_0x7de7('0x8c')])){logger[_0x7de7('0x24')](_0x7de7('0x8d'),_0x498919[_0x7de7('0x2f')],_0x498919[_0x7de7('0x7d')]);this[_0x7de7('0x15')][_0x498919['uniqueid']][_0x7de7('0xa')]=_0x498919['value'];}else if(this[_0x7de7('0x2b')](_0x498919[_0x7de7('0x7a')][_0x7de7('0x8e')])){logger[_0x7de7('0x24')](_0x7de7('0x8f'),_0x498919[_0x7de7('0x2f')],_0x498919[_0x7de7('0x7d')]);this[_0x7de7('0x15')][_0x498919[_0x7de7('0x2f')]]['sipcalluniqueid']=_0x498919['value'];}}}else if(this[_0x7de7('0x2b')](_0x498919[_0x7de7('0x7a')][_0x7de7('0x7b')])){if(_0x498919[_0x7de7('0x7d')]){var _0x6d0da5=path['parse'](_0x498919['value'])['name'];logger['info'](_0x7de7('0x7c'),_0x6d0da5,_0x498919[_0x7de7('0x7d')]);this['syncMixMonitorFilename'](_0x6d0da5,_0x498919[_0x7de7('0x7d')]);}}else if(this[_0x7de7('0x15')][_0x498919['linkedid']]){if(this[_0x7de7('0x2b')](_0x498919[_0x7de7('0x7a')])){if(this[_0x7de7('0x2b')](_0x498919[_0x7de7('0x7a')][_0x7de7('0x8e')])){logger['info'](_0x7de7('0x8f'),_0x498919['linkedid'],_0x498919[_0x7de7('0x7d')]);this[_0x7de7('0x15')][_0x498919[_0x7de7('0x34')]][_0x7de7('0x90')]=_0x498919['value'];}}}}}catch(_0x7cea17){logger[_0x7de7('0x27')](_0x7de7('0x91'),_0x498919[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x7cea17,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7de7('0x2a')][_0x7de7('0x1e')]=function(_0x35d9cb){try{if(this[_0x7de7('0x2b')](_0x35d9cb)){logger['debug'](_0x7de7('0x92'),_0x35d9cb[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x35d9cb,{'showHidden':![],'depth':null}));if(this[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]]){logger[_0x7de7('0x24')]('[%s][voiceCallReport][hangup]\x20reason:%s',_0x35d9cb[_0x7de7('0x2f')],_0x35d9cb[_0x7de7('0x93')]);var _0x2e645c=moment();this[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]]['endtime']=_0x2e645c[_0x7de7('0x3f')](_0x7de7('0x4b'));this[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]][_0x7de7('0x57')]=_0x2e645c[_0x7de7('0x64')](this[_0x7de7('0x15')][_0x35d9cb['uniqueid']][_0x7de7('0x4a')],_0x7de7('0x59'));if(this[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]][_0x7de7('0x61')]){this[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]][_0x7de7('0x94')]=_0x2e645c[_0x7de7('0x64')](this[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]][_0x7de7('0x62')],'seconds');this[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]]['holdtime']=this[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]][_0x7de7('0x57')]-this[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]][_0x7de7('0x94')];}if(_0x35d9cb[_0x7de7('0x38')]===_0x7de7('0x69')){if(this['agents'][_0x35d9cb['channel']['split']('-')[0x0]]){this['agents'][_0x35d9cb[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]]=_[_0x7de7('0x95')](this[_0x7de7('0x3c')][_0x35d9cb['channel']['split']('-')[0x0]],[_0x7de7('0x3d')]);logger[_0x7de7('0x32')]('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x35d9cb[_0x7de7('0x2f')],util[_0x7de7('0x29')]({'id':this[_0x7de7('0x3c')][_0x35d9cb[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x7de7('0x3c')][_0x35d9cb[_0x7de7('0x39')][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x43')]},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x7de7('0x40'),this[_0x7de7('0x3c')][_0x35d9cb['channel'][_0x7de7('0x3a')]('-')[0x0]][_0x7de7('0x41')]),_0x7de7('0x96'),{'id':this['agents'][_0x35d9cb['channel'][_0x7de7('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x7de7('0x3c')][_0x35d9cb[_0x7de7('0x39')]['split']('-')[0x0]][_0x7de7('0x43')]});for(var _0x1d9869=0x0;_0x1d9869<Object['keys'](this[_0x7de7('0x3c')])[_0x7de7('0x97')];_0x1d9869++){var _0x34f336=Object[_0x7de7('0x37')](this[_0x7de7('0x3c')])[_0x1d9869];var _0x1c389c=this[_0x7de7('0x3c')][_0x34f336];if(_0x1c389c[_0x7de7('0x43')]===Number(_0x35d9cb[_0x7de7('0x3e')])){this[_0x7de7('0x2d')](util['format']('user:%s',_0x1c389c['name']),_0x7de7('0x96'),{'id':_0x1c389c['id'],'destaccountcode':_0x1c389c[_0x7de7('0x43')]});break;}}}}var _0x5c78cf=this;Promise[_0x7de7('0x98')]()['then'](function(){var _0x2101b5=_0x5c78cf[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]];if(typeof _0x2101b5['transferType']===_0x7de7('0x99'))return;if(_['isEmpty'](_0x2101b5['monitors']))return;return RpcSetting[_0x7de7('0x9a')]()['then'](function(_0x56097e){if(!_0x56097e[_0x7de7('0x9b')])return;return Promise['resolve']()[_0x7de7('0x9c')](function(){return ami[_0x7de7('0x9d')]({'action':_0x7de7('0x9e'),'channel':_0x2101b5[_0x7de7('0x39')]})[_0x7de7('0x9f')](function(){});})['then'](function(){return ami['Action']({'action':_0x7de7('0x9e'),'channel':_0x2101b5[_0x7de7('0x66')]})[_0x7de7('0x9f')](function(){})[_0x7de7('0xa0')](function(){var _0x4a42cb=_0x5c78cf[_0x7de7('0x3c')][_0x2101b5[_0x7de7('0x66')][_0x7de7('0x3a')]('-')[0x0]];if(!_0x4a42cb)return;io['emit'](_0x7de7('0xa1'),{'agentId':_0x4a42cb['id'],'uniqueid':_0x2101b5[_0x7de7('0x2f')]});});});});})[_0x7de7('0x9c')](function(){if(_0x35d9cb['event']===_0x7de7('0xa2')){_0x5c78cf['blindTransfers'][_0x35d9cb[_0x7de7('0x2f')]]=_0x5c78cf['channels'][_0x35d9cb[_0x7de7('0x2f')]];}else{if(_0x5c78cf[_0x7de7('0x15')][_0x35d9cb['uniqueid']]['type']===_0x7de7('0xa3')&&_0x5c78cf[_0x7de7('0x16')][_0x35d9cb[_0x7de7('0x2f')]]){_0x5c78cf[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]]['uniqueid']=[_0x5c78cf[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]][_0x7de7('0x34')],_0x5c78cf[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]][_0x7de7('0x34')]=_0x5c78cf[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]]['uniqueid']][0x0];delete _0x5c78cf['blindTransfers'][_0x35d9cb['uniqueid']];}}logger[_0x7de7('0x32')](_0x7de7('0xa4'),_0x35d9cb[_0x7de7('0x2f')],util['inspect'](_0x5c78cf['channels'][_0x35d9cb[_0x7de7('0x2f')]],{'showHidden':![],'depth':null}));ami[_0x7de7('0x2d')](_0x7de7('0xa5'),_0x5c78cf[_0x7de7('0x15')][_0x35d9cb[_0x7de7('0x2f')]]);delete _0x5c78cf[_0x7de7('0x15')][_0x35d9cb['uniqueid']];});}}}catch(_0x114333){logger[_0x7de7('0x27')](_0x7de7('0xa6'),_0x35d9cb[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x114333,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7de7('0x2a')][_0x7de7('0xa7')]=function(_0x5d1aa9){try{if(this[_0x7de7('0x2b')](_0x5d1aa9)){logger['info'](_0x7de7('0xa8'),_0x5d1aa9[_0x7de7('0x2f')],_0x5d1aa9[_0x7de7('0xa9')],_0x5d1aa9[_0x7de7('0xaa')]);logger[_0x7de7('0x32')](_0x7de7('0xab'),_0x5d1aa9['uniqueid'],util[_0x7de7('0x29')](_0x5d1aa9,{'showHidden':![],'depth':null}));var _0x1843a6;if(this[_0x7de7('0x15')][_0x5d1aa9['transfereeuniqueid']]){this['channels'][_0x5d1aa9[_0x7de7('0xac')]]['transfercalleridnum']=_0x5d1aa9[_0x7de7('0xa9')];this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xac')]][_0x7de7('0xad')]=_0x5d1aa9[_0x7de7('0xaa')];if(this[_0x7de7('0x15')][_0x5d1aa9['secondtransfereruniqueid']]){_0x1843a6=this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xae')]];this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xae')]]=this[_0x7de7('0x15')][_0x5d1aa9['transfereeuniqueid']];this['channels'][_0x5d1aa9[_0x7de7('0xac')]]=_0x1843a6;}}else if(this[_0x7de7('0x15')][_0x5d1aa9['transfertargetuniqueid']]){this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xaf')]][_0x7de7('0xb0')]=_0x5d1aa9[_0x7de7('0xa9')];this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xaf')]][_0x7de7('0xad')]=_0x5d1aa9[_0x7de7('0xaa')];if(this['channels'][_0x5d1aa9['origtransfereruniqueid']]){_0x1843a6=this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xb1')]];this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xb1')]]=this['channels'][_0x5d1aa9[_0x7de7('0xaf')]];this[_0x7de7('0x15')][_0x5d1aa9['transfertargetuniqueid']]=_0x1843a6;}}if((this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xb1')]]||this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xb2')]])&&this['channels'][_0x5d1aa9['secondtransfereruniqueid']]){var _0x1f900d=_[_0x7de7('0xb3')]([this['channels'][_0x5d1aa9[_0x7de7('0xb1')]],this['channels'][_0x5d1aa9[_0x7de7('0xb2')]],this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xae')]]],function(_0xde752d){return _0xde752d&&_0xde752d[_0x7de7('0x83')]===_0x7de7('0xa3')&&_0xde752d[_0x7de7('0xb4')];});if(_0x1f900d){if(this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xb1')]])this[_0x7de7('0x15')][_0x5d1aa9['origtransfereruniqueid']][_0x7de7('0xb5')]=_0x7de7('0xb6');if(this['channels'][_0x5d1aa9['origtransfererlinkedid']])this[_0x7de7('0x15')][_0x5d1aa9['origtransfererlinkedid']][_0x7de7('0xb5')]=_0x7de7('0xb6');this[_0x7de7('0x15')][_0x5d1aa9[_0x7de7('0xae')]][_0x7de7('0xb5')]=_0x7de7('0xb6');}}}}catch(_0x4c3dcf){logger[_0x7de7('0x27')](_0x7de7('0xb7'),_0x5d1aa9['uniqueid'],util[_0x7de7('0x29')](_0x4c3dcf,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x7de7('0xb8')]=function(_0x5e966a){try{if(this[_0x7de7('0x2b')](_0x5e966a)){logger[_0x7de7('0x24')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x5e966a[_0x7de7('0x2f')],_0x5e966a[_0x7de7('0xb9')],_0x5e966a[_0x7de7('0xba')]);logger[_0x7de7('0x32')](_0x7de7('0xbb'),_0x5e966a[_0x7de7('0x2f')],util['inspect'](_0x5e966a,{'showHidden':![],'depth':null}));if(this[_0x7de7('0x15')][_0x5e966a[_0x7de7('0xac')]]){this[_0x7de7('0x15')][_0x5e966a[_0x7de7('0xac')]][_0x7de7('0xb0')]=_0x5e966a[_0x7de7('0xb9')];this[_0x7de7('0x15')][_0x5e966a[_0x7de7('0xac')]]['transferconnectedlinenum']=_0x5e966a[_0x7de7('0xba')];this['channels'][_0x5e966a[_0x7de7('0xac')]][_0x7de7('0xb5')]=_0x7de7('0xbc');this[_0x7de7('0x1e')]({'event':_0x7de7('0xa2'),'uniqueid':_0x5e966a[_0x7de7('0xac')],'context':_0x5e966a[_0x7de7('0x38')],'channel':_0x5e966a[_0x7de7('0xbd')]});}else{this['channels'][_0x5e966a[_0x7de7('0xbe')]][_0x7de7('0xb5')]=_0x7de7('0xbc');}}}catch(_0x247630){logger[_0x7de7('0x27')]('[%s][voiceCallReport][blindtransfer]',_0x5e966a[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x247630,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7de7('0x2a')][_0x7de7('0x21')]=function(_0x2e2063){try{if(this[_0x7de7('0x2b')](_0x2e2063)){logger['debug']('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x2e2063['uniqueid'],util[_0x7de7('0x29')](_0x2e2063,{'showHidden':![],'depth':null}));if(this[_0x7de7('0x15')][_0x2e2063[_0x7de7('0x2f')]]){if(!_['isNil'](this['channels'][_0x2e2063[_0x7de7('0x2f')]][_0x7de7('0x62')])){this[_0x7de7('0x15')][_0x2e2063[_0x7de7('0x2f')]][_0x7de7('0xbf')]=moment()[_0x7de7('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x7de7('0x24')](_0x7de7('0xc0'),_0x2e2063[_0x7de7('0x2f')],this[_0x7de7('0x15')][_0x2e2063[_0x7de7('0x2f')]][_0x7de7('0xbf')]);}}}}catch(_0x562628){logger[_0x7de7('0x27')](_0x7de7('0xc1'),_0x2e2063[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x562628,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7de7('0x2a')][_0x7de7('0x23')]=function(_0x24933e){try{if(this[_0x7de7('0x2b')](_0x24933e)){logger['debug'](_0x7de7('0xc2'),_0x24933e[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x24933e,{'showHidden':![],'depth':null}));if(this[_0x7de7('0x15')][_0x24933e['uniqueid']]){if(!_[_0x7de7('0x76')](this['channels'][_0x24933e[_0x7de7('0x2f')]][_0x7de7('0xbf')])){this[_0x7de7('0x15')][_0x24933e[_0x7de7('0x2f')]]['mohtime']+=moment()[_0x7de7('0xc3')](0x0)[_0x7de7('0x64')](this[_0x7de7('0x15')][_0x24933e['uniqueid']][_0x7de7('0xbf')],_0x7de7('0x59'));logger[_0x7de7('0x24')](_0x7de7('0xc4'),_0x24933e['uniqueid'],this[_0x7de7('0x15')][_0x24933e[_0x7de7('0x2f')]][_0x7de7('0xc5')]);delete this[_0x7de7('0x15')][_0x24933e['uniqueid']][_0x7de7('0xbf')];}}}}catch(_0x4b01d1){logger['error'](_0x7de7('0xc6'),_0x24933e[_0x7de7('0x2f')],util[_0x7de7('0x29')](_0x4b01d1,{'showHidden':![],'depth':null}));}};module[_0x7de7('0xc7')]=VoiceCallReport;
\ No newline at end of file
+var _0xb77c=['callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','cause-txt','endtime','diff','billableseconds','user:agentcomplete','resolve','transferType','undefined','isEmpty','getSettings','then','stopRecordingOnTransfer','StopMixMonitor','catch','Action','webbar:stopmonitors','event','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','transfercalleridnum','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','routeid','ATTENDED','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfereecalleridnum','BLIND','BlindTransfer','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','bluebird','lodash','moment','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','inuse','busy','unavailable','ringing','ringinuse','agi','dial','playback','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','newexten','bind','newchannel','syncNewChannel','syncNewState','varset','syncVarSet','hangup','syncHangup','syncNewCallerId','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isUndefined','emit','calleridname','debug','uniqueid','linkedid','pick','keys','context','from-sip','channel','split','exten','format','user:%s','name','user:agentconnect','accountcode','isNotNull','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','merge','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','application','toLowerCase','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','applicationdata','duration','subtract','seconds','lastapplication','set','startsWith','cdr(','match','queue','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridnum','answered','answertime','holdtime','xcally-motion-preview','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.WAV','monitorFilename','find','monitors','isNil','[%s][voiceCallReport][mixMonitorFilename]','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','syncMixMonitorFilename','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s'];(function(_0xc77097,_0x692da6){var _0x436c6d=function(_0x5739ba){while(--_0x5739ba){_0xc77097['push'](_0xc77097['shift']());}};_0x436c6d(++_0x692da6);}(_0xb77c,0x1d2));var _0xcb77=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0xb77c[_0x341e0f];return _0x59555a;};'use strict';var BPromise=require(_0xcb77('0x0'));var _=require(_0xcb77('0x1'));var moment=require(_0xcb77('0x2'));var util=require('util');var path=require(_0xcb77('0x3'));var Redis=require(_0xcb77('0x4'));var config=require(_0xcb77('0x5'));var logger=require(_0xcb77('0x6'))(_0xcb77('0x7'));var ami=require(_0xcb77('0x8'));var Channel=require(_0xcb77('0x9'));var RpcSetting=require(_0xcb77('0xa'));var statusDesc=[_0xcb77('0xb'),_0xcb77('0xc'),_0xcb77('0xd'),_0xcb77('0xe'),'invalid',_0xcb77('0xf'),_0xcb77('0x10'),_0xcb77('0x11'),'onhold'];var applications=['set','queue',_0xcb77('0x12'),_0xcb77('0x13'),_0xcb77('0x14'),'voicemail'];var dispositions=[_0xcb77('0x15'),_0xcb77('0x16'),_0xcb77('0x16'),_0xcb77('0x15'),_0xcb77('0x15'),'NO\x20ANSWER',_0xcb77('0x17'),_0xcb77('0x18'),_0xcb77('0x16'),'FAILED','FAILED'];var actions={};config[_0xcb77('0x19')]=_[_0xcb77('0x1a')](config[_0xcb77('0x19')],{'host':_0xcb77('0x1b'),'port':0x18eb});var io=require(_0xcb77('0x1c'))(new Redis(config['redis']));function VoiceCallReport(_0x51defd){this[_0xcb77('0x1d')]=_0x51defd[_0xcb77('0x1d')];this[_0xcb77('0x1e')]=_0x51defd[_0xcb77('0x1e')];this[_0xcb77('0x1f')]={};ami['on'](_0xcb77('0x20'),this[_0xcb77('0x21')]['bind'](this));ami['on'](_0xcb77('0x22'),this[_0xcb77('0x21')][_0xcb77('0x23')](this));ami['on'](_0xcb77('0x24'),this[_0xcb77('0x25')][_0xcb77('0x23')](this));ami['on']('newstate',this[_0xcb77('0x26')][_0xcb77('0x23')](this));ami['on'](_0xcb77('0x27'),this[_0xcb77('0x28')]['bind'](this));ami['on'](_0xcb77('0x29'),this[_0xcb77('0x2a')]['bind'](this));ami['on']('newcallerid',this[_0xcb77('0x2b')][_0xcb77('0x23')](this));ami['on']('attendedtransfer',this[_0xcb77('0x2c')][_0xcb77('0x23')](this));ami['on'](_0xcb77('0x2d'),this[_0xcb77('0x2e')][_0xcb77('0x23')](this));ami['on'](_0xcb77('0x2f'),this[_0xcb77('0x30')][_0xcb77('0x23')](this));ami['on'](_0xcb77('0x31'),this[_0xcb77('0x32')][_0xcb77('0x23')](this));try{logger[_0xcb77('0x33')](_0xcb77('0x34'));ami[_0xcb77('0x35')]();}catch(_0x9ef28a){logger[_0xcb77('0x36')](_0xcb77('0x37'),util[_0xcb77('0x38')](_0x9ef28a,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xcb77('0x39')]['isNotNull']=function(_0x1e98e2){return _0x1e98e2!==null&&!_[_0xcb77('0x3a')](_0x1e98e2);};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x3b')]=function(_0x5dfc1f,_0x1e88dc,_0x3d5ecb){io['to'](_0x5dfc1f)[_0xcb77('0x3b')](_0x1e88dc,_0x3d5ecb);};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x2b')]=function(_0x441828){try{if(this['isNotNull'](_0x441828)){logger[_0xcb77('0x33')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x441828['uniqueid'],_0x441828[_0xcb77('0x3c')],_0x441828['calleridnum']);logger[_0xcb77('0x3d')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x441828['uniqueid'],util['inspect'](_0x441828,{'showHidden':![],'depth':null}));if(_0x441828[_0xcb77('0x3e')]===_0x441828[_0xcb77('0x3f')]){if(!_[_0xcb77('0x3a')](this[_0xcb77('0x1d')][_0x441828['uniqueid']])){_['merge'](this[_0xcb77('0x1d')][_0x441828[_0xcb77('0x3e')]],_[_0xcb77('0x40')](_0x441828,_[_0xcb77('0x41')](this['channels'][_0x441828[_0xcb77('0x3e')]])));}}if(_0x441828[_0xcb77('0x42')]===_0xcb77('0x43')){if(this[_0xcb77('0x1e')][_0x441828[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]){if(_0x441828[_0xcb77('0x46')]=='xcally-motion-preview'){this[_0xcb77('0x1e')][_0x441828['channel']['split']('-')[0x0]]['destconnectedlinenum']=_0x441828['connectedlinenum'];this[_0xcb77('0x3b')](util[_0xcb77('0x47')](_0xcb77('0x48'),this['agents'][_0x441828[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x49')]),_0xcb77('0x4a'),{'destaccountcode':this[_0xcb77('0x1e')][_0x441828[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x4b')],'destconnectedlinenum':_0x441828['connectedlinenum']});}}}}}catch(_0x415d94){logger[_0xcb77('0x36')]('[%s][voiceCallReport][newcallerid]',_0x441828[_0xcb77('0x3e')],util['inspect'](_0x415d94,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')]['syncNewChannel']=function(_0x2e4d8f){try{if(this[_0xcb77('0x4c')](_0x2e4d8f)){logger['debug'](_0xcb77('0x4d'),_0x2e4d8f[_0xcb77('0x3e')],util['inspect'](_0x2e4d8f,{'showHidden':![],'depth':null}));if(_0x2e4d8f[_0xcb77('0x3e')]===_0x2e4d8f[_0xcb77('0x3f')]&&_0x2e4d8f[_0xcb77('0x44')]!=_0xcb77('0x4e')){if(_[_0xcb77('0x3a')](this[_0xcb77('0x1d')][_0x2e4d8f[_0xcb77('0x3e')]])){logger[_0xcb77('0x33')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x2e4d8f['uniqueid'],_0x2e4d8f[_0xcb77('0x42')],_0x2e4d8f[_0xcb77('0x46')]);this[_0xcb77('0x1d')][_0x2e4d8f['uniqueid']]=new Channel();this[_0xcb77('0x1d')][_0x2e4d8f['uniqueid']][_0xcb77('0x4f')]=moment()['format'](_0xcb77('0x50'));this[_0xcb77('0x1d')][_0x2e4d8f['uniqueid']][_0xcb77('0x51')]=dispositions[_[_0xcb77('0x52')](_0x2e4d8f[_0xcb77('0x53')])];_[_0xcb77('0x54')](this[_0xcb77('0x1d')][_0x2e4d8f[_0xcb77('0x3e')]],_[_0xcb77('0x40')](_0x2e4d8f,_[_0xcb77('0x41')](this['channels'][_0x2e4d8f[_0xcb77('0x3e')]])));if(_0x2e4d8f[_0xcb77('0x42')]===_0xcb77('0x43')){if(this[_0xcb77('0x1e')][_0x2e4d8f[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]){if(_[_0xcb77('0x3a')](this[_0xcb77('0x1e')][_0x2e4d8f['channel'][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x55')])){this[_0xcb77('0x1e')][_0x2e4d8f[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x55')]=_0x2e4d8f[_0xcb77('0x46')];logger[_0xcb77('0x3d')](_0xcb77('0x56'),_0x2e4d8f['uniqueid'],util[_0xcb77('0x38')]({'destaccountcode':this[_0xcb77('0x1e')][_0x2e4d8f['channel']['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x2e4d8f[_0xcb77('0x46')]},{'showHidden':![],'depth':null}));this[_0xcb77('0x3b')](util[_0xcb77('0x47')](_0xcb77('0x48'),this[_0xcb77('0x1e')][_0x2e4d8f[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x49')]),_0xcb77('0x4a'),{'destaccountcode':this[_0xcb77('0x1e')][_0x2e4d8f[_0xcb77('0x44')]['split']('-')[0x0]][_0xcb77('0x4b')],'destconnectedlinenum':_0x2e4d8f['exten']});}}}}}}}catch(_0x4ad449){logger[_0xcb77('0x36')](_0xcb77('0x57'),_0x2e4d8f[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x4ad449,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x21')]=function(_0x17f168){try{if(this[_0xcb77('0x4c')](_0x17f168)){logger['debug']('[%s][voiceCallReport][newexten]\x20event:',_0x17f168[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x17f168,{'showHidden':![],'depth':null}));if(_0x17f168[_0xcb77('0x3e')]===_0x17f168[_0xcb77('0x3f')]&&_0x17f168[_0xcb77('0x46')]!='h'&&_0x17f168[_0xcb77('0x44')]!=_0xcb77('0x4e')){_0x17f168[_0xcb77('0x58')]=_0x17f168[_0xcb77('0x58')][_0xcb77('0x59')]();_0x17f168['applicationdata']=_0x17f168['appdata']&&_0x17f168[_0xcb77('0x5a')]['startsWith'](_0xcb77('0x5b'))?_0x17f168[_0xcb77('0x5a')]:(_0x17f168[_0xcb77('0x5a')]||_0x17f168['applicationdata'])[_0xcb77('0x59')]();logger[_0xcb77('0x33')](_0xcb77('0x5c'),_0x17f168['uniqueid'],_0x17f168[_0xcb77('0x58')],_0x17f168[_0xcb77('0x5d')]);if(_[_0xcb77('0x3a')](this[_0xcb77('0x1d')][_0x17f168[_0xcb77('0x3e')]])){this['channels'][_0x17f168[_0xcb77('0x3e')]]=new Channel();this[_0xcb77('0x1d')][_0x17f168['uniqueid']]['starttime']=_0x17f168[_0xcb77('0x5e')]?moment()[_0xcb77('0x5f')](moment[_0xcb77('0x5e')](_0x17f168[_0xcb77('0x5e')])['seconds'](),_0xcb77('0x60'))[_0xcb77('0x47')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0xcb77('0x47')](_0xcb77('0x50'));this[_0xcb77('0x1d')][_0x17f168['uniqueid']][_0xcb77('0x51')]=_0xcb77('0x15');}_[_0xcb77('0x54')](this[_0xcb77('0x1d')][_0x17f168[_0xcb77('0x3e')]],_['pick'](_0x17f168,_[_0xcb77('0x41')](this[_0xcb77('0x1d')][_0x17f168['uniqueid']])));if(_['includes'](applications,_0x17f168[_0xcb77('0x58')])){this[_0xcb77('0x1d')][_0x17f168['uniqueid']][_0xcb77('0x61')]=_0x17f168[_0xcb77('0x58')];this['channels'][_0x17f168['uniqueid']]['lastdata']=_0x17f168[_0xcb77('0x5d')];if(_0x17f168[_0xcb77('0x58')]===_0xcb77('0x62')&&_[_0xcb77('0x63')](_0x17f168[_0xcb77('0x5d')]['toLowerCase'](),_0xcb77('0x64'))){var _0x499166=_0x17f168['applicationdata'][_0xcb77('0x45')]('=');var _0x327140=_0x499166[0x0][_0xcb77('0x59')]()[_0xcb77('0x65')](/cdr\((.*)\)/);if(_0x327140){this[_0xcb77('0x1d')][_0x17f168[_0xcb77('0x3e')]][_0x327140[0x1]]=_0x499166[0x1];}}else if(_0x17f168[_0xcb77('0x58')]==='queue'){this[_0xcb77('0x1d')][_0x17f168[_0xcb77('0x3e')]][_0xcb77('0x66')]=_0x17f168[_0xcb77('0x5d')][_0xcb77('0x45')](',')[0x0];}}}}}catch(_0x38b108){logger[_0xcb77('0x36')](_0xcb77('0x67'),_0x17f168[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x38b108,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')]['syncNewState']=function(_0x1d2dd6){try{if(this[_0xcb77('0x4c')](_0x1d2dd6)){logger[_0xcb77('0x33')](_0xcb77('0x68'),_0x1d2dd6[_0xcb77('0x3e')],_0x1d2dd6[_0xcb77('0x3f')],_0x1d2dd6[_0xcb77('0x3c')],_0x1d2dd6[_0xcb77('0x69')]);logger[_0xcb77('0x3d')]('[%s][voiceCallReport][newstate]\x20event:',_0x1d2dd6[_0xcb77('0x3e')],util['inspect'](_0x1d2dd6,{'showHidden':![],'depth':null}));if(_0x1d2dd6[_0xcb77('0x3e')]!==_0x1d2dd6[_0xcb77('0x3f')]){if(this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]]){if(_0x1d2dd6['channelstate']==='6'){if(!this['channels'][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x6a')]){var _0x32596a=moment();this['channels'][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x6a')]=!![];this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x6b')]=_0x32596a[_0xcb77('0x47')](_0xcb77('0x50'));if(this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']][_0xcb77('0x4f')]){this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x6c')]=_0x32596a['diff'](this['channels'][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x4f')],_0xcb77('0x60'));}}this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']]['linkedid']=_0x1d2dd6['uniqueid'];if(_0x1d2dd6[_0xcb77('0x69')]!==_0xcb77('0x6d')){this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']]['connectedlinenum']=_0x1d2dd6[_0xcb77('0x69')];}this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]][_0xcb77('0x6e')]=_0x1d2dd6[_0xcb77('0x3c')];this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']][_0xcb77('0x6f')]=_0x1d2dd6[_0xcb77('0x44')];this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]]['disposition']=dispositions[_[_0xcb77('0x52')](_0x1d2dd6['channelstate'])];if(this[_0xcb77('0x1e')][_0x1d2dd6[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]){this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']][_0xcb77('0x70')]=this['agents'][_0x1d2dd6[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]['id'];this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]]['membername']=this[_0xcb77('0x1e')][_0x1d2dd6[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x49')];}}}}else{if(this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3e')]]){if(_0x1d2dd6[_0xcb77('0x53')]==='6'){if(this[_0xcb77('0x1e')][_0x1d2dd6['channel']['split']('-')[0x0]]){this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3e')]][_0xcb77('0x70')]=this[_0xcb77('0x1e')][_0x1d2dd6['channel'][_0xcb77('0x45')]('-')[0x0]]['id'];this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3e')]][_0xcb77('0x71')]=this[_0xcb77('0x1e')][_0x1d2dd6[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x49')];}}}}if(_0x1d2dd6['channelstate']==='6'&&_0x1d2dd6[_0xcb77('0x42')]===_0xcb77('0x43')){if(this['agents'][_0x1d2dd6[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]){this[_0xcb77('0x1e')][_0x1d2dd6[_0xcb77('0x44')]['split']('-')[0x0]]['destconnectedlinenum']=_0x1d2dd6[_0xcb77('0x46')];var _0x45ded8;if(this[_0xcb77('0x1d')][_0x1d2dd6['uniqueid']])_0x45ded8=this['channels'][_0x1d2dd6[_0xcb77('0x3e')]]['routealias'];else if(this[_0xcb77('0x1d')][_0x1d2dd6[_0xcb77('0x3f')]])_0x45ded8=this[_0xcb77('0x1d')][_0x1d2dd6['linkedid']][_0xcb77('0x72')];logger[_0xcb77('0x3d')](_0xcb77('0x73'),_0x1d2dd6[_0xcb77('0x3e')],util['inspect']({'destaccountcode':this['agents'][_0x1d2dd6[_0xcb77('0x44')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x1d2dd6['exten'],'routealias':_0x45ded8},{'showHidden':![],'depth':null}));this[_0xcb77('0x3b')](util[_0xcb77('0x47')](_0xcb77('0x48'),this['agents'][_0x1d2dd6[_0xcb77('0x44')]['split']('-')[0x0]][_0xcb77('0x49')]),_0xcb77('0x4a'),{'destaccountcode':this['agents'][_0x1d2dd6[_0xcb77('0x44')]['split']('-')[0x0]][_0xcb77('0x4b')],'destconnectedlinenum':_0x1d2dd6['exten'],'routealias':_0x45ded8});}}}}catch(_0x47d298){logger[_0xcb77('0x36')]('[%s][voiceCallReport][newstate]',_0x1d2dd6[_0xcb77('0x3e')],util['inspect'](_0x47d298,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')]['syncMixMonitorFilename']=function(_0x1ab257,_0x87f9c8){try{if(this[_0xcb77('0x1d')][_0x1ab257]){logger['info'](_0xcb77('0x74'),_0x1ab257,_0x87f9c8);this[_0xcb77('0x1d')][_0x1ab257][_0xcb77('0x75')]=!![];if(_[_0xcb77('0x76')](_0x87f9c8,_0xcb77('0x77'))){_0x87f9c8=_0x87f9c8[_0xcb77('0x78')]('.wav49',_0xcb77('0x79'));}this['channels'][_0x1ab257][_0xcb77('0x7a')]=_0x87f9c8;var _0x14fc91=_[_0xcb77('0x7b')](this[_0xcb77('0x1d')][_0x1ab257][_0xcb77('0x7c')],{'filename':_0x87f9c8});if(_[_0xcb77('0x7d')](_0x14fc91)){this[_0xcb77('0x1d')][_0x1ab257]['monitors']['push']({'filename':_0x87f9c8,'createdAt':moment()[_0xcb77('0x47')](_0xcb77('0x50')),'mixmonitorid':'','status':'rec'});}}}catch(_0xeaaa33){logger[_0xcb77('0x36')](_0xcb77('0x7e'),_0x1ab257,util[_0xcb77('0x38')](_0xeaaa33,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x28')]=function(_0x454a2d){try{if(this[_0xcb77('0x4c')](_0x454a2d)){logger[_0xcb77('0x3d')]('[%s][voiceCallReport][varset]\x20event:',_0x454a2d[_0xcb77('0x3e')],util['inspect'](_0x454a2d,{'showHidden':![],'depth':null}));if(this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3e')]]&&_0x454a2d['channel']!=_0xcb77('0x4e')){if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')])){if(this[_0xcb77('0x4c')](_0x454a2d['variable'][_0xcb77('0x80')])){logger['info'](_0xcb77('0x81'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this[_0xcb77('0x83')](_0x454a2d[_0xcb77('0x3e')],_0x454a2d['value']);}else if(this[_0xcb77('0x4c')](_0x454a2d['variable']['xmd-phone'])){logger[_0xcb77('0x33')](_0xcb77('0x84'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d['value']);this[_0xcb77('0x1d')][_0x454a2d['uniqueid']][_0xcb77('0x69')]=_0x454a2d[_0xcb77('0x82')];}else if(this[_0xcb77('0x4c')](_0x454a2d['variable']['xmd-callerid'])){logger['info'](_0xcb77('0x85'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this['channels'][_0x454a2d['uniqueid']][_0xcb77('0x86')]=_0x454a2d[_0xcb77('0x82')];}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')]['xmd-cdrtype'])){logger[_0xcb77('0x33')](_0xcb77('0x87'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this['channels'][_0x454a2d[_0xcb77('0x3e')]][_0xcb77('0x88')]=_0x454a2d[_0xcb77('0x82')];}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')][_0xcb77('0x89')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x454a2d['uniqueid'],_0x454a2d['value'][_0xcb77('0x45')](',')[0x0]);this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3e')]][_0xcb77('0x66')]=_0x454a2d[_0xcb77('0x82')]['split'](',')[0x0];}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')]['xmd-originatecalleridnum'])){logger[_0xcb77('0x33')](_0xcb77('0x8a'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3e')]]['originatecalleridnum']=_0x454a2d[_0xcb77('0x82')];}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')]['xmd-destination'])){logger[_0xcb77('0x33')](_0xcb77('0x8b'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this['channels'][_0x454a2d[_0xcb77('0x3e')]]['destination']=_0x454a2d[_0xcb77('0x82')];}else if(this['isNotNull'](_0x454a2d[_0xcb77('0x7f')][_0xcb77('0x8c')])){logger[_0xcb77('0x33')](_0xcb77('0x8d'),_0x454a2d['uniqueid'],_0x454a2d[_0xcb77('0x82')]);this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3e')]][_0xcb77('0x8e')]=_0x454a2d['value'];}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')][_0xcb77('0x8f')])){logger[_0xcb77('0x33')](_0xcb77('0x90'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this['channels'][_0x454a2d[_0xcb77('0x3e')]][_0xcb77('0x66')]=_0x454a2d['value'];}else if(this['isNotNull'](_0x454a2d['variable'][_0xcb77('0x91')])){logger[_0xcb77('0x33')](_0xcb77('0x92'),_0x454a2d[_0xcb77('0x3e')],_0x454a2d[_0xcb77('0x82')]);this['channels'][_0x454a2d['uniqueid']][_0xcb77('0x93')]=_0x454a2d[_0xcb77('0x82')];}}}else if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')][_0xcb77('0x80')])){if(_0x454a2d['value']){var _0x4d36be=path[_0xcb77('0x94')](_0x454a2d[_0xcb77('0x82')])[_0xcb77('0x49')];logger['info'](_0xcb77('0x81'),_0x4d36be,_0x454a2d['value']);this[_0xcb77('0x83')](_0x4d36be,_0x454a2d['value']);}}else if(this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3f')]]){if(this[_0xcb77('0x4c')](_0x454a2d[_0xcb77('0x7f')])){if(this['isNotNull'](_0x454a2d[_0xcb77('0x7f')][_0xcb77('0x91')])){logger[_0xcb77('0x33')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x454a2d['linkedid'],_0x454a2d[_0xcb77('0x82')]);this[_0xcb77('0x1d')][_0x454a2d[_0xcb77('0x3f')]][_0xcb77('0x95')]=_0x454a2d['value'];}}}}}catch(_0x4d7c6e){logger['error'](_0xcb77('0x96'),_0x454a2d[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x4d7c6e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x2a')]=function(_0x447e98){try{if(this['isNotNull'](_0x447e98)){logger[_0xcb77('0x3d')](_0xcb77('0x97'),_0x447e98[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x447e98,{'showHidden':![],'depth':null}));if(this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]]){logger['info']('[%s][voiceCallReport][hangup]\x20reason:%s',_0x447e98['uniqueid'],_0x447e98[_0xcb77('0x98')]);var _0x123d94=moment();this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x99')]=_0x123d94['format'](_0xcb77('0x50'));this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x5e')]=_0x123d94[_0xcb77('0x9a')](this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]]['starttime'],'seconds');if(this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x6a')]){this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]]['billableseconds']=_0x123d94['diff'](this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x6b')],_0xcb77('0x60'));this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x6c')]=this[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x5e')]-this[_0xcb77('0x1d')][_0x447e98['uniqueid']][_0xcb77('0x9b')];}if(_0x447e98[_0xcb77('0x42')]===_0xcb77('0x43')){if(this[_0xcb77('0x1e')][_0x447e98['channel'][_0xcb77('0x45')]('-')[0x0]]){this[_0xcb77('0x1e')][_0x447e98['channel'][_0xcb77('0x45')]('-')[0x0]]=_['omit'](this['agents'][_0x447e98[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]],['destconnectedlinenum']);logger['debug']('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x447e98['uniqueid'],util['inspect']({'id':this[_0xcb77('0x1e')][_0x447e98[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x447e98[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x4b')]},{'showHidden':![],'depth':null}));this[_0xcb77('0x3b')](util[_0xcb77('0x47')](_0xcb77('0x48'),this['agents'][_0x447e98[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x49')]),_0xcb77('0x9c'),{'id':this[_0xcb77('0x1e')][_0x447e98[_0xcb77('0x44')][_0xcb77('0x45')]('-')[0x0]]['id'],'destaccountcode':this[_0xcb77('0x1e')][_0x447e98['channel'][_0xcb77('0x45')]('-')[0x0]][_0xcb77('0x4b')]});}}var _0x4e7cdb=this;Promise[_0xcb77('0x9d')]()['then'](function(){var _0x7edf9e=_0x4e7cdb[_0xcb77('0x1d')][_0x447e98['uniqueid']];if(typeof _0x7edf9e[_0xcb77('0x9e')]===_0xcb77('0x9f'))return;if(_[_0xcb77('0xa0')](_0x7edf9e[_0xcb77('0x7c')]))return;return RpcSetting[_0xcb77('0xa1')]()[_0xcb77('0xa2')](function(_0x23ca7b){if(!_0x23ca7b[_0xcb77('0xa3')])return;return Promise[_0xcb77('0x9d')]()[_0xcb77('0xa2')](function(){return ami['Action']({'action':_0xcb77('0xa4'),'channel':_0x7edf9e[_0xcb77('0x44')]})[_0xcb77('0xa5')](function(){});})['then'](function(){return ami[_0xcb77('0xa6')]({'action':_0xcb77('0xa4'),'channel':_0x7edf9e[_0xcb77('0x6f')]})[_0xcb77('0xa5')](function(){})['finally'](function(){var _0x290067=_0x4e7cdb[_0xcb77('0x1e')][_0x7edf9e['destinationchannel'][_0xcb77('0x45')]('-')[0x0]];if(!_0x290067)return;io[_0xcb77('0x3b')](_0xcb77('0xa7'),{'agentId':_0x290067['id'],'uniqueid':_0x7edf9e['uniqueid']});});});});})[_0xcb77('0xa2')](function(){if(_0x447e98[_0xcb77('0xa8')]==='BlindTransfer'){_0x4e7cdb[_0xcb77('0x1f')][_0x447e98[_0xcb77('0x3e')]]=_0x4e7cdb['channels'][_0x447e98['uniqueid']];}else{if(_0x4e7cdb[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x88')]===_0xcb77('0xa9')&&_0x4e7cdb['blindTransfers'][_0x447e98[_0xcb77('0x3e')]]){_0x4e7cdb[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x3e')]=[_0x4e7cdb['channels'][_0x447e98[_0xcb77('0x3e')]][_0xcb77('0x3f')],_0x4e7cdb[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]]['linkedid']=_0x4e7cdb[_0xcb77('0x1d')][_0x447e98['uniqueid']]['uniqueid']][0x0];delete _0x4e7cdb[_0xcb77('0x1f')][_0x447e98['uniqueid']];}}logger['debug'](_0xcb77('0xaa'),_0x447e98[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x4e7cdb[_0xcb77('0x1d')][_0x447e98['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xcb77('0x3b')](_0xcb77('0xab'),_0x4e7cdb[_0xcb77('0x1d')][_0x447e98[_0xcb77('0x3e')]]);delete _0x4e7cdb['channels'][_0x447e98[_0xcb77('0x3e')]];});}}}catch(_0x1dd932){logger['error']('[%s][voiceCallReport][hangup]',_0x447e98[_0xcb77('0x3e')],util['inspect'](_0x1dd932,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x2c')]=function(_0x4dddf5){try{if(this[_0xcb77('0x4c')](_0x4dddf5)){logger[_0xcb77('0x33')](_0xcb77('0xac'),_0x4dddf5[_0xcb77('0x3e')],_0x4dddf5[_0xcb77('0xad')],_0x4dddf5[_0xcb77('0xae')]);logger[_0xcb77('0x3d')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x4dddf5['uniqueid'],util[_0xcb77('0x38')](_0x4dddf5,{'showHidden':![],'depth':null}));if(this[_0xcb77('0x1d')][_0x4dddf5['transfereeuniqueid']]){this['channels'][_0x4dddf5['transfereeuniqueid']][_0xcb77('0xaf')]=_0x4dddf5['origtransferercalleridnum'];this['channels'][_0x4dddf5[_0xcb77('0xb0')]][_0xcb77('0xb1')]=_0x4dddf5[_0xcb77('0xae')];if(this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb2')]]){var _0x53e1e4=this['channels'][_0x4dddf5[_0xcb77('0xb2')]];this['channels'][_0x4dddf5[_0xcb77('0xb2')]]=this[_0xcb77('0x1d')][_0x4dddf5['transfereeuniqueid']];this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb0')]]=_0x53e1e4;}}else if(this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb3')]]){this[_0xcb77('0x1d')][_0x4dddf5['transfertargetuniqueid']][_0xcb77('0xaf')]=_0x4dddf5[_0xcb77('0xad')];this['channels'][_0x4dddf5['transfertargetuniqueid']][_0xcb77('0xb1')]=_0x4dddf5[_0xcb77('0xae')];if(this[_0xcb77('0x1d')][_0x4dddf5['origtransfereruniqueid']]){var _0x53e1e4=this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb4')]];this[_0xcb77('0x1d')][_0x4dddf5['origtransfereruniqueid']]=this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb3')]];this['channels'][_0x4dddf5[_0xcb77('0xb3')]]=_0x53e1e4;}}if((this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb4')]]||this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb5')]])&&this['channels'][_0x4dddf5[_0xcb77('0xb2')]]){var _0x580dca=_[_0xcb77('0xb6')]([this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb4')]],this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb5')]],this['channels'][_0x4dddf5[_0xcb77('0xb2')]]],function(_0x392031){return _0x392031&&_0x392031[_0xcb77('0x88')]===_0xcb77('0xa9')&&_0x392031[_0xcb77('0xb7')];});if(_0x580dca){if(this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb4')]])this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb4')]][_0xcb77('0x9e')]=_0xcb77('0xb8');if(this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb5')]])this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb5')]][_0xcb77('0x9e')]=_0xcb77('0xb8');this[_0xcb77('0x1d')][_0x4dddf5[_0xcb77('0xb2')]]['transferType']=_0xcb77('0xb8');}}}}catch(_0x1f2729){logger['error']('[%s][voiceCallReport][attendedtransfer]',_0x4dddf5[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x1f2729,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xcb77('0x2e')]=function(_0x23a5a0){try{if(this[_0xcb77('0x4c')](_0x23a5a0)){logger['info']('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x23a5a0[_0xcb77('0x3e')],_0x23a5a0['transfereecalleridnum'],_0x23a5a0[_0xcb77('0xb9')]);logger[_0xcb77('0x3d')](_0xcb77('0xba'),_0x23a5a0[_0xcb77('0x3e')],util['inspect'](_0x23a5a0,{'showHidden':![],'depth':null}));if(this[_0xcb77('0x1d')][_0x23a5a0[_0xcb77('0xb0')]]){this[_0xcb77('0x1d')][_0x23a5a0[_0xcb77('0xb0')]][_0xcb77('0xaf')]=_0x23a5a0[_0xcb77('0xbb')];this[_0xcb77('0x1d')][_0x23a5a0['transfereeuniqueid']][_0xcb77('0xb1')]=_0x23a5a0[_0xcb77('0xb9')];this[_0xcb77('0x1d')][_0x23a5a0[_0xcb77('0xb0')]][_0xcb77('0x9e')]=_0xcb77('0xbc');this[_0xcb77('0x2a')]({'event':_0xcb77('0xbd'),'uniqueid':_0x23a5a0[_0xcb77('0xb0')],'context':_0x23a5a0[_0xcb77('0x42')],'channel':_0x23a5a0['transfererchannel']});}else{this['channels'][_0x23a5a0[_0xcb77('0xbe')]][_0xcb77('0x9e')]=_0xcb77('0xbc');}}}catch(_0x2138b6){logger[_0xcb77('0x36')](_0xcb77('0xbf'),_0x23a5a0[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x2138b6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')][_0xcb77('0x30')]=function(_0x3bf03c){try{if(this[_0xcb77('0x4c')](_0x3bf03c)){logger[_0xcb77('0x3d')](_0xcb77('0xc0'),_0x3bf03c[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x3bf03c,{'showHidden':![],'depth':null}));if(this['channels'][_0x3bf03c[_0xcb77('0x3e')]]){if(!_[_0xcb77('0x7d')](this[_0xcb77('0x1d')][_0x3bf03c[_0xcb77('0x3e')]]['answertime'])){this[_0xcb77('0x1d')][_0x3bf03c['uniqueid']]['mohstarttime']=moment()[_0xcb77('0x47')](_0xcb77('0x50'));logger[_0xcb77('0x33')](_0xcb77('0xc1'),_0x3bf03c[_0xcb77('0x3e')],this[_0xcb77('0x1d')][_0x3bf03c[_0xcb77('0x3e')]][_0xcb77('0xc2')]);}}}}catch(_0x4b1016){logger['error']('[%s][voiceCallReport][musiconholdstart]',_0x3bf03c[_0xcb77('0x3e')],util[_0xcb77('0x38')](_0x4b1016,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xcb77('0x39')]['syncMusicOnHoldStop']=function(_0x233d63){try{if(this[_0xcb77('0x4c')](_0x233d63)){logger[_0xcb77('0x3d')](_0xcb77('0xc3'),_0x233d63[_0xcb77('0x3e')],util['inspect'](_0x233d63,{'showHidden':![],'depth':null}));if(this['channels'][_0x233d63[_0xcb77('0x3e')]]){if(!_[_0xcb77('0x7d')](this[_0xcb77('0x1d')][_0x233d63[_0xcb77('0x3e')]][_0xcb77('0xc2')])){this[_0xcb77('0x1d')][_0x233d63[_0xcb77('0x3e')]][_0xcb77('0xc4')]+=moment()[_0xcb77('0xc5')](0x0)[_0xcb77('0x9a')](this[_0xcb77('0x1d')][_0x233d63[_0xcb77('0x3e')]]['mohstarttime'],_0xcb77('0x60'));logger[_0xcb77('0x33')](_0xcb77('0xc6'),_0x233d63[_0xcb77('0x3e')],this['channels'][_0x233d63[_0xcb77('0x3e')]][_0xcb77('0xc4')]);delete this[_0xcb77('0x1d')][_0x233d63[_0xcb77('0x3e')]][_0xcb77('0xc2')];}}}}catch(_0x1e24ae){logger['error']('[%s][voiceCallReport][musiconholdstop]',_0x233d63['uniqueid'],util['inspect'](_0x1e24ae,{'showHidden':![],'depth':null}));}};module[_0xcb77('0xc7')]=VoiceCallReport;
\ No newline at end of file
index a71a28b..6c54d95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a0=['sipcallid','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','cause-txt','endtime','format','duration','starttime','seconds','complete','total','answered','holdtime','diff','billableseconds','sumDuration','custom:voiceDialReport','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','application','set','appdata','applicationdata','toLowerCase','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','variables','dialbegin','syncDialBegin','bind','syncDialEnd','syncVarSet','newexten','syncNewExten','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','privilege','info','membername','interface','applications','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','voice_outbound_channel:save','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','keys','[%s][voiceDialReport][varset]','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged'];(function(_0x2134e8,_0x2b3c8d){var _0x42451d=function(_0x5662a9){while(--_0x5662a9){_0x2134e8['push'](_0x2134e8['shift']());}};_0x42451d(++_0x2b3c8d);}(_0x91a0,0x18b));var _0x091a=function(_0x53ef61,_0x44cda6){_0x53ef61=_0x53ef61-0x0;var _0x4e4207=_0x91a0[_0x53ef61];return _0x4e4207;};'use strict';var _=require('lodash');var moment=require(_0x091a('0x0'));var util=require(_0x091a('0x1'));var Redis=require(_0x091a('0x2'));var config=require(_0x091a('0x3'));var logger=require(_0x091a('0x4'))(_0x091a('0x5'));var ami=require(_0x091a('0x6'));config[_0x091a('0x7')]=_[_0x091a('0x8')](config[_0x091a('0x7')],{'host':_0x091a('0x9'),'port':0x18eb});var io=require(_0x091a('0xa'))(new Redis(config[_0x091a('0x7')]));function VoiceDialReport(_0x1a0636){this[_0x091a('0xb')]=_0x1a0636[_0x091a('0xc')];this[_0x091a('0xd')]=_0x1a0636[_0x091a('0xd')];this['applications']={};this[_0x091a('0xe')]={};ami['on'](_0x091a('0xf'),this[_0x091a('0x10')][_0x091a('0x11')](this));ami['on']('dialend',this[_0x091a('0x12')][_0x091a('0x11')](this));ami['on']('varset',this[_0x091a('0x13')][_0x091a('0x11')](this));ami['on'](_0x091a('0x14'),this[_0x091a('0x15')][_0x091a('0x11')](this));ami['on'](_0x091a('0x16'),this[_0x091a('0x17')]['bind'](this));}VoiceDialReport[_0x091a('0x18')][_0x091a('0x19')]=function(_0x32303d){return _0x32303d!==null&&!_[_0x091a('0x1a')](_0x32303d);};VoiceDialReport[_0x091a('0x18')][_0x091a('0x1b')]=function(_0x2fad59,_0x2e47d6,_0x34764d){io['to'](_0x2fad59)['emit'](_0x2e47d6,_0x34764d);};VoiceDialReport[_0x091a('0x18')][_0x091a('0x10')]=function(_0xde1887){try{if(this[_0x091a('0x19')](_0xde1887)){logger[_0x091a('0x1c')](_0x091a('0x1d'),_0xde1887[_0x091a('0x1e')],util[_0x091a('0x1f')](_0xde1887,{'showHidden':![],'depth':null}));if(this[_0x091a('0xb')][_0xde1887['uniqueid']]){_[_0x091a('0x20')](this[_0x091a('0xb')][_0xde1887[_0x091a('0x1e')]],{'starttime':moment()['format'](_0x091a('0x21')),'lastevent':_0x091a('0x22'),'interface':_0xde1887[_0x091a('0x23')][_0x091a('0x24')](0x0,_0xde1887[_0x091a('0x23')][_0x091a('0x25')]('-')),'membername':_0xde1887[_0x091a('0x23')][_0x091a('0x24')](_0xde1887['channel']['lastIndexOf']('/')+0x1,_0xde1887[_0x091a('0x23')][_0x091a('0x25')]('-'))},_[_0x091a('0x26')](_0xde1887,['event',_0x091a('0x27')]));logger[_0x091a('0x28')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0xde1887[_0x091a('0x1e')],this[_0x091a('0xb')][_0xde1887['uniqueid']][_0x091a('0x29')],this[_0x091a('0xb')][_0xde1887[_0x091a('0x1e')]][_0x091a('0x2a')]);logger['debug']('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0xde1887['uniqueid'],util[_0x091a('0x1f')](this[_0x091a('0xb')][_0xde1887[_0x091a('0x1e')]],{'showHidden':![],'depth':null}));if(this[_0x091a('0x2b')][_0xde1887[_0x091a('0x1e')]])_[_0x091a('0x20')](this[_0x091a('0xb')][_0xde1887[_0x091a('0x1e')]],this[_0x091a('0x2b')][_0xde1887['uniqueid']]);this[_0x091a('0x1b')](_0x091a('0x2c'),'voice_outbound_channel:save',this[_0x091a('0xb')][_0xde1887[_0x091a('0x1e')]]);logger[_0x091a('0x1c')](_0x091a('0x2d'),_0xde1887[_0x091a('0x1e')],util[_0x091a('0x1f')](this[_0x091a('0xb')][_0xde1887[_0x091a('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x091a('0x1b')](_0x091a('0x2e'),this[_0x091a('0xb')][_0xde1887[_0x091a('0x1e')]]);}}}catch(_0x2666b3){logger[_0x091a('0x2f')]('[%s][voiceDialReport][dialbegin]',_0xde1887[_0x091a('0x1e')],util[_0x091a('0x1f')](_0x2666b3,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x091a('0x18')]['syncDialEnd']=function(_0x3e4126){try{if(this['isNotNull'](_0x3e4126)){logger[_0x091a('0x1c')]('[%s][voiceDialReport][dialend]\x20event:',_0x3e4126[_0x091a('0x1e')],util[_0x091a('0x1f')](_0x3e4126,{'showHidden':![],'depth':null}));if(this[_0x091a('0xb')][_0x3e4126[_0x091a('0x1e')]]){this[_0x091a('0xb')][_0x3e4126[_0x091a('0x1e')]][_0x091a('0x30')]=_0x3e4126[_0x091a('0x30')];if(_0x3e4126[_0x091a('0x30')]===_0x091a('0x31')){this[_0x091a('0xb')][_0x3e4126[_0x091a('0x1e')]][_0x091a('0x32')]=_0x3e4126[_0x091a('0x32')];this[_0x091a('0xb')][_0x3e4126[_0x091a('0x1e')]][_0x091a('0x33')]=_0x3e4126[_0x091a('0x33')];this[_0x091a('0xb')][_0x3e4126[_0x091a('0x1e')]][_0x091a('0x34')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x091a('0xb')][_0x3e4126[_0x091a('0x1e')]][_0x091a('0x35')]='connect';logger[_0x091a('0x28')](_0x091a('0x36'),_0x3e4126[_0x091a('0x1e')],_0x3e4126[_0x091a('0x23')][_0x091a('0x24')](_0x3e4126['channel'][_0x091a('0x25')]('/')+0x1,_0x3e4126[_0x091a('0x23')][_0x091a('0x25')]('-')));logger[_0x091a('0x1c')](_0x091a('0x37'),_0x3e4126['uniqueid'],util[_0x091a('0x1f')](this[_0x091a('0xb')][_0x3e4126[_0x091a('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x091a('0x1b')](_0x091a('0x38'),this['channels'][_0x3e4126[_0x091a('0x1e')]]);}logger[_0x091a('0x1c')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x3e4126[_0x091a('0x1e')],util[_0x091a('0x1f')](this[_0x091a('0xb')][_0x3e4126[_0x091a('0x1e')]],{'showHidden':![],'depth':null}));this[_0x091a('0x1b')](_0x091a('0x2c'),_0x091a('0x39'),this[_0x091a('0xb')][_0x3e4126[_0x091a('0x1e')]]);}}}catch(_0x16c109){logger[_0x091a('0x2f')](_0x091a('0x3a'),_0x3e4126['uniqueid'],util['inspect'](_0x16c109,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x091a('0x18')][_0x091a('0x13')]=function(_0x127504){try{if(this[_0x091a('0x19')](_0x127504)){logger[_0x091a('0x1c')](_0x091a('0x3b'),_0x127504[_0x091a('0x1e')],util[_0x091a('0x1f')](_0x127504,{'showHidden':![],'depth':null}));this[_0x091a('0x3c')](_0x127504[_0x091a('0x1e')],_['keys'](_0x127504[_0x091a('0x3d')])[0x0],_0x127504[_0x091a('0x3e')]);if(this[_0x091a('0x19')](_0x127504[_0x091a('0x3d')])&&this[_0x091a('0x19')](_0x127504[_0x091a('0x3d')][_0x091a('0x3f')])){if(_[_0x091a('0x1a')](this[_0x091a('0xb')][_0x127504[_0x091a('0x1e')]])){this['channels'][_0x127504[_0x091a('0x1e')]]={'routeId':_0x127504[_0x091a('0x3e')],'variables':this[_0x091a('0xe')][_0x127504[_0x091a('0x1e')]],'motionChannel':_0x091a('0x40')};logger[_0x091a('0x28')](_0x091a('0x41'),_0x127504[_0x091a('0x1e')],_0x127504[_0x091a('0x3d')][_0x091a('0x3f')],_[_0x091a('0x42')](_0x127504[_0x091a('0x3d')])[0x0],_0x127504['value']);logger[_0x091a('0x1c')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x127504[_0x091a('0x1e')],util[_0x091a('0x1f')](this[_0x091a('0xb')][_0x127504[_0x091a('0x1e')]],{'showHidden':![],'depth':null}));this[_0x091a('0x1b')](_0x091a('0x2c'),_0x091a('0x39'),this[_0x091a('0xb')][_0x127504[_0x091a('0x1e')]]);}}}}catch(_0x1ea16e){logger['error'](_0x091a('0x43'),_0x127504['uniqueid'],util['inspect'](_0x1ea16e,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x091a('0x3c')]=function(_0x14afd8,_0x3a879d,_0xaea824){var _0xfc1e6c=['rtpaudioqos',_0x091a('0x44'),'rtpaudioqosjitter',_0x091a('0x45'),'rtpaudioqosloss',_0x091a('0x46'),_0x091a('0x47'),_0x091a('0x48'),_0x091a('0x49'),_0x091a('0x4a'),_0x091a('0x4b'),'bridgepvtcallid','membercalls',_0x091a('0x4c'),_0x091a('0x4d'),_0x091a('0x4e'),_0x091a('0x29'),_0x091a('0x4f'),_0x091a('0x50')];if(!_[_0x091a('0x51')](_0x3a879d)&&!_[_0x091a('0x52')](_0xfc1e6c,_0x3a879d)){if(_[_0x091a('0x1a')](this[_0x091a('0xe')][_0x14afd8])){this[_0x091a('0xe')][_0x14afd8]={};}this[_0x091a('0xe')][_0x14afd8][_0x3a879d]=_0xaea824;}};VoiceDialReport[_0x091a('0x18')][_0x091a('0x17')]=function(_0x408dc1){try{if(this['isNotNull'](_0x408dc1)){logger[_0x091a('0x1c')]('[%s][voiceDialReport][hangup]\x20event:',_0x408dc1['uniqueid'],util[_0x091a('0x1f')](_0x408dc1,{'showHidden':![],'depth':null}));if(this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]]){logger[_0x091a('0x28')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x408dc1['uniqueid'],_0x408dc1[_0x091a('0x53')]);this['channels'][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x54')]=moment()[_0x091a('0x55')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x56')]=moment(this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x54')])['diff'](this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x57')],_0x091a('0x58'));this['channels'][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x35')]=_0x091a('0x59');this[_0x091a('0xd')][_0x091a('0x5a')]+=0x1;if(this['channels'][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x34')]){this[_0x091a('0xd')][_0x091a('0x5b')]+=0x1;this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x5c')]=moment(this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x34')])[_0x091a('0x5d')](this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]]['starttime'],'seconds');this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x5e')]=moment(this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x54')])[_0x091a('0x5d')](this[_0x091a('0xb')][_0x408dc1['uniqueid']]['answertime'],'seconds');this[_0x091a('0xd')]['sumHoldTime']+=this['channels'][_0x408dc1['uniqueid']][_0x091a('0x5c')]||0x0;this[_0x091a('0xd')]['sumBillable']+=this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]]['billableseconds'];}this[_0x091a('0xd')][_0x091a('0x5f')]+=this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]][_0x091a('0x56')];logger[_0x091a('0x1c')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x408dc1[_0x091a('0x1e')],util[_0x091a('0x1f')](this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]],{'showHidden':![],'depth':null}));ami['emit'](_0x091a('0x60'),this[_0x091a('0xb')][_0x408dc1['uniqueid']]);logger[_0x091a('0x1c')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x408dc1[_0x091a('0x1e')],util[_0x091a('0x1f')](this[_0x091a('0xb')][_0x408dc1['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x091a('0x61'),this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]]);logger[_0x091a('0x1c')](_0x091a('0x62'),_0x408dc1['uniqueid'],util['inspect'](this['channels'][_0x408dc1[_0x091a('0x1e')]],{'showHidden':![],'depth':null}));this[_0x091a('0x1b')](_0x091a('0x2c'),_0x091a('0x63'),this['outbound']);logger[_0x091a('0x28')](_0x091a('0x64'),JSON['stringify'](this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]]));logger[_0x091a('0x1c')](_0x091a('0x65'),_0x408dc1[_0x091a('0x1e')],util[_0x091a('0x1f')](this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]],{'showHidden':![],'depth':null}));this['emit'](_0x091a('0x2c'),_0x091a('0x66'),this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]]);delete this[_0x091a('0xb')][_0x408dc1[_0x091a('0x1e')]];}else if(this[_0x091a('0xb')][_0x408dc1[_0x091a('0x67')]]){this[_0x091a('0xb')][_0x408dc1['linkedid']][_0x091a('0x1e')]=this[_0x091a('0xb')][_0x408dc1[_0x091a('0x67')]][_0x091a('0x68')];}if(this[_0x091a('0xe')][_0x408dc1[_0x091a('0x1e')]]){delete this[_0x091a('0xe')][_0x408dc1[_0x091a('0x1e')]];}}}catch(_0x3c1d8a){logger['error'](_0x091a('0x69'),_0x408dc1[_0x091a('0x1e')],util[_0x091a('0x1f')](_0x3c1d8a,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x091a('0x18')][_0x091a('0x15')]=function(_0x4efc9c){try{if(this[_0x091a('0x19')](_0x4efc9c)){logger[_0x091a('0x1c')]('[%s][voiceDialReport][newexten]\x20event:',_0x4efc9c[_0x091a('0x1e')],util[_0x091a('0x1f')](_0x4efc9c,{'showHidden':![],'depth':null}));if(_0x4efc9c[_0x091a('0x6a')]['toLowerCase']()===_0x091a('0x6b')){_0x4efc9c['applicationdata']=(_0x4efc9c[_0x091a('0x6c')]||_0x4efc9c[_0x091a('0x6d')])[_0x091a('0x6e')]();if(_[_0x091a('0x6f')](_0x4efc9c['applicationdata'],_0x091a('0x70'))){if(_[_0x091a('0x1a')](this['applications'][_0x4efc9c[_0x091a('0x1e')]]))this[_0x091a('0x2b')][_0x4efc9c[_0x091a('0x1e')]]={};logger['info'](_0x091a('0x71'),_0x4efc9c[_0x091a('0x1e')],_0x4efc9c[_0x091a('0x6a')],_0x4efc9c[_0x091a('0x6d')]);var _0x433cd3=_0x4efc9c['applicationdata'][_0x091a('0x72')]('=');var _0x2aef91=_0x433cd3[0x0][_0x091a('0x73')](/cdr\((.*)\)/);if(_0x2aef91)this[_0x091a('0x2b')][_0x4efc9c['uniqueid']][_0x2aef91[0x1]]=_0x433cd3[0x1];}}}}catch(_0x5914c7){logger[_0x091a('0x2f')]('[%s][voiceDialReport][newexten]',_0x4efc9c['uniqueid'],util[_0x091a('0x1f')](_0x5914c7,{'showHidden':![],'depth':null}));}};module[_0x091a('0x74')]=VoiceDialReport;
\ No newline at end of file
+var _0xdbe9=['lastevent','connect','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','error','syncVarSet','[%s][voiceDialReport][varset]\x20event:','keys','variable','value','outboundrouteid','isUndefined','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','YYYY-MM-DD\x20HH:mm:ss','duration','endtime','diff','starttime','complete','total','holdtime','seconds','billableseconds','sumBillable','sumDuration','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','syncDialEnd','varset','syncNewExten','hangup','syncHangup','prototype','emit','isNotNull','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','channel','substring','lastIndexOf','omit','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinename','answertime','format'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdbe9,0xb8));var _0x9dbe=function(_0x59460d,_0x1ae866){_0x59460d=_0x59460d-0x0;var _0x4d9ba7=_0xdbe9[_0x59460d];return _0x4d9ba7;};'use strict';var _=require(_0x9dbe('0x0'));var moment=require(_0x9dbe('0x1'));var util=require(_0x9dbe('0x2'));var Redis=require(_0x9dbe('0x3'));var config=require(_0x9dbe('0x4'));var logger=require(_0x9dbe('0x5'))(_0x9dbe('0x6'));var ami=require(_0x9dbe('0x7'));config[_0x9dbe('0x8')]=_[_0x9dbe('0x9')](config[_0x9dbe('0x8')],{'host':_0x9dbe('0xa'),'port':0x18eb});var io=require(_0x9dbe('0xb'))(new Redis(config[_0x9dbe('0x8')]));function VoiceDialReport(_0x14d34f){this[_0x9dbe('0xc')]=_0x14d34f[_0x9dbe('0xd')];this[_0x9dbe('0xe')]=_0x14d34f[_0x9dbe('0xe')];this[_0x9dbe('0xf')]={};this[_0x9dbe('0x10')]={};ami['on'](_0x9dbe('0x11'),this[_0x9dbe('0x12')][_0x9dbe('0x13')](this));ami['on']('dialend',this[_0x9dbe('0x14')][_0x9dbe('0x13')](this));ami['on'](_0x9dbe('0x15'),this['syncVarSet'][_0x9dbe('0x13')](this));ami['on']('newexten',this[_0x9dbe('0x16')][_0x9dbe('0x13')](this));ami['on'](_0x9dbe('0x17'),this[_0x9dbe('0x18')][_0x9dbe('0x13')](this));}VoiceDialReport[_0x9dbe('0x19')]['isNotNull']=function(_0x30634e){return _0x30634e!==null&&!_['isUndefined'](_0x30634e);};VoiceDialReport[_0x9dbe('0x19')][_0x9dbe('0x1a')]=function(_0xa3867d,_0x35176b,_0x41d886){io['to'](_0xa3867d)['emit'](_0x35176b,_0x41d886);};VoiceDialReport[_0x9dbe('0x19')][_0x9dbe('0x12')]=function(_0x35b1af){try{if(this[_0x9dbe('0x1b')](_0x35b1af)){logger[_0x9dbe('0x1c')](_0x9dbe('0x1d'),_0x35b1af[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0x35b1af,{'showHidden':![],'depth':null}));if(this[_0x9dbe('0xc')][_0x35b1af['uniqueid']]){_[_0x9dbe('0x20')](this[_0x9dbe('0xc')][_0x35b1af[_0x9dbe('0x1e')]],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','interface':_0x35b1af[_0x9dbe('0x21')][_0x9dbe('0x22')](0x0,_0x35b1af['channel']['lastIndexOf']('-')),'membername':_0x35b1af[_0x9dbe('0x21')][_0x9dbe('0x22')](_0x35b1af['channel'][_0x9dbe('0x23')]('/')+0x1,_0x35b1af[_0x9dbe('0x21')][_0x9dbe('0x23')]('-'))},_[_0x9dbe('0x24')](_0x35b1af,['event',_0x9dbe('0x25')]));logger[_0x9dbe('0x26')](_0x9dbe('0x27'),_0x35b1af[_0x9dbe('0x1e')],this['channels'][_0x35b1af[_0x9dbe('0x1e')]][_0x9dbe('0x28')],this[_0x9dbe('0xc')][_0x35b1af[_0x9dbe('0x1e')]][_0x9dbe('0x29')]);logger[_0x9dbe('0x1c')](_0x9dbe('0x2a'),_0x35b1af[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0x35b1af[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x35b1af['uniqueid']])_[_0x9dbe('0x20')](this[_0x9dbe('0xc')][_0x35b1af['uniqueid']],this['applications'][_0x35b1af[_0x9dbe('0x1e')]]);this[_0x9dbe('0x1a')](_0x9dbe('0x2b'),'voice_outbound_channel:save',this['channels'][_0x35b1af[_0x9dbe('0x1e')]]);logger[_0x9dbe('0x1c')](_0x9dbe('0x2c'),_0x35b1af[_0x9dbe('0x1e')],util['inspect'](this[_0x9dbe('0xc')][_0x35b1af[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x9dbe('0x1a')](_0x9dbe('0x2d'),this[_0x9dbe('0xc')][_0x35b1af['uniqueid']]);}}}catch(_0x28e98a){logger['error']('[%s][voiceDialReport][dialbegin]',_0x35b1af[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0x28e98a,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9dbe('0x19')][_0x9dbe('0x14')]=function(_0xba29b){try{if(this[_0x9dbe('0x1b')](_0xba29b)){logger[_0x9dbe('0x1c')](_0x9dbe('0x2e'),_0xba29b[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0xba29b,{'showHidden':![],'depth':null}));if(this[_0x9dbe('0xc')][_0xba29b['uniqueid']]){this[_0x9dbe('0xc')][_0xba29b[_0x9dbe('0x1e')]][_0x9dbe('0x2f')]=_0xba29b[_0x9dbe('0x2f')];if(_0xba29b[_0x9dbe('0x2f')]===_0x9dbe('0x30')){this['channels'][_0xba29b['uniqueid']]['connectedlinenum']=_0xba29b['connectedlinenum'];this['channels'][_0xba29b[_0x9dbe('0x1e')]][_0x9dbe('0x31')]=_0xba29b['connectedlinename'];this[_0x9dbe('0xc')][_0xba29b[_0x9dbe('0x1e')]][_0x9dbe('0x32')]=moment()[_0x9dbe('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x9dbe('0xc')][_0xba29b['uniqueid']][_0x9dbe('0x34')]=_0x9dbe('0x35');logger[_0x9dbe('0x26')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0xba29b[_0x9dbe('0x1e')],_0xba29b['channel'][_0x9dbe('0x22')](_0xba29b[_0x9dbe('0x21')]['lastIndexOf']('/')+0x1,_0xba29b['channel']['lastIndexOf']('-')));logger[_0x9dbe('0x1c')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0xba29b[_0x9dbe('0x1e')],util['inspect'](this['channels'][_0xba29b[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));ami['emit'](_0x9dbe('0x36'),this['channels'][_0xba29b[_0x9dbe('0x1e')]]);}logger[_0x9dbe('0x1c')](_0x9dbe('0x37'),_0xba29b[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0xba29b[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound',_0x9dbe('0x38'),this[_0x9dbe('0xc')][_0xba29b['uniqueid']]);}}}catch(_0x4c35bb){logger[_0x9dbe('0x39')]('[%s][voiceDialReport][dialend]',_0xba29b[_0x9dbe('0x1e')],util['inspect'](_0x4c35bb,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x9dbe('0x3a')]=function(_0x52ee61){try{if(this[_0x9dbe('0x1b')](_0x52ee61)){logger[_0x9dbe('0x1c')](_0x9dbe('0x3b'),_0x52ee61['uniqueid'],util[_0x9dbe('0x1f')](_0x52ee61,{'showHidden':![],'depth':null}));this['addVariable'](_0x52ee61[_0x9dbe('0x1e')],_[_0x9dbe('0x3c')](_0x52ee61[_0x9dbe('0x3d')])[0x0],_0x52ee61[_0x9dbe('0x3e')]);if(this[_0x9dbe('0x1b')](_0x52ee61[_0x9dbe('0x3d')])&&this[_0x9dbe('0x1b')](_0x52ee61[_0x9dbe('0x3d')][_0x9dbe('0x3f')])){if(_[_0x9dbe('0x40')](this[_0x9dbe('0xc')][_0x52ee61[_0x9dbe('0x1e')]])){this[_0x9dbe('0xc')][_0x52ee61[_0x9dbe('0x1e')]]={'routeId':_0x52ee61[_0x9dbe('0x3e')],'variables':this[_0x9dbe('0x10')][_0x52ee61[_0x9dbe('0x1e')]]};logger[_0x9dbe('0x26')](_0x9dbe('0x41'),_0x52ee61['uniqueid'],_0x52ee61[_0x9dbe('0x3d')]['outboundrouteid'],_[_0x9dbe('0x3c')](_0x52ee61['variable'])[0x0],_0x52ee61[_0x9dbe('0x3e')]);logger[_0x9dbe('0x1c')](_0x9dbe('0x42'),_0x52ee61[_0x9dbe('0x1e')],util['inspect'](this[_0x9dbe('0xc')][_0x52ee61[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));this[_0x9dbe('0x1a')](_0x9dbe('0x2b'),_0x9dbe('0x38'),this[_0x9dbe('0xc')][_0x52ee61['uniqueid']]);}}}}catch(_0x3a8d2d){logger['error']('[%s][voiceDialReport][varset]',_0x52ee61[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0x3a8d2d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9dbe('0x19')][_0x9dbe('0x43')]=function(_0x1ea4ea,_0x303ba2,_0x4b4fc9){var _0x257ea9=[_0x9dbe('0x44'),_0x9dbe('0x45'),'rtpaudioqosjitter',_0x9dbe('0x46'),_0x9dbe('0x47'),'rtpaudioqoslossbridged',_0x9dbe('0x48'),'rtpaudioqosrttbridged',_0x9dbe('0x49'),'sipuri',_0x9dbe('0x4a'),_0x9dbe('0x4b'),_0x9dbe('0x4c'),_0x9dbe('0x4d'),_0x9dbe('0x4e'),_0x9dbe('0x4f'),'membername',_0x9dbe('0x50'),_0x9dbe('0x51')];if(!_[_0x9dbe('0x52')](_0x303ba2)&&!_[_0x9dbe('0x53')](_0x257ea9,_0x303ba2)){if(_[_0x9dbe('0x40')](this[_0x9dbe('0x10')][_0x1ea4ea])){this['variables'][_0x1ea4ea]={};}this['variables'][_0x1ea4ea][_0x303ba2]=_0x4b4fc9;}};VoiceDialReport[_0x9dbe('0x19')][_0x9dbe('0x18')]=function(_0xd72d5){try{if(this[_0x9dbe('0x1b')](_0xd72d5)){logger[_0x9dbe('0x1c')](_0x9dbe('0x54'),_0xd72d5[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0xd72d5,{'showHidden':![],'depth':null}));if(this['channels'][_0xd72d5[_0x9dbe('0x1e')]]){logger[_0x9dbe('0x26')](_0x9dbe('0x55'),_0xd72d5[_0x9dbe('0x1e')],_0xd72d5[_0x9dbe('0x56')]);this[_0x9dbe('0xc')][_0xd72d5['uniqueid']]['endtime']=moment()[_0x9dbe('0x33')](_0x9dbe('0x57'));this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x58')]=moment(this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x59')])[_0x9dbe('0x5a')](this[_0x9dbe('0xc')][_0xd72d5['uniqueid']][_0x9dbe('0x5b')],'seconds');this['channels'][_0xd72d5['uniqueid']][_0x9dbe('0x34')]=_0x9dbe('0x5c');this['outbound'][_0x9dbe('0x5d')]+=0x1;if(this['channels'][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x32')]){this[_0x9dbe('0xe')]['answered']+=0x1;this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x5e')]=moment(this['channels'][_0xd72d5['uniqueid']]['answertime'])[_0x9dbe('0x5a')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x5b')],_0x9dbe('0x5f'));this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x60')]=moment(this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]]['endtime'])[_0x9dbe('0x5a')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x32')],_0x9dbe('0x5f'));this[_0x9dbe('0xe')]['sumHoldTime']+=this['channels'][_0xd72d5[_0x9dbe('0x1e')]]['holdtime']||0x0;this['outbound'][_0x9dbe('0x61')]+=this['channels'][_0xd72d5[_0x9dbe('0x1e')]][_0x9dbe('0x60')];}this[_0x9dbe('0xe')][_0x9dbe('0x62')]+=this['channels'][_0xd72d5['uniqueid']][_0x9dbe('0x58')];logger[_0x9dbe('0x1c')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0xd72d5['uniqueid'],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x9dbe('0x1a')]('custom:voiceDialReport',this['channels'][_0xd72d5[_0x9dbe('0x1e')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0xd72d5[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x9dbe('0x1a')](_0x9dbe('0x63'),this['channels'][_0xd72d5[_0x9dbe('0x1e')]]);logger[_0x9dbe('0x1c')](_0x9dbe('0x64'),_0xd72d5[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]],{'showHidden':![],'depth':null}));this[_0x9dbe('0x1a')](_0x9dbe('0x2b'),'voice_outbound:save',this[_0x9dbe('0xe')]);logger[_0x9dbe('0x26')](_0x9dbe('0x65'),JSON[_0x9dbe('0x66')](this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]]));logger[_0x9dbe('0x1c')](_0x9dbe('0x67'),_0xd72d5[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](this[_0x9dbe('0xc')][_0xd72d5['uniqueid']],{'showHidden':![],'depth':null}));this[_0x9dbe('0x1a')](_0x9dbe('0x2b'),_0x9dbe('0x68'),this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]]);delete this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x1e')]];}else if(this[_0x9dbe('0xc')][_0xd72d5[_0x9dbe('0x69')]]){this[_0x9dbe('0xc')][_0xd72d5['linkedid']]['uniqueid']=this[_0x9dbe('0xc')][_0xd72d5['linkedid']][_0x9dbe('0x6a')];}if(this[_0x9dbe('0x10')][_0xd72d5[_0x9dbe('0x1e')]]){delete this[_0x9dbe('0x10')][_0xd72d5[_0x9dbe('0x1e')]];}}}catch(_0x361bbb){logger['error'](_0x9dbe('0x6b'),_0xd72d5[_0x9dbe('0x1e')],util[_0x9dbe('0x1f')](_0x361bbb,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9dbe('0x19')]['syncNewExten']=function(_0x1fe0f7){try{if(this[_0x9dbe('0x1b')](_0x1fe0f7)){logger[_0x9dbe('0x1c')](_0x9dbe('0x6c'),_0x1fe0f7[_0x9dbe('0x1e')],util['inspect'](_0x1fe0f7,{'showHidden':![],'depth':null}));if(_0x1fe0f7[_0x9dbe('0x6d')][_0x9dbe('0x6e')]()===_0x9dbe('0x6f')){_0x1fe0f7[_0x9dbe('0x70')]=(_0x1fe0f7['appdata']||_0x1fe0f7[_0x9dbe('0x70')])['toLowerCase']();if(_['startsWith'](_0x1fe0f7[_0x9dbe('0x70')],_0x9dbe('0x71'))){if(_[_0x9dbe('0x40')](this[_0x9dbe('0xf')][_0x1fe0f7[_0x9dbe('0x1e')]]))this[_0x9dbe('0xf')][_0x1fe0f7[_0x9dbe('0x1e')]]={};logger[_0x9dbe('0x26')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x1fe0f7[_0x9dbe('0x1e')],_0x1fe0f7[_0x9dbe('0x6d')],_0x1fe0f7[_0x9dbe('0x70')]);var _0x18b55e=_0x1fe0f7[_0x9dbe('0x70')][_0x9dbe('0x72')]('=');var _0x13d369=_0x18b55e[0x0][_0x9dbe('0x73')](/cdr\((.*)\)/);if(_0x13d369)this[_0x9dbe('0xf')][_0x1fe0f7['uniqueid']][_0x13d369[0x1]]=_0x18b55e[0x1];}}}}catch(_0x1f66a2){logger[_0x9dbe('0x39')](_0x9dbe('0x74'),_0x1fe0f7['uniqueid'],util[_0x9dbe('0x1f')](_0x1f66a2,{'showHidden':![],'depth':null}));}};module[_0x9dbe('0x75')]=VoiceDialReport;
\ No newline at end of file
index 5fd36a3..baae33b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f4=['[%s][voiceQueueReport][checkChannel]','inspect','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_presence:save','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','emitVoiceQueueSummary','type','inbound','available','sumDuration','sumHoldTime','total','unmanaged','abandoned','waiting','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','info','countBy','toNumber','callers','loggedIn','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','syncQueueCallerAbandon','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','last','queuecallerleaveAt','connectedlinenum','connectedlinename','queuecallerleave','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','assigned','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','startsWith','toLowerCase','linkedid','add','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','agentcomplete','[%s][voiceQueueReport][varset]','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membername','memberpenalty','memberrealtime','seconds','length','milliseconds','diff','answered','lastevent','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','syncAttendedTransfer','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','ATTENDEDTRANSFER','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','context','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceQueueReport][newexten]','lodash','moment','md5','ioredis','../../../config/logger','../ami','../model/queueReport','redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','queuesummarycomplete','syncQueueSummaryComplete','bind','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerLeave','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','syncNewExten','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','blindtransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','unlockRR','switch','isNil','Action','status','channel','catch','No\x20such\x20channel','error'];(function(_0x25b0bb,_0x53c5a6){var _0x416761=function(_0x5e42cb){while(--_0x5e42cb){_0x25b0bb['push'](_0x25b0bb['shift']());}};_0x416761(++_0x53c5a6);}(_0x74f4,0xaa));var _0x474f=function(_0x5ed08a,_0x327c66){_0x5ed08a=_0x5ed08a-0x0;var _0x57d241=_0x74f4[_0x5ed08a];return _0x57d241;};'use strict';var _=require(_0x474f('0x0'));var moment=require(_0x474f('0x1'));var util=require('util');var md5=require(_0x474f('0x2'));var Redis=require(_0x474f('0x3'));var config=require('../../../config/environment');var logger=require(_0x474f('0x4'))('ami');var ami=require(_0x474f('0x5'));var QueueReport=require(_0x474f('0x6'));config[_0x474f('0x7')]=_['defaults'](config[_0x474f('0x7')],{'host':_0x474f('0x8'),'port':0x18eb});var io=require(_0x474f('0x9'))(new Redis(config[_0x474f('0x7')]));var Sequence=function(){};Sequence[_0x474f('0xa')][_0x474f('0xb')]=function(_0x18fdc1){this[_0x474f('0xc')]=this[_0x474f('0xc')]?this[_0x474f('0xc')][_0x474f('0xd')](_0x18fdc1):_0x18fdc1();};function VoiceQueueReport(_0x52c8a5){this[_0x474f('0xe')]=new Sequence();this[_0x474f('0xf')]={};this[_0x474f('0x10')]=_0x52c8a5['agents'];this[_0x474f('0x11')]=_0x52c8a5[_0x474f('0x12')];this[_0x474f('0x13')]=_0x52c8a5['voiceQueues'];this[_0x474f('0x14')]=!![];this[_0x474f('0x15')]=_0x52c8a5['campaigns'];this[_0x474f('0x16')]={};ami['on'](_0x474f('0x17'),this[_0x474f('0x18')]['bind'](this));ami['on'](_0x474f('0x19'),this[_0x474f('0x1a')][_0x474f('0x1b')](this));ami['on'](_0x474f('0x1c'),this[_0x474f('0x1d')][_0x474f('0x1b')](this));ami['on'](_0x474f('0x1e'),this['syncQueueCallerAbandon'][_0x474f('0x1b')](this));ami['on']('queuecallerleave',this[_0x474f('0x1f')][_0x474f('0x1b')](this));ami['on']('agentcomplete',this[_0x474f('0x20')]['bind'](this));ami['on'](_0x474f('0x21'),this[_0x474f('0x22')][_0x474f('0x1b')](this));ami['on'](_0x474f('0x23'),this[_0x474f('0x24')]['bind'](this));ami['on'](_0x474f('0x25'),this[_0x474f('0x26')][_0x474f('0x1b')](this));ami['on'](_0x474f('0x27'),this[_0x474f('0x28')]['bind'](this));ami['on']('newexten',this[_0x474f('0x29')][_0x474f('0x1b')](this));ami['on']('musiconholdstart',this[_0x474f('0x2a')]['bind'](this));ami['on'](_0x474f('0x2b'),this[_0x474f('0x2c')][_0x474f('0x1b')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x474f('0x1b')](this));ami['on'](_0x474f('0x2d'),this['syncBlindTransfer'][_0x474f('0x1b')](this));this[_0x474f('0x2e')]();this[_0x474f('0x2f')]();}function clearChannels(_0x211535){if(!_[_0x474f('0x30')](_0x211535)){for(var _0x10f111 in _0x211535){if(_0x211535['hasOwnProperty'](_0x10f111)){delete _0x211535[_0x10f111];}}}}function clearCampaigns(_0x2b5fb5){if(!_[_0x474f('0x30')](_0x2b5fb5)){for(var _0xff871a in _0x2b5fb5){if(_0x2b5fb5[_0x474f('0x31')](_0xff871a)){_0x2b5fb5[_0xff871a][_0x474f('0x32')]=0x0;}}}}function clearVoiceQueues(_0x413117){if(!_['isEmpty'](_0x413117)){for(var _0x2fe476 in _0x413117){if(_0x413117[_0x474f('0x31')](_0x2fe476)){_0x413117[_0x2fe476][_0x474f('0x32')]=0x0;_0x413117[_0x2fe476][_0x474f('0x33')]=0x0;_0x413117[_0x2fe476][_0x474f('0x34')]=0x0;_0x413117[_0x2fe476]['waiting']=0x0;_0x413117[_0x2fe476]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x198a6f){if(!_[_0x474f('0x30')](_0x198a6f)){for(var _0x27c3dc in _0x198a6f){if(_0x198a6f[_0x474f('0x31')](_0x27c3dc)){_0x198a6f[_0x27c3dc][_0x474f('0x35')]=!![];}}}}VoiceQueueReport[_0x474f('0xa')]['clearZombieChannels']=function(){var _0x956465=this;for(var _0x2de99c in this['channels']){if(this['channels'][_0x474f('0x31')](_0x2de99c)&&!this['channels'][_0x2de99c][_0x474f('0x36')]){this[_0x474f('0xe')][_0x474f('0xb')](function(){if(!_[_0x474f('0x37')](_0x956465[_0x474f('0x11')][_0x2de99c])){return ami[_0x474f('0x38')]({'action':_0x474f('0x39'),'channel':_0x956465[_0x474f('0x11')][_0x2de99c][_0x474f('0x3a')]})[_0x474f('0x3b')](function(_0x2b6aad){if(_0x2b6aad['message']===_0x474f('0x3c')){setTimeout(function(){if(_0x956465[_0x474f('0x11')][_0x2de99c]){delete _0x956465[_0x474f('0x11')][_0x2de99c];logger[_0x474f('0x3d')](_0x474f('0x3e'),_0x2de99c,util[_0x474f('0x3f')](_0x2b6aad,{'showHidden':![],'depth':null}));}if(_0x956465[_0x474f('0xf')][_0x2de99c]){delete _0x956465[_0x474f('0xf')][_0x2de99c];logger[_0x474f('0x3d')]('[%s][voiceQueueReport][checkQueueReport]',_0x2de99c,util['inspect'](_0x2b6aad,{'showHidden':![],'depth':null}));}if(_0x956465['variables'][_0x2de99c]){delete _0x956465[_0x474f('0x16')][_0x2de99c];logger['error']('[%s][voiceQueueReport][checkVariables]',_0x2de99c,util[_0x474f('0x3f')](_0x2b6aad,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x474f('0xa')][_0x474f('0x28')]=function(){logger['error'](_0x474f('0x40'));clearChannels(this['channels']);this[_0x474f('0x41')](this[_0x474f('0xf')]);clearAgentBooked(this[_0x474f('0x10')]);clearVoiceQueues(this[_0x474f('0x13')]);clearCampaigns(this[_0x474f('0x15')]);};VoiceQueueReport[_0x474f('0xa')][_0x474f('0x41')]=function(_0x27663c){var _0x1410ec=this;if(!_['isEmpty'](_0x27663c)){for(var _0x50055c in _0x27663c){if(_0x27663c['hasOwnProperty'](_0x50055c)){_0x1410ec[_0x474f('0x42')](_0x27663c[_0x50055c],_0x474f('0x43'));delete _0x27663c[_0x50055c];}}}};VoiceQueueReport['prototype']['emit']=function(_0x5bf4f9,_0x358091,_0x338347){io['to'](_0x5bf4f9)[_0x474f('0x44')](_0x358091,_0x338347);};VoiceQueueReport[_0x474f('0xa')][_0x474f('0x45')]=function(_0x38cd52,_0x1c2d4b){logger[_0x474f('0x46')]('[%s][voiceQueueReport]['+_0x1c2d4b+_0x474f('0x47'),_0x38cd52[_0x474f('0x48')],util[_0x474f('0x3f')](_0x38cd52,{'showHidden':![],'depth':null}));this['emit'](util[_0x474f('0x49')](_0x474f('0x4a'),_0x38cd52[_0x474f('0x4b')]),'voice_queue_channel:save',_0x38cd52);io[_0x474f('0x44')](_0x474f('0x4c'),_0x38cd52);};VoiceQueueReport[_0x474f('0xa')][_0x474f('0x42')]=function(_0x18d07a,_0x11ff6b){logger[_0x474f('0x46')](_0x474f('0x4d')+_0x11ff6b+_0x474f('0x4e'),_0x18d07a[_0x474f('0x48')],util[_0x474f('0x3f')](_0x18d07a,{'showHidden':![],'depth':null}));this[_0x474f('0x44')](util[_0x474f('0x49')](_0x474f('0x4a'),_0x18d07a[_0x474f('0x4b')]),_0x474f('0x4f'),_0x18d07a);io[_0x474f('0x44')]('voice_queue_presence:remove',_0x18d07a);};VoiceQueueReport[_0x474f('0xa')][_0x474f('0x50')]=function(_0x755054,_0x157c21){if(_0x755054[_0x474f('0x51')]===_0x474f('0x52')){var _0x4ece30={'id':_0x755054['id'],'name':_0x755054[_0x474f('0x4b')],'strategy':_0x755054['strategy'],'answered':_0x755054['answered'],'available':_0x755054[_0x474f('0x53')],'loggedIn':_0x755054['loggedIn'],'pTalking':_0x755054[_0x474f('0x34')],'sumBillable':_0x755054['sumBillable'],'sumDuration':_0x755054[_0x474f('0x54')],'sumHoldTime':_0x755054[_0x474f('0x55')]||0x0,'talking':_0x755054[_0x474f('0x33')],'total':_0x755054[_0x474f('0x56')],'type':_0x755054[_0x474f('0x51')],'unmanaged':_0x755054[_0x474f('0x57')],'abandoned':_0x755054[_0x474f('0x58')],'waiting':_0x755054[_0x474f('0x59')]};if(_0x755054[_0x474f('0x5a')]){_0x4ece30[_0x474f('0x5a')]={'id':_0x755054['Trunk']['id'],'name':_0x755054[_0x474f('0x5a')][_0x474f('0x4b')],'active':_0x755054['Trunk'][_0x474f('0x5b')],'callerid':_0x755054[_0x474f('0x5a')][_0x474f('0x5c')]};}if(_0x755054[_0x474f('0x5d')]){_0x4ece30[_0x474f('0x5d')]={'id':_0x755054[_0x474f('0x5d')]['id'],'name':_0x755054[_0x474f('0x5d')]['name']};}var _0x2025dc=md5(JSON[_0x474f('0x5e')](_0x4ece30));if(_0x755054[_0x474f('0x2')]!==_0x2025dc){_0x755054[_0x474f('0x2')]=_0x2025dc;logger[_0x474f('0x46')](_0x474f('0x5f')+_0x157c21+_0x474f('0x60'),util[_0x474f('0x3f')](_0x4ece30,{'showHidden':![],'depth':null}));this[_0x474f('0x44')](util[_0x474f('0x49')](_0x474f('0x4a'),_0x4ece30[_0x474f('0x4b')]),_0x474f('0x61'),_0x4ece30);}}};VoiceQueueReport[_0x474f('0xa')][_0x474f('0x62')]=function(_0x24eb2c){return _0x24eb2c!==null&&!_[_0x474f('0x63')](_0x24eb2c);};VoiceQueueReport[_0x474f('0xa')]['loopQueueShow']=function(){var _0x3809f8=this;setInterval(function(){_0x3809f8['clearZombieChannels']();ami[_0x474f('0x38')]({'action':_0x474f('0x64')})['catch'](function(_0x2d732f){logger[_0x474f('0x3d')]('[voiceQueueReport][queues]',util[_0x474f('0x3f')](_0x2d732f,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x474f('0xa')][_0x474f('0x2e')]=function(){var _0x2d1a42=this;setInterval(function(){if(_0x2d1a42['flagQueueSummary']){return ami[_0x474f('0x38')]({'action':_0x474f('0x17')})[_0x474f('0x65')](function(_0x5954ef){_0x2d1a42[_0x474f('0x14')]=![];})['catch'](function(_0x1d0335){logger[_0x474f('0x3d')](_0x474f('0x66'),util[_0x474f('0x3f')](_0x1d0335,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x474f('0xa')]['syncQueueSummary']=function(_0xb6457){try{if(this[_0x474f('0x62')](_0xb6457)&&this[_0x474f('0x62')](_0xb6457[_0x474f('0x67')])){logger['debug'](_0x474f('0x68'),util['inspect'](_0xb6457,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0xb6457[_0x474f('0x67')]]){logger[_0x474f('0x69')]('[voiceQueueReport][queuesummary]\x20name:%s',_0xb6457[_0x474f('0x67')]);var _0x4addd0=_[_0x474f('0x6a')](this['channels'],_0x474f('0x67'))[_0xb6457[_0x474f('0x67')]]||0x0;var _0x53eb58=_0x4addd0-_0xb6457['callers'];if(this[_0x474f('0x13')][_0xb6457['queue']][_0x474f('0x59')]!==_[_0x474f('0x6b')](_0xb6457[_0x474f('0x6c')])||this['voiceQueues'][_0xb6457[_0x474f('0x67')]][_0x474f('0x6d')]!==_[_0x474f('0x6b')](_0xb6457[_0x474f('0x6e')])||this[_0x474f('0x13')][_0xb6457[_0x474f('0x67')]]['available']!==_[_0x474f('0x6b')](_0xb6457[_0x474f('0x53')])||this[_0x474f('0x13')][_0xb6457[_0x474f('0x67')]]['talking']!==_0x53eb58){this[_0x474f('0x13')][_0xb6457[_0x474f('0x67')]][_0x474f('0x59')]=_[_0x474f('0x6b')](_0xb6457[_0x474f('0x6c')]);this[_0x474f('0x13')][_0xb6457['queue']]['loggedIn']=_[_0x474f('0x6b')](_0xb6457['loggedin']);this[_0x474f('0x13')][_0xb6457['queue']]['available']=_[_0x474f('0x6b')](_0xb6457['available']);this[_0x474f('0x13')][_0xb6457[_0x474f('0x67')]][_0x474f('0x33')]=_0x53eb58>0x0?_0x53eb58:0x0;this[_0x474f('0x13')][_0xb6457[_0x474f('0x67')]][_0x474f('0x33')]=this[_0x474f('0x13')][_0xb6457[_0x474f('0x67')]][_0x474f('0x33')]>_[_0x474f('0x6b')](_0xb6457[_0x474f('0x6e')])?_['toNumber'](_0xb6457['loggedin']):this['voiceQueues'][_0xb6457[_0x474f('0x67')]][_0x474f('0x33')];this[_0x474f('0x50')](this[_0x474f('0x13')][_0xb6457[_0x474f('0x67')]],'queuesummary');}logger['debug'](_0x474f('0x6f'),util[_0x474f('0x3f')](this[_0x474f('0x13')][_0xb6457[_0x474f('0x67')]],{'showHidden':![],'depth':null}));ami[_0x474f('0x44')](_0x474f('0x70'),this['voiceQueues'][_0xb6457['queue']]);}}}catch(_0x31b3d9){logger[_0x474f('0x3d')](_0x474f('0x66'),util[_0x474f('0x3f')](_0x31b3d9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x474f('0xa')][_0x474f('0x1a')]=function(_0x21364b){logger['debug'](_0x474f('0x71'),util[_0x474f('0x3f')](_0x21364b,{'showHidden':![],'depth':null}));this[_0x474f('0x14')]=!![];};VoiceQueueReport['prototype'][_0x474f('0x1d')]=function(_0x121936){try{if(this[_0x474f('0x62')](_0x121936)){logger['debug'](_0x474f('0x72'),_0x121936[_0x474f('0x48')],util['inspect'](_0x121936,{'showHidden':![],'depth':null}));if(_[_0x474f('0x63')](this['queueReports'][_0x121936[_0x474f('0x48')]]))this['queueReports'][_0x121936[_0x474f('0x48')]]=[];if(_[_0x474f('0x63')](this[_0x474f('0x11')][_0x121936[_0x474f('0x48')]]))this[_0x474f('0x11')][_0x121936[_0x474f('0x48')]]={};var _0x34a2ea=new QueueReport();_0x34a2ea['name']=_0x121936[_0x474f('0x67')];_0x34a2ea['type']=this[_0x474f('0x13')][_0x34a2ea[_0x474f('0x4b')]]&&this[_0x474f('0x13')][_0x34a2ea[_0x474f('0x4b')]][_0x474f('0x51')]?this['voiceQueues'][_0x34a2ea['name']][_0x474f('0x51')]||'inbound':_0x474f('0x52');_0x34a2ea[_0x474f('0x67')]=_0x121936['queue'];_0x34a2ea[_0x474f('0x73')]=moment()['format'](_0x474f('0x74'));_0x34a2ea[_0x474f('0x75')]=_0x121936[_0x474f('0x75')];_0x34a2ea['count']=_0x121936[_0x474f('0x76')];_0x34a2ea['uniqueid']=_0x121936[_0x474f('0x48')];_0x34a2ea['routealias']=this[_0x474f('0x11')][_0x121936[_0x474f('0x48')]]['routealias'];logger['info'](_0x474f('0x77'),_0x34a2ea[_0x474f('0x4b')],_0x34a2ea['type']);_[_0x474f('0x78')](_0x34a2ea,_[_0x474f('0x79')](_0x121936,_[_0x474f('0x7a')](_0x34a2ea)));this[_0x474f('0xf')][_0x121936[_0x474f('0x48')]][_0x474f('0x7b')](_0x34a2ea);this[_0x474f('0x11')][_0x121936[_0x474f('0x48')]]=_0x34a2ea;this[_0x474f('0x45')](_0x34a2ea,'queuecallerjoin');}}catch(_0x2d54b7){logger[_0x474f('0x3d')](_0x474f('0x72'),_0x121936[_0x474f('0x48')],util[_0x474f('0x3f')](_0x2d54b7,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x474f('0x7c')]=function(_0xcd21a0){try{if(this['isNotNull'](_0xcd21a0)){logger[_0x474f('0x46')]('[%s][voiceQueueReport][queuecallerabandon]',_0xcd21a0[_0x474f('0x48')],util['inspect'](_0xcd21a0,{'showHidden':![],'depth':null}));if(this[_0x474f('0xf')][_0xcd21a0[_0x474f('0x48')]]){var _0x5bb9de=_['last'](this[_0x474f('0xf')][_0xcd21a0['uniqueid']]);_0x5bb9de[_0x474f('0x7d')]=![];_0x5bb9de[_0x474f('0x7e')]=null;_0x5bb9de[_0x474f('0x7f')]=_0xcd21a0[_0x474f('0x7f')];_0x5bb9de[_0x474f('0x80')]=_0xcd21a0[_0x474f('0x80')];_0x5bb9de[_0x474f('0x1e')]=!![];_0x5bb9de[_0x474f('0x81')]=moment()[_0x474f('0x49')](_0x474f('0x74'));_0x5bb9de[_0x474f('0x82')]=_0x474f('0x83');_0x5bb9de[_0x474f('0x84')]=null;logger[_0x474f('0x69')](_0x474f('0x85'),_0x5bb9de[_0x474f('0x4b')],_0x5bb9de[_0x474f('0x51')]);this['channels'][_0xcd21a0[_0x474f('0x48')]]=_0x5bb9de;this['emitVoiceQueueChannelRemove'](_0x5bb9de,'queuecallerabandon');}}}catch(_0x9becfd){logger[_0x474f('0x3d')]('[%s][voiceQueueReport][queuecallerabandon]',_0xcd21a0[_0x474f('0x48')],util[_0x474f('0x3f')](_0x9becfd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x474f('0xa')][_0x474f('0x1f')]=function(_0x57548a){try{if(this[_0x474f('0x62')](_0x57548a)){logger[_0x474f('0x46')](_0x474f('0x86'),_0x57548a[_0x474f('0x48')],util[_0x474f('0x3f')](_0x57548a,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x57548a[_0x474f('0x48')]]){var _0x1c42b1=_[_0x474f('0x87')](this['queueReports'][_0x57548a[_0x474f('0x48')]]);_0x1c42b1[_0x474f('0x88')]=moment()[_0x474f('0x49')](_0x474f('0x74'));_0x1c42b1['connectedlinenum']=_0x57548a[_0x474f('0x89')];_0x1c42b1[_0x474f('0x8a')]=_0x57548a[_0x474f('0x8a')];logger[_0x474f('0x69')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x1c42b1[_0x474f('0x4b')],_0x1c42b1[_0x474f('0x51')],_0x57548a['connectedlinenum'],_0x57548a['connectedlinename']);this['channels'][_0x57548a[_0x474f('0x48')]]=_0x1c42b1;this['emitVoiceQueueChannelSave'](_0x1c42b1,_0x474f('0x8b'));}}}catch(_0x275618){logger[_0x474f('0x3d')]('[%s][voiceQueueReport][queuecallerleave]',_0x57548a[_0x474f('0x48')],util['inspect'](_0x275618,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x474f('0xa')]['syncAgentConnect']=function(_0x2b58ab){try{if(this[_0x474f('0x62')](_0x2b58ab)){logger[_0x474f('0x46')]('[%s][voiceQueueReport][agentconnect]',_0x2b58ab[_0x474f('0x48')],util[_0x474f('0x3f')](_0x2b58ab,{'showHidden':![],'depth':null}));if(this[_0x474f('0xf')][_0x2b58ab['uniqueid']]){var _0x229006=_[_0x474f('0x87')](this[_0x474f('0xf')][_0x2b58ab[_0x474f('0x48')]]);_0x229006['queuecallercomplete']=!![];_0x229006[_0x474f('0x82')]=_0x474f('0x8c');logger[_0x474f('0x69')](_0x474f('0x8d'),_0x229006[_0x474f('0x4b')],_0x229006['type']);}}}catch(_0x4ad1d1){logger[_0x474f('0x3d')](_0x474f('0x8e'),_0x2b58ab[_0x474f('0x48')],util[_0x474f('0x3f')](_0x4ad1d1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x474f('0xa')]['syncAgentComplete']=function(_0x270a5c){try{if(this['isNotNull'](_0x270a5c)){logger[_0x474f('0x46')](_0x474f('0x8f'),_0x270a5c[_0x474f('0x48')],util[_0x474f('0x3f')](_0x270a5c,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x270a5c['uniqueid']]){var _0xeba0d9=_['last'](this['queueReports'][_0x270a5c[_0x474f('0x48')]]);_0xeba0d9[_0x474f('0x1e')]=![];_0xeba0d9[_0x474f('0x81')]=null;_0xeba0d9[_0x474f('0x90')]=!![];_0xeba0d9[_0x474f('0x84')]=_0x270a5c['membername'];_0xeba0d9[_0x474f('0x7f')]=_0x270a5c[_0x474f('0x7f')];_0xeba0d9[_0x474f('0x7d')]=!![];_0xeba0d9[_0x474f('0x91')]=![];_0xeba0d9[_0x474f('0x92')]=null;if(!_0xeba0d9[_0x474f('0x93')]){if(_0x270a5c[_0x474f('0x94')]==_0x474f('0x93')){_0xeba0d9[_0x474f('0x82')]=_0x474f('0x95');logger[_0x474f('0x69')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0xeba0d9[_0x474f('0x4b')],_0xeba0d9[_0x474f('0x51')]);}else{if(_[_0x474f('0x96')](_0x270a5c[_0x474f('0x3a')][_0x474f('0x97')](),'local/')){if(this[_0x474f('0xf')][_0x270a5c[_0x474f('0x98')]]){var _0x590b18=_['last'](this['queueReports'][_0x270a5c[_0x474f('0x98')]]);_0x590b18[_0x474f('0x7d')]=![];_0x590b18[_0x474f('0x91')]=!![];_0x590b18['queuecallerexitAt']=moment(_0xeba0d9['queuecallerjoinAt'])[_0x474f('0x99')](_0x270a5c[_0x474f('0x7f')],'seconds')[_0x474f('0x49')](_0x474f('0x74'));_0x590b18[_0x474f('0x82')]=_0x474f('0x9a');_0x590b18['transfer']=!![];_0x590b18[_0x474f('0x9b')]=_0x474f('0x9c');_0x590b18[_0x474f('0x9d')]=_0x270a5c[_0x474f('0x9e')];_0x590b18[_0x474f('0x9f')]=_0x270a5c['uniqueid'];logger[_0x474f('0x69')](_0x474f('0xa0'),_0x590b18[_0x474f('0x4b')],_0x590b18[_0x474f('0x51')]);var _0x1954f7=this['queueReports'][_0x270a5c['linkedid']];this[_0x474f('0xf')][_0x270a5c[_0x474f('0x98')]]=this['queueReports'][_0x270a5c[_0x474f('0x48')]];this[_0x474f('0xf')][_0x270a5c[_0x474f('0x48')]]=_0x1954f7;}}else{_0xeba0d9[_0x474f('0x82')]=_0x474f('0xa1')+_0x270a5c[_0x474f('0x94')][_0x474f('0xa2')]();logger[_0x474f('0x69')](_0x474f('0xa3'),_0xeba0d9[_0x474f('0x4b')],_0xeba0d9['type'],_0xeba0d9['queuecallerexitreason']);}}}this[_0x474f('0x11')][_0x270a5c[_0x474f('0x48')]]=_0xeba0d9;this[_0x474f('0x42')](_0xeba0d9,_0x474f('0xa4'));}}}catch(_0x45897c){logger[_0x474f('0x3d')](_0x474f('0x8f'),_0x270a5c[_0x474f('0x48')],util[_0x474f('0x3f')](_0x45897c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x474f('0xa')]['syncVarSet']=function(_0x8e1611){try{if(this[_0x474f('0x62')](_0x8e1611)){logger[_0x474f('0x46')](_0x474f('0xa5'),_0x8e1611[_0x474f('0x48')],util[_0x474f('0x3f')](_0x8e1611,{'showHidden':![],'depth':null}));this[_0x474f('0xa6')](_0x8e1611['uniqueid'],_[_0x474f('0x7a')](_0x8e1611[_0x474f('0xa7')])[0x0],_0x8e1611[_0x474f('0xa8')]);if(this['queueReports'][_0x8e1611[_0x474f('0x48')]]){var _0x82bf71=_['last'](this[_0x474f('0xf')][_0x8e1611['uniqueid']]);if(_0x82bf71){if(this[_0x474f('0x62')](_0x8e1611[_0x474f('0xa7')])&&this[_0x474f('0x62')](_0x8e1611[_0x474f('0xa7')][_0x474f('0xa9')])){switch(_0x8e1611['value']){case _0x474f('0xaa'):_0x82bf71[_0x474f('0x91')]=![];_0x82bf71[_0x474f('0x92')]=null;break;case _0x474f('0xab'):_0x82bf71['lastevent']=_0x474f('0xac');_0x82bf71[_0x474f('0x91')]=!![];_0x82bf71[_0x474f('0x92')]=moment()['format'](_0x474f('0x74'));_0x82bf71[_0x474f('0x88')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0x474f('0x46')](_0x474f('0xad'),_0x8e1611[_0x474f('0x48')],util['inspect'](_0x82bf71,{'showHidden':![],'depth':null}));ami[_0x474f('0x44')](_0x474f('0xae'),_0x82bf71);break;default:_0x82bf71[_0x474f('0x91')]=!![];_0x82bf71[_0x474f('0x92')]=moment()[_0x474f('0x49')](_0x474f('0x74'));_0x82bf71[_0x474f('0x88')]=moment()[_0x474f('0x49')](_0x474f('0x74'));}_0x82bf71[_0x474f('0x1e')]=![];_0x82bf71['queuecallerabandonAt']=null;_0x82bf71['queuecallerexitreason']=_0x8e1611[_0x474f('0xa8')];this[_0x474f('0x11')][_0x8e1611[_0x474f('0x48')]]=_0x82bf71;this[_0x474f('0x42')](_0x82bf71,_0x474f('0x23'));}else if(this['isNotNull'](_0x8e1611[_0x474f('0xa7')])&&this['isNotNull'](_0x8e1611['variable'][_0x474f('0xaf')])){if(!_0x82bf71[_0x474f('0x1e')]){_0x82bf71['queuecallerexit']=!![];_0x82bf71[_0x474f('0x92')]=moment()[_0x474f('0x49')](_0x474f('0x74'));_0x82bf71[_0x474f('0x82')]=_0x474f('0xb0');_0x82bf71[_0x474f('0x88')]=moment()[_0x474f('0x49')](_0x474f('0x74'));this['channels'][_0x8e1611[_0x474f('0x48')]]=_0x82bf71;}}logger[_0x474f('0x69')](_0x474f('0xb1'),_0x8e1611[_0x474f('0x48')],_0x82bf71[_0x474f('0x4b')],_0x82bf71['type'],_['keys'](_0x8e1611[_0x474f('0xa7')])[0x0],_0x8e1611[_0x474f('0xa8')]);_0x82bf71['variables']=this[_0x474f('0x16')][_0x8e1611[_0x474f('0x48')]];}}}}catch(_0x583ceb){logger[_0x474f('0x3d')](_0x474f('0xa5'),_0x8e1611[_0x474f('0x48')],util['inspect'](_0x583ceb,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x474f('0xa')]['addVariable']=function(_0x45a40b,_0x3b9a96,_0x374e82){var _0x54349e=[_0x474f('0xb2'),'rtpaudioqosbridged',_0x474f('0xb3'),_0x474f('0xb4'),_0x474f('0xb5'),'rtpaudioqoslossbridged',_0x474f('0xb6'),'rtpaudioqosrttbridged',_0x474f('0xb7'),_0x474f('0xb8'),_0x474f('0xb9'),_0x474f('0xba'),'membercalls','memberdynamic','memberinterface','memberlastcall',_0x474f('0xbb'),_0x474f('0xbc'),_0x474f('0xbd')];if(!_['isNil'](_0x3b9a96)&&!_['includes'](_0x54349e,_0x3b9a96)){if(_[_0x474f('0x63')](this[_0x474f('0x16')][_0x45a40b])){this[_0x474f('0x16')][_0x45a40b]={};}this['variables'][_0x45a40b][_0x3b9a96]=_0x374e82;}};VoiceQueueReport[_0x474f('0xa')][_0x474f('0x26')]=function(_0x145f80){try{if(this[_0x474f('0x62')](_0x145f80)){logger[_0x474f('0x46')]('[%s][voiceQueueReport][hangup]',_0x145f80[_0x474f('0x48')],util[_0x474f('0x3f')](_0x145f80,{'showHidden':![],'depth':null}));if(this[_0x474f('0xf')][_0x145f80[_0x474f('0x48')]]){for(var _0x563674=0x0,_0x2bbcee={};_0x563674<this[_0x474f('0xf')][_0x145f80[_0x474f('0x48')]]['length'];_0x563674+=0x1){_0x2bbcee=this[_0x474f('0xf')][_0x145f80[_0x474f('0x48')]][_0x563674];if(this[_0x474f('0x13')][_0x2bbcee['queue']]){if(_0x2bbcee[_0x474f('0x91')]&&_0x2bbcee['transfer']!=!![]){this[_0x474f('0x13')][_0x2bbcee[_0x474f('0x67')]][_0x474f('0x57')]+=0x1;}if(_0x2bbcee[_0x474f('0x1e')]){this[_0x474f('0x13')][_0x2bbcee['queue']][_0x474f('0x58')]+=0x1;}this['voiceQueues'][_0x2bbcee['queue']][_0x474f('0x55')]+=moment(_0x2bbcee[_0x474f('0x88')])['diff'](_0x2bbcee['queuecallerjoinAt'],_0x474f('0xbe'))||0x0;if(_0x563674===this['queueReports'][_0x145f80['uniqueid']][_0x474f('0xbf')]-0x1){this[_0x474f('0x13')][_0x2bbcee[_0x474f('0x67')]][_0x474f('0x54')]+=moment()[_0x474f('0xc0')](0x0)[_0x474f('0xc1')](_0x2bbcee[_0x474f('0x73')],'seconds');this[_0x474f('0x13')][_0x2bbcee[_0x474f('0x67')]]['total']+=0x1;if(_0x2bbcee[_0x474f('0x7d')]){this['voiceQueues'][_0x2bbcee[_0x474f('0x67')]][_0x474f('0xc2')]+=0x1;this[_0x474f('0x13')][_0x2bbcee[_0x474f('0x67')]]['sumBillable']+=moment()[_0x474f('0xc0')](0x0)[_0x474f('0xc1')](_0x2bbcee[_0x474f('0x88')],_0x474f('0xbe'));_0x2bbcee['queuecallercompleteAt']=moment()[_0x474f('0x49')](_0x474f('0x74'));_0x2bbcee[_0x474f('0x91')]=![];_0x2bbcee[_0x474f('0x92')]=null;}if(_0x2bbcee[_0x474f('0x91')]&&_0x2bbcee[_0x474f('0x93')]!=!![]){_0x2bbcee[_0x474f('0xc3')]='unmanaged';logger[_0x474f('0x46')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x145f80['uniqueid'],util[_0x474f('0x3f')](_0x2bbcee,{'showHidden':![],'depth':null}));ami['emit'](_0x474f('0xc4'),_0x2bbcee);}if(_0x2bbcee['queuecallerabandon']){_0x2bbcee[_0x474f('0xc3')]=_0x474f('0x58');logger['debug'](_0x474f('0xc5'),_0x145f80['uniqueid'],util[_0x474f('0x3f')](_0x2bbcee,{'showHidden':![],'depth':null}));ami[_0x474f('0x44')](_0x474f('0xc6'),_0x2bbcee);}}else{this[_0x474f('0x13')][_0x2bbcee[_0x474f('0x67')]][_0x474f('0x54')]+=this[_0x474f('0x13')][_0x2bbcee[_0x474f('0x67')]][_0x474f('0x55')];}logger[_0x474f('0x69')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x145f80['uniqueid'],_0x2bbcee[_0x474f('0x4b')],_0x2bbcee[_0x474f('0x51')],_0x145f80[_0x474f('0xc7')]);this[_0x474f('0x11')][_0x145f80['uniqueid']]=_0x2bbcee;this[_0x474f('0x42')](_0x2bbcee,_0x474f('0x25'));this[_0x474f('0x50')](this['voiceQueues'][_0x2bbcee[_0x474f('0x67')]],_0x474f('0x25'));}}logger[_0x474f('0x46')](_0x474f('0xc8'),_0x145f80[_0x474f('0x48')],util[_0x474f('0x3f')](this[_0x474f('0xf')][_0x145f80['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x474f('0x44')]('custom:voiceQueueReport',this[_0x474f('0xf')][_0x145f80[_0x474f('0x48')]]);delete this['queueReports'][_0x145f80[_0x474f('0x48')]];delete this[_0x474f('0x11')][_0x145f80[_0x474f('0x48')]];}if(this[_0x474f('0x16')][_0x145f80[_0x474f('0x48')]]){delete this['variables'][_0x145f80[_0x474f('0x48')]];}}}catch(_0x1a6bee){logger[_0x474f('0x3d')]('[%s][voiceQueueReport][hangup]',_0x145f80[_0x474f('0x48')],util[_0x474f('0x3f')](_0x1a6bee,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x474f('0xa')][_0x474f('0xc9')]=function(_0x7c4e76){try{if(this[_0x474f('0x62')](_0x7c4e76)){logger[_0x474f('0x46')](_0x474f('0xca'),_0x7c4e76[_0x474f('0x48')],util['inspect'](_0x7c4e76,{'showHidden':![],'depth':null}));var _0x4194a9;if(this['queueReports'][_0x7c4e76[_0x474f('0xcb')]]){_0x4194a9=_[_0x474f('0x87')](this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xcb')]]);_0x4194a9[_0x474f('0x9d')]=_0x7c4e76[_0x474f('0xcc')];_0x4194a9[_0x474f('0x9f')]=_0x7c4e76[_0x474f('0xcd')];_0x4194a9['queuecallerexitreason']='ATTENDEDTRANSFER';_0x4194a9[_0x474f('0x93')]=!![];_0x4194a9[_0x474f('0x9b')]=_0x474f('0xce');if(this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xcd')]]){var _0x2ce4ee=this['queueReports'][_0x7c4e76['secondtransfereruniqueid']];this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xcd')]]=this['queueReports'][_0x7c4e76[_0x474f('0xcb')]];this[_0x474f('0xf')][_0x7c4e76['transfereeuniqueid']]=_0x2ce4ee;var _0x447837=_[_0x474f('0x87')](this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xcb')]]);_0x447837[_0x474f('0x36')]=!![];}logger[_0x474f('0x69')](_0x474f('0xcf'),_0x7c4e76[_0x474f('0x48')],_0x4194a9[_0x474f('0x4b')],_0x4194a9[_0x474f('0x51')],_0x4194a9[_0x474f('0x9d')],_0x4194a9[_0x474f('0x9f')]);}else if(this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xd0')]]){_0x4194a9=_[_0x474f('0x87')](this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xd0')]]);_0x4194a9[_0x474f('0x9d')]=_0x7c4e76[_0x474f('0xd1')];_0x4194a9[_0x474f('0x9f')]=_0x7c4e76[_0x474f('0xd2')];_0x4194a9[_0x474f('0x82')]=_0x474f('0xd3');_0x4194a9[_0x474f('0x93')]=!![];_0x4194a9[_0x474f('0x9b')]=_0x474f('0xce');if(this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xd2')]]){var _0x2ce4ee=this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xd2')]];this['queueReports'][_0x7c4e76[_0x474f('0xd2')]]=this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xd0')]];this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xd0')]]=_0x2ce4ee;var _0x447837=_[_0x474f('0x87')](this[_0x474f('0xf')][_0x7c4e76[_0x474f('0xd0')]]);_0x447837[_0x474f('0x36')]=!![];}logger[_0x474f('0x69')](_0x474f('0xcf'),_0x7c4e76[_0x474f('0x48')],_0x4194a9[_0x474f('0x4b')],_0x4194a9[_0x474f('0x51')],_0x4194a9[_0x474f('0x9d')],_0x4194a9['transferuniqueid']);}}}catch(_0xb473ba){logger['error']('[%s][voiceQueueReport][attendedtransfer]',_0x7c4e76[_0x474f('0x48')],util['inspect'](_0xb473ba,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x474f('0xa')][_0x474f('0xd4')]=function(_0x3ebd47){try{if(this[_0x474f('0x62')](_0x3ebd47)){logger['debug'](_0x474f('0xd5'),_0x3ebd47[_0x474f('0x48')],util[_0x474f('0x3f')](_0x3ebd47,{'showHidden':![],'depth':null}));if(this[_0x474f('0xf')][_0x3ebd47['transfereeuniqueid']]){var _0x2139da=_[_0x474f('0x87')](this[_0x474f('0xf')][_0x3ebd47['transfereeuniqueid']]);_0x2139da[_0x474f('0x82')]=_0x474f('0xd6');_0x2139da[_0x474f('0x93')]=!![];_0x2139da[_0x474f('0x9b')]=_0x474f('0xd7');_0x2139da[_0x474f('0x9d')]=_0x3ebd47['extension'];_0x2139da[_0x474f('0x9f')]=_0x3ebd47[_0x474f('0xcb')];logger[_0x474f('0x69')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x3ebd47['uniqueid'],_0x2139da[_0x474f('0x4b')],_0x2139da['type'],_0x2139da['transferexten'],_0x2139da[_0x474f('0x9f')]);this[_0x474f('0x26')]({'event':'BlindTransfer','uniqueid':_0x3ebd47[_0x474f('0xcb')],'context':_0x3ebd47[_0x474f('0xd8')],'channel':_0x3ebd47['transfererchannel']});}}}catch(_0x2d2d90){logger[_0x474f('0x3d')]('[%s][voiceQueueReport][blindtransfer]',_0x3ebd47[_0x474f('0x48')],util[_0x474f('0x3f')](_0x2d2d90,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x474f('0x2a')]=function(_0x5344b7){try{if(this[_0x474f('0x62')](_0x5344b7)){logger[_0x474f('0x46')](_0x474f('0xd9'),_0x5344b7[_0x474f('0x48')],util[_0x474f('0x3f')](_0x5344b7,{'showHidden':![],'depth':null}));if(this[_0x474f('0xf')][_0x5344b7['uniqueid']]){var _0x57eba0=_[_0x474f('0x87')](this[_0x474f('0xf')][_0x5344b7[_0x474f('0x48')]]);if(!_['isNil'](_0x57eba0[_0x474f('0x88')])){_0x57eba0[_0x474f('0xda')]=moment()[_0x474f('0x49')](_0x474f('0x74'));logger[_0x474f('0x69')](_0x474f('0xdb'),_0x5344b7[_0x474f('0x48')],_0x57eba0[_0x474f('0xda')]);}}}}catch(_0xd30780){logger[_0x474f('0x3d')](_0x474f('0xd9'),_0x5344b7[_0x474f('0x48')],util[_0x474f('0x3f')](_0xd30780,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x474f('0x2c')]=function(_0x50146a){try{if(this[_0x474f('0x62')](_0x50146a)){logger[_0x474f('0x46')](_0x474f('0xdc'),_0x50146a[_0x474f('0x48')],util[_0x474f('0x3f')](_0x50146a,{'showHidden':![],'depth':null}));if(this[_0x474f('0xf')][_0x50146a[_0x474f('0x48')]]){var _0xfc3d46=_['last'](this['queueReports'][_0x50146a[_0x474f('0x48')]]);if(!_['isNil'](_0xfc3d46['mohstarttime'])){_0xfc3d46['mohtime']+=moment()['milliseconds'](0x0)[_0x474f('0xc1')](_0xfc3d46['mohstarttime'],_0x474f('0xbe'));logger[_0x474f('0x69')](_0x474f('0xdd'),_0x50146a[_0x474f('0x48')],_0xfc3d46[_0x474f('0xde')]);delete _0xfc3d46[_0x474f('0xda')];}}}}catch(_0x330ed3){logger[_0x474f('0x3d')](_0x474f('0xdc'),_0x50146a[_0x474f('0x48')],util[_0x474f('0x3f')](_0x330ed3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x474f('0xa')]['syncNewExten']=function(_0x4936e4){try{if(this['isNotNull'](_0x4936e4)){logger[_0x474f('0x46')]('[%s][voiceQueueReport][newexten]\x20event:',_0x4936e4['uniqueid'],util['inspect'](_0x4936e4,{'showHidden':![],'depth':null}));if(_0x4936e4[_0x474f('0xdf')][_0x474f('0x97')]()===_0x474f('0xe0')){_0x4936e4[_0x474f('0xe1')]=_0x4936e4[_0x474f('0xe2')]&&_0x4936e4[_0x474f('0xe2')][_0x474f('0x96')](_0x474f('0xe3'))?_0x4936e4[_0x474f('0xe2')]:(_0x4936e4[_0x474f('0xe2')]||_0x4936e4[_0x474f('0xe1')])[_0x474f('0x97')]();if(_[_0x474f('0x96')](_0x4936e4[_0x474f('0xe1')][_0x474f('0x97')](),_0x474f('0xe4'))){logger[_0x474f('0x69')](_0x474f('0xe5'),_0x4936e4[_0x474f('0x48')],_0x4936e4['application'],_0x4936e4[_0x474f('0xe1')]);if(_[_0x474f('0x63')](this[_0x474f('0x11')][_0x4936e4[_0x474f('0x48')]]))this[_0x474f('0x11')][_0x4936e4['uniqueid']]={};var _0x4362c7=_0x4936e4['applicationdata']['split']('=');var _0x4ed82b=_0x4362c7[0x0]['toLowerCase']()[_0x474f('0xe6')](/cdr\((.*)\)/);if(_0x4ed82b)this[_0x474f('0x11')][_0x4936e4[_0x474f('0x48')]][_0x4ed82b[0x1]]=_0x4362c7[0x1];}}}}catch(_0x491368){logger[_0x474f('0x3d')](_0x474f('0xe7'),_0x4936e4[_0x474f('0x48')],util[_0x474f('0x3f')](_0x491368,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
+var _0x6a55=['[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','syncQueueCallerJoin','[%s][voiceQueueReport][queuecallerjoin]','inbound','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','info','merge','pick','push','[%s][voiceQueueReport][queuecallerabandon]','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','lastAssignedTo','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','queuecallercomplete','COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','last','assigned','membername','queuecallerexit','transfer','reason','startsWith','toLowerCase','local/','linkedid','queuecallerexitAt','add','FORWARDTRANSFER','destexten','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][varset]','addVariable','value','variable','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceQueueReport][hangup]','length','abandoned','seconds','milliseconds','diff','sumBillable','queuecallercompleteAt','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transferexten','secondtransfererexten','transferuniqueid','ATTENDEDTRANSFER','transfertype','ATTENDED','secondtransfereruniqueid','transfereeuniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','extension','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','mohtime','[%s][voiceQueueReport][newexten]\x20event:','applicationdata','appdata','cdr(','application','match','exports','lodash','util','md5','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','queuesummary','syncQueueSummary','queuesummarycomplete','syncQueueSummaryComplete','bind','queuecallerjoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','syncFullyBooted','newexten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncBlindTransfer','loopQueueSummary','loopQueueShow','hasOwnProperty','isEmpty','originated','talking','pTalking','waiting','queueStatusComplete','unlockRR','switch','Action','status','channel','catch','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','queueReports','[%s][voiceQueueReport][checkQueueReport]','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emitVoiceQueueChannelSave','debug',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save','[%s][voiceQueueReport][','emit','name','voice_queue_channel:remove','emitVoiceQueueSummary','type','strategy','answered','available','loggedIn','sumHoldTime','total','unmanaged','Trunk','active','Interval',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','clearZombieChannels','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20name:%s','callers','toNumber','loggedin'];(function(_0xf86cbd,_0x1f85df){var _0x94c692=function(_0x239983){while(--_0x239983){_0xf86cbd['push'](_0xf86cbd['shift']());}};_0x94c692(++_0x1f85df);}(_0x6a55,0x154));var _0x56a5=function(_0xb096ef,_0x20ebdf){_0xb096ef=_0xb096ef-0x0;var _0x5ac5b=_0x6a55[_0xb096ef];return _0x5ac5b;};'use strict';var _=require(_0x56a5('0x0'));var moment=require('moment');var util=require(_0x56a5('0x1'));var md5=require(_0x56a5('0x2'));var Redis=require('ioredis');var config=require(_0x56a5('0x3'));var logger=require(_0x56a5('0x4'))(_0x56a5('0x5'));var ami=require(_0x56a5('0x6'));var QueueReport=require(_0x56a5('0x7'));config[_0x56a5('0x8')]=_[_0x56a5('0x9')](config[_0x56a5('0x8')],{'host':_0x56a5('0xa'),'port':0x18eb});var io=require(_0x56a5('0xb'))(new Redis(config[_0x56a5('0x8')]));var Sequence=function(){};Sequence[_0x56a5('0xc')][_0x56a5('0xd')]=function(_0x27d701){this['tail']=this[_0x56a5('0xe')]?this[_0x56a5('0xe')]['finally'](_0x27d701):_0x27d701();};function VoiceQueueReport(_0x2915f1){this['sequence']=new Sequence();this['queueReports']={};this[_0x56a5('0xf')]=_0x2915f1[_0x56a5('0xf')];this[_0x56a5('0x10')]=_0x2915f1[_0x56a5('0x11')];this[_0x56a5('0x12')]=_0x2915f1[_0x56a5('0x12')];this[_0x56a5('0x13')]=!![];this[_0x56a5('0x14')]=_0x2915f1[_0x56a5('0x14')];this['variables']={};ami['on'](_0x56a5('0x15'),this[_0x56a5('0x16')]['bind'](this));ami['on'](_0x56a5('0x17'),this[_0x56a5('0x18')][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x1a'),this['syncQueueCallerJoin'][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x1b'),this[_0x56a5('0x1c')][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x1d'),this[_0x56a5('0x1e')][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x1f'),this[_0x56a5('0x20')]['bind'](this));ami['on']('agentconnect',this[_0x56a5('0x21')]['bind'](this));ami['on'](_0x56a5('0x22'),this[_0x56a5('0x23')][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x24'),this[_0x56a5('0x25')]['bind'](this));ami['on']('fullybooted',this[_0x56a5('0x26')]['bind'](this));ami['on'](_0x56a5('0x27'),this['syncNewExten'][_0x56a5('0x19')](this));ami['on'](_0x56a5('0x28'),this[_0x56a5('0x29')]['bind'](this));ami['on'](_0x56a5('0x2a'),this['syncMusicOnHoldStop'][_0x56a5('0x19')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x56a5('0x19')](this));ami['on']('blindtransfer',this[_0x56a5('0x2b')]['bind'](this));this[_0x56a5('0x2c')]();this[_0x56a5('0x2d')]();}function clearChannels(_0x82866c){if(!_['isEmpty'](_0x82866c)){for(var _0x38b5e0 in _0x82866c){if(_0x82866c[_0x56a5('0x2e')](_0x38b5e0)){delete _0x82866c[_0x38b5e0];}}}}function clearCampaigns(_0x59158c){if(!_[_0x56a5('0x2f')](_0x59158c)){for(var _0x3cb7ae in _0x59158c){if(_0x59158c[_0x56a5('0x2e')](_0x3cb7ae)){_0x59158c[_0x3cb7ae][_0x56a5('0x30')]=0x0;}}}}function clearVoiceQueues(_0x2b994f){if(!_[_0x56a5('0x2f')](_0x2b994f)){for(var _0x5e894f in _0x2b994f){if(_0x2b994f[_0x56a5('0x2e')](_0x5e894f)){_0x2b994f[_0x5e894f]['originated']=0x0;_0x2b994f[_0x5e894f][_0x56a5('0x31')]=0x0;_0x2b994f[_0x5e894f][_0x56a5('0x32')]=0x0;_0x2b994f[_0x5e894f][_0x56a5('0x33')]=0x0;_0x2b994f[_0x5e894f][_0x56a5('0x34')]=!![];}}}}function clearAgentBooked(_0x263188){if(!_[_0x56a5('0x2f')](_0x263188)){for(var _0x512a48 in _0x263188){if(_0x263188[_0x56a5('0x2e')](_0x512a48)){_0x263188[_0x512a48][_0x56a5('0x35')]=!![];}}}}VoiceQueueReport[_0x56a5('0xc')]['clearZombieChannels']=function(){var _0x38b761=this;for(var _0x2f8159 in this['channels']){if(this['channels'][_0x56a5('0x2e')](_0x2f8159)&&!this[_0x56a5('0x10')][_0x2f8159][_0x56a5('0x36')]){this['sequence'][_0x56a5('0xd')](function(){if(!_['isNil'](_0x38b761[_0x56a5('0x10')][_0x2f8159])){return ami[_0x56a5('0x37')]({'action':_0x56a5('0x38'),'channel':_0x38b761[_0x56a5('0x10')][_0x2f8159][_0x56a5('0x39')]})[_0x56a5('0x3a')](function(_0x4c48a2){if(_0x4c48a2['message']===_0x56a5('0x3b')){setTimeout(function(){if(_0x38b761[_0x56a5('0x10')][_0x2f8159]){delete _0x38b761['channels'][_0x2f8159];logger[_0x56a5('0x3c')](_0x56a5('0x3d'),_0x2f8159,util[_0x56a5('0x3e')](_0x4c48a2,{'showHidden':![],'depth':null}));}if(_0x38b761['queueReports'][_0x2f8159]){delete _0x38b761[_0x56a5('0x3f')][_0x2f8159];logger[_0x56a5('0x3c')](_0x56a5('0x40'),_0x2f8159,util[_0x56a5('0x3e')](_0x4c48a2,{'showHidden':![],'depth':null}));}if(_0x38b761[_0x56a5('0x41')][_0x2f8159]){delete _0x38b761[_0x56a5('0x41')][_0x2f8159];logger['error'](_0x56a5('0x42'),_0x2f8159,util[_0x56a5('0x3e')](_0x4c48a2,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x56a5('0x26')]=function(){logger[_0x56a5('0x3c')](_0x56a5('0x43'));clearChannels(this[_0x56a5('0x10')]);this['clearQueueReport'](this[_0x56a5('0x3f')]);clearAgentBooked(this[_0x56a5('0xf')]);clearVoiceQueues(this[_0x56a5('0x12')]);clearCampaigns(this[_0x56a5('0x14')]);};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x44')]=function(_0x47a8fe){var _0x47b8e0=this;if(!_[_0x56a5('0x2f')](_0x47a8fe)){for(var _0x4c679f in _0x47a8fe){if(_0x47a8fe[_0x56a5('0x2e')](_0x4c679f)){_0x47b8e0[_0x56a5('0x45')](_0x47a8fe[_0x4c679f],_0x56a5('0x46'));delete _0x47a8fe[_0x4c679f];}}}};VoiceQueueReport[_0x56a5('0xc')]['emit']=function(_0x2e8fb7,_0x1c077f,_0x4a3659){io['to'](_0x2e8fb7)['emit'](_0x1c077f,_0x4a3659);};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x47')]=function(_0x5e5b10,_0x46de6b){logger[_0x56a5('0x48')]('[%s][voiceQueueReport]['+_0x46de6b+_0x56a5('0x49'),_0x5e5b10[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x5e5b10,{'showHidden':![],'depth':null}));this['emit'](util[_0x56a5('0x4b')](_0x56a5('0x4c'),_0x5e5b10['name']),_0x56a5('0x4d'),_0x5e5b10);io['emit'](_0x56a5('0x4e'),_0x5e5b10);};VoiceQueueReport['prototype'][_0x56a5('0x45')]=function(_0x17fcee,_0x4431f7){logger['debug'](_0x56a5('0x4f')+_0x4431f7+']\x20sending\x20voice_queue_channel:remove\x20event:',_0x17fcee[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x17fcee,{'showHidden':![],'depth':null}));this[_0x56a5('0x50')](util[_0x56a5('0x4b')](_0x56a5('0x4c'),_0x17fcee[_0x56a5('0x51')]),_0x56a5('0x52'),_0x17fcee);io[_0x56a5('0x50')]('voice_queue_presence:remove',_0x17fcee);};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x53')]=function(_0x59fe66,_0x2953f1){if(_0x59fe66[_0x56a5('0x54')]==='inbound'){var _0x527335={'id':_0x59fe66['id'],'name':_0x59fe66[_0x56a5('0x51')],'strategy':_0x59fe66[_0x56a5('0x55')],'answered':_0x59fe66[_0x56a5('0x56')],'available':_0x59fe66[_0x56a5('0x57')],'loggedIn':_0x59fe66[_0x56a5('0x58')],'pTalking':_0x59fe66[_0x56a5('0x32')],'sumBillable':_0x59fe66['sumBillable'],'sumDuration':_0x59fe66['sumDuration'],'sumHoldTime':_0x59fe66[_0x56a5('0x59')]||0x0,'talking':_0x59fe66[_0x56a5('0x31')],'total':_0x59fe66[_0x56a5('0x5a')],'type':_0x59fe66['type'],'unmanaged':_0x59fe66[_0x56a5('0x5b')],'abandoned':_0x59fe66['abandoned'],'waiting':_0x59fe66[_0x56a5('0x33')]};if(_0x59fe66[_0x56a5('0x5c')]){_0x527335[_0x56a5('0x5c')]={'id':_0x59fe66[_0x56a5('0x5c')]['id'],'name':_0x59fe66[_0x56a5('0x5c')][_0x56a5('0x51')],'active':_0x59fe66[_0x56a5('0x5c')][_0x56a5('0x5d')],'callerid':_0x59fe66[_0x56a5('0x5c')]['callerid']};}if(_0x59fe66[_0x56a5('0x5e')]){_0x527335[_0x56a5('0x5e')]={'id':_0x59fe66['Interval']['id'],'name':_0x59fe66[_0x56a5('0x5e')][_0x56a5('0x51')]};}var _0x29690d=md5(JSON['stringify'](_0x527335));if(_0x59fe66[_0x56a5('0x2')]!==_0x29690d){_0x59fe66[_0x56a5('0x2')]=_0x29690d;logger[_0x56a5('0x48')]('[voiceQueueReport]['+_0x2953f1+_0x56a5('0x5f'),util[_0x56a5('0x3e')](_0x527335,{'showHidden':![],'depth':null}));this[_0x56a5('0x50')](util[_0x56a5('0x4b')](_0x56a5('0x4c'),_0x527335[_0x56a5('0x51')]),_0x56a5('0x60'),_0x527335);}}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x61')]=function(_0x15836b){return _0x15836b!==null&&!_[_0x56a5('0x62')](_0x15836b);};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x2d')]=function(){var _0xff01fa=this;setInterval(function(){_0xff01fa[_0x56a5('0x63')]();ami[_0x56a5('0x37')]({'action':'queues'})['catch'](function(_0x457e59){logger[_0x56a5('0x3c')](_0x56a5('0x64'),util[_0x56a5('0x3e')](_0x457e59,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x56a5('0x2c')]=function(){var _0x2e8264=this;setInterval(function(){if(_0x2e8264[_0x56a5('0x13')]){return ami[_0x56a5('0x37')]({'action':_0x56a5('0x15')})[_0x56a5('0x65')](function(_0x425d20){_0x2e8264[_0x56a5('0x13')]=![];})[_0x56a5('0x3a')](function(_0x2b47d5){logger[_0x56a5('0x3c')](_0x56a5('0x66'),util[_0x56a5('0x3e')](_0x2b47d5,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x16')]=function(_0xb46e7f){try{if(this[_0x56a5('0x61')](_0xb46e7f)&&this[_0x56a5('0x61')](_0xb46e7f[_0x56a5('0x67')])){logger[_0x56a5('0x48')]('[voiceQueueReport][queuesummary]\x20event:',util[_0x56a5('0x3e')](_0xb46e7f,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]]){logger['info'](_0x56a5('0x68'),_0xb46e7f[_0x56a5('0x67')]);var _0x503d7d=_['countBy'](this[_0x56a5('0x10')],'queue')[_0xb46e7f[_0x56a5('0x67')]]||0x0;var _0x1a022c=_0x503d7d-_0xb46e7f[_0x56a5('0x69')];if(this[_0x56a5('0x12')][_0xb46e7f['queue']]['waiting']!==_[_0x56a5('0x6a')](_0xb46e7f[_0x56a5('0x69')])||this['voiceQueues'][_0xb46e7f['queue']][_0x56a5('0x58')]!==_['toNumber'](_0xb46e7f[_0x56a5('0x6b')])||this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]][_0x56a5('0x57')]!==_['toNumber'](_0xb46e7f['available'])||this[_0x56a5('0x12')][_0xb46e7f['queue']]['talking']!==_0x1a022c){this['voiceQueues'][_0xb46e7f['queue']][_0x56a5('0x33')]=_['toNumber'](_0xb46e7f[_0x56a5('0x69')]);this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]][_0x56a5('0x58')]=_[_0x56a5('0x6a')](_0xb46e7f[_0x56a5('0x6b')]);this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]]['available']=_[_0x56a5('0x6a')](_0xb46e7f[_0x56a5('0x57')]);this['voiceQueues'][_0xb46e7f[_0x56a5('0x67')]][_0x56a5('0x31')]=_0x1a022c>0x0?_0x1a022c:0x0;this['voiceQueues'][_0xb46e7f[_0x56a5('0x67')]]['talking']=this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]][_0x56a5('0x31')]>_[_0x56a5('0x6a')](_0xb46e7f[_0x56a5('0x6b')])?_['toNumber'](_0xb46e7f[_0x56a5('0x6b')]):this[_0x56a5('0x12')][_0xb46e7f['queue']][_0x56a5('0x31')];this[_0x56a5('0x53')](this['voiceQueues'][_0xb46e7f[_0x56a5('0x67')]],_0x56a5('0x15'));}logger[_0x56a5('0x48')](_0x56a5('0x6c'),util[_0x56a5('0x3e')](this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]],{'showHidden':![],'depth':null}));ami[_0x56a5('0x50')](_0x56a5('0x6d'),this[_0x56a5('0x12')][_0xb46e7f[_0x56a5('0x67')]]);}}}catch(_0x126c3f){logger[_0x56a5('0x3c')](_0x56a5('0x66'),util['inspect'](_0x126c3f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x18')]=function(_0x2b9239){logger[_0x56a5('0x48')](_0x56a5('0x6e'),util[_0x56a5('0x3e')](_0x2b9239,{'showHidden':![],'depth':null}));this[_0x56a5('0x13')]=!![];};VoiceQueueReport['prototype'][_0x56a5('0x6f')]=function(_0x3bd514){try{if(this[_0x56a5('0x61')](_0x3bd514)){logger[_0x56a5('0x48')](_0x56a5('0x70'),_0x3bd514[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x3bd514,{'showHidden':![],'depth':null}));if(_[_0x56a5('0x62')](this[_0x56a5('0x3f')][_0x3bd514['uniqueid']]))this[_0x56a5('0x3f')][_0x3bd514[_0x56a5('0x4a')]]=[];if(_[_0x56a5('0x62')](this['channels'][_0x3bd514[_0x56a5('0x4a')]]))this['channels'][_0x3bd514[_0x56a5('0x4a')]]={};var _0x4608ce=new QueueReport();_0x4608ce[_0x56a5('0x51')]=_0x3bd514[_0x56a5('0x67')];_0x4608ce[_0x56a5('0x54')]=this[_0x56a5('0x12')][_0x4608ce['name']]&&this[_0x56a5('0x12')][_0x4608ce['name']][_0x56a5('0x54')]?this[_0x56a5('0x12')][_0x4608ce[_0x56a5('0x51')]][_0x56a5('0x54')]||_0x56a5('0x71'):'inbound';_0x4608ce[_0x56a5('0x67')]=_0x3bd514['queue'];_0x4608ce[_0x56a5('0x72')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));_0x4608ce[_0x56a5('0x74')]=_0x3bd514[_0x56a5('0x74')];_0x4608ce[_0x56a5('0x75')]=_0x3bd514[_0x56a5('0x75')];_0x4608ce['uniqueid']=_0x3bd514[_0x56a5('0x4a')];_0x4608ce[_0x56a5('0x76')]=this[_0x56a5('0x10')][_0x3bd514['uniqueid']]['routealias'];logger[_0x56a5('0x77')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x4608ce[_0x56a5('0x51')],_0x4608ce['type']);_[_0x56a5('0x78')](_0x4608ce,_[_0x56a5('0x79')](_0x3bd514,_['keys'](_0x4608ce)));this[_0x56a5('0x3f')][_0x3bd514[_0x56a5('0x4a')]][_0x56a5('0x7a')](_0x4608ce);this['channels'][_0x3bd514[_0x56a5('0x4a')]]=_0x4608ce;this[_0x56a5('0x47')](_0x4608ce,_0x56a5('0x1a'));}}catch(_0x4536ff){logger[_0x56a5('0x3c')](_0x56a5('0x70'),_0x3bd514[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x4536ff,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x1c')]=function(_0x12d5c9){try{if(this[_0x56a5('0x61')](_0x12d5c9)){logger['debug'](_0x56a5('0x7b'),_0x12d5c9[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x12d5c9,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x12d5c9[_0x56a5('0x4a')]]){var _0x3e2d39=_['last'](this[_0x56a5('0x3f')][_0x12d5c9[_0x56a5('0x4a')]]);_0x3e2d39['queuecallercomplete']=![];_0x3e2d39['queuecallercompleteAt']=null;_0x3e2d39[_0x56a5('0x7c')]=_0x12d5c9[_0x56a5('0x7c')];_0x3e2d39[_0x56a5('0x7d')]=_0x12d5c9[_0x56a5('0x7d')];_0x3e2d39[_0x56a5('0x1b')]=!![];_0x3e2d39[_0x56a5('0x7e')]=moment()[_0x56a5('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x3e2d39[_0x56a5('0x7f')]='ABANDONED';_0x3e2d39[_0x56a5('0x80')]=null;logger[_0x56a5('0x77')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x3e2d39[_0x56a5('0x51')],_0x3e2d39[_0x56a5('0x54')]);this['channels'][_0x12d5c9[_0x56a5('0x4a')]]=_0x3e2d39;this[_0x56a5('0x45')](_0x3e2d39,'queuecallerabandon');}}}catch(_0x370eaf){logger[_0x56a5('0x3c')]('[%s][voiceQueueReport][queuecallerabandon]',_0x12d5c9[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x370eaf,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueCallerLeave']=function(_0x1e51fc){try{if(this['isNotNull'](_0x1e51fc)){logger[_0x56a5('0x48')](_0x56a5('0x81'),_0x1e51fc['uniqueid'],util[_0x56a5('0x3e')](_0x1e51fc,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x1e51fc['uniqueid']]){var _0x26de25=_['last'](this['queueReports'][_0x1e51fc[_0x56a5('0x4a')]]);_0x26de25[_0x56a5('0x82')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));_0x26de25['connectedlinenum']=_0x1e51fc['connectedlinenum'];_0x26de25['connectedlinename']=_0x1e51fc['connectedlinename'];logger[_0x56a5('0x77')](_0x56a5('0x83'),_0x26de25['name'],_0x26de25[_0x56a5('0x54')],_0x1e51fc['connectedlinenum'],_0x1e51fc[_0x56a5('0x84')]);this[_0x56a5('0x10')][_0x1e51fc[_0x56a5('0x4a')]]=_0x26de25;this['emitVoiceQueueChannelSave'](_0x26de25,_0x56a5('0x1d'));}}}catch(_0x286fec){logger['error'](_0x56a5('0x81'),_0x1e51fc[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x286fec,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentConnect']=function(_0x86be1c){try{if(this[_0x56a5('0x61')](_0x86be1c)){logger['debug']('[%s][voiceQueueReport][agentconnect]',_0x86be1c[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x86be1c,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x86be1c[_0x56a5('0x4a')]]){var _0x505271=_['last'](this[_0x56a5('0x3f')][_0x86be1c[_0x56a5('0x4a')]]);_0x505271[_0x56a5('0x85')]=!![];_0x505271['queuecallerexitreason']=_0x56a5('0x86');logger[_0x56a5('0x77')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x505271['name'],_0x505271[_0x56a5('0x54')]);}}}catch(_0x783771){logger['error'](_0x56a5('0x87'),_0x86be1c['uniqueid'],util[_0x56a5('0x3e')](_0x783771,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x20')]=function(_0x1d7df7){try{if(this['isNotNull'](_0x1d7df7)){logger[_0x56a5('0x48')](_0x56a5('0x88'),_0x1d7df7[_0x56a5('0x4a')],util['inspect'](_0x1d7df7,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x4a')]]){var _0x17db06=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x4a')]]);_0x17db06['queuecallerabandon']=![];_0x17db06[_0x56a5('0x7e')]=null;_0x17db06[_0x56a5('0x8a')]=!![];_0x17db06[_0x56a5('0x80')]=_0x1d7df7[_0x56a5('0x8b')];_0x17db06['holdtime']=_0x1d7df7[_0x56a5('0x7c')];_0x17db06[_0x56a5('0x85')]=!![];_0x17db06[_0x56a5('0x8c')]=![];_0x17db06['queuecallerexitAt']=null;if(!_0x17db06[_0x56a5('0x8d')]){if(_0x1d7df7[_0x56a5('0x8e')]==_0x56a5('0x8d')){_0x17db06['queuecallerexitreason']='COMPLETED';logger[_0x56a5('0x77')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x17db06['name'],_0x17db06[_0x56a5('0x54')]);}else{if(_[_0x56a5('0x8f')](_0x1d7df7[_0x56a5('0x39')][_0x56a5('0x90')](),_0x56a5('0x91'))){if(this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x92')]]){var _0x124748=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x1d7df7['linkedid']]);_0x124748[_0x56a5('0x85')]=![];_0x124748['queuecallerexit']=!![];_0x124748[_0x56a5('0x93')]=moment(_0x17db06[_0x56a5('0x72')])[_0x56a5('0x94')](_0x1d7df7[_0x56a5('0x7c')],'seconds')[_0x56a5('0x4b')](_0x56a5('0x73'));_0x124748[_0x56a5('0x7f')]=_0x56a5('0x95');_0x124748[_0x56a5('0x8d')]=!![];_0x124748['transfertype']='FORWARD';_0x124748['transferexten']=_0x1d7df7[_0x56a5('0x96')];_0x124748['transferuniqueid']=_0x1d7df7[_0x56a5('0x4a')];logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x124748[_0x56a5('0x51')],_0x124748[_0x56a5('0x54')]);var _0x20de28=this[_0x56a5('0x3f')][_0x1d7df7['linkedid']];this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x92')]]=this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x4a')]];this[_0x56a5('0x3f')][_0x1d7df7[_0x56a5('0x4a')]]=_0x20de28;}}else{_0x17db06[_0x56a5('0x7f')]=_0x56a5('0x97')+_0x1d7df7['reason'][_0x56a5('0x98')]();logger[_0x56a5('0x77')](_0x56a5('0x99'),_0x17db06['name'],_0x17db06[_0x56a5('0x54')],_0x17db06[_0x56a5('0x7f')]);}}}this[_0x56a5('0x10')][_0x1d7df7[_0x56a5('0x4a')]]=_0x17db06;this['emitVoiceQueueChannelRemove'](_0x17db06,_0x56a5('0x1f'));}}}catch(_0x52d7c3){logger['error']('[%s][voiceQueueReport][agentcomplete]',_0x1d7df7[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x52d7c3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')]['syncVarSet']=function(_0x2d6e66){try{if(this[_0x56a5('0x61')](_0x2d6e66)){logger[_0x56a5('0x48')](_0x56a5('0x9a'),_0x2d6e66[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x2d6e66,{'showHidden':![],'depth':null}));this[_0x56a5('0x9b')](_0x2d6e66[_0x56a5('0x4a')],_['keys'](_0x2d6e66['variable'])[0x0],_0x2d6e66[_0x56a5('0x9c')]);if(this['queueReports'][_0x2d6e66[_0x56a5('0x4a')]]){var _0xe43264=_['last'](this[_0x56a5('0x3f')][_0x2d6e66[_0x56a5('0x4a')]]);if(_0xe43264){if(this[_0x56a5('0x61')](_0x2d6e66[_0x56a5('0x9d')])&&this[_0x56a5('0x61')](_0x2d6e66[_0x56a5('0x9d')]['queuestatus'])){switch(_0x2d6e66[_0x56a5('0x9c')]){case'CONTINUE':_0xe43264[_0x56a5('0x8c')]=![];_0xe43264['queuecallerexitAt']=null;break;case'TIMEOUT':_0xe43264[_0x56a5('0x9e')]=_0x56a5('0x9f');_0xe43264[_0x56a5('0x8c')]=!![];_0xe43264[_0x56a5('0x93')]=moment()['format'](_0x56a5('0x73'));_0xe43264[_0x56a5('0x82')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));logger[_0x56a5('0x48')](_0x56a5('0xa0'),_0x2d6e66[_0x56a5('0x4a')],util['inspect'](_0xe43264,{'showHidden':![],'depth':null}));ami['emit'](_0x56a5('0xa1'),_0xe43264);break;default:_0xe43264['queuecallerexit']=!![];_0xe43264[_0x56a5('0x93')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));_0xe43264[_0x56a5('0x82')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));}_0xe43264[_0x56a5('0x1b')]=![];_0xe43264[_0x56a5('0x7e')]=null;_0xe43264[_0x56a5('0x7f')]=_0x2d6e66['value'];this[_0x56a5('0x10')][_0x2d6e66[_0x56a5('0x4a')]]=_0xe43264;this[_0x56a5('0x45')](_0xe43264,_0x56a5('0x22'));}else if(this[_0x56a5('0x61')](_0x2d6e66[_0x56a5('0x9d')])&&this['isNotNull'](_0x2d6e66[_0x56a5('0x9d')][_0x56a5('0xa2')])){if(!_0xe43264[_0x56a5('0x1b')]){_0xe43264[_0x56a5('0x8c')]=!![];_0xe43264[_0x56a5('0x93')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));_0xe43264[_0x56a5('0x7f')]=_0x56a5('0xa3');_0xe43264[_0x56a5('0x82')]=moment()[_0x56a5('0x4b')](_0x56a5('0x73'));this[_0x56a5('0x10')][_0x2d6e66[_0x56a5('0x4a')]]=_0xe43264;}}logger[_0x56a5('0x77')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x2d6e66[_0x56a5('0x4a')],_0xe43264[_0x56a5('0x51')],_0xe43264[_0x56a5('0x54')],_['keys'](_0x2d6e66[_0x56a5('0x9d')])[0x0],_0x2d6e66['value']);_0xe43264[_0x56a5('0x41')]=this['variables'][_0x2d6e66[_0x56a5('0x4a')]];}}}}catch(_0x23d8f0){logger[_0x56a5('0x3c')](_0x56a5('0x9a'),_0x2d6e66[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x23d8f0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x9b')]=function(_0x426af0,_0x10f2a8,_0x48fe94){var _0x3c0123=[_0x56a5('0xa4'),_0x56a5('0xa5'),_0x56a5('0xa6'),_0x56a5('0xa7'),_0x56a5('0xa8'),'rtpaudioqoslossbridged',_0x56a5('0xa9'),_0x56a5('0xaa'),_0x56a5('0xab'),_0x56a5('0xac'),_0x56a5('0xad'),'bridgepvtcallid',_0x56a5('0xae'),_0x56a5('0xaf'),_0x56a5('0xb0'),'memberlastcall','membername',_0x56a5('0xb1'),_0x56a5('0xb2')];if(!_[_0x56a5('0xb3')](_0x10f2a8)&&!_[_0x56a5('0xb4')](_0x3c0123,_0x10f2a8)){if(_[_0x56a5('0x62')](this[_0x56a5('0x41')][_0x426af0])){this[_0x56a5('0x41')][_0x426af0]={};}this[_0x56a5('0x41')][_0x426af0][_0x10f2a8]=_0x48fe94;}};VoiceQueueReport['prototype'][_0x56a5('0x25')]=function(_0x24b579){try{if(this['isNotNull'](_0x24b579)){logger[_0x56a5('0x48')](_0x56a5('0xb5'),_0x24b579[_0x56a5('0x4a')],util['inspect'](_0x24b579,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x24b579[_0x56a5('0x4a')]]){for(var _0x45e4a1=0x0,_0xfc06ec={};_0x45e4a1<this['queueReports'][_0x24b579[_0x56a5('0x4a')]][_0x56a5('0xb6')];_0x45e4a1+=0x1){_0xfc06ec=this[_0x56a5('0x3f')][_0x24b579[_0x56a5('0x4a')]][_0x45e4a1];if(this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]]){if(_0xfc06ec['queuecallerexit']&&_0xfc06ec[_0x56a5('0x8d')]!=!![]){this[_0x56a5('0x12')][_0xfc06ec['queue']][_0x56a5('0x5b')]+=0x1;}if(_0xfc06ec[_0x56a5('0x1b')]){this['voiceQueues'][_0xfc06ec[_0x56a5('0x67')]][_0x56a5('0xb7')]+=0x1;}this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]][_0x56a5('0x59')]+=moment(_0xfc06ec[_0x56a5('0x82')])['diff'](_0xfc06ec[_0x56a5('0x72')],_0x56a5('0xb8'))||0x0;if(_0x45e4a1===this[_0x56a5('0x3f')][_0x24b579[_0x56a5('0x4a')]][_0x56a5('0xb6')]-0x1){this['voiceQueues'][_0xfc06ec['queue']]['sumDuration']+=moment()[_0x56a5('0xb9')](0x0)[_0x56a5('0xba')](_0xfc06ec[_0x56a5('0x72')],_0x56a5('0xb8'));this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]][_0x56a5('0x5a')]+=0x1;if(_0xfc06ec[_0x56a5('0x85')]){this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]][_0x56a5('0x56')]+=0x1;this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]][_0x56a5('0xbb')]+=moment()[_0x56a5('0xb9')](0x0)[_0x56a5('0xba')](_0xfc06ec['queuecallerleaveAt'],'seconds');_0xfc06ec[_0x56a5('0xbc')]=moment()['format'](_0x56a5('0x73'));_0xfc06ec[_0x56a5('0x8c')]=![];_0xfc06ec[_0x56a5('0x93')]=null;}if(_0xfc06ec['queuecallerexit']&&_0xfc06ec[_0x56a5('0x8d')]!=!![]){_0xfc06ec[_0x56a5('0x9e')]=_0x56a5('0x5b');logger[_0x56a5('0x48')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x24b579['uniqueid'],util[_0x56a5('0x3e')](_0xfc06ec,{'showHidden':![],'depth':null}));ami[_0x56a5('0x50')]('custom:queuecallerunmanaged',_0xfc06ec);}if(_0xfc06ec[_0x56a5('0x1b')]){_0xfc06ec[_0x56a5('0x9e')]=_0x56a5('0xb7');logger[_0x56a5('0x48')](_0x56a5('0xbd'),_0x24b579[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0xfc06ec,{'showHidden':![],'depth':null}));ami[_0x56a5('0x50')](_0x56a5('0xbe'),_0xfc06ec);}}else{this[_0x56a5('0x12')][_0xfc06ec[_0x56a5('0x67')]]['sumDuration']+=this[_0x56a5('0x12')][_0xfc06ec['queue']][_0x56a5('0x59')];}logger[_0x56a5('0x77')](_0x56a5('0xbf'),_0x24b579['uniqueid'],_0xfc06ec[_0x56a5('0x51')],_0xfc06ec['type'],_0x24b579[_0x56a5('0xc0')]);this[_0x56a5('0x10')][_0x24b579[_0x56a5('0x4a')]]=_0xfc06ec;this[_0x56a5('0x45')](_0xfc06ec,_0x56a5('0x24'));this[_0x56a5('0x53')](this['voiceQueues'][_0xfc06ec[_0x56a5('0x67')]],'hangup');}}logger['debug'](_0x56a5('0xc1'),_0x24b579[_0x56a5('0x4a')],util[_0x56a5('0x3e')](this['queueReports'][_0x24b579[_0x56a5('0x4a')]],{'showHidden':![],'depth':null}));ami[_0x56a5('0x50')](_0x56a5('0xc2'),this[_0x56a5('0x3f')][_0x24b579[_0x56a5('0x4a')]]);delete this[_0x56a5('0x3f')][_0x24b579['uniqueid']];delete this[_0x56a5('0x10')][_0x24b579[_0x56a5('0x4a')]];}if(this['variables'][_0x24b579[_0x56a5('0x4a')]]){delete this['variables'][_0x24b579[_0x56a5('0x4a')]];}}}catch(_0x25a469){logger[_0x56a5('0x3c')](_0x56a5('0xb5'),_0x24b579[_0x56a5('0x4a')],util['inspect'](_0x25a469,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')]['syncAttendedTransfer']=function(_0x30def7){try{if(this[_0x56a5('0x61')](_0x30def7)){logger[_0x56a5('0x48')](_0x56a5('0xc3'),_0x30def7[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x30def7,{'showHidden':![],'depth':null}));var _0x16e830;if(this[_0x56a5('0x3f')][_0x30def7['transfereeuniqueid']]){_0x16e830=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x30def7['transfereeuniqueid']]);_0x16e830[_0x56a5('0xc4')]=_0x30def7[_0x56a5('0xc5')];_0x16e830[_0x56a5('0xc6')]=_0x30def7['secondtransfereruniqueid'];_0x16e830[_0x56a5('0x7f')]=_0x56a5('0xc7');_0x16e830[_0x56a5('0x8d')]=!![];_0x16e830[_0x56a5('0xc8')]=_0x56a5('0xc9');if(this['queueReports'][_0x30def7[_0x56a5('0xca')]]){var _0x4e6deb=this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xca')]];this['queueReports'][_0x30def7[_0x56a5('0xca')]]=this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcb')]];this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcb')]]=_0x4e6deb;var _0x34fcf=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcb')]]);_0x34fcf['switch']=!![];}logger[_0x56a5('0x77')](_0x56a5('0xcc'),_0x30def7[_0x56a5('0x4a')],_0x16e830['name'],_0x16e830[_0x56a5('0x54')],_0x16e830[_0x56a5('0xc4')],_0x16e830['transferuniqueid']);}else if(this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcd')]]){_0x16e830=_['last'](this['queueReports'][_0x30def7[_0x56a5('0xcd')]]);_0x16e830[_0x56a5('0xc4')]=_0x30def7[_0x56a5('0xce')];_0x16e830[_0x56a5('0xc6')]=_0x30def7[_0x56a5('0xcf')];_0x16e830[_0x56a5('0x7f')]=_0x56a5('0xc7');_0x16e830[_0x56a5('0x8d')]=!![];_0x16e830[_0x56a5('0xc8')]=_0x56a5('0xc9');if(this['queueReports'][_0x30def7[_0x56a5('0xcf')]]){var _0x4e6deb=this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcf')]];this[_0x56a5('0x3f')][_0x30def7['origtransfereruniqueid']]=this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcd')]];this['queueReports'][_0x30def7[_0x56a5('0xcd')]]=_0x4e6deb;var _0x34fcf=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x30def7[_0x56a5('0xcd')]]);_0x34fcf['switch']=!![];}logger[_0x56a5('0x77')](_0x56a5('0xcc'),_0x30def7[_0x56a5('0x4a')],_0x16e830[_0x56a5('0x51')],_0x16e830[_0x56a5('0x54')],_0x16e830['transferexten'],_0x16e830[_0x56a5('0xc6')]);}}}catch(_0x329d9d){logger[_0x56a5('0x3c')](_0x56a5('0xc3'),_0x30def7[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x329d9d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')][_0x56a5('0x2b')]=function(_0x1fd963){try{if(this[_0x56a5('0x61')](_0x1fd963)){logger[_0x56a5('0x48')](_0x56a5('0xd0'),_0x1fd963[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x1fd963,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x1fd963['transfereeuniqueid']]){var _0x51501b=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x1fd963[_0x56a5('0xcb')]]);_0x51501b[_0x56a5('0x7f')]='BLINDTRANSFER';_0x51501b[_0x56a5('0x8d')]=!![];_0x51501b[_0x56a5('0xc8')]='BLIND';_0x51501b[_0x56a5('0xc4')]=_0x1fd963[_0x56a5('0xd1')];_0x51501b[_0x56a5('0xc6')]=_0x1fd963['transfereeuniqueid'];logger[_0x56a5('0x77')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x1fd963[_0x56a5('0x4a')],_0x51501b[_0x56a5('0x51')],_0x51501b[_0x56a5('0x54')],_0x51501b[_0x56a5('0xc4')],_0x51501b[_0x56a5('0xc6')]);this['syncHangup']({'event':_0x56a5('0xd2'),'uniqueid':_0x1fd963['transfereeuniqueid'],'context':_0x1fd963[_0x56a5('0xd3')],'channel':_0x1fd963[_0x56a5('0xd4')]});}}}catch(_0x875910){logger[_0x56a5('0x3c')](_0x56a5('0xd0'),_0x1fd963[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x875910,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStart']=function(_0x3a97ca){try{if(this[_0x56a5('0x61')](_0x3a97ca)){logger[_0x56a5('0x48')](_0x56a5('0xd5'),_0x3a97ca[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x3a97ca,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x3a97ca[_0x56a5('0x4a')]]){var _0x13f518=_[_0x56a5('0x89')](this[_0x56a5('0x3f')][_0x3a97ca[_0x56a5('0x4a')]]);if(!_[_0x56a5('0xb3')](_0x13f518[_0x56a5('0x82')])){_0x13f518['mohstarttime']=moment()['format'](_0x56a5('0x73'));logger['info'](_0x56a5('0xd6'),_0x3a97ca[_0x56a5('0x4a')],_0x13f518[_0x56a5('0xd7')]);}}}}catch(_0x391d91){logger[_0x56a5('0x3c')](_0x56a5('0xd5'),_0x3a97ca[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x391d91,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')]['syncMusicOnHoldStop']=function(_0x2a6897){try{if(this[_0x56a5('0x61')](_0x2a6897)){logger['debug']('[%s][voiceQueueReport][musiconholdstop]',_0x2a6897['uniqueid'],util[_0x56a5('0x3e')](_0x2a6897,{'showHidden':![],'depth':null}));if(this[_0x56a5('0x3f')][_0x2a6897[_0x56a5('0x4a')]]){var _0x14a581=_['last'](this[_0x56a5('0x3f')][_0x2a6897[_0x56a5('0x4a')]]);if(!_[_0x56a5('0xb3')](_0x14a581[_0x56a5('0xd7')])){_0x14a581['mohtime']+=moment()[_0x56a5('0xb9')](0x0)[_0x56a5('0xba')](_0x14a581['mohstarttime'],_0x56a5('0xb8'));logger[_0x56a5('0x77')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x2a6897['uniqueid'],_0x14a581[_0x56a5('0xd8')]);delete _0x14a581[_0x56a5('0xd7')];}}}}catch(_0x5ece14){logger['error']('[%s][voiceQueueReport][musiconholdstop]',_0x2a6897[_0x56a5('0x4a')],util['inspect'](_0x5ece14,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x56a5('0xc')]['syncNewExten']=function(_0x5958e8){try{if(this[_0x56a5('0x61')](_0x5958e8)){logger[_0x56a5('0x48')](_0x56a5('0xd9'),_0x5958e8[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x5958e8,{'showHidden':![],'depth':null}));if(_0x5958e8['application'][_0x56a5('0x90')]()==='set'){_0x5958e8[_0x56a5('0xda')]=_0x5958e8[_0x56a5('0xdb')]&&_0x5958e8['appdata'][_0x56a5('0x8f')]('CDR(routeAlias)')?_0x5958e8[_0x56a5('0xdb')]:(_0x5958e8['appdata']||_0x5958e8[_0x56a5('0xda')])[_0x56a5('0x90')]();if(_[_0x56a5('0x8f')](_0x5958e8['applicationdata'][_0x56a5('0x90')](),_0x56a5('0xdc'))){logger[_0x56a5('0x77')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x5958e8[_0x56a5('0x4a')],_0x5958e8[_0x56a5('0xdd')],_0x5958e8[_0x56a5('0xda')]);if(_[_0x56a5('0x62')](this[_0x56a5('0x10')][_0x5958e8[_0x56a5('0x4a')]]))this[_0x56a5('0x10')][_0x5958e8['uniqueid']]={};var _0x254c61=_0x5958e8[_0x56a5('0xda')]['split']('=');var _0x2f3e7e=_0x254c61[0x0][_0x56a5('0x90')]()[_0x56a5('0xde')](/cdr\((.*)\)/);if(_0x2f3e7e)this[_0x56a5('0x10')][_0x5958e8['uniqueid']][_0x2f3e7e[0x1]]=_0x254c61[0x1];}}}}catch(_0x2baa41){logger['error']('[%s][voiceQueueReport][newexten]',_0x5958e8[_0x56a5('0x4a')],util[_0x56a5('0x3e')](_0x2baa41,{'showHidden':![],'depth':null}));}};module[_0x56a5('0xdf')]=VoiceQueueReport;
\ No newline at end of file
index 7aacb70..95f4d8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf9c=['../client','createHistory','queue','CreateReportAgentPreview'];(function(_0x4c4042,_0x1ea485){var _0xbd10dc=function(_0x164b20){while(--_0x164b20){_0x4c4042['push'](_0x4c4042['shift']());}};_0xbd10dc(++_0x1ea485);}(_0xbf9c,0xdc));var _0xcbf9=function(_0x3c42ce,_0x40710f){_0x3c42ce=_0x3c42ce-0x0;var _0x83454b=_0xbf9c[_0x3c42ce];return _0x83454b;};'use strict';var client=require(_0xcbf9('0x0'));exports[_0xcbf9('0x1')]=function(_0x2c0bc1){return function(){_0x2c0bc1['campaign']=_0x2c0bc1[_0xcbf9('0x2')];return client['Request']('CreateReportAgentPreview',{'body':_0x2c0bc1,'log':_0xcbf9('0x3')});};};
\ No newline at end of file
+var _0xa37b=['CreateReportAgentPreview','campaign','queue','Request'];(function(_0x40951a,_0x2cbe60){var _0xdb2028=function(_0x134fa6){while(--_0x134fa6){_0x40951a['push'](_0x40951a['shift']());}};_0xdb2028(++_0x2cbe60);}(_0xa37b,0x65));var _0xba37=function(_0x1f99a0,_0x42fab3){_0x1f99a0=_0x1f99a0-0x0;var _0xdcb9d4=_0xa37b[_0x1f99a0];return _0xdcb9d4;};'use strict';var client=require('../client');exports['createHistory']=function(_0x398f13){return function(){_0x398f13[_0xba37('0x0')]=_0x398f13[_0xba37('0x1')];return client[_0xba37('0x2')](_0xba37('0x3'),{'body':_0x398f13,'log':_0xba37('0x3')});};};
\ No newline at end of file
index 35d4117..382b5fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb16f=['Request','CreateAttachment','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb16f,0x1c4));var _0xfb16=function(_0x48b810,_0x173a5e){_0x48b810=_0x48b810-0x0;var _0x23c17d=_0xb16f[_0x48b810];return _0x23c17d;};'use strict';var client=require('../client');exports[_0xfb16('0x0')]=function(_0x38ef78){return client[_0xfb16('0x1')]('CreateAttachment',{'body':_0x38ef78,'log':_0xfb16('0x2')});};
\ No newline at end of file
+var _0xfb23=['Request','CreateAttachment','../client','create'];(function(_0x1c7273,_0x42ab86){var _0x30945a=function(_0x3d100e){while(--_0x3d100e){_0x1c7273['push'](_0x1c7273['shift']());}};_0x30945a(++_0x42ab86);}(_0xfb23,0x1f2));var _0x3fb2=function(_0x10e1b9,_0x283511){_0x10e1b9=_0x10e1b9-0x0;var _0x4e1367=_0xfb23[_0x10e1b9];return _0x4e1367;};'use strict';var client=require(_0x3fb2('0x0'));exports[_0x3fb2('0x1')]=function(_0x40577f){return client[_0x3fb2('0x2')](_0x3fb2('0x3'),{'body':_0x40577f,'log':'CreateAttachment'});};
\ No newline at end of file
index 77a5d08..5359ec0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['Trunk','active','TrunkBackup','callerid','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit'];(function(_0x284609,_0x386b54){var _0x55116b=function(_0x3cdc4e){while(--_0x3cdc4e){_0x284609['push'](_0x284609['shift']());}};_0x55116b(++_0x386b54);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xc4aa[_0x1caf6a];return _0x1bf493;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),_0xac4a('0x5'),'active','limitCalls','dialOriginateCallerIdName',_0xac4a('0x6'),_0xac4a('0x7'),_0xac4a('0x8'),_0xac4a('0x9'),_0xac4a('0xa'),_0xac4a('0xb'),_0xac4a('0xc'),_0xac4a('0xd'),'dialGlobalMaxRetry','dialNoSuchNumberMaxRetry',_0xac4a('0xe'),_0xac4a('0xf'),_0xac4a('0x10'),'dialAbandonedMaxRetry',_0xac4a('0x11'),_0xac4a('0x12'),_0xac4a('0x13'),'dialAgentRejectMaxRetry',_0xac4a('0x14'),'dialTimezone',_0xac4a('0x15'),'dialAMDActive',_0xac4a('0x16'),_0xac4a('0x17'),_0xac4a('0x18'),'dialAMDTotalAnalysisTime',_0xac4a('0x19'),_0xac4a('0x1a'),_0xac4a('0x1b'),_0xac4a('0x1c'),_0xac4a('0x1d'),_0xac4a('0x1e'),_0xac4a('0x1f'),_0xac4a('0x20'),_0xac4a('0x21')],'include':[{'model':_0xac4a('0x22'),'as':_0xac4a('0x22'),'attributes':['id',_0xac4a('0x4'),'callerid',_0xac4a('0x23')]},{'model':_0xac4a('0x22'),'as':_0xac4a('0x24'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x25'),_0xac4a('0x23')]},{'model':_0xac4a('0x26'),'as':_0xac4a('0x26'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0xac4a('0x27'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x28')]}]},{'model':'SquareProject','as':_0xac4a('0x29'),'attributes':['id',_0xac4a('0x4')]}]},'log':_0xac4a('0x2a')});};};
\ 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(_0x24b8b6,_0x4a0a8c){var _0x434ecf=function(_0x56218){while(--_0x56218){_0x24b8b6['push'](_0x24b8b6['shift']());}};_0x434ecf(++_0x4a0a8c);}(_0xadb5,0xad));var _0x5adb=function(_0x48c538,_0x4095db){_0x48c538=_0x48c538-0x0;var _0x1e1307=_0xadb5[_0x48c538];return _0x1e1307;};'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 ef07af2..df65098 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5147=['GetCmContact','../client','Request','CreateCmContact','getContacts'];(function(_0x3f8a03,_0x319b9c){var _0x147fb2=function(_0x523c1c){while(--_0x523c1c){_0x3f8a03['push'](_0x3f8a03['shift']());}};_0x147fb2(++_0x319b9c);}(_0x5147,0x1f0));var _0x7514=function(_0xc629fd,_0x331324){_0xc629fd=_0xc629fd-0x0;var _0x24d24f=_0x5147[_0xc629fd];return _0x24d24f;};'use strict';var client=require(_0x7514('0x0'));exports['createContact']=function(_0x24fbde){return function(){return client[_0x7514('0x1')]('CreateCmContact',{'body':_0x24fbde,'log':_0x7514('0x2')});};};exports[_0x7514('0x3')]=function(_0x176148){return function(){return client['Request'](_0x7514('0x4'),{'options':_0x176148,'log':_0x7514('0x4')});};};
\ No newline at end of file
+var _0xadd4=['Request','GetCmContact','createContact','CreateCmContact','getContacts'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xadd4,0x1ec));var _0x4add=function(_0xb6a6bf,_0x184dfd){_0xb6a6bf=_0xb6a6bf-0x0;var _0x4a36b5=_0xadd4[_0xb6a6bf];return _0x4a36b5;};'use strict';var client=require('../client');exports[_0x4add('0x0')]=function(_0x31e092){return function(){return client['Request'](_0x4add('0x1'),{'body':_0x31e092,'log':_0x4add('0x1')});};};exports[_0x4add('0x2')]=function(_0x33e913){return function(){return client[_0x4add('0x3')]('GetCmContact',{'options':_0x33e913,'log':_0x4add('0x4')});};};
\ No newline at end of file
index 93351bb..e08ddae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1dc=['DESC','scheduledat','getContactDialerIvr','ASC','queue','MoveContactManagedDialer','CampaignId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','VoiceQueue','Queue','name','unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','../client','moment','lodash','getContacts','Request','GetCmHopper','CmContact','Contact','getCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','UpdateCmHopper','rescheduleContact','ListId','VoiceQueueId','destroyContact','getContactDialer','GetContactDialer','priority'];(function(_0x10b757,_0x3cf7ca){var _0x5fffd2=function(_0xd83dbc){while(--_0xd83dbc){_0x10b757['push'](_0x10b757['shift']());}};_0x5fffd2(++_0x3cf7ca);}(_0xe1dc,0x65));var _0xce1d=function(_0x1734b7,_0x559ec4){_0x1734b7=_0x1734b7-0x0;var _0x344894=_0xe1dc[_0x1734b7];return _0x344894;};'use strict';var client=require(_0xce1d('0x0'));var moment=require(_0xce1d('0x1'));var _=require(_0xce1d('0x2'));exports[_0xce1d('0x3')]=function(_0x37e998,_0x2a814d){return function(){return client[_0xce1d('0x4')](_0xce1d('0x5'),{'options':{'where':{'VoiceQueueId':_0x37e998},'include':[{'model':_0xce1d('0x6'),'as':_0xce1d('0x7')}],'limit':_0x2a814d,'raw':![]},'log':_0xce1d('0x8')});};};exports['updateContacts']=function(_0x3c54a1,_0x53841b,_0x3ab7df){return function(){return client[_0xce1d('0x4')]('UpdateCmHopper',{'body':_0x3c54a1,'options':{'where':{'VoiceQueueId':_0x53841b,'scheduledat':{'$lte':moment()[_0xce1d('0x9')](_0xce1d('0xa'))}},'limit':_0x3ab7df},'log':_0xce1d('0xb')});};};exports[_0xce1d('0xc')]=function(_0x3ec7e5){return function(){return client['Request'](_0xce1d('0xb'),{'body':_0x3ec7e5,'options':{'where':{'ContactId':_0x3ec7e5['ContactId'],'ListId':_0x3ec7e5[_0xce1d('0xd')],'VoiceQueueId':_0x3ec7e5[_0xce1d('0xe')],'CampaignId':_0x3ec7e5['CampaignId']}},'log':_0xce1d('0xc')});};};exports[_0xce1d('0xf')]=function(_0x292955,_0x1cce4a,_0x1fd08e){return function(){return client['Request']('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x292955,'ListId':_0x1cce4a,'ContactId':_0x1fd08e}},'log':'DestroyCmHopper'});};};exports[_0xce1d('0x10')]=function(_0x3e720b,_0x41f9c9,_0x4f6058,_0x552081){return function(){return client['Request'](_0xce1d('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3e720b,'active':![],'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x41f9c9}}]},'order':[[_0xce1d('0x12'),_0xce1d('0x13')],[_0xce1d('0x14'),_0x552081],['id','ASC']],'raw':!![],'limit':_0x4f6058},'log':_0xce1d('0x11')});};};exports[_0xce1d('0x15')]=function(_0x436a4a,_0x116622,_0x23a14f){return function(){return client[_0xce1d('0x4')](_0xce1d('0x11'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x436a4a,'active':![],'scheduledat':{'$lte':moment()[_0xce1d('0x9')](_0xce1d('0xa'))}},'include':[{'model':_0xce1d('0x6'),'as':_0xce1d('0x7')}],'order':[['priority',_0xce1d('0x13')],['scheduledat',_0x23a14f],['id',_0xce1d('0x16')]],'raw':!![],'limit':_0x116622},'log':'GetContactDialerIvr'});};};exports['moveContactManagedDialer']=function(_0xe3c9ce,_0x38e9a0){return function(){_0xe3c9ce['campaign']=_0xe3c9ce[_0xce1d('0x17')];return client[_0xce1d('0x4')](_0xce1d('0x18'),{'body':_0xe3c9ce,'options':{'where':{'ContactId':_0xe3c9ce['ContactId'],'ListId':_0xe3c9ce[_0xce1d('0xd')],'VoiceQueueId':_0xe3c9ce[_0xce1d('0xe')],'CampaignId':_0xe3c9ce[_0xce1d('0x19')],'active':_0x38e9a0?undefined:!![]}},'log':_0xce1d('0x18')});};};exports[_0xce1d('0x1a')]=function(_0x39ea28){return function(){return client['Request'](_0xce1d('0x1b'),{'options':{'where':{'VoiceQueueId':_0x39ea28['id']?_0x39ea28['id']||null:null}},'log':_0xce1d('0x1a')});};};exports[_0xce1d('0x1c')]=function(_0x334c79){return function(){return client[_0xce1d('0x4')](_0xce1d('0x1d'),{'options':{'where':{'id':_0x334c79},'include':[{'model':_0xce1d('0x6'),'as':_0xce1d('0x7')},{'model':_0xce1d('0x1e'),'as':_0xce1d('0x1f'),'attributes':['id','name']},{'model':_0xce1d('0x20'),'as':_0xce1d('0x21'),'attributes':['id',_0xce1d('0x22')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0xce1d('0x23')]=function(_0x33afbf,_0x2a0cb4,_0x249104){return function(){return client[_0xce1d('0x4')]('UpdateCmHopper',{'body':_0x33afbf,'options':{'where':{'id':_0x2a0cb4},'limit':_0x249104},'log':'UpdateCmHopper'});};};exports[_0xce1d('0x24')]=function(_0xc7d77e,_0x21ebf1){return function(){return client['Request'](_0xce1d('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xc7d77e,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xce1d('0x9')](_0xce1d('0xa'))},'UserId':{'$in':_0x21ebf1}},'order':[[_0xce1d('0x12'),'DESC'],[_0xce1d('0x14'),'DESC'],['id','ASC']],'include':[{'model':_0xce1d('0x6'),'as':_0xce1d('0x7')},{'model':_0xce1d('0x1e'),'as':_0xce1d('0x1f'),'attributes':['id',_0xce1d('0x22'),_0xce1d('0x26')]}],'group':_0xce1d('0x27'),'raw':!![]},'log':_0xce1d('0x11')});};};
\ No newline at end of file
+var _0xd6d0=['ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','DESC','ASC','getContactDialerIvr','scheduledat','GetContactDialerIvr','campaign','queue','MoveContactManagedDialer','countReScheduled','getContactPreview','CmContact','User','Agent','name','VoiceQueue','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','resetActiveCalls','../client','moment','lodash','getContacts','Request','GetCmHopper','Contact','getCmHopper','updateContacts','UpdateCmHopper','format','rescheduleContact','ContactId'];(function(_0x1dd151,_0x4c0f08){var _0xb798b1=function(_0x37a378){while(--_0x37a378){_0x1dd151['push'](_0x1dd151['shift']());}};_0xb798b1(++_0x4c0f08);}(_0xd6d0,0x1c1));var _0x0d6d=function(_0xe73134,_0x508e09){_0xe73134=_0xe73134-0x0;var _0x303f46=_0xd6d0[_0xe73134];return _0x303f46;};'use strict';var client=require(_0x0d6d('0x0'));var moment=require(_0x0d6d('0x1'));var _=require(_0x0d6d('0x2'));exports[_0x0d6d('0x3')]=function(_0x26a13a,_0x31f1f8){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x5'),{'options':{'where':{'VoiceQueueId':_0x26a13a},'include':[{'model':'CmContact','as':_0x0d6d('0x6')}],'limit':_0x31f1f8,'raw':![]},'log':_0x0d6d('0x7')});};};exports[_0x0d6d('0x8')]=function(_0xc08c6,_0xe8126f,_0x47b0ad){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x9'),{'body':_0xc08c6,'options':{'where':{'VoiceQueueId':_0xe8126f,'scheduledat':{'$lte':moment()[_0x0d6d('0xa')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x47b0ad},'log':_0x0d6d('0x9')});};};exports[_0x0d6d('0xb')]=function(_0x128ad7){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x9'),{'body':_0x128ad7,'options':{'where':{'ContactId':_0x128ad7[_0x0d6d('0xc')],'ListId':_0x128ad7[_0x0d6d('0xd')],'VoiceQueueId':_0x128ad7[_0x0d6d('0xe')],'CampaignId':_0x128ad7[_0x0d6d('0xf')]}},'log':'rescheduleContact'});};};exports[_0x0d6d('0x10')]=function(_0x4a4534,_0x2ce5bb,_0x283a28){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x11'),{'options':{'where':{'VoiceQueueId':_0x4a4534,'ListId':_0x2ce5bb,'ContactId':_0x283a28}},'log':_0x0d6d('0x11')});};};exports['getContactDialer']=function(_0x27b63a,_0x47f593,_0x799c2b,_0x3f88d3){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x12'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x27b63a,'active':![],'scheduledat':{'$lte':moment()[_0x0d6d('0xa')](_0x0d6d('0x13'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x47f593}}]},'order':[['priority',_0x0d6d('0x14')],['scheduledat',_0x3f88d3],['id',_0x0d6d('0x15')]],'raw':!![],'limit':_0x799c2b},'log':'GetContactDialer'});};};exports[_0x0d6d('0x16')]=function(_0x5be8f3,_0xc43a8a,_0x960fe4){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x12'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5be8f3,'active':![],'scheduledat':{'$lte':moment()[_0x0d6d('0xa')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':'CmContact','as':_0x0d6d('0x6')}],'order':[['priority',_0x0d6d('0x14')],[_0x0d6d('0x17'),_0x960fe4],['id',_0x0d6d('0x15')]],'raw':!![],'limit':_0xc43a8a},'log':_0x0d6d('0x18')});};};exports['moveContactManagedDialer']=function(_0x434975,_0x581100){return function(){_0x434975[_0x0d6d('0x19')]=_0x434975[_0x0d6d('0x1a')];return client[_0x0d6d('0x4')](_0x0d6d('0x1b'),{'body':_0x434975,'options':{'where':{'ContactId':_0x434975[_0x0d6d('0xc')],'ListId':_0x434975['ListId'],'VoiceQueueId':_0x434975[_0x0d6d('0xe')],'CampaignId':_0x434975[_0x0d6d('0xf')],'active':_0x581100?undefined:!![]}},'log':_0x0d6d('0x1b')});};};exports[_0x0d6d('0x1c')]=function(_0x5c253f){return function(){return client[_0x0d6d('0x4')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x5c253f['id']?_0x5c253f['id']||null:null}},'log':_0x0d6d('0x1c')});};};exports[_0x0d6d('0x1d')]=function(_0x59810e){return function(){return client['Request']('GetCmHopperPreview',{'options':{'where':{'id':_0x59810e},'include':[{'model':_0x0d6d('0x1e'),'as':_0x0d6d('0x6')},{'model':_0x0d6d('0x1f'),'as':_0x0d6d('0x20'),'attributes':['id',_0x0d6d('0x21')]},{'model':_0x0d6d('0x22'),'as':_0x0d6d('0x23'),'attributes':['id',_0x0d6d('0x21')]}],'raw':!![]},'log':_0x0d6d('0x7')});};};exports[_0x0d6d('0x24')]=function(_0x26610c,_0x38dd26,_0x3d74ce){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x9'),{'body':_0x26610c,'options':{'where':{'id':_0x38dd26},'limit':_0x3d74ce},'log':_0x0d6d('0x9')});};};exports[_0x0d6d('0x25')]=function(_0xc00188,_0x4a0f61){return function(){return client[_0x0d6d('0x4')](_0x0d6d('0x26'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xc00188,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x0d6d('0xa')](_0x0d6d('0x13'))},'UserId':{'$in':_0x4a0f61}},'order':[['priority',_0x0d6d('0x14')],['scheduledat',_0x0d6d('0x14')],['id',_0x0d6d('0x15')]],'include':[{'model':_0x0d6d('0x1e'),'as':_0x0d6d('0x6')},{'model':_0x0d6d('0x1f'),'as':_0x0d6d('0x20'),'attributes':['id',_0x0d6d('0x21'),_0x0d6d('0x27')]}],'group':_0x0d6d('0x28'),'raw':!![]},'log':_0x0d6d('0x12')});};};exports[_0x0d6d('0x29')]=function(_0x13ca72){return function(){return client[_0x0d6d('0x4')]('ResetActiveCalls',{'body':_0x13ca72,'options':{},'log':'ResetActiveCalls'});};};
\ No newline at end of file
index a76c7af..c47b3c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5fa=['phone','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr','checkIsBlackList','Request','GetCmHopperBlack','Contact'];(function(_0x19a5fa,_0x2b2004){var _0x2c158d=function(_0x1fc843){while(--_0x1fc843){_0x19a5fa['push'](_0x19a5fa['shift']());}};_0x2c158d(++_0x2b2004);}(_0xa5fa,0xc4));var _0xaa5f=function(_0x286819,_0x84199){_0x286819=_0x286819-0x0;var _0x29a0fe=_0xa5fa[_0x286819];return _0x29a0fe;};'use strict';var client=require('../client');exports[_0xaa5f('0x0')]=function(_0x343d5b){return function(){return client[_0xaa5f('0x1')](_0xaa5f('0x2'),{'options':{'where':{'VoiceQueueId':_0x343d5b['VoiceQueueId'],'phone':_0x343d5b[_0xaa5f('0x3')][_0xaa5f('0x4')]},'raw':![]},'log':'GetCmHopperBlack'});};};exports[_0xaa5f('0x5')]=function(_0x42450a){return function(){return client[_0xaa5f('0x1')](_0xaa5f('0x2'),{'options':{'where':{'CampaignId':_0x42450a[_0xaa5f('0x6')],'phone':_0x42450a[_0xaa5f('0x3')][_0xaa5f('0x4')]},'raw':![]},'log':_0xaa5f('0x7')});};};
\ No newline at end of file
+var _0x4cf8=['Contact','phone','checkIsBlackListIvr','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId'];(function(_0x56c258,_0x1754c2){var _0x2c1e72=function(_0x320d28){while(--_0x320d28){_0x56c258['push'](_0x56c258['shift']());}};_0x2c1e72(++_0x1754c2);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x22093a,_0xa7acf1){_0x22093a=_0x22093a-0x0;var _0x2f4989=_0x4cf8[_0x22093a];return _0x2f4989;};'use strict';var client=require(_0x84cf('0x0'));exports[_0x84cf('0x1')]=function(_0x287eb2){return function(){return client[_0x84cf('0x2')](_0x84cf('0x3'),{'options':{'where':{'VoiceQueueId':_0x287eb2[_0x84cf('0x4')],'phone':_0x287eb2[_0x84cf('0x5')][_0x84cf('0x6')]},'raw':![]},'log':_0x84cf('0x3')});};};exports[_0x84cf('0x7')]=function(_0x5844d7){return function(){return client[_0x84cf('0x2')]('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x5844d7['CampaignId'],'phone':_0x5844d7[_0x84cf('0x5')]['phone']},'raw':![]},'log':_0x84cf('0x8')});};};
\ No newline at end of file
index c34b34d..d71b362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9164=['../client','createContact','campaign','queue'];(function(_0x1352bb,_0x282ff5){var _0x593e29=function(_0x296c10){while(--_0x296c10){_0x1352bb['push'](_0x1352bb['shift']());}};_0x593e29(++_0x282ff5);}(_0x9164,0x1d8));var _0x4916=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9164[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0x4916('0x0'));exports[_0x4916('0x1')]=function(_0xfd3b9a){return function(){_0xfd3b9a[_0x4916('0x2')]=_0xfd3b9a[_0x4916('0x3')];return client['Request']('CreateCmHopperFinal',{'body':_0xfd3b9a,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0x5887=['Request','CreateCmHopperFinal','../client','campaign','queue'];(function(_0xb935df,_0x5ad1ce){var _0x351e84=function(_0x562796){while(--_0x562796){_0xb935df['push'](_0xb935df['shift']());}};_0x351e84(++_0x5ad1ce);}(_0x5887,0xf2));var _0x7588=function(_0x55969b,_0x1ebe62){_0x55969b=_0x55969b-0x0;var _0x3d7fc1=_0x5887[_0x55969b];return _0x3d7fc1;};'use strict';var client=require(_0x7588('0x0'));exports['createContact']=function(_0x207f58){return function(){_0x207f58[_0x7588('0x1')]=_0x207f58[_0x7588('0x2')];return client[_0x7588('0x3')](_0x7588('0x4'),{'body':_0x207f58,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
index e386738..fbd3fd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00eb=['minutes','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','GetVoiceQueueHopperHistory','startOf','endOf','format','getCampaignHopperHistory','GetCampaignHopperHistory','day','ivr','../client','moment','createHistory','queue','CreateCmHopperHistory','Request','AvgHandleTime','subtract'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x00eb,0x1ad));var _0xb00e=function(_0x83fac4,_0x170207){_0x83fac4=_0x83fac4-0x0;var _0x20c72e=_0x00eb[_0x83fac4];return _0x20c72e;};'use strict';var client=require(_0xb00e('0x0'));var moment=require(_0xb00e('0x1'));exports[_0xb00e('0x2')]=function(_0x33546b){return function(){_0x33546b['campaign']=_0x33546b[_0xb00e('0x3')];return client['Request'](_0xb00e('0x4'),{'body':_0x33546b,'log':'CreateCmHopperHistory'});};};exports['avgHandleTime']=function(_0x16f19a){return function(){return client[_0xb00e('0x5')](_0xb00e('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0xb00e('0x7')](_0x16f19a,_0xb00e('0x8'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()['format'](_0xb00e('0x9'))]}},'raw':![]},'log':_0xb00e('0xa')});};};exports['getVoiceQueueHopperHistory']=function(_0x232238){return function(){return client[_0xb00e('0x5')](_0xb00e('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xb00e('0xc')]('day')['format'](_0xb00e('0x9')),moment()[_0xb00e('0xd')]('day')[_0xb00e('0xe')](_0xb00e('0x9'))]},'campaigntype':'queue'},'raw':![]},'log':_0xb00e('0xb')});};};exports[_0xb00e('0xf')]=function(_0x4e9e01){return function(){return client[_0xb00e('0x5')](_0xb00e('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xb00e('0xc')](_0xb00e('0x11'))[_0xb00e('0xe')](_0xb00e('0x9')),moment()['endOf']('day')[_0xb00e('0xe')](_0xb00e('0x9'))]},'campaigntype':_0xb00e('0x12')},'raw':![]},'log':_0xb00e('0x10')});};};
\ No newline at end of file
+var _0xaff2=['YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','queue','GetCampaignHopperHistory','ivr','../client','createHistory','campaign','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes','format'];(function(_0x2afb44,_0x249a57){var _0x15ccc2=function(_0x180748){while(--_0x180748){_0x2afb44['push'](_0x2afb44['shift']());}};_0x15ccc2(++_0x249a57);}(_0xaff2,0x68));var _0x2aff=function(_0x4c5c97,_0x4f85bf){_0x4c5c97=_0x4c5c97-0x0;var _0xd5d2cb=_0xaff2[_0x4c5c97];return _0xd5d2cb;};'use strict';var client=require(_0x2aff('0x0'));var moment=require('moment');exports[_0x2aff('0x1')]=function(_0x37e502){return function(){_0x37e502[_0x2aff('0x2')]=_0x37e502['queue'];return client[_0x2aff('0x3')]('CreateCmHopperHistory',{'body':_0x37e502,'log':_0x2aff('0x4')});};};exports[_0x2aff('0x5')]=function(_0x4399ba){return function(){return client[_0x2aff('0x3')](_0x2aff('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x2aff('0x7')](_0x4399ba,_0x2aff('0x8'))[_0x2aff('0x9')](_0x2aff('0xa')),moment()[_0x2aff('0x9')](_0x2aff('0xa'))]}},'raw':![]},'log':_0x2aff('0xb')});};};exports['getVoiceQueueHopperHistory']=function(_0x59e850){return function(){return client[_0x2aff('0x3')](_0x2aff('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x2aff('0xd')](_0x2aff('0xe'))[_0x2aff('0x9')](_0x2aff('0xa')),moment()[_0x2aff('0xf')](_0x2aff('0xe'))['format'](_0x2aff('0xa'))]},'campaigntype':_0x2aff('0x10')},'raw':![]},'log':_0x2aff('0xc')});};};exports['getCampaignHopperHistory']=function(_0x409c27){return function(){return client[_0x2aff('0x3')](_0x2aff('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x2aff('0xd')](_0x2aff('0xe'))['format'](_0x2aff('0xa')),moment()['endOf'](_0x2aff('0xe'))[_0x2aff('0x9')](_0x2aff('0xa'))]},'campaigntype':_0x2aff('0x12')},'raw':![]},'log':_0x2aff('0x11')});};};
\ No newline at end of file
index 0468430..9e58213 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb0b=['localstationid','maxrate','modem','gateway','faxdetect','t38timeout','tech','ListId','key','Trunk','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','name','description'];(function(_0x468f76,_0x52c1e9){var _0x40df0e=function(_0x58a7b4){while(--_0x58a7b4){_0x468f76['push'](_0x468f76['shift']());}};_0x40df0e(++_0x52c1e9);}(_0xfb0b,0x94));var _0xbfb0=function(_0xe558d6,_0x559af2){_0xe558d6=_0xe558d6-0x0;var _0x141415=_0xfb0b[_0xe558d6];return _0x141415;};'use strict';var client=require(_0xbfb0('0x0'));exports[_0xbfb0('0x1')]=function(){return function(){return client[_0xbfb0('0x2')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0xbfb0('0x3'),_0xbfb0('0x4'),'ecm','headerinfo',_0xbfb0('0x5'),'minrate',_0xbfb0('0x6'),_0xbfb0('0x7'),_0xbfb0('0x8'),_0xbfb0('0x9'),_0xbfb0('0xa'),_0xbfb0('0xb'),'TrunkId',_0xbfb0('0xc'),_0xbfb0('0xd')],'include':[{'model':_0xbfb0('0xe'),'as':_0xbfb0('0xe'),'attributes':['id','name','callerid','active']}]},'log':'getFaxAccount'});};};exports[_0xbfb0('0xf')]=function(_0x27a395,_0x18eca5){return client['Request'](_0xbfb0('0x10'),{'account':{'id':_0x27a395},'body':_0x18eca5,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0xa467=['callerid','getFaxAccount','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','modem','gateway','faxdetect','t38timeout','tech','ListId','key','Trunk'];(function(_0x5158f8,_0x49f41f){var _0x1dc397=function(_0x59a0f3){while(--_0x59a0f3){_0x5158f8['push'](_0x5158f8['shift']());}};_0x1dc397(++_0x49f41f);}(_0xa467,0x143));var _0x7a46=function(_0x3cb893,_0x29a693){_0x3cb893=_0x3cb893-0x0;var _0xd7a754=_0xa467[_0x3cb893];return _0xd7a754;};'use strict';var client=require(_0x7a46('0x0'));exports[_0x7a46('0x1')]=function(){return function(){return client[_0x7a46('0x2')](_0x7a46('0x3'),{'options':{'raw':![],'attributes':['id',_0x7a46('0x4'),_0x7a46('0x5'),_0x7a46('0x6'),_0x7a46('0x7'),_0x7a46('0x8'),'minrate','maxrate',_0x7a46('0x9'),_0x7a46('0xa'),_0x7a46('0xb'),_0x7a46('0xc'),_0x7a46('0xd'),'TrunkId',_0x7a46('0xe'),_0x7a46('0xf')],'include':[{'model':_0x7a46('0x10'),'as':_0x7a46('0x10'),'attributes':['id',_0x7a46('0x4'),_0x7a46('0x11'),'active']}]},'log':_0x7a46('0x12')});};};exports['notify']=function(_0x172832,_0x555f7a){return client[_0x7a46('0x2')](_0x7a46('0x13'),{'account':{'id':_0x172832},'body':_0x555f7a,'log':_0x7a46('0x13')});};
\ No newline at end of file
index ee27505..c116519 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ee7=['../client','Request'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x0ee7,0x1c2));var _0x70ee=function(_0x1f3285,_0x11d926){_0x1f3285=_0x1f3285-0x0;var _0x413a39=_0x0ee7[_0x1f3285];return _0x413a39;};'use strict';var client=require(_0x70ee('0x0'));exports['update']=function(_0x4216f3,_0x48736d){return client[_0x70ee('0x1')]('UpdateFaxMessage',{'body':_0x48736d,'options':{'where':{'AttachmentId':_0x4216f3}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
+var _0xc5cd=['UpdateFaxMessage','../client','update'];(function(_0x308ac8,_0x249cd3){var _0x2dae12=function(_0x1c546b){while(--_0x1c546b){_0x308ac8['push'](_0x308ac8['shift']());}};_0x2dae12(++_0x249cd3);}(_0xc5cd,0x85));var _0xdc5c=function(_0x112498,_0x1440c8){_0x112498=_0x112498-0x0;var _0x520e4f=_0xc5cd[_0x112498];return _0x520e4f;};'use strict';var client=require(_0xdc5c('0x0'));exports[_0xdc5c('0x1')]=function(_0x3d3f5d,_0x49acb9){return client['Request'](_0xdc5c('0x2'),{'body':_0x49acb9,'options':{'where':{'AttachmentId':_0x3d3f5d}},'log':_0xdc5c('0x2')});};
\ No newline at end of file
index e92352a..f5db205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1db5=['Request','GetDeskAccount','name','description','username','remoteUri','authType','serverUrl','DeskConfiguration','DeskField','Subjects','type','content','variableName','Variable','key','keyContent','Fields','idField','customField','Tags','../../client','getDeskAccounts'];(function(_0x324189,_0x202ac1){var _0x495eee=function(_0x4380b9){while(--_0x4380b9){_0x324189['push'](_0x324189['shift']());}};_0x495eee(++_0x202ac1);}(_0x1db5,0x112));var _0x51db=function(_0x5887c9,_0x1d124a){_0x5887c9=_0x5887c9-0x0;var _0x3185ba=_0x1db5[_0x5887c9];return _0x3185ba;};'use strict';var client=require(_0x51db('0x0'));exports[_0x51db('0x1')]=function(){return function(_0x4ce634){return client[_0x51db('0x2')](_0x51db('0x3'),{'options':{'raw':![],'attributes':['id',_0x51db('0x4'),_0x51db('0x5'),_0x51db('0x6'),'password',_0x51db('0x7'),_0x51db('0x8'),'type',_0x51db('0x9')],'include':[{'model':_0x51db('0xa'),'as':'Configurations','attributes':['id',_0x51db('0x4')],'include':[{'model':_0x51db('0xb'),'as':_0x51db('0xc'),'attributes':['id',_0x51db('0xd'),_0x51db('0xe'),_0x51db('0xf')],'include':[{'model':_0x51db('0x10'),'as':_0x51db('0x10'),'attributes':['id','name']}]},{'model':_0x51db('0xb'),'as':'Descriptions','attributes':['id',_0x51db('0xd'),_0x51db('0xe'),_0x51db('0x11'),'keyType',_0x51db('0x12'),_0x51db('0xf')],'include':[{'model':_0x51db('0x10'),'as':_0x51db('0x10'),'attributes':['id',_0x51db('0x4')]}]},{'model':'DeskField','as':_0x51db('0x13'),'attributes':['id',_0x51db('0xd'),_0x51db('0xe'),_0x51db('0x14'),'nameField',_0x51db('0x15'),_0x51db('0xf')],'include':[{'model':_0x51db('0x10'),'as':'Variable','attributes':['id',_0x51db('0x4')]}]},{'model':'Tag','as':_0x51db('0x16'),'attributes':['id',_0x51db('0x4')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
+var _0x7f7e=['DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','customField','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','name','username','password','authType','type','serverUrl','DeskConfiguration'];(function(_0x49a9de,_0x378fac){var _0x312c9e=function(_0x35868e){while(--_0x35868e){_0x49a9de['push'](_0x49a9de['shift']());}};_0x312c9e(++_0x378fac);}(_0x7f7e,0x145));var _0xe7f7=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x7f7e[_0x46698a];return _0x356db0;};'use strict';var client=require(_0xe7f7('0x0'));exports[_0xe7f7('0x1')]=function(){return function(_0xa4fc41){return client[_0xe7f7('0x2')](_0xe7f7('0x3'),{'options':{'raw':![],'attributes':['id',_0xe7f7('0x4'),'description',_0xe7f7('0x5'),_0xe7f7('0x6'),'remoteUri',_0xe7f7('0x7'),_0xe7f7('0x8'),_0xe7f7('0x9')],'include':[{'model':_0xe7f7('0xa'),'as':'Configurations','attributes':['id',_0xe7f7('0x4')],'include':[{'model':_0xe7f7('0xb'),'as':_0xe7f7('0xc'),'attributes':['id',_0xe7f7('0x8'),_0xe7f7('0xd'),_0xe7f7('0xe')],'include':[{'model':_0xe7f7('0xf'),'as':_0xe7f7('0xf'),'attributes':['id','name']}]},{'model':_0xe7f7('0xb'),'as':_0xe7f7('0x10'),'attributes':['id',_0xe7f7('0x8'),_0xe7f7('0xd'),_0xe7f7('0x11'),_0xe7f7('0x12'),_0xe7f7('0x13'),_0xe7f7('0xe')],'include':[{'model':_0xe7f7('0xf'),'as':_0xe7f7('0xf'),'attributes':['id',_0xe7f7('0x4')]}]},{'model':_0xe7f7('0xb'),'as':_0xe7f7('0x14'),'attributes':['id','type','content',_0xe7f7('0x15'),'nameField',_0xe7f7('0x16'),_0xe7f7('0xe')],'include':[{'model':_0xe7f7('0xf'),'as':'Variable','attributes':['id',_0xe7f7('0x4')]}]},{'model':'Tag','as':_0xe7f7('0x17'),'attributes':['id',_0xe7f7('0x4')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
index 03974ea..381bdde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed72=['description','Configurations','name','ticketType','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Dynamics365Field','Fields','idField','nameField','customField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','remoteUri','tenantId','clientId','clientSecret','serverUrl'];(function(_0x2b3eba,_0x2bb780){var _0x33e477=function(_0x6813ba){while(--_0x6813ba){_0x2b3eba['push'](_0x2b3eba['shift']());}};_0x33e477(++_0x2bb780);}(_0xed72,0xe1));var _0x2ed7=function(_0x1fcf1b,_0x214549){_0x1fcf1b=_0x1fcf1b-0x0;var _0x5d2952=_0xed72[_0x1fcf1b];return _0x5d2952;};'use strict';var client=require(_0x2ed7('0x0'));exports[_0x2ed7('0x1')]=function(){return function(_0x1abc75){return client[_0x2ed7('0x2')](_0x2ed7('0x3'),{'options':{'raw':![],'attributes':['id','name','username','password',_0x2ed7('0x4'),_0x2ed7('0x5'),_0x2ed7('0x6'),_0x2ed7('0x7'),_0x2ed7('0x8'),_0x2ed7('0x9')],'include':[{'model':'Dynamics365Configuration','as':_0x2ed7('0xa'),'attributes':['id',_0x2ed7('0xb'),_0x2ed7('0xc')],'include':[{'model':'Dynamics365Field','as':_0x2ed7('0xd'),'attributes':['id',_0x2ed7('0xe'),_0x2ed7('0xf'),_0x2ed7('0x10')],'include':[{'model':'Variable','as':_0x2ed7('0x11'),'attributes':['id',_0x2ed7('0xb')]}]},{'model':'Dynamics365Field','as':_0x2ed7('0x12'),'attributes':['id','type',_0x2ed7('0xf'),'key',_0x2ed7('0x13'),_0x2ed7('0x14'),_0x2ed7('0x10')],'include':[{'model':_0x2ed7('0x11'),'as':'Variable','attributes':['id',_0x2ed7('0xb')]}]},{'model':_0x2ed7('0x15'),'as':_0x2ed7('0x16'),'attributes':['id',_0x2ed7('0xe'),_0x2ed7('0xf'),_0x2ed7('0x17'),_0x2ed7('0x18'),_0x2ed7('0x19'),_0x2ed7('0x10')],'include':[{'model':_0x2ed7('0x11'),'as':'Variable','attributes':['id',_0x2ed7('0xb')]}]}]}]},'log':_0x2ed7('0x3')});};};
\ No newline at end of file
+var _0x7c07=['serverUrl','Dynamics365Configuration','Configurations','name','ticketType','Dynamics365Field','type','content','variableName','Variable','keyType','keyContent','Fields','idField','customField','GetDynamics365Account','../../client','getDynamics365Accounts','Request','username','password','remoteUri','clientId','clientSecret'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x7c07,0x130));var _0x77c0=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x7c07[_0x432682];return _0x463d05;};'use strict';var client=require(_0x77c0('0x0'));exports[_0x77c0('0x1')]=function(){return function(_0x245bfd){return client[_0x77c0('0x2')]('GetDynamics365Account',{'options':{'raw':![],'attributes':['id','name',_0x77c0('0x3'),_0x77c0('0x4'),_0x77c0('0x5'),'tenantId',_0x77c0('0x6'),_0x77c0('0x7'),_0x77c0('0x8'),'description'],'include':[{'model':_0x77c0('0x9'),'as':_0x77c0('0xa'),'attributes':['id',_0x77c0('0xb'),_0x77c0('0xc')],'include':[{'model':_0x77c0('0xd'),'as':'Subjects','attributes':['id',_0x77c0('0xe'),_0x77c0('0xf'),_0x77c0('0x10')],'include':[{'model':_0x77c0('0x11'),'as':_0x77c0('0x11'),'attributes':['id',_0x77c0('0xb')]}]},{'model':_0x77c0('0xd'),'as':'Descriptions','attributes':['id',_0x77c0('0xe'),_0x77c0('0xf'),'key',_0x77c0('0x12'),_0x77c0('0x13'),'variableName'],'include':[{'model':_0x77c0('0x11'),'as':_0x77c0('0x11'),'attributes':['id',_0x77c0('0xb')]}]},{'model':_0x77c0('0xd'),'as':_0x77c0('0x14'),'attributes':['id',_0x77c0('0xe'),_0x77c0('0xf'),_0x77c0('0x15'),'nameField',_0x77c0('0x16'),_0x77c0('0x10')],'include':[{'model':_0x77c0('0x11'),'as':_0x77c0('0x11'),'attributes':['id',_0x77c0('0xb')]}]}]}]},'log':_0x77c0('0x17')});};};
\ No newline at end of file
index 845fc44..9ceb32c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd136=['type','keyContent','Fields','customField','getFreshdeskAccounts','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','FreshdeskField','content','variableName','Variable','Descriptions'];(function(_0x2fb54c,_0x8113a){var _0x415c0a=function(_0x95b56d){while(--_0x95b56d){_0x2fb54c['push'](_0x2fb54c['shift']());}};_0x415c0a(++_0x8113a);}(_0xd136,0x94));var _0x6d13=function(_0x4f1398,_0x10939c){_0x4f1398=_0x4f1398-0x0;var _0x4e0db5=_0xd136[_0x4f1398];return _0x4e0db5;};'use strict';var client=require('../../client');exports[_0x6d13('0x0')]=function(){return function(_0x44e53c){return client['Request'](_0x6d13('0x1'),{'options':{'raw':![],'attributes':['id',_0x6d13('0x2'),_0x6d13('0x3'),_0x6d13('0x4'),_0x6d13('0x5'),_0x6d13('0x6')],'include':[{'model':_0x6d13('0x7'),'as':_0x6d13('0x8'),'attributes':['id',_0x6d13('0x2')],'include':[{'model':'Tag','attributes':['id',_0x6d13('0x2')]},{'model':_0x6d13('0x9'),'as':'Subjects','attributes':['id','type',_0x6d13('0xa'),_0x6d13('0xb')],'include':[{'model':_0x6d13('0xc'),'as':_0x6d13('0xc'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':_0x6d13('0xd'),'attributes':['id',_0x6d13('0xe'),_0x6d13('0xa'),'key','keyType',_0x6d13('0xf'),_0x6d13('0xb')],'include':[{'model':_0x6d13('0xc'),'as':'Variable','attributes':['id',_0x6d13('0x2')]}]},{'model':_0x6d13('0x9'),'as':_0x6d13('0x10'),'attributes':['id',_0x6d13('0xe'),'content','idField','nameField',_0x6d13('0x11'),_0x6d13('0xb')],'include':[{'model':_0x6d13('0xc'),'as':_0x6d13('0xc'),'attributes':['id',_0x6d13('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
+var _0x0a6b=['FreshdeskField','content','Variable','Descriptions','key','keyType','keyContent','variableName','Fields','type','idField','nameField','../../client','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0a6b,0x120));var _0xb0a6=function(_0x20f76a,_0x2605e2){_0x20f76a=_0x20f76a-0x0;var _0x30016d=_0x0a6b[_0x20f76a];return _0x30016d;};'use strict';var client=require(_0xb0a6('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x2c6c47){return client[_0xb0a6('0x1')](_0xb0a6('0x2'),{'options':{'raw':![],'attributes':['id',_0xb0a6('0x3'),_0xb0a6('0x4'),_0xb0a6('0x5'),_0xb0a6('0x6'),_0xb0a6('0x7')],'include':[{'model':_0xb0a6('0x8'),'as':_0xb0a6('0x9'),'attributes':['id','name'],'include':[{'model':_0xb0a6('0xa'),'attributes':['id','name']},{'model':_0xb0a6('0xb'),'as':'Subjects','attributes':['id','type',_0xb0a6('0xc'),'variableName'],'include':[{'model':_0xb0a6('0xd'),'as':_0xb0a6('0xd'),'attributes':['id','name']}]},{'model':_0xb0a6('0xb'),'as':_0xb0a6('0xe'),'attributes':['id','type',_0xb0a6('0xc'),_0xb0a6('0xf'),_0xb0a6('0x10'),_0xb0a6('0x11'),_0xb0a6('0x12')],'include':[{'model':_0xb0a6('0xd'),'as':_0xb0a6('0xd'),'attributes':['id',_0xb0a6('0x3')]}]},{'model':'FreshdeskField','as':_0xb0a6('0x13'),'attributes':['id',_0xb0a6('0x14'),_0xb0a6('0xc'),_0xb0a6('0x15'),_0xb0a6('0x16'),'customField',_0xb0a6('0x12')],'include':[{'model':_0xb0a6('0xd'),'as':'Variable','attributes':['id',_0xb0a6('0x3')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
index 639163f..4dd8c47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50e5=['keyType','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','content','variableName','Variable','type'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x50e5,0xb7));var _0x550e=function(_0x38f542,_0x528c1f){_0x38f542=_0x38f542-0x0;var _0x3c5ba9=_0x50e5[_0x38f542];return _0x3c5ba9;};'use strict';var client=require(_0x550e('0x0'));exports[_0x550e('0x1')]=function(){return function(_0x524e28){return client[_0x550e('0x2')](_0x550e('0x3'),{'options':{'raw':![],'attributes':['id',_0x550e('0x4'),_0x550e('0x5'),_0x550e('0x6'),_0x550e('0x7'),_0x550e('0x8')],'include':[{'model':_0x550e('0x9'),'as':_0x550e('0xa'),'attributes':['id',_0x550e('0x4')],'include':[{'model':_0x550e('0xb'),'as':_0x550e('0xc'),'attributes':['id','type',_0x550e('0xd'),_0x550e('0xe')],'include':[{'model':'Variable','as':_0x550e('0xf'),'attributes':['id',_0x550e('0x4')]}]},{'model':_0x550e('0xb'),'as':'Descriptions','attributes':['id',_0x550e('0x10'),'content','key',_0x550e('0x11'),_0x550e('0x12'),'variableName'],'include':[{'model':_0x550e('0xf'),'as':_0x550e('0xf'),'attributes':['id',_0x550e('0x4')]}]}]}]},'log':_0x550e('0x13')});};};
\ No newline at end of file
+var _0xef17=['type','content','key','keyType','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username','apiKey','remoteUri','FreshsalesConfiguration','Subjects','variableName','Variable','FreshsalesField','Descriptions'];(function(_0xdbfb47,_0x4ec8d6){var _0x337742=function(_0x123fe2){while(--_0x123fe2){_0xdbfb47['push'](_0xdbfb47['shift']());}};_0x337742(++_0x4ec8d6);}(_0xef17,0x136));var _0x7ef1=function(_0x31b184,_0x520de3){_0x31b184=_0x31b184-0x0;var _0xceb08f=_0xef17[_0x31b184];return _0xceb08f;};'use strict';var client=require(_0x7ef1('0x0'));exports[_0x7ef1('0x1')]=function(){return function(_0x465d19){return client[_0x7ef1('0x2')](_0x7ef1('0x3'),{'options':{'raw':![],'attributes':['id',_0x7ef1('0x4'),_0x7ef1('0x5'),_0x7ef1('0x6'),_0x7ef1('0x7'),'serverUrl'],'include':[{'model':_0x7ef1('0x8'),'as':'Configurations','attributes':['id',_0x7ef1('0x4')],'include':[{'model':'FreshsalesField','as':_0x7ef1('0x9'),'attributes':['id','type','content',_0x7ef1('0xa')],'include':[{'model':_0x7ef1('0xb'),'as':'Variable','attributes':['id',_0x7ef1('0x4')]}]},{'model':_0x7ef1('0xc'),'as':_0x7ef1('0xd'),'attributes':['id',_0x7ef1('0xe'),_0x7ef1('0xf'),_0x7ef1('0x10'),_0x7ef1('0x11'),'keyContent','variableName'],'include':[{'model':_0x7ef1('0xb'),'as':'Variable','attributes':['id','name']}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
index a3706fe..8dba93c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5706=['additionalSearchAccount','additionalSearchContact','additionalSearchLead','Variable','name','SalesforceField','Descriptions','Fields','../../client','getSalesforceAccounts','GetSalesforceAccount','username','password','remoteUri','clientId','clientSecret','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleCreate','ticketType','leadId'];(function(_0x9f19d8,_0x1b1ddc){var _0x316433=function(_0x37a922){while(--_0x37a922){_0x9f19d8['push'](_0x9f19d8['shift']());}};_0x316433(++_0x1b1ddc);}(_0x5706,0xb0));var _0x6570=function(_0x24bcc0,_0x5a4fd8){_0x24bcc0=_0x24bcc0-0x0;var _0x403a87=_0x5706[_0x24bcc0];return _0x403a87;};'use strict';var client=require(_0x6570('0x0'));exports[_0x6570('0x1')]=function(){return function(_0x77fe61){return client['Request'](_0x6570('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x6570('0x3'),_0x6570('0x4'),_0x6570('0x5'),_0x6570('0x6'),_0x6570('0x7'),_0x6570('0x8'),_0x6570('0x9'),_0x6570('0xa')],'include':[{'model':_0x6570('0xb'),'as':_0x6570('0xc'),'attributes':['id','name','moduleSearch',_0x6570('0xd'),_0x6570('0xe'),_0x6570('0xf'),_0x6570('0x10'),_0x6570('0x11'),_0x6570('0x12')],'include':[{'model':'SalesforceField','as':'Subjects','include':[{'model':'Variable','as':_0x6570('0x13'),'attributes':['id',_0x6570('0x14')]}]},{'model':_0x6570('0x15'),'as':_0x6570('0x16'),'include':[{'model':_0x6570('0x13'),'as':_0x6570('0x13'),'attributes':['id',_0x6570('0x14')]}]},{'model':_0x6570('0x15'),'as':_0x6570('0x17'),'include':[{'model':'Variable','as':_0x6570('0x13'),'attributes':['id',_0x6570('0x14')]}]}]}]},'log':_0x6570('0x2')});};};
\ No newline at end of file
+var _0x83cd=['name','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','username','password','remoteUri','clientId','securityToken','serverUrl','type','Configurations','moduleSearch','ticketType','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable'];(function(_0x1b6ca0,_0x3fb4c0){var _0x12213d=function(_0x3588a1){while(--_0x3588a1){_0x1b6ca0['push'](_0x1b6ca0['shift']());}};_0x12213d(++_0x3fb4c0);}(_0x83cd,0x17b));var _0xd83c=function(_0x1dd82f,_0x52acb7){_0x1dd82f=_0x1dd82f-0x0;var _0x353ca4=_0x83cd[_0x1dd82f];return _0x353ca4;};'use strict';var client=require(_0xd83c('0x0'));exports[_0xd83c('0x1')]=function(){return function(_0x155e14){return client[_0xd83c('0x2')](_0xd83c('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xd83c('0x4'),_0xd83c('0x5'),_0xd83c('0x6'),_0xd83c('0x7'),'clientSecret',_0xd83c('0x8'),_0xd83c('0x9'),_0xd83c('0xa')],'include':[{'model':'SalesforceConfiguration','as':_0xd83c('0xb'),'attributes':['id','name',_0xd83c('0xc'),'moduleCreate',_0xd83c('0xd'),'leadId',_0xd83c('0xe'),_0xd83c('0xf'),_0xd83c('0x10')],'include':[{'model':_0xd83c('0x11'),'as':_0xd83c('0x12'),'include':[{'model':_0xd83c('0x13'),'as':_0xd83c('0x13'),'attributes':['id','name']}]},{'model':_0xd83c('0x11'),'as':'Descriptions','include':[{'model':'Variable','as':_0xd83c('0x13'),'attributes':['id',_0xd83c('0x14')]}]},{'model':_0xd83c('0x11'),'as':'Fields','include':[{'model':_0xd83c('0x13'),'as':_0xd83c('0x13'),'attributes':['id',_0xd83c('0x14')]}]}]}]},'log':_0xd83c('0x3')});};};
\ No newline at end of file
index e97f0dd..5cb07cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['type','variableName','Variable','Descriptions','content','key','keyContent','Fields','nameField','customField','GetServicenowkAccount','getServicenowAccounts','GetServicenowAccount','name','description','username','password','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x57ca,0x108));var _0xa57c=function(_0x15e43a,_0x3a20e3){_0x15e43a=_0x15e43a-0x0;var _0xa91cc7=_0x57ca[_0x15e43a];return _0xa91cc7;};'use strict';var client=require('../../client');exports[_0xa57c('0x0')]=function(){return function(_0x4ad696){return client['Request'](_0xa57c('0x1'),{'options':{'raw':![],'attributes':['id',_0xa57c('0x2'),_0xa57c('0x3'),_0xa57c('0x4'),_0xa57c('0x5'),'email',_0xa57c('0x6'),_0xa57c('0x7')],'include':[{'model':_0xa57c('0x8'),'as':_0xa57c('0x9'),'attributes':['id',_0xa57c('0x2')],'include':[{'model':_0xa57c('0xa'),'as':_0xa57c('0xb'),'attributes':['id',_0xa57c('0xc'),'content',_0xa57c('0xd')],'include':[{'model':'Variable','as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]},{'model':'ServicenowField','as':_0xa57c('0xf'),'attributes':['id','type',_0xa57c('0x10'),_0xa57c('0x11'),'keyType',_0xa57c('0x12'),'variableName'],'include':[{'model':_0xa57c('0xe'),'as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]},{'model':_0xa57c('0xa'),'as':_0xa57c('0x13'),'attributes':['id','type',_0xa57c('0x10'),'idField',_0xa57c('0x14'),_0xa57c('0x15'),_0xa57c('0xd')],'include':[{'model':_0xa57c('0xe'),'as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]}]}]},'log':_0xa57c('0x16')});};};
\ No newline at end of file
+var _0x524e=['name','description','username','password','email','remoteUri','serverUrl','Configurations','ServicenowField','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','Request','GetServicenowAccount'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x524e,0x15e));var _0xe524=function(_0xe0f2b0,_0x39db69){_0xe0f2b0=_0xe0f2b0-0x0;var _0xa04fe6=_0x524e[_0xe0f2b0];return _0xa04fe6;};'use strict';var client=require('../../client');exports['getServicenowAccounts']=function(){return function(_0x353d8a){return client[_0xe524('0x0')](_0xe524('0x1'),{'options':{'raw':![],'attributes':['id',_0xe524('0x2'),_0xe524('0x3'),_0xe524('0x4'),_0xe524('0x5'),_0xe524('0x6'),_0xe524('0x7'),_0xe524('0x8')],'include':[{'model':'ServicenowConfiguration','as':_0xe524('0x9'),'attributes':['id',_0xe524('0x2')],'include':[{'model':_0xe524('0xa'),'as':'Subjects','attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]},{'model':_0xe524('0xa'),'as':_0xe524('0xf'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x10'),_0xe524('0x11'),_0xe524('0x12'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xe524('0x13'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x14'),_0xe524('0x15'),'customField',_0xe524('0xd')],'include':[{'model':'Variable','as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
index 4b703f3..a9648c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','serverUrl','Configurations','type','content','variableName','Variable','key','keyType','Fields','idField'];(function(_0x386fbd,_0xde0bd2){var _0x3e566c=function(_0x2c5409){while(--_0x2c5409){_0x386fbd['push'](_0x386fbd['shift']());}};_0x3e566c(++_0xde0bd2);}(_0x5f66,0x1a0));var _0x65f6=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x5f66[_0x5d4607];return _0x5e4a86;};'use strict';var client=require('../../client');exports[_0x65f6('0x0')]=function(){return function(_0x4a3887){return client[_0x65f6('0x1')](_0x65f6('0x2'),{'options':{'raw':![],'attributes':['id',_0x65f6('0x3'),_0x65f6('0x4'),_0x65f6('0x5'),'remoteUri',_0x65f6('0x6')],'include':[{'model':'SugarcrmConfiguration','as':_0x65f6('0x7'),'attributes':['id',_0x65f6('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x65f6('0x8'),_0x65f6('0x9'),_0x65f6('0xa')],'include':[{'model':_0x65f6('0xb'),'as':_0x65f6('0xb'),'attributes':['id',_0x65f6('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id',_0x65f6('0x8'),_0x65f6('0x9'),_0x65f6('0xc'),_0x65f6('0xd'),'keyContent',_0x65f6('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x65f6('0x3')]}]},{'model':'SugarcrmField','as':_0x65f6('0xe'),'attributes':['id','type',_0x65f6('0x9'),_0x65f6('0xf'),_0x65f6('0x10'),_0x65f6('0x11'),_0x65f6('0xa')],'include':[{'model':_0x65f6('0xb'),'as':_0x65f6('0xb'),'attributes':['id',_0x65f6('0x3')]}]}]}]},'log':_0x65f6('0x2')});};};
\ No newline at end of file
+var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0xf8e45b,_0x336e08){var _0xb38c41=function(_0x51f9d8){while(--_0x51f9d8){_0xf8e45b['push'](_0xf8e45b['shift']());}};_0xb38c41(++_0x336e08);}(_0x14a0,0x8e));var _0x014a=function(_0x2ce311,_0x22a10e){_0x2ce311=_0x2ce311-0x0;var _0x4af42d=_0x14a0[_0x2ce311];return _0x4af42d;};'use strict';var client=require('../../client');exports[_0x014a('0x0')]=function(){return function(_0x451138){return client[_0x014a('0x1')](_0x014a('0x2'),{'options':{'raw':![],'attributes':['id',_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0x014a('0x6'),'as':_0x014a('0x7'),'attributes':['id',_0x014a('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x014a('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id','type','content',_0x014a('0xb'),'keyType',_0x014a('0xc'),_0x014a('0xa')],'include':[{'model':'Variable','as':_0x014a('0xd'),'attributes':['id',_0x014a('0x3')]}]},{'model':_0x014a('0xe'),'as':_0x014a('0xf'),'attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0x10'),_0x014a('0x11'),_0x014a('0x12'),_0x014a('0xa')],'include':[{'model':_0x014a('0xd'),'as':_0x014a('0xd'),'attributes':['id','name']}]}]}]},'log':_0x014a('0x2')});};};
\ No newline at end of file
index 43f3cde..4b72261 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1433=['accessKey','VtigerConfiguration','VtigerField','type','content','variableName','Variable','Descriptions','key','keyContent','nameField','customField','GetVtigerAccount','../../client','getVtigerAccounts','Request','name','description','username'];(function(_0x33b674,_0x4a4f93){var _0x170369=function(_0x325052){while(--_0x325052){_0x33b674['push'](_0x33b674['shift']());}};_0x170369(++_0x4a4f93);}(_0x1433,0x92));var _0x3143=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x1433[_0x397e5f];return _0x5302b8;};'use strict';var client=require(_0x3143('0x0'));exports[_0x3143('0x1')]=function(){return function(_0x48fa79){return client[_0x3143('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0x3143('0x3'),_0x3143('0x4'),_0x3143('0x5'),_0x3143('0x6'),'remoteUri','serverUrl'],'include':[{'model':_0x3143('0x7'),'as':'Configurations','attributes':['id',_0x3143('0x3')],'include':[{'model':_0x3143('0x8'),'as':'Subjects','attributes':['id',_0x3143('0x9'),_0x3143('0xa'),_0x3143('0xb')],'include':[{'model':_0x3143('0xc'),'as':_0x3143('0xc'),'attributes':['id','name']}]},{'model':'VtigerField','as':_0x3143('0xd'),'attributes':['id',_0x3143('0x9'),_0x3143('0xa'),_0x3143('0xe'),'keyType',_0x3143('0xf'),_0x3143('0xb')],'include':[{'model':'Variable','as':_0x3143('0xc'),'attributes':['id',_0x3143('0x3')]}]},{'model':_0x3143('0x8'),'as':'Fields','attributes':['id',_0x3143('0x9'),_0x3143('0xa'),'idField',_0x3143('0x10'),_0x3143('0x11'),_0x3143('0xb')],'include':[{'model':_0x3143('0xc'),'as':_0x3143('0xc'),'attributes':['id',_0x3143('0x3')]}]}]}]},'log':_0x3143('0x12')});};};
\ No newline at end of file
+var _0x7652=['serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','name','Descriptions','key','keyType','keyContent','Fields','idField','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','description','accessKey','remoteUri'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7652,0x13e));var _0x2765=function(_0x4f75a3,_0x2c4ec4){_0x4f75a3=_0x4f75a3-0x0;var _0x45ca11=_0x7652[_0x4f75a3];return _0x45ca11;};'use strict';var client=require(_0x2765('0x0'));exports[_0x2765('0x1')]=function(){return function(_0x20f44c){return client[_0x2765('0x2')](_0x2765('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x2765('0x4'),'username',_0x2765('0x5'),_0x2765('0x6'),_0x2765('0x7')],'include':[{'model':_0x2765('0x8'),'as':_0x2765('0x9'),'attributes':['id','name'],'include':[{'model':_0x2765('0xa'),'as':_0x2765('0xb'),'attributes':['id',_0x2765('0xc'),_0x2765('0xd'),_0x2765('0xe')],'include':[{'model':_0x2765('0xf'),'as':'Variable','attributes':['id',_0x2765('0x10')]}]},{'model':_0x2765('0xa'),'as':_0x2765('0x11'),'attributes':['id',_0x2765('0xc'),'content',_0x2765('0x12'),_0x2765('0x13'),_0x2765('0x14'),_0x2765('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x2765('0x10')]}]},{'model':_0x2765('0xa'),'as':_0x2765('0x15'),'attributes':['id',_0x2765('0xc'),'content',_0x2765('0x16'),_0x2765('0x17'),_0x2765('0x18'),'variableName'],'include':[{'model':'Variable','as':_0x2765('0xf'),'attributes':['id',_0x2765('0x10')]}]}]}]},'log':_0x2765('0x3')});};};
\ No newline at end of file
index b84674c..634c7fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x409e=['remoteUri','authType','type','ZendeskConfiguration','Configurations','Tag','Subjects','content','Variable','ZendeskField','Descriptions','keyType','keyContent','variableName','idField','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','token'];(function(_0x534f18,_0x4fbd4f){var _0x4f1377=function(_0x147009){while(--_0x147009){_0x534f18['push'](_0x534f18['shift']());}};_0x4f1377(++_0x4fbd4f);}(_0x409e,0x1ba));var _0xe409=function(_0x172133,_0x10246b){_0x172133=_0x172133-0x0;var _0x2460e5=_0x409e[_0x172133];return _0x2460e5;};'use strict';var client=require(_0xe409('0x0'));exports[_0xe409('0x1')]=function(){return function(_0x25dc13){return client[_0xe409('0x2')](_0xe409('0x3'),{'options':{'raw':![],'attributes':['id',_0xe409('0x4'),_0xe409('0x5'),_0xe409('0x6'),_0xe409('0x7'),_0xe409('0x8'),_0xe409('0x9'),'serverUrl',_0xe409('0xa')],'include':[{'model':_0xe409('0xb'),'as':_0xe409('0xc'),'attributes':['id',_0xe409('0x4')],'include':[{'model':_0xe409('0xd'),'attributes':['id',_0xe409('0x4')]},{'model':'ZendeskField','as':_0xe409('0xe'),'attributes':['id','type',_0xe409('0xf'),'variableName'],'include':[{'model':'Variable','as':_0xe409('0x10'),'attributes':['id',_0xe409('0x4')]}]},{'model':_0xe409('0x11'),'as':_0xe409('0x12'),'attributes':['id',_0xe409('0xa'),'content','key',_0xe409('0x13'),_0xe409('0x14'),_0xe409('0x15')],'include':[{'model':_0xe409('0x10'),'as':_0xe409('0x10'),'attributes':['id',_0xe409('0x4')]}]},{'model':_0xe409('0x11'),'as':'Fields','attributes':['id',_0xe409('0xa'),_0xe409('0xf'),_0xe409('0x16'),_0xe409('0x17'),_0xe409('0x18'),_0xe409('0x15')],'include':[{'model':_0xe409('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
+var _0xbe3d=['authType','serverUrl','type','ZendeskConfiguration','name','Tag','ZendeskField','Subjects','content','variableName','Variable','key','keyType','keyContent','idField','customField','GetZendeskAccount','../../client','getZendeskAccounts','Request','password','token'];(function(_0x25149b,_0x3827d9){var _0x5c3597=function(_0x2a51f9){while(--_0x2a51f9){_0x25149b['push'](_0x25149b['shift']());}};_0x5c3597(++_0x3827d9);}(_0xbe3d,0x1b3));var _0xdbe3=function(_0x575f32,_0x32d24c){_0x575f32=_0x575f32-0x0;var _0x84d4ef=_0xbe3d[_0x575f32];return _0x84d4ef;};'use strict';var client=require(_0xdbe3('0x0'));exports[_0xdbe3('0x1')]=function(){return function(_0xc36e31){return client[_0xdbe3('0x2')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id','name','username',_0xdbe3('0x3'),_0xdbe3('0x4'),'remoteUri',_0xdbe3('0x5'),_0xdbe3('0x6'),_0xdbe3('0x7')],'include':[{'model':_0xdbe3('0x8'),'as':'Configurations','attributes':['id',_0xdbe3('0x9')],'include':[{'model':_0xdbe3('0xa'),'attributes':['id','name']},{'model':_0xdbe3('0xb'),'as':_0xdbe3('0xc'),'attributes':['id',_0xdbe3('0x7'),_0xdbe3('0xd'),_0xdbe3('0xe')],'include':[{'model':_0xdbe3('0xf'),'as':_0xdbe3('0xf'),'attributes':['id',_0xdbe3('0x9')]}]},{'model':_0xdbe3('0xb'),'as':'Descriptions','attributes':['id','type','content',_0xdbe3('0x10'),_0xdbe3('0x11'),_0xdbe3('0x12'),_0xdbe3('0xe')],'include':[{'model':_0xdbe3('0xf'),'as':_0xdbe3('0xf'),'attributes':['id',_0xdbe3('0x9')]}]},{'model':_0xdbe3('0xb'),'as':'Fields','attributes':['id',_0xdbe3('0x7'),'content',_0xdbe3('0x13'),'nameField',_0xdbe3('0x14'),_0xdbe3('0xe')],'include':[{'model':_0xdbe3('0xf'),'as':_0xdbe3('0xf'),'attributes':['id',_0xdbe3('0x9')]}]}]}]},'log':_0xdbe3('0x15')});};};
\ No newline at end of file
index 6bab3d2..3f8da11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8881=['description','host','zone','clientId','clientSecret','code','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','ZohoField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','idField','customField','../../client','GetZohoAccount','name'];(function(_0x3721e2,_0x1f2488){var _0x538a7c=function(_0x2cf252){while(--_0x2cf252){_0x3721e2['push'](_0x3721e2['shift']());}};_0x538a7c(++_0x1f2488);}(_0x8881,0x11b));var _0x1888=function(_0x594ece,_0x2a1f27){_0x594ece=_0x594ece-0x0;var _0x471bc4=_0x8881[_0x594ece];return _0x471bc4;};'use strict';var client=require(_0x1888('0x0'));exports['getZohoAccounts']=function(){return function(_0x396075){return client['Request'](_0x1888('0x1'),{'options':{'raw':![],'attributes':['id',_0x1888('0x2'),_0x1888('0x3'),_0x1888('0x4'),_0x1888('0x5'),_0x1888('0x6'),_0x1888('0x7'),'serverUrl',_0x1888('0x8'),_0x1888('0x9')],'include':[{'model':_0x1888('0xa'),'as':_0x1888('0xb'),'attributes':['id',_0x1888('0x2'),_0x1888('0xc'),_0x1888('0xd'),_0x1888('0x3')],'include':[{'model':_0x1888('0xe'),'as':_0x1888('0xf'),'attributes':['id',_0x1888('0x10'),_0x1888('0x11'),_0x1888('0x12')],'include':[{'model':_0x1888('0x13'),'as':_0x1888('0x13'),'attributes':['id','name']}]},{'model':_0x1888('0xe'),'as':_0x1888('0x14'),'attributes':['id','type',_0x1888('0x11'),_0x1888('0x15'),_0x1888('0x16'),_0x1888('0x17'),_0x1888('0x12')],'include':[{'model':_0x1888('0x13'),'as':_0x1888('0x13'),'attributes':['id',_0x1888('0x2')]}]},{'model':_0x1888('0xe'),'as':'Fields','attributes':['id',_0x1888('0x10'),_0x1888('0x11'),_0x1888('0x18'),'nameField',_0x1888('0x19'),'variableName'],'include':[{'model':_0x1888('0x13'),'as':_0x1888('0x13'),'attributes':['id',_0x1888('0x2')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
+var _0xd5d3=['code','refreshToken','Configurations','moduleSearch','ZohoField','content','Variable','Descriptions','type','key','keyContent','variableName','idField','nameField','customField','getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId','clientSecret','serverUrl'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd5d3,0x122));var _0x3d5d=function(_0x43fdb4,_0x5a62c3){_0x43fdb4=_0x43fdb4-0x0;var _0x21bc22=_0xd5d3[_0x43fdb4];return _0x21bc22;};'use strict';var client=require('../../client');exports[_0x3d5d('0x0')]=function(){return function(_0x5d497f){return client[_0x3d5d('0x1')](_0x3d5d('0x2'),{'options':{'raw':![],'attributes':['id',_0x3d5d('0x3'),_0x3d5d('0x4'),_0x3d5d('0x5'),_0x3d5d('0x6'),_0x3d5d('0x7'),_0x3d5d('0x8'),_0x3d5d('0x9'),_0x3d5d('0xa'),_0x3d5d('0xb')],'include':[{'model':'ZohoConfiguration','as':_0x3d5d('0xc'),'attributes':['id',_0x3d5d('0x3'),'moduleCreate',_0x3d5d('0xd'),'description'],'include':[{'model':_0x3d5d('0xe'),'as':'Subjects','attributes':['id','type',_0x3d5d('0xf'),'variableName'],'include':[{'model':_0x3d5d('0x10'),'as':_0x3d5d('0x10'),'attributes':['id',_0x3d5d('0x3')]}]},{'model':_0x3d5d('0xe'),'as':_0x3d5d('0x11'),'attributes':['id',_0x3d5d('0x12'),_0x3d5d('0xf'),_0x3d5d('0x13'),'keyType',_0x3d5d('0x14'),_0x3d5d('0x15')],'include':[{'model':_0x3d5d('0x10'),'as':_0x3d5d('0x10'),'attributes':['id',_0x3d5d('0x3')]}]},{'model':_0x3d5d('0xe'),'as':'Fields','attributes':['id',_0x3d5d('0x12'),_0x3d5d('0xf'),_0x3d5d('0x16'),_0x3d5d('0x17'),_0x3d5d('0x18'),_0x3d5d('0x15')],'include':[{'model':_0x3d5d('0x10'),'as':_0x3d5d('0x10'),'attributes':['id',_0x3d5d('0x3')]}]}]}]},'log':_0x3d5d('0x2')});};};
\ No newline at end of file
index 1386ef4..5a48677 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed35=['lastAssignedTo','isNil','interface','SIP/%s','queuecallerleaveAt','seconds','inbound','calleridnum','exten','agent','accountcode','uniqueid','voiceDialReport','membername','TALKING','starttime','diff','outbound','dialstring','toNumber','moment','lodash','util','../client','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','voice'];(function(_0x346edc,_0x30d4c){var _0x5cfd6f=function(_0xef9011){while(--_0xef9011){_0x346edc['push'](_0x346edc['shift']());}};_0x5cfd6f(++_0x30d4c);}(_0xed35,0x136));var _0x5ed3=function(_0x26f5ef,_0x1e3889){_0x26f5ef=_0x26f5ef-0x0;var _0x503f92=_0xed35[_0x26f5ef];return _0x503f92;};'use strict';var moment=require(_0x5ed3('0x0'));var _=require(_0x5ed3('0x1'));var util=require(_0x5ed3('0x2'));var client=require(_0x5ed3('0x3'));exports['voiceQueueReport']=function(_0x51abc9){var _0x156f99=_0x51abc9[_0x5ed3('0x4')]||_0x51abc9[_0x5ed3('0x5')];return client[_0x5ed3('0x6')](_0x5ed3('0x7'),{'body':{'channel':_0x5ed3('0x8'),'membername':_0x51abc9[_0x5ed3('0x9')],'interface':_[_0x5ed3('0xa')](_0x51abc9[_0x5ed3('0xb')])?util['format'](_0x5ed3('0xc'),_0x51abc9[_0x5ed3('0x9')]):_0x51abc9[_0x5ed3('0xb')],'type':'TALKING','enterAt':_0x51abc9[_0x5ed3('0xd')],'exitAt':_0x156f99,'duration':moment(_0x156f99)['diff'](_0x51abc9[_0x5ed3('0xd')],_0x5ed3('0xe')),'data1':_0x5ed3('0xf'),'data2':_0x51abc9[_0x5ed3('0x10')],'data3':_0x51abc9[_0x5ed3('0x11')],'data4':null,'data5':_0x51abc9['queue'],'role':_0x5ed3('0x12'),'internal':_0x51abc9[_0x5ed3('0x13')]?_['toNumber'](_0x51abc9['accountcode']):undefined,'uniqueid':_0x51abc9[_0x5ed3('0x14')]},'log':_0x5ed3('0x7')});};exports[_0x5ed3('0x15')]=function(_0x2b774e){return client[_0x5ed3('0x6')](_0x5ed3('0x7'),{'body':{'channel':_0x5ed3('0x8'),'membername':_0x2b774e[_0x5ed3('0x16')],'interface':_0x2b774e[_0x5ed3('0xb')],'type':_0x5ed3('0x17'),'enterAt':_0x2b774e[_0x5ed3('0x18')],'exitAt':_0x2b774e['endtime'],'duration':moment(_0x2b774e['endtime'])[_0x5ed3('0x19')](_0x2b774e['starttime'],_0x5ed3('0xe'))>=0x0?moment(_0x2b774e['endtime'])[_0x5ed3('0x19')](_0x2b774e['starttime'],_0x5ed3('0xe')):null,'data1':_0x5ed3('0x1a'),'data2':_0x2b774e[_0x5ed3('0x13')],'data3':_0x2b774e[_0x5ed3('0x11')],'data4':_0x2b774e[_0x5ed3('0x1b')]||null,'role':_0x5ed3('0x12'),'internal':_0x2b774e['accountcode']?_[_0x5ed3('0x1c')](_0x2b774e[_0x5ed3('0x13')]):undefined,'uniqueid':_0x2b774e[_0x5ed3('0x14')]},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0xc58b=['outbound','dialstring','moment','../client','voiceQueueReport','queuecallercompleteAt','CreateMemberReport','voice','isNil','format','SIP/%s','lastAssignedTo','interface','TALKING','queuecallerleaveAt','seconds','inbound','calleridnum','exten','agent','accountcode','toNumber','uniqueid','Request','membername','starttime','endtime','diff'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc58b,0xc6));var _0xbc58=function(_0x310801,_0x10519b){_0x310801=_0x310801-0x0;var _0x41565e=_0xc58b[_0x310801];return _0x41565e;};'use strict';var moment=require(_0xbc58('0x0'));var _=require('lodash');var util=require('util');var client=require(_0xbc58('0x1'));exports[_0xbc58('0x2')]=function(_0x1973b5){var _0x36b127=_0x1973b5[_0xbc58('0x3')]||_0x1973b5['queuecallerexitAt'];return client['Request'](_0xbc58('0x4'),{'body':{'channel':_0xbc58('0x5'),'membername':_0x1973b5['lastAssignedTo'],'interface':_[_0xbc58('0x6')](_0x1973b5['interface'])?util[_0xbc58('0x7')](_0xbc58('0x8'),_0x1973b5[_0xbc58('0x9')]):_0x1973b5[_0xbc58('0xa')],'type':_0xbc58('0xb'),'enterAt':_0x1973b5[_0xbc58('0xc')],'exitAt':_0x36b127,'duration':moment(_0x36b127)['diff'](_0x1973b5[_0xbc58('0xc')],_0xbc58('0xd')),'data1':_0xbc58('0xe'),'data2':_0x1973b5[_0xbc58('0xf')],'data3':_0x1973b5[_0xbc58('0x10')],'data4':null,'data5':_0x1973b5['queue'],'role':_0xbc58('0x11'),'internal':_0x1973b5[_0xbc58('0x12')]?_[_0xbc58('0x13')](_0x1973b5[_0xbc58('0x12')]):undefined,'uniqueid':_0x1973b5[_0xbc58('0x14')]},'log':_0xbc58('0x4')});};exports['voiceDialReport']=function(_0x501d1c){return client[_0xbc58('0x15')]('CreateMemberReport',{'body':{'channel':_0xbc58('0x5'),'membername':_0x501d1c[_0xbc58('0x16')],'interface':_0x501d1c['interface'],'type':'TALKING','enterAt':_0x501d1c[_0xbc58('0x17')],'exitAt':_0x501d1c[_0xbc58('0x18')],'duration':moment(_0x501d1c[_0xbc58('0x18')])[_0xbc58('0x19')](_0x501d1c[_0xbc58('0x17')],_0xbc58('0xd'))>=0x0?moment(_0x501d1c[_0xbc58('0x18')])['diff'](_0x501d1c[_0xbc58('0x17')],_0xbc58('0xd')):null,'data1':_0xbc58('0x1a'),'data2':_0x501d1c[_0xbc58('0x12')],'data3':_0x501d1c[_0xbc58('0x10')],'data4':_0x501d1c[_0xbc58('0x1b')]||null,'role':_0xbc58('0x11'),'internal':_0x501d1c[_0xbc58('0x12')]?_[_0xbc58('0x13')](_0x501d1c[_0xbc58('0x12')]):undefined,'uniqueid':_0x501d1c[_0xbc58('0x14')]},'log':_0xbc58('0x4')});};
\ No newline at end of file
index 48b824e..db32036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc547=['getSettings','ShowSetting','GetSettings'];(function(_0x50457d,_0x1fa83f){var _0x3c144c=function(_0x580732){while(--_0x580732){_0x50457d['push'](_0x50457d['shift']());}};_0x3c144c(++_0x1fa83f);}(_0xc547,0x153));var _0x7c54=function(_0x414e4f,_0x18875f){_0x414e4f=_0x414e4f-0x0;var _0x10839f=_0xc547[_0x414e4f];return _0x10839f;};'use strict';var client=require('../client');exports[_0x7c54('0x0')]=function(){return client['Request'](_0x7c54('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x7c54('0x2')});};
\ No newline at end of file
+var _0x25a8=['ShowSetting','GetSettings','getSettings','Request'];(function(_0x3fb030,_0x12aebe){var _0xd6899b=function(_0x327646){while(--_0x327646){_0x3fb030['push'](_0x3fb030['shift']());}};_0xd6899b(++_0x12aebe);}(_0x25a8,0x126));var _0x825a=function(_0x1e463c,_0x143d39){_0x1e463c=_0x1e463c-0x0;var _0x17f47d=_0x25a8[_0x1e463c];return _0x17f47d;};'use strict';var client=require('../client');exports[_0x825a('0x0')]=function(){return client[_0x825a('0x1')](_0x825a('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x825a('0x3')});};
\ No newline at end of file
index a64d2aa..141a4ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7e8=['name','html','../client','getTemplates','Request','GetTemplate'];(function(_0x1eba52,_0x25fe83){var _0x2ecf9e=function(_0x50690d){while(--_0x50690d){_0x1eba52['push'](_0x1eba52['shift']());}};_0x2ecf9e(++_0x25fe83);}(_0xc7e8,0xc2));var _0x8c7e=function(_0x18f64a,_0x1c8248){_0x18f64a=_0x18f64a-0x0;var _0x44687f=_0xc7e8[_0x18f64a];return _0x44687f;};'use strict';var client=require(_0x8c7e('0x0'));exports[_0x8c7e('0x1')]=function(_0x2a4aac){return function(_0x1e389a){return client[_0x8c7e('0x2')](_0x8c7e('0x3'),{'options':{'raw':!![],'attributes':['id',_0x8c7e('0x4'),_0x8c7e('0x5')]},'log':_0x8c7e('0x3')});};};
\ No newline at end of file
+var _0x5332=['name','html','GetTemplate','../client','Request'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x5332,0x12a));var _0x2533=function(_0x4d9550,_0x353d60){_0x4d9550=_0x4d9550-0x0;var _0x400d4a=_0x5332[_0x4d9550];return _0x400d4a;};'use strict';var client=require(_0x2533('0x0'));exports['getTemplates']=function(_0x2cc37a){return function(_0x412a69){return client[_0x2533('0x1')]('GetTemplate',{'options':{'raw':!![],'attributes':['id',_0x2533('0x2'),_0x2533('0x3')]},'log':_0x2533('0x4')});};};
\ No newline at end of file
index e535ff1..3f7a617 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49ad=['value','Condition','AnyConditions','field','Actions','data1','data3','data4','data5','data6','data7','Request','GetTrigger','channel','status','AllConditions','operator'];(function(_0x4106e1,_0x14ca87){var _0x26d6e9=function(_0x3c6293){while(--_0x3c6293){_0x4106e1['push'](_0x4106e1['shift']());}};_0x26d6e9(++_0x14ca87);}(_0x49ad,0xb5));var _0xd49a=function(_0x5dda79,_0x5b35f1){_0x5dda79=_0x5dda79-0x0;var _0x1c1707=_0x49ad[_0x5dda79];return _0x1c1707;};'use strict';var client=require('../client');exports['getTriggers']=function(_0x1b096c){return function(_0x729557){return client[_0xd49a('0x0')](_0xd49a('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xd49a('0x2'),_0xd49a('0x3')],'include':[{'model':'Condition','as':_0xd49a('0x4'),'attributes':['id','field',_0xd49a('0x5'),_0xd49a('0x6')]},{'model':_0xd49a('0x7'),'as':_0xd49a('0x8'),'attributes':['id',_0xd49a('0x9'),_0xd49a('0x5'),_0xd49a('0x6')]},{'model':'Action','as':_0xd49a('0xa'),'attributes':['id','action',_0xd49a('0xb'),'data2',_0xd49a('0xc'),_0xd49a('0xd'),_0xd49a('0xe'),_0xd49a('0xf'),_0xd49a('0x10')]}]},'log':_0xd49a('0x1')});};};
\ No newline at end of file
+var _0xc215=['getTriggers','Request','GetTrigger','name','channel','Condition','AllConditions','field','value','AnyConditions','action','data1','data2','data3','data4','data6','data7','../client'];(function(_0x3952df,_0x37b836){var _0x2d369f=function(_0x53bfe0){while(--_0x53bfe0){_0x3952df['push'](_0x3952df['shift']());}};_0x2d369f(++_0x37b836);}(_0xc215,0x1e5));var _0x5c21=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xc215[_0x502c7d];return _0x30b7ed;};'use strict';var client=require(_0x5c21('0x0'));exports[_0x5c21('0x1')]=function(_0x51b7a6){return function(_0x4b7a31){return client[_0x5c21('0x2')](_0x5c21('0x3'),{'options':{'raw':![],'attributes':['id',_0x5c21('0x4'),_0x5c21('0x5'),'status'],'include':[{'model':_0x5c21('0x6'),'as':_0x5c21('0x7'),'attributes':['id',_0x5c21('0x8'),'operator',_0x5c21('0x9')]},{'model':'Condition','as':_0x5c21('0xa'),'attributes':['id',_0x5c21('0x8'),'operator',_0x5c21('0x9')]},{'model':'Action','as':'Actions','attributes':['id',_0x5c21('0xb'),_0x5c21('0xc'),_0x5c21('0xd'),_0x5c21('0xe'),_0x5c21('0xf'),'data5',_0x5c21('0x10'),_0x5c21('0x11')]}]},'log':_0x5c21('0x3')});};};
\ No newline at end of file
index 602c1eb..924ea25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x497d=['defaultuser','getTrunks','GetTrunk','name','registry'];(function(_0x3a7cc6,_0x2baf23){var _0x4ce0f4=function(_0x144c11){while(--_0x144c11){_0x3a7cc6['push'](_0x3a7cc6['shift']());}};_0x4ce0f4(++_0x2baf23);}(_0x497d,0x1a0));var _0xd497=function(_0x29ed49,_0x28b785){_0x29ed49=_0x29ed49-0x0;var _0x33211d=_0x497d[_0x29ed49];return _0x33211d;};'use strict';var client=require('../client');exports[_0xd497('0x0')]=function(_0x42fe91){return function(_0x32e158){return client['Request'](_0xd497('0x1'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xd497('0x2'),_0xd497('0x3'),_0xd497('0x4')]},'log':_0xd497('0x1')});};};
\ No newline at end of file
+var _0x7a0a=['registry','defaultuser','../client','getTrunks','Request','GetTrunk','name'];(function(_0x1dde48,_0x1d7b27){var _0x8afbe8=function(_0x300b4f){while(--_0x300b4f){_0x1dde48['push'](_0x1dde48['shift']());}};_0x8afbe8(++_0x1d7b27);}(_0x7a0a,0xc6));var _0xa7a0=function(_0x1fac48,_0x580b26){_0x1fac48=_0x1fac48-0x0;var _0xc28dc0=_0x7a0a[_0x1fac48];return _0xc28dc0;};'use strict';var client=require(_0xa7a0('0x0'));exports[_0xa7a0('0x1')]=function(_0x31685c){return function(_0x422750){return client[_0xa7a0('0x2')](_0xa7a0('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xa7a0('0x4'),_0xa7a0('0x5'),_0xa7a0('0x6')]},'log':_0xa7a0('0x3')});};};
\ No newline at end of file
index 8241f91..d20caa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0xe706,0xa3));var _0x6e70=function(_0x1b79f5,_0x1cf93a){_0x1b79f5=_0x1b79f5-0x0;var _0x26a6f1=_0xe706[_0x1b79f5];return _0x26a6f1;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
+var _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x299a71,_0x19618b){var _0x265708=function(_0x585fbb){while(--_0x585fbb){_0x299a71['push'](_0x299a71['shift']());}};_0x265708(++_0x19618b);}(_0x9c44,0x178));var _0x49c4=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x9c44[_0x4f9b18];return _0x29f20c;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
index 922212c..d8fd96c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5170=['Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport','../client','create'];(function(_0x4e7306,_0x51515f){var _0x403bbe=function(_0x311e60){while(--_0x311e60){_0x4e7306['push'](_0x4e7306['shift']());}};_0x403bbe(++_0x51515f);}(_0x5170,0x14e));var _0x0517=function(_0x490203,_0x2b548e){_0x490203=_0x490203-0x0;var _0x33c716=_0x5170[_0x490203];return _0x33c716;};'use strict';var client=require(_0x0517('0x0'));exports[_0x0517('0x1')]=function(_0x2e8098){return client[_0x0517('0x2')](_0x0517('0x3'),{'body':_0x2e8098,'log':'CreateVoiceAgentReport'});};exports[_0x0517('0x4')]=function(_0x5b3b8a,_0x44e374,_0x3135a0){return client['Request'](_0x0517('0x5'),{'body':_0x5b3b8a,'options':{'where':{'uniqueid':_0x44e374,'interface':_0x3135a0,'agentcomplete':!![]}},'log':_0x0517('0x5')});};
\ No newline at end of file
+var _0xca35=['Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport','../client','create'];(function(_0xe0325,_0x332bbc){var _0xec411b=function(_0xa6e8ce){while(--_0xa6e8ce){_0xe0325['push'](_0xe0325['shift']());}};_0xec411b(++_0x332bbc);}(_0xca35,0x142));var _0x5ca3=function(_0x53f707,_0x51a2f7){_0x53f707=_0x53f707-0x0;var _0x10a9f5=_0xca35[_0x53f707];return _0x10a9f5;};'use strict';var client=require(_0x5ca3('0x0'));exports[_0x5ca3('0x1')]=function(_0x548b50){return client[_0x5ca3('0x2')](_0x5ca3('0x3'),{'body':_0x548b50,'log':_0x5ca3('0x3')});};exports[_0x5ca3('0x4')]=function(_0x20f040,_0x236dde,_0x4702d2){return client['Request'](_0x5ca3('0x5'),{'body':_0x20f040,'options':{'where':{'uniqueid':_0x236dde,'interface':_0x4702d2,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
index e9dc992..7c8201f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5565=['context','callerid','getVoiceCallReports','GetVoiceCallReport','day','format','YYYY-MM-DD\x20HH:mm:ss','type','disposition','duration','GetVoiceCallReports','moment','util','lodash','../client','create','CreateVoiceCallReport','merge','calleridnum'];(function(_0x7692e4,_0x78becb){var _0x160ddd=function(_0xd99f00){while(--_0xd99f00){_0x7692e4['push'](_0x7692e4['shift']());}};_0x160ddd(++_0x78becb);}(_0x5565,0xdc));var _0x5556=function(_0x893f6e,_0x52d816){_0x893f6e=_0x893f6e-0x0;var _0x1fcc55=_0x5565[_0x893f6e];return _0x1fcc55;};'use strict';var moment=require(_0x5556('0x0'));var util=require(_0x5556('0x1'));var _=require(_0x5556('0x2'));var client=require(_0x5556('0x3'));exports[_0x5556('0x4')]=function(_0x321e9c){return client['Request'](_0x5556('0x5'),{'body':_[_0x5556('0x6')](_0x321e9c,{'source':_0x321e9c[_0x5556('0x7')],'destinationcontext':_0x321e9c[_0x5556('0x8')],'callerid':_0x321e9c[_0x5556('0x9')],'amaflags':'DOCUMENTATION'}),'log':_0x5556('0x5')});};exports[_0x5556('0xa')]=function(){return function(){return client['Request'](_0x5556('0xb'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()['startOf'](_0x5556('0xc'))[_0x5556('0xd')](_0x5556('0xe')),moment()['endOf']('day')[_0x5556('0xd')](_0x5556('0xe'))]}},'attributes':[_0x5556('0xf'),_0x5556('0x10'),_0x5556('0x11'),'billableseconds']},'log':_0x5556('0x12')});};};
\ No newline at end of file
+var _0x7711=['calleridnum','context','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','format','YYYY-MM-DD\x20HH:mm:ss','endOf','day','disposition','duration','billableseconds','moment','util','create','Request','merge'];(function(_0x2e2a47,_0x43230a){var _0x45a9e3=function(_0x5dbf29){while(--_0x5dbf29){_0x2e2a47['push'](_0x2e2a47['shift']());}};_0x45a9e3(++_0x43230a);}(_0x7711,0x1f3));var _0x1771=function(_0x149cf5,_0x5c5746){_0x149cf5=_0x149cf5-0x0;var _0x251dbe=_0x7711[_0x149cf5];return _0x251dbe;};'use strict';var moment=require(_0x1771('0x0'));var util=require(_0x1771('0x1'));var _=require('lodash');var client=require('../client');exports[_0x1771('0x2')]=function(_0x31ec01){return client[_0x1771('0x3')]('CreateVoiceCallReport',{'body':_[_0x1771('0x4')](_0x31ec01,{'source':_0x31ec01[_0x1771('0x5')],'destinationcontext':_0x31ec01[_0x1771('0x6')],'callerid':_0x31ec01['callerid'],'amaflags':_0x1771('0x7')}),'log':'CreateVoiceCallReport'});};exports[_0x1771('0x8')]=function(){return function(){return client[_0x1771('0x3')](_0x1771('0x9'),{'options':{'where':{'type':[_0x1771('0xa')],'createdAt':{'$between':[moment()['startOf']('day')[_0x1771('0xb')](_0x1771('0xc')),moment()[_0x1771('0xd')](_0x1771('0xe'))[_0x1771('0xb')](_0x1771('0xc'))]}},'attributes':['type',_0x1771('0xf'),_0x1771('0x10'),_0x1771('0x11')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
index 21c3412..a98697d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28af=['../client','create','CreateVoiceDialReport'];(function(_0x31fc63,_0x2ddb3a){var _0x243857=function(_0xee2a41){while(--_0xee2a41){_0x31fc63['push'](_0x31fc63['shift']());}};_0x243857(++_0x2ddb3a);}(_0x28af,0x153));var _0xf28a=function(_0x12b683,_0x124186){_0x12b683=_0x12b683-0x0;var _0xfb150b=_0x28af[_0x12b683];return _0xfb150b;};'use strict';var client=require(_0xf28a('0x0'));exports[_0xf28a('0x1')]=function(_0x60a4c5){return client['Request'](_0xf28a('0x2'),{'body':_0x60a4c5,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0x49a5=['../client','create','Request','CreateVoiceDialReport'];(function(_0x3bbb31,_0x37f3be){var _0x302c00=function(_0x2c4a6b){while(--_0x2c4a6b){_0x3bbb31['push'](_0x3bbb31['shift']());}};_0x302c00(++_0x37f3be);}(_0x49a5,0x134));var _0x549a=function(_0x49c824,_0x18e9be){_0x49c824=_0x49c824-0x0;var _0x29dc99=_0x49a5[_0x49c824];return _0x29dc99;};'use strict';var client=require(_0x549a('0x0'));exports[_0x549a('0x1')]=function(_0x18c8d7){return client[_0x549a('0x2')](_0x549a('0x3'),{'body':_0x18c8d7,'log':_0x549a('0x3')});};
\ No newline at end of file
index 035e6a9..d67e8b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4b6=['getVoiceExtensions','GetVoiceExtension','exten','../client'];(function(_0x2e1fa5,_0x6c5475){var _0x45ebaf=function(_0x538a54){while(--_0x538a54){_0x2e1fa5['push'](_0x2e1fa5['shift']());}};_0x45ebaf(++_0x6c5475);}(_0xd4b6,0x13f));var _0x6d4b=function(_0x49c46d,_0x260508){_0x49c46d=_0x49c46d-0x0;var _0x46fbf1=_0xd4b6[_0x49c46d];return _0x46fbf1;};'use strict';var client=require(_0x6d4b('0x0'));exports[_0x6d4b('0x1')]=function(){return function(){return client['Request'](_0x6d4b('0x2'),{'options':{'raw':!![],'attributes':['id',_0x6d4b('0x3'),'recordingFormat'],'where':{'VoiceExtensionId':null}},'log':_0x6d4b('0x1')});};};
\ No newline at end of file
+var _0xcbe1=['getVoiceExtensions'];(function(_0x280e6d,_0x2faa92){var _0x493510=function(_0x4318b2){while(--_0x4318b2){_0x280e6d['push'](_0x280e6d['shift']());}};_0x493510(++_0x2faa92);}(_0xcbe1,0x1a2));var _0x1cbe=function(_0x33c8cb,_0x56cff2){_0x33c8cb=_0x33c8cb-0x0;var _0x2d28bb=_0xcbe1[_0x33c8cb];return _0x2d28bb;};'use strict';var client=require('../client');exports[_0x1cbe('0x0')]=function(){return function(){return client['Request']('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id','exten','recordingFormat'],'where':{'VoiceExtensionId':null}},'log':_0x1cbe('0x0')});};};
\ No newline at end of file
index 02366bb..53d0b9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18a6=['dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','getVoiceQueues','Request','GetVoiceQueue','name','acw','autopause','monitor_format','dialActive','dialMethod','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdNumber','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency'];(function(_0x403ca6,_0x4899af){var _0x2083d0=function(_0x4d74eb){while(--_0x4d74eb){_0x403ca6['push'](_0x403ca6['shift']());}};_0x2083d0(++_0x4899af);}(_0x18a6,0x16f));var _0x618a=function(_0x444ab2,_0x180a38){_0x444ab2=_0x444ab2-0x0;var _0x271e80=_0x18a6[_0x444ab2];return _0x271e80;};'use strict';var client=require('../client');exports[_0x618a('0x0')]=function(){return function(){return client[_0x618a('0x1')](_0x618a('0x2'),{'options':{'raw':![],'attributes':['id',_0x618a('0x3'),_0x618a('0x4'),'acwTimeout',_0x618a('0x5'),_0x618a('0x6'),'type',_0x618a('0x7'),_0x618a('0x8'),'dialLimitChannel',_0x618a('0x9'),_0x618a('0xa'),_0x618a('0xb'),_0x618a('0xc'),_0x618a('0xd'),'dialOriginateCallerIdName',_0x618a('0xe'),'dialOriginateTimeout','dialQueueOptions',_0x618a('0xf'),_0x618a('0x10'),_0x618a('0x11'),_0x618a('0x12'),_0x618a('0x13'),_0x618a('0x14'),_0x618a('0x15'),_0x618a('0x16'),_0x618a('0x17'),_0x618a('0x18'),_0x618a('0x19'),_0x618a('0x1a'),_0x618a('0x1b'),_0x618a('0x1c'),_0x618a('0x1d'),'dialAMDGreeting',_0x618a('0x1e'),'dialAMDTotalAnalysisTime',_0x618a('0x1f'),_0x618a('0x20'),_0x618a('0x21'),'dialAMDSilenceThreshold',_0x618a('0x22'),_0x618a('0x23'),_0x618a('0x24'),_0x618a('0x25'),_0x618a('0x26'),_0x618a('0x27'),'dialAgiAfterHangupClient','dialQueueProject2','monitor_format',_0x618a('0x28'),_0x618a('0x29'),_0x618a('0x2a'),_0x618a('0x2b'),_0x618a('0x2c'),_0x618a('0x2d'),_0x618a('0x2e'),_0x618a('0x2f'),_0x618a('0x30'),_0x618a('0x31'),_0x618a('0x32'),_0x618a('0x33'),_0x618a('0x34'),_0x618a('0x35'),_0x618a('0x36'),_0x618a('0x37')],'include':[{'model':_0x618a('0x38'),'as':_0x618a('0x38'),'attributes':['id','name',_0x618a('0x39'),_0x618a('0x3a')]},{'model':_0x618a('0x3b'),'as':_0x618a('0x3c'),'attributes':['id',_0x618a('0x3')]},{'model':_0x618a('0x38'),'as':_0x618a('0x3d'),'attributes':['id',_0x618a('0x3'),_0x618a('0x39'),_0x618a('0x3a')]},{'model':'Interval','as':'Interval','attributes':['id',_0x618a('0x3')],'include':[{'model':_0x618a('0x3e'),'as':_0x618a('0x3f'),'attributes':['id','name',_0x618a('0x40')]}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
+var _0xc0e7=['dialTimezone','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRecallMeTimeout','dialOrderByScheduledAt','strategy','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','Trunk','callerid','mandatoryDispositionPause','TrunkBackup','active','Interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acwTimeout','monitor_format','type','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry'];(function(_0x2fd0f0,_0x4b634e){var _0x57f71a=function(_0x400d6f){while(--_0x400d6f){_0x2fd0f0['push'](_0x2fd0f0['shift']());}};_0x57f71a(++_0x4b634e);}(_0xc0e7,0x197));var _0x7c0e=function(_0x42e664,_0x2b80b6){_0x42e664=_0x42e664-0x0;var _0x3f8b89=_0xc0e7[_0x42e664];return _0x3f8b89;};'use strict';var client=require(_0x7c0e('0x0'));exports[_0x7c0e('0x1')]=function(){return function(){return client[_0x7c0e('0x2')](_0x7c0e('0x3'),{'options':{'raw':![],'attributes':['id',_0x7c0e('0x4'),'acw',_0x7c0e('0x5'),'autopause',_0x7c0e('0x6'),_0x7c0e('0x7'),'dialActive',_0x7c0e('0x8'),_0x7c0e('0x9'),'dialLimitQueue',_0x7c0e('0xa'),_0x7c0e('0xb'),_0x7c0e('0xc'),_0x7c0e('0xd'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0x7c0e('0xe'),_0x7c0e('0xf'),_0x7c0e('0x10'),_0x7c0e('0x11'),_0x7c0e('0x12'),_0x7c0e('0x13'),_0x7c0e('0x14'),_0x7c0e('0x15'),_0x7c0e('0x16'),_0x7c0e('0x17'),_0x7c0e('0x18'),_0x7c0e('0x19'),'dialGlobalInterval',_0x7c0e('0x1a'),_0x7c0e('0x1b'),_0x7c0e('0x1c'),_0x7c0e('0x1d'),'dialAMDGreeting',_0x7c0e('0x1e'),_0x7c0e('0x1f'),_0x7c0e('0x20'),'dialAMDBetweenWordsSilence',_0x7c0e('0x21'),_0x7c0e('0x22'),_0x7c0e('0x23'),'timeout',_0x7c0e('0x24'),'dialRecallInQueue',_0x7c0e('0x25'),'dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2',_0x7c0e('0x6'),_0x7c0e('0x26'),'dialRandomLastDigitCallerIdNumber','dialCutDigit',_0x7c0e('0x27'),_0x7c0e('0x28'),'dialDropMaxRetry',_0x7c0e('0x29'),_0x7c0e('0x2a'),_0x7c0e('0x2b'),_0x7c0e('0x2c'),_0x7c0e('0x2d'),_0x7c0e('0x2e'),'dialAgentRejectRetryFrequency',_0x7c0e('0x2f'),'dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold'],'include':[{'model':_0x7c0e('0x30'),'as':_0x7c0e('0x30'),'attributes':['id',_0x7c0e('0x4'),_0x7c0e('0x31'),'active']},{'model':'Pause','as':_0x7c0e('0x32'),'attributes':['id',_0x7c0e('0x4')]},{'model':'Trunk','as':_0x7c0e('0x33'),'attributes':['id','name','callerid',_0x7c0e('0x34')]},{'model':_0x7c0e('0x35'),'as':_0x7c0e('0x35'),'attributes':['id',_0x7c0e('0x4')],'include':[{'model':_0x7c0e('0x35'),'as':'Intervals','attributes':['id','name','interval']}]}]},'log':_0x7c0e('0x1')});};};
\ No newline at end of file
index 4f8404b..2a914f4 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(_0x1062a4,_0x1edd2a){var _0x3f452d=function(_0x3df766){while(--_0x3df766){_0x1062a4['push'](_0x1062a4['shift']());}};_0x3f452d(++_0x1edd2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'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(_0x2caf7e,_0x30adf9){var _0x56a2a2=function(_0x773e5){while(--_0x773e5){_0x2caf7e['push'](_0x2caf7e['shift']());}};_0x56a2a2(++_0x30adf9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 e1f6c41..ba51b9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x844b=['GetVoiceQueueRtPauses','getVoiceQueueRtPauses','../client','Request'];(function(_0x7bc909,_0x5eb401){var _0x287f9b=function(_0x122b78){while(--_0x122b78){_0x7bc909['push'](_0x7bc909['shift']());}};_0x287f9b(++_0x5eb401);}(_0x844b,0x186));var _0xb844=function(_0x3c6dce,_0x5424dd){_0x3c6dce=_0x3c6dce-0x0;var _0x1450e9=_0x844b[_0x3c6dce];return _0x1450e9;};'use strict';var client=require(_0xb844('0x0'));exports['getVoiceQueueRtPauses']=function(_0x395e73){return function(){return client[_0xb844('0x1')](_0xb844('0x2'),{'options':{'where':{'VoiceQueueId':_0x395e73,'paused':!![]},'raw':!![]},'log':_0xb844('0x3')});};};
\ No newline at end of file
+var _0x951f=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0x59e551,_0x8e9da5){var _0xca7007=function(_0x27dea0){while(--_0x27dea0){_0x59e551['push'](_0x59e551['shift']());}};_0xca7007(++_0x8e9da5);}(_0x951f,0x96));var _0xf951=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x951f[_0x5d6456];return _0x4d66c1;};'use strict';var client=require('../client');exports[_0xf951('0x0')]=function(_0x118c5f){return function(){return client[_0xf951('0x1')](_0xf951('0x2'),{'options':{'where':{'VoiceQueueId':_0x118c5f,'paused':!![]},'raw':!![]},'log':_0xf951('0x0')});};};
\ No newline at end of file
index 6c6b29a..b852506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x2e233a,_0x582dd9){var _0x3228b5=function(_0x11f063){while(--_0x11f063){_0x2e233a['push'](_0x2e233a['shift']());}};_0x3228b5(++_0x582dd9);}(_0x7a54,0x106));var _0x47a5=function(_0x5e9517,_0x1d6b7a){_0x5e9517=_0x5e9517-0x0;var _0x232a0a=_0x7a54[_0x5e9517];return _0x232a0a;};'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(_0x4247c5,_0x4d9b5e){var _0x1411f7=function(_0x1bf616){while(--_0x1bf616){_0x4247c5['push'](_0x4247c5['shift']());}};_0x1411f7(++_0x4d9b5e);}(_0x7a54,0x106));var _0x47a5=function(_0x3caecf,_0x340614){_0x3caecf=_0x3caecf-0x0;var _0x1c4f6f=_0x7a54[_0x3caecf];return _0x1c4f6f;};'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 3149043..0b08ea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabdf=['transfereecontext','transfereelinkedid','blind','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','isexternal','origtransferercontext','origtransfererexten','attended','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transfereraccountcode','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode'];(function(_0x57af30,_0x30919c){var _0x1ad330=function(_0x585b59){while(--_0x585b59){_0x57af30['push'](_0x57af30['shift']());}};_0x1ad330(++_0x30919c);}(_0xabdf,0x8e));var _0xfabd=function(_0x4e2b18,_0x499f5c){_0x4e2b18=_0x4e2b18-0x0;var _0x154835=_0xabdf[_0x4e2b18];return _0x154835;};'use strict';var client=require('../client');exports[_0xfabd('0x0')]={};exports[_0xfabd('0x1')]=function(_0x2faffa){return client[_0xfabd('0x2')](_0xfabd('0x3'),{'body':{'result':_0x2faffa[_0xfabd('0x4')],'transfererchannel':_0x2faffa[_0xfabd('0x5')],'transferercalleridnum':_0x2faffa[_0xfabd('0x6')],'transferercalleridname':_0x2faffa[_0xfabd('0x7')],'transfererconnectedlinenum':_0x2faffa['transfererconnectedlinenum'],'transfererconnectedlinename':_0x2faffa[_0xfabd('0x8')],'transfereraccountcode':_0x2faffa[_0xfabd('0x9')],'transferercontext':_0x2faffa['transferercontext'],'transfererexten':_0x2faffa[_0xfabd('0xa')],'transfererlinkedid':_0x2faffa[_0xfabd('0xb')],'transfereechannel':_0x2faffa[_0xfabd('0xc')],'transfereecalleridnum':_0x2faffa[_0xfabd('0xd')],'transfereecalleridname':_0x2faffa[_0xfabd('0xe')],'transfereeconnectedlinenum':_0x2faffa[_0xfabd('0xf')],'transfereeconnectedlinename':_0x2faffa[_0xfabd('0x10')],'transfereeaccountcode':_0x2faffa[_0xfabd('0x11')],'transfereecontext':_0x2faffa[_0xfabd('0x12')],'transfereeexten':_0x2faffa['transfereeexten'],'transfereelinkedid':_0x2faffa[_0xfabd('0x13')],'isexternal':_0x2faffa['isexternal'],'context':_0x2faffa['context'],'extension':_0x2faffa['extension'],'type':_0xfabd('0x14')},'log':_0xfabd('0x3')});};exports[_0xfabd('0x15')]=function(_0x5d0fc9){return client[_0xfabd('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x5d0fc9[_0xfabd('0x4')],'transfererchannel':_0x5d0fc9[_0xfabd('0x16')],'transferercalleridnum':_0x5d0fc9[_0xfabd('0x17')],'transferercalleridname':_0x5d0fc9[_0xfabd('0x18')],'transfererconnectedlinenum':_0x5d0fc9['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x5d0fc9[_0xfabd('0x19')],'transfereraccountcode':_0x5d0fc9[_0xfabd('0x1a')],'transferercontext':_0x5d0fc9['secondtransferercontext'],'transfererexten':_0x5d0fc9[_0xfabd('0x1b')],'transfererlinkedid':_0x5d0fc9[_0xfabd('0x1c')],'transfereechannel':_0x5d0fc9[_0xfabd('0x1d')],'transfereecalleridnum':_0x5d0fc9[_0xfabd('0x1e')],'transfereecalleridname':_0x5d0fc9['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x5d0fc9[_0xfabd('0x1f')],'transfereeconnectedlinename':_0x5d0fc9['transfertargetconnectedlinename'],'transfereeaccountcode':_0x5d0fc9[_0xfabd('0x20')],'transfereecontext':_0x5d0fc9[_0xfabd('0x21')],'transfereeexten':_0x5d0fc9[_0xfabd('0x22')],'transfereelinkedid':_0x5d0fc9[_0xfabd('0x23')],'isexternal':_0x5d0fc9[_0xfabd('0x24')],'context':_0x5d0fc9[_0xfabd('0x25')],'extension':_0x5d0fc9[_0xfabd('0x26')],'type':_0xfabd('0x27')},'log':_0xfabd('0x3')});};
\ No newline at end of file
+var _0xaca1=['transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','attendedTransfer','Request','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','../client','CreateVoiceTransferReport','result','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfereraccountcode','transfererexten','transfererlinkedid','transfereechannel'];(function(_0xc700b5,_0x14d937){var _0x35ac84=function(_0x4f40b1){while(--_0x4f40b1){_0xc700b5['push'](_0xc700b5['shift']());}};_0x35ac84(++_0x14d937);}(_0xaca1,0xe0));var _0x1aca=function(_0x33b052,_0x5b14b3){_0x33b052=_0x33b052-0x0;var _0x119974=_0xaca1[_0x33b052];return _0x119974;};'use strict';var client=require(_0x1aca('0x0'));exports['transfers']={};exports['blindTransfer']=function(_0x33965c){return client['Request'](_0x1aca('0x1'),{'body':{'result':_0x33965c[_0x1aca('0x2')],'transfererchannel':_0x33965c[_0x1aca('0x3')],'transferercalleridnum':_0x33965c['transferercalleridnum'],'transferercalleridname':_0x33965c[_0x1aca('0x4')],'transfererconnectedlinenum':_0x33965c[_0x1aca('0x5')],'transfererconnectedlinename':_0x33965c['transfererconnectedlinename'],'transfereraccountcode':_0x33965c[_0x1aca('0x6')],'transferercontext':_0x33965c['transferercontext'],'transfererexten':_0x33965c[_0x1aca('0x7')],'transfererlinkedid':_0x33965c[_0x1aca('0x8')],'transfereechannel':_0x33965c[_0x1aca('0x9')],'transfereecalleridnum':_0x33965c[_0x1aca('0xa')],'transfereecalleridname':_0x33965c['transfereecalleridname'],'transfereeconnectedlinenum':_0x33965c[_0x1aca('0xb')],'transfereeconnectedlinename':_0x33965c[_0x1aca('0xc')],'transfereeaccountcode':_0x33965c[_0x1aca('0xd')],'transfereecontext':_0x33965c[_0x1aca('0xe')],'transfereeexten':_0x33965c[_0x1aca('0xf')],'transfereelinkedid':_0x33965c[_0x1aca('0x10')],'isexternal':_0x33965c[_0x1aca('0x11')],'context':_0x33965c[_0x1aca('0x12')],'extension':_0x33965c[_0x1aca('0x13')],'type':_0x1aca('0x14')},'log':_0x1aca('0x1')});};exports[_0x1aca('0x15')]=function(_0x25c3a5){return client[_0x1aca('0x16')](_0x1aca('0x1'),{'body':{'result':_0x25c3a5[_0x1aca('0x2')],'transfererchannel':_0x25c3a5[_0x1aca('0x17')],'transferercalleridnum':_0x25c3a5[_0x1aca('0x18')],'transferercalleridname':_0x25c3a5[_0x1aca('0x19')],'transfererconnectedlinenum':_0x25c3a5['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x25c3a5[_0x1aca('0x1a')],'transfereraccountcode':_0x25c3a5['origtransfereraccountcode'],'transferercontext':_0x25c3a5['secondtransferercontext'],'transfererexten':_0x25c3a5[_0x1aca('0x1b')],'transfererlinkedid':_0x25c3a5['origtransfererlinkedid'],'transfereechannel':_0x25c3a5[_0x1aca('0x1c')],'transfereecalleridnum':_0x25c3a5[_0x1aca('0x1d')],'transfereecalleridname':_0x25c3a5[_0x1aca('0x1e')],'transfereeconnectedlinenum':_0x25c3a5[_0x1aca('0x1f')],'transfereeconnectedlinename':_0x25c3a5[_0x1aca('0x20')],'transfereeaccountcode':_0x25c3a5[_0x1aca('0x21')],'transfereecontext':_0x25c3a5[_0x1aca('0x22')],'transfereeexten':_0x25c3a5[_0x1aca('0x23')],'transfereelinkedid':_0x25c3a5[_0x1aca('0x24')],'isexternal':_0x25c3a5[_0x1aca('0x11')],'context':_0x25c3a5[_0x1aca('0x25')],'extension':_0x25c3a5[_0x1aca('0x26')],'type':'attended'},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
index 4fc5a8e..642c0a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5430=['%s/%s','SIP','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','error','asterisk','ami\x20disconnected','join','pick','keys','module','Reload','Action','then','message','catch','isConnected','username','command','action','Command','voiceQueues','hasOwnProperty','name','strategy','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','unmanaged','abandoned','loggedInDb','type','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','length','omit','undefined','values','channels','voicechannel','map','uniqueid','channel','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','find','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','push','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','resolve','StopMixMonitor','destinationchannel','stop','queueChannels','voicequeuechannel','Channel\x20doesn\x27t\x20exist','voicequeuechannelredirect','exten','context','telephones','trunks','campaigns','run','event','Event\x20name\x20mandatory','emit','server','http','listen','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','bluebird','moment','../ami','format'];(function(_0x5dd6b3,_0x53c8ed){var _0xb616a9=function(_0x1f5786){while(--_0x1f5786){_0x5dd6b3['push'](_0x5dd6b3['shift']());}};_0xb616a9(++_0x53c8ed);}(_0x5430,0x10c));var _0x0543=function(_0x326c8d,_0x61f529){_0x326c8d=_0x326c8d-0x0;var _0x3e8188=_0x5430[_0x326c8d];return _0x3e8188;};'use strict';var _=require(_0x0543('0x0'));var util=require(_0x0543('0x1'));var jayson=require(_0x0543('0x2'));var schema=require(_0x0543('0x3'));var BPromise=require(_0x0543('0x4'));var moment=require(_0x0543('0x5'));var config=require('../../../config/environment');var properties=require('../properties');var ami=require(_0x0543('0x6'));exports['listen']=function(_0x523f3d,_0xce0b65,_0x45b909){return new BPromise(function(_0x9754ba,_0x319568){var _0x46bca7={'QueuePause':function(_0x5ac352){return new Promise(function(_0x372974,_0x7b8280){var _0x2955ea=util[_0x0543('0x7')](_0x0543('0x8'),_0x0543('0x9'),_0x5ac352['name']);if(_0x523f3d[_0x0543('0xa')]&&_0x523f3d[_0x0543('0xa')][_0x2955ea]&&_0x523f3d['timers'][_0x2955ea][_0x0543('0xb')]){_0x523f3d[_0x0543('0xa')][_0x2955ea][_0x0543('0xc')]();}if(_0x523f3d[_0x0543('0xd')][_0x2955ea]){_0x523f3d[_0x0543('0xd')][_0x2955ea][_0x0543('0xe')]({'statePause':_0x5ac352[_0x0543('0xf')]?!![]:![]});}_0x372974({'code':0xc8,'message':_0x0543('0x10')});});},'Reload':function(_0x46d176){var _0x430b4f=this;return new Promise(function(_0x4204db,_0x509afa){if(ami['isConnected']()==![]){return _0x509afa(_0x430b4f[_0x0543('0x11')](0x1f4,[config[_0x0543('0x12')]['ip'],config['asterisk']['username'],_0x0543('0x13')][_0x0543('0x14')]('\x20')));}_0x46d176=_[_0x0543('0x15')](_0x46d176,_[_0x0543('0x16')](properties[_0x0543('0x17')]));_0x46d176['action']=_0x0543('0x18');return ami[_0x0543('0x19')](_0x46d176)[_0x0543('0x1a')](function(_0x25254e){_0x4204db({'code':0xc8,'message':_0x25254e[_0x0543('0x1b')]});})[_0x0543('0x1c')](function(_0x577cf0){_0x509afa(_0x430b4f['error'](0x1f5,_0x577cf0[_0x0543('0x1b')]));});});},'Command':function(_0x5362cb){var _0x50ea84=this;return new Promise(function(_0xbb8816,_0x419913){if(ami[_0x0543('0x1d')]()==![]){return _0x419913(_0x50ea84['error'](0x1f4,[config[_0x0543('0x12')]['ip'],config['asterisk'][_0x0543('0x1e')],_0x0543('0x13')]['join']('\x20')));}_0x5362cb=_[_0x0543('0x15')](_0x5362cb,_0x0543('0x1f'));_0x5362cb[_0x0543('0x20')]=_0x0543('0x21');return ami[_0x0543('0x19')](_0x5362cb)[_0x0543('0x1a')](function(_0x4adba7){_0xbb8816({'code':0xc8,'message':_0x4adba7['content']});})['catch'](function(_0xbfe5dc){_0x419913(_0x50ea84[_0x0543('0x11')](0x1f5,_0xbfe5dc[_0x0543('0x1b')]));});});},'VoiceQueues':function(_0xaf1c0e){return new Promise(function(_0x2b1425,_0x26e500){var _0x36d824=[];for(var _0x17a3de in _0x523f3d[_0x0543('0x22')]){if(_0x523f3d[_0x0543('0x22')][_0x0543('0x23')](_0x17a3de)){var _0x21fc63=_0x523f3d['voiceQueues'][_0x17a3de];var _0x25e6f1={'id':_0x21fc63['id'],'name':_0x21fc63[_0x0543('0x24')],'strategy':_0x21fc63[_0x0543('0x25')],'answered':_0x21fc63['answered'],'available':_0x21fc63[_0x0543('0x26')],'loggedIn':_0x21fc63[_0x0543('0x27')],'pTalking':_0x21fc63[_0x0543('0x28')],'sumBillable':_0x21fc63[_0x0543('0x29')],'sumDuration':_0x21fc63['sumDuration'],'sumHoldTime':_0x21fc63[_0x0543('0x2a')]||0x0,'talking':_0x21fc63[_0x0543('0x2b')],'total':_0x21fc63['total'],'type':_0x21fc63['type'],'unmanaged':_0x21fc63[_0x0543('0x2c')],'abandoned':_0x21fc63[_0x0543('0x2d')],'waiting':_0x21fc63['waiting'],'loggedInDb':_0x21fc63[_0x0543('0x2e')]};if(_0x21fc63[_0x0543('0x2f')]===_0x0543('0x30')){_0x25e6f1[_0x0543('0x31')]=_0x21fc63[_0x0543('0x31')];_0x25e6f1[_0x0543('0x32')]=_0x21fc63[_0x0543('0x32')];_0x25e6f1['dialOriginateCallerIdName']=_0x21fc63[_0x0543('0x33')];_0x25e6f1['dialOriginateCallerIdNumber']=_0x21fc63[_0x0543('0x34')];_0x25e6f1[_0x0543('0x35')]=_0x21fc63[_0x0543('0x35')];_0x25e6f1[_0x0543('0x36')]=_0x21fc63[_0x0543('0x36')];_0x25e6f1['temp']=_0x21fc63[_0x0543('0x37')];_0x25e6f1['outboundAnswerAgiCallsDay']=_0x21fc63[_0x0543('0x38')];_0x25e6f1[_0x0543('0x39')]=_0x21fc63[_0x0543('0x39')];_0x25e6f1[_0x0543('0x3a')]=_0x21fc63['outboundBlacklistCallsDay'];_0x25e6f1[_0x0543('0x3b')]=_0x21fc63['outboundBusyCallsDay'];_0x25e6f1[_0x0543('0x3c')]=_0x21fc63[_0x0543('0x3c')];_0x25e6f1[_0x0543('0x3d')]=_0x21fc63[_0x0543('0x3d')];_0x25e6f1[_0x0543('0x3e')]=_0x21fc63[_0x0543('0x3e')];_0x25e6f1[_0x0543('0x3f')]=_0x21fc63[_0x0543('0x3f')];_0x25e6f1[_0x0543('0x40')]=_0x21fc63[_0x0543('0x40')];_0x25e6f1['outboundNoSuchCallsDay']=_0x21fc63[_0x0543('0x41')];_0x25e6f1[_0x0543('0x42')]=_0x21fc63['outboundOriginateFailureCallsDay'];_0x25e6f1[_0x0543('0x43')]=_0x21fc63['outboundReCallsDay'];_0x25e6f1[_0x0543('0x44')]=_0x21fc63[_0x0543('0x44')];_0x25e6f1['outboundUnknownCallsDay']=_0x21fc63['outboundUnknownCallsDay'];_0x25e6f1[_0x0543('0x45')]=_0x21fc63[_0x0543('0x45')];_0x25e6f1['predictiveIntervalAvgHoldtime']=_0x21fc63[_0x0543('0x46')];_0x25e6f1[_0x0543('0x47')]=_0x21fc63['predictiveIntervalAvgTalktime'];_0x25e6f1[_0x0543('0x48')]=_0x21fc63[_0x0543('0x48')];_0x25e6f1[_0x0543('0x49')]=_0x21fc63[_0x0543('0x49')];_0x25e6f1[_0x0543('0x4a')]=_0x21fc63['predictiveIntervalErlangCalls'];_0x25e6f1['predictiveIntervalErlangCallsDroppedCalls']=_0x21fc63['predictiveIntervalErlangCallsDroppedCalls'];_0x25e6f1[_0x0543('0x4b')]=_0x21fc63[_0x0543('0x4b')];_0x25e6f1[_0x0543('0x4c')]=_0x21fc63[_0x0543('0x4c')];_0x25e6f1['predictiveIntervalPauses']=_0x21fc63[_0x0543('0x4d')];_0x25e6f1[_0x0543('0x4e')]=_0x21fc63[_0x0543('0x4e')];_0x25e6f1[_0x0543('0x4f')]=_0x21fc63[_0x0543('0x4f')];_0x25e6f1[_0x0543('0x1b')]=_0x21fc63[_0x0543('0x1b')];_0x25e6f1['originated']=_0x21fc63[_0x0543('0x50')];_0x25e6f1[_0x0543('0x51')]=_0x21fc63[_0x0543('0x51')];_0x25e6f1[_0x0543('0x52')]=_0x21fc63[_0x0543('0x52')];_0x25e6f1[_0x0543('0x53')]=_0x21fc63['erlangAbandonmentRate'];_0x25e6f1['erlangBusyFactor']=_0x21fc63[_0x0543('0x54')];_0x25e6f1[_0x0543('0x55')]=_0x21fc63[_0x0543('0x55')];_0x25e6f1[_0x0543('0x56')]=_0x21fc63[_0x0543('0x56')];}if(_0x21fc63[_0x0543('0x57')]){_0x25e6f1[_0x0543('0x57')]={'id':_0x21fc63[_0x0543('0x57')]['id'],'name':_0x21fc63[_0x0543('0x57')]['name'],'active':_0x21fc63['Trunk'][_0x0543('0x58')],'callerid':_0x21fc63[_0x0543('0x57')]['callerid']};}if(_0x21fc63['Interval']){_0x25e6f1[_0x0543('0x59')]={'id':_0x21fc63[_0x0543('0x59')]['id'],'name':_0x21fc63['Interval'][_0x0543('0x24')]};}_0x36d824['push'](_0x25e6f1);}}_0x2b1425({'count':_0x36d824[_0x0543('0x5a')],'rows':_0x36d824});});},'UpdateVoiceQueue':function(_0x3e723a){return new Promise(function(_0x4c412b,_0x5e2511){var _0xd95442=_['find'](_0x523f3d[_0x0543('0x22')],{'id':parseInt(_0x3e723a['id'])});var _0x40b2ac=_[_0x0543('0x5b')](_0x3e723a,['id']);if(_0xd95442){for(var _0x270ce0 in _0x40b2ac){if(typeof _0x40b2ac[_0x270ce0]!==_0x0543('0x5c')&&typeof _0xd95442[_0x270ce0]!==_0x0543('0x5c')){_0xd95442[_0x270ce0]=_0x40b2ac[_0x270ce0];}}_0x4c412b(_0xd95442);}else{_0x5e2511();}});},'VoiceChannels':function(_0x5a28a3){return new Promise(function(_0x4236b7,_0x21268c){var _0xb8076c=_[_0x0543('0x5d')](_0x523f3d[_0x0543('0x5e')]);_0x4236b7({'count':_0xb8076c['length'],'rows':_0xb8076c});});},'VoiceChannelMixMonitor':function(_0x29840e){var _0x4e4b75=this;return new Promise(function(_0x183bef,_0x3e8c64){if(ami[_0x0543('0x1d')]()==![]){return _0x3e8c64(_0x4e4b75[_0x0543('0x11')](0x1f4,[config[_0x0543('0x12')]['ip'],config[_0x0543('0x12')]['username'],'ami\x20disconnected']['join']('\x20')));}var _0xc832e2=schema(properties[_0x0543('0x5f')])['validate'](_0x29840e);if(_0xc832e2[_0x0543('0x5a')]>0x0){return _0x3e8c64(_0x4e4b75[_0x0543('0x11')](0x1f4,_[_0x0543('0x60')](_0xc832e2,_0x0543('0x1b'))[_0x0543('0x14')](',\x20')));}var _0x4038a6=_['find'](_0x523f3d[_0x0543('0x5e')],{'uniqueid':_0x29840e[_0x0543('0x61')]});if(_0x4038a6&&_0x4038a6[_0x0543('0x62')]){var _0x416ae0=util[_0x0543('0x7')](_0x0543('0x63'),_0x29840e[_0x0543('0x64')]||_0x29840e[_0x0543('0x61')],_0x29840e[_0x0543('0x7')]||_0x0543('0x65'));return ami[_0x0543('0x19')]({'action':_0x0543('0x66'),'channel':_0x4038a6[_0x0543('0x62')],'file':_0x416ae0,'options':_0x0543('0x67')})['then'](function(_0x14358d){var _0x3c5acc=_[_0x0543('0x68')](_0x4038a6[_0x0543('0x69')],{'filename':_0x0543('0x6a')+_0x416ae0[_0x0543('0x6b')]()});if(_[_0x0543('0x6c')](_0x3c5acc)){_0x4038a6[_0x0543('0x69')][_0x0543('0x6d')]({'filename':_0x0543('0x6a')+_0x416ae0[_0x0543('0x6b')](),'createdAt':moment()[_0x0543('0x7')](_0x0543('0x6e')),'mixmonitorid':_0x14358d[_0x0543('0x6f')],'status':_0x0543('0x70')});}else{_0x3c5acc['mixmonitorid']=_0x14358d[_0x0543('0x6f')];_0x3c5acc[_0x0543('0x71')]='rec';}_0x183bef({'code':0xc8,'message':[_0x29840e[_0x0543('0x61')],_0x0543('0x72'),_0x14358d[_0x0543('0x6f')]]['join']('\x20'),'mixmonitorid':_0x14358d[_0x0543('0x6f')]});})['catch'](function(_0x294a38){_0x3e8c64(_0x4e4b75['error'](0x1f5,[_0x29840e[_0x0543('0x61')],_0x294a38['message'][_0x0543('0x6b')]()][_0x0543('0x14')]('\x20')));});}else{return _0x3e8c64(_0x4e4b75[_0x0543('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x117466){var _0x1a569b=this;return new Promise(function(_0x20ccee,_0xf46956){if(ami[_0x0543('0x1d')]()==![]){return _0xf46956(_0x1a569b[_0x0543('0x11')](0x1f4,[config[_0x0543('0x12')]['ip'],config[_0x0543('0x12')][_0x0543('0x1e')],_0x0543('0x13')][_0x0543('0x14')]('\x20')));}var _0x2ff23a=schema(properties[_0x0543('0x5f')])[_0x0543('0x3')](_0x117466);if(_0x2ff23a[_0x0543('0x5a')]>0x0){return _0xf46956(_0x1a569b['error'](0x1f4,_['map'](_0x2ff23a,_0x0543('0x1b'))[_0x0543('0x14')](',\x20')));}var _0x312d6f=_[_0x0543('0x68')](_0x523f3d[_0x0543('0x5e')],{'uniqueid':_0x117466[_0x0543('0x61')]});if(_0x312d6f){return BPromise[_0x0543('0x73')]()[_0x0543('0x1a')](function(){if(_0x312d6f[_0x0543('0x62')]){return ami['Action']({'action':_0x0543('0x74'),'channel':_0x312d6f[_0x0543('0x62')],'mixmonitorid':_0x117466[_0x0543('0x6f')]})[_0x0543('0x1c')](function(_0x5d7b59){});}})[_0x0543('0x1a')](function(){if(_0x312d6f[_0x0543('0x75')]){return ami[_0x0543('0x19')]({'action':'StopMixMonitor','channel':_0x312d6f['destinationchannel'],'mixmonitorid':_0x117466[_0x0543('0x6f')]})[_0x0543('0x1c')](function(_0x1f44a3){});}})['then'](function(_0x3b9444){var _0x1dfdd7=_[_0x0543('0x68')](_0x312d6f['monitors'],{'mixmonitorid':_0x117466[_0x0543('0x6f')]});if(_0x1dfdd7){_0x1dfdd7[_0x0543('0x71')]=_0x0543('0x76');}})[_0x0543('0x1a')](function(){var _0x2cd2e9=util[_0x0543('0x7')](_0x0543('0x63'),_0x117466[_0x0543('0x64')]||_0x117466[_0x0543('0x61')],_0x117466[_0x0543('0x7')]||_0x0543('0x65'));var _0x6167e6=_[_0x0543('0x68')](_0x312d6f[_0x0543('0x69')],{'filename':'/var/spool/asterisk/monitor/'+_0x2cd2e9['toLowerCase']()});if(_0x6167e6){_0x6167e6[_0x0543('0x71')]=_0x0543('0x76');}})[_0x0543('0x1a')](function(){_0x20ccee({'code':0xc8,'message':[_0x117466[_0x0543('0x61')],'StopMixMonitor\x20Success'][_0x0543('0x14')]('\x20')});})['catch'](function(_0x1e1fc0){_0xf46956(_0x1a569b[_0x0543('0x11')](0x1f5,[_0x117466[_0x0543('0x61')],_0x1e1fc0['message']['toLowerCase']()][_0x0543('0x14')]('\x20')));});}else{return _0xf46956(_0x1a569b['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x30ee35){return new Promise(function(_0x1f26dd,_0xf32305){var _0x314c60=_[_0x0543('0x5d')](_0x523f3d[_0x0543('0x77')]);_0x1f26dd({'count':_0x314c60[_0x0543('0x5a')],'rows':_0x314c60});});},'VoiceQueuesChannel':function(_0x42f249){var _0x236c40=this;return new Promise(function(_0x55bfa5,_0x1b94de){var _0xec2838=schema(properties[_0x0543('0x78')])[_0x0543('0x3')](_0x42f249);if(_0xec2838[_0x0543('0x5a')]>0x0){return _0x1b94de(_0x236c40['error'](0x1f4,_[_0x0543('0x60')](_0xec2838,'message')[_0x0543('0x14')](',\x20')));}var _0x85a666=_[_0x0543('0x68')](_0x523f3d[_0x0543('0x77')],{'uniqueid':_0x42f249['uniqueid']});if(_0x85a666){_0x55bfa5(_0x85a666);}else{return _0x1b94de(_0x236c40[_0x0543('0x11')](0x1f5,_0x0543('0x79')));}});},'VoiceQueuesChannelHangup':function(_0x439121){var _0x534eb7=this;return new Promise(function(_0x3ae9f2,_0x4f5946){if(ami[_0x0543('0x1d')]()==![]){return _0x4f5946(_0x534eb7[_0x0543('0x11')](0x1f4,[config[_0x0543('0x12')]['ip'],config[_0x0543('0x12')][_0x0543('0x1e')],_0x0543('0x13')]['join']('\x20')));}var _0x59f214=schema(properties['voicequeuechannelhangup'])[_0x0543('0x3')](_0x439121);if(_0x59f214[_0x0543('0x5a')]>0x0){return _0x4f5946(_0x534eb7[_0x0543('0x11')](0x1f4,_[_0x0543('0x60')](_0x59f214,_0x0543('0x1b'))[_0x0543('0x14')](',\x20')));}var _0x15a605=_[_0x0543('0x68')](_0x523f3d['queueChannels'],{'uniqueid':_0x439121['uniqueid']});if(_0x15a605&&_0x15a605[_0x0543('0x62')]){return ami[_0x0543('0x19')]({'action':'Hangup','channel':_0x15a605[_0x0543('0x62')]})['then'](function(_0x136760){_0x3ae9f2({'code':0xc8,'message':[_0x439121[_0x0543('0x61')],_0x136760[_0x0543('0x1b')][_0x0543('0x6b')]()][_0x0543('0x14')]('\x20')});})['catch'](function(_0x13c620){_0x4f5946(_0x534eb7[_0x0543('0x11')](0x1f5,[_0x439121['uniqueid'],_0x13c620[_0x0543('0x1b')][_0x0543('0x6b')]()][_0x0543('0x14')]('\x20')));});}else{return _0x4f5946(_0x534eb7['error'](0x1f5,_0x0543('0x79')));}});},'VoiceQueuesChannelRedirect':function(_0x328825){var _0x44d480=this;return new Promise(function(_0x4abf55,_0x18d597){if(ami[_0x0543('0x1d')]()==![]){return _0x18d597(_0x44d480[_0x0543('0x11')](0x1f4,[config[_0x0543('0x12')]['ip'],config['asterisk'][_0x0543('0x1e')],_0x0543('0x13')][_0x0543('0x14')]('\x20')));}var _0x53d3ab=schema(properties[_0x0543('0x7a')])[_0x0543('0x3')](_0x328825);if(_0x53d3ab[_0x0543('0x5a')]>0x0){return _0x18d597(_0x44d480[_0x0543('0x11')](0x1f4,_[_0x0543('0x60')](_0x53d3ab,_0x0543('0x1b'))[_0x0543('0x14')](',\x20')));}var _0xffbbf2=_[_0x0543('0x68')](_0x523f3d[_0x0543('0x77')],{'uniqueid':_0x328825[_0x0543('0x61')]});if(_0xffbbf2&&_0xffbbf2[_0x0543('0x62')]){return ami[_0x0543('0x19')]({'action':'Redirect','channel':_0xffbbf2[_0x0543('0x62')],'exten':_0x328825[_0x0543('0x7b')],'context':_0x328825[_0x0543('0x7c')]||_0xffbbf2[_0x0543('0x7c')],'priority':0x1})[_0x0543('0x1a')](function(_0x768420){_0x4abf55({'code':0xc8,'message':[_0x328825[_0x0543('0x61')],_0x768420[_0x0543('0x1b')][_0x0543('0x6b')]()][_0x0543('0x14')]('\x20')});})[_0x0543('0x1c')](function(_0x4bb8ea){_0x18d597(_0x44d480[_0x0543('0x11')](0x1f5,[_0x328825[_0x0543('0x61')],_0x4bb8ea[_0x0543('0x1b')]['toLowerCase']()][_0x0543('0x14')]('\x20')));});}else{return _0x18d597(_0x44d480['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x46ab3c){return new Promise(function(_0x587f56,_0x110318){var _0xabba9a=_[_0x0543('0x5d')](_0x523f3d[_0x0543('0xd')]);_0x587f56({'count':_0xabba9a['length'],'rows':_0xabba9a});});},'Telephones':function(_0x4bc97b){return new Promise(function(_0x46dc8e,_0x1769d9){var _0x7eafcf=_['values'](_0x523f3d[_0x0543('0x7d')]);_0x46dc8e({'count':_0x7eafcf[_0x0543('0x5a')],'rows':_0x7eafcf});});},'Trunks':function(_0x4cf0ca){return new Promise(function(_0x32a641,_0x146062){var _0x5979d4=_['values'](_0x523f3d[_0x0543('0x7e')]);_0x32a641({'count':_0x5979d4[_0x0543('0x5a')],'rows':_0x5979d4});});},'OutboundChannels':function(_0x28bfe2){return new Promise(function(_0x4e4ec2,_0x32ea5d){var _0x37f54b=_[_0x0543('0x5d')](_0x523f3d['outboundChannels']);_0x4e4ec2({'count':_0x37f54b['length'],'rows':_0x37f54b});});},'Outbound':function(_0x702a00){return new Promise(function(_0xb2a557,_0xc75d33){_0xb2a557(_0x523f3d['outbound']);});},'Campaigns':function(_0x2cf198){return new Promise(function(_0x2403e1,_0x662fdb){var _0x13bd65=_[_0x0543('0x5d')](_0x523f3d[_0x0543('0x7f')]);_0x2403e1({'count':_0x13bd65[_0x0543('0x5a')],'rows':_0x13bd65});});},'VoiceQueuesPreview':function(_0x19eeb5){var _0xefa0a1=this;return new Promise(function(_0x403340,_0xa3bb00){_0xce0b65[_0x0543('0x80')](_0x19eeb5['id'])[_0x0543('0x1a')](function(_0x3d9f3d){_0x403340({'code':0xc8,'message':_0x3d9f3d[_0x0543('0x1b')]});})[_0x0543('0x1c')](function(_0x107350){_0xa3bb00(_0xefa0a1['error'](0x1f4,_0x107350[_0x0543('0x1b')]));});});},'EventManager':function(_0x6e5f4b){var _0x37c82f=this;return new Promise(function(_0x24ec36,_0x4f2319){if(!_0x6e5f4b[_0x0543('0x81')]){return _0x4f2319(_0x37c82f[_0x0543('0x11')](0x1f4,_0x0543('0x82')));}ami[_0x0543('0x83')]('custom:'+_0x6e5f4b[_0x0543('0x81')],_0x6e5f4b[_0x0543('0x1b')]);_0x24ec36({'code':0xc8,'message':_0x6e5f4b});});},'FaxAccounts':function(_0x5cc7f5){return new Promise(function(_0x1db64c,_0x24bc48){var _0x34f06a=_[_0x0543('0x5d')](_0x523f3d['faxAccounts']);_0x1db64c({'count':_0x34f06a[_0x0543('0x5a')],'rows':_0x34f06a});});},'SendFax':function(_0x35ed5f){var _0x28c5ef=this;return new Promise(function(_0x24fca2,_0x2d7617){_0x45b909['send'](_0x35ed5f)[_0x0543('0x1a')](function(_0x384548){_0x24fca2({'code':0xc8,'message':_0x384548['message']});})[_0x0543('0x1c')](function(_0x535601){_0x2d7617(_0x28c5ef[_0x0543('0x11')](0x1f4,_0x535601[_0x0543('0x1b')]));});});},'CheckAfterSend':function(_0x128f67){var _0x15df91=this;return new Promise(function(_0x566e89,_0xf70d9a){_0x45b909['checkAfterSend'](_0x128f67)[_0x0543('0x1a')](function(_0x20eec9){_0x566e89({'code':0xc8,'message':_0x20eec9[_0x0543('0x1b')]});})[_0x0543('0x1c')](function(_0x26d460){_0xf70d9a(_0x15df91[_0x0543('0x11')](0x1f4,_0x26d460[_0x0543('0x1b')]));});});}};var _0x2d1390=jayson[_0x0543('0x84')](_0x46bca7)[_0x0543('0x85')]();_0x2d1390['on'](_0x0543('0x11'),function(_0x57aa7e){return _0x319568(_0x57aa7e);});_0x2d1390[_0x0543('0x86')](0x232a,_0x0543('0x87'),function(){console[_0x0543('0x88')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x9754ba(_0x0543('0x89')+0x232a);});});};
\ No newline at end of file
+var _0xfb11=['undefined','channels','voicechannel','uniqueid','%s.%s','filename','channel','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','map','resolve','StopMixMonitor','destinationchannel','wav','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','exten','values','telephones','trunks','campaigns','event','custom:','faxAccounts','send','server','http','log','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','validate','moment','../properties','listen','format','%s/%s','SIP','name','timers','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','module','action','Reload','then','message','catch','Command','Action','content','voiceQueues','hasOwnProperty','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','type','unmanaged','abandoned','waiting','outbound','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit'];(function(_0x66d6cf,_0x446cdd){var _0x54d0c8=function(_0x3b66dc){while(--_0x3b66dc){_0x66d6cf['push'](_0x66d6cf['shift']());}};_0x54d0c8(++_0x446cdd);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0xfb11[_0x1eda20];return _0x31b953;};'use strict';var _=require(_0x1fb1('0x0'));var util=require('util');var jayson=require(_0x1fb1('0x1'));var schema=require(_0x1fb1('0x2'));var BPromise=require('bluebird');var moment=require(_0x1fb1('0x3'));var config=require('../../../config/environment');var properties=require(_0x1fb1('0x4'));var ami=require('../ami');exports[_0x1fb1('0x5')]=function(_0x2ae20f,_0x5af469,_0x25d44f){return new BPromise(function(_0x133727,_0x4c098d){var _0x1859da={'QueuePause':function(_0x2596c2){return new Promise(function(_0x34e61a,_0x236b20){var _0x161e1b=util[_0x1fb1('0x6')](_0x1fb1('0x7'),_0x1fb1('0x8'),_0x2596c2[_0x1fb1('0x9')]);if(_0x2ae20f[_0x1fb1('0xa')]&&_0x2ae20f['timers'][_0x161e1b]&&_0x2ae20f[_0x1fb1('0xa')][_0x161e1b]['timer']){_0x2ae20f[_0x1fb1('0xa')][_0x161e1b]['updateAcw']();}if(_0x2ae20f[_0x1fb1('0xb')][_0x161e1b]){_0x2ae20f[_0x1fb1('0xb')][_0x161e1b][_0x1fb1('0xc')]({'statePause':_0x2596c2[_0x1fb1('0xd')]?!![]:![]});}_0x34e61a({'code':0xc8,'message':_0x1fb1('0xe')});});},'Reload':function(_0x14f290){var _0x480a89=this;return new Promise(function(_0x18d255,_0xf371e8){if(ami[_0x1fb1('0xf')]()==![]){return _0xf371e8(_0x480a89[_0x1fb1('0x10')](0x1f4,[config[_0x1fb1('0x11')]['ip'],config[_0x1fb1('0x11')][_0x1fb1('0x12')],_0x1fb1('0x13')][_0x1fb1('0x14')]('\x20')));}_0x14f290=_['pick'](_0x14f290,_['keys'](properties[_0x1fb1('0x15')]));_0x14f290[_0x1fb1('0x16')]=_0x1fb1('0x17');return ami['Action'](_0x14f290)[_0x1fb1('0x18')](function(_0x23f1f5){_0x18d255({'code':0xc8,'message':_0x23f1f5[_0x1fb1('0x19')]});})[_0x1fb1('0x1a')](function(_0x33c6b6){_0xf371e8(_0x480a89[_0x1fb1('0x10')](0x1f5,_0x33c6b6[_0x1fb1('0x19')]));});});},'Command':function(_0x373e3c){var _0x4041ea=this;return new Promise(function(_0x5c4169,_0xa6d7b8){if(ami['isConnected']()==![]){return _0xa6d7b8(_0x4041ea['error'](0x1f4,[config[_0x1fb1('0x11')]['ip'],config[_0x1fb1('0x11')][_0x1fb1('0x12')],'ami\x20disconnected'][_0x1fb1('0x14')]('\x20')));}_0x373e3c=_['pick'](_0x373e3c,'command');_0x373e3c['action']=_0x1fb1('0x1b');return ami[_0x1fb1('0x1c')](_0x373e3c)[_0x1fb1('0x18')](function(_0x10924f){_0x5c4169({'code':0xc8,'message':_0x10924f[_0x1fb1('0x1d')]});})['catch'](function(_0x4272c7){_0xa6d7b8(_0x4041ea[_0x1fb1('0x10')](0x1f5,_0x4272c7[_0x1fb1('0x19')]));});});},'VoiceQueues':function(_0x5fc9e6){return new Promise(function(_0x2bc885,_0x1353a4){var _0x3680b5=[];for(var _0x2de1d4 in _0x2ae20f['voiceQueues']){if(_0x2ae20f[_0x1fb1('0x1e')][_0x1fb1('0x1f')](_0x2de1d4)){var _0x46ff60=_0x2ae20f[_0x1fb1('0x1e')][_0x2de1d4];var _0x1898e7={'id':_0x46ff60['id'],'name':_0x46ff60[_0x1fb1('0x9')],'strategy':_0x46ff60[_0x1fb1('0x20')],'answered':_0x46ff60[_0x1fb1('0x21')],'available':_0x46ff60[_0x1fb1('0x22')],'loggedIn':_0x46ff60[_0x1fb1('0x23')],'pTalking':_0x46ff60[_0x1fb1('0x24')],'sumBillable':_0x46ff60[_0x1fb1('0x25')],'sumDuration':_0x46ff60[_0x1fb1('0x26')],'sumHoldTime':_0x46ff60[_0x1fb1('0x27')]||0x0,'talking':_0x46ff60[_0x1fb1('0x28')],'total':_0x46ff60['total'],'type':_0x46ff60[_0x1fb1('0x29')],'unmanaged':_0x46ff60[_0x1fb1('0x2a')],'abandoned':_0x46ff60[_0x1fb1('0x2b')],'waiting':_0x46ff60[_0x1fb1('0x2c')],'loggedInDb':_0x46ff60['loggedInDb']};if(_0x46ff60[_0x1fb1('0x29')]===_0x1fb1('0x2d')){_0x1898e7['dialActive']=_0x46ff60[_0x1fb1('0x2e')];_0x1898e7['dialMethod']=_0x46ff60['dialMethod'];_0x1898e7[_0x1fb1('0x2f')]=_0x46ff60[_0x1fb1('0x2f')];_0x1898e7['dialOriginateCallerIdNumber']=_0x46ff60[_0x1fb1('0x30')];_0x1898e7[_0x1fb1('0x31')]=_0x46ff60[_0x1fb1('0x31')];_0x1898e7[_0x1fb1('0x32')]=_0x46ff60[_0x1fb1('0x32')];_0x1898e7['temp']=_0x46ff60[_0x1fb1('0x33')];_0x1898e7[_0x1fb1('0x34')]=_0x46ff60[_0x1fb1('0x34')];_0x1898e7[_0x1fb1('0x35')]=_0x46ff60[_0x1fb1('0x35')];_0x1898e7[_0x1fb1('0x36')]=_0x46ff60[_0x1fb1('0x36')];_0x1898e7[_0x1fb1('0x37')]=_0x46ff60[_0x1fb1('0x37')];_0x1898e7['outboundCongestionCallsDay']=_0x46ff60[_0x1fb1('0x38')];_0x1898e7['outboundDropCallsDayACS']=_0x46ff60[_0x1fb1('0x39')];_0x1898e7['outboundDropCallsDayCallersExit']=_0x46ff60[_0x1fb1('0x3a')];_0x1898e7['outboundDropCallsDayTimeout']=_0x46ff60['outboundDropCallsDayTimeout'];_0x1898e7[_0x1fb1('0x3b')]=_0x46ff60[_0x1fb1('0x3b')];_0x1898e7[_0x1fb1('0x3c')]=_0x46ff60[_0x1fb1('0x3c')];_0x1898e7['outboundOriginateFailureCallsDay']=_0x46ff60[_0x1fb1('0x3d')];_0x1898e7[_0x1fb1('0x3e')]=_0x46ff60[_0x1fb1('0x3e')];_0x1898e7['outboundRejectCallsDay']=_0x46ff60[_0x1fb1('0x3f')];_0x1898e7[_0x1fb1('0x40')]=_0x46ff60[_0x1fb1('0x40')];_0x1898e7[_0x1fb1('0x41')]=_0x46ff60[_0x1fb1('0x41')];_0x1898e7[_0x1fb1('0x42')]=_0x46ff60[_0x1fb1('0x42')];_0x1898e7['predictiveIntervalAvgTalktime']=_0x46ff60[_0x1fb1('0x43')];_0x1898e7[_0x1fb1('0x44')]=_0x46ff60['predictiveIntervalDroppedCallsCallersExit'];_0x1898e7[_0x1fb1('0x45')]=_0x46ff60['predictiveIntervalDroppedCallsTimeout'];_0x1898e7[_0x1fb1('0x46')]=_0x46ff60[_0x1fb1('0x46')];_0x1898e7[_0x1fb1('0x47')]=_0x46ff60[_0x1fb1('0x47')];_0x1898e7[_0x1fb1('0x48')]=_0x46ff60[_0x1fb1('0x48')];_0x1898e7[_0x1fb1('0x49')]=_0x46ff60[_0x1fb1('0x49')];_0x1898e7[_0x1fb1('0x4a')]=_0x46ff60[_0x1fb1('0x4a')];_0x1898e7[_0x1fb1('0x4b')]=_0x46ff60[_0x1fb1('0x4b')];_0x1898e7[_0x1fb1('0x4c')]=_0x46ff60[_0x1fb1('0x4c')];_0x1898e7[_0x1fb1('0x19')]=_0x46ff60['message'];_0x1898e7[_0x1fb1('0x4d')]=_0x46ff60[_0x1fb1('0x4d')];_0x1898e7[_0x1fb1('0x4e')]=_0x46ff60[_0x1fb1('0x4e')];_0x1898e7['erlangCallToSecond']=_0x46ff60['erlangCallToSecond'];_0x1898e7[_0x1fb1('0x4f')]=_0x46ff60[_0x1fb1('0x4f')];_0x1898e7[_0x1fb1('0x50')]=_0x46ff60[_0x1fb1('0x50')];_0x1898e7[_0x1fb1('0x51')]=_0x46ff60[_0x1fb1('0x51')];_0x1898e7[_0x1fb1('0x52')]=_0x46ff60[_0x1fb1('0x52')];}if(_0x46ff60[_0x1fb1('0x53')]){_0x1898e7[_0x1fb1('0x53')]={'id':_0x46ff60['Trunk']['id'],'name':_0x46ff60[_0x1fb1('0x53')]['name'],'active':_0x46ff60['Trunk'][_0x1fb1('0x54')],'callerid':_0x46ff60[_0x1fb1('0x53')][_0x1fb1('0x55')]};}if(_0x46ff60[_0x1fb1('0x56')]){_0x1898e7['Interval']={'id':_0x46ff60['Interval']['id'],'name':_0x46ff60[_0x1fb1('0x56')][_0x1fb1('0x9')]};}_0x3680b5[_0x1fb1('0x57')](_0x1898e7);}}_0x2bc885({'count':_0x3680b5[_0x1fb1('0x58')],'rows':_0x3680b5});});},'UpdateVoiceQueue':function(_0x363cb9){return new Promise(function(_0x396c1e,_0x361ad7){var _0x293bdb=_[_0x1fb1('0x59')](_0x2ae20f['voiceQueues'],{'id':parseInt(_0x363cb9['id'])});var _0x596866=_[_0x1fb1('0x5a')](_0x363cb9,['id']);if(_0x293bdb){for(var _0x5687b6 in _0x596866){if(typeof _0x596866[_0x5687b6]!==_0x1fb1('0x5b')&&typeof _0x293bdb[_0x5687b6]!==_0x1fb1('0x5b')){_0x293bdb[_0x5687b6]=_0x596866[_0x5687b6];}}_0x396c1e(_0x293bdb);}else{_0x361ad7();}});},'VoiceChannels':function(_0x103560){return new Promise(function(_0x467bf1,_0x3c37af){var _0x3c3fbf=_['values'](_0x2ae20f[_0x1fb1('0x5c')]);_0x467bf1({'count':_0x3c3fbf[_0x1fb1('0x58')],'rows':_0x3c3fbf});});},'VoiceChannelMixMonitor':function(_0x2029a9){var _0x4883dd=this;return new Promise(function(_0x242055,_0x4861b4){if(ami[_0x1fb1('0xf')]()==![]){return _0x4861b4(_0x4883dd[_0x1fb1('0x10')](0x1f4,[config[_0x1fb1('0x11')]['ip'],config['asterisk'][_0x1fb1('0x12')],_0x1fb1('0x13')]['join']('\x20')));}var _0xe492ab=schema(properties[_0x1fb1('0x5d')])[_0x1fb1('0x2')](_0x2029a9);if(_0xe492ab['length']>0x0){return _0x4861b4(_0x4883dd['error'](0x1f4,_['map'](_0xe492ab,_0x1fb1('0x19'))[_0x1fb1('0x14')](',\x20')));}var _0x1e2754=_[_0x1fb1('0x59')](_0x2ae20f[_0x1fb1('0x5c')],{'uniqueid':_0x2029a9[_0x1fb1('0x5e')]});if(_0x1e2754&&_0x1e2754['channel']){var _0x556529=util[_0x1fb1('0x6')](_0x1fb1('0x5f'),_0x2029a9[_0x1fb1('0x60')]||_0x2029a9[_0x1fb1('0x5e')],_0x2029a9['format']||'wav');return ami[_0x1fb1('0x1c')]({'action':'MixMonitor','channel':_0x1e2754[_0x1fb1('0x61')],'file':_0x556529,'options':'ai(mixmonitorid)'})[_0x1fb1('0x18')](function(_0x5ad2be){var _0x12a42d=_[_0x1fb1('0x59')](_0x1e2754[_0x1fb1('0x62')],{'filename':_0x1fb1('0x63')+_0x556529[_0x1fb1('0x64')]()});if(_['isNil'](_0x12a42d)){_0x1e2754['monitors'][_0x1fb1('0x57')]({'filename':_0x1fb1('0x63')+_0x556529['toLowerCase'](),'createdAt':moment()['format'](_0x1fb1('0x65')),'mixmonitorid':_0x5ad2be[_0x1fb1('0x66')],'status':_0x1fb1('0x67')});}else{_0x12a42d[_0x1fb1('0x66')]=_0x5ad2be[_0x1fb1('0x66')];_0x12a42d[_0x1fb1('0x68')]='rec';}_0x242055({'code':0xc8,'message':[_0x2029a9[_0x1fb1('0x5e')],_0x1fb1('0x69'),_0x5ad2be[_0x1fb1('0x66')]][_0x1fb1('0x14')]('\x20'),'mixmonitorid':_0x5ad2be[_0x1fb1('0x66')]});})[_0x1fb1('0x1a')](function(_0x32899f){_0x4861b4(_0x4883dd['error'](0x1f5,[_0x2029a9[_0x1fb1('0x5e')],_0x32899f[_0x1fb1('0x19')][_0x1fb1('0x64')]()]['join']('\x20')));});}else{return _0x4861b4(_0x4883dd[_0x1fb1('0x10')](0x1f5,_0x1fb1('0x6a')));}});},'VoiceChannelStopMixMonitor':function(_0xeeb8ce){var _0x5ecccb=this;return new Promise(function(_0x1b924e,_0x2b232b){if(ami[_0x1fb1('0xf')]()==![]){return _0x2b232b(_0x5ecccb[_0x1fb1('0x10')](0x1f4,[config[_0x1fb1('0x11')]['ip'],config[_0x1fb1('0x11')]['username'],'ami\x20disconnected'][_0x1fb1('0x14')]('\x20')));}var _0x1d7478=schema(properties[_0x1fb1('0x5d')])[_0x1fb1('0x2')](_0xeeb8ce);if(_0x1d7478[_0x1fb1('0x58')]>0x0){return _0x2b232b(_0x5ecccb[_0x1fb1('0x10')](0x1f4,_[_0x1fb1('0x6b')](_0x1d7478,'message')[_0x1fb1('0x14')](',\x20')));}var _0x455c60=_[_0x1fb1('0x59')](_0x2ae20f[_0x1fb1('0x5c')],{'uniqueid':_0xeeb8ce[_0x1fb1('0x5e')]});if(_0x455c60){return BPromise[_0x1fb1('0x6c')]()['then'](function(){if(_0x455c60[_0x1fb1('0x61')]){return ami[_0x1fb1('0x1c')]({'action':_0x1fb1('0x6d'),'channel':_0x455c60[_0x1fb1('0x61')],'mixmonitorid':_0xeeb8ce[_0x1fb1('0x66')]})['catch'](function(_0x441fcb){});}})[_0x1fb1('0x18')](function(){if(_0x455c60['destinationchannel']){return ami[_0x1fb1('0x1c')]({'action':'StopMixMonitor','channel':_0x455c60[_0x1fb1('0x6e')],'mixmonitorid':_0xeeb8ce[_0x1fb1('0x66')]})[_0x1fb1('0x1a')](function(_0x3b52a7){});}})['then'](function(_0x20cf7b){var _0x3fda2b=_[_0x1fb1('0x59')](_0x455c60[_0x1fb1('0x62')],{'mixmonitorid':_0xeeb8ce['mixmonitorid']});if(_0x3fda2b){_0x3fda2b[_0x1fb1('0x68')]='stop';}})[_0x1fb1('0x18')](function(){var _0x7e06e8=util['format'](_0x1fb1('0x5f'),_0xeeb8ce[_0x1fb1('0x60')]||_0xeeb8ce[_0x1fb1('0x5e')],_0xeeb8ce[_0x1fb1('0x6')]||_0x1fb1('0x6f'));var _0x2f50bf=_[_0x1fb1('0x59')](_0x455c60['monitors'],{'filename':_0x1fb1('0x63')+_0x7e06e8[_0x1fb1('0x64')]()});if(_0x2f50bf){_0x2f50bf['status']='stop';}})[_0x1fb1('0x18')](function(){_0x1b924e({'code':0xc8,'message':[_0xeeb8ce[_0x1fb1('0x5e')],_0x1fb1('0x70')][_0x1fb1('0x14')]('\x20')});})[_0x1fb1('0x1a')](function(_0x26715b){_0x2b232b(_0x5ecccb[_0x1fb1('0x10')](0x1f5,[_0xeeb8ce['uniqueid'],_0x26715b[_0x1fb1('0x19')][_0x1fb1('0x64')]()][_0x1fb1('0x14')]('\x20')));});}else{return _0x2b232b(_0x5ecccb[_0x1fb1('0x10')](0x1f5,_0x1fb1('0x6a')));}});},'VoiceQueuesChannels':function(_0x29c42d){return new Promise(function(_0x3c0873,_0x3236df){var _0x36e568=_['values'](_0x2ae20f[_0x1fb1('0x71')]);_0x3c0873({'count':_0x36e568[_0x1fb1('0x58')],'rows':_0x36e568});});},'VoiceQueuesChannel':function(_0x557305){var _0x4c33ce=this;return new Promise(function(_0x1416d8,_0x148fb5){var _0x5931a7=schema(properties[_0x1fb1('0x72')])[_0x1fb1('0x2')](_0x557305);if(_0x5931a7[_0x1fb1('0x58')]>0x0){return _0x148fb5(_0x4c33ce[_0x1fb1('0x10')](0x1f4,_[_0x1fb1('0x6b')](_0x5931a7,_0x1fb1('0x19'))[_0x1fb1('0x14')](',\x20')));}var _0x33fe10=_[_0x1fb1('0x59')](_0x2ae20f[_0x1fb1('0x71')],{'uniqueid':_0x557305[_0x1fb1('0x5e')]});if(_0x33fe10){_0x1416d8(_0x33fe10);}else{return _0x148fb5(_0x4c33ce[_0x1fb1('0x10')](0x1f5,_0x1fb1('0x6a')));}});},'VoiceQueuesChannelHangup':function(_0x200555){var _0x2b4e97=this;return new Promise(function(_0x2912b6,_0x41099c){if(ami[_0x1fb1('0xf')]()==![]){return _0x41099c(_0x2b4e97[_0x1fb1('0x10')](0x1f4,[config[_0x1fb1('0x11')]['ip'],config[_0x1fb1('0x11')]['username'],'ami\x20disconnected'][_0x1fb1('0x14')]('\x20')));}var _0x4d0c20=schema(properties[_0x1fb1('0x73')])[_0x1fb1('0x2')](_0x200555);if(_0x4d0c20['length']>0x0){return _0x41099c(_0x2b4e97['error'](0x1f4,_['map'](_0x4d0c20,'message')[_0x1fb1('0x14')](',\x20')));}var _0x21679f=_[_0x1fb1('0x59')](_0x2ae20f[_0x1fb1('0x71')],{'uniqueid':_0x200555[_0x1fb1('0x5e')]});if(_0x21679f&&_0x21679f[_0x1fb1('0x61')]){return ami[_0x1fb1('0x1c')]({'action':_0x1fb1('0x74'),'channel':_0x21679f['channel']})['then'](function(_0x45dc47){_0x2912b6({'code':0xc8,'message':[_0x200555[_0x1fb1('0x5e')],_0x45dc47[_0x1fb1('0x19')][_0x1fb1('0x64')]()][_0x1fb1('0x14')]('\x20')});})[_0x1fb1('0x1a')](function(_0xf328b2){_0x41099c(_0x2b4e97[_0x1fb1('0x10')](0x1f5,[_0x200555[_0x1fb1('0x5e')],_0xf328b2[_0x1fb1('0x19')]['toLowerCase']()][_0x1fb1('0x14')]('\x20')));});}else{return _0x41099c(_0x2b4e97[_0x1fb1('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x320371){var _0x3fd837=this;return new Promise(function(_0x48e66f,_0x1761e0){if(ami[_0x1fb1('0xf')]()==![]){return _0x1761e0(_0x3fd837[_0x1fb1('0x10')](0x1f4,[config[_0x1fb1('0x11')]['ip'],config['asterisk'][_0x1fb1('0x12')],_0x1fb1('0x13')]['join']('\x20')));}var _0x1476bf=schema(properties['voicequeuechannelredirect'])['validate'](_0x320371);if(_0x1476bf[_0x1fb1('0x58')]>0x0){return _0x1761e0(_0x3fd837[_0x1fb1('0x10')](0x1f4,_[_0x1fb1('0x6b')](_0x1476bf,_0x1fb1('0x19'))[_0x1fb1('0x14')](',\x20')));}var _0xba3cb3=_['find'](_0x2ae20f[_0x1fb1('0x71')],{'uniqueid':_0x320371[_0x1fb1('0x5e')]});if(_0xba3cb3&&_0xba3cb3[_0x1fb1('0x61')]){return ami[_0x1fb1('0x1c')]({'action':'Redirect','channel':_0xba3cb3[_0x1fb1('0x61')],'exten':_0x320371[_0x1fb1('0x75')],'context':_0x320371['context']||_0xba3cb3['context'],'priority':0x1})[_0x1fb1('0x18')](function(_0x397388){_0x48e66f({'code':0xc8,'message':[_0x320371[_0x1fb1('0x5e')],_0x397388[_0x1fb1('0x19')]['toLowerCase']()][_0x1fb1('0x14')]('\x20')});})['catch'](function(_0x53dd03){_0x1761e0(_0x3fd837['error'](0x1f5,[_0x320371['uniqueid'],_0x53dd03[_0x1fb1('0x19')][_0x1fb1('0x64')]()][_0x1fb1('0x14')]('\x20')));});}else{return _0x1761e0(_0x3fd837[_0x1fb1('0x10')](0x1f5,_0x1fb1('0x6a')));}});},'Agents':function(_0x27f6ef){return new Promise(function(_0x5acf57,_0x410402){var _0x29e6e1=_[_0x1fb1('0x76')](_0x2ae20f[_0x1fb1('0xb')]);_0x5acf57({'count':_0x29e6e1[_0x1fb1('0x58')],'rows':_0x29e6e1});});},'Telephones':function(_0x212713){return new Promise(function(_0x4fd426,_0x3c94b9){var _0x1d2113=_[_0x1fb1('0x76')](_0x2ae20f[_0x1fb1('0x77')]);_0x4fd426({'count':_0x1d2113[_0x1fb1('0x58')],'rows':_0x1d2113});});},'Trunks':function(_0x4abfb7){return new Promise(function(_0x38db30,_0x4be09a){var _0x426226=_[_0x1fb1('0x76')](_0x2ae20f[_0x1fb1('0x78')]);_0x38db30({'count':_0x426226[_0x1fb1('0x58')],'rows':_0x426226});});},'OutboundChannels':function(_0x4bc127){return new Promise(function(_0x5087de,_0x5b652e){var _0x3ffb18=_['values'](_0x2ae20f['outboundChannels']);_0x5087de({'count':_0x3ffb18[_0x1fb1('0x58')],'rows':_0x3ffb18});});},'Outbound':function(_0x35f7d5){return new Promise(function(_0x194aee,_0x283594){_0x194aee(_0x2ae20f[_0x1fb1('0x2d')]);});},'Campaigns':function(_0x438b6a){return new Promise(function(_0x47a193,_0x1a605c){var _0x38444c=_[_0x1fb1('0x76')](_0x2ae20f[_0x1fb1('0x79')]);_0x47a193({'count':_0x38444c[_0x1fb1('0x58')],'rows':_0x38444c});});},'VoiceQueuesPreview':function(_0xd07208){var _0x339300=this;return new Promise(function(_0x35c948,_0x2ac3bd){_0x5af469['run'](_0xd07208['id'])[_0x1fb1('0x18')](function(_0x10fcc6){_0x35c948({'code':0xc8,'message':_0x10fcc6[_0x1fb1('0x19')]});})[_0x1fb1('0x1a')](function(_0x360f8f){_0x2ac3bd(_0x339300['error'](0x1f4,_0x360f8f[_0x1fb1('0x19')]));});});},'EventManager':function(_0x553d2e){var _0x3e19e4=this;return new Promise(function(_0x5f2246,_0x4eed3d){if(!_0x553d2e[_0x1fb1('0x7a')]){return _0x4eed3d(_0x3e19e4['error'](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0x1fb1('0x7b')+_0x553d2e['event'],_0x553d2e[_0x1fb1('0x19')]);_0x5f2246({'code':0xc8,'message':_0x553d2e});});},'FaxAccounts':function(_0x1e4066){return new Promise(function(_0x23cc74,_0xe8fad1){var _0x10c6fc=_['values'](_0x2ae20f[_0x1fb1('0x7c')]);_0x23cc74({'count':_0x10c6fc[_0x1fb1('0x58')],'rows':_0x10c6fc});});},'SendFax':function(_0x377741){var _0xe95d69=this;return new Promise(function(_0x391ae1,_0x5429a9){_0x25d44f[_0x1fb1('0x7d')](_0x377741)[_0x1fb1('0x18')](function(_0x613233){_0x391ae1({'code':0xc8,'message':_0x613233[_0x1fb1('0x19')]});})[_0x1fb1('0x1a')](function(_0x2136f7){_0x5429a9(_0xe95d69['error'](0x1f4,_0x2136f7['message']));});});},'CheckAfterSend':function(_0x8be954){var _0x3116c7=this;return new Promise(function(_0xcf63c7,_0x3c7a75){_0x25d44f['checkAfterSend'](_0x8be954)[_0x1fb1('0x18')](function(_0x278c09){_0xcf63c7({'code':0xc8,'message':_0x278c09[_0x1fb1('0x19')]});})[_0x1fb1('0x1a')](function(_0x2f5947){_0x3c7a75(_0x3116c7['error'](0x1f4,_0x2f5947[_0x1fb1('0x19')]));});});}};var _0x38548d=jayson[_0x1fb1('0x7e')](_0x1859da)[_0x1fb1('0x7f')]();_0x38548d['on'](_0x1fb1('0x10'),function(_0x49a091){return _0x4c098d(_0x49a091);});_0x38548d[_0x1fb1('0x5')](0x232a,'127.0.0.1',function(){console[_0x1fb1('0x80')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x133727(_0x1fb1('0x81')+0x232a);});});};
\ No newline at end of file
index 7a1be8a..2957e65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['data1','data2','data5','xmd-contactid','data3','split','phone','destcalleridnum','calleridnum','firstName','fax','ListId','scheduledAt','updatedAt','union','resolve','then','getContacts','isEmpty','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','routeId','calleridname','<unknown>','Unknown','destcalleridname','push','user:%s','format','trigger:%s','action','toLowerCase','merge','length','lodash','bluebird','ioredis','util','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','info'];(function(_0x23db84,_0x4a0b04){var _0x3f478e=function(_0x49e4a7){while(--_0x49e4a7){_0x23db84['push'](_0x23db84['shift']());}};_0x3f478e(++_0x4a0b04);}(_0xb903,0x185));var _0x3b90=function(_0x412d73,_0x3b1a56){_0x412d73=_0x412d73-0x0;var _0x30b22a=_0xb903[_0x412d73];return _0x30b22a;};'use strict';var _=require(_0x3b90('0x0'));var BPromise=require(_0x3b90('0x1'));var Redis=require(_0x3b90('0x2'));var util=require(_0x3b90('0x3'));var config=require('../../../../config/environment');var logger=require(_0x3b90('0x4'))(_0x3b90('0x5'));var cmContactRpc=require(_0x3b90('0x6'));config[_0x3b90('0x7')]=_[_0x3b90('0x8')](config[_0x3b90('0x7')],{'host':_0x3b90('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3b90('0x7')]));function emit(_0x5e845a,_0x55792c,_0x153283,_0x2e4c06,_0x42efe8){logger[_0x3b90('0xa')]('[CM][%s][%s]',_0x5e845a,_0x55792c['id'],_0x153283,_0x2e4c06,JSON['stringify'](_0x42efe8));io['to'](_0x153283)['emit'](_0x2e4c06,_0x42efe8);}exports['exec']=function(_0x56261b,_0x55db3f,_0x336913,_0x5af39c){var _0x574955,_0x30c49c;var _0x233509={};var _0x4bb8f4=Number(_0x336913[_0x3b90('0xb')]);var _0x174c0d=_0x336913[_0x3b90('0xc')]?Boolean(Number(_0x336913['data2'])):![];var _0x5447df;var _0x58c4d1=![];if(!_['isNil'](_0x336913['data5'])){if(_0x336913[_0x3b90('0xd')]=='1')_0x58c4d1=!![];}if(!_0x58c4d1){if(_0x5af39c[_0x3b90('0xe')]){_0x233509['id']=_0x5af39c['xmd-contactid'];}}if(!_0x233509['id']){_0x233509['ListId']=_0x4bb8f4;_0x5447df=_0x336913[_0x3b90('0xf')]&&_0x336913[_0x3b90('0xf')]!=='0'?_0x336913[_0x3b90('0xf')][_0x3b90('0x10')](','):[_0x3b90('0x11')];_0x233509['$or']=_['map'](_0x5447df,function(_0xd83280){var _0x5420dc={};_0x5420dc[_0xd83280]=_0x5af39c['routeId']?_0x5af39c[_0x3b90('0x12')]:_0x5af39c[_0x3b90('0x13')];return _0x5420dc;});}var _0x11ad7d=['id',_0x3b90('0x14'),'lastName',_0x3b90('0x11'),'mobile',_0x3b90('0x15'),_0x3b90('0x16'),'createdAt',_0x3b90('0x17'),_0x3b90('0x18')];var _0x3642c0=_[_0x3b90('0x19')](_0x11ad7d,_0x5447df);BPromise[_0x3b90('0x1a')]()[_0x3b90('0x1b')](cmContactRpc[_0x3b90('0x1c')]({'attributes':_0x3642c0,'where':_0x233509}))[_0x3b90('0x1b')](function(_0xa98414){_0x30c49c=_0xa98414;if(!_[_0x3b90('0x1d')](_0x30c49c)){if(_0x30c49c['length']===0x1){_0x574955=_0x30c49c[0x0];logger[_0x3b90('0xa')](_0x3b90('0x1e'),_0x5af39c[_0x3b90('0x1f')],_0x55db3f['id'],_0x574955['id']);}else{logger[_0x3b90('0xa')](_0x3b90('0x20'),_0x5af39c[_0x3b90('0x1f')],_0x55db3f['id'],_['map'](_0x30c49c,'id')['join'](','));}return;}else{logger[_0x3b90('0xa')](_0x3b90('0x21'),_0x5af39c[_0x3b90('0x1f')],_0x55db3f['id']);var _0x2ffa1a={'ListId':_0x4bb8f4};var _0x583523=_0x336913[_0x3b90('0x22')]&&_0x336913[_0x3b90('0x22')]!=='0'?_0x336913[_0x3b90('0x22')]:'phone';if(_0x174c0d){logger[_0x3b90('0xa')](_0x3b90('0x23'),_0x5af39c[_0x3b90('0x1f')],_0x55db3f['id']);_0x2ffa1a[_0x583523]=_[_0x3b90('0x24')](_0x5af39c[_0x3b90('0x25')])?_0x5af39c[_0x3b90('0x13')]:_0x5af39c['destcalleridnum'];if(_[_0x3b90('0x24')](_0x5af39c['routeId'])){_0x2ffa1a[_0x3b90('0x14')]=_0x5af39c[_0x3b90('0x26')]&&_0x5af39c[_0x3b90('0x26')]!==_0x3b90('0x27')?_0x5af39c[_0x3b90('0x26')]:_0x3b90('0x28');}else{_0x2ffa1a[_0x3b90('0x14')]=_0x5af39c[_0x3b90('0x29')]&&_0x5af39c['destcalleridname']!=='<unknown>'?_0x5af39c[_0x3b90('0x29')]:_0x3b90('0x28');}return BPromise[_0x3b90('0x1a')]()[_0x3b90('0x1b')](cmContactRpc['createContact'](_0x2ffa1a))['then'](function(_0xd33ac9){_0x574955=_0xd33ac9;_0x30c49c[_0x3b90('0x2a')](_0xd33ac9);if(_0x574955){logger[_0x3b90('0xa')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x5af39c[_0x3b90('0x1f')],_0x55db3f['id'],_0x574955['id']);}return;});}else{logger['info']('[CM][%s][%s]\x20Autocreate\x20disabled',_0x5af39c[_0x3b90('0x1f')],_0x55db3f['id']);_0x2ffa1a[_0x583523]=_[_0x3b90('0x24')](_0x5af39c['routeId'])?_0x5af39c[_0x3b90('0x13')]:_0x5af39c[_0x3b90('0x12')];if(_[_0x3b90('0x24')](_0x5af39c['routeId'])){_0x2ffa1a['firstName']=_0x5af39c[_0x3b90('0x26')]&&_0x5af39c[_0x3b90('0x26')]!==_0x3b90('0x27')?_0x5af39c[_0x3b90('0x26')]:'Unknown';}else{_0x2ffa1a['firstName']=_0x5af39c[_0x3b90('0x29')]&&_0x5af39c[_0x3b90('0x29')]!=='<unknown>'?_0x5af39c['destcalleridname']:_0x3b90('0x28');}_0x574955=_0x2ffa1a;_0x30c49c[_0x3b90('0x2a')](_0x2ffa1a);return;}}})[_0x3b90('0x1b')](function(){if(_0x56261b){emit(_0x5af39c[_0x3b90('0x1f')],_0x55db3f,util['format'](_0x3b90('0x2b'),_0x56261b['name']),util[_0x3b90('0x2c')](_0x3b90('0x2d'),_0x336913[_0x3b90('0x2e')][_0x3b90('0x2f')]()),{'evt':_[_0x3b90('0x30')](_0x5af39c,{'autoCreate':_0x174c0d}),'contact':_0x574955===undefined?{}:_0x574955,'contacts':_0x30c49c[_0x3b90('0x31')]===0x0?undefined:_0x30c49c});}});};
\ No newline at end of file
+var _0x24f1=['ioredis','util','../../../../config/environment','../../../../config/logger','trigger','redis','defaults','info','emit','data2','xmd-contactid','ListId','data3','phone','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','fax','scheduledAt','updatedAt','union','resolve','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','calleridname','destcalleridname','Unknown','then','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','<unknown>','format','user:%s','trigger:%s','action','merge','lodash'];(function(_0x3216cc,_0x5e04b3){var _0x308340=function(_0x4057b8){while(--_0x4057b8){_0x3216cc['push'](_0x3216cc['shift']());}};_0x308340(++_0x5e04b3);}(_0x24f1,0x65));var _0x124f=function(_0x3242cf,_0x3685cc){_0x3242cf=_0x3242cf-0x0;var _0x19abec=_0x24f1[_0x3242cf];return _0x19abec;};'use strict';var _=require(_0x124f('0x0'));var BPromise=require('bluebird');var Redis=require(_0x124f('0x1'));var util=require(_0x124f('0x2'));var config=require(_0x124f('0x3'));var logger=require(_0x124f('0x4'))(_0x124f('0x5'));var cmContactRpc=require('../../rpc/cmContact');config[_0x124f('0x6')]=_[_0x124f('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x527d7d,_0x2d76f6,_0x553586,_0x311018,_0x132d1b){logger[_0x124f('0x8')]('[CM][%s][%s]',_0x527d7d,_0x2d76f6['id'],_0x553586,_0x311018,JSON['stringify'](_0x132d1b));io['to'](_0x553586)[_0x124f('0x9')](_0x311018,_0x132d1b);}exports['exec']=function(_0x2a3602,_0x52e14b,_0x22b8d5,_0x3d5e10){var _0x14e81f,_0x3df35c;var _0x10989d={};var _0x50569e=Number(_0x22b8d5['data1']);var _0x1654bf=_0x22b8d5[_0x124f('0xa')]?Boolean(Number(_0x22b8d5[_0x124f('0xa')])):![];var _0x39283b;if(_0x3d5e10[_0x124f('0xb')]){_0x10989d['id']=_0x3d5e10[_0x124f('0xb')];}if(!_0x10989d['id']){_0x10989d[_0x124f('0xc')]=_0x50569e;_0x39283b=_0x22b8d5[_0x124f('0xd')]&&_0x22b8d5[_0x124f('0xd')]!=='0'?_0x22b8d5[_0x124f('0xd')]['split'](','):[_0x124f('0xe')];_0x10989d[_0x124f('0xf')]=_[_0x124f('0x10')](_0x39283b,function(_0x36c8e9){var _0xdb5d7={};_0xdb5d7[_0x36c8e9]=_0x3d5e10[_0x124f('0x11')]?_0x3d5e10[_0x124f('0x12')]:_0x3d5e10[_0x124f('0x13')];return _0xdb5d7;});}var _0x4489f2=['id',_0x124f('0x14'),_0x124f('0x15'),_0x124f('0xe'),'mobile',_0x124f('0x16'),_0x124f('0xc'),'createdAt',_0x124f('0x17'),_0x124f('0x18')];var _0x2ccfab=_[_0x124f('0x19')](_0x4489f2,_0x39283b);BPromise[_0x124f('0x1a')]()['then'](cmContactRpc[_0x124f('0x1b')]({'attributes':_0x2ccfab,'where':_0x10989d}))['then'](function(_0x37f800){_0x3df35c=_0x37f800;if(!_[_0x124f('0x1c')](_0x3df35c)){if(_0x3df35c[_0x124f('0x1d')]===0x1){_0x14e81f=_0x3df35c[0x0];logger[_0x124f('0x8')](_0x124f('0x1e'),_0x3d5e10['uniqueid'],_0x52e14b['id'],_0x14e81f['id']);}else{logger['info']('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x3d5e10[_0x124f('0x1f')],_0x52e14b['id'],_[_0x124f('0x10')](_0x3df35c,'id')[_0x124f('0x20')](','));}return;}else{logger[_0x124f('0x8')](_0x124f('0x21'),_0x3d5e10[_0x124f('0x1f')],_0x52e14b['id']);var _0xa3b81d={'ListId':_0x50569e};var _0x5e9c28=_0x22b8d5[_0x124f('0x22')]&&_0x22b8d5[_0x124f('0x22')]!=='0'?_0x22b8d5[_0x124f('0x22')]:_0x124f('0xe');if(_0x1654bf){logger[_0x124f('0x8')](_0x124f('0x23'),_0x3d5e10[_0x124f('0x1f')],_0x52e14b['id']);_0xa3b81d[_0x5e9c28]=_[_0x124f('0x24')](_0x3d5e10[_0x124f('0x11')])?_0x3d5e10['calleridnum']:_0x3d5e10['destcalleridnum'];if(_[_0x124f('0x24')](_0x3d5e10[_0x124f('0x11')])){_0xa3b81d[_0x124f('0x14')]=_0x3d5e10['calleridname']&&_0x3d5e10[_0x124f('0x25')]!=='<unknown>'?_0x3d5e10[_0x124f('0x25')]:'Unknown';}else{_0xa3b81d[_0x124f('0x14')]=_0x3d5e10[_0x124f('0x26')]&&_0x3d5e10[_0x124f('0x26')]!=='<unknown>'?_0x3d5e10[_0x124f('0x26')]:_0x124f('0x27');}return BPromise[_0x124f('0x1a')]()[_0x124f('0x28')](cmContactRpc[_0x124f('0x29')](_0xa3b81d))[_0x124f('0x28')](function(_0x4ae756){_0x14e81f=_0x4ae756;_0x3df35c[_0x124f('0x2a')](_0x4ae756);if(_0x14e81f){logger[_0x124f('0x8')](_0x124f('0x2b'),_0x3d5e10[_0x124f('0x1f')],_0x52e14b['id'],_0x14e81f['id']);}return;});}else{logger[_0x124f('0x8')](_0x124f('0x2c'),_0x3d5e10[_0x124f('0x1f')],_0x52e14b['id']);_0xa3b81d[_0x5e9c28]=_['isNil'](_0x3d5e10[_0x124f('0x11')])?_0x3d5e10[_0x124f('0x13')]:_0x3d5e10[_0x124f('0x12')];if(_[_0x124f('0x24')](_0x3d5e10[_0x124f('0x11')])){_0xa3b81d[_0x124f('0x14')]=_0x3d5e10['calleridname']&&_0x3d5e10[_0x124f('0x25')]!==_0x124f('0x2d')?_0x3d5e10[_0x124f('0x25')]:_0x124f('0x27');}else{_0xa3b81d[_0x124f('0x14')]=_0x3d5e10[_0x124f('0x26')]&&_0x3d5e10[_0x124f('0x26')]!==_0x124f('0x2d')?_0x3d5e10[_0x124f('0x26')]:'Unknown';}_0x14e81f=_0xa3b81d;_0x3df35c[_0x124f('0x2a')](_0xa3b81d);return;}}})[_0x124f('0x28')](function(){if(_0x2a3602){emit(_0x3d5e10['uniqueid'],_0x52e14b,util[_0x124f('0x2e')](_0x124f('0x2f'),_0x2a3602['name']),util[_0x124f('0x2e')](_0x124f('0x30'),_0x22b8d5[_0x124f('0x31')]['toLowerCase']()),{'evt':_[_0x124f('0x32')](_0x3d5e10,{'autoCreate':_0x1654bf}),'contact':_0x14e81f===undefined?{}:_0x14e81f,'contacts':_0x3df35c[_0x124f('0x1d')]===0x0?undefined:_0x3df35c});}});};
\ No newline at end of file
index df59e57..61b0787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2160=['custom:newinteraction','custom:closedinteraction','custom:acceptmessage','prototype','emit','info','stringify','motionChannel','undefined','voice','interface','checkTriggers','hasOwnProperty','triggers','status','checkTrigger','merge','Actions','action','toLowerCase','contactmanager','browser','popup','TemplateId','data2','render','template\x20not\x20found','buildUri','isNil','data3','uriLocation','data4','windowWidth','data5','600','winApplication','winArguments','format','user:%s','name','trigger:%s:%s','jscripty','trigger:%s','data1','exec','routeId','urlforward','script','parse','replace','channel','AllConditions','AnyConditions','length','checkConditions','field','chat','operator','value','ChatWebsiteId','upperFirst','AccountId','interaction','message','event','queue','agent','membername','lastevent','exports','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','winapp','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','accounts','salesforceAccounts','freshsalesAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialend'];(function(_0x16f77c,_0x5256b1){var _0x78986e=function(_0x10430){while(--_0x10430){_0x16f77c['push'](_0x16f77c['shift']());}};_0x78986e(++_0x5256b1);}(_0x2160,0x132));var _0x0216=function(_0xcbd9a7,_0x169f26){_0xcbd9a7=_0xcbd9a7-0x0;var _0x471f78=_0x2160[_0xcbd9a7];return _0x471f78;};'use strict';var util=require('util');var _=require(_0x0216('0x0'));var url=require(_0x0216('0x1'));var Mustache=require(_0x0216('0x2'));var Redis=require(_0x0216('0x3'));var urlforward=require(_0x0216('0x4'));var integration=require(_0x0216('0x5'));var cmContact=require(_0x0216('0x6'));var script=require(_0x0216('0x7'));var config=require(_0x0216('0x8'));var logger=require(_0x0216('0x9'))(_0x0216('0xa'));var ami=require(_0x0216('0xb'));config[_0x0216('0xc')]=_[_0x0216('0xd')](config['redis'],{'host':_0x0216('0xe'),'port':0x18eb});var io=require(_0x0216('0xf'))(new Redis(config[_0x0216('0xc')]));var operators={'equals':function(_0x555235,_0x3f6b7e){return _0x555235==_0x3f6b7e;},'not_equals':function(_0x34ec07,_0x34fbb5){return _0x34ec07!=_0x34fbb5;}};var barAndWebActions=['popup',_0x0216('0x1'),_0x0216('0x10')];function Trigger(_0x3aa7e8){this['triggers']=_0x3aa7e8['triggers'];this[_0x0216('0x11')]=_0x3aa7e8[_0x0216('0x11')];this[_0x0216('0x12')]=_0x3aa7e8['voiceQueues'];this['templates']=_0x3aa7e8[_0x0216('0x13')];this[_0x0216('0x14')]=_0x3aa7e8[_0x0216('0x14')];this[_0x0216('0x15')]=_0x3aa7e8[_0x0216('0x15')];this[_0x0216('0x16')]=_0x3aa7e8[_0x0216('0x16')];this['salesforceAccounts']=_0x3aa7e8['salesforceAccounts'];this[_0x0216('0x17')]=_0x3aa7e8[_0x0216('0x17')];this[_0x0216('0x18')]=_0x3aa7e8[_0x0216('0x18')];this['deskAccounts']=_0x3aa7e8[_0x0216('0x19')];this[_0x0216('0x1a')]=_0x3aa7e8['vtigerAccounts'];this[_0x0216('0x1b')]=_0x3aa7e8[_0x0216('0x1b')];this[_0x0216('0x1c')]=_0x3aa7e8['dynamics365Accounts'];this['freshsalesAccounts']=_0x3aa7e8['freshsalesAccounts'];this[_0x0216('0x1d')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x0216('0x1e')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x0216('0x17')],'zoho':this[_0x0216('0x18')],'desk':this['deskAccounts'],'vtiger':this[_0x0216('0x1a')],'dynamics365':this[_0x0216('0x1c')],'freshsales':this[_0x0216('0x1f')],'servicenow':this[_0x0216('0x1b')]};ami['on'](_0x0216('0x20'),this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on'](_0x0216('0x23'),this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on'](_0x0216('0x24'),this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on']('custom:agentcomplete',this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on'](_0x0216('0x25'),this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on'](_0x0216('0x26'),this['syncCustomEvent']['bind'](this));ami['on'](_0x0216('0x27'),this['syncCustomEvent'][_0x0216('0x22')](this));ami['on'](_0x0216('0x28'),this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on'](_0x0216('0x29'),this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on'](_0x0216('0x2a'),this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on'](_0x0216('0x2b'),this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on'](_0x0216('0x2c'),this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on'](_0x0216('0x2d'),this[_0x0216('0x2e')][_0x0216('0x22')](this));ami['on']('custom:dialconnect',this[_0x0216('0x2e')][_0x0216('0x22')](this));ami['on'](_0x0216('0x2f'),this[_0x0216('0x2e')][_0x0216('0x22')](this));ami['on'](_0x0216('0x30'),this['syncCustomEvent'][_0x0216('0x22')](this));ami['on'](_0x0216('0x31'),this['syncCustomEvent'][_0x0216('0x22')](this));ami['on']('custom:substatus',this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on']('custom:incomingmessage',this['syncCustomEvent'][_0x0216('0x22')](this));ami['on']('custom:outgoingmessage',this[_0x0216('0x21')]['bind'](this));ami['on'](_0x0216('0x32'),this[_0x0216('0x21')][_0x0216('0x22')](this));ami['on']('custom:rejectmessage',this[_0x0216('0x21')][_0x0216('0x22')](this));}Trigger[_0x0216('0x33')][_0x0216('0x34')]=function(_0x135a6d,_0x2c6149,_0x3bdbf0){logger[_0x0216('0x35')](_0x135a6d,_0x2c6149,JSON[_0x0216('0x36')](_0x3bdbf0));io['to'](_0x135a6d)[_0x0216('0x34')](_0x2c6149,_0x3bdbf0);};Trigger[_0x0216('0x33')][_0x0216('0x21')]=function(_0x49e654){var _0x2820a1=_['clone'](_0x49e654);if(typeof _0x2820a1[_0x0216('0x37')]===_0x0216('0x38')){_0x2820a1['motionChannel']=_0x0216('0x39');}this['checkTriggers'](_0x2820a1);};Trigger['prototype'][_0x0216('0x2e')]=function(_0x3bc24f){if(this['agents'][_0x3bc24f[_0x0216('0x3a')]]){this[_0x0216('0x21')](_0x3bc24f);}};Trigger['prototype'][_0x0216('0x3b')]=function(_0xed8268){var _0x28d0c9;for(var _0x5efb09 in this['triggers']){if(this['triggers'][_0x0216('0x3c')](_0x5efb09)){if(this[_0x0216('0x3d')][_0x5efb09][_0x0216('0x3e')]){_0x28d0c9=this[_0x0216('0x3f')](this[_0x0216('0x3d')][_0x5efb09],_0xed8268);if(_0x28d0c9){_[_0x0216('0x40')](_0xed8268,_0xed8268['variables']);for(var _0x50015d=0x0,_0x575433,_0x42a4ab,_0xc56f2f;_0x50015d<this['triggers'][_0x5efb09][_0x0216('0x41')]['length'];_0x50015d+=0x1){_0x575433=this[_0x0216('0x3d')][_0x5efb09][_0x0216('0x41')][_0x50015d];if(this['agents'][_0xed8268[_0x0216('0x3a')]]){switch(_0x575433[_0x0216('0x42')][_0x0216('0x43')]()){case _0x0216('0x44'):break;case'motionbar':case _0x0216('0x45'):var _0x5bdd51={};switch(barAndWebActions[_0x575433['data1']]){case _0x0216('0x46'):_0x5bdd51[_0x0216('0x47')]=_0x575433[_0x0216('0x48')];_0x5bdd51['html']=this['templates'][_0x575433[_0x0216('0x48')]]?Mustache[_0x0216('0x49')](this[_0x0216('0x13')][_0x575433['data2']]['html'],_0xed8268):_0x0216('0x4a');break;case _0x0216('0x1'):_0x5bdd51['uri']=this[_0x0216('0x4b')](_0x575433[_0x0216('0x48')],_0xed8268,_[_0x0216('0x4c')](_0x575433[_0x0216('0x4d')])?!![]:parseInt(_0x575433['data3'],0xa));if(_[_0x0216('0x4c')](_0x575433['data4'])){_0x5bdd51['location']='0';}else{_0x5bdd51[_0x0216('0x4e')]=_0x575433[_0x0216('0x4f')];_0x5bdd51[_0x0216('0x50')]=_[_0x0216('0x4c')](_0x575433[_0x0216('0x51')])?'800':_0x575433[_0x0216('0x51')];_0x5bdd51['windowHeight']=_[_0x0216('0x4c')](_0x575433['data6'])?_0x0216('0x52'):_0x575433['data6'];}break;case _0x0216('0x10'):_0x5bdd51[_0x0216('0x53')]=_0x575433[_0x0216('0x48')]?Mustache[_0x0216('0x49')](_0x575433['data2'],_0xed8268):'';_0x5bdd51[_0x0216('0x54')]=_0x575433[_0x0216('0x4d')]?Mustache[_0x0216('0x49')](_0x575433[_0x0216('0x4d')],_0xed8268):'';break;}this[_0x0216('0x34')](util[_0x0216('0x55')](_0x0216('0x56'),this['agents'][_0xed8268['interface']][_0x0216('0x57')]),util[_0x0216('0x55')](_0x0216('0x58'),_0x575433[_0x0216('0x42')][_0x0216('0x43')](),barAndWebActions[_0x575433['data1']]),_[_0x0216('0x40')](_0x5bdd51,_0xed8268));break;case _0x0216('0x59'):this[_0x0216('0x34')](util[_0x0216('0x55')](_0x0216('0x56'),this[_0x0216('0x11')][_0xed8268[_0x0216('0x3a')]][_0x0216('0x57')]),util['format'](_0x0216('0x5a'),_0x575433[_0x0216('0x42')][_0x0216('0x43')]()),_[_0x0216('0x40')]({'ProjectId':parseInt(_0x575433[_0x0216('0x5b')],0xa)},_0xed8268));break;default:this[_0x0216('0x34')](util[_0x0216('0x55')](_0x0216('0x56'),this[_0x0216('0x11')][_0xed8268[_0x0216('0x3a')]][_0x0216('0x57')]),util[_0x0216('0x55')](_0x0216('0x5a'),_0x575433[_0x0216('0x42')]['toLowerCase']()),_[_0x0216('0x40')]({},_0x575433,_0xed8268));}}switch(_0x575433[_0x0216('0x42')]['toLowerCase']()){case _0x0216('0x44'):cmContact[_0x0216('0x5c')](this[_0x0216('0x11')][_0xed8268[_0x0216('0x3a')]],this[_0x0216('0x3d')][_0x5efb09],_0x575433,_0xed8268);break;case'integration':integration[_0x0216('0x5c')](_0x575433,_0xed8268,this[_0x0216('0x1d')],this[_0x0216('0x11')][_0xed8268['interface']],this[_0x0216('0x12')][_0xed8268['queue']],this[_0x0216('0x14')][_0xed8268[_0x0216('0x5d')]]);break;case _0x0216('0x5e'):urlforward['exec'](_0x575433,_0xed8268);break;case _0x0216('0x5f'):script[_0x0216('0x5c')](_0x575433,_0xed8268);break;}}}}}}};Trigger[_0x0216('0x33')][_0x0216('0x4b')]=function(_0x218149,_0x192282,_0x331c87){var _0x33518b=url[_0x0216('0x60')](Mustache[_0x0216('0x49')](_0x218149,_0x192282),!![]);if(_0x331c87){_['merge'](_0x33518b['query'],_0x192282);}delete _0x33518b['search'];var _0x48c3d1=url['format'](_0x33518b);_0x48c3d1=_0x48c3d1[_0x0216('0x61')](/\/\?/g,'?');return _0x48c3d1;};Trigger[_0x0216('0x33')][_0x0216('0x3f')]=function(_0x202411,_0x549185){var _0x4e7eda=!![];var _0x3a2f03=!![];var _0x943827=![];if(_0x202411[_0x0216('0x62')]===_0x549185[_0x0216('0x37')]){_0x943827=!![];}if(_0x202411[_0x0216('0x63')]['length']){_0x4e7eda=_['every'](_0x202411[_0x0216('0x63')],this['checkConditions'](_0x549185,_0x202411[_0x0216('0x62')]));}if(_0x202411[_0x0216('0x64')][_0x0216('0x65')]){_0x3a2f03=_['some'](_0x202411[_0x0216('0x64')],this['checkConditions'](_0x549185,_0x202411[_0x0216('0x62')]));}return _0x943827&&_0x4e7eda&&_0x3a2f03;};Trigger['prototype'][_0x0216('0x66')]=function(_0x407700,_0xbb080b){return function(_0x1899a4){switch(_0x1899a4[_0x0216('0x67')]){case'account':if(_0x407700[_0x0216('0x62')]===_0xbb080b){if(_0xbb080b===_0x0216('0x68')){return _0x407700['ChatWebsiteId']?operators[_0x1899a4[_0x0216('0x69')]](Number(_0x1899a4[_0x0216('0x6a')]),_0x407700[_0x0216('0x6b')]):![];}else{return _0x407700[_[_0x0216('0x6c')](_0xbb080b)+_0x0216('0x6d')]?operators[_0x1899a4['operator']](Number(_0x1899a4[_0x0216('0x6a')]),_0x407700[_[_0x0216('0x6c')](_0xbb080b)+'AccountId']):![];}}break;case _0x0216('0x6e'):case _0x0216('0x6f'):if(_0x407700['channel']===_0xbb080b){return _0x407700[_0x0216('0x70')]?operators[_0x1899a4[_0x0216('0x69')]](_0x1899a4[_0x0216('0x6a')],_0x407700[_0x0216('0x70')]):![];}break;case _0x0216('0x71'):return _0x407700[_0x0216('0x71')]?operators[_0x1899a4['operator']](_0x1899a4[_0x0216('0x6a')],_0x407700['queue']):![];case _0x0216('0x72'):return _0x407700['membername']?operators[_0x1899a4[_0x0216('0x69')]](_0x1899a4[_0x0216('0x6a')],_0x407700[_0x0216('0x73')]):![];case _0x0216('0x74'):return _0x407700[_0x0216('0x74')]?operators[_0x1899a4[_0x0216('0x69')]](_0x1899a4['value'],_0x407700[_0x0216('0x74')]):![];case _0x0216('0x5d'):return _0x407700[_0x0216('0x5d')]?operators[_0x1899a4['operator']](_0x1899a4['value'],_0x407700[_0x0216('0x5d')]):![];}return![];};};module[_0x0216('0x75')]=Trigger;
\ No newline at end of file
+var _0x7cb7=['servicenowAccounts','freshsalesAccounts','dynamics365Accounts','syncCustomEvent','bind','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:closedinteraction','custom:incomingmessage','custom:acceptmessage','prototype','emit','info','stringify','clone','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','Actions','length','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','html','template\x20not\x20found','uri','buildUri','data3','isNil','data4','location','uriLocation','800','data5','windowHeight','600','data6','winApplication','winArguments','render','user:%s','name','trigger:%s:%s','trigger:%s','format','exec','integration','accounts','queue','routeId','urlforward','script','parse','query','search','AllConditions','every','checkConditions','channel','AnyConditions','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','event','agent','membername','lastevent','exports','util','lodash','url','mustache','ioredis','./cmContact','../../../config/environment','trigger','../ami','redis','defaults','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts'];(function(_0x4da13c,_0x2753d9){var _0x58b17a=function(_0x46eea1){while(--_0x46eea1){_0x4da13c['push'](_0x4da13c['shift']());}};_0x58b17a(++_0x2753d9);}(_0x7cb7,0x1bb));var _0x77cb=function(_0x15bffd,_0x3f5d61){_0x15bffd=_0x15bffd-0x0;var _0xd4cfb3=_0x7cb7[_0x15bffd];return _0xd4cfb3;};'use strict';var util=require(_0x77cb('0x0'));var _=require(_0x77cb('0x1'));var url=require(_0x77cb('0x2'));var Mustache=require(_0x77cb('0x3'));var Redis=require(_0x77cb('0x4'));var urlforward=require('./urlforward');var integration=require('./integration');var cmContact=require(_0x77cb('0x5'));var script=require('./script');var config=require(_0x77cb('0x6'));var logger=require('../../../config/logger')(_0x77cb('0x7'));var ami=require(_0x77cb('0x8'));config[_0x77cb('0x9')]=_[_0x77cb('0xa')](config[_0x77cb('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x77cb('0xb'))(new Redis(config[_0x77cb('0x9')]));var operators={'equals':function(_0x1129dd,_0xfeb751){return _0x1129dd==_0xfeb751;},'not_equals':function(_0x4d572c,_0x463f96){return _0x4d572c!=_0x463f96;}};var barAndWebActions=['popup',_0x77cb('0x2'),_0x77cb('0xc')];function Trigger(_0x29f44e){this['triggers']=_0x29f44e[_0x77cb('0xd')];this[_0x77cb('0xe')]=_0x29f44e[_0x77cb('0xe')];this[_0x77cb('0xf')]=_0x29f44e[_0x77cb('0xf')];this[_0x77cb('0x10')]=_0x29f44e[_0x77cb('0x10')];this[_0x77cb('0x11')]=_0x29f44e['voiceExtensions'];this[_0x77cb('0x12')]=_0x29f44e['zendeskAccounts'];this[_0x77cb('0x13')]=_0x29f44e['freshdeskAccounts'];this['salesforceAccounts']=_0x29f44e[_0x77cb('0x14')];this[_0x77cb('0x15')]=_0x29f44e['sugarcrmAccounts'];this[_0x77cb('0x16')]=_0x29f44e[_0x77cb('0x16')];this['deskAccounts']=_0x29f44e[_0x77cb('0x17')];this[_0x77cb('0x18')]=_0x29f44e[_0x77cb('0x18')];this['servicenowAccounts']=_0x29f44e[_0x77cb('0x19')];this['dynamics365Accounts']=_0x29f44e['dynamics365Accounts'];this[_0x77cb('0x1a')]=_0x29f44e['freshsalesAccounts'];this['accounts']={'zendesk':this['zendeskAccounts'],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0x77cb('0x13')],'sugarcrm':this[_0x77cb('0x15')],'zoho':this[_0x77cb('0x16')],'desk':this['deskAccounts'],'vtiger':this[_0x77cb('0x18')],'dynamics365':this[_0x77cb('0x1b')],'freshsales':this['freshsalesAccounts'],'servicenow':this['servicenowAccounts']};ami['on']('custom:agentcalled',this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on']('custom:agentconnect',this[_0x77cb('0x1c')]['bind'](this));ami['on']('custom:agentringnoanswer',this[_0x77cb('0x1c')]['bind'](this));ami['on'](_0x77cb('0x1e'),this['syncCustomEvent'][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x1f'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x20'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x21'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x22'),this['syncCustomEvent'][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x23'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x24'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x25'),this['syncCustomEvent']['bind'](this));ami['on']('custom:timeout',this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x26'),this[_0x77cb('0x27')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x28'),this[_0x77cb('0x27')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x29'),this[_0x77cb('0x27')][_0x77cb('0x1d')](this));ami['on']('custom:newinteraction',this[_0x77cb('0x1c')]['bind'](this));ami['on'](_0x77cb('0x2a'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x2b'),this['syncCustomEvent'][_0x77cb('0x1d')](this));ami['on']('custom:outgoingmessage',this['syncCustomEvent'][_0x77cb('0x1d')](this));ami['on'](_0x77cb('0x2c'),this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));ami['on']('custom:rejectmessage',this[_0x77cb('0x1c')][_0x77cb('0x1d')](this));}Trigger[_0x77cb('0x2d')][_0x77cb('0x2e')]=function(_0x43dbe6,_0x4735c3,_0x3c3ecc){logger[_0x77cb('0x2f')](_0x43dbe6,_0x4735c3,JSON[_0x77cb('0x30')](_0x3c3ecc));io['to'](_0x43dbe6)[_0x77cb('0x2e')](_0x4735c3,_0x3c3ecc);};Trigger[_0x77cb('0x2d')][_0x77cb('0x1c')]=function(_0x5b6099){var _0xa73780=_[_0x77cb('0x31')](_0x5b6099);this[_0x77cb('0x32')](_0xa73780);};Trigger[_0x77cb('0x2d')]['syncAgentDial']=function(_0x5cb08b){if(this[_0x77cb('0xe')][_0x5cb08b[_0x77cb('0x33')]]){this[_0x77cb('0x1c')](_0x5cb08b);}};Trigger[_0x77cb('0x2d')]['checkTriggers']=function(_0xebd503){var _0xbfbdb4;for(var _0x2e7235 in this[_0x77cb('0xd')]){if(this[_0x77cb('0xd')][_0x77cb('0x34')](_0x2e7235)){if(this[_0x77cb('0xd')][_0x2e7235][_0x77cb('0x35')]){_0xbfbdb4=this[_0x77cb('0x36')](this['triggers'][_0x2e7235],_0xebd503);if(_0xbfbdb4){_[_0x77cb('0x37')](_0xebd503,_0xebd503['variables']);for(var _0x49fb20=0x0,_0x362c13,_0x338026,_0x318286;_0x49fb20<this[_0x77cb('0xd')][_0x2e7235][_0x77cb('0x38')][_0x77cb('0x39')];_0x49fb20+=0x1){_0x362c13=this[_0x77cb('0xd')][_0x2e7235][_0x77cb('0x38')][_0x49fb20];if(this[_0x77cb('0xe')][_0xebd503[_0x77cb('0x33')]]){switch(_0x362c13[_0x77cb('0x3a')][_0x77cb('0x3b')]()){case _0x77cb('0x3c'):break;case _0x77cb('0x3d'):case _0x77cb('0x3e'):var _0x1afa17={};switch(barAndWebActions[_0x362c13[_0x77cb('0x3f')]]){case'popup':_0x1afa17[_0x77cb('0x40')]=_0x362c13[_0x77cb('0x41')];_0x1afa17[_0x77cb('0x42')]=this[_0x77cb('0x10')][_0x362c13[_0x77cb('0x41')]]?Mustache['render'](this[_0x77cb('0x10')][_0x362c13['data2']][_0x77cb('0x42')],_0xebd503):_0x77cb('0x43');break;case _0x77cb('0x2'):_0x1afa17[_0x77cb('0x44')]=this[_0x77cb('0x45')](_0x362c13['data2'],_0xebd503,_['isNil'](_0x362c13['data3'])?!![]:parseInt(_0x362c13[_0x77cb('0x46')],0xa));if(_[_0x77cb('0x47')](_0x362c13[_0x77cb('0x48')])){_0x1afa17[_0x77cb('0x49')]='0';}else{_0x1afa17[_0x77cb('0x4a')]=_0x362c13[_0x77cb('0x48')];_0x1afa17['windowWidth']=_[_0x77cb('0x47')](_0x362c13['data5'])?_0x77cb('0x4b'):_0x362c13[_0x77cb('0x4c')];_0x1afa17[_0x77cb('0x4d')]=_[_0x77cb('0x47')](_0x362c13['data6'])?_0x77cb('0x4e'):_0x362c13[_0x77cb('0x4f')];}break;case'winapp':_0x1afa17[_0x77cb('0x50')]=_0x362c13[_0x77cb('0x41')]?Mustache['render'](_0x362c13[_0x77cb('0x41')],_0xebd503):'';_0x1afa17[_0x77cb('0x51')]=_0x362c13[_0x77cb('0x46')]?Mustache[_0x77cb('0x52')](_0x362c13[_0x77cb('0x46')],_0xebd503):'';break;}this['emit'](util['format'](_0x77cb('0x53'),this[_0x77cb('0xe')][_0xebd503[_0x77cb('0x33')]][_0x77cb('0x54')]),util['format'](_0x77cb('0x55'),_0x362c13[_0x77cb('0x3a')]['toLowerCase'](),barAndWebActions[_0x362c13[_0x77cb('0x3f')]]),_['merge'](_0x1afa17,_0xebd503));break;case'jscripty':this['emit'](util['format'](_0x77cb('0x53'),this[_0x77cb('0xe')][_0xebd503['interface']][_0x77cb('0x54')]),util['format'](_0x77cb('0x56'),_0x362c13[_0x77cb('0x3a')][_0x77cb('0x3b')]()),_[_0x77cb('0x37')]({'ProjectId':parseInt(_0x362c13['data1'],0xa)},_0xebd503));break;default:this[_0x77cb('0x2e')](util[_0x77cb('0x57')](_0x77cb('0x53'),this[_0x77cb('0xe')][_0xebd503['interface']][_0x77cb('0x54')]),util[_0x77cb('0x57')](_0x77cb('0x56'),_0x362c13[_0x77cb('0x3a')][_0x77cb('0x3b')]()),_[_0x77cb('0x37')]({},_0x362c13,_0xebd503));}}switch(_0x362c13['action'][_0x77cb('0x3b')]()){case _0x77cb('0x3c'):cmContact[_0x77cb('0x58')](this[_0x77cb('0xe')][_0xebd503[_0x77cb('0x33')]],this[_0x77cb('0xd')][_0x2e7235],_0x362c13,_0xebd503);break;case _0x77cb('0x59'):integration[_0x77cb('0x58')](_0x362c13,_0xebd503,this[_0x77cb('0x5a')],this[_0x77cb('0xe')][_0xebd503[_0x77cb('0x33')]],this[_0x77cb('0xf')][_0xebd503[_0x77cb('0x5b')]],this[_0x77cb('0x11')][_0xebd503[_0x77cb('0x5c')]]);break;case _0x77cb('0x5d'):urlforward[_0x77cb('0x58')](_0x362c13,_0xebd503);break;case _0x77cb('0x5e'):script[_0x77cb('0x58')](_0x362c13,_0xebd503);break;}}}}}}};Trigger[_0x77cb('0x2d')][_0x77cb('0x45')]=function(_0x4f1e3a,_0x20499f,_0x943bda){var _0xbdd8a=url[_0x77cb('0x5f')](Mustache['render'](_0x4f1e3a,_0x20499f),!![]);if(_0x943bda){_[_0x77cb('0x37')](_0xbdd8a[_0x77cb('0x60')],_0x20499f);}delete _0xbdd8a[_0x77cb('0x61')];var _0xadacc5=url['format'](_0xbdd8a);_0xadacc5=_0xadacc5['replace'](/\/\?/g,'?');return _0xadacc5;};Trigger[_0x77cb('0x2d')][_0x77cb('0x36')]=function(_0x102abc,_0x43a28d){var _0x14be10=!![],_0x384484=!![];if(_0x102abc[_0x77cb('0x62')]['length']){_0x14be10=_[_0x77cb('0x63')](_0x102abc[_0x77cb('0x62')],this[_0x77cb('0x64')](_0x43a28d,_0x102abc[_0x77cb('0x65')]));}if(_0x102abc[_0x77cb('0x66')][_0x77cb('0x39')]){_0x384484=_['some'](_0x102abc[_0x77cb('0x66')],this[_0x77cb('0x64')](_0x43a28d,_0x102abc['channel']));}return _0x14be10&&_0x384484;};Trigger['prototype'][_0x77cb('0x64')]=function(_0x485bf4,_0x4cf99e){return function(_0x546a65){switch(_0x546a65[_0x77cb('0x67')]){case _0x77cb('0x68'):if(_0x485bf4[_0x77cb('0x65')]===_0x4cf99e){if(_0x4cf99e===_0x77cb('0x69')){return _0x485bf4[_0x77cb('0x6a')]?operators[_0x546a65[_0x77cb('0x6b')]](Number(_0x546a65[_0x77cb('0x6c')]),_0x485bf4[_0x77cb('0x6a')]):![];}else{return _0x485bf4[_[_0x77cb('0x6d')](_0x4cf99e)+_0x77cb('0x6e')]?operators[_0x546a65[_0x77cb('0x6b')]](Number(_0x546a65[_0x77cb('0x6c')]),_0x485bf4[_[_0x77cb('0x6d')](_0x4cf99e)+_0x77cb('0x6e')]):![];}}break;case _0x77cb('0x6f'):case'message':if(_0x485bf4[_0x77cb('0x65')]===_0x4cf99e){return _0x485bf4['event']?operators[_0x546a65[_0x77cb('0x6b')]](_0x546a65['value'],_0x485bf4[_0x77cb('0x70')]):![];}break;case'queue':return _0x485bf4['queue']?operators[_0x546a65['operator']](_0x546a65[_0x77cb('0x6c')],_0x485bf4[_0x77cb('0x5b')]):![];case _0x77cb('0x71'):return _0x485bf4['membername']?operators[_0x546a65['operator']](_0x546a65['value'],_0x485bf4[_0x77cb('0x72')]):![];case'lastevent':return _0x485bf4[_0x77cb('0x73')]?operators[_0x546a65[_0x77cb('0x6b')]](_0x546a65['value'],_0x485bf4[_0x77cb('0x73')]):![];case _0x77cb('0x5c'):return _0x485bf4[_0x77cb('0x5c')]?operators[_0x546a65[_0x77cb('0x6b')]](_0x546a65[_0x77cb('0x6c')],_0x485bf4[_0x77cb('0x5c')]):![];}return![];};};module[_0x77cb('0x74')]=Trigger;
\ No newline at end of file
index e08b1a2..fefbdec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0x375eab,_0x29fff5){var _0x3d468f=function(_0x7037bf){while(--_0x7037bf){_0x375eab['push'](_0x375eab['shift']());}};_0x3d468f(++_0x29fff5);}(_0x814b,0x1a2));var _0xb814=function(_0x16b561,_0x5a914f){_0x16b561=_0x16b561-0x0;var _0x22599f=_0x814b[_0x16b561];return _0x22599f;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
+var _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe14b,0x93));var _0xbe14=function(_0x517eff,_0x20ca38){_0x517eff=_0x517eff-0x0;var _0x1a3ce6=_0xe14b[_0x517eff];return _0x1a3ce6;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
index 0496871..729f08d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd5e=['Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','request-promise','./util','ioredis','../../../../config/environment','redis','defaults','socket.io-emitter','POST','clientId','remoteUri','username','clientSecret','access_token','catch','error','toUpperCase','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','then','value','isNil','validateEmail','userEmail','email','length','internalemailaddress','isdisabled','info','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','toLowerCase','outbound','/systemusers(','userId','headers','odata-entityid','lastIndexOf','enduserId','message','destcalleridnum','calleridnum','replace','%2b','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','string','type','nameField','idField','substring','indexOf','content','incident','incidents','assign','getString','Subjects','/contacts(','ticketType','phonecall','phonecalls','Descriptions','callDirection','queue','Fields','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20Call\x20direction:\x20%s'];(function(_0x26b558,_0x209417){var _0x54225c=function(_0x2062c3){while(--_0x2062c3){_0x26b558['push'](_0x26b558['shift']());}};_0x54225c(++_0x209417);}(_0xdd5e,0x173));var _0xedd5=function(_0x96f74c,_0xfc30a4){_0x96f74c=_0x96f74c-0x0;var _0x379222=_0xdd5e[_0x96f74c];return _0x379222;};'use strict';var _=require('lodash');var BPromise=require('bluebird');var rp=require(_0xedd5('0x0'));var util=require('util');var intUtil=require(_0xedd5('0x1'));var md5=require('md5');var Redis=require(_0xedd5('0x2'));var logger=require('../../../../config/logger')('dynamics365');var config=require(_0xedd5('0x3'));config[_0xedd5('0x4')]=_[_0xedd5('0x5')](config[_0xedd5('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xedd5('0x6'))(new Redis(config[_0xedd5('0x4')]));function getAuthToken(_0x5b987f,_0x17e091,_0x24b896){var _0x1d96b0={'method':_0xedd5('0x7'),'uri':_0x17e091,'form':{'client_id':_0x5b987f[_0xedd5('0x8')],'resource':_0x5b987f[_0xedd5('0x9')],'username':_0x5b987f[_0xedd5('0xa')],'password':_0x5b987f['password'],'grant_type':'password','client_secret':_0x5b987f[_0xedd5('0xb')]},'json':!![]};return rp(_0x1d96b0)['then'](function(_0x50b12a){return _0x50b12a[_0xedd5('0xc')];})[_0xedd5('0xd')](function(_0x460207){logger[_0xedd5('0xe')]('['+[_0x24b896[_0xedd5('0xf')]()]+']\x20Wrong\x20credentials!');return _0x460207['message'];});}function getUser(_0x2f70a1,_0x393edf,_0x379b08,_0x18e975,_0x543763,_0x581597){return new BPromise(function(_0x5bd9db,_0x5896fd){return getAuthToken(_0x393edf,_0x18e975,_0x581597)['then'](function(_0x1300be){var _0x35f2a0={'method':_0xedd5('0x10'),'uri':_0x543763+_0xedd5('0x11'),'headers':{'Authorization':_0xedd5('0x12')+_0x1300be,'OData-Version':_0xedd5('0x13')},'json':!![]};return rp(_0x35f2a0);})[_0xedd5('0x14')](function(_0x1063f7){var _0x36a19a=_0x1063f7[_0xedd5('0x15')];var _0x30082a=![];var _0x3a93e4=null;if(!_[_0xedd5('0x16')](_0x379b08)){if(intUtil[_0xedd5('0x17')](_0x379b08['email'])){_0x2f70a1[_0xedd5('0x18')]=_0x379b08[_0xedd5('0x19')];for(_0x3a93e4=0x0;_0x3a93e4<_0x36a19a[_0xedd5('0x1a')];_0x3a93e4++){if(_0x36a19a[_0x3a93e4][_0xedd5('0x1b')]===_0x379b08[_0xedd5('0x19')]&&!_0x36a19a[_0x3a93e4][_0xedd5('0x1c')]){_0x30082a=!![];logger[_0xedd5('0x1d')]('['+[_0x581597[_0xedd5('0xf')]()]+']\x20Agent\x20found\x20'+_0x36a19a[_0x3a93e4][_0xedd5('0x1e')]+'!');_0x2f70a1['userId']=_0x36a19a[_0x3a93e4]['systemuserid'];}}}}if(!_0x30082a){logger[_0xedd5('0x1d')]('['+[_0x581597['toUpperCase']()]+_0xedd5('0x1f'));_0x2f70a1[_0xedd5('0x18')]=_0x393edf[_0xedd5('0xa')];for(_0x3a93e4=0x0;_0x3a93e4<_0x36a19a[_0xedd5('0x1a')];_0x3a93e4++){if(_0x36a19a[_0x3a93e4][_0xedd5('0x1b')]===_0x393edf['username']){_0x2f70a1['userId']=_0x36a19a[_0x3a93e4]['systemuserid'];}}}_0x5bd9db(_0x2f70a1);})[_0xedd5('0xd')](function(_0x441e4a){_0x5896fd(_0x441e4a['message']);});});}function createEndUser(_0x2be135,_0x354547,_0x591bc1,_0x20bf04,_0x854e3e,_0x2a41b1){return new BPromise(function(_0x20d7b8,_0x4ee3df){return getAuthToken(_0x354547,_0x591bc1,_0x2a41b1)['then'](function(_0x4ea153){var _0x1febad=_0x2a41b1[_0xedd5('0x20')]()===_0xedd5('0x21')?_0x854e3e['destcalleridnum']:_0x854e3e['calleridnum'];var _0x26e909={'method':_0xedd5('0x7'),'uri':_0x20bf04+'contacts','body':{'telephone1':_0x1febad,'fullname':_0x1febad,'firstname':_0x1febad,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xedd5('0x22')+_0x2be135[_0xedd5('0x23')]+')'},'headers':{'Authorization':_0xedd5('0x12')+_0x4ea153,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x26e909);})[_0xedd5('0x14')](function(_0x5922d9){var _0x533835=_0x5922d9[_0xedd5('0x24')][_0xedd5('0x25')];var _0x310d05=_0x533835['substring'](_0x533835['lastIndexOf']('(')+0x1,_0x533835[_0xedd5('0x26')](')'));_0x2be135[_0xedd5('0x27')]=_0x310d05;_0x20d7b8(_0x2be135);})[_0xedd5('0xd')](function(_0x22213a){_0x4ee3df(_0x22213a[_0xedd5('0x28')]);});});}function getEndUser(_0xa70f3d,_0xd2a397,_0x2d0e6e,_0x317096,_0x1f39e2,_0x12d7ce){return new BPromise(function(_0x21cdad,_0x572285){var _0x465891=_0x12d7ce[_0xedd5('0x20')]()==='outbound'?_0x1f39e2[_0xedd5('0x29')]:_0x1f39e2[_0xedd5('0x2a')];return getAuthToken(_0xd2a397,_0x2d0e6e,_0x12d7ce)[_0xedd5('0x14')](function(_0x2d71b1){var _0x444b3e={'method':_0xedd5('0x10'),'uri':_0x317096+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x465891[_0xedd5('0x2b')]('+',_0xedd5('0x2c'))+'\x27','headers':{'Authorization':_0xedd5('0x12')+_0x2d71b1,'If-None-Match':null,'OData-Version':_0xedd5('0x13')},'json':!![]};return rp(_0x444b3e);})[_0xedd5('0x14')](function(_0x50fd42){var _0x85aa34=null;if(_0x50fd42){var _0x4dd9b7=_0x50fd42[_0xedd5('0x15')];var _0x11cf11=![];for(_0x85aa34=0x0;_0x85aa34<_0x4dd9b7['length'];_0x85aa34++){if(_0x4dd9b7[_0x85aa34]['telephone1']===_0x465891){_0x11cf11=!![];_0xa70f3d[_0xedd5('0x27')]=_0x4dd9b7[_0x85aa34][_0xedd5('0x2d')];}}if(_0x11cf11){_0x21cdad(_0xa70f3d);}else{return createEndUser(_0xa70f3d,_0xd2a397,_0x2d0e6e,_0x317096,_0x1f39e2,_0x12d7ce)[_0xedd5('0x14')](function(_0x581f08){logger[_0xedd5('0x1d')]('['+[_0x12d7ce[_0xedd5('0xf')]()]+_0xedd5('0x2e'),_0x581f08['enduserId']);_0x21cdad(_0x581f08);});}}else{return createEndUser(_0xa70f3d,_0xd2a397,_0x2d0e6e,_0x317096,_0x1f39e2,_0x12d7ce)[_0xedd5('0x14')](function(_0x403a9b){logger[_0xedd5('0x1d')]('['+[_0x12d7ce['toUpperCase']()]+_0xedd5('0x2f'),_0x403a9b['enduserId']);_0x21cdad(_0x403a9b);});}});});}function getCustomFields(_0x2c4dc7,_0x4e8f5e,_0x44ecd9){var _0x25dc21={};if(_0x2c4dc7[_0xedd5('0x1a')]>0x0){_['forEach'](_0x2c4dc7,function(_0x5eccc0){if(_['includes']([_0xedd5('0x30'),'picklist'],_0x5eccc0[_0xedd5('0x31')])&&_0x5eccc0[_0xedd5('0x32')]&&!_0x5eccc0['customField']){var _0x103f16=_0x5eccc0[_0xedd5('0x33')][_0xedd5('0x20')]();var _0x41391c=_0x103f16[_0xedd5('0x34')](0x0,_0x103f16[_0xedd5('0x35')]('_'));var _0x366e85=_0x103f16[_0xedd5('0x34')](_0x103f16['indexOf']('_')+0x1);if(_0x41391c===_0x44ecd9){_0x25dc21[_0x366e85]=_0x5eccc0[_0xedd5('0x36')];}}});}return _0x25dc21;}function getTicket(_0x52d98b,_0x40ff19,_0x4765e4,_0x523496,_0x18f800,_0x28ae47,_0x5d7dc2){return new BPromise(function(_0x44800c,_0x4d5156){var _0x523b82;return getAuthToken(_0x40ff19,_0x4765e4,_0x5d7dc2)['then'](function(_0x4350c4){if(_0x28ae47['ticketType']===_0xedd5('0x37')){_0x523b82={'method':_0xedd5('0x7'),'uri':_0x523496+_0xedd5('0x38'),'body':Object[_0xedd5('0x39')]({},{'title':intUtil[_0xedd5('0x3a')](_0x28ae47[_0xedd5('0x3b')],_0x18f800,'\x20'),'description':intUtil['getString'](_0x28ae47['Descriptions'],_0x18f800,'\x0a'),'customerid_contact@odata.bind':_0xedd5('0x3c')+_0x52d98b[_0xedd5('0x27')]+')','ownerid@odata.bind':_0xedd5('0x22')+_0x52d98b[_0xedd5('0x23')]+')','caseorigincode':'1'},getCustomFields(_0x28ae47['Fields'],_0x18f800,_0x28ae47[_0xedd5('0x3d')])),'headers':{'Authorization':_0xedd5('0x12')+_0x4350c4,'OData-Version':_0xedd5('0x13')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x28ae47['ticketType']===_0xedd5('0x3e')){_0x523b82={'method':_0xedd5('0x7'),'uri':_0x523496+_0xedd5('0x3f'),'body':Object[_0xedd5('0x39')]({},{'subject':intUtil[_0xedd5('0x3a')](_0x28ae47[_0xedd5('0x3b')],_0x18f800,'\x20'),'phonenumber':String(_0x18f800[_0xedd5('0x2a')]),'description':intUtil[_0xedd5('0x3a')](_0x28ae47[_0xedd5('0x40')],_0x18f800,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x52d98b[_0xedd5('0x27')]+')','ownerid@odata.bind':_0xedd5('0x22')+_0x52d98b[_0xedd5('0x23')]+')','directioncode':_0x52d98b[_0xedd5('0x41')]===_0xedd5('0x42')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xedd5('0x22')+_0x52d98b[_0xedd5('0x23')]+')','participationtypemask':_0x52d98b[_0xedd5('0x41')]===_0xedd5('0x42')?0x2:0x1},{'partyid_contact@odata.bind':_0xedd5('0x3c')+_0x52d98b[_0xedd5('0x27')]+')','participationtypemask':_0x52d98b[_0xedd5('0x41')]==='queue'?0x1:0x2}]},getCustomFields(_0x28ae47[_0xedd5('0x43')],_0x18f800,_0x28ae47[_0xedd5('0x3d')])),'headers':{'Authorization':_0xedd5('0x12')+_0x4350c4,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x523b82);})['then'](function(_0x571b72){var _0x2c94d9=_0x571b72[_0xedd5('0x24')][_0xedd5('0x25')];var _0x554a27=_0x2c94d9[_0xedd5('0x34')](_0x2c94d9[_0xedd5('0x26')]('(')+0x1,_0x2c94d9['lastIndexOf'](')'));_0x52d98b[_0xedd5('0x44')]=_0x554a27;_0x44800c(_0x52d98b);})[_0xedd5('0xd')](function(_0x50dd47){_0x4d5156(_0x50dd47[_0xedd5('0x28')]);});});}function emit(_0x73dda1,_0x4fef48,_0x1d870c,_0x70ba5c){var _0x3f4ddc={'uri':util[_0xedd5('0x45')](_0xedd5('0x46'),_0x73dda1,_0x1d870c,_0x70ba5c)};io['to'](util[_0xedd5('0x45')](_0xedd5('0x47'),_0x4fef48))[_0xedd5('0x48')](_0xedd5('0x49'),_0x3f4ddc);}exports['cs']=function(_0x546501,_0x375a2b,_0x22b8d0,_0x28c67c,_0x4c2355,_0x117393,_0x555341,_0x425de8){var _0x45222e={};_0x117393[_0xedd5('0x9')]=intUtil[_0xedd5('0x4a')](_0x117393['remoteUri']);_0x117393['serverUrl']=intUtil['stripTrailingSlash'](_0x117393[_0xedd5('0x4b')]);_0x45222e[_0xedd5('0x41')]=_0x425de8===_0xedd5('0x42')||_0x425de8===_0xedd5('0x4c')?_0xedd5('0x42'):'outbound';var _0x2557bb=util[_0xedd5('0x45')](_0xedd5('0x4d'),_0x117393['remoteUri']);var _0x94f319=util['format'](_0xedd5('0x4e'),_0x117393['tenantId']);var _0x7f84c9=util[_0xedd5('0x45')](_0xedd5('0x4f'),_0x117393[_0xedd5('0x4b')],_0x375a2b[_0xedd5('0x50')],md5(_0x375a2b[_0xedd5('0x50')]));if(_0x4c2355&&_0x4c2355['monitor_format']){logger[_0xedd5('0x1d')]('[QUEUE]',_0xedd5('0x51'));_0x375a2b[_0xedd5('0x52')]=_0x7f84c9;}else if(_0x555341&&_0x555341[_0xedd5('0x53')]&&_0x555341['recordingFormat']!==_0xedd5('0x54')){logger[_0xedd5('0x1d')](_0xedd5('0x55'),_0xedd5('0x51'));_0x375a2b[_0xedd5('0x52')]=_0x7f84c9;}else{_0x375a2b['recordingURL']='';}return getUser(_0x45222e,_0x117393,_0x28c67c,_0x94f319,_0x2557bb,_0x425de8)[_0xedd5('0x14')](function(_0x75e20e){logger[_0xedd5('0x1d')]('['+_0x425de8[_0xedd5('0xf')]()+_0xedd5('0x56'),_0x75e20e[_0xedd5('0x23')]);logger['info']('['+_0x425de8['toUpperCase']()+']\x20The\x20User\x20email\x20is:',_0x75e20e['userEmail']);return getEndUser(_0x75e20e,_0x117393,_0x94f319,_0x2557bb,_0x375a2b,_0x425de8);})['then'](function(_0x4f0fbc){logger[_0xedd5('0x1d')]('['+_0x425de8[_0xedd5('0xf')]()+_0xedd5('0x57'),_0x4f0fbc[_0xedd5('0x27')]);logger['info']('['+_0x425de8['toUpperCase']()+']\x20The\x20Enduser\x20phone\x20is:',_0x375a2b[_0xedd5('0x2a')]);return getTicket(_0x4f0fbc,_0x117393,_0x94f319,_0x2557bb,_0x375a2b,_0x22b8d0,_0x425de8);})[_0xedd5('0x14')](function(_0x769c55){logger['info'](util[_0xedd5('0x45')]('['+_0x425de8[_0xedd5('0xf')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x22b8d0[_0xedd5('0x3d')],_0x769c55[_0xedd5('0x44')]));logger['info'](util['format']('['+_0x425de8['toUpperCase']()+_0xedd5('0x58'),_0x425de8));if(_0x425de8!==_0xedd5('0x4c')){logger[_0xedd5('0x1d')]('['+_0x425de8[_0xedd5('0xf')]()+']',_0xedd5('0x59'));emit(_0x117393['remoteUri'],_0x28c67c['name'],_0x22b8d0[_0xedd5('0x3d')],_0x769c55[_0xedd5('0x44')]);}})[_0xedd5('0xd')](function(_0x22611d){logger['error']('['+_0x425de8['toUpperCase']()+_0xedd5('0x5a'),util[_0xedd5('0x5b')](_0x22611d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xcc0e=['isNil','validateEmail','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','userEmail','toLowerCase','outbound','calleridnum','contacts','/systemusers(','4.0','headers','odata-entityid','substring','lastIndexOf','enduserId','destcalleridnum','replace','%2b','telephone1','contactid','toUpperCase',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','string','picklist','nameField','customField','idField','indexOf','content','ticketType','incident','incidents','assign','getString','Subjects','/contacts(','Fields','phonecall','phonecalls','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','inspect','lodash','request-promise','util','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','access_token','catch','error','message','then','GET','Bearer\x20','value'];(function(_0x1dd5e8,_0x2a836c){var _0x56fa24=function(_0x256d65){while(--_0x256d65){_0x1dd5e8['push'](_0x1dd5e8['shift']());}};_0x56fa24(++_0x2a836c);}(_0xcc0e,0x116));var _0xecc0=function(_0x4645b7,_0xbfe48b){_0x4645b7=_0x4645b7-0x0;var _0x2bc37a=_0xcc0e[_0x4645b7];return _0x2bc37a;};'use strict';var _=require(_0xecc0('0x0'));var BPromise=require('bluebird');var rp=require(_0xecc0('0x1'));var util=require(_0xecc0('0x2'));var intUtil=require('./util');var md5=require('md5');var Redis=require(_0xecc0('0x3'));var logger=require(_0xecc0('0x4'))(_0xecc0('0x5'));var config=require(_0xecc0('0x6'));config[_0xecc0('0x7')]=_[_0xecc0('0x8')](config[_0xecc0('0x7')],{'host':_0xecc0('0x9'),'port':0x18eb});var io=require(_0xecc0('0xa'))(new Redis(config[_0xecc0('0x7')]));function getAuthToken(_0x1ab894,_0x1f3b60,_0x46bca2){var _0x35dd37={'method':_0xecc0('0xb'),'uri':_0x1f3b60,'form':{'client_id':_0x1ab894[_0xecc0('0xc')],'resource':_0x1ab894[_0xecc0('0xd')],'username':_0x1ab894[_0xecc0('0xe')],'password':_0x1ab894[_0xecc0('0xf')],'grant_type':'password','client_secret':_0x1ab894[_0xecc0('0x10')]},'json':!![]};return rp(_0x35dd37)['then'](function(_0x49d48a){return _0x49d48a[_0xecc0('0x11')];})[_0xecc0('0x12')](function(_0x1a7cb9){logger[_0xecc0('0x13')]('['+[_0x46bca2['toUpperCase']()]+']\x20Wrong\x20credentials!');return _0x1a7cb9[_0xecc0('0x14')];});}function getUser(_0x29f532,_0x26eb09,_0x507ac9,_0x4bb9b6,_0x4afee4,_0x2586df){return new BPromise(function(_0x2025bc,_0x30aea8){return getAuthToken(_0x26eb09,_0x4bb9b6,_0x2586df)[_0xecc0('0x15')](function(_0x951891){var _0x34833e={'method':_0xecc0('0x16'),'uri':_0x4afee4+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0xecc0('0x17')+_0x951891,'OData-Version':'4.0'},'json':!![]};return rp(_0x34833e);})[_0xecc0('0x15')](function(_0x193576){var _0x299825=_0x193576[_0xecc0('0x18')];var _0x4e0d02=![];var _0x46ed63=null;if(!_[_0xecc0('0x19')](_0x507ac9)){if(intUtil[_0xecc0('0x1a')](_0x507ac9[_0xecc0('0x1b')])){_0x29f532['userEmail']=_0x507ac9[_0xecc0('0x1b')];for(_0x46ed63=0x0;_0x46ed63<_0x299825[_0xecc0('0x1c')];_0x46ed63++){if(_0x299825[_0x46ed63][_0xecc0('0x1d')]===_0x507ac9['email']&&!_0x299825[_0x46ed63][_0xecc0('0x1e')]){_0x4e0d02=!![];logger[_0xecc0('0x1f')]('['+[_0x2586df['toUpperCase']()]+_0xecc0('0x20')+_0x299825[_0x46ed63][_0xecc0('0x21')]+'!');_0x29f532[_0xecc0('0x22')]=_0x299825[_0x46ed63][_0xecc0('0x21')];}}}}if(!_0x4e0d02){logger[_0xecc0('0x1f')]('['+[_0x2586df['toUpperCase']()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x29f532[_0xecc0('0x23')]=_0x26eb09['username'];for(_0x46ed63=0x0;_0x46ed63<_0x299825[_0xecc0('0x1c')];_0x46ed63++){if(_0x299825[_0x46ed63][_0xecc0('0x1d')]===_0x26eb09[_0xecc0('0xe')]){_0x29f532[_0xecc0('0x22')]=_0x299825[_0x46ed63][_0xecc0('0x21')];}}}_0x2025bc(_0x29f532);})[_0xecc0('0x12')](function(_0x382555){_0x30aea8(_0x382555[_0xecc0('0x14')]);});});}function createEndUser(_0x4508b4,_0x2b19fc,_0x52d381,_0x51e1e4,_0xcfa049,_0x5b4e1e){return new BPromise(function(_0x1c66d4,_0x3c583d){return getAuthToken(_0x2b19fc,_0x52d381,_0x5b4e1e)[_0xecc0('0x15')](function(_0x28abdc){var _0x535362=_0x5b4e1e[_0xecc0('0x24')]()===_0xecc0('0x25')?_0xcfa049['destcalleridnum']:_0xcfa049[_0xecc0('0x26')];var _0x246bd1={'method':'POST','uri':_0x51e1e4+_0xecc0('0x27'),'body':{'telephone1':_0x535362,'fullname':_0x535362,'firstname':_0x535362,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xecc0('0x28')+_0x4508b4['userId']+')'},'headers':{'Authorization':_0xecc0('0x17')+_0x28abdc,'OData-Version':_0xecc0('0x29')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x246bd1);})[_0xecc0('0x15')](function(_0x3d143b){var _0x33cca2=_0x3d143b[_0xecc0('0x2a')][_0xecc0('0x2b')];var _0x4b039f=_0x33cca2[_0xecc0('0x2c')](_0x33cca2[_0xecc0('0x2d')]('(')+0x1,_0x33cca2['lastIndexOf'](')'));_0x4508b4[_0xecc0('0x2e')]=_0x4b039f;_0x1c66d4(_0x4508b4);})[_0xecc0('0x12')](function(_0x1d8cd0){_0x3c583d(_0x1d8cd0[_0xecc0('0x14')]);});});}function getEndUser(_0x3473c4,_0x433444,_0x1d9190,_0x1c0a95,_0x3c6531,_0x59d068){return new BPromise(function(_0x8502ee,_0x38e426){var _0x2c5623=_0x59d068[_0xecc0('0x24')]()===_0xecc0('0x25')?_0x3c6531[_0xecc0('0x2f')]:_0x3c6531[_0xecc0('0x26')];return getAuthToken(_0x433444,_0x1d9190,_0x59d068)['then'](function(_0x2ba808){var _0x171dac={'method':_0xecc0('0x16'),'uri':_0x1c0a95+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x2c5623[_0xecc0('0x30')]('+',_0xecc0('0x31'))+'\x27','headers':{'Authorization':_0xecc0('0x17')+_0x2ba808,'If-None-Match':null,'OData-Version':_0xecc0('0x29')},'json':!![]};return rp(_0x171dac);})['then'](function(_0x540c28){var _0x1b58a7=null;if(_0x540c28){var _0xc17c67=_0x540c28[_0xecc0('0x18')];var _0x2c7d8c=![];for(_0x1b58a7=0x0;_0x1b58a7<_0xc17c67[_0xecc0('0x1c')];_0x1b58a7++){if(_0xc17c67[_0x1b58a7][_0xecc0('0x32')]===_0x2c5623){_0x2c7d8c=!![];_0x3473c4[_0xecc0('0x2e')]=_0xc17c67[_0x1b58a7][_0xecc0('0x33')];}}if(_0x2c7d8c){_0x8502ee(_0x3473c4);}else{return createEndUser(_0x3473c4,_0x433444,_0x1d9190,_0x1c0a95,_0x3c6531,_0x59d068)['then'](function(_0x2e753d){logger[_0xecc0('0x1f')]('['+[_0x59d068[_0xecc0('0x34')]()]+_0xecc0('0x35'),_0x2e753d[_0xecc0('0x2e')]);_0x8502ee(_0x2e753d);});}}else{return createEndUser(_0x3473c4,_0x433444,_0x1d9190,_0x1c0a95,_0x3c6531,_0x59d068)['then'](function(_0x359930){logger[_0xecc0('0x1f')]('['+[_0x59d068['toUpperCase']()]+_0xecc0('0x36'),_0x359930[_0xecc0('0x2e')]);_0x8502ee(_0x359930);});}});});}function getCustomFields(_0x58a912,_0x16345b,_0x443abc){var _0x4d84b1={};if(_0x58a912[_0xecc0('0x1c')]>0x0){_[_0xecc0('0x37')](_0x58a912,function(_0x4da3c1){if(_['includes']([_0xecc0('0x38'),_0xecc0('0x39')],_0x4da3c1['type'])&&_0x4da3c1[_0xecc0('0x3a')]&&!_0x4da3c1[_0xecc0('0x3b')]){var _0x43ebcc=_0x4da3c1[_0xecc0('0x3c')]['toLowerCase']();var _0x1ab352=_0x43ebcc[_0xecc0('0x2c')](0x0,_0x43ebcc[_0xecc0('0x3d')]('_'));var _0x240bad=_0x43ebcc[_0xecc0('0x2c')](_0x43ebcc[_0xecc0('0x3d')]('_')+0x1);if(_0x1ab352===_0x443abc){_0x4d84b1[_0x240bad]=_0x4da3c1[_0xecc0('0x3e')];}}});}return _0x4d84b1;}function getTicket(_0x57c612,_0x1ab958,_0x26f88d,_0x4d7f8c,_0x43ab44,_0x13e1f8,_0x5c433d){return new BPromise(function(_0x296a28,_0x552b9c){var _0x56e7e9;return getAuthToken(_0x1ab958,_0x26f88d,_0x5c433d)[_0xecc0('0x15')](function(_0xa342fd){if(_0x13e1f8[_0xecc0('0x3f')]===_0xecc0('0x40')){_0x56e7e9={'method':_0xecc0('0xb'),'uri':_0x4d7f8c+_0xecc0('0x41'),'body':Object[_0xecc0('0x42')]({},{'title':intUtil[_0xecc0('0x43')](_0x13e1f8[_0xecc0('0x44')],_0x43ab44,'\x20'),'description':intUtil[_0xecc0('0x43')](_0x13e1f8['Descriptions'],_0x43ab44,'\x0a'),'customerid_contact@odata.bind':_0xecc0('0x45')+_0x57c612[_0xecc0('0x2e')]+')','ownerid@odata.bind':_0xecc0('0x28')+_0x57c612[_0xecc0('0x22')]+')','caseorigincode':'1'},getCustomFields(_0x13e1f8[_0xecc0('0x46')],_0x43ab44,_0x13e1f8[_0xecc0('0x3f')])),'headers':{'Authorization':_0xecc0('0x17')+_0xa342fd,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x13e1f8[_0xecc0('0x3f')]===_0xecc0('0x47')){_0x56e7e9={'method':'POST','uri':_0x4d7f8c+_0xecc0('0x48'),'body':Object[_0xecc0('0x42')]({},{'subject':intUtil[_0xecc0('0x43')](_0x13e1f8[_0xecc0('0x44')],_0x43ab44,'\x20'),'phonenumber':String(_0x43ab44['calleridnum']),'description':intUtil[_0xecc0('0x43')](_0x13e1f8['Descriptions'],_0x43ab44,'\x0a'),'regardingobjectid_contact@odata.bind':_0xecc0('0x45')+_0x57c612[_0xecc0('0x2e')]+')','ownerid@odata.bind':'/systemusers('+_0x57c612[_0xecc0('0x22')]+')','directioncode':_0x57c612[_0xecc0('0x49')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x57c612[_0xecc0('0x22')]+')','participationtypemask':_0x57c612[_0xecc0('0x49')]===_0xecc0('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':_0xecc0('0x45')+_0x57c612[_0xecc0('0x2e')]+')','participationtypemask':_0x57c612[_0xecc0('0x49')]===_0xecc0('0x4a')?0x1:0x2}]},getCustomFields(_0x13e1f8['Fields'],_0x43ab44,_0x13e1f8[_0xecc0('0x3f')])),'headers':{'Authorization':_0xecc0('0x17')+_0xa342fd,'OData-Version':_0xecc0('0x29')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x56e7e9);})[_0xecc0('0x15')](function(_0xb167f3){var _0x5850a9=_0xb167f3['headers'][_0xecc0('0x2b')];var _0x11222d=_0x5850a9[_0xecc0('0x2c')](_0x5850a9[_0xecc0('0x2d')]('(')+0x1,_0x5850a9[_0xecc0('0x2d')](')'));_0x57c612[_0xecc0('0x4b')]=_0x11222d;_0x296a28(_0x57c612);})[_0xecc0('0x12')](function(_0x35f07e){_0x552b9c(_0x35f07e[_0xecc0('0x14')]);});});}function emit(_0x3cd3ff,_0x1b65e6,_0x495a54,_0x5c05a4){var _0xe9ce5d={'uri':util[_0xecc0('0x4c')](_0xecc0('0x4d'),_0x3cd3ff,_0x495a54,_0x5c05a4)};io['to'](util[_0xecc0('0x4c')](_0xecc0('0x4e'),_0x1b65e6))[_0xecc0('0x4f')](_0xecc0('0x50'),_0xe9ce5d);}exports['cs']=function(_0x45770a,_0x42470f,_0x43bdd5,_0x42a40f,_0x2e50c6,_0x36c2a3,_0x312342,_0x10ace2){var _0x434df2={};_0x36c2a3['remoteUri']=intUtil[_0xecc0('0x51')](_0x36c2a3['remoteUri']);_0x36c2a3[_0xecc0('0x52')]=intUtil['stripTrailingSlash'](_0x36c2a3[_0xecc0('0x52')]);_0x434df2[_0xecc0('0x49')]=_0x10ace2==='queue'||_0x10ace2===_0xecc0('0x53')?_0xecc0('0x4a'):'outbound';var _0x6676a=util[_0xecc0('0x4c')](_0xecc0('0x54'),_0x36c2a3[_0xecc0('0xd')]);var _0x44bc1a=util[_0xecc0('0x4c')](_0xecc0('0x55'),_0x36c2a3[_0xecc0('0x56')]);var _0x5e859d=util[_0xecc0('0x4c')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x36c2a3['serverUrl'],_0x42470f['uniqueid'],md5(_0x42470f[_0xecc0('0x57')]));if(_0x2e50c6&&_0x2e50c6[_0xecc0('0x58')]){logger[_0xecc0('0x1f')](_0xecc0('0x59'),_0xecc0('0x5a'));_0x42470f['recordingURL']=_0x5e859d;}else if(_0x312342&&_0x312342[_0xecc0('0x5b')]&&_0x312342[_0xecc0('0x5b')]!==_0xecc0('0x5c')){logger[_0xecc0('0x1f')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x42470f[_0xecc0('0x5d')]=_0x5e859d;}else{_0x42470f[_0xecc0('0x5d')]='';}return getUser(_0x434df2,_0x36c2a3,_0x42a40f,_0x44bc1a,_0x6676a,_0x10ace2)[_0xecc0('0x15')](function(_0x2752b1){logger['info']('['+_0x10ace2[_0xecc0('0x34')]()+_0xecc0('0x5e'),_0x2752b1[_0xecc0('0x22')]);logger[_0xecc0('0x1f')]('['+_0x10ace2['toUpperCase']()+_0xecc0('0x5f'),_0x2752b1[_0xecc0('0x23')]);return getEndUser(_0x2752b1,_0x36c2a3,_0x44bc1a,_0x6676a,_0x42470f,_0x10ace2);})[_0xecc0('0x15')](function(_0x3b71f9){logger[_0xecc0('0x1f')]('['+_0x10ace2['toUpperCase']()+_0xecc0('0x60'),_0x3b71f9['enduserId']);logger[_0xecc0('0x1f')]('['+_0x10ace2[_0xecc0('0x34')]()+_0xecc0('0x61'),_0x42470f[_0xecc0('0x26')]);return getTicket(_0x3b71f9,_0x36c2a3,_0x44bc1a,_0x6676a,_0x42470f,_0x43bdd5,_0x10ace2);})[_0xecc0('0x15')](function(_0x2bdb07){logger[_0xecc0('0x1f')](util['format']('['+_0x10ace2[_0xecc0('0x34')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x43bdd5['ticketType'],_0x2bdb07['ticketId']));logger['info'](util[_0xecc0('0x4c')]('['+_0x10ace2[_0xecc0('0x34')]()+']\x20Call\x20direction:\x20%s',_0x10ace2));if(_0x10ace2!==_0xecc0('0x53')){logger['info']('['+_0x10ace2[_0xecc0('0x34')]()+']',_0xecc0('0x62'));emit(_0x36c2a3[_0xecc0('0xd')],_0x42a40f[_0xecc0('0x63')],_0x43bdd5[_0xecc0('0x3f')],_0x2bdb07['ticketId']);}})[_0xecc0('0x12')](function(_0x307ad8){logger[_0xecc0('0x13')]('['+_0x10ace2[_0xecc0('0x34')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0xecc0('0x64')](_0x307ad8,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 7e68f79..f8e00cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa94f=['[HTTP]','stringify','GET','length','map','forEach','includes','picklist','type','nameField','customField','content','string','idField','push','variable','variableName','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','%s/helpdesk/tickets/%d','catch','[QUEUE]','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','error','unmanaged','lastevent','request-promise','md5','util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','Ticket\x20created!','%s/api/v2/agents','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','then','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug'];(function(_0xa60351,_0x1ce888){var _0x59f0d5=function(_0x14dd6e){while(--_0x14dd6e){_0xa60351['push'](_0xa60351['shift']());}};_0x59f0d5(++_0x1ce888);}(_0xa94f,0x146));var _0xfa94=function(_0x5ca41b,_0x4f5169){_0x5ca41b=_0x5ca41b-0x0;var _0x2c2cf1=_0xa94f[_0x5ca41b];return _0x2c2cf1;};'use strict';var _=require('lodash');var rp=require(_0xfa94('0x0'));var md5=require(_0xfa94('0x1'));var util=require(_0xfa94('0x2'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0xfa94('0x3'));var logger=require('../../../../config/logger')('freshdesk');config[_0xfa94('0x4')]=_[_0xfa94('0x5')](config[_0xfa94('0x4')],{'host':_0xfa94('0x6'),'port':0x18eb});var io=require(_0xfa94('0x7'))(new Redis(config['redis']));var headers={'Content-Type':_0xfa94('0x8'),'Accept':'application/json'};function emit(_0x234171,_0x589764,_0x5a73fc){io['to'](_0x234171)[_0xfa94('0x9')](_0x589764,_0x5a73fc);}function getTicket(_0xcea0f,_0x4bea65,_0x542e69,_0x29f773,_0x5f3061){logger[_0xfa94('0xa')](_0xfa94('0xb'));var _0x2e8a74=_['merge']({'responder_id':_0x4bea65['id'],'requester_id':_0x542e69['id'],'name':util[_0xfa94('0xc')](_0xfa94('0xd'),_0x5f3061[_0xfa94('0xe')]),'phone':_0x5f3061[_0xfa94('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xfa94('0x10')](_0x29f773[_0xfa94('0x11')],_0x5f3061,'\x20'),'description':intUtil['getString'](_0x29f773[_0xfa94('0x12')],_0x5f3061,_0xfa94('0x13')),'tags':getTags(_0x29f773[_0xfa94('0x14')],_0xfa94('0x15'))},getCustomFields(_0x29f773[_0xfa94('0x16')],_0x5f3061));_0x2e8a74[_0xfa94('0x17')]=_[_0xfa94('0x18')](_[_0xfa94('0x19')](_0x2e8a74[_0xfa94('0x17')],'id'),_0xfa94('0x1a'));return request({'uri':util[_0xfa94('0xc')](_0xfa94('0x1b'),_0xcea0f[_0xfa94('0x1c')]),'method':_0xfa94('0x1d'),'body':_0x2e8a74})['then'](function(_0x545a56){logger[_0xfa94('0xa')](_0xfa94('0x1e'));return _0x545a56;});}function getUser(_0x1b517f,_0x143b32){if(intUtil['validateEmail'](_0x143b32)){return request({'uri':util['format'](_0xfa94('0x1f'),_0x1b517f[_0xfa94('0x1c')]),'qs':{'email':_0x143b32}})['then'](function(_0x2cb6af){if(_0x2cb6af['length']){logger['info'](_0xfa94('0x20'));return _[_0xfa94('0x21')](_0x2cb6af,function(_0x2d3610){return _0x2d3610[_0xfa94('0x22')][_0xfa94('0x23')]===_0x143b32;});}else{logger['info'](_0xfa94('0x24'));return request({'uri':util[_0xfa94('0xc')](_0xfa94('0x25'),_0x1b517f[_0xfa94('0x1c')])})[_0xfa94('0x26')](function(_0x22cdb1){logger[_0xfa94('0xa')](_0xfa94('0x27'));return _0x22cdb1;});}});}else{logger['info'](_0xfa94('0x28'));return request({'uri':util['format'](_0xfa94('0x25'),_0x1b517f['remoteUri'])})['then'](function(_0x19516d){logger[_0xfa94('0xa')](_0xfa94('0x27'));return _0x19516d;});}}function getEndUser(_0x1d452d,_0x5b047c,_0x17d572){logger['info'](_0xfa94('0x29'),_0x17d572);return request({'uri':util[_0xfa94('0xc')](_0xfa94('0x2a'),_0x1d452d[_0xfa94('0x1c')]),'qs':{'phone':_0x17d572}})[_0xfa94('0x26')](function(_0x278c3f){if(_0x278c3f['length']){logger[_0xfa94('0xa')]('Enduser\x20found!');return _[_0xfa94('0x21')](_0x278c3f,{'phone':_0x17d572});}else{logger[_0xfa94('0xa')](_0xfa94('0x2b'));return request({'uri':util[_0xfa94('0xc')](_0xfa94('0x2a'),_0x1d452d[_0xfa94('0x1c')]),'method':_0xfa94('0x1d'),'body':{'name':_0x5b047c,'phone':_0x17d572}})[_0xfa94('0x26')](function(_0x15c5c6){logger[_0xfa94('0xa')](_0xfa94('0x2c'));return _0x15c5c6;});}});}function getAuth(_0x43e66b){return util[_0xfa94('0xc')](_0xfa94('0x2d'),new Buffer(_0x43e66b[_0xfa94('0x2e')]+':X')[_0xfa94('0x2f')](_0xfa94('0x30')));}function request(_0x54df24){logger[_0xfa94('0x31')](_0xfa94('0x32'),JSON[_0xfa94('0x33')](_0x54df24));return rp(_[_0xfa94('0x5')](_0x54df24,{'method':_0xfa94('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x1e33bc,_0x4c66b3){var _0xf88cd1=[];if(_0x1e33bc&&_0x1e33bc[_0xfa94('0x35')]>0x0){_0xf88cd1=_[_0xfa94('0x36')](_0x1e33bc,_0x4c66b3);}return _0xf88cd1;}function getCustomFields(_0x482730,_0x3e9fc1){var _0x54b706=[];var _0x1bbc9c={'custom_fields':[]};if(_0x482730['length']>0x0){_[_0xfa94('0x37')](_0x482730,function(_0x193b0f){if(_[_0xfa94('0x38')](['string',_0xfa94('0x39')],_0x193b0f[_0xfa94('0x3a')])&&_0x193b0f[_0xfa94('0x3b')]&&!_0x193b0f[_0xfa94('0x3c')]){_0x1bbc9c[_0x193b0f[_0xfa94('0x3b')]['toLowerCase']()]=_0x193b0f[_0xfa94('0x3d')][_0xfa94('0x2f')]();}else if(_[_0xfa94('0x38')]([_0xfa94('0x3e'),_0xfa94('0x39')],_0x193b0f[_0xfa94('0x3a')])&&_0x193b0f[_0xfa94('0x3f')]&&_0x193b0f[_0xfa94('0x3c')]){_0x1bbc9c[_0xfa94('0x17')][_0xfa94('0x40')]({'id':_0x193b0f['idField'],'value':_0x193b0f['content'][_0xfa94('0x2f')]()});}else if(_0x193b0f[_0xfa94('0x3a')]===_0xfa94('0x41')&&_0x193b0f['variableName']&&_0x193b0f['idField']&&_0x193b0f[_0xfa94('0x3c')]){_0x3e9fc1[_0x193b0f[_0xfa94('0x42')]]&&_0x1bbc9c[_0xfa94('0x17')][_0xfa94('0x40')]({'id':_0x193b0f[_0xfa94('0x3f')],'value':_0x3e9fc1[_0x193b0f[_0xfa94('0x42')]][_0xfa94('0x2f')]()});}else if(_0x193b0f[_0xfa94('0x3a')]===_0xfa94('0x43')&&_0x193b0f[_0xfa94('0x44')]&&_0x193b0f[_0xfa94('0x44')]['name']&&_0x193b0f[_0xfa94('0x3f')]&&_0x193b0f[_0xfa94('0x3c')]){_0x3e9fc1[_0x193b0f[_0xfa94('0x44')]['name'][_0xfa94('0x45')]()]&&_0x1bbc9c['custom_fields'][_0xfa94('0x40')]({'id':_0x193b0f['idField'],'value':_0x3e9fc1[_0x193b0f[_0xfa94('0x44')]['name']['toLowerCase']()][_0xfa94('0x2f')]()});}});}return _0x1bbc9c;}exports[_0xfa94('0x46')]=function(_0x46d82a,_0x440708,_0xb23b80,_0x1104ff,_0x15c429,_0xd16f5f){var _0x1ddb50,_0x3890ea;_0xd16f5f[_0xfa94('0x1c')]=intUtil[_0xfa94('0x47')](_0xd16f5f['remoteUri']);_0xd16f5f[_0xfa94('0x48')]=intUtil[_0xfa94('0x47')](_0xd16f5f[_0xfa94('0x48')]);if(_0x15c429&&_0x15c429[_0xfa94('0x49')]){logger['info']('[QUEUE]',_0xfa94('0x4a'));_0x440708[_0xfa94('0x4b')]=util['format'](_0xfa94('0x4c'),_0xd16f5f['serverUrl'],_0x440708[_0xfa94('0x4d')],md5(_0x440708[_0xfa94('0x4d')]));}else{_0x440708[_0xfa94('0x4b')]='';}headers[_0xfa94('0x4e')]=getAuth(_0xd16f5f);return getUser(_0xd16f5f,_0x1104ff[_0xfa94('0x23')])['then'](function(_0x21b5f8){_0x1ddb50=_0x21b5f8;logger[_0xfa94('0xa')](_0xfa94('0x4f'),_0x1ddb50['id']);return getEndUser(_0xd16f5f,_0x440708['calleridname'],_0x440708[_0xfa94('0xf')]);})[_0xfa94('0x26')](function(_0x58ceda){_0x3890ea=_0x58ceda;logger[_0xfa94('0xa')](_0xfa94('0x50'),_0x3890ea['id']);return getTicket(_0xd16f5f,_0x1ddb50,_0x3890ea,_0xb23b80,_0x440708);})[_0xfa94('0x26')](function(_0x621dd){if(_0x621dd&&_0x621dd['id']){logger[_0xfa94('0xa')](_0xfa94('0x1e'));logger[_0xfa94('0xa')](_0xfa94('0x51'),_0x621dd['id']);logger[_0xfa94('0xa')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xfa94('0x52'),_0x1104ff['name']),'trigger:browser:url',{'uri':util['format'](_0xfa94('0x53'),_0xd16f5f[_0xfa94('0x1c')],_0x621dd['id'])});}})[_0xfa94('0x54')](function(_0x17310a){logger['error'](_0xfa94('0x55'),JSON[_0xfa94('0x33')](_0x17310a));});};exports[_0xfa94('0x56')]=function(_0x27365b,_0x2ab561,_0x2b3c0b,_0x383a01,_0x4936d1,_0x46623e,_0x46ed02){var _0x1c92d0,_0x30d4df;_0x46623e['remoteUri']=intUtil[_0xfa94('0x47')](_0x46623e[_0xfa94('0x1c')]);_0x46623e[_0xfa94('0x48')]=intUtil[_0xfa94('0x47')](_0x46623e[_0xfa94('0x48')]);if(_0x46ed02&&_0x46ed02['recordingFormat']&&_0x46ed02[_0xfa94('0x57')]!=='none'){logger[_0xfa94('0xa')](_0xfa94('0x58'),_0xfa94('0x4a'));_0x2ab561[_0xfa94('0x4b')]=util['format'](_0xfa94('0x4c'),_0x46623e['serverUrl'],_0x2ab561[_0xfa94('0x4d')],md5(_0x2ab561[_0xfa94('0x4d')]));}headers[_0xfa94('0x4e')]=getAuth(_0x46623e);return getUser(_0x46623e,_0x383a01[_0xfa94('0x23')])[_0xfa94('0x26')](function(_0xc153cf){_0x1c92d0=_0xc153cf;logger['info'](_0xfa94('0x4f'),_0x1c92d0['id']);return getEndUser(_0x46623e,_0x2ab561[_0xfa94('0x59')],_0x2ab561[_0xfa94('0x5a')]);})['then'](function(_0x19f08d){_0x30d4df=_0x19f08d;logger[_0xfa94('0xa')](_0xfa94('0x50'),_0x30d4df['id']);return getTicket(_0x46623e,_0x1c92d0,_0x30d4df,_0x2b3c0b,_0x2ab561);})['then'](function(_0x235404){if(_0x235404&&_0x235404['id']){logger[_0xfa94('0xa')]('Ticket\x20created!');logger[_0xfa94('0xa')](_0xfa94('0x51'),_0x235404['id']);logger[_0xfa94('0xa')](_0xfa94('0x58'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xfa94('0xc')](_0xfa94('0x52'),_0x383a01['name']),'trigger:browser:url',{'uri':util[_0xfa94('0xc')](_0xfa94('0x53'),_0x46623e[_0xfa94('0x1c')],_0x235404['id'])});}})[_0xfa94('0x54')](function(_0x50f137){logger[_0xfa94('0x5b')](_0xfa94('0x58'),JSON[_0xfa94('0x33')](_0x50f137));});};exports[_0xfa94('0x5c')]=function(_0x572f08,_0x256513,_0x1af350,_0x11ab71,_0x28b029,_0x310a5e){var _0x55ce38,_0x44f21e;_0x310a5e[_0xfa94('0x1c')]=intUtil[_0xfa94('0x47')](_0x310a5e['remoteUri']);_0x310a5e[_0xfa94('0x48')]=intUtil[_0xfa94('0x47')](_0x310a5e[_0xfa94('0x48')]);if(_0x28b029&&_0x28b029[_0xfa94('0x49')]){logger[_0xfa94('0xa')]('['+_0x256513['lastevent']['toUpperCase']()+']',_0xfa94('0x4a'));_0x256513[_0xfa94('0x4b')]=util['format'](_0xfa94('0x4c'),_0x310a5e['serverUrl'],_0x256513['uniqueid'],md5(_0x256513[_0xfa94('0x4d')]));}else{_0x256513[_0xfa94('0x4b')]='';}headers[_0xfa94('0x4e')]=getAuth(_0x310a5e);return getUser(_0x310a5e,'')[_0xfa94('0x26')](function(_0x5dd38f){_0x55ce38=_0x5dd38f;logger[_0xfa94('0xa')](_0xfa94('0x4f'),_0x55ce38['id']);return getEndUser(_0x310a5e,_0x256513[_0xfa94('0xe')],_0x256513[_0xfa94('0xf')]);})['then'](function(_0x53b382){_0x44f21e=_0x53b382;logger['info']('The\x20Enduser\x20ID\x20is:',_0x44f21e['id']);return getTicket(_0x310a5e,_0x55ce38,_0x44f21e,_0x1af350,_0x256513);})[_0xfa94('0x26')](function(_0x59cce0){if(_0x59cce0){logger[_0xfa94('0xa')](_0xfa94('0x1e'));logger[_0xfa94('0xa')](_0xfa94('0x51'),_0x59cce0['id']);}})[_0xfa94('0x54')](function(_0x295d8d){logger[_0xfa94('0x5b')]('['+_0x256513[_0xfa94('0x5d')]['toUpperCase']()+']',JSON[_0xfa94('0x33')](_0x295d8d));});};
\ No newline at end of file
+var _0xbdb3=['stringify','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','error','unmanaged','lastevent','toUpperCase','The\x20User\x20ID\x20is:','lodash','request-promise','md5','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Descriptions','<br>','Tags','Fields','custom_fields','mapValues','keyBy','%s/api/v2/tickets','POST','then','Ticket\x20created!','%s/api/v2/agents','remoteUri','length','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','toString','base64','GET','map','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','push','idField','variable','variableName','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch'];(function(_0x3ff181,_0x75d40e){var _0x1589c3=function(_0x34231b){while(--_0x34231b){_0x3ff181['push'](_0x3ff181['shift']());}};_0x1589c3(++_0x75d40e);}(_0xbdb3,0x1d2));var _0x3bdb=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xbdb3[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0x3bdb('0x0'));var rp=require(_0x3bdb('0x1'));var md5=require(_0x3bdb('0x2'));var util=require('util');var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x3bdb('0x3'));var logger=require(_0x3bdb('0x4'))(_0x3bdb('0x5'));config[_0x3bdb('0x6')]=_[_0x3bdb('0x7')](config[_0x3bdb('0x6')],{'host':_0x3bdb('0x8'),'port':0x18eb});var io=require(_0x3bdb('0x9'))(new Redis(config[_0x3bdb('0x6')]));var headers={'Content-Type':_0x3bdb('0xa'),'Accept':_0x3bdb('0xa')};function emit(_0x38eb8a,_0x54891,_0x4494d9){io['to'](_0x38eb8a)['emit'](_0x54891,_0x4494d9);}function getTicket(_0xb0dc6c,_0x5cfd11,_0x5606b8,_0x33a2df,_0x379e74){logger[_0x3bdb('0xb')](_0x3bdb('0xc'));var _0x40fda3=_[_0x3bdb('0xd')]({'responder_id':_0x5cfd11['id'],'requester_id':_0x5606b8['id'],'name':util[_0x3bdb('0xe')](_0x3bdb('0xf'),_0x379e74['calleridname']),'phone':_0x379e74[_0x3bdb('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x33a2df['Subjects'],_0x379e74,'\x20'),'description':intUtil[_0x3bdb('0x11')](_0x33a2df[_0x3bdb('0x12')],_0x379e74,_0x3bdb('0x13')),'tags':getTags(_0x33a2df[_0x3bdb('0x14')],'name')},getCustomFields(_0x33a2df[_0x3bdb('0x15')],_0x379e74));_0x40fda3[_0x3bdb('0x16')]=_[_0x3bdb('0x17')](_[_0x3bdb('0x18')](_0x40fda3[_0x3bdb('0x16')],'id'),'value');return request({'uri':util[_0x3bdb('0xe')](_0x3bdb('0x19'),_0xb0dc6c['remoteUri']),'method':_0x3bdb('0x1a'),'body':_0x40fda3})[_0x3bdb('0x1b')](function(_0x12e71f){logger[_0x3bdb('0xb')](_0x3bdb('0x1c'));return _0x12e71f;});}function getUser(_0x400f9a,_0x23e178){if(intUtil['validateEmail'](_0x23e178)){return request({'uri':util[_0x3bdb('0xe')](_0x3bdb('0x1d'),_0x400f9a[_0x3bdb('0x1e')]),'qs':{'email':_0x23e178}})['then'](function(_0x4f25af){if(_0x4f25af[_0x3bdb('0x1f')]){logger[_0x3bdb('0xb')]('Agent\x20found!');return _[_0x3bdb('0x20')](_0x4f25af,function(_0x42a166){return _0x42a166[_0x3bdb('0x21')][_0x3bdb('0x22')]===_0x23e178;});}else{logger[_0x3bdb('0xb')](_0x3bdb('0x23'));return request({'uri':util[_0x3bdb('0xe')](_0x3bdb('0x24'),_0x400f9a['remoteUri'])})[_0x3bdb('0x1b')](function(_0x57e3ec){logger[_0x3bdb('0xb')]('Admin\x20account\x20selected.');return _0x57e3ec;});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x3bdb('0xe')]('%s/api/v2/agents/me',_0x400f9a['remoteUri'])})[_0x3bdb('0x1b')](function(_0x164847){logger[_0x3bdb('0xb')](_0x3bdb('0x25'));return _0x164847;});}}function getEndUser(_0x3d674a,_0x853ed,_0x1a62c7){logger[_0x3bdb('0xb')](_0x3bdb('0x26'),_0x1a62c7);return request({'uri':util[_0x3bdb('0xe')]('%s/api/v2/contacts',_0x3d674a['remoteUri']),'qs':{'phone':_0x1a62c7}})[_0x3bdb('0x1b')](function(_0x5a4239){if(_0x5a4239[_0x3bdb('0x1f')]){logger[_0x3bdb('0xb')]('Enduser\x20found!');return _[_0x3bdb('0x20')](_0x5a4239,{'phone':_0x1a62c7});}else{logger[_0x3bdb('0xb')](_0x3bdb('0x27'));return request({'uri':util[_0x3bdb('0xe')](_0x3bdb('0x28'),_0x3d674a['remoteUri']),'method':'POST','body':{'name':_0x853ed,'phone':_0x1a62c7}})[_0x3bdb('0x1b')](function(_0x2112d8){logger[_0x3bdb('0xb')](_0x3bdb('0x29'));return _0x2112d8;});}});}function getAuth(_0x175dd9){return util[_0x3bdb('0xe')](_0x3bdb('0x2a'),new Buffer(_0x175dd9['apiKey']+':X')[_0x3bdb('0x2b')](_0x3bdb('0x2c')));}function request(_0x405deb){logger['debug']('[HTTP]',JSON['stringify'](_0x405deb));return rp(_['defaults'](_0x405deb,{'method':_0x3bdb('0x2d'),'headers':headers,'json':!![]}));}function getTags(_0x34194a,_0x49f119){var _0x4aadf6=[];if(_0x34194a&&_0x34194a['length']>0x0){_0x4aadf6=_[_0x3bdb('0x2e')](_0x34194a,_0x49f119);}return _0x4aadf6;}function getCustomFields(_0x297318,_0x162ac5){var _0x33417b=[];var _0x145723={'custom_fields':[]};if(_0x297318[_0x3bdb('0x1f')]>0x0){_[_0x3bdb('0x2f')](_0x297318,function(_0x54d038){if(_[_0x3bdb('0x30')](['string',_0x3bdb('0x31')],_0x54d038[_0x3bdb('0x32')])&&_0x54d038[_0x3bdb('0x33')]&&!_0x54d038[_0x3bdb('0x34')]){_0x145723[_0x54d038[_0x3bdb('0x33')][_0x3bdb('0x35')]()]=_0x54d038[_0x3bdb('0x36')]['toString']();}else if(_[_0x3bdb('0x30')]([_0x3bdb('0x37'),_0x3bdb('0x31')],_0x54d038[_0x3bdb('0x32')])&&_0x54d038['idField']&&_0x54d038[_0x3bdb('0x34')]){_0x145723[_0x3bdb('0x16')][_0x3bdb('0x38')]({'id':_0x54d038[_0x3bdb('0x39')],'value':_0x54d038[_0x3bdb('0x36')][_0x3bdb('0x2b')]()});}else if(_0x54d038[_0x3bdb('0x32')]===_0x3bdb('0x3a')&&_0x54d038[_0x3bdb('0x3b')]&&_0x54d038['idField']&&_0x54d038['customField']){_0x162ac5[_0x54d038[_0x3bdb('0x3b')]]&&_0x145723[_0x3bdb('0x16')][_0x3bdb('0x38')]({'id':_0x54d038[_0x3bdb('0x39')],'value':_0x162ac5[_0x54d038[_0x3bdb('0x3b')]]['toString']()});}else if(_0x54d038[_0x3bdb('0x32')]===_0x3bdb('0x3c')&&_0x54d038[_0x3bdb('0x3d')]&&_0x54d038[_0x3bdb('0x3d')][_0x3bdb('0x3e')]&&_0x54d038[_0x3bdb('0x39')]&&_0x54d038[_0x3bdb('0x34')]){_0x162ac5[_0x54d038[_0x3bdb('0x3d')][_0x3bdb('0x3e')][_0x3bdb('0x35')]()]&&_0x145723[_0x3bdb('0x16')]['push']({'id':_0x54d038[_0x3bdb('0x39')],'value':_0x162ac5[_0x54d038['Variable'][_0x3bdb('0x3e')][_0x3bdb('0x35')]()][_0x3bdb('0x2b')]()});}});}return _0x145723;}exports[_0x3bdb('0x3f')]=function(_0x556d60,_0x221dd7,_0x590bdd,_0x236fd5,_0x93288a,_0x5042ce){var _0x2cb883,_0x242141;_0x5042ce[_0x3bdb('0x1e')]=intUtil[_0x3bdb('0x40')](_0x5042ce[_0x3bdb('0x1e')]);_0x5042ce[_0x3bdb('0x41')]=intUtil[_0x3bdb('0x40')](_0x5042ce[_0x3bdb('0x41')]);if(_0x93288a&&_0x93288a[_0x3bdb('0x42')]){logger['info'](_0x3bdb('0x43'),_0x3bdb('0x44'));_0x221dd7['recordingURL']=util[_0x3bdb('0xe')](_0x3bdb('0x45'),_0x5042ce[_0x3bdb('0x41')],_0x221dd7[_0x3bdb('0x46')],md5(_0x221dd7[_0x3bdb('0x46')]));}else{_0x221dd7[_0x3bdb('0x47')]='';}headers[_0x3bdb('0x48')]=getAuth(_0x5042ce);return getUser(_0x5042ce,_0x236fd5['email'])[_0x3bdb('0x1b')](function(_0x4f79f3){_0x2cb883=_0x4f79f3;logger[_0x3bdb('0xb')]('The\x20User\x20ID\x20is:',_0x2cb883['id']);return getEndUser(_0x5042ce,_0x221dd7[_0x3bdb('0x49')],_0x221dd7['calleridnum']);})['then'](function(_0x241275){_0x242141=_0x241275;logger[_0x3bdb('0xb')](_0x3bdb('0x4a'),_0x242141['id']);return getTicket(_0x5042ce,_0x2cb883,_0x242141,_0x590bdd,_0x221dd7);})['then'](function(_0x1c66ea){if(_0x1c66ea&&_0x1c66ea['id']){logger[_0x3bdb('0xb')](_0x3bdb('0x1c'));logger[_0x3bdb('0xb')](_0x3bdb('0x4b'),_0x1c66ea['id']);logger[_0x3bdb('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3bdb('0xe')](_0x3bdb('0x4c'),_0x236fd5[_0x3bdb('0x3e')]),_0x3bdb('0x4d'),{'uri':util['format'](_0x3bdb('0x4e'),_0x5042ce[_0x3bdb('0x1e')],_0x1c66ea['id'])});}})[_0x3bdb('0x4f')](function(_0x1ea201){logger['error'](_0x3bdb('0x43'),JSON[_0x3bdb('0x50')](_0x1ea201));});};exports['outbound']=function(_0x4b0d6e,_0x4b269c,_0x38e231,_0xb9a8eb,_0x3a6b23,_0x12ae18,_0x329525){var _0x4ba7ad,_0x1cb7c0;_0x12ae18[_0x3bdb('0x1e')]=intUtil[_0x3bdb('0x40')](_0x12ae18[_0x3bdb('0x1e')]);_0x12ae18[_0x3bdb('0x41')]=intUtil[_0x3bdb('0x40')](_0x12ae18['serverUrl']);if(_0x329525&&_0x329525[_0x3bdb('0x51')]&&_0x329525['recordingFormat']!=='none'){logger['info'](_0x3bdb('0x52'),'Recording\x20is\x20enabled!');_0x4b269c[_0x3bdb('0x47')]=util['format'](_0x3bdb('0x45'),_0x12ae18[_0x3bdb('0x41')],_0x4b269c[_0x3bdb('0x46')],md5(_0x4b269c[_0x3bdb('0x46')]));}headers[_0x3bdb('0x48')]=getAuth(_0x12ae18);return getUser(_0x12ae18,_0xb9a8eb[_0x3bdb('0x22')])[_0x3bdb('0x1b')](function(_0x21b550){_0x4ba7ad=_0x21b550;logger[_0x3bdb('0xb')]('The\x20User\x20ID\x20is:',_0x4ba7ad['id']);return getEndUser(_0x12ae18,_0x4b269c[_0x3bdb('0x53')],_0x4b269c[_0x3bdb('0x54')]);})['then'](function(_0x439c43){_0x1cb7c0=_0x439c43;logger[_0x3bdb('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1cb7c0['id']);return getTicket(_0x12ae18,_0x4ba7ad,_0x1cb7c0,_0x38e231,_0x4b269c);})[_0x3bdb('0x1b')](function(_0x2fe0cb){if(_0x2fe0cb&&_0x2fe0cb['id']){logger['info']('Ticket\x20created!');logger[_0x3bdb('0xb')](_0x3bdb('0x4b'),_0x2fe0cb['id']);logger[_0x3bdb('0xb')](_0x3bdb('0x52'),_0x3bdb('0x55'));emit(util[_0x3bdb('0xe')]('user:%s',_0xb9a8eb[_0x3bdb('0x3e')]),'trigger:browser:url',{'uri':util[_0x3bdb('0xe')](_0x3bdb('0x4e'),_0x12ae18[_0x3bdb('0x1e')],_0x2fe0cb['id'])});}})[_0x3bdb('0x4f')](function(_0x2c4335){logger[_0x3bdb('0x56')](_0x3bdb('0x52'),JSON[_0x3bdb('0x50')](_0x2c4335));});};exports[_0x3bdb('0x57')]=function(_0x36d1dd,_0x3838e6,_0x2c8adf,_0x32990a,_0x4bba7d,_0x365eb3){var _0x3074e2,_0x289993;_0x365eb3['remoteUri']=intUtil[_0x3bdb('0x40')](_0x365eb3[_0x3bdb('0x1e')]);_0x365eb3[_0x3bdb('0x41')]=intUtil[_0x3bdb('0x40')](_0x365eb3[_0x3bdb('0x41')]);if(_0x4bba7d&&_0x4bba7d[_0x3bdb('0x42')]){logger[_0x3bdb('0xb')]('['+_0x3838e6[_0x3bdb('0x58')][_0x3bdb('0x59')]()+']',_0x3bdb('0x44'));_0x3838e6[_0x3bdb('0x47')]=util[_0x3bdb('0xe')](_0x3bdb('0x45'),_0x365eb3[_0x3bdb('0x41')],_0x3838e6[_0x3bdb('0x46')],md5(_0x3838e6[_0x3bdb('0x46')]));}else{_0x3838e6[_0x3bdb('0x47')]='';}headers[_0x3bdb('0x48')]=getAuth(_0x365eb3);return getUser(_0x365eb3,'')[_0x3bdb('0x1b')](function(_0x4cd3f8){_0x3074e2=_0x4cd3f8;logger[_0x3bdb('0xb')](_0x3bdb('0x5a'),_0x3074e2['id']);return getEndUser(_0x365eb3,_0x3838e6[_0x3bdb('0x49')],_0x3838e6[_0x3bdb('0x10')]);})[_0x3bdb('0x1b')](function(_0xcf4891){_0x289993=_0xcf4891;logger[_0x3bdb('0xb')](_0x3bdb('0x4a'),_0x289993['id']);return getTicket(_0x365eb3,_0x3074e2,_0x289993,_0x2c8adf,_0x3838e6);})['then'](function(_0x2304b7){if(_0x2304b7){logger[_0x3bdb('0xb')]('Ticket\x20created!');logger[_0x3bdb('0xb')](_0x3bdb('0x4b'),_0x2304b7['id']);}})[_0x3bdb('0x4f')](function(_0x261a8b){logger['error']('['+_0x3838e6[_0x3bdb('0x58')][_0x3bdb('0x59')]()+']',JSON[_0x3bdb('0x50')](_0x261a8b));});};
\ No newline at end of file
index 8757396..3abf3b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x965f=['none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','md5','util','moment','bluebird','ioredis','./util','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','toUpperCase','message','Getting\x20user\x20list','then','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','catch','error','/api/lookup?q=','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','POST','format','contact','Creating\x20new\x20task','Subjects','getString','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','ticketId','Task\x20created:','/contacts/','emit','trigger:browser:url','apiKey','stripTrailingSlash','serverUrl','remoteUri','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat'];(function(_0x58e32c,_0x309781){var _0x481e60=function(_0x5326ab){while(--_0x5326ab){_0x58e32c['push'](_0x58e32c['shift']());}};_0x481e60(++_0x309781);}(_0x965f,0x1b5));var _0xf965=function(_0x3d813d,_0x2dc642){_0x3d813d=_0x3d813d-0x0;var _0x3b522d=_0x965f[_0x3d813d];return _0x3b522d;};'use strict';var _=require(_0xf965('0x0'));var rp=require('request-promise');var md5=require(_0xf965('0x1'));var util=require(_0xf965('0x2'));var moment=require(_0xf965('0x3'));var Promise=require(_0xf965('0x4'));var Redis=require(_0xf965('0x5'));var intUtil=require(_0xf965('0x6'));var config=require('../../../../config/environment');var logger=require(_0xf965('0x7'))(_0xf965('0x8'));config[_0xf965('0x9')]=_[_0xf965('0xa')](config[_0xf965('0x9')],{'host':_0xf965('0xb'),'port':0x18eb});var io=require(_0xf965('0xc'))(new Redis(config['redis']));function getAdminId(_0x32b421,_0x334019,_0x49012a,_0xcbb44a){return new Promise(function(_0x373808,_0x1a5dab){var _0x42a8fc=![];var _0x94ee68={'method':_0xf965('0xd'),'uri':_0xcbb44a+_0xf965('0xe'),'json':!![]};_0x94ee68[_0xf965('0xf')]=_0x49012a;logger[_0xf965('0x10')](_0xf965('0x11'));return rp(_0x94ee68)['then'](function(_0x513947){if(_0x513947){var _0x20d71a=_0x513947[_0xf965('0x12')];var _0x42ac5c=null;for(_0x42ac5c=0x0;_0x42ac5c<_0x20d71a[_0xf965('0x13')];_0x42ac5c++){if(_0x20d71a[_0x42ac5c][_0xf965('0x14')]===_0x32b421[_0xf965('0x15')]){_0x32b421[_0xf965('0x16')]=_0x20d71a[_0x42ac5c]['id'];_0x42a8fc=!![];}}if(_0x42a8fc){logger[_0xf965('0x10')](_0xf965('0x17'),_0x32b421[_0xf965('0x16')]);_0x373808(_0x32b421);}else{_0x1a5dab({'statusCode':0x194,'message':_0xf965('0x18')});}}else{_0x1a5dab({'statusCode':0x194,'message':_0xf965('0x18')});}})['catch'](function(_0x28f384){logger['error']('['+[_0x334019[_0xf965('0x19')]()]+']',_0x28f384[_0xf965('0x1a')]);_0x1a5dab(_0x28f384);});});}function getUser(_0x1f00e9,_0x51d819,_0x3ea00b){return function(_0x51a958){return new Promise(function(_0x2916c3,_0xc5fd89){var _0x30a24c={'method':'GET','uri':_0x3ea00b+'/api/selector/owners','json':!![]};_0x30a24c[_0xf965('0xf')]=_0x51d819;logger['info'](_0xf965('0x1b'));return rp(_0x30a24c)[_0xf965('0x1c')](function(_0x4a7c9d){if(_0x4a7c9d){var _0x97a34f=_0x4a7c9d['users'];var _0x219a66=![];var _0x184512=null;if(_0x51a958[_0xf965('0x1d')]!==null){logger[_0xf965('0x10')]('Getting\x20user\x20with\x20email',_0x51a958[_0xf965('0x1d')]);_0x51a958[_0xf965('0x1e')]=_0x51a958[_0xf965('0x1d')];for(_0x184512=0x0;_0x184512<_0x97a34f[_0xf965('0x13')];_0x184512++){if(_0x97a34f[_0x184512][_0xf965('0x14')]===_0x51a958[_0xf965('0x1d')]){_0x219a66=!![];_0x51a958[_0xf965('0x1f')]=_0x97a34f[_0x184512]['id'];logger[_0xf965('0x10')](_0xf965('0x20'),_0x51a958[_0xf965('0x1f')]);}}}if(!_0x219a66){logger['info'](_0xf965('0x21'));_0x51a958['userEmail']=_0x51a958[_0xf965('0x15')];_0x51a958[_0xf965('0x1f')]=_0x51a958['adminId'];_0x219a66=!![];}if(_0x219a66){_0x2916c3(_0x51a958);}else{_0xc5fd89({'statusCode':0x194,'message':_0xf965('0x18')});}}else{_0xc5fd89({'statusCode':0x194,'message':_0xf965('0x18')});}})[_0xf965('0x22')](function(_0x213bc6){logger[_0xf965('0x23')]('['+[_0x1f00e9['toUpperCase']()]+']',_0x213bc6['message']);_0xc5fd89(_0x213bc6);});});};}function searchContact(_0x239c5d,_0x271fc6,_0xad8442,_0x1d6d08){return new Promise(function(_0x3ab151,_0x85e1b4){var _0x221e5c={'method':_0xf965('0xd'),'headers':_0x271fc6,'uri':_0x239c5d+_0xf965('0x24')+_0x1d6d08+'&f='+_0xad8442+'&entities=contact','json':!![]};rp(_0x221e5c)[_0xf965('0x1c')](function(_0x2a3b94){var _0x33dbe6=_[_0xf965('0x25')](_0x2a3b94[_0xf965('0x26')][_0xf965('0x26')],[_0xad8442,_0x1d6d08]);_0x3ab151(_0x33dbe6);})['catch'](function(_0x92b9f4){_0x85e1b4(_0x92b9f4);});});}function getEndUser(_0x197010,_0x7c56a4,_0x5568ce){return function(_0x4f2a5f){return new Promise(function(_0x1e3e27,_0x4647c0){logger[_0xf965('0x10')](util['format'](_0xf965('0x27'),_0x4f2a5f[_0xf965('0x28')]));searchContact(_0x5568ce,_0x7c56a4,_0xf965('0x29'),_0x4f2a5f[_0xf965('0x28')])[_0xf965('0x1c')](function(_0x139fe8){if(_0x139fe8){_0x4f2a5f[_0xf965('0x2a')]=_0x139fe8['id'];logger[_0xf965('0x10')](_0xf965('0x2b'),_0x4f2a5f[_0xf965('0x2a')]);return _0x1e3e27(_0x4f2a5f);}searchContact(_0x5568ce,_0x7c56a4,_0xf965('0x2c'),_0x4f2a5f[_0xf965('0x28')])[_0xf965('0x1c')](function(_0x50db51){if(_0x50db51){_0x4f2a5f[_0xf965('0x2a')]=_0x50db51['id'];logger[_0xf965('0x10')]('Contact\x20found\x20work_number:',_0x4f2a5f['endUserId']);return _0x1e3e27(_0x4f2a5f);}createEndUser(_0x4f2a5f,_0x197010,_0x7c56a4,_0x5568ce)[_0xf965('0x1c')](function(_0x4e6b43){logger[_0xf965('0x10')](_0xf965('0x2d'),_0x4e6b43['endUserId']);return _0x1e3e27(_0x4e6b43);});});})[_0xf965('0x22')](function(_0x5955b6){_0x4647c0(_0x5955b6);});});};}function createEndUser(_0x9f1d6b,_0x3ea6b9,_0x4b6c5f,_0x5cb233){return new Promise(function(_0x240c04,_0x58b83a){var _0x4e48d7=moment();var _0x592d5f={'method':_0xf965('0x2e'),'uri':_0x5cb233+'/api/contacts','body':{'contact':{'last_name':_0x9f1d6b[_0xf965('0x28')],'work_number':_0x9f1d6b['contactNumber'],'mobile_number':_0x9f1d6b[_0xf965('0x28')],'owner_id':_0x9f1d6b['userId'],'created_at':_0x4e48d7[_0xf965('0x2f')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x592d5f[_0xf965('0xf')]=_0x4b6c5f;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x592d5f)[_0xf965('0x1c')](function(_0x11aade){_0x9f1d6b[_0xf965('0x2a')]=_0x11aade[_0xf965('0x30')]['id'];_0x240c04(_0x9f1d6b);})[_0xf965('0x22')](function(_0x35f5e0){logger[_0xf965('0x23')]('['+[_0x3ea6b9[_0xf965('0x19')]()]+']',_0x35f5e0[_0xf965('0x1a')]);_0x58b83a(_0x35f5e0[_0xf965('0x1a')]);});});}function getTicket(_0x23543e,_0x65aa02,_0x44c246,_0x3f7b54,_0x579676){return function(_0x3871ff){logger[_0xf965('0x10')](_0xf965('0x31'));return new Promise(function(_0x295b38,_0x39eed2){var _0x361867=moment();var _0x558ea7={'method':_0xf965('0x2e'),'uri':_0x44c246+'/api/tasks','body':{'title':intUtil['getString'](_0x3f7b54[_0xf965('0x32')],_0x579676,'\x20'),'description':intUtil[_0xf965('0x33')](_0x3f7b54[_0xf965('0x34')],_0x579676,'\x0a'),'owner_id':_0x3871ff[_0xf965('0x1f')],'creater_id':_0x3871ff[_0xf965('0x16')],'targetable_id':_0x3871ff[_0xf965('0x2a')],'targetable_type':_0xf965('0x35'),'created_at':_0x361867[_0xf965('0x2f')](_0xf965('0x36')),'due_date':_0x361867[_0xf965('0x37')](0x1e,'m')[_0xf965('0x2f')](_0xf965('0x36'))},'json':!![]};_0x558ea7[_0xf965('0xf')]=_0x65aa02;return rp(_0x558ea7)[_0xf965('0x1c')](function(_0x5789d5){_0x3871ff[_0xf965('0x38')]=_0x5789d5['task']['id'];logger[_0xf965('0x10')](_0xf965('0x39'),_0x3871ff[_0xf965('0x38')]);_0x295b38(_0x3871ff);})[_0xf965('0x22')](function(_0x419d53){logger[_0xf965('0x23')]('['+[_0x23543e[_0xf965('0x19')]()]+']',_0x419d53[_0xf965('0x1a')]);_0x39eed2(_0x419d53[_0xf965('0x1a')]);});});};}function emit(_0x5558c3,_0x50c802,_0x4940c7){var _0x20efc5={'uri':_0x5558c3+_0xf965('0x3a')+_0x4940c7};io['to'](util[_0xf965('0x2f')]('user:%s',_0x50c802))[_0xf965('0x3b')](_0xf965('0x3c'),_0x20efc5);}exports['cs']=function(_0x27b7c7,_0x556ccb,_0x4dcad9,_0x169e72,_0x1d637e,_0xcfafd,_0x31e840,_0x2bbb15){var _0x4fbf9e={};var _0x1ab410={'Authorization':'Token\x20token='+_0xcfafd[_0xf965('0x3d')]};_0xcfafd['remoteUri']=intUtil[_0xf965('0x3e')](_0xcfafd['remoteUri']);_0xcfafd['serverUrl']=intUtil[_0xf965('0x3e')](_0xcfafd[_0xf965('0x3f')]);var _0x994576=_0xcfafd[_0xf965('0x40')];_0x4fbf9e[_0xf965('0x15')]=_0xcfafd[_0xf965('0x41')];_0x4fbf9e[_0xf965('0x28')]=_0x2bbb15[_0xf965('0x42')]()===_0xf965('0x43')?_0x556ccb[_0xf965('0x44')]:_0x556ccb[_0xf965('0x45')];_0x4fbf9e[_0xf965('0x46')]=_0x2bbb15==='queue'||_0x2bbb15===_0xf965('0x47')?_0xf965('0x48'):_0xf965('0x43');if(_0x169e72){_0x4fbf9e[_0xf965('0x1d')]=_0x169e72['email'];}var _0x2033d1=util[_0xf965('0x2f')](_0xf965('0x49'),_0xcfafd[_0xf965('0x3f')],_0x556ccb[_0xf965('0x4a')],md5(_0x556ccb[_0xf965('0x4a')]));if(_0x1d637e&&_0x1d637e[_0xf965('0x4b')]){logger['info'](_0xf965('0x4c'),'Recording\x20is\x20enabled!');_0x556ccb[_0xf965('0x4d')]=_0x2033d1;}else if(_0x31e840&&_0x31e840[_0xf965('0x4e')]&&_0x31e840[_0xf965('0x4e')]!==_0xf965('0x4f')){logger[_0xf965('0x10')](_0xf965('0x50'),_0xf965('0x51'));_0x556ccb[_0xf965('0x4d')]=_0x2033d1;}else{_0x556ccb[_0xf965('0x4d')]='';}return getAdminId(_0x4fbf9e,_0x2bbb15,_0x1ab410,_0x994576)[_0xf965('0x1c')](getUser(_0x2bbb15,_0x1ab410,_0x994576))[_0xf965('0x1c')](getEndUser(_0x2bbb15,_0x1ab410,_0x994576))['then'](getTicket(_0x2bbb15,_0x1ab410,_0x994576,_0x4dcad9,_0x556ccb))[_0xf965('0x1c')](function(_0x4f944d){logger['info'](util['format'](_0xf965('0x52'),_0x4f944d['ticketId']));if(_0x2bbb15!=='unmanaged'){logger['info']('['+[_0x2bbb15[_0xf965('0x19')]()]+']',_0xf965('0x53'));emit(_0x994576,_0x169e72[_0xf965('0x54')],_0x4f944d[_0xf965('0x2a')]);}})['catch'](function(_0x40d4e0){logger[_0xf965('0x23')]('['+[_0x2bbb15[_0xf965('0x19')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0xf965('0x55')](_0x40d4e0,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xc81f=['format','YYYY-MM-DDTHH:mm:ss','headers','contact','/api/tasks','getString','Contact','add','ticketId','task','Task\x20created:','user:%s','emit','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','unmanaged','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','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','util','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','GET','/api/selector/owners','info','then','users','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','message','agentEmail','userEmail','length','userId','Admin\x20selected','toUpperCase','/api/lookup?q=','&entities=contact','contacts','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','work_number','POST'];(function(_0x13662d,_0x337b8d){var _0x573365=function(_0xb7e9c1){while(--_0xb7e9c1){_0x13662d['push'](_0x13662d['shift']());}};_0x573365(++_0x337b8d);}(_0xc81f,0x1f4));var _0xfc81=function(_0x361d3f,_0x3be2aa){_0x361d3f=_0x361d3f-0x0;var _0x320229=_0xc81f[_0x361d3f];return _0x320229;};'use strict';var _=require(_0xfc81('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xfc81('0x1'));var moment=require(_0xfc81('0x2'));var Promise=require(_0xfc81('0x3'));var Redis=require('ioredis');var intUtil=require(_0xfc81('0x4'));var config=require(_0xfc81('0x5'));var logger=require(_0xfc81('0x6'))(_0xfc81('0x7'));config[_0xfc81('0x8')]=_[_0xfc81('0x9')](config[_0xfc81('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xfc81('0xa'))(new Redis(config[_0xfc81('0x8')]));function getAdminId(_0x4e7375,_0x19c1ed,_0x94f283,_0x221931){return new Promise(function(_0x70c01b,_0x29a136){var _0x44870e=![];var _0x51b7fa={'method':_0xfc81('0xb'),'uri':_0x221931+_0xfc81('0xc'),'json':!![]};_0x51b7fa['headers']=_0x94f283;logger[_0xfc81('0xd')]('Getting\x20admin\x20information');return rp(_0x51b7fa)[_0xfc81('0xe')](function(_0x3c150b){if(_0x3c150b){var _0x483815=_0x3c150b[_0xfc81('0xf')];var _0x15a1b8=null;for(_0x15a1b8=0x0;_0x15a1b8<_0x483815['length'];_0x15a1b8++){if(_0x483815[_0x15a1b8][_0xfc81('0x10')]===_0x4e7375[_0xfc81('0x11')]){_0x4e7375[_0xfc81('0x12')]=_0x483815[_0x15a1b8]['id'];_0x44870e=!![];}}if(_0x44870e){logger[_0xfc81('0xd')](_0xfc81('0x13'),_0x4e7375[_0xfc81('0x12')]);_0x70c01b(_0x4e7375);}else{_0x29a136({'statusCode':0x194,'message':_0xfc81('0x14')});}}else{_0x29a136({'statusCode':0x194,'message':_0xfc81('0x14')});}})[_0xfc81('0x15')](function(_0x2f34b2){logger[_0xfc81('0x16')]('['+[_0x19c1ed['toUpperCase']()]+']',_0x2f34b2[_0xfc81('0x17')]);_0x29a136(_0x2f34b2);});});}function getUser(_0x217731,_0x2dece0,_0xdcf003){return function(_0x12f964){return new Promise(function(_0x488e09,_0xe0b1f5){var _0x4747ab={'method':_0xfc81('0xb'),'uri':_0xdcf003+'/api/selector/owners','json':!![]};_0x4747ab['headers']=_0x2dece0;logger['info']('Getting\x20user\x20list');return rp(_0x4747ab)[_0xfc81('0xe')](function(_0x37aabd){if(_0x37aabd){var _0x495baa=_0x37aabd[_0xfc81('0xf')];var _0x5eace=![];var _0x8bbac1=null;if(_0x12f964['agentEmail']!==null){logger[_0xfc81('0xd')]('Getting\x20user\x20with\x20email',_0x12f964[_0xfc81('0x18')]);_0x12f964[_0xfc81('0x19')]=_0x12f964[_0xfc81('0x18')];for(_0x8bbac1=0x0;_0x8bbac1<_0x495baa[_0xfc81('0x1a')];_0x8bbac1++){if(_0x495baa[_0x8bbac1][_0xfc81('0x10')]===_0x12f964[_0xfc81('0x18')]){_0x5eace=!![];_0x12f964['userId']=_0x495baa[_0x8bbac1]['id'];logger[_0xfc81('0xd')]('User\x20found:',_0x12f964[_0xfc81('0x1b')]);}}}if(!_0x5eace){logger[_0xfc81('0xd')](_0xfc81('0x1c'));_0x12f964[_0xfc81('0x19')]=_0x12f964[_0xfc81('0x11')];_0x12f964[_0xfc81('0x1b')]=_0x12f964[_0xfc81('0x12')];_0x5eace=!![];}if(_0x5eace){_0x488e09(_0x12f964);}else{_0xe0b1f5({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0xe0b1f5({'statusCode':0x194,'message':_0xfc81('0x14')});}})[_0xfc81('0x15')](function(_0x3545f0){logger['error']('['+[_0x217731[_0xfc81('0x1d')]()]+']',_0x3545f0[_0xfc81('0x17')]);_0xe0b1f5(_0x3545f0);});});};}function searchContact(_0x4e7819,_0x275c41,_0x2145dc,_0x1fde25){return new Promise(function(_0x208f9f,_0x22b63e){var _0x5b2074={'method':_0xfc81('0xb'),'headers':_0x275c41,'uri':_0x4e7819+_0xfc81('0x1e')+_0x1fde25+'&f='+_0x2145dc+_0xfc81('0x1f'),'json':!![]};rp(_0x5b2074)[_0xfc81('0xe')](function(_0x4d17ae){var _0x53f8a9=_['find'](_0x4d17ae[_0xfc81('0x20')][_0xfc81('0x20')],[_0x2145dc,_0x1fde25]);_0x208f9f(_0x53f8a9);})[_0xfc81('0x15')](function(_0x41892f){_0x22b63e(_0x41892f);});});}function getEndUser(_0x8f7f48,_0x3348f0,_0x5f4271){return function(_0x5ab458){return new Promise(function(_0x3a61ff,_0x5ad7e8){logger['info'](util['format'](_0xfc81('0x21'),_0x5ab458['contactNumber']));searchContact(_0x5f4271,_0x3348f0,_0xfc81('0x22'),_0x5ab458[_0xfc81('0x23')])['then'](function(_0x99278e){if(_0x99278e){_0x5ab458[_0xfc81('0x24')]=_0x99278e['id'];logger[_0xfc81('0xd')]('Contact\x20found\x20mobile_number:',_0x5ab458[_0xfc81('0x24')]);return _0x3a61ff(_0x5ab458);}searchContact(_0x5f4271,_0x3348f0,_0xfc81('0x25'),_0x5ab458[_0xfc81('0x23')])[_0xfc81('0xe')](function(_0x5e0fbc){if(_0x5e0fbc){_0x5ab458[_0xfc81('0x24')]=_0x5e0fbc['id'];logger[_0xfc81('0xd')]('Contact\x20found\x20work_number:',_0x5ab458[_0xfc81('0x24')]);return _0x3a61ff(_0x5ab458);}createEndUser(_0x5ab458,_0x8f7f48,_0x3348f0,_0x5f4271)[_0xfc81('0xe')](function(_0x1d378a){logger[_0xfc81('0xd')]('Contact\x20created:',_0x1d378a['endUserId']);return _0x3a61ff(_0x1d378a);});});})[_0xfc81('0x15')](function(_0x26a7ac){_0x5ad7e8(_0x26a7ac);});});};}function createEndUser(_0x2eb24f,_0x1deba6,_0xa41eba,_0x1f39bb){return new Promise(function(_0x18967,_0x39664e){var _0x5892ac=moment();var _0x3337b8={'method':_0xfc81('0x26'),'uri':_0x1f39bb+'/api/contacts','body':{'contact':{'last_name':_0x2eb24f[_0xfc81('0x23')],'work_number':_0x2eb24f[_0xfc81('0x23')],'mobile_number':_0x2eb24f[_0xfc81('0x23')],'owner_id':_0x2eb24f['userId'],'created_at':_0x5892ac[_0xfc81('0x27')](_0xfc81('0x28'))}},'json':!![]};_0x3337b8[_0xfc81('0x29')]=_0xa41eba;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x3337b8)[_0xfc81('0xe')](function(_0x6e6864){_0x2eb24f[_0xfc81('0x24')]=_0x6e6864[_0xfc81('0x2a')]['id'];_0x18967(_0x2eb24f);})[_0xfc81('0x15')](function(_0x9f1dfb){logger['error']('['+[_0x1deba6[_0xfc81('0x1d')]()]+']',_0x9f1dfb['message']);_0x39664e(_0x9f1dfb['message']);});});}function getTicket(_0xc6dfda,_0x2fca2f,_0x22d3ea,_0xbd55e0,_0x4f47fd){return function(_0x2cd5b0){logger[_0xfc81('0xd')]('Creating\x20new\x20task');return new Promise(function(_0x5585bb,_0x3408ef){var _0x26c756=moment();var _0x2b60f7={'method':_0xfc81('0x26'),'uri':_0x22d3ea+_0xfc81('0x2b'),'body':{'title':intUtil[_0xfc81('0x2c')](_0xbd55e0['Subjects'],_0x4f47fd,'\x20'),'description':intUtil[_0xfc81('0x2c')](_0xbd55e0['Descriptions'],_0x4f47fd,'\x0a'),'owner_id':_0x2cd5b0[_0xfc81('0x1b')],'creater_id':_0x2cd5b0[_0xfc81('0x12')],'targetable_id':_0x2cd5b0[_0xfc81('0x24')],'targetable_type':_0xfc81('0x2d'),'created_at':_0x26c756[_0xfc81('0x27')](_0xfc81('0x28')),'due_date':_0x26c756[_0xfc81('0x2e')](0x1e,'m')[_0xfc81('0x27')](_0xfc81('0x28'))},'json':!![]};_0x2b60f7['headers']=_0x2fca2f;return rp(_0x2b60f7)[_0xfc81('0xe')](function(_0x596a57){_0x2cd5b0[_0xfc81('0x2f')]=_0x596a57[_0xfc81('0x30')]['id'];logger[_0xfc81('0xd')](_0xfc81('0x31'),_0x2cd5b0[_0xfc81('0x2f')]);_0x5585bb(_0x2cd5b0);})[_0xfc81('0x15')](function(_0x3e13e3){logger[_0xfc81('0x16')]('['+[_0xc6dfda['toUpperCase']()]+']',_0x3e13e3['message']);_0x3408ef(_0x3e13e3[_0xfc81('0x17')]);});});};}function emit(_0x22fc8c,_0x31f54d,_0x2bf390){var _0x32a4c8={'uri':_0x22fc8c+'/contacts/'+_0x2bf390};io['to'](util[_0xfc81('0x27')](_0xfc81('0x32'),_0x31f54d))[_0xfc81('0x33')]('trigger:browser:url',_0x32a4c8);}exports['cs']=function(_0x52ff0c,_0x34a64c,_0x18058f,_0x5977ea,_0x44ca3b,_0xadb42a,_0x2afa87,_0x1dbcc9){var _0x3865b3={};var _0x381749={'Authorization':_0xfc81('0x34')+_0xadb42a['apiKey']};_0xadb42a[_0xfc81('0x35')]=intUtil[_0xfc81('0x36')](_0xadb42a[_0xfc81('0x35')]);_0xadb42a['serverUrl']=intUtil[_0xfc81('0x36')](_0xadb42a[_0xfc81('0x37')]);var _0x70ee90=_0xadb42a[_0xfc81('0x35')];_0x3865b3[_0xfc81('0x11')]=_0xadb42a[_0xfc81('0x38')];_0x3865b3['contactNumber']=_0x1dbcc9[_0xfc81('0x39')]()===_0xfc81('0x3a')?_0x34a64c[_0xfc81('0x3b')]:_0x34a64c[_0xfc81('0x3c')];_0x3865b3[_0xfc81('0x3d')]=_0x1dbcc9==='queue'||_0x1dbcc9===_0xfc81('0x3e')?_0xfc81('0x3f'):_0xfc81('0x3a');if(_0x5977ea){_0x3865b3[_0xfc81('0x18')]=_0x5977ea[_0xfc81('0x10')];}var _0x13878d=util[_0xfc81('0x27')](_0xfc81('0x40'),_0xadb42a[_0xfc81('0x37')],_0x34a64c['uniqueid'],md5(_0x34a64c['uniqueid']));if(_0x44ca3b&&_0x44ca3b[_0xfc81('0x41')]){logger['info'](_0xfc81('0x42'),_0xfc81('0x43'));_0x34a64c[_0xfc81('0x44')]=_0x13878d;}else if(_0x2afa87&&_0x2afa87[_0xfc81('0x45')]&&_0x2afa87['recordingFormat']!==_0xfc81('0x46')){logger[_0xfc81('0xd')](_0xfc81('0x47'),'Recording\x20is\x20enabled!');_0x34a64c[_0xfc81('0x44')]=_0x13878d;}else{_0x34a64c[_0xfc81('0x44')]='';}return getAdminId(_0x3865b3,_0x1dbcc9,_0x381749,_0x70ee90)[_0xfc81('0xe')](getUser(_0x1dbcc9,_0x381749,_0x70ee90))['then'](getEndUser(_0x1dbcc9,_0x381749,_0x70ee90))[_0xfc81('0xe')](getTicket(_0x1dbcc9,_0x381749,_0x70ee90,_0x18058f,_0x34a64c))[_0xfc81('0xe')](function(_0x4b72c2){logger['info'](util[_0xfc81('0x27')](_0xfc81('0x48'),_0x4b72c2[_0xfc81('0x2f')]));if(_0x1dbcc9!==_0xfc81('0x3e')){logger[_0xfc81('0xd')]('['+[_0x1dbcc9['toUpperCase']()]+']',_0xfc81('0x49'));emit(_0x70ee90,_0x5977ea[_0xfc81('0x4a')],_0x4b72c2['endUserId']);}})[_0xfc81('0x15')](function(_0xaf91cd){logger['error']('['+[_0x1dbcc9['toUpperCase']()]+_0xfc81('0x4b'),util[_0xfc81('0x4c')](_0xaf91cd,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 9380fed..dce7556 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab8a=['vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','routeId','log','EVENT\x20UNKNOWN','unmanaged','salesforce','freshdesk','desk','unknown\x20integration','../../../../config/logger','[EXEC]','format','error','%s\x20account\x20#%s\x20not\x20found','lodash','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./dynamics365','./freshsales','zendesk','zoho'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xab8a,0x66));var _0xaab8=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xab8a[_0x36ed48];return _0x51c63a;};'use strict';var _=require(_0xaab8('0x0'));var util=require('util');var zendesk=require(_0xaab8('0x1'));var salesforce=require(_0xaab8('0x2'));var sugarcrm=require(_0xaab8('0x3'));var freshdesk=require(_0xaab8('0x4'));var zoho=require(_0xaab8('0x5'));var desk=require(_0xaab8('0x6'));var vtiger=require(_0xaab8('0x7'));var servicenow=require('./servicenow');var dynamics365=require(_0xaab8('0x8'));var freshsales=require(_0xaab8('0x9'));var integrations=[_0xaab8('0xa'),'salesforce','sugarcrm','freshdesk',_0xaab8('0xb'),'desk',_0xaab8('0xc'),_0xaab8('0xd'),_0xaab8('0xe'),_0xaab8('0xf')];exports[_0xaab8('0x10')]=function(_0x54f09a,_0x48d9fc,_0x53313a,_0x5e9082,_0x43526c,_0x30aec0){if(_0x53313a){if(_[_0xaab8('0x11')](integrations,_0x54f09a[_0xaab8('0x12')][_0xaab8('0x13')]())){try{var _0x169d38=null;var _0x593006='';var _0x1b8d73=_0x53313a[_0x54f09a['data1'][_0xaab8('0x13')]()];if(_0x1b8d73){var _0x5d3c83=_0x1b8d73[_0x54f09a[_0xaab8('0x14')]];if(_0x5d3c83){var _0x23a274=_[_0xaab8('0x15')](_0x5d3c83[_0xaab8('0x16')],{'id':parseInt(_0x54f09a[_0xaab8('0x17')],0xa)});if(_0x23a274){if(_0x5e9082){if(_0x43526c&&_0x48d9fc[_0xaab8('0x18')]){_0x593006=_0xaab8('0x18');}else if(_0x48d9fc[_0xaab8('0x19')]){_0x593006='outbound';}else{console[_0xaab8('0x1a')](_0xaab8('0x1b'),_0x48d9fc);}}else{_0x593006=_0xaab8('0x1c');}switch(_0x54f09a[_0xaab8('0x12')][_0xaab8('0x13')]()){case _0xaab8('0xa'):zendesk[_0x593006](_0x54f09a,_0x48d9fc,_0x23a274,_0x5e9082,_0x43526c,_0x5d3c83,_0x30aec0);break;case _0xaab8('0x1d'):salesforce[_0x593006](_0x54f09a,_0x48d9fc,_0x23a274,_0x5e9082,_0x43526c,_0x5d3c83,_0x30aec0);break;case'sugarcrm':sugarcrm[_0x593006](_0x54f09a,_0x48d9fc,_0x23a274,_0x5e9082,_0x43526c,_0x5d3c83,_0x30aec0);break;case _0xaab8('0x1e'):freshdesk[_0x593006](_0x54f09a,_0x48d9fc,_0x23a274,_0x5e9082,_0x43526c,_0x5d3c83,_0x30aec0);break;case _0xaab8('0xb'):zoho[_0x593006](_0x54f09a,_0x48d9fc,_0x23a274,_0x5e9082,_0x43526c,_0x5d3c83,_0x30aec0);break;case _0xaab8('0x1f'):desk[_0x593006](_0x54f09a,_0x48d9fc,_0x23a274,_0x5e9082,_0x43526c,_0x5d3c83,_0x30aec0);break;case'vtiger':vtiger[_0x593006](_0x54f09a,_0x48d9fc,_0x23a274,_0x5e9082,_0x43526c,_0x5d3c83,_0x30aec0);break;case _0xaab8('0xe'):freshsales['cs'](_0x54f09a,_0x48d9fc,_0x23a274,_0x5e9082,_0x43526c,_0x5d3c83,_0x30aec0,_0x593006);break;case _0xaab8('0xf'):servicenow['cs'](_0x54f09a,_0x48d9fc,_0x23a274,_0x5e9082,_0x43526c,_0x5d3c83,_0x30aec0,_0x593006);break;case'dynamics365':dynamics365['cs'](_0x54f09a,_0x48d9fc,_0x23a274,_0x5e9082,_0x43526c,_0x5d3c83,_0x30aec0,_0x593006);break;default:console[_0xaab8('0x1a')](_0xaab8('0x20'));}}else{_0x169d38=require(_0xaab8('0x21'))(_0x54f09a[_0xaab8('0x12')][_0xaab8('0x13')]());_0x169d38['error'](_0xaab8('0x22'),util[_0xaab8('0x23')]('%s\x20configuration\x20#%s\x20not\x20found',_0x54f09a[_0xaab8('0x12')][_0xaab8('0x13')](),_0x54f09a[_0xaab8('0x17')]));}}else{_0x169d38=require('../../../../config/logger')(_0x54f09a[_0xaab8('0x12')]['toLowerCase']());_0x169d38[_0xaab8('0x24')]('[EXEC]',util[_0xaab8('0x23')](_0xaab8('0x25'),_0x54f09a[_0xaab8('0x12')][_0xaab8('0x13')](),_0x54f09a[_0xaab8('0x14')]));}}else{}}catch(_0x40805a){console['error'](_0x40805a);}}}};
\ No newline at end of file
+var _0x4ade=['sugarcrm','freshdesk','desk','freshsales','log','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./freshdesk','./desk','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','zoho','vtiger','servicenow','exec','includes','toLowerCase','data1','data2','Configurations','data3','queue','routeId','outbound','EVENT\x20UNKNOWN','unmanaged'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4ade,0x188));var _0xe4ad=function(_0x588781,_0x353c35){_0x588781=_0x588781-0x0;var _0x2a1365=_0x4ade[_0x588781];return _0x2a1365;};'use strict';var _=require(_0xe4ad('0x0'));var util=require(_0xe4ad('0x1'));var zendesk=require(_0xe4ad('0x2'));var salesforce=require(_0xe4ad('0x3'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xe4ad('0x4'));var zoho=require('./zoho');var desk=require(_0xe4ad('0x5'));var vtiger=require('./vtiger');var servicenow=require(_0xe4ad('0x6'));var dynamics365=require(_0xe4ad('0x7'));var freshsales=require(_0xe4ad('0x8'));var integrations=[_0xe4ad('0x9'),_0xe4ad('0xa'),'sugarcrm','freshdesk',_0xe4ad('0xb'),'desk',_0xe4ad('0xc'),'dynamics365','freshsales',_0xe4ad('0xd')];exports[_0xe4ad('0xe')]=function(_0x444714,_0x4547f8,_0x1bf7d0,_0xe1cdef,_0x289238,_0x2d169a){if(_0x1bf7d0){if(_[_0xe4ad('0xf')](integrations,_0x444714['data1'][_0xe4ad('0x10')]())){try{var _0x3f3d52=null;var _0x551767='';var _0x107139=_0x1bf7d0[_0x444714[_0xe4ad('0x11')][_0xe4ad('0x10')]()];if(_0x107139){var _0x3ed01f=_0x107139[_0x444714[_0xe4ad('0x12')]];if(_0x3ed01f){var _0x269b8d=_['find'](_0x3ed01f[_0xe4ad('0x13')],{'id':parseInt(_0x444714[_0xe4ad('0x14')],0xa)});if(_0x269b8d){if(_0xe1cdef){if(_0x289238&&_0x4547f8['queue']){_0x551767=_0xe4ad('0x15');}else if(_0x4547f8[_0xe4ad('0x16')]){_0x551767=_0xe4ad('0x17');}else{console['log'](_0xe4ad('0x18'),_0x4547f8);}}else{_0x551767=_0xe4ad('0x19');}switch(_0x444714[_0xe4ad('0x11')][_0xe4ad('0x10')]()){case _0xe4ad('0x9'):zendesk[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0xa'):salesforce[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0x1a'):sugarcrm[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0x1b'):freshdesk[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0xb'):zoho[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0x1c'):desk[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0xc'):vtiger[_0x551767](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a);break;case _0xe4ad('0x1d'):freshsales['cs'](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a,_0x551767);break;case _0xe4ad('0xd'):servicenow['cs'](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a,_0x551767);break;case'dynamics365':dynamics365['cs'](_0x444714,_0x4547f8,_0x269b8d,_0xe1cdef,_0x289238,_0x3ed01f,_0x2d169a,_0x551767);break;default:console[_0xe4ad('0x1e')](_0xe4ad('0x1f'));}}else{_0x3f3d52=require(_0xe4ad('0x20'))(_0x444714[_0xe4ad('0x11')][_0xe4ad('0x10')]());_0x3f3d52[_0xe4ad('0x21')](_0xe4ad('0x22'),util[_0xe4ad('0x23')](_0xe4ad('0x24'),_0x444714['data1']['toLowerCase'](),_0x444714[_0xe4ad('0x14')]));}}else{_0x3f3d52=require('../../../../config/logger')(_0x444714['data1']['toLowerCase']());_0x3f3d52[_0xe4ad('0x21')](_0xe4ad('0x22'),util[_0xe4ad('0x23')](_0xe4ad('0x25'),_0x444714['data1'][_0xe4ad('0x10')](),_0x444714['data2']));}}else{}}catch(_0x4115dd){console[_0xe4ad('0x21')](_0x4115dd);}}}};
\ No newline at end of file
index 5b3c467..6606ea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc38=['%s/%s/e','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase','calleridnum',']\x20Ticket\x20%s\x20created.','lodash','request-promise','moment','bluebird','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','localhost','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','ticketType','IsReminderSet','IsRecurrence','lead','WhoId','endUserType','Case','ContactId','account','leadId','info','sobject','create','isNil','validateEmail','User','find','then','length','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','cloneDeep','additionalSearchContact','merge','$or','Contact','execute','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','contact','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Company','No\x20Company','Caller\x20-\x20%s','upperFirst','forEach','includes','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','password','concat','securityToken','remoteUri','https://login.salesforce.com','clientId','login','username','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','Fields','[QUEUE]\x20Ticket\x20%s\x20created','integrationTab','user:%s','trigger:salesforce:display','newTab','catch','error','recordingFormat','none','[OUTBOUND]','email','destcalleridname','destcalleridnum','outbound','trigger:browser:url'];(function(_0x14e2dc,_0x5f3535){var _0x1843c3=function(_0x56f5cc){while(--_0x56f5cc){_0x14e2dc['push'](_0x14e2dc['shift']());}};_0x1843c3(++_0x5f3535);}(_0xcc38,0x105));var _0x8cc3=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xcc38[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x8cc3('0x0'));var rp=require(_0x8cc3('0x1'));var moment=require(_0x8cc3('0x2'));var BPromise=require(_0x8cc3('0x3'));var md5=require('md5');var jsforce=require(_0x8cc3('0x4'));var util=require(_0x8cc3('0x5'));var Redis=require(_0x8cc3('0x6'));var intUtil=require(_0x8cc3('0x7'));var config=require(_0x8cc3('0x8'));var logger=require(_0x8cc3('0x9'))(_0x8cc3('0xa'));config[_0x8cc3('0xb')]=_['defaults'](config[_0x8cc3('0xb')],{'host':_0x8cc3('0xc'),'port':0x18eb});var io=require(_0x8cc3('0xd'))(new Redis(config[_0x8cc3('0xb')]));function emit(_0x1e2de9,_0x176db6,_0x3acf80){io['to'](_0x1e2de9)[_0x8cc3('0xe')](_0x176db6,_0x3acf80);}function getTicket(_0x31a669,_0x11f2ee,_0x2226b5,_0x10456d,_0x30ec26,_0x3adb5a,_0x370653,_0x49d389){var _0x5e9052=Object[_0x8cc3('0xf')]({},{'OwnerId':_0x11f2ee['id'],'Subject':intUtil[_0x8cc3('0x10')](_0x10456d[_0x8cc3('0x11')],_0x30ec26,'\x20'),'Description':intUtil[_0x8cc3('0x10')](_0x10456d[_0x8cc3('0x12')],_0x30ec26,'\x0a')},getCustomFields(_0x3adb5a,_0x30ec26));if(_0x2226b5){if(_0x10456d[_0x8cc3('0x13')]==='Task'){_0x5e9052['ActivityDate']=moment['utc']();_0x5e9052[_0x8cc3('0x14')]=![];_0x5e9052[_0x8cc3('0x15')]=![];if(_0x2226b5['endUserType']==='contact'||_0x2226b5['endUserType']===_0x8cc3('0x16')){_0x5e9052[_0x8cc3('0x17')]=_0x2226b5['id'];}else if(_0x2226b5[_0x8cc3('0x18')]==='account'){_0x5e9052['WhatId']=_0x2226b5['id'];}}else if(_0x10456d['ticketType']===_0x8cc3('0x19')){if(_0x2226b5[_0x8cc3('0x18')]==='contact'){_0x5e9052[_0x8cc3('0x1a')]=_0x2226b5['id'];}else if(_0x2226b5[_0x8cc3('0x18')]===_0x8cc3('0x1b')){_0x5e9052['AccountId']=_0x2226b5['id'];}else if(_0x2226b5[_0x8cc3('0x18')]==='lead'&&_0x10456d[_0x8cc3('0x1c')]){_0x5e9052[_0x10456d['leadId']]=_0x2226b5['id'];}else{logger[_0x8cc3('0x1d')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x370653[_0x8cc3('0x1e')](_0x10456d[_0x8cc3('0x13')])[_0x8cc3('0x1f')](_0x5e9052);}function getUser(_0x41dd99,_0x2d8ab1,_0x3579d5){if(!_[_0x8cc3('0x20')](_0x2d8ab1)&&intUtil[_0x8cc3('0x21')](_0x2d8ab1)){var _0xf787b2={'Email':_0x2d8ab1};var _0x2bd87e={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3579d5[_0x8cc3('0x1e')](_0x8cc3('0x22'))[_0x8cc3('0x23')](_0xf787b2,_0x2bd87e)['execute']()[_0x8cc3('0x24')](function(_0x2df64a){if(_0x2df64a[_0x8cc3('0x25')]){var _0x2574db=_[_0x8cc3('0x23')](_0x2df64a,function(_0x69be29){return _0x69be29['Email']===_0x2d8ab1;});if(_0x2574db){logger[_0x8cc3('0x1d')](_0x8cc3('0x26'),_0x2d8ab1);return BPromise[_0x8cc3('0x27')]({'id':_0x2574db['Id'],'name':_0x2574db[_0x8cc3('0x28')]});}}else{logger['info'](_0x8cc3('0x29'),_0x2d8ab1);return _0x3579d5[_0x8cc3('0x2a')]()['then'](function(_0x1f3bdc){return BPromise['resolve']({'id':_0x1f3bdc[_0x8cc3('0x2b')],'name':_0x1f3bdc[_0x8cc3('0x2c')]});});}});}else{logger['info']('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x2d8ab1);return _0x3579d5['identity']()[_0x8cc3('0x24')](function(_0x1f6fd6){return BPromise[_0x8cc3('0x27')]({'id':_0x1f6fd6[_0x8cc3('0x2b')],'name':_0x1f6fd6['display_name']});});}}function getEndUser(_0x552bb7,_0x313151,_0x335573,_0x5079ac,_0x5a4024){var _0x3c560a={'$or':{'Phone':_0x5079ac}};var _0x4c3dee={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x8cc3('0x27')]()[_0x8cc3('0x24')](function(){logger[_0x8cc3('0x1d')](_0x8cc3('0x2d'),_0x5079ac,_0x313151['moduleSearch']);switch(_0x313151[_0x8cc3('0x2e')]){case _0x8cc3('0x2f'):var _0xa6ae4f=_[_0x8cc3('0x30')](_0x3c560a);if(_0x313151['additionalSearchContact']){var _0x448e50={};_0x448e50[_0x313151[_0x8cc3('0x31')]]=_0x5079ac;_[_0x8cc3('0x32')](_0xa6ae4f[_0x8cc3('0x33')],_0x448e50);}return _0x5a4024[_0x8cc3('0x1e')](_0x8cc3('0x34'))[_0x8cc3('0x23')](_0xa6ae4f,_0x4c3dee)[_0x8cc3('0x35')]()['then'](function(_0x18b467){if(_0x18b467&&_0x18b467['length']){return _0x18b467;}else{var _0xe47494=_[_0x8cc3('0x30')](_0x3c560a);if(_0x313151[_0x8cc3('0x36')]){var _0x30b9c8={};_0x30b9c8[_0x313151['additionalSearchLead']]=_0x5079ac;_[_0x8cc3('0x32')](_0xe47494[_0x8cc3('0x33')],_0x30b9c8);}return _0x5a4024['sobject'](_0x8cc3('0x37'))['find'](_0xe47494,_0x4c3dee);}});case _0x8cc3('0x38'):var _0x4b1b9b=_[_0x8cc3('0x30')](_0x3c560a);if(_0x313151[_0x8cc3('0x39')]){var _0x448e50={};_0x448e50[_0x313151['additionalSearchAccount']]=_0x5079ac;_['merge'](_0x4b1b9b['$or'],_0x448e50);}return _0x5a4024[_0x8cc3('0x1e')](_0x8cc3('0x3a'))['find'](_0x4b1b9b,_0x4c3dee)[_0x8cc3('0x35')]()[_0x8cc3('0x24')](function(_0x11fc53){if(_0x11fc53&&_0x11fc53[_0x8cc3('0x25')]){return _0x11fc53;}else{var _0x292710=_[_0x8cc3('0x30')](_0x3c560a);if(_0x313151[_0x8cc3('0x31')]){var _0x27ea1d={};_0x27ea1d[_0x313151[_0x8cc3('0x31')]]=_0x5079ac;_[_0x8cc3('0x32')](_0x292710[_0x8cc3('0x33')],_0x27ea1d);}return _0x5a4024['sobject'](_0x8cc3('0x34'))['find'](_0x292710,_0x4c3dee)['then'](function(_0x361a4b){if(_0x361a4b&&_0x361a4b[_0x8cc3('0x25')]){return _0x361a4b;}else{var _0x178b74=_[_0x8cc3('0x30')](_0x3c560a);if(_0x313151[_0x8cc3('0x36')]){var _0x3004d6={};_0x3004d6[_0x313151[_0x8cc3('0x36')]]=_0x5079ac;_['merge'](_0x178b74['$or'],_0x3004d6);}return _0x5a4024[_0x8cc3('0x1e')](_0x8cc3('0x37'))[_0x8cc3('0x23')](_0x178b74,_0x4c3dee);}});}});case'contact':var _0xa6ae4f=_[_0x8cc3('0x30')](_0x3c560a);if(_0x313151[_0x8cc3('0x31')]){var _0x448e50={};_0x448e50[_0x313151[_0x8cc3('0x31')]]=_0x5079ac;_[_0x8cc3('0x32')](_0xa6ae4f['$or'],_0x448e50);}return _0x5a4024[_0x8cc3('0x1e')](_0x8cc3('0x34'))[_0x8cc3('0x23')](_0xa6ae4f,_0x4c3dee)[_0x8cc3('0x35')]();case'lead':var _0x2c7030=_['cloneDeep'](_0x3c560a);if(_0x313151['additionalSearchLead']){var _0x448e50={};_0x448e50[_0x313151[_0x8cc3('0x36')]]=_0x5079ac;_[_0x8cc3('0x32')](_0x2c7030['$or'],_0x448e50);}return _0x5a4024[_0x8cc3('0x1e')](_0x8cc3('0x37'))['find'](_0x2c7030,_0x4c3dee);case _0x8cc3('0x1b'):var _0x4b1b9b=_[_0x8cc3('0x30')](_0x3c560a);if(_0x313151['additionalSearchAccount']){var _0x448e50={};_0x448e50[_0x313151[_0x8cc3('0x39')]]=_0x5079ac;_[_0x8cc3('0x32')](_0x4b1b9b[_0x8cc3('0x33')],_0x448e50);}return _0x5a4024[_0x8cc3('0x1e')](_0x8cc3('0x3a'))[_0x8cc3('0x23')](_0x4b1b9b,_0x4c3dee);default:return null;}})['then'](function(_0x478c04){if(_0x478c04&&_0x478c04[_0x8cc3('0x25')]){var _0x254e3d=_['first'](_0x478c04);if(_0x254e3d){return BPromise[_0x8cc3('0x27')]({'id':_0x254e3d['Id'],'name':_0x254e3d[_0x8cc3('0x28')],'phone':_0x254e3d['Phone'],'endUserType':_0x254e3d[_0x8cc3('0x3b')][_0x8cc3('0x3c')][_0x8cc3('0x3d')]()});}}})[_0x8cc3('0x24')](function(_0x311235){if(_0x311235){logger[_0x8cc3('0x1d')](_0x8cc3('0x3e'),_0x311235['endUserType'],_0x5079ac);return BPromise['resolve'](_0x311235);}else{logger[_0x8cc3('0x1d')](_0x8cc3('0x3f'),_0x5079ac);var _0x332640={'Phone':_0x5079ac};if(_0x313151['moduleCreate']){if(_0x313151[_0x8cc3('0x40')]===_0x8cc3('0x41')){logger[_0x8cc3('0x1d')](_0x8cc3('0x42'),_0x5079ac,_0x313151[_0x8cc3('0x40')]);_0x332640[_0x8cc3('0x43')]=_0x335573!==_0x8cc3('0x44')?_0x335573:util[_0x8cc3('0x45')]('Caller\x20-\x20%s',_0x5079ac);}else if(_0x313151[_0x8cc3('0x40')]===_0x8cc3('0x16')){logger[_0x8cc3('0x1d')](_0x8cc3('0x42'),_0x5079ac,_0x313151['moduleCreate']);_0x332640[_0x8cc3('0x43')]=_0x335573!==_0x8cc3('0x44')?_0x335573:util['format']('Caller\x20-\x20%s',_0x5079ac);_0x332640[_0x8cc3('0x46')]=_0x8cc3('0x47');}else if(_0x313151[_0x8cc3('0x40')]==='account'){logger[_0x8cc3('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x5079ac,_0x313151[_0x8cc3('0x40')]);_0x332640[_0x8cc3('0x28')]=_0x335573!=='<unknown>'?_0x335573:util[_0x8cc3('0x45')](_0x8cc3('0x48'),_0x5079ac);}else{return null;}}return _0x5a4024['sobject'](_[_0x8cc3('0x49')](_0x313151[_0x8cc3('0x40')]))[_0x8cc3('0x1f')](_0x332640)['then'](function(_0x4dc886){return BPromise['resolve']({'id':_0x4dc886['id'],'endUserType':_0x313151[_0x8cc3('0x40')]});});}});}function getCustomFields(_0x3bc9fb,_0x5d9d96){var _0x1625b5={};if(_0x3bc9fb[_0x8cc3('0x25')]>0x0){_[_0x8cc3('0x4a')](_0x3bc9fb,function(_0x1a3537){if(_[_0x8cc3('0x4b')]([_0x8cc3('0x4c'),_0x8cc3('0x4d')],_0x1a3537[_0x8cc3('0x3c')])&&_0x1a3537[_0x8cc3('0x4e')]){_0x1625b5[_0x1a3537[_0x8cc3('0x4e')]]=_0x1a3537[_0x8cc3('0x4f')][_0x8cc3('0x50')]();}else if(_0x1a3537[_0x8cc3('0x3c')]===_0x8cc3('0x51')&&_0x1a3537[_0x8cc3('0x52')]&&_0x1a3537[_0x8cc3('0x4e')]){_0x5d9d96[_0x1a3537['variableName']]&&(_0x1625b5[_0x1a3537[_0x8cc3('0x4e')]]=_0x5d9d96[_0x1a3537[_0x8cc3('0x52')]][_0x8cc3('0x50')]());}else if(_0x1a3537[_0x8cc3('0x3c')]===_0x8cc3('0x53')&&_0x1a3537[_0x8cc3('0x54')]&&_0x1a3537[_0x8cc3('0x54')]['name']&&_0x1a3537[_0x8cc3('0x4e')]){_0x5d9d96[_0x1a3537['Variable'][_0x8cc3('0x55')][_0x8cc3('0x3d')]()]&&(_0x1625b5[_0x1a3537[_0x8cc3('0x4e')]]=_0x5d9d96[_0x1a3537[_0x8cc3('0x54')][_0x8cc3('0x55')]['toLowerCase']()][_0x8cc3('0x50')]());}});}return _0x1625b5;}function getConnection(_0x27ec72){var _0x53ffa9=_0x27ec72[_0x8cc3('0x56')][_0x8cc3('0x57')](_0x27ec72[_0x8cc3('0x58')]);var _0x4c6772=new jsforce['Connection']({'oauth2':{'loginUrl':_0x27ec72[_0x8cc3('0x59')]||_0x8cc3('0x5a'),'clientId':_0x27ec72[_0x8cc3('0x5b')],'clientSecret':_0x27ec72['clientSecret']}});return _0x4c6772[_0x8cc3('0x5c')](_0x27ec72[_0x8cc3('0x5d')],_0x53ffa9)['then'](function(){logger[_0x8cc3('0x1d')]('Connection\x20established.');return _0x4c6772;});}exports[_0x8cc3('0x5e')]=function(_0x5d9935,_0x264c00,_0x332da0,_0xf96751,_0x33060c,_0x52979f){var _0x18dabb,_0x4cb04f,_0x449da4,_0x32ac75;_0x52979f['serverUrl']=intUtil[_0x8cc3('0x5f')](_0x52979f[_0x8cc3('0x60')]);_0x52979f[_0x8cc3('0x59')]=intUtil[_0x8cc3('0x5f')](_0x52979f[_0x8cc3('0x59')]);if(_0x33060c&&_0x33060c[_0x8cc3('0x61')]){logger[_0x8cc3('0x1d')](_0x8cc3('0x62'),_0x8cc3('0x63'));_0x264c00[_0x8cc3('0x64')]=util[_0x8cc3('0x45')](_0x8cc3('0x65'),_0x52979f[_0x8cc3('0x60')],_0x264c00[_0x8cc3('0x66')],md5(_0x264c00[_0x8cc3('0x66')]));}else{_0x264c00['recordingURL']='';}return getConnection(_0x52979f)[_0x8cc3('0x24')](function(_0x11c550){_0x32ac75=_0x11c550;return getUser(_0x52979f,_0xf96751['email'],_0x32ac75);})[_0x8cc3('0x24')](function(_0x52634a){_0x18dabb=_0x52634a;return getEndUser(_0x52979f,_0x332da0,_0x264c00[_0x8cc3('0x67')],_0x264c00['calleridnum'],_0x32ac75);})['then'](function(_0x424ef2){_0x4cb04f=_0x424ef2;return getTicket(_0x52979f,_0x18dabb,_0x4cb04f,_0x332da0,_0x264c00,_0x332da0[_0x8cc3('0x68')],_0x32ac75,_0x8cc3('0x5e'));})[_0x8cc3('0x24')](function(_0x37abe8){_0x449da4=_0x37abe8;logger['info'](_0x8cc3('0x69'),_0x449da4['id']);logger[_0x8cc3('0x1d')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x449da4['id'],_0xf96751[_0x8cc3('0x55')],_0x52979f['type']);switch(_0x52979f[_0x8cc3('0x3c')]){case _0x8cc3('0x6a'):emit(util[_0x8cc3('0x45')](_0x8cc3('0x6b'),_0xf96751[_0x8cc3('0x55')]),_0x8cc3('0x6c'),{'recordId':_0x449da4['id']});break;case _0x8cc3('0x6d'):emit(util['format'](_0x8cc3('0x6b'),_0xf96751[_0x8cc3('0x55')]),'trigger:browser:url',{'uri':util[_0x8cc3('0x45')]('%s/%s/e',_0x32ac75['instanceUrl'],_0x449da4['id'])});break;default:logger['error']('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0x8cc3('0x6e')](function(_0x3c95f8){logger[_0x8cc3('0x6f')](_0x8cc3('0x62'),_0x3c95f8);});};exports['outbound']=function(_0x74211e,_0x154d9b,_0x27c1d9,_0x3c4fa5,_0xef9893,_0x3b8ec6,_0x5c9aa5){var _0x36fd21,_0x26dcee,_0x46d848,_0x42f466;_0x3b8ec6['serverUrl']=intUtil['stripTrailingSlash'](_0x3b8ec6[_0x8cc3('0x60')]);_0x3b8ec6[_0x8cc3('0x59')]=intUtil[_0x8cc3('0x5f')](_0x3b8ec6[_0x8cc3('0x59')]);if(_0x5c9aa5&&_0x5c9aa5[_0x8cc3('0x70')]&&_0x5c9aa5[_0x8cc3('0x70')]!==_0x8cc3('0x71')){logger[_0x8cc3('0x1d')](_0x8cc3('0x72'),'Recording\x20is\x20enabled!');_0x154d9b[_0x8cc3('0x64')]=util[_0x8cc3('0x45')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3b8ec6[_0x8cc3('0x60')],_0x154d9b['uniqueid'],md5(_0x154d9b['uniqueid']));}return getConnection(_0x3b8ec6)[_0x8cc3('0x24')](function(_0xe982e3){_0x42f466=_0xe982e3;return getUser(_0x3b8ec6,_0x3c4fa5[_0x8cc3('0x73')],_0x42f466);})[_0x8cc3('0x24')](function(_0x4b84b4){_0x36fd21=_0x4b84b4;return getEndUser(_0x3b8ec6,_0x27c1d9,_0x154d9b[_0x8cc3('0x74')],_0x154d9b[_0x8cc3('0x75')],_0x42f466);})[_0x8cc3('0x24')](function(_0x26b6b3){_0x26dcee=_0x26b6b3;return getTicket(_0x3b8ec6,_0x36fd21,_0x26dcee,_0x27c1d9,_0x154d9b,_0x27c1d9[_0x8cc3('0x68')],_0x42f466,_0x8cc3('0x76'));})['then'](function(_0x4257b0){_0x46d848=_0x4257b0;logger[_0x8cc3('0x1d')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x46d848['id']);logger[_0x8cc3('0x1d')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x46d848['id'],_0x3c4fa5[_0x8cc3('0x55')],_0x3b8ec6[_0x8cc3('0x3c')]);switch(_0x3b8ec6[_0x8cc3('0x3c')]){case _0x8cc3('0x6a'):emit(util[_0x8cc3('0x45')](_0x8cc3('0x6b'),_0x3c4fa5[_0x8cc3('0x55')]),_0x8cc3('0x6c'),{'recordId':_0x46d848['id']});break;case _0x8cc3('0x6d'):emit(util[_0x8cc3('0x45')](_0x8cc3('0x6b'),_0x3c4fa5['name']),_0x8cc3('0x77'),{'uri':util['format'](_0x8cc3('0x78'),_0x42f466['instanceUrl'],_0x46d848['id'])});break;default:logger[_0x8cc3('0x6f')](_0x8cc3('0x72'),_0x8cc3('0x79'));}})['catch'](function(_0x2a69be){logger[_0x8cc3('0x6f')]('[OUTBOUND]',_0x2a69be);});};exports[_0x8cc3('0x7a')]=function(_0x35b61e,_0x1a49f3,_0x1ad04d,_0x288d77,_0x11cf22,_0x17e4b6){var _0x266d01,_0x166e04,_0x26692f,_0x394f14;_0x17e4b6[_0x8cc3('0x60')]=intUtil[_0x8cc3('0x5f')](_0x17e4b6[_0x8cc3('0x60')]);_0x17e4b6[_0x8cc3('0x59')]=intUtil['stripTrailingSlash'](_0x17e4b6[_0x8cc3('0x59')]);if(_0x11cf22&&_0x11cf22[_0x8cc3('0x61')]){logger[_0x8cc3('0x1d')]('['+_0x1a49f3[_0x8cc3('0x7b')][_0x8cc3('0x7c')]()+']','Recording\x20is\x20enabled!');_0x1a49f3[_0x8cc3('0x64')]=util[_0x8cc3('0x45')](_0x8cc3('0x65'),_0x17e4b6[_0x8cc3('0x60')],_0x1a49f3[_0x8cc3('0x66')],md5(_0x1a49f3[_0x8cc3('0x66')]));}else{_0x1a49f3[_0x8cc3('0x64')]='';}return getConnection(_0x17e4b6)[_0x8cc3('0x24')](function(_0x544b20){_0x394f14=_0x544b20;if(!_[_0x8cc3('0x20')](_0x288d77)){return getUser(_0x17e4b6,_0x288d77[_0x8cc3('0x55')],_0x394f14);}else{return getUser(_0x17e4b6,null,_0x394f14);}})[_0x8cc3('0x24')](function(_0x37bd49){_0x266d01=_0x37bd49;return getEndUser(_0x17e4b6,_0x1ad04d,_0x1a49f3[_0x8cc3('0x67')],_0x1a49f3[_0x8cc3('0x7d')],_0x394f14);})['then'](function(_0xdccd2a){_0x166e04=_0xdccd2a;return getTicket(_0x17e4b6,_0x266d01,_0x166e04,_0x1ad04d,_0x1a49f3,_0x1ad04d[_0x8cc3('0x68')],_0x394f14);})['then'](function(_0x1a741a){_0x26692f=_0x1a741a;logger[_0x8cc3('0x1d')]('['+_0x1a49f3[_0x8cc3('0x7b')][_0x8cc3('0x7c')]()+_0x8cc3('0x7e'),_0x26692f['id']);logger['info']('['+_0x1a49f3[_0x8cc3('0x7b')][_0x8cc3('0x7c')]()+']\x20Integration\x20account\x20type\x20%s.',_0x17e4b6[_0x8cc3('0x3c')]);})[_0x8cc3('0x6e')](function(_0x4e2128){logger['error']('['+_0x1a49f3['lastevent'][_0x8cc3('0x7c')]()+']',_0x4e2128);});};
\ No newline at end of file
+var _0x189b=['Descriptions','ticketType','Task','ActivityDate','utc','endUserType','contact','lead','WhoId','WhatId','Case','account','AccountId','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','User','find','execute','then','length','info','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','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','merge','account_contact_lead','additionalSearchAccount','Account','first','Phone','attributes','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','<unknown>','format','Caller\x20-\x20%s','Company','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','upperFirst','forEach','includes','string','picklist','idField','content','variable','variableName','toString','type','customVariable','Variable','name','password','concat','securityToken','Connection','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','serverUrl','remoteUri','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','trigger:browser:url','instanceUrl','error','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','newTab','%s/%s/e','unmanaged','monitor_format','lastevent','toUpperCase','calleridname',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','request-promise','moment','bluebird','util','./util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter','emit','getString','Subjects'];(function(_0x431cf2,_0x1d4456){var _0x10c9a7=function(_0x574efe){while(--_0x574efe){_0x431cf2['push'](_0x431cf2['shift']());}};_0x10c9a7(++_0x1d4456);}(_0x189b,0x1ee));var _0xb189=function(_0x1ba2cf,_0x57b0f2){_0x1ba2cf=_0x1ba2cf-0x0;var _0x4ef5b5=_0x189b[_0x1ba2cf];return _0x4ef5b5;};'use strict';var _=require('lodash');var rp=require(_0xb189('0x0'));var moment=require(_0xb189('0x1'));var BPromise=require(_0xb189('0x2'));var md5=require('md5');var jsforce=require('jsforce');var util=require(_0xb189('0x3'));var Redis=require('ioredis');var intUtil=require(_0xb189('0x4'));var config=require(_0xb189('0x5'));var logger=require('../../../../config/logger')(_0xb189('0x6'));config[_0xb189('0x7')]=_[_0xb189('0x8')](config[_0xb189('0x7')],{'host':_0xb189('0x9'),'port':0x18eb});var io=require(_0xb189('0xa'))(new Redis(config[_0xb189('0x7')]));function emit(_0x2f8a92,_0x33470d,_0x10018d){io['to'](_0x2f8a92)[_0xb189('0xb')](_0x33470d,_0x10018d);}function getTicket(_0x156f8d,_0x45644d,_0x18459d,_0x4a71e0,_0x579835,_0x45a936,_0x49f612,_0x400a6c){var _0x16cb29=Object['assign']({},{'OwnerId':_0x45644d['id'],'Subject':intUtil[_0xb189('0xc')](_0x4a71e0[_0xb189('0xd')],_0x579835,'\x20'),'Description':intUtil[_0xb189('0xc')](_0x4a71e0[_0xb189('0xe')],_0x579835,'\x0a')},getCustomFields(_0x45a936,_0x579835));if(_0x18459d){if(_0x4a71e0[_0xb189('0xf')]===_0xb189('0x10')){_0x16cb29[_0xb189('0x11')]=moment[_0xb189('0x12')]();_0x16cb29['IsReminderSet']=![];_0x16cb29['IsRecurrence']=![];if(_0x18459d[_0xb189('0x13')]===_0xb189('0x14')||_0x18459d[_0xb189('0x13')]===_0xb189('0x15')){_0x16cb29[_0xb189('0x16')]=_0x18459d['id'];}else if(_0x18459d[_0xb189('0x13')]==='account'){_0x16cb29[_0xb189('0x17')]=_0x18459d['id'];}}else if(_0x4a71e0[_0xb189('0xf')]===_0xb189('0x18')){if(_0x18459d[_0xb189('0x13')]===_0xb189('0x14')){_0x16cb29['ContactId']=_0x18459d['id'];}else if(_0x18459d[_0xb189('0x13')]===_0xb189('0x19')){_0x16cb29[_0xb189('0x1a')]=_0x18459d['id'];}else if(_0x18459d['endUserType']===_0xb189('0x15')&&_0x4a71e0[_0xb189('0x1b')]){_0x16cb29[_0x4a71e0[_0xb189('0x1b')]]=_0x18459d['id'];}else{logger['info'](_0xb189('0x1c'));}}}return _0x49f612[_0xb189('0x1d')](_0x4a71e0[_0xb189('0xf')])[_0xb189('0x1e')](_0x16cb29);}function getUser(_0x2d8d6a,_0x581a39,_0x3465fe){if(!_[_0xb189('0x1f')](_0x581a39)&&intUtil['validateEmail'](_0x581a39)){var _0x51256d={'Email':_0x581a39};var _0x13c1f1={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3465fe['sobject'](_0xb189('0x20'))[_0xb189('0x21')](_0x51256d,_0x13c1f1)[_0xb189('0x22')]()[_0xb189('0x23')](function(_0x3c57cf){if(_0x3c57cf[_0xb189('0x24')]){var _0x7f1583=_['find'](_0x3c57cf,function(_0x4b3089){return _0x4b3089['Email']===_0x581a39;});if(_0x7f1583){logger[_0xb189('0x25')](_0xb189('0x26'),_0x581a39);return BPromise[_0xb189('0x27')]({'id':_0x7f1583['Id'],'name':_0x7f1583[_0xb189('0x28')]});}}else{logger[_0xb189('0x25')](_0xb189('0x29'),_0x581a39);return _0x3465fe[_0xb189('0x2a')]()[_0xb189('0x23')](function(_0x50d45b){return BPromise[_0xb189('0x27')]({'id':_0x50d45b[_0xb189('0x2b')],'name':_0x50d45b[_0xb189('0x2c')]});});}});}else{logger['info'](_0xb189('0x29'),_0x581a39);return _0x3465fe[_0xb189('0x2a')]()['then'](function(_0x11216b){return BPromise[_0xb189('0x27')]({'id':_0x11216b[_0xb189('0x2b')],'name':_0x11216b['display_name']});});}}function getEndUser(_0xdb6889,_0x1be43f,_0xb83e6e,_0x26a42a,_0x2fa77f){var _0x4f7055={'$or':{'Phone':_0x26a42a}};var _0x21b0b4={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0xb189('0x23')](function(){logger[_0xb189('0x25')](_0xb189('0x2d'),_0x26a42a,_0x1be43f[_0xb189('0x2e')]);switch(_0x1be43f[_0xb189('0x2e')]){case _0xb189('0x2f'):var _0x2824b4=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f['additionalSearchContact']){var _0x5a8823={};_0x5a8823[_0x1be43f[_0xb189('0x31')]]=_0x26a42a;_['merge'](_0x2824b4[_0xb189('0x32')],_0x5a8823);}return _0x2fa77f[_0xb189('0x1d')](_0xb189('0x33'))['find'](_0x2824b4,_0x21b0b4)['execute']()[_0xb189('0x23')](function(_0x573010){if(_0x573010&&_0x573010['length']){return _0x573010;}else{var _0x389b42=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f[_0xb189('0x34')]){var _0xe47cb3={};_0xe47cb3[_0x1be43f[_0xb189('0x34')]]=_0x26a42a;_[_0xb189('0x35')](_0x389b42[_0xb189('0x32')],_0xe47cb3);}return _0x2fa77f[_0xb189('0x1d')]('Lead')[_0xb189('0x21')](_0x389b42,_0x21b0b4);}});case _0xb189('0x36'):var _0x54e712=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f[_0xb189('0x37')]){var _0x5a8823={};_0x5a8823[_0x1be43f[_0xb189('0x37')]]=_0x26a42a;_[_0xb189('0x35')](_0x54e712[_0xb189('0x32')],_0x5a8823);}return _0x2fa77f['sobject'](_0xb189('0x38'))[_0xb189('0x21')](_0x54e712,_0x21b0b4)[_0xb189('0x22')]()[_0xb189('0x23')](function(_0x561eb4){if(_0x561eb4&&_0x561eb4[_0xb189('0x24')]){return _0x561eb4;}else{var _0x3e659b=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f['additionalSearchContact']){var _0x119ba4={};_0x119ba4[_0x1be43f['additionalSearchContact']]=_0x26a42a;_[_0xb189('0x35')](_0x3e659b[_0xb189('0x32')],_0x119ba4);}return _0x2fa77f[_0xb189('0x1d')](_0xb189('0x33'))[_0xb189('0x21')](_0x3e659b,_0x21b0b4)[_0xb189('0x23')](function(_0x322dbd){if(_0x322dbd&&_0x322dbd[_0xb189('0x24')]){return _0x322dbd;}else{var _0x1752ba=_['cloneDeep'](_0x4f7055);if(_0x1be43f['additionalSearchLead']){var _0x397bc9={};_0x397bc9[_0x1be43f[_0xb189('0x34')]]=_0x26a42a;_['merge'](_0x1752ba[_0xb189('0x32')],_0x397bc9);}return _0x2fa77f[_0xb189('0x1d')]('Lead')['find'](_0x1752ba,_0x21b0b4);}});}});case _0xb189('0x14'):var _0x2824b4=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f[_0xb189('0x31')]){var _0x5a8823={};_0x5a8823[_0x1be43f[_0xb189('0x31')]]=_0x26a42a;_[_0xb189('0x35')](_0x2824b4['$or'],_0x5a8823);}return _0x2fa77f[_0xb189('0x1d')](_0xb189('0x33'))[_0xb189('0x21')](_0x2824b4,_0x21b0b4)['execute']();case _0xb189('0x15'):var _0x23eac4=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f[_0xb189('0x34')]){var _0x5a8823={};_0x5a8823[_0x1be43f[_0xb189('0x34')]]=_0x26a42a;_[_0xb189('0x35')](_0x23eac4[_0xb189('0x32')],_0x5a8823);}return _0x2fa77f[_0xb189('0x1d')]('Lead')[_0xb189('0x21')](_0x23eac4,_0x21b0b4);case _0xb189('0x19'):var _0x54e712=_[_0xb189('0x30')](_0x4f7055);if(_0x1be43f[_0xb189('0x37')]){var _0x5a8823={};_0x5a8823[_0x1be43f['additionalSearchAccount']]=_0x26a42a;_[_0xb189('0x35')](_0x54e712[_0xb189('0x32')],_0x5a8823);}return _0x2fa77f[_0xb189('0x1d')]('Account')[_0xb189('0x21')](_0x54e712,_0x21b0b4);default:return null;}})['then'](function(_0x4d5531){if(_0x4d5531&&_0x4d5531[_0xb189('0x24')]){var _0x4685ca=_[_0xb189('0x39')](_0x4d5531);if(_0x4685ca){return BPromise['resolve']({'id':_0x4685ca['Id'],'name':_0x4685ca[_0xb189('0x28')],'phone':_0x4685ca[_0xb189('0x3a')],'endUserType':_0x4685ca[_0xb189('0x3b')]['type']['toLowerCase']()});}}})['then'](function(_0x2f555b){if(_0x2f555b){logger[_0xb189('0x25')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x2f555b[_0xb189('0x13')],_0x26a42a);return BPromise[_0xb189('0x27')](_0x2f555b);}else{logger[_0xb189('0x25')](_0xb189('0x3c'),_0x26a42a);var _0x1b8891={'Phone':_0x26a42a};if(_0x1be43f[_0xb189('0x3d')]){if(_0x1be43f[_0xb189('0x3d')]===_0xb189('0x14')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x26a42a,_0x1be43f[_0xb189('0x3d')]);_0x1b8891[_0xb189('0x3e')]=_0xb83e6e!==_0xb189('0x3f')?_0xb83e6e:util[_0xb189('0x40')](_0xb189('0x41'),_0x26a42a);}else if(_0x1be43f[_0xb189('0x3d')]===_0xb189('0x15')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x26a42a,_0x1be43f['moduleCreate']);_0x1b8891['LastName']=_0xb83e6e!==_0xb189('0x3f')?_0xb83e6e:util['format'](_0xb189('0x41'),_0x26a42a);_0x1b8891[_0xb189('0x42')]='No\x20Company';}else if(_0x1be43f[_0xb189('0x3d')]===_0xb189('0x19')){logger[_0xb189('0x25')](_0xb189('0x43'),_0x26a42a,_0x1be43f[_0xb189('0x3d')]);_0x1b8891['Name']=_0xb83e6e!==_0xb189('0x3f')?_0xb83e6e:util[_0xb189('0x40')](_0xb189('0x41'),_0x26a42a);}else{return null;}}return _0x2fa77f[_0xb189('0x1d')](_[_0xb189('0x44')](_0x1be43f['moduleCreate']))['create'](_0x1b8891)[_0xb189('0x23')](function(_0x3a34a8){return BPromise[_0xb189('0x27')]({'id':_0x3a34a8['id'],'endUserType':_0x1be43f['moduleCreate']});});}});}function getCustomFields(_0x7d5008,_0x2e5aef){var _0x355dbc={};if(_0x7d5008['length']>0x0){_[_0xb189('0x45')](_0x7d5008,function(_0x56cde4){if(_[_0xb189('0x46')]([_0xb189('0x47'),_0xb189('0x48')],_0x56cde4['type'])&&_0x56cde4[_0xb189('0x49')]){_0x355dbc[_0x56cde4[_0xb189('0x49')]]=_0x56cde4[_0xb189('0x4a')]['toString']();}else if(_0x56cde4['type']===_0xb189('0x4b')&&_0x56cde4[_0xb189('0x4c')]&&_0x56cde4[_0xb189('0x49')]){_0x2e5aef[_0x56cde4[_0xb189('0x4c')]]&&(_0x355dbc[_0x56cde4[_0xb189('0x49')]]=_0x2e5aef[_0x56cde4[_0xb189('0x4c')]][_0xb189('0x4d')]());}else if(_0x56cde4[_0xb189('0x4e')]===_0xb189('0x4f')&&_0x56cde4[_0xb189('0x50')]&&_0x56cde4[_0xb189('0x50')]['name']&&_0x56cde4[_0xb189('0x49')]){_0x2e5aef[_0x56cde4[_0xb189('0x50')][_0xb189('0x51')]['toLowerCase']()]&&(_0x355dbc[_0x56cde4[_0xb189('0x49')]]=_0x2e5aef[_0x56cde4[_0xb189('0x50')][_0xb189('0x51')]['toLowerCase']()][_0xb189('0x4d')]());}});}return _0x355dbc;}function getConnection(_0x45945d){var _0x130582=_0x45945d[_0xb189('0x52')][_0xb189('0x53')](_0x45945d[_0xb189('0x54')]);var _0x143a47=new jsforce[(_0xb189('0x55'))]({'oauth2':{'loginUrl':_0x45945d['remoteUri']||_0xb189('0x56'),'clientId':_0x45945d[_0xb189('0x57')],'clientSecret':_0x45945d[_0xb189('0x58')]}});return _0x143a47[_0xb189('0x59')](_0x45945d[_0xb189('0x5a')],_0x130582)[_0xb189('0x23')](function(){logger[_0xb189('0x25')](_0xb189('0x5b'));return _0x143a47;});}exports['queue']=function(_0x56d01c,_0x23408c,_0x4248d5,_0x551174,_0x9a9818,_0x5936b9){var _0x39a28c,_0x2f833f,_0x5c92ee,_0xf5c95e;_0x5936b9[_0xb189('0x5c')]=intUtil['stripTrailingSlash'](_0x5936b9[_0xb189('0x5c')]);_0x5936b9[_0xb189('0x5d')]=intUtil[_0xb189('0x5e')](_0x5936b9['remoteUri']);if(_0x9a9818&&_0x9a9818['monitor_format']){logger[_0xb189('0x25')](_0xb189('0x5f'),_0xb189('0x60'));_0x23408c[_0xb189('0x61')]=util[_0xb189('0x40')](_0xb189('0x62'),_0x5936b9[_0xb189('0x5c')],_0x23408c[_0xb189('0x63')],md5(_0x23408c[_0xb189('0x63')]));}else{_0x23408c['recordingURL']='';}return getConnection(_0x5936b9)[_0xb189('0x23')](function(_0x2a2069){_0xf5c95e=_0x2a2069;return getUser(_0x5936b9,_0x551174[_0xb189('0x64')],_0xf5c95e);})[_0xb189('0x23')](function(_0x1f6d0d){_0x39a28c=_0x1f6d0d;return getEndUser(_0x5936b9,_0x4248d5,_0x23408c['calleridname'],_0x23408c[_0xb189('0x65')],_0xf5c95e);})[_0xb189('0x23')](function(_0x1ddd02){_0x2f833f=_0x1ddd02;return getTicket(_0x5936b9,_0x39a28c,_0x2f833f,_0x4248d5,_0x23408c,_0x4248d5[_0xb189('0x66')],_0xf5c95e,'queue');})['then'](function(_0x6fa661){_0x5c92ee=_0x6fa661;logger['info'](_0xb189('0x67'),_0x5c92ee['id']);logger[_0xb189('0x25')](_0xb189('0x68'),_0x5c92ee['id'],_0x551174[_0xb189('0x51')],_0x5936b9[_0xb189('0x4e')]);switch(_0x5936b9['type']){case _0xb189('0x69'):emit(util[_0xb189('0x40')](_0xb189('0x6a'),_0x551174[_0xb189('0x51')]),_0xb189('0x6b'),{'recordId':_0x5c92ee['id']});break;case'newTab':emit(util['format']('user:%s',_0x551174['name']),_0xb189('0x6c'),{'uri':util['format']('%s/%s/e',_0xf5c95e[_0xb189('0x6d')],_0x5c92ee['id'])});break;default:logger[_0xb189('0x6e')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0xb189('0x6f')](function(_0x1b33ca){logger[_0xb189('0x6e')](_0xb189('0x5f'),_0x1b33ca);});};exports[_0xb189('0x70')]=function(_0xe5b262,_0x2dd01c,_0x269a07,_0x23d3f6,_0x4a5e41,_0x5b5979,_0x432cff){var _0x27059e,_0x58efef,_0x1f3dfe,_0x4b9f16;_0x5b5979[_0xb189('0x5c')]=intUtil[_0xb189('0x5e')](_0x5b5979[_0xb189('0x5c')]);_0x5b5979[_0xb189('0x5d')]=intUtil[_0xb189('0x5e')](_0x5b5979[_0xb189('0x5d')]);if(_0x432cff&&_0x432cff[_0xb189('0x71')]&&_0x432cff[_0xb189('0x71')]!==_0xb189('0x72')){logger[_0xb189('0x25')](_0xb189('0x73'),_0xb189('0x60'));_0x2dd01c[_0xb189('0x61')]=util[_0xb189('0x40')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b5979[_0xb189('0x5c')],_0x2dd01c[_0xb189('0x63')],md5(_0x2dd01c['uniqueid']));}return getConnection(_0x5b5979)[_0xb189('0x23')](function(_0x2fe0ed){_0x4b9f16=_0x2fe0ed;return getUser(_0x5b5979,_0x23d3f6[_0xb189('0x64')],_0x4b9f16);})[_0xb189('0x23')](function(_0x288717){_0x27059e=_0x288717;return getEndUser(_0x5b5979,_0x269a07,_0x2dd01c[_0xb189('0x74')],_0x2dd01c[_0xb189('0x75')],_0x4b9f16);})[_0xb189('0x23')](function(_0x21d792){_0x58efef=_0x21d792;return getTicket(_0x5b5979,_0x27059e,_0x58efef,_0x269a07,_0x2dd01c,_0x269a07[_0xb189('0x66')],_0x4b9f16,_0xb189('0x70'));})[_0xb189('0x23')](function(_0x38b392){_0x1f3dfe=_0x38b392;logger[_0xb189('0x25')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x1f3dfe['id']);logger[_0xb189('0x25')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x1f3dfe['id'],_0x23d3f6[_0xb189('0x51')],_0x5b5979[_0xb189('0x4e')]);switch(_0x5b5979[_0xb189('0x4e')]){case _0xb189('0x69'):emit(util[_0xb189('0x40')](_0xb189('0x6a'),_0x23d3f6['name']),_0xb189('0x6b'),{'recordId':_0x1f3dfe['id']});break;case _0xb189('0x76'):emit(util[_0xb189('0x40')](_0xb189('0x6a'),_0x23d3f6['name']),'trigger:browser:url',{'uri':util[_0xb189('0x40')](_0xb189('0x77'),_0x4b9f16[_0xb189('0x6d')],_0x1f3dfe['id'])});break;default:logger['error'](_0xb189('0x73'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0xb189('0x6f')](function(_0x2a0ff8){logger[_0xb189('0x6e')](_0xb189('0x73'),_0x2a0ff8);});};exports[_0xb189('0x78')]=function(_0x4e9d8d,_0x452eba,_0xb6c5da,_0x58cde7,_0x10e93d,_0x4b9a91){var _0x59e2dd,_0x17319d,_0x18fdaa,_0x322783;_0x4b9a91['serverUrl']=intUtil['stripTrailingSlash'](_0x4b9a91[_0xb189('0x5c')]);_0x4b9a91[_0xb189('0x5d')]=intUtil[_0xb189('0x5e')](_0x4b9a91[_0xb189('0x5d')]);if(_0x10e93d&&_0x10e93d[_0xb189('0x79')]){logger[_0xb189('0x25')]('['+_0x452eba[_0xb189('0x7a')][_0xb189('0x7b')]()+']','Recording\x20is\x20enabled!');_0x452eba[_0xb189('0x61')]=util[_0xb189('0x40')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4b9a91['serverUrl'],_0x452eba[_0xb189('0x63')],md5(_0x452eba[_0xb189('0x63')]));}else{_0x452eba[_0xb189('0x61')]='';}return getConnection(_0x4b9a91)[_0xb189('0x23')](function(_0x3c663f){_0x322783=_0x3c663f;if(!_[_0xb189('0x1f')](_0x58cde7)){return getUser(_0x4b9a91,_0x58cde7[_0xb189('0x51')],_0x322783);}else{return getUser(_0x4b9a91,null,_0x322783);}})['then'](function(_0x10f60e){_0x59e2dd=_0x10f60e;return getEndUser(_0x4b9a91,_0xb6c5da,_0x452eba[_0xb189('0x7c')],_0x452eba[_0xb189('0x65')],_0x322783);})['then'](function(_0x176768){_0x17319d=_0x176768;return getTicket(_0x4b9a91,_0x59e2dd,_0x17319d,_0xb6c5da,_0x452eba,_0xb6c5da['Fields'],_0x322783);})[_0xb189('0x23')](function(_0x519f16){_0x18fdaa=_0x519f16;logger[_0xb189('0x25')]('['+_0x452eba[_0xb189('0x7a')][_0xb189('0x7b')]()+_0xb189('0x7d'),_0x18fdaa['id']);logger[_0xb189('0x25')]('['+_0x452eba['lastevent'][_0xb189('0x7b')]()+_0xb189('0x7e'),_0x4b9a91[_0xb189('0x4e')]);})[_0xb189('0x6f')](function(_0x55bbe5){logger[_0xb189('0x6e')]('['+_0x452eba[_0xb189('0x7a')][_0xb189('0x7b')]()+']',_0x55bbe5);});};
\ No newline at end of file
index 906bf8e..3902466 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cf3=['servicenow','redis','defaults','localhost','socket.io-emitter','GET','then','result','length','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','userEmail','sys_user?sysparm_query=email%3D','info','],\x20getUser\x20rp\x20obj','active','true','userId','sys_id','adminId','adminEmail',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','user','endUserNumber','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20createEndUser\x20crm','forEach','string','picklist','type','nameField','customField','toLowerCase','content','toString','includes','idField','variable','variableName','Variable','name',']\x20getTicket\x20input\x20crm','outbound','assign','getString','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketNumber',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','incident','ticketId','Incident\x20-\x20','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','emit','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','format','%s/api/now/table/','isNil','email','destcalleridnum','callDirection','unmanaged','queue','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','util','ioredis','./util'];(function(_0xed5f9c,_0x5a25cd){var _0x3a1c43=function(_0x251202){while(--_0x251202){_0xed5f9c['push'](_0xed5f9c['shift']());}};_0x3a1c43(++_0x5a25cd);}(_0x9cf3,0x19d));var _0x39cf=function(_0x2f7fe7,_0x178b57){_0x2f7fe7=_0x2f7fe7-0x0;var _0x20001e=_0x9cf3[_0x2f7fe7];return _0x20001e;};'use strict';var _=require('lodash');var Promise=require('bluebird');var rp=require('request-promise');var util=require(_0x39cf('0x0'));var md5=require('md5');var Redis=require(_0x39cf('0x1'));var intUtil=require(_0x39cf('0x2'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x39cf('0x3'));config[_0x39cf('0x4')]=_[_0x39cf('0x5')](config['redis'],{'host':_0x39cf('0x6'),'port':0x18eb});var io=require(_0x39cf('0x7'))(new Redis(config[_0x39cf('0x4')]));function getAdminUser(_0x33b2e4,_0x14ab5d,_0x3600b5,_0x208f99,_0x7f0374,_0xd83fbf){return new Promise(function(_0x1a57f7,_0x32adea){var _0x47792b={'method':_0x39cf('0x8'),'uri':_0x208f99+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x7f0374+'&'+_0xd83fbf,'auth':_0x14ab5d,'json':!![]};return rp(_0x47792b)[_0x39cf('0x9')](function(_0x204802){if(_0x204802[_0x39cf('0xa')][_0x39cf('0xb')]>0x0){_0x3600b5['adminId']=_0x204802['result'][0x0]['sys_id'];}logger['info']('['+[_0x33b2e4[_0x39cf('0xc')]()]+_0x39cf('0xd'),_0x3600b5);_0x1a57f7(_0x3600b5);})[_0x39cf('0xe')](function(_0x2f680e){logger[_0x39cf('0xf')]('['+[_0x33b2e4[_0x39cf('0xc')]()]+']',_0x2f680e[_0x39cf('0x10')]);_0x32adea(_0x2f680e[_0x39cf('0x10')]);});});}function getUser(_0x5ab8c8,_0x484c80,_0x1958ca,_0x1bdacb,_0x51638a){return function(_0x5e829e){logger['info']('['+[_0x5ab8c8[_0x39cf('0xc')]()]+_0x39cf('0x11'),_0x5e829e);return new Promise(function(_0x598c7e,_0x4ad3c5){if(intUtil['validateEmail'](_0x5e829e[_0x39cf('0x12')])){var _0xe9e6dc={'method':'GET','uri':_0x1958ca+_0x39cf('0x13')+_0x5e829e[_0x39cf('0x12')]+'&'+_0x1bdacb+'&'+_0x51638a,'auth':_0x484c80,'json':!![]};logger[_0x39cf('0x14')]('['+[_0x5ab8c8['toUpperCase']()]+_0x39cf('0x15'),_0xe9e6dc);return rp(_0xe9e6dc)['then'](function(_0x39e336){logger[_0x39cf('0x14')]('['+[_0x5ab8c8['toUpperCase']()]+'],\x20getUser\x20entity',_0x39e336);if(_0x39e336[_0x39cf('0xa')][_0x39cf('0xb')]>0x0&&String(_0x39e336[_0x39cf('0xa')][0x0][_0x39cf('0x16')])===_0x39cf('0x17')){_0x5e829e[_0x39cf('0x18')]=_0x39e336[_0x39cf('0xa')][0x0][_0x39cf('0x19')];}else{_0x5e829e[_0x39cf('0x18')]=_0x5e829e[_0x39cf('0x1a')];_0x5e829e[_0x39cf('0x12')]=_0x5e829e[_0x39cf('0x1b')];}logger[_0x39cf('0x14')]('['+[_0x5ab8c8[_0x39cf('0xc')]()]+'],\x20getUser\x20crm',_0x5e829e);_0x598c7e(_0x5e829e);})[_0x39cf('0xe')](function(_0x115bcf){logger[_0x39cf('0xf')]('['+[_0x5ab8c8['toUpperCase']()]+']',_0x115bcf['message']);_0x4ad3c5(_0x115bcf['message']);});}else{logger[_0x39cf('0x14')]('['+[_0x5ab8c8[_0x39cf('0xc')]()]+_0x39cf('0x1c'));_0x5e829e[_0x39cf('0x18')]=_0x5e829e['adminId'];_0x5e829e[_0x39cf('0x12')]=_0x5e829e[_0x39cf('0x1b')];_0x598c7e(_0x5e829e);}});};}function createEndUser(_0x5f5c63,_0x214929,_0xebd7c1,_0x300b1b,_0x5d9cf2){logger[_0x39cf('0x14')]('['+[_0x5f5c63[_0x39cf('0xc')]()]+_0x39cf('0x1d'),_0xebd7c1);return new Promise(function(_0x4a49b3,_0x41e8c0){var _0x20a7da={'method':_0x39cf('0x1e'),'uri':_0x300b1b+_0x39cf('0x1f')+_0x5d9cf2,'body':{'user_name':_0xebd7c1['endUserNumber'],'roles':_0x39cf('0x20'),'first_name':_0xebd7c1[_0x39cf('0x21')],'active':_0x39cf('0x17'),'date_format':'System','phone':_0xebd7c1[_0x39cf('0x21')]},'auth':_0x214929,'json':!![]};return rp(_0x20a7da)[_0x39cf('0x9')](function(_0x3e9d74){logger[_0x39cf('0x14')]('['+[_0x5f5c63['toUpperCase']()]+_0x39cf('0x22'),_0x3e9d74[_0x39cf('0xa')]);_0xebd7c1['endUserId']=_0x3e9d74[_0x39cf('0xa')][_0x39cf('0x19')];_0x4a49b3(_0xebd7c1);})[_0x39cf('0xe')](function(_0x4459a4){logger[_0x39cf('0xf')]('['+[_0x5f5c63[_0x39cf('0xc')]()]+']',_0x4459a4[_0x39cf('0x10')]);_0x41e8c0(_0x4459a4[_0x39cf('0x10')]);});});}function getEndUser(_0x2195a7,_0x5e2dce,_0x4b98a0,_0x4eb0d6,_0xc80225){return function(_0x42645b){logger[_0x39cf('0x14')]('['+[_0x2195a7[_0x39cf('0xc')]()]+_0x39cf('0x23'),_0x42645b);return new Promise(function(_0x3ee767,_0x1c7f64){var _0x19f4ad={'method':_0x39cf('0x8'),'uri':_0x4b98a0+_0x39cf('0x24')+_0x42645b[_0x39cf('0x21')]+'&'+_0x4eb0d6+'&'+_0xc80225,'auth':_0x5e2dce,'json':!![]};return rp(_0x19f4ad)['then'](function(_0x1b5457){if(_0x1b5457['result'][_0x39cf('0xb')]>0x0){_0x42645b[_0x39cf('0x25')]=_0x1b5457['result'][0x0][_0x39cf('0x19')];logger[_0x39cf('0x14')]('['+[_0x2195a7['toUpperCase']()]+'],\x20getEndUser\x20crm',_0x42645b);_0x3ee767(_0x42645b);}else{return createEndUser(_0x2195a7,_0x5e2dce,_0x42645b,_0x4b98a0,_0x4eb0d6)['then'](function(_0x2b0d34){logger['info']('['+[_0x2195a7[_0x39cf('0xc')]()]+_0x39cf('0x26'),_0x2b0d34);_0x3ee767(_0x2b0d34);});}})[_0x39cf('0xe')](function(_0x173d28){logger[_0x39cf('0xf')]('['+[_0x2195a7['toUpperCase']()]+']',_0x173d28[_0x39cf('0x10')]);_0x1c7f64(_0x173d28['message']);});});};}function getCustomFields(_0x133107,_0x3b89cb){var _0x534261={};if(_0x133107['length']>0x0){_[_0x39cf('0x27')](_0x133107,function(_0x5080ae){if(_['includes']([_0x39cf('0x28'),_0x39cf('0x29')],_0x5080ae[_0x39cf('0x2a')])&&_0x5080ae[_0x39cf('0x2b')]&&!_0x5080ae[_0x39cf('0x2c')]){_0x534261[_0x5080ae[_0x39cf('0x2b')][_0x39cf('0x2d')]()]=_0x5080ae[_0x39cf('0x2e')][_0x39cf('0x2f')]();}else if(_[_0x39cf('0x30')]([_0x39cf('0x28'),_0x39cf('0x29')],_0x5080ae[_0x39cf('0x2a')])&&_0x5080ae[_0x39cf('0x31')]&&_0x5080ae['customField']){_0x534261[_0x5080ae['idField'][_0x39cf('0x2d')]()]=_0x5080ae[_0x39cf('0x2e')]['toString']();}else if(_0x5080ae[_0x39cf('0x2a')]===_0x39cf('0x32')&&_0x5080ae[_0x39cf('0x33')]&&_0x5080ae[_0x39cf('0x31')]&&_0x5080ae[_0x39cf('0x2c')]){_0x534261[_0x5080ae[_0x39cf('0x31')][_0x39cf('0x2d')]()]=_0x3b89cb[_0x5080ae['variableName']][_0x39cf('0x2f')]();}else if(_0x5080ae[_0x39cf('0x2a')]==='customVariable'&&_0x5080ae[_0x39cf('0x34')]&&_0x5080ae['Variable'][_0x39cf('0x35')]&&_0x5080ae[_0x39cf('0x31')]&&_0x5080ae[_0x39cf('0x2c')]){_0x534261[_0x5080ae[_0x39cf('0x31')][_0x39cf('0x2d')]()]=_0x3b89cb[_0x5080ae[_0x39cf('0x34')]['name']['toLowerCase']()]['toString']();}});}return _0x534261;}function getTicket(_0x11ebe1,_0x5972f5,_0x5b9a5f,_0x5e5a64,_0x21b6a4,_0x54a4a6){return function(_0x48d3f5){logger[_0x39cf('0x14')]('['+[_0x11ebe1['toUpperCase']()]+_0x39cf('0x36'),_0x48d3f5);return new Promise(function(_0x3fb4e4,_0x3d6d93){var _0x2d5af3=_0x11ebe1[_0x39cf('0x2d')]()===_0x39cf('0x37')?_0x48d3f5[_0x39cf('0x18')]:_0x48d3f5[_0x39cf('0x25')];var _0x1fa330={'method':_0x39cf('0x1e'),'uri':_0x5b9a5f+'incident'+'?'+_0x54a4a6,'body':Object[_0x39cf('0x38')]({},{'active':'true','caller_id':_0x2d5af3,'assigned_to':_0x48d3f5[_0x39cf('0x18')],'short_description':intUtil[_0x39cf('0x39')](_0x5e5a64[_0x39cf('0x3a')],_0x21b6a4,'\x20'),'description':intUtil[_0x39cf('0x39')](_0x5e5a64[_0x39cf('0x3b')],_0x21b6a4,'\x0a')},getCustomFields(_0x5e5a64['Fields'],_0x21b6a4)),'auth':_0x5972f5,'json':!![]};return rp(_0x1fa330)['then'](function(_0x1b0f98){logger['info']('['+[_0x11ebe1[_0x39cf('0xc')]()]+_0x39cf('0x3c'),_0x1b0f98[_0x39cf('0xa')]);_0x48d3f5['ticketId']=_0x1b0f98['result'][_0x39cf('0x19')];_0x48d3f5[_0x39cf('0x3d')]=_0x1b0f98['result']['number'];logger[_0x39cf('0x14')]('['+[_0x11ebe1[_0x39cf('0xc')]()]+_0x39cf('0x3e'),_0x48d3f5);_0x3fb4e4(_0x48d3f5);})[_0x39cf('0xe')](function(_0x32a001){logger['error']('['+[_0x11ebe1[_0x39cf('0xc')]()]+']',_0x32a001[_0x39cf('0x10')]);_0x3d6d93(_0x32a001['message']);});});};}function createRemoteTag(_0x4a67df,_0x4def67,_0x489a64,_0x35044c){return new Promise(function(_0x10e7a4,_0x19a696){var _0x4a98be={'method':_0x39cf('0x1e'),'uri':_0x489a64+'label'+'?'+_0x35044c,'body':{'short_description':_0x4a67df,'global':!![],'active':!![],'name':_0x4a67df},'auth':_0x4def67,'json':!![]};return rp(_0x4a98be)['then'](function(_0x70d76b){var _0x2e17f7=_0x70d76b[_0x39cf('0xa')]['sys_id'];_0x10e7a4(_0x2e17f7);});});}function getRemoteTag(_0x1214e9,_0x545036,_0x5283f9,_0x563e21,_0x379033){return new Promise(function(_0x382775,_0x3a6dab){var _0x424f70={'method':'GET','uri':_0x5283f9+_0x39cf('0x3f')+_0x39cf('0x40')+_0x1214e9+'&'+_0x563e21,'auth':_0x545036,'json':!![]};return rp(_0x424f70)['then'](function(_0x521ba0){if(_0x521ba0['result'][_0x39cf('0xb')]>0x0){var _0x144bdc=_0x521ba0['result'][0x0][_0x39cf('0x19')];_0x382775(_0x144bdc);}else{return createRemoteTag(_0x1214e9,_0x545036,_0x5283f9,_0x563e21)[_0x39cf('0x9')](function(_0x3e1896){_0x382775(_0x3e1896);});}});});}function assignTagToIncident(_0xae91fb,_0x2d604e,_0x98f469,_0x13c47e,_0x413d0a){return new Promise(function(_0x124427,_0x3f66ba){var _0x51b716={'method':_0x39cf('0x1e'),'uri':_0x98f469+'label_entry'+'?'+_0x413d0a,'body':{'label':_0xae91fb,'table':_0x39cf('0x41'),'id_type':'Incident','table_key':_0x13c47e[_0x39cf('0x42')],'title':_0x39cf('0x43')+_0x13c47e[_0x39cf('0x3d')],'id_display':_0x13c47e[_0x39cf('0x3d')]},'auth':_0x2d604e,'json':!![]};return rp(_0x51b716)[_0x39cf('0x9')](function(_0x123886){_0x124427();})[_0x39cf('0xe')](function(){_0x124427();});});}function manageTags(_0x4ca718,_0x265e15,_0x5d7818,_0x481769,_0x47c291,_0x577b1e,_0x56bc30){return new Promise(function(_0x2f2a19,_0x13a3d1){var _0x52bda2=[];_0x265e15[_0x39cf('0x27')](function(_0x146348){_0x52bda2['push'](getRemoteTag(_0x146348,_0x5d7818,_0x481769,_0x577b1e,_0x56bc30));});return Promise[_0x39cf('0x44')](_0x52bda2)[_0x39cf('0x9')](function(_0x13acf2){if(_0x13acf2['length']){logger['info']('['+[_0x4ca718[_0x39cf('0xc')]()]+_0x39cf('0x45'),_0x13acf2);var _0x45c140=[];_0x13acf2[_0x39cf('0x27')](function(_0x35fced){_0x45c140[_0x39cf('0x46')](assignTagToIncident(_0x35fced,_0x5d7818,_0x481769,_0x47c291,_0x577b1e));});return Promise[_0x39cf('0x44')](_0x45c140)[_0x39cf('0x9')](function(){_0x2f2a19();})[_0x39cf('0xe')](function(){_0x2f2a19();});}else{_0x2f2a19();}});});}function getTags(_0x25cca0,_0x31d052,_0x3a401a,_0x5f105c,_0x241eb4,_0x767f9){return function(_0x2fd503){return new Promise(function(_0x42a5ba,_0x57c8c0){var _0x218a36=[];var _0x1638e5=_0x5f105c['Tags'];if(_0x1638e5&&_0x1638e5[_0x39cf('0xb')]>0x0){_0x218a36=_[_0x39cf('0x47')](_0x1638e5,'name');}if(_0x218a36['length']>0x0){return manageTags(_0x25cca0,_0x218a36,_0x31d052,_0x3a401a,_0x2fd503,_0x241eb4,_0x767f9)['then'](function(){_0x42a5ba(_0x2fd503);});}else{_0x42a5ba(_0x2fd503);}});};}function emit(_0x598fdb,_0x2580b8,_0x7738b9){var _0x49f6dd=_0x39cf('0x48')+_0x39cf('0x49')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x39cf('0x4a');var _0x4b6290={'uri':_0x598fdb+_0x39cf('0x4b')+_0x7738b9+_0x49f6dd};io['to'](util['format'](_0x39cf('0x4c'),_0x2580b8))[_0x39cf('0x4d')]('trigger:browser:url',_0x4b6290);}exports['cs']=function(_0x2d6e04,_0x318300,_0x31a3f7,_0x51bea2,_0x1b2264,_0x135a8c,_0x112c4a,_0x40a44c){var _0x30ac89={};var _0x1daa90={'user':_0x135a8c[_0x39cf('0x4e')],'pass':_0x135a8c[_0x39cf('0x4f')]};var _0x706ccd=_0x39cf('0x50');var _0x4a0930=_0x39cf('0x51');_0x135a8c[_0x39cf('0x52')]=intUtil[_0x39cf('0x53')](_0x135a8c['remoteUri']);_0x135a8c[_0x39cf('0x54')]=intUtil[_0x39cf('0x53')](_0x135a8c['serverUrl']);var _0x46cd65=util[_0x39cf('0x55')](_0x39cf('0x56'),_0x135a8c[_0x39cf('0x52')]);_0x30ac89['userEmail']=!_[_0x39cf('0x57')](_0x51bea2)?_0x51bea2[_0x39cf('0x58')]:null;_0x30ac89[_0x39cf('0x1b')]=_0x135a8c[_0x39cf('0x58')];_0x30ac89[_0x39cf('0x21')]=_0x40a44c[_0x39cf('0x2d')]()===_0x39cf('0x37')?_0x318300[_0x39cf('0x59')]:_0x318300['calleridnum'];_0x30ac89[_0x39cf('0x5a')]=_0x40a44c==='queue'||_0x40a44c===_0x39cf('0x5b')?_0x39cf('0x5c'):'outbound';var _0x5c2077=util[_0x39cf('0x55')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x135a8c[_0x39cf('0x54')],_0x318300[_0x39cf('0x5d')],md5(_0x318300[_0x39cf('0x5d')]));if(_0x1b2264&&_0x1b2264[_0x39cf('0x5e')]){logger[_0x39cf('0x14')](_0x39cf('0x5f'),'Recording\x20is\x20enabled!');_0x318300[_0x39cf('0x60')]=_0x5c2077;}else if(_0x112c4a&&_0x112c4a[_0x39cf('0x61')]&&_0x112c4a[_0x39cf('0x61')]!=='none'){logger[_0x39cf('0x14')](_0x39cf('0x62'),_0x39cf('0x63'));_0x318300[_0x39cf('0x60')]=_0x5c2077;}else{_0x318300[_0x39cf('0x60')]='';}return getAdminUser(_0x40a44c,_0x1daa90,_0x30ac89,_0x46cd65,_0x4a0930,_0x706ccd)['then'](getUser(_0x40a44c,_0x1daa90,_0x46cd65,_0x4a0930,_0x706ccd))[_0x39cf('0x9')](getEndUser(_0x40a44c,_0x1daa90,_0x46cd65,_0x4a0930,_0x706ccd))[_0x39cf('0x9')](getTicket(_0x40a44c,_0x1daa90,_0x46cd65,_0x31a3f7,_0x318300,_0x4a0930))['then'](function(_0x3478c7){logger['info'](util[_0x39cf('0x55')](_0x39cf('0x64'),_0x3478c7[_0x39cf('0x42')]));logger['info'](util['format'](_0x39cf('0x65'),_0x40a44c));if(_0x40a44c!==_0x39cf('0x5b')){logger[_0x39cf('0x14')]('['+[_0x40a44c[_0x39cf('0xc')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x135a8c['remoteUri'],_0x51bea2[_0x39cf('0x35')],_0x3478c7['ticketId']);}})[_0x39cf('0xe')](function(_0x5b4297){logger[_0x39cf('0xf')]('['+[_0x40a44c[_0x39cf('0xc')]()]+_0x39cf('0x66'),util[_0x39cf('0x67')](_0x5b4297,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x2acc=['],\x20getAdminUser\x20crm','catch','error','message','toUpperCase','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','then','active','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','user','true','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','customField','toString','string','type','idField','toLowerCase','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','endUserId','incident','getString','Subjects','Fields','ticketId','number','label','?sysparm_query=name%3D','Incident','Incident\x20-\x20','ticketNumber','push','all','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','isNil','email','outbound','calleridnum','callDirection','queue','format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','result','length','adminId','sys_id','info'];(function(_0x115f49,_0x4c1a10){var _0x18fe4f=function(_0x43b550){while(--_0x43b550){_0x115f49['push'](_0x115f49['shift']());}};_0x18fe4f(++_0x4c1a10);}(_0x2acc,0x199));var _0xc2ac=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2acc[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc2ac('0x0'));var Promise=require(_0xc2ac('0x1'));var rp=require(_0xc2ac('0x2'));var util=require(_0xc2ac('0x3'));var md5=require(_0xc2ac('0x4'));var Redis=require(_0xc2ac('0x5'));var intUtil=require(_0xc2ac('0x6'));var config=require('../../../../config/environment');var logger=require(_0xc2ac('0x7'))(_0xc2ac('0x8'));config[_0xc2ac('0x9')]=_[_0xc2ac('0xa')](config['redis'],{'host':_0xc2ac('0xb'),'port':0x18eb});var io=require(_0xc2ac('0xc'))(new Redis(config[_0xc2ac('0x9')]));function getAdminUser(_0x4ca5b2,_0xbfd006,_0x3f40a5,_0x53f858,_0x36f8ef,_0x116cae){return new Promise(function(_0x51b3e2,_0x3382a5){var _0x489568={'method':_0xc2ac('0xd'),'uri':_0x53f858+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x36f8ef+'&'+_0x116cae,'auth':_0xbfd006,'json':!![]};return rp(_0x489568)['then'](function(_0x4cd33b){if(_0x4cd33b[_0xc2ac('0xe')][_0xc2ac('0xf')]>0x0){_0x3f40a5[_0xc2ac('0x10')]=_0x4cd33b[_0xc2ac('0xe')][0x0][_0xc2ac('0x11')];}logger[_0xc2ac('0x12')]('['+[_0x4ca5b2['toUpperCase']()]+_0xc2ac('0x13'),_0x3f40a5);_0x51b3e2(_0x3f40a5);})[_0xc2ac('0x14')](function(_0x13725f){logger[_0xc2ac('0x15')]('['+[_0x4ca5b2['toUpperCase']()]+']',_0x13725f[_0xc2ac('0x16')]);_0x3382a5(_0x13725f[_0xc2ac('0x16')]);});});}function getUser(_0x1a1f89,_0x237e4e,_0x3b2fd3,_0xc36ef0,_0x4ea73f){return function(_0x159ee0){logger[_0xc2ac('0x12')]('['+[_0x1a1f89[_0xc2ac('0x17')]()]+_0xc2ac('0x18'),_0x159ee0);return new Promise(function(_0x132786,_0x3e90a1){if(intUtil[_0xc2ac('0x19')](_0x159ee0[_0xc2ac('0x1a')])){var _0x1de070={'method':'GET','uri':_0x3b2fd3+_0xc2ac('0x1b')+_0x159ee0[_0xc2ac('0x1a')]+'&'+_0xc36ef0+'&'+_0x4ea73f,'auth':_0x237e4e,'json':!![]};logger[_0xc2ac('0x12')]('['+[_0x1a1f89[_0xc2ac('0x17')]()]+_0xc2ac('0x1c'),_0x1de070);return rp(_0x1de070)[_0xc2ac('0x1d')](function(_0x22b16b){logger[_0xc2ac('0x12')]('['+[_0x1a1f89[_0xc2ac('0x17')]()]+'],\x20getUser\x20entity',_0x22b16b);if(_0x22b16b[_0xc2ac('0xe')]['length']>0x0&&String(_0x22b16b[_0xc2ac('0xe')][0x0][_0xc2ac('0x1e')])==='true'){_0x159ee0[_0xc2ac('0x1f')]=_0x22b16b['result'][0x0][_0xc2ac('0x11')];}else{_0x159ee0[_0xc2ac('0x1f')]=_0x159ee0[_0xc2ac('0x10')];_0x159ee0[_0xc2ac('0x1a')]=_0x159ee0[_0xc2ac('0x20')];}logger['info']('['+[_0x1a1f89['toUpperCase']()]+_0xc2ac('0x21'),_0x159ee0);_0x132786(_0x159ee0);})[_0xc2ac('0x14')](function(_0x297c11){logger['error']('['+[_0x1a1f89[_0xc2ac('0x17')]()]+']',_0x297c11['message']);_0x3e90a1(_0x297c11[_0xc2ac('0x16')]);});}else{logger[_0xc2ac('0x12')]('['+[_0x1a1f89[_0xc2ac('0x17')]()]+_0xc2ac('0x22'));_0x159ee0[_0xc2ac('0x1f')]=_0x159ee0[_0xc2ac('0x10')];_0x159ee0[_0xc2ac('0x1a')]=_0x159ee0[_0xc2ac('0x20')];_0x132786(_0x159ee0);}});};}function createEndUser(_0x2c649c,_0x6fc1e7,_0x75bd04,_0x3c8d38,_0x21cb46){logger['info']('['+[_0x2c649c['toUpperCase']()]+_0xc2ac('0x23'),_0x75bd04);return new Promise(function(_0x1f6c0c,_0x2aa644){var _0x4f1fd6={'method':_0xc2ac('0x24'),'uri':_0x3c8d38+'sys_user?'+_0x21cb46,'body':{'user_name':_0x75bd04[_0xc2ac('0x25')],'roles':_0xc2ac('0x26'),'first_name':_0x75bd04[_0xc2ac('0x25')],'active':_0xc2ac('0x27'),'date_format':_0xc2ac('0x28'),'phone':_0x75bd04['endUserNumber']},'auth':_0x6fc1e7,'json':!![]};return rp(_0x4f1fd6)['then'](function(_0x38db0f){logger[_0xc2ac('0x12')]('['+[_0x2c649c[_0xc2ac('0x17')]()]+_0xc2ac('0x29'),_0x38db0f[_0xc2ac('0xe')]);_0x75bd04['endUserId']=_0x38db0f[_0xc2ac('0xe')]['sys_id'];_0x1f6c0c(_0x75bd04);})[_0xc2ac('0x14')](function(_0x1912fe){logger[_0xc2ac('0x15')]('['+[_0x2c649c[_0xc2ac('0x17')]()]+']',_0x1912fe['message']);_0x2aa644(_0x1912fe[_0xc2ac('0x16')]);});});}function getEndUser(_0xd33cd3,_0x1885d4,_0x1de163,_0x5e1696,_0x37de61){return function(_0x5e1ed7){logger[_0xc2ac('0x12')]('['+[_0xd33cd3[_0xc2ac('0x17')]()]+_0xc2ac('0x2a'),_0x5e1ed7);return new Promise(function(_0x2f6982,_0x5a3293){var _0x4c4cbe={'method':_0xc2ac('0xd'),'uri':_0x1de163+_0xc2ac('0x2b')+_0x5e1ed7[_0xc2ac('0x25')]+'&'+_0x5e1696+'&'+_0x37de61,'auth':_0x1885d4,'json':!![]};return rp(_0x4c4cbe)['then'](function(_0x534e9c){if(_0x534e9c[_0xc2ac('0xe')][_0xc2ac('0xf')]>0x0){_0x5e1ed7['endUserId']=_0x534e9c[_0xc2ac('0xe')][0x0][_0xc2ac('0x11')];logger[_0xc2ac('0x12')]('['+[_0xd33cd3[_0xc2ac('0x17')]()]+_0xc2ac('0x2c'),_0x5e1ed7);_0x2f6982(_0x5e1ed7);}else{return createEndUser(_0xd33cd3,_0x1885d4,_0x5e1ed7,_0x1de163,_0x5e1696)[_0xc2ac('0x1d')](function(_0x55956f){logger[_0xc2ac('0x12')]('['+[_0xd33cd3[_0xc2ac('0x17')]()]+_0xc2ac('0x2d'),_0x55956f);_0x2f6982(_0x55956f);});}})['catch'](function(_0x344dea){logger[_0xc2ac('0x15')]('['+[_0xd33cd3[_0xc2ac('0x17')]()]+']',_0x344dea[_0xc2ac('0x16')]);_0x5a3293(_0x344dea[_0xc2ac('0x16')]);});});};}function getCustomFields(_0x49c8ed,_0x30f6c0){var _0x35eed3={};if(_0x49c8ed[_0xc2ac('0xf')]>0x0){_[_0xc2ac('0x2e')](_0x49c8ed,function(_0x346172){if(_[_0xc2ac('0x2f')](['string','picklist'],_0x346172['type'])&&_0x346172['nameField']&&!_0x346172[_0xc2ac('0x30')]){_0x35eed3[_0x346172['nameField']['toLowerCase']()]=_0x346172['content'][_0xc2ac('0x31')]();}else if(_['includes']([_0xc2ac('0x32'),'picklist'],_0x346172[_0xc2ac('0x33')])&&_0x346172[_0xc2ac('0x34')]&&_0x346172[_0xc2ac('0x30')]){_0x35eed3[_0x346172[_0xc2ac('0x34')][_0xc2ac('0x35')]()]=_0x346172['content']['toString']();}else if(_0x346172[_0xc2ac('0x33')]===_0xc2ac('0x36')&&_0x346172[_0xc2ac('0x37')]&&_0x346172['idField']&&_0x346172[_0xc2ac('0x30')]){_0x35eed3[_0x346172['idField'][_0xc2ac('0x35')]()]=_0x30f6c0[_0x346172[_0xc2ac('0x37')]][_0xc2ac('0x31')]();}else if(_0x346172[_0xc2ac('0x33')]===_0xc2ac('0x38')&&_0x346172[_0xc2ac('0x39')]&&_0x346172[_0xc2ac('0x39')]['name']&&_0x346172[_0xc2ac('0x34')]&&_0x346172[_0xc2ac('0x30')]){_0x35eed3[_0x346172[_0xc2ac('0x34')][_0xc2ac('0x35')]()]=_0x30f6c0[_0x346172[_0xc2ac('0x39')][_0xc2ac('0x3a')][_0xc2ac('0x35')]()]['toString']();}});}return _0x35eed3;}function getTicket(_0xbc1ad0,_0x1cf3c1,_0x46e127,_0x465748,_0xf6a18a,_0x18e8f4){return function(_0x3a56d8){logger['info']('['+[_0xbc1ad0[_0xc2ac('0x17')]()]+_0xc2ac('0x3b'),_0x3a56d8);return new Promise(function(_0x4a0ce1,_0x2db18c){var _0x13aa35=_0xbc1ad0[_0xc2ac('0x35')]()==='outbound'?_0x3a56d8['userId']:_0x3a56d8[_0xc2ac('0x3c')];var _0x10708f={'method':'POST','uri':_0x46e127+_0xc2ac('0x3d')+'?'+_0x18e8f4,'body':Object['assign']({},{'active':_0xc2ac('0x27'),'caller_id':_0x13aa35,'assigned_to':_0x3a56d8[_0xc2ac('0x1f')],'short_description':intUtil[_0xc2ac('0x3e')](_0x465748[_0xc2ac('0x3f')],_0xf6a18a,'\x20'),'description':intUtil['getString'](_0x465748['Descriptions'],_0xf6a18a,'\x0a')},getCustomFields(_0x465748[_0xc2ac('0x40')],_0xf6a18a)),'auth':_0x1cf3c1,'json':!![]};return rp(_0x10708f)['then'](function(_0x4aa810){logger[_0xc2ac('0x12')]('['+[_0xbc1ad0['toUpperCase']()]+']\x20POST\x20incident\x20entity\x20schema',_0x4aa810['result']);_0x3a56d8[_0xc2ac('0x41')]=_0x4aa810['result']['sys_id'];_0x3a56d8['ticketNumber']=_0x4aa810['result'][_0xc2ac('0x42')];logger[_0xc2ac('0x12')]('['+[_0xbc1ad0[_0xc2ac('0x17')]()]+']\x20getTicket\x20crm',_0x3a56d8);_0x4a0ce1(_0x3a56d8);})['catch'](function(_0x3a7899){logger['error']('['+[_0xbc1ad0[_0xc2ac('0x17')]()]+']',_0x3a7899['message']);_0x2db18c(_0x3a7899[_0xc2ac('0x16')]);});});};}function createRemoteTag(_0x47d9d5,_0x4ad2a2,_0x5ecd62,_0x1d0b48){return new Promise(function(_0x46bced,_0x243a61){var _0x14d223={'method':_0xc2ac('0x24'),'uri':_0x5ecd62+_0xc2ac('0x43')+'?'+_0x1d0b48,'body':{'short_description':_0x47d9d5,'global':!![],'active':!![],'name':_0x47d9d5},'auth':_0x4ad2a2,'json':!![]};return rp(_0x14d223)['then'](function(_0x172c83){var _0x564b2e=_0x172c83[_0xc2ac('0xe')][_0xc2ac('0x11')];_0x46bced(_0x564b2e);});});}function getRemoteTag(_0x589a49,_0x5e1883,_0x2d4c12,_0x35b28a,_0x5c83aa){return new Promise(function(_0x5088ee,_0x2a81ae){var _0x1b2541={'method':_0xc2ac('0xd'),'uri':_0x2d4c12+_0xc2ac('0x43')+_0xc2ac('0x44')+_0x589a49+'&'+_0x35b28a,'auth':_0x5e1883,'json':!![]};return rp(_0x1b2541)[_0xc2ac('0x1d')](function(_0xc9d8be){if(_0xc9d8be[_0xc2ac('0xe')][_0xc2ac('0xf')]>0x0){var _0x106def=_0xc9d8be[_0xc2ac('0xe')][0x0][_0xc2ac('0x11')];_0x5088ee(_0x106def);}else{return createRemoteTag(_0x589a49,_0x5e1883,_0x2d4c12,_0x35b28a)[_0xc2ac('0x1d')](function(_0x2c07f7){_0x5088ee(_0x2c07f7);});}});});}function assignTagToIncident(_0x3199fa,_0x5d062b,_0x5b4551,_0x339c0e,_0x27805b){return new Promise(function(_0x3ed16a,_0xb229a5){var _0x502d1f={'method':_0xc2ac('0x24'),'uri':_0x5b4551+'label_entry'+'?'+_0x27805b,'body':{'label':_0x3199fa,'table':_0xc2ac('0x3d'),'id_type':_0xc2ac('0x45'),'table_key':_0x339c0e['ticketId'],'title':_0xc2ac('0x46')+_0x339c0e[_0xc2ac('0x47')],'id_display':_0x339c0e['ticketNumber']},'auth':_0x5d062b,'json':!![]};return rp(_0x502d1f)['then'](function(_0x29fcfe){_0x3ed16a();})[_0xc2ac('0x14')](function(){_0x3ed16a();});});}function manageTags(_0x50a110,_0x906c1f,_0x5f2957,_0x2e0de1,_0x1bcc06,_0x4ceb17,_0x1da0ae){return new Promise(function(_0x2b01e3,_0xe885a6){var _0xd88f69=[];_0x906c1f[_0xc2ac('0x2e')](function(_0x25ba83){_0xd88f69[_0xc2ac('0x48')](getRemoteTag(_0x25ba83,_0x5f2957,_0x2e0de1,_0x4ceb17,_0x1da0ae));});return Promise['all'](_0xd88f69)[_0xc2ac('0x1d')](function(_0x3b6862){if(_0x3b6862[_0xc2ac('0xf')]){logger[_0xc2ac('0x12')]('['+[_0x50a110[_0xc2ac('0x17')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x3b6862);var _0x3fcb50=[];_0x3b6862[_0xc2ac('0x2e')](function(_0x53ff7b){_0x3fcb50[_0xc2ac('0x48')](assignTagToIncident(_0x53ff7b,_0x5f2957,_0x2e0de1,_0x1bcc06,_0x4ceb17));});return Promise[_0xc2ac('0x49')](_0x3fcb50)[_0xc2ac('0x1d')](function(){_0x2b01e3();})[_0xc2ac('0x14')](function(){_0x2b01e3();});}else{_0x2b01e3();}});});}function getTags(_0x5d5b2d,_0x1e62ec,_0x21affa,_0x1cd7dc,_0x36f319,_0x34ee3e){return function(_0x50329f){return new Promise(function(_0x5b53e6,_0x3e5193){var _0x24b78a=[];var _0x56b777=_0x1cd7dc['Tags'];if(_0x56b777&&_0x56b777[_0xc2ac('0xf')]>0x0){_0x24b78a=_['map'](_0x56b777,_0xc2ac('0x3a'));}if(_0x24b78a['length']>0x0){return manageTags(_0x5d5b2d,_0x24b78a,_0x1e62ec,_0x21affa,_0x50329f,_0x36f319,_0x34ee3e)[_0xc2ac('0x1d')](function(){_0x5b53e6(_0x50329f);});}else{_0x5b53e6(_0x50329f);}});};}function emit(_0xb8c67c,_0xfadb34,_0x33dc87){var _0x591277=_0xc2ac('0x4a')+_0xc2ac('0x4b')+_0xc2ac('0x4c')+_0xc2ac('0x4d');var _0x5be48b={'uri':_0xb8c67c+_0xc2ac('0x4e')+_0x33dc87+_0x591277};io['to'](util['format'](_0xc2ac('0x4f'),_0xfadb34))['emit'](_0xc2ac('0x50'),_0x5be48b);}exports['cs']=function(_0xe6a574,_0x2a8638,_0x7031c4,_0x20860d,_0x7c2800,_0x3ff5e1,_0x481ffc,_0x3c4555){var _0x23ddd2={};var _0x5d9b3e={'user':_0x3ff5e1[_0xc2ac('0x51')],'pass':_0x3ff5e1[_0xc2ac('0x52')]};var _0x5669a0=_0xc2ac('0x53');var _0x5b160b=_0xc2ac('0x54');_0x3ff5e1[_0xc2ac('0x55')]=intUtil[_0xc2ac('0x56')](_0x3ff5e1[_0xc2ac('0x55')]);_0x3ff5e1[_0xc2ac('0x57')]=intUtil[_0xc2ac('0x56')](_0x3ff5e1[_0xc2ac('0x57')]);var _0x595326=util['format']('%s/api/now/table/',_0x3ff5e1['remoteUri']);_0x23ddd2[_0xc2ac('0x1a')]=!_[_0xc2ac('0x58')](_0x20860d)?_0x20860d[_0xc2ac('0x59')]:null;_0x23ddd2[_0xc2ac('0x20')]=_0x3ff5e1[_0xc2ac('0x59')];_0x23ddd2[_0xc2ac('0x25')]=_0x3c4555['toLowerCase']()===_0xc2ac('0x5a')?_0x2a8638['destcalleridnum']:_0x2a8638[_0xc2ac('0x5b')];_0x23ddd2[_0xc2ac('0x5c')]=_0x3c4555===_0xc2ac('0x5d')||_0x3c4555==='unmanaged'?_0xc2ac('0x5d'):'outbound';var _0x20c28d=util[_0xc2ac('0x5e')](_0xc2ac('0x5f'),_0x3ff5e1[_0xc2ac('0x57')],_0x2a8638[_0xc2ac('0x60')],md5(_0x2a8638[_0xc2ac('0x60')]));if(_0x7c2800&&_0x7c2800[_0xc2ac('0x61')]){logger[_0xc2ac('0x12')](_0xc2ac('0x62'),_0xc2ac('0x63'));_0x2a8638[_0xc2ac('0x64')]=_0x20c28d;}else if(_0x481ffc&&_0x481ffc[_0xc2ac('0x65')]&&_0x481ffc[_0xc2ac('0x65')]!=='none'){logger['info'](_0xc2ac('0x66'),_0xc2ac('0x63'));_0x2a8638['recordingURL']=_0x20c28d;}else{_0x2a8638['recordingURL']='';}return getAdminUser(_0x3c4555,_0x5d9b3e,_0x23ddd2,_0x595326,_0x5b160b,_0x5669a0)['then'](getUser(_0x3c4555,_0x5d9b3e,_0x595326,_0x5b160b,_0x5669a0))['then'](getEndUser(_0x3c4555,_0x5d9b3e,_0x595326,_0x5b160b,_0x5669a0))[_0xc2ac('0x1d')](getTicket(_0x3c4555,_0x5d9b3e,_0x595326,_0x7031c4,_0x2a8638,_0x5b160b))[_0xc2ac('0x1d')](function(_0x106b5a){logger[_0xc2ac('0x12')](util[_0xc2ac('0x5e')]('The\x20ticket\x20ID\x20is:\x20%s',_0x106b5a[_0xc2ac('0x41')]));logger[_0xc2ac('0x12')](util[_0xc2ac('0x5e')]('call\x20direction:\x20%s',_0x3c4555));if(_0x3c4555!==_0xc2ac('0x67')){logger[_0xc2ac('0x12')]('['+[_0x3c4555[_0xc2ac('0x17')]()]+']',_0xc2ac('0x68'));emit(_0x3ff5e1[_0xc2ac('0x55')],_0x20860d[_0xc2ac('0x3a')],_0x106b5a[_0xc2ac('0x41')]);}})['catch'](function(_0x3c5860){logger[_0xc2ac('0x15')]('['+[_0x3c4555[_0xc2ac('0x17')]()]+_0xc2ac('0x69'),util[_0xc2ac('0x6a')](_0x3c5860,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index af1fdb8..9b7a887 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6c3=['parent_name','direction','length','variableName','push','idField','set_entry','JSON','stringify','format','Basic\x20%s','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','then','find','entry_list','name_value_list','user_name','value','Agent\x20found!','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','[HTTP]','merge','map','forEach','type','string','nameField','customField','toLowerCase','custom_fields','customVariable','Variable','POST','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','set_relationship','remoteUri','stripTrailingSlash','serverUrl','uri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','The\x20Ticket\x20ID\x20is:','users','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','Outbound','Ticket\x20created!','user:%s','error','unmanaged','lastevent','toUpperCase','contacts','lodash','request-promise','bluebird','md5','../../../../config/environment','sugarcrm','redis','defaults','localhost','socket.io-emitter','emit','info','name','getString','assigned_user_id','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts'];(function(_0x1d174c,_0xd71a94){var _0x193cbf=function(_0x140302){while(--_0x140302){_0x1d174c['push'](_0x1d174c['shift']());}};_0x193cbf(++_0xd71a94);}(_0xd6c3,0xd0));var _0x3d6c=function(_0x345c3d,_0x2f712a){_0x345c3d=_0x345c3d-0x0;var _0x355ca4=_0xd6c3[_0x345c3d];return _0x355ca4;};'use strict';var _=require(_0x3d6c('0x0'));var rp=require(_0x3d6c('0x1'));var BPromise=require(_0x3d6c('0x2'));var md5=require(_0x3d6c('0x3'));var util=require('util');var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x3d6c('0x4'));var logger=require('../../../../config/logger')(_0x3d6c('0x5'));config[_0x3d6c('0x6')]=_[_0x3d6c('0x7')](config[_0x3d6c('0x6')],{'host':_0x3d6c('0x8'),'port':0x18eb});var io=require(_0x3d6c('0x9'))(new Redis(config[_0x3d6c('0x6')]));var def={'method':'POST','json':!![]};function emit(_0x4e2af5,_0x524385,_0x2dd71f){io['to'](_0x4e2af5)[_0x3d6c('0xa')](_0x524385,_0x2dd71f);}function getTicket(_0x1c5156,_0x2cdeb0,_0x389361,_0x3ab014,_0x233e7d,_0x2cac59,_0x4b8a5f,_0x17b5e2){logger[_0x3d6c('0xb')]('Creating\x20new\x20ticket...');var _0x3f7a0d=new Date();var _0x307eb0=[{'name':_0x3d6c('0xc'),'value':intUtil[_0x3d6c('0xd')](_0x3ab014['Subjects'],_0x233e7d,'\x20')},{'name':_0x3d6c('0xe'),'value':_0x2cdeb0['id']},{'name':'created_by','value':_0x2cdeb0['id']},{'name':_0x3d6c('0xf'),'value':intUtil[_0x3d6c('0xd')](_0x3ab014[_0x3d6c('0x10')],_0x233e7d,'\x0a')},{'name':_0x3d6c('0x11'),'value':_0x3f7a0d[_0x3d6c('0x12')]()[_0x3d6c('0x13')](0x0,0x13)[_0x3d6c('0x14')]('T','\x20')},{'name':_0x3d6c('0x15'),'value':'0'},{'name':_0x3d6c('0x16'),'value':'15'},{'name':_0x3d6c('0x17'),'value':_0x389361['id']},{'name':_0x3d6c('0x18'),'value':_0x3d6c('0x19')},{'name':_0x3d6c('0x1a'),'value':_0x389361['name']},{'name':_0x3d6c('0x1b'),'value':_0x17b5e2}];if(_0x2cac59[_0x3d6c('0x1c')]){_['forEach'](_0x2cac59,function(_0x3cbcb0){if(_0x233e7d[_0x3cbcb0[_0x3d6c('0x1d')]]){_0x307eb0[_0x3d6c('0x1e')]({'name':_0x3cbcb0[_0x3d6c('0x1f')],'value':_0x233e7d[_0x3cbcb0[_0x3d6c('0x1d')]]});}});}return request({'form':{'method':_0x3d6c('0x20'),'input_type':_0x3d6c('0x21'),'response_type':'JSON','rest_data':JSON[_0x3d6c('0x22')]({'session':_0x4b8a5f['id'],'module_name':'Calls','name_value_list':_0x307eb0})}});}function getAuth(_0x1bbf84){return util[_0x3d6c('0x23')](_0x3d6c('0x24'),new Buffer(_0x1bbf84['apiKey']+':X')[_0x3d6c('0x25')](_0x3d6c('0x26')));}function getServerInfo(_0x192bfa){return request({'form':{'method':_0x3d6c('0x27'),'input_type':_0x3d6c('0x21'),'response_type':_0x3d6c('0x21'),'rest_data':JSON[_0x3d6c('0x22')]({'session':_0x192bfa['id']})}});}function getUser(_0x7a742e,_0x51a629,_0x32bee7){if(!_[_0x3d6c('0x28')](_0x51a629)){logger['info'](_0x3d6c('0x29'),_0x51a629);return request({'form':{'method':'get_entry_list','input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x3d6c('0x22')]({'session':_0x32bee7['id'],'module_name':_0x3d6c('0x2a'),'query':util[_0x3d6c('0x23')](_0x3d6c('0x2b'),_0x51a629),'order_by':'','offset':'0','select_fields':['id',_0x3d6c('0xc'),'user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x3d6c('0x2c')](function(_0x587bcd){if(_0x587bcd['entry_list']['length']){var _0xe881ef=_[_0x3d6c('0x2d')](_0x587bcd[_0x3d6c('0x2e')],function(_0x3dd685){return _0x3dd685[_0x3d6c('0x2f')][_0x3d6c('0x30')][_0x3d6c('0x31')]===_0x51a629;});if(_0xe881ef){logger['info'](_0x3d6c('0x32'));return BPromise[_0x3d6c('0x33')]({'id':_0xe881ef[_0x3d6c('0x2f')]['id']['value'],'name':_0xe881ef[_0x3d6c('0x2f')][_0x3d6c('0xc')][_0x3d6c('0x31')]});}}logger[_0x3d6c('0xb')](_0x3d6c('0x34'));return BPromise[_0x3d6c('0x33')]({'id':_0x32bee7[_0x3d6c('0x2f')][_0x3d6c('0x35')]['value'],'name':_0x32bee7['name_value_list'][_0x3d6c('0x30')][_0x3d6c('0x31')]});});}else{logger[_0x3d6c('0xb')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0x3d6c('0x33')]({'id':_0x32bee7[_0x3d6c('0x2f')][_0x3d6c('0x35')][_0x3d6c('0x31')],'name':_0x32bee7[_0x3d6c('0x2f')][_0x3d6c('0x30')][_0x3d6c('0x31')]});}}function getEndUser(_0x2dd199,_0x733e13,_0x43978b,_0x5f500d){logger['info'](_0x3d6c('0x36'),_0x43978b);return request({'form':{'method':'get_entry_list','input_type':_0x3d6c('0x21'),'response_type':_0x3d6c('0x21'),'rest_data':JSON[_0x3d6c('0x22')]({'session':_0x5f500d['id'],'module_name':_0x3d6c('0x19'),'query':util[_0x3d6c('0x23')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x43978b),'order_by':'','offset':'0','select_fields':['id',_0x3d6c('0xc'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x3d6c('0x2c')](function(_0x5c3063){if(_0x5c3063[_0x3d6c('0x2e')][_0x3d6c('0x1c')]){var _0x16f97d=_[_0x3d6c('0x2d')](_0x5c3063[_0x3d6c('0x2e')],function(_0x2c900e){return _0x2c900e[_0x3d6c('0x2f')]['phone_home']['value']===_0x43978b;});if(_0x16f97d){logger[_0x3d6c('0xb')](_0x3d6c('0x37'));return BPromise['resolve']({'id':_0x16f97d[_0x3d6c('0x2f')]['id'][_0x3d6c('0x31')],'name':_0x16f97d['name_value_list']['name'][_0x3d6c('0x31')],'phone':_0x16f97d[_0x3d6c('0x2f')][_0x3d6c('0x38')][_0x3d6c('0x31')]});}}else{logger[_0x3d6c('0xb')](_0x3d6c('0x39'));return request({'form':{'method':_0x3d6c('0x20'),'input_type':_0x3d6c('0x21'),'response_type':_0x3d6c('0x21'),'rest_data':JSON[_0x3d6c('0x22')]({'session':_0x5f500d['id'],'module_name':_0x3d6c('0x19'),'name_value_list':[{'name':'first_name','value':_0x733e13!==_0x3d6c('0x3a')?_0x733e13:util[_0x3d6c('0x23')](_0x3d6c('0x3b'),_0x43978b)},{'name':_0x3d6c('0x38'),'value':_0x43978b}]})}})[_0x3d6c('0x2c')](function(_0x64297c){logger['info']('Enduser\x20created.');return BPromise[_0x3d6c('0x33')]({'id':_0x64297c['id'],'name':_0x64297c[_0x3d6c('0x2e')]['first_name']['value'],'phone':_0x64297c[_0x3d6c('0x2e')]['phone_home'][_0x3d6c('0x31')]});});}});}function request(_0x15d1c1){logger['debug'](_0x3d6c('0x3c'),JSON[_0x3d6c('0x22')](_0x15d1c1));return rp(_[_0x3d6c('0x3d')](def,_0x15d1c1));}function getTags(_0x6e38f1,_0x6db7eb){var _0x3f4806=[];if(_0x6e38f1&&_0x6e38f1[_0x3d6c('0x1c')]>0x0){_0x3f4806=_[_0x3d6c('0x3e')](_0x6e38f1,_0x6db7eb);}return _0x3f4806;}function getCustomFields(_0x31e29c,_0x367e26){var _0x4b818a=[];var _0x2ac0e3={'custom_fields':[]};if(_0x31e29c[_0x3d6c('0x1c')]>0x0){_[_0x3d6c('0x3f')](_0x31e29c,function(_0x3e4f98){if(_0x3e4f98[_0x3d6c('0x40')]===_0x3d6c('0x41')&&_0x3e4f98[_0x3d6c('0x42')]&&!_0x3e4f98[_0x3d6c('0x43')]){_0x2ac0e3[_0x3e4f98[_0x3d6c('0x42')][_0x3d6c('0x44')]()]=_0x3e4f98['content'][_0x3d6c('0x25')]();}else if(_0x3e4f98[_0x3d6c('0x40')]==='string'&&_0x3e4f98[_0x3d6c('0x1f')]&&_0x3e4f98[_0x3d6c('0x43')]){_0x2ac0e3[_0x3d6c('0x45')][_0x3d6c('0x1e')]({'id':_0x3e4f98['idField'],'value':_0x3e4f98['content'][_0x3d6c('0x25')]()});}else if(_0x3e4f98[_0x3d6c('0x40')]==='variable'&&_0x3e4f98[_0x3d6c('0x1d')]&&_0x3e4f98[_0x3d6c('0x1f')]&&_0x3e4f98[_0x3d6c('0x43')]){_0x367e26[_0x3e4f98['variableName']]&&_0x2ac0e3[_0x3d6c('0x45')][_0x3d6c('0x1e')]({'id':_0x3e4f98[_0x3d6c('0x1f')],'value':_0x367e26[_0x3e4f98[_0x3d6c('0x1d')]]['toString']()});}else if(_0x3e4f98['type']===_0x3d6c('0x46')&&_0x3e4f98[_0x3d6c('0x47')]&&_0x3e4f98[_0x3d6c('0x47')]['name']&&_0x3e4f98['idField']&&_0x3e4f98[_0x3d6c('0x43')]){_0x367e26[_0x3e4f98[_0x3d6c('0x47')][_0x3d6c('0xc')][_0x3d6c('0x44')]()]&&_0x2ac0e3['custom_fields'][_0x3d6c('0x1e')]({'id':_0x3e4f98[_0x3d6c('0x1f')],'value':_0x367e26[_0x3e4f98['Variable'][_0x3d6c('0xc')]['toLowerCase']()][_0x3d6c('0x25')]()});}});}return _0x2ac0e3;}function getConnection(_0x2b1b31){return request({'method':_0x3d6c('0x48'),'form':{'method':'login','input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x3d6c('0x22')]({'user_auth':{'user_name':_0x2b1b31[_0x3d6c('0x49')],'password':_0x2b1b31[_0x3d6c('0x4a')],'encryption':_0x3d6c('0x4b')},'application':_0x3d6c('0x4c')})}})['then'](function(_0x145509){var _0x25120a=_0x145509;if(_0x25120a['id']){def[_0x3d6c('0x4d')]=_0x25120a['id'];return BPromise[_0x3d6c('0x33')](_0x25120a);}else{throw new Error(util[_0x3d6c('0x23')]('Account\x20%d\x20is\x20not\x20valid',_0x2b1b31['id']));}});}function setRelationship(_0x214f84,_0x1fc67d,_0x296ca7,_0x2874b0){return request({'form':{'method':_0x3d6c('0x4e'),'input_type':'JSON','response_type':_0x3d6c('0x21'),'rest_data':JSON['stringify']({'session':_0x214f84['id'],'module_name':'Calls','module_id':_0x296ca7['id'],'link_field_name':_0x2874b0,'related_ids':[_0x1fc67d['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x4a1f27,_0x3e58c2,_0x50733a,_0x721d78,_0x4cedbf,_0x4c9193){var _0x5daf67,_0x22589f,_0x1230fb,_0xb7febf;_0x4c9193[_0x3d6c('0x4f')]=intUtil[_0x3d6c('0x50')](_0x4c9193[_0x3d6c('0x4f')]);_0x4c9193[_0x3d6c('0x51')]=intUtil[_0x3d6c('0x50')](_0x4c9193[_0x3d6c('0x51')]);def[_0x3d6c('0x52')]=util['format']('%s/service/v4_1/rest.php',_0x4c9193[_0x3d6c('0x4f')]);if(_0x4cedbf&&_0x4cedbf[_0x3d6c('0x53')]){logger[_0x3d6c('0xb')](_0x3d6c('0x54'),_0x3d6c('0x55'));_0x3e58c2[_0x3d6c('0x56')]=util[_0x3d6c('0x23')](_0x3d6c('0x57'),_0x4c9193[_0x3d6c('0x51')],_0x3e58c2[_0x3d6c('0x58')],md5(_0x3e58c2[_0x3d6c('0x58')]));}else{_0x3e58c2[_0x3d6c('0x56')]='';}return getConnection(_0x4c9193)[_0x3d6c('0x2c')](function(_0x6b58c0){_0xb7febf=_0x6b58c0;return getUser(_0x4c9193,_0x721d78[_0x3d6c('0xc')],_0xb7febf);})[_0x3d6c('0x2c')](function(_0x5e4bc5){_0x5daf67=_0x5e4bc5;logger[_0x3d6c('0xb')](_0x3d6c('0x59'),_0x5daf67['id']);return getEndUser(_0x4c9193,_0x3e58c2[_0x3d6c('0x5a')],_0x3e58c2[_0x3d6c('0x5b')],_0xb7febf);})[_0x3d6c('0x2c')](function(_0x10323f){_0x22589f=_0x10323f;logger['info'](_0x3d6c('0x5c'),_0x22589f['id']);return getTicket(_0x4c9193,_0x5daf67,_0x22589f,_0x50733a,_0x3e58c2,_0x50733a[_0x3d6c('0x5d')],_0xb7febf,_0x3d6c('0x5e'));})[_0x3d6c('0x2c')](function(_0x19cd62){_0x1230fb=_0x19cd62;logger[_0x3d6c('0xb')]('Ticket\x20created!');logger[_0x3d6c('0xb')](_0x3d6c('0x5f'),_0x1230fb['id']);return setRelationship(_0xb7febf,_0x5daf67,_0x1230fb,_0x3d6c('0x60'));})[_0x3d6c('0x2c')](function(){return setRelationship(_0xb7febf,_0x22589f,_0x1230fb,'contacts');})[_0x3d6c('0x2c')](function(){return getServerInfo(_0xb7febf);})[_0x3d6c('0x2c')](function(_0x4ebc62){var _0x1f00a7=parseInt(_0x4ebc62[_0x3d6c('0x61')][_0x3d6c('0x62')](0x0));var _0x9fcfd2=util[_0x3d6c('0x23')](_0x3d6c('0x63'),_0x4c9193['remoteUri'],_0x1230fb['id']);if(_0x1f00a7>0x6){_0x9fcfd2=util[_0x3d6c('0x23')](_0x3d6c('0x64'),_0x4c9193[_0x3d6c('0x4f')],_0x1230fb['id']);}logger[_0x3d6c('0xb')]('[QUEUE]',_0x3d6c('0x65'));emit(util[_0x3d6c('0x23')]('user:%s',_0x721d78[_0x3d6c('0xc')]),_0x3d6c('0x66'),{'uri':_0x9fcfd2});})[_0x3d6c('0x67')](function(_0x463458){logger['error'](_0x3d6c('0x54'),JSON[_0x3d6c('0x22')](_0x463458));});};exports['outbound']=function(_0x1ce10d,_0x310a62,_0x110444,_0x3593da,_0xae78a1,_0x2a9dde,_0x17d54b){var _0x5296d4,_0x490b5d,_0x5e85d0,_0x49e51;_0x2a9dde[_0x3d6c('0x4f')]=intUtil[_0x3d6c('0x50')](_0x2a9dde['remoteUri']);_0x2a9dde[_0x3d6c('0x51')]=intUtil[_0x3d6c('0x50')](_0x2a9dde[_0x3d6c('0x51')]);def[_0x3d6c('0x52')]=util[_0x3d6c('0x23')]('%s/service/v4_1/rest.php',_0x2a9dde[_0x3d6c('0x4f')]);if(_0x17d54b&&_0x17d54b[_0x3d6c('0x68')]&&_0x17d54b[_0x3d6c('0x68')]!==_0x3d6c('0x69')){logger[_0x3d6c('0xb')](_0x3d6c('0x6a'),_0x3d6c('0x55'));_0x310a62[_0x3d6c('0x56')]=util[_0x3d6c('0x23')](_0x3d6c('0x57'),_0x2a9dde[_0x3d6c('0x51')],_0x310a62['uniqueid'],md5(_0x310a62['uniqueid']));}return getConnection(_0x2a9dde)[_0x3d6c('0x2c')](function(_0x46bd4c){_0x49e51=_0x46bd4c;return getUser(_0x2a9dde,_0x3593da[_0x3d6c('0xc')],_0x49e51);})[_0x3d6c('0x2c')](function(_0x2b5e9e){_0x5296d4=_0x2b5e9e;logger[_0x3d6c('0xb')](_0x3d6c('0x59'),_0x5296d4['id']);return getEndUser(_0x2a9dde,_0x310a62[_0x3d6c('0x6b')],_0x310a62[_0x3d6c('0x6c')],_0x49e51);})[_0x3d6c('0x2c')](function(_0x4769f4){_0x490b5d=_0x4769f4;logger['info'](_0x3d6c('0x5c'),_0x490b5d['id']);return getTicket(_0x2a9dde,_0x5296d4,_0x490b5d,_0x110444,_0x310a62,_0x110444[_0x3d6c('0x5d')],_0x49e51,_0x3d6c('0x6d'));})[_0x3d6c('0x2c')](function(_0x5a94e8){_0x5e85d0=_0x5a94e8;logger[_0x3d6c('0xb')](_0x3d6c('0x6e'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x5e85d0['id']);return setRelationship(_0x49e51,_0x5296d4,_0x5e85d0,_0x3d6c('0x60'));})[_0x3d6c('0x2c')](function(){return setRelationship(_0x49e51,_0x490b5d,_0x5e85d0,'contacts');})[_0x3d6c('0x2c')](function(){return getServerInfo(_0x49e51);})[_0x3d6c('0x2c')](function(_0x41cecc){var _0x5b4fd8=parseInt(_0x41cecc[_0x3d6c('0x61')][_0x3d6c('0x62')](0x0));var _0x505785=util[_0x3d6c('0x23')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x2a9dde[_0x3d6c('0x4f')],_0x5e85d0['id']);if(_0x5b4fd8>0x6){_0x505785=util['format'](_0x3d6c('0x64'),_0x2a9dde[_0x3d6c('0x4f')],_0x5e85d0['id']);}logger[_0x3d6c('0xb')](_0x3d6c('0x6a'),_0x3d6c('0x65'));emit(util[_0x3d6c('0x23')](_0x3d6c('0x6f'),_0x3593da[_0x3d6c('0xc')]),_0x3d6c('0x66'),{'uri':_0x505785});})['catch'](function(_0x48443f){logger[_0x3d6c('0x70')]('[OUTBOUND]',JSON[_0x3d6c('0x22')](_0x48443f));});};exports[_0x3d6c('0x71')]=function(_0x39ee2d,_0x98db50,_0x42d0ad,_0x34fbd2,_0x1c18e3,_0x54a98d){var _0x26617e,_0x176a46,_0x91c1f3,_0x36d01f;_0x54a98d[_0x3d6c('0x4f')]=intUtil['stripTrailingSlash'](_0x54a98d[_0x3d6c('0x4f')]);_0x54a98d[_0x3d6c('0x51')]=intUtil['stripTrailingSlash'](_0x54a98d['serverUrl']);def[_0x3d6c('0x52')]=util['format']('%s/service/v4_1/rest.php',_0x54a98d[_0x3d6c('0x4f')]);if(_0x1c18e3&&_0x1c18e3[_0x3d6c('0x53')]){logger[_0x3d6c('0xb')]('['+_0x98db50[_0x3d6c('0x72')][_0x3d6c('0x73')]()+']','Recording\x20is\x20enabled!');_0x98db50['recordingURL']=util[_0x3d6c('0x23')](_0x3d6c('0x57'),_0x54a98d['serverUrl'],_0x98db50[_0x3d6c('0x58')],md5(_0x98db50['uniqueid']));}else{_0x98db50[_0x3d6c('0x56')]='';}return getConnection(_0x54a98d)[_0x3d6c('0x2c')](function(_0xbdeec4){_0x36d01f=_0xbdeec4;if(!_[_0x3d6c('0x28')](_0x34fbd2)){return getUser(_0x54a98d,_0x34fbd2[_0x3d6c('0xc')],_0x36d01f);}else{return getUser(_0x54a98d,null,_0x36d01f);}})[_0x3d6c('0x2c')](function(_0x4d5a3c){_0x26617e=_0x4d5a3c;logger[_0x3d6c('0xb')](_0x3d6c('0x59'),_0x26617e['id']);return getEndUser(_0x54a98d,_0x98db50[_0x3d6c('0x5a')],_0x98db50[_0x3d6c('0x5b')],_0x36d01f);})[_0x3d6c('0x2c')](function(_0x344c9f){_0x176a46=_0x344c9f;logger[_0x3d6c('0xb')](_0x3d6c('0x5c'),_0x176a46['id']);return getTicket(_0x54a98d,_0x26617e,_0x176a46,_0x42d0ad,_0x98db50,_0x42d0ad[_0x3d6c('0x5d')],_0x36d01f,'Inbound');})[_0x3d6c('0x2c')](function(_0x18abac){_0x91c1f3=_0x18abac;logger[_0x3d6c('0xb')]('Ticket\x20created!');logger[_0x3d6c('0xb')](_0x3d6c('0x5f'),_0x91c1f3['id']);return setRelationship(_0x36d01f,_0x26617e,_0x91c1f3,'users');})[_0x3d6c('0x2c')](function(){return setRelationship(_0x36d01f,_0x176a46,_0x91c1f3,_0x3d6c('0x74'));})[_0x3d6c('0x2c')](function(){return getServerInfo(_0x36d01f);})[_0x3d6c('0x67')](function(_0x1127a2){logger[_0x3d6c('0x70')]('['+_0x98db50['lastevent'][_0x3d6c('0x73')]()+']',JSON[_0x3d6c('0x22')](_0x1127a2));});};
\ No newline at end of file
+var _0x3dc3=['Fields','Outbound','catch','toUpperCase','calleridnum','lastevent','lodash','request-promise','bluebird','util','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','Descriptions','date_start','toISOString','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','forEach','variableName','push','idField','set_entry','JSON','stringify','Calls','format','apiKey','toString','get_server_info','isNil','info','get_entry_list','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','length','find','name_value_list','value','Agent\x20found!','resolve','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','type','string','nameField','toLowerCase','content','variable','customField','custom_fields','customVariable','Variable','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','set_relationship','queue','remoteUri','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','The\x20Enduser\x20ID\x20is:','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','error','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum'];(function(_0x4f35f4,_0x51a8c3){var _0x2e9a70=function(_0x110aca){while(--_0x110aca){_0x4f35f4['push'](_0x4f35f4['shift']());}};_0x2e9a70(++_0x51a8c3);}(_0x3dc3,0x17a));var _0x33dc=function(_0x24935e,_0x59d47a){_0x24935e=_0x24935e-0x0;var _0x525d4b=_0x3dc3[_0x24935e];return _0x525d4b;};'use strict';var _=require(_0x33dc('0x0'));var rp=require(_0x33dc('0x1'));var BPromise=require(_0x33dc('0x2'));var md5=require('md5');var util=require(_0x33dc('0x3'));var Redis=require('ioredis');var intUtil=require(_0x33dc('0x4'));var config=require(_0x33dc('0x5'));var logger=require(_0x33dc('0x6'))(_0x33dc('0x7'));config[_0x33dc('0x8')]=_[_0x33dc('0x9')](config[_0x33dc('0x8')],{'host':_0x33dc('0xa'),'port':0x18eb});var io=require(_0x33dc('0xb'))(new Redis(config[_0x33dc('0x8')]));var def={'method':_0x33dc('0xc'),'json':!![]};function emit(_0x434ff5,_0x24aa48,_0x2c53a0){io['to'](_0x434ff5)['emit'](_0x24aa48,_0x2c53a0);}function getTicket(_0x808988,_0x5efc2d,_0x2bdba9,_0x2122dd,_0x4c2bba,_0x1e1d4f,_0x3ae9e1,_0x3321c4){logger['info'](_0x33dc('0xd'));var _0xf2ce6e=new Date();var _0x1b192f=[{'name':_0x33dc('0xe'),'value':intUtil[_0x33dc('0xf')](_0x2122dd[_0x33dc('0x10')],_0x4c2bba,'\x20')},{'name':_0x33dc('0x11'),'value':_0x5efc2d['id']},{'name':_0x33dc('0x12'),'value':_0x5efc2d['id']},{'name':'description','value':intUtil[_0x33dc('0xf')](_0x2122dd[_0x33dc('0x13')],_0x4c2bba,'\x0a')},{'name':_0x33dc('0x14'),'value':_0xf2ce6e[_0x33dc('0x15')]()['slice'](0x0,0x13)[_0x33dc('0x16')]('T','\x20')},{'name':_0x33dc('0x17'),'value':'0'},{'name':_0x33dc('0x18'),'value':'15'},{'name':_0x33dc('0x19'),'value':_0x2bdba9['id']},{'name':_0x33dc('0x1a'),'value':_0x33dc('0x1b')},{'name':_0x33dc('0x1c'),'value':_0x2bdba9[_0x33dc('0xe')]},{'name':_0x33dc('0x1d'),'value':_0x3321c4}];if(_0x1e1d4f['length']){_[_0x33dc('0x1e')](_0x1e1d4f,function(_0x2cc509){if(_0x4c2bba[_0x2cc509[_0x33dc('0x1f')]]){_0x1b192f[_0x33dc('0x20')]({'name':_0x2cc509[_0x33dc('0x21')],'value':_0x4c2bba[_0x2cc509[_0x33dc('0x1f')]]});}});}return request({'form':{'method':_0x33dc('0x22'),'input_type':_0x33dc('0x23'),'response_type':_0x33dc('0x23'),'rest_data':JSON[_0x33dc('0x24')]({'session':_0x3ae9e1['id'],'module_name':_0x33dc('0x25'),'name_value_list':_0x1b192f})}});}function getAuth(_0x591c36){return util[_0x33dc('0x26')]('Basic\x20%s',new Buffer(_0x591c36[_0x33dc('0x27')]+':X')[_0x33dc('0x28')]('base64'));}function getServerInfo(_0xbcdf39){return request({'form':{'method':_0x33dc('0x29'),'input_type':_0x33dc('0x23'),'response_type':_0x33dc('0x23'),'rest_data':JSON[_0x33dc('0x24')]({'session':_0xbcdf39['id']})}});}function getUser(_0x49e316,_0x22041a,_0x23c882){if(!_[_0x33dc('0x2a')](_0x22041a)){logger[_0x33dc('0x2b')]('Getting\x20agent\x20with\x20name',_0x22041a);return request({'form':{'method':_0x33dc('0x2c'),'input_type':_0x33dc('0x23'),'response_type':_0x33dc('0x23'),'rest_data':JSON[_0x33dc('0x24')]({'session':_0x23c882['id'],'module_name':'Employees','query':util[_0x33dc('0x26')](_0x33dc('0x2d'),_0x22041a),'order_by':'','offset':'0','select_fields':['id',_0x33dc('0xe'),_0x33dc('0x2e')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x33dc('0x2f')](function(_0x5a2785){if(_0x5a2785[_0x33dc('0x30')][_0x33dc('0x31')]){var _0x1c30e1=_[_0x33dc('0x32')](_0x5a2785[_0x33dc('0x30')],function(_0xc37f94){return _0xc37f94[_0x33dc('0x33')][_0x33dc('0x2e')][_0x33dc('0x34')]===_0x22041a;});if(_0x1c30e1){logger['info'](_0x33dc('0x35'));return BPromise[_0x33dc('0x36')]({'id':_0x1c30e1[_0x33dc('0x33')]['id'][_0x33dc('0x34')],'name':_0x1c30e1[_0x33dc('0x33')]['name'][_0x33dc('0x34')]});}}logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x33dc('0x36')]({'id':_0x23c882[_0x33dc('0x33')]['user_id'][_0x33dc('0x34')],'name':_0x23c882[_0x33dc('0x33')][_0x33dc('0x2e')][_0x33dc('0x34')]});});}else{logger['info'](_0x33dc('0x37'));return BPromise[_0x33dc('0x36')]({'id':_0x23c882['name_value_list'][_0x33dc('0x38')][_0x33dc('0x34')],'name':_0x23c882['name_value_list'][_0x33dc('0x2e')][_0x33dc('0x34')]});}}function getEndUser(_0x3b47e2,_0x17440e,_0x5daefc,_0x3cb714){logger[_0x33dc('0x2b')](_0x33dc('0x39'),_0x5daefc);return request({'form':{'method':_0x33dc('0x2c'),'input_type':_0x33dc('0x23'),'response_type':'JSON','rest_data':JSON[_0x33dc('0x24')]({'session':_0x3cb714['id'],'module_name':_0x33dc('0x1b'),'query':util[_0x33dc('0x26')](_0x33dc('0x3a'),_0x5daefc),'order_by':'','offset':'0','select_fields':['id',_0x33dc('0xe'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x33dc('0x2f')](function(_0x3ba802){if(_0x3ba802[_0x33dc('0x30')][_0x33dc('0x31')]){var _0x1ed238=_[_0x33dc('0x32')](_0x3ba802[_0x33dc('0x30')],function(_0x571862){return _0x571862[_0x33dc('0x33')][_0x33dc('0x3b')][_0x33dc('0x34')]===_0x5daefc;});if(_0x1ed238){logger[_0x33dc('0x2b')](_0x33dc('0x3c'));return BPromise[_0x33dc('0x36')]({'id':_0x1ed238[_0x33dc('0x33')]['id'][_0x33dc('0x34')],'name':_0x1ed238['name_value_list'][_0x33dc('0xe')]['value'],'phone':_0x1ed238[_0x33dc('0x33')]['phone_home']['value']});}}else{logger[_0x33dc('0x2b')](_0x33dc('0x3d'));return request({'form':{'method':_0x33dc('0x22'),'input_type':_0x33dc('0x23'),'response_type':_0x33dc('0x23'),'rest_data':JSON[_0x33dc('0x24')]({'session':_0x3cb714['id'],'module_name':_0x33dc('0x1b'),'name_value_list':[{'name':'first_name','value':_0x17440e!==_0x33dc('0x3e')?_0x17440e:util[_0x33dc('0x26')](_0x33dc('0x3f'),_0x5daefc)},{'name':_0x33dc('0x3b'),'value':_0x5daefc}]})}})[_0x33dc('0x2f')](function(_0x49d841){logger['info'](_0x33dc('0x40'));return BPromise['resolve']({'id':_0x49d841['id'],'name':_0x49d841['entry_list']['first_name'][_0x33dc('0x34')],'phone':_0x49d841[_0x33dc('0x30')][_0x33dc('0x3b')][_0x33dc('0x34')]});});}});}function request(_0x2858e4){logger[_0x33dc('0x41')](_0x33dc('0x42'),JSON[_0x33dc('0x24')](_0x2858e4));return rp(_[_0x33dc('0x43')](def,_0x2858e4));}function getTags(_0x3092d4,_0x471c2f){var _0x146a5b=[];if(_0x3092d4&&_0x3092d4[_0x33dc('0x31')]>0x0){_0x146a5b=_[_0x33dc('0x44')](_0x3092d4,_0x471c2f);}return _0x146a5b;}function getCustomFields(_0x307efa,_0x15da99){var _0x4bb70b=[];var _0x23e218={'custom_fields':[]};if(_0x307efa[_0x33dc('0x31')]>0x0){_[_0x33dc('0x1e')](_0x307efa,function(_0x543f1f){if(_0x543f1f[_0x33dc('0x45')]===_0x33dc('0x46')&&_0x543f1f['nameField']&&!_0x543f1f['customField']){_0x23e218[_0x543f1f[_0x33dc('0x47')][_0x33dc('0x48')]()]=_0x543f1f[_0x33dc('0x49')][_0x33dc('0x28')]();}else if(_0x543f1f[_0x33dc('0x45')]===_0x33dc('0x46')&&_0x543f1f[_0x33dc('0x21')]&&_0x543f1f['customField']){_0x23e218['custom_fields'][_0x33dc('0x20')]({'id':_0x543f1f[_0x33dc('0x21')],'value':_0x543f1f[_0x33dc('0x49')][_0x33dc('0x28')]()});}else if(_0x543f1f[_0x33dc('0x45')]===_0x33dc('0x4a')&&_0x543f1f[_0x33dc('0x1f')]&&_0x543f1f[_0x33dc('0x21')]&&_0x543f1f[_0x33dc('0x4b')]){_0x15da99[_0x543f1f[_0x33dc('0x1f')]]&&_0x23e218[_0x33dc('0x4c')][_0x33dc('0x20')]({'id':_0x543f1f['idField'],'value':_0x15da99[_0x543f1f['variableName']][_0x33dc('0x28')]()});}else if(_0x543f1f[_0x33dc('0x45')]===_0x33dc('0x4d')&&_0x543f1f[_0x33dc('0x4e')]&&_0x543f1f[_0x33dc('0x4e')][_0x33dc('0xe')]&&_0x543f1f['idField']&&_0x543f1f['customField']){_0x15da99[_0x543f1f[_0x33dc('0x4e')]['name'][_0x33dc('0x48')]()]&&_0x23e218[_0x33dc('0x4c')][_0x33dc('0x20')]({'id':_0x543f1f[_0x33dc('0x21')],'value':_0x15da99[_0x543f1f[_0x33dc('0x4e')][_0x33dc('0xe')]['toLowerCase']()][_0x33dc('0x28')]()});}});}return _0x23e218;}function getConnection(_0x2fe23f){return request({'method':_0x33dc('0xc'),'form':{'method':'login','input_type':_0x33dc('0x23'),'response_type':'JSON','rest_data':JSON[_0x33dc('0x24')]({'user_auth':{'user_name':_0x2fe23f['username'],'password':_0x2fe23f[_0x33dc('0x4f')],'encryption':_0x33dc('0x50')},'application':_0x33dc('0x51')})}})[_0x33dc('0x2f')](function(_0x53d0ba){var _0x16b0ff=_0x53d0ba;if(_0x16b0ff['id']){def[_0x33dc('0x52')]=_0x16b0ff['id'];return BPromise[_0x33dc('0x36')](_0x16b0ff);}else{throw new Error(util['format']('Account\x20%d\x20is\x20not\x20valid',_0x2fe23f['id']));}});}function setRelationship(_0x8d9a9c,_0xb1a6fc,_0x3e668e,_0x5311bc){return request({'form':{'method':_0x33dc('0x53'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x33dc('0x24')]({'session':_0x8d9a9c['id'],'module_name':_0x33dc('0x25'),'module_id':_0x3e668e['id'],'link_field_name':_0x5311bc,'related_ids':[_0xb1a6fc['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x33dc('0x54')]=function(_0x2c738a,_0x27bf15,_0x2055d9,_0x572cce,_0x1f1ef0,_0x237451){var _0x49f0a3,_0x18137,_0x28ed5a,_0x1ebb3e;_0x237451[_0x33dc('0x55')]=intUtil['stripTrailingSlash'](_0x237451[_0x33dc('0x55')]);_0x237451[_0x33dc('0x56')]=intUtil['stripTrailingSlash'](_0x237451[_0x33dc('0x56')]);def[_0x33dc('0x57')]=util[_0x33dc('0x26')](_0x33dc('0x58'),_0x237451[_0x33dc('0x55')]);if(_0x1f1ef0&&_0x1f1ef0[_0x33dc('0x59')]){logger['info'](_0x33dc('0x5a'),_0x33dc('0x5b'));_0x27bf15['recordingURL']=util[_0x33dc('0x26')](_0x33dc('0x5c'),_0x237451[_0x33dc('0x56')],_0x27bf15[_0x33dc('0x5d')],md5(_0x27bf15[_0x33dc('0x5d')]));}else{_0x27bf15[_0x33dc('0x5e')]='';}return getConnection(_0x237451)[_0x33dc('0x2f')](function(_0x3ef03b){_0x1ebb3e=_0x3ef03b;return getUser(_0x237451,_0x572cce['name'],_0x1ebb3e);})[_0x33dc('0x2f')](function(_0x50d529){_0x49f0a3=_0x50d529;logger['info'](_0x33dc('0x5f'),_0x49f0a3['id']);return getEndUser(_0x237451,_0x27bf15[_0x33dc('0x60')],_0x27bf15['calleridnum'],_0x1ebb3e);})[_0x33dc('0x2f')](function(_0x5ab9e0){_0x18137=_0x5ab9e0;logger[_0x33dc('0x2b')](_0x33dc('0x61'),_0x18137['id']);return getTicket(_0x237451,_0x49f0a3,_0x18137,_0x2055d9,_0x27bf15,_0x2055d9['Fields'],_0x1ebb3e,_0x33dc('0x62'));})[_0x33dc('0x2f')](function(_0x36729e){_0x28ed5a=_0x36729e;logger[_0x33dc('0x2b')](_0x33dc('0x63'));logger[_0x33dc('0x2b')](_0x33dc('0x64'),_0x28ed5a['id']);return setRelationship(_0x1ebb3e,_0x49f0a3,_0x28ed5a,_0x33dc('0x65'));})[_0x33dc('0x2f')](function(){return setRelationship(_0x1ebb3e,_0x18137,_0x28ed5a,_0x33dc('0x66'));})[_0x33dc('0x2f')](function(){return getServerInfo(_0x1ebb3e);})[_0x33dc('0x2f')](function(_0x129cd6){var _0x141bda=parseInt(_0x129cd6[_0x33dc('0x67')][_0x33dc('0x68')](0x0));var _0xc753cd=util[_0x33dc('0x26')](_0x33dc('0x69'),_0x237451[_0x33dc('0x55')],_0x28ed5a['id']);if(_0x141bda>0x6){_0xc753cd=util['format'](_0x33dc('0x6a'),_0x237451['remoteUri'],_0x28ed5a['id']);}logger[_0x33dc('0x2b')]('[QUEUE]',_0x33dc('0x6b'));emit(util[_0x33dc('0x26')](_0x33dc('0x6c'),_0x572cce[_0x33dc('0xe')]),_0x33dc('0x6d'),{'uri':_0xc753cd});})['catch'](function(_0x1944c7){logger[_0x33dc('0x6e')](_0x33dc('0x5a'),JSON[_0x33dc('0x24')](_0x1944c7));});};exports[_0x33dc('0x6f')]=function(_0x5ab7fb,_0x5443ec,_0xc9e0e1,_0xa6924f,_0x309cbf,_0x2cad35,_0x442d65){var _0x4785d2,_0x77c8d0,_0x5c3f39,_0x7b67c9;_0x2cad35[_0x33dc('0x55')]=intUtil[_0x33dc('0x70')](_0x2cad35[_0x33dc('0x55')]);_0x2cad35[_0x33dc('0x56')]=intUtil['stripTrailingSlash'](_0x2cad35[_0x33dc('0x56')]);def[_0x33dc('0x57')]=util[_0x33dc('0x26')](_0x33dc('0x58'),_0x2cad35[_0x33dc('0x55')]);if(_0x442d65&&_0x442d65[_0x33dc('0x71')]&&_0x442d65[_0x33dc('0x71')]!==_0x33dc('0x72')){logger[_0x33dc('0x2b')](_0x33dc('0x73'),'Recording\x20is\x20enabled!');_0x5443ec['recordingURL']=util[_0x33dc('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2cad35[_0x33dc('0x56')],_0x5443ec[_0x33dc('0x5d')],md5(_0x5443ec[_0x33dc('0x5d')]));}return getConnection(_0x2cad35)[_0x33dc('0x2f')](function(_0x14e35e){_0x7b67c9=_0x14e35e;return getUser(_0x2cad35,_0xa6924f[_0x33dc('0xe')],_0x7b67c9);})[_0x33dc('0x2f')](function(_0x5b1533){_0x4785d2=_0x5b1533;logger[_0x33dc('0x2b')](_0x33dc('0x5f'),_0x4785d2['id']);return getEndUser(_0x2cad35,_0x5443ec[_0x33dc('0x74')],_0x5443ec[_0x33dc('0x75')],_0x7b67c9);})['then'](function(_0x5361f2){_0x77c8d0=_0x5361f2;logger[_0x33dc('0x2b')](_0x33dc('0x61'),_0x77c8d0['id']);return getTicket(_0x2cad35,_0x4785d2,_0x77c8d0,_0xc9e0e1,_0x5443ec,_0xc9e0e1[_0x33dc('0x76')],_0x7b67c9,_0x33dc('0x77'));})[_0x33dc('0x2f')](function(_0x537ae0){_0x5c3f39=_0x537ae0;logger[_0x33dc('0x2b')](_0x33dc('0x63'));logger['info'](_0x33dc('0x64'),_0x5c3f39['id']);return setRelationship(_0x7b67c9,_0x4785d2,_0x5c3f39,'users');})[_0x33dc('0x2f')](function(){return setRelationship(_0x7b67c9,_0x77c8d0,_0x5c3f39,'contacts');})[_0x33dc('0x2f')](function(){return getServerInfo(_0x7b67c9);})['then'](function(_0x102bfe){var _0x2584be=parseInt(_0x102bfe[_0x33dc('0x67')]['charAt'](0x0));var _0x347a3a=util['format'](_0x33dc('0x69'),_0x2cad35[_0x33dc('0x55')],_0x5c3f39['id']);if(_0x2584be>0x6){_0x347a3a=util[_0x33dc('0x26')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x2cad35[_0x33dc('0x55')],_0x5c3f39['id']);}logger[_0x33dc('0x2b')](_0x33dc('0x73'),_0x33dc('0x6b'));emit(util[_0x33dc('0x26')](_0x33dc('0x6c'),_0xa6924f[_0x33dc('0xe')]),'trigger:browser:url',{'uri':_0x347a3a});})[_0x33dc('0x78')](function(_0x245dd3){logger['error'](_0x33dc('0x73'),JSON['stringify'](_0x245dd3));});};exports['unmanaged']=function(_0x944b0,_0x233ebc,_0x20cabf,_0x92494b,_0x1ce2d1,_0x5ecd44){var _0x184c2f,_0x3060ff,_0x5ecfec,_0x2b9d75;_0x5ecd44[_0x33dc('0x55')]=intUtil['stripTrailingSlash'](_0x5ecd44[_0x33dc('0x55')]);_0x5ecd44[_0x33dc('0x56')]=intUtil['stripTrailingSlash'](_0x5ecd44[_0x33dc('0x56')]);def[_0x33dc('0x57')]=util[_0x33dc('0x26')](_0x33dc('0x58'),_0x5ecd44[_0x33dc('0x55')]);if(_0x1ce2d1&&_0x1ce2d1[_0x33dc('0x59')]){logger['info']('['+_0x233ebc['lastevent'][_0x33dc('0x79')]()+']',_0x33dc('0x5b'));_0x233ebc[_0x33dc('0x5e')]=util[_0x33dc('0x26')](_0x33dc('0x5c'),_0x5ecd44['serverUrl'],_0x233ebc[_0x33dc('0x5d')],md5(_0x233ebc[_0x33dc('0x5d')]));}else{_0x233ebc[_0x33dc('0x5e')]='';}return getConnection(_0x5ecd44)['then'](function(_0x13b43b){_0x2b9d75=_0x13b43b;if(!_[_0x33dc('0x2a')](_0x92494b)){return getUser(_0x5ecd44,_0x92494b[_0x33dc('0xe')],_0x2b9d75);}else{return getUser(_0x5ecd44,null,_0x2b9d75);}})[_0x33dc('0x2f')](function(_0x1eb8df){_0x184c2f=_0x1eb8df;logger['info'](_0x33dc('0x5f'),_0x184c2f['id']);return getEndUser(_0x5ecd44,_0x233ebc['calleridname'],_0x233ebc[_0x33dc('0x7a')],_0x2b9d75);})['then'](function(_0x4bc142){_0x3060ff=_0x4bc142;logger[_0x33dc('0x2b')](_0x33dc('0x61'),_0x3060ff['id']);return getTicket(_0x5ecd44,_0x184c2f,_0x3060ff,_0x20cabf,_0x233ebc,_0x20cabf['Fields'],_0x2b9d75,'Inbound');})[_0x33dc('0x2f')](function(_0x1971a6){_0x5ecfec=_0x1971a6;logger['info'](_0x33dc('0x63'));logger[_0x33dc('0x2b')](_0x33dc('0x64'),_0x5ecfec['id']);return setRelationship(_0x2b9d75,_0x184c2f,_0x5ecfec,'users');})[_0x33dc('0x2f')](function(){return setRelationship(_0x2b9d75,_0x3060ff,_0x5ecfec,_0x33dc('0x66'));})['then'](function(){return getServerInfo(_0x2b9d75);})['catch'](function(_0x255f33){logger[_0x33dc('0x6e')]('['+_0x233ebc[_0x33dc('0x7b')][_0x33dc('0x79')]()+']',JSON['stringify'](_0x255f33));});};
\ No newline at end of file
index 304a4bb..0475b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4447=['slice','lastIndexOf','validateEmail','isNil','test','lodash','getString','sortBy','length','type','string','push','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyType','key','format','keyContent','%s:\x20%s','join','stripTrailingSlash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4447,0xdd));var _0x7444=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x4447[_0x36eaaa];return _0x461349;};'use strict';var _=require(_0x7444('0x0'));var util=require('util');exports[_0x7444('0x1')]=function(_0x1f338d,_0x84120e,_0x48fcea){var _0x232b2b=[];if(_0x1f338d['length']>0x0){var _0x46d6b2=_[_0x7444('0x2')](_0x1f338d,['id']);for(var _0x4a8325=0x0;_0x4a8325<_0x46d6b2[_0x7444('0x3')];_0x4a8325++){var _0x2bb727=_0x46d6b2[_0x4a8325];if(_0x2bb727[_0x7444('0x4')]===_0x7444('0x5')){_0x232b2b[_0x7444('0x6')](_0x2bb727[_0x7444('0x7')]);}else if(_0x2bb727[_0x7444('0x4')]===_0x7444('0x8')&&_0x2bb727[_0x7444('0x9')]){_0x84120e[_0x2bb727['variableName']]&&_0x232b2b['push'](_0x84120e[_0x2bb727['variableName']][_0x7444('0xa')]());}else if(_0x2bb727[_0x7444('0x4')]===_0x7444('0xb')&&_0x2bb727[_0x7444('0xc')]&&_0x2bb727[_0x7444('0xc')]['name']){_0x84120e[_0x2bb727[_0x7444('0xc')][_0x7444('0xd')][_0x7444('0xe')]()]&&_0x232b2b[_0x7444('0x6')](_0x84120e[_0x2bb727['Variable']['name'][_0x7444('0xe')]()][_0x7444('0xa')]());}else if(_0x2bb727[_0x7444('0x4')]==='keyValue'){if(_0x2bb727[_0x7444('0xf')]===_0x7444('0x5')&&_0x2bb727[_0x7444('0x10')]){_0x232b2b[_0x7444('0x6')](util[_0x7444('0x11')]('%s:\x20%s',_0x2bb727[_0x7444('0x10')],_0x2bb727[_0x7444('0x12')]));}else if(_0x2bb727[_0x7444('0xf')]===_0x7444('0x8')&&_0x2bb727['variableName']&&_0x2bb727[_0x7444('0x10')]){_0x84120e[_0x2bb727[_0x7444('0x9')]]&&_0x232b2b[_0x7444('0x6')](util[_0x7444('0x11')](_0x7444('0x13'),_0x2bb727[_0x7444('0x10')],_0x84120e[_0x2bb727[_0x7444('0x9')]]));}else if(_0x2bb727['keyType']===_0x7444('0xb')&&_0x2bb727[_0x7444('0xc')]&&_0x2bb727['Variable'][_0x7444('0xd')]&&_0x2bb727[_0x7444('0x10')]){_0x84120e[_0x2bb727[_0x7444('0xc')]['name']['toLowerCase']()]&&_0x232b2b['push'](util[_0x7444('0x11')]('%s:\x20%s',_0x2bb727['key'],_0x84120e[_0x2bb727['Variable']['name']['toLowerCase']()]));}}}}return _0x232b2b[_0x7444('0x14')](_0x48fcea);};exports[_0x7444('0x15')]=function(_0x3c48ad){var _0x49f8fe=_0x3c48ad[_0x7444('0x16')](-0x1);if(_0x49f8fe==='/'){_0x3c48ad=_0x3c48ad['substring'](0x0,_0x3c48ad[_0x7444('0x17')](_0x49f8fe));}return _0x3c48ad;};exports[_0x7444('0x18')]=function(_0x55a6d0){if(!_[_0x7444('0x19')](_0x55a6d0)&&_0x55a6d0!==''){var _0x711365=/^(([^<>()\[\]\\.,;:\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 _0x711365[_0x7444('0x1a')](String(_0x55a6d0)[_0x7444('0xe')]());}else{return![];}};
\ No newline at end of file
+var _0xc0b6=['isNil','lodash','util','length','sortBy','type','string','push','content','variable','variableName','toString','Variable','name','toLowerCase','key','format','%s:\x20%s','keyType','stripTrailingSlash','substring','lastIndexOf'];(function(_0x33aff0,_0x117390){var _0x175123=function(_0x298900){while(--_0x298900){_0x33aff0['push'](_0x33aff0['shift']());}};_0x175123(++_0x117390);}(_0xc0b6,0x135));var _0x6c0b=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xc0b6[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x6c0b('0x0'));var util=require(_0x6c0b('0x1'));exports['getString']=function(_0x3310a4,_0x1e104b,_0x3a24fb){var _0x55e766=[];if(_0x3310a4[_0x6c0b('0x2')]>0x0){var _0x4eb8d1=_[_0x6c0b('0x3')](_0x3310a4,['id']);for(var _0x2e8115=0x0;_0x2e8115<_0x4eb8d1[_0x6c0b('0x2')];_0x2e8115++){var _0x563339=_0x4eb8d1[_0x2e8115];if(_0x563339[_0x6c0b('0x4')]===_0x6c0b('0x5')){_0x55e766[_0x6c0b('0x6')](_0x563339[_0x6c0b('0x7')]);}else if(_0x563339['type']===_0x6c0b('0x8')&&_0x563339[_0x6c0b('0x9')]){_0x1e104b[_0x563339[_0x6c0b('0x9')]]&&_0x55e766['push'](_0x1e104b[_0x563339[_0x6c0b('0x9')]][_0x6c0b('0xa')]());}else if(_0x563339[_0x6c0b('0x4')]==='customVariable'&&_0x563339[_0x6c0b('0xb')]&&_0x563339['Variable']['name']){_0x1e104b[_0x563339[_0x6c0b('0xb')][_0x6c0b('0xc')]['toLowerCase']()]&&_0x55e766[_0x6c0b('0x6')](_0x1e104b[_0x563339[_0x6c0b('0xb')][_0x6c0b('0xc')][_0x6c0b('0xd')]()][_0x6c0b('0xa')]());}else if(_0x563339[_0x6c0b('0x4')]==='keyValue'){if(_0x563339['keyType']==='string'&&_0x563339[_0x6c0b('0xe')]){_0x55e766['push'](util[_0x6c0b('0xf')](_0x6c0b('0x10'),_0x563339[_0x6c0b('0xe')],_0x563339['keyContent']));}else if(_0x563339[_0x6c0b('0x11')]===_0x6c0b('0x8')&&_0x563339[_0x6c0b('0x9')]&&_0x563339['key']){_0x1e104b[_0x563339['variableName']]&&_0x55e766[_0x6c0b('0x6')](util['format'](_0x6c0b('0x10'),_0x563339[_0x6c0b('0xe')],_0x1e104b[_0x563339[_0x6c0b('0x9')]]));}else if(_0x563339[_0x6c0b('0x11')]==='customVariable'&&_0x563339['Variable']&&_0x563339['Variable'][_0x6c0b('0xc')]&&_0x563339['key']){_0x1e104b[_0x563339[_0x6c0b('0xb')][_0x6c0b('0xc')][_0x6c0b('0xd')]()]&&_0x55e766[_0x6c0b('0x6')](util[_0x6c0b('0xf')](_0x6c0b('0x10'),_0x563339['key'],_0x1e104b[_0x563339['Variable']['name'][_0x6c0b('0xd')]()]));}}}}return _0x55e766['join'](_0x3a24fb);};exports[_0x6c0b('0x12')]=function(_0x37ed96){var _0x42798a=_0x37ed96['slice'](-0x1);if(_0x42798a==='/'){_0x37ed96=_0x37ed96[_0x6c0b('0x13')](0x0,_0x37ed96[_0x6c0b('0x14')](_0x42798a));}return _0x37ed96;};exports['validateEmail']=function(_0x2a7417){if(!_[_0x6c0b('0x15')](_0x2a7417)&&_0x2a7417!==''){var _0x5f0b4c=/^(([^<>()\[\]\\.,;:\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 _0x5f0b4c['test'](String(_0x2a7417)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index 62c08ba..e6cbd4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x4bba54,_0x479112){var _0x4ca811=function(_0x1bd243){while(--_0x1bd243){_0x4bba54['push'](_0x4bba54['shift']());}};_0x4ca811(++_0x479112);}(_0x9c44,0x178));var _0x49c4=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x9c44[_0x565c49];return _0x20ca34;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
+var _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(_0x3903df,_0x4fae4c){var _0x1a2ac5=function(_0x3fa0c4){while(--_0x3fa0c4){_0x3903df['push'](_0x3903df['shift']());}};_0x1a2ac5(++_0x4fae4c);}(_0xe706,0xa3));var _0x6e70=function(_0x1aed01,_0x3b59f3){_0x1aed01=_0x1aed01-0x0;var _0x34ccb8=_0xe706[_0x1aed01];return _0x34ccb8;};'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 f182481..16ced64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf81=['The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','replace','/api/v2','error','catch','inspect','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','The\x20Ticket\x20ID\x20is:','newTab','%s/agent/tickets/%s','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','md5','util','ioredis','./util','zendesk','redis','defaults','localhost','emit','application/json','Creating\x20new\x20ticket...','format','remoteUri','POST','merge','Tags','getString','Descriptions','Fields','then','info','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','count','Agent\x20found!','find','results','agent','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Searching\x20enduser\x20with\x20phone','length','filter','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','password','%s:%s','username','authType','token','%s/token:%s','Basic\x20%s','debug','stringify','GET','map','forEach','string','nameField','customField','content','toString','picklist','type','idField','push','variable','variableName','custom_fields','customVariable','Variable','name','toLowerCase','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridname','calleridnum'];(function(_0x55e7f6,_0x2f96be){var _0x5cd9f6=function(_0x241327){while(--_0x241327){_0x55e7f6['push'](_0x55e7f6['shift']());}};_0x5cd9f6(++_0x2f96be);}(_0xaf81,0x88));var _0x1af8=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xaf81[_0x2bf141];return _0x48277b;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x1af8('0x0'));var util=require(_0x1af8('0x1'));var Redis=require(_0x1af8('0x2'));var intUtil=require(_0x1af8('0x3'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x1af8('0x4'));config[_0x1af8('0x5')]=_[_0x1af8('0x6')](config[_0x1af8('0x5')],{'host':_0x1af8('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x3aec9f,_0x2012db,_0x4dd0a2){io['to'](_0x3aec9f)[_0x1af8('0x8')](_0x2012db,_0x4dd0a2);}var headers={'Content-Type':_0x1af8('0x9'),'Accept':_0x1af8('0x9')};function getTicket(_0x343ea1,_0x1d91de,_0x46ea15,_0x39bd81,_0x418dc8){logger['info'](_0x1af8('0xa'));return request({'uri':util[_0x1af8('0xb')]('%s/tickets.json',_0x343ea1[_0x1af8('0xc')]),'method':_0x1af8('0xd'),'body':{'ticket':_[_0x1af8('0xe')]({'requester_id':_0x46ea15['id'],'submitter_id':_0x1d91de?_0x1d91de['id']:undefined,'assignee_id':_0x1d91de?_0x1d91de['id']:undefined,'tags':getTags(_0x39bd81[_0x1af8('0xf')],'name'),'subject':intUtil['getString'](_0x39bd81['Subjects'],_0x418dc8,'\x20'),'description':intUtil[_0x1af8('0x10')](_0x39bd81[_0x1af8('0x11')],_0x418dc8,'\x0a'),'comment':{'public':![],'body':intUtil[_0x1af8('0x10')](_0x39bd81['Descriptions'],_0x418dc8,'\x0a')}},getCustomFields(_0x39bd81[_0x1af8('0x12')],_0x418dc8))}})[_0x1af8('0x13')](function(_0x5a2cab){logger[_0x1af8('0x14')](_0x1af8('0x15'));return _0x5a2cab[_0x1af8('0x16')];});}function getUser(_0x494316,_0x575910){if(intUtil[_0x1af8('0x17')](_0x575910)){logger[_0x1af8('0x14')](_0x1af8('0x18'),_0x575910);return request({'uri':util['format'](_0x1af8('0x19'),_0x494316[_0x1af8('0xc')]),'qs':{'query':util[_0x1af8('0xb')]('type:user\x20role:agent\x20email:%s',_0x575910)}})[_0x1af8('0x13')](function(_0x3fcab){if(_0x3fcab[_0x1af8('0x1a')]){logger[_0x1af8('0x14')](_0x1af8('0x1b'));return _[_0x1af8('0x1c')](_0x3fcab[_0x1af8('0x1d')],{'email':_0x575910,'role':_0x1af8('0x1e')});}else{logger[_0x1af8('0x14')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1af8('0xb')]('%s/users/me.json',_0x494316[_0x1af8('0xc')])})['then'](function(_0x67ad0f){logger['info'](_0x1af8('0x1f'));return _0x67ad0f[_0x1af8('0x20')];});}});}else{logger[_0x1af8('0x14')](_0x1af8('0x21'));return request({'uri':util[_0x1af8('0xb')](_0x1af8('0x22'),_0x494316[_0x1af8('0xc')])})['then'](function(_0x4eb1a8){logger[_0x1af8('0x14')]('Admin\x20account\x20selected.');return _0x4eb1a8['user'];});}}function getEndUser(_0x31c24e,_0x33c019,_0x176f67){logger[_0x1af8('0x14')](_0x1af8('0x23'),_0x176f67);return request({'uri':util['format'](_0x1af8('0x19'),_0x31c24e['remoteUri']),'qs':{'query':util[_0x1af8('0xb')]('type:user\x20role:end-user\x20phone:%s',_0x176f67)}})[_0x1af8('0x13')](function(_0x9068ed){var _0x4f6ea3;if(_0x9068ed[_0x1af8('0x1d')][_0x1af8('0x24')]){_0x9068ed[_0x1af8('0x1d')]=_[_0x1af8('0x25')](_0x9068ed['results'],{'suspended':![],'role':'end-user'});if(_0x9068ed[_0x1af8('0x1d')][_0x1af8('0x24')]){_0x4f6ea3=_[_0x1af8('0x26')](_0x9068ed['results']);}}if(_0x4f6ea3){logger[_0x1af8('0x14')](_0x1af8('0x27'));return _0x4f6ea3;}else{logger[_0x1af8('0x14')](_0x1af8('0x28'));return request({'uri':util[_0x1af8('0xb')](_0x1af8('0x29'),_0x31c24e[_0x1af8('0xc')]),'method':_0x1af8('0xd'),'body':{'user':{'role':_0x1af8('0x2a'),'name':util['format'](_0x1af8('0x2b'),_0x33c019||_0x176f67),'phone':_0x176f67}}})[_0x1af8('0x13')](function(_0x57593d){logger[_0x1af8('0x14')](_0x1af8('0x2c'));return _0x57593d[_0x1af8('0x20')];});}});}function getAuth(_0x179e4c){var _0x3d9859;if(_0x179e4c['authType']===_0x1af8('0x2d')){_0x3d9859=util[_0x1af8('0xb')](_0x1af8('0x2e'),_0x179e4c[_0x1af8('0x2f')],_0x179e4c[_0x1af8('0x2d')]);}else if(_0x179e4c[_0x1af8('0x30')]===_0x1af8('0x31')){_0x3d9859=util[_0x1af8('0xb')](_0x1af8('0x32'),_0x179e4c[_0x1af8('0x2f')],_0x179e4c[_0x1af8('0x31')]);}return util[_0x1af8('0xb')](_0x1af8('0x33'),new Buffer(_0x3d9859)['toString']('base64'));}function request(_0x37333c){logger[_0x1af8('0x34')]('[HTTP]',JSON[_0x1af8('0x35')](_0x37333c));return rp(_[_0x1af8('0x6')](_0x37333c,{'method':_0x1af8('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x16f8e5,_0x34125f){var _0xa278e7=[];if(_0x16f8e5&&_0x16f8e5[_0x1af8('0x24')]>0x0){_0xa278e7=_[_0x1af8('0x37')](_0x16f8e5,_0x34125f);}return _0xa278e7;}function getCustomFields(_0xbfd3cb,_0x3f5d52){var _0x5facee=[];var _0x4cf71a={'custom_fields':[]};if(_0xbfd3cb['length']>0x0){_[_0x1af8('0x38')](_0xbfd3cb,function(_0x30e2c2){if(_['includes']([_0x1af8('0x39'),'picklist'],_0x30e2c2['type'])&&_0x30e2c2[_0x1af8('0x3a')]&&!_0x30e2c2[_0x1af8('0x3b')]){_0x4cf71a[_0x30e2c2[_0x1af8('0x3a')]['toLowerCase']()]=_0x30e2c2[_0x1af8('0x3c')][_0x1af8('0x3d')]();}else if(_['includes']([_0x1af8('0x39'),_0x1af8('0x3e')],_0x30e2c2[_0x1af8('0x3f')])&&_0x30e2c2[_0x1af8('0x40')]&&_0x30e2c2[_0x1af8('0x3b')]){_0x4cf71a['custom_fields'][_0x1af8('0x41')]({'id':_0x30e2c2[_0x1af8('0x40')],'value':_0x30e2c2[_0x1af8('0x3c')][_0x1af8('0x3d')]()});}else if(_0x30e2c2[_0x1af8('0x3f')]===_0x1af8('0x42')&&_0x30e2c2[_0x1af8('0x43')]&&_0x30e2c2[_0x1af8('0x40')]&&_0x30e2c2['customField']){_0x3f5d52[_0x30e2c2['variableName']]&&_0x4cf71a[_0x1af8('0x44')][_0x1af8('0x41')]({'id':_0x30e2c2['idField'],'value':_0x3f5d52[_0x30e2c2[_0x1af8('0x43')]][_0x1af8('0x3d')]()});}else if(_0x30e2c2[_0x1af8('0x3f')]===_0x1af8('0x45')&&_0x30e2c2[_0x1af8('0x46')]&&_0x30e2c2[_0x1af8('0x46')][_0x1af8('0x47')]&&_0x30e2c2[_0x1af8('0x40')]&&_0x30e2c2[_0x1af8('0x3b')]){_0x3f5d52[_0x30e2c2[_0x1af8('0x46')][_0x1af8('0x47')]['toLowerCase']()]&&_0x4cf71a['custom_fields'][_0x1af8('0x41')]({'id':_0x30e2c2['idField'],'value':_0x3f5d52[_0x30e2c2[_0x1af8('0x46')][_0x1af8('0x47')][_0x1af8('0x48')]()][_0x1af8('0x3d')]()});}});}return _0x4cf71a;}exports['queue']=function(_0x513449,_0x2982b9,_0x2b9c43,_0x1631ab,_0x307dc2,_0x43a9a8){var _0x4b3a28,_0x288f15;_0x43a9a8[_0x1af8('0xc')]=intUtil[_0x1af8('0x49')](_0x43a9a8[_0x1af8('0xc')]);_0x43a9a8[_0x1af8('0x4a')]=intUtil[_0x1af8('0x49')](_0x43a9a8['serverUrl']);if(_0x307dc2&&_0x307dc2[_0x1af8('0x4b')]){logger[_0x1af8('0x14')](_0x1af8('0x4c'),_0x1af8('0x4d'));_0x2982b9[_0x1af8('0x4e')]=util['format'](_0x1af8('0x4f'),_0x43a9a8[_0x1af8('0x4a')],_0x2982b9[_0x1af8('0x50')],md5(_0x2982b9[_0x1af8('0x50')]));}else{_0x2982b9[_0x1af8('0x4e')]='';}headers[_0x1af8('0x51')]=getAuth(_0x43a9a8);return getUser(_0x43a9a8,_0x1631ab['email'])[_0x1af8('0x13')](function(_0x7b42a1){_0x4b3a28=_0x7b42a1;logger[_0x1af8('0x14')]('The\x20User\x20ID\x20is:',_0x4b3a28['id']);return getEndUser(_0x43a9a8,_0x2982b9[_0x1af8('0x52')],_0x2982b9[_0x1af8('0x53')]);})[_0x1af8('0x13')](function(_0x42fd89){_0x288f15=_0x42fd89;logger['info'](_0x1af8('0x54'),_0x288f15['id']);return getTicket(_0x43a9a8,_0x4b3a28,_0x288f15,_0x2b9c43,_0x2982b9);})[_0x1af8('0x13')](function(_0x5ab9fd){if(_0x5ab9fd){logger[_0x1af8('0x14')]('The\x20Ticket\x20ID\x20is:',_0x5ab9fd['id']);switch(_0x43a9a8[_0x1af8('0x3f')]){case _0x1af8('0x55'):logger[_0x1af8('0x14')](_0x1af8('0x4c'),_0x1af8('0x56'));return request({'uri':util[_0x1af8('0xb')](_0x1af8('0x57'),_0x43a9a8['remoteUri'],_0x4b3a28['id'],_0x5ab9fd['id']),'method':_0x1af8('0xd')});case'newTab':logger[_0x1af8('0x14')](_0x1af8('0x4c'),_0x1af8('0x58'));emit(util[_0x1af8('0xb')](_0x1af8('0x59'),_0x1631ab[_0x1af8('0x47')]),_0x1af8('0x5a'),{'uri':util['format']('%s/agent/tickets/%s',_0x43a9a8['remoteUri'][_0x1af8('0x5b')](_0x1af8('0x5c'),''),_0x5ab9fd['id'])});break;default:logger[_0x1af8('0x5d')]('[QUEUE]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x1af8('0x5e')](function(_0x4dfc73){logger[_0x1af8('0x5d')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x1af8('0x5f')](_0x4dfc73,{'showHidden':!![],'depth':null}));});};exports[_0x1af8('0x60')]=function(_0x395183,_0xe97eb1,_0x2122aa,_0x4802c6,_0xccc577,_0x897eb7,_0x146e57){var _0x1cce4e,_0x1ba090;_0x897eb7[_0x1af8('0xc')]=intUtil[_0x1af8('0x49')](_0x897eb7[_0x1af8('0xc')]);_0x897eb7['serverUrl']=intUtil['stripTrailingSlash'](_0x897eb7[_0x1af8('0x4a')]);if(_0x146e57&&_0x146e57[_0x1af8('0x61')]&&_0x146e57[_0x1af8('0x61')]!==_0x1af8('0x62')){logger[_0x1af8('0x14')](_0x1af8('0x63'),_0x1af8('0x4d'));_0xe97eb1[_0x1af8('0x4e')]=util[_0x1af8('0xb')](_0x1af8('0x4f'),_0x897eb7['serverUrl'],_0xe97eb1[_0x1af8('0x50')],md5(_0xe97eb1[_0x1af8('0x50')]));}headers[_0x1af8('0x51')]=getAuth(_0x897eb7);return getUser(_0x897eb7,_0x4802c6['email'])[_0x1af8('0x13')](function(_0x31c057){_0x1cce4e=_0x31c057;logger[_0x1af8('0x14')](_0x1af8('0x64'),_0x1cce4e['id']);return getEndUser(_0x897eb7,_0xe97eb1[_0x1af8('0x65')],_0xe97eb1['destcalleridnum']);})[_0x1af8('0x13')](function(_0x68b108){_0x1ba090=_0x68b108;logger[_0x1af8('0x14')](_0x1af8('0x54'),_0x1ba090['id']);return getTicket(_0x897eb7,_0x1cce4e,_0x1ba090,_0x2122aa,_0xe97eb1);})[_0x1af8('0x13')](function(_0x30f1f7){if(_0x30f1f7){logger['info'](_0x1af8('0x66'),_0x30f1f7['id']);switch(_0x897eb7['type']){case _0x1af8('0x55'):logger[_0x1af8('0x14')](_0x1af8('0x63'),_0x1af8('0x56'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x897eb7[_0x1af8('0xc')],_0x1cce4e['id'],_0x30f1f7['id']),'method':'POST'});case _0x1af8('0x67'):logger[_0x1af8('0x14')](_0x1af8('0x63'),_0x1af8('0x58'));emit(util[_0x1af8('0xb')](_0x1af8('0x59'),_0x4802c6['name']),_0x1af8('0x5a'),{'uri':util[_0x1af8('0xb')](_0x1af8('0x68'),_0x897eb7[_0x1af8('0xc')][_0x1af8('0x5b')](_0x1af8('0x5c'),''),_0x30f1f7['id'])});break;default:logger[_0x1af8('0x5d')]('[OUTBOUND]',_0x1af8('0x69'));}}})[_0x1af8('0x5e')](function(_0x36213e){logger['error'](_0x1af8('0x6a'),util['inspect'](_0x36213e,{'showHidden':!![],'depth':null}));});};exports[_0x1af8('0x6b')]=function(_0x2031a2,_0x158400,_0x1d85a8,_0x286d01,_0x6add96,_0x47b0b0){var _0x28d960,_0x3c3400;_0x47b0b0['remoteUri']=intUtil[_0x1af8('0x49')](_0x47b0b0['remoteUri']);_0x47b0b0[_0x1af8('0x4a')]=intUtil[_0x1af8('0x49')](_0x47b0b0[_0x1af8('0x4a')]);if(_0x6add96&&_0x6add96[_0x1af8('0x4b')]){logger[_0x1af8('0x14')]('['+_0x158400['lastevent'][_0x1af8('0x6c')]()+']',_0x1af8('0x4d'));_0x158400[_0x1af8('0x4e')]=util[_0x1af8('0xb')](_0x1af8('0x4f'),_0x47b0b0[_0x1af8('0x4a')],_0x158400[_0x1af8('0x50')],md5(_0x158400[_0x1af8('0x50')]));}else{_0x158400[_0x1af8('0x4e')]='';}headers[_0x1af8('0x51')]=getAuth(_0x47b0b0);return getUser(_0x47b0b0)[_0x1af8('0x13')](function(_0x4bc467){_0x28d960=_0x4bc467;logger[_0x1af8('0x14')](_0x1af8('0x64'),_0x28d960['id']);return getEndUser(_0x47b0b0,_0x158400['calleridname'],_0x158400[_0x1af8('0x53')]);})[_0x1af8('0x13')](function(_0x2afc42){_0x3c3400=_0x2afc42;logger[_0x1af8('0x14')]('The\x20Enduser\x20ID\x20is:',_0x3c3400['id']);return getTicket(_0x47b0b0,_0x28d960,_0x3c3400,_0x1d85a8,_0x158400);})['then'](function(_0x1ca1be){if(_0x1ca1be){logger[_0x1af8('0x14')](_0x1af8('0x66'),_0x1ca1be['id']);}})[_0x1af8('0x5e')](function(_0x2077ca){logger[_0x1af8('0x5d')]('['+_0x158400['lastevent'][_0x1af8('0x6c')]()+']'+_0x1af8('0x6d'),util[_0x1af8('0x5f')](_0x2077ca,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x4f5f=['queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','calleridname','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','email','The\x20User\x20ID\x20is:','destcalleridnum','The\x20Enduser\x20ID\x20is:','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','name','getString','Subjects','Fields','then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','%s/users/me.json','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','authType','password','%s:%s','username','token','%s/token:%s','toString','debug','[HTTP]','stringify','defaults','GET','map','forEach','includes','string','type','nameField','customField','toLowerCase','picklist','custom_fields','idField','content','variable','variableName','customVariable','Variable','push'];(function(_0x59e7e0,_0x3ec148){var _0x26b058=function(_0x212ee2){while(--_0x212ee2){_0x59e7e0['push'](_0x59e7e0['shift']());}};_0x26b058(++_0x3ec148);}(_0x4f5f,0x108));var _0xf4f5=function(_0x1f27df,_0x4f1a64){_0x1f27df=_0x1f27df-0x0;var _0x286ee2=_0x4f5f[_0x1f27df];return _0x286ee2;};'use strict';var _=require(_0xf4f5('0x0'));var rp=require(_0xf4f5('0x1'));var md5=require(_0xf4f5('0x2'));var util=require(_0xf4f5('0x3'));var Redis=require(_0xf4f5('0x4'));var intUtil=require(_0xf4f5('0x5'));var config=require(_0xf4f5('0x6'));var logger=require(_0xf4f5('0x7'))('zendesk');config['redis']=_['defaults'](config[_0xf4f5('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xf4f5('0x9'))(new Redis(config['redis']));function emit(_0x4ee84f,_0x1c9dae,_0x222607){io['to'](_0x4ee84f)[_0xf4f5('0xa')](_0x1c9dae,_0x222607);}var headers={'Content-Type':_0xf4f5('0xb'),'Accept':_0xf4f5('0xb')};function getTicket(_0xbd58b8,_0x34cb73,_0x228b75,_0x16e25d,_0x4f6210){logger[_0xf4f5('0xc')](_0xf4f5('0xd'));return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0xf'),_0xbd58b8[_0xf4f5('0x10')]),'method':_0xf4f5('0x11'),'body':{'ticket':_[_0xf4f5('0x12')]({'requester_id':_0x228b75['id'],'submitter_id':_0x34cb73?_0x34cb73['id']:undefined,'assignee_id':_0x34cb73?_0x34cb73['id']:undefined,'tags':getTags(_0x16e25d['Tags'],_0xf4f5('0x13')),'subject':intUtil[_0xf4f5('0x14')](_0x16e25d[_0xf4f5('0x15')],_0x4f6210,'\x20'),'description':intUtil[_0xf4f5('0x14')](_0x16e25d['Descriptions'],_0x4f6210,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x16e25d['Descriptions'],_0x4f6210,'\x0a')}},getCustomFields(_0x16e25d[_0xf4f5('0x16')],_0x4f6210))}})[_0xf4f5('0x17')](function(_0x4a92b4){logger[_0xf4f5('0xc')](_0xf4f5('0x18'));return _0x4a92b4['ticket'];});}function getUser(_0x376c2c,_0x58db3b){if(intUtil[_0xf4f5('0x19')](_0x58db3b)){logger[_0xf4f5('0xc')](_0xf4f5('0x1a'),_0x58db3b);return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x1b'),_0x376c2c[_0xf4f5('0x10')]),'qs':{'query':util[_0xf4f5('0xe')](_0xf4f5('0x1c'),_0x58db3b)}})[_0xf4f5('0x17')](function(_0x4243f0){if(_0x4243f0[_0xf4f5('0x1d')]){logger[_0xf4f5('0xc')](_0xf4f5('0x1e'));return _[_0xf4f5('0x1f')](_0x4243f0[_0xf4f5('0x20')],{'email':_0x58db3b,'role':_0xf4f5('0x21')});}else{logger[_0xf4f5('0xc')](_0xf4f5('0x22'));return request({'uri':util[_0xf4f5('0xe')]('%s/users/me.json',_0x376c2c[_0xf4f5('0x10')])})['then'](function(_0x1de0f9){logger[_0xf4f5('0xc')](_0xf4f5('0x23'));return _0x1de0f9[_0xf4f5('0x24')];});}});}else{logger[_0xf4f5('0xc')](_0xf4f5('0x22'));return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x25'),_0x376c2c[_0xf4f5('0x10')])})[_0xf4f5('0x17')](function(_0xb89c22){logger[_0xf4f5('0xc')]('Admin\x20account\x20selected.');return _0xb89c22['user'];});}}function getEndUser(_0x1ac219,_0x4e0eb0,_0x5cd280){logger['info']('Searching\x20enduser\x20with\x20phone',_0x5cd280);return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x1b'),_0x1ac219[_0xf4f5('0x10')]),'qs':{'query':util[_0xf4f5('0xe')](_0xf4f5('0x26'),_0x5cd280)}})[_0xf4f5('0x17')](function(_0x10527e){var _0x39e210;if(_0x10527e['results'][_0xf4f5('0x27')]){_0x10527e[_0xf4f5('0x20')]=_[_0xf4f5('0x28')](_0x10527e[_0xf4f5('0x20')],{'suspended':![],'role':_0xf4f5('0x29')});if(_0x10527e['results'][_0xf4f5('0x27')]){_0x39e210=_['first'](_0x10527e[_0xf4f5('0x20')]);}}if(_0x39e210){logger[_0xf4f5('0xc')](_0xf4f5('0x2a'));return _0x39e210;}else{logger[_0xf4f5('0xc')](_0xf4f5('0x2b'));return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x2c'),_0x1ac219['remoteUri']),'method':_0xf4f5('0x11'),'body':{'user':{'role':'end-user','name':util[_0xf4f5('0xe')](_0xf4f5('0x2d'),_0x4e0eb0||_0x5cd280),'phone':_0x5cd280}}})['then'](function(_0x59ee0b){logger[_0xf4f5('0xc')]('Enduser\x20created.');return _0x59ee0b[_0xf4f5('0x24')];});}});}function getAuth(_0x1c9602){var _0x567241;if(_0x1c9602[_0xf4f5('0x2e')]===_0xf4f5('0x2f')){_0x567241=util['format'](_0xf4f5('0x30'),_0x1c9602[_0xf4f5('0x31')],_0x1c9602[_0xf4f5('0x2f')]);}else if(_0x1c9602['authType']===_0xf4f5('0x32')){_0x567241=util[_0xf4f5('0xe')](_0xf4f5('0x33'),_0x1c9602[_0xf4f5('0x31')],_0x1c9602['token']);}return util[_0xf4f5('0xe')]('Basic\x20%s',new Buffer(_0x567241)[_0xf4f5('0x34')]('base64'));}function request(_0x5ccfde){logger[_0xf4f5('0x35')](_0xf4f5('0x36'),JSON[_0xf4f5('0x37')](_0x5ccfde));return rp(_[_0xf4f5('0x38')](_0x5ccfde,{'method':_0xf4f5('0x39'),'headers':headers,'json':!![]}));}function getTags(_0x8e8f4e,_0xab659b){var _0xcb741b=[];if(_0x8e8f4e&&_0x8e8f4e[_0xf4f5('0x27')]>0x0){_0xcb741b=_[_0xf4f5('0x3a')](_0x8e8f4e,_0xab659b);}return _0xcb741b;}function getCustomFields(_0x37c998,_0x1949e8){var _0x3f732a=[];var _0x22f359={'custom_fields':[]};if(_0x37c998[_0xf4f5('0x27')]>0x0){_[_0xf4f5('0x3b')](_0x37c998,function(_0x23e9ef){if(_[_0xf4f5('0x3c')]([_0xf4f5('0x3d'),'picklist'],_0x23e9ef[_0xf4f5('0x3e')])&&_0x23e9ef[_0xf4f5('0x3f')]&&!_0x23e9ef[_0xf4f5('0x40')]){_0x22f359[_0x23e9ef[_0xf4f5('0x3f')][_0xf4f5('0x41')]()]=_0x23e9ef['content']['toString']();}else if(_[_0xf4f5('0x3c')](['string',_0xf4f5('0x42')],_0x23e9ef['type'])&&_0x23e9ef['idField']&&_0x23e9ef['customField']){_0x22f359[_0xf4f5('0x43')]['push']({'id':_0x23e9ef[_0xf4f5('0x44')],'value':_0x23e9ef[_0xf4f5('0x45')]['toString']()});}else if(_0x23e9ef[_0xf4f5('0x3e')]===_0xf4f5('0x46')&&_0x23e9ef[_0xf4f5('0x47')]&&_0x23e9ef[_0xf4f5('0x44')]&&_0x23e9ef[_0xf4f5('0x40')]){_0x1949e8[_0x23e9ef[_0xf4f5('0x47')]]&&_0x22f359['custom_fields']['push']({'id':_0x23e9ef['idField'],'value':_0x1949e8[_0x23e9ef['variableName']][_0xf4f5('0x34')]()});}else if(_0x23e9ef[_0xf4f5('0x3e')]===_0xf4f5('0x48')&&_0x23e9ef[_0xf4f5('0x49')]&&_0x23e9ef[_0xf4f5('0x49')]['name']&&_0x23e9ef[_0xf4f5('0x44')]&&_0x23e9ef['customField']){_0x1949e8[_0x23e9ef[_0xf4f5('0x49')][_0xf4f5('0x13')]['toLowerCase']()]&&_0x22f359[_0xf4f5('0x43')][_0xf4f5('0x4a')]({'id':_0x23e9ef[_0xf4f5('0x44')],'value':_0x1949e8[_0x23e9ef[_0xf4f5('0x49')][_0xf4f5('0x13')][_0xf4f5('0x41')]()][_0xf4f5('0x34')]()});}});}return _0x22f359;}exports[_0xf4f5('0x4b')]=function(_0x4ac2da,_0x2589cc,_0x3a431c,_0x369d09,_0x48df29,_0x3d0ac7){var _0x1d6843,_0x1ed29d;_0x3d0ac7['remoteUri']=intUtil['stripTrailingSlash'](_0x3d0ac7['remoteUri']);_0x3d0ac7[_0xf4f5('0x4c')]=intUtil[_0xf4f5('0x4d')](_0x3d0ac7[_0xf4f5('0x4c')]);if(_0x48df29&&_0x48df29[_0xf4f5('0x4e')]){logger[_0xf4f5('0xc')](_0xf4f5('0x4f'),'Recording\x20is\x20enabled!');_0x2589cc['recordingURL']=util['format'](_0xf4f5('0x50'),_0x3d0ac7[_0xf4f5('0x4c')],_0x2589cc[_0xf4f5('0x51')],md5(_0x2589cc[_0xf4f5('0x51')]));}else{_0x2589cc[_0xf4f5('0x52')]='';}headers[_0xf4f5('0x53')]=getAuth(_0x3d0ac7);return getUser(_0x3d0ac7,_0x369d09['email'])[_0xf4f5('0x17')](function(_0x32e584){_0x1d6843=_0x32e584;logger['info']('The\x20User\x20ID\x20is:',_0x1d6843['id']);return getEndUser(_0x3d0ac7,_0x2589cc[_0xf4f5('0x54')],_0x2589cc[_0xf4f5('0x55')]);})[_0xf4f5('0x17')](function(_0x9031a7){_0x1ed29d=_0x9031a7;logger['info']('The\x20Enduser\x20ID\x20is:',_0x1ed29d['id']);return getTicket(_0x3d0ac7,_0x1d6843,_0x1ed29d,_0x3a431c,_0x2589cc);})[_0xf4f5('0x17')](function(_0x216199){if(_0x216199){logger[_0xf4f5('0xc')](_0xf4f5('0x56'),_0x216199['id']);switch(_0x3d0ac7[_0xf4f5('0x3e')]){case _0xf4f5('0x57'):logger['info']('[QUEUE]',_0xf4f5('0x58'));return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x59'),_0x3d0ac7[_0xf4f5('0x10')],_0x1d6843['id'],_0x216199['id']),'method':_0xf4f5('0x11')});case _0xf4f5('0x5a'):logger['info'](_0xf4f5('0x4f'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xf4f5('0xe')](_0xf4f5('0x5b'),_0x369d09[_0xf4f5('0x13')]),'trigger:browser:url',{'uri':util[_0xf4f5('0xe')]('%s/agent/tickets/%s',_0x3d0ac7[_0xf4f5('0x10')][_0xf4f5('0x5c')](_0xf4f5('0x5d'),''),_0x216199['id'])});break;default:logger[_0xf4f5('0x5e')](_0xf4f5('0x4f'),_0xf4f5('0x5f'));}}})[_0xf4f5('0x60')](function(_0x1b9186){logger[_0xf4f5('0x5e')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0xf4f5('0x61')](_0x1b9186,{'showHidden':!![],'depth':null}));});};exports[_0xf4f5('0x62')]=function(_0x3ec935,_0x153f6c,_0x2059d7,_0x41e143,_0x2ef1b0,_0x2659d3,_0x1bff9d){var _0x43901f,_0x24a387;_0x2659d3[_0xf4f5('0x10')]=intUtil[_0xf4f5('0x4d')](_0x2659d3['remoteUri']);_0x2659d3[_0xf4f5('0x4c')]=intUtil[_0xf4f5('0x4d')](_0x2659d3[_0xf4f5('0x4c')]);if(_0x1bff9d&&_0x1bff9d[_0xf4f5('0x63')]&&_0x1bff9d[_0xf4f5('0x63')]!==_0xf4f5('0x64')){logger[_0xf4f5('0xc')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x153f6c[_0xf4f5('0x52')]=util[_0xf4f5('0xe')](_0xf4f5('0x50'),_0x2659d3['serverUrl'],_0x153f6c[_0xf4f5('0x51')],md5(_0x153f6c['uniqueid']));}headers['Authorization']=getAuth(_0x2659d3);return getUser(_0x2659d3,_0x41e143[_0xf4f5('0x65')])[_0xf4f5('0x17')](function(_0x58ee60){_0x43901f=_0x58ee60;logger[_0xf4f5('0xc')](_0xf4f5('0x66'),_0x43901f['id']);return getEndUser(_0x2659d3,_0x153f6c['destcalleridname'],_0x153f6c[_0xf4f5('0x67')]);})[_0xf4f5('0x17')](function(_0x2a2ee4){_0x24a387=_0x2a2ee4;logger[_0xf4f5('0xc')](_0xf4f5('0x68'),_0x24a387['id']);return getTicket(_0x2659d3,_0x43901f,_0x24a387,_0x2059d7,_0x153f6c);})[_0xf4f5('0x17')](function(_0x1703a2){if(_0x1703a2){logger[_0xf4f5('0xc')](_0xf4f5('0x56'),_0x1703a2['id']);switch(_0x2659d3[_0xf4f5('0x3e')]){case _0xf4f5('0x57'):logger[_0xf4f5('0xc')]('[OUTBOUND]',_0xf4f5('0x58'));return request({'uri':util[_0xf4f5('0xe')](_0xf4f5('0x59'),_0x2659d3[_0xf4f5('0x10')],_0x43901f['id'],_0x1703a2['id']),'method':_0xf4f5('0x11')});case _0xf4f5('0x5a'):logger['info'](_0xf4f5('0x69'),_0xf4f5('0x6a'));emit(util[_0xf4f5('0xe')](_0xf4f5('0x5b'),_0x41e143[_0xf4f5('0x13')]),_0xf4f5('0x6b'),{'uri':util[_0xf4f5('0xe')]('%s/agent/tickets/%s',_0x2659d3[_0xf4f5('0x10')][_0xf4f5('0x5c')](_0xf4f5('0x5d'),''),_0x1703a2['id'])});break;default:logger[_0xf4f5('0x5e')](_0xf4f5('0x69'),_0xf4f5('0x5f'));}}})[_0xf4f5('0x60')](function(_0x8be2e9){logger[_0xf4f5('0x5e')](_0xf4f5('0x6c'),util[_0xf4f5('0x61')](_0x8be2e9,{'showHidden':!![],'depth':null}));});};exports[_0xf4f5('0x6d')]=function(_0x382b45,_0x6e8644,_0x3ae49f,_0xb22fe5,_0x47f1dc,_0x572622){var _0x2b2120,_0x10f7d9;_0x572622['remoteUri']=intUtil[_0xf4f5('0x4d')](_0x572622[_0xf4f5('0x10')]);_0x572622[_0xf4f5('0x4c')]=intUtil[_0xf4f5('0x4d')](_0x572622[_0xf4f5('0x4c')]);if(_0x47f1dc&&_0x47f1dc[_0xf4f5('0x4e')]){logger['info']('['+_0x6e8644[_0xf4f5('0x6e')][_0xf4f5('0x6f')]()+']',_0xf4f5('0x70'));_0x6e8644[_0xf4f5('0x52')]=util[_0xf4f5('0xe')](_0xf4f5('0x50'),_0x572622['serverUrl'],_0x6e8644[_0xf4f5('0x51')],md5(_0x6e8644['uniqueid']));}else{_0x6e8644['recordingURL']='';}headers['Authorization']=getAuth(_0x572622);return getUser(_0x572622)[_0xf4f5('0x17')](function(_0x5c7b9c){_0x2b2120=_0x5c7b9c;logger[_0xf4f5('0xc')](_0xf4f5('0x66'),_0x2b2120['id']);return getEndUser(_0x572622,_0x6e8644[_0xf4f5('0x54')],_0x6e8644[_0xf4f5('0x55')]);})[_0xf4f5('0x17')](function(_0x484266){_0x10f7d9=_0x484266;logger[_0xf4f5('0xc')](_0xf4f5('0x68'),_0x10f7d9['id']);return getTicket(_0x572622,_0x2b2120,_0x10f7d9,_0x3ae49f,_0x6e8644);})[_0xf4f5('0x17')](function(_0x1e03bf){if(_0x1e03bf){logger[_0xf4f5('0xc')](_0xf4f5('0x56'),_0x1e03bf['id']);}})[_0xf4f5('0x60')](function(_0x102cd1){logger[_0xf4f5('0x5e')]('['+_0x6e8644[_0xf4f5('0x6e')]['toUpperCase']()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x102cd1,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index db63124..fe4acc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7cb=['Search\x20user','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','users','isArrayLikeObject','findIndex','info','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','data','enduserType','https://www.zohoapis.','startCase','moduleCreate','role','first_name','last_name','Zoho-oauthtoken\x20','code','SUCCESS','Error:\x20','GET','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','administrator','Subject','getString','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','Call_Duration','utc','mm:ss','answertime','endtime','diff','starttime','YYYY-MM-DDTHH:mm:ss','called','Call_Result','Called','complete','connect','rejected','abandoned','Abandoned','timeout','Timeout','Call_Start_Time','outbound','agentcalledAt','Inbound','merge','Fields','/crm/v2/Calls','Call\x20created!','details','log','err','queue','host','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','email','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','/api/voice/recordings/','com','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Outbound','user:%s','https://crm.','unmanaged','monitor_format','lastevent','toUpperCase','calleridname','request-promise','md5','util','./util','moment','ioredis','bluebird','../../../../config/logger','zoho','defaults','redis','localhost','emit','debug','[HTTP]','stringify','forEach','string','picklist','type','content','variable','variableName','idField','toString','Variable','name','toLowerCase','indexOf','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','error','Failing\x20creating\x20the\x20access_token','stack'];(function(_0x41719e,_0x1fa409){var _0x446a95=function(_0xfa38c4){while(--_0xfa38c4){_0x41719e['push'](_0x41719e['shift']());}};_0x446a95(++_0x1fa409);}(_0xf7cb,0x1a9));var _0xbf7c=function(_0x2a8c08,_0x56a5b1){_0x2a8c08=_0x2a8c08-0x0;var _0x548532=_0xf7cb[_0x2a8c08];return _0x548532;};'use strict';var _=require('lodash');var rp=require(_0xbf7c('0x0'));var md5=require(_0xbf7c('0x1'));var util=require(_0xbf7c('0x2'));var intUtil=require(_0xbf7c('0x3'));var moment=require(_0xbf7c('0x4'));var Redis=require(_0xbf7c('0x5'));var BPromise=require(_0xbf7c('0x6'));var config=require('../../../../config/environment');var logger=require(_0xbf7c('0x7'))(_0xbf7c('0x8'));config['redis']=_[_0xbf7c('0x9')](config[_0xbf7c('0xa')],{'host':_0xbf7c('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xbf7c('0xa')]));function emit(_0x3b2c1d,_0x187f12,_0x3d0609){io['to'](_0x3b2c1d)[_0xbf7c('0xc')](_0x187f12,_0x3d0609);}function request(_0x353075){logger[_0xbf7c('0xd')](_0xbf7c('0xe'),JSON[_0xbf7c('0xf')](_0x353075));return rp(_0x353075);}function getCustomFields(_0x8019fa,_0x872524){var _0xe2bf20={};if(_0x8019fa['length']>0x0){_[_0xbf7c('0x10')](_0x8019fa,function(_0x476b72){if(_['includes']([_0xbf7c('0x11'),_0xbf7c('0x12')],_0x476b72[_0xbf7c('0x13')])&&_0x476b72['idField']){_0xe2bf20[_0x476b72['idField']]=_0x476b72[_0xbf7c('0x14')]['toString']();}else if(_0x476b72[_0xbf7c('0x13')]===_0xbf7c('0x15')&&_0x476b72[_0xbf7c('0x16')]&&_0x476b72[_0xbf7c('0x17')]&&_0x872524[_0x476b72[_0xbf7c('0x16')]]){_0xe2bf20[_0x476b72[_0xbf7c('0x17')]]=_0x872524[_0x476b72[_0xbf7c('0x16')]][_0xbf7c('0x18')]();}else if(_0x476b72[_0xbf7c('0x13')]==='customVariable'&&_0x476b72[_0xbf7c('0x19')]&&_0x476b72[_0xbf7c('0x19')][_0xbf7c('0x1a')]&&_0x476b72[_0xbf7c('0x17')]&&_0x872524[_0x476b72[_0xbf7c('0x19')]['name'][_0xbf7c('0x1b')]()]){_0xe2bf20[_0x476b72[_0xbf7c('0x17')]]=_0x872524[_0x476b72[_0xbf7c('0x19')]['name'][_0xbf7c('0x1b')]()][_0xbf7c('0x18')]();}});}return _0xe2bf20;}function getName(_0x523c9e){if(_0x523c9e[_0xbf7c('0x1c')]('\x20')>0x0){var _0x2c9bf1=_0x523c9e['split'](/ (.+)/);if(_0x2c9bf1[0x1]){return _0x2c9bf1;}}return[_0x523c9e,_0x523c9e];}var accountsTokens={};function getAccessToken(_0x3a4a95){return new Promise(function(_0x88b021,_0x19e79d){if(!_[_0xbf7c('0x1d')](accountsTokens[_0x3a4a95['id']])&&!_['isNil'](accountsTokens[_0x3a4a95['id']][_0xbf7c('0x1e')])){if(moment()[_0xbf7c('0x1f')](accountsTokens[_0x3a4a95['id']][_0xbf7c('0x20')])){_0x88b021(accountsTokens[_0x3a4a95['id']][_0xbf7c('0x1e')]);}}var _0x25340b;switch(_0x3a4a95[_0xbf7c('0x21')]){case'US':_0x25340b=_0xbf7c('0x22');break;case'AU':_0x25340b='https://accounts.zoho.com.au';break;case'EU':_0x25340b=_0xbf7c('0x23');break;case'IN':_0x25340b=_0xbf7c('0x24');break;case'CN':_0x25340b=_0xbf7c('0x25');break;default:_0x25340b=_0xbf7c('0x23');break;}var _0x2bf02d={'method':_0xbf7c('0x26'),'uri':_0x25340b+'/oauth/v2/token','qs':{'refresh_token':_0x3a4a95[_0xbf7c('0x27')],'client_id':_0x3a4a95[_0xbf7c('0x28')],'client_secret':_0x3a4a95[_0xbf7c('0x29')],'grant_type':_0xbf7c('0x2a')},'json':!![]};return rp(_0x2bf02d)[_0xbf7c('0x2b')](function(_0x2f2148){accountsTokens[_0x3a4a95['id']]={'access_token':_0x2f2148['access_token'],'expires_in':moment()[_0xbf7c('0x2c')](_0x2f2148[_0xbf7c('0x20')],_0xbf7c('0x2d'))};_0x88b021(_0x2f2148['access_token']);})['catch'](function(_0x47d023){logger[_0xbf7c('0x2e')](_0xbf7c('0x2f'),_0x47d023[_0xbf7c('0x30')]);_0x19e79d(_0x47d023);});});}function getUser(_0x30a593,_0x1f3be0,_0x24059f,_0x7eff42){logger['info'](_0xbf7c('0x31'));return request({'method':'GET','uri':util[_0xbf7c('0x32')](_0xbf7c('0x33'),_0x1f3be0),'qs':{'type':_0xbf7c('0x34')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x30a593},'json':!![]})['then'](function(_0x1a9f4b){if(_0x1a9f4b[_0xbf7c('0x35')]){var _0x1f9c01=-0x1;if(_[_0xbf7c('0x36')](_0x1a9f4b[_0xbf7c('0x35')])){if(!_[_0xbf7c('0x1d')](_0x7eff42)){_0x1f9c01=_[_0xbf7c('0x37')](_0x1a9f4b[_0xbf7c('0x35')],function(_0x480c3f){return _0x480c3f['email']===_0x7eff42;});}if(_0x1f9c01>=0x0){logger[_0xbf7c('0x38')]('Agent\x20found!');}else{logger[_0xbf7c('0x38')](_0xbf7c('0x39'));_0x1f9c01=_['findIndex'](_0x1a9f4b[_0xbf7c('0x35')],function(_0x1d95ae){return _0x1d95ae[_0xbf7c('0x3a')][_0xbf7c('0x1a')]===_0xbf7c('0x3b');});}return _0x1a9f4b[_0xbf7c('0x35')][_0x1f9c01];}else{if(_0x1a9f4b['user'][_0xbf7c('0x3a')][_0xbf7c('0x1a')]===_0xbf7c('0x3b')){logger[_0xbf7c('0x38')]('Using\x20the\x20admin\x20account!');user=_0x1a9f4b[_0xbf7c('0x3c')];return user;}else{logger[_0xbf7c('0x2e')](_0xbf7c('0x3d'),JSON[_0xbf7c('0xf')](_0x1a9f4b));throw new Error(_0xbf7c('0x3e')+JSON[_0xbf7c('0xf')](_0x1a9f4b));}}}else{logger[_0xbf7c('0x2e')](_0xbf7c('0x3d'),JSON[_0xbf7c('0xf')](_0x1a9f4b));throw new Error(_0xbf7c('0x3e')+JSON['stringify'](_0x1a9f4b));}})[_0xbf7c('0x3f')](function(_0x1ab61d){console[_0xbf7c('0x2e')](_0x1ab61d);});}function getZohoUser(_0x613e18,_0x235d7c){return new BPromise(function(_0x239937,_0x324a3b){request(_0x613e18)[_0xbf7c('0x2b')](function(_0x4b1ced){var _0x15fd7a=null;if(_0x4b1ced){_0x15fd7a=_0x4b1ced[_0xbf7c('0x40')][0x0];_0x15fd7a[_0xbf7c('0x41')]=_0x235d7c;}_0x239937(_0x15fd7a);})[_0xbf7c('0x3f')](function(_0x560cc1){_0x324a3b(_0x560cc1);});});}function createEndUser(_0x40b234,_0x91ee87,_0x1707bb,_0x576d15,_0x5c654c,_0x28c402){var _0x1707bb=getName(_0x1707bb);return request({'method':_0xbf7c('0x26'),'uri':_0xbf7c('0x42')+_0x91ee87+'/crm/v2/'+_[_0xbf7c('0x43')](_0x28c402[_0xbf7c('0x44')])+'s','body':{'data':[{'Last_Name':_0x1707bb[0x1],'First_Name':_0x1707bb[0x0],'Phone':_0x576d15,'Owner':{'name':!_['isNil'](_0x5c654c[_0xbf7c('0x45')][_0xbf7c('0x1a')])?_0x5c654c[_0xbf7c('0x45')][_0xbf7c('0x1a')]:!_[_0xbf7c('0x1d')](_0x5c654c[_0xbf7c('0x46')])?_0x5c654c[_0xbf7c('0x46')]+'\x20'+_0x5c654c[_0xbf7c('0x47')]:_0x5c654c[_0xbf7c('0x47')],'id':_0x5c654c['id']}}]},'headers':{'Authorization':_0xbf7c('0x48')+_0x40b234},'json':!![]})['then'](function(_0x33055a){if(_0x33055a&&_0x33055a[_0xbf7c('0x40')][0x0][_0xbf7c('0x49')]===_0xbf7c('0x4a')){var _0x4f5315=_0x33055a[_0xbf7c('0x40')][0x0]['details'];_0x4f5315[_0xbf7c('0x41')]=_[_0xbf7c('0x43')](_0x28c402[_0xbf7c('0x44')])+'s';return _0x4f5315;}logger[_0xbf7c('0x2e')](_0xbf7c('0x3d'),JSON[_0xbf7c('0xf')](data));throw new Error(_0xbf7c('0x4b')+JSON[_0xbf7c('0xf')](data));})['catch'](function(_0x3fd30d){console['log']('CREATE\x20ERROR',_0x3fd30d);});}function getEndUser(_0x3fb773,_0x38e51e,_0x5d4f42,_0x31c1d4,_0x4645e9,_0x4de309,_0x22f2f6){var _0x340511={'method':_0xbf7c('0x4c'),'uri':'','headers':{'Authorization':_0xbf7c('0x48')+_0x3fb773},'json':!![]};switch(_0x22f2f6[_0xbf7c('0x4d')]){case _0xbf7c('0x4e'):_0x340511[_0xbf7c('0x4f')]=_0xbf7c('0x42')+_0x38e51e+_0xbf7c('0x50')+_0x4645e9+'))';return getZohoUser(_0x340511,_0xbf7c('0x51'))[_0xbf7c('0x2b')](function(_0x2ca576){if(_0x2ca576)return _0x2ca576;_0x340511['uri']=_0xbf7c('0x42')+_0x38e51e+_0xbf7c('0x52')+_0x4645e9+'))';return getZohoUser(_0x340511,_0xbf7c('0x53'))[_0xbf7c('0x2b')](function(_0x5cf98e){if(_0x5cf98e)return _0x5cf98e;if(_0x22f2f6[_0xbf7c('0x44')]!=_0xbf7c('0x54')){return createEndUser(_0x3fb773,_0x38e51e,_0x31c1d4,_0x4645e9,_0x4de309,_0x22f2f6);}else{return{};}});});break;case _0xbf7c('0x55'):_0x340511[_0xbf7c('0x4f')]='https://www.zohoapis.'+_0x38e51e+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x4645e9+'))';return getZohoUser(_0x340511,'Contacts')[_0xbf7c('0x2b')](function(_0x1ea6ce){if(_0x1ea6ce)return _0x1ea6ce;if(_0x22f2f6[_0xbf7c('0x44')]!='nothing'){return createEndUser(_0x3fb773,_0x38e51e,_0x31c1d4,_0x4645e9,_0x4de309,_0x22f2f6);}else{return{};}});break;case _0xbf7c('0x56'):_0x340511[_0xbf7c('0x4f')]='https://www.zohoapis.'+_0x38e51e+_0xbf7c('0x52')+_0x4645e9+'))';return getZohoUser(_0x340511,_0xbf7c('0x53'))[_0xbf7c('0x2b')](function(_0xc59d36){if(_0xc59d36)return _0xc59d36;if(_0x22f2f6[_0xbf7c('0x44')]!=_0xbf7c('0x54')){return createEndUser(_0x3fb773,_0x38e51e,_0x31c1d4,_0x4645e9,_0x4de309,_0x22f2f6);}else{return{};}});break;}}function getCall(_0x4695a8,_0x1c8e80,_0x149026,_0x4e3d9c,_0x4f9c0a,_0x5748d0,_0x4c32dd,_0xdc96a7){logger[_0xbf7c('0x38')]('Creating\x20new\x20call...');var _0x2dcb53={};_0x2dcb53['Owner']={'name':!_['isNil'](_0x4e3d9c['role'][_0xbf7c('0x1a')])&&!_['isNil'](_0x4e3d9c[_0xbf7c('0x3a')][_0xbf7c('0x1a')])&&_0x4e3d9c[_0xbf7c('0x3a')][_0xbf7c('0x1a')]===_0xbf7c('0x57')?_0x4e3d9c[_0xbf7c('0x45')][_0xbf7c('0x1a')]:!_[_0xbf7c('0x1d')](_0x4e3d9c[_0xbf7c('0x46')])?_0x4e3d9c[_0xbf7c('0x46')]+'\x20'+_0x4e3d9c['last_name']:_0x4e3d9c[_0xbf7c('0x47')],'id':_0x4e3d9c['id']};_0x2dcb53[_0xbf7c('0x58')]=intUtil[_0xbf7c('0x59')](_0x5748d0['Subjects'],_0x4c32dd,'\x20');_0x2dcb53['Description']=intUtil['getString'](_0x5748d0[_0xbf7c('0x5a')],_0x4c32dd,'\x0a');if(_0x4f9c0a[_0xbf7c('0x41')]===_0xbf7c('0x51')){_0x2dcb53[_0xbf7c('0x5b')]={'name':!_['isNil'](_0x4f9c0a[_0xbf7c('0x5c')])?_0x4f9c0a[_0xbf7c('0x5c')]:!_[_0xbf7c('0x1d')](_0x4f9c0a['First_Name'])?_0x4f9c0a[_0xbf7c('0x5d')]+'\x20'+_0x4f9c0a[_0xbf7c('0x5e')]:_0x4f9c0a[_0xbf7c('0x5e')],'id':_0x4f9c0a['id']};}if(_0x4f9c0a[_0xbf7c('0x41')]==='Leads'){_0x2dcb53[_0xbf7c('0x5f')]={'name':!_['isNil'](_0x4f9c0a[_0xbf7c('0x5c')])?_0x4f9c0a[_0xbf7c('0x5c')]:!_[_0xbf7c('0x1d')](_0x4f9c0a[_0xbf7c('0x5d')])?_0x4f9c0a[_0xbf7c('0x5d')]+'\x20'+_0x4f9c0a[_0xbf7c('0x5e')]:_0x4f9c0a[_0xbf7c('0x5e')],'id':_0x4f9c0a['id']};_0x2dcb53[_0xbf7c('0x60')]=_[_0xbf7c('0x43')](_0x4f9c0a[_0xbf7c('0x41')]);}if(_0x4c32dd['talktime']){_0x2dcb53[_0xbf7c('0x61')]=moment[_0xbf7c('0x62')](parseInt(_0x4c32dd['talktime'])*0x3e8)['format'](_0xbf7c('0x63'));}else if(_0x4c32dd[_0xbf7c('0x64')]&&_0x4c32dd['endtime']){_0x2dcb53[_0xbf7c('0x61')]=moment[_0xbf7c('0x62')](moment(_0x4c32dd[_0xbf7c('0x65')],'YYYY-MM-DDTHH:mm:ss')[_0xbf7c('0x66')](moment(_0x4c32dd[_0xbf7c('0x67')],_0xbf7c('0x68'))))[_0xbf7c('0x32')](_0xbf7c('0x63'));}switch(_0x4c32dd['lastevent']){case _0xbf7c('0x69'):_0x2dcb53[_0xbf7c('0x6a')]=_0xbf7c('0x6b');break;case _0xbf7c('0x6c'):case _0xbf7c('0x6d'):_0x2dcb53['Call_Result']='Answered';break;case _0xbf7c('0x6e'):_0x2dcb53[_0xbf7c('0x6a')]='Rejected';break;case _0xbf7c('0x6f'):_0x2dcb53[_0xbf7c('0x6a')]=_0xbf7c('0x70');break;case _0xbf7c('0x71'):_0x2dcb53[_0xbf7c('0x6a')]=_0xbf7c('0x72');default:}_0x2dcb53[_0xbf7c('0x73')]=(_0xdc96a7===_0xbf7c('0x74')?moment(_0x4c32dd[_0xbf7c('0x67')])['format'](_0xbf7c('0x68')):moment(_0x4c32dd[_0xbf7c('0x75')])['format'](_0xbf7c('0x68')))||moment()['format'](_0xbf7c('0x68'));_0x2dcb53['Call_Type']=_0xdc96a7||_0xbf7c('0x76');_0x2dcb53=_[_0xbf7c('0x77')](_0x2dcb53,getCustomFields(_0x5748d0[_0xbf7c('0x78')],_0x4c32dd));return request({'method':_0xbf7c('0x26'),'uri':'https://www.zohoapis.'+_0x1c8e80+_0xbf7c('0x79'),'headers':{'Authorization':_0xbf7c('0x48')+_0x4695a8},'body':{'data':[_0x2dcb53]},'json':!![]})[_0xbf7c('0x2b')](function(_0x5b792f){if(_0x5b792f&&_0x5b792f['data'][0x0][_0xbf7c('0x49')]===_0xbf7c('0x4a')){logger[_0xbf7c('0x38')](_0xbf7c('0x7a'));return{'id':_0x5b792f[_0xbf7c('0x40')][0x0][_0xbf7c('0x7b')]['id']};}})[_0xbf7c('0x3f')](function(_0x3cd2e5){logger[_0xbf7c('0x38')]('err',_0x3cd2e5[_0xbf7c('0x30')]);console[_0xbf7c('0x7c')](_0xbf7c('0x7d'),_0x3cd2e5);});}exports[_0xbf7c('0x7e')]=function(_0x3979d9,_0x5cd52e,_0x2ae9ec,_0x4880cd,_0x29e8b9,_0xb2c1d6){var _0x2534b7,_0x1f0f07,_0x3f2d45;_0xb2c1d6[_0xbf7c('0x7f')]=intUtil['stripTrailingSlash'](_0xb2c1d6[_0xbf7c('0x7f')]);_0xb2c1d6[_0xbf7c('0x80')]=intUtil['stripTrailingSlash'](_0xb2c1d6['serverUrl']);if(_0x29e8b9&&_0x29e8b9['monitor_format']){logger['info'](_0xbf7c('0x81'),_0xbf7c('0x82'));_0x5cd52e[_0xbf7c('0x83')]=_0xb2c1d6[_0xbf7c('0x80')]+'/api/voice/recordings/'+_0x5cd52e[_0xbf7c('0x84')]+_0xbf7c('0x85')+md5(_0x5cd52e[_0xbf7c('0x84')]);}else{_0x5cd52e[_0xbf7c('0x83')]='';}var _0x4ae8f5=_0xb2c1d6[_0xbf7c('0x7f')]===_0xbf7c('0x86')?'eu':'com';return getAccessToken(_0xb2c1d6)[_0xbf7c('0x2b')](function(_0x42af6d){_0x3f2d45=_0x42af6d;return getUser(_0x3f2d45,_0x4ae8f5,_0xb2c1d6,_0x4880cd[_0xbf7c('0x87')]);})[_0xbf7c('0x2b')](function(_0x1e3fd4){_0x2534b7=_0x1e3fd4;logger[_0xbf7c('0x38')]('The\x20User\x20ID\x20is:',_0x2534b7['id']);return getEndUser(_0x3f2d45,_0x4ae8f5,_0xb2c1d6,_0x5cd52e['calleridname'],_0x5cd52e[_0xbf7c('0x88')],_0x2534b7,_0x2ae9ec);})['then'](function(_0x369b95){_0x1f0f07=_0x369b95;return getCall(_0x3f2d45,_0x4ae8f5,_0xb2c1d6,_0x2534b7,_0x1f0f07,_0x2ae9ec,_0x5cd52e,'Inbound');})['then'](function(_0xe77c63){if(_0xe77c63){logger[_0xbf7c('0x38')](_0xbf7c('0x89'),_0xe77c63['id']);logger[_0xbf7c('0x38')](_0xbf7c('0x81'),_0xbf7c('0x8a'));emit(util['format']('user:%s',_0x4880cd['name']),_0xbf7c('0x8b'),{'uri':'https://crm.'+_0xb2c1d6[_0xbf7c('0x7f')]+_0xbf7c('0x8c')+_0xe77c63['id']});}})[_0xbf7c('0x3f')](function(_0x163fc7){logger[_0xbf7c('0x2e')]('[QUEUE]',JSON['stringify'](_0x163fc7));});};exports[_0xbf7c('0x74')]=function(_0x10c383,_0x1533f1,_0x3c92df,_0x1e7ab9,_0x40b635,_0x2b7b3d,_0x351a23){var _0x4693f0,_0x49ed37,_0x41efbb;_0x2b7b3d['host']=intUtil['stripTrailingSlash'](_0x2b7b3d[_0xbf7c('0x7f')]);_0x2b7b3d['serverUrl']=intUtil[_0xbf7c('0x8d')](_0x2b7b3d[_0xbf7c('0x80')]);if(_0x351a23&&_0x351a23['recordingFormat']&&_0x351a23[_0xbf7c('0x8e')]!==_0xbf7c('0x8f')){logger[_0xbf7c('0x38')](_0xbf7c('0x90'),_0xbf7c('0x82'));_0x1533f1[_0xbf7c('0x83')]=_0x2b7b3d[_0xbf7c('0x80')]+_0xbf7c('0x91')+_0x1533f1[_0xbf7c('0x84')]+_0xbf7c('0x85')+md5(_0x1533f1[_0xbf7c('0x84')]);}var _0x57a92e=_0x2b7b3d[_0xbf7c('0x7f')]===_0xbf7c('0x86')?'eu':_0xbf7c('0x92');return getAccessToken(_0x2b7b3d)[_0xbf7c('0x2b')](function(_0x4e3829){_0x41efbb=_0x4e3829;return getUser(_0x41efbb,_0x57a92e,_0x2b7b3d,_0x1e7ab9['email']);})[_0xbf7c('0x2b')](function(_0x51bafe){_0x4693f0=_0x51bafe;logger[_0xbf7c('0x38')](_0xbf7c('0x93'),_0x4693f0['id']);return getEndUser(_0x41efbb,_0x57a92e,_0x2b7b3d,_0x1533f1[_0xbf7c('0x94')],_0x1533f1[_0xbf7c('0x95')],_0x4693f0,_0x3c92df);})[_0xbf7c('0x2b')](function(_0x37e663){_0x49ed37=_0x37e663;return getCall(_0x41efbb,_0x57a92e,_0x2b7b3d,_0x4693f0,_0x49ed37,_0x3c92df,_0x1533f1,_0xbf7c('0x96'));})[_0xbf7c('0x2b')](function(_0xbf8d0c){if(_0xbf8d0c){logger[_0xbf7c('0x38')](_0xbf7c('0x89'),_0xbf8d0c['id']);logger[_0xbf7c('0x38')](_0xbf7c('0x90'),_0xbf7c('0x8a'));emit(util[_0xbf7c('0x32')](_0xbf7c('0x97'),_0x1e7ab9['name']),_0xbf7c('0x8b'),{'uri':_0xbf7c('0x98')+_0x2b7b3d[_0xbf7c('0x7f')]+_0xbf7c('0x8c')+_0xbf8d0c['id']});}})['catch'](function(_0x2dd184){logger[_0xbf7c('0x2e')](_0xbf7c('0x90'),JSON['stringify'](_0x2dd184));});};exports[_0xbf7c('0x99')]=function(_0x3ade4f,_0x180767,_0x625c6,_0x380dd7,_0x194bb9,_0x263e05){var _0x94fe48,_0x471210,_0x57bcab;_0x263e05['host']=intUtil['stripTrailingSlash'](_0x263e05['host']);_0x263e05['serverUrl']=intUtil[_0xbf7c('0x8d')](_0x263e05[_0xbf7c('0x80')]);if(_0x194bb9&&_0x194bb9[_0xbf7c('0x9a')]){logger[_0xbf7c('0x38')]('['+_0x180767[_0xbf7c('0x9b')][_0xbf7c('0x9c')]()+']',_0xbf7c('0x82'));_0x180767[_0xbf7c('0x83')]=_0x263e05[_0xbf7c('0x80')]+_0xbf7c('0x91')+_0x180767[_0xbf7c('0x84')]+'/downloads?type=uniqueid&token='+md5(_0x180767[_0xbf7c('0x84')]);}else{_0x180767[_0xbf7c('0x83')]='';}var _0x4c4126=_0x263e05[_0xbf7c('0x7f')]===_0xbf7c('0x86')?'eu':_0xbf7c('0x92');return getAccessToken(_0x263e05)[_0xbf7c('0x2b')](function(_0x24aca6){_0x57bcab=_0x24aca6;return getUser(_0x57bcab,_0x4c4126,_0x263e05);})['then'](function(_0x576afd){_0x94fe48=_0x576afd;logger[_0xbf7c('0x38')](_0xbf7c('0x93'),_0x94fe48['id']);return getEndUser(_0x57bcab,_0x4c4126,_0x263e05,_0x180767[_0xbf7c('0x9d')],_0x180767[_0xbf7c('0x88')],_0x94fe48,_0x625c6);})[_0xbf7c('0x2b')](function(_0x821490){_0x471210=_0x821490;return getCall(_0x57bcab,_0x4c4126,_0x263e05,_0x94fe48,_0x471210,_0x625c6,_0x180767,_0xbf7c('0x76'));})[_0xbf7c('0x2b')](function(_0x16dcf0){if(_0x16dcf0){logger[_0xbf7c('0x38')](_0xbf7c('0x89'),_0x16dcf0['id']);}})[_0xbf7c('0x3f')](function(_0x1bec10){logger['error']('['+_0x180767['lastevent']['toUpperCase']()+']',JSON['stringify'](_0x1bec10));});};
\ No newline at end of file
+var _0xcc6d=['defaults','localhost','emit','debug','[HTTP]','stringify','length','forEach','includes','string','type','idField','content','toString','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','clientSecret','refresh_token','add','seconds','error','Failing\x20creating\x20the\x20access_token','GET','format','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','info','Using\x20the\x20admin\x20account!','user','Administrator','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','then','data','enduserType','POST','/crm/v2/','moduleCreate','role','first_name','last_name','code','SUCCESS','details','startCase','Error:\x20','log','CREATE\x20ERROR','moduleSearch','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','Creating\x20new\x20call...','profile','administrator','Subject','getString','Subjects','Description','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','called','Call_Result','Called','connect','Answered','rejected','Rejected','abandoned','timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','merge','Fields','/crm/v2/Calls','err','stack','queue','host','serverUrl','stripTrailingSlash','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','email','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Outbound','https://crm.','unmanaged','monitor_format','toUpperCase','lastevent','lodash','md5','util','./util','moment','bluebird','../../../../config/logger','zoho','redis'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0xcc6d,0x1c8));var _0xdcc6=function(_0x2dc81b,_0xcd0da4){_0x2dc81b=_0x2dc81b-0x0;var _0x44d912=_0xcc6d[_0x2dc81b];return _0x44d912;};'use strict';var _=require(_0xdcc6('0x0'));var rp=require('request-promise');var md5=require(_0xdcc6('0x1'));var util=require(_0xdcc6('0x2'));var intUtil=require(_0xdcc6('0x3'));var moment=require(_0xdcc6('0x4'));var Redis=require('ioredis');var BPromise=require(_0xdcc6('0x5'));var config=require('../../../../config/environment');var logger=require(_0xdcc6('0x6'))(_0xdcc6('0x7'));config[_0xdcc6('0x8')]=_[_0xdcc6('0x9')](config['redis'],{'host':_0xdcc6('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xdcc6('0x8')]));function emit(_0xa357bb,_0x4be25b,_0x4b2ef8){io['to'](_0xa357bb)[_0xdcc6('0xb')](_0x4be25b,_0x4b2ef8);}function request(_0x6c0ea2){logger[_0xdcc6('0xc')](_0xdcc6('0xd'),JSON[_0xdcc6('0xe')](_0x6c0ea2));return rp(_0x6c0ea2);}function getCustomFields(_0x4dffe5,_0x301e8b){var _0x4ef2c1={};if(_0x4dffe5[_0xdcc6('0xf')]>0x0){_[_0xdcc6('0x10')](_0x4dffe5,function(_0x24f77a){if(_[_0xdcc6('0x11')]([_0xdcc6('0x12'),'picklist'],_0x24f77a[_0xdcc6('0x13')])&&_0x24f77a['idField']){_0x4ef2c1[_0x24f77a[_0xdcc6('0x14')]]=_0x24f77a[_0xdcc6('0x15')][_0xdcc6('0x16')]();}else if(_0x24f77a['type']==='variable'&&_0x24f77a['variableName']&&_0x24f77a[_0xdcc6('0x14')]&&_0x301e8b[_0x24f77a[_0xdcc6('0x17')]]){_0x4ef2c1[_0x24f77a[_0xdcc6('0x14')]]=_0x301e8b[_0x24f77a['variableName']][_0xdcc6('0x16')]();}else if(_0x24f77a['type']===_0xdcc6('0x18')&&_0x24f77a[_0xdcc6('0x19')]&&_0x24f77a[_0xdcc6('0x19')][_0xdcc6('0x1a')]&&_0x24f77a['idField']&&_0x301e8b[_0x24f77a[_0xdcc6('0x19')][_0xdcc6('0x1a')]['toLowerCase']()]){_0x4ef2c1[_0x24f77a[_0xdcc6('0x14')]]=_0x301e8b[_0x24f77a['Variable']['name'][_0xdcc6('0x1b')]()][_0xdcc6('0x16')]();}});}return _0x4ef2c1;}function getName(_0x547015){if(_0x547015[_0xdcc6('0x1c')]('\x20')>0x0){var _0x168183=_0x547015[_0xdcc6('0x1d')](/ (.+)/);if(_0x168183[0x1]){return _0x168183;}}return[_0x547015,_0x547015];}var accountsTokens={};function getAccessToken(_0x4b7e6a){return new Promise(function(_0x44acd4,_0x118953){if(!_[_0xdcc6('0x1e')](accountsTokens[_0x4b7e6a['id']])&&!_['isNil'](accountsTokens[_0x4b7e6a['id']][_0xdcc6('0x1f')])){if(moment()['isBefore'](accountsTokens[_0x4b7e6a['id']][_0xdcc6('0x20')])){_0x44acd4(accountsTokens[_0x4b7e6a['id']][_0xdcc6('0x1f')]);}}var _0x50ab44;switch(_0x4b7e6a[_0xdcc6('0x21')]){case'US':_0x50ab44=_0xdcc6('0x22');break;case'AU':_0x50ab44=_0xdcc6('0x23');break;case'EU':_0x50ab44=_0xdcc6('0x24');break;case'IN':_0x50ab44='https://accounts.zoho.in';break;case'CN':_0x50ab44=_0xdcc6('0x25');break;default:_0x50ab44=_0xdcc6('0x24');break;}var _0x4662d1={'method':'POST','uri':_0x50ab44+'/oauth/v2/token','qs':{'refresh_token':_0x4b7e6a['refreshToken'],'client_id':_0x4b7e6a['clientId'],'client_secret':_0x4b7e6a[_0xdcc6('0x26')],'grant_type':_0xdcc6('0x27')},'json':!![]};return rp(_0x4662d1)['then'](function(_0xbcbc4b){accountsTokens[_0x4b7e6a['id']]={'access_token':_0xbcbc4b[_0xdcc6('0x1f')],'expires_in':moment()[_0xdcc6('0x28')](_0xbcbc4b['expires_in'],_0xdcc6('0x29'))};_0x44acd4(_0xbcbc4b['access_token']);})['catch'](function(_0x526e04){logger[_0xdcc6('0x2a')](_0xdcc6('0x2b'),_0x526e04['stack']);_0x118953(_0x526e04);});});}function getUser(_0x4194ef,_0xe014fb,_0xaddbb8,_0x226a7d){logger['info']('Search\x20user');return request({'method':_0xdcc6('0x2c'),'uri':util[_0xdcc6('0x2d')](_0xdcc6('0x2e'),_0xe014fb),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0xdcc6('0x2f')+_0x4194ef},'json':!![]})['then'](function(_0x354196){if(_0x354196[_0xdcc6('0x30')]){var _0x1eb29c=-0x1;if(_[_0xdcc6('0x31')](_0x354196[_0xdcc6('0x30')])){if(!_[_0xdcc6('0x1e')](_0x226a7d)){_0x1eb29c=_[_0xdcc6('0x32')](_0x354196[_0xdcc6('0x30')],function(_0x5cb4d4){return _0x5cb4d4['email']===_0x226a7d;});}if(_0x1eb29c>=0x0){logger[_0xdcc6('0x33')]('Agent\x20found!');}else{logger[_0xdcc6('0x33')](_0xdcc6('0x34'));_0x1eb29c=_[_0xdcc6('0x32')](_0x354196[_0xdcc6('0x30')],function(_0xb5c79d){return _0xb5c79d['profile']['name']==='Administrator';});}return _0x354196[_0xdcc6('0x30')][_0x1eb29c];}else{if(_0x354196[_0xdcc6('0x35')]['profile'][_0xdcc6('0x1a')]===_0xdcc6('0x36')){logger[_0xdcc6('0x33')](_0xdcc6('0x34'));user=_0x354196[_0xdcc6('0x35')];return user;}else{logger[_0xdcc6('0x2a')](_0xdcc6('0x37'),JSON['stringify'](_0x354196));throw new Error(_0xdcc6('0x38')+JSON[_0xdcc6('0xe')](_0x354196));}}}else{logger[_0xdcc6('0x2a')](_0xdcc6('0x37'),JSON[_0xdcc6('0xe')](_0x354196));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0xdcc6('0xe')](_0x354196));}})[_0xdcc6('0x39')](function(_0x334ee5){console[_0xdcc6('0x2a')](_0x334ee5);});}function getZohoUser(_0x1aa417,_0x490927){return new BPromise(function(_0x2efdce,_0x26c850){request(_0x1aa417)[_0xdcc6('0x3a')](function(_0x123b67){var _0x429535=null;if(_0x123b67){_0x429535=_0x123b67[_0xdcc6('0x3b')][0x0];_0x429535[_0xdcc6('0x3c')]=_0x490927;}_0x2efdce(_0x429535);})[_0xdcc6('0x39')](function(_0x5b2c3b){_0x26c850(_0x5b2c3b);});});}function createEndUser(_0x1c64f2,_0x9a2156,_0x5a7eac,_0x11dd13,_0x58b858,_0x272aad){var _0x5a7eac=getName(_0x5a7eac);return request({'method':_0xdcc6('0x3d'),'uri':'https://www.zohoapis.'+_0x9a2156+_0xdcc6('0x3e')+_['startCase'](_0x272aad[_0xdcc6('0x3f')])+'s','body':{'data':[{'Last_Name':_0x5a7eac[0x1],'First_Name':_0x5a7eac[0x0],'Phone':_0x11dd13,'Owner':{'name':!_[_0xdcc6('0x1e')](_0x58b858[_0xdcc6('0x40')][_0xdcc6('0x1a')])?_0x58b858['role']['name']:!_[_0xdcc6('0x1e')](_0x58b858['first_name'])?_0x58b858[_0xdcc6('0x41')]+'\x20'+_0x58b858['last_name']:_0x58b858[_0xdcc6('0x42')],'id':_0x58b858['id']}}]},'headers':{'Authorization':_0xdcc6('0x2f')+_0x1c64f2},'json':!![]})[_0xdcc6('0x3a')](function(_0x2a4b4d){if(_0x2a4b4d&&_0x2a4b4d[_0xdcc6('0x3b')][0x0][_0xdcc6('0x43')]===_0xdcc6('0x44')){var _0x432b92=_0x2a4b4d[_0xdcc6('0x3b')][0x0][_0xdcc6('0x45')];_0x432b92['enduserType']=_[_0xdcc6('0x46')](_0x272aad[_0xdcc6('0x3f')])+'s';return _0x432b92;}logger[_0xdcc6('0x2a')]('The\x20failing\x20result\x20is',JSON[_0xdcc6('0xe')](data));throw new Error(_0xdcc6('0x47')+JSON[_0xdcc6('0xe')](data));})[_0xdcc6('0x39')](function(_0x357c9e){console[_0xdcc6('0x48')](_0xdcc6('0x49'),_0x357c9e);});}function getEndUser(_0xa4ef03,_0x40aab6,_0x20729a,_0x5d5ffe,_0x29b63a,_0x27b28b,_0xaf1b5f){var _0x4d2706={'method':_0xdcc6('0x2c'),'uri':'','headers':{'Authorization':_0xdcc6('0x2f')+_0xa4ef03},'json':!![]};switch(_0xaf1b5f[_0xdcc6('0x4a')]){case'contact_lead':_0x4d2706[_0xdcc6('0x4b')]=_0xdcc6('0x4c')+_0x40aab6+_0xdcc6('0x4d')+_0x29b63a+'))';return getZohoUser(_0x4d2706,_0xdcc6('0x4e'))[_0xdcc6('0x3a')](function(_0x191313){if(_0x191313)return _0x191313;_0x4d2706[_0xdcc6('0x4b')]='https://www.zohoapis.'+_0x40aab6+_0xdcc6('0x4f')+_0x29b63a+'))';return getZohoUser(_0x4d2706,_0xdcc6('0x50'))[_0xdcc6('0x3a')](function(_0x2e9b53){if(_0x2e9b53)return _0x2e9b53;if(_0xaf1b5f[_0xdcc6('0x3f')]!=_0xdcc6('0x51')){return createEndUser(_0xa4ef03,_0x40aab6,_0x5d5ffe,_0x29b63a,_0x27b28b,_0xaf1b5f);}else{return{};}});});break;case _0xdcc6('0x52'):_0x4d2706['uri']=_0xdcc6('0x4c')+_0x40aab6+_0xdcc6('0x4d')+_0x29b63a+'))';return getZohoUser(_0x4d2706,_0xdcc6('0x4e'))['then'](function(_0x58ccea){if(_0x58ccea)return _0x58ccea;if(_0xaf1b5f[_0xdcc6('0x3f')]!='nothing'){return createEndUser(_0xa4ef03,_0x40aab6,_0x5d5ffe,_0x29b63a,_0x27b28b,_0xaf1b5f);}else{return{};}});break;case _0xdcc6('0x53'):_0x4d2706[_0xdcc6('0x4b')]='https://www.zohoapis.'+_0x40aab6+_0xdcc6('0x4f')+_0x29b63a+'))';return getZohoUser(_0x4d2706,_0xdcc6('0x50'))[_0xdcc6('0x3a')](function(_0x3f3b6d){if(_0x3f3b6d)return _0x3f3b6d;if(_0xaf1b5f['moduleCreate']!=_0xdcc6('0x51')){return createEndUser(_0xa4ef03,_0x40aab6,_0x5d5ffe,_0x29b63a,_0x27b28b,_0xaf1b5f);}else{return{};}});break;}}function getCall(_0x3ce465,_0x18ebdb,_0x475b08,_0x4e4cfe,_0x5992fa,_0x22c74a,_0x19f5a0,_0x38768e){logger[_0xdcc6('0x33')](_0xdcc6('0x54'));var _0x13e7d1={};_0x13e7d1['Owner']={'name':!_[_0xdcc6('0x1e')](_0x4e4cfe['role'][_0xdcc6('0x1a')])&&!_[_0xdcc6('0x1e')](_0x4e4cfe[_0xdcc6('0x55')]['name'])&&_0x4e4cfe['profile'][_0xdcc6('0x1a')]===_0xdcc6('0x56')?_0x4e4cfe[_0xdcc6('0x40')][_0xdcc6('0x1a')]:!_[_0xdcc6('0x1e')](_0x4e4cfe[_0xdcc6('0x41')])?_0x4e4cfe[_0xdcc6('0x41')]+'\x20'+_0x4e4cfe['last_name']:_0x4e4cfe[_0xdcc6('0x42')],'id':_0x4e4cfe['id']};_0x13e7d1[_0xdcc6('0x57')]=intUtil[_0xdcc6('0x58')](_0x22c74a[_0xdcc6('0x59')],_0x19f5a0,'\x20');_0x13e7d1[_0xdcc6('0x5a')]=intUtil[_0xdcc6('0x58')](_0x22c74a['Descriptions'],_0x19f5a0,'\x0a');if(_0x5992fa[_0xdcc6('0x3c')]===_0xdcc6('0x4e')){_0x13e7d1[_0xdcc6('0x5b')]={'name':!_[_0xdcc6('0x1e')](_0x5992fa[_0xdcc6('0x5c')])?_0x5992fa[_0xdcc6('0x5c')]:!_[_0xdcc6('0x1e')](_0x5992fa[_0xdcc6('0x5d')])?_0x5992fa[_0xdcc6('0x5d')]+'\x20'+_0x5992fa[_0xdcc6('0x5e')]:_0x5992fa[_0xdcc6('0x5e')],'id':_0x5992fa['id']};}if(_0x5992fa[_0xdcc6('0x3c')]===_0xdcc6('0x50')){_0x13e7d1[_0xdcc6('0x5f')]={'name':!_[_0xdcc6('0x1e')](_0x5992fa['Full_Name'])?_0x5992fa['Full_Name']:!_[_0xdcc6('0x1e')](_0x5992fa[_0xdcc6('0x5d')])?_0x5992fa[_0xdcc6('0x5d')]+'\x20'+_0x5992fa[_0xdcc6('0x5e')]:_0x5992fa[_0xdcc6('0x5e')],'id':_0x5992fa['id']};_0x13e7d1[_0xdcc6('0x60')]=_[_0xdcc6('0x46')](_0x5992fa[_0xdcc6('0x3c')]);}if(_0x19f5a0[_0xdcc6('0x61')]){_0x13e7d1[_0xdcc6('0x62')]=moment[_0xdcc6('0x63')](parseInt(_0x19f5a0[_0xdcc6('0x61')])*0x3e8)['format'](_0xdcc6('0x64'));}else if(_0x19f5a0[_0xdcc6('0x65')]&&_0x19f5a0[_0xdcc6('0x66')]){_0x13e7d1[_0xdcc6('0x62')]=moment[_0xdcc6('0x63')](moment(_0x19f5a0['endtime'],_0xdcc6('0x67'))[_0xdcc6('0x68')](moment(_0x19f5a0[_0xdcc6('0x69')],'YYYY-MM-DDTHH:mm:ss')))[_0xdcc6('0x2d')](_0xdcc6('0x64'));}switch(_0x19f5a0['lastevent']){case _0xdcc6('0x6a'):_0x13e7d1[_0xdcc6('0x6b')]=_0xdcc6('0x6c');break;case'complete':case _0xdcc6('0x6d'):_0x13e7d1['Call_Result']=_0xdcc6('0x6e');break;case _0xdcc6('0x6f'):_0x13e7d1[_0xdcc6('0x6b')]=_0xdcc6('0x70');break;case _0xdcc6('0x71'):_0x13e7d1[_0xdcc6('0x6b')]='Abandoned';break;case _0xdcc6('0x72'):_0x13e7d1[_0xdcc6('0x6b')]='Timeout';default:}_0x13e7d1[_0xdcc6('0x73')]=(_0x38768e===_0xdcc6('0x74')?moment(_0x19f5a0['starttime'])['format'](_0xdcc6('0x67')):moment(_0x19f5a0[_0xdcc6('0x75')])[_0xdcc6('0x2d')](_0xdcc6('0x67')))||moment()['format'](_0xdcc6('0x67'));_0x13e7d1[_0xdcc6('0x76')]=_0x38768e||'Inbound';_0x13e7d1=_[_0xdcc6('0x77')](_0x13e7d1,getCustomFields(_0x22c74a[_0xdcc6('0x78')],_0x19f5a0));return request({'method':_0xdcc6('0x3d'),'uri':_0xdcc6('0x4c')+_0x18ebdb+_0xdcc6('0x79'),'headers':{'Authorization':_0xdcc6('0x2f')+_0x3ce465},'body':{'data':[_0x13e7d1]},'json':!![]})[_0xdcc6('0x3a')](function(_0x146203){if(_0x146203&&_0x146203[_0xdcc6('0x3b')][0x0][_0xdcc6('0x43')]===_0xdcc6('0x44')){logger[_0xdcc6('0x33')]('Call\x20created!');return{'id':_0x146203['data'][0x0][_0xdcc6('0x45')]['id']};}})[_0xdcc6('0x39')](function(_0x2ca448){logger[_0xdcc6('0x33')](_0xdcc6('0x7a'),_0x2ca448[_0xdcc6('0x7b')]);console[_0xdcc6('0x48')](_0xdcc6('0x7a'),_0x2ca448);});}exports[_0xdcc6('0x7c')]=function(_0x2fcbc2,_0x50d018,_0x197691,_0x178c30,_0x43f212,_0x2c1fcf){var _0x201c1a,_0x3ef28a,_0x5a5820;_0x2c1fcf[_0xdcc6('0x7d')]=intUtil['stripTrailingSlash'](_0x2c1fcf[_0xdcc6('0x7d')]);_0x2c1fcf[_0xdcc6('0x7e')]=intUtil[_0xdcc6('0x7f')](_0x2c1fcf[_0xdcc6('0x7e')]);if(_0x43f212&&_0x43f212['monitor_format']){logger[_0xdcc6('0x33')]('[QUEUE]',_0xdcc6('0x80'));_0x50d018[_0xdcc6('0x81')]=_0x2c1fcf['serverUrl']+_0xdcc6('0x82')+_0x50d018[_0xdcc6('0x83')]+_0xdcc6('0x84')+md5(_0x50d018[_0xdcc6('0x83')]);}else{_0x50d018[_0xdcc6('0x81')]='';}var _0x257706=_0x2c1fcf[_0xdcc6('0x7d')]===_0xdcc6('0x85')?'eu':_0xdcc6('0x86');return getAccessToken(_0x2c1fcf)[_0xdcc6('0x3a')](function(_0x4601ae){_0x5a5820=_0x4601ae;return getUser(_0x5a5820,_0x257706,_0x2c1fcf,_0x178c30[_0xdcc6('0x87')]);})[_0xdcc6('0x3a')](function(_0x45d2fd){_0x201c1a=_0x45d2fd;logger['info']('The\x20User\x20ID\x20is:',_0x201c1a['id']);return getEndUser(_0x5a5820,_0x257706,_0x2c1fcf,_0x50d018[_0xdcc6('0x88')],_0x50d018[_0xdcc6('0x89')],_0x201c1a,_0x197691);})[_0xdcc6('0x3a')](function(_0x2b5e09){_0x3ef28a=_0x2b5e09;return getCall(_0x5a5820,_0x257706,_0x2c1fcf,_0x201c1a,_0x3ef28a,_0x197691,_0x50d018,_0xdcc6('0x8a'));})[_0xdcc6('0x3a')](function(_0x36cf87){if(_0x36cf87){logger[_0xdcc6('0x33')](_0xdcc6('0x8b'),_0x36cf87['id']);logger[_0xdcc6('0x33')]('[QUEUE]',_0xdcc6('0x8c'));emit(util[_0xdcc6('0x2d')](_0xdcc6('0x8d'),_0x178c30[_0xdcc6('0x1a')]),_0xdcc6('0x8e'),{'uri':'https://crm.'+_0x2c1fcf[_0xdcc6('0x7d')]+_0xdcc6('0x8f')+_0x36cf87['id']});}})[_0xdcc6('0x39')](function(_0x18a2e9){logger['error']('[QUEUE]',JSON[_0xdcc6('0xe')](_0x18a2e9));});};exports['outbound']=function(_0x56f943,_0x218b83,_0x190d79,_0x2f8529,_0x4bdc60,_0x1c51b6,_0x464a31){var _0x29d393,_0x34aa1a,_0x17fb7e;_0x1c51b6['host']=intUtil[_0xdcc6('0x7f')](_0x1c51b6[_0xdcc6('0x7d')]);_0x1c51b6['serverUrl']=intUtil[_0xdcc6('0x7f')](_0x1c51b6[_0xdcc6('0x7e')]);if(_0x464a31&&_0x464a31['recordingFormat']&&_0x464a31['recordingFormat']!==_0xdcc6('0x90')){logger['info'](_0xdcc6('0x91'),'Recording\x20is\x20enabled!');_0x218b83['recordingURL']=_0x1c51b6[_0xdcc6('0x7e')]+'/api/voice/recordings/'+_0x218b83['uniqueid']+_0xdcc6('0x84')+md5(_0x218b83[_0xdcc6('0x83')]);}var _0x12a043=_0x1c51b6[_0xdcc6('0x7d')]===_0xdcc6('0x85')?'eu':'com';return getAccessToken(_0x1c51b6)[_0xdcc6('0x3a')](function(_0x8aea19){_0x17fb7e=_0x8aea19;return getUser(_0x17fb7e,_0x12a043,_0x1c51b6,_0x2f8529[_0xdcc6('0x87')]);})[_0xdcc6('0x3a')](function(_0x1207db){_0x29d393=_0x1207db;logger[_0xdcc6('0x33')](_0xdcc6('0x92'),_0x29d393['id']);return getEndUser(_0x17fb7e,_0x12a043,_0x1c51b6,_0x218b83[_0xdcc6('0x93')],_0x218b83[_0xdcc6('0x94')],_0x29d393,_0x190d79);})[_0xdcc6('0x3a')](function(_0x331db9){_0x34aa1a=_0x331db9;return getCall(_0x17fb7e,_0x12a043,_0x1c51b6,_0x29d393,_0x34aa1a,_0x190d79,_0x218b83,_0xdcc6('0x95'));})[_0xdcc6('0x3a')](function(_0x35a60d){if(_0x35a60d){logger[_0xdcc6('0x33')]('The\x20Call\x20ID\x20is:',_0x35a60d['id']);logger[_0xdcc6('0x33')](_0xdcc6('0x91'),_0xdcc6('0x8c'));emit(util['format']('user:%s',_0x2f8529[_0xdcc6('0x1a')]),'trigger:browser:url',{'uri':_0xdcc6('0x96')+_0x1c51b6[_0xdcc6('0x7d')]+_0xdcc6('0x8f')+_0x35a60d['id']});}})[_0xdcc6('0x39')](function(_0xdff84e){logger[_0xdcc6('0x2a')]('[OUTBOUND]',JSON['stringify'](_0xdff84e));});};exports[_0xdcc6('0x97')]=function(_0x1fd6d5,_0x5d8ea3,_0x59bd9c,_0x1d4872,_0x431d16,_0x221643){var _0x33ced7,_0x517fd3,_0x232509;_0x221643[_0xdcc6('0x7d')]=intUtil[_0xdcc6('0x7f')](_0x221643[_0xdcc6('0x7d')]);_0x221643[_0xdcc6('0x7e')]=intUtil[_0xdcc6('0x7f')](_0x221643[_0xdcc6('0x7e')]);if(_0x431d16&&_0x431d16[_0xdcc6('0x98')]){logger[_0xdcc6('0x33')]('['+_0x5d8ea3['lastevent'][_0xdcc6('0x99')]()+']',_0xdcc6('0x80'));_0x5d8ea3[_0xdcc6('0x81')]=_0x221643[_0xdcc6('0x7e')]+'/api/voice/recordings/'+_0x5d8ea3[_0xdcc6('0x83')]+_0xdcc6('0x84')+md5(_0x5d8ea3[_0xdcc6('0x83')]);}else{_0x5d8ea3[_0xdcc6('0x81')]='';}var _0x56226e=_0x221643[_0xdcc6('0x7d')]==='zoho.eu'?'eu':_0xdcc6('0x86');return getAccessToken(_0x221643)['then'](function(_0x135166){_0x232509=_0x135166;return getUser(_0x232509,_0x56226e,_0x221643);})['then'](function(_0x4012fe){_0x33ced7=_0x4012fe;logger['info'](_0xdcc6('0x92'),_0x33ced7['id']);return getEndUser(_0x232509,_0x56226e,_0x221643,_0x5d8ea3['calleridname'],_0x5d8ea3[_0xdcc6('0x89')],_0x33ced7,_0x59bd9c);})[_0xdcc6('0x3a')](function(_0x4bebb4){_0x517fd3=_0x4bebb4;return getCall(_0x232509,_0x56226e,_0x221643,_0x33ced7,_0x517fd3,_0x59bd9c,_0x5d8ea3,_0xdcc6('0x8a'));})[_0xdcc6('0x3a')](function(_0x302243){if(_0x302243){logger[_0xdcc6('0x33')](_0xdcc6('0x8b'),_0x302243['id']);}})['catch'](function(_0x147c92){logger[_0xdcc6('0x2a')]('['+_0x5d8ea3[_0xdcc6('0x9a')][_0xdcc6('0x99')]()+']',JSON['stringify'](_0x147c92));});};
\ No newline at end of file
index dfc782d..40e76ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa32c=['data3','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2'];(function(_0x30604b,_0x1c9f43){var _0x7ce510=function(_0x2c02e5){while(--_0x2c02e5){_0x30604b['push'](_0x30604b['shift']());}};_0x7ce510(++_0x1c9f43);}(_0xa32c,0xad));var _0xca32=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xa32c[_0x397e5f];return _0x5302b8;};'use strict';var util=require(_0xca32('0x0'));var sh=require(_0xca32('0x1'));var Mustache=require(_0xca32('0x2'));var logger=require(_0xca32('0x3'))(_0xca32('0x4'));exports[_0xca32('0x5')]=function(_0x4dbb5c,_0x26d64e){var _0xeab992=_0x4dbb5c[_0xca32('0x6')]?_0x4dbb5c[_0xca32('0x6')]:'Script';var _0xfa3991=_0x4dbb5c[_0xca32('0x7')]?Mustache['render'](_0x4dbb5c['data3'],_0x26d64e):_0x26d64e;sh[_0xca32('0x5')](_0xfa3991,function(_0x22a0b9,_0x2e5179,_0x310ec7){if(_0x22a0b9!==0x0){logger[_0xca32('0x8')](util[_0xca32('0x9')](_0xca32('0xa'),_0xeab992,_0xfa3991,_0x22a0b9,_0x310ec7));}else{logger['info'](util['format'](_0xca32('0xb'),_0xeab992,_0xfa3991,_0x2e5179));}});};
\ No newline at end of file
+var _0xe37e=['render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','../../../../config/logger','trigger','exec','data2','Script','data3'];(function(_0x9be28f,_0x231334){var _0xa9f52d=function(_0x239dad){while(--_0x239dad){_0x9be28f['push'](_0x9be28f['shift']());}};_0xa9f52d(++_0x231334);}(_0xe37e,0x102));var _0xee37=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xe37e[_0x2763f2];return _0x3ef471;};'use strict';var util=require(_0xee37('0x0'));var sh=require(_0xee37('0x1'));var Mustache=require('mustache');var logger=require(_0xee37('0x2'))(_0xee37('0x3'));exports[_0xee37('0x4')]=function(_0x21278f,_0x5544d2){var _0x394d47=_0x21278f[_0xee37('0x5')]?_0x21278f[_0xee37('0x5')]:_0xee37('0x6');var _0x458fc0=_0x21278f[_0xee37('0x7')]?Mustache[_0xee37('0x8')](_0x21278f[_0xee37('0x7')],_0x5544d2):_0x5544d2;sh[_0xee37('0x4')](_0x458fc0,function(_0xe7afe7,_0x2122b3,_0xac7626){if(_0xe7afe7!==0x0){logger[_0xee37('0x9')](util[_0xee37('0xa')](_0xee37('0xb'),_0x394d47,_0x458fc0,_0xe7afe7,_0xac7626));}else{logger[_0xee37('0xc')](util[_0xee37('0xa')](_0xee37('0xd'),_0x394d47,_0x458fc0,_0x2122b3));}});};
\ No newline at end of file
index 5820fce..796984b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x357a=['object','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','mustache','../../../../config/logger','trigger','toUpperCase','data2','data5','headers','data6','parse','render','error','stack','data1','POST','PUT','data7','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify',',\x20request\x20body:\x20','body'];(function(_0x476b8a,_0x1bceec){var _0x55f2f8=function(_0x37c431){while(--_0x37c431){_0x476b8a['push'](_0x476b8a['shift']());}};_0x55f2f8(++_0x1bceec);}(_0x357a,0xe1));var _0xa357=function(_0x37c40c,_0x25ce65){_0x37c40c=_0x37c40c-0x0;var _0x18c9db=_0x357a[_0x37c40c];return _0x18c9db;};'use strict';var rp=require(_0xa357('0x0'));var util=require(_0xa357('0x1'));var _=require('lodash');var Mustache=require(_0xa357('0x2'));var logger=require(_0xa357('0x3'))(_0xa357('0x4'));exports['exec']=function(_0x5afcb8,_0x2c5d54){var _0x593797,_0x67602e;var _0x34810e={'method':_0x5afcb8['data1'][_0xa357('0x5')](),'uri':Mustache['render'](_0x5afcb8[_0xa357('0x6')],_0x2c5d54),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x5afcb8[_0xa357('0x7')])==='number'&&parseInt(_0x5afcb8['data5'])>=0x1&&parseInt(_0x5afcb8['data5'])<=0xa?parseInt(_0x5afcb8[_0xa357('0x7')])*0x3e8:0x5*0x3e8};try{_0x34810e[_0xa357('0x8')]=_0x5afcb8[_0xa357('0x9')]?JSON[_0xa357('0xa')](Mustache[_0xa357('0xb')](_0x5afcb8[_0xa357('0x9')],_0x2c5d54)):{};}catch(_0x53fc57){logger[_0xa357('0xc')](_0x53fc57[_0xa357('0xd')]);}switch(_0x5afcb8[_0xa357('0xe')]['toUpperCase']()){case'GET':case'DELETE':_0x593797=null;_0x34810e['qs']=_0x2c5d54;break;case _0xa357('0xf'):case _0xa357('0x10'):if(_0x5afcb8[_0xa357('0x11')]){try{_0x593797=JSON[_0xa357('0xa')](Mustache[_0xa357('0xb')](_0x5afcb8[_0xa357('0x11')],_0x2c5d54));_0x34810e['body']=_0x593797;}catch(_0x3d5804){logger[_0xa357('0xc')](_0x3d5804[_0xa357('0xd')]);logger['error']('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x593797=_0x2c5d54;_0x34810e['body']=_0x593797;}break;}logger['info'](util[_0xa357('0x12')](_0xa357('0x13'),_0x5afcb8[_0xa357('0xe')],_0x5afcb8[_0xa357('0x6')],JSON[_0xa357('0x14')](_0x34810e)));rp(_0x34810e)['then'](function(_0x32e5b3){_0x593797=!_['isNil'](_0x593797)?_0xa357('0x15')+_0x593797:'';_0x67602e=typeof _0x32e5b3[_0xa357('0x16')]===_0xa357('0x17')?JSON['stringify'](_0x32e5b3[_0xa357('0x16')]):_0x32e5b3[_0xa357('0x16')];logger[_0xa357('0x18')](util['format'](_0xa357('0x19'),_0x5afcb8[_0xa357('0xe')],_0x5afcb8['data2'],_0x32e5b3[_0xa357('0x1a')],_0x67602e));})[_0xa357('0x1b')](function(_0xccaf4b){logger[_0xa357('0xc')](util[_0xa357('0x12')](_0xa357('0x1c'),_0x5afcb8[_0xa357('0xe')],_0x5afcb8[_0xa357('0x6')],_0xccaf4b[_0xa357('0x1a')],_0xccaf4b[_0xa357('0x1d')],_0xccaf4b[_0xa357('0x1e')]));});};
\ No newline at end of file
+var _0x703f=['statusCode','name','util','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','render','data2','data5','data6','parse','error','DELETE','data7','body','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\x20request\x20body:\x20','object','format','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s'];(function(_0x2d9e27,_0x5965b2){var _0xd35381=function(_0x343d18){while(--_0x343d18){_0x2d9e27['push'](_0x2d9e27['shift']());}};_0xd35381(++_0x5965b2);}(_0x703f,0xf2));var _0xf703=function(_0x5455d7,_0x5e6868){_0x5455d7=_0x5455d7-0x0;var _0x374ba7=_0x703f[_0x5455d7];return _0x374ba7;};'use strict';var rp=require('request-promise');var util=require(_0xf703('0x0'));var _=require(_0xf703('0x1'));var Mustache=require(_0xf703('0x2'));var logger=require(_0xf703('0x3'))(_0xf703('0x4'));exports[_0xf703('0x5')]=function(_0xd5d8a1,_0x4112cd){var _0x3aca8e,_0x22f8de;var _0x1e7131={'method':_0xd5d8a1[_0xf703('0x6')][_0xf703('0x7')](),'uri':Mustache[_0xf703('0x8')](_0xd5d8a1[_0xf703('0x9')],_0x4112cd),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0xd5d8a1[_0xf703('0xa')])==='number'&&parseInt(_0xd5d8a1[_0xf703('0xa')])>=0x1&&parseInt(_0xd5d8a1[_0xf703('0xa')])<=0xa?parseInt(_0xd5d8a1[_0xf703('0xa')])*0x3e8:0x5*0x3e8};try{_0x1e7131['headers']=_0xd5d8a1[_0xf703('0xb')]?JSON[_0xf703('0xc')](Mustache[_0xf703('0x8')](_0xd5d8a1['data6'],_0x4112cd)):{};}catch(_0x5ed4e1){logger[_0xf703('0xd')](_0x5ed4e1['stack']);}switch(_0xd5d8a1[_0xf703('0x6')][_0xf703('0x7')]()){case'GET':case _0xf703('0xe'):_0x3aca8e=null;_0x1e7131['qs']=_0x4112cd;break;case'POST':case'PUT':if(_0xd5d8a1['data7']){try{_0x3aca8e=JSON[_0xf703('0xc')](Mustache[_0xf703('0x8')](_0xd5d8a1[_0xf703('0xf')],_0x4112cd));_0x1e7131['body']=_0x3aca8e;}catch(_0x78691f){logger[_0xf703('0xd')](_0x78691f['stack']);logger[_0xf703('0xd')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x3aca8e=_0x4112cd;_0x1e7131[_0xf703('0x10')]=_0x3aca8e;}break;}logger[_0xf703('0x11')](util['format'](_0xf703('0x12'),_0xd5d8a1[_0xf703('0x6')],_0xd5d8a1[_0xf703('0x9')],JSON[_0xf703('0x13')](_0x1e7131)));rp(_0x1e7131)[_0xf703('0x14')](function(_0x36605b){_0x3aca8e=!_[_0xf703('0x15')](_0x3aca8e)?_0xf703('0x16')+_0x3aca8e:'';_0x22f8de=typeof _0x36605b[_0xf703('0x10')]===_0xf703('0x17')?JSON[_0xf703('0x13')](_0x36605b[_0xf703('0x10')]):_0x36605b[_0xf703('0x10')];logger['info'](util[_0xf703('0x18')](_0xf703('0x19'),_0xd5d8a1[_0xf703('0x6')],_0xd5d8a1[_0xf703('0x9')],_0x36605b['statusCode'],_0x22f8de));})[_0xf703('0x1a')](function(_0x25ca45){logger['error'](util[_0xf703('0x18')](_0xf703('0x1b'),_0xd5d8a1['data1'],_0xd5d8a1[_0xf703('0x9')],_0x25ca45[_0xf703('0x1c')],_0x25ca45[_0xf703('0x1d')],_0x25ca45['message']));});};
\ No newline at end of file
index aaddc8d..5c1a99e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2d6=['routing','http','Request','request','debug','rpc','error','message','exports','../../config/logger'];(function(_0x32cbba,_0x4d537e){var _0x268e9d=function(_0x46aa11){while(--_0x46aa11){_0x32cbba['push'](_0x32cbba['shift']());}};_0x268e9d(++_0x4d537e);}(_0xd2d6,0x103));var _0x6d2d=function(_0x1eebbb,_0x245675){_0x1eebbb=_0x1eebbb-0x0;var _0x70be1a=_0xd2d6[_0x1eebbb];return _0x70be1a;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x6d2d('0x0'))(_0x6d2d('0x1'));var client=jayson['client'][_0x6d2d('0x2')]({'port':0x2329});client[_0x6d2d('0x3')]=function(_0x24a376,_0x62284f){return new BPromise(function(_0x28839b,_0x5f2518){return client[_0x6d2d('0x4')](_0x24a376,_0x62284f)['then'](function(_0x199f82){logger[_0x6d2d('0x5')](_0x6d2d('0x6'),_0x6d2d('0x1'),_0x24a376,_0x62284f,_0x199f82);if(_0x199f82[_0x6d2d('0x7')]){logger['error'](_0x6d2d('0x6'),_0x6d2d('0x1'),_0x24a376,_0x199f82[_0x6d2d('0x7')]['message'],_0x62284f);return _0x5f2518(_0x199f82['error'][_0x6d2d('0x8')]);}else{return _0x28839b(_0x199f82['result']);}})['catch'](function(_0x374082){logger[_0x6d2d('0x7')](_0x6d2d('0x6'),_0x6d2d('0x1'),_0x24a376,_0x374082,_0x62284f);return _0x5f2518(_0x374082);});});};module[_0x6d2d('0x9')]=client;
\ No newline at end of file
+var _0x381f=['exports','jayson/promise','bluebird','client','request','then','debug','rpc','routing','error','message','result','catch'];(function(_0x4011f6,_0x1991b1){var _0xda07fd=function(_0x2fc000){while(--_0x2fc000){_0x4011f6['push'](_0x4011f6['shift']());}};_0xda07fd(++_0x1991b1);}(_0x381f,0xd1));var _0xf381=function(_0x28ff0c,_0x56ed67){_0x28ff0c=_0x28ff0c-0x0;var _0x2c55bd=_0x381f[_0x28ff0c];return _0x2c55bd;};'use strict';var jayson=require(_0xf381('0x0'));var BPromise=require(_0xf381('0x1'));var logger=require('../../config/logger')('routing');var client=jayson[_0xf381('0x2')]['http']({'port':0x2329});client['Request']=function(_0x43352c,_0x4bb003){return new BPromise(function(_0x59ca19,_0x53a975){return client[_0xf381('0x3')](_0x43352c,_0x4bb003)[_0xf381('0x4')](function(_0xdee12e){logger[_0xf381('0x5')](_0xf381('0x6'),_0xf381('0x7'),_0x43352c,_0x4bb003,_0xdee12e);if(_0xdee12e[_0xf381('0x8')]){logger[_0xf381('0x8')](_0xf381('0x6'),_0xf381('0x7'),_0x43352c,_0xdee12e[_0xf381('0x8')][_0xf381('0x9')],_0x4bb003);return _0x53a975(_0xdee12e['error']['message']);}else{return _0x59ca19(_0xdee12e[_0xf381('0xa')]);}})[_0xf381('0xb')](function(_0x5e6949){logger[_0xf381('0x8')](_0xf381('0x6'),'routing',_0x43352c,_0x5e6949,_0x4bb003);return _0x53a975(_0x5e6949);});});};module[_0xf381('0xc')]=client;
\ No newline at end of file
index 6e5e8d4..ad8bea9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e6d=['refresh','getSettings','loginMailFrequency','log','bluebird','./realtime','./lib/email','./rpc/mailAccount','resolve','then','getMailAccounts'];(function(_0x40b493,_0x4050de){var _0x548365=function(_0x8ceba7){while(--_0x8ceba7){_0x40b493['push'](_0x40b493['shift']());}};_0x548365(++_0x4050de);}(_0x9e6d,0x1d2));var _0xd9e6=function(_0x203e50,_0xfc65e0){_0x203e50=_0x203e50-0x0;var _0x3329ba=_0x9e6d[_0x203e50];return _0x3329ba;};'use strict';var BPromise=require(_0xd9e6('0x0'));var server=require('./server');var Realtime=require(_0xd9e6('0x1'));var EmailChannel=require(_0xd9e6('0x2'));var mailAccount=require(_0xd9e6('0x3'));var setting=require('./rpc/setting');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xd9e6('0x4')]()[_0xd9e6('0x5')](mailAccount[_0xd9e6('0x6')]())[_0xd9e6('0x5')](realtime['initMailAccounts']())[_0xd9e6('0x5')](function(){email[_0xd9e6('0x7')](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)[_0xd9e6('0x5')](function(){return initRealtime();})[_0xd9e6('0x5')](function(){return setting[_0xd9e6('0x8')]();})['then'](function(_0x3f6229){return setInterval(initRealtime,_0x3f6229[_0xd9e6('0x9')]*0x3e8);})['catch'](function(_0x6430c2){console[_0xd9e6('0xa')](_0x6430c2);});}main();
\ No newline at end of file
+var _0xcc6d=['./rpc/mailAccount','resolve','then','getSettings','loginMailFrequency','catch','log','bluebird','./server','./realtime','./lib/email'];(function(_0x543a1e,_0x4569b0){var _0x4ef9a2=function(_0x3daa57){while(--_0x3daa57){_0x543a1e['push'](_0x543a1e['shift']());}};_0x4ef9a2(++_0x4569b0);}(_0xcc6d,0x1a9));var _0xdcc6=function(_0x551baf,_0x432a8c){_0x551baf=_0x551baf-0x0;var _0x185243=_0xcc6d[_0x551baf];return _0x185243;};'use strict';var BPromise=require(_0xdcc6('0x0'));var server=require(_0xdcc6('0x1'));var Realtime=require(_0xdcc6('0x2'));var EmailChannel=require(_0xdcc6('0x3'));var mailAccount=require(_0xdcc6('0x4'));var setting=require('./rpc/setting');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xdcc6('0x5')]()['then'](mailAccount['getMailAccounts']())[_0xdcc6('0x6')](realtime['initMailAccounts']())[_0xdcc6('0x6')](function(){email['refresh'](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)[_0xdcc6('0x6')](function(){return initRealtime();})['then'](function(){return setting[_0xdcc6('0x7')]();})[_0xdcc6('0x6')](function(_0x195e2a){return setInterval(initRealtime,_0x195e2a[_0xdcc6('0x8')]*0x3e8);})[_0xdcc6('0x9')](function(_0x534e17){console[_0xdcc6('0xa')](_0x534e17);});}main();
\ No newline at end of file
index 10e5521..f71ca32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa7=['active','Imap','total','isNil','mailAccount:update','prototype','refresh','hasOwnProperty','box','bind','handleImapEmail','end','error','handleImapError','status','disabled','messageStatus','handleImapBox','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','notify','then','Mail\x20accepted\x20from\x20routing','catch','handleImapEnd','lastSync','send','verifySmtp','Smtp','verified','verify','exports','lodash','moment','md5','ioredis','../../../config/environment','../../../config/logger','redis','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp','emit','name','key'];(function(_0x57a489,_0x189abc){var _0x1988a7=function(_0x2e9e03){while(--_0x2e9e03){_0x57a489['push'](_0x57a489['shift']());}};_0x1988a7(++_0x189abc);}(_0x9fa7,0xf2));var _0x79fa=function(_0x145eeb,_0x46819a){_0x145eeb=_0x145eeb-0x0;var _0x250d77=_0x9fa7[_0x145eeb];return _0x250d77;};'use strict';var _=require(_0x79fa('0x0'));var moment=require(_0x79fa('0x1'));var BPromise=require('bluebird');var md5=require(_0x79fa('0x2'));var Redis=require(_0x79fa('0x3'));var config=require(_0x79fa('0x4'));var logger=require(_0x79fa('0x5'))('email');config[_0x79fa('0x6')]=_['defaults'](config[_0x79fa('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x79fa('0x7'))(new Redis(config['redis']));var EmailImap=require(_0x79fa('0x8'));var EmailSmtp=require(_0x79fa('0x9'));var mailAccount=require(_0x79fa('0xa'));var md5Accounts={};function EmailChannel(_0x319343){logger[_0x79fa('0xb')]('start\x20email\x20channel');this[_0x79fa('0xc')]=_0x319343['mailAccounts'];this[_0x79fa('0xd')]={};this[_0x79fa('0xe')]=new EmailSmtp();}EmailChannel['prototype'][_0x79fa('0xf')]=function(_0x4ff67c){var _0x45ef48=this[_0x79fa('0xc')][_0x4ff67c];var _0x619e96={'id':_0x45ef48['id'],'name':_0x45ef48[_0x79fa('0x10')],'key':_0x45ef48[_0x79fa('0x11')],'active':_0x45ef48[_0x79fa('0x12')],'Imap':{'status':_0x45ef48['Imap']['status'],'messageStatus':_0x45ef48[_0x79fa('0x13')]['messageStatus'],'total':_0x45ef48[_0x79fa('0x13')][_0x79fa('0x14')]}};if(_[_0x79fa('0x15')](md5Accounts[_0x4ff67c])){md5Accounts[_0x4ff67c]={};}var _0x46d331=md5(JSON['stringify'](_0x619e96));if(md5Accounts[_0x4ff67c][_0x79fa('0x2')]!==_0x46d331){md5Accounts[_0x4ff67c][_0x79fa('0x2')]=_0x46d331;io[_0x79fa('0xf')](_0x79fa('0x16'),_0x619e96);}};EmailChannel[_0x79fa('0x17')][_0x79fa('0x18')]=function(_0x3de7d4){for(var _0x1b45ef in _0x3de7d4){if(_0x3de7d4[_0x79fa('0x19')](_0x1b45ef)){if(_0x3de7d4[_0x1b45ef][_0x79fa('0x13')]&&_0x3de7d4[_0x1b45ef][_0x79fa('0x12')]){var _0x389344=_0x3de7d4[_0x1b45ef]['Imap'];if(!this[_0x79fa('0xd')][_0x79fa('0x19')](_0x389344['id'])){this['imapAccounts'][_0x389344['id']]=new EmailImap(_0x389344,_0x3de7d4[_0x1b45ef]['email']);this['imapAccounts'][_0x389344['id']]['on'](_0x79fa('0x1a'),this['handleImapBox'][_0x79fa('0x1b')](this,_0x1b45ef));this[_0x79fa('0xd')][_0x389344['id']]['on']('email',this[_0x79fa('0x1c')][_0x79fa('0x1b')](this,_0x1b45ef));this[_0x79fa('0xd')][_0x389344['id']]['on'](_0x79fa('0x1d'),this['handleImapEnd'][_0x79fa('0x1b')](this,_0x1b45ef));this[_0x79fa('0xd')][_0x389344['id']]['on'](_0x79fa('0x1e'),this[_0x79fa('0x1f')][_0x79fa('0x1b')](this,_0x1b45ef));}}else{if(_['isNil'](this[_0x79fa('0xc')][_0x1b45ef][_0x79fa('0x13')])){this['mailAccounts'][_0x1b45ef]['Imap']={};}this[_0x79fa('0xc')][_0x1b45ef][_0x79fa('0x13')][_0x79fa('0x20')]=_0x79fa('0x21');this[_0x79fa('0xc')][_0x1b45ef][_0x79fa('0x13')][_0x79fa('0x22')]='';this[_0x79fa('0xf')](_0x1b45ef);}}}};EmailChannel[_0x79fa('0x17')][_0x79fa('0x23')]=function(_0x177995,_0x6b7abf){if(this[_0x79fa('0xc')][_0x177995]){this[_0x79fa('0xc')][_0x177995][_0x79fa('0x13')][_0x79fa('0x20')]=_0x79fa('0x24');this['mailAccounts'][_0x177995]['Imap'][_0x79fa('0x22')]=_0x6b7abf['name'];if(_0x6b7abf['messages']){this[_0x79fa('0xc')][_0x177995][_0x79fa('0x13')][_0x79fa('0x14')]=_0x6b7abf[_0x79fa('0x25')][_0x79fa('0x14')];}return this['emit'](_0x177995);}};EmailChannel[_0x79fa('0x17')]['handleImapEmail']=function(_0x2fb4aa,_0x5986dc){logger[_0x79fa('0xb')](_0x79fa('0x26'),_0x5986dc[_0x79fa('0x27')],_0x5986dc['lastName'],_0x5986dc['from'],_0x2fb4aa);if(this[_0x79fa('0xc')][_0x2fb4aa]){return mailAccount[_0x79fa('0x28')](_0x2fb4aa,_0x5986dc)[_0x79fa('0x29')](function(_0x44118b){if(_0x44118b){logger['info'](_0x79fa('0x2a'));}})[_0x79fa('0x2b')](function(_0x5aa17e){logger[_0x79fa('0x1e')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON['stringify'](_0x5aa17e));});}};EmailChannel[_0x79fa('0x17')][_0x79fa('0x2c')]=function(_0x241999){if(this['mailAccounts'][_0x241999]&&this[_0x79fa('0xc')][_0x241999][_0x79fa('0x13')]){if(this[_0x79fa('0xd')][this[_0x79fa('0xc')][_0x241999][_0x79fa('0x13')]['id']]){delete this[_0x79fa('0xd')][this[_0x79fa('0xc')][_0x241999]['Imap']['id']];}this[_0x79fa('0xc')][_0x241999][_0x79fa('0x13')][_0x79fa('0x2d')]=moment();this[_0x79fa('0xf')](_0x241999);}};EmailChannel[_0x79fa('0x17')][_0x79fa('0x1f')]=function(_0x1b0580,_0x2f6b11){if(this[_0x79fa('0xc')][_0x1b0580]){this[_0x79fa('0xc')][_0x1b0580][_0x79fa('0x13')][_0x79fa('0x20')]=_0x79fa('0x1e');this['mailAccounts'][_0x1b0580][_0x79fa('0x13')][_0x79fa('0x22')]=_0x2f6b11;return this[_0x79fa('0xf')](_0x1b0580);}};EmailChannel[_0x79fa('0x17')]['sendMail']=function(_0x151fb5,_0x427597){return this[_0x79fa('0xe')][_0x79fa('0x2e')](_0x151fb5,_0x427597);};EmailChannel[_0x79fa('0x17')][_0x79fa('0x2f')]=function(_0x1b2d6a){var _0x1baab7=this;if(this['mailAccounts'][_0x1b2d6a['id']]){if(_[_0x79fa('0x15')](this[_0x79fa('0xc')][_0x1b2d6a['id']][_0x79fa('0x30')])){this[_0x79fa('0xc')][_0x1b2d6a['id']][_0x79fa('0x30')]={};}this[_0x79fa('0xc')][_0x1b2d6a['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0x53c884,_0x163bab){return _0x1baab7[_0x79fa('0xe')]['verify'](_0x1b2d6a)[_0x79fa('0x29')](function(_0xce09a){_0x1baab7[_0x79fa('0xc')][_0x1b2d6a['id']]['Smtp'][_0x79fa('0x20')]=_0x79fa('0x31');_0x1baab7[_0x79fa('0xc')][_0x1b2d6a['id']][_0x79fa('0x30')]['messageStatus']='';_0x1baab7[_0x79fa('0xf')](_0x1b2d6a['id']);_0x53c884(_0xce09a);})['catch'](function(_0xdaa5b9){_0x1baab7[_0x79fa('0xc')][_0x1b2d6a['id']][_0x79fa('0x30')]['status']=_0x79fa('0x1e');_0x1baab7[_0x79fa('0xc')][_0x1b2d6a['id']]['Smtp'][_0x79fa('0x22')]=_0xdaa5b9;_0x1baab7['emit'](_0x1b2d6a['id']);_0x163bab(_0xdaa5b9);});});}return this[_0x79fa('0xe')][_0x79fa('0x32')](_0x1b2d6a);};module[_0x79fa('0x33')]=EmailChannel;
\ No newline at end of file
+var _0xa0c7=['hasOwnProperty','Imap','imapAccounts','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','from','notify','then','catch','sendMail','send','Smtp','lastSync','verify','verified','exports','lodash','bluebird','../../../config/environment','../../../config/logger','email','redis','socket.io-emitter','./imap','../rpc/mailAccount','info','mailAccounts','smtp','prototype','name','key','active','status','messageStatus','total','isNil','stringify','md5','emit','mailAccount:update'];(function(_0x5e3dfe,_0x26092e){var _0x907caf=function(_0x1d9690){while(--_0x1d9690){_0x5e3dfe['push'](_0x5e3dfe['shift']());}};_0x907caf(++_0x26092e);}(_0xa0c7,0x131));var _0x7a0c=function(_0x1492f2,_0x50e4c2){_0x1492f2=_0x1492f2-0x0;var _0x4a479b=_0xa0c7[_0x1492f2];return _0x4a479b;};'use strict';var _=require(_0x7a0c('0x0'));var moment=require('moment');var BPromise=require(_0x7a0c('0x1'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x7a0c('0x2'));var logger=require(_0x7a0c('0x3'))(_0x7a0c('0x4'));config['redis']=_['defaults'](config[_0x7a0c('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x7a0c('0x6'))(new Redis(config[_0x7a0c('0x5')]));var EmailImap=require(_0x7a0c('0x7'));var EmailSmtp=require('./smtp');var mailAccount=require(_0x7a0c('0x8'));var md5Accounts={};function EmailChannel(_0x365505){logger[_0x7a0c('0x9')]('start\x20email\x20channel');this[_0x7a0c('0xa')]=_0x365505[_0x7a0c('0xa')];this['imapAccounts']={};this[_0x7a0c('0xb')]=new EmailSmtp();}EmailChannel[_0x7a0c('0xc')]['emit']=function(_0xf4093c){var _0x26efdc=this[_0x7a0c('0xa')][_0xf4093c];var _0x954f36={'id':_0x26efdc['id'],'name':_0x26efdc[_0x7a0c('0xd')],'key':_0x26efdc[_0x7a0c('0xe')],'active':_0x26efdc[_0x7a0c('0xf')],'Imap':{'status':_0x26efdc['Imap'][_0x7a0c('0x10')],'messageStatus':_0x26efdc['Imap'][_0x7a0c('0x11')],'total':_0x26efdc['Imap'][_0x7a0c('0x12')]}};if(_[_0x7a0c('0x13')](md5Accounts[_0xf4093c])){md5Accounts[_0xf4093c]={};}var _0x3f59f9=md5(JSON[_0x7a0c('0x14')](_0x954f36));if(md5Accounts[_0xf4093c][_0x7a0c('0x15')]!==_0x3f59f9){md5Accounts[_0xf4093c][_0x7a0c('0x15')]=_0x3f59f9;io[_0x7a0c('0x16')](_0x7a0c('0x17'),_0x954f36);}};EmailChannel[_0x7a0c('0xc')]['refresh']=function(_0xc38f){for(var _0x228911 in _0xc38f){if(_0xc38f[_0x7a0c('0x18')](_0x228911)){if(_0xc38f[_0x228911]['Imap']&&_0xc38f[_0x228911][_0x7a0c('0xf')]){var _0x4e1059=_0xc38f[_0x228911][_0x7a0c('0x19')];if(!this[_0x7a0c('0x1a')][_0x7a0c('0x18')](_0x4e1059['id'])){this[_0x7a0c('0x1a')][_0x4e1059['id']]=new EmailImap(_0x4e1059,_0xc38f[_0x228911][_0x7a0c('0x4')]);this[_0x7a0c('0x1a')][_0x4e1059['id']]['on']('box',this[_0x7a0c('0x1b')][_0x7a0c('0x1c')](this,_0x228911));this[_0x7a0c('0x1a')][_0x4e1059['id']]['on'](_0x7a0c('0x4'),this[_0x7a0c('0x1d')][_0x7a0c('0x1c')](this,_0x228911));this[_0x7a0c('0x1a')][_0x4e1059['id']]['on'](_0x7a0c('0x1e'),this[_0x7a0c('0x1f')][_0x7a0c('0x1c')](this,_0x228911));this['imapAccounts'][_0x4e1059['id']]['on'](_0x7a0c('0x20'),this[_0x7a0c('0x21')][_0x7a0c('0x1c')](this,_0x228911));}}else{if(_[_0x7a0c('0x13')](this[_0x7a0c('0xa')][_0x228911][_0x7a0c('0x19')])){this[_0x7a0c('0xa')][_0x228911][_0x7a0c('0x19')]={};}this[_0x7a0c('0xa')][_0x228911]['Imap'][_0x7a0c('0x10')]='disabled';this[_0x7a0c('0xa')][_0x228911][_0x7a0c('0x19')][_0x7a0c('0x11')]='';this[_0x7a0c('0x16')](_0x228911);}}}};EmailChannel['prototype']['handleImapBox']=function(_0x3d7fd1,_0x218c36){if(this[_0x7a0c('0xa')][_0x3d7fd1]){this['mailAccounts'][_0x3d7fd1][_0x7a0c('0x19')]['status']='connected';this[_0x7a0c('0xa')][_0x3d7fd1][_0x7a0c('0x19')][_0x7a0c('0x11')]=_0x218c36[_0x7a0c('0xd')];if(_0x218c36[_0x7a0c('0x22')]){this['mailAccounts'][_0x3d7fd1][_0x7a0c('0x19')]['total']=_0x218c36[_0x7a0c('0x22')][_0x7a0c('0x12')];}return this[_0x7a0c('0x16')](_0x3d7fd1);}};EmailChannel[_0x7a0c('0xc')][_0x7a0c('0x1d')]=function(_0x3250c8,_0x10e408){logger[_0x7a0c('0x9')](_0x7a0c('0x23'),_0x10e408['firstName'],_0x10e408['lastName'],_0x10e408[_0x7a0c('0x24')],_0x3250c8);if(this[_0x7a0c('0xa')][_0x3250c8]){return mailAccount[_0x7a0c('0x25')](_0x3250c8,_0x10e408)[_0x7a0c('0x26')](function(_0x349c0a){if(_0x349c0a){logger['info']('Mail\x20accepted\x20from\x20routing');}})[_0x7a0c('0x27')](function(_0x3ce96e){logger[_0x7a0c('0x20')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x7a0c('0x14')](_0x3ce96e));});}};EmailChannel[_0x7a0c('0xc')][_0x7a0c('0x1f')]=function(_0x48d563){if(this[_0x7a0c('0xa')][_0x48d563]&&this[_0x7a0c('0xa')][_0x48d563][_0x7a0c('0x19')]){if(this[_0x7a0c('0x1a')][this[_0x7a0c('0xa')][_0x48d563][_0x7a0c('0x19')]['id']]){delete this[_0x7a0c('0x1a')][this[_0x7a0c('0xa')][_0x48d563][_0x7a0c('0x19')]['id']];}this['mailAccounts'][_0x48d563][_0x7a0c('0x19')]['lastSync']=moment();this[_0x7a0c('0x16')](_0x48d563);}};EmailChannel['prototype'][_0x7a0c('0x21')]=function(_0x183133,_0x2b7f58){if(this[_0x7a0c('0xa')][_0x183133]){this[_0x7a0c('0xa')][_0x183133]['Imap'][_0x7a0c('0x10')]=_0x7a0c('0x20');this['mailAccounts'][_0x183133]['Imap'][_0x7a0c('0x11')]=_0x2b7f58;return this[_0x7a0c('0x16')](_0x183133);}};EmailChannel['prototype'][_0x7a0c('0x28')]=function(_0x3fbe3d,_0x1d0db6){return this[_0x7a0c('0xb')][_0x7a0c('0x29')](_0x3fbe3d,_0x1d0db6);};EmailChannel[_0x7a0c('0xc')]['verifySmtp']=function(_0x3dda8b){var _0x34b585=this;if(this[_0x7a0c('0xa')][_0x3dda8b['id']]){if(_[_0x7a0c('0x13')](this[_0x7a0c('0xa')][_0x3dda8b['id']][_0x7a0c('0x2a')])){this[_0x7a0c('0xa')][_0x3dda8b['id']]['Smtp']={};}this[_0x7a0c('0xa')][_0x3dda8b['id']][_0x7a0c('0x2a')][_0x7a0c('0x2b')]=moment();return new BPromise(function(_0x4beb9a,_0x3f2883){return _0x34b585[_0x7a0c('0xb')][_0x7a0c('0x2c')](_0x3dda8b)['then'](function(_0xabf182){_0x34b585['mailAccounts'][_0x3dda8b['id']][_0x7a0c('0x2a')]['status']=_0x7a0c('0x2d');_0x34b585[_0x7a0c('0xa')][_0x3dda8b['id']][_0x7a0c('0x2a')][_0x7a0c('0x11')]='';_0x34b585['emit'](_0x3dda8b['id']);_0x4beb9a(_0xabf182);})['catch'](function(_0x472c93){_0x34b585[_0x7a0c('0xa')][_0x3dda8b['id']][_0x7a0c('0x2a')][_0x7a0c('0x10')]='error';_0x34b585[_0x7a0c('0xa')][_0x3dda8b['id']][_0x7a0c('0x2a')][_0x7a0c('0x11')]=_0x472c93;_0x34b585[_0x7a0c('0x16')](_0x3dda8b['id']);_0x3f2883(_0x472c93);});});}return this['smtp'][_0x7a0c('0x2c')](_0x3dda8b);};module[_0x7a0c('0x2e')]=EmailChannel;
\ No newline at end of file
index 21f7b4e..c591abb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e7b=['handleMessageAttributes','handleMessageEnd','handleSimpleParser','stringify','textCode','hasOwnProperty','exports','path','util','imap','lodash','randomstring','simpleParser','Iconv','events','EventEmitter','../../../config/logger','email','INBOX','account','getAccount','once','ready','handleReady','bind','end','handleError','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','required','mailbox','handleOpenBox','prototype','emit','box','readUnseen','UNSEEN','handleReadUnseen','length','fetch','handleFetchMessage','error','handleFetchError','handleFetchEnd','closeBox','handleCloseBox','body','handleMessageBody','attributes'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x8e7b,0xb2));var _0xb8e7=function(_0x82129b,_0x484ae9){_0x82129b=_0x82129b-0x0;var _0x2ae5dc=_0x8e7b[_0x82129b];return _0x2ae5dc;};'use strict';var fs=require('fs');var path=require(_0xb8e7('0x0'));var util=require(_0xb8e7('0x1'));var Imap=require(_0xb8e7('0x2'));var _=require(_0xb8e7('0x3'));var rs=require(_0xb8e7('0x4'));var simpleParser=require('mailparser')[_0xb8e7('0x5')];var Iconv=require('iconv')[_0xb8e7('0x6')];var EventEmitter=require(_0xb8e7('0x7'))[_0xb8e7('0x8')];var utils=require('./utils');var logger=require(_0xb8e7('0x9'))(_0xb8e7('0xa'));function EmailImap(_0x268ef3,_0x3e54f0){this['mailbox']=_0xb8e7('0xb');this[_0xb8e7('0xc')]=this[_0xb8e7('0xd')](_0x268ef3,_0x3e54f0);this[_0xb8e7('0x2')]=new Imap(this[_0xb8e7('0xc')]);this['imap'][_0xb8e7('0xe')](_0xb8e7('0xf'),this[_0xb8e7('0x10')][_0xb8e7('0x11')](this));this[_0xb8e7('0x2')][_0xb8e7('0xe')](_0xb8e7('0x12'),this['handleEnd'][_0xb8e7('0x11')](this));this[_0xb8e7('0x2')]['on']('error',this[_0xb8e7('0x13')]['bind'](this));this[_0xb8e7('0x2')]['connect']();}util['inherits'](EmailImap,EventEmitter);EmailImap['prototype'][_0xb8e7('0xd')]=function(_0x42be6f,_0x3fb457){var _0x20ff5e={'connTimeout':_0x42be6f['connTimeout']?_0x42be6f[_0xb8e7('0x14')]*0x3e8:0x2710,'authTimeout':_0x42be6f[_0xb8e7('0x15')]?_0x42be6f[_0xb8e7('0x15')]*0x3e8:0x1388};if(_[_0xb8e7('0x16')](_0x42be6f[_0xb8e7('0x17')])){if(_0x42be6f[_0xb8e7('0x18')]){_0x20ff5e[_0xb8e7('0x19')]=_0x42be6f[_0xb8e7('0x19')];_0x20ff5e[_0xb8e7('0x1a')]=_0x42be6f['password'];}_0x20ff5e[_0xb8e7('0x1b')]=_0x42be6f[_0xb8e7('0x1b')];_0x20ff5e[_0xb8e7('0x1c')]=_0x42be6f[_0xb8e7('0x1c')]||0x3e1;if(_0x42be6f[_0xb8e7('0x1d')]){_0x20ff5e['tls']=!![];}else{_0x20ff5e[_0xb8e7('0x1d')]=![];_0x20ff5e['autotls']=_0xb8e7('0x1e');}}else{_0x20ff5e[_0xb8e7('0x19')]=_0x42be6f['user'];_0x20ff5e['password']=_0x42be6f['password'];_0x20ff5e[_0xb8e7('0x1b')]=utils['getHost'](_0x42be6f[_0xb8e7('0x17')]);_0x20ff5e['port']=0x3e1;_0x20ff5e[_0xb8e7('0x1d')]=!![];}_0x20ff5e[_0xb8e7('0xa')]=_0x3fb457||_0x42be6f[_0xb8e7('0x19')]||'anonymous@xcally.com';return _0x20ff5e;};EmailImap['prototype'][_0xb8e7('0x10')]=function(){this[_0xb8e7('0x2')]['openBox'](this[_0xb8e7('0x1f')],![],this[_0xb8e7('0x20')][_0xb8e7('0x11')](this));};EmailImap[_0xb8e7('0x21')]['handleOpenBox']=function(_0x1862ff,_0x5a304e){if(_0x1862ff){this[_0xb8e7('0x13')](_0x1862ff,!![]);}else{this[_0xb8e7('0x22')](_0xb8e7('0x23'),_0x5a304e);this[_0xb8e7('0x24')]();}};EmailImap[_0xb8e7('0x21')]['handleCloseBox']=function(_0x15b316){if(_0x15b316){this[_0xb8e7('0x13')](_0x15b316,!![]);}else{this[_0xb8e7('0x2')][_0xb8e7('0x12')]();}};EmailImap[_0xb8e7('0x21')][_0xb8e7('0x24')]=function(){this['imap']['search']([_0xb8e7('0x25')],this['handleReadUnseen'][_0xb8e7('0x11')](this));};EmailImap[_0xb8e7('0x21')][_0xb8e7('0x26')]=function(_0x1d9c61,_0x34eee8){if(_0x1d9c61){this['handleError'](_0x1d9c61,!![]);}else{if(_0x34eee8[_0xb8e7('0x27')]){try{var _0x44c90c=this['imap'][_0xb8e7('0x28')](_0x34eee8,{'bodies':'','markSeen':!![]});_0x44c90c['on']('message',this[_0xb8e7('0x29')][_0xb8e7('0x11')](this));_0x44c90c[_0xb8e7('0xe')](_0xb8e7('0x2a'),this[_0xb8e7('0x2b')]['bind'](this));_0x44c90c[_0xb8e7('0xe')](_0xb8e7('0x12'),this[_0xb8e7('0x2c')][_0xb8e7('0x11')](this));}catch(_0x3ad56a){logger[_0xb8e7('0x2a')](_0x3ad56a);}}else{this[_0xb8e7('0x2')][_0xb8e7('0x2d')](!![],this[_0xb8e7('0x2e')]['bind'](this));}}};EmailImap[_0xb8e7('0x21')][_0xb8e7('0x29')]=function(_0x47afd9,_0x38bdc9){_0x47afd9['on'](_0xb8e7('0x2f'),this[_0xb8e7('0x30')][_0xb8e7('0x11')](this));_0x47afd9[_0xb8e7('0xe')](_0xb8e7('0x31'),this[_0xb8e7('0x32')]['bind'](this));_0x47afd9[_0xb8e7('0xe')]('end',this[_0xb8e7('0x33')]['bind'](this));};EmailImap[_0xb8e7('0x21')]['handleMessageBody']=function(_0x3ddff5,_0x315897){simpleParser(_0x3ddff5,{'Iconv':Iconv},this[_0xb8e7('0x34')][_0xb8e7('0x11')](this));};EmailImap['prototype']['handleMessageAttributes']=function(_0x38a605){};EmailImap[_0xb8e7('0x21')][_0xb8e7('0x33')]=function(){};EmailImap[_0xb8e7('0x21')][_0xb8e7('0x34')]=function(_0x37fc20,_0x2b903b){if(_0x37fc20){logger[_0xb8e7('0x2a')](_0x37fc20);}else{var _0x10c4bb=this;utils['parser'](this['account'],_0x2b903b,function(_0x460719){_0x10c4bb[_0xb8e7('0x22')](_0xb8e7('0xa'),_0x460719);});}};EmailImap[_0xb8e7('0x21')][_0xb8e7('0x2c')]=function(){this[_0xb8e7('0x2')][_0xb8e7('0x2d')](!![],this['handleCloseBox'][_0xb8e7('0x11')](this));};EmailImap[_0xb8e7('0x21')]['handleFetchError']=function(_0x2cb72d){this[_0xb8e7('0x13')](_0x2cb72d);this[_0xb8e7('0x2')][_0xb8e7('0x2d')](!![],this[_0xb8e7('0x2e')][_0xb8e7('0x11')](this));};EmailImap[_0xb8e7('0x21')]['handleEnd']=function(){this['emit'](_0xb8e7('0x12'));};EmailImap['prototype'][_0xb8e7('0x13')]=function(_0x23d629,_0x32cfb5){logger[_0xb8e7('0x2a')](_0xb8e7('0x13'),this[_0xb8e7('0xc')][_0xb8e7('0xa')],JSON[_0xb8e7('0x35')](_0x23d629));var _0x3a29b9='';if(_0x23d629){if(_0x23d629[_0xb8e7('0x36')]){_0x3a29b9=_0x23d629[_0xb8e7('0x36')];}else{for(var _0x254fbd in _0x23d629){if(_0x23d629[_0xb8e7('0x37')](_0x254fbd)){_0x3a29b9+=_['upperFirst'](_0x254fbd)+':\x20'+_0x23d629[_0x254fbd]+'\x0a';}}}}if(_0x32cfb5){this[_0xb8e7('0x2')][_0xb8e7('0x12')]();}else{this[_0xb8e7('0x22')](_0xb8e7('0x2a'),_0x3a29b9);this[_0xb8e7('0x22')]('end');}};module[_0xb8e7('0x38')]=EmailImap;
\ No newline at end of file
+var _0xd382=['body','handleMessageBody','handleMessageEnd','handleSimpleParser','handleMessageAttributes','parser','handleFetchEnd','closeBox','textCode','hasOwnProperty','upperFirst','path','util','imap','lodash','randomstring','mailparser','simpleParser','iconv','Iconv','events','email','mailbox','INBOX','account','once','handleReady','end','handleEnd','bind','error','connect','inherits','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','autotls','required','getHost','anonymous@xcally.com','openBox','handleOpenBox','handleError','emit','box','handleCloseBox','readUnseen','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError'];(function(_0x427c69,_0x2edde6){var _0x585e89=function(_0x49ece4){while(--_0x49ece4){_0x427c69['push'](_0x427c69['shift']());}};_0x585e89(++_0x2edde6);}(_0xd382,0x1b6));var _0x2d38=function(_0x593d6f,_0x1be44d){_0x593d6f=_0x593d6f-0x0;var _0x576270=_0xd382[_0x593d6f];return _0x576270;};'use strict';var fs=require('fs');var path=require(_0x2d38('0x0'));var util=require(_0x2d38('0x1'));var Imap=require(_0x2d38('0x2'));var _=require(_0x2d38('0x3'));var rs=require(_0x2d38('0x4'));var simpleParser=require(_0x2d38('0x5'))[_0x2d38('0x6')];var Iconv=require(_0x2d38('0x7'))[_0x2d38('0x8')];var EventEmitter=require(_0x2d38('0x9'))['EventEmitter'];var utils=require('./utils');var logger=require('../../../config/logger')(_0x2d38('0xa'));function EmailImap(_0x1e2919,_0x55ae65){this[_0x2d38('0xb')]=_0x2d38('0xc');this[_0x2d38('0xd')]=this['getAccount'](_0x1e2919,_0x55ae65);this['imap']=new Imap(this[_0x2d38('0xd')]);this[_0x2d38('0x2')][_0x2d38('0xe')]('ready',this[_0x2d38('0xf')]['bind'](this));this[_0x2d38('0x2')][_0x2d38('0xe')](_0x2d38('0x10'),this[_0x2d38('0x11')][_0x2d38('0x12')](this));this[_0x2d38('0x2')]['on'](_0x2d38('0x13'),this['handleError'][_0x2d38('0x12')](this));this[_0x2d38('0x2')][_0x2d38('0x14')]();}util[_0x2d38('0x15')](EmailImap,EventEmitter);EmailImap[_0x2d38('0x16')]['getAccount']=function(_0x1c7c1d,_0xe92882){var _0x4175cf={'connTimeout':_0x1c7c1d[_0x2d38('0x17')]?_0x1c7c1d[_0x2d38('0x17')]*0x3e8:0x2710,'authTimeout':_0x1c7c1d[_0x2d38('0x18')]?_0x1c7c1d[_0x2d38('0x18')]*0x3e8:0x1388};if(_[_0x2d38('0x19')](_0x1c7c1d[_0x2d38('0x1a')])){if(_0x1c7c1d[_0x2d38('0x1b')]){_0x4175cf[_0x2d38('0x1c')]=_0x1c7c1d[_0x2d38('0x1c')];_0x4175cf[_0x2d38('0x1d')]=_0x1c7c1d[_0x2d38('0x1d')];}_0x4175cf[_0x2d38('0x1e')]=_0x1c7c1d[_0x2d38('0x1e')];_0x4175cf['port']=_0x1c7c1d[_0x2d38('0x1f')]||0x3e1;if(_0x1c7c1d[_0x2d38('0x20')]){_0x4175cf['tls']=!![];}else{_0x4175cf[_0x2d38('0x20')]=![];_0x4175cf[_0x2d38('0x21')]=_0x2d38('0x22');}}else{_0x4175cf['user']=_0x1c7c1d[_0x2d38('0x1c')];_0x4175cf['password']=_0x1c7c1d['password'];_0x4175cf[_0x2d38('0x1e')]=utils[_0x2d38('0x23')](_0x1c7c1d[_0x2d38('0x1a')]);_0x4175cf[_0x2d38('0x1f')]=0x3e1;_0x4175cf[_0x2d38('0x20')]=!![];}_0x4175cf[_0x2d38('0xa')]=_0xe92882||_0x1c7c1d[_0x2d38('0x1c')]||_0x2d38('0x24');return _0x4175cf;};EmailImap[_0x2d38('0x16')][_0x2d38('0xf')]=function(){this['imap'][_0x2d38('0x25')](this['mailbox'],![],this[_0x2d38('0x26')]['bind'](this));};EmailImap[_0x2d38('0x16')][_0x2d38('0x26')]=function(_0x389c29,_0x10e283){if(_0x389c29){this[_0x2d38('0x27')](_0x389c29,!![]);}else{this[_0x2d38('0x28')](_0x2d38('0x29'),_0x10e283);this['readUnseen']();}};EmailImap[_0x2d38('0x16')][_0x2d38('0x2a')]=function(_0x34599a){if(_0x34599a){this[_0x2d38('0x27')](_0x34599a,!![]);}else{this[_0x2d38('0x2')][_0x2d38('0x10')]();}};EmailImap[_0x2d38('0x16')][_0x2d38('0x2b')]=function(){this['imap']['search'](['UNSEEN'],this[_0x2d38('0x2c')][_0x2d38('0x12')](this));};EmailImap[_0x2d38('0x16')]['handleReadUnseen']=function(_0x29a38c,_0x4b5891){if(_0x29a38c){this[_0x2d38('0x27')](_0x29a38c,!![]);}else{if(_0x4b5891[_0x2d38('0x2d')]){try{var _0x11e27b=this['imap'][_0x2d38('0x2e')](_0x4b5891,{'bodies':'','markSeen':!![]});_0x11e27b['on'](_0x2d38('0x2f'),this[_0x2d38('0x30')]['bind'](this));_0x11e27b[_0x2d38('0xe')](_0x2d38('0x13'),this[_0x2d38('0x31')][_0x2d38('0x12')](this));_0x11e27b[_0x2d38('0xe')](_0x2d38('0x10'),this['handleFetchEnd'][_0x2d38('0x12')](this));}catch(_0x240d02){logger[_0x2d38('0x13')](_0x240d02);}}else{this[_0x2d38('0x2')]['closeBox'](!![],this[_0x2d38('0x2a')][_0x2d38('0x12')](this));}}};EmailImap[_0x2d38('0x16')][_0x2d38('0x30')]=function(_0x233899,_0x1a689f){_0x233899['on'](_0x2d38('0x32'),this[_0x2d38('0x33')][_0x2d38('0x12')](this));_0x233899[_0x2d38('0xe')]('attributes',this['handleMessageAttributes'][_0x2d38('0x12')](this));_0x233899[_0x2d38('0xe')](_0x2d38('0x10'),this[_0x2d38('0x34')][_0x2d38('0x12')](this));};EmailImap[_0x2d38('0x16')][_0x2d38('0x33')]=function(_0x1f05d1,_0x40694f){simpleParser(_0x1f05d1,{'Iconv':Iconv},this[_0x2d38('0x35')][_0x2d38('0x12')](this));};EmailImap[_0x2d38('0x16')][_0x2d38('0x36')]=function(_0x48be91){};EmailImap[_0x2d38('0x16')][_0x2d38('0x34')]=function(){};EmailImap[_0x2d38('0x16')][_0x2d38('0x35')]=function(_0x55ca42,_0x290af4){if(_0x55ca42){logger[_0x2d38('0x13')](_0x55ca42);}else{var _0x213b07=this;utils[_0x2d38('0x37')](this[_0x2d38('0xd')],_0x290af4,function(_0x3beb74){_0x213b07[_0x2d38('0x28')](_0x2d38('0xa'),_0x3beb74);});}};EmailImap[_0x2d38('0x16')][_0x2d38('0x38')]=function(){this[_0x2d38('0x2')][_0x2d38('0x39')](!![],this[_0x2d38('0x2a')][_0x2d38('0x12')](this));};EmailImap['prototype'][_0x2d38('0x31')]=function(_0x1db297){this['handleError'](_0x1db297);this['imap'][_0x2d38('0x39')](!![],this[_0x2d38('0x2a')][_0x2d38('0x12')](this));};EmailImap['prototype'][_0x2d38('0x11')]=function(){this[_0x2d38('0x28')](_0x2d38('0x10'));};EmailImap['prototype']['handleError']=function(_0x2eeca7,_0x59de7d){logger[_0x2d38('0x13')](_0x2d38('0x27'),this[_0x2d38('0xd')]['email'],JSON['stringify'](_0x2eeca7));var _0x166af1='';if(_0x2eeca7){if(_0x2eeca7[_0x2d38('0x3a')]){_0x166af1=_0x2eeca7[_0x2d38('0x3a')];}else{for(var _0x555bd7 in _0x2eeca7){if(_0x2eeca7[_0x2d38('0x3b')](_0x555bd7)){_0x166af1+=_[_0x2d38('0x3c')](_0x555bd7)+':\x20'+_0x2eeca7[_0x555bd7]+'\x0a';}}}}if(_0x59de7d){this[_0x2d38('0x2')]['end']();}else{this[_0x2d38('0x28')](_0x2d38('0x13'),_0x166af1);this[_0x2d38('0x28')]('end');}};module['exports']=EmailImap;
\ No newline at end of file
index a6763a5..0e313c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e77=['prototype','verify','Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','send','createTransport','use','compile','sendMail','toString'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x8e77,0x1f2));var _0x78e7=function(_0x18a436,_0x1dbe06){_0x18a436=_0x18a436-0x0;var _0x5c2cf8=_0x8e77[_0x18a436];return _0x5c2cf8;};'use strict';var nodemailer=require(_0x78e7('0x0'));var BPromise=require(_0x78e7('0x1'));var inlineBase64=require(_0x78e7('0x2'));function EmailSmtp(){}EmailSmtp['prototype'][_0x78e7('0x3')]=function(_0x546ee6,_0x2680ac){return new BPromise(function(_0x2c366e,_0x245ce5){var _0x19529b=nodemailer[_0x78e7('0x4')](_0x546ee6);_0x19529b[_0x78e7('0x5')](_0x78e7('0x6'),inlineBase64());_0x19529b[_0x78e7('0x7')](_0x2680ac,function(_0x1dcbed,_0x1d7c6d){if(_0x1dcbed){_0x245ce5(_0x1dcbed[_0x78e7('0x8')]());}else{_0x2c366e(_0x1d7c6d);}});});};EmailSmtp[_0x78e7('0x9')][_0x78e7('0xa')]=function(_0x15b182){return new BPromise(function(_0x666d22,_0x500db6){var _0x126f15=nodemailer[_0x78e7('0x4')](_0x15b182);_0x126f15[_0x78e7('0xa')](function(_0x5a9d49,_0x3ca19e){if(_0x5a9d49){_0x500db6(_0x5a9d49[_0x78e7('0x8')]());}else{if(_0x3ca19e){_0x666d22(_0x3ca19e);}else{_0x500db6(_0x78e7('0xb'));}}});});};module[_0x78e7('0xc')]=EmailSmtp;
\ No newline at end of file
+var _0x21fd=['Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','toString','verify'];(function(_0x467428,_0x44244a){var _0x2161f1=function(_0x4e659b){while(--_0x4e659b){_0x467428['push'](_0x467428['shift']());}};_0x2161f1(++_0x44244a);}(_0x21fd,0x1e2));var _0xd21f=function(_0x262451,_0x3db971){_0x262451=_0x262451-0x0;var _0x5496c3=_0x21fd[_0x262451];return _0x5496c3;};'use strict';var nodemailer=require(_0xd21f('0x0'));var BPromise=require(_0xd21f('0x1'));var inlineBase64=require(_0xd21f('0x2'));function EmailSmtp(){}EmailSmtp[_0xd21f('0x3')][_0xd21f('0x4')]=function(_0x3c03d4,_0x5c334a){return new BPromise(function(_0x2cf312,_0x28183c){var _0x4d7e64=nodemailer[_0xd21f('0x5')](_0x3c03d4);_0x4d7e64[_0xd21f('0x6')](_0xd21f('0x7'),inlineBase64());_0x4d7e64['sendMail'](_0x5c334a,function(_0x3aec4f,_0x1380c5){if(_0x3aec4f){_0x28183c(_0x3aec4f[_0xd21f('0x8')]());}else{_0x2cf312(_0x1380c5);}});});};EmailSmtp[_0xd21f('0x3')][_0xd21f('0x9')]=function(_0x328db1){return new BPromise(function(_0x368948,_0xcf4a59){var _0x4cf804=nodemailer[_0xd21f('0x5')](_0x328db1);_0x4cf804[_0xd21f('0x9')](function(_0x31cbc8,_0x16dbcf){if(_0x31cbc8){_0xcf4a59(_0x31cbc8[_0xd21f('0x8')]());}else{if(_0x16dbcf){_0x368948(_0x16dbcf);}else{_0xcf4a59(_0xd21f('0xa'));}}});});};module[_0xd21f('0xb')]=EmailSmtp;
\ No newline at end of file
index fde9121..6a59d82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a18=['outlook.office365.com','lodash','randomstring','path','util','node-tnef','../../../config/logger','../../../config/environment','head','value','address','anonymous','name','substring','indexOf','split','length','Anonymous','pop','isEmpty','generate','@xcally.com','test','html','replace','includes','<img','attachments','forEach','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','originTo','email','message','originCc','bcc','type','filename','attachment-','%s-%s','now','join','root','server/files/attachments/','writeFileSync','content','push','contentType','headerLines','Auto-Submitted:\x20auto-replied','Precedence:\x20auto_reply','line','isAutoreply','from','subject','messageId','date','format','YYYY-MM-DD\x20HH:mm:ss','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','first','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365'];(function(_0x37f4f5,_0x345632){var _0x2f005b=function(_0x2a844a){while(--_0x2a844a){_0x37f4f5['push'](_0x37f4f5['shift']());}};_0x2f005b(++_0x345632);}(_0x9a18,0x187));var _0x89a1=function(_0xa4ea8d,_0x31624d){_0xa4ea8d=_0xa4ea8d-0x0;var _0x36379e=_0x9a18[_0xa4ea8d];return _0x36379e;};'use strict';var _=require(_0x89a1('0x0'));var moment=require('moment');var random=require(_0x89a1('0x1'));var fs=require('fs');var path=require(_0x89a1('0x2'));var util=require(_0x89a1('0x3'));var tnef=require(_0x89a1('0x4'));var logger=require(_0x89a1('0x5'))('email');var config=require(_0x89a1('0x6'));function getAddress(_0x2b7678){var _0x287f38=_[_0x89a1('0x7')](_0x2b7678[_0x89a1('0x8')]);return _0x287f38&&_0x287f38[_0x89a1('0x9')]?_0x287f38[_0x89a1('0x9')]:_0x89a1('0xa')+random['generate'](0x6)+'@xcally.com';}function getFirstName(_0x3bba21){var _0x4993c1=_[_0x89a1('0x7')](_0x3bba21[_0x89a1('0x8')]);if(_0x4993c1&&_0x4993c1[_0x89a1('0xb')]){if(_0x4993c1[_0x89a1('0xb')]==_0x4993c1[_0x89a1('0x9')]){return _0x4993c1[_0x89a1('0xb')][_0x89a1('0xc')](0x0,_0x4993c1[_0x89a1('0xb')][_0x89a1('0xd')]('@'));}var _0x19e611=_0x4993c1[_0x89a1('0xb')][_0x89a1('0xe')](/\s+/);return _0x19e611[_0x89a1('0xf')]>0x1?_0x19e611['slice'](0x0,-0x1)['join']('\x20'):_0x4993c1[_0x89a1('0xb')];}return _0x89a1('0x10');}function getLastName(_0x131704){var _0x16bba0=_['head'](_0x131704[_0x89a1('0x8')]);if(_0x16bba0&&_0x16bba0[_0x89a1('0xb')]){var _0x57287b=_0x16bba0[_0x89a1('0xb')][_0x89a1('0xe')](/\s+/);return _0x57287b[_0x89a1('0xf')]>0x1?_0x57287b[_0x89a1('0x11')]():'';}return'';}function getMails(_0x1f130e,_0x69dbd3){var _0x7a1409='';for(var _0x325a5a=0x0;_0x325a5a<_0x69dbd3['value'][_0x89a1('0xf')];_0x325a5a+=0x1){if(_0x69dbd3[_0x89a1('0x8')][_0x325a5a][_0x89a1('0x9')]!==_0x1f130e){if(!_[_0x89a1('0x12')](_0x7a1409)){_0x7a1409+=',';}_0x7a1409+=_0x69dbd3[_0x89a1('0x8')][_0x325a5a]['name']||_0x69dbd3[_0x89a1('0x8')][_0x325a5a][_0x89a1('0x9')]||'';_0x7a1409+='\x20<';_0x7a1409+=_0x69dbd3[_0x89a1('0x8')][_0x325a5a]['address']?_0x69dbd3[_0x89a1('0x8')][_0x325a5a][_0x89a1('0x9')]:_0x89a1('0xa')+random[_0x89a1('0x13')](0x6)+_0x89a1('0x14');_0x7a1409+='>';}}return _0x7a1409;}function parseEmail(_0xedc307,_0x4cd448,_0x3e3224){if(_0x4cd448['html']){var _0x2a082a=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x2a082a[_0x89a1('0x15')](_0x4cd448[_0x89a1('0x16')])){_0x4cd448['html']=_0x4cd448[_0x89a1('0x16')][_0x89a1('0x17')](_0x2a082a,'');}if(_0x4cd448[_0x89a1('0x16')][_0x89a1('0x18')](_0x89a1('0x19'))){var _0x31f91d=[];_0x4cd448[_0x89a1('0x1a')][_0x89a1('0x1b')](_0x10bd94=>{_0x31f91d['push'](_0x10bd94['filename']);});var _0x1d895e=/<img.*? _SRC(.*?)[^>]+>/g;var _0x1adefa=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x1f6b94=_0x4cd448[_0x89a1('0x16')][_0x89a1('0x17')](_0x1adefa,'_SRC');var _0x1330a6=_0x1f6b94['replace'](_0x1d895e,'_IMG');for(let _0x3ad0fe=0x0;_0x3ad0fe<_0x31f91d[_0x89a1('0xf')];_0x3ad0fe++){var _0x1d346a=_0x1330a6[_0x89a1('0x17')](_0x89a1('0x1c'),_0x89a1('0x1d')+_0x31f91d[_0x3ad0fe]+_0x89a1('0x1e'));_0x1330a6=_0x1d346a;}_0x4cd448[_0x89a1('0x16')]=_0x1330a6;}_0x3e3224[_0x89a1('0x1f')]=_0x4cd448['html'];}else{_0x3e3224[_0x89a1('0x1f')]=_0x4cd448[_0x89a1('0x20')];}if(_0x3e3224[_0x89a1('0x1f')]){_0x3e3224[_0x89a1('0x1f')]=_0x3e3224[_0x89a1('0x1f')][_0x89a1('0x17')](/<a\s+/gi,_0x89a1('0x21'));}if(_0x4cd448['to']){_0x3e3224['message'][_0x89a1('0x22')]=getMails(null,_0x4cd448['to']);var _0x452edb=getMails(_0xedc307[_0x89a1('0x23')],_0x4cd448['to']);if(!_['isEmpty'](_0x452edb)){_0x3e3224[_0x89a1('0x24')]['cc']+=_0x452edb;}}if(_0x4cd448['cc']){_0x3e3224[_0x89a1('0x24')][_0x89a1('0x25')]=getMails(null,_0x4cd448['cc']);var _0x3052d5=getMails(_0xedc307[_0x89a1('0x23')],_0x4cd448['cc']);if(!_[_0x89a1('0x12')](_0x3052d5)){if(!_[_0x89a1('0x12')](_0x3e3224[_0x89a1('0x24')]['cc'])){_0x3e3224[_0x89a1('0x24')]['cc']+=',';}_0x3e3224[_0x89a1('0x24')]['cc']+=_0x3052d5;}}if(!_[_0x89a1('0x18')](_0x3e3224[_0x89a1('0x24')][_0x89a1('0x22')],_0xedc307[_0x89a1('0x23')])&&!_[_0x89a1('0x18')](_0x3e3224[_0x89a1('0x24')][_0x89a1('0x25')],_0xedc307[_0x89a1('0x23')])){_0x3e3224['message'][_0x89a1('0x26')]=_0xedc307[_0x89a1('0x23')];}if(_0x4cd448[_0x89a1('0x1a')]&&_0x4cd448[_0x89a1('0x1a')][_0x89a1('0xf')]){_0x3e3224[_0x89a1('0x24')]['attach']=_0x4cd448[_0x89a1('0x1a')][_0x89a1('0xf')];for(var _0x480afa=0x0,_0x229382,_0x52e779,_0x435d95;_0x480afa<_0x4cd448[_0x89a1('0x1a')][_0x89a1('0xf')];_0x480afa+=0x1){if(_0x4cd448[_0x89a1('0x1a')][_0x480afa][_0x89a1('0x27')]==='attachment'){_0x435d95=_0x4cd448[_0x89a1('0x1a')][_0x480afa][_0x89a1('0x28')]||_0x89a1('0x29')+_0x480afa;_0x229382=util['format'](_0x89a1('0x2a'),Date[_0x89a1('0x2b')](),_0x435d95);_0x52e779=path[_0x89a1('0x2c')](config[_0x89a1('0x2d')],_0x89a1('0x2e'),_0x229382);fs[_0x89a1('0x2f')](_0x52e779,_0x4cd448[_0x89a1('0x1a')][_0x480afa][_0x89a1('0x30')]);_0x3e3224['message']['attachments'][_0x89a1('0x31')]({'name':_0x435d95,'basename':_0x229382,'type':_0x4cd448[_0x89a1('0x1a')][_0x480afa][_0x89a1('0x32')],'filepath':_0x52e779});}}}if(_0x4cd448['headerLines']&&_0x4cd448[_0x89a1('0x33')][_0x89a1('0xf')]>0x0){var _0x523a69=[_0x89a1('0x34'),'X-Auto-Response-Suppress:\x20All',_0x89a1('0x35')];for(var _0x702874=0x0;_0x702874<_0x4cd448[_0x89a1('0x33')]['length'];_0x702874++){var _0x499913=_[_0x89a1('0xd')](_0x523a69,_0x4cd448[_0x89a1('0x33')][_0x702874][_0x89a1('0x36')]);if(_0x499913>=0x0){_0x3e3224[_0x89a1('0x37')]=!![];}}}return _0x3e3224;}exports['parser']=function(_0x5bbe75,_0x17669a,_0x3b1a85){var _0x1fac58={'from':getAddress(_0x17669a[_0x89a1('0x38')]),'firstName':getFirstName(_0x17669a[_0x89a1('0x38')]),'lastName':getLastName(_0x17669a[_0x89a1('0x38')]),'mapKey':'email','message':{'from':getMails(_0x5bbe75[_0x89a1('0x23')],_0x17669a[_0x89a1('0x38')]),'to':_0x5bbe75[_0x89a1('0x23')],'cc':'','subject':_0x17669a[_0x89a1('0x39')]||'','messageId':_0x17669a[_0x89a1('0x3a')],'inReplyTo':_0x17669a['inReplyTo'],'sentAt':moment(_0x17669a[_0x89a1('0x3b')])[_0x89a1('0x3c')](_0x89a1('0x3d')),'attach':![],'attachments':[]}};if(!_0x17669a[_0x89a1('0x16')]&&!_0x17669a['textAsHtml']){var _0x3a344a=_[_0x89a1('0x3e')](_0x17669a[_0x89a1('0x1a')],{'contentType':'application/ms-tnef'});if(_0x3a344a[_0x89a1('0xf')]){logger[_0x89a1('0x3f')](util[_0x89a1('0x3c')](_0x89a1('0x40'),_0x17669a[_0x89a1('0x3a')]));tnef['parseBuffer'](_[_0x89a1('0x41')](_0x3a344a)[_0x89a1('0x30')],function(_0x1d96b6,_0x572a91){if(_0x572a91){_0x17669a[_0x89a1('0x16')]=_0x572a91['BodyHTML']||_0x89a1('0x42');if(_0x572a91['Attachments']){for(var _0x22c359=0x0;_0x22c359<_0x572a91[_0x89a1('0x43')]['length'];_0x22c359++){var _0x325f7f=_0x572a91[_0x89a1('0x43')][_0x22c359];_0x1fac58[_0x89a1('0x24')][_0x89a1('0x1a')][_0x89a1('0x31')]({'filename':_0x325f7f[_0x89a1('0x44')],'content':Buffer[_0x89a1('0x38')](_0x325f7f[_0x89a1('0x45')])});}}}_0x3b1a85(parseEmail(_0x5bbe75,_0x17669a,_0x1fac58));});}else{_0x17669a[_0x89a1('0x16')]=_0x89a1('0x42');_0x3b1a85(parseEmail(_0x5bbe75,_0x17669a,_0x1fac58));}}else{_0x3b1a85(parseEmail(_0x5bbe75,_0x17669a,_0x1fac58));}};exports[_0x89a1('0x46')]=function(_0xde5c45){switch(_0xde5c45){case'gmail':return _0x89a1('0x47');case _0x89a1('0x48'):return _0x89a1('0x49');case _0x89a1('0x4a'):return _0x89a1('0x4b');case _0x89a1('0x4c'):return _0x89a1('0x4d');}return'127.0.0.1';};
\ No newline at end of file
+var _0xb62e=['pop','isEmpty','anonymous','html','test','replace','includes','<img','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originCc','originTo','attachments','attach','type','attachment','%s-%s','now','root','writeFileSync','content','contentType','parser','from','subject','messageId','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','format','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','<p>Empty\x20message</p>','Attachments','Data','imap.gmail.com','yahoo','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','lodash','moment','randomstring','path','node-tnef','../../../config/logger','email','../../../config/environment','value','address','generate','@xcally.com','name','split','length','slice','join','Anonymous','head'];(function(_0x4f99a2,_0x1db834){var _0x497909=function(_0x4ad129){while(--_0x4ad129){_0x4f99a2['push'](_0x4f99a2['shift']());}};_0x497909(++_0x1db834);}(_0xb62e,0x1de));var _0xeb62=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xb62e[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xeb62('0x0'));var moment=require(_0xeb62('0x1'));var random=require(_0xeb62('0x2'));var fs=require('fs');var path=require(_0xeb62('0x3'));var util=require('util');var tnef=require(_0xeb62('0x4'));var logger=require(_0xeb62('0x5'))(_0xeb62('0x6'));var config=require(_0xeb62('0x7'));function getAddress(_0x3c7ad5){var _0x1ebdbb=_['head'](_0x3c7ad5[_0xeb62('0x8')]);return _0x1ebdbb&&_0x1ebdbb[_0xeb62('0x9')]?_0x1ebdbb[_0xeb62('0x9')]:'anonymous'+random[_0xeb62('0xa')](0x6)+_0xeb62('0xb');}function getFirstName(_0x1e10ae){var _0x84edee=_['head'](_0x1e10ae['value']);if(_0x84edee&&_0x84edee[_0xeb62('0xc')]){var _0x40584b=_0x84edee[_0xeb62('0xc')][_0xeb62('0xd')](/\s+/);return _0x40584b[_0xeb62('0xe')]?_0x40584b[_0xeb62('0xf')](0x0,-0x1)[_0xeb62('0x10')]('\x20'):_0x84edee[_0xeb62('0xc')];}return _0xeb62('0x11');}function getLastName(_0x17724e){var _0x4a493c=_[_0xeb62('0x12')](_0x17724e[_0xeb62('0x8')]);if(_0x4a493c&&_0x4a493c[_0xeb62('0xc')]){var _0x6822bc=_0x4a493c['name'][_0xeb62('0xd')](/\s+/);return _0x6822bc[_0xeb62('0xe')]>0x1?_0x6822bc[_0xeb62('0x13')]():'';}return'';}function getMails(_0x4da178,_0x26c3fd){var _0x195837='';for(var _0x2fd4c7=0x0;_0x2fd4c7<_0x26c3fd['value'][_0xeb62('0xe')];_0x2fd4c7+=0x1){if(_0x26c3fd[_0xeb62('0x8')][_0x2fd4c7][_0xeb62('0x9')]!==_0x4da178){if(!_[_0xeb62('0x14')](_0x195837)){_0x195837+=',';}_0x195837+=_0x26c3fd[_0xeb62('0x8')][_0x2fd4c7][_0xeb62('0xc')]||_0x26c3fd[_0xeb62('0x8')][_0x2fd4c7][_0xeb62('0x9')]||'';_0x195837+='\x20<';_0x195837+=_0x26c3fd[_0xeb62('0x8')][_0x2fd4c7][_0xeb62('0x9')]?_0x26c3fd[_0xeb62('0x8')][_0x2fd4c7][_0xeb62('0x9')]:_0xeb62('0x15')+random['generate'](0x6)+_0xeb62('0xb');_0x195837+='>';}}return _0x195837;}function parseEmail(_0x130e2f,_0x332396,_0xb44905){if(_0x332396[_0xeb62('0x16')]){var _0x24cbf3=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x24cbf3[_0xeb62('0x17')](_0x332396['html'])){_0x332396['html']=_0x332396[_0xeb62('0x16')][_0xeb62('0x18')](_0x24cbf3,'');}if(_0x332396[_0xeb62('0x16')][_0xeb62('0x19')](_0xeb62('0x1a'))){var _0x4cafcf=[];_0x332396['attachments'][_0xeb62('0x1b')](_0x132861=>{_0x4cafcf[_0xeb62('0x1c')](_0x132861[_0xeb62('0x1d')]);});var _0x55a169=/<img.*? _SRC(.*?)[^\>]+>/g;var _0x4e92f5=/src=\"data:image\/([a-zA-Z]*);base64,([^\"]*)\"/g;var _0x3ef988=_0x332396['html'][_0xeb62('0x18')](_0x4e92f5,'_SRC');var _0xfe3e16=_0x3ef988['replace'](_0x55a169,_0xeb62('0x1e'));for(let _0x6bfbbc=0x0;_0x6bfbbc<_0x4cafcf[_0xeb62('0xe')];_0x6bfbbc++){var _0x4e4268=_0xfe3e16[_0xeb62('0x18')](_0xeb62('0x1e'),_0xeb62('0x1f')+_0x4cafcf[_0x6bfbbc]+_0xeb62('0x20'));_0xfe3e16=_0x4e4268;}_0x332396[_0xeb62('0x16')]=_0xfe3e16;}_0xb44905[_0xeb62('0x21')]=_0x332396['html'];}else{_0xb44905[_0xeb62('0x21')]=_0x332396[_0xeb62('0x22')];}if(_0xb44905['body']){_0xb44905[_0xeb62('0x21')]=_0xb44905[_0xeb62('0x21')][_0xeb62('0x18')](/<a\s+/gi,_0xeb62('0x23'));}if(_0x332396['to']){_0xb44905[_0xeb62('0x24')]['originTo']=getMails(null,_0x332396['to']);var _0x4b58af=getMails(_0x130e2f[_0xeb62('0x6')],_0x332396['to']);if(!_[_0xeb62('0x14')](_0x4b58af)){_0xb44905[_0xeb62('0x24')]['cc']+=_0x4b58af;}}if(_0x332396['cc']){_0xb44905[_0xeb62('0x24')][_0xeb62('0x25')]=getMails(null,_0x332396['cc']);var _0x2ad3ec=getMails(_0x130e2f[_0xeb62('0x6')],_0x332396['cc']);if(!_['isEmpty'](_0x2ad3ec)){if(!_[_0xeb62('0x14')](_0xb44905['message']['cc'])){_0xb44905['message']['cc']+=',';}_0xb44905[_0xeb62('0x24')]['cc']+=_0x2ad3ec;}}if(!_[_0xeb62('0x19')](_0xb44905['message'][_0xeb62('0x26')],_0x130e2f['email'])&&!_[_0xeb62('0x19')](_0xb44905[_0xeb62('0x24')]['originCc'],_0x130e2f[_0xeb62('0x6')])){_0xb44905[_0xeb62('0x24')]['bcc']=_0x130e2f[_0xeb62('0x6')];}if(_0x332396[_0xeb62('0x27')]&&_0x332396[_0xeb62('0x27')][_0xeb62('0xe')]){_0xb44905['message'][_0xeb62('0x28')]=_0x332396[_0xeb62('0x27')]['length'];for(var _0x4acc96=0x0,_0x112cd7,_0x117d8c,_0x4e29a7;_0x4acc96<_0x332396[_0xeb62('0x27')][_0xeb62('0xe')];_0x4acc96+=0x1){if(_0x332396[_0xeb62('0x27')][_0x4acc96][_0xeb62('0x29')]===_0xeb62('0x2a')){_0x4e29a7=_0x332396[_0xeb62('0x27')][_0x4acc96][_0xeb62('0x1d')]||'attachment-'+_0x4acc96;_0x112cd7=util['format'](_0xeb62('0x2b'),Date[_0xeb62('0x2c')](),_0x4e29a7);_0x117d8c=path[_0xeb62('0x10')](config[_0xeb62('0x2d')],'server/files/attachments/',_0x112cd7);fs[_0xeb62('0x2e')](_0x117d8c,_0x332396['attachments'][_0x4acc96][_0xeb62('0x2f')]);_0xb44905[_0xeb62('0x24')][_0xeb62('0x27')][_0xeb62('0x1c')]({'name':_0x4e29a7,'basename':_0x112cd7,'type':_0x332396[_0xeb62('0x27')][_0x4acc96][_0xeb62('0x30')],'filepath':_0x117d8c});}}}return _0xb44905;}exports[_0xeb62('0x31')]=function(_0x40e3a0,_0x5e8ef8,_0x38f91b){var _0x3f1cd9={'from':getAddress(_0x5e8ef8[_0xeb62('0x32')]),'firstName':getFirstName(_0x5e8ef8[_0xeb62('0x32')]),'lastName':getLastName(_0x5e8ef8['from']),'mapKey':'email','message':{'from':getMails(_0x40e3a0[_0xeb62('0x6')],_0x5e8ef8[_0xeb62('0x32')]),'to':_0x40e3a0['email'],'cc':'','subject':_0x5e8ef8[_0xeb62('0x33')]||'','messageId':_0x5e8ef8[_0xeb62('0x34')],'inReplyTo':_0x5e8ef8['inReplyTo'],'sentAt':moment(_0x5e8ef8[_0xeb62('0x35')])['format'](_0xeb62('0x36')),'attach':![],'attachments':[]}};if(!_0x5e8ef8['html']&&!_0x5e8ef8[_0xeb62('0x22')]){var _0x5dde1d=_[_0xeb62('0x37')](_0x5e8ef8[_0xeb62('0x27')],{'contentType':_0xeb62('0x38')});if(_0x5dde1d['length']){logger['info'](util[_0xeb62('0x39')](_0xeb62('0x3a'),_0x5e8ef8[_0xeb62('0x34')]));tnef[_0xeb62('0x3b')](_[_0xeb62('0x3c')](_0x5dde1d)['content'],function(_0x29fdb8,_0x56efe0){if(_0x56efe0){_0x5e8ef8[_0xeb62('0x16')]=_0x56efe0['BodyHTML']||_0xeb62('0x3d');if(_0x56efe0['Attachments']){for(var _0x26c77d=0x0;_0x26c77d<_0x56efe0['Attachments'][_0xeb62('0xe')];_0x26c77d++){var _0x4624e7=_0x56efe0[_0xeb62('0x3e')][_0x26c77d];_0x3f1cd9[_0xeb62('0x24')][_0xeb62('0x27')][_0xeb62('0x1c')]({'filename':_0x4624e7['Title'],'content':new Buffer(_0x4624e7[_0xeb62('0x3f')])});}}}_0x38f91b(parseEmail(_0x40e3a0,_0x5e8ef8,_0x3f1cd9));});}else{_0x5e8ef8[_0xeb62('0x16')]='<p>Empty\x20message</p>';_0x38f91b(parseEmail(_0x40e3a0,_0x5e8ef8,_0x3f1cd9));}}else{_0x38f91b(parseEmail(_0x40e3a0,_0x5e8ef8,_0x3f1cd9));}};exports['getHost']=function(_0x5c21da){switch(_0x5c21da){case'gmail':return _0xeb62('0x40');case _0xeb62('0x41'):return'imap.mail.yahoo.com';case _0xeb62('0x42'):return _0xeb62('0x43');case _0xeb62('0x44'):return _0xeb62('0x45');}return _0xeb62('0x46');};
\ No newline at end of file
index 873543b..372a0f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e69=['SERV','active','Imap','lodash','name','Service','key'];(function(_0x51ea9e,_0x14d235){var _0x54e385=function(_0x73e739){while(--_0x73e739){_0x51ea9e['push'](_0x51ea9e['shift']());}};_0x54e385(++_0x14d235);}(_0x9e69,0x65));var _0x99e6=function(_0x548250,_0x2545e5){_0x548250=_0x548250-0x0;var _0x23b53f=_0x9e69[_0x548250];return _0x23b53f;};'use strict';var _=require(_0x99e6('0x0'));function MailAccount(_0x5e6ebc){this['id']=_0x5e6ebc['id']||0x0;this['name']=_0x5e6ebc[_0x99e6('0x1')]||_0x99e6('0x2');this[_0x99e6('0x3')]=_0x5e6ebc[_0x99e6('0x3')]||_0x99e6('0x4');this[_0x99e6('0x5')]=_0x5e6ebc[_0x99e6('0x5')]||![];this[_0x99e6('0x6')]=_0x5e6ebc['Imap']||[];this['Smtp']=_0x5e6ebc['Smtp']||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0xa830=['key','SERV','active','Imap','Smtp','exports','lodash','name','Service'];(function(_0x10052b,_0x23a631){var _0x4aedfb=function(_0x4ee12d){while(--_0x4ee12d){_0x10052b['push'](_0x10052b['shift']());}};_0x4aedfb(++_0x23a631);}(_0xa830,0xf9));var _0x0a83=function(_0x2c6484,_0x4fe72c){_0x2c6484=_0x2c6484-0x0;var _0x3b9d94=_0xa830[_0x2c6484];return _0x3b9d94;};'use strict';var _=require(_0x0a83('0x0'));function MailAccount(_0x460207){this['id']=_0x460207['id']||0x0;this[_0x0a83('0x1')]=_0x460207['name']||_0x0a83('0x2');this['key']=_0x460207[_0x0a83('0x3')]||_0x0a83('0x4');this[_0x0a83('0x5')]=_0x460207['active']||![];this[_0x0a83('0x6')]=_0x460207['Imap']||[];this[_0x0a83('0x7')]=_0x460207[_0x0a83('0x7')]||[];}module[_0x0a83('0x8')]=MailAccount;
\ No newline at end of file
index 56dad88..4a3f8f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f33=['exports','../model/mailAccount','mailAccounts','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','merge'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6f33,0xc9));var _0x36f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6f33[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var MailAccount=require(_0x36f3('0x0'));var Realtime=function(){this[_0x36f3('0x1')]={};};function freeIsNotKey(_0x21a407,_0x29e7e7,_0x2360f7){var _0x401e4c=_['mapKeys'](_0x21a407,function(_0x172e31,_0x335a52){return _0x172e31[_0x2360f7];});for(var _0x168fa2 in _0x29e7e7){if(_0x29e7e7[_0x36f3('0x2')](_0x168fa2)){if(!_0x401e4c[_0x168fa2]){delete _0x29e7e7[_0x168fa2];}}}}Realtime[_0x36f3('0x3')][_0x36f3('0x4')]=function(_0x679560,_0xfb00f3){for(var _0x31553d in _0xfb00f3){if(_0x679560['hasOwnProperty'](_0x31553d)){_0x679560[_0x31553d]=_0xfb00f3[_0x31553d];}}};Realtime[_0x36f3('0x3')][_0x36f3('0x5')]=function(){var _0x551cba=this;return function(_0x8c0818){if(_0x8c0818){freeIsNotKey(_0x8c0818,_0x551cba[_0x36f3('0x1')],'id');for(var _0x25d503=0x0,_0x361252={},_0x3d7b8b={};_0x25d503<_0x8c0818['length'];_0x25d503+=0x1){_0x361252=_0x8c0818[_0x25d503];if(_['isUndefined'](_0x551cba[_0x36f3('0x1')][_0x361252['id']])){_0x551cba['mailAccounts'][_0x361252['id']]=new MailAccount(_0x361252);}else{_[_0x36f3('0x6')](_0x551cba[_0x36f3('0x1')][_0x361252['id']],_0x361252);}}}return _0x551cba[_0x36f3('0x1')];};};module[_0x36f3('0x7')]=Realtime;
\ No newline at end of file
+var _0x2039=['../model/mailAccount','mapKeys','hasOwnProperty','mergeFromDatabase','prototype','initMailAccounts','mailAccounts','length','isUndefined','merge','exports','lodash'];(function(_0x221b8c,_0x2c7afc){var _0x3fab9f=function(_0x28bab0){while(--_0x28bab0){_0x221b8c['push'](_0x221b8c['shift']());}};_0x3fab9f(++_0x2c7afc);}(_0x2039,0x113));var _0x9203=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x2039[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x9203('0x0'));var MailAccount=require(_0x9203('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x334503,_0x33b4a6,_0xa93d2){var _0x31f596=_[_0x9203('0x2')](_0x334503,function(_0x81cddd,_0x5d70aa){return _0x81cddd[_0xa93d2];});for(var _0x23ab5f in _0x33b4a6){if(_0x33b4a6[_0x9203('0x3')](_0x23ab5f)){if(!_0x31f596[_0x23ab5f]){delete _0x33b4a6[_0x23ab5f];}}}}Realtime['prototype'][_0x9203('0x4')]=function(_0x173f48,_0x19779e){for(var _0x5b7bfa in _0x19779e){if(_0x173f48[_0x9203('0x3')](_0x5b7bfa)){_0x173f48[_0x5b7bfa]=_0x19779e[_0x5b7bfa];}}};Realtime[_0x9203('0x5')][_0x9203('0x6')]=function(){var _0x58e29b=this;return function(_0x10e048){if(_0x10e048){freeIsNotKey(_0x10e048,_0x58e29b[_0x9203('0x7')],'id');for(var _0x29e685=0x0,_0x14b6d1={},_0x1ae62a={};_0x29e685<_0x10e048[_0x9203('0x8')];_0x29e685+=0x1){_0x14b6d1=_0x10e048[_0x29e685];if(_[_0x9203('0x9')](_0x58e29b[_0x9203('0x7')][_0x14b6d1['id']])){_0x58e29b[_0x9203('0x7')][_0x14b6d1['id']]=new MailAccount(_0x14b6d1);}else{_[_0x9203('0xa')](_0x58e29b[_0x9203('0x7')][_0x14b6d1['id']],_0x14b6d1);}}}return _0x58e29b[_0x9203('0x7')];};};module[_0x9203('0xb')]=Realtime;
\ No newline at end of file
index 0397ca4..2e6b8b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x559f=['ListId','TemplateId','Imap','MailServerOut','notify','NotifyMailAccount','../client','Request','name','email','active','key'];(function(_0x4ecea4,_0x556e5d){var _0x483b05=function(_0x5a9bf5){while(--_0x5a9bf5){_0x4ecea4['push'](_0x4ecea4['shift']());}};_0x483b05(++_0x556e5d);}(_0x559f,0x102));var _0xf559=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x559f[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xf559('0x0'));exports['getMailAccounts']=function(){return function(){return client[_0xf559('0x1')]('GetMailAccount',{'options':{'attributes':['id',_0xf559('0x2'),'service',_0xf559('0x3'),_0xf559('0x4'),_0xf559('0x5'),_0xf559('0x6'),_0xf559('0x7')],'raw':![],'include':[{'model':'MailServerIn','as':_0xf559('0x8')},{'model':_0xf559('0x9'),'as':'Smtp'}]},'log':'getMailAccount'});};};exports[_0xf559('0xa')]=function(_0x55631f,_0x69d87c){return client[_0xf559('0x1')](_0xf559('0xb'),{'account':{'id':_0x55631f},'body':_0x69d87c,'log':_0xf559('0xb')});};
\ No newline at end of file
+var _0xf347=['MailServerOut','getMailAccount','notify','Request','NotifyMailAccount','../client','getMailAccounts','GetMailAccount','service','email','key','MailServerIn','Imap'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0xf347,0xa1));var _0x7f34=function(_0x19fe74,_0x270ad1){_0x19fe74=_0x19fe74-0x0;var _0x446cf3=_0xf347[_0x19fe74];return _0x446cf3;};'use strict';var client=require(_0x7f34('0x0'));exports[_0x7f34('0x1')]=function(){return function(){return client['Request'](_0x7f34('0x2'),{'options':{'attributes':['id','name',_0x7f34('0x3'),_0x7f34('0x4'),'active',_0x7f34('0x5'),'ListId','TemplateId'],'raw':![],'include':[{'model':_0x7f34('0x6'),'as':_0x7f34('0x7')},{'model':_0x7f34('0x8'),'as':'Smtp'}]},'log':_0x7f34('0x9')});};};exports[_0x7f34('0xa')]=function(_0x16d665,_0x5ea6b1){return client[_0x7f34('0xb')](_0x7f34('0xc'),{'account':{'id':_0x16d665},'body':_0x5ea6b1,'log':_0x7f34('0xc')});};
\ No newline at end of file
index ad97a80..52a54ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51a2=['loginMailFrequency','../client','getSettings','Request'];(function(_0x168463,_0x1c6e2c){var _0x1f3d27=function(_0x4fad35){while(--_0x4fad35){_0x168463['push'](_0x168463['shift']());}};_0x1f3d27(++_0x1c6e2c);}(_0x51a2,0xe5));var _0x251a=function(_0x677920,_0x1e3e6a){_0x677920=_0x677920-0x0;var _0x1c593b=_0x51a2[_0x677920];return _0x1c593b;};'use strict';var client=require(_0x251a('0x0'));exports[_0x251a('0x1')]=function(){return client[_0x251a('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x251a('0x3')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0x4aec=['../client','getSettings','Request','ShowSetting','loginMailFrequency','GetSettings'];(function(_0x29b066,_0x566d9a){var _0x2cfa72=function(_0x4159b1){while(--_0x4159b1){_0x29b066['push'](_0x29b066['shift']());}};_0x2cfa72(++_0x566d9a);}(_0x4aec,0x144));var _0xc4ae=function(_0x2d30d2,_0x2c1714){_0x2d30d2=_0x2d30d2-0x0;var _0x5e3c11=_0x4aec[_0x2d30d2];return _0x5e3c11;};'use strict';var client=require(_0xc4ae('0x0'));exports[_0xc4ae('0x1')]=function(){return client[_0xc4ae('0x2')](_0xc4ae('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xc4ae('0x4')]},'log':_0xc4ae('0x5')});};
\ No newline at end of file
index 1e209c5..c58ae4b 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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 c21a9f3..117eaae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cb3=['default','../../config/socketio','../../config/express','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','express','sticky-session','../../config/environment','createServer','timeout','port','defaults','redis','localhost','adapter','socket.io-redis','../../config/triggers'];(function(_0xec1289,_0x4fa82b){var _0x3e223c=function(_0x9752ec){while(--_0x9752ec){_0xec1289['push'](_0xec1289['shift']());}};_0x3e223c(++_0x4fa82b);}(_0x4cb3,0x169));var _0x34cb=function(_0x2a481f,_0x3fc350){_0x2a481f=_0x2a481f-0x0;var _0x4c8da6=_0x4cb3[_0x2a481f];return _0x4c8da6;};'use strict';var _=require(_0x34cb('0x0'));var http=require('http');var express=require(_0x34cb('0x1'));var sticky=require(_0x34cb('0x2'));var Redis=require('ioredis');var config=require(_0x34cb('0x3'));var app=express();var server=http[_0x34cb('0x4')](app);server[_0x34cb('0x5')]=0xdbba0;if(sticky['listen'](server,config[_0x34cb('0x6')])){var socketio=require('socket.io')(server,{'transports':['websocket','polling']});config['redis']=_[_0x34cb('0x7')](config[_0x34cb('0x8')],{'host':_0x34cb('0x9'),'port':0x18eb});socketio[_0x34cb('0xa')](require(_0x34cb('0xb'))({'pubClient':new Redis(config[_0x34cb('0x8')]),'subClient':new Redis(config['redis'])}));require(_0x34cb('0xc'))[_0x34cb('0xd')]();require(_0x34cb('0xe'))[_0x34cb('0xd')](socketio);require(_0x34cb('0xf'))[_0x34cb('0xd')](app);require(_0x34cb('0x10'))['default'](app);}else{server[_0x34cb('0x11')](_0x34cb('0x12'),function(){console[_0x34cb('0x13')](_0x34cb('0x14'),config['port']);});}exports=module[_0x34cb('0x15')]=app;
\ No newline at end of file
+var _0xf451=['socket.io','websocket','polling','defaults','redis','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/express','../../routes','once','listening','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','express','sticky-session','ioredis','../../config/environment','createServer','port'];(function(_0x5cdcc2,_0x951289){var _0x3ab96f=function(_0x73746e){while(--_0x73746e){_0x5cdcc2['push'](_0x5cdcc2['shift']());}};_0x3ab96f(++_0x951289);}(_0xf451,0xd6));var _0x1f45=function(_0x46db68,_0x37dc13){_0x46db68=_0x46db68-0x0;var _0x2e0a00=_0xf451[_0x46db68];return _0x2e0a00;};'use strict';var _=require('lodash');var http=require('http');var express=require(_0x1f45('0x0'));var sticky=require(_0x1f45('0x1'));var Redis=require(_0x1f45('0x2'));var config=require(_0x1f45('0x3'));var app=express();var server=http[_0x1f45('0x4')](app);server['timeout']=0xdbba0;if(sticky['listen'](server,config[_0x1f45('0x5')])){var socketio=require(_0x1f45('0x6'))(server,{'transports':[_0x1f45('0x7'),_0x1f45('0x8')]});config['redis']=_[_0x1f45('0x9')](config[_0x1f45('0xa')],{'host':_0x1f45('0xb'),'port':0x18eb});socketio[_0x1f45('0xc')](require(_0x1f45('0xd'))({'pubClient':new Redis(config[_0x1f45('0xa')]),'subClient':new Redis(config[_0x1f45('0xa')])}));require(_0x1f45('0xe'))[_0x1f45('0xf')]();require('../../config/socketio')[_0x1f45('0xf')](socketio);require(_0x1f45('0x10'))[_0x1f45('0xf')](app);require(_0x1f45('0x11'))[_0x1f45('0xf')](app);}else{server[_0x1f45('0x12')](_0x1f45('0x13'),function(){console['log'](_0x1f45('0x14'),config[_0x1f45('0x5')]);});}exports=module[_0x1f45('0x15')]=app;
\ No newline at end of file
index 168e55f..67bb9a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a18=['routing','error','rpc','message','result','catch','jayson/promise','bluebird','client','http','request','then','debug'];(function(_0x7ec937,_0xbe3b08){var _0x150040=function(_0x4a5d8e){while(--_0x4a5d8e){_0x7ec937['push'](_0x7ec937['shift']());}};_0x150040(++_0xbe3b08);}(_0x6a18,0x13e));var _0x86a1=function(_0x5b134d,_0x15f016){_0x5b134d=_0x5b134d-0x0;var _0x217951=_0x6a18[_0x5b134d];return _0x217951;};'use strict';var jayson=require(_0x86a1('0x0'));var BPromise=require(_0x86a1('0x1'));var logger=require('../../config/logger')('routing');var client=jayson[_0x86a1('0x2')][_0x86a1('0x3')]({'port':0x2329});client['Request']=function(_0x3ec2ba,_0x29eb08){return new BPromise(function(_0x1840e0,_0x330d13){return client[_0x86a1('0x4')](_0x3ec2ba,_0x29eb08)[_0x86a1('0x5')](function(_0x3a8305){logger[_0x86a1('0x6')]('rpc',_0x86a1('0x7'),_0x3ec2ba,_0x29eb08,_0x3a8305);if(_0x3a8305[_0x86a1('0x8')]){logger[_0x86a1('0x8')](_0x86a1('0x9'),_0x86a1('0x7'),_0x3ec2ba,_0x3a8305[_0x86a1('0x8')][_0x86a1('0xa')],_0x29eb08);return _0x330d13(_0x3a8305[_0x86a1('0x8')]['message']);}else{return _0x1840e0(_0x3a8305[_0x86a1('0xb')]);}})[_0x86a1('0xc')](function(_0x29cfd6){logger[_0x86a1('0x8')](_0x86a1('0x9'),'routing',_0x3ec2ba,_0x29cfd6,_0x29eb08);return _0x330d13(_0x29cfd6);});});};module['exports']=client;
\ No newline at end of file
+var _0x027c=['jayson/promise','bluebird','routing','client','http','request','then','debug','rpc','error','message','catch','exports'];(function(_0x40ddc0,_0x41c082){var _0x1aebf1=function(_0x3ba1f6){while(--_0x3ba1f6){_0x40ddc0['push'](_0x40ddc0['shift']());}};_0x1aebf1(++_0x41c082);}(_0x027c,0x16c));var _0xc027=function(_0x4909f9,_0x27a3df){_0x4909f9=_0x4909f9-0x0;var _0x5df735=_0x027c[_0x4909f9];return _0x5df735;};'use strict';var jayson=require(_0xc027('0x0'));var BPromise=require(_0xc027('0x1'));var logger=require('../../config/logger')(_0xc027('0x2'));var client=jayson[_0xc027('0x3')][_0xc027('0x4')]({'port':0x2329});client['Request']=function(_0xf7628c,_0x4aeb2d){return new BPromise(function(_0x3cf04b,_0x1e3153){return client[_0xc027('0x5')](_0xf7628c,_0x4aeb2d)[_0xc027('0x6')](function(_0xbd4095){logger[_0xc027('0x7')](_0xc027('0x8'),_0xc027('0x2'),_0xf7628c,_0x4aeb2d,_0xbd4095);if(_0xbd4095['error']){logger[_0xc027('0x9')](_0xc027('0x8'),_0xc027('0x2'),_0xf7628c,_0xbd4095[_0xc027('0x9')][_0xc027('0xa')],_0x4aeb2d);return _0x1e3153(_0xbd4095[_0xc027('0x9')][_0xc027('0xa')]);}else{return _0x3cf04b(_0xbd4095['result']);}})[_0xc027('0xb')](function(_0x46cbb1){logger[_0xc027('0x9')](_0xc027('0x8'),_0xc027('0x2'),_0xf7628c,_0x46cbb1,_0x4aeb2d);return _0x1e3153(_0x46cbb1);});});};module[_0xc027('0xc')]=client;
\ No newline at end of file
index ff3f2d2..36aa55b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01c3=['./server','./realtime','./rpc/user','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/whatsappQueue','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log'];(function(_0x39e476,_0x406dc7){var _0x523604=function(_0x26886e){while(--_0x26886e){_0x39e476['push'](_0x39e476['shift']());}};_0x523604(++_0x406dc7);}(_0x01c3,0x104));var _0x301c=function(_0x27621c,_0x33125e){_0x27621c=_0x27621c-0x0;var _0x2e2df5=_0x01c3[_0x27621c];return _0x2e2df5;};'use strict';var BPromise=require('bluebird');var server=require(_0x301c('0x0'));var Realtime=require(_0x301c('0x1'));var user=require(_0x301c('0x2'));var interval=require('./rpc/interval');var openchannelQueue=require(_0x301c('0x3'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x301c('0x4'));var mailQueue=require(_0x301c('0x5'));var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x301c('0x6'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0x301c('0x7')](user[_0x301c('0x8')]())[_0x301c('0x7')](realtime[_0x301c('0x9')]())[_0x301c('0x7')](interval[_0x301c('0xa')]())[_0x301c('0x7')](realtime[_0x301c('0xb')]())[_0x301c('0x7')](openchannelQueue[_0x301c('0xc')]())[_0x301c('0x7')](realtime[_0x301c('0xd')]())['then'](chatQueue[_0x301c('0xe')]())[_0x301c('0x7')](realtime[_0x301c('0xf')]())[_0x301c('0x7')](smsQueue[_0x301c('0x10')]())[_0x301c('0x7')](realtime[_0x301c('0x11')]())[_0x301c('0x7')](mailQueue['getMailQueues']())[_0x301c('0x7')](realtime[_0x301c('0x12')]())['then'](faxQueue[_0x301c('0x13')]())[_0x301c('0x7')](realtime[_0x301c('0x14')]())[_0x301c('0x7')](whatsappQueue[_0x301c('0x15')]())['then'](realtime[_0x301c('0x16')]())['then'](function(){return realtime;});}function main(){return server[_0x301c('0x17')](realtime)[_0x301c('0x7')](function(_0x549b92){return initRealtime();})[_0x301c('0x7')](function(_0x269f2a){return setInterval(initRealtime,0x1388);})[_0x301c('0x18')](function(_0x30bff3){console[_0x301c('0x19')](_0x30bff3);});}main();
\ No newline at end of file
+var _0x75c1=['./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','initSmsQueues','initMailQueues','getWhatsappQueues','listen','bluebird','./server','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue'];(function(_0x205b40,_0x2c5ee4){var _0x32ff19=function(_0x33e6b7){while(--_0x33e6b7){_0x205b40['push'](_0x205b40['shift']());}};_0x32ff19(++_0x2c5ee4);}(_0x75c1,0x143));var _0x175c=function(_0x13b160,_0x52aa41){_0x13b160=_0x13b160-0x0;var _0x102e48=_0x75c1[_0x13b160];return _0x102e48;};'use strict';var BPromise=require(_0x175c('0x0'));var server=require(_0x175c('0x1'));var Realtime=require('./realtime');var user=require(_0x175c('0x2'));var interval=require(_0x175c('0x3'));var openchannelQueue=require(_0x175c('0x4'));var chatQueue=require(_0x175c('0x5'));var smsQueue=require(_0x175c('0x6'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x175c('0x7'));var whatsappQueue=require(_0x175c('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x175c('0x9')]()[_0x175c('0xa')](user[_0x175c('0xb')]())[_0x175c('0xa')](realtime[_0x175c('0xc')]())['then'](interval['getIntervals']())[_0x175c('0xa')](realtime[_0x175c('0xd')]())[_0x175c('0xa')](openchannelQueue[_0x175c('0xe')]())['then'](realtime[_0x175c('0xf')]())['then'](chatQueue[_0x175c('0x10')]())[_0x175c('0xa')](realtime[_0x175c('0x11')]())['then'](smsQueue['getSmsQueues']())[_0x175c('0xa')](realtime[_0x175c('0x12')]())[_0x175c('0xa')](mailQueue['getMailQueues']())[_0x175c('0xa')](realtime[_0x175c('0x13')]())[_0x175c('0xa')](faxQueue['getFaxQueues']())[_0x175c('0xa')](realtime['initFaxQueues']())[_0x175c('0xa')](whatsappQueue[_0x175c('0x14')]())[_0x175c('0xa')](realtime['initWhatsappQueues']())['then'](function(){return realtime;});}function main(){return server[_0x175c('0x15')](realtime)['then'](function(_0x30fb71){return initRealtime();})['then'](function(_0x486bb1){return setInterval(initRealtime,0x1388);})['catch'](function(_0x3369b6){console['log'](_0x3369b6);});}main();
\ No newline at end of file
index c4f4fba..c24755b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1261,0x144));var _0x1126=function(_0x188d31,_0x576e87){_0x188d31=_0x188d31-0x0;var _0x30ed33=_0x1261[_0x188d31];return _0x30ed33;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var EventEmitter=require(_0x1126('0x1'))[_0x1126('0x2')];function RuleEngine(_0x331a2c,_0x39b786){this[_0x1126('0x3')]();if(!_[_0x1126('0x4')](_0x331a2c)){this[_0x1126('0x5')](_0x331a2c);}if(_0x39b786){this[_0x1126('0x6')]=_0x39b786[_0x1126('0x6')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x1126('0x3')]=function(_0x907180){this['rules']=[];this[_0x1126('0x7')]=[];};RuleEngine[_0x1126('0x8')][_0x1126('0x5')]=function(_0x3abb0b){if(Array[_0x1126('0x9')](_0x3abb0b)){this['rules']=this[_0x1126('0xa')][_0x1126('0xb')](_0x3abb0b);}else if(_0x3abb0b!==null&&_[_0x1126('0xc')](_0x3abb0b)){this['rules'][_0x1126('0xd')](_0x3abb0b);}this['sync']();};RuleEngine['prototype'][_0x1126('0xe')]=function(){this['activeRules']=this[_0x1126('0xa')][_0x1126('0xf')](function(_0xd26a32){if(_[_0x1126('0x4')](_0xd26a32['on'])){_0xd26a32['on']=!![];}if(_0xd26a32['on']===!![]){return _0xd26a32;}});this[_0x1126('0x7')]=_[_0x1126('0x10')](this[_0x1126('0x7')],['p'],[_0x1126('0x11')]);};RuleEngine[_0x1126('0x8')]['execute']=function(_0x5de9a7,_0x1af673){var _0x154e20=![];_0x5de9a7[_0x1126('0x12')]=!![];var _0x4be0c6=_[_0x1126('0x13')](_0x5de9a7);var _0x4794a7=_[_0x1126('0x13')](_0x5de9a7);var _0x42f379=this[_0x1126('0x7')];var _0x4e1c97=[];var _0x245cd7=this[_0x1126('0x6')];(function FnRuleLoop(_0x4a7b49){var _0x4d2b38={'rules':function(){return _0x42f379;},'rule':function(){return _0x42f379[_0x4a7b49];},'when':function(_0x22ae0b){if(_0x22ae0b){var _0x2b2487=_0x42f379[_0x4a7b49]['consequence'];_0x2b2487['ruleRef']=_0x42f379[_0x4a7b49]['id']||_0x42f379[_0x4a7b49][_0x1126('0x14')]||'index_'+_0x4a7b49;process[_0x1126('0x15')](function(){_0x4e1c97[_0x1126('0xd')](_0x2b2487[_0x1126('0x16')]);_0x2b2487['call'](_0x4be0c6,_0x4d2b38);});}else{process[_0x1126('0x15')](function(){_0x4d2b38['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x154e20=!![];return FnRuleLoop(0x0);},'next':function(_0x56efeb){if(!_0x245cd7&&!_[_0x1126('0x17')](_0x4794a7,_0x4be0c6)){_0x4794a7=_[_0x1126('0x13')](_0x4be0c6);process[_0x1126('0x15')](function(){_0x4d2b38[_0x1126('0x18')]();});}else{process['nextTick'](function(){if(_[_0x1126('0x4')](_0x56efeb)){return FnRuleLoop(_0x4a7b49+0x1);}else{return FnRuleLoop(_0x56efeb);}});}}};if(_0x4a7b49<_0x42f379[_0x1126('0x19')]&&_0x154e20===![]){var _0x48a08d=_0x42f379[_0x4a7b49][_0x1126('0x1a')];_0x48a08d['call'](_0x4be0c6,_0x4d2b38);}else{process['nextTick'](function(){_0x4be0c6['matchPath']=_0x4e1c97;return _0x1af673?_0x1af673(_0x4be0c6):_[_0x1126('0x1b')]();});}}(0x0));};RuleEngine[_0x1126('0x8')][_0x1126('0x1c')]=function(_0x34bcf1){if(_[_0x1126('0x4')](_0x34bcf1)){return this[_0x1126('0xa')];}else{var _0xea0971=_[_0x1126('0x1d')](_0x34bcf1);return _['filter'](this[_0x1126('0xa')],_0xea0971);}};RuleEngine[_0x1126('0x8')][_0x1126('0x1e')]=function(_0x5ddf63,_0x541bc9){var _0xeb7d89=_0x5ddf63==='on'||_0x5ddf63==='ON'?!![]:![];var _0x39bf0e=this['findRules'](_0x541bc9);for(var _0x2fb797=0x0,_0x23d2bc=_0x39bf0e['length'];_0x2fb797<_0x23d2bc;_0x2fb797+=0x1){_0x39bf0e[_0x2fb797]['on']=_0xeb7d89;}this[_0x1126('0xe')]();};RuleEngine['prototype'][_0x1126('0x1f')]=function(_0x4bd50b,_0x771bb8){_0x4bd50b=parseInt(_0x4bd50b,0xa);var _0x583ce6=this[_0x1126('0x1c')](_0x771bb8);for(var _0x5f2611=0x0,_0x5252e0=_0x583ce6['length'];_0x5f2611<_0x5252e0;_0x5f2611+=0x1){_0x583ce6[_0x5f2611][_0x1126('0x20')]=_0x4bd50b;}this[_0x1126('0xe')]();};RuleEngine[_0x1126('0x8')]['toJSON']=function(){var _0x2a3055=this[_0x1126('0xa')];if(_0x2a3055 instanceof Array){_0x2a3055=_0x2a3055['map'](function(_0x3dd50e){_0x3dd50e[_0x1126('0x1a')]=_0x3dd50e[_0x1126('0x1a')][_0x1126('0x21')]();_0x3dd50e['consequence']=_0x3dd50e['consequence'][_0x1126('0x21')]();return _0x3dd50e;});}else if(!_[_0x1126('0x4')](_0x2a3055)){_0x2a3055[_0x1126('0x1a')]=_0x2a3055[_0x1126('0x1a')]['toString']();_0x2a3055[_0x1126('0x22')]=_0x2a3055[_0x1126('0x22')][_0x1126('0x21')]();}return _0x2a3055;};RuleEngine[_0x1126('0x8')][_0x1126('0x23')]=function(_0x5df232){this[_0x1126('0x3')]();if(_[_0x1126('0x24')](_0x5df232)){_0x5df232=JSON[_0x1126('0x25')](_0x5df232);}if(_0x5df232 instanceof Array){_0x5df232=_0x5df232[_0x1126('0x26')](function(_0x5c019d){_0x5c019d['condition']=eval('('+_0x5c019d[_0x1126('0x1a')]+')');_0x5c019d[_0x1126('0x22')]=eval('('+_0x5c019d['consequence']+')');return _0x5c019d;});}else if(_0x5df232!==null&&typeof _0x5df232==_0x1126('0x27')){_0x5df232[_0x1126('0x1a')]=eval('('+_0x5df232[_0x1126('0x1a')]+')');_0x5df232['consequence']=eval('('+_0x5df232['consequence']+')');}this[_0x1126('0x5')](_0x5df232);};module[_0x1126('0x28')]=RuleEngine;
\ No newline at end of file
+var _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(_0x17262f,_0x3c7ef2){var _0x28d050=function(_0x211f88){while(--_0x211f88){_0x17262f['push'](_0x17262f['shift']());}};_0x28d050(++_0x3c7ef2);}(_0x814b,0x1a2));var _0xb814=function(_0x31c27f,_0x40294c){_0x31c27f=_0x31c27f-0x0;var _0x28f9c6=_0x814b[_0x31c27f];return _0x28f9c6;};'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
index 9909b01..6e1ab66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3839=['error','message','result','catch','sendMailMessage','SendMail','jayson/promise','client','request','then'];(function(_0x286d25,_0x492cf1){var _0x4c0b3a=function(_0x581074){while(--_0x581074){_0x286d25['push'](_0x286d25['shift']());}};_0x4c0b3a(++_0x492cf1);}(_0x3839,0xa6));var _0x9383=function(_0x5bc53b,_0x4b8a4a){_0x5bc53b=_0x5bc53b-0x0;var _0x2db322=_0x3839[_0x5bc53b];return _0x2db322;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x9383('0x0'));var client=jayson[_0x9383('0x1')]['http']({'port':0x232b});function request(_0x405539,_0x5b1954){return new BPromise(function(_0x40f93e,_0x49cae4){return client[_0x9383('0x2')](_0x405539,_0x5b1954)[_0x9383('0x3')](function(_0x24a37b){if(_0x24a37b['error']){return _0x49cae4(_0x24a37b[_0x9383('0x4')][_0x9383('0x5')]);}else{return _0x40f93e(_0x24a37b[_0x9383('0x6')]);}})[_0x9383('0x7')](function(_0x2facc0){return _0x49cae4(_0x2facc0);});});}exports[_0x9383('0x8')]=function(_0x469af8,_0x3ac8fd){return request(_0x9383('0x9'),{'account':_0x469af8,'message':_0x3ac8fd});};
\ No newline at end of file
+var _0xe85b=['jayson/promise','client','request','then','error','message','catch','sendMailMessage','SendMail','bluebird'];(function(_0x137d1d,_0x35c663){var _0x485108=function(_0x108a2a){while(--_0x108a2a){_0x137d1d['push'](_0x137d1d['shift']());}};_0x485108(++_0x35c663);}(_0xe85b,0x199));var _0xbe85=function(_0x17c64b,_0x38ae9c){_0x17c64b=_0x17c64b-0x0;var _0x5ca37f=_0xe85b[_0x17c64b];return _0x5ca37f;};'use strict';var BPromise=require(_0xbe85('0x0'));var jayson=require(_0xbe85('0x1'));var client=jayson[_0xbe85('0x2')]['http']({'port':0x232b});function request(_0x3242a8,_0x38a77f){return new BPromise(function(_0xf44728,_0x48bbb2){return client[_0xbe85('0x3')](_0x3242a8,_0x38a77f)[_0xbe85('0x4')](function(_0xbcb43d){if(_0xbcb43d[_0xbe85('0x5')]){return _0x48bbb2(_0xbcb43d[_0xbe85('0x5')][_0xbe85('0x6')]);}else{return _0xf44728(_0xbcb43d['result']);}})[_0xbe85('0x7')](function(_0x4c10a9){return _0x48bbb2(_0x4c10a9);});});}exports[_0xbe85('0x8')]=function(_0x3b8e38,_0x3f373b){return request(_0xbe85('0x9'),{'account':_0x3b8e38,'message':_0x3f373b});};
\ No newline at end of file
index 1aeed89..c85d027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f58=['online','chatCapacity','faxStatus','openchannelStatus','openchannelStatusTime','stringify','user:save','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','CurrentCapacity','Capacity','maxcapacity','working','prototype','updateRealtime','mail','openchannel','fax','sms','whatsapp','length','getChannelStatus','Status','StatusTime','format'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0x8f58,0x79));var _0x88f5=function(_0x3651dc,_0x1929e3){_0x3651dc=_0x3651dc-0x0;var _0x217607=_0x8f58[_0x3651dc];return _0x217607;};'use strict';var _=require('lodash');var moment=require('moment');var md5=require(_0x88f5('0x0'));var Redis=require(_0x88f5('0x1'));var config=require(_0x88f5('0x2'));config[_0x88f5('0x3')]=_[_0x88f5('0x4')](config[_0x88f5('0x3')],{'host':_0x88f5('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x88f5('0x3')]));function Agent(_0x4b9dae){this['id']=_0x4b9dae['id']||0x0;this[_0x88f5('0x6')]=_0x4b9dae[_0x88f5('0x6')]||'';this['online']=_0x4b9dae['online']||!![];this['voicePause']=_0x4b9dae[_0x88f5('0x7')]||![];this[_0x88f5('0x8')]=_0x4b9dae[_0x88f5('0x8')]||![];this[_0x88f5('0x9')]=_0x4b9dae[_0x88f5('0x9')]||![];this['faxPause']=_0x4b9dae[_0x88f5('0xa')]||![];this[_0x88f5('0xb')]=_0x4b9dae['smsPause']||![];this[_0x88f5('0xc')]=_0x4b9dae[_0x88f5('0xc')]||![];this[_0x88f5('0xd')]=_0x88f5('0xe');this[_0x88f5('0xf')]=0x0;this['chatCapacity']=_0x4b9dae['chatCapacity']||0x0;this[_0x88f5('0x10')]=0x0;this[_0x88f5('0x11')]=_0x88f5('0xe');this[_0x88f5('0x12')]=0x0;this[_0x88f5('0x13')]=_0x4b9dae[_0x88f5('0x13')]||0x0;this[_0x88f5('0x14')]=0x0;this['faxStatus']=_0x88f5('0xe');this[_0x88f5('0x15')]=0x0;this[_0x88f5('0x16')]=_0x4b9dae[_0x88f5('0x16')]||0x0;this[_0x88f5('0x17')]=0x0;this['smsStatus']='unknown';this[_0x88f5('0x18')]=0x0;this[_0x88f5('0x19')]=_0x4b9dae['smsCapacity']||0x0;this[_0x88f5('0x1a')]=0x0;this[_0x88f5('0x1b')]=_0x88f5('0xe');this[_0x88f5('0x1c')]=0x0;this['whatsappCapacity']=_0x4b9dae[_0x88f5('0x1d')]||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']=_0x88f5('0xe');this['openchannelStatusTime']=0x0;this[_0x88f5('0x1e')]=_0x4b9dae[_0x88f5('0x1e')]||0x0;this[_0x88f5('0x1f')]=0x0;this[_0x88f5('0x20')]=![];this[_0x88f5('0x21')]=undefined;this[_0x88f5('0x0')]='';this['updateRealtime']();}Agent['prototype']['getChannelStatus']=function(_0x557a96){if(this[_0x557a96+_0x88f5('0x22')]>0x0){if(this[_0x557a96+_0x88f5('0x23')]>0x0&&this[_0x557a96+'CurrentCapacity']>=this[_0x557a96+_0x88f5('0x23')]){return _0x88f5('0x24');}else{return _0x88f5('0x25');}}else{return'idle';}};Agent[_0x88f5('0x26')][_0x88f5('0x27')]=function(){var _0x2842a8=[_0x88f5('0x28'),'chat',_0x88f5('0x29'),_0x88f5('0x2a'),_0x88f5('0x2b'),_0x88f5('0x2c')];for(var _0x3bdd2d=0x0;_0x3bdd2d<_0x2842a8[_0x88f5('0x2d')];_0x3bdd2d+=0x1){var _0x378049=this[_0x88f5('0x2e')](_0x2842a8[_0x3bdd2d]);if(this[_0x2842a8[_0x3bdd2d]+_0x88f5('0x2f')]!==_0x378049){this[_0x2842a8[_0x3bdd2d]+_0x88f5('0x30')]=_['toNumber'](moment()[_0x88f5('0x31')]('x'));}this[_0x2842a8[_0x3bdd2d]+'Status']=_0x378049;}var _0x3022c5={'id':this['id'],'name':this[_0x88f5('0x6')],'online':this[_0x88f5('0x32')],'voicePause':this[_0x88f5('0x7')],'chatPause':this['chatPause'],'mailPause':this[_0x88f5('0x9')],'smsPause':this[_0x88f5('0xb')],'faxPause':this[_0x88f5('0xa')],'openchannelPause':this[_0x88f5('0xc')],'chatStatus':this['chatStatus'],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0x88f5('0x33')],'chatCurrentCapacity':this[_0x88f5('0x10')],'mailStatus':this[_0x88f5('0x11')],'mailStatusTime':this[_0x88f5('0x12')],'mailCapacity':this[_0x88f5('0x13')],'mailCurrentCapacity':this[_0x88f5('0x14')],'faxStatus':this[_0x88f5('0x34')],'faxStatusTime':this[_0x88f5('0x15')],'faxCapacity':this[_0x88f5('0x16')],'faxCurrentCapacity':this[_0x88f5('0x17')],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x88f5('0x18')],'smsCapacity':this[_0x88f5('0x19')],'smsCurrentCapacity':this[_0x88f5('0x1a')],'whatsappStatus':this[_0x88f5('0x1b')],'whatsappStatusTime':this[_0x88f5('0x1c')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x88f5('0x35')],'openchannelStatusTime':this[_0x88f5('0x36')],'openchannelCapacity':this[_0x88f5('0x1e')],'openchannelCurrentCapacity':this[_0x88f5('0x1f')],'busy':this[_0x88f5('0x20')],'busyQueue':this['busyQueue']};var _0x3663ac=md5(JSON[_0x88f5('0x37')](_0x3022c5));if(this['md5']!==_0x3663ac){this[_0x88f5('0x0')]=_0x3663ac;io['emit'](_0x88f5('0x38'),_0x3022c5);}};module['exports']=Agent;
\ No newline at end of file
+var _0xe3d4=['mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappCapacity','openchannelStatusTime','openchannelCapacity','busy','prototype','getChannelStatus','CurrentCapacity','Capacity','working','idle','updateRealtime','chat','openchannel','fax','whatsapp','Status','toNumber','chatStatusTime','whatsappStatus','whatsappStatusTime','openchannelStatus','openchannelCurrentCapacity','stringify','emit','user:save','exports','moment','md5','ioredis','redis','defaults','localhost','name','online','voicePause','chatPause','mailPause','smsPause','openchannelPause','chatStatus','unknown','chatCapacity','chatCurrentCapacity','mailStatus'];(function(_0x47123a,_0x49937a){var _0x540502=function(_0x3fdb56){while(--_0x3fdb56){_0x47123a['push'](_0x47123a['shift']());}};_0x540502(++_0x49937a);}(_0xe3d4,0xc6));var _0x4e3d=function(_0x4e55aa,_0x48bfd2){_0x4e55aa=_0x4e55aa-0x0;var _0x2f48d6=_0xe3d4[_0x4e55aa];return _0x2f48d6;};'use strict';var _=require('lodash');var moment=require(_0x4e3d('0x0'));var md5=require(_0x4e3d('0x1'));var Redis=require(_0x4e3d('0x2'));var config=require('../../../config/environment');config[_0x4e3d('0x3')]=_[_0x4e3d('0x4')](config['redis'],{'host':_0x4e3d('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4e3d('0x3')]));function Agent(_0x46b757){this['id']=_0x46b757['id']||0x0;this['name']=_0x46b757[_0x4e3d('0x6')]||'';this[_0x4e3d('0x7')]=_0x46b757['online']||!![];this[_0x4e3d('0x8')]=_0x46b757[_0x4e3d('0x8')]||![];this[_0x4e3d('0x9')]=_0x46b757[_0x4e3d('0x9')]||![];this[_0x4e3d('0xa')]=_0x46b757[_0x4e3d('0xa')]||![];this['faxPause']=_0x46b757['faxPause']||![];this[_0x4e3d('0xb')]=_0x46b757[_0x4e3d('0xb')]||![];this[_0x4e3d('0xc')]=_0x46b757[_0x4e3d('0xc')]||![];this[_0x4e3d('0xd')]=_0x4e3d('0xe');this['chatStatusTime']=0x0;this[_0x4e3d('0xf')]=_0x46b757[_0x4e3d('0xf')]||0x0;this[_0x4e3d('0x10')]=0x0;this[_0x4e3d('0x11')]=_0x4e3d('0xe');this[_0x4e3d('0x12')]=0x0;this[_0x4e3d('0x13')]=_0x46b757[_0x4e3d('0x13')]||0x0;this['mailCurrentCapacity']=0x0;this[_0x4e3d('0x14')]=_0x4e3d('0xe');this[_0x4e3d('0x15')]=0x0;this['faxCapacity']=_0x46b757[_0x4e3d('0x16')]||0x0;this[_0x4e3d('0x17')]=0x0;this[_0x4e3d('0x18')]=_0x4e3d('0xe');this[_0x4e3d('0x19')]=0x0;this[_0x4e3d('0x1a')]=_0x46b757[_0x4e3d('0x1a')]||0x0;this[_0x4e3d('0x1b')]=0x0;this['whatsappStatus']=_0x4e3d('0xe');this['whatsappStatusTime']=0x0;this['whatsappCapacity']=_0x46b757[_0x4e3d('0x1c')]||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']=_0x4e3d('0xe');this[_0x4e3d('0x1d')]=0x0;this[_0x4e3d('0x1e')]=_0x46b757[_0x4e3d('0x1e')]||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x4e3d('0x1f')]=![];this['busyQueue']=undefined;this[_0x4e3d('0x1')]='';this['updateRealtime']();}Agent[_0x4e3d('0x20')][_0x4e3d('0x21')]=function(_0x3c385c){if(this[_0x3c385c+_0x4e3d('0x22')]>0x0){if(this[_0x3c385c+_0x4e3d('0x23')]>0x0&&this[_0x3c385c+_0x4e3d('0x22')]>=this[_0x3c385c+'Capacity']){return'maxcapacity';}else{return _0x4e3d('0x24');}}else{return _0x4e3d('0x25');}};Agent[_0x4e3d('0x20')][_0x4e3d('0x26')]=function(){var _0x3e6b53=['mail',_0x4e3d('0x27'),_0x4e3d('0x28'),_0x4e3d('0x29'),'sms',_0x4e3d('0x2a')];for(var _0xa6569b=0x0;_0xa6569b<_0x3e6b53['length'];_0xa6569b+=0x1){var _0x192cb4=this[_0x4e3d('0x21')](_0x3e6b53[_0xa6569b]);if(this[_0x3e6b53[_0xa6569b]+_0x4e3d('0x2b')]!==_0x192cb4){this[_0x3e6b53[_0xa6569b]+'StatusTime']=_[_0x4e3d('0x2c')](moment()['format']('x'));}this[_0x3e6b53[_0xa6569b]+_0x4e3d('0x2b')]=_0x192cb4;}var _0x5271a1={'id':this['id'],'name':this[_0x4e3d('0x6')],'online':this[_0x4e3d('0x7')],'voicePause':this[_0x4e3d('0x8')],'chatPause':this['chatPause'],'mailPause':this[_0x4e3d('0xa')],'smsPause':this[_0x4e3d('0xb')],'faxPause':this['faxPause'],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0x4e3d('0xd')],'chatStatusTime':this[_0x4e3d('0x2d')],'chatCapacity':this[_0x4e3d('0xf')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0x4e3d('0x11')],'mailStatusTime':this[_0x4e3d('0x12')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x4e3d('0x14')],'faxStatusTime':this[_0x4e3d('0x15')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0x4e3d('0x17')],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x4e3d('0x19')],'smsCapacity':this[_0x4e3d('0x1a')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0x4e3d('0x2e')],'whatsappStatusTime':this[_0x4e3d('0x2f')],'whatsappCapacity':this[_0x4e3d('0x1c')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x4e3d('0x30')],'openchannelStatusTime':this[_0x4e3d('0x1d')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x4e3d('0x31')],'busy':this[_0x4e3d('0x1f')],'busyQueue':this['busyQueue']};var _0x2ae342=md5(JSON[_0x4e3d('0x32')](_0x5271a1));if(this[_0x4e3d('0x1')]!==_0x2ae342){this[_0x4e3d('0x1')]=_0x2ae342;io[_0x4e3d('0x33')](_0x4e3d('0x34'),_0x5271a1);}};module[_0x4e3d('0x35')]=Agent;
\ No newline at end of file
index a4e6c41..255e3b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb3=['strategy','beepall','Agents','waiting','updateRealtime','prototype','updateRouting','mapAgentsId','_rr','map','length','online','paused','loggedIn','available','md5','format','chat:queue:%s','emit','chat_queue:save','exports','lodash','util','redis','defaults','name','timeout'];(function(_0x5f56ee,_0x4588c7){var _0xc5208b=function(_0x2048d3){while(--_0x2048d3){_0x5f56ee['push'](_0x5f56ee['shift']());}};_0xc5208b(++_0x4588c7);}(_0xbdb3,0x1c5));var _0x3bdb=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xbdb3[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x3bdb('0x0'));var md5=require('md5');var util=require(_0x3bdb('0x1'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x3bdb('0x2')]=_[_0x3bdb('0x3')](config[_0x3bdb('0x2')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3bdb('0x2')]));function ChatQueue(_0x58cf72){this['id']=_0x58cf72['id']||0x0;this[_0x3bdb('0x4')]=_0x58cf72[_0x3bdb('0x4')]||'';this[_0x3bdb('0x5')]=_0x58cf72['timeout']||0xa;this['strategy']=_0x58cf72[_0x3bdb('0x6')]||_0x3bdb('0x7');this[_0x3bdb('0x8')]=_0x58cf72[_0x3bdb('0x8')];this['mapAgentsId']={};this[_0x3bdb('0x9')]=0x0;this['md5']='';this['updateRouting']();this[_0x3bdb('0xa')]();}ChatQueue[_0x3bdb('0xb')][_0x3bdb('0xc')]=function(){var _0x37b25b=this[_0x3bdb('0xd')][_0x3bdb('0xe')];this['mapAgentsId']=_[_0x3bdb('0xf')](this[_0x3bdb('0x8')],'id');this[_0x3bdb('0xd')][_0x3bdb('0xe')]=_0x37b25b;};ChatQueue[_0x3bdb('0xb')][_0x3bdb('0xa')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x544b6e=0x0;_0x544b6e<this[_0x3bdb('0x8')][_0x3bdb('0x10')];_0x544b6e+=0x1){if(this['Agents'][_0x544b6e][_0x3bdb('0x11')]){this['loggedIn']+=0x1;}if(this[_0x3bdb('0x8')][_0x544b6e]['chatPause']){this[_0x3bdb('0x12')]+=0x1;}}this['available']=this[_0x3bdb('0x13')]-this[_0x3bdb('0x12')];this[_0x3bdb('0x14')]=this[_0x3bdb('0x14')]>=0x0?this['available']:0x0;var _0x145411={'id':this['id'],'available':this['available'],'loggedIn':this[_0x3bdb('0x13')],'name':this[_0x3bdb('0x4')],'paused':this[_0x3bdb('0x12')],'waiting':this['waiting']};var _0x5df15c=md5(JSON['stringify'](_0x145411));if(this[_0x3bdb('0x15')]!==_0x5df15c){this['md5']=_0x5df15c;io['to'](util[_0x3bdb('0x16')](_0x3bdb('0x17'),_0x145411['name']))[_0x3bdb('0x18')](_0x3bdb('0x19'),_0x145411);}};module[_0x3bdb('0x1a')]=ChatQueue;
\ No newline at end of file
+var _0xd5fc=['updateRouting','updateRealtime','prototype','_rr','length','online','chatPause','paused','available','loggedIn','stringify','format','chat:queue:%s','emit','chat_queue:save','lodash','md5','util','ioredis','defaults','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting'];(function(_0x19cf51,_0x5ca5d6){var _0x2dedc9=function(_0x27f5e0){while(--_0x27f5e0){_0x19cf51['push'](_0x19cf51['shift']());}};_0x2dedc9(++_0x5ca5d6);}(_0xd5fc,0xa0));var _0xcd5f=function(_0x82cb46,_0x429bb5){_0x82cb46=_0x82cb46-0x0;var _0x56e2f8=_0xd5fc[_0x82cb46];return _0x56e2f8;};'use strict';var _=require(_0xcd5f('0x0'));var md5=require(_0xcd5f('0x1'));var util=require(_0xcd5f('0x2'));var Redis=require(_0xcd5f('0x3'));var config=require('../../../config/environment');config['redis']=_[_0xcd5f('0x4')](config[_0xcd5f('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xcd5f('0x6'))(new Redis(config[_0xcd5f('0x5')]));function ChatQueue(_0x142fb7){this['id']=_0x142fb7['id']||0x0;this[_0xcd5f('0x7')]=_0x142fb7[_0xcd5f('0x7')]||'';this[_0xcd5f('0x8')]=_0x142fb7[_0xcd5f('0x8')]||0xa;this[_0xcd5f('0x9')]=_0x142fb7['strategy']||_0xcd5f('0xa');this[_0xcd5f('0xb')]=_0x142fb7[_0xcd5f('0xb')];this[_0xcd5f('0xc')]={};this[_0xcd5f('0xd')]=0x0;this[_0xcd5f('0x1')]='';this[_0xcd5f('0xe')]();this[_0xcd5f('0xf')]();}ChatQueue[_0xcd5f('0x10')][_0xcd5f('0xe')]=function(){var _0x36af96=this[_0xcd5f('0xc')]['_rr'];this[_0xcd5f('0xc')]=_['map'](this['Agents'],'id');this['mapAgentsId'][_0xcd5f('0x11')]=_0x36af96;};ChatQueue[_0xcd5f('0x10')]['updateRealtime']=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x10f016=0x0;_0x10f016<this['Agents'][_0xcd5f('0x12')];_0x10f016+=0x1){if(this[_0xcd5f('0xb')][_0x10f016][_0xcd5f('0x13')]){this['loggedIn']+=0x1;}if(this[_0xcd5f('0xb')][_0x10f016][_0xcd5f('0x14')]){this[_0xcd5f('0x15')]+=0x1;}}this['available']=this['loggedIn']-this[_0xcd5f('0x15')];this[_0xcd5f('0x16')]=this[_0xcd5f('0x16')]>=0x0?this[_0xcd5f('0x16')]:0x0;var _0x323421={'id':this['id'],'available':this[_0xcd5f('0x16')],'loggedIn':this[_0xcd5f('0x17')],'name':this['name'],'paused':this[_0xcd5f('0x15')],'waiting':this[_0xcd5f('0xd')]};var _0x1508db=md5(JSON[_0xcd5f('0x18')](_0x323421));if(this[_0xcd5f('0x1')]!==_0x1508db){this[_0xcd5f('0x1')]=_0x1508db;io['to'](util[_0xcd5f('0x19')](_0xcd5f('0x1a'),_0x323421[_0xcd5f('0x7')]))[_0xcd5f('0x1b')](_0xcd5f('0x1c'),_0x323421);}};module['exports']=ChatQueue;
\ No newline at end of file
index e5ecabe..1ec20ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66b4=['fax:queue:%s','fax_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','map','updateRealtime','loggedIn','paused','online','faxPause','available','stringify','format'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x66b4,0x8f));var _0x466b=function(_0x53d8c0,_0x2a06f8){_0x53d8c0=_0x53d8c0-0x0;var _0x5b0a94=_0x66b4[_0x53d8c0];return _0x5b0a94;};'use strict';var _=require('lodash');var md5=require(_0x466b('0x0'));var util=require(_0x466b('0x1'));var Redis=require(_0x466b('0x2'));var config=require(_0x466b('0x3'));config[_0x466b('0x4')]=_['defaults'](config[_0x466b('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x466b('0x5'))(new Redis(config[_0x466b('0x4')]));function FaxQueue(_0x3c6c87){this['id']=_0x3c6c87['id']||0x0;this[_0x466b('0x6')]=_0x3c6c87[_0x466b('0x6')]||'';this['timeout']=_0x3c6c87[_0x466b('0x7')]||0xa;this[_0x466b('0x8')]=_0x3c6c87[_0x466b('0x8')]||_0x466b('0x9');this[_0x466b('0xa')]=_0x3c6c87['Agents'];this[_0x466b('0xb')]={};this[_0x466b('0xc')]=0x0;this[_0x466b('0x0')]='';this[_0x466b('0xd')]();this['updateRealtime']();}FaxQueue[_0x466b('0xe')][_0x466b('0xd')]=function(){var _0x15e741=this[_0x466b('0xb')][_0x466b('0xf')];this[_0x466b('0xb')]=_[_0x466b('0x10')](this['Agents'],'id');this[_0x466b('0xb')]['_rr']=_0x15e741;};FaxQueue[_0x466b('0xe')][_0x466b('0x11')]=function(){this[_0x466b('0x12')]=0x0;this[_0x466b('0x13')]=0x0;for(var _0x443a6a=0x0;_0x443a6a<this[_0x466b('0xa')]['length'];_0x443a6a+=0x1){if(this[_0x466b('0xa')][_0x443a6a][_0x466b('0x14')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x443a6a][_0x466b('0x15')]){this[_0x466b('0x13')]+=0x1;}}this[_0x466b('0x16')]=this['loggedIn']-this[_0x466b('0x13')];this[_0x466b('0x16')]=this[_0x466b('0x16')]>=0x0?this[_0x466b('0x16')]:0x0;var _0x51f2d7={'id':this['id'],'available':this[_0x466b('0x16')],'loggedIn':this[_0x466b('0x12')],'name':this['name'],'paused':this[_0x466b('0x13')],'waiting':this[_0x466b('0xc')]};var _0x2090ba=md5(JSON[_0x466b('0x17')](_0x51f2d7));if(this[_0x466b('0x0')]!==_0x2090ba){this[_0x466b('0x0')]=_0x2090ba;io['to'](util[_0x466b('0x18')](_0x466b('0x19'),_0x51f2d7[_0x466b('0x6')]))['emit'](_0x466b('0x1a'),_0x51f2d7);}};module[_0x466b('0x1b')]=FaxQueue;
\ No newline at end of file
+var _0x24a1=['fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','timeout','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','paused','online','faxPause','available','name','stringify','format'];(function(_0x146b69,_0x48a757){var _0x4ce0bb=function(_0x5562e0){while(--_0x5562e0){_0x146b69['push'](_0x146b69['shift']());}};_0x4ce0bb(++_0x48a757);}(_0x24a1,0x126));var _0x124a=function(_0x2332ed,_0x1c65fe){_0x2332ed=_0x2332ed-0x0;var _0x364956=_0x24a1[_0x2332ed];return _0x364956;};'use strict';var _=require(_0x124a('0x0'));var md5=require(_0x124a('0x1'));var util=require('util');var Redis=require(_0x124a('0x2'));var config=require(_0x124a('0x3'));config[_0x124a('0x4')]=_['defaults'](config['redis'],{'host':_0x124a('0x5'),'port':0x18eb});var io=require(_0x124a('0x6'))(new Redis(config[_0x124a('0x4')]));function FaxQueue(_0x125ef9){this['id']=_0x125ef9['id']||0x0;this['name']=_0x125ef9['name']||'';this['timeout']=_0x125ef9[_0x124a('0x7')]||0xa;this['strategy']=_0x125ef9['strategy']||_0x124a('0x8');this[_0x124a('0x9')]=_0x125ef9['Agents'];this['mapAgentsId']={};this[_0x124a('0xa')]=0x0;this[_0x124a('0x1')]='';this[_0x124a('0xb')]();this[_0x124a('0xc')]();}FaxQueue[_0x124a('0xd')][_0x124a('0xb')]=function(){var _0x1201c2=this[_0x124a('0xe')][_0x124a('0xf')];this['mapAgentsId']=_[_0x124a('0x10')](this['Agents'],'id');this[_0x124a('0xe')][_0x124a('0xf')]=_0x1201c2;};FaxQueue['prototype'][_0x124a('0xc')]=function(){this[_0x124a('0x11')]=0x0;this[_0x124a('0x12')]=0x0;for(var _0x4dd192=0x0;_0x4dd192<this[_0x124a('0x9')]['length'];_0x4dd192+=0x1){if(this[_0x124a('0x9')][_0x4dd192][_0x124a('0x13')]){this[_0x124a('0x11')]+=0x1;}if(this[_0x124a('0x9')][_0x4dd192][_0x124a('0x14')]){this['paused']+=0x1;}}this['available']=this['loggedIn']-this[_0x124a('0x12')];this['available']=this[_0x124a('0x15')]>=0x0?this[_0x124a('0x15')]:0x0;var _0x1ffe91={'id':this['id'],'available':this[_0x124a('0x15')],'loggedIn':this[_0x124a('0x11')],'name':this[_0x124a('0x16')],'paused':this[_0x124a('0x12')],'waiting':this[_0x124a('0xa')]};var _0x5c9200=md5(JSON[_0x124a('0x17')](_0x1ffe91));if(this[_0x124a('0x1')]!==_0x5c9200){this[_0x124a('0x1')]=_0x5c9200;io['to'](util[_0x124a('0x18')](_0x124a('0x19'),_0x1ffe91['name']))[_0x124a('0x1a')](_0x124a('0x1b'),_0x1ffe91);}};module[_0x124a('0x1c')]=FaxQueue;
\ No newline at end of file
index 3da8515..ab95c74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fcd=['Intervals','exports','name'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x5fcd,0x8f));var _0xd5fc=function(_0x23eef3,_0x1a506a){_0x23eef3=_0x23eef3-0x0;var _0x23ad4c=_0x5fcd[_0x23eef3];return _0x23ad4c;};'use strict';function Interval(_0x8653e2){this['id']=_0x8653e2['id']||0x0;this[_0xd5fc('0x0')]=_0x8653e2['name']||'';this[_0xd5fc('0x1')]=_0x8653e2[_0xd5fc('0x1')]||{};}module[_0xd5fc('0x2')]=Interval;
\ No newline at end of file
+var _0x24b2=['Intervals','name'];(function(_0x5358cd,_0x293fd6){var _0xc144e2=function(_0x18c1fc){while(--_0x18c1fc){_0x5358cd['push'](_0x5358cd['shift']());}};_0xc144e2(++_0x293fd6);}(_0x24b2,0x19d));var _0x224b=function(_0x5be0ee,_0x2e17be){_0x5be0ee=_0x5be0ee-0x0;var _0x20427f=_0x24b2[_0x5be0ee];return _0x20427f;};'use strict';function Interval(_0x2588fd){this['id']=_0x2588fd['id']||0x0;this[_0x224b('0x0')]=_0x2588fd[_0x224b('0x0')]||'';this[_0x224b('0x1')]=_0x2588fd[_0x224b('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
index 1a9ed2a..c39bbbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff02=['online','available','stringify','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','util','../../../config/environment','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','mapAgentsId','_rr','prototype','loggedIn','paused','length'];(function(_0x281275,_0x283494){var _0x2805ed=function(_0xebd591){while(--_0xebd591){_0x281275['push'](_0x281275['shift']());}};_0x2805ed(++_0x283494);}(_0xff02,0x73));var _0x2ff0=function(_0x267b15,_0x5e042c){_0x267b15=_0x267b15-0x0;var _0x346a0c=_0xff02[_0x267b15];return _0x346a0c;};'use strict';var _=require(_0x2ff0('0x0'));var md5=require(_0x2ff0('0x1'));var util=require(_0x2ff0('0x2'));var Redis=require('ioredis');var config=require(_0x2ff0('0x3'));config[_0x2ff0('0x4')]=_['defaults'](config[_0x2ff0('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x2ff0('0x5'))(new Redis(config[_0x2ff0('0x4')]));function MailQueue(_0x5d91dd){this['id']=_0x5d91dd['id']||0x0;this[_0x2ff0('0x6')]=_0x5d91dd[_0x2ff0('0x6')]||'';this[_0x2ff0('0x7')]=_0x5d91dd['timeout']||0xa;this[_0x2ff0('0x8')]=_0x5d91dd[_0x2ff0('0x8')]||_0x2ff0('0x9');this[_0x2ff0('0xa')]=_0x5d91dd['Agents'];this['mapAgentsId']={};this[_0x2ff0('0xb')]=0x0;this[_0x2ff0('0x1')]='';this[_0x2ff0('0xc')]();this[_0x2ff0('0xd')]();}MailQueue['prototype']['updateRouting']=function(){var _0x34451a=this[_0x2ff0('0xe')][_0x2ff0('0xf')];this['mapAgentsId']=_['map'](this['Agents'],'id');this[_0x2ff0('0xe')][_0x2ff0('0xf')]=_0x34451a;};MailQueue[_0x2ff0('0x10')][_0x2ff0('0xd')]=function(){this[_0x2ff0('0x11')]=0x0;this[_0x2ff0('0x12')]=0x0;for(var _0x5f2049=0x0;_0x5f2049<this[_0x2ff0('0xa')][_0x2ff0('0x13')];_0x5f2049+=0x1){if(this['Agents'][_0x5f2049][_0x2ff0('0x14')]){this[_0x2ff0('0x11')]+=0x1;}if(this[_0x2ff0('0xa')][_0x5f2049]['mailPause']){this['paused']+=0x1;}}this[_0x2ff0('0x15')]=this['loggedIn']-this['paused'];this[_0x2ff0('0x15')]=this[_0x2ff0('0x15')]>=0x0?this[_0x2ff0('0x15')]:0x0;var _0x12f185={'id':this['id'],'available':this[_0x2ff0('0x15')],'loggedIn':this[_0x2ff0('0x11')],'name':this['name'],'paused':this[_0x2ff0('0x12')],'waiting':this[_0x2ff0('0xb')]};var _0x322a2a=md5(JSON[_0x2ff0('0x16')](_0x12f185));if(this['md5']!==_0x322a2a){this['md5']=_0x322a2a;io['to'](util['format'](_0x2ff0('0x17'),_0x12f185[_0x2ff0('0x6')]))[_0x2ff0('0x18')](_0x2ff0('0x19'),_0x12f185);}};module[_0x2ff0('0x1a')]=MailQueue;
\ No newline at end of file
+var _0xa815=['md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','length','online','loggedIn','mailPause','available','paused','stringify','format','mail:queue:%s','emit'];(function(_0x3a90c2,_0x37b768){var _0x5df71e=function(_0x8f2cdd){while(--_0x8f2cdd){_0x3a90c2['push'](_0x3a90c2['shift']());}};_0x5df71e(++_0x37b768);}(_0xa815,0x8c));var _0x5a81=function(_0x4150b6,_0x567c53){_0x4150b6=_0x4150b6-0x0;var _0x343920=_0xa815[_0x4150b6];return _0x343920;};'use strict';var _=require('lodash');var md5=require(_0x5a81('0x0'));var util=require('util');var Redis=require(_0x5a81('0x1'));var config=require(_0x5a81('0x2'));config[_0x5a81('0x3')]=_[_0x5a81('0x4')](config[_0x5a81('0x3')],{'host':_0x5a81('0x5'),'port':0x18eb});var io=require(_0x5a81('0x6'))(new Redis(config[_0x5a81('0x3')]));function MailQueue(_0x410845){this['id']=_0x410845['id']||0x0;this[_0x5a81('0x7')]=_0x410845['name']||'';this[_0x5a81('0x8')]=_0x410845[_0x5a81('0x8')]||0xa;this[_0x5a81('0x9')]=_0x410845[_0x5a81('0x9')]||_0x5a81('0xa');this[_0x5a81('0xb')]=_0x410845[_0x5a81('0xb')];this[_0x5a81('0xc')]={};this[_0x5a81('0xd')]=0x0;this['md5']='';this['updateRouting']();this[_0x5a81('0xe')]();}MailQueue[_0x5a81('0xf')][_0x5a81('0x10')]=function(){var _0x2d77ca=this[_0x5a81('0xc')][_0x5a81('0x11')];this['mapAgentsId']=_['map'](this[_0x5a81('0xb')],'id');this['mapAgentsId'][_0x5a81('0x11')]=_0x2d77ca;};MailQueue[_0x5a81('0xf')][_0x5a81('0xe')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x3f3e45=0x0;_0x3f3e45<this[_0x5a81('0xb')][_0x5a81('0x12')];_0x3f3e45+=0x1){if(this[_0x5a81('0xb')][_0x3f3e45][_0x5a81('0x13')]){this[_0x5a81('0x14')]+=0x1;}if(this[_0x5a81('0xb')][_0x3f3e45][_0x5a81('0x15')]){this['paused']+=0x1;}}this[_0x5a81('0x16')]=this[_0x5a81('0x14')]-this[_0x5a81('0x17')];this[_0x5a81('0x16')]=this[_0x5a81('0x16')]>=0x0?this['available']:0x0;var _0x36d210={'id':this['id'],'available':this[_0x5a81('0x16')],'loggedIn':this[_0x5a81('0x14')],'name':this[_0x5a81('0x7')],'paused':this[_0x5a81('0x17')],'waiting':this[_0x5a81('0xd')]};var _0x4fb368=md5(JSON[_0x5a81('0x18')](_0x36d210));if(this['md5']!==_0x4fb368){this[_0x5a81('0x0')]=_0x4fb368;io['to'](util[_0x5a81('0x19')](_0x5a81('0x1a'),_0x36d210[_0x5a81('0x7')]))[_0x5a81('0x1b')]('mail_queue:save',_0x36d210);}};module['exports']=MailQueue;
\ No newline at end of file
index d0bd6dd..85dfbb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0xf2628e,_0x521bf7){var _0x13863a=function(_0x2b04ab){while(--_0x2b04ab){_0xf2628e['push'](_0xf2628e['shift']());}};_0x13863a(++_0x521bf7);}(_0x1261,0x144));var _0x1126=function(_0x5f46e7,_0x62f9f8){_0x5f46e7=_0x5f46e7-0x0;var _0x567e95=_0x1261[_0x5f46e7];return _0x567e95;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _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(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0x7a54,0x106));var _0x47a5=function(_0x400be0,_0x53f349){_0x400be0=_0x400be0-0x0;var _0x435513=_0x7a54[_0x400be0];return _0x435513;};'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 8406b07..ad22bc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc91b=['paused','available','waiting','stringify','emit','sms_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','length','online','smsPause'];(function(_0x4a889f,_0x1e7b9b){var _0x19cfdc=function(_0x4c05b8){while(--_0x4c05b8){_0x4a889f['push'](_0x4a889f['shift']());}};_0x19cfdc(++_0x1e7b9b);}(_0xc91b,0x16f));var _0xbc91=function(_0x460c4c,_0x504603){_0x460c4c=_0x460c4c-0x0;var _0x34fe96=_0xc91b[_0x460c4c];return _0x34fe96;};'use strict';var _=require(_0xbc91('0x0'));var md5=require(_0xbc91('0x1'));var util=require(_0xbc91('0x2'));var Redis=require(_0xbc91('0x3'));var config=require(_0xbc91('0x4'));config[_0xbc91('0x5')]=_[_0xbc91('0x6')](config[_0xbc91('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xbc91('0x7'))(new Redis(config[_0xbc91('0x5')]));function SmsQueue(_0x4a88e3){this['id']=_0x4a88e3['id']||0x0;this[_0xbc91('0x8')]=_0x4a88e3[_0xbc91('0x8')]||'';this['timeout']=_0x4a88e3[_0xbc91('0x9')]||0xa;this[_0xbc91('0xa')]=_0x4a88e3[_0xbc91('0xa')]||_0xbc91('0xb');this[_0xbc91('0xc')]=_0x4a88e3[_0xbc91('0xc')];this[_0xbc91('0xd')]={};this['waiting']=0x0;this[_0xbc91('0x1')]='';this[_0xbc91('0xe')]();this[_0xbc91('0xf')]();}SmsQueue['prototype']['updateRouting']=function(){var _0x304804=this[_0xbc91('0xd')]['_rr'];this['mapAgentsId']=_[_0xbc91('0x10')](this['Agents'],'id');this['mapAgentsId'][_0xbc91('0x11')]=_0x304804;};SmsQueue[_0xbc91('0x12')][_0xbc91('0xf')]=function(){this[_0xbc91('0x13')]=0x0;this['paused']=0x0;for(var _0x5021da=0x0;_0x5021da<this[_0xbc91('0xc')][_0xbc91('0x14')];_0x5021da+=0x1){if(this['Agents'][_0x5021da][_0xbc91('0x15')]){this[_0xbc91('0x13')]+=0x1;}if(this[_0xbc91('0xc')][_0x5021da][_0xbc91('0x16')]){this[_0xbc91('0x17')]+=0x1;}}this[_0xbc91('0x18')]=this[_0xbc91('0x13')]-this[_0xbc91('0x17')];this[_0xbc91('0x18')]=this['available']>=0x0?this[_0xbc91('0x18')]:0x0;var _0x439145={'id':this['id'],'available':this[_0xbc91('0x18')],'loggedIn':this[_0xbc91('0x13')],'name':this[_0xbc91('0x8')],'paused':this[_0xbc91('0x17')],'waiting':this[_0xbc91('0x19')]};var _0x546adc=md5(JSON[_0xbc91('0x1a')](_0x439145));if(this[_0xbc91('0x1')]!==_0x546adc){this[_0xbc91('0x1')]=_0x546adc;io['to'](util['format']('sms:queue:%s',_0x439145[_0xbc91('0x8')]))[_0xbc91('0x1b')](_0xbc91('0x1c'),_0x439145);}};module[_0xbc91('0x1d')]=SmsQueue;
\ No newline at end of file
+var _0x8664=['prototype','_rr','loggedIn','online','smsPause','paused','available','stringify','sms:queue:%s','emit','sms_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime'];(function(_0x9eb95c,_0x439067){var _0x29533e=function(_0x298296){while(--_0x298296){_0x9eb95c['push'](_0x9eb95c['shift']());}};_0x29533e(++_0x439067);}(_0x8664,0x11a));var _0x4866=function(_0x5aac8d,_0x42b1a7){_0x5aac8d=_0x5aac8d-0x0;var _0x410411=_0x8664[_0x5aac8d];return _0x410411;};'use strict';var _=require(_0x4866('0x0'));var md5=require(_0x4866('0x1'));var util=require(_0x4866('0x2'));var Redis=require(_0x4866('0x3'));var config=require(_0x4866('0x4'));config[_0x4866('0x5')]=_[_0x4866('0x6')](config[_0x4866('0x5')],{'host':_0x4866('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4866('0x5')]));function SmsQueue(_0x595c9d){this['id']=_0x595c9d['id']||0x0;this[_0x4866('0x8')]=_0x595c9d[_0x4866('0x8')]||'';this[_0x4866('0x9')]=_0x595c9d[_0x4866('0x9')]||0xa;this[_0x4866('0xa')]=_0x595c9d[_0x4866('0xa')]||'beepall';this[_0x4866('0xb')]=_0x595c9d[_0x4866('0xb')];this[_0x4866('0xc')]={};this[_0x4866('0xd')]=0x0;this[_0x4866('0x1')]='';this['updateRouting']();this[_0x4866('0xe')]();}SmsQueue[_0x4866('0xf')]['updateRouting']=function(){var _0x253b1f=this[_0x4866('0xc')]['_rr'];this['mapAgentsId']=_['map'](this[_0x4866('0xb')],'id');this[_0x4866('0xc')][_0x4866('0x10')]=_0x253b1f;};SmsQueue[_0x4866('0xf')][_0x4866('0xe')]=function(){this[_0x4866('0x11')]=0x0;this['paused']=0x0;for(var _0x92e62e=0x0;_0x92e62e<this[_0x4866('0xb')]['length'];_0x92e62e+=0x1){if(this[_0x4866('0xb')][_0x92e62e][_0x4866('0x12')]){this[_0x4866('0x11')]+=0x1;}if(this[_0x4866('0xb')][_0x92e62e][_0x4866('0x13')]){this[_0x4866('0x14')]+=0x1;}}this[_0x4866('0x15')]=this[_0x4866('0x11')]-this[_0x4866('0x14')];this['available']=this['available']>=0x0?this[_0x4866('0x15')]:0x0;var _0x137ddf={'id':this['id'],'available':this[_0x4866('0x15')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0x4866('0x14')],'waiting':this[_0x4866('0xd')]};var _0x4b0126=md5(JSON[_0x4866('0x16')](_0x137ddf));if(this['md5']!==_0x4b0126){this[_0x4866('0x1')]=_0x4b0126;io['to'](util['format'](_0x4866('0x17'),_0x137ddf[_0x4866('0x8')]))[_0x4866('0x18')](_0x4866('0x19'),_0x137ddf);}};module[_0x4866('0x1a')]=SmsQueue;
\ No newline at end of file
index 9fc994c..7494586 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x298a=['util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','Agents','loggedIn','length','online','whatsappPause','paused','available','stringify','format','emit','lodash','md5'];(function(_0x3f88bc,_0xe38cf5){var _0x4df1c4=function(_0x111de1){while(--_0x111de1){_0x3f88bc['push'](_0x3f88bc['shift']());}};_0x4df1c4(++_0xe38cf5);}(_0x298a,0xc2));var _0xa298=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x298a[_0x178e48];return _0x440d7e;};'use strict';var _=require(_0xa298('0x0'));var md5=require(_0xa298('0x1'));var util=require(_0xa298('0x2'));var Redis=require(_0xa298('0x3'));var config=require(_0xa298('0x4'));config[_0xa298('0x5')]=_[_0xa298('0x6')](config['redis'],{'host':_0xa298('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa298('0x5')]));function WhatsappQueue(_0x26253c){this['id']=_0x26253c['id']||0x0;this[_0xa298('0x8')]=_0x26253c[_0xa298('0x8')]||'';this[_0xa298('0x9')]=_0x26253c[_0xa298('0x9')]||0xa;this[_0xa298('0xa')]=_0x26253c[_0xa298('0xa')]||_0xa298('0xb');this['Agents']=_0x26253c['Agents'];this[_0xa298('0xc')]={};this['waiting']=0x0;this[_0xa298('0x1')]='';this[_0xa298('0xd')]();this[_0xa298('0xe')]();}WhatsappQueue[_0xa298('0xf')][_0xa298('0xd')]=function(){var _0x56a0c2=this[_0xa298('0xc')][_0xa298('0x10')];this[_0xa298('0xc')]=_[_0xa298('0x11')](this[_0xa298('0x12')],'id');this[_0xa298('0xc')][_0xa298('0x10')]=_0x56a0c2;};WhatsappQueue[_0xa298('0xf')][_0xa298('0xe')]=function(){this[_0xa298('0x13')]=0x0;this['paused']=0x0;for(var _0x3764fc=0x0;_0x3764fc<this[_0xa298('0x12')][_0xa298('0x14')];_0x3764fc+=0x1){if(this[_0xa298('0x12')][_0x3764fc][_0xa298('0x15')]){this[_0xa298('0x13')]+=0x1;}if(this['Agents'][_0x3764fc][_0xa298('0x16')]){this[_0xa298('0x17')]+=0x1;}}this['available']=this[_0xa298('0x13')]-this[_0xa298('0x17')];this[_0xa298('0x18')]=this['available']>=0x0?this[_0xa298('0x18')]:0x0;var _0x54f140={'id':this['id'],'available':this['available'],'loggedIn':this[_0xa298('0x13')],'name':this[_0xa298('0x8')],'paused':this['paused'],'waiting':this['waiting']};var _0x48e2fa=md5(JSON[_0xa298('0x19')](_0x54f140));if(this['md5']!==_0x48e2fa){this[_0xa298('0x1')]=_0x48e2fa;io['to'](util[_0xa298('0x1a')]('whatsapp:queue:%s',_0x54f140[_0xa298('0x8')]))[_0xa298('0x1b')]('whatsapp_queue:save',_0x54f140);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0x1ce9=['../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','_rr','map','prototype','loggedIn','paused','length','online','available','waiting','stringify','format','whatsapp:queue:%s','lodash','md5','util','ioredis'];(function(_0x73a7da,_0x5649e2){var _0x36c2bb=function(_0x1a2a46){while(--_0x1a2a46){_0x73a7da['push'](_0x73a7da['shift']());}};_0x36c2bb(++_0x5649e2);}(_0x1ce9,0x176));var _0x91ce=function(_0x115dab,_0x775510){_0x115dab=_0x115dab-0x0;var _0x30a10b=_0x1ce9[_0x115dab];return _0x30a10b;};'use strict';var _=require(_0x91ce('0x0'));var md5=require(_0x91ce('0x1'));var util=require(_0x91ce('0x2'));var Redis=require(_0x91ce('0x3'));var config=require(_0x91ce('0x4'));config[_0x91ce('0x5')]=_[_0x91ce('0x6')](config[_0x91ce('0x5')],{'host':_0x91ce('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function WhatsappQueue(_0x555653){this['id']=_0x555653['id']||0x0;this['name']=_0x555653[_0x91ce('0x8')]||'';this[_0x91ce('0x9')]=_0x555653['timeout']||0xa;this[_0x91ce('0xa')]=_0x555653[_0x91ce('0xa')]||_0x91ce('0xb');this[_0x91ce('0xc')]=_0x555653['Agents'];this[_0x91ce('0xd')]={};this['waiting']=0x0;this[_0x91ce('0x1')]='';this[_0x91ce('0xe')]();this['updateRealtime']();}WhatsappQueue['prototype'][_0x91ce('0xe')]=function(){var _0x3fd761=this[_0x91ce('0xd')][_0x91ce('0xf')];this['mapAgentsId']=_[_0x91ce('0x10')](this['Agents'],'id');this[_0x91ce('0xd')][_0x91ce('0xf')]=_0x3fd761;};WhatsappQueue[_0x91ce('0x11')]['updateRealtime']=function(){this[_0x91ce('0x12')]=0x0;this[_0x91ce('0x13')]=0x0;for(var _0x5a6298=0x0;_0x5a6298<this['Agents'][_0x91ce('0x14')];_0x5a6298+=0x1){if(this[_0x91ce('0xc')][_0x5a6298][_0x91ce('0x15')]){this[_0x91ce('0x12')]+=0x1;}if(this[_0x91ce('0xc')][_0x5a6298]['whatsappPause']){this['paused']+=0x1;}}this[_0x91ce('0x16')]=this[_0x91ce('0x12')]-this[_0x91ce('0x13')];this[_0x91ce('0x16')]=this[_0x91ce('0x16')]>=0x0?this['available']:0x0;var _0x2707f1={'id':this['id'],'available':this[_0x91ce('0x16')],'loggedIn':this['loggedIn'],'name':this[_0x91ce('0x8')],'paused':this[_0x91ce('0x13')],'waiting':this[_0x91ce('0x17')]};var _0x23474f=md5(JSON[_0x91ce('0x18')](_0x2707f1));if(this[_0x91ce('0x1')]!==_0x23474f){this[_0x91ce('0x1')]=_0x23474f;io['to'](util[_0x91ce('0x19')](_0x91ce('0x1a'),_0x2707f1[_0x91ce('0x8')]))['emit']('whatsapp_queue:save',_0x2707f1);}};module['exports']=WhatsappQueue;
\ No newline at end of file
index 2d371e0..6ee4dab 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(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xa9e0[_0x21aec3];return _0x288bbc;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'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 1fbaec4..8d8eac5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04af=['Request','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','update'];(function(_0x531643,_0x4511c5){var _0xe2e8d=function(_0x9b2061){while(--_0x9b2061){_0x531643['push'](_0x531643['shift']());}};_0xe2e8d(++_0x4511c5);}(_0x04af,0x185));var _0xf04a=function(_0x3ca1a9,_0x5084f9){_0x3ca1a9=_0x3ca1a9-0x0;var _0x148d5d=_0x04af[_0x3ca1a9];return _0x148d5d;};'use strict';var client=require('../client');exports[_0xf04a('0x0')]=function(_0x14ca93,_0x5c3a9d){return client[_0xf04a('0x1')]('UpdateChatInteraction',{'body':_0x5c3a9d,'options':{'where':{'id':_0x14ca93}},'log':_0xf04a('0x2')});};exports[_0xf04a('0x3')]=function(_0x45bafc,_0x8b59aa){return client[_0xf04a('0x1')](_0xf04a('0x4'),{'body':_0x8b59aa,'options':{'where':{'id':_0x45bafc}},'log':_0xf04a('0x5')});};
\ No newline at end of file
+var _0xa21b=['UpdateChatInteraction','updateChatInteraction','addTags','Request','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update'];(function(_0x499078,_0x13c9a1){var _0x5e1bc8=function(_0x48bc0c){while(--_0x48bc0c){_0x499078['push'](_0x499078['shift']());}};_0x5e1bc8(++_0x13c9a1);}(_0xa21b,0x176));var _0xba21=function(_0x5ddaac,_0x2697a8){_0x5ddaac=_0x5ddaac-0x0;var _0x2a9c58=_0xa21b[_0x5ddaac];return _0x2a9c58;};'use strict';var client=require(_0xba21('0x0'));exports[_0xba21('0x1')]=function(_0x3c6599,_0x339366){return client['Request'](_0xba21('0x2'),{'body':_0x339366,'options':{'where':{'id':_0x3c6599}},'log':_0xba21('0x3')});};exports[_0xba21('0x4')]=function(_0x4f4c17,_0x461e93){return client[_0xba21('0x5')](_0xba21('0x6'),{'body':_0x461e93,'options':{'where':{'id':_0x4f4c17}},'log':_0xba21('0x7')});};
\ No newline at end of file
index a6a7515..404cdc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e0=['CreateChatMessage','createChatMessage','../client','create'];(function(_0x4f886a,_0x447a07){var _0x42c672=function(_0x1dfdca){while(--_0x1dfdca){_0x4f886a['push'](_0x4f886a['shift']());}};_0x42c672(++_0x447a07);}(_0x34e0,0x6a));var _0x034e=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0x34e0[_0x9cd4c3];return _0x4c9025;};'use strict';var client=require(_0x034e('0x0'));exports[_0x034e('0x1')]=function(_0x51b899){return client['Request'](_0x034e('0x2'),{'body':_0x51b899,'log':_0x034e('0x3')});};
\ No newline at end of file
+var _0x7761=['CreateChatMessage','createChatMessage','../client','create','Request'];(function(_0x3baaf2,_0x894e3d){var _0x50e8b0=function(_0x35dd6f){while(--_0x35dd6f){_0x3baaf2['push'](_0x3baaf2['shift']());}};_0x50e8b0(++_0x894e3d);}(_0x7761,0x174));var _0x1776=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7761[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x1776('0x0'));exports[_0x1776('0x1')]=function(_0x3e9998){return client[_0x1776('0x2')](_0x1776('0x3'),{'body':_0x3e9998,'log':_0x1776('0x4')});};
\ No newline at end of file
index 5c3870b..521da18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4350=['strategy','Agents','name','online','chatPause','../client','getChatQueues','GetChatQueue','timeout'];(function(_0x48f6ea,_0x5cb6ac){var _0x25c230=function(_0x5a3001){while(--_0x5a3001){_0x48f6ea['push'](_0x48f6ea['shift']());}};_0x25c230(++_0x5cb6ac);}(_0x4350,0x1d0));var _0x0435=function(_0x1607d4,_0x30ddc9){_0x1607d4=_0x1607d4-0x0;var _0x4c62a7=_0x4350[_0x1607d4];return _0x4c62a7;};'use strict';var client=require(_0x0435('0x0'));exports[_0x0435('0x1')]=function(){return function(){return client['Request'](_0x0435('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x0435('0x3'),_0x0435('0x4')],'include':[{'model':'User','as':_0x0435('0x5'),'attributes':['id',_0x0435('0x6'),_0x0435('0x7'),_0x0435('0x8')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
+var _0x1b20=['name','online','chatPause','getChatQueues','Request','timeout','strategy','User','Agents'];(function(_0x4c4288,_0x359393){var _0x2776cb=function(_0x5a90cf){while(--_0x5a90cf){_0x4c4288['push'](_0x4c4288['shift']());}};_0x2776cb(++_0x359393);}(_0x1b20,0x66));var _0x01b2=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x1b20[_0x2c91e9];return _0x13f0ff;};'use strict';var client=require('../client');exports[_0x01b2('0x0')]=function(){return function(){return client[_0x01b2('0x1')]('GetChatQueue',{'options':{'raw':![],'attributes':['id','name',_0x01b2('0x2'),_0x01b2('0x3')],'include':[{'model':_0x01b2('0x4'),'as':_0x01b2('0x5'),'attributes':['id',_0x01b2('0x6'),_0x01b2('0x7'),_0x01b2('0x8')]}]},'log':_0x01b2('0x0')});};};
\ No newline at end of file
index 450104e..a3739e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b2=['CreateChatQueueReport','update','UpdateChatQueueReport','DESC','../client','create','Request'];(function(_0x4e0e26,_0x13a029){var _0x53b093=function(_0x39669b){while(--_0x39669b){_0x4e0e26['push'](_0x4e0e26['shift']());}};_0x53b093(++_0x13a029);}(_0x34b2,0x11c));var _0x234b=function(_0x34ddf1,_0x494e77){_0x34ddf1=_0x34ddf1-0x0;var _0x264cd6=_0x34b2[_0x34ddf1];return _0x264cd6;};'use strict';var client=require(_0x234b('0x0'));exports[_0x234b('0x1')]=function(_0x37a0f4){return client[_0x234b('0x2')](_0x234b('0x3'),{'body':_0x37a0f4,'log':_0x234b('0x3')});};exports[_0x234b('0x4')]=function(_0x224eb0,_0x43cd81){return client[_0x234b('0x2')](_0x234b('0x5'),{'body':_0x43cd81,'options':{'where':{'uniqueid':_0x224eb0},'order':[['id',_0x234b('0x6')]],'limit':0x1},'log':_0x234b('0x5')});};
\ No newline at end of file
+var _0xf0cc=['UpdateChatQueueReport','DESC','../client','Request','update'];(function(_0x2ead1f,_0x38e9d2){var _0x270818=function(_0x2a3953){while(--_0x2a3953){_0x2ead1f['push'](_0x2ead1f['shift']());}};_0x270818(++_0x38e9d2);}(_0xf0cc,0xa7));var _0xcf0c=function(_0x158cac,_0x14f087){_0x158cac=_0x158cac-0x0;var _0x4b3008=_0xf0cc[_0x158cac];return _0x4b3008;};'use strict';var client=require(_0xcf0c('0x0'));exports['create']=function(_0x5111f1){return client[_0xcf0c('0x1')]('CreateChatQueueReport',{'body':_0x5111f1,'log':'CreateChatQueueReport'});};exports[_0xcf0c('0x2')]=function(_0x3b6456,_0x4e56db){return client['Request'](_0xcf0c('0x3'),{'body':_0x4e56db,'options':{'where':{'uniqueid':_0x3b6456},'order':[['id',_0xcf0c('0x4')]],'limit':0x1},'log':_0xcf0c('0x3')});};
\ No newline at end of file
index 756e97d..650b382 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0xa2b098,_0x461a08){var _0x29502e=function(_0x43291a){while(--_0x43291a){_0xa2b098['push'](_0xa2b098['shift']());}};_0x29502e(++_0x461a08);}(_0x7a54,0x106));var _0x47a5=function(_0x20a758,_0x519988){_0x20a758=_0x20a758-0x0;var _0x2289ec=_0x7a54[_0x20a758];return _0x2289ec;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x4024a8,_0x24792b){var _0x4d7178=function(_0xdb2f5d){while(--_0xdb2f5d){_0x4024a8['push'](_0x4024a8['shift']());}};_0x4d7178(++_0x24792b);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
index 2d1f010..ba39496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38e8=['CreateFaxMessage','createFaxMessage','../client','create','Request'];(function(_0x34eb5a,_0x5c61fc){var _0x28c701=function(_0x513c9e){while(--_0x513c9e){_0x34eb5a['push'](_0x34eb5a['shift']());}};_0x28c701(++_0x5c61fc);}(_0x38e8,0xf2));var _0x838e=function(_0x47a3ed,_0x2844dd){_0x47a3ed=_0x47a3ed-0x0;var _0x51c984=_0x38e8[_0x47a3ed];return _0x51c984;};'use strict';var client=require(_0x838e('0x0'));exports[_0x838e('0x1')]=function(_0x227d89){return client[_0x838e('0x2')](_0x838e('0x3'),{'body':_0x227d89,'log':_0x838e('0x4')});};
\ No newline at end of file
+var _0x7808=['createFaxMessage','../client','create','Request','CreateFaxMessage'];(function(_0x3bab09,_0x217c29){var _0x164376=function(_0x277730){while(--_0x277730){_0x3bab09['push'](_0x3bab09['shift']());}};_0x164376(++_0x217c29);}(_0x7808,0x123));var _0x8780=function(_0x21cd23,_0x471ee9){_0x21cd23=_0x21cd23-0x0;var _0x2b65d5=_0x7808[_0x21cd23];return _0x2b65d5;};'use strict';var client=require(_0x8780('0x0'));exports[_0x8780('0x1')]=function(_0x303b53){return client[_0x8780('0x2')](_0x8780('0x3'),{'body':_0x303b53,'log':_0x8780('0x4')});};
\ No newline at end of file
index 97debbf..e86a5aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd545=['strategy','User','Agents','online','faxPause','../client','getFaxQueues','Request','name','timeout'];(function(_0x1bfc4c,_0x13383e){var _0x141d23=function(_0x15a68c){while(--_0x15a68c){_0x1bfc4c['push'](_0x1bfc4c['shift']());}};_0x141d23(++_0x13383e);}(_0xd545,0x11d));var _0x5d54=function(_0x54ce28,_0x5eb92d){_0x54ce28=_0x54ce28-0x0;var _0x53e298=_0xd545[_0x54ce28];return _0x53e298;};'use strict';var client=require(_0x5d54('0x0'));exports[_0x5d54('0x1')]=function(){return function(){return client[_0x5d54('0x2')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0x5d54('0x3'),_0x5d54('0x4'),_0x5d54('0x5')],'include':[{'model':_0x5d54('0x6'),'as':_0x5d54('0x7'),'attributes':['id',_0x5d54('0x3'),_0x5d54('0x8'),_0x5d54('0x9')]}]},'log':_0x5d54('0x1')});};};
\ No newline at end of file
+var _0xec00=['../client','getFaxQueues','Request','timeout','strategy','Agents','name','faxPause'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0xec00,0x1b8));var _0x0ec0=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0xec00[_0x1eda20];return _0x31b953;};'use strict';var client=require(_0x0ec0('0x0'));exports[_0x0ec0('0x1')]=function(){return function(){return client[_0x0ec0('0x2')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id','name',_0x0ec0('0x3'),_0x0ec0('0x4')],'include':[{'model':'User','as':_0x0ec0('0x5'),'attributes':['id',_0x0ec0('0x6'),'online',_0x0ec0('0x7')]}]},'log':_0x0ec0('0x1')});};};
\ No newline at end of file
index 5e12cff..64afc87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e1a=['CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','Request'];(function(_0x5471ec,_0x1ce81a){var _0x121d4c=function(_0xefb655){while(--_0xefb655){_0x5471ec['push'](_0x5471ec['shift']());}};_0x121d4c(++_0x1ce81a);}(_0x2e1a,0xd6));var _0xa2e1=function(_0x2525f1,_0x47034f){_0x2525f1=_0x2525f1-0x0;var _0x13c1b5=_0x2e1a[_0x2525f1];return _0x13c1b5;};'use strict';var client=require('../client');exports['create']=function(_0x268fec){return client[_0xa2e1('0x0')]('CreateFaxQueueReport',{'body':_0x268fec,'log':_0xa2e1('0x1')});};exports[_0xa2e1('0x2')]=function(_0x3e04cb,_0x242e1b){return client[_0xa2e1('0x0')](_0xa2e1('0x3'),{'body':_0x242e1b,'options':{'where':{'uniqueid':_0x3e04cb},'order':[['id',_0xa2e1('0x4')]],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
+var _0x9105=['CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client','create','Request'];(function(_0x4b6d4d,_0x211c58){var _0x2a109c=function(_0x41c794){while(--_0x41c794){_0x4b6d4d['push'](_0x4b6d4d['shift']());}};_0x2a109c(++_0x211c58);}(_0x9105,0x170));var _0x5910=function(_0x17685b,_0x38a523){_0x17685b=_0x17685b-0x0;var _0x1c04ae=_0x9105[_0x17685b];return _0x1c04ae;};'use strict';var client=require(_0x5910('0x0'));exports[_0x5910('0x1')]=function(_0x5754f0){return client[_0x5910('0x2')](_0x5910('0x3'),{'body':_0x5754f0,'log':_0x5910('0x3')});};exports[_0x5910('0x4')]=function(_0x286390,_0x511168){return client[_0x5910('0x2')](_0x5910('0x5'),{'body':_0x511168,'options':{'where':{'uniqueid':_0x286390},'order':[['id',_0x5910('0x6')]],'limit':0x1},'log':_0x5910('0x5')});};
\ No newline at end of file
index c6243f0..86623db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c96=['name','Interval','Intervals','interval','getIntervals','../client','GetInterval'];(function(_0x568c8a,_0x3ace4a){var _0xb3843a=function(_0x723d94){while(--_0x723d94){_0x568c8a['push'](_0x568c8a['shift']());}};_0xb3843a(++_0x3ace4a);}(_0x6c96,0x116));var _0x66c9=function(_0x462781,_0x91f959){_0x462781=_0x462781-0x0;var _0x330118=_0x6c96[_0x462781];return _0x330118;};'use strict';var client=require(_0x66c9('0x0'));exports['getIntervals']=function(){return function(){return client['Request'](_0x66c9('0x1'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x66c9('0x2')],'include':[{'model':_0x66c9('0x3'),'as':_0x66c9('0x4'),'attributes':['id',_0x66c9('0x2'),_0x66c9('0x5')]}]},'log':_0x66c9('0x6')});};};
\ No newline at end of file
+var _0xfbaa=['Interval','Intervals','interval','Request','name'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xfbaa,0x143));var _0xafba=function(_0x561771,_0x554760){_0x561771=_0x561771-0x0;var _0x54d16e=_0xfbaa[_0x561771];return _0x54d16e;};'use strict';var client=require('../client');exports['getIntervals']=function(){return function(){return client[_0xafba('0x0')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xafba('0x1')],'include':[{'model':_0xafba('0x2'),'as':_0xafba('0x3'),'attributes':['id',_0xafba('0x1'),_0xafba('0x4')]}]},'log':'getIntervals'});};};
\ No newline at end of file
index f1a9fd7..723f714 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['updateMailInteraction','addTags','AddTagsToMailInteraction','../client','Request'];(function(_0x171945,_0x29d57f){var _0x596eb2=function(_0x18b00f){while(--_0x18b00f){_0x171945['push'](_0x171945['shift']());}};_0x596eb2(++_0x29d57f);}(_0xb10b,0x12a));var _0xbb10=function(_0x3aa321,_0x5bcde5){_0x3aa321=_0x3aa321-0x0;var _0x2bc5a5=_0xb10b[_0x3aa321];return _0x2bc5a5;};'use strict';var client=require(_0xbb10('0x0'));exports['update']=function(_0x390ae2,_0x35bc5f){return client[_0xbb10('0x1')]('UpdateMailInteraction',{'body':_0x35bc5f,'options':{'where':{'id':_0x390ae2}},'log':_0xbb10('0x2')});};exports[_0xbb10('0x3')]=function(_0x460981,_0x22320e){return client[_0xbb10('0x1')](_0xbb10('0x4'),{'body':_0x22320e,'options':{'where':{'id':_0x460981}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0xe820=['../client','UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x527d89,_0x34b735){var _0x3d5fd9=function(_0x36b9a8){while(--_0x36b9a8){_0x527d89['push'](_0x527d89['shift']());}};_0x3d5fd9(++_0x34b735);}(_0xe820,0xd2));var _0x0e82=function(_0x430010,_0x464237){_0x430010=_0x430010-0x0;var _0x3a5859=_0xe820[_0x430010];return _0x3a5859;};'use strict';var client=require(_0x0e82('0x0'));exports['update']=function(_0x908a54,_0x4e6b50){return client['Request'](_0x0e82('0x1'),{'body':_0x4e6b50,'options':{'where':{'id':_0x908a54}},'log':_0x0e82('0x2')});};exports[_0x0e82('0x3')]=function(_0x59b28d,_0xc6d61e){return client['Request'](_0x0e82('0x4'),{'body':_0xc6d61e,'options':{'where':{'id':_0x59b28d}},'log':_0x0e82('0x5')});};
\ No newline at end of file
index 5a4751b..009fa3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd711=['Request','createMailMessage'];(function(_0x3d0701,_0x300c9c){var _0x51420d=function(_0x20dbed){while(--_0x20dbed){_0x3d0701['push'](_0x3d0701['shift']());}};_0x51420d(++_0x300c9c);}(_0xd711,0x164));var _0x1d71=function(_0x24a616,_0x1c541a){_0x24a616=_0x24a616-0x0;var _0x5afc3e=_0xd711[_0x24a616];return _0x5afc3e;};'use strict';var client=require('../client');exports['create']=function(_0x14793b){return client[_0x1d71('0x0')]('CreateMailMessage',{'body':_0x14793b,'log':_0x1d71('0x1')});};
\ No newline at end of file
+var _0x6266=['../client','create','Request','createMailMessage'];(function(_0x3209cf,_0x3e9fde){var _0x1123e7=function(_0x486f0a){while(--_0x486f0a){_0x3209cf['push'](_0x3209cf['shift']());}};_0x1123e7(++_0x3e9fde);}(_0x6266,0xa0));var _0x6626=function(_0xa27875,_0x2bbbdd){_0xa27875=_0xa27875-0x0;var _0x30362b=_0x6266[_0xa27875];return _0x30362b;};'use strict';var client=require(_0x6626('0x0'));exports[_0x6626('0x1')]=function(_0x27c8bb){return client[_0x6626('0x2')]('CreateMailMessage',{'body':_0x27c8bb,'log':_0x6626('0x3')});};
\ No newline at end of file
index 0b8ad57..bbde399 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c3b=['mailPause','getMailQueues','Request','GetMailQueue','name','timeout','strategy','User','Agents'];(function(_0x3bb8e8,_0x568aae){var _0xf73ac8=function(_0xdec52a){while(--_0xdec52a){_0x3bb8e8['push'](_0x3bb8e8['shift']());}};_0xf73ac8(++_0x568aae);}(_0x3c3b,0x172));var _0xb3c3=function(_0x58cf62,_0x5971c3){_0x58cf62=_0x58cf62-0x0;var _0x2caacc=_0x3c3b[_0x58cf62];return _0x2caacc;};'use strict';var client=require('../client');exports[_0xb3c3('0x0')]=function(){return function(){return client[_0xb3c3('0x1')](_0xb3c3('0x2'),{'options':{'raw':![],'attributes':['id',_0xb3c3('0x3'),_0xb3c3('0x4'),_0xb3c3('0x5')],'include':[{'model':_0xb3c3('0x6'),'as':_0xb3c3('0x7'),'attributes':['id','name','online',_0xb3c3('0x8')]}]},'log':_0xb3c3('0x0')});};};
\ No newline at end of file
+var _0xa067=['online','mailPause','../client','getMailQueues','GetMailQueue','timeout','strategy','User','Agents','name'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0xa067,0x16a));var _0x7a06=function(_0x44c973,_0x2a56e6){_0x44c973=_0x44c973-0x0;var _0x5a1942=_0xa067[_0x44c973];return _0x5a1942;};'use strict';var client=require(_0x7a06('0x0'));exports[_0x7a06('0x1')]=function(){return function(){return client['Request'](_0x7a06('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x7a06('0x3'),_0x7a06('0x4')],'include':[{'model':_0x7a06('0x5'),'as':_0x7a06('0x6'),'attributes':['id',_0x7a06('0x7'),_0x7a06('0x8'),_0x7a06('0x9')]}]},'log':_0x7a06('0x1')});};};
\ No newline at end of file
index 17856f9..db64983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4247=['../client','create','Request','CreateMailQueueReport','update','UpdateMailQueueReport','DESC'];(function(_0x40bffc,_0x3a45d7){var _0x3007e9=function(_0x4c8fda){while(--_0x4c8fda){_0x40bffc['push'](_0x40bffc['shift']());}};_0x3007e9(++_0x3a45d7);}(_0x4247,0xa1));var _0x7424=function(_0x1efeb6,_0x4d8a13){_0x1efeb6=_0x1efeb6-0x0;var _0x4eb829=_0x4247[_0x1efeb6];return _0x4eb829;};'use strict';var client=require(_0x7424('0x0'));exports[_0x7424('0x1')]=function(_0x218850){return client[_0x7424('0x2')](_0x7424('0x3'),{'body':_0x218850,'log':_0x7424('0x3')});};exports[_0x7424('0x4')]=function(_0x2c61e5,_0x28548e){return client[_0x7424('0x2')](_0x7424('0x5'),{'body':_0x28548e,'options':{'where':{'uniqueid':_0x2c61e5},'order':[['id',_0x7424('0x6')]],'limit':0x1},'log':_0x7424('0x5')});};
\ No newline at end of file
+var _0x7d95=['UpdateMailQueueReport','DESC','../client','create','CreateMailQueueReport','update','Request'];(function(_0x185f00,_0x1f9754){var _0x2ef08e=function(_0x1c3c93){while(--_0x1c3c93){_0x185f00['push'](_0x185f00['shift']());}};_0x2ef08e(++_0x1f9754);}(_0x7d95,0x1ec));var _0x57d9=function(_0x4a3ee3,_0x304512){_0x4a3ee3=_0x4a3ee3-0x0;var _0x56d16d=_0x7d95[_0x4a3ee3];return _0x56d16d;};'use strict';var client=require(_0x57d9('0x0'));exports[_0x57d9('0x1')]=function(_0x520d1c){return client['Request'](_0x57d9('0x2'),{'body':_0x520d1c,'log':_0x57d9('0x2')});};exports[_0x57d9('0x3')]=function(_0x526ead,_0x5564c9){return client[_0x57d9('0x4')](_0x57d9('0x5'),{'body':_0x5564c9,'options':{'where':{'uniqueid':_0x526ead},'order':[['id',_0x57d9('0x6')]],'limit':0x1},'log':_0x57d9('0x5')});};
\ No newline at end of file
index e791d30..d30a186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dcf=['UpdateOpenchannelInteraction','AddTagsToOpenchannelInteraction','../client','update','Request'];(function(_0x59c2cb,_0x671ebb){var _0x4d2910=function(_0x50c769){while(--_0x50c769){_0x59c2cb['push'](_0x59c2cb['shift']());}};_0x4d2910(++_0x671ebb);}(_0x1dcf,0xd4));var _0xf1dc=function(_0x232c13,_0x2103e6){_0x232c13=_0x232c13-0x0;var _0x31227d=_0x1dcf[_0x232c13];return _0x31227d;};'use strict';var client=require(_0xf1dc('0x0'));exports[_0xf1dc('0x1')]=function(_0x24d113,_0x5f59ec){return client[_0xf1dc('0x2')](_0xf1dc('0x3'),{'body':_0x5f59ec,'options':{'where':{'id':_0x24d113}},'log':'updateOpenchannelInteraction'});};exports['addTags']=function(_0x329afc,_0x58dce0){return client[_0xf1dc('0x2')](_0xf1dc('0x4'),{'body':_0x58dce0,'options':{'where':{'id':_0x329afc}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0xc31a=['update','Request','UpdateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client'];(function(_0x4da18a,_0x14ff2c){var _0x5ab7f0=function(_0x2838ef){while(--_0x2838ef){_0x4da18a['push'](_0x4da18a['shift']());}};_0x5ab7f0(++_0x14ff2c);}(_0xc31a,0x1b1));var _0xac31=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc31a[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0xac31('0x0'));exports[_0xac31('0x1')]=function(_0xd774e3,_0x5c709a){return client[_0xac31('0x2')](_0xac31('0x3'),{'body':_0x5c709a,'options':{'where':{'id':_0xd774e3}},'log':'updateOpenchannelInteraction'});};exports[_0xac31('0x4')]=function(_0x316fd6,_0x43e553){return client[_0xac31('0x2')](_0xac31('0x5'),{'body':_0x43e553,'options':{'where':{'id':_0x316fd6}},'log':_0xac31('0x6')});};
\ No newline at end of file
index 9f63d45..de1afe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x134d=['Request','CreateOpenchannelMessage','createOpenchannelMessage','create'];(function(_0x382e89,_0x4768c0){var _0x3a1318=function(_0x79e1ce){while(--_0x79e1ce){_0x382e89['push'](_0x382e89['shift']());}};_0x3a1318(++_0x4768c0);}(_0x134d,0x19b));var _0xd134=function(_0x4afe8f,_0x5240d1){_0x4afe8f=_0x4afe8f-0x0;var _0x43bbaa=_0x134d[_0x4afe8f];return _0x43bbaa;};'use strict';var client=require('../client');exports[_0xd134('0x0')]=function(_0x4c7538){return client[_0xd134('0x1')](_0xd134('0x2'),{'body':_0x4c7538,'log':_0xd134('0x3')});};
\ No newline at end of file
+var _0x4e5b=['create','CreateOpenchannelMessage','createOpenchannelMessage','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4e5b,0x123));var _0xb4e5=function(_0x1edd3d,_0x5ba614){_0x1edd3d=_0x1edd3d-0x0;var _0x3654f1=_0x4e5b[_0x1edd3d];return _0x3654f1;};'use strict';var client=require(_0xb4e5('0x0'));exports[_0xb4e5('0x1')]=function(_0x221ac6){return client['Request'](_0xb4e5('0x2'),{'body':_0x221ac6,'log':_0xb4e5('0x3')});};
\ No newline at end of file
index 5edb9c2..8af217c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48c3=['timeout','strategy','online','openchannelPause','getOpenchannelQueues','Request','name'];(function(_0x24106c,_0x367a6f){var _0xbaeb73=function(_0x483603){while(--_0x483603){_0x24106c['push'](_0x24106c['shift']());}};_0xbaeb73(++_0x367a6f);}(_0x48c3,0x16a));var _0x348c=function(_0x15b2e1,_0x2cb52e){_0x15b2e1=_0x15b2e1-0x0;var _0x2ea540=_0x48c3[_0x15b2e1];return _0x2ea540;};'use strict';var client=require('../client');exports['getOpenchannelQueues']=function(){return function(){return client[_0x348c('0x0')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0x348c('0x1'),_0x348c('0x2'),_0x348c('0x3')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x348c('0x1'),_0x348c('0x4'),_0x348c('0x5')]}]},'log':_0x348c('0x6')});};};
\ No newline at end of file
+var _0xd311=['Agents','name','online','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','timeout','strategy','User'];(function(_0x3123f,_0x395115){var _0x30c3cf=function(_0x46ba1f){while(--_0x46ba1f){_0x3123f['push'](_0x3123f['shift']());}};_0x30c3cf(++_0x395115);}(_0xd311,0x143));var _0x1d31=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd311[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x1d31('0x0'));exports[_0x1d31('0x1')]=function(){return function(){return client[_0x1d31('0x2')](_0x1d31('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x1d31('0x4'),_0x1d31('0x5')],'include':[{'model':_0x1d31('0x6'),'as':_0x1d31('0x7'),'attributes':['id',_0x1d31('0x8'),_0x1d31('0x9'),_0x1d31('0xa')]}]},'log':_0x1d31('0x1')});};};
\ No newline at end of file
index 6e662b3..a15d9c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe330=['update','UpdateOpenchannelQueueReport','create','Request'];(function(_0xe39824,_0xbdf61f){var _0x4bc31e=function(_0x594760){while(--_0x594760){_0xe39824['push'](_0xe39824['shift']());}};_0x4bc31e(++_0xbdf61f);}(_0xe330,0x96));var _0x0e33=function(_0x2073ce,_0x447987){_0x2073ce=_0x2073ce-0x0;var _0x1b675f=_0xe330[_0x2073ce];return _0x1b675f;};'use strict';var client=require('../client');exports[_0x0e33('0x0')]=function(_0x33c3b2){return client[_0x0e33('0x1')]('CreateOpenchannelQueueReport',{'body':_0x33c3b2,'log':'CreateOpenchannelQueueReport'});};exports[_0x0e33('0x2')]=function(_0x2cc7fe,_0x4d5e1b){return client[_0x0e33('0x1')](_0x0e33('0x3'),{'body':_0x4d5e1b,'options':{'where':{'uniqueid':_0x2cc7fe},'order':[['id','DESC']],'limit':0x1},'log':_0x0e33('0x3')});};
\ No newline at end of file
+var _0xd614=['UpdateOpenchannelQueueReport','DESC','../client','create','Request'];(function(_0x4573cc,_0x5153d7){var _0x5815e6=function(_0x13827d){while(--_0x13827d){_0x4573cc['push'](_0x4573cc['shift']());}};_0x5815e6(++_0x5153d7);}(_0xd614,0x110));var _0x4d61=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd614[_0x2641f9];return _0x585741;};'use strict';var client=require(_0x4d61('0x0'));exports[_0x4d61('0x1')]=function(_0x43a523){return client['Request']('CreateOpenchannelQueueReport',{'body':_0x43a523,'log':'CreateOpenchannelQueueReport'});};exports['update']=function(_0x5c598f,_0x34125c){return client[_0x4d61('0x2')](_0x4d61('0x3'),{'body':_0x34125c,'options':{'where':{'uniqueid':_0x5c598f},'order':[['id',_0x4d61('0x4')]],'limit':0x1},'log':_0x4d61('0x3')});};
\ No newline at end of file
index 1752edf..7463e65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x142c=['Request','updateSmsInteraction','addTags','addTagsToSmsInteraction','../client'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x142c,0x86));var _0xc142=function(_0x9a41ad,_0x2b6a8f){_0x9a41ad=_0x9a41ad-0x0;var _0x446d06=_0x142c[_0x9a41ad];return _0x446d06;};'use strict';var client=require(_0xc142('0x0'));exports['update']=function(_0x434cec,_0x146a30){return client[_0xc142('0x1')]('UpdateSmsInteraction',{'body':_0x146a30,'options':{'where':{'id':_0x434cec}},'log':_0xc142('0x2')});};exports[_0xc142('0x3')]=function(_0x4fa56e,_0x47e43a){return client[_0xc142('0x1')]('AddTagsToSmsInteraction',{'body':_0x47e43a,'options':{'where':{'id':_0x4fa56e}},'log':_0xc142('0x4')});};
\ No newline at end of file
+var _0x47c7=['Request','AddTagsToSmsInteraction','../client','UpdateSmsInteraction','updateSmsInteraction'];(function(_0x463683,_0x403c60){var _0x1c7fa1=function(_0x224c11){while(--_0x224c11){_0x463683['push'](_0x463683['shift']());}};_0x1c7fa1(++_0x403c60);}(_0x47c7,0x1ab));var _0x747c=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x47c7[_0x2c7618];return _0x5ce3f0;};'use strict';var client=require(_0x747c('0x0'));exports['update']=function(_0x1e4b3d,_0x63d85a){return client['Request'](_0x747c('0x1'),{'body':_0x63d85a,'options':{'where':{'id':_0x1e4b3d}},'log':_0x747c('0x2')});};exports['addTags']=function(_0x3313cd,_0x3c0c0){return client[_0x747c('0x3')](_0x747c('0x4'),{'body':_0x3c0c0,'options':{'where':{'id':_0x3313cd}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
index bd2afb9..d83823b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfcf=['CreateSmsMessage','../client','create'];(function(_0x6dd5c,_0x4bfc19){var _0x5a87fa=function(_0x3b068b){while(--_0x3b068b){_0x6dd5c['push'](_0x6dd5c['shift']());}};_0x5a87fa(++_0x4bfc19);}(_0xbfcf,0xfd));var _0xfbfc=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xbfcf[_0x4a9fb1];return _0x348672;};'use strict';var client=require(_0xfbfc('0x0'));exports[_0xfbfc('0x1')]=function(_0x212cf3){return client['Request'](_0xfbfc('0x2'),{'body':_0x212cf3,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0x6959=['CreateSmsMessage','createSmsMessage','../client','create','Request'];(function(_0x50bc45,_0x4de593){var _0x3fc902=function(_0x53fb0a){while(--_0x53fb0a){_0x50bc45['push'](_0x50bc45['shift']());}};_0x3fc902(++_0x4de593);}(_0x6959,0x12e));var _0x9695=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x6959[_0xa464c9];return _0x3d73c4;};'use strict';var client=require(_0x9695('0x0'));exports[_0x9695('0x1')]=function(_0x432181){return client[_0x9695('0x2')](_0x9695('0x3'),{'body':_0x432181,'log':_0x9695('0x4')});};
\ No newline at end of file
index 3b3f80e..1f020c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0x2dcb4d,_0x10826a){var _0x2104af=function(_0x2333b6){while(--_0x2333b6){_0x2dcb4d['push'](_0x2dcb4d['shift']());}};_0x2104af(++_0x10826a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4164f2,_0x38669f){_0x4164f2=_0x4164f2-0x0;var _0x2575c7=_0xcb91[_0x4164f2];return _0x2575c7;};'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
+var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x459c75,_0x7ae7ce){var _0x480b89=function(_0x43cc0b){while(--_0x43cc0b){_0x459c75['push'](_0x459c75['shift']());}};_0x480b89(++_0x7ae7ce);}(_0xe706,0xa3));var _0x6e70=function(_0x16af01,_0x9c623c){_0x16af01=_0x16af01-0x0;var _0x4d4b9a=_0xe706[_0x16af01];return _0x4d4b9a;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
index 356c53b..0055808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x236cfd,_0x2e576d){var _0x4b07b5=function(_0x65fd85){while(--_0x65fd85){_0x236cfd['push'](_0x236cfd['shift']());}};_0x4b07b5(++_0x2e576d);}(_0x55ca,0x126));var _0xa55c=function(_0xd0255a,_0x5ba91a){_0xd0255a=_0xd0255a-0x0;var _0x265f2d=_0x55ca[_0xd0255a];return _0x265f2d;};'use strict';var client=require(_0xa55c('0x0'));exports[_0xa55c('0x1')]=function(_0x4e78b4){return client['Request']('CreateSmsQueueReport',{'body':_0x4e78b4,'log':_0xa55c('0x2')});};exports[_0xa55c('0x3')]=function(_0x5dc716,_0x3b478a){return client[_0xa55c('0x4')](_0xa55c('0x5'),{'body':_0x3b478a,'options':{'where':{'uniqueid':_0x5dc716},'order':[['id',_0xa55c('0x6')]],'limit':0x1},'log':_0xa55c('0x5')});};
\ No newline at end of file
+var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x492ed8,_0x51f1fb){var _0x497c17=function(_0x5aaaf2){while(--_0x5aaaf2){_0x492ed8['push'](_0x492ed8['shift']());}};_0x497c17(++_0x51f1fb);}(_0x55ca,0x126));var _0xa55c=function(_0x12807b,_0x7c0dfb){_0x12807b=_0x12807b-0x0;var _0x5a676e=_0x55ca[_0x12807b];return _0x5a676e;};'use strict';var client=require(_0xa55c('0x0'));exports[_0xa55c('0x1')]=function(_0x4e78b4){return client['Request']('CreateSmsQueueReport',{'body':_0x4e78b4,'log':_0xa55c('0x2')});};exports[_0xa55c('0x3')]=function(_0x5dc716,_0x3b478a){return client[_0xa55c('0x4')](_0xa55c('0x5'),{'body':_0x3b478a,'options':{'where':{'uniqueid':_0x5dc716},'order':[['id',_0xa55c('0x6')]],'limit':0x1},'log':_0xa55c('0x5')});};
\ No newline at end of file
index 7742379..ce8b031 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(_0x400380,_0x467cb4){var _0x533bc0=function(_0x1cfe96){while(--_0x1cfe96){_0x400380['push'](_0x400380['shift']());}};_0x533bc0(++_0x467cb4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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(_0x1829c2,_0x41dbcd){var _0xb397e9=function(_0x46b519){while(--_0x46b519){_0x1829c2['push'](_0x1829c2['shift']());}};_0xb397e9(++_0x41dbcd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'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 ad94911..d8191b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x044a=['addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x58dd12,_0x4089cc){var _0xffe51=function(_0x4dc4ac){while(--_0x4dc4ac){_0x58dd12['push'](_0x58dd12['shift']());}};_0xffe51(++_0x4089cc);}(_0x044a,0x173));var _0xa044=function(_0x49f236,_0x508db6){_0x49f236=_0x49f236-0x0;var _0x1fee1a=_0x044a[_0x49f236];return _0x1fee1a;};'use strict';var client=require(_0xa044('0x0'));exports[_0xa044('0x1')]=function(_0x2ea3b8,_0x1aafce){return client[_0xa044('0x2')](_0xa044('0x3'),{'body':_0x1aafce,'options':{'where':{'id':_0x2ea3b8}},'log':_0xa044('0x4')});};exports[_0xa044('0x5')]=function(_0x25ed77,_0x116358){return client['Request'](_0xa044('0x6'),{'body':_0x116358,'options':{'where':{'id':_0x25ed77}},'log':_0xa044('0x7')});};
\ No newline at end of file
+var _0x3837=['update','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','addTagsToWhatsappInteraction'];(function(_0x1e17eb,_0x2e15c5){var _0x4de4c7=function(_0x52d003){while(--_0x52d003){_0x1e17eb['push'](_0x1e17eb['shift']());}};_0x4de4c7(++_0x2e15c5);}(_0x3837,0x1d1));var _0x7383=function(_0x865612,_0x2318b8){_0x865612=_0x865612-0x0;var _0x20ab20=_0x3837[_0x865612];return _0x20ab20;};'use strict';var client=require('../client');exports[_0x7383('0x0')]=function(_0x54e81e,_0xccf9d4){return client['Request'](_0x7383('0x1'),{'body':_0xccf9d4,'options':{'where':{'id':_0x54e81e}},'log':_0x7383('0x2')});};exports[_0x7383('0x3')]=function(_0x227ab2,_0xf57468){return client['Request']('AddTagsToWhatsappInteraction',{'body':_0xf57468,'options':{'where':{'id':_0x227ab2}},'log':_0x7383('0x4')});};
\ No newline at end of file
index 438c0a3..463369e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7557=['create','Request','createWhatsappMessage'];(function(_0x85a89f,_0xb533f7){var _0x55d024=function(_0x58ed8e){while(--_0x58ed8e){_0x85a89f['push'](_0x85a89f['shift']());}};_0x55d024(++_0xb533f7);}(_0x7557,0x13b));var _0x7755=function(_0x2b73f2,_0xaf9d15){_0x2b73f2=_0x2b73f2-0x0;var _0x4713fd=_0x7557[_0x2b73f2];return _0x4713fd;};'use strict';var client=require('../client');exports[_0x7755('0x0')]=function(_0x4c48bf){return client[_0x7755('0x1')]('CreateWhatsappMessage',{'body':_0x4c48bf,'log':_0x7755('0x2')});};
\ No newline at end of file
+var _0x312a=['createWhatsappMessage','../client','create','Request','CreateWhatsappMessage'];(function(_0x1194d1,_0x71821b){var _0x24c777=function(_0x229719){while(--_0x229719){_0x1194d1['push'](_0x1194d1['shift']());}};_0x24c777(++_0x71821b);}(_0x312a,0x191));var _0xa312=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x312a[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xa312('0x0'));exports[_0xa312('0x1')]=function(_0x111913){return client[_0xa312('0x2')](_0xa312('0x3'),{'body':_0x111913,'log':_0xa312('0x4')});};
\ No newline at end of file
index 07269ae..f347907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f9a=['name','timeout','strategy','User','online','whatsappPause','getWhatsappQueues','../client','Request','GetWhatsappQueue'];(function(_0xe48e98,_0x49e854){var _0x51e227=function(_0x17fb0a){while(--_0x17fb0a){_0xe48e98['push'](_0xe48e98['shift']());}};_0x51e227(++_0x49e854);}(_0x1f9a,0x18d));var _0xa1f9=function(_0x54dc50,_0x4cbb84){_0x54dc50=_0x54dc50-0x0;var _0x1ed6fa=_0x1f9a[_0x54dc50];return _0x1ed6fa;};'use strict';var client=require(_0xa1f9('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0xa1f9('0x1')](_0xa1f9('0x2'),{'options':{'raw':![],'attributes':['id',_0xa1f9('0x3'),_0xa1f9('0x4'),_0xa1f9('0x5')],'include':[{'model':_0xa1f9('0x6'),'as':'Agents','attributes':['id','name',_0xa1f9('0x7'),_0xa1f9('0x8')]}]},'log':_0xa1f9('0x9')});};};
\ No newline at end of file
+var _0x92f3=['online','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','timeout','Agents','name'];(function(_0x15876a,_0x15383d){var _0xbd900f=function(_0x103e59){while(--_0x103e59){_0x15876a['push'](_0x15876a['shift']());}};_0xbd900f(++_0x15383d);}(_0x92f3,0x17c));var _0x392f=function(_0x489646,_0x2fed71){_0x489646=_0x489646-0x0;var _0x45de80=_0x92f3[_0x489646];return _0x45de80;};'use strict';var client=require(_0x392f('0x0'));exports[_0x392f('0x1')]=function(){return function(){return client[_0x392f('0x2')](_0x392f('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x392f('0x4'),'strategy'],'include':[{'model':'User','as':_0x392f('0x5'),'attributes':['id',_0x392f('0x6'),_0x392f('0x7'),_0x392f('0x8')]}]},'log':_0x392f('0x1')});};};
\ No newline at end of file
index d7cc1ca..dec2fab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc5a=['update','DESC','UpdateWhatsappQueueReport','../client','Request','CreateWhatsappQueueReport'];(function(_0x2469e9,_0x2385b4){var _0x10b682=function(_0x44f7ce){while(--_0x44f7ce){_0x2469e9['push'](_0x2469e9['shift']());}};_0x10b682(++_0x2385b4);}(_0xfc5a,0x105));var _0xafc5=function(_0x5c4d27,_0x5b0822){_0x5c4d27=_0x5c4d27-0x0;var _0x1dda1a=_0xfc5a[_0x5c4d27];return _0x1dda1a;};'use strict';var client=require(_0xafc5('0x0'));exports['create']=function(_0x70b9ba){return client[_0xafc5('0x1')](_0xafc5('0x2'),{'body':_0x70b9ba,'log':_0xafc5('0x2')});};exports[_0xafc5('0x3')]=function(_0x186a8a,_0x3bf147){return client[_0xafc5('0x1')]('UpdateWhatsappQueueReport',{'body':_0x3bf147,'options':{'where':{'uniqueid':_0x186a8a},'order':[['id',_0xafc5('0x4')]],'limit':0x1},'log':_0xafc5('0x5')});};
\ No newline at end of file
+var _0x67ec=['DESC','UpdateWhatsappQueueReport','create','Request','CreateWhatsappQueueReport','update'];(function(_0x593564,_0x43583f){var _0x211a89=function(_0x40afd6){while(--_0x40afd6){_0x593564['push'](_0x593564['shift']());}};_0x211a89(++_0x43583f);}(_0x67ec,0xbc));var _0xc67e=function(_0x2834bc,_0x164e6d){_0x2834bc=_0x2834bc-0x0;var _0x345a35=_0x67ec[_0x2834bc];return _0x345a35;};'use strict';var client=require('../client');exports[_0xc67e('0x0')]=function(_0x405fe1){return client[_0xc67e('0x1')](_0xc67e('0x2'),{'body':_0x405fe1,'log':_0xc67e('0x2')});};exports[_0xc67e('0x3')]=function(_0x48bd99,_0x5c51f7){return client[_0xc67e('0x1')]('UpdateWhatsappQueueReport',{'body':_0x5c51f7,'options':{'where':{'uniqueid':_0x48bd99},'order':[['id',_0xc67e('0x4')]],'limit':0x1},'log':_0xc67e('0x5')});};
\ No newline at end of file
index ddcc7e6..185e353 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabd6=['seq-queue','../../../../config/logger','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message','join','stop','agents','timeout','createQueue','channel','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','stack','validate','util'];(function(_0x3b40c3,_0x267338){var _0x140b40=function(_0x17ee3f){while(--_0x17ee3f){_0x3b40c3['push'](_0x3b40c3['shift']());}};_0x140b40(++_0x267338);}(_0xabd6,0x64));var _0x6abd=function(_0x11ba83,_0xd5611a){_0x11ba83=_0x11ba83-0x0;var _0x3f3925=_0xabd6[_0x11ba83];return _0x3f3925;};'use strict';var schema=require(_0x6abd('0x0'));var _=require('lodash');var util=require(_0x6abd('0x1'));var seqqueue=require(_0x6abd('0x2'));var logger=require(_0x6abd('0x3'))('routing');var strategy=require('./strategy');var queue=schema({'name':{'type':'string','required':!![],'message':_0x6abd('0x4')},'timeout':{'type':_0x6abd('0x5'),'message':_0x6abd('0x6')}});function writeLog(_0xf70336,_0x4dc3f1,_0x111196){return logger[_0x6abd('0x7')](util[_0x6abd('0x8')](_0x6abd('0x9'),_0xf70336,_0x4dc3f1[_0x6abd('0xa')],_0x111196));}function handleFindAgent(_0x104f9f){return function(_0x4b358d){return _0x4b358d['name'][_0x6abd('0xb')]()===_0x104f9f[_0x6abd('0xb')]();};}exports[_0x6abd('0xc')]=function(_0x3378a1,_0x452004,_0x107ddc,_0x17f0e8){return function(_0xbb54a){try{var _0x10593f={'name':_0x452004[0x0],'timeout':_0x452004[0x1]};var _0x535701=queue[_0x6abd('0x0')](_0x10593f,{'typecast':!![]});if(_0x535701[_0x6abd('0xd')]){logger[_0x6abd('0xe')](_0x6abd('0xf'),_0x3378a1,_[_0x6abd('0x10')](_0x535701,_0x6abd('0x11'))[_0x6abd('0x12')](',\x20'));_0xbb54a[_0x6abd('0x13')]();}else{var _0x52164d=_['find'](_0x107ddc[_0x6abd('0x14')],handleFindAgent(_0x10593f['name']));if(_0x52164d){var _0x444ad6=(_0x10593f[_0x6abd('0x15')]||0xa)*0x3e8;var _0xd4ea8d,_0x56cdd0;var _0x2cc511=seqqueue[_0x6abd('0x16')](_0x444ad6);_0x2cc511['id']=_0x3378a1;_0x2cc511['atimeout']=_0x444ad6;_0x2cc511[_0x6abd('0x17')]=_0x17f0e8['channel'];writeLog(_0x3378a1,_0x52164d,util[_0x6abd('0x8')]('START:%s',_0x444ad6));_0x107ddc[_0x6abd('0x18')][_0x3378a1]['on'](_0x6abd('0x19'),function(){logger['info'](_0x6abd('0x1a'),_0x3378a1);clearTimeout(_0x56cdd0);_0x56cdd0=undefined;_0x2cc511[_0x6abd('0x1b')]();if(_0x107ddc[_0x6abd('0x18')][_0x3378a1]){delete _0x107ddc[_0x6abd('0x18')][_0x3378a1];}_0xbb54a[_0x6abd('0x13')]();});_0x107ddc[_0x6abd('0x18')][_0x3378a1]['on'](_0x6abd('0x1c'),function(){if(_0x107ddc[_0x6abd('0x18')][_0x3378a1]){delete _0x107ddc['rules'][_0x3378a1];}});_0x56cdd0=setTimeout(function(){logger['info'](_0x6abd('0x1d'),_0x3378a1);clearTimeout(_0x56cdd0);_0x2cc511[_0x6abd('0x1b')]();_0xbb54a['next']();},_0x444ad6);strategy[_0x6abd('0x1e')](_0x2cc511,_0x52164d,_0x107ddc,_0x17f0e8);}else{logger[_0x6abd('0xe')](_0x6abd('0x1f'),_0x3378a1,_0x10593f[_0x6abd('0xa')]);_0xbb54a['stop']();}}}catch(_0x585595){console[_0x6abd('0x20')](_0x585595);logger[_0x6abd('0xe')]('[%s][QUEUE]\x20%s',_0x3378a1,_0x585595[_0x6abd('0x21')]);_0xbb54a[_0x6abd('0x13')]();}};};
\ No newline at end of file
+var _0xe3cb=['timeout','createQueue','atimeout','channel','format','START:%s','rules','close','next','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','routing','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','info','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message','stop','find','agents'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xe3cb,0x1a5));var _0xbe3c=function(_0x17a9a3,_0x4ad234){_0x17a9a3=_0x17a9a3-0x0;var _0x29b9a1=_0xe3cb[_0x17a9a3];return _0x29b9a1;};'use strict';var schema=require(_0xbe3c('0x0'));var _=require(_0xbe3c('0x1'));var util=require(_0xbe3c('0x2'));var seqqueue=require(_0xbe3c('0x3'));var logger=require('../../../../config/logger')(_0xbe3c('0x4'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0xbe3c('0x5'),'required':!![],'message':_0xbe3c('0x6')},'timeout':{'type':'number','message':_0xbe3c('0x7')}});function writeLog(_0xff4d63,_0x2f3e35,_0x49fcc2){return logger[_0xbe3c('0x8')](util['format'](_0xbe3c('0x9'),_0xff4d63,_0x2f3e35[_0xbe3c('0xa')],_0x49fcc2));}function handleFindAgent(_0x48f781){return function(_0x1d5107){return _0x1d5107[_0xbe3c('0xa')][_0xbe3c('0xb')]()===_0x48f781[_0xbe3c('0xb')]();};}exports[_0xbe3c('0xc')]=function(_0x28cde1,_0x2d90ca,_0x1b8731,_0x478a4b){return function(_0x56a421){try{var _0x24e06e={'name':_0x2d90ca[0x0],'timeout':_0x2d90ca[0x1]};var _0x3c62f7=queue[_0xbe3c('0x0')](_0x24e06e,{'typecast':!![]});if(_0x3c62f7[_0xbe3c('0xd')]){logger[_0xbe3c('0xe')](_0xbe3c('0xf'),_0x28cde1,_[_0xbe3c('0x10')](_0x3c62f7,_0xbe3c('0x11'))['join'](',\x20'));_0x56a421[_0xbe3c('0x12')]();}else{var _0x214870=_[_0xbe3c('0x13')](_0x1b8731[_0xbe3c('0x14')],handleFindAgent(_0x24e06e[_0xbe3c('0xa')]));if(_0x214870){var _0x323238=(_0x24e06e[_0xbe3c('0x15')]||0xa)*0x3e8;var _0x9695b9,_0x107381;var _0x2a9d9f=seqqueue[_0xbe3c('0x16')](_0x323238);_0x2a9d9f['id']=_0x28cde1;_0x2a9d9f[_0xbe3c('0x17')]=_0x323238;_0x2a9d9f[_0xbe3c('0x18')]=_0x478a4b['channel'];writeLog(_0x28cde1,_0x214870,util[_0xbe3c('0x19')](_0xbe3c('0x1a'),_0x323238));_0x1b8731[_0xbe3c('0x1b')][_0x28cde1]['on']('end',function(){logger[_0xbe3c('0x8')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x28cde1);clearTimeout(_0x107381);_0x107381=undefined;_0x2a9d9f[_0xbe3c('0x1c')]();if(_0x1b8731[_0xbe3c('0x1b')][_0x28cde1]){delete _0x1b8731['rules'][_0x28cde1];}_0x56a421[_0xbe3c('0x12')]();});_0x1b8731['rules'][_0x28cde1]['on']('complete',function(){if(_0x1b8731[_0xbe3c('0x1b')][_0x28cde1]){delete _0x1b8731[_0xbe3c('0x1b')][_0x28cde1];}});_0x107381=setTimeout(function(){logger[_0xbe3c('0x8')]('[%s][AGENT]\x20ROUTING\x20END',_0x28cde1);clearTimeout(_0x107381);_0x2a9d9f['close']();_0x56a421[_0xbe3c('0x1d')]();},_0x323238);strategy['agent'](_0x2a9d9f,_0x214870,_0x1b8731,_0x478a4b);}else{logger[_0xbe3c('0xe')](_0xbe3c('0x1e'),_0x28cde1,_0x24e06e[_0xbe3c('0xa')]);_0x56a421[_0xbe3c('0x12')]();}}}catch(_0x158a19){console[_0xbe3c('0x1f')](_0x158a19);logger[_0xbe3c('0xe')](_0xbe3c('0x20'),_0x28cde1,_0x158a19[_0xbe3c('0x21')]);_0x56a421[_0xbe3c('0x12')]();}};};
\ No newline at end of file
index c9f7cdc..5528a47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5296=['routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../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','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','body','Message','then','[%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','postText','amazonlex','create','dialogState','lodash','aws-sdk','./utils'];(function(_0x31a371,_0x50828e){var _0x2a5bd6=function(_0x2fb481){while(--_0x2fb481){_0x31a371['push'](_0x31a371['shift']());}};_0x2a5bd6(++_0x50828e);}(_0x5296,0x1a4));var _0x6529=function(_0x432d6e,_0xd80460){_0x432d6e=_0x432d6e-0x0;var _0x165a84=_0x5296[_0x432d6e];return _0x165a84;};'use strict';var _=require(_0x6529('0x0'));var moment=require('moment');var AWS=require(_0x6529('0x1'));var utils=require(_0x6529('0x2'));var logger=require('../../../../config/logger')(_0x6529('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x6529('0x4')),'mailMessage':require(_0x6529('0x5')),'smsMessage':require(_0x6529('0x6')),'faxMessage':require(_0x6529('0x7')),'whatsappMessage':require(_0x6529('0x8'))};exports['consequence']=function(_0x230966,_0x1a76b0){return function(_0x4eb4bc){try{if(!_[_0x6529('0x9')](this[_0x6529('0xa')][_0x6529('0xb')])){logger[_0x6529('0xc')]('[%s][AMAZONLEX]\x20%s',_0x230966,_0x6529('0xd'));return _0x4eb4bc[_0x6529('0xe')]();}var _0x2ba1c0={'ContactId':this[_0x6529('0xf')]['id'],'sentAt':moment()[_0x6529('0x10')](_0x6529('0x11')),'direction':_0x6529('0x12')};if(this[_0x6529('0x13')]===_0x6529('0x14')||this[_0x6529('0x13')]===_0x6529('0x15')){_0x2ba1c0[_0x6529('0x16')]=this[_0x6529('0xa')][_0x6529('0x16')];}var _0x249392=this[_0x6529('0x13')];if(_0x249392===_0x6529('0x17')){_0x2ba1c0[_0x6529('0x18')]=this[_0x6529('0x19')]['id'];}else{_0x2ba1c0[_[_0x6529('0x1a')](_0x249392)+_0x6529('0x1b')]=this['account']['id'];}_0x2ba1c0[_[_0x6529('0x1a')](_0x249392)+_0x6529('0x1c')]=this[_0x6529('0xa')]['id'];if(this[_0x6529('0xa')]['created']){var _0x296657=_0x1a76b0[0x4];if(!_['isEmpty'](_0x296657)){_0x2ba1c0[_0x6529('0x1d')]=utils['getMustacheRender'](_0x296657,this);return rpc[_0x249392+_0x6529('0x1e')]['create'](_0x2ba1c0)[_0x6529('0x1f')](function(_0x2b7740){logger['info'](_0x6529('0x20'),_0x230966,_0x2ba1c0[_0x6529('0x1d')]);})[_0x6529('0x21')](function(_0x449447){logger[_0x6529('0x22')]('[%s][AMAZONLEX]\x20%s',_0x230966,JSON[_0x6529('0x23')](_0x449447));})[_0x6529('0x24')](function(){logger[_0x6529('0xc')](_0x6529('0x25'),_0x230966);_0x4eb4bc[_0x6529('0x26')]();});}else{logger[_0x6529('0xc')](_0x6529('0x27'),_0x230966);_0x4eb4bc[_0x6529('0x26')]();}}else{var _0x5099ac=this;var _0x1920d7=new AWS[(_0x6529('0x28'))]({'accessKeyId':_0x1a76b0[0x0],'secretAccessKey':_0x1a76b0[0x1],'region':_0x1a76b0[0x2]});var _0x1772ce={'botAlias':_0x6529('0x29'),'botName':_0x1a76b0[0x3],'inputText':this[_0x6529('0x2a')]['body'],'userId':this[_0x6529('0x13')]+':'+this[_0x6529('0xa')]['id']['toString']()};_0x1920d7[_0x6529('0x2b')](_0x1772ce,function(_0x301d48,_0x213295){if(_0x301d48){logger['error'](_0x6529('0x20'),_0x230966,_0x301d48['message']);_0x4eb4bc[_0x6529('0xe')]();}else if(_0x213295&&_0x213295[_0x6529('0x2a')]){_0x5099ac['body'][_0x6529('0x2c')]=_0x213295;_0x2ba1c0['body']=_0x213295[_0x6529('0x2a')];_0x2ba1c0['providerName']='amazonlex';_0x2ba1c0['providerResponse']=JSON[_0x6529('0x23')](_0x213295);return rpc[_0x249392+_0x6529('0x1e')][_0x6529('0x2d')](_0x2ba1c0)[_0x6529('0x1f')](function(_0x21d2a4){logger[_0x6529('0xc')](_0x6529('0x20'),_0x230966,_0x2ba1c0[_0x6529('0x1d')]);if(_0x213295[_0x6529('0x2e')]=='Failed'){_0x4eb4bc['next']();}else{_0x4eb4bc[_0x6529('0x26')]();}})[_0x6529('0x21')](function(_0x1e4519){logger[_0x6529('0x22')](_0x6529('0x20'),_0x230966,JSON[_0x6529('0x23')](_0x1e4519));_0x4eb4bc[_0x6529('0xe')]();});}else{_0x4eb4bc[_0x6529('0xe')]();}});}}catch(_0x376439){logger[_0x6529('0x22')](_0x6529('0x20'),_0x230966,JSON[_0x6529('0x23')](_0x376439));_0x4eb4bc[_0x6529('0x26')]();}};};
\ No newline at end of file
+var _0xe7a5=['isEmpty','Message','then','body','catch','stringify','stop','LexRuntime','$LATEST','toString','postText','error','message','amazonlex','providerResponse','dialogState','Failed','lodash','aws-sdk','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','whatsapp','phone','ChatWebsiteId','AccountId','account','upperFirst','created'];(function(_0x997cbe,_0x8682df){var _0x4c6754=function(_0xe88a78){while(--_0xe88a78){_0x997cbe['push'](_0x997cbe['shift']());}};_0x4c6754(++_0x8682df);}(_0xe7a5,0x69));var _0x5e7a=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xe7a5[_0x580576];return _0x3f55a0;};'use strict';var _=require(_0x5e7a('0x0'));var moment=require('moment');var AWS=require(_0x5e7a('0x1'));var utils=require(_0x5e7a('0x2'));var logger=require(_0x5e7a('0x3'))('routing');var rpc={'chatMessage':require(_0x5e7a('0x4')),'openchannelMessage':require(_0x5e7a('0x5')),'mailMessage':require(_0x5e7a('0x6')),'smsMessage':require(_0x5e7a('0x7')),'faxMessage':require(_0x5e7a('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x5e7a('0x9')]=function(_0x2af61d,_0x475742){return function(_0x45e071){try{if(!_[_0x5e7a('0xa')](this[_0x5e7a('0xb')]['UserId'])){logger[_0x5e7a('0xc')](_0x5e7a('0xd'),_0x2af61d,_0x5e7a('0xe'));return _0x45e071[_0x5e7a('0xf')]();}var _0x4188d0={'ContactId':this[_0x5e7a('0x10')]['id'],'sentAt':moment()[_0x5e7a('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x5e7a('0x12')};if(this[_0x5e7a('0x13')]==='sms'||this[_0x5e7a('0x13')]===_0x5e7a('0x14')){_0x4188d0[_0x5e7a('0x15')]=this[_0x5e7a('0xb')]['phone'];}var _0x428150=this[_0x5e7a('0x13')];if(_0x428150==='chat'){_0x4188d0[_0x5e7a('0x16')]=this['account']['id'];}else{_0x4188d0[_['upperFirst'](_0x428150)+_0x5e7a('0x17')]=this[_0x5e7a('0x18')]['id'];}_0x4188d0[_[_0x5e7a('0x19')](_0x428150)+'InteractionId']=this[_0x5e7a('0xb')]['id'];if(this['interaction'][_0x5e7a('0x1a')]){var _0x382103=_0x475742[0x4];if(!_[_0x5e7a('0x1b')](_0x382103)){_0x4188d0['body']=utils['getMustacheRender'](_0x382103,this);return rpc[_0x428150+_0x5e7a('0x1c')]['create'](_0x4188d0)[_0x5e7a('0x1d')](function(_0x4e219e){logger['info'](_0x5e7a('0xd'),_0x2af61d,_0x4188d0[_0x5e7a('0x1e')]);})[_0x5e7a('0x1f')](function(_0x37a064){logger['error'](_0x5e7a('0xd'),_0x2af61d,JSON[_0x5e7a('0x20')](_0x37a064));})['finally'](function(){logger[_0x5e7a('0xc')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x2af61d);_0x45e071[_0x5e7a('0x21')]();});}else{logger[_0x5e7a('0xc')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x2af61d);_0x45e071['stop']();}}else{var _0x19f0be=this;var _0x589d1f=new AWS[(_0x5e7a('0x22'))]({'accessKeyId':_0x475742[0x0],'secretAccessKey':_0x475742[0x1],'region':_0x475742[0x2]});var _0x500cef={'botAlias':_0x5e7a('0x23'),'botName':_0x475742[0x3],'inputText':this['message']['body'],'userId':this['channel']+':'+this[_0x5e7a('0xb')]['id'][_0x5e7a('0x24')]()};_0x589d1f[_0x5e7a('0x25')](_0x500cef,function(_0x31d030,_0x2ccbf3){if(_0x31d030){logger[_0x5e7a('0x26')]('[%s][AMAZONLEX]\x20%s',_0x2af61d,_0x31d030[_0x5e7a('0x27')]);_0x45e071[_0x5e7a('0xf')]();}else if(_0x2ccbf3&&_0x2ccbf3[_0x5e7a('0x27')]){_0x19f0be[_0x5e7a('0x1e')]['amazonlex']=_0x2ccbf3;_0x4188d0['body']=_0x2ccbf3[_0x5e7a('0x27')];_0x4188d0['providerName']=_0x5e7a('0x28');_0x4188d0[_0x5e7a('0x29')]=JSON[_0x5e7a('0x20')](_0x2ccbf3);return rpc[_0x428150+_0x5e7a('0x1c')]['create'](_0x4188d0)[_0x5e7a('0x1d')](function(_0x258322){logger[_0x5e7a('0xc')]('[%s][AMAZONLEX]\x20%s',_0x2af61d,_0x4188d0[_0x5e7a('0x1e')]);if(_0x2ccbf3[_0x5e7a('0x2a')]==_0x5e7a('0x2b')){_0x45e071[_0x5e7a('0xf')]();}else{_0x45e071[_0x5e7a('0x21')]();}})['catch'](function(_0x176aea){logger['error']('[%s][AMAZONLEX]\x20%s',_0x2af61d,JSON[_0x5e7a('0x20')](_0x176aea));_0x45e071[_0x5e7a('0xf')]();});}else{_0x45e071[_0x5e7a('0xf')]();}});}}catch(_0x6ec786){logger['error'](_0x5e7a('0xd'),_0x2af61d,JSON[_0x5e7a('0x20')](_0x6ec786));_0x45e071['stop']();}};};
\ No newline at end of file
index 5426006..359bc1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10b1=['user','pass','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','[%s][AUTOREPLY]\x20SMTP\x20SENT','Message','create','then','stringify','catch','error','resolve','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','[%s][AUTOREPLY]\x20%s','finally','update','stop','lodash','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','isNil','interaction','info','next','autoreplyExecuted','contact','format','out','mail','getMustacheRender','body','message','from','phone','read','subject','startsWith','Re:','Re:\x20','ChatWebsiteId','upperFirst','AccountId','account','Smtp','service','host','port','secure','auth'];(function(_0xcedc8e,_0x575788){var _0x2a7eaa=function(_0x4219a2){while(--_0x4219a2){_0xcedc8e['push'](_0xcedc8e['shift']());}};_0x2a7eaa(++_0x575788);}(_0x10b1,0x1d7));var _0x110b=function(_0x5c443f,_0x385f08){_0x5c443f=_0x5c443f-0x0;var _0x5ecfcd=_0x10b1[_0x5c443f];return _0x5ecfcd;};'use strict';var _=require(_0x110b('0x0'));var moment=require(_0x110b('0x1'));var utils=require(_0x110b('0x2'));var logger=require(_0x110b('0x3'))('routing');var rpc={'chatMessage':require(_0x110b('0x4')),'openchannelMessage':require(_0x110b('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x110b('0x6')),'faxMessage':require(_0x110b('0x7')),'whatsappMessage':require(_0x110b('0x8')),'chatInteraction':require(_0x110b('0x9')),'openchannelInteraction':require(_0x110b('0xa')),'mailInteraction':require(_0x110b('0xb')),'smsInteraction':require(_0x110b('0xc')),'faxInteraction':require(_0x110b('0xd')),'whatsappInteraction':require(_0x110b('0xe'))};var mailRpc=require(_0x110b('0xf'));exports[_0x110b('0x10')]=function(_0x54395c,_0x65432d,_0x26fed4,_0x4722d7){return function(_0x4908c4){try{var _0x2b8f0a=this[_0x110b('0x11')];if(_0x2b8f0a==='mail'&&_0x4722d7['body']['isAutoreply']){logger['info']('[%s][AUTOREPLY]\x20%s',_0x54395c,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x4908c4['next']();}if(_0x65432d[0x0]==='1'&&(_[_0x110b('0x12')](this[_0x110b('0x13')]['created'])||!this['interaction']['created'])){logger[_0x110b('0x14')]('[%s][AUTOREPLY]\x20%s',_0x54395c,'Autoreply\x20already\x20sent');return _0x4908c4[_0x110b('0x15')]();}if(_0x65432d[0x0]==='2'&&this[_0x110b('0x13')][_0x110b('0x16')]){logger['info']('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x54395c,'One\x20Time\x20already\x20sent');return _0x4908c4[_0x110b('0x15')]();}var _0xdd53e9={'ContactId':this[_0x110b('0x17')]['id'],'sentAt':moment()[_0x110b('0x18')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x110b('0x19')};if(this['channel']===_0x110b('0x1a')){_0xdd53e9['body']=utils[_0x110b('0x1b')](_0x65432d[0x2],this);}else{_0xdd53e9[_0x110b('0x1c')]=utils[_0x110b('0x1b')](_0x65432d[0x1],this);}if(this[_0x110b('0x1d')]){_0xdd53e9['to']=this['message'][_0x110b('0x1e')]||'';if(this['channel']===_0x110b('0x1a')&&_0x65432d[0x1]==='1'){_0xdd53e9['cc']=this[_0x110b('0x1d')]['cc']||'';}_0xdd53e9['from']=this[_0x110b('0x1d')]['to']||'';_0xdd53e9['phone']=this[_0x110b('0x1d')][_0x110b('0x1f')]||'';_0xdd53e9[_0x110b('0x20')]=!![];if(this[_0x110b('0x1d')]['subject']){_0xdd53e9[_0x110b('0x21')]='';_0xdd53e9[_0x110b('0x21')]+=_[_0x110b('0x22')](this['message']['subject'],_0x110b('0x23'))?'':_0x110b('0x24');_0xdd53e9[_0x110b('0x21')]+=this[_0x110b('0x1d')][_0x110b('0x21')];}}if(this[_0x110b('0x11')]==='chat'){_0xdd53e9[_0x110b('0x25')]=this['account']['id'];}else{_0xdd53e9[_[_0x110b('0x26')](this[_0x110b('0x11')])+_0x110b('0x27')]=this[_0x110b('0x28')]['id'];}_0xdd53e9[_[_0x110b('0x26')](this[_0x110b('0x11')])+'InteractionId']=this['interaction']['id'];var _0x1185fe=this[_0x110b('0x13')];if(rpc[this[_0x110b('0x11')]+'Message']){if(this[_0x110b('0x11')]===_0x110b('0x1a')){var _0x1bb879={'tls':{'rejectUnauthorized':![]}};if(this[_0x110b('0x28')][_0x110b('0x29')][_0x110b('0x2a')]){_0x1bb879[_0x110b('0x2a')]=this[_0x110b('0x28')][_0x110b('0x29')][_0x110b('0x2a')];}else{_0x1bb879[_0x110b('0x2b')]=this[_0x110b('0x28')][_0x110b('0x29')][_0x110b('0x2b')];_0x1bb879[_0x110b('0x2c')]=this[_0x110b('0x28')][_0x110b('0x29')]['port'];_0x1bb879[_0x110b('0x2d')]=this[_0x110b('0x28')][_0x110b('0x29')][_0x110b('0x2d')];}if(this[_0x110b('0x28')][_0x110b('0x29')]['authentication']){_0x1bb879[_0x110b('0x2e')]={'user':this['account'][_0x110b('0x29')][_0x110b('0x2f')],'pass':this[_0x110b('0x28')][_0x110b('0x29')][_0x110b('0x30')]};}_0xdd53e9[_0x110b('0x31')]=this[_0x110b('0x1d')][_0x110b('0x32')];_0xdd53e9[_0x110b('0x33')]=_0x110b('0x34')+_[_0x110b('0x35')](_0xdd53e9[_0x110b('0x1c')],_0x110b('0x36'),_0x110b('0x37'))+_0x110b('0x38');_0xdd53e9[_0x110b('0x39')]={'Auto-Submitted':_0x110b('0x3a'),'X-Auto-Response-Suppress':_0x110b('0x3b'),'Precedence':'auto_reply'};return mailRpc['sendMailMessage'](_0x1bb879,_0xdd53e9)['then'](function(_0x51791f){logger['info'](_0x110b('0x3c'),_0x54395c);_0xdd53e9[_0x110b('0x32')]=_0x51791f['message']['messageId'];return rpc[_0x2b8f0a+_0x110b('0x3d')][_0x110b('0x3e')](_0xdd53e9);})[_0x110b('0x3f')](function(_0x38900d){logger[_0x110b('0x14')]('[%s][AUTOREPLY]\x20%s',_0x54395c,JSON[_0x110b('0x40')](_0x38900d));})[_0x110b('0x41')](function(_0x22a8f8){logger[_0x110b('0x42')]('[RPC][%s][AUTOREPLY]\x20%s',_0x54395c,JSON[_0x110b('0x40')](_0x22a8f8));})['finally'](function(){Promise[_0x110b('0x43')]()[_0x110b('0x3f')](function(){if(_0x65432d[0x0]!=='2'||_0x1185fe[_0x110b('0x16')])return;return rpc[_0x2b8f0a+'Interaction']['update'](_0x1185fe['id'],{'autoreplyExecuted':!![]})['then'](function(_0x442690){logger[_0x110b('0x14')](_0x110b('0x44'),_0x54395c,JSON[_0x110b('0x40')](_0x442690));})[_0x110b('0x41')](function(_0x2bf287){logger[_0x110b('0x42')](_0x110b('0x45'),_0x54395c,JSON['stringify'](_0x2bf287));});})[_0x110b('0x3f')](function(){_0x4908c4[_0x110b('0x15')]();});});}else{return rpc[this['channel']+_0x110b('0x3d')][_0x110b('0x3e')](_0xdd53e9)[_0x110b('0x3f')](function(_0x152f3f){logger[_0x110b('0x14')](_0x110b('0x46'),_0x54395c,_0xdd53e9[_0x110b('0x1c')]);})['catch'](function(_0xd5e126){logger[_0x110b('0x42')]('[%s][AUTOREPLY]\x20%s',_0x54395c,JSON[_0x110b('0x40')](_0xd5e126));})[_0x110b('0x47')](function(){Promise[_0x110b('0x43')]()[_0x110b('0x3f')](function(){if(_0x65432d[0x0]!=='2'||_0x1185fe[_0x110b('0x16')])return;return rpc[_0x2b8f0a+'Interaction'][_0x110b('0x48')](_0x1185fe['id'],{'autoreplyExecuted':!![]})['then'](function(_0x362ac0){logger[_0x110b('0x14')](_0x110b('0x44'),_0x54395c,JSON[_0x110b('0x40')](_0x362ac0));})[_0x110b('0x41')](function(_0x2c6b2f){logger[_0x110b('0x42')](_0x110b('0x45'),_0x54395c,JSON[_0x110b('0x40')](_0x2c6b2f));});})[_0x110b('0x3f')](function(){_0x4908c4['next']();});});}}}catch(_0x12ce9a){logger[_0x110b('0x42')]('[%s][AUTOREPLY]\x20%s',_0x54395c,JSON['stringify'](_0x12ce9a));_0x4908c4[_0x110b('0x49')]();}};};
\ No newline at end of file
+var _0x7d8e=['isNil','created','interaction','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','next','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','channel','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','mail','body','getMustacheRender','message','from','phone','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','upperFirst','AccountId','Message','Smtp','service','account','host','port','secure','authentication','auth','user','pass','inReplyTo','messageId','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','autoreplyExecuted','Interaction','update','finally','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','moment','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence'];(function(_0x43699d,_0x10ea03){var _0xc1caed=function(_0x286cf4){while(--_0x286cf4){_0x43699d['push'](_0x43699d['shift']());}};_0xc1caed(++_0x10ea03);}(_0x7d8e,0x1ae));var _0xe7d8=function(_0x21f9c2,_0x2b3d2a){_0x21f9c2=_0x21f9c2-0x0;var _0x3da17f=_0x7d8e[_0x21f9c2];return _0x3da17f;};'use strict';var _=require('lodash');var moment=require(_0xe7d8('0x0'));var utils=require(_0xe7d8('0x1'));var logger=require(_0xe7d8('0x2'))(_0xe7d8('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xe7d8('0x4')),'mailMessage':require(_0xe7d8('0x5')),'smsMessage':require(_0xe7d8('0x6')),'faxMessage':require(_0xe7d8('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xe7d8('0x8')),'mailInteraction':require(_0xe7d8('0x9')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xe7d8('0xa')),'whatsappInteraction':require(_0xe7d8('0xb'))};var mailRpc=require(_0xe7d8('0xc'));exports[_0xe7d8('0xd')]=function(_0xa726be,_0x536ba4){return function(_0x362724){try{if(_0x536ba4[0x0]==='1'&&(_[_0xe7d8('0xe')](this['interaction'][_0xe7d8('0xf')])||!this[_0xe7d8('0x10')]['created'])){logger[_0xe7d8('0x11')](_0xe7d8('0x12'),_0xa726be,_0xe7d8('0x13'));return _0x362724[_0xe7d8('0x14')]();}if(_0x536ba4[0x0]==='2'&&this[_0xe7d8('0x10')]['autoreplyExecuted']){logger[_0xe7d8('0x11')](_0xe7d8('0x15'),_0xa726be,_0xe7d8('0x16'));return _0x362724['next']();}var _0x541822=this[_0xe7d8('0x17')];var _0x2d5bed={'ContactId':this[_0xe7d8('0x18')]['id'],'sentAt':moment()[_0xe7d8('0x19')](_0xe7d8('0x1a')),'direction':_0xe7d8('0x1b')};if(this[_0xe7d8('0x17')]===_0xe7d8('0x1c')){_0x2d5bed[_0xe7d8('0x1d')]=utils[_0xe7d8('0x1e')](_0x536ba4[0x2],this);}else{_0x2d5bed['body']=utils[_0xe7d8('0x1e')](_0x536ba4[0x1],this);}if(this[_0xe7d8('0x1f')]){_0x2d5bed['to']=this[_0xe7d8('0x1f')][_0xe7d8('0x20')]||'';if(this['channel']===_0xe7d8('0x1c')&&_0x536ba4[0x1]==='1'){_0x2d5bed['cc']=this[_0xe7d8('0x1f')]['cc']||'';}_0x2d5bed[_0xe7d8('0x20')]=this[_0xe7d8('0x1f')]['to']||'';_0x2d5bed['phone']=this[_0xe7d8('0x1f')][_0xe7d8('0x21')]||'';_0x2d5bed['read']=!![];if(this[_0xe7d8('0x1f')][_0xe7d8('0x22')]){_0x2d5bed[_0xe7d8('0x22')]='';_0x2d5bed[_0xe7d8('0x22')]+=_[_0xe7d8('0x23')](this[_0xe7d8('0x1f')]['subject'],_0xe7d8('0x24'))?'':_0xe7d8('0x25');_0x2d5bed[_0xe7d8('0x22')]+=this[_0xe7d8('0x1f')][_0xe7d8('0x22')];}}if(this[_0xe7d8('0x17')]===_0xe7d8('0x26')){_0x2d5bed[_0xe7d8('0x27')]=this['account']['id'];}else{_0x2d5bed[_[_0xe7d8('0x28')](this['channel'])+_0xe7d8('0x29')]=this['account']['id'];}_0x2d5bed[_[_0xe7d8('0x28')](this[_0xe7d8('0x17')])+'InteractionId']=this[_0xe7d8('0x10')]['id'];var _0x45ff87=this[_0xe7d8('0x10')];if(rpc[this[_0xe7d8('0x17')]+_0xe7d8('0x2a')]){if(this['channel']===_0xe7d8('0x1c')){var _0x53d25e={'tls':{'rejectUnauthorized':![]}};if(this['account'][_0xe7d8('0x2b')][_0xe7d8('0x2c')]){_0x53d25e[_0xe7d8('0x2c')]=this[_0xe7d8('0x2d')][_0xe7d8('0x2b')][_0xe7d8('0x2c')];}else{_0x53d25e[_0xe7d8('0x2e')]=this[_0xe7d8('0x2d')]['Smtp'][_0xe7d8('0x2e')];_0x53d25e[_0xe7d8('0x2f')]=this[_0xe7d8('0x2d')][_0xe7d8('0x2b')]['port'];_0x53d25e[_0xe7d8('0x30')]=this['account'][_0xe7d8('0x2b')][_0xe7d8('0x30')];}if(this['account'][_0xe7d8('0x2b')][_0xe7d8('0x31')]){_0x53d25e[_0xe7d8('0x32')]={'user':this['account']['Smtp'][_0xe7d8('0x33')],'pass':this[_0xe7d8('0x2d')][_0xe7d8('0x2b')][_0xe7d8('0x34')]};}_0x2d5bed[_0xe7d8('0x35')]=this['message'][_0xe7d8('0x36')];_0x2d5bed['html']='<div\x20id=\x22xm-mail-content\x22>'+_['replace'](_0x2d5bed[_0xe7d8('0x1d')],_0xe7d8('0x37'),_0xe7d8('0x38'))+_0xe7d8('0x39');_0x2d5bed[_0xe7d8('0x3a')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xe7d8('0x3b'),'Precedence':_0xe7d8('0x3c')};return mailRpc[_0xe7d8('0x3d')](_0x53d25e,_0x2d5bed)[_0xe7d8('0x3e')](function(_0x2100ac){logger[_0xe7d8('0x11')](_0xe7d8('0x3f'),_0xa726be);_0x2d5bed[_0xe7d8('0x36')]=_0x2100ac[_0xe7d8('0x1f')]['messageId'];return rpc[_0x541822+_0xe7d8('0x2a')]['create'](_0x2d5bed);})[_0xe7d8('0x3e')](function(_0x44bac5){logger['info'](_0xe7d8('0x12'),_0xa726be,JSON[_0xe7d8('0x40')](_0x44bac5));})[_0xe7d8('0x41')](function(_0x296b12){logger[_0xe7d8('0x42')](_0xe7d8('0x43'),_0xa726be,JSON[_0xe7d8('0x40')](_0x296b12));})['finally'](function(){Promise['resolve']()['then'](function(){if(_0x536ba4[0x0]!=='2'||_0x45ff87[_0xe7d8('0x44')])return;return rpc[_0x541822+_0xe7d8('0x45')][_0xe7d8('0x46')](_0x45ff87['id'],{'autoreplyExecuted':!![]})[_0xe7d8('0x3e')](function(_0x383368){logger[_0xe7d8('0x11')](_0xe7d8('0x15'),_0xa726be,JSON[_0xe7d8('0x40')](_0x383368));})[_0xe7d8('0x41')](function(_0x183b37){logger[_0xe7d8('0x42')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0xa726be,JSON['stringify'](_0x183b37));});})['then'](function(){_0x362724['next']();});});}else{return rpc[this[_0xe7d8('0x17')]+_0xe7d8('0x2a')]['create'](_0x2d5bed)[_0xe7d8('0x3e')](function(_0x224a17){logger[_0xe7d8('0x11')](_0xe7d8('0x12'),_0xa726be,_0x2d5bed[_0xe7d8('0x1d')]);})[_0xe7d8('0x41')](function(_0x55d038){logger['error'](_0xe7d8('0x12'),_0xa726be,JSON[_0xe7d8('0x40')](_0x55d038));})[_0xe7d8('0x47')](function(){Promise['resolve']()[_0xe7d8('0x3e')](function(){if(_0x536ba4[0x0]!=='2'||_0x45ff87['autoreplyExecuted'])return;return rpc[_0x541822+_0xe7d8('0x45')][_0xe7d8('0x46')](_0x45ff87['id'],{'autoreplyExecuted':!![]})[_0xe7d8('0x3e')](function(_0x4a85df){logger[_0xe7d8('0x11')](_0xe7d8('0x15'),_0xa726be,JSON[_0xe7d8('0x40')](_0x4a85df));})[_0xe7d8('0x41')](function(_0x33f0ec){logger[_0xe7d8('0x42')](_0xe7d8('0x48'),_0xa726be,JSON[_0xe7d8('0x40')](_0x33f0ec));});})[_0xe7d8('0x3e')](function(){_0x362724[_0xe7d8('0x14')]();});});}}}catch(_0x55b16e){logger[_0xe7d8('0x42')]('[%s][AUTOREPLY]\x20%s',_0xa726be,JSON['stringify'](_0x55b16e));_0x362724[_0xe7d8('0x49')]();}};};
\ No newline at end of file
index 8d2127e..983078e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae8a=['info','[%s][CLOSE]\x20reason\x20%s','format','system','channel','Interaction','update','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction'];(function(_0x4283e9,_0x55c057){var _0x4e4c67=function(_0x3c700c){while(--_0x3c700c){_0x4283e9['push'](_0x4283e9['shift']());}};_0x4e4c67(++_0x55c057);}(_0xae8a,0x1c8));var _0xaae8=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0xae8a[_0x3ff085];return _0x2b68c3;};'use strict';var moment=require('moment');var logger=require('../../../../config/logger')(_0xaae8('0x0'));var rpc={'chatInteraction':require(_0xaae8('0x1')),'openchannelInteraction':require(_0xaae8('0x2')),'smsInteraction':require(_0xaae8('0x3')),'mailInteraction':require(_0xaae8('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xaae8('0x5'))};exports['consequence']=function(_0x3f6fee,_0x384099,_0x3c2301,_0x1871d9){return function(_0x211740){try{logger[_0xaae8('0x6')](_0xaae8('0x7'),_0x3f6fee,_0x384099[0x0]);var _0x4fd0db={'closed':0x1,'closedAt':moment()[_0xaae8('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0xaae8('0x9'),'disposition':_0x384099[0x0]};if(rpc[_0x1871d9[_0xaae8('0xa')]+_0xaae8('0xb')]){rpc[_0x1871d9[_0xaae8('0xa')]+_0xaae8('0xb')][_0xaae8('0xc')](_0x1871d9['interaction']['id'],_0x4fd0db)['then'](function(_0x2c2b1f){logger[_0xaae8('0x6')](_0xaae8('0xd'),_0x3f6fee,_0x1871d9[_0xaae8('0xe')]['id']);})[_0xaae8('0xf')](function(_0x5c268c){logger[_0xaae8('0x10')](_0xaae8('0x11'),_0x3f6fee,JSON[_0xaae8('0x12')](_0x5c268c));})[_0xaae8('0x13')](function(){_0x211740['stop']();});}}catch(_0x23c3b3){logger[_0xaae8('0x10')]('[%s][CLOSE]\x20%s',_0x3f6fee,JSON[_0xaae8('0x12')](_0x23c3b3));_0x211740[_0xaae8('0x14')]();}};};
\ No newline at end of file
+var _0x7000=['error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../../../config/logger','routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','interaction','then'];(function(_0x475aa9,_0x439aab){var _0x360bbc=function(_0x331a22){while(--_0x331a22){_0x475aa9['push'](_0x475aa9['shift']());}};_0x360bbc(++_0x439aab);}(_0x7000,0x116));var _0x0700=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x7000[_0x5f09c5];return _0x426ad9;};'use strict';var moment=require(_0x0700('0x0'));var logger=require(_0x0700('0x1'))(_0x0700('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x0700('0x3')),'smsInteraction':require(_0x0700('0x4')),'mailInteraction':require(_0x0700('0x5')),'faxInteraction':require(_0x0700('0x6')),'whatsappInteraction':require(_0x0700('0x7'))};exports[_0x0700('0x8')]=function(_0x17a5b3,_0x23572f,_0xe2062b,_0xab2091){return function(_0x1d5c4b){try{logger[_0x0700('0x9')]('[%s][CLOSE]\x20reason\x20%s',_0x17a5b3,_0x23572f[0x0]);var _0x159dd7={'closed':0x1,'closedAt':moment()[_0x0700('0xa')](_0x0700('0xb')),'closeReason':_0x0700('0xc'),'disposition':_0x23572f[0x0]};if(rpc[_0xab2091[_0x0700('0xd')]+'Interaction']){rpc[_0xab2091[_0x0700('0xd')]+'Interaction']['update'](_0xab2091[_0x0700('0xe')]['id'],_0x159dd7)[_0x0700('0xf')](function(_0x2a4232){logger[_0x0700('0x9')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x17a5b3,_0xab2091['interaction']['id']);})['catch'](function(_0x5d6741){logger[_0x0700('0x10')](_0x0700('0x11'),_0x17a5b3,JSON[_0x0700('0x12')](_0x5d6741));})[_0x0700('0x13')](function(){_0x1d5c4b['stop']();});}}catch(_0x2a5dd1){logger[_0x0700('0x10')]('[%s][CLOSE]\x20%s',_0x17a5b3,JSON[_0x0700('0x12')](_0x2a5dd1));_0x1d5c4b[_0x0700('0x14')]();}};};
\ No newline at end of file
index 56ac1a9..386eb56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a44=['isNil','interaction','UserId','info','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','phone','chat','ChatWebsiteId','AccountId','account','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','[%s][DIALOGFLOW]\x20%s','catch','error','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','dialogflow','result','fulfillment','speech','providerName','metadata','message','lodash','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence'];(function(_0x223fce,_0x18b685){var _0x16977e=function(_0x44d9eb){while(--_0x44d9eb){_0x223fce['push'](_0x223fce['shift']());}};_0x16977e(++_0x18b685);}(_0x1a44,0xc4));var _0x41a4=function(_0x42bfb8,_0x59574c){_0x42bfb8=_0x42bfb8-0x0;var _0x38d9fe=_0x1a44[_0x42bfb8];return _0x38d9fe;};'use strict';var _=require(_0x41a4('0x0'));var moment=require('moment');var apiai=require(_0x41a4('0x1'));var md5=require(_0x41a4('0x2'));var utils=require(_0x41a4('0x3'));var logger=require(_0x41a4('0x4'))(_0x41a4('0x5'));var rpc={'chatMessage':require(_0x41a4('0x6')),'openchannelMessage':require(_0x41a4('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x41a4('0x8')),'faxMessage':require(_0x41a4('0x9')),'whatsappMessage':require(_0x41a4('0xa'))};exports[_0x41a4('0xb')]=function(_0x599ccc,_0x5f57e7){return function(_0x2e523b){try{if(!_[_0x41a4('0xc')](this[_0x41a4('0xd')][_0x41a4('0xe')])){logger[_0x41a4('0xf')]('[%s][DIALOGFLOW]\x20%s',_0x599ccc,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x2e523b[_0x41a4('0x10')]();}var _0x162699={'ContactId':this[_0x41a4('0x11')]['id'],'sentAt':moment()[_0x41a4('0x12')](_0x41a4('0x13')),'direction':_0x41a4('0x14')};if(this['channel']===_0x41a4('0x15')||this[_0x41a4('0x16')]===_0x41a4('0x17')){_0x162699[_0x41a4('0x18')]=this['interaction'][_0x41a4('0x18')];}var _0x87638d=this['channel'];if(_0x87638d===_0x41a4('0x19')){_0x162699[_0x41a4('0x1a')]=this['account']['id'];}else{_0x162699[_['upperFirst'](_0x87638d)+_0x41a4('0x1b')]=this[_0x41a4('0x1c')]['id'];}_0x162699[_[_0x41a4('0x1d')](_0x87638d)+_0x41a4('0x1e')]=this[_0x41a4('0xd')]['id'];if(this['interaction'][_0x41a4('0x1f')]){var _0x5043f5=_0x5f57e7[0x2];if(!_[_0x41a4('0x20')](_0x5043f5)){_0x162699[_0x41a4('0x21')]=utils[_0x41a4('0x22')](_0x5043f5,this);return rpc[_0x87638d+_0x41a4('0x23')][_0x41a4('0x24')](_0x162699)[_0x41a4('0x25')](function(_0x43c0f9){logger[_0x41a4('0xf')](_0x41a4('0x26'),_0x599ccc,_0x162699[_0x41a4('0x21')]);})[_0x41a4('0x27')](function(_0x4828cc){logger[_0x41a4('0x28')](_0x41a4('0x26'),_0x599ccc,JSON[_0x41a4('0x29')](_0x4828cc));})['finally'](function(){logger[_0x41a4('0xf')](_0x41a4('0x2a'),_0x599ccc);_0x2e523b[_0x41a4('0x2b')]();});}else{logger[_0x41a4('0xf')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x599ccc);_0x2e523b[_0x41a4('0x2b')]();}}else{var _0x8c1da5=this;var _0x4b86be=apiai(_0x5f57e7[0x0],{'language':_0x5f57e7[0x1]||'en'});return _0x4b86be[_0x41a4('0x2c')](this['message'][_0x41a4('0x21')],{'sessionId':md5(this[_0x41a4('0xd')]['id'])})[_0x41a4('0x25')](function(_0x18e3dd){_0x8c1da5[_0x41a4('0x21')][_0x41a4('0x2d')]=_0x18e3dd;_0x162699[_0x41a4('0x21')]=_0x18e3dd[_0x41a4('0x2e')][_0x41a4('0x2f')][_0x41a4('0x30')];_0x162699[_0x41a4('0x31')]=_0x41a4('0x2d');_0x162699['providerResponse']=JSON[_0x41a4('0x29')](_0x18e3dd);return rpc[_0x87638d+_0x41a4('0x23')][_0x41a4('0x24')](_0x162699)['then'](function(_0x3478dd){logger[_0x41a4('0xf')](_0x41a4('0x26'),_0x599ccc,_0x162699[_0x41a4('0x21')]);if(_0x18e3dd['result'][_0x41a4('0x32')]['endConversation']){_0x2e523b[_0x41a4('0x10')]();}else{_0x2e523b[_0x41a4('0x2b')]();}})[_0x41a4('0x27')](function(_0x48b324){logger[_0x41a4('0x28')](_0x41a4('0x26'),_0x599ccc,JSON[_0x41a4('0x29')](_0x48b324));_0x2e523b[_0x41a4('0x10')]();});})[_0x41a4('0x27')](function(_0x3ad2fa){logger[_0x41a4('0x28')](_0x41a4('0x26'),_0x599ccc,_0x3ad2fa[_0x41a4('0x33')]);_0x2e523b['next']();});}}catch(_0x37bed2){logger[_0x41a4('0x28')]('[%s][DIALOGFLOW]\x20%s',_0x599ccc,JSON['stringify'](_0x37bed2));_0x2e523b[_0x41a4('0x2b')]();}};};
\ No newline at end of file
+var _0x195f=['finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','textRequest','message','dialogflow','result','fulfillment','speech','providerName','providerResponse','Message','metadata','endConversation','error','lodash','moment','md5','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','body','getMustacheRender','create','then','catch','stringify'];(function(_0xd328f1,_0x49e58f){var _0x5efed7=function(_0x284e8e){while(--_0x284e8e){_0xd328f1['push'](_0xd328f1['shift']());}};_0x5efed7(++_0x49e58f);}(_0x195f,0x113));var _0xf195=function(_0x5a852b,_0x1694c2){_0x5a852b=_0x5a852b-0x0;var _0xd74d84=_0x195f[_0x5a852b];return _0xd74d84;};'use strict';var _=require(_0xf195('0x0'));var moment=require(_0xf195('0x1'));var apiai=require('apiai-promise');var md5=require(_0xf195('0x2'));var utils=require(_0xf195('0x3'));var logger=require('../../../../config/logger')(_0xf195('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xf195('0x5')),'mailMessage':require(_0xf195('0x6')),'smsMessage':require(_0xf195('0x7')),'faxMessage':require(_0xf195('0x8')),'whatsappMessage':require(_0xf195('0x9'))};exports[_0xf195('0xa')]=function(_0x2770db,_0x59d783){return function(_0x5eac33){try{if(!_[_0xf195('0xb')](this[_0xf195('0xc')][_0xf195('0xd')])){logger[_0xf195('0xe')](_0xf195('0xf'),_0x2770db,_0xf195('0x10'));return _0x5eac33[_0xf195('0x11')]();}var _0x4bce90={'ContactId':this[_0xf195('0x12')]['id'],'sentAt':moment()[_0xf195('0x13')](_0xf195('0x14')),'direction':'out'};if(this[_0xf195('0x15')]===_0xf195('0x16')||this[_0xf195('0x15')]===_0xf195('0x17')){_0x4bce90['phone']=this[_0xf195('0xc')][_0xf195('0x18')];}var _0x57f8cc=this[_0xf195('0x15')];if(_0x57f8cc==='chat'){_0x4bce90[_0xf195('0x19')]=this[_0xf195('0x1a')]['id'];}else{_0x4bce90[_[_0xf195('0x1b')](_0x57f8cc)+_0xf195('0x1c')]=this[_0xf195('0x1a')]['id'];}_0x4bce90[_[_0xf195('0x1b')](_0x57f8cc)+_0xf195('0x1d')]=this[_0xf195('0xc')]['id'];if(this['interaction']['created']){var _0x15590e=_0x59d783[0x2];if(!_[_0xf195('0x1e')](_0x15590e)){_0x4bce90[_0xf195('0x1f')]=utils[_0xf195('0x20')](_0x15590e,this);return rpc[_0x57f8cc+'Message'][_0xf195('0x21')](_0x4bce90)[_0xf195('0x22')](function(_0x5cf7dc){logger[_0xf195('0xe')](_0xf195('0xf'),_0x2770db,_0x4bce90['body']);})[_0xf195('0x23')](function(_0x3e82c2){logger['error'](_0xf195('0xf'),_0x2770db,JSON[_0xf195('0x24')](_0x3e82c2));})[_0xf195('0x25')](function(){logger[_0xf195('0xe')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x2770db);_0x5eac33['stop']();});}else{logger['info'](_0xf195('0x26'),_0x2770db);_0x5eac33[_0xf195('0x27')]();}}else{var _0x388c36=this;var _0x785aae=apiai(_0x59d783[0x0],{'language':_0x59d783[0x1]||'en'});return _0x785aae[_0xf195('0x28')](this[_0xf195('0x29')][_0xf195('0x1f')],{'sessionId':md5(this[_0xf195('0xc')]['id'])})[_0xf195('0x22')](function(_0x255d58){_0x388c36[_0xf195('0x1f')][_0xf195('0x2a')]=_0x255d58;_0x4bce90['body']=_0x255d58[_0xf195('0x2b')][_0xf195('0x2c')][_0xf195('0x2d')];_0x4bce90[_0xf195('0x2e')]=_0xf195('0x2a');_0x4bce90[_0xf195('0x2f')]=JSON[_0xf195('0x24')](_0x255d58);return rpc[_0x57f8cc+_0xf195('0x30')]['create'](_0x4bce90)['then'](function(_0x190b43){logger[_0xf195('0xe')](_0xf195('0xf'),_0x2770db,_0x4bce90[_0xf195('0x1f')]);if(_0x255d58[_0xf195('0x2b')][_0xf195('0x31')][_0xf195('0x32')]){_0x5eac33[_0xf195('0x11')]();}else{_0x5eac33[_0xf195('0x27')]();}})[_0xf195('0x23')](function(_0xe3465f){logger[_0xf195('0x33')](_0xf195('0xf'),_0x2770db,JSON[_0xf195('0x24')](_0xe3465f));_0x5eac33[_0xf195('0x11')]();});})[_0xf195('0x23')](function(_0x20e0e3){logger[_0xf195('0x33')](_0xf195('0xf'),_0x2770db,_0x20e0e3['message']);_0x5eac33[_0xf195('0x11')]();});}}catch(_0x33b342){logger[_0xf195('0x33')](_0xf195('0xf'),_0x2770db,JSON[_0xf195('0x24')](_0x33b342));_0x5eac33[_0xf195('0x27')]();}};};
\ No newline at end of file
index 06dff34..7011be4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8b7=['DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','providerName','providerResponse','fulfillmentText','push','all','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','body','Message','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','isNil','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','create','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','message','detectIntent','then','length','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','intent','isFallback'];(function(_0x4101b2,_0x4cee82){var _0x272fa2=function(_0x950887){while(--_0x950887){_0x4101b2['push'](_0x4101b2['shift']());}};_0x272fa2(++_0x4cee82);}(_0xb8b7,0x114));var _0x7b8b=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xb8b7[_0x376b45];return _0x2341b3;};'use strict';var _=require('lodash');var dialogflow=require('dialogflow');var md5=require('md5');var moment=require('moment');var Promise=require('bluebird');var logger=require(_0x7b8b('0x0'))(_0x7b8b('0x1'));var utils=require(_0x7b8b('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x7b8b('0x3')),'mailMessage':require(_0x7b8b('0x4')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x7b8b('0x5'))};function createMessage(_0x31829a,_0x144e9c,_0x282b72,_0x23e5fb){return new Promise(function(_0xc8e0a6,_0x3390b3){var _0x5689c9=_['clone'](_0x282b72);_0x5689c9[_0x7b8b('0x6')]=_0x23e5fb;return rpc[_0x144e9c+_0x7b8b('0x7')]['create'](_0x5689c9)['then'](function(){logger[_0x7b8b('0x8')](_0x7b8b('0x9'),_0x31829a,_0x5689c9[_0x7b8b('0x6')]);_0xc8e0a6();})[_0x7b8b('0xa')](function(_0x4ae0fb){logger[_0x7b8b('0xb')]('[%s][DIALOGFLOWV2]\x20%s',_0x31829a,JSON[_0x7b8b('0xc')](_0x4ae0fb));_0x3390b3(_0x4ae0fb);});});}exports['consequence']=function(_0x2094a0,_0x23d19c){return function(_0x213a64){try{if(!_[_0x7b8b('0xd')](this['interaction'][_0x7b8b('0xe')])){logger[_0x7b8b('0x8')](_0x7b8b('0x9'),_0x2094a0,_0x7b8b('0xf'));return _0x213a64[_0x7b8b('0x10')]();}var _0x9a8531={'ContactId':this[_0x7b8b('0x11')]['id'],'sentAt':moment()[_0x7b8b('0x12')](_0x7b8b('0x13')),'direction':_0x7b8b('0x14')};if(this[_0x7b8b('0x15')]==='sms'||this['channel']===_0x7b8b('0x16')){_0x9a8531[_0x7b8b('0x17')]=this[_0x7b8b('0x18')][_0x7b8b('0x17')];}var _0x41af8d=this['channel'];if(_0x41af8d===_0x7b8b('0x19')){_0x9a8531[_0x7b8b('0x1a')]=this[_0x7b8b('0x1b')]['id'];}else{_0x9a8531[_[_0x7b8b('0x1c')](_0x41af8d)+_0x7b8b('0x1d')]=this[_0x7b8b('0x1b')]['id'];}_0x9a8531[_[_0x7b8b('0x1c')](_0x41af8d)+_0x7b8b('0x1e')]=this[_0x7b8b('0x18')]['id'];if(this['interaction'][_0x7b8b('0x1f')]){var _0x46c269=_0x23d19c[0x4];if(!_[_0x7b8b('0x20')](_0x46c269)){_0x9a8531['body']=utils[_0x7b8b('0x21')](_0x46c269,this);return rpc[_0x41af8d+_0x7b8b('0x7')][_0x7b8b('0x22')](_0x9a8531)['then'](function(_0x48db41){logger[_0x7b8b('0x8')](_0x7b8b('0x9'),_0x2094a0,_0x9a8531[_0x7b8b('0x6')]);})[_0x7b8b('0xa')](function(_0x37803e){logger[_0x7b8b('0xb')](_0x7b8b('0x9'),_0x2094a0,JSON[_0x7b8b('0xc')](_0x37803e));})['finally'](function(){logger['info'](_0x7b8b('0x23'),_0x2094a0);_0x213a64[_0x7b8b('0x24')]();});}else{logger['info'](_0x7b8b('0x25'),_0x2094a0);_0x213a64['stop']();}}else{var _0x41c6d3=this;var _0x45f276=_0x23d19c[0x2][_0x7b8b('0x26')](/\\n/g,'\x0a');var _0x1fef87={'credentials':{'private_key':_0x45f276,'client_email':_0x23d19c[0x1]}};var _0x44dfe9=new dialogflow['SessionsClient'](_0x1fef87);var _0xe03de5=_0x44dfe9['sessionPath'](_0x23d19c[0x0],md5(_0x41c6d3[_0x7b8b('0x18')]['id']));var _0xa2b201={'session':_0xe03de5,'queryInput':{'text':{'text':_0x41c6d3[_0x7b8b('0x27')][_0x7b8b('0x6')],'languageCode':_0x23d19c[0x3]||'en'}}};return _0x44dfe9[_0x7b8b('0x28')](_0xa2b201)[_0x7b8b('0x29')](function(_0x3c24fe){if(_0x3c24fe&&_0x3c24fe[_0x7b8b('0x2a')]){_0x41c6d3[_0x7b8b('0x6')]['dialogflowV2']=_0x3c24fe;var _0x457971=_0x3c24fe[0x0];var _0x250074=_0x457971[_0x7b8b('0x2b')]['diagnosticInfo']&&_0x457971[_0x7b8b('0x2b')]['diagnosticInfo']['fields']?_0x457971[_0x7b8b('0x2b')][_0x7b8b('0x2c')][_0x7b8b('0x2d')][_0x7b8b('0x2e')][_0x7b8b('0x2f')]:![];_0x41c6d3[_0x7b8b('0x6')][_0x7b8b('0x30')]=_0x457971['queryResult'][_0x7b8b('0x31')];_0x41c6d3['body'][_0x7b8b('0x32')]=_0x457971[_0x7b8b('0x2b')]['allRequiredParamsPresent'];_0x41c6d3[_0x7b8b('0x6')][_0x7b8b('0x33')]=_0x457971[_0x7b8b('0x2b')][_0x7b8b('0x2c')]&&_0x457971[_0x7b8b('0x2b')]['diagnosticInfo'][_0x7b8b('0x2d')]?_0x457971[_0x7b8b('0x2b')][_0x7b8b('0x2c')][_0x7b8b('0x2d')][_0x7b8b('0x2e')][_0x7b8b('0x2f')]:![];_0x41c6d3[_0x7b8b('0x6')][_0x7b8b('0x34')]=_0x457971[_0x7b8b('0x2b')]['intent'][_0x7b8b('0x35')];_0x41c6d3[_0x7b8b('0x6')][_0x7b8b('0x36')]=_0x457971[_0x7b8b('0x2b')]['intent'][_0x7b8b('0x37')];_0x41c6d3[_0x7b8b('0x6')][_0x7b8b('0x38')]=_0x457971[_0x7b8b('0x2b')][_0x7b8b('0x39')][_0x7b8b('0x3a')];_0x41c6d3[_0x7b8b('0x6')][_0x7b8b('0x3b')]=_0x457971['queryResult'][_0x7b8b('0x3c')];_0x41c6d3[_0x7b8b('0x6')]['DIALOGFLOWV2_QUERYTEXT']=_0x457971['queryResult'][_0x7b8b('0x3d')];_0x41c6d3[_0x7b8b('0x6')]['DIALOGFLOWV2_SCORE']=_0x457971['queryResult']['intentDetectionConfidence'];_0x9a8531[_0x7b8b('0x3e')]='dialogflowV2';_0x9a8531[_0x7b8b('0x3f')]=JSON[_0x7b8b('0xc')](_0x3c24fe);var _0x57abca=[];for(var _0x30309c=0x0;_0x30309c<_0x3c24fe[_0x7b8b('0x2a')];_0x30309c++){var _0x193197=_0x3c24fe[_0x30309c];if(_0x193197&&_0x193197[_0x7b8b('0x2b')]&&_0x193197[_0x7b8b('0x2b')][_0x7b8b('0x40')]){_0x57abca[_0x7b8b('0x41')](createMessage(_0x2094a0,_0x41af8d,_0x9a8531,_0x193197[_0x7b8b('0x2b')][_0x7b8b('0x40')]));}}return Promise[_0x7b8b('0x42')](_0x57abca)[_0x7b8b('0x29')](function(){if(_0x250074){_0x213a64[_0x7b8b('0x10')]();}else{_0x213a64[_0x7b8b('0x24')]();}})[_0x7b8b('0xa')](function(_0x4464fa){logger[_0x7b8b('0xb')](_0x7b8b('0x9'),_0x2094a0,JSON[_0x7b8b('0xc')](_0x4464fa));_0x213a64['next']();});}})[_0x7b8b('0xa')](function(_0x4b3697){logger[_0x7b8b('0xb')](_0x7b8b('0x9'),_0x2094a0,_0x4b3697[_0x7b8b('0x27')]);_0x213a64['next']();});}}catch(_0x55d481){logger['error'](_0x7b8b('0x9'),_0x2094a0,JSON[_0x7b8b('0xc')](_0x55d481));_0x213a64['stop']();}};};
\ No newline at end of file
+var _0x60b8=['intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','all','error','next','lodash','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','then','info','[%s][DIALOGFLOWV2]\x20%s','body','catch','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','getMustacheRender','Message','create','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','sessionPath','message','detectIntent','length','dialogflowV2','diagnosticInfo','queryResult','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE'];(function(_0x18d6fe,_0x52d2e9){var _0x289ac4=function(_0x1915fd){while(--_0x1915fd){_0x18d6fe['push'](_0x18d6fe['shift']());}};_0x289ac4(++_0x52d2e9);}(_0x60b8,0x1e4));var _0x860b=function(_0x16cff9,_0x1fd1b0){_0x16cff9=_0x16cff9-0x0;var _0x3ef1ce=_0x60b8[_0x16cff9];return _0x3ef1ce;};'use strict';var _=require(_0x860b('0x0'));var dialogflow=require('dialogflow');var md5=require('md5');var moment=require(_0x860b('0x1'));var Promise=require(_0x860b('0x2'));var logger=require(_0x860b('0x3'))(_0x860b('0x4'));var utils=require(_0x860b('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x860b('0x6')),'smsMessage':require(_0x860b('0x7')),'faxMessage':require(_0x860b('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x387520,_0x4d32d9,_0x5b83bf,_0x5aa2aa){return new Promise(function(_0x13609a,_0x52c57c){var _0x52ad76=_['clone'](_0x5b83bf);_0x52ad76['body']=_0x5aa2aa;return rpc[_0x4d32d9+'Message']['create'](_0x52ad76)[_0x860b('0x9')](function(){logger[_0x860b('0xa')](_0x860b('0xb'),_0x387520,_0x52ad76[_0x860b('0xc')]);_0x13609a();})[_0x860b('0xd')](function(_0x17fd0a){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x387520,JSON[_0x860b('0xe')](_0x17fd0a));_0x52c57c(_0x17fd0a);});});}exports[_0x860b('0xf')]=function(_0xe8175f,_0x4842d4){return function(_0x3f4b17){try{if(!_[_0x860b('0x10')](this[_0x860b('0x11')][_0x860b('0x12')])){logger[_0x860b('0xa')](_0x860b('0xb'),_0xe8175f,_0x860b('0x13'));return _0x3f4b17['next']();}var _0x516adb={'ContactId':this[_0x860b('0x14')]['id'],'sentAt':moment()[_0x860b('0x15')](_0x860b('0x16')),'direction':_0x860b('0x17')};if(this[_0x860b('0x18')]==='sms'||this[_0x860b('0x18')]==='whatsapp'){_0x516adb[_0x860b('0x19')]=this['interaction']['phone'];}var _0x39560f=this[_0x860b('0x18')];if(_0x39560f===_0x860b('0x1a')){_0x516adb[_0x860b('0x1b')]=this[_0x860b('0x1c')]['id'];}else{_0x516adb[_[_0x860b('0x1d')](_0x39560f)+_0x860b('0x1e')]=this[_0x860b('0x1c')]['id'];}_0x516adb[_['upperFirst'](_0x39560f)+'InteractionId']=this['interaction']['id'];if(this[_0x860b('0x11')]['created']){var _0x44e093=_0x4842d4[0x4];if(!_['isEmpty'](_0x44e093)){_0x516adb[_0x860b('0xc')]=utils[_0x860b('0x1f')](_0x44e093,this);return rpc[_0x39560f+_0x860b('0x20')][_0x860b('0x21')](_0x516adb)['then'](function(_0x4b0b21){logger['info'](_0x860b('0xb'),_0xe8175f,_0x516adb[_0x860b('0xc')]);})['catch'](function(_0x2451a8){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0xe8175f,JSON[_0x860b('0xe')](_0x2451a8));})[_0x860b('0x22')](function(){logger[_0x860b('0xa')](_0x860b('0x23'),_0xe8175f);_0x3f4b17[_0x860b('0x24')]();});}else{logger[_0x860b('0xa')](_0x860b('0x25'),_0xe8175f);_0x3f4b17[_0x860b('0x24')]();}}else{var _0x1a4ad6=this;var _0x555a50=_0x4842d4[0x2][_0x860b('0x26')](/\\n/g,'\x0a');var _0x23a320={'credentials':{'private_key':_0x555a50,'client_email':_0x4842d4[0x1]}};var _0x58c1ad=new dialogflow['SessionsClient'](_0x23a320);var _0x26bfa7=_0x58c1ad[_0x860b('0x27')](_0x4842d4[0x0],md5(_0x1a4ad6[_0x860b('0x11')]['id']));var _0x30e691={'session':_0x26bfa7,'queryInput':{'text':{'text':_0x1a4ad6[_0x860b('0x28')][_0x860b('0xc')],'languageCode':_0x4842d4[0x3]||'en'}}};return _0x58c1ad[_0x860b('0x29')](_0x30e691)['then'](function(_0x45e627){if(_0x45e627&&_0x45e627[_0x860b('0x2a')]){_0x1a4ad6[_0x860b('0xc')][_0x860b('0x2b')]=_0x45e627;var _0x35ad38=_0x45e627[0x0];var _0x5b04b7=_0x35ad38['queryResult'][_0x860b('0x2c')]&&_0x35ad38[_0x860b('0x2d')][_0x860b('0x2c')][_0x860b('0x2e')]?_0x35ad38[_0x860b('0x2d')]['diagnosticInfo']['fields'][_0x860b('0x2f')][_0x860b('0x30')]:![];_0x1a4ad6[_0x860b('0xc')][_0x860b('0x31')]=_0x35ad38[_0x860b('0x2d')][_0x860b('0x32')];_0x1a4ad6[_0x860b('0xc')][_0x860b('0x33')]=_0x35ad38[_0x860b('0x2d')]['allRequiredParamsPresent'];_0x1a4ad6[_0x860b('0xc')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x35ad38[_0x860b('0x2d')][_0x860b('0x2c')]&&_0x35ad38[_0x860b('0x2d')][_0x860b('0x2c')]['fields']?_0x35ad38['queryResult']['diagnosticInfo'][_0x860b('0x2e')][_0x860b('0x2f')][_0x860b('0x30')]:![];_0x1a4ad6['body']['DIALOGFLOWV2_INTENTNAME']=_0x35ad38['queryResult'][_0x860b('0x34')][_0x860b('0x35')];_0x1a4ad6[_0x860b('0xc')][_0x860b('0x36')]=_0x35ad38[_0x860b('0x2d')][_0x860b('0x34')]['displayName'];_0x1a4ad6[_0x860b('0xc')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x35ad38[_0x860b('0x2d')][_0x860b('0x34')][_0x860b('0x37')];_0x1a4ad6['body'][_0x860b('0x38')]=_0x35ad38[_0x860b('0x2d')][_0x860b('0x39')];_0x1a4ad6['body']['DIALOGFLOWV2_QUERYTEXT']=_0x35ad38[_0x860b('0x2d')][_0x860b('0x3a')];_0x1a4ad6['body'][_0x860b('0x3b')]=_0x35ad38[_0x860b('0x2d')][_0x860b('0x3c')];_0x516adb[_0x860b('0x3d')]='dialogflowV2';_0x516adb[_0x860b('0x3e')]=JSON[_0x860b('0xe')](_0x45e627);var _0x437e73=[];for(var _0x1cd048=0x0;_0x1cd048<_0x45e627[_0x860b('0x2a')];_0x1cd048++){var _0x2fe9d9=_0x45e627[_0x1cd048];if(_0x2fe9d9&&_0x2fe9d9[_0x860b('0x2d')]&&_0x2fe9d9[_0x860b('0x2d')][_0x860b('0x3f')]){_0x437e73[_0x860b('0x40')](createMessage(_0xe8175f,_0x39560f,_0x516adb,_0x2fe9d9[_0x860b('0x2d')]['fulfillmentText']));}}return Promise[_0x860b('0x41')](_0x437e73)[_0x860b('0x9')](function(){if(_0x5b04b7){_0x3f4b17['next']();}else{_0x3f4b17[_0x860b('0x24')]();}})[_0x860b('0xd')](function(_0x4327d1){logger[_0x860b('0x42')](_0x860b('0xb'),_0xe8175f,JSON[_0x860b('0xe')](_0x4327d1));_0x3f4b17[_0x860b('0x43')]();});}})[_0x860b('0xd')](function(_0x52d5f6){logger[_0x860b('0x42')](_0x860b('0xb'),_0xe8175f,_0x52d5f6[_0x860b('0x28')]);_0x3f4b17[_0x860b('0x43')]();});}}catch(_0x44005d){logger['error'](_0x860b('0xb'),_0xe8175f,JSON['stringify'](_0x44005d));_0x3f4b17[_0x860b('0x24')]();}};};
\ No newline at end of file
index baa165b..76683d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bd6=['./utils','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','replace','length','error','[%s][GOTOIF]\x20%s','message','stop','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','html-to-text'];(function(_0xd6237f,_0x26b0f3){var _0x3eaefc=function(_0xaed8dc){while(--_0xaed8dc){_0xd6237f['push'](_0xd6237f['shift']());}};_0x3eaefc(++_0x26b0f3);}(_0x3bd6,0x1d9));var _0x63bd=function(_0x3c64fd,_0x4b4f0e){_0x3c64fd=_0x3c64fd-0x0;var _0x39c856=_0x3bd6[_0x3c64fd];return _0x39c856;};'use strict';var schema=require(_0x63bd('0x0'));var _=require('lodash');var htmlToText=require(_0x63bd('0x1'));var utils=require(_0x63bd('0x2'));var logger=require('../../../../config/logger')(_0x63bd('0x3'));var gotoif=schema({'condition':{'type':_0x63bd('0x4'),'required':!![],'message':_0x63bd('0x5')},'priorityTrue':{'type':_0x63bd('0x6'),'message':_0x63bd('0x7')},'priorityFalse':{'type':_0x63bd('0x6'),'message':_0x63bd('0x8')}});exports['consequence']=function(_0x1718b0,_0x14c501){return function(_0x11d8ba){try{var _0x4b0c9b={'condition':htmlToText['fromString'](utils['getMustacheRender'](_0x14c501[0x0],this),{'wordwrap':![]})[_0x63bd('0x9')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x14c501[0x1],'priorityFalse':_0x14c501[0x2]};var _0x2bbaee=gotoif['validate'](_0x4b0c9b,{'typecast':!![]});if(_0x2bbaee[_0x63bd('0xa')]){logger[_0x63bd('0xb')](_0x63bd('0xc'),_0x1718b0,_['map'](_0x2bbaee,_0x63bd('0xd'))['join'](',\x20'));_0x11d8ba[_0x63bd('0xe')]();}else{try{var _0x5912f9=eval('('+_0x4b0c9b['condition']+')');var _0x1951eb=_0x5912f9?_0x4b0c9b['priorityTrue']:_0x4b0c9b[_0x63bd('0xf')];logger[_0x63bd('0x10')](_0x63bd('0x11'),_0x1718b0,_0x4b0c9b['condition'],_0x5912f9,_0x1951eb||_0x63bd('0x12'));if(_0x1951eb){var _0xbf9d98=_[_0x63bd('0x13')](_0x11d8ba[_0x63bd('0x14')](),{'p':_0x1951eb});if(_0xbf9d98>=0x0){logger[_0x63bd('0x10')](_0x63bd('0x15'),_0x1718b0,_0x1951eb||_0x63bd('0x12'),_0xbf9d98);_0x11d8ba[_0x63bd('0x12')](_0xbf9d98);}else{logger['info'](_0x63bd('0x16'),_0x1718b0,_0x1951eb||_0x63bd('0x12'));_0x11d8ba[_0x63bd('0xe')]();}}else{_0x11d8ba[_0x63bd('0x12')]();}}catch(_0x3d6153){logger[_0x63bd('0xb')](_0x63bd('0x17'),_0x1718b0,_0x3d6153[_0x63bd('0xd')]);_0x11d8ba[_0x63bd('0xe')]();}}}catch(_0x5516b0){logger['error'](_0x63bd('0xc'),_0x1718b0,JSON[_0x63bd('0x18')](_0x5516b0));_0x11d8ba[_0x63bd('0xe')]();}};};
\ No newline at end of file
+var _0x6b37=['validate','lodash','html-to-text','./utils','routing','string','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','length','error','[%s][GOTOIF]\x20%s','map','join','stop','priorityTrue','priorityFalse','info','condition','findIndex','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','stringify'];(function(_0x6942e0,_0x131e6d){var _0xb86490=function(_0x2fd5d7){while(--_0x2fd5d7){_0x6942e0['push'](_0x6942e0['shift']());}};_0xb86490(++_0x131e6d);}(_0x6b37,0xfc));var _0x76b3=function(_0x40b642,_0x3e8910){_0x40b642=_0x40b642-0x0;var _0x1401d9=_0x6b37[_0x40b642];return _0x1401d9;};'use strict';var schema=require(_0x76b3('0x0'));var _=require(_0x76b3('0x1'));var htmlToText=require(_0x76b3('0x2'));var utils=require(_0x76b3('0x3'));var logger=require('../../../../config/logger')(_0x76b3('0x4'));var gotoif=schema({'condition':{'type':_0x76b3('0x5'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':_0x76b3('0x6'),'message':_0x76b3('0x7')},'priorityFalse':{'type':_0x76b3('0x6'),'message':_0x76b3('0x8')}});exports[_0x76b3('0x9')]=function(_0xb3cdf1,_0x2ceb95){return function(_0x2a677e){try{var _0x258f55={'condition':htmlToText[_0x76b3('0xa')](utils[_0x76b3('0xb')](_0x2ceb95[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x2ceb95[0x1],'priorityFalse':_0x2ceb95[0x2]};var _0x231966=gotoif['validate'](_0x258f55,{'typecast':!![]});if(_0x231966[_0x76b3('0xc')]){logger[_0x76b3('0xd')](_0x76b3('0xe'),_0xb3cdf1,_[_0x76b3('0xf')](_0x231966,'message')[_0x76b3('0x10')](',\x20'));_0x2a677e[_0x76b3('0x11')]();}else{try{var _0x2c9f58=eval('('+_0x258f55['condition']+')');var _0x18d232=_0x2c9f58?_0x258f55[_0x76b3('0x12')]:_0x258f55[_0x76b3('0x13')];logger[_0x76b3('0x14')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0xb3cdf1,_0x258f55[_0x76b3('0x15')],_0x2c9f58,_0x18d232||'next');if(_0x18d232){var _0x4ef5f7=_[_0x76b3('0x16')](_0x2a677e['rules'](),{'p':_0x18d232});if(_0x4ef5f7>=0x0){logger[_0x76b3('0x14')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0xb3cdf1,_0x18d232||_0x76b3('0x17'),_0x4ef5f7);_0x2a677e['next'](_0x4ef5f7);}else{logger[_0x76b3('0x14')](_0x76b3('0x18'),_0xb3cdf1,_0x18d232||_0x76b3('0x17'));_0x2a677e['stop']();}}else{_0x2a677e[_0x76b3('0x17')]();}}catch(_0x48a9ed){logger['error'](_0x76b3('0x19'),_0xb3cdf1,_0x48a9ed[_0x76b3('0x1a')]);_0x2a677e[_0x76b3('0x11')]();}}}catch(_0x1a23db){logger['error'](_0x76b3('0xe'),_0xb3cdf1,JSON[_0x76b3('0x1b')](_0x1a23db));_0x2a677e[_0x76b3('0x11')]();}};};
\ No newline at end of file
index cea69b3..8783900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc455=['[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','stop','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','length','error','[%s][GOTOP]\x20%s','map','message','join','info','priority','findIndex','rules'];(function(_0xc700b5,_0x14d937){var _0x35ac84=function(_0x4f40b1){while(--_0x4f40b1){_0xc700b5['push'](_0xc700b5['shift']());}};_0x35ac84(++_0x14d937);}(_0xc455,0x131));var _0x5c45=function(_0xd53226,_0x3c2862){_0xd53226=_0xd53226-0x0;var _0x4915de=_0xc455[_0xd53226];return _0x4915de;};'use strict';var schema=require('validate');var _=require(_0x5c45('0x0'));var logger=require(_0x5c45('0x1'))(_0x5c45('0x2'));var gotop=schema({'priority':{'type':_0x5c45('0x3'),'required':!![],'message':_0x5c45('0x4')}});exports['consequence']=function(_0x5d3a08,_0x1ac83c){return function(_0x231ab9){try{var _0x2d8e91={'priority':_0x1ac83c[0x0]};var _0x38f258=gotop['validate'](_0x2d8e91,{'typecast':!![]});if(_0x38f258[_0x5c45('0x5')]){logger[_0x5c45('0x6')](_0x5c45('0x7'),_0x5d3a08,_[_0x5c45('0x8')](_0x38f258,_0x5c45('0x9'))[_0x5c45('0xa')](',\x20'));_0x231ab9['stop']();}else{logger[_0x5c45('0xb')]('[%s][GOTOP]\x20priority\x20%s',_0x5d3a08,_0x2d8e91[_0x5c45('0xc')]);if(_0x2d8e91[_0x5c45('0xc')]){var _0x552b11=_[_0x5c45('0xd')](_0x231ab9[_0x5c45('0xe')](),{'p':_0x2d8e91[_0x5c45('0xc')]});if(_0x552b11>=0x0){logger[_0x5c45('0xb')](_0x5c45('0xf'),_0x5d3a08,_0x2d8e91['priority']||'next',_0x552b11);_0x231ab9[_0x5c45('0x10')](_0x552b11);}else{logger[_0x5c45('0xb')](_0x5c45('0x11'),_0x5d3a08,_0x2d8e91['priority']||_0x5c45('0x10'));_0x231ab9['stop']();}}else{_0x231ab9[_0x5c45('0x10')]();}}}catch(_0x1d1b5a){logger[_0x5c45('0x6')](_0x5c45('0x7'),_0x5d3a08,JSON[_0x5c45('0x12')](_0x1d1b5a));_0x231ab9[_0x5c45('0x13')]();}};};
\ No newline at end of file
+var _0xbbcb=['findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','routing','number','consequence','length','error','[%s][GOTOP]\x20%s','map','join','stop','[%s][GOTOP]\x20priority\x20%s','priority'];(function(_0xfb944e,_0x438a38){var _0x21a954=function(_0x22cc75){while(--_0x22cc75){_0xfb944e['push'](_0xfb944e['shift']());}};_0x21a954(++_0x438a38);}(_0xbbcb,0x1e1));var _0xbbbc=function(_0x1db793,_0xb40389){_0x1db793=_0x1db793-0x0;var _0x2e1a49=_0xbbcb[_0x1db793];return _0x2e1a49;};'use strict';var schema=require(_0xbbbc('0x0'));var _=require(_0xbbbc('0x1'));var logger=require('../../../../config/logger')(_0xbbbc('0x2'));var gotop=schema({'priority':{'type':_0xbbbc('0x3'),'required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0xbbbc('0x4')]=function(_0x2cf116,_0x3bd1cf){return function(_0x4d37e2){try{var _0x1a9e46={'priority':_0x3bd1cf[0x0]};var _0x5b9880=gotop[_0xbbbc('0x0')](_0x1a9e46,{'typecast':!![]});if(_0x5b9880[_0xbbbc('0x5')]){logger[_0xbbbc('0x6')](_0xbbbc('0x7'),_0x2cf116,_[_0xbbbc('0x8')](_0x5b9880,'message')[_0xbbbc('0x9')](',\x20'));_0x4d37e2[_0xbbbc('0xa')]();}else{logger['info'](_0xbbbc('0xb'),_0x2cf116,_0x1a9e46[_0xbbbc('0xc')]);if(_0x1a9e46['priority']){var _0x310a1d=_[_0xbbbc('0xd')](_0x4d37e2[_0xbbbc('0xe')](),{'p':_0x1a9e46[_0xbbbc('0xc')]});if(_0x310a1d>=0x0){logger['info'](_0xbbbc('0xf'),_0x2cf116,_0x1a9e46[_0xbbbc('0xc')]||_0xbbbc('0x10'),_0x310a1d);_0x4d37e2[_0xbbbc('0x10')](_0x310a1d);}else{logger['info'](_0xbbbc('0x11'),_0x2cf116,_0x1a9e46[_0xbbbc('0xc')]||_0xbbbc('0x10'));_0x4d37e2[_0xbbbc('0xa')]();}}else{_0x4d37e2['next']();}}}catch(_0x1b8b3b){logger[_0xbbbc('0x6')](_0xbbbc('0x7'),_0x2cf116,JSON[_0xbbbc('0x12')](_0x1b8b3b));_0x4d37e2[_0xbbbc('0xa')]();}};};
\ No newline at end of file
index 105b913..6baafd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2884=['interaction','Message','create','then','info','body','next','[%s][MESSAGE]\x20%s','stop','error','stringify','lodash','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','consequence','getMustacheRender','channel','chat','account','upperFirst','InteractionId'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x2884,0x1eb));var _0x4288=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0x2884[_0x4bfac3];return _0x15f0f2;};'use strict';var _=require(_0x4288('0x0'));var utils=require('./utils');var logger=require(_0x4288('0x1'))(_0x4288('0x2'));var rpc={'chatMessage':require(_0x4288('0x3')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x4288('0x4')),'smsMessage':require(_0x4288('0x5')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x4288('0x6')]=function(_0x250772,_0x3d67f7){return function(_0x59dffa){try{var _0x526a07={'body':utils[_0x4288('0x7')](_0x3d67f7[0x0],this),'ContactId':this['contact']['id']};if(this[_0x4288('0x8')]===_0x4288('0x9')){_0x526a07['ChatWebsiteId']=this[_0x4288('0xa')]['id'];}else{_0x526a07[_[_0x4288('0xb')](this[_0x4288('0x8')])+'AccountId']=this['account']['id'];}_0x526a07[_[_0x4288('0xb')](this[_0x4288('0x8')])+_0x4288('0xc')]=this[_0x4288('0xd')]['id'];if(rpc[this[_0x4288('0x8')]+_0x4288('0xe')]){return rpc[this[_0x4288('0x8')]+'Message'][_0x4288('0xf')](_0x526a07)[_0x4288('0x10')](function(_0xfa6eca){logger[_0x4288('0x11')]('[%s][MESSAGE]\x20%s',_0x250772,_0x526a07[_0x4288('0x12')]);_0x59dffa[_0x4288('0x13')]();})['catch'](function(_0x1782d2){logger['error'](_0x4288('0x14'),_0x250772,JSON['stringify'](_0x1782d2));_0x59dffa[_0x4288('0x15')]();});}}catch(_0x1c3a7f){logger[_0x4288('0x16')](_0x4288('0x14'),_0x250772,JSON[_0x4288('0x17')](_0x1c3a7f));_0x59dffa[_0x4288('0x15')]();}};};
\ No newline at end of file
+var _0x28a3=['Message','create','then','[%s][MESSAGE]\x20%s','body','next','error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','account','upperFirst','AccountId','InteractionId','interaction'];(function(_0x3d2f37,_0x3738ca){var _0x2a762c=function(_0x2e5d82){while(--_0x2e5d82){_0x3d2f37['push'](_0x3d2f37['shift']());}};_0x2a762c(++_0x3738ca);}(_0x28a3,0x79));var _0x328a=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x28a3[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0x328a('0x0'));var utils=require(_0x328a('0x1'));var logger=require(_0x328a('0x2'))(_0x328a('0x3'));var rpc={'chatMessage':require(_0x328a('0x4')),'openchannelMessage':require(_0x328a('0x5')),'mailMessage':require(_0x328a('0x6')),'smsMessage':require(_0x328a('0x7')),'faxMessage':require(_0x328a('0x8')),'whatsappMessage':require(_0x328a('0x9'))};exports[_0x328a('0xa')]=function(_0x5c57d8,_0x127280){return function(_0x329f35){try{var _0xcdd140={'body':utils[_0x328a('0xb')](_0x127280[0x0],this),'ContactId':this[_0x328a('0xc')]['id']};if(this[_0x328a('0xd')]==='chat'){_0xcdd140['ChatWebsiteId']=this[_0x328a('0xe')]['id'];}else{_0xcdd140[_[_0x328a('0xf')](this[_0x328a('0xd')])+_0x328a('0x10')]=this[_0x328a('0xe')]['id'];}_0xcdd140[_[_0x328a('0xf')](this[_0x328a('0xd')])+_0x328a('0x11')]=this[_0x328a('0x12')]['id'];if(rpc[this[_0x328a('0xd')]+'Message']){return rpc[this[_0x328a('0xd')]+_0x328a('0x13')][_0x328a('0x14')](_0xcdd140)[_0x328a('0x15')](function(_0x44fb9b){logger['info'](_0x328a('0x16'),_0x5c57d8,_0xcdd140[_0x328a('0x17')]);_0x329f35[_0x328a('0x18')]();})['catch'](function(_0x3e028f){logger[_0x328a('0x19')](_0x328a('0x16'),_0x5c57d8,JSON[_0x328a('0x1a')](_0x3e028f));_0x329f35['stop']();});}}catch(_0x13c555){logger[_0x328a('0x19')]('[%s][MESSAGE]\x20%s',_0x5c57d8,JSON[_0x328a('0x1a')](_0x13c555));_0x329f35[_0x328a('0x1b')]();}};};
\ No newline at end of file
index ee43573..3e4eaaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bb6=['info','getMustacheRender','[%s][NOOP]\x20%s','stop','./utils','routing','consequence'];(function(_0x48d79c,_0x3d2857){var _0x15798c=function(_0x5f15af){while(--_0x5f15af){_0x48d79c['push'](_0x48d79c['shift']());}};_0x15798c(++_0x3d2857);}(_0x7bb6,0x1d9));var _0x67bb=function(_0xa78022,_0x596949){_0xa78022=_0xa78022-0x0;var _0x424f59=_0x7bb6[_0xa78022];return _0x424f59;};'use strict';var utils=require(_0x67bb('0x0'));var logger=require('../../../../config/logger')(_0x67bb('0x1'));exports[_0x67bb('0x2')]=function(_0x5ef6cc,_0x33d4f6){return function(_0x7e2bd1){try{logger[_0x67bb('0x3')]('[%s][NOOP]\x20%s',_0x5ef6cc,utils[_0x67bb('0x4')](_0x33d4f6[0x0],this));_0x7e2bd1['next']();}catch(_0x4d2e86){logger['error'](_0x67bb('0x5'),_0x5ef6cc,JSON['stringify'](_0x4d2e86));_0x7e2bd1[_0x67bb('0x6')]();}};};
\ No newline at end of file
+var _0x5aa9=['./utils','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','error','stringify','stop'];(function(_0x15ebfd,_0xbc1af8){var _0x268375=function(_0x32992b){while(--_0x32992b){_0x15ebfd['push'](_0x15ebfd['shift']());}};_0x268375(++_0xbc1af8);}(_0x5aa9,0x1c2));var _0x95aa=function(_0x33a597,_0x210be1){_0x33a597=_0x33a597-0x0;var _0x1481f4=_0x5aa9[_0x33a597];return _0x1481f4;};'use strict';var utils=require(_0x95aa('0x0'));var logger=require('../../../../config/logger')(_0x95aa('0x1'));exports[_0x95aa('0x2')]=function(_0x5b9a54,_0xa49f6e){return function(_0x1499a9){try{logger[_0x95aa('0x3')](_0x95aa('0x4'),_0x5b9a54,utils[_0x95aa('0x5')](_0xa49f6e[0x0],this));_0x1499a9['next']();}catch(_0x5872f4){logger[_0x95aa('0x6')](_0x95aa('0x4'),_0x5b9a54,JSON[_0x95aa('0x7')](_0x5872f4));_0x1499a9[_0x95aa('0x8')]();}};};
\ No newline at end of file
index 0d59c7e..0c16f91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52c1=['pick','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','upperFirst','channel','QueueId','InteractionId','interaction','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','catch','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','update','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','find','Queues','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','stop','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','rrmemory','beepall','log','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/logger','./strategy','defaults','socket.io-emitter','queue_id','account','queue','from','emit','clone','format','%sQueuesWaitingInteractions'];(function(_0x1667df,_0x266940){var _0x341abf=function(_0x123c3f){while(--_0x123c3f){_0x1667df['push'](_0x1667df['shift']());}};_0x341abf(++_0x266940);}(_0x52c1,0x1ce));var _0x152c=function(_0x6a43ba,_0x47aa3c){_0x6a43ba=_0x6a43ba-0x0;var _0x70f3ad=_0x52c1[_0x6a43ba];return _0x70f3ad;};'use strict';var schema=require(_0x152c('0x0'));var _=require(_0x152c('0x1'));var util=require(_0x152c('0x2'));var seqqueue=require(_0x152c('0x3'));var moment=require(_0x152c('0x4'));var Redis=require(_0x152c('0x5'));var config=require('../../../../config/environment');var logger=require(_0x152c('0x6'))('routing');var strategy=require(_0x152c('0x7'));config['redis']=_[_0x152c('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x152c('0x9'))(new Redis(config['redis']));var attributes=['id',_0x152c('0xa'),_0x152c('0xb'),_0x152c('0xc'),_0x152c('0xd'),'joinAt'];function emit(_0x2527f6,_0xf4eed1,_0x4d326f){io['to'](_0x2527f6)[_0x152c('0xe')](_0xf4eed1,_0x4d326f);}function emitChannelQueueInteraction(_0xc31fc6,_0x1756a1,_0x191715,_0x1f8475,_0x116dc1,_0x121ed0,_0x445015,_0x26a087){var _0x328bc9=_[_0x152c('0xf')](_0x191715);_0x328bc9['queue_id']=_0x26a087;_0x328bc9[_0x152c('0xc')]=_0x1756a1;_0x328bc9[_0x152c('0xb')]=_0x1f8475;_0x328bc9['id']=_0x116dc1;if(_0x121ed0){_0x445015[util[_0x152c('0x10')](_0x152c('0x11'),_0xc31fc6)][_0x116dc1]=_[_0x152c('0x12')](_0x328bc9,attributes);}else{delete _0x445015[util[_0x152c('0x10')](_0x152c('0x11'),_0xc31fc6)][_0x116dc1];}emit(util[_0x152c('0x10')]('%s:queue:%s',_0xc31fc6,_0x1756a1),util[_0x152c('0x10')](_0x152c('0x13'),_0xc31fc6,_0x121ed0?_0x152c('0x14'):_0x152c('0x15')),_['pick'](_0x328bc9,attributes));}var rpc={'openchannelQueueReport':require(_0x152c('0x16')),'mailQueueReport':require(_0x152c('0x17')),'chatQueueReport':require(_0x152c('0x18')),'smsQueueReport':require(_0x152c('0x19')),'faxQueueReport':require(_0x152c('0x1a')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0x152c('0x1b'),'required':!![],'message':_0x152c('0x1c')},'timeout':{'type':_0x152c('0x1d'),'message':_0x152c('0x1e')}});function startRouting(_0x31a16b,_0x38c8f3,_0x44f5ce,_0x31b304){if(_0x31a16b&&_0x38c8f3&&_0x44f5ce){_0x38c8f3[_0x152c('0x1f')]+=0x1;var _0xacb5f0={'uniqueid':_0x31a16b,'from':_0x44f5ce[_0x152c('0x20')]?_0x44f5ce[_0x152c('0x20')][_0x152c('0xd')]:'','joinAt':moment()['format'](_0x152c('0x21')),'ContactId':_0x44f5ce['contact']?_0x44f5ce['contact']['id']:null,'ListId':_0x44f5ce['list']?_0x44f5ce['list']['id']:null};_0xacb5f0[_[_0x152c('0x22')](_0x44f5ce[_0x152c('0x23')])+_0x152c('0x24')]=_0x38c8f3['id']||null;_0xacb5f0[_[_0x152c('0x22')](_0x44f5ce[_0x152c('0x23')])+_0x152c('0x25')]=_0x44f5ce[_0x152c('0x26')]?_0x44f5ce[_0x152c('0x26')]['id']:null;_0xacb5f0[_['upperFirst'](_0x44f5ce['channel'])+_0x152c('0x27')]=_0x44f5ce[_0x152c('0x28')]?_0x44f5ce[_0x152c('0x28')]['id']:null;_0xacb5f0[_[_0x152c('0x22')](_0x44f5ce[_0x152c('0x23')])+(_0x44f5ce[_0x152c('0x23')]!==_0x152c('0x29')?_0x152c('0x2a'):'WebsiteId')]=_0x44f5ce[_0x152c('0xb')]?_0x44f5ce[_0x152c('0xb')]['id']:null;logger[_0x152c('0x2b')](util['format'](_0x152c('0x2c'),_0x31a16b,_0x38c8f3[_0x152c('0x2d')]));emitChannelQueueInteraction(_0x44f5ce['channel'],_0x38c8f3['name'],_0xacb5f0,_0x44f5ce[_0x152c('0xb')][_0x152c('0x2d')],_0x44f5ce[_0x152c('0x28')]['id'],!![],_0x31b304,_0x38c8f3['id']);if(rpc[_0x44f5ce[_0x152c('0x23')]+_0x152c('0x2e')]){return rpc[_0x44f5ce['channel']+_0x152c('0x2e')][_0x152c('0x2f')](_0xacb5f0)['catch'](function(_0x127e43){logger[_0x152c('0x30')](_0x152c('0x31'));});}}}function stopRouting(_0x224446,_0x20617a,_0x14eab8,_0x5c0fe0){if(_0x224446&&_0x20617a){_0x20617a['waiting']-=0x1;var _0x488a75={'leaveAt':moment()[_0x152c('0x10')](_0x152c('0x21')),'acceptAt':moment()[_0x152c('0x10')](_0x152c('0x21')),'reason':_0x152c('0x32')};logger[_0x152c('0x2b')](util[_0x152c('0x10')](_0x152c('0x33'),_0x224446,_0x20617a[_0x152c('0x2d')]));emitChannelQueueInteraction(_0x14eab8[_0x152c('0x23')],_0x20617a[_0x152c('0x2d')],_0x14eab8[_0x152c('0x20')],_0x14eab8[_0x152c('0xb')][_0x152c('0x2d')],_0x14eab8[_0x152c('0x28')]['id'],![],_0x5c0fe0,_0x20617a['id']);if(rpc[_0x14eab8[_0x152c('0x23')]+_0x152c('0x2e')]){return rpc[_0x14eab8['channel']+_0x152c('0x2e')]['update'](_0x224446,_0x488a75)[_0x152c('0x34')](function(_0x2914f2){logger['error'](_0x152c('0x35'));});}}}function endRouting(_0x56ddc3,_0x56855e,_0x29e47e,_0x1dcafa){if(_0x56ddc3&&_0x56855e){_0x56855e[_0x152c('0x1f')]-=0x1;var _0x3f7177={'leaveAt':moment()[_0x152c('0x10')](_0x152c('0x21')),'exitAt':moment()[_0x152c('0x10')](_0x152c('0x21')),'reason':_0x152c('0x36')};logger['info'](util[_0x152c('0x10')](_0x152c('0x37'),_0x56ddc3,_0x56855e[_0x152c('0x2d')]));emitChannelQueueInteraction(_0x29e47e[_0x152c('0x23')],_0x56855e[_0x152c('0x2d')],_0x29e47e[_0x152c('0x20')],_0x29e47e[_0x152c('0xb')]['name'],_0x29e47e[_0x152c('0x28')]['id'],![],_0x1dcafa);if(rpc[_0x29e47e[_0x152c('0x23')]+'QueueReport']){return rpc[_0x29e47e[_0x152c('0x23')]+_0x152c('0x2e')][_0x152c('0x38')](_0x56ddc3,_0x3f7177)[_0x152c('0x34')](function(_0x49d93d){logger[_0x152c('0x30')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x8706a0){return function(_0x278772){return _0x278772[_0x152c('0x2d')][_0x152c('0x39')]()===_0x8706a0[_0x152c('0x39')]();};}exports[_0x152c('0x3a')]=function(_0x2e77dc,_0x3d9ae3,_0x1f2ecc,_0x46c2f8){return function(_0x31964a){try{var _0x43cc4d={'name':_0x3d9ae3[0x0],'timeout':_0x3d9ae3[0x1]};var _0x1baff2=queue['validate'](_0x43cc4d,{'typecast':!![]});if(_0x1baff2[_0x152c('0x3b')]){logger[_0x152c('0x30')](_0x152c('0x3c'),_0x2e77dc,_[_0x152c('0x3d')](_0x1baff2,_0x152c('0x28'))[_0x152c('0x3e')](',\x20'));_0x31964a['stop']();}else{var _0x5a6f9c=_[_0x152c('0x3f')](_0x1f2ecc[_0x46c2f8[_0x152c('0x23')]+_0x152c('0x40')],handleFindQueue(_0x43cc4d[_0x152c('0x2d')]));if(_0x5a6f9c){startRouting(_0x2e77dc,_0x5a6f9c,_0x46c2f8,_0x1f2ecc);var _0x5d2f24=(_0x5a6f9c[_0x152c('0x36')]||0xa)*0x3e8;var _0x21c76e=(_0x43cc4d[_0x152c('0x36')]||0x14)*0x3e8;var _0x2f2a7c,_0x46a16f;if(_0x5d2f24>_0x21c76e){_0x21c76e=_0x5d2f24;}var _0x31361c=seqqueue[_0x152c('0x41')](_0x5d2f24);_0x31361c['id']=_0x2e77dc;_0x31361c[_0x152c('0x42')]=_0x5d2f24;_0x31361c[_0x152c('0x43')]=_0x21c76e;_0x31361c[_0x152c('0x23')]=_0x46c2f8['channel'];_0x1f2ecc[_0x152c('0x44')][_0x2e77dc]['on'](_0x152c('0x45'),function(){logger[_0x152c('0x2b')](_0x152c('0x46'),_0x2e77dc);stopRouting(_0x2e77dc,_0x5a6f9c,_0x46c2f8,_0x1f2ecc);clearTimeout(_0x2f2a7c);_0x2f2a7c=undefined;_0x31361c[_0x152c('0x47')](!![]);if(_0x1f2ecc[_0x152c('0x44')][_0x2e77dc]){delete _0x1f2ecc[_0x152c('0x44')][_0x2e77dc];}_0x31964a[_0x152c('0x48')]();});_0x1f2ecc[_0x152c('0x44')][_0x2e77dc]['on'](_0x152c('0x49'),function(){if(_0x1f2ecc[_0x152c('0x44')][_0x2e77dc]){delete _0x1f2ecc[_0x152c('0x44')][_0x2e77dc];}});_0x2f2a7c=setTimeout(function(){logger[_0x152c('0x2b')](_0x152c('0x4a'),_0x2e77dc);endRouting(_0x2e77dc,_0x5a6f9c,_0x46c2f8,_0x1f2ecc);clearTimeout(_0x2f2a7c);_0x31361c[_0x152c('0x47')](!![]);_0x31964a[_0x152c('0x4b')]();},_0x21c76e);switch(_0x5a6f9c['strategy']){case _0x152c('0x4c'):strategy[_0x152c('0x4c')](_0x31361c,_0x5a6f9c,_0x1f2ecc,_0x46c2f8);break;default:strategy[_0x152c('0x4d')](_0x31361c,_0x5a6f9c,_0x1f2ecc,_0x46c2f8);}}else{logger['error']('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x2e77dc,_0x43cc4d[_0x152c('0x2d')]);_0x31964a[_0x152c('0x48')]();}}}catch(_0x3b40c9){console[_0x152c('0x4e')](_0x3b40c9);logger[_0x152c('0x30')](_0x152c('0x3c'),_0x2e77dc,_0x3b40c9[_0x152c('0x4f')]);_0x31964a[_0x152c('0x48')]();}};};
\ No newline at end of file
+var _0xd742=['emit','clone','format','%sQueuesWaitingInteractions','pick','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','InteractionId','interaction','MessageId','message','chat','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','accepted','[%s][STOP:QUEUE][NAME:%s]','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','update','error','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','stop','find','timeout','createQueue','atimeout','qtimeout','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','rules','[%s][QUEUE]\x20APPLICATION\x20END','close','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','lodash','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','localhost','queue_id','account','queue','from'];(function(_0x13bbc2,_0x12ec45){var _0x2d65e4=function(_0x5ec9f9){while(--_0x5ec9f9){_0x13bbc2['push'](_0x13bbc2['shift']());}};_0x2d65e4(++_0x12ec45);}(_0xd742,0x1ca));var _0x2d74=function(_0x53ab39,_0x300399){_0x53ab39=_0x53ab39-0x0;var _0x281fe6=_0xd742[_0x53ab39];return _0x281fe6;};'use strict';var schema=require(_0x2d74('0x0'));var _=require(_0x2d74('0x1'));var util=require('util');var seqqueue=require(_0x2d74('0x2'));var moment=require(_0x2d74('0x3'));var Redis=require(_0x2d74('0x4'));var config=require(_0x2d74('0x5'));var logger=require(_0x2d74('0x6'))(_0x2d74('0x7'));var strategy=require(_0x2d74('0x8'));config[_0x2d74('0x9')]=_[_0x2d74('0xa')](config[_0x2d74('0x9')],{'host':_0x2d74('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2d74('0x9')]));var attributes=['id',_0x2d74('0xc'),_0x2d74('0xd'),_0x2d74('0xe'),_0x2d74('0xf'),'joinAt'];function emit(_0x36a018,_0x455b5a,_0x10501c){io['to'](_0x36a018)[_0x2d74('0x10')](_0x455b5a,_0x10501c);}function emitChannelQueueInteraction(_0x49f95a,_0x5466dd,_0x6ddbe5,_0x3a5e49,_0x573484,_0x5ea0f0,_0x435ec9,_0x114056){var _0x3b6920=_[_0x2d74('0x11')](_0x6ddbe5);_0x3b6920[_0x2d74('0xc')]=_0x114056;_0x3b6920[_0x2d74('0xe')]=_0x5466dd;_0x3b6920[_0x2d74('0xd')]=_0x3a5e49;_0x3b6920['id']=_0x573484;if(_0x5ea0f0){_0x435ec9[util[_0x2d74('0x12')](_0x2d74('0x13'),_0x49f95a)][_0x573484]=_[_0x2d74('0x14')](_0x3b6920,attributes);}else{delete _0x435ec9[util[_0x2d74('0x12')](_0x2d74('0x13'),_0x49f95a)][_0x573484];}emit(util[_0x2d74('0x12')]('%s:queue:%s',_0x49f95a,_0x5466dd),util[_0x2d74('0x12')]('%s_queue_waiting_interaction:%s',_0x49f95a,_0x5ea0f0?_0x2d74('0x15'):_0x2d74('0x16')),_[_0x2d74('0x14')](_0x3b6920,attributes));}var rpc={'openchannelQueueReport':require(_0x2d74('0x17')),'mailQueueReport':require(_0x2d74('0x18')),'chatQueueReport':require(_0x2d74('0x19')),'smsQueueReport':require(_0x2d74('0x1a')),'faxQueueReport':require(_0x2d74('0x1b')),'whatsappQueueReport':require(_0x2d74('0x1c'))};var queue=schema({'name':{'type':_0x2d74('0x1d'),'required':!![],'message':_0x2d74('0x1e')},'timeout':{'type':_0x2d74('0x1f'),'message':_0x2d74('0x20')}});function startRouting(_0x16cb28,_0x4621ac,_0x11d2c6,_0x202c10){if(_0x16cb28&&_0x4621ac&&_0x11d2c6){_0x4621ac[_0x2d74('0x21')]+=0x1;var _0x56aea2={'uniqueid':_0x16cb28,'from':_0x11d2c6[_0x2d74('0x22')]?_0x11d2c6[_0x2d74('0x22')][_0x2d74('0xf')]:'','joinAt':moment()[_0x2d74('0x12')](_0x2d74('0x23')),'ContactId':_0x11d2c6[_0x2d74('0x24')]?_0x11d2c6[_0x2d74('0x24')]['id']:null,'ListId':_0x11d2c6['list']?_0x11d2c6[_0x2d74('0x25')]['id']:null};_0x56aea2[_[_0x2d74('0x26')](_0x11d2c6[_0x2d74('0x27')])+_0x2d74('0x28')]=_0x4621ac['id']||null;_0x56aea2[_[_0x2d74('0x26')](_0x11d2c6[_0x2d74('0x27')])+_0x2d74('0x29')]=_0x11d2c6[_0x2d74('0x2a')]?_0x11d2c6['interaction']['id']:null;_0x56aea2[_[_0x2d74('0x26')](_0x11d2c6[_0x2d74('0x27')])+_0x2d74('0x2b')]=_0x11d2c6[_0x2d74('0x2c')]?_0x11d2c6[_0x2d74('0x2c')]['id']:null;_0x56aea2[_[_0x2d74('0x26')](_0x11d2c6['channel'])+(_0x11d2c6['channel']!==_0x2d74('0x2d')?'AccountId':_0x2d74('0x2e'))]=_0x11d2c6[_0x2d74('0xd')]?_0x11d2c6[_0x2d74('0xd')]['id']:null;logger[_0x2d74('0x2f')](util['format'](_0x2d74('0x30'),_0x16cb28,_0x4621ac[_0x2d74('0x31')]));emitChannelQueueInteraction(_0x11d2c6['channel'],_0x4621ac[_0x2d74('0x31')],_0x56aea2,_0x11d2c6[_0x2d74('0xd')]['name'],_0x11d2c6[_0x2d74('0x2c')]['id'],!![],_0x202c10,_0x4621ac['id']);if(rpc[_0x11d2c6[_0x2d74('0x27')]+_0x2d74('0x32')]){return rpc[_0x11d2c6[_0x2d74('0x27')]+_0x2d74('0x32')][_0x2d74('0x33')](_0x56aea2)[_0x2d74('0x34')](function(_0x2f7a7e){logger['error']('create\x20queue\x20report');});}}}function stopRouting(_0x46abeb,_0x49652a,_0x353b4b,_0x5e1485){if(_0x46abeb&&_0x49652a){_0x49652a[_0x2d74('0x21')]-=0x1;var _0x278676={'leaveAt':moment()[_0x2d74('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0x2d74('0x12')](_0x2d74('0x23')),'reason':_0x2d74('0x35')};logger[_0x2d74('0x2f')](util['format'](_0x2d74('0x36'),_0x46abeb,_0x49652a[_0x2d74('0x31')]));emitChannelQueueInteraction(_0x353b4b['channel'],_0x49652a[_0x2d74('0x31')],_0x353b4b['body'],_0x353b4b['account'][_0x2d74('0x31')],_0x353b4b['message']['id'],![],_0x5e1485,_0x49652a['id']);if(rpc[_0x353b4b[_0x2d74('0x27')]+_0x2d74('0x32')]){return rpc[_0x353b4b[_0x2d74('0x27')]+_0x2d74('0x32')]['update'](_0x46abeb,_0x278676)[_0x2d74('0x34')](function(_0x873572){logger['error'](_0x2d74('0x37'));});}}}function endRouting(_0x483c00,_0x26e712,_0x3a6a0d,_0x359cb0){if(_0x483c00&&_0x26e712){_0x26e712[_0x2d74('0x21')]-=0x1;var _0x43f36d={'leaveAt':moment()[_0x2d74('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()['format'](_0x2d74('0x23')),'reason':'timeout'};logger[_0x2d74('0x2f')](util[_0x2d74('0x12')](_0x2d74('0x38'),_0x483c00,_0x26e712[_0x2d74('0x31')]));emitChannelQueueInteraction(_0x3a6a0d[_0x2d74('0x27')],_0x26e712[_0x2d74('0x31')],_0x3a6a0d[_0x2d74('0x22')],_0x3a6a0d[_0x2d74('0xd')]['name'],_0x3a6a0d[_0x2d74('0x2c')]['id'],![],_0x359cb0);if(rpc[_0x3a6a0d[_0x2d74('0x27')]+_0x2d74('0x32')]){return rpc[_0x3a6a0d[_0x2d74('0x27')]+_0x2d74('0x32')][_0x2d74('0x39')](_0x483c00,_0x43f36d)[_0x2d74('0x34')](function(_0x571574){logger[_0x2d74('0x3a')](_0x2d74('0x37'));});}}}function handleFindQueue(_0x2c4a8c){return function(_0x1608f6){return _0x1608f6[_0x2d74('0x31')]['toLowerCase']()===_0x2c4a8c[_0x2d74('0x3b')]();};}exports[_0x2d74('0x3c')]=function(_0x4a3cc4,_0x105ac8,_0x355f66,_0x5a2989){return function(_0x1652a8){try{var _0x2b2eb2={'name':_0x105ac8[0x0],'timeout':_0x105ac8[0x1]};var _0x1b038e=queue['validate'](_0x2b2eb2,{'typecast':!![]});if(_0x1b038e[_0x2d74('0x3d')]){logger['error'](_0x2d74('0x3e'),_0x4a3cc4,_[_0x2d74('0x3f')](_0x1b038e,_0x2d74('0x2c'))['join'](',\x20'));_0x1652a8[_0x2d74('0x40')]();}else{var _0x58b0e2=_[_0x2d74('0x41')](_0x355f66[_0x5a2989['channel']+'Queues'],handleFindQueue(_0x2b2eb2[_0x2d74('0x31')]));if(_0x58b0e2){startRouting(_0x4a3cc4,_0x58b0e2,_0x5a2989,_0x355f66);var _0xb866eb=(_0x58b0e2['timeout']||0xa)*0x3e8;var _0x2e290b=(_0x2b2eb2[_0x2d74('0x42')]||0x14)*0x3e8;var _0xa9c1c6,_0x196e7a;if(_0xb866eb>_0x2e290b){_0x2e290b=_0xb866eb;}var _0x2741fa=seqqueue[_0x2d74('0x43')](_0xb866eb);_0x2741fa['id']=_0x4a3cc4;_0x2741fa[_0x2d74('0x44')]=_0xb866eb;_0x2741fa[_0x2d74('0x45')]=_0x2e290b;_0x2741fa[_0x2d74('0x27')]=_0x5a2989[_0x2d74('0x27')];_0x355f66['rules'][_0x4a3cc4]['on'](_0x2d74('0x46'),function(){logger[_0x2d74('0x2f')](_0x2d74('0x47'),_0x4a3cc4);stopRouting(_0x4a3cc4,_0x58b0e2,_0x5a2989,_0x355f66);clearTimeout(_0xa9c1c6);_0xa9c1c6=undefined;_0x2741fa['close'](!![]);if(_0x355f66[_0x2d74('0x48')][_0x4a3cc4]){delete _0x355f66[_0x2d74('0x48')][_0x4a3cc4];}_0x1652a8[_0x2d74('0x40')]();});_0x355f66[_0x2d74('0x48')][_0x4a3cc4]['on']('complete',function(){if(_0x355f66['rules'][_0x4a3cc4]){delete _0x355f66[_0x2d74('0x48')][_0x4a3cc4];}});_0xa9c1c6=setTimeout(function(){logger['info'](_0x2d74('0x49'),_0x4a3cc4);endRouting(_0x4a3cc4,_0x58b0e2,_0x5a2989,_0x355f66);clearTimeout(_0xa9c1c6);_0x2741fa[_0x2d74('0x4a')](!![]);_0x1652a8['next']();},_0x2e290b);switch(_0x58b0e2['strategy']){case _0x2d74('0x4b'):strategy[_0x2d74('0x4b')](_0x2741fa,_0x58b0e2,_0x355f66,_0x5a2989);break;default:strategy[_0x2d74('0x4c')](_0x2741fa,_0x58b0e2,_0x355f66,_0x5a2989);}}else{logger[_0x2d74('0x3a')](_0x2d74('0x4d'),_0x4a3cc4,_0x2b2eb2[_0x2d74('0x31')]);_0x1652a8['stop']();}}}catch(_0x47fd5f){console[_0x2d74('0x4e')](_0x47fd5f);logger[_0x2d74('0x3a')](_0x2d74('0x3e'),_0x4a3cc4,_0x47fd5f['stack']);_0x1652a8[_0x2d74('0x40')]();}};};
\ No newline at end of file
index 3f73ce2..e3800ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b2e=['forcedOwnership','isAgentAvailable','channel','busy','notificationId','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','busyQueue','STOP','TIMEOUT','exports','lodash','uuid','./util','routing','squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s'];(function(_0x42dfe5,_0x2e16cf){var _0x3bed33=function(_0x5be6e2){while(--_0x5be6e2){_0x42dfe5['push'](_0x42dfe5['shift']());}};_0x3bed33(++_0x2e16cf);}(_0x3b2e,0x19a));var _0xe3b2=function(_0xfecbad,_0x5915f8){_0xfecbad=_0xfecbad-0x0;var _0x5e1806=_0x3b2e[_0xfecbad];return _0x5e1806;};'use strict';var _=require(_0xe3b2('0x0'));var uuid=require(_0xe3b2('0x1'));var util=require(_0xe3b2('0x2'));var logger=require('../../../../../config/logger')(_0xe3b2('0x3'));var Agent=function(_0x11fab4,_0x425867,_0x3e7d9c,_0x25cc68){this['notificationId']=uuid['v4']();this[_0xe3b2('0x4')]=_0x11fab4;this[_0xe3b2('0x5')]=_0x425867;this[_0xe3b2('0x6')]=_0x3e7d9c;this[_0xe3b2('0x3')]=_0x25cc68;this[_0xe3b2('0x4')][_0xe3b2('0x7')](this[_0xe3b2('0x8')][_0xe3b2('0x9')](this),this[_0xe3b2('0xa')]['bind'](this));this[_0xe3b2('0x4')]['on'](_0xe3b2('0xb'),this['handleTimeout'][_0xe3b2('0x9')](this));this[_0xe3b2('0x4')]['on'](_0xe3b2('0xc'),this[_0xe3b2('0xd')][_0xe3b2('0x9')](this));};Agent[_0xe3b2('0xe')]['push']=function(){this[_0xe3b2('0x4')]['push'](this[_0xe3b2('0x8')][_0xe3b2('0x9')](this),this[_0xe3b2('0xa')][_0xe3b2('0x9')](this));};Agent[_0xe3b2('0xe')]['handleDrained']=function(){this['handleTimeout'](!![]);};Agent[_0xe3b2('0xe')]['handleRun']=function(_0x536b15){logger[_0xe3b2('0xf')](_0xe3b2('0x10'),this['squeue']['id'],this[_0xe3b2('0x5')]['id']);if(_['isNil'](this['realtime'][_0xe3b2('0x11')][this[_0xe3b2('0x5')]['id']])){logger[_0xe3b2('0xf')](_0xe3b2('0x12'),this['squeue']['id'],this['agent']['id']);setTimeout(this[_0xe3b2('0x7')][_0xe3b2('0x9')](this),0x3e8);}else{if(this[_0xe3b2('0x3')][_0xe3b2('0x13')]||util[_0xe3b2('0x14')](this[_0xe3b2('0x4')]['id'],this[_0xe3b2('0x6')][_0xe3b2('0x11')][this[_0xe3b2('0x5')]['id']],this[_0xe3b2('0x4')][_0xe3b2('0x15')],![])){this[_0xe3b2('0x6')][_0xe3b2('0x11')][this[_0xe3b2('0x5')]['id']][_0xe3b2('0x16')]=!![];this[_0xe3b2('0x6')][_0xe3b2('0x11')][this[_0xe3b2('0x5')]['id']]['busyQueue']=undefined;util['showNotification'](this[_0xe3b2('0x17')],this[_0xe3b2('0x4')]['id'],this['realtime'][_0xe3b2('0x11')][this[_0xe3b2('0x5')]['id']],null,this[_0xe3b2('0x3')]);util[_0xe3b2('0x18')](this[_0xe3b2('0x4')]['id'],this[_0xe3b2('0x6')][_0xe3b2('0x11')][this[_0xe3b2('0x5')]['id']],_0xe3b2('0x19')+(this[_0xe3b2('0x3')][_0xe3b2('0x13')]?_0xe3b2('0x1a'):''));}else{logger[_0xe3b2('0xf')](_0xe3b2('0x1b'),this[_0xe3b2('0x4')]['id'],this[_0xe3b2('0x5')]['id']);setTimeout(this[_0xe3b2('0x7')][_0xe3b2('0x9')](this),0x3e8);}}};Agent['prototype']['handleTimeout']=function(_0x4558bc){if(_['isNil'](this[_0xe3b2('0x6')][_0xe3b2('0x11')][this['agent']['id']])){return logger[_0xe3b2('0xf')](_0xe3b2('0x12'),this[_0xe3b2('0x4')]['id'],this['agent']['id']);}else{logger[_0xe3b2('0xf')](_0xe3b2('0x1c'),this[_0xe3b2('0x4')]['id'],this['agent']['id']);util['hideNotification'](this[_0xe3b2('0x17')],this['squeue']['id'],this[_0xe3b2('0x6')]['agents'][this[_0xe3b2('0x5')]['id']],null,this[_0xe3b2('0x3')]);this[_0xe3b2('0x6')][_0xe3b2('0x11')][this[_0xe3b2('0x5')]['id']]['busy']=![];this[_0xe3b2('0x6')]['agents'][this[_0xe3b2('0x5')]['id']][_0xe3b2('0x1d')]=undefined;util[_0xe3b2('0x18')](this['squeue']['id'],this['realtime']['agents'][this['agent']['id']],_0x4558bc?_0xe3b2('0x1e'):_0xe3b2('0x1f'));}if(!_0x4558bc){setTimeout(this[_0xe3b2('0x7')][_0xe3b2('0x9')](this),0x3e8);}};function agent(_0x2aa2b8,_0x423947,_0x354ddd,_0x5d2aef){return new Agent(_0x2aa2b8,_0x423947,_0x354ddd,_0x5d2aef);}module[_0xe3b2('0x20')]=agent;
\ No newline at end of file
+var _0xceb3=['bind','handleTimeout','timeout','handleDrained','prototype','push','info','[%s][AGENT]\x20try\x20with\x20%s','agent','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busy','busyQueue','writeLog','RINGING','forcedOwnership','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','exports','uuid','./util','routing','notificationId','squeue','realtime','handleRun'];(function(_0x63ce24,_0x44eb11){var _0x35f6f1=function(_0x13c8a0){while(--_0x13c8a0){_0x63ce24['push'](_0x63ce24['shift']());}};_0x35f6f1(++_0x44eb11);}(_0xceb3,0x139));var _0x3ceb=function(_0x55fa03,_0xcb96c2){_0x55fa03=_0x55fa03-0x0;var _0x2cd7cd=_0xceb3[_0x55fa03];return _0x2cd7cd;};'use strict';var _=require('lodash');var uuid=require(_0x3ceb('0x0'));var util=require(_0x3ceb('0x1'));var logger=require('../../../../../config/logger')(_0x3ceb('0x2'));var Agent=function(_0xac21b2,_0x534000,_0x4f8542,_0x524994){this[_0x3ceb('0x3')]=uuid['v4']();this[_0x3ceb('0x4')]=_0xac21b2;this['agent']=_0x534000;this[_0x3ceb('0x5')]=_0x4f8542;this[_0x3ceb('0x2')]=_0x524994;this[_0x3ceb('0x4')]['push'](this[_0x3ceb('0x6')][_0x3ceb('0x7')](this),this[_0x3ceb('0x8')]['bind'](this));this['squeue']['on'](_0x3ceb('0x9'),this[_0x3ceb('0x8')]['bind'](this));this[_0x3ceb('0x4')]['on']('drained',this[_0x3ceb('0xa')][_0x3ceb('0x7')](this));};Agent[_0x3ceb('0xb')][_0x3ceb('0xc')]=function(){this['squeue'][_0x3ceb('0xc')](this[_0x3ceb('0x6')][_0x3ceb('0x7')](this),this['handleTimeout'][_0x3ceb('0x7')](this));};Agent[_0x3ceb('0xb')][_0x3ceb('0xa')]=function(){this[_0x3ceb('0x8')](!![]);};Agent[_0x3ceb('0xb')][_0x3ceb('0x6')]=function(_0x1ac69d){logger[_0x3ceb('0xd')](_0x3ceb('0xe'),this[_0x3ceb('0x4')]['id'],this[_0x3ceb('0xf')]['id']);if(_[_0x3ceb('0x10')](this[_0x3ceb('0x5')][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']])){logger[_0x3ceb('0xd')](_0x3ceb('0x12'),this[_0x3ceb('0x4')]['id'],this[_0x3ceb('0xf')]['id']);setTimeout(this[_0x3ceb('0xc')]['bind'](this),0x3e8);}else{if(this['routing']['forcedOwnership']||util[_0x3ceb('0x13')](this['squeue']['id'],this[_0x3ceb('0x5')][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']],this['squeue'][_0x3ceb('0x14')],![])){this[_0x3ceb('0x5')][_0x3ceb('0x11')][this['agent']['id']][_0x3ceb('0x15')]=!![];this[_0x3ceb('0x5')][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']][_0x3ceb('0x16')]=undefined;util['showNotification'](this[_0x3ceb('0x3')],this[_0x3ceb('0x4')]['id'],this['realtime'][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']],null,this[_0x3ceb('0x2')]);util[_0x3ceb('0x17')](this[_0x3ceb('0x4')]['id'],this[_0x3ceb('0x5')][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']],_0x3ceb('0x18')+(this[_0x3ceb('0x2')][_0x3ceb('0x19')]?':FORCED':''));}else{logger['info'](_0x3ceb('0x1a'),this['squeue']['id'],this[_0x3ceb('0xf')]['id']);setTimeout(this[_0x3ceb('0xc')][_0x3ceb('0x7')](this),0x3e8);}}};Agent[_0x3ceb('0xb')][_0x3ceb('0x8')]=function(_0x544c33){if(_['isNil'](this[_0x3ceb('0x5')]['agents'][this['agent']['id']])){return logger[_0x3ceb('0xd')](_0x3ceb('0x12'),this[_0x3ceb('0x4')]['id'],this[_0x3ceb('0xf')]['id']);}else{logger[_0x3ceb('0xd')](_0x3ceb('0x1b'),this[_0x3ceb('0x4')]['id'],this[_0x3ceb('0xf')]['id']);util[_0x3ceb('0x1c')](this[_0x3ceb('0x3')],this['squeue']['id'],this['realtime'][_0x3ceb('0x11')][this['agent']['id']],null,this[_0x3ceb('0x2')]);this['realtime'][_0x3ceb('0x11')][this['agent']['id']][_0x3ceb('0x15')]=![];this[_0x3ceb('0x5')][_0x3ceb('0x11')][this[_0x3ceb('0xf')]['id']][_0x3ceb('0x16')]=undefined;util[_0x3ceb('0x17')](this[_0x3ceb('0x4')]['id'],this['realtime']['agents'][this[_0x3ceb('0xf')]['id']],_0x544c33?_0x3ceb('0x1d'):_0x3ceb('0x1e'));}if(!_0x544c33){setTimeout(this[_0x3ceb('0xc')][_0x3ceb('0x7')](this),0x3e8);}};function agent(_0x361654,_0xdc93d5,_0x194fe0,_0x9d154d){return new Agent(_0x361654,_0xdc93d5,_0x194fe0,_0x9d154d);}module[_0x3ceb('0x1f')]=agent;
\ No newline at end of file
index 64d5927..73e9199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfe7=['busyQueue','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','STOP','TIMEOUT','exports','uuid','./util','routing','notificationId','squeue','realtime','push','bind','handleTimeout','drained','handleDrained','prototype','handleRun','isNil','queue','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','writeLog','RINGING','busy'];(function(_0x2675da,_0x5a250e){var _0x5e6153=function(_0xf93114){while(--_0xf93114){_0x2675da['push'](_0x2675da['shift']());}};_0x5e6153(++_0x5a250e);}(_0xdfe7,0xc8));var _0x7dfe=function(_0x313f04,_0x345aa3){_0x313f04=_0x313f04-0x0;var _0x2c8b23=_0xdfe7[_0x313f04];return _0x2c8b23;};'use strict';var _=require('lodash');var uuid=require(_0x7dfe('0x0'));var util=require(_0x7dfe('0x1'));var logger=require('../../../../../config/logger')(_0x7dfe('0x2'));var Beepall=function(_0x36c721,_0x388848,_0xb0b7fb,_0x527490){this[_0x7dfe('0x3')]=uuid['v4']();this[_0x7dfe('0x4')]=_0x36c721;this['queue']=_0x388848;this[_0x7dfe('0x5')]=_0xb0b7fb;this[_0x7dfe('0x2')]=_0x527490;this[_0x7dfe('0x4')][_0x7dfe('0x6')](this['handleRun'][_0x7dfe('0x7')](this),this[_0x7dfe('0x8')][_0x7dfe('0x7')](this));this[_0x7dfe('0x4')]['on']('timeout',this[_0x7dfe('0x8')][_0x7dfe('0x7')](this));this[_0x7dfe('0x4')]['on'](_0x7dfe('0x9'),this[_0x7dfe('0xa')]['bind'](this));};Beepall[_0x7dfe('0xb')][_0x7dfe('0x6')]=function(){this[_0x7dfe('0x4')][_0x7dfe('0x6')](this['handleRun']['bind'](this),this[_0x7dfe('0x8')]['bind'](this));};Beepall['prototype'][_0x7dfe('0xa')]=function(_0x496597){this[_0x7dfe('0x8')](!![]);};Beepall[_0x7dfe('0xb')][_0x7dfe('0xc')]=function(_0x57819f){var _0x359748=!![];if(!_[_0x7dfe('0xd')](this[_0x7dfe('0xe')])&&!_[_0x7dfe('0xd')](this[_0x7dfe('0xe')][_0x7dfe('0xf')])&&this[_0x7dfe('0xe')][_0x7dfe('0xf')][_0x7dfe('0x10')]>0x0){for(var _0x11e178=0x0,_0x1d807b;_0x11e178<this[_0x7dfe('0xe')][_0x7dfe('0xf')]['length'];_0x11e178+=0x1){_0x1d807b=this['queue'][_0x7dfe('0xf')][_0x11e178]['id'];if(_[_0x7dfe('0xd')](this[_0x7dfe('0x5')][_0x7dfe('0x11')][_0x1d807b])){logger[_0x7dfe('0x12')](_0x7dfe('0x13'),this[_0x7dfe('0x4')]['id'],_0x1d807b);}else{if(util[_0x7dfe('0x14')](this['squeue']['id'],this[_0x7dfe('0x5')][_0x7dfe('0x11')][_0x1d807b],this[_0x7dfe('0x4')]['channel'],!![])){_0x359748=![];util[_0x7dfe('0x15')](this[_0x7dfe('0x4')]['id'],this['realtime'][_0x7dfe('0x11')][_0x1d807b],_0x7dfe('0x16'));this[_0x7dfe('0x5')]['agents'][_0x1d807b][_0x7dfe('0x17')]=!![];this['realtime'][_0x7dfe('0x11')][_0x1d807b][_0x7dfe('0x18')]=this[_0x7dfe('0xe')][_0x7dfe('0x19')];util[_0x7dfe('0x1a')](this[_0x7dfe('0x3')],this[_0x7dfe('0x4')]['id'],this[_0x7dfe('0x5')][_0x7dfe('0x11')][_0x1d807b],this[_0x7dfe('0xe')],this[_0x7dfe('0x2')]);}}}if(_0x359748){logger['info'](_0x7dfe('0x1b'),this[_0x7dfe('0x4')]['id']);setTimeout(this[_0x7dfe('0x6')][_0x7dfe('0x7')](this),0x3e8);}}else{logger[_0x7dfe('0x12')]('[%s][QUEUE]\x20EMPTY',this[_0x7dfe('0x4')]['id']);setTimeout(this[_0x7dfe('0x6')]['bind'](this),0x3e8);}};Beepall[_0x7dfe('0xb')][_0x7dfe('0x8')]=function(_0x468456){if(!_[_0x7dfe('0xd')](this[_0x7dfe('0xe')])&&!_[_0x7dfe('0xd')](this[_0x7dfe('0xe')][_0x7dfe('0xf')])){for(var _0x37bb83=0x0,_0x201543;_0x37bb83<this['queue']['Agents']['length'];_0x37bb83+=0x1){_0x201543=this[_0x7dfe('0xe')]['Agents'][_0x37bb83]['id'];if(_[_0x7dfe('0xd')](this[_0x7dfe('0x5')][_0x7dfe('0x11')][_0x201543])){logger['info'](_0x7dfe('0x13'),this[_0x7dfe('0x4')]['id'],_0x201543);}else{util[_0x7dfe('0x1c')](this[_0x7dfe('0x3')],this[_0x7dfe('0x4')]['id'],this[_0x7dfe('0x5')]['agents'][_0x201543],this[_0x7dfe('0xe')],this[_0x7dfe('0x2')]);util[_0x7dfe('0x15')](this['squeue']['id'],this['realtime'][_0x7dfe('0x11')][_0x201543],_0x468456?_0x7dfe('0x1d'):_0x7dfe('0x1e'));this[_0x7dfe('0x5')][_0x7dfe('0x11')][_0x201543][_0x7dfe('0x17')]=![];this[_0x7dfe('0x5')]['agents'][_0x201543][_0x7dfe('0x18')]=undefined;}}}if(!_0x468456){setTimeout(this[_0x7dfe('0x6')][_0x7dfe('0x7')](this),0x3e8);}};function beepall(_0x3eb96a,_0x7ff7a,_0x38b326,_0x2cda39){return new Beepall(_0x3eb96a,_0x7ff7a,_0x38b326,_0x2cda39);}module[_0x7dfe('0x1f')]=beepall;
\ No newline at end of file
+var _0x8bc3=['info','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','STOP','TIMEOUT','exports','lodash','./util','routing','notificationId','squeue','realtime','push','handleRun','bind','timeout','handleTimeout','drained','handleDrained','prototype','isNil','queue','Agents','length','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','RINGING','busy','busyQueue','name'];(function(_0x27376b,_0x4edf6a){var _0x19aeaa=function(_0x567054){while(--_0x567054){_0x27376b['push'](_0x27376b['shift']());}};_0x19aeaa(++_0x4edf6a);}(_0x8bc3,0x82));var _0x38bc=function(_0xcd0e3c,_0x50ac64){_0xcd0e3c=_0xcd0e3c-0x0;var _0x333329=_0x8bc3[_0xcd0e3c];return _0x333329;};'use strict';var _=require(_0x38bc('0x0'));var uuid=require('uuid');var util=require(_0x38bc('0x1'));var logger=require('../../../../../config/logger')(_0x38bc('0x2'));var Beepall=function(_0x182052,_0x5b5f67,_0x38862e,_0x24ad99){this[_0x38bc('0x3')]=uuid['v4']();this[_0x38bc('0x4')]=_0x182052;this['queue']=_0x5b5f67;this[_0x38bc('0x5')]=_0x38862e;this[_0x38bc('0x2')]=_0x24ad99;this[_0x38bc('0x4')][_0x38bc('0x6')](this[_0x38bc('0x7')]['bind'](this),this['handleTimeout'][_0x38bc('0x8')](this));this[_0x38bc('0x4')]['on'](_0x38bc('0x9'),this[_0x38bc('0xa')][_0x38bc('0x8')](this));this[_0x38bc('0x4')]['on'](_0x38bc('0xb'),this[_0x38bc('0xc')][_0x38bc('0x8')](this));};Beepall[_0x38bc('0xd')]['push']=function(){this['squeue']['push'](this['handleRun'][_0x38bc('0x8')](this),this['handleTimeout']['bind'](this));};Beepall['prototype']['handleDrained']=function(_0x437e10){this[_0x38bc('0xa')](!![]);};Beepall[_0x38bc('0xd')]['handleRun']=function(_0x22f87b){var _0x5115d9=!![];if(!_[_0x38bc('0xe')](this[_0x38bc('0xf')])&&!_[_0x38bc('0xe')](this[_0x38bc('0xf')][_0x38bc('0x10')])&&this[_0x38bc('0xf')]['Agents'][_0x38bc('0x11')]>0x0){for(var _0x55940b=0x0,_0x1d75d1;_0x55940b<this[_0x38bc('0xf')][_0x38bc('0x10')][_0x38bc('0x11')];_0x55940b+=0x1){_0x1d75d1=this[_0x38bc('0xf')][_0x38bc('0x10')][_0x55940b]['id'];if(_['isNil'](this[_0x38bc('0x5')]['agents'][_0x1d75d1])){logger['info'](_0x38bc('0x12'),this[_0x38bc('0x4')]['id'],_0x1d75d1);}else{if(util[_0x38bc('0x13')](this[_0x38bc('0x4')]['id'],this[_0x38bc('0x5')][_0x38bc('0x14')][_0x1d75d1],this[_0x38bc('0x4')]['channel'],!![])){_0x5115d9=![];util['writeLog'](this[_0x38bc('0x4')]['id'],this[_0x38bc('0x5')]['agents'][_0x1d75d1],_0x38bc('0x15'));this['realtime'][_0x38bc('0x14')][_0x1d75d1][_0x38bc('0x16')]=!![];this[_0x38bc('0x5')]['agents'][_0x1d75d1][_0x38bc('0x17')]=this[_0x38bc('0xf')][_0x38bc('0x18')];util['showNotification'](this[_0x38bc('0x3')],this[_0x38bc('0x4')]['id'],this[_0x38bc('0x5')][_0x38bc('0x14')][_0x1d75d1],this['queue'],this['routing']);}}}if(_0x5115d9){logger[_0x38bc('0x19')](_0x38bc('0x1a'),this[_0x38bc('0x4')]['id']);setTimeout(this[_0x38bc('0x6')]['bind'](this),0x3e8);}}else{logger['info']('[%s][QUEUE]\x20EMPTY',this[_0x38bc('0x4')]['id']);setTimeout(this[_0x38bc('0x6')][_0x38bc('0x8')](this),0x3e8);}};Beepall['prototype'][_0x38bc('0xa')]=function(_0x3b722c){if(!_['isNil'](this['queue'])&&!_[_0x38bc('0xe')](this['queue']['Agents'])){for(var _0x3d224c=0x0,_0x3f7dc0;_0x3d224c<this[_0x38bc('0xf')][_0x38bc('0x10')][_0x38bc('0x11')];_0x3d224c+=0x1){_0x3f7dc0=this['queue'][_0x38bc('0x10')][_0x3d224c]['id'];if(_[_0x38bc('0xe')](this[_0x38bc('0x5')][_0x38bc('0x14')][_0x3f7dc0])){logger[_0x38bc('0x19')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x3f7dc0);}else{util[_0x38bc('0x1b')](this[_0x38bc('0x3')],this[_0x38bc('0x4')]['id'],this[_0x38bc('0x5')][_0x38bc('0x14')][_0x3f7dc0],this[_0x38bc('0xf')],this[_0x38bc('0x2')]);util['writeLog'](this[_0x38bc('0x4')]['id'],this[_0x38bc('0x5')]['agents'][_0x3f7dc0],_0x3b722c?_0x38bc('0x1c'):_0x38bc('0x1d'));this[_0x38bc('0x5')][_0x38bc('0x14')][_0x3f7dc0][_0x38bc('0x16')]=![];this['realtime'][_0x38bc('0x14')][_0x3f7dc0]['busyQueue']=undefined;}}}if(!_0x3b722c){setTimeout(this[_0x38bc('0x6')][_0x38bc('0x8')](this),0x3e8);}};function beepall(_0x2f64a1,_0x14d8cf,_0x109af1,_0x159253){return new Beepall(_0x2f64a1,_0x14d8cf,_0x109af1,_0x159253);}module[_0x38bc('0x1e')]=beepall;
\ No newline at end of file
index 1e8a51f..0783575 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b91=['./beepall','./agent','./rrmemory'];(function(_0x286304,_0x990ca4){var _0x218439=function(_0x49a393){while(--_0x49a393){_0x286304['push'](_0x286304['shift']());}};_0x218439(++_0x990ca4);}(_0x5b91,0x149));var _0x15b9=function(_0x231e16,_0x67347b){_0x231e16=_0x231e16-0x0;var _0x570a7c=_0x5b91[_0x231e16];return _0x570a7c;};'use strict';module['exports']={'rrmemory':require(_0x15b9('0x0')),'beepall':require(_0x15b9('0x1')),'agent':require(_0x15b9('0x2'))};
\ No newline at end of file
+var _0xbfe0=['./rrmemory','exports'];(function(_0x7747d8,_0x3c893a){var _0x269426=function(_0xf2a6d6){while(--_0xf2a6d6){_0x7747d8['push'](_0x7747d8['shift']());}};_0x269426(++_0x3c893a);}(_0xbfe0,0x193));var _0x0bfe=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xbfe0[_0x38a7ac];return _0x53061a;};'use strict';module[_0x0bfe('0x0')]={'rrmemory':require(_0x0bfe('0x1')),'beepall':require('./beepall'),'agent':require('./agent')};
\ No newline at end of file
index 271a3eb..0af1748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfacb=['hideNotification','TIMEOUT','busyQueue','exports','uuid','./util','../../../../../config/logger','routing','squeue','push','handleRun','handleTimeout','bind','timeout','handleDrained','prototype','handleCheckReject','isAgentAvailable','realtime','agents','agentId','info','[%s][QUEUE]\x20available\x20again\x20%s','intervals','done','queue','mapAgentsId','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','busy','name','showNotification','notificationId','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','isNil'];(function(_0x4d6d5a,_0x349500){var _0x566d30=function(_0x12e21c){while(--_0x12e21c){_0x4d6d5a['push'](_0x4d6d5a['shift']());}};_0x566d30(++_0x349500);}(_0xfacb,0x16c));var _0xbfac=function(_0xc614f4,_0x148058){_0xc614f4=_0xc614f4-0x0;var _0x358f08=_0xfacb[_0xc614f4];return _0x358f08;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0xbfac('0x0'));var util=require(_0xbfac('0x1'));var logger=require(_0xbfac('0x2'))(_0xbfac('0x3'));var RRMemory=function(_0x306355,_0x4ffa5c,_0x335d76,_0x1fa884){this['notificationId']=uuid['v4']();this[_0xbfac('0x4')]=_0x306355;this['queue']=_0x4ffa5c;this['realtime']=_0x335d76;this[_0xbfac('0x3')]=_0x1fa884;this['intervals']={};this[_0xbfac('0x4')][_0xbfac('0x5')](this[_0xbfac('0x6')]['bind'](this),this[_0xbfac('0x7')][_0xbfac('0x8')](this),this['module']);this[_0xbfac('0x4')]['on'](_0xbfac('0x9'),this[_0xbfac('0x7')][_0xbfac('0x8')](this));this['squeue']['on']('drained',this[_0xbfac('0xa')][_0xbfac('0x8')](this));};RRMemory[_0xbfac('0xb')][_0xbfac('0x5')]=function(){this[_0xbfac('0x4')][_0xbfac('0x5')](this[_0xbfac('0x6')][_0xbfac('0x8')](this),this[_0xbfac('0x7')][_0xbfac('0x8')](this));};RRMemory[_0xbfac('0xb')][_0xbfac('0xa')]=function(_0x14da31){this[_0xbfac('0x7')](!![]);};RRMemory['prototype'][_0xbfac('0xc')]=function(_0x31b6cf){if(util[_0xbfac('0xd')](this['squeue']['id'],this[_0xbfac('0xe')][_0xbfac('0xf')][this[_0xbfac('0x10')]],this['squeue']['channel'],!![])){logger[_0xbfac('0x11')](_0xbfac('0x12'),this[_0xbfac('0x4')]['id'],this[_0xbfac('0x10')]);clearInterval(this[_0xbfac('0x13')][this[_0xbfac('0x10')]]);_0x31b6cf[_0xbfac('0x14')]();setTimeout(this['push']['bind'](this),0x3e8);}};RRMemory['prototype'][_0xbfac('0x6')]=function(_0x453011){this[_0xbfac('0x10')]=rr(this[_0xbfac('0x15')][_0xbfac('0x16')]);logger[_0xbfac('0x11')]('[%s][QUEUE]\x20try\x20with\x20%s',this['squeue']['id'],this[_0xbfac('0x10')]);if(_['isNil'](this[_0xbfac('0xe')][_0xbfac('0xf')][this['agentId']])){logger[_0xbfac('0x11')](_0xbfac('0x17'),this['squeue']['id'],this[_0xbfac('0x10')]);_0x453011['done']();setTimeout(this[_0xbfac('0x5')][_0xbfac('0x8')](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0xbfac('0x4')]['id'],this[_0xbfac('0xe')][_0xbfac('0xf')][this[_0xbfac('0x10')]],this[_0xbfac('0x4')][_0xbfac('0x18')],!![])){this['realtime'][_0xbfac('0xf')][this[_0xbfac('0x10')]][_0xbfac('0x19')]=!![];this[_0xbfac('0xe')][_0xbfac('0xf')][this[_0xbfac('0x10')]]['busyQueue']=this[_0xbfac('0x15')][_0xbfac('0x1a')];util[_0xbfac('0x1b')](this[_0xbfac('0x1c')],this[_0xbfac('0x4')]['id'],this[_0xbfac('0xe')][_0xbfac('0xf')][this[_0xbfac('0x10')]],this[_0xbfac('0x15')],this[_0xbfac('0x3')]);util[_0xbfac('0x1d')](this['squeue']['id'],this['realtime'][_0xbfac('0xf')][this[_0xbfac('0x10')]],'RINGING');this['intervals'][this[_0xbfac('0x10')]]=setInterval(this[_0xbfac('0xc')][_0xbfac('0x8')](this,_0x453011),0x3e8);}else{logger[_0xbfac('0x11')](_0xbfac('0x1e'),this['squeue']['id'],this[_0xbfac('0x10')]);_0x453011[_0xbfac('0x14')]();setTimeout(this[_0xbfac('0x5')][_0xbfac('0x8')](this),0x3e8);}}};RRMemory[_0xbfac('0xb')][_0xbfac('0x7')]=function(_0x3670ca){logger[_0xbfac('0x11')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0xbfac('0x4')]['id'],this[_0xbfac('0x10')]);if(_[_0xbfac('0x1f')](this[_0xbfac('0xe')][_0xbfac('0xf')][this[_0xbfac('0x10')]])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xbfac('0x4')]['id'],this[_0xbfac('0x10')]);}else{clearInterval(this['intervals'][this[_0xbfac('0x10')]]);util[_0xbfac('0x20')](this[_0xbfac('0x1c')],this['squeue']['id'],this[_0xbfac('0xe')][_0xbfac('0xf')][this['agentId']],this['queue'],this[_0xbfac('0x3')]);util['writeLog'](this[_0xbfac('0x4')]['id'],this[_0xbfac('0xe')][_0xbfac('0xf')][this[_0xbfac('0x10')]],_0xbfac('0x21'));this[_0xbfac('0xe')]['agents'][this[_0xbfac('0x10')]][_0xbfac('0x19')]=![];this[_0xbfac('0xe')]['agents'][this['agentId']][_0xbfac('0x22')]=undefined;}if(!_0x3670ca){setTimeout(this[_0xbfac('0x5')]['bind'](this),0x3e8);}};function rrmemory(_0x21d8e9,_0x2038f4,_0x513b93,_0x5beb99){return new RRMemory(_0x21d8e9,_0x2038f4,_0x513b93,_0x5beb99);}module[_0xbfac('0x23')]=rrmemory;
\ No newline at end of file
+var _0x1f19=['[%s][QUEUE]\x20try\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','agents','busy','name','showNotification','notificationId','writeLog','RINGING','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','hideNotification','TIMEOUT','lodash','uuid','./util','../../../../../config/logger','queue','realtime','routing','intervals','squeue','handleRun','handleTimeout','bind','module','timeout','drained','handleDrained','prototype','push','handleCheckReject','isAgentAvailable','agentId','channel','info','[%s][QUEUE]\x20available\x20again\x20%s'];(function(_0x415003,_0x215788){var _0x45d2db=function(_0x2c489b){while(--_0x2c489b){_0x415003['push'](_0x415003['shift']());}};_0x45d2db(++_0x215788);}(_0x1f19,0xa1));var _0x91f1=function(_0x3ac874,_0x357d05){_0x3ac874=_0x3ac874-0x0;var _0x5ebac8=_0x1f19[_0x3ac874];return _0x5ebac8;};'use strict';var rr=require('rr');var _=require(_0x91f1('0x0'));var uuid=require(_0x91f1('0x1'));var util=require(_0x91f1('0x2'));var logger=require(_0x91f1('0x3'))('routing');var RRMemory=function(_0x4af6ac,_0x491cb2,_0x484ead,_0xa2aa65){this['notificationId']=uuid['v4']();this['squeue']=_0x4af6ac;this[_0x91f1('0x4')]=_0x491cb2;this[_0x91f1('0x5')]=_0x484ead;this[_0x91f1('0x6')]=_0xa2aa65;this[_0x91f1('0x7')]={};this[_0x91f1('0x8')]['push'](this[_0x91f1('0x9')]['bind'](this),this[_0x91f1('0xa')][_0x91f1('0xb')](this),this[_0x91f1('0xc')]);this['squeue']['on'](_0x91f1('0xd'),this[_0x91f1('0xa')][_0x91f1('0xb')](this));this['squeue']['on'](_0x91f1('0xe'),this[_0x91f1('0xf')][_0x91f1('0xb')](this));};RRMemory[_0x91f1('0x10')][_0x91f1('0x11')]=function(){this[_0x91f1('0x8')][_0x91f1('0x11')](this[_0x91f1('0x9')]['bind'](this),this[_0x91f1('0xa')][_0x91f1('0xb')](this));};RRMemory[_0x91f1('0x10')][_0x91f1('0xf')]=function(_0x247598){this[_0x91f1('0xa')](!![]);};RRMemory[_0x91f1('0x10')][_0x91f1('0x12')]=function(_0x33c03b){if(util[_0x91f1('0x13')](this['squeue']['id'],this[_0x91f1('0x5')]['agents'][this[_0x91f1('0x14')]],this[_0x91f1('0x8')][_0x91f1('0x15')],!![])){logger[_0x91f1('0x16')](_0x91f1('0x17'),this[_0x91f1('0x8')]['id'],this[_0x91f1('0x14')]);clearInterval(this['intervals'][this[_0x91f1('0x14')]]);_0x33c03b['done']();setTimeout(this[_0x91f1('0x11')][_0x91f1('0xb')](this),0x3e8);}};RRMemory['prototype'][_0x91f1('0x9')]=function(_0x4e3c5d){this[_0x91f1('0x14')]=rr(this[_0x91f1('0x4')]['mapAgentsId']);logger[_0x91f1('0x16')](_0x91f1('0x18'),this[_0x91f1('0x8')]['id'],this[_0x91f1('0x14')]);if(_['isNil'](this[_0x91f1('0x5')]['agents'][this[_0x91f1('0x14')]])){logger['info'](_0x91f1('0x19'),this['squeue']['id'],this[_0x91f1('0x14')]);_0x4e3c5d['done']();setTimeout(this[_0x91f1('0x11')][_0x91f1('0xb')](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0x91f1('0x8')]['id'],this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]],this['squeue'][_0x91f1('0x15')],!![])){this['realtime']['agents'][this[_0x91f1('0x14')]][_0x91f1('0x1b')]=!![];this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]]['busyQueue']=this[_0x91f1('0x4')][_0x91f1('0x1c')];util[_0x91f1('0x1d')](this[_0x91f1('0x1e')],this['squeue']['id'],this[_0x91f1('0x5')][_0x91f1('0x1a')][this['agentId']],this[_0x91f1('0x4')],this[_0x91f1('0x6')]);util[_0x91f1('0x1f')](this[_0x91f1('0x8')]['id'],this[_0x91f1('0x5')]['agents'][this[_0x91f1('0x14')]],_0x91f1('0x20'));this[_0x91f1('0x7')][this[_0x91f1('0x14')]]=setInterval(this['handleCheckReject'][_0x91f1('0xb')](this,_0x4e3c5d),0x3e8);}else{logger[_0x91f1('0x16')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x91f1('0x8')]['id'],this[_0x91f1('0x14')]);_0x4e3c5d['done']();setTimeout(this[_0x91f1('0x11')]['bind'](this),0x3e8);}}};RRMemory[_0x91f1('0x10')][_0x91f1('0xa')]=function(_0x36b8ac){logger['info'](_0x91f1('0x21'),this[_0x91f1('0x8')]['id'],this['agentId']);if(_[_0x91f1('0x22')](this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]])){logger['info'](_0x91f1('0x19'),this[_0x91f1('0x8')]['id'],this['agentId']);}else{clearInterval(this[_0x91f1('0x7')][this[_0x91f1('0x14')]]);util[_0x91f1('0x23')](this[_0x91f1('0x1e')],this[_0x91f1('0x8')]['id'],this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]],this[_0x91f1('0x4')],this['routing']);util[_0x91f1('0x1f')](this[_0x91f1('0x8')]['id'],this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]],_0x91f1('0x24'));this['realtime'][_0x91f1('0x1a')][this[_0x91f1('0x14')]][_0x91f1('0x1b')]=![];this[_0x91f1('0x5')][_0x91f1('0x1a')][this[_0x91f1('0x14')]]['busyQueue']=undefined;}if(!_0x36b8ac){setTimeout(this['push'][_0x91f1('0xb')](this),0x3e8);}};function rrmemory(_0x9ba442,_0xec42a6,_0x3dd87f,_0x3ad111){return new RRMemory(_0x9ba442,_0xec42a6,_0x3dd87f,_0x3ad111);}module['exports']=rrmemory;
\ No newline at end of file
index 1191f10..c76e87c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef17=['emit','format','user:%s','name','\x20interaction','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','error','save','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','Pause','Capacity','hasOwnProperty','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','socket.io-emitter'];(function(_0x41a96e,_0x1815cf){var _0x4ded71=function(_0x16551e){while(--_0x16551e){_0x41a96e['push'](_0x41a96e['shift']());}};_0x4ded71(++_0x1815cf);}(_0xef17,0x136));var _0x7ef1=function(_0x486ee6,_0x3578a8){_0x486ee6=_0x486ee6-0x0;var _0x4dbbd7=_0xef17[_0x486ee6];return _0x4dbbd7;};'use strict';var _=require(_0x7ef1('0x0'));var util=require(_0x7ef1('0x1'));var utils=require(_0x7ef1('0x2'));var Mustache=require(_0x7ef1('0x3'));var Redis=require(_0x7ef1('0x4'));var config=require(_0x7ef1('0x5'));var logger=require(_0x7ef1('0x6'))(_0x7ef1('0x7'));config[_0x7ef1('0x8')]=_['defaults'](config[_0x7ef1('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x7ef1('0x9'))(new Redis(config['redis']));function emit(_0x34a040,_0x4ba2f0,_0x5aec63){io['to'](_0x34a040)[_0x7ef1('0xa')](_0x4ba2f0,_0x5aec63);}function sendNotification(_0x3398a6,_0x56ab07,_0xeb10e9,_0x1d5b33,_0x4534fc,_0x3d47e2){io['to'](util[_0x7ef1('0xb')](_0x7ef1('0xc'),_0x1d5b33[_0x7ef1('0xd')]))['emit']('user:save',_0x1d5b33);var _0x1d4522=_0x3d47e2||{};var _0x4dc653=_0xeb10e9['split']('.');var _0x4d60ae={'uniqueid':_0x56ab07,'channel':_0x4dc653[0x0],'id':_0x4dc653[0x1],'title':_0x4dc653[0x0]+_0x7ef1('0xe'),'interactionId':_0x4dc653[0x2],'queue':_0x4534fc?_0x4534fc['name']:null,'sound':_0x1d4522[_0x7ef1('0xf')][_0x7ef1('0x10')],'shake':_0x1d4522[_0x7ef1('0xf')][_0x7ef1('0x11')]};try{if(!_0x1d4522[_0x7ef1('0x12')]){_0x1d4522[_0x7ef1('0x12')]={};}if(_0x4534fc){_0x1d4522[_0x7ef1('0x12')][_0x7ef1('0x13')]=_0x4534fc;}else if(_0x1d4522['body']['queue']){delete _0x1d4522[_0x7ef1('0x12')]['queue'];}_0x4d60ae[_0x7ef1('0x14')]=utils[_0x7ef1('0x15')](_0x1d4522['account']['notificationTemplate'],_0x1d4522);}catch(_0x5d269a){_0x4d60ae[_0x7ef1('0x14')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0x7ef1('0x16')](util['format']('[%s][QUEUE]\x20%s',_0x56ab07,_0x5d269a['message']));}io['to'](util[_0x7ef1('0xb')]('user:%s',_0x1d5b33[_0x7ef1('0xd')]))[_0x7ef1('0xa')](util['format']('notification:%s',_0x3398a6?_0x7ef1('0x17'):'remove'),_0x4d60ae);}function writeLog(_0x458459,_0x33f89b,_0x2f8164){return logger[_0x7ef1('0x18')](util[_0x7ef1('0xb')](_0x7ef1('0x19'),_0x458459,_0x33f89b[_0x7ef1('0xd')],_0x2f8164));}exports[_0x7ef1('0x1a')]=function(_0x490162,_0x2a1bdd,_0x3b118f,_0x3f26fb){if(_0x2a1bdd[_0x7ef1('0x1b')]){writeLog(_0x490162,_0x2a1bdd,_0x7ef1('0x1c'));return![];}if(!_0x2a1bdd[_0x7ef1('0x1d')]){writeLog(_0x490162,_0x2a1bdd,_0x7ef1('0x1e'));return![];}if(_0x2a1bdd[_0x3b118f+_0x7ef1('0x1f')]){writeLog(_0x490162,_0x2a1bdd,'PAUSE');return![];}if(_0x3f26fb&&_0x2a1bdd['hasOwnProperty'](_0x3b118f+_0x7ef1('0x20'))&&_0x2a1bdd[_0x7ef1('0x21')](_0x3b118f+_0x7ef1('0x22'))){if(_0x2a1bdd[_0x3b118f+_0x7ef1('0x20')]>0x0&&_0x2a1bdd[_0x3b118f+_0x7ef1('0x22')]>=_0x2a1bdd[_0x3b118f+'Capacity']){writeLog(_0x490162,_0x2a1bdd,_0x3b118f[_0x7ef1('0x23')]()+_0x7ef1('0x24'));return![];}}return!![];};exports[_0x7ef1('0x25')]=function(_0x4af5f5,_0x232f4e,_0x238fdc,_0x21e8c5,_0x58e7ee){return sendNotification(!![],_0x4af5f5,_0x232f4e,_0x238fdc,_0x21e8c5,_0x58e7ee);};exports[_0x7ef1('0x26')]=function(_0x4b0380,_0x3306b0,_0x2546bf,_0x4b5fde,_0x5f25de){return sendNotification(![],_0x4b0380,_0x3306b0,_0x2546bf,_0x4b5fde,_0x5f25de);};exports[_0x7ef1('0x27')]=writeLog;
\ No newline at end of file
+var _0xafb9=['split','\x20interaction','name','account','notificationSound','notificationShake','body','queue','msg','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','message','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','online','Pause','PAUSE','Capacity','hasOwnProperty','CurrentCapacity','\x20MAXCAPACITY','hideNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','localhost','emit','format','user:save'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xafb9,0x68));var _0x9afb=function(_0x5bccb2,_0x4e56af){_0x5bccb2=_0x5bccb2-0x0;var _0x3b089f=_0xafb9[_0x5bccb2];return _0x3b089f;};'use strict';var _=require(_0x9afb('0x0'));var util=require(_0x9afb('0x1'));var utils=require(_0x9afb('0x2'));var Mustache=require(_0x9afb('0x3'));var Redis=require(_0x9afb('0x4'));var config=require(_0x9afb('0x5'));var logger=require(_0x9afb('0x6'))(_0x9afb('0x7'));config[_0x9afb('0x8')]=_['defaults'](config['redis'],{'host':_0x9afb('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9afb('0x8')]));function emit(_0x548b24,_0x556880,_0x4c0e9d){io['to'](_0x548b24)[_0x9afb('0xa')](_0x556880,_0x4c0e9d);}function sendNotification(_0x20b8c1,_0x51dc88,_0x3ef362,_0x3e0264,_0x2aaefe,_0x27fa71){io['to'](util[_0x9afb('0xb')]('user:%s',_0x3e0264['name']))[_0x9afb('0xa')](_0x9afb('0xc'),_0x3e0264);var _0x3e6a29=_0x27fa71||{};var _0x31b574=_0x3ef362[_0x9afb('0xd')]('.');var _0xb6cd07={'uniqueid':_0x51dc88,'channel':_0x31b574[0x0],'id':_0x31b574[0x1],'title':_0x31b574[0x0]+_0x9afb('0xe'),'interactionId':_0x31b574[0x2],'queue':_0x2aaefe?_0x2aaefe[_0x9afb('0xf')]:null,'sound':_0x3e6a29[_0x9afb('0x10')][_0x9afb('0x11')],'shake':_0x3e6a29['account'][_0x9afb('0x12')]};try{if(!_0x3e6a29['body']){_0x3e6a29['body']={};}if(_0x2aaefe){_0x3e6a29[_0x9afb('0x13')][_0x9afb('0x14')]=_0x2aaefe;}else if(_0x3e6a29[_0x9afb('0x13')][_0x9afb('0x14')]){delete _0x3e6a29[_0x9afb('0x13')][_0x9afb('0x14')];}_0xb6cd07[_0x9afb('0x15')]=utils['getMustacheRender'](_0x3e6a29[_0x9afb('0x10')][_0x9afb('0x16')],_0x3e6a29);}catch(_0x23b906){_0xb6cd07[_0x9afb('0x15')]=_0x9afb('0x17');logger['error'](util[_0x9afb('0xb')]('[%s][QUEUE]\x20%s',_0x51dc88,_0x23b906[_0x9afb('0x18')]));}io['to'](util[_0x9afb('0xb')]('user:%s',_0x3e0264['name']))[_0x9afb('0xa')](util[_0x9afb('0xb')](_0x9afb('0x19'),_0x20b8c1?_0x9afb('0x1a'):_0x9afb('0x1b')),_0xb6cd07);}function writeLog(_0x57b4e2,_0x105253,_0x4dc307){return logger['info'](util[_0x9afb('0xb')](_0x9afb('0x1c'),_0x57b4e2,_0x105253[_0x9afb('0xf')],_0x4dc307));}exports[_0x9afb('0x1d')]=function(_0x50c835,_0x1e6f9c,_0x725a04,_0x49ba5f){if(_0x1e6f9c['busy']){writeLog(_0x50c835,_0x1e6f9c,'BUSY');return![];}if(!_0x1e6f9c[_0x9afb('0x1e')]){writeLog(_0x50c835,_0x1e6f9c,'OFFLINE');return![];}if(_0x1e6f9c[_0x725a04+_0x9afb('0x1f')]){writeLog(_0x50c835,_0x1e6f9c,_0x9afb('0x20'));return![];}if(_0x49ba5f&&_0x1e6f9c['hasOwnProperty'](_0x725a04+_0x9afb('0x21'))&&_0x1e6f9c[_0x9afb('0x22')](_0x725a04+_0x9afb('0x23'))){if(_0x1e6f9c[_0x725a04+_0x9afb('0x21')]>0x0&&_0x1e6f9c[_0x725a04+'CurrentCapacity']>=_0x1e6f9c[_0x725a04+_0x9afb('0x21')]){writeLog(_0x50c835,_0x1e6f9c,_0x725a04['toUpperCase']()+_0x9afb('0x24'));return![];}}return!![];};exports['showNotification']=function(_0x5692fa,_0x1e6100,_0x304104,_0x30af1b,_0x13a33e){return sendNotification(!![],_0x5692fa,_0x1e6100,_0x304104,_0x30af1b,_0x13a33e);};exports[_0x9afb('0x25')]=function(_0x3e3f57,_0x46673d,_0x5aabd5,_0x494ef8,_0x1cc791){return sendNotification(![],_0x3e3f57,_0x46673d,_0x5aabd5,_0x494ef8,_0x1cc791);};exports[_0x9afb('0x26')]=writeLog;
\ No newline at end of file
index 407885b..616917c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71a1=['replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','isObject','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','shelljs','lodash','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','error','[%s][SYSTEM]\x20%s','map','message','join','next','getMustacheRender','info','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s'];(function(_0x2f68be,_0x2441a3){var _0x1cec85=function(_0x2b18e7){while(--_0x2b18e7){_0x2f68be['push'](_0x2f68be['shift']());}};_0x1cec85(++_0x2441a3);}(_0x71a1,0xfa));var _0x171a=function(_0x39b26a,_0x42cadf){_0x39b26a=_0x39b26a-0x0;var _0x2257a0=_0x71a1[_0x39b26a];return _0x2257a0;};'use strict';var schema=require(_0x171a('0x0'));var sh=require(_0x171a('0x1'));var _=require(_0x171a('0x2'));var utils=require(_0x171a('0x3'));var logger=require(_0x171a('0x4'))(_0x171a('0x5'));var system=schema({'command':{'type':_0x171a('0x6'),'required':!![],'message':_0x171a('0x7')}});exports['consequence']=function(_0x4833af,_0x279bb9){return function(_0x1a5c98){try{var _0x584a2d={'command':_0x279bb9[0x0]};var _0x3cbd45=system['validate'](_0x584a2d,{'typecast':!![]});if(_0x3cbd45['length']){logger[_0x171a('0x8')](_0x171a('0x9'),_0x4833af,_[_0x171a('0xa')](_0x3cbd45,_0x171a('0xb'))[_0x171a('0xc')](',\x20'));logger['info']('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x4833af);_0x1a5c98[_0x171a('0xd')]();}else{var _0x5250f8=this;var _0x4d31d9=utils[_0x171a('0xe')](_0x279bb9[0x0],this);logger[_0x171a('0xf')](_0x171a('0x10'),_0x4833af,_0x4d31d9);sh[_0x171a('0x11')](_[_0x171a('0x12')](_0x4d31d9),function(_0x9c7760,_0x16325c){logger[_0x171a('0xf')](_0x171a('0x13'),_0x4833af,_0x9c7760);if(_0x9c7760==0x0){var _0x57c22a=_0x16325c[_0x171a('0x14')](/(\r\n|\n|\r)/gm,'');if(_[_0x171a('0x15')](_0x279bb9[0x1])||_[_0x171a('0x16')](_0x279bb9[0x1])){logger[_0x171a('0xf')](_0x171a('0x17'),_0x4833af);_0x5250f8[_0x171a('0x18')][_0x279bb9[0x1]]=_0x57c22a;}else{logger[_0x171a('0xf')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x4833af,_0x279bb9[0x1],_0x57c22a);_0x5250f8['body'][_0x279bb9[0x1]]=_0x57c22a;}}_0x1a5c98['next']();});}}catch(_0x5784ee){logger['error']('[%s][SYSTEM]\x20%s',_0x4833af,_[_0x171a('0x19')](_0x5784ee)?JSON['stringify'](_0x5784ee):_0x5784ee);logger[_0x171a('0xf')](_0x171a('0x1a'),_0x4833af);_0x1a5c98[_0x171a('0xd')]();}};};
\ No newline at end of file
+var _0x17da=['[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','next','validate','lodash','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][SYSTEM]\x20%s','map','message','join','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','info','[%s][SYSTEM]\x20commnad:\x20%s'];(function(_0x4b9eaf,_0x592f61){var _0x1b051e=function(_0x382e5b){while(--_0x382e5b){_0x4b9eaf['push'](_0x4b9eaf['shift']());}};_0x1b051e(++_0x592f61);}(_0x17da,0x167));var _0xa17d=function(_0x8e9b4e,_0x1a1861){_0x8e9b4e=_0x8e9b4e-0x0;var _0x3c13ae=_0x17da[_0x8e9b4e];return _0x3c13ae;};'use strict';var schema=require(_0xa17d('0x0'));var sh=require('shelljs');var _=require(_0xa17d('0x1'));var utils=require(_0xa17d('0x2'));var logger=require(_0xa17d('0x3'))(_0xa17d('0x4'));var system=schema({'command':{'type':_0xa17d('0x5'),'required':!![],'message':_0xa17d('0x6')}});exports['consequence']=function(_0x1c6a42,_0x5f3f2e){return function(_0x2479ed){try{var _0x25ce5b={'command':_0x5f3f2e[0x0]};var _0x34d2da=system['validate'](_0x25ce5b,{'typecast':!![]});if(_0x34d2da[_0xa17d('0x7')]){logger[_0xa17d('0x8')](_0xa17d('0x9'),_0x1c6a42,_[_0xa17d('0xa')](_0x34d2da,_0xa17d('0xb'))[_0xa17d('0xc')](',\x20'));logger['info'](_0xa17d('0xd'),_0x1c6a42);_0x2479ed['next']();}else{var _0x2bd705=this;var _0x5d5bc8=utils['getMustacheRender'](_0x5f3f2e[0x0],this);logger[_0xa17d('0xe')](_0xa17d('0xf'),_0x1c6a42,_0x5d5bc8);sh['exec'](_['trim'](_0x5d5bc8),function(_0x2f7a2c,_0x4384ed){logger['info'](_0xa17d('0x10'),_0x1c6a42,_0x2f7a2c);if(_0x2f7a2c==0x0){var _0x17bd97=_0x4384ed[_0xa17d('0x11')](/(\r\n|\n|\r)/gm,'');if(_[_0xa17d('0x12')](_0x5f3f2e[0x1])||_[_0xa17d('0x13')](_0x5f3f2e[0x1])){logger['info'](_0xa17d('0x14'),_0x1c6a42);_0x2bd705[_0xa17d('0x15')][_0x5f3f2e[0x1]]=_0x17bd97;}else{logger[_0xa17d('0xe')](_0xa17d('0x16'),_0x1c6a42,_0x5f3f2e[0x1],_0x17bd97);_0x2bd705['body'][_0x5f3f2e[0x1]]=_0x17bd97;}}_0x2479ed['next']();});}}catch(_0x55cb00){logger[_0xa17d('0x8')](_0xa17d('0x9'),_0x1c6a42,_[_0xa17d('0x17')](_0x55cb00)?JSON['stringify'](_0x55cb00):_0x55cb00);logger[_0xa17d('0xe')](_0xa17d('0xd'),_0x1c6a42);_0x2479ed[_0xa17d('0x18')]();}};};
\ No newline at end of file
index 3669ed9..2bf313e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7df0=['next','isObject','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','validate','length','map','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','channel','Interaction','addTags','interaction','then','stringify','finally'];(function(_0x11c4b4,_0x623b6b){var _0x59e808=function(_0x413389){while(--_0x413389){_0x11c4b4['push'](_0x11c4b4['shift']());}};_0x59e808(++_0x623b6b);}(_0x7df0,0x13a));var _0x07df=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0x7df0[_0x934425];return _0x31d596;};'use strict';var schema=require('validate');var _=require(_0x07df('0x0'));var rpc={'chatInteraction':require(_0x07df('0x1')),'openchannelInteraction':require(_0x07df('0x2')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x07df('0x3')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x07df('0x4'))};var logger=require(_0x07df('0x5'))(_0x07df('0x6'));var tag=schema({'tag':{'type':_0x07df('0x7'),'required':!![],'message':_0x07df('0x8')}});exports[_0x07df('0x9')]=function(_0x367781,_0x33e3bf,_0x1ebd8d,_0x471f37){return function(_0x2582cb){try{var _0x3ee458={'tag':_0x33e3bf[0x0]};var _0x552e9e=tag[_0x07df('0xa')](_0x3ee458,{'typecast':!![]});if(_0x552e9e[_0x07df('0xb')]){logger['error']('[%s][TAG]\x20%s',_0x367781,_[_0x07df('0xc')](_0x552e9e,'message')['join'](',\x20'));logger[_0x07df('0xd')](_0x07df('0xe'),_0x367781);_0x2582cb['next']();}else{var _0x95bc21={'ids':[_0x33e3bf[0x0]]};if(rpc[_0x471f37[_0x07df('0xf')]+_0x07df('0x10')]){rpc[_0x471f37[_0x07df('0xf')]+_0x07df('0x10')][_0x07df('0x11')](_0x471f37[_0x07df('0x12')]['id'],_0x95bc21)[_0x07df('0x13')](function(_0x54cfc3){logger[_0x07df('0xd')]('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x367781,_0x33e3bf[0x1],_0x471f37[_0x07df('0xf')],_0x471f37[_0x07df('0x12')]['id']);})['catch'](function(_0x481958){logger['error']('[%s][TAG]\x20%s',_0x367781,JSON[_0x07df('0x14')](_0x481958));logger['info'](_0x07df('0xe'),_0x367781);})[_0x07df('0x15')](function(){_0x2582cb[_0x07df('0x16')]();});}}}catch(_0xf6f0c){logger['error']('[%s][TAG]\x20%s',_0x367781,_[_0x07df('0x17')](_0xf6f0c)?JSON[_0x07df('0x14')](_0xf6f0c):_0xf6f0c);logger[_0x07df('0xd')](_0x07df('0xe'),_0x367781);_0x2582cb[_0x07df('0x16')]();}};};
\ No newline at end of file
+var _0x49bf=['error','message','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','[%s][TAG]\x20%s','stringify','finally','isObject','info','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x49bf,0x1b7));var _0xf49b=function(_0x2ae21b,_0xb265e5){_0x2ae21b=_0x2ae21b-0x0;var _0x2c8f91=_0x49bf[_0x2ae21b];return _0x2c8f91;};'use strict';var schema=require(_0xf49b('0x0'));var _=require(_0xf49b('0x1'));var rpc={'chatInteraction':require(_0xf49b('0x2')),'openchannelInteraction':require(_0xf49b('0x3')),'smsInteraction':require(_0xf49b('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xf49b('0x5')),'whatsappInteraction':require(_0xf49b('0x6'))};var logger=require(_0xf49b('0x7'))(_0xf49b('0x8'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0xf49b('0x9')}});exports['consequence']=function(_0x35f0f3,_0x13ced0,_0x89670d,_0x5c04d5){return function(_0x260c75){try{var _0x26372d={'tag':_0x13ced0[0x0]};var _0x23d343=tag[_0xf49b('0x0')](_0x26372d,{'typecast':!![]});if(_0x23d343[_0xf49b('0xa')]){logger[_0xf49b('0xb')]('[%s][TAG]\x20%s',_0x35f0f3,_['map'](_0x23d343,_0xf49b('0xc'))['join'](',\x20'));logger['info'](_0xf49b('0xd'),_0x35f0f3);_0x260c75[_0xf49b('0xe')]();}else{var _0x37f75e={'ids':[_0x13ced0[0x0]]};if(rpc[_0x5c04d5[_0xf49b('0xf')]+_0xf49b('0x10')]){rpc[_0x5c04d5[_0xf49b('0xf')]+_0xf49b('0x10')]['addTags'](_0x5c04d5[_0xf49b('0x11')]['id'],_0x37f75e)['then'](function(_0x530f75){logger['info'](_0xf49b('0x12'),_0x35f0f3,_0x13ced0[0x1],_0x5c04d5[_0xf49b('0xf')],_0x5c04d5[_0xf49b('0x11')]['id']);})[_0xf49b('0x13')](function(_0x149c39){logger[_0xf49b('0xb')](_0xf49b('0x14'),_0x35f0f3,JSON[_0xf49b('0x15')](_0x149c39));logger['info'](_0xf49b('0xd'),_0x35f0f3);})[_0xf49b('0x16')](function(){_0x260c75['next']();});}}}catch(_0x2eac6a){logger[_0xf49b('0xb')](_0xf49b('0x14'),_0x35f0f3,_[_0xf49b('0x17')](_0x2eac6a)?JSON[_0xf49b('0x15')](_0x2eac6a):_0x2eac6a);logger[_0xf49b('0x18')](_0xf49b('0xd'),_0x35f0f3);_0x260c75[_0xf49b('0xe')]();}};};
\ No newline at end of file
index c4726df..b581cae 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(_0x2f1ca1,_0x57cc48){var _0x4dd018=function(_0x110985){while(--_0x110985){_0x2f1ca1['push'](_0x2f1ca1['shift']());}};_0x4dd018(++_0x57cc48);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
+var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0xa0f6c9,_0x41985a){var _0x40fce9=function(_0x321aa6){while(--_0x321aa6){_0xa0f6c9['push'](_0xa0f6c9['shift']());}};_0x40fce9(++_0x41985a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
index f6621f3..3c3507e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd07=['error\x20update\x20queue\x20report','message\x20is\x20empty','emit','capacity','hasOwnProperty','CurrentCapacity','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','path','jayson/promise','bluebird','uuid','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','format','IntervalId','isNil','Intervals','map','interval','rules','channel','message','interaction','isArray','applications','length','.js','toLowerCase','autoreply','appdata','split','mail','push','slice','join','dialogflow','TagId','%s:%s:%s','app','./interval','condition','./applications/','consequence','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','matchPath','info','stack','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch'];(function(_0x43d33a,_0x3379){var _0x194770=function(_0x5735cb){while(--_0x5735cb){_0x43d33a['push'](_0x43d33a['shift']());}};_0x194770(++_0x3379);}(_0xcd07,0x1d3));var _0x7cd0=function(_0x38c809,_0x2632c1){_0x38c809=_0x38c809-0x0;var _0x4971f5=_0xcd07[_0x38c809];return _0x4971f5;};'use strict';var _=require(_0x7cd0('0x0'));var util=require('util');var path=require(_0x7cd0('0x1'));var fs=require('fs');var jayson=require(_0x7cd0('0x2'));var BPromise=require(_0x7cd0('0x3'));var uuid=require(_0x7cd0('0x4'));var config=require('../../../config/environment');var logger=require(_0x7cd0('0x5'))(_0x7cd0('0x6'));var rpc={'openchannelQueueReport':require(_0x7cd0('0x7')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x7cd0('0x8')),'faxQueueReport':require(_0x7cd0('0x9')),'whatsappQueueReport':require(_0x7cd0('0xa'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x2fd3de,_0x841f21,_0x1c9ed8){return util[_0x7cd0('0xb')]('%s.%s.%s',_0x2fd3de,_0x841f21||0x0,_0x1c9ed8||0x0);}function getIntervals(_0x497593,_0x15fddc){var _0x3a5c94=[];if(!_['isNil'](_0x15fddc[_0x7cd0('0xc')])&&!_[_0x7cd0('0xd')](_0x497593[_0x15fddc['IntervalId']])&&!_[_0x7cd0('0xd')](_0x497593[_0x15fddc[_0x7cd0('0xc')]][_0x7cd0('0xe')])){_0x3a5c94=_[_0x7cd0('0xf')](_0x497593[_0x15fddc[_0x7cd0('0xc')]][_0x7cd0('0xe')],_0x7cd0('0x10'));}else if(!_['isNil'](_0x15fddc[_0x7cd0('0x10')])){_0x3a5c94=[_0x15fddc[_0x7cd0('0x10')]];}return _0x3a5c94;}exports['listen']=function(_0x4f1e7b){_0x4f1e7b[_0x7cd0('0x11')]={};return new BPromise(function(_0x4b4934,_0x26cea2){var _0x552a13={'Start':function(_0x33c932){var _0x238bb5=this;return new Promise(function(_0x1c480c,_0x5bcc75){if(_0x33c932){try{var _0x64b469=[];var _0x22a31f=getId(_0x33c932[_0x7cd0('0x12')],_0x33c932[_0x7cd0('0x13')]?_0x33c932[_0x7cd0('0x13')]['id']:0x0,_0x33c932['interaction']?_0x33c932[_0x7cd0('0x14')]['id']:0x0);if(_0x33c932['applications']&&_[_0x7cd0('0x15')](_0x33c932[_0x7cd0('0x16')])&&_0x33c932['applications'][_0x7cd0('0x17')]){for(var _0x579598=0x0;_0x579598<_0x33c932[_0x7cd0('0x16')][_0x7cd0('0x17')];_0x579598+=0x1){var _0x54bcd1=_0x33c932['applications'][_0x579598];if(fs['existsSync'](path['join'](__dirname,_0x7cd0('0x16'),_0x54bcd1['app']+_0x7cd0('0x18')))){var _0x170efa=[];switch(_0x54bcd1['app'][_0x7cd0('0x19')]()){case _0x7cd0('0x1a'):var _0x1cfc23=_0x54bcd1[_0x7cd0('0x1b')][_0x7cd0('0x1c')](',');if(_0x33c932[_0x7cd0('0x12')]===_0x7cd0('0x1d')){_0x170efa[_0x7cd0('0x1e')](_0x1cfc23[0x0]);_0x170efa['push'](_0x1cfc23[0x1]);_0x170efa[_0x7cd0('0x1e')](_0x1cfc23[_0x7cd0('0x1f')](0x2,_0x1cfc23['length'])[_0x7cd0('0x20')](','));}else{_0x170efa[_0x7cd0('0x1e')](_0x1cfc23[0x0]);_0x170efa[_0x7cd0('0x1e')](_0x1cfc23[_0x7cd0('0x1f')](0x1,_0x1cfc23[_0x7cd0('0x17')])[_0x7cd0('0x20')](','));}break;case _0x7cd0('0x21'):var _0x307671=_0x54bcd1['appdata']['split'](',');_0x170efa['push'](_0x307671[0x0]);_0x170efa[_0x7cd0('0x1e')](_0x307671[0x1]);_0x170efa[_0x7cd0('0x1e')](_0x307671[_0x7cd0('0x1f')](0x2,_0x307671[_0x7cd0('0x17')])[_0x7cd0('0x20')](','));break;case'dialogflowv2':var _0x5d4455=_0x54bcd1['appdata'][_0x7cd0('0x1c')](',');_0x170efa[_0x7cd0('0x1e')](_0x5d4455[0x0]);_0x170efa[_0x7cd0('0x1e')](_0x5d4455[0x1]);_0x170efa[_0x7cd0('0x1e')](_0x5d4455[0x2]);_0x170efa[_0x7cd0('0x1e')](_0x5d4455[0x3]);_0x170efa[_0x7cd0('0x1e')](_0x5d4455[_0x7cd0('0x1f')](0x4,_0x5d4455[_0x7cd0('0x17')])[_0x7cd0('0x20')](','));break;case'amazonlex':var _0x3b50f5=_0x54bcd1[_0x7cd0('0x1b')]['split'](',');_0x170efa[_0x7cd0('0x1e')](_0x3b50f5[0x0]);_0x170efa[_0x7cd0('0x1e')](_0x3b50f5[0x1]);_0x170efa[_0x7cd0('0x1e')](_0x3b50f5[0x2]);_0x170efa['push'](_0x3b50f5[0x3]);_0x170efa[_0x7cd0('0x1e')](_0x3b50f5[_0x7cd0('0x1f')](0x4,_0x3b50f5[_0x7cd0('0x17')])[_0x7cd0('0x20')](','));break;case _0x7cd0('0x13'):_0x170efa[_0x7cd0('0x1e')](_0x54bcd1[_0x7cd0('0x1b')]);break;case'tag':_0x170efa[_0x7cd0('0x1e')](_0x54bcd1[_0x7cd0('0x22')]);_0x170efa[_0x7cd0('0x1e')](_0x54bcd1[_0x7cd0('0x1b')]);break;default:_0x170efa=_[_0x7cd0('0xd')](_0x54bcd1[_0x7cd0('0x1b')])?[]:_0x54bcd1[_0x7cd0('0x1b')][_0x7cd0('0x1c')](',');}var _0x45f918={'id':util[_0x7cd0('0xb')](_0x7cd0('0x23'),_0x22a31f,_0x54bcd1['id'],_0x54bcd1[_0x7cd0('0x24')]),'condition':require(_0x7cd0('0x25'))[_0x7cd0('0x26')](_0x22a31f,getIntervals(_0x4f1e7b['intervals'],_0x54bcd1),_0x4f1e7b),'consequence':require(_0x7cd0('0x27')+_0x54bcd1[_0x7cd0('0x24')])[_0x7cd0('0x28')](_0x22a31f,_0x170efa,_0x4f1e7b,_0x33c932),'p':_0x54bcd1['priority']||0x0};logger['info'](_0x7cd0('0x29'),_0x45f918['id'],_0x7cd0('0x2a'),getIntervals(_0x4f1e7b['intervals'],_0x54bcd1)[_0x7cd0('0x20')](_0x7cd0('0x2b')));_0x64b469[_0x7cd0('0x1e')](_0x45f918);}else{logger[_0x7cd0('0x2c')](_0x7cd0('0x2d'),path[_0x7cd0('0x20')](__dirname,_0x7cd0('0x16'),_0x54bcd1[_0x7cd0('0x24')]+_0x7cd0('0x18')));}}_0x4f1e7b['rules'][_0x22a31f]=new RuleEngine(_0x64b469);_0x4f1e7b['rules'][_0x22a31f][_0x7cd0('0x2e')](_0x33c932,function(_0x2b9474){logger['info'](_0x7cd0('0x2f'),JSON[_0x7cd0('0x30')](_0x2b9474[_0x7cd0('0x31')]));if(_0x4f1e7b[_0x7cd0('0x11')][_0x22a31f]){_0x4f1e7b[_0x7cd0('0x11')][_0x22a31f]['emit']('complete');}});return _0x1c480c({'code':0xc8,'message':_0x33c932});}else{logger[_0x7cd0('0x32')]('No\x20applications\x20to\x20execute');return _0x1c480c({'code':0xc8,'message':_0x33c932});}}catch(_0xd175ee){logger[_0x7cd0('0x2c')](_0xd175ee[_0x7cd0('0x33')]);return _0x5bcc75(_0x238bb5['error'](0x1f4,_0xd175ee));}}return _0x5bcc75('routing\x20is\x20empty');});},'AcceptMessage':function(_0x158c19){var _0x577808=this;return new Promise(function(_0x58cc79,_0x1809bc){if(_0x158c19[_0x7cd0('0x34')]&&_0x158c19['agent']['id']){if(_0x4f1e7b[_0x7cd0('0x35')][_0x158c19[_0x7cd0('0x34')]['id']]){_0x4f1e7b['agents'][_0x158c19[_0x7cd0('0x34')]['id']][_0x7cd0('0x36')]=![];_0x4f1e7b['agents'][_0x158c19[_0x7cd0('0x34')]['id']][_0x7cd0('0x37')]=undefined;}}if(_0x158c19[_0x7cd0('0x13')]&&_0x158c19[_0x7cd0('0x13')]['id']){try{var _0x41871f=getId(_0x158c19[_0x7cd0('0x12')],_0x158c19[_0x7cd0('0x13')]?_0x158c19[_0x7cd0('0x13')]['id']:0x0,_0x158c19[_0x7cd0('0x14')]?_0x158c19[_0x7cd0('0x14')]['id']:0x0);if(_0x4f1e7b['rules'][_0x41871f]){_0x4f1e7b[_0x7cd0('0x11')][_0x41871f]['emit'](_0x7cd0('0x38'));if(rpc[_0x158c19[_0x7cd0('0x12')]+_0x7cd0('0x39')]){rpc[_0x158c19[_0x7cd0('0x12')]+_0x7cd0('0x39')][_0x7cd0('0x3a')](_0x41871f,{'UserId':_0x158c19[_0x7cd0('0x13')][_0x7cd0('0x3b')]})[_0x7cd0('0x3c')](function(_0x230530){logger[_0x7cd0('0x2c')](_0x7cd0('0x3d'));});}}return _0x58cc79({'code':0xc8,'message':_0x158c19});}catch(_0x58f4bb){logger[_0x7cd0('0x2c')](_0x58f4bb['stack']);return _0x1809bc(_0x577808[_0x7cd0('0x2c')](0x1f4,_0x58f4bb));}}logger[_0x7cd0('0x2c')](_0x7cd0('0x3e'));return _0x1809bc(_0x577808['error'](0x1f4,_0x7cd0('0x3e')));});},'RejectMessage':function(_0x5f0ece){var _0x455659=this;return new Promise(function(_0x3fd0eb,_0x2d002f){if(_0x5f0ece['agent']&&_0x5f0ece[_0x7cd0('0x34')]['id']){try{if(_0x4f1e7b[_0x7cd0('0x35')][_0x5f0ece['agent']['id']]){_0x4f1e7b[_0x7cd0('0x35')][_0x5f0ece['agent']['id']][_0x7cd0('0x36')]=![];_0x4f1e7b[_0x7cd0('0x35')][_0x5f0ece[_0x7cd0('0x34')]['id']][_0x7cd0('0x37')]=undefined;}return _0x3fd0eb({'code':0xc8,'message':_0x5f0ece});}catch(_0x4cc95f){logger[_0x7cd0('0x2c')](_0x4cc95f[_0x7cd0('0x33')]);return _0x2d002f(_0x455659['error'](0x1f4,_0x4cc95f));}}logger[_0x7cd0('0x2c')](_0x7cd0('0x3e'));return _0x2d002f(_0x455659[_0x7cd0('0x2c')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x326eb9){var _0x58ec33=this;return new Promise(function(_0x2bed55,_0x20d444){if(_0x326eb9['channel']&&_0x326eb9[_0x7cd0('0x14')]&&_0x326eb9[_0x7cd0('0x14')]['id']){try{var _0x188436=getId(_0x326eb9['channel'],_0x326eb9[_0x7cd0('0x13')]?_0x326eb9['message']['id']:0x0,_0x326eb9[_0x7cd0('0x14')]?_0x326eb9[_0x7cd0('0x14')]['id']:0x0);if(_0x4f1e7b[_0x7cd0('0x11')][_0x188436]){_0x4f1e7b[_0x7cd0('0x11')][_0x188436][_0x7cd0('0x3f')]('end');}return _0x2bed55({'code':0xc8,'message':_0x326eb9});}catch(_0x2f336d){logger[_0x7cd0('0x2c')](_0x2f336d[_0x7cd0('0x33')]);return _0x20d444(_0x58ec33[_0x7cd0('0x2c')](0x1f4,_0x2f336d));}}logger[_0x7cd0('0x2c')](_0x7cd0('0x3e'));return _0x20d444(_0x58ec33[_0x7cd0('0x2c')](0x1f4,_0x7cd0('0x3e')));});},'AgentCapacity':function(_0x50763d){var _0x13a779=this;return new Promise(function(_0x258a71,_0x2417b7){if(_0x4f1e7b[_0x7cd0('0x35')]['hasOwnProperty'](_0x50763d['id'])){for(var _0x7e2303 in _0x50763d[_0x7cd0('0x40')]){if(_0x50763d[_0x7cd0('0x40')][_0x7cd0('0x41')](_0x7e2303)){if(_0x4f1e7b['agents'][_0x50763d['id']][_0x7cd0('0x41')](_0x7e2303+_0x7cd0('0x42'))){_0x4f1e7b[_0x7cd0('0x35')][_0x50763d['id']][_0x7e2303+_0x7cd0('0x42')]=parseInt(_0x50763d[_0x7cd0('0x40')][_0x7e2303],0xa);}}}_0x4f1e7b[_0x7cd0('0x35')][_0x50763d['id']]['updateRealtime']();return _0x258a71({'code':0xc8,'message':_0x4f1e7b[_0x7cd0('0x35')][_0x50763d['id']]});}else{return _0x2417b7(_0x13a779['error'](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x333084){return new Promise(function(_0x5b85cd,_0x40de9b){var _0x3d2179=_[_0x7cd0('0x43')](_0x4f1e7b[_0x7cd0('0x35')]);_0x5b85cd({'count':_0x3d2179['length'],'rows':_0x3d2179});});},'ChatQueues':function(_0x39b58e){return new Promise(function(_0x360aa5,_0x43a7b8){var _0x2ea522=[];for(var _0x7bc4f8 in _0x4f1e7b[_0x7cd0('0x44')]){if(_0x4f1e7b[_0x7cd0('0x44')][_0x7cd0('0x41')](_0x7bc4f8)){var _0x5cc04c=_0x4f1e7b[_0x7cd0('0x44')][_0x7bc4f8];var _0x1d1e4a={'id':_0x5cc04c['id'],'available':_0x5cc04c[_0x7cd0('0x45')],'loggedIn':_0x5cc04c[_0x7cd0('0x46')],'name':_0x5cc04c[_0x7cd0('0x47')],'paused':_0x5cc04c[_0x7cd0('0x48')],'waiting':_0x5cc04c[_0x7cd0('0x49')]};_0x2ea522[_0x7cd0('0x1e')](_0x1d1e4a);}}_0x360aa5({'count':_0x2ea522['length'],'rows':_0x2ea522});});},'MailQueues':function(_0x2c88ad){return new Promise(function(_0x27d8ae,_0xbce2b6){var _0x1370b4=[];for(var _0x2089d4 in _0x4f1e7b[_0x7cd0('0x4a')]){if(_0x4f1e7b[_0x7cd0('0x4a')][_0x7cd0('0x41')](_0x2089d4)){var _0x2df7d3=_0x4f1e7b[_0x7cd0('0x4a')][_0x2089d4];var _0x27c06b={'id':_0x2df7d3['id'],'available':_0x2df7d3[_0x7cd0('0x45')],'loggedIn':_0x2df7d3[_0x7cd0('0x46')],'name':_0x2df7d3['name'],'paused':_0x2df7d3['paused'],'waiting':_0x2df7d3['waiting']};_0x1370b4[_0x7cd0('0x1e')](_0x27c06b);}}_0x27d8ae({'count':_0x1370b4[_0x7cd0('0x17')],'rows':_0x1370b4});});},'OpenchannelQueues':function(_0xe75d70){return new Promise(function(_0x10eeca,_0x24ce6c){var _0x309eb7=[];for(var _0x1eecf8 in _0x4f1e7b[_0x7cd0('0x4b')]){if(_0x4f1e7b[_0x7cd0('0x4b')]['hasOwnProperty'](_0x1eecf8)){var _0x3ff018=_0x4f1e7b[_0x7cd0('0x4b')][_0x1eecf8];var _0x4fdaf2={'id':_0x3ff018['id'],'available':_0x3ff018[_0x7cd0('0x45')],'loggedIn':_0x3ff018[_0x7cd0('0x46')],'name':_0x3ff018[_0x7cd0('0x47')],'paused':_0x3ff018[_0x7cd0('0x48')],'waiting':_0x3ff018[_0x7cd0('0x49')]};_0x309eb7[_0x7cd0('0x1e')](_0x4fdaf2);}}_0x10eeca({'count':_0x309eb7['length'],'rows':_0x309eb7});});},'SmsQueues':function(_0x317109){return new Promise(function(_0x4dbce0,_0x52f7b9){var _0x31a6a8=[];for(var _0x171305 in _0x4f1e7b[_0x7cd0('0x4c')]){if(_0x4f1e7b['smsQueues']['hasOwnProperty'](_0x171305)){var _0x431ed9=_0x4f1e7b['smsQueues'][_0x171305];var _0x8bc966={'id':_0x431ed9['id'],'available':_0x431ed9[_0x7cd0('0x45')],'loggedIn':_0x431ed9[_0x7cd0('0x46')],'name':_0x431ed9[_0x7cd0('0x47')],'paused':_0x431ed9['paused'],'waiting':_0x431ed9[_0x7cd0('0x49')]};_0x31a6a8[_0x7cd0('0x1e')](_0x8bc966);}}_0x4dbce0({'count':_0x31a6a8['length'],'rows':_0x31a6a8});});},'FaxQueues':function(_0x13e8db){return new Promise(function(_0x4fe7da,_0x2eab29){var _0x7fa66=[];for(var _0x3e0368 in _0x4f1e7b[_0x7cd0('0x4d')]){if(_0x4f1e7b[_0x7cd0('0x4d')][_0x7cd0('0x41')](_0x3e0368)){var _0x5c3f74=_0x4f1e7b[_0x7cd0('0x4d')][_0x3e0368];var _0x45b48c={'id':_0x5c3f74['id'],'available':_0x5c3f74[_0x7cd0('0x45')],'loggedIn':_0x5c3f74[_0x7cd0('0x46')],'name':_0x5c3f74[_0x7cd0('0x47')],'paused':_0x5c3f74['paused'],'waiting':_0x5c3f74[_0x7cd0('0x49')]};_0x7fa66[_0x7cd0('0x1e')](_0x45b48c);}}_0x4fe7da({'count':_0x7fa66[_0x7cd0('0x17')],'rows':_0x7fa66});});},'WhatsappQueues':function(_0x1c9e94){return new Promise(function(_0x24097c,_0x31dccf){var _0x4508dd=[];for(var _0xa762e8 in _0x4f1e7b['whatsappQueues']){if(_0x4f1e7b['whatsappQueues'][_0x7cd0('0x41')](_0xa762e8)){var _0x11db68=_0x4f1e7b[_0x7cd0('0x4e')][_0xa762e8];var _0x3c0e51={'id':_0x11db68['id'],'available':_0x11db68[_0x7cd0('0x45')],'loggedIn':_0x11db68[_0x7cd0('0x46')],'name':_0x11db68[_0x7cd0('0x47')],'paused':_0x11db68[_0x7cd0('0x48')],'waiting':_0x11db68['waiting']};_0x4508dd['push'](_0x3c0e51);}}_0x24097c({'count':_0x4508dd[_0x7cd0('0x17')],'rows':_0x4508dd});});},'ChatQueuesWaitingInteractions':function(_0x1693c5){return new Promise(function(_0xb8bf6f,_0x6c6605){var _0x47a172=_['values'](_0x4f1e7b[_0x7cd0('0x4f')]);_0xb8bf6f({'count':_0x47a172['length'],'rows':_0x47a172});});},'MailQueuesWaitingInteractions':function(_0xce9b5b){return new Promise(function(_0x516a82,_0x1a3b8c){var _0x10956a=_['values'](_0x4f1e7b[_0x7cd0('0x50')]);_0x516a82({'count':_0x10956a[_0x7cd0('0x17')],'rows':_0x10956a});});},'OpenchannelQueuesWaitingInteractions':function(_0x56e5e8){return new Promise(function(_0x233b7c,_0x71adc7){var _0x2cb3e1=_[_0x7cd0('0x43')](_0x4f1e7b['openchannelQueuesWaitingInteractions']);_0x233b7c({'count':_0x2cb3e1[_0x7cd0('0x17')],'rows':_0x2cb3e1});});},'SmsQueuesWaitingInteractions':function(_0x286133){return new Promise(function(_0x215cce,_0x3e5abe){var _0x5931ca=_[_0x7cd0('0x43')](_0x4f1e7b['smsQueuesWaitingInteractions']);_0x215cce({'count':_0x5931ca[_0x7cd0('0x17')],'rows':_0x5931ca});});},'FaxQueuesWaitingInteractions':function(_0x51eabc){return new Promise(function(_0xc41b4a,_0x35edcb){var _0x96ff8=_[_0x7cd0('0x43')](_0x4f1e7b[_0x7cd0('0x51')]);_0xc41b4a({'count':_0x96ff8[_0x7cd0('0x17')],'rows':_0x96ff8});});},'WhatsappQueuesWaitingInteractions':function(_0x21b501){return new Promise(function(_0x5e9e17,_0x47e5cf){var _0x546ecb=_[_0x7cd0('0x43')](_0x4f1e7b[_0x7cd0('0x52')]);_0x5e9e17({'count':_0x546ecb[_0x7cd0('0x17')],'rows':_0x546ecb});});}};var _0x36eb73=jayson[_0x7cd0('0x53')](_0x552a13)[_0x7cd0('0x54')]();_0x36eb73['on'](_0x7cd0('0x2c'),function(_0x1a991a){logger[_0x7cd0('0x2c')](JSON[_0x7cd0('0x30')](_0x1a991a));return _0x26cea2(_0x1a991a);});_0x36eb73['listen'](0x232c,_0x7cd0('0x55'),function(){console['log'](_0x7cd0('0x56'),0x232c);return _0x4b4934(_0x7cd0('0x57')+0x232c);});});};
\ No newline at end of file
+var _0x00b2=['%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','message','isArray','applications','existsSync','join','app','.js','toLowerCase','split','channel','mail','push','slice','length','dialogflow','appdata','dialogflowv2','amazonlex','tag','TagId','%s:%s:%s','condition','consequence','priority','info','intervals','rules','execute','Applications\x20executed','stringify','matchPath','emit','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','interaction','end','QueueReport','update','UserId','catch','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','values','chatQueues','available','loggedIn','paused','mailQueues','name','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','format'];(function(_0x4e0c31,_0x208e9f){var _0x3fd7df=function(_0x5ee817){while(--_0x5ee817){_0x4e0c31['push'](_0x4e0c31['shift']());}};_0x3fd7df(++_0x208e9f);}(_0x00b2,0x16a));var _0x200b=function(_0x3a5d55,_0x2d513d){_0x3a5d55=_0x3a5d55-0x0;var _0x542074=_0x00b2[_0x3a5d55];return _0x542074;};'use strict';var _=require(_0x200b('0x0'));var util=require(_0x200b('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x200b('0x2'));var BPromise=require(_0x200b('0x3'));var uuid=require(_0x200b('0x4'));var config=require(_0x200b('0x5'));var logger=require(_0x200b('0x6'))(_0x200b('0x7'));var rpc={'openchannelQueueReport':require(_0x200b('0x8')),'mailQueueReport':require(_0x200b('0x9')),'chatQueueReport':require(_0x200b('0xa')),'smsQueueReport':require(_0x200b('0xb')),'faxQueueReport':require(_0x200b('0xc')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0x503f26,_0x59a838,_0x1177bb){return util[_0x200b('0xd')](_0x200b('0xe'),_0x503f26,_0x59a838||0x0,_0x1177bb||0x0);}function getIntervals(_0x24513d,_0xb4abc5){var _0x14eee9=[];if(!_[_0x200b('0xf')](_0xb4abc5[_0x200b('0x10')])&&!_[_0x200b('0xf')](_0x24513d[_0xb4abc5[_0x200b('0x10')]])&&!_[_0x200b('0xf')](_0x24513d[_0xb4abc5[_0x200b('0x10')]][_0x200b('0x11')])){_0x14eee9=_['map'](_0x24513d[_0xb4abc5[_0x200b('0x10')]][_0x200b('0x11')],_0x200b('0x12'));}else if(!_[_0x200b('0xf')](_0xb4abc5[_0x200b('0x12')])){_0x14eee9=[_0xb4abc5[_0x200b('0x12')]];}return _0x14eee9;}exports[_0x200b('0x13')]=function(_0x4b9c6e){_0x4b9c6e['rules']={};return new BPromise(function(_0x176fb5,_0xfd72a){var _0x2b6873={'Start':function(_0xb20d09){var _0x7328c0=this;return new Promise(function(_0x23ff35,_0x5cb9cd){if(_0xb20d09){try{var _0x47394c=[];var _0x1fbe62=getId(_0xb20d09['channel'],_0xb20d09['message']?_0xb20d09[_0x200b('0x14')]['id']:0x0,_0xb20d09['interaction']?_0xb20d09['interaction']['id']:0x0);if(_0xb20d09['applications']&&_[_0x200b('0x15')](_0xb20d09['applications'])&&_0xb20d09[_0x200b('0x16')]['length']){for(var _0xa4e3cb=0x0;_0xa4e3cb<_0xb20d09[_0x200b('0x16')]['length'];_0xa4e3cb+=0x1){var _0x3c070f=_0xb20d09[_0x200b('0x16')][_0xa4e3cb];if(fs[_0x200b('0x17')](path[_0x200b('0x18')](__dirname,_0x200b('0x16'),_0x3c070f[_0x200b('0x19')]+_0x200b('0x1a')))){var _0x3f2fb9=[];switch(_0x3c070f['app'][_0x200b('0x1b')]()){case'autoreply':var _0x4c1e84=_0x3c070f['appdata'][_0x200b('0x1c')](',');if(_0xb20d09[_0x200b('0x1d')]===_0x200b('0x1e')){_0x3f2fb9[_0x200b('0x1f')](_0x4c1e84[0x0]);_0x3f2fb9[_0x200b('0x1f')](_0x4c1e84[0x1]);_0x3f2fb9[_0x200b('0x1f')](_0x4c1e84[_0x200b('0x20')](0x2,_0x4c1e84['length'])[_0x200b('0x18')](','));}else{_0x3f2fb9[_0x200b('0x1f')](_0x4c1e84[0x0]);_0x3f2fb9['push'](_0x4c1e84['slice'](0x1,_0x4c1e84[_0x200b('0x21')])['join'](','));}break;case _0x200b('0x22'):var _0x3c1027=_0x3c070f[_0x200b('0x23')][_0x200b('0x1c')](',');_0x3f2fb9[_0x200b('0x1f')](_0x3c1027[0x0]);_0x3f2fb9['push'](_0x3c1027[0x1]);_0x3f2fb9[_0x200b('0x1f')](_0x3c1027[_0x200b('0x20')](0x2,_0x3c1027['length'])[_0x200b('0x18')](','));break;case _0x200b('0x24'):var _0x460bc2=_0x3c070f[_0x200b('0x23')][_0x200b('0x1c')](',');_0x3f2fb9[_0x200b('0x1f')](_0x460bc2[0x0]);_0x3f2fb9[_0x200b('0x1f')](_0x460bc2[0x1]);_0x3f2fb9['push'](_0x460bc2[0x2]);_0x3f2fb9[_0x200b('0x1f')](_0x460bc2[0x3]);_0x3f2fb9[_0x200b('0x1f')](_0x460bc2[_0x200b('0x20')](0x4,_0x460bc2[_0x200b('0x21')])['join'](','));break;case _0x200b('0x25'):var _0x576f48=_0x3c070f[_0x200b('0x23')][_0x200b('0x1c')](',');_0x3f2fb9[_0x200b('0x1f')](_0x576f48[0x0]);_0x3f2fb9[_0x200b('0x1f')](_0x576f48[0x1]);_0x3f2fb9[_0x200b('0x1f')](_0x576f48[0x2]);_0x3f2fb9[_0x200b('0x1f')](_0x576f48[0x3]);_0x3f2fb9[_0x200b('0x1f')](_0x576f48[_0x200b('0x20')](0x4,_0x576f48[_0x200b('0x21')])[_0x200b('0x18')](','));break;case _0x200b('0x14'):_0x3f2fb9[_0x200b('0x1f')](_0x3c070f['appdata']);break;case _0x200b('0x26'):_0x3f2fb9[_0x200b('0x1f')](_0x3c070f[_0x200b('0x27')]);_0x3f2fb9['push'](_0x3c070f[_0x200b('0x23')]);break;default:_0x3f2fb9=_['isNil'](_0x3c070f[_0x200b('0x23')])?[]:_0x3c070f['appdata'][_0x200b('0x1c')](',');}var _0x54d16e={'id':util[_0x200b('0xd')](_0x200b('0x28'),_0x1fbe62,_0x3c070f['id'],_0x3c070f['app']),'condition':require('./interval')[_0x200b('0x29')](_0x1fbe62,getIntervals(_0x4b9c6e['intervals'],_0x3c070f),_0x4b9c6e),'consequence':require('./applications/'+_0x3c070f[_0x200b('0x19')])[_0x200b('0x2a')](_0x1fbe62,_0x3f2fb9,_0x4b9c6e,_0xb20d09),'p':_0x3c070f[_0x200b('0x2b')]||0x0};logger[_0x200b('0x2c')]('Push\x20new\x20rule',_0x54d16e['id'],'on\x20interval',getIntervals(_0x4b9c6e[_0x200b('0x2d')],_0x3c070f)[_0x200b('0x18')]('\x20|\x20'));_0x47394c['push'](_0x54d16e);}else{logger['error']('Please\x20create\x20a\x20new\x20file\x20under',path[_0x200b('0x18')](__dirname,'applications',_0x3c070f['app']+_0x200b('0x1a')));}}_0x4b9c6e[_0x200b('0x2e')][_0x1fbe62]=new RuleEngine(_0x47394c);_0x4b9c6e[_0x200b('0x2e')][_0x1fbe62][_0x200b('0x2f')](_0xb20d09,function(_0x555315){logger[_0x200b('0x2c')](_0x200b('0x30'),JSON[_0x200b('0x31')](_0x555315[_0x200b('0x32')]));if(_0x4b9c6e['rules'][_0x1fbe62]){_0x4b9c6e[_0x200b('0x2e')][_0x1fbe62][_0x200b('0x33')]('complete');}});return _0x23ff35({'code':0xc8,'message':_0xb20d09});}else{logger[_0x200b('0x2c')](_0x200b('0x34'));return _0x23ff35({'code':0xc8,'message':_0xb20d09});}}catch(_0x7cfade){logger[_0x200b('0x35')](_0x7cfade[_0x200b('0x36')]);return _0x5cb9cd(_0x7328c0[_0x200b('0x35')](0x1f4,_0x7cfade));}}return _0x5cb9cd(_0x200b('0x37'));});},'AcceptMessage':function(_0x3639a7){var _0x28934a=this;return new Promise(function(_0x1b56c6,_0x19ee33){if(_0x3639a7[_0x200b('0x38')]&&_0x3639a7[_0x200b('0x38')]['id']){if(_0x4b9c6e[_0x200b('0x39')][_0x3639a7[_0x200b('0x38')]['id']]){_0x4b9c6e['agents'][_0x3639a7['agent']['id']][_0x200b('0x3a')]=![];_0x4b9c6e[_0x200b('0x39')][_0x3639a7[_0x200b('0x38')]['id']][_0x200b('0x3b')]=undefined;}}if(_0x3639a7[_0x200b('0x14')]&&_0x3639a7['message']['id']){try{var _0x4bc78f=getId(_0x3639a7[_0x200b('0x1d')],_0x3639a7[_0x200b('0x14')]?_0x3639a7['message']['id']:0x0,_0x3639a7['interaction']?_0x3639a7[_0x200b('0x3c')]['id']:0x0);if(_0x4b9c6e[_0x200b('0x2e')][_0x4bc78f]){_0x4b9c6e[_0x200b('0x2e')][_0x4bc78f][_0x200b('0x33')](_0x200b('0x3d'));if(rpc[_0x3639a7[_0x200b('0x1d')]+_0x200b('0x3e')]){rpc[_0x3639a7['channel']+'QueueReport'][_0x200b('0x3f')](_0x4bc78f,{'UserId':_0x3639a7['message'][_0x200b('0x40')]})[_0x200b('0x41')](function(_0x179be5){logger[_0x200b('0x35')]('error\x20update\x20queue\x20report');});}}return _0x1b56c6({'code':0xc8,'message':_0x3639a7});}catch(_0x44ed13){logger[_0x200b('0x35')](_0x44ed13['stack']);return _0x19ee33(_0x28934a[_0x200b('0x35')](0x1f4,_0x44ed13));}}logger['error'](_0x200b('0x42'));return _0x19ee33(_0x28934a[_0x200b('0x35')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x304a23){var _0x271aaa=this;return new Promise(function(_0xd232d1,_0x37bb63){if(_0x304a23['agent']&&_0x304a23[_0x200b('0x38')]['id']){try{if(_0x4b9c6e[_0x200b('0x39')][_0x304a23[_0x200b('0x38')]['id']]){_0x4b9c6e[_0x200b('0x39')][_0x304a23[_0x200b('0x38')]['id']][_0x200b('0x3a')]=![];_0x4b9c6e['agents'][_0x304a23[_0x200b('0x38')]['id']][_0x200b('0x3b')]=undefined;}return _0xd232d1({'code':0xc8,'message':_0x304a23});}catch(_0x45fd36){logger[_0x200b('0x35')](_0x45fd36[_0x200b('0x36')]);return _0x37bb63(_0x271aaa[_0x200b('0x35')](0x1f4,_0x45fd36));}}logger[_0x200b('0x35')](_0x200b('0x42'));return _0x37bb63(_0x271aaa[_0x200b('0x35')](0x1f4,_0x200b('0x42')));});},'AbandonInteraction':function(_0x168335){var _0x3a444c=this;return new Promise(function(_0x1ff521,_0x20e953){if(_0x168335[_0x200b('0x1d')]&&_0x168335[_0x200b('0x3c')]&&_0x168335[_0x200b('0x3c')]['id']){try{var _0x42dd45=getId(_0x168335[_0x200b('0x1d')],_0x168335[_0x200b('0x14')]?_0x168335[_0x200b('0x14')]['id']:0x0,_0x168335[_0x200b('0x3c')]?_0x168335['interaction']['id']:0x0);if(_0x4b9c6e[_0x200b('0x2e')][_0x42dd45]){_0x4b9c6e['rules'][_0x42dd45][_0x200b('0x33')]('end');}return _0x1ff521({'code':0xc8,'message':_0x168335});}catch(_0x43e8e2){logger[_0x200b('0x35')](_0x43e8e2['stack']);return _0x20e953(_0x3a444c[_0x200b('0x35')](0x1f4,_0x43e8e2));}}logger['error'](_0x200b('0x42'));return _0x20e953(_0x3a444c['error'](0x1f4,_0x200b('0x42')));});},'AgentCapacity':function(_0x22149e){var _0x30e12e=this;return new Promise(function(_0x5bc648,_0x535c47){if(_0x4b9c6e[_0x200b('0x39')][_0x200b('0x43')](_0x22149e['id'])){for(var _0x563869 in _0x22149e['capacity']){if(_0x22149e[_0x200b('0x44')][_0x200b('0x43')](_0x563869)){if(_0x4b9c6e['agents'][_0x22149e['id']][_0x200b('0x43')](_0x563869+_0x200b('0x45'))){_0x4b9c6e[_0x200b('0x39')][_0x22149e['id']][_0x563869+_0x200b('0x45')]=parseInt(_0x22149e[_0x200b('0x44')][_0x563869],0xa);}}}_0x4b9c6e['agents'][_0x22149e['id']][_0x200b('0x46')]();return _0x5bc648({'code':0xc8,'message':_0x4b9c6e[_0x200b('0x39')][_0x22149e['id']]});}else{return _0x535c47(_0x30e12e['error'](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x539833){return new Promise(function(_0x423204,_0x35c511){var _0x1b8a83=_[_0x200b('0x47')](_0x4b9c6e[_0x200b('0x39')]);_0x423204({'count':_0x1b8a83[_0x200b('0x21')],'rows':_0x1b8a83});});},'ChatQueues':function(_0x52676b){return new Promise(function(_0x221009,_0x2a65a2){var _0xa80721=[];for(var _0x43867b in _0x4b9c6e[_0x200b('0x48')]){if(_0x4b9c6e[_0x200b('0x48')][_0x200b('0x43')](_0x43867b)){var _0x1e85f2=_0x4b9c6e[_0x200b('0x48')][_0x43867b];var _0x7e7499={'id':_0x1e85f2['id'],'available':_0x1e85f2[_0x200b('0x49')],'loggedIn':_0x1e85f2[_0x200b('0x4a')],'name':_0x1e85f2['name'],'paused':_0x1e85f2[_0x200b('0x4b')],'waiting':_0x1e85f2['waiting']};_0xa80721[_0x200b('0x1f')](_0x7e7499);}}_0x221009({'count':_0xa80721[_0x200b('0x21')],'rows':_0xa80721});});},'MailQueues':function(_0x30c110){return new Promise(function(_0x19dfad,_0x3e487d){var _0x268232=[];for(var _0x4c3ae0 in _0x4b9c6e[_0x200b('0x4c')]){if(_0x4b9c6e['mailQueues'][_0x200b('0x43')](_0x4c3ae0)){var _0x1b32a6=_0x4b9c6e[_0x200b('0x4c')][_0x4c3ae0];var _0x4a7f57={'id':_0x1b32a6['id'],'available':_0x1b32a6['available'],'loggedIn':_0x1b32a6['loggedIn'],'name':_0x1b32a6[_0x200b('0x4d')],'paused':_0x1b32a6[_0x200b('0x4b')],'waiting':_0x1b32a6[_0x200b('0x4e')]};_0x268232[_0x200b('0x1f')](_0x4a7f57);}}_0x19dfad({'count':_0x268232['length'],'rows':_0x268232});});},'OpenchannelQueues':function(_0x4f0d54){return new Promise(function(_0x5630b4,_0x2d7b26){var _0x32421a=[];for(var _0x3f59dc in _0x4b9c6e[_0x200b('0x4f')]){if(_0x4b9c6e[_0x200b('0x4f')][_0x200b('0x43')](_0x3f59dc)){var _0xb02a33=_0x4b9c6e[_0x200b('0x4f')][_0x3f59dc];var _0x25d2be={'id':_0xb02a33['id'],'available':_0xb02a33['available'],'loggedIn':_0xb02a33[_0x200b('0x4a')],'name':_0xb02a33[_0x200b('0x4d')],'paused':_0xb02a33['paused'],'waiting':_0xb02a33[_0x200b('0x4e')]};_0x32421a['push'](_0x25d2be);}}_0x5630b4({'count':_0x32421a['length'],'rows':_0x32421a});});},'SmsQueues':function(_0x90fad4){return new Promise(function(_0x3a3571,_0x3871be){var _0xf2b642=[];for(var _0x17b6f7 in _0x4b9c6e[_0x200b('0x50')]){if(_0x4b9c6e['smsQueues']['hasOwnProperty'](_0x17b6f7)){var _0x395bd3=_0x4b9c6e[_0x200b('0x50')][_0x17b6f7];var _0x537907={'id':_0x395bd3['id'],'available':_0x395bd3[_0x200b('0x49')],'loggedIn':_0x395bd3[_0x200b('0x4a')],'name':_0x395bd3[_0x200b('0x4d')],'paused':_0x395bd3[_0x200b('0x4b')],'waiting':_0x395bd3[_0x200b('0x4e')]};_0xf2b642[_0x200b('0x1f')](_0x537907);}}_0x3a3571({'count':_0xf2b642[_0x200b('0x21')],'rows':_0xf2b642});});},'FaxQueues':function(_0x47d80f){return new Promise(function(_0x26fa2a,_0x1fc075){var _0x553046=[];for(var _0x1b8919 in _0x4b9c6e[_0x200b('0x51')]){if(_0x4b9c6e[_0x200b('0x51')][_0x200b('0x43')](_0x1b8919)){var _0x378edd=_0x4b9c6e[_0x200b('0x51')][_0x1b8919];var _0x15aa82={'id':_0x378edd['id'],'available':_0x378edd[_0x200b('0x49')],'loggedIn':_0x378edd[_0x200b('0x4a')],'name':_0x378edd[_0x200b('0x4d')],'paused':_0x378edd[_0x200b('0x4b')],'waiting':_0x378edd[_0x200b('0x4e')]};_0x553046['push'](_0x15aa82);}}_0x26fa2a({'count':_0x553046[_0x200b('0x21')],'rows':_0x553046});});},'WhatsappQueues':function(_0x388eb7){return new Promise(function(_0x55c0e6,_0x31c877){var _0x475c55=[];for(var _0x333aba in _0x4b9c6e[_0x200b('0x52')]){if(_0x4b9c6e[_0x200b('0x52')][_0x200b('0x43')](_0x333aba)){var _0x30ce71=_0x4b9c6e['whatsappQueues'][_0x333aba];var _0x4bcd55={'id':_0x30ce71['id'],'available':_0x30ce71[_0x200b('0x49')],'loggedIn':_0x30ce71['loggedIn'],'name':_0x30ce71[_0x200b('0x4d')],'paused':_0x30ce71['paused'],'waiting':_0x30ce71[_0x200b('0x4e')]};_0x475c55[_0x200b('0x1f')](_0x4bcd55);}}_0x55c0e6({'count':_0x475c55[_0x200b('0x21')],'rows':_0x475c55});});},'ChatQueuesWaitingInteractions':function(_0x221e74){return new Promise(function(_0x227b64,_0xc7a9a0){var _0x4ccf37=_[_0x200b('0x47')](_0x4b9c6e[_0x200b('0x53')]);_0x227b64({'count':_0x4ccf37['length'],'rows':_0x4ccf37});});},'MailQueuesWaitingInteractions':function(_0x403a98){return new Promise(function(_0x84220b,_0x2b2208){var _0x609d50=_['values'](_0x4b9c6e[_0x200b('0x54')]);_0x84220b({'count':_0x609d50[_0x200b('0x21')],'rows':_0x609d50});});},'OpenchannelQueuesWaitingInteractions':function(_0x211719){return new Promise(function(_0x5c83b4,_0x35051e){var _0x2feaae=_['values'](_0x4b9c6e[_0x200b('0x55')]);_0x5c83b4({'count':_0x2feaae['length'],'rows':_0x2feaae});});},'SmsQueuesWaitingInteractions':function(_0x25027d){return new Promise(function(_0x58732b,_0x1ac7df){var _0x3d9dee=_['values'](_0x4b9c6e[_0x200b('0x56')]);_0x58732b({'count':_0x3d9dee['length'],'rows':_0x3d9dee});});},'FaxQueuesWaitingInteractions':function(_0x334fc0){return new Promise(function(_0x7a8dc3,_0x3d9e3a){var _0xa64fe7=_[_0x200b('0x47')](_0x4b9c6e[_0x200b('0x57')]);_0x7a8dc3({'count':_0xa64fe7[_0x200b('0x21')],'rows':_0xa64fe7});});},'WhatsappQueuesWaitingInteractions':function(_0x49d273){return new Promise(function(_0x522a92,_0x88c7a3){var _0x419708=_['values'](_0x4b9c6e[_0x200b('0x58')]);_0x522a92({'count':_0x419708['length'],'rows':_0x419708});});}};var _0x39b31f=jayson[_0x200b('0x59')](_0x2b6873)[_0x200b('0x5a')]();_0x39b31f['on'](_0x200b('0x35'),function(_0x4a23d7){logger[_0x200b('0x35')](JSON[_0x200b('0x31')](_0x4a23d7));return _0xfd72a(_0x4a23d7);});_0x39b31f['listen'](0x232c,_0x200b('0x5b'),function(){console[_0x200b('0x5c')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x176fb5(_0x200b('0x5d')+0x232c);});});};
\ No newline at end of file
index 11e5af3..0e2ca4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd7d=['routing','client','request','then','error','message','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','format','iftime\x20%s','indexOf','[%s][INTERVAL]\x20%s','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','jayson/promise','lodash'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xbd7d,0x9f));var _0xdbd7=function(_0x3096c8,_0x4cf94c){_0x3096c8=_0x3096c8-0x0;var _0x4cb984=_0xbd7d[_0x3096c8];return _0x4cb984;};'use strict';var util=require('util');var BPromise=require('bluebird');var jayson=require(_0xdbd7('0x0'));var _=require(_0xdbd7('0x1'));var logger=require('../../../config/logger')(_0xdbd7('0x2'));var client=jayson[_0xdbd7('0x3')]['http']({'port':0x232a});function request(_0x517f5b,_0x217eb3){return new BPromise(function(_0x4970fd,_0x2ffdb9){return client[_0xdbd7('0x4')](_0x517f5b,_0x217eb3)[_0xdbd7('0x5')](function(_0x6de1f3){if(_0x6de1f3[_0xdbd7('0x6')]){return _0x2ffdb9(_0x6de1f3['error'][_0xdbd7('0x7')]);}else{return _0x4970fd(_0x6de1f3['result']);}})['catch'](function(_0xbc644e){return _0x2ffdb9(_0xbc644e);});});}exports[_0xdbd7('0x8')]=function(_0x5d6cb6,_0x55fc52,_0x23cdf3){return function(_0x47d561){if(_0x23cdf3[_0xdbd7('0x9')]&&!_0x23cdf3[_0xdbd7('0x9')][_0x5d6cb6]){logger[_0xdbd7('0xa')](_0xdbd7('0xb'),_0x5d6cb6);return _0x47d561[_0xdbd7('0xc')]();}var _0x2bd4ca=[];for(var _0x50fd5e=0x0;_0x50fd5e<_0x55fc52[_0xdbd7('0xd')];_0x50fd5e+=0x1){_0x2bd4ca[_0xdbd7('0xe')](request('Command',{'command':util[_0xdbd7('0xf')](_0xdbd7('0x10'),_0x55fc52[_0x50fd5e])})[_0xdbd7('0x5')](function(_0x294d37){return _0x294d37&&_0x294d37[_0xdbd7('0x7')]&&_0x294d37['message'][_0xdbd7('0x11')]('true')>=0x0?!![]:![];})['catch'](function(_0x337391){logger[_0xdbd7('0x6')](_0xdbd7('0x12'),_0x5d6cb6,_0x55fc52[_0x50fd5e]);}));}BPromise['all'](_0x2bd4ca)[_0xdbd7('0x5')](function(_0x3fd623){var _0x186e2d=_['some'](_0x3fd623);logger[_0xdbd7('0xa')](_0xdbd7('0x13'),_0x5d6cb6,_0x55fc52[_0xdbd7('0x14')](_0xdbd7('0x15')),_0x186e2d);_0x47d561[_0xdbd7('0x16')](_0x186e2d);})['catch'](function(_0x6134a2){console['log'](_0x6134a2);logger['error'](_0xdbd7('0x13'),_0x5d6cb6,_0x55fc52[_0xdbd7('0x14')](_0xdbd7('0x15')),_0x6134a2['stack']);_0x47d561[_0xdbd7('0xc')]();});};};
\ No newline at end of file
+var _0x4b00=['log','util','jayson/promise','lodash','../../../config/logger','client','then','error','message','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command','format','indexOf','true','catch','[%s][INTERVAL]\x20%s','some','info','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when'];(function(_0x37bef0,_0x31a72){var _0x321392=function(_0x516d6e){while(--_0x516d6e){_0x37bef0['push'](_0x37bef0['shift']());}};_0x321392(++_0x31a72);}(_0x4b00,0x1ef));var _0x04b0=function(_0x325e82,_0x2fe6e5){_0x325e82=_0x325e82-0x0;var _0x5ee196=_0x4b00[_0x325e82];return _0x5ee196;};'use strict';var util=require(_0x04b0('0x0'));var BPromise=require('bluebird');var jayson=require(_0x04b0('0x1'));var _=require(_0x04b0('0x2'));var logger=require(_0x04b0('0x3'))('routing');var client=jayson[_0x04b0('0x4')]['http']({'port':0x232a});function request(_0x4674cf,_0x137b15){return new BPromise(function(_0x29c0e0,_0x105915){return client['request'](_0x4674cf,_0x137b15)[_0x04b0('0x5')](function(_0x150314){if(_0x150314[_0x04b0('0x6')]){return _0x105915(_0x150314[_0x04b0('0x6')][_0x04b0('0x7')]);}else{return _0x29c0e0(_0x150314['result']);}})['catch'](function(_0x3bff3b){return _0x105915(_0x3bff3b);});});}exports[_0x04b0('0x8')]=function(_0x5be8db,_0x44df92,_0x1fe367){return function(_0x5d19dd){if(_0x1fe367['rules']&&!_0x1fe367[_0x04b0('0x9')][_0x5be8db]){logger['info'](_0x04b0('0xa'),_0x5be8db);return _0x5d19dd[_0x04b0('0xb')]();}var _0x4ae39d=[];for(var _0x252c86=0x0;_0x252c86<_0x44df92[_0x04b0('0xc')];_0x252c86+=0x1){_0x4ae39d['push'](request(_0x04b0('0xd'),{'command':util[_0x04b0('0xe')]('iftime\x20%s',_0x44df92[_0x252c86])})[_0x04b0('0x5')](function(_0x63ce1c){return _0x63ce1c&&_0x63ce1c['message']&&_0x63ce1c['message'][_0x04b0('0xf')](_0x04b0('0x10'))>=0x0?!![]:![];})[_0x04b0('0x11')](function(_0x4ffda3){logger[_0x04b0('0x6')](_0x04b0('0x12'),_0x5be8db,_0x44df92[_0x252c86]);}));}BPromise['all'](_0x4ae39d)['then'](function(_0x447593){var _0x4a6a0a=_[_0x04b0('0x13')](_0x447593);logger[_0x04b0('0x14')](_0x04b0('0x15'),_0x5be8db,_0x44df92[_0x04b0('0x16')](_0x04b0('0x17')),_0x4a6a0a);_0x5d19dd[_0x04b0('0x18')](_0x4a6a0a);})[_0x04b0('0x11')](function(_0x2401b0){console[_0x04b0('0x19')](_0x2401b0);logger[_0x04b0('0x6')]('[%s][INTERVAL]\x20%s\x20%s',_0x5be8db,_0x44df92['join'](_0x04b0('0x17')),_0x2401b0['stack']);_0x5d19dd[_0x04b0('0xb')]();});};};
\ No newline at end of file
index e98881e..f8430a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc788=['transfereeuniqueid','clone','calleridname','agententerreason','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','queue','then','type','agentcomplete','acwtime','agentacw','request','CreateVoiceAgentReport','agentcalled','debug','[%s][agents][agentcalled]','destuniqueid','agentcalledAt','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswer','timeout','holdtime','ringtime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswerAt','abandoned','reason','talktime','agentconnect','[%s][agents][agentconnect]','agentconnectAt','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','blindtransfer','isNil','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten'];(function(_0x3dac48,_0x10adc6){var _0x246ade=function(_0x5489f3){while(--_0x5489f3){_0x3dac48['push'](_0x3dac48['shift']());}};_0x246ade(++_0x10adc6);}(_0xc788,0xc4));var _0x8c78=function(_0x31172e,_0xa59e5){_0x31172e=_0x31172e-0x0;var _0x414ada=_0xc788[_0x31172e];return _0x414ada;};'use strict';var _=require(_0x8c78('0x0'));var util=require(_0x8c78('0x1'));var utils=require(_0x8c78('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x4ecb26,_0x4ce125){utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x5'),_0x4ecb26[_0x8c78('0x6')],_0x4ecb26[_0x8c78('0x7')],_0x4ecb26['queue'],_0x4ecb26[_0x8c78('0x8')],_0x4ecb26[_0x8c78('0x9')],_0x4ecb26[_0x8c78('0xa')],_0x4ecb26[_0x8c78('0xb')],_0x4ecb26[_0x8c78('0xc')]));if(_0x4ecb26['queue']){utils[_0x8c78('0xd')](_0x4ecb26[_0x8c78('0xe')])[_0x8c78('0xf')](function(_0x39c0e5){if(_0x39c0e5){_0x4ecb26[_0x8c78('0x10')]=_0x39c0e5[_0x8c78('0x10')];_0x4ecb26['agentacw']=_0x4ecb26[_0x8c78('0x11')]?_0x39c0e5['acw']:![];_0x4ecb26[_0x8c78('0x12')]=_0x4ecb26[_0x8c78('0x13')]?_0x39c0e5['acwTimeout']:0x0;}utils[_0x8c78('0x14')](_0x8c78('0x15'),_0x4ecb26);});}else{utils['request'](_0x8c78('0x15'),_0x4ecb26);}if(_0x4ce125){delete transfers[_0x4ecb26['uniqueid']];}else{delete agents[_0x4ecb26['destuniqueid']];}}exports[_0x8c78('0x16')]=function(_0x1b1d0e){try{utils[_0x8c78('0x17')](util[_0x8c78('0x4')](_0x8c78('0x18'),_0x1b1d0e[_0x8c78('0x6')]),_0x1b1d0e);agents[_0x1b1d0e[_0x8c78('0x19')]]=_0x1b1d0e;agents[_0x1b1d0e[_0x8c78('0x19')]][_0x8c78('0x1a')]=utils[_0x8c78('0x1b')]();agents[_0x1b1d0e['destuniqueid']][_0x8c78('0xc')]=_0x8c78('0x1c');agents[_0x1b1d0e['destuniqueid']][_0x8c78('0xb')]=null;agents[_0x1b1d0e[_0x8c78('0x19')]][_0x8c78('0x1d')]=null;utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x1e'),_0x1b1d0e['uniqueid'],agents[_0x1b1d0e['destuniqueid']][_0x8c78('0x8')],_0x1b1d0e['destuniqueid']));}catch(_0x56801a){utils[_0x8c78('0x1f')](util['format'](_0x8c78('0x18'),_0x1b1d0e[_0x8c78('0x6')]),_0x56801a);}};exports['agentringnoanswer']=function(_0x6c9a12){try{if(!_['isNil'](agents[_0x6c9a12[_0x8c78('0x19')]])){utils[_0x8c78('0x17')](util['format'](_0x8c78('0x20'),_0x6c9a12[_0x8c78('0x6')]),_0x6c9a12);utils['info'](util[_0x8c78('0x4')](_0x8c78('0x21'),_0x6c9a12[_0x8c78('0x6')],agents[_0x6c9a12[_0x8c78('0x19')]][_0x8c78('0x8')],_0x6c9a12[_0x8c78('0x19')]));agents[_0x6c9a12[_0x8c78('0x19')]][_0x8c78('0x22')]=!![];agents[_0x6c9a12[_0x8c78('0x19')]]['agentringnoanswerAt']=utils[_0x8c78('0x1b')]();agents[_0x6c9a12[_0x8c78('0x19')]][_0x8c78('0xc')]='timeout';agents[_0x6c9a12[_0x8c78('0x19')]]['reason']=_0x8c78('0x23');agents[_0x6c9a12[_0x8c78('0x19')]][_0x8c78('0x24')]=_0x6c9a12['ringtime']?parseInt(_0x6c9a12[_0x8c78('0x25')])/0x3e8:0x0;agents[_0x6c9a12[_0x8c78('0x19')]]['talktime']=0x0;unanswered[_0x8c78('0x26')](_0x6c9a12[_0x8c78('0x19')]);}}catch(_0x394c1d){utils[_0x8c78('0x1f')](util[_0x8c78('0x4')](_0x8c78('0x20'),_0x6c9a12['uniqueid']),_0x394c1d);}};exports[_0x8c78('0x27')]=function(_0x51add6){try{_[_0x8c78('0x28')](agents,function(_0x17f4c8,_0xb69c52){if(_0x17f4c8['uniqueid']==_0x51add6[_0x8c78('0x6')]&&!_[_0x8c78('0x29')](unanswered,_0x17f4c8['destuniqueid'])){utils[_0x8c78('0x17')](util[_0x8c78('0x4')](_0x8c78('0x2a'),_0x51add6['uniqueid']),_0x51add6);utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x2b'),_0x51add6['uniqueid'],_0x17f4c8[_0x8c78('0x8')],_0x17f4c8[_0x8c78('0x19')]));_0x17f4c8['agentringnoanswer']=!![];_0x17f4c8[_0x8c78('0x2c')]=utils[_0x8c78('0x1b')]();_0x17f4c8[_0x8c78('0xc')]=_0x8c78('0x2d');_0x17f4c8[_0x8c78('0x2e')]=_0x8c78('0x2d');_0x17f4c8[_0x8c78('0x24')]=_0x51add6[_0x8c78('0x24')];_0x17f4c8[_0x8c78('0x2f')]=0x0;writeDB(_0x17f4c8);}});}catch(_0x15a868){utils['error'](util[_0x8c78('0x4')](_0x8c78('0x2a'),_0x51add6[_0x8c78('0x6')]),_0x15a868);}};exports[_0x8c78('0x30')]=function(_0x34481a){try{if(agents[_0x34481a['destuniqueid']]){utils[_0x8c78('0x17')](util[_0x8c78('0x4')](_0x8c78('0x31'),_0x34481a['uniqueid']),_0x34481a);utils[_0x8c78('0x3')](util[_0x8c78('0x4')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x34481a[_0x8c78('0x6')],agents[_0x34481a['destuniqueid']][_0x8c78('0x8')],_0x34481a[_0x8c78('0x19')]));agents[_0x34481a[_0x8c78('0x19')]][_0x8c78('0x32')]=utils['now']();agents[_0x34481a[_0x8c78('0x19')]]['connectedlinenum']=_0x34481a[_0x8c78('0xb')];agents[_0x34481a[_0x8c78('0x19')]][_0x8c78('0x1d')]=_0x34481a['connectedlinename'];agents[_0x34481a['destuniqueid']][_0x8c78('0x24')]=_0x34481a[_0x8c78('0x25')];agents[_0x34481a[_0x8c78('0x19')]][_0x8c78('0xc')]=_0x8c78('0x33');_[_0x8c78('0x28')](agents,function(_0x326b34,_0x314679){if(_0x326b34[_0x8c78('0x19')]!=_0x34481a[_0x8c78('0x19')]&&_0x326b34[_0x8c78('0x6')]==_0x34481a[_0x8c78('0x6')]){_0x326b34[_0x8c78('0x2f')]=0x0;_0x326b34['holdtime']=_0x34481a[_0x8c78('0x25')];_0x326b34[_0x8c78('0x22')]=!![];_0x326b34['agentringnoanswerAt']=utils['now']();_0x326b34[_0x8c78('0xc')]=_0x8c78('0x34');_0x326b34['reason']=_0x8c78('0x34');_0x326b34[_0x8c78('0x35')]=_0x34481a['destuniqueid'];_0x326b34[_0x8c78('0x36')]=_0x34481a[_0x8c78('0x8')];writeDB(_0x326b34);}});}}catch(_0x57e2c7){utils[_0x8c78('0x1f')](util[_0x8c78('0x4')](_0x8c78('0x31'),_0x34481a[_0x8c78('0x6')]),_0x57e2c7);}};exports[_0x8c78('0x11')]=function(_0x4e4880){try{if(!_['isNil'](agents[_0x4e4880[_0x8c78('0x19')]])){utils[_0x8c78('0x17')](util[_0x8c78('0x4')](_0x8c78('0x37'),_0x4e4880[_0x8c78('0x6')]),_0x4e4880);utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x38'),_0x4e4880[_0x8c78('0x6')],agents[_0x4e4880[_0x8c78('0x19')]][_0x8c78('0x8')],_0x4e4880['destuniqueid']));agents[_0x4e4880[_0x8c78('0x19')]][_0x8c78('0x11')]=!![];agents[_0x4e4880[_0x8c78('0x19')]][_0x8c78('0x39')]=utils[_0x8c78('0x1b')]();agents[_0x4e4880['destuniqueid']][_0x8c78('0x2f')]=utils[_0x8c78('0x3a')](agents[_0x4e4880[_0x8c78('0x19')]][_0x8c78('0x39')],agents[_0x4e4880[_0x8c78('0x19')]]['agentconnectAt']);agents[_0x4e4880[_0x8c78('0x19')]]['reason']=_0x4e4880['reason'];agents[_0x4e4880[_0x8c78('0x19')]][_0x8c78('0xc')]=_0x8c78('0x3b');writeDB(agents[_0x4e4880['destuniqueid']]);}}catch(_0x1d78a0){utils[_0x8c78('0x1f')](util[_0x8c78('0x4')](_0x8c78('0x37'),_0x4e4880[_0x8c78('0x6')]),_0x1d78a0);}};exports[_0x8c78('0x3c')]=function(_0x26103c){try{if(!_[_0x8c78('0x3d')](agents[_0x26103c[_0x8c78('0x3e')]])){utils['debug'](util[_0x8c78('0x4')](_0x8c78('0x3f'),_0x26103c[_0x8c78('0x6')]),_0x26103c);utils[_0x8c78('0x3')](util['format'](_0x8c78('0x40'),_0x26103c[_0x8c78('0x6')],agents[_0x26103c[_0x8c78('0x3e')]][_0x8c78('0x8')],agents[_0x26103c['transfereruniqueid']][_0x8c78('0x6')]));agents[_0x26103c[_0x8c78('0x3e')]][_0x8c78('0x41')]=!![];agents[_0x26103c['transfereruniqueid']][_0x8c78('0x42')]='blind';agents[_0x26103c[_0x8c78('0x3e')]][_0x8c78('0x43')]=_0x26103c[_0x8c78('0x44')];agents[_0x26103c[_0x8c78('0x3e')]][_0x8c78('0x45')]=agents[_0x26103c[_0x8c78('0x3e')]][_0x8c78('0x6')];}}catch(_0x38fec1){utils[_0x8c78('0x1f')](util[_0x8c78('0x4')](_0x8c78('0x3f'),_0x26103c[_0x8c78('0x6')]),_0x38fec1);}};exports[_0x8c78('0x46')]=function(_0x18d896){try{utils['debug'](util[_0x8c78('0x4')](_0x8c78('0x47'),_0x18d896[_0x8c78('0x48')]),_0x18d896);if(_0x18d896[_0x8c78('0x48')]==_0x18d896['origtransfererlinkedid']){if(!_[_0x8c78('0x3d')](agents[_0x18d896[_0x8c78('0x49')]])){utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x4a'),_0x18d896[_0x8c78('0x48')],agents[_0x18d896['secondtransfereruniqueid']][_0x8c78('0x8')]));agents[_0x18d896[_0x8c78('0x49')]]['transfer']=!![];agents[_0x18d896[_0x8c78('0x49')]]['transfertype']=_0x8c78('0x4b');agents[_0x18d896[_0x8c78('0x49')]][_0x8c78('0x43')]=_0x18d896[_0x8c78('0x4c')];agents[_0x18d896[_0x8c78('0x49')]][_0x8c78('0x45')]=_0x18d896[_0x8c78('0x48')];}if(_0x18d896['transfereeuniqueid']&&agents[_0x18d896[_0x8c78('0x4d')]]){agents[_0x18d896[_0x8c78('0x4d')]]['agententerreason']=0x1;transfers[_0x18d896[_0x8c78('0x4d')]]=_[_0x8c78('0x4e')](agents[_0x18d896['transfereeuniqueid']]);transfers[_0x18d896[_0x8c78('0x4d')]][_0x8c78('0xa')]=agents[_0x18d896[_0x8c78('0x49')]][_0x8c78('0xa')];transfers[_0x18d896[_0x8c78('0x4d')]][_0x8c78('0x4f')]=agents[_0x18d896[_0x8c78('0x49')]][_0x8c78('0x4f')];transfers[_0x18d896[_0x8c78('0x4d')]][_0x8c78('0x1a')]=utils[_0x8c78('0x1b')]();transfers[_0x18d896[_0x8c78('0x4d')]][_0x8c78('0x32')]=utils[_0x8c78('0x1b')]();transfers[_0x18d896['transfereeuniqueid']][_0x8c78('0x24')]=0x0;transfers[_0x18d896['transfereeuniqueid']][_0x8c78('0x50')]=0x2;}}else if(_0x18d896['secondtransfereruniqueid']==_0x18d896['secondtransfererlinkedid']){if(!_['isNil'](agents[_0x18d896[_0x8c78('0x48')]])){utils['info'](util['format']('[%s][agents][attendedtransfer]\x20agent:%s',_0x18d896[_0x8c78('0x48')],agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0x8')]));agents[_0x18d896[_0x8c78('0x48')]]['transfer']=!![];agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0x42')]=_0x8c78('0x4b');agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0x43')]=_0x18d896[_0x8c78('0x51')];agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0x45')]=_0x18d896[_0x8c78('0x49')];}if(_0x18d896[_0x8c78('0x52')]&&agents[_0x18d896[_0x8c78('0x52')]]){agents[_0x18d896[_0x8c78('0x52')]][_0x8c78('0x50')]=0x1;transfers[_0x18d896[_0x8c78('0x52')]]=_['clone'](agents[_0x18d896[_0x8c78('0x52')]]);transfers[_0x18d896['transfertargetuniqueid']][_0x8c78('0xa')]=agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0xa')];transfers[_0x18d896['transfertargetuniqueid']][_0x8c78('0x4f')]=agents[_0x18d896[_0x8c78('0x48')]][_0x8c78('0x4f')];transfers[_0x18d896['transfertargetuniqueid']][_0x8c78('0x1a')]=utils[_0x8c78('0x1b')]();transfers[_0x18d896['transfertargetuniqueid']][_0x8c78('0x32')]=utils[_0x8c78('0x1b')]();transfers[_0x18d896[_0x8c78('0x52')]]['holdtime']=0x0;transfers[_0x18d896[_0x8c78('0x52')]][_0x8c78('0x50')]=0x2;}}}catch(_0x1015e8){utils[_0x8c78('0x1f')](util[_0x8c78('0x4')](_0x8c78('0x47'),_0x18d896[_0x8c78('0x48')]),_0x1015e8);}};exports[_0x8c78('0x53')]=function(_0x240f1e){try{utils['debug'](util[_0x8c78('0x4')](_0x8c78('0x54'),_0x240f1e[_0x8c78('0x6')]),_0x240f1e);if(agents[_0x240f1e[_0x8c78('0x6')]]&&agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2e')]===_0x8c78('0x23')){if(_0x240f1e[_0x8c78('0x55')]==='21'){agents[_0x240f1e[_0x8c78('0x6')]]['reason']=_0x8c78('0x56');agents[_0x240f1e[_0x8c78('0x6')]]['lastevent']='rejected';}utils[_0x8c78('0x3')](util['format'](_0x8c78('0x57'),_0x240f1e[_0x8c78('0x6')],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x8')],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2e')],agents[_0x240f1e['uniqueid']]['lastevent']));writeDB(agents[_0x240f1e[_0x8c78('0x6')]]);var _0x2d385f=unanswered[_0x8c78('0x58')](_0x240f1e[_0x8c78('0x6')]);if(_0x2d385f>-0x1){unanswered[_0x8c78('0x59')](_0x2d385f,0x1);}}if(transfers[_0x240f1e['uniqueid']]){transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x11')]=!![];transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x39')]=utils[_0x8c78('0x1b')]();transfers[_0x240f1e[_0x8c78('0x6')]]['talktime']=utils[_0x8c78('0x3a')](transfers[_0x240f1e[_0x8c78('0x6')]]['agentcompleteAt'],transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x32')]);transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2e')]=_0x8c78('0x5a');transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0xc')]=_0x8c78('0x3b');utils[_0x8c78('0x3')](util[_0x8c78('0x4')](_0x8c78('0x57'),_0x240f1e[_0x8c78('0x6')],transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x8')],transfers[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2e')],transfers[_0x240f1e[_0x8c78('0x6')]]['lastevent']));writeDB(transfers[_0x240f1e[_0x8c78('0x6')]],!![]);}if(agents[_0x240f1e['uniqueid']]&&agents[_0x240f1e['uniqueid']][_0x8c78('0x32')]){agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x11')]=!![];agents[_0x240f1e[_0x8c78('0x6')]]['agentcompleteAt']=utils[_0x8c78('0x1b')]();agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2f')]=utils['diffTime'](agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x39')],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x32')]);agents[_0x240f1e['uniqueid']][_0x8c78('0x2e')]=agents[_0x240f1e[_0x8c78('0x6')]]['transfer']?'transfer':'agent';agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0xc')]=_0x8c78('0x3b');utils[_0x8c78('0x3')](util['format'](_0x8c78('0x57'),_0x240f1e['uniqueid'],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x8')],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0x2e')],agents[_0x240f1e[_0x8c78('0x6')]][_0x8c78('0xc')]));writeDB(agents[_0x240f1e['uniqueid']]);}}catch(_0x5c67c9){utils['error'](util[_0x8c78('0x4')](_0x8c78('0x54'),_0x240f1e['uniqueid']),_0x5c67c9);}};
\ No newline at end of file
+var _0x4ded=['agentcompleteAt','agentconnectAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','transfertype','ATTENDED','transferexten','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfererexten','transfertargetuniqueid','hangup','cause','rejected','indexOf','splice','agent','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','agentcomplete','acw','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','ringtime','talktime','error','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','[%s][agents][agentcomplete]','diffTime'];(function(_0x39491d,_0x40dbb6){var _0xaff30=function(_0xbe1e0d){while(--_0xbe1e0d){_0x39491d['push'](_0x39491d['shift']());}};_0xaff30(++_0x40dbb6);}(_0x4ded,0x116));var _0xd4de=function(_0x4a2b9d,_0x13f473){_0x4a2b9d=_0x4a2b9d-0x0;var _0x4cfed0=_0x4ded[_0x4a2b9d];return _0x4cfed0;};'use strict';var _=require(_0xd4de('0x0'));var util=require(_0xd4de('0x1'));var utils=require(_0xd4de('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x1fa334,_0x2349f5){utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x5'),_0x1fa334[_0xd4de('0x6')],_0x1fa334[_0xd4de('0x7')],_0x1fa334[_0xd4de('0x8')],_0x1fa334[_0xd4de('0x9')],_0x1fa334['interface'],_0x1fa334[_0xd4de('0xa')],_0x1fa334[_0xd4de('0xb')],_0x1fa334[_0xd4de('0xc')]));if(_0x1fa334[_0xd4de('0x8')]){utils[_0xd4de('0xd')](_0x1fa334[_0xd4de('0x8')])['then'](function(_0xb7e8cf){if(_0xb7e8cf){_0x1fa334['type']=_0xb7e8cf['type'];_0x1fa334['agentacw']=_0x1fa334[_0xd4de('0xe')]?_0xb7e8cf[_0xd4de('0xf')]:![];_0x1fa334['acwtime']=_0x1fa334['agentacw']?_0xb7e8cf['acwTimeout']:0x0;}utils[_0xd4de('0x10')]('CreateVoiceAgentReport',_0x1fa334);});}else{utils[_0xd4de('0x10')](_0xd4de('0x11'),_0x1fa334);}if(_0x2349f5){delete transfers[_0x1fa334[_0xd4de('0x6')]];}else{delete agents[_0x1fa334[_0xd4de('0x12')]];}}exports[_0xd4de('0x13')]=function(_0x3af6e0){try{utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x15'),_0x3af6e0[_0xd4de('0x6')]),_0x3af6e0);agents[_0x3af6e0[_0xd4de('0x12')]]=_0x3af6e0;agents[_0x3af6e0[_0xd4de('0x12')]][_0xd4de('0x16')]=utils[_0xd4de('0x17')]();agents[_0x3af6e0[_0xd4de('0x12')]][_0xd4de('0xc')]=_0xd4de('0x18');agents[_0x3af6e0['destuniqueid']]['connectedlinenum']=null;agents[_0x3af6e0[_0xd4de('0x12')]][_0xd4de('0x19')]=null;utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x3af6e0['uniqueid'],agents[_0x3af6e0[_0xd4de('0x12')]]['membername'],_0x3af6e0[_0xd4de('0x12')]));}catch(_0x29c028){utils['error'](util[_0xd4de('0x4')]('[%s][agents][agentcalled]',_0x3af6e0[_0xd4de('0x6')]),_0x29c028);}};exports[_0xd4de('0x1a')]=function(_0x2bad14){try{if(!_[_0xd4de('0x1b')](agents[_0x2bad14['destuniqueid']])){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x1c'),_0x2bad14[_0xd4de('0x6')]),_0x2bad14);utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x1d'),_0x2bad14[_0xd4de('0x6')],agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x9')],_0x2bad14['destuniqueid']));agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x1a')]=!![];agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x1e')]=utils[_0xd4de('0x17')]();agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0xc')]=_0xd4de('0x1f');agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x20')]=_0xd4de('0x1f');agents[_0x2bad14[_0xd4de('0x12')]]['holdtime']=_0x2bad14[_0xd4de('0x21')]?parseInt(_0x2bad14[_0xd4de('0x21')])/0x3e8:0x0;agents[_0x2bad14['destuniqueid']][_0xd4de('0x22')]=0x0;unanswered['push'](_0x2bad14[_0xd4de('0x12')]);}}catch(_0x32e407){utils[_0xd4de('0x23')](util['format'](_0xd4de('0x1c'),_0x2bad14[_0xd4de('0x6')]),_0x32e407);}};exports[_0xd4de('0x24')]=function(_0x50cb73){try{_[_0xd4de('0x25')](agents,function(_0x1804c7,_0x55f9f9){if(_0x1804c7['uniqueid']==_0x50cb73['uniqueid']&&!_[_0xd4de('0x26')](unanswered,_0x1804c7['destuniqueid'])){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x27'),_0x50cb73[_0xd4de('0x6')]),_0x50cb73);utils['info'](util[_0xd4de('0x4')](_0xd4de('0x28'),_0x50cb73['uniqueid'],_0x1804c7[_0xd4de('0x9')],_0x1804c7[_0xd4de('0x12')]));_0x1804c7['agentringnoanswer']=!![];_0x1804c7['agentringnoanswerAt']=utils[_0xd4de('0x17')]();_0x1804c7[_0xd4de('0xc')]=_0xd4de('0x29');_0x1804c7[_0xd4de('0x20')]='abandoned';_0x1804c7[_0xd4de('0x2a')]=_0x50cb73[_0xd4de('0x2a')];_0x1804c7['talktime']=0x0;writeDB(_0x1804c7);}});}catch(_0x329d49){utils[_0xd4de('0x23')](util[_0xd4de('0x4')](_0xd4de('0x27'),_0x50cb73[_0xd4de('0x6')]),_0x329d49);}};exports[_0xd4de('0x2b')]=function(_0x53441c){try{if(agents[_0x53441c['destuniqueid']]){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x2c'),_0x53441c['uniqueid']),_0x53441c);utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x53441c[_0xd4de('0x6')],agents[_0x53441c[_0xd4de('0x12')]][_0xd4de('0x9')],_0x53441c[_0xd4de('0x12')]));agents[_0x53441c['destuniqueid']]['agentconnectAt']=utils[_0xd4de('0x17')]();agents[_0x53441c['destuniqueid']][_0xd4de('0xb')]=_0x53441c['connectedlinenum'];agents[_0x53441c[_0xd4de('0x12')]][_0xd4de('0x19')]=_0x53441c[_0xd4de('0x19')];agents[_0x53441c[_0xd4de('0x12')]]['holdtime']=_0x53441c[_0xd4de('0x21')];agents[_0x53441c['destuniqueid']][_0xd4de('0xc')]=_0xd4de('0x2d');_[_0xd4de('0x25')](agents,function(_0x4517a6,_0x349c5f){if(_0x4517a6[_0xd4de('0x12')]!=_0x53441c[_0xd4de('0x12')]&&_0x4517a6['uniqueid']==_0x53441c[_0xd4de('0x6')]){_0x4517a6[_0xd4de('0x22')]=0x0;_0x4517a6[_0xd4de('0x2a')]=_0x53441c[_0xd4de('0x21')];_0x4517a6[_0xd4de('0x1a')]=!![];_0x4517a6['agentringnoanswerAt']=utils[_0xd4de('0x17')]();_0x4517a6[_0xd4de('0xc')]=_0xd4de('0x2e');_0x4517a6['reason']=_0xd4de('0x2e');_0x4517a6[_0xd4de('0x2f')]=_0x53441c[_0xd4de('0x12')];_0x4517a6['answeredelsewheremembername']=_0x53441c[_0xd4de('0x9')];writeDB(_0x4517a6);}});}}catch(_0x10a42c){utils[_0xd4de('0x23')](util[_0xd4de('0x4')](_0xd4de('0x2c'),_0x53441c[_0xd4de('0x6')]),_0x10a42c);}};exports[_0xd4de('0xe')]=function(_0x5ecbbd){try{if(!_[_0xd4de('0x1b')](agents[_0x5ecbbd[_0xd4de('0x12')]])){utils[_0xd4de('0x14')](util['format'](_0xd4de('0x30'),_0x5ecbbd[_0xd4de('0x6')]),_0x5ecbbd);utils[_0xd4de('0x3')](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x5ecbbd[_0xd4de('0x6')],agents[_0x5ecbbd[_0xd4de('0x12')]]['membername'],_0x5ecbbd[_0xd4de('0x12')]));agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0xe')]=!![];agents[_0x5ecbbd[_0xd4de('0x12')]]['agentcompleteAt']=utils[_0xd4de('0x17')]();agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0x22')]=utils[_0xd4de('0x31')](agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0x32')],agents[_0x5ecbbd['destuniqueid']][_0xd4de('0x33')]);agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0x20')]=_0x5ecbbd[_0xd4de('0x20')];agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0xc')]=_0xd4de('0x34');writeDB(agents[_0x5ecbbd[_0xd4de('0x12')]]);}}catch(_0xaf442c){utils[_0xd4de('0x23')](util['format'](_0xd4de('0x30'),_0x5ecbbd[_0xd4de('0x6')]),_0xaf442c);}};exports[_0xd4de('0x35')]=function(_0x518bfe){try{if(!_[_0xd4de('0x1b')](agents[_0x518bfe[_0xd4de('0x36')]])){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x37'),_0x518bfe[_0xd4de('0x6')]),_0x518bfe);utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x38'),_0x518bfe[_0xd4de('0x6')],agents[_0x518bfe['transfereruniqueid']][_0xd4de('0x9')],agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x6')]));agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x39')]=!![];agents[_0x518bfe['transfereruniqueid']]['transfertype']=_0xd4de('0x3a');agents[_0x518bfe[_0xd4de('0x36')]]['transferexten']=_0x518bfe['extension'];agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x3b')]=agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x6')];}}catch(_0x34d772){utils[_0xd4de('0x23')](util[_0xd4de('0x4')](_0xd4de('0x37'),_0x518bfe[_0xd4de('0x6')]),_0x34d772);}};exports[_0xd4de('0x3c')]=function(_0x3be8c2){try{utils[_0xd4de('0x14')](util['format'](_0xd4de('0x3d'),_0x3be8c2[_0xd4de('0x3e')]),_0x3be8c2);if(_0x3be8c2[_0xd4de('0x3e')]==_0x3be8c2[_0xd4de('0x3f')]){if(!_[_0xd4de('0x1b')](agents[_0x3be8c2[_0xd4de('0x40')]])){utils['info'](util[_0xd4de('0x4')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x3be8c2['origtransfereruniqueid'],agents[_0x3be8c2[_0xd4de('0x40')]][_0xd4de('0x9')]));agents[_0x3be8c2[_0xd4de('0x40')]][_0xd4de('0x39')]=!![];agents[_0x3be8c2['secondtransfereruniqueid']][_0xd4de('0x41')]=_0xd4de('0x42');agents[_0x3be8c2[_0xd4de('0x40')]][_0xd4de('0x43')]=_0x3be8c2[_0xd4de('0x44')];agents[_0x3be8c2['secondtransfereruniqueid']]['transferuniqueid']=_0x3be8c2['origtransfereruniqueid'];}if(_0x3be8c2[_0xd4de('0x45')]&&agents[_0x3be8c2[_0xd4de('0x45')]]){agents[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x46')]=0x1;transfers[_0x3be8c2['transfereeuniqueid']]=_[_0xd4de('0x47')](agents[_0x3be8c2[_0xd4de('0x45')]]);transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0xa')]=agents[_0x3be8c2['secondtransfereruniqueid']][_0xd4de('0xa')];transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x48')]=agents[_0x3be8c2[_0xd4de('0x40')]]['calleridname'];transfers[_0x3be8c2['transfereeuniqueid']]['agentcalledAt']=utils[_0xd4de('0x17')]();transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x33')]=utils['now']();transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x2a')]=0x0;transfers[_0x3be8c2[_0xd4de('0x45')]]['agententerreason']=0x2;}}else if(_0x3be8c2[_0xd4de('0x40')]==_0x3be8c2['secondtransfererlinkedid']){if(!_[_0xd4de('0x1b')](agents[_0x3be8c2[_0xd4de('0x3e')]])){utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x49'),_0x3be8c2[_0xd4de('0x3e')],agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0x9')]));agents[_0x3be8c2['origtransfereruniqueid']][_0xd4de('0x39')]=!![];agents[_0x3be8c2['origtransfereruniqueid']][_0xd4de('0x41')]=_0xd4de('0x42');agents[_0x3be8c2['origtransfereruniqueid']][_0xd4de('0x43')]=_0x3be8c2[_0xd4de('0x4a')];agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0x3b')]=_0x3be8c2[_0xd4de('0x40')];}if(_0x3be8c2[_0xd4de('0x4b')]&&agents[_0x3be8c2[_0xd4de('0x4b')]]){agents[_0x3be8c2[_0xd4de('0x4b')]][_0xd4de('0x46')]=0x1;transfers[_0x3be8c2[_0xd4de('0x4b')]]=_[_0xd4de('0x47')](agents[_0x3be8c2[_0xd4de('0x4b')]]);transfers[_0x3be8c2[_0xd4de('0x4b')]]['calleridnum']=agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0xa')];transfers[_0x3be8c2[_0xd4de('0x4b')]][_0xd4de('0x48')]=agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0x48')];transfers[_0x3be8c2[_0xd4de('0x4b')]][_0xd4de('0x16')]=utils['now']();transfers[_0x3be8c2[_0xd4de('0x4b')]]['agentconnectAt']=utils['now']();transfers[_0x3be8c2['transfertargetuniqueid']][_0xd4de('0x2a')]=0x0;transfers[_0x3be8c2[_0xd4de('0x4b')]]['agententerreason']=0x2;}}}catch(_0x4a06b2){utils['error'](util['format'](_0xd4de('0x3d'),_0x3be8c2['origtransfereruniqueid']),_0x4a06b2);}};exports[_0xd4de('0x4c')]=function(_0x5ddba5){try{utils[_0xd4de('0x14')](util[_0xd4de('0x4')]('[%s][agents][hangup]',_0x5ddba5['uniqueid']),_0x5ddba5);if(agents[_0x5ddba5['uniqueid']]&&agents[_0x5ddba5['uniqueid']][_0xd4de('0x20')]===_0xd4de('0x1f')){if(_0x5ddba5[_0xd4de('0x4d')]==='21'){agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')]=_0xd4de('0x4e');agents[_0x5ddba5['uniqueid']]['lastevent']='rejected';}utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5ddba5[_0xd4de('0x6')],agents[_0x5ddba5['uniqueid']][_0xd4de('0x9')],agents[_0x5ddba5['uniqueid']][_0xd4de('0x20')],agents[_0x5ddba5[_0xd4de('0x6')]]['lastevent']));writeDB(agents[_0x5ddba5[_0xd4de('0x6')]]);var _0x5a4882=unanswered[_0xd4de('0x4f')](_0x5ddba5[_0xd4de('0x6')]);if(_0x5a4882>-0x1){unanswered[_0xd4de('0x50')](_0x5a4882,0x1);}}if(transfers[_0x5ddba5[_0xd4de('0x6')]]){transfers[_0x5ddba5['uniqueid']][_0xd4de('0xe')]=!![];transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x32')]=utils[_0xd4de('0x17')]();transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x22')]=utils[_0xd4de('0x31')](transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x32')],transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x33')]);transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')]='agent';transfers[_0x5ddba5[_0xd4de('0x6')]]['lastevent']='complete';utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5ddba5[_0xd4de('0x6')],transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x9')],transfers[_0x5ddba5[_0xd4de('0x6')]]['reason'],transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0xc')]));writeDB(transfers[_0x5ddba5[_0xd4de('0x6')]],!![]);}if(agents[_0x5ddba5[_0xd4de('0x6')]]&&agents[_0x5ddba5[_0xd4de('0x6')]]['agentconnectAt']){agents[_0x5ddba5['uniqueid']]['agentcomplete']=!![];agents[_0x5ddba5['uniqueid']][_0xd4de('0x32')]=utils['now']();agents[_0x5ddba5[_0xd4de('0x6')]]['talktime']=utils[_0xd4de('0x31')](agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x32')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x33')]);agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')]=agents[_0x5ddba5[_0xd4de('0x6')]]['transfer']?_0xd4de('0x39'):_0xd4de('0x51');agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0xc')]='complete';utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5ddba5[_0xd4de('0x6')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x9')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0xc')]));writeDB(agents[_0x5ddba5[_0xd4de('0x6')]]);}}catch(_0x27fd09){utils[_0xd4de('0x23')](util[_0xd4de('0x4')]('[%s][agents][hangup]',_0x5ddba5[_0xd4de('0x6')]),_0x27fd09);}};
\ No newline at end of file
index d2c48ef..4119e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1427=['lastapplication','Queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','substring','lastIndexOf','hangup','execif','util','./utils','FAILED','NO\x20ANSWER','ANSWERED','blinds','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','request','CreateVoiceCallReport','newchannel','debug','linkedid','exten','context','now','DOCUMENTATION','newstate','[%s][calls][newstate]','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','diffTime','endtime','starttime','billableseconds','error','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','variable','xmd-phone','\x22\x20<','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid','xmd-queue','xmcs-queue'];(function(_0x1d3db5,_0x3fa1d6){var _0x3123fe=function(_0x1f6c8b){while(--_0x1f6c8b){_0x1d3db5['push'](_0x1d3db5['shift']());}};_0x3123fe(++_0x3fa1d6);}(_0x1427,0x7e));var _0x7142=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1427[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x7142('0x0'));var utils=require(_0x7142('0x1'));var transfers=require('./transfers.controller');var dispositions=['NO\x20ANSWER',_0x7142('0x2'),_0x7142('0x2'),_0x7142('0x3'),_0x7142('0x3'),_0x7142('0x3'),_0x7142('0x4'),'BUSY',_0x7142('0x2'),_0x7142('0x2'),_0x7142('0x2')];var channels={};function writeDB(_0x110382){var _0x1eddb2;if(transfers[_0x7142('0x5')][_0x110382['uniqueid']]){_0x1eddb2=_0x110382['uniqueid'];_0x110382['uniqueid']=transfers[_0x7142('0x5')][_0x110382['uniqueid']][_0x7142('0x6')];}utils[_0x7142('0x7')](util[_0x7142('0x8')](_0x7142('0x9'),_0x110382[_0x7142('0xa')],_0x110382[_0x7142('0xb')],_0x110382[_0x7142('0xc')],_0x110382[_0x7142('0xd')],_0x110382[_0x7142('0xe')],_0x110382[_0x7142('0xf')],_0x110382[_0x7142('0x10')],_0x110382[_0x7142('0x11')]));if(_0x110382[_0x7142('0x12')]){utils[_0x7142('0x13')](_0x110382[_0x7142('0x12')])['then'](function(_0x3313a2){if(_0x3313a2){_0x110382['UserId']=_0x3313a2['id'];}utils[_0x7142('0x14')](_0x7142('0x15'),_0x110382);});}else{utils['request'](_0x7142('0x15'),_0x110382);}if(channels[_0x110382['uniqueid']]){delete channels[_0x110382[_0x7142('0xa')]];}else if(_0x1eddb2&&channels[_0x1eddb2]){delete transfers[_0x7142('0x5')][_0x1eddb2];delete channels[_0x1eddb2];}}exports[_0x7142('0x16')]=function(_0x8d2521){try{utils[_0x7142('0x17')](util[_0x7142('0x8')]('[%s][calls][newchannel]',_0x8d2521['uniqueid']),_0x8d2521);if(_0x8d2521[_0x7142('0xa')]==_0x8d2521[_0x7142('0x18')]&&_0x8d2521[_0x7142('0xb')]!='OutgoingSpoolFailed'){utils[_0x7142('0x7')](util['format']('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x8d2521[_0x7142('0xa')],_0x8d2521['context'],_0x8d2521['exten']));channels[_0x8d2521['uniqueid']]={'uniqueid':_0x8d2521['uniqueid'],'accountcode':_0x8d2521[_0x7142('0x12')],'source':_0x8d2521['calleridnum'],'destination':_0x8d2521[_0x7142('0x19')],'destinationcontext':_0x8d2521[_0x7142('0x1a')],'channel':_0x8d2521['channel'],'starttime':utils[_0x7142('0x1b')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x7142('0x3'),'amaflags':_0x7142('0x1c')};}}catch(_0x2b0db6){utils['error'](util[_0x7142('0x8')]('[%s][calls][newchannel]',_0x8d2521['uniqueid']),_0x2b0db6);}};exports[_0x7142('0x1d')]=function(_0x4a7f00){try{utils[_0x7142('0x17')](util['format'](_0x7142('0x1e'),_0x4a7f00[_0x7142('0xa')]),_0x4a7f00);if(!_['isNil'](channels[_0x4a7f00[_0x7142('0xa')]])&&_0x4a7f00[_0x7142('0x1f')]==0x6){utils['info'](util[_0x7142('0x8')](_0x7142('0x20'),_0x4a7f00[_0x7142('0xa')],_0x4a7f00[_0x7142('0x1a')],_0x4a7f00['channel']));if(_[_0x7142('0x21')](channels[_0x4a7f00[_0x7142('0xa')]][_0x7142('0x22')])){channels[_0x4a7f00[_0x7142('0xa')]][_0x7142('0x22')]=utils['now']();}}else if(!_['isNil'](channels[_0x4a7f00['linkedid']])&&_0x4a7f00[_0x7142('0x1f')]==0x6&&_0x4a7f00['context']!=_0x7142('0x23')){utils[_0x7142('0x7')](util[_0x7142('0x8')](_0x7142('0x24'),_0x4a7f00[_0x7142('0xa')],_0x4a7f00[_0x7142('0x18')],_0x4a7f00[_0x7142('0x1a')],_0x4a7f00[_0x7142('0xb')]));channels[_0x4a7f00[_0x7142('0x18')]][_0x7142('0x12')]=_0x4a7f00['accountcode'];channels[_0x4a7f00[_0x7142('0x18')]][_0x7142('0x25')]=_0x4a7f00[_0x7142('0xb')];if(_['isNil'](channels[_0x4a7f00[_0x7142('0x18')]]['answertime'])){channels[_0x4a7f00[_0x7142('0x18')]][_0x7142('0x26')]=utils[_0x7142('0x1b')]();}channels[_0x4a7f00[_0x7142('0x18')]]['disposition']=dispositions[_['toNumber'](_0x4a7f00[_0x7142('0x1f')])]||_0x7142('0x4');}}catch(_0x179a02){utils['error'](util[_0x7142('0x8')](_0x7142('0x1e'),_0x4a7f00['uniqueid']),_0x179a02);}};exports['hangup']=function(_0x31cf1e){try{if(!_[_0x7142('0x21')](channels[_0x31cf1e[_0x7142('0xa')]])){utils[_0x7142('0x17')](util['format'](_0x7142('0x27'),_0x31cf1e[_0x7142('0xa')]),_0x31cf1e);if(_['isNil'](channels[_0x31cf1e[_0x7142('0xa')]][_0x7142('0x28')])){channels[_0x31cf1e[_0x7142('0xa')]][_0x7142('0x28')]=_0x31cf1e[_0x7142('0x29')]+'\x20<'+_0x31cf1e[_0x7142('0xf')]+'>';}utils['info'](util[_0x7142('0x8')](_0x7142('0x2a'),_0x31cf1e[_0x7142('0xa')],channels[_0x31cf1e[_0x7142('0xa')]]['callerid'],_0x31cf1e[_0x7142('0x2b')]));channels[_0x31cf1e['uniqueid']]['endtime']=utils[_0x7142('0x1b')]();channels[_0x31cf1e[_0x7142('0xa')]]['duration']=utils[_0x7142('0x2c')](channels[_0x31cf1e['uniqueid']][_0x7142('0x2d')],channels[_0x31cf1e[_0x7142('0xa')]][_0x7142('0x2e')]);channels[_0x31cf1e['uniqueid']][_0x7142('0x2f')]=channels[_0x31cf1e[_0x7142('0xa')]][_0x7142('0x26')]?utils[_0x7142('0x2c')](channels[_0x31cf1e[_0x7142('0xa')]][_0x7142('0x2d')],channels[_0x31cf1e[_0x7142('0xa')]][_0x7142('0x26')]):0x0;writeDB(channels[_0x31cf1e[_0x7142('0xa')]]);}}catch(_0x1c42ba){utils[_0x7142('0x30')](util['format'](_0x7142('0x27'),_0x31cf1e[_0x7142('0xa')]),_0x1c42ba);}};exports[_0x7142('0x31')]=function(_0x3fed3b){try{if(!_[_0x7142('0x21')](channels[_0x3fed3b[_0x7142('0x32')]])){utils['debug'](util[_0x7142('0x8')](_0x7142('0x33'),_0x3fed3b['origtransfereruniqueid']),_0x3fed3b);if(channels[_0x3fed3b[_0x7142('0x32')]][_0x7142('0xb')]==_0x3fed3b[_0x7142('0x34')]){utils[_0x7142('0x7')](util[_0x7142('0x8')](_0x7142('0x35'),_0x3fed3b[_0x7142('0x36')],_0x3fed3b[_0x7142('0x32')],_0x3fed3b[_0x7142('0x37')]));channels[_0x3fed3b['localtwolinkedid']][_0x7142('0x25')]=_0x3fed3b['secondtransfererchannel'];channels[_0x3fed3b[_0x7142('0x32')]][_0x7142('0x38')]=_0x7142('0x39');}else if(channels[_0x3fed3b[_0x7142('0x32')]][_0x7142('0xb')]=_0x3fed3b['transfertargetchannel']){utils[_0x7142('0x7')](util[_0x7142('0x8')](_0x7142('0x35'),_0x3fed3b[_0x7142('0x36')],_0x3fed3b[_0x7142('0x32')],_0x3fed3b['origtransfererchannel']));channels[_0x3fed3b['localtwolinkedid']][_0x7142('0x25')]=_0x3fed3b['origtransfererchannel'];channels[_0x3fed3b[_0x7142('0x32')]][_0x7142('0x38')]=_0x7142('0x39');}}}catch(_0x4f5a8b){utils['error'](util[_0x7142('0x8')](_0x7142('0x33'),_0x3fed3b['origtransfereruniqueid']),_0x4f5a8b);}};exports[_0x7142('0x3a')]=function(_0x5234c2){try{if(!_['isNil'](channels[_0x5234c2[_0x7142('0xa')]])){utils[_0x7142('0x17')](util[_0x7142('0x8')](_0x7142('0x3b'),_0x5234c2[_0x7142('0xa')]),_0x5234c2);channels[_0x5234c2[_0x7142('0xa')]]['musiconholdstartAt']=utils['now']();utils[_0x7142('0x7')](util['format']('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x5234c2[_0x7142('0xa')],channels[_0x5234c2[_0x7142('0xa')]][_0x7142('0x3c')]));}}catch(_0x2e0d12){utils[_0x7142('0x30')](util[_0x7142('0x8')](_0x7142('0x3b'),_0x5234c2['uniqueid']),_0x2e0d12);}};exports[_0x7142('0x3d')]=function(_0x3e4a51){try{if(!_[_0x7142('0x21')](channels[_0x3e4a51[_0x7142('0xa')]])){utils[_0x7142('0x17')](util['format'](_0x7142('0x3e'),_0x3e4a51[_0x7142('0xa')]),_0x3e4a51);if(!_[_0x7142('0x21')](channels[_0x3e4a51[_0x7142('0xa')]]['musiconholdstartAt'])){channels[_0x3e4a51['uniqueid']][_0x7142('0x3f')]+=utils['diffTime'](utils['now'](),channels[_0x3e4a51[_0x7142('0xa')]][_0x7142('0x3c')]);utils[_0x7142('0x7')](util[_0x7142('0x8')](_0x7142('0x40'),_0x3e4a51['uniqueid'],channels[_0x3e4a51['uniqueid']]['mohtime']));delete channels[_0x3e4a51['uniqueid']][_0x7142('0x3c')];}}}catch(_0xbbe0e6){utils['error'](util['format'](_0x7142('0x3e'),_0x3e4a51[_0x7142('0xa')]),_0xbbe0e6);}};exports[_0x7142('0x41')]=function(_0x54830d){try{if(!_[_0x7142('0x21')](channels[_0x54830d[_0x7142('0xa')]])){utils[_0x7142('0x17')](util['format'](_0x7142('0x42'),_0x54830d[_0x7142('0xa')]),_0x54830d);if(!_[_0x7142('0x21')](_0x54830d['variable']['xmd-originatecalleridnum'])){utils[_0x7142('0x7')](util['format'](_0x7142('0x43'),_0x54830d[_0x7142('0xa')],_0x54830d[_0x7142('0x44')]));channels[_0x54830d[_0x7142('0xa')]][_0x7142('0x45')]=_0x54830d[_0x7142('0x44')];}if(!_[_0x7142('0x21')](_0x54830d[_0x7142('0x46')][_0x7142('0x47')])){utils[_0x7142('0x7')](util[_0x7142('0x8')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x54830d[_0x7142('0xa')],_0x54830d[_0x7142('0x44')]));channels[_0x54830d['uniqueid']]['destination']=_0x54830d['value'];channels[_0x54830d[_0x7142('0xa')]][_0x7142('0x28')]='\x22'+_0x54830d['value']+_0x7142('0x48')+_0x54830d[_0x7142('0x44')]+'>';}if(!_['isNil'](_0x54830d['variable'][_0x7142('0x49')])||!_[_0x7142('0x21')](_0x54830d[_0x7142('0x46')]['xmd-callerid'])){utils[_0x7142('0x7')](util[_0x7142('0x8')](_0x7142('0x4a'),_0x54830d[_0x7142('0xa')],!_[_0x7142('0x21')](_0x54830d[_0x7142('0x46')]['xmd-callerid-preview'])?_0x7142('0x49'):_0x7142('0x4b'),_0x54830d['value']));channels[_0x54830d[_0x7142('0xa')]][_0x7142('0x28')]=_0x54830d[_0x7142('0x44')];}if(!_[_0x7142('0x21')](_0x54830d[_0x7142('0x46')][_0x7142('0x4c')])||!_[_0x7142('0x21')](_0x54830d[_0x7142('0x46')]['xmcs-queue'])){utils[_0x7142('0x7')](util[_0x7142('0x8')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x54830d[_0x7142('0xa')],!_[_0x7142('0x21')](_0x54830d[_0x7142('0x46')][_0x7142('0x4c')])?'xmd-queue':_0x7142('0x4d'),_0x54830d[_0x7142('0x44')]));channels[_0x54830d[_0x7142('0xa')]][_0x7142('0x4e')]=_0x7142('0x4f');channels[_0x54830d[_0x7142('0xa')]]['lastdata']=_0x54830d['value'];channels[_0x54830d[_0x7142('0xa')]][_0x7142('0xc')]=!![];}if(!_[_0x7142('0x21')](_0x54830d[_0x7142('0x46')][_0x7142('0x50')])){utils[_0x7142('0x7')](util['format'](_0x7142('0x51'),_0x54830d[_0x7142('0xa')],_0x54830d[_0x7142('0x44')]));channels[_0x54830d[_0x7142('0xa')]][_0x7142('0x52')]=_0x54830d[_0x7142('0x44')];}if(!_[_0x7142('0x21')](_0x54830d[_0x7142('0x46')][_0x7142('0x53')])){utils[_0x7142('0x7')](util[_0x7142('0x8')](_0x7142('0x54'),_0x54830d['uniqueid'],_0x54830d[_0x7142('0x44')]));channels[_0x54830d[_0x7142('0xa')]][_0x7142('0x55')]=_0x54830d[_0x7142('0x44')];}if(!_[_0x7142('0x21')](_0x54830d[_0x7142('0x46')]['outboundrouteid'])){utils['info'](util[_0x7142('0x8')](_0x7142('0x56'),_0x54830d[_0x7142('0xa')],_0x54830d[_0x7142('0x44')]));channels[_0x54830d[_0x7142('0xa')]]['routeid']=_0x54830d[_0x7142('0x44')];}if(!_['isNil'](_0x54830d[_0x7142('0x46')][_0x7142('0x57')])){utils[_0x7142('0x7')](util[_0x7142('0x8')](_0x7142('0x58'),_0x54830d[_0x7142('0xa')],_0x54830d[_0x7142('0x44')]));channels[_0x54830d[_0x7142('0xa')]][_0x7142('0x57')]=_0x54830d[_0x7142('0x44')];}}}catch(_0x599f15){utils[_0x7142('0x30')](util['format'](_0x7142('0x42'),_0x54830d[_0x7142('0xa')]),_0x599f15);}};exports[_0x7142('0x59')]=function(_0x206659){try{if(!_[_0x7142('0x21')](channels[_0x206659['uniqueid']])){utils[_0x7142('0x17')](util[_0x7142('0x8')](_0x7142('0x5a'),_0x206659['uniqueid']),_0x206659);utils[_0x7142('0x7')](util[_0x7142('0x8')](_0x7142('0x5b'),_0x206659[_0x7142('0xa')],_0x206659[_0x7142('0x5c')],_0x206659[_0x7142('0x5d')]));if(_0x206659['application'][_0x7142('0x5e')]()==_0x7142('0x5f')&&_[_0x7142('0x60')](_0x206659[_0x7142('0x5d')][_0x7142('0x5e')](),_0x7142('0x61'))){var _0x16057c=_0x206659['appdata']['split']('=');var _0x4e0c70=_0x16057c[0x0][_0x7142('0x62')](_0x16057c[0x0][_0x7142('0x63')]('(')+0x1,_0x16057c[0x0][_0x7142('0x63')](')'));var _0xae028e=_0x16057c[0x1];channels[_0x206659[_0x7142('0xa')]][_0x4e0c70]=_0xae028e;}if(!_['includes']([_0x7142('0x64'),'noop',_0x7142('0x65'),_0x7142('0x5f'),'gotoif'],_0x206659[_0x7142('0x5c')][_0x7142('0x5e')]())){channels[_0x206659[_0x7142('0xa')]][_0x7142('0x4e')]=_0x206659[_0x7142('0x5c')];channels[_0x206659[_0x7142('0xa')]]['lastdata']=_0x206659[_0x7142('0x5d')];}}}catch(_0x66960e){utils[_0x7142('0x30')](util[_0x7142('0x8')](_0x7142('0x5a'),_0x206659[_0x7142('0xa')]),_0x66960e);}};
\ No newline at end of file
+var _0xddae=['xmd-phone','destination','\x22\x20<','xmd-callerid','xmd-callerid-preview','xmd-queue','xmcs-queue','lastapplication','lastdata','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','lastIndexOf','includes','noop','execif','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','uniqueid','blinds','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','newchannel','debug','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','calleridnum','now','DOCUMENTATION','error','[%s][calls][newchannel]','newstate','[%s][calls][newstate]','isNil','systemanswertime','channelstate','transfer','destinationchannel','answertime','disposition','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','diffTime','starttime','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','secondtransfererchannel','_attended','transfertargetchannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfererchannel','userfield','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','variable'];(function(_0x479dfd,_0x47ff77){var _0x5b82b4=function(_0x3b0d0c){while(--_0x3b0d0c){_0x479dfd['push'](_0x479dfd['shift']());}};_0x5b82b4(++_0x47ff77);}(_0xddae,0x87));var _0xedda=function(_0x336b73,_0x4b482b){_0x336b73=_0x336b73-0x0;var _0x4daad8=_0xddae[_0x336b73];return _0x4daad8;};'use strict';var _=require(_0xedda('0x0'));var util=require(_0xedda('0x1'));var utils=require(_0xedda('0x2'));var transfers=require(_0xedda('0x3'));var dispositions=[_0xedda('0x4'),_0xedda('0x5'),'FAILED',_0xedda('0x4'),_0xedda('0x4'),_0xedda('0x4'),_0xedda('0x6'),_0xedda('0x7'),_0xedda('0x5'),_0xedda('0x5'),_0xedda('0x5')];var channels={};function writeDB(_0x3f073d){var _0x2691ec;if(transfers['blinds'][_0x3f073d[_0xedda('0x8')]]){_0x2691ec=_0x3f073d[_0xedda('0x8')];_0x3f073d[_0xedda('0x8')]=transfers[_0xedda('0x9')][_0x3f073d[_0xedda('0x8')]][_0xedda('0xa')];}utils[_0xedda('0xb')](util[_0xedda('0xc')](_0xedda('0xd'),_0x3f073d[_0xedda('0x8')],_0x3f073d['channel'],_0x3f073d[_0xedda('0xe')],_0x3f073d['membername'],_0x3f073d[_0xedda('0xf')],_0x3f073d['calleridnum'],_0x3f073d[_0xedda('0x10')],_0x3f073d[_0xedda('0x11')]));if(_0x3f073d[_0xedda('0x12')]){utils[_0xedda('0x13')](_0x3f073d[_0xedda('0x12')])[_0xedda('0x14')](function(_0x468178){if(_0x468178){_0x3f073d[_0xedda('0x15')]=_0x468178['id'];}utils[_0xedda('0x16')]('CreateVoiceCallReport',_0x3f073d);});}else{utils[_0xedda('0x16')]('CreateVoiceCallReport',_0x3f073d);}if(channels[_0x3f073d['uniqueid']]){delete channels[_0x3f073d[_0xedda('0x8')]];}else if(_0x2691ec&&channels[_0x2691ec]){delete transfers[_0xedda('0x9')][_0x2691ec];delete channels[_0x2691ec];}}exports[_0xedda('0x17')]=function(_0xefb03e){try{utils[_0xedda('0x18')](util[_0xedda('0xc')]('[%s][calls][newchannel]',_0xefb03e['uniqueid']),_0xefb03e);if(_0xefb03e[_0xedda('0x8')]==_0xefb03e[_0xedda('0x19')]&&_0xefb03e[_0xedda('0x1a')]!=_0xedda('0x1b')){utils[_0xedda('0xb')](util['format'](_0xedda('0x1c'),_0xefb03e[_0xedda('0x8')],_0xefb03e[_0xedda('0x1d')],_0xefb03e[_0xedda('0x1e')]));channels[_0xefb03e[_0xedda('0x8')]]={'uniqueid':_0xefb03e[_0xedda('0x8')],'accountcode':_0xefb03e[_0xedda('0x12')],'source':_0xefb03e[_0xedda('0x1f')],'destination':_0xefb03e[_0xedda('0x1e')],'destinationcontext':_0xefb03e[_0xedda('0x1d')],'channel':_0xefb03e[_0xedda('0x1a')],'starttime':utils[_0xedda('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0xedda('0x21')};}}catch(_0x2e012a){utils[_0xedda('0x22')](util[_0xedda('0xc')](_0xedda('0x23'),_0xefb03e[_0xedda('0x8')]),_0x2e012a);}};exports[_0xedda('0x24')]=function(_0x1d224a){try{utils[_0xedda('0x18')](util[_0xedda('0xc')](_0xedda('0x25'),_0x1d224a['uniqueid']),_0x1d224a);if(!_[_0xedda('0x26')](channels[_0x1d224a['uniqueid']])&&_0x1d224a['channelstate']==0x6){utils['info'](util[_0xedda('0xc')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x1d224a[_0xedda('0x8')],_0x1d224a['context'],_0x1d224a[_0xedda('0x1a')]));if(_[_0xedda('0x26')](channels[_0x1d224a[_0xedda('0x8')]][_0xedda('0x27')])){channels[_0x1d224a['uniqueid']][_0xedda('0x27')]=utils[_0xedda('0x20')]();}}else if(!_['isNil'](channels[_0x1d224a[_0xedda('0x19')]])&&_0x1d224a[_0xedda('0x28')]==0x6&&_0x1d224a['context']!=_0xedda('0x29')){utils[_0xedda('0xb')](util[_0xedda('0xc')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x1d224a[_0xedda('0x8')],_0x1d224a[_0xedda('0x19')],_0x1d224a['context'],_0x1d224a[_0xedda('0x1a')]));channels[_0x1d224a['linkedid']][_0xedda('0x12')]=_0x1d224a['accountcode'];channels[_0x1d224a[_0xedda('0x19')]][_0xedda('0x2a')]=_0x1d224a[_0xedda('0x1a')];if(_[_0xedda('0x26')](channels[_0x1d224a[_0xedda('0x19')]][_0xedda('0x2b')])){channels[_0x1d224a[_0xedda('0x19')]][_0xedda('0x2b')]=utils[_0xedda('0x20')]();}channels[_0x1d224a[_0xedda('0x19')]][_0xedda('0x2c')]=dispositions[_['toNumber'](_0x1d224a[_0xedda('0x28')])]||_0xedda('0x6');}}catch(_0x4de9f1){utils[_0xedda('0x22')](util[_0xedda('0xc')]('[%s][calls][newstate]',_0x1d224a['uniqueid']),_0x4de9f1);}};exports[_0xedda('0x2d')]=function(_0x2fd0d1){try{if(!_[_0xedda('0x26')](channels[_0x2fd0d1[_0xedda('0x8')]])){utils[_0xedda('0x18')](util['format'](_0xedda('0x2e'),_0x2fd0d1[_0xedda('0x8')]),_0x2fd0d1);if(_[_0xedda('0x26')](channels[_0x2fd0d1[_0xedda('0x8')]][_0xedda('0x2f')])){channels[_0x2fd0d1['uniqueid']][_0xedda('0x2f')]=_0x2fd0d1[_0xedda('0x30')]+'\x20<'+_0x2fd0d1[_0xedda('0x1f')]+'>';}utils[_0xedda('0xb')](util['format'](_0xedda('0x31'),_0x2fd0d1['uniqueid'],channels[_0x2fd0d1[_0xedda('0x8')]][_0xedda('0x2f')],_0x2fd0d1['cause-txt']));channels[_0x2fd0d1['uniqueid']][_0xedda('0x32')]=utils[_0xedda('0x20')]();channels[_0x2fd0d1['uniqueid']]['duration']=utils[_0xedda('0x33')](channels[_0x2fd0d1[_0xedda('0x8')]][_0xedda('0x32')],channels[_0x2fd0d1[_0xedda('0x8')]][_0xedda('0x34')]);channels[_0x2fd0d1[_0xedda('0x8')]]['billableseconds']=channels[_0x2fd0d1[_0xedda('0x8')]]['answertime']?utils[_0xedda('0x33')](channels[_0x2fd0d1[_0xedda('0x8')]][_0xedda('0x32')],channels[_0x2fd0d1['uniqueid']][_0xedda('0x2b')]):0x0;writeDB(channels[_0x2fd0d1['uniqueid']]);}}catch(_0x3bee94){utils[_0xedda('0x22')](util[_0xedda('0xc')](_0xedda('0x2e'),_0x2fd0d1['uniqueid']),_0x3bee94);}};exports[_0xedda('0x35')]=function(_0x264b55){try{if(!_[_0xedda('0x26')](channels[_0x264b55[_0xedda('0x36')]])){utils[_0xedda('0x18')](util[_0xedda('0xc')](_0xedda('0x37'),_0x264b55[_0xedda('0x38')]),_0x264b55);if(channels[_0x264b55['localtwolinkedid']][_0xedda('0x1a')]==_0x264b55['transfereechannel']){utils[_0xedda('0xb')](util[_0xedda('0xc')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x264b55[_0xedda('0x38')],_0x264b55[_0xedda('0x36')],_0x264b55[_0xedda('0x39')]));channels[_0x264b55[_0xedda('0x36')]]['destinationchannel']=_0x264b55['secondtransfererchannel'];channels[_0x264b55['localtwolinkedid']]['userfield']=_0xedda('0x3a');}else if(channels[_0x264b55[_0xedda('0x36')]]['channel']=_0x264b55[_0xedda('0x3b')]){utils[_0xedda('0xb')](util[_0xedda('0xc')](_0xedda('0x3c'),_0x264b55['origtransfereruniqueid'],_0x264b55[_0xedda('0x36')],_0x264b55[_0xedda('0x3d')]));channels[_0x264b55['localtwolinkedid']]['destinationchannel']=_0x264b55['origtransfererchannel'];channels[_0x264b55['localtwolinkedid']][_0xedda('0x3e')]=_0xedda('0x3a');}}}catch(_0x36e9b6){utils[_0xedda('0x22')](util[_0xedda('0xc')]('[%s][calls][attendedtransfer]',_0x264b55[_0xedda('0x38')]),_0x36e9b6);}};exports['musiconholdstart']=function(_0xbc7390){try{if(!_[_0xedda('0x26')](channels[_0xbc7390[_0xedda('0x8')]])){utils[_0xedda('0x18')](util[_0xedda('0xc')]('[%s][calls][musiconholdstart]',_0xbc7390['uniqueid']),_0xbc7390);channels[_0xbc7390['uniqueid']][_0xedda('0x3f')]=utils[_0xedda('0x20')]();utils['info'](util['format'](_0xedda('0x40'),_0xbc7390[_0xedda('0x8')],channels[_0xbc7390[_0xedda('0x8')]][_0xedda('0x3f')]));}}catch(_0x3a4b8a){utils[_0xedda('0x22')](util[_0xedda('0xc')](_0xedda('0x41'),_0xbc7390[_0xedda('0x8')]),_0x3a4b8a);}};exports[_0xedda('0x42')]=function(_0x4882a2){try{if(!_['isNil'](channels[_0x4882a2[_0xedda('0x8')]])){utils['debug'](util[_0xedda('0xc')](_0xedda('0x43'),_0x4882a2[_0xedda('0x8')]),_0x4882a2);if(!_[_0xedda('0x26')](channels[_0x4882a2[_0xedda('0x8')]][_0xedda('0x3f')])){channels[_0x4882a2[_0xedda('0x8')]][_0xedda('0x44')]+=utils[_0xedda('0x33')](utils['now'](),channels[_0x4882a2[_0xedda('0x8')]][_0xedda('0x3f')]);utils[_0xedda('0xb')](util['format'](_0xedda('0x45'),_0x4882a2[_0xedda('0x8')],channels[_0x4882a2['uniqueid']]['mohtime']));delete channels[_0x4882a2['uniqueid']][_0xedda('0x3f')];}}}catch(_0x568ae2){utils[_0xedda('0x22')](util['format'](_0xedda('0x43'),_0x4882a2[_0xedda('0x8')]),_0x568ae2);}};exports[_0xedda('0x46')]=function(_0x596e54){try{if(!_[_0xedda('0x26')](channels[_0x596e54['uniqueid']])){utils[_0xedda('0x18')](util[_0xedda('0xc')](_0xedda('0x47'),_0x596e54[_0xedda('0x8')]),_0x596e54);if(!_[_0xedda('0x26')](_0x596e54['variable'][_0xedda('0x48')])){utils['info'](util['format'](_0xedda('0x49'),_0x596e54[_0xedda('0x8')],_0x596e54['value']));channels[_0x596e54['uniqueid']][_0xedda('0x4a')]=_0x596e54[_0xedda('0x4b')];}if(!_['isNil'](_0x596e54[_0xedda('0x4c')][_0xedda('0x4d')])){utils[_0xedda('0xb')](util[_0xedda('0xc')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x596e54['uniqueid'],_0x596e54['value']));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x4e')]=_0x596e54[_0xedda('0x4b')];channels[_0x596e54[_0xedda('0x8')]]['callerid']='\x22'+_0x596e54[_0xedda('0x4b')]+_0xedda('0x4f')+_0x596e54[_0xedda('0x4b')]+'>';}if(!_[_0xedda('0x26')](_0x596e54[_0xedda('0x4c')]['xmd-callerid-preview'])||!_[_0xedda('0x26')](_0x596e54['variable'][_0xedda('0x50')])){utils[_0xedda('0xb')](util[_0xedda('0xc')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x596e54[_0xedda('0x8')],!_['isNil'](_0x596e54['variable'][_0xedda('0x51')])?'xmd-callerid-preview':_0xedda('0x50'),_0x596e54[_0xedda('0x4b')]));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x2f')]=_0x596e54[_0xedda('0x4b')];}if(!_[_0xedda('0x26')](_0x596e54['variable'][_0xedda('0x52')])||!_['isNil'](_0x596e54[_0xedda('0x4c')][_0xedda('0x53')])){utils[_0xedda('0xb')](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x596e54['uniqueid'],!_[_0xedda('0x26')](_0x596e54[_0xedda('0x4c')][_0xedda('0x52')])?_0xedda('0x52'):_0xedda('0x53'),_0x596e54[_0xedda('0x4b')]));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x54')]='Queue';channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x55')]=_0x596e54['value'];channels[_0x596e54[_0xedda('0x8')]][_0xedda('0xe')]=!![];}if(!_[_0xedda('0x26')](_0x596e54['variable']['xmd-contactid'])){utils['info'](util[_0xedda('0xc')](_0xedda('0x56'),_0x596e54['uniqueid'],_0x596e54['value']));channels[_0x596e54['uniqueid']][_0xedda('0x57')]=_0x596e54[_0xedda('0x4b')];}if(!_[_0xedda('0x26')](_0x596e54[_0xedda('0x4c')][_0xedda('0x58')])){utils[_0xedda('0xb')](util[_0xedda('0xc')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x596e54[_0xedda('0x8')],_0x596e54[_0xedda('0x4b')]));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x59')]=_0x596e54[_0xedda('0x4b')];}if(!_['isNil'](_0x596e54['variable']['outboundrouteid'])){utils[_0xedda('0xb')](util['format'](_0xedda('0x5a'),_0x596e54[_0xedda('0x8')],_0x596e54[_0xedda('0x4b')]));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x5b')]=_0x596e54[_0xedda('0x4b')];}if(!_[_0xedda('0x26')](_0x596e54[_0xedda('0x4c')]['sipcallid'])){utils['info'](util['format'](_0xedda('0x5c'),_0x596e54[_0xedda('0x8')],_0x596e54[_0xedda('0x4b')]));channels[_0x596e54[_0xedda('0x8')]][_0xedda('0x5d')]=_0x596e54['value'];}}}catch(_0x307ca6){utils['error'](util[_0xedda('0xc')](_0xedda('0x47'),_0x596e54[_0xedda('0x8')]),_0x307ca6);}};exports[_0xedda('0x5e')]=function(_0x5a393e){try{if(!_[_0xedda('0x26')](channels[_0x5a393e[_0xedda('0x8')]])){utils[_0xedda('0x18')](util[_0xedda('0xc')](_0xedda('0x5f'),_0x5a393e[_0xedda('0x8')]),_0x5a393e);utils[_0xedda('0xb')](util[_0xedda('0xc')](_0xedda('0x60'),_0x5a393e[_0xedda('0x8')],_0x5a393e[_0xedda('0x61')],_0x5a393e[_0xedda('0x62')]));if(_0x5a393e[_0xedda('0x61')][_0xedda('0x63')]()==_0xedda('0x64')&&_['startsWith'](_0x5a393e[_0xedda('0x62')][_0xedda('0x63')](),_0xedda('0x65'))){var _0x355b41=_0x5a393e['appdata']['split']('=');var _0x2155ec=_0x355b41[0x0]['substring'](_0x355b41[0x0]['lastIndexOf']('(')+0x1,_0x355b41[0x0][_0xedda('0x66')](')'));var _0x5104ca=_0x355b41[0x1];channels[_0x5a393e[_0xedda('0x8')]][_0x2155ec]=_0x5104ca;}if(!_[_0xedda('0x67')]([_0xedda('0x2d'),_0xedda('0x68'),_0xedda('0x69'),_0xedda('0x64'),'gotoif'],_0x5a393e[_0xedda('0x61')][_0xedda('0x63')]())){channels[_0x5a393e[_0xedda('0x8')]][_0xedda('0x54')]=_0x5a393e[_0xedda('0x61')];channels[_0x5a393e['uniqueid']][_0xedda('0x55')]=_0x5a393e['appdata'];}}}catch(_0x25c25c){utils[_0xedda('0x22')](util[_0xedda('0xc')](_0xedda('0x5f'),_0x5a393e['uniqueid']),_0x25c25c);}};
\ No newline at end of file
index 742c653..4e442da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbf7=['fullybooted','[core]\x20fullybooted','error','close','info','[core]\x20connected','shutdown','[core]\x20shutdown'];(function(_0x3a24d9,_0x4ef4d9){var _0x5181d6=function(_0x2bf311){while(--_0x2bf311){_0x3a24d9['push'](_0x3a24d9['shift']());}};_0x5181d6(++_0x4ef4d9);}(_0xfbf7,0xe4));var _0x7fbf=function(_0x18ac1b,_0x1065d8){_0x18ac1b=_0x18ac1b-0x0;var _0x4bd762=_0xfbf7[_0x18ac1b];return _0x4bd762;};'use strict';var utils=require('./utils');exports['connect']=function(){utils[_0x7fbf('0x0')](_0x7fbf('0x1'));};exports[_0x7fbf('0x2')]=function(){utils['info'](_0x7fbf('0x3'));};exports[_0x7fbf('0x4')]=function(){utils[_0x7fbf('0x0')](_0x7fbf('0x5'));};exports[_0x7fbf('0x6')]=function(_0x476fba){utils['error']('[core]\x20error',_0x476fba);};exports[_0x7fbf('0x7')]=function(){utils['info']('[core]\x20close');};exports['managerevent']=function(_0x3b513a){};
\ No newline at end of file
+var _0xf879=['info','[core]\x20connected','shutdown','[core]\x20fullybooted','[core]\x20error','close','[core]\x20close','./utils','connect'];(function(_0x2d2b9d,_0x21a5b8){var _0x304910=function(_0x4da66f){while(--_0x4da66f){_0x2d2b9d['push'](_0x2d2b9d['shift']());}};_0x304910(++_0x21a5b8);}(_0xf879,0x1ed));var _0x9f87=function(_0x4ec771,_0x80beb4){_0x4ec771=_0x4ec771-0x0;var _0x5b6382=_0xf879[_0x4ec771];return _0x5b6382;};'use strict';var utils=require(_0x9f87('0x0'));exports[_0x9f87('0x1')]=function(){utils[_0x9f87('0x2')](_0x9f87('0x3'));};exports[_0x9f87('0x4')]=function(){utils[_0x9f87('0x2')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0x9f87('0x2')](_0x9f87('0x5'));};exports['error']=function(_0x1c40d9){utils['error'](_0x9f87('0x6'),_0x1c40d9);};exports[_0x9f87('0x7')]=function(){utils[_0x9f87('0x2')](_0x9f87('0x8'));};exports['managerevent']=function(_0x566fd3){};
\ No newline at end of file
index 72503c7..be5542a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4cc=['complete','duration','diffTime','holdtime','endtime','billableseconds','lodash','util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','connectedlinenum','dialstatus','request','debug','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr(routeid)','split','error','varset','[%s][dials][varset]','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','isNil','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','ANSWER','answertime','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt'];(function(_0x3d5df9,_0x5b3623){var _0x50ba39=function(_0x3c0de0){while(--_0x3c0de0){_0x3d5df9['push'](_0x3d5df9['shift']());}};_0x50ba39(++_0x5b3623);}(_0xe4cc,0x6c));var _0xce4c=function(_0xd258cd,_0x352517){_0xd258cd=_0xd258cd-0x0;var _0x2e59d3=_0xe4cc[_0xd258cd];return _0x2e59d3;};'use strict';var _=require(_0xce4c('0x0'));var util=require(_0xce4c('0x1'));var utils=require(_0xce4c('0x2'));var dials={};function writeDB(_0x4b7c89){utils[_0xce4c('0x3')](util[_0xce4c('0x4')](_0xce4c('0x5'),_0x4b7c89[_0xce4c('0x6')],_0x4b7c89[_0xce4c('0x7')],_0x4b7c89[_0xce4c('0x8')],_0x4b7c89['calleridnum'],_0x4b7c89[_0xce4c('0x9')],_0x4b7c89[_0xce4c('0xa')]));utils[_0xce4c('0xb')]('CreateVoiceDialReport',_0x4b7c89);delete dials[_0x4b7c89[_0xce4c('0x6')]];}exports['newexten']=function(_0x3a4669){try{utils[_0xce4c('0xc')](util['format']('[%s][dials][newexten]',_0x3a4669[_0xce4c('0x6')]),_0x3a4669);utils[_0xce4c('0x3')](util[_0xce4c('0x4')](_0xce4c('0xd'),_0x3a4669[_0xce4c('0x6')],_0x3a4669[_0xce4c('0xe')],_0x3a4669[_0xce4c('0xf')]));if(_0x3a4669[_0xce4c('0xe')][_0xce4c('0x10')]()==_0xce4c('0x11')&&_['startsWith'](_0x3a4669['appdata'][_0xce4c('0x10')](),_0xce4c('0x12'))){var _0x2ffb6e=_0x3a4669[_0xce4c('0xf')][_0xce4c('0x13')]('=');dials[_0x3a4669['uniqueid']]={'routeId':_0x2ffb6e[0x1]};}}catch(_0x32f6de){utils[_0xce4c('0x14')](util[_0xce4c('0x4')]('[%s][dials][newexten]',_0x3a4669[_0xce4c('0x6')]),_0x32f6de);}};exports[_0xce4c('0x15')]=function(_0xb65c63){try{utils['debug'](util[_0xce4c('0x4')](_0xce4c('0x16'),_0xb65c63[_0xce4c('0x6')]),_0xb65c63);if(!_['isNil'](_0xb65c63[_0xce4c('0x17')][_0xce4c('0x18')])){utils[_0xce4c('0x3')](util[_0xce4c('0x4')](_0xce4c('0x19'),_0xb65c63[_0xce4c('0x6')],_0xb65c63[_0xce4c('0x1a')]));dials[_0xb65c63['uniqueid']]={'routeId':_0xb65c63[_0xce4c('0x1a')]};}}catch(_0x25aa1f){utils[_0xce4c('0x14')](util['format'](_0xce4c('0x16'),_0xb65c63[_0xce4c('0x6')]),_0x25aa1f);}};exports['dialbegin']=function(_0x9a9d40){try{if(!_[_0xce4c('0x1b')](dials[_0x9a9d40[_0xce4c('0x6')]])){utils[_0xce4c('0xc')](util[_0xce4c('0x4')]('[%s][dials][dialbegin]',_0x9a9d40[_0xce4c('0x6')]),_0x9a9d40);dials[_0x9a9d40[_0xce4c('0x6')]]=_[_0xce4c('0x1c')](dials[_0x9a9d40[_0xce4c('0x6')]],_0x9a9d40);dials[_0x9a9d40['uniqueid']][_0xce4c('0x1d')]=utils[_0xce4c('0x1e')]();dials[_0x9a9d40[_0xce4c('0x6')]][_0xce4c('0x1f')]=_0xce4c('0x20');utils[_0xce4c('0x3')](util[_0xce4c('0x4')](_0xce4c('0x21'),_0x9a9d40[_0xce4c('0x6')],dials[_0x9a9d40[_0xce4c('0x6')]][_0xce4c('0x1d')]));}}catch(_0x1e2f1b){utils[_0xce4c('0x14')](util[_0xce4c('0x4')](_0xce4c('0x22'),_0x9a9d40[_0xce4c('0x6')]),_0x1e2f1b);}};exports[_0xce4c('0x23')]=function(_0x52578c){try{if(!_[_0xce4c('0x1b')](dials[_0x52578c[_0xce4c('0x6')]])){utils[_0xce4c('0xc')](util['format'](_0xce4c('0x24'),_0x52578c['uniqueid']),_0x52578c);dials[_0x52578c['uniqueid']][_0xce4c('0xa')]=_0x52578c[_0xce4c('0xa')];if(_0x52578c[_0xce4c('0xa')]==_0xce4c('0x25')){dials[_0x52578c[_0xce4c('0x6')]]=_[_0xce4c('0x1c')](dials[_0x52578c[_0xce4c('0x6')]],_0x52578c);dials[_0x52578c[_0xce4c('0x6')]][_0xce4c('0x26')]=utils[_0xce4c('0x1e')]();dials[_0x52578c['uniqueid']][_0xce4c('0x1f')]='connect';utils[_0xce4c('0x3')](util[_0xce4c('0x4')](_0xce4c('0x27'),_0x52578c[_0xce4c('0x6')],_0x52578c[_0xce4c('0xa')],dials[_0x52578c[_0xce4c('0x6')]][_0xce4c('0x26')]));}else{utils[_0xce4c('0x3')](util[_0xce4c('0x4')](_0xce4c('0x28'),_0x52578c[_0xce4c('0x6')],_0x52578c[_0xce4c('0xa')]));}}}catch(_0x47cbc9){utils[_0xce4c('0x14')](util['format'](_0xce4c('0x24'),_0x52578c[_0xce4c('0x6')]),_0x47cbc9);}};exports['hangup']=function(_0x4a3d3b){try{if(!_[_0xce4c('0x1b')](dials[_0x4a3d3b['uniqueid']])){utils['debug'](util[_0xce4c('0x4')](_0xce4c('0x29'),_0x4a3d3b[_0xce4c('0x6')]),_0x4a3d3b);utils['info'](util[_0xce4c('0x4')](_0xce4c('0x2a'),_0x4a3d3b['uniqueid'],_0x4a3d3b['calleridnum'],_0x4a3d3b[_0xce4c('0x2b')],_0x4a3d3b[_0xce4c('0x2c')]));dials[_0x4a3d3b['uniqueid']]=_[_0xce4c('0x1c')](dials[_0x4a3d3b[_0xce4c('0x6')]],{'endtime':utils[_0xce4c('0x1e')](),'lastevent':_0xce4c('0x2d')});dials[_0x4a3d3b[_0xce4c('0x6')]][_0xce4c('0x2e')]=utils[_0xce4c('0x2f')](dials[_0x4a3d3b['uniqueid']]['endtime'],dials[_0x4a3d3b[_0xce4c('0x6')]][_0xce4c('0x1d')]);dials[_0x4a3d3b[_0xce4c('0x6')]][_0xce4c('0x30')]=utils[_0xce4c('0x2f')](dials[_0x4a3d3b[_0xce4c('0x6')]][_0xce4c('0x26')]||dials[_0x4a3d3b[_0xce4c('0x6')]][_0xce4c('0x31')],dials[_0x4a3d3b[_0xce4c('0x6')]][_0xce4c('0x1d')]);dials[_0x4a3d3b['uniqueid']][_0xce4c('0x32')]=dials[_0x4a3d3b[_0xce4c('0x6')]][_0xce4c('0x26')]?utils[_0xce4c('0x2f')](dials[_0x4a3d3b[_0xce4c('0x6')]][_0xce4c('0x31')],dials[_0x4a3d3b['uniqueid']][_0xce4c('0x26')]):0x0;writeDB(dials[_0x4a3d3b[_0xce4c('0x6')]]);}}catch(_0x8cac7d){utils[_0xce4c('0x14')](util['format']('[%s][dials][hangup]',_0x4a3d3b['uniqueid']),_0x8cac7d);}};
\ No newline at end of file
+var _0x6fcd=['split','error','varset','[%s][dials][varset]','isNil','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','lastevent','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','cause-txt','duration','diffTime','endtime','holdtime','billableseconds','lodash','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr(routeid)'];(function(_0x3a8dc1,_0x2f03b8){var _0x4b3595=function(_0x1c19e7){while(--_0x1c19e7){_0x3a8dc1['push'](_0x3a8dc1['shift']());}};_0x4b3595(++_0x2f03b8);}(_0x6fcd,0xee));var _0xd6fc=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0x6fcd[_0x342baa];return _0x1208f3;};'use strict';var _=require(_0xd6fc('0x0'));var util=require('util');var utils=require(_0xd6fc('0x1'));var dials={};function writeDB(_0x299ec5){utils['info'](util[_0xd6fc('0x2')](_0xd6fc('0x3'),_0x299ec5[_0xd6fc('0x4')],_0x299ec5[_0xd6fc('0x5')],_0x299ec5[_0xd6fc('0x6')],_0x299ec5[_0xd6fc('0x7')],_0x299ec5['connectedlinenum'],_0x299ec5[_0xd6fc('0x8')]));utils[_0xd6fc('0x9')](_0xd6fc('0xa'),_0x299ec5);delete dials[_0x299ec5[_0xd6fc('0x4')]];}exports[_0xd6fc('0xb')]=function(_0x115e5e){try{utils[_0xd6fc('0xc')](util['format'](_0xd6fc('0xd'),_0x115e5e['uniqueid']),_0x115e5e);utils[_0xd6fc('0xe')](util[_0xd6fc('0x2')](_0xd6fc('0xf'),_0x115e5e['uniqueid'],_0x115e5e[_0xd6fc('0x10')],_0x115e5e[_0xd6fc('0x11')]));if(_0x115e5e[_0xd6fc('0x10')][_0xd6fc('0x12')]()==_0xd6fc('0x13')&&_[_0xd6fc('0x14')](_0x115e5e[_0xd6fc('0x11')]['toLowerCase'](),_0xd6fc('0x15'))){var _0x417256=_0x115e5e[_0xd6fc('0x11')][_0xd6fc('0x16')]('=');dials[_0x115e5e[_0xd6fc('0x4')]]={'routeId':_0x417256[0x1]};}}catch(_0x147e91){utils[_0xd6fc('0x17')](util[_0xd6fc('0x2')](_0xd6fc('0xd'),_0x115e5e[_0xd6fc('0x4')]),_0x147e91);}};exports[_0xd6fc('0x18')]=function(_0x103c25){try{utils[_0xd6fc('0xc')](util[_0xd6fc('0x2')](_0xd6fc('0x19'),_0x103c25[_0xd6fc('0x4')]),_0x103c25);if(!_[_0xd6fc('0x1a')](_0x103c25['variable'][_0xd6fc('0x1b')])){utils[_0xd6fc('0xe')](util[_0xd6fc('0x2')](_0xd6fc('0x1c'),_0x103c25[_0xd6fc('0x4')],_0x103c25[_0xd6fc('0x1d')]));dials[_0x103c25['uniqueid']]={'routeId':_0x103c25[_0xd6fc('0x1d')]};}}catch(_0x59ad06){utils[_0xd6fc('0x17')](util[_0xd6fc('0x2')]('[%s][dials][varset]',_0x103c25['uniqueid']),_0x59ad06);}};exports[_0xd6fc('0x1e')]=function(_0x201d1b){try{if(!_[_0xd6fc('0x1a')](dials[_0x201d1b[_0xd6fc('0x4')]])){utils[_0xd6fc('0xc')](util['format'](_0xd6fc('0x1f'),_0x201d1b[_0xd6fc('0x4')]),_0x201d1b);dials[_0x201d1b[_0xd6fc('0x4')]]=_[_0xd6fc('0x20')](dials[_0x201d1b[_0xd6fc('0x4')]],_0x201d1b);dials[_0x201d1b[_0xd6fc('0x4')]][_0xd6fc('0x21')]=utils[_0xd6fc('0x22')]();dials[_0x201d1b[_0xd6fc('0x4')]]['lastevent']=_0xd6fc('0x23');utils['info'](util[_0xd6fc('0x2')](_0xd6fc('0x24'),_0x201d1b['uniqueid'],dials[_0x201d1b[_0xd6fc('0x4')]]['starttime']));}}catch(_0x40c83f){utils['error'](util[_0xd6fc('0x2')](_0xd6fc('0x1f'),_0x201d1b[_0xd6fc('0x4')]),_0x40c83f);}};exports[_0xd6fc('0x25')]=function(_0x477c10){try{if(!_[_0xd6fc('0x1a')](dials[_0x477c10[_0xd6fc('0x4')]])){utils[_0xd6fc('0xc')](util['format'](_0xd6fc('0x26'),_0x477c10[_0xd6fc('0x4')]),_0x477c10);dials[_0x477c10[_0xd6fc('0x4')]]['dialstatus']=_0x477c10['dialstatus'];if(_0x477c10['dialstatus']=='ANSWER'){dials[_0x477c10[_0xd6fc('0x4')]]=_['assign'](dials[_0x477c10['uniqueid']],_0x477c10);dials[_0x477c10[_0xd6fc('0x4')]]['answertime']=utils['now']();dials[_0x477c10[_0xd6fc('0x4')]][_0xd6fc('0x27')]='connect';utils[_0xd6fc('0xe')](util[_0xd6fc('0x2')](_0xd6fc('0x28'),_0x477c10[_0xd6fc('0x4')],_0x477c10[_0xd6fc('0x8')],dials[_0x477c10[_0xd6fc('0x4')]][_0xd6fc('0x29')]));}else{utils[_0xd6fc('0xe')](util[_0xd6fc('0x2')](_0xd6fc('0x2a'),_0x477c10[_0xd6fc('0x4')],_0x477c10[_0xd6fc('0x8')]));}}}catch(_0xda7439){utils[_0xd6fc('0x17')](util[_0xd6fc('0x2')](_0xd6fc('0x26'),_0x477c10[_0xd6fc('0x4')]),_0xda7439);}};exports[_0xd6fc('0x2b')]=function(_0x4a1075){try{if(!_[_0xd6fc('0x1a')](dials[_0x4a1075[_0xd6fc('0x4')]])){utils['debug'](util['format'](_0xd6fc('0x2c'),_0x4a1075[_0xd6fc('0x4')]),_0x4a1075);utils[_0xd6fc('0xe')](util[_0xd6fc('0x2')](_0xd6fc('0x2d'),_0x4a1075['uniqueid'],_0x4a1075[_0xd6fc('0x7')],_0x4a1075['calleridname'],_0x4a1075[_0xd6fc('0x2e')]));dials[_0x4a1075['uniqueid']]=_[_0xd6fc('0x20')](dials[_0x4a1075[_0xd6fc('0x4')]],{'endtime':utils['now'](),'lastevent':'complete'});dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x2f')]=utils[_0xd6fc('0x30')](dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x31')],dials[_0x4a1075['uniqueid']]['starttime']);dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x32')]=utils[_0xd6fc('0x30')](dials[_0x4a1075[_0xd6fc('0x4')]]['answertime']||dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x31')],dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x21')]);dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x33')]=dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x29')]?utils[_0xd6fc('0x30')](dials[_0x4a1075[_0xd6fc('0x4')]]['endtime'],dials[_0x4a1075[_0xd6fc('0x4')]][_0xd6fc('0x29')]):0x0;writeDB(dials[_0x4a1075[_0xd6fc('0x4')]]);}}catch(_0xd8fd0){utils['error'](util['format'](_0xd6fc('0x2c'),_0x4a1075[_0xd6fc('0x4')]),_0xd8fd0);}};
\ No newline at end of file
index 48c52e0..531d7af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb19=['[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','origtransfereruniqueid','[%s][index][attendedtransfer]','varset','[%s][index][varset]','newexten','[%s][index][newexten]','[%s][index][newchannel]','newchannel','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','util','asterisk','port','username','password','xdr','info','./calls.controller','./recordings.controller','./members.controller','./core.controller','connect','fullybooted','error','close','managerevent','devicestatechange','[%s][index][devicestatechange]','format','device','agentcalled','debug','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','[%s][index][agentconnect]','agentconnect','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','[%s][index][hangup]','hangup','cdr'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xfb19,0x145));var _0x9fb1=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xfb19[_0x321bb2];return _0x9c12ed;};var AsteriskManager=require(_0x9fb1('0x0'));var config=require(_0x9fb1('0x1'));var utils=require('./utils');var util=require(_0x9fb1('0x2'));var ami=new AsteriskManager(config[_0x9fb1('0x3')][_0x9fb1('0x4')],config[_0x9fb1('0x3')]['ip'],config[_0x9fb1('0x3')][_0x9fb1('0x5')],config[_0x9fb1('0x3')][_0x9fb1('0x6')],!![]);ami['keepConnected']();if(config[_0x9fb1('0x7')]&&config['xdr']['disabled']){utils[_0x9fb1('0x8')]('XDR\x20DISABLED');}else{var agents=require('./agents.controller');var calls=require(_0x9fb1('0x9'));var queues=require('./queues.controller');var recordings=require(_0x9fb1('0xa'));var members=require(_0x9fb1('0xb'));var dials=require('./dials.controller');var transfers=require('./transfers.controller');var core=require(_0x9fb1('0xc'));ami['on'](_0x9fb1('0xd'),core[_0x9fb1('0xd')]);ami['on']('shutdown',core['shutdown']);ami['on'](_0x9fb1('0xe'),core[_0x9fb1('0xe')]);ami['on'](_0x9fb1('0xf'),core['error']);ami['on'](_0x9fb1('0x10'),core[_0x9fb1('0x10')]);ami['on'](_0x9fb1('0x11'),core[_0x9fb1('0x11')]);ami['on'](_0x9fb1('0x12'),function(_0x2427a3){try{utils['debug'](util['format'](_0x9fb1('0x13'),_0x2427a3['device']),_0x2427a3);members['devicestatechange'](_0x2427a3);}catch(_0x1f49ce){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')](_0x9fb1('0x13'),_0x2427a3[_0x9fb1('0x15')]),_0x1f49ce);}});ami['on'](_0x9fb1('0x16'),function(_0x2e6095){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')](_0x9fb1('0x18'),_0x2e6095[_0x9fb1('0x19')]),_0x2e6095);agents[_0x9fb1('0x16')](_0x2e6095);}catch(_0xc3246b){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')](_0x9fb1('0x18'),_0x2e6095[_0x9fb1('0x19')]),_0xc3246b);}});ami['on'](_0x9fb1('0x1a'),function(_0x363acf){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')]('[%s][index][agentringnoanswer]',_0x363acf[_0x9fb1('0x19')]),_0x363acf);agents['agentringnoanswer'](_0x363acf);}catch(_0x159f0d){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')](_0x9fb1('0x1b'),_0x363acf[_0x9fb1('0x19')]),_0x159f0d);}});ami['on']('agentconnect',function(_0x22eb5a){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')](_0x9fb1('0x1c'),_0x22eb5a['uniqueid']),_0x22eb5a);agents[_0x9fb1('0x1d')](_0x22eb5a);queues[_0x9fb1('0x1d')](_0x22eb5a);}catch(_0x4074e6){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')]('[%s][index][agentconnect]',_0x22eb5a[_0x9fb1('0x19')]),_0x4074e6);}});ami['on']('agentcomplete',function(_0x553d62){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')](_0x9fb1('0x1e'),_0x553d62[_0x9fb1('0x19')]),_0x553d62);agents[_0x9fb1('0x1f')](_0x553d62);queues[_0x9fb1('0x1f')](_0x553d62);members['agentcomplete'](_0x553d62);}catch(_0x4a0977){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')](_0x9fb1('0x1e'),_0x553d62[_0x9fb1('0x19')]),_0x4a0977);}});ami['on'](_0x9fb1('0x20'),function(_0x1c0a52){try{utils['debug'](util['format'](_0x9fb1('0x21'),_0x1c0a52[_0x9fb1('0x19')]),_0x1c0a52);agents[_0x9fb1('0x20')](_0x1c0a52);queues[_0x9fb1('0x20')](_0x1c0a52);}catch(_0x2895a4){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')]('[%s][index][queuecallerabandon]',_0x1c0a52[_0x9fb1('0x19')]),_0x2895a4);}});ami['on'](_0x9fb1('0x22'),function(_0x4d828e){try{utils[_0x9fb1('0x17')](util['format'](_0x9fb1('0x23'),_0x4d828e[_0x9fb1('0x19')]),_0x4d828e);queues[_0x9fb1('0x22')](_0x4d828e);recordings[_0x9fb1('0x22')](_0x4d828e);}catch(_0x232e88){utils[_0x9fb1('0xf')](util['format'](_0x9fb1('0x23'),_0x4d828e[_0x9fb1('0x19')]),_0x232e88);}});ami['on'](_0x9fb1('0x24'),function(_0x2e1b59){try{utils['debug'](util[_0x9fb1('0x14')](_0x9fb1('0x25'),_0x2e1b59[_0x9fb1('0x19')]),_0x2e1b59);queues[_0x9fb1('0x24')](_0x2e1b59);}catch(_0x382cfa){utils[_0x9fb1('0xf')](util['format'](_0x9fb1('0x25'),_0x2e1b59[_0x9fb1('0x19')]),_0x382cfa);}});ami['on'](_0x9fb1('0x26'),function(_0x796982){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')](_0x9fb1('0x27'),_0x796982['uniqueid']),_0x796982);queues[_0x9fb1('0x26')](_0x796982);calls[_0x9fb1('0x26')](_0x796982);}catch(_0x3df2da){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')](_0x9fb1('0x27'),_0x796982[_0x9fb1('0x19')]),_0x3df2da);}});ami['on'](_0x9fb1('0x28'),function(_0x51fb2c){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')](_0x9fb1('0x29'),_0x51fb2c['uniqueid']),_0x51fb2c);queues[_0x9fb1('0x28')](_0x51fb2c);calls[_0x9fb1('0x28')](_0x51fb2c);}catch(_0x11acaf){utils['error'](util['format'](_0x9fb1('0x29'),_0x51fb2c['uniqueid']),_0x11acaf);}});ami['on'](_0x9fb1('0x2a'),function(_0x299014){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')](_0x9fb1('0x2b'),_0x299014[_0x9fb1('0x19')]),_0x299014);calls['newstate'](_0x299014);recordings[_0x9fb1('0x2a')](_0x299014);}catch(_0x6e1a8){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')]('[%s][index][newstate]',_0x299014[_0x9fb1('0x19')]),_0x6e1a8);}});ami['on']('hangup',function(_0x8ad70){try{utils[_0x9fb1('0x17')](util['format'](_0x9fb1('0x2c'),_0x8ad70[_0x9fb1('0x19')]),_0x8ad70);calls['hangup'](_0x8ad70);recordings['hangup'](_0x8ad70);dials[_0x9fb1('0x2d')](_0x8ad70);agents[_0x9fb1('0x2d')](_0x8ad70);queues[_0x9fb1('0x2d')](_0x8ad70);}catch(_0x170534){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')](_0x9fb1('0x2c'),_0x8ad70[_0x9fb1('0x19')]),_0x170534);}});ami['on'](_0x9fb1('0x2e'),function(_0x4684d8){try{utils['debug'](util[_0x9fb1('0x14')](_0x9fb1('0x2f'),_0x4684d8[_0x9fb1('0x19')]),_0x4684d8);members[_0x9fb1('0x2e')](_0x4684d8);}catch(_0x4d970e){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')](_0x9fb1('0x2f'),_0x4684d8[_0x9fb1('0x19')]),_0x4d970e);}});ami['on'](_0x9fb1('0x30'),function(_0x10b2a9){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')](_0x9fb1('0x31'),_0x10b2a9[_0x9fb1('0x19')]),_0x10b2a9);queues[_0x9fb1('0x30')](_0x10b2a9);agents[_0x9fb1('0x30')](_0x10b2a9);transfers[_0x9fb1('0x30')](_0x10b2a9);}catch(_0x133a5d){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')]('[%s][index][blindtransfer]',_0x10b2a9[_0x9fb1('0x19')]),_0x133a5d);}});ami['on'](_0x9fb1('0x32'),function(_0x1684cf){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')]('[%s][index][attendedtransfer]',_0x1684cf[_0x9fb1('0x33')]),_0x1684cf);queues[_0x9fb1('0x32')](_0x1684cf);transfers['attendedtransfer'](_0x1684cf);agents[_0x9fb1('0x32')](_0x1684cf);calls[_0x9fb1('0x32')](_0x1684cf);}catch(_0x23bba7){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')](_0x9fb1('0x34'),_0x1684cf[_0x9fb1('0x33')]),_0x23bba7);}});ami['on'](_0x9fb1('0x35'),function(_0x35137f){try{utils['debug'](util[_0x9fb1('0x14')](_0x9fb1('0x36'),_0x35137f[_0x9fb1('0x19')]),_0x35137f);queues[_0x9fb1('0x35')](_0x35137f);recordings['varset'](_0x35137f);calls[_0x9fb1('0x35')](_0x35137f);dials[_0x9fb1('0x35')](_0x35137f);}catch(_0x4a3a75){utils['error'](util[_0x9fb1('0x14')]('[%s][index][varset]',_0x35137f[_0x9fb1('0x19')]),_0x4a3a75);}});ami['on'](_0x9fb1('0x37'),function(_0x3293e4){try{utils[_0x9fb1('0x17')](util['format']('[%s][index][newexten]',_0x3293e4['uniqueid']),_0x3293e4);calls[_0x9fb1('0x37')](_0x3293e4);recordings[_0x9fb1('0x37')](_0x3293e4);dials[_0x9fb1('0x37')](_0x3293e4);}catch(_0x4b95ac){utils['error'](util[_0x9fb1('0x14')](_0x9fb1('0x38'),_0x3293e4[_0x9fb1('0x19')]),_0x4b95ac);}});ami['on']('newchannel',function(_0x279372){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')](_0x9fb1('0x39'),_0x279372[_0x9fb1('0x19')]),_0x279372);calls[_0x9fb1('0x3a')](_0x279372);recordings[_0x9fb1('0x3a')](_0x279372);}catch(_0x1eb4f6){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')](_0x9fb1('0x39'),_0x279372[_0x9fb1('0x19')]),_0x1eb4f6);}});ami['on']('dialbegin',function(_0x30c95d){try{utils[_0x9fb1('0x17')](util['format']('[%s][index][dialbegin]',_0x30c95d['uniqueid']),_0x30c95d);dials['dialbegin'](_0x30c95d);}catch(_0x3f3694){utils[_0x9fb1('0xf')](util[_0x9fb1('0x14')](_0x9fb1('0x3b'),_0x30c95d[_0x9fb1('0x19')]),_0x3f3694);}});ami['on'](_0x9fb1('0x3c'),function(_0x4de51b){try{utils[_0x9fb1('0x17')](util[_0x9fb1('0x14')](_0x9fb1('0x3d'),_0x4de51b[_0x9fb1('0x19')]),_0x4de51b);dials[_0x9fb1('0x3c')](_0x4de51b);}catch(_0x5cfc68){utils['error'](util[_0x9fb1('0x14')]('[%s][index][dialend]',_0x4de51b[_0x9fb1('0x19')]),_0x5cfc68);}});}
\ No newline at end of file
+var _0x31f8=['musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','username','password','keepConnected','xdr','info','XDR\x20DISABLED','./calls.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]','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]'];(function(_0x5acea6,_0x7c3f79){var _0x348328=function(_0x3deef4){while(--_0x3deef4){_0x5acea6['push'](_0x5acea6['shift']());}};_0x348328(++_0x7c3f79);}(_0x31f8,0x1aa));var _0x831f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x31f8[_0x3dd15e];return _0x231fd0;};var AsteriskManager=require(_0x831f('0x0'));var config=require(_0x831f('0x1'));var utils=require(_0x831f('0x2'));var util=require(_0x831f('0x3'));var ami=new AsteriskManager(config[_0x831f('0x4')]['port'],config[_0x831f('0x4')]['ip'],config[_0x831f('0x4')][_0x831f('0x5')],config[_0x831f('0x4')][_0x831f('0x6')],!![]);ami[_0x831f('0x7')]();if(config['xdr']&&config[_0x831f('0x8')]['disabled']){utils[_0x831f('0x9')](_0x831f('0xa'));}else{var agents=require('./agents.controller');var calls=require(_0x831f('0xb'));var queues=require('./queues.controller');var recordings=require(_0x831f('0xc'));var members=require(_0x831f('0xd'));var dials=require(_0x831f('0xe'));var transfers=require(_0x831f('0xf'));var core=require(_0x831f('0x10'));ami['on'](_0x831f('0x11'),core[_0x831f('0x11')]);ami['on']('shutdown',core[_0x831f('0x12')]);ami['on'](_0x831f('0x13'),core[_0x831f('0x13')]);ami['on'](_0x831f('0x14'),core[_0x831f('0x14')]);ami['on'](_0x831f('0x15'),core[_0x831f('0x15')]);ami['on'](_0x831f('0x16'),core['managerevent']);ami['on'](_0x831f('0x17'),function(_0x192f0c){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x1a'),_0x192f0c[_0x831f('0x1b')]),_0x192f0c);members[_0x831f('0x17')](_0x192f0c);}catch(_0x528cba){utils[_0x831f('0x14')](util['format'](_0x831f('0x1a'),_0x192f0c[_0x831f('0x1b')]),_0x528cba);}});ami['on'](_0x831f('0x1c'),function(_0x364169){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x1d'),_0x364169['uniqueid']),_0x364169);agents[_0x831f('0x1c')](_0x364169);}catch(_0x1cadf1){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x1d'),_0x364169[_0x831f('0x1e')]),_0x1cadf1);}});ami['on'](_0x831f('0x1f'),function(_0x57fd7d){try{utils[_0x831f('0x18')](util['format'](_0x831f('0x20'),_0x57fd7d[_0x831f('0x1e')]),_0x57fd7d);agents[_0x831f('0x1f')](_0x57fd7d);}catch(_0x3509f6){utils[_0x831f('0x14')](util['format'](_0x831f('0x20'),_0x57fd7d[_0x831f('0x1e')]),_0x3509f6);}});ami['on'](_0x831f('0x21'),function(_0x53fdfe){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x22'),_0x53fdfe[_0x831f('0x1e')]),_0x53fdfe);agents[_0x831f('0x21')](_0x53fdfe);queues[_0x831f('0x21')](_0x53fdfe);}catch(_0x2d9a6b){utils[_0x831f('0x14')](util['format'](_0x831f('0x22'),_0x53fdfe[_0x831f('0x1e')]),_0x2d9a6b);}});ami['on']('agentcomplete',function(_0xcdd389){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x23'),_0xcdd389[_0x831f('0x1e')]),_0xcdd389);agents[_0x831f('0x24')](_0xcdd389);queues[_0x831f('0x24')](_0xcdd389);members[_0x831f('0x24')](_0xcdd389);}catch(_0x558407){utils[_0x831f('0x14')](util['format']('[%s][index][agentcomplete]',_0xcdd389[_0x831f('0x1e')]),_0x558407);}});ami['on'](_0x831f('0x25'),function(_0xc3d753){try{utils[_0x831f('0x18')](util['format']('[%s][index][queuecallerabandon]',_0xc3d753[_0x831f('0x1e')]),_0xc3d753);agents[_0x831f('0x25')](_0xc3d753);queues[_0x831f('0x25')](_0xc3d753);}catch(_0x1130c2){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x26'),_0xc3d753['uniqueid']),_0x1130c2);}});ami['on'](_0x831f('0x27'),function(_0x1d66f2){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x28'),_0x1d66f2[_0x831f('0x1e')]),_0x1d66f2);queues['queuecallerjoin'](_0x1d66f2);recordings[_0x831f('0x27')](_0x1d66f2);}catch(_0x5b74b4){utils[_0x831f('0x14')](util['format']('[%s][index][queuecallerjoin]',_0x1d66f2['uniqueid']),_0x5b74b4);}});ami['on'](_0x831f('0x29'),function(_0xee233c){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x2a'),_0xee233c[_0x831f('0x1e')]),_0xee233c);queues[_0x831f('0x29')](_0xee233c);}catch(_0x49010e){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x2a'),_0xee233c['uniqueid']),_0x49010e);}});ami['on'](_0x831f('0x2b'),function(_0x4ef732){try{utils['debug'](util['format'](_0x831f('0x2c'),_0x4ef732['uniqueid']),_0x4ef732);queues[_0x831f('0x2b')](_0x4ef732);calls['musiconholdstart'](_0x4ef732);}catch(_0x54b52d){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x2c'),_0x4ef732[_0x831f('0x1e')]),_0x54b52d);}});ami['on']('musiconholdstop',function(_0x50f067){try{utils[_0x831f('0x18')](util['format'](_0x831f('0x2d'),_0x50f067['uniqueid']),_0x50f067);queues['musiconholdstop'](_0x50f067);calls[_0x831f('0x2e')](_0x50f067);}catch(_0x3d7a1b){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x2d'),_0x50f067[_0x831f('0x1e')]),_0x3d7a1b);}});ami['on'](_0x831f('0x2f'),function(_0x5e48f0){try{utils[_0x831f('0x18')](util[_0x831f('0x19')]('[%s][index][newstate]',_0x5e48f0[_0x831f('0x1e')]),_0x5e48f0);calls['newstate'](_0x5e48f0);recordings[_0x831f('0x2f')](_0x5e48f0);}catch(_0x4ee574){utils['error'](util[_0x831f('0x19')](_0x831f('0x30'),_0x5e48f0[_0x831f('0x1e')]),_0x4ee574);}});ami['on'](_0x831f('0x31'),function(_0x1700b7){try{utils[_0x831f('0x18')](util[_0x831f('0x19')]('[%s][index][hangup]',_0x1700b7[_0x831f('0x1e')]),_0x1700b7);calls[_0x831f('0x31')](_0x1700b7);recordings[_0x831f('0x31')](_0x1700b7);dials[_0x831f('0x31')](_0x1700b7);agents[_0x831f('0x31')](_0x1700b7);queues['hangup'](_0x1700b7);}catch(_0x1bcbdc){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x32'),_0x1700b7[_0x831f('0x1e')]),_0x1bcbdc);}});ami['on'](_0x831f('0x33'),function(_0x2d077c){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x34'),_0x2d077c['uniqueid']),_0x2d077c);members[_0x831f('0x33')](_0x2d077c);}catch(_0xe4b25a){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x34'),_0x2d077c[_0x831f('0x1e')]),_0xe4b25a);}});ami['on'](_0x831f('0x35'),function(_0x14addd){try{utils['debug'](util[_0x831f('0x19')]('[%s][index][blindtransfer]',_0x14addd[_0x831f('0x1e')]),_0x14addd);queues[_0x831f('0x35')](_0x14addd);agents[_0x831f('0x35')](_0x14addd);transfers[_0x831f('0x35')](_0x14addd);}catch(_0x5ec6a0){utils[_0x831f('0x14')](util[_0x831f('0x19')]('[%s][index][blindtransfer]',_0x14addd['uniqueid']),_0x5ec6a0);}});ami['on'](_0x831f('0x36'),function(_0x55eb0c){try{utils[_0x831f('0x18')](util['format'](_0x831f('0x37'),_0x55eb0c[_0x831f('0x38')]),_0x55eb0c);queues[_0x831f('0x36')](_0x55eb0c);transfers[_0x831f('0x36')](_0x55eb0c);agents['attendedtransfer'](_0x55eb0c);calls[_0x831f('0x36')](_0x55eb0c);}catch(_0x510df2){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x37'),_0x55eb0c[_0x831f('0x38')]),_0x510df2);}});ami['on'](_0x831f('0x39'),function(_0x2f8903){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x3a'),_0x2f8903['uniqueid']),_0x2f8903);queues[_0x831f('0x39')](_0x2f8903);recordings[_0x831f('0x39')](_0x2f8903);calls['varset'](_0x2f8903);dials['varset'](_0x2f8903);}catch(_0x1cd6a9){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x3a'),_0x2f8903[_0x831f('0x1e')]),_0x1cd6a9);}});ami['on'](_0x831f('0x3b'),function(_0x31ba39){try{utils[_0x831f('0x18')](util[_0x831f('0x19')](_0x831f('0x3c'),_0x31ba39['uniqueid']),_0x31ba39);calls[_0x831f('0x3b')](_0x31ba39);recordings[_0x831f('0x3b')](_0x31ba39);dials[_0x831f('0x3b')](_0x31ba39);}catch(_0x43bbfb){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x3c'),_0x31ba39['uniqueid']),_0x43bbfb);}});ami['on'](_0x831f('0x3d'),function(_0x260b14){try{utils['debug'](util[_0x831f('0x19')]('[%s][index][newchannel]',_0x260b14[_0x831f('0x1e')]),_0x260b14);calls['newchannel'](_0x260b14);recordings[_0x831f('0x3d')](_0x260b14);}catch(_0x2e7dd7){utils[_0x831f('0x14')](util[_0x831f('0x19')](_0x831f('0x3e'),_0x260b14[_0x831f('0x1e')]),_0x2e7dd7);}});ami['on'](_0x831f('0x3f'),function(_0x15d963){try{utils['debug'](util['format'](_0x831f('0x40'),_0x15d963['uniqueid']),_0x15d963);dials[_0x831f('0x3f')](_0x15d963);}catch(_0x552609){utils[_0x831f('0x14')](util['format']('[%s]dialbegin',_0x15d963['uniqueid']),_0x552609);}});ami['on'](_0x831f('0x41'),function(_0x2fa7f1){try{utils[_0x831f('0x18')](util['format'](_0x831f('0x42'),_0x2fa7f1['uniqueid']),_0x2fa7f1);dials[_0x831f('0x41')](_0x2fa7f1);}catch(_0x538dff){utils[_0x831f('0x14')](util[_0x831f('0x19')]('[%s][index][dialend]',_0x2fa7f1['uniqueid']),_0x538dff);}});}
\ No newline at end of file
index 80b990f..45936ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94c6=['lodash','util','./utils','Local/_attended@transfer','Queue:','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','interface','channel','data2','membername','type','name','internal','request','CreateMemberReport','split','then','catch','error','format','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','uniqueid','info','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','now','agent','NOT_INUSE','isNil','exitAt','duration','diffTime','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','cdr','[%s][members][cdr]','assign','source','destination','data1','data3','destinationchannel'];(function(_0x2a2edf,_0xea1812){var _0x58ca5e=function(_0x1ab49e){while(--_0x1ab49e){_0x2a2edf['push'](_0x2a2edf['shift']());}};_0x58ca5e(++_0xea1812);}(_0x94c6,0xa2));var _0x694c=function(_0x3a0c6b,_0x41ae2a){_0x3a0c6b=_0x3a0c6b-0x0;var _0x56f4fc=_0x94c6[_0x3a0c6b];return _0x56f4fc;};'use strict';var _=require(_0x694c('0x0'));var util=require(_0x694c('0x1'));var utils=require(_0x694c('0x2'));var members={};var exclude=[_0x694c('0x3'),_0x694c('0x4')];function writeDB(_0x205d39){utils['info'](util['format'](_0x694c('0x5'),_0x205d39['uniqueid'],_0x205d39[_0x694c('0x6')],_0x205d39[_0x694c('0x7')],_0x205d39[_0x694c('0x8')],_0x205d39[_0x694c('0x9')],_0x205d39[_0x694c('0xa')]));if(_0x205d39[_0x694c('0x6')]){utils['getUserByInterface'](_0x205d39[_0x694c('0x6')])['then'](function(_0x1921c9){if(_0x1921c9){_0x205d39[_0x694c('0x9')]=_0x1921c9[_0x694c('0xb')];_0x205d39['internal']=_0x1921c9[_0x694c('0xc')];utils[_0x694c('0xd')](_0x694c('0xe'),_0x205d39);}else{utils['getUserByName'](_0x205d39[_0x694c('0x6')][_0x694c('0xf')]('/')[0x1])[_0x694c('0x10')](function(_0x12caec){if(_0x12caec){_0x205d39[_0x694c('0x9')]=_0x12caec[_0x694c('0xb')];_0x205d39[_0x694c('0xc')]=_0x12caec[_0x694c('0xc')];utils[_0x694c('0xd')](_0x694c('0xe'),_0x205d39);}});}})[_0x694c('0x11')](function(_0xc7cc8d){utils[_0x694c('0x12')](util[_0x694c('0x13')](_0x694c('0x14'),_0x205d39['uniqueid']),_0xc7cc8d);});}delete members[_0x205d39[_0x694c('0x6')]];}function startsWith(_0x337862,_0x4ab8d0){return _[_0x694c('0x15')](_0x337862,function(_0x5036cc){return _[_0x694c('0x16')](_0x4ab8d0,_0x5036cc);});}exports[_0x694c('0x17')]=function(_0x3f8e89){try{utils[_0x694c('0x18')](util[_0x694c('0x13')](_0x694c('0x19'),members[_0x3f8e89['device']]?members[_0x3f8e89[_0x694c('0x1a')]][_0x694c('0x1b')]:_0x3f8e89[_0x694c('0x1a')]),_0x3f8e89);utils[_0x694c('0x1c')](util['format'](_0x694c('0x1d'),members[_0x3f8e89[_0x694c('0x1a')]]?members[_0x3f8e89[_0x694c('0x1a')]][_0x694c('0x1b')]:_0x3f8e89[_0x694c('0x1a')],_0x3f8e89['state'],_0x3f8e89[_0x694c('0x1a')]));switch(_0x3f8e89[_0x694c('0x1e')]){case _0x694c('0x1f'):case _0x694c('0x20'):if(!startsWith(exclude,_0x3f8e89[_0x694c('0x1a')])){members[_0x3f8e89['device']]={'channel':_0x694c('0x21'),'interface':_0x3f8e89[_0x694c('0x1a')],'type':_0x694c('0x22'),'enterAt':utils[_0x694c('0x23')](),'role':_0x694c('0x24')};}break;case _0x694c('0x25'):if(!_[_0x694c('0x26')](members[_0x3f8e89[_0x694c('0x1a')]])){members[_0x3f8e89['device']][_0x694c('0x27')]=utils[_0x694c('0x23')]();members[_0x3f8e89[_0x694c('0x1a')]][_0x694c('0x28')]=utils[_0x694c('0x29')](members[_0x3f8e89[_0x694c('0x1a')]][_0x694c('0x27')],members[_0x3f8e89[_0x694c('0x1a')]]['enterAt']);if(members[_0x3f8e89['device']]['uniqueid']){writeDB(members[_0x3f8e89[_0x694c('0x1a')]]);}}break;default:break;}}catch(_0xcc0f44){utils['error'](util[_0x694c('0x13')](_0x694c('0x19'),members[_0x3f8e89['device']]?members[_0x3f8e89[_0x694c('0x1a')]][_0x694c('0x1b')]:_0x3f8e89['device']),_0xcc0f44);}};exports[_0x694c('0x2a')]=function(_0x37239e){try{if(!_['isNil'](members[_0x37239e['interface']])){utils['debug'](util['format'](_0x694c('0x2b'),_0x37239e[_0x694c('0x1b')]),_0x37239e);utils['info'](util[_0x694c('0x13')](_0x694c('0x2c'),_0x37239e['uniqueid'],_0x37239e[_0x694c('0x6')],_0x37239e[_0x694c('0x2d')]));members[_0x37239e[_0x694c('0x6')]]=_['assign'](members[_0x37239e[_0x694c('0x6')]],{'data4':_0x37239e[_0x694c('0x2d')],'uniqueid':_0x37239e['uniqueid']});}}catch(_0x46fc5b){utils[_0x694c('0x12')](util['format'](_0x694c('0x2b'),_0x37239e['uniqueid']),_0x46fc5b);}};exports[_0x694c('0x2e')]=function(_0xb56830){try{utils[_0x694c('0x18')](util[_0x694c('0x13')](_0x694c('0x2f'),_0xb56830[_0x694c('0x1b')]),_0xb56830);if(_0xb56830[_0x694c('0x7')]){var _0x286f0f=_0xb56830[_0x694c('0x7')]['split']('-')[0x0];if(!_[_0x694c('0x26')](members[_0x286f0f])){members[_0x286f0f]=_[_0x694c('0x30')](members[_0x286f0f],{'data1':members[_0x286f0f]['data1']||_0xb56830[_0x694c('0xa')],'data2':members[_0x286f0f][_0x694c('0x8')]||_0xb56830[_0x694c('0x31')],'data3':members[_0x286f0f]['data3']||_0xb56830[_0x694c('0x32')],'uniqueid':members[_0x286f0f][_0x694c('0x1b')]||_0xb56830[_0x694c('0x1b')]});utils[_0x694c('0x1c')](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0xb56830['uniqueid'],members[_0x286f0f][_0x694c('0x33')],members[_0x286f0f][_0x694c('0x8')],members[_0x286f0f][_0x694c('0x34')]));if(members[_0x286f0f][_0x694c('0x27')]){writeDB(members[_0x286f0f]);}}}if(_0xb56830[_0x694c('0x35')]){var _0x3f1a14=_0xb56830[_0x694c('0x35')]['split']('-')[0x0];if(!_[_0x694c('0x26')](members[_0x3f1a14])){members[_0x3f1a14]=_[_0x694c('0x30')](members[_0x3f1a14],{'data1':members[_0x3f1a14][_0x694c('0x33')]||_0xb56830[_0x694c('0xa')],'data2':members[_0x3f1a14][_0x694c('0x8')]||_0xb56830['source'],'data3':members[_0x3f1a14][_0x694c('0x34')]||_0xb56830['destination'],'uniqueid':members[_0x3f1a14][_0x694c('0x1b')]||_0xb56830[_0x694c('0x1b')]});utils['info'](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0xb56830['uniqueid'],members[_0x3f1a14]['data1'],members[_0x3f1a14]['data2'],members[_0x3f1a14]['data3']));if(members[_0x3f1a14][_0x694c('0x27')]){writeDB(members[_0x3f1a14]);}}}}catch(_0x4e396c){utils[_0x694c('0x12')](util[_0x694c('0x13')](_0x694c('0x2f'),_0xb56830[_0x694c('0x1b')]),_0x4e396c);}};
\ No newline at end of file
+var _0x68c0=['[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','exitAt','destinationchannel','lodash','util','Local/_attended@transfer','Queue:','info','format','interface','channel','data2','membername','type','then','name','internal','request','CreateMemberReport','getUserByName','catch','error','uniqueid','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','voice','TALKING','now','NOT_INUSE','isNil','duration','diffTime','enterAt','agentcomplete','[%s][members][agentcomplete]','assign','queue','cdr','[%s][members][cdr]','split','data1','source','data3','destination'];(function(_0x150068,_0x14db51){var _0x8ca19b=function(_0x4c0126){while(--_0x4c0126){_0x150068['push'](_0x150068['shift']());}};_0x8ca19b(++_0x14db51);}(_0x68c0,0x1c5));var _0x068c=function(_0x3bc7b7,_0x2cf8b9){_0x3bc7b7=_0x3bc7b7-0x0;var _0xcfd3ac=_0x68c0[_0x3bc7b7];return _0xcfd3ac;};'use strict';var _=require(_0x068c('0x0'));var util=require(_0x068c('0x1'));var utils=require('./utils');var members={};var exclude=[_0x068c('0x2'),_0x068c('0x3')];function writeDB(_0xc420be){utils[_0x068c('0x4')](util[_0x068c('0x5')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0xc420be['uniqueid'],_0xc420be[_0x068c('0x6')],_0xc420be[_0x068c('0x7')],_0xc420be[_0x068c('0x8')],_0xc420be[_0x068c('0x9')],_0xc420be[_0x068c('0xa')]));if(_0xc420be[_0x068c('0x6')]){utils['getUserByInterface'](_0xc420be[_0x068c('0x6')])[_0x068c('0xb')](function(_0x1534ca){if(_0x1534ca){_0xc420be[_0x068c('0x9')]=_0x1534ca[_0x068c('0xc')];_0xc420be[_0x068c('0xd')]=_0x1534ca[_0x068c('0xd')];utils[_0x068c('0xe')](_0x068c('0xf'),_0xc420be);}else{utils[_0x068c('0x10')](_0xc420be[_0x068c('0x6')]['split']('/')[0x1])[_0x068c('0xb')](function(_0x5696a6){if(_0x5696a6){_0xc420be['membername']=_0x5696a6[_0x068c('0xc')];_0xc420be[_0x068c('0xd')]=_0x5696a6[_0x068c('0xd')];utils[_0x068c('0xe')](_0x068c('0xf'),_0xc420be);}});}})[_0x068c('0x11')](function(_0x1bd282){utils[_0x068c('0x12')](util['format']('[%s][members][writeDB]',_0xc420be[_0x068c('0x13')]),_0x1bd282);});}delete members[_0xc420be[_0x068c('0x6')]];}function startsWith(_0x3ec9e5,_0x26f48d){return _['some'](_0x3ec9e5,function(_0x3108f0){return _[_0x068c('0x14')](_0x26f48d,_0x3108f0);});}exports[_0x068c('0x15')]=function(_0x447856){try{utils[_0x068c('0x16')](util[_0x068c('0x5')](_0x068c('0x17'),members[_0x447856[_0x068c('0x18')]]?members[_0x447856[_0x068c('0x18')]][_0x068c('0x13')]:_0x447856[_0x068c('0x18')]),_0x447856);utils[_0x068c('0x4')](util[_0x068c('0x5')](_0x068c('0x19'),members[_0x447856[_0x068c('0x18')]]?members[_0x447856[_0x068c('0x18')]][_0x068c('0x13')]:_0x447856['device'],_0x447856[_0x068c('0x1a')],_0x447856['device']));switch(_0x447856[_0x068c('0x1a')]){case _0x068c('0x1b'):case'BUSY':if(!startsWith(exclude,_0x447856[_0x068c('0x18')])){members[_0x447856[_0x068c('0x18')]]={'channel':_0x068c('0x1c'),'interface':_0x447856[_0x068c('0x18')],'type':_0x068c('0x1d'),'enterAt':utils[_0x068c('0x1e')](),'role':'agent'};}break;case _0x068c('0x1f'):if(!_[_0x068c('0x20')](members[_0x447856[_0x068c('0x18')]])){members[_0x447856[_0x068c('0x18')]]['exitAt']=utils[_0x068c('0x1e')]();members[_0x447856[_0x068c('0x18')]][_0x068c('0x21')]=utils[_0x068c('0x22')](members[_0x447856[_0x068c('0x18')]]['exitAt'],members[_0x447856[_0x068c('0x18')]][_0x068c('0x23')]);if(members[_0x447856[_0x068c('0x18')]][_0x068c('0x13')]){writeDB(members[_0x447856[_0x068c('0x18')]]);}}break;default:break;}}catch(_0x28797c){utils[_0x068c('0x12')](util[_0x068c('0x5')](_0x068c('0x17'),members[_0x447856[_0x068c('0x18')]]?members[_0x447856[_0x068c('0x18')]]['uniqueid']:_0x447856[_0x068c('0x18')]),_0x28797c);}};exports[_0x068c('0x24')]=function(_0xfb0d94){try{if(!_[_0x068c('0x20')](members[_0xfb0d94[_0x068c('0x6')]])){utils['debug'](util[_0x068c('0x5')](_0x068c('0x25'),_0xfb0d94[_0x068c('0x13')]),_0xfb0d94);utils[_0x068c('0x4')](util[_0x068c('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0xfb0d94[_0x068c('0x13')],_0xfb0d94[_0x068c('0x6')],_0xfb0d94['queue']));members[_0xfb0d94[_0x068c('0x6')]]=_[_0x068c('0x26')](members[_0xfb0d94['interface']],{'data4':_0xfb0d94[_0x068c('0x27')],'uniqueid':_0xfb0d94[_0x068c('0x13')]});}}catch(_0x5cecce){utils[_0x068c('0x12')](util[_0x068c('0x5')](_0x068c('0x25'),_0xfb0d94[_0x068c('0x13')]),_0x5cecce);}};exports[_0x068c('0x28')]=function(_0xe1398){try{utils[_0x068c('0x16')](util[_0x068c('0x5')](_0x068c('0x29'),_0xe1398[_0x068c('0x13')]),_0xe1398);if(_0xe1398[_0x068c('0x7')]){var _0x5ec52d=_0xe1398[_0x068c('0x7')][_0x068c('0x2a')]('-')[0x0];if(!_['isNil'](members[_0x5ec52d])){members[_0x5ec52d]=_[_0x068c('0x26')](members[_0x5ec52d],{'data1':members[_0x5ec52d][_0x068c('0x2b')]||_0xe1398[_0x068c('0xa')],'data2':members[_0x5ec52d][_0x068c('0x8')]||_0xe1398[_0x068c('0x2c')],'data3':members[_0x5ec52d][_0x068c('0x2d')]||_0xe1398[_0x068c('0x2e')],'uniqueid':members[_0x5ec52d][_0x068c('0x13')]||_0xe1398['uniqueid']});utils[_0x068c('0x4')](util[_0x068c('0x5')](_0x068c('0x2f'),_0xe1398[_0x068c('0x13')],members[_0x5ec52d][_0x068c('0x2b')],members[_0x5ec52d]['data2'],members[_0x5ec52d]['data3']));if(members[_0x5ec52d][_0x068c('0x30')]){writeDB(members[_0x5ec52d]);}}}if(_0xe1398['destinationchannel']){var _0x54bfd0=_0xe1398[_0x068c('0x31')][_0x068c('0x2a')]('-')[0x0];if(!_[_0x068c('0x20')](members[_0x54bfd0])){members[_0x54bfd0]=_['assign'](members[_0x54bfd0],{'data1':members[_0x54bfd0][_0x068c('0x2b')]||_0xe1398[_0x068c('0xa')],'data2':members[_0x54bfd0]['data2']||_0xe1398[_0x068c('0x2c')],'data3':members[_0x54bfd0][_0x068c('0x2d')]||_0xe1398['destination'],'uniqueid':members[_0x54bfd0][_0x068c('0x13')]||_0xe1398[_0x068c('0x13')]});utils[_0x068c('0x4')](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0xe1398['uniqueid'],members[_0x54bfd0][_0x068c('0x2b')],members[_0x54bfd0][_0x068c('0x8')],members[_0x54bfd0][_0x068c('0x2d')]));if(members[_0x54bfd0][_0x068c('0x30')]){writeDB(members[_0x54bfd0]);}}}}catch(_0x1e7be2){utils['error'](util[_0x068c('0x5')](_0x068c('0x29'),_0xe1398['uniqueid']),_0x1e7be2);}};
\ No newline at end of file
index 41fb92e..170f282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe364=['error','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','now','COMPLETEDBYAGENT','name','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][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','destaccountcode','assigned','accountcode','lastAssignedTo','membername','agentcomplete','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','transferuniqueid','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','ATTENDEDTRANSFER','origtransfererlinkedid','transfereelinkedid','clone','transfertargetuniqueid','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstartAt','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','channel','queue','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','uniqueid','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xe364,0x1ee));var _0x4e36=function(_0x283127,_0x54d4d5){_0x283127=_0x283127-0x0;var _0x43da5d=_0xe364[_0x283127];return _0x43da5d;};'use strict';var _=require(_0x4e36('0x0'));var util=require(_0x4e36('0x1'));var utils=require(_0x4e36('0x2'));var queues={};function writeDB(_0x12f720){utils[_0x4e36('0x3')](util[_0x4e36('0x4')](_0x4e36('0x5'),_0x12f720['uniqueid'],_0x12f720[_0x4e36('0x6')],_0x12f720[_0x4e36('0x7')],_0x12f720['lastAssignedTo'],_0x12f720['calleridnum'],_0x12f720['accountcode'],_0x12f720[_0x4e36('0x8')]));if(_0x12f720[_0x4e36('0x7')]){utils[_0x4e36('0x9')](_0x12f720[_0x4e36('0x7')])[_0x4e36('0xa')](function(_0x3997e3){if(_0x3997e3){_0x12f720[_0x4e36('0xb')]=_0x3997e3[_0x4e36('0xb')];}utils[_0x4e36('0xc')](_0x4e36('0xd'),_0x12f720);});}else{utils[_0x4e36('0xc')](_0x4e36('0xd'),_0x12f720);}if(_0x12f720[_0x4e36('0xe')]){delete queues[_0x12f720[_0x4e36('0xe')]];}else{delete queues[_0x12f720[_0x4e36('0xf')]];}}exports['queuecallerjoin']=function(_0x29485c){try{utils[_0x4e36('0x10')](util[_0x4e36('0x4')](_0x4e36('0x11'),_0x29485c['uniqueid']),_0x29485c);utils[_0x4e36('0x3')](util[_0x4e36('0x4')](_0x4e36('0x12'),_0x29485c['uniqueid'],_0x29485c['queue'],_0x29485c[_0x4e36('0x13')]));queues[_0x29485c[_0x4e36('0xf')]]=_[_0x4e36('0x14')](_0x29485c,{'originalposition':_0x29485c[_0x4e36('0x13')],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x5b3b30){utils[_0x4e36('0x15')](util[_0x4e36('0x4')]('[%s][queues][queuecallerjoin]',_0x29485c[_0x4e36('0xf')]),_0x5b3b30);}};exports[_0x4e36('0x16')]=function(_0x54309e){try{if(!_[_0x4e36('0x17')](queues[_0x54309e[_0x4e36('0xf')]])){utils[_0x4e36('0x10')](util[_0x4e36('0x4')](_0x4e36('0x18'),_0x54309e[_0x4e36('0xf')]),_0x54309e);if(queues[_0x54309e[_0x4e36('0xf')]][_0x4e36('0x19')]){if(!queues[_0x54309e[_0x4e36('0xf')]][_0x4e36('0x1a')]&&!queues[_0x54309e[_0x4e36('0xf')]][_0x4e36('0x1b')]){queues[_0x54309e[_0x4e36('0xf')]][_0x4e36('0x1c')]=!![];queues[_0x54309e[_0x4e36('0xf')]][_0x4e36('0x1d')]=utils[_0x4e36('0x1e')]();queues[_0x54309e[_0x4e36('0xf')]][_0x4e36('0x8')]=_0x4e36('0x1f');}utils[_0x4e36('0x3')](util[_0x4e36('0x4')]('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x54309e['uniqueid'],queues[_0x54309e[_0x4e36('0xf')]][_0x4e36('0x20')],queues[_0x54309e[_0x4e36('0xf')]]['queuecallerexitreason']));writeDB(queues[_0x54309e[_0x4e36('0xf')]]);}else if(queues[_0x54309e['uniqueid']]['transfereduniqueid']){utils['info'](util[_0x4e36('0x4')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x54309e['uniqueid'],queues[_0x54309e[_0x4e36('0xf')]][_0x4e36('0x20')],queues[_0x54309e[_0x4e36('0xf')]][_0x4e36('0xe')]));queues[queues[_0x54309e[_0x4e36('0xf')]]['transfereduniqueid']]=queues[_0x54309e[_0x4e36('0xf')]];queues[queues[_0x54309e[_0x4e36('0xf')]][_0x4e36('0xe')]][_0x4e36('0x21')]=0x2;delete queues[_0x54309e[_0x4e36('0xf')]];}}}catch(_0x162a29){utils[_0x4e36('0x15')](util[_0x4e36('0x4')](_0x4e36('0x18'),_0x54309e['uniqueid']),_0x162a29);}};exports[_0x4e36('0x22')]=function(_0x2242b2){try{utils[_0x4e36('0x10')](util[_0x4e36('0x4')](_0x4e36('0x23'),_0x2242b2[_0x4e36('0xf')]),_0x2242b2);if(!_['isNil'](_0x2242b2[_0x4e36('0x24')]['queuestatus'])&&_0x2242b2[_0x4e36('0x25')][_0x4e36('0x26')]()!==_0x4e36('0x27')){if(!_[_0x4e36('0x17')](queues[_0x2242b2[_0x4e36('0xf')]])){queues[_0x2242b2[_0x4e36('0xf')]][_0x4e36('0x1a')]=![];queues[_0x2242b2[_0x4e36('0xf')]][_0x4e36('0x28')]=null;queues[_0x2242b2[_0x4e36('0xf')]]['queuecallerexit']=!![];queues[_0x2242b2[_0x4e36('0xf')]][_0x4e36('0x29')]=utils[_0x4e36('0x1e')]();queues[_0x2242b2[_0x4e36('0xf')]][_0x4e36('0x8')]=_0x2242b2[_0x4e36('0x25')][_0x4e36('0x26')]();utils[_0x4e36('0x3')](util[_0x4e36('0x4')](_0x4e36('0x2a'),_0x2242b2['uniqueid'],queues[_0x2242b2[_0x4e36('0xf')]]['name'],_0x2242b2['value'],queues[_0x2242b2[_0x4e36('0xf')]][_0x4e36('0x8')]));writeDB(queues[_0x2242b2['uniqueid']]);}}else if(!_['isNil'](_0x2242b2[_0x4e36('0x24')][_0x4e36('0x2b')])){if(!_[_0x4e36('0x17')](queues[_0x2242b2[_0x4e36('0xf')]])&&!queues[_0x2242b2[_0x4e36('0xf')]][_0x4e36('0x1a')]){queues[_0x2242b2[_0x4e36('0xf')]]['queuecallerabandon']=![];queues[_0x2242b2[_0x4e36('0xf')]][_0x4e36('0x28')]=null;queues[_0x2242b2[_0x4e36('0xf')]][_0x4e36('0x1b')]=!![];queues[_0x2242b2['uniqueid']][_0x4e36('0x29')]=utils['now']();queues[_0x2242b2['uniqueid']][_0x4e36('0x8')]=_0x4e36('0x2c');utils[_0x4e36('0x3')](util[_0x4e36('0x4')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x2242b2[_0x4e36('0xf')],queues[_0x2242b2[_0x4e36('0xf')]][_0x4e36('0x20')],_0x2242b2['value'],queues[_0x2242b2[_0x4e36('0xf')]][_0x4e36('0x8')]));}}}catch(_0x185ab9){utils[_0x4e36('0x15')](util['format'](_0x4e36('0x23'),_0x2242b2[_0x4e36('0xf')]),_0x185ab9);}};exports[_0x4e36('0x1a')]=function(_0x12c26e){try{if(!_['isNil'](queues[_0x12c26e['uniqueid']])){utils[_0x4e36('0x10')](util[_0x4e36('0x4')](_0x4e36('0x2d'),_0x12c26e[_0x4e36('0xf')]),_0x12c26e);queues[_0x12c26e['uniqueid']][_0x4e36('0x1b')]=![];queues[_0x12c26e[_0x4e36('0xf')]][_0x4e36('0x29')]=null;queues[_0x12c26e['uniqueid']][_0x4e36('0x1a')]=!![];queues[_0x12c26e[_0x4e36('0xf')]][_0x4e36('0x28')]=utils[_0x4e36('0x1e')]();queues[_0x12c26e[_0x4e36('0xf')]][_0x4e36('0x8')]=_0x4e36('0x2e');utils[_0x4e36('0x3')](util[_0x4e36('0x4')](_0x4e36('0x2f'),_0x12c26e[_0x4e36('0xf')],queues[_0x12c26e[_0x4e36('0xf')]][_0x4e36('0x20')],queues[_0x12c26e[_0x4e36('0xf')]][_0x4e36('0x8')]));}}catch(_0x215cb9){utils['error'](util[_0x4e36('0x4')](_0x4e36('0x2d'),_0x12c26e[_0x4e36('0xf')]),_0x215cb9);}};exports[_0x4e36('0x30')]=function(_0x15d8f2){try{if(!_[_0x4e36('0x17')](queues[_0x15d8f2[_0x4e36('0xf')]])){utils[_0x4e36('0x10')](util[_0x4e36('0x4')](_0x4e36('0x31'),_0x15d8f2[_0x4e36('0xf')]),_0x15d8f2);utils[_0x4e36('0x3')](util['format']('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x15d8f2['uniqueid'],queues[_0x15d8f2[_0x4e36('0xf')]]['name'],_0x15d8f2['connectedlinenum'],_0x15d8f2[_0x4e36('0x32')]));queues[_0x15d8f2['uniqueid']][_0x4e36('0x30')]=!![];queues[_0x15d8f2['uniqueid']][_0x4e36('0x19')]=utils[_0x4e36('0x1e')]();queues[_0x15d8f2['uniqueid']][_0x4e36('0x33')]=utils[_0x4e36('0x34')](queues[_0x15d8f2[_0x4e36('0xf')]][_0x4e36('0x19')],queues[_0x15d8f2[_0x4e36('0xf')]][_0x4e36('0x35')]);queues[_0x15d8f2['uniqueid']][_0x4e36('0x13')]=_0x15d8f2[_0x4e36('0x13')];queues[_0x15d8f2[_0x4e36('0xf')]][_0x4e36('0x36')]=_0x15d8f2[_0x4e36('0x36')];queues[_0x15d8f2[_0x4e36('0xf')]][_0x4e36('0x37')]=_0x15d8f2[_0x4e36('0x37')];queues[_0x15d8f2[_0x4e36('0xf')]][_0x4e36('0x32')]=_0x15d8f2[_0x4e36('0x32')];}}catch(_0x288d35){utils['error'](util[_0x4e36('0x4')](_0x4e36('0x31'),_0x15d8f2['uniqueid']),_0x288d35);}};exports[_0x4e36('0x38')]=function(_0x31584c){try{if(!_[_0x4e36('0x17')](queues[_0x31584c[_0x4e36('0xf')]])){utils[_0x4e36('0x10')](util[_0x4e36('0x4')](_0x4e36('0x39'),_0x31584c[_0x4e36('0xf')]),_0x31584c);utils[_0x4e36('0x3')](util[_0x4e36('0x4')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x31584c[_0x4e36('0xf')],queues[_0x31584c[_0x4e36('0xf')]][_0x4e36('0x20')],_0x31584c['membername'],_0x31584c[_0x4e36('0x3a')]));queues[_0x31584c['uniqueid']][_0x4e36('0x1a')]=![];queues[_0x31584c[_0x4e36('0xf')]][_0x4e36('0x1a')]=![];queues[_0x31584c['uniqueid']][_0x4e36('0x28')]=null;queues[_0x31584c[_0x4e36('0xf')]][_0x4e36('0x1b')]=![];queues[_0x31584c['uniqueid']]['queuecallerexitreason']=null;queues[_0x31584c[_0x4e36('0xf')]][_0x4e36('0x29')]=null;queues[_0x31584c[_0x4e36('0xf')]][_0x4e36('0x3b')]=!![];queues[_0x31584c['uniqueid']][_0x4e36('0x3c')]=_0x31584c[_0x4e36('0x3a')];queues[_0x31584c[_0x4e36('0xf')]][_0x4e36('0x3d')]=_0x31584c[_0x4e36('0x3e')];}}catch(_0x3d7536){utils[_0x4e36('0x15')](util[_0x4e36('0x4')](_0x4e36('0x39'),_0x31584c[_0x4e36('0xf')]),_0x3d7536);}};exports[_0x4e36('0x3f')]=function(_0x2d1407){try{if(!_[_0x4e36('0x17')](queues[_0x2d1407[_0x4e36('0xf')]])){if(queues[_0x2d1407[_0x4e36('0xf')]][_0x4e36('0x19')]){utils['debug'](util[_0x4e36('0x4')]('[%s][queues][agentcomplete]',_0x2d1407['uniqueid']),_0x2d1407);queues[_0x2d1407['uniqueid']][_0x4e36('0x1a')]=![];queues[_0x2d1407[_0x4e36('0xf')]][_0x4e36('0x1a')]=![];queues[_0x2d1407[_0x4e36('0xf')]][_0x4e36('0x28')]=null;queues[_0x2d1407[_0x4e36('0xf')]][_0x4e36('0x1b')]=![];queues[_0x2d1407[_0x4e36('0xf')]][_0x4e36('0x29')]=null;queues[_0x2d1407[_0x4e36('0xf')]][_0x4e36('0x3b')]=!![];queues[_0x2d1407[_0x4e36('0xf')]][_0x4e36('0x3d')]=_0x2d1407[_0x4e36('0x3e')];queues[_0x2d1407[_0x4e36('0xf')]]['queuecallercomplete']=!![];queues[_0x2d1407['uniqueid']][_0x4e36('0x1d')]=utils[_0x4e36('0x1e')]();if(_0x2d1407[_0x4e36('0x40')]==_0x4e36('0x41')){if(!queues[_0x2d1407[_0x4e36('0xf')]][_0x4e36('0x41')]){queues[_0x2d1407[_0x4e36('0xf')]]['queuecallerexitreason']=_0x4e36('0x42');}}else{queues[_0x2d1407[_0x4e36('0xf')]][_0x4e36('0x8')]=_0x4e36('0x43')+_0x2d1407[_0x4e36('0x40')][_0x4e36('0x26')]();}utils['info'](util['format'](_0x4e36('0x44'),_0x2d1407[_0x4e36('0xf')],queues[_0x2d1407[_0x4e36('0xf')]]['name'],_0x2d1407['membername'],queues[_0x2d1407[_0x4e36('0xf')]]['queuecallerexitreason']));writeDB(queues[_0x2d1407[_0x4e36('0xf')]]);}}}catch(_0x2ab7ff){utils[_0x4e36('0x15')](util['format'](_0x4e36('0x45'),_0x2d1407['uniqueid']),_0x2ab7ff);}};exports['blindtransfer']=function(_0x45cf12){try{if(!_[_0x4e36('0x17')](queues[_0x45cf12[_0x4e36('0x46')]])){utils[_0x4e36('0x10')](util[_0x4e36('0x4')](_0x4e36('0x47'),_0x45cf12[_0x4e36('0xf')]),_0x45cf12);queues[_0x45cf12[_0x4e36('0x46')]][_0x4e36('0x41')]=!![];queues[_0x45cf12[_0x4e36('0x46')]][_0x4e36('0x48')]=_0x4e36('0x49');queues[_0x45cf12[_0x4e36('0x46')]][_0x4e36('0x4a')]=_0x45cf12['extension'];queues[_0x45cf12['transfereeuniqueid']][_0x4e36('0x4b')]=_0x45cf12['transfereeuniqueid'];queues[_0x45cf12[_0x4e36('0x46')]][_0x4e36('0x8')]='BLINDTRANSFER';utils[_0x4e36('0x3')](util[_0x4e36('0x4')](_0x4e36('0x4c'),_0x45cf12['uniqueid'],queues[_0x45cf12[_0x4e36('0x46')]][_0x4e36('0x20')],_0x45cf12[_0x4e36('0x46')],_0x45cf12[_0x4e36('0x4d')]));}}catch(_0x19d6d7){utils['error'](util[_0x4e36('0x4')](_0x4e36('0x47'),_0x45cf12[_0x4e36('0xf')]),_0x19d6d7);}};exports[_0x4e36('0x4e')]=function(_0x394745){try{utils[_0x4e36('0x10')](util[_0x4e36('0x4')](_0x4e36('0x4f'),_0x394745[_0x4e36('0x50')]),_0x394745);if(_0x394745[_0x4e36('0x50')]==_0x394745['origtransfererlinkedid']){if(!_['isNil'](queues[_0x394745[_0x4e36('0x51')]])){utils['info'](util[_0x4e36('0x4')](_0x4e36('0x52'),_0x394745[_0x4e36('0x50')],queues[_0x394745['secondtransfererlinkedid']][_0x4e36('0x20')],_0x394745[_0x4e36('0x53')]));queues[_0x394745['secondtransfererlinkedid']][_0x4e36('0x41')]=!![];queues[_0x394745[_0x4e36('0x51')]]['transfertype']=_0x4e36('0x54');queues[_0x394745[_0x4e36('0x51')]]['transferexten']=_0x394745[_0x4e36('0x53')];queues[_0x394745[_0x4e36('0x51')]][_0x4e36('0x4b')]=_0x394745[_0x4e36('0x50')];queues[_0x394745[_0x4e36('0x51')]][_0x4e36('0x8')]=_0x4e36('0x55');}if(!_[_0x4e36('0x17')](queues[_0x394745[_0x4e36('0x56')]])){if(_0x394745[_0x4e36('0x57')]&&queues[_0x394745[_0x4e36('0x57')]]){queues[_0x394745['transfereelinkedid']]['queuecallerenterreason']=0x1;queues[_0x394745[_0x4e36('0x46')]]=_[_0x4e36('0x58')](queues[_0x394745[_0x4e36('0x57')]]);queues[_0x394745[_0x4e36('0x46')]][_0x4e36('0xe')]=_0x394745[_0x4e36('0x59')];queues[_0x394745[_0x4e36('0x46')]][_0x4e36('0x21')]=0x2;queues[_0x394745[_0x4e36('0x46')]][_0x4e36('0x5a')]=queues[_0x394745[_0x4e36('0x51')]]['calleridnum'];queues[_0x394745[_0x4e36('0x46')]][_0x4e36('0x5b')]=queues[_0x394745[_0x4e36('0x51')]][_0x4e36('0x5b')];queues[_0x394745[_0x4e36('0x46')]][_0x4e36('0x35')]=utils[_0x4e36('0x1e')]();queues[_0x394745['transfereeuniqueid']][_0x4e36('0x19')]=utils[_0x4e36('0x1e')]();queues[_0x394745['transfereeuniqueid']][_0x4e36('0x33')]=0x0;queues[_0x394745[_0x4e36('0x46')]][_0x4e36('0x5c')]=0x0;utils[_0x4e36('0x3')](util[_0x4e36('0x4')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x394745['origtransfereruniqueid'],queues[_0x394745[_0x4e36('0x46')]][_0x4e36('0x20')],queues[_0x394745[_0x4e36('0x46')]][_0x4e36('0x5a')],queues[_0x394745[_0x4e36('0x46')]][_0x4e36('0x5b')]));}else{utils['info'](util[_0x4e36('0x4')](_0x4e36('0x5d'),_0x394745[_0x4e36('0x50')],queues[_0x394745[_0x4e36('0x56')]][_0x4e36('0x20')],_0x394745[_0x4e36('0x51')]));queues[_0x394745[_0x4e36('0x56')]]['transfereduniqueid']=_0x394745[_0x4e36('0x51')];}}}else if(_0x394745[_0x4e36('0x5e')]==_0x394745[_0x4e36('0x51')]){if(!_[_0x4e36('0x17')](queues[_0x394745['origtransfererlinkedid']])){utils[_0x4e36('0x3')](util[_0x4e36('0x4')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x394745[_0x4e36('0x50')],queues[_0x394745[_0x4e36('0x56')]]['name'],_0x394745['secondtransfereruniqueid'],_0x394745[_0x4e36('0x5f')]));queues[_0x394745[_0x4e36('0x56')]][_0x4e36('0x41')]=!![];queues[_0x394745[_0x4e36('0x56')]][_0x4e36('0x48')]=_0x4e36('0x54');queues[_0x394745[_0x4e36('0x56')]][_0x4e36('0x4a')]=_0x394745[_0x4e36('0x5f')];queues[_0x394745[_0x4e36('0x56')]][_0x4e36('0x4b')]=_0x394745[_0x4e36('0x5e')];queues[_0x394745[_0x4e36('0x56')]][_0x4e36('0x8')]=_0x4e36('0x55');}if(!_[_0x4e36('0x17')](queues[_0x394745[_0x4e36('0x51')]])){if(_0x394745[_0x4e36('0x60')]&&queues[_0x394745['transfertargetlinkedid']]){queues[_0x394745[_0x4e36('0x60')]][_0x4e36('0x21')]=0x1;queues[_0x394745[_0x4e36('0x59')]]=_[_0x4e36('0x58')](queues[_0x394745[_0x4e36('0x60')]]);queues[_0x394745[_0x4e36('0x59')]]['transfereduniqueid']=_0x394745['transfertargetuniqueid'];queues[_0x394745[_0x4e36('0x59')]]['queuecallerenterreason']=0x2;queues[_0x394745['transfertargetuniqueid']][_0x4e36('0x5a')]=queues[_0x394745['origtransfererlinkedid']][_0x4e36('0x5a')];queues[_0x394745['transfertargetuniqueid']]['calleridname']=queues[_0x394745[_0x4e36('0x56')]][_0x4e36('0x5b')];queues[_0x394745[_0x4e36('0x59')]][_0x4e36('0x35')]=utils[_0x4e36('0x1e')]();queues[_0x394745[_0x4e36('0x59')]][_0x4e36('0x19')]=utils[_0x4e36('0x1e')]();queues[_0x394745['transfertargetuniqueid']][_0x4e36('0x33')]=0x0;queues[_0x394745[_0x4e36('0x59')]]['mohtime']=0x0;utils[_0x4e36('0x3')](util[_0x4e36('0x4')](_0x4e36('0x61'),_0x394745['origtransfereruniqueid'],queues[_0x394745[_0x4e36('0x59')]][_0x4e36('0x20')],queues[_0x394745['transfertargetuniqueid']][_0x4e36('0xe')],queues[_0x394745[_0x4e36('0x59')]][_0x4e36('0x5a')],queues[_0x394745[_0x4e36('0x59')]][_0x4e36('0x5b')]));}else{utils['info'](util[_0x4e36('0x4')](_0x4e36('0x5d'),_0x394745[_0x4e36('0x50')],queues[_0x394745['secondtransfererlinkedid']]['name'],_0x394745[_0x4e36('0x56')]));queues[_0x394745['secondtransfererlinkedid']]['transfereduniqueid']=_0x394745['origtransfererlinkedid'];}}}}catch(_0x2d5511){utils[_0x4e36('0x15')](util[_0x4e36('0x4')](_0x4e36('0x4f'),_0x394745[_0x4e36('0x50')]),_0x2d5511);}};exports['musiconholdstart']=function(_0x428acf){try{if(!_[_0x4e36('0x17')](queues[_0x428acf[_0x4e36('0xf')]])){utils[_0x4e36('0x10')](util['format'](_0x4e36('0x62'),_0x428acf[_0x4e36('0xf')]),_0x428acf);queues[_0x428acf[_0x4e36('0xf')]]['musiconholdstartAt']=utils[_0x4e36('0x1e')]();utils[_0x4e36('0x3')](util[_0x4e36('0x4')](_0x4e36('0x63'),_0x428acf[_0x4e36('0xf')],queues[_0x428acf[_0x4e36('0xf')]][_0x4e36('0x20')],queues[_0x428acf['uniqueid']]['musiconholdstartAt']));}}catch(_0x435adf){utils[_0x4e36('0x15')](util['format'](_0x4e36('0x62'),_0x428acf[_0x4e36('0xf')]),_0x435adf);}};exports['musiconholdstop']=function(_0x967631){try{if(!_[_0x4e36('0x17')](queues[_0x967631['uniqueid']])){if(!_['isNil'](queues[_0x967631[_0x4e36('0xf')]][_0x4e36('0x64')])){utils[_0x4e36('0x10')](util[_0x4e36('0x4')](_0x4e36('0x65'),_0x967631['uniqueid']),_0x967631);queues[_0x967631['uniqueid']][_0x4e36('0x5c')]+=utils[_0x4e36('0x34')](utils[_0x4e36('0x1e')](),queues[_0x967631[_0x4e36('0xf')]][_0x4e36('0x64')]);utils[_0x4e36('0x3')](util[_0x4e36('0x4')](_0x4e36('0x66'),_0x967631[_0x4e36('0xf')],queues[_0x967631['uniqueid']][_0x4e36('0x20')],queues[_0x967631[_0x4e36('0xf')]][_0x4e36('0x5c')]));delete queues[_0x967631['uniqueid']][_0x4e36('0x64')];}}}catch(_0x37a0fa){utils['error'](util[_0x4e36('0x4')]('[%s][queues][musiconholdstop]',_0x967631[_0x4e36('0xf')]),_0x37a0fa);}};
\ No newline at end of file
+var _0xacf7=['variable','queuestatus','value','toUpperCase','queuecallerabandon','queuecallerabandonAt','queuecallerexit','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','holdtime','diffTime','queuecallerjoinAt','count','connectedlinename','agentconnect','[%s][queues][agentconnect]','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','transfer','TRANSFER','COMPLETEDBY','reason','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][attendedtransfer]','origtransfererlinkedid','secondtransfererlinkedid','origtransfereruniqueid','origtransfererexten','ATTENDED','transferexten','ATTENDEDTRANSFER','transfereelinkedid','transfertargetuniqueid','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','accountcode','queue','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','hangup','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','queuecallerexitreason','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','error','varset','[%s][queues][varset]'];(function(_0x46bc4b,_0x40c24b){var _0x26b6a3=function(_0x49b9e5){while(--_0x49b9e5){_0x46bc4b['push'](_0x46bc4b['shift']());}};_0x26b6a3(++_0x40c24b);}(_0xacf7,0x1ec));var _0x7acf=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xacf7[_0x2641f9];return _0x585741;};'use strict';var _=require('lodash');var util=require(_0x7acf('0x0'));var utils=require(_0x7acf('0x1'));var queues={};function writeDB(_0xc6b84e){utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x4'),_0xc6b84e[_0x7acf('0x5')],_0xc6b84e[_0x7acf('0x6')],_0xc6b84e['queue'],_0xc6b84e[_0x7acf('0x7')],_0xc6b84e['calleridnum'],_0xc6b84e[_0x7acf('0x8')],_0xc6b84e['queuecallerexitreason']));if(_0xc6b84e[_0x7acf('0x9')]){utils[_0x7acf('0xa')](_0xc6b84e[_0x7acf('0x9')])[_0x7acf('0xb')](function(_0x1a1ffa){if(_0x1a1ffa){_0xc6b84e[_0x7acf('0xc')]=_0x1a1ffa[_0x7acf('0xc')];}utils[_0x7acf('0xd')](_0x7acf('0xe'),_0xc6b84e);});}else{utils[_0x7acf('0xd')](_0x7acf('0xe'),_0xc6b84e);}if(_0xc6b84e[_0x7acf('0xf')]){delete queues[_0xc6b84e[_0x7acf('0xf')]];}else{delete queues[_0xc6b84e[_0x7acf('0x5')]];}}exports[_0x7acf('0x10')]=function(_0xdd71d3){try{utils['debug'](util[_0x7acf('0x3')](_0x7acf('0x11'),_0xdd71d3[_0x7acf('0x5')]),_0xdd71d3);utils['info'](util[_0x7acf('0x3')](_0x7acf('0x12'),_0xdd71d3[_0x7acf('0x5')],_0xdd71d3[_0x7acf('0x9')],_0xdd71d3[_0x7acf('0x13')]));queues[_0xdd71d3['uniqueid']]=_[_0x7acf('0x14')](_0xdd71d3,{'originalposition':_0xdd71d3['position'],'queuecallerjoinAt':utils[_0x7acf('0x15')](),'mohtime':0x0});}catch(_0x59d141){utils['error'](util[_0x7acf('0x3')](_0x7acf('0x11'),_0xdd71d3['uniqueid']),_0x59d141);}};exports[_0x7acf('0x16')]=function(_0x1c3c74){try{if(!_[_0x7acf('0x17')](queues[_0x1c3c74[_0x7acf('0x5')]])){utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x19'),_0x1c3c74[_0x7acf('0x5')]),_0x1c3c74);if(queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0x1a')]){if(!queues[_0x1c3c74[_0x7acf('0x5')]]['queuecallerabandon']&&!queues[_0x1c3c74[_0x7acf('0x5')]]['queuecallerexit']){queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0x1b')]=!![];queues[_0x1c3c74['uniqueid']][_0x7acf('0x1c')]=utils['now']();queues[_0x1c3c74['uniqueid']][_0x7acf('0x1d')]=_0x7acf('0x1e');}utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x1f'),_0x1c3c74['uniqueid'],queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0x20')],queues[_0x1c3c74['uniqueid']]['queuecallerexitreason']));writeDB(queues[_0x1c3c74[_0x7acf('0x5')]]);}else if(queues[_0x1c3c74[_0x7acf('0x5')]]['transfereduniqueid']){utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x21'),_0x1c3c74['uniqueid'],queues[_0x1c3c74[_0x7acf('0x5')]]['name'],queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0xf')]));queues[queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0xf')]]=queues[_0x1c3c74[_0x7acf('0x5')]];queues[queues[_0x1c3c74[_0x7acf('0x5')]][_0x7acf('0xf')]][_0x7acf('0x22')]=0x2;delete queues[_0x1c3c74[_0x7acf('0x5')]];}}}catch(_0x429481){utils[_0x7acf('0x23')](util['format'](_0x7acf('0x19'),_0x1c3c74[_0x7acf('0x5')]),_0x429481);}};exports[_0x7acf('0x24')]=function(_0x6d322){try{utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x25'),_0x6d322[_0x7acf('0x5')]),_0x6d322);if(!_['isNil'](_0x6d322[_0x7acf('0x26')][_0x7acf('0x27')])&&_0x6d322[_0x7acf('0x28')][_0x7acf('0x29')]()!=='CONTINUE'){if(!_[_0x7acf('0x17')](queues[_0x6d322[_0x7acf('0x5')]])){queues[_0x6d322['uniqueid']][_0x7acf('0x2a')]=![];queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2b')]=null;queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2c')]=!![];queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2d')]=utils[_0x7acf('0x15')]();queues[_0x6d322['uniqueid']]['queuecallerexitreason']=_0x6d322[_0x7acf('0x28')][_0x7acf('0x29')]();utils['info'](util[_0x7acf('0x3')](_0x7acf('0x2e'),_0x6d322[_0x7acf('0x5')],queues[_0x6d322['uniqueid']][_0x7acf('0x20')],_0x6d322['value'],queues[_0x6d322[_0x7acf('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x6d322[_0x7acf('0x5')]]);}}else if(!_[_0x7acf('0x17')](_0x6d322[_0x7acf('0x26')]['queueposition'])){if(!_[_0x7acf('0x17')](queues[_0x6d322[_0x7acf('0x5')]])&&!queues[_0x6d322[_0x7acf('0x5')]]['queuecallerabandon']){queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2a')]=![];queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2b')]=null;queues[_0x6d322['uniqueid']][_0x7acf('0x2c')]=!![];queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x2d')]=utils[_0x7acf('0x15')]();queues[_0x6d322['uniqueid']][_0x7acf('0x1d')]='EXITWITHKEY';utils[_0x7acf('0x2')](util['format'](_0x7acf('0x2f'),_0x6d322[_0x7acf('0x5')],queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x20')],_0x6d322['value'],queues[_0x6d322[_0x7acf('0x5')]][_0x7acf('0x1d')]));}}}catch(_0x1d8e2a){utils['error'](util[_0x7acf('0x3')]('[%s][queues][varset]',_0x6d322[_0x7acf('0x5')]),_0x1d8e2a);}};exports[_0x7acf('0x2a')]=function(_0x44c775){try{if(!_[_0x7acf('0x17')](queues[_0x44c775['uniqueid']])){utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x30'),_0x44c775['uniqueid']),_0x44c775);queues[_0x44c775[_0x7acf('0x5')]][_0x7acf('0x2c')]=![];queues[_0x44c775[_0x7acf('0x5')]][_0x7acf('0x2d')]=null;queues[_0x44c775[_0x7acf('0x5')]][_0x7acf('0x2a')]=!![];queues[_0x44c775['uniqueid']][_0x7acf('0x2b')]=utils['now']();queues[_0x44c775[_0x7acf('0x5')]]['queuecallerexitreason']=_0x7acf('0x31');utils[_0x7acf('0x2')](util[_0x7acf('0x3')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x44c775['uniqueid'],queues[_0x44c775[_0x7acf('0x5')]][_0x7acf('0x20')],queues[_0x44c775[_0x7acf('0x5')]][_0x7acf('0x1d')]));}}catch(_0x5a105f){utils[_0x7acf('0x23')](util['format'](_0x7acf('0x30'),_0x44c775[_0x7acf('0x5')]),_0x5a105f);}};exports['queuecallerleave']=function(_0x5bfc72){try{if(!_[_0x7acf('0x17')](queues[_0x5bfc72['uniqueid']])){utils[_0x7acf('0x18')](util['format'](_0x7acf('0x32'),_0x5bfc72[_0x7acf('0x5')]),_0x5bfc72);utils[_0x7acf('0x2')](util['format'](_0x7acf('0x33'),_0x5bfc72['uniqueid'],queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x20')],_0x5bfc72[_0x7acf('0x34')],_0x5bfc72['connectedlinename']));queues[_0x5bfc72[_0x7acf('0x5')]]['queuecallerleave']=!![];queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x1a')]=utils['now']();queues[_0x5bfc72['uniqueid']][_0x7acf('0x35')]=utils[_0x7acf('0x36')](queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x1a')],queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x37')]);queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x13')]=_0x5bfc72[_0x7acf('0x13')];queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x38')]=_0x5bfc72['count'];queues[_0x5bfc72['uniqueid']][_0x7acf('0x34')]=_0x5bfc72['connectedlinenum'];queues[_0x5bfc72[_0x7acf('0x5')]][_0x7acf('0x39')]=_0x5bfc72['connectedlinename'];}}catch(_0x35a2b4){utils[_0x7acf('0x23')](util['format'](_0x7acf('0x32'),_0x5bfc72[_0x7acf('0x5')]),_0x35a2b4);}};exports[_0x7acf('0x3a')]=function(_0x262aeb){try{if(!_['isNil'](queues[_0x262aeb[_0x7acf('0x5')]])){utils[_0x7acf('0x18')](util['format'](_0x7acf('0x3b'),_0x262aeb['uniqueid']),_0x262aeb);utils[_0x7acf('0x2')](util[_0x7acf('0x3')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x262aeb[_0x7acf('0x5')],queues[_0x262aeb['uniqueid']][_0x7acf('0x20')],_0x262aeb[_0x7acf('0x3c')],_0x262aeb[_0x7acf('0x3d')]));queues[_0x262aeb[_0x7acf('0x5')]][_0x7acf('0x2a')]=![];queues[_0x262aeb['uniqueid']][_0x7acf('0x2a')]=![];queues[_0x262aeb[_0x7acf('0x5')]][_0x7acf('0x2b')]=null;queues[_0x262aeb[_0x7acf('0x5')]]['queuecallerexit']=![];queues[_0x262aeb[_0x7acf('0x5')]][_0x7acf('0x1d')]=null;queues[_0x262aeb[_0x7acf('0x5')]]['queuecallerexitAt']=null;queues[_0x262aeb['uniqueid']][_0x7acf('0x3e')]=!![];queues[_0x262aeb[_0x7acf('0x5')]][_0x7acf('0x8')]=_0x262aeb[_0x7acf('0x3d')];queues[_0x262aeb['uniqueid']]['lastAssignedTo']=_0x262aeb[_0x7acf('0x3c')];}}catch(_0x5e7697){utils['error'](util['format']('[%s][queues][agentconnect]',_0x262aeb[_0x7acf('0x5')]),_0x5e7697);}};exports[_0x7acf('0x3f')]=function(_0x5f4d24){try{if(!_[_0x7acf('0x17')](queues[_0x5f4d24[_0x7acf('0x5')]])){if(queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x1a')]){utils[_0x7acf('0x18')](util['format'](_0x7acf('0x40'),_0x5f4d24[_0x7acf('0x5')]),_0x5f4d24);queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x2a')]=![];queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x2a')]=![];queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x2b')]=null;queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x2c')]=![];queues[_0x5f4d24[_0x7acf('0x5')]]['queuecallerexitAt']=null;queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x3e')]=!![];queues[_0x5f4d24[_0x7acf('0x5')]]['lastAssignedTo']=_0x5f4d24['membername'];queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x1b')]=!![];queues[_0x5f4d24['uniqueid']]['queuecallercompleteAt']=utils[_0x7acf('0x15')]();if(_0x5f4d24['reason']==_0x7acf('0x41')){if(!queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x41')]){queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x1d')]=_0x7acf('0x42');}}else{queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x1d')]=_0x7acf('0x43')+_0x5f4d24[_0x7acf('0x44')][_0x7acf('0x29')]();}utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x45'),_0x5f4d24['uniqueid'],queues[_0x5f4d24[_0x7acf('0x5')]]['name'],_0x5f4d24[_0x7acf('0x3c')],queues[_0x5f4d24[_0x7acf('0x5')]][_0x7acf('0x1d')]));writeDB(queues[_0x5f4d24[_0x7acf('0x5')]]);}}}catch(_0x1870b8){utils[_0x7acf('0x23')](util[_0x7acf('0x3')](_0x7acf('0x40'),_0x5f4d24[_0x7acf('0x5')]),_0x1870b8);}};exports[_0x7acf('0x46')]=function(_0x98ab2f){try{if(!_[_0x7acf('0x17')](queues[_0x98ab2f['transfereeuniqueid']])){utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x47'),_0x98ab2f[_0x7acf('0x5')]),_0x98ab2f);queues[_0x98ab2f[_0x7acf('0x48')]]['transfer']=!![];queues[_0x98ab2f['transfereeuniqueid']][_0x7acf('0x49')]=_0x7acf('0x4a');queues[_0x98ab2f[_0x7acf('0x48')]]['transferexten']=_0x98ab2f['extension'];queues[_0x98ab2f[_0x7acf('0x48')]][_0x7acf('0x4b')]=_0x98ab2f[_0x7acf('0x48')];queues[_0x98ab2f[_0x7acf('0x48')]][_0x7acf('0x1d')]=_0x7acf('0x4c');utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x4d'),_0x98ab2f['uniqueid'],queues[_0x98ab2f['transfereeuniqueid']][_0x7acf('0x20')],_0x98ab2f[_0x7acf('0x48')],_0x98ab2f['extension']));}}catch(_0xc42983){utils[_0x7acf('0x23')](util['format'](_0x7acf('0x47'),_0x98ab2f[_0x7acf('0x5')]),_0xc42983);}};exports['attendedtransfer']=function(_0x255777){try{utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x4e'),_0x255777['origtransfereruniqueid']),_0x255777);if(_0x255777['origtransfereruniqueid']==_0x255777[_0x7acf('0x4f')]){if(!_[_0x7acf('0x17')](queues[_0x255777[_0x7acf('0x50')]])){utils[_0x7acf('0x2')](util[_0x7acf('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x255777[_0x7acf('0x51')],queues[_0x255777['secondtransfererlinkedid']][_0x7acf('0x20')],_0x255777[_0x7acf('0x52')]));queues[_0x255777[_0x7acf('0x50')]]['transfer']=!![];queues[_0x255777['secondtransfererlinkedid']][_0x7acf('0x49')]=_0x7acf('0x53');queues[_0x255777[_0x7acf('0x50')]][_0x7acf('0x54')]=_0x255777[_0x7acf('0x52')];queues[_0x255777[_0x7acf('0x50')]][_0x7acf('0x4b')]=_0x255777['origtransfereruniqueid'];queues[_0x255777['secondtransfererlinkedid']][_0x7acf('0x1d')]=_0x7acf('0x55');}if(!_[_0x7acf('0x17')](queues[_0x255777[_0x7acf('0x4f')]])){if(_0x255777[_0x7acf('0x56')]&&queues[_0x255777[_0x7acf('0x56')]]){queues[_0x255777['transfereelinkedid']][_0x7acf('0x22')]=0x1;queues[_0x255777[_0x7acf('0x48')]]=_['clone'](queues[_0x255777['transfereelinkedid']]);queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0xf')]=_0x255777[_0x7acf('0x57')];queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x22')]=0x2;queues[_0x255777[_0x7acf('0x48')]]['calleridnum']=queues[_0x255777[_0x7acf('0x50')]][_0x7acf('0x58')];queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x59')]=queues[_0x255777[_0x7acf('0x50')]][_0x7acf('0x59')];queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x37')]=utils['now']();queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x1a')]=utils['now']();queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x35')]=0x0;queues[_0x255777['transfereeuniqueid']][_0x7acf('0x5a')]=0x0;utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x5b'),_0x255777['origtransfereruniqueid'],queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x20')],queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x58')],queues[_0x255777[_0x7acf('0x48')]][_0x7acf('0x59')]));}else{utils[_0x7acf('0x2')](util['format'](_0x7acf('0x5c'),_0x255777[_0x7acf('0x51')],queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x20')],_0x255777[_0x7acf('0x50')]));queues[_0x255777['origtransfererlinkedid']][_0x7acf('0xf')]=_0x255777['secondtransfererlinkedid'];}}}else if(_0x255777[_0x7acf('0x5d')]==_0x255777[_0x7acf('0x50')]){if(!_['isNil'](queues[_0x255777[_0x7acf('0x4f')]])){utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x5e'),_0x255777[_0x7acf('0x51')],queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x20')],_0x255777['secondtransfereruniqueid'],_0x255777[_0x7acf('0x5f')]));queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x41')]=!![];queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x49')]=_0x7acf('0x53');queues[_0x255777[_0x7acf('0x4f')]]['transferexten']=_0x255777[_0x7acf('0x5f')];queues[_0x255777['origtransfererlinkedid']][_0x7acf('0x4b')]=_0x255777[_0x7acf('0x5d')];queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x1d')]='ATTENDEDTRANSFER';}if(!_[_0x7acf('0x17')](queues[_0x255777[_0x7acf('0x50')]])){if(_0x255777[_0x7acf('0x60')]&&queues[_0x255777[_0x7acf('0x60')]]){queues[_0x255777[_0x7acf('0x60')]][_0x7acf('0x22')]=0x1;queues[_0x255777['transfertargetuniqueid']]=_[_0x7acf('0x61')](queues[_0x255777['transfertargetlinkedid']]);queues[_0x255777['transfertargetuniqueid']][_0x7acf('0xf')]=_0x255777['transfertargetuniqueid'];queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x22')]=0x2;queues[_0x255777[_0x7acf('0x57')]]['calleridnum']=queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x58')];queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x59')]=queues[_0x255777[_0x7acf('0x4f')]][_0x7acf('0x59')];queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x37')]=utils[_0x7acf('0x15')]();queues[_0x255777[_0x7acf('0x57')]]['queuecallerleaveAt']=utils['now']();queues[_0x255777['transfertargetuniqueid']][_0x7acf('0x35')]=0x0;queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x5a')]=0x0;utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x62'),_0x255777[_0x7acf('0x51')],queues[_0x255777[_0x7acf('0x57')]]['name'],queues[_0x255777[_0x7acf('0x57')]]['transfereduniqueid'],queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x58')],queues[_0x255777[_0x7acf('0x57')]][_0x7acf('0x59')]));}else{utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x5c'),_0x255777[_0x7acf('0x51')],queues[_0x255777[_0x7acf('0x50')]][_0x7acf('0x20')],_0x255777[_0x7acf('0x4f')]));queues[_0x255777['secondtransfererlinkedid']][_0x7acf('0xf')]=_0x255777[_0x7acf('0x4f')];}}}}catch(_0x595eed){utils[_0x7acf('0x23')](util[_0x7acf('0x3')](_0x7acf('0x4e'),_0x255777[_0x7acf('0x51')]),_0x595eed);}};exports[_0x7acf('0x63')]=function(_0x559960){try{if(!_[_0x7acf('0x17')](queues[_0x559960['uniqueid']])){utils['debug'](util[_0x7acf('0x3')](_0x7acf('0x64'),_0x559960['uniqueid']),_0x559960);queues[_0x559960[_0x7acf('0x5')]][_0x7acf('0x65')]=utils[_0x7acf('0x15')]();utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x66'),_0x559960['uniqueid'],queues[_0x559960[_0x7acf('0x5')]][_0x7acf('0x20')],queues[_0x559960[_0x7acf('0x5')]]['musiconholdstartAt']));}}catch(_0x168b9b){utils['error'](util['format'](_0x7acf('0x64'),_0x559960[_0x7acf('0x5')]),_0x168b9b);}};exports[_0x7acf('0x67')]=function(_0x2f5e2e){try{if(!_['isNil'](queues[_0x2f5e2e[_0x7acf('0x5')]])){if(!_[_0x7acf('0x17')](queues[_0x2f5e2e[_0x7acf('0x5')]]['musiconholdstartAt'])){utils[_0x7acf('0x18')](util[_0x7acf('0x3')](_0x7acf('0x68'),_0x2f5e2e['uniqueid']),_0x2f5e2e);queues[_0x2f5e2e[_0x7acf('0x5')]][_0x7acf('0x5a')]+=utils[_0x7acf('0x36')](utils[_0x7acf('0x15')](),queues[_0x2f5e2e[_0x7acf('0x5')]]['musiconholdstartAt']);utils[_0x7acf('0x2')](util[_0x7acf('0x3')](_0x7acf('0x69'),_0x2f5e2e[_0x7acf('0x5')],queues[_0x2f5e2e['uniqueid']][_0x7acf('0x20')],queues[_0x2f5e2e['uniqueid']]['mohtime']));delete queues[_0x2f5e2e[_0x7acf('0x5')]][_0x7acf('0x65')];}}}catch(_0x53ccad){utils[_0x7acf('0x23')](util['format'](_0x7acf('0x68'),_0x2f5e2e[_0x7acf('0x5')]),_0x53ccad);}};
\ No newline at end of file
index 3a1063d..67dbc95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95e3=['accountcode','then','membername','name','UserId','request','CreateVoiceRecording','format','[%s][recordings][newchannel]','uniqueid','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','debug','[%s][recordings][varset]','value','endsWith','.wav49','replace','.WAV','monitors','push','hangup','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','forEach','clone','[%s][recordings][hangup]','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','set','cdr','split','substring','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','./utils','info','[%s][recordings][writeDB]','getUserByInternal'];(function(_0x2e1ce9,_0x5e82a5){var _0x155412=function(_0x49220f){while(--_0x49220f){_0x2e1ce9['push'](_0x2e1ce9['shift']());}};_0x155412(++_0x5e82a5);}(_0x95e3,0xf7));var _0x395e=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x95e3[_0x46698a];return _0x356db0;};'use strict';var _=require(_0x395e('0x0'));var util=require('util');var utils=require(_0x395e('0x1'));var recordings={};function writeDB(_0x1b12d7){utils[_0x395e('0x2')](util['format'](_0x395e('0x3'),_0x1b12d7['uniqueid']));if(_0x1b12d7['accountcode']){utils[_0x395e('0x4')](_0x1b12d7[_0x395e('0x5')])[_0x395e('0x6')](function(_0x5ab8f5){if(_0x5ab8f5){_0x1b12d7[_0x395e('0x7')]=_0x5ab8f5[_0x395e('0x8')];_0x1b12d7[_0x395e('0x9')]=_0x5ab8f5['id'];}utils[_0x395e('0xa')](_0x395e('0xb'),_0x1b12d7);});}else{utils[_0x395e('0xa')](_0x395e('0xb'),_0x1b12d7);}}exports['newchannel']=function(_0x458104){try{utils['debug'](util[_0x395e('0xc')](_0x395e('0xd'),_0x458104[_0x395e('0xe')]),_0x458104);if(_0x458104[_0x395e('0xe')]==_0x458104[_0x395e('0xf')]){utils['info'](util[_0x395e('0xc')](_0x395e('0x10'),_0x458104['uniqueid'],_0x458104[_0x395e('0x11')],_0x458104['exten']));recordings[_0x458104[_0x395e('0xe')]]={'uniqueid':_0x458104[_0x395e('0xe')],'accountcode':_0x458104[_0x395e('0x5')],'exten':_0x458104[_0x395e('0x12')],'context':_0x458104[_0x395e('0x11')],'channel':_0x458104[_0x395e('0x13')],'monitors':[]};}}catch(_0x2b2b29){utils[_0x395e('0x14')](util[_0x395e('0xc')](_0x395e('0xd'),_0x458104['uniqueid']),_0x2b2b29);}};exports['newstate']=function(_0x17c2b2){try{utils['debug'](util[_0x395e('0xc')](_0x395e('0x15'),_0x17c2b2[_0x395e('0xe')]),_0x17c2b2);if(!_[_0x395e('0x16')](recordings[_0x17c2b2[_0x395e('0xe')]])&&_0x17c2b2[_0x395e('0x17')]==0x6){utils[_0x395e('0x2')](util['format'](_0x395e('0x18'),_0x17c2b2[_0x395e('0xe')],_0x17c2b2[_0x395e('0x11')],_0x17c2b2[_0x395e('0x13')]));}else if(!_[_0x395e('0x16')](recordings[_0x17c2b2['linkedid']])&&_0x17c2b2[_0x395e('0x17')]==0x6&&_0x17c2b2[_0x395e('0x11')]!=_0x395e('0x19')){utils[_0x395e('0x2')](util['format'](_0x395e('0x1a'),_0x17c2b2[_0x395e('0xe')],_0x17c2b2[_0x395e('0xf')],_0x17c2b2[_0x395e('0x11')],_0x17c2b2[_0x395e('0x13')]));recordings[_0x17c2b2['linkedid']][_0x395e('0x5')]=_0x17c2b2['accountcode'];}}catch(_0x5a176c){utils[_0x395e('0x14')](util[_0x395e('0xc')](_0x395e('0x15'),_0x17c2b2[_0x395e('0xe')]),_0x5a176c);}};exports[_0x395e('0x1b')]=function(_0x3d5fef){try{if(!_[_0x395e('0x16')](_0x3d5fef['variable'])&&!_[_0x395e('0x16')](_0x3d5fef[_0x395e('0x1c')][_0x395e('0x1d')])){utils[_0x395e('0x1e')](util['format'](_0x395e('0x1f'),_0x3d5fef[_0x395e('0xe')]),_0x3d5fef);utils['info'](util[_0x395e('0xc')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x3d5fef['uniqueid'],_0x3d5fef[_0x395e('0x1c')],_0x3d5fef[_0x395e('0x20')]));if(_[_0x395e('0x21')](_0x3d5fef[_0x395e('0x20')],_0x395e('0x22'))){_0x3d5fef[_0x395e('0x20')]=_0x3d5fef[_0x395e('0x20')][_0x395e('0x23')](_0x395e('0x22'),_0x395e('0x24'));}if(recordings[_0x3d5fef[_0x395e('0xf')]]){var _0x50a4c2=_['find'](recordings[_0x3d5fef[_0x395e('0xf')]][_0x395e('0x25')],{'value':_0x3d5fef['value']});if(_[_0x395e('0x16')](_0x50a4c2)){recordings[_0x3d5fef[_0x395e('0xf')]][_0x395e('0x25')][_0x395e('0x26')]({'value':_0x3d5fef[_0x395e('0x20')]});}}}}catch(_0x462d6b){utils[_0x395e('0x14')](util[_0x395e('0xc')](_0x395e('0x1f'),_0x3d5fef[_0x395e('0xe')]),_0x462d6b);}};exports[_0x395e('0x27')]=function(_0x41dbba){try{if(!_['isNil'](recordings[_0x41dbba[_0x395e('0xe')]])){utils[_0x395e('0x1e')](util['format']('[%s][recordings][hangup]',_0x41dbba[_0x395e('0xe')]),_0x41dbba);utils[_0x395e('0x2')](util[_0x395e('0xc')](_0x395e('0x28'),_0x41dbba[_0x395e('0xe')],_0x41dbba[_0x395e('0x29')],_0x41dbba[_0x395e('0x2a')],_0x41dbba['cause-txt']));recordings[_0x41dbba[_0x395e('0xe')]][_0x395e('0x29')]=_0x41dbba['calleridnum'];recordings[_0x41dbba['uniqueid']][_0x395e('0x2a')]=_0x41dbba[_0x395e('0x2a')];recordings[_0x41dbba['uniqueid']][_0x395e('0x2b')]=_0x41dbba['connectedlinenum'];recordings[_0x41dbba[_0x395e('0xe')]][_0x395e('0x2c')]=_0x41dbba[_0x395e('0x2c')];if(recordings[_0x41dbba['uniqueid']][_0x395e('0x2d')]==_0x395e('0x2e')&&recordings[_0x41dbba[_0x395e('0xe')]]['accountcode']){recordings[_0x41dbba[_0x395e('0xe')]][_0x395e('0x2b')]=recordings[_0x41dbba['uniqueid']][_0x395e('0x5')];recordings[_0x41dbba[_0x395e('0xe')]]['connectedlinename']='';}recordings[_0x41dbba['uniqueid']][_0x395e('0x25')][_0x395e('0x2f')](function(_0x470167){var _0x550ba0=_[_0x395e('0x30')](recordings[_0x41dbba[_0x395e('0xe')]]);_0x550ba0['value']=_0x470167[_0x395e('0x20')];writeDB(_0x550ba0);});delete recordings[_0x41dbba[_0x395e('0xe')]];}}catch(_0x708d16){utils[_0x395e('0x14')](util[_0x395e('0xc')](_0x395e('0x31'),_0x41dbba[_0x395e('0xe')]),_0x708d16);}};exports[_0x395e('0x32')]=function(_0x5a49a8){try{if(!_[_0x395e('0x16')](recordings[_0x5a49a8[_0x395e('0xe')]])){utils[_0x395e('0x1e')](util['format'](_0x395e('0x33'),_0x5a49a8[_0x395e('0xe')]),_0x5a49a8);utils['info'](util[_0x395e('0xc')](_0x395e('0x34'),_0x5a49a8[_0x395e('0xe')],_0x5a49a8['application'],_0x5a49a8[_0x395e('0x35')]));if(_0x5a49a8[_0x395e('0x36')][_0x395e('0x37')]()==_0x395e('0x38')&&_['startsWith'](_0x5a49a8['appdata'][_0x395e('0x37')](),_0x395e('0x39'))){var _0x9cc114=_0x5a49a8[_0x395e('0x35')][_0x395e('0x3a')]('=');var _0x5a73be=_0x9cc114[0x0][_0x395e('0x3b')](_0x9cc114[0x0]['lastIndexOf']('(')+0x1,_0x9cc114[0x0]['lastIndexOf'](')'));var _0x483acc=_0x9cc114[0x1];recordings[_0x5a49a8[_0x395e('0xe')]][_0x5a73be]=_0x483acc;}}}catch(_0x494ba4){utils[_0x395e('0x14')](util[_0x395e('0xc')]('[%s][recordings][newexten]',_0x5a49a8['uniqueid']),_0x494ba4);}};exports['queuecallerjoin']=function(_0x260a8a){try{if(!_[_0x395e('0x16')](recordings[_0x260a8a['uniqueid']])){utils[_0x395e('0x1e')](util[_0x395e('0xc')](_0x395e('0x3c'),_0x260a8a[_0x395e('0xe')]),_0x260a8a);utils[_0x395e('0x2')](util[_0x395e('0xc')](_0x395e('0x3d'),_0x260a8a['uniqueid'],_0x260a8a[_0x395e('0x3e')]));recordings[_0x260a8a['uniqueid']][_0x395e('0x3e')]=_0x260a8a[_0x395e('0x3e')];}}catch(_0x3c1778){utils['error'](util[_0x395e('0xc')](_0x395e('0x3c'),_0x260a8a[_0x395e('0xe')]),_0x3c1778);}};
\ No newline at end of file
+var _0xf029=['application','appdata','set','startsWith','toLowerCase','cdr','split','substring','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][queuecallerjoin]','util','./utils','format','[%s][recordings][writeDB]','uniqueid','accountcode','then','UserId','request','CreateVoiceRecording','debug','[%s][recordings][newchannel]','context','exten','channel','newstate','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','linkedid','transfer','info','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','error','[%s][recordings][newstate]','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','replace','.wav49','.WAV','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','outbound','forEach','clone','newexten','[%s][recordings][newexten]\x20application:%s\x20appdata:%s'];(function(_0x270eaf,_0x199fc2){var _0x5ef1d9=function(_0x380cea){while(--_0x380cea){_0x270eaf['push'](_0x270eaf['shift']());}};_0x5ef1d9(++_0x199fc2);}(_0xf029,0x8e));var _0x9f02=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xf029[_0x51020b];return _0x371e47;};'use strict';var _=require('lodash');var util=require(_0x9f02('0x0'));var utils=require(_0x9f02('0x1'));var recordings={};function writeDB(_0x2380c0){utils['info'](util[_0x9f02('0x2')](_0x9f02('0x3'),_0x2380c0[_0x9f02('0x4')]));if(_0x2380c0[_0x9f02('0x5')]){utils['getUserByInternal'](_0x2380c0[_0x9f02('0x5')])[_0x9f02('0x6')](function(_0x478668){if(_0x478668){_0x2380c0['membername']=_0x478668['name'];_0x2380c0[_0x9f02('0x7')]=_0x478668['id'];}utils[_0x9f02('0x8')](_0x9f02('0x9'),_0x2380c0);});}else{utils['request'](_0x9f02('0x9'),_0x2380c0);}}exports['newchannel']=function(_0x45c25e){try{utils[_0x9f02('0xa')](util[_0x9f02('0x2')](_0x9f02('0xb'),_0x45c25e[_0x9f02('0x4')]),_0x45c25e);if(_0x45c25e[_0x9f02('0x4')]==_0x45c25e['linkedid']){utils['info'](util[_0x9f02('0x2')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x45c25e[_0x9f02('0x4')],_0x45c25e[_0x9f02('0xc')],_0x45c25e[_0x9f02('0xd')]));recordings[_0x45c25e[_0x9f02('0x4')]]={'uniqueid':_0x45c25e[_0x9f02('0x4')],'accountcode':_0x45c25e[_0x9f02('0x5')],'exten':_0x45c25e[_0x9f02('0xd')],'context':_0x45c25e[_0x9f02('0xc')],'channel':_0x45c25e[_0x9f02('0xe')],'monitors':[]};}}catch(_0x281af9){utils['error'](util['format'](_0x9f02('0xb'),_0x45c25e['uniqueid']),_0x281af9);}};exports[_0x9f02('0xf')]=function(_0x45a96c){try{utils[_0x9f02('0xa')](util['format']('[%s][recordings][newstate]',_0x45a96c[_0x9f02('0x4')]),_0x45a96c);if(!_[_0x9f02('0x10')](recordings[_0x45a96c['uniqueid']])&&_0x45a96c[_0x9f02('0x11')]==0x6){utils['info'](util['format'](_0x9f02('0x12'),_0x45a96c['uniqueid'],_0x45a96c[_0x9f02('0xc')],_0x45a96c[_0x9f02('0xe')]));}else if(!_[_0x9f02('0x10')](recordings[_0x45a96c[_0x9f02('0x13')]])&&_0x45a96c[_0x9f02('0x11')]==0x6&&_0x45a96c[_0x9f02('0xc')]!=_0x9f02('0x14')){utils[_0x9f02('0x15')](util[_0x9f02('0x2')](_0x9f02('0x16'),_0x45a96c[_0x9f02('0x4')],_0x45a96c[_0x9f02('0x13')],_0x45a96c['context'],_0x45a96c[_0x9f02('0xe')]));recordings[_0x45a96c['linkedid']][_0x9f02('0x5')]=_0x45a96c['accountcode'];}}catch(_0x3c0e3c){utils[_0x9f02('0x17')](util[_0x9f02('0x2')](_0x9f02('0x18'),_0x45a96c[_0x9f02('0x4')]),_0x3c0e3c);}};exports[_0x9f02('0x19')]=function(_0x284b19){try{if(!_[_0x9f02('0x10')](_0x284b19[_0x9f02('0x1a')])&&!_['isNil'](_0x284b19[_0x9f02('0x1a')][_0x9f02('0x1b')])){utils['debug'](util[_0x9f02('0x2')](_0x9f02('0x1c'),_0x284b19[_0x9f02('0x4')]),_0x284b19);utils[_0x9f02('0x15')](util[_0x9f02('0x2')](_0x9f02('0x1d'),_0x284b19[_0x9f02('0x4')],_0x284b19[_0x9f02('0x1a')],_0x284b19['value']));if(_['endsWith'](_0x284b19[_0x9f02('0x1e')],'.wav49')){_0x284b19['value']=_0x284b19[_0x9f02('0x1e')][_0x9f02('0x1f')](_0x9f02('0x20'),_0x9f02('0x21'));}if(recordings[_0x284b19[_0x9f02('0x13')]]){var _0x476a03=_[_0x9f02('0x22')](recordings[_0x284b19['linkedid']][_0x9f02('0x23')],{'value':_0x284b19['value']});if(_[_0x9f02('0x10')](_0x476a03)){recordings[_0x284b19['linkedid']][_0x9f02('0x23')][_0x9f02('0x24')]({'value':_0x284b19[_0x9f02('0x1e')]});}}}}catch(_0x46cb4f){utils['error'](util[_0x9f02('0x2')]('[%s][recordings][varset]',_0x284b19[_0x9f02('0x4')]),_0x46cb4f);}};exports[_0x9f02('0x25')]=function(_0x17d273){try{if(!_[_0x9f02('0x10')](recordings[_0x17d273[_0x9f02('0x4')]])){utils[_0x9f02('0xa')](util['format'](_0x9f02('0x26'),_0x17d273[_0x9f02('0x4')]),_0x17d273);utils[_0x9f02('0x15')](util[_0x9f02('0x2')](_0x9f02('0x27'),_0x17d273[_0x9f02('0x4')],_0x17d273[_0x9f02('0x28')],_0x17d273[_0x9f02('0x29')],_0x17d273[_0x9f02('0x2a')]));recordings[_0x17d273[_0x9f02('0x4')]][_0x9f02('0x28')]=_0x17d273['calleridnum'];recordings[_0x17d273[_0x9f02('0x4')]]['calleridname']=_0x17d273[_0x9f02('0x29')];recordings[_0x17d273[_0x9f02('0x4')]]['connectedlinenum']=_0x17d273[_0x9f02('0x2b')];recordings[_0x17d273['uniqueid']][_0x9f02('0x2c')]=_0x17d273[_0x9f02('0x2c')];if(recordings[_0x17d273[_0x9f02('0x4')]]['type']==_0x9f02('0x2d')&&recordings[_0x17d273['uniqueid']][_0x9f02('0x5')]){recordings[_0x17d273[_0x9f02('0x4')]]['connectedlinenum']=recordings[_0x17d273['uniqueid']]['accountcode'];recordings[_0x17d273['uniqueid']][_0x9f02('0x2c')]='';}recordings[_0x17d273['uniqueid']][_0x9f02('0x23')][_0x9f02('0x2e')](function(_0x1cbb89){var _0x30b41c=_[_0x9f02('0x2f')](recordings[_0x17d273[_0x9f02('0x4')]]);_0x30b41c[_0x9f02('0x1e')]=_0x1cbb89[_0x9f02('0x1e')];writeDB(_0x30b41c);});delete recordings[_0x17d273['uniqueid']];}}catch(_0x502130){utils[_0x9f02('0x17')](util['format'](_0x9f02('0x26'),_0x17d273['uniqueid']),_0x502130);}};exports[_0x9f02('0x30')]=function(_0x2c02c6){try{if(!_[_0x9f02('0x10')](recordings[_0x2c02c6['uniqueid']])){utils[_0x9f02('0xa')](util[_0x9f02('0x2')]('[%s][recordings][newexten]',_0x2c02c6[_0x9f02('0x4')]),_0x2c02c6);utils[_0x9f02('0x15')](util[_0x9f02('0x2')](_0x9f02('0x31'),_0x2c02c6[_0x9f02('0x4')],_0x2c02c6[_0x9f02('0x32')],_0x2c02c6[_0x9f02('0x33')]));if(_0x2c02c6[_0x9f02('0x32')]['toLowerCase']()==_0x9f02('0x34')&&_[_0x9f02('0x35')](_0x2c02c6['appdata'][_0x9f02('0x36')](),_0x9f02('0x37'))){var _0x37453e=_0x2c02c6['appdata'][_0x9f02('0x38')]('=');var _0x2da6da=_0x37453e[0x0][_0x9f02('0x39')](_0x37453e[0x0]['lastIndexOf']('(')+0x1,_0x37453e[0x0][_0x9f02('0x3a')](')'));var _0x2e2995=_0x37453e[0x1];recordings[_0x2c02c6[_0x9f02('0x4')]][_0x2da6da]=_0x2e2995;}}}catch(_0x232637){utils[_0x9f02('0x17')](util[_0x9f02('0x2')](_0x9f02('0x3b'),_0x2c02c6[_0x9f02('0x4')]),_0x232637);}};exports[_0x9f02('0x3c')]=function(_0x5f5336){try{if(!_[_0x9f02('0x10')](recordings[_0x5f5336[_0x9f02('0x4')]])){utils['debug'](util[_0x9f02('0x2')]('[%s][recordings][queuecallerjoin]',_0x5f5336[_0x9f02('0x4')]),_0x5f5336);utils[_0x9f02('0x15')](util['format'](_0x9f02('0x3d'),_0x5f5336[_0x9f02('0x4')],_0x5f5336[_0x9f02('0x3e')]));recordings[_0x5f5336[_0x9f02('0x4')]][_0x9f02('0x3e')]=_0x5f5336[_0x9f02('0x3e')];}}catch(_0x502eed){utils[_0x9f02('0x17')](util[_0x9f02('0x2')](_0x9f02('0x3f'),_0x5f5336[_0x9f02('0x4')]),_0x502eed);}};
\ No newline at end of file
index b2db831..376e245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e0d=['[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','assign','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','util','info','format','attended','origtransfereruniqueid','uniqueid','type','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','transferercalleridnum','transfereecalleridnum','transfereecalleridname','error','attendedtransfer'];(function(_0x486223,_0x3ff8ae){var _0x308dfc=function(_0x4c7e35){while(--_0x4c7e35){_0x486223['push'](_0x486223['shift']());}};_0x308dfc(++_0x3ff8ae);}(_0x8e0d,0x1b2));var _0xd8e0=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0x8e0d[_0x403c20];return _0x2b271a;};'use strict';var _=require(_0xd8e0('0x0'));var util=require(_0xd8e0('0x1'));var utils=require('./utils');function writeDB(_0x2f7971){utils[_0xd8e0('0x2')](util[_0xd8e0('0x3')]('[%s][transfers][writeDB]\x20type:%s',_0x2f7971['type']===_0xd8e0('0x4')?_0x2f7971[_0xd8e0('0x5')]:_0x2f7971[_0xd8e0('0x6')],_0x2f7971[_0xd8e0('0x7')]));utils['request']('CreateVoiceTransferReport',_0x2f7971);}exports[_0xd8e0('0x8')]={};exports[_0xd8e0('0x9')]=function(_0x2a335a){try{utils[_0xd8e0('0xa')](util[_0xd8e0('0x3')](_0xd8e0('0xb'),_0x2a335a[_0xd8e0('0x6')]),_0x2a335a);utils['info'](util[_0xd8e0('0x3')]('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x2a335a[_0xd8e0('0x6')],_0x2a335a[_0xd8e0('0xc')],_0x2a335a['transferercalleridname'],_0x2a335a[_0xd8e0('0xd')],_0x2a335a[_0xd8e0('0xe')]));_0x2a335a[_0xd8e0('0x7')]='blind';exports[_0xd8e0('0x8')][_0x2a335a['transfereruniqueid']]=_0x2a335a;writeDB(_0x2a335a);}catch(_0x5fdf5a){utils[_0xd8e0('0xf')](util[_0xd8e0('0x3')](_0xd8e0('0xb'),_0x2a335a[_0xd8e0('0x6')]),_0x5fdf5a);}};exports[_0xd8e0('0x10')]=function(_0x4896c0){try{utils[_0xd8e0('0xa')](util[_0xd8e0('0x3')](_0xd8e0('0x11'),_0x4896c0[_0xd8e0('0x5')]),_0x4896c0);utils[_0xd8e0('0x2')](util[_0xd8e0('0x3')](_0xd8e0('0x12'),_0x4896c0[_0xd8e0('0x5')],_0x4896c0[_0xd8e0('0x13')],_0x4896c0[_0xd8e0('0x14')],_0x4896c0[_0xd8e0('0x15')],_0x4896c0[_0xd8e0('0x16')]));_0x4896c0=_['assign'](_0x4896c0,{'transfererchannel':_0x4896c0[_0xd8e0('0x17')],'transferercalleridnum':_0x4896c0[_0xd8e0('0x13')],'transferercalleridname':_0x4896c0[_0xd8e0('0x14')],'transfererconnectedlinenum':_0x4896c0[_0xd8e0('0x18')],'transfererconnectedlinename':_0x4896c0[_0xd8e0('0x19')],'transfereraccountcode':_0x4896c0[_0xd8e0('0x1a')],'transferercontext':_0x4896c0['secondtransferercontext'],'transfererexten':_0x4896c0[_0xd8e0('0x1b')],'transfererlinkedid':_0x4896c0[_0xd8e0('0x1c')],'context':_0x4896c0[_0xd8e0('0x1d')],'extension':_0x4896c0[_0xd8e0('0x1e')],'type':_0xd8e0('0x4')});if(_[_0xd8e0('0x1f')](_0x4896c0[_0xd8e0('0x20')])){_0x4896c0=_[_0xd8e0('0x21')](_0x4896c0,{'transfereechannel':_0x4896c0[_0xd8e0('0x22')],'transfereecalleridnum':_0x4896c0['transfertargetcalleridnum'],'transfereecalleridname':_0x4896c0[_0xd8e0('0x16')],'transfereeconnectedlinenum':_0x4896c0[_0xd8e0('0x23')],'transfereeconnectedlinename':_0x4896c0[_0xd8e0('0x24')],'transfereeaccountcode':_0x4896c0[_0xd8e0('0x25')],'transfereecontext':_0x4896c0[_0xd8e0('0x26')],'transfereeexten':_0x4896c0[_0xd8e0('0x27')],'transfereelinkedid':_0x4896c0[_0xd8e0('0x28')]});}writeDB(_0x4896c0);}catch(_0x4b80b1){utils[_0xd8e0('0xf')](util[_0xd8e0('0x3')](_0xd8e0('0x11'),_0x4896c0[_0xd8e0('0x5')]),_0x4b80b1);}};
\ No newline at end of file
+var _0xe7da=['blinds','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','attended','isNil','transfereechannel','assign','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetlinkedid','lodash','util','./utils','info','format','type','origtransfereruniqueid','uniqueid','CreateVoiceTransferReport'];(function(_0x2c0be1,_0x1e88f2){var _0x3d4bd2=function(_0x2b5497){while(--_0x2b5497){_0x2c0be1['push'](_0x2c0be1['shift']());}};_0x3d4bd2(++_0x1e88f2);}(_0xe7da,0x1cb));var _0xae7d=function(_0x5e0240,_0x30ee55){_0x5e0240=_0x5e0240-0x0;var _0x3d0a40=_0xe7da[_0x5e0240];return _0x3d0a40;};'use strict';var _=require(_0xae7d('0x0'));var util=require(_0xae7d('0x1'));var utils=require(_0xae7d('0x2'));function writeDB(_0x549b76){utils[_0xae7d('0x3')](util[_0xae7d('0x4')]('[%s][transfers][writeDB]\x20type:%s',_0x549b76[_0xae7d('0x5')]==='attended'?_0x549b76[_0xae7d('0x6')]:_0x549b76[_0xae7d('0x7')],_0x549b76[_0xae7d('0x5')]));utils['request'](_0xae7d('0x8'),_0x549b76);}exports[_0xae7d('0x9')]={};exports['blindtransfer']=function(_0x3fee7e){try{utils[_0xae7d('0xa')](util[_0xae7d('0x4')](_0xae7d('0xb'),_0x3fee7e[_0xae7d('0x7')]),_0x3fee7e);utils[_0xae7d('0x3')](util[_0xae7d('0x4')](_0xae7d('0xc'),_0x3fee7e['uniqueid'],_0x3fee7e[_0xae7d('0xd')],_0x3fee7e[_0xae7d('0xe')],_0x3fee7e[_0xae7d('0xf')],_0x3fee7e[_0xae7d('0x10')]));_0x3fee7e[_0xae7d('0x5')]=_0xae7d('0x11');exports['blinds'][_0x3fee7e[_0xae7d('0x12')]]=_0x3fee7e;writeDB(_0x3fee7e);}catch(_0x1cd284){utils[_0xae7d('0x13')](util[_0xae7d('0x4')](_0xae7d('0xb'),_0x3fee7e['uniqueid']),_0x1cd284);}};exports[_0xae7d('0x14')]=function(_0x173206){try{utils['debug'](util[_0xae7d('0x4')](_0xae7d('0x15'),_0x173206[_0xae7d('0x6')]),_0x173206);utils[_0xae7d('0x3')](util['format']('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x173206[_0xae7d('0x6')],_0x173206[_0xae7d('0x16')],_0x173206[_0xae7d('0x17')],_0x173206[_0xae7d('0x18')],_0x173206[_0xae7d('0x19')]));_0x173206=_['assign'](_0x173206,{'transfererchannel':_0x173206[_0xae7d('0x1a')],'transferercalleridnum':_0x173206[_0xae7d('0x16')],'transferercalleridname':_0x173206[_0xae7d('0x17')],'transfererconnectedlinenum':_0x173206['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x173206[_0xae7d('0x1b')],'transfereraccountcode':_0x173206[_0xae7d('0x1c')],'transferercontext':_0x173206[_0xae7d('0x1d')],'transfererexten':_0x173206['secondtransfererexten'],'transfererlinkedid':_0x173206[_0xae7d('0x1e')],'context':_0x173206['origtransferercontext'],'extension':_0x173206['origtransfererexten'],'type':_0xae7d('0x1f')});if(_[_0xae7d('0x20')](_0x173206[_0xae7d('0x21')])){_0x173206=_[_0xae7d('0x22')](_0x173206,{'transfereechannel':_0x173206['transfertargetchannel'],'transfereecalleridnum':_0x173206[_0xae7d('0x18')],'transfereecalleridname':_0x173206['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x173206['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x173206[_0xae7d('0x23')],'transfereeaccountcode':_0x173206[_0xae7d('0x24')],'transfereecontext':_0x173206[_0xae7d('0x25')],'transfereeexten':_0x173206['transfertargetexten'],'transfereelinkedid':_0x173206[_0xae7d('0x26')]});}writeDB(_0x173206);}catch(_0x493663){utils[_0xae7d('0x13')](util['format'](_0xae7d('0x15'),_0x173206[_0xae7d('0x6')]),_0x493663);}};
\ No newline at end of file
index d026ede..16ba331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ff4=['addTime','add','seconds','format','subtract','YYYY-MM-DD\x20HH:mm:ss','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','http','../../config/logger','info','debug','inspect','error','request','then','[utils][request]\x20name:%s','catch','GetUser','name','[utils][getUser]\x20where:%s','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','notfound','getUserByInterface','found','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','acw','acwTimeout','[utils][getVoiceQueueByName]'];(function(_0x289ed9,_0x40b982){var _0xb02f85=function(_0x1ef4ec){while(--_0x1ef4ec){_0x289ed9['push'](_0x289ed9['shift']());}};_0xb02f85(++_0x40b982);}(_0x6ff4,0x90));var _0x46ff=function(_0x3f127b,_0x986b51){_0x3f127b=_0x3f127b-0x0;var _0x23ed00=_0x6ff4[_0x3f127b];return _0x23ed00;};'use strict';var BPromise=require(_0x46ff('0x0'));var jayson=require(_0x46ff('0x1'));var moment=require(_0x46ff('0x2'));var util=require(_0x46ff('0x3'));var client=jayson['client'][_0x46ff('0x4')]({'port':0x2329});var logger=require(_0x46ff('0x5'))('xdr');exports[_0x46ff('0x6')]=function(_0x54f732,_0x418c8e){logger[_0x46ff('0x6')](_0x54f732,_0x418c8e?util['inspect'](_0x418c8e,{'showHidden':![],'depth':null}):'');};exports[_0x46ff('0x7')]=function(_0x41b0d6,_0x29c1aa){logger[_0x46ff('0x7')](_0x41b0d6,_0x29c1aa?util[_0x46ff('0x8')](_0x29c1aa,{'showHidden':![],'depth':null}):'');};exports[_0x46ff('0x9')]=function(_0x51c521,_0xc464cd){logger[_0x46ff('0x9')](_0x51c521,_0xc464cd?util[_0x46ff('0x8')](_0xc464cd,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x20b470,_0x4505df){return client[_0x46ff('0xa')](_0x20b470,{'body':_0x4505df})[_0x46ff('0xb')](function(_0x3f54d8){logger[_0x46ff('0x7')](_0x46ff('0xc'),_0x20b470,_0x3f54d8?util[_0x46ff('0x8')](_0x3f54d8,{'showHidden':![],'depth':null}):'');})[_0x46ff('0xd')](function(_0x182633){logger[_0x46ff('0x9')](_0x46ff('0xc'),_0x20b470,_0x182633?util[_0x46ff('0x8')](_0x182633,{'showHidden':![],'depth':null}):'');});};function getUser(_0x47bdfb){return client[_0x46ff('0xa')](_0x46ff('0xe'),{'options':{'raw':!![],'attributes':['id','internal',_0x46ff('0xf'),'interface'],'where':_0x47bdfb,'limit':0x1}})[_0x46ff('0xb')](function(_0x1bce76){logger['debug'](_0x46ff('0x10'),JSON[_0x46ff('0x11')](_0x47bdfb),_0x1bce76?util[_0x46ff('0x8')](_0x1bce76,{'showHidden':![],'depth':null}):'');return _0x1bce76[_0x46ff('0x12')]['length']?_0x1bce76[_0x46ff('0x12')][0x0]:null;});}exports[_0x46ff('0x13')]=function(_0x5a9117){return new BPromise(function(_0x153943,_0x1b79a5){if(_0x5a9117){return getUser({'internal':_0x5a9117})[_0x46ff('0xb')](function(_0x1e2f45){logger[_0x46ff('0x6')](_0x46ff('0x14'),_0x5a9117,_0x1e2f45?'found':_0x46ff('0x15'));return _0x153943(_0x1e2f45);})[_0x46ff('0xd')](function(_0x450d08){logger['error']('[utils][getUserByInternal]',_0x450d08?util[_0x46ff('0x8')](_0x450d08,{'showHidden':![],'depth':null}):'');return _0x153943(null);});}return _0x153943(null);});};exports[_0x46ff('0x16')]=function(_0x37c0d2){return new BPromise(function(_0x2ddebf,_0x662808){if(_0x37c0d2){return getUser({'interface':_0x37c0d2})[_0x46ff('0xb')](function(_0x34e04a){logger[_0x46ff('0x6')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x37c0d2,_0x34e04a?_0x46ff('0x17'):_0x46ff('0x15'));return _0x2ddebf(_0x34e04a);})[_0x46ff('0xd')](function(_0x2ec197){logger[_0x46ff('0x9')](_0x46ff('0x18'),_0x2ec197?util[_0x46ff('0x8')](_0x2ec197,{'showHidden':![],'depth':null}):'');return _0x2ddebf(null);});}return _0x2ddebf(null);});};exports['getUserByName']=function(_0x40f4f9){return new BPromise(function(_0x3b63c3,_0x312df7){if(_0x40f4f9){return getUser({'name':_0x40f4f9})[_0x46ff('0xb')](function(_0x4289eb){logger['info'](_0x46ff('0x19'),_0x40f4f9,_0x4289eb?'found':'notfound');return _0x3b63c3(_0x4289eb);})[_0x46ff('0xd')](function(_0x1b3774){logger[_0x46ff('0x9')](_0x46ff('0x1a'),_0x1b3774?util[_0x46ff('0x8')](_0x1b3774,{'showHidden':![],'depth':null}):'');return _0x3b63c3(null);});}return _0x3b63c3(null);});};exports[_0x46ff('0x1b')]=function(_0x25522a){return new BPromise(function(_0xe2f2e3,_0x45d73b){if(_0x25522a){return client[_0x46ff('0xa')](_0x46ff('0x1c'),{'options':{'raw':!![],'attributes':['id',_0x46ff('0xf'),'type',_0x46ff('0x1d'),_0x46ff('0x1e')],'where':{'name':_0x25522a},'limit':0x1}})[_0x46ff('0xb')](function(_0x5d6616){logger[_0x46ff('0x7')]('[utils][getVoiceQueueByName]\x20name:%s',_0x25522a,_0x5d6616?util[_0x46ff('0x8')](_0x5d6616,{'showHidden':![],'depth':null}):'');logger[_0x46ff('0x6')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x25522a,_0x5d6616?_0x46ff('0x17'):_0x46ff('0x15'));return _0xe2f2e3(_0x5d6616['result']['length']?_0x5d6616[_0x46ff('0x12')][0x0]:null);})[_0x46ff('0xd')](function(_0x896569){logger['error'](_0x46ff('0x1f'),_0x896569?util[_0x46ff('0x8')](_0x896569,{'showHidden':![],'depth':null}):'');return _0xe2f2e3(null);});}return _0xe2f2e3(null);});};exports[_0x46ff('0x20')]=function(_0x58f6c2,_0x1d6a59){return moment(_0x58f6c2)[_0x46ff('0x21')](_0x1d6a59,_0x46ff('0x22'))[_0x46ff('0x23')]('YYYY-MM-DD\x20HH:mm:ss');};exports['subtractTime']=function(_0x2daace,_0x1258dc){return moment(_0x2daace)[_0x46ff('0x24')](_0x1258dc,_0x46ff('0x22'))['format'](_0x46ff('0x25'));};exports[_0x46ff('0x26')]=function(_0x1e75b9,_0x1ae2ca){return moment(_0x1e75b9)[_0x46ff('0x27')](moment(_0x1ae2ca),'seconds');};exports[_0x46ff('0x28')]=function(_0x10d651,_0x40542f){return parseInt(_0x10d651,0xa)+parseInt(_0x40542f,0xa);};exports[_0x46ff('0x29')]=function(){return moment()[_0x46ff('0x23')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x46ff('0x2a')]=function(_0x2dcd19,_0x27a753){if(_0x27a753){return moment(_0x2dcd19)[_0x46ff('0x2a')](_0x27a753);}return!![];};exports[_0x46ff('0x2b')]=function(_0x3ca106,_0x36c7ab){if(_0x36c7ab){return moment(_0x3ca106)['isBefore'](_0x36c7ab);}else if(_0x3ca106){return!![];}return![];};
\ No newline at end of file
+var _0x5fd1=['type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','seconds','YYYY-MM-DD\x20HH:mm:ss','format','diffTime','diff','now','isAfter','isBefore','bluebird','client','../../config/logger','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','found','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue'];(function(_0x1854dc,_0x57ebab){var _0x5345bd=function(_0x19e0df){while(--_0x19e0df){_0x1854dc['push'](_0x1854dc['shift']());}};_0x5345bd(++_0x57ebab);}(_0x5fd1,0x18f));var _0x15fd=function(_0x4a2176,_0x176e35){_0x4a2176=_0x4a2176-0x0;var _0x29e2c7=_0x5fd1[_0x4a2176];return _0x29e2c7;};'use strict';var BPromise=require(_0x15fd('0x0'));var jayson=require('jayson/promise');var moment=require('moment');var util=require('util');var client=jayson[_0x15fd('0x1')]['http']({'port':0x2329});var logger=require(_0x15fd('0x2'))(_0x15fd('0x3'));exports[_0x15fd('0x4')]=function(_0x1c7508,_0x19a356){logger[_0x15fd('0x4')](_0x1c7508,_0x19a356?util[_0x15fd('0x5')](_0x19a356,{'showHidden':![],'depth':null}):'');};exports[_0x15fd('0x6')]=function(_0x3a0638,_0x5e436){logger[_0x15fd('0x6')](_0x3a0638,_0x5e436?util['inspect'](_0x5e436,{'showHidden':![],'depth':null}):'');};exports[_0x15fd('0x7')]=function(_0x6af7b7,_0x3d30bc){logger['error'](_0x6af7b7,_0x3d30bc?util[_0x15fd('0x5')](_0x3d30bc,{'showHidden':![],'depth':null}):'');};exports[_0x15fd('0x8')]=function(_0x2ace76,_0x293929){return client[_0x15fd('0x8')](_0x2ace76,{'body':_0x293929})[_0x15fd('0x9')](function(_0x157669){logger[_0x15fd('0x6')](_0x15fd('0xa'),_0x2ace76,_0x157669?util[_0x15fd('0x5')](_0x157669,{'showHidden':![],'depth':null}):'');})[_0x15fd('0xb')](function(_0x574f71){logger['error'](_0x15fd('0xa'),_0x2ace76,_0x574f71?util[_0x15fd('0x5')](_0x574f71,{'showHidden':![],'depth':null}):'');});};function getUser(_0x2cd89f){return client[_0x15fd('0x8')](_0x15fd('0xc'),{'options':{'raw':!![],'attributes':['id',_0x15fd('0xd'),_0x15fd('0xe'),_0x15fd('0xf')],'where':_0x2cd89f,'limit':0x1}})[_0x15fd('0x9')](function(_0x2566b0){logger[_0x15fd('0x6')](_0x15fd('0x10'),JSON[_0x15fd('0x11')](_0x2cd89f),_0x2566b0?util['inspect'](_0x2566b0,{'showHidden':![],'depth':null}):'');return _0x2566b0[_0x15fd('0x12')][_0x15fd('0x13')]?_0x2566b0[_0x15fd('0x12')][0x0]:null;});}exports[_0x15fd('0x14')]=function(_0x4009f6){return new BPromise(function(_0x4f4b1a,_0x21aaae){if(_0x4009f6){return getUser({'internal':_0x4009f6})['then'](function(_0x2f3b07){logger[_0x15fd('0x4')](_0x15fd('0x15'),_0x4009f6,_0x2f3b07?'found':_0x15fd('0x16'));return _0x4f4b1a(_0x2f3b07);})[_0x15fd('0xb')](function(_0xcca753){logger[_0x15fd('0x7')](_0x15fd('0x17'),_0xcca753?util[_0x15fd('0x5')](_0xcca753,{'showHidden':![],'depth':null}):'');return _0x4f4b1a(null);});}return _0x4f4b1a(null);});};exports[_0x15fd('0x18')]=function(_0x2f2a89){return new BPromise(function(_0x343d4c,_0x17b10b){if(_0x2f2a89){return getUser({'interface':_0x2f2a89})[_0x15fd('0x9')](function(_0x59f8f9){logger[_0x15fd('0x4')](_0x15fd('0x19'),_0x2f2a89,_0x59f8f9?'found':_0x15fd('0x16'));return _0x343d4c(_0x59f8f9);})[_0x15fd('0xb')](function(_0x3feb0d){logger['error'](_0x15fd('0x1a'),_0x3feb0d?util[_0x15fd('0x5')](_0x3feb0d,{'showHidden':![],'depth':null}):'');return _0x343d4c(null);});}return _0x343d4c(null);});};exports[_0x15fd('0x1b')]=function(_0x318e7f){return new BPromise(function(_0x45d3fe,_0x1aa0c3){if(_0x318e7f){return getUser({'name':_0x318e7f})['then'](function(_0x3af9ab){logger[_0x15fd('0x4')](_0x15fd('0x1c'),_0x318e7f,_0x3af9ab?_0x15fd('0x1d'):_0x15fd('0x16'));return _0x45d3fe(_0x3af9ab);})[_0x15fd('0xb')](function(_0x3441f3){logger[_0x15fd('0x7')](_0x15fd('0x1e'),_0x3441f3?util[_0x15fd('0x5')](_0x3441f3,{'showHidden':![],'depth':null}):'');return _0x45d3fe(null);});}return _0x45d3fe(null);});};exports[_0x15fd('0x1f')]=function(_0x3f99e6){return new BPromise(function(_0x15d804,_0x576e75){if(_0x3f99e6){return client[_0x15fd('0x8')](_0x15fd('0x20'),{'options':{'raw':!![],'attributes':['id',_0x15fd('0xe'),_0x15fd('0x21'),_0x15fd('0x22'),_0x15fd('0x23')],'where':{'name':_0x3f99e6},'limit':0x1}})[_0x15fd('0x9')](function(_0x124e86){logger[_0x15fd('0x6')](_0x15fd('0x24'),_0x3f99e6,_0x124e86?util['inspect'](_0x124e86,{'showHidden':![],'depth':null}):'');logger[_0x15fd('0x4')](_0x15fd('0x25'),_0x3f99e6,_0x124e86?_0x15fd('0x1d'):_0x15fd('0x16'));return _0x15d804(_0x124e86[_0x15fd('0x12')][_0x15fd('0x13')]?_0x124e86[_0x15fd('0x12')][0x0]:null);})['catch'](function(_0x1cca60){logger[_0x15fd('0x7')](_0x15fd('0x26'),_0x1cca60?util[_0x15fd('0x5')](_0x1cca60,{'showHidden':![],'depth':null}):'');return _0x15d804(null);});}return _0x15d804(null);});};exports[_0x15fd('0x27')]=function(_0x4a6faa,_0x135312){return moment(_0x4a6faa)['add'](_0x135312,_0x15fd('0x28'))['format'](_0x15fd('0x29'));};exports['subtractTime']=function(_0x22329d,_0x41f384){return moment(_0x22329d)['subtract'](_0x41f384,_0x15fd('0x28'))[_0x15fd('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x15fd('0x2b')]=function(_0x3e74d5,_0x3a314a){return moment(_0x3e74d5)[_0x15fd('0x2c')](moment(_0x3a314a),_0x15fd('0x28'));};exports['sumTime']=function(_0x58f688,_0x2f89c4){return parseInt(_0x58f688,0xa)+parseInt(_0x2f89c4,0xa);};exports[_0x15fd('0x2d')]=function(){return moment()[_0x15fd('0x2a')](_0x15fd('0x29'));};exports[_0x15fd('0x2e')]=function(_0x4c5732,_0x2e9873){if(_0x2e9873){return moment(_0x4c5732)[_0x15fd('0x2e')](_0x2e9873);}return!![];};exports[_0x15fd('0x2f')]=function(_0xc302e,_0x3de461){if(_0x3de461){return moment(_0xc302e)[_0x15fd('0x2f')](_0x3de461);}else if(_0xc302e){return!![];}return![];};
\ No newline at end of file